NEW PREFIX AUTO 4,1 .LIST OFF .OP 65C02 .OR $2000 .TF BIN/DEV/MEMDUMP *-------------------------------------- .INB INC/MACROS.I .INB INC/A2OSX.I *-------------------------------------- PAGELEN .EQ 22 *-------------------------------------- ZPPTR1 .EQ ZPBIN ZPPTR2 .EQ ZPBIN+2 *-------------------------------------- * File Header (16 Bytes) *-------------------------------------- CS.START cld jmp (.1,x) .DA #$61 6502,Level 1 (65c02) .DA #1 BIN Layout Version 1 .DA 0 .DA CS.END-CS.START CS .DA DS.END-DS.START DS .DA #64 SS .DA #4 ZP .DA 0 *-------------------------------------- * Relocation Table *-------------------------------------- .1 .DA CS.INIT .DA CS.RUN .DA CS.DOEVENT .DA CS.QUIT L.MSG0 .DA MSG0 L.MSG1.INV .DA MSG1.INV L.MSG1 .DA MSG1 L.MSG1.BIN .DA MSG1.BIN L.MSG1.STR .DA MSG1.STR L.MSG1.HEX .DA MSG1.HEX L.MSG2 .DA MSG2 L.MSG3 .DA MSG3 L.MSG4 .DA MSG4 L.MSG5 .DA MSG5 L.MSG.FREE .DA MSG.FREE .DA 0 *-------------------------------------- CS.INIT lda #0 >STA.G MEM.COUNT Skip SLOT 0 >LEA.G MemStat >SYSCALL GetMemStat clc rts *-------------------------------------- CS.RUN >SYSCALL GetChar bcs .13 cmp #3 Ctrl-C ? beq .9 cmp #19 Ctrl-S ? bne .12 >LDA.G bSTOP eor #$ff sta (pData),y bra .13 .12 >STZ.G bSTOP .13 >LDA.G bSTOP bne .8 >INC.G MEM.COUNT >SYSCALL GetMemByID >STYA ZPPTR1 >LDA.G LINE.COUNT bne .1 >LDYA L.MSG0 >SYSCALL puts .1 lda (ZPPTR1) bpl .2 >INC.G USED.COUNT .2 jsr CS.RUN.PRINTMEM >LDA.G MEM.COUNT >CMP.G MemStat+S.MSTAT.MLast beq .10 .8 clc rts .9 sec rts .10 >PUSHB.G MEM.COUNT >PUSHB.G USED.COUNT >PUSHBI 2 >LDYA L.MSG2 >SYSCALL printf >PUSHW.G MemStat+S.MSTAT.MH >PUSHBI 2 >LDYA L.MSG3 >SYSCALL printf >PUSHW.G MemStat+S.MSTAT.MF >PUSHBI 2 >LDYA L.MSG4 >SYSCALL printf >PUSHW.G MemStat+S.MSTAT.ML >PUSHBI 2 >LDYA L.MSG5 >SYSCALL printf sec >LDA.G MemStat+S.MSTAT.MF >SBC.G MemStat+S.MSTAT.ML pha >LDA.G MemStat+S.MSTAT.MF+1 >SBC.G MemStat+S.MSTAT.ML+1 ply >PUSHYA >PUSHBI 2 >LDYA L.MSG.FREE >SYSCALL printf lda #0 sec rts *-------------------------------------- CS.RUN.PRINTMEM ldy #S.MEM.LEN+1 ldx #4 .13 lda (ZPPTR1),y >PUSHA dey dex bne .13 ldy #S.MEM.REFCNT lda (ZPPTR1),y >PUSHA ldy #S.MEM.OWNERPID lda (ZPPTR1),y >PUSHA lda (ZPPTR1) Get flags ldy #MEM.FLAGS+7 ldx #7 .20 lsr pha lda #'-' bcc .30 lda MSG.FLAGS,x .30 sta (pData),y pla dey dex bpl .20 >PUSHEA.G MEM.FLAGS >PUSHB.G MEM.COUNT lda (ZPPTR1) Get flags bpl .12 ldy #S.MEM.OWNERPID lda (ZPPTR1),y >SYSCALL GetPSStatus bcc .12 >PUSHBI 0 >LDYA L.MSG1.INV >SYSCALL printf .12 >PUSHBI 9 >LDYA L.MSG1 >SYSCALL printf lda (ZPPTR1) and #S.MEM.F.CODE bne CS.RUN.PRINTMEM.BIN ****** DATA ldy #S.MEM.PTR lda (ZPPTR1),y sta ZPPTR2 iny lda (ZPPTR1),y sta ZPPTR2+1 ldy #$0 .1 lda (ZPPTR2),y Check if it looks like a printable string beq .11 bmi .2 cmp #$20 bcc .2 not printable....->hex iny bne .1 .11 tya beq .2 Startig with 0...PrintHEX >PUSHW ZPPTR2 String tya Len >PUSHA >PUSHBI 3 >LDYA L.MSG1.STR bra CS.RUN.PRINTMEM.EXIT .2 ldy #15 .3 >PUSHB (ZPPTR2),y dey bpl .3 >PUSHBI 16 >LDYA L.MSG1.HEX bra CS.RUN.PRINTMEM.EXIT CS.RUN.PRINTMEM.BIN ldy #S.MEM.BIN lda (ZPPTR1),y >SYSCALL GetMemPtr >PUSHYA >PUSHBI 2 >LDYA L.MSG1.BIN CS.RUN.PRINTMEM.EXIT >SYSCALL printf >INC.G LINE.COUNT cmp #PAGELEN beq .9 rts .9 lda #$FF >STA.G bSTOP inc >STA.G LINE.COUNT rts *-------------------------------------- CS.DOEVENT sec rts *-------------------------------------- CS.QUIT clc rts *-------------------------------------- CS.END MSG0 .AZ " # Flags PID REF PTR LEN BINPATH/DATA" MSG1.INV .AZ "\e[7m" MSG1 .AZ "%03d %s %3d %3d $%H %5D " MSG1.BIN .AZ "{%s}\e[0m\r\n" MSG1.STR .AZ "[%03d:%s]\e[0m\r\n" MSG1.HEX .AZ "?HEX:%h%h.%h%h.%h%h.%h%h.%h%h.%h%h.%h%h.%h%h\e[0m\r\n" MSG2 .AZ "\r\nAllocated hMem:%d, Total:%d\r\n" MSG3 .AZ "High Memory: $%H\r\n" MSG4 .AZ "Free ULimit: $%H\r\n" MSG5 .AZ "Low Memory: $%H\r\n" MSG.FREE .AZ "\r\nFree Memory: %D Bytes.\r\n" MSG.FLAGS .AS "UZNAfcds" *-------------------------------------- .DUMMY .OR 0 DS.START LINE.COUNT .BS 1 MEM.COUNT .BS 1 USED.COUNT .BS 1 bSTOP .BS 1 MemStat .BS S.MSTAT MEM.FLAGS .BS 9 DS.END .ED *-------------------------------------- MAN SAVE USR/SRC/SRC/BIN/DEV/MEMDUMP.S ASM