Mercurial > hg > Members > kono > nitros9-code
annotate level2/cmds/mfree.asm @ 3278:ea1afb494127
defs: Add Bt.Sec for atari and corsham
author | Tormod Volden <debian.tormod@gmail.com> |
---|---|
date | Sat, 07 Mar 2020 23:52:40 +0100 |
parents | 2ecebda8716b |
children |
rev | line source |
---|---|
0 | 1 ******************************************************************** |
2 * Mfree - Show free memory | |
3 * | |
4 * $Id$ | |
5 * | |
1255 | 6 * Edt/Rev YYYY/MM/DD Modified by |
7 * Comment | |
0 | 8 * ------------------------------------------------------------------ |
1255 | 9 * 2 ????/??/?? |
10 * Original Tandy/Microware version. | |
3194
2ecebda8716b
mfree.asm: Fix zero-day Block Map entry bug
Neal Crook <foofoobedoo@gmail.com>
parents:
3193
diff
changeset
|
11 * 3 2017/05/30 Neal Crook |
2ecebda8716b
mfree.asm: Fix zero-day Block Map entry bug
Neal Crook <foofoobedoo@gmail.com>
parents:
3193
diff
changeset
|
12 * Original version misbehaved if final block in the map was free. |
2ecebda8716b
mfree.asm: Fix zero-day Block Map entry bug
Neal Crook <foofoobedoo@gmail.com>
parents:
3193
diff
changeset
|
13 * That situation never occurs on coco, but it does occur on the mc09 |
2ecebda8716b
mfree.asm: Fix zero-day Block Map entry bug
Neal Crook <foofoobedoo@gmail.com>
parents:
3193
diff
changeset
|
14 * target. Inferred behaviour and added comments as a side-effect of |
2ecebda8716b
mfree.asm: Fix zero-day Block Map entry bug
Neal Crook <foofoobedoo@gmail.com>
parents:
3193
diff
changeset
|
15 * debugging effort. |
0 | 16 |
17 nam Mfree | |
18 ttl Show free memory | |
19 | |
20 * Disassembled 98/09/11 12:07:32 by Disasm v1.6 (C) 1988 by RML | |
21 | |
22 ifp1 | |
23 use defsfile | |
24 endc | |
25 | |
3193
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
26 tylg set Prgrm+Objct |
0 | 27 atrv set ReEnt+rev |
1255 | 28 rev set $00 |
3194
2ecebda8716b
mfree.asm: Fix zero-day Block Map entry bug
Neal Crook <foofoobedoo@gmail.com>
parents:
3193
diff
changeset
|
29 edition set 3 |
0 | 30 |
31 mod eom,name,tylg,atrv,start,size | |
32 | |
3193
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
33 freeblks rmb 2 |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
34 mapsiz rmb 2 |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
35 * pages per block (ie, MS byte of block size) |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
36 ppblk rmb 1 |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
37 * 0: print number with leading spaces. 1: print number with leading 0. |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
38 leadzero rmb 1 |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
39 * u0006,7,8 store a 24-bit block begin/end address. |
0 | 40 u0006 rmb 1 |
41 u0007 rmb 1 | |
42 u0008 rmb 1 | |
3193
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
43 bufstrt rmb 2 |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
44 bufcur rmb 2 |
1636 | 45 linebuf rmb 80 |
3193
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
46 mapbuf rmb 1274 |
0 | 47 size equ . |
48 | |
49 name fcs /Mfree/ | |
50 fcb edition | |
51 | |
1636 | 52 Hdr fcs " Blk Begin End Blks Size" |
0 | 53 fcs " --- ------ ------ ---- ------" |
1636 | 54 Ftr fcs " ==== ======" |
55 fcs " Total: " | |
0 | 56 |
3193
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
57 start leax linebuf,u get line buffer address |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
58 stx <bufstrt and store it away |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
59 stx <bufcur current output position output buffer |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
60 |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
61 lbsr wrbuf print CR |
1636 | 62 leay <Hdr,pcr |
3193
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
63 lbsr tobuf 1st line of header to output buffer |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
64 lbsr wrbuf ..print it |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
65 lbsr tobuf 2nd line of header to output buffer |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
66 lbsr wrbuf ..print it |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
67 |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
68 clr <freeblks total number of free blocks |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
69 clr <freeblks+1 |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
70 leax <mapbuf,u |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
71 * In: X = 1024-byte buffer |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
72 * Out: D = number of bytes per block |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
73 * Y = system memory block map size |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
74 os9 F$GBlkMp |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
75 sty <mapsiz save map size |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
76 sta <ppblk save MS byte of bytes per block |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
77 ldy #$0000 count of how many blocks we have inspected |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
78 |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
79 * Main loop |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
80 * look for a free block (an entry of 0 in the block map) |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
81 loop ldu #$0000 number of free blocks in this sequence |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
82 L00AD tst ,x+ is this block 0? |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
83 beq L00BA yes - found a free block |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
84 leay $01,y total number of blocks we have inspected |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
85 cmpy <mapsiz at the end of the map? |
3194
2ecebda8716b
mfree.asm: Fix zero-day Block Map entry bug
Neal Crook <foofoobedoo@gmail.com>
parents:
3193
diff
changeset
|
86 bne L00AD no, so carry on looking |
3193
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
87 bra alldone yes, and the last block was not free, so we're done. |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
88 |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
89 * Block number in Y is the first free block of a sequence (tho maybe a sequence of 1) |
0 | 90 L00BA tfr y,d |
3193
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
91 bsr buf4hex append start block, in hex, to output buffer |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
92 lda <ppblk |
0 | 93 pshs y,a |
3193
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
94 clra |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
95 clrb |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
96 L00C4 addd $01,s multiply start block by block size to get |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
97 dec ,s begin address |
0 | 98 bne L00C4 |
99 leas $03,s | |
3193
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
100 std <u0006 2 MS bytes of block begin address |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
101 clr <u0008 1 LS byte of block begin address is 0 |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
102 bsr buf6hex append block begin address in hex, to output buffer |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
103 |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
104 * Look for the last free block in this sequence |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
105 L00D2 leau $01,u |
0 | 106 leay $01,y |
3193
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
107 cmpy <mapsiz |
3194
2ecebda8716b
mfree.asm: Fix zero-day Block Map entry bug
Neal Crook <foofoobedoo@gmail.com>
parents:
3193
diff
changeset
|
108 beq last |
2ecebda8716b
mfree.asm: Fix zero-day Block Map entry bug
Neal Crook <foofoobedoo@gmail.com>
parents:
3193
diff
changeset
|
109 |
0 | 110 tst ,x+ |
3193
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
111 beq L00D2 haven't found it yet.. |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
112 last lda <ppblk |
0 | 113 pshs y,a |
3193
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
114 clra |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
115 clrb |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
116 L00E5 addd $01,s multiply end block by block size to get |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
117 dec ,s end address |
0 | 118 bne L00E5 |
119 leas $03,s | |
120 subd #$0001 | |
3193
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
121 std <u0006 2 MS bytes of block end address |
0 | 122 lda #$FF |
3193
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
123 sta <u0008 1 LS byte of block end address is $FF |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
124 bsr buf6hex append block end address in hex, to output buffer |
0 | 125 leax -$01,x |
3194
2ecebda8716b
mfree.asm: Fix zero-day Block Map entry bug
Neal Crook <foofoobedoo@gmail.com>
parents:
3193
diff
changeset
|
126 tfr u,d number of blocks in this sequence u->d |
3193
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
127 bsr buf4hex append number of blocks, in hex, to output buffer |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
128 lbsr L0199 append size, in decimal, to output buffer |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
129 |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
130 addd <freeblks |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
131 std <freeblks total number of blocks |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
132 bsr wrbuf print this entry |
3194
2ecebda8716b
mfree.asm: Fix zero-day Block Map entry bug
Neal Crook <foofoobedoo@gmail.com>
parents:
3193
diff
changeset
|
133 cmpy <mapsiz |
2ecebda8716b
mfree.asm: Fix zero-day Block Map entry bug
Neal Crook <foofoobedoo@gmail.com>
parents:
3193
diff
changeset
|
134 bne loop loop for next entry |
3193
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
135 |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
136 * All of the entries have been printed. Print the trailer and totals. |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
137 alldone leay >Ftr,pcr |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
138 bsr tobuf 1st line of footer to output buffer |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
139 bsr wrbuf ..print it |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
140 bsr tobuf 2nd line of footer to output buffer |
3194
2ecebda8716b
mfree.asm: Fix zero-day Block Map entry bug
Neal Crook <foofoobedoo@gmail.com>
parents:
3193
diff
changeset
|
141 ldd <freeblks get total number of blocks |
3193
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
142 bsr buf4hex append total number of blocks, in hex, to output buffer |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
143 bsr L0199 append total size, in decimal, to output buffer |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
144 bsr wrbuf ..print it |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
145 * Successful exit |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
146 clrb |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
147 os9 F$Exit |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
148 |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
149 * convert value in D to ASCII hex (4 chars). Append to output buffer, then append "SPACE" to output buffer |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
150 buf4hex pshs b,a |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
151 clr <leadzero |
0 | 152 bsr L0145 |
153 tfr b,a | |
154 bsr L0145 | |
3193
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
155 lda #C$SPAC append a space |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
156 bsr bufchr |
0 | 157 puls pc,b,a |
3193
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
158 |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
159 * convert value in u0006,7,8 to ASCII hex (6 chars). Append to output buffer, then append "SPACE" to output buffer |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
160 buf6hex clr <leadzero |
0 | 161 lda <u0006 |
162 bsr L0145 | |
163 lda <u0007 | |
164 bsr L0145 | |
165 lda <u0008 | |
166 bsr L0145 | |
3193
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
167 lda #C$SPAC append a space |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
168 bra bufchr |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
169 |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
170 * convert value in A to ASCII hex (2 chars). Append to output buffer. |
0 | 171 L0145 pshs a |
3193
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
172 lsra |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
173 lsra |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
174 lsra |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
175 lsra |
0 | 176 bsr L014F |
177 puls a | |
178 L014F anda #$0F | |
3193
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
179 tsta |
0 | 180 beq L0156 |
3193
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
181 sta <leadzero |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
182 L0156 tst <leadzero |
0 | 183 bne L015C |
184 lda #$F0 | |
3193
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
185 |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
186 * FALL THROUGH |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
187 * Convert digit to ASCII with leading spaces, add to output buffer |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
188 * A is a 0-9 or A-F or $F0. |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
189 * Add $30 converts 0-9 to ASCII "0" - "9"), $F0 to ASCII "SPACE" |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
190 * leaves A-F >$3A so a further 7 is added so $3A->$41 etc. (ASCII "A" - "F") |
0 | 191 L015C adda #$30 |
192 cmpa #$3A | |
3193
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
193 bcs bufchr |
0 | 194 adda #$07 |
3193
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
195 |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
196 * FALL THROUGH |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
197 * Store A at next position in output buffer. |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
198 bufchr pshs x |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
199 ldx <bufcur |
0 | 200 sta ,x+ |
3193
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
201 stx <bufcur |
0 | 202 puls pc,x |
1636 | 203 |
3193
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
204 * Append CR to the output buffer then print the output buffer |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
205 wrbuf pshs y,x,a |
1636 | 206 lda #C$CR |
3193
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
207 bsr bufchr |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
208 ldx <bufstrt address of data to write |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
209 stx <bufcur reset output buffer pointer, ready for next line. |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
210 ldy #80 maximum # of bytes - otherwise, stop at CR |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
211 lda #$01 to STDOUT |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
212 os9 I$WritLn |
0 | 213 puls pc,y,x,a |
3193
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
214 |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
215 * Append string at Y to output buffer. String is terminated by MSB=1 |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
216 tobuf lda ,y |
0 | 217 anda #$7F |
3193
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
218 bsr bufchr |
0 | 219 tst ,y+ |
3193
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
220 bpl tobuf |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
221 rts |
1636 | 222 |
223 DecTbl fdb 10000,1000,100,10,1 | |
224 fcb $FF | |
225 | |
3193
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
226 * value in ?? is a number of blocks. Convert to bytes by multiplying by the page size. |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
227 * Convert to ASCII decimal, append to output buffer, append "k" to output buffer |
0 | 228 L0199 pshs y,x,b,a |
3193
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
229 lda <ppblk |
0 | 230 pshs a |
231 lda $01,s | |
232 lsr ,s | |
233 lsr ,s | |
234 bra L01A9 | |
3193
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
235 |
0 | 236 L01A7 lslb |
237 rola | |
238 L01A9 lsr ,s | |
239 bne L01A7 | |
240 leas 1,s | |
1636 | 241 leax <DecTbl,pcr |
0 | 242 ldy #$2F20 |
1636 | 243 L01B6 leay >256,y |
0 | 244 subd ,x |
245 bcc L01B6 | |
246 addd ,x++ | |
247 pshs b,a | |
248 tfr y,d | |
249 tst ,x | |
250 bmi L01DE | |
251 ldy #$2F30 | |
1636 | 252 cmpd #'0*256+C$SPAC |
0 | 253 bne L01D8 |
254 ldy #$2F20 | |
1636 | 255 lda #C$SPAC |
3193
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
256 L01D8 bsr bufchr |
0 | 257 puls b,a |
258 bra L01B6 | |
3193
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
259 |
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
260 L01DE bsr bufchr |
1636 | 261 lda #'k |
3193
489617e567c5
mfree.asm: Improve comment and remove trailing white-space
Neal Crook <foofoobedoo@gmail.com>
parents:
1636
diff
changeset
|
262 bsr bufchr |
0 | 263 leas $02,s |
264 puls pc,y,x,b,a | |
265 | |
266 emod | |
267 eom equ * | |
268 end |