annotate 3rdparty/p2mods/os9p4_regdump.asm @ 710:4b8f2de93c51

Added DS40 target
author boisy
date Sat, 04 Jan 2003 02:23:45 +0000
parents 661c14ca83e8
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 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
3 * Copyright February,1989 by Ron Lammardo
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
4 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
5 * This system call can be used in an application program to dump the
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
6 * current contents of all user registers in Hex,Decimal,Binary and Ascii
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
7 * (Registers "A" and "B" Only). This module MUST be present in the
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
8 * bootfile. If no OS9P3 module is found,change the "mname" and "nextname"
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
9 * as appropriate.
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
10 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
11 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
12 * If there is a conflict with the code used for this system called, it can
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
13 * be changed by resetting the equate at "F$RegDmp"
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
14 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
15 * NOTE: All registers EXCEPT 'CC' are preserved....OS9 internally resets
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
16 * the condition code register upon service call exit.
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
17
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
18 nam os9p4
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
19 ttl User Register Dump System Call for OS9 Level-II
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
20
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
21 ifp1
4
1f8438c88938 added defsfile, changed source to use that defsfile
boisy
parents: 0
diff changeset
22 use defsfile
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
23 endc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
24
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
25 typelang set systm+objct
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
26 attrev set reent+revision
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
27 revision set 1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
28 edition set 1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
29
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
30 mod Eom,Mname,Typelang,Attrev,Start,0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
31
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
32 mname
628
661c14ca83e8 Renamed to OS9p4 instead of OS9P4
boisy
parents: 627
diff changeset
33 fcs /OS9p4/ name of this module
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
34 fcb edition
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
35
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
36 svctabl
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
37 fcb F$RegDmp F$RegDmp code
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
38 fdb regdmp-*-2 offset to actual code
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
39 fcb $80 end of table
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
40
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
41 start
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
42 leay <svctabl,pcr point to service table
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
43 os9 F$SSvc insert the new op code in the table
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
44 lda #typelang get next module type (same as this one!)
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
45 leax <nextname,pcr get address of next module name
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
46 os9 F$Link attempt to link to it
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
47 bcs endsetup no good...skip this
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
48 jsr ,y else go execute it
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
49
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
50 endsetup
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
51 rts return back to previous module
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
52
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
53 nextname
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
54 fcc /OS9P5/ next module name to link to
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
55 fcb $0d
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
56
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
57 regdmp equ *
627
d45d58e6a5f8 Updated regdump for NitrOS-9
boisy
parents: 4
diff changeset
58 IFNE H6309
d45d58e6a5f8 Updated regdump for NitrOS-9
boisy
parents: 4
diff changeset
59 pshs cc,a,b,e,f,dp,x,y,u save all registers
d45d58e6a5f8 Updated regdump for NitrOS-9
boisy
parents: 4
diff changeset
60 ELSE
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
61 pshs cc,a,b,dp,x,y,u save all registers
627
d45d58e6a5f8 Updated regdump for NitrOS-9
boisy
parents: 4
diff changeset
62 ENDC
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
63 tfr u,y transfer addresses
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
64 leas -60,s back up for some variable storage
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
65 leau 4,s buffer starts here
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
66 clr ,u+ set flag to print ascii char
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
67 lda #$20 get a space
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
68 ldb #50 number of chars to clear
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
69 tfr u,x set register for loop
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
70
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
71 clrloop
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
72 sta ,x+ initialize a space
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
73 decb decrement counter
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
74 bne clrloop if more..loop back & clear another
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
75 lbsr reg060 send a <cr>
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
76 leax reg080,pcr point to start of control table
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
77 clra clear msb of register
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
78 ldb R$A,y get register from stack
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
79 bsr reg000 dump register A
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
80 ldb R$B,y get register from stack
627
d45d58e6a5f8 Updated regdump for NitrOS-9
boisy
parents: 4
diff changeset
81 bsr reg000 dump register B
d45d58e6a5f8 Updated regdump for NitrOS-9
boisy
parents: 4
diff changeset
82 IFNE H6309
d45d58e6a5f8 Updated regdump for NitrOS-9
boisy
parents: 4
diff changeset
83 ldb R$E,y get register from stack
d45d58e6a5f8 Updated regdump for NitrOS-9
boisy
parents: 4
diff changeset
84 bsr reg000 dump register E
d45d58e6a5f8 Updated regdump for NitrOS-9
boisy
parents: 4
diff changeset
85 ldb R$F,y get register from stack
d45d58e6a5f8 Updated regdump for NitrOS-9
boisy
parents: 4
diff changeset
86 bsr reg000 dump register F
d45d58e6a5f8 Updated regdump for NitrOS-9
boisy
parents: 4
diff changeset
87 ENDC
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
88 inc -1,u turn off ascii char print flag
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
89 ldd R$X,y get register from stack
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
90 bsr reg000 dump register X
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
91 ldd R$Y,y get register from stack
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
92 bsr reg000 dump regisetr Y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
93 ldd R$U,y get register from stack
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
94 bsr reg000 dump register U
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
95 ldb R$CC,y get register from stack
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
96 bsr reg000 dump register CC
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
97 ldb R$DP,y get register from stack
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
98 bsr reg000 dump register DP
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
99 ldd R$PC,y get user Task Number
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
100 bsr reg000 dump register PC
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
101 ldy <D.Proc get address of users process descriptor
627
d45d58e6a5f8 Updated regdump for NitrOS-9
boisy
parents: 4
diff changeset
102 ldd P$SP,y get users stack address
d45d58e6a5f8 Updated regdump for NitrOS-9
boisy
parents: 4
diff changeset
103 IFNE H6309
d45d58e6a5f8 Updated regdump for NitrOS-9
boisy
parents: 4
diff changeset
104 addd #14 add on for registers which were saved
d45d58e6a5f8 Updated regdump for NitrOS-9
boisy
parents: 4
diff changeset
105 ELSE
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
106 addd #12 add on for registers which were saved
627
d45d58e6a5f8 Updated regdump for NitrOS-9
boisy
parents: 4
diff changeset
107 ENDC
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
108 bsr reg000 dump register S
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
109 lbsr reg060 send a <CR>
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
110 leas 60,s restore stack pointer
627
d45d58e6a5f8 Updated regdump for NitrOS-9
boisy
parents: 4
diff changeset
111 IFNE H6309
d45d58e6a5f8 Updated regdump for NitrOS-9
boisy
parents: 4
diff changeset
112 puls cc,a,b,e,f,dp,x,y,u,pc restore all registers and return
d45d58e6a5f8 Updated regdump for NitrOS-9
boisy
parents: 4
diff changeset
113 ELSE
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
114 puls cc,a,b,dp,x,y,u,pc restore all registers and return
627
d45d58e6a5f8 Updated regdump for NitrOS-9
boisy
parents: 4
diff changeset
115 ENDC
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
116
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
117 * Dump a register in "D"
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
118 * X = Control Table Location
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
119 * U = Output buffer Location
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
120
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
121 reg000
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
122 pshs y save y register
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
123 tfr d,y register in y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
124 lda ,x # of bytes
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
125 leax 3,x point past table entry
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
126 pshs a,x,y,u save registers
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
127 ldd -2,x get register name
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
128 std ,u++ move to buffer
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
129 ldd #"=$ get chars
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
130 std ,u++ move to buffer
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
131 ldd 3,s get reg
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
132 lbsr gethex convert to hex
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
133 tst 0,s 1 byte ?
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
134 bne reg010 no...skip this
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
135 ldd 2,u get 2 lsb's
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
136 std ,u store in msb's
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
137 ldd #$2020 get two blanks
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
138 std 2,u store in lsb's
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
139
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
140 reg010
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
141 ldd #$2023 get a space and "#"
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
142 std 4,u move in two spaces
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
143 leau 6,u point to start of decimal output buffer
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
144 ldd 3,s get register
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
145 lbsr getdec convert to decimal
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
146 tst 0,s is it one byte
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
147 bne reg020 no..skip this
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
148 ldd 2,u else get third & fourth chars
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
149 std ,u store as first two
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
150 lda 4,u get fifth char
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
151 sta 2,u store as third
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
152 ldd #$2020 get two spaces
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
153 std 3,u store as 4th & 5th chars
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
154
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
155 reg020
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
156 ldd #$2025 get a blank & "%"
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
157 std 5,u move it to buffer
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
158 leau 7,u point to start of binary output area
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
159 tfr a,b space in 'b'
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
160 std 16,u space out ascii char
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
161 ldd 3,s get register
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
162 bsr getbin convert to binary
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
163 tst 0,s check byte count
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
164 bne reg040 skip if two bytes
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
165 ldb #8 loop counter
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
166
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
167 reg030
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
168 lda 8,u get two chars from second 8 digits
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
169 sta ,u+ store in first 8 digits
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
170 lda #$20 get two blanks
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
171 sta 7,u store in second 8 digits
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
172 decb decrement counter
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
173 bne reg030 loop back if not done
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
174 leau -8,u back up to beginning of binary digit output
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
175 ldb 4,s get lsb of register
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
176 tst -18,u check if we want to print ascii char
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
177 bne reg040 nope..skip this
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
178 cmpb #$20 compare char with space
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
179 blo reg040 if lower..skip this
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
180 cmpb #'z compare with last alpha char
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
181 bhi reg040 if higher..skip this
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
182 stb 17,u else store the char
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
183
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
184 reg040
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
185 lda #$0d get a <cr>
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
186 sta 18,u and store it
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
187 leax -17,u back up to buffer start
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
188 bsr reg070 send it
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
189 clra clear msb for next reg
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
190 puls b,x,y,u restore registers
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
191 puls y,pc restore y & return
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
192
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
193 reg050
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
194 fcb $0d
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
195
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
196 reg060
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
197 leax <reg050,pcr point to <cr>
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
198
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
199 reg070
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
200 pshs x,y,u,a,b save registers
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
201 ldy <D.Proc get process descriptor address
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
202 lda P$Path+2,y get user error path number
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
203 pshs a save it
627
d45d58e6a5f8 Updated regdump for NitrOS-9
boisy
parents: 4
diff changeset
204 ldu P$SP,y get user stack address
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
205 leau -50,u back off to make room
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
206 lda <D.SysTsk get system task number
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
207 ldb P$Task,y get users task number
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
208 ldy #40 chars to move
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
209 os9 F$Move move from system to user space
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
210 tfr u,x restore buffer address
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
211 puls a restore user error path number
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
212 os9 I$WritLn send it
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
213 puls x,y,u,a,b,pc restore registers & return
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
214
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
215 * Control Table - Format is :
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
216 * Byte count (0=1,1=2)
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
217 * Register name (Two chars)
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
218
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
219 reg080
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
220 fcb 0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
221 fcc /a /
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
222 fcb 0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
223 fcc /b /
627
d45d58e6a5f8 Updated regdump for NitrOS-9
boisy
parents: 4
diff changeset
224 IFNE H6309
d45d58e6a5f8 Updated regdump for NitrOS-9
boisy
parents: 4
diff changeset
225 fcb 0
d45d58e6a5f8 Updated regdump for NitrOS-9
boisy
parents: 4
diff changeset
226 fcc /e /
d45d58e6a5f8 Updated regdump for NitrOS-9
boisy
parents: 4
diff changeset
227 fcb 0
d45d58e6a5f8 Updated regdump for NitrOS-9
boisy
parents: 4
diff changeset
228 fcc /f /
d45d58e6a5f8 Updated regdump for NitrOS-9
boisy
parents: 4
diff changeset
229 ENDC
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
230 fcb 1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
231 fcc /x /
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
232 fcb 1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
233 fcc /y /
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
234 fcb 1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
235 fcc /u /
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
236 fcb 0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
237 fcc /cc/
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
238 fcb 0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
239 fcc /dp/
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
240 fcb 1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
241 fcc /pc/
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
242 fcb 1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
243 fcc /s /
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
244
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
245
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
246 * Convert "D" to binary digits in buffer "U"
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
247
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
248 getbin
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
249 pshs u,b save 'u', second byte of register
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
250 bsr bin010 convert first byte
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
251 puls a get second byte
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
252 bsr bin010 convert it
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
253 puls u,pc restore 'u' and return
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
254
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
255 bin010
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
256 bita #%10000000 check bit
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
257 bsr bin020 print result
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
258 bita #%01000000
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
259 bsr bin020
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
260 bita #%00100000
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
261 bsr bin020
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
262 bita #%00010000
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
263 bsr bin020
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
264 bita #%00001000
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
265 bsr bin020
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
266 bita #%00000100
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
267 bsr bin020
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
268 bita #%00000010
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
269 bsr bin020
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
270 bita #%00000001
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
271
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
272 bin020
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
273 beq bin030 skip this if bit was set
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
274 ldb #'1 else get an ascii '1'
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
275 bra bin040 skip next
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
276
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
277 bin030
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
278 ldb #'0 bit not set...get an ascii '0'
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
279
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
280 bin040
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
281 stb ,u+ store the ascii char
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
282 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
283
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
284 * Convert "D" to 4 hex digits in buffer "U"
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
285
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
286 gethex
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
287 pshs u,b save 'u',second register byte
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
288 bsr gth010 convert first byte
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
289 puls a restore second byte
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
290 bsr gth010 convert it
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
291 puls u,pc restore 'u' and return
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
292
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
293 gth010
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
294 pshs a save the byte
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
295 lsra shift left 4 bits to right
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
296 lsra
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
297 lsra
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
298 lsra
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
299 bsr gth020 convert to hex digit
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
300 puls a restore the byte
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
301 anda #$0f strip off high 4 digits
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
302
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
303 gth020
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
304 adda #'0 make it ascii
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
305 cmpa #$3a is it a letter
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
306 blt gth030 nope..skip this
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
307 adda #7 else add bias
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
308
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
309 gth030
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
310 sta ,u+ store the ascii character
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
311 rts return
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
312
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
313 * Convert "D" to 5 decimal digits in buffer at "U"
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
314
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
315
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
316 getdec
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
317 pshs x,y,u save registers
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
318 ldx #10000 get decimal number for subtraction
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
319 bsr gtd010 get the decimal digit
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
320 ldx #01000
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
321 bsr gtd010
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
322 ldx #00100
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
323 bsr gtd010
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
324 ldx #00010
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
325 bsr gtd010
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
326 ldx #00001
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
327 bsr gtd010
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
328 puls x,y,u,pc restore registers & return
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
329
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
330 gtd010
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
331 pshs x,a save x register & extra byte
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
332 clr ,s clear counter
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
333
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
334 gtd020
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
335 cmpd 1,s compare 'd' with 'x' on stack
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
336 blo gtd030 less...skip this
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
337 subd 1,s else subtract number on stack
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
338 inc ,s increment digit counter
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
339 bra gtd020 and loop back
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
340
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
341 gtd030
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
342 std 1,s save remainder of number
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
343 ldb ,s+ get counter
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
344 addb #$30 make it ascii
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
345 stb ,u+ and move it as output
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
346 puls d,pc restore remainder & return
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
347
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
348 emod
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
349 eom
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
350 end