*********

Welcome to Project 64!

The goal of Project 64 is to preserve Commodore 64 related documents
in electronic text format that might otherwise cease to exist with the
rapid advancement of computer technology and declining interest in 8-
bit computers on the part of the general population. If you would like
to help by converting C64 related hardcopy documents to electronic
texts please contact the manager of Project 64, Cris Berneburg, at
<74171.2136@compuserve.com>.

Extensive efforts were made to preserve the contents of the original
document.  However, certain portions, such as diagrams, program
listings, and indexes may have been either altered or sacrificed due
to the limitations of plain vanilla text.  Diagrams may have been
eliminated where ASCII-art was not feasible.  Program listings may be
missing display codes where substitutions were not possible.  Tables
of contents and indexes may have been changed from page number
references to section number references. Please accept our apologies
for these limitations, alterations, and possible omissions.

Document names are limited to the 8.3 file convention of DOS. The
first characters of the file name are an abbreviation of the original
document name. The version number of the etext follows next. After
that a letter may appear to indicate the particular source of the
document. Finally, the document is given a .TXT extension.

The author(s) of the original document and members of Project 64 make
no representations about the accuracy or suitability of this material
for any purpose.  This etext is provided "as-is".  Please refer to the
warantee of the original document, if any, that may included in this
etext.  No other warantees, express or implied, are made to you as to
the etext or any medium it may be on.  Neither the author(s) nor the
members of Project 64 will assume liability for damages either from
the direct or indirect use of this etext or from the distribution of
or modification to this etext.

*********

The Project 64 etext of the Commodore 1541 ROM disassembly, converted
by Marko Makela <Marko.Makela@hut.fi>. This etext was created by
removing the HTML tags from the file 1541-diss.html downloaded from
http://www.hut.fi/~msmakela/cbm/docs/.

154DIS10.TXT, June 1996, etext #47.

*********

Commodore 1541 ROM disassembly

Version 1.0  (June 1994)

; turn LED on

C100   78         SEI
C101   A9 F7      LDA #$F7
C103   2D 00 1C   AND $1C00
C106   48         PHA
C107   A5 7F      LDA $7F
C109   F0 05      BEQ $C110
C10B   68         PLA
C10C   09 00      ORA #$00
C10E   D0 03      BNE $C113
C110   68         PLA
C111   09 08      ORA #$08
C113   8D 00 1C   STA $1C00
C116   58         CLI
C117   60         RTS


; turn LED on

C118   78         SEI
C119   A9 08      LDA #$08
C11B   0D 00 1C   ORA $1C00
C11E   8D 00 1C   STA $1C00
C121   58         CLI
C122   60         RTS


; clear error flags

C123   A9 00      LDA #$00
C125   8D 6C 02   STA $026C
C128   8D 6D 02   STA $026D
C12B   60         RTS


; prepare for LED flash after error

C12C   78         SEI
C12D   8A         TXA
C12E   48         PHA
C12F   A9 50      LDA #$50
C131   8D 6C 02   STA $026C
C134   A2 00      LDX #$00
C136   BD CA FE   LDA $FECA,X
C139   8D 6D 02   STA $026D
C13C   0D 00 1C   ORA $1C00
C13F   8D 00 1C   STA $1C00
C142   68         PLA
C143   AA         TAX
C144   58         CLI
C145   60         RTS


; interpret command from computer

C146   A9 00      LDA #$00
C148   8D F9 02   STA $02F9
C14B   AD 8E 02   LDA $028E
C14E   85 7F      STA $7F
C150   20 BC E6   JSR $E6BC
C153   A5 84      LDA $84
C155   10 09      BPL $C160
C157   29 0F      AND #$0F
C159   C9 0F      CMP #$0F
C15B   F0 03      BEQ $C160
C15D   4C B4 D7   JMP $D7B4
C160   20 B3 C2   JSR $C2B3
C163   B1 A3      LDA ($A3),Y
C165   8D 75 02   STA $0275
C168   A2 0B      LDX #$0B
C16A   BD 89 FE   LDA $FE89,X
C16D   CD 75 02   CMP $0275
C170   F0 08      BEQ $C17A
C172   CA         DEX
C173   10 F5      BPL $C16A
C175   A9 31      LDA #$31
C177   4C C8 C1   JMP $C1C8
C17A   8E 2A 02   STX $022A
C17D   E0 09      CPX #$09
C17F   90 03      BCC $C184
C181   20 EE C1   JSR $C1EE
C184   AE 2A 02   LDX $022A
C187   BD 95 FE   LDA $FE95,X
C18A   85 6F      STA $6F
C18C   BD A1 FE   LDA $FEA1,X
C18F   85 70      STA $70
C191   6C 6F 00   JMP ($006F)


; prepare error msg after executing command

C194   A9 00      LDA #$00
C196   8D F9 02   STA $02F9

C199   AD 6C 02   LDA $026C

C19C   D0 2A      BNE $C1C8
C19E   A0 00      LDY #$00
C1A0   98         TYA
C1A1   84 80      STY $80

C1A3   84 81      STY $81

C1A5   84 A3      STY $A3
C1A7   20 C7 E6   JSR $E6C7
C1AA   20 23 C1   JSR $C123

C1AD   A5 7F      LDA $7F

C1AF   8D 8E 02   STA $028E
C1B2   AA         TAX
C1B3   A9 00      LDA #$00
C1B5   95 FF      STA $FF,X
C1B7   20 BD C1   JSR $C1BD
C1BA   4C DA D4   JMP $D4DA


; erase input buffer

C1BD   A0 28      LDY #$28
C1BF   A9 00      LDA #$00
C1C1   99 00 02   STA $0200,Y
C1C4   88         DEY
C1C5   10 FA      BPL $C1C1
C1C7   60         RTS


; output error msg (track and sector 0)

C1C8   A0 00      LDY #$00
C1CA   84 80      STY $80
C1CC   84 81      STY $81
C1CE   4C 45 E6   JMP $E645


; check input line
C1D1   A2 00      LDX #$00
C1D3   8E 7A 02   STX $027A
C1D6   A9 3A      LDA #$3A   ; colon
C1D8   20 68 C2   JSR $C268
C1DB   F0 05      BEQ $C1E2
C1DD   88         DEY
C1DE   88         DEY
C1DF   8C 7A 02   STY $027A
C1E2   4C 68 C3   JMP $C368


; check input line
C1E5   A0 00      LDY #$00
C1E7   A2 00      LDX #$00
C1E9   A9 3A      LDA #$3A   ; colon
C1EB   4C 68 C2   JMP $C268


; check input line
C1EE   20 E5 C1   JSR $C1E5
C1F1   D0 05      BNE $C1F8
C1F3   A9 34      LDA #$34
C1F5   4C C8 C1   JMP $C1C8

C1F8   88         DEY

C1F9   88         DEY
C1FA   8C 7A 02   STY $027A
C1FD   8A         TXA
C1FE   D0 F3      BNE $C1F3

C200   A9 3D      LDA #$3D   ; equals

C202   20 68 C2   JSR $C268
C205   8A         TXA
C206   F0 02      BEQ $C20A
C208   A9 40      LDA #$40
C20A   09 21      ORA #$21
C20C   8D 8B 02   STA $028B
C20F   E8         INX
C210   8E 77 02   STX $0277
C213   8E 78 02   STX $0278
C216   AD 8A 02   LDA $028A
C219   F0 0D      BEQ $C228
C21B   A9 80      LDA #$80
C21D   0D 8B 02   ORA $028B
C220   8D 8B 02   STA $028B
C223   A9 00      LDA #$00
C225   8D 8A 02   STA $028A
C228   98         TYA
C229   F0 29      BEQ $C254
C22B   9D 7A 02   STA $027A,X
C22E   AD 77 02   LDA $0277
C231   8D 79 02   STA $0279
C234   A9 8D      LDA #$8D
C236   20 68 C2   JSR $C268
C239   E8         INX
C23A   8E 78 02   STX $0278
C23D   CA         DEX
C23E   AD 8A 02   LDA $028A
C241   F0 02      BEQ $C245
C243   A9 08      LDA #$08
C245   EC 77 02   CPX $0277
C248   F0 02      BEQ $C24C
C24A   09 04      ORA #$04
C24C   09 03      ORA #$03
C24E   4D 8B 02   EOR $028B
C251   8D 8B 02   STA $028B
C254   AD 8B 02   LDA $028B
C257   AE 2A 02   LDX $022A
C25A   3D A5 FE   AND $FEA5,X
C25D   D0 01      BNE $C260
C25F   60         RTS
C260   8D 6C 02   STA $026C
C263   A9 30      LDA #$30
C265   4C C8 C1   JMP $C1C8


; search character in input buffer

C268   8D 75 02   STA $0275
C26B   CC 74 02   CPY $0274
C26E   B0 2E      BCS $C29E
C270   B1 A3      LDA ($A3),Y
C272   C8         INY
C273   CD 75 02   CMP $0275
C276   F0 28      BEQ $C2A0
C278   C9 2A      CMP #$2A   ; asterix
C27A   F0 04      BEQ $C280
C27C   C9 3F      CMP #$3F   ; question mark
C27E   D0 03      BNE $C283
C280   EE 8A 02   INC $028A
C283   C9 2C      CMP #$2C   ; comma
C285   D0 E4      BNE $C26B
C287   98         TYA
C288   9D 7B 02   STA $027B,X
C28B   AD 8A 02   LDA $028A
C28E   29 7F      AND #$7F
C290   F0 07      BEQ $C299
C292   A9 80      LDA #$80
C294   95 E7      STA $E7,X
C296   8D 8A 02   STA $028A
C299   E8         INX
C29A   E0 04      CPX #$04
C29C   90 CD      BCC $C26B
C29E   A0 00      LDY #$00
C2A0   AD 74 02   LDA $0274
C2A3   9D 7B 02   STA $027B,X
C2A6   AD 8A 02   LDA $028A
C2A9   29 7F      AND #$7F
C2AB   F0 04      BEQ $C2B1
C2AD   A9 80      LDA #$80
C2AF   95 E7      STA $E7,X
C2B1   98         TYA
C2B2   60         RTS


; check line length ptr in command

C2B3   A4 A3      LDY $A3
C2B5   F0 14      BEQ $C2CB
C2B7   88         DEY
C2B8   F0 10      BEQ $C2CA
C2BA   B9 00 02   LDA $0200,Y
C2BD   C9 0D      CMP #$0D
C2BF   F0 0A      BEQ $C2CB
C2C1   88         DEY
C2C2   B9 00 02   LDA $0200,Y
C2C5   C9 0D      CMP #$0D
C2C7   F0 02      BEQ $C2CB
C2C9   C8         INY
C2CA   C8         INY
C2CB   8C 74 02   STY $0274
C2CE   C0 2A      CPY #$2A
C2D0   A0 FF      LDY #$FF
C2D2   90 08      BCC $C2DC
C2D4   8C 2A 02   STY $022A
C2D7   A9 32      LDA #$32
C2D9   4C C8 C1   JMP $C1C8


; clear flag for command input

C2DC   A0 00      LDY #$00
C2DE   98         TYA
C2DF   85 A3      STA $A3
C2E1   8D 58 02   STA $0258
C2E4   8D 4A 02   STA $024A
C2E7   8D 96 02   STA $0296
C2EA   85 D3      STA $D3
C2EC   8D 79 02   STA $0279
C2EF   8D 77 02   STA $0277
C2F2   8D 78 02   STA $0278
C2F5   8D 8A 02   STA $028A
C2F8   8D 6C 02   STA $026C
C2FB   A2 05      LDX #$05
C2FD   9D 79 02   STA $0279,X
C300   95 D7      STA $D7,X
C302   95 DC      STA $DC,X
C304   95 E1      STA $E1,X
C306   95 E6      STA $E6,X
C308   9D 7F 02   STA $027F,X
C30B   9D 84 02   STA $0284,X
C30E   CA         DEX
C30F   D0 EC      BNE $C2FD
C311   60         RTS


; preserve drive number

C312   AD 78 02   LDA $0278
C315   8D 77 02   STA $0277
C318   A9 01      LDA #$01
C31A   8D 78 02   STA $0278
C31D   8D 79 02   STA $0279

C320   AC 8E 02   LDY $028E

C323   A2 00      LDX #$00
C325   86 D3      STX $D3
C327   BD 7A 02   LDA $027A,X
C32A   20 3C C3   JSR $C33C
C32D   A6 D3      LDX $D3
C32F   9D 7A 02   STA $027A,X
C332   98         TYA
C333   95 E2      STA $E2,X
C335   E8         INX
C336   EC 78 02   CPX $0278
C339   90 EA      BCC $C325
C33B   60         RTS


; search for drive number

C33C   AA         TAX
C33D   A0 00      LDY #$00
C33F   A9 3A      LDA #$3A   ; colom
C341   DD 01 02   CMP $0201,X
C344   F0 0C      BEQ $C352
C346   DD 00 02   CMP $0200,X
C349   D0 16      BNE $C361
C34B   E8         INX
C34C   98         TYA
C34D   29 01      AND #$01
C34F   A8         TAY
C350   8A         TXA
C351   60         RTS
C352   BD 00 02   LDA $0200,X
C355   E8         INX
C356   E8         INX
C357   C9 30      CMP #$30   ; 0
C359   F0 F2      BEQ $C34D
C35B   C9 31      CMP #$31   ; 1
C35D   F0 EE      BEQ $C34D
C35F   D0 EB      BNE $C34C
C361   98         TYA
C362   09 80      ORA #$80
C364   29 81      AND #$81
C366   D0 E7      BNE $C34F


; get drive number

C368   A9 00      LDA #$00
C36A   8D 8B 02   STA $028B
C36D   AC 7A 02   LDY $027A
C370   B1 A3      LDA ($A3),Y
C372   20 BD C3   JSR $C3BD
C375   10 11      BPL $C388
C377   C8         INY
C378   CC 74 02   CPY $0274
C37B   B0 06      BCS $C383
C37D   AC 74 02   LDY $0274
C380   88         DEY
C381   D0 ED      BNE $C370
C383   CE 8B 02   DEC $028B
C386   A9 00      LDA #$00
C388   29 01      AND #$01
C38A   85 7F      STA $7F
C38C   4C 00 C1   JMP $C100


; reverse drive number

C38F   A5 7F      LDA $7F
C391   49 01      EOR #$01
C393   29 01      AND #$01
C395   85 7F      STA $7F
C397   60         RTS


;

C398   A0 00      LDY #$00
C39A   AD 77 02   LDA $0277
C39D   CD 78 02   CMP $0278
C3A0   F0 16      BEQ $C3B8
C3A2   CE 78 02   DEC $0278
C3A5   AC 78 02   LDY $0278
C3A8   B9 7A 02   LDA $027A,Y
C3AB   A8         TAY
C3AC   B1 A3      LDA ($A3),Y
C3AE   A0 04      LDY #$04
C3B0   D9 BB FE   CMP $FEBB,Y
C3B3   F0 03      BEQ $C3B8
C3B5   88         DEY
C3B6   D0 F8      BNE $C3B0
C3B8   98         TYA
C3B9   8D 96 02   STA $0296
C3BC   60         RTS


; check drive number

C3BD   C9 30      CMP #$30   ; 0
C3BF   F0 06      BEQ $C3C7
C3C1   C9 31      CMP #$31   ; 1
C3C3   F0 02      BEQ $C3C7
C3C5   09 80      ORA #$80
C3C7   29 81      AND #$81
C3C9   60         RTS


; verify drive number

C3CA   A9 00      LDA #$00
C3CC   85 6F      STA $6F
C3CE   8D 8D 02   STA $028D
C3D1   48         PHA
C3D2   AE 78 02   LDX $0278
C3D5   68         PLA
C3D6   05 6F      ORA $6F
C3D8   48         PHA
C3D9   A9 01      LDA #$01
C3DB   85 6F      STA $6F
C3DD   CA         DEX
C3DE   30 0F      BMI $C3EF
C3E0   B5 E2      LDA $E2,X
C3E2   10 04      BPL $C3E8
C3E4   06 6F      ASL $6F
C3E6   06 6F      ASL $6F
C3E8   4A         LSR
C3E9   90 EA      BCC $C3D5
C3EB   06 6F      ASL $6F
C3ED   D0 E6      BNE $C3D5
C3EF   68         PLA
C3F0   AA         TAX
C3F1   BD 3F C4   LDA $C43F,X
C3F4   48         PHA
C3F5   29 03      AND #$03
C3F7   8D 8C 02   STA $028C
C3FA   68         PLA
C3FB   0A         ASL
C3FC   10 3E      BPL $C43C
C3FE   A5 E2      LDA $E2

C400   29 01      AND #$01

C402   85 7F      STA $7F
C404   AD 8C 02   LDA $028C
C407   F0 2B      BEQ $C434
C409   20 3D C6   JSR $C63D
C40C   F0 12      BEQ $C420
C40E   20 8F C3   JSR $C38F
C411   A9 00      LDA #$00
C413   8D 8C 02   STA $028C
C416   20 3D C6   JSR $C63D
C419   F0 1E      BEQ $C439
C41B   A9 74      LDA #$74
C41D   20 C8 C1   JSR $C1C8
C420   20 8F C3   JSR $C38F
C423   20 3D C6   JSR $C63D
C426   08         PHP
C427   20 8F C3   JSR $C38F
C42A   28         PLP
C42B   F0 0C      BEQ $C439
C42D   A9 00      LDA #$00
C42F   8D 8C 02   STA $028C
C432   F0 05      BEQ $C439
C434   20 3D C6   JSR $C63D
C437   D0 E2      BNE $C41B
C439   4C 00 C1   JMP $C100
C43C   2A         ROL
C43D   4C 00 C4   JMP $C400


; flags for drive check

C440   .BY $00,$80,$41,$01
C444   .BY $01,$01,$01,$81
C448   .BY $81,$81,$81,$42
C44C   .BY $42,$42,$42


; search for file in directory

C44F   20 CA C3   JSR $C3CA

C452   A9 00      LDA #$00

C454   8D 92 02   STA $0292
C457   20 AC C5   JSR $C5AC
C45A   D0 19      BNE $C475
C45C   CE 8C 02   DEC $028C
C45F   10 01      BPL $C462
C461   60         RTS
C462   A9 01      LDA #$01
C464   8D 8D 02   STA $028D
C467   20 8F C3   JSR $C38F
C46A   20 00 C1   JSR $C100
C46D   4C 52 C4   JMP $C452
C470   20 17 C6   JSR $C617
C473   F0 10      BEQ $C485
C475   20 D8 C4   JSR $C4D8
C478   AD 8F 02   LDA $028F
C47B   F0 01      BEQ $C47E
C47D   60         RTS
C47E   AD 53 02   LDA $0253
C481   30 ED      BMI $C470
C483   10 F0      BPL $C475
C485   AD 8F 02   LDA $028F
C488   F0 D2      BEQ $C45C
C48A   60         RTS

C48B   20 04 C6   JSR $C604

C48E   F0 1A      BEQ $C4AA
C490   D0 28      BNE $C4BA
C492   A9 01      LDA #$01
C494   8D 8D 02   STA $028D
C497   20 8F C3   JSR $C38F
C49A   20 00 C1   JSR $C100

C49D   A9 00      LDA #$00

C49F   8D 92 02   STA $0292
C4A2   20 AC C5   JSR $C5AC
C4A5   D0 13      BNE $C4BA
C4A7   8D 8F 02   STA $028F
C4AA   AD 8F 02   LDA $028F
C4AD   D0 28      BNE $C4D7
C4AF   CE 8C 02   DEC $028C
C4B2   10 DE      BPL $C492
C4B4   60         RTS

C4B5   20 17 C6   JSR $C617

C4B8   F0 F0      BEQ $C4AA
C4BA   20 D8 C4   JSR $C4D8
C4BD   AE 53 02   LDX $0253
C4C0   10 07      BPL $C4C9
C4C2   AD 8F 02   LDA $028F
C4C5   F0 EE      BEQ $C4B5
C4C7   D0 0E      BNE $C4D7
C4C9   AD 96 02   LDA $0296
C4CC   F0 09      BEQ $C4D7
C4CE   B5 E7      LDA $E7,X
C4D0   29 07      AND #$07
C4D2   CD 96 02   CMP $0296
C4D5   D0 DE      BNE $C4B5
C4D7   60         RTS

C4D8   A2 FF      LDX #$FF

C4DA   8E 53 02   STX $0253
C4DD   E8         INX
C4DE   8E 8A 02   STX $028A
C4E1   20 89 C5   JSR $C589
C4E4   F0 06      BEQ $C4EC
C4E6   60         RTS
C4E7   20 94 C5   JSR $C594
C4EA   D0 FA      BNE $C4E6
C4EC   A5 7F      LDA $7F
C4EE   55 E2      EOR $E2,X
C4F0   4A         LSR
C4F1   90 0B      BCC $C4FE
C4F3   29 40      AND #$40
C4F5   F0 F0      BEQ $C4E7
C4F7   A9 02      LDA #$02
C4F9   CD 8C 02   CMP $028C
C4FC   F0 E9      BEQ $C4E7
C4FE   BD 7A 02   LDA $027A,X
C501   AA         TAX
C502   20 A6 C6   JSR $C6A6
C505   A0 03      LDY #$03
C507   4C 1D C5   JMP $C51D
C50A   BD 00 02   LDA $0200,X
C50D   D1 94      CMP ($94),Y
C50F   F0 0A      BEQ $C51B
C511   C9 3F      CMP #$3F   ; question mark
C513   D0 D2      BNE $C4E7
C515   B1 94      LDA ($94),Y
C517   C9 A0      CMP #$A0   ; shift space
C519   F0 CC      BEQ $C4E7
C51B   E8         INX
C51C   C8         INY

C51D   EC 76 02   CPX $0276

C520   B0 09      BCS $C52B
C522   BD 00 02   LDA $0200,X
C525   C9 2A      CMP #$2A   ; asterix
C527   F0 0C      BEQ $C535
C529   D0 DF      BNE $C50A
C52B   C0 13      CPY #$13
C52D   B0 06      BCS $C535
C52F   B1 94      LDA ($94),Y
C531   C9 A0      CMP #$A0
C533   D0 B2      BNE $C4E7
C535   AE 79 02   LDX $0279
C538   8E 53 02   STX $0253
C53B   B5 E7      LDA $E7,X
C53D   29 80      AND #$80
C53F   8D 8A 02   STA $028A
C542   AD 94 02   LDA $0294
C545   95 DD      STA $DD,X
C547   A5 81      LDA $81
C549   95 D8      STA $D8,X
C54B   A0 00      LDY #$00
C54D   B1 94      LDA ($94),Y
C54F   C8         INY
C550   48         PHA
C551   29 40      AND #$40
C553   85 6F      STA $6F
C555   68         PLA
C556   29 DF      AND #$DF
C558   30 02      BMI $C55C
C55A   09 20      ORA #$20
C55C   29 27      AND #$27
C55E   05 6F      ORA $6F
C560   85 6F      STA $6F
C562   A9 80      LDA #$80
C564   35 E7      AND $E7,X
C566   05 6F      ORA $6F
C568   95 E7      STA $E7,X
C56A   B5 E2      LDA $E2,X
C56C   29 80      AND #$80
C56E   05 7F      ORA $7F
C570   95 E2      STA $E2,X
C572   B1 94      LDA ($94),Y
C574   9D 80 02   STA $0280,X
C577   C8         INY
C578   B1 94      LDA ($94),Y
C57A   9D 85 02   STA $0285,X
C57D   AD 58 02   LDA $0258
C580   D0 07      BNE $C589
C582   A0 15      LDY #$15
C584   B1 94      LDA ($94),Y
C586   8D 58 02   STA $0258

C589   A9 FF      LDA #$FF

C58B   8D 8F 02   STA $028F
C58E   AD 78 02   LDA $0278
C591   8D 79 02   STA $0279

C594   CE 79 02   DEC $0279

C597   10 01      BPL $C59A
C599   60         RTS
C59A   AE 79 02   LDX $0279
C59D   B5 E7      LDA $E7,X
C59F   30 05      BMI $C5A6
C5A1   BD 80 02   LDA $0280,X
C5A4   D0 EE      BNE $C594
C5A6   A9 00      LDA #$00
C5A8   8D 8F 02   STA $028F
C5AB   60         RTS

C5AC   A0 00      LDY #$00

C5AE   8C 91 02   STY $0291
C5B1   88         DEY
C5B2   8C 53 02   STY $0253
C5B5   AD 85 FE   LDA $FE85
C5B8   85 80      STA $80
C5BA   A9 01      LDA #$01
C5BC   85 81      STA $81
C5BE   8D 93 02   STA $0293
C5C1   20 75 D4   JSR $D475

C5C4   AD 93 02   LDA $0293

C5C7   D0 01      BNE $C5CA
C5C9   60         RTS
C5CA   A9 07      LDA #$07
C5CC   8D 95 02   STA $0295
C5CF   A9 00      LDA #$00
C5D1   20 F6 D4   JSR $D4F6
C5D4   8D 93 02   STA $0293

C5D7   20 E8 D4   JSR $D4E8

C5DA   CE 95 02   DEC $0295
C5DD   A0 00      LDY #$00
C5DF   B1 94      LDA ($94),Y
C5E1   D0 18      BNE $C5FB
C5E3   AD 91 02   LDA $0291
C5E6   D0 2F      BNE $C617
C5E8   20 3B DE   JSR $DE3B
C5EB   A5 81      LDA $81
C5ED   8D 91 02   STA $0291
C5F0   A5 94      LDA $94
C5F2   AE 92 02   LDX $0292
C5F5   8D 92 02   STA $0292
C5F8   F0 1D      BEQ $C617
C5FA   60         RTS
C5FB   A2 01      LDX #$01
C5FD   EC 92 02   CPX $0292
C600   D0 2D      BNE $C62F
C602   F0 13      BEQ $C617

C604   AD 85 FE   LDA $FE85

C607   85 80      STA $80
C609   AD 90 02   LDA $0290
C60C   85 81      STA $81
C60E   20 75 D4   JSR $D475
C611   AD 94 02   LDA $0294
C614   20 C8 D4   JSR $D4C8

C617   A9 FF      LDA #$FF

C619   8D 53 02   STA $0253
C61C   AD 95 02   LDA $0295
C61F   30 08      BMI $C629
C621   A9 20      LDA #$20
C623   20 C6 D1   JSR $D1C6
C626   4C D7 C5   JMP $C5D7
C629   20 4D D4   JSR $D44D
C62C   4C C4 C5   JMP $C5C4
C62F   A5 94      LDA $94
C631   8D 94 02   STA $0294
C634   20 3B DE   JSR $DE3B
C637   A5 81      LDA $81
C639   8D 90 02   STA $0290
C63C   60         RTS


; test and initalise drive

C63D   A5 68      LDA $68
C63F   D0 28      BNE $C669
C641   A6 7F      LDX $7F
C643   56 1C      LSR $1C,X
C645   90 22      BCC $C669
C647   A9 FF      LDA #$FF
C649   8D 98 02   STA $0298
C64C   20 0E D0   JSR $D00E
C64F   A0 FF      LDY #$FF
C651   C9 02      CMP #$02
C653   F0 0A      BEQ $C65F
C655   C9 03      CMP #$03
C657   F0 06      BEQ $C65F
C659   C9 0F      CMP #$0F
C65B   F0 02      BEQ $C65F
C65D   A0 00      LDY #$00
C65F   A6 7F      LDX $7F
C661   98         TYA
C662   95 FF      STA $FF,X
C664   D0 03      BNE $C669
C666   20 42 D0   JSR $D042
C669   A6 7F      LDX $7F
C66B   B5 FF      LDA $FF,X
C66D   60         RTS


; name of file in directory buffer

C66E   48         PHA
C66F   20 A6 C6   JSR $C6A6
C672   20 88 C6   JSR $C688
C675   68         PLA
C676   38         SEC
C677   ED 4B 02   SBC $024B
C67A   AA         TAX
C67B   F0 0A      BEQ $C687
C67D   90 08      BCC $C687
C67F   A9 A0      LDA #$A0
C681   91 94      STA ($94),Y
C683   C8         INY
C684   CA         DEX
C685   D0 FA      BNE $C681
C687   60         RTS


;

C688   98         TYA
C689   0A         ASL
C68A   A8         TAY
C68B   B9 99 00   LDA $0099,Y
C68E   85 94      STA $94
C690   B9 9A 00   LDA $009A,Y
C693   85 95      STA $95
C695   A0 00      LDY #$00
C697   BD 00 02   LDA $0200,X
C69A   91 94      STA ($94),Y
C69C   C8         INY
C69D   F0 06      BEQ $C6A5
C69F   E8         INX
C6A0   EC 76 02   CPX $0276
C6A3   90 F2      BCC $C697
C6A5   60         RTS


; search for end of name in command

C6A6   A9 00      LDA #$00
C6A8   8D 4B 02   STA $024B
C6AB   8A         TXA
C6AC   48         PHA
C6AD   BD 00 02   LDA $0200,X
C6B0   C9 2C      CMP #$2C   ; comma
C6B2   F0 14      BEQ $C6C8
C6B4   C9 3D      CMP #$3D   ; equals
C6B6   F0 10      BEQ $C6C8
C6B8   EE 4B 02   INC $024B
C6BB   E8         INX
C6BC   A9 0F      LDA #$0F
C6BE   CD 4B 02   CMP $024B
C6C1   90 05      BCC $C6C8
C6C3   EC 74 02   CPX $0274
C6C6   90 E5      BCC $C6AD
C6C8   8E 76 02   STX $0276
C6CB   68         PLA
C6CC   AA         TAX
C6CD   60         RTS


;

C6CE   A5 83      LDA $83
C6D0   48         PHA
C6D1   A5 82      LDA $82
C6D3   48         PHA
C6D4   20 DE C6   JSR $C6DE
C6D7   68         PLA
C6D8   85 82      STA $82
C6DA   68         PLA
C6DB   85 83      STA $83
C6DD   60         RTS


;

C6DE   A9 11      LDA #$11
C6E0   85 83      STA $83
C6E2   20 EB D0   JSR $D0EB
C6E5   20 E8 D4   JSR $D4E8
C6E8   AD 53 02   LDA $0253
C6EB   10 0A      BPL $C6F7
C6ED   AD 8D 02   LDA $028D
C6F0   D0 0A      BNE $C6FC
C6F2   20 06 C8   JSR $C806
C6F5   18         CLC
C6F6   60         RTS
C6F7   AD 8D 02   LDA $028D
C6FA   F0 1F      BEQ $C71B
C6FC   CE 8D 02   DEC $028D
C6FF   D0 0D      BNE $C70E
C701   CE 8D 02   DEC $028D
C704   20 8F C3   JSR $C38F
C707   20 06 C8   JSR $C806
C70A   38         SEC
C70B   4C 8F C3   JMP $C38F
C70E   A9 00      LDA #$00
C710   8D 73 02   STA $0273
C713   8D 8D 02   STA $028D
C716   20 B7 C7   JSR $C7B7
C719   38         SEC
C71A   60         RTS
C71B   A2 18      LDX #$18
C71D   A0 1D      LDY #$1D
C71F   B1 94      LDA ($94),Y
C721   8D 73 02   STA $0273
C724   F0 02      BEQ $C728
C726   A2 16      LDX #$16
C728   88         DEY
C729   B1 94      LDA ($94),Y
C72B   8D 72 02   STA $0272
C72E   E0 16      CPX #$16
C730   F0 0A      BEQ $C73C
C732   C9 0A      CMP #$0A   ; 10
C734   90 06      BCC $C73C
C736   CA         DEX
C737   C9 64      CMP #$64   ; 100
C739   90 01      BCC $C73C
C73B   CA         DEX
C73C   20 AC C7   JSR $C7AC
C73F   B1 94      LDA ($94),Y
C741   48         PHA
C742   0A         ASL
C743   10 05      BPL $C74A
C745   A9 3C      LDA #$3C
C747   9D B2 02   STA $02B2,X
C74A   68         PLA
C74B   29 0F      AND #$0F
C74D   A8         TAY
C74E   B9 C5 FE   LDA $FEC5,Y
C751   9D B1 02   STA $02B1,X
C754   CA         DEX
C755   B9 C0 FE   LDA $FEC0,Y
C758   9D B1 02   STA $02B1,X
C75B   CA         DEX
C75C   B9 BB FE   LDA $FEBB,Y
C75F   9D B1 02   STA $02B1,X
C762   CA         DEX
C763   CA         DEX
C764   B0 05      BCS $C76B
C766   A9 2A      LDA #$2A   ; asterix
C768   9D B2 02   STA $02B2,X
C76B   A9 A0      LDA #$A0
C76D   9D B1 02   STA $02B1,X
C770   CA         DEX
C771   A0 12      LDY #$12
C773   B1 94      LDA ($94),Y
C775   9D B1 02   STA $02B1,X
C778   CA         DEX
C779   88         DEY
C77A   C0 03      CPY #$03
C77C   B0 F5      BCS $C773
C77E   A9 22      LDA #$22   ; quote
C780   9D B1 02   STA $02B1,X
C783   E8         INX
C784   E0 20      CPX #$20
C786   B0 0B      BCS $C793
C788   BD B1 02   LDA $02B1,X
C78B   C9 22      CMP #$22   ; quote
C78D   F0 04      BEQ $C793
C78F   C9 A0      CMP #$A0
C791   D0 F0      BNE $C783
C793   A9 22      LDA #$22    ; quote
C795   9D B1 02   STA $02B1,X
C798   E8         INX
C799   E0 20      CPX #$20
C79B   B0 0A      BCS $C7A7
C79D   A9 7F      LDA #$7F
C79F   3D B1 02   AND $02B1,X
C7A2   9D B1 02   STA $02B1,X
C7A5   10 F1      BPL $C798
C7A7   20 B5 C4   JSR $C4B5
C7AA   38         SEC
C7AB   60         RTS


;

C7AC   A0 1B      LDY #$1B
C7AE   A9 20      LDA #$20   ; space
C7B0   99 B0 02   STA $02B0,Y
C7B3   88         DEY
C7B4   D0 FA      BNE $C7B0
C7B6   60         RTS


; create header with disk nmae

C7B7   20 19 F1   JSR $F119
C7BA   20 DF F0   JSR $F0DF
C7BD   20 AC C7   JSR $C7AC
C7C0   A9 FF      LDA #$FF
C7C2   85 6F      STA $6F
C7C4   A6 7F      LDX $7F
C7C6   8E 72 02   STX $0272
C7C9   A9 00      LDA #$00
C7CB   8D 73 02   STA $0273
C7CE   A6 F9      LDX $F9
C7D0   BD E0 FE   LDA $FEE0,X
C7D3   85 95      STA $95
C7D5   AD 88 FE   LDA $FE88
C7D8   85 94      STA $94
C7DA   A0 16      LDY #$16
C7DC   B1 94      LDA ($94),Y
C7DE   C9 A0      CMP #$A0
C7E0   D0 0B      BNE $C7ED
C7E2   A9 31      LDA #$31   ; 1
C7E4   .BY $2C
C7E5   B1 94      LDA ($94),Y
C7E7   C9 A0      CMP #$A0   ; shift space
C7E9   D0 02      BNE $C7ED
C7EB   A9 20      LDA #$20   ; space
C7ED   99 B3 02   STA $02B3,Y
C7F0   88         DEY
C7F1   10 F2      BPL $C7E5
C7F3   A9 12      LDA #$12   ; RVS ON
C7F5   8D B1 02   STA $02B1
C7F8   A9 22      LDA #$22   ; quote
C7FA   8D B2 02   STA $02B2
C7FD   8D C3 02   STA $02C3
C800   A9 20      LDA #$20   ; space
C802   8D C4 02   STA $02C4
C805   60         RTS


; create last line

C806   20 AC C7   JSR $C7AC
C809   A0 0B      LDY #$0B
C80B   B9 17 C8   LDA $C817,Y
C80E   99 B1 02   STA $02B1,Y
C811   88         DEY
C812   10 F7      BPL $C80B
C814   4C 4D EF   JMP $EF4D


; blocks free.

C817   .BY $42,$4C,$4F,$43,$4B,$53
C81D   .BY $20,$46,$52,$45,$45,$2E


; S - Scratch command

C823   20 98 C3   JSR $C398
C826   20 20 C3   JSR $C320
C829   20 CA C3   JSR $C3CA
C82C   A9 00      LDA #$00
C82E   85 86      STA $86
C830   20 9D C4   JSR $C49D
C833   30 3D      BMI $C872
C835   20 B7 DD   JSR $DDB7
C838   90 33      BCC $C86D
C83A   A0 00      LDY #$00
C83C   B1 94      LDA ($94),Y
C83E   29 40      AND #$40
C840   D0 2B      BNE $C86D
C842   20 B6 C8   JSR $C8B6
C845   A0 13      LDY #$13
C847   B1 94      LDA ($94),Y
C849   F0 0A      BEQ $C855
C84B   85 80      STA $80
C84D   C8         INY
C84E   B1 94      LDA ($94),Y
C850   85 81      STA $81
C852   20 7D C8   JSR $C87D
C855   AE 53 02   LDX $0253
C858   A9 20      LDA #$20
C85A   35 E7      AND $E7,X
C85C   D0 0D      BNE $C86B
C85E   BD 80 02   LDA $0280,X
C861   85 80      STA $80
C863   BD 85 02   LDA $0285,X
C866   85 81      STA $81
C868   20 7D C8   JSR $C87D
C86B   E6 86      INC $86
C86D   20 8B C4   JSR $C48B
C870   10 C3      BPL $C835
C872   A5 86      LDA $86
C874   85 80      STA $80
C876   A9 01      LDA #$01
C878   A0 00      LDY #$00
C87A   4C A3 C1   JMP $C1A3


; erase file

C87D   20 5F EF   JSR $EF5F
C880   20 75 D4   JSR $D475
C883   20 19 F1   JSR $F119
C886   B5 A7      LDA $A7,X
C888   C9 FF      CMP #$FF
C88A   F0 08      BEQ $C894
C88C   AD F9 02   LDA $02F9
C88F   09 40      ORA #$40
C891   8D F9 02   STA $02F9

C894   A9 00      LDA #$00

C896   20 C8 D4   JSR $D4C8
C899   20 56 D1   JSR $D156
C89C   85 80      STA $80
C89E   20 56 D1   JSR $D156
C8A1   85 81      STA $81
C8A3   A5 80      LDA $80
C8A5   D0 06      BNE $C8AD
C8A7   20 F4 EE   JSR $EEF4
C8AA   4C 27 D2   JMP $D227
C8AD   20 5F EF   JSR $EF5F
C8B0   20 4D D4   JSR $D44D
C8B3   4C 94 C8   JMP $C894


; erase dir entry

C8B6   A0 00      LDY #$00
C8B8   98         TYA
C8B9   91 94      STA ($94),Y
C8BB   20 5E DE   JSR $DE5E
C8BE   4C 99 D5   JMP $D599


; D - Backup command (UNUSED)

C8C1   A9 31      LDA #$31
C8C3   4C C8 C1   JMP $C1C8


; format disk

C8C6   A9 4C      LDA #$4C
C8C8   8D 00 06   STA $0600
C8CB   A9 C7      LDA #$C7
C8CD   8D 01 06   STA $0601
C8D0   A9 FA      LDA #$FA
C8D2   8D 02 06   STA $0602
C8D5   A9 03      LDA #$03
C8D7   20 D3 D6   JSR $D6D3
C8DA   A5 7F      LDA $7F
C8DC   09 E0      ORA #$E0
C8DE   85 03      STA $03
C8E0   A5 03      LDA $03
C8E2   30 FC      BMI $C8E0
C8E4   C9 02      CMP #$02
C8E6   90 07      BCC $C8EF
C8E8   A9 03      LDA #$03
C8EA   A2 00      LDX #$00
C8EC   4C 0A E6   JMP $E60A
C8EF   60         RTS


; C - Copy command

C8F0   A9 E0      LDA #$E0
C8F2   8D 4F 02   STA $024F
C8F5   20 D1 F0   JSR $F0D1
C8F8   20 19 F1   JSR $F119
C8FB   A9 FF      LDA #$FF
C8FD   95 A7      STA $A7,X
C8FF   A9 0F      LDA #$0F
C901   8D 56 02   STA $0256
C904   20 E5 C1   JSR $C1E5
C907   D0 03      BNE $C90C
C909   4C C1 C8   JMP $C8C1
C90C   20 F8 C1   JSR $C1F8
C90F   20 20 C3   JSR $C320
C912   AD 8B 02   LDA $028B
C915   29 55      AND #$55
C917   D0 0F      BNE $C928
C919   AE 7A 02   LDX $027A
C91C   BD 00 02   LDA $0200,X
C91F   C9 2A      CMP #$2A   ; asterix
C921   D0 05      BNE $C928
C923   A9 30      LDA #$30
C925   4C C8 C1   JMP $C1C8
C928   AD 8B 02   LDA $028B
C92B   29 D9      AND #$D9
C92D   D0 F4      BNE $C923
C92F   4C 52 C9   JMP $C952
C932   A9 00      LDA #$00
C934   8D 58 02   STA $0258
C937   8D 8C 02   STA $028C
C93A   8D 80 02   STA $0280
C93D   8D 81 02   STA $0281
C940   A5 E3      LDA $E3
C942   29 01      AND #$01
C944   85 7F      STA $7F
C946   09 01      ORA #$01
C948   8D 91 02   STA $0291
C94B   AD 7B 02   LDA $027B
C94E   8D 7A 02   STA $027A
C951   60         RTS

C952   20 4F C4   JSR $C44F

C955   AD 78 02   LDA $0278
C958   C9 03      CMP #$03
C95A   90 45      BCC $C9A1
C95C   A5 E2      LDA $E2
C95E   C5 E3      CMP $E3
C960   D0 3F      BNE $C9A1
C962   A5 DD      LDA $DD
C964   C5 DE      CMP $DE
C966   D0 39      BNE $C9A1
C968   A5 D8      LDA $D8
C96A   C5 D9      CMP $D9
C96C   D0 33      BNE $C9A1
C96E   20 CC CA   JSR $CACC
C971   A9 01      LDA #$01
C973   8D 79 02   STA $0279
C976   20 FA C9   JSR $C9FA
C979   20 25 D1   JSR $D125
C97C   F0 04      BEQ $C982
C97E   C9 02      CMP #$02
C980   D0 05      BNE $C987
C982   A9 64      LDA #$64
C984   20 C8 C1   JSR $C1C8
C987   A9 12      LDA #$12
C989   85 83      STA $83
C98B   AD 3C 02   LDA $023C
C98E   8D 3D 02   STA $023D
C991   A9 FF      LDA #$FF
C993   8D 3C 02   STA $023C
C996   20 2A DA   JSR $DA2A
C999   A2 02      LDX #$02
C99B   20 B9 C9   JSR $C9B9
C99E   4C 94 C1   JMP $C194
C9A1   20 A7 C9   JSR $C9A7
C9A4   4C 94 C1   JMP $C194

C9A7   20 E7 CA   JSR $CAE7

C9AA   A5 E2      LDA $E2
C9AC   29 01      AND #$01
C9AE   85 7F      STA $7F
C9B0   20 86 D4   JSR $D486
C9B3   20 E4 D6   JSR $D6E4
C9B6   AE 77 02   LDX $0277

C9B9   8E 79 02   STX $0279

C9BC   20 FA C9   JSR $C9FA
C9BF   A9 11      LDA #$11
C9C1   85 83      STA $83
C9C3   20 EB D0   JSR $D0EB
C9C6   20 25 D1   JSR $D125
C9C9   D0 03      BNE $C9CE
C9CB   20 53 CA   JSR $CA53
C9CE   A9 08      LDA #$08
C9D0   85 F8      STA $F8
C9D2   4C D8 C9   JMP $C9D8
C9D5   20 9B CF   JSR $CF9B

C9D8   20 35 CA   JSR $CA35

C9DB   A9 80      LDA #$80
C9DD   20 A6 DD   JSR $DDA6
C9E0   F0 F3      BEQ $C9D5
C9E2   20 25 D1   JSR $D125
C9E5   F0 03      BEQ $C9EA
C9E7   20 9B CF   JSR $CF9B
C9EA   AE 79 02   LDX $0279
C9ED   E8         INX
C9EE   EC 78 02   CPX $0278
C9F1   90 C6      BCC $C9B9
C9F3   A9 12      LDA #$12
C9F5   85 83      STA $83
C9F7   4C 02 DB   JMP $DB02

C9FA   AE 79 02   LDX $0279

C9FD   B5 E2      LDA $E2,X
C9FF   29 01      AND #$01
CA01   85 7F      STA $7F
CA03   AD 85 FE   LDA $FE85
CA06   85 80      STA $80
CA08   B5 D8      LDA $D8,X
CA0A   85 81      STA $81
CA0C   20 75 D4   JSR $D475
CA0F   AE 79 02   LDX $0279
CA12   B5 DD      LDA $DD,X
CA14   20 C8 D4   JSR $D4C8
CA17   AE 79 02   LDX $0279
CA1A   B5 E7      LDA $E7,X
CA1C   29 07      AND #$07
CA1E   8D 4A 02   STA $024A
CA21   A9 00      LDA #$00
CA23   8D 58 02   STA $0258
CA26   20 A0 D9   JSR $D9A0
CA29   A0 01      LDY #$01
CA2B   20 25 D1   JSR $D125
CA2E   F0 01      BEQ $CA31
CA30   C8         INY
CA31   98         TYA
CA32   4C C8 D4   JMP $D4C8

CA35   A9 11      LDA #$11

CA37   85 83      STA $83

CA39   20 9B D3   JSR $D39B

CA3C   85 85      STA $85
CA3E   A6 82      LDX $82
CA40   B5 F2      LDA $F2,X
CA42   29 08      AND #$08
CA44   85 F8      STA $F8
CA46   D0 0A      BNE $CA52
CA48   20 25 D1   JSR $D125
CA4B   F0 05      BEQ $CA52
CA4D   A9 80      LDA #$80
CA4F   20 97 DD   JSR $DD97
CA52   60         RTS

CA53   20 D3 D1   JSR $D1D3

CA56   20 CB E1   JSR $E1CB
CA59   A5 D6      LDA $D6
CA5B   48         PHA
CA5C   A5 D5      LDA $D5
CA5E   48         PHA
CA5F   A9 12      LDA #$12
CA61   85 83      STA $83
CA63   20 07 D1   JSR $D107
CA66   20 D3 D1   JSR $D1D3
CA69   20 CB E1   JSR $E1CB
CA6C   20 9C E2   JSR $E29C
CA6F   A5 D6      LDA $D6
CA71   85 87      STA $87
CA73   A5 D5      LDA $D5
CA75   85 86      STA $86
CA77   A9 00      LDA #$00
CA79   85 88      STA $88
CA7B   85 D4      STA $D4
CA7D   85 D7      STA $D7
CA7F   68         PLA
CA80   85 D5      STA $D5
CA82   68         PLA
CA83   85 D6      STA $D6
CA85   4C 3B E3   JMP $E33B


; R - Rename command

CA88   20 20 C3   JSR $C320
CA8B   A5 E3      LDA $E3
CA8D   29 01      AND #$01
CA8F   85 E3      STA $E3
CA91   C5 E2      CMP $E2
CA93   F0 02      BEQ $CA97
CA95   09 80      ORA #$80
CA97   85 E2      STA $E2
CA99   20 4F C4   JSR $C44F
CA9C   20 E7 CA   JSR $CAE7
CA9F   A5 E3      LDA $E3
CAA1   29 01      AND #$01
CAA3   85 7F      STA $7F
CAA5   A5 D9      LDA $D9
CAA7   85 81      STA $81
CAA9   20 57 DE   JSR $DE57
CAAC   20 99 D5   JSR $D599
CAAF   A5 DE      LDA $DE
CAB1   18         CLC
CAB2   69 03      ADC #$03
CAB4   20 C8 D4   JSR $D4C8
CAB7   20 93 DF   JSR $DF93
CABA   A8         TAY
CABB   AE 7A 02   LDX $027A
CABE   A9 10      LDA #$10
CAC0   20 6E C6   JSR $C66E
CAC3   20 5E DE   JSR $DE5E
CAC6   20 99 D5   JSR $D599
CAC9   4C 94 C1   JMP $C194


; check if file present

CACC   A5 E8      LDA $E8
CACE   29 07      AND #$07
CAD0   8D 4A 02   STA $024A
CAD3   AE 78 02   LDX $0278
CAD6   CA         DEX
CAD7   EC 77 02   CPX $0277
CADA   90 0A      BCC $CAE6
CADC   BD 80 02   LDA $0280,X
CADF   D0 F5      BNE $CAD6
CAE1   A9 62      LDA #$62
CAE3   4C C8 C1   JMP $C1C8
CAE6   60         RTS

CAE7   20 CC CA   JSR $CACC

CAEA   BD 80 02   LDA $0280,X
CAED   F0 05      BEQ $CAF4
CAEF   A9 63      LDA #$63
CAF1   4C C8 C1   JMP $C1C8
CAF4   CA         DEX
CAF5   10 F3      BPL $CAEA
CAF7   60         RTS


; M - Memory command

CAF8   AD 01 02   LDA $0201
CAFB   C9 2D      CMP #$2D   ; minus
CAFD   D0 4C      BNE $CB4B
CAFF   AD 03 02   LDA $0203
CB02   85 6F      STA $6F
CB04   AD 04 02   LDA $0204
CB07   85 70      STA $70
CB09   A0 00      LDY #$00
CB0B   AD 02 02   LDA $0202
CB0E   C9 52      CMP #$52   ; R
CB10   F0 0E      BEQ $CB20
CB12   20 58 F2   JSR $F258   ; RTS
CB15   C9 57      CMP #$57   ; W
CB17   F0 37      BEQ $CB50
CB19   C9 45      CMP #$45   ; E
CB1B   D0 2E      BNE $CB4B
CB1D   6C 6F 00   JMP ($006F)


; M-R memory read

CB20   B1 6F      LDA ($6F),Y
CB22   85 85      STA $85
CB24   AD 74 02   LDA $0274
CB27   C9 06      CMP #$06
CB29   90 1A      BCC $CB45
CB2B   AE 05 02   LDX $0205
CB2E   CA         DEX
CB2F   F0 14      BEQ $CB45
CB31   8A         TXA
CB32   18         CLC
CB33   65 6F      ADC $6F
CB35   E6 6F      INC $6F
CB37   8D 49 02   STA $0249
CB3A   A5 6F      LDA $6F
CB3C   85 A5      STA $A5
CB3E   A5 70      LDA $70
CB40   85 A6      STA $A6
CB42   4C 43 D4   JMP $D443
CB45   20 EB D0   JSR $D0EB
CB48   4C 3A D4   JMP $D43A
CB4B   A9 31      LDA #$31
CB4D   4C C8 C1   JMP $C1C8


; M-W momory write

CB50   B9 06 02   LDA $0206,Y
CB53   91 6F      STA ($6F),Y
CB55   C8         INY
CB56   CC 05 02   CPY $0205
CB59   90 F5      BCC $CB50
CB5B   60         RTS


; U - User command

CB5C   AC 01 02   LDY $0201
CB5F   C0 30      CPY #$30   ; 0
CB61   D0 09      BNE $CB6C

CB63   A9 EA      LDA #$EA

CB65   85 6B      STA $6B
CB67   A9 FF      LDA #$FF
CB69   85 6C      STA $6C
CB6B   60         RTS
CB6C   20 72 CB   JSR $CB72
CB6F   4C 94 C1   JMP $C194

CB72   88         DEY

CB73   98         TYA
CB74   29 0F      AND #$0F
CB76   0A         ASL
CB77   A8         TAY
CB78   B1 6B      LDA ($6B),Y
CB7A   85 75      STA $75
CB7C   C8         INY
CB7D   B1 6B      LDA ($6B),Y
CB7F   85 76      STA $76
CB81   6C 75 00   JMP ($0075)


; open direct access channel, number

CB84   AD 8E 02   LDA $028E
CB87   85 7F      STA $7F
CB89   A5 83      LDA $83
CB8B   48         PHA
CB8C   20 3D C6   JSR $C63D
CB8F   68         PLA
CB90   85 83      STA $83
CB92   AE 74 02   LDX $0274
CB95   CA         DEX
CB96   D0 0D      BNE $CBA5
CB98   A9 01      LDA #$01
CB9A   20 E2 D1   JSR $D1E2
CB9D   4C F1 CB   JMP $CBF1
CBA0   A9 70      LDA #$70
CBA2   4C C8 C1   JMP $C1C8
CBA5   A0 01      LDY #$01
CBA7   20 7C CC   JSR $CC7C
CBAA   AE 85 02   LDX $0285
CBAD   E0 05      CPX #$05
CBAF   B0 EF      BCS $CBA0
CBB1   A9 00      LDA #$00
CBB3   85 6F      STA $6F
CBB5   85 70      STA $70
CBB7   38         SEC
CBB8   26 6F      ROL $6F
CBBA   26 70      ROL $70
CBBC   CA         DEX
CBBD   10 F9      BPL $CBB8
CBBF   A5 6F      LDA $6F
CBC1   2D 4F 02   AND $024F
CBC4   D0 DA      BNE $CBA0
CBC6   A5 70      LDA $70
CBC8   2D 50 02   AND $0250
CBCB   D0 D3      BNE $CBA0
CBCD   A5 6F      LDA $6F
CBCF   0D 4F 02   ORA $024F
CBD2   8D 4F 02   STA $024F
CBD5   A5 70      LDA $70
CBD7   0D 50 02   ORA $0250
CBDA   8D 50 02   STA $0250
CBDD   A9 00      LDA #$00
CBDF   20 E2 D1   JSR $D1E2
CBE2   A6 82      LDX $82
CBE4   AD 85 02   LDA $0285
CBE7   95 A7      STA $A7,X
CBE9   AA         TAX
CBEA   A5 7F      LDA $7F
CBEC   95 00      STA $00,X
CBEE   9D 5B 02   STA $025B,X

CBF1   A6 83      LDX $83

CBF3   BD 2B 02   LDA $022B,X
CBF6   09 40      ORA #$40
CBF8   9D 2B 02   STA $022B,X
CBFB   A4 82      LDY $82
CBFD   A9 FF      LDA #$FF
CBFF   99 44 02   STA $0244,Y
CC02   A9 89      LDA #$89
CC04   99 F2 00   STA $00F2,Y
CC07   B9 A7 00   LDA $00A7,Y
CC0A   99 3E 02   STA $023E,Y
CC0D   0A         ASL
CC0E   AA         TAX
CC0F   A9 01      LDA #$01
CC11   95 99      STA $99,X
CC13   A9 0E      LDA #$0E
CC15   99 EC 00   STA $00EC,Y
CC18   4C 94 C1   JMP $C194


; B - Block command

CC1B   A0 00      LDY #$00
CC1D   A2 00      LDX #$00
CC1F   A9 2D      LDA #$2D   ; minus
CC21   20 68 C2   JSR $C268
CC24   D0 0A      BNE $CC30
CC26   A9 31      LDA #$31
CC28   4C C8 C1   JMP $C1C8
CC2B   A9 30      LDA #$30
CC2D   4C C8 C1   JMP $C1C8
CC30   8A         TXA
CC31   D0 F8      BNE $CC2B
CC33   A2 05      LDX #$05
CC35   B9 00 02   LDA $0200,Y
CC38   DD 5D CC   CMP $CC5D,X
CC3B   F0 05      BEQ $CC42
CC3D   CA         DEX
CC3E   10 F8      BPL $CC38
CC40   30 E4      BMI $CC26
CC42   8A         TXA
CC43   09 80      ORA #$80
CC45   8D 2A 02   STA $022A
CC48   20 6F CC   JSR $CC6F
CC4B   AD 2A 02   LDA $022A
CC4E   0A         ASL
CC4F   AA         TAX
CC50   BD 64 CC   LDA $CC63,X
CC53   85 70      STA $70
CC55   BD 63 CC   LDA $CC63,X
CC58   85 6F      STA $6F
CC5A   6C 6F 00   JMP ($006F)


; block commands "AFRWEP"

CC5D   .BY $41,$46,$52,$57,$45,$50


; addresses of block commands

CC63   .WD $CD03   ; B-A
CC65   .WD $CCF5   ; B-F
CC67   .WD $CD56   ; B-R
CC69   .WD $CD73   ; B-W
CC6B   .WD $CDA3   ; B-E
CC6D   .WD $CDBD   ; B-P


; get parameters form block commands

CC6F   A0 00      LDY #$00
CC71   A2 00      LDX #$00
CC73   A9 3A      LDA #$3A   ; colon
CC75   20 68 C2   JSR $C268
CC78   D0 02      BNE $CC7C
CC7A   A0 03      LDY #$03

CC7C   B9 00 02   LDA $0200,Y

CC7F   C9 20      CMP #$20   ; space
CC81   F0 08      BEQ $CC8B
CC83   C9 1D      CMP #$1D   ; CSR RIGHT
CC85   F0 04      BEQ $CC8B
CC87   C9 2C      CMP #$2C   ; comma
CC89   D0 07      BNE $CC92
CC8B   C8         INY
CC8C   CC 74 02   CPY $0274
CC8F   90 EB      BCC $CC7C
CC91   60         RTS
CC92   20 A1 CC   JSR $CCA1
CC95   EE 77 02   INC $0277
CC98   AC 79 02   LDY $0279
CC9B   E0 04      CPX #$04
CC9D   90 EC      BCC $CC8B
CC9F   B0 8A      BCS $CC2B

CCA1   A9 00      LDA #$00

CCA3   85 6F      STA $6F
CCA5   85 70      STA $70
CCA7   85 72      STA $72
CCA9   A2 FF      LDX #$FF
CCAB   B9 00 02   LDA $0200,Y
CCAE   C9 40      CMP #$40
CCB0   B0 18      BCS $CCCA
CCB2   C9 30      CMP #$30   ; 0
CCB4   90 14      BCC $CCCA
CCB6   29 0F      AND #$0F
CCB8   48         PHA
CCB9   A5 70      LDA $70
CCBB   85 71      STA $71
CCBD   A5 6F      LDA $6F
CCBF   85 70      STA $70
CCC1   68         PLA
CCC2   85 6F      STA $6F
CCC4   C8         INY
CCC5   CC 74 02   CPY $0274
CCC8   90 E1      BCC $CCAB
CCCA   8C 79 02   STY $0279
CCCD   18         CLC
CCCE   A9 00      LDA #$00
CCD0   E8         INX
CCD1   E0 03      CPX #$03
CCD3   B0 0F      BCS $CCE4
CCD5   B4 6F      LDY $6F,X
CCD7   88         DEY
CCD8   30 F6      BMI $CCD0
CCDA   7D F2 CC   ADC $CCF2,X
CCDD   90 F8      BCC $CCD7
CCDF   18         CLC
CCE0   E6 72      INC $72
CCE2   D0 F3      BNE $CCD7
CCE4   48         PHA
CCE5   AE 77 02   LDX $0277
CCE8   A5 72      LDA $72
CCEA   9D 80 02   STA $0280,X
CCED   68         PLA
CCEE   9D 85 02   STA $0285,X
CCF1   60         RTS


; decimal values  1, 10, 100

CCF2   .BY $01,$0A,$64


; B-F block free

CCF5   20 F5 CD   JSR $CDF5
CCF8   20 5F EF   JSR $EF5F
CCFB   4C 94 C1   JMP $C194


;

CCFE   A9 01      LDA #$01
CD00   8D F9 02   STA $02F9


; B-A block allocate

CD03   20 F5 CD   JSR $CDF5
CD06   A5 81      LDA $81
CD08   48         PHA
CD09   20 FA F1   JSR $F1FA
CD0C   F0 0B      BEQ $CD19
CD0E   68         PLA
CD0F   C5 81      CMP $81
CD11   D0 19      BNE $CD2C
CD13   20 90 EF   JSR $EF90
CD16   4C 94 C1   JMP $C194
CD19   68         PLA
CD1A   A9 00      LDA #$00
CD1C   85 81      STA $81
CD1E   E6 80      INC $80
CD20   A5 80      LDA $80
CD22   CD D7 FE   CMP $FED7
CD25   B0 0A      BCS $CD31
CD27   20 FA F1   JSR $F1FA
CD2A   F0 EE      BEQ $CD1A
CD2C   A9 65      LDA #$65
CD2E   20 45 E6   JSR $E645
CD31   A9 65      LDA #$65
CD33   20 C8 C1   JSR $C1C8


;

CD36   20 F2 CD   JSR $CDF2
CD39   4C 60 D4   JMP $D460


; get byte from buffer

CD3C   20 2F D1   JSR $D12F
CD3F   A1 99      LDA ($99,X)
CD41   60         RTS


; read block from disk

CD42   20 36 CD   JSR $CD36
CD45   A9 00      LDA #$00
CD47   20 C8 D4   JSR $D4C8
CD4A   20 3C CD   JSR $CD3C
CD4D   99 44 02   STA $0244,Y
CD50   A9 89      LDA #$89
CD52   99 F2 00   STA $00F2,Y
CD55   60         RTS


; B-R block read

CD56   20 42 CD   JSR $CD42
CD59   20 EC D3   JSR $D3EC
CD5C   4C 94 C1   JMP $C194


; U1 substitute for block read

CD5F   20 6F CC   JSR $CC6F
CD62   20 42 CD   JSR $CD42
CD65   B9 44 02   LDA $0244,Y
CD68   99 3E 02   STA $023E,Y
CD6B   A9 FF      LDA #$FF
CD6D   99 44 02   STA $0244,Y
CD70   4C 94 C1   JMP $C194


; B-W block write

CD73   20 F2 CD   JSR $CDF2
CD76   20 E8 D4   JSR $D4E8
CD79   A8         TAY
CD7A   88         DEY
CD7B   C9 02      CMP #$02
CD7D   B0 02      BCS $CD81
CD7F   A0 01      LDY #$01
CD81   A9 00      LDA #$00
CD83   20 C8 D4   JSR $D4C8
CD86   98         TYA
CD87   20 F1 CF   JSR $CFF1
CD8A   8A         TXA
CD8B   48         PHA
CD8C   20 64 D4   JSR $D464
CD8F   68         PLA
CD90   AA         TAX
CD91   20 EE D3   JSR $D3EE
CD94   4C 94 C1   JMP $C194


; U2 substitute for block write

CD97   20 6F CC   JSR $CC6F
CD9A   20 F2 CD   JSR $CDF2
CD9D   20 64 D4   JSR $D464
CDA0   4C 94 C1   JMP $C194


; B-E block execute

CDA3   20 58 F2   JSR $F258   ; RTS
CDA6   20 36 CD   JSR $CD36
CDA9   A9 00      LDA #$00
CDAB   85 6F      STA $6F
CDAD   A6 F9      LDX $F9
CDAF   BD E0 FE   LDA $FEE0,X
CDB2   85 70      STA $70
CDB4   20 BA CD   JSR $CDBA
CDB7   4C 94 C1   JMP $C194

CDBA   6C 6F 00   JMP ($006F)


; B-P block pointer

CDBD   20 D2 CD   JSR $CDD2
CDC0   A5 F9      LDA $F9
CDC2   0A         ASL
CDC3   AA         TAX
CDC4   AD 86 02   LDA $0286
CDC7   95 99      STA $99,X
CDC9   20 2F D1   JSR $D12F
CDCC   20 EE D3   JSR $D3EE
CDCF   4C 94 C1   JMP $C194


; open channel

CDD2   A6 D3      LDX $D3
CDD4   E6 D3      INC $D3
CDD6   BD 85 02   LDA $0285,X
CDD9   A8         TAY
CDDA   88         DEY
CDDB   88         DEY
CDDC   C0 0C      CPY #$0C
CDDE   90 05      BCC $CDE5
CDE0   A9 70      LDA #$70
CDE2   4C C8 C1   JMP $C1C8
CDE5   85 83      STA $83
CDE7   20 EB D0   JSR $D0EB
CDEA   B0 F4      BCS $CDE0
CDEC   20 93 DF   JSR $DF93
CDEF   85 F9      STA $F9
CDF1   60         RTS


; check buffer number and open channel

CDF2   20 D2 CD   JSR $CDD2

CDF5   A6 D3      LDX $D3

CDF7   BD 85 02   LDA $0285,X
CDFA   29 01      AND #$01
CDFC   85 7F      STA $7F
CDFE   BD 87 02   LDA $0287,X
CE01   85 81      STA $81
CE03   BD 86 02   LDA $0286,X
CE06   85 80      STA $80
CE08   20 5F D5   JSR $D55F
CE0B   4C 00 C1   JMP $C100


; set pointer for REL file

CE0E   20 2C CE   JSR $CE2C
CE11   20 6E CE   JSR $CE6E
CE14   A5 90      LDA $90
CE16   85 D7      STA $D7
CE18   20 71 CE   JSR $CE71
CE1B   E6 D7      INC $D7
CE1D   E6 D7      INC $D7
CE1F   A5 8B      LDA $8B
CE21   85 D5      STA $D5
CE23   A5 90      LDA $90
CE25   0A         ASL
CE26   18         CLC
CE27   69 10      ADC #$10
CE29   85 D6      STA $D6
CE2B   60         RTS


;

CE2C   20 D9 CE   JSR $CED9
CE2F   85 92      STA $92
CE31   A6 82      LDX $82
CE33   B5 B5      LDA $B5,X
CE35   85 90      STA $90
CE37   B5 BB      LDA $BB,X
CE39   85 91      STA $91
CE3B   D0 04      BNE $CE41
CE3D   A5 90      LDA $90
CE3F   F0 0B      BEQ $CE4C
CE41   A5 90      LDA $90
CE43   38         SEC
CE44   E9 01      SBC #$01
CE46   85 90      STA $90
CE48   B0 02      BCS $CE4C
CE4A   C6 91      DEC $91
CE4C   B5 C7      LDA $C7,X
CE4E   85 6F      STA $6F
CE50   46 6F      LSR $6F
CE52   90 03      BCC $CE57
CE54   20 ED CE   JSR $CEED
CE57   20 E5 CE   JSR $CEE5
CE5A   A5 6F      LDA $6F
CE5C   D0 F2      BNE $CE50
CE5E   A5 D4      LDA $D4
CE60   18         CLC
CE61   65 8B      ADC $8B
CE63   85 8B      STA $8B
CE65   90 06      BCC $CE6D
CE67   E6 8C      INC $8C
CE69   D0 02      BNE $CE6D
CE6B   E6 8D      INC $8D
CE6D   60         RTS


; divide by 254

CE6E   A9 FE      LDA #$FE
CE70   .BY $2C


; divide by 120

CE71   A9 78      LDA #$78
CE73   85 6F      STA $6F
CE75   A2 03      LDX #$03
CE77   B5 8F      LDA $8F,X
CE79   48         PHA
CE7A   B5 8A      LDA $8A,X
CE7C   95 8F      STA $8F,X
CE7E   68         PLA
CE7F   95 8A      STA $8A,X
CE81   CA         DEX
CE82   D0 F3      BNE $CE77
CE84   20 D9 CE   JSR $CED9
CE87   A2 00      LDX #$00
CE89   B5 90      LDA $90,X
CE8B   95 8F      STA $8F,X
CE8D   E8         INX
CE8E   E0 04      CPX #$04
CE90   90 F7      BCC $CE89
CE92   A9 00      LDA #$00
CE94   85 92      STA $92
CE96   24 6F      BIT $6F
CE98   30 09      BMI $CEA3
CE9A   06 8F      ASL $8F
CE9C   08         PHP
CE9D   46 8F      LSR $8F
CE9F   28         PLP
CEA0   20 E6 CE   JSR $CEE6
CEA3   20 ED CE   JSR $CEED
CEA6   20 E5 CE   JSR $CEE5
CEA9   24 6F      BIT $6F
CEAB   30 03      BMI $CEB0
CEAD   20 E2 CE   JSR $CEE2
CEB0   A5 8F      LDA $8F
CEB2   18         CLC
CEB3   65 90      ADC $90
CEB5   85 90      STA $90
CEB7   90 06      BCC $CEBF
CEB9   E6 91      INC $91
CEBB   D0 02      BNE $CEBF
CEBD   E6 92      INC $92
CEBF   A5 92      LDA $92
CEC1   05 91      ORA $91
CEC3   D0 C2      BNE $CE87
CEC5   A5 90      LDA $90
CEC7   38         SEC
CEC8   E5 6F      SBC $6F
CECA   90 0C      BCC $CED8
CECC   E6 8B      INC $8B
CECE   D0 06      BNE $CED6
CED0   E6 8C      INC $8C
CED2   D0 02      BNE $CED6
CED4   E6 8D      INC $8D
CED6   85 90      STA $90
CED8   60         RTS


; erase work storage

CED9   A9 00      LDA #$00
CEDB   85 8B      STA $8B
CEDD   85 8C      STA $8C
CEDF   85 8D      STA $8D
CEE1   60         RTS


; left shift 3-byte register twice

CEE2   20 E5 CE   JSR $CEE5


; left shift 3-byte register once

CEE5   18         CLC

CEE6   26 90      ROL $90

CEE8   26 91      ROL $91
CEEA   26 92      ROL $92
CEEC   60         RTS


;

CEED   18         CLC
CEEE   A2 FD      LDX #$FD
CEF0   B5 8E      LDA $8E,X
CEF2   75 93      ADC $93,X
CEF4   95 8E      STA $8E,X
CEF6   E8         INX
CEF7   D0 F7      BNE $CEF0
CEF9   60         RTS

CEFA   A2 00      LDX #$00

CEFC   8A         TXA
CEFD   95 FA      STA $FA,X
CEFF   E8         INX
CF00   E0 04      CPX #$04
CF02   D0 F8      BNE $CEFC
CF04   A9 06      LDA #$06
CF06   95 FA      STA $FA,X
CF08   60         RTS

CF09   A0 04      LDY #$04

CF0B   A6 82      LDX $82

CF0D   B9 FA 00   LDA $00FA,Y

CF10   96 FA      STX $FA,Y
CF12   C5 82      CMP $82
CF14   F0 07      BEQ $CF1D
CF16   88         DEY
CF17   30 E1      BMI $CEFA
CF19   AA         TAX
CF1A   4C 0D CF   JMP $CF0D
CF1D   60         RTS

CF1E   20 09 CF   JSR $CF09

CF21   20 B7 DF   JSR $DFB7
CF24   D0 46      BNE $CF6C
CF26   20 D3 D1   JSR $D1D3
CF29   20 8E D2   JSR $D28E
CF2C   30 48      BMI $CF76
CF2E   20 C2 DF   JSR $DFC2
CF31   A5 80      LDA $80
CF33   48         PHA
CF34   A5 81      LDA $81
CF36   48         PHA
CF37   A9 01      LDA #$01
CF39   20 F6 D4   JSR $D4F6
CF3C   85 81      STA $81
CF3E   A9 00      LDA #$00
CF40   20 F6 D4   JSR $D4F6
CF43   85 80      STA $80
CF45   F0 1F      BEQ $CF66
CF47   20 25 D1   JSR $D125
CF4A   F0 0B      BEQ $CF57
CF4C   20 AB DD   JSR $DDAB
CF4F   D0 06      BNE $CF57
CF51   20 8C CF   JSR $CF8C
CF54   4C 5D CF   JMP $CF5D
CF57   20 8C CF   JSR $CF8C
CF5A   20 57 DE   JSR $DE57

CF5D   68         PLA

CF5E   85 81      STA $81
CF60   68         PLA
CF61   85 80      STA $80
CF63   4C 6F CF   JMP $CF6F
CF66   68         PLA
CF67   85 81      STA $81
CF69   68         PLA
CF6A   85 80      STA $80
CF6C   20 8C CF   JSR $CF8C

CF6F   20 93 DF   JSR $DF93

CF72   AA         TAX
CF73   4C 99 D5   JMP $D599
CF76   A9 70      LDA #$70
CF78   4C C8 C1   JMP $C1C8

CF7B   20 09 CF   JSR $CF09

CF7E   20 B7 DF   JSR $DFB7
CF81   D0 08      BNE $CF8B
CF83   20 8E D2   JSR $D28E
CF86   30 EE      BMI $CF76
CF88   20 C2 DF   JSR $DFC2
CF8B   60         RTS


; change buffer

CF8C   A6 82      LDX $82
CF8E   B5 A7      LDA $A7,X
CF90   49 80      EOR #$80
CF92   95 A7      STA $A7,X
CF94   B5 AE      LDA $AE,X
CF96   49 80      EOR #$80
CF98   95 AE      STA $AE,X
CF9A   60         RTS


; write data in buffer

CF9B   A2 12      LDX #$12
CF9D   86 83      STX $83
CF9F   20 07 D1   JSR $D107
CFA2   20 00 C1   JSR $C100
CFA5   20 25 D1   JSR $D125
CFA8   90 05      BCC $CFAF
CFAA   A9 20      LDA #$20
CFAC   20 9D DD   JSR $DD9D
CFAF   A5 83      LDA $83
CFB1   C9 0F      CMP #$0F
CFB3   F0 23      BEQ $CFD8
CFB5   D0 08      BNE $CFBF

CFB7   A5 84      LDA $84

CFB9   29 8F      AND #$8F
CFBB   C9 0F      CMP #$0F
CFBD   B0 19      BCS $CFD8
CFBF   20 25 D1   JSR $D125
CFC2   B0 05      BCS $CFC9
CFC4   A5 85      LDA $85
CFC6   4C 9D D1   JMP $D19D
CFC9   D0 03      BNE $CFCE
CFCB   4C AB E0   JMP $E0AB
CFCE   A5 85      LDA $85
CFD0   20 F1 CF   JSR $CFF1
CFD3   A4 82      LDY $82
CFD5   4C EE D3   JMP $D3EE
CFD8   A9 04      LDA #$04
CFDA   85 82      STA $82
CFDC   20 E8 D4   JSR $D4E8
CFDF   C9 2A      CMP #$2A
CFE1   F0 05      BEQ $CFE8
CFE3   A5 85      LDA $85
CFE5   20 F1 CF   JSR $CFF1
CFE8   A5 F8      LDA $F8
CFEA   F0 01      BEQ $CFED
CFEC   60         RTS
CFED   EE 55 02   INC $0255
CFF0   60         RTS


; write data byte in buffer

CFF1   48         PHA
CFF2   20 93 DF   JSR $DF93
CFF5   10 06      BPL $CFFD
CFF7   68         PLA
CFF8   A9 61      LDA #$61
CFFA   4C C8 C1   JMP $C1C8

CFFD   0A         ASL

CFFE   AA         TAX
CFFF   68         PLA
D000   81 99      STA ($99,X)
D002   F6 99      INC $99,X
D004   60         RTS


; I - Initalise command

D005   20 D1 C1   JSR $C1D1
D008   20 42 D0   JSR $D042
D00B   4C 94 C1   JMP $C194


;

D00E   20 0F F1   JSR $F10F
D011   A8         TAY
D012   B6 A7      LDX $A7,Y
D014   E0 FF      CPX #$FF
D016   D0 14      BNE $D02C
D018   48         PHA
D019   20 8E D2   JSR $D28E
D01C   AA         TAX
D01D   10 05      BPL $D024
D01F   A9 70      LDA #$70
D021   20 48 E6   JSR $E648
D024   68         PLA
D025   A8         TAY
D026   8A         TXA
D027   09 80      ORA #$80
D029   99 A7 00   STA $00A7,Y
D02C   8A         TXA
D02D   29 0F      AND #$0F
D02F   85 F9      STA $F9
D031   A2 00      LDX #$00
D033   86 81      STX $81
D035   AE 85 FE   LDX $FE85
D038   86 80      STX $80
D03A   20 D3 D6   JSR $D6D3
D03D   A9 B0      LDA #$B0
D03F   4C 8C D5   JMP $D58C


; load BAM

D042   20 D1 F0   JSR $F0D1
D045   20 13 D3   JSR $D313
D048   20 0E D0   JSR $D00E
D04B   A6 7F      LDX $7F
D04D   A9 00      LDA #$00
D04F   9D 51 02   STA $0251,X
D052   8A         TXA
D053   0A         ASL
D054   AA         TAX
D055   A5 16      LDA $16
D057   95 12      STA $12,X
D059   A5 17      LDA $17
D05B   95 13      STA $13,X
D05D   20 86 D5   JSR $D586
D060   A5 F9      LDA $F9
D062   0A         ASL
D063   AA         TAX
D064   A9 02      LDA #$02
D066   95 99      STA $99,X
D068   A1 99      LDA ($99,X)
D06A   A6 7F      LDX $7F
D06C   9D 01 01   STA $0101,X
D06F   A9 00      LDA #$00
D071   95 1C      STA $1C,X
D073   95 FF      STA $FF,X


; calculate blocks free

D075   20 3A EF   JSR $EF3A
D078   A0 04      LDY #$04
D07A   A9 00      LDA #$00
D07C   AA         TAX
D07D   18         CLC
D07E   71 6D      ADC ($6D),Y
D080   90 01      BCC $D083
D082   E8         INX
D083   C8         INY
D084   C8         INY
D085   C8         INY
D086   C8         INY
D087   C0 48      CPY #$48
D089   F0 F8      BEQ $D083
D08B   C0 90      CPY #$90
D08D   D0 EE      BNE $D07D
D08F   48         PHA
D090   8A         TXA
D091   A6 7F      LDX $7F
D093   9D FC 02   STA $02FC,X
D096   68         PLA
D097   9D FA 02   STA $02FA,X
D09A   60         RTS


;

D09B   20 D0 D6   JSR $D6D0
D09E   20 C3 D0   JSR $D0C3
D0A1   20 99 D5   JSR $D599
D0A4   20 37 D1   JSR $D137
D0A7   85 80      STA $80
D0A9   20 37 D1   JSR $D137
D0AC   85 81      STA $81
D0AE   60         RTS

D0AF   20 9B D0   JSR $D09B

D0B2   A5 80      LDA $80
D0B4   D0 01      BNE $D0B7
D0B6   60         RTS
D0B7   20 1E CF   JSR $CF1E
D0BA   20 D0 D6   JSR $D6D0
D0BD   20 C3 D0   JSR $D0C3
D0C0   4C 1E CF   JMP $CF1E


; read block

D0C3   A9 80      LDA #$80
D0C5   D0 02      BNE $D0C9


; write block

D0C7   A9 90      LDA #$90
D0C9   8D 4D 02   STA $024D
D0CC   20 93 DF   JSR $DF93
D0CF   AA         TAX
D0D0   20 06 D5   JSR $D506
D0D3   8A         TXA
D0D4   48         PHA
D0D5   0A         ASL
D0D6   AA         TAX
D0D7   A9 00      LDA #$00
D0D9   95 99      STA $99,X
D0DB   20 25 D1   JSR $D125
D0DE   C9 04      CMP #$04
D0E0   B0 06      BCS $D0E8
D0E2   F6 B5      INC $B5,X
D0E4   D0 02      BNE $D0E8
D0E6   F6 BB      INC $BB,X
D0E8   68         PLA
D0E9   AA         TAX
D0EA   60         RTS


; open channel for reading

D0EB   A5 83      LDA $83
D0ED   C9 13      CMP #$13
D0EF   90 02      BCC $D0F3
D0F1   29 0F      AND #$0F
D0F3   C9 0F      CMP #$0F
D0F5   D0 02      BNE $D0F9
D0F7   A9 10      LDA #$10
D0F9   AA         TAX
D0FA   38         SEC
D0FB   BD 2B 02   LDA $022B,X
D0FE   30 06      BMI $D106
D100   29 0F      AND #$0F
D102   85 82      STA $82
D104   AA         TAX
D105   18         CLC
D106   60         RTS


; open channel for writing

D107   A5 83      LDA $83
D109   C9 13      CMP #$13
D10B   90 02      BCC $D10F
D10D   29 0F      AND #$0F
D10F   AA         TAX
D110   BD 2B 02   LDA $022B,X
D113   A8         TAY
D114   0A         ASL
D115   90 0A      BCC $D121
D117   30 0A      BMI $D123
D119   98         TYA
D11A   29 0F      AND #$0F
D11C   85 82      STA $82
D11E   AA         TAX
D11F   18         CLC
D120   60         RTS
D121   30 F6      BMI $D119
D123   38         SEC
D124   60         RTS


; check for file type REL

D125   A6 82      LDX $82
D127   B5 EC      LDA $EC,X
D129   4A         LSR
D12A   29 07      AND #$07
D12C   C9 04      CMP #$04
D12E   60         RTS


; get buffer and channel numbers

D12F   20 93 DF   JSR $DF93
D132   0A         ASL
D133   AA         TAX
D134   A4 82      LDY $82
D136   60         RTS


; get a byte from buffer

D137   20 2F D1   JSR $D12F
D13A   B9 44 02   LDA $0244,Y
D13D   F0 12      BEQ $D151
D13F   A1 99      LDA ($99,X)
D141   48         PHA
D142   B5 99      LDA $99,X
D144   D9 44 02   CMP $0244,Y
D147   D0 04      BNE $D14D
D149   A9 FF      LDA #$FF
D14B   95 99      STA $99,X
D14D   68         PLA
D14E   F6 99      INC $99,X
D150   60         RTS
D151   A1 99      LDA ($99,X)
D153   F6 99      INC $99,X
D155   60         RTS


; get byte and read next block

D156   20 37 D1   JSR $D137
D159   D0 36      BNE $D191
D15B   85 85      STA $85
D15D   B9 44 02   LDA $0244,Y
D160   F0 08      BEQ $D16A
D162   A9 80      LDA #$80
D164   99 F2 00   STA $00F2,Y
D167   A5 85      LDA $85
D169   60         RTS
D16A   20 1E CF   JSR $CF1E
D16D   A9 00      LDA #$00
D16F   20 C8 D4   JSR $D4C8
D172   20 37 D1   JSR $D137
D175   C9 00      CMP #$00
D177   F0 19      BEQ $D192
D179   85 80      STA $80
D17B   20 37 D1   JSR $D137
D17E   85 81      STA $81
D180   20 1E CF   JSR $CF1E
D183   20 D3 D1   JSR $D1D3
D186   20 D0 D6   JSR $D6D0
D189   20 C3 D0   JSR $D0C3
D18C   20 1E CF   JSR $CF1E
D18F   A5 85      LDA $85
D191   60         RTS
D192   20 37 D1   JSR $D137
D195   A4 82      LDY $82
D197   99 44 02   STA $0244,Y
D19A   A5 85      LDA $85
D19C   60         RTS


; write byte in buffer and block

D19D   20 F1 CF   JSR $CFF1
D1A0   F0 01      BEQ $D1A3
D1A2   60         RTS

D1A3   20 D3 D1   JSR $D1D3

D1A6   20 1E F1   JSR $F11E
D1A9   A9 00      LDA #$00
D1AB   20 C8 D4   JSR $D4C8
D1AE   A5 80      LDA $80
D1B0   20 F1 CF   JSR $CFF1
D1B3   A5 81      LDA $81
D1B5   20 F1 CF   JSR $CFF1
D1B8   20 C7 D0   JSR $D0C7
D1BB   20 1E CF   JSR $CF1E
D1BE   20 D0 D6   JSR $D6D0
D1C1   A9 02      LDA #$02
D1C3   4C C8 D4   JMP $D4C8


; increment buffer pointer

D1C6   85 6F      STA $6F
D1C8   20 E8 D4   JSR $D4E8
D1CB   18         CLC
D1CC   65 6F      ADC $6F
D1CE   95 99      STA $99,X
D1D0   85 94      STA $94
D1D2   60         RTS


; get drive number

D1D3   20 93 DF   JSR $DF93
D1D6   AA         TAX
D1D7   BD 5B 02   LDA $025B,X
D1DA   29 01      AND #$01
D1DC   85 7F      STA $7F
D1DE   60         RTS


; find write channel and buffer

D1DF   38         SEC
D1E0   B0 01      BCS $D1E3


; find read channel and buffer

D1E2   18         CLC
D1E3   08         PHP
D1E4   85 6F      STA $6F
D1E6   20 27 D2   JSR $D227
D1E9   20 7F D3   JSR $D37F
D1EC   85 82      STA $82
D1EE   A6 83      LDX $83
D1F0   28         PLP
D1F1   90 02      BCC $D1F5
D1F3   09 80      ORA #$80
D1F5   9D 2B 02   STA $022B,X
D1F8   29 3F      AND #$3F
D1FA   A8         TAY
D1FB   A9 FF      LDA #$FF
D1FD   99 A7 00   STA $00A7,Y
D200   99 AE 00   STA $00AE,Y
D203   99 CD 00   STA $00CD,Y
D206   C6 6F      DEC $6F
D208   30 1C      BMI $D226
D20A   20 8E D2   JSR $D28E
D20D   10 08      BPL $D217

D20F   20 5A D2   JSR $D25A

D212   A9 70      LDA #$70
D214   4C C8 C1   JMP $C1C8
D217   99 A7 00   STA $00A7,Y
D21A   C6 6F      DEC $6F
D21C   30 08      BMI $D226
D21E   20 8E D2   JSR $D28E
D221   30 EC      BMI $D20F
D223   99 AE 00   STA $00AE,Y
D226   60         RTS


; close channel

D227   A5 83      LDA $83
D229   C9 0F      CMP #$0F
D22B   D0 01      BNE $D22E
D22D   60         RTS
D22E   A6 83      LDX $83
D230   BD 2B 02   LDA $022B,X
D233   C9 FF      CMP #$FF
D235   F0 22      BEQ $D259
D237   29 3F      AND #$3F
D239   85 82      STA $82
D23B   A9 FF      LDA #$FF
D23D   9D 2B 02   STA $022B,X
D240   A6 82      LDX $82
D242   A9 00      LDA #$00
D244   95 F2      STA $F2,X
D246   20 5A D2   JSR $D25A
D249   A6 82      LDX $82
D24B   A9 01      LDA #$01
D24D   CA         DEX
D24E   30 03      BMI $D253
D250   0A         ASL
D251   D0 FA      BNE $D24D
D253   0D 56 02   ORA $0256
D256   8D 56 02   STA $0256
D259   60         RTS


; free buffer

D25A   A6 82      LDX $82
D25C   B5 A7      LDA $A7,X
D25E   C9 FF      CMP #$FF
D260   F0 09      BEQ $D26B
D262   48         PHA
D263   A9 FF      LDA #$FF
D265   95 A7      STA $A7,X
D267   68         PLA
D268   20 F3 D2   JSR $D2F3
D26B   A6 82      LDX $82
D26D   B5 AE      LDA $AE,X
D26F   C9 FF      CMP #$FF
D271   F0 09      BEQ $D27C
D273   48         PHA
D274   A9 FF      LDA #$FF
D276   95 AE      STA $AE,X
D278   68         PLA
D279   20 F3 D2   JSR $D2F3
D27C   A6 82      LDX $82
D27E   B5 CD      LDA $CD,X
D280   C9 FF      CMP #$FF
D282   F0 09      BEQ $D28D
D284   48         PHA
D285   A9 FF      LDA #$FF
D287   95 CD      STA $CD,X
D289   68         PLA
D28A   20 F3 D2   JSR $D2F3
D28D   60         RTS


; find buffer

D28E   98         TYA
D28F   48         PHA
D290   A0 01      LDY #$01
D292   20 BA D2   JSR $D2BA
D295   10 0C      BPL $D2A3
D297   88         DEY
D298   20 BA D2   JSR $D2BA
D29B   10 06      BPL $D2A3
D29D   20 39 D3   JSR $D339
D2A0   AA         TAX
D2A1   30 13      BMI $D2B6
D2A3   B5 00      LDA $00,X
D2A5   30 FC      BMI $D2A3
D2A7   A5 7F      LDA $7F
D2A9   95 00      STA $00,X
D2AB   9D 5B 02   STA $025B,X
D2AE   8A         TXA
D2AF   0A         ASL
D2B0   A8         TAY
D2B1   A9 02      LDA #$02
D2B3   99 99 00   STA $0099,Y
D2B6   68         PLA
D2B7   A8         TAY
D2B8   8A         TXA
D2B9   60         RTS

D2BA   A2 07      LDX #$07

D2BC   B9 4F 02   LDA $024F,Y
D2BF   3D E9 EF   AND $EFE9,X
D2C2   F0 04      BEQ $D2C8
D2C4   CA         DEX
D2C5   10 F5      BPL $D2BC
D2C7   60         RTS
D2C8   B9 4F 02   LDA $024F,Y
D2CB   5D E9 EF   EOR $EFE9,X
D2CE   99 4F 02   STA $024F,Y
D2D1   8A         TXA
D2D2   88         DEY
D2D3   30 03      BMI $D2D8
D2D5   18         CLC
D2D6   69 08      ADC #$08
D2D8   AA         TAX
D2D9   60         RTS

D2DA   A6 82      LDX $82

D2DC   B5 A7      LDA $A7,X
D2DE   30 09      BMI $D2E9
D2E0   8A         TXA
D2E1   18         CLC
D2E2   69 07      ADC #$07
D2E4   AA         TAX
D2E5   B5 A7      LDA $A7,X
D2E7   10 F0      BPL $D2D9
D2E9   C9 FF      CMP #$FF
D2EB   F0 EC      BEQ $D2D9
D2ED   48         PHA
D2EE   A9 FF      LDA #$FF
D2F0   95 A7      STA $A7,X
D2F2   68         PLA

D2F3   29 0F      AND #$0F

D2F5   A8         TAY
D2F6   C8         INY
D2F7   A2 10      LDX #$10
D2F9   6E 50 02   ROR $0250
D2FC   6E 4F 02   ROR $024F
D2FF   88         DEY
D300   D0 01      BNE $D303
D302   18         CLC
D303   CA         DEX
D304   10 F3      BPL $D2F9
D306   60         RTS


; close all channels

D307   A9 0E      LDA #$0E
D309   85 83      STA $83
D30B   20 27 D2   JSR $D227
D30E   C6 83      DEC $83
D310   D0 F9      BNE $D30B
D312   60         RTS


; close all channels of other drives

D313   A9 0E      LDA #$0E
D315   85 83      STA $83
D317   A6 83      LDX $83
D319   BD 2B 02   LDA $022B,X
D31C   C9 FF      CMP #$FF
D31E   F0 14      BEQ $D334
D320   29 3F      AND #$3F
D322   85 82      STA $82
D324   20 93 DF   JSR $DF93
D327   AA         TAX
D328   BD 5B 02   LDA $025B,X
D32B   29 01      AND #$01
D32D   C5 7F      CMP $7F
D32F   D0 03      BNE $D334
D331   20 27 D2   JSR $D227
D334   C6 83      DEC $83
D336   10 DF      BPL $D317
D338   60         RTS


;

D339   A5 6F      LDA $6F
D33B   48         PHA
D33C   A0 00      LDY #$00
D33E   B6 FA      LDX $FA,Y
D340   B5 A7      LDA $A7,X
D342   10 04      BPL $D348
D344   C9 FF      CMP #$FF
D346   D0 16      BNE $D35E
D348   8A         TXA
D349   18         CLC
D34A   69 07      ADC #$07
D34C   AA         TAX
D34D   B5 A7      LDA $A7,X
D34F   10 04      BPL $D355
D351   C9 FF      CMP #$FF
D353   D0 09      BNE $D35E
D355   C8         INY
D356   C0 05      CPY #$05
D358   90 E4      BCC $D33E
D35A   A2 FF      LDX #$FF
D35C   D0 1C      BNE $D37A
D35E   86 6F      STX $6F
D360   29 3F      AND #$3F
D362   AA         TAX
D363   B5 00      LDA $00,X
D365   30 FC      BMI $D363
D367   C9 02      CMP #$02
D369   90 08      BCC $D373
D36B   A6 6F      LDX $6F
D36D   E0 07      CPX #$07
D36F   90 D7      BCC $D348
D371   B0 E2      BCS $D355
D373   A4 6F      LDY $6F
D375   A9 FF      LDA #$FF
D377   99 A7 00   STA $00A7,Y
D37A   68         PLA
D37B   85 6F      STA $6F
D37D   8A         TXA
D37E   60         RTS


; find channel and allocate

D37F   A0 00      LDY #$00
D381   A9 01      LDA #$01
D383   2C 56 02   BIT $0256
D386   D0 09      BNE $D391
D388   C8         INY
D389   0A         ASL
D38A   D0 F7      BNE $D383
D38C   A9 70      LDA #$70
D38E   4C C8 C1   JMP $C1C8
D391   49 FF      EOR #$FF
D393   2D 56 02   AND $0256
D396   8D 56 02   STA $0256
D399   98         TYA
D39A   60         RTS


; get byte for output

D39B   20 EB D0   JSR $D0EB
D39E   20 00 C1   JSR $C100
D3A1   20 AA D3   JSR $D3AA
D3A4   A6 82      LDX $82
D3A6   BD 3E 02   LDA $023E,X
D3A9   60         RTS

D3AA   A6 82      LDX $82

D3AC   20 25 D1   JSR $D125
D3AF   D0 03      BNE $D3B4
D3B1   4C 20 E1   JMP $E120
D3B4   A5 83      LDA $83
D3B6   C9 0F      CMP #$0F
D3B8   F0 5A      BEQ $D414
D3BA   B5 F2      LDA $F2,X
D3BC   29 08      AND #$08
D3BE   D0 13      BNE $D3D3
D3C0   20 25 D1   JSR $D125
D3C3   C9 07      CMP #$07
D3C5   D0 07      BNE $D3CE
D3C7   A9 89      LDA #$89
D3C9   95 F2      STA $F2,X
D3CB   4C DE D3   JMP $D3DE
D3CE   A9 00      LDA #$00
D3D0   95 F2      STA $F2,X
D3D2   60         RTS
D3D3   A5 83      LDA $83
D3D5   F0 32      BEQ $D409
D3D7   20 25 D1   JSR $D125
D3DA   C9 04      CMP #$04
D3DC   90 22      BCC $D400

D3DE   20 2F D1   JSR $D12F

D3E1   B5 99      LDA $99,X
D3E3   D9 44 02   CMP $0244,Y
D3E6   D0 04      BNE $D3EC
D3E8   A9 00      LDA #$00
D3EA   95 99      STA $99,X

D3EC   F6 99      INC $99,X


D3EE   A1 99      LDA ($99,X)

D3F0   99 3E 02   STA $023E,Y
D3F3   B5 99      LDA $99,X
D3F5   D9 44 02   CMP $0244,Y
D3F8   D0 05      BNE $D3FF
D3FA   A9 81      LDA #$81
D3FC   99 F2 00   STA $00F2,Y
D3FF   60         RTS
D400   20 56 D1   JSR $D156

D403   A6 82      LDX $82

D405   9D 3E 02   STA $023E,X
D408   60         RTS
D409   AD 54 02   LDA $0254
D40C   F0 F2      BEQ $D400
D40E   20 67 ED   JSR $ED67
D411   4C 03 D4   JMP $D403
D414   20 E8 D4   JSR $D4E8
D417   C9 D4      CMP #$D4
D419   D0 18      BNE $D433
D41B   A5 95      LDA $95
D41D   C9 02      CMP #$02
D41F   D0 12      BNE $D433
D421   A9 0D      LDA #$0D
D423   85 85      STA $85
D425   20 23 C1   JSR $C123
D428   A9 00      LDA #$00
D42A   20 C1 E6   JSR $E6C1
D42D   C6 A5      DEC $A5
D42F   A9 80      LDA #$80
D431   D0 12      BNE $D445
D433   20 37 D1   JSR $D137
D436   85 85      STA $85
D438   D0 09      BNE $D443

D43A   A9 D4      LDA #$D4

D43C   20 C8 D4   JSR $D4C8
D43F   A9 02      LDA #$02
D441   95 9A      STA $9A,X

D443   A9 88      LDA #$88

D445   85 F7      STA $F7
D447   A5 85      LDA $85
D449   8D 43 02   STA $0243
D44C   60         RTS


; read next block

D44D   20 93 DF   JSR $DF93
D450   0A         ASL
D451   AA         TAX
D452   A9 00      LDA #$00
D454   95 99      STA $99,X
D456   A1 99      LDA ($99,X)
D458   F0 05      BEQ $D45F
D45A   D6 99      DEC $99,X
D45C   4C 56 D1   JMP $D156
D45F   60         RTS


; read block

D460   A9 80      LDA #$80
D462   D0 02      BNE $D466


; write block

D464   A9 90      LDA #$90
D466   05 7F      ORA $7F
D468   8D 4D 02   STA $024D
D46B   A5 F9      LDA $F9
D46D   20 D3 D6   JSR $D6D3
D470   A6 F9      LDX $F9
D472   4C 93 D5   JMP $D593


; allocate buffer and read block

D475   A9 01      LDA #$01

D477   8D 4A 02   STA $024A

D47A   A9 11      LDA #$11
D47C   85 83      STA $83
D47E   20 46 DC   JSR $DC46
D481   A9 02      LDA #$02
D483   4C C8 D4   JMP $D4C8


; allocate new block

D486   A9 12      LDA #$12
D488   85 83      STA $83
D48A   4C DA DC   JMP $DCDA


; write dir block

D48D   20 3B DE   JSR $DE3B
D490   A9 01      LDA #$01
D492   85 6F      STA $6F
D494   A5 69      LDA $69
D496   48         PHA
D497   A9 03      LDA #$03
D499   85 69      STA $69
D49B   20 2D F1   JSR $F12D
D49E   68         PLA
D49F   85 69      STA $69
D4A1   A9 00      LDA #$00
D4A3   20 C8 D4   JSR $D4C8
D4A6   A5 80      LDA $80
D4A8   20 F1 CF   JSR $CFF1
D4AB   A5 81      LDA $81
D4AD   20 F1 CF   JSR $CFF1
D4B0   20 C7 D0   JSR $D0C7
D4B3   20 99 D5   JSR $D599
D4B6   A9 00      LDA #$00
D4B8   20 C8 D4   JSR $D4C8
D4BB   20 F1 CF   JSR $CFF1
D4BE   D0 FB      BNE $D4BB
D4C0   20 F1 CF   JSR $CFF1
D4C3   A9 FF      LDA #$FF
D4C5   4C F1 CF   JMP $CFF1


; set buffer pointer

D4C8   85 6F      STA $6F
D4CA   20 93 DF   JSR $DF93
D4CD   0A         ASL
D4CE   AA         TAX
D4CF   B5 9A      LDA $9A,X
D4D1   85 95      STA $95
D4D3   A5 6F      LDA $6F
D4D5   95 99      STA $99,X
D4D7   85 94      STA $94
D4D9   60         RTS


; close internal channel

D4DA   A9 11      LDA #$11
D4DC   85 83      STA $83
D4DE   20 27 D2   JSR $D227
D4E1   A9 12      LDA #$12
D4E3   85 83      STA $83
D4E5   4C 27 D2   JMP $D227


; set buffer pointer

D4E8   20 93 DF   JSR $DF93

D4EB   0A         ASL

D4EC   AA         TAX
D4ED   B5 9A      LDA $9A,X
D4EF   85 95      STA $95
D4F1   B5 99      LDA $99,X
D4F3   85 94      STA $94
D4F5   60         RTS


; get byte from buffer

D4F6   85 71      STA $71
D4F8   20 93 DF   JSR $DF93
D4FB   AA         TAX
D4FC   BD E0 FE   LDA $FEE0,X
D4FF   85 72      STA $72
D501   A0 00      LDY #$00
D503   B1 71      LDA ($71),Y
D505   60         RTS


; check track and sector numbers

D506   BD 5B 02   LDA $025B,X
D509   29 01      AND #$01
D50B   0D 4D 02   ORA $024D

D50E   48         PHA

D50F   86 F9      STX $F9
D511   8A         TXA
D512   0A         ASL
D513   AA         TAX
D514   B5 07      LDA $07,X
D516   8D 4D 02   STA $024D
D519   B5 06      LDA $06,X
D51B   F0 2D      BEQ $D54A
D51D   CD D7 FE   CMP $FED7
D520   B0 28      BCS $D54A
D522   AA         TAX
D523   68         PLA
D524   48         PHA
D525   29 F0      AND #$F0
D527   C9 90      CMP #$90
D529   D0 4F      BNE $D57A
D52B   68         PLA
D52C   48         PHA
D52D   4A         LSR
D52E   B0 05      BCS $D535
D530   AD 01 01   LDA $0101
D533   90 03      BCC $D538
D535   AD 02 01   LDA $0102
D538   F0 05      BEQ $D53F
D53A   CD D5 FE   CMP $FED5
D53D   D0 33      BNE $D572
D53F   8A         TXA
D540   20 4B F2   JSR $F24B
D543   CD 4D 02   CMP $024D
D546   F0 02      BEQ $D54A
D548   B0 30      BCS $D57A
D54A   20 52 D5   JSR $D552
D54D   A9 66      LDA #$66
D54F   4C 45 E6   JMP $E645


; get track and sector numbers

D552   A5 F9      LDA $F9
D554   0A         ASL
D555   AA         TAX
D556   B5 06      LDA $06,X
D558   85 80      STA $80
D55A   B5 07      LDA $07,X
D55C   85 81      STA $81
D55E   60         RTS


; check for vaild track and sector numbers

D55F   A5 80      LDA $80
D561   F0 EA      BEQ $D54D
D563   CD D7 FE   CMP $FED7
D566   B0 E5      BCS $D54D
D568   20 4B F2   JSR $F24B
D56B   C5 81      CMP $81
D56D   F0 DE      BEQ $D54D
D56F   90 DC      BCC $D54D
D571   60         RTS

D572   20 52 D5   JSR $D552

D575   A9 73      LDA #$73
D577   4C 45 E6   JMP $E645
D57A   A6 F9      LDX $F9
D57C   68         PLA
D57D   8D 4D 02   STA $024D
D580   95 00      STA $00,X
D582   9D 5B 02   STA $025B,X
D585   60         RTS


; read block

D586   A9 80      LDA #$80
D588   D0 02      BNE $D58C


; write block

D58A   A9 90      LDA #$90

D58C   05 7F      ORA $7F

D58E   A6 F9      LDX $F9

D590   8D 4D 02   STA $024D


D593   AD 4D 02   LDA $024D

D596   20 0E D5   JSR $D50E


; verify execution

D599   20 A6 D5   JSR $D5A6
D59C   B0 FB      BCS $D599
D59E   48         PHA
D59F   A9 00      LDA #$00
D5A1   8D 98 02   STA $0298
D5A4   68         PLA
D5A5   60         RTS

D5A6   B5 00      LDA $00,X

D5A8   30 1A      BMI $D5C4
D5AA   C9 02      CMP #$02
D5AC   90 14      BCC $D5C2
D5AE   C9 08      CMP #$08
D5B0   F0 08      BEQ $D5BA
D5B2   C9 0B      CMP #$0B
D5B4   F0 04      BEQ $D5BA
D5B6   C9 0F      CMP #$0F
D5B8   D0 0C      BNE $D5C6
D5BA   2C 98 02   BIT $0298
D5BD   30 03      BMI $D5C2
D5BF   4C 3F D6   JMP $D63F
D5C2   18         CLC
D5C3   60         RTS
D5C4   38         SEC
D5C5   60         RTS


; additional attempts for read errors

D5C6   98         TYA
D5C7   48         PHA
D5C8   A5 7F      LDA $7F
D5CA   48         PHA
D5CB   BD 5B 02   LDA $025B,X
D5CE   29 01      AND #$01
D5D0   85 7F      STA $7F
D5D2   A8         TAY
D5D3   B9 CA FE   LDA $FECA,Y
D5D6   8D 6D 02   STA $026D
D5D9   20 A6 D6   JSR $D6A6
D5DC   C9 02      CMP #$02
D5DE   B0 03      BCS $D5E3
D5E0   4C 6D D6   JMP $D66D
D5E3   BD 5B 02   LDA $025B,X
D5E6   29 F0      AND #$F0
D5E8   48         PHA
D5E9   C9 90      CMP #$90
D5EB   D0 07      BNE $D5F4
D5ED   A5 7F      LDA $7F
D5EF   09 B8      ORA #$B8
D5F1   9D 5B 02   STA $025B,X
D5F4   24 6A      BIT $6A
D5F6   70 39      BVS $D631
D5F8   A9 00      LDA #$00
D5FA   8D 99 02   STA $0299
D5FD   8D 9A 02   STA $029A
D600   AC 99 02   LDY $0299
D603   AD 9A 02   LDA $029A
D606   38         SEC
D607   F9 DB FE   SBC $FEDB,Y
D60A   8D 9A 02   STA $029A
D60D   B9 DB FE   LDA $FEDB,Y
D610   20 76 D6   JSR $D676
D613   EE 99 02   INC $0299
D616   20 A6 D6   JSR $D6A6
D619   C9 02      CMP #$02
D61B   90 08      BCC $D625
D61D   AC 99 02   LDY $0299
D620   B9 DB FE   LDA $FEDB,Y
D623   D0 DB      BNE $D600
D625   AD 9A 02   LDA $029A
D628   20 76 D6   JSR $D676
D62B   B5 00      LDA $00,X
D62D   C9 02      CMP #$02
D62F   90 2B      BCC $D65C
D631   24 6A      BIT $6A
D633   10 0F      BPL $D644
D635   68         PLA
D636   C9 90      CMP #$90
D638   D0 05      BNE $D63F
D63A   05 7F      ORA $7F
D63C   9D 5B 02   STA $025B,X

D63F   B5 00      LDA $00,X

D641   20 0A E6   JSR $E60A
D644   68         PLA
D645   2C 98 02   BIT $0298
D648   30 23      BMI $D66D
D64A   48         PHA
D64B   A9 C0      LDA #$C0
D64D   05 7F      ORA $7F
D64F   95 00      STA $00,X
D651   B5 00      LDA $00,X
D653   30 FC      BMI $D651
D655   20 A6 D6   JSR $D6A6
D658   C9 02      CMP #$02
D65A   B0 D9      BCS $D635
D65C   68         PLA
D65D   C9 90      CMP #$90
D65F   D0 0C      BNE $D66D
D661   05 7F      ORA $7F
D663   9D 5B 02   STA $025B,X
D666   20 A6 D6   JSR $D6A6
D669   C9 02      CMP #$02
D66B   B0 D2      BCS $D63F

D66D   68         PLA

D66E   85 7F      STA $7F
D670   68         PLA
D671   A8         TAY
D672   B5 00      LDA $00,X
D674   18         CLC
D675   60         RTS


; move head by half a track

D676   C9 00      CMP #$00
D678   F0 18      BEQ $D692
D67A   30 0C      BMI $D688
D67C   A0 01      LDY #$01
D67E   20 93 D6   JSR $D693
D681   38         SEC
D682   E9 01      SBC #$01
D684   D0 F6      BNE $D67C
D686   F0 0A      BEQ $D692
D688   A0 FF      LDY #$FF
D68A   20 93 D6   JSR $D693
D68D   18         CLC
D68E   69 01      ADC #$01
D690   D0 F6      BNE $D688
D692   60         RTS


; move head one track in or out

D693   48         PHA
D694   98         TYA
D695   A4 7F      LDY $7F
D697   99 FE 02   STA $02FE,Y
D69A   D9 FE 02   CMP $02FE,Y
D69D   F0 FB      BEQ $D69A
D69F   A9 00      LDA #$00
D6A1   99 FE 02   STA $02FE,Y
D6A4   68         PLA
D6A5   60         RTS


; attempt command execution multiple times

D6A6   A5 6A      LDA $6A
D6A8   29 3F      AND #$3F
D6AA   A8         TAY
D6AB   AD 6D 02   LDA $026D
D6AE   4D 00 1C   EOR $1C00
D6B1   8D 00 1C   STA $1C00
D6B4   BD 5B 02   LDA $025B,X
D6B7   95 00      STA $00,X
D6B9   B5 00      LDA $00,X
D6BB   30 FC      BMI $D6B9
D6BD   C9 02      CMP #$02
D6BF   90 03      BCC $D6C4
D6C1   88         DEY
D6C2   D0 E7      BNE $D6AB
D6C4   48         PHA
D6C5   AD 6D 02   LDA $026D
D6C8   0D 00 1C   ORA $1C00
D6CB   8D 00 1C   STA $1C00
D6CE   68         PLA
D6CF   60         RTS


; transmit param to disk controller

D6D0   20 93 DF   JSR $DF93

D6D3   0A         ASL

D6D4   A8         TAY
D6D5   A5 80      LDA $80
D6D7   99 06 00   STA $0006,Y
D6DA   A5 81      LDA $81
D6DC   99 07 00   STA $0007,Y
D6DF   A5 7F      LDA $7F
D6E1   0A         ASL
D6E2   AA         TAX
D6E3   60         RTS


; enter file in dir

D6E4   A5 83      LDA $83
D6E6   48         PHA
D6E7   A5 82      LDA $82
D6E9   48         PHA
D6EA   A5 81      LDA $81
D6EC   48         PHA
D6ED   A5 80      LDA $80
D6EF   48         PHA
D6F0   A9 11      LDA #$11
D6F2   85 83      STA $83
D6F4   20 3B DE   JSR $DE3B
D6F7   AD 4A 02   LDA $024A
D6FA   48         PHA
D6FB   A5 E2      LDA $E2
D6FD   29 01      AND #$01
D6FF   85 7F      STA $7F
D701   A6 F9      LDX $F9
D703   5D 5B 02   EOR $025B,X
D706   4A         LSR
D707   90 0C      BCC $D715
D709   A2 01      LDX #$01
D70B   8E 92 02   STX $0292
D70E   20 AC C5   JSR $C5AC
D711   F0 1D      BEQ $D730
D713   D0 28      BNE $D73D
D715   AD 91 02   LDA $0291
D718   F0 0C      BEQ $D726
D71A   C5 81      CMP $81
D71C   F0 1F      BEQ $D73D
D71E   85 81      STA $81
D720   20 60 D4   JSR $D460
D723   4C 3D D7   JMP $D73D
D726   A9 01      LDA #$01
D728   8D 92 02   STA $0292
D72B   20 17 C6   JSR $C617
D72E   D0 0D      BNE $D73D
D730   20 8D D4   JSR $D48D
D733   A5 81      LDA $81
D735   8D 91 02   STA $0291
D738   A9 02      LDA #$02
D73A   8D 92 02   STA $0292

D73D   AD 92 02   LDA $0292

D740   20 C8 D4   JSR $D4C8
D743   68         PLA
D744   8D 4A 02   STA $024A
D747   C9 04      CMP #$04
D749   D0 02      BNE $D74D
D74B   09 80      ORA #$80
D74D   20 F1 CF   JSR $CFF1
D750   68         PLA
D751   8D 80 02   STA $0280
D754   20 F1 CF   JSR $CFF1
D757   68         PLA
D758   8D 85 02   STA $0285
D75B   20 F1 CF   JSR $CFF1
D75E   20 93 DF   JSR $DF93
D761   A8         TAY
D762   AD 7A 02   LDA $027A
D765   AA         TAX
D766   A9 10      LDA #$10
D768   20 6E C6   JSR $C66E
D76B   A0 10      LDY #$10
D76D   A9 00      LDA #$00
D76F   91 94      STA ($94),Y
D771   C8         INY
D772   C0 1B      CPY #$1B
D774   90 F9      BCC $D76F
D776   AD 4A 02   LDA $024A
D779   C9 04      CMP #$04
D77B   D0 13      BNE $D790
D77D   A0 10      LDY #$10
D77F   AD 59 02   LDA $0259
D782   91 94      STA ($94),Y
D784   C8         INY
D785   AD 5A 02   LDA $025A
D788   91 94      STA ($94),Y
D78A   C8         INY
D78B   AD 58 02   LDA $0258
D78E   91 94      STA ($94),Y
D790   20 64 D4   JSR $D464
D793   68         PLA
D794   85 82      STA $82
D796   AA         TAX
D797   68         PLA
D798   85 83      STA $83
D79A   AD 91 02   LDA $0291
D79D   85 D8      STA $D8
D79F   9D 60 02   STA $0260,X
D7A2   AD 92 02   LDA $0292
D7A5   85 DD      STA $DD
D7A7   9D 66 02   STA $0266,X
D7AA   AD 4A 02   LDA $024A
D7AD   85 E7      STA $E7
D7AF   A5 7F      LDA $7F
D7B1   85 E2      STA $E2
D7B3   60         RTS


; OPEN command, secondary addr not 15

D7B4   A5 83      LDA $83
D7B6   8D 4C 02   STA $024C
D7B9   20 B3 C2   JSR $C2B3
D7BC   8E 2A 02   STX $022A
D7BF   AE 00 02   LDX $0200
D7C2   AD 4C 02   LDA $024C
D7C5   D0 2C      BNE $D7F3
D7C7   E0 2A      CPX #$2A   ; asterix
D7C9   D0 28      BNE $D7F3
D7CB   A5 7E      LDA $7E
D7CD   F0 4D      BEQ $D81C
D7CF   85 80      STA $80
D7D1   AD 6E 02   LDA $026E
D7D4   85 7F      STA $7F
D7D6   85 E2      STA $E2
D7D8   A9 02      LDA #$02
D7DA   85 E7      STA $E7
D7DC   AD 6F 02   LDA $026F
D7DF   85 81      STA $81
D7E1   20 00 C1   JSR $C100
D7E4   20 46 DC   JSR $DC46
D7E7   A9 04      LDA #$04
D7E9   05 7F      ORA $7F

D7EB   A6 82      LDX $82

D7ED   99 EC 00   STA $00EC,Y
D7F0   4C 94 C1   JMP $C194
D7F3   E0 24      CPX #$24   ; dollar
D7F5   D0 1E      BNE $D815
D7F7   AD 4C 02   LDA $024C
D7FA   D0 03      BNE $D7FF
D7FC   4C 55 DA   JMP $DA55
D7FF   20 D1 C1   JSR $C1D1
D802   AD 85 FE   LDA $FE85
D805   85 80      STA $80
D807   A9 00      LDA #$00
D809   85 81      STA $81
D80B   20 46 DC   JSR $DC46
D80E   A5 7F      LDA $7F
D810   09 02      ORA #$02
D812   4C EB D7   JMP $D7EB
D815   E0 23      CPX #$23   ; hash
D817   D0 12      BNE $D82B
D819   4C 84 CB   JMP $CB84
D81C   A9 02      LDA #$02
D81E   8D 96 02   STA $0296
D821   A9 00      LDA #$00
D823   85 7F      STA $7F
D825   8D 8E 02   STA $028E
D828   20 42 D0   JSR $D042
D82B   20 E5 C1   JSR $C1E5
D82E   D0 04      BNE $D834
D830   A2 00      LDX #$00
D832   F0 0C      BEQ $D840
D834   8A         TXA
D835   F0 05      BEQ $D83C
D837   A9 30      LDA #$30
D839   4C C8 C1   JMP $C1C8
D83C   88         DEY
D83D   F0 01      BEQ $D840
D83F   88         DEY
D840   8C 7A 02   STY $027A
D843   A9 8D      LDA #$8D
D845   20 68 C2   JSR $C268
D848   E8         INX
D849   8E 78 02   STX $0278
D84C   20 12 C3   JSR $C312
D84F   20 CA C3   JSR $C3CA
D852   20 9D C4   JSR $C49D
D855   A2 00      LDX #$00
D857   8E 58 02   STX $0258
D85A   8E 97 02   STX $0297
D85D   8E 4A 02   STX $024A
D860   E8         INX
D861   EC 77 02   CPX $0277
D864   B0 10      BCS $D876
D866   20 09 DA   JSR $DA09
D869   E8         INX
D86A   EC 77 02   CPX $0277
D86D   B0 07      BCS $D876
D86F   C0 04      CPY #$04
D871   F0 3E      BEQ $D8B1
D873   20 09 DA   JSR $DA09
D876   AE 4C 02   LDX $024C
D879   86 83      STX $83
D87B   E0 02      CPX #$02
D87D   B0 12      BCS $D891
D87F   8E 97 02   STX $0297
D882   A9 40      LDA #$40
D884   8D F9 02   STA $02F9
D887   AD 4A 02   LDA $024A
D88A   D0 1B      BNE $D8A7
D88C   A9 02      LDA #$02
D88E   8D 4A 02   STA $024A
D891   AD 4A 02   LDA $024A
D894   D0 11      BNE $D8A7
D896   A5 E7      LDA $E7
D898   29 07      AND #$07
D89A   8D 4A 02   STA $024A
D89D   AD 80 02   LDA $0280
D8A0   D0 05      BNE $D8A7
D8A2   A9 01      LDA #$01
D8A4   8D 4A 02   STA $024A
D8A7   AD 97 02   LDA $0297
D8AA   C9 01      CMP #$01
D8AC   F0 18      BEQ $D8C6
D8AE   4C 40 D9   JMP $D940
D8B1   BC 7A 02   LDY $027A,X
D8B4   B9 00 02   LDA $0200,Y
D8B7   8D 58 02   STA $0258
D8BA   AD 80 02   LDA $0280
D8BD   D0 B7      BNE $D876
D8BF   A9 01      LDA #$01
D8C1   8D 97 02   STA $0297
D8C4   D0 B0      BNE $D876
D8C6   A5 E7      LDA $E7
D8C8   29 80      AND #$80
D8CA   AA         TAX
D8CB   D0 14      BNE $D8E1
D8CD   A9 20      LDA #$20
D8CF   24 E7      BIT $E7
D8D1   F0 06      BEQ $D8D9
D8D3   20 B6 C8   JSR $C8B6
D8D6   4C E3 D9   JMP $D9E3
D8D9   AD 80 02   LDA $0280
D8DC   D0 03      BNE $D8E1
D8DE   4C E3 D9   JMP $D9E3
D8E1   AD 00 02   LDA $0200
D8E4   C9 40      CMP #$40
D8E6   F0 0D      BEQ $D8F5
D8E8   8A         TXA
D8E9   D0 05      BNE $D8F0
D8EB   A9 63      LDA #$63
D8ED   4C C8 C1   JMP $C1C8
D8F0   A9 33      LDA #$33
D8F2   4C C8 C1   JMP $C1C8


; open a file with overwriting

D8F5   A5 E7      LDA $E7
D8F7   29 07      AND #$07
D8F9   CD 4A 02   CMP $024A
D8FC   D0 67      BNE $D965
D8FE   C9 04      CMP #$04
D900   F0 63      BEQ $D965
D902   20 DA DC   JSR $DCDA
D905   A5 82      LDA $82
D907   8D 70 02   STA $0270
D90A   A9 11      LDA #$11
D90C   85 83      STA $83
D90E   20 EB D0   JSR $D0EB
D911   AD 94 02   LDA $0294
D914   20 C8 D4   JSR $D4C8
D917   A0 00      LDY #$00
D919   B1 94      LDA ($94),Y
D91B   09 20      ORA #$20
D91D   91 94      STA ($94),Y
D91F   A0 1A      LDY #$1A
D921   A5 80      LDA $80
D923   91 94      STA ($94),Y
D925   C8         INY
D926   A5 81      LDA $81
D928   91 94      STA ($94),Y
D92A   AE 70 02   LDX $0270
D92D   A5 D8      LDA $D8
D92F   9D 60 02   STA $0260,X
D932   A5 DD      LDA $DD
D934   9D 66 02   STA $0266,X
D937   20 3B DE   JSR $DE3B
D93A   20 64 D4   JSR $D464
D93D   4C EF D9   JMP $D9EF

D940   AD 80 02   LDA $0280

D943   D0 05      BNE $D94A
D945   A9 62      LDA #$62
D947   4C C8 C1   JMP $C1C8
D94A   AD 97 02   LDA $0297
D94D   C9 03      CMP #$03
D94F   F0 0B      BEQ $D95C
D951   A9 20      LDA #$20
D953   24 E7      BIT $E7
D955   F0 05      BEQ $D95C
D957   A9 60      LDA #$60
D959   4C C8 C1   JMP $C1C8
D95C   A5 E7      LDA $E7
D95E   29 07      AND #$07
D960   CD 4A 02   CMP $024A
D963   F0 05      BEQ $D96A
D965   A9 64      LDA #$64
D967   4C C8 C1   JMP $C1C8
D96A   A0 00      LDY #$00
D96C   8C 79 02   STY $0279
D96F   AE 97 02   LDX $0297
D972   E0 02      CPX #$02
D974   D0 1A      BNE $D990
D976   C9 04      CMP #$04
D978   F0 EB      BEQ $D965
D97A   B1 94      LDA ($94),Y
D97C   29 4F      AND #$4F
D97E   91 94      STA ($94),Y
D980   A5 83      LDA $83
D982   48         PHA
D983   A9 11      LDA #$11
D985   85 83      STA $83
D987   20 3B DE   JSR $DE3B
D98A   20 64 D4   JSR $D464
D98D   68         PLA
D98E   85 83      STA $83
D990   20 A0 D9   JSR $D9A0
D993   AD 97 02   LDA $0297
D996   C9 02      CMP #$02
D998   D0 55      BNE $D9EF
D99A   20 2A DA   JSR $DA2A
D99D   4C 94 C1   JMP $C194


; open file for reading

D9A0   A0 13      LDY #$13
D9A2   B1 94      LDA ($94),Y
D9A4   8D 59 02   STA $0259
D9A7   C8         INY
D9A8   B1 94      LDA ($94),Y
D9AA   8D 5A 02   STA $025A
D9AD   C8         INY
D9AE   B1 94      LDA ($94),Y
D9B0   AE 58 02   LDX $0258
D9B3   8D 58 02   STA $0258
D9B6   8A         TXA
D9B7   F0 0A      BEQ $D9C3
D9B9   CD 58 02   CMP $0258
D9BC   F0 05      BEQ $D9C3
D9BE   A9 50      LDA #$50
D9C0   20 C8 C1   JSR $C1C8
D9C3   AE 79 02   LDX $0279
D9C6   BD 80 02   LDA $0280,X
D9C9   85 80      STA $80
D9CB   BD 85 02   LDA $0285,X
D9CE   85 81      STA $81
D9D0   20 46 DC   JSR $DC46
D9D3   A4 82      LDY $82
D9D5   AE 79 02   LDX $0279
D9D8   B5 D8      LDA $D8,X
D9DA   99 60 02   STA $0260,Y
D9DD   B5 DD      LDA $DD,X
D9DF   99 66 02   STA $0266,Y
D9E2   60         RTS


; open file for writing

D9E3   A5 E2      LDA $E2
D9E5   29 01      AND #$01
D9E7   85 7F      STA $7F
D9E9   20 DA DC   JSR $DCDA
D9EC   20 E4 D6   JSR $D6E4

D9EF   A5 83      LDA $83

D9F1   C9 02      CMP #$02
D9F3   B0 11      BCS $DA06
D9F5   20 3E DE   JSR $DE3E
D9F8   A5 80      LDA $80
D9FA   85 7E      STA $7E
D9FC   A5 7F      LDA $7F
D9FE   8D 6E 02   STA $026E
DA01   A5 81      LDA $81
DA03   8D 6F 02   STA $026F
DA06   4C 99 C1   JMP $C199


; check file type and control mode

DA09   BC 7A 02   LDY $027A,X
DA0C   B9 00 02   LDA $0200,Y
DA0F   A0 04      LDY #$04
DA11   88         DEY
DA12   30 08      BMI $DA1C
DA14   D9 B2 FE   CMP $FEB2,Y
DA17   D0 F8      BNE $DA11
DA19   8C 97 02   STY $0297
DA1C   A0 05      LDY #$05
DA1E   88         DEY
DA1F   30 08      BMI $DA29
DA21   D9 B6 FE   CMP $FEB6,Y
DA24   D0 F8      BNE $DA1E
DA26   8C 4A 02   STY $024A
DA29   60         RTS


; preparation for append

DA2A   20 39 CA   JSR $CA39
DA2D   A9 80      LDA #$80
DA2F   20 A6 DD   JSR $DDA6
DA32   F0 F6      BEQ $DA2A
DA34   20 95 DE   JSR $DE95
DA37   A6 81      LDX $81
DA39   E8         INX
DA3A   8A         TXA
DA3B   D0 05      BNE $DA42
DA3D   20 A3 D1   JSR $D1A3
DA40   A9 02      LDA #$02
DA42   20 C8 D4   JSR $D4C8
DA45   A6 82      LDX $82
DA47   A9 01      LDA #$01
DA49   95 F2      STA $F2,X
DA4B   A9 80      LDA #$80
DA4D   05 82      ORA $82
DA4F   A6 83      LDX $83
DA51   9D 2B 02   STA $022B,X
DA54   60         RTS


; open directory

DA55   A9 0C      LDA #$0C
DA57   8D 2A 02   STA $022A
DA5A   A9 00      LDA #$00
DA5C   AE 74 02   LDX $0274
DA5F   CA         DEX
DA60   F0 0B      BEQ $DA6D
DA62   CA         DEX
DA63   D0 21      BNE $DA86
DA65   AD 01 02   LDA $0201
DA68   20 BD C3   JSR $C3BD
DA6B   30 19      BMI $DA86
DA6D   85 E2      STA $E2
DA6F   EE 77 02   INC $0277
DA72   EE 78 02   INC $0278
DA75   EE 7A 02   INC $027A
DA78   A9 80      LDA #$80
DA7A   85 E7      STA $E7
DA7C   A9 2A      LDA #$2A   ; asterix
DA7E   8D 00 02   STA $0200
DA81   8D 01 02   STA $0201
DA84   D0 18      BNE $DA9E
DA86   20 E5 C1   JSR $C1E5
DA89   D0 05      BNE $DA90
DA8B   20 DC C2   JSR $C2DC
DA8E   A0 03      LDY #$03
DA90   88         DEY
DA91   88         DEY
DA92   8C 7A 02   STY $027A
DA95   20 00 C2   JSR $C200
DA98   20 98 C3   JSR $C398
DA9B   20 20 C3   JSR $C320
DA9E   20 CA C3   JSR $C3CA
DAA1   20 B7 C7   JSR $C7B7
DAA4   20 9D C4   JSR $C49D
DAA7   20 9E EC   JSR $EC9E
DAAA   20 37 D1   JSR $D137
DAAD   A6 82      LDX $82
DAAF   9D 3E 02   STA $023E,X
DAB2   A5 7F      LDA $7F
DAB4   8D 8E 02   STA $028E
DAB7   09 04      ORA #$04
DAB9   95 EC      STA $EC,X
DABB   A9 00      LDA #$00
DABD   85 A3      STA $A3
DABF   60         RTS


; close routine

DAC0   A9 00      LDA #$00
DAC2   8D F9 02   STA $02F9
DAC5   A5 83      LDA $83
DAC7   D0 0B      BNE $DAD4
DAC9   A9 00      LDA #$00
DACB   8D 54 02   STA $0254
DACE   20 27 D2   JSR $D227
DAD1   4C DA D4   JMP $D4DA
DAD4   C9 0F      CMP #$0F
DAD6   F0 14      BEQ $DAEC
DAD8   20 02 DB   JSR $DB02
DADB   A5 83      LDA $83
DADD   C9 02      CMP #$02
DADF   90 F0      BCC $DAD1
DAE1   AD 6C 02   LDA $026C
DAE4   D0 03      BNE $DAE9
DAE6   4C 94 C1   JMP $C194
DAE9   4C AD C1   JMP $C1AD
DAEC   A9 0E      LDA #$0E
DAEE   85 83      STA $83
DAF0   20 02 DB   JSR $DB02
DAF3   C6 83      DEC $83
DAF5   10 F9      BPL $DAF0
DAF7   AD 6C 02   LDA $026C
DAFA   D0 03      BNE $DAFF
DAFC   4C 94 C1   JMP $C194
DAFF   4C AD C1   JMP $C1AD


; close file

DB02   A6 83      LDX $83
DB04   BD 2B 02   LDA $022B,X
DB07   C9 FF      CMP #$FF
DB09   D0 01      BNE $DB0C
DB0B   60         RTS
DB0C   29 0F      AND #$0F
DB0E   85 82      STA $82
DB10   20 25 D1   JSR $D125
DB13   C9 07      CMP #$07
DB15   F0 0F      BEQ $DB26
DB17   C9 04      CMP #$04
DB19   F0 11      BEQ $DB2C
DB1B   20 07 D1   JSR $D107
DB1E   B0 09      BCS $DB29
DB20   20 62 DB   JSR $DB62
DB23   20 A5 DB   JSR $DBA5
DB26   20 F4 EE   JSR $EEF4
DB29   4C 27 D2   JMP $D227
DB2C   20 F1 DD   JSR $DDF1
DB2F   20 1E CF   JSR $CF1E
DB32   20 CB E1   JSR $E1CB
DB35   A6 D5      LDX $D5
DB37   86 73      STX $73
DB39   E6 73      INC $73
DB3B   A9 00      LDA #$00
DB3D   85 70      STA $70
DB3F   85 71      STA $71
DB41   A5 D6      LDA $D6
DB43   38         SEC
DB44   E9 0E      SBC #$0E
DB46   85 72      STA $72
DB48   20 51 DF   JSR $DF51
DB4B   A6 82      LDX $82
DB4D   A5 70      LDA $70
DB4F   95 B5      STA $B5,X
DB51   A5 71      LDA $71
DB53   95 BB      STA $BB,X
DB55   A9 40      LDA #$40
DB57   20 A6 DD   JSR $DDA6
DB5A   F0 03      BEQ $DB5F
DB5C   20 A5 DB   JSR $DBA5
DB5F   4C 27 D2   JMP $D227


; write last block

DB62   A6 82      LDX $82
DB64   B5 B5      LDA $B5,X
DB66   15 BB      ORA $BB,X
DB68   D0 0C      BNE $DB76
DB6A   20 E8 D4   JSR $D4E8
DB6D   C9 02      CMP #$02
DB6F   D0 05      BNE $DB76
DB71   A9 0D      LDA #$0D
DB73   20 F1 CF   JSR $CFF1
DB76   20 E8 D4   JSR $D4E8
DB79   C9 02      CMP #$02
DB7B   D0 0F      BNE $DB8C
DB7D   20 1E CF   JSR $CF1E
DB80   A6 82      LDX $82
DB82   B5 B5      LDA $B5,X
DB84   D0 02      BNE $DB88
DB86   D6 BB      DEC $BB,X
DB88   D6 B5      DEC $B5,X
DB8A   A9 00      LDA #$00
DB8C   38         SEC
DB8D   E9 01      SBC #$01
DB8F   48         PHA
DB90   A9 00      LDA #$00
DB92   20 C8 D4   JSR $D4C8
DB95   20 F1 CF   JSR $CFF1
DB98   68         PLA
DB99   20 F1 CF   JSR $CFF1
DB9C   20 C7 D0   JSR $D0C7
DB9F   20 99 D5   JSR $D599
DBA2   4C 1E CF   JMP $CF1E


; directory entry

DBA5   A6 82      LDX $82
DBA7   8E 70 02   STX $0270
DBAA   A5 83      LDA $83
DBAC   48         PHA
DBAD   BD 60 02   LDA $0260,X
DBB0   85 81      STA $81
DBB2   BD 66 02   LDA $0266,X
DBB5   8D 94 02   STA $0294
DBB8   B5 EC      LDA $EC,X
DBBA   29 01      AND #$01
DBBC   85 7F      STA $7F
DBBE   AD 85 FE   LDA $FE85
DBC1   85 80      STA $80
DBC3   20 93 DF   JSR $DF93
DBC6   48         PHA
DBC7   85 F9      STA $F9
DBC9   20 60 D4   JSR $D460
DBCC   A0 00      LDY #$00
DBCE   BD E0 FE   LDA $FEE0,X
DBD1   85 87      STA $87
DBD3   AD 94 02   LDA $0294
DBD6   85 86      STA $86
DBD8   B1 86      LDA ($86),Y
DBDA   29 20      AND #$20
DBDC   F0 43      BEQ $DC21
DBDE   20 25 D1   JSR $D125
DBE1   C9 04      CMP #$04
DBE3   F0 44      BEQ $DC29
DBE5   B1 86      LDA ($86),Y
DBE7   29 8F      AND #$8F
DBE9   91 86      STA ($86),Y
DBEB   C8         INY
DBEC   B1 86      LDA ($86),Y
DBEE   85 80      STA $80
DBF0   84 71      STY $71
DBF2   A0 1B      LDY #$1B
DBF4   B1 86      LDA ($86),Y
DBF6   48         PHA
DBF7   88         DEY
DBF8   B1 86      LDA ($86),Y
DBFA   D0 0A      BNE $DC06
DBFC   85 80      STA $80
DBFE   68         PLA
DBFF   85 81      STA $81
DC01   A9 67      LDA #$67
DC03   20 45 E6   JSR $E645
DC06   48         PHA
DC07   A9 00      LDA #$00
DC09   91 86      STA ($86),Y
DC0B   C8         INY
DC0C   91 86      STA ($86),Y
DC0E   68         PLA
DC0F   A4 71      LDY $71
DC11   91 86      STA ($86),Y
DC13   C8         INY
DC14   B1 86      LDA ($86),Y
DC16   85 81      STA $81
DC18   68         PLA
DC19   91 86      STA ($86),Y
DC1B   20 7D C8   JSR $C87D
DC1E   4C 29 DC   JMP $DC29
DC21   B1 86      LDA ($86),Y
DC23   29 0F      AND #$0F
DC25   09 80      ORA #$80
DC27   91 86      STA ($86),Y

DC29   AE 70 02   LDX $0270

DC2C   A0 1C      LDY #$1C
DC2E   B5 B5      LDA $B5,X
DC30   91 86      STA ($86),Y
DC32   C8         INY
DC33   B5 BB      LDA $BB,X
DC35   91 86      STA ($86),Y
DC37   68         PLA
DC38   AA         TAX
DC39   A9 90      LDA #$90
DC3B   05 7F      ORA $7F
DC3D   20 90 D5   JSR $D590
DC40   68         PLA
DC41   85 83      STA $83
DC43   4C 07 D1   JMP $D107


; read block, allocate buffer

DC46   A9 01      LDA #$01
DC48   20 E2 D1   JSR $D1E2
DC4B   20 B6 DC   JSR $DCB6
DC4E   AD 4A 02   LDA $024A
DC51   48         PHA
DC52   0A         ASL
DC53   05 7F      ORA $7F
DC55   95 EC      STA $EC,X
DC57   20 9B D0   JSR $D09B
DC5A   A6 82      LDX $82
DC5C   A5 80      LDA $80
DC5E   D0 05      BNE $DC65
DC60   A5 81      LDA $81
DC62   9D 44 02   STA $0244,X
DC65   68         PLA
DC66   C9 04      CMP #$04
DC68   D0 3F      BNE $DCA9
DC6A   A4 83      LDY $83
DC6C   B9 2B 02   LDA $022B,Y
DC6F   09 40      ORA #$40
DC71   99 2B 02   STA $022B,Y
DC74   AD 58 02   LDA $0258
DC77   95 C7      STA $C7,X
DC79   20 8E D2   JSR $D28E
DC7C   10 03      BPL $DC81
DC7E   4C 0F D2   JMP $D20F
DC81   A6 82      LDX $82
DC83   95 CD      STA $CD,X
DC85   AC 59 02   LDY $0259
DC88   84 80      STY $80
DC8A   AC 5A 02   LDY $025A
DC8D   84 81      STY $81
DC8F   20 D3 D6   JSR $D6D3
DC92   20 73 DE   JSR $DE73
DC95   20 99 D5   JSR $D599

DC98   A6 82      LDX $82

DC9A   A9 02      LDA #$02
DC9C   95 C1      STA $C1,X
DC9E   A9 00      LDA #$00
DCA0   20 C8 D4   JSR $D4C8
DCA3   20 53 E1   JSR $E153
DCA6   4C 3E DE   JMP $DE3E
DCA9   20 56 D1   JSR $D156
DCAC   A6 82      LDX $82
DCAE   9D 3E 02   STA $023E,X
DCB1   A9 88      LDA #$88
DCB3   95 F2      STA $F2,X
DCB5   60         RTS


; reset pointer

DCB6   A6 82      LDX $82
DCB8   B5 A7      LDA $A7,X
DCBA   0A         ASL
DCBB   A8         TAY
DCBC   A9 02      LDA #$02
DCBE   99 99 00   STA $0099,Y
DCC1   B5 AE      LDA $AE,X
DCC3   09 80      ORA #$80
DCC5   95 AE      STA $AE,X
DCC7   0A         ASL
DCC8   A8         TAY
DCC9   A9 02      LDA #$02
DCCB   99 99 00   STA $0099,Y
DCCE   A9 00      LDA #$00
DCD0   95 B5      STA $B5,X
DCD2   95 BB      STA $BB,X
DCD4   A9 00      LDA #$00
DCD6   9D 44 02   STA $0244,X
DCD9   60         RTS


; construct a new block

DCDA   20 A9 F1   JSR $F1A9
DCDD   A9 01      LDA #$01
DCDF   20 DF D1   JSR $D1DF
DCE2   20 D0 D6   JSR $D6D0
DCE5   20 B6 DC   JSR $DCB6
DCE8   A6 82      LDX $82
DCEA   AD 4A 02   LDA $024A
DCED   48         PHA
DCEE   0A         ASL
DCEF   05 7F      ORA $7F
DCF1   95 EC      STA $EC,X
DCF3   68         PLA
DCF4   C9 04      CMP #$04
DCF6   F0 05      BEQ $DCFD
DCF8   A9 01      LDA #$01
DCFA   95 F2      STA $F2,X
DCFC   60         RTS
DCFD   A4 83      LDY $83
DCFF   B9 2B 02   LDA $022B,Y
DD02   29 3F      AND #$3F
DD04   09 40      ORA #$40
DD06   99 2B 02   STA $022B,Y
DD09   AD 58 02   LDA $0258
DD0C   95 C7      STA $C7,X
DD0E   20 8E D2   JSR $D28E
DD11   10 03      BPL $DD16
DD13   4C 0F D2   JMP $D20F
DD16   A6 82      LDX $82
DD18   95 CD      STA $CD,X
DD1A   20 C1 DE   JSR $DEC1
DD1D   20 1E F1   JSR $F11E
DD20   A5 80      LDA $80
DD22   8D 59 02   STA $0259
DD25   A5 81      LDA $81
DD27   8D 5A 02   STA $025A
DD2A   A6 82      LDX $82
DD2C   B5 CD      LDA $CD,X
DD2E   20 D3 D6   JSR $D6D3
DD31   A9 00      LDA #$00
DD33   20 E9 DE   JSR $DEE9
DD36   A9 00      LDA #$00
DD38   20 8D DD   JSR $DD8D
DD3B   A9 11      LDA #$11
DD3D   20 8D DD   JSR $DD8D
DD40   A9 00      LDA #$00
DD42   20 8D DD   JSR $DD8D
DD45   AD 58 02   LDA $0258
DD48   20 8D DD   JSR $DD8D
DD4B   A5 80      LDA $80
DD4D   20 8D DD   JSR $DD8D
DD50   A5 81      LDA $81
DD52   20 8D DD   JSR $DD8D
DD55   A9 10      LDA #$10
DD57   20 E9 DE   JSR $DEE9
DD5A   20 3E DE   JSR $DE3E
DD5D   A5 80      LDA $80
DD5F   20 8D DD   JSR $DD8D
DD62   A5 81      LDA $81
DD64   20 8D DD   JSR $DD8D
DD67   20 6C DE   JSR $DE6C
DD6A   20 99 D5   JSR $D599
DD6D   A9 02      LDA #$02
DD6F   20 C8 D4   JSR $D4C8
DD72   A6 82      LDX $82
DD74   38         SEC
DD75   A9 00      LDA #$00
DD77   F5 C7      SBC $C7,X
DD79   95 C1      STA $C1,X
DD7B   20 E2 E2   JSR $E2E2
DD7E   20 19 DE   JSR $DE19
DD81   20 5E DE   JSR $DE5E
DD84   20 99 D5   JSR $D599
DD87   20 F4 EE   JSR $EEF4
DD8A   4C 98 DC   JMP $DC98


; write byte in side-sector block

DD8D   48         PHA
DD8E   A6 82      LDX $82
DD90   B5 CD      LDA $CD,X
DD92   4C FD CF   JMP $CFFD


; manipulate flags

DD95   90 06      BCC $DD9D

DD97   A6 82      LDX $82

DD99   15 EC      ORA $EC,X
DD9B   D0 06      BNE $DDA3

DD9D   A6 82      LDX $82

DD9F   49 FF      EOR #$FF
DDA1   35 EC      AND $EC,X
DDA3   95 EC      STA $EC,X
DDA5   60         RTS

DDA6   A6 82      LDX $82

DDA8   35 EC      AND $EC,X
DDAA   60         RTS


; verify command code for writing

DDAB   20 93 DF   JSR $DF93
DDAE   AA         TAX
DDAF   BD 5B 02   LDA $025B,X
DDB2   29 F0      AND #$F0
DDB4   C9 90      CMP #$90
DDB6   60         RTS


;

DDB7   A2 00      LDX #$00
DDB9   86 71      STX $71
DDBB   BD 2B 02   LDA $022B,X
DDBE   C9 FF      CMP #$FF
DDC0   D0 08      BNE $DDCA
DDC2   A6 71      LDX $71
DDC4   E8         INX
DDC5   E0 10      CPX #$10
DDC7   90 F0      BCC $DDB9
DDC9   60         RTS
DDCA   86 71      STX $71
DDCC   29 3F      AND #$3F
DDCE   A8         TAY
DDCF   B9 EC 00   LDA $00EC,Y
DDD2   29 01      AND #$01
DDD4   85 70      STA $70
DDD6   AE 53 02   LDX $0253
DDD9   B5 E2      LDA $E2,X
DDDB   29 01      AND #$01
DDDD   C5 70      CMP $70
DDDF   D0 E1      BNE $DDC2
DDE1   B9 60 02   LDA $0260,Y
DDE4   D5 D8      CMP $D8,X
DDE6   D0 DA      BNE $DDC2
DDE8   B9 66 02   LDA $0266,Y
DDEB   D5 DD      CMP $DD,X
DDED   D0 D3      BNE $DDC2
DDEF   18         CLC
DDF0   60         RTS


; write a block of a REL file

DDF1   20 9E DF   JSR $DF9E
DDF4   50 06      BVC $DDFC
DDF6   20 5E DE   JSR $DE5E
DDF9   20 99 D5   JSR $D599
DDFC   60         RTS


; write bytes for following track

DDFD   20 2B DE   JSR $DE2B
DE00   A5 80      LDA $80
DE02   91 94      STA ($94),Y
DE04   C8         INY
DE05   A5 81      LDA $81
DE07   91 94      STA ($94),Y
DE09   4C 05 E1   JMP $E105


; get following track and sector numbers

DE0C   20 2B DE   JSR $DE2B
DE0F   B1 94      LDA ($94),Y
DE11   85 80      STA $80
DE13   C8         INY
DE14   B1 94      LDA ($94),Y
DE16   85 81      STA $81
DE18   60         RTS


; following track for last block

DE19   20 2B DE   JSR $DE2B
DE1C   A9 00      LDA #$00
DE1E   91 94      STA ($94),Y
DE20   C8         INY
DE21   A6 82      LDX $82
DE23   B5 C1      LDA $C1,X
DE25   AA         TAX
DE26   CA         DEX
DE27   8A         TXA
DE28   91 94      STA ($94),Y
DE2A   60         RTS


; buffer pointer to zero

DE2B   20 93 DF   JSR $DF93
DE2E   0A         ASL
DE2F   AA         TAX
DE30   B5 9A      LDA $9A,X
DE32   85 95      STA $95
DE34   A9 00      LDA #$00
DE36   85 94      STA $94
DE38   A0 00      LDY #$00
DE3A   60         RTS


; get track and sector

DE3B   20 EB D0   JSR $D0EB

DE3E   20 93 DF   JSR $DF93

DE41   85 F9      STA $F9
DE43   0A         ASL
DE44   A8         TAY
DE45   B9 06 00   LDA $0006,Y
DE48   85 80      STA $80
DE4A   B9 07 00   LDA $0007,Y
DE4D   85 81      STA $81
DE4F   60         RTS


;

DE50   A9 90      LDA #$90
DE52   8D 4D 02   STA $024D
DE55   D0 28      BNE $DE7F

DE57   A9 80      LDA #$80

DE59   8D 4D 02   STA $024D
DE5C   D0 21      BNE $DE7F

DE5E   A9 90      LDA #$90

DE60   8D 4D 02   STA $024D
DE63   D0 26      BNE $DE8B
DE65   A9 80      LDA #$80
DE67   8D 4D 02   STA $024D
DE6A   D0 1F      BNE $DE8B

DE6C   A9 90      LDA #$90

DE6E   8D 4D 02   STA $024D
DE71   D0 02      BNE $DE75

DE73   A9 80      LDA #$80

DE75   8D 4D 02   STA $024D
DE78   A6 82      LDX $82
DE7A   B5 CD      LDA $CD,X
DE7C   AA         TAX
DE7D   10 13      BPL $DE92
DE7F   20 D0 D6   JSR $D6D0
DE82   20 93 DF   JSR $DF93
DE85   AA         TAX
DE86   A5 7F      LDA $7F
DE88   9D 5B 02   STA $025B,X
DE8B   20 15 E1   JSR $E115
DE8E   20 93 DF   JSR $DF93
DE91   AA         TAX
DE92   4C 06 D5   JMP $D506


; get following track and sector from buffer

DE95   A9 00      LDA #$00
DE97   20 C8 D4   JSR $D4C8
DE9A   20 37 D1   JSR $D137
DE9D   85 80      STA $80
DE9F   20 37 D1   JSR $D137
DEA2   85 81      STA $81
DEA4   60         RTS


; coppy buffer contents

DEA5   48         PHA
DEA6   A9 00      LDA #$00
DEA8   85 6F      STA $6F
DEAA   85 71      STA $71
DEAC   B9 E0 FE   LDA $FEE0,Y
DEAF   85 70      STA $70
DEB1   BD E0 FE   LDA $FEE0,X
DEB4   85 72      STA $72
DEB6   68         PLA
DEB7   A8         TAY
DEB8   88         DEY
DEB9   B1 6F      LDA ($6F),Y
DEBB   91 71      STA ($71),Y
DEBD   88         DEY
DEBE   10 F9      BPL $DEB9
DEC0   60         RTS


; erase buffer Y

DEC1   A8         TAY
DEC2   B9 E0 FE   LDA $FEE0,Y
DEC5   85 70      STA $70
DEC7   A9 00      LDA #$00
DEC9   85 6F      STA $6F
DECB   A8         TAY
DECC   91 6F      STA ($6F),Y
DECE   C8         INY
DECF   D0 FB      BNE $DECC
DED1   60         RTS


; get side-sector number

DED2   A9 00      LDA #$00
DED4   20 DC DE   JSR $DEDC
DED7   A0 02      LDY #$02
DED9   B1 94      LDA ($94),Y
DEDB   60         RTS


; set buffer pointer to side-sector

DEDC   85 94      STA $94
DEDE   A6 82      LDX $82
DEE0   B5 CD      LDA $CD,X
DEE2   AA         TAX
DEE3   BD E0 FE   LDA $FEE0,X
DEE6   85 95      STA $95
DEE8   60         RTS


; buffer pointer for side-sector

DEE9   48         PHA
DEEA   20 DC DE   JSR $DEDC
DEED   48         PHA
DEEE   8A         TXA
DEEF   0A         ASL
DEF0   AA         TAX
DEF1   68         PLA
DEF2   95 9A      STA $9A,X
DEF4   68         PLA
DEF5   95 99      STA $99,X
DEF7   60         RTS


; get side sector and buffer pointer

DEF8   20 66 DF   JSR $DF66
DEFB   30 0E      BMI $DF0B
DEFD   50 13      BVC $DF12
DEFF   A6 82      LDX $82
DF01   B5 CD      LDA $CD,X
DF03   20 1B DF   JSR $DF1B
DF06   20 66 DF   JSR $DF66
DF09   10 07      BPL $DF12
DF0B   20 CB E1   JSR $E1CB
DF0E   2C CE FE   BIT $FECE
DF11   60         RTS
DF12   A5 D6      LDA $D6
DF14   20 E9 DE   JSR $DEE9
DF17   2C CD FE   BIT $FECD
DF1A   60         RTS


; read side-sector

DF1B   85 F9      STA $F9
DF1D   A9 80      LDA #$80
DF1F   D0 04      BNE $DF25


; write side-sector

DF21   85 F9      STA $F9
DF23   A9 90      LDA #$90
DF25   48         PHA
DF26   B5 EC      LDA $EC,X
DF28   29 01      AND #$01
DF2A   85 7F      STA $7F
DF2C   68         PLA
DF2D   05 7F      ORA $7F
DF2F   8D 4D 02   STA $024D
DF32   B1 94      LDA ($94),Y
DF34   85 80      STA $80
DF36   C8         INY
DF37   B1 94      LDA ($94),Y
DF39   85 81      STA $81
DF3B   A5 F9      LDA $F9
DF3D   20 D3 D6   JSR $D6D3
DF40   A6 F9      LDX $F9
DF42   4C 93 D5   JMP $D593


; set buffer pointer in side-sector

DF45   A6 82      LDX $82
DF47   B5 CD      LDA $CD,X
DF49   4C EB D4   JMP $D4EB


; calculate number of blocks in a REL file

DF4C   A9 78      LDA #$78
DF4E   20 5C DF   JSR $DF5C

DF51   CA         DEX

DF52   10 F8      BPL $DF4C
DF54   A5 72      LDA $72
DF56   4A         LSR
DF57   20 5C DF   JSR $DF5C
DF5A   A5 73      LDA $73

DF5C   18         CLC

DF5D   65 70      ADC $70
DF5F   85 70      STA $70
DF61   90 02      BCC $DF65
DF63   E6 71      INC $71
DF65   60         RTS


; verify side-sector in buffer

DF66   20 D2 DE   JSR $DED2
DF69   C5 D5      CMP $D5
DF6B   D0 0E      BNE $DF7B
DF6D   A4 D6      LDY $D6
DF6F   B1 94      LDA ($94),Y
DF71   F0 04      BEQ $DF77
DF73   2C CD FE   BIT $FECD
DF76   60         RTS
DF77   2C CF FE   BIT $FECF
DF7A   60         RTS
DF7B   A5 D5      LDA $D5
DF7D   C9 06      CMP #$06
DF7F   B0 0A      BCS $DF8B
DF81   0A         ASL
DF82   A8         TAY
DF83   A9 04      LDA #$04
DF85   85 94      STA $94
DF87   B1 94      LDA ($94),Y
DF89   D0 04      BNE $DF8F
DF8B   2C D0 FE   BIT $FED0
DF8E   60         RTS
DF8F   2C CE FE   BIT $FECE
DF92   60         RTS


; get buffer number

DF93   A6 82      LDX $82
DF95   B5 A7      LDA $A7,X
DF97   10 02      BPL $DF9B
DF99   B5 AE      LDA $AE,X
DF9B   29 BF      AND #$BF
DF9D   60         RTS

DF9E   A6 82      LDX $82

DFA0   8E 57 02   STX $0257
DFA3   B5 A7      LDA $A7,X
DFA5   10 09      BPL $DFB0
DFA7   8A         TXA
DFA8   18         CLC
DFA9   69 07      ADC #$07
DFAB   8D 57 02   STA $0257
DFAE   B5 AE      LDA $AE,X
DFB0   85 70      STA $70
DFB2   29 1F      AND #$1F
DFB4   24 70      BIT $70
DFB6   60         RTS

DFB7   A6 82      LDX $82

DFB9   B5 A7      LDA $A7,X
DFBB   30 02      BMI $DFBF
DFBD   B5 AE      LDA $AE,X
DFBF   C9 FF      CMP #$FF
DFC1   60         RTS

DFC2   A6 82      LDX $82

DFC4   09 80      ORA #$80
DFC6   B4 A7      LDY $A7,X
DFC8   10 03      BPL $DFCD
DFCA   95 A7      STA $A7,X
DFCC   60         RTS
DFCD   95 AE      STA $AE,X
DFCF   60         RTS


; get next record iin REL file

DFD0   A9 20      LDA #$20
DFD2   20 9D DD   JSR $DD9D
DFD5   A9 80      LDA #$80
DFD7   20 A6 DD   JSR $DDA6
DFDA   D0 41      BNE $E01D
DFDC   A6 82      LDX $82
DFDE   F6 B5      INC $B5,X
DFE0   D0 02      BNE $DFE4
DFE2   F6 BB      INC $BB,X
DFE4   A6 82      LDX $82
DFE6   B5 C1      LDA $C1,X
DFE8   F0 2E      BEQ $E018
DFEA   20 E8 D4   JSR $D4E8
DFED   A6 82      LDX $82
DFEF   D5 C1      CMP $C1,X
DFF1   90 03      BCC $DFF6
DFF3   20 3C E0   JSR $E03C
DFF6   A6 82      LDX $82
DFF8   B5 C1      LDA $C1,X
DFFA   20 C8 D4   JSR $D4C8
DFFD   A1 99      LDA ($99,X)
DFFF   85 85      STA $85
E001   A9 20      LDA #$20
E003   20 9D DD   JSR $DD9D
E006   20 04 E3   JSR $E304

E009   48         PHA

E00A   90 28      BCC $E034
E00C   A9 00      LDA #$00
E00E   20 F6 D4   JSR $D4F6
E011   D0 21      BNE $E034
E013   68         PLA
E014   C9 02      CMP #$02
E016   F0 12      BEQ $E02A
E018   A9 80      LDA #$80
E01A   20 97 DD   JSR $DD97
E01D   20 2F D1   JSR $D12F
E020   B5 99      LDA $99,X
E022   99 44 02   STA $0244,Y
E025   A9 0D      LDA #$0D
E027   85 85      STA $85
E029   60         RTS
E02A   20 35 E0   JSR $E035
E02D   A6 82      LDX $82
E02F   A9 00      LDA #$00
E031   95 C1      STA $C1,X
E033   60         RTS
E034   68         PLA

E035   A6 82      LDX $82

E037   95 C1      STA $C1,X
E039   4C 6E E1   JMP $E16E


; write block and read next block

E03C   20 D3 D1   JSR $D1D3
E03F   20 95 DE   JSR $DE95
E042   20 9E DF   JSR $DF9E
E045   50 16      BVC $E05D
E047   20 5E DE   JSR $DE5E
E04A   20 1E CF   JSR $CF1E
E04D   A9 02      LDA #$02
E04F   20 C8 D4   JSR $D4C8
E052   20 AB DD   JSR $DDAB
E055   D0 24      BNE $E07B
E057   20 57 DE   JSR $DE57
E05A   4C 99 D5   JMP $D599
E05D   20 1E CF   JSR $CF1E
E060   20 AB DD   JSR $DDAB
E063   D0 06      BNE $E06B
E065   20 57 DE   JSR $DE57
E068   20 99 D5   JSR $D599
E06B   20 95 DE   JSR $DE95
E06E   A5 80      LDA $80
E070   F0 09      BEQ $E07B
E072   20 1E CF   JSR $CF1E
E075   20 57 DE   JSR $DE57
E078   20 1E CF   JSR $CF1E
E07B   60         RTS


; write a byte in a record

E07C   20 05 E1   JSR $E105
E07F   20 93 DF   JSR $DF93
E082   0A         ASL
E083   AA         TAX
E084   A5 85      LDA $85
E086   81 99      STA ($99,X)
E088   B4 99      LDY $99,X
E08A   C8         INY
E08B   D0 09      BNE $E096
E08D   A4 82      LDY $82
E08F   B9 C1 00   LDA $00C1,Y
E092   F0 0A      BEQ $E09E
E094   A0 02      LDY #$02
E096   98         TYA
E097   A4 82      LDY $82
E099   D9 C1 00   CMP $00C1,Y
E09C   D0 05      BNE $E0A3
E09E   A9 20      LDA #$20
E0A0   4C 97 DD   JMP $DD97
E0A3   F6 99      INC $99,X
E0A5   D0 03      BNE $E0AA
E0A7   20 3C E0   JSR $E03C
E0AA   60         RTS


; write byte in REL file

E0AB   A9 A0      LDA #$A0
E0AD   20 A6 DD   JSR $DDA6
E0B0   D0 27      BNE $E0D9

E0B2   A5 85      LDA $85

E0B4   20 7C E0   JSR $E07C
E0B7   A5 F8      LDA $F8
E0B9   F0 0D      BEQ $E0C8
E0BB   60         RTS
E0BC   A9 20      LDA #$20
E0BE   20 A6 DD   JSR $DDA6
E0C1   F0 05      BEQ $E0C8
E0C3   A9 51      LDA #$51
E0C5   8D 6C 02   STA $026C
E0C8   20 F3 E0   JSR $E0F3
E0CB   20 53 E1   JSR $E153
E0CE   AD 6C 02   LDA $026C
E0D1   F0 03      BEQ $E0D6
E0D3   4C C8 C1   JMP $C1C8
E0D6   4C BC E6   JMP $E6BC
E0D9   29 80      AND #$80
E0DB   D0 05      BNE $E0E2
E0DD   A5 F8      LDA $F8
E0DF   F0 DB      BEQ $E0BC
E0E1   60         RTS
E0E2   A5 85      LDA $85
E0E4   48         PHA
E0E5   20 1C E3   JSR $E31C
E0E8   68         PLA
E0E9   85 85      STA $85
E0EB   A9 80      LDA #$80
E0ED   20 9D DD   JSR $DD9D
E0F0   4C B2 E0   JMP $E0B2


; fill record with 0s

E0F3   A9 20      LDA #$20
E0F5   20 A6 DD   JSR $DDA6
E0F8   D0 0A      BNE $E104
E0FA   A9 00      LDA #$00
E0FC   85 85      STA $85
E0FE   20 7C E0   JSR $E07C
E101   4C F3 E0   JMP $E0F3
E104   60         RTS


; write buffer number in table

E105   A9 40      LDA #$40
E107   20 97 DD   JSR $DD97
E10A   20 9E DF   JSR $DF9E
E10D   09 40      ORA #$40
E10F   AE 57 02   LDX $0257
E112   95 A7      STA $A7,X
E114   60         RTS

E115   20 9E DF   JSR $DF9E

E118   29 BF      AND #$BF
E11A   AE 57 02   LDX $0257
E11D   95 A7      STA $A7,X
E11F   60         RTS


; get byte from REL file

E120   A9 80      LDA #$80
E122   20 A6 DD   JSR $DDA6
E125   D0 37      BNE $E15E
E127   20 2F D1   JSR $D12F
E12A   B5 99      LDA $99,X
E12C   D9 44 02   CMP $0244,Y
E12F   F0 22      BEQ $E153
E131   F6 99      INC $99,X
E133   D0 06      BNE $E13B
E135   20 3C E0   JSR $E03C

E138   20 2F D1   JSR $D12F

E13B   A1 99      LDA ($99,X)

E13D   99 3E 02   STA $023E,Y

E140   A9 89      LDA #$89
E142   99 F2 00   STA $00F2,Y
E145   B5 99      LDA $99,X
E147   D9 44 02   CMP $0244,Y
E14A   F0 01      BEQ $E14D
E14C   60         RTS
E14D   A9 81      LDA #$81
E14F   99 F2 00   STA $00F2,Y
E152   60         RTS

E153   20 D0 DF   JSR $DFD0

E156   20 2F D1   JSR $D12F
E159   A5 85      LDA $85
E15B   4C 3D E1   JMP $E13D

E15E   A6 82      LDX $82

E160   A9 0D      LDA #$0D
E162   9D 3E 02   STA $023E,X
E165   A9 81      LDA #$81
E167   95 F2      STA $F2,X
E169   A9 50      LDA #$50
E16B   20 C8 C1   JSR $C1C8

E16E   A6 82      LDX $82

E170   B5 C1      LDA $C1,X
E172   85 87      STA $87
E174   C6 87      DEC $87
E176   C9 02      CMP #$02
E178   D0 04      BNE $E17E
E17A   A9 FF      LDA #$FF
E17C   85 87      STA $87
E17E   B5 C7      LDA $C7,X
E180   85 88      STA $88
E182   20 E8 D4   JSR $D4E8
E185   A6 82      LDX $82
E187   C5 87      CMP $87
E189   90 19      BCC $E1A4
E18B   F0 17      BEQ $E1A4
E18D   20 1E CF   JSR $CF1E
E190   20 B2 E1   JSR $E1B2
E193   90 08      BCC $E19D
E195   A6 82      LDX $82
E197   9D 44 02   STA $0244,X
E19A   4C 1E CF   JMP $CF1E
E19D   20 1E CF   JSR $CF1E
E1A0   A9 FF      LDA #$FF
E1A2   85 87      STA $87
E1A4   20 B2 E1   JSR $E1B2
E1A7   B0 03      BCS $E1AC
E1A9   20 E8 D4   JSR $D4E8
E1AC   A6 82      LDX $82
E1AE   9D 44 02   STA $0244,X
E1B1   60         RTS

E1B2   20 2B DE   JSR $DE2B

E1B5   A4 87      LDY $87
E1B7   B1 94      LDA ($94),Y
E1B9   D0 0D      BNE $E1C8
E1BB   88         DEY
E1BC   C0 02      CPY #$02
E1BE   90 04      BCC $E1C4
E1C0   C6 88      DEC $88
E1C2   D0 F3      BNE $E1B7
E1C4   C6 88      DEC $88
E1C6   18         CLC
E1C7   60         RTS
E1C8   98         TYA
E1C9   38         SEC
E1CA   60         RTS


; get last side-sector

E1CB   20 D2 DE   JSR $DED2
E1CE   85 D5      STA $D5
E1D0   A9 04      LDA #$04
E1D2   85 94      STA $94
E1D4   A0 0A      LDY #$0A
E1D6   D0 04      BNE $E1DC
E1D8   88         DEY
E1D9   88         DEY
E1DA   30 26      BMI $E202
E1DC   B1 94      LDA ($94),Y
E1DE   F0 F8      BEQ $E1D8
E1E0   98         TYA
E1E1   4A         LSR
E1E2   C5 D5      CMP $D5
E1E4   F0 09      BEQ $E1EF
E1E6   85 D5      STA $D5
E1E8   A6 82      LDX $82
E1EA   B5 CD      LDA $CD,X
E1EC   20 1B DF   JSR $DF1B
E1EF   A0 00      LDY #$00
E1F1   84 94      STY $94
E1F3   B1 94      LDA ($94),Y
E1F5   D0 0B      BNE $E202
E1F7   C8         INY
E1F8   B1 94      LDA ($94),Y
E1FA   A8         TAY
E1FB   88         DEY
E1FC   84 D6      STY $D6
E1FE   98         TYA
E1FF   4C E9 DE   JMP $DEE9

E202   A9 67      LDA #$67

E204   20 45 E6   JSR $E645


; P - Position command

E207   20 B3 C2   JSR $C2B3
E20A   AD 01 02   LDA $0201
E20D   85 83      STA $83
E20F   20 EB D0   JSR $D0EB
E212   90 05      BCC $E219
E214   A9 70      LDA #$70
E216   20 C8 C1   JSR $C1C8
E219   A9 A0      LDA #$A0
E21B   20 9D DD   JSR $DD9D
E21E   20 25 D1   JSR $D125
E221   F0 05      BEQ $E228
E223   A9 64      LDA #$64
E225   20 C8 C1   JSR $C1C8
E228   B5 EC      LDA $EC,X
E22A   29 01      AND #$01
E22C   85 7F      STA $7F
E22E   AD 02 02   LDA $0202
E231   95 B5      STA $B5,X
E233   AD 03 02   LDA $0203
E236   95 BB      STA $BB,X
E238   A6 82      LDX $82
E23A   A9 89      LDA #$89
E23C   95 F2      STA $F2,X
E23E   AD 04 02   LDA $0204
E241   F0 10      BEQ $E253
E243   38         SEC
E244   E9 01      SBC #$01
E246   F0 0B      BEQ $E253
E248   D5 C7      CMP $C7,X
E24A   90 07      BCC $E253
E24C   A9 51      LDA #$51
E24E   8D 6C 02   STA $026C
E251   A9 00      LDA #$00
E253   85 D4      STA $D4
E255   20 0E CE   JSR $CE0E
E258   20 F8 DE   JSR $DEF8
E25B   50 08      BVC $E265
E25D   A9 80      LDA #$80
E25F   20 97 DD   JSR $DD97
E262   4C 5E E1   JMP $E15E
E265   20 75 E2   JSR $E275
E268   A9 80      LDA #$80
E26A   20 A6 DD   JSR $DDA6
E26D   F0 03      BEQ $E272
E26F   4C 5E E1   JMP $E15E
E272   4C 94 C1   JMP $C194

E275   20 9C E2   JSR $E29C

E278   A5 D7      LDA $D7
E27A   20 C8 D4   JSR $D4C8
E27D   A6 82      LDX $82
E27F   B5 C7      LDA $C7,X
E281   38         SEC
E282   E5 D4      SBC $D4
E284   B0 03      BCS $E289
E286   4C 02 E2   JMP $E202
E289   18         CLC
E28A   65 D7      ADC $D7
E28C   90 03      BCC $E291
E28E   69 01      ADC #$01
E290   38         SEC
E291   20 09 E0   JSR $E009
E294   4C 38 E1   JMP $E138
E297   A9 51      LDA #$51
E299   20 C8 C1   JSR $C1C8

E29C   A5 94      LDA $94

E29E   85 89      STA $89
E2A0   A5 95      LDA $95
E2A2   85 8A      STA $8A
E2A4   20 D0 E2   JSR $E2D0
E2A7   D0 01      BNE $E2AA
E2A9   60         RTS
E2AA   20 F1 DD   JSR $DDF1
E2AD   20 0C DE   JSR $DE0C
E2B0   A5 80      LDA $80
E2B2   F0 0E      BEQ $E2C2
E2B4   20 D3 E2   JSR $E2D3
E2B7   D0 06      BNE $E2BF
E2B9   20 1E CF   JSR $CF1E
E2BC   4C DA D2   JMP $D2DA
E2BF   20 DA D2   JSR $D2DA
E2C2   A0 00      LDY #$00
E2C4   B1 89      LDA ($89),Y
E2C6   85 80      STA $80
E2C8   C8         INY
E2C9   B1 89      LDA ($89),Y
E2CB   85 81      STA $81
E2CD   4C AF D0   JMP $D0AF

E2D0   20 3E DE   JSR $DE3E


E2D3   A0 00      LDY #$00

E2D5   B1 89      LDA ($89),Y
E2D7   C5 80      CMP $80
E2D9   F0 01      BEQ $E2DC
E2DB   60         RTS
E2DC   C8         INY
E2DD   B1 89      LDA ($89),Y
E2DF   C5 81      CMP $81
E2E1   60         RTS


; divide data blocks into records

E2E2   20 2B DE   JSR $DE2B
E2E5   A0 02      LDY #$02
E2E7   A9 00      LDA #$00
E2E9   91 94      STA ($94),Y
E2EB   C8         INY
E2EC   D0 FB      BNE $E2E9
E2EE   20 04 E3   JSR $E304
E2F1   95 C1      STA $C1,X
E2F3   A8         TAY
E2F4   A9 FF      LDA #$FF
E2F6   91 94      STA ($94),Y
E2F8   20 04 E3   JSR $E304
E2FB   90 F4      BCC $E2F1
E2FD   D0 04      BNE $E303
E2FF   A9 00      LDA #$00
E301   95 C1      STA $C1,X
E303   60         RTS


; set pointer to next record

E304   A6 82      LDX $82
E306   B5 C1      LDA $C1,X
E308   38         SEC
E309   F0 0D      BEQ $E318
E30B   18         CLC
E30C   75 C7      ADC $C7,X
E30E   90 0B      BCC $E31B
E310   D0 06      BNE $E318
E312   A9 02      LDA #$02
E314   2C CC FE   BIT $FECC
E317   60         RTS
E318   69 01      ADC #$01
E31A   38         SEC
E31B   60         RTS


; expand side-sector

E31C   20 D3 D1   JSR $D1D3
E31F   20 CB E1   JSR $E1CB
E322   20 9C E2   JSR $E29C
E325   20 7B CF   JSR $CF7B
E328   A5 D6      LDA $D6
E32A   85 87      STA $87
E32C   A5 D5      LDA $D5
E32E   85 86      STA $86
E330   A9 00      LDA #$00
E332   85 88      STA $88
E334   A9 00      LDA #$00
E336   85 D4      STA $D4
E338   20 0E CE   JSR $CE0E

E33B   20 4D EF   JSR $EF4D

E33E   A4 82      LDY $82
E340   B6 C7      LDX $C7,Y
E342   CA         DEX
E343   8A         TXA
E344   18         CLC
E345   65 D7      ADC $D7
E347   90 0C      BCC $E355
E349   E6 D6      INC $D6
E34B   E6 D6      INC $D6
E34D   D0 06      BNE $E355
E34F   E6 D5      INC $D5
E351   A9 10      LDA #$10
E353   85 D6      STA $D6
E355   A5 87      LDA $87
E357   18         CLC
E358   69 02      ADC #$02
E35A   20 E9 DE   JSR $DEE9
E35D   A5 D5      LDA $D5
E35F   C9 06      CMP #$06
E361   90 05      BCC $E368
E363   A9 52      LDA #$52
E365   20 C8 C1   JSR $C1C8
E368   A5 D6      LDA $D6
E36A   38         SEC
E36B   E5 87      SBC $87
E36D   B0 03      BCS $E372
E36F   E9 0F      SBC #$0F
E371   18         CLC
E372   85 72      STA $72
E374   A5 D5      LDA $D5
E376   E5 86      SBC $86
E378   85 73      STA $73
E37A   A2 00      LDX #$00
E37C   86 70      STX $70
E37E   86 71      STX $71
E380   AA         TAX
E381   20 51 DF   JSR $DF51
E384   A5 71      LDA $71
E386   D0 07      BNE $E38F
E388   A6 70      LDX $70
E38A   CA         DEX
E38B   D0 02      BNE $E38F
E38D   E6 88      INC $88
E38F   CD 73 02   CMP $0273
E392   90 09      BCC $E39D
E394   D0 CD      BNE $E363
E396   AD 72 02   LDA $0272
E399   C5 70      CMP $70
E39B   90 C6      BCC $E363
E39D   A9 01      LDA #$01
E39F   20 F6 D4   JSR $D4F6
E3A2   18         CLC
E3A3   69 01      ADC #$01
E3A5   A6 82      LDX $82
E3A7   95 C1      STA $C1,X
E3A9   20 1E F1   JSR $F11E
E3AC   20 FD DD   JSR $DDFD
E3AF   A5 88      LDA $88
E3B1   D0 15      BNE $E3C8
E3B3   20 5E DE   JSR $DE5E
E3B6   20 1E CF   JSR $CF1E
E3B9   20 D0 D6   JSR $D6D0
E3BC   20 1E F1   JSR $F11E
E3BF   20 FD DD   JSR $DDFD
E3C2   20 E2 E2   JSR $E2E2
E3C5   4C D4 E3   JMP $E3D4
E3C8   20 1E CF   JSR $CF1E
E3CB   20 D0 D6   JSR $D6D0
E3CE   20 E2 E2   JSR $E2E2
E3D1   20 19 DE   JSR $DE19

E3D4   20 5E DE   JSR $DE5E

E3D7   20 0C DE   JSR $DE0C
E3DA   A5 80      LDA $80
E3DC   48         PHA
E3DD   A5 81      LDA $81
E3DF   48         PHA
E3E0   20 3E DE   JSR $DE3E
E3E3   A5 81      LDA $81
E3E5   48         PHA
E3E6   A5 80      LDA $80
E3E8   48         PHA
E3E9   20 45 DF   JSR $DF45
E3EC   AA         TAX
E3ED   D0 0A      BNE $E3F9
E3EF   20 4E E4   JSR $E44E
E3F2   A9 10      LDA #$10
E3F4   20 E9 DE   JSR $DEE9
E3F7   E6 86      INC $86
E3F9   68         PLA
E3FA   20 8D DD   JSR $DD8D
E3FD   68         PLA
E3FE   20 8D DD   JSR $DD8D
E401   68         PLA
E402   85 81      STA $81
E404   68         PLA
E405   85 80      STA $80
E407   F0 0F      BEQ $E418
E409   A5 86      LDA $86
E40B   C5 D5      CMP $D5
E40D   D0 A7      BNE $E3B6
E40F   20 45 DF   JSR $DF45
E412   C5 D6      CMP $D6
E414   90 A0      BCC $E3B6
E416   F0 B0      BEQ $E3C8
E418   20 45 DF   JSR $DF45
E41B   48         PHA
E41C   A9 00      LDA #$00
E41E   20 DC DE   JSR $DEDC
E421   A9 00      LDA #$00
E423   A8         TAY
E424   91 94      STA ($94),Y
E426   C8         INY
E427   68         PLA
E428   38         SEC
E429   E9 01      SBC #$01
E42B   91 94      STA ($94),Y
E42D   20 6C DE   JSR $DE6C
E430   20 99 D5   JSR $D599
E433   20 F4 EE   JSR $EEF4
E436   20 0E CE   JSR $CE0E
E439   20 1E CF   JSR $CF1E
E43C   20 F8 DE   JSR $DEF8
E43F   70 03      BVS $E444
E441   4C 75 E2   JMP $E275
E444   A9 80      LDA #$80
E446   20 97 DD   JSR $DD97
E449   A9 50      LDA #$50
E44B   20 C8 C1   JSR $C1C8


; write side-sector and allocate new

E44E   20 1E F1   JSR $F11E
E451   20 1E CF   JSR $CF1E
E454   20 F1 DD   JSR $DDF1
E457   20 93 DF   JSR $DF93
E45A   48         PHA
E45B   20 C1 DE   JSR $DEC1
E45E   A6 82      LDX $82
E460   B5 CD      LDA $CD,X
E462   A8         TAY
E463   68         PLA
E464   AA         TAX
E465   A9 10      LDA #$10
E467   20 A5 DE   JSR $DEA5
E46A   A9 00      LDA #$00
E46C   20 DC DE   JSR $DEDC
E46F   A0 02      LDY #$02
E471   B1 94      LDA ($94),Y
E473   48         PHA
E474   A9 00      LDA #$00
E476   20 C8 D4   JSR $D4C8
E479   68         PLA
E47A   18         CLC
E47B   69 01      ADC #$01
E47D   91 94      STA ($94),Y
E47F   0A         ASL
E480   69 04      ADC #$04
E482   85 89      STA $89
E484   A8         TAY
E485   38         SEC
E486   E9 02      SBC #$02
E488   85 8A      STA $8A
E48A   A5 80      LDA $80
E48C   85 87      STA $87
E48E   91 94      STA ($94),Y
E490   C8         INY
E491   A5 81      LDA $81
E493   85 88      STA $88
E495   91 94      STA ($94),Y
E497   A0 00      LDY #$00
E499   98         TYA
E49A   91 94      STA ($94),Y
E49C   C8         INY
E49D   A9 11      LDA #$11
E49F   91 94      STA ($94),Y
E4A1   A9 10      LDA #$10
E4A3   20 C8 D4   JSR $D4C8
E4A6   20 50 DE   JSR $DE50
E4A9   20 99 D5   JSR $D599
E4AC   A6 82      LDX $82
E4AE   B5 CD      LDA $CD,X
E4B0   48         PHA
E4B1   20 9E DF   JSR $DF9E
E4B4   A6 82      LDX $82
E4B6   95 CD      STA $CD,X
E4B8   68         PLA
E4B9   AE 57 02   LDX $0257
E4BC   95 A7      STA $A7,X
E4BE   A9 00      LDA #$00
E4C0   20 C8 D4   JSR $D4C8
E4C3   A0 00      LDY #$00
E4C5   A5 80      LDA $80
E4C7   91 94      STA ($94),Y
E4C9   C8         INY
E4CA   A5 81      LDA $81
E4CC   91 94      STA ($94),Y
E4CE   4C DE E4   JMP $E4DE
E4D1   20 93 DF   JSR $DF93
E4D4   A6 82      LDX $82
E4D6   20 1B DF   JSR $DF1B
E4D9   A9 00      LDA #$00
E4DB   20 C8 D4   JSR $D4C8

E4DE   C6 8A      DEC $8A

E4E0   C6 8A      DEC $8A
E4E2   A4 89      LDY $89
E4E4   A5 87      LDA $87
E4E6   91 94      STA ($94),Y
E4E8   C8         INY
E4E9   A5 88      LDA $88
E4EB   91 94      STA ($94),Y
E4ED   20 5E DE   JSR $DE5E
E4F0   20 99 D5   JSR $D599
E4F3   A4 8A      LDY $8A
E4F5   C0 03      CPY #$03
E4F7   B0 D8      BCS $E4D1
E4F9   4C 1E CF   JMP $CF1E

; table of error messages
; format: error numbers
;         description
; (with start and end letters +$80)
;  If value AND $7F less than $10
;  then look up text in pointer
;  table.


; ok

E4FC   .BY $00
E4FD   .BY $A0,$4F,$CB


; read eroor

E500   .BY $20,$21,$22,$23,$24,$27
E506   .BY $D2,$45,$41,$44
E50A   .BY $89


; file too large

E50B   .BY $52
E50C   .BY $83
E50D   .BY $20,$54,$4F,$4F
E511   .BY $20,$4C,$41,$52,$47,$C5


; record not present

E517   .BY $50
E518   .BY $8B
E519   .BY $06
E51A   .BY $20,$50,$52,$45,$53,$45,$4E,$D4


; overflow in record

E522   .BY $51
E523   .BY $CF,$56,$45,$52,$46,$4C,$4F,$57
E52B   .BY $20,$49,$4E
E52E   .BY $8B


; write error

E52F   .BY $25,$28
E531   .BY $8A
E532   .BY $89


; write protect on

E533   .BY $26
E534   .BY $8A
E535   .BY $20,$50,$52,$4F,$54,$45,$43,$54
E53D   .BY $20,$4F,$CE


; disk id mismatch

E540   .BY $29
E541   .BY $88
E542   .BY $20,$49,$44
E545   .BY $85


; syntax error

E546   .BY $30,$31,$32,$33,$34
E54B   .BY $D3,$59,$4E,$54,$41,$58
E551   .BY $89


; write file open

E552   .BY $60
E553   .BY $8A
E554   .BY $03
E555   .BY $84


; file exists

E556   .BY $63
E557   .BY $83
E558   .BY $20,$45,$58,$49,$53,$54,$D3


; file type mismatch

E55F   .BY $64
E560   .BY $83
E561   .BY $20,$54,$59,$50,$45
E566   .BY $85


; no block

E567   .BY $65
E568   .BY $CE,$4F
E56A   .BY $20,$42,$4C,$4F,$43,$CB


; illegal track or sector

E570   .BY $66,$67
E572   .BY $C9,$4C,$4C,$45,$47,$41,$4C
E579   .BY $20,$54,$52,$41,$43,$4B
E57F   .BY $20,$4F,$52
E582   .BY $20,$53,$45,$43,$54,$4F,$D2


; file not open

E589   .BY $61
E58A   .BY $83
E58B   .BY $06
E58C   .BY $84


; file not found

E58D   .BY $39,$62
E58F   .BY $83
E590   .BY $06
E591   .BY $87


; files scratched

E592   .BY $01
E593   .BY $83
E594   .BY $53,$20
E596   .BY $53,$43,$52,$41,$54,$43,$48,$45,$C4


; no channel

E59F   .BY $70
E5A0   .BY $CE,$4F
E5A2   .BY $20,$43,$48,$41,$4E,$4E,$45,$CC


; dir error

E5AA   .BY $71
E5AB   .BY $C4,$49,$52
E5AE   .BY $89


; disk full

E5AF   .BY $72
E5B0   .BY $88
E5B1   .BY $20,$46,$55,$4C,$CC


; cbm dos v2.6 1541

E5B6   .BY $73
E5B7   .BY $C3,$42,$4D
E5BA   .BY $20,$44,$4F,$53
E5BE   .BY $20,$56,$32,$2E,$36
E5C3   .BY $20,$31,$35,$34,$B1


; drive not ready

E5C8   .BY $74
E5C9   .BY $C4,$52,$49,$56,$45
E5CE   .BY $06
E5CF   .BY $20,$52,$45,$41,$44,$D9


; indexed words
; format: index number
;         description

E5D5   .BY $09
E5D6   .BY $C5,$52,$52,$4F,$D2
E5DB   .BY $0A
E5DC   .BY $D7,$52,$49,$54,$C5
E5E1   .BY $03
E5E2   .BY $C6,$49,$4C,$C5
E5E6   .BY $04
E5E7   .BY $CF,$50,$45,$CE
E5EB   .BY $05
E5EC   .BY $CD,$49,$53,$4D,$41,$54,$43,$C8
E5F4   .BY $06
E5F5   .BY $CE,$4F,$D4
E5F8   .BY $07
E5F9   .BY $C6,$4F,$55,$4E,$C4
E5FE   .BY $08
E5FF   .BY $C4,$49,$53,$CB
E603   .BY $0B
E604   .BY $D2,$45,$43,$4F,$52,$C4


; prepare error number and message

E60A   48         PHA
E60B   86 F9      STX $F9
E60D   8A         TXA
E60E   0A         ASL
E60F   AA         TAX
E610   B5 06      LDA $06,X
E612   85 80      STA $80
E614   B5 07      LDA $07,X
E616   85 81      STA $81
E618   68         PLA
E619   29 0F      AND #$0F
E61B   F0 08      BEQ $E625
E61D   C9 0F      CMP #$0F
E61F   D0 06      BNE $E627
E621   A9 74      LDA #$74
E623   D0 08      BNE $E62D
E625   A9 06      LDA #$06
E627   09 20      ORA #$20
E629   AA         TAX
E62A   CA         DEX
E62B   CA         DEX
E62C   8A         TXA
E62D   48         PHA
E62E   AD 2A 02   LDA $022A
E631   C9 00      CMP #$00
E633   D0 0F      BNE $E644
E635   A9 FF      LDA #$FF
E637   8D 2A 02   STA $022A
E63A   68         PLA
E63B   20 C7 E6   JSR $E6C7
E63E   20 42 D0   JSR $D042
E641   4C 48 E6   JMP $E648
E644   68         PLA

E645   20 C7 E6   JSR $E6C7


E648   20 BD C1   JSR $C1BD

E64B   A9 00      LDA #$00
E64D   8D F9 02   STA $02F9
E650   20 2C C1   JSR $C12C
E653   20 DA D4   JSR $D4DA
E656   A9 00      LDA #$00
E658   85 A3      STA $A3
E65A   A2 45      LDX #$45
E65C   9A         TXS
E65D   A5 84      LDA $84
E65F   29 0F      AND #$0F
E661   85 83      STA $83
E663   C9 0F      CMP #$0F
E665   F0 31      BEQ $E698
E667   78         SEI
E668   A5 79      LDA $79
E66A   D0 1C      BNE $E688
E66C   A5 7A      LDA $7A
E66E   D0 10      BNE $E680
E670   A6 83      LDX $83
E672   BD 2B 02   LDA $022B,X
E675   C9 FF      CMP #$FF
E677   F0 1F      BEQ $E698
E679   29 0F      AND #$0F
E67B   85 82      STA $82
E67D   4C 8E E6   JMP $E68E


; TALK

E680   20 EB D0   JSR $D0EB
E683   EA         NOP
E684   EA         NOP
E685   EA         NOP
E686   D0 06      BNE $E68E


; LISTEN

E688   20 07 D1   JSR $D107
E68B   EA         NOP
E68C   EA         NOP
E68D   EA         NOP

E68E   20 25 D1   JSR $D125

E691   C9 04      CMP #$04
E693   B0 03      BCS $E698
E695   20 27 D2   JSR $D227
E698   4C E7 EB   JMP $EBE7


; convert hex to decimal (2 bytes)

E69B   AA         TAX
E69C   A9 00      LDA #$00
E69E   F8         SED

E69F   E0 00      CPX #$00

E6A1   F0 07      BEQ $E6AA
E6A3   18         CLC
E6A4   69 01      ADC #$01
E6A6   CA         DEX
E6A7   4C 9F E6   JMP $E69F
E6AA   D8         CLD


; divide BCD number into two bytes

E6AB   AA         TAX
E6AC   4A         LSR
E6AD   4A         LSR
E6AE   4A         LSR
E6AF   4A         LSR
E6B0   20 B4 E6   JSR $E6B4
E6B3   8A         TXA

E6B4   29 0F      AND #$0F

E6B6   09 30      ORA #$30
E6B8   91 A5      STA ($A5),Y
E6BA   C8         INY
E6BB   60         RTS


; write OK in buffer

E6BC   20 23 C1   JSR $C123
E6BF   A9 00      LDA #$00

E6C1   A0 00      LDY #$00

E6C3   84 80      STY $80
E6C5   84 81      STY $81


; error message in buffer

E6C7   A0 00      LDY #$00
E6C9   A2 D5      LDX #$D5
E6CB   86 A5      STX $A5
E6CD   A2 02      LDX #$02
E6CF   86 A6      STX $A6
E6D1   20 AB E6   JSR $E6AB
E6D4   A9 2C      LDA #$2C   ; comma
E6D6   91 A5      STA ($A5),Y
E6D8   C8         INY
E6D9   AD D5 02   LDA $02D5
E6DC   8D 43 02   STA $0243
E6DF   8A         TXA
E6E0   20 06 E7   JSR $E706
E6E3   A9 2C      LDA #$2C   ; comma
E6E5   91 A5      STA ($A5),Y
E6E7   C8         INY
E6E8   A5 80      LDA $80
E6EA   20 9B E6   JSR $E69B
E6ED   A9 2C      LDA #$2C   ; comma
E6EF   91 A5      STA ($A5),Y
E6F1   C8         INY
E6F2   A5 81      LDA $81
E6F4   20 9B E6   JSR $E69B
E6F7   88         DEY
E6F8   98         TYA
E6F9   18         CLC
E6FA   69 D5      ADC #$D5
E6FC   8D 49 02   STA $0249
E6FF   E6 A5      INC $A5
E701   A9 88      LDA #$88
E703   85 F7      STA $F7
E705   60         RTS


; write error message to buffer

E706   AA         TAX
E707   A5 86      LDA $86
E709   48         PHA
E70A   A5 87      LDA $87
E70C   48         PHA
E70D   A9 FC      LDA #$FC   ; high E4FC
E70F   85 86      STA $86
E711   A9 E4      LDA #$E4   ; low  E4FC
E713   85 87      STA $87
E715   8A         TXA
E716   A2 00      LDX #$00

E718   C1 86      CMP ($86,X)

E71A   F0 21      BEQ $E73D
E71C   48         PHA
E71D   20 75 E7   JSR $E775
E720   90 05      BCC $E727
E722   20 75 E7   JSR $E775
E725   90 FB      BCC $E722
E727   A5 87      LDA $87
E729   C9 E6      CMP #$E6
E72B   90 08      BCC $E735
E72D   D0 0A      BNE $E739
E72F   A9 0A      LDA #$0A
E731   C5 86      CMP $86
E733   90 04      BCC $E739
E735   68         PLA
E736   4C 18 E7   JMP $E718
E739   68         PLA
E73A   4C 4D E7   JMP $E74D
E73D   20 67 E7   JSR $E767
E740   90 FB      BCC $E73D
E742   20 54 E7   JSR $E754
E745   20 67 E7   JSR $E767
E748   90 F8      BCC $E742
E74A   20 54 E7   JSR $E754

E74D   68         PLA

E74E   85 87      STA $87
E750   68         PLA
E751   85 86      STA $86
E753   60         RTS


; get character and in buffer

E754   C9 20      CMP #$20   ; space
E756   B0 0B      BCS $E763
E758   AA         TAX
E759   A9 20      LDA #$20   ; space
E75B   91 A5      STA ($A5),Y
E75D   C8         INY
E75E   8A         TXA
E75F   20 06 E7   JSR $E706
E762   60         RTS
E763   91 A5      STA ($A5),Y
E765   C8         INY
E766   60         RTS


; get a char of the error message

E767   E6 86      INC $86
E769   D0 02      BNE $E76D
E76B   E6 87      INC $87

E76D   A1 86      LDA ($86,X)

E76F   0A         ASL
E770   A1 86      LDA ($86,X)
E772   29 7F      AND #$7F
E774   60         RTS


; increment pointer

E775   20 6D E7   JSR $E76D
E778   E6 86      INC $86
E77A   D0 02      BNE $E77E
E77C   E6 87      INC $87
E77E   60         RTS


;

E77F   60         RTS


; check for auto start removed

E780   60         RTS
E781   .BY $EA,$EA,$EA,$EA,$EA,$EA,$EA,$EA
E789   .BY $EA,$EA,$EA,$EA,$EA,$EA,$EA,$EA
E791   .BY $EA,$EA,$EA,$EA,$EA,$EA,$EA,$EA
E799   .BY $EA,$EA,$EA,$EA,$EA,$EA,$EA,$EA
E7A1   .BY $EA
E7A2   60         RTS


;  - USR file execute command

E7A3   A9 8D      LDA #$8D
E7A5   20 68 C2   JSR $C268
E7A8   20 58 F2   JSR $F258   ; RTS
E7AB   AD 78 02   LDA $0278
E7AE   48         PHA
E7AF   A9 01      LDA #$01
E7B1   8D 78 02   STA $0278
E7B4   A9 FF      LDA #$FF
E7B6   85 86      STA $86
E7B8   20 4F C4   JSR $C44F
E7BB   AD 80 02   LDA $0280
E7BE   D0 05      BNE $E7C5
E7C0   A9 39      LDA #$39
E7C2   20 C8 C1   JSR $C1C8
E7C5   68         PLA
E7C6   8D 78 02   STA $0278
E7C9   AD 80 02   LDA $0280
E7CC   85 80      STA $80
E7CE   AD 85 02   LDA $0285
E7D1   85 81      STA $81
E7D3   A9 03      LDA #$03
E7D5   20 77 D4   JSR $D477
E7D8   A9 00      LDA #$00
E7DA   85 87      STA $87
E7DC   20 39 E8   JSR $E839
E7DF   85 88      STA $88
E7E1   20 4B E8   JSR $E84B
E7E4   20 39 E8   JSR $E839
E7E7   85 89      STA $89
E7E9   20 4B E8   JSR $E84B
E7EC   A5 86      LDA $86
E7EE   F0 0A      BEQ $E7FA
E7F0   A5 88      LDA $88
E7F2   48         PHA
E7F3   A5 89      LDA $89
E7F5   48         PHA
E7F6   A9 00      LDA #$00
E7F8   85 86      STA $86
E7FA   20 39 E8   JSR $E839
E7FD   85 8A      STA $8A
E7FF   20 4B E8   JSR $E84B
E802   20 39 E8   JSR $E839
E805   A0 00      LDY #$00
E807   91 88      STA ($88),Y
E809   20 4B E8   JSR $E84B
E80C   A5 88      LDA $88
E80E   18         CLC
E80F   69 01      ADC #$01
E811   85 88      STA $88
E813   90 02      BCC $E817
E815   E6 89      INC $89
E817   C6 8A      DEC $8A
E819   D0 E7      BNE $E802
E81B   20 35 CA   JSR $CA35
E81E   A5 85      LDA $85
E820   C5 87      CMP $87
E822   F0 08      BEQ $E82C
E824   20 3E DE   JSR $DE3E
E827   A9 50      LDA #$50
E829   20 45 E6   JSR $E645
E82C   A5 F8      LDA $F8
E82E   D0 A8      BNE $E7D8
E830   68         PLA
E831   85 89      STA $89
E833   68         PLA
E834   85 88      STA $88
E836   6C 88 00   JMP ($0088)

E839   20 35 CA   JSR $CA35

E83C   A5 F8      LDA $F8
E83E   D0 08      BNE $E848
E840   20 3E DE   JSR $DE3E
E843   A9 51      LDA #$51
E845   20 45 E6   JSR $E645
E848   A5 85      LDA $85
E84A   60         RTS


; generate checksum

E84B   18         CLC
E84C   65 87      ADC $87
E84E   69 00      ADC #$00
E850   85 87      STA $87
E852   60         RTS


; IRQ routine for serial bus

E853   AD 01 18   LDA $1801
E856   A9 01      LDA #$01
E858   85 7C      STA $7C
E85A   60         RTS


; service the serial bus

E85B   78         SEI
E85C   A9 00      LDA #$00
E85E   85 7C      STA $7C
E860   85 79      STA $79
E862   85 7A      STA $7A
E864   A2 45      LDX #$45
E866   9A         TXS
E867   A9 80      LDA #$80
E869   85 F8      STA $F8
E86B   85 7D      STA $7D
E86D   20 B7 E9   JSR $E9B7
E870   20 A5 E9   JSR $E9A5
E873   AD 00 18   LDA $1800
E876   09 10      ORA #$10
E878   8D 00 18   STA $1800
E87B   AD 00 18   LDA $1800
E87E   10 57      BPL $E8D7
E880   29 04      AND #$04
E882   D0 F7      BNE $E87B
E884   20 C9 E9   JSR $E9C9
E887   C9 3F      CMP #$3F
E889   D0 06      BNE $E891
E88B   A9 00      LDA #$00
E88D   85 79      STA $79
E88F   F0 71      BEQ $E902
E891   C9 5F      CMP #$5F
E893   D0 06      BNE $E89B
E895   A9 00      LDA #$00
E897   85 7A      STA $7A
E899   F0 67      BEQ $E902
E89B   C5 78      CMP $78
E89D   D0 0A      BNE $E8A9
E89F   A9 01      LDA #$01
E8A1   85 7A      STA $7A
E8A3   A9 00      LDA #$00
E8A5   85 79      STA $79
E8A7   F0 29      BEQ $E8D2
E8A9   C5 77      CMP $77
E8AB   D0 0A      BNE $E8B7
E8AD   A9 01      LDA #$01
E8AF   85 79      STA $79
E8B1   A9 00      LDA #$00
E8B3   85 7A      STA $7A
E8B5   F0 1B      BEQ $E8D2
E8B7   AA         TAX
E8B8   29 60      AND #$60
E8BA   C9 60      CMP #$60
E8BC   D0 3F      BNE $E8FD
E8BE   8A         TXA
E8BF   85 84      STA $84
E8C1   29 0F      AND #$0F
E8C3   85 83      STA $83
E8C5   A5 84      LDA $84
E8C7   29 F0      AND #$F0
E8C9   C9 E0      CMP #$E0
E8CB   D0 35      BNE $E902
E8CD   58         CLI
E8CE   20 C0 DA   JSR $DAC0
E8D1   78         SEI
E8D2   2C 00 18   BIT $1800
E8D5   30 AD      BMI $E884

E8D7   A9 00      LDA #$00

E8D9   85 7D      STA $7D
E8DB   AD 00 18   LDA $1800
E8DE   29 EF      AND #$EF
E8E0   8D 00 18   STA $1800
E8E3   A5 79      LDA $79
E8E5   F0 06      BEQ $E8ED
E8E7   20 2E EA   JSR $EA2E
E8EA   4C E7 EB   JMP $EBE7
E8ED   A5 7A      LDA $7A
E8EF   F0 09      BEQ $E8FA
E8F1   20 9C E9   JSR $E99C
E8F4   20 AE E9   JSR $E9AE
E8F7   20 09 E9   JSR $E909
E8FA   4C 4E EA   JMP $EA4E
E8FD   A9 10      LDA #$10
E8FF   8D 00 18   STA $1800
E902   2C 00 18   BIT $1800
E905   10 D0      BPL $E8D7
E907   30 F9      BMI $E902


; send data

E909   78         SEI
E90A   20 EB D0   JSR $D0EB
E90D   B0 06      BCS $E915

E90F   A6 82      LDX $82

E911   B5 F2      LDA $F2,X
E913   30 01      BMI $E916
E915   60         RTS
E916   20 59 EA   JSR $EA59
E919   20 C0 E9   JSR $E9C0
E91C   29 01      AND #$01
E91E   08         PHP
E91F   20 B7 E9   JSR $E9B7
E922   28         PLP
E923   F0 12      BEQ $E937
E925   20 59 EA   JSR $EA59
E928   20 C0 E9   JSR $E9C0
E92B   29 01      AND #$01
E92D   D0 F6      BNE $E925
E92F   A6 82      LDX $82
E931   B5 F2      LDA $F2,X
E933   29 08      AND #$08
E935   D0 14      BNE $E94B
E937   20 59 EA   JSR $EA59
E93A   20 C0 E9   JSR $E9C0
E93D   29 01      AND #$01
E93F   D0 F6      BNE $E937
E941   20 59 EA   JSR $EA59
E944   20 C0 E9   JSR $E9C0
E947   29 01      AND #$01
E949   F0 F6      BEQ $E941
E94B   20 AE E9   JSR $E9AE
E94E   20 59 EA   JSR $EA59
E951   20 C0 E9   JSR $E9C0
E954   29 01      AND #$01
E956   D0 F3      BNE $E94B
E958   A9 08      LDA #$08
E95A   85 98      STA $98
E95C   20 C0 E9   JSR $E9C0
E95F   29 01      AND #$01
E961   D0 36      BNE $E999
E963   A6 82      LDX $82
E965   BD 3E 02   LDA $023E,X
E968   6A         ROR
E969   9D 3E 02   STA $023E,X
E96C   B0 05      BCS $E973
E96E   20 A5 E9   JSR $E9A5
E971   D0 03      BNE $E976
E973   20 9C E9   JSR $E99C
E976   20 B7 E9   JSR $E9B7
E979   A5 23      LDA $23
E97B   D0 03      BNE $E980
E97D   20 F3 FE   JSR $FEF3

E980   20 FB FE   JSR $FEFB

E983   C6 98      DEC $98
E985   D0 D5      BNE $E95C
E987   20 59 EA   JSR $EA59
E98A   20 C0 E9   JSR $E9C0
E98D   29 01      AND #$01
E98F   F0 F6      BEQ $E987
E991   58         CLI
E992   20 AA D3   JSR $D3AA
E995   78         SEI
E996   4C 0F E9   JMP $E90F
E999   4C 4E EA   JMP $EA4E


; DATA OUT lo

E99C   AD 00 18   LDA $1800
E99F   29 FD      AND #$FD
E9A1   8D 00 18   STA $1800
E9A4   60         RTS


; DATA OUT hi

E9A5   AD 00 18   LDA $1800
E9A8   09 02      ORA #$02
E9AA   8D 00 18   STA $1800
E9AD   60         RTS


; CLOCK OUT hi

E9AE   AD 00 18   LDA $1800
E9B1   09 08      ORA #$08
E9B3   8D 00 18   STA $1800
E9B6   60         RTS


; CLOCK OUT lo

E9B7   AD 00 18   LDA $1800
E9BA   29 F7      AND #$F7
E9BC   8D 00 18   STA $1800
E9BF   60         RTS


; read IEEE port

E9C0   AD 00 18   LDA $1800
E9C3   CD 00 18   CMP $1800
E9C6   D0 F8      BNE $E9C0
E9C8   60         RTS


; get data byte from bus

E9C9   A9 08      LDA #$08
E9CB   85 98      STA $98
E9CD   20 59 EA   JSR $EA59
E9D0   20 C0 E9   JSR $E9C0
E9D3   29 04      AND #$04
E9D5   D0 F6      BNE $E9CD
E9D7   20 9C E9   JSR $E99C
E9DA   A9 01      LDA #$01
E9DC   4C 20 FF   JMP $FF20

E9DF   20 59 EA   JSR $EA59

E9E2   AD 0D 18   LDA $180D
E9E5   29 40      AND #$40
E9E7   D0 09      BNE $E9F2
E9E9   20 C0 E9   JSR $E9C0
E9EC   29 04      AND #$04
E9EE   F0 EF      BEQ $E9DF
E9F0   D0 19      BNE $EA0B


; accept byte with EOI

E9F2   20 A5 E9   JSR $E9A5
E9F5   A2 0A      LDX #$0A
E9F7   CA         DEX
E9F8   D0 FD      BNE $E9F7
E9FA   20 9C E9   JSR $E99C
E9FD   20 59 EA   JSR $EA59
EA00   20 C0 E9   JSR $E9C0
EA03   29 04      AND #$04
EA05   F0 F6      BEQ $E9FD
EA07   A9 00      LDA #$00
EA09   85 F8      STA $F8
EA0B   AD 00 18   LDA $1800
EA0E   49 01      EOR #$01
EA10   4A         LSR
EA11   29 02      AND #$02
EA13   D0 F6      BNE $EA0B
EA15   EA         NOP
EA16   EA         NOP
EA17   EA         NOP
EA18   66 85      ROR $85
EA1A   20 59 EA   JSR $EA59
EA1D   20 C0 E9   JSR $E9C0
EA20   29 04      AND #$04
EA22   F0 F6      BEQ $EA1A
EA24   C6 98      DEC $98
EA26   D0 E3      BNE $EA0B
EA28   20 A5 E9   JSR $E9A5
EA2B   A5 85      LDA $85
EA2D   60         RTS


; accept data from serial bus

EA2E   78         SEI
EA2F   20 07 D1   JSR $D107
EA32   B0 05      BCS $EA39
EA34   B5 F2      LDA $F2,X
EA36   6A         ROR
EA37   B0 0B      BCS $EA44
EA39   A5 84      LDA $84
EA3B   29 F0      AND #$F0
EA3D   C9 F0      CMP #$F0
EA3F   F0 03      BEQ $EA44
EA41   4C 4E EA   JMP $EA4E
EA44   20 C9 E9   JSR $E9C9
EA47   58         CLI
EA48   20 B7 CF   JSR $CFB7
EA4B   4C 2E EA   JMP $EA2E

EA4E   A9 00      LDA #$00

EA50   8D 00 18   STA $1800
EA53   4C E7 EB   JMP $EBE7
EA56   4C 5B E8   JMP $E85B


; test for ATN

EA59   A5 7D      LDA $7D
EA5B   F0 06      BEQ $EA63
EA5D   AD 00 18   LDA $1800
EA60   10 09      BPL $EA6B
EA62   60         RTS
EA63   AD 00 18   LDA $1800
EA66   10 FA      BPL $EA62
EA68   4C 5B E8   JMP $E85B
EA6B   4C D7 E8   JMP $E8D7


; flash LED for hardware defects, self-test

EA6E   A2 00      LDX #$00
EA70   .BY $2C

EA71   A6 6F      LDX $6F

EA73   9A         TXS
EA74   BA         TSX
EA75   A9 08      LDA #$08
EA77   0D 00 1C   ORA $1C00

EA7A   4C EA FE   JMP $FEEA


EA7D   98         TYA

EA7E   18         CLC
EA7F   69 01      ADC #$01
EA81   D0 FC      BNE $EA7F
EA83   88         DEY
EA84   D0 F8      BNE $EA7E
EA86   AD 00 1C   LDA $1C00
EA89   29 F7      AND #$F7
EA8B   8D 00 1C   STA $1C00
EA8E   98         TYA
EA8F   18         CLC
EA90   69 01      ADC #$01
EA92   D0 FC      BNE $EA90
EA94   88         DEY
EA95   D0 F8      BNE $EA8F
EA97   CA         DEX
EA98   10 DB      BPL $EA75
EA9A   E0 FC      CPX #$FC
EA9C   D0 F0      BNE $EA8E
EA9E   F0 D4      BEQ $EA74


; RESET routine

EAA0   78         SEI
EAA1   D8         CLD
EAA2   A2 FF      LDX #$FF

EAA4   4C 10 FF   JMP $FF10


EAA7   E8         INX

EAA8   A0 00      LDY #$00
EAAA   A2 00      LDX #$00
EAAC   8A         TXA
EAAD   95 00      STA $00,X
EAAF   E8         INX
EAB0   D0 FA      BNE $EAAC
EAB2   8A         TXA
EAB3   D5 00      CMP $00,X
EAB5   D0 B7      BNE $EA6E
EAB7   F6 00      INC $00,X
EAB9   C8         INY
EABA   D0 FB      BNE $EAB7
EABC   D5 00      CMP $00,X
EABE   D0 AE      BNE $EA6E
EAC0   94 00      STY $00,X
EAC2   B5 00      LDA $00,X
EAC4   D0 A8      BNE $EA6E
EAC6   E8         INX
EAC7   D0 E9      BNE $EAB2
EAC9   E6 6F      INC $6F
EACB   86 76      STX $76
EACD   A9 00      LDA #$00
EACF   85 75      STA $75
EAD1   A8         TAY
EAD2   A2 20      LDX #$20
EAD4   18         CLC
EAD5   C6 76      DEC $76
EAD7   71 75      ADC ($75),Y
EAD9   C8         INY
EADA   D0 FB      BNE $EAD7
EADC   CA         DEX
EADD   D0 F6      BNE $EAD5
EADF   69 00      ADC #$00
EAE1   AA         TAX
EAE2   C5 76      CMP $76
EAE4   D0 39      BNE $EB1F
EAE6   E0 C0      CPX #$C0
EAE8   D0 DF      BNE $EAC9
EAEA   A9 01      LDA #$01
EAEC   85 76      STA $76
EAEE   E6 6F      INC $6F
EAF0   A2 07      LDX #$07
EAF2   98         TYA
EAF3   18         CLC
EAF4   65 76      ADC $76
EAF6   91 75      STA ($75),Y
EAF8   C8         INY
EAF9   D0 F7      BNE $EAF2
EAFB   E6 76      INC $76
EAFD   CA         DEX
EAFE   D0 F2      BNE $EAF2
EB00   A2 07      LDX #$07
EB02   C6 76      DEC $76
EB04   88         DEY
EB05   98         TYA
EB06   18         CLC
EB07   65 76      ADC $76
EB09   D1 75      CMP ($75),Y
EB0B   D0 12      BNE $EB1F
EB0D   49 FF      EOR #$FF
EB0F   91 75      STA ($75),Y
EB11   51 75      EOR ($75),Y
EB13   91 75      STA ($75),Y
EB15   D0 08      BNE $EB1F
EB17   98         TYA
EB18   D0 EA      BNE $EB04
EB1A   CA         DEX
EB1B   D0 E5      BNE $EB02
EB1D   F0 03      BEQ $EB22
EB1F   4C 71 EA   JMP $EA71

EB22   A2 45      LDX #$45

EB24   9A         TXS
EB25   AD 00 1C   LDA $1C00
EB28   29 F7      AND #$F7
EB2A   8D 00 1C   STA $1C00
EB2D   A9 01      LDA #$01
EB2F   8D 0C 18   STA $180C
EB32   A9 82      LDA #$82
EB34   8D 0D 18   STA $180D
EB37   8D 0E 18   STA $180E
EB3A   AD 00 18   LDA $1800
EB3D   29 60      AND #$60
EB3F   0A         ASL
EB40   2A         ROL
EB41   2A         ROL
EB42   2A         ROL
EB43   09 48      ORA #$48
EB45   85 78      STA $78
EB47   49 60      EOR #$60
EB49   85 77      STA $77
EB4B   A2 00      LDX #$00
EB4D   A0 00      LDY #$00
EB4F   A9 00      LDA #$00
EB51   95 99      STA $99,X
EB53   E8         INX
EB54   B9 E0 FE   LDA $FEE0,Y
EB57   95 99      STA $99,X
EB59   E8         INX
EB5A   C8         INY
EB5B   C0 05      CPY #$05
EB5D   D0 F0      BNE $EB4F
EB5F   A9 00      LDA #$00
EB61   95 99      STA $99,X
EB63   E8         INX
EB64   A9 02      LDA #$02
EB66   95 99      STA $99,X
EB68   E8         INX
EB69   A9 D5      LDA #$D5
EB6B   95 99      STA $99,X
EB6D   E8         INX
EB6E   A9 02      LDA #$02
EB70   95 99      STA $99,X
EB72   A9 FF      LDA #$FF
EB74   A2 12      LDX #$12
EB76   9D 2B 02   STA $022B,X
EB79   CA         DEX
EB7A   10 FA      BPL $EB76
EB7C   A2 05      LDX #$05
EB7E   95 A7      STA $A7,X
EB80   95 AE      STA $AE,X
EB82   95 CD      STA $CD,X
EB84   CA         DEX
EB85   10 F7      BPL $EB7E
EB87   A9 05      LDA #$05
EB89   85 AB      STA $AB
EB8B   A9 06      LDA #$06
EB8D   85 AC      STA $AC
EB8F   A9 FF      LDA #$FF
EB91   85 AD      STA $AD
EB93   85 B4      STA $B4
EB95   A9 05      LDA #$05
EB97   8D 3B 02   STA $023B
EB9A   A9 84      LDA #$84
EB9C   8D 3A 02   STA $023A
EB9F   A9 0F      LDA #$0F
EBA1   8D 56 02   STA $0256
EBA4   A9 01      LDA #$01
EBA6   85 F6      STA $F6
EBA8   A9 88      LDA #$88
EBAA   85 F7      STA $F7
EBAC   A9 E0      LDA #$E0
EBAE   8D 4F 02   STA $024F
EBB1   A9 FF      LDA #$FF
EBB3   8D 50 02   STA $0250
EBB6   A9 01      LDA #$01
EBB8   85 1C      STA $1C
EBBA   85 1D      STA $1D
EBBC   20 63 CB   JSR $CB63
EBBF   20 FA CE   JSR $CEFA
EBC2   20 59 F2   JSR $F259
EBC5   A9 22      LDA #$22
EBC7   85 65      STA $65
EBC9   A9 EB      LDA #$EB
EBCB   85 66      STA $66
EBCD   A9 0A      LDA #$0A
EBCF   85 69      STA $69
EBD1   A9 05      LDA #$05
EBD3   85 6A      STA $6A
EBD5   A9 73      LDA #$73
EBD7   20 C1 E6   JSR $E6C1
EBDA   A9 00      LDA #$00
EBDC   8D 00 18   STA $1800
EBDF   A9 1A      LDA #$1A
EBE1   8D 02 18   STA $1802
EBE4   20 80 E7   JSR $E780

EBE7   58         CLI

EBE8   AD 00 18   LDA $1800
EBEB   29 E5      AND #$E5
EBED   8D 00 18   STA $1800
EBF0   AD 55 02   LDA $0255
EBF3   F0 0A      BEQ $EBFF
EBF5   A9 00      LDA #$00
EBF7   8D 55 02   STA $0255
EBFA   85 67      STA $67
EBFC   20 46 C1   JSR $C146


; wait loop

EBFF   58         CLI
EC00   A5 7C      LDA $7C
EC02   F0 03      BEQ $EC07
EC04   4C 5B E8   JMP $E85B
EC07   58         CLI
EC08   A9 0E      LDA #$0E
EC0A   85 72      STA $72
EC0C   A9 00      LDA #$00
EC0E   85 6F      STA $6F
EC10   85 70      STA $70
EC12   A6 72      LDX $72
EC14   BD 2B 02   LDA $022B,X
EC17   C9 FF      CMP #$FF
EC19   F0 10      BEQ $EC2B
EC1B   29 3F      AND #$3F
EC1D   85 82      STA $82
EC1F   20 93 DF   JSR $DF93
EC22   AA         TAX
EC23   BD 5B 02   LDA $025B,X
EC26   29 01      AND #$01
EC28   AA         TAX
EC29   F6 6F      INC $6F,X
EC2B   C6 72      DEC $72
EC2D   10 E3      BPL $EC12
EC2F   A0 04      LDY #$04
EC31   B9 00 00   LDA $0000,Y
EC34   10 05      BPL $EC3B
EC36   29 01      AND #$01
EC38   AA         TAX
EC39   F6 6F      INC $6F,X
EC3B   88         DEY
EC3C   10 F3      BPL $EC31
EC3E   78         SEI
EC3F   AD 00 1C   LDA $1C00
EC42   29 F7      AND #$F7
EC44   48         PHA
EC45   A5 7F      LDA $7F
EC47   85 86      STA $86
EC49   A9 00      LDA #$00
EC4B   85 7F      STA $7F
EC4D   A5 6F      LDA $6F
EC4F   F0 0B      BEQ $EC5C
EC51   A5 1C      LDA $1C
EC53   F0 03      BEQ $EC58
EC55   20 13 D3   JSR $D313
EC58   68         PLA
EC59   09 08      ORA #$08
EC5B   48         PHA
EC5C   E6 7F      INC $7F
EC5E   A5 70      LDA $70
EC60   F0 0B      BEQ $EC6D
EC62   A5 1D      LDA $1D
EC64   F0 03      BEQ $EC69
EC66   20 13 D3   JSR $D313
EC69   68         PLA
EC6A   09 00      ORA #$00
EC6C   48         PHA
EC6D   A5 86      LDA $86
EC6F   85 7F      STA $7F
EC71   68         PLA
EC72   AE 6C 02   LDX $026C
EC75   F0 21      BEQ $EC98
EC77   AD 00 1C   LDA $1C00
EC7A   E0 80      CPX #$80
EC7C   D0 03      BNE $EC81
EC7E   4C 8B EC   JMP $EC8B
EC81   AE 05 18   LDX $1805
EC84   30 12      BMI $EC98
EC86   A2 A0      LDX #$A0
EC88   8E 05 18   STX $1805

EC8B   CE 6C 02   DEC $026C

EC8E   D0 08      BNE $EC98
EC90   4D 6D 02   EOR $026D
EC93   A2 10      LDX #$10
EC95   8E 6C 02   STX $026C
EC98   8D 00 1C   STA $1C00
EC9B   4C FF EB   JMP $EBFF


; load dir

EC9E   A9 00      LDA #$00
ECA0   85 83      STA $83
ECA2   A9 01      LDA #$01
ECA4   20 E2 D1   JSR $D1E2
ECA7   A9 00      LDA #$00
ECA9   20 C8 D4   JSR $D4C8
ECAC   A6 82      LDX $82
ECAE   A9 00      LDA #$00
ECB0   9D 44 02   STA $0244,X
ECB3   20 93 DF   JSR $DF93
ECB6   AA         TAX
ECB7   A5 7F      LDA $7F
ECB9   9D 5B 02   STA $025B,X
ECBC   A9 01      LDA #$01
ECBE   20 F1 CF   JSR $CFF1
ECC1   A9 04      LDA #$04   ;  start addr $0401
ECC3   20 F1 CF   JSR $CFF1
ECC6   A9 01      LDA #$01
ECC8   20 F1 CF   JSR $CFF1
ECCB   20 F1 CF   JSR $CFF1
ECCE   AD 72 02   LDA $0272
ECD1   20 F1 CF   JSR $CFF1
ECD4   A9 00      LDA #$00
ECD6   20 F1 CF   JSR $CFF1
ECD9   20 59 ED   JSR $ED59
ECDC   20 93 DF   JSR $DF93
ECDF   0A         ASL
ECE0   AA         TAX
ECE1   D6 99      DEC $99,X
ECE3   D6 99      DEC $99,X
ECE5   A9 00      LDA #$00
ECE7   20 F1 CF   JSR $CFF1

ECEA   A9 01      LDA #$01

ECEC   20 F1 CF   JSR $CFF1
ECEF   20 F1 CF   JSR $CFF1
ECF2   20 CE C6   JSR $C6CE
ECF5   90 2C      BCC $ED23
ECF7   AD 72 02   LDA $0272
ECFA   20 F1 CF   JSR $CFF1
ECFD   AD 73 02   LDA $0273
ED00   20 F1 CF   JSR $CFF1
ED03   20 59 ED   JSR $ED59
ED06   A9 00      LDA #$00
ED08   20 F1 CF   JSR $CFF1
ED0B   D0 DD      BNE $ECEA

ED0D   20 93 DF   JSR $DF93

ED10   0A         ASL
ED11   AA         TAX
ED12   A9 00      LDA #$00
ED14   95 99      STA $99,X
ED16   A9 88      LDA #$88
ED18   A4 82      LDY $82
ED1A   8D 54 02   STA $0254
ED1D   99 F2 00   STA $00F2,Y
ED20   A5 85      LDA $85
ED22   60         RTS


;

ED23   AD 72 02   LDA $0272
ED26   20 F1 CF   JSR $CFF1
ED29   AD 73 02   LDA $0273
ED2C   20 F1 CF   JSR $CFF1
ED2F   20 59 ED   JSR $ED59
ED32   20 93 DF   JSR $DF93
ED35   0A         ASL
ED36   AA         TAX
ED37   D6 99      DEC $99,X
ED39   D6 99      DEC $99,X
ED3B   A9 00      LDA #$00
ED3D   20 F1 CF   JSR $CFF1
ED40   20 F1 CF   JSR $CFF1
ED43   20 F1 CF   JSR $CFF1
ED46   20 93 DF   JSR $DF93
ED49   0A         ASL
ED4A   A8         TAY
ED4B   B9 99 00   LDA $0099,Y
ED4E   A6 82      LDX $82
ED50   9D 44 02   STA $0244,X
ED53   DE 44 02   DEC $0244,X
ED56   4C 0D ED   JMP $ED0D


; transmit dir line

ED59   A0 00      LDY #$00
ED5B   B9 B1 02   LDA $02B1,Y
ED5E   20 F1 CF   JSR $CFF1
ED61   C8         INY
ED62   C0 1B      CPY #$1B
ED64   D0 F5      BNE $ED5B
ED66   60         RTS


; get byte from buffer

ED67   20 37 D1   JSR $D137
ED6A   F0 01      BEQ $ED6D
ED6C   60         RTS
ED6D   85 85      STA $85
ED6F   A4 82      LDY $82
ED71   B9 44 02   LDA $0244,Y
ED74   F0 08      BEQ $ED7E
ED76   A9 80      LDA #$80
ED78   99 F2 00   STA $00F2,Y
ED7B   A5 85      LDA $85
ED7D   60         RTS
ED7E   48         PHA
ED7F   20 EA EC   JSR $ECEA
ED82   68         PLA
ED83   60         RTS


; V - Validate command

ED84   20 D1 C1   JSR $C1D1
ED87   20 42 D0   JSR $D042
ED8A   A9 40      LDA #$40
ED8C   8D F9 02   STA $02F9
ED8F   20 B7 EE   JSR $EEB7
ED92   A9 00      LDA #$00
ED94   8D 92 02   STA $0292
ED97   20 AC C5   JSR $C5AC
ED9A   D0 3D      BNE $EDD9
ED9C   A9 00      LDA #$00
ED9E   85 81      STA $81
EDA0   AD 85 FE   LDA $FE85
EDA3   85 80      STA $80
EDA5   20 E5 ED   JSR $EDE5
EDA8   A9 00      LDA #$00
EDAA   8D F9 02   STA $02F9
EDAD   20 FF EE   JSR $EEFF
EDB0   4C 94 C1   JMP $C194


;

EDB3   C8         INY
EDB4   B1 94      LDA ($94),Y
EDB6   48         PHA
EDB7   C8         INY
EDB8   B1 94      LDA ($94),Y
EDBA   48         PHA
EDBB   A0 13      LDY #$13
EDBD   B1 94      LDA ($94),Y
EDBF   F0 0A      BEQ $EDCB
EDC1   85 80      STA $80
EDC3   C8         INY
EDC4   B1 94      LDA ($94),Y
EDC6   85 81      STA $81
EDC8   20 E5 ED   JSR $EDE5
EDCB   68         PLA
EDCC   85 81      STA $81
EDCE   68         PLA
EDCF   85 80      STA $80
EDD1   20 E5 ED   JSR $EDE5

EDD4   20 04 C6   JSR $C604

EDD7   F0 C3      BEQ $ED9C
EDD9   A0 00      LDY #$00
EDDB   B1 94      LDA ($94),Y
EDDD   30 D4      BMI $EDB3
EDDF   20 B6 C8   JSR $C8B6
EDE2   4C D4 ED   JMP $EDD4


; allocate file blocks in BAM

EDE5   20 5F D5   JSR $D55F
EDE8   20 90 EF   JSR $EF90
EDEB   20 75 D4   JSR $D475

EDEE   A9 00      LDA #$00

EDF0   20 C8 D4   JSR $D4C8
EDF3   20 37 D1   JSR $D137
EDF6   85 80      STA $80
EDF8   20 37 D1   JSR $D137
EDFB   85 81      STA $81
EDFD   A5 80      LDA $80
EDFF   D0 03      BNE $EE04
EE01   4C 27 D2   JMP $D227
EE04   20 90 EF   JSR $EF90
EE07   20 4D D4   JSR $D44D
EE0A   4C EE ED   JMP $EDEE


; N - New (Format) command

EE0D   20 12 C3   JSR $C312
EE10   A5 E2      LDA $E2
EE12   10 05      BPL $EE19
EE14   A9 33      LDA #$33
EE16   4C C8 C1   JMP $C1C8
EE19   29 01      AND #$01
EE1B   85 7F      STA $7F
EE1D   20 00 C1   JSR $C100
EE20   A5 7F      LDA $7F
EE22   0A         ASL
EE23   AA         TAX
EE24   AC 7B 02   LDY $027B
EE27   CC 74 02   CPY $0274
EE2A   F0 1A      BEQ $EE46
EE2C   B9 00 02   LDA $0200,Y
EE2F   95 12      STA $12,X
EE31   B9 01 02   LDA $0201,Y
EE34   95 13      STA $13,X
EE36   20 07 D3   JSR $D307
EE39   A9 01      LDA #$01
EE3B   85 80      STA $80
EE3D   20 C6 C8   JSR $C8C6
EE40   20 05 F0   JSR $F005
EE43   4C 56 EE   JMP $EE56
EE46   20 42 D0   JSR $D042
EE49   A6 7F      LDX $7F
EE4B   BD 01 01   LDA $0101,X
EE4E   CD D5 FE   CMP $FED5
EE51   F0 03      BEQ $EE56
EE53   4C 72 D5   JMP $D572

EE56   20 B7 EE   JSR $EEB7

EE59   A5 F9      LDA $F9
EE5B   A8         TAY
EE5C   0A         ASL
EE5D   AA         TAX
EE5E   AD 88 FE   LDA $FE88
EE61   95 99      STA $99,X
EE63   AE 7A 02   LDX $027A
EE66   A9 1B      LDA #$1B
EE68   20 6E C6   JSR $C66E
EE6B   A0 12      LDY #$12
EE6D   A6 7F      LDX $7F
EE6F   AD D5 FE   LDA $FED5
EE72   9D 01 01   STA $0101,X
EE75   8A         TXA
EE76   0A         ASL
EE77   AA         TAX
EE78   B5 12      LDA $12,X
EE7A   91 94      STA ($94),Y
EE7C   C8         INY
EE7D   B5 13      LDA $13,X
EE7F   91 94      STA ($94),Y
EE81   C8         INY
EE82   C8         INY
EE83   A9 32      LDA #$32   ; 2
EE85   91 94      STA ($94),Y
EE87   C8         INY
EE88   AD D5 FE   LDA $FED5
EE8B   91 94      STA ($94),Y
EE8D   A0 02      LDY #$02
EE8F   91 6D      STA ($6D),Y
EE91   AD 85 FE   LDA $FE85
EE94   85 80      STA $80
EE96   20 93 EF   JSR $EF93
EE99   A9 01      LDA #$01
EE9B   85 81      STA $81
EE9D   20 93 EF   JSR $EF93
EEA0   20 FF EE   JSR $EEFF
EEA3   20 05 F0   JSR $F005
EEA6   A0 01      LDY #$01
EEA8   A9 FF      LDA #$FF
EEAA   91 6D      STA ($6D),Y
EEAC   20 64 D4   JSR $D464
EEAF   C6 81      DEC $81
EEB1   20 60 D4   JSR $D460
EEB4   4C 94 C1   JMP $C194


; create BAM

EEB7   20 D1 F0   JSR $F0D1
EEBA   A0 00      LDY #$00
EEBC   A9 12      LDA #$12
EEBE   91 6D      STA ($6D),Y
EEC0   C8         INY
EEC1   98         TYA
EEC2   91 6D      STA ($6D),Y
EEC4   C8         INY
EEC5   C8         INY
EEC6   C8         INY
EEC7   A9 00      LDA #$00
EEC9   85 6F      STA $6F
EECB   85 70      STA $70
EECD   85 71      STA $71
EECF   98         TYA
EED0   4A         LSR
EED1   4A         LSR
EED2   20 4B F2   JSR $F24B
EED5   91 6D      STA ($6D),Y
EED7   C8         INY
EED8   AA         TAX
EED9   38         SEC
EEDA   26 6F      ROL $6F
EEDC   26 70      ROL $70
EEDE   26 71      ROL $71
EEE0   CA         DEX
EEE1   D0 F6      BNE $EED9
EEE3   B5 6F      LDA $6F,X
EEE5   91 6D      STA ($6D),Y
EEE7   C8         INY
EEE8   E8         INX
EEE9   E0 03      CPX #$03
EEEB   90 F6      BCC $EEE3
EEED   C0 90      CPY #$90
EEEF   90 D6      BCC $EEC7
EEF1   4C 75 D0   JMP $D075


; write BAM if needed

EEF4   20 93 DF   JSR $DF93
EEF7   AA         TAX
EEF8   BD 5B 02   LDA $025B,X
EEFB   29 01      AND #$01
EEFD   85 7F      STA $7F

EEFF   A4 7F      LDY $7F

EF01   B9 51 02   LDA $0251,Y
EF04   D0 01      BNE $EF07
EF06   60         RTS
EF07   A9 00      LDA #$00
EF09   99 51 02   STA $0251,Y
EF0C   20 3A EF   JSR $EF3A
EF0F   A5 7F      LDA $7F
EF11   0A         ASL
EF12   48         PHA
EF13   20 A5 F0   JSR $F0A5
EF16   68         PLA
EF17   18         CLC
EF18   69 01      ADC #$01
EF1A   20 A5 F0   JSR $F0A5
EF1D   A5 80      LDA $80
EF1F   48         PHA
EF20   A9 01      LDA #$01
EF22   85 80      STA $80
EF24   0A         ASL
EF25   0A         ASL
EF26   85 6D      STA $6D
EF28   20 20 F2   JSR $F220
EF2B   E6 80      INC $80
EF2D   A5 80      LDA $80
EF2F   CD D7 FE   CMP $FED7
EF32   90 F0      BCC $EF24
EF34   68         PLA
EF35   85 80      STA $80
EF37   4C 8A D5   JMP $D58A


; set buffer pointer for BAM

EF3A   20 0F F1   JSR $F10F
EF3D   AA         TAX
EF3E   20 DF F0   JSR $F0DF
EF41   A6 F9      LDX $F9
EF43   BD E0 FE   LDA $FEE0,X
EF46   85 6E      STA $6E
EF48   A9 00      LDA #$00
EF4A   85 6D      STA $6D
EF4C   60         RTS


; get number of free blocks for dir

EF4D   A6 7F      LDX $7F
EF4F   BD FA 02   LDA $02FA,X
EF52   8D 72 02   STA $0272
EF55   BD FC 02   LDA $02FC,X
EF58   8D 73 02   STA $0273
EF5B   60         RTS


; mark block as free

EF5C   20 F1 EF   JSR $EFF1

EF5F   20 CF EF   JSR $EFCF

EF62   38         SEC
EF63   D0 22      BNE $EF87
EF65   B1 6D      LDA ($6D),Y
EF67   1D E9 EF   ORA $EFE9,X
EF6A   91 6D      STA ($6D),Y
EF6C   20 88 EF   JSR $EF88
EF6F   A4 6F      LDY $6F
EF71   18         CLC
EF72   B1 6D      LDA ($6D),Y
EF74   69 01      ADC #$01
EF76   91 6D      STA ($6D),Y
EF78   A5 80      LDA $80
EF7A   CD 85 FE   CMP $FE85
EF7D   F0 3B      BEQ $EFBA
EF7F   FE FA 02   INC $02FA,X
EF82   D0 03      BNE $EF87
EF84   FE FC 02   INC $02FC,X
EF87   60         RTS


; set flag for BAM changed

EF88   A6 7F      LDX $7F
EF8A   A9 01      LDA #$01
EF8C   9D 51 02   STA $0251,X
EF8F   60         RTS


; mark block as allocated

EF90   20 F1 EF   JSR $EFF1

EF93   20 CF EF   JSR $EFCF

EF96   F0 36      BEQ $EFCE
EF98   B1 6D      LDA ($6D),Y
EF9A   5D E9 EF   EOR $EFE9,X
EF9D   91 6D      STA ($6D),Y
EF9F   20 88 EF   JSR $EF88
EFA2   A4 6F      LDY $6F
EFA4   B1 6D      LDA ($6D),Y
EFA6   38         SEC
EFA7   E9 01      SBC #$01
EFA9   91 6D      STA ($6D),Y
EFAB   A5 80      LDA $80
EFAD   CD 85 FE   CMP $FE85
EFB0   F0 0B      BEQ $EFBD
EFB2   BD FA 02   LDA $02FA,X
EFB5   D0 03      BNE $EFBA
EFB7   DE FC 02   DEC $02FC,X
EFBA   DE FA 02   DEC $02FA,X
EFBD   BD FC 02   LDA $02FC,X
EFC0   D0 0C      BNE $EFCE
EFC2   BD FA 02   LDA $02FA,X
EFC5   C9 03      CMP #$03
EFC7   B0 05      BCS $EFCE
EFC9   A9 72      LDA #$72
EFCB   20 C7 E6   JSR $E6C7
EFCE   60         RTS


; erase bit for sector in BAM entry

EFCF   20 11 F0   JSR $F011
EFD2   98         TYA
EFD3   85 6F      STA $6F

EFD5   A5 81      LDA $81

EFD7   4A         LSR
EFD8   4A         LSR
EFD9   4A         LSR
EFDA   38         SEC
EFDB   65 6F      ADC $6F
EFDD   A8         TAY
EFDE   A5 81      LDA $81
EFE0   29 07      AND #$07
EFE2   AA         TAX
EFE3   B1 6D      LDA ($6D),Y
EFE5   3D E9 EF   AND $EFE9,X
EFE8   60         RTS


; powers of 2


EFE9   .BY $01,$02,$04,$08,$10,$20,$40,$80


; write BAM after change

EFF1   A9 FF      LDA #$FF
EFF3   2C F9 02   BIT $02F9
EFF6   F0 0C      BEQ $F004
EFF8   10 0A      BPL $F004
EFFA   70 08      BVS $F004
EFFC   A9 00      LDA #$00
EFFE   8D F9 02   STA $02F9
F001   4C 8A D5   JMP $D58A
F004   60         RTS


; erase BAM buffer

F005   20 3A EF   JSR $EF3A
F008   A0 00      LDY #$00
F00A   98         TYA
F00B   91 6D      STA ($6D),Y
F00D   C8         INY
F00E   D0 FB      BNE $F00B
F010   60         RTS


;

F011   A5 6F      LDA $6F
F013   48         PHA
F014   A5 70      LDA $70
F016   48         PHA
F017   A6 7F      LDX $7F
F019   B5 FF      LDA $FF,X
F01B   F0 05      BEQ $F022
F01D   A9 74      LDA #$74
F01F   20 48 E6   JSR $E648
F022   20 0F F1   JSR $F10F
F025   85 6F      STA $6F
F027   8A         TXA
F028   0A         ASL
F029   85 70      STA $70
F02B   AA         TAX
F02C   A5 80      LDA $80
F02E   DD 9D 02   CMP $029D,X
F031   F0 0B      BEQ $F03E
F033   E8         INX
F034   86 70      STX $70
F036   DD 9D 02   CMP $029D,X
F039   F0 03      BEQ $F03E
F03B   20 5B F0   JSR $F05B
F03E   A5 70      LDA $70
F040   A6 7F      LDX $7F
F042   9D 9B 02   STA $029B,X
F045   0A         ASL
F046   0A         ASL
F047   18         CLC
F048   69 A1      ADC #$A1
F04A   85 6D      STA $6D
F04C   A9 02      LDA #$02
F04E   69 00      ADC #$00
F050   85 6E      STA $6E
F052   A0 00      LDY #$00
F054   68         PLA
F055   85 70      STA $70
F057   68         PLA
F058   85 6F      STA $6F
F05A   60         RTS


;

F05B   A6 6F      LDX $6F
F05D   20 DF F0   JSR $F0DF
F060   A5 7F      LDA $7F
F062   AA         TAX
F063   0A         ASL
F064   1D 9B 02   ORA $029B,X
F067   49 01      EOR #$01
F069   29 03      AND #$03
F06B   85 70      STA $70
F06D   20 A5 F0   JSR $F0A5
F070   A5 F9      LDA $F9
F072   0A         ASL
F073   AA         TAX
F074   A5 80      LDA $80
F076   0A         ASL
F077   0A         ASL
F078   95 99      STA $99,X
F07A   A5 70      LDA $70
F07C   0A         ASL
F07D   0A         ASL
F07E   A8         TAY
F07F   A1 99      LDA ($99,X)
F081   99 A1 02   STA $02A1,Y
F084   A9 00      LDA #$00
F086   81 99      STA ($99,X)
F088   F6 99      INC $99,X
F08A   C8         INY
F08B   98         TYA
F08C   29 03      AND #$03
F08E   D0 EF      BNE $F07F
F090   A6 70      LDX $70
F092   A5 80      LDA $80
F094   9D 9D 02   STA $029D,X
F097   AD F9 02   LDA $02F9
F09A   D0 03      BNE $F09F
F09C   4C 8A D5   JMP $D58A
F09F   09 80      ORA #$80
F0A1   8D F9 02   STA $02F9
F0A4   60         RTS

F0A5   A8         TAY

F0A6   B9 9D 02   LDA $029D,Y
F0A9   F0 25      BEQ $F0D0
F0AB   48         PHA
F0AC   A9 00      LDA #$00
F0AE   99 9D 02   STA $029D,Y
F0B1   A5 F9      LDA $F9
F0B3   0A         ASL
F0B4   AA         TAX
F0B5   68         PLA
F0B6   0A         ASL
F0B7   0A         ASL
F0B8   95 99      STA $99,X
F0BA   98         TYA
F0BB   0A         ASL
F0BC   0A         ASL
F0BD   A8         TAY
F0BE   B9 A1 02   LDA $02A1,Y
F0C1   81 99      STA ($99,X)
F0C3   A9 00      LDA #$00
F0C5   99 A1 02   STA $02A1,Y
F0C8   F6 99      INC $99,X
F0CA   C8         INY
F0CB   98         TYA
F0CC   29 03      AND #$03
F0CE   D0 EE      BNE $F0BE
F0D0   60         RTS

F0D1   A5 7F      LDA $7F

F0D3   0A         ASL
F0D4   AA         TAX
F0D5   A9 00      LDA #$00
F0D7   9D 9D 02   STA $029D,X
F0DA   E8         INX
F0DB   9D 9D 02   STA $029D,X
F0DE   60         RTS


;

F0DF   B5 A7      LDA $A7,X
F0E1   C9 FF      CMP #$FF
F0E3   D0 25      BNE $F10A
F0E5   8A         TXA
F0E6   48         PHA
F0E7   20 8E D2   JSR $D28E
F0EA   AA         TAX
F0EB   10 05      BPL $F0F2
F0ED   A9 70      LDA #$70
F0EF   20 C8 C1   JSR $C1C8
F0F2   86 F9      STX $F9
F0F4   68         PLA
F0F5   A8         TAY
F0F6   8A         TXA
F0F7   09 80      ORA #$80
F0F9   99 A7 00   STA $00A7,Y
F0FC   0A         ASL
F0FD   AA         TAX
F0FE   AD 85 FE   LDA $FE85
F101   95 06      STA $06,X
F103   A9 00      LDA #$00
F105   95 07      STA $07,X
F107   4C 86 D5   JMP $D586
F10A   29 0F      AND #$0F
F10C   85 F9      STA $F9
F10E   60         RTS


; get buffer number for BAM

F10F   A9 06      LDA #$06
F111   A6 7F      LDX $7F
F113   D0 03      BNE $F118
F115   18         CLC
F116   69 07      ADC #$07
F118   60         RTS


; buffer number for BAM

F119   20 0F F1   JSR $F10F
F11C   AA         TAX
F11D   60         RTS


; find and allocate free block

F11E   20 3E DE   JSR $DE3E
F121   A9 03      LDA #$03
F123   85 6F      STA $6F
F125   A9 01      LDA #$01
F127   0D F9 02   ORA $02F9
F12A   8D F9 02   STA $02F9

F12D   A5 6F      LDA $6F

F12F   48         PHA
F130   20 11 F0   JSR $F011
F133   68         PLA
F134   85 6F      STA $6F
F136   B1 6D      LDA ($6D),Y
F138   D0 39      BNE $F173
F13A   A5 80      LDA $80
F13C   CD 85 FE   CMP $FE85
F13F   F0 19      BEQ $F15A
F141   90 1C      BCC $F15F
F143   E6 80      INC $80
F145   A5 80      LDA $80
F147   CD D7 FE   CMP $FED7
F14A   D0 E1      BNE $F12D
F14C   AE 85 FE   LDX $FE85
F14F   CA         DEX
F150   86 80      STX $80
F152   A9 00      LDA #$00
F154   85 81      STA $81
F156   C6 6F      DEC $6F
F158   D0 D3      BNE $F12D
F15A   A9 72      LDA #$72
F15C   20 C8 C1   JSR $C1C8
F15F   C6 80      DEC $80
F161   D0 CA      BNE $F12D
F163   AE 85 FE   LDX $FE85
F166   E8         INX
F167   86 80      STX $80
F169   A9 00      LDA #$00
F16B   85 81      STA $81
F16D   C6 6F      DEC $6F
F16F   D0 BC      BNE $F12D
F171   F0 E7      BEQ $F15A
F173   A5 81      LDA $81
F175   18         CLC
F176   65 69      ADC $69
F178   85 81      STA $81
F17A   A5 80      LDA $80
F17C   20 4B F2   JSR $F24B
F17F   8D 4E 02   STA $024E
F182   8D 4D 02   STA $024D
F185   C5 81      CMP $81
F187   B0 0C      BCS $F195
F189   38         SEC
F18A   A5 81      LDA $81
F18C   ED 4E 02   SBC $024E
F18F   85 81      STA $81
F191   F0 02      BEQ $F195
F193   C6 81      DEC $81
F195   20 FA F1   JSR $F1FA
F198   F0 03      BEQ $F19D
F19A   4C 90 EF   JMP $EF90
F19D   A9 00      LDA #$00
F19F   85 81      STA $81
F1A1   20 FA F1   JSR $F1FA
F1A4   D0 F4      BNE $F19A
F1A6   4C F5 F1   JMP $F1F5


; find free sector and allocate

F1A9   A9 01      LDA #$01
F1AB   0D F9 02   ORA $02F9
F1AE   8D F9 02   STA $02F9
F1B1   A5 86      LDA $86
F1B3   48         PHA
F1B4   A9 01      LDA #$01
F1B6   85 86      STA $86
F1B8   AD 85 FE   LDA $FE85
F1BB   38         SEC
F1BC   E5 86      SBC $86
F1BE   85 80      STA $80
F1C0   90 09      BCC $F1CB
F1C2   F0 07      BEQ $F1CB
F1C4   20 11 F0   JSR $F011
F1C7   B1 6D      LDA ($6D),Y
F1C9   D0 1B      BNE $F1E6
F1CB   AD 85 FE   LDA $FE85
F1CE   18         CLC
F1CF   65 86      ADC $86
F1D1   85 80      STA $80
F1D3   E6 86      INC $86
F1D5   CD D7 FE   CMP $FED7
F1D8   90 05      BCC $F1DF
F1DA   A9 67      LDA #$67
F1DC   20 45 E6   JSR $E645
F1DF   20 11 F0   JSR $F011
F1E2   B1 6D      LDA ($6D),Y
F1E4   F0 D2      BEQ $F1B8
F1E6   68         PLA
F1E7   85 86      STA $86
F1E9   A9 00      LDA #$00
F1EB   85 81      STA $81
F1ED   20 FA F1   JSR $F1FA
F1F0   F0 03      BEQ $F1F5
F1F2   4C 90 EF   JMP $EF90

F1F5   A9 71      LDA #$71

F1F7   20 45 E6   JSR $E645


; find free sectors in current track

F1FA   20 11 F0   JSR $F011
F1FD   98         TYA
F1FE   48         PHA
F1FF   20 20 F2   JSR $F220
F202   A5 80      LDA $80
F204   20 4B F2   JSR $F24B
F207   8D 4E 02   STA $024E
F20A   68         PLA
F20B   85 6F      STA $6F
F20D   A5 81      LDA $81
F20F   CD 4E 02   CMP $024E
F212   B0 09      BCS $F21D
F214   20 D5 EF   JSR $EFD5
F217   D0 06      BNE $F21F
F219   E6 81      INC $81
F21B   D0 F0      BNE $F20D
F21D   A9 00      LDA #$00
F21F   60         RTS


; verify number of free blocks in BAM

F220   A5 6F      LDA $6F
F222   48         PHA
F223   A9 00      LDA #$00
F225   85 6F      STA $6F
F227   AC 86 FE   LDY $FE86
F22A   88         DEY
F22B   A2 07      LDX #$07
F22D   B1 6D      LDA ($6D),Y
F22F   3D E9 EF   AND $EFE9,X
F232   F0 02      BEQ $F236
F234   E6 6F      INC $6F
F236   CA         DEX
F237   10 F4      BPL $F22D
F239   88         DEY
F23A   D0 EF      BNE $F22B
F23C   B1 6D      LDA ($6D),Y
F23E   C5 6F      CMP $6F
F240   D0 04      BNE $F246
F242   68         PLA
F243   85 6F      STA $6F
F245   60         RTS
F246   A9 71      LDA #$71
F248   20 45 E6   JSR $E645


; establish number of sectors per track

F24B   AE D6 FE   LDX $FED6
F24E   DD D6 FE   CMP $FED6,X
F251   CA         DEX
F252   B0 FA      BCS $F24E
F254   BD D1 FE   LDA $FED1,X
F257   60         RTS

F258   60         RTS


; initialise disk controller

F259   A9 6F      LDA #$6F
F25B   8D 02 1C   STA $1C02
F25E   29 F0      AND #$F0
F260   8D 00 1C   STA $1C00
F263   AD 0C 1C   LDA $1C0C
F266   29 FE      AND #$FE
F268   09 0E      ORA #$0E
F26A   09 E0      ORA #$E0
F26C   8D 0C 1C   STA $1C0C
F26F   A9 41      LDA #$41
F271   8D 0B 1C   STA $1C0B
F274   A9 00      LDA #$00
F276   8D 06 1C   STA $1C06
F279   A9 3A      LDA #$3A
F27B   8D 07 1C   STA $1C07
F27E   8D 05 1C   STA $1C05
F281   A9 7F      LDA #$7F
F283   8D 0E 1C   STA $1C0E
F286   A9 C0      LDA #$C0
F288   8D 0D 1C   STA $1C0D
F28B   8D 0E 1C   STA $1C0E
F28E   A9 FF      LDA #$FF
F290   85 3E      STA $3E
F292   85 51      STA $51
F294   A9 08      LDA #$08
F296   85 39      STA $39
F298   A9 07      LDA #$07
F29A   85 47      STA $47
F29C   A9 05      LDA #$05
F29E   85 62      STA $62
F2A0   A9 FA      LDA #$FA
F2A2   85 63      STA $63
F2A4   A9 C8      LDA #$C8
F2A6   85 64      STA $64
F2A8   A9 04      LDA #$04
F2AA   85 5E      STA $5E
F2AC   A9 04      LDA #$04
F2AE   85 5F      STA $5F


; IRQ routine for disk controller

F2B0   BA         TSX
F2B1   86 49      STX $49
F2B3   AD 04 1C   LDA $1C04
F2B6   AD 0C 1C   LDA $1C0C
F2B9   09 0E      ORA #$0E
F2BB   8D 0C 1C   STA $1C0C

F2BE   A0 05      LDY #$05

F2C0   B9 00 00   LDA $0000,Y
F2C3   10 2E      BPL $F2F3
F2C5   C9 D0      CMP #$D0
F2C7   D0 04      BNE $F2CD
F2C9   98         TYA
F2CA   4C 70 F3   JMP $F370
F2CD   29 01      AND #$01
F2CF   F0 07      BEQ $F2D8
F2D1   84 3F      STY $3F
F2D3   A9 0F      LDA #$0F
F2D5   4C 69 F9   JMP $F969
F2D8   AA         TAX
F2D9   85 3D      STA $3D
F2DB   C5 3E      CMP $3E
F2DD   F0 0A      BEQ $F2E9
F2DF   20 7E F9   JSR $F97E
F2E2   A5 3D      LDA $3D
F2E4   85 3E      STA $3E
F2E6   4C 9C F9   JMP $F99C
F2E9   A5 20      LDA $20
F2EB   30 03      BMI $F2F0
F2ED   0A         ASL
F2EE   10 09      BPL $F2F9
F2F0   4C 9C F9   JMP $F99C
F2F3   88         DEY
F2F4   10 CA      BPL $F2C0
F2F6   4C 9C F9   JMP $F99C


; head transport

F2F9   A9 20      LDA #$20
F2FB   85 20      STA $20
F2FD   A0 05      LDY #$05
F2FF   84 3F      STY $3F
F301   20 93 F3   JSR $F393
F304   30 1A      BMI $F320

F306   C6 3F      DEC $3F

F308   10 F7      BPL $F301
F30A   A4 41      LDY $41
F30C   20 95 F3   JSR $F395
F30F   A5 42      LDA $42
F311   85 4A      STA $4A
F313   06 4A      ASL $4A
F315   A9 60      LDA #$60
F317   85 20      STA $20
F319   B1 32      LDA ($32),Y
F31B   85 22      STA $22
F31D   4C 9C F9   JMP $F99C
F320   29 01      AND #$01
F322   C5 3D      CMP $3D
F324   D0 E0      BNE $F306
F326   A5 22      LDA $22
F328   F0 12      BEQ $F33C
F32A   38         SEC
F32B   F1 32      SBC ($32),Y
F32D   F0 0D      BEQ $F33C
F32F   49 FF      EOR #$FF
F331   85 42      STA $42
F333   E6 42      INC $42
F335   A5 3F      LDA $3F
F337   85 41      STA $41
F339   4C 06 F3   JMP $F306
F33C   A2 04      LDX #$04
F33E   B1 32      LDA ($32),Y
F340   85 40      STA $40
F342   DD D6 FE   CMP $FED6,X
F345   CA         DEX
F346   B0 FA      BCS $F342
F348   BD D1 FE   LDA $FED1,X
F34B   85 43      STA $43
F34D   8A         TXA
F34E   0A         ASL
F34F   0A         ASL
F350   0A         ASL
F351   0A         ASL
F352   0A         ASL
F353   85 44      STA $44
F355   AD 00 1C   LDA $1C00
F358   29 9F      AND #$9F
F35A   05 44      ORA $44
F35C   8D 00 1C   STA $1C00
F35F   A6 3D      LDX $3D
F361   A5 45      LDA $45
F363   C9 40      CMP #$40
F365   F0 15      BEQ $F37C
F367   C9 60      CMP #$60
F369   F0 03      BEQ $F36E
F36B   4C B1 F3   JMP $F3B1


; execute program in buffer

F36E   A5 3F      LDA $3F

F370   18         CLC

F371   69 03      ADC #$03
F373   85 31      STA $31
F375   A9 00      LDA #$00
F377   85 30      STA $30
F379   6C 30 00   JMP ($0030)


; bump, find track 1 (head at stop)

F37C   A9 60      LDA #$60
F37E   85 20      STA $20
F380   AD 00 1C   LDA $1C00
F383   29 FC      AND #$FC
F385   8D 00 1C   STA $1C00
F388   A9 A4      LDA #$A4
F38A   85 4A      STA $4A
F38C   A9 01      LDA #$01
F38E   85 22      STA $22
F390   4C 69 F9   JMP $F969


; initialise pointer in buffer

F393   A4 3F      LDY $3F

F395   B9 00 00   LDA $0000,Y

F398   48         PHA
F399   10 10      BPL $F3AB
F39B   29 78      AND #$78
F39D   85 45      STA $45
F39F   98         TYA
F3A0   0A         ASL
F3A1   69 06      ADC #$06
F3A3   85 32      STA $32
F3A5   98         TYA
F3A6   18         CLC
F3A7   69 03      ADC #$03
F3A9   85 31      STA $31
F3AB   A0 00      LDY #$00
F3AD   84 30      STY $30
F3AF   68         PLA
F3B0   60         RTS


; read block header, verify ID

F3B1   A2 5A      LDX #$5A
F3B3   86 4B      STX $4B
F3B5   A2 00      LDX #$00
F3B7   A9 52      LDA #$52
F3B9   85 24      STA $24
F3BB   20 56 F5   JSR $F556
F3BE   50 FE      BVC $F3BE
F3C0   B8         CLV
F3C1   AD 01 1C   LDA $1C01
F3C4   C5 24      CMP $24
F3C6   D0 3F      BNE $F407
F3C8   50 FE      BVC $F3C8
F3CA   B8         CLV
F3CB   AD 01 1C   LDA $1C01
F3CE   95 25      STA $25,X
F3D0   E8         INX
F3D1   E0 07      CPX #$07
F3D3   D0 F3      BNE $F3C8
F3D5   20 97 F4   JSR $F497
F3D8   A0 04      LDY #$04
F3DA   A9 00      LDA #$00
F3DC   59 16 00   EOR $0016,Y
F3DF   88         DEY
F3E0   10 FA      BPL $F3DC
F3E2   C9 00      CMP #$00
F3E4   D0 38      BNE $F41E
F3E6   A6 3E      LDX $3E
F3E8   A5 18      LDA $18
F3EA   95 22      STA $22,X
F3EC   A5 45      LDA $45
F3EE   C9 30      CMP #$30
F3F0   F0 1E      BEQ $F410
F3F2   A5 3E      LDA $3E
F3F4   0A         ASL
F3F5   A8         TAY
F3F6   B9 12 00   LDA $0012,Y
F3F9   C5 16      CMP $16
F3FB   D0 1E      BNE $F41B
F3FD   B9 13 00   LDA $0013,Y
F400   C5 17      CMP $17
F402   D0 17      BNE $F41B
F404   4C 23 F4   JMP $F423
F407   C6 4B      DEC $4B
F409   D0 B0      BNE $F3BB
F40B   A9 02      LDA #$02
F40D   20 69 F9   JSR $F969


; preserve block header

F410   A5 16      LDA $16
F412   85 12      STA $12
F414   A5 17      LDA $17
F416   85 13      STA $13

F418   A9 01      LDA #$01

F41A   .BY $2C
F41B   A9 0B      LDA #$0B
F41D   .BY $2C
F41E   A9 09      LDA #$09
F420   4C 69 F9   JMP $F969


; job optimisation

F423   A9 7F      LDA #$7F
F425   85 4C      STA $4C
F427   A5 19      LDA $19
F429   18         CLC
F42A   69 02      ADC #$02
F42C   C5 43      CMP $43
F42E   90 02      BCC $F432
F430   E5 43      SBC $43
F432   85 4D      STA $4D
F434   A2 05      LDX #$05
F436   86 3F      STX $3F
F438   A2 FF      LDX #$FF
F43A   20 93 F3   JSR $F393
F43D   10 44      BPL $F483
F43F   85 44      STA $44
F441   29 01      AND #$01
F443   C5 3E      CMP $3E
F445   D0 3C      BNE $F483
F447   A0 00      LDY #$00
F449   B1 32      LDA ($32),Y
F44B   C5 40      CMP $40
F44D   D0 34      BNE $F483
F44F   A5 45      LDA $45
F451   C9 60      CMP #$60
F453   F0 0C      BEQ $F461
F455   A0 01      LDY #$01
F457   38         SEC
F458   B1 32      LDA ($32),Y
F45A   E5 4D      SBC $4D
F45C   10 03      BPL $F461
F45E   18         CLC
F45F   65 43      ADC $43
F461   C5 4C      CMP $4C
F463   B0 1E      BCS $F483
F465   48         PHA
F466   A5 45      LDA $45
F468   F0 14      BEQ $F47E
F46A   68         PLA
F46B   C9 09      CMP #$09
F46D   90 14      BCC $F483
F46F   C9 0C      CMP #$0C
F471   B0 10      BCS $F483
F473   85 4C      STA $4C
F475   A5 3F      LDA $3F
F477   AA         TAX
F478   69 03      ADC #$03
F47A   85 31      STA $31
F47C   D0 05      BNE $F483
F47E   68         PLA
F47F   C9 06      CMP #$06
F481   90 F0      BCC $F473
F483   C6 3F      DEC $3F
F485   10 B3      BPL $F43A
F487   8A         TXA
F488   10 03      BPL $F48D
F48A   4C 9C F9   JMP $F99C
F48D   86 3F      STX $3F
F48F   20 93 F3   JSR $F393
F492   A5 45      LDA $45
F494   4C CA F4   JMP $F4CA

F497   A5 30      LDA $30

F499   48         PHA
F49A   A5 31      LDA $31
F49C   48         PHA
F49D   A9 24      LDA #$24
F49F   85 30      STA $30
F4A1   A9 00      LDA #$00
F4A3   85 31      STA $31
F4A5   A9 00      LDA #$00
F4A7   85 34      STA $34
F4A9   20 E6 F7   JSR $F7E6
F4AC   A5 55      LDA $55
F4AE   85 18      STA $18
F4B0   A5 54      LDA $54
F4B2   85 19      STA $19
F4B4   A5 53      LDA $53
F4B6   85 1A      STA $1A
F4B8   20 E6 F7   JSR $F7E6
F4BB   A5 52      LDA $52
F4BD   85 17      STA $17
F4BF   A5 53      LDA $53
F4C1   85 16      STA $16
F4C3   68         PLA
F4C4   85 31      STA $31
F4C6   68         PLA
F4C7   85 30      STA $30
F4C9   60         RTS


; test command code further

F4CA   C9 00      CMP #$00
F4CC   F0 03      BEQ $F4D1
F4CE   4C 6E F5   JMP $F56E


; read sector

F4D1   20 0A F5   JSR $F50A
F4D4   50 FE      BVC $F4D4
F4D6   B8         CLV
F4D7   AD 01 1C   LDA $1C01
F4DA   91 30      STA ($30),Y
F4DC   C8         INY
F4DD   D0 F5      BNE $F4D4
F4DF   A0 BA      LDY #$BA
F4E1   50 FE      BVC $F4E1
F4E3   B8         CLV
F4E4   AD 01 1C   LDA $1C01
F4E7   99 00 01   STA $0100,Y
F4EA   C8         INY
F4EB   D0 F4      BNE $F4E1
F4ED   20 E0 F8   JSR $F8E0
F4F0   A5 38      LDA $38
F4F2   C5 47      CMP $47
F4F4   F0 05      BEQ $F4FB
F4F6   A9 04      LDA #$04
F4F8   4C 69 F9   JMP $F969
F4FB   20 E9 F5   JSR $F5E9
F4FE   C5 3A      CMP $3A
F500   F0 03      BEQ $F505
F502   A9 05      LDA #$05
F504   .BY $2C
F505   A9 01      LDA #$01
F507   4C 69 F9   JMP $F969


; find start of data block

F50A   20 10 F5   JSR $F510
F50D   4C 56 F5   JMP $F556


; read block header

F510   A5 3D      LDA $3D
F512   0A         ASL
F513   AA         TAX
F514   B5 12      LDA $12,X
F516   85 16      STA $16
F518   B5 13      LDA $13,X
F51A   85 17      STA $17
F51C   A0 00      LDY #$00
F51E   B1 32      LDA ($32),Y
F520   85 18      STA $18
F522   C8         INY
F523   B1 32      LDA ($32),Y
F525   85 19      STA $19
F527   A9 00      LDA #$00
F529   45 16      EOR $16
F52B   45 17      EOR $17
F52D   45 18      EOR $18
F52F   45 19      EOR $19
F531   85 1A      STA $1A
F533   20 34 F9   JSR $F934
F536   A2 5A      LDX #$5A
F538   20 56 F5   JSR $F556
F53B   A0 00      LDY #$00
F53D   50 FE      BVC $F53D
F53F   B8         CLV
F540   AD 01 1C   LDA $1C01
F543   D9 24 00   CMP $0024,Y
F546   D0 06      BNE $F54E
F548   C8         INY
F549   C0 08      CPY #$08
F54B   D0 F0      BNE $F53D
F54D   60         RTS
F54E   CA         DEX
F54F   D0 E7      BNE $F538
F551   A9 02      LDA #$02
F553   4C 69 F9   JMP $F969


; wait for SYNC

F556   A9 D0      LDA #$D0
F558   8D 05 18   STA $1805
F55B   A9 03      LDA #$03
F55D   2C 05 18   BIT $1805
F560   10 F1      BPL $F553
F562   2C 00 1C   BIT $1C00
F565   30 F6      BMI $F55D
F567   AD 01 1C   LDA $1C01
F56A   B8         CLV
F56B   A0 00      LDY #$00
F56D   60         RTS


; test command code further

F56E   C9 10      CMP #$10
F570   F0 03      BEQ $F575
F572   4C 91 F6   JMP $F691


; write data block to disk

F575   20 E9 F5   JSR $F5E9
F578   85 3A      STA $3A
F57A   AD 00 1C   LDA $1C00
F57D   29 10      AND #$10
F57F   D0 05      BNE $F586
F581   A9 08      LDA #$08
F583   4C 69 F9   JMP $F969
F586   20 8F F7   JSR $F78F
F589   20 10 F5   JSR $F510
F58C   A2 09      LDX #$09
F58E   50 FE      BVC $F58E
F590   B8         CLV
F591   CA         DEX
F592   D0 FA      BNE $F58E
F594   A9 FF      LDA #$FF
F596   8D 03 1C   STA $1C03
F599   AD 0C 1C   LDA $1C0C
F59C   29 1F      AND #$1F
F59E   09 C0      ORA #$C0
F5A0   8D 0C 1C   STA $1C0C
F5A3   A9 FF      LDA #$FF
F5A5   A2 05      LDX #$05
F5A7   8D 01 1C   STA $1C01
F5AA   B8         CLV
F5AB   50 FE      BVC $F5AB
F5AD   B8         CLV
F5AE   CA         DEX
F5AF   D0 FA      BNE $F5AB
F5B1   A0 BB      LDY #$BB
F5B3   B9 00 01   LDA $0100,Y
F5B6   50 FE      BVC $F5B6
F5B8   B8         CLV
F5B9   8D 01 1C   STA $1C01
F5BC   C8         INY
F5BD   D0 F4      BNE $F5B3
F5BF   B1 30      LDA ($30),Y
F5C1   50 FE      BVC $F5C1
F5C3   B8         CLV
F5C4   8D 01 1C   STA $1C01
F5C7   C8         INY
F5C8   D0 F5      BNE $F5BF
F5CA   50 FE      BVC $F5CA
F5CC   AD 0C 1C   LDA $1C0C
F5CF   09 E0      ORA #$E0
F5D1   8D 0C 1C   STA $1C0C
F5D4   A9 00      LDA #$00
F5D6   8D 03 1C   STA $1C03
F5D9   20 F2 F5   JSR $F5F2
F5DC   A4 3F      LDY $3F
F5DE   B9 00 00   LDA $0000,Y
F5E1   49 30      EOR #$30
F5E3   99 00 00   STA $0000,Y
F5E6   4C B1 F3   JMP $F3B1


; calculate parity for data buffer

F5E9   A9 00      LDA #$00
F5EB   A8         TAY
F5EC   51 30      EOR ($30),Y
F5EE   C8         INY
F5EF   D0 FB      BNE $F5EC
F5F1   60         RTS


; convert GCR data to normal data

F5F2   A9 00      LDA #$00
F5F4   85 2E      STA $2E
F5F6   85 30      STA $30
F5F8   85 4F      STA $4F
F5FA   A5 31      LDA $31
F5FC   85 4E      STA $4E
F5FE   A9 01      LDA #$01
F600   85 31      STA $31
F602   85 2F      STA $2F
F604   A9 BB      LDA #$BB
F606   85 34      STA $34
F608   85 36      STA $36
F60A   20 E6 F7   JSR $F7E6
F60D   A5 52      LDA $52
F60F   85 38      STA $38
F611   A4 36      LDY $36
F613   A5 53      LDA $53
F615   91 2E      STA ($2E),Y
F617   C8         INY
F618   A5 54      LDA $54
F61A   91 2E      STA ($2E),Y
F61C   C8         INY
F61D   A5 55      LDA $55
F61F   91 2E      STA ($2E),Y
F621   C8         INY
F622   84 36      STY $36
F624   20 E6 F7   JSR $F7E6
F627   A4 36      LDY $36
F629   A5 52      LDA $52
F62B   91 2E      STA ($2E),Y
F62D   C8         INY
F62E   A5 53      LDA $53
F630   91 2E      STA ($2E),Y
F632   C8         INY
F633   F0 0E      BEQ $F643
F635   A5 54      LDA $54
F637   91 2E      STA ($2E),Y
F639   C8         INY
F63A   A5 55      LDA $55
F63C   91 2E      STA ($2E),Y
F63E   C8         INY
F63F   84 36      STY $36
F641   D0 E1      BNE $F624
F643   A5 54      LDA $54
F645   91 30      STA ($30),Y
F647   C8         INY
F648   A5 55      LDA $55
F64A   91 30      STA ($30),Y
F64C   C8         INY
F64D   84 36      STY $36
F64F   20 E6 F7   JSR $F7E6
F652   A4 36      LDY $36
F654   A5 52      LDA $52
F656   91 30      STA ($30),Y
F658   C8         INY
F659   A5 53      LDA $53
F65B   91 30      STA ($30),Y
F65D   C8         INY
F65E   A5 54      LDA $54
F660   91 30      STA ($30),Y
F662   C8         INY
F663   A5 55      LDA $55
F665   91 30      STA ($30),Y
F667   C8         INY
F668   84 36      STY $36
F66A   C0 BB      CPY #$BB
F66C   90 E1      BCC $F64F
F66E   A9 45      LDA #$45
F670   85 2E      STA $2E
F672   A5 31      LDA $31
F674   85 2F      STA $2F
F676   A0 BA      LDY #$BA
F678   B1 30      LDA ($30),Y
F67A   91 2E      STA ($2E),Y
F67C   88         DEY
F67D   D0 F9      BNE $F678
F67F   B1 30      LDA ($30),Y
F681   91 2E      STA ($2E),Y
F683   A2 BB      LDX #$BB
F685   BD 00 01   LDA $0100,X
F688   91 30      STA ($30),Y
F68A   C8         INY
F68B   E8         INX
F68C   D0 F7      BNE $F685
F68E   86 50      STX $50
F690   60         RTS


; test command code further

F691   C9 20      CMP #$20
F693   F0 03      BEQ $F698
F695   4C CA F6   JMP $F6CA


; compare written data with data on disk

F698   20 E9 F5   JSR $F5E9
F69B   85 3A      STA $3A
F69D   20 8F F7   JSR $F78F
F6A0   20 0A F5   JSR $F50A
F6A3   A0 BB      LDY #$BB
F6A5   B9 00 01   LDA $0100,Y
F6A8   50 FE      BVC $F6A8
F6AA   B8         CLV
F6AB   4D 01 1C   EOR $1C01
F6AE   D0 15      BNE $F6C5
F6B0   C8         INY
F6B1   D0 F2      BNE $F6A5
F6B3   B1 30      LDA ($30),Y
F6B5   50 FE      BVC $F6B5
F6B7   B8         CLV
F6B8   4D 01 1C   EOR $1C01
F6BB   D0 08      BNE $F6C5
F6BD   C8         INY
F6BE   C0 FD      CPY #$FD
F6C0   D0 F1      BNE $F6B3
F6C2   4C 18 F4   JMP $F418
F6C5   A9 07      LDA #$07
F6C7   4C 69 F9   JMP $F969


; command code for find sector

F6CA   20 10 F5   JSR $F510
F6CD   4C 18 F4   JMP $F418


; convert 4 bytes ($52-$55) to
; 5 GCR bytes ($56-$5a)

F6D0   A9 00      LDA #$00
F6D2   85 57      STA $57
F6D4   85 5A      STA $5A
F6D6   A4 34      LDY $34
F6D8   A5 52      LDA $52
F6DA   29 F0      AND #$F0
F6DC   4A         LSR
F6DD   4A         LSR
F6DE   4A         LSR
F6DF   4A         LSR
F6E0   AA         TAX
F6E1   BD 7F F7   LDA $F77F,X
F6E4   0A         ASL
F6E5   0A         ASL
F6E6   0A         ASL
F6E7   85 56      STA $56
F6E9   A5 52      LDA $52
F6EB   29 0F      AND #$0F
F6ED   AA         TAX
F6EE   BD 7F F7   LDA $F77F,X
F6F1   6A         ROR
F6F2   66 57      ROR $57
F6F4   6A         ROR
F6F5   66 57      ROR $57
F6F7   29 07      AND #$07
F6F9   05 56      ORA $56
F6FB   91 30      STA ($30),Y
F6FD   C8         INY
F6FE   A5 53      LDA $53
F700   29 F0      AND #$F0
F702   4A         LSR
F703   4A         LSR
F704   4A         LSR
F705   4A         LSR
F706   AA         TAX
F707   BD 7F F7   LDA $F77F,X
F70A   0A         ASL
F70B   05 57      ORA $57
F70D   85 57      STA $57
F70F   A5 53      LDA $53
F711   29 0F      AND #$0F
F713   AA         TAX
F714   BD 7F F7   LDA $F77F,X
F717   2A         ROL
F718   2A         ROL
F719   2A         ROL
F71A   2A         ROL
F71B   85 58      STA $58
F71D   2A         ROL
F71E   29 01      AND #$01
F720   05 57      ORA $57
F722   91 30      STA ($30),Y
F724   C8         INY
F725   A5 54      LDA $54
F727   29 F0      AND #$F0
F729   4A         LSR
F72A   4A         LSR
F72B   4A         LSR
F72C   4A         LSR
F72D   AA         TAX
F72E   BD 7F F7   LDA $F77F,X
F731   18         CLC
F732   6A         ROR
F733   05 58      ORA $58
F735   91 30      STA ($30),Y
F737   C8         INY
F738   6A         ROR
F739   29 80      AND #$80
F73B   85 59      STA $59
F73D   A5 54      LDA $54
F73F   29 0F      AND #$0F
F741   AA         TAX
F742   BD 7F F7   LDA $F77F,X
F745   0A         ASL
F746   0A         ASL
F747   29 7C      AND #$7C
F749   05 59      ORA $59
F74B   85 59      STA $59
F74D   A5 55      LDA $55
F74F   29 F0      AND #$F0
F751   4A         LSR
F752   4A         LSR
F753   4A         LSR
F754   4A         LSR
F755   AA         TAX
F756   BD 7F F7   LDA $F77F,X
F759   6A         ROR
F75A   66 5A      ROR $5A
F75C   6A         ROR
F75D   66 5A      ROR $5A
F75F   6A         ROR
F760   66 5A      ROR $5A
F762   29 03      AND #$03
F764   05 59      ORA $59
F766   91 30      STA ($30),Y
F768   C8         INY
F769   D0 04      BNE $F76F
F76B   A5 2F      LDA $2F
F76D   85 31      STA $31
F76F   A5 55      LDA $55
F771   29 0F      AND #$0F
F773   AA         TAX
F774   BD 7F F7   LDA $F77F,X
F777   05 5A      ORA $5A
F779   91 30      STA ($30),Y
F77B   C8         INY
F77C   84 34      STY $34
F77E   60         RTS


; GCR code table

F77F   .BY $0A,$0B,$12,$13,$0E,$0F,$16,$17
F787   .BY $09,$19,$1A,$1B,$0D,$1D,$1E,$15


; convert 260 bytes to 325 bytes group code

F78F   A9 00      LDA #$00
F791   85 30      STA $30
F793   85 2E      STA $2E
F795   85 36      STA $36
F797   A9 BB      LDA #$BB
F799   85 34      STA $34
F79B   85 50      STA $50
F79D   A5 31      LDA $31
F79F   85 2F      STA $2F
F7A1   A9 01      LDA #$01
F7A3   85 31      STA $31
F7A5   A5 47      LDA $47
F7A7   85 52      STA $52
F7A9   A4 36      LDY $36
F7AB   B1 2E      LDA ($2E),Y
F7AD   85 53      STA $53
F7AF   C8         INY
F7B0   B1 2E      LDA ($2E),Y
F7B2   85 54      STA $54
F7B4   C8         INY
F7B5   B1 2E      LDA ($2E),Y
F7B7   85 55      STA $55
F7B9   C8         INY
F7BA   84 36      STY $36
F7BC   20 D0 F6   JSR $F6D0
F7BF   A4 36      LDY $36
F7C1   B1 2E      LDA ($2E),Y
F7C3   85 52      STA $52
F7C5   C8         INY
F7C6   F0 11      BEQ $F7D9
F7C8   B1 2E      LDA ($2E),Y
F7CA   85 53      STA $53
F7CC   C8         INY
F7CD   B1 2E      LDA ($2E),Y
F7CF   85 54      STA $54
F7D1   C8         INY
F7D2   B1 2E      LDA ($2E),Y
F7D4   85 55      STA $55
F7D6   C8         INY
F7D7   D0 E1      BNE $F7BA
F7D9   A5 3A      LDA $3A
F7DB   85 53      STA $53
F7DD   A9 00      LDA #$00
F7DF   85 54      STA $54
F7E1   85 55      STA $55
F7E3   4C D0 F6   JMP $F6D0


; convert 5 GCR bytes to 4 normal bytes

F7E6   A4 34      LDY $34
F7E8   B1 30      LDA ($30),Y
F7EA   29 F8      AND #$F8
F7EC   4A         LSR
F7ED   4A         LSR
F7EE   4A         LSR
F7EF   85 56      STA $56
F7F1   B1 30      LDA ($30),Y
F7F3   29 07      AND #$07
F7F5   0A         ASL
F7F6   0A         ASL
F7F7   85 57      STA $57
F7F9   C8         INY
F7FA   D0 06      BNE $F802
F7FC   A5 4E      LDA $4E
F7FE   85 31      STA $31
F800   A4 4F      LDY $4F
F802   B1 30      LDA ($30),Y
F804   29 C0      AND #$C0
F806   2A         ROL
F807   2A         ROL
F808   2A         ROL
F809   05 57      ORA $57
F80B   85 57      STA $57
F80D   B1 30      LDA ($30),Y
F80F   29 3E      AND #$3E
F811   4A         LSR
F812   85 58      STA $58
F814   B1 30      LDA ($30),Y
F816   29 01      AND #$01
F818   0A         ASL
F819   0A         ASL
F81A   0A         ASL
F81B   0A         ASL
F81C   85 59      STA $59
F81E   C8         INY
F81F   B1 30      LDA ($30),Y
F821   29 F0      AND #$F0
F823   4A         LSR
F824   4A         LSR
F825   4A         LSR
F826   4A         LSR
F827   05 59      ORA $59
F829   85 59      STA $59
F82B   B1 30      LDA ($30),Y
F82D   29 0F      AND #$0F
F82F   0A         ASL
F830   85 5A      STA $5A
F832   C8         INY
F833   B1 30      LDA ($30),Y
F835   29 80      AND #$80
F837   18         CLC
F838   2A         ROL
F839   2A         ROL
F83A   29 01      AND #$01
F83C   05 5A      ORA $5A
F83E   85 5A      STA $5A
F840   B1 30      LDA ($30),Y
F842   29 7C      AND #$7C
F844   4A         LSR
F845   4A         LSR
F846   85 5B      STA $5B
F848   B1 30      LDA ($30),Y
F84A   29 03      AND #$03
F84C   0A         ASL
F84D   0A         ASL
F84E   0A         ASL
F84F   85 5C      STA $5C
F851   C8         INY
F852   D0 06      BNE $F85A
F854   A5 4E      LDA $4E
F856   85 31      STA $31
F858   A4 4F      LDY $4F
F85A   B1 30      LDA ($30),Y
F85C   29 E0      AND #$E0
F85E   2A         ROL
F85F   2A         ROL
F860   2A         ROL
F861   2A         ROL
F862   05 5C      ORA $5C
F864   85 5C      STA $5C
F866   B1 30      LDA ($30),Y
F868   29 1F      AND #$1F
F86A   85 5D      STA $5D
F86C   C8         INY
F86D   84 34      STY $34
F86F   A6 56      LDX $56
F871   BD A0 F8   LDA $F8A0,X
F874   A6 57      LDX $57
F876   1D C0 F8   ORA $F8C0,X
F879   85 52      STA $52
F87B   A6 58      LDX $58
F87D   BD A0 F8   LDA $F8A0,X
F880   A6 59      LDX $59
F882   1D C0 F8   ORA $F8C0,X
F885   85 53      STA $53
F887   A6 5A      LDX $5A
F889   BD A0 F8   LDA $F8A0,X
F88C   A6 5B      LDX $5B
F88E   1D C0 F8   ORA $F8C0,X
F891   85 54      STA $54
F893   A6 5C      LDX $5C
F895   BD A0 F8   LDA $F8A0,X
F898   A6 5D      LDX $5D
F89A   1D C0 F8   ORA $F8C0,X
F89D   85 55      STA $55
F89F   60         RTS


; conversion table
; GCR to binary - high byte
; $FF means invalid

F8A0   .BY $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
F8A8   .BY $FF,$80,$00,$10,$FF,$C0,$40,$50
F8B0   .BY $FF,$FF,$20,$30,$FF,$F0,$60,$70
F8B8   .BY $FF,$90,$A0,$B0,$FF,$D0,$E0,$FF


; conversion table
; GCR to binary - low  byte
; $FF means invalid

F8C0   .BY $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
F8C8   .BY $FF,$08,$00,$01,$FF,$0C,$04,$05
F8D0   .BY $FF,$FF,$02,$03,$FF,$0F,$06,$07
F8D8   .BY $FF,$09,$0A,$0B,$FF,$0D,$0E,$FF


; decode 69 GCR bytes

F8E0   A9 00      LDA #$00
F8E2   85 34      STA $34
F8E4   85 2E      STA $2E
F8E6   85 36      STA $36
F8E8   A9 01      LDA #$01
F8EA   85 4E      STA $4E
F8EC   A9 BA      LDA #$BA
F8EE   85 4F      STA $4F
F8F0   A5 31      LDA $31
F8F2   85 2F      STA $2F
F8F4   20 E6 F7   JSR $F7E6
F8F7   A5 52      LDA $52
F8F9   85 38      STA $38
F8FB   A4 36      LDY $36
F8FD   A5 53      LDA $53
F8FF   91 2E      STA ($2E),Y
F901   C8         INY
F902   A5 54      LDA $54
F904   91 2E      STA ($2E),Y
F906   C8         INY
F907   A5 55      LDA $55
F909   91 2E      STA ($2E),Y
F90B   C8         INY
F90C   84 36      STY $36
F90E   20 E6 F7   JSR $F7E6
F911   A4 36      LDY $36
F913   A5 52      LDA $52
F915   91 2E      STA ($2E),Y
F917   C8         INY
F918   F0 11      BEQ $F92B
F91A   A5 53      LDA $53
F91C   91 2E      STA ($2E),Y
F91E   C8         INY
F91F   A5 54      LDA $54
F921   91 2E      STA ($2E),Y
F923   C8         INY
F924   A5 55      LDA $55
F926   91 2E      STA ($2E),Y
F928   C8         INY
F929   D0 E1      BNE $F90C
F92B   A5 53      LDA $53
F92D   85 3A      STA $3A
F92F   A5 2F      LDA $2F
F931   85 31      STA $31
F933   60         RTS


; convert block header to GCR code

F934   A5 31      LDA $31
F936   85 2F      STA $2F
F938   A9 00      LDA #$00
F93A   85 31      STA $31
F93C   A9 24      LDA #$24
F93E   85 34      STA $34
F940   A5 39      LDA $39
F942   85 52      STA $52
F944   A5 1A      LDA $1A
F946   85 53      STA $53
F948   A5 19      LDA $19
F94A   85 54      STA $54
F94C   A5 18      LDA $18
F94E   85 55      STA $55
F950   20 D0 F6   JSR $F6D0
F953   A5 17      LDA $17
F955   85 52      STA $52
F957   A5 16      LDA $16
F959   85 53      STA $53
F95B   A9 00      LDA #$00
F95D   85 54      STA $54
F95F   85 55      STA $55
F961   20 D0 F6   JSR $F6D0
F964   A5 2F      LDA $2F
F966   85 31      STA $31
F968   60         RTS


; error entry disk controller

F969   A4 3F      LDY $3F
F96B   99 00 00   STA $0000,Y
F96E   A5 50      LDA $50
F970   F0 03      BEQ $F975
F972   20 F2 F5   JSR $F5F2
F975   20 8F F9   JSR $F98F
F978   A6 49      LDX $49
F97A   9A         TXS
F97B   4C BE F2   JMP $F2BE


; turn drive motor on

F97E   A9 A0      LDA #$A0
F980   85 20      STA $20
F982   AD 00 1C   LDA $1C00
F985   09 04      ORA #$04
F987   8D 00 1C   STA $1C00
F98A   A9 3C      LDA #$3C
F98C   85 48      STA $48
F98E   60         RTS


; turn drive motor off

F98F   A6 3E      LDX $3E
F991   A5 20      LDA $20
F993   09 10      ORA #$10
F995   85 20      STA $20
F997   A9 FF      LDA #$FF
F999   85 48      STA $48
F99B   60         RTS


; job loop disk controller

F99C   AD 07 1C   LDA $1C07
F99F   8D 05 1C   STA $1C05
F9A2   AD 00 1C   LDA $1C00
F9A5   29 10      AND #$10
F9A7   C5 1E      CMP $1E
F9A9   85 1E      STA $1E
F9AB   F0 04      BEQ $F9B1
F9AD   A9 01      LDA #$01
F9AF   85 1C      STA $1C
F9B1   AD FE 02   LDA $02FE
F9B4   F0 15      BEQ $F9CB
F9B6   C9 02      CMP #$02
F9B8   D0 07      BNE $F9C1
F9BA   A9 00      LDA #$00
F9BC   8D FE 02   STA $02FE
F9BF   F0 0A      BEQ $F9CB
F9C1   85 4A      STA $4A
F9C3   A9 02      LDA #$02
F9C5   8D FE 02   STA $02FE
F9C8   4C 2E FA   JMP $FA2E


;

F9CB   A6 3E      LDX $3E
F9CD   30 07      BMI $F9D6
F9CF   A5 20      LDA $20
F9D1   A8         TAY
F9D2   C9 20      CMP #$20
F9D4   D0 03      BNE $F9D9
F9D6   4C BE FA   JMP $FABE


;

F9D9   C6 48      DEC $48
F9DB   D0 1D      BNE $F9FA
F9DD   98         TYA
F9DE   10 04      BPL $F9E4
F9E0   29 7F      AND #$7F
F9E2   85 20      STA $20
F9E4   29 10      AND #$10
F9E6   F0 12      BEQ $F9FA
F9E8   AD 00 1C   LDA $1C00
F9EB   29 FB      AND #$FB
F9ED   8D 00 1C   STA $1C00
F9F0   A9 FF      LDA #$FF
F9F2   85 3E      STA $3E
F9F4   A9 00      LDA #$00
F9F6   85 20      STA $20
F9F8   F0 DC      BEQ $F9D6
F9FA   98         TYA
F9FB   29 40      AND #$40
F9FD   D0 03      BNE $FA02
F9FF   4C BE FA   JMP $FABE
FA02   6C 62 00   JMP ($0062)


;

FA05   A5 4A      LDA $4A
FA07   10 05      BPL $FA0E
FA09   49 FF      EOR #$FF
FA0B   18         CLC
FA0C   69 01      ADC #$01
FA0E   C5 64      CMP $64
FA10   B0 0A      BCS $FA1C
FA12   A9 3B      LDA #$3B
FA14   85 62      STA $62
FA16   A9 FA      LDA #$FA
FA18   85 63      STA $63
FA1A   D0 12      BNE $FA2E


; calculate number of head steps

FA1C   E5 5E      SBC $5E
FA1E   E5 5E      SBC $5E
FA20   85 61      STA $61
FA22   A5 5E      LDA $5E
FA24   85 60      STA $60
FA26   A9 7B      LDA #$7B
FA28   85 62      STA $62
FA2A   A9 FA      LDA #$FA
FA2C   85 63      STA $63

FA2E   A5 4A      LDA $4A

FA30   10 31      BPL $FA63
FA32   E6 4A      INC $4A
FA34   AE 00 1C   LDX $1C00
FA37   CA         DEX
FA38   4C 69 FA   JMP $FA69


; move stepper motor short distance

FA3B   A5 4A      LDA $4A
FA3D   D0 EF      BNE $FA2E
FA3F   A9 4E      LDA #$4E
FA41   85 62      STA $62
FA43   A9 FA      LDA #$FA
FA45   85 63      STA $63
FA47   A9 05      LDA #$05
FA49   85 60      STA $60
FA4B   4C BE FA   JMP $FABE


; load head

FA4E   C6 60      DEC $60
FA50   D0 6C      BNE $FABE
FA52   A5 20      LDA $20
FA54   29 BF      AND #$BF
FA56   85 20      STA $20
FA58   A9 05      LDA #$05
FA5A   85 62      STA $62
FA5C   A9 FA      LDA #$FA
FA5E   85 63      STA $63
FA60   4C BE FA   JMP $FABE


;

FA63   C6 4A      DEC $4A
FA65   AE 00 1C   LDX $1C00
FA68   E8         INX

FA69   8A         TXA

FA6A   29 03      AND #$03
FA6C   85 4B      STA $4B
FA6E   AD 00 1C   LDA $1C00
FA71   29 FC      AND #$FC
FA73   05 4B      ORA $4B
FA75   8D 00 1C   STA $1C00
FA78   4C BE FA   JMP $FABE


; prepare fast head movement

FA7B   38         SEC
FA7C   AD 07 1C   LDA $1C07
FA7F   E5 5F      SBC $5F
FA81   8D 05 1C   STA $1C05
FA84   C6 60      DEC $60
FA86   D0 0C      BNE $FA94
FA88   A5 5E      LDA $5E
FA8A   85 60      STA $60
FA8C   A9 97      LDA #$97
FA8E   85 62      STA $62
FA90   A9 FA      LDA #$FA
FA92   85 63      STA $63
FA94   4C 2E FA   JMP $FA2E


; fast head movement

FA97   C6 61      DEC $61
FA99   D0 F9      BNE $FA94
FA9B   A9 A5      LDA #$A5
FA9D   85 62      STA $62
FA9F   A9 FA      LDA #$FA
FAA1   85 63      STA $63
FAA3   D0 EF      BNE $FA94


; prepare slow head movement

FAA5   AD 07 1C   LDA $1C07
FAA8   18         CLC
FAA9   65 5F      ADC $5F
FAAB   8D 05 1C   STA $1C05
FAAE   C6 60      DEC $60
FAB0   D0 E2      BNE $FA94
FAB2   A9 4E      LDA #$4E
FAB4   85 62      STA $62
FAB6   A9 FA      LDA #$FA
FAB8   85 63      STA $63
FABA   A9 05      LDA #$05
FABC   85 60      STA $60

FABE   AD 0C 1C   LDA $1C0C

FAC1   29 FD      AND #$FD
FAC3   8D 0C 1C   STA $1C0C
FAC6   60         RTS


; formatting

FAC7   A5 51      LDA $51
FAC9   10 2A      BPL $FAF5
FACB   A6 3D      LDX $3D
FACD   A9 60      LDA #$60
FACF   95 20      STA $20,X
FAD1   A9 01      LDA #$01
FAD3   95 22      STA $22,X
FAD5   85 51      STA $51
FAD7   A9 A4      LDA #$A4
FAD9   85 4A      STA $4A
FADB   AD 00 1C   LDA $1C00
FADE   29 FC      AND #$FC
FAE0   8D 00 1C   STA $1C00
FAE3   A9 0A      LDA #$0A
FAE5   8D 20 06   STA $0620
FAE8   A9 A0      LDA #$A0
FAEA   8D 21 06   STA $0621
FAED   A9 0F      LDA #$0F
FAEF   8D 22 06   STA $0622
FAF2   4C 9C F9   JMP $F99C
FAF5   A0 00      LDY #$00
FAF7   D1 32      CMP ($32),Y
FAF9   F0 05      BEQ $FB00
FAFB   91 32      STA ($32),Y
FAFD   4C 9C F9   JMP $F99C
FB00   AD 00 1C   LDA $1C00
FB03   29 10      AND #$10
FB05   D0 05      BNE $FB0C
FB07   A9 08      LDA #$08
FB09   4C D3 FD   JMP $FDD3

FB0C   20 A3 FD   JSR $FDA3

FB0F   20 C3 FD   JSR $FDC3
FB12   A9 55      LDA #$55
FB14   8D 01 1C   STA $1C01
FB17   20 C3 FD   JSR $FDC3
FB1A   20 00 FE   JSR $FE00
FB1D   20 56 F5   JSR $F556
FB20   A9 40      LDA #$40
FB22   0D 0B 18   ORA $180B
FB25   8D 0B 18   STA $180B
FB28   A9 62      LDA #$62
FB2A   8D 06 18   STA $1806
FB2D   A9 00      LDA #$00
FB2F   8D 07 18   STA $1807
FB32   8D 05 18   STA $1805
FB35   A0 00      LDY #$00
FB37   A2 00      LDX #$00
FB39   2C 00 1C   BIT $1C00
FB3C   30 FB      BMI $FB39
FB3E   2C 00 1C   BIT $1C00
FB41   10 FB      BPL $FB3E
FB43   AD 04 18   LDA $1804
FB46   2C 00 1C   BIT $1C00
FB49   10 11      BPL $FB5C
FB4B   AD 0D 18   LDA $180D
FB4E   0A         ASL
FB4F   10 F5      BPL $FB46
FB51   E8         INX
FB52   D0 EF      BNE $FB43
FB54   C8         INY
FB55   D0 EC      BNE $FB43
FB57   A9 02      LDA #$02
FB59   4C D3 FD   JMP $FDD3
FB5C   86 71      STX $71
FB5E   84 72      STY $72
FB60   A2 00      LDX #$00
FB62   A0 00      LDY #$00
FB64   AD 04 18   LDA $1804
FB67   2C 00 1C   BIT $1C00
FB6A   30 11      BMI $FB7D
FB6C   AD 0D 18   LDA $180D
FB6F   0A         ASL
FB70   10 F5      BPL $FB67
FB72   E8         INX
FB73   D0 EF      BNE $FB64
FB75   C8         INY
FB76   D0 EC      BNE $FB64
FB78   A9 02      LDA #$02
FB7A   4C D3 FD   JMP $FDD3
FB7D   38         SEC
FB7E   8A         TXA
FB7F   E5 71      SBC $71
FB81   AA         TAX
FB82   85 70      STA $70
FB84   98         TYA
FB85   E5 72      SBC $72
FB87   A8         TAY
FB88   85 71      STA $71
FB8A   10 0B      BPL $FB97
FB8C   49 FF      EOR #$FF
FB8E   A8         TAY
FB8F   8A         TXA
FB90   49 FF      EOR #$FF
FB92   AA         TAX
FB93   E8         INX
FB94   D0 01      BNE $FB97
FB96   C8         INY
FB97   98         TYA
FB98   D0 04      BNE $FB9E
FB9A   E0 04      CPX #$04
FB9C   90 18      BCC $FBB6
FB9E   06 70      ASL $70
FBA0   26 71      ROL $71
FBA2   18         CLC
FBA3   A5 70      LDA $70
FBA5   6D 21 06   ADC $0621
FBA8   8D 21 06   STA $0621
FBAB   A5 71      LDA $71
FBAD   6D 22 06   ADC $0622
FBB0   8D 22 06   STA $0622
FBB3   4C 0C FB   JMP $FB0C
FBB6   A2 00      LDX #$00
FBB8   A0 00      LDY #$00
FBBA   B8         CLV
FBBB   AD 00 1C   LDA $1C00
FBBE   10 0E      BPL $FBCE
FBC0   50 F9      BVC $FBBB
FBC2   B8         CLV
FBC3   E8         INX
FBC4   D0 F5      BNE $FBBB
FBC6   C8         INY
FBC7   D0 F2      BNE $FBBB
FBC9   A9 03      LDA #$03
FBCB   4C D3 FD   JMP $FDD3
FBCE   8A         TXA
FBCF   0A         ASL
FBD0   8D 25 06   STA $0625
FBD3   98         TYA
FBD4   2A         ROL
FBD5   8D 24 06   STA $0624
FBD8   A9 BF      LDA #$BF
FBDA   2D 0B 18   AND $180B
FBDD   8D 0B 18   STA $180B
FBE0   A9 66      LDA #$66
FBE2   8D 26 06   STA $0626
FBE5   A6 43      LDX $43
FBE7   A0 00      LDY #$00
FBE9   98         TYA
FBEA   18         CLC
FBEB   6D 26 06   ADC $0626
FBEE   90 01      BCC $FBF1
FBF0   C8         INY
FBF1   C8         INY
FBF2   CA         DEX
FBF3   D0 F5      BNE $FBEA
FBF5   49 FF      EOR #$FF
FBF7   38         SEC
FBF8   69 00      ADC #$00
FBFA   18         CLC
FBFB   6D 25 06   ADC $0625
FBFE   B0 03      BCS $FC03
FC00   CE 24 06   DEC $0624
FC03   AA         TAX
FC04   98         TYA
FC05   49 FF      EOR #$FF
FC07   38         SEC
FC08   69 00      ADC #$00
FC0A   18         CLC
FC0B   6D 24 06   ADC $0624
FC0E   10 05      BPL $FC15
FC10   A9 04      LDA #$04
FC12   4C D3 FD   JMP $FDD3
FC15   A8         TAY
FC16   8A         TXA
FC17   A2 00      LDX #$00
FC19   38         SEC
FC1A   E5 43      SBC $43
FC1C   B0 03      BCS $FC21
FC1E   88         DEY
FC1F   30 03      BMI $FC24
FC21   E8         INX
FC22   D0 F5      BNE $FC19
FC24   8E 26 06   STX $0626
FC27   E0 04      CPX #$04
FC29   B0 05      BCS $FC30
FC2B   A9 05      LDA #$05
FC2D   4C D3 FD   JMP $FDD3
FC30   18         CLC
FC31   65 43      ADC $43
FC33   8D 27 06   STA $0627
FC36   A9 00      LDA #$00
FC38   8D 28 06   STA $0628
FC3B   A0 00      LDY #$00
FC3D   A6 3D      LDX $3D
FC3F   A5 39      LDA $39
FC41   99 00 03   STA $0300,Y
FC44   C8         INY
FC45   C8         INY
FC46   AD 28 06   LDA $0628
FC49   99 00 03   STA $0300,Y
FC4C   C8         INY
FC4D   A5 51      LDA $51
FC4F   99 00 03   STA $0300,Y
FC52   C8         INY
FC53   B5 13      LDA $13,X
FC55   99 00 03   STA $0300,Y
FC58   C8         INY
FC59   B5 12      LDA $12,X
FC5B   99 00 03   STA $0300,Y
FC5E   C8         INY
FC5F   A9 0F      LDA #$0F
FC61   99 00 03   STA $0300,Y
FC64   C8         INY
FC65   99 00 03   STA $0300,Y
FC68   C8         INY
FC69   A9 00      LDA #$00
FC6B   59 FA 02   EOR $02FA,Y
FC6E   59 FB 02   EOR $02FB,Y
FC71   59 FC 02   EOR $02FC,Y
FC74   59 FD 02   EOR $02FD,Y
FC77   99 F9 02   STA $02F9,Y
FC7A   EE 28 06   INC $0628
FC7D   AD 28 06   LDA $0628
FC80   C5 43      CMP $43
FC82   90 BB      BCC $FC3F
FC84   98         TYA
FC85   48         PHA
FC86   E8         INX
FC87   8A         TXA
FC88   9D 00 05   STA $0500,X
FC8B   E8         INX
FC8C   D0 FA      BNE $FC88
FC8E   A9 03      LDA #$03
FC90   85 31      STA $31
FC92   20 30 FE   JSR $FE30
FC95   68         PLA
FC96   A8         TAY
FC97   88         DEY
FC98   20 E5 FD   JSR $FDE5
FC9B   20 F5 FD   JSR $FDF5
FC9E   A9 05      LDA #$05
FCA0   85 31      STA $31
FCA2   20 E9 F5   JSR $F5E9
FCA5   85 3A      STA $3A
FCA7   20 8F F7   JSR $F78F
FCAA   A9 00      LDA #$00
FCAC   85 32      STA $32
FCAE   20 0E FE   JSR $FE0E
FCB1   A9 FF      LDA #$FF
FCB3   8D 01 1C   STA $1C01
FCB6   A2 05      LDX #$05
FCB8   50 FE      BVC $FCB8
FCBA   B8         CLV
FCBB   CA         DEX
FCBC   D0 FA      BNE $FCB8
FCBE   A2 0A      LDX #$0A
FCC0   A4 32      LDY $32
FCC2   50 FE      BVC $FCC2
FCC4   B8         CLV
FCC5   B9 00 03   LDA $0300,Y
FCC8   8D 01 1C   STA $1C01
FCCB   C8         INY
FCCC   CA         DEX
FCCD   D0 F3      BNE $FCC2
FCCF   A2 09      LDX #$09
FCD1   50 FE      BVC $FCD1
FCD3   B8         CLV
FCD4   A9 55      LDA #$55
FCD6   8D 01 1C   STA $1C01
FCD9   CA         DEX
FCDA   D0 F5      BNE $FCD1
FCDC   A9 FF      LDA #$FF
FCDE   A2 05      LDX #$05
FCE0   50 FE      BVC $FCE0
FCE2   B8         CLV
FCE3   8D 01 1C   STA $1C01
FCE6   CA         DEX
FCE7   D0 F7      BNE $FCE0
FCE9   A2 BB      LDX #$BB
FCEB   50 FE      BVC $FCEB
FCED   B8         CLV
FCEE   BD 00 01   LDA $0100,X
FCF1   8D 01 1C   STA $1C01
FCF4   E8         INX
FCF5   D0 F4      BNE $FCEB
FCF7   A0 00      LDY #$00
FCF9   50 FE      BVC $FCF9
FCFB   B8         CLV
FCFC   B1 30      LDA ($30),Y
FCFE   8D 01 1C   STA $1C01
FD01   C8         INY
FD02   D0 F5      BNE $FCF9
FD04   A9 55      LDA #$55
FD06   AE 26 06   LDX $0626
FD09   50 FE      BVC $FD09
FD0B   B8         CLV
FD0C   8D 01 1C   STA $1C01
FD0F   CA         DEX
FD10   D0 F7      BNE $FD09
FD12   A5 32      LDA $32
FD14   18         CLC
FD15   69 0A      ADC #$0A
FD17   85 32      STA $32
FD19   CE 28 06   DEC $0628
FD1C   D0 93      BNE $FCB1
FD1E   50 FE      BVC $FD1E
FD20   B8         CLV
FD21   50 FE      BVC $FD21
FD23   B8         CLV
FD24   20 00 FE   JSR $FE00
FD27   A9 C8      LDA #$C8
FD29   8D 23 06   STA $0623
FD2C   A9 00      LDA #$00
FD2E   85 30      STA $30
FD30   A9 03      LDA #$03
FD32   85 31      STA $31
FD34   A5 43      LDA $43
FD36   8D 28 06   STA $0628
FD39   20 56 F5   JSR $F556
FD3C   A2 0A      LDX #$0A
FD3E   A0 00      LDY #$00
FD40   50 FE      BVC $FD40
FD42   B8         CLV
FD43   AD 01 1C   LDA $1C01
FD46   D1 30      CMP ($30),Y
FD48   D0 0E      BNE $FD58
FD4A   C8         INY
FD4B   CA         DEX
FD4C   D0 F2      BNE $FD40
FD4E   18         CLC
FD4F   A5 30      LDA $30
FD51   69 0A      ADC #$0A
FD53   85 30      STA $30
FD55   4C 62 FD   JMP $FD62
FD58   CE 23 06   DEC $0623
FD5B   D0 CF      BNE $FD2C
FD5D   A9 06      LDA #$06
FD5F   4C D3 FD   JMP $FDD3

FD62   20 56 F5   JSR $F556

FD65   A0 BB      LDY #$BB
FD67   50 FE      BVC $FD67
FD69   B8         CLV
FD6A   AD 01 1C   LDA $1C01
FD6D   D9 00 01   CMP $0100,Y
FD70   D0 E6      BNE $FD58
FD72   C8         INY
FD73   D0 F2      BNE $FD67
FD75   A2 FC      LDX #$FC
FD77   50 FE      BVC $FD77
FD79   B8         CLV
FD7A   AD 01 1C   LDA $1C01
FD7D   D9 00 05   CMP $0500,Y
FD80   D0 D6      BNE $FD58
FD82   C8         INY
FD83   CA         DEX
FD84   D0 F1      BNE $FD77
FD86   CE 28 06   DEC $0628
FD89   D0 AE      BNE $FD39
FD8B   E6 51      INC $51
FD8D   A5 51      LDA $51
FD8F   C9 24      CMP #$24
FD91   B0 03      BCS $FD96
FD93   4C 9C F9   JMP $F99C
FD96   A9 FF      LDA #$FF
FD98   85 51      STA $51
FD9A   A9 00      LDA #$00
FD9C   85 50      STA $50
FD9E   A9 01      LDA #$01
FDA0   4C 69 F9   JMP $F969


; write SYNC 10240 times, erase track

FDA3   AD 0C 1C   LDA $1C0C
FDA6   29 1F      AND #$1F
FDA8   09 C0      ORA #$C0
FDAA   8D 0C 1C   STA $1C0C
FDAD   A9 FF      LDA #$FF
FDAF   8D 03 1C   STA $1C03
FDB2   8D 01 1C   STA $1C01
FDB5   A2 28      LDX #$28
FDB7   A0 00      LDY #$00
FDB9   50 FE      BVC $FDB9
FDBB   B8         CLV
FDBC   88         DEY
FDBD   D0 FA      BNE $FDB9
FDBF   CA         DEX
FDC0   D0 F7      BNE $FDB9
FDC2   60         RTS


; read/write ($621/$622) times

FDC3   AE 21 06   LDX $0621
FDC6   AC 22 06   LDY $0622
FDC9   50 FE      BVC $FDC9
FDCB   B8         CLV
FDCC   CA         DEX
FDCD   D0 FA      BNE $FDC9
FDCF   88         DEY
FDD0   10 F7      BPL $FDC9
FDD2   60         RTS


; attempt counter for formatting

FDD3   CE 20 06   DEC $0620
FDD6   F0 03      BEQ $FDDB
FDD8   4C 9C F9   JMP $F99C
FDDB   A0 FF      LDY #$FF
FDDD   84 51      STY $51
FDDF   C8         INY
FDE0   84 50      STY $50
FDE2   4C 69 F9   JMP $F969


;

FDE5   B9 00 03   LDA $0300,Y
FDE8   99 45 03   STA $0345,Y
FDEB   88         DEY
FDEC   D0 F7      BNE $FDE5
FDEE   AD 00 03   LDA $0300
FDF1   8D 45 03   STA $0345
FDF4   60         RTS


; copy data from overflow buffer

FDF5   A0 44      LDY #$44
FDF7   B9 BB 01   LDA $01BB,Y
FDFA   91 30      STA ($30),Y
FDFC   88         DEY
FDFD   10 F8      BPL $FDF7
FDFF   60         RTS


; switch to reading

FE00   AD 0C 1C   LDA $1C0C
FE03   09 E0      ORA #$E0
FE05   8D 0C 1C   STA $1C0C
FE08   A9 00      LDA #$00
FE0A   8D 03 1C   STA $1C03
FE0D   60         RTS


; write $55 10240 times

FE0E   AD 0C 1C   LDA $1C0C
FE11   29 1F      AND #$1F
FE13   09 C0      ORA #$C0
FE15   8D 0C 1C   STA $1C0C
FE18   A9 FF      LDA #$FF
FE1A   8D 03 1C   STA $1C03
FE1D   A9 55      LDA #$55
FE1F   8D 01 1C   STA $1C01
FE22   A2 28      LDX #$28
FE24   A0 00      LDY #$00
FE26   50 FE      BVC $FE26
FE28   B8         CLV
FE29   88         DEY
FE2A   D0 FA      BNE $FE26
FE2C   CA         DEX
FE2D   D0 F7      BNE $FE26
FE2F   60         RTS


; convert header in buffer 0 to GCR code

FE30   A9 00      LDA #$00
FE32   85 30      STA $30
FE34   85 2E      STA $2E
FE36   85 36      STA $36
FE38   A9 BB      LDA #$BB
FE3A   85 34      STA $34
FE3C   A5 31      LDA $31
FE3E   85 2F      STA $2F
FE40   A9 01      LDA #$01
FE42   85 31      STA $31

FE44   A4 36      LDY $36

FE46   B1 2E      LDA ($2E),Y
FE48   85 52      STA $52
FE4A   C8         INY
FE4B   B1 2E      LDA ($2E),Y
FE4D   85 53      STA $53
FE4F   C8         INY
FE50   B1 2E      LDA ($2E),Y
FE52   85 54      STA $54
FE54   C8         INY
FE55   B1 2E      LDA ($2E),Y
FE57   85 55      STA $55
FE59   C8         INY
FE5A   F0 08      BEQ $FE64
FE5C   84 36      STY $36
FE5E   20 D0 F6   JSR $F6D0
FE61   4C 44 FE   JMP $FE44
FE64   4C D0 F6   JMP $F6D0


; interrupt routine

FE67   48         PHA
FE68   8A         TXA
FE69   48         PHA
FE6A   98         TYA
FE6B   48         PHA
FE6C   AD 0D 18   LDA $180D
FE6F   29 02      AND #$02
FE71   F0 03      BEQ $FE76
FE73   20 53 E8   JSR $E853
FE76   AD 0D 1C   LDA $1C0D
FE79   0A         ASL
FE7A   10 03      BPL $FE7F
FE7C   20 B0 F2   JSR $F2B0
FE7F   68         PLA
FE80   A8         TAY
FE81   68         PLA
FE82   AA         TAX
FE83   68         PLA
FE84   40         RTI

; constands for disk format

FE85   .BY $12   ; directory track


FE86   .BY $04   ; start of bam


FE87   .BY $04   ; length of bam per track


FE88   .BY $90   ; end of bam


; table of command words
; "VIDMBU"
; "PCRSN"
;
; Validate, Initialise, D(Backup unused),
; Memory, Block, User,
; Position, USR execute, Copy,
; Rename, Scratch, New (Format).

FE89   .BY $56,$49,$44,$4D,$42,$55
FE8F   .BY $50,$26,$43,$52,$53,$4E


; low  byte of command addresses

FE95   .BY $84,$05,$C1,$F8,$1B,$5C
FE9B   .BY $07,$A3,$F0,$88,$23,$0D


; high byte of command addresses

FEA1   .BY $ED,$D0,$C8,$CA,$CC,$CB
FEA7   .BY $E2,$E7,$C8,$CA,$C8,$EE


; bytes for syntax check

FEAD   .BY $51,$DD,$1C,$9E,$1C


; file control methods
; "RWAM"

FEB2   .BY $52,$57,$41,$4D


; file types
; "DSPUL"

FEB6   .BY $44,$53,$50,$55,$4C


; names of file types
; 1st letter "DSPUR"

FEBB   .BY $44,$53,$50,$55,$52

; 2nd letter "EERSE"

FEC0   .BY $45,$45,$52,$53,$45

; 3rd letter "LQGRL"

FEC5   .BY $4C,$51,$47,$52,$4C


;
FECA   .BY $08,$00,$00


; masks for bit command
FECD   .BY $3F,$7F,$BF,$FF


; number of sectors per track

FED1   .BY $11,$12,$13,$15

; constands for disk format

FED5   .BY $41   ; A marker for 1541 format


FED6   .BY $04   ; 4 track ranges


FED7   .BY $24   ; number of tracks


FED8   .BY $1F,$19,$12   ; tracks on which sector numbers change


; control bytes for head postion

FEDB   .BY $01,$FF,$FF,$01,$00


; high byte addresses of buffers

FEE0   .BY $03,$04,$05,$06,$07,$07


; ROM checksum

FEE6   .BY $3E


; from UI command $EB22, to reset
; without RAM/ROM test

FEE7   6C 65 00   JMP ($0065)


; patch for diagnostic routine
; from $EA7A

FEEA   8D 00 1C   STA $1C00
FEED   8D 02 1C   STA $1C02
FEF0   4C 7D EA   JMP $EA7D


; delay loop for serial bus in 1541 mode,
; from $E97D

FEF3   8A         TXA
FEF4   A2 05      LDX #$05
FEF6   CA         DEX
FEF7   D0 FD      BNE $FEF6
FEF9   AA         TAX
FEFA   60         RTS


; patch for data output to serial bus,
; from $E980

FEFB   20 AE E9   JSR $E9AE
FEFE   4C 9C E9   JMP $E99C


; U9 vector, switch 1540/1541

FF01   AD 02 02   LDA $0202
FF04   C9 2D      CMP #$2D
FF06   F0 05      BEQ $FF0D
FF08   38         SEC
FF09   E9 2B      SBC #$2B
FF0B   D0 DA      BNE $FEE7
FF0D   85 23      STA $23
FF0F   60         RTS


; patch for reset routine,
; from $EAA4

FF10   8E 03 18   STX $1803
FF13   A9 02      LDA #$02
FF15   8D 00 18   STA $1800
FF18   A9 1A      LDA #$1A
FF1A   8D 02 18   STA $1802
FF1D   4C A7 EA   JMP $EAA7


; patch for listen to serial bus,
; from $E9DC

FF20   AD 00 18   LDA $1800
FF23   29 01      AND #$01
FF25   D0 F9      BNE $FF20
FF27   A9 01      LDA #$01
FF29   8D 05 18   STA $1805
FF2C   4C DF E9   JMP $E9DF

; unused
FF2F   .BY $AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
FF37   .BY $AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
FF3F   .BY $AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
FF47   .BY $AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
FF4F   .BY $AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
FF57   .BY $AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
FF5F   .BY $AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
FF67   .BY $AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
FF6F   .BY $AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
FF77   .BY $AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
FF7F   .BY $AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
FF87   .BY $AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
FF8F   .BY $AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
FF97   .BY $AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
FF9F   .BY $AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
FFA7   .BY $AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
FFAF   .BY $AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
FFB7   .BY $AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
FFBF   .BY $AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
FFC7   .BY $AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
FFCF   .BY $AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
FFD7   .BY $AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
FFDF   .BY $AA,$AA,$AA,$AA,$AA,$AA,$AA

FFE6   .WD $C8C6   ; format
FFE8   .WD $F98F   ; turn motor off

; USER vectors
FFEA   .WD $CD5F   ; UA, U1
FFEC   .WD $CD97   ; UB, U2
FFEE   .WD $0500   ; UC, U3
FFF0   .WD $0503   ; UD, U4
FFF2   .WD $0506   ; UE, U5
FFF4   .WD $0509   ; UF, U6
FFF6   .WD $050C   ; UG, U7
FFF8   .WD $050F   ; UH, U8
FFFA   .WD $FF01   ; UI, U9

; hardware vectors
FFFC   .WD $EAA0   ; RESET
FFFE   .WD $FE67   ; IRQ


Marko Makela
(Marko.Makela@HUT.FI)

*********

The end of the Project 64 etext of the Commodore 1541 ROM disassembly.

*********
