annotate level2/cmds/mfree.asm @ 3194:2ecebda8716b

mfree.asm: Fix zero-day Block Map entry bug Previously, code assumed that the final entry in the block map would be used. This was true for CoCo but is not necessarily true (and is not true for mc09). Slight mod removes that implicit assumption; the code now works correctly on both platforms.
author Neal Crook <foofoobedoo@gmail.com>
date Tue, 30 May 2017 23:59:46 +0100
parents 489617e567c5
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1 ********************************************************************
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
2 * Mfree - Show free memory
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
3 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
4 * $Id$
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
5 *
1255
bf6f854a4299 Changed revisions to 0
boisy
parents: 0
diff changeset
6 * Edt/Rev YYYY/MM/DD Modified by
bf6f854a4299 Changed revisions to 0
boisy
parents: 0
diff changeset
7 * Comment
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
8 * ------------------------------------------------------------------
1255
bf6f854a4299 Changed revisions to 0
boisy
parents: 0
diff changeset
9 * 2 ????/??/??
bf6f854a4299 Changed revisions to 0
boisy
parents: 0
diff changeset
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
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
16
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
17 nam Mfree
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
18 ttl Show free memory
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
19
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
20 * Disassembled 98/09/11 12:07:32 by Disasm v1.6 (C) 1988 by RML
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
21
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
22 ifp1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
23 use defsfile
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
24 endc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
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
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
27 atrv set ReEnt+rev
1255
bf6f854a4299 Changed revisions to 0
boisy
parents: 0
diff changeset
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
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
30
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
31 mod eom,name,tylg,atrv,start,size
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
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
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
40 u0006 rmb 1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
41 u0007 rmb 1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
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
fa494f2dca9a mfree.asm: some minor comments and additions
boisy
parents: 1255
diff changeset
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
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
47 size equ .
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
48
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
49 name fcs /Mfree/
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
50 fcb edition
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
51
1636
fa494f2dca9a mfree.asm: some minor comments and additions
boisy
parents: 1255
diff changeset
52 Hdr fcs " Blk Begin End Blks Size"
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
53 fcs " --- ------ ------ ---- ------"
1636
fa494f2dca9a mfree.asm: some minor comments and additions
boisy
parents: 1255
diff changeset
54 Ftr fcs " ==== ======"
fa494f2dca9a mfree.asm: some minor comments and additions
boisy
parents: 1255
diff changeset
55 fcs " Total: "
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
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
fa494f2dca9a mfree.asm: some minor comments and additions
boisy
parents: 1255
diff changeset
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
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
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
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
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
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
98 bne L00C4
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
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
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
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
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
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
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
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
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
118 bne L00E5
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
119 leas $03,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
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
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
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
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
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
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
152 bsr L0145
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
153 tfr b,a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
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
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
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
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
161 lda <u0006
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
162 bsr L0145
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
163 lda <u0007
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
164 bsr L0145
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
165 lda <u0008
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
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
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
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
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
176 bsr L014F
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
177 puls a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
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
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
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
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
183 bne L015C
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
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
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
191 L015C adda #$30
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
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
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
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
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
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
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
202 puls pc,x
1636
fa494f2dca9a mfree.asm: some minor comments and additions
boisy
parents: 1255
diff changeset
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
fa494f2dca9a mfree.asm: some minor comments and additions
boisy
parents: 1255
diff changeset
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
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
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
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
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
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
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
fa494f2dca9a mfree.asm: some minor comments and additions
boisy
parents: 1255
diff changeset
222
fa494f2dca9a mfree.asm: some minor comments and additions
boisy
parents: 1255
diff changeset
223 DecTbl fdb 10000,1000,100,10,1
fa494f2dca9a mfree.asm: some minor comments and additions
boisy
parents: 1255
diff changeset
224 fcb $FF
fa494f2dca9a mfree.asm: some minor comments and additions
boisy
parents: 1255
diff changeset
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
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
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
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
230 pshs a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
231 lda $01,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
232 lsr ,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
233 lsr ,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
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
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
236 L01A7 lslb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
237 rola
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
238 L01A9 lsr ,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
239 bne L01A7
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
240 leas 1,s
1636
fa494f2dca9a mfree.asm: some minor comments and additions
boisy
parents: 1255
diff changeset
241 leax <DecTbl,pcr
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
242 ldy #$2F20
1636
fa494f2dca9a mfree.asm: some minor comments and additions
boisy
parents: 1255
diff changeset
243 L01B6 leay >256,y
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
244 subd ,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
245 bcc L01B6
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
246 addd ,x++
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
247 pshs b,a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
248 tfr y,d
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
249 tst ,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
250 bmi L01DE
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
251 ldy #$2F30
1636
fa494f2dca9a mfree.asm: some minor comments and additions
boisy
parents: 1255
diff changeset
252 cmpd #'0*256+C$SPAC
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
253 bne L01D8
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
254 ldy #$2F20
1636
fa494f2dca9a mfree.asm: some minor comments and additions
boisy
parents: 1255
diff changeset
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
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
257 puls b,a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
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
fa494f2dca9a mfree.asm: some minor comments and additions
boisy
parents: 1255
diff changeset
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
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
263 leas $02,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
264 puls pc,y,x,b,a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
265
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
266 emod
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
267 eom equ *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
268 end