1 |
218 |
davidgb |
Assembler release DWC_2.0 version 2.11
|
2 |
|
|
May 6, 2004 (c) Motorola (free ware)
|
3 |
|
|
0001 NAM SYS09BUG FOR ATLYS
|
4 |
|
|
0000 INCLUDE "opt_atl.asm"
|
5 |
|
|
0001 *
|
6 |
|
|
0002 ***************************************************
|
7 |
|
|
0003 * OPTION SWITCHES
|
8 |
|
|
0004 ***************************************************
|
9 |
|
|
0005 *
|
10 |
|
|
0006 *
|
11 |
|
|
0007 ** THE CONTROL PORT CAN ONLY BE ONE OF THESE
|
12 |
|
|
0008 ** NOTE THAT THE ACIA WILL ALWAYS BE PRESET
|
13 |
|
|
0009 ** FOR LOADING AND SAVING S1 RECORDS
|
14 |
|
|
0010 *
|
15 |
|
|
0011 *SWTOPT EQU $FF SWTP ACIA SERIAL CONTROL PORT
|
16 |
|
|
0012 *ADSOPT EQU $FF ADS6809 & DG640 VIDEO DISPAY
|
17 |
|
|
0013 *B3SOPT EQU $FF B3-SPARTAN2 FPGA VIDEO & PS2 KEYBOARD
|
18 |
|
|
0014 *B5XOPT EQU $FF B5-X300 FPGA VIDEO & PS2 KEYBOARD
|
19 |
|
|
0015 *S3SOPT EQU $FF SPARTAN3 STARTER FPGA VIDEO & PS2 KEYBOARD
|
20 |
|
|
0016 *S3EOPT EQU $FF SPARTAN3E STARTER
|
21 |
|
|
0017 *XESOPT EQU $FF XESS XSA-3S100 & XST-3.0
|
22 |
|
|
0018 00FF ATLOPT EQU $FF Digilent Atlys
|
23 |
|
|
0019 *
|
24 |
|
|
0002 END
|
25 |
|
|
0000 INCLUDE "sys09equ.asm"
|
26 |
|
|
0001 *
|
27 |
|
|
0002 ***************************************************
|
28 |
|
|
0003 * MEMORY MAP EQUATES *
|
29 |
|
|
0004 ***************************************************
|
30 |
|
|
0005 E000 MONIO EQU $E000 I/O SPACE
|
31 |
|
|
0006 IFD B3SOPT
|
32 |
|
|
0007 MONEXT EQU $F000 START OF EXTENDED COMMANDS
|
33 |
|
|
0008 EXTCMD EQU $00 EXTENDED OFFSET
|
34 |
|
|
0009 ENDIF B3SOPT
|
35 |
|
|
0009 ENDIF B3SOPT
|
36 |
|
|
0010 IFD S3EOPT
|
37 |
|
|
0011 MONRAM EQU $7FC0
|
38 |
|
|
0012 ELSE
|
39 |
|
|
0013 DFC0 MONRAM EQU $DFC0 STACK SPACE
|
40 |
|
|
0014 ENDIF S3EOPT
|
41 |
|
|
0015 F800 MONROM EQU $F800 START OF ROM
|
42 |
|
|
0016 IFD S3SOPT
|
43 |
|
|
0017 MONEXT EQU $F000 START OF EXTENDED COMMANDS
|
44 |
|
|
0018 EXTCMD EQU $00 EXTENDED OFFSET
|
45 |
|
|
0019 ENDIF S3SOPT
|
46 |
|
|
0019 ENDIF S3SOPT
|
47 |
|
|
0020 IFD XESOPT
|
48 |
|
|
0021 MONEXT EQU $F000 START OF EXTENDED COMMANDS
|
49 |
|
|
0022 EXTCMD EQU $00 EXTENDED OFFSET
|
50 |
|
|
0023 ENDIF XESOPT
|
51 |
|
|
0023 ENDIF XESOPT
|
52 |
221 |
davidgb |
0024 IFD ATLOPT
|
53 |
|
|
0025 F000 MONEXT EQU $F000 START OF EXTENDED COMMANDS
|
54 |
|
|
0026 0000 EXTCMD EQU $00 EXTENDED OFFSET
|
55 |
|
|
0027 ENDIF ATLOPT
|
56 |
|
|
0028 IFD DE270OPT
|
57 |
|
|
0029 MONEXT EQU $F000 START OF EXTENDED COMMANDS
|
58 |
|
|
0030 EXTCMD EQU $00 EXTENDED OFFSET
|
59 |
|
|
0031 ENDIF DE270OPT
|
60 |
|
|
0031 ENDIF DE270OPT
|
61 |
|
|
0032 **************************************************
|
62 |
|
|
0033 **************************************************
|
63 |
|
|
0034
|
64 |
|
|
0035 IFD SWTOPT
|
65 |
|
|
0036 *
|
66 |
|
|
0037 * SOUTH WEST TECHNICAL PRODUCTS COMPUTER
|
67 |
|
|
0038 *
|
68 |
|
|
0039 ACIAOPT EQU $FF ACIA AT PORT 0
|
69 |
|
|
0040 DMAFOPT EQU $FF DMAF2 8" FLOPPY DISK BOOT
|
70 |
|
|
0041 MFDCOPT EQU $FF MINIFLOPPY 5.25" DISK BOOT
|
71 |
|
|
0042 DATOPT EQU $FF DYNAMIC ADDRESS TRANSLATION
|
72 |
|
|
0043 ENDIF
|
73 |
|
|
0043 ENDIF
|
74 |
218 |
davidgb |
0044 *
|
75 |
221 |
davidgb |
0045 IFD ADSOPT
|
76 |
|
|
0046 *
|
77 |
|
|
0047 * ACKERMAN DIGITAL ADS6809
|
78 |
|
|
0048 *
|
79 |
|
|
0049 DG640OPT EQU $FF DG640 VDU AT $E800
|
80 |
|
|
0050 *RTCOPT EQU $FF REAL TIME CLOCK
|
81 |
|
|
0051 PRTOPT EQU $FF PRINTER DRIVERS
|
82 |
|
|
0052 MFDCOPT EQU $FF MINIFLOPPY 5.25" DISK BOOT
|
83 |
|
|
0053 ENDIF ADSOPT
|
84 |
|
|
0053 ENDIF ADSOPT
|
85 |
218 |
davidgb |
0054 *
|
86 |
221 |
davidgb |
0055 IFD B3SOPT
|
87 |
|
|
0056 *
|
88 |
|
|
0057 * BURCHED SPARTAN 2 B3+
|
89 |
|
|
0058 *
|
90 |
|
|
0059 ACIAOPT EQU $FF ACIA AT PORT 0
|
91 |
|
|
0060 PS2OPT EQU $FF PS2 KEYBOARD AT $E020
|
92 |
|
|
0061 VDUOPT EQU $FF VDU AT $E030
|
93 |
|
|
0062 IDEOPT EQU $FF IDE AT $E100
|
94 |
|
|
0063 DATOPT EQU $FF DYNAMIC ADDRESS TRANSLATION
|
95 |
|
|
0064 HFCOPT EQU $FF HARDWARE FLOW CONTROL
|
96 |
|
|
0065 ENDIF B3SOPT
|
97 |
|
|
0065 ENDIF B3SOPT
|
98 |
218 |
davidgb |
0066 *
|
99 |
221 |
davidgb |
0067 IFD B5XOPT
|
100 |
|
|
0068 *
|
101 |
|
|
0069 * BURCHED SPARTAN 2 B5-X300
|
102 |
|
|
0070 *
|
103 |
|
|
0071 ACIAOPT EQU $FF ACIA AT PORT 0
|
104 |
|
|
0072 PS2OPT EQU $FF PS2 KEYBOARD AT $E020
|
105 |
|
|
0073 VDUOPT EQU $FF VDU AT $E030
|
106 |
|
|
0074 CF8OPT EQU $FF COMPACT FLASH AT $E040
|
107 |
|
|
0075 DATOPT EQU $FF DYNAMIC ADDRESS TRANSLATION
|
108 |
|
|
0076 HFCOPT EQU $FF HARDWARE FLOW CONTROL
|
109 |
|
|
0077 ENDIF B5XOPT
|
110 |
|
|
0077 ENDIF B5XOPT
|
111 |
218 |
davidgb |
0078 *
|
112 |
221 |
davidgb |
0079 IFD S3SOPT
|
113 |
|
|
0080 *
|
114 |
|
|
0081 * DIGILENT SPARTAN 3 STARTER
|
115 |
|
|
0082 *
|
116 |
|
|
0083 ACIAOPT EQU $FF ACIA AT PORT 0
|
117 |
|
|
0084 PS2OPT EQU $FF PS2 KEYBOARD AT $E020
|
118 |
|
|
0085 VDUOPT EQU $FF VDU AT $E030
|
119 |
|
|
0086 CF8OPT EQU $FF COMPACT FLASH AT $E040
|
120 |
|
|
0087 DATOPT EQU $FF DYNAMIC ADDRESS TRANSLATION
|
121 |
|
|
0088 EXTOPT EQU $FF EXTENDED COMMANDS
|
122 |
|
|
0089 ENDIF S3SOPT
|
123 |
|
|
0089 ENDIF S3SOPT
|
124 |
218 |
davidgb |
0090 *
|
125 |
221 |
davidgb |
0091 IFD S3EOPT
|
126 |
|
|
0092 *
|
127 |
|
|
0093 * DIGILENT SPARTAN 3E STARTER
|
128 |
|
|
0094 *
|
129 |
|
|
0095 ACIAOPT EQU $FF ACIA AT PORT 0
|
130 |
|
|
0096 PS2OPT EQU $FF PS2 KEYBOARD AT $E020
|
131 |
|
|
0097 VDUOPT EQU $FF VDU AT $E030
|
132 |
|
|
0098 TRAOPT EQU $FF PIA TRACE TIMER
|
133 |
|
|
0099 ENDIF S3EOPT
|
134 |
|
|
0099 ENDIF S3EOPT
|
135 |
218 |
davidgb |
0100 *
|
136 |
221 |
davidgb |
0101 IFD XESOPT
|
137 |
|
|
0102 *
|
138 |
|
|
0103 * XESS SPARTAN 3 XSA-3S1000 & XST-3.0
|
139 |
|
|
0104 *
|
140 |
|
|
0105 ACIAOPT EQU $FF ACIA AT PORT 0
|
141 |
|
|
0106 PS2OPT EQU $FF PS2 KEYBOARD AT $E020
|
142 |
|
|
0107 VDUOPT EQU $FF VDU AT $E030
|
143 |
|
|
0108 IDEOPT EQU $FF IDE AT $E100
|
144 |
|
|
0109 DATOPT EQU $FF DYNAMIC ADDRESS TRANSLATION
|
145 |
|
|
0110 HFCOPT EQU $FF HARDWARE FLOW CONTROL
|
146 |
|
|
0111 EXTOPT EQU $FF EXTENDED COMMANDS
|
147 |
|
|
0112 ENDIF XESOPT
|
148 |
|
|
0112 ENDIF XESOPT
|
149 |
218 |
davidgb |
0113 *
|
150 |
221 |
davidgb |
0114 IFD ATLOPT
|
151 |
|
|
0115 *
|
152 |
|
|
0116 * Digilent Atlys SPARTAN6
|
153 |
|
|
0117 *
|
154 |
|
|
0118 00FF ACIAOPT EQU $FF ACIA AT PORT 0
|
155 |
|
|
0119 00FF PS2OPT EQU $FF PS2 KEYBOARD AT $E020
|
156 |
|
|
0120 00FF VDUOPT EQU $FF VDU AT $E030
|
157 |
|
|
0121 00FF IDEOPT EQU $FF IDE AT $E100
|
158 |
|
|
0122 00FF DATOPT EQU $FF DYNAMIC ADDRESS TRANSLATION
|
159 |
|
|
0123 00FF HFCOPT EQU $FF HARDWARE FLOW CONTROL
|
160 |
|
|
0124 00FF EXTOPT EQU $FF EXTENDED COMMANDS
|
161 |
|
|
0125 ENDIF ATLOPT
|
162 |
|
|
0126 *
|
163 |
|
|
0127 IFD DE270OPT
|
164 |
218 |
davidgb |
0128 *
|
165 |
221 |
davidgb |
0129 * TERASIC CYCLONE 2 DE2-70
|
166 |
218 |
davidgb |
0130 *
|
167 |
221 |
davidgb |
0131 ACIAOPT EQU $FF ACIA AT PORT 0
|
168 |
|
|
0132 PS2OPT EQU $FF PS2 KEYBOARD AT $E020
|
169 |
|
|
0133 VDUOPT EQU $FF VDU AT $E030
|
170 |
|
|
0134 CF8OPT EQU $FF COMPACT FLASH AT $E040
|
171 |
|
|
0135 DATOPT EQU $FF DYNAMIC ADDRESS TRANSLATION
|
172 |
|
|
0136 EXTOPT EQU $FF EXTENDED COMMANDS
|
173 |
|
|
0137 ENDIF DE270OPT
|
174 |
|
|
0137 ENDIF DE270OPT
|
175 |
|
|
0138 *
|
176 |
218 |
davidgb |
0139 *
|
177 |
221 |
davidgb |
0140 IFD ACIAOPT
|
178 |
|
|
0141 *
|
179 |
|
|
0142 ***************************************************
|
180 |
|
|
0143 * SERIAL PORT *
|
181 |
|
|
0144 ***************************************************
|
182 |
|
|
0145 *
|
183 |
|
|
0146 ** ACIA SITS ON PORT 0
|
184 |
|
|
0147 *
|
185 |
|
|
0148 E000 ACIAS EQU MONIO+$00 CONTROL PORT
|
186 |
|
|
0149 *
|
187 |
|
|
0150 ENDIF ACIAOPT
|
188 |
|
|
0151 IFD MFDCOPT
|
189 |
|
|
0152 *
|
190 |
|
|
0153 ***************************************************
|
191 |
|
|
0154 * MINIFLOPPY DRIVE *
|
192 |
|
|
0155 ***************************************************
|
193 |
|
|
0156 *
|
194 |
|
|
0157 ** FLOPPY DISK CONTROLLER SITS ON PORT 1
|
195 |
|
|
0158 *
|
196 |
|
|
0159 DRVFDC EQU MONIO+$14
|
197 |
|
|
0160 CMDFDC EQU MONIO+$18
|
198 |
|
|
0161 SECFDC EQU MONIO+$1A
|
199 |
|
|
0162 DATFDC EQU MONIO+$1B
|
200 |
|
|
0163 ENDIF MFDCOPT
|
201 |
|
|
0163 ENDIF MFDCOPT
|
202 |
|
|
0164 IFD PS2OPT
|
203 |
|
|
0165 *
|
204 |
|
|
0166 ***************************************************
|
205 |
|
|
0167 * VDU8 PS/2 KEYBOARD PORT *
|
206 |
|
|
0168 ***************************************************
|
207 |
|
|
0169 *
|
208 |
|
|
0170 ** KEYBOARD SITS ON PORT 2
|
209 |
218 |
davidgb |
0171 *
|
210 |
221 |
davidgb |
0172 E020 PS2KBD EQU MONIO+$20 PS/2 KEYBOARD PORT
|
211 |
|
|
0173 ENDIF PS2OPT
|
212 |
|
|
0174 IFD VDUOPT
|
213 |
|
|
0175 *
|
214 |
|
|
0176 ***************************************************
|
215 |
|
|
0177 * VDU8 DISPLAY DRIVER EQUATES *
|
216 |
218 |
davidgb |
0178 ***************************************************
|
217 |
221 |
davidgb |
0179 *
|
218 |
|
|
0180 ** VDU8 DISPLAY SITS ON PORT 3
|
219 |
218 |
davidgb |
0181 *
|
220 |
221 |
davidgb |
0182 E030 VDU EQU MONIO+$30
|
221 |
|
|
0183 0000 VDUCHR EQU 0 CHARACTER REGISTER
|
222 |
|
|
0184 0001 VDUATT EQU 1 ATTRIBUTE REGISTER
|
223 |
|
|
0185 0002 VDUCOL EQU 2 CURSOR COLUMN
|
224 |
|
|
0186 0003 VDUROW EQU 3 CURSOR ROW
|
225 |
|
|
0187 0004 VDUOFF EQU 4 ROW OFFSET
|
226 |
|
|
0188 *
|
227 |
|
|
0189 0050 LINLEN EQU 80 LENGTH OF A LINE
|
228 |
|
|
0190 0019 NUMLIN EQU 25 NUMBER OF LINES
|
229 |
|
|
0191 ENDIF VDUOPT
|
230 |
|
|
0192 *
|
231 |
|
|
0193 IFD CF8OPT
|
232 |
|
|
0194 *
|
233 |
|
|
0195 ***************************************************
|
234 |
|
|
0196 * COMPACT FLASH EQUATES 8 BIT TRANSFER *
|
235 |
|
|
0197 ***************************************************
|
236 |
|
|
0198 *
|
237 |
|
|
0199 ** COMPACT FLASH SITS AT PORT 4
|
238 |
|
|
0200 *
|
239 |
|
|
0201 CF_BASE EQU MONIO+$40
|
240 |
|
|
0202 CF_DATA EQU CF_BASE+0
|
241 |
|
|
0203 CF_ERROR EQU CF_BASE+1 ; read error
|
242 |
|
|
0204 CF_FEATURE EQU CF_BASE+1 ; write feature
|
243 |
|
|
0205 CF_SECCNT EQU CF_BASE+2
|
244 |
|
|
0206 CF_SECNUM EQU CF_BASE+3
|
245 |
|
|
0207 CF_CYLLO EQU CF_BASE+4
|
246 |
|
|
0208 CF_CYLHI EQU CF_BASE+5
|
247 |
|
|
0209 CF_HEAD EQU CF_BASE+6
|
248 |
|
|
0210 CF_STATUS EQU CF_BASE+7 ; read status
|
249 |
|
|
0211 CF_COMAND EQU CF_BASE+7 ; write command
|
250 |
218 |
davidgb |
0212 *
|
251 |
221 |
davidgb |
0213 * Command Equates
|
252 |
|
|
0214 *
|
253 |
|
|
0215 CMDREAD EQU $20 ; Read Single sector
|
254 |
|
|
0216 CMDWRITE EQU $30 ; Write Single sector
|
255 |
|
|
0217 CMDFEATURE EQU $EF
|
256 |
|
|
0218 FEAT8BIT EQU $01 ; enable 8 bit transfers
|
257 |
|
|
0219 HEADLBA EQU $E0
|
258 |
218 |
davidgb |
0220 *
|
259 |
221 |
davidgb |
0221 * Status bit equates
|
260 |
|
|
0222 *
|
261 |
|
|
0223 BUSY EQU $80
|
262 |
|
|
0224 DRDY EQU $40
|
263 |
|
|
0225 DRQ EQU $08
|
264 |
|
|
0226 ERR EQU $01
|
265 |
|
|
0227 *
|
266 |
|
|
0228 ENDIF CF8OPT
|
267 |
|
|
0228 ENDIF CF8OPT
|
268 |
|
|
0229 *
|
269 |
|
|
0230 IFD IDEOPT
|
270 |
|
|
0231 *
|
271 |
|
|
0232 ***************************************************
|
272 |
|
|
0233 * COMPACT FLASH EQUATES 16 BIT TRANSFER (XESS) *
|
273 |
|
|
0234 ***************************************************
|
274 |
218 |
davidgb |
0235 *
|
275 |
221 |
davidgb |
0236 ** COMPACT FLASH SITS AT PORT 4
|
276 |
|
|
0237 *
|
277 |
|
|
0238 E100 CF_BASE EQU MONIO+$0100
|
278 |
|
|
0239 E100 CF_DATA EQU CF_BASE+0
|
279 |
|
|
0240 E102 CF_ERROR EQU CF_BASE+2 ; read error
|
280 |
|
|
0241 E102 CF_FEATURE EQU CF_BASE+2 ; write feature
|
281 |
|
|
0242 E104 CF_SECCNT EQU CF_BASE+4
|
282 |
|
|
0243 E106 CF_SECNUM EQU CF_BASE+6
|
283 |
|
|
0244 E108 CF_CYLLO EQU CF_BASE+8
|
284 |
|
|
0245 E10A CF_CYLHI EQU CF_BASE+10
|
285 |
|
|
0246 E10C CF_HEAD EQU CF_BASE+12
|
286 |
|
|
0247 E10E CF_STATUS EQU CF_BASE+14 ; read status
|
287 |
|
|
0248 E10E CF_COMAND EQU CF_BASE+14 ; write command
|
288 |
|
|
0249 E11E CF_AUX EQU CF_BASE+30
|
289 |
218 |
davidgb |
0250 *
|
290 |
221 |
davidgb |
0251 * Command Equates
|
291 |
218 |
davidgb |
0252 *
|
292 |
221 |
davidgb |
0253 0020 CMDREAD EQU $20 ; Read Single sector
|
293 |
|
|
0254 0030 CMDWRITE EQU $30 ; Write Single sector
|
294 |
|
|
0255 0006 AUXRESET EQU $06 ; Reset IDE
|
295 |
|
|
0256 0002 AUXRSTREL EQU $02 ; Reset release IRQ masked
|
296 |
|
|
0257 00E0 HEADLBA EQU $E0
|
297 |
218 |
davidgb |
0258 *
|
298 |
221 |
davidgb |
0259 * Status bit equates
|
299 |
218 |
davidgb |
0260 *
|
300 |
221 |
davidgb |
0261 0080 BUSY EQU $80
|
301 |
|
|
0262 0040 DRDY EQU $40
|
302 |
|
|
0263 0008 DRQ EQU $08
|
303 |
|
|
0264 0001 ERR EQU $01
|
304 |
|
|
0265 *
|
305 |
|
|
0266 ENDIF CF8OPT
|
306 |
218 |
davidgb |
0267 *
|
307 |
221 |
davidgb |
0268 IFD RTCOPT
|
308 |
|
|
0269 *
|
309 |
|
|
0270 **************************************************
|
310 |
|
|
0271 * MM58167A REAL TIME CLOCK MEMORY MAP:
|
311 |
|
|
0272 **************************************************
|
312 |
|
|
0273 *
|
313 |
|
|
0274 ** REAL TIME CLOCK SITS ON PORT 4 AND PORT 5
|
314 |
|
|
0275 *
|
315 |
|
|
0276 CLOCK EQU MONIO+$40 CLOCK BASE ADDRESS AND REGISTERS
|
316 |
|
|
0277 *
|
317 |
|
|
0278 * COUNTER AND COMPARITOR REGISTERS:
|
318 |
|
|
0279 *
|
319 |
|
|
0280 * Both the Clock Counter and Clock Comparitor
|
320 |
|
|
0281 * consist of 8 registers for holding the time.
|
321 |
|
|
0282 * The register offsets from the Counter and
|
322 |
|
|
0283 * Comparitor registers are listed above.
|
323 |
|
|
0284 *
|
324 |
|
|
0285 COUNTR EQU CLOCK+0
|
325 |
|
|
0286 CMPRAM EQU CLOCK+8 COMPARITOR REGISTERS
|
326 |
|
|
0287 *
|
327 |
|
|
0288 * CLOCK REGISTER OFFSETS:
|
328 |
|
|
0289 * These register offsets are used for the CLOCK
|
329 |
|
|
0290 * and comparitor ram CMPRAM.
|
330 |
|
|
0291 *
|
331 |
|
|
0292 S10000 EQU 0 TEN THOUNSANDTHS OF SECONDS
|
332 |
|
|
0293 S100 EQU 1 HUNDRETHS AND TENTHS OF SECONDS
|
333 |
|
|
0294 SECOND EQU 2
|
334 |
|
|
0295 MINUIT EQU 3
|
335 |
|
|
0296 HOUR EQU 4
|
336 |
|
|
0297 WKDAY EQU 5
|
337 |
|
|
0298 MTHDAY EQU 6
|
338 |
|
|
0299 MONTH EQU 7
|
339 |
|
|
0300 *
|
340 |
|
|
0301 * INTERRUPT OUTPUT REGISTERS:
|
341 |
|
|
0302 *
|
342 |
|
|
0303 * An interrupt output may be generated at the
|
343 |
|
|
0304 * following rates by setting the appropriate bit
|
344 |
|
|
0305 * in the Interrupt Control Register (CINTCR).
|
345 |
|
|
0306 * The Interrupt Status Register (CINTSR) must be
|
346 |
|
|
0307 * read to clear the interrupt and will return
|
347 |
|
|
0308 * the source of the interrupt.
|
348 |
|
|
0309 *
|
349 |
|
|
0310 * 1/Month Bit 7
|
350 |
|
|
0311 * 1/Week Bit 6
|
351 |
|
|
0312 * 1/Day Bit 5
|
352 |
|
|
0313 * 1/Hour Bit 4
|
353 |
|
|
0314 * 1/Minuite Bit 3
|
354 |
|
|
0315 * 1/Second Bit 2
|
355 |
|
|
0316 * 10/Second Bit 1
|
356 |
|
|
0317 * Comparitor Bit 0
|
357 |
|
|
0318 *
|
358 |
|
|
0319 CINTSR EQU CLOCK+16 INTERRUPT STATUS REGISTER
|
359 |
|
|
0320 CINTCR EQU CLOCK+17 INTERRUPT CONTROL REGISTER
|
360 |
|
|
0321 *
|
361 |
|
|
0322 * COUNTER AND RAM RESETS; GO COMMAND.
|
362 |
|
|
0323 *
|
363 |
|
|
0324 * The counter and comparitor may be reset
|
364 |
|
|
0325 * by writing $FF into CTRRES and CMPRES
|
365 |
|
|
0326 * respectivly.
|
366 |
|
|
0327 * A write to the Go command register (GOCMND)
|
367 |
|
|
0328 * will reset the 1/1000ths, 1/100ths and 1/10ths
|
368 |
|
|
0329 * of a second counter.
|
369 |
|
|
0330 *
|
370 |
|
|
0331 CTRRES EQU CLOCK+18 COUNTER RESET
|
371 |
|
|
0332 CMPRES EQU CLOCK+19 COMPARITOR RAM RESET
|
372 |
|
|
0333 GOCMND EQU CLOCK+21 GO COMMAND
|
373 |
|
|
0334 *
|
374 |
|
|
0335 * CLOCK STATUS REGISTER.
|
375 |
|
|
0336 *
|
376 |
|
|
0337 * The counter takes 61 usec. to rollover for
|
377 |
|
|
0338 * every 1KHz clock pulse. If the Status bit is
|
378 |
|
|
0339 * set after reading the counter, the counter
|
379 |
|
|
0340 * should be re-read to ensure the time is correct.
|
380 |
|
|
0341 *
|
381 |
|
|
0342 CLKSTA EQU CLOCK+20 STATUS BIT
|
382 |
|
|
0343 SBYINT EQU CLOCK+22 STANDBY INTERRUPT
|
383 |
|
|
0344 TSTMOD EQU CLOCK+31 TEST MODE REGISTER
|
384 |
|
|
0345 ENDIF RTCOPT
|
385 |
|
|
0345 ENDIF RTCOPT
|
386 |
|
|
0346 *
|
387 |
|
|
0347 IFD TRAOPT
|
388 |
|
|
0348 *
|
389 |
|
|
0349 **************************************************
|
390 |
|
|
0350 * PIA INTERRUPT TIMER
|
391 |
|
|
0351 **************************************************
|
392 |
|
|
0352 *
|
393 |
|
|
0353 ** PIA INTERRUPT TIMER SITS ON PORT 7
|
394 |
|
|
0354 *
|
395 |
|
|
0355 ** PIA TIMER FOR SINGLE STEP / TRACE
|
396 |
|
|
0356 *
|
397 |
|
|
0357 * TADATA = Output = Timer preset register
|
398 |
|
|
0358 * TACTRL - CA1 = input = rising edge = NMI
|
399 |
|
|
0359 * - CA2 = Output = Timer Reset (Active High)
|
400 |
|
|
0360 * TBDATA = Input = Timer read back register
|
401 |
|
|
0361 * TBCTRL - CB1 = input = rising edge = FIRQ
|
402 |
|
|
0362 * - CB2 = output = strobe low on write to TBDATA = Timer Preset
|
403 |
|
|
0363 *
|
404 |
|
|
0364 * CRA0 = 0 CA1 IRQ DISAB, CRA0 = 1 CA1 IRQ ENAB
|
405 |
|
|
0365 * CRA1 = 1 CA1 Rising edge IRQ
|
406 |
|
|
0366 * CRA2 = 0 TADATA = Data Direction, CRA2 = 1 TADATA = I/O Register
|
407 |
|
|
0367 * CRA3 = 0 CA2 = 0 output, CRA3 = 1 CA2 = 1
|
408 |
|
|
0368 * CRA4 = 1 ] CA2 = Set/Reset output
|
409 |
|
|
0369 * CRA5 = 1 ]
|
410 |
|
|
0370 * CRA6 = X CA2 Input Interrupt Flag
|
411 |
|
|
0371 * CRA7 = X CA1 Interrupt Flag
|
412 |
218 |
davidgb |
0372 *
|
413 |
221 |
davidgb |
0373 * CRB0 = 0 CB1 IRQ DISAB, CRB0 = 1 CA1 IRQ ENAB
|
414 |
|
|
0374 * CRB1 = 1 CB1 Rising edge IRQ
|
415 |
|
|
0375 * CRB2 = 0 TBDATA = Data Direction, CRB2 = 1 TBDATA = I/O Register
|
416 |
|
|
0376 * CRB3 = 0 CB2 = 0 output, CRB3 = 1 CB2 = 1
|
417 |
|
|
0377 * CRB4 = 1 ] CB2 = Set/Reset output
|
418 |
|
|
0378 * CRB5 = 1 ]
|
419 |
|
|
0379 * CRB6 = X CB2 Input Interrupt Flag
|
420 |
|
|
0380 * CRB7 = X CB1 Interrupt Flag
|
421 |
218 |
davidgb |
0381 *
|
422 |
221 |
davidgb |
0382 * DDRA = 0 TADATA = Input, DDRA = 1 TADATA = Output
|
423 |
|
|
0383 * DDRB = 0 TBDATA = Input, DDRB = 1 TBDATA = Output
|
424 |
218 |
davidgb |
0384 *
|
425 |
221 |
davidgb |
0385 TADATA EQU MONIO+$70 Timer preset port
|
426 |
|
|
0386 TACTRL EQU MONIO+$71
|
427 |
|
|
0387 TBDATA EQU MONIO+$72 Timer read back port
|
428 |
|
|
0388 TBCTRL EQU MONIO+$73
|
429 |
218 |
davidgb |
0389 *
|
430 |
221 |
davidgb |
0390 TRADEL EQU 13 Number of E cycles for RTI (May need to be fudged)
|
431 |
|
|
0391 *
|
432 |
|
|
0392 ENDIF TRAOPT
|
433 |
|
|
0392 ENDIF TRAOPT
|
434 |
|
|
0393 IFD ADSOPT
|
435 |
|
|
0394 *
|
436 |
|
|
0395 ***************************************************
|
437 |
|
|
0396 * SERIAL PORT FOR DG640 *
|
438 |
|
|
0397 ***************************************************
|
439 |
218 |
davidgb |
0398 *
|
440 |
221 |
davidgb |
0399 ** SET UP FOR ACKERMAN DIGITAL ADS6809
|
441 |
|
|
0400 ** THE ADS6809 S100 BOAD HAS AN ON BOARD ACIA
|
442 |
|
|
0401 *
|
443 |
|
|
0402 ACIAS EQU MONIO+$400 CONTROL PORT
|
444 |
218 |
davidgb |
0403 *
|
445 |
221 |
davidgb |
0404 ENDIF ADSOPT
|
446 |
|
|
0404 ENDIF ADSOPT
|
447 |
|
|
0405 IFD PRTOPT
|
448 |
|
|
0406 *
|
449 |
|
|
0407 ***************************************************
|
450 |
|
|
0408 * PRINTER INTERFACE *
|
451 |
|
|
0409 ***************************************************
|
452 |
|
|
0410 *
|
453 |
|
|
0411 PADATA EQU MONIO+$404
|
454 |
|
|
0412 PACTRL EQU MONIO+$405
|
455 |
|
|
0413 PBDATA EQU MONIO+$406
|
456 |
|
|
0414 PBCTRL EQU MONIO+$407
|
457 |
|
|
0415 *
|
458 |
|
|
0416 ** CB1 ACK. I/P
|
459 |
|
|
0417 ** CB2 STB. O/P
|
460 |
|
|
0418 ** PB0 - PB7 DATA 1 - 8 O/P
|
461 |
|
|
0419 ** PORT A BIT ASSIGNMENT
|
462 |
|
|
0420 *
|
463 |
|
|
0421 PBUSY EQU $80 I/P
|
464 |
|
|
0422 PEMPTY EQU $40 I/P
|
465 |
|
|
0423 SELECT EQU $20 I/P
|
466 |
|
|
0424 PERROR EQU $10 I/P
|
467 |
|
|
0425 PRESET EQU %00000100 O/P PA3 = 0
|
468 |
|
|
0426 AUTOFD EQU %00001000 O/P PA2 = 0
|
469 |
|
|
0427 DIRMSK EQU %00001100
|
470 |
|
|
0428 ENDIF PRTOPT
|
471 |
|
|
0428 ENDIF PRTOPT
|
472 |
|
|
0429 IFD DG640OPT
|
473 |
|
|
0430 *
|
474 |
|
|
0431 ***************************************************
|
475 |
|
|
0432 * DG640 MEMORY MAPPED DISPLAY DRIVER VARIABLES *
|
476 |
|
|
0433 ***************************************************
|
477 |
|
|
0434 *
|
478 |
|
|
0435 ** VIDEO DISPLAY DEFINITIONS
|
479 |
|
|
0436 *
|
480 |
|
|
0437 SCREEN EQU MONIO+$0800 START OF SCREEN MEMORY
|
481 |
|
|
0438 LINLEN EQU 64 LENGTH OF A LINE
|
482 |
|
|
0439 NUMLIN EQU 16 NUMBER OF LINES
|
483 |
|
|
0440 SCNLEN EQU $400 LENGTH OF SCREEN
|
484 |
|
|
0441 ENDIF DG640OPT
|
485 |
|
|
0441 ENDIF DG640OPT
|
486 |
|
|
0442 *
|
487 |
|
|
0443 IFD DMAFOPT
|
488 |
|
|
0444 *
|
489 |
|
|
0445 ***************************************************
|
490 |
|
|
0446 * DMAF2 8" DRIVE *
|
491 |
|
|
0447 ***************************************************
|
492 |
|
|
0448 *
|
493 |
|
|
0449 ADDREG EQU $F000 ADDRESS REGISTER
|
494 |
|
|
0450 CNTREG EQU $F002 COUNT REGISTER
|
495 |
|
|
0451 CCREG EQU $F010 CHANNEL CONTROL REGISTER
|
496 |
|
|
0452 PRIREG EQU $F014 DMA PRIORITY REGISTER
|
497 |
|
|
0453 AAAREG EQU $F015 ???
|
498 |
|
|
0454 BBBREG EQU $F016 ???
|
499 |
|
|
0455 COMREG EQU $F020 1791 COMMAND REGISTER
|
500 |
|
|
0456 SECREG EQU $F022 SECTOR REGISTER
|
501 |
|
|
0457 DRVREG EQU $F024 DRIVE SELECT LATCH
|
502 |
|
|
0458 CCCREG EQU $F040 ???
|
503 |
|
|
0459 ENDIF DMAFOPT
|
504 |
|
|
0459 ENDIF DMAFOPT
|
505 |
|
|
0460 IFD DATOPT
|
506 |
|
|
0461 **************************************************
|
507 |
|
|
0462 * DYNAMIC ADDRESS TRANSLATION REGISTERS *
|
508 |
|
|
0463 **************************************************
|
509 |
|
|
0464 *
|
510 |
|
|
0465 FFF0 IC11 EQU $FFF0 DAT RAM CHIP
|
511 |
|
|
0466 55AA TSTPAT EQU $55AA TEST PATTERN
|
512 |
|
|
0467 ENDIF DATOPT
|
513 |
|
|
0468 *
|
514 |
218 |
davidgb |
0003 END
|
515 |
221 |
davidgb |
0000 INCLUDE "sys09ide.asm"
|
516 |
218 |
davidgb |
0001 *
|
517 |
|
|
0002 ** SYS09BUG MONITOR EXTENSIONS
|
518 |
|
|
0003 *
|
519 |
221 |
davidgb |
0004 * FOR SYS09BUG ON THE XESS XSA-3S100 / XST-3.0
|
520 |
218 |
davidgb |
0005 * WITH I/O MAPPED AT $XE000
|
521 |
221 |
davidgb |
0006 * 16 BIT IDE MAPPED AT $E100
|
522 |
|
|
0007 * AND ROM MAPPED AT $XF000
|
523 |
|
|
0008 *
|
524 |
218 |
davidgb |
0009 *
|
525 |
|
|
|
526 |
|
|
|
527 |
221 |
davidgb |
sys09ide.asm page 2
|
528 |
|
|
0011 *
|
529 |
|
|
0012 ***************************************************
|
530 |
|
|
0013 * Serial PROM register
|
531 |
|
|
0014 ***************************************************
|
532 |
|
|
0015 *
|
533 |
|
|
0016 ** CONFIGURATION PROM DEFINITIONS
|
534 |
|
|
0017 *
|
535 |
|
|
0018 E0C0 PROMREG EQU MONIO+$C0
|
536 |
|
|
0019 0001 PCLKHI EQU $01 Toggle PROM Clock High
|
537 |
|
|
0020 0000 PCLKLO EQU $00 Toggle PROM Clock Low
|
538 |
|
|
0021 0002 PRSTHI EQU $02 Toggle PROM Reset High
|
539 |
|
|
0022 0000 PRSTLO EQU $00 Toggle PROM Reset Low
|
540 |
|
|
0023 AA55 SYNCHI EQU $AA55 Synch Pattern High Word
|
541 |
|
|
0024 FF00 SYNCLO EQU $FF00 Synch Pattern Low Word
|
542 |
|
|
0025 *
|
543 |
218 |
davidgb |
0026 *
|
544 |
221 |
davidgb |
0027 ***************************************************
|
545 |
|
|
0028 * START OF ROM *
|
546 |
|
|
0029 ***************************************************
|
547 |
|
|
0030 *
|
548 |
|
|
0031 F800 MONITV EQU MONROM+0 FDB MONITOR
|
549 |
|
|
0032 F802 NXTCMV EQU MONROM+2 FDB NEXTCMD
|
550 |
|
|
0033 F804 INCHV EQU MONROM+4 FDB INCH
|
551 |
|
|
0034 F806 INCHEV EQU MONROM+6 FDB INCHE
|
552 |
|
|
0035 F808 INCHKV EQU MONROM+8 FDB INCHEK
|
553 |
|
|
0036 F80A OUTCHV EQU MONROM+10 FDB OUTCH
|
554 |
|
|
0037 F80C PDATAV EQU MONROM+12 FDB PDATA
|
555 |
|
|
0038 F80E PCRLFV EQU MONROM+14 FDB PCRLF
|
556 |
|
|
0039 F810 PSTRGV EQU MONROM+16 FDB PSTRNG
|
557 |
|
|
0040 F812 LRAV EQU MONROM+18 FDB LRA
|
558 |
|
|
0041 *
|
559 |
|
|
0042 * Condition code flags
|
560 |
|
|
0043 *
|
561 |
|
|
0044 0001 CFLAG EQU $01 CARRY FLAG
|
562 |
|
|
0045 0002 VFLAG EQU $02 OVERFLOW FLAG
|
563 |
|
|
0046 0004 ZFLAG EQU $04 ZERO FLAG
|
564 |
|
|
0047 0008 NFLAG EQU $08 NEGATIVE FLAG
|
565 |
|
|
0048 0010 IFLAG EQU $10 IRQ MASK CC
|
566 |
|
|
0049 0020 HFLAG EQU $20 HALF CARRY
|
567 |
|
|
0050 0040 FFLAG EQU $40 FIRQ MASK CC
|
568 |
|
|
0051 0080 EFLAG EQU $80 ENTIRE FLAG
|
569 |
|
|
0052 *
|
570 |
|
|
0053 * Serial Port
|
571 |
|
|
0054 *
|
572 |
|
|
0055 E000 ACIAC1 EQU ACIAS
|
573 |
|
|
0056 E001 ACIAD1 EQU ACIAS+1
|
574 |
|
|
0057 04E2 DELCON EQU 1250 Delay (Processor clock in MHz * 50)
|
575 |
|
|
0058 *
|
576 |
|
|
0059 * XMODEM Control characters
|
577 |
|
|
0060 *
|
578 |
|
|
0061 0001 SOH EQU $01
|
579 |
|
|
0062 0004 EOT EQU $04
|
580 |
|
|
0063 0006 ACK EQU $06
|
581 |
|
|
0064 0015 NAK EQU $15
|
582 |
|
|
0065 0018 CAN EQU $18
|
583 |
|
|
0066 *
|
584 |
|
|
0067 * Some Disk Constants
|
585 |
|
|
0068 *
|
586 |
|
|
0069 0100 RMAXTRK EQU 256
|
587 |
|
|
0070 00FF RMAXSEC EQU 255
|
588 |
|
|
0071 FE01 RTOTSEC EQU RMAXTRK*RMAXSEC-RMAXSEC
|
589 |
|
|
0072 *
|
590 |
|
|
0073 * RAM SPACE
|
591 |
|
|
0074 *
|
592 |
|
|
0075 * PUT THIS DOWN THE BOTTOM OF MEMORY
|
593 |
|
|
0076 *
|
594 |
|
|
0077 0100 ORG $0100
|
595 |
|
|
0078 0100 DRVNUM RMB 1
|
596 |
|
|
0079 0101 TRACK RMB 1
|
597 |
|
|
0080 0102 SECTOR RMB 1
|
598 |
|
|
0081 0103 CHKSUM RMB 1
|
599 |
|
|
0082 0104 BLKNUM RMB 1 Xmodem block number
|
600 |
|
|
0083 0105 BYTCNT RMB 1 Xmodem byte count
|
601 |
|
|
0084 0106 XSTATE RMB 2 Xmodem State Vector
|
602 |
|
|
0085 0108 DELCNT RMB 3 $00,$00,$00 Xmodem Poll timer
|
603 |
|
|
0086 010B MAXTRK RMB 1
|
604 |
|
|
0087 010C MAXSEC RMB 1
|
605 |
|
|
0088 0200 ORG $0200
|
606 |
|
|
0089 *
|
607 |
|
|
0090 * SECTOR BUFFER
|
608 |
|
|
0091 *
|
609 |
|
|
0092 0200 BUFFER RMB 256
|
610 |
|
|
0093 *
|
611 |
|
|
0094 ****************************************
|
612 |
|
|
0095 *
|
613 |
|
|
0096 * START OF EXTENSION COMMANDS
|
614 |
|
|
0097 *
|
615 |
|
|
0098 ****************************************
|
616 |
|
|
0099 *
|
617 |
|
|
0100 F000 ORG MONEXT
|
618 |
|
|
0101 F000 F0 02 FDB NEXTEXT Jump to next extended command
|
619 |
|
|
0102 *
|
620 |
|
|
0103 ***** NEXTCMD *****
|
621 |
|
|
0104 *
|
622 |
|
|
0105 F002 AD 9F F8 06 NEXTEXT JSR [INCHEV] GET ONE CHAR. FROM TERMINAL
|
623 |
|
|
0106 F006 84 7F ANDA #$7F STRIP PARITY FROM CHAR.
|
624 |
|
|
0107 F008 1F 89 TFR A,B
|
625 |
|
|
0108 F00A 86 20 LDA #$20
|
626 |
|
|
0109 F00C AD 9F F8 0A JSR [OUTCHV] PRNT SPACE
|
627 |
|
|
0110 F010 C1 60 CMPB #$60
|
628 |
|
|
0111 F012 2F 02 BLE NXTEX0
|
629 |
|
|
0112 F014 C0 20 SUBB #$20
|
630 |
|
|
0113 *
|
631 |
|
|
0114 ***** DO TABLE LOOKUP *****
|
632 |
|
|
0115 * FOR COMMAND FUNCTIONS
|
633 |
|
|
0116 *
|
634 |
|
|
0117 F016 8E F0 2C NXTEX0 LDX #EXTTAB POINT TO JUMP TABLE
|
635 |
|
|
0118 F019 E1 80 NXTEX1 CMPB ,X+ DOES COMMAND MATCH TABLE ENTRY ?
|
636 |
|
|
0119 F01B 27 0D BEQ JMPEXT BRANCH IF MATCH FOUND
|
637 |
|
|
0120 F01D 30 02 LEAX 2,X POINT TO NEXT ENTRY IN TABLE
|
638 |
|
|
0121 F01F 8C F0 35 CMPX #EXTEND REACHED END OF TABLE YET ?
|
639 |
|
|
0122 F022 26 F5 BNE NXTEX1 IF NOT END, CHECK NEXT ENTRY
|
640 |
|
|
0123 F024 8E F0 35 LDX #MSGWHAT POINT TO MSG "WHAT?"
|
641 |
|
|
0124 F027 16 02 29 LBRA PDATA1 PRINT MSG AND RETURN
|
642 |
|
|
0125 F02A 6E 94 JMPEXT JMP [,X] JUMP TO COMMAND ROUTINE
|
643 |
|
|
0126 *
|
644 |
|
|
0127 * EXTENDED COMMAND JUMP TABLE
|
645 |
|
|
0128 *
|
646 |
|
|
0129 F02C EXTTAB EQU *
|
647 |
|
|
0130 F02C 42 FCC 'B' BOOT FLEX
|
648 |
|
|
0131 F02D F0 3E FDB UBSUB
|
649 |
|
|
0132 F02F 46 FCC 'F' FORMAT IDE DISK
|
650 |
|
|
0133 F030 F0 EA FDB UFSUB
|
651 |
|
|
0134 F032 58 FCC 'X' XMODEM ROM DISK UPLOAD
|
652 |
|
|
0135 F033 F2 BC FDB UXSUB
|
653 |
|
|
0136 *
|
654 |
|
|
0137 F035 EXTEND EQU *
|
655 |
|
|
0138 *
|
656 |
|
|
0139 F035 57 48 41 54 20 3F MSGWHAT FCC "WHAT ?"
|
657 |
|
|
0140 F03B 0A 0D 04 FCB $0A,$0D,$04
|
658 |
|
|
0141 *
|
659 |
|
|
0142 * GO TO FLEX RESIDENT IN MEMORY
|
660 |
|
|
0143 *
|
661 |
|
|
0144 F03E 8E CD 00 UBSUB LDX #$CD00
|
662 |
|
|
0145 F041 AF 4A STX 10,U
|
663 |
|
|
0146 F043 1F 34 TFR U,S
|
664 |
|
|
0147 F045 3B RTI
|
665 |
|
|
0148 *
|
666 |
|
|
0149 * recieve char from remote drive.
|
667 |
|
|
0150 * timeout if no response for approx 1s.
|
668 |
|
|
0151 * Entry: no parameters
|
669 |
|
|
0152 * Exit: (A) = recieved char, (C)=1 if valid char, (C)=0 if timeout.
|
670 |
|
|
0153 *
|
671 |
|
|
0154 F046 34 30 RCHAR PSHS X,Y
|
672 |
|
|
0155 *
|
673 |
|
|
0156 F048 8E 03 E8 LDX #1000 1000x inner loop
|
674 |
|
|
0157 F04B 10 8E 04 E2 RCHAR1 LDY #DELCON delay constant for inner loop (approx 1ms).
|
675 |
|
|
0158 F04F B6 E0 00 RCHAR2 LDA ACIAC1 test for recieved char
|
676 |
|
|
0159 F052 47 ASRA
|
677 |
|
|
0160 F053 25 0A BCS RCHAR3 get character
|
678 |
|
|
0161 F055 31 3F LEAY -1,Y else, continue to count delay
|
679 |
|
|
0162 F057 26 F6 BNE RCHAR2
|
680 |
|
|
0163 F059 30 1F LEAX -1,X
|
681 |
|
|
0164 F05B 26 EE BNE RCHAR1
|
682 |
|
|
0165 F05D 35 B0 PULS X,Y,PC return with error if timed out
|
683 |
|
|
0166 *
|
684 |
|
|
0167 F05F B6 E0 01 RCHAR3 LDA ACIAD1 return data (carry bit still set)
|
685 |
|
|
0168 F062 35 B0 PULS X,Y,PC
|
686 |
|
|
0169 *
|
687 |
218 |
davidgb |
0170 *
|
688 |
221 |
davidgb |
0171 * transmit char to remote drive.
|
689 |
|
|
0172 * timeout if no response for approx 1s. (allows for use of hardware flow control)
|
690 |
|
|
0173 * Entry: (A) = char to transmit
|
691 |
|
|
0174 * Exit: (A) = recieved char, (C)=1 if valid char, (C)=0 if timeout.
|
692 |
|
|
0175 *
|
693 |
|
|
0176 F064 34 30 SCHAR PSHS X,Y
|
694 |
|
|
0177 F066 34 02 PSHS A
|
695 |
|
|
0178 *
|
696 |
|
|
0179 F068 8E 03 E8 LDX #1000 1000x inner loop
|
697 |
|
|
0180 F06B 10 8E 04 E2 SCHAR1 LDY #DELCON delay constant for inner loop (approx 1ms).
|
698 |
|
|
0181 F06F B6 E0 00 SCHAR2 LDA ACIAC1 test for space in transmit FIFO
|
699 |
|
|
0182 F072 47 ASRA
|
700 |
|
|
0183 F073 47 ASRA
|
701 |
|
|
0184 F074 25 0C BCS SCHAR3 send character
|
702 |
|
|
0185 F076 31 3F LEAY -1,Y else, continue to count delay
|
703 |
|
|
0186 F078 26 F5 BNE SCHAR2
|
704 |
|
|
0187 F07A 30 1F LEAX -1,X
|
705 |
|
|
0188 F07C 26 ED BNE SCHAR1
|
706 |
|
|
0189 F07E 35 02 PULS A
|
707 |
|
|
0190 F080 35 B0 PULS X,Y,PC return with error if timed out
|
708 |
|
|
0191 *
|
709 |
|
|
0192 F082 35 02 SCHAR3 PULS A
|
710 |
|
|
0193 F084 B7 E0 01 STA ACIAD1 send data (carry bit still set)
|
711 |
|
|
0194 F087 35 B0 PULS X,Y,PC
|
712 |
|
|
0195 *
|
713 |
|
|
0196 ** 'UF' Format IDE Drive to FLEX standard.
|
714 |
|
|
0197 *
|
715 |
|
|
0198 F089 0A 0D DISFOS FCB $0A,$0D
|
716 |
|
|
0199 F08B 46 6F 72 6D 61 74 FCC 'Formating IDE disk... '
|
717 |
218 |
davidgb |
69 6E 67 20 49 44
|
718 |
|
|
45 20 64 69 73 6B
|
719 |
|
|
2E 2E 2E 20
|
720 |
221 |
davidgb |
0200 F0A1 0A 0D FCB $0A,$0D
|
721 |
|
|
0201 F0A3 44 72 69 76 65 20 FCC 'Drive Number ?'
|
722 |
218 |
davidgb |
4E 75 6D 62 65 72
|
723 |
|
|
20 3F
|
724 |
221 |
davidgb |
0202 F0B1 04 FCB 4
|
725 |
|
|
0203 F0B2 0A 0D 04 MESS6 FCB $0A,$0D,4
|
726 |
|
|
0204 F0B5 49 44 45 20 64 72 FCC 'IDE drive not allocated! '
|
727 |
218 |
davidgb |
69 76 65 20 6E 6F
|
728 |
|
|
74 20 61 6C 6C 6F
|
729 |
|
|
63 61 74 65 64 21
|
730 |
|
|
20
|
731 |
221 |
davidgb |
0205 F0CE 04 FCB 4
|
732 |
|
|
0206 F0CF 0A 0D UFMSG1 FCB $0A,$0D
|
733 |
|
|
0207 F0D1 46 6F 72 6D 61 74 FCC 'Format Complete'
|
734 |
218 |
davidgb |
20 43 6F 6D 70 6C
|
735 |
|
|
65 74 65
|
736 |
221 |
davidgb |
0208 F0E0 04 FCB 4
|
737 |
|
|
0209 F0E1 49 44 45 44 49 53 VOLMSG FCC 'IDEDISK '
|
738 |
218 |
davidgb |
4B 20
|
739 |
221 |
davidgb |
0210 F0E9 04 FCB 4
|
740 |
|
|
0211 *
|
741 |
|
|
0212 F0EA BD F4 BD UFSUB JSR INITDR
|
742 |
|
|
0213 F0ED 8E F0 89 LDX #DISFOS
|
743 |
|
|
0214 F0F0 BD F2 53 JSR PDATA1
|
744 |
|
|
0215 F0F3 17 FF 50 UFSUB1 LBSR RCHAR
|
745 |
|
|
0216 F0F6 24 FB BCC UFSUB1
|
746 |
|
|
0217 F0F8 17 FF 69 LBSR SCHAR
|
747 |
|
|
0218 F0FB 81 30 CMPA #'0'
|
748 |
|
|
0219 F0FD 10 25 00 EF LBLO UFEXIT
|
749 |
|
|
0220 F101 81 33 CMPA #'3'
|
750 |
|
|
0221 F103 10 22 00 E9 LBHI UFEXIT
|
751 |
|
|
0222 F107 80 30 SUBA #'0'
|
752 |
|
|
0223 F109 1F 89 TFR A,B
|
753 |
|
|
0224 F10B F7 01 00 STB DRVNUM
|
754 |
|
|
0225 F10E 8E 00 FD LDX #DRVNUM-3
|
755 |
|
|
0226 F111 BD F5 3A JSR DRVSEL
|
756 |
|
|
0227 *
|
757 |
|
|
0228 * set up free chain
|
758 |
|
|
0229 *
|
759 |
|
|
0230 F114 8E 02 00 LDX #BUFFER clear out buffer
|
760 |
|
|
0231 F117 4F CLRA
|
761 |
|
|
0232 F118 5F CLRB
|
762 |
|
|
0233 F119 A7 80 DFL1 STA 0,X+
|
763 |
|
|
0234 F11B 5A DECB
|
764 |
|
|
0235 F11C 26 FB BNE DFL1
|
765 |
|
|
0236 *
|
766 |
|
|
0237 F11E 7F 01 01 CLR TRACK
|
767 |
|
|
0238 F121 86 01 LDA #1
|
768 |
|
|
0239 F123 B7 01 02 STA SECTOR
|
769 |
|
|
0240 F126 8E 02 00 DFL2 LDX #BUFFER
|
770 |
|
|
0241 F129 B6 01 01 LDA TRACK
|
771 |
|
|
0242 F12C A7 84 STA 0,X
|
772 |
|
|
0243 F12E B6 01 02 LDA SECTOR
|
773 |
|
|
0244 F131 4C INCA
|
774 |
|
|
0245 F132 81 00 CMPA #RMAXSEC+1 last sector on track?
|
775 |
|
|
0246 F134 26 04 BNE DFL3
|
776 |
|
|
0247 F136 6C 84 INC 0,X
|
777 |
|
|
0248 F138 86 01 LDA #1
|
778 |
|
|
0249 F13A A7 01 DFL3 STA 1,X
|
779 |
|
|
0250 F13C B6 01 01 LDA TRACK
|
780 |
|
|
0251 F13F F6 01 02 LDB SECTOR
|
781 |
|
|
0252 F142 BD F5 15 JSR WRITSC
|
782 |
|
|
0253 F145 7C 01 02 INC SECTOR
|
783 |
|
|
0254 F148 B6 01 02 LDA SECTOR
|
784 |
|
|
0255 F14B 81 00 CMPA #RMAXSEC+1
|
785 |
|
|
0256 F14D 26 D7 BNE DFL2
|
786 |
|
|
0257 F14F 86 01 LDA #1
|
787 |
|
|
0258 F151 B7 01 02 STA SECTOR
|
788 |
|
|
0259 F154 7C 01 01 INC TRACK
|
789 |
|
|
0260 F157 B6 01 01 LDA TRACK
|
790 |
|
|
0261 F15A 81 00 CMPA #RMAXTRK
|
791 |
|
|
0262 F15C 26 C8 BNE DFL2
|
792 |
|
|
0263 * break free chain at last track/sector
|
793 |
|
|
0264 F15E 8E 02 00 LDX #BUFFER
|
794 |
|
|
0265 F161 86 FF LDA #RMAXTRK-1
|
795 |
|
|
0266 F163 C6 FF LDB #RMAXSEC
|
796 |
|
|
0267 F165 BD F4 F1 JSR READSC
|
797 |
|
|
0268 F168 8E 02 00 LDX #BUFFER
|
798 |
|
|
0269 F16B 6F 84 CLR 0,X
|
799 |
|
|
0270 F16D 6F 01 CLR 1,X
|
800 |
|
|
0271 F16F 86 FF LDA #RMAXTRK-1
|
801 |
|
|
0272 F171 C6 FF LDB #RMAXSEC
|
802 |
|
|
0273 F173 BD F5 15 JSR WRITSC
|
803 |
|
|
0274 * set up sector structure, SIR, directory etc
|
804 |
|
|
0275 F176 8E 02 00 LDX #BUFFER
|
805 |
|
|
0276 F179 4F CLRA
|
806 |
|
|
0277 F17A C6 FF LDB #RMAXSEC
|
807 |
|
|
0278 F17C BD F4 F1 JSR READSC
|
808 |
|
|
0279 F17F 8E 02 00 LDX #BUFFER
|
809 |
|
|
0280 F182 6F 84 CLR 0,X break end of directory chain
|
810 |
|
|
0281 F184 6F 01 CLR 1,X
|
811 |
|
|
0282 F186 4F CLRA
|
812 |
|
|
0283 F187 C6 FF LDB #RMAXSEC
|
813 |
|
|
0284 F189 BD F5 15 JSR WRITSC
|
814 |
|
|
0285 *
|
815 |
|
|
0286 F18C 8E 02 00 LDX #BUFFER
|
816 |
|
|
0287 F18F 4F CLRA
|
817 |
|
|
0288 F190 C6 03 LDB #3 set up SIR
|
818 |
|
|
0289 F192 BD F4 F1 JSR READSC
|
819 |
|
|
0290 F195 8E 02 00 LDX #BUFFER
|
820 |
|
|
0291 F198 6F 84 CLR 0,X break forward link
|
821 |
|
|
0292 F19A 6F 01 CLR 1,X
|
822 |
|
|
0293 *
|
823 |
|
|
0294 F19C 34 20 PSHS Y
|
824 |
|
|
0295 F19E 10 8E F0 E1 LDY #VOLMSG
|
825 |
|
|
0296 F1A2 C6 10 LDB #16
|
826 |
|
|
0297 F1A4 A6 A0 DFL4 LDA ,Y+
|
827 |
|
|
0298 F1A6 A7 85 STA B,X
|
828 |
|
|
0299 F1A8 5C INCB
|
829 |
|
|
0300 F1A9 C1 18 CMPB #24
|
830 |
|
|
0301 F1AB 26 F7 BNE DFL4
|
831 |
|
|
0302 F1AD 35 20 PULS Y
|
832 |
|
|
0303 *
|
833 |
|
|
0304 F1AF 4F CLRA
|
834 |
|
|
0305 F1B0 F6 01 00 LDB DRVNUM volume number
|
835 |
|
|
0306 F1B3 ED 88 1B STD 27,X
|
836 |
|
|
0307 *
|
837 |
|
|
0308 F1B6 CC 01 01 LDD #$0101 first trk/sec 01-01
|
838 |
|
|
0309 F1B9 ED 88 1D STD 29,X
|
839 |
|
|
0310 F1BC 86 FF LDA #RMAXTRK-1
|
840 |
|
|
0311 F1BE C6 FF LDB #RMAXSEC
|
841 |
|
|
0312 F1C0 ED 88 1F STD 31,X
|
842 |
|
|
0313 F1C3 ED 88 26 STD 38,X
|
843 |
|
|
0314 F1C6 CC FE 01 LDD #RTOTSEC total DATA sectors (2912-14)
|
844 |
|
|
0315 F1C9 ED 88 21 STD 33,X
|
845 |
|
|
0316 *
|
846 |
|
|
0317 F1CC 86 01 LDA #01 month set default creation date (SYS09's birthday!)
|
847 |
|
|
0318 F1CE A7 88 23 STA 35,X
|
848 |
|
|
0319 F1D1 86 07 LDA #07 day
|
849 |
|
|
0320 F1D3 A7 88 24 STA 36,X
|
850 |
|
|
0321 F1D6 86 07 LDA #07 year
|
851 |
|
|
0322 F1D8 A7 88 25 STA 37,X
|
852 |
|
|
0323 *
|
853 |
|
|
0324 F1DB 4F RF3 CLRA
|
854 |
|
|
0325 F1DC C6 03 LDB #3
|
855 |
|
|
0326 F1DE BD F5 15 JSR WRITSC
|
856 |
|
|
0327 *
|
857 |
|
|
0328 * Not sure what this is about
|
858 |
|
|
0329 * put bootstrap on track 0 sector 1
|
859 |
|
|
0330 *
|
860 |
|
|
0331 * LDX #BUFFER
|
861 |
|
|
0332 * CLRA
|
862 |
|
|
0333 * LDB #1
|
863 |
|
|
0334 * JSR READSC
|
864 |
|
|
0335 * LDX #BUFFER
|
865 |
|
|
0336 * LDA #$AA set the init flag
|
866 |
|
|
0337 * STA 0,X
|
867 |
|
|
0338 * LDA #$55
|
868 |
|
|
0339 * STA 1,X
|
869 |
|
|
0340 * CLRA
|
870 |
|
|
0341 * LDB #1
|
871 |
|
|
0342 * JSR WRITSC
|
872 |
|
|
0343 *
|
873 |
|
|
0344 * Write Boot sector
|
874 |
|
|
0345 *
|
875 |
|
|
0346 F1E1 8E F7 00 LDX #BOOT
|
876 |
|
|
0347 F1E4 4F CLRA TRACK 0
|
877 |
|
|
0348 F1E5 C6 01 LDB #$01 SECTOR 1
|
878 |
|
|
0349 F1E7 B7 01 01 STA TRACK
|
879 |
|
|
0350 F1EA F7 01 02 STB SECTOR
|
880 |
|
|
0351 F1ED 17 03 25 LBSR WRITSC
|
881 |
|
|
0352 *
|
882 |
|
|
0353 F1F0 8E F0 CF UFEXIT LDX #UFMSG1
|
883 |
|
|
0354 F1F3 7E F2 53 JMP PDATA1
|
884 |
|
|
0355 *
|
885 |
|
|
0356 * ACIA INPUT TEST
|
886 |
|
|
0357 *
|
887 |
|
|
0358 F1F6 B6 E0 00 INTEST LDA ACIAC1
|
888 |
|
|
0359 F1F9 85 01 BITA #$01
|
889 |
|
|
0360 F1FB 39 RTS
|
890 |
|
|
0361 *
|
891 |
|
|
0362 * RESET ACIA
|
892 |
|
|
0363 *
|
893 |
|
|
0364 F1FC 86 03 ACIRST LDA #$03 master reset
|
894 |
|
|
0365 F1FE B7 E0 00 STA ACIAC1
|
895 |
|
|
0366 F201 86 11 LDA #$11
|
896 |
|
|
0367 F203 B7 E0 00 STA ACIAC1
|
897 |
|
|
0368 F206 39 RTS
|
898 |
|
|
0369 *
|
899 |
|
|
0370 * ACIA INPUT
|
900 |
|
|
0371 *
|
901 |
|
|
0372 F207 86 10 INTER LDA #16
|
902 |
|
|
0373 F209 B7 01 08 STA DELCNT+0
|
903 |
|
|
0374 F20C 7F 01 09 CLR DELCNT+1
|
904 |
|
|
0375 F20F 7F 01 0A CLR DELCNT+2
|
905 |
|
|
0376 F212 B6 E0 00 INTER0 LDA ACIAC1
|
906 |
|
|
0377 F215 85 01 BITA #$01
|
907 |
|
|
0378 F217 26 08 BNE INTER1
|
908 |
|
|
0379 F219 85 78 BITA #$78
|
909 |
|
|
0380 F21B 27 0A BEQ INTER2
|
910 |
|
|
0381 F21D 8D DD BSR ACIRST
|
911 |
|
|
0382 F21F 20 E6 BRA INTER
|
912 |
|
|
0383 *
|
913 |
|
|
0384 F221 B6 E0 01 INTER1 LDA ACIAD1
|
914 |
|
|
0385 F224 1C FD ANDCC #$FF-VFLAG
|
915 |
|
|
0386 F226 39 RTS
|
916 |
|
|
0387 *
|
917 |
|
|
0388 F227 7A 01 0A INTER2 DEC DELCNT+2
|
918 |
|
|
0389 F22A 26 E6 BNE INTER0
|
919 |
|
|
0390 F22C 7A 01 09 DEC DELCNT+1
|
920 |
|
|
0391 F22F 26 E1 BNE INTER0
|
921 |
|
|
0392 F231 7A 01 08 DEC DELCNT+0
|
922 |
|
|
0393 F234 26 DC BNE INTER0
|
923 |
|
|
0394 F236 4F CLRA
|
924 |
|
|
0395 F237 1A 02 ORCC #VFLAG
|
925 |
|
|
0396 F239 39 RTS
|
926 |
|
|
0397 *
|
927 |
|
|
0398 * ACIA OUTPUT
|
928 |
|
|
0399 *
|
929 |
|
|
0400 F23A 34 02 OUTTER PSHS A
|
930 |
|
|
0401 *
|
931 |
|
|
0402 F23C B6 E0 00 OUTTE1 LDA ACIAC1
|
932 |
|
|
0403 F23F 85 02 BITA #$02
|
933 |
|
|
0404 F241 26 08 BNE OUTTE2
|
934 |
|
|
0405 F243 85 78 BITA #$78
|
935 |
|
|
0406 F245 27 F5 BEQ OUTTE1
|
936 |
|
|
0407 F247 8D B3 BSR ACIRST
|
937 |
|
|
0408 F249 20 F1 BRA OUTTE1
|
938 |
|
|
0409 *
|
939 |
|
|
0410 F24B 35 02 OUTTE2 PULS A
|
940 |
|
|
0411 F24D B7 E0 01 STA ACIAD1
|
941 |
|
|
0412 F250 39 RTS
|
942 |
|
|
0413 *
|
943 |
|
|
0414 * Print Data
|
944 |
|
|
0415 *
|
945 |
|
|
0416 F251 8D E7 PDATA0 BSR OUTTER
|
946 |
|
|
0417 F253 A6 80 PDATA1 LDA ,X+
|
947 |
|
|
0418 F255 81 04 CMPA #$04
|
948 |
|
|
0419 F257 26 F8 BNE PDATA0
|
949 |
|
|
0420 F259 39 RTS
|
950 |
|
|
0421 *
|
951 |
218 |
davidgb |
0422 *
|
952 |
221 |
davidgb |
0423 ** 'UX' Xmodem IDE Disk upload
|
953 |
|
|
0424 *
|
954 |
|
|
0425 F25A 0D 0A UXMES0 FCB $0D,$0A
|
955 |
|
|
0426 F25C 58 6D 6F 64 65 6D FCC 'Xmodem IDE Disk Upload'
|
956 |
218 |
davidgb |
20 49 44 45 20 44
|
957 |
|
|
69 73 6B 20 55 70
|
958 |
|
|
6C 6F 61 64
|
959 |
221 |
davidgb |
0427 F272 04 FCB 4
|
960 |
|
|
0428 F273 0D 0A UXMES1 FCB $0D,$0A
|
961 |
|
|
0429 F275 55 70 6C 6F 61 64 FCC 'Upload Complete'
|
962 |
218 |
davidgb |
20 43 6F 6D 70 6C
|
963 |
|
|
65 74 65
|
964 |
221 |
davidgb |
0430 F284 04 FCB 4
|
965 |
|
|
0431 F285 0D 0A UXMES2 FCB $0D,$0A
|
966 |
|
|
0432 F287 55 70 6C 6F 61 64 FCC 'Upload Error'
|
967 |
218 |
davidgb |
20 45 72 72 6F 72
|
968 |
221 |
davidgb |
0433 F293 04 FCB 4
|
969 |
|
|
0434 F294 0D 0A UXMSG3 FCB $0D,$0A
|
970 |
|
|
0435 F296 44 72 69 76 65 20 FCC 'Drive Number :'
|
971 |
218 |
davidgb |
4E 75 6D 62 65 72
|
972 |
|
|
20 3A
|
973 |
221 |
davidgb |
0436 F2A4 04 FCB 4
|
974 |
|
|
0437 F2A5 0D 0A UXMSG4 FCB $0D,$0A
|
975 |
|
|
0438 F2A7 41 72 65 20 59 6F FCC 'Are You Sure ? (Y/N)'
|
976 |
218 |
davidgb |
75 20 53 75 72 65
|
977 |
|
|
20 3F 20 28 59 2F
|
978 |
|
|
4E 29
|
979 |
221 |
davidgb |
0439 F2BB 04 FCB 4
|
980 |
|
|
0440 *
|
981 |
|
|
0441 * Print Banner
|
982 |
|
|
0442 *
|
983 |
|
|
0443 F2BC 8E F2 5A UXSUB LDX #UXMES0
|
984 |
|
|
0444 F2BF 17 FF 91 LBSR PDATA1
|
985 |
|
|
0445 *
|
986 |
|
|
0446 * Prompt for Disk drive number (0 to 3)
|
987 |
|
|
0447 *
|
988 |
|
|
0448 F2C2 8E F2 94 LDX #UXMSG3
|
989 |
|
|
0449 F2C5 17 FF 8B LBSR PDATA1
|
990 |
|
|
0450 F2C8 17 FF 3C UXSUB1 LBSR INTER
|
991 |
|
|
0451 F2CB 29 FB BVS UXSUB1
|
992 |
|
|
0452 F2CD 17 FF 6A LBSR OUTTER
|
993 |
|
|
0453 F2D0 81 30 CMPA #'0
|
994 |
|
|
0454 F2D2 10 25 01 2E LBLO UXEXIT
|
995 |
|
|
0455 F2D6 81 33 CMPA #'3
|
996 |
|
|
0456 F2D8 10 22 01 28 LBHI UXEXIT
|
997 |
|
|
0457 F2DC 80 30 SUBA #'0
|
998 |
|
|
0458 F2DE B7 01 00 STA DRVNUM
|
999 |
|
|
0459 *
|
1000 |
|
|
0460 * Report selected drive
|
1001 |
|
|
0461 *
|
1002 |
|
|
0462 F2E1 8E F2 94 LDX #UXMSG3
|
1003 |
|
|
0463 F2E4 17 FF 6C LBSR PDATA1
|
1004 |
|
|
0464 F2E7 B6 01 00 LDA DRVNUM
|
1005 |
|
|
0465 F2EA 8B 30 ADDA #'0
|
1006 |
|
|
0466 F2EC 17 FF 4B LBSR OUTTER
|
1007 |
|
|
0467 *
|
1008 |
|
|
0468 * Ask for confirmation (Y/N)
|
1009 |
|
|
0469 *
|
1010 |
|
|
0470 F2EF 8E F2 A5 LDX #UXMSG4
|
1011 |
|
|
0471 F2F2 17 FF 5E LBSR PDATA1
|
1012 |
|
|
0472 F2F5 17 FF 0F UXSUB2 LBSR INTER
|
1013 |
|
|
0473 F2F8 29 FB BVS UXSUB2
|
1014 |
|
|
0474 F2FA 17 FF 3D LBSR OUTTER
|
1015 |
|
|
0475 F2FD 84 5F ANDA #$5F
|
1016 |
|
|
0476 F2FF 81 4E CMPA #'N
|
1017 |
|
|
0477 F301 10 27 00 FF LBEQ UXEXIT
|
1018 |
|
|
0478 F305 81 59 CMPA #'Y
|
1019 |
|
|
0479 F307 26 B3 BNE UXSUB
|
1020 |
|
|
0480 *
|
1021 |
|
|
0481 * We have confirmation ... now load the disk image
|
1022 |
|
|
0482 *
|
1023 |
|
|
0483 F309 17 01 B1 LBSR INITDR
|
1024 |
|
|
0484 F30C CE F4 2D LDU #XSTST
|
1025 |
|
|
0485 F30F FF 01 06 STU XSTATE
|
1026 |
|
|
0486 F312 86 01 LDA #1
|
1027 |
|
|
0487 F314 B7 01 04 STA BLKNUM
|
1028 |
|
|
0488 *
|
1029 |
|
|
0489 * Sector1
|
1030 |
|
|
0490 *
|
1031 |
|
|
0491 F317 8E 02 00 LDX #BUFFER
|
1032 |
|
|
0492 *
|
1033 |
|
|
0493 F31A 4F CLRA TRACK 0
|
1034 |
|
|
0494 F31B C6 01 LDB #$01 SECTOR 1
|
1035 |
|
|
0495 F31D B7 01 01 STA TRACK
|
1036 |
|
|
0496 F320 F7 01 02 STB SECTOR
|
1037 |
|
|
0497 *
|
1038 |
|
|
0498 F323 17 00 EA LBSR XREAD
|
1039 |
|
|
0499 F326 10 25 00 E0 LBCS UXERR
|
1040 |
|
|
0500 F32A 17 01 87 LBSR XACK
|
1041 |
|
|
0501 F32D 17 00 E0 LBSR XREAD
|
1042 |
|
|
0502 F330 10 25 00 D6 LBCS UXERR
|
1043 |
|
|
0503 *
|
1044 |
|
|
0504 F334 8E 02 00 LDX #BUFFER
|
1045 |
|
|
0505 F337 B6 01 01 LDA TRACK
|
1046 |
|
|
0506 F33A F6 01 02 LDB SECTOR
|
1047 |
|
|
0507 F33D 17 01 D5 LBSR WRITSC
|
1048 |
|
|
0508 F340 17 01 71 LBSR XACK
|
1049 |
|
|
0509 *
|
1050 |
|
|
0510 * Sector 2
|
1051 |
|
|
0511 *
|
1052 |
|
|
0512 F343 8E 02 00 LDX #BUFFER
|
1053 |
|
|
0513 *
|
1054 |
|
|
0514 F346 B6 01 01 LDA TRACK
|
1055 |
|
|
0515 F349 F6 01 02 LDB SECTOR
|
1056 |
|
|
0516 F34C 5C INCB
|
1057 |
|
|
0517 F34D B7 01 01 STA TRACK
|
1058 |
|
|
0518 F350 F7 01 02 STB SECTOR
|
1059 |
|
|
0519 *
|
1060 |
|
|
0520 F353 17 00 BA LBSR XREAD
|
1061 |
|
|
0521 F356 10 25 00 B0 LBCS UXERR
|
1062 |
|
|
0522 F35A 17 01 57 LBSR XACK
|
1063 |
|
|
0523 F35D 17 00 B0 LBSR XREAD
|
1064 |
|
|
0524 F360 10 25 00 A6 LBCS UXERR
|
1065 |
|
|
0525 *
|
1066 |
|
|
0526 F364 8E 02 00 LDX #BUFFER
|
1067 |
|
|
0527 F367 B6 01 01 LDA TRACK
|
1068 |
|
|
0528 F36A F6 01 02 LDB SECTOR
|
1069 |
|
|
0529 F36D 17 01 A5 LBSR WRITSC
|
1070 |
|
|
0530 *
|
1071 |
|
|
0531 F370 17 01 41 LBSR XACK
|
1072 |
|
|
0532 *
|
1073 |
|
|
0533 * Sector 3 - SIR
|
1074 |
|
|
0534 *
|
1075 |
|
|
0535 F373 8E 02 00 LDX #BUFFER
|
1076 |
|
|
0536 *
|
1077 |
|
|
0537 F376 B6 01 01 LDA TRACK
|
1078 |
|
|
0538 F379 F6 01 02 LDB SECTOR
|
1079 |
|
|
0539 F37C 5C INCB
|
1080 |
|
|
0540 F37D B7 01 01 STA TRACK
|
1081 |
|
|
0541 F380 F7 01 02 STB SECTOR
|
1082 |
|
|
0542 *
|
1083 |
|
|
0543 F383 17 00 8A LBSR XREAD
|
1084 |
|
|
0544 F386 10 25 00 80 LBCS UXERR
|
1085 |
|
|
0545 F38A 17 01 27 LBSR XACK
|
1086 |
|
|
0546 F38D 17 00 80 LBSR XREAD
|
1087 |
|
|
0547 F390 10 25 00 76 LBCS UXERR
|
1088 |
|
|
0548 *
|
1089 |
|
|
0549 F394 8E 02 00 LDX #BUFFER
|
1090 |
|
|
0550 F397 A6 88 26 LDA 38,X
|
1091 |
|
|
0551 F39A 4C INCA
|
1092 |
|
|
0552 F39B B7 01 0B STA MAXTRK
|
1093 |
|
|
0553 F39E E6 88 27 LDB 39,X
|
1094 |
|
|
0554 F3A1 5C INCB
|
1095 |
|
|
0555 F3A2 F7 01 0C STB MAXSEC
|
1096 |
|
|
0556 F3A5 B6 01 01 LDA TRACK
|
1097 |
|
|
0557 F3A8 F6 01 02 LDB SECTOR
|
1098 |
|
|
0558 F3AB 17 01 67 LBSR WRITSC
|
1099 |
|
|
0559 *
|
1100 |
|
|
0560 F3AE 17 01 03 LBSR XACK
|
1101 |
|
|
0561 *
|
1102 |
|
|
0562 * Sector 4 to Last Track & Sector
|
1103 |
|
|
0563 *
|
1104 |
218 |
davidgb |
0564 *
|
1105 |
221 |
davidgb |
0565 F3B1 B6 01 01 LDA TRACK
|
1106 |
|
|
0566 F3B4 F6 01 02 LDB SECTOR
|
1107 |
|
|
0567 F3B7 5C INCB
|
1108 |
|
|
0568 *
|
1109 |
|
|
0569 F3B8 8E 02 00 UXLOOP LDX #BUFFER
|
1110 |
|
|
0570 F3BB B7 01 01 STA TRACK
|
1111 |
|
|
0571 F3BE F7 01 02 STB SECTOR
|
1112 |
|
|
0572 *
|
1113 |
|
|
0573 F3C1 17 00 4C LBSR XREAD
|
1114 |
|
|
0574 F3C4 10 25 00 42 LBCS UXERR
|
1115 |
|
|
0575 F3C8 17 00 E9 LBSR XACK
|
1116 |
|
|
0576 F3CB 17 00 42 LBSR XREAD
|
1117 |
|
|
0577 F3CE 10 25 00 38 LBCS UXERR
|
1118 |
|
|
0578 *
|
1119 |
|
|
0579 F3D2 8E 02 00 LDX #BUFFER
|
1120 |
|
|
0580 F3D5 B6 01 01 LDA TRACK
|
1121 |
|
|
0581 F3D8 F6 01 02 LDB SECTOR
|
1122 |
|
|
0582 F3DB 17 01 37 LBSR WRITSC
|
1123 |
|
|
0583 F3DE 17 00 D3 LBSR XACK
|
1124 |
|
|
0584 *
|
1125 |
|
|
0585 F3E1 B6 01 01 LDA TRACK
|
1126 |
|
|
0586 F3E4 F6 01 02 LDB SECTOR
|
1127 |
|
|
0587 F3E7 5C INCB
|
1128 |
|
|
0588 F3E8 F1 01 0C CMPB MAXSEC
|
1129 |
|
|
0589 F3EB 26 CB BNE UXLOOP
|
1130 |
|
|
0590 F3ED C6 01 LDB #1
|
1131 |
|
|
0591 F3EF 4C INCA
|
1132 |
|
|
0592 F3F0 B1 01 0B CMPA MAXTRK
|
1133 |
|
|
0593 F3F3 26 C3 BNE UXLOOP
|
1134 |
|
|
0594 *
|
1135 |
218 |
davidgb |
0595 *
|
1136 |
221 |
davidgb |
0596 * Write Boot sector
|
1137 |
|
|
0597 *
|
1138 |
|
|
0598 F3F5 8E F7 00 LDX #BOOT
|
1139 |
|
|
0599 F3F8 4F CLRA TRACK 0
|
1140 |
|
|
0600 F3F9 C6 01 LDB #$01 SECTOR 1
|
1141 |
|
|
0601 F3FB B7 01 01 STA TRACK
|
1142 |
|
|
0602 F3FE F7 01 02 STB SECTOR
|
1143 |
|
|
0603 F401 17 01 11 LBSR WRITSC
|
1144 |
|
|
0604 *
|
1145 |
|
|
0605 F404 8E F2 73 UXEXIT LDX #UXMES1
|
1146 |
|
|
0606 F407 7E F2 53 JMP PDATA1
|
1147 |
|
|
0607 *
|
1148 |
|
|
0608 F40A 8E F2 85 UXERR LDX #UXMES2
|
1149 |
|
|
0609 F40D 16 FE 43 LBRA PDATA1
|
1150 |
|
|
0610 *
|
1151 |
|
|
0611 * Get a Byte using XModem protocol
|
1152 |
|
|
0612 * Carry clear => no errors
|
1153 |
|
|
0613 * Carry set => errors
|
1154 |
|
|
0614 *
|
1155 |
|
|
0615 F410 34 40 XREAD PSHS U
|
1156 |
|
|
0616 F412 FE 01 06 LDU XSTATE
|
1157 |
|
|
0617 *
|
1158 |
|
|
0618 F415 17 FD EF XBYTE0 LBSR INTER
|
1159 |
|
|
0619 F418 28 0A BVC XBYTE1
|
1160 |
|
|
0620 F41A 86 15 LDA #NAK
|
1161 |
|
|
0621 F41C 17 FE 1B LBSR OUTTER
|
1162 |
|
|
0622 F41F CE F4 2D LDU #XSTST
|
1163 |
|
|
0623 F422 20 F1 BRA XBYTE0
|
1164 |
|
|
0624 *
|
1165 |
|
|
0625 F424 AD C4 XBYTE1 JSR ,U
|
1166 |
|
|
0626 F426 26 ED BNE XBYTE0
|
1167 |
|
|
0627 F428 FF 01 06 STU XSTATE
|
1168 |
|
|
0628 F42B 35 C0 PULS U,PC
|
1169 |
|
|
0629 *
|
1170 |
|
|
0630 * START - LOOK FOR SOH (START OF HEADER) = $01
|
1171 |
|
|
0631 *
|
1172 |
|
|
0632 F42D 81 01 XSTST CMPA #SOH
|
1173 |
|
|
0633 F42F 26 06 BNE XSTST1
|
1174 |
|
|
0634 F431 CE F4 4D LDU #XSTBL
|
1175 |
|
|
0635 F434 1C FA ANDCC #$FF-CFLAG-ZFLAG No abort, no valid data (no exit)
|
1176 |
|
|
0636 F436 39 RTS
|
1177 |
|
|
0637 *
|
1178 |
|
|
0638 F437 81 04 XSTST1 CMPA #EOT
|
1179 |
|
|
0639 F439 26 08 BNE XSTST2
|
1180 |
|
|
0640 F43B 86 06 LDA #ACK
|
1181 |
|
|
0641 F43D 17 FD FA LBSR OUTTER
|
1182 |
|
|
0642 F440 1A 05 ORCC #CFLAG+ZFLAG Set (c)=1 abort & exit
|
1183 |
|
|
0643 F442 39 RTS
|
1184 |
|
|
0644 *
|
1185 |
|
|
0645 F443 81 18 XSTST2 CMPA #CAN
|
1186 |
|
|
0646 F445 26 03 BNE XSTST3
|
1187 |
|
|
0647 F447 1A 05 ORCC #CFLAG+ZFLAG Set (c)=1 abort & exit
|
1188 |
|
|
0648 F449 39 RTS
|
1189 |
|
|
0649 *
|
1190 |
|
|
0650 F44A 1C FA XSTST3 ANDCC #$FF-CFLAG-ZFLAG
|
1191 |
|
|
0651 F44C 39 RTS
|
1192 |
|
|
0652 *
|
1193 |
|
|
0653 * Got SOH
|
1194 |
|
|
0654 * Now get block number
|
1195 |
|
|
0655 *
|
1196 |
|
|
0656 F44D B1 01 04 XSTBL CMPA BLKNUM
|
1197 |
|
|
0657 F450 26 06 BNE XSTBLE
|
1198 |
|
|
0658 F452 CE F4 63 LDU #XSTCOM
|
1199 |
|
|
0659 F455 1C FA ANDCC #$FF-CFLAG-ZFLAG No abort, No valid data (no exit)
|
1200 |
|
|
0660 F457 39 RTS
|
1201 |
|
|
0661 *
|
1202 |
|
|
0662 * Error in block number
|
1203 |
|
|
0663 *
|
1204 |
|
|
0664 F458 86 15 XSTBLE LDA #NAK
|
1205 |
|
|
0665 F45A 17 FD DD LBSR OUTTER
|
1206 |
|
|
0666 F45D CE F4 2D LDU #XSTST
|
1207 |
|
|
0667 F460 1C FA ANDCC #$FF-CFLAG-ZFLAG No abort, No valid data (no exit)
|
1208 |
|
|
0668 F462 39 RTS
|
1209 |
|
|
0669 *
|
1210 |
|
|
0670 * Get complement of block number
|
1211 |
|
|
0671 *
|
1212 |
|
|
0672 F463 43 XSTCOM COMA
|
1213 |
|
|
0673 F464 B1 01 04 CMPA BLKNUM
|
1214 |
|
|
0674 F467 26 EF BNE XSTBLE
|
1215 |
|
|
0675 F469 7F 01 03 CLR CHKSUM
|
1216 |
|
|
0676 F46C 86 80 LDA #128
|
1217 |
|
|
0677 F46E B7 01 05 STA BYTCNT
|
1218 |
|
|
0678 F471 CE F4 77 LDU #XSTDA
|
1219 |
|
|
0679 F474 1C FA ANDCC #$FF-CFLAG-ZFLAG No abort, No valid data (no exit)
|
1220 |
|
|
0680 F476 39 RTS
|
1221 |
|
|
0681 *
|
1222 |
|
|
0682 * Get data bytes
|
1223 |
|
|
0683 *
|
1224 |
|
|
0684 F477 34 02 XSTDA PSHS A
|
1225 |
|
|
0685 F479 BB 01 03 ADDA CHKSUM
|
1226 |
|
|
0686 F47C B7 01 03 STA CHKSUM
|
1227 |
|
|
0687 F47F 35 02 PULS A
|
1228 |
|
|
0688 F481 7A 01 05 DEC BYTCNT
|
1229 |
|
|
0689 F484 26 03 BNE XSTDA1
|
1230 |
|
|
0690 F486 CE F4 8E LDU #XSTCK
|
1231 |
|
|
0691 F489 A7 80 XSTDA1 STA ,X+
|
1232 |
|
|
0692 F48B 1C FA ANDCC #$FF-CFLAG-ZFLAG No abort, no valid data (no exit)
|
1233 |
|
|
0693 F48D 39 RTS
|
1234 |
|
|
0694 *
|
1235 |
|
|
0695 * Byte count reached zero
|
1236 |
|
|
0696 * Check checksum byte
|
1237 |
|
|
0697 *
|
1238 |
|
|
0698 F48E B1 01 03 XSTCK CMPA CHKSUM
|
1239 |
|
|
0699 F491 26 0B BNE XSTCK1 retry if wrong checksum
|
1240 |
|
|
0700 *
|
1241 |
|
|
0701 * Checksum OK ...
|
1242 |
|
|
0702 * increment block number
|
1243 |
|
|
0703 * Don't send ACK until data written to CF
|
1244 |
|
|
0704 *
|
1245 |
|
|
0705 F493 7C 01 04 INC BLKNUM
|
1246 |
|
|
0706 F496 CE F4 2D LDU #XSTST
|
1247 |
|
|
0707 F499 1C FE ANDCC #$FF-CFLAG No abort
|
1248 |
|
|
0708 F49B 1A 04 ORCC #ZFLAG Valid data (exit)
|
1249 |
|
|
0709 F49D 39 RTS
|
1250 |
|
|
0710 *
|
1251 |
|
|
0711 * Checksum Error detected ...
|
1252 |
|
|
0712 * Reset Sector counter in ACCB to last 128 byte boundary
|
1253 |
|
|
0713 * and send NAK
|
1254 |
|
|
0714 *
|
1255 |
|
|
0715 F49E 34 04 XSTCK1 PSHS B
|
1256 |
|
|
0716 F4A0 1F 10 TFR X,D
|
1257 |
|
|
0717 F4A2 5A DECB
|
1258 |
|
|
0718 F4A3 C4 80 ANDB #128
|
1259 |
|
|
0719 F4A5 1F 01 TFR D,X
|
1260 |
|
|
0720 F4A7 35 04 PULS B
|
1261 |
|
|
0721 F4A9 86 15 LDA #NAK
|
1262 |
|
|
0722 F4AB 17 FD 8C XSTCK2 LBSR OUTTER
|
1263 |
|
|
0723 F4AE CE F4 2D LDU #XSTST
|
1264 |
|
|
0724 F4B1 1C FA ANDCC #$FF-CFLAG-ZFLAG No abort, no valid data (no exit)
|
1265 |
|
|
0725 F4B3 39 RTS
|
1266 |
|
|
0726 *
|
1267 |
|
|
0727 * Acknowledge Data Received
|
1268 |
|
|
0728 *
|
1269 |
|
|
0729 F4B4 34 02 XACK PSHS A
|
1270 |
|
|
0730 F4B6 86 06 LDA #ACK
|
1271 |
|
|
0731 F4B8 17 FD 7F LBSR OUTTER
|
1272 |
|
|
0732 F4BB 35 82 PULS A,PC
|
1273 |
|
|
0733 *
|
1274 |
218 |
davidgb |
0734 *
|
1275 |
221 |
davidgb |
0735 ** FLEX 9 IDE DISK DRIVERS
|
1276 |
|
|
0736 *
|
1277 |
|
|
0737 * FOR SYS09BUG 1.2 ON THE XSA-3S1000
|
1278 |
|
|
0738 * WITH I/O MAPPED AT $XE000
|
1279 |
|
|
0739 * AND ROM MAPPED AT $XF000
|
1280 |
|
|
0740 *
|
1281 |
218 |
davidgb |
0741 *
|
1282 |
221 |
davidgb |
0742 * INITIALIZE CF CARD FOR 8 BIT LBA MODE
|
1283 |
|
|
0743 *
|
1284 |
|
|
0744 F4BD CC 00 06 INITDR LDD #AUXRESET
|
1285 |
|
|
0745 F4C0 FD E1 1E STD CF_AUX
|
1286 |
|
|
0746 F4C3 CC 00 02 LDD #AUXRSTREL
|
1287 |
|
|
0747 F4C6 FD E1 1E STD CF_AUX
|
1288 |
|
|
0748 F4C9 CC 00 E0 LDD #HEADLBA
|
1289 |
|
|
0749 F4CC FD E1 0C STD CF_HEAD
|
1290 |
|
|
0750 F4CF 16 02 D6 LBRA WTRDY
|
1291 |
|
|
0751 *
|
1292 |
|
|
0752 * RESTORE DISK DRIVER (SEEK TRACK 00)
|
1293 |
|
|
0753 *
|
1294 |
|
|
0754 F4D2 8D 66 RESTR1 BSR DRVSEL
|
1295 |
|
|
0755 F4D4 4F CLRA ; Track 0
|
1296 |
|
|
0756 F4D5 C6 01 LDB #$01 ; Sector 1
|
1297 |
|
|
0757 *
|
1298 |
|
|
0758 * Seek track and sector
|
1299 |
|
|
0759 * A holds track number (0 - ??)
|
1300 |
|
|
0760 * B holds sector number (1 - ??)
|
1301 |
|
|
0761 * Sector numbers starts from 1
|
1302 |
|
|
0762 * subtract 1 to start from sector 0 on CF
|
1303 |
|
|
0763 *
|
1304 |
|
|
0764 F4D7 34 02 SEEKTS PSHS A
|
1305 |
|
|
0765 F4D9 4F CLRA
|
1306 |
|
|
0766 F4DA 5A DECB
|
1307 |
|
|
0767 F4DB FD E1 06 STD CF_SECNUM
|
1308 |
|
|
0768 F4DE E6 E4 LDB ,S
|
1309 |
|
|
0769 F4E0 FD E1 08 STD CF_CYLLO
|
1310 |
|
|
0770 F4E3 F6 01 00 LDB DRVNUM
|
1311 |
|
|
0771 F4E6 FD E1 0A STD CF_CYLHI
|
1312 |
|
|
0772 F4E9 C6 01 LDB #$01
|
1313 |
|
|
0773 F4EB FD E1 04 STD CF_SECCNT
|
1314 |
|
|
0774 F4EE 5F CLRB
|
1315 |
|
|
0775 F4EF 35 82 PULS A,PC
|
1316 |
|
|
0776 *
|
1317 |
|
|
0777 * READ SECTORS FROM CF
|
1318 |
|
|
0778 *
|
1319 |
218 |
davidgb |
0779 *
|
1320 |
221 |
davidgb |
0780 F4F1 8D E4 READSC BSR SEEKTS
|
1321 |
|
|
0781 F4F3 CC 00 20 LDD #CMDREAD ; IDE READ MULTIPLE
|
1322 |
|
|
0782 F4F6 FD E1 0E STD CF_COMAND
|
1323 |
|
|
0783 F4F9 17 02 AC LBSR WTRDY
|
1324 |
|
|
0784 *
|
1325 |
|
|
0785 * READ LOOP
|
1326 |
|
|
0786 *
|
1327 |
|
|
0787 F4FC 34 20 PSHS Y
|
1328 |
|
|
0788 F4FE 10 8E 01 00 LDY #256
|
1329 |
|
|
0789 F502 17 02 B2 RDLP1 LBSR WTDRQ
|
1330 |
|
|
0790 F505 FC E1 00 LDD CF_DATA
|
1331 |
|
|
0791 F508 E7 80 STB ,X+
|
1332 |
|
|
0792 F50A 31 3F LEAY -1,Y
|
1333 |
|
|
0793 F50C 26 F4 BNE RDLP1
|
1334 |
|
|
0794 F50E 35 20 PULS Y
|
1335 |
|
|
0795 *
|
1336 |
|
|
0796 F510 17 02 95 LBSR WTRDY
|
1337 |
|
|
0797 F513 5F CLRB
|
1338 |
|
|
0798 F514 39 RTS
|
1339 |
|
|
0799 *
|
1340 |
|
|
0800 * WRITE SECTOR TO CF
|
1341 |
|
|
0801 *
|
1342 |
|
|
0802 F515 8D C0 WRITSC BSR SEEKTS ; SEEK TRACK & SECTOR
|
1343 |
|
|
0803 F517 CC 00 30 LDD #CMDWRITE ; IDE WRITE MULTIPLE
|
1344 |
|
|
0804 F51A FD E1 0E STD CF_COMAND
|
1345 |
|
|
0805 F51D 17 02 88 LBSR WTRDY
|
1346 |
|
|
0806 *
|
1347 |
|
|
0807 * WRITE LOOP
|
1348 |
|
|
0808 *
|
1349 |
|
|
0809 F520 34 20 PSHS Y
|
1350 |
|
|
0810 F522 10 8E 01 00 LDY #256
|
1351 |
|
|
0811 F526 4F CLRA
|
1352 |
|
|
0812 F527 17 02 8D WRTLP1 LBSR WTDRQ
|
1353 |
|
|
0813 F52A E6 80 LDB ,X+
|
1354 |
|
|
0814 F52C FD E1 00 STD CF_DATA
|
1355 |
|
|
0815 F52F 31 3F LEAY -1,Y
|
1356 |
|
|
0816 F531 26 F4 BNE WRTLP1
|
1357 |
|
|
0817 F533 35 20 PULS Y
|
1358 |
|
|
0818 *
|
1359 |
|
|
0819 F535 17 02 70 LBSR WTRDY
|
1360 |
|
|
0820 F538 5F CLRB
|
1361 |
|
|
0821 F539 39 RTS
|
1362 |
|
|
0822 *
|
1363 |
|
|
0823 * DRIVE SELECT DISK DRIVER
|
1364 |
|
|
0824 *
|
1365 |
|
|
0825 F53A A6 03 DRVSEL LDA 3,X GET DRIVE # FROM FCB
|
1366 |
|
|
0826 F53C 81 03 CMPA #3
|
1367 |
|
|
0827 F53E 23 01 BLS DRVS2 IF > 3, SET IT TO 0
|
1368 |
|
|
0828 F540 4F CLRA
|
1369 |
|
|
0829 F541 B7 01 00 DRVS2 STA DRVNUM
|
1370 |
|
|
0830 F544 5F CLRB ; SET Z, CLEAR C
|
1371 |
|
|
0831 F545 39 RTS
|
1372 |
|
|
0832 *
|
1373 |
|
|
0833 * CHECK DRIVE READY DISK DRIVER
|
1374 |
|
|
0834 *
|
1375 |
|
|
0835 F546 A6 03 CHKDRV LDA 3,X
|
1376 |
|
|
0836 F548 5F CLRB ; CLEAR C, SET Z
|
1377 |
|
|
0837 F549 39 RTS
|
1378 |
|
|
0838 *******************************************************
|
1379 |
|
|
0839 *
|
1380 |
|
|
0840 * Bootstrap FLEX Loader
|
1381 |
|
|
0841 *
|
1382 |
|
|
0842 * SBUG1.8 loads the bootstap loader at $C000
|
1383 |
|
|
0843 * however the Flex adaption manual has the
|
1384 |
|
|
0844 * bootstrap loader residing at $C100
|
1385 |
|
|
0845 * Bootstrap Loader is position independent code
|
1386 |
|
|
0846 *
|
1387 |
|
|
0847 ******************************************************
|
1388 |
|
|
0848 *
|
1389 |
|
|
0849 * Equates
|
1390 |
|
|
0850 *
|
1391 |
|
|
0851 C0FF BSSTACK EQU $C0FF
|
1392 |
|
|
0852 C300 SCTBUF EQU $C300
|
1393 |
|
|
0853 *
|
1394 |
|
|
0854 * Start of Utility
|
1395 |
|
|
0855 *
|
1396 |
|
|
0856 F700 ORG MONEXT+$0700
|
1397 |
|
|
0857 F700 20 0B BOOT BRA BLOAD0
|
1398 |
|
|
0858 F702 00 00 00 FCB 0,0,0
|
1399 |
|
|
0859 F705 00 TRK FCB 0 File start track
|
1400 |
|
|
0860 F706 00 SCT FCB 0 File start sector
|
1401 |
|
|
0861 F707 00 DNS FCB 0 Density Flag (not used)
|
1402 |
|
|
0862 F708 C0 00 TADR FDB $C000 Transfer address
|
1403 |
|
|
0863 F70A 00 00 LADR FDB 0 Load Address
|
1404 |
|
|
0864 F70C 00 DRNUM FCB 0 Drive number 0
|
1405 |
|
|
0865 *
|
1406 |
|
|
0866 F70D 10 CE C0 FF BLOAD0 LDS #BSSTACK Set up Bootstrap stack
|
1407 |
|
|
0867 F711 EC 8C F1 LDD TRK,PCR Set up start track and sector
|
1408 |
|
|
0868 F714 FD C3 00 STD SCTBUF
|
1409 |
|
|
0869 F717 10 8E C4 00 LDY #SCTBUF+256
|
1410 |
|
|
0870 *
|
1411 |
|
|
0871 * Perform actual file load
|
1412 |
|
|
0872 *
|
1413 |
|
|
0873 F71B 8D 35 BLOAD1 BSR GETCH Get acharcater
|
1414 |
|
|
0874 F71D 81 02 CMPA #$02 Data record hearder ?
|
1415 |
|
|
0875 F71F 27 10 BEQ BLOAD2 Skip, is so
|
1416 |
|
|
0876 F721 81 16 CMPA #$16 Xfr address hearder ?
|
1417 |
|
|
0877 F723 26 F6 BNE BLOAD1 Loop if neither
|
1418 |
|
|
0878 *
|
1419 |
|
|
0879 * Get transfer address
|
1420 |
|
|
0880 *
|
1421 |
|
|
0881 F725 8D 2B BSR GETCH
|
1422 |
|
|
0882 F727 A7 8C DE STA TADR,PCR
|
1423 |
|
|
0883 F72A 8D 26 BSR GETCH
|
1424 |
|
|
0884 F72C A7 8C DA STA TADR+1,PCR
|
1425 |
|
|
0885 F72F 20 EA BRA BLOAD1
|
1426 |
|
|
0886 *
|
1427 |
|
|
0887 * Load data record
|
1428 |
|
|
0888 *
|
1429 |
|
|
0889 F731 8D 1F BLOAD2 BSR GETCH Get load address
|
1430 |
|
|
0890 F733 A7 8C D4 STA LADR,PCR
|
1431 |
|
|
0891 F736 8D 1A BSR GETCH
|
1432 |
|
|
0892 F738 A7 8C D0 STA LADR+1,PCR
|
1433 |
|
|
0893 F73B 8D 15 BSR GETCH Get Bytes count
|
1434 |
|
|
0894 F73D 1F 89 TFR A,B
|
1435 |
|
|
0895 F73F 5D TSTB
|
1436 |
|
|
0896 F740 27 D9 BEQ BLOAD1 Loop if count = 0
|
1437 |
|
|
0897 F742 AE 8C C5 LDX LADR,PCR Get load address
|
1438 |
|
|
0898 F745 34 14 BLOAD3 PSHS B,X
|
1439 |
|
|
0899 F747 8D 09 BSR GETCH Get data character
|
1440 |
|
|
0900 F749 35 14 PULS B,X
|
1441 |
|
|
0901 F74B A7 80 STA ,X+ Store at load address
|
1442 |
|
|
0902 F74D 5A DECB
|
1443 |
|
|
0903 F74E 26 F5 BNE BLOAD3 Loop until count = 0
|
1444 |
|
|
0904 F750 20 C9 BRA BLOAD1
|
1445 |
|
|
0905 *
|
1446 |
|
|
0906 * Get Character routine
|
1447 |
|
|
0907 * Reads a sector if needed
|
1448 |
|
|
0908 *
|
1449 |
|
|
0909 F752 10 8C C4 00 GETCH CMPY #SCTBUF+256 out of data ?
|
1450 |
|
|
0910 F756 26 0F BNE GETCH4 Go read Character if not
|
1451 |
|
|
0911 F758 8E C3 00 GETCH2 LDX #SCTBUF Point to buffer
|
1452 |
|
|
0912 F75B EC 84 LDD 0,X Get forward Link
|
1453 |
|
|
0913 F75D 27 0B BEQ GOFLEX if zero, file is loaded
|
1454 |
|
|
0914 F75F 8D 26 BSR READ Read next sector
|
1455 |
|
|
0915 F761 26 9D BNE BOOT start over if error
|
1456 |
|
|
0916 F763 10 8E C3 04 LDY #SCTBUF+4 Point past link
|
1457 |
|
|
0917 F767 A6 A0 GETCH4 LDA ,Y+ Else, get a character
|
1458 |
|
|
0918 F769 39 RTS
|
1459 |
|
|
0919 *
|
1460 |
|
|
0920 * File is loaded, Jump to it
|
1461 |
|
|
0921 *
|
1462 |
|
|
0922 F76A 6E 9C 9B GOFLEX JMP [TADR,PCR] Jump to transfer address
|
1463 |
|
|
0923
|
1464 |
|
|
0924 *
|
1465 |
|
|
0925 ** FLEX 9 IDE DISK DRIVERS
|
1466 |
|
|
0926 *
|
1467 |
|
|
0927 * Seek track and sector
|
1468 |
|
|
0928 * A holds track number (0 - ??)
|
1469 |
|
|
0929 * B holds sector number (1 - ??)
|
1470 |
|
|
0930 * Sector numbers starts from 1
|
1471 |
|
|
0931 * subtract 1 to start from sector 0 on CF
|
1472 |
|
|
0932 *
|
1473 |
|
|
0933 F76D 34 02 SEEK PSHS A
|
1474 |
|
|
0934 F76F 4F CLRA
|
1475 |
|
|
0935 F770 5A DECB
|
1476 |
|
|
0936 F771 FD E1 06 STD CF_SECNUM
|
1477 |
|
|
0937 F774 E6 E4 LDB ,S
|
1478 |
|
|
0938 F776 FD E1 08 STD CF_CYLLO
|
1479 |
|
|
0939 F779 E6 8C 90 LDB DRNUM,PCR
|
1480 |
|
|
0940 F77C FD E1 0A STD CF_CYLHI
|
1481 |
|
|
0941 F77F C6 01 LDB #$01
|
1482 |
|
|
0942 F781 FD E1 04 STD CF_SECCNT
|
1483 |
|
|
0943 F784 5F CLRB
|
1484 |
|
|
0944 F785 35 82 PULS A,PC
|
1485 |
|
|
0945 *
|
1486 |
|
|
0946 * READ SECTORS FROM CF
|
1487 |
|
|
0947 *
|
1488 |
218 |
davidgb |
0948 *
|
1489 |
221 |
davidgb |
0949 F787 8D E4 READ BSR SEEK
|
1490 |
|
|
0950 F789 CC 00 20 LDD #CMDREAD ; IDE READ MULTIPLE
|
1491 |
|
|
0951 F78C FD E1 0E STD CF_COMAND
|
1492 |
|
|
0952 F78F 8D 17 BSR WTRDY
|
1493 |
|
|
0953 *
|
1494 |
|
|
0954 * READ LOOP
|
1495 |
|
|
0955 *
|
1496 |
|
|
0956 F791 34 20 PSHS Y
|
1497 |
|
|
0957 F793 10 8E 01 00 LDY #256
|
1498 |
|
|
0958 F797 8D 1E READ1 BSR WTDRQ
|
1499 |
|
|
0959 F799 FC E1 00 LDD CF_DATA
|
1500 |
|
|
0960 F79C E7 80 STB ,X+
|
1501 |
|
|
0961 F79E 31 3F LEAY -1,Y
|
1502 |
|
|
0962 F7A0 26 F5 BNE READ1
|
1503 |
|
|
0963 F7A2 35 20 PULS Y
|
1504 |
|
|
0964 *
|
1505 |
|
|
0965 F7A4 8D 02 BSR WTRDY
|
1506 |
|
|
0966 F7A6 5F CLRB
|
1507 |
|
|
0967 F7A7 39 RTS
|
1508 |
|
|
0968 *
|
1509 |
|
|
0969 * WAIT UNTIL READY
|
1510 |
|
|
0970 *
|
1511 |
|
|
0971 F7A8 FC E1 0E WTRDY LDD CF_STATUS
|
1512 |
|
|
0972 F7AB C5 80 BITB #BUSY
|
1513 |
|
|
0973 F7AD 26 F9 BNE WTRDY
|
1514 |
|
|
0974 F7AF FC E1 0E LDD CF_STATUS
|
1515 |
|
|
0975 F7B2 C5 40 BITB #DRDY
|
1516 |
|
|
0976 F7B4 27 F2 BEQ WTRDY
|
1517 |
|
|
0977 F7B6 39 RTS
|
1518 |
|
|
0978 *
|
1519 |
|
|
0979 * WAIT FOR DATA REQUEST
|
1520 |
|
|
0980 *
|
1521 |
|
|
0981 F7B7 FC E1 0E WTDRQ LDD CF_STATUS
|
1522 |
|
|
0982 F7BA C5 08 BITB #DRQ
|
1523 |
|
|
0983 F7BC 27 F9 BEQ WTDRQ
|
1524 |
|
|
0984 F7BE 39 RTS
|
1525 |
|
|
0985 *
|
1526 |
218 |
davidgb |
0004 END
|
1527 |
|
|
0000 INCLUDE "sys09bug.asm"
|
1528 |
|
|
0001 * NAM SYS09BUG12 SYSTEM09 MONITOR
|
1529 |
|
|
0002 OPT l
|
1530 |
|
|
|
1531 |
|
|
|
1532 |
|
|
sys09bug.asm page 3
|
1533 |
|
|
0004 *
|
1534 |
|
|
0005 * MONITOR PROGRAM FOR THE SOUTHWEST TECHNICAL
|
1535 |
|
|
0006 * PRODUCTS MP-09 CPU BOARD AS COMMENTED BY....
|
1536 |
|
|
0007 *
|
1537 |
|
|
0008 * ALLEN CLARK WALLACE WATSON
|
1538 |
|
|
0009 * 2502 REGAL OAKS LANE 4815 EAST 97th AVE.
|
1539 |
|
|
0010 * LUTZ, FLA. 33549 TEMPLE TERRACE, FLA. 33617
|
1540 |
|
|
0011 * PH. 813-977-0347 PH. 813-985-1359
|
1541 |
|
|
0012 *
|
1542 |
|
|
0013 * MODIFIED TO SBUG09 VER 1.8 BY: RANDY JARRETT
|
1543 |
|
|
0014 * 2561 NANTUCKET DR APT. E
|
1544 |
|
|
0015 * ATLANTA, GA 30345
|
1545 |
|
|
0016 * PH. 404-320-1043
|
1546 |
|
|
0017 *
|
1547 |
|
|
0018 * MODIFIED TO SYS09BUG VER 1.0
|
1548 |
|
|
0019 * FOR: SYSTEM09 FPGA SYSTEM
|
1549 |
|
|
0020 * BY: JOHN KENT
|
1550 |
|
|
0021 * DATE: 21ST NOVEMBER 2006
|
1551 |
|
|
0022 * REMOVED: DISK BOOTS
|
1552 |
|
|
0023 * MEMORY TEST
|
1553 |
|
|
0024 * ADDED: ADM3A VDU DRIVER
|
1554 |
|
|
0025 *
|
1555 |
|
|
0026 * MODIFIED TO SYS09BUG VER 1.1
|
1556 |
|
|
0027 * BY: JOHN KENT
|
1557 |
|
|
0028 * DATE: 7TH JANUARY 2007
|
1558 |
|
|
0029 * ADDED: 'U' USER EXTENTION COMMANDS AT $F000
|
1559 |
|
|
0030 * CONDITIONAL ASSEMBLY OF FLOPPY BOOTS
|
1560 |
|
|
0031 * AND REALTIME CLOCK
|
1561 |
|
|
0032 *
|
1562 |
|
|
0033 * MODIFIED TO SYS09BUG VER 1.2
|
1563 |
|
|
0034 * BY: JOHN KENT
|
1564 |
|
|
0035 * DATE: 21ST MAY 2007
|
1565 |
|
|
0036 * ADDED: COMPACT FLASH BOOT TO FPGA VERSION
|
1566 |
|
|
0037 * REMOVED PORT REDIRECTION ON PUNCH & LOAD
|
1567 |
|
|
0038 *
|
1568 |
|
|
0039 * Modified to SYS09BUG VER 1.3
|
1569 |
|
|
0040 * BY: JOHN KENT
|
1570 |
|
|
0041 * DATE: 8TH JAN 2008
|
1571 |
|
|
0042 * ADDED: CONDITIONALS FOR SPARTAN3E STARTER BOARD
|
1572 |
|
|
0043 * WITH ONLY 32K OF RAM
|
1573 |
|
|
0044 *
|
1574 |
|
|
0045 * Modified to SYS09BUG VER 1.4
|
1575 |
|
|
0046 * BY: JOHN KENT
|
1576 |
|
|
0047 * DATE: 3RD FEB 2008
|
1577 |
|
|
0048 * ADDED: CONDITIONALS FOR XESS BOARD WITH IDE
|
1578 |
|
|
0049 * SEPERATE CONDITIONAL FOR S3 STARTER AND B5-X300
|
1579 |
|
|
0050 * 16 BIT IDE DISK BOOT STRAP ROUTINE
|
1580 |
|
|
0051 *
|
1581 |
|
|
0052 * Modified to SYS09BUG VER 1.5
|
1582 |
|
|
0053 * BY: JOHN KENT
|
1583 |
|
|
0054 * DATE: 7TH SEP 2008
|
1584 |
|
|
0055 * ADDED: ADDED "B3-S2+" STRING
|
1585 |
|
|
0056 *
|
1586 |
|
|
0057 * Modified to SYS09BUG VER 1.6
|
1587 |
|
|
0058 * BY: JOHN KENT
|
1588 |
|
|
0059 * DATE: 2ND DEC 2008
|
1589 |
|
|
0060 * ADDED: ADDED HARDWARE FLOW CONTROL
|
1590 |
|
|
0061 *
|
1591 |
|
|
0062 * CHANGED: SEPARARTED OPTIONS EQUATES AND BODY INTO SEPARATE FILES
|
1592 |
|
|
0063 *
|
1593 |
|
|
0064 * Modified to SYS09BUG VER 1.7
|
1594 |
|
|
0065 * BY: JOHN KENT
|
1595 |
|
|
0066 * DATE: 16TH OCT 2010
|
1596 |
|
|
0067 * ADDED: "DE2-70" STRING
|
1597 |
|
|
0068 *
|
1598 |
|
|
0069 * *** COMMANDS ***
|
1599 |
|
|
0070 *
|
1600 |
|
|
0071 * CONTROL A = ALTER THE "A" ACCUMULATOR
|
1601 |
|
|
0072 * CONTROL B = ALTER THE "B" ACCUMULATOR
|
1602 |
|
|
0073 * CONTROL C = ALTER THE CONDITION CODE REGISTER
|
1603 |
|
|
0074 * CONTROL D = ALTER THE DIRECT PAGE REGISTER
|
1604 |
|
|
0075 * CONTROL P = ALTER THE PROGRAM COUNTER
|
1605 |
|
|
0076 * CONTROL U = ALTER USER STACK POINTER
|
1606 |
|
|
0077 * CONTROL X = ALTER "X" INDEX REGISTER
|
1607 |
|
|
0078 * CONTROL Y = ALTER "Y" INDEX REGISTER
|
1608 |
|
|
0079 * B hhhh = SET BREAKPOINT AT LOCATION $hhhh
|
1609 |
|
|
0080 * D = 5.25" MINIFLOPPY BOOT
|
1610 |
|
|
0081 * E ssss-eeee = EXAMINE MEMORY
|
1611 |
|
|
0082 * FROM STARTING ADDRESS ssss
|
1612 |
|
|
0083 * TO ENDING ADDRESS eeee.
|
1613 |
|
|
0084 * G = CONTINUE EXECUTION FROM BREAKPOINT OR SWI
|
1614 |
|
|
0085 * L = LOAD TAPE
|
1615 |
|
|
0086 * M hhhh = EXAMINE AND CHANGE MEMORY LOCATION hhhh
|
1616 |
|
|
0087 * P ssss-eeee = PUNCH TAPE, START ssss TO END eeee ADDR.
|
1617 |
|
|
0088 * R = DISPLAY REGISTER CONTENTS
|
1618 |
|
|
0089 * S = DISPLAY STACK FROM ssss TO $DFC0
|
1619 |
|
|
0090 * U = 8" DMAF2 FLOPPY BOOT
|
1620 |
|
|
0091 * U = USER EXTENSION COMMANDS AT $F000
|
1621 |
|
|
0092 * X = REMOVE ALL BREAKPOINTS
|
1622 |
|
|
0093 *
|
1623 |
|
|
0094 *
|
1624 |
|
|
0095 ***************************************************
|
1625 |
|
|
0096 * SYS09BUG VARIABLE SPACE
|
1626 |
|
|
0097 ***************************************************
|
1627 |
|
|
0098 *
|
1628 |
|
|
0099 DFC0 ORG MONRAM
|
1629 |
|
|
0100 DFC0 STACK EQU * ; TOP OF INTERNAL STACK
|
1630 |
|
|
0101 DFC0 NMI RMB 2 ; USER NMI VECTOR
|
1631 |
|
|
0102 DFC2 SWI3 RMB 2 ; SOFTWARE INTERRUPT VECTOR #3
|
1632 |
|
|
0103 DFC4 SWI2 RMB 2 ; SOFTWARE INTERRUPT VECTOR #2
|
1633 |
|
|
0104 DFC6 FIRQ RMB 2 ; FAST INTERRUPT VECTOR
|
1634 |
|
|
0105 DFC8 IRQ RMB 2 ; INTERRUPT VECTOR
|
1635 |
|
|
0106 DFCA SWI RMB 2 ; SOFTWARE INTERRUPT VECTOR
|
1636 |
|
|
0107 DFCC SVCVO RMB 2 ; SUPERVISOR CALL VECTOR ORGIN
|
1637 |
|
|
0108 DFCE SVCVL RMB 2 ; SUPERVISOR CALL VECTOR LIMIT
|
1638 |
|
|
0109 IFD DATOPT
|
1639 |
221 |
davidgb |
0110 DFD0 LRARAM RMB 16 ; LRA ADDRESSES
|
1640 |
218 |
davidgb |
0111 ENDIF DATOPT
|
1641 |
221 |
davidgb |
0112 DFE0 CPORT RMB 2 ; RE-VECTORABLE CONTROL PORT
|
1642 |
|
|
0113 DFE2 ECHO RMB 1 ; ECHO FLAG
|
1643 |
|
|
0114 DFE3 BPTBL RMB 24 ; BREAKPOINT TABLE BASE ADDR
|
1644 |
218 |
davidgb |
0115 IFD TRAOPT
|
1645 |
|
|
0116 NMISAV RMB 2 ; NMI Jump Vector Backup
|
1646 |
|
|
0117 TRACNT RMB 2 ; Trace Count
|
1647 |
|
|
0118 ENDIF TRAOPT
|
1648 |
|
|
0118 ENDIF TRAOPT
|
1649 |
|
|
0119 IFD VDUOPT
|
1650 |
|
|
0120 *
|
1651 |
|
|
0121 **************************************************
|
1652 |
|
|
0122 * VDU8 DISPLAY DRIVER VARIABLES *
|
1653 |
|
|
0123 **************************************************
|
1654 |
|
|
0124 *
|
1655 |
|
|
0125 **** ALWAYS KEEP COLADX AND ROWADX TOGETHER ******
|
1656 |
221 |
davidgb |
0126 DFFB COLADX RMB 1 ; CURSOR COLUMN
|
1657 |
|
|
0127 DFFC ROWADX RMB 1 ; CURSOR ROW
|
1658 |
218 |
davidgb |
0128 **************************************************
|
1659 |
|
|
0129 *
|
1660 |
221 |
davidgb |
0130 DFFD NEWROW RMB 1 ; NEW ROW TEMP FOR ESCAPE
|
1661 |
|
|
0131 DFFE ESCFLG RMB 1 ; ESCAPE SEQUENCE ACTIVE
|
1662 |
218 |
davidgb |
0132 ENDIF VDUOPT
|
1663 |
|
|
0133 IFD DG640OPT
|
1664 |
|
|
0134 *
|
1665 |
|
|
0135 ***************************************************
|
1666 |
|
|
0136 * DG640 MEMORY MAPPED DISPLAY DRIVER VARIABLES *
|
1667 |
|
|
0137 ***************************************************
|
1668 |
|
|
0138 *
|
1669 |
|
|
0139 ***** ALWAYS KEEP THESE TWO BYTES TOGETHER *****
|
1670 |
|
|
0140 COLADX RMB 1 ; CURSOR COLUMN
|
1671 |
|
|
0141 ROWADX RMB 1 ; CURSOR ROW
|
1672 |
|
|
0142 *************************************************
|
1673 |
|
|
0143 CURSOR RMB 2 ; ABSOLUTE SCREEN ADDRESS
|
1674 |
|
|
0144 NEWROW RMB 1 ; NEW ROW TEMP FOR ESCAPE
|
1675 |
|
|
0145 ESCFLG RMB 1 ; ESCAPE SEQUENCE ACTIVE
|
1676 |
|
|
0146 ENDIF DG640OPT
|
1677 |
|
|
0146 ENDIF DG640OPT
|
1678 |
|
|
0147 *
|
1679 |
|
|
0148 *
|
1680 |
|
|
0149 ***************************************************
|
1681 |
|
|
0150 * START OF ROM *
|
1682 |
|
|
0151 ***************************************************
|
1683 |
|
|
0152 *
|
1684 |
|
|
0153 F800 ORG MONROM
|
1685 |
|
|
0154 F800 F8 14 FDB MONITOR
|
1686 |
221 |
davidgb |
0155 F802 F8 61 FDB NEXTCMD
|
1687 |
|
|
0156 F804 FC A1 FDB INCH
|
1688 |
|
|
0157 F806 FC 9B FDB INCHE
|
1689 |
|
|
0158 F808 FC C5 FDB INCHEK
|
1690 |
|
|
0159 F80A FC E0 FDB OUTCH
|
1691 |
|
|
0160 F80C FB 8F FDB PDATA
|
1692 |
|
|
0161 F80E FB 1E FDB PCRLF
|
1693 |
|
|
0162 F810 FB 1A FDB PSTRNG
|
1694 |
|
|
0163 F812 FA 2E FDB LRA
|
1695 |
218 |
davidgb |
0164 *
|
1696 |
|
|
0165 IFD ADSOPT
|
1697 |
|
|
0166 FDB PCHK ; CHECK FOR PRINTER INPUT
|
1698 |
|
|
0167 FDB PINIZ ; INITIATE PRINTER
|
1699 |
|
|
0168 FDB POUTCH ; OUTPUT CH. TO PRINTER
|
1700 |
|
|
0169 FDB VINIZ
|
1701 |
|
|
0170 FDB VOUTCH
|
1702 |
|
|
0171 FDB ACINIZ
|
1703 |
|
|
0172 FDB AOUTCH
|
1704 |
|
|
0173 ENDIF ADSOPT
|
1705 |
|
|
0173 ENDIF ADSOPT
|
1706 |
|
|
0174 *
|
1707 |
|
|
0175 * MONITOR
|
1708 |
|
|
0176 *
|
1709 |
|
|
0177 * VECTOR ADDRESS STRING IS.....
|
1710 |
|
|
0178 * $F8A1-$F8A1-$F8A1-$F8A1-$F8A1-$FAB0-$FFFF-$FFFF
|
1711 |
|
|
0179 *
|
1712 |
221 |
davidgb |
0180 F814 8E FE 74 MONITOR LDX #RAMVEC ; POINT TO VECTOR ADDR. STRING
|
1713 |
218 |
davidgb |
0181 F817 10 8E DF C0 LDY #STACK ; POINT TO RAM VECTOR LOCATION
|
1714 |
|
|
0182 F81B C6 10 LDB #$10 ; BYTES TO MOVE = 16
|
1715 |
|
|
0183 F81D A6 80 LOOPA LDA ,X+ ; GET VECTOR BYTE
|
1716 |
|
|
0184 F81F A7 A0 STA ,Y+ ; PUT VECTORS IN RAM / $DFC0-$DFCF
|
1717 |
|
|
0185 F821 5A DECB ; SUBTRACT 1 FROM NUMBER OF BYTES TO MOVE
|
1718 |
|
|
0186 F822 26 F9 BNE LOOPA ; CONTINUE UNTIL ALL VECTORS MOVED
|
1719 |
|
|
0187 *
|
1720 |
|
|
0188 * CONTENTS FROM TO FUNCTION
|
1721 |
|
|
0189 * $F8A1 $FE40 $DFC0 USER-V
|
1722 |
|
|
0190 * $F8A1 $FE42 $DFC2 SWI3-V
|
1723 |
|
|
0191 * $F8A1 $FE44 $DFC4 SWI2-V
|
1724 |
|
|
0192 * $F8A1 $FE46 $DFC6 FIRQ-V
|
1725 |
|
|
0193 * $F8A1 $FE48 $DFC8 IRQ-V
|
1726 |
|
|
0194 * $FAB0 $FE4A $DFCA SWI-V
|
1727 |
|
|
0195 * $FFFF $FE4C $DFCC SVC-VO
|
1728 |
|
|
0196 * $FFFF $FE4E $DFCE SVC-VL
|
1729 |
|
|
0197 *
|
1730 |
221 |
davidgb |
0198 F824 8E E0 00 LDX #ACIAS
|
1731 |
|
|
0199 F827 BF DF E0 STX CPORT ; STORE ADDR. IN RAM
|
1732 |
|
|
0200 F82A 17 01 5B LBSR XBKPNT ; CLEAR OUTSTANDING BREAKPOINTS
|
1733 |
218 |
davidgb |
0201 F82D C6 0C LDB #12 ; CLEAR 12 BYTES ON STACK
|
1734 |
|
|
0202 F82F 6F E2 CLRSTK CLR ,-S
|
1735 |
|
|
0203 F831 5A DECB
|
1736 |
|
|
0204 F832 26 FB BNE CLRSTK
|
1737 |
|
|
0205 F834 30 8C DD LEAX MONITOR,PCR ; SET PC TO SBUG-E ENTRY
|
1738 |
|
|
0206 F837 AF 6A STX 10,S ; ON STACK
|
1739 |
|
|
0207 F839 86 D0 LDA #$D0 ; PRESET CONDITION CODES ON STACK
|
1740 |
|
|
0208 F83B A7 E4 STA ,S
|
1741 |
|
|
0209 F83D 1F 43 TFR S,U
|
1742 |
221 |
davidgb |
0210 F83F 17 04 B5 LBSR IOINIZ ; INITIALIZE CONTROL PORT
|
1743 |
|
|
0211 F842 8E FE 84 LDX #MSG1 ; POINT TO MONITOR MESSAGE
|
1744 |
|
|
0212 F845 17 03 47 LBSR PDATA ; PRINT MSG
|
1745 |
218 |
davidgb |
0213 *
|
1746 |
|
|
0214 IFD DATOPT
|
1747 |
221 |
davidgb |
0215 F848 8E DF D0 LDX #LRARAM ; POINT TO LRA RAM STORAGE AREA
|
1748 |
|
|
0216 F84B 4F CLRA START ; TOTAL AT ZERO
|
1749 |
|
|
0217 F84C C6 0D LDB #13 ; TOTAL UP ALL ACTIVE RAM MEMORY
|
1750 |
|
|
0218 F84E 6D 85 FNDREL TST B,X ; TEST FOR RAM AT NEXT LOC.
|
1751 |
|
|
0219 F850 27 03 BEQ RELPAS ; IF NO RAM GO TO NEXT LOC.
|
1752 |
|
|
0220 F852 8B 04 ADDA #4 ; ELSE ADD 4K TO TOTAL
|
1753 |
|
|
0221 F854 19 DAA ; ADJ. TOTAL FOR DECIMAL
|
1754 |
|
|
0222 F855 5A RELPAS DECB ; SUB. 1 FROM LOCS. TO TEST
|
1755 |
|
|
0223 F856 2A F6 BPL FNDREL ; PRINT TOTAL OF RAM
|
1756 |
|
|
0224 F858 17 04 0C LBSR OUT2H ; OUTPUT HEX BYTE AS ASCII
|
1757 |
|
|
0225 F85B 8E FE A3 LDX #MSG2 ; POINT TO MSG 'K' CR/LF + 3 NULS
|
1758 |
|
|
0226 F85E 17 03 2E LBSR PDATA ; PRINT MSG
|
1759 |
218 |
davidgb |
0227 ENDIF DATOPT
|
1760 |
|
|
0228 *
|
1761 |
|
|
0229 IFD TRAOPT
|
1762 |
|
|
0230 LBSR TRAINZ
|
1763 |
|
|
0231 ENDIF TRAOPT
|
1764 |
|
|
0231 ENDIF TRAOPT
|
1765 |
|
|
0232 *
|
1766 |
|
|
0233 ***** NEXTCMD *****
|
1767 |
|
|
0234 *
|
1768 |
221 |
davidgb |
0235 F861 8E FE AA NEXTCMD LDX #MSG3 ; POINT TO MSG ">"
|
1769 |
|
|
0236 F864 17 02 B3 LBSR PSTRNG ; PRINT MSG
|
1770 |
|
|
0237 F867 17 04 37 LBSR INCH ; GET ONE CHAR. FROM TERMINAL
|
1771 |
|
|
0238 F86A 84 7F ANDA #$7F ; STRIP PARITY FROM CHAR.
|
1772 |
|
|
0239 F86C 81 0D CMPA #$0D ; IS IT CARRIAGE RETURN ?
|
1773 |
|
|
0240 F86E 27 F1 BEQ NEXTCMD ; IF CR THEN GET ANOTHER CHAR.
|
1774 |
|
|
0241 F870 1F 89 TFR A,B ; PUT CHAR. IN "B" ACCUM.
|
1775 |
|
|
0242 F872 81 20 CMPA #$20 ; IS IT CONTROL OR DATA CHAR ?
|
1776 |
|
|
0243 F874 2C 09 BGE PRTCMD ; IF CMD CHAR IS DATA, PRNT IT
|
1777 |
|
|
0244 F876 86 5E LDA #'^ ; ELSE CNTRL CHAR CMD SO...
|
1778 |
|
|
0245 F878 17 04 65 LBSR OUTCH ; PRINT "^"
|
1779 |
|
|
0246 F87B 1F 98 TFR B,A ; RECALL CNTRL CMD CHAR
|
1780 |
|
|
0247 F87D 8B 40 ADDA #$40 ; CONVERT IT TO ASCII LETTER
|
1781 |
|
|
0248 F87F 17 04 5E PRTCMD LBSR OUTCH ; PRNT CMD CHAR
|
1782 |
|
|
0249 F882 17 04 59 LBSR OUT1S ; PRNT SPACE
|
1783 |
|
|
0250 F885 C1 60 CMPB #$60
|
1784 |
|
|
0251 F887 2F 02 BLE NXTCH0
|
1785 |
|
|
0252 F889 C0 20 SUBB #$20
|
1786 |
218 |
davidgb |
0253 *
|
1787 |
|
|
0254 ***** DO TABLE LOOKUP *****
|
1788 |
|
|
0255 * FOR COMMAND FUNCTIONS
|
1789 |
|
|
0256 *
|
1790 |
221 |
davidgb |
0257 F88B 8E FE 3B NXTCH0 LDX #JMPTAB ; POINT TO JUMP TABLE
|
1791 |
|
|
0258 F88E E1 80 NXTCHR CMPB ,X+ ; DOES COMMAND MATCH TABLE ENTRY ?
|
1792 |
|
|
0259 F890 27 0F BEQ JMPCMD ; BRANCH IF MATCH FOUND
|
1793 |
|
|
0260 F892 30 02 LEAX 2,X ; POINT TO NEXT ENTRY IN TABLE
|
1794 |
|
|
0261 F894 8C FE 74 CMPX #TABEND ; REACHED END OF TABLE YET ?
|
1795 |
|
|
0262 F897 26 F5 BNE NXTCHR ; IF NOT END, CHECK NEXT ENTRY
|
1796 |
|
|
0263 F899 8E FE AC LDX #MSG4 ; POINT TO MSG "WHAT?"
|
1797 |
|
|
0264 F89C 17 02 F0 LBSR PDATA ; PRINT MSG
|
1798 |
|
|
0265 F89F 20 C0 BRA NEXTCMD ; IF NO MATCH, PRMPT FOR NEW CMD
|
1799 |
|
|
0266 F8A1 AD 94 JMPCMD JSR [,X] ; JUMP TO COMMAND ROUTINE
|
1800 |
|
|
0267 F8A3 20 BC BRA NEXTCMD ; PROMPT FOR NEW COMMAND
|
1801 |
218 |
davidgb |
0268 *
|
1802 |
|
|
0269 * "G" GO OR CONTINUE
|
1803 |
|
|
0270 *
|
1804 |
221 |
davidgb |
0271 F8A5 1F 34 GO TFR U,S
|
1805 |
|
|
0272 F8A7 3B RTI RTI
|
1806 |
218 |
davidgb |
0273 *
|
1807 |
|
|
0274 ***** "M" MEMORY EXAMINE AND CHANGE *****
|
1808 |
|
|
0275 *
|
1809 |
221 |
davidgb |
0276 F8A8 17 03 6B MEMCHG LBSR IN1ADR ; INPUT ADDRESS
|
1810 |
|
|
0277 F8AB 29 2D BVS CHRTN ; IF NOT HEX, RETURN
|
1811 |
|
|
0278 F8AD 1F 12 TFR X,Y ; SAVE ADDR IN "Y"
|
1812 |
|
|
0279 F8AF 8E FE B2 MEMC2 LDX #MSG5 ; POINT TO MSG " - "
|
1813 |
|
|
0280 F8B2 17 02 65 LBSR PSTRNG ; PRINT MSG
|
1814 |
|
|
0281 F8B5 1F 21 TFR Y,X ; FETCH ADDRESS
|
1815 |
|
|
0282 F8B7 17 03 A5 LBSR OUT4H ; PRINT ADDR IN HEX
|
1816 |
|
|
0283 F8BA 17 04 21 LBSR OUT1S ; OUTPUT SPACE
|
1817 |
|
|
0284 F8BD A6 A4 LDA ,Y ; GET CONTENTS OF CURRENT ADDR.
|
1818 |
|
|
0285 F8BF 17 03 A5 LBSR OUT2H ; OUTPUT CONTENTS IN ASCII
|
1819 |
|
|
0286 F8C2 17 04 19 LBSR OUT1S ; OUTPUT SPACE
|
1820 |
|
|
0287 F8C5 17 03 5E LBSR BYTE ; LOOP WAITING FOR OPERATOR INPUT
|
1821 |
|
|
0288 F8C8 28 11 BVC CHANGE ; IF VALID HEX GO CHANGE MEM. LOC.
|
1822 |
|
|
0289 F8CA 81 08 CMPA #8 ; IS IT A BACKSPACE (CNTRL H)?
|
1823 |
|
|
0290 F8CC 27 E1 BEQ MEMC2 ; PROMPT OPERATOR AGAIN
|
1824 |
|
|
0291 F8CE 81 18 CMPA #$18 ; IS IT A CANCEL (CNTRL X)?
|
1825 |
|
|
0292 F8D0 27 DD BEQ MEMC2 ; PROMPT OPERATOR AGAIN
|
1826 |
|
|
0293 F8D2 81 5E CMPA #'^ ; IS IT AN UP ARROW?
|
1827 |
|
|
0294 F8D4 27 17 BEQ BACK ; DISPLAY PREVIOUS BYTE
|
1828 |
|
|
0295 F8D6 81 0D CMPA #$D ; IS IT A CR?
|
1829 |
|
|
0296 F8D8 26 0F BNE FORWRD ; DISPLAY NEXT BYTE
|
1830 |
|
|
0297 F8DA 39 CHRTN RTS ; EXIT ROUTINE
|
1831 |
218 |
davidgb |
0298 *
|
1832 |
|
|
0299 *
|
1833 |
221 |
davidgb |
0300 F8DB A7 A4 CHANGE STA ,Y ; CHANGE BYTE IN MEMORY
|
1834 |
|
|
0301 F8DD A1 A4 CMPA ,Y ; DID MEMORY BYTE CHANGE?
|
1835 |
|
|
0302 F8DF 27 08 BEQ FORWRD ; $F972
|
1836 |
|
|
0303 F8E1 17 03 FA LBSR OUT1S ; OUTPUT SPACE
|
1837 |
|
|
0304 F8E4 86 3F LDA #'? ; LOAD QUESTION MARK
|
1838 |
|
|
0305 F8E6 17 03 F7 LBSR OUTCH ; PRINT IT
|
1839 |
|
|
0306 F8E9 31 21 FORWRD LEAY 1,Y ; POINT TO NEXT HIGHER MEM LOCATION
|
1840 |
|
|
0307 F8EB 20 C2 BRA MEMC2 ; PRINT LOCATION & CONTENTS
|
1841 |
|
|
0308 F8ED 31 3F BACK LEAY -1,Y ; POINT TO LAST MEM LOCATION
|
1842 |
|
|
0309 F8EF 20 BE BRA MEMC2 ; PRINT LOCATION & CONTENTS
|
1843 |
218 |
davidgb |
0310 *
|
1844 |
|
|
0311 * "S" DISPLAY STACK
|
1845 |
|
|
0312 * HEX-ASCII DISPLAY OF CURRENT STACK CONTENTS FROM
|
1846 |
|
|
0313 ** CURRENT STACK POINTER TO INTERNAL STACK LIMIT.
|
1847 |
|
|
0314 *
|
1848 |
221 |
davidgb |
0315 F8F1 17 02 A2 DISSTK LBSR PRTSP ; PRINT CURRENT STACK POINTER
|
1849 |
|
|
0316 F8F4 1F 32 TFR U,Y
|
1850 |
|
|
0317 F8F6 8E DF C0 LDX #STACK ; LOAD INTERNAL STACK AS UPPER LIMIT
|
1851 |
|
|
0318 F8F9 30 1F LEAX -1,X ; POINT TO CURRENT STACK
|
1852 |
|
|
0319 F8FB 20 05 BRA MDUMP1 ; ENTER MEMORY DUMP OF STACK CONTENTS
|
1853 |
218 |
davidgb |
0320 *
|
1854 |
|
|
0321 * "E" DUMP MEMORY FOR EXAMINE IN HEX AND ASCII
|
1855 |
|
|
0322 * AFTER CALLING 'IN2ADR' LOWER ADDRESS IN Y-REG.
|
1856 |
|
|
0323 * UPPER ADDRESS IN X-REG.
|
1857 |
|
|
0324 * IF HEX ADDRESSES ARE INVALID (V)=1.
|
1858 |
|
|
0325 *
|
1859 |
221 |
davidgb |
0326 F8FD 17 03 0B MEMDUMP LBSR IN2ADR ; INPUT ADDRESS BOUNDRIES
|
1860 |
|
|
0327 F900 29 06 BVS EDPRTN ; NEW COMMAND IF ILLEGAL HEX
|
1861 |
|
|
0328 F902 34 20 MDUMP1 PSHS Y ; COMPARE LOWER TO UPPER BOUNDS
|
1862 |
|
|
0329 F904 AC E1 CMPX ,S++ ; LOWER BOUNDS > UPPER BOUNDS?
|
1863 |
|
|
0330 F906 24 01 BCC AJDUMP ; IF NOT, DUMP HEX AND ASCII
|
1864 |
|
|
0331 F908 39 EDPRTN RTS ;
|
1865 |
218 |
davidgb |
0332 *
|
1866 |
|
|
0333 * ADJUST LOWER AND UPPER ADDRESS LIMITS
|
1867 |
|
|
0334 * TO EVEN 16 BYTE BOUNDRIES.
|
1868 |
|
|
0335 *
|
1869 |
|
|
0336 * IF LOWER ADDR = $4532
|
1870 |
|
|
0337 * LOWER BOUNDS WILL BE ADJUSTED TO = $4530.
|
1871 |
|
|
0338 *
|
1872 |
|
|
0339 * IF UPPER ADDR = $4567
|
1873 |
|
|
0340 * UPPER BOUNDS WILL BE ADJUSTED TO = $4570.
|
1874 |
|
|
0341 *
|
1875 |
|
|
0342 * ENTER WITH LOWER ADDRESS IN X-REG.
|
1876 |
|
|
0343 * -UPPER ADDRESS ON TOP OF STACK.
|
1877 |
|
|
0344 *
|
1878 |
221 |
davidgb |
0345 F909 1F 10 AJDUMP TFR X,D ; GET UPPER ADDR IN D-REG
|
1879 |
|
|
0346 F90B C3 00 10 ADDD #$10 ; ADD 16 TO UPPER ADDRESS
|
1880 |
|
|
0347 F90E C4 F0 ANDB #$F0 ; MASK TO EVEN 16 BYTE BOUNDRY
|
1881 |
|
|
0348 F910 34 06 PSHS A,B ; SAVE ON STACK AS UPPER DUMP LIMIT
|
1882 |
|
|
0349 F912 1F 20 TFR Y,D ; $F9A5 GET LOWER ADDRESS IN D-REG
|
1883 |
|
|
0350 F914 C4 F0 ANDB #$F0 ; MASK TO EVEN 16 BYTE BOUNDRY
|
1884 |
|
|
0351 F916 1F 01 TFR D,X ; PUT IN X-REG AS LOWER DUMP LIMIT
|
1885 |
|
|
0352 F918 AC E4 NXTLIN CMPX ,S ; COMPARE LOWER TO UPPER LIMIT
|
1886 |
|
|
0353 F91A 27 05 BEQ SKPDMP ; IF EQUAL SKIP HEX-ASCII DUMP
|
1887 |
|
|
0354 F91C 17 03 A6 LBSR INCHEK ; CHECK FOR INPUT FROM KEYBOARD
|
1888 |
|
|
0355 F91F 27 03 BEQ EDUMP
|
1889 |
|
|
0356 F921 32 62 SKPDMP LEAS 2,S ; READJUST STACK IF NOT DUMPING
|
1890 |
|
|
0357 F923 39 RTS ;
|
1891 |
218 |
davidgb |
0358 *
|
1892 |
|
|
0359 * PRINT 16 HEX BYTES FOLLOWED BY 16 ASCII CHARACTERS
|
1893 |
|
|
0360 * FOR EACH LINE THROUGHOUT ADDRESS LIMITS.
|
1894 |
|
|
0361 *
|
1895 |
221 |
davidgb |
0362 F924 34 10 EDUMP PSHS X ; PUSH LOWER ADDR LIMIT ON STACK
|
1896 |
|
|
0363 F926 8E FE B2 LDX #MSG5 ; POINT TO MSG " - "
|
1897 |
|
|
0364 F929 17 01 EE LBSR PSTRNG ; PRINT MSG
|
1898 |
|
|
0365 F92C AE E4 LDX ,S ; LOAD LOWER ADDR FROM TOP OF STACK
|
1899 |
|
|
0366 F92E 17 03 2E LBSR OUT4H ; PRINT THE ADDRESS
|
1900 |
|
|
0367 F931 17 03 A8 LBSR OUT2S ; 2 SPACES
|
1901 |
|
|
0368 F934 C6 10 LDB #$10 ; LOAD COUNT OF 16 BYTES TO DUMP
|
1902 |
|
|
0369 F936 A6 80 ELOOP LDA ,X+ ; GET FROM MEMORY HEX BYTE TO PRINT
|
1903 |
|
|
0370 F938 17 03 2C LBSR OUT2H ; OUTPUT HEX BYTE AS ASCII
|
1904 |
|
|
0371 F93B 17 03 A0 LBSR OUT1S ; OUTPUT SPACE
|
1905 |
|
|
0372 F93E 5A DECB ; $F9D1 DECREMENT BYTE COUNT
|
1906 |
|
|
0373 F93F 26 F5 BNE ELOOP ; CONTINUE TIL 16 HEX BYTES PRINTED
|
1907 |
218 |
davidgb |
0374 *
|
1908 |
|
|
0375 * PRINT 16 ASCII CHARACTERS
|
1909 |
|
|
0376 * IF NOT PRINTABLE OR NOT VALID
|
1910 |
|
|
0377 * ASCII PRINT A PERIOD (.)
|
1911 |
221 |
davidgb |
0378 F941 17 03 98 LBSR OUT2S ; 2 SPACES
|
1912 |
|
|
0379 F944 AE E1 LDX ,S++ ; GET LOW LIMIT FRM STACK - ADJ STACK
|
1913 |
|
|
0380 F946 C6 10 LDB #$10 ; SET ASCII CHAR TO PRINT = 16
|
1914 |
|
|
0381 F948 A6 80 EDPASC LDA ,X+ ; GET CHARACTER FROM MEMORY
|
1915 |
|
|
0382 F94A 81 20 CMPA #$20 ; IF LESS THAN $20, NON-PRINTABLE?
|
1916 |
|
|
0383 F94C 25 04 BCS PERIOD ; IF SO, PRINT PERIOD INSTEAD
|
1917 |
|
|
0384 F94E 81 7E CMPA #$7E ; IS IT VALID ASCII?
|
1918 |
|
|
0385 F950 23 02 BLS PRASC ; IF SO PRINT IT
|
1919 |
|
|
0386 F952 86 2E PERIOD LDA #'. ; LOAD A PERIOD (.)
|
1920 |
|
|
0387 F954 17 03 89 PRASC LBSR OUTCH ; PRINT ASCII CHARACTER
|
1921 |
|
|
0388 F957 5A DECB ; DECREMENT COUNT
|
1922 |
|
|
0389 F958 26 EE BNE EDPASC
|
1923 |
|
|
0390 F95A 20 BC BRA NXTLIN
|
1924 |
218 |
davidgb |
0391 *
|
1925 |
|
|
0392 ***** "B" SET BREAKPOINT *****
|
1926 |
|
|
0393 *
|
1927 |
221 |
davidgb |
0394 F95C 17 02 B7 BRKPNT LBSR IN1ADR ; GET BREAKPOINT ADDRESS
|
1928 |
|
|
0395 F95F 29 1E BVS EXITBP ; EXIT IF INVALID HEX ADDR.
|
1929 |
|
|
0396 F961 8C DF C0 CMPX #STACK ; ADDRESS ILLEGAL IF >=$DFC0
|
1930 |
|
|
0397 F964 24 1A BCC BPERR ; IF ERROR PRINT (?), EXIT
|
1931 |
|
|
0398 F966 34 10 PSHS X ; $FA82 PUSH BP ADDRESS ON STACK
|
1932 |
|
|
0399 F968 8E FF FF LDX #$FFFF ; LOAD DUMMY ADDR TO TEST BP TABLE
|
1933 |
|
|
0400 F96B 8D 55 BSR BPTEST ; TEST BP TABLE FOR FREE SPACE
|
1934 |
|
|
0401 F96D 35 10 PULS X ; POP BP ADDRESS FROM STACK
|
1935 |
|
|
0402 F96F 27 0F BEQ BPERR ; (Z) SET, OUT OF BP TABLE SPACE
|
1936 |
|
|
0403 F971 A6 84 LDA ,X ; GET DATA AT BREAKPOINT ADDRESS
|
1937 |
|
|
0404 F973 81 3F CMPA #$3F ; IS IT A SWI?
|
1938 |
|
|
0405 F975 27 09 BEQ BPERR ; IF SWI ALREADY, INDICATE ERROR
|
1939 |
|
|
0406 F977 A7 A0 STA ,Y+ ; SAVE DATA BYTE IN BP TABLE
|
1940 |
|
|
0407 F979 AF A4 STX ,Y ; SAVE BP ADDRESS IN BP TABLE
|
1941 |
|
|
0408 F97B 86 3F LDA #$3F ; LOAD A SWI ($3F)
|
1942 |
|
|
0409 F97D A7 84 STA ,X ; SAVE SWI AT BREAKPOINT ADDRESS
|
1943 |
|
|
0410 F97F 39 EXITBP RTS ;
|
1944 |
218 |
davidgb |
0411 *
|
1945 |
|
|
0412 * INDICATE ERROR SETTING BREAKPOINT
|
1946 |
|
|
0413 *
|
1947 |
221 |
davidgb |
0414 F980 17 03 5B BPERR LBSR OUT1S ; OUTPUT SPACE
|
1948 |
|
|
0415 F983 86 3F LDA #'? ; LOAD (?), INDICATE BREAKPOINT ERROR
|
1949 |
|
|
0416 F985 16 03 58 LBRA OUTCH ; PRINT "?"
|
1950 |
218 |
davidgb |
0417 *
|
1951 |
|
|
0418 *** "X" CLEAR OUTSTANDING BREAKPOINTS ***
|
1952 |
|
|
0419 *
|
1953 |
221 |
davidgb |
0420 F988 10 8E DF E3 XBKPNT LDY #BPTBL ; POINT TO BREAKPOINT TABLE
|
1954 |
|
|
0421 F98C C6 08 LDB #8 ; LOAD BREAKPOINT COUNTER
|
1955 |
|
|
0422 F98E 8D 18 XBPLP BSR RPLSWI ; REMOVE USED ENTRY IN BP TABLE
|
1956 |
|
|
0423 F990 5A DECB $FAAC ; DECREMENT BP COUNTER
|
1957 |
|
|
0424 F991 26 FB BNE XBPLP ; END OF BREAKPOINT TABLE?
|
1958 |
|
|
0425 F993 39 RTS
|
1959 |
218 |
davidgb |
0426 *
|
1960 |
|
|
0427 ***** SWI ENTRY POINT *****
|
1961 |
|
|
0428 *
|
1962 |
221 |
davidgb |
0429 F994 1F 43 SWIE TFR S,U ; TRANSFER STACK TO USER POINTER
|
1963 |
|
|
0430 F996 AE 4A LDX 10,U ; LOAD PC FROM STACK INTO X-REG
|
1964 |
|
|
0431 F998 30 1F LEAX -1,X ; ADJUST ADDR DOWN 1 BYTE.
|
1965 |
|
|
0432 F99A 8D 26 BSR BPTEST ; FIND BREAKPOINT IN BP TABLE
|
1966 |
|
|
0433 F99C 27 04 BEQ REGPR ; IF FOUND, REPLACE DATA AT BP ADDR
|
1967 |
|
|
0434 F99E AF 4A STX 10,U ; SAVE BREAKPOINT ADDR IN STACK
|
1968 |
|
|
0435 F9A0 8D 06 BSR RPLSWI ; GO REPLACE SWI WITH ORIGINAL DATA
|
1969 |
|
|
0436 F9A2 17 02 48 REGPR LBSR REGSTR ; GO PRINT REGISTERS
|
1970 |
218 |
davidgb |
0437 *
|
1971 |
|
|
0438 IFD TRAOPT
|
1972 |
|
|
0439 LDX #0
|
1973 |
|
|
0440 STX TRACNT
|
1974 |
|
|
0441 ENDIF TRAOPT
|
1975 |
|
|
0441 ENDIF TRAOPT
|
1976 |
|
|
0442 *
|
1977 |
221 |
davidgb |
0443 F9A5 16 FE B9 LBRA NEXTCMD ; GET NEXT COMMAND
|
1978 |
218 |
davidgb |
0444 *
|
1979 |
221 |
davidgb |
0445 F9A8 AE 21 RPLSWI LDX 1,Y ; LOAD BP ADDRESS FROM BP TABLE
|
1980 |
|
|
0446 F9AA 8C DF C0 CMPX #STACK ; COMPARE TO TOP AVAILABLE USER MEMORY
|
1981 |
|
|
0447 F9AD 24 0A BCC FFSTBL ; GO RESET TABLE ENTRY TO $FF'S
|
1982 |
|
|
0448 F9AF A6 84 LDA ,X ; GET DATA FROM BP ADDRESS
|
1983 |
|
|
0449 F9B1 81 3F CMPA #$3F ; IS IT SWI?
|
1984 |
|
|
0450 F9B3 26 04 BNE FFSTBL ; IF NOT, RESET TABLE ENTRY TO $FF'S
|
1985 |
|
|
0451 F9B5 A6 A4 LDA ,Y ; GET ORIGINAL DATA FROM BP TABLE
|
1986 |
|
|
0452 F9B7 A7 84 STA ,X ; $FAD3 RESTORE DATA AT BP ADDRESS
|
1987 |
|
|
0453 F9B9 86 FF FFSTBL LDA #$FF ; LOAD $FF IN A-ACC
|
1988 |
|
|
0454 F9BB A7 A0 STA ,Y+ ; RESET BREAKPOINT TABLE DATA TO $FF'S
|
1989 |
|
|
0455 F9BD A7 A0 STA ,Y+ ; RESET BREAKPOINT TABLE ADDR TO $FF'S
|
1990 |
|
|
0456 F9BF A7 A0 STA ,Y+
|
1991 |
|
|
0457 F9C1 39 RTS
|
1992 |
218 |
davidgb |
0458 *
|
1993 |
|
|
0459 ** SEARCH BREAKPOINT TABLE FOR MATCH **
|
1994 |
|
|
0460 *
|
1995 |
221 |
davidgb |
0461 F9C2 10 8E DF E3 BPTEST LDY #BPTBL ; POINT TO BREAKPOINT TABLE
|
1996 |
|
|
0462 F9C6 C6 08 LDB #8 ; LOAD BREAKPOINT COUNTER
|
1997 |
|
|
0463 F9C8 A6 A0 FNDBP LDA ,Y+ ; LOAD DATA BYTE
|
1998 |
|
|
0464 F9CA AC A1 CMPX ,Y++ ; COMPARE ADDRESS, IS IT SAME?
|
1999 |
|
|
0465 F9CC 27 04 BEQ BPADJ ; IF SO, ADJUST POINTER FOR TABLE ENTRY
|
2000 |
|
|
0466 F9CE 5A DECB ; IF NOT, DECREMENT BREAKPOINT COUNTER
|
2001 |
|
|
0467 F9CF 26 F7 BNE FNDBP ; AND LOOK FOR NEXT POSSIBLE MATCH
|
2002 |
|
|
0468 F9D1 39 RTS ;
|
2003 |
218 |
davidgb |
0469 *
|
2004 |
|
|
0470 *
|
2005 |
221 |
davidgb |
0471 F9D2 31 3D BPADJ LEAY -3,Y ; MOVE POINTER TO BEGIN OF BP ENTRY
|
2006 |
|
|
0472 F9D4 39 RTS
|
2007 |
218 |
davidgb |
0473 *
|
2008 |
|
|
0474 IFD TRAOPT
|
2009 |
|
|
0475 *
|
2010 |
|
|
0476 ** TRACE from address AAAA BB bytes
|
2011 |
|
|
0477 *
|
2012 |
|
|
0478 TRACE LBSR ALTPC1 ; SET UP NEW PC
|
2013 |
|
|
0479 BVS TREXIT ; ADDRESS ERROR, EXIT
|
2014 |
|
|
0480 LBSR OUT1S
|
2015 |
|
|
0481 LBSR IN1ADR ; Fetch Byte Count
|
2016 |
|
|
0482 BVS TREXIT ; Byte Count error, EXIT
|
2017 |
|
|
0483 STX TRACNT
|
2018 |
|
|
0484 *
|
2019 |
|
|
0485 LDX NMI ; Save NMI Vector
|
2020 |
|
|
0486 STX NMISAV
|
2021 |
|
|
0487 LDX #NMIE ; Set up NMI for Tracing
|
2022 |
|
|
0488 STX NMI
|
2023 |
|
|
0489 LBSR TRAINZ ; Initialise Hardware
|
2024 |
|
|
0490 BRA TRACEG ; Start Trace
|
2025 |
|
|
0491 TREXIT RTS
|
2026 |
|
|
0492 *
|
2027 |
|
|
0493 * CRA0 = 0 CA1 IRQ DISAB, CRA0 = 1 CA1 IRQ ENAB
|
2028 |
|
|
0494 * CRA1 = 1 CA1 Rising edge IRQ
|
2029 |
|
|
0495 * CRA2 = 0 TADATA = Data Direction, CRA2 = 1 TADATA = I/O Register
|
2030 |
|
|
0496 * CRA3 = 0 CA2 = 0 output, CRA3 = 1 CA2 = 1
|
2031 |
|
|
0497 * CRA4 = 1 ] CA2 = Set/Reset output
|
2032 |
|
|
0498 * CRA5 = 1 ]
|
2033 |
|
|
0499 * CRA6 = X CA2 Input Interrupt Flag
|
2034 |
|
|
0500 * CRA7 = X CA1 Interrupt Flag
|
2035 |
|
|
0501 *
|
2036 |
|
|
0502 * CRB0 = 0 CB1 IRQ DISAB, CRB0 = 1 CA1 IRQ ENAB
|
2037 |
|
|
0503 * CRB1 = 1 CB1 Rising edge IRQ
|
2038 |
|
|
0504 * CRB2 = 0 TBDATA = Data Direction, CRB2 = 1 TBDATA = I/O Register
|
2039 |
|
|
0505 * CRB3 = 0 CB2 = 0 output, CRB3 = 1 CB2 = 1
|
2040 |
|
|
0506 * CRB4 = 1 ] CB2 = Set/Reset output
|
2041 |
|
|
0507 * CRB5 = 1 ]
|
2042 |
|
|
0508 * CRB6 = X CB2 Input Interrupt Flag
|
2043 |
|
|
0509 * CRB7 = X CB1 Interrupt Flag
|
2044 |
|
|
0510 *
|
2045 |
|
|
0511 *
|
2046 |
|
|
0512 ** TRACE NMI ENTRY POINT
|
2047 |
|
|
0513 *
|
2048 |
|
|
0514 NMIE TFR S,U
|
2049 |
|
|
0515 LDA #$36 ; Disable Interrupt, CA2 Low
|
2050 |
|
|
0516 STA TACTRL
|
2051 |
|
|
0517 LDA TADATA ; Clear Interrupt flag by reading data port
|
2052 |
|
|
0518 *
|
2053 |
|
|
0519 LBSR REGSTR ; DUMP REGISTERS
|
2054 |
|
|
0520 *
|
2055 |
|
|
0521 LDX 10,U ; TEST IF NEXT INSTRUCTION IS A SWI
|
2056 |
|
|
0522 LDA ,X
|
2057 |
|
|
0523 CMPA #$3F
|
2058 |
|
|
0524 BEQ TRACEX ; EXIT ON SWI
|
2059 |
|
|
0525 *
|
2060 |
|
|
0526 LDX TRACNT ; CHECK IF TRACE COUNT EXPIRED
|
2061 |
|
|
0527 BEQ TRACEX ; YES, GO BACK TO THE MONITOR
|
2062 |
|
|
0528 LEAX -1,X ; ECREMENT TRACE COUNT
|
2063 |
|
|
0529 STX TRACNT
|
2064 |
|
|
0530 *
|
2065 |
|
|
0531 ** TRACE GO (RESUME SINGLE STEP)
|
2066 |
|
|
0532 *
|
2067 |
|
|
0533 TRACEG TFR U,S ; SET UP PROGRAM STACK POINTER
|
2068 |
|
|
0534 LDA #TRADEL ; SET UP TIMER DELAY (NUMB CYCLES FOR RTI+1)
|
2069 |
|
|
0535 STA TADATA
|
2070 |
|
|
0536 LDA #$36 ; LOAD STROBE LOW
|
2071 |
|
|
0537 STA TACTRL
|
2072 |
|
|
0538 LDA TADATA ; CLEAR INTERRUPT
|
2073 |
|
|
0539 LDA #$36 ; RELEASE RESET
|
2074 |
|
|
0540 STA TBCTRL
|
2075 |
|
|
0541 LDA #$3F ; RELEASE LOAD, ENABLE CA1 NMI, CA1 RISING EDGE
|
2076 |
|
|
0542 STA TACTRL
|
2077 |
|
|
0543 RTI ; GO EXECUTE INSTRUCTION
|
2078 |
|
|
0544 *
|
2079 |
|
|
0545 TRACEX LDX NMISAV ; Restore NMI vector
|
2080 |
|
|
0546 STX NMI
|
2081 |
|
|
0547 LBRA NEXTCMD ; Jump back to the command loop.
|
2082 |
|
|
0548 *
|
2083 |
|
|
0549 ** TRACE HARDWARE INITIALISATION
|
2084 |
|
|
0550 *
|
2085 |
|
|
0551 TRAINZ LDA #$32 ; SELECT DDRA, CA2 LOW, NMI DISABLED
|
2086 |
|
|
0552 STA TACTRL
|
2087 |
|
|
0553 LDA #$3A ; SELECT DDRB, CB2 HIGH, FIRQ DISABLED
|
2088 |
|
|
0554 STA TBCTRL
|
2089 |
|
|
0555 LDA #$FF ; PORTA = OUTPUT
|
2090 |
|
|
0556 STA TADATA
|
2091 |
|
|
0557 LDA #$00 ; PORTB = INPUT
|
2092 |
|
|
0558 STA TBDATA
|
2093 |
|
|
0559 LDA #$36 ; SELECT OUTPUT REGISTER A, CA2 LOW
|
2094 |
|
|
0560 STA TACTRL
|
2095 |
|
|
0561 LDA #$3E ; SELECT OUTPUT REGISTER B, CB2 HIGH
|
2096 |
|
|
0562 STA TBCTRL
|
2097 |
|
|
0563 RTS
|
2098 |
|
|
0564 *
|
2099 |
|
|
0565 ENDIF TRAOPT
|
2100 |
|
|
0565 ENDIF TRAOPT
|
2101 |
|
|
0566 IFD MFDCOPT
|
2102 |
|
|
0567 *
|
2103 |
|
|
0568 ** "U" MINI DISK BOOT
|
2104 |
|
|
0569 *
|
2105 |
|
|
0570 MINBOOT TST CMDFDC
|
2106 |
|
|
0571 CLR DRVFDC
|
2107 |
|
|
0572 LDX #$0000
|
2108 |
|
|
0573 LOOP LEAX $01,X
|
2109 |
|
|
0574 CMPX #$0000
|
2110 |
|
|
0575 BNE LOOP
|
2111 |
|
|
0576 LDA #$0F
|
2112 |
|
|
0577 STA CMDFDC
|
2113 |
|
|
0578 BSR DELAY
|
2114 |
|
|
0579 LOOP1 LDB CMDFDC
|
2115 |
|
|
0580 BITB #$01
|
2116 |
|
|
0581 BNE LOOP1
|
2117 |
|
|
0582 LDA #$01
|
2118 |
|
|
0583 STA SECFDC
|
2119 |
|
|
0584 BSR DELAY
|
2120 |
|
|
0585 LDA #$8C
|
2121 |
|
|
0586 STA CMDFDC
|
2122 |
|
|
0587 BSR DELAY
|
2123 |
|
|
0588 LDX #$C000
|
2124 |
|
|
0589 BRA LOOP3
|
2125 |
|
|
0590 LOOP2 BITB #$02
|
2126 |
|
|
0591 BEQ LOOP3
|
2127 |
|
|
0592 LDA DATFDC
|
2128 |
|
|
0593 STA ,X+
|
2129 |
|
|
0594 LOOP3 LDB CMDFDC
|
2130 |
|
|
0595 BITB #$01
|
2131 |
|
|
0596 BNE LOOP2
|
2132 |
|
|
0597 BITB #$2C
|
2133 |
|
|
0598 BEQ LOOP4
|
2134 |
|
|
0599 RTS
|
2135 |
|
|
0600 *
|
2136 |
|
|
0601 LOOP4 LDX #$C000
|
2137 |
|
|
0602 STX $0A,U
|
2138 |
|
|
0603 TFR U,S
|
2139 |
|
|
0604 RTI
|
2140 |
|
|
0605 *
|
2141 |
|
|
0606 DELAY LDB #$04
|
2142 |
|
|
0607 LOOP5 DECB
|
2143 |
|
|
0608 BNE LOOP5
|
2144 |
|
|
0609 RTS
|
2145 |
|
|
0610 ENDIF MFDCOPT
|
2146 |
|
|
0610 ENDIF MFDCOPT
|
2147 |
|
|
0611 *
|
2148 |
|
|
0612 IFD DMAFOPT
|
2149 |
|
|
0613 *
|
2150 |
|
|
0614 *** "D" DISK BOOT FOR DMAF2 ***
|
2151 |
|
|
0615 *
|
2152 |
|
|
0616 DBOOT LDA #$DE
|
2153 |
|
|
0617 STA DRVREG
|
2154 |
|
|
0618 LDA #$FF
|
2155 |
|
|
0619 STA PRIREG ; $FAF8
|
2156 |
|
|
0620 STA CCREG
|
2157 |
|
|
0621 STA AAAREG
|
2158 |
|
|
0622 STA BBBREG
|
2159 |
|
|
0623 TST CCREG
|
2160 |
|
|
0624 LDA #$D8
|
2161 |
|
|
0625 STA COMREG
|
2162 |
|
|
0626 LBSR DLY
|
2163 |
|
|
0627 DBOOT0 LDA COMREG
|
2164 |
|
|
0628 BMI DBOOT0
|
2165 |
|
|
0629 LDA #$09
|
2166 |
|
|
0630 STA COMREG
|
2167 |
|
|
0631 LBSR DLY
|
2168 |
|
|
0632 *
|
2169 |
|
|
0633 DISKWT LDA COMREG ; FETCH DRIVE STATUS
|
2170 |
|
|
0634 BITA #1 ; TEST BUSY BIT
|
2171 |
|
|
0635 BNE DISKWT ; LOOP UNTIL NOT BUSY
|
2172 |
|
|
0636 *
|
2173 |
|
|
0637 BITA #$10
|
2174 |
|
|
0638 BNE DBOOT
|
2175 |
|
|
0639 *
|
2176 |
|
|
0640 LDX #$C000 ; LOGICAL ADDR. = $C000
|
2177 |
|
|
0641 BSR LRA ; GET 20 BIT PHYSICAL ADDR. OF LOG. ADDR.
|
2178 |
|
|
0642 ORA #$10
|
2179 |
|
|
0643 STA CCCREG
|
2180 |
|
|
0644 TFR X,D
|
2181 |
|
|
0645 COMA ;
|
2182 |
|
|
0646 COMB ;
|
2183 |
|
|
0647 STD ADDREG
|
2184 |
|
|
0648 LDX #$FEFF ; LOAD DMA BYTE COUNT = $100
|
2185 |
|
|
0649 STX CNTREG ; STORE IN COUNT REGISTER
|
2186 |
|
|
0650 LDA #$FF ; LOAD THE CHANNEL REGISTER
|
2187 |
|
|
0651 STA CCREG
|
2188 |
|
|
0652 LDA #$FE ; SET CHANNEL 0
|
2189 |
|
|
0653 STA PRIREG
|
2190 |
|
|
0654 LDA #1 ; SET SECTOR TO "1"
|
2191 |
|
|
0655 STA SECREG ; ISSUE COMMAND
|
2192 |
|
|
0656 LDA #$8C ; SET SINGLE SECTOR READ
|
2193 |
|
|
0657 STA COMREG ; ISSUE COMMAND
|
2194 |
|
|
0658 BSR DLY
|
2195 |
|
|
0659 *
|
2196 |
|
|
0660 * THE FOLLOWING CODE TESTS THE STATUS OF THE
|
2197 |
|
|
0661 * CHANNEL CONTROL REGISTER. IF "D7" IS NOT
|
2198 |
|
|
0662 * ZERO THEN IT WILL LOOP WAITING FOR "D7"
|
2199 |
|
|
0663 * TO GO TO ZERO. IF AFTER 65,536 TRIES IT
|
2200 |
|
|
0664 * IS STILL A ONE THE BOOT OPERATION WILL
|
2201 |
|
|
0665 * BE STARTED OVER FROM THE BEGINING.
|
2202 |
|
|
0666 *
|
2203 |
|
|
0667 CLRB ;
|
2204 |
|
|
0668 DBOOT1 PSHS B ; $FB55
|
2205 |
|
|
0669 CLRB ;
|
2206 |
|
|
0670 DBOOT2 TST CCREG
|
2207 |
|
|
0671 BPL DBOOT3
|
2208 |
|
|
0672 DECB ;
|
2209 |
|
|
0673 BNE DBOOT2
|
2210 |
|
|
0674 PULS B
|
2211 |
|
|
0675 DECB
|
2212 |
|
|
0676 BNE DBOOT1
|
2213 |
|
|
0677 BRA DBOOT
|
2214 |
|
|
0678 DBOOT3 PULS B
|
2215 |
|
|
0679 LDA COMREG
|
2216 |
|
|
0680 BITA #$1C
|
2217 |
|
|
0681 BEQ DBOOT4
|
2218 |
|
|
0682 RTS ;
|
2219 |
|
|
0683 *
|
2220 |
|
|
0684 *
|
2221 |
|
|
0685 DBOOT4 LDB #$DE
|
2222 |
|
|
0686 STB DRVREG
|
2223 |
|
|
0687 LDX #$C000
|
2224 |
|
|
0688 STX 10,U
|
2225 |
|
|
0689 TFR U,S ; $FB7B
|
2226 |
|
|
0690 RTI ;
|
2227 |
|
|
0691 ENDIF DMAFOPT
|
2228 |
|
|
0691 ENDIF DMAFOPT
|
2229 |
|
|
0692 *
|
2230 |
|
|
0693 IFD CF8OPT
|
2231 |
|
|
0694 *
|
2232 |
|
|
0695 * COMPACT FLASH BOOT
|
2233 |
|
|
0696 *
|
2234 |
|
|
0697 CFBOOT BSR WAITRDY
|
2235 |
|
|
0698 LDA #HEADLBA
|
2236 |
|
|
0699 STA CF_HEAD
|
2237 |
|
|
0700 BSR WAITRDY
|
2238 |
|
|
0701 LDA #FEAT8BIT
|
2239 |
|
|
0702 STA CF_FEATURE
|
2240 |
|
|
0703 LDA #CMDFEATURE
|
2241 |
|
|
0704 STA CF_COMAND
|
2242 |
|
|
0705 BSR WAITRDY
|
2243 |
|
|
0706 *
|
2244 |
|
|
0707 * READ SECTORS FROM CF
|
2245 |
|
|
0708 *
|
2246 |
|
|
0709 CFREAD LDA #$01
|
2247 |
|
|
0710 STA CF_SECCNT
|
2248 |
|
|
0711 CLRA
|
2249 |
|
|
0712 STA CF_SECNUM
|
2250 |
|
|
0713 STA CF_CYLLO
|
2251 |
|
|
0714 STA CF_CYLHI
|
2252 |
|
|
0715 *
|
2253 |
|
|
0716 LDA #CMDREAD ; IDE READ MULTIPLE
|
2254 |
|
|
0717 STA CF_COMAND
|
2255 |
|
|
0718 BSR WAITRDY
|
2256 |
|
|
0719 LDX #$C000
|
2257 |
|
|
0720 *
|
2258 |
|
|
0721 * READ LOOP
|
2259 |
|
|
0722 *
|
2260 |
|
|
0723 RDLOOP BSR WAITDRQ
|
2261 |
|
|
0724 LDA CF_DATA
|
2262 |
|
|
0725 STA ,X+
|
2263 |
|
|
0726 CMPX #$C200
|
2264 |
|
|
0727 BNE RDLOOP
|
2265 |
|
|
0728 *
|
2266 |
|
|
0729 LDX #$C000
|
2267 |
|
|
0730 STX $0A,U
|
2268 |
|
|
0731 TFR U,S
|
2269 |
|
|
0732 RTI
|
2270 |
|
|
0733 *
|
2271 |
|
|
0734 * WAIT UNTIL READY
|
2272 |
|
|
0735 *
|
2273 |
|
|
0736 WAITRDY LDA CF_STATUS
|
2274 |
|
|
0737 BITA #BUSY
|
2275 |
|
|
0738 BNE WAITRDY
|
2276 |
|
|
0739 LDA CF_STATUS
|
2277 |
|
|
0740 BITA #DRDY
|
2278 |
|
|
0741 BEQ WAITRDY
|
2279 |
|
|
0742 RTS
|
2280 |
|
|
0743 *
|
2281 |
|
|
0744 * WAIT FOR DATA REQUEST
|
2282 |
|
|
0745 *
|
2283 |
|
|
0746 WAITDRQ LDA CF_STATUS
|
2284 |
|
|
0747 BITA #DRQ
|
2285 |
|
|
0748 BEQ WAITDRQ
|
2286 |
|
|
0749 RTS
|
2287 |
|
|
0750 ENDIF CF8OPT
|
2288 |
|
|
0750 ENDIF CF8OPT
|
2289 |
|
|
0751 *
|
2290 |
|
|
0752 IFD IDEOPT
|
2291 |
|
|
0753 *
|
2292 |
|
|
0754 * XESS 16 BIT IDE BOOT
|
2293 |
|
|
0755 *
|
2294 |
221 |
davidgb |
0756 F9D5 CC 00 06 IDEBOOT LDD #AUXRESET
|
2295 |
|
|
0757 F9D8 FD E1 1E STD CF_AUX
|
2296 |
|
|
0758 F9DB CC 00 02 LDD #AUXRSTREL
|
2297 |
|
|
0759 F9DE FD E1 1E STD CF_AUX
|
2298 |
|
|
0760 F9E1 CC 00 E0 LDD #HEADLBA
|
2299 |
|
|
0761 F9E4 FD E1 0C STD CF_HEAD
|
2300 |
|
|
0762 F9E7 8D 2E BSR WAITRDY
|
2301 |
218 |
davidgb |
0763 *
|
2302 |
|
|
0764 * READ SECTORS FROM CF
|
2303 |
|
|
0765 *
|
2304 |
221 |
davidgb |
0766 F9E9 CC 00 01 LDD #$01
|
2305 |
|
|
0767 F9EC FD E1 04 STD CF_SECCNT
|
2306 |
|
|
0768 F9EF 5F CLRB
|
2307 |
|
|
0769 F9F0 FD E1 06 STD CF_SECNUM
|
2308 |
|
|
0770 F9F3 FD E1 08 STD CF_CYLLO
|
2309 |
|
|
0771 F9F6 FD E1 0A STD CF_CYLHI
|
2310 |
218 |
davidgb |
0772 *
|
2311 |
221 |
davidgb |
0773 F9F9 C6 20 LDB #CMDREAD ; IDE READ MULTIPLE
|
2312 |
|
|
0774 F9FB FD E1 0E STD CF_COMAND
|
2313 |
|
|
0775 F9FE 8D 17 BSR WAITRDY
|
2314 |
|
|
0776 FA00 8E C0 00 LDX #$C000
|
2315 |
218 |
davidgb |
0777 *
|
2316 |
|
|
0778 * READ LOOP
|
2317 |
|
|
0779 *
|
2318 |
221 |
davidgb |
0780 FA03 8D 21 RDLOOP BSR WAITDRQ
|
2319 |
|
|
0781 FA05 FC E1 00 LDD CF_DATA
|
2320 |
|
|
0782 FA08 E7 80 STB ,X+
|
2321 |
|
|
0783 FA0A 8C C1 00 CMPX #$C100
|
2322 |
|
|
0784 FA0D 26 F4 BNE RDLOOP
|
2323 |
218 |
davidgb |
0785 *
|
2324 |
221 |
davidgb |
0786 FA0F 8E C0 00 LDX #$C000
|
2325 |
|
|
0787 FA12 AF 4A STX $0A,U
|
2326 |
|
|
0788 FA14 1F 34 TFR U,S
|
2327 |
|
|
0789 FA16 3B RTI
|
2328 |
218 |
davidgb |
0790 *
|
2329 |
|
|
0791 * WAIT UNTIL READY
|
2330 |
|
|
0792 *
|
2331 |
221 |
davidgb |
0793 FA17 FC E1 0E WAITRDY LDD CF_STATUS
|
2332 |
|
|
0794 FA1A C5 80 BITB #BUSY
|
2333 |
|
|
0795 FA1C 26 F9 BNE WAITRDY
|
2334 |
|
|
0796 FA1E FC E1 0E LDD CF_STATUS
|
2335 |
|
|
0797 FA21 C5 40 BITB #DRDY
|
2336 |
|
|
0798 FA23 27 F2 BEQ WAITRDY
|
2337 |
|
|
0799 FA25 39 RTS
|
2338 |
218 |
davidgb |
0800 *
|
2339 |
|
|
0801 * WAIT FOR DATA REQUEST
|
2340 |
|
|
0802 *
|
2341 |
221 |
davidgb |
0803 FA26 FC E1 0E WAITDRQ LDD CF_STATUS
|
2342 |
|
|
0804 FA29 C5 08 BITB #DRQ
|
2343 |
|
|
0805 FA2B 27 F9 BEQ WAITDRQ
|
2344 |
|
|
0806 FA2D 39 RTS
|
2345 |
218 |
davidgb |
0807 ENDIF IDEOPT
|
2346 |
|
|
0808 *
|
2347 |
|
|
0809 IFD RTCOPT
|
2348 |
|
|
0810 *
|
2349 |
|
|
0811 * CLOCK INTER FACE UTILITY
|
2350 |
|
|
0812 *
|
2351 |
|
|
0813 * TIME
|
2352 |
|
|
0814 * If no argument is specified, the current time
|
2353 |
|
|
0815 * will be displayed.
|
2354 |
|
|
0816 *
|
2355 |
|
|
0817 * READ A REGISTER FROM THE COUNTER.
|
2356 |
|
|
0818 * The X Index rgister points to the register
|
2357 |
|
|
0819 * to be read. The Status Register is checked
|
2358 |
|
|
0820 * before and after the register is read before
|
2359 |
|
|
0821 * returning a value in accumulator A
|
2360 |
|
|
0822 *
|
2361 |
|
|
0823 RDCLK TST CLKSTA
|
2362 |
|
|
0824 BNE RDCLK
|
2363 |
|
|
0825 RDCLK1 LDA 0,X
|
2364 |
|
|
0826 TST CLKSTA
|
2365 |
|
|
0827 BNE RDCLK1
|
2366 |
|
|
0828 RTS
|
2367 |
|
|
0829 *
|
2368 |
|
|
0830 * MAIN PROGRAM:
|
2369 |
|
|
0831 *
|
2370 |
|
|
0832 TIMSET LDX #COUNTR ; POINT TO TIMER
|
2371 |
|
|
0833 LBSR BYTE ; READ HOURS
|
2372 |
|
|
0834 BVS SHOWTM ; NO ARG, DISP TIME
|
2373 |
|
|
0835 STA HOUR,X
|
2374 |
|
|
0836 LBSR OUT1S
|
2375 |
|
|
0837 LBSR BYTE ; READ MINUITES
|
2376 |
|
|
0838 BVS SHOWTM
|
2377 |
|
|
0839 STA MINUIT,X
|
2378 |
|
|
0840 LBSR OUT1S
|
2379 |
|
|
0841 LBSR BYTE ; SECONDS.
|
2380 |
|
|
0842 BVS SHOWTM
|
2381 |
|
|
0843 STA SECOND,X
|
2382 |
|
|
0844 *
|
2383 |
|
|
0845 * DISPLAY CURRENT TIME
|
2384 |
|
|
0846 *
|
2385 |
|
|
0847 SHOWTM LBSR PCRLF
|
2386 |
|
|
0848 LDX #COUNTR+HOUR
|
2387 |
|
|
0849 LDB #3
|
2388 |
|
|
0850 SHOWLP BSR RDCLK
|
2389 |
|
|
0851 LBSR OUT2H
|
2390 |
|
|
0852 LDA #':
|
2391 |
|
|
0853 LBSR OUTCH
|
2392 |
|
|
0854 LEAX -1,X
|
2393 |
|
|
0855 DECB
|
2394 |
|
|
0856 BNE SHOWLP
|
2395 |
|
|
0857 RTS
|
2396 |
|
|
0858 *
|
2397 |
|
|
0859 * INITIATE CLOCK.
|
2398 |
|
|
0860 * MASK INTERRUPTS.
|
2399 |
|
|
0861 *
|
2400 |
|
|
0862 CLKINZ CLR CINTCR ; MASK ALL INTERRUPTS
|
2401 |
|
|
0863 TST CINTSR ; CLEAR ANY INTERRUPTS
|
2402 |
|
|
0864 RTS
|
2403 |
|
|
0865 ENDIF RTCOPT
|
2404 |
|
|
0865 ENDIF RTCOPT
|
2405 |
|
|
0866 IFD DATOPT
|
2406 |
|
|
0867 *
|
2407 |
|
|
0868 ***** LRA LOAD REAL ADDRESS *****
|
2408 |
|
|
0869 *
|
2409 |
|
|
0870 * THE FOLLOWING CODE LOADS THE 20-BIT
|
2410 |
|
|
0871 * PHYSICAL ADDRESS OF A MEMORY BYTE
|
2411 |
|
|
0872 * INTO THE "A" AND "X" REGISTERS. THIS
|
2412 |
|
|
0873 * ROUTINE IS ENTERED WITH THE LOGICAL
|
2413 |
|
|
0874 * ADDRESS OF A MEMORY BYTE IN THE "IX"
|
2414 |
|
|
0875 * REGISTER. EXIT IS MADE WITH THE HIGH-
|
2415 |
|
|
0876 * ORDER FOUR BITS OF THE 20-BIT PHYSICAL
|
2416 |
|
|
0877 * ADDRESS IN THE "A" REGISTER, AND THE
|
2417 |
|
|
0878 * LOW-ORDER 16-BITS OF THE 20-BIT
|
2418 |
|
|
0879 * PHYSICAL ADDRESS IN THE "IX" REGISTER.
|
2419 |
|
|
0880 * ALL OTHER REGISTERS ARE PRESERVED.
|
2420 |
|
|
0881 * THIS ROUTINE IS REQUIRED SINCE THE
|
2421 |
|
|
0882 * DMAF1 AND DMAF2 DISK CONTROLLERS MUST
|
2422 |
|
|
0883 * PRESENT PHYSICAL ADDRESSES ON THE
|
2423 |
|
|
0884 * SYSTEM BUS.
|
2424 |
|
|
0885 *
|
2425 |
221 |
davidgb |
0886 FA2E 34 36 LRA PSHS A,B,X,Y ; PUSH REGISTERS ON STACK
|
2426 |
|
|
0887 FA30 A6 62 LDA 2,S ; GET MSB LOGICAL ADDR FRM X REG ON STACK
|
2427 |
|
|
0888 FA32 44 LSRA ;
|
2428 |
|
|
0889 FA33 44 LSRA ; ADJ FOR INDEXED INTO
|
2429 |
|
|
0890 FA34 44 LSRA ; CORRESPONDING LOCATION
|
2430 |
|
|
0891 FA35 44 LSRA ; IN LRA TABLE
|
2431 |
|
|
0892 FA36 10 8E DF D0 LDY #LRARAM ; LOAD LRA TABLE BASE ADDRESS
|
2432 |
|
|
0893 FA3A E6 A6 LDB A,Y ; GET PHYSICAL ADDR. DATA FROM LRA TABLE
|
2433 |
|
|
0894 FA3C 54 LSRB ; ADJ. REAL ADDR. TO REFLECT EXTENDED
|
2434 |
|
|
0895 FA3D 54 LSRB ; PHYSICAL ADDRESS.
|
2435 |
|
|
0896 FA3E 54 LSRB ; EXTENDED MS 4-BITS ARE RETURNED
|
2436 |
|
|
0897 FA3F 54 LSRB ; IN THE "A" ACCUMULATOR
|
2437 |
|
|
0898 FA40 E7 E4 STB ,S ; MS 4 BITS IN A ACCUM. STORED ON STACK
|
2438 |
|
|
0899 FA42 E6 A6 LDB A,Y ; LOAD REAL ADDRESS DATA FROM LRA TABLE
|
2439 |
|
|
0900 FA44 53 COMB ; COMP TO ADJ FOR PHYSICAL ADDR. IN X REG
|
2440 |
|
|
0901 FA45 58 ASLB ; ADJ DATA FOR RELOCATION IN X REG
|
2441 |
|
|
0902 FA46 58 ASLB ;
|
2442 |
|
|
0903 FA47 58 ASLB ; $FB97
|
2443 |
|
|
0904 FA48 58 ASLB ;
|
2444 |
|
|
0905 FA49 A6 62 LDA 2,S ; GET MS BYTE OF LOGICAL ADDR.
|
2445 |
|
|
0906 FA4B 84 0F ANDA #$0F ; MASK MS NIBBLE OF LOGICAL ADDRESS
|
2446 |
|
|
0907 FA4D A7 62 STA 2,S ; SAVE IT IN X REG ON STACK
|
2447 |
|
|
0908 FA4F EA 62 ORB 2,S ; SET MS BYTE IN X REG TO ADJ PHY ADDR.
|
2448 |
218 |
davidgb |
0909 *
|
2449 |
|
|
0910 * PLUS LS NIBBLE OF LOGICAL ADDRESS
|
2450 |
|
|
0911 *
|
2451 |
221 |
davidgb |
0912 FA51 E7 62 STB 2,S ; SAVE AS LS 16 BITS OF PHY ADDR IN X REG ON STACK
|
2452 |
|
|
0913 FA53 35 B6 PULS A,B,X,Y,PC ; POP REGS. FROM STACK
|
2453 |
218 |
davidgb |
0914 ENDIF DATOPT
|
2454 |
|
|
0915 *
|
2455 |
|
|
0916 * DELAY LOOP
|
2456 |
|
|
0917 *
|
2457 |
221 |
davidgb |
0918 FA55 34 04 DLY PSHS B ; SAVE CONTENTS OF "B"
|
2458 |
|
|
0919 FA57 C6 20 LDB #$20 ; GET LOOP DELAY VALUE
|
2459 |
|
|
0920 FA59 5A SUB1 DECB ; SUBTRACT ONE FROM VALUE
|
2460 |
|
|
0921 FA5A 26 FD BNE SUB1 ; LOOP UNTIL ZERO
|
2461 |
|
|
0922 FA5C 35 84 PULS B,PC ; RESTORE CONTENTS OF "B"
|
2462 |
218 |
davidgb |
0923 * RTS ;
|
2463 |
|
|
0924 *
|
2464 |
|
|
0925 ***** "L" LOAD MIKBUG TAPE *****
|
2465 |
|
|
0926 *
|
2466 |
221 |
davidgb |
0927 FA5E BD FC F9 LOAD JSR ACINIZ
|
2467 |
|
|
0928 FA61 86 11 LDA #$11 ; LOAD 'DC1' CASS. READ ON CODE
|
2468 |
|
|
0929 FA63 17 02 7A LBSR OUTCH ; OUTPUT IT TO TERMINAL PORT
|
2469 |
|
|
0930 FA66 7F DF E2 CLR ECHO ; TURN OFF ECHO FLAG
|
2470 |
|
|
0931 FA69 17 02 2A LOAD1 LBSR ECHON ; INPUT 8 BIT BYTE WITH NO ECHO
|
2471 |
|
|
0932 FA6C 81 53 LOAD2 CMPA #'S ; IS IT AN "S", START CHARACTER ?
|
2472 |
|
|
0933 FA6E 26 F9 BNE LOAD1 ; IF NOT, DISCARD AND GET NEXT CHAR.
|
2473 |
|
|
0934 FA70 17 02 23 LBSR ECHON
|
2474 |
|
|
0935 FA73 81 39 CMPA #'9 ; IS IT A "9" , END OF FILE CHAR ?
|
2475 |
|
|
0936 FA75 27 3D BEQ LOAD21 ; IF SO, EXIT LOAD
|
2476 |
|
|
0937 FA77 81 31 CMPA #'1 ; IS IT A "1" , FILE LOAD CHAR ?
|
2477 |
|
|
0938 FA79 26 F1 BNE LOAD2 ; IF NOT, LOOK FOR START CHAR.
|
2478 |
|
|
0939 FA7B 17 01 A8 LBSR BYTE ; INPUT BYTE COUNT
|
2479 |
|
|
0940 FA7E 34 02 PSHS A ; PUSH COUNT ON STACK
|
2480 |
|
|
0941 FA80 29 26 BVS LODERR ; (V) C-CODE SET, ILLEGAL HEX
|
2481 |
|
|
0942 FA82 17 01 91 LBSR IN1ADR ; INPUT LOAD ADDRESS
|
2482 |
|
|
0943 FA85 29 21 BVS LODERR ; (V) C-CODE SET, ADDR NOT HEX
|
2483 |
|
|
0944 FA87 34 10 PSHS X ; PUSH ADDR ON STACK
|
2484 |
|
|
0945 FA89 E6 E0 LDB ,S+ ; LOAD MSB OF ADDR AS CHECKSUM BYTE
|
2485 |
|
|
0946 FA8B EB E0 ADDB ,S+ ; ADD LSB OF ADDR TO CHECKSUM
|
2486 |
|
|
0947 FA8D EB E4 ADDB ,S ; ADD BYTE COUNT BYTE TO CHECKSUM
|
2487 |
|
|
0948 FA8F 6A E4 DEC ,S ; $FC37 DECREMENT BYTE COUNT 2 TO BYPASS
|
2488 |
|
|
0949 FA91 6A E4 DEC ,S ; ADDRESS BYTES.
|
2489 |
|
|
0950 FA93 34 04 LOAD10 PSHS B ; PUSH CHECKSUM ON STACK
|
2490 |
|
|
0951 FA95 17 01 8E LBSR BYTE ; INPUT DATA BYTE (2 HEX CHAR)
|
2491 |
|
|
0952 FA98 35 04 PULS B ; POP CHECKSUM FROM STACK
|
2492 |
|
|
0953 FA9A 29 0C BVS LODERR ; (V) SET, DATA BYTE NOT HEX
|
2493 |
|
|
0954 FA9C 34 02 PSHS A ; PUSH DATA BYTE ON STACK
|
2494 |
|
|
0955 FA9E EB E0 ADDB ,S+ ; ADD DATA TO CHECKSUM, AUTO INC STACK
|
2495 |
|
|
0956 FAA0 6A E4 DEC ,S ; DECREMENT BYTE COUNT 1
|
2496 |
|
|
0957 FAA2 27 05 BEQ LOAD16 ; IF BYTE COUNT ZERO, TEST CHECKSUM
|
2497 |
|
|
0958 FAA4 A7 80 STA ,X+ ; SAVE DATA BYTE IN MEMORY
|
2498 |
|
|
0959 FAA6 20 EB BRA LOAD10 ; GET NEXT DATA BYTE
|
2499 |
|
|
0960 FAA8 5F LODERR CLRB ; ERROR CONDITION, ZERO CHECKSUM ;
|
2500 |
|
|
0961 FAA9 35 02 LOAD16 PULS A ; ADJUST STACK (REMOVE BYTE COUNT)
|
2501 |
|
|
0962 FAAB C1 FF CMPB #$FF ; CHECKSUM OK?
|
2502 |
|
|
0963 FAAD 27 BA BEQ LOAD1 ; IF SO, LOAD NEXT LINE
|
2503 |
|
|
0964 FAAF 86 3F LDA #'? ; LOAD (?) ERROR INDICATOR
|
2504 |
|
|
0965 FAB1 17 02 2C LBSR OUTCH ; OUTPUT IT TO TERMINAL
|
2505 |
|
|
0966 FAB4 73 DF E2 LOAD21 COM ECHO ; TURN ECHO ON
|
2506 |
|
|
0967 FAB7 86 13 LDA #$13 ; $FC5F LOAD 'DC3' CASS. READ OFF CODE
|
2507 |
|
|
0968 FAB9 16 02 24 LBRA OUTCH ; OUTPUT IT
|
2508 |
218 |
davidgb |
0969 *
|
2509 |
|
|
0970 ***** "P" PUNCH MIKBUG TAPE *****
|
2510 |
|
|
0971 *
|
2511 |
221 |
davidgb |
0972 FABC 6F E2 PUNCH CLR ,-S ; CLEAR RESERVED BYTE ON STACK
|
2512 |
|
|
0973 FABE 17 01 4A LBSR IN2ADR ; GET BEGIN AND END ADDRESS
|
2513 |
|
|
0974 FAC1 34 30 PSHS X,Y ; SAVE ADDRESSES ON STACK
|
2514 |
|
|
0975 FAC3 29 4D BVS PUNEXT ; (V) C-CODE SET, EXIT PUNCH
|
2515 |
|
|
0976 FAC5 AC 62 CMPX 2,S ; COMPARE BEGIN TO END ADDR
|
2516 |
|
|
0977 FAC7 25 49 BCS PUNEXT ; IF BEGIN GREATER THAN END, EXIT PUNCH
|
2517 |
|
|
0978 FAC9 30 01 LEAX 1,X ; INCREMENT END ADDRESS
|
2518 |
|
|
0979 FACB AF E4 STX ,S ; STORE END ADDR ON STACK
|
2519 |
|
|
0980 FACD BD FC F9 JSR ACINIZ
|
2520 |
|
|
0981 FAD0 86 12 LDA #$12 ; LOAD 'DC2' PUNCH ON CODE
|
2521 |
|
|
0982 FAD2 17 02 0B LBSR OUTCH ; OUTPUT IT TO TERMINAL
|
2522 |
|
|
0983 FAD5 EC E4 PUNCH2 LDD ,S ; LOAD END ADDR IN D-ACC
|
2523 |
|
|
0984 FAD7 A3 62 SUBD 2,S ; SUBTRACT BEGIN FROM END
|
2524 |
|
|
0985 FAD9 27 06 BEQ PUNCH3 ; SAME, PUNCH 32 BYTES DEFAULT
|
2525 |
|
|
0986 FADB 10 83 00 20 CMPD #$20 ; LESS THAN 32 BYTES?
|
2526 |
|
|
0987 FADF 23 02 BLS PUNCH4 ; PUNCH THAT MANY BYTES
|
2527 |
|
|
0988 FAE1 C6 20 PUNCH3 LDB #$20 ; LOAD BYTE COUNT OF 32.
|
2528 |
|
|
0989 FAE3 E7 64 PUNCH4 STB 4,S ; STORE ON STACK AS BYTE COUNT
|
2529 |
|
|
0990 FAE5 8E FE F3 LDX #MSG20 ; POINT TO MSG "S1"
|
2530 |
|
|
0991 FAE8 17 00 2F LBSR PSTRNG ; PRINT MSG
|
2531 |
|
|
0992 FAEB CB 03 ADDB #3 ; ADD 3 BYTES TO BYTE COUNT
|
2532 |
|
|
0993 FAED 1F 98 TFR B,A ; GET BYTE COUNT IN A-ACC TO PUNCH
|
2533 |
|
|
0994 FAEF 17 01 75 LBSR OUT2H ; OUTPUT BYTE COUNT
|
2534 |
|
|
0995 FAF2 AE 62 LDX 2,S ; LOAD BEGIN ADDRESS
|
2535 |
|
|
0996 FAF4 17 01 68 LBSR OUT4H ; PUNCH ADDRESS
|
2536 |
|
|
0997 FAF7 EB 62 ADDB 2,S ; ADD ADDR MSB TO CHECKSUM
|
2537 |
|
|
0998 FAF9 EB 63 ADDB 3,S ; ADD ADDR LSB TO CHECKSUM
|
2538 |
|
|
0999 FAFB EB 84 PUNCHL ADDB ,X ; ADD DATA BYTE TO CHECKSUM
|
2539 |
|
|
1000 FAFD A6 80 LDA ,X+ ; LOAD DATA BYTE TO PUNCH
|
2540 |
|
|
1001 FAFF 17 01 65 LBSR OUT2H ; OUTPUT DATA BYTE
|
2541 |
|
|
1002 FB02 6A 64 DEC 4,S ; DECREMENT BYTE COUNT
|
2542 |
|
|
1003 FB04 26 F5 BNE PUNCHL ; NOT DONE, PUNCH NEXT BYTE
|
2543 |
|
|
1004 FB06 53 COMB 1's ; COMPLIMENT CHECKSUM BYTE
|
2544 |
|
|
1005 FB07 1F 98 TFR B,A ; GET IT IN A-ACC TO PUNCH
|
2545 |
|
|
1006 FB09 17 01 5B LBSR OUT2H ; OUTPUT CHECKSUM BYTE
|
2546 |
|
|
1007 FB0C AF 62 STX 2,S ; SAVE X-REG IN STACK AS NEW PUNCH ADDR
|
2547 |
|
|
1008 FB0E AC E4 CMPX ,S ; COMPARE IT TO END ADDR
|
2548 |
|
|
1009 FB10 26 C3 BNE PUNCH2 ; $FCB5 PUNCH NOT DONE, CONT.
|
2549 |
|
|
1010 FB12 86 14 PUNEXT LDA #$14 ; LOAD 'DC4' PUNCH OFF CODE
|
2550 |
|
|
1011 FB14 17 01 C9 LBSR OUTCH ; OUTPUT IT
|
2551 |
|
|
1012 FB17 32 65 LEAS 5,S ; READJUST STACK POINTER
|
2552 |
|
|
1013 FB19 39 RTS ;
|
2553 |
218 |
davidgb |
1014 *
|
2554 |
|
|
1015 * PRINT STRING PRECEEDED BY A CR & LF.
|
2555 |
|
|
1016 *
|
2556 |
221 |
davidgb |
1017 FB1A 8D 02 PSTRNG BSR PCRLF ; PRINT CR/LF
|
2557 |
|
|
1018 FB1C 20 71 BRA PDATA ; PRINT STRING POINTED TO BY IX
|
2558 |
218 |
davidgb |
1019 *
|
2559 |
|
|
1020 * PCRLF
|
2560 |
|
|
1021 *
|
2561 |
221 |
davidgb |
1022 FB1E 34 10 PCRLF PSHS X ; SAVE IX
|
2562 |
|
|
1023 FB20 8E FE A4 LDX #MSG2+1 ; POINT TO MSG CR/LF + 3 NULS
|
2563 |
|
|
1024 FB23 17 00 69 LBSR PDATA ; PRINT MSG
|
2564 |
|
|
1025 FB26 35 90 PULS X,PC ; RESTORE IX & RETURN
|
2565 |
218 |
davidgb |
1026 *
|
2566 |
|
|
1027 * LONG BRANCHES TO COMMON ROUTINES
|
2567 |
|
|
1028 *
|
2568 |
221 |
davidgb |
1029 FB28 16 01 B3 JOUT1S LBRA OUT1S
|
2569 |
|
|
1030 FB2B 16 00 F8 JBYTE LBRA BYTE
|
2570 |
|
|
1031 FB2E 16 00 E5 JIN1ADR LBRA IN1ADR
|
2571 |
218 |
davidgb |
1032 *
|
2572 |
|
|
1033 * ALTER "PC" PROGRAM COUNTER
|
2573 |
|
|
1034 *
|
2574 |
221 |
davidgb |
1035 FB31 17 00 91 ALTRPC LBSR PRTPC ; $FCF5 PRINT MSG " PC = "
|
2575 |
|
|
1036 FB34 8D F2 ALTPC1 BSR JOUT1S ; OUTPUT SPACE
|
2576 |
|
|
1037 FB36 8D F6 BSR JIN1ADR ; GET NEW CONTENTS FOR "PC"
|
2577 |
|
|
1038 FB38 29 02 BVS ALTPCD ; EXIT IF INVALID HEX
|
2578 |
|
|
1039 FB3A AF 4A STX 10,U ; POKE IN NEW CONTENTS
|
2579 |
|
|
1040 FB3C 39 ALTPCD RTS ;
|
2580 |
218 |
davidgb |
1041 *
|
2581 |
|
|
1042 * ALTER "U" USER STACK POINTER
|
2582 |
|
|
1043 *
|
2583 |
221 |
davidgb |
1044 FB3D 8D 61 ALTRU BSR PRTUS ; $FCCA PRINT MSG " US = "
|
2584 |
|
|
1045 FB3F 8D E7 BSR JOUT1S ; OUTPUT SPACE
|
2585 |
|
|
1046 FB41 8D EB BSR JIN1ADR ; GET NEW CONTENTS FOR "US"
|
2586 |
|
|
1047 FB43 29 02 BVS ALTUD ; EXIT IF INVALID HEX
|
2587 |
|
|
1048 FB45 AF 48 STX 8,U ; POKE IN NEW CONTENTS
|
2588 |
|
|
1049 FB47 39 ALTUD RTS ;
|
2589 |
218 |
davidgb |
1050 *
|
2590 |
|
|
1051 * ALTER "Y" INDEX REGISTER
|
2591 |
|
|
1052 *
|
2592 |
221 |
davidgb |
1053 FB48 8D 72 ALTRY BSR PRTIY ; PRINT MSG " IY = "
|
2593 |
|
|
1054 FB4A 8D DC BSR JOUT1S ; OUTPUT SPACE
|
2594 |
|
|
1055 FB4C 8D E0 BSR JIN1ADR ; GET NEW CONTENTS FOR "IY"
|
2595 |
|
|
1056 FB4E 29 02 BVS ALTYD ; EXIT IF INVALID HEX
|
2596 |
|
|
1057 FB50 AF 46 STX 6,U ; $F8F0 POKE IN NEW CONTENTS
|
2597 |
|
|
1058 FB52 39 ALTYD RTS ;
|
2598 |
218 |
davidgb |
1059 *
|
2599 |
|
|
1060 * ALTER "X" INDEX REGISTER
|
2600 |
|
|
1061 *
|
2601 |
221 |
davidgb |
1062 FB53 8D 5E ALTRX BSR PRTIX ; $FCE0 PRINT MSG " IX = "
|
2602 |
|
|
1063 FB55 8D D1 BSR JOUT1S ; OUTPUT SPACE
|
2603 |
|
|
1064 FB57 8D D5 BSR JIN1ADR
|
2604 |
|
|
1065 FB59 29 02 BVS ALTXD
|
2605 |
|
|
1066 FB5B AF 44 STX 4,U
|
2606 |
|
|
1067 FB5D 39 ALTXD RTS ;
|
2607 |
218 |
davidgb |
1068 *
|
2608 |
|
|
1069 * ALTER "DP" DIRECT PAGE REGISTER
|
2609 |
|
|
1070 *
|
2610 |
221 |
davidgb |
1071 FB5E 8D 49 ALTRDP BSR PRTDP ; $FCD5 PRINT MSG " DP = "
|
2611 |
|
|
1072 FB60 8D C6 BSR JOUT1S ; OUTPUT SPACE
|
2612 |
|
|
1073 FB62 8D C7 BSR JBYTE ; INPUT BYTE (2 HEX CHAR)
|
2613 |
|
|
1074 FB64 29 02 BVS ALTDPD
|
2614 |
|
|
1075 FB66 A7 43 STA 3,U
|
2615 |
|
|
1076 FB68 39 ALTDPD RTS ;
|
2616 |
218 |
davidgb |
1077 *
|
2617 |
|
|
1078 * ALTER "B" ACCUMULATOR
|
2618 |
|
|
1079 *
|
2619 |
221 |
davidgb |
1080 FB69 8D 6C ALTRB BSR PRTB ; $FD09 PRINT MSG " B = "
|
2620 |
|
|
1081 FB6B 8D BB BSR JOUT1S ; OUTPUT SPACE
|
2621 |
|
|
1082 FB6D 8D BC BSR JBYTE ; INPUT BYTE (2 HEX CHAR)
|
2622 |
|
|
1083 FB6F 29 02 BVS ALTBD
|
2623 |
|
|
1084 FB71 A7 42 STA 2,U
|
2624 |
|
|
1085 FB73 39 ALTBD RTS ; $F91C
|
2625 |
218 |
davidgb |
1086 *
|
2626 |
|
|
1087 * ALTER "A" ACCUMULATOR
|
2627 |
|
|
1088 *
|
2628 |
221 |
davidgb |
1089 FB74 8D 58 ALTRA BSR PRTA ; $FCFF RINT MSG " A = "
|
2629 |
|
|
1090 FB76 8D B0 BSR JOUT1S ; OUTPUT SPACE
|
2630 |
|
|
1091 FB78 8D B1 BSR JBYTE ; INPUT BYTE (2 HEX CHAR)
|
2631 |
|
|
1092 FB7A 29 02 BVS ALTAD
|
2632 |
|
|
1093 FB7C A7 41 STA 1,U
|
2633 |
|
|
1094 FB7E 39 ALTAD RTS ;
|
2634 |
218 |
davidgb |
1095 *
|
2635 |
|
|
1096 * ALTER "CC" REGISTER
|
2636 |
|
|
1097 *
|
2637 |
221 |
davidgb |
1098 FB7F 8D 5F ALTRCC BSR PRTCC ; $FD13 PRINT MSG " CC: "
|
2638 |
|
|
1099 FB81 8D A5 BSR JOUT1S ; OUTPUT SPACE
|
2639 |
|
|
1100 FB83 8D A6 BSR JBYTE ; INPUT BYTE (2 HEX CHAR)
|
2640 |
|
|
1101 FB85 29 04 BVS ALTCCD
|
2641 |
|
|
1102 FB87 8A 80 ORA #$80 ; SETS "E" FLAG IN PRINT LIST
|
2642 |
|
|
1103 FB89 A7 C4 STA ,U
|
2643 |
|
|
1104 FB8B 39 ALTCCD RTS ;
|
2644 |
218 |
davidgb |
1105 *
|
2645 |
|
|
1106 * PDATA
|
2646 |
|
|
1107 *
|
2647 |
221 |
davidgb |
1108 FB8C 17 01 51 PRINT LBSR OUTCH
|
2648 |
|
|
1109 FB8F A6 80 PDATA LDA ,X+ ; GET 1st CHAR. TO PRINT
|
2649 |
|
|
1110 FB91 81 04 CMPA #4 ; IS IT EOT?
|
2650 |
|
|
1111 FB93 26 F7 BNE PRINT ; IF NOT EOT PRINT IT
|
2651 |
|
|
1112 FB95 39 RTS ;
|
2652 |
218 |
davidgb |
1113 *
|
2653 |
|
|
1114 * PRINT REGISTERS
|
2654 |
|
|
1115 *
|
2655 |
221 |
davidgb |
1116 FB96 8E FE B6 PRTSP LDX #MSG10 ; POINT TO MSG "SP="
|
2656 |
|
|
1117 FB99 8D F4 BSR PDATA ; PRINT MSG
|
2657 |
|
|
1118 FB9B 1F 31 TFR U,X
|
2658 |
|
|
1119 FB9D 16 00 BF JOUT4H LBRA OUT4H
|
2659 |
218 |
davidgb |
1120 *
|
2660 |
221 |
davidgb |
1121 FBA0 8E FE C2 PRTUS LDX #MSG12 ; POINT TO MSG "US="
|
2661 |
|
|
1122 FBA3 8D EA BSR PDATA ; PRINT MSG
|
2662 |
|
|
1123 FBA5 AE 48 LDX 8,U
|
2663 |
|
|
1124 FBA7 20 F4 BRA JOUT4H
|
2664 |
218 |
davidgb |
1125 *
|
2665 |
221 |
davidgb |
1126 FBA9 8E FE D4 PRTDP LDX #MSG15 ; POINT TO MSG "DP="
|
2666 |
|
|
1127 FBAC 8D E1 BSR PDATA ; PRINT MSG
|
2667 |
|
|
1128 FBAE A6 43 LDA 3,U
|
2668 |
|
|
1129 FBB0 16 00 B4 JOUT2H LBRA OUT2H ; OUTPUT HEX BYTE AS ASCII
|
2669 |
218 |
davidgb |
1130 *
|
2670 |
221 |
davidgb |
1131 FBB3 8E FE CE PRTIX LDX #MSG14 ; POINT TO MSG "IX="
|
2671 |
|
|
1132 FBB6 8D D7 BSR PDATA ; PRINT MSG
|
2672 |
|
|
1133 FBB8 AE 44 LDX 4,U ; $FCE6
|
2673 |
|
|
1134 FBBA 20 E1 BRA JOUT4H
|
2674 |
218 |
davidgb |
1135 *
|
2675 |
221 |
davidgb |
1136 FBBC 8E FE C8 PRTIY LDX #MSG13 ; POINT TO MSG "IY="
|
2676 |
|
|
1137 FBBF 8D CE BSR PDATA ; PRINT MSG
|
2677 |
|
|
1138 FBC1 AE 46 LDX 6,U
|
2678 |
|
|
1139 FBC3 20 D8 BRA JOUT4H
|
2679 |
218 |
davidgb |
1140 *
|
2680 |
221 |
davidgb |
1141 FBC5 8E FE BC PRTPC LDX #MSG11 ; POINT TO MSG "PC="
|
2681 |
|
|
1142 FBC8 8D C5 BSR PDATA ; PRINT MSG
|
2682 |
|
|
1143 FBCA AE 4A LDX 10,U
|
2683 |
|
|
1144 FBCC 20 CF BRA JOUT4H
|
2684 |
218 |
davidgb |
1145 *
|
2685 |
221 |
davidgb |
1146 FBCE 8E FE DA PRTA LDX #MSG16 ; POINT TO MSG "A="
|
2686 |
|
|
1147 FBD1 8D BC BSR PDATA ; PRINT MSG
|
2687 |
|
|
1148 FBD3 A6 41 LDA 1,U
|
2688 |
|
|
1149 FBD5 20 D9 BRA JOUT2H ; OUTPUT HEX BYTE AS ASCII
|
2689 |
218 |
davidgb |
1150 *
|
2690 |
221 |
davidgb |
1151 FBD7 8E FE DF PRTB LDX #MSG17 ; POINT TO MSG "B="
|
2691 |
|
|
1152 FBDA 8D B3 BSR PDATA ; PRINT MSG
|
2692 |
|
|
1153 FBDC A6 42 LDA 2,U
|
2693 |
|
|
1154 FBDE 20 D0 BRA JOUT2H ; OUTPUT HEX BYTE AS ASCII
|
2694 |
218 |
davidgb |
1155 *
|
2695 |
221 |
davidgb |
1156 FBE0 8E FE E4 PRTCC LDX #MSG18 ; POINT TO MSG "CC:"
|
2696 |
|
|
1157 FBE3 8D AA BSR PDATA ; PRINT MSG
|
2697 |
|
|
1158 FBE5 A6 C4 LDA ,U
|
2698 |
|
|
1159 FBE7 8E FE EB LDX #MSG19 ; POINT TO MSG "EFHINZVC"
|
2699 |
|
|
1160 FBEA 16 00 90 LBRA BIASCI ; OUTPUT IN BINARY/ASCII FORMAT
|
2700 |
218 |
davidgb |
1161 *
|
2701 |
|
|
1162 * "R" DISPLAY REGISTERS
|
2702 |
|
|
1163 *
|
2703 |
221 |
davidgb |
1164 FBED 8E FE B2 REGSTR LDX #MSG5 ; POINT TO MSG " - "
|
2704 |
|
|
1165 FBF0 17 FF 27 LBSR PSTRNG ; PRINT MSG
|
2705 |
|
|
1166 FBF3 8D A1 BSR PRTSP ; $FCBF
|
2706 |
|
|
1167 FBF5 8D A9 BSR PRTUS ; $FCCA
|
2707 |
|
|
1168 FBF7 8D B0 BSR PRTDP ; $FCD5
|
2708 |
|
|
1169 FBF9 8D B8 BSR PRTIX ; $FCE0
|
2709 |
|
|
1170 FBFB 8D BF BSR PRTIY ; $FCEB
|
2710 |
|
|
1171 FBFD 8E FE B2 LDX #MSG5 ; POINT TO MSG " - "
|
2711 |
|
|
1172 FC00 17 FF 17 LBSR PSTRNG ; PRINT MSG
|
2712 |
|
|
1173 FC03 8D C0 BSR PRTPC ; $FCF5
|
2713 |
|
|
1174 FC05 8D C7 BSR PRTA ; $FCFF
|
2714 |
|
|
1175 FC07 8D CE BSR PRTB ; $FD09
|
2715 |
|
|
1176 FC09 20 D5 BRA PRTCC ; $FD13
|
2716 |
218 |
davidgb |
1177 *
|
2717 |
|
|
1178 * THE FOLLOWING ROUTINE LOOPS WAITING FOR THE
|
2718 |
|
|
1179 * OPERATOR TO INPUT TWO VALID HEX ADDRESSES.
|
2719 |
|
|
1180 * THE FIRST ADDRESS INPUT IS RETURNED IN "IY".
|
2720 |
|
|
1181 * THE SECOND IS RETURNED IN "IX". THE "V" BIT
|
2721 |
|
|
1182 * IN THE C-CODE REG. IS SET IF AN INVALID HEX
|
2722 |
|
|
1183 * ADDRESS IS INPUT.
|
2723 |
|
|
1184 *
|
2724 |
221 |
davidgb |
1185 FC0B 8D 09 IN2ADR BSR IN1ADR ; GET FIRST ADDRESS
|
2725 |
|
|
1186 FC0D 29 4D BVS NOTHEX ; EXIT IF NOT VALID HEX
|
2726 |
|
|
1187 FC0F 1F 12 TFR X,Y ; SAVE FIRST ADDR. IN "IY"
|
2727 |
|
|
1188 FC11 86 2D LDA #'-
|
2728 |
|
|
1189 FC13 17 00 CA LBSR OUTCH ; PRINT " - "
|
2729 |
218 |
davidgb |
1190 *
|
2730 |
|
|
1191 * THE FOLLOWING ROUTINE LOOPS WAITING FOR THE
|
2731 |
|
|
1192 * OPERATOR TO INPUT ONE VALID HEX ADDRESS. THE
|
2732 |
|
|
1193 * ADDRESS IS RETURNED IN THE "X" REGISTER.
|
2733 |
|
|
1194 *
|
2734 |
221 |
davidgb |
1195 FC16 8D 0E IN1ADR BSR BYTE ; INPUT BYTE (2 HEX CHAR)
|
2735 |
|
|
1196 FC18 29 42 BVS NOTHEX ; EXIT IF NOT VALID HEX
|
2736 |
|
|
1197 FC1A 1F 01 TFR D,X
|
2737 |
|
|
1198 FC1C 8D 08 BSR BYTE ; INPUT BYTE (2 HEX CHAR)
|
2738 |
|
|
1199 FC1E 29 3C BVS NOTHEX
|
2739 |
|
|
1200 FC20 34 10 PSHS X
|
2740 |
|
|
1201 FC22 A7 61 STA 1,S
|
2741 |
|
|
1202 FC24 35 90 PULS X,PC
|
2742 |
218 |
davidgb |
1203 *
|
2743 |
|
|
1204 ***** INPUT BYTE (2 HEX CHAR.) *****
|
2744 |
|
|
1205 *
|
2745 |
221 |
davidgb |
1206 FC26 8D 11 BYTE BSR INHEX ; GET HEX LEFT
|
2746 |
|
|
1207 FC28 29 32 BVS NOTHEX ; EXIT IF NOT VALID HEX
|
2747 |
|
|
1208 FC2A 48 ASLA ;
|
2748 |
|
|
1209 FC2B 48 ASLA ;
|
2749 |
|
|
1210 FC2C 48 ASLA ; SHIFT INTO LEFT NIBBLE
|
2750 |
|
|
1211 FC2D 48 ASLA ;
|
2751 |
|
|
1212 FC2E 1F 89 TFR A,B ; PUT HEXL IN "B"
|
2752 |
|
|
1213 FC30 8D 07 BSR INHEX ; GET HEX RIGHT
|
2753 |
|
|
1214 FC32 29 28 BVS NOTHEX ; EXIT IF NOT VALID HEX
|
2754 |
|
|
1215 FC34 34 04 PSHS B ; PUSH HEXL ON STACK
|
2755 |
|
|
1216 FC36 AB E0 ADDA ,S+ ; ADD HEXL TO HEXR AND ADJ. STK
|
2756 |
|
|
1217 FC38 39 RTS ; RETURN WITH HEX L&R IN "A"
|
2757 |
218 |
davidgb |
1218 *
|
2758 |
|
|
1219 *
|
2759 |
221 |
davidgb |
1220 FC39 8D 5B INHEX BSR ECHON ; INPUT ASCII CHAR.
|
2760 |
|
|
1221 FC3B 81 30 CMPA #'0 ; IS IT > OR = "0" ?
|
2761 |
|
|
1222 FC3D 25 1D BCS NOTHEX ; IF LESS IT AIN'T HEX
|
2762 |
|
|
1223 FC3F 81 39 CMPA #'9 ; IS IT < OR = "9" ?
|
2763 |
|
|
1224 FC41 22 03 BHI INHEXA ; IF > MAYBE IT'S ALPHA
|
2764 |
|
|
1225 FC43 80 30 SUBA #$30 ; ASCII ADJ. NUMERIC
|
2765 |
|
|
1226 FC45 39 RTS ;
|
2766 |
218 |
davidgb |
1227 *
|
2767 |
|
|
1228 *
|
2768 |
221 |
davidgb |
1229 FC46 81 41 INHEXA CMPA #'A ; IS IT > OR = "A"
|
2769 |
|
|
1230 FC48 25 12 BCS NOTHEX ; IF LESS IT AIN'T HEX
|
2770 |
|
|
1231 FC4A 81 46 CMPA #'F ; IS IT < OR = "F" ?
|
2771 |
|
|
1232 FC4C 22 03 BHI INHEXL ; IF > IT AIN'T HEX
|
2772 |
|
|
1233 FC4E 80 37 SUBA #'A-10 ; ($37) ASCII ADJ. ALPHA
|
2773 |
|
|
1234 FC50 39 RTS ;
|
2774 |
218 |
davidgb |
1235 *
|
2775 |
221 |
davidgb |
1236 FC51 81 61 INHEXL CMPA #'a ; IS IT > OR = "a"
|
2776 |
|
|
1237 FC53 25 07 BCS NOTHEX ; IF LESS IT AIN'T HEX
|
2777 |
|
|
1238 FC55 81 66 CMPA #'f ; IS IT < "f"
|
2778 |
|
|
1239 FC57 22 03 BHI NOTHEX ; IF > IT AIN'T HEX
|
2779 |
|
|
1240 FC59 80 57 SUBA #'a-10 ; ($57) ADJUST TO LOWER CASE
|
2780 |
|
|
1241 FC5B 39 RTS ;
|
2781 |
218 |
davidgb |
1242 *
|
2782 |
|
|
1243 *
|
2783 |
221 |
davidgb |
1244 FC5C 1A 02 NOTHEX ORCC #2 ; SET (V) FLAG IN C-CODES REGISTER
|
2784 |
|
|
1245 FC5E 39 RTS ;
|
2785 |
218 |
davidgb |
1246 *
|
2786 |
|
|
1247 *
|
2787 |
221 |
davidgb |
1248 FC5F 34 10 OUT4H PSHS X ; PUSH X-REG. ON THE STACK
|
2788 |
|
|
1249 FC61 35 02 PULS A ; POP MS BYTE OF X-REG INTO A-ACC.
|
2789 |
|
|
1250 FC63 8D 02 BSR OUTHL ; OUTPUT HEX LEFT
|
2790 |
|
|
1251 FC65 35 02 PULS A ; POP LS BYTE OF X-REG INTO A-ACC.
|
2791 |
|
|
1252 FC67 OUTHL EQU *
|
2792 |
|
|
1253 FC67 34 02 OUT2H PSHS A ; SAVE IT BACK ON STACK
|
2793 |
|
|
1254 FC69 44 LSRA ; CONVERT UPPER HEX NIBBLE TO ASCII
|
2794 |
|
|
1255 FC6A 44 LSRA ;
|
2795 |
|
|
1256 FC6B 44 LSRA ;
|
2796 |
|
|
1257 FC6C 44 LSRA ;
|
2797 |
|
|
1258 FC6D 8D 04 BSR XASCII ; PRINT HEX NIBBLE AS ASCII
|
2798 |
|
|
1259 FC6F 35 02 OUTHR PULS A ; CONVERT LOWER HEX NIBBLE TO ASCII
|
2799 |
|
|
1260 FC71 84 0F ANDA #$0F ; STRIP LEFT NIBBLE
|
2800 |
|
|
1261 FC73 8B 30 XASCII ADDA #$30 ; ASCII ADJ
|
2801 |
|
|
1262 FC75 81 39 CMPA #$39 ; IS IT < OR = "9" ?
|
2802 |
|
|
1263 FC77 2F 02 BLE OUTC ; IF LESS, OUTPUT IT
|
2803 |
|
|
1264 FC79 8B 07 ADDA #7 ; IF > MAKE ASCII LETTER
|
2804 |
|
|
1265 FC7B 20 63 OUTC BRA OUTCH ; OUTPUT CHAR
|
2805 |
218 |
davidgb |
1266 *
|
2806 |
|
|
1267 * BINARY / ASCII --- THIS ROUTINE
|
2807 |
|
|
1268 * OUTPUTS A BYTE IN ENHANCED
|
2808 |
|
|
1269 * BINARY FORMAT. THE ENHANCEMENT
|
2809 |
|
|
1270 * IS DONE BY SUBSTITUTING ASCII
|
2810 |
|
|
1271 * LETTERS FOR THE ONES IN THE BYTE.
|
2811 |
|
|
1272 * THE ASCII ENHANCEMENT LETTERS
|
2812 |
|
|
1273 * ARE OBTAINED FROM THE STRING
|
2813 |
|
|
1274 * POINTED TO BY THE INDEX REG. "X".
|
2814 |
|
|
1275 *
|
2815 |
221 |
davidgb |
1276 FC7D 34 02 BIASCI PSHS A ; SAVE "A" ON STACK
|
2816 |
|
|
1277 FC7F C6 08 LDB #8 ; PRESET LOOP# TO BITS PER BYTE
|
2817 |
|
|
1278 FC81 A6 80 OUTBA LDA ,X+ ; GET LETTER FROM STRING
|
2818 |
|
|
1279 FC83 68 E4 ASL ,S ; TEST BYTE FOR "1" IN B7
|
2819 |
|
|
1280 FC85 25 02 BCS PRTBA ; IF ONE PRINT LETTER
|
2820 |
|
|
1281 FC87 86 2D LDA #'- ; IF ZERO PRINT "-"
|
2821 |
|
|
1282 FC89 8D 55 PRTBA BSR OUTCH ; PRINT IT
|
2822 |
|
|
1283 FC8B 8D 51 BSR OUT1S ; PRINT SPACE
|
2823 |
|
|
1284 FC8D 5A DECB ; SUB 1 FROM #BITS YET TO PRINT
|
2824 |
|
|
1285 FC8E 26 F1 BNE OUTBA
|
2825 |
|
|
1286 FC90 35 82 PULS A,PC
|
2826 |
218 |
davidgb |
1287 *
|
2827 |
|
|
1288 IFD EXTOPT
|
2828 |
|
|
1289 *
|
2829 |
|
|
1290 * EXTENDED USER COMMANDS
|
2830 |
|
|
1291 *
|
2831 |
221 |
davidgb |
1292 FC92 6E 9F F0 00 USRCMD JMP [MONEXT+EXTCMD]
|
2832 |
218 |
davidgb |
1293 ENDIF EXTOPT
|
2833 |
|
|
1294 *
|
2834 |
|
|
1295 *
|
2835 |
221 |
davidgb |
1296 FC96 7D DF E2 ECHON TST ECHO ; IS ECHO REQUIRED ?
|
2836 |
|
|
1297 FC99 27 06 BEQ INCH ; ECHO NOT REQ. IF CLEAR
|
2837 |
218 |
davidgb |
1298 *
|
2838 |
|
|
1299 * INCHE
|
2839 |
|
|
1300 *
|
2840 |
|
|
1301 * GETS CHARACTER FROM TERMINAL AND
|
2841 |
|
|
1302 * ECHOS SAME. THE CHARACTER IS RETURNED
|
2842 |
|
|
1303 * IN THE "A" ACCUMULATOR WITH THE PARITY
|
2843 |
|
|
1304 * BIT MASKED OFF. ALL OTHER REGISTERS
|
2844 |
|
|
1305 * ARE PRESERVED.
|
2845 |
|
|
1306 *
|
2846 |
221 |
davidgb |
1307 FC9B 8D 04 INCHE BSR INCH ; GET CHAR FROM TERMINAL
|
2847 |
|
|
1308 FC9D 84 7F ANDA #$7F ; STRIP PARITY FROM CHAR.
|
2848 |
|
|
1309 FC9F 20 3F BRA OUTCH ; ECHO CHAR TO TERMINAL
|
2849 |
218 |
davidgb |
1310 *
|
2850 |
|
|
1311 * INCH
|
2851 |
|
|
1312 *
|
2852 |
|
|
1313 * GET CHARACTER FROM TERMINAL. RETURN
|
2853 |
|
|
1314 * CHARACTER IN "A" ACCUMULATOR AND PRESERVE
|
2854 |
|
|
1315 * ALL OTHER REGISTERS. THE INPUT CHARACTER
|
2855 |
|
|
1316 * IS 8 BITS AND IS NOT ECHOED.
|
2856 |
|
|
1317 *
|
2857 |
|
|
1318 *
|
2858 |
221 |
davidgb |
1319 FCA1 34 10 INCH PSHS X ; SAVE IX
|
2859 |
218 |
davidgb |
1320 IFD HFCOPT
|
2860 |
221 |
davidgb |
1321 FCA3 86 11 LDA #$11 ; SET RTS* LOW, REQUEST FAR END TO TX
|
2861 |
|
|
1322 FCA5 A7 9F DF E0 STA [CPORT]
|
2862 |
218 |
davidgb |
1323 ENDIF HFCOPT
|
2863 |
221 |
davidgb |
1324 FCA9 BE DF E0 GETSTA LDX CPORT ; POINT TO TERMINAL PORT
|
2864 |
|
|
1325 FCAC A6 84 LDA ,X ; FETCH PORT STATUS
|
2865 |
|
|
1326 FCAE 85 01 BITA #1 ; TEST READY BIT, RDRF ?
|
2866 |
218 |
davidgb |
1327 IFD PS2OPT
|
2867 |
221 |
davidgb |
1328 FCB0 26 09 BNE GETST1
|
2868 |
|
|
1329 FCB2 8E E0 20 LDX #PS2KBD
|
2869 |
|
|
1330 FCB5 A6 84 LDA ,X
|
2870 |
|
|
1331 FCB7 85 01 BITA #1
|
2871 |
218 |
davidgb |
1332 ENDIF PS2OPT
|
2872 |
221 |
davidgb |
1333 FCB9 27 EE BEQ GETSTA ; IF NOT RDY, THEN TRY AGAIN
|
2873 |
|
|
1334 FCBB GETST1 EQU *
|
2874 |
218 |
davidgb |
1335 IFD HFCOPT
|
2875 |
221 |
davidgb |
1336 FCBB 86 51 LDA #$51 ; SET RTS* HIGH, STOP FAR END FROM TXING, UNTIL NEXT INPUT
|
2876 |
|
|
1337 FCBD A7 9F DF E0 STA [CPORT]
|
2877 |
218 |
davidgb |
1338 ENDIF HFCOPT
|
2878 |
221 |
davidgb |
1339 FCC1 A6 01 LDA 1,X ; FETCH CHAR
|
2879 |
|
|
1340 FCC3 35 90 PULS X,PC ; RESTORE IX
|
2880 |
218 |
davidgb |
1341 *
|
2881 |
|
|
1342 * INCHEK
|
2882 |
|
|
1343 *
|
2883 |
|
|
1344 * CHECK FOR A CHARACTER AVAILABLE FROM
|
2884 |
|
|
1345 * THE TERMINAL. THE SERIAL PORT IS CHECKED
|
2885 |
|
|
1346 * FOR READ READY. ALL REGISTERS ARE
|
2886 |
|
|
1347 * PRESERVED, AND THE "Z" BIT WILL BE
|
2887 |
|
|
1348 * CLEAR IF A CHARACTER CAN BE READ.
|
2888 |
|
|
1349 *
|
2889 |
|
|
1350 *
|
2890 |
221 |
davidgb |
1351 FCC5 34 02 INCHEK PSHS A ; SAVE A ACCUM
|
2891 |
218 |
davidgb |
1352 IFD HFCOPT
|
2892 |
221 |
davidgb |
1353 FCC7 86 11 LDA #$11 ; SET RTS* LOW, REQUEST FAR END TO TX
|
2893 |
|
|
1354 FCC9 A7 9F DF E0 STA [CPORT]
|
2894 |
218 |
davidgb |
1355 ENDIF HFCOPT
|
2895 |
221 |
davidgb |
1356 FCCD A6 9F DF E0 LDA [CPORT] ; FETCH PORT STATUS
|
2896 |
|
|
1357 FCD1 85 01 BITA #1 ; TEST READY BIT, RDRF ?
|
2897 |
218 |
davidgb |
1358 IFD PS2OPT
|
2898 |
221 |
davidgb |
1359 FCD3 26 05 BNE INCHEK1
|
2899 |
|
|
1360 FCD5 B6 E0 20 LDA PS2KBD
|
2900 |
|
|
1361 FCD8 85 01 BITA #1 ; TEST READY BIT< RDRF ?
|
2901 |
218 |
davidgb |
1362 ENDIF PS2OPT
|
2902 |
221 |
davidgb |
1363 FCDA 35 82 INCHEK1 PULS A,PC ; RESTORE A ACCUM.
|
2903 |
218 |
davidgb |
1364 *
|
2904 |
221 |
davidgb |
1365 FCDC 8D 00 OUT2S BSR OUT1S ; OUTPUT 2 SPACES
|
2905 |
|
|
1366 FCDE 86 20 OUT1S LDA #$20 ; OUTPUT 1 SPACE
|
2906 |
218 |
davidgb |
1367 *
|
2907 |
|
|
1368 *
|
2908 |
|
|
1369 * OUTCH
|
2909 |
|
|
1370 *
|
2910 |
|
|
1371 * OUTPUT CHARACTER TO TERMINAL.
|
2911 |
|
|
1372 * THE CHAR. TO BE OUTPUT IS
|
2912 |
|
|
1373 * PASSED IN THE A REGISTER.
|
2913 |
|
|
1374 * ALL REGISTERS ARE PRESERVED.
|
2914 |
|
|
1375 *
|
2915 |
|
|
1376 OUTCH IFD VDUOPT
|
2916 |
221 |
davidgb |
1377 FCE0 8D 49 BSR VOUTCH
|
2917 |
218 |
davidgb |
1378 ENDIF VDUOPT
|
2918 |
|
|
1379 IFD DG640OPT
|
2919 |
|
|
1380 BSR VOUTCH
|
2920 |
|
|
1381 ENDIF DG640OPT
|
2921 |
|
|
1381 ENDIF DG640OPT
|
2922 |
221 |
davidgb |
1382 FCE2 34 12 AOUTCH PSHS A,X ; SAVE A ACCUM AND IX
|
2923 |
|
|
1383 FCE4 BE DF E0 LDX CPORT ; GET ADDR. OF TERMINAL
|
2924 |
|
|
1384 FCE7 A6 84 FETSTA LDA ,X ; FETCH PORT STATUS
|
2925 |
|
|
1385 FCE9 85 02 BITA #2 ; TEST TDRE, OK TO XMIT ?
|
2926 |
|
|
1386 FCEB 27 FA BEQ FETSTA ; IF NOT LOOP UNTIL RDY
|
2927 |
|
|
1387 FCED 85 08 BITA #8 ; CLEAR TO SEND ?
|
2928 |
|
|
1388 FCEF 26 F6 BNE FETSTA ; NO, LOOP UNTIL CLEAR
|
2929 |
|
|
1389 FCF1 35 02 PULS A ; GET CHAR. FOR XMIT
|
2930 |
|
|
1390 FCF3 A7 01 STA 1,X ; XMIT CHAR.
|
2931 |
|
|
1391 FCF5 35 90 PULS X,PC ; RESTORE IX
|
2932 |
218 |
davidgb |
1392 *
|
2933 |
|
|
1393 * IO INITIALIZATION
|
2934 |
|
|
1394 *
|
2935 |
221 |
davidgb |
1395 FCF7 IOINIZ EQU *
|
2936 |
218 |
davidgb |
1396 IFD VDUOPT
|
2937 |
221 |
davidgb |
1397 FCF7 8D 13 BSR VINIZ
|
2938 |
218 |
davidgb |
1398 ENDIF VDUOPT
|
2939 |
|
|
1399 IFD DG640OPT
|
2940 |
|
|
1400 BSR VINIZ
|
2941 |
|
|
1401 ENDIF DG640OPT
|
2942 |
|
|
1401 ENDIF DG640OPT
|
2943 |
221 |
davidgb |
1402 FCF9 BE DF E0 ACINIZ LDX CPORT ; POINT TO CONTROL PORT ADDRESS
|
2944 |
|
|
1403 FCFC 86 03 LDA #3 ; RESET ACIA PORT CODE
|
2945 |
|
|
1404 FCFE A7 84 STA ,X ; STORE IN CONTROL REGISTER
|
2946 |
|
|
1405 FD00 86 51 LDA #$51 ; SET 8 DATA, 2 STOP AN 0 PARITY RTS* HIGH
|
2947 |
|
|
1406 FD02 A7 84 STA ,X ; STORE IN CONTROL REGISTER
|
2948 |
|
|
1407 FD04 6D 01 TST 1,X ; ANYTHING IN DATA REGISTER?
|
2949 |
|
|
1408 FD06 86 FF LDA #$FF ; TURN ON ECHO FLAG
|
2950 |
|
|
1409 FD08 B7 DF E2 STA ECHO
|
2951 |
|
|
1410 FD0B 39 RTS
|
2952 |
218 |
davidgb |
1411 *
|
2953 |
|
|
1412 IFD VDUOPT
|
2954 |
|
|
1413 *
|
2955 |
|
|
1414 ***************************************************
|
2956 |
|
|
1415 * VDU8 ADM3A REGISTER-MAPPED EMULATOR *
|
2957 |
|
|
1416 * *
|
2958 |
|
|
1417 * 80 x 25 Characters
|
2959 |
|
|
1418 *
|
2960 |
|
|
1419 ***************************************************
|
2961 |
|
|
1420 *
|
2962 |
|
|
1421 ***************************************************
|
2963 |
|
|
1422 * INITIALIZE EMULATOR *
|
2964 |
|
|
1423 ***************************************************
|
2965 |
|
|
1424 *
|
2966 |
221 |
davidgb |
1425 FD0C 8E E0 30 VINIZ LDX #VDU
|
2967 |
|
|
1426 FD0F CC 00 00 LDD #0
|
2968 |
|
|
1427 FD12 FD DF FB STD COLADX ; AND ROWADX
|
2969 |
|
|
1428 FD15 A7 02 STA VDUCOL,X
|
2970 |
|
|
1429 FD17 E7 03 STB VDUROW,X
|
2971 |
|
|
1430 FD19 E7 04 STB VDUOFF,X
|
2972 |
|
|
1431 FD1B FD DF FD STD NEWROW ; AND ESCFLG
|
2973 |
|
|
1432 FD1E C6 02 LDB #$02
|
2974 |
|
|
1433 FD20 E7 01 STB VDUATT,X
|
2975 |
|
|
1434 FD22 7F DF FE CLR ESCFLG
|
2976 |
|
|
1435 FD25 86 1B LDA #$1B ; SEND ESCAPE
|
2977 |
|
|
1436 FD27 8D 02 BSR VOUTCH
|
2978 |
|
|
1437 FD29 86 59 LDA #'Y ; CLEAR TO END OF SCREEN
|
2979 |
218 |
davidgb |
1438 *
|
2980 |
|
|
1439 ** VIDEO OUTPUT ROUTINE
|
2981 |
|
|
1440 *
|
2982 |
221 |
davidgb |
1441 FD2B 34 16 VOUTCH PSHS A,B,X ; SAVE REGISTERS
|
2983 |
|
|
1442 FD2D 8E E0 30 LDX #VDU ; POINT TO VDU REGISTERS
|
2984 |
218 |
davidgb |
1443 *
|
2985 |
|
|
1444 ** CHECK FOR ESCAPE SEQUENCE
|
2986 |
|
|
1445 *
|
2987 |
221 |
davidgb |
1446 FD30 7D DF FE TST ESCFLG ; ESCAPE ACTIVE?
|
2988 |
|
|
1447 FD33 27 04 BEQ SOROU1 ; BRANCH IF NOT
|
2989 |
|
|
1448 FD35 8D 60 BSR ESCAPE ; ELSE DO ESCAPE
|
2990 |
|
|
1449 FD37 20 0D BRA RETURN ; AND RETURN
|
2991 |
218 |
davidgb |
1450 *
|
2992 |
|
|
1451 ** CHECK FOR CONTROL CHARACTERS
|
2993 |
|
|
1452 *
|
2994 |
221 |
davidgb |
1453 FD39 81 20 SOROU1 CMPA #$20 ; CONTROL CODES?
|
2995 |
|
|
1454 FD3B 24 04 BHS SOROU2
|
2996 |
|
|
1455 FD3D 8D 09 BSR CONTRL ; BRANCH IF SO
|
2997 |
|
|
1456 FD3F 20 05 BRA RETURN
|
2998 |
218 |
davidgb |
1457 *
|
2999 |
|
|
1458 ** OUTPUT TEXT CHARACTER
|
3000 |
|
|
1459 *
|
3001 |
221 |
davidgb |
1460 FD41 A7 84 SOROU2 STA VDUCHR,X ; DISPLAY CHARACTER
|
3002 |
|
|
1461 FD43 17 00 AF LBSR NEWCOL ; UPDATE COLUMN
|
3003 |
218 |
davidgb |
1462 *
|
3004 |
|
|
1463 ** DISPLAY CURSOR AND RETURN
|
3005 |
|
|
1464 *
|
3006 |
221 |
davidgb |
1465 FD46 35 96 RETURN PULS A,B,X,PC ; RESTORE REGISTERS AND RETURN
|
3007 |
218 |
davidgb |
1466 *
|
3008 |
|
|
1467 ***************************************************
|
3009 |
|
|
1468 * CONTROL CODE HANDLERS *
|
3010 |
|
|
1469 ***************************************************
|
3011 |
|
|
1470 *
|
3012 |
221 |
davidgb |
1471 FD48 81 08 CONTRL CMPA #$08 ; CTRL H - BACKSPACE ?
|
3013 |
|
|
1472 FD4A 27 34 BEQ BACKSP
|
3014 |
|
|
1473 FD4C 81 1B CMPA #$1B ; ESCAPE SEQUENCE?
|
3015 |
|
|
1474 FD4E 27 5A BEQ SETESC
|
3016 |
|
|
1475 FD50 81 1A CMPA #$1A ; CTRL Z - Clear Screen
|
3017 |
|
|
1476 FD52 10 27 00 7C LBEQ CLRSCR
|
3018 |
|
|
1477 FD56 81 16 CMPA #$16 ; CTRL ^ - Home
|
3019 |
|
|
1478 FD58 27 38 BEQ HOME
|
3020 |
|
|
1479 FD5A 81 0D CMPA #$0D ; CTRL M - RETURN?
|
3021 |
|
|
1480 FD5C 10 27 00 89 LBEQ CRETN
|
3022 |
|
|
1481 FD60 81 0C CMPA #$0C ; CTRL L - CHAR RIGHT
|
3023 |
|
|
1482 FD62 27 24 BEQ CHRIGHT
|
3024 |
|
|
1483 FD64 81 0B CMPA #$0B ; CTRL K - MOVE UP ONE LINE
|
3025 |
|
|
1484 FD66 27 0F BEQ LINEUP
|
3026 |
|
|
1485 FD68 81 0A CMPA #$0A ; CTRL J - LINE FEED
|
3027 |
|
|
1486 FD6A 26 45 BNE RETESC ; NONE OF THESE, RETURN
|
3028 |
218 |
davidgb |
1487 *
|
3029 |
|
|
1488 ***************************************** LINE FEED
|
3030 |
|
|
1489 *
|
3031 |
221 |
davidgb |
1490 FD6C FC DF FB LINEFD LDD COLADX ; GET CURRENT COLUMN AND ROW
|
3032 |
|
|
1491 FD6F 5C INCB ; BUMP ROW
|
3033 |
|
|
1492 FD70 C1 19 CMPB #NUMLIN ; SCROLL TIME?
|
3034 |
|
|
1493 FD72 26 79 BNE NEWCUR ; POSITION CURSOR IF NOT
|
3035 |
|
|
1494 FD74 16 00 8F LBRA SCROLL ; ELSE SCROLL IT
|
3036 |
218 |
davidgb |
1495 *
|
3037 |
|
|
1496 ***************************************** LINE FEED
|
3038 |
|
|
1497 *
|
3039 |
221 |
davidgb |
1498 FD77 FC DF FB LINEUP LDD COLADX ; GET CURRENT COLUMN AND ROW
|
3040 |
|
|
1499 FD7A 5D TSTB ; AT TOP OF SCREEN ?
|
3041 |
|
|
1500 FD7B 27 34 BEQ RETESC ; Yes, Ignore
|
3042 |
|
|
1501 FD7D 5A DECB ; No, Decrement ROW
|
3043 |
|
|
1502 FD7E 20 6D BRA NEWCUR ; POSITION CURSOR
|
3044 |
218 |
davidgb |
1503 *
|
3045 |
|
|
1504 *********************************** BACK SPACE
|
3046 |
|
|
1505 *
|
3047 |
221 |
davidgb |
1506 FD80 B6 DF FB BACKSP LDA COLADX
|
3048 |
|
|
1507 FD83 27 2C BEQ RETESC ; RETURN
|
3049 |
|
|
1508 FD85 4A DECA
|
3050 |
|
|
1509 FD86 20 62 BRA POSCOL ; POSITION CURSOR
|
3051 |
218 |
davidgb |
1510 *
|
3052 |
|
|
1511 *********************************** CURSOR RIGHT
|
3053 |
|
|
1512 *
|
3054 |
221 |
davidgb |
1513 FD88 B6 DF FB CHRIGHT LDA COLADX
|
3055 |
|
|
1514 FD8B 4C INCA
|
3056 |
|
|
1515 FD8C 81 50 CMPA #LINLEN
|
3057 |
|
|
1516 FD8E 27 21 BEQ RETESC
|
3058 |
|
|
1517 FD90 20 58 BRA POSCOL
|
3059 |
218 |
davidgb |
1518 *
|
3060 |
|
|
1519 *********************************** CURSOR RIGHT
|
3061 |
|
|
1520 *
|
3062 |
221 |
davidgb |
1521 FD92 CC 00 00 HOME LDD #0 ; HOME - POSITION TOP OF SCREEN
|
3063 |
|
|
1522 FD95 20 56 BRA NEWCUR
|
3064 |
218 |
davidgb |
1523 *
|
3065 |
|
|
1524 ***************************************************
|
3066 |
|
|
1525 * ESCAPE HANDLERS *
|
3067 |
|
|
1526 ***************************************************
|
3068 |
|
|
1527 *
|
3069 |
221 |
davidgb |
1528 FD97 F6 DF FE ESCAPE LDB ESCFLG ; GET FLAG
|
3070 |
|
|
1529 FD9A C1 3D CMPB #'= ; SETTING CURSOR?
|
3071 |
|
|
1530 FD9C 27 14 BEQ ESCCUR ; BRANCH IF SO
|
3072 |
|
|
1531 FD9E 81 59 CMPA #'Y ; CLEAR TO END OF SCREEN?
|
3073 |
|
|
1532 FDA0 27 6E BEQ ESCCLS
|
3074 |
|
|
1533 FDA2 81 54 CMPA #'T ; CLEAR TO END OF LINE?
|
3075 |
|
|
1534 FDA4 27 31 BEQ ESCCLL
|
3076 |
|
|
1535 FDA6 81 3D CMPA #'= ; STARTING CURSOR SET?
|
3077 |
|
|
1536 FDA8 26 04 BNE CLRESC ; BRANCH IF NOT
|
3078 |
218 |
davidgb |
1537 *
|
3079 |
|
|
1538 ***************************** START ESCAPE SEQUENCE
|
3080 |
|
|
1539 *
|
3081 |
221 |
davidgb |
1540 FDAA B7 DF FE SETESC STA ESCFLG ; ELSE START CURSORING
|
3082 |
|
|
1541 FDAD 39 RTS ; AND RETURN
|
3083 |
218 |
davidgb |
1542 *
|
3084 |
221 |
davidgb |
1543 FDAE 7F DF FE CLRESC CLR ESCFLG ; NO OTHERS SUPPORTED
|
3085 |
|
|
1544 FDB1 39 RETESC RTS ; SO RETURN
|
3086 |
218 |
davidgb |
1545 *
|
3087 |
|
|
1546 ********************************* SET SCREEN CURSOR
|
3088 |
|
|
1547 *
|
3089 |
221 |
davidgb |
1548 FDB2 7D DF FD ESCCUR TST NEWROW ; ROW SET?
|
3090 |
|
|
1549 FDB5 26 04 BNE ESCCU1 ; BRANCH IF SO
|
3091 |
|
|
1550 FDB7 B7 DF FD STA NEWROW ; ELSE SET NEW ROW
|
3092 |
|
|
1551 FDBA 39 RTS ; AND RETURN
|
3093 |
218 |
davidgb |
1552 *
|
3094 |
221 |
davidgb |
1553 FDBB 7F DF FE ESCCU1 CLR ESCFLG
|
3095 |
|
|
1554 FDBE 80 20 SUBA #$20 ; ADJUST COLUMN ADDRESS
|
3096 |
|
|
1555 FDC0 81 4F CMPA #LINLEN-1 ;CHECK FOR ACCEPTABLE COLUM
|
3097 |
|
|
1556 FDC2 22 ED BHI RETESC ; NOT OK, DO NOTHING
|
3098 |
218 |
davidgb |
1557 *
|
3099 |
221 |
davidgb |
1558 FDC4 F6 DF FD ESCCU2 LDB NEWROW
|
3100 |
|
|
1559 FDC7 7F DF FD CLR NEWROW
|
3101 |
|
|
1560 FDCA C0 20 SUBB #$20 ; ADJUST TO ROW ADDRESS
|
3102 |
|
|
1561 FDCC C1 18 CMPB #NUMLIN-1 ; CHECK FOR ACCEPTABLE ROW
|
3103 |
|
|
1562 FDCE 22 E1 BHI RETESC ; ELSE RETURN DOING NOTHING
|
3104 |
|
|
1563 FDD0 20 1B BRA NEWCUR ; GO SET NEW CURSOR IF SO
|
3105 |
218 |
davidgb |
1564 *
|
3106 |
|
|
1565 ****************** CLEAR FROM CURSOR TO END OF LINE
|
3107 |
|
|
1566 *
|
3108 |
221 |
davidgb |
1567 FDD2 CC 00 00 CLRSCR LDD #0 ; CLEAR FROM TOP OF SCREEN
|
3109 |
|
|
1568 FDD5 8D 16 BSR NEWCUR
|
3110 |
|
|
1569 FDD7 B6 DF FB ESCCLL LDA COLADX
|
3111 |
|
|
1570 FDDA C6 20 LDB #$20 ; AND CLEAR CHAR
|
3112 |
|
|
1571 FDDC E7 84 ESCCL1 STB VDUCHR,X ; DISPLAY TEXT
|
3113 |
|
|
1572 FDDE 4C INCA
|
3114 |
|
|
1573 FDDF A7 02 STA VDUCOL,X
|
3115 |
|
|
1574 FDE1 81 50 CMPA #LINLEN ; UNTIL END OF LINE
|
3116 |
|
|
1575 FDE3 26 F7 BNE ESCCL1
|
3117 |
|
|
1576 FDE5 7F DF FE CLR ESCFLG
|
3118 |
|
|
1577 FDE8 39 RTS
|
3119 |
218 |
davidgb |
1578 *
|
3120 |
|
|
1579 *********************************** CARRIAGE RETURN
|
3121 |
|
|
1580 *
|
3122 |
221 |
davidgb |
1581 FDE9 4F CRETN CLRA ; SET COLUMN ZERO
|
3123 |
|
|
1582 FDEA F6 DF FC POSCOL LDB ROWADX ; GET CURRENT ROW
|
3124 |
218 |
davidgb |
1583 *
|
3125 |
|
|
1584 *********** GENERATE NEW CURSOR POSITION AND RETURN
|
3126 |
|
|
1585 *
|
3127 |
221 |
davidgb |
1586 FDED FD DF FB NEWCUR STD COLADX ; SAVE NEW ROW AND COLUMN
|
3128 |
|
|
1587 FDF0 A7 02 STA VDUCOL,X ; SET NEW COLUMN
|
3129 |
|
|
1588 FDF2 E7 03 STB VDUROW,X ; SET NEW ROW
|
3130 |
|
|
1589 FDF4 39 RTS ; AND RETURN
|
3131 |
218 |
davidgb |
1590 *
|
3132 |
|
|
1591 ********************* UPDATE CURRENT COLUMN AND ROW
|
3133 |
|
|
1592 *
|
3134 |
221 |
davidgb |
1593 FDF5 FC DF FB NEWCOL LDD COLADX ; GET ROW AND COLUMN
|
3135 |
|
|
1594 FDF8 4C INCA ; BUMP COLUMN
|
3136 |
|
|
1595 FDF9 81 50 CMPA #LINLEN ; ROLL?
|
3137 |
|
|
1596 FDFB 26 F0 BNE NEWCUR ; BRANCH IF NOT
|
3138 |
|
|
1597 FDFD 4F CLRA ; ELSE RESET TO ZERO
|
3139 |
|
|
1598 FDFE 5C INCB ; AND BUMP ROW
|
3140 |
|
|
1599 FDFF C1 19 CMPB #NUMLIN
|
3141 |
|
|
1600 FE01 26 EA BNE NEWCUR
|
3142 |
|
|
1601 FE03 5A DECB ; BOTTOM ROW
|
3143 |
|
|
1602 FE04 8D E7 BSR NEWCUR
|
3144 |
218 |
davidgb |
1603 *
|
3145 |
|
|
1604 ********************************* SCROLL THE SCREEN
|
3146 |
|
|
1605 *
|
3147 |
221 |
davidgb |
1606 FE06 E6 04 SCROLL LDB VDUOFF,X
|
3148 |
|
|
1607 FE08 5C INCB
|
3149 |
|
|
1608 FE09 C1 19 CMPB #NUMLIN
|
3150 |
|
|
1609 FE0B 25 01 BLO SCROL1
|
3151 |
|
|
1610 FE0D 5F CLRB
|
3152 |
|
|
1611 FE0E E7 04 SCROL1 STB VDUOFF,X
|
3153 |
218 |
davidgb |
1612 *
|
3154 |
|
|
1613 **************** CLEAR FROM CURSOR TO END OF SCREEN
|
3155 |
|
|
1614 *
|
3156 |
221 |
davidgb |
1615 FE10 F6 DF FB ESCCLS LDB COLADX ; GET CURSOR
|
3157 |
|
|
1616 FE13 86 20 LDA #$20 ; GET A SPACE
|
3158 |
|
|
1617 FE15 F7 DF FB ESCCLS1 STB COLADX
|
3159 |
|
|
1618 FE18 E7 02 STB VDUCOL,X
|
3160 |
|
|
1619 FE1A A7 84 STA VDUCHR,X
|
3161 |
|
|
1620 FE1C 5C INCB
|
3162 |
|
|
1621 FE1D C1 50 CMPB #LINLEN
|
3163 |
|
|
1622 FE1F 26 F4 BNE ESCCLS1
|
3164 |
218 |
davidgb |
1623 *
|
3165 |
221 |
davidgb |
1624 FE21 F6 DF FC LDB ROWADX
|
3166 |
|
|
1625 FE24 5C INCB
|
3167 |
|
|
1626 FE25 C1 19 CMPB #NUMLIN
|
3168 |
|
|
1627 FE27 27 08 BEQ ESCCLS2
|
3169 |
|
|
1628 FE29 F7 DF FC STB ROWADX
|
3170 |
|
|
1629 FE2C E7 03 STB VDUROW,X
|
3171 |
|
|
1630 FE2E 5F CLRB
|
3172 |
|
|
1631 FE2F 20 E4 BRA ESCCLS1
|
3173 |
218 |
davidgb |
1632 *
|
3174 |
221 |
davidgb |
1633 FE31 5F ESCCLS2 CLRB
|
3175 |
|
|
1634 FE32 F7 DF FB STB COLADX
|
3176 |
|
|
1635 FE35 E7 02 STB VDUCOL,X
|
3177 |
|
|
1636 FE37 F7 DF FE STB ESCFLG
|
3178 |
|
|
1637 FE3A 39 RTS
|
3179 |
218 |
davidgb |
1638 ENDIF VDUOPT
|
3180 |
|
|
1639 *
|
3181 |
|
|
1640 IFD DG640OPT
|
3182 |
|
|
1641 ***************************************************
|
3183 |
|
|
1642 * TELEVIDEO-TYPE MEMORY-MAPPED EMULATOR *
|
3184 |
|
|
1643 * *
|
3185 |
|
|
1644 * FOR HARD-WIRED MEMORY-MAPPED DISPLAYS USING THE *
|
3186 |
|
|
1645 * HIGH ORDER BIT OF EACH BYTE FOR REVERSE VIDEO *
|
3187 |
|
|
1646 * CURSORING (SUCH AS THE THOMAS INSTRUMENTATION *
|
3188 |
|
|
1647 * 16x64 BOARD). *
|
3189 |
|
|
1648 ***************************************************
|
3190 |
|
|
1649 *
|
3191 |
|
|
1650 ***************************************************
|
3192 |
|
|
1651 * INITIALIZE EMULATOR *
|
3193 |
|
|
1652 ***************************************************
|
3194 |
|
|
1653 *
|
3195 |
|
|
1654 VINIZ LDX #0
|
3196 |
|
|
1655 STX COLADX ; AND ROWADX
|
3197 |
|
|
1656 STX NEWROW ; AND ESCFLG
|
3198 |
|
|
1657 LDX #SCREEN ; POINT TO SCREEN
|
3199 |
|
|
1658 STX CURSOR ; SET PROGRAM CURSOR
|
3200 |
|
|
1659 LDA #$1B ; SEND ESCAPE
|
3201 |
|
|
1660 BSR VOUTCH
|
3202 |
|
|
1661 LDA #'Y ; CLEAR TO END OF SCREEN
|
3203 |
|
|
1662 *
|
3204 |
|
|
1663 ** VIDEO OUTPUT ROUTINE
|
3205 |
|
|
1664 *
|
3206 |
|
|
1665 VOUTCH PSHS A,B,X ; SAVE REGISTERS
|
3207 |
|
|
1666 *
|
3208 |
|
|
1667 ** CLEAR CURSOR
|
3209 |
|
|
1668 *
|
3210 |
|
|
1669 LDX CURSOR
|
3211 |
|
|
1670 LDB 0,X
|
3212 |
|
|
1671 ANDB #$7F
|
3213 |
|
|
1672 STB 0,X
|
3214 |
|
|
1673 *
|
3215 |
|
|
1674 ** CHECK FOR ESCAPE SEQUENCE
|
3216 |
|
|
1675 *
|
3217 |
|
|
1676 TST ESCFLG ; ESCAPE ACTIVE?
|
3218 |
|
|
1677 BEQ SOROU1 ; BRANCH IF NOT
|
3219 |
|
|
1678 BSR ESCAPE ; ELSE DO ESCAPE
|
3220 |
|
|
1679 BRA RETURN ; AND RETURN
|
3221 |
|
|
1680 *
|
3222 |
|
|
1681 ** CHECK FOR CONTROL CHARACTERS
|
3223 |
|
|
1682 *
|
3224 |
|
|
1683 SOROU1 CMPA #$20 ; CONTROL CODES?
|
3225 |
|
|
1684 BHS SOROU2
|
3226 |
|
|
1685 BSR CONTRL ; BRANCH IF SO
|
3227 |
|
|
1686 BRA RETURN
|
3228 |
|
|
1687 *
|
3229 |
|
|
1688 ** OUTPUT TEXT CHARACTER
|
3230 |
|
|
1689 *
|
3231 |
|
|
1690 SOROU2 LDX CURSOR ; ELSE GET CURSOR
|
3232 |
|
|
1691 STA 0,X ; DISPLAY CHARACTER
|
3233 |
|
|
1692 LBSR NEWCOL ; UPDATE COLUMN
|
3234 |
|
|
1693 *
|
3235 |
|
|
1694 ** DISPLAY CURSOR AND RETURN
|
3236 |
|
|
1695 *
|
3237 |
|
|
1696 RETURN LDX CURSOR ; AND DISPLAY IT
|
3238 |
|
|
1697 LDB ,X
|
3239 |
|
|
1698 ORB #$80 ; WITH REVID
|
3240 |
|
|
1699 STB ,X
|
3241 |
|
|
1700 PULS A,B,X,PC ; RESTORE REGISTERS AND RETURN
|
3242 |
|
|
1701 *
|
3243 |
|
|
1702 ***************************************************
|
3244 |
|
|
1703 * CONTROL CODE HANDLERS *
|
3245 |
|
|
1704 ***************************************************
|
3246 |
|
|
1705 *
|
3247 |
|
|
1706 CONTRL CMPA #$08 ; CTRL H - BACKSPACE ?
|
3248 |
|
|
1707 LBEQ BACKSP
|
3249 |
|
|
1708 CMPA #$1B ; ESCAPE SEQUENCE?
|
3250 |
|
|
1709 LBEQ SETESC
|
3251 |
|
|
1710 CMPA #$D ; CTRL M - RETURN?
|
3252 |
|
|
1711 LBEQ CRETN
|
3253 |
|
|
1712 CMPA #$0A ; CTRL J - LINE FEED
|
3254 |
|
|
1713 BNE RETESC ; NONE OF THESE, RETURN
|
3255 |
|
|
1714 *
|
3256 |
|
|
1715 ***************************************** LINE FEED
|
3257 |
|
|
1716 *
|
3258 |
|
|
1717 LINEFD LDD COLADX ; GET CURRENT COLUMN AND ROW
|
3259 |
|
|
1718 INCB ; BUMP ROW
|
3260 |
|
|
1719 CMPB #NUMLIN ; SCROLL TIME?
|
3261 |
|
|
1720 LBNE NEWCUR ; POSITION CURSOR IF NOT
|
3262 |
|
|
1721 LBRA SCROLL ; ELSE SCROLL IT
|
3263 |
|
|
1722 *
|
3264 |
|
|
1723 ***************************************** LINE FEED
|
3265 |
|
|
1724 *
|
3266 |
|
|
1725 LINEUP LDD COLADX ; GET CURRENT COLUMN AND ROW
|
3267 |
|
|
1726 TSTB ; AT TOP OF SCREEN ?
|
3268 |
|
|
1727 BEQ RETESC ; YES, RETURN
|
3269 |
|
|
1728 DECB ; NO, DECREMENT ROW
|
3270 |
|
|
1729 LBRA NEWCUR ; POSITION CURSOR
|
3271 |
|
|
1730 *
|
3272 |
|
|
1731 *********************************** BACK SPACE
|
3273 |
|
|
1732 *
|
3274 |
|
|
1733 BACKSP LDA COLADX ; GET CURRENT COLUMN AND ROW
|
3275 |
|
|
1734 BEQ RETESC ; IF AT TOP LEFT CORNER RETURN
|
3276 |
|
|
1735 DECA ; OTHERWISE BACK STEP ONE CHARACTER
|
3277 |
|
|
1736 LBRA POSCOL ; POSITION CURSOR
|
3278 |
|
|
1737 *
|
3279 |
|
|
1738 *********************************** CURSOR RIGHT
|
3280 |
|
|
1739 *
|
3281 |
|
|
1740 CHRIGHT LDA COLADX ; GET CURRENT COLUMN AND ROW
|
3282 |
|
|
1741 INCA ; MOVE RIGHT ONE CHARACTER
|
3283 |
|
|
1742 CMPA #LINLEN ; ARE WE AT THE END OF THE LINE ?
|
3284 |
|
|
1743 BEQ RETESC ; YES, RETURN
|
3285 |
|
|
1744 LBRA POSCOL ; NO, POSITION CURSOR
|
3286 |
|
|
1745 *
|
3287 |
|
|
1746 ***************************************************
|
3288 |
|
|
1747 * ESCAPE HANDLERS *
|
3289 |
|
|
1748 ***************************************************
|
3290 |
|
|
1749 *
|
3291 |
|
|
1750 ESCAPE LDB ESCFLG ; ARE WE IN AN ESCAPE SEQUENCE ?
|
3292 |
|
|
1751 CMPB #'= ; ARE WE SETTING CURSOR?
|
3293 |
|
|
1752 BEQ ESCCUR ; YES BRANCH TO SET CURSOR
|
3294 |
|
|
1753 CMPA #'Y ; CLEAR TO END OF SCREEN?
|
3295 |
|
|
1754 LBEQ ESCCLS ; YES, CLEAR SCREEN
|
3296 |
|
|
1755 CMPA #'T ; CLEAR TO END OF LINE?
|
3297 |
|
|
1756 BEQ ESCCLL ; YES, CLEAR LINE
|
3298 |
|
|
1757 CMPA #'E ; INSERT LINE?
|
3299 |
|
|
1758 BEQ ESCINL
|
3300 |
|
|
1759 CMPA #'R ; DELETE LINE?
|
3301 |
|
|
1760 BEQ ESCDLL
|
3302 |
|
|
1761 CMPA #'= ; STARTING CURSOR SET?
|
3303 |
|
|
1762 BNE CLRESC ; BRANCH IF NOT
|
3304 |
|
|
1763 *
|
3305 |
|
|
1764 ***************************** START ESCAPE SEQUENCE
|
3306 |
|
|
1765 *
|
3307 |
|
|
1766 SETESC STA ESCFLG ; ELSE START CURSORING
|
3308 |
|
|
1767 RTS ; AND RETURN
|
3309 |
|
|
1768 *
|
3310 |
|
|
1769 CLRESC CLR ESCFLG ; NO OTHERS SUPPORTED
|
3311 |
|
|
1770 RETESC RTS ; SO RETURN
|
3312 |
|
|
1771 *
|
3313 |
|
|
1772 ********************************* SET SCREEN CURSOR
|
3314 |
|
|
1773 *
|
3315 |
|
|
1774 ESCCUR TST NEWROW ; ROW SET?
|
3316 |
|
|
1775 BNE ESCCU1 ; BRANCH IF SO
|
3317 |
|
|
1776 STA NEWROW ; ELSE SET NEW ROW
|
3318 |
|
|
1777 RTS ; AND RETURN
|
3319 |
|
|
1778 *
|
3320 |
|
|
1779 ESCCU1 CLR ESCFLG
|
3321 |
|
|
1780 SUBA #$20 ; ADJUST COLUMN ADDRESS
|
3322 |
|
|
1781 CMPA #LINLEN-1 ; CHECK FOR ACCEPTABLE COLUM
|
3323 |
|
|
1782 BHI RETESC ; NOT OK, DO NOTHING
|
3324 |
|
|
1783 *
|
3325 |
|
|
1784 ESCCU2 LDB NEWROW
|
3326 |
|
|
1785 CLR NEWROW
|
3327 |
|
|
1786 SUBB #$20 ; ADJUST TO ROW ADDRESS
|
3328 |
|
|
1787 CMPB #NUMLIN-1 ; CHECK FOR ACCEPTABLE ROW
|
3329 |
|
|
1788 BHI RETESC ; ELSE RETURN DOING NOTHING
|
3330 |
|
|
1789 BRA NEWCUR ; GO SET NEW CURSOR IF SO
|
3331 |
|
|
1790 *
|
3332 |
|
|
1791 *************************** DELETE LINE FROM SCREEN
|
3333 |
|
|
1792 *
|
3334 |
|
|
1793 ESCDLL BSR CRETN ; GO COL. ZERO
|
3335 |
|
|
1794 LDB ROWADX
|
3336 |
|
|
1795 CMPB #NUMLIN-1
|
3337 |
|
|
1796 BEQ SCROL3
|
3338 |
|
|
1797 BRA SCROL1 ; AND DELETE THIS LINE
|
3339 |
|
|
1798 *
|
3340 |
|
|
1799 *************************** INSERT LINE INTO SCREEN
|
3341 |
|
|
1800 *
|
3342 |
|
|
1801 ESCINL BSR CRETN ; GO TO COL. ZERO
|
3343 |
|
|
1802 LDB ROWADX
|
3344 |
|
|
1803 CMPB #NUMLIN-1
|
3345 |
|
|
1804 BEQ ESCCLL
|
3346 |
|
|
1805 *
|
3347 |
|
|
1806 ** SCROLL SCREEN DOWN FROM CURSOR
|
3348 |
|
|
1807 *
|
3349 |
|
|
1808 LDX #SCREEN+SCNLEN-LINLEN
|
3350 |
|
|
1809 ESCIN0 LDA ,-X
|
3351 |
|
|
1810 STA LINLEN,X
|
3352 |
|
|
1811 LDA SCNLEN,X
|
3353 |
|
|
1812 STA SCNLEN+LINLEN,X
|
3354 |
|
|
1813 CMPX CURSOR
|
3355 |
|
|
1814 BNE ESCIN0
|
3356 |
|
|
1815 *
|
3357 |
|
|
1816 ****************** CLEAR FROM CURSOR TO END OF LINE
|
3358 |
|
|
1817 *
|
3359 |
|
|
1818 ESCCLL LDA COLADX ; GET CURRENT COLUMN
|
3360 |
|
|
1819 LDX CURSOR ; GET CURSOR
|
3361 |
|
|
1820 LDB #$20 ; AND CLEAR CHAR
|
3362 |
|
|
1821 ESCLL1 STB SCNLEN,X ; CLEAR ATTRIBUTE
|
3363 |
|
|
1822 STB ,X+ ; CLEAR TEXT
|
3364 |
|
|
1823 INCA
|
3365 |
|
|
1824 CMPA #LINLEN ; UNTIL END OF LINE
|
3366 |
|
|
1825 BNE ESCLL1
|
3367 |
|
|
1826 CLR ESCFLG
|
3368 |
|
|
1827 RTS
|
3369 |
|
|
1828 *
|
3370 |
|
|
1829 *********************************** CARRIAGE RETURN
|
3371 |
|
|
1830 *
|
3372 |
|
|
1831 CRETN CLRA ; SET COLUMN ZERO
|
3373 |
|
|
1832 POSCOL LDB ROWADX ; GET CURRENT ROW
|
3374 |
|
|
1833 *
|
3375 |
|
|
1834 *********** GENERATE NEW CURSOR POSITION AND RETURN
|
3376 |
|
|
1835 *
|
3377 |
|
|
1836 NEWCUR STD COLADX ; SAVE NEW ROW AND COLUMN
|
3378 |
|
|
1837 LDA #LINLEN ; ELSE ADD A LINE
|
3379 |
|
|
1838 MUL ; LINLEN * ROWADX
|
3380 |
|
|
1839 ADDB COLADX
|
3381 |
|
|
1840 ADCA #0
|
3382 |
|
|
1841 ADDD #SCREEN ; ADD SCREEN BASE.
|
3383 |
|
|
1842 STD CURSOR ; SAVE NEW CURSOR
|
3384 |
|
|
1843 TFR D,X ; GET CURSOR IN X
|
3385 |
|
|
1844 RTS ; AND RETURN
|
3386 |
|
|
1845 *
|
3387 |
|
|
1846 ********************* UPDATE CURRENT COLUMN AND ROW
|
3388 |
|
|
1847 *
|
3389 |
|
|
1848 NEWCOL LDD COLADX ; GET ROW AND COLUMN
|
3390 |
|
|
1849 INCA ; BUMP COLUMN
|
3391 |
|
|
1850 CMPA #LINLEN ; ROLL?
|
3392 |
|
|
1851 BNE NEWCUR ; BRANCH IF NOT
|
3393 |
|
|
1852 CLRA ; ELSE RESET TO ZERO
|
3394 |
|
|
1853 INCB ; AND BUMP ROW
|
3395 |
|
|
1854 CMPB #NUMLIN
|
3396 |
|
|
1855 BNE NEWCUR
|
3397 |
|
|
1856 DECB ; BOTTOM ROW
|
3398 |
|
|
1857 BSR NEWCUR
|
3399 |
|
|
1858 *
|
3400 |
|
|
1859 ********************************* SCROLL THE SCREEN
|
3401 |
|
|
1860 *
|
3402 |
|
|
1861 SCROLL LDX #SCREEN ; POINT TO SCREEN
|
3403 |
|
|
1862 SCROL1 LDA SCNLEN+LINLEN,X
|
3404 |
|
|
1863 STA SCNLEN,X
|
3405 |
|
|
1864 LDA LINLEN,X ; MOVE TWO BYTES
|
3406 |
|
|
1865 STA ,X+ ; UP ONE LINE
|
3407 |
|
|
1866 CMPX #SCREEN+SCNLEN-LINLEN
|
3408 |
|
|
1867 BNE SCROL1 ; LOOP UNTIL DONE
|
3409 |
|
|
1868 BRA SCROL3
|
3410 |
|
|
1869 *
|
3411 |
|
|
1870 **************** CLEAR FROM CURSOR TO END OF SCREEN
|
3412 |
|
|
1871 *
|
3413 |
|
|
1872 ESCCLS LDX CURSOR ; GET CURSOR
|
3414 |
|
|
1873 SCROL3 LDA #$20 ; GET A SPACE
|
3415 |
|
|
1874 SCROL2 STA SCNLEN,X ; CLEAR ATTRIBUTES
|
3416 |
|
|
1875 STA ,X+ ; AND TEXT
|
3417 |
|
|
1876 CMPX #SCREEN+SCNLEN
|
3418 |
|
|
1877 BNE SCROL2 ; UNTIL DONE
|
3419 |
|
|
1878 CLR ESCFLG
|
3420 |
|
|
1879 RTS
|
3421 |
|
|
1880 ENDIF DG640OPT
|
3422 |
|
|
1880 ENDIF DG640OPT
|
3423 |
|
|
1881 *
|
3424 |
|
|
1882 IFD PRTOPT
|
3425 |
|
|
1883 *************************************
|
3426 |
|
|
1884 *
|
3427 |
|
|
1885 ** PRINTER DRIVER ROUTINES
|
3428 |
|
|
1886 *
|
3429 |
|
|
1887 *************************************
|
3430 |
|
|
1888 *
|
3431 |
|
|
1889 ** PINIZ - INITIATE PRINTER PORT
|
3432 |
|
|
1890 *
|
3433 |
|
|
1891 PINIZ PSHS B
|
3434 |
|
|
1892 LDD #DIRMSK*256+$04 ; ACCA=DIRMSK ACCB=$04
|
3435 |
|
|
1893 STD PADATA ; SET DDR AND SELECT DATA
|
3436 |
|
|
1894 *
|
3437 |
|
|
1895 ** RESET PRINTER
|
3438 |
|
|
1896 *
|
3439 |
|
|
1897 LDB #PRESET
|
3440 |
|
|
1898 STB PADATA
|
3441 |
|
|
1899 RESTLP INCB ; DELAY FOR RESET
|
3442 |
|
|
1900 BNE RESTLP
|
3443 |
|
|
1901 STA PADATA ; ACCA=DIRMSK
|
3444 |
|
|
1902 *
|
3445 |
|
|
1903 ** INITALIZE PORT B (DATA PORT)
|
3446 |
|
|
1904 *
|
3447 |
|
|
1905 LDA #$2A
|
3448 |
|
|
1906 STA PBCTRL
|
3449 |
|
|
1907 LDD #$FF2E ; ACCA=$FF ACCB =%00101110
|
3450 |
|
|
1908 STD PBDATA ; PBDREG PBCTRL
|
3451 |
|
|
1909 *
|
3452 |
|
|
1910 ** SELECT 66 LINES/PAGE
|
3453 |
|
|
1911 *
|
3454 |
|
|
1912 LDA #$1B
|
3455 |
|
|
1913 BSR POUTCH
|
3456 |
|
|
1914 LDA #'C
|
3457 |
|
|
1915 BSR POUTCH
|
3458 |
|
|
1916 LDA #66
|
3459 |
|
|
1917 PULS B
|
3460 |
|
|
1918 *************************************
|
3461 |
|
|
1919 *
|
3462 |
|
|
1920 ** OUTPUT A CHARACTER TO THE PRINTER
|
3463 |
|
|
1921 *
|
3464 |
|
|
1922 *************************************
|
3465 |
|
|
1923 POUTCH PSHS B
|
3466 |
|
|
1924 LDB PBDATA ; CLEAR INTERRUPT BIT
|
3467 |
|
|
1925 *
|
3468 |
|
|
1926 ** WAIT TILL NOT BUSY
|
3469 |
|
|
1927 *
|
3470 |
|
|
1928 BUSYLP LDB PADATA
|
3471 |
|
|
1929 BITB #PERROR
|
3472 |
|
|
1930 BEQ PEXIT
|
3473 |
|
|
1931 TSTB
|
3474 |
|
|
1932 BMI BUSYLP
|
3475 |
|
|
1933 *
|
3476 |
|
|
1934 ** NOW OUTPUT CHARACTER
|
3477 |
|
|
1935 *
|
3478 |
|
|
1936 STA PBDATA
|
3479 |
|
|
1937 PEXIT PULS B,PC
|
3480 |
|
|
1938 *************************************
|
3481 |
|
|
1939 *
|
3482 |
|
|
1940 ** PCHK TEST IFD PRINTER READY
|
3483 |
|
|
1941 *
|
3484 |
|
|
1942 *************************************
|
3485 |
|
|
1943 PCHK TST PBCTRL ; TEST STATE OF CRB7
|
3486 |
|
|
1944 RTS ; SET ON ACKNOWLEDGE
|
3487 |
|
|
1945 ENDIF PRTOPT
|
3488 |
|
|
1945 ENDIF PRTOPT
|
3489 |
|
|
1946 *************************************
|
3490 |
|
|
1947 *
|
3491 |
|
|
1948 * MONITOR KEYBOARD COMMAND JUMP TABLE
|
3492 |
|
|
1949 *
|
3493 |
|
|
1950 *************************************
|
3494 |
|
|
1951 *
|
3495 |
221 |
davidgb |
1952 FE3B JMPTAB EQU *
|
3496 |
|
|
1953 FE3B 01 FCB 1 " ^A "
|
3497 |
|
|
1954 FE3C FB 74 FDB ALTRA
|
3498 |
|
|
1955 FE3E 02 FCB 2 " ^B "
|
3499 |
|
|
1956 FE3F FB 69 FDB ALTRB
|
3500 |
|
|
1957 FE41 03 FCB 3 " ^C "
|
3501 |
|
|
1958 FE42 FB 7F FDB ALTRCC
|
3502 |
|
|
1959 FE44 04 FCB 4 " ^D "
|
3503 |
|
|
1960 FE45 FB 5E FDB ALTRDP
|
3504 |
|
|
1961 FE47 10 FCB $10 " ^P "
|
3505 |
|
|
1962 FE48 FB 31 FDB ALTRPC
|
3506 |
|
|
1963 FE4A 15 FCB $15 " ^U "
|
3507 |
|
|
1964 FE4B FB 3D FDB ALTRU
|
3508 |
|
|
1965 FE4D 18 FCB $18 " ^X "
|
3509 |
|
|
1966 FE4E FB 53 FDB ALTRX
|
3510 |
|
|
1967 FE50 19 FCB $19 " ^Y "
|
3511 |
|
|
1968 FE51 FB 48 FDB ALTRY
|
3512 |
218 |
davidgb |
1969 *
|
3513 |
221 |
davidgb |
1970 FE53 42 FCC 'B'
|
3514 |
|
|
1971 FE54 F9 5C FDB BRKPNT
|
3515 |
|
|
1972 FE56 45 FCC 'E'
|
3516 |
|
|
1973 FE57 F8 FD FDB MEMDUMP
|
3517 |
|
|
1974 FE59 47 FCC 'G'
|
3518 |
|
|
1975 FE5A F8 A5 FDB GO
|
3519 |
|
|
1976 FE5C 4C FCC 'L'
|
3520 |
|
|
1977 FE5D FA 5E FDB LOAD
|
3521 |
|
|
1978 FE5F 50 FCC 'P'
|
3522 |
|
|
1979 FE60 FA BC FDB PUNCH
|
3523 |
|
|
1980 FE62 4D FCC 'M'
|
3524 |
|
|
1981 FE63 F8 A8 FDB MEMCHG
|
3525 |
|
|
1982 FE65 52 FCC 'R'
|
3526 |
|
|
1983 FE66 FB ED FDB REGSTR
|
3527 |
|
|
1984 FE68 53 FCC 'S'
|
3528 |
|
|
1985 FE69 F8 F1 FDB DISSTK
|
3529 |
|
|
1986 FE6B 58 FCC 'X'
|
3530 |
|
|
1987 FE6C F9 88 FDB XBKPNT
|
3531 |
218 |
davidgb |
1988 IFD MFDCOPT
|
3532 |
|
|
1989 FCC 'D' ; *** SWTPC USES 'U' FOR MINIBOOT
|
3533 |
|
|
1990 FDB MINBOOT
|
3534 |
|
|
1991 ENDIF MFDCOPT
|
3535 |
|
|
1991 ENDIF MFDCOPT
|
3536 |
|
|
1992 IFD CF8OPT
|
3537 |
|
|
1993 FCC 'D' ; *** FPGA 8 BIT USES 'D' FOR CFBOOT
|
3538 |
|
|
1994 FDB CFBOOT
|
3539 |
|
|
1995 ENDIF CF8OPT
|
3540 |
|
|
1995 ENDIF CF8OPT
|
3541 |
|
|
1996 IFD IDEOPT
|
3542 |
221 |
davidgb |
1997 FE6E 44 FCC 'D' ; *** XESS FPGA 16 BIT IDE USES 'D' FOR IDEBOOT
|
3543 |
|
|
1998 FE6F F9 D5 FDB IDEBOOT
|
3544 |
218 |
davidgb |
1999 ENDIF IDEOPT
|
3545 |
|
|
2000 IFD DMAFOPT
|
3546 |
|
|
2001 FCC 'U' ; *** SWTPC USES 'D' FOR DMAF2 BOOT
|
3547 |
|
|
2002 FDB DBOOT
|
3548 |
|
|
2003 ENDIF DMAFOPT
|
3549 |
|
|
2003 ENDIF DMAFOPT
|
3550 |
|
|
2004 IFD EXTOPT
|
3551 |
221 |
davidgb |
2005 FE71 55 FCC 'U' ; *** IF FPGA, 'U' IS FOR USER
|
3552 |
|
|
2006 FE72 FC 92 FDB USRCMD
|
3553 |
218 |
davidgb |
2007 ENDIF EXTOPT
|
3554 |
|
|
2008 IFD RTCOPT
|
3555 |
|
|
2009 FCC 'T'
|
3556 |
|
|
2010 FDB TIMSET
|
3557 |
|
|
2011 ENDIF RTCOPT
|
3558 |
|
|
2011 ENDIF RTCOPT
|
3559 |
|
|
2012 IFD TRAOPT
|
3560 |
|
|
2013 FCC "T"
|
3561 |
|
|
2014 FDB TRACE
|
3562 |
|
|
2015 ENDIF TRAOPT
|
3563 |
|
|
2015 ENDIF TRAOPT
|
3564 |
|
|
2016 *
|
3565 |
221 |
davidgb |
2017 FE74 TABEND EQU *
|
3566 |
218 |
davidgb |
2018 *
|
3567 |
|
|
2019 * ** 6809 VECTOR ADDRESSES **
|
3568 |
|
|
2020 *
|
3569 |
|
|
2021 * FOLLOWING ARE THE ADDRESSES OF THE VECTOR ROUTINES
|
3570 |
|
|
2022 * FOR THE 6809 PROCESSOR. DURING INITIALIZATION THEY
|
3571 |
|
|
2023 * ARE RELOCATED TO RAM FROM $DFC0 TO $DFCF. THEY ARE
|
3572 |
|
|
2024 * RELOCATED TO RAM SO THAT THE USER MAY REVECTOR TO
|
3573 |
|
|
2025 * HIS OWN ROUTINES IF HE SO DESIRES.
|
3574 |
|
|
2026 *
|
3575 |
|
|
2027 *
|
3576 |
221 |
davidgb |
2028 FE74 F9 94 RAMVEC FDB SWIE ; USER-V
|
3577 |
|
|
2029 FE76 F8 A7 FDB RTI ; SWI3-V
|
3578 |
|
|
2030 FE78 F8 A7 FDB RTI ; SWI2-V
|
3579 |
|
|
2031 FE7A F8 A7 FDB RTI ; FIRQ-V
|
3580 |
|
|
2032 FE7C F8 A7 FDB RTI ; IRQ-V
|
3581 |
|
|
2033 FE7E F9 94 FDB SWIE ; SWI-V
|
3582 |
|
|
2034 FE80 FF FF FDB $FFFF ; SVC-VO
|
3583 |
|
|
2035 FE82 FF FF FDB $FFFF ; SVC-VL
|
3584 |
218 |
davidgb |
2036 *
|
3585 |
|
|
2037 * PRINTABLE MESSAGE STRINGS
|
3586 |
|
|
2038 *
|
3587 |
221 |
davidgb |
2039 FE84 0D 0A 00 00 00 MSG1 FCB $D,$A,$0,$0,$0 * 0, CR/LF, 0
|
3588 |
|
|
2040 FE89 53 79 73 30 39 42 FCC 'Sys09Bug 1.7 FOR '
|
3589 |
218 |
davidgb |
75 67 20 31 2E 37
|
3590 |
|
|
20 46 4F 52 20
|
3591 |
|
|
2041 IFD SWTOPT
|
3592 |
|
|
2042 FCC 'SWTPC'
|
3593 |
|
|
2043 ENDIF SWTOPT
|
3594 |
|
|
2043 ENDIF SWTOPT
|
3595 |
|
|
2044 IFD ADSOPT
|
3596 |
|
|
2045 FCC 'ADS6809'
|
3597 |
|
|
2046 ENDIF ADSOPT
|
3598 |
|
|
2046 ENDIF ADSOPT
|
3599 |
|
|
2047 IFD B3SOPT
|
3600 |
|
|
2048 FCC 'B3-S2+'
|
3601 |
|
|
2049 ENDIF B3SOPT
|
3602 |
|
|
2049 ENDIF B3SOPT
|
3603 |
|
|
2050 IFD B5XOPT
|
3604 |
|
|
2051 FCC 'B5-X300'
|
3605 |
|
|
2052 ENDIF B5XOPT
|
3606 |
|
|
2052 ENDIF B5XOPT
|
3607 |
|
|
2053 IFD S3SOPT
|
3608 |
|
|
2054 FCC 'S3STARTER'
|
3609 |
|
|
2055 ENDIF S3SOPT
|
3610 |
|
|
2055 ENDIF S3SOPT
|
3611 |
|
|
2056 IFD S3EOPT
|
3612 |
|
|
2057 FCC 'S3E'
|
3613 |
|
|
2058 ENDIF S3EOPT
|
3614 |
|
|
2058 ENDIF S3EOPT
|
3615 |
|
|
2059 IFD XESOPT
|
3616 |
|
|
2060 FCC 'XESS'
|
3617 |
|
|
2061 ENDIF XESOPT
|
3618 |
|
|
2061 ENDIF XESOPT
|
3619 |
221 |
davidgb |
2062 IFD ATLOPT
|
3620 |
|
|
2063 FE9A 41 74 6C 79 73 FCC 'Atlys'
|
3621 |
|
|
2064 ENDIF ATLOPT
|
3622 |
218 |
davidgb |
2065 IFD DE270OPT
|
3623 |
|
|
2066 FCC 'DE2-70'
|
3624 |
|
|
2067 ENDIF DE270OPT
|
3625 |
|
|
2067 ENDIF DE270OPT
|
3626 |
221 |
davidgb |
2068 FE9F 20 2D 20 FCC ' - '
|
3627 |
|
|
2069 FEA2 04 FCB 4
|
3628 |
|
|
2070 FEA3 4B 0D 0A 00 00 00 MSG2 FCB 'K,$0D,$0A,$00,$00,$00,$04 ; K,,,3 NULS,
|
3629 |
218 |
davidgb |
04
|
3630 |
221 |
davidgb |
2071 FEAA 3E MSG3 FCC '>'
|
3631 |
|
|
2072 FEAB 04 FCB 4
|
3632 |
|
|
2073 FEAC 57 48 41 54 3F MSG4 FCC 'WHAT?'
|
3633 |
|
|
2074 FEB1 04 FCB 4
|
3634 |
|
|
2075 FEB2 20 2D 20 MSG5 FCC ' - '
|
3635 |
|
|
2076 FEB5 04 FCB 4'
|
3636 |
|
|
2077 FEB6 20 20 53 50 3D MSG10 FCC ' SP='
|
3637 |
|
|
2078 FEBB 04 FCB 4
|
3638 |
|
|
2079 FEBC 20 20 50 43 3D MSG11 FCC ' PC='
|
3639 |
|
|
2080 FEC1 04 FCB 4
|
3640 |
|
|
2081 FEC2 20 20 55 53 3D MSG12 FCC ' US='
|
3641 |
|
|
2082 FEC7 04 FCB 4
|
3642 |
|
|
2083 FEC8 20 20 49 59 3D MSG13 FCC ' IY='
|
3643 |
|
|
2084 FECD 04 FCB 4
|
3644 |
|
|
2085 FECE 20 20 49 58 3D MSG14 FCC ' IX='
|
3645 |
|
|
2086 FED3 04 FCB 4
|
3646 |
|
|
2087 FED4 20 20 44 50 3D MSG15 FCC ' DP='
|
3647 |
|
|
2088 FED9 04 FCB 4
|
3648 |
|
|
2089 FEDA 20 20 41 3D MSG16 FCC ' A='
|
3649 |
|
|
2090 FEDE 04 FCB 4
|
3650 |
|
|
2091 FEDF 20 20 42 3D MSG17 FCC ' B='
|
3651 |
|
|
2092 FEE3 04 FCB 4
|
3652 |
|
|
2093 FEE4 20 20 43 43 3A 20 MSG18 FCC ' CC: '
|
3653 |
|
|
2094 FEEA 04 FCB 4
|
3654 |
|
|
2095 FEEB 45 46 48 49 4E 5A MSG19 FCC 'EFHINZVC'
|
3655 |
218 |
davidgb |
56 43
|
3656 |
221 |
davidgb |
2096 FEF3 53 31 MSG20 FCC 'S1'
|
3657 |
|
|
2097 FEF5 04 FCB 4
|
3658 |
218 |
davidgb |
2098 IFD DATOPT
|
3659 |
|
|
2099 *
|
3660 |
|
|
2100 * POWER UP/ RESET/ NMI ENTRY POINT
|
3661 |
|
|
2101 *
|
3662 |
221 |
davidgb |
2102 FF00 ORG $FF00
|
3663 |
218 |
davidgb |
2103 *
|
3664 |
|
|
2104 *
|
3665 |
221 |
davidgb |
2105 FF00 8E FF F0 START LDX #IC11 ; POINT TO DAT RAM IC11
|
3666 |
|
|
2106 FF03 86 0F LDA #$0F ; GET COMPLIMENT OF ZERO
|
3667 |
218 |
davidgb |
2107 *
|
3668 |
|
|
2108 *
|
3669 |
|
|
2109 * INITIALIZE DAT RAM --- LOADS $F-$0 IN LOCATIONS $0-$F
|
3670 |
|
|
2110 * OF DAT RAM, THUS STORING COMPLEMENT OF MSB OF ADDRESS
|
3671 |
|
|
2111 * IN THE DAT RAM. THE COMPLEMENT IS REQUIRED BECAUSE THE
|
3672 |
|
|
2112 * OUTPUT OF IC11, A 74S189, IS THE INVERSE OF THE DATA
|
3673 |
|
|
2113 * STORED IN IT.
|
3674 |
|
|
2114 *
|
3675 |
|
|
2115 *
|
3676 |
221 |
davidgb |
2116 FF05 A7 80 DATLP STA ,X+ ; STORE & POINT TO NEXT RAM LOCATION
|
3677 |
|
|
2117 FF07 4A DECA ; GET COMP. VALUE FOR NEXT LOCATION
|
3678 |
|
|
2118 FF08 26 FB BNE DATLP ; ALL 16 LOCATIONS INITIALIZED ?
|
3679 |
218 |
davidgb |
2119 *
|
3680 |
|
|
2120 * NOTE: IX NOW CONTAINS $0000, DAT RAM IS NO LONGER
|
3681 |
|
|
2121 * ADDRESSED, AND LOGICAL ADDRESSES NOW EQUAL
|
3682 |
|
|
2122 * PHYSICAL ADDRESSES.
|
3683 |
|
|
2123 *
|
3684 |
221 |
davidgb |
2124 FF0A 86 F0 LDA #$F0
|
3685 |
|
|
2125 FF0C A7 84 STA ,X ; STORE $F0 AT $FFFF
|
3686 |
|
|
2126 FF0E 8E D0 A0 LDX #$D0A0 ; ASSUME RAM TO BE AT $D000-$DFFF
|
3687 |
|
|
2127 FF11 10 8E 55 AA LDY #TSTPAT ; LOAD TEST DATA PATTERN INTO "Y"
|
3688 |
|
|
2128 FF15 EE 84 TSTRAM LDU ,X ; SAVE DATA FROM TEST LOCATION
|
3689 |
|
|
2129 FF17 10 AF 84 STY ,X ; STORE TEST PATTERN AT $D0A0
|
3690 |
|
|
2130 FF1A 10 AC 84 CMPY ,X ; IS THERE RAM AT THIS LOCATION ?
|
3691 |
|
|
2131 FF1D 27 0B BEQ CNVADR ; IF MATCH THERE'S RAM, SO SKIP
|
3692 |
|
|
2132 FF1F 30 89 F0 00 LEAX -$1000,X ; ELSE POINT 4K LOWER
|
3693 |
|
|
2133 FF23 8C F0 A0 CMPX #$F0A0 ; DECREMENTED PAST ZER0 YET ?
|
3694 |
|
|
2134 FF26 26 ED BNE TSTRAM ; IF NOT CONTINUE TESTING FOR RAM
|
3695 |
|
|
2135 FF28 20 D6 BRA START ; ELSE START ALL OVER AGAIN
|
3696 |
218 |
davidgb |
2136 *
|
3697 |
|
|
2137 *
|
3698 |
|
|
2138 * THE FOLLOWING CODE STORES THE COMPLEMENT OF
|
3699 |
|
|
2139 * THE MS CHARACTER OF THE FOUR CHARACTER HEX
|
3700 |
|
|
2140 * ADDRESS OF THE FIRST 4K BLOCK OF RAM LOCATED
|
3701 |
|
|
2141 * BY THE ROUTINE "TSTRAM" INTO THE DAT RAM. IT
|
3702 |
|
|
2142 * IS STORED IN RAM IN THE LOCATION THAT IS
|
3703 |
|
|
2143 * ADDRESSED WHEN THE PROCESSOR ADDRESS IS $D---,
|
3704 |
|
|
2144 * THUS IF THE FIRST 4K BLOCK OF RAM IS FOUND
|
3705 |
|
|
2145 * WHEN TESTING LOCATION $70A0, MEANING THERE
|
3706 |
|
|
2146 * IS NO RAM PHYSICALLY ADDRESSED IN THE RANGE
|
3707 |
|
|
2147 * $8000-$DFFF, THEN THE COMPLEMENT OF THE
|
3708 |
|
|
2148 * "7" IN THE $70A0 WILL BE STORED IN
|
3709 |
|
|
2149 * THE DAT RAM. THUS WHEN THE PROCESSOR OUTPUTS
|
3710 |
|
|
2150 * AN ADDRESS OF $D---, THE DAT RAM WILL RESPOND
|
3711 |
|
|
2151 * BY RECOMPLEMENTING THE "7" AND OUTPUTTING THE
|
3712 |
|
|
2152 * 7 ONTO THE A12-A15 ADDRESS LINES. THUS THE
|
3713 |
|
|
2153 * RAM THAT IS PHYSICALLY ADDRESSED AT $7---
|
3714 |
|
|
2154 * WILL RESPOND AND APPEAR TO THE 6809 THAT IT
|
3715 |
|
|
2155 * IS AT $D--- SINCE THAT IS THE ADDRESS THE
|
3716 |
|
|
2156 * 6809 WILL BE OUTPUTING WHEN THAT 4K BLOCK
|
3717 |
|
|
2157 * OF RAM RESPONDS.
|
3718 |
|
|
2158 *
|
3719 |
|
|
2159 *
|
3720 |
221 |
davidgb |
2160 FF2A EF 84 CNVADR STU ,X ; RESTORE DATA AT TEST LOCATION
|
3721 |
|
|
2161 FF2C 1F 10 TFR X,D ; PUT ADDR. OF PRESENT 4K BLOCK IN D
|
3722 |
|
|
2162 FF2E 43 COMA ; COMPLEMENT MSB OF THAT ADDRESS
|
3723 |
|
|
2163 FF2F 44 LSRA ; PUT MS 4 BITS OF ADDRESS IN
|
3724 |
|
|
2164 FF30 44 LSRA ; LOCATION D0-D3 TO ALLOW STORING
|
3725 |
|
|
2165 FF31 44 LSRA ; IT IN THE DYNAMIC ADDRESS
|
3726 |
|
|
2166 FF32 44 LSRA ; TRANSLATION RAM.
|
3727 |
|
|
2167 FF33 B7 FF FD STA $FFFD ; STORE XLATION FACTOR IN DAT "D"
|
3728 |
218 |
davidgb |
2168 *
|
3729 |
221 |
davidgb |
2169 FF36 10 CE DF C0 LDS #STACK ; INITIALIZE STACK POINTER
|
3730 |
218 |
davidgb |
2170 *
|
3731 |
|
|
2171 *
|
3732 |
|
|
2172 * THE FOLLOWING CHECKS TO FIND THE REAL PHYSICAL ADDRESSES
|
3733 |
|
|
2173 * OF ALL 4K BLKS OF RAM IN THE SYSTEM. WHEN EACH 4K BLK
|
3734 |
|
|
2174 * OF RAM IS LOCATED, THE COMPLEMENT OF IT'S REAL ADDRESS
|
3735 |
|
|
2175 * IS THEN STORED IN A "LOGICAL" TO "REAL" ADDRESS XLATION
|
3736 |
|
|
2176 * TABLE THAT IS BUILT FROM $DFD0 TO $DFDF. FOR EXAMPLE IF
|
3737 |
|
|
2177 * THE SYSTEM HAS RAM THAT IS PHYSICALLY LOCATED (WIRED TO
|
3738 |
|
|
2178 * RESPOND) AT THE HEX LOCATIONS $0--- THRU $F---....
|
3739 |
|
|
2179 *
|
3740 |
|
|
2180 * 0 1 2 3 4 5 6 7 8 9 A B C D E F
|
3741 |
|
|
2181 * 4K 4K 4K 4K 4K 4K 4K 4K -- 4K 4K 4K 4K -- -- --
|
3742 |
|
|
2182 *
|
3743 |
|
|
2183 * ....FOR A TOTAL OF 48K OF RAM, THEN THE TRANSLATION TABLE
|
3744 |
|
|
2184 * CREATED FROM $DFD0 TO $DFDF WILL CONSIST OF THE FOLLOWING....
|
3745 |
|
|
2185 *
|
3746 |
|
|
2186 * 0 1 2 3 4 5 6 7 8 9 A B C D E F
|
3747 |
|
|
2187 * 0F 0E 0D 0C 0B 0A 09 08 06 05 00 00 04 03 F1 F0
|
3748 |
|
|
2188 *
|
3749 |
|
|
2189 *
|
3750 |
|
|
2190 * HERE WE SEE THE LOGICAL ADDRESSES OF MEMORY FROM $0000-$7FFF
|
3751 |
|
|
2191 * HAVE NOT BEEN SELECTED FOR RELOCATION SO THAT THEIR PHYSICAL
|
3752 |
|
|
2192 * ADDRESS WILL = THEIR LOGICAL ADDRESS; HOWEVER, THE 4K BLOCK
|
3753 |
|
|
2193 * PHYSICALLY AT $9000 WILL HAVE ITS ADDRESS TRANSLATED SO THAT
|
3754 |
|
|
2194 * IT WILL LOGICALLY RESPOND AT $8000. LIKEWISE $A,$B, AND $C000
|
3755 |
|
|
2195 * WILL BE TRANSLATED TO RESPOND TO $9000,$C000, AND $D000
|
3756 |
|
|
2196 * RESPECTIVELY. THE USER SYSTEM WILL LOGICALLY APPEAR TO HAVE
|
3757 |
|
|
2197 * MEMORY ADDRESSED AS FOLLOWS....
|
3758 |
|
|
2198 *
|
3759 |
|
|
2199 * 0 1 2 3 4 5 6 7 8 9 A B C D E F
|
3760 |
|
|
2200 * 4K 4K 4K 4K 4K 4K 4K 4K 4K 4K -- -- 4K 4K -- --
|
3761 |
|
|
2201 *
|
3762 |
|
|
2202 *
|
3763 |
221 |
davidgb |
2203 FF3A 10 8E DF D0 LDY #LRARAM ; POINT TO LOGICAL/REAL ADDR. TABLE
|
3764 |
|
|
2204 FF3E A7 2D STA 13,Y ; STORE $D--- XLATION FACTOR AT $DFDD
|
3765 |
|
|
2205 FF40 6F 2E CLR 14,Y ; CLEAR $DFDE
|
3766 |
|
|
2206 FF42 86 F0 LDA #$F0 ; DESTINED FOR IC8 AN MEM EXPANSION ?
|
3767 |
|
|
2207 FF44 A7 2F STA 15,Y ; STORE AT $DFDF
|
3768 |
|
|
2208 FF46 86 0C LDA #$0C ; PRESET NUMBER OF BYTES TO CLEAR
|
3769 |
|
|
2209 FF48 6F A6 CLRLRT CLR A,Y ; CLEAR $DFDC THRU $DFD0
|
3770 |
|
|
2210 FF4A 4A DECA ; SUB. 1 FROM BYTES LEFT TO CLEAR
|
3771 |
|
|
2211 FF4B 2A FB BPL CLRLRT ; CONTINUE IF NOT DONE CLEARING
|
3772 |
|
|
2212 FF4D 30 89 F0 00 FNDRAM LEAX -$1000,X ; POINT TO NEXT LOWER 4K OF RAM
|
3773 |
|
|
2213 FF51 8C F0 A0 CMPX #$F0A0 ; TEST FOR DECREMENT PAST ZERO
|
3774 |
|
|
2214 FF54 27 22 BEQ FINTAB ; SKIP IF FINISHED
|
3775 |
|
|
2215 FF56 EE 84 LDU ,X ; SAVE DATA AT CURRENT TEST LOCATION
|
3776 |
|
|
2216 FF58 10 8E 55 AA LDY #TSTPAT ; LOAD TEST DATA PATTERN INTO Y REG.
|
3777 |
|
|
2217 FF5C 10 AF 84 STY ,X ; STORE TEST PATT. INTO RAM TEST LOC.
|
3778 |
|
|
2218 FF5F 10 AC 84 CMPY ,X ; VERIFY RAM AT TEST LOCATION
|
3779 |
|
|
2219 FF62 26 E9 BNE FNDRAM ; IF NO RAM GO LOOK 4K LOWER
|
3780 |
|
|
2220 FF64 EF 84 STU ,X ; ELSE RESTORE DATA TO TEST LOCATION
|
3781 |
|
|
2221 FF66 10 8E DF D0 LDY #LRARAM ; POINT TO LOGICAL/REAL ADDR. TABLE
|
3782 |
|
|
2222 FF6A 1F 10 TFR X,D ; PUT ADDR. OF PRESENT 4K BLOCK IN D
|
3783 |
|
|
2223 FF6C 44 LSRA ; PUT MS 4 BITS OF ADDR. IN LOC. D0-D3
|
3784 |
|
|
2224 FF6D 44 LSRA ; TO ALLOW STORING IT IN THE DAT RAM.
|
3785 |
|
|
2225 FF6E 44 LSRA
|
3786 |
|
|
2226 FF6F 44 LSRA
|
3787 |
|
|
2227 FF70 1F 89 TFR A,B ; SAVE OFFSET INTO LRARAM TABLE
|
3788 |
|
|
2228 FF72 88 0F EORA #$0F ; INVERT MSB OF ADDR. OF CURRENT 4K BLK
|
3789 |
|
|
2229 FF74 A7 A5 STA B,Y ; SAVE TRANSLATION FACTOR IN LRARAM TABLE
|
3790 |
|
|
2230 FF76 20 D5 BRA FNDRAM ; GO TRANSLATE ADDR. OF NEXT 4K BLK
|
3791 |
|
|
2231 FF78 86 F1 FINTAB LDA #$F1 ; DESTINED FOR IC8 AND MEM EXPANSION ?
|
3792 |
|
|
2232 FF7A 10 8E DF D0 LDY #LRARAM ; POINT TO LRARAM TABLE
|
3793 |
|
|
2233 FF7E A7 2E STA 14,Y ; STORE $F1 AT $DFCE
|
3794 |
218 |
davidgb |
2234 *
|
3795 |
|
|
2235 * THE FOLLOWING CHECKS TO SEE IF THERE IS A 4K BLK OF
|
3796 |
|
|
2236 * RAM LOCATED AT $C000-$CFFF. IF NONE THERE IT LOCATES
|
3797 |
|
|
2237 * THE NEXT LOWER 4K BLK AN XLATES ITS ADDR SO IT
|
3798 |
|
|
2238 * LOGICALLY RESPONDS TO THE ADDRESS $C---.
|
3799 |
|
|
2239 *
|
3800 |
|
|
2240 *
|
3801 |
221 |
davidgb |
2241 FF80 86 0C LDA #$0C ; PRESET NUMBER HEX "C"
|
3802 |
|
|
2242 FF82 E6 A6 FINDC LDB A,Y ; GET ENTRY FROM LRARAM TABLE
|
3803 |
|
|
2243 FF84 26 05 BNE FOUNDC ; BRANCH IF RAM THIS PHYSICAL ADDR.
|
3804 |
|
|
2244 FF86 4A DECA ; ELSE POINT 4K LOWER
|
3805 |
|
|
2245 FF87 2A F9 BPL FINDC ; GO TRY AGAIN
|
3806 |
|
|
2246 FF89 20 14 BRA XFERTF
|
3807 |
|
|
2247 FF8B 6F A6 FOUNDC CLR A,Y ; CLR XLATION FACTOR OF 4K BLOCK FOUND
|
3808 |
|
|
2248 FF8D E7 2C STB $0C,Y ; GIVE IT XLATION FACTOR MOVING IT TO $C---
|
3809 |
218 |
davidgb |
2249 *
|
3810 |
|
|
2250 * THE FOLLOWING CODE ADJUSTS THE TRANSLATION
|
3811 |
|
|
2251 * FACTORS SUCH THAT ALL REMAINING RAM WILL
|
3812 |
|
|
2252 * RESPOND TO A CONTIGUOUS BLOCK OF LOGICAL
|
3813 |
|
|
2253 * ADDRESSES FROM $0000 AND UP....
|
3814 |
|
|
2254 *
|
3815 |
221 |
davidgb |
2255 FF8F 4F CLRA ; START AT ZERO
|
3816 |
|
|
2256 FF90 1F 21 TFR Y,X ; START POINTER "X" START OF "LRARAM" TABLE.
|
3817 |
|
|
2257 FF92 E6 A6 COMPRS LDB A,Y ; GET ENTRY FROM "LRARAM" TABLE
|
3818 |
|
|
2258 FF94 27 04 BEQ PNTNXT ; IF IT'S ZER0 SKIP
|
3819 |
|
|
2259 FF96 6F A6 CLR A,Y ; ELSE ERASE FROM TABLE
|
3820 |
|
|
2260 FF98 E7 80 STB ,X+ ; AND ENTER ABOVE LAST ENTRY- BUMP
|
3821 |
|
|
2261 FF9A 4C PNTNXT INCA ; GET OFFSET TO NEXT ENTRY
|
3822 |
|
|
2262 FF9B 81 0C CMPA #$0C ; LAST ENTRY YET ?
|
3823 |
|
|
2263 FF9D 2D F3 BLT COMPRS
|
3824 |
218 |
davidgb |
2264 *
|
3825 |
|
|
2265 * THE FOLLOWING CODE TRANSFER THE TRANSLATION
|
3826 |
|
|
2266 * FACTORS FROM THE LRARAM TABLE TO IC11 ON
|
3827 |
|
|
2267 * THE MP-09 CPU CARD.
|
3828 |
|
|
2268 *
|
3829 |
221 |
davidgb |
2269 FF9F 8E FF F0 XFERTF LDX #IC11 ; POINT TO DAT RAM IC11
|
3830 |
|
|
2270 FFA2 C6 10 LDB #$10 ; GET NO. OF BYTES TO MOVE
|
3831 |
|
|
2271 FFA4 A6 A0 FETCH LDA ,Y+ ; GET BYTE AND POINT TO NEXT
|
3832 |
|
|
2272 FFA6 A7 80 STA ,X+ ; POKE XLATION FACTOR IN IC11
|
3833 |
|
|
2273 FFA8 5A DECB ; SUB 1 FROM BYTES TO MOVE
|
3834 |
|
|
2274 FFA9 26 F9 BNE FETCH ; CONTINUE UNTIL 16 MOVED
|
3835 |
218 |
davidgb |
2275 *
|
3836 |
|
|
2276 ELSE
|
3837 |
221 |
davidgb |
2277 LRA RTS
|
3838 |
|
|
2278 START LDS #STACK ; INITIALIZE STACK POINTER
|
3839 |
|
|
2279 CLRB
|
3840 |
218 |
davidgb |
2280 ENDIF DATOPT
|
3841 |
221 |
davidgb |
2280 ENDIF DATOPT
|
3842 |
218 |
davidgb |
2281 *
|
3843 |
221 |
davidgb |
2282 FFAB 53 COMB ; SET "B" NON-ZERO
|
3844 |
|
|
2283 FFAC F7 DF E2 STB ECHO ; TURN ON ECHO FLAG
|
3845 |
|
|
2284 FFAF 16 F8 62 LBRA MONITOR ; INITIALIZATION IS COMPLETE
|
3846 |
218 |
davidgb |
2285 *
|
3847 |
|
|
2286 ** INTERRUPT JUMP VECTORS
|
3848 |
|
|
2287 *
|
3849 |
221 |
davidgb |
2288 FFB2 6E 9F DF C0 V1 JMP [STACK]
|
3850 |
|
|
2289 FFB6 6E 9F DF C4 V2 JMP [SWI2]
|
3851 |
|
|
2290 FFBA 6E 9F DF C6 V3 JMP [FIRQ]
|
3852 |
|
|
2291 FFBE 6E 9F DF C8 V4 JMP [IRQ]
|
3853 |
|
|
2292 FFC2 6E 9F DF CA V5 JMP [SWI]
|
3854 |
218 |
davidgb |
2293 *
|
3855 |
|
|
2294 * SWI3 ENTRY POINT
|
3856 |
|
|
2295 *
|
3857 |
221 |
davidgb |
2296 FFC6 1F 43 SWI3E TFR S,U
|
3858 |
|
|
2297 FFC8 AE 4A LDX 10,U *$FFC8
|
3859 |
|
|
2298 FFCA E6 80 LDB ,X+
|
3860 |
|
|
2299 FFCC AF 4A STX 10,U
|
3861 |
|
|
2300 FFCE 4F CLRA
|
3862 |
|
|
2301 FFCF 58 ASLB
|
3863 |
|
|
2302 FFD0 49 ROLA
|
3864 |
|
|
2303 FFD1 BE DF CC LDX SVCVO
|
3865 |
|
|
2304 FFD4 8C FF FF CMPX #$FFFF
|
3866 |
|
|
2305 FFD7 27 0F BEQ SWI3Z
|
3867 |
|
|
2306 FFD9 30 8B LEAX D,X
|
3868 |
|
|
2307 FFDB BC DF CE CMPX SVCVL
|
3869 |
|
|
2308 FFDE 22 08 BHI SWI3Z
|
3870 |
|
|
2309 FFE0 34 10 PSHS X
|
3871 |
|
|
2310 FFE2 EC C4 LDD ,U
|
3872 |
|
|
2311 FFE4 AE 44 LDX 4,U
|
3873 |
|
|
2312 FFE6 6E F1 JMP [,S++]
|
3874 |
|
|
2313 FFE8 37 1F SWI3Z PULU A,B,X,CC,DP
|
3875 |
|
|
2314 FFEA EE 42 LDU 2,U
|
3876 |
|
|
2315 FFEC 6E 9F DF C2 JMP [SWI3]
|
3877 |
218 |
davidgb |
2316 *
|
3878 |
|
|
2317 * 6809 VECTORS
|
3879 |
|
|
2318 *
|
3880 |
|
|
2319 FFF0 ORG $FFF0
|
3881 |
221 |
davidgb |
2320 FFF0 FF B2 FDB V1 USER-V
|
3882 |
|
|
2321 FFF2 FF C6 FDB SWI3E SWI3-V
|
3883 |
|
|
2322 FFF4 FF B6 FDB V2 SWI2-V
|
3884 |
|
|
2323 FFF6 FF BA FDB V3 FIRQ-V
|
3885 |
|
|
2324 FFF8 FF BE FDB V4 IRQ-V
|
3886 |
|
|
2325 FFFA FF C2 FDB V5 SWI-V
|
3887 |
|
|
2326 FFFC FF B2 FDB V1 NMI-V
|
3888 |
|
|
2327 FFFE FF 00 FDB START RESTART-V
|
3889 |
218 |
davidgb |
0005 END START
|
3890 |
|
|
0006 END
|
3891 |
221 |
davidgb |
Program + Init Data = 3583 bytes
|
3892 |
218 |
davidgb |
Error count = 0
|
3893 |
|
|
|
3894 |
|
|
|
3895 |
221 |
davidgb |
ACIAC1 E000
|
3896 |
|
|
ACIAD1 E001
|
3897 |
|
|
ACIAOPT 00FF
|
3898 |
|
|
ACIAS E000
|
3899 |
|
|
ACINIZ FCF9
|
3900 |
|
|
ACIRST F1FC
|
3901 |
218 |
davidgb |
ACK 0006
|
3902 |
221 |
davidgb |
AJDUMP F909
|
3903 |
|
|
ALTAD FB7E
|
3904 |
|
|
ALTBD FB73
|
3905 |
|
|
ALTCCD FB8B
|
3906 |
|
|
ALTDPD FB68
|
3907 |
|
|
ALTPC1 FB34
|
3908 |
|
|
ALTPCD FB3C
|
3909 |
|
|
ALTRA FB74
|
3910 |
|
|
ALTRB FB69
|
3911 |
|
|
ALTRCC FB7F
|
3912 |
|
|
ALTRDP FB5E
|
3913 |
|
|
ALTRPC FB31
|
3914 |
|
|
ALTRU FB3D
|
3915 |
|
|
ALTRX FB53
|
3916 |
|
|
ALTRY FB48
|
3917 |
|
|
ALTUD FB47
|
3918 |
|
|
ALTXD FB5D
|
3919 |
|
|
ALTYD FB52
|
3920 |
|
|
AOUTCH FCE2
|
3921 |
218 |
davidgb |
ATLOPT 00FF
|
3922 |
221 |
davidgb |
AUXRESET 0006
|
3923 |
|
|
AUXRSTREL 0002
|
3924 |
|
|
BACK F8ED
|
3925 |
|
|
BACKSP FD80
|
3926 |
|
|
BIASCI FC7D
|
3927 |
218 |
davidgb |
BLKNUM 0104
|
3928 |
221 |
davidgb |
BLOAD0 F70D
|
3929 |
|
|
BLOAD1 F71B
|
3930 |
|
|
BLOAD2 F731
|
3931 |
|
|
BLOAD3 F745
|
3932 |
|
|
BOOT F700
|
3933 |
|
|
BPADJ F9D2
|
3934 |
|
|
BPERR F980
|
3935 |
|
|
BPTBL DFE3
|
3936 |
|
|
BPTEST F9C2
|
3937 |
|
|
BRKPNT F95C
|
3938 |
218 |
davidgb |
BSSTACK C0FF
|
3939 |
|
|
BUFFER 0200
|
3940 |
221 |
davidgb |
BUSY 0080
|
3941 |
218 |
davidgb |
BYTCNT 0105
|
3942 |
221 |
davidgb |
BYTE FC26
|
3943 |
218 |
davidgb |
CAN 0018
|
3944 |
|
|
CFLAG 0001
|
3945 |
221 |
davidgb |
CF_AUX E11E
|
3946 |
|
|
CF_BASE E100
|
3947 |
|
|
CF_COMAND E10E
|
3948 |
|
|
CF_CYLHI E10A
|
3949 |
|
|
CF_CYLLO E108
|
3950 |
|
|
CF_DATA E100
|
3951 |
|
|
CF_ERROR E102
|
3952 |
|
|
CF_FEATURE E102
|
3953 |
|
|
CF_HEAD E10C
|
3954 |
|
|
CF_SECCNT E104
|
3955 |
|
|
CF_SECNUM E106
|
3956 |
|
|
CF_STATUS E10E
|
3957 |
|
|
CHANGE F8DB
|
3958 |
|
|
CHKDRV F546
|
3959 |
218 |
davidgb |
CHKSUM 0103
|
3960 |
221 |
davidgb |
CHRIGHT FD88
|
3961 |
|
|
CHRTN F8DA
|
3962 |
|
|
CLRESC FDAE
|
3963 |
|
|
CLRLRT FF48
|
3964 |
|
|
CLRSCR FDD2
|
3965 |
218 |
davidgb |
CLRSTK F82F
|
3966 |
221 |
davidgb |
CMDREAD 0020
|
3967 |
|
|
CMDWRITE 0030
|
3968 |
|
|
CNVADR FF2A
|
3969 |
|
|
COLADX DFFB
|
3970 |
|
|
COMPRS FF92
|
3971 |
|
|
CONTRL FD48
|
3972 |
|
|
CPORT DFE0
|
3973 |
|
|
CRETN FDE9
|
3974 |
|
|
DATLP FF05
|
3975 |
|
|
DATOPT 00FF
|
3976 |
218 |
davidgb |
DELCNT 0108
|
3977 |
|
|
DELCON 04E2
|
3978 |
221 |
davidgb |
DFL1 F119
|
3979 |
|
|
DFL2 F126
|
3980 |
|
|
DFL3 F13A
|
3981 |
|
|
DFL4 F1A4
|
3982 |
|
|
DISFOS F089
|
3983 |
|
|
DISSTK F8F1
|
3984 |
|
|
DLY FA55
|
3985 |
|
|
DNS F707
|
3986 |
|
|
DRDY 0040
|
3987 |
|
|
DRNUM F70C
|
3988 |
|
|
DRQ 0008
|
3989 |
218 |
davidgb |
DRVNUM 0100
|
3990 |
221 |
davidgb |
DRVS2 F541
|
3991 |
|
|
DRVSEL F53A
|
3992 |
|
|
ECHO DFE2
|
3993 |
|
|
ECHON FC96
|
3994 |
|
|
EDPASC F948
|
3995 |
|
|
EDPRTN F908
|
3996 |
|
|
EDUMP F924
|
3997 |
218 |
davidgb |
EFLAG 0080
|
3998 |
221 |
davidgb |
ELOOP F936
|
3999 |
218 |
davidgb |
EOT 0004
|
4000 |
221 |
davidgb |
ERR 0001
|
4001 |
|
|
ESCAPE FD97
|
4002 |
|
|
ESCCL1 FDDC
|
4003 |
|
|
ESCCLL FDD7
|
4004 |
|
|
ESCCLS FE10
|
4005 |
|
|
ESCCLS1 FE15
|
4006 |
|
|
ESCCLS2 FE31
|
4007 |
|
|
ESCCU1 FDBB
|
4008 |
|
|
ESCCU2 FDC4
|
4009 |
|
|
ESCCUR FDB2
|
4010 |
|
|
ESCFLG DFFE
|
4011 |
|
|
EXITBP F97F
|
4012 |
|
|
EXTCMD 0000
|
4013 |
|
|
EXTEND F035
|
4014 |
|
|
EXTOPT 00FF
|
4015 |
|
|
EXTTAB F02C
|
4016 |
|
|
FETCH FFA4
|
4017 |
|
|
FETSTA FCE7
|
4018 |
218 |
davidgb |
FFLAG 0040
|
4019 |
221 |
davidgb |
FFSTBL F9B9
|
4020 |
|
|
FINDC FF82
|
4021 |
|
|
FINTAB FF78
|
4022 |
218 |
davidgb |
FIRQ DFC6
|
4023 |
221 |
davidgb |
FNDBP F9C8
|
4024 |
|
|
FNDRAM FF4D
|
4025 |
|
|
FNDREL F84E
|
4026 |
|
|
FORWRD F8E9
|
4027 |
|
|
FOUNDC FF8B
|
4028 |
|
|
GETCH F752
|
4029 |
|
|
GETCH2 F758
|
4030 |
|
|
GETCH4 F767
|
4031 |
|
|
GETST1 FCBB
|
4032 |
|
|
GETSTA FCA9
|
4033 |
|
|
GO F8A5
|
4034 |
|
|
GOFLEX F76A
|
4035 |
|
|
HEADLBA 00E0
|
4036 |
|
|
HFCOPT 00FF
|
4037 |
218 |
davidgb |
HFLAG 0020
|
4038 |
221 |
davidgb |
HOME FD92
|
4039 |
|
|
IC11 FFF0
|
4040 |
|
|
IDEBOOT F9D5
|
4041 |
|
|
IDEOPT 00FF
|
4042 |
218 |
davidgb |
IFLAG 0010
|
4043 |
221 |
davidgb |
IN1ADR FC16
|
4044 |
|
|
IN2ADR FC0B
|
4045 |
|
|
INCH FCA1
|
4046 |
|
|
INCHE FC9B
|
4047 |
|
|
INCHEK FCC5
|
4048 |
|
|
INCHEK1 FCDA
|
4049 |
218 |
davidgb |
INCHEV F806
|
4050 |
|
|
INCHKV F808
|
4051 |
|
|
INCHV F804
|
4052 |
221 |
davidgb |
INHEX FC39
|
4053 |
|
|
INHEXA FC46
|
4054 |
|
|
INHEXL FC51
|
4055 |
|
|
INITDR F4BD
|
4056 |
|
|
INTER F207
|
4057 |
|
|
INTER0 F212
|
4058 |
|
|
INTER1 F221
|
4059 |
|
|
INTER2 F227
|
4060 |
|
|
INTEST F1F6
|
4061 |
|
|
IOINIZ FCF7
|
4062 |
218 |
davidgb |
IRQ DFC8
|
4063 |
221 |
davidgb |
JBYTE FB2B
|
4064 |
|
|
JIN1ADR FB2E
|
4065 |
|
|
JMPCMD F8A1
|
4066 |
|
|
JMPEXT F02A
|
4067 |
|
|
JMPTAB FE3B
|
4068 |
|
|
JOUT1S FB28
|
4069 |
|
|
JOUT2H FBB0
|
4070 |
|
|
JOUT4H FB9D
|
4071 |
|
|
LADR F70A
|
4072 |
|
|
LINEFD FD6C
|
4073 |
|
|
LINEUP FD77
|
4074 |
|
|
LINLEN 0050
|
4075 |
|
|
LOAD FA5E
|
4076 |
|
|
LOAD1 FA69
|
4077 |
|
|
LOAD10 FA93
|
4078 |
|
|
LOAD16 FAA9
|
4079 |
|
|
LOAD2 FA6C
|
4080 |
|
|
LOAD21 FAB4
|
4081 |
|
|
LODERR FAA8
|
4082 |
218 |
davidgb |
LOOPA F81D
|
4083 |
221 |
davidgb |
LRA FA2E
|
4084 |
|
|
LRARAM DFD0
|
4085 |
218 |
davidgb |
LRAV F812
|
4086 |
|
|
MAXSEC 010C
|
4087 |
|
|
MAXTRK 010B
|
4088 |
221 |
davidgb |
MDUMP1 F902
|
4089 |
|
|
MEMC2 F8AF
|
4090 |
|
|
MEMCHG F8A8
|
4091 |
|
|
MEMDUMP F8FD
|
4092 |
|
|
MESS6 F0B2
|
4093 |
|
|
MONEXT F000
|
4094 |
218 |
davidgb |
MONIO E000
|
4095 |
|
|
MONITOR F814
|
4096 |
|
|
MONITV F800
|
4097 |
|
|
MONRAM DFC0
|
4098 |
|
|
MONROM F800
|
4099 |
221 |
davidgb |
MSG1 FE84
|
4100 |
|
|
MSG10 FEB6
|
4101 |
|
|
MSG11 FEBC
|
4102 |
|
|
MSG12 FEC2
|
4103 |
|
|
MSG13 FEC8
|
4104 |
|
|
MSG14 FECE
|
4105 |
|
|
MSG15 FED4
|
4106 |
|
|
MSG16 FEDA
|
4107 |
|
|
MSG17 FEDF
|
4108 |
|
|
MSG18 FEE4
|
4109 |
|
|
MSG19 FEEB
|
4110 |
|
|
MSG2 FEA3
|
4111 |
|
|
MSG20 FEF3
|
4112 |
|
|
MSG3 FEAA
|
4113 |
|
|
MSG4 FEAC
|
4114 |
|
|
MSG5 FEB2
|
4115 |
|
|
MSGWHAT F035
|
4116 |
218 |
davidgb |
NAK 0015
|
4117 |
221 |
davidgb |
NEWCOL FDF5
|
4118 |
|
|
NEWCUR FDED
|
4119 |
|
|
NEWROW DFFD
|
4120 |
|
|
NEXTCMD F861
|
4121 |
|
|
NEXTEXT F002
|
4122 |
218 |
davidgb |
NFLAG 0008
|
4123 |
|
|
NMI DFC0
|
4124 |
221 |
davidgb |
NOTHEX FC5C
|
4125 |
|
|
NUMLIN 0019
|
4126 |
|
|
NXTCH0 F88B
|
4127 |
|
|
NXTCHR F88E
|
4128 |
218 |
davidgb |
NXTCMV F802
|
4129 |
221 |
davidgb |
NXTEX0 F016
|
4130 |
|
|
NXTEX1 F019
|
4131 |
|
|
NXTLIN F918
|
4132 |
|
|
OUT1S FCDE
|
4133 |
|
|
OUT2H FC67
|
4134 |
|
|
OUT2S FCDC
|
4135 |
|
|
OUT4H FC5F
|
4136 |
|
|
OUTBA FC81
|
4137 |
|
|
OUTC FC7B
|
4138 |
|
|
OUTCH FCE0
|
4139 |
218 |
davidgb |
OUTCHV F80A
|
4140 |
221 |
davidgb |
OUTHL FC67
|
4141 |
|
|
OUTHR FC6F
|
4142 |
|
|
OUTTE1 F23C
|
4143 |
|
|
OUTTE2 F24B
|
4144 |
|
|
OUTTER F23A
|
4145 |
218 |
davidgb |
PCLKHI 0001
|
4146 |
|
|
PCLKLO 0000
|
4147 |
221 |
davidgb |
PCRLF FB1E
|
4148 |
218 |
davidgb |
PCRLFV F80E
|
4149 |
221 |
davidgb |
PDATA FB8F
|
4150 |
|
|
PDATA0 F251
|
4151 |
|
|
PDATA1 F253
|
4152 |
218 |
davidgb |
PDATAV F80C
|
4153 |
221 |
davidgb |
PERIOD F952
|
4154 |
|
|
PNTNXT FF9A
|
4155 |
|
|
POSCOL FDEA
|
4156 |
|
|
PRASC F954
|
4157 |
|
|
PRINT FB8C
|
4158 |
218 |
davidgb |
PROMREG E0C0
|
4159 |
|
|
PRSTHI 0002
|
4160 |
|
|
PRSTLO 0000
|
4161 |
221 |
davidgb |
PRTA FBCE
|
4162 |
|
|
PRTB FBD7
|
4163 |
|
|
PRTBA FC89
|
4164 |
|
|
PRTCC FBE0
|
4165 |
|
|
PRTCMD F87F
|
4166 |
|
|
PRTDP FBA9
|
4167 |
|
|
PRTIX FBB3
|
4168 |
|
|
PRTIY FBBC
|
4169 |
|
|
PRTPC FBC5
|
4170 |
|
|
PRTSP FB96
|
4171 |
|
|
PRTUS FBA0
|
4172 |
|
|
PS2KBD E020
|
4173 |
|
|
PS2OPT 00FF
|
4174 |
218 |
davidgb |
PSTRGV F810
|
4175 |
221 |
davidgb |
PSTRNG FB1A
|
4176 |
|
|
PUNCH FABC
|
4177 |
|
|
PUNCH2 FAD5
|
4178 |
|
|
PUNCH3 FAE1
|
4179 |
|
|
PUNCH4 FAE3
|
4180 |
|
|
PUNCHL FAFB
|
4181 |
|
|
PUNEXT FB12
|
4182 |
|
|
RAMVEC FE74
|
4183 |
|
|
RCHAR F046
|
4184 |
|
|
RCHAR1 F04B
|
4185 |
|
|
RCHAR2 F04F
|
4186 |
|
|
RCHAR3 F05F
|
4187 |
|
|
RDLOOP FA03
|
4188 |
|
|
RDLP1 F502
|
4189 |
|
|
READ F787
|
4190 |
|
|
READ1 F797
|
4191 |
|
|
READSC F4F1
|
4192 |
|
|
REGPR F9A2
|
4193 |
|
|
REGSTR FBED
|
4194 |
|
|
RELPAS F855
|
4195 |
|
|
RESTR1 F4D2
|
4196 |
|
|
RETESC FDB1
|
4197 |
|
|
RETURN FD46
|
4198 |
|
|
RF3 F1DB
|
4199 |
218 |
davidgb |
RMAXSEC 00FF
|
4200 |
|
|
RMAXTRK 0100
|
4201 |
221 |
davidgb |
ROWADX DFFC
|
4202 |
|
|
RPLSWI F9A8
|
4203 |
|
|
RTI F8A7
|
4204 |
218 |
davidgb |
RTOTSEC FE01
|
4205 |
221 |
davidgb |
SCHAR F064
|
4206 |
|
|
SCHAR1 F06B
|
4207 |
|
|
SCHAR2 F06F
|
4208 |
|
|
SCHAR3 F082
|
4209 |
|
|
SCROL1 FE0E
|
4210 |
|
|
SCROLL FE06
|
4211 |
|
|
SCT F706
|
4212 |
218 |
davidgb |
SCTBUF C300
|
4213 |
|
|
SECTOR 0102
|
4214 |
221 |
davidgb |
SEEK F76D
|
4215 |
|
|
SEEKTS F4D7
|
4216 |
|
|
SETESC FDAA
|
4217 |
|
|
SKPDMP F921
|
4218 |
218 |
davidgb |
SOH 0001
|
4219 |
221 |
davidgb |
SOROU1 FD39
|
4220 |
|
|
SOROU2 FD41
|
4221 |
218 |
davidgb |
STACK DFC0
|
4222 |
221 |
davidgb |
START FF00
|
4223 |
|
|
SUB1 FA59
|
4224 |
218 |
davidgb |
SVCVL DFCE
|
4225 |
|
|
SVCVO DFCC
|
4226 |
|
|
SWI DFCA
|
4227 |
|
|
SWI2 DFC4
|
4228 |
|
|
SWI3 DFC2
|
4229 |
221 |
davidgb |
SWI3E FFC6
|
4230 |
|
|
SWI3Z FFE8
|
4231 |
|
|
SWIE F994
|
4232 |
218 |
davidgb |
SYNCHI AA55
|
4233 |
|
|
SYNCLO FF00
|
4234 |
221 |
davidgb |
TABEND FE74
|
4235 |
|
|
TADR F708
|
4236 |
218 |
davidgb |
TRACK 0101
|
4237 |
221 |
davidgb |
TRK F705
|
4238 |
|
|
TSTPAT 55AA
|
4239 |
|
|
TSTRAM FF15
|
4240 |
|
|
UBSUB F03E
|
4241 |
|
|
UFEXIT F1F0
|
4242 |
|
|
UFMSG1 F0CF
|
4243 |
|
|
UFSUB F0EA
|
4244 |
|
|
UFSUB1 F0F3
|
4245 |
|
|
USRCMD FC92
|
4246 |
|
|
UXERR F40A
|
4247 |
|
|
UXEXIT F404
|
4248 |
|
|
UXLOOP F3B8
|
4249 |
|
|
UXMES0 F25A
|
4250 |
|
|
UXMES1 F273
|
4251 |
|
|
UXMES2 F285
|
4252 |
|
|
UXMSG3 F294
|
4253 |
|
|
UXMSG4 F2A5
|
4254 |
|
|
UXSUB F2BC
|
4255 |
|
|
UXSUB1 F2C8
|
4256 |
|
|
UXSUB2 F2F5
|
4257 |
|
|
V1 FFB2
|
4258 |
|
|
V2 FFB6
|
4259 |
|
|
V3 FFBA
|
4260 |
|
|
V4 FFBE
|
4261 |
|
|
V5 FFC2
|
4262 |
|
|
VDU E030
|
4263 |
|
|
VDUATT 0001
|
4264 |
|
|
VDUCHR 0000
|
4265 |
|
|
VDUCOL 0002
|
4266 |
|
|
VDUOFF 0004
|
4267 |
|
|
VDUOPT 00FF
|
4268 |
|
|
VDUROW 0003
|
4269 |
218 |
davidgb |
VFLAG 0002
|
4270 |
221 |
davidgb |
VINIZ FD0C
|
4271 |
|
|
VOLMSG F0E1
|
4272 |
|
|
VOUTCH FD2B
|
4273 |
|
|
WAITDRQ FA26
|
4274 |
|
|
WAITRDY FA17
|
4275 |
|
|
WRITSC F515
|
4276 |
|
|
WRTLP1 F527
|
4277 |
|
|
WTDRQ F7B7
|
4278 |
|
|
WTRDY F7A8
|
4279 |
|
|
XACK F4B4
|
4280 |
|
|
XASCII FC73
|
4281 |
|
|
XBKPNT F988
|
4282 |
|
|
XBPLP F98E
|
4283 |
|
|
XBYTE0 F415
|
4284 |
|
|
XBYTE1 F424
|
4285 |
|
|
XFERTF FF9F
|
4286 |
|
|
XREAD F410
|
4287 |
218 |
davidgb |
XSTATE 0106
|
4288 |
221 |
davidgb |
XSTBL F44D
|
4289 |
|
|
XSTBLE F458
|
4290 |
|
|
XSTCK F48E
|
4291 |
|
|
XSTCK1 F49E
|
4292 |
|
|
XSTCK2 F4AB
|
4293 |
|
|
XSTCOM F463
|
4294 |
|
|
XSTDA F477
|
4295 |
|
|
XSTDA1 F489
|
4296 |
|
|
XSTST F42D
|
4297 |
|
|
XSTST1 F437
|
4298 |
|
|
XSTST2 F443
|
4299 |
|
|
XSTST3 F44A
|
4300 |
218 |
davidgb |
ZFLAG 0004
|