OpenCores
URL https://opencores.org/ocsvn/System09/System09/trunk

Subversion Repositories System09

[/] [System09/] [trunk/] [src/] [Flex9/] [flex9ram.lst] - Blame information for rev 120

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 120 dilbert57
Assembler release DWC_2.0 version 2.11
2
May 6, 2004 (c) Motorola (free ware)
3
0001                          NAM FLEX SOURCE
4
0000                          INCLUDE "f9-moneq.txt"
5
 
6
 
7
f9-moneq.txt                                                                      page   2
8
0002                         *
9
0003                         ***************************************************
10
0004                         *   MEMORY MAP EQUATES                            *
11
0005                         ***************************************************
12
0006 E000                    MONIO   EQU  $E000  I/O SPACE
13
0007 DFC0                    MONRAM  EQU  $DFC0  STACK SPACE
14
0008 F800                    MONROM  EQU  $F800  START OF ROM
15
0009 F000                    MONEXT  EQU  $F000  EXTENDED COMMANDS
16
0010                         *MONEXT  EQU  $1000  EXTENDED COMMANDS
17
0011                         *
18
0012                         ***************************************************
19
0013                         *   SYS09BUG VARIABLE SPACE
20
0014                         ***************************************************
21
0015                         *
22
0016 DFC0                    STACK   EQU  MONRAM+0  TOP OF INTERNAL STACK / USER VECTOR
23
0017 DFC2                    SWI3    EQU  MONRAM+2  SOFTWARE INTERRUPT VECTOR #3
24
0018 DFC4                    SWI2    EQU  MONRAM+4  SOFTWARE INTERRUPT VECTOR #2
25
0019 DFC6                    FIRQ    EQU  MONRAM+6  FAST INTERRUPT VECTOR
26
0020 DFC8                    IRQ     EQU  MONRAM+8  INTERRUPT VECTOR
27
0021 DFCA                    SWI     EQU  MONRAM+10 SOFTWARE INTERRUPT VECTOR
28
0022 DFCC                    SVCVO   EQU  MONRAM+12 SUPERVISOR CALL VECTOR ORGIN
29
0023 DFCE                    SVCVL   EQU  MONRAM+14 SUPERVISOR CALL VECTOR LIMIT
30
0024 DFD0                    LRARAM  EQU  MONRAM+16 LRA ADDRESSES
31
0025 DFE0                    CPORT   EQU  MONRAM+32 RE-VECTORABLE CONTROL PORT
32
0026 DFE2                    ECHO    EQU  MONRAM+34 ECHO FLAG
33
0027 DFE3                    BPTBL   EQU  MONRAM+35 BREAKPOINT TABLE BASE ADDR
34
0028                         **************************************************
35
0029                         *   VDU BYTES                                    *
36
0030                         **************************************************
37
0031                         *
38
0032                         **** ALWAYS KEEP COLADX AND ROWADX TOGETHER ******
39
0033 DFFB                    COLADX  EQU  MONRAM+59 CURSOR COLUMN
40
0034 DFFC                    ROWADX  EQU  MONRAM+60 CURSOR ROW
41
0035                         **************************************************
42
0036                         *
43
0037 DFFD                    NEWROW  EQU  MONRAM+61 NEW ROW TEMP FOR ESCAPE
44
0038 DFFE                    ESCFLG  EQU  MONRAM+62 ESCAPE SEQUENCE ACTIVE
45
0039                         *
46
0040                         ***************************************************
47
0041                         *   SERIAL PORT                                   *
48
0042                         ***************************************************
49
0043                         *
50
0044 E000                    ACIAS   EQU  MONIO+$00   CONTROL PORT
51
0045                         *
52
0046                         ***************************************************
53
0047                         *   PS/2 KEYBOARD PORT                            *
54
0048                         ***************************************************
55
0049                         *
56
0050 E020                    PS2KBD  EQU  MONIO+$20   PS/2 KEYBOARD PORT
57
0051                         *
58
0052                         ***************************************************
59
0053                         *   ADM3A DISPLAY DRIVER VARIABLES                *
60
0054                         ***************************************************
61
0055                         *
62
0056                         ** VIDEO DISPLAY DEFINITIONS
63
0057                         *
64
0058 E030                    VDU     EQU  MONIO+$30
65
0059 0000                    VDUCHR  EQU  0        CHARACTER REGISTER
66
0060 0001                    VDUATT  EQU  1        ATTRIBUTE REGISTER
67
0061 0002                    VDUCOL  EQU  2        CURSOR COLUMN
68
0062 0003                    VDUROW  EQU  3        CURSOR ROW
69
0063 0004                    VDUOFF  EQU  4        ROW OFFSET
70
0064                         *
71
0065 0050                    LINLEN  EQU  80       LENGTH OF A LINE
72
0066 0019                    NUMLIN  EQU  25       NUMBER OF LINES
73
0067                         *
74
0068                         ***************************************************
75
0069                         * Serial PROM register
76
0070                         ***************************************************
77
0071                         *
78
0072                         ** CONFIGURATION PROM DEFINITIONS
79
0073                         *
80
0074 E0C0                    PROMREG EQU MONIO+$C0
81
0075 0001                    PCLKHI  EQU $01     Toggle PROM Clock High
82
0076 0000                    PCLKLO  EQU $00     Toggle PROM Clock Low
83
0077 0002                    PRSTHI  EQU $02     Toggle PROM Reset High
84
0078 0000                    PRSTLO  EQU $00     Toggle PROM Reset Low
85
0079 AA55                    SYNCHI  EQU $AA55   Synch Pattern High Word
86
0080 FF00                    SYNCLO  EQU $FF00   Synch Pattern Low Word
87
0081                         *
88
0082                         *
89
0083                         ***************************************************
90
0084                         * Dynamic Address Translation Registers
91
0085                         ***************************************************
92
0086                         *
93
0087                         ** DAT Table
94
0088                         *
95
0089 FFF0                    IC11    EQU  $FFF0  DAT RAM CHIP
96
0090                         *
97
0091                         ***************************************************
98
0092                         *   START OF ROM                                  *
99
0093                         ***************************************************
100
0094                         *
101
0095 F800                    MONITV EQU MONROM+0  FDB MONITOR
102
0096 F802                    NXTCMV EQU MONROM+2  FDB NEXTCMD
103
0097 F804                    INCHV  EQU MONROM+4  FDB INCH
104
0098 F806                    INCHEV EQU MONROM+6  FDB INCHE
105
0099 F808                    INCHKV EQU MONROM+8  FDB INCHEK
106
0100 F80A                    OUTCHV EQU MONROM+10 FDB OUTCH
107
0101 F80C                    PDATAV EQU MONROM+12 FDB PDATA
108
0102 F80E                    PCRLFV EQU MONROM+14 FDB PCRLF
109
0103 F810                    PSTRGV EQU MONROM+16 FDB PSTRNG
110
0104 F812                    LRAV   EQU MONROM+18 FDB LRA
111
0002                                END
112
0000                          INCLUDE "f9-equ.txt"
113
0001 0000                    Z0000 EQU $0000
114
0002 0005                    Z0005 EQU $0005
115
0003 0044                    Z0044 EQU $0044
116
0004 00A0                    Z00A0 EQU $00A0
117
0005 C07F                    ZC07F EQU $C07F
118
0006 C080                    LINBUF EQU $C080
119
0007 C0FF                    ZC0FF EQU $C0FF
120
0003                          END
121
0000                          INCLUDE "f9-spool.txt"
122
0001                         *
123
0002                         ** PRINTER SPOOLING
124
0003                         *
125
0004 C700                     ORG $C700
126
0005 C700 7E C7 21           PRSPL1 JMP ZC721
127
0006 C703 7E C7 03           PRSPL2 JMP *
128
0007 C706 7E C7 47           PRSPL3 JMP ZC747
129
0008 C709 7E C7 85           PRSPL4 JMP ZC785
130
0009 C70C 7E C7 95           PRSPL5 JMP ZC795
131
0010 C70F 7E C7 1F           PRSPL6 JMP ZC71F
132
0011                         *
133
0012                         ** SPOOLER SCRATCH AREA
134
0013                         *
135
0014 C712 0C 00 00 00 00 C8  ZC712 FCB $0C,$00,$00,$00,$00,$C8,$10
136
          10
137
0015 C719 C8 10              ZC719 FCB $C8,$10
138
0016 C71B 00                 QCNT FCB $00
139
0017 C71C 00                 ZC71C FCB $00
140
0018 C71D 00                 ZC71D FCB $00
141
0019 C71E 00                 ZC71E FCB $00
142
0020                         *
143
0021 C71F 3B                 ZC71F RTI
144
0022 C720 12                  NOP
145
0023                         *
146
0024 C721 1A 10              ZC721 ORCC #$10
147
0025 C723 BE CC 31            LDX ZCC31
148
0026 C726 10 EF 02            STS 2,X
149
0027 C729 7D CC 34            TST ZCC34
150
0028 C72C 26 11               BNE ZC73F
151
0029 C72E 8E CC FC            LDX #ZCCFC
152
0030 C731 7C CC 34            INC ZCC34
153
0031 C734 6D 84               TST ,X
154
0032 C736 27 07               BEQ ZC73F
155
0033 C738 BF CC 31           ZC738 STX ZCC31
156
0034 C73B 10 EE 02            LDS $02,X
157
0035 C73E 3B                  RTI
158
0036                         *
159
0037 C73F 8E CC F8           ZC73F LDX #ZCCF8
160
0038 C742 7F CC 34            CLR ZCC34
161
0039 C745 20 F1               BRA ZC738
162
0040                         *
163
0041 C747 1A 10              ZC747 ORCC #$10
164
0042 C749 7D C7 1B            TST QCNT
165
0043 C74C 27 29               BEQ ZC777
166
0044 C74E BE C7 19            LDX ZC719
167
0045 C751 A6 84               LDA ,X
168
0046 C753 34 02               PSHS A
169
0047 C755 EC 01               LDD $01,X
170
0048 C757 8E CA C0            LDX #ZCAC0
171
0049 C75A ED 88 40            STD $40,X
172
0050 C75D 35 02               PULS A
173
0051 C75F A7 03               STA $03,X
174
0052 C761 6F 84               CLR ,X
175
0053 C763 86 01               LDA #$01
176
0054 C765 A7 02               STA $02,X
177
0055 C767 6F 88 22            CLR $22,X
178
0056 C76A 6F 88 3B            CLR $3B,X
179
0057 C76D 7D C7 1E           ZC76D TST ZC71E
180
0058 C770 27 29               BEQ ZC79B
181
0059 C772 11 3F               SWI3
182
0060 C774 12                  NOP
183
0061 C775 20 F6               BRA ZC76D
184
0062                         *
185
0063 C777 1C EF              ZC777 ANDCC #$EF
186
0064 C779 AD 9F D3 ED        ZC779 JSR [TOFVEC]
187
0065 C77D 7F CC FC            CLR ZCCFC
188
0066 C780 11 3F               SWI3
189
0067 C782 12                  NOP
190
0068 C783 20 F4               BRA ZC779
191
0069                         *
192
0070 C785 1A 10              ZC785 ORCC #$10
193
0071 C787 7D CC 30            TST ZCC30
194
0072 C78A 27 05               BEQ ZC791
195
0073 C78C 11 3F               SWI3
196
0074 C78E 12                  NOP
197
0075 C78F 20 F4               BRA ZC785
198
0076                         *
199
0077 C791 7C CC 30           ZC791 INC ZCC30
200
0078 C794 39                  RTS
201
0079                         *
202
0080 C795 7F CC 30           ZC795 CLR ZCC30
203
0081 C798 1C EF               ANDCC #$EF
204
0082 C79A 39                  RTS
205
0083                         *
206
0084 C79B 7D C7 1D           ZC79B TST ZC71D
207
0085 C79E 26 27               BNE ZC7C7
208
0086 C7A0 8E CA C0            LDX #ZCAC0
209
0087 C7A3 BD D4 06            JSR FMS
210
0088 C7A6 26 1F               BNE ZC7C7
211
0089 C7A8 7D C7 1C            TST ZC71C
212
0090 C7AB 27 0F               BEQ ZC7BC
213
0091 C7AD 7F C7 1C            CLR ZC71C
214
0092 C7B0 81 0A               CMPA #$0A
215
0093 C7B2 27 0F               BEQ ZC7C3
216
0094 C7B4 34 02               PSHS A
217
0095 C7B6 86 0A               LDA #$0A
218
0096 C7B8 8D 3C               BSR ZC7F6
219
0097 C7BA 35 02               PULS A
220
0098 C7BC 81 0D              ZC7BC CMPA #$0D
221
0099 C7BE 26 03               BNE ZC7C3
222
0100 C7C0 B7 C7 1C            STA ZC71C
223
0101 C7C3 8D 31              ZC7C3 BSR ZC7F6
224
0102 C7C5 20 D4               BRA ZC79B
225
0103                         *
226
0104 C7C7 86 0D              ZC7C7 LDA #$0D
227
0105 C7C9 8D 2B               BSR ZC7F6
228
0106 C7CB 86 0A               LDA #$0A
229
0107 C7CD 8D 27               BSR ZC7F6
230
0108 C7CF B6 C7 12            LDA ZC712
231
0109 C7D2 8D 22               BSR ZC7F6
232
0110 C7D4 7F C7 1D            CLR ZC71D
233
0111 C7D7 BE C7 19            LDX ZC719
234
0112 C7DA 6D 03               TST $03,X
235
0113 C7DC 27 05               BEQ ZC7E3
236
0114 C7DE 6A 03               DEC $03,X
237
0115 C7E0 7E C7 47            JMP ZC747
238
0116                         *
239
0117 C7E3 30 04              ZC7E3 LEAX $04,X
240
0118 C7E5 8C C8 40            CMPX #FCB
241
0119 C7E8 26 03               BNE ZC7ED
242
0120 C7EA 8E C8 10            LDX #ZC810
243
0121 C7ED BF C7 19           ZC7ED STX ZC719
244
0122 C7F0 7A C7 1B            DEC QCNT
245
0123 C7F3 7E C7 47            JMP ZC747
246
0124                         *
247
0125 C7F6 BD CC D8           ZC7F6 JSR PCHK
248
0126 C7F9 2B 05               BMI ZC800
249
0127 C7FB 11 3F               SWI3
250
0128 C7FD 12                  NOP
251
0129 C7FE 20 F6               BRA ZC7F6
252
0130                         *
253
0131 C800 7E CC E4           ZC800 JMP POUT
254
0132 C810                    ZC810 EQU $C810
255
0133 C838                    ZC838 EQU $C838
256
0004                          END
257
0000                          INCLUDE "f9-sfcb.txt"
258
0001                         *
259
0002                         ** SYSTEM FILE CONTROL BLOCK
260
0003                         *
261
0004 C840                     ORG $C840
262
0005 C840 FF                 FCB FCB $FF
263
0006 C841 00                  FCB $00
264
0007 C842 00                  FCB $00
265
0008 C843 00                  FCB $00
266
0009 C844 53 54 41 52 54 55  ZC844 FCC "STARTUP"
267
          50
268
0010 C84B 00                  FCB $00
269
0011 C84C 54 58 54            FCC "TXT"
270
0012 C84F 00                  FCB $00
271
0005                          END
272
0000                          INCLUDE "f9-init.txt"
273
0001                         *
274
0002                         ** FLEX INITIATION
275
0003                         *
276
0004 CA00                     ORG $CA00
277
0005 CA00 20 06              ZCA00 BRA ZCA08
278
0006 CA02 BD CA AC           ZCA02 JSR >ZCAAC
279
0007 CA05 39                  RTS
280
0008 CA06 C0 A0              ZCA06 SUBB #$A0
281
0009 CA08 86 39              ZCA08 LDA #$39
282
0010 CA0A B7 D3 FD            STA >ZD3FD
283
0011 CA0D BE CC 2B            LDX >MEMEND
284
0012 CA10 30 89 00 A1         LEAX $00A1,X
285
0013 CA14 BF CA 06            STX >ZCA06
286
0014 CA17 AD 9F D3 F1         JSR [TINVEC]
287
0015 CA1B BE D3 FB            LDX >INVEC
288
0016 CA1E BF CD 0A            STX >INCH+1
289
0017 CA21 BF CD 0D            STX >INCH2+1
290
0018 CA24 BE D3 F9            LDX >OUTVEC
291
0019 CA27 BF CD 10            STX >OUTCH+1
292
0020 CA2A BF CD 13            STX >OUTCH2+1
293
0021 CA2D BE D3 F7            LDX >STAVEC
294
0022 CA30 BF CD 4F            STX >ZCD4E+1
295
0023 CA33 8E 00 A0            LDX #Z00A0
296
0024 CA36 C6 B9               LDB #$B9
297
0025 CA38 A6 84              ZCA38 LDA ,X
298
0026 CA3A E7 84               STB ,X
299
0027 CA3C 12                  NOP
300
0028 CA3D E1 84               CMPB ,X
301
0029 CA3F 26 0B               BNE ZCA4C
302
0030 CA41 A7 84               STA ,X
303
0031 CA43 30 89 04 00         LEAX $0400,X
304
0032 CA47 BC CA 06            CMPX >ZCA06
305
0033 CA4A 26 EC               BNE ZCA38
306
0034 CA4C 30 89 FF 5F        ZCA4C LEAX $FF5F,X
307
0035 CA50 BF CC 2B            STX >MEMEND
308
0036 CA53 8E CD 03            LDX #WARMS
309
0037 CA56 BF CC 16            STX >ESCVEC
310
0038 CA59 8E CA DC            LDX #TTLSTR
311
0039 CA5C BD CE 81            JSR >PSTRG1
312
0040 CA5F BD CE B5            JSR >PCRLF1
313
0041 CA62 8D 9E               BSR ZCA02
314
0042 CA64 BD CE B5            JSR >PCRLF1
315
0043 CA67 8E C8 40            LDX #FCB
316
0044 CA6A 86 01               LDA #$01
317
0045 CA6C A7 84               STA ,X
318
0046 CA6E BD D4 06            JSR >FMS
319
0047 CA71 27 08               BEQ ZCA7B
320
0048 CA73 A6 01               LDA $01,X
321
0049 CA75 BD D2 00            JSR >ZD200
322
0050 CA78 7E CD 67            JMP >WARM1
323
0051
324
0052 CA7B 8E C0 80           ZCA7B LDX #LINBUF
325
0053 CA7E BF CC 14           ZCA7E STX >LINPTR
326
0054 CA81 8E C8 40            LDX #FCB
327
0055 CA84 BD D4 06            JSR >FMS
328
0056 CA87 27 05               BEQ ZCA8E
329
0057 CA89 34 30               PSHS Y,X
330
0058 CA8B 7E D2 D7            JMP >ZD2D7
331
0059
332
0060 CA8E BE CC 14           ZCA8E LDX >LINPTR
333
0061 CA91 A7 80               STA ,X+
334
0062 CA93 81 0D               CMPA #$0D
335
0063 CA95 26 E7               BNE ZCA7E
336
0064 CA97 8E C8 40            LDX #FCB
337
0065 CA9A BD D1 F4            JSR >ZD1F4
338
0066 CA9D 8E C0 80            LDX #LINBUF
339
0067 CAA0 BF CC 14            STX >LINPTR
340
0068 CAA3 8E CD 67            LDX #WARM1
341
0069 CAA6 BF CC 43            STX >ZCC43
342
0070 CAA9 7E D3 2E            JMP >ZD32E
343
0071
344
0072 CAAC 8E CA EC           ZCAAC LDX #DATSTR
345
0073 CAAF BD CE 81            JSR >PSTRG1
346
0074 CAB2 BD CE 2B            JSR >INBUF1
347
0075 CAB5 8D 14               BSR ZCACB
348
0076 CAB7 25 F3               BCS ZCAAC
349
0077 CAB9 B7 CC 0E            STA >MONTH
350
0078 CABC 8D 0D               BSR ZCACB
351
0079 CABE 25 EC               BCS ZCAAC
352
0080 CAC0 B7 CC 0F           ZCAC0 STA >DAY
353
0081 CAC3 8D 06               BSR ZCACB
354
0082 CAC5 25 E5               BCS ZCAAC
355
0083 CAC7 B7 CC 10            STA >YEAR
356
0084 CACA 39                  RTS
357
0085
358
0086 CACB BD D1 75           ZCACB JSR >INDEC1
359
0087 CACE 25 0B               BCS ZCADB
360
0088 CAD0 B6 CC 1C            LDA >LODOFF+1
361
0089 CAD3 5D                  TSTB
362
0090 CAD4 27 03               BEQ ZCAD9
363
0091 CAD6 1C FE               ANDCC #$FE
364
0092 CAD8 39                  RTS
365
0093
366
0094 CAD9 1A 01              ZCAD9 ORCC #$01
367
0095 CADB 39                 ZCADB RTS
368
0096
369
0097 CADC 36 38 30 39 20 46  TTLSTR FCC "6809 FLEX V3.01"
370
          4C 45 58 20 56 33
371
          2E 30 31
372
0098 CAEB 04                  FCB $04
373
0099 CAEC 44 41 54 45 20 28  DATSTR FCC "DATE (MM,DD,YY)? "
374
          4D 4D 2C 44 44 2C
375
          59 59 29 3F 20
376
0100 CAFD 04                  FCB $04
377
0006                          END
378
0000                          INCLUDE "f9-var.txt"
379
0001                         *
380
0002                         ** TTYSET PARAMETERS
381
0003                         *
382
0004 CC00                     ORG $CC00
383
0005 CC00 08                 BSPCHR FCB $08
384
0006 CC01 18                 DELCHR FCB $18
385
0007 CC02 3A                 EOLCHR FCB $3A
386
0008 CC03 19                 DEPCNT FCB 25
387
0009 CC04 00                 WIDCNT FCB $00
388
0010 CC05 04                 NULCNT FCB $04
389
0011 CC06 40                 TABCHR FCB '@
390
0012 CC07 00                 BSECHR FCB $00
391
0013 CC08 00                 EJTCNT FCB $00
392
0014 CC09 FF                 PAUSE FCB $FF
393
0015 CC0A 1B                 ESCCHR FCB $1B
394
0016 CC0B 00                 SYSDRV FCB 0
395
0017 CC0C 01                 WRKDRV FCB 1
396
0018 CC0D 00                 ZCC0D FCB $00
397
0019 CC0E                    DATERG EQU *
398
0020 CC0E 00                 MONTH FCB $00
399
0021 CC0F 00                 DAY FCB $00
400
0022 CC10 00                 YEAR FCB $00
401
0023 CC11 00                 LASTRM FCB $00
402
0024 CC12 00 00              UCTVEC FDB $0000
403
0025 CC14 00 00              LINPTR FDB $0000
404
0026 CC16 00 00              ESCVEC FDB $0000
405
0027 CC18 00                 CURCHR FCB $00
406
0028 CC19 00                 PRVCHR FCB $00
407
0029 CC1A 00                 CURLIN FCB $00
408
0030 CC1B 00 00              LODOFF FDB $0000
409
0031 CC1D 00                 TRNFLG FCB $00
410
0032 CC1E 00 00              TRNVEC FDB $0000
411
0033 CC20 00                 ERRTYP FCB $00
412
0034 CC21 00                 SIOFLG FCB $00
413
0035 CC22 00                 OUTSWT FCB $00
414
0036 CC23 00                 INPSWT FCB $00
415
0037 CC24 00 00              FOPADR FDB $0000
416
0038 CC26 00 00              FIPADR FDB $0000
417
0039 CC28 00                 CMDFLG FCB $00
418
0040 CC29 00                 CURCOL FCB $00
419
0041 CC2A 00                  FCB $00
420
0042 CC2B BF FF              MEMEND FDB $BFFF
421
0043 CC2D 00 00              ERRVEC FDB $0000
422
0044 CC2F 01                 FIEFLG FCB $01
423
0045 CC30 00                 ZCC30 FCB $00
424
0046 CC31 00 00 00           ZCC31 FCB $00,$00,$00
425
0047 CC34 00 00 00 00 00 00  ZCC34 FCB $00,$00,$00,$00,$00,$00,$00
426
          00
427
0048 CC3D                    ZCC3D EQU $CC3D
428
0049 CC3F                    ZCC3F EQU $CC3F
429
0050 CC43                    ZCC43 EQU $CC43
430
0051 CC45                    ZCC45 EQU $CC45
431
0052 CC47                    ZCC47 EQU $CC47
432
0053 CC49                     ORG $CC49
433
0054 CC49 60                 MAPUP FCB $60 MAP LOWER TO UPPERCASE
434
0055 CC4A                    ZCC4A EQU $CC4A
435
0056 CC4B                    ZCC4B EQU $CC4B
436
0057 CC4C                    ZCC4C EQU $CC4C
437
0058 CC4D                    ZCC4D EQU $CC4D
438
0007                          END
439
0000                          INCLUDE "f9-data.txt"
440
0001                         *
441
0002                         ** STRINGS AND MESSAGES
442
0003                         *
443
0004 CC4E                     ORG $CC4E
444
0005 CC4E 2B 2B 2B           PMTSTR FCC "+++"
445
0006 CC51 04                  FCB $04
446
0007 CC52 3F 3F 3F           QRYSTR FCC "???"
447
0008 CC55 04                  FCB $04
448
0009 CC56 57 48 41 54 3F     WOTMSG FCC "WHAT?"
449
0010 CC5B 04                  FCB $04
450
0011 CC5C 43 41 4E 27 54 20  NTRMSG FCC "CAN'T TRANSFER"
451
          54 52 41 4E 53 46
452
          45 52
453
0012 CC6A 04                  FCB $04
454
0013 CC6B 4E 4F 54 20 46 4F  NFDMSG FCC "NOT FOUND"
455
          55 4E 44
456
0014 CC74 04                  FCB $04
457
0015 CC75 44 49 53 4B 20 45  DERMSG FCC "DISK ERROR #"
458
          52 52 4F 52 20 23
459
0016 CC81 04                  FCB $04
460
0017 CC82 44 52 49 56 45 53  DNRMSG FCC "DRIVES NOT READY"
461
          20 4E 4F 54 20 52
462
          45 41 44 59
463
0018 CC92 04                  FCB $04
464
0019                         *
465
0020                         ** MEMORY RESIDENT COMMANDS
466
0021                         *
467
0022 CC93 47 45 54           CMDTBL FCC "GET"
468
0023 CC96 00                  FCB $00
469
0024 CC97 D2 0F               FDB GETCMD
470
0025 CC99 4D 4F 4E            FCC "MON"
471
0026 CC9C 00                  FCB $00
472
0027 CC9D D3 4B               FDB ZD34B
473
0028 CC9F 00                  FCB $00
474
0029                         *
475
0030                         ** DECIMAL CONVERSION TABLE
476
0031                         *
477
0032 CCA0 27 10              DECTBL FDB 10000
478
0033 CCA2 03 E8               FDB 1000
479
0034 CCA4 00 64               FDB 100
480
0035 CCA6 00 0A               FDB 10
481
0008                          END
482
0000                          INCLUDE "f9-cli.txt"
483
0001                         *********************************************
484
0002                         *
485
0003                         * FLEX COMMAND LINE INTERPRETER & SUBROUTINES
486
0004                         *
487
0005                         *********************************************
488
0006 CD00                     ORG $CD00
489
0007                         *
490
0008                         ** FLEX JUMPS
491
0009                         *
492
0010 CD00 7E CD 57           COLDS JMP >COLD1
493
0011 CD03 7E CD 67           WARMS JMP >WARM1
494
0012 CD06 7E CD B1           RENTER JMP >RENT1
495
0013 CD09 7E CD 09           INCH JMP >INCH
496
0014 CD0C 7E CD 0C           INCH2 JMP >INCH2
497
0015 CD0F 7E CD 0F           OUTCH JMP >OUTCH
498
0016 CD12 7E CD 12           OUTCH2 JMP >OUTCH2
499
0017 CD15 7E CE FB           GETCHR JMP >GETCH1
500
0018 CD18 7E CF 41           PUTCHR JMP >PUTCH1
501
0019 CD1B 7E CE 2B           INBUFF JMP >INBUF1
502
0020 CD1E 7E CE 81           PSTRNG JMP >PSTRG1
503
0021 CD21 7E CF ED           CLASS JMP >CLASS1
504
0022 CD24 7E CE B5           PCRLF JMP >PCRLF1
505
0023 CD27 7E D0 0E           NXTCH JMP >NXTCH1
506
0024 CD2A 7E CD EA           RSTRIO JMP >RSTIO1
507
0025 CD2D 7E D0 36           GETFIL JMP >GETFL1
508
0026 CD30 7E D1 A2           LOAD JMP >LOAD1
509
0027 CD33 7E D0 EB           SETEXT JMP >SETEX1
510
0028 CD36 7E D3 49           ADDBX JMP >ADDBX1
511
0029 CD39 7E CF 86           OUTDEC JMP >OUTDC1
512
0030 CD3C 7E CF D4           OUTHEX JMP >OUTHX1
513
0031 CD3F 7E D2 7F           RPTERR JMP >RPTER1
514
0032 CD42 7E D1 2F           GETHEX JMP >GETHX1
515
0033 CD45 7E CF D0           OUTADR JMP >OUTAD1
516
0034 CD48 7E D1 75           INDEC JMP >INDEC1
517
0035 CD4B 7E D3 29           DOCMND JMP >DOCMD1
518
0036 CD4E 7E CD 4E           ZCD4E JMP >ZCD4E
519
0037 CD51 7E CE 05            JMP >ZCE05
520
0038 CD54 7E CE 05            JMP >ZCE05
521
0039                         *
522
0040                         ** COLD START ENTRY
523
0041                         *
524
0042 CD57 10 CE C0 7F        COLD1 LDS #ZC07F
525
0043 CD5B 7F CC 11           ZCD5B CLR >LASTRM
526
0044 CD5E BD D4 00            JSR >ZD400
527
0045 CD61 7F CC 28            CLR >CMDFLG
528
0046 CD64 BD D3 FD            JSR >ZD3FD
529
0047                         *
530
0048                         ** WARM START ENTRY
531
0049                         *
532
0050 CD67 10 CE C0 7F        WARM1 LDS #ZC07F
533
0051 CD6B BD DE 18            JSR >WARMDR
534
0052 CD6E 8E CD 03            LDX #WARMS
535
0053 CD71 BF CC 16            STX >ESCVEC
536
0054 CD74 8E C7 00            LDX #PRSPL1
537
0055 CD77 AF 9F D3 E9         STX [SWIVVC]
538
0056 CD7B BE D3 E7            LDX >IHNDVC
539
0057 CD7E AF 9F D3 EB         STX [IRQVVC]
540
0058 CD82 8E CC F8            LDX #ZCCF8
541
0059 CD85 BF CC 31            STX >ZCC31
542
0060 CD88 7F CC 34            CLR >ZCC34
543
0061 CD8B 7F CC 4C            CLR >ZCC4C
544
0062 CD8E 8D 5A               BSR RSTIO1
545
0063 CD90 B6 CC 11            LDA >LASTRM
546
0064 CD93 B1 CC 02            CMPA >EOLCHR
547
0065 CD96 26 05               BNE ZCD9D
548
0066 CD98 7C CC 15            INC >LINPTR+1
549
0067 CD9B 20 14               BRA RENT1
550
0068
551
0069 CD9D 7D CC 28           ZCD9D TST >CMDFLG
552
0070 CDA0 10 26 05 97         LBNE ZD33B
553
0071 CDA4 BD D4 03            JSR >FMSCLS
554
0072 CDA7 26 B2               BNE ZCD5B
555
0073 CDA9 8E CC 4E            LDX #PMTSTR
556
0074 CDAC BD CE 81            JSR >PSTRG1
557
0075 CDAF 8D 7A               BSR INBUF1
558
0076                         *
559
0077                         ** MAIN CONTROL LOOP
560
0078                         *
561
0079 CDB1 BD D0 D4           RENT1 JSR >ZD0D4
562
0080 CDB4 81 0D               CMPA #$0D
563
0081 CDB6 27 E5               BEQ ZCD9D
564
0082 CDB8 8E C8 40           ZCDB8 LDX #FCB
565
0083 CDBB 7C CC 0D            INC >ZCC0D
566
0084 CDBE BD D0 36            JSR >GETFL1
567
0085 CDC1 25 16               BCS ZCDD9
568
0086 CDC3 8E CC 93            LDX #CMDTBL
569
0087 CDC6 8D 3E               BSR ZCE06
570
0088 CDC8 27 09               BEQ ZCDD3
571
0089 CDCA BE CC 12            LDX >UCTVEC
572
0090 CDCD 27 07               BEQ ZCDD6
573
0091 CDCF 8D 35               BSR ZCE06
574
0092 CDD1 26 03               BNE ZCDD6
575
0093 CDD3 6E 98 01           ZCDD3 JMP [$01,X]
576
0094
577
0095 CDD6 BD D2 2E           ZCDD6 JSR >ZD22E
578
0096 CDD9 8E CC 56           ZCDD9 LDX #WOTMSG
579
0097 CDDC 86 15               LDA #$15
580
0098 CDDE B7 CC 20           ZCDDE STA >ERRTYP
581
0099 CDE1 BD CE 81           ZCDE1 JSR >PSTRG1
582
0100 CDE4 7F CC 11           ZCDE4 CLR >LASTRM
583
0101 CDE7 7E CD 67            JMP >WARM1
584
0102                         *
585
0103                         ** RESTORE IO VECTORS
586
0104                         *
587
0105 CDEA BE CD 13           RSTIO1 LDX >OUTCH2+1
588
0106 CDED BF CD 10            STX >OUTCH+1
589
0107 CDF0 BE CD 0D            LDX >INCH2+1
590
0108 CDF3 BF CD 0A            STX >INCH+1
591
0109 CDF6 7F CC 23            CLR >INPSWT
592
0110 CDF9 7F CC 22            CLR >OUTSWT
593
0111 CDFC 7F CC 21            CLR >SIOFLG
594
0112 CDFF 7F CC 26            CLR >FIPADR
595
0113 CE02 7F CC 24            CLR >FOPADR
596
0114 CE05 39                 ZCE05 RTS
597
0115
598
0116 CE06 10 8E C8 44        ZCE06 LDY #ZC844
599
0117 CE0A A6 A0              ZCE0A LDA ,Y+
600
0118 CE0C 81 5F               CMPA #$5F
601
0119 CE0E 23 02               BLS ZCE12
602
0120 CE10 80 20               SUBA #$20
603
0121 CE12 A1 80              ZCE12 CMPA ,X+
604
0122 CE14 26 08               BNE ZCE1E
605
0123 CE16 6D 84               TST ,X
606
0124 CE18 26 F0               BNE ZCE0A
607
0125 CE1A 6D A4               TST ,Y
608
0126 CE1C 27 0C               BEQ ZCE2A
609
0127 CE1E 6D 80              ZCE1E TST ,X+
610
0128 CE20 26 FC               BNE ZCE1E
611
0129 CE22 30 02               LEAX $02,X
612
0130 CE24 6D 84               TST ,X
613
0131 CE26 26 DE               BNE ZCE06
614
0132 CE28 1C FB               ANDCC #$FB
615
0133 CE2A 39                 ZCE2A RTS
616
0134                         *
617
0135                         ** GET USER COMMAND LINE
618
0136                         *
619
0137 CE2B 8E C0 80           INBUF1 LDX #LINBUF
620
0138 CE2E BF CC 14            STX >LINPTR
621
0139 CE31 BD CE FB           ZCE31 JSR >GETCH1
622
0140 CE34 B1 CC 01            CMPA >DELCHR
623
0141 CE37 27 1D               BEQ ZCE56
624
0142 CE39 B1 CC 00            CMPA >BSPCHR
625
0143 CE3C 27 1F               BEQ ZCE5D
626
0144 CE3E 81 0D               CMPA #$0D
627
0145 CE40 27 0D               BEQ ZCE4F
628
0146 CE42 81 0A               CMPA #$0A
629
0147 CE44 27 32               BEQ ZCE78
630
0148 CE46 81 1F               CMPA #$1F
631
0149 CE48 23 E7               BLS ZCE31
632
0150 CE4A 8C C0 FF           ZCE4A CMPX #ZC0FF
633
0151 CE4D 27 E2               BEQ ZCE31
634
0152 CE4F A7 80              ZCE4F STA ,X+
635
0153 CE51 81 0D               CMPA #$0D
636
0154 CE53 26 DC               BNE ZCE31
637
0155 CE55 39                  RTS
638
0156
639
0157 CE56 8E CC 52           ZCE56 LDX #QRYSTR
640
0158 CE59 8D 26               BSR PSTRG1
641
0159 CE5B 20 CE               BRA INBUF1
642
0160
643
0161 CE5D 8C C0 80           ZCE5D CMPX #LINBUF
644
0162 CE60 27 F4               BEQ ZCE56
645
0163 CE62 30 1F               LEAX -$01,X
646
0164 CE64 B6 CC 07            LDA >BSECHR
647
0165 CE67 81 08               CMPA #$08
648
0166 CE69 26 08               BNE ZCE73
649
0167 CE6B 86 20               LDA #$20
650
0168 CE6D BD CF 66            JSR >ZCF66
651
0169 CE70 B6 CC 07            LDA >BSECHR
652
0170 CE73 BD CF 66           ZCE73 JSR >ZCF66
653
0171 CE76 20 B9               BRA ZCE31
654
0172
655
0173 CE78 86 0D              ZCE78 LDA #$0D
656
0174 CE7A BD CF 41            JSR >PUTCH1
657
0175 CE7D 86 20               LDA #$20
658
0176 CE7F 20 C9               BRA ZCE4A
659
0177
660
0178 CE81 8D 32              PSTRG1 BSR PCRLF1
661
0179 CE83 A6 84              ZCE83 LDA ,X
662
0180 CE85 81 04               CMPA #$04
663
0181 CE87 27 6F               BEQ ZCEF8
664
0182 CE89 BD CF 41            JSR >PUTCH1
665
0183 CE8C 30 01               LEAX $01,X
666
0184 CE8E 20 F3               BRA ZCE83
667
0185
668
0186 CE90 BD CD 4E           ZCE90 JSR >ZCD4E
669
0187 CE93 27 65               BEQ ZCEFA
670
0188 CE95 AD 9F D3 E5         JSR [ZD3E5]
671
0189 CE99 B1 CC 0A            CMPA >ESCCHR
672
0190 CE9C 26 5C               BNE ZCEFA
673
0191 CE9E 7F CC 1A           ZCE9E CLR >CURLIN
674
0192 CEA1 AD 9F D3 E5        ZCEA1 JSR [ZD3E5]
675
0193 CEA5 B1 CC 0A            CMPA >ESCCHR
676
0194 CEA8 27 50               BEQ ZCEFA
677
0195 CEAA 81 03               CMPA #$03 CTRL C
678
0196 CEAC 26 F3               BNE ZCEA1
679
0197 CEAE 7F CC 11            CLR >LASTRM
680
0198 CEB1 6E 9F CC 16         JMP [ESCVEC]
681
0199                         *
682
0200                         ** PRINT CR, LINEFEED
683
0201                         *
684
0202 CEB5 7D CC 21           PCRLF1 TST >SIOFLG
685
0203 CEB8 26 27               BNE ZCEE1
686
0204 CEBA 8D D4               BSR ZCE90
687
0205 CEBC B6 CC 03            LDA >DEPCNT
688
0206 CEBF 27 20               BEQ ZCEE1
689
0207 CEC1 B1 CC 1A            CMPA >CURLIN
690
0208 CEC4 22 18               BHI ZCEDE
691
0209 CEC6 7F CC 1A            CLR >CURLIN
692
0210 CEC9 7D CC 09            TST >PAUSE
693
0211 CECC 27 02               BEQ ZCED0
694
0212 CECE 8D CE               BSR ZCE9E
695
0213 CED0 34 04              ZCED0 PSHS B
696
0214 CED2 F6 CC 08            LDB >EJTCNT
697
0215 CED5 27 05               BEQ ZCEDC
698
0216 CED7 8D 08              ZCED7 BSR ZCEE1
699
0217 CED9 5A                  DECB
700
0218 CEDA 26 FB               BNE ZCED7
701
0219 CEDC 35 04              ZCEDC PULS B
702
0220 CEDE 7C CC 1A           ZCEDE INC >CURLIN
703
0221 CEE1 86 0D              ZCEE1 LDA #$0D
704
0222 CEE3 8D 5C               BSR PUTCH1
705
0223 CEE5 86 0A               LDA #$0A
706
0224 CEE7 8D 58               BSR PUTCH1
707
0225 CEE9 34 04               PSHS B
708
0226 CEEB F6 CC 05            LDB >NULCNT
709
0227 CEEE 27 06               BEQ ZCEF6
710
0228 CEF0 4F                 ZCEF0 CLRA
711
0229 CEF1 8D 4E               BSR PUTCH1
712
0230 CEF3 5A                  DECB
713
0231 CEF4 26 FA               BNE ZCEF0
714
0232 CEF6 35 04              ZCEF6 PULS B
715
0233 CEF8 1C FE              ZCEF8 ANDCC #$FE
716
0234 CEFA 39                 ZCEFA RTS
717
0235                         *
718
0236                         ** GET A CHARACTER HONOURING TTYSET
719
0237                         *
720
0238 CEFB 7D CC 23           GETCH1 TST >INPSWT
721
0239 CEFE 26 1A               BNE ZCF1A
722
0240 CF00 7D CC 26            TST >FIPADR
723
0241 CF03 27 10               BEQ ZCF15
724
0242 CF05 8D 1A               BSR ZCF21
725
0243 CF07 7D CC 2F            TST >FIEFLG
726
0244 CF0A 27 11               BEQ ZCF1D
727
0245 CF0C 7D CC 24            TST >FOPADR
728
0246 CF0F 27 0C               BEQ ZCF1D
729
0247 CF11 8D 53               BSR ZCF66
730
0248 CF13 20 08               BRA ZCF1D
731
0249 CF15 BD CD 09           ZCF15 JSR >INCH
732
0250 CF18 20 03               BRA ZCF1D
733
0251
734
0252 CF1A BD CD 0C           ZCF1A JSR >INCH2
735
0253 CF1D 7F CC 1A           ZCF1D CLR >CURLIN
736
0254 CF20 39                  RTS
737
0255
738
0256 CF21 BF CC 47           ZCF21 STX >ZCC47
739
0257 CF24 BE CC 26            LDX >FIPADR
740
0258 CF27 20 06               BRA ZCF2F
741
0259
742
0260 CF29 BF CC 47           ZCF29 STX >ZCC47
743
0261 CF2C BE CC 24            LDX >FOPADR
744
0262 CF2F BD D4 06           ZCF2F JSR >FMS
745
0263 CF32 26 04               BNE ZCF38
746
0264 CF34 BE CC 47            LDX >ZCC47
747
0265 CF37 39                  RTS
748
0266
749
0267 CF38 7F CC 24           ZCF38 CLR >FOPADR
750
0268 CF3B BD D2 7F            JSR >RPTER1
751
0269 CF3E 7E CD 03            JMP >WARMS
752
0270                         *
753
0271                         ** OUTPUT CHARACTER HONOURING TTYSET
754
0272                         *
755
0273 CF41 7D CC 21           PUTCH1 TST >SIOFLG
756
0274 CF44 26 20               BNE ZCF66
757
0275 CF46 81 1F               CMPA #$1F
758
0276 CF48 22 05               BHI ZCF4F
759
0277 CF4A 7F CC 29            CLR >CURCOL
760
0278 CF4D 20 17               BRA ZCF66
761
0279
762
0280 CF4F 7C CC 29           ZCF4F INC >CURCOL
763
0281 CF52 34 02               PSHS A
764
0282 CF54 B6 CC 04            LDA >WIDCNT
765
0283 CF57 27 0B               BEQ ZCF64
766
0284 CF59 B1 CC 29            CMPA >CURCOL
767
0285 CF5C 24 06               BCC ZCF64
768
0286 CF5E BD CE B5            JSR >PCRLF1
769
0287 CF61 7C CC 29            INC >CURCOL
770
0288 CF64 35 02              ZCF64 PULS A
771
0289 CF66 34 02              ZCF66 PSHS A
772
0290 CF68 7D CC 22            TST >OUTSWT
773
0291 CF6B 26 13               BNE ZCF80
774
0292 CF6D 7D CC 24            TST >FOPADR
775
0293 CF70 27 04               BEQ ZCF76
776
0294 CF72 8D B5               BSR ZCF29
777
0295 CF74 20 0D               BRA ZCF83
778
0296
779
0297 CF76 7D CC 26           ZCF76 TST >FIPADR
780
0298 CF79 26 08               BNE ZCF83
781
0299 CF7B BD CD 0F            JSR >OUTCH
782
0300 CF7E 20 03               BRA ZCF83
783
0301 CF80 BD CD 12           ZCF80 JSR >OUTCH2
784
0302 CF83 35 02              ZCF83 PULS A
785
0303 CF85 39                  RTS
786
0304
787
0305 CF86 7F CC 4A           OUTDC1 CLR >ZCC4A
788
0306 CF89 F7 CC 1D            STB >TRNFLG
789
0307 CF8C 86 04               LDA #$04
790
0308 CF8E B7 CC 4D            STA >ZCC4D
791
0309 CF91 EC 84               LDD ,X
792
0310 CF93 8E CC A0            LDX #DECTBL
793
0311 CF96 8D 0B              ZCF96 BSR ZCFA3
794
0312 CF98 30 02               LEAX $02,X
795
0313 CF9A 7A CC 4D            DEC >ZCC4D
796
0314 CF9D 26 F7               BNE ZCF96
797
0315 CF9F 1F 98               TFR B,A
798
0316 CFA1 20 3D               BRA OUTHXR
799
0317
800
0318 CFA3 7F CC 4B           ZCFA3 CLR >ZCC4B
801
0319 CFA6 10 A3 84           ZCFA6 CMPD ,X
802
0320 CFA9 25 07               BCS ZCFB2
803
0321 CFAB A3 84               SUBD ,X
804
0322 CFAD 7C CC 4B            INC >ZCC4B
805
0323 CFB0 20 F4               BRA ZCFA6
806
0324
807
0325 CFB2 34 02              ZCFB2 PSHS A
808
0326 CFB4 B6 CC 4B            LDA >ZCC4B
809
0327 CFB7 26 10               BNE ZCFC9
810
0328 CFB9 7D CC 4A            TST >ZCC4A
811
0329 CFBC 26 0B               BNE ZCFC9
812
0330 CFBE 7D CC 1D            TST >TRNFLG
813
0331 CFC1 27 0B               BEQ ZCFCE
814
0332 CFC3 86 20               LDA #$20
815
0333 CFC5 8D 23               BSR ZCFEA
816
0334 CFC7 20 05               BRA ZCFCE
817
0335
818
0336 CFC9 7C CC 4A           ZCFC9 INC >ZCC4A
819
0337 CFCC 8D 12               BSR OUTHXR
820
0338 CFCE 35 82              ZCFCE PULS PC,A
821
0339                         *
822
0340                         ** DISPLAY HEX ADDRESS
823
0341                         *
824
0342 CFD0 8D 02              OUTAD1 BSR OUTHX1
825
0343 CFD2 30 01               LEAX $01,X
826
0344                         *
827
0345                         ** OUPUT HEX BYTE
828
0346                         *
829
0347 CFD4 A6 84              OUTHX1 LDA ,X
830
0348 CFD6 8D 04               BSR OUTHXL
831
0349 CFD8 A6 84               LDA ,X
832
0350 CFDA 20 04               BRA OUTHXR
833
0351
834
0352 CFDC 44                 OUTHXL LSRA
835
0353 CFDD 44                  LSRA
836
0354 CFDE 44                  LSRA
837
0355 CFDF 44                  LSRA
838
0356 CFE0 84 0F              OUTHXR ANDA #$0F
839
0357 CFE2 8B 30               ADDA #$30
840
0358 CFE4 81 39               CMPA #$39
841
0359 CFE6 23 02               BLS ZCFEA
842
0360 CFE8 8B 07               ADDA #$07
843
0361 CFEA 7E CF 41           ZCFEA JMP >PUTCH1
844
0362                         *
845
0363                         ** CLASSIFY CHARACTER ALHA/NUMERIC
846
0364                         *
847
0365 CFED 81 30              CLASS1 CMPA #'0
848
0366 CFEF 25 14               BCS ZD005
849
0367 CFF1 81 39               CMPA #'9
850
0368 CFF3 23 16               BLS ZD00B
851
0369 CFF5 81 41               CMPA #'A
852
0370 CFF7 25 0C               BCS ZD005
853
0371 CFF9 81 5A               CMPA #'Z
854
0372 CFFB 23 0E               BLS ZD00B
855
0373 CFFD 81 61               CMPA #'a $61
856
0374 CFFF 25 04               BCS ZD005
857
0375 D001 81 7A               CMPA #'z $7A
858
0376 D003 23 06               BLS ZD00B
859
0377 D005 1A 01              ZD005 ORCC #$01
860
0378 D007 B7 CC 11            STA >LASTRM
861
0379 D00A 39                  RTS
862
0380 D00B 1C FE              ZD00B ANDCC #$FE
863
0381 D00D 39                  RTS
864
0382                         *
865
0383                         ** GET NEXT CHARACTER FROM FILE
866
0384                         *
867
0385 D00E 34 10              NXTCH1 PSHS X
868
0386 D010 BE CC 14            LDX >LINPTR
869
0387 D013 B6 CC 18            LDA >CURCHR
870
0388 D016 B7 CC 19            STA >PRVCHR
871
0389 D019 A6 80              ZD019 LDA ,X+
872
0390 D01B B7 CC 18            STA >CURCHR
873
0391 D01E 81 0D               CMPA #$0D
874
0392 D020 27 10               BEQ ZD032
875
0393 D022 B1 CC 02            CMPA >EOLCHR
876
0394 D025 27 0B               BEQ ZD032
877
0395 D027 BF CC 14            STX >LINPTR
878
0396 D02A 81 20               CMPA #$20
879
0397 D02C 26 04               BNE ZD032
880
0398 D02E A1 84               CMPA ,X
881
0399 D030 27 E7               BEQ ZD019
882
0400 D032 8D B9              ZD032 BSR CLASS1
883
0401 D034 35 90               PULS PC,X
884
0402                         *
885
0403                         ** PARSE FILE SPEC. IN LINE BUFFER
886
0404                         *
887
0405 D036 86 15              GETFL1 LDA #$15
888
0406 D038 A7 01               STA $01,X
889
0407 D03A 86 FF               LDA #$FF
890
0408 D03C A7 03               STA $03,X
891
0409 D03E 6F 04               CLR $04,X
892
0410 D040 6F 0C               CLR $0C,X
893
0411 D042 BD D0 D4            JSR >ZD0D4
894
0412 D045 86 08               LDA #$08
895
0413 D047 B7 CC 4B            STA >ZCC4B
896
0414 D04A 8D 34               BSR ZD080
897
0415 D04C 25 2E               BCS ZD07C
898
0416 D04E 26 0F               BNE ZD05F
899
0417 D050 8D 2E               BSR ZD080
900
0418 D052 25 28               BCS ZD07C
901
0419 D054 26 09               BNE ZD05F
902
0420 D056 BC CC 3F            CMPX >ZCC3F
903
0421 D059 27 6C               BEQ ZD0C7
904
0422 D05B 8D 23               BSR ZD080
905
0423 D05D 23 68               BLS ZD0C7
906
0424 D05F BE CC 3F           ZD05F LDX >ZCC3F
907
0425 D062 6D 04               TST $04,X
908
0426 D064 27 61               BEQ ZD0C7
909
0427 D066 6D 03               TST $03,X
910
0428 D068 2A 0F               BPL ZD079
911
0429 D06A 7D CC 0D            TST >ZCC0D
912
0430 D06D 27 05               BEQ ZD074
913
0431 D06F B6 CC 0B            LDA >SYSDRV
914
0432 D072 20 03               BRA ZD077
915
0433
916
0434 D074 B6 CC 0C           ZD074 LDA >WRKDRV
917
0435 D077 A7 03              ZD077 STA $03,X
918
0436 D079 7F CC 0D           ZD079 CLR >ZCC0D
919
0437 D07C BE CC 3F           ZD07C LDX >ZCC3F
920
0438 D07F 39                  RTS
921
0439
922
0440 D080 8D 8C              ZD080 BSR NXTCH1
923
0441 D082 25 43               BCS ZD0C7
924
0442 D084 81 39               CMPA #$39
925
0443 D086 22 15               BHI ZD09D
926
0444 D088 BE CC 3F            LDX >ZCC3F
927
0445 D08B 6D 03               TST $03,X
928
0446 D08D 2A 38               BPL ZD0C7
929
0447 D08F 84 03               ANDA #$03
930
0448 D091 A7 03               STA $03,X
931
0449 D093 BD D0 0E            JSR >NXTCH1
932
0450 D096 24 2F               BCC ZD0C7
933
0451 D098 81 2E              ZD098 CMPA #$2E
934
0452 D09A 1C FE               ANDCC #$FE
935
0453 D09C 39                  RTS
936
0454
937
0455 D09D F6 CC 4B           ZD09D LDB >ZCC4B
938
0456 D0A0 2B 25               BMI ZD0C7
939
0457 D0A2 34 04               PSHS B
940
0458 D0A4 C0 05               SUBB #$05
941
0459 D0A6 F7 CC 4B            STB >ZCC4B
942
0460 D0A9 35 04               PULS B
943
0461 D0AB B1 CC 49           ZD0AB CMPA >MAPUP
944
0462 D0AE 25 02               BCS ZD0B2
945
0463 D0B0 80 20               SUBA #$20
946
0464 D0B2 A7 04              ZD0B2 STA $04,X
947
0465 D0B4 30 01               LEAX $01,X
948
0466 D0B6 5A                  DECB
949
0467 D0B7 BD D0 0E            JSR >NXTCH1
950
0468 D0BA 24 08               BCC ZD0C4
951
0469 D0BC 81 2D               CMPA #$2D
952
0470 D0BE 27 04               BEQ ZD0C4
953
0471 D0C0 81 5F               CMPA #$5F
954
0472 D0C2 26 06               BNE ZD0CA
955
0473 D0C4 5D                 ZD0C4 TSTB
956
0474 D0C5 26 E4               BNE ZD0AB
957
0475 D0C7 1A 01              ZD0C7 ORCC #$01
958
0476 D0C9 39                  RTS
959
0477
960
0478 D0CA 5D                 ZD0CA TSTB
961
0479 D0CB 27 CB               BEQ ZD098
962
0480 D0CD 6F 04               CLR $04,X
963
0481 D0CF 30 01               LEAX $01,X
964
0482 D0D1 5A                  DECB
965
0483 D0D2 20 F6               BRA ZD0CA
966
0484
967
0485 D0D4 BF CC 3F           ZD0D4 STX >ZCC3F
968
0486 D0D7 BE CC 14            LDX >LINPTR
969
0487 D0DA A6 84              ZD0DA LDA ,X
970
0488 D0DC 81 20               CMPA #$20
971
0489 D0DE 26 04               BNE ZD0E4
972
0490 D0E0 30 01               LEAX $01,X
973
0491 D0E2 20 F6               BRA ZD0DA
974
0492 D0E4 BF CC 14           ZD0E4 STX >LINPTR
975
0493 D0E7 BE CC 3F            LDX >ZCC3F
976
0494 D0EA 39                  RTS
977
0495                         *
978
0496                         ** DEFAULT FILE EXTENSION
979
0497                         *
980
0498 D0EB 34 30              SETEX1 PSHS Y,X
981
0499 D0ED E6 0C               LDB $0C,X
982
0500 D0EF 26 18               BNE ZD109
983
0501 D0F1 10 8E D1 0B         LDY #EXTTBL
984
0502 D0F5 81 0B               CMPA #$0B
985
0503 D0F7 22 10               BHI ZD109
986
0504 D0F9 C6 03               LDB #$03
987
0505 D0FB 3D                  MUL
988
0506 D0FC 31 A5               LEAY B,Y
989
0507 D0FE C6 03               LDB #$03
990
0508 D100 A6 A0              ZD100 LDA ,Y+
991
0509 D102 A7 0C               STA $0C,X
992
0510 D104 30 01               LEAX $01,X
993
0511 D106 5A                  DECB
994
0512 D107 26 F7               BNE ZD100
995
0513 D109 35 B0              ZD109 PULS PC,Y,X
996
0514                         *
997
0515                         ** STANDARD FILE NAME EXTTENSIONS
998
0516                         *
999
0517 D10B 42 49 4E           EXTTBL FCC "BIN"
1000
0518 D10E 54 58 54            FCC "TXT"
1001
0519 D111 43 4D 44            FCC "CMD"
1002
0520 D114 42 41 53            FCC "BAS"
1003
0521 D117 53 59 53            FCC "SYS"
1004
0522 D11A 42 41 4B            FCC "BAK"
1005
0523 D11D 53 43 52            FCC "SCR"
1006
0524 D120 44 41 54            FCC "DAT"
1007
0525 D123 42 41 43            FCC "BAC"
1008
0526 D126 44 49 52            FCC "DIR"
1009
0527 D129 50 52 54            FCC "PRT"
1010
0528 D12C 4F 55 54            FCC "OUT"
1011
0529                         *
1012
0530                         ** READ A HEX ADDRESS FROM THE LINE BUFFER
1013
0531                         *
1014
0532 D12F BD D2 1E           GETHX1 JSR >ZD21E
1015
0533 D132 BD D0 0E           ZD132 JSR >NXTCH1
1016
0534 D135 25 22               BCS ZD159
1017
0535 D137 8D 26               BSR ZD15F
1018
0536 D139 25 18               BCS ZD153
1019
0537 D13B 34 04               PSHS B
1020
0538 D13D C6 04               LDB #$04
1021
0539 D13F 78 CC 1C           ZD13F ASL >LODOFF+1
1022
0540 D142 79 CC 1B            ROL >LODOFF
1023
0541 D145 5A                  DECB
1024
0542 D146 26 F7               BNE ZD13F
1025
0543 D148 35 04               PULS B
1026
0544 D14A BB CC 1C            ADDA >LODOFF+1
1027
0545 D14D B7 CC 1C            STA >LODOFF+1
1028
0546 D150 5C                  INCB
1029
0547 D151 20 DF               BRA ZD132
1030
0548
1031
0549 D153 BD D0 0E           ZD153 JSR >NXTCH1
1032
0550 D156 24 FB               BCC ZD153
1033
0551 D158 39                  RTS
1034
0552
1035
0553 D159 BE CC 1B           ZD159 LDX >LODOFF
1036
0554 D15C 1C FE               ANDCC #$FE
1037
0555 D15E 39                  RTS
1038
0556
1039
0557 D15F 80 47              ZD15F SUBA #$47
1040
0558 D161 2A 0F               BPL ZD172
1041
0559 D163 8B 06               ADDA #$06
1042
0560 D165 2A 04               BPL ZD16B
1043
0561 D167 8B 07               ADDA #$07
1044
0562 D169 2A 07               BPL ZD172
1045
0563 D16B 8B 0A              ZD16B ADDA #$0A
1046
0564 D16D 2B 03               BMI ZD172
1047
0565 D16F 1C FE               ANDCC #$FE
1048
0566 D171 39                  RTS
1049
0567
1050
0568 D172 1A 01              ZD172 ORCC #$01
1051
0569 D174 39                  RTS
1052
0570
1053
0571 D175 BD D2 1E           INDEC1 JSR >ZD21E
1054
0572 D178 BD D0 0E           ZD178 JSR >NXTCH1
1055
0573 D17B 25 DC               BCS ZD159
1056
0574 D17D 81 39               CMPA #$39
1057
0575 D17F 22 D2               BHI ZD153
1058
0576 D181 84 0F               ANDA #$0F
1059
0577 D183 34 04               PSHS B
1060
0578 D185 34 02               PSHS A
1061
0579 D187 FC CC 1B            LDD >LODOFF
1062
0580 D18A 58                  ASLB
1063
0581 D18B 49                  ROLA
1064
0582 D18C 58                  ASLB
1065
0583 D18D 49                  ROLA
1066
0584 D18E 58                  ASLB
1067
0585 D18F 49                  ROLA
1068
0586 D190 F3 CC 1B            ADDD >LODOFF
1069
0587 D193 F3 CC 1B            ADDD >LODOFF
1070
0588 D196 EB E0               ADDB ,S+
1071
0589 D198 89 00               ADCA #$00
1072
0590 D19A FD CC 1B            STD >LODOFF
1073
0591 D19D 35 04               PULS B
1074
0592 D19F 5C                  INCB
1075
0593 D1A0 20 D6               BRA ZD178
1076
0594                         *
1077
0595                         ** LOAD BINARY FILE
1078
0596                         *
1079
0597 D1A2 7F CC 1D           LOAD1 CLR >TRNFLG
1080
0598 D1A5 8D 3D              ZD1A5 BSR ZD1E4
1081
0599 D1A7 81 02               CMPA #$02
1082
0600 D1A9 27 15               BEQ ZD1C0
1083
0601 D1AB 81 16               CMPA #$16
1084
0602 D1AD 26 F6               BNE ZD1A5
1085
0603 D1AF 8D 33               BSR ZD1E4
1086
0604 D1B1 B7 CC 1E            STA >TRNVEC
1087
0605 D1B4 8D 2E               BSR ZD1E4
1088
0606 D1B6 B7 CC 1F            STA >TRNVEC+1
1089
0607 D1B9 86 01               LDA #$01
1090
0608 D1BB B7 CC 1D            STA >TRNFLG
1091
0609 D1BE 20 E5               BRA ZD1A5
1092
0610
1093
0611 D1C0 8D 22              ZD1C0 BSR ZD1E4
1094
0612 D1C2 1F 89               TFR A,B
1095
0613 D1C4 8D 1E               BSR ZD1E4
1096
0614 D1C6 1E 89               EXG A,B
1097
0615 D1C8 F3 CC 1B            ADDD >LODOFF
1098
0616 D1CB FD CC 3D            STD >ZCC3D
1099
0617 D1CE 8D 14               BSR ZD1E4
1100
0618 D1D0 1F 89               TFR A,B
1101
0619 D1D2 4D                  TSTA
1102
0620 D1D3 27 D0               BEQ ZD1A5
1103
0621 D1D5 8D 0D              ZD1D5 BSR ZD1E4
1104
0622 D1D7 BE CC 3D            LDX >ZCC3D
1105
0623 D1DA A7 80               STA ,X+
1106
0624 D1DC BF CC 3D            STX >ZCC3D
1107
0625 D1DF 5A                  DECB
1108
0626 D1E0 26 F3               BNE ZD1D5
1109
0627 D1E2 20 C1               BRA ZD1A5
1110
0628
1111
0629 D1E4 8E C8 40           ZD1E4 LDX #FCB
1112
0630 D1E7 BD D4 06            JSR >FMS
1113
0631 D1EA 27 11               BEQ ZD1FD
1114
0632 D1EC A6 01               LDA $01,X
1115
0633 D1EE 81 08               CMPA #$08
1116
0634 D1F0 26 0E               BNE ZD200
1117
0635 D1F2 32 62               LEAS $02,S
1118
0636 D1F4 86 04              ZD1F4 LDA #$04
1119
0637 D1F6 A7 84               STA ,X
1120
0638 D1F8 BD D4 06            JSR >FMS
1121
0639 D1FB 26 0D               BNE ZD20A
1122
0640 D1FD 1C FE              ZD1FD ANDCC #$FE
1123
0641 D1FF 39                  RTS
1124
0642
1125
0643 D200 B7 CC 20           ZD200 STA >ERRTYP
1126
0644 D203 81 04               CMPA #$04
1127
0645 D205 26 03               BNE ZD20A
1128
0646 D207 1A 01               ORCC #$01
1129
0647 D209 39                  RTS
1130
0648
1131
0649 D20A 8D 73              ZD20A BSR RPTER1
1132
0650 D20C 7E CD E4            JMP >ZCDE4
1133
0651                         *
1134
0652                         ** 'GET' - LOAD BINARY FILE
1135
0653                         *
1136
0654 D20F 86 00              GETCMD LDA #$00
1137
0655 D211 8D 35               BSR ZD248
1138
0656 D213 25 0F               BCS ZD224
1139
0657 D215 8D 07               BSR ZD21E
1140
0658 D217 7C CC 4C            INC >ZCC4C
1141
0659 D21A 8D 86               BSR LOAD1
1142
0660 D21C 20 F1               BRA GETCMD
1143
0661
1144
0662 D21E 4F                 ZD21E CLRA
1145
0663 D21F 5F                  CLRB
1146
0664 D220 FD CC 1B            STD >LODOFF
1147
0665 D223 39                  RTS
1148
0666
1149
0667 D224 F6 CC 4C           ZD224 LDB >ZCC4C
1150
0668 D227 10 27 FB AE         LBEQ ZCDD9
1151
0669 D22B 7E CD 03            JMP >WARMS
1152
0670
1153
0671 D22E 86 02              ZD22E LDA #$02
1154
0672 D230 8D 22               BSR ZD254
1155
0673 D232 8D EA               BSR ZD21E
1156
0674 D234 BD D1 A2            JSR >LOAD1
1157
0675 D237 F6 CC 1D            LDB >TRNFLG
1158
0676 D23A 27 04               BEQ ZD240
1159
0677 D23C 6E 9F CC 1E         JMP [TRNVEC]
1160
0678
1161
0679 D240 8E CC 5C           ZD240 LDX #NTRMSG
1162
0680 D243 86 81               LDA #$81
1163
0681 D245 7E CD DE            JMP >ZCDDE
1164
0682
1165
0683 D248 34 02              ZD248 PSHS A
1166
0684 D24A 8E C8 40            LDX #FCB
1167
0685 D24D BD D0 36            JSR >GETFL1
1168
0686 D250 35 02               PULS A
1169
0687 D252 25 1A               BCS ZD26E
1170
0688 D254 8E C8 40           ZD254 LDX #FCB
1171
0689 D257 BD D0 EB            JSR >SETEX1
1172
0690 D25A 8E C8 40            LDX #FCB
1173
0691 D25D 86 01               LDA #$01
1174
0692 D25F A7 84               STA ,X
1175
0693 D261 BD D1 E4            JSR >ZD1E4
1176
0694 D264 10 25 00 BB         LBCS ZD323
1177
0695 D268 86 FF               LDA #$FF
1178
0696 D26A A7 88 3B            STA $3B,X
1179
0697 D26D 39                  RTS
1180
0698
1181
0699 D26E B6 CC 11           ZD26E LDA >LASTRM
1182
0700 D271 81 0D               CMPA #$0D
1183
0701 D273 27 07               BEQ ZD27C
1184
0702 D275 B1 CC 02            CMPA >EOLCHR
1185
0703 D278 10 26 FB 5D         LBNE ZCDD9
1186
0704 D27C 1A 01              ZD27C ORCC #$01
1187
0705 D27E 39                  RTS
1188
0706
1189
0707 D27F 34 30              RPTER1 PSHS Y,X
1190
0708 D281 A6 01               LDA $01,X
1191
0709 D283 B7 CC 20            STA >ERRTYP
1192
0710 D286 27 63               BEQ ZD2EB
1193
0711 D288 BD CD EA            JSR >RSTIO1
1194
0712 D28B 10 BE CC 2D         LDY >ERRVEC
1195
0713 D28F 26 08               BNE ZD299
1196
0714 D291 81 10               CMPA #$10
1197
0715 D293 27 58               BEQ ZD2ED
1198
0716 D295 10 8E D3 61         LDY #ZD361
1199
0717 D299 8E C8 40           ZD299 LDX #FCB
1200
0718 D29C 6D 02               TST $02,X
1201
0719 D29E 27 09               BEQ ZD2A9
1202
0720 D2A0 86 04               LDA #$04
1203
0721 D2A2 A7 84               STA ,X
1204
0722 D2A4 BD D4 06            JSR >FMS
1205
0723 D2A7 26 2E               BNE ZD2D7
1206
0724 D2A9 8E C8 38           ZD2A9 LDX #ZC838
1207
0725 D2AC C6 0B               LDB #$0B
1208
0726 D2AE 8D 6E               BSR ZD31E
1209
0727 D2B0 8E C8 40            LDX #FCB
1210
0728 D2B3 B6 CC 0B            LDA >SYSDRV
1211
0729 D2B6 A7 03               STA $03,X
1212
0730 D2B8 86 01               LDA #$01
1213
0731 D2BA A7 84               STA ,X
1214
0732 D2BC BD D4 06            JSR >FMS
1215
0733 D2BF 26 16               BNE ZD2D7
1216
0734 D2C1 B6 CC 20            LDA >ERRTYP
1217
0735 D2C4 4A                  DECA
1218
0736 D2C5 47                  ASRA
1219
0737 D2C6 47                  ASRA
1220
0738 D2C7 4C                  INCA
1221
0739 D2C8 6F 88 20            CLR $20,X
1222
0740 D2CB A7 88 21            STA $21,X
1223
0741 D2CE 86 15               LDA #$15
1224
0742 D2D0 A7 84               STA ,X
1225
0743 D2D2 BD D4 06            JSR >FMS
1226
0744 D2D5 27 1E               BEQ ZD2F5
1227
0745 D2D7 8E CC 75           ZD2D7 LDX #DERMSG
1228
0746 D2DA BD CE 81            JSR >PSTRG1
1229
0747 D2DD BE CC 3F            LDX >ZCC3F
1230
0748 D2E0 B6 CC 20            LDA >ERRTYP
1231
0749 D2E3 A7 01               STA $01,X
1232
0750 D2E5 6F 84               CLR ,X
1233
0751 D2E7 5F                  CLRB
1234
0752 D2E8 BD CF 86            JSR >OUTDC1
1235
0753 D2EB 35 B0              ZD2EB PULS PC,Y,X
1236
0754
1237
0755 D2ED 8E CC 82           ZD2ED LDX #DNRMSG
1238
0756 D2F0 BD CE 81            JSR >PSTRG1
1239
0757 D2F3 20 F6               BRA ZD2EB
1240
0758
1241
0759 D2F5 BD CE B5           ZD2F5 JSR >PCRLF1
1242
0760 D2F8 8E C8 40            LDX #FCB
1243
0761 D2FB B6 CC 20            LDA >ERRTYP
1244
0762 D2FE 4A                  DECA
1245
0763 D2FF 84 03               ANDA #$03
1246
0764 D301 C6 3F               LDB #$3F
1247
0765 D303 3D                  MUL
1248
0766 D304 CB 04               ADDB #$04
1249
0767 D306 E7 88 22            STB $22,X
1250
0768 D309 BD D4 06           ZD309 JSR >FMS
1251
0769 D30C 26 C9               BNE ZD2D7
1252
0770 D30E BD CF 41            JSR >PUTCH1
1253
0771 D311 81 0D               CMPA #$0D
1254
0772 D313 26 F4               BNE ZD309
1255
0773 D315 86 04               LDA #$04
1256
0774 D317 A7 84               STA ,X
1257
0775 D319 BD D4 06            JSR >FMS
1258
0776 D31C 20 CD               BRA ZD2EB
1259
0777 D31E 34 30              ZD31E PSHS Y,X
1260
0778 D320 7E D1 00            JMP >ZD100
1261
0779
1262
0780 D323 8E CC 6B           ZD323 LDX #NFDMSG NOT FOUND
1263
0781 D326 7E CD E1            JMP >ZCDE1
1264
0782                         *
1265
0783                         ** CALL FLEX AS A SUBROUTINE
1266
0784                         *
1267
0785 D329 35 06              DOCMD1 PULS B,A
1268
0786 D32B FD CC 43            STD >ZCC43
1269
0787 D32E 10 FF CC 45        ZD32E STS >ZCC45
1270
0788 D332 7F CC 20            CLR >ERRTYP
1271
0789 D335 7C CC 28            INC >CMDFLG
1272
0790 D338 7E CD B8            JMP >ZCDB8
1273
0791 D33B 7F CC 28           ZD33B CLR >CMDFLG
1274
0792 D33E 10 FE CC 45         LDS >ZCC45
1275
0793 D342 F6 CC 20            LDB >ERRTYP
1276
0794 D345 6E 9F CC 43         JMP [ZCC43]
1277
0795                         *
1278
0796                         ** ADD ACCB TO IX
1279
0797                         *
1280
0798 D349 3A                 ADDBX1 ABX
1281
0799 D34A 39                  RTS
1282
0800
1283
0801 D34B 7D CC FC           ZD34B TST >ZCCFC
1284
0802 D34E 26 04               BNE ZD354
1285
0803 D350 6E 9F D3 F3         JMP [MONVEC]
1286
0804
1287
0805 D354 8E C8 40           ZD354 LDX #FCB
1288
0806 D357 86 1B               LDA #$1B
1289
0807 D359 A7 01               STA $01,X
1290
0808 D35B BD D2 7F            JSR >RPTER1
1291
0809 D35E 7E CD 67            JMP >WARM1
1292
0810
1293
0811 D361 45 52 52 4F 52 53  ZD361 FCC /ERRORS/
1294
0812 D367 00 00               FCB $00,$00
1295
0813 D369 53 59 53            FCC /SYS/
1296
0009                          END
1297
0000                          INCLUDE "f9-monio.txt"
1298
0001                         *
1299
0002                         ** TERMINAL AND PRINTER DRIVERS
1300
0003                         ** SYS09BUG - Spartan 3 Starter Board
1301
0004                         *
1302
0005                         ** FLEX DRIVER MEMORY MAP:
1303
0006                         ** C700 - C83F  PRINTER SPOOLER
1304
0007                         ** CCC0 - CCF7  PRINTER DRIVERS
1305
0008                         ** D370 - D3FF  CONSOLE DRIVERS
1306
0009                         ** DE00 - DFAF  DISK DRIVERS
1307
0010                         *
1308
0011                         *
1309
0012                         ** INTERRUPT VECTORS
1310
0013                         *
1311
0014 DFC8                    IRQVEC EQU   MONRAM+$08
1312
0015 DFC2                    SWIVEC EQU   MONRAM+$02     SWI3 VECTOR
1313
0016                         *
1314
0017                         ** PRINTER DRIVERS
1315
0018                         *
1316
0019 CCC0                     ORG $CCC0
1317
0020 CCC0 7E D3 70           PINIT JMP DUMRTS INITIATE PRINTER
1318
0021 CCD8                     ORG $CCD8
1319
0022 CCD8 7E D3 70           PCHK JMP DUMRTS CHECK IF PRINTER READY
1320
0023 CCE4                     ORG $CCE4
1321
0024 CCE4 7E D3 70           POUT JMP DUMRTS OUTPUT CHR. TO PRINTER
1322
0025 CCF8                     ORG $CCF8
1323
0026 CCF8 01 00 00 00        ZCCF8 FCB $01,$00,$00,$00
1324
0027 CCFC 00 00 00 00        ZCCFC FCB $00,$00,$00,$00
1325
0028                         *
1326
0029                         ** CONSOLE DRIVER PATCHES:
1327
0030                         *
1328
0031 D370                           ORG $D370
1329
0032 D370                    IHND   EQU   *         INTERRUPT HANDLER
1330
0033 D370                    TMON   EQU   *         TIMER ON
1331
0034 D370                    TMOFF  EQU   *         TIMER OFF
1332
0035 D370                    TMINT  EQU   *         TIMER INITIALIZATION
1333
0036 D370                    DUMRTS EQU   *
1334
0037 D370 39                        RTS
1335
0038                         *
1336
0039                         ** SBUG MONITOR I/O CALLS
1337
0040                         *
1338
0041 D371 7E D3 70           TERINZ JMP DUMRTS   INITIATE ACIA
1339
0042 D374 6E 9F F8 04        INCHNE JMP [MONROM+$04] INPUT WITHOUT ECHO
1340
0043 D378 6E 9F F8 00        MONITR JMP [MONROM+$00]
1341
0044 D37C 6E 9F F8 08        INCHEK JMP [MONROM+$08] CHECK FOR TERMINAL ENTRY
1342
0045 D380 6E 9F F8 0A        OUTEEE JMP [MONROM+$0A] OUPUT CHARACTER
1343
0046 D384 6E 9F F8 06        INEEE  JMP [MONROM+$06] INPUT WITH ECHO
1344
0047
1345
0048                         *
1346
0049                         ** AUTO BLOCK FDBS
1347
0050                         *
1348
0051 D3E5                           ORG   $D3E5
1349
0052 D3E5 D3 74              ZD3E5  FDB   INCHNE    INPUT - NO ECHO
1350
0053 D3E7 D3 70              IHNDVC FDB   IHND      IRQ INTERRUPT HANDLER
1351
0054 D3E9 DF C2              SWIVVC FDB   SWIVEC    SWI3 VECTOR LOCATION
1352
0055 D3EB DF C8              IRQVVC FDB   IRQVEC    IRQ VECTOR LOCATION
1353
0056 D3ED D3 70              TOFVEC FDB   TMOFF     TIMER OFF ROUTINE
1354
0057 D3EF D3 70              TONVEC FDB   TMON      TIMER ON ROUTINE
1355
0058 D3F1 D3 70              TINVEC FDB   TMINT     TIMER INITIALIZE ROUTINE
1356
0059 D3F3 D3 78              MONVEC FDB   MONITR    MONITOR RETURN ADDRESS
1357
0060 D3F5 D3 71              TERVEC FDB   TERINZ    TERMINAL INITIATION
1358
0061 D3F7 D3 7C              STAVEC FDB   INCHEK    CHECK TERMINAL STATUS
1359
0062 D3F9 D3 80              OUTVEC FDB   OUTEEE    TERMINAL CHAR OUTPUT
1360
0063 D3FB D3 84              INVEC  FDB   INEEE     TERMINAL INPUT CHARACTER
1361
0064 D3FD 7E CA 00           ZD3FD  JMP   ZCA00
1362
0010                                END
1363
0000                          INCLUDE "f9-fms.txt"
1364
0001                         *
1365
0002                         ** FILE MANAGEMENT SYSTEM
1366
0003                         *
1367
0004 D400 7E D4 36           ZD400 JMP >ZD436
1368
0005 D403 7E D4 59           FMSCLS JMP >ZD459
1369
0006 D406 7E D4 7B           FMS JMP >FMS1
1370
0007 D409 20 44 49 53 4B 20  CPYMSG FCC / DISK OPERATING SYSTEM/
1371
          4F 50 45 52 41 54
1372
          49 4E 47 20 53 59
1373
          53 54 45 4D
1374
0008 D41F 20 43 4F 50 59 52   FCC / COPYRIGHT (C) 1980 BY/
1375
          49 47 48 54 20 28
1376
          43 29 20 31 39 38
1377
          30 20 42 59
1378
0009 D435 20 54 45 43 48 4E   FCC / TECHNICAL SYSTEMS CONSULTANTS/
1379
          49 43 41 4C 20 53
1380
          59 53 54 45 4D 53
1381
          20 43 4F 4E 53 55
1382
          4C 54 41 4E 54 53
1383
0010 D409                     ORG CPYMSG
1384
0011 D409                    FCBPTR RMB 2
1385
0012 D40B                    CURFCB RMB 4
1386
0013 D40F                    ZD40F RMB 2
1387
0014 D411                    ZD411 RMB 1
1388
0015 D412                    ZD412 RMB 1
1389
0016 D413                    ZD413 RMB 1
1390
0017 D414                    ZD414 RMB 1
1391
0018 D415                    ZD415 RMB 2
1392
0019 D417                    ZD417 RMB 1
1393
0020 D418                    ZD418 RMB 2
1394
0021 D41A                    ZD41A RMB 1
1395
0022 D41B                    ZD41B RMB 2
1396
0023 D41D                    ZD41D RMB 24
1397
0024 D435 FF                 VERFLG FCB $FF
1398
0025                         *
1399
0026                         **
1400
0027                         *
1401
0028 D436 BD DE 15           ZD436 JSR >COLDDR
1402
0029 D439 8E D4 09            LDX #FCBPTR
1403
0030 D43C C6 0A               LDB #$0A
1404
0031 D43E 8D 11               BSR ZD451
1405
0032 D440 8E 00 05            LDX #Z0005
1406
0033 D443 BF D4 13            STX >ZD413
1407
0034 D446 BF D4 15            STX >ZD415
1408
0035 D449 7F D4 1A            CLR >ZD41A
1409
0036 D44C 8E D4 1B           ZD44C LDX #ZD41B
1410
0037 D44F C6 1A               LDB #$1A
1411
0038 D451 6F 80              ZD451 CLR ,X+
1412
0039 D453 5A                  DECB
1413
0040 D454 26 FB               BNE ZD451
1414
0041 D456 7E C7 0C            JMP >PRSPL5
1415
0042
1416
0043 D459 BD C7 09           ZD459 JSR >PRSPL4
1417
0044 D45C BE D4 09           ZD45C LDX >FCBPTR
1418
0045 D45F 27 EB               BEQ ZD44C
1419
0046 D461 30 88 E4            LEAX -$1C,X
1420
0047 D464 BF D4 0B            STX >CURFCB
1421
0048 D467 34 20               PSHS Y
1422
0049 D469 BD DA C3            JSR >CLOSE
1423
0050 D46C 35 20               PULS Y
1424
0051 D46E 24 EC               BCC ZD45C
1425
0052 D470 BE D4 0B            LDX >CURFCB
1426
0053 D473 6F 02               CLR $02,X
1427
0054 D475 BD C7 0C            JSR >PRSPL5
1428
0055 D478 C6 FF               LDB #$FF
1429
0056 D47A 39                  RTS
1430
0057
1431
0058                         *
1432
0059                         ** FMS CALL, PROCESSING
1433
0060                         *
1434
0061 D47B 7D CC FC           FMS1 TST >ZCCFC
1435
0062 D47E 27 03               BEQ ZD483
1436
0063 D480 BD C7 09            JSR >PRSPL4
1437
0064 D483 34 24              ZD483 PSHS Y,B
1438
0065 D485 BF D4 0B            STX >CURFCB
1439
0066 D488 6F 01               CLR $01,X
1440
0067 D48A E6 84               LDB ,X
1441
0068 D48C 26 22               BNE DOFUNC
1442
0069                         *
1443
0070                         ** READ/WRITE CHAR/BYTE
1444
0071                         *
1445
0072 D48E E6 02               LDB $02,X
1446
0073 D490 27 1A               BEQ ZD4AC
1447
0074 D492 C1 02               CMPB #$02
1448
0075 D494 27 11               BEQ ZD4A7
1449
0076 D496 BD D5 B4            JSR >ZD5B4
1450
0077 D499 BE D4 0B           ZD499 LDX >CURFCB
1451
0078 D49C 25 26               BCS ZD4C4
1452
0079 D49E 7D CC FC            TST >ZCCFC
1453
0080 D4A1 26 23               BNE ZD4C6
1454
0081 D4A3 5F                  CLRB
1455
0082 D4A4 35 24               PULS Y,B
1456
0083 D4A6 39                  RTS
1457
0084
1458
0085 D4A7 BD D6 CF           ZD4A7 JSR >ZD6CF
1459
0086 D4AA 20 ED               BRA ZD499
1460
0087 D4AC C6 12              ZD4AC LDB #$12
1461
0088 D4AE 20 14               BRA ZD4C4
1462
0089
1463
0090 D4B0 C1 16              DOFUNC CMPB #$16
1464
0091 D4B2 23 04               BLS DOFUN1
1465
0092 D4B4 C6 01               LDB #$01
1466
0093 D4B6 20 0C               BRA ZD4C4
1467
0094 D4B8 5A                 DOFUN1 DECB
1468
0095 D4B9 58                  ASLB
1469
0096 D4BA 8E D4 CE            LDX #FMSTBL
1470
0097 D4BD AD 95               JSR [B,X]
1471
0098 D4BF BE D4 0B            LDX >CURFCB
1472
0099 D4C2 24 02               BCC ZD4C6
1473
0100 D4C4 E7 01              ZD4C4 STB $01,X
1474
0101 D4C6 BD C7 0C           ZD4C6 JSR >PRSPL5
1475
0102 D4C9 6D 01               TST $01,X
1476
0103 D4CB 35 24               PULS Y,B
1477
0104 D4CD 39                  RTS
1478
0105                         *
1479
0106                         ** FMS COMMAND VECTOR TABLE
1480
0107                         *
1481
0108 D4CE D9 86              FMSTBL FDB OPENRD FC 1
1482
0109 D4D0 D9 D9               FDB OPENWR FC 2
1483
0110 D4D2 DA F9               FDB OPENUD FC 3
1484
0111 D4D4 DA C3               FDB CLOSE FC 4
1485
0112 D4D6 D5 E2               FDB REWIND FC 5
1486
0113 D4D8 D8 1D               FDB OPNDIR FC 6
1487
0114 D4DA D8 38               FDB GETREC FC 7
1488
0115 D4DC D8 76               FDB PUTREC FC 8
1489
0116 D4DE D6 41               FDB RDSECT FC 9
1490
0117 D4E0 D6 9F               FDB WRSECT FC 10
1491
0118 D4E2 D9 69               FDB RESV1 FC 11
1492
0119 D4E4 DB D6               FDB DELETE FC 12
1493
0120 D4E6 DB 2C               FDB RENAME FC 13
1494
0121 D4E8 D6 99               FDB RESV2 FC 14
1495
0122 D4EA DA 87               FDB NXTSEC FC 15
1496
0123 D4EC D8 10               FDB OPNREC FC 16
1497
0124 D4EE D5 6F               FDB GETBYT FC 17
1498
0125 D4F0 D5 90               FDB PUTBYT FC 18
1499
0126 D4F2 DB 07               FDB RESV3 FC 19
1500
0127 D4F4 DD BD               FDB NXTDRV FC 20
1501
0128 D4F6 DC FB               FDB POSREC FC 21
1502
0129 D4F8 DC E5               FDB BAKREC FC 22
1503
0130                         *
1504
0131                         **
1505
0132                         *
1506
0133 D4FA 8D 20              ZD4FA BSR ZD51C
1507
0134 D4FC 26 05               BNE ZD503
1508
0135 D4FE C6 02               LDB #$02
1509
0136 D500 1A 01               ORCC #$01
1510
0137 D502 39                  RTS
1511
0138
1512
0139 D503 ED 84              ZD503 STD ,X
1513
0140 D505 AE 84               LDX ,X
1514
0141 D507 6F 84               CLR ,X
1515
0142 D509 6F 01               CLR $01,X
1516
0143 D50B 39                  RTS
1517
0144
1518
0145 D50C 8D 0E              ZD50C BSR ZD51C
1519
0146 D50E 27 05               BEQ ZD515
1520
0147 D510 C6 0D               LDB #$0D
1521
0148 D512 1A 01               ORCC #$01
1522
0149 D514 39                  RTS
1523
0150
1524
0151 D515 EC 94              ZD515 LDD [,X]
1525
0152 D517 ED 84               STD ,X
1526
0153 D519 1C FE               ANDCC #$FE
1527
0154 D51B 39                  RTS
1528
0155
1529
0156 D51C FC D4 0B           ZD51C LDD >CURFCB
1530
0157 D51F C3 00 1C            ADDD #$001C
1531
0158 D522 8E D4 09            LDX #FCBPTR
1532
0159 D525 10 AE 84           ZD525 LDY ,X
1533
0160 D528 26 03               BNE ZD52D
1534
0161 D52A 1C FB               ANDCC #$FB
1535
0162 D52C 39                  RTS
1536
0163
1537
0164 D52D 10 A3 84           ZD52D CMPD ,X
1538
0165 D530 26 01               BNE ZD533
1539
0166 D532 39                  RTS
1540
0167 D533 AE 84              ZD533 LDX ,X
1541
0168 D535 20 EE               BRA ZD525
1542
0169
1543
0170 D537 BE D4 0B           ZD537 LDX >CURFCB
1544
0171 D53A 4F                  CLRA
1545
0172 D53B 5F                  CLRB
1546
0173 D53C 8D 02               BSR ZD540
1547
0174 D53E C6 2F               LDB #$2F
1548
0175 D540 A7 88 11           ZD540 STA $11,X
1549
0176 D543 30 01               LEAX $01,X
1550
0177 D545 5A                  DECB
1551
0178 D546 26 F8               BNE ZD540
1552
0179 D548 39                  RTS
1553
0180
1554
0181 D549 BE D4 0B           ZD549 LDX >CURFCB
1555
0182 D54C C6 0B               LDB #$0B
1556
0183 D54E A6 04              ZD54E LDA $04,X
1557
0184 D550 A7 88 24            STA $24,X
1558
0185 D553 30 01               LEAX $01,X
1559
0186 D555 5A                  DECB
1560
0187 D556 26 F6               BNE ZD54E
1561
0188 D558 39                  RTS
1562
0189
1563
0190 D559 BE D4 0B           ZD559 LDX >CURFCB
1564
0191 D55C C6 0B               LDB #$0B
1565
0192 D55E A6 04              ZD55E LDA $04,X
1566
0193 D560 34 02               PSHS A
1567
0194 D562 A6 88 24            LDA $24,X
1568
0195 D565 A1 E0               CMPA ,S+
1569
0196 D567 26 05               BNE ZD56E
1570
0197 D569 30 01               LEAX $01,X
1571
0198 D56B 5A                  DECB
1572
0199 D56C 26 F0               BNE ZD55E
1573
0200 D56E 39                 ZD56E RTS
1574
0201                         *
1575
0202                         ** GET RANDOM BYTE FROM SECTOR
1576
0203                         *
1577
0204 D56F BE D4 0B           GETBYT LDX >CURFCB
1578
0205 D572 E6 02               LDB $02,X
1579
0206 D574 54                  LSRB
1580
0207 D575 24 79               BCC ZD5F0
1581
0208 D577 E6 88 23            LDB $23,X
1582
0209 D57A 7E D6 00            JMP >ZD600
1583
0210
1584
0211 D57D BE D4 0B           ZD57D LDX >CURFCB
1585
0212 D580 E6 88 22            LDB $22,X
1586
0213 D583 6C 88 22            INC $22,X
1587
0214 D586 3A                  ABX
1588
0215 D587 A7 88 40            STA $40,X
1589
0216 D58A 5C                  INCB
1590
0217 D58B 26 1F               BNE ZD5AC
1591
0218 D58D 1A 01               ORCC #$01
1592
0219 D58F 39                  RTS
1593
0220                         *
1594
0221                         ** PUT RANDOM BYTE IN SECTOR
1595
0222                         *
1596
0223 D590 BE D4 0B           PUTBYT LDX >CURFCB
1597
0224 D593 E6 02               LDB $02,X
1598
0225 D595 C4 03               ANDB #$03
1599
0226 D597 C1 03               CMPB #$03
1600
0227 D599 26 55               BNE ZD5F0
1601
0228 D59B CA 80               ORB #$80
1602
0229 D59D E7 02               STB $02,X
1603
0230 D59F E6 0F               LDB $0F,X
1604
0231 D5A1 C5 80               BITB #$80
1605
0232 D5A3 26 0A               BNE ZD5AF
1606
0233 D5A5 E6 88 23            LDB $23,X
1607
0234 D5A8 3A                  ABX
1608
0235 D5A9 A7 88 40            STA $40,X
1609
0236 D5AC 1C FE              ZD5AC ANDCC #$FE
1610
0237 D5AE 39                  RTS
1611
0238
1612
0239 D5AF C6 0B              ZD5AF LDB #$0B
1613
0240 D5B1 1A 01               ORCC #$01
1614
0241 D5B3 39                  RTS
1615
0242
1616
0243 D5B4 A6 88 3B           ZD5B4 LDA $3B,X
1617
0244 D5B7 2B 3C               BMI ZD5F5
1618
0245 D5B9 27 07               BEQ ZD5C2
1619
0246 D5BB 6A 88 3B            DEC $3B,X
1620
0247 D5BE 86 20               LDA #$20
1621
0248 D5C0 20 1D               BRA ZD5DF
1622
0249
1623
0250 D5C2 8D 31              ZD5C2 BSR ZD5F5
1624
0251 D5C4 25 1B               BCS ZD5E1
1625
0252 D5C6 81 18               CMPA #$18
1626
0253 D5C8 22 15               BHI ZD5DF
1627
0254 D5CA 27 F6               BEQ ZD5C2
1628
0255 D5CC 81 09               CMPA #$09
1629
0256 D5CE 26 0C               BNE ZD5DC
1630
0257 D5D0 8D 23               BSR ZD5F5
1631
0258 D5D2 25 0D               BCS ZD5E1
1632
0259 D5D4 BE D4 0B            LDX >CURFCB
1633
0260 D5D7 A7 88 3B            STA $3B,X
1634
0261 D5DA 20 D8               BRA ZD5B4
1635
0262
1636
0263 D5DC 4D                 ZD5DC TSTA
1637
0264 D5DD 27 E3               BEQ ZD5C2
1638
0265 D5DF 1C FE              ZD5DF ANDCC #$FE
1639
0266 D5E1 39                 ZD5E1 RTS
1640
0267                         *
1641
0268                         ** REWIND FILE
1642
0269                         *
1643
0270 D5E2 BD DA B1           REWIND JSR >ZDAB1
1644
0271 D5E5 25 09               BCS ZD5F0
1645
0272 D5E7 85 01               BITA #$01
1646
0273 D5E9 27 05               BEQ ZD5F0
1647
0274 D5EB A7 84               STA ,X
1648
0275 D5ED 7E D9 A0            JMP >ZD9A0
1649
0276
1650
0277 D5F0 C6 12              ZD5F0 LDB #$12
1651
0278 D5F2 1A 01               ORCC #$01
1652
0279 D5F4 39                  RTS
1653
0280
1654
0281 D5F5 BE D4 0B           ZD5F5 LDX >CURFCB
1655
0282 D5F8 E6 88 22            LDB $22,X
1656
0283 D5FB 27 0A               BEQ ZD607
1657
0284 D5FD 6C 88 22            INC $22,X
1658
0285 D600 3A                 ZD600 ABX
1659
0286 D601 A6 88 40            LDA $40,X
1660
0287 D604 1C FE               ANDCC #$FE
1661
0288 D606 39                  RTS
1662
0289
1663
0290 D607 8D 03              ZD607 BSR ZD60C
1664
0291 D609 24 EA               BCC ZD5F5
1665
0292 D60B 39                  RTS
1666
0293
1667
0294 D60C BE D4 0B           ZD60C LDX >CURFCB
1668
0295 D60F EC 88 40            LDD $40,X
1669
0296 D612 6C 88 21            INC $21,X
1670
0297 D615 26 03               BNE ZD61A
1671
0298 D617 6C 88 20            INC $20,X
1672
0299 D61A 10 83 00 00        ZD61A CMPD #$0000
1673
0300 D61E 27 1C               BEQ ZD63C
1674
0301 D620 ED 88 1E           ZD620 STD $1E,X
1675
0302 D623 34 02               PSHS A
1676
0303 D625 86 04               LDA #$04
1677
0304 D627 A7 88 22            STA $22,X
1678
0305 D62A 35 02               PULS A
1679
0306 D62C 8D 13               BSR RDSECT
1680
0307 D62E 24 10               BCC ZD640
1681
0308 D630 C5 80               BITB #$80
1682
0309 D632 27 04               BEQ ZD638
1683
0310 D634 C6 10               LDB #$10
1684
0311 D636 20 06               BRA ZD63E
1685
0312
1686
0313 D638 C6 09              ZD638 LDB #$09
1687
0314 D63A 20 02               BRA ZD63E
1688
0315
1689
0316 D63C C6 08              ZD63C LDB #$08
1690
0317 D63E 1A 01              ZD63E ORCC #$01
1691
0318 D640 39                 ZD640 RTS
1692
0319                         *
1693
0320                         ** READ SINGLE SECTOR
1694
0321                         *
1695
0322 D641 8D 25              RDSECT BSR ZD668
1696
0323 D643 BE D4 0B            LDX >CURFCB
1697
0324 D646 BD DE 0C            JSR >DRIVE
1698
0325 D649 25 12               BCS ZD65D
1699
0326 D64B 8D 11              ZD64B BSR ZD65E
1700
0327 D64D BD DE 00            JSR >READ
1701
0328 D650 26 03               BNE ZD655
1702
0329 D652 1C FE               ANDCC #$FE
1703
0330 D654 39                  RTS
1704
0331
1705
0332 D655 34 04              ZD655 PSHS B
1706
0333 D657 8D 17               BSR ZD670
1707
0334 D659 35 04               PULS B
1708
0335 D65B 24 EE               BCC ZD64B
1709
0336 D65D 39                 ZD65D RTS
1710
0337
1711
0338 D65E BE D4 0B           ZD65E LDX >CURFCB
1712
0339 D661 EC 88 1E            LDD $1E,X
1713
0340 D664 30 88 40            LEAX $40,X
1714
0341 D667 39                  RTS
1715
0342
1716
0343 D668 4F                 ZD668 CLRA
1717
0344 D669 B7 D4 11            STA >ZD411
1718
0345 D66C B7 D4 12            STA >ZD412
1719
0346 D66F 39                  RTS
1720
0347
1721
0348 D670 C5 10              ZD670 BITB #$10
1722
0349 D672 26 11               BNE ZD685
1723
0350 D674 C5 80               BITB #$80
1724
0351 D676 26 24               BNE ZD69C
1725
0352 D678 F6 D4 11            LDB >ZD411
1726
0353 D67B 5C                  INCB
1727
0354 D67C C1 07               CMPB #$07
1728
0355 D67E 27 05               BEQ ZD685
1729
0356 D680 F7 D4 11            STB >ZD411
1730
0357 D683 20 14               BRA RESV2
1731
0358
1732
0359 D685 7F D4 11           ZD685 CLR >ZD411
1733
0360 D688 F6 D4 12            LDB >ZD412
1734
0361 D68B 5C                  INCB
1735
0362 D68C C1 04               CMPB #$04
1736
0363 D68E 27 0C               BEQ ZD69C
1737
0364 D690 F7 D4 12            STB >ZD412
1738
0365 D693 BE D4 0B            LDX >CURFCB
1739
0366 D696 BD DE 09            JSR >RESTOR
1740
0367                         *
1741
0368                         ** RESERVED
1742
0369                         *
1743
0370 D699 1C FE              RESV2 ANDCC #$FE
1744
0371 D69B 39                  RTS
1745
0372 D69C 1A 01              ZD69C ORCC #$01
1746
0373 D69E 39                  RTS
1747
0374                         *
1748
0375                         ** WRITE SINGLE SECTOR
1749
0376                         *
1750
0377 D69F 8D C7              WRSECT BSR ZD668
1751
0378 D6A1 BE D4 0B            LDX >CURFCB
1752
0379 D6A4 BD DE 0C            JSR >DRIVE
1753
0380 D6A7 25 20               BCS ZD6C9
1754
0381 D6A9 BE D4 0B           ZD6A9 LDX >CURFCB
1755
0382 D6AC 8D B0               BSR ZD65E
1756
0383 D6AE BD DE 03            JSR >WRITE
1757
0384 D6B1 26 0A               BNE ZD6BD
1758
0385 D6B3 B6 D4 35            LDA >VERFLG
1759
0386 D6B6 27 37               BEQ ZD6EF
1760
0387 D6B8 BD DE 06            JSR >VERIFY
1761
0388 D6BB 27 32               BEQ ZD6EF
1762
0389 D6BD C5 40              ZD6BD BITB #$40
1763
0390 D6BF 26 0B               BNE ZD6CC
1764
0391 D6C1 34 04               PSHS B
1765
0392 D6C3 8D AB               BSR ZD670
1766
0393 D6C5 35 04               PULS B
1767
0394 D6C7 24 E0               BCC ZD6A9
1768
0395 D6C9 39                 ZD6C9 RTS
1769
0396
1770
0397 D6CA C6 20               LDB #$20
1771
0398 D6CC 1A 01              ZD6CC ORCC #$01
1772
0399 D6CE 39                  RTS
1773
0400
1774
0401 D6CF BE D4 0B           ZD6CF LDX >CURFCB
1775
0402 D6D2 E6 88 3B            LDB $3B,X
1776
0403 D6D5 2B 3D               BMI ZD714
1777
0404 D6D7 81 20               CMPA #$20
1778
0405 D6D9 26 0F               BNE ZD6EA
1779
0406 D6DB 5C                  INCB
1780
0407 D6DC E7 88 3B            STB $3B,X
1781
0408 D6DF C1 7F               CMPB #$7F
1782
0409 D6E1 26 0C               BNE ZD6EF
1783
0410 D6E3 20 0D               BRA ZD6F2
1784
0411
1785
0412 D6E5 8D 0B              ZD6E5 BSR ZD6F2
1786
0413 D6E7 24 E6               BCC ZD6CF
1787
0414 D6E9 39                  RTS
1788
0415
1789
0416 D6EA 5D                 ZD6EA TSTB
1790
0417 D6EB 27 27               BEQ ZD714
1791
0418 D6ED 20 F6               BRA ZD6E5
1792
0419
1793
0420 D6EF 1C FE              ZD6EF ANDCC #$FE
1794
0421 D6F1 39                  RTS
1795
0422
1796
0423 D6F2 34 02              ZD6F2 PSHS A
1797
0424 D6F4 C1 01               CMPB #$01
1798
0425 D6F6 26 04               BNE ZD6FC
1799
0426 D6F8 86 20               LDA #$20
1800
0427 D6FA 20 10               BRA ZD70C
1801
0428
1802
0429 D6FC 86 09              ZD6FC LDA #$09
1803
0430 D6FE 8D 14               BSR ZD714
1804
0431 D700 35 02               PULS A
1805
0432 D702 25 0F               BCS ZD713
1806
0433 D704 34 02               PSHS A
1807
0434 D706 BE D4 0B            LDX >CURFCB
1808
0435 D709 A6 88 3B            LDA $3B,X
1809
0436 D70C 6F 88 3B           ZD70C CLR $3B,X
1810
0437 D70F 8D 03               BSR ZD714
1811
0438 D711 35 02               PULS A
1812
0439 D713 39                 ZD713 RTS
1813
0440
1814
0441 D714 BE D4 0B           ZD714 LDX >CURFCB
1815
0442 D717 E6 02               LDB $02,X
1816
0443 D719 C1 02               CMPB #$02
1817
0444 D71B 10 26 FE D1         LBNE ZD5F0
1818
0445 D71F E6 88 22            LDB $22,X
1819
0446 D722 C1 04               CMPB #$04
1820
0447 D724 26 08               BNE ZD72E
1821
0448 D726 34 02               PSHS A
1822
0449 D728 8D 21               BSR ZD74B
1823
0450 D72A 35 02               PULS A
1824
0451 D72C 25 0F               BCS ZD73D
1825
0452 D72E BD D5 7D           ZD72E JSR >ZD57D
1826
0453 D731 24 0A               BCC ZD73D
1827
0454 D733 C6 04               LDB #$04
1828
0455 D735 BE D4 0B            LDX >CURFCB
1829
0456 D738 E7 88 22            STB $22,X
1830
0457 D73B 1C FE               ANDCC #$FE
1831
0458 D73D 39                 ZD73D RTS
1832
0459
1833
0460 D73E BE D4 0B           ZD73E LDX >CURFCB
1834
0461 D741 4F                  CLRA
1835
0462 D742 5F                  CLRB
1836
0463 D743 ED 88 20            STD $20,X
1837
0464 D746 ED 88 42            STD $42,X
1838
0465 D749 20 27               BRA ZD772
1839
0466
1840
0467 D74B E6 88 12           ZD74B LDB $12,X
1841
0468 D74E 26 22               BNE ZD772
1842
0469 D750 E6 88 17            LDB $17,X
1843
0470 D753 27 44               BEQ ZD799
1844
0471 D755 6F 88 17            CLR $17,X
1845
0472 D758 8D 3F               BSR ZD799
1846
0473 D75A 25 2A               BCS ZD786
1847
0474 D75C 8D E0               BSR ZD73E
1848
0475 D75E 25 26               BCS ZD786
1849
0476 D760 8D DC               BSR ZD73E
1850
0477 D762 25 22               BCS ZD786
1851
0478 D764 BE D4 0B            LDX >CURFCB
1852
0479 D767 C6 02               LDB #$02
1853
0480 D769 E7 88 17            STB $17,X
1854
0481 D76C EC 88 11            LDD $11,X
1855
0482 D76F 7E DC 82            JMP >ZDC82
1856
0483
1857
0484 D772 8D 0E              ZD772 BSR ZD782
1858
0485 D774 BE D4 0B            LDX >CURFCB
1859
0486 D777 ED 88 40            STD $40,X
1860
0487 D77A BD D6 9F            JSR >WRSECT
1861
0488 D77D 24 1A               BCC ZD799
1862
0489 D77F 7E DB C1            JMP >ZDBC1
1863
0490
1864
0491 D782 8D 03              ZD782 BSR ZD787
1865
0492 D784 EC 84               LDD ,X
1866
0493 D786 39                 ZD786 RTS
1867
0494
1868
0495 D787 BE D4 0B           ZD787 LDX >CURFCB
1869
0496 D78A E6 03               LDB $03,X
1870
0497 D78C 86 06               LDA #$06
1871
0498 D78E 3D                  MUL
1872
0499 D78F 8E D4 1D            LDX #ZD41D
1873
0500 D792 3A                  ABX
1874
0501 D793 BF D4 1B            STX >ZD41B
1875
0502 D796 6D 84               TST ,X
1876
0503 D798 39                  RTS
1877
0504
1878
0505 D799 8D E7              ZD799 BSR ZD782
1879
0506 D79B 26 05               BNE ZD7A2
1880
0507 D79D C6 07               LDB #$07
1881
0508 D79F 1A 01              ZD79F ORCC #$01
1882
0509 D7A1 39                  RTS
1883
0510
1884
0511 D7A2 BE D4 0B           ZD7A2 LDX >CURFCB
1885
0512 D7A5 ED 88 13            STD $13,X
1886
0513 D7A8 6D 88 12            TST $12,X
1887
0514 D7AB 26 03               BNE ZD7B0
1888
0515 D7AD ED 88 11            STD $11,X
1889
0516 D7B0 6C 88 16           ZD7B0 INC $16,X
1890
0517 D7B3 26 03               BNE ZD7B8
1891
0518 D7B5 6C 88 15            INC $15,X
1892
0519 D7B8 6D 88 17           ZD7B8 TST $17,X
1893
0520 D7BB 27 0B               BEQ ZD7C8
1894
0521 D7BD BD DC 43            JSR >ZDC43
1895
0522 D7C0 25 DD               BCS ZD79F
1896
0523 D7C2 BE D4 0B            LDX >CURFCB
1897
0524 D7C5 EC 88 13            LDD $13,X
1898
0525 D7C8 BD D6 20           ZD7C8 JSR >ZD620
1899
0526 D7CB 25 D2               BCS ZD79F
1900
0527 D7CD BE D4 0B            LDX >CURFCB
1901
0528 D7D0 EC 88 40            LDD $40,X
1902
0529 D7D3 34 06               PSHS B,A
1903
0530 D7D5 8D B0               BSR ZD787
1904
0531 D7D7 35 06               PULS B,A
1905
0532 D7D9 ED 84               STD ,X
1906
0533 D7DB 26 0A               BNE ZD7E7
1907
0534 D7DD 6F 02               CLR $02,X
1908
0535 D7DF 6F 03               CLR $03,X
1909
0536 D7E1 6F 04               CLR $04,X
1910
0537 D7E3 6F 05               CLR $05,X
1911
0538 D7E5 20 08               BRA ZD7EF
1912
0539
1913
0540 D7E7 10 AE 04           ZD7E7 LDY $04,X
1914
0541 D7EA 31 3F               LEAY -$01,Y
1915
0542 D7EC 10 AF 04            STY $04,X
1916
0543 D7EF 4F                 ZD7EF CLRA
1917
0544 D7F0 BE D4 0B            LDX >CURFCB
1918
0545 D7F3 6C 88 21            INC $21,X
1919
0546 D7F6 26 03               BNE ZD7FB
1920
0547 D7F8 6C 88 20            INC $20,X
1921
0548 D7FB 5F                 ZD7FB CLRB
1922
0549 D7FC A7 88 40           ZD7FC STA $40,X
1923
0550 D7FF 30 01               LEAX $01,X
1924
0551 D801 5A                  DECB
1925
0552 D802 26 F8               BNE ZD7FC
1926
0553 D804 BE D4 0B            LDX >CURFCB
1927
0554 D807 EC 88 20            LDD $20,X
1928
0555 D80A ED 88 42            STD $42,X
1929
0556 D80D 1C FE               ANDCC #$FE
1930
0557 D80F 39                  RTS
1931
0558                         *
1932
0559                         ** OPEN SYSTEM INFO. RECORD
1933
0560                         *
1934
0561 D810 5F                 OPNREC CLRB
1935
0562 D811 34 04               PSHS B
1936
0563 D813 C6 03               LDB #$03
1937
0564 D815 20 0E               BRA ZD825
1938
0565 D817 BE D4 15            LDX >ZD415
1939
0566 D81A BF D4 13            STX >ZD413
1940
0567 D81D F6 D4 13           OPNDIR LDB >ZD413
1941
0568 D820 34 04               PSHS B
1942
0569 D822 F6 D4 14            LDB >ZD414
1943
0570 D825 BE D4 0B           ZD825 LDX >CURFCB
1944
0571 D828 E7 88 41            STB $41,X
1945
0572 D82B 35 04               PULS B
1946
0573 D82D E7 88 40            STB $40,X
1947
0574 D830 7F D4 18            CLR >ZD418
1948
0575 D833 5F                  CLRB
1949
0576 D834 E7 88 22            STB $22,X
1950
0577 D837 39                  RTS
1951
0578                         *
1952
0579                         ** GET INFO RECORD
1953
0580                         *
1954
0581 D838 BE D4 0B           GETREC LDX >CURFCB
1955
0582 D83B E6 88 22            LDB $22,X
1956
0583 D83E 26 1D               BNE ZD85D
1957
0584 D840 BD D6 0C            JSR >ZD60C
1958
0585 D843 25 30               BCS ZD875
1959
0586 D845 BE D4 0B            LDX >CURFCB
1960
0587 D848 7D D4 18            TST >ZD418
1961
0588 D84B 26 05               BNE ZD852
1962
0589 D84D DC 44               LDD 
1963
0590 D84F FD D4 18            STD >ZD418
1964
0591 D852 86 10              ZD852 LDA #$10
1965
0592 D854 A7 88 22            STA $22,X
1966
0593 D857 EC 88 1E            LDD $1E,X
1967
0594 D85A ED 88 2F            STD $2F,X
1968
0595 D85D A6 88 22           ZD85D LDA $22,X
1969
0596 D860 A7 88 31            STA $31,X
1970
0597 D863 C6 18               LDB #$18
1971
0598 D865 34 14              ZD865 PSHS X,B
1972
0599 D867 BD D5 F5            JSR >ZD5F5
1973
0600 D86A 35 14               PULS X,B
1974
0601 D86C A7 04               STA $04,X
1975
0602 D86E 30 01               LEAX $01,X
1976
0603 D870 5A                  DECB
1977
0604 D871 26 F2               BNE ZD865
1978
0605 D873 1C FE               ANDCC #$FE
1979
0606 D875 39                 ZD875 RTS
1980
0607                         *
1981
0608                         ** PUT INFORMATION RECORD
1982
0609                         *
1983
0610 D876 BE D4 0B           PUTREC LDX >CURFCB
1984
0611 D879 A6 88 31            LDA $31,X
1985
0612 D87C A7 88 22            STA $22,X
1986
0613 D87F C6 18               LDB #$18
1987
0614 D881 34 14              ZD881 PSHS X,B
1988
0615 D883 A6 04               LDA $04,X
1989
0616 D885 BD D7 14            JSR >ZD714
1990
0617 D888 35 14               PULS X,B
1991
0618 D88A 30 01               LEAX $01,X
1992
0619 D88C 5A                  DECB
1993
0620 D88D 26 F2               BNE ZD881
1994
0621 D88F 7E D6 9F            JMP >WRSECT
1995
0622
1996
0623 D892 BE D4 0B           ZD892 LDX >CURFCB
1997
0624 D895 A6 03               LDA $03,X
1998
0625 D897 A7 88 23            STA $23,X
1999
0626 D89A B6 D4 17            LDA >ZD417
2000
0627 D89D 7D D4 1A            TST >ZD41A
2001
0628 D8A0 26 31               BNE ZD8D3
2002
0629 D8A2 A7 03               STA $03,X
2003
0630 D8A4 BE D4 15            LDX >ZD415
2004
0631 D8A7 BF D4 13            STX >ZD413
2005
0632 D8AA 8C 00 05           ZD8AA CMPX #Z0005
2006
0633 D8AD 27 0C               BEQ ZD8BB
2007
0634 D8AF 8D 22               BSR ZD8D3
2008
0635 D8B1 23 37               BLS ZD8EA
2009
0636 D8B3 BE D4 18            LDX >ZD418
2010
0637 D8B6 BF D4 13            STX >ZD413
2011
0638 D8B9 20 EF               BRA ZD8AA
2012
0639
2013
0640 D8BB BE D4 0B           ZD8BB LDX >CURFCB
2014
0641 D8BE A6 88 23            LDA $23,X
2015
0642 D8C1 A7 03               STA $03,X
2016
0643 D8C3 2A 0E               BPL ZD8D3
2017
0644 D8C5 BD DD BD           ZD8C5 JSR >NXTDRV
2018
0645 D8C8 25 36               BCS ZD900
2019
0646 D8CA 8D 07               BSR ZD8D3
2020
0647 D8CC 23 1C               BLS ZD8EA
2021
0648 D8CE BD DD AD            JSR >ZDDAD
2022
0649 D8D1 20 F2               BRA ZD8C5
2023
0650
2024
0651 D8D3 BE D4 0B           ZD8D3 LDX >CURFCB
2025
0652 D8D6 7F D4 1A            CLR >ZD41A
2026
0653 D8D9 BD D5 49            JSR >ZD549
2027
0654 D8DC BD D8 1D            JSR >OPNDIR
2028
0655 D8DF BD D8 38           ZD8DF JSR >GETREC
2029
0656 D8E2 24 07               BCC ZD8EB
2030
0657 D8E4 C1 08               CMPB #$08
2031
0658 D8E6 27 18               BEQ ZD900
2032
0659 D8E8 1A 01               ORCC #$01
2033
0660 D8EA 39                 ZD8EA RTS
2034
0661
2035
0662 D8EB BE D4 0B           ZD8EB LDX >CURFCB
2036
0663 D8EE A6 04               LDA $04,X
2037
0664 D8F0 27 0C               BEQ ZD8FE
2038
0665 D8F2 2A 02               BPL ZD8F6
2039
0666 D8F4 8D 0F               BSR ZD905
2040
0667 D8F6 BD D5 59           ZD8F6 JSR >ZD559
2041
0668 D8F9 26 E4               BNE ZD8DF
2042
0669 D8FB 1C FE               ANDCC #$FE
2043
0670 D8FD 39                  RTS
2044
0671
2045
0672 D8FE 8D 05              ZD8FE BSR ZD905
2046
0673 D900 1C FB              ZD900 ANDCC #$FB
2047
0674 D902 1C FE               ANDCC #$FE
2048
0675 D904 39                  RTS
2049
0676
2050
0677 D905 A6 88 33           ZD905 LDA $33,X
2051
0678 D908 26 0C               BNE ZD916
2052
0679 D90A EC 88 2F            LDD $2F,X
2053
0680 D90D ED 88 32            STD $32,X
2054
0681 D910 A6 88 31            LDA $31,X
2055
0682 D913 A7 88 34            STA $34,X
2056
0683 D916 39                 ZD916 RTS
2057
0684
2058
0685 D917 BD D7 87           ZD917 JSR >ZD787
2059
0686 D91A 26 17               BNE ZD933
2060
0687 D91C 8D 18               BSR ZD936
2061
0688 D91E 25 15               BCS ZD935
2062
0689 D920 C6 06               LDB #$06
2063
0690 D922 10 BE D4 0B         LDY >CURFCB
2064
0691 D926 BE D4 1B            LDX >ZD41B
2065
0692 D929 A6 A8 5D           ZD929 LDA $5D,Y
2066
0693 D92C 31 21               LEAY $01,Y
2067
0694 D92E A7 80               STA ,X+
2068
0695 D930 5A                  DECB
2069
0696 D931 26 F6               BNE ZD929
2070
0697 D933 1C FE              ZD933 ANDCC #$FE
2071
0698 D935 39                 ZD935 RTS
2072
0699
2073
0700 D936 BD D8 10           ZD936 JSR >OPNREC
2074
0701 D939 BD D6 0C            JSR >ZD60C
2075
0702 D93C 25 08               BCS ZD946
2076
0703 D93E BE D4 0B            LDX >CURFCB
2077
0704 D941 C6 10               LDB #$10
2078
0705 D943 E7 88 22            STB $22,X
2079
0706 D946 39                 ZD946 RTS
2080
0707
2081
0708 D947 BD D7 87           ZD947 JSR >ZD787
2082
0709 D94A 8D EA               BSR ZD936
2083
0710 D94C 25 F8               BCS ZD946
2084
0711 D94E C6 06               LDB #$06
2085
0712 D950 10 BE D4 0B         LDY >CURFCB
2086
0713 D954 BE D4 1B            LDX >ZD41B
2087
0714 D957 A6 80              ZD957 LDA ,X+
2088
0715 D959 A7 A8 5D            STA $5D,Y
2089
0716 D95C 31 21               LEAY $01,Y
2090
0717 D95E 5A                  DECB
2091
0718 D95F 26 F6               BNE ZD957
2092
0719 D961 BD D6 9F            JSR >WRSECT
2093
0720 D964 24 E0               BCC ZD946
2094
0721 D966 7E DB C1            JMP >ZDBC1
2095
0722                         *
2096
0723                         **
2097
0724                         *
2098
0725 D969 BE D4 0B           RESV1 LDX >CURFCB
2099
0726 D96C 86 02               LDA #$02
2100
0727 D96E A7 02               STA $02,X
2101
0728 D970 EC 88 2F            LDD $2F,X
2102
0729 D973 ED 88 1E            STD $1E,X
2103
0730 D976 BD D6 41            JSR >RDSECT
2104
0731 D979 25 08               BCS ZD983
2105
0732 D97B BD D8 76            JSR >PUTREC
2106
0733 D97E 24 05               BCC ZD985
2107
0734 D980 7E DB C1            JMP >ZDBC1
2108
0735
2109
0736 D983 C6 0A              ZD983 LDB #$0A
2110
0737 D985 39                 ZD985 RTS
2111
0738                         *
2112
0739                         ** OPEN FOR READ
2113
0740                         *
2114
0741 D986 BD D4 FA           OPENRD JSR >ZD4FA
2115
0742 D989 25 3D               BCS ZD9C8
2116
0743 D98B BD D8 92            JSR >ZD892
2117
0744 D98E 25 38               BCS ZD9C8
2118
0745 D990 26 3B               BNE ZD9CD
2119
0746 D992 BE D4 0B            LDX >CURFCB
2120
0747 D995 7D D4 1A            TST >ZD41A
2121
0748 D998 27 06               BEQ ZD9A0
2122
0749 D99A A6 0F               LDA $0F,X
2123
0750 D99C 85 20               BITA #$20
2124
0751 D99E 26 29               BNE ZD9C9
2125
0752 D9A0 BD DC C0           ZD9A0 JSR >ZDCC0
2126
0753 D9A3 25 2A               BCS ZD9CF
2127
0754 D9A5 EC 88 11            LDD $11,X
2128
0755 D9A8 ED 88 40            STD $40,X
2129
0756 D9AB BD DA 76            JSR >ZDA76
2130
0757 D9AE E6 88 17            LDB $17,X
2131
0758 D9B1 27 13               BEQ ZD9C6
2132
0759 D9B3 34 04              ZD9B3 PSHS B
2133
0760 D9B5 BD D6 0C            JSR >ZD60C
2134
0761 D9B8 35 04               PULS B
2135
0762 D9BA 25 0C               BCS ZD9C8
2136
0763 D9BC 5A                  DECB
2137
0764 D9BD 26 F4               BNE ZD9B3
2138
0765 D9BF BE D4 0B            LDX >CURFCB
2139
0766 D9C2 5F                  CLRB
2140
0767 D9C3 E7 88 22            STB $22,X
2141
0768 D9C6 1C FE              ZD9C6 ANDCC #$FE
2142
0769 D9C8 39                 ZD9C8 RTS
2143
0770
2144
0771 D9C9 C6 11              ZD9C9 LDB #$11
2145
0772 D9CB 20 02               BRA ZD9CF
2146
0773
2147
0774 D9CD C6 04              ZD9CD LDB #$04
2148
0775 D9CF 34 04              ZD9CF PSHS B
2149
0776 D9D1 BD D5 0C            JSR >ZD50C
2150
0777 D9D4 35 04               PULS B
2151
0778 D9D6 1A 01               ORCC #$01
2152
0779 D9D8 39                  RTS
2153
0780
2154
0781 D9D9 BE D4 0B           OPENWR LDX >CURFCB
2155
0782 D9DC 6D 03               TST $03,X
2156
0783 D9DE 2A 08               BPL ZD9E8
2157
0784 D9E0 BD DD BD            JSR >NXTDRV
2158
0785 D9E3 24 03               BCC ZD9E8
2159
0786 D9E5 C6 10               LDB #$10
2160
0787 D9E7 39                  RTS
2161
0788
2162
0789 D9E8 BD D4 FA           ZD9E8 JSR >ZD4FA
2163
0790 D9EB 25 E2               BCS ZD9CF
2164
0791 D9ED BD D5 37            JSR >ZD537
2165
0792 D9F0 BD D9 17            JSR >ZD917
2166
0793 D9F3 25 DA               BCS ZD9CF
2167
0794 D9F5 BD D8 92            JSR >ZD892
2168
0795 D9F8 25 D5               BCS ZD9CF
2169
0796 D9FA 26 04               BNE ZDA00
2170
0797 D9FC C6 03               LDB #$03
2171
0798 D9FE 20 CF               BRA ZD9CF
2172
0799
2173
0800 DA00 BD DC C0           ZDA00 JSR >ZDCC0
2174
0801 DA03 25 CA               BCS ZD9CF
2175
0802 DA05 BE D4 0B            LDX >CURFCB
2176
0803 DA08 C6 0A               LDB #$0A
2177
0804 DA0A 6F 0F              ZDA0A CLR $0F,X
2178
0805 DA0C 30 01               LEAX $01,X
2179
0806 DA0E 5A                  DECB
2180
0807 DA0F 26 F9               BNE ZDA0A
2181
0808 DA11 BE D4 0B            LDX >CURFCB
2182
0809 DA14 EC 88 32            LDD $32,X
2183
0810 DA17 27 27               BEQ ZDA40
2184
0811 DA19 ED 88 2F            STD $2F,X
2185
0812 DA1C A6 88 34            LDA $34,X
2186
0813 DA1F A7 88 31            STA $31,X
2187
0814 DA22 FC CC 0E            LDD >DATERG
2188
0815 DA25 ED 88 19            STD $19,X
2189
0816 DA28 B6 CC 10            LDA >YEAR
2190
0817 DA2B A7 88 1B            STA $1B,X
2191
0818 DA2E BD DD AD            JSR >ZDDAD
2192
0819 DA31 BD D9 69            JSR >RESV1
2193
0820 DA34 25 99               BCS ZD9CF
2194
0821 DA36 8D 3E               BSR ZDA76
2195
0822 DA38 86 04               LDA #$04
2196
0823 DA3A A7 88 22            STA $22,X
2197
0824 DA3D 1C FE               ANDCC #$FE
2198
0825 DA3F 39                  RTS
2199
0826
2200
0827 DA40 BE D4 0B           ZDA40 LDX >CURFCB
2201
0828 DA43 6F 88 17            CLR $17,X
2202
0829 DA46 6C 88 12            INC $12,X
2203
0830 DA49 EC 88 2F            LDD $2F,X
2204
0831 DA4C BD D6 20            JSR >ZD620
2205
0832 DA4F 25 0D               BCS ZDA5E
2206
0833 DA51 BD D7 72            JSR >ZD772
2207
0834 DA54 25 08               BCS ZDA5E
2208
0835 DA56 BD D6 9F            JSR >WRSECT
2209
0836 DA59 24 06               BCC ZDA61
2210
0837 DA5B BD DB C1            JSR >ZDBC1
2211
0838 DA5E 7E D9 CF           ZDA5E JMP >ZD9CF
2212
0839
2213
0840 DA61 BE D4 0B           ZDA61 LDX >CURFCB
2214
0841 DA64 EC 88 1E            LDD $1E,X
2215
0842 DA67 ED 88 32            STD $32,X
2216
0843 DA6A 86 10               LDA #$10
2217
0844 DA6C A7 88 34            STA $34,X
2218
0845 DA6F BD D9 47            JSR >ZD947
2219
0846 DA72 25 EA               BCS ZDA5E
2220
0847 DA74 20 8A               BRA ZDA00
2221
0848
2222
0849 DA76 BE D4 0B           ZDA76 LDX >CURFCB
2223
0850 DA79 A6 84               LDA ,X
2224
0851 DA7B A7 02               STA $02,X
2225
0852 DA7D 6F 84               CLR ,X
2226
0853 DA7F 6F 88 3B            CLR $3B,X
2227
0854 DA82 4F                  CLRA
2228
0855 DA83 A7 88 22            STA $22,X
2229
0856 DA86 39                  RTS
2230
0857                         *
2231
0858                         ** READ/WRITE NEXT SECTOR
2232
0859                         *
2233
0860 DA87 8D 28              NXTSEC BSR ZDAB1
2234
0861 DA89 25 0E               BCS ZDA99
2235
0862 DA8B 6F 84               CLR ,X
2236
0863 DA8D 44                  LSRA
2237
0864 DA8E 10 25 FB 7A         LBCS ZD60C
2238
0865 DA92 C6 04               LDB #$04
2239
0866 DA94 E7 88 22            STB $22,X
2240
0867 DA97 1C FE               ANDCC #$FE
2241
0868 DA99 39                 ZDA99 RTS
2242
0869
2243
0870 DA9A BE D4 0B           ZDA9A LDX >CURFCB
2244
0871 DA9D A6 02               LDA $02,X
2245
0872 DA9F 81 83               CMPA #$83
2246
0873 DAA1 26 0B               BNE ZDAAE
2247
0874 DAA3 86 03               LDA #$03
2248
0875 DAA5 A7 02               STA $02,X
2249
0876 DAA7 BD D6 9F           ZDAA7 JSR >WRSECT
2250
0877 DAAA 10 25 01 13         LBCS ZDBC1
2251
0878 DAAE 1C FE              ZDAAE ANDCC #$FE
2252
0879 DAB0 39                  RTS
2253
0880
2254
0881 DAB1 8D E7              ZDAB1 BSR ZDA9A
2255
0882 DAB3 25 0D               BCS ZDAC2
2256
0883 DAB5 BE D4 0B            LDX >CURFCB
2257
0884 DAB8 A6 02               LDA $02,X
2258
0885 DABA 81 03               CMPA #$03
2259
0886 DABC 23 F0               BLS ZDAAE
2260
0887 DABE C6 12               LDB #$12
2261
0888 DAC0 1A 01               ORCC #$01
2262
0889 DAC2 39                 ZDAC2 RTS
2263
0890
2264
0891 DAC3 8D EC              CLOSE BSR ZDAB1
2265
0892 DAC5 25 31               BCS ZDAF8
2266
0893 DAC7 81 02               CMPA #$02
2267
0894 DAC9 27 08               BEQ ZDAD3
2268
0895 DACB BE D4 0B           ZDACB LDX >CURFCB
2269
0896 DACE 6F 02               CLR $02,X
2270
0897 DAD0 7E D5 0C            JMP >ZD50C
2271
0898
2272
0899 DAD3 A6 88 12           ZDAD3 LDA $12,X
2273
0900 DAD6 26 05               BNE ZDADD
2274
0901 DAD8 BD DB A7            JSR >ZDBA7
2275
0902 DADB 20 19               BRA ZDAF6
2276
0903
2277
0904 DADD 8D C8              ZDADD BSR ZDAA7
2278
0905 DADF 25 17               BCS ZDAF8
2279
0906 DAE1 BE D4 0B            LDX >CURFCB
2280
0907 DAE4 6D 88 17            TST $17,X
2281
0908 DAE7 27 05               BEQ ZDAEE
2282
0909 DAE9 BD DC 98            JSR >ZDC98
2283
0910 DAEC 25 0A               BCS ZDAF8
2284
0911 DAEE BD D9 69           ZDAEE JSR >RESV1
2285
0912 DAF1 25 05               BCS ZDAF8
2286
0913 DAF3 BD D9 47            JSR >ZD947
2287
0914 DAF6 24 D3              ZDAF6 BCC ZDACB
2288
0915 DAF8 39                 ZDAF8 RTS
2289
0916                         *
2290
0917                         ** OPEN FOR UPDATE
2291
0918                         *
2292
0919 DAF9 BD D9 86           OPENUD JSR >OPENRD
2293
0920 DAFC 25 28               BCS ZDB26
2294
0921 DAFE BD D6 0C            JSR >ZD60C
2295
0922 DB01 25 23               BCS ZDB26
2296
0923 DB03 86 03               LDA #$03
2297
0924 DB05 20 18               BRA ZDB1F
2298
0925                         *
2299
0926                         **
2300
0927                         *
2301
0928 DB07 BD D9 86           RESV3 JSR >OPENRD
2302
0929 DB0A 25 1A               BCS ZDB26
2303
0930 DB0C BE D4 0B            LDX >CURFCB
2304
0931 DB0F A6 0F               LDA $0F,X
2305
0932 DB11 85 80               BITA #$80
2306
0933 DB13 26 12               BNE ZDB27
2307
0934 DB15 EC 88 13            LDD $13,X
2308
0935 DB18 BD D6 20            JSR >ZD620
2309
0936 DB1B 25 09               BCS ZDB26
2310
0937 DB1D 86 02               LDA #$02
2311
0938 DB1F BE D4 0B           ZDB1F LDX >CURFCB
2312
0939 DB22 A7 02               STA $02,X
2313
0940 DB24 1C FE               ANDCC #$FE
2314
0941 DB26 39                 ZDB26 RTS
2315
0942
2316
0943 DB27 C6 0B              ZDB27 LDB #$0B
2317
0944 DB29 1A 01               ORCC #$01
2318
0945 DB2B 39                  RTS
2319
0946                         *
2320
0947                         ** RENAME FILE
2321
0948                         *
2322
0949 DB2C 8D 35              RENAME BSR ZDB63
2323
0950 DB2E BD D8 92            JSR >ZD892
2324
0951 DB31 25 2A               BCS ZDB5D
2325
0952 DB33 27 24               BEQ ZDB59
2326
0953 DB35 BE D4 0B            LDX >CURFCB
2327
0954 DB38 C6 0B               LDB #$0B
2328
0955 DB3A A6 88 24           ZDB3A LDA $24,X
2329
0956 DB3D A7 04               STA $04,X
2330
0957 DB3F 30 01               LEAX $01,X
2331
0958 DB41 5A                  DECB
2332
0959 DB42 26 F6               BNE ZDB3A
2333
0960 DB44 8D 4D               BSR ZDB93
2334
0961 DB46 25 15               BCS ZDB5D
2335
0962 DB48 BE D4 0B            LDX >CURFCB
2336
0963 DB4B A6 0F               LDA $0F,X
2337
0964 DB4D 85 80               BITA #$80
2338
0965 DB4F 26 D6               BNE ZDB27
2339
0966 DB51 85 60               BITA #$60
2340
0967 DB53 26 09               BNE ZDB5E
2341
0968 DB55 8D 0C               BSR ZDB63
2342
0969 DB57 20 55               BRA ZDBAE
2343
0970
2344
0971 DB59 C6 03              ZDB59 LDB #$03
2345
0972 DB5B 1A 01               ORCC #$01
2346
0973 DB5D 39                 ZDB5D RTS
2347
0974 DB5E C6 0C              ZDB5E LDB #$0C
2348
0975 DB60 1A 01               ORCC #$01
2349
0976 DB62 39                  RTS
2350
0977
2351
0978 DB63 BE D4 0B           ZDB63 LDX >CURFCB
2352
0979 DB66 86 0B               LDA #$0B
2353
0980 DB68 B7 D4 11            STA >ZD411
2354
0981 DB6B A6 04              ZDB6B LDA $04,X
2355
0982 DB6D E6 88 35            LDB $35,X
2356
0983 DB70 A7 88 35            STA $35,X
2357
0984 DB73 E7 04               STB $04,X
2358
0985 DB75 30 01               LEAX $01,X
2359
0986 DB77 7A D4 11            DEC >ZD411
2360
0987 DB7A 26 EF               BNE ZDB6B
2361
0988 DB7C BE D4 0B            LDX >CURFCB
2362
0989 DB7F A6 0C               LDA $0C,X
2363
0990 DB81 26 0C               BNE ZDB8F
2364
0991 DB83 C6 03               LDB #$03
2365
0992 DB85 A6 88 3D           ZDB85 LDA $3D,X
2366
0993 DB88 A7 0C               STA $0C,X
2367
0994 DB8A 30 01               LEAX $01,X
2368
0995 DB8C 5A                  DECB
2369
0996 DB8D 26 F6               BNE ZDB85
2370
0997 DB8F BE D4 0B           ZDB8F LDX >CURFCB
2371
0998 DB92 39                  RTS
2372
0999
2373
1000 DB93 8D CE              ZDB93 BSR ZDB63
2374
1001 DB95 BD D8 92           ZDB95 JSR >ZD892
2375
1002 DB98 25 07               BCS ZDBA1
2376
1003 DB9A 26 06               BNE ZDBA2
2377
1004 DB9C BE D4 0B            LDX >CURFCB
2378
1005 DB9F 1C FE               ANDCC #$FE
2379
1006 DBA1 39                 ZDBA1 RTS
2380
1007
2381
1008 DBA2 C6 04              ZDBA2 LDB #$04
2382
1009 DBA4 1A 01               ORCC #$01
2383
1010 DBA6 39                  RTS
2384
1011
2385
1012 DBA7 BE D4 0B           ZDBA7 LDX >CURFCB
2386
1013 DBAA 86 FF               LDA #$FF
2387
1014 DBAC A7 04               STA $04,X
2388
1015 DBAE BD D9 69           ZDBAE JSR >RESV1
2389
1016 DBB1 BE D4 0B            LDX >CURFCB
2390
1017 DBB4 86 00               LDA #$00
2391
1018 DBB6 A7 02               STA $02,X
2392
1019 DBB8 39                  RTS
2393
1020
2394
1021 DBB9 ED 88 40           ZDBB9 STD $40,X
2395
1022 DBBC BD D6 9F            JSR >WRSECT
2396
1023 DBBF 24 14               BCC ZDBD5
2397
1024 DBC1 C5 40              ZDBC1 BITB #$40
2398
1025 DBC3 26 08               BNE ZDBCD
2399
1026 DBC5 C5 80               BITB #$80
2400
1027 DBC7 27 0A               BEQ ZDBD3
2401
1028 DBC9 C6 10               LDB #$10
2402
1029 DBCB 20 06               BRA ZDBD3
2403
1030 DBCD C6 0B              ZDBCD LDB #$0B
2404
1031 DBCF 20 02               BRA ZDBD3
2405
1032
2406
1033 DBD1 C6 0A               LDB #$0A
2407
1034 DBD3 1A 01              ZDBD3 ORCC #$01
2408
1035 DBD5 39                 ZDBD5 RTS
2409
1036                         *
2410
1037                         ** DELETE FILE
2411
1038                         *
2412
1039 DBD6 BD D9 17           DELETE JSR >ZD917
2413
1040 DBD9 25 5E               BCS ZDC39
2414
1041 DBDB 8D B8               BSR ZDB95
2415
1042 DBDD 25 5A               BCS ZDC39
2416
1043 DBDF BE D4 0B            LDX >CURFCB
2417
1044 DBE2 A6 0F               LDA $0F,X
2418
1045 DBE4 85 80               BITA #$80
2419
1046 DBE6 26 52               BNE ZDC3A
2420
1047 DBE8 85 60               BITA #$60
2421
1048 DBEA 26 52               BNE ZDC3E
2422
1049 DBEC BD D7 87            JSR >ZD787
2423
1050 DBEF BE D4 1B            LDX >ZD41B
2424
1051 DBF2 EC 02               LDD $02,X
2425
1052 DBF4 26 0F               BNE ZDC05
2426
1053 DBF6 BE D4 0B            LDX >CURFCB
2427
1054 DBF9 EC 88 11            LDD $11,X
2428
1055 DBFC 27 33               BEQ ZDC31
2429
1056 DBFE BE D4 1B            LDX >ZD41B
2430
1057 DC01 ED 84               STD ,X
2431
1058 DC03 20 14               BRA ZDC19
2432
1059
2433
1060 DC05 BE D4 0B           ZDC05 LDX >CURFCB
2434
1061 DC08 BD D6 20            JSR >ZD620
2435
1062 DC0B 25 2C               BCS ZDC39
2436
1063 DC0D BE D4 0B            LDX >CURFCB
2437
1064 DC10 EC 88 11            LDD $11,X
2438
1065 DC13 27 1C               BEQ ZDC31
2439
1066 DC15 8D A2               BSR ZDBB9
2440
1067 DC17 25 20               BCS ZDC39
2441
1068 DC19 BE D4 0B           ZDC19 LDX >CURFCB
2442
1069 DC1C EC 88 13            LDD $13,X
2443
1070 DC1F BE D4 1B            LDX >ZD41B
2444
1071 DC22 ED 02               STD $02,X
2445
1072 DC24 BE D4 0B            LDX >CURFCB
2446
1073 DC27 EC 88 15            LDD $15,X
2447
1074 DC2A BE D4 1B            LDX >ZD41B
2448
1075 DC2D E3 04               ADDD $04,X
2449
1076 DC2F ED 04               STD $04,X
2450
1077 DC31 BD DB A7           ZDC31 JSR >ZDBA7
2451
1078 DC34 25 03               BCS ZDC39
2452
1079 DC36 BD D9 47            JSR >ZD947
2453
1080 DC39 39                 ZDC39 RTS
2454
1081
2455
1082 DC3A C6 0B              ZDC3A LDB #$0B
2456
1083 DC3C 20 02               BRA ZDC40
2457
1084 DC3E C6 0C              ZDC3E LDB #$0C
2458
1085 DC40 1A 01              ZDC40 ORCC #$01
2459
1086 DC42 39                  RTS
2460
1087
2461
1088 DC43 EC 88 1E           ZDC43 LDD $1E,X
2462
1089 DC46 5C                  INCB
2463
1090 DC47 E1 88 3C            CMPB $3C,X
2464
1091 DC4A 23 03               BLS ZDC4F
2465
1092 DC4C C6 01               LDB #$01
2466
1093 DC4E 4C                  INCA
2467
1094 DC4F 10 A3 88 13        ZDC4F CMPD $13,X
2468
1095 DC53 26 0E               BNE ZDC63
2469
1096 DC55 A6 88 37            LDA $37,X
2470
1097 DC58 81 FF               CMPA #$FF
2471
1098 DC5A 27 07               BEQ ZDC63
2472
1099 DC5C 4C                  INCA
2473
1100 DC5D A7 88 37            STA $37,X
2474
1101 DC60 1C FE               ANDCC #$FE
2475
1102 DC62 39                  RTS
2476
1103
2477
1104 DC63 8D 33              ZDC63 BSR ZDC98
2478
1105 DC65 25 30               BCS ZDC97
2479
1106 DC67 BE D4 0B            LDX >CURFCB
2480
1107 DC6A A6 88 3A            LDA $3A,X
2481
1108 DC6D 8B 03               ADDA #$03
2482
1109 DC6F 26 16               BNE ZDC87
2483
1110 DC71 EC 88 1E            LDD $1E,X
2484
1111 DC74 10 A3 88 11         CMPD $11,X
2485
1112 DC78 27 05               BEQ ZDC7F
2486
1113 DC7A C6 17               LDB #$17
2487
1114 DC7C 1A 01               ORCC #$01
2488
1115 DC7E 39                  RTS
2489
1116
2490
1117 DC7F EC 88 40           ZDC7F LDD $40,X
2491
1118 DC82 ED 88 38           ZDC82 STD $38,X
2492
1119 DC85 86 04               LDA #$04
2493
1120 DC87 A7 88 3A           ZDC87 STA $3A,X
2494
1121 DC8A EC 88 13            LDD $13,X
2495
1122 DC8D ED 88 35            STD $35,X
2496
1123 DC90 86 01               LDA #$01
2497
1124 DC92 A7 88 37            STA $37,X
2498
1125 DC95 1C FE               ANDCC #$FE
2499
1126 DC97 39                 ZDC97 RTS
2500
1127
2501
1128 DC98 EC 88 38           ZDC98 LDD $38,X
2502
1129 DC9B BD D6 20            JSR >ZD620
2503
1130 DC9E 25 F7               BCS ZDC97
2504
1131 DCA0 BE D4 0B            LDX >CURFCB
2505
1132 DCA3 1F 12               TFR X,Y
2506
1133 DCA5 E6 88 3A            LDB $3A,X
2507
1134 DCA8 3A                  ABX
2508
1135 DCA9 C6 03               LDB #$03
2509
1136 DCAB A6 A8 35           ZDCAB LDA $35,Y
2510
1137 DCAE 31 21               LEAY $01,Y
2511
1138 DCB0 A7 88 40            STA $40,X
2512
1139 DCB3 30 01               LEAX $01,X
2513
1140 DCB5 5A                  DECB
2514
1141 DCB6 26 F3               BNE ZDCAB
2515
1142 DCB8 BD D6 9F            JSR >WRSECT
2516
1143 DCBB 24 DA               BCC ZDC97
2517
1144 DCBD 7E DB C1            JMP >ZDBC1
2518
1145
2519
1146 DCC0 BD D8 10           ZDCC0 JSR >OPNREC
2520
1147 DCC3 BD D6 0C            JSR >ZD60C
2521
1148 DCC6 25 46               BCS ZDD0E
2522
1149 DCC8 BE D4 0B            LDX >CURFCB
2523
1150 DCCB 4F                  CLRA
2524
1151 DCCC 5F                  CLRB
2525
1152 DCCD ED 88 20            STD $20,X
2526
1153 DCD0 A6 88 67            LDA $67,X
2527
1154 DCD3 A7 88 3C            STA $3C,X
2528
1155 DCD6 5F                  CLRB
2529
1156 DCD7 6F 88 40           ZDCD7 CLR $40,X
2530
1157 DCDA 30 01               LEAX $01,X
2531
1158 DCDC 5A                  DECB
2532
1159 DCDD 26 F8               BNE ZDCD7
2533
1160 DCDF BE D4 0B            LDX >CURFCB
2534
1161 DCE2 1C FE               ANDCC #$FE
2535
1162 DCE4 39                  RTS
2536
1163                         *
2537
1164                         ** BACKUP ONE RECORD
2538
1165                         *
2539
1166 DCE5 BE D4 0B           BAKREC LDX >CURFCB
2540
1167 DCE8 A6 88 17            LDA $17,X
2541
1168 DCEB 27 1D               BEQ ZDD0A
2542
1169 DCED EC 88 20            LDD $20,X
2543
1170 DCF0 83 00 01            SUBD #$0001
2544
1171 DCF3 2A 03               BPL ZDCF8
2545
1172 DCF5 7E DD 9A            JMP >ZDD9A
2546
1173                         *
2547
1174                         ** POSITION TO RECORD N
2548
1175                         *
2549
1176 DCF8 ED 88 20           ZDCF8 STD $20,X
2550
1177 DCFB BD DA B1           POSREC JSR >ZDAB1
2551
1178 DCFE 25 0E               BCS ZDD0E
2552
1179 DD00 46                  RORA
2553
1180 DD01 24 07               BCC ZDD0A
2554
1181 DD03 6F 84               CLR ,X
2555
1182 DD05 A6 88 17            LDA $17,X
2556
1183 DD08 26 05               BNE ZDD0F
2557
1184 DD0A C6 12              ZDD0A LDB #$12
2558
1185 DD0C 1A 01               ORCC #$01
2559
1186 DD0E 39                 ZDD0E RTS
2560
1187
2561
1188 DD0F 7F D4 11           ZDD0F CLR >ZD411
2562
1189 DD12 EC 88 11            LDD $11,X
2563
1190 DD15 10 AE 88 20         LDY $20,X
2564
1191 DD19 27 6A               BEQ ZDD85
2565
1192 DD1B BD DD 9F            JSR >ZDD9F
2566
1193 DD1E 25 EE               BCS ZDD0E
2567
1194 DD20 4F                  CLRA
2568
1195 DD21 5F                  CLRB
2569
1196 DD22 6D 02              ZDD22 TST $02,X
2570
1197 DD24 27 74               BEQ ZDD9A
2571
1198 DD26 EB 02               ADDB $02,X
2572
1199 DD28 89 00               ADCA #$00
2573
1200 DD2A BF D4 0F            STX >ZD40F
2574
1201 DD2D BE D4 0B            LDX >CURFCB
2575
1202 DD30 10 A3 88 20         CMPD $20,X
2576
1203 DD34 24 2C               BCC ZDD62
2577
1204 DD36 BE D4 0F            LDX >ZD40F
2578
1205 DD39 30 03               LEAX $03,X
2579
1206 DD3B 34 02               PSHS A
2580
1207 DD3D B6 D4 11            LDA >ZD411
2581
1208 DD40 4C                  INCA
2582
1209 DD41 B7 D4 11            STA >ZD411
2583
1210 DD44 81 54               CMPA #$54
2584
1211 DD46 27 08               BEQ ZDD50
2585
1212 DD48 81 A8               CMPA #$A8
2586
1213 DD4A 35 02               PULS A
2587
1214 DD4C 27 4C               BEQ ZDD9A
2588
1215 DD4E 20 D2               BRA ZDD22
2589
1216
2590
1217 DD50 34 04              ZDD50 PSHS B
2591
1218 DD52 BE D4 0B            LDX >CURFCB
2592
1219 DD55 EC 88 40            LDD $40,X
2593
1220 DD58 8D 45               BSR ZDD9F
2594
1221 DD5A 25 3E               BCS ZDD9A
2595
1222 DD5C 35 04               PULS B
2596
1223 DD5E 35 02               PULS A
2597
1224 DD60 20 C0               BRA ZDD22
2598
1225
2599
1226 DD62 A3 88 20           ZDD62 SUBD $20,X
2600
1227 DD65 BE D4 0F            LDX >ZD40F
2601
1228 DD68 A6 02               LDA $02,X
2602
1229 DD6A 34 04               PSHS B
2603
1230 DD6C A0 E0               SUBA ,S+
2604
1231 DD6E 4A                  DECA
2605
1232 DD6F 1F 89               TFR A,B
2606
1233 DD71 A6 84               LDA ,X
2607
1234 DD73 EB 01               ADDB $01,X
2608
1235 DD75 BE D4 0B            LDX >CURFCB
2609
1236 DD78 25 05               BCS ZDD7F
2610
1237 DD7A E1 88 3C           ZDD7A CMPB $3C,X
2611
1238 DD7D 23 06               BLS ZDD85
2612
1239 DD7F E0 88 3C           ZDD7F SUBB $3C,X
2613
1240 DD82 4C                  INCA
2614
1241 DD83 20 F5               BRA ZDD7A
2615
1242
2616
1243 DD85 BD D6 20           ZDD85 JSR >ZD620
2617
1244 DD88 25 14               BCS ZDD9E
2618
1245 DD8A BE D4 0B            LDX >CURFCB
2619
1246 DD8D EC 88 42            LDD $42,X
2620
1247 DD90 10 A3 88 20         CMPD $20,X
2621
1248 DD94 27 14               BEQ ZDDAA
2622
1249 DD96 C6 19               LDB #$19
2623
1250 DD98 20 02               BRA ZDD9C
2624
1251
2625
1252 DD9A C6 18              ZDD9A LDB #$18
2626
1253 DD9C 1A 01              ZDD9C ORCC #$01
2627
1254 DD9E 39                 ZDD9E RTS
2628
1255
2629
1256 DD9F BD D6 20           ZDD9F JSR >ZD620
2630
1257 DDA2 25 08               BCS ZDDAC
2631
1258 DDA4 BE D4 0B            LDX >CURFCB
2632
1259 DDA7 C6 44               LDB #$44
2633
1260 DDA9 3A                  ABX
2634
1261 DDAA 1C FE              ZDDAA ANDCC #$FE
2635
1262 DDAC 39                 ZDDAC RTS
2636
1263
2637
1264 DDAD BE D4 0B           ZDDAD LDX >CURFCB
2638
1265 DDB0 C6 0B               LDB #$0B
2639
1266 DDB2 A6 88 24           ZDDB2 LDA $24,X
2640
1267 DDB5 A7 04               STA $04,X
2641
1268 DDB7 30 01               LEAX $01,X
2642
1269 DDB9 5A                  DECB
2643
1270 DDBA 26 F6               BNE ZDDB2
2644
1271 DDBC 39                  RTS
2645
1272                         *
2646
1273                         ** FIND NEXT DRIVE
2647
1274                         *
2648
1275 DDBD BE D4 0B           NXTDRV LDX >CURFCB
2649
1276 DDC0 A6 03               LDA $03,X
2650
1277 DDC2 4C                  INCA
2651
1278 DDC3 81 04               CMPA #$04
2652
1279 DDC5 24 0F               BCC ZDDD6
2653
1280 DDC7 A7 03               STA $03,X
2654
1281 DDC9 26 05               BNE ZDDD0
2655
1282 DDCB BD DE 0F            JSR >DRVRDY
2656
1283 DDCE 20 03               BRA ZDDD3
2657
1284
2658
1285 DDD0 BD DE 12           ZDDD0 JSR >QUICK
2659
1286 DDD3 25 E8              ZDDD3 BCS NXTDRV
2660
1287 DDD5 39                  RTS
2661
1288
2662
1289 DDD6 C6 10              ZDDD6 LDB #$10
2663
1290 DDD8 1A 01               ORCC #$01
2664
1291 DDDA 39                  RTS
2665
0011                          END
2666
0000                          INCLUDE "f9-monex.txt"
2667
0001                         *
2668
0002                         ** FLEX 9 DISK DRIVERS
2669
0003                         *
2670
0004                         * FOR SYS09BUG ON THE
2671
0005                         * DIGILENT SPARTAN 3 STARTER BOARD AND
2672
0006                         * TERASIC CYCLONE 2 DE1 BOARD
2673
0007                         * WITH I/O MAPPED AT $XE000
2674
0008                         * AND ROM MAPPED AT $XF000
2675
0009                         * THE DIGILENT SPARTAN 3 STARTER BOARD HAS 1MBYTE OF SRAM
2676
0010                         * THE TERASIC CYCLONE 2 DE1 BOARD HAS 512KBYTE OF SRAM
2677
0011                         * THE FIRST 64K IS USED BY FLEX,
2678
0012                         * THE SECOND 128K IS USED AS A ROM DISK
2679
0013                         * THE REMAINING RAM IS USED FOR A RAM DISK
2680
0014                         *
2681
0015                         *
2682
0016 0001                    CFLAG   EQU $01     CARRY FLAG
2683
0017 0002                    VFLAG   EQU $02     OVERFLOW FLAG
2684
0018 0004                    ZFLAG   EQU $04     ZERO FLAG
2685
0019 0008                    NFLAG   EQU $08     NEGATIVE FLAG
2686
0020 0010                    IFLAG   EQU $10     IRQ MASK CC
2687
0021 0020                    HFLAG   EQU $20     HALF CARRY
2688
0022 0040                    FFLAG   EQU $40     FIRQ MASK CC
2689
0023 0080                    EFLAG   EQU $80     ENTIRE FLAG
2690
0024                         *
2691
0025 0000                    MAPPAG  EQU $00     PAGE $0000 DAT ADDRESS
2692
0026 FFF0                    DATREG  EQU IC11    DAT REGISTERS
2693
0027                         *
2694
0028                         * Serial Port
2695
0029                         *
2696
0030 E000                    ACIAC1  EQU ACIAS
2697
0031 E001                    ACIAD1  EQU ACIAS+1
2698
0032 04E2                    DELCON  EQU 1250    Delay (Processor clock in MHz * 50)
2699
0033                         *
2700
0034                         * XMODEM Control characters
2701
0035                         *
2702
0036 0001                    SOH     EQU $01
2703
0037 0004                    EOT     EQU $04
2704
0038 0006                    ACK     EQU $06
2705
0039 0015                    NAK     EQU $15
2706
0040 0018                    CAN     EQU $18
2707
0041                         *
2708
0042                         * DRIVE GEOMETRY
2709
0043                         *
2710
0044 000E                    EMAXSEC EQU 14     ROM DISK
2711
0045 0030                    EMAXTRK EQU 48     3  * 16 * 14 * 256 = 172,032 Bytes
2712
0046 0292                    ETOTSEC EQU EMAXTRK*EMAXSEC-EMAXSEC
2713
0047                         *
2714
0048 000E                    RMAXSEC EQU 14     RAM DISK
2715
0049                         *RMAXTRK EQU 192    12 * 16 * 14 * 256 = 688,128 Bytes Digilent Spartan 3
2716
0050 0040                    RMAXTRK EQU 64    4 * 16 * 14 * 256 = 229,376 Bytes Terasic Cyclone 2
2717
0051 0372                    RTOTSEC EQU RMAXTRK*RMAXSEC-RMAXSEC
2718
0052                         *
2719
0053                         * DRIVE TYPES
2720
0054                         *
2721
0055 0000                    DTYPROM EQU 0      ROM DISK
2722
0056 0001                    DTYPRAM EQU 1      RAM DISK
2723
0057 0002                    DTYPFLS EQU 2      FLASH DISK
2724
0058 0003                    DTYPNET EQU 3      FLEXNET DISK
2725
0059                         *
2726
0060 DE00                           ORG   $DE00
2727
0061                         *
2728
0062                         * DISK DRIVER JUMP TABLE LAST UPDATE: 22/12/2006
2729
0063                         * Disk driver for RAM Disk.
2730
0064                         *
2731
0065                         * 14 SECTORS PER TRACK
2732
0066                         * 16 * N TRACKS PER DISK
2733
0067                         *
2734
0068                         * ROM DISK OCCUPIES $10000 - $1E000 ... $30000 - $3E000
2735
0069                         * RAM DISK OCCUPIES $40000 - $4E000 ... $F0000 - $FE000
2736
0070                         * Track Buffer page mapped at $E000 - $EFFF
2737
0071                         * MAPPAG = $00 = 0 x $1000 (4 K pages)
2738
0072
2739
0073                         * ON SWTPC ROM AT $XF000 AND IO AT $XE000
2740
0074                         * APPEARS THROUGHOUT THE MEMORY SO MUST BE SKIPPED OVER
2741
0075                         * WHEN USING RAM AS A RAMDISK.
2742
0076                         * THE MSN OF THE TRACK MAPS INTO THE MSN OF THE DAT
2743
0077                         * THE LSN OF THE TRACK NUMBER INDEXES INTO THE 4K RAM PAGE
2744
0078                         * THE SECTOR MAPS INTO THE LSN OF THE DAT WHICH IS INVERTED
2745
0079                         *
2746
0080                         *
2747
0081                         *
2748
0082                         * FLEX disk jump table.
2749
0083                         *
2750
0084 DE00 7E F0 57           READ   JMP   READSC
2751
0085 DE03 7E F0 5B           WRITE  JMP   WRITSC
2752
0086 DE06 7E F0 5F           VERIFY JMP   BUSY
2753
0087 DE09 7E F0 63           RESTOR JMP   RESTR1
2754
0088 DE0C 7E F0 6C           DRIVE  JMP   DRVSEL
2755
0089 DE0F 7E F0 9F           DRVRDY JMP   CHKRDY
2756
0090 DE12 7E F0 A3           QUICK  JMP   CHKQIK
2757
0091 DE15 7E F0 A7           COLDDR JMP   DINIT
2758
0092 DE18 7E F0 BF           WARMDR JMP   DWARM
2759
0093 DE1B 7E F0 C3           SEEK   JMP   SEEKTS
2760
0094                         *
2761
0095                         * RAM SPACE
2762
0096                         *
2763
0097 DE1E 00                 DRVNUM  FCB  0
2764
0098 DE1F 00                 TRACK   FCB  0
2765
0099 DE20 00                 SECTOR  FCB  0
2766
0100 DE21 00                 CHKSUM  FCB  0
2767
0101 DE22 00                 CCSAVE  FCB  0
2768
0102 DE23 00                 BLKNUM  FCB  0 Xmodem block number
2769
0103 DE24 00                 BYTCNT  FCB  0 Xmodem byte count
2770
0104 DE25 00 00              XSTATE  FDB  0 Xmodem State Vector
2771
0105 DE27 00 00 00           DELCNT  FCB  $00,$00,$00 Xmodem Poll timer
2772
0106                         *
2773
0107                         * Disc driver type table.
2774
0108                         * Indexed by drive number
2775
0109                         *
2776
0110 DE2A 00                 DTYPTAB FCB  DTYPROM Drive 0 (ROM Disk)
2777
0111 DE2B 01                         FCB  DTYPRAM Drive 1 (RAM Disk)
2778
0112 DE2C 02                         FCB  DTYPFLS Drive 2 (FLASH Disk)
2779
0113 DE2D 03                         FCB  DTYPNET Drive 3 (NETPC Disk)
2780
0114                         *
2781
0115                         * RAM Disk offset
2782
0116                         * Indexed by drive type
2783
0117                         *
2784
0118 DE2E 10                 DOFFTAB FCB  $10 ROM Disk $10000
2785
0119 DE2F 40                         FCB  $40 RAM DISK $40000
2786
0120 DE30 FF                         FCB  $FF Flash Disk
2787
0121 DE31 FF                         FCB  $FF NETPC Disk
2788
0122                         *
2789
0123 DE32                    REAVEC  RMB  2             Disc driver jump table.
2790
0124 DE34                    WRIVEC  RMB  2
2791
0125 DE36                    VERVEC  RMB  2
2792
0126 DE38                    RSTVEC  RMB  2
2793
0127 DE3A                    DRVVEC  RMB  2
2794
0128 DE3C                    CHKVEC  RMB  2
2795
0129 DE3E                    QUIVEC  RMB  2
2796
0130 DE40                    INIVEC  RMB  2
2797
0131 DE42                    WARVEC  RMB  2
2798
0132 DE44                    SEEVEC  RMB  2
2799
0133                         *
2800
0134                         * SECTOR BUFFER
2801
0135                         *
2802
0136 DE46                    BUFFER  RMB  256
2803
0137 DF46                    SYNCREG RMB  4      Prom input register
2804
0138                         *
2805
0139                         ****************************************
2806
0140                         *
2807
0141                         * START OF EXTENSION COMMANDS
2808
0142                         *
2809
0143                         ****************************************
2810
0144                         *
2811
0145 F000                            ORG MONEXT
2812
0146 F000 F7 BD                      FDB NEXTEXT   Jump to next extended command
2813
0147                         *
2814
0148                         *
2815
0149                         *****************************************
2816
0150                         * Disk drivers                          *
2817
0151                         * ------------                          *
2818
0152                         * The system dependant code for the     *
2819
0153                         * disc drivers fits here. Two tables    *
2820
0154                         * must be included. These are DTYPTAB a  *
2821
0155                         * four byte table that defines which of *
2822
0156                         * the (up to four) following sets of    *
2823
0157                         * jump tables to use, and TABSRT the    *
2824
0158                         * jump tables themselves. For a full    *
2825
0159                         * description of the floppy drivers see *
2826
0160                         * section 4 (pp9-14) of the general     *
2827
0161                         * Flex adaptation guide.                *
2828
0162                         *****************************************
2829
0163                         *
2830
0164                         * Mass storage drivers for embedded applications.
2831
0165                         *
2832
0166                         * Jump tables.
2833
0167 F002 F1 19              TABSRT  FDB EREAD Drive type 0 (ROM disk).
2834
0168 F004 F1 41                      FDB EWRITE
2835
0169 F006 F1 3F                      FDB ECHECK
2836
0170 F008 F1 3F                      FDB ECHECK
2837
0171 F00A F1 3F                      FDB ECHECK
2838
0172 F00C F1 3F                      FDB ECHECK
2839
0173 F00E F1 3F                      FDB ECHECK
2840
0174 F010 F0 52                      FDB DDUMMY
2841
0175 F012 F0 52                      FDB DDUMMY
2842
0176 F014 F0 52                      FDB DDUMMY
2843
0177                         *
2844
0178 F016 F1 19                      FDB EREAD Drive type 1 (RAM disk).
2845
0179 F018 F1 41                      FDB EWRITE
2846
0180 F01A F1 3F                      FDB ECHECK
2847
0181 F01C F1 3F                      FDB ECHECK
2848
0182 F01E F1 3F                      FDB ECHECK
2849
0183 F020 F1 3F                      FDB ECHECK
2850
0184 F022 F1 3F                      FDB ECHECK
2851
0185 F024 F0 52                      FDB DDUMMY
2852
0186 F026 F0 52                      FDB DDUMMY
2853
0187 F028 F0 52                      FDB DDUMMY
2854
0188                         *
2855
0189 F02A F0 52                      FDB DDUMMY Drive type 2 (External Flash disk).
2856
0190 F02C F0 52                      FDB DDUMMY
2857
0191 F02E F0 52                      FDB DDUMMY
2858
0192 F030 F0 52                      FDB DDUMMY
2859
0193 F032 F0 52                      FDB DDUMMY
2860
0194 F034 F0 52                      FDB DDUMMY
2861
0195 F036 F0 52                      FDB DDUMMY
2862
0196 F038 F0 52                      FDB DDUMMY
2863
0197 F03A F0 52                      FDB DDUMMY
2864
0198 F03C F0 52                      FDB DDUMMY
2865
0199                         *
2866
0200 F03E F1 7A                      FDB NREAD  Drive type 3 (NetPC drive via serial port).
2867
0201 F040 F1 E9                      FDB NWRITE
2868
0202 F042 F2 49                      FDB NVERIFY
2869
0203 F044 F2 4E                      FDB NCHECK
2870
0204 F046 F2 4E                      FDB NCHECK
2871
0205 F048 F2 4E                      FDB NCHECK
2872
0206 F04A F2 4E                      FDB NCHECK
2873
0207 F04C F0 52                      FDB DDUMMY
2874
0208 F04E F0 52                      FDB DDUMMY
2875
0209 F050 F0 52                      FDB DDUMMY
2876
0210                         *
2877
0211                         *
2878
0212                         * Dummy routine (no errors).
2879
0213 F052 5F                 DDUMMY  CLRB
2880
0214 F053 5D                         TSTB  Set (z)=1
2881
0215 F054 1C FE                      ANDCC  #$FF-CFLAG  Set (c)=0
2882
0216 F056 39                         RTS
2883
0217                         *               *
2884
0218                         **************************
2885
0219                         * Main Flex entry points *
2886
0220                         *************************
2887
0221                         *
2888
0222                         * Read sector routine.
2889
0223                         * Entry: (X) = address where sector is to be placed.
2890
0224                         *        (A) = Track  number.
2891
0225                         *        (B) = Sector number.
2892
0226                         * Exit:  (B) = Error code  (z)=1 if no error.
2893
0227 F057 6E 9F DE 32        READSC  JMP  [REAVEC]
2894
0228                         *
2895
0229                         * Write track routine.
2896
0230                         * Entry: (X) = Address of area of memory from which the data will be taken.
2897
0231                         *        (A) = Track number.
2898
0232                         *        (B) = Sector number.
2899
0233                         * Exit:  (B) = Error condition, (Z)=1 no an error.
2900
0234 F05B 6E 9F DE 34        WRITSC  JMP  [WRIVEC]
2901
0235                         *
2902
0236                         * Verify sector routine.
2903
0237                         * Entry: no parameters.
2904
0238                         * Exit:  (B) = Error condition (Z)=1 if no error.
2905
0239 F05F 6E 9F DE 36        BUSY  JMP  [VERVEC]
2906
0240                         *
2907
0241                         * Restore drive to track 00.
2908
0242                         * Entry: (X) = FCB address (3,X contains drive number).
2909
0243                         * Exit:  (B) = Error condition, (Z)=1 if no error.
2910
0244 F063 8D 07              RESTR1  BSR  DRVSEL Select drive first.
2911
0245 F065 27 01                      BEQ  RST1
2912
0246 F067 39                         RTS
2913
0247 F068 6E 9F DE 38        RST1    JMP  [RSTVEC]
2914
0248                         *
2915
0249                         * Select current drive.
2916
0250                         * Entry: (X) = FCB address (3,X contains drive number).
2917
0251                         * Exit:  (B) = Error condition, (Z)=0 and (c)=1 if error.
2918
0252                         *        (B) = $0F if non existant drive.
2919
0253 F06C 34 30              DRVSEL  PSHS  X,Y
2920
0254 F06E E6 03                      LDB  3,X  Get driver type.
2921
0255 F070 F7 DE 1E                   STB  DRVNUM
2922
0256 F073 8E DE 2A                   LDX  #DTYPTAB
2923
0257 F076 A6 85                      LDA  B,X
2924
0258 F078 81 FF                      CMPA  #$FF  Is the drive nonexistant?
2925
0259 F07A 26 08                      BNE  DRIVE1
2926
0260 F07C 35 30                      PULS  X,Y
2927
0261 F07E C6 0F                      LDB  #$0F
2928
0262 F080 5D                         TSTB
2929
0263 F081 1A 01                      ORCC  #$01
2930
0264 F083 39                         RTS
2931
0265                         *
2932
0266 F084 C6 14              DRIVE1  LDB  #20  Get correct table start address.
2933
0267 F086 3D                         MUL
2934
0268 F087 8E F0 02                   LDX  #TABSRT
2935
0269 F08A 30 8B                      LEAX  D,X
2936
0270 F08C 10 8E DE 32                LDY  #REAVEC Copy table into ram.
2937
0271 F090 C6 14                      LDB  #20
2938
0272 F092 A6 80              DRIVE2  LDA  0,X+
2939
0273 F094 A7 A0                      STA  0,Y+
2940
0274 F096 5A                         DECB
2941
0275 F097 26 F9                      BNE  DRIVE2
2942
0276 F099 35 30                      PULS X,Y
2943
0277 F09B 6E 9F DE 3A                JMP  [DRVVEC]
2944
0278                         *
2945
0279                         * Check for drive ready.
2946
0280                         * Entry: (X) = FCB address (3,X contains drive number)>
2947
0281                         * Exit:  (B) = Error condition, (Z)=0 AND (C)=1 if drive is not ready.
2948
0282 F09F 6E 9F DE 3C        CHKRDY  JMP  [CHKVEC]
2949
0283                         *
2950
0284                         * Quick drive ready check.
2951
0285                         * Entry: (X) = FCB address (3,X contains drive number).
2952
0286                         * Exit:  (B) = Error condition, (Z)=0 AND (c)=1 if drive not ready.
2953
0287 F0A3 6E 9F DE 3E        CHKQIK  JMP  [QUIVEC]
2954
0288                         *
2955
0289                         * Init (cold start).
2956
0290                         * Entry: no parameters.
2957
0291                         * Exit: no change.
2958
0292 F0A7 4F                 DINIT   CLRA
2959
0293 F0A8 B7 DE 1E           DINIT1  STA  DRVNUM  Init each valid drive in turn.
2960
0294 F0AB 8E DE 1B                   LDX  #DRVNUM-3
2961
0295 F0AE 8D BC                      BSR  DRVSEL
2962
0296 F0B0 25 04                      BCS  DINIT2
2963
0297 F0B2 AD 9F DE 40                JSR  [INIVEC]
2964
0298 F0B6 B6 DE 1E           DINIT2  LDA  DRVNUM
2965
0299 F0B9 4C                         INCA
2966
0300 F0BA 81 04                      CMPA  #4
2967
0301 F0BC 26 EA                      BNE  DINIT1
2968
0302 F0BE 39                         RTS
2969
0303                         *
2970
0304                         * Warm start.
2971
0305                         * Entry: no parameters.
2972
0306                         * Exit: no change.
2973
0307 F0BF 6E 9F DE 42        DWARM    JMP  [WARVEC]
2974
0308                         *
2975
0309                         * Seek track.
2976
0310                         * Entry: (A) = Track number.
2977
0311                         *        (B) = Sector number.
2978
0312                         * Exit:  (B) = Error condition, (Z)=1 if no error.
2979
0313 F0C3 6E 9F DE 44        SEEKTS  JMP  [SEEVEC]
2980
0314                         *
2981
0315                         *
2982
0316                         *****************************************************
2983
0317                         * ROMdisk drivers                                   *
2984
0318                         * ---------------                                   *
2985
0319                         * Drivers to support a ROMdisk in the external RAM  *
2986
0320                         * of the SYS09. The ROMdisk base address is $10000   *
2987
0321                         *****************************************************
2988
0322                         * Dummy return for ROM disk (write protected!)
2989
0323                         *
2990
0324                         * MAP RAM DISK INTO MEMORY SPACE
2991
0325                         *
2992
0326 F0C7 1F A8              MAPIN   TFR   CC,A     ; Save state of interrupt masks
2993
0327 F0C9 B7 DE 22                   STA   CCSAVE
2994
0328 F0CC 1A 50                      ORCC  #FFLAG+IFLAG ; Mask interrupts while IO mapped out
2995
0329 F0CE CE DE 2A                   LDU   #DTYPTAB  ; Point to Drive Type table
2996
0330 F0D1 F6 DE 1E                   LDB   DRVNUM   ; Get working drive number
2997
0331 F0D4 E6 C5                      LDB   B,U
2998
0332 F0D6 CE DE 2E                   LDU   #DOFFTAB
2999
0333 F0D9 B6 DE 1F                   LDA   TRACK
3000
0334 F0DC AB C5                      ADDA  B,U      ; Add Base offset into RAM
3001
0335 F0DE 84 F0                      ANDA  #$F0     ; Mask MSN
3002
0336 F0E0 A7 E2                      STA   ,-S      ; Save A on stack
3003
0337                         *
3004
0338 F0E2 B6 DE 20                   LDA   SECTOR
3005
0339 F0E5 80 01                      SUBA  #1       ; Sectors 1 to 14 => 0 to 13
3006
0340 F0E7 88 0F                      EORA  #$0F     ; Complement LSNybble
3007
0341 F0E9 84 0F                      ANDA  #$0F
3008
0342                         *
3009
0343 F0EB AB E0                      ADDA  ,S+       ; Add sector to LSN of Track and pop
3010
0344 F0ED B7 FF F0                   STA   DATREG+MAPPAG
3011
0345                         *
3012
0346 F0F0 B6 DE 1F                   LDA   TRACK   ; LSN of Track indexes into 4K page
3013
0347 F0F3 84 0F                      ANDA  #$0F
3014
0348 F0F5 8B 00                      ADDA  #MAPPAG*16
3015
0349 F0F7 5F                         CLRB
3016
0350 F0F8 1F 03                      TFR   D,U
3017
0351 F0FA 39                         RTS
3018
0352                         *
3019
0353                         * MAP RAM DISK OUT OF MEMORY
3020
0354                         *
3021
0355 F0FB 86 00              MAPOUT  LDA   #MAPPAG  ; Point to the Flex page
3022
0356 F0FD 88 0F                      EORA  #$0F     ; Complement LSNybble
3023
0357 F0FF B7 FF F0                   STA   DATREG+MAPPAG ; map in Flex page
3024
0358 F102 B6 DE 22                   LDA   CCSAVE   ; restore interrupt masks
3025
0359 F105 1F 8A                      TFR   A,CC
3026
0360 F107 39                         RTS
3027
0361                         *
3028
0362                         * Seek track and sector
3029
0363                         * A holds track number (0-32)
3030
0364                         * B holds sector number (1-14)
3031
0365                         *
3032
0366 F108 B7 DE 1F           ESEEK   STA   TRACK
3033
0367 F10B F7 DE 20                   STB   SECTOR
3034
0368 F10E 1C FE                      ANDCC #$FE   ; CLEAR CARRY
3035
0369 F110 1A 04                      ORCC  #$04   ; SET Z
3036
0370 F112 39                         RTS
3037
0371                         *
3038
0372                         * MARK DISK READ ONLY
3039
0373                         *
3040
0374 F113 C6 40              EDUMMY  LDB  #$40
3041
0375 F115 5D                         TSTB
3042
0376 F116 1A 01                      ORCC  #$01
3043
0377 F118 39                         RTS
3044
0378                         *
3045
0379 F119 34 70              EREAD   PSHS X,Y,U push sequentialy to preserve order on stack
3046
0380 F11B 17 FF EA                   LBSR ESEEK
3047
0381 F11E 17 FF A6                   LBSR MAPIN build external ram address
3048
0382                         *
3049
0383 F121 10 8E DE 46                LDY #BUFFER
3050
0384 F125 5F                         CLRB
3051
0385 F126 A6 C0              ERLOOP1 LDA 0,U+ move 256 bytes to buffer from external RAM
3052
0386 F128 A7 A0                      STA 0,Y+
3053
0387 F12A 5A                         DECB
3054
0388 F12B 26 F9                      BNE ERLOOP1
3055
0389                         *
3056
0390 F12D 17 FF CB                   LBSR MAPOUT
3057
0391                         *
3058
0392 F130 10 8E DE 46                LDY #BUFFER
3059
0393 F134 5F                         CLRB
3060
0394 F135 A6 A0              ERLOOP2 LDA 0,Y+ move 256 bytes from buffer to Flex RAM
3061
0395 F137 A7 80                      STA 0,X+
3062
0396 F139 5A                         DECB
3063
0397 F13A 26 F9                      BNE ERLOOP2
3064
0398                         *
3065
0399 F13C 5F                         CLRB
3066
0400 F13D 35 F0                      PULS X,Y,U,PC  restore all registers
3067
0401                         *
3068
0402                         * check for marker bytes $AA55 in first bytes of first track/sector
3069
0403                         *
3070
0404                         *ECHECK  CLRA
3071
0405                         *        LDB  #1
3072
0406                         *        LDX  #BUFFER
3073
0407                         *        BSR  EREAD
3074
0408                         *        LDD  BUFFER
3075
0409                         *        CMPD  #$AA55
3076
0410                         *        BNE  EERR
3077
0411                         *        LBRA  DDUMMY
3078
0412                         *EERR    LDB  #$80 not ready bit set
3079
0413                         *        TSTB
3080
0414                         *        ORCC  #$01
3081
0415                         *        RTS
3082
0416 F13F 5F                 ECHECK CLRB
3083
0417 F140 39                        RTS
3084
0418                         *
3085
0419                         * Write Sector
3086
0420                         *
3087
0421 F141 34 70              EWRITE  PSHS X,Y,U
3088
0422 F143 17 FF C2                   LBSR ESEEK
3089
0423 F146 CE DE 2A                   LDU  #DTYPTAB  ; Point to Drive Type table
3090
0424 F149 F6 DE 1E                   LDB  DRVNUM    ; Get working drive number
3091
0425 F14C E6 C5                      LDB  B,U       ; Fetch Drive type
3092
0426 F14E C1 01                      CMPB #DTYPRAM  ; Is it a RAM Disk ?
3093
0427 F150 27 07                      BEQ  EWOK      ; Yep, can write to it
3094
0428 F152 C1 00                      CMPB #DTYPROM  ; Allow writes to ROM Disk too
3095
0429 F154 27 03                      BEQ  EWOK
3096
0430 F156 16 FF BA                   LBRA EDUMMY    ; Nope report read only
3097
0431                         *
3098
0432 F159 10 8E DE 46        EWOK    LDY #BUFFER
3099
0433 F15D 5F                         CLRB
3100
0434 F15E A6 80              EWLOOP1 LDA 0,X+ move 256 bytes to buffer from Flex RAM
3101
0435 F160 A7 A0                      STA 0,Y+
3102
0436 F162 5A                         DECB
3103
0437 F163 26 F9                      BNE EWLOOP1
3104
0438                         *
3105
0439 F165 17 FF 5F                   LBSR MAPIN
3106
0440                         *
3107
0441 F168 10 8E DE 46                LDY #BUFFER
3108
0442 F16C 5F                         CLRB
3109
0443 F16D A6 A0              EWLOOP2 LDA 0,Y+ move 256 bytes from buffer to external RAM
3110
0444 F16F A7 C0                      STA 0,U+
3111
0445 F171 5A                         DECB
3112
0446 F172 26 F9                      BNE EWLOOP2
3113
0447                         *
3114
0448 F174 17 FF 84                   LBSR MAPOUT
3115
0449                         *
3116
0450 F177 5F                    CLRB
3117
0451 F178 35 F0                      PULS X,Y,U,PC
3118
0452                         *
3119
0453                         *
3120
0454                         *****************************************************
3121
0455                         * FlexNet drivers                                   *
3122
0456                         * ---------------                                   *
3123
0457                         * Drivers to support a remote connection via the    *
3124
0458                         * serial port using the FlexNet protocol as defined *
3125
0459                         * in FLEXNet_421B                                   *
3126
0460                         *****************************************************
3127
0461                         *
3128
0462                         *
3129
0463                         * read sector from remote drive
3130
0464                         *
3131
0465 F17A 34 04              NREAD   PSHS    B
3132
0466 F17C 34 02                      PSHS    A
3133
0467 F17E 7F DE 21                   CLR     CHKSUM          clear checksum
3134
0468 F181 7F DE 22                   CLR     CHKSUM+1
3135
0469                         *
3136
0470 F184 86 73                      LDA     #'s             Send read sector command
3137
0471 F186 BD F2 85                   JSR     SCHAR
3138
0472 F189 24 4C                      BCC     NRD_DNR         if timeout, then flag drive not ready
3139
0473                         *
3140
0474 F18B B6 DE 1E                   LDA     DRVNUM           send drive
3141
0475 F18E BD F2 85                   JSR     SCHAR
3142
0476 F191 24 44                      BCC     NRD_DNR
3143
0477                         *
3144
0478 F193 35 02                      PULS    A               send track
3145
0479 F195 BD F2 85                   JSR     SCHAR
3146
0480 F198 24 3D                      BCC     NRD_DNR
3147
0481                         *
3148
0482 F19A 35 02                      PULS    A               send sector
3149
0483 F19C BD F2 85                   JSR     SCHAR
3150
0484 F19F 24 36                      BCC     NRD_DNR
3151
0485                         *
3152
0486                         * transfer 256 bytes
3153
0487 F1A1 5F                         CLRB
3154
0488 F1A2 BD F2 67           NREAD1  JSR     RCHAR           read byte
3155
0489 F1A5 24 30                      BCC     NRD_DNR         if timeout, then flag drive not ready
3156
0490 F1A7 A7 80                      STA     0,X+
3157
0491 F1A9 BB DE 22                   ADDA    CHKSUM+1        update checksum
3158
0492 F1AC B7 DE 22                   STA     CHKSUM+1
3159
0493 F1AF 24 03                      BCC     NREAD2
3160
0494 F1B1 7C DE 21                   INC     CHKSUM
3161
0495 F1B4 5A                 NREAD2  DECB
3162
0496 F1B5 26 EB                      BNE     NREAD1
3163
0497                         *
3164
0498                         * compare checksums
3165
0499 F1B7 BD F2 67                   JSR     RCHAR           get checksum msb
3166
0500 F1BA 24 1B                      BCC     NRD_DNR
3167
0501 F1BC 34 02                      PSHS    A
3168
0502 F1BE BD F2 67                   JSR     RCHAR           get checksum lsb
3169
0503 F1C1 24 14                      BCC     NRD_DNR
3170
0504 F1C3 1F 89                      TFR     A,B
3171
0505 F1C5 35 02                      PULS    A
3172
0506 F1C7 10 B3 DE 21                CMPD    CHKSUM          compare checksums
3173
0507 F1CB 26 0E                      BNE     NRD_ERR         if checksum error, then flag crc read error
3174
0508                         *
3175
0509 F1CD 86 06                      LDA     #ACK            no checksum error, send ACK char
3176
0510 F1CF BD F2 85                   JSR     SCHAR
3177
0511 F1D2 24 03                      BCC     NRD_DNR
3178
0512 F1D4 5F                         CLRB                    all OK, flag no error
3179
0513 F1D5 20 0D                      BRA     NRD_END
3180
0514                         *
3181
0515 F1D7 C6 10              NRD_DNR LDB     #16             flag drive not ready
3182
0516 F1D9 20 09                      BRA     NRD_END
3183
0517                         *
3184
0518 F1DB 86 15              NRD_ERR LDA     #NAK            send NAK
3185
0519 F1DD BD F2 85                   JSR     SCHAR
3186
0520 F1E0 24 F5                      BCC     NRD_DNR
3187
0521 F1E2 C6 09                      LDB     #09             flag crc read error
3188
0522                         *
3189
0523 F1E4 F7 DE 21           NRD_END STB     CHKSUM          used by VERIFY
3190
0524 F1E7 5D                         TSTB
3191
0525 F1E8 39                         RTS
3192
0526                         *
3193
0527                         *
3194
0528                         * write sector to remote drive
3195
0529                         *
3196
0530 F1E9 34 04              NWRITE  PSHS B
3197
0531 F1EB 34 02                      PSHS A
3198
0532 F1ED 7F DE 21                   CLR     CHKSUM          clear checksum
3199
0533 F1F0 7F DE 22                   CLR     CHKSUM+1
3200
0534                         *
3201
0535 F1F3 86 72                      LDA     #'r             Send write sector command
3202
0536 F1F5 BD F2 85                   JSR     SCHAR
3203
0537 F1F8 24 DD                      BCC     NRD_DNR         if timeout, then flag drive not ready
3204
0538                         *
3205
0539 F1FA B6 DE 1E                   LDA     DRVNUM           send drive
3206
0540 F1FD BD F2 85                   JSR     SCHAR
3207
0541 F200 24 D5                      BCC     NRD_DNR
3208
0542                         *
3209
0543 F202 35 02                      PULS    A               send track
3210
0544 F204 BD F2 85                   JSR     SCHAR
3211
0545 F207 24 CE                      BCC     NRD_DNR
3212
0546                         *
3213
0547 F209 35 02                      PULS    A               send sector
3214
0548 F20B BD F2 85                   JSR     SCHAR
3215
0549 F20E 24 C7                      BCC     NRD_DNR
3216
0550                         *
3217
0551                         * transfer 256 bytes
3218
0552 F210 5F                         CLRB
3219
0553 F211 A6 80              NWRITE1 LDA     0,X+
3220
0554 F213 BD F2 85                   JSR     SCHAR           write byte
3221
0555 F216 24 BF                      BCC     NRD_DNR         if timeout, then flag drive not ready
3222
0556 F218 BB DE 22                   ADDA    CHKSUM+1        update checksum
3223
0557 F21B B7 DE 22                   STA     CHKSUM+1
3224
0558 F21E 24 03                      BCC     NWRITE2
3225
0559 F220 7C DE 21                   INC     CHKSUM
3226
0560 F223 5A                 NWRITE2 DECB
3227
0561 F224 26 EB                      BNE     NWRITE1
3228
0562                         *
3229
0563                         * compare checksums
3230
0564 F226 B6 DE 21                   LDA     CHKSUM
3231
0565 F229 BD F2 85                   JSR     SCHAR           send checksum msb
3232
0566 F22C 24 A9                      BCC     NRD_DNR
3233
0567 F22E B6 DE 22                   LDA     CHKSUM+1
3234
0568 F231 BD F2 85                   JSR     SCHAR           send checksum lsb
3235
0569 F234 24 A1                      BCC     NRD_DNR
3236
0570                         *
3237
0571 F236 BD F2 67                   JSR     RCHAR           get checksum response
3238
0572 F239 24 9C                      BCC     NRD_DNR
3239
0573 F23B 81 06                      CMPA    #ACK
3240
0574 F23D 26 03                      BNE     NWR_ERR         if checksum error, then flag write error
3241
0575                         *
3242
0576 F23F 5F                         CLRB                    all OK, flag no error
3243
0577 F240 20 02                      BRA     NWR_END
3244
0578                         *
3245
0579 F242 C6 0A              NWR_ERR LDB     #10             flag write error
3246
0580                         *
3247
0581 F244 F7 DE 21           NWR_END STB     CHKSUM          used by VERIFY
3248
0582 F247 5D                         TSTB
3249
0583 F248 39                         RTS
3250
0584                         *
3251
0585                         *
3252
0586                         *   verify last sector written to remote drive
3253
0587                         *
3254
0588 F249 F6 DE 21           NVERIFY LDB     CHKSUM         test last checksum
3255
0589 F24C 5D                         TSTB
3256
0590 F24D 39                         RTS
3257
0591                         *
3258
0592                         *
3259
0593                         *   quck check and check drive ready
3260
0594                         *
3261
0595 F24E 86 51              NCHECK  LDA     #'Q             quick check command
3262
0596 F250 BD F2 85                   JSR     SCHAR
3263
0597 F253 24 0C                      BCC     NCK_ERR         if timeout, then flag drive not ready
3264
0598
3265
0599 F255 BD F2 67                   JSR     RCHAR           get response from host
3266
0600 F258 24 07                      BCC     NCK_ERR
3267
0601 F25A 81 06                      CMPA    #ACK
3268
0602 F25C 26 03                      BNE     NCK_ERR         if NAK, then flag drive not ready
3269
0603
3270
0604 F25E 5F                         CLRB                    all OK, flag drive ready
3271
0605 F25F 20 04                      BRA     NCK_END
3272
0606                         *
3273
0607 F261 C6 10              NCK_ERR LDB     #16             report drive not ready
3274
0608 F263 1A 01                      ORCC    #$01            check needs carry set as well
3275
0609                         *
3276
0610 F265 5D                 NCK_END TSTB
3277
0611 F266 39                         RTS
3278
0612                         *
3279
0613                         *
3280
0614                         * recieve char from remote drive.
3281
0615                         * timeout if no response for approx 1s.
3282
0616                         * Entry: no parameters
3283
0617                         * Exit:  (A) = recieved char, (C)=1 if valid char, (C)=0 if timeout.
3284
0618                         *
3285
0619 F267 34 30              RCHAR   PSHS    X,Y
3286
0620                         *
3287
0621 F269 8E 03 E8                   LDX     #1000         1000x inner loop
3288
0622 F26C 10 8E 04 E2        RCHAR1  LDY     #DELCON       delay constant for inner loop (approx 1ms).
3289
0623 F270 B6 E0 00           RCHAR2  LDA     ACIAC1        test for recieved char
3290
0624 F273 47                         ASRA
3291
0625 F274 25 0A                      BCS     RCHAR3        get character
3292
0626 F276 31 3F                      LEAY    -1,Y          else, continue to count delay
3293
0627 F278 26 F6                      BNE     RCHAR2
3294
0628 F27A 30 1F                      LEAX    -1,X
3295
0629 F27C 26 EE                      BNE     RCHAR1
3296
0630 F27E 35 B0                      PULS    X,Y,PC        return with error if timed out
3297
0631                         *
3298
0632 F280 B6 E0 01           RCHAR3  LDA     ACIAD1        return data (carry bit still set)
3299
0633 F283 35 B0                      PULS    X,Y,PC
3300
0634                         *
3301
0635                         *
3302
0636                         * transmit char to remote drive.
3303
0637                         * timeout if no response for approx 1s. (allows for use of hardware flow control)
3304
0638                         * Entry: (A) = char to transmit
3305
0639                         * Exit:  (A) = recieved char, (C)=1 if valid char, (C)=0 if timeout.
3306
0640                         *
3307
0641 F285 34 30              SCHAR   PSHS    X,Y
3308
0642 F287 34 02                      PSHS    A
3309
0643                         *
3310
0644 F289 8E 03 E8                   LDX     #1000         1000x inner loop
3311
0645 F28C 10 8E 04 E2        SCHAR1  LDY     #DELCON       delay constant for inner loop (approx 1ms).
3312
0646 F290 B6 E0 00           SCHAR2  LDA     ACIAC1        test for space in transmit FIFO
3313
0647 F293 47                         ASRA
3314
0648 F294 47                         ASRA
3315
0649 F295 25 0C                      BCS     SCHAR3        send character
3316
0650 F297 31 3F                      LEAY    -1,Y          else, continue to count delay
3317
0651 F299 26 F5                      BNE     SCHAR2
3318
0652 F29B 30 1F                      LEAX    -1,X
3319
0653 F29D 26 ED                      BNE     SCHAR1
3320
0654 F29F 35 02                      PULS    A
3321
0655 F2A1 35 B0                      PULS    X,Y,PC        return with error if timed out
3322
0656                         *
3323
0657 F2A3 35 02              SCHAR3  PULS    A
3324
0658 F2A5 B7 E0 01                   STA     ACIAD1        send data (carry bit still set)
3325
0659 F2A8 35 B0                      PULS    X,Y,PC
3326
0660                         *
3327
0661                         ** 'UF' Format RAMdisc to FLEX standard.
3328
0662                         *
3329
0663 F2AA 0A 0D              DISFOS  FCB $0A,$0D
3330
0664 F2AC 46 6F 72 6D 61 74          FCC 'Formating RAMdisk... '
3331
          69 6E 67 20 52 41
3332
          4D 64 69 73 6B 2E
3333
          2E 2E 20
3334
0665 F2C1 04                         FCB 4
3335
0666 F2C2 0A 0D 04           MESS6   FCB $0A,$0D,4
3336
0667 F2C5 52 61 6D 64 69 73          FCC 'Ramdisk not allocated! '
3337
          6B 20 6E 6F 74 20
3338
          61 6C 6C 6F 63 61
3339
          74 65 64 21 20
3340
0668 F2DC 04                    FCB 4
3341
0669                         *
3342
0670 F2DD 8E F2 AA           UFSUB   LDX #DISFOS
3343
0671 F2E0 BD F4 6A                   JSR PDATA1
3344
0672 F2E3 8E DE 2A                   LDX #DTYPTAB               search for allocated ramdisk
3345
0673 F2E6 5F                         CLRB
3346
0674 F2E7 A6 85              FMT9    LDA B,X
3347
0675 F2E9 81 01                      CMPA #DTYPRAM              driver type 1 is ramdisk
3348
0676 F2EB 27 0C                      BEQ FFOUND
3349
0677 F2ED 5C                         INCB
3350
0678 F2EE C1 04                      CMPB #4            end of table? then not allocated.
3351
0679 F2F0 26 F5                      BNE FMT9
3352
0680 F2F2 8E F2 C2                   LDX #MESS6
3353
0681 F2F5 BD F4 6A                   JSR PDATA1
3354
0682 F2F8 39                         RTS
3355
0683                         *
3356
0684 F2F9 F7 DE 1E           FFOUND  STB DRVNUM
3357
0685 F2FC 8E DE 1B                   LDX #DRVNUM-3
3358
0686 F2FF BD F0 6C                   JSR DRVSEL
3359
0687                         *
3360
0688                         * set up free chain
3361
0689                         *
3362
0690 F302 8E DE 46                   LDX #BUFFER clear out buffer
3363
0691 F305 4F                         CLRA
3364
0692 F306 5F                         CLRB
3365
0693 F307 A7 80              DFL1    STA 0,X+
3366
0694 F309 5A                         DECB
3367
0695 F30A 26 FB                      BNE DFL1
3368
0696                         *
3369
0697 F30C 7F DE 1F                   CLR TRACK
3370
0698 F30F 86 01                      LDA #1
3371
0699 F311 B7 DE 20                   STA SECTOR
3372
0700 F314 8E DE 46           DFL2    LDX #BUFFER
3373
0701 F317 B6 DE 1F                   LDA TRACK
3374
0702 F31A A7 84                      STA 0,X
3375
0703 F31C B6 DE 20                   LDA SECTOR
3376
0704 F31F 4C                         INCA
3377
0705 F320 81 0F                      CMPA #RMAXSEC+1 last sector on track?
3378
0706 F322 26 04                      BNE DFL3
3379
0707 F324 6C 84                      INC 0,X
3380
0708 F326 86 01                      LDA #1
3381
0709 F328 A7 01              DFL3    STA 1,X
3382
0710 F32A B6 DE 1F                   LDA TRACK
3383
0711 F32D F6 DE 20                   LDB SECTOR
3384
0712 F330 BD F0 5B                   JSR WRITSC
3385
0713 F333 7C DE 20                   INC SECTOR
3386
0714 F336 B6 DE 20                   LDA SECTOR
3387
0715 F339 81 0F                      CMPA #RMAXSEC+1
3388
0716 F33B 26 D7                      BNE DFL2
3389
0717 F33D 86 01                      LDA #1
3390
0718 F33F B7 DE 20                   STA  SECTOR
3391
0719 F342 7C DE 1F                   INC TRACK
3392
0720 F345 B6 DE 1F                   LDA TRACK
3393
0721 F348 81 40                      CMPA #RMAXTRK
3394
0722 F34A 26 C8                      BNE DFL2
3395
0723                         * break free chain at last track/sector
3396
0724 F34C 8E DE 46                   LDX  #BUFFER
3397
0725 F34F 86 3F                      LDA  #RMAXTRK-1
3398
0726 F351 C6 0E                      LDB  #RMAXSEC
3399
0727 F353 BD F0 57                   JSR  READSC
3400
0728 F356 8E DE 46                   LDX  #BUFFER
3401
0729 F359 6F 84                      CLR  0,X
3402
0730 F35B 6F 01                      CLR  1,X
3403
0731 F35D 86 3F                      LDA  #RMAXTRK-1
3404
0732 F35F C6 0E                      LDB  #RMAXSEC
3405
0733 F361 BD F0 5B                   JSR  WRITSC
3406
0734                         * set up sector structure, SIR, directory etc
3407
0735 F364 8E DE 46                   LDX  #BUFFER
3408
0736 F367 4F                         CLRA
3409
0737 F368 C6 0E                      LDB  #RMAXSEC
3410
0738 F36A BD F0 57                   JSR  READSC
3411
0739 F36D 8E DE 46                   LDX  #BUFFER
3412
0740 F370 6F 84                      CLR  0,X break end of directory chain
3413
0741 F372 6F 01                      CLR  1,X
3414
0742 F374 4F                         CLRA
3415
0743 F375 C6 0E                      LDB  #RMAXSEC
3416
0744 F377 BD F0 5B                   JSR  WRITSC
3417
0745                         *
3418
0746 F37A 8E DE 46                   LDX  #BUFFER
3419
0747 F37D 4F                         CLRA
3420
0748 F37E C6 03                      LDB  #3 set up SIR
3421
0749 F380 BD F0 57                   JSR  READSC
3422
0750 F383 8E DE 46                   LDX  #BUFFER
3423
0751 F386 6F 84                      CLR  0,X break forward link
3424
0752 F388 6F 01                      CLR  1,X
3425
0753 F38A CC 52 41                   LDD  #$5241 set volume name (RAMDISK )
3426
0754 F38D ED 88 10                   STD  16,X
3427
0755 F390 CC 4D 44                   LDD  #$4D44
3428
0756 F393 ED 88 12                   STD  18,X
3429
0757 F396 CC 49 53                   LDD  #$4953
3430
0758 F399 ED 88 14                   STD  20,X
3431
0759 F39C CC 4B 20                   LDD  #$4B20
3432
0760 F39F ED 88 16                   STD  22,X
3433
0761 F3A2 CC 00 01                   LDD  #1 volume number
3434
0762 F3A5 ED 88 1B                   STD  27,X
3435
0763 F3A8 CC 01 01                   LDD  #$0101 first trk/sec  01-01
3436
0764 F3AB ED 88 1D                   STD  29,X
3437
0765 F3AE 86 3F                      LDA  #RMAXTRK-1
3438
0766 F3B0 C6 0E                      LDB  #RMAXSEC
3439
0767 F3B2 ED 88 1F                   STD  31,X
3440
0768 F3B5 ED 88 26                   STD  38,X
3441
0769 F3B8 CC 03 72                   LDD  #RTOTSEC total DATA sectors (2912-14)
3442
0770 F3BB ED 88 21                   STD  33,X
3443
0771                         *
3444
0772 F3BE 86 01                      LDA #01 month   set default creation date (SYS09's birthday!)
3445
0773 F3C0 A7 88 23                   STA 35,X
3446
0774 F3C3 86 07                      LDA #07 day
3447
0775 F3C5 A7 88 24                   STA 36,X
3448
0776 F3C8 86 07                      LDA #07 year
3449
0777 F3CA A7 88 25                   STA 37,X
3450
0778                         *
3451
0779 F3CD 4F                 RF3     CLRA
3452
0780 F3CE C6 03                      LDB  #3
3453
0781 F3D0 BD F0 5B                   JSR  WRITSC
3454
0782                         *
3455
0783 F3D3 8E DE 46                   LDX #BUFFER
3456
0784 F3D6 4F                         CLRA
3457
0785 F3D7 C6 01                      LDB #1
3458
0786 F3D9 BD F0 57                   JSR READSC
3459
0787 F3DC 8E DE 46                   LDX #BUFFER
3460
0788 F3DF 86 AA                      LDA #$AA set the init flag
3461
0789 F3E1 A7 84                      STA 0,X
3462
0790 F3E3 86 55                      LDA  #$55
3463
0791 F3E5 A7 01                      STA 1,X
3464
0792 F3E7 4F                         CLRA
3465
0793 F3E8 C6 01                      LDB #1
3466
0794 F3EA 7E F0 5B                   JMP WRITSC
3467
0795                         *
3468
0796                         ********************************
3469
0797                         *    System specific Boot      *
3470
0798                         *    command goes here.        *
3471
0799                         ********************************
3472
0800                         *
3473
0801                         * Boot FLEX from the FPGA's internal pre-loaded scratch RAM
3474
0802                         *
3475
0803 F3ED 08 08              UBMESS  FCB $08, $08
3476
0804 F3EF 42 6F 6F 74 69 6E          FCC 'Booting internal FLEX....'
3477
          67 20 69 6E 74 65
3478
          72 6E 61 6C 20 46
3479
          4C 45 58 2E 2E 2E
3480
          2E
3481
0805 F408 0D 0A 04                   FCB $0D,$0A,$04
3482
0806                         *
3483
0807 F40B 8E F3 ED           UBSUB   LDX #UBMESS
3484
0808 F40E BD F4 6A                   JSR PDATA1
3485
0809                         *
3486
0810 F411 8E D3 E5                   LDX #$D3E5
3487
0811 F414 10 8E F4 34                LDY #CONTAB Overlay console driver table
3488
0812 F418 EC A1              UB1     LDD 0,Y++
3489
0813 F41A ED 81                      STD 0,X++
3490
0814 F41C 8C D3 FD                   CMPX #$D3FD
3491
0815 F41F 26 F7                      BNE UB1
3492
0816                         *
3493
0817 F421 8E DE 00                   LDX #$DE00 Overlay disk driver table
3494
0818 F424 10 8E F4 4C                LDY #DISTAB
3495
0819 F428 EC A1              UB2     LDD 0,Y++
3496
0820 F42A ED 81                      STD 0,X++
3497
0821 F42C 8C DE 1E                   CMPX #$DE1E
3498
0822 F42F 26 F7                      BNE UB2
3499
0823                         *
3500
0824 F431 7E CD 00           UBEND   JMP $CD00
3501
0825                         *
3502
0826                         * FLEX console jump table.
3503
0827 F434 F4 76              CONTAB  FDB INPNE       INPUT NO ECHO
3504
0828 F436 F4 82                      FDB DUMMY       INTERRUPT HANDLER
3505
0829 F438 DF C2                      FDB MONRAM+$02 SWI VECTOR
3506
0830 F43A DF C8                      FDB MONRAM+$08 IRQ VECTOR
3507
0831 F43C F4 82                      FDB DUMMY       TIMER OFF
3508
0832 F43E F4 82                      FDB DUMMY       TIMER ON
3509
0833 F440 F4 82                      FDB DUMMY       TIMER INITIALIZATION
3510
0834 F442 F4 7E                      FDB CONTRL      MONITOR
3511
0835 F444 F4 82                      FDB DUMMY       TERMINAL INITIALIZATION
3512
0836 F446 F4 7A                      FDB STATUS      INPUT CHECK
3513
0837 F448 F4 6E                      FDB OUTP        TERMINAL OUTPUT
3514
0838 F44A F4 72                      FDB INPE        TERMINAL INPUT WITH ECHO
3515
0839                         *
3516
0840                         * FLEX disk jump table.
3517
0841 F44C 7E F0 57           DISTAB  JMP READSC
3518
0842 F44F 7E F0 5B                   JMP WRITSC
3519
0843 F452 7E F0 5F                   JMP BUSY
3520
0844 F455 7E F0 63                   JMP RESTR1
3521
0845 F458 7E F0 6C                   JMP DRVSEL
3522
0846 F45B 7E F0 9F                   JMP CHKRDY
3523
0847 F45E 7E F0 A3                   JMP CHKQIK
3524
0848 F461 7E F0 A7                   JMP DINIT
3525
0849 F464 7E F0 BF                   JMP DWARM
3526
0850 F467 7E F0 C3                   JMP SEEKTS
3527
0851                         *
3528
0852                         * Monitor jumps
3529
0853                         *
3530
0854 F46A 6E 9F F8 0C        PDATA1  JMP [PDATAV]
3531
0855 F46E 6E 9F F8 0A        OUTP    JMP [OUTCHV]
3532
0856 F472 6E 9F F8 06        INPE    JMP [INCHEV]
3533
0857 F476 6E 9F F8 04        INPNE   JMP [INCHV]
3534
0858 F47A 6E 9F F8 08        STATUS  JMP [INCHKV]
3535
0859 F47E 6E 9F F8 00        CONTRL  JMP [MONITV]
3536
0860 F482 39                 DUMMY   RTS
3537
0861                         *
3538
0862                         ** 'UL' LOAD ROM DISK VIA SERIAL PORT
3539
0863                         *
3540
0864 F483 53 65 72 69 61 6C  ULMES   FCC  'Serial ROM Disk upload ...'
3541
          20 52 4F 4D 20 44
3542
          69 73 6B 20 75 70
3543
          6C 6F 61 64 20 2E
3544
          2E 2E
3545
0865 F49D 0D 0A 04                   FCB  $0D,$0A,$04
3546
0866 F4A0 52 4F 4D 20 44 69  ULMES1  FCC  'ROM Disk Loaded'
3547
          73 6B 20 4C 6F 61
3548
          64 65 64
3549
0867 F4AF 0D 0A 04                   FCB  $0D,$0A,$04
3550
0868                         *
3551
0869 F4B2 8E F4 83           ULSUB   LDX  #ULMES
3552
0870 F4B5 BD F4 6A                   JSR  PDATA1
3553
0871                         *
3554
0872 F4B8 86 00                      LDA  #$00
3555
0873 F4BA B7 DE 1E                   STA  DRVNUM
3556
0874 F4BD 4F                         CLRA         TRACK 0
3557
0875 F4BE C6 01                      LDB  #$01    SECTOR 1
3558
0876 F4C0 B7 DE 1F           ULLOOP0 STA  TRACK
3559
0877 F4C3 F7 DE 20                   STB  SECTOR`
3560
0878 F4C6 17 FB FE                   LBSR MAPIN
3561
0879                         *
3562
0880 F4C9 5F                         CLRB  xfer 256 bytes at a time.
3563
0881 F4CA BD F4 ED           ULLOOP1 JSR  LRBYTE transfer should be hex bytes
3564
0882 F4CD A7 C0                      STA  ,U+
3565
0883 F4CF 5A                         DECB
3566
0884 F4D0 26 F8                      BNE  ULLOOP1
3567
0885                         *
3568
0886 F4D2 17 FC 26                   LBSR MAPOUT
3569
0887                         *
3570
0888 F4D5 B6 DE 1F                   LDA  TRACK
3571
0889 F4D8 F6 DE 20                   LDB  SECTOR
3572
0890 F4DB 5C                         INCB
3573
0891 F4DC C1 0F                      CMPB #EMAXSEC+1
3574
0892 F4DE 26 E0                      BNE  ULLOOP0
3575
0893 F4E0 C6 01                      LDB  #1
3576
0894 F4E2 4C                         INCA
3577
0895 F4E3 81 30                      CMPA #EMAXTRK
3578
0896 F4E5 26 D9                      BNE  ULLOOP0
3579
0897                         *
3580
0898 F4E7 8E F4 A0           ULEXIT  LDX  #ULMES1
3581
0899 F4EA 7E F4 6A                   JMP  PDATA1
3582
0900                         *
3583
0901                         * Read a byte from the serial port
3584
0902                         *
3585
0903 F4ED 34 04              LRBYTE  PSHS B
3586
0904 F4EF 8D 0E                      BSR  LRHEX                  Get hex digit.
3587
0905 F4F1 48                         ASLA
3588
0906 F4F2 48                         ASLA                           Shift to msb.
3589
0907 F4F3 48                         ASLA
3590
0908 F4F4 48                         ASLA
3591
0909 F4F5 1F 89                      TFR  A,B                    Save in B.
3592
0910 F4F7 8D 06                      BSR  LRHEX                  Get next digit.
3593
0911 F4F9 34 04                      PSHS B
3594
0912 F4FB AB E0                      ADDA 0,S+                    Add together bytes.
3595
0913 F4FD 35 84                      PULS B,PC
3596
0914                         *
3597
0915 F4FF BD F5 28           LRHEX   JSR  INTER
3598
0916 F502 29 FB                      BVS  LRHEX
3599
0917 F504 80 30                      SUBA #$30                   Remove ascii bias.
3600
0918 F506 2B F7                      BMI  LRHEX
3601
0919 F508 81 09                      CMPA #$09                   Number?
3602
0920 F50A 2F 0A                      BLE  LRHEX1                 Yes.
3603
0921 F50C 81 11                      CMPA #$11                   Keep testing.
3604
0922 F50E 2B EF                      BMI  LRHEX
3605
0923 F510 81 16                      CMPA #$16
3606
0924 F512 2E EB                      BGT  LRHEX
3607
0925 F514 80 07                      SUBA #$07
3608
0926 F516 39                 LRHEX1  RTS
3609
0927                         *
3610
0928                         * ACIA INPUT TEST
3611
0929                         *
3612
0930 F517 B6 E0 00           INTEST  LDA ACIAC1
3613
0931 F51A 85 01                      BITA #$01
3614
0932 F51C 39                         RTS
3615
0933                         *
3616
0934                         * RESET ACIA
3617
0935                         *
3618
0936 F51D 86 03              ACIRST  LDA #$03 master reset
3619
0937 F51F B7 E0 00                   STA  ACIAC1
3620
0938 F522 86 11                      LDA #$11
3621
0939 F524 B7 E0 00                   STA ACIAC1
3622
0940 F527 39                         RTS
3623
0941                         *
3624
0942                         * ACIA INPUT
3625
0943                         *
3626
0944 F528 86 10              INTER   LDA  #16
3627
0945 F52A B7 DE 27                   STA  DELCNT+0
3628
0946 F52D 7F DE 28                   CLR  DELCNT+1
3629
0947 F530 7F DE 29                   CLR  DELCNT+2
3630
0948 F533 B6 E0 00           INTER0  LDA  ACIAC1
3631
0949 F536 85 01                      BITA #$01
3632
0950 F538 26 08                      BNE  INTER1
3633
0951 F53A 85 78                      BITA #$78
3634
0952 F53C 27 0A                      BEQ  INTER2
3635
0953 F53E 8D DD                      BSR  ACIRST
3636
0954 F540 20 E6                      BRA  INTER
3637
0955                         *
3638
0956 F542 B6 E0 01           INTER1  LDA  ACIAD1
3639
0957 F545 1C 02                      ANDCC #VFLAG
3640
0958 F547 39                         RTS
3641
0959                         *
3642
0960 F548 7A DE 29           INTER2  DEC  DELCNT+2
3643
0961 F54B 26 E6                      BNE  INTER0
3644
0962 F54D 7A DE 28                   DEC  DELCNT+1
3645
0963 F550 26 E1                      BNE  INTER0
3646
0964 F552 7A DE 27                   DEC  DELCNT+0
3647
0965 F555 26 DC                      BNE  INTER0
3648
0966 F557 4F                         CLRA
3649
0967 F558 1A 02                      ORCC #VFLAG
3650
0968 F55A 39                         RTS
3651
0969                         *
3652
0970                         * ACIA OUTPUT
3653
0971                         *
3654
0972 F55B 34 02              OUTTER  PSHS A
3655
0973                         *
3656
0974 F55D B6 E0 00           OUTTE1  LDA ACIAC1
3657
0975 F560 85 02                      BITA #$02
3658
0976 F562 26 08                      BNE  OUTTE2
3659
0977 F564 85 78                      BITA #$78
3660
0978 F566 27 F5                      BEQ  OUTTE1
3661
0979 F568 8D B3                      BSR  ACIRST
3662
0980 F56A 20 F1                      BRA  OUTTE1
3663
0981                         *
3664
0982 F56C 35 02              OUTTE2  PULS A
3665
0983 F56E B7 E0 01                   STA ACIAD1
3666
0984 F571 39                         RTS
3667
0985                         *
3668
0986                         ** 'UX' Xmodem ROM Disk upload
3669
0987                         *
3670
0988 F572 0D 0A              UXMES   FCB $0D,$0A
3671
0989 F574 58 6D 6F 64 65 6D          FCC 'Xmodem ROM Disk Upload'
3672
          20 52 4F 4D 20 44
3673
          69 73 6B 20 55 70
3674
          6C 6F 61 64
3675
0990 F58A 04                         FCB 4
3676
0991 F58B 0D 0A              UXMES1  FCB $0D,$0A
3677
0992 F58D 55 70 6C 6F 61 64          FCC 'Upload Complete'
3678
          20 43 6F 6D 70 6C
3679
          65 74 65
3680
0993 F59C 04                         FCB 4
3681
0994 F59D 0D 0A              UXMES2  FCB $0D,$0A
3682
0995 F59F 55 70 6C 6F 61 64          FCC 'Upload Error'
3683
          20 45 72 72 6F 72
3684
0996 F5AB 04                         FCB 4
3685
0997                         *
3686
0998 F5AC 8E F5 72           UXSUB   LDX #UXMES
3687
0999 F5AF 17 FE B8                   LBSR PDATA1
3688
1000                         *
3689
1001 F5B2 86 01                      LDA  #1
3690
1002 F5B4 B7 DE 23                   STA BLKNUM
3691
1003 F5B7 8E F6 1A                   LDX  #XSTSTR
3692
1004 F5BA BF DE 25                   STX  XSTATE
3693
1005                         *
3694
1006 F5BD 86 00                      LDA  #$00
3695
1007 F5BF B7 DE 1E                   STA  DRVNUM
3696
1008 F5C2 4F                         CLRA         TRACK 0
3697
1009 F5C3 C6 01                      LDB  #$01    SECTOR 1
3698
1010 F5C5 B7 DE 1F           UXLOOP0 STA  TRACK
3699
1011 F5C8 F7 DE 20                   STB  SECTOR
3700
1012 F5CB 17 FA F9                   LBSR MAPIN
3701
1013                         *
3702
1014 F5CE 5F                         CLRB       xfer 256 bytes at a time.
3703
1015 F5CF 17 00 2B           UXLOOP1 LBSR XBYTE transfer should be hex bytes
3704
1016 F5D2 25 20                      BCS  UXERR
3705
1017 F5D4 A7 C0                      STA  ,U+
3706
1018 F5D6 5A                         DECB
3707
1019 F5D7 26 F6                      BNE  UXLOOP1
3708
1020                         *
3709
1021 F5D9 17 FB 1F                   LBSR MAPOUT
3710
1022                         *
3711
1023 F5DC B6 DE 1F                   LDA  TRACK
3712
1024 F5DF F6 DE 20                   LDB  SECTOR
3713
1025 F5E2 5C                         INCB
3714
1026 F5E3 C1 0F                      CMPB #EMAXSEC+1
3715
1027 F5E5 26 DE                      BNE  UXLOOP0
3716
1028 F5E7 C6 01                      LDB  #1
3717
1029 F5E9 4C                         INCA
3718
1030 F5EA 81 30                      CMPA #EMAXTRK
3719
1031 F5EC 26 D7                      BNE  UXLOOP0
3720
1032                         *
3721
1033 F5EE 8E F5 8B           UXEXIT  LDX  #UXMES1
3722
1034 F5F1 7E F4 6A                   JMP  PDATA1
3723
1035                         *
3724
1036 F5F4 17 FB 04           UXERR   LBSR MAPOUT
3725
1037 F5F7 8E F5 9D                   LDX  #UXMES2
3726
1038 F5FA 16 FE 6D                   LBRA PDATA1
3727
1039                         *
3728
1040                         * Get a Byte using XModem protocol
3729
1041                         * Carry clear => no errors
3730
1042                         * Carry set   => errors
3731
1043                         *
3732
1044 F5FD 34 10              XBYTE   PSHS X
3733
1045 F5FF BE DE 25                   LDX  XSTATE
3734
1046                         *
3735
1047 F602 17 FF 23           XBYTE0  LBSR INTER
3736
1048 F605 28 0A                      BVC  XBYTE1
3737
1049 F607 86 15                      LDA  #NAK
3738
1050 F609 17 FF 4F                   LBSR OUTTER
3739
1051 F60C 8E F6 1A                   LDX  #XSTSTR
3740
1052 F60F 20 F1                      BRA  XBYTE0
3741
1053                         *
3742
1054 F611 AD 84              XBYTE1  JSR  ,X
3743
1055 F613 26 ED                      BNE  XBYTE0
3744
1056 F615 BF DE 25                   STX  XSTATE
3745
1057 F618 35 90                      PULS X,PC
3746
1058                         *
3747
1059                         * START - LOOK FOR SOH (START OF HEADER) = $01
3748
1060                         *
3749
1061 F61A 81 01              XSTSTR  CMPA #SOH
3750
1062 F61C 26 06                      BNE  XSTSTR1
3751
1063 F61E 8E F6 3A                   LDX  #XSTBLK
3752
1064 F621 1C FA                      ANDCC #$FF-CFLAG-ZFLAG No abort, no valid data (no exit)
3753
1065 F623 39                         RTS
3754
1066                         *
3755
1067 F624 81 04              XSTSTR1 CMPA #EOT
3756
1068 F626 26 08                      BNE  XSTSTR2
3757
1069 F628 86 06                      LDA  #ACK
3758
1070 F62A 17 FF 2E                   LBSR OUTTER
3759
1071 F62D 1A 05                      ORCC  #CFLAG+ZFLAG  Set (c)=1 abort & exit
3760
1072 F62F 39                         RTS
3761
1073                         *
3762
1074 F630 81 18              XSTSTR2 CMPA #CAN
3763
1075 F632 26 03                      BNE  XSTSTR3
3764
1076 F634 1A 05                      ORCC  #CFLAG+ZFLAG  Set (c)=1 abort & exit
3765
1077 F636 39                         RTS
3766
1078                         *
3767
1079 F637 1C FA              XSTSTR3 ANDCC #$FF-CFLAG-ZFLAG
3768
1080 F639 39                         RTS
3769
1081                         *
3770
1082                         * Got SOH
3771
1083                         * Now get block number
3772
1084                         *
3773
1085 F63A B1 DE 23           XSTBLK  CMPA BLKNUM
3774
1086 F63D 26 06                      BNE  XSTBLKE
3775
1087 F63F 8E F6 50                   LDX  #XSTCOM
3776
1088 F642 1C FA                      ANDCC #$FF-CFLAG-ZFLAG No abort, No valid data (no exit)
3777
1089 F644 39                         RTS
3778
1090                         *
3779
1091                         * Error in block number
3780
1092                         *
3781
1093 F645 86 15              XSTBLKE LDA  #NAK
3782
1094 F647 17 FF 11                   LBSR OUTTER
3783
1095 F64A 8E F6 1A                   LDX  #XSTSTR
3784
1096 F64D 1C FA                      ANDCC #$FF-CFLAG-ZFLAG No abort, No valid data (no exit)
3785
1097 F64F 39                         RTS
3786
1098                         *
3787
1099                         * Get complement of block number
3788
1100                         *
3789
1101 F650 43                 XSTCOM  COMA
3790
1102 F651 B1 DE 23                   CMPA BLKNUM
3791
1103 F654 26 EF                      BNE  XSTBLKE
3792
1104 F656 7F DE 21                   CLR  CHKSUM
3793
1105 F659 86 80                      LDA  #128
3794
1106 F65B B7 DE 24                   STA  BYTCNT
3795
1107 F65E 8E F6 64                   LDX  #XSTDAT
3796
1108 F661 1C FA                      ANDCC #$FF-CFLAG-ZFLAG No abort, No valid data (no exit)
3797
1109 F663 39                         RTS
3798
1110                         *
3799
1111                         * Get data bytes
3800
1112                         *
3801
1113 F664 34 02              XSTDAT  PSHS A
3802
1114 F666 BB DE 21                   ADDA CHKSUM
3803
1115 F669 B7 DE 21                   STA  CHKSUM
3804
1116 F66C 35 02                      PULS A
3805
1117 F66E 7A DE 24                   DEC  BYTCNT
3806
1118 F671 26 03                      BNE  XSTDAT1
3807
1119 F673 8E F6 7B                   LDX  #XSTCHK
3808
1120 F676 1C FE              XSTDAT1 ANDCC #$FF-CFLAG No abort
3809
1121 F678 1A 04                      ORCC #ZFLAG      Valid data (exit)
3810
1122 F67A 39                         RTS
3811
1123                         *
3812
1124                         * Byte count reached zero
3813
1125                         * Check checksum byte
3814
1126                         *
3815
1127 F67B B1 DE 21           XSTCHK  CMPA CHKSUM
3816
1128 F67E 26 07                      BNE  XSTCHK1 retry if wrong checksum
3817
1129                         *
3818
1130                         * Checksum OK ...
3819
1131                         * increment block number
3820
1132                         * and send ACK
3821
1133                         *
3822
1134 F680 7C DE 23                   INC  BLKNUM
3823
1135 F683 86 06                      LDA  #ACK
3824
1136 F685 20 0D                      BRA  XSTCHK2
3825
1137                         *
3826
1138                         * Checksum Error detected ...
3827
1139                         * Reset Sector counter in ACCB to last 128 byte boundary
3828
1140                         * and send NAK
3829
1141                         *
3830
1142 F687 34 04              XSTCHK1 PSHS B
3831
1143 F689 1F 30                      TFR  U,D
3832
1144 F68B 5A                         DECB
3833
1145 F68C C4 80                      ANDB #128
3834
1146 F68E 1F 03                      TFR  D,U
3835
1147 F690 35 04                      PULS B
3836
1148 F692 86 15                      LDA  #NAK
3837
1149 F694 17 FE C4           XSTCHK2 LBSR OUTTER
3838
1150 F697 8E F6 1A                   LDX  #XSTSTR
3839
1151 F69A 1C FA                      ANDCC #$FF-CFLAG-ZFLAG No abort, no valid data (no exit)
3840
1152 F69C 39                         RTS
3841
1153                         *
3842
1154                         ** 'UP' Load ROMdisk via config PROM.
3843
1155                         *
3844
1156 F69D 08 08              UPMES   FCB  $08,$08
3845
1157 F69F 4C 6F 61 64 20 52          FCC  'Load ROM disk from config PROM.'
3846
          4F 4D 20 64 69 73
3847
          6B 20 66 72 6F 6D
3848
          20 63 6F 6E 66 69
3849
          67 20 50 52 4F 4D
3850
          2E
3851
1158 F6BE 04                         FCB  4
3852
1159 F6BF 46 6F 75 6E 64 20  UPMES1  FCC  'Found SYNC, loading data...'
3853
          53 59 4E 43 2C 20
3854
          6C 6F 61 64 69 6E
3855
          67 20 64 61 74 61
3856
          2E 2E 2E
3857
1160 F6DA 0A 0D 04                   FCB  $0A,$0D,4
3858
1161 F6DD 52 4F 4D 20 44 69  UPMES2  FCC  'ROM Disk Loaded.'
3859
          73 6B 20 4C 6F 61
3860
          64 65 64 2E
3861
1162 F6ED 0A 0D 04                   FCB  $0A,$0D,4
3862
1163 F6F0 52 4F 4D 20 44 69  UPMES3  FCC  'ROM Disk Not Found.'
3863
          73 6B 20 4E 6F 74
3864
          20 46 6F 75 6E 64
3865
          2E
3866
1164 F703 0A 0D 04                   FCB  $0A,$0D,4
3867
1165                         *
3868
1166 F706 8E F6 9D           UPSUB      LDX  #UPMES
3869
1167 F709 BD F4 6A                   JSR  PDATA1
3870
1168                         *
3871
1169 F70C 8D 5A                      BSR  UPRESET
3872
1170 F70E 10 8E 00 20                LDY  #$0020  Set up count for 2 MBit
3873
1171 F712 8E 00 00                   LDX  #$0000
3874
1172 F715 8D 6C              UPSUB1  BSR  UPBIT   Shift in bit
3875
1173 F717 8D 7C                      BSR  UPSYNC  Test for Sync pattern`
3876
1174 F719 27 15                      BEQ  UPSUB4  Skip if found
3877
1175 F71B 30 1F                      LEAX -1,X    Count Down inner loop
3878
1176 F71D 8C 00 00                   CMPX #$0000
3879
1177 F720 26 F3                      BNE  UPSUB1   Branch if inner loop not complete
3880
1178 F722 31 1F                      LEAY -1,X    Count down outer loop
3881
1179 F724 10 8C 00 00                CMPY #$0000
3882
1180 F728 26 EB                      BNE  UPSUB1   Branch if outer loop not complete
3883
1181                         *
3884
1182 F72A 8E F6 F0                   LDX  #UPMES3 2MBits scanned, no synch, report error
3885
1183 F72D 7E F4 6A                   JMP  PDATA1
3886
1184                         *
3887
1185 F730 8E F6 BF           UPSUB4  LDX  #UPMES1 Sync found, now load disk
3888
1186 F733 BD F4 6A                   JSR  PDATA1
3889
1187                         *
3890
1188 F736 4F                         CLRA
3891
1189 F737 B7 DE 1E                   STA  DRVNUM   select Drive 0
3892
1190 F73A C6 01                      LDB  #$01
3893
1191 F73C B7 DE 1F           UPSUB2  STA  TRACK   track 0
3894
1192 F73F F7 DE 20                   STB  SECTOR  sector 1
3895
1193                         *
3896
1194 F742 17 F9 82                   LBSR MAPIN   map in buffer
3897
1195 F745 5F                         CLRB         256 byte sector
3898
1196 F746 8D 67              UPSUB3  BSR  UPBYTE  read byte from prom
3899
1197 F748 A7 C0                      STA  ,U+     Store in buffer
3900
1198 F74A 5A                         DECB
3901
1199 F74B 26 F9                      BNE  UPSUB3  Loop until sector read`
3902
1200 F74D 17 F9 AB                   LBSR MAPOUT  map out buffer
3903
1201                         *
3904
1202 F750 B6 DE 1F                   LDA  TRACK   Advance sector
3905
1203 F753 F6 DE 20                   LDB  SECTOR
3906
1204 F756 5C                         INCB
3907
1205 F757 C1 0F                      CMPB #EMAXSEC+1 Wrap on max sector count
3908
1206 F759 26 E1                      BNE  UPSUB2
3909
1207 F75B C6 01                      LDB  #1
3910
1208 F75D 4C                         INCA          Advance track
3911
1209 F75E 81 30                      CMPA #EMAXTRK
3912
1210 F760 26 DA                      BNE  UPSUB2
3913
1211                         *
3914
1212 F762 8E F6 DD           UPEXIT  LDX  #UPMES2  Load complete, report message
3915
1213 F765 7E F4 6A                   JMP  PDATA1
3916
1214                         *
3917
1215                         * Reset Serial PROM
3918
1216                         *
3919
1217 F768 86 02              UPRESET LDA  #PRSTHI    Strobe the reset line
3920
1218 F76A B7 E0 C0                   STA  PROMREG
3921
1219 F76D 86 00                      LDA  #PRSTLO
3922
1220 F76F B7 E0 C0                   STA  PROMREG
3923
1221 F772 8E 00 00                   LDX  #$0000     Delay a while`
3924
1222 F775 30 1F              UPRST1  LEAX -1,X
3925
1223 F777 8C 00 00                   CMPX #$0000
3926
1224 F77A 26 F9                      BNE  UPRST1
3927
1225 F77C BF DF 46                   STX  SYNCREG+0  Clear Sync Shift Register
3928
1226 F77F BF DF 48                   STX  SYNCREG+2
3929
1227 F782 39                         RTS
3930
1228                         *
3931
1229                         * Input 1 Bit From PROM
3932
1230                         *
3933
1231 F783 86 01              UPBIT   LDA  #PCLKHI
3934
1232 F785 B7 E0 C0                   STA  PROMREG
3935
1233 F788 86 00                      LDA  #PCLKLO
3936
1234 F78A B7 E0 C0                   STA  PROMREG
3937
1235 F78D B6 E0 C0                   LDA  PROMREG
3938
1236 F790 44                         LSRA
3939
1237 F791 78 DF 49                   ASL  SYNCREG+3
3940
1238 F794 39                         RTS
3941
1239                         *
3942
1240                         * Test for 32 bit Sync Word
3943
1241                         *
3944
1242 F795 79 DF 48           UPSYNC  ROL  SYNCREG+2
3945
1243 F798 79 DF 47                   ROL  SYNCREG+1
3946
1244 F79B 79 DF 46                   ROL  SYNCREG+0
3947
1245 F79E CC FF 00                   LDD  #SYNCLO
3948
1246 F7A1 10 B3 DF 48                CMPD SYNCREG+2
3949
1247 F7A5 26 07                      BNE  UPSYNCX
3950
1248 F7A7 CC AA 55                   LDD  #SYNCHI
3951
1249 F7AA 10 B3 DF 46                CMPD SYNCREG+0
3952
1250 F7AE 39                 UPSYNCX RTS
3953
1251                         *
3954
1252                         * Input 1 Byte From PROM
3955
1253                         *
3956
1254 F7AF 34 04              UPBYTE  PSHS B
3957
1255 F7B1 C6 08                      LDB  #8
3958
1256 F7B3 8D CE              UPBYTE1 BSR  UPBIT
3959
1257 F7B5 5A                         DECB
3960
1258 F7B6 26 FB                      BNE  UPBYTE1
3961
1259 F7B8 B6 DF 49                   LDA  SYNCREG+3
3962
1260 F7BB 35 84                      PULS B,PC
3963
1261                         *
3964
1262                         ***** NEXTCMD *****
3965
1263                         *
3966
1264 F7BD 17 FC B2           NEXTEXT LBSR INPE  GET ONE CHAR. FROM TERMINAL
3967
1265 F7C0 84 7F                      ANDA #$7F STRIP PARITY FROM CHAR.
3968
1266 F7C2 1F 89                      TFR  A,B
3969
1267 F7C4 86 20                      LDA  #$20
3970
1268 F7C6 17 FC A5                   LBSR OUTP PRNT SPACE
3971
1269 F7C9 C1 60                      CMPB #$60
3972
1270 F7CB 2F 02                      BLE NXTEX0
3973
1271 F7CD C0 20                      SUBB #$20
3974
1272                         *
3975
1273                         ***** DO TABLE LOOKUP *****
3976
1274                         *   FOR COMMAND FUNCTIONS
3977
1275                         *
3978
1276 F7CF 8E F7 E5           NXTEX0  LDX #EXTTAB    POINT TO JUMP TABLE
3979
1277 F7D2 E1 80              NXTEX1  CMPB ,X+       DOES COMMAND MATCH TABLE ENTRY ?
3980
1278 F7D4 27 0D                      BEQ  JMPEXT    BRANCH IF MATCH FOUND
3981
1279 F7D6 30 02                      LEAX 2,X       POINT TO NEXT ENTRY IN TABLE
3982
1280 F7D8 8C F7 F4                   CMPX #EXTEND   REACHED END OF TABLE YET ?
3983
1281 F7DB 26 F5                      BNE  NXTEX1    IF NOT END, CHECK NEXT ENTRY
3984
1282 F7DD 8E F7 F4                   LDX  #MSGWHAT  POINT TO MSG "WHAT?"
3985
1283 F7E0 16 FC 87                   LBRA PDATA1    PRINT MSG AND RETURN
3986
1284 F7E3 6E 94              JMPEXT  JMP  [,X]      JUMP TO COMMAND ROUTINE
3987
1285                         *
3988
1286                         * EXTENDED COMMAND JUMP TABLE
3989
1287                         *
3990
1288 F7E5                    EXTTAB EQU *
3991
1289 F7E5 42                        FCC 'B'   BOOT FLEX
3992
1290 F7E6 F4 0B                     FDB UBSUB
3993
1291 F7E8 4C                        FCC 'L'   LOAD ROM DISK OVER SERIAL PORT
3994
1292 F7E9 F4 B2                     FDB ULSUB
3995
1293 F7EB 46                        FCC 'F'   FORMAT RAM DISK
3996
1294 F7EC F2 DD                     FDB UFSUB
3997
1295 F7EE 50                        FCC 'P'   LOAD ROM DISK FROM PROM
3998
1296 F7EF F7 06                     FDB UPSUB
3999
1297 F7F1 58                        FCC 'X'   XMODEM ROM DISK UPLOAD
4000
1298 F7F2 F5 AC                     FDB UXSUB
4001
1299                         *
4002
1300 F7F4                    EXTEND EQU *
4003
1301                         *
4004
1302 F7F4 57 48 41 54 20 3F  MSGWHAT FCC "WHAT ?"
4005
1303 F7FA 0A 0D 04                   FCB $0A,$0D,$04
4006
0012                                END
4007
0013                          END COLDS
4008
Program + Init Data = 7039 bytes
4009
Error count = 0

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.