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)