Apple II Source Code
Apple II Source Code
\
,
\
,
i
t
l
(
1
2
3
4
,
6
7
8
9
10
11
12
13
14
1,
16
17
18
IEOO
2000
3000
3800
3A8F
3000
3FFF
4000
"
*
. TITLE SHEP, ' APPLE ~ O S
It,. 1 6/2178
8 E IT ASSEMELER
. M6502
*
********************************************************************************
*
(C) COPYR IGHT 1978 APPLE COMPUTER, INC
********************************************************************************
*
ORGI EGU $I EOO
ORG2 EGU $2000
0151<10 EGU $3000
ASCI EGU $3800
AECL EGU $3A8F
ASC2 EGU 53000
AEC2 EGU $3FFF
EOOS EGU ORG2+S2000
l
l (l1li
.
,
I
J
(
..
~ . ,
, ~
.......... - -
" _ .... -- -
..
PAGE 3 SHEP APPLE DDS
.,
PAGE
34
35 GET RELOCATION PARMS
36
37 ORO
1
38 IEI6 A9BF LOA #5BF START AT BFOQ
39 lE18 804100 STA ZPGWRK+l TO LOOK FOR
40 IEIB A200 LOX ltO HIGH RAM
41 IEID 8E4000 STX ZPGWRK
42 IE20 AI40 DRI LOA ( ZPGWRK, X) GET BYTE
43 IE22 49FF EOR #$FF EX DR
I
44 IE24 8140 STA (ZPGWRK,X ) SET IT
45 IE26 CI40 CMP (ZPGWRK, X) DID IT TAKE
46 IE28 F005 BEG DR2_ BR IF TOOK
47 IE2A CE41 00 DEC ZPGWRK+l NOT RAM
.. 48 !E2D DOF! BNE DR! TRY NEXT PAGE
49
50 DR2
"
51 IE2F 49FF EOR #$FF RESTORE DATA
52 IE31 8140 STA (ZPGWRK,X)
53
54 IE33 AC4100 LOY ZPGWRK+l
til
55 IE36 C8 INY
,
NEW END OF DDS
56 IE37 8C5!IF STY NEPAGE
til 57 lE3A 38 SEC
58 I E3B 98 TVA
59 IE3C ED521F SBC DOSLNG
,
MINUS DDS LENGTH
60 IE3F 8D50lF STA NSPAGE
,
IS NEW START OF DOS
61 IE42 38 SEC
62 IE43 ED4EIF SBC RSPAGE ,MINUS OLD DDS START
63 IE46 FOCB BEG RDONE (BRIF NO DELTA)
64 I E48 8D531F STA DELTA
,
IS DELTA
65
0)
..J
..
..
.,
..
.,
]
fJ
..
_J
"
fII'
' (
PAGE 5 SHEP APPLE DOS
PAGE
104
105 RELOCATE CODE
106
107 lE84 A200 LOX 110
108 lE86 8E8033 OR7 STX TEMPI
109
110 l E89 B0361F LOA CDETAB+l. X GET A START OF CODE ADR
III lE8C 804000 STA ZPGWRK PUT IN ZPG
112 lE8F B0371F LOA CDETAB+2. X
113 lE92 8041 00 STA ZPGWRK+l
114
115 lE9S A200 OR8 LOX liD
1 16 lE97 A140 LOA (ZPGWRK, X) GET OP CODE
117 1E99 208EF8 JSR INSOS2 GO FIND OUT HOW LONG
118
1 19 lE9C AC2FOO LOY LENGTH GET HOW LONG
120 lE9F C002 CPY 112 IF IT AI N' T
121 lEAl 0011 BNE OR9 3 THEN ~ O N T RELoC
122 lEA3 B140 LOA ( ZPGWRK) , Y GET PAGE FROM INST
123 lEAS C04EIF CMP RSPAGE IF PAGE < REL START
124 lEA8 900A BCC OR9 THEN IGNoR
125 lEAA C04FIF CMP REP AGE IF PAGE )= REL END
I
126 lEAD BOOS BCS OR9 THEN IGNORE
127 lEAF 60S31F AOC DELTA ELSE ADD DELTA
128 lEB2 9140 STA (ZPGWRK), Y TO RELOCATE
129
130 lEB4 38 DR9 SEC
131 lEBS A02FOO LOA LENGTH ADD LENGTH
132 lEB8 604000 AOC ZPGWRK TO PC
133 lEBB 804000 STA ZPGWRK
134 lEBE A900 LOA 110
135 lECO 604100 AOC ZPGWRK+l
136 lEC3 804100 STA ZPGWRK+l
137
138 lEC6 AE8033 LOX TEMPt CHECK FOR END
139 lEC9 D0391F CMP CDETAB+4.X OF CODE SEGMENT
140 lECC 90C7 BCC DRS BR NOT END
141 lECE A04000 LOA ZPGWRK
142 lEOl D0381 F CMP CDETAB+3. X
143 lE04 90BF BCC OR8 ; BR NOT END
144
145 lE06 8A TXA
146 lED7 18 CLC
147 lE08 6904 ADC #4 INCREMENT TABLE INDEX
148 lEOA AA TAX
149 lEDB EC3S1F CPX COETAB DONE
150 lEDE 90A6 BCC DR7 BR IF NOT
151
152
~
r
(
PAGE 6 SHEP APPLE DOS
PAGE 1
153
154 MOVE TO RELOCATED CODE
< 155
156 IEEO A04EIF LOA RSPAGE
157 IEE3 804100 STA ZPGWRK+I ZPGWRK=FROM
l:
158 IEE6 A050 lF LOA NSPAGE
159 IEE9 804300 STA ZPGFCB+l ZPGFCB = TOO
160 IEEC A900 LOA #0
161 IEEE 804000 STA ZPGWRK
162 IEFI 804200 STA ZPGFCB
163 IEF4 98 TYA
164
165 IEF5 BI40 oRI O LOA (ZPGWRK), Y BYTE FROM
166 I EF7 9142 STA (ZPGFC B), Y BYTE TO
167 I EF9 C8 INY INCREMENT
168 lEFA DOF9 BNE oRI0 BR NOT FULL PAGE
169 lEFC CE541F DEC oPGCNT DECREMENT PAGE CNT
170 l EFF F008 BEG DR 11 BR IF DONE
171 IFOI EE4100 INC ZPGWRK+l INC FROM PAGE
172 IF04 EE4300 INC ZPGFCB+ l INC TOO PAGE
173 IF07 oOEC BNE oRI0 MOVE PAGE
174
175 IF09 4C1 31E DRI1 JMP RoONE DONE
176
l
e
e
1
PAGE 7 SHEP APPLE DOS
PAGE
~ 177 0040 DEPAGE EGU EDOS/256
178 0020 DSPAGE EGU START/256
179 F88E INSDS2 EGU $F88E
180 002F LENGTH EGU $2F
181 IFOC I C ADRTAB DB 7*4
182 IFOD 0020 DB @@SAT1. @@EATl
IFOF 4E20
183 IFI1 5020 DB @@RUN,@@RUN+2
IFI 3 5220
184 IF1 5 5A20 ~ @@IBVT+2,@@IBVT+4
l
IFI7 5C20
185 IFI9 7220 DB @@AS2VT+6,@@AS2VT+8
IFIB 7420
186 IFID 872B DB @@SAT2,@@EAT2
IF1F C92B
187 IF21 E437 DB @@:BAIOB,@@ADOSLD+2
~
IF23 E837
188 IF25 EE37 DB @@IBDCTP , @@IBDCTP+2
IF27 F037
189 IF29 0000 DB @Q,@:O
IF2B 0000
190 IF2D 0000 DB @O,@O
~
IF2F 0000
191 lF31 0000 DB @O,@O
lF33 0000
192 CDETAB
193 lF35 14 DB 5*4
194 IF36 7620 DB @@SCL@@ECI
~
I F38 8F29
195 IF3A C92B DB @@SC2,@@EC2
IF3C 7633
196 IF3E 0037 DB @@SC3,@@EC3
IF40 E037
197 IF42 0038 DB @@ASC I, @IMECI
J
IF44 BF3A
198 I F46 0030 DB @@ASC2,@@AEC2
IF48 FF3F
199 IF4A 0000 DB @O,@O
IF4C 0000
200
]
201 IF4E 20 RSPAGE DB DSPAGE
202 IF4F 40 REP AGE DB DEPAGE
203
204 IF50 00 NSPAGE DB 0
..
205 IF51 00 NEPAGE DB 0
206
]
207 IF52 20 DOS LNG DB DEPAGE-DSPAGE
20B
209 IF53 00 DELTA DB 0
210 IF54 20 DPGCNT DB DEPAGE-DSPAGE
211
l
PAGE 8 SHEP APPLE DOS
(
PAGE
212 lF55 ORG ORG2
t
213
214 RELOCATION TABLES
215
216 START
217 SAT!
218 2000 D31F FTAB DB @@*-45 i START OF FTABS
219 2002 2121 CINA DB @@CHR IN ; CHAR IN ADR
220 2004 4721 COUTA DB @@CHROUT i CHAR OUT ADR
221 2006 3B2B FNI_ADR DB @@FNAMEl
222 2008 5B2B FN2ADR DB @@FNAME2
223 200A 001E ASTART DB @@DOSREL ; CHANGED TO START BY RELOCATE
224 200C 8A35 CCBADR DB @@CCB
225
226 OUTSVT iCHAR OUTPUT STATE VECTOR TABLE
227 200E 6A21 DB @@COSO-I
228 2010 8921 DB @@COS1-1
229 2012 9A21 DB @@Cos2-1
230 2014 A621 DB @@COS3-1
231 2016 BC21 DB @@COS4-1
(4)
232 2018 CB21 DB @@COS5-1
233 201A 0721 DB @@COS6-1
234
235 COMMAND EXECUTION TABLE
236
237 CMDETB
238 20lC 6727 DB @@EINlT-I
239 20lE 0026 DB @@ELOAD-I
240 2020 8E25 DB @@ESAVE-I
241 2022 9126 DB @@ERUN-I
242 2024 A726 DB @@E.c HAIN- l
243 2026 7724 DB @@EDEL-l
244 2028 8524 DB @@ELOCK-I
245 202A 8924 DB @@EUNLK-I
246 202C F824 DB @@ECLOSE-I
247 202E BD26 DB @@EREAD- I
248 2030 F126 DB @@EEXEC-I
249 2032 B226 DB @@EWRITE-I
('8
250 2034 0527 DB @@EPOS-l
251 2036 B524 DB @@EOPEN-I
252 2038 AA24 DB @@EAPND-I
253 203A 9224 DB @@EREN-l
254 203C 3627 DB @@ECAT-l
255 203E 4624 DB @@EMON-l
(/I
256 2040 5024 DB @@ENOMON-l
257 2042 2024 DB @@EPR-l
258 2044 3324 DB @@EIN-l
1'- ' 259 2046 6424 DB @@EMAXF-I
260 2048 4427 DB @@EAS-I
261 204A 4025 DB @@EB5V-I
(\"
262 204C 6C25 DB @@EBLD-I
263 EAT!
264
J
l
PAGE 9 SHEP APPLE DOS
PAGE
265
266 NON-RELOCATING ADRS
267
268 I8l1S\lT
269 204E 36E8 CHAIN DB @@ IBCHN
270 2050 9026 RUN DB @@IBRUN
271 2052 E3E3 BREAK DB @@IBBRK
272 2054 OOEO GO DB @@ IBGo
273 2056 03EO CoNT DB @@I BCoNT ; BAS IC CONT ENTRY POINT
274 2058 3 6E8 I BV1 DB @@IBCHN,@@IBRUN.@@IBBRK
J
205A 9026
205C E3E3
275 205E OOEO DB @@IBGO,@@IBCONT
2060 03EO
276 OOOA IBVTL EGU *-IBVT
277
278 2062 0207 AS1VT DB @@ASRUN1. @@ASRUN1. @@ASBRK1
2064 0207
2066 6508
279 2068 OOEO DB @@IBGO.@@O
206A 0000
280 OOOA AS1VTL EGU *-AS1VT
281
282 206C D40F AS2VT DB @@ASRUN2.@@ASRUN2.@@ASBRK2
206E D40F
2070 6710
283 2072 7620 DB @@OB INIT.@@O
2074 0000
284 OOOA AS2VTL EGU *-AS2VT
285
CIt
PAGE 10 SHEP APPLE DOS
PAGE
286
287 EQUATES REQO TO FIND THINGS IN APPLE II
288
289 FE93 SETVID EQU $FE93
290 FE89 SETKBD EGU $FE89
291 0033 PROMPT EQU $33 ; PROMPT CHAR
292 0036 OUTSW EQU $36 ; OUTPUT VECTOR SWITCH
293 0038 INSW EQU $38 ; INPUT VECTOR SWITCH
294 0040 ZPGWRK EQU $40 j ZERO PAGE WORK CELL
295 0044 CNUM EGU $44 jCONVERTED NUMERIC ---,
296 0200 LBUFF EGU $200 ; LINE BUFFER
297 FB63 MULT EGU $FB63 ; MUL T ROUTINE
298 FE8B INPRT EGU $FE8B ; SET IN PORT
299 FE95 OUTPRT EQU $FE95 ; SET OUT PORT
300 E836 IBCHN EQU $E836 ; BASIC RUN
301 004A IBLMEM EQU $4A ; BASIC LOW MEM
302 004C IBHMEM EGU $4C ; I NTEGER BAS I C HIMEM
303 OOCA IESOP EQU $CA j I NTEGER BAS I C START OF CGM
304 E3E3 IBBRK EGU $E3E3 BASIC BREAK
305 EOOO IBGO EQU $EOOO BASIC ENTRY POINT
306 E003 IBCONT EGU $E003 BASIC CONTINUE ENTRY POINT
307 OOCC IBSOV EGU $CC BASIC START OF VARIABLES
308 0067 ASSOP EGU $67 AS START OF PROGRAM
309 OOAF ASEOP EGU $AF AS END OF PROGRAM
310 0069 ASEOP2 EGU $69 j AS END-OF PGM 2
311 0073 ASHMI EQU $73 ; AS HIGH MEM 1
312 006F ASHM2 EGU $6F ; AS HIGH MEM 2
313 0067 ASLMEM EQU ASSOP ; AS LOW MEM
314 0702 ASRUNl EQU $0702 ; AS ROM RUN
315 OFD4 ASRUN2 EQU SOFD4 ; AS RAM CLEAR
316 0865 ASBRKI EGU $0865 AS ROM BREAK
317 1067 ASBRK2 EGU $1067 AS RAM BREAK
318 EOOO AITSTL EGU $EOOO ; AS I IB TEST LaC
319 004C ATSTV EGU $4C ; AS TEST VALUE
320 0020 ITSTV EGU $20 ; IB TEST VALUE
321 002E BOOTSL EGU $2E ; BOOT FROM SLOT
322 0042 ZPGFCB EGU $42 j ZERO PAGE WORK CELL
323 FC58 HOME EGU SFC58
324 FOEO PRINT EQU $FDED
325 FOOC GET KEY EGU SF DOC
326
1 e
PAGE II SHEP APPLE DOS
PAGE
327
328 DOS BASIC INTERPRETER - INITIAL ENTRY
329
330 SCI
I
331 OBINIT
332 2076 ADOOEO LOA AITSTL GET APPLESOFT/ IB TEST
333 2079 4920 EOR #ITSTV IF AS THEN
334 207B DOli BNE IASI GO TO AS INIT
335 ELSE INIT FOR IB
336 2070 80802B STA ASIBSW SET SW FOR IB
337 2080 A20A LOX #IBVTL GET 18 VT LENGTH
338 2082 B05720 IIBI LDA IBVT-l,X MOVE IB ADDR
339 2085 9D4020 STA IBASVT-I,X
340 2088 CA OEX
341 2089 00F7 BNE IIBI
342 208B 4 C 9 E 2 ~ JMP INITAA
I
343
344 IASI
345 208E A940 LOA #$40 INDICATE ROM APPLESOFT
3 46 2090 80802B STA ASIBSW
347 2093 A20A LOX #ASIVTL
348 2095 B061 20 IASIA LDA ASIVT-l. X MOVE ROM AS AORS
349 2098 904020 STA IBASVT-I, X
350 209B CA DEX
351 209C DOF7 BNE IASIA
352
353 INITAA
354 209E 38 SEC INDICATE IN.IT
355 209F BOOI BCS INITA
356 DBRST
357 20AI 18 CLC INDICATE RESET
358
359 INITA
360 20A2 08 PHP SAVE INIT/RESET
361 20A3 2093FE JSR SETVID
362 20A6 2089FE JSR SETKBD
363 20A9 206529 JSR MVISW SET INSW
364 20AC 207A29 JSR MVOSW SET OUTSW
365 20AF A970 LDA #MC+MI+MO SET MONITOR MODES
366 20BI 8D272B STA MONMOD
367
368 20B4 A900 LDA #0
369 20B6 80lB2B STA OS TATE ; CLEAR OUTSTATE AND EXECUTE STATE
370 20B9 8 D7D2B STA ESTATE ; EXECUTE STATE
1,/
371 20BC 28 PLP ; GET INIT/RESET
372 20BO 6A RORA ; SHIFT CARRY TO MSB
373 20BE 8DIA2B STA ISTATE ; SAVE INSTATE
20CI 3003 INITB IF INIT
(
374 BMI ; BR
375 20C3 6C5620 JMP (CONT ) iGO TO CONTINUE ENTRY
376 20Cb 6C5420 INITB JMP (GO) ; GO TO GO ENTRY
377
"
I
~ ~
r
~
PAGE 12 SHEP APPLE DOS
r
PAGE
~
378 INlTC
379 20C9 205E2 1 J SR SVRGSA GO SAVE OTHER REGS
If
380 20CC OA ASLA OF ISTATE NOT ON
381 20CO 100E BPL INITO THEN NOT RAM AS
382 20CF 80802B STA ASIBSW SET RAM AS
383 2002 A20A LOX #AS2VTL
384 2004 B06B20 IAS2A LOA AS2VT-1. X MOVE RAM AS AORS
385 2007 904020 STA IBASVT-1. X
386 20 0A CA OEX
387 200B 00F7 BNE IAS2A
388
389 INlTO
390 2000 A07B2B LOA OFNFTS GO BUILO FILE TABS
391 20EO 80202B STA CNFTBS AND SET MEM BOUNOS
392 20E3 20E728 JSR BLOFTB
393 20E6 207128 JSR CLRSTS SET IN AND OUT STATES TO ZERO
394 20E9 A210 LOX #IFBL
395 20EB B00721 INITE LOA DBVECT, X j MOVE RESTART VECTORS
396 20EE 908003 STA 5380, X
397 20Fl CA OEX
398 20F2 10F7 BPL INITE
399 20F4 A0282B LOA CMONO IF NOT BOOT
400 20F7 OOOA BNE INITF THEN DONE
~
401 20F9 A03B2B LOA FNAMEI IF FNl
402 20FC 49AO EOR #SAO NOT GIVEN
-.
403 20FE F003 BEG INITF THEN OONE
40 4 2100 4C9226 JMP ERUN ELSE RUN
405
I
406 IFB
..
407 2103 38 INlTF SEC
408 2104 4C0022 JMP ORTN
409
410 2107 4CA120 DBVECT JMP OBRST
411 210A 4C7620 JMP OB INIT
412 2100 4CC92B JMP OOSENT
413 2110 4C0030 JMP OISI'.IO
414 CCBLOR
415 2113 AOO020 LOA CCBADR+l
416 2116 ACOC20 LOY CCBAOR
417 2119 60 RTS
418 IOBLOR
419 211A A0882B LOA AIOB+l
420 2110 AC872B LOY AIOB
421 2120 60 RTS
422 0010 IFBL EGU *-IFB-l
423
PAGE 13 SHEP APPLE DOS
PAGE
424
425 CHRIN - CHAR RCVO VIA IN SWITCH
426
427 CHRIN
428 2121 80252B STA SVA
429 2 124 AOIA2B LDA ISTATE ; IF NOT DISKIN
430 2127 F008 BEG CHINI ; THEN BRANCH. ELSE
431 2129 309E BMI INITC
432 2 12 B 205B21 JSR SVREGS ; SAVE REGS
433 212E 4C8A27 JMP ICFD ; AND GET CHAR FROM DISK
j
434 CH I NI
435 2 131 A0702B LDA ESTATE
436 2134 F006 BEG CHIN2
437 2 136 205E21 JSR SVRGSA ; SAVE REGS
438 2 139 4CAA27 JMP NXTEXC
439 CHIN2
440 213C A903 LOA *3 ; SET OUT CHAR
441 2 13E 801B2B STA OS TATE ; STATE TO INPUT ECHO
442 2 141 AD252B LOA SVA
443 2144 6CIE2B JMP (SVINS > ; CONTI NUE WITH CHAR PROCESS
444
445 CHROUT - CHAR_ RCVO VIA OUTPUT SWITCH
j
446
447 CHROUT
448 2147 205B21 JSR SVREGS ; SAVE REGS
449
450 2 14A AOIB2B LOA OS TATE ; GET OUT SPARE
451 2 140 OA ASLA
452 214E AA TAX
453 214F BOOF20 LOA OUTSVT+l, X ; GET ROUTINE AOR
454 2152 48 PHA
455 2153 BDOE20 LDA OUTSVT. X
456 2156 48 PHA
457 2157 A0252B LOA SVA
458 2 15A 60 RTS ; GO TO ROUTINE
459
460 SVREGS - SAVE REGS WHI LE PROCESSING CHARS
461
462 SVREGS
463 215B 80252B STA SVA l SAVE ACU
l
464 SVRGSA
465 2 15E 8E232B STX SVX i SAVE X
466 2161 8C242B STY SVY ; SAVE Y
467 2 164 BA TSX ; SAVE STACK
468 2 165 E8 INX
469 2166 E8 I NX
1
470 2167 8E222B STX SVSTK
471 2 16A 60 RTS ; DONE
472
l
PAGE 14 SHEP APPLE DOS
PAGE
473
474 COSO - 1ST CHAR OF PRINTED OUTPUT LINE
(I('
475 CHECK FOR CNTL-D
476
477 COSO
478 216B AEIA2B LOX ISTATE
,
IS IN STATE NOT ZERO
479 216E F008 BEG COSOI
480 2170 C9BF CMP # '?+$80 ; THEN IS THIS ?
481 2172 F064 BEG COS6 ,THEN PRINT ONLY IF MONITOR
482 2174 C533 CMP PROMPT
483 2176 F060 BEG COS6
484 COSOI
485 2178 A202 LOX ~
486 217A 8EIB2B STX as TATE
487 2170 C07C2B CMP CCHAR , IF NOT CNTL-D
488 2180 0019 BNE COS2
,
THEN GO TO STATE 2
489 2182 CA OEX
490 2183 8E1828 STX OS TATE ; ELSE STATE :c:r 1
491 2186 CA OEX
492 2187 8E262B STX LBUFD ; AND LEUFD=O
493
494 COSI - ACCUMULATE CMO FROM PRINTED OUTPUT
495
496 COSI
497 218A AE262B LOX LBUFO , GET LINE BUFF OISPL
498 2180 900002 COS1A STA LBUFF, X , PUT CHAR IN BUFF
499 2190 E8 INX , INCR PTR
500 2191 8E262B STX LBUFO , SAVE PTR
501 2194 C980 CMP #$80 , WAS THIS A CR
502 2196 0057 BNE CMORTN ; IF NOT THEN PR CHAR
503
504 2198 4C1E22 JMP SCNCMO ; GO SCAN COMMAND
505
506 COS2 - PRINTED OUTPUT. NOT FIRST CHAR
507
508 COS2
509 219B C98D CMP I=S8D , IS IT A CR
510 2190 0040 BNE PRRTN , BR IF NOT
511 219F A200 LOX ~ O ,SET FOR POSSIBLE C- D NEXT
512 21Al 8E1B2B STX OSTATE ; NEXT STATE
513 21A4 4CDF21 JMP PRRTN ,GO PRINT CHAR
514
~
e
PAGE 15 SHEP APPLE DOS
515
516
517
518
519 21A7 A200
520 21A9 8E1828
521 21AC C98D
522 21AE F007
523 2180 AD702B
524 2183 F02A
525 2185 0040
526
527
528 2 1B7 AE232B
529 2 1BA 4C8021
530
531
532
533
534 21BO C980
535 21BF 0005
536 21C l A905
537 21C3 80182B
538 21C6 207627
539 21C9 4CF321
540
541
542
543
544 21CC C07C2B
545 2 1CF F09A
546 2 101 A204
547 2 1D3 8E1B28
548 2106 00E5
549
550
551
552 2108 A900
553 210A 80182B
554 2100 F018
555
COS3
COS3A
COS4
COS4A
COSS
COS6
PAGE
COS3 - KEY IN ECHO PRINT
LOX
STX
CMP
BEG
LOA
BEG
BNE
LOX
JMP
*0
OS TATE
#$80
COS3A
ESTATE
PRRTN
ORTNI
SVX
COS1A
COS4 - DISK OUTPUT MODE
CMP
BNE
LOA
STA
JSR
J MP
*$80
COS4A
*5
OS TATE
OCTO
DRTNO
, RESET OUT STATE
; IS IT CR
, IF CR THEN CMO CHECK
, ELSE, IF NOT EXECUTE
THEN PRINT CHAR
, ELSE, PRINT IF MON INPUT
,GET LINE INDEX
,IS IT CR
,BR IF NOT CR
,SET STATE FOR CNTL-O
, EXAMINE
,GO OUTPUT CJHAR TO DISK
. GO TO DATA RETURN (OUT)
COSS - DISK OUTPUT MODE - 1ST CHAR OF A LINE
CMP
BEG
LDX
STX
BNE
CCHAR
COSO
*4
OSTATE
COS4
COS6 - DISK INPUT ECHO
LOA
STA
BEG
*0
OSTATE
ORTNI
, IS IT CNTL 0
, SR IF CNTL- 0
,SET NEW OUT STATE
,SR IF NOT CNTL 0
,RESET OUT STATE = 0
;GO TO DATA IN RETURN
,
PAGE 17 SHEP APPLE DOS
PAGE
I
603
604 SCNCMD - SCAN A COMMAND
605
606 SCNCMD
1
607 221E AOFF LDY #$FF
608 2220 8C282B STY CMDNO ,RESET COMMAND NUMBER
609 2223 C8 INY ; INCR TABLE INDEX
610 SCO
611 2224 EE282B I NC CMDNO ; INCR eMD NO
612 2227 A200 LDX #0 ____ .REsEr LINE INDEX TO 0
~
613 2229 08 PHP
,
SAVE EQ STATUS
6 14 222A BDOO02 LDA LBUFF, X .GET 1ST LINE CHAR
615 222D CD7C2B CMP CCHAR
,
IS IT CONTROL D
616 2230 DOOI BNE SCOA
,
BR II F NOT
617 2232 E8 INX i INCR OVER CNTLD
618 2233 8E262B SCOA STX LBUFD
~
619
620 SCIX
621 2236 20CC23 JSR GNBC GET NON BLANK INPUT CHAR
622 2239 297F AND U7F MSB OF CHAR OFF
623 223B 598F29 EOR CMDNTB,Y EOR WITH INPUT
624 223E C8 INY INCREMENT TABLE INDEX
625 223F OA ASLA IF MSB OF EOR RESULT ON
626 2240 F002 BEQ selA IF RESULT NOT NOW ZERO
627 2242 68 PLA THEN INPUT DOES NOT
628 2243 08 PHP EQUAL ENTRY
629 2244 90FO se lA BCC SCIX LOOP FOR END OF ENTRY
630
631 2246 28 PLP IF INPUT EQUALS END
--I
632 2247 FOIE BEQ SYNTAX THEN GO SYNTAX
633
634 2249 B98F29 LDA CMDNTB,Y IF NEXT TABLE CHAR NOT ZERO
..
635 224C DOD6 BNE SCO THENSCANTHE NEXT TABLE ENTRY
636 CNF ,COMMAND NOT FOUND
637 224E ADOO02 LDA LBUFF .LINE IS A CNOTROL-D
638 2251 CD7C2B CMP CCHAR
,
THEN THIS IS A
639 2254 FOO3 BEG CNFl POSSIBLE SYNTAX ERROR. ELSE
640 2256 4CDF21 JMP PRRTN , ITS A BASIC INPUT L INE
..
641 CNFI
642 2259 20CC23 J SR GNBC ~ G E T NON BLANK CHAR
643 225C 0 006 BNE CSERR j SR IF CR
644 225E 207128 JSR CLRSTS
,
CLEAR THE STATES
645 2261 4CEF21 JMP CMDRTN j CNTL-D ONLY
646
.,
647 2264 4CE227 CSERR JMP ESYNTX
648
~ .
0
0
PAGE 18 SHEP APPLE DOS )'
PAGE
649
650 SYNTAX - FIGURE OUT WHAT WE GOT HERE
<C:
651
652 SYNTAX
653 2267 AD2828 LOA CMDNO ; CHDNO=CMDNO*2
""
654 226A OA ASLA
655 226B 8D2828 STA CMDNO
656
..
657 226E A8 TAY
658 226F A920 LDA #FNI
659 2271 390E2A AND CMOSTB,Y ; IS FNI REGD
660 2274 F05C 8EG SNIO ; 8R IF NOT
661 2276 20C522 JSR CLRFNS
662 2279 08 PHP ; SAVE EO STATUS
663
664 SN2
665 227A 20CC23 JSR GNaC .GET NON BLANK CHAR
666 227D F014 BEG SN6 ; 8R IF CR OR COMMA
667 227F D005 8NE- SN4 ; DR IF REAL CHAR
668 2281 208823 SN3 JSR GNXTC ;GO GET NEXT CHAR
669 2284 FOOD BEG SN6 ; DR IF COMMA OR CR
670 2286 993828 SN4 STA FNAMEl,Y ;PUT INTO FILENAME
671 2289 C8 INY ; INC FN INDEX
672 228A C040 CPY #64 ; ATFN CHAR LIMIT
673 228C 90F3 BCC SN3 J DR IF NOT
674 228E 20BB23 SN5 JSR GNXTC J LOOP UNTIL CR OR COMMA
075 2291 FOF8 BEG SN5
676
677 2293 28 SN6 PLP ; WAS THI S FN2 L 00
678 2294 DOOF BNE SN7 j DR IF IT WAS
679
080 2290 AC2828 LDY CMDNO
081 2299 A9 10 LDA #FN2
082 2298 390E2A AND CMDSTB,Y ; IF FN2 NOT REGD THEN
083 229E FOOC BEG SN8 ; BRANCH
"
084
085 22AO A020 LDY #32 ; SET FN2 INDEX
080 22A2 08 PHP ; INDICATE FN2 SEEK
087 22A3 0005 BNE SN2 ; GO LOOK FOR FN2
088
089 22A5 A05B28 SN7 LOA FNAME2 i IF 1ST CHAR OF
690 22A8 C9AO CMP UAO ; FN2 IS BLANK THEN
691 22M FOl6 BEG SERRl ; SYNTAX ERROR
692
693 22AC A03828 SN8 LOA FNAMEI ; IF 1ST CHAR OF
694 22AF C9AO CMP #SAO ; FNI_ IS NOT BLANK
695 2281 0048 BNE SOPTS ; THEN GO LOOK FOR OPTIONS
096
697 2283 AC2828 LOY CMDNO
698 2286 A9CO LOA #NPB+NPE ; IF CMO MUST HAVE FILENAME
699 2288 390E2A AND CMOSTB, Y ; THEN
700 228B F005 8EG SERRI ; THIS IS ERROR, ELSE
701
702 2280 103C 8PL SOPTS ; ITS EXCUTABLE WITHOUT
PAGE 19 SHEP APPLE DOS
703 22BF 4C4E22 JMP CNF ;OR ITS PLA1N OLD LOAD, SAVE, RUN
704
705 22C2 4CE227 SERR1 JMP ESYNTX
706
707 CLRFNS
708 22C5 A900 LOA 80
709 22C7 A040 LOY #64
710 22C9 A9AO LOA ttSAO
711 22CB 993A2 B SN1 STA FNAMEl-1, Y
712 22CE 88 DEY
; CLEAR FN1. FN2
713 22CF DOFA BNE SN1
714 22D1 60 RTS
715
>
j.
l
1
-,
PAGE 20 SHEP APPLE DOS
PAGE
716 SN10 , FILE NAMES NOT REGD
717 2202 BD3B2B STA FNAMEI
<I(
7 1B 2205 A90C LOA #NUMl +NUM2 , IF NEITHER NUMI
7 19 2207 390E2A AND CMDSTB. Y , OR NUM2 IS REGD
720 22DA F01F BEG SOPTS , THEN GO LOOK AT OPTIONS
721
722 22DC 20E123 JSR GETNUM , GO GET NUMER I CS
723 22DF BOEI BCS SERRI
724
725 22El AB TAY
,
IF HIGH DIGIT NOT
726 22E2 DODE BNE SERRI , ZERO THEN BAD
727
72B 22E4 EOll CPX #17 , IF LOW DIGIT GT 16
729 22E6 BODA BCS SERRl ; THEN BAD
730
731 22EB AC2B2B LOY CMDNO
732 22EB A908 LOA #NUMI
733 22ED 390E2A AND CMDSTB.Y ; IF WE WANT NUM2
734 22FO F006 BEG SNlI
735
736 22F2 EOOB CPX #B , IF NUM2)1
737 22F4 BOCC BCS SERRI ; THEN ERROR, ELSE
73B 22F6 9003 BCC SoPTS ; GO SCAN OPTIONS
739
740 SNII
741 22FB BA TXA , IF NUM1=0
742 22F9 FOC7 BEG SERRI ,THEN ERROR. ELSE
743
744
1
PAGE 21 SHEP APPLE DOS
PAGE
745
746 SOPTS - LOOK FOR SYNTAX OPTIONS
747
748 SOPTS
749 22FB A9QO LDA #0
750 22FD 802B2B STA INOPTS , CLEAR INPUT OPTIONS
751 2300 803A2B STA IMBITS
752 2303 80322B STA CL
753 2306 80332B STA CL+l
754 2309 AD262B LDA LBUFD ; SET PASS 1
755 230C 8D2928 STA TEMPIA
756
757 230F 20CC23 SPI JSR GNBC ;GO GET NON-BLANK CHAR
758 2312 D01F BNE SP2 ; BR IF NOT COMMA OR CR
759 2314 C9BD CMP #S8D i IF CHAR IS COMMA
760 2316 DOF7 BNE SP 1 , THEN GO GET CHAR
761
762 2318 AE282B LOX CMONO ,OPTIONS I NPUT = I
763 231B A02B2B LOA INOPTS , ALLOW OPTS = A
764 231E l DOF2A ORA CMDSTB+l , X ; IF (A OR I )
765 2321 5DOF2A EOR CMDSTB+l . X XOR A NOT = 0 THEN
766 2324 D09C BNE SERRI ,WE HAVE UNALLOWED OPTIONS
767
768 2326 AE292B LDX TEMP1A , IF THIS IS PASS 2
769 2329 F077 BEG CMOGO i THEN DONE.
770 2328 80292B STA TEMP1A , ELSE SET PASS
771 232E 8E2628 STX LBUFO ,RESTORE LBUFD AND
772 2331 DOOC BNE SP 1 ,GO DO PASS 2
773
774 2333 A20A SP2 LDX #OPTlL , COMPARE CHAR HAVE \,I TH
775 2335 003F2A SP3 CMP OPTAB1-t. X , CHARS I N OPT TABLE
776 2338 F005 BEG SP4 , I F FOUND CONTI NUE.
..
777 233A CA OEX
778 233B 00F8 BNE SP3 , IF NOT FOUND
779 2330 F060 BEG SERR2 ,THEN SYNTAX ERROR
..
780
781 233F BD492A SP4 LOA OPTAB2-1 , X ; IF CORRESPONDING OP TAB 2 I S
782 2342 3 047 8MI SP8 ,MINUS THEN IT MONITOR BITS
783 2344 OD2B2B ORA INOPTS
784 2347 8D2B2B STA INOPTS
785 234A CA DEX
786
787 2348 8E2A2B STX TEMP2A , ELSE A NUMERIC MUST FOLLOW
788 234E 20E123 JSR GETNUM , FOLLOW
789 2351 B04C BCS SERR2
790
1' -
791 2353 A02A2B LOA TEMP2A
,
GET lOTI ON NUMBER
792 2356 OA ASLA , MUL T BY 4
793 2357 OA ASLA
794 2358 A8 TAY
795
796 2359 A545 LOA CNUM+l , IF RESULT NUN HI IS
797 235B 0009 BNE SP5 i GT 0, THEN GT LOW RANGE
798 2350 A544 LDA CNUM ,TEST RESULT LOW
II
tIC
PAGE 22 SHEP APPLE DOS
799 235F 09542A CMP OPTAB3,Y , WITH LOW RANGE <LOW)
I
800 2362 903B BCC SERR2 i DR IF RESULT < LR
801 2364 A545 LOA CNUM+l
.-:
802 2366 D9572A SP5 CMP OPTAB3+3.Y
803 2369 900B BCC SP6 i BR IF LESS
804 236B 0032 BNE SERR2 ; BR IF GRREATER
.-:
805 2360 A544 LOA CNUM
806 236F 09562A CMP OPTAB3+2. Y
807 2372 9002 BCC SP6 , DR IF LESS
808 2374 0029 BNE SERR2 , BR IF GREATER
809
810 2376 A0292D SP6 LOA TEMP1A , IF PASS 1, THEN
811 2379 0094 BNE SPl ,OONT STORE RESULT
812 237B 98 TYA
813 237C 4A LSRA
814 2370 A8 TAY
815
816 237E AS45 LOA CNUM+l ; STORE THE RESULT
817 2380 99202B STA CUROPT+l,Y
8 18 2383 A544 LOA CNUM
819 2385 992C28 STA CUROPT,Y
820 2388 4COF23 SP7 JMP SP 1 ; GO FOR NEXT OPT
821
822 SP8 ,MONITOR REG
823 238B 48 PHA ,SAVE TYPE REG
824 238C A980 LOA *C I O ,SET OPTION OF CIO
825 238E 002B2B ORA INOPTS
826 2391 802B2B STA INOPTS
827 2394 68 PLA ,RESTOERE REG
828 2395 297F AND #$7F ; CLEAR C 10
829 2397 003A2B ORA IMBITS ; OR WITH PREV IMBITS
830 239A 803A2 B STA 1MBITS
831 2390 00E9 BNE SP7 ,GO FOR NEXT
832
833 239F 4CE227 SERR2 JMP ESYNTX
834
l
l
PAGE 23 SHEP APPLE DOS
PAGE
835
836 CMOGO - EXECUTE COMMAND
837
838 CMOGO
839 23A2 2071 28 J SR CLRSTS
840 23A5 200623 JSR CLRCCB ; GO CLEAR CCB
841 23A8 20AE23 JSR ECI'IO ; GO EXEC_UTE
842 23AB 4CE221 JMP CERTN
843 ECMD
844 23AE AD282B LDA __ eMDNO NO
845 23Bl AA TAX , IS CMD EXEC TAB INDEX
846 23B2 BDI020 LDA CMDETB+l,X ,GET CMD ADR
847 23B5 48 eHA ; ONTO STACK
848 23B6 BDIC20 LDA CMDETB. X
849 23B9 48 PHA
850 23BA 60 RTS , AND GOTO_COMMAND
I
851
852 GNXTC - GET NEXT CHAR
853
854 GNXTC
855 23BB AE262B LDX LBUFD
856 23BE BOOOD.2 LDA LBUFF. X ,GET NEXT CHAR AND IF
857 23Cl C98D CMP U8D , IT IS A CR
858 23C3 F006 BEG GNXTGR ; THEN RETURN WITHOUT
859 23C5 E8 INX ; INCR TO NEXT CHAR
860 23C6 8E262B STX LBUFO
... 861 23C9 C9AC CMP *, ', +$80 ; TEST FOR COMMA
862 23CB 60 GNXTCR RTS
863
864 GNBC - GET NON BLANK CHAR
865
866 GNBC
B67 23CC 20BB23 J SR GNXTC , GO GET NEXT CHAR
..
B6B 23CF FOFA BEG GNXTCR , BR IF COMMA OR CR
I
869 2301 C9AO CMP , I S IT BLANK
B70 2303 FOF7 BEG GNBC ; SR IF BLANK
B7 1 2305 60 RTS ; DONE
872
873 CLRCCB - CLEAR CCB II
874
I
875 CLRCCB
.. 876 2306 A900 LOA
877 2308 A016 LDY , CCBLENGTH
B78 230A 998935 CLC 1 STA eeB- lt Y ,CLEAR BYTE
II 879 2300 88 DEY
880 23DE DOFA BNE __ CLC I
881 23EO 60 RTS
.. 882
e
fI('
PAGE 24 SHEP APPLE ODS
PAGE
883
884 GETNUM - CONVERT ASCI I INPUT TO NUMERIC
ct
885
886 GETNUM
887 23El A900 LOA #0 ; CLEAR WORK AREA
ct
888 23E3 8544 STA CNUM
889 23E5 8545 STA CNUN+i
890
891 23E7 20CC23 GN2 .JSR GNBC ; GET NEXT NON BLANK
892 23EA 0006 BNE GN3 ; BR NOT COMMA OR CR
893 23EC A644 LOX CNUM ; X=RESUL T LOW
894 23EE A545 LOA CNUN+ 1 ; Y=RESUL T HI
895 23FO 18 CLC
896 23Fl 60 RTS ; DONE
897
898 23F2 38 GN3 SEC
899 23F3 E9BO SBC *sBO ; SUBTRACT ASC II 0
900 23F5 3021 BMI GN4 ; BR IF NOT NUM
901 23F7 C90A CMP *10
902 23F9 BOlO BCS GN4 i BR IF NOT NUM
903 23FB 201A2 4 .JSR GN5 ; OLD*2
904 23FE 6544 AOC CNUM ; PLUS NEW
905 2400 AA TAX
906 2401 A900 LOA *0
907 2403 6545 AOC CNUN+!
908 2405 A8 TAY
909 2406 201A24 .JSR GN5 ; DLD*4
910 2409 201A24 .JSR GN5 ; OLD*8
911 240C 8A TXA ; OLD*8 + OLO*2 + NEW
912 2400 6544 ADC CNUN
913 240F 8544 STA CNUM i =OLD*10 + NEW
914 24 11 98 TYA
915 24 12 6545 AOC CNUM+1
9 16 2414 8545 STA CNUM+1
l
917 2416 90CF BCC GN2
918
919 GN4
920 2418 38 SEC
921 2419 60 RTS ; DONE
922 GN5
l
923 241A 0644 ASL CNUM ; CNUM
* 2
924 241C 2645 ROL CNUN+1
925 241E BOF8 BCS GN4
926 2420 60 RTS
927
l
J
PAGE 25 SHEP APPLE DOS
PAGE
928
929 EPR - EXECUTE PR#
930
931 EPR
932 2421 A544 LOA CNUM i GET PORT
933 2423 2095FE JSR OUTPRT ;GO DO IT
934 2426 38 SEC
935 2427 200422 JSR LOREGS
936 242A 203124 JSR . EPRX
937 2420 207A29 JSR MVOSW
938 2430 60 RTS
939 2431 6C3600 EPRX JMP ( oUTSW)
940
941 EI N - EXECUTE IN#
... 942
943 EIN
l
9 44 2434 A544 LOA CNUM i GET PORT
9 45 2436 208BFE JSR INPRT iGQOO IT
946 2439 38 SEC
947 243A 200422 JSR LOREGS
9 48 2430 204424 JSR EINX
949 2440 206529 JSR MVlSW
950 2443 60 RTS
951 2444 6C3800 EINX JMP (INSW)
952
953 EMoN - EXECUTE MONITOR CMO
954
955 EMoN
956 2447 A0272B LOA MoNMoO ; GET CURRENT BITS
1
957 244A 003A2B ORA 1MB ITS ; OR IN NEW BITS
958 2440 80272B STA MoNMoO ; SET NEW MODE
959 2450 60 RTS
960
961 ENoNoN - EXECUTE NO MON ITOR CMO
I
962
963 ENoMoN
964 2451 2C3A2B BI T 1MB ITS
965 2454 5003 BVC ENMl
966 2456 201322 JSR PRCRIF
967 ENMI
I
968 2459 A970 LOA #$70
969 245B 403A2B EoR IMBITS ; INVERT INPUT BITS
970 245E 20272B AND MONMOD ;ANO WITH CURRENT
971 2461 80272B STA MoNMoO ; SET NEW MODE
972 2464 60 RTS
973
I '
e
J
e
PAGE 26 SHEP APPLE DOS
'"'
PAGE
974
975 EMAXF - EXECUTE MAX FILES
(t
976
977 EMAXF
978 2465 A900 LOA #0 ; RESET EXECUTE
979 2467 8D7D2B STA ESTATE
980 246A A544 LOA CNUM ; SAVE NEW NO FILES
981 246C 48 PHA
982 246D 202625 JSR CLALL ; GO CLOSE ALL FILES
983 2470 68 !'LA
984 2471 8D2028 STA CNFTBS iSET NEW NO FILE TBLS
985 2474 20E728 JSR BLDFTB ; GO BUI LD NEW ONES
986 2477 60 RTS_
987
988 EDEL - DELETE A FI LE
989
990 EDEL
991 2478 A905 LDA 4ICRGDEL ; DELETE REGUEST
992 247A 20B824 JSR OPEN ; GO OPEN
993 247D 207A28 JSR FILSRC ; FIND FILE
,
994 2480 AOOO LDY #0
995 2482
98 __
TYA
N 996 2483 9140 STA (ZPGWRK) I Y ; RESET FN
;;
997 2485 60 RTS
998
999 ELOCK - LOCK A FI LE
1000
1001 ELOCK
1002 2486 A907 LDA #CRGLCK ; SET LOCK
1003 2488 D002 BNE ELGO
1004
1005 EUNLK - UNLOCK A FILE
1006
1007 EUNLK
1008 248A A908 LDA #CRGUNL ; SET UNLOCK
1009 ELGO
1010 248C 20B824 JSR O!'EN ; OPEN FILE 11< UNLOCK
lOll 248F 20F924 JSR ECLOSE ; CLOSE IT
1012 2492 60 RTS ; DONE
1013
PAGE 27 SHEP APPLE DOS
PAGE
l
1014
1015 EREN - RENAME A FILE
1016
1017 EREN
1018 2493 A00820 LOA FN2AOR i MOVE FILE NAME2
1019 2496 808C35 STA CCBFN2
1020 2499 A00920 LOA FN2ADR+l
1021 249C 808035 STA CCBFN2+1
1022 249F A909 LOA 41CRGRNM
1023 24Al 80292B STA TEMPIA ; SET RENAME
1024 24A4 200624 JSR E03 ; GO OPEN N ~ RENAME
1025 24A7 20F92 4 JSR ECLOSE ; GO CLOSE
1026 24M 60 RTS ; DONE
1027
1028 EAPNO - OPEN FILE FOR APPEND
1029
1030 EAP NO
J
1031 24AB 20B624 JSR EOPEN GO OPEN
1032 . API
1033 24AE 20B327 JSR R3YTE READ A BYTE
..
1034 2431 00F3 BNE API BR IF NOT ZERO
1035
1036 24B3 4CE926 JMP RWP3 ; GO RE-POSITION
.,
1037
1 0
'
PAGE 28 SHEP APPLE DOS
PAGE
1038
1039 EOPEN - OPEN A FILE
/It
1040
1041 EOPEN
1042 24B6 A901 LOA #CRGOPN
1043 OPEN
1044 24B8 80292B STA TEMPIA
1045 24BB A0322B LOA CL , IF NO LENGTH ENTEREO
1046 24BE DODA BNE EOI , THEN SET OEF AUL T OF 1
1047 24CO A0332B LOA CL+l
1048 24C3 0005 BNE EOl
1049 24C5 A901 LOA #1
1050 24C7 803228 STA CL
1051 EOl
1052 24CA A0322B LOA CL ,MOVE REC LENGTH
1053 24CO 808C35 STA-- CCBRLN
1054 2400 A0332B LOA CL+l
1055 2403 808035 STA CCBRLN+l
1056 E03
1057 2406 20F924 JSR ECLOSE ,GO CLOSE IF OPEN
1058 E04
1059 2409 A545 LOA CNUM+l ,GET AVALL ENTRY
1060 240B 0003 BNE E05 , BR IF ONE AVAIL
1061 2400 4CE627 JMP ENFA ,DONE - NO FILES AVAIL
1062 E05
1063 24EO 8541 STA ZPGWRK+l ,MOVE AVA I L SLOT TO ZPG
1064 24E2 A544 LOA CNUM
1065 24E4 8540 STA ZPGWRK
1066 E06
, ,
1067 24E6 205928 JSR MVFNl ;GO MOVE FILE NAME
1068 24E9 206428 JSR MVBUFP ; GO MOVE BUF PTRS
1069 24EC 202628 JSR OPNSUP ,GO SET UP OPEN
1070 24EF A0292B LOA TEMPIA ,SET OPEN REG
1071 24F2 8D8A35 STA CCBREG
1072 24F5 20CC27 JSR OOSGO ,GO OPEN
1073 24F8 60 RTS ; DONE
1074
l
l
PAGE 29 SHEP APPLE DOS
PAGE
1075
1076 ECLOSE - EXECUTE CLOSE FILE COMMAND
1077
1078 ECLOSE
J
1079 24F9 AD3B2B LOA FNAMEl
1080 24FC C9AO CMP #$AO
1081 24FE F026 BEG CLALL
1082 2500 207A28 JSR FILSRC , GO FIND F ILE
..
1083 2503 B006 BCS ECLl
,
BR IF NOT FOUND
1084 2505 200C25 JSR CLOSE ,GO CLOSE_
I
1085 2508 4CF924 JMP ECLOSE ,GO SEE IF ANY MORE OPEN
1086 250B 60 ECLl RTS
1087
1088 CLOSE - CLOSE A FILE
1089
1090 CLOSE
1091 250C 20C528 J SR TSTEXC
1092 250F 0005 BNE CLX
1093 2511 A900 LOA #0
1094 2513 807D2B STA ESTATE
1095 CLX
1096 2516 AOQQ LOY #0 , CLEAR 1ST FN
1097 2518 98 TYA ,CHAR TO ZERO
-"
1098 25 19 9140 STA (ZPGWRK) I Y
1099 251B 206428 JSR MVBUFP , MOVE BUFFER PTRS
11 00 251E A902 LOA #CRGCLS ,SET CLOSE
1101 2520 808A35 STA CCBREG
1102 2523 4CCC27 JMP DOSGO ,GO CLOSE
1103
1104 CLALL - CLOSE ALL F ILES
..
1105
1106 CLALL
1107 2526 20A828 JSR TSINIT ; GO INlT FILE SEARCH
1108 2529 0005 BNE CLl
I
1109 CLO
1110 252B 20B028 JSR TSNXT ; NEXT ENTRY
j
1111 252E FOlD BEG CL2.- ; BR IF NO MORE
1112 CLl
111 3 2530 20C528 JSR TSTEXC
1114 2533 FOF6 BEG CLO
1115 2535 20C028 J SR TSTOPN ,GO TEST OPEN
1116 2538 FOFl BEG CLO i BR NOT OPEN
1117 253A 200C25 JSR CLOSE ,GO CLOSE
1118 2530 4C2625 J MP CLALL i START OVER
11 19 2540 60 CL2 RTS i DONE
1120
'
PAGE 30 SHEP APPLE ODS
PAGE
1121
1122 EBSV - EXECUTE BINARY SAVE
1123
1124 EBSV
1125 2541 A909 LOA #A+L IF A&L
1126 2543 202B2B ANO INOPTS NOT GIVEN
1127 2546 C909 CMP #A+L_
1128 2548 F003 BEQ EBSVI
1129 254A 4CE227 JMP ESYNTX THEN ERROR
1130 EBSVI
1131 2540 A904 LOA #4 SET BINARY FILE
1132 254F 20C625 JSR SVI GO OPEN ll< TEST
1133 2552 A0392B LOA CA+ l OUTPUT AOR OF BLOCK
1134 2555 AC382B LOY CA
1135 2558 200125 JSR SV2
1136 255B A0332B LOA CL+...l GO OPEN AND TEST
1137 255E AC322 B LOY CL
1138 2561 200125 JSR SV2 OUTPUT LENGTH
1139 2564 A0392B LOA CA+l GET ADR GIVEN
1140 2567 AC382B LOY CA
1141 256A 4CF025 JMP SV3 OUTPUT BLOCK
1142
1143 EBLO - EXECUTE BINARY LOAO
1144
1145 EBLO
1146 2560 A904 LOA #4 SET BINARY FILE
1147 256F 20C625 JSR SVI GO OPEN &. TEST
1148 2572 204F26 JSR L02 GO GET AOR
1149 2575 AA TAX
11 50 2576 A02B2B LOA INOPTS
1151 2579 2901 ANO #A IF AOR NOT GIVEN
1152 257B 0006 BNE EBLOI
1153 2570 8E382B STX CA THEN USE AOR FROM F I LE
1154 2580 8C392B STY CA+ l
1155 EBLOI
1156 2583 204F26 J SR L02 GET LENGTH
1157 2586 AE382B LOX CA GET GIVEN ADR
1158 2589 AC392B LOY CA+l
1159 258C 4C8026 JMP L03 GO GET BLOCK
1160
PAGE 3 1 SHEP APPLE DOS
PAGE
1161
1162 ESAVE - EXECUTE SAVE REGUEST
1163
1164 ESAVE
I
1165 258F A0802B LOA ASIBSW IF IB THEN
1166 2592 F019 BEG EIBSV GO TO IB SAVE
1167 2594 A902 LOA 112 GET APPLESOFT PGM
1168 2596 20C625 J SR SVl GO OPEN AND TEST
a
1169
1170 2599 38 SEC BLOCK LENGTH
I
1171 259A A5AF LOA ASEOP
1172 259C E567 SBC ASSOP
1173 259E A8 TAY
1174 259F A5BO LOA ASEOP+l
1175 25Al E568 SBC ASSOP+l
1176 25A3 200125 .JSR SV2 GO OUTPUT LENGTH
1177
1178 25A6 A568 LOA ASSOP+l BLOCK AOR
1179 25A8 A467 LOY ASSOP
1180 25AA 4CF025 JMP SV3 GO OUTPUT BLOCK
1181 i .
1182 EIBSV
1183 25AO A901 LOA III SET IB PGM
.. 1184 25AF 20C625 JSR SVl GO OPEN AND TEST
1185
1186 25B2 38 SEC BLOCK LENGTH
1187 25B3 A54C LOA IBHMEM
1188 25B5 E5CA SBC IBSOP
1189 25B7 A8 TAY
1190 25B8 A540 LOA IBHMEM+l
1191 25BA E5CB SBC IBSOP+1
1192 25BC 200125 JSR SV2 GO OUTPUT LENGTH
1193
1194 25BF A5CB LOA IBSOP+! BLOCK AOR
1195 25C1 A4CA LOY IBSOP =50P
1196 25C3 4CF025 JMP SV3 GO OUTPUT BLOCK
1197
1198 SV1
1199 25C6 809135 STA CCBFUC SET PGM TYPE
1200 SV1A
I
1201 25C9 48 PHA SAVE PGM TYPE
1202 25CA 20B624 JSR EOPEN GO OPEN FILE
1203 25CO 68 eLA GET_ SAVE TYPE
1204 25CE 4COA28 JMP TSTFUC GO CHECK
1205
1206 SV2
1207 2501 8 C9035 STY CCBBLN SET BLOCK LENGTH
1208 2504 8C9235 STY CCBOAT AND DATA BYTE
1209 2507 8091 35 STA CCBBLN+!
1210 250A A904 LOA IICRGWR INDICATE WRITE
1211 250C 808A35 STA CCBREG
1212 250F A901 LOA lICRMNBT NEXT BYTE
1213 25E1 808B35 STA CCBRGM
1214 25E4 20CC27 JSR OOSGO GO WRITE
PAGE 32 SHEP APPLE DOS
A
1215 25E7 AD9135 LDA CC BBLN+l ; OTHER BYTE TOO
III
1216 25EA 8D9235 STA CCBDAT
12 17 25ED 4CCC27 JMP DOSGO
1218
1219 25FO 8C9235 SV3 STY CCSSSA SET BLOCK AOR
1220 25F3 8093 35 STA CCBBBA+l
..
1221 25F6 A902 LDA #CRMNBL INDI CATE BLOCK l I D
1222 25F8 8D8S35 STA CCSRGM
1223 25FB 20CC27 J SR DOSGO GO DO IT
..
1224 25FE 4CF924 JMP ECLOSE CLOSE FILE
1225
e
J
PAGE 33 SHEP APPLE DOS
PAGE
1226
1227 ELOAD - EXECUTE LOAD REGUEST
1228
1229 ELOAD
1230 2601 202625 JSR CLALL ; GO CLOSE ALL
1231 2604 AD802B LDA ASIBSW IF IE THEN
1232 2607 F022 BEG EIBL GO TO IB LOAD
1233 2609 A902 LDA #2
1234 260B 20C925 JSR SVIA GO OPEN AND TEST
1235
~
1236 260E 204F26 JSR LD2 GO GET BLOCK LENGTH ,
1237
1238 2611 18 CLC
1239 2612 6567 ADC ASSOP ADD BLOCK LENGTH TO SOP
1240 2614 AA TAX
1241 2615 98 TYA
1242 2616 6568 ADC ASSO?+1
1243
1244 2618 C574 CMP ASHM1+1 IF L ~ S O P >= HMEM
1245 261A B070 BCS MFULL THEN WON 'T FIT
1246
1247 EASLl
1248 261C 85BO STA ASEQ?+1 SET NEW EOP ADR
1249 261E 856A STA ASEOP2+1
1250 2620 86AF STX ASEOP
1251 2622 8669 STX ASEOP2
1252 2624 A667 LOX ASSOP GET ADR WHERE TO LOAD
1253 2626 A468 LDY ASSa?+1
1254 2628 4C8026 JMP LD3 GO LOAD
1255
1256 EIBL
1257 262B A901 LDA #1 SET IB PGM
1258 262D 20C925 JSR SVIA GO OPEN AND TEST
1259
1260 2630 204F26 JSR LD2 GO GET BLOCK LENGTH
1261
1262 2633 38 SEC HMEM - BLOCK LENGTH
1263 2634 A54C LOA IBHMEM IS NEW SOP
1264 2636 ED5B2B SBC FNAME2
1265 2639 AA TAX
1266 263A A54D LOA rBHMEM+1
1267 263C ED5C2B SBC FNAME2+1
1268 263F 904B BCC MFULL
1269 2641 A8 TAY
1270
1271 2642 C44B CPY IBLMEM+l IF NEW SOP <= LMEM
1272 2644 9046 BCC MFULL
I' 1273 2646 F044 BEG MFULL
1274 2648 84CB STY IBSOP+l SET NEW SOP
1275 264A 86CA STX rBSOP
1276 264C 4C8026 JMP LD3
1277
1278 LD2
1279 264F AD0820 LDA FN2ADR MOVE ADR OF WHERE
PAGE 34 SHEP APPLE DOS
12BO 2652 B09235 STA CCBBBA TO PUT DATA TO
12Bl 2655 A00920 LOA_ FN2ADR+l CCB
12B2 265B B09335 STA CCBBBA+l
WI
12B3 265B A900 LOA #0
12B4 2650 B09135 STA CCBBLN+l REAO INTO
12B5 2660 A902 LOA #2
..
12B6 2662 B09035 STA CCBBLN
12B7 2665 A903 LOA #CRGRO REAO ~
12BB 2667 BD8A35 STA CCBREG
12B9 266A A902 LOA #CRMNBL BLOCK
1290 266C BOBB35 STA CCBRGM
1291 266F 20CC27 JSR OOSGO
e
1292 2672 A05C2B LOA FNAME2+1
1293 2675 B09135 STA CCBBLN+l
1294 267B AB TAY
1295 2679 AD5B2B LOA FNAME2
1296 267C B09035
__ STA __
CCBBLN
1297 267F 60 RTS
129B
1299 L03
1300 26BO BE9235 STX ceBBBA SET BLOCK ADR
1301 26B3 BC9335 STY CCBBBA+l
1302 26B6 2 ~ C C 2 7 J SR OOSGO GET BLOCK
l
1303 26B9 4CF924 JMP ECLOSE GO CLOSE FILE
1304
1305 MFULL
1306 26BC 20F924 JSR ECLOSE GO CLOSE FILE
II
1307 26BF 4CEA27 JMP MFERR AND GIVE ERR t1SG
130B
J
t.
II
(e
PAGE 35 SHEP APPLE DOS
PAGE
1309
1310 ERUN - EXECUTE RUN REGUEST
6)
1311
1312 ERUN
1313 2692 200126 JSR ELOAD i LOAD PGM
1314 2695 201322 JSR PRCRIF
1315 2698 A9AC LDA UAC
1316 269A 6C5020 J MP (RUN)
1317
1318 RUN
1319
..
1320 IBRUN
1321 2690 A54A LOA IBLMEM iRESET_ START OF VARS
1322 269F 85CC STA IBSOV
1323 26Al A54B LOA IBLMEM+l
1324 26A3 85CO STA IBSOV+l
1325 26A5 6C4E20 JMP ( CHAIN )
1326
1327 EHCA IN - EXECUTE CHAIN REGUEST
1328
1329 ECHAIN
1330 26A8 200126 JSR ELOAO ; LOAD PGM
1331 26AB 201322 JSR PRCRIF
1332 26AE A9AC LOA #SAC ; FOR APPLE SOFT
1333 26BO 6C4E20 JMP (CHAIN)
133 4
PAGE 36 SHEP APPLE DOS
}"
PAGE
1335
1336 EWRITE - WRITE CMD EXECUTE
1337
1338 EWRITE
1339 26B3 20C926 JSR RWPOSN ;GO POSITION FILE IF REGD
1340 26B6 A905 LDA *5
1341 26B8 8DIB2B STA OS TATE ; SET oST ATE=5
1342 2688 4CE22 1 JMP CERTN ; DONE
1343
1344 EREAD-=-READ_COMD EXECUTE
1345
1346 EREAD
1347 26BE 20C926 JSR RWPOSN ; GO POSITION FI LE I F REGD
1348 26Cl A901 LDA *1
1349 26C3 8DIA2B STA ISTATE ; SET I STATE = DISK INPUT
1350 26C6 4CE221_ _JMP CERTN ; DONE
1351
1352 RWPOSN - POSTI ON FOR READI WRITE
1353
1354 RWPOSN
1355 26C9 207A28 JSR FILSRC ; FIND THE FILE
1356 26CC 9006 BCC RWPI i SR IF FILE FOUND
l
1357 26CE 20B624 JSR EOPEN ; GO OPEN FOR KLUTZ
1358 26Dl 4CD726 JMP RWP2 ; THEN SKIP NEXT LINE
> 1359 RWPI
1360 2604 206428 JSR MVBUFP ; MOVE BUFF POINTERS
1361 RWP 2
1362 2607 AD2B2B LDA INOPTS ; GET IN OPTIONS
1363 26DA 2906 AND #R+B ; WAS IT B OR R
1364 26DC F013 BEG RWPR ; BR IF NOT
1365 26DE A203 LOX *3
1366 26EO 803428 RWP 2 A LDA CR,X ; MOVE REL REC
1367 26E3 9D8C35 STA CCBRRN,X ; AND REL BYTE
1368 26E6 CA DEX
1369 26E7 10F7 BPL RWP2A
1370 RWP3
1371 26E9 A90A LOA *CRGPOS ; INDICATE POISTION REQUEST
1372 26EB 8D8A35 STA CCBREG
1373 26EE 20CC27 JSR DOSGO
1374 26Fl 60 RWPR_ RTS ; DONE
1375
PAGE 37 SHEP APPLE ODS
PAGE
1376
1377 EEXEC - EXECUTE EXEC CMD
1378
1379 EEXEC
1380 26F2 20B624 JSR EOPEN OPEN FILE
1381 26F5 A0182B LDA CFTABA MOVE TABLE POINTERS
1382 26F8 807E28 STA EFT ABA
1383 26F8 AD192B LDA CFTABA+l
1384 26FE 8D7F2B STA EFTABA+l
1385 2701 8 D702B ST.lI ESTATE SET EX STATE NON ZERO
1386 2704 DOOE 8NE EXP2
]
1387
1388
1389 EPOS - EXECUTE POS ITION
1390
1391 .EPOS
1392 2706 207A28 JSR FILSRC
1393 2709 9006 8CC EXPI
1394 270B 20B624 JSR EOPEN
1395 270E 4C 1427 JMP EXP2
1396 2711 206428 EXPI JSR MVBUFP
1397 EXP2
1398 2714 AD2B2B LDA INOPTS GET OPTIONS
1399 2717 2904 AND #R TEST R
1400 2719 FOIB BE- EX2 BR NOT R
1401
1402 2718 AD3428 EXO LDA CR IF CR NOT ZERO
1403 271E D008 BNE EXIA THEN DECREMENT
1404 2720 AE3528 LDX CR+l
III
1405 2723 FOil BEG EX2
1406 2725 CE352B DEC CR+l
1407 2728 CE342B EXIA DEC CR
III
1408 272B 208827 EXI JSR RBYTE AND READ A RCORD
1409 272E F06E BEG ICFD4
1410 2730 C98D CMP #$8D UNTIL CR
..
1411 2732 DOF7 BNE EXI
1412 2734 FOE5 BEG EXO THEN TEST CR AGAIN
1413
\i)
1414 2736 60 EX2 RTS DONE
1415
1416 ECAT - PRINT CATALOG
]
1417
1418 ECAT
1419 2737 AD222B LDA SVSTK ; SAVE SAVED STACK PTR FOR RESTORE
1420 273A 48 PHA
1421 273B A906 LDA #CRGDIR
1422 273D 20B824 JSR OPEN ; GO PRETEND OPEN
1423 2740 68 PLA ; GET SAVED STACK PTR
1424 2741 8D222B _STA SVSTK i RESTORE IT
1425 2744 60 RTS
1426
PAGE 38 SHEP APPLE DOS
PAGE
1427
1428 EAS - EXECUTE APPLESOFT REQUEST
..
1429
1430 EAS
1431 2745 A900 LOA #0
1432 2747 AE802B LOX ASIBSW IF NOT ALREADY IN AS
1433 274A F006 BEG EASO THEN LOAD IT
1434 274C 8D802B STA ASIBSW ELSE CLEAR STATE
1435 274F 4C7620 JMP DB INIT AND GO INIT IE
1436
1437 EASO
..
1438 2752 20C522 JSR CLRFNS
1439 2755 A206 LOX #FASEL
1440 2757 BD802E EAS t LOA FASE-t, X
,
MOVE SYSTEM FILE NAME
1441 275A 9D3A2 E STA FNAME1-t, X
1442 2750 CA DEX
1443 275E DOF7 ENE EASt
..
1444
1445 EAS2
1446 2760 A9CO LOA #$CO
1447 2762 8D1A2E STA ISTATE FOR RAM APPLES OFT
1448 2765_ 4C9226 JMP ERUN GO LOAD AND RUN
1449
1
1450
1451 EINIT - EXECUTE INIT COMMAND
1452
1453 EINIT
1454 2768 ADOE20 LOA ASTART+l
1455 276B 8D8E35 STA CCBBSA
1456 276E A90B LOA #CRQFMT
1457 2770 20B824 JSR OPEN
1458 2773 4C8F25 JMP ESAVE
1459
PAGE 39 SHEP APPLE ODS
PAGE
1460
1461 OCTO - OUTPUT A CHAR TO OISK
1462
1463 OCTO
1464 2776 A0252 B LOA SVA ; CHAR IN SAVED ACU
1465 2779 809235 STA CCBOAT , PUT INTO CCBDATA AREA
1466 277C A904 LOA #CRGWR ; SET WRITE
1467 277E 808A35 STA CCBREG
1468 2781 A901 LOA #CRMNBT ; SET NEXT BYTE
1469 2783 808B35 STA CCBRGM
1470 2786 20CC27 JSR OOSGO ,GO WR ITE BYTE
1471 2789 60 RTS ,RETURN TO CALLER
1472
1473 INCFO - INPUT A CHAR FROM OISK
1474
1475 ICFO
1476 278A A906 LOA #6 ; SET OUT STE = 6
1477 ICF03
1478 278C 801B2B STA OS TATE ; TO CATCH ECHO
1479 278F 20BB27 JSR RBYTE
1480 2792 OOOF BNE ICF01 ; BR IF NOT ZERO CHAR
1481 ICF02
1482 2794 A903 LOA #3
1483 2796 401B2 B EOR OSTATE
1484 2799 0003 BNE ICFD4
1485 279B 200C25 JSR CLOSE
.,
1486 I CFD4
1487 279E A905 LOA #CREEOF
1488 27AO 4CF027 JMP ERROR , GO TO ERROR
.,
1489 ICF01
1490 27A3 80252B STA SVA ,PUT I NTD SAVEO ACU
1491 27A6 38 SEC ,SET FOR TS
..
.,
1492 27A7 4C0022 JMP ORTN ,GO RESTORE REGS ANO RTS
1493
I
.,
.,
.,
J .
PAGE 40 SHEP APPLE DOS
"
PAGE
1494
- 1495 NXTEXC - NEXT EXECUTE CHAR
1496
1497 NXTEXC
1498 27AA A07F2B LOA EFTABA+l MOVE TABLE AOR
1499 27AO 8541 STA ZPGWRK+l NO ZPG
1500 27AF A07E2B LOA EFT ABA
1501 27B2 8540 STA ZPGWRK
1502 2784 206428 JSR MVBUFP ; GO ~ O V E PTRS
1503 27B7 A903 LOA *3
1504 2789 0001 BNE ICF03
1
1505
1506 RBYTE - READ NEXT BYTE
1507
1508 RBYTE
1509 27BB A903 LOA *CRGRO J SET READ
1510 27BO 808A35 STA CCBREG
1511 27CO A901 LOA lICRMNBT ; SET NEXT BYTE
1512 27C2 808B35 STA CCBRGM
1513 27C5 20CC27 JSR OOSGD ; GO TO DOS
1514 27C8 A09235 LOA CCBOAT ; GET THE DATA BYTE
1515 27C8 60 RTS
1516
1
PAGE 41 SHEP APPLE ODS
PAGE
1517
1518 OoSGo - GoTo ODS
1519
1520 OoSGo
1521 27CC 20C92B JSR OoSENT ; GO TO ODS
1522 27CF BOOl BCS OGl ; BR IF ERROR
1523 2701 60 RTS ; OoNE
1524
1525 OGl
***
ERROR
***
1526 2702 AD9435 LOA cceSTA ; GET STATUS OF l i D
1527 2705 C905 CMP lICREEoF i EOF ?
1528 2707 0006 BNE OG3 ; BR IF NOT
1529 2709 A200 LOX lIO i SET OTHER ElF
1530 270B 8E923 5 STX CCBDAT ; DONE
1531 270E 60 RTS
1532 OG3
1533 270F 4CF027 J MP ERROR ; GO DO ERROR
1534
1535
~
u
PAGE 42 SHEP APPLE DOS
PAGE
1536
1537 ERROR ROUTINE
1538
1539 27E2 A90B ESYNTX LOA lICREFLK+I
1540 27E4 OOOA BNE ERROR
1541 27E6 A90C ENFA LOA #CREFLK+2
1542 27E8 0006 BNE ERROR
1543 27EA A90E MFERR LOA #CREFLK+4
1544 27EC 0002 BNE ERROR
1545 27EE A900 ERNUl LOA #CREFLK+3
1546
1547 ERROR
1548 27FO 80252B STA SVA ; SAVE MSG NUMBER
1549 27F3 207128 J SR CLRSTS
1550 27F6 A200 LOX #0
1551 27F8 200E28 JSR EMPR ; GO OUTPUT
1552 27FB AE252 B LOX SVA ; GET SAVE MSG
1553 2 7FE 200E28 JSR EMPR ; GO OUTPUT NSC
1554 2801 A20F LOX ttCREFLK+5
1555 2803 200E28 JSR EMPR
1556 2806 AE252B LOX SVA
1557 2809 A903 LOA #03
1558 280B 6C522Q JMP (BREAK )
1559
1560 EMPR
1561 280E B0082B LOA EMOTB. X i GET ITS DISPL
1562 2811 AA TAX ; INTO X
1563 EMPRI
1564 2812 8E292B STX TEMPIA ; SAVE OISPL
1565 2815 B0702A LOA EMSG. X J GET NSC CHAR
1566 2818 48 PHA ; SAVE CHAR
1567 2819 0980 ORA #$80 ; SET MSB ON
1568 281B 201022 JSR ORTNI ; OUTPUT CHAR
1569 281E AE292B LOX TEMPIA ; GET INDEX
1570 2821 E8 INX ; INCREMENT IT
1571 2822 68 PLA ; RE -LOAD CHAR
1572 2823 10ED BPL EMPRI ; BR IF MORE CHARS
1573 2825 60 RTS ; DONE
1574
l
J
PAGE 43 SHEP APPLE DOS
PAGE
1575
1576 OPNSUP - OPEN SET UP
1577
1578 OPNSUP
1579 2826 AD2C2B LDA CV ; VOLUME
1580 2829 8D8E35 STA CCBVOL
1581 282C AD2E2B LDA CD iDRIVE
1582 282F 8D8F35 STA CCBDRV
1583 2832 AD302B LDA CS ; SLOT
1584 2835 8D9035 STA CCBSLT
l
1585 2838 AD0620 LDA FNIADR i FILENAME 1 ADR
1586 2838 8D9235 STA CCBFNI
1587 283E AD0720 LDA FNIADR+l
1588 2841 8D93 35 STA CCBFN1+1
1589 2844 A540 LDA ZPGWRK
1590 2846 8DI82 B STA CFTABA
1591 2849 A541 LDA ZPGWRK+l
1592 2848 8DI92 B STA CFTABA+l
1593 284E AD9135 LDA CCBFUC IF NO CODE SET
1594 2851 D002 BNE 051
1595 2853 A940 LDA 41$40 THEN SET DATA
1596 051
1597 2855 8D91 35 STA CCBFUC
1598 2858 60 RTS
1599
1600 MVFNI - MOVE FILE NAME I TO FILE PTR
1601
1602 MVFNI
1603 2859 AOIF LDY lI31
1604 285B B93B2B MVFNIA LDA FNAMEI. Y
1605 285E 9140 STA (ZPGWRK) , Y
1606 2860 88 DEY
1607 2861 I OF8 BPL MVFNIA
1608 2863 60 RTS
1609
1610 MVBUFP - MOVE BUFFER PTRS TO CCB
1611
1612 MVBUFP
1613 2864 A020 LOY lI32
1614 2866 BI40 MVBPI LOA ( ZPGWRK), Y
1615 2868 997635 STA CC BFCB-32,Y
1616 286B C8 INY
1617 286C C028 CPY lI40
1618 286E OOF6 BNE MVBPI
1619 2870 60 RTS
1620
~
1621 CLRSTS - CLEAR STATES
1622
1623 CLRSTS
1624 2871 ACOO LOY lIO
1625 2873 8CIA2B STY ISTATE
1626 2876 8CIB2B STY OS TATE
1627 2879 60 RTS
1628
1
;e
PAGE 44 SHEP APPLE DDS
~
PAGE
1629
1630 FILSRC - SEARCH FOR FILE NAMEI
1631
1632 FILSRC
1633 287A A900 LOA #0 ; CLEAR SV AVAIL
1634 287C 8545 STA CNUM+l
1635
1636 287E 20A828 JSR TSINIT ; GO INIT SEARCH
1637 2881 4C8928 JMP FLSIA
1638 2884 20B028 F L S ~ JSR TSNXT ; LOOK AT NEXT
1639 2887 FOlD BEG FLS4 ; BR IF NO NEXT
1640
1641 2889 20C028 FLSIA JSR TSTOPN j GO TEST OPEN
1642 288C DOOA BNE FLS2 ; BR IF OPEN
1643
1644 288E A540 LOA ZPGWRK ; SAVE AVAIL ENTRY ADR
1645 2890 8544 STA CNUM
1646 2892 A541 LOA ZPGWRK+l
1647 2894 8545 STA CNUM+l
1648 2896 DOEC BNE FLSI ;GO LOOK SOME MORE
1649
1650 2898 AOIF FLS2 LOY "31 ; FILE HAD 32 CHARTS
1651 289A B140 FLS3 LOA (ZPGWRK), Y ; GET CHAR
1652 289C D93B28 CMP FNAME1. Y TEST CHAR
1653 289F DOE3 BNE FLSI ; DR NOT
1654 28Al 88 DEY
1655 28A2 10F6 BPL FLS3 ; LOOK AT 32 CHARS
1656 28M 18 CLC ; FOUND
1657 28A5 60 RTS ; DONE
1658
1659 28A6 38 FLS4 SEC ; NOT FOUND
1660 28A7 60 RTS ; DONE
1661
]
PAGE 45 SHEP AP PLE DOS
PAGE
1662
1663 TSINIT - INITIALIZE FOR FTAB SEARCH
1664 TSNXT - GET NEXT FTAB ENTRY
1665
1666 TSINIT
1667 28A8 AOO020 LOA FTAB ; GET 1ST PTR AOR
1668 28AB AE0120 LOX FTAB+l
1669 28AE OOOA BNE TSST
1670 TSNXT
1671 2880 A027 LOY 1t39 ; GE1'_ L I NK_
1672 2882 8140 LOA <ZPGWRK), Y
1673 2884 F009 BEG TSR 1 BR IF NO LINK
1674
1675 2886 AA TAX
1676 28B7 88 OEY
1677 28B8 8140 LOA < ZPGWRKJ, Y
1678 TSST
..
1679 288A 8641 STX ZPGWRK+l
1680 28BC 8 540 STA ZPGWRK
1681 28BE 8A TXA ; SET NE CC
Iiil
1682 28BF 60 TSR RTS ; RTN
1683
."
1684 TSTOPN - TST FOR OPEN FILE
1685
1686 TSTOPhi
1687 28CO AOOO LOY ItO ;GET 1ST CHAR OF FN
..
1688 28C2 8140 LOA (ZPGWRK) , Y
1689 28C4 60 RTS
1690
..
1691 TSTEXC - TEST CURRENT FILE FOR EXECUTE
;j))
1692
1693 TSTEXC
1694 28C5 A07028 LOA ESTATE IF ESTATE = 0
1695 28C8 EOOE BEG TXCI THEN NO EXECUTE FILE
1696 28CA A07E2B LOA EFT ABA TEST CURRENT
1697 28CD C540 CMP ZPGWRK
1698 28CF 0008 BNE_ _ TXC2 I S NOT
1699 280 1 AD7F2B LOA EFTABA+l
1700 2804 C541 CMP ZPGWRK+!
1701 2806 FOOl BEG_ TX,C2 __
I S
1702 2808 CA TXCI OEX I S NOT
1703 2809 60 TXC2 RTS DONE
1704
]
PAGE 46 SHEP APPLE DOS
PAGE
1705
1706 TSTFUC - TEST FILE USE CODE FOR PGM
1707
1708 TSTFUC
1709 28DA 4091 35 EOR CCBFUC
1710 28DD F007 BEG TFUCR
1711 28DF 297F AND U7F
1712 28El F003 BEG TFUCR
1713 28E3 4CEE27 JMP ERNUl
1714 28E6 60 TFUCR RTS
1715
>
l
J
PAGE 47 SHEP APPLE DOS
PAGE
1716
171 7 BLDFTB - BUILD FILE TABLES
1718 TABLE MAP :
1719 HIMEM. SOP
1720 SBUFF N (256)
1721 DBUFF N (256)
1722 FTB N ( FCBLEN)
1723 HEADER N ( 40)
1724
1725
1726 SBUFF 1
1727 OBUFF 1
1728 FTB 1
1729 HEADER 1
1730 THIS PROGRAM
1731
1732 HEADER MAP :
1733 FILENAME (32)
1734 FTB PTR ( 2)
1735 OBUF PTR (2 )
.w
1736 SBUF PTR (2 )
1737 LINK (2 )
1738
1739 BLOFTB
1740 28E7 38 SEC
1741 28E8 AOO020 LOA FTAB ; START OF FTAB AREA
1742 28EB 8540 STA ZPGWRK ; IS 1ST FTB PTR
17 43 28EO AOO120 LOA FTAB+l ; HEADER
1744 28FO 8541 STA ZPGWRK+l
1745 28F2 A0202B LOA CNFTBS i MOVE NO FTABS
1746 28F5 80292B STA TEMP1A ,TO TEMP
1747
174B 2BF8 AOOO BFT1 LOY lIO
1749 2BFA 98 TYA
1750 2BFB 9140 STA (ZPGWRK ). Y , 1ST CHAR FN=O
175 1 2BFO A020 LOY *32 ; INC Y TO FCB PTR
1752 28FF 38 SEC
1753 2900 A540 LOA ZPGWRK l END OF PTR HEADER
1754 2902 E92A SBC *,FCBLEN , MINUS FTAB LENGTH
1755 2904 9140 STA (ZPGWRKJ. Y J IS START OF FTB
1756 2906 48 PHA ,SAVE LOW AOR BYTE
1757 2907 A541 LOA ZPGWRK+l
1758 2909 E900 SBC lIO
1759 290B CB I NY
1760 290C 9140 STA (ZPGWRK). Y
1761 290E AA TAX
1762 290F CA OEX , FTB AOR - 256
1763 2910 6B PLA , IS AOR OIR BUFF
1764 291 1 4B PHA
1765 29 12 C8 INY
1766 2913 9140 STA (ZPGWRK ). Y ,SET OIR BUF PTR
1767 2915 BA TXA
l
1768 2916 CB INY
1769 2917 9140 STA (ZPGWRK ). Y
PAGE 48 SHEP APPLE DOS
1770 2919 AA TAX
1771 291A CA DEX ; DIR BUFF - 256
1772 291B 68 PLA ; IS SBUFF ADR
1773 291C 48 PHA
1774 2910 C8 INY
1775 291E 9140 STA (ZPGWRIO, Y
1776 2920 C8 INY
1777 2921 8A TXA
1778 2922 9140 STA (ZPGWRK), Y
1779
1780 2924 CE292B DEC_ TEMPIA ; DECREMENT TABLE INDEX
1
1781 2927 FOl7 BEG BFT2 ; COUNT AND BR IF DONE
1782 2929 AA TAX
1783 292A 68 ELA
1784 292B 38 SEC
1785 292C E928 sac lI40 ; SBUFF ADR - 40
1786 292E C8 INY
1
1787 292F 9140 STA (ZPGWRK) , Y ; IF ADR OF NEXT TAB
1788 2931 48 PHA ;WHICH GOES INTO
1789 2932 8A TXA j LINK
1790 2933 E900 SBC lIO
1791 2935 C8 INY
1792 2936 9140 STA (ZPGWRK ) , Y
1793 2938 8541 STA ZPGWRK+l ; AND INTO ZPGWRK
1794 293A 68 PLA ; FOR NEXT ENTRY
1795 293B 8540 STA ZPGWRK ; BUILD
1796 2930 4CF828 JMP 8FT! ; GO BUILD NEXT
1797
1798 BFT2
J
1799 2940 48 PHA
1800 2941 A900 LOA lIO ; SET LAST LINK
1801 2943 C8 INY ; TO ZERO
1802 2944 9140 STA (ZPGWRK) , Y
1803 2946 C8 INY
1804 2947 9140 STA (ZPGWRK) , Y
1805
1806 2949 AD802B LOA ASIBSW IF IE THEN GO
1807 294C FOOB BEG BFTIB DO IE STUFF
1808
1809 294E 68 PLA SET APPLESOFT
1810 294F 8574 STA ASHMl+1 UPPER MEM LIMITS
1811 2951 8570 STA ASHM2+1
1812 2953 68 PLA
1813 2954 8573 SeA ASHMI
1814 2956 856F STA ASHM2
1815 2958 60 RTS
1816
I
1817 BFT IB
1818 2959 68 PLA SET IB
1819 295A 8540 STlI IBHMEM+l UPPER MEM LIMITS
1820 295C 85CB STA IBSOP+ l
1821 295E 68 PLA
1822 295F 854C STA IBHMEM
J
1823 2961 85CA STA IBSOP
1824 2963 60 RTS
PAGE 49
1825 2964 60
1826
SHEP APPLE DOS
RTS ; DONE
-]
]
PAGE 50 SHEP APPLE DOS
~
;C"'-
1
PAGE
1827 ~
1828 MVISW - MOVE INPUT SWITCH
1829
1830 MVISW
I
1831 2965 A538 LOA INSW ,SAVE CHAR IN SWITCH
1832 2967 801E2B STA SVINS
1833 296A A539 LOA INSW+L
1834 296C 801F2B STA SVINS+l
1835
1836 296F A00220 LOA CUIA ,SE:r_ OB CHAR_ IN AOR
1837 2972 8538 STA INSW
1838 2974 A00320 LOA CINA+l
1839 2977 8539 STA INSW+l
1840
1841 2979 60 RTS
1842
1843 MVOSW - MOVE OUTPUT SWITCH
"
1844
1845 MVDSW
1846 297A A536 LOA OUTSW iSAVE CHAR OUT SWITCH
1847 297C 801C2B STA SVOUTS
1848 297F A537 _ LOA OUTSW+ l
1849 2981 80102B STA SVOUTS+l
"
"
1850
> 1851 2984 AD0420 LOA COUTA i5ET DB CHAR OUT ADR
1852 2987 8536 STA OUTSW
"
1853 2989 AD0520 LOA COUTA+l
1854 298C 8537 STA OUTSW+l
1855 298E 60 RTS
"
1856
"
,.
,.
,.
,.
~
~
PAGE 51 SHEP APPLE DOS
PAGE
1857
1858 COMMAND NAME TABLE
1859
1860 ECl
1861 CMONTB
1862 298F 49 OBOl "INIT"
2990 4E
2991 49
2992 04
1863 2993 4C OBOl "LOAD"
--
2994 4F
2995 41
2996 C4
1864 2997 53 DB0 1 "SAVE"
2998 41
2999 56
299A C5
]
1865 299B 52 080 1 "RUN"
299C 55
2990 CE
1866 299E 43 DBOl "CHAIN"
299F 48
29AO 41
29Al 49
29A2 CE
1867 29A3 44 OBOl "DELETE"
29A4 45
29A5 4C
29A6 45
29A7 54
29A8 C5
1868 29A9 4C OBOl "LOCK"
29AA 4F
29AB 43
29AC CB
1869 29AO 55 OBOl "UNLOCK"
29AE 4E
29AF 4C
29BO 4F
29Bl 43
2982 CB
1870 29B3 43 OBOl "CLOSE"
29B4 4C
29B5 4F
29B6 53
29B7 C5
1871 29B8 52 OBOl "READ"
29B9 45
29BA 41
293B C4
1872 29BC 4 5 OBOl "EXEC"
29BD 58
29BE 45
29BF C3
t
..
PAGE 52 SHEP APPLE DOS
"
1873 29CO 57 OBOI "WRITE"
29C l 52
29C2 49
..
29C3 54
29C4 C5
1874 29C5 50 0801 "POSITION"
29C6 4F
29C7 53
29C8 49
..
29C9 54
29CA 49
29CB 4F
29CC CE
1875 29CO 4F OBOI "OPEN"
29CE 50
29CF 45
2900 CE
I
1876 2901 41 OBOI "APPEND"
2902 50
2903 50
2904 45
2905 4E
2906 C4
1877 2907 52 0801 "RENAME"
2908 45
2909 4E
290A 41
2908 40
290C C5
J
1878 2900 43 OBOI "CATALOG"
290E 41
290F 54
29EO 41
29El 4C
29E2 4F
29E3 C7
1879 29E4 40 0801 "MON"
29E5 4F
29E6 CE
1880 29E7 4E OBOI "NOMON"
29E8 4F
l
29E9 40
e 29EA 4F
29EB CE
1881 29EC 50 DB01 "PRtt: ,.
29EO 52
29EE A3
1882 29EF 49 OBOI " IN"' ''
29FO 4E
29F l A3
1883 29F2 40 OBOI "MAXFILES"
29F3 41
29F4 58
]
29F5 46
29F6 49
PAGE 53 SHEP APPLE DOS
29F7 4C
29F8 45
29F9 D3
1884 29EA 41 DBOl "APPLESDFT"
l
29FB 50
29FC 50
29FD 4C
29FE 45
29FF 53
2AOO 4F
l
2AOl 46
2A02 D4
lB85 2A03 42 DBOl "BSAVE"
2A04 53
2A05 41
2A06 56
2A07 C5
lBB6 2AOB 42 DBOl "BLOAD"
2A09 4C
2AOA 4F
2AOB 41
2AOC C4
lBB7 2AOD 00 DB 0
lB88
1
J
- PAGE 54 SHE? APPLE DDS
I
PAGE
1889
1890 COMMAND SYNTAX OP EGUATES FOR SYNTAX BYTE ONE
1891
1892 0080 NPB EGU $80 ; NO PARMS OK. COMMAND GOES TO BASIC
1893 0040 NPE EGU $40 ; NO PARMS OK. COMMAND TO EXECUT I ON RTN
"
1894 0020 FNI EGU $20 ;FILE NAMEI REGD
1895 0010 FN2 EGU_ $10 ;FILE NAME2 REGD
1896 0008 NUMI EGU $08 ; NUMERIC 0- 7 REGD
"
1897 0004 NUM2 EQU $04 ; NUMERIC 1-10 REQD
1898
1899 COMMAND SYNTAX OP EQUATES FOR SYNTAX BYTE TWO
1900
1901 0040 V EQU $40 J VOLUME ALLOWED
19 02 0 0 20 0 EQU $20 ; DR I VE ALLOWED
'.
1903 00 10 S EQU $10 ; SLOT ALLOWED
1904 0008 L EGU $.08 ; LENGTH ALLOWED
1905 0004 R EQU $04 ; RECORD NUMBER ALLOWED
]
1906 0002 B EQU $02 ; BYTE NUMBER ALLOWED
1907 0001 A EQU $01 ; ADDRESS
1908 0080 CI O EGU $80 ; c. 1, OR a ALLOWED
1909
19 10 COMMAND SYNTAX TABLE-
]
1911 EACH COMMAND HAS TWO BYTE ENTRY
1912
1913 CMDSTB
1914 2AOE 2 0 DB FN1,V+D+S ; INIT
2AOF 70
1915 2AI0 AO DB NPB+FNl , V+D+S j LOAD
2All 70
1916 2A12 AO DB NPB+FN1. V+O+S ; SAVE
2A13 70
1917 2A14 AO DB NPB+FN1 ,V+D+S ; RUN
2A15 70
1918 2A16 20 DB FN1.V+.D+S j CHAIN
]
2A17 70
1919 2A18 20 DB FN1,V+D+S ; DELETE
2A19 70
1920 2AIA 20 DB FN1. V+O+S ; LOCK
2AIB 70
1921 2AIC 20 DB FN-1_, V+O-'*'S ; UNLOCK
2AID 70
]
1922 2AIE 60 DB NPE+FNl, Q ; CLOSE
2AIF 00
1923 2A20 20 DB FNt. B+R ; READ
2A21 06
1924 2A22 20 DB FN1. R+V+D+S ; EXEC
2A23 74
1925 2A24 20 DB FNl, B+R ; WR ITE
2A25 06
1926 2A26 20 DB FNLR ; POSITION
2A2 7 04
1927 2A28 2 0 DB FNl . L+V+D+S ; OPEN
2A29 78
1928 2A2A 20 DB FNl . L+V+D+S ; APPEND
.. PAGE 55 SHEP APPLE DOS
.)
.)
2A2B 78
1929 2A2C 30 DB FN1+FN2. V+O+S ; RENAME
.)
.)
2A2D 70
1930 2A2E 40 DB NPE,V+D+S , CATALOG
2A2F 70
.\ .)
1931 2A30 40 DB NPE. CIO , MONITOR
2A31 80
1932 2A32 40 DB NPE. C IO ,NO MONITOR
2A33 80
1933 2A34 08 DB NUMLO ,PR#
J
2A35 00
1934 2A36 08 DB NUMLO ; I N#-
2A37 00
1935 2A38 04 DB NUM2. 0 ; MAXFILES
2A39 00
1936 2A3A 40 DB NPE,V+D+S , APPLESOFT
2A3B 70
1937 2A3C 20 DB FN1.V+O+S+A+L BSAVE
2A3D 79
1938 2A3E 20 DB FN1. V+D+S+A BLOAD
2A3F 71
1939
II
I -
PAGE 5b SHEP APPLE DOS
PAGE
1940
1941 OPTAB - OPTIONAL PARMS SYNTAX TABLES
-, 1942
1943 OPTABl
1944 2A40 Db OBll "VDSLRBACI O"
2A41 C4
2A42 03
2A43 CC
'.
2A44 02
2A45 C2
2A4b Cl
2A47 C3
2A48 C9
2A49 CF
1945 OOOA DPT1 L EQU *-DPTABl
194b OPTAB2
1947 2A4A 40 DB V,D,S,L,R.B.A,C IO+MC,CIO+MI,CIO+MO
2A4B 20
2A4C 10
2A4D 08
2A4E 04
2A4F 02
2A50 01
2A51 CO
2A52 AO
2A53 90
1948 OPTAB3
1949 2A54 0000 DB @@0.@@254 ; VOL RANGE
I
2A5b FEOO
1950 2A58 0100 DB @@:1. @@:2 DRIVE RANGE
2A5A 0200
1951 2ASC 0100 DB @@L @@7 SLOT RANGE
2A5E 0700
1952 2AbO 0100 DB @@1.@@327b7 ; LENGTH RANGE
2M2 FF7F
1953 2Ab4 0000 DB @@0,@@327b7 ; REC NO RANGE
2Mb FF7F
1954 2M8 0000 DB @@0 , @@327b7 ; REC BYTE NO RANGE
2AbA FF7F
1955 2AbC 0000 DB @@O.@@$COOO ; ADDRESS RANGE
2AbE OOCO
195b
J
1
l
PAGE 57 SHEP APPLE DOS
PAGE
1957
195B ERROR MESSAGE TABLES
1959
1960 EMSG
1961 2A70 00 08 SOD,S07
2A71 07
1962 2A72 2A 080 1 "***DISK: "
2A73 2A
2A74 2A
2A75 44
2A76 49
2A77 53
2A7B 48
2A79 3A
2A7A AD
1963 0008 EMI EGU *-EMSG
l
1964 OOOB EM2 EGU *-EMSG
1965 OOOB EM3 EGU *-EMSG
1966 0008 EM4 EGU *-EMSG
1967 2A7B 53 OBOI "SYS"
2A7C 59
2A70 03
196B OOOE EMS EGU *-EMSG
1969 2A7E 45 DBOI "END OF DATA"
2A7F 4E
2ABO 44
2ABI 20
2AB2 4F
2AB3 46
2AB4 20
2AB5 44
2AB6 41
2AB7 54
2ABB Cl
1970 0019 EM6 EGU *-EMSG
1971 2AB9 46 OBOI "FILE NOT FOUND"
2ABA 49
2ABB 4C
2ABC 45
2ABD 20
l
2ABE 4E
2ABF 4F
2A90 54
2A91 20
2A92 46
2A93 4F
2A94 55
2A95 4E
2A96 C4
1972 0027 EM7 EGU *-EMSG
1973 2A97 56 080 1 "VOLUME MISMATCH"
2A9B 4F
l
2A99 4C
2A9A 55
I
PAGE 58 SHEP APPLE DOS
2A9B 40
2A9C 45
\II 2A9D 20
2A9E 40
2A9F 49
2AAO 53
2AAl 40
2AA2 41
2AA3 54
2AA4 43
2AA5 C8
1974 0036 EM8 EGU *-EMSG
1975 2AA6 44 DBOI "DISK I/O"
2AA7 49
2AA8 53
2AA9 4B
2AAA 20
2AAB 49
2AAC 2F
2AAD CF
1976 003E EM9 EGU *-EMSG
1977 2AAE 44 DBOI "DISK FULL"
I
2AAF 49
2ABO 53
2ABl 4B
2AB2 20
2AB3 46
2AB4 55
2AB5 4C
2AB6 CC
1978 0047 EMI0 EGU *-EMSG
1979 2AB7 46 DBOI "FILE LOCKED"
2AB8 49
2AB9 4C
j
2ABA 45
2ABB 20
2ABC 4C
2ABD 4F
2ABE 43
2ABF 4B
J
2ACO 45
2ACl C4
1980 0052 EM 11 EGU *-EMSG
1981 2AC2 43 DBOI "CMD SYNTAX"
2AC3 40
2AC4 44
1
2AC5 20
2AC6 53
2AC7 59
2AC8 4E
2AC9 54
2ACA 41
2ACB 08
"
1982 005C EM12 EGU *-EMSG
fa
1983 2ACC 4E DBOI "NO FILE BUFFS AVAIL"
PAGE 59 SHEP APPLE DOS
2ACD 4F
2ACE 20
2ACF 46
2ADO 49
2ADl 4C
2AD2 45
2AD3 20
2AD4 42
2AD5 55
2AD6 46
I
2AD7 46
2AD8 53
2AD9 20
2ADA 41
2ADB 56
2ADC 41
2ADD 49
2ADE CC
1984 006F EM13 EGU *-EMSG
1985 2AOF 4E OBOl "NOT BASIC PROGRAM"
2AEO 4F
2AEl 54
2AE2 20
2AE3 42
2AE4 41
2AE5 53
2AE6 49
2AE7 43
2AE8 20
2AE9 50
2AEA 52
2AEB 4F
..
2AEC 47
2AED 52
2AEE 41
2AEF CO
1986 0080 EM14 EGU *-EMSG
1987 2AFO 50 DBOl "PROGRAM TOO LARGE"
2AFl 52
2AF2 4F
2AF3 47
2AF4 52
2AF5 41
2AF6 4D
2AF7 20
2AF8 54
2AF9 4F
.,
2AFA 4F
2AFB 20
2AFC 4C
2AFO 41
2AFE 52
J
2AFF 47
2BOO C5
1988
PAGE 60 SHEP APPLE DOS
1989 0091 EML EGU *-EMSG
lit
1990 2BOI 20 DB " ERROR"
2B02 45
..
2B03 52
2B04 52
2B05 4F
2B06 52
1991 2B07 BD DB S8D
1992 EMDTB
lit
1993 2B08 00 DB O.EM1,EM2, EM3 , EM4
2B09 OB
l
2 BOA OB
..
2BOB OB
2BOC OB
1994 2BOD OE DB EM5.EM6.EM7. EMB.EM9
lit
2BOE 19
2BOF 27
2Bl0 36
2Bll 3E
1995 2B12 47 DB EM10.EMll.EMI2.EMI3.EMI4
2B13 52
2B14 5C
2B15 6F
2B16 80
..
1996 2B17 91 DB EML
1997
..
,.
..
1
PAGE 61 SHEP APPLE DDS
PAGE
1998
1999 MI SC BUT REGD CELLS
2000
2001 2BI8 0000 CFTABA DB @o iCURRENT FILE TABLE POINTER
l
2002 2BIA 00 ISTATE DB 0 ; INPUT STATE
2003 2BIB 00 oSTATE DB a ; OUTPUT STATE
2004 2BIC 0000 SVoUTS DB @o ; SAVED OUT SWITCH
2005 2BIE 0000 SVI NS DB @o ; SAVED IN SWITCH
2006 2B20 00 CNFTBS DB 0 ; CURRENT NO FILE TABLES
2007 2B21 03 DFNFTB DB 3 iDEFAULT NO FILE TABLES
2008 2B22 00 SVSTK DB 0 ; SAVED STACK PTR
2009 2B23 00 SVX DB 0 ; DSAVED X REG
2010 2B24 00 SVY DB 0 ; SAVED Y REG
2011 2B25 00 SVA DB 0 ; SAVED ACU
2012 2826 00 LBUFD DB 0 ; LINE BUFF DISPL
2013 2B27 00 MoNMOD DB 0 iMONITOR MODE BITS
2014 0040 MC EGU S40 i MONITOR CMOS
2015 0020 MI EGU S20 ; MONITOR INPUT
2016 DOlO MO EGU SIO ; MONITOR OUTPUT
2017 2B28 FF CMDNo DB SFF ; COMMAND NO
2018 2B29 00 TEMPIA DB 0
2019 2B2A 00 TEMP2A DB 0
2020 2B2B 00 INoPTS DB 0 ; INPUT OPTIONS
2021 CUR OPT ; CURRENT oPTI oNS
2022 2B2C 0000 CV DB @@O ; VOLUME
2023 2B2E 0000 CD DB (!(!O ; DRIVE
2024 2B30 0000 CS DB (!@O ; SLOT
2025 2B32 0100 CL DB @@I ; RECORD LENGTH
2026 2B34 0000 CR DB (!@O ; RECORD NUMBER
2027 2B36 0000 CB DB (!(!O ; RECORD BYTE
2028 2B38 0000 CA DB @@O ; ADDRESS
2029 2B3A 00 1MB ITS DB 0
2030 2B3B FNAMEI RMB 32 ; FILENAME 1
2031 2B5B FNAME2 RMB 32 ; FILENAME 2
2032 2B7B 03 DFNFTS DB 3 ; DEFAULT FILE TABLES = 3
2033 2B7C 84 CCHAR DB S84 ; CONTROL CHAR
2034 2B7D 00 ESTATE DB 0 ; EXECUTE STATE
2035 2B7E 00 EFTABA DB 0.0 iEXECUTE FILE TABLE POI NTER
2B7F 00
2036 2B80 00 ASIBSW DB 0 ; APPLESOFT, IB SWITCH
l
2037 2B81 D3 FASB DB I I "SVSASB"
2B82 D9
2B83 03
2B84 Cl
2B85 03
2B86 C2
l
2038 0006 FASBL EGU *-FASB
2039
PAGE 62 SHEP APPLE DOS
PAGE
2040
2041 DOS ADR TABLES (RELOCATED)
2042
2043 sAT2
2044 2B87 E837 AloB DB @@IoB i S-ADR lOB
2045 2B89 8A33 AVTOC DB @@VTOC ; 6-ADR VTOC
2046 2B8B 8A34 AVOLDR DB @@VOLDIR ; 7- ADR VoLDIR
2047 2B8D 0040 AEND DB @@EDOS FEND OF DOS
2048
,
2049 2B8F 5C33 CMDVT DB ; O-NULL
2050 2B91 E42B DB @@FOPEN- l ; 1-0PEN FI LE
2051 2B93 952C DB @@FCLOSE- l ; 2-CLOsE FILE
2052 2B95 BF2C DB @@FREAD-l ; 3-READ DATA
2053 2B97 D72C DB @@FWRITE-l ; 4-WRITE DATA
2054 2B99 8020 DB @@FDEL-l ; 5-DELETE FILE
2055 2B9B ED2D DB @@RDIR-l i6-READ DIRECTORY
2056 2B9D 572D DB @@FLoCK-l ; 7-LOCK A FILE
2057 2B9F 5E2D DB @@FUNLCK-l ; a-UNLOCK A FILE
2058 2BAl A12C DB @@FRNME-l ; 9-RENAME
2059 2BA3 7A2D DB @@FPOSTN-l ; 10-POSITION A FILE
2060 2BAS 6A2E DB @@FFMT-l ; FORMAT
2061 2BA7 5C33 DB @@GOOOIO-l ; 1t-SPARE
2062
2063 RVT
>
2064 2BA9 5C33 DB @@GOODIO-l
2065 2BAB F12C DB @@RNXBYT-l ; l - RD NEXT BYTE
2066 2BAD FD2C DB @@RNXBLK-l ; l - RD NEXT BLOCK
2067 2BAF EE2C DB @@RsPBYT-l ; 2-RD SPEC IFIC BYTE
2068 2BBl FA2C DB @@RsPBLK-l ; 3 - RD SPECIFIC BLOCK
2069 2BB3 5C33 DB @@GOODIO-l ; 4 - SPARE
2070 2BB5 5C33 DB @@GOODIO-l ; 5- SPARE
2071 2BB7 5C33 DB @@GOODIO-l ; 6 - SPARE
2072
2073 WVT
2074 2BB9 5C33 DB @@GOODIO-l
2075 2BBB 2520 DB @@WNXBYT-l ; l-WR NEXT BYTE
2076 2BBD 3120 DB @@WNXBLK-l ; WR NEXT BLOCK
2077 2BBF 2220 DB @@WSPBYT-l ; 2-WR sPECIFIC BYTE
2078 2BC 1 2E2D DB @@WSPBLK-l ; 3-WR SPECIFIC BLOCK
2079 2BC3 5C33 DB @@GOODIO- l ; 4 - SPARE
l
2080 2BC5 5C33 DB @@GooDIo-l ; 5- SPARE
2081 2BC7 5C33 DB @@GooDIo- l ; b- SPARE
2082 EAT2
2083
1
1
PAGE 63 SHEP APPLE DOS
PAGE
1
2084
2085 DOSENT - DOS EXTERNAL ENTRY POINT
2086 ENTRY PARM:
2087 A. Y = eeB PTR
]
2088 EX IT PARM:
2089 CARRY CLEAR = OPERATI ON OK
2090 CARR_Y SET = ERROR
2091
2092 SC2
fj
2093 OOSENT
2094 2BC9 BA TSX
fj 2095 2BCA 8E7F33 STX ENTSTK
2096 2BCO 204A2E JSR CLCFCB ;GO CALCULATE EC8
2097 2BOO A08A35 LOA CCBREG ; GET REGUEST
2098 2803 C90C CMP #CRGMAX ; TTEST REG RANGE
~
C>
2099 2B05 BODB --BCS ERR2 ; BR OUT OF RANGE
0
; J . ~ .
>
J
;-
2100 2B07 OA ASLA ; REG CODE *2
2101 2B08 AA TAX
1 1 q
2102 2B09 809028 LOA CMDVT+L X ; PUSH AOR ONTO STACK
2103 2BOC 48 PHA
~ 2104 2BOO B08F2B LOA CMDVT, X
2105 2BEO 48 PHA
2106 2BE1 60 OENRTS RTS
W' ...
2107 2BE2 4C41 33 ERR2 JMP ERROR2
2108
iitiJ
]
PAGE 64 SHEP APPLE DOS
r"
PAGE
2109
2110 FOP EN - OPEN A FILE
2111
2112 FOP EN
2113 2BE5 20EB2B JSR DoPEN
2114 2BE8 4C5D33 JMP GooDIo
2115
2116 DoPEN
211 7
2118 2BEB 20662C JSR DCBSUP
2119
2120
2121 2BEE A901 LOA 4U
2122 2BFO 80B135 STA DCBSDL+l
2123 2BF3 AE8D35 LOX CCBRLN+ l ; MOVE RECORD LENGTH
2124 2BF6 AD8C35 LOA CCBRLN
2125 2BF9 0005 BNE F02
2126 2BFB EOOO CP X *0
2127 2BFD 0001 BNE F02
2128 2BFF E8 INX ; SET RL=256
2129 2COO 80B635 F02 STA OCBRCL
2130 2C03 8EB735 STX DCBRCL+l
2131
2132 2C06 20B631 JSR FNOFIL ; GO FIND FILE
2133 2C09 9033 BCC F03 ; BR IF FOUND
2134 ; CREATE FILE
2135 2COB 8E8033 STX TEMPl ; SAVE VOIR INDEX
2136 2COE 202932 J SR GETSEC ;GO ALLOCATE SECTOR
2137 2Cll AE8033 LOX TEMP 1
2138 2C14 909634 STA VDFILE+l. X ; PUT SECTOR INTO VOIR
2139 2C17 80A235 STA OCBFOS ; PUT SECTOR AS 1ST FILE OIR
2140 2C1A 80A435 STA DCBCDS i PUT SECTOR AS CURRENT FILE DIR
2141
2142 2Cl0 ADB035 LOA DCBATK ; GET ALLOCATED TRACK
2143 2C20 909534 STA VDFILE. X ; PUT INTO VOIR
2144 2C23 8DA1 35 STA DCBFDT ; AND AS 1ST FILE DI R
2145 2C26 8DA335 STA DCBCDT ; AND AS CURRENT FILE DIR
2146
2147 2C29 AD91 35 LOA CCBFUC ; SET USE CODE
2148 2C2C 909734 STA VDFILE+2. X ; INTO DIRECTORY
2149
2150 2C2F 203430 J SR WRVDIR ;Go WRITE VOL DIRECTORY
2151
2152 2C32 20002F JSR MVFCBD ; MOVE FILE DIR ADR TO ZP
..
2153 2C35 20112F JSR CLRSEC ; GO CLEAR IT
2154 2C38 20372F JSR WRFDGo ; GO WRITE FILE DIRECTORY
2155 DONE CREATION
]
..
2156 2C3B AE8033 LOX TEMPt ; RE-GET INDEX
2157
2158 F03
2159 2C3E BD9534 LOA VDFILE. X ; MOVE FILE DIR TRACK
2160 2C41 8DA135 STA DCBFDT
J
2161 2C44 BD9634 LOA VDFILE+l, X i MOVE FILE DIR SECTOR
2162 2C47 8DA235 STA DCBFDS
PAGE 65 SHEP APPLE DOS
2163 2C4A BD9734 LDA VDFILE+2, X ;70VE FILE USE CODE
2164 2C4D 8D9135 STA CCBFUC
2165 2C50 80C235 STA DCBFUC
2166
2167 2C53 A9FF LDA #255 J INDI CATE NO SECTOR
2168 2C55 BDAE35 STA DCBCMS J IN MEMORY
2169 2C58 BDAF35 STA DCBCMS+ l
2170 2C5B ADB1 33 LDA VTDMS J MOVE MAX FD SECTS
2171 2C5E 8DA835 STA DCBDMS iTO DCB
..
2172 2C61 18 CLC
2173 2C62 205B2F JBR RDFDI R i_READ 1ST DI RECTORY RECORD
2174
'll
2175
2176
2177 2C65 60 RTS
2178 Iii
2179 DCBSUP
2180 2C66 A900 LDA
2181 2C68 AA TAX W
2182 2C69 9DA1 35 F01 STA FCBDCB, X ; CLEAR DCB
2183 2C6C E8 INX
2184 2C6D E029 CPX
W
2185 2C6F DOF8 BI\IE FOI
2186
2187 2C71 AD8E35 LDA CCBVOL ; MOVE VOL W
2188 2C74 49FF EOR i INVERT VOL BITS
2189 2C76 8DC535 STA DCBVOL
..
2190 2C79 AD8F35 LDA CCBDRV ; MOVE DR IVE
W
2191 2C7C 8DC435 STA DCBDRV
2192 2C7F AE8333 LDX ENTSLT ; MOVE SLOT IF GI VEN
W 2193 2C82 AD9035 LDA CCBSLT ;GET USER SPEC SLOT
2194 2C85 F005 BEQ FOIiI ; BR IF NOT US SLOT
2195 2C87 OA ASLA i SLOT*16
W
2196 2C88 OA ASLA
2197 2C89 OA ASLA
2198 2C8A OA ASLA
2199 2C8B AA TAX
Iii)
2200 FOIA
2201 2C8C 8EC335 STX DCBSLT
2 202 2CBF AD7A33 LDA GENVTN ,MOVE VTOC TRACK NO
til
2203 2C92 8DC635 STA DCBVTN
2204 2C95 60 RTS
2205
I
F
PAGE
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
66
2C96
2C99
2C9C
SHEP
20A132
201A2F
2031 2F
2216 2C9F 4C5D33
2217
APPLE DOS
FCLOSE
PAGE
FCLOSE - CLOSE A FILE
JSR FRETRK ;FREE UNUSED SECTORS
JSR WRSECT ;WRITE OPEN SECTOR
JSR WRFDIR ; GO WRITE FILE DIRECTORY
JMP GOODIO ; DONE
PAGE 67 SHEP APPLE DOS
PAGE
2218
2219 FRNME - RENAME A FILE
2220
2221 FRNME
2222 2CA2 20E82B JSR DOPEN ; GO OPEN FILE
2223 2CA5 ADC235 LOA DCBFUC ; GET USE CODE
2224 2CA8 302B BMI ERi 0 ; BR IF LOCKED
2225 2CAA AD8C35 LOA CCBFN2 ; MOVE NEW FN
2226 2CAD 8542 STA ZPGFCB ; PTR TO ZPG
2227 2CAF AD8D35 LOA CCBFN2+1
2228 2CB2 8543 STA ZPGFCB+l
2229 2CB4 AE8033 LOX TEMPI ; GET VOIR INDEX
2230 2CB7 200132 JSR MIlFN ;CO MOVE FILE NAME
2231 2CBA 203430 JSR WRVDIR ; GO WRITE VOIR
2232 2CBD 4C5D33 JMP GOODIO ; DONE RENAME
2233
PAGE 68 SHEP APPLE DOS
/-"
PAGE
J
"
2234
2235 FREAD - READ A FI LE
"
W 2236
2237 FREAD
2238
"
W 2239 2CCO AD8B35 LDA CCBRGM ; GET REG MOD
2240 2CC3 C905 CMP #CRMMAX ; TEST LIMIT
2241 2CC5 BOOB BCS ERR3A i BR BAD
"
2242
2243 2CC7 OA ASLA ; COOE*2
2244 2CC8 AA TAX
"
2245 2CC9 BDAA2B LDA 'RVT+l, X ; GET READ ROUTINE
2246 2CCC 48 PHA ; VECTOR ADR
2247 2CCD BDA92B LDA RVT.X
2248 2CDO 48 PHA ; AND
2249 2CDI 60 RTS ;GO TO IT
l
2250
..
2251 2CD2 4C4533 ERR3A JMP ERROR3
2252 2CD5 4C5933 ERIO JMP ERRRIO
2253
2254 FWRITE - WRITE A FILE
..
2255
2256 FWRITE
..
2257 2CD8 ADC235 LDA DCBFUC i IS FILE LOCKED
2258 2CDB 30F8 BMI ERIO i BR IF LOCKED
2259 2CDD AD8B35 LDA CCBRGM ; GET REG MOD
..
2260 2CEO C905 CMP #CRMMAX ; IN RANGE
2261 2CE2 BOEE BCS ERR3A ; BR IF NOT IN RANGE
2262
2263 2CE4 OA ASLA
2264 2CE5 AA TAX
2265 2CE6 BDBA2B LDA WVT+1. X ; GET ROUTINE ADR
2266 2CE9 48 PHA
2267 2CEA BDB92B LDA WVT. X
2268 2CED 48 PHA
2269 2CEE 60 RTS ; AND GO TO IT
2270
..
I ..
1
PAGE 69 SHEP APPLE DOS
PAGE
2271
2272 RSPEYT - READ A SPECIFIC BYTE
2273
2274 RSPBYT
2275 2CEF 200E32 JSR LoCSEC ; Go GET REGO REL SECTOR
2276
2277 RNXBYT - READ NEXT BYTE
2278
2279 2CF2 201020 RNXBYT J SR GETBYT i GO GET BYTE
2280 2CF5 809235 STA CCBDAT ; PUT IN CCB
2281 2CF8 4C5033 J MP GooOIo ; DONE
2282
2283 RSPBLK - READ A SPECIFIC BLOCK
2284
2285 2CFB 200E3 2 RSPBU\ J SR LOCSEC ; GO LOCATE REL SECTOR
2286
2287 RNXBLK - READ NEXT BLOCK
2288
2289 RNXBLK_
2290 2CFE 20A231 J SR OTBLN ; GO DEe R LEN (NOT RTN IF=O)
2291 2001 201 020 J SR GETBYT ; GO GET BYTE
2292 2004 48 PHA
2293 2005 208F31 JSR MIBOA ; GO MOVE BLOCK AOR AND INCR
2294 2008 AOOO LOY .0
2295 200A 68 PLA
2296 200B 9142 STA (ZPGFCB ) , Y ; SET DATA BYTE
2297 2000 4CFE2C JMP RNXBLK ; Go FOR NEXT BYTE
2298
2299 GETBYT - GET A DATA BYTE
2300
2301 GETBYT
2302 2010 20A330 J SR LOCNXB ; LOCATE NEXT BYTE
2303 2013 BOOB BCS EoFIN J BR IF EoF
2304 2015 B142 LOA (ZI'GFCB), Y ; GET OAT BYTE
2305 2017 48 PHA J SAVE IT
2306 2018 204831 J SR INCRRB ; INCR REC BYTE
2307 201B 208131 JSR INCSC8 i INCR S EC BYTE
2308 2D1E 68 PLA ; GET SAVED BYTE
2309 201F 6 0 RTS ; RETURN
2310
2311 2020 4C4D33 EoFIN JMP ERRoR5 ; GO TO EOF RTN
2312
PAGE 70 SHEP APPLE DDS ,
PAGE
(If
2313 -----'
2314 WSPBYT - WRITE SPECIFIC BYTE
(If
"
2315
2316 WSPBYT
1
2317 2023 200E32 JSR LOCSEC ; GO LOCATE SECTOR
"
2318
2319 WNXBYT - WRITE NEXT BYTE
2320
(If
2321 WNXBYT
2322 2026 AD9235 LDA CCBDAT i GET THE BYTE
I
2323 2D29 20422D JSR PUTBYT ; GO WRITE BYTE
lit
2324 202C 4C5033 JMP GOOOIO ; DONE
2325
2326 WSPBLK - WRITE A SPEC IFIC BLOCK
(j
2327
2328 WSPBLK
2329 202F 200E32 JSR LOCSEC i GO LOCATE SECTOR
2330
2331 WNXBLK - WRITE NEXT BLOCK
2332
...
2333 WNXBLK
2334 2D32 208F31 JSR MIBDA ; GO MOVE ADR TO ZPG AND DEC
2335 2035 AOOD LOY DO
..
2336 2037 B142 LDA (ZPGFCB ), Y ; GET DATA BYTE
2337 2039 204220 JSR PUTBYT ; GO PUT IT
2338 203C 20A231 JSR OTBLN ; GO DEC ELK LEN (NOT RTN IF = 0)
2339 203F 4C322D JMP WNXBLK
..
2340
2341 PUTBYT - PUT OUT ONE BYTE
..
2342
2343 PUTBYT
2344 2042 48 PHA i SAVE OATA BYTE
..
2345 2043 20A330 JSR LOCNXB i GO LOCATE NEXT BYTE
.2346
2347 2046 68 PBO PLA i GET SAVED BYTE
..
2348 2047 9142 STA (ZPGFCB) ,Y ; PUT THE BYTE
2349 2049 A940 LOA
__ !lUO
; SET WR lTE SECTOR REGO
2350 204B 00A535 ORA DCBWRF
..
2351 204E 80A535 STA DCBWRF
2352
2353 2051 204831 JSR INCRRB ; INCR REL REC BYTE
..
2354 2054 208131 JSR INCSCB i INCR SECTOR BYTE
2355 2057 60 RTS i DONE
2356
It
I \9
tt
PAGE 71 SHEP APPLE DOS
PAGE
2357
2358 FLOCK - LOCK A FILE
~ 2359
2360 2058 A980 FLOCK LOA #$80 ; REMEMBER LOCK
I
2361 205A 808233 STA TEMP3
2362 2050 0005 BNE LCKGo
2363
2364 FUNLCK - UNLOCK A FILE
~
2365
2366 205F A900 FUNLCK LOA #00 ; REMEMBER UNLOCK
I
2367 2061 808233 STA TEMP3
~
2368
2369 LCKGo
2370
~
2371 2064 20EB2B JSR OOPEN ; GO OPEN FILE
2372 2067 AE8033 LOX TEMPI
J
2373 206A 809734 LOA VDFILE+2. X ; GET FILE USE CODE
,jj
2374 2060 297F AND #$7F ; TURN OFF LOCK
2375 206F 008233 ORA TEMP3
2376 2072 909734 STA VDFILE+2 . X
2377 2075 203430 JSR WRVOIR
2378 2078 4C503.3 __ M ~ GoOO.I0
I
2379
-
2380 FPOSTN - POSITION A FILE
> 2381 207B 200E32 EPoSTN JSR LoCSEC ; GO POSITION
2382 207E 4C5033 JMP GooOIo ; DONE
2383
2384
]
]
r
PAGE 72 SHEP APPLE ODS
PAGE
2385
2386 FDEL - OELETE A FILE
G 2387
2388 FOEL
2389 2081 20EB2B J SR OoPEN ,GO OPEN FILE
(;
2390
2391 2084 AE8033 F02 LDX TEMPI ,SAVED INOEX
2392 2087 B09734 LOA VDFILE+2, X ; IS FILE LOCKED
2393 2DBA 1003 BPL F03 , BR NOT LOCKED
2394 208C 4C59 33 JMP ERRR10
2395
2396 F03
2397 2D8F AE8033 LOX TEMPI i GET SAVED INDEX
2398 2092 B09534 LOA VOFILE. X ,GET OIR TRACK
2399 2095 80A1 35 STA DCBFOT , SET AS 1ST FO TRACK
2400 2098 90B734 STA VDFILE+34. X ,SAVE IN LC OF FN
2401 209B A9FF LOA nFF ,OELETEO FILE MARKER
2402 2090 909534 STA VDFILE,X ; CLEAR ENTRY
2403 20AO BC9b34 LDY VOFILE+l . X ,GET OIR SECTOR
2404 20A3 8CA235 STY DCBFOS ,SET AS 1ST FO SEC
2405 2DAb 203430 JSR WRVDIR ,GO WRITE VOLUME OI R
2406 20A9 18 CLC
l
2407 20AA 205B2F F04 JSR ROFOIR ,GET 1ST FILE DIR SEC TOR
2408 20AO B02A BCS F07 , BR IF NO MORE
2409 20AF 20002F JSR MVFCBO ,MOVE DIR TO ZPG
2410 20B2 AOOC LOY #FDENT , POINT Y TO 1ST SEC ENT
2411 20B4 8C8033 F05 STY TEMPI ,SAVE Y
2412 20B7 B142 LOA (ZPGFCB). Y ; GET REACK
2413 2089 300B BMI FOb i BR IF NONE
2414 20BB F009 BEQ FOb ; DR IF ENO OF FILE
2415 2DBD 48 PHA ; SAVE TRK
241b 20BE C8 INY
2417 20BF B142 LOA (ZPGFCB). Y ,GET SECTOR
2418 20Cl A8 TAY ; TO Y
2419 20C2 b8 PLA ; GET TRK
2420 20C3 200F20 JSR FOSUB ,GO FREE SECTOR
2421 20Cb AC8033 F06 LDY TEMPI ; GET OrR INOEX
2422 20C9 C8 INY ; INCR TO NEXT ENTRY
2423 20CA C8 INY
2424 20CB 00E7 BNE F05 ,BR NOT OONE THIS OI R
2425 20CO ADA335 LOA OCBCOT ,GET THIS OIR TRK
242b 2000 ACA435 LDY OCBCOS ,ANO SECTOR
2427 2003 20DF2 D JSR FOSUB ,ANO GO FREE IT
2428 200b 38 SEC i GO
2429 2007 BOOI BCS F04 ,REAO NEXT OIR
2430 F07
2431 2009 20F82F J SR WRVTDC
2432 200C 4C5033 JMP GOODIO
2433
2434 FOSUB
2435 200F 38 SEC , SET FOR RE USE OF SEC
2436 20EO 20BB32 JSR FRESEC ,GO FREE SEC TOR
2437 20E3 A900 LOA #0 ,CLEAR DCB BIT MAP
j
'@
2438 20E5 A203 LOX #3
PAGE 73 SHEP APPLE DOS
2439 2DE7 9DBC35 FDSI STA DCBALS, X
2440 2DEA CA OEX
2441 2DEB 10FA BPL FDSI
2442 2DED 60 RTS
2443
Cjj
..
l
l
PAGE 74 SHEP APPLE DOS
"
PAGE
2444
2445 RDIR - PRINT DIRECTORY
2446
2447 ROIR
2448 20EE 20662C JSR DCBSUP
2449 2DFI 20F42F JSR RDVTOC
2450 20F4 A916 LD'" 1122 ; SET 21 LINES
2451 20F6 8D81 33 STA TEMP2
2452 20F9 20372E JSR PRCR ;GO PRINT
2453 20FC 18 CLC ; FIRST RECORD
2454
2455 20FO 200E30 RDI JSR ROVDIR ; GO READ REC
2456 2EOO B032 BCS R05
2457 2E02 A200 LDX tlO ; SET INOEX=O
2458 2E04 8E8033 R02 STX TEMPI ; SAVE INDEX
2459 2E07 B09534 LOA VOFILE. X ; GET TRACK
2460 2EOA F028 BEG RD5 i BR IF END OF DIR
2461 2EOC 30lF BMI R04 i DR IF DELETED
2462 2EOE E8 INX
2463 2EOF E8 INX
2464 2EIO E8 INX
2465 2EII 8E8233 STX TEMP3
2466 2EI 4 B09534 R03 LDA VDFILE. X ; GET CHAR
2467 2EI7 20EOFD JSR PRINT ; PRINT CHAR
2468 2EIA EE8233 INC TEMP3
2469 2EIO 201532 JSR VDINC
2470 2E20 EC8233 CP X TEMP3
2471 2E23 F005 BEG RD3A
2472 2E25 AE8233 LOX TEMP3
2473 2E28 DOEA BNE RD3
2474 RD3A
2475 2E2A 20372E JSR PRCR i GO PRINT CR
2476 2E2D 201532 R04 J SR VOINC i INCR INDEX
2477 2E30 90D2 BCC RD2 ; BR IF MORE IN OIR
2478 2E32 BOC9 BCS RDI ; GO READ NEXT OIR SECT
2479
2480 2E34 4C5D33 R05 JMP GOODIO ; DONE
2481
2482 PRCR
2483 2E37 A980 LDA U8D ; CR
2484 2E39 20EOFD JSR PRINT ; PRINTED
2485 2E3C CE8133 DEC TEMP2 ; DEC LINE COUNTER
2486 2E3F 0008 BNE PRCRI ; BR IF NOT ZERO
2487 2E41 200CFD JSR GETKEY ; WAIT FOR INPUT
2488 2E44 A915 LOA 1121 ; RESET LINE COUNTER
2489 2E46 808133 STA TEMP2
2490 2E49 60 PRCRl RTS ; DONE
.,
2491
l -
PAGE 75 SHEP APPLE DOS
PAGE
2492
2493 CLCFCB - GET FeB VIA INDEX AND MOVE IT
2494
2495 CLCFCB
2496
2497 2E4A 20FC2E JSR MVFCBP ; MOVE FCB PTR TO ZPG
2498 2E40 AOOO LOY #0
2499 2E4F 5142 CF3 LOA (ZPGFCB ),Y ; MOVE FCB TO
2500 2E51 99A035 STA FeB,Y ; FCB WORK AREA
2501 2E54 C8 I NY
2502 2E55 C02A CPY #FCBLEN
2503 2E57 OOF6 BNE CF3
2504
2505 2E59 18 CLC ; DONE
2506 2E5A 60 RTS
2507
2508 RTNFCB - MOVE FCB FROM WORK AREA TO FCB
2 509
2510 RTNFCB
25 11 2E5B 20FC2E JSR MVFCBP ; MOVE FCB AOR TO ZPG
2512
2513 2E5E AOOO LOY #0
2514 2E60 B9A035 RF1 LOA FeB,Y
2515 2E63 9142 STA (ZPGFCB ), Y
2516 2E65 C8 _INY
2517 2E66 C02A CPY #FCBLEN
2518 2E68 OOF6 BNE RF1
2519 2E6A 60 RTS
2520
1
PAGE 76 SHEP APPLE DDS
PAGE
2521
2522 FFMT - EXECUTE FORMAT REGUEST
2523
2524 FFMT
-j
2525 2E6B 20662C JSR DCBSUP SET UP DCB
2526 2E6E A904 LOA 4tIBFMT
2527 2E70 205530 J SR DCBID2
252B 2E73 ADC535 LOA DCBVOL
,
SET VOL NO
2529 2E76 49FF EOR #$FF
2530 2E7B BD9033 STA VVOLNO
2531 2E7B A911 LOA #17
2532 2E7D 8DBA33 STA VALCA1 ALOCATE BYTE 1
2533 2EBO A901 LOA #1
2534 2EB2 BDBB33 STA VALCA2 ADD BYTE 2
2535
2536 2EB5 A23B LOX IIVSECAL-VTOC
l
2537 2EB7 A900 LOA 110
253B 2EB9 9DBA33 NT1 STA VTOC.X CLEAR SECTOR AREA
2539 2EBC EB INX
2540 2EBD DOFA BNE NT1
2541
2542 2EBF A20C LOX #3*4 iSTART AT TRACK 3
2543 2E9 1 EOBC NT2 CP X .. 35* 4 END AT TRACK 35
2544 2E93 F014 BEG NT4
2545 2E95 A003 LOY #3 4 BYTES OF INFO
2546 2E97 B9B433 NT3 LOA ALC10S.Y 10 SECTORS ALLOCATE
2547 2E9A 9DC233 STA VSECAL. X
254B 2E9D EB INX
2549 2E9E BB DEY
2550 2E9F 10F6 BPL NT3
2551 2EA1 E044 CPX #17*4 AT TRACK 17
2552 2EA3 DOEC BNE NT2 BR IF NOT
2553 2EA5 A24B LOX 4U8*4 SKIP TO 18
2554 2EA7 DOEB BNE NT2
2555
,
2556 2EA9 20FB2F NT4 J SR WRVTOC WR ITE NEW VTOC
2557
255B 2EAC A200 LOX #0
..
2559 2EAE BA TXA
2560 2EAF 9DBA34 NT5 STA VOLDIR. X
,
CLEAR VOLDIR
2561 2EB2 EB INX
2562 2EB3 DOFA BNE NT5
2563
2564 2EB5 204230 JSR MVVDBA MOVE BUF PTRS
2565
2566 2EBB A902 LOA #IBCWTS WRITE TRACK SECTOR
I
2567 2EBA BDF437 STA IBCMD
256B 2EBD A911 LOA #17 TRACK 17
2569 2EBF ACBF33 LOY VNOSEC
2570 2EC2 BB DEY
257 1 2EC3 BB DEY
2572 2EC4 BDEC37 STA IBTRK INTO IDB
2573 2EC7 BDBB34 NT6 STA VDLTRK INTO LINK
-
2574 2ECA BCBC34 NT7 STY VDLSEC
PAGE 77 SHEP APPLE DOS
2575 2ECD C8 INY
2576 2ECE 8CED37 STY IBSECT
2577 2EDI 205830 JSR DCBIOI GO WRITE
2578 2ED4 AC8C34 LOY VOL SEC
2579 2ED7 88 DEY DECREMENT SECTOR
2580 2ED8 3005 BMI NT8 BR LAST WRITTEN
2581 2EDA DOEE BNE NT7 BR NOT LAST
2582 2EDC 98 TYA LAST. SET LINK TRK=O
2583 2EDD FOE8 BEG NT6
2584
2585 NT8
1
2586 2EDF 20E82E JSR DLDSUP ; GO SET UP FOR DOSLDR
2587 2EE2 205537 JSR WBOOT ;GO WRITE THE BOOT
2588 2EE5 4C5D33 J MP GOODIO ; DONE
2589
PAGE 78 SHEP APPLE DOS
Jl
..
PAGE
~ 2590
2591 DLDSUP - SET UP FOR DOSLDR
2592
2593 DLDSUP
2594 2EEB ADBB35 LDA CCBBSA
2595 2EEB BDF1 3 7 STA IBBUFP+ l START ADR
2596 2EEE A900 LDA ~
2597 2EFO 8DF037 STA IBBUFP
2598 2EF3 ADC535 LDA DCBVOL VOL
2599 2EF6 49FF EOR UFF
2600 2EFB BDEB37 STA IBVOL
2601 2EFB 60 RTS
2602
"
..
>
..
..
..---"
..
..
..
..
..
..
~
PAGE 79 SHEP APPLE DOS
PAGE
1
2603
2604 MVFCBX - MOVE FeB ADRS TO ZPGFC B
2605
2606 2EFC A200 MVFCBP LOX DO , MOVE FCB AOR
2607 2EFE F006 BEG MVFl
2608 2FOO A202 MVFCBO LOX D2 ; MOVE FCB orR BUFF
2609 2F02 0002 BNE MVF1
2610 2F04 A204 MVFCBS LOX D4 ; MOVE FCB SECTOR BUFF
2611
2612 MVF L
l
2613 2F06 B09635 LOA CFCBAO,X i DO THE MOVE
2614 2F09 8542 STA ZPGFCB
2615 2FOB B09735 LOA CFCBAD+l ,X
2616 2FOE 8543 STA ZPGFCB+l
2617 2F10 60 RTS
2618
2619 CLRSEC - CLEAR SECTOR
2620
2621 CLRSEC
2622 2F11 A900 LOA DO
2623 2F13 A8 TAY
2624 2F14 9142 CS1 STA (ZPGFCB), Y
2625 2F16 C8 INY
2626 2F17 OOFB BNE CS1
2627 2F19 60 RTS
2628
J
PAGE 80 SHEP AP PLE DOS ), ,,
PAGE
2629
2630 WRSECT - WRITE CURRENT SECTOR IF REGD
2631
2632 WRSECT
2633 2F1A 2CA535 BIT DCBWRF ; GET WRI TE REGD FLAG
2634 2F1D 7001 BVS WRSGO ; BR IF WRITE SECTOR REGD
2635 2F1F 60 RTS ; RTS
2636
263 7 WRSGO
2638 2F20 20E1 2F J SR MVSBA i GO MOVE SECT BUFF D R ~
2639
2640 2 F23 A902 LOA #IBCWTS ; GET COMMAND
2641 2F25 204F3 0 J SR DCBIO ; GO F I LL IN lOB AND DO IO
2642
2643 2F28 A9BF LOA #$BF ; SET WRITE SECTOR REGD BIT OFF
2644 2F2A 2DA535 AND_ DCBWRF
l
2645 2F2D 8DA53 5 STA DCBWRF
(I
2646 2F3 0 60 RTS ; DONE
2647
"
~
~
t#
l
..
J
~
PAGE 81 SHEP APPLE DOS
PAGE
6 4 ~ 8
2649 WRFOIR - WRITE FILE DIRECTRY IF REQO
2650
2651 WRFOIR
2652 2F31 AOA535 LOA OCBWRF GET WRITE REGD FLAG
2653 2F34 3001 BMI WRFOGO ; BR IF WRITE OIR REQO
2654 2F36 60 RTS j DONE_ IF NOT
2655
2656 WRFDGO
2657 2F37 20482F JSR MYFDBA
2658
2659 2F3A A902 LOA #IBCWTS i GET WRITE CMD
2660 2F3C 204F30 JSR OCSIO j GO FILL IN lOB AND DO 11-0
2661
2662 2F3F A97F LOA #$7F ; TURN WRITE OIR REQO BIT OFF
2663 2F41 2DA535 AND DCBWRF
2664 2F44 8DA535 STA DCBWRF
2665 2F47 60 RTS ; DONE
2666
2667 MVFDBA - MOVE FILE DIRECTORY BUFF AS DR TO 100
2668
2669 MVFDBA
2670 2F48 AD9835 LOA CFCBOR ; MOVE ADR
__ I
2671 2F4B 8DF037 STA IBBUFP
2672 2F4E AD9935 LOA CFCBDR+l
2673 2F51 8DF137 STA IBBUFP+l
2674 2F54 AEA335 LOX DCBCDT ; GET TRACK
2675 2F57 ACA435
LDY __
DCBCDS ; GET SECTOR
2676 2F5A 60 RTS
~
2677
PAGE 82 SHEP APPLE DDS
PAGE
,.
2678
2679 RDFDIR - READ FILE DIRECTORY
Ii
2680
2681 RDFDIR
2682 2F5B 08 PHP ; SAVE STATUS
Ii
2683 2F5C 20312F JSR WRFDIR ;GO WRITE CURRENT DIR IF REGD
2684 2F5F 20482F JSR HVFDBA ;GO MOVE DBUFF ADR TO lOB
2685 2F62 20002F J SR HVFCBD ; MOVE DBUFF ADR TO ZPG
Ii
2686 2F65 28 PLP ;GET SAVED STATUS
2687 2F66 B009 BCS RFDNXT i BR IF RD NEXT
1
2688
Ii
2689 2F68 AEA1 35 LOX DCBFDT i TRACK
2690 2F6B ACA235 LOY DCBFDS ; SECTOR
2691 2F6E 4CB22F JMP RFDIOI ; GO READ
2692
2693 RFDNlLT
2694 2F71 AOOI LOY #FDLTRK ; GET LINK TRACK
..
2695 2F73 B142 LOA (ZPGFCB) I Y
2696 2F75 F008 BEG RFDNL i NR NO LINK
2697 2F77 AA TAX i PUT TRACK INTO X
2698 2F78 C8 INY
2699 2F79 B142 LOA ( ZPGFCB), Y ; SET LINK SECTOR
2700 2F7B A8 TAY ; PUT SECTOR INTO Y
2701 2F7C 4CB22F JMP RFDIOI ; GO DO 110
2702
2703 RFDNL
2704 2F7F AD8A35 LOA CCBREG ; THIS A WRITE
2705 2F82 C904 CHP 4ICRGWR
2706 2F84 F00 2 BEG RFDNLI ; BR IF WRITE
2707 2F86 38 SEC ; SET EOF
2708 2F87 60 RTS i RETURN
2709
2710 RFDNLI
2711 2F88 202932 J SR GETSEC j GET A SEC TOR
I
2712 2F8B A002 LOY tt:FDLSEC
"
2713 2F8D 9142 STA (ZPGFCB), Y i PUT IN LINK
2714 2F8F 48 PHA ; SAVE SECTOR
2715 2F90 88 DEY
2716 2F91 ADBD35 LOA DCBATK ; GET TRACK
2717 2F94 9142 STA (ZPGFCB), Y ; PUT IN LINK
2718 2F96 48 PHA ; SAVE TRACK
2719 2F97 20372F JSR WRFOGO ; GO WR ITE OLD OIR DEC
2720
2721 2F9A 20112F JSR CLRSEC ; CLEAN OUT OIR
"
2722 2F9D A005 LOY 4IFDFRS ; SET NEW DIR SEC 1ST REL
2723 2F9F AOAC35 LOA OCBONF ; FILE SECTOR
2724 2FA2 9142 STA (ZPGFCB) , Y
"
2725 2FA4 C8 INY
2726 2FAS ADA035 LOA DCBDNF+l
2727 2FAB 9142 STA (ZPGFCB ), Y
"
2728
2729 2FAA 68 PLA i GET SAVED TRACK
2730 2FAB AA TAX ; INTO X
@
2731 2FAC 68 PLA ; GET SAVED SECTOR
PAGE 83 SHEP APPLE DOS
2732 2FAD A8 TAY ; INTO Y
2733 2FAE A902 LOA tt:IBCWTS ,SET WRITE CMD
2734 2FBO 0002 BNE RFDI02 i GODQI/O
2735
2736 2FB2 A901 RFDIOl LOA tt=IBCRTS ; SET READ CMD
2737 2FB4 BEA335 RFDID2 STX DCBCDT ; SET CURR TRACK
2738 2FB7 BCA435 STY DeBens ; SET CURR SECTOR
2739 2FBA 204F30 JSR DCBIo ; GO I / O
2740
2741 2FBD A005 RDFDC LOY #FDFRS i GET POINTER TO FIRST REL SECTOR
2742 2FBF B142 LDA (ZPQFCB) I Y , GET FRS
2743 2FC I 8 DAA35 STA DC BDFS ; SET INTO DCB
2744 2FC4 18 CLC
2745 2FC5 6 DA835 ADC DCBDMS_ ; ADO MAX SECTORS
2746 2FC8 8DAC35 STA DCBDNF ; PUT INTD DCB
2747
2748 2FCB C8 I NY ; DO SAME FOR HI BYTE
2749 2FCC B142 LOA (ZPGFCB) , Y
2750 2FCE 8DAB35 STA DCBDFS+l
2751 2FDI 6DA935 ADC DCBDMS+l
2752 2FD4 BDAD3 5 STA DCBDNF+ l
2753
2754 2FD7 18 CLC
2755 2FD8 60 RTS ; DONE
2756
J
PAGE 84 SHEP APPLE DOS
I
PAGE
2757
2758 RDSECT - READ A SECTOR
2759
2760 ROSECT
2761 2F09 20E12F JSR MVSBA ; GO MOVE SECTOR BUFFER AOR
2762
2763 2FOC A901 LOA #IBCRTS
2764 2FOE 4C4F30 JMP OCBIO ; GO DO I / O
2765
2766 MVSBA - MOVE SECTOR BUFFER ADR FOR I / O
2767
2768 MVSBA
2769 2FEI AC9A3S LOY CFCBSB ; GET SECTOR BUFF AOR
2770 2FE4 A09B35 LOA CFCBSB+l
2771 2FE7 8CF03 7 MSBI STY IBBUFP ; SET IDB SECTOR
2772 2FEA 80F137 STA IBBUFP+l ; BUFF PTR
2773 2FEO AEA635 LOX OCBTRK ; GET TRACK
2774 2FFO ACA735 LOY OCBSEC ; GET SECTOR
2775 2FF3 60 RTS ; RTN
2776
-I
PAGE 85 SHEP APPLE DOS
..
PAGE
2777
2778 ROVTOC - REAO VTOC
2779 WR VTOC - WRITE VTOC
2780
2781 ROVTOC
2782 2FF4 A901 LOA #IBCRTS ; READ
2783 2FF6 0002 BNE VTlO
2784 WRVTOC
..
2785 2FF8 A902 LOA tUBCWTS ; WRITE
2786
l
2787 2FFA AC892B VTIO LOY AVTQC ; MOVE BUFF AOR
2788 2FFD 8CF03 7 STY IBBUFF
2789 3000 AC8A2B LOY AVTQC+_1
2790 3003 BCF1 3 7 STY IBBUFP+l
2791
2792 3006 AEC635 LOX OCBVTN ; GET TRACK
2793 3009 AOOO LOY #0
2794 300B 4C4F30 JMP OCBIO ; GO DO 110
2795
J
J
PAGE 86 SHEP APPLE DOS J!(
PAGE
2796 ~
2797 RDVDIR - READ VOLUME DIRECTOR
2798
2799 RDVDIR
2800 300E 08 PHP ; SAVE STATUS
2801 300F 204230 JSR MVVD8A
2802
2803 3012 28 PLP ; GET STATUS
2804 3013 8008 BCS RVOA i BR IF RO NEXT
2805
2806 3015 AC8C33 RVDC LOY VOIRSC i GET 1ST SECTOR
2807 3018 AE8833 LOX VOIRTK ; GET FIRST TRK
2808 3018 DOOA BNE RVOGO ; GO READ
2809
2810 RVDA
2811 3010 AE8B34 LOX VDLTRK ; GET LINK TRACK
2812 3020 0002 BNE RDVC ; BR IF A LINK
2813 3022 38 SEC ; SET END OF DIR
2814 3023 60 RTS
2815
2816 3024 ACBC34 RDVC LOY VDLSEC ; GET SECTOR
2817 RVDGO
2818 3027 BE7B33 STX CVDTRK ; SET CUR TRACK
2819 302A 8C7C33 STY CVDSEC ; SET CUR SECTOR
2820 3020 A901 LOA ~ 8 C R T S ; GET CMD
2821 302F 204F30 JSR DCBIO ; GO DO 1 10
2822 3032 18 CLC
2823 3033 60 RTS
2824
\
... PAGE 87 SHEP APPLE DOS
...
PAGE
2825
2826 WRVD IR - WRITE VOLUME DIRECTORY SECTOR
... 2827
2828 WRVDI R
2829 3034 204230 JSR MVVDBA
-
2830
2831 3037 AE7B33 LOX CVDTRK 1 CURRENT TRACK
2832 303A AC7C33 LOY CVDSEC ; CURRENT SECTOR
2833 3030 A902 LOA #IBCWTS ; WR ITE COMMAND
2834 303F 4C4F30 JMP DCB I O ;GODOI / O
I
2835
2836 MVVDBA - MOVE VOL DIR BUF ADR TO lOB
2837
2838 MVVDBA
2839 3042 AD8B2B LDA AVOLDR ; MOVE ADR
2840 3045 8DF037 STA IBBUFP
2841 3048 AD8C2B LDA AVOLDR+l
2842 304B 8DF137 STA IBBUFP+l
2843 304E 60 RTS
2844
]
PAGE 88 SHEP APPLE DOS
r".
PAGE
2845
2846 DCBIO - DO lID FOR A DCB
2847
2848 DCBIO
2849 304F 8EEC37 STX IBTRK ; TRACK
2850 3052 8CED37 STY IBSECT ; SECTOR
2851 DCBI02
2852 3055 8DF437 STA IBCMD ; COMMAND
2853 OCBIOI
2854 3058 AOC535 LOA DCBVOL J VOL
2855 305B 49FF EOR II$FF ; UNINVERT VOL BITS
2856 3050 8DEB37 STA IBVOL
2857 3060 AOC335 LOA OCBSLT i SLOT
2858 3063 80E937 STA IBSLOT
2859 3066 AOC435 LOA OCBORV ; DRIVE
2860 3069 80EA37 STA IBORVN
I
2861 306C AOB035 LOA DCBSOL ; LENGTH
2862 306F 80F237 STA !BOLEN
2863 3072 AOB1 35 LOA DCBSDL+l
28M 3075 80F337 STA IBDLEN+l
2865 3078 A901 LOA 111 i lOB TYPE
2866 307A 8DE837 STA IBTYPE
2867
2868 3070 AC872B LOY AIOB ; lOB AOR
2869 3080 AD882B LOA AIOB+1
2870 3083 20003 0 JSR OISKIO ; GO DO l ID
2871
2872 3086 A9FF LOA II$FF ; RESET VOL
2873 3088 80EB37 STA IBVOL
!It
2874 308B BOOl BCS BAOIO ; DR IF BAD
2875 3080 60 RTS ; RTN IF GOOD
2876
2877 308E AEF537 BADIO LOX IBSTAT i GET STATUS
..
2878 3091 8A TXA
I
2879 3092 4920 EOR IIIBVMME ; WAS IT VOL MISMATCH
..
2880 3094 0008 BNE BOI ; DR IF NOT
2881 3096 AEF637 LOX IBSMOD ; GET VOL
2882 3099 A907 LOA IICREVMM ; SET VOL MM ERR
2883 309B 4C6533 JMP ERRORB ; GO RTN
2884 309E A908 BDI LOA IICREI OE ,SET l i D ERR
2885 30AO 4C6533 JMP ERRORB ; GO RTN
2886
PAGE 89 SHEP APPLE DOS
PAGE
2887
2888 LOCNXB - LOCATE NEXT BYTE
2889
2890 LOCNXB
2891 30A3 AOB23 S LOA DCBCRS i IS THE CURRENT RELATIVE SECTOR
..
2892 30M COAE35 CMP OCBCMS j EQUAL TO THE CURRENT MEM SECTOR
2893 30A9 0008 BNE LNBI ; BR IF NOT ECI
2894 30AB AOB335 LOA DCBCRS+l
2895 30AE COAF35 CMP DeaCMS+1
2896 30Bl F066 BEG LNB8 ; BR IF RECIO SECTOR IN MEM
2897
..
2898 LNBI ; NEED A DIFFERENT SECTOR IN MEM
2899 30B3 201A2F JSR WRSECT i GO WRITE SECTOR (IF REGO )
2900
2901 30B6 AOB335 LN82 LOA OCBe RS+1 i IS CURRENT REL SEC TORY
2902 30B9 COAB35 CMP OCBDFS+l ; IN CURRENT DIRECTORY (LOW LIMIT)
2903 30BC 901 C BCC LNB4 ; BR IF IN A PREVIOUS OIR
2904 30BE 0008 BNE LNB3 ; BR IF MAYBE IN THI S ONE
2905 30CO AOB235 LOA OCBCRS ; TEST LOW BYTES
2906 30C3 CDAA35 CMP OCBOFS
:>
2907 30C6 9012 BCC LNB4 ; BR IF IN PREVIOUS OIR
2908
2909 30C8 ADB335 LNB3 LOA DCBCRS+l ; IS CURRENT REL SECTOR
2910 30CB COA035 CMP DCBDNF+l i IN CURRENT DIRECTOR ( HI LIMIT >
2911 30CE 9010 BCC LNB6 ; BR IF IN THI S ONE
2912 3 000 0008 BNE LNB4 ; SR I F IN A NEXT OI R
2913 3002 ADB235 LDA OCBCRS
2914 3 005 COAC35 -GMP OCBONF
2915 30D8 9006 BCC LNB6 ; BR IF IN THIS ONE
2916 ; REGD SECTOR IN A NEXT DI RECTORY
2917 300A 205B2F LNB4 JSR ROFOIR ; GO READ NEXT FILE DIR
2918 3000 9007 BCC LNB2 ; BR NXT AVAIL
2919 300F 60 RTS ;RETURN IF EOF OI R
2920
I
2921
,
2922 LNB6 ; CALCULATE DISPL INTO DIR
..
2923 30EO 38 SEC
2924 30E1 ADB235 LOA OCBCRS i REGD REL SEC TOR MI NUS
2925 30E4 EDAA35 SBC OCBOFS
2926 30E7 OA ASLA i TIMES 2
2927 30E8 690C ADC #FDENT ; PLUS DISPL TO 1ST
2928 30EA A8 TAY
2929 30EB 20002F J SR MVFCBD ; MOVE DIR AOR TO ZPG
2930 30EE B142 LOA (ZPGFCB), Y ; GET TRACK
2931 30FO DOOF BNE LNB7 ; SR IF NOT ZERO
2932 30F2 AD8A35 LOA CCBRECI
2933 30F5 C904 CMP #CRClWR ,WRITE!
2934 30F7 F002 BEQ LNB7A
2935 30F9 38 SEC
2936 30FA 60 RTS
2937 30FB 202 131 LNB 7A J SR GNWSEC ; GO GET A NEW SECTOR
2938 30FE 4COD31 JMP LNBCON
2939 3101 80A635 LNB7 STA OCBTRK ; SET TRK INTO DCB
2940 3104 C8 INY
PAGE 90 SHEP APPLE DOS r- ",
2941 3 105 B142 LOA (ZPGFCB) ,Y ; GET SECTOR
l
2942 3107 BOA735 STA DCBSEC ; PUT INTO OCB
2943 310A 20D92F JSR RDSECT , GO READ SECTOR
2944 3100 AOB235 LNBCON LOA OCBCRS , MOVE CUR REL SECTOR
2945 3 110 BOAE35 STA OCBCMS
2946 3113 AOB335 LOA DCBCRS+l ,TO CUR MEM SECTOR
2947 3116 BOAF35 STA DCBCMS+l
294B
2949 LNBB
2950 3119 20042F JSR MVFCBS , MOVE SECTOR BUFF ADR TO ZP
2951 311C ACB435 LOY DCBCSB ,GET SECT BYTE
2952 311F 1B CLC ; CARRY CLEAR = ALL OK
2953 3120 60 RTS , DONE
2954
..
..
e
~
PAGE 91 SHEP APPLE DOS
PAGE
2955
2956
2957 GNWSEC ; NEED NEW SEC TOR
295B 3 121 BCB133 STY TEMP2 ; SAVE DIR INDEX
I
2959 3124 202932 JSR GETSEC ; GET A SECTOR
2960 3127 ACB1 33 LDY TEMP2
2961 312A CB INY
2962 312B 9142 STA (ZPGFCB), Y ; SET NEW SECTOR
;,
2963 312D BDA735 STA DCBSEC
2964 3 130 BB DEY
2965 3 131 ADBD35 LDA DCBATK
2966 3 13 4 9142 STA (ZPGFCB) I Y i SET NEW TRAC K
2967 3 13 6 BDA635 STA DCBTRK
296B
2969 3 139 20042F J SR MVFCBS
2970 313C 2011 2F J SR CLRSEC ; GO CLEAR SECTOR
2971
2972
2973 313F A9CO LOA #$CO ; INDICATE BOTH
2974 3141 ODA535 ORA DCBWRF ; DIR AND SECTOR
2975 3144 BDA535 STA DCBWRF ; MUST BE WRITTEN
2976 3147 60 RTS ; DONE
2977
1
J
PAGE 92 SHEP APPLE DOS ..
PAGE
2978
2979 INCRRB - INCREMENT RELATIVE RECORD BYTE
2980
2981 INCRRB
2982 3148 AEB835 LOX OCBCRR ; MOVE BYTE JUST READ DR WRITTEN
2983 314B 8E8C35 STX CCBRRN
2984 314E AEB935 LOX DCBCRR+l
2985 3151 8E8035 STX CCBRRN+l
2986 3154 AEBA35 LOX OCBCRB i X=REL BYTE ( LOW)
2987 3157 ACBB35 LOY DCBCRB+l i Y=REL BYTE HI
I
2988 315A 8E8E35 STX CCBBYT
2989 3150 8C8F35 STY CCBBYT+l
2990 3160 E8 INX ; INC REL BYTE (LOW)
2991 3161 000 1 BNE INCR1 ; BR IF NO CARRY
2992 3163 C8 INY j INC REL BYTE (HI)
2993
2994 3164 CCB735 INCR1 CPY DCBRCL+l ;REL BYTE=REC LENGTH
2995 3167 0011 BNE INCR2 ; BR IF NOT
2996 3169 ECB635 CPX DCBRCL ; TEST LOW BYTES
2997 316C DOOC BNE INCR2
2998 316E A200 LDX lIO
2999 3170 AOOO LOY lIO ; RESET REL BYTE TO ZERO
3000 3172 EEB835 I NC DCBCRR ; AND INCR
3001 3175 D003 BNE INCR2 i RELATIVE RECORD
3002 3177 EEB935 I NC DCBCRR+l
3003
..
3004 317A BEBA35 INCR2 STX DCBCRB ; SAVE NEW RELATIVE BYTE
3005 317D 8CBB35 STY DCBCRB+l
3006
3007 31BO 60 RTS
..
3008
..
{I
PAGE 93 SHEP APPLE ODS
PAGE
3009
3010 INCSCE - INCREMENT SECTOR BYTE
3011
3012 INCSCE
l
3013 3181 EEB435 INC DCBCSB ; INC SECTOR BYTE
-;
3014 3184 0008 ENE INCS2 ; BR IF NOT FULL
3015 3186 EEE235 INC OCECRS ; AND INCR
3016 3189 0003 ENE INCS2 ; RELATIVE SECTOR
3017 318B EEE335 INC OCHeRS+1
3018
3019
3020 INCS2
3021 318E 60 RTS ; DONE
3022
-l
_1
I
PAGE 94 SHEP APPLE DOS
PAGE
3023
3024 MIBOA - MOVE AND INCREMENT CCBDAT
.. 3025
3026 MIBOA
3027 318F AC9235 LDY CCBBBA ; Y=ADR LOW
,.
3028 3192 AE9335 LDX CCBBBA+l ; X=ADR HI
3029 3195 8442 STY ZPGFCB ; PUT ADR INTO ZPG
3030 3197 8643 STX ZPGFCB+l
3031
3032 3199 EE9235 INC CCBBBA ; INC ADR LOW
3033 31 9C D003 BNE MIBI ; BR IF NOT ZERO
.. 3034 319E EE9335 INC CCBBBA+l ; INC AOR HI
3035 31Al 60 MIB I RTS ; DONE
3036
3037 DTBLN - DECREMENT BLOCK LENGTH AND TEST ZERO
3038 ;--
3039 DTBLN
.. 3040 31A2 AC9035 LDY CCBBLN ; GET LEN LOW
3041 31A5 0008 BNE DTBI ; BR IF NOT ZERO
3042 31A7 AE91 35 LDX CCBBLN+l ; GET LEN HI
.. 3043 31AA FOO? BEG DTB2 ; BR IF LEN""Q
3044 31AC CE9135 DEC CCBBLN+l ; DEC LEN (HIGH)
3045 3 1AF CE9035 DTBI DEC CCBBLN ; DEC LEN (LOW)
3046 31B2 60 RTS ; DONE
3047
3048 31B3 4C5D33 DTB2 JMP GOODIO ; FINI SHED BLOCK
< .. 3049
< ..
<.
I.
I.
"
(.
]
J
PAGE 95 SHEP APPLE DOS
PAGE
3050
3051 FNDFIL - FIND FILE NAME IN VOLUUME DIR
3052
3053 FNOFIL
3054 3186 20F42F JSR ROVToC ; GO GET VToC
3055 31B9 A09235 LOA CCBFNI ; MOVE FN PTR
3056 31BC 8542 STA ZPGFCB ; TO ZERO PAGE
3057 31BE A09335 LOA CCBFNl+1
3058 31C 1 8543 STA ZPGFCB+l
3059 31C3 A901 LOA III
3060 31C5 8081 33 FF I STA TEMP2
3061 31C8 18 CLC
3062 FF2
3063 3 1C9 200E30 JSR RDVDIR ; GO GET VDIR SECTOR
3064 31CC B051 BCS FF4A
3065 31CE A200 LOX lIO ; SET EOR 1ST F ILE
3066
3067 31DO 8E8033 FF3 STX TEMPI ; SAVE INDEX
3068 31D3 BD9534 LDA VOFILE. X ; GET FILE TRK
3069 31D6 F01F BEG FF6 ; BR IF LAST ENTRY
3070 31D8 3022 BMI FF7 ; BR DELETED ENTRV
3071 31DA ACOO LDV lIO i X=X+3
3072 31DC E8 INX
3073 31DD E8 INX
3074 31DE E8 F ~ I NX
3075 3 1DF B1 42 LDA (ZPGFCB). V ; GET FN CHAR
3076 31El 0 09534 CMP VDFILE. X ; COMPARE TO ENTRY CHAR
3077 3 1E4 DOOA BNE FF5 i BR I F NOT SAME
3078 31E6 C8 INV
3079 31E7 C020 CPV lI32 ; ALL 32 CHARS
3080 31E9 DOF3 BNE FF4 i SR IF NOT
3081 31EB AE8033 LDX TEMPI ; GET INDEX
3082 31EE 18 CLC ; FILE FOUND
3083 3 1EF 60 RTS ; RETURN
3084
3085 FF5
3086 31FO 201532 J SR VDINC
3087 31F3 90DB BCC FF3
3088 31F5 BOD2 BCS FF2
3089
3090 31F7 AC8133 FF6 LDV TEMP2 ; LOOKING FOR DELETED
3091 31FA DOC9 BNE FFI i SR IF NOT (DO)
3092
3093 31FC AC81 33 FF7 LDV TEMP2 ; LOOK I NG FOR EMPTY
3094 31FF DOEF BNE FF5 i SR IF NOT
3095
-l' 3096 MVFN
3097 3201 ACOO LDV #0 i HAVE NEW ENTTRV
3098 3203 E8 INX
3099 3204 E8 INX
3100 3205 E8 FF8 I NX
3101 3206 B142 LOA (ZPGFCB). V ; MOVE FILE NAME
1
3102 3208 9D9534 STA VDFI LE.X
3103 3 20B C8 INY
fil
"- PAGE 96 SHEP APPLE DDS
31 04 320C C020 CPY #32
,.
3105 320E DOF5 BNE FF8
3106
"- 3107 3210 AE8033 LOX TEMP 1 ; GET INDEX
3108 3213 38 SEC i SET NOT OLD
3109 3214 60 RTS ; DONE ,.
' ..
3110 VDI NC
3111 3215 18 CLC
3112 3216 AD8033 LOA TEMP1
,.
'.
3113 3219 6923 ADC #35
3114 321B AA TAX
3115 321C EOFS CPX #VDFLEN
f.
3116 321E 60 RTS
3117 FF4A
3118 321F A900 LOA #0
3 1 19 3221 AC81 33 LOY TEMP2
3120 3224 D09F BNE FF1
I
3121 3226 4C5533 JMP ERROR9
f.
3 122
f.
,.
I.
,e
I.
,e
i-
l
,e
i.
,e
(e
( .. fe
l ..
(.
IP
,.
(-
""
I.t'
PAGE 97 SHEP APPLE DOS
PAGE
3123
3124 GETSEC - GET A SECTOR
3125
3126 GETSEC
3127 3229 ADBD35 LOA OCBATK ; GET ALLOCATED TRK
3128 322C F019 BEG GSSl ; BR IF NONE
3129
3130 GSO
3131 322E CEBC35 DEC OCBALS ; DECREMENT SECTOR NO
3132 3231 300F BMI CS2 ; SR IF NO SECTORS REM
l
3133
3134 3233 18 CLC
-
3135 3234 A204 LOX #4 ; 4 BYTE SHIFT
3136 3236 3EB035 GS l RoL DCBABM-l, X I SHIFT BYTE LEFT
3137 3239 CA OEX
3138 323A OOFA
__ BNE
GSl
3139 323c 90FO BCC GSO ; BR IF NO SECTOR
3140
3141 32 3E AOBC35 LOA OCBALS GET ALLOCATED SECTOR
3142 3241 60 RTS ; RETURN
3143
3144 3242 A900 CS2
__ LOA
*0
; CLEAR ALLOCATED
3145 3244 80BD35 STA DeBATK ; TRK
J 3146
3147 3247 A900 GSSl LOA #0 ; SET SEARCH STATE=O
3148 3249 808233 STA TEMP3
3149 324C 20F42F JSR ROVToC ; GET VTOC
3150
3151 GS2
3152 324F 18 CLC
3153 3250 AOBA33 LOA VALCAl ; GET LAST ALLOCATTED TRK
3154 3253 60BB33 AOC VALCA2 ; AD (+1) DR
( -1)
3155 3256 F009 BEG GS3 ; BR IF DECK TO ZERO
3156 3258 COBE33 CMP VNOTRK
3157 325B 9015 BCC GS5 ; BR IF NOT AT OUTER LIMIT
3158 3250 A9FF LOA *$FF ; SET (-1)
3159 325F OOOA BNE GS4
3160 3261 AD8233 GS3 LOA TEMP3 GET SEARCH STATE
3161 3264 0038 BNE ERR9 ; SR IF NOT ZERO
3162 3266 A901 LOA U j SET (+1)
I
3163 3268 808233 STA TEMP3 ; SET SEARCH STATE = 1
3164 326B 8DBB33 GS4 STA VALCA2 i SET NEW (+1) OR -1 )
3165 326E 18 CLC
3166 326F 6D7A33 ADC GENVTN ; ADD VToC TRK NO
3167 3272 8DBA33 GS5 STA VALCAI ; SET NEW LAST ALLOCATED
3168 3275 8DBD35 STA OCBATK_ ; PUT IN OCB ,
,
3169
3170 3278 A8 TAY j ALLOCATED TRACK
3171 3279 OA ASLA ; TIME 4
3172 327A OA ASLA
3173 327B A8 TAY
3174 327C A204 LOX *4
l
3175 327E 18 CLC
3176 327F B9C533 GS6 LOA VSECAL+3. Y ; MOVE BIT MAP BYTE
..
PAGE 98 SHEP APPLE DOS
r----.
3177 3282 90B035 STA OCBABM- 1, X
3178 3285 F006 BEG GS7 ; DR IF NO BITS ON
3179 3287 38 SEC ;SET HAVE A SECTOR
"- 3180 3288 A900 LOA #0 ; CLEAR VTOC BYTE
3181 328A 99C533 STA V5ECAL+3 . Y
3182 3280 88 GS7 DEY
..
3183 328E CA DEX
3184 328F DOEE BNE GS6 ; BR IF MORE TO MOVE
3185 3291 90BC BCC GS2
3186 3293 20F82F J SR WRVTOC ; GO WR ITE VTOC
3187 3296 ADBF33 LOA VNOSEC ; GET NO SECTORS
3188 3299 8DBC35 STA DCBALS ; SET IN DCB SECTOR BYTE
3189 329C 0090 BNE GSO ;GO ALLOCATED SECTOR
3190 329E 4C5533 ERR9 JMP ERROR9
3191
te
l
te
r .. te
l
J
PAGE 99 SHEP APPLE ODS
PAGE
3192
3193 FRETRK - FREE TRACK OF SECTORS
3194
3195 FRETRK
]
3196 32Al ADBD35 LOA OCBATK i GET ALLOCATED TRACK
3197 32A4 0001 BNE FTl ; BR IF NONE
3 198 32A6 60 RTS j DONE
3 199 32A7 48 FTI PHA
)
3200 32A8 20F42F J SR ROVTOC ; GET VTOC
3201 32AB ~ C B C ~ 5 LDY OCBALS ; GET SECTOS
3202 32AE 68 PLA ; GET TRACK
3203 32AF 18 CLC ; SET FREE
3204 32BO 20BB32 JSR FRESEC ; GO FREE
3205 32B3 A90Q LOA #0 j CLEAR ALLOCATED TRK
3206 32B5 80B035 STA OCBATK
3207 32B8 4Cf'82F JMP WRVTQC ; WRITE VTOC
3208
3209 FRESEC - FREE A SECTOR
3210 A=TRK, Y=SECTOR. C=DN/OFF
3211
321 2 FRESEC
3213 32BB A2FC FSI LDX #252 ; 4 BYTE SHIFT
3214 32BO 7EC234 FS2 ROR DCBABM-252, X i SHIFT IN CARRY
J 3215 32CO E8 !NX ; NEXT BYTE
>
3216 32Cl OOFA BNE FS2- ; BR IF NOT DONE
3217 32C3 C8 I NY ; I NC SECTOR NO
3218 32C4 CCBF33 CPY VNQSEC ; NORMAL
3219 32C7 00F2 BNE FSI ; BR IF NOT
]
3220
3221 32C9 OA ASLA ; TRACK*4
3222 32CA OA AS LA
3223 32CB A8 TAY
j
J 3224 32CC FOOF BEG FS4
3225 32CE A204 LOX #4
3226 3200 BOB035 FS3 LOA OCBABM- l . X ; GET BIT MAP BYTE
]
3227 3203 19C533 ORA V5ECAL+3 ,Y i OR WITH VTOC BM
3228 3206 99C533 STA VSECAL+3 . Y
3229 3209 88 OEY
j
3230 32DA CA OEX
3231 320B 00F3 BNE ES3
3232 3200 60 FS4 RTS ; DONE
)
3233
j
,)
PAGE 100 SHEP APPLE ODS ?
PAGE
l
3234
3235 LoCSEC - LOCATE SECTOR FOR RECORO 110
<:. 3236
3237 RELSEC
~
(REL REC * RECLEN + RELBYTE)/256
3238 SECBYT
~
REMAINOER
(0,
3239
3240 LoCSEC
3241 32DE A08C35 LOA CCBRRN ,RELATIVE RECORD NUMBER
3242 32El 80B435 STA OCBCSB ; TO CEB FOR MUL T
3243 32E4 80B835 STA OCBCRR ; AND CRR FOR SAVE
3244 32E7 A08035 LOA CCBRRN+1
3245 32EA 80B235 STA OCBCRS
3246 32EO 80B935 STA OC DCRR+1
3247 32FO A900 LOA *0
3248 32F2 80B335 STA OCBCRS+1 ; HIGH R S ~ O
3249 32F5 AOI0 LOY *16 ; 16 BIT MULT
3250
I ..
3251 32F7 AA LSI TAX ; SAVE MS BYTE
3252 32F8 AOB435 LDA DCBCSB
3253 32FB 4A LSRA ; IF NO CARRY THEN NO PART PRoO
3254 32FC B003 BCS LSIA
3255 32FE 8A TXA
3256 32FF 900E BCC LS2
3257 3301 18 LSIA CLC
3258 3302 ADB335 LDA OCDCRS+ l ; FPoRM PARTIAL PROD
3259 3305 60D635 ADC DCBRCL
( ..
3260 3308 8DB335 STA OCBCRS+1
3261 330B 8A TXA
3262 330C 608735 ADC OCBRCL+1
3263
3264 330F 6A LS2 RORA ; MULT BY 2
3265 3310 6EB335 RoR OCBCRS+l
3266 3313 6EB235 RoR DCBCRS
3267 3316 6EB435 RoR DCBCSB
3268 3319 88 OEY ; DEC BIT COUNT
3269 331A OOOB BNE LSI i BR I F MORE BITS
3270
3271 331C A08E35 LOA CCBBYT ; ADO REL BYTE RESULT
~
3272 331 F 80BA35 STA OCBCRB ; (SAVE REL BYTE)
3273 3322 6DB435 AOC DCBCSB
I
3274 3325 80B435 STA OCBCSB
~ (,.
3275 3328 A08F35 LOA CCBBYT+1
3276 332B 8DBB35 STA DCBCRB+1 ; (SAVE REL BYTE )
3277 332E 6DB235 AOC OCBCRS
<'
3278 3331 8DB235 STA OCBCRS
3279 3334 A900 LOA *0
3280 3336 6 0B335 ADC DCBCRS+l
I
(.
\iO 3281 3339 808335 STA OCBCRS+l
3282 333C 60 RTS
3283
<-
J
PAGE 101 SHEP APPLE DOS
PAGE
3284 3330 A901 ERROR I LOA lICREFUN
3285 333F 0022 BNE ERRoRA
3286 3341 A902 ERROR2 LOA lICRERR
3287 3343 ODIE BNE ERRoRA
3288 3345 A903 ERROR3 LOA lICREMRE
3289 3347 OOIA BNE ERRORA
3290 3349 A904 ERRoR4 LOA lICREFOP
3291 334B 0016 BNE ERRORA
3292 3340 A905 ERRoR5 LOA lICREEoF
3293 334F 0012 BNE ERRoRA
3294 3351 A906 ERRoR6 LOA lICREFNF
3295 3353 OOOE BNE ERRORA
3296 3355 A909 ERROR9 LOA #CRENSA
3297 3357 DQOA BNE ERRoRA
3298 3359 A90A ERRR10 LOA lICREFLK
3299 335B 0006 BNE ERROR A
3300 3350 A900 GooOID LOA liD , STA=O
3301 335F AA TAX
3302 3360 18 CLC , CARRY=CLR
3303 3361 9003 BCC RETURN ; GO RETURN
. )
J 3304 3363 A200 ERRoRA LOX liD ; SM=O
3395 3365 38 ERRoRB SEC , CARRY=SET
3306 RETURN
3307 3366 08 PHP
3308 3367 809435 STA CCBSTA ,SET STA
3309 336A 8E9535 STX CCBSM ,AND SM
3310 3360 205B2E J SR RTNFCB ,GO RTN FCB
3311 3370 28 PLP ,GET STATUS
3312 3371 AE7F33 LOX ENTSTK ,GET ENT STACK
3313 3374 9A TXS ,RESTORE STACK
3314 3375 60 RTS , DONE
3315 EC2
3316
PAGE 102 SHEP APPLE DOS
PAGE
3317
3318
...
3319 MISC SYSGEN CELLS FOR THIS DOS
3320
3321 3376 01 GENDRN DB 1 ; DOS REL NO.
...
3322 3377 01 GENSRN DB 1 ; SYSGEN REL NO.
3323 3378 01 GENDTP DB 1 ; DOS TYPE NO.
3324 3379 03 GENTYP DB 3 ; SYSGEN TYPE CODE
3325 337A 11 GENVTN DB 17 i VTOC TRACK NO.
3326
(41
(41
(41
(41
(41
1
(41
(41
(41
(41
(41
(41
J
(.
(41
(41
PAGE 103 SHEP APPLE DOS
PAGE
3327
3328 MIse DOS WORK CELLS
3329
3330 337B 00 CVDTBii DB 0 j CUR VOL DIR TRK
3331 337C 00 CVDSEC DB 0 ; CUR VOL orR SECTOR
3332 3370 00 CURCCB DB 0,0 ,CURRENT CCB ADR
337E 00
3333 337F 00 ENTSTK DB 0 j ENTRY STACK POINTER
3334 3380 00 TEMP! DB 0 ; TEMP BYTEl
3335 3381 00 TEMI'.2 DB 0 j TEMP B Y_TE_ 2
3336 3382 00 TEMP3 DB 0 ; TEMP BYTE 3
3337 3383 00 ENTSLT DB 0 ,BOOT SLOT SAVED
3338 3384 00 ALC10S DB Q,Q,$F8,$FF ,ALLOCATATION TRACK BIT MAP
3385 00
3386 F8
3387 FF
3339 3388 0008 8UFADR DB @U800 NIBBKLE BUFFER ADR
3340
.)
J
PAGE 104 SHEP APPLE DDS
PAGE
3341
3342 VTDC RECORD AREA
.... 3343
3344 VTDC
3345 338A 01 VDoST DB 1 ; BoS TYPE
....
3346 338B 11 VDIRTK DB 17 ;CoLUME DIRECTORY SECTOR
3347 338C OC VDIRSC DB 12 ; VOLUME DIRECTORY SECTOR
3348 3380 01 VDOSRN DB 1 ; DDS RELEASE NUMBER
3349 338E 01 VGENRN DB 1 i SYSGEN RELEASE NUMBER
3350 338F 01 VGENTC DB 1 i SVSGEN TYPE CODE
l
3351 3390 00 VVOLNO DB 0 ; VOLUME NUMBER
3352 3391 VVOLNM RMB 32 ; VOLUME NAME
3353 33Bl 7A VTDMS DB 122 iMAX SECTORS IN A FILE OI R
3354 33B2 VSPARE RMB 8 ; SPARES
3355
3356 33BA 11 _VALCAl_ DB 17 ; ALoCATIoN ALGOR ITHM BYTE 1
I
3357 33BB 01 VALCA2 DB 1 ; AA BYTE2
3358 33BC 00 VALCA3 DB 0 ; AA BYTE3
3359 33BD 00 V"'LCA4 DB 0 ; AA BYTE4
3360 33BE 23 VNoTRK DB 35 ;1'10 TRACKS ON VOL
I'
3361 33BF 00 VNoSEC DB 13 ; NO SECTORS PER TRACK
3362 33CO 0001 VSECLN DB @@256 ; NO. BYTES PER SECTOR
3363
3364 33C2 VSECAL EQU
*
; SECTOR ALLOCATION AREA
I'
3365 SECTORS ALLOCATED BY BIT MAP
3366 4 BYTES OF BITS PER TRACK
I' 3367 LEFT MOST BIT REPRESENTS SECTOR 1'1
3368 WHERE 1'1=1'10 SECTORS PER TRACK
1
3369
I' (.
3370
3371
l1'
G. I \l"
l'
l'
(. (.11
.. (.11
('
l'
PAGE 105 SHEP APPLE DOS
PAGE J
3372 33C2 ORG VTQC+256
3373
3374 VOLUME DIRECTORY AREA
3375
3376 VOLDIR
3377 348A VDTCOE RMB 1 iVOLUME DIRECTORY TYPE CODE
3378 348B VDLTRK RMB 1 ; VD LINK TRACK
3379 348C VDLSEC RMB 1 i VD LI NK SEC TOR
3380 348D VDNF RMB 1 ; VD NUMBER FILES THIS SECTOR
3381 348E VDSPAR RMB 7 i SPARES
I
3382
-
3383 3495 VDFILE EGU
*
i FILE ALLOCATION AREA (7 FILES)
3384 EACH F ILE:
3385
FILE OIR TRK
.. 3386
FILE DIR SECTOR
3387 FILE USE CODE
3388
FILE NAME (32)
.. 3389 3495 ORG VDLD IR+256
3390 358A VDEND EGU
*
3391 0100 VDLEN EGU *-VDLDIR
.. J 3392 00F5 VDFLEN EGU *-VDFILE
3393
3394
I
..
..
..
(w
PAGE
3395
3396
3397
3398
3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
3409
3410
3411
3412
3413
3414
3415
3416
3417
3418
3419
3420
3421
3422
3423
3424
3425
3426
3427
3428
3429
3430
3431
3432
3433
3434
3435
3436
3437
3438
3439
3440
3441
3442
3443
3444
3445
3446
3447
3448
106 SHEP APPLE DOS
358A
0000
000 1
0002
0003
0004
0005
0006
0007
0008
0009
OOOA
OOOB
oooe
358B
0000 _
000 1
0002
0003
0004
0005
358C
358E
358F
3590
3591
3592
3594
0001
0002
0003
0004
0005
0006
0007
0008
0009
CCB
CCBREG
CRGNUL
CRGOPN
CRGCLS
CRGRD
CRGWR
CRGDEL
CRGDIR
CRGLCK
CRGUNL
CRGRNM
CRGI'OS
CRGFMT
CRGMAX
CCBBSA
CCBRGM
CRMNUL
CRMNBT
CRMNBL
CRMSBT
CRMSBL
C R ~ l M X
CCBRRN
CCBFN2
CCBRLN
CCBBYT
CCBVOL
CCBDRV
CCBBLN
CCBSLT
CCBFUC
CCBFNI
CCBBBA
CCBDAT
CCBSTA
CREFUN
CRERR
CREMRE
CREFOP
CREEOF
CREFNF
CREVMM
CREIDE
CRENSA
PAGE
COMMAND CONTROL BLOCK (CCB)
RMB
EGU
EGU
EGU
EGU
EGU
EGU
EGU
EGU
EGU
EGU
EGU
EGU
EGU
RMB
EGU
EQU
EQU
EQU
EQU
EQU
RMB
RMB
RMB
RMB
RMB
RMB
RMB
EQU
EGU
EGU
EGU
EGU
EGU
EGU
EGU
EGU
1
o
1
2
3
4
5
6
7
8
9
10
11
12
1
o
1
2
3
4
5
2
1
1
1
1
2
1
1
2
3
4
5
6
7
8
9
,USER REQUEST BYTE
,O-NO REQUEST
, I-OPEN FILE
,2-CLOSE FILE
; 3-READ DATA
; WRITE DATA
,5-DELETE FILE
,6-READ DIRECTORY
,7-LOCK FILE
,8-UNLOCK FILE
,9-RENAME
, 10-POSITION FILE
; i1-FORMAT
; FORMAT - BOOT START ADR PAGE
, RREQUEST MODIFIER BYTE
; NO MODIFIER
,R/W - 1 - NEXT BYTE
,R/W - 2 - NEXT BLOCK
iR/W - 3 - SPECIFC BYTE
, R/W - 4 - SPECIFIC BLOCK
,110 - RELATI VE RECORD NUMBER
; RENAME - FILE NAHE 2 PTR
,OPEN - RECORD LENGTH
j l ID - RELATIVE BYTE NO (2 BYTES)
,OPEN - VOL NO.
,OPEN - DR IVE
, 110 - BLOCK LENGTH (2 BYTES)
,OPEN - SLOT NO
, OPEN - FILE USE CODE
OPEN. DELETE, LOCK, UNLOCK, RENAME
;BLOCKK I /O - BLOCK BUFFER PTR
,BYTE 1/0 - DATA BYTE
,RESULT STATUS
; FeB UNALLOCATED
,CCB REG RANGE ERR
,REG MOD RANGE ERR
,FCB HAS OPEN FILE ERR
; END OF FILE ON READ
,FILE NOT FOUND
; VOL MIS MATCH
,110 ERR
,NO SECTORS AVAILABLE
- FILENAME P
I .
tit
!'a
l tit
..
l ..
PAGE 107 SHEP APPLE DOS
3449 OOOA CREFLK EGU 10 ; FILE LOCKED
3450
3451 3595 CCBSM RMB I iSTATUS MODIFIER
3452 3596 CCBFeB RMB 2 i FeB PTR
3453 3598 CCBDB? RMB 2 ; OIR aUF PTR
)
3454 359A CCBSBP RMB 2 i SECTOR BUF PTR ,
3455 3 59C CCESPR RME 4 i SPARE
3456 0016 CCELEN EGU *-CCB ; CCE LENGTH
)
3457 3596 CFCEAD EGU CCEFCE
3458 3598 CFCEDR EGU CCEDEP
3459 359A CFeese EGU C.CESBP
3460
)
)
)
)
) )
) )
) )
)
.l
)
)
) )
)
]
.l
..l
)
o j
]
)
-l
)
PAGE 108 SHEP APPLE DDS
..
,
PAGE
..
3461
3462 FI LE CONTROL BLOCK (FCB) DEFiNITION
..
f;.
3463 DCB - FILE DATA CONTROL BLOCK
3464
3465 FCB
Go.
3466
3467 35AO FCBSTA RMB 1 ; FCB STATUS
3468 0000 FCBUNA EQU SOD ; FeB UNALLOCATED
3469 0080 FCBALC EQU S80 ; FeB ALLOCATED
3470 0040 FCBEOP EQU 540 ; FeB HAS OPEN FILE
34 7 1
34 72 DATA CONTROL BLOCK
3473
3474 FCBDCB
t'
3475 35AI DCBFDT RMB 1 ; 1ST F ILE DIRECTORY TRACK
34 76 35A2 DCBFDS RMB 1 ; 1ST F ILE DIRECTORY SECTOR
34 77 35A3 DCBCDT RMB 1 ; CURRENT FILE DIRECTORY TRACK
3478 35A4 DCBCDS RMB 1 ; CURRENT FILE DIRECTORY SECTOR
3479 35A5 DCBWRF RMB 1 ; WR ITE REQD FLAG
3480 ;S80=WRITE FILE DIR
t'
3481 ;S40=WRITE SECTOR DIR
3482 35A6 DCBTRK RMB 1 SECTOR TRACK AOR
3483 35A7 DeBSEC RMB 1 ; SECTOR ADR
('01
3 484 35AB DeBDMS RMB 2 ; MAX NO DIRECTORY SECTORS
3485 35AA DCBDFS RMB 2 ; CURRENT DIR 1ST REL SECTOR
3486 35AC DCBDNF RMB 2 . REL SECTOR OF NXT OIR
('01
3487 35AE DCBCMS RMB 2 ; SECTOR CURRENTLY IN MEMORY
3488 35BO DCBSDL RMB 2 ; SECTOR DATA LENGTH
3489 35B2 DCBCRS RMB 2 ,CURRENT RELATI VE SECTOR
3490 35B4 DCBCSB RMB 2 ; CURRENT SECTOR BYTE
3491 35B6 DCBRCL RMB 2 ; RECORD LENGTH
3492 35B8 DCBCRR RMB 2 ; CURRENT RELATIVE REC
""
3493 35BA DCBCRB RMB 2 ,CURRENT RELATIVE BYTE
3494
3495 35BC DCBALS RMB 1 ; ALLOCATION SECTOR BYTE
""
( ..
3496 35BD DCBATK RMB 1 ; ALLOCATION TRACK
3497 35BE DCBABM RMB 4 ; ALLOCATION TRACK SECTOR BIT MAP
3498
3499 35C2 DCBFUC RMB 1 ; FILE USE CODE
3500 35C3 DCBSLT RMB 1 ; SLOT NUMBER
3501 35C4 DCBDRV RMB 1 ; DR I VE NUMBER
( ..
3502 35C5 DCBVOL RMB 1 ; VOLUME DR I VER
3503 35C6 DCBVTN RMB 1 ; VTOC TRACK NUMBER
3504
,
( ,.
3505 35C7 DCBSPR RMB 3 ; SPARES
3506
1
3507 0029 DCBLEN EQU *-FCBDCB ; DCB LENGTH ,
( ,.
3508 002A FCBLEN EQU *-FCB ; FeB LENGTH
3509
,
.,
'II
,
PAGE 109 SHEP APPLE DDS
PAGE
,
3510
3 5 11 DOSLDR - DDS LOADER AND WR ITTER
3512
,
351 3 BOUND 256
3514 DOSLDR
3515 GARBAGED BOOT REC 0 HERE
;;y
3516 3600 RMB 254
3517 36FE 00 GRSPG DB 0
3518 36FF 00 GRP GC DB 0
;;y
3519
,
,)
.:;
.:;
.:;
.:;
.:;
.:;
.,
'"
]
.,
]
)
r
,f,;
PAGE 110 SHEP APPLE DOS
,.
PAGE
3520 SC3
3521
f.;
3522 ; READ DOS AFTER BOOT
3523 ; i
3524 3700 8EE937 STX IBSLOT ; SET BOOT SLOT
(;.
3525 3703 8EF737 STX IBPSLT ; SET PREVIOUS SLOT
3526 3706 AOOI LOY III ; SET PBE!al I I,IE
3527 3708 80F837 IBPORV
3528 :'--
3529 370B AOE037 LOA NOPGS ; COPY NO PAGES TO GET
I
3530 370E 8 0E137 STA BRWCNT
3531 3711 A900 LOA lIO
3532 3713 80EC37 STA IBTRK ; SET TRACK 0
3533
3534 3716 AOE237 LOA BSOSEC i COPY START DOS SECTOR
3535 3719 80E037 STA IBSECT
3536
I"'
3537 371C AOE337 LOA BGNDOS ; COPY STARTR DOS AOR
3538 371F 80F1 37 STA IBBUFP+l
3539
I"'
3540 3722 A901 LOA lIIBCRTS ; SET READ
3541 3724 80F437 STA IBCMO
3542
I"'
3543 3727 8A TXA i SET PREV TRACK = 0
3544 3728 4A LSRA
3545 3729 4A LSRA
,...
3546 372A 4A LSRA
3547 372B 4A LSRA
3548 372C AA TAX
'"
3549 3720 A900 LOA lIO
3550 372F 90F804 STA $4F8. X
3551 3732 907804 STA $478. X
,...
3552 3735 209F37 JSR BOOTIO GO READ DOS
3553
3554 OOSI NT - INITIALIZE DOS
,...
( "
3555
3556 OOSINT
3557 3738 A2FF LOX lI$FF
'"
< ..
3558 373A 9A TXS
3559 3 73B 8EEB37 STX IBVOL
3560 373E 2093FE JSR SETVIO
3561 3741 2089FE JSR SETKBO
3562 3744 AOF737 LOA IBPSLT
3563 3747 808333 STA ENTSLT
( '
3564 3 74A 4A LSRA
3565 374B 4A LSRA
I
3566 374C 4A LSRA
('
3567 3740 4A LSRA
3568 374E 80302B STA CS SET ENTRY CURRENT SLOP
3569
,
3570 3751 4C001E 0 13 JMP DOSREL GO TO POST INIT ROUTINE
3571 3754 ...... EA 99
."6
aUI U 1'( L5rt 1MI' j
J
3572
..
PAGE 111 SHEP APPLE DOS ~
PAGE
I
Ii
3573 WBOOT
~ J J
-.J
3574 3755 ADF137 LOA IBBUFP+l i GET START OF DDS
-
3575 3758 80E337 STA BGNOOS ; SAVE IT
~
3576 375B 38 SEC
I
3577 375C AOE737 LOA ADOSLD+l ,CALCULATE
3578 375F EOE337 SBC BGNDOS ~
3579 3762 80E037 STA NOPGS ,NO DDS PAGES
3580 3765 80E237 A 50S
3581 ~
3582 3768 A900 LOA lIO
I
3583 376A 80EC37 STA IBTRK , TRACK=O
3584 3760 80E037 STA IBSECT ,SECTDR=O
.-
3585 3770 80F037 STA IBBUFP
3586
3587 3773 AOE737 LOA AoaSLD+1 ,GET BOOT START AOR
..
3588 3776 80F1 37 STA IBBUFP+l ; TO BUFP
0
3589 3779 80FE36 STA GRSPG , TO GARBAGE RECORD
-
3590
3591 377C A90A LOA lII0 , NO OF BOOT PAGES
3592 377E 80E137 A BRWCNT ,TO BOOT 110 COUNTER
3593 3781
O A ~ A'l <{S' A LA]
, AND
3594 3782
OA e.<\ ASLA - L")A 1'I4l?
, TO
3595 3783 OA ASLA i) <>? ; GARBAGE RECORD
.. ..J 3596 3784 80FF36 STA GRPGC
3597
3598 3787 A902 LOA lIIBCWTS ; SET WRITE
.-
3599 3789 80F437 STA IBCMO
3600
3601 378C 209F37 JSR BOOTIO
,
GO WRITE BOOT SECTORS
3602
.;
3603 378F AOE337 LOA BGNOOS , SET START OF DOS
3604 3792 80F137 STA IBBUFP+l
3605
3606 3795 AOE037 LOA NOPGS
3607 3798 80E137 STA BRWCNT
3608 379B 209F37 JSR BOOTI O ,GO WRITE DOS
3609
3610 379E 60 RTS ; DONE
3611
I
.,'
:i
.i
-
J
<;
_ L ~
PAGE 112 SHEP APPLE DOS
J!-
PAGE
@It
3612 BOOTIO
3613 379F ADE537 LDA BAIOB+l
@It
;3614 37A2 ACE437 LDY BAIOB
3615 37A5 20003D J SR DISKIO
I
3616
(fa
3617 37A8 ACED37 LDY I BSECT , GET SECTOR
3618 37AB C8 INY , INCREMENT TO NEXT
3619 37AC COOD CPY *13 ; AT END OF TRACK
3620 37AE D005 BNE BIDI , BR IF NOT
3621 3 7BO AOOO LDY *0 ,SET TO SECTOR ZERO
3622 37B2 EEEC37 INC IBTRK
3623 37B5 8CED37 BIDI STY IBSECT , SET NEXT SECTOR
3624
3625 37B8 EEF137 INC IBBUFP+l
,
INCREMENT BUFFER POINTER
3626 37BB CEE1 37 DEC BRWCNT ,DECREMENT PAGE COUNTER
3627 37BE DODF BNE BOOTIO , BR IF NOT DONE
3628 37CO 60 RTS
3629
3630
,
,
,
..
PAGE 113 SHEP APPLE DOS
)
PAGE
)
3631
3632 DOS PATCH AREA 1
)
3633
3634 37Cl OPI EGU
*
3635 BOUND 256
J 3636 3800 oRG *-$20
3637 EC3
3638 37EO 00 NOPGS DB 0
3639 37El 00 BRWCNT DB 0
j
3640 37E2 00 BSOSEC DB 0
3641 37E3 00 BGNOoS DB 0
)
3642 37E4 E837 BAIoB DB @@IQB
3643 37E6 0036 AOoSLO DB @@DOSLDR
3644
) -)
)
- )
)
) )
> ~
J
) I ~
)
~
)
~
)
-'
) .)
~
.
)
-'
) .)
)
~
-'
.) )
J
1
..,
,
)
PAGE 115 SHEP APPLE DOS
)
)
PAGE
)
3677
)
3678 FILE DIRECTORY DEFINITION
)
3679
3680 37FF ORG 0
)
3681 FILDIR
)
3682 0000 FDUCDE RMB 1 ; FILE USE CODE
3683 0001 FDLTRK RMB 1
Il
iLINK TO NEXT DlR TRACK
)
3684 0002 FDLSEC RMB 1 iLINT TO NEXT DIR SECTOR
) -
3685 0003 FDNSA RMB 1
\
i NO SECTORS ALLOCATED
3686 0004 FDLSDL RMB 1 jLAST SECTOR DATA LENGTH
3687 0005 FDFRS RMB 2 ; 1ST RELATIVE SECTOR IN TH IS DIR
) )
3688 0007 FDSPAR RMB 5 ; SPARES
', 3< 19
"'; 690 OOOC FDENT RMB 1 i START OF FILE ENTRIES (122)
)
3691 0000 FDTRK EGU a ; TRACK
3692 0001 FDSEC EGU 1 ; SECTOR
1
3693
3694 0100 FDLAST EGU FILDIR+256
3695
)
)
1
.J
J
) ..
PAGE 116 SHEP APPLE DOS
;,
..
PAGE
,
3696 0000 . END
ASECT PTRS
TSECT PTRS
..
BSECT PTRS
..
SYMBOL MAP
A 0001 A ADOSLD 37E6 A ADRTAB IFOC A
AECI 3A8F A AEC2 3FFF A AEND 2B8D A*
AIOB 2B87 A AITSTL EOOO A ALe lOS 3384 A
AP I 24AE A AS 1VT 2062 A ASIVTL OOOA A
AS2VT 206C A AS2VTL OOOA A ASBRKI D865 A
AS8RK2 1067 A ASC L 3800 A- ASC2 3DOO A
l ..
ASEOP OOAF A ASEOP2 0069 A ASHMI 0073 A
ASHM2 006F A ASIBSW 2B80 A ASLMEM 0067 A*
ASRUNI D7D2 A ASRUN2 OF04 A ASSOP 0067 A
..
ASTART 200A A ATSTV 004C A* AVOLDR 2B8B A
AVTOC 2889 A B 0002 A BADIO 308E A
'.
BA I OB 37E4 A BDI 309E A BFTl 28F8 A
"
8FT2 2940 A BFTI8 2959 A BGNDOS 37E3 A
8IOI 37B5 A BLOFTB 28E7 A BOOTIO 379F A
800TSL 002E A* BREAK 2052 A 8RWCNT 37El A
8SDSEC 37E2 A BUFADR 3388 A* CA 2B38 A
C8 2B36 A* CCB 358A A CCBADR 200C A
CCB8BA 3592 A CCBBLN 3590 A CCBBSA 358B A
CCBBYT 358E A CCBOAT 3592 A CCBDBP 3598 A
CCBDRV 358F A CC8FCB 3596 A CCBFNI 3592 A
CCBFN2 358C A CCBFUC 3591 A CCBLDR 2113 A*
CC8LEN 0016 A CCBREG 358A A CCBRLN 358C A
CCBRGM 358B A CCBRRN 358C A CCBSBP 359A A
I
CCBSLT 3590 A CC8SM 3595 A CCBSPR 359C A*
I CCBSTA 3594 A CCBVOL 358E A CCHAR 2B7C A
CD 2B2E A CDETAB lF35 A CERTN 21E2 A
CF3 2E4F A CFCB"D 3596 A CFCBDR 3598 A
CFCBSB 359A A CFTADA 2B18 A CHAIN 204E A
CHINI 2131 A CHIN2 213C A CHRIN 2121 A
CHROUT 2147 A CINA 2002 A C.I O 0080 A
CL 2B32 A CLO 2528 A CLl 2530 A
CL2 2540 A CLALL 2526 A CLC 1 23DA A
CLCFCB 2E4A A CLOSE 250C A CLRCCB 23D6 A
CLRFNS 22C5 A CLRSEC 2Fl l A CLRSTS 2871 A
CLX 2516 A CMDETS 201C A CMDGO 23A2 A
CMDNO 2 828 A CMDNTB 298F A CMDRTN 21EF A
CMDSTB 2AOE A CMOVT 2BBF A CNF 224E A
CNFI 2259 A CNFTBS 2B20 A CNUM 0044 A
CONT 2056 A COSO 216B A COSOI 2178 A
CDSI 218A A COS1A 218D A COS2 2198 A
l COS3 21A7 A COS3A 21B7 A CDS4 21BO A
COS4A 21C6 A COS5 21CC A COS6 21D8 A
l
COUTA 2004 A CR 2B34 A CREEOF 0005 A
CREFLK OOOA A CREFNF 0006 A CREFOP 0004 A
..
..
,
PAGE 117 SHEP APPLE DDS
,
"
,
CREFUN 0001 A CREIDE 0008 A CREMRE 0003 A
CRENSA 0009 A CRERR 0002 A CREVMM 0007 A
')
CRMMAX 0005 A CRMNBL 0002 A GRMNET 0001 A
CRMNUL 0000 A* CRMSBL 0004 A* CRMSBT 0003 A*
, )
CRGCLS 0002 A CRGDEL 0005 A CRGDIR 0006 A
. )
CRGFMT OOOB A CRGLCK 0007 A CRGMAX OOOC A
CRGNUL 0000 A* CRGOPN 0001 A CRGPOS OOOA A
, )
CRGRD 0003 A CRGRNM 0009 A CRGUNL 0008 A
. )
CRGWR 0004 A CS 2B30 A CSI 2FI4 A
CS2 3242 A CSERR 2264 A CURCCa 3370 A*
l
.. )
CUR OPT 2B2C A CV 2B2C A CVDSEC 337C A
f)
CVOTRK 337B A D 0020 A DB INIT 2076 A
DBRST 20AI A DBVE.CT 2107 A DCBABM 35BE A
DCBALS 35BC A DCBATK 35BD A DCBCDS 35A4 A
. )
.. DCBCDT 35A3 A DeaeMS 35AE A DCBCRB 35BA A
DCBCRR 35B8 A DCBeRS 35B2 A DCBCSB 35B4 A
DCBDFS 35AA A DCBDMS 35AB A OCBDNF 35AC A
DCBDRV 35C4 A DCBFDS 35A2 A DCBFDT 35A1 A
DCBFUC 35C2 A DCBIO 304F A DCBIOI 3058 A
DCB ID2 3055 A DCBLEN 0029 A DCBRCL 35B6 A
~
DCBSDL 35BO A DeSSEC 35A7 A DCBSLT 35C3 A
DCBSPR 35C7 A* D C S ~ U P 2C66 A DCBTRK 35A6 A
I
DCBVOL 35C5 A DCBVTN 35C6 A DCBWRF 35A5 A
~
DCT 37FB A DELTA IF53 A DENRTS 2BEI A*
DEPAGE 0040 A DFNFTB 2B21 A* DFNFTS 2 B7B A
DGI 27D2 A DG3 27DF A DI 3 3751 A
DISKID 3DOO A DLDSUP 2EE8 A DOPEN 2BEB A
DOSENT 2BC9 A DOSGO 27CC A DOSINT 3738 A*
DOSLDR 3600 A DOSLNG IF52 A DDSREL IEOO A
DPI 37CI A* DPGCNT IF54 A DRO IEI6 A
DRI IE20 A DRIO IEF5 A DRII IF09 A
OR2 IE2F A DR3 IE4B A DR4 IE58 A
DR5 IE66 A DR6 IE6C A DR7 IE86 A
DR8 IE95 A DR9 IEB4 A DRTNI 2 1F7 A
DRTNO 21F3 A DSPAGE 0020 A DTB1 31AF A
DTB2 31B3 A DTBLN 31A2 A EAPND 24AB A
EAS 2745 A EASO 2752 A EASI 2757 A
EAS2 2760 A* EASLl 261C A* EAT! 204E A
EAT2 2BC9 A EBLO 2560 A EBLDl 2583 A
EBSV 2541 A EBSVl 2540 A EC I 298F A
EC2 3376 A EC3 37EO A ECAT 2737 A
ECHAIN 26A8 A EeLl 250B A ECLOSE 24F9 A
ECMO 23AE A EOEL 2478 A EDOS 4000 A
EEXEC 26F2 A EFTA8A 2B7E A EI BL 2628 A
J
EI8SV 25AD A EIN 2434 A EINIT 2768 A
EINX 2444 A ELGO 248C A ELOAD 2601 A
ELOCK 2486 A EMI OOOB A EMIO 0047 A
J
EMil 0052 A EMl2 005C A EMI3 006F A
EMI4 0080 A EM2 OOOB A EM3 0008 A
EM4 OOOB A EM5 OOOE A EM6 0019 A
EM7 0027 A EM8 0036 A EM9 003E A
EMAXF 2465 A EMOTB 2808 A EML 0091 A
EMON 2447 A EMPR 280E A EMPRI 28 12 A
)
EMSG 2A70 A ENFA 27E6 A ENMl 2459 A
ENOMDN 2451 A ENTSLT 3383 A ENTSTK 337F A
)
-
( t (
c
PAGE 118
I
SHEP APPLE DOS ~
I
EOI 24CA A E03 2406 A E04 2409 A*
E05 24EO A E06 24E6 A* EOFIN 2020 A
EOPEN 24B6 A EPOS 2706 A EPR 2421 A
EPR X 2431 A ERIO 2C05 A EREAO 26BE A
EREN 2493 A ERNUl 27EE A ERR2 2BE2 A
n
ERR3A 2C02 A ERR9 329E A ERROR 27FO A
ERROR I 3330 A* ERROR2 3341 A ERROR3 3345 A
ERROR4 3349 A* ERROR5 3340 A ERROR6 3351 A*
ERROR9 3355 A ERRORA 3363 A ERRORB 3365 A
ERRRIO 3359 A ERUN 2692 A ESAVE 258F A
ESTATE 2B70 A ESYNTX 27E2 A EUNLK 248A A
( ,
(
EWR ITE 26B3 A EXO 271B A EXI 2728 A
EXIA 2728 A EX2 2736 A EXPI 2711 A
EXP2 2714 A FOI 2C69 A FOIA 2C8C A
( ,
(
F02 2COO A F03 2C3E A FAS8 2881 A
FASBL 0006 A ECB_ 35AO A FCBALC 0080 A*
FCBDCB 35AI A FCBFOP 0040 A* FC8LEN 002A A
(
FC8STA 35AO A* FCBUNA 0000 A* FCLOSE 2C96 A
FD2 2D84 A* F03 2DBF A F04 20AA A
F05 2 084 A F06 20C6 A F07 2009 A
FOEL 2081 A FDENT DODe A FOFRS 0005 A
FDLAST DIDO A* FDLSDL 0004 A* FOLSEC 0OO2--A
FDLTRK 0001 A FDNSA 0003 A* FOS! 2DE7 A
(
FDSEC 0001 A* FDSPAR 0007 A* FDSUB 2DDF A
FDTRK 0000 A* FDUCDE 0000 A* FFI 31C5 A
FF2 31C9 A FF3 3100 A FF4 310E A
FF4A 321F A FF5 31FO A FF6 31F7 A
FF7 31FC A FF8 3205 A FFMT 2E6B A
FILDIR 0000 A FILSRC 287A A FLOCK 2D58 A
FLSI 2884 A FLSIA 2889 A FLS2 2898 A
FLS3 289A A FLS4 28A6 A FNI 0020 A
FNIADR 2006 A FN2 0010 A FN2ADR 2008 A
(
FNAMEI 2B3B A FNAME2 2B5B A FNDFIL 31B6 A
FOP EN 2BE5 A FPOSTN 2078 A FREAD 2CCO A
FRESEC 32B8 A FRETRK 32Al A FRNME 2CA2 A
(
FSI 3288 A FS2 328D A FS3 32DO A
FS4 32DD A FTI 32Al A FTAB 2000 A
FUNLCK 2D5F A FWRITE 2CD8 A GENDRN 3376 A*
GENDTP 3378 A* GENSRN 3377 A* GENTYP 3379 A*
GENVTN 337A A GETBYT 2DIO A GETKEY FDOG A
GETNUM 23EI A GETSEC 3229 A GN2 23E7 A
l GN3 23F2 A GN4 2418 A GN5 241A A
GNBC 23CC A GNWSEC 3121 A GNXTC 23BB A
GNXTCR 23CB A GO 2054 A GOODIO 335D A
(
(
GRPGC 36FF A GRSPG 36FE A GSO 322E A
GSI 3236 A GS2 324F A GS3 3261 A
GS4 326B A GS5 3272 A GS6 327F A
GS7 328D A GSSI 3247 A HOME FC58 A*
IASI 208E A lAS1A 2095 A IAS2A 2004 A
IBASVT 204E A IBBOOT 0008 A* IBBRK E3E3 A
,
IBBUFP 37FO A IBCHN E836 A rBGNO 37F4 A
IBCNUL 0000 A* IBCONT E003 A IBCRTS 0001 A
J
IBCWTS 0002 A IBOCTP 37EE A lBDERR 0040 A*
IBOLEN 37F2 A IBDRVN 37EA A IBFMT 0004 A
(
IBGO EOOO A 18HI'IEM 004C A IElLMEM 004A A
t
PAGE 119 SHEP APPLE DOS
IBPORV 37FB A IBPSLT 37F7 A IBRERR 0080 A*
IBRUN 2690 A IBSECT 37EO A IBSLOT 37E9 A
IBSMoO 37F6 A lHSOP GOCA A IBSoV OOCC A
IBSPAR 37F9 A* IBSTAT 37FS A IBTRK 37EC A
IBTYPE 37EB A IBVMME 0020 A leVOL 37EB A
IBVT 205B A IBVTL OOOA A I aWPER 0010 A*
ICFO 27BA A ICFOI 27A3 A ICF02 2794 A*
ICF03 2 78C A ICF04 279E A IFB 2103 A
IFBL 0010 A IIBI 2082 A IMBlTS 2B3A A
INCRI 3164 A INCR2 317A A INCRRB 3148 A
INCS2 318E A INCSC B 3181 A I NlTA 20A2 A
INlTAA 209E A INlTB 20C6 A INlTC 20C9 A
INlTO 2000 A INITE 20EB A I NITF 2103 A
INoPTS 2B2B A INPRT FE8B A I NSOS2 F88E A
I NSW 003B A lOB 37EB A lDBLOR 211A A*
ISTATE 2BIA A lTSTV 0020_ A L 0008 A
I
LBUFO 2B26 A LBUFF 0200 A LCKGO 2064 A
.'
L02 264F A L03 2680 A LOREGS 2204 A
LENGTH 002F A LNBI. 30133 A LNB2 3086 A
LNB3 30CB A LNB4 300A A LNB6 30EO A
LNB7 3101 A LNB7A 30FB A LNB8 3119 A
LNBCoN 31 00 A LDCNXB 30A3 A LoCSEC 320E A
I
LSI 32F7 A LSlA 3301 A LS2 330F A
MC 0040 A MFERR 27EA A MFULL 26BC A
MI 0020 A MIBI 31Al A MIBDA 3 18F A
Mo 0010 A MoOECK 21F9 A MoNMoO 2B27 A
MSBI 2FE7 A* MULT FB63 A* MVBPI 2B66 A
MVBUFP 2864 A MVFl 2F06 A MVFCBD 2FOO A
MVFCBP 2EFC A MVFCBS 2 F04 A MVFDBA 2F48 A
,
MVFN 3201 A MVFN I 2859 A MVFNI A 2B5B A
MVISW 2965 A MVoSW 297A A MVSBA 2FEI A
MVVDBA 3042 A NOPGS 37EO A NEPAGE IF 51 A
NPB 0080 A NPE 0040 A NSPAGE IF 50 A
NTI 2E89 A NT;L 2E91 A NT3 2E97 A
NT4 2EA9 A NT5 2EAF A NT6 2EC7 A
NT7 2ECA A NT8 2EDF A NUMI 0008 A
NUM2 0004 A NXTEXC 27AA A OCTO 2776 A
OPEN 2488 A OPNSUP 2B26 A oPTIL OODA A
oPTABI 2A40 A OPTAB2 2A4A A OPTAB3 2A54 A
ORG1 l EOO A oRG2 2000 A ORTN 2200 A
DRTNl 2210 A oSI 2855 A os TATE 2BIB A
)
OUTPRT FE95 A OUTSVT 200E A QUTSW 0036 A
PBO 2046 A* PRCIFR 2210 A PRCR 2E37 A
PRCRI 2E49 A PRCRIF 2213 A PRINT FDEO A
)
PROMPT 0033 A PRRTN 210F A PUTBYT 2042 A
R 0004 A RBYTE 27BB A ROI 20FO A
R02 2E04 A RD3 2E14 A RD3A 2E2A A
)
R04 2E20 A R05 2E34 A . ROFDC 2FBO A*
ROFOIR 2F5B A ROIR 20EE A ROoNE IEI3 A
RI>SECT 2F09 A Rove 3024 A ROVOI R 300E A
)
ROVToC 2FF4 A REP AGE IF4F A RETURN 3366 A
RFI 2E60 A RFOI01 2FB2 A RFOIo2 2FB4 A
RFDNL 2F7F A RFDNLI 2F88 A RFONXT 2 F 7 1 A
)
RNXBLK 2CFE A RNXBYT 2CF2 A RSPAGE IF4E A
RSPBLK 2CFB A RSPBYT 2CEF A RTNFCB 2E5B A
)
PAGE 120 SHEP APPLE DOS
RUN 2050 A RIlDA 30lD A RVDC 3015 A*
RVDGO 3027 A RVT 2BA9 A RWPI 2604 A
RWP2 2607 A RWP2A 26EO A RWP3 26E9 A
RWPOSN 26C9 A RWPR 26FI A S 0010 A
SATt 2000 A SAT2 2887 A SCO 2224 A
,
SCOA 2233 A SC I 2076 A SCIA 2244 A
SCIX 2236 A SC2 2BC9 A SC3 3700 A
SCNCMD 221E A SERRl 22C2 A SERR2 239F A
)
SETK8D FE89 A SETVID FE93 A SNI 22C8 A
,
SNIO 22D2 A SNLL 22F8 A SN2 227A A
l
SN3 2281 A SN4 2286 A SN5 228E A
,
)
SN6 2293 A SN7 22A5 A SN8 22AC A
SOPTS 22F8 A SPI 230F A SP2 2333 A
SP3 2335 A SP4 233F A SP 5 2366 A
)
SP6 2376 A SP7 2388 A SP8 2388 A
START 2000 A SVL 25C6 A SVIA 25C9 A
SV2 25DI A SV3 25FO A SVA 2825 A
)
SVINS 2BIE A SVOUTS 281C A SVREGS 2158 A
)
SVRGSA 2 15E A SVSTK 2822 A SVX 2823 A
SVY 2B24 A SYNTAX 2267 A TEMPt 3380 A
) )
TEMPIA 2829 A TEMP2 3381 A TEMP2A 282A A
TEMP3 3382 A TFUCR 28E6 A TSINlT 28A8 A
TSNXT 2880 A TSR 288F A TSST 28BA A
)
TSTEXC 28C5 A TSTFUC 2BDA A TSTQPN 28CO A
HCl 2808 A TXC2 2BD9 A V 0040 A
338A A VALCA2 338B A VALCA3 338C A*
) )
VALC 4 3380 A* VDEND 358A A* VOFILE 3495 A
VDFLEN 00F5 A VDINC 3215 A VDIRSC 33BC A
J
VOIRTK 3388 A VDLEN 0100 A* VDLSEC 348C A
) j
VOLTRK 348B A VDNF 348D A* VDOSRN 3380 A*
VDOST 338A A* VDSPAR 348E A* VDTCDE 348A A*
VGENRN 33BE A* VGENTC 338F A* VNOSEC 33BF A
)
VNOTRK 338E A VOLDIR 348A A VSECAL 33C2 A
VSECLN 33CO A* VSPARE 3382 A* VTOMS 3381 A
1
VTIO 2FFA A VTOC 338A A VVOLNM 3391 A*
)
J VVOLNO 3390 A WBOOT 3755 A WNX8LK 2D32 A
WNXBYT 2D26 A WRFDGO 2F37 A WRFOIR 2F31 A
WRSECT 2FIA A WRSGO 2F20 A WRVDIR 3034 A
WRVTOC 2FFB A WSPBLK 2D2F A WSP8 YT 2D23 A
)
WVT 2BB9 A ZPGECB 0042 A ZPGWRK 0040 A
NO ERROR LINES
SOURCE CK . 0041 OBJ . CK. 0000
)
o LOCAL REGIONS <63 MAX>
REMAINING TABLE SPACE 1718
j
IN RANGE FLAG 0
)
DISC SOURCE FILE 0300-0398
J
j )
)
l
. )
J
OJ