.title KRTDEB.MIN Examine data in memory .ident "V03.62" ; /62/ 31-May-93 Billy Youdelman ; Copyright 1984 Change Software, Inc. .include "IN:KRTMAC.MIN" .iif ndf KRTINC .error <; .include for IN:KRTMAC.MIN failed> CHR = 1 INT = 2 .macro entry name ,type ,size .save .if b .psect $addr .word 0 .iff .dsabl lc .psect $name ,ro,d,lcl,rel,con $$ = . .asciz #name# .psect $addr .word $$ .psect $addr1 .word name .psect $type .word type .psect $size .word size .enabl lc .endc .restore .endm entry .sbttl Symbol name data table .psect $addr ,ro,d,lcl,rel,con texadr: .psect $addr1 ,ro,d,lcl,rel,con virtad: .psect $type ,ro,d,lcl,rel,con symtyp: .psect $size ,ro,d,lcl,rel,con symsiz: .psect $code entry <$image>, int, 1 entry , int, 1 entry , int, 1 entry , chr, ln$max entry , int, 1 entry , chr, 2 entry , int, 5 entry , int, 5 entry , int, 5 entry , int, 5 entry , int, 1 entry , chr, 1 entry , int, 1 entry , chr, 20 entry ,int, 1 entry , int, 5 entry , int, 1 entry , int, 1 entry , int, 1 entry , chr, 1 entry , chr, erbfsiz entry , chr, ln$max entry , int, 5 entry , int, 1 entry , int, 1 entry ,int, 1 entry , int, 1 entry ,int, 1 entry , int, 1 entry , int, 1 entry , int, 5 entry , int, 1 entry , int, 1 entry , int, 1 entry , chr, $allsiz entry , int, 1 entry , int, 2*34 entry , int, 2*34 entry , int, 1 entry , int, 5 entry , int, 1 entry , int, 1 entry , int, 1 entry , int, 10 entry , chr, 20 entry , int, 1 entry , int, 5 entry ,int, 1 entry , chr, 256. entry , int, 1 entry , chr, ln$max entry , chr, stksiz entry , int, 1 entry , int, 1 entry , int, ttbsiz+2 entry , int, 1 entry , int, 1 entry , chr, 2 entry , chr, ln$max+2 entry .sbttl EXAMINE data in memory .enabl lsb c$disp::upcase argbuf cmpb @r0 ,#'0 blo 5$ cmpb @r0 ,#'9 bhi 5$ calls octval , tst r0 bne 93$ bic #1 ,r1 octout @r1 br 100$ 5$: cmpb @r0 ,#'* bne 20$ clr r0 10$: tst texadr(r0) beq 101$ call prtsym add #2 ,r0 .newline br 10$ 20$: call findsy tst r0 bmi 90$ call prtsym br 100$ 90$: wrtall #300$ wrtall #310$ br 100$ 93$: wrtall #300$ wrtall #320$ 100$: .newline 101$: clr r0 return .save .psect $pdata 300$: .asciz "?KRTDEB-E-" 310$: .asciz "Symbol not in internal STB" 320$: .asciz "Bad octal value" .even .restore .dsabl lsb .sbttl Print symbol .enabl lsb prtsym: save sub #20 ,sp mov sp ,r3 mov r0 ,r5 wrtall texadr(r5) mov symtyp(r5),r4 asl r4 wrtall 200$-2(r4) deccvt symsiz(r5),r3,#5 clrb 5(r3) wrtall r3 mov #'. ,r0 call writ1ch wrtall #300$ octout virtad(r5) .newline .newline jsr pc ,@190$-2(r4) add #20 ,sp unsave return .save .psect $pdata 190$: .word pbyte ,pint 200$: .word 210$ ,220$ 210$: .asciz "Byte data, size" 220$: .asciz "Word data, size" 300$: .asciz " Starting address: " .even .restore .dsabl lsb .sbttl Format byte data .enabl lsb pbyte: sub #20 ,sp mov symsiz(r5),togo beq 390$ mov virtad(r5),r5 310$: mov #20 ,r3 mov #ascbuf ,r1 320$: mov sp ,r2 clr r4 bisb (r5)+ ,r4 clrb (r1) bisb r4 ,(r1) bicb #^c177 ,(r1) cmpb (r1) ,#space blt 321$ cmpb (r1) ,#177 blt 323$ 321$: movb #'.&77 ,(r1)+ br 325$ 323$: tstb (r1)+ 325$: mov r4 ,r0 ash #-6 ,r0 bic #^c3 ,r0 add #'0 ,r0 movb r0 ,(r2)+ mov r4 ,r0 ash #-3 ,r0 bic #^c7 ,r0 add #'0 ,r0 movb r0 ,(r2)+ mov r4 ,r0 bic #^c7 ,r0 add #'0 ,r0 movb r0 ,(r2)+ movb #space ,(r2)+ clrb @r2 mov sp ,r2 wrtall r2 dec togo beq 330$ sob r3 ,320$ call 400$ br 310$ 330$: dec r3 ble 337$ 333$: wrtall #octpad sob r3 ,333$ 337$: call 400$ 390$: add #20 ,sp return 400$: movb #cr ,(r1)+ movb #lf ,(r1)+ clrb @r1 wrtall #ascbuf return .sbttl Format integer data pint: mov symsiz(r5),r1 beq 490$ mov virtad(r5),r2 410$: mov #4 ,r3 420$: mov (r2)+ ,r4 decout r4 message <. (> octout r4 message <) > dec r1 beq 430$ sob r3 ,420$ .newline br 410$ 430$: .newline 490$: return .save .psect $rwdata ,rw,d,lcl,rel,con togo: .word 0 ascbuf: .blkb 24 octpad: .asciz " " .even .restore .dsabl lsb .sbttl Locate symbol offset in index findsy: clr r3 10$: mov texadr(r3),r1 beq 90$ mov r0 ,r2 20$: cmpb (r2)+ ,(r1)+ bne 30$ tstb (r2) bne 20$ br 40$ 30$: add #2 ,r3 br 10$ 40$: mov r3 ,r0 br 100$ 90$: mov #-1 ,r0 100$: return .end