Files
Antoine Vignau 9bf75c70d0 Disk Fixer v4
2025-10-15 16:51:54 +02:00

6236 lines
143 KiB
ArmAsm

*
* DISK FIXER
*
* SOURCE CODE LOGO 2007
*
MX %11
ORG $800
TYP BIN
DSK DF
LST OFF
*
*
*
L0200 = $0200
L02FE = $02FE
L02FF = $02FF
L0300 = $0300 ; FOR NEW COMMAND Execute
SOFTEV EQU $03F2
PWREDUP EQU $03F4
USRADR EQU $03F8
L0400 = $0400
L040C = $040C
L040D = $040D
L040E = $040E
L0480 = $0480
L04BD = $04BD
L0500 = $0500
L0580 = $0580
L05D0 = $05D0
L0600 = $0600
L0650 = $0650
L0680 = $0680
L0700 = $0700
L0750 = $0750
L0780 = $0780
L07D0 = $07D0
L07E1 = $07E1
TXT_BUFFER = $0657
TXT_SLOT = $065F
TXT_DRIVE = $0667
TXT_MASK = $066F
TXT_MODE = $0672
TXT_ORDER = $0676
L6000 = $6000
L8000 = $8000
L8A00 = $8A00
L8B00 = $8B00
L8C00 = $8C00
L8D00 = $8D00
L8E00 = $8E00
L8F00 = $8F00
L9000 = $9000
L9100 = $9100
L9200 = $9200
L9300 = $9300
MLI = $BF00
KBD EQU $C000
KBDSTROBE EQU $C010
SPKR EQU $C030
HOME EQU $FC58
WAIT EQU $FCA8
COUT1 EQU $FDF0
OLDRST EQU $FF59
*
*
*
L0800 JMP L139B
L0803 JMP L14A9
L0806 JMP L0CD4
L0809 JMP L0836
L080C JMP L084B
L080F JMP L0D2E
L0812 JMP L0F98
L0815 JMP L0FCA
L0818 JMP L1063
L081B JMP L1058
L081E JMP L103C
L0821 JMP L103E
L0824 JMP L12BC
L0827 JMP L0DA3
L082A JMP L0FE5
L082D JMP L3533
L0830 JMP L1325
L0833 JSR L0CDC
L0836 LDX #$27
LDA #$A0
L083A STA L07D0,X
DEX
BNE L083A
LDX #$0A
L0842 LDA L0D98,X
STA L07D0,X
DEX
BPL L0842
L084B LDA #$20
STA $26
L084F DEC $27
BNE L0862
DEC $26
BNE L0862
LDA $07DA
EOR #$7F
STA $07DA
JMP L084B
L0862 LDA KBD
BPL L084F
BIT KBDSTROBE
CMP #$E0
BCC L0871
SEC
SBC #$20
L0871 CMP #$C9
BNE L0891
JSR L0F98
LDA $E4
BNE L0884
LDA $E6
SEC
SBC #$08
JMP L0889
L0884 LDA $E6
SEC
SBC #$10
L0889 STA $E6
JSR L0FCA
JMP L084B
L0891 CMP #$CD
BNE L08B1
JSR L0F98
LDA $E4
BNE L08A4
LDA $E6
CLC
ADC #$08
JMP L08A9
L08A4 LDA $E6
CLC
ADC #$10
L08A9 STA $E6
JSR L0FCA
JMP L084B
L08B1 CMP #$CA
BNE L08C0
JSR L0F98
DEC $E6
JSR L0FCA
JMP L084B
L08C0 CMP #$CB
BNE L08CF
JSR L0F98
INC $E6
JSR L0FCA
JMP L084B
L08CF CMP #$C1
BNE L08EA
LDA $E4
BMI L08E4
JSR L0F7C
LDA #$FF
STA $E4
JSR L0EA4
JSR L0FE5
L08E4 JSR L0FCA
JMP L084B
L08EA CMP #$C2
BNE L0905
LDA $E4
BEQ L08FF
JSR L0F7C
LDA #$00
STA $E4
JSR L0E16
JSR L0FE5
L08FF JSR L0FCA
JMP L084B
L0905 CMP #$C8
BNE L0922
LDA $E4
BEQ L090F
BPL L091C
L090F JSR L0F7C
LDA #$01
STA $E4
JSR L0EFD
JSR L0FE5
L091C JSR L0FCA
JMP L084B
L0922 CMP #$D5
BNE L0933
JSR L0F98
LDA $E5
STA $E6
JSR L0FCA
JMP L084B
L0933 CMP #$CE
BNE L094D
LDA $E0
BNE L093D
LDA #$FF
L093D EOR $E0
STA $E0
JSR L0FE5
JSR L082D
JSR L0FCA
JMP L084B
L094D CMP #$D3
BEQ L0954
JMP L0A0F
L0954 LDA #$A0
STA $07DA
LDA TXT_SLOT
EOR #$DF
STA $E2
L0960 LDA #$20
STA $26
L0964 DEC $27
BNE L0976
DEC $26
BNE L0976
LDA TXT_SLOT
EOR $E2
STA TXT_SLOT
BNE L0960
L0976 LDA KBD
BPL L0964
BIT KBDSTROBE
CMP #$8D
BNE L098D
LDA TXT_SLOT
CMP #$DF
BNE L09A7
EOR $E2
BNE L09A7
L098D CMP #$9B
BNE L0997
JSR L0DA3
JMP L084B
L0997 CMP #$B1
BCC L099F
CMP #$B8
BCC L09A7
L099F LDA #$87
JSR L1DD0
JMP L0960
L09A7 STA TXT_SLOT
LDA TXT_DRIVE
EOR #$DF
STA $E2
L09B1 LDA #$20
STA $26
L09B5 DEC $27
BNE L09C7
DEC $26
BNE L09C7
LDA TXT_DRIVE
EOR $E2
STA TXT_DRIVE
BNE L09B1
L09C7 LDA KBD
BPL L09B5
BIT KBDSTROBE
CMP #$8D
BNE L09DE
LDA TXT_DRIVE
CMP #$DF
BNE L09F8
EOR $E2
BNE L09F8
L09DE CMP #$9B
BNE L09E8
JSR L0DA3
JMP L084B
L09E8 CMP #$B1
BEQ L09F8
CMP #$B2
BEQ L09F8
LDA #$87
JSR L1DD0
JMP L09B1
L09F8 STA TXT_DRIVE
AND #$03
STA RWTS_DRIVE
LDA TXT_SLOT
AND #$07
ASL
ASL
ASL
ASL
STA RWTS_SLOT
JMP L084B
L0A0F CMP #$D4
BNE L0A39
LDA $E8
BPL L0A25
LDA #$3F
STA $E8
LDA #$00
STA $E9
L0A1F JSR L0DA3
JMP L084B
L0A25 LDA $E9
BNE L0A2F
LDA #$40
STA $E9
BNE L0A1F
L0A2F LDA #$00
STA $E9
LDA #$FF
STA $E8
BNE L0A1F
L0A39 CMP #$83
BNE L0A55
LDA $E8
BPL L0A4B
LDA $E9
BEQ L0A4B
LDA #$00
STA $E9
BEQ L0A1F
L0A4B LDA #$FF
STA $E8
LDA #$20
STA $E9
BNE L0A1F
*
* SET BUFFER
*
L0A55 CMP #$B1 ; 0..9 SET BUFFER ADDRESS
BCC L0A6A
CMP #$B3
BCS L0A6A
dec $ef
cmp #$b1 ; if 1, the buffer is already <
beq L0A56
inc $ef ; otherwise if 2, > it twice
inc $ef
L0A56 jsr printBUFFER
JSR L0D2E
JMP L084B
*
* Z : CANCEL ALL MODIFICATIONS
*
L0A6A CMP #$DA
BNE L0A7E
LDY #$00
L0A70 LDA L8A00,Y
STA ($EE),Y
INY
BNE L0A70
JSR L0D2E
JMP L084B
*
* / : FILL BUFFER
*
L0A7E CMP #$BD
BNE L0AD7
LDX #$12
L0A84 LDA L0AC4,X
STA L07D0,X
DEX
BPL L0A84
L0A8D LDA #$20
STA $26
L0A91 DEC $27
BNE L0AA3
DEC $26
BNE L0AA3
LDA $07E2
EOR #$7F
STA $07E2
BNE L0A8D
L0AA3 LDA KBD
BPL L0A91
BIT KBDSTROBE
CMP #$D9
BEQ L0AB3
CMP #$F9
BNE L0AC1
L0AB3 LDY $E6
LDA ($EE),Y
L0AB7 STA ($EE),Y
INY
CPY $E5
BNE L0AB7
JSR L0D2E
L0AC1 JMP L0836
L0AC4 ASC "FILL BUFFER (Y/N):_"
L0AD7 CMP #$BC
BNE L0AF1
LDY $E6
L0ADD INY
CPY $E5
BEQ L0AEB
LDA ($EE),Y
DEY
STA ($EE),Y
INY
JMP L0ADD
L0AEB JSR L0D2E
JMP L084B
L0AF1 CMP #$BE
BNE L0B0B
LDY $E5
L0AF7 DEY
CPY $E6
BEQ L0B05
DEY
LDA ($EE),Y
INY
STA ($EE),Y
JMP L0AF7
L0B05 JSR L0D2E
JMP L084B
L0B0B CMP #$AD
BNE L0B3D
LDY $E6
LDA L8A00,Y
STA ($EE),Y
LDA $E4
BNE L0B20
JSR L128D
JMP L0B32
L0B20 BPL L0B32
LDA ($EE),Y
LDY $24
ORA $EA
BPL L0B30
CMP #$A0
BCS L0B30
LDA #$AE
L0B30 STA ($28),Y
L0B32 JSR L0F98
INC $E6
JSR L0FCA
JMP L084B
L0B3D CMP #$93
BNE L0BA4
LDX #$0E
L0B43 LDA L0B95,X
STA L07D0,X
DEX
BPL L0B43
LDA $EB
AND #$07
ORA #$B0
EOR #$DF
STA $E2
L0B56 LDA #$20
STA $26
L0B5A DEC $27
BNE L0B6C
DEC $26
BNE L0B6C
LDA $07DE
EOR $E2
STA $07DE
BNE L0B56
L0B6C LDA KBD
BPL L0B5A
BIT KBDSTROBE
CMP #$8D
BEQ L0B92
CMP #$9B
BEQ L0B92
CMP #$B1
BCC L0B84
CMP #$B8
BCC L0B8C
L0B84 LDA #$87
JSR L1DD0
JMP L0B56
L0B8C AND #$07
ORA #$C0
STA $EB
L0B92 JMP L0836
L0B95 ASC "PRINTER SLOT #_"
*
* CTRL-Q : PRODOS QUIT
*
L0BA4 CMP #$91
BNE L0BAA
JSR MLI
DFB $65
DA QUIT
JMP OLDRST
QUIT dfb $04
dfb $00
dw $0
dfb $0
dw $0
*
* Q : QUIT TO MONITOR
*
L0BAA CMP #$D1
BNE L0BDC
JSR HOME
LDA #$8D
JSR COUT1
LDX #$17
L0BB8 LDA L0BC4,X
STA $0750,X
DEX
BPL L0BB8
JMP OLDRST
L0BC4 ASC "TYPE '800G' TO CONTINUE."
*
* RETURN
*
L0BDC CMP #$8D
BNE L0BE9
JSR L10BA
JSR L0FCA
JMP L084B
L0BE9 CMP #$D9
BNE L0C03
LDA $EA
BNE L0BF3
LDA #$80
L0BF3 EOR $EA
STA $EA
LDA $E4
BEQ L0BFD
BPL L0C00
L0BFD JSR L0D2E
L0C00 JMP L084B
L0C03 CMP #$D0
BNE L0C21
JSR L0F98
LDA #$01
JSR L103C
LDY #$25
JSR L12BC
BCS L0C18
STA $E6
L0C18 JSR L0FE5
JSR L0FCA
JMP L084B
L0C21 CMP #$AE
BNE L0C42
JSR L0F98
LDA #$03
JSR L103C
LDY #$00
JSR L12BC
BCS L0C39
STA $E5
JSR L0D2E
L0C39 JSR L0FE5
JSR L0FCA
JMP L084B
L0C42 CMP #$AC
BNE L0C5D
LDA $E5
BEQ L0C5A
JSR L0F98
LDA #$00
STA $E5
JSR L0FE5
JSR L0D2E
JSR L0FCA
L0C5A JMP L084B
L0C5D CMP #$90
BNE L0C9F
LDA $EB
STA L0C9C+2
JSR L0F98
LDA #$03
JSR L103C
L0C6E LDY #$00
L0C70 STY $24
LDA ($28),Y
ORA #$80
CMP #$A0
BCS L0C7C
ORA #$40
L0C7C JSR L0C9C
LDY $24
INY
CPY #$28
BNE L0C70
LDA #$8D
JSR L0C9C
INC $25
JSR L103E
LDA $25
CMP #$13
BNE L0C6E
JSR L0FCA
JMP L084B
L0C9C JMP $C100
L0C9F CMP #$89
BNE L0CD1
JSR L0F98
LDA $E4
BNE L0CBA
LDA $E6
CLC
ADC #$08
AND #$F8
STA $00
LDA $E5
AND #$07
JMP L0CC7
L0CBA LDA $E6
CLC
ADC #$10
AND #$F0
STA $00
LDA $E5
AND #$0F
L0CC7 ORA $00
STA $E6
JSR L0FCA
JMP L084B
L0CD1 JMP L0803
L0CD4 LDA #$87
JSR L1DD0
JMP L084B
L0CDC LDX #$77
LDA #$A0
L0CE0 STA L0400,X
STA L0480,X
STA L0500,X
STA L0580,X
STA L0600,X
STA L0680,X
STA L0700,X
STA L0780,X
DEX
BPL L0CE0
LDX #$27
L0CFD LDA #$AD
STA L0400,X
STA L0500,X
STA L05D0,X
STA L0750,X
LDA L0D3D,X
STA L0480,X
LDA L0D65,X
STA L0650,X
DEX
BPL L0CFD
LDX #$0A
L0D1C LDA L0D8D,X
STA L040E,X
DEX
BPL L0D1C
JSR L0FE5
JSR L0DA3
JSR L082D
L0D2E LDA $E4
BNE L0D35
JMP L0E16
L0D35 BMI L0D3A
JMP L0EFD
L0D3A JMP L0EA4
L0D3D ASC "TRACK /SECTOR /VOLUME /BYTE "
L0D65 ASC "BUFFER /SLOT /DRIVE /MASK O / /A/"
L0D8D ASC " DISK EDIT "
L0D98 ASC "COMMAND : _"
MX %11
printHEXA ora #$b0
cmp #$ba
bcc printHEXA1
adc #$06
printHEXA1 rts
printBUFFER lda $ef
pha
and #$F0
lsr
lsr
lsr
lsr
jsr printHEXA
sta TXT_BUFFER
pla
and #$0F
jsr printHEXA
sta TXT_BUFFER+1
rts
*
*
*
L0DA3 jsr printBUFFER
LDA RWTS_SLOT
LSR
LSR
LSR
LSR
ORA #$B0
STA TXT_SLOT
LDA RWTS_DRIVE
ORA #$B0
STA TXT_DRIVE
LDA $E7
BNE L0DCD
LDA #$C6 ; F
STA TXT_MASK
STA TXT_MASK+1
JMP L0DD7
L0DCD LDA #$CE ; N
STA TXT_MASK
LDA #$A0
STA TXT_MASK+1
L0DD7 LDX #$02
LDA $E8
BPL L0DE5
LDA $E9
BEQ L0DED
LDX #$0B
BNE L0DED
L0DE5 LDX #$05
LDA $E9
BEQ L0DED
LDX #$08
L0DED LDY #$02
L0DEF LDA L0DFA,X
STA TXT_MODE,Y
DEX
DEY
BPL L0DEF
* READ/WRITE ORDER
LDA RW_ORDER
STA TXT_ORDER
RTS
L0DFA ASC "NOR"
ASC "INV"
ASC "FLA"
ASC "LOW"
L0E16 LDA $E5
STA $00
LDA #$03
JSR L103C
L0E1F LDA #$05
STA $24
LDA #$20
STA $1F
L0E27 LDY $00
LDA ($EE),Y
CMP L8A00,Y
BNE L0E38
LDY $24
JSR L1063
JMP L0E3D
L0E38 LDY $24
JSR L107B
L0E3D INY
STY $24
LDY $00
LDA ($EE),Y
ORA $EA
BPL L0E4E
CMP #$A0
BCS L0E4E
LDA #$AE
L0E4E LDY $1F
STA ($28),Y
INC $00
INY
STY $1F
CPY #$28
BNE L0E27
INC $25
JSR L103E
LDA $25
CMP #$13
BNE L0E1F
L0E66 LDA $E6
SEC
SBC $E5
ORA #$00
BPL L0E7B
LDA $E5
EOR #$80
STA $E5
JSR L0FE5
JMP L0E16
L0E7B PHA
LSR
LSR
LSR
CLC
ADC #$03
JSR L103C
PLA
AND #$07
TAX
LDA L0E9C,X
STA $24
TAY
DEY
LDA #$7E
STA ($28),Y
INY
INY
INY
LDA #$7C
STA ($28),Y
RTS
L0E9C HEX 05080B0E1114171A
L0EA4 LDA $E5
STA $00
LDA #$03
JSR L103C
L0EAD LDA #$07
STA $24
L0EB1 LDY $00
LDA ($EE),Y
ORA $EA
BPL L0EBF
CMP #$A0
BCS L0EBF
LDA #$AE
L0EBF LDY $24
STA ($28),Y
INC $00
INY
INY
STY $24
CPY #$27
BNE L0EB1
INC $25
JSR L103E
LDA $25
CMP #$13
BNE L0EAD
L0ED8 LDA $E6
SEC
SBC $E5
PHA
LSR
LSR
LSR
LSR
CLC
ADC #$03
JSR L103C
PLA
AND #$0F
ASL
ADC #$07
STA $24
TAY
DEY
LDA #$7E
STA ($28),Y
INY
INY
LDA #$7C
STA ($28),Y
RTS
L0EFD LDA $E5
STA $00
LDA #$03
JSR L103C
L0F06 LDA #$05
STA $24
L0F0A LDY $00
LDA ($EE),Y
CMP L8A00,Y
BNE L0F1B
LDY $24
JSR L1063
JMP L0F20
L0F1B LDY $24
JSR L107B
L0F20 CPY #$0D
BEQ L0F2C
CPY #$16
BEQ L0F2C
CPY #$1F
BNE L0F2D
L0F2C INY
L0F2D STY $24
INC $00
CPY #$28
BNE L0F0A
INC $25
JSR L103E
LDA $25
CMP #$13
BNE L0F06
L0F40 LDA $E6
SEC
SBC $E5
PHA
LSR
LSR
LSR
LSR
CLC
ADC #$03
JSR L103C
PLA
AND #$0F
TAX
LDA L0F6C,X
STA $24
TAY
LDA ($28),Y
AND #$3F
ORA #$40
STA ($28),Y
INY
LDA ($28),Y
AND #$3F
ORA #$40
STA ($28),Y
RTS
L0F6C HEX 0507090B0E10121417191B1D20222426
L0F7C LDA #$03
JSR L103C
L0F81 LDY #$27
LDA #$A0
L0F85 STA ($28),Y
DEY
CPY #$03
BNE L0F85
INC $25
JSR L103E
LDA $25
CMP #$13
BNE L0F81
RTS
L0F98 LDA $E4
BNE L0FA9
LDY $24
DEY
LDA #$A0
STA ($28),Y
INY
INY
INY
STA ($28),Y
RTS
L0FA9 BPL L0FB7
LDY $24
DEY
LDA #$A0
STA ($28),Y
INY
INY
STA ($28),Y
RTS
L0FB7 LDY $E6
LDA ($EE),Y
CMP L8A00,Y
BNE L0FC5
LDY $24
JMP L1063
L0FC5 LDY $24
JMP L107B
L0FCA LDA #$01
JSR L103C
LDY #$25
LDA $E6
JSR L1058
LDA $E4
BNE L0FDD
JMP L0E66
L0FDD BMI L0FE2
JMP L0F40
L0FE2 JMP L0ED8
L0FE5 LDA #$01
JSR L103C
LDY #$06
LDA RWTS_TRACK
JSR L1058
LDY #$11
LDA RWTS_SECTOR
JSR L1058
LDY #$1C
LDA RWTS_OVOLUME
JSR L1058
LDY #$25
LDA $E6
JSR L1058
LDA #$03
JSR L103C
LDA $E5
STA $00
L1012 LDY #$00
LDA $00
JSR L1058
LDA #$BA
STA ($28),Y
LDA $E4
BNE L1029
LDA $00
CLC
ADC #$08
JMP L102E
L1029 LDA $00
CLC
ADC #$10
L102E STA $00
INC $25
JSR L103E
LDA $25
CMP #$13
BNE L1012
RTS
L103C STA $25
L103E LDA $25
PHA
LSR
AND #$03
ORA #$04
STA $29
PLA
AND #$18
BCC L104F
ORA #$80
L104F STA $28
ASL
ASL
ORA $28
STA $28
RTS
L1058 PHA
LDA $E0
BNE L1093
LDA #$A4
STA ($28),Y
INY
PLA
L1063 PHA
LSR
LSR
LSR
LSR
JSR L106C
PLA
L106C AND #$0F
ORA #$B0
CMP #$BA
BCC L1077
CLC
ADC #$07
L1077 STA ($28),Y
INY
RTS
L107B PHA
LSR
LSR
LSR
LSR
JSR L1084
PLA
L1084 AND #$0F
ORA #$30
CMP #$3A
BCC L108F
CLC
ADC #$C7
L108F STA ($28),Y
INY
RTS
L1093 PLA
LDX #$AF
SEC
L1097 INX
SBC #$64
BCS L1097
ADC #$64
PHA
TXA
STA ($28),Y
INY
PLA
LDX #$AF
SEC
L10A7 INX
SBC #$0A
BCS L10A7
ADC #$0A
ORA #$B0
PHA
TXA
STA ($28),Y
INY
PLA
STA ($28),Y
INY
RTS
L10BA LDA $E4
BEQ L10C1
JMP L1150
L10C1 LDY $E6
LDA ($EE),Y
LDY $24
JSR L1063
LDY $24
JSR L1325
BMI L10FE
ASL
ASL
ASL
ASL
STA $00
INY
JSR L1325
BMI L10F1
ORA $00
L10DF LDY $E6
STA ($EE),Y
JSR L128D
JSR L0F98
INC $E6
JSR L0FCA
JMP L10C1
L10F1 CMP #$8D
BNE L10FE
LDA $00
LSR
LSR
LSR
LSR
JMP L10DF
L10FE PHA
JSR L128D
PLA
CMP #$9B
BNE L1108
RTS
L1108 CMP #$8D
BNE L110E
LDA #$95
L110E CMP #$88
BNE L111D
JSR L0F98
DEC $E6
JSR L0FCA
JMP L10C1
L111D CMP #$95
BNE L112C
JSR L0F98
INC $E6
JSR L0FCA
JMP L10C1
L112C CMP #$8A
BNE L1140
JSR L0F98
LDA $E6
CLC
ADC #$08
STA $E6
JSR L0FCA
JMP L10C1
L1140 JSR L0F98
LDA $E6
SEC
SBC #$08
STA $E6
JSR L0FCA
JMP L10C1
L1150 BPL L1155
JMP L11D5
L1155 LDY $E6
LDA ($EE),Y
LDY $24
JSR L1063
LDY $24
JSR L1325
BMI L118F
ASL
ASL
ASL
ASL
STA $00
INY
JSR L1325
BMI L1182
ORA $00
L1173 LDY $E6
STA ($EE),Y
JSR L0F98
INC $E6
JSR L0FCA
JMP L1155
L1182 CMP #$8D
BNE L118F
LDA $00
LSR
LSR
LSR
LSR
JMP L1173
L118F PHA
JSR L0F98
PLA
CMP #$9B
BNE L1199
RTS
L1199 CMP #$8D
BNE L119F
LDA #$95
L119F CMP #$88
BNE L11AB
DEC $E6
JSR L0FCA
JMP L1155
L11AB CMP #$95
BNE L11B7
INC $E6
JSR L0FCA
JMP L1155
L11B7 CMP #$8A
BNE L11C8
LDA $E6
CLC
ADC #$10
STA $E6
JSR L0FCA
JMP L1155
L11C8 LDA $E6
SEC
SBC #$10
STA $E6
JSR L0FCA
JMP L1155
L11D5 LDY $24
LDA ($28),Y
EOR #$DF
STA $E2
L11DD LDA #$20
STA $26
L11E1 DEC $27
BNE L11F2
DEC $26
BNE L11F2
LDA ($28),Y
EOR $E2
STA ($28),Y
JMP L11DD
L11F2 LDA KBD
BPL L11E1
BIT KBDSTROBE
CMP #$9B
BNE L1201
JMP L127A
L1201 CMP #$8D
BNE L1207
LDA #$95
L1207 CMP #$88
BNE L1219
JSR L0F98
JSR L127A
DEC $E6
JSR L0FCA
JMP L11D5
L1219 CMP #$95
BNE L122B
JSR L0F98
JSR L127A
INC $E6
JSR L0FCA
JMP L11D5
L122B CMP #$8A
BNE L1242
JSR L0F98
JSR L127A
LDA $E6
CLC
ADC #$10
STA $E6
JSR L0FCA
JMP L11D5
L1242 CMP #$8B
BNE L1259
JSR L0F98
JSR L127A
LDA $E6
SEC
SBC #$10
STA $E6
JSR L0FCA
JMP L11D5
L1259 AND $E8
BMI L1262
ORA $E9
JMP L1268
L1262 CMP #$C0
BCC L1268
ORA $E9
L1268 LDY $E6
STA ($EE),Y
JSR L127A
JSR L0F98
INC $E6
JSR L0FCA
JMP L11D5
L127A LDY $E6
LDA ($EE),Y
ORA $EA
BPL L1288
CMP #$A0
BCS L1288
LDA #$AE
L1288 LDY $24
STA ($28),Y
RTS
L128D LDY $E6
LDA ($EE),Y
PHA
CMP L8A00,Y
BNE L129F
LDY $24
JSR L1063
JMP L12A4
L129F LDY $24
JSR L107B
L12A4 LDY #$1E
LDA $24
SEC
L12A9 INY
SBC #$03
BCS L12A9
PLA
ORA $EA
BPL L12B9
CMP #$A0
BCS L12B9
LDA #$AE
L12B9 STA ($28),Y
RTS
L12BC LDA $E0
BNE L12DA
INY
JSR L1325
BPL L12C8
SEC
RTS
L12C8 ASL
ASL
ASL
ASL
STA $00
INY
JSR L1325
BPL L12D6
SEC
RTS
L12D6 ORA $00
CLC
RTS
L12DA JSR L1310
BPL L12E1
SEC
RTS
L12E1 BEQ L12EC
TAX
LDA #$00
L12E6 CLC
ADC #$64
DEX
BNE L12E6
L12EC STA $00
INY
JSR L1310
BPL L12F6
SEC
RTS
L12F6 BEQ L1303
TAX
LDA $00
L12FB CLC
ADC #$0A
DEX
BNE L12FB
STA $00
L1303 INY
JSR L1310
BPL L130B
SEC
RTS
L130B CLC
ADC $00
CLC
RTS
L1310 JSR L1325
BPL L1316
RTS
L1316 CMP #$0A
BCC L1322
LDA #$87
JSR L1DD0
JMP L1310
L1322 ORA #$00
RTS
L1325 LDA ($28),Y
STA $E1
EOR #$DF
STA $E2
LDA #$DF
STA ($28),Y
L1331 LDA #$20
STA $26
L1335 DEC $27
BNE L1346
DEC $26
BNE L1346
LDA ($28),Y
EOR $E2
STA ($28),Y
JMP L1331
L1346 LDA KBD
BPL L1335
BIT KBDSTROBE
CMP #$9B
BEQ L1392
CMP #$8D
BEQ L1392
CMP #$88
BEQ L1392
CMP #$95
BEQ L1392
CMP #$8A
BEQ L1392
CMP #$8B
BEQ L1392
CMP #$B0
BCC L138A
CMP #$BA
BCS L1373
STA ($28),Y
AND #$0F
RTS
L1373 CMP #$E1
BCC L137A
SEC
SBC #$20
L137A CMP #$C1
BCC L138A
CMP #$C7
BCS L138A
STA ($28),Y
SEC
SBC #$B7
AND #$0F
RTS
L138A LDA #$87
JSR L1DD0
JMP L1331
L1392 PHA
LDA $E1
STA ($28),Y
PLA
ORA #$00
RTS
L139B LDA #<L0833
STA L0800+1
LDA #>L0833
STA L0800+2
LDA #$60 ; FOR NEW COMMAND Execute
STA L0300
JSR HOME
LDA #$00
STA $E0
STA $E3
STA $E4
STA $E5
STA $E6
STA $E7
STA $E9
STA $EA
STA $EE
STA $EC
STA $ED
STA RWTS_TRACK
STA RWTS_SECTOR
STA RWTS_OVOLUME
STA $00
STA $F2
STA $F3
STA $F4
LDA #$FF
STA $E8
STA $F5
LDA #>L8000
STA $EF
STA $01
LDA #$C1
STA $EB
LDY #$00
L13E3 TYA
L13E4 STA ($00),Y
INY
BNE L13E4
INC $01
LDA $01
CMP #>L8C00
BNE L13E3
BIT KBDSTROBE
LDX #$00
L13F6 LDA L1410,X
NOP
NOP
BEQ L1403
JSR COUT1
INX
BNE L13F6
L1403 LDX #$01
L1405 LDA #$00
JSR WAIT
DEX
BPL L1405
JMP L1480
L1410 ASC 8D8D8D8D8D8D8D8D8D8D
ASC " DiskFixer V4.1"8D8D
ASC " L-Booted by LoGo "8D8D8D8D
ASC 8D8D
ASC " "00
L1480 LDA #<L0800
STA SOFTEV
STA USRADR+1
LDA #>L0800
STA SOFTEV+1
STA USRADR+2
EOR #$A5
STA PWREDUP
LDA #$4C
STA USRADR
JMP L0800
DB $FF
DB $00
DB $00
L14A0 JMP L2DF9
L14A3 JMP L3530
L14A6 JMP L1862
RW_ORDER ASC "A"
RW_INCREMENT DB $01
RW_PAGES DB $10
*
* CTRL-O : CHANGE READ/WRITE ORDER
*
L14A9 CMP #$8F ; CTRL-O / CHANGE RW ORDER
BNE L14AA
LDX #$C4 ; Descending
LDA RW_ORDER
CMP #$C1
BEQ L14A91
LDX #$C1 ; Ascending
L14A91 STX RW_ORDER
JSR L0827
JMP L0809
*
*
*
CTRLRW LDX #$01 ; ADD 1
LDY #$00 ; FIRST SECTOR
LDA RW_ORDER
CMP #$C1
BEQ CTRLRW1
LDX #$FF ; ADD -1
LDY #$0F ; FIRST SECTOR
CTRLRW1 STX RW_INCREMENT
STY RWTS_SECTOR
RTS
*
* CTRL-R : READ A TRACK
*
L14AA CMP #$92 ; CTRL-R / READ
BEQ CTRLR
JMP L14AB
CTRLR LDA #$01
STA RWTS_COMMAND
BNE CTRLRWNOW
*
* CTRL-W : WRITE A TRACK
*
L14AB CMP #$97 ; CTRL-W / WRITE A TRACK
BEQ CTRLW
JMP L14AC
CTRLW LDA #$02
STA RWTS_COMMAND
*
CTRLRWNOW JSR CTRLRW
LDA #$10
STA RW_PAGES
LDA #0
STA RWTS_BUFFER
]LP LDA $EF ; SET BUFFER ADDRESS
STA RWTS_BUFFER+1
LDA #>RWTS
LDY #<RWTS
JSR RWTS_ENTRY ; READ/WRITE
BCS CTRLRWERR
INC $EF ; NEXT BUFFER PAGE
LDA RWTS_SECTOR ; NEXT SECTOR +/-
CLC
ADC RW_INCREMENT
STA RWTS_SECTOR
DEC RW_PAGES ; LOOP
LDA RW_PAGES
BNE ]LP
BEQ CTRLRWEXIT
CTRLRWERR LDA #$87
JSR L1DD0
CTRLRWEXIT JSR CTRLRW
INC RWTS_TRACK
JMP L0800
*
* R : READ A SECTOR
*
L14AC CMP #$D2 ; READ COMMAND
BNE L14B5
LDA #$01
STA RWTS_COMMAND
JMP L1739
*
* W : WRITE A SECTOR
*
L14B5 CMP #$D7 ; WRITE COMMAND
BNE L14C1
LDA #$02
STA RWTS_COMMAND
JMP L1739
L14C1 CMP #$88 ; LEFT ARROW
BNE L14CA
LDA #$FF
JMP L180A
L14CA CMP #$95 ; RIGHT ARROW
BNE L14D3
LDA #$01
JMP L180A
L14D3 CMP #$8B ; UP ARROW
BNE L14DC
LDA #$F0
JMP L180A
L14DC CMP #$8A ; DOWN ARROW
BNE L14E5
LDA #$10
JMP L180A
L14E5 CMP #$D8 ; X
BNE L1534
JSR L0812
JSR L195F
LDY #$0E
JSR L0824
BCC L14FC
CMP #$9B
BEQ L152E
LDA $F2
L14FC STA $F2
JSR L195F
LDY #$16
JSR L0824
BCC L150E
CMP #$9B
BEQ L152E
LDA $F3
L150E STA $F3
JSR L195F
LDY #$1E
JSR L0824
BCC L1520
CMP #$9B
BEQ L152E
LDA $F5
L1520 STA $F5
JSR L195F
LDY #$25
JSR L0824
BCS L152E
STA $F4
L152E JSR L0815
JMP L0809
L1534 CMP #$94
BNE L155F
LDA $E7
BNE L1546
LDA #$FF
STA $E7
JSR L1923
JMP L154D
L1546 LDA #$00
STA $E7
JSR L1945
L154D JSR L0812
JSR L0827
JSR L080F
JSR L0815
JMP L080C
JSR L0815
L155F CMP #$C3
BEQ L1566
JMP L1634
L1566 LDX #$27
L1568 LDA L160C,X
STA L07D0,X
DEX
BPL L1568
LDA TXT_SLOT
STA $07E5
LDA TXT_DRIVE
EOR #$03
STA $07ED
L157F LDA #$20
STA $26
L1583 DEC $27
BNE L1595
DEC $26
BNE L1595
LDA $07F7
EOR #$7F
STA $07F7
BNE L157F
L1595 LDA KBD
BPL L1583
BIT KBDSTROBE
PHA
LDX #$27
LDA #$A0
L15A2 STA L07D0,X
DEX
BPL L15A2
PLA
CMP #$F9
BNE L15AF
LDA #$D9
L15AF CMP #$D9
BEQ L15B6
JMP L0809
L15B6 LDA #$02
STA RWTS_COMMAND
LDA #$00
STA RWTS_VOLUME
STA RWTS_BUFFER
LDA $EF
STA RWTS_BUFFER+1
LDA RWTS_DRIVE
EOR #$03
STA RWTS_DRIVE
LDA #>RWTS
LDY #<RWTS
JSR RWTS_ENTRY
BCC L15EC
LDX #$11
L15DB LDA L15FA,X
STA L07D0,X
DEX
BPL L15DB
L15E4 LDA KBD
BPL L15E4
BIT KBDSTROBE
L15EC JSR L082A
LDA RWTS_DRIVE
EOR #$03
STA RWTS_DRIVE
JMP L0809
L15FA ASC "CAN'T COPY SECTOR!"
L160C ASC "CONFIRM COPY TO SLOT X/DRIVE X (Y/N) : _"
*
* E : EXECUTE CODE AT $0300
*
L1634 CMP #$E5
BEQ L1635
CMP #$C5 ; E
BNE L1636
L1635 JSR L0300 ; execute code
LDA #$87 ; beep
JSR L1DD0
BIT KBDSTROBE ; reset kbd
JMP L0809 ; loop
*
* CTRL-F : ERASE/FORMAT
*
L1636 CMP #$86 ; WAS E = $C5
BEQ L163B
JMP L16D8
L163B LDX #$25
L163D LDA L16B2,X
STA L07D0,X
DEX
BPL L163D
JSR L0812
LDA #$17
JSR L081E
LDA LBEFD+1
LDY #$07
JSR L081B
LDA RWTS_OVOLUME
LDY #$23
JSR L081B
LDY #$23
JSR L0824
BCC L166C
CMP #>L8D00
BNE L169A
LDA RWTS_OVOLUME
L166C STA RWTS_VOLUME
LDA #$04
STA RWTS_COMMAND
LDA #>RWTS
LDY #<RWTS
JSR RWTS_ENTRY
BCC L169A
LDX #$27
LDA #$A0
L1681 STA L07D0,X
DEX
BPL L1681
LDX #$11
L1689 LDA L16A0,X
STA L07D0,X
DEX
BPL L1689
L1692 LDA KBD
BPL L1692
BIT KBDSTROBE
L169A JSR L082A
JMP L0809
L16A0 ASC "CAN'T FORMAT DISK!"
L16B2 ASC "FORMAT $XX TRACKS WITH DISK VOLUME $XX"
*
* F : FIND
*
L16D8 CMP #$C6
BNE L16E2
JSR L19EF
JMP L0800
*
* ? : HELP
*
L16E2 CMP #$BF
BNE L1700
LDA #>L1E00
JSR L1703
CMP #$BF
BNE L16FD
LDA #>L2200
JSR L1703
CMP #$BF
BNE L16FD
LDA #>L2600
JSR L1703
L16FD JMP L0800
L1700 JMP L14A0
L1703 STA $01
LDA #$00
STA $00
STA $02
LDA #$04
STA $03
L170F LDY #$77
L1711 LDA ($00),Y
STA ($02),Y
DEY
BPL L1711
LDA $00
EOR #$80
STA $00
LDA $02
EOR #$80
STA $02
BMI L170F
INC $01
INC $03
LDA $03
CMP #$08
BNE L170F
L1730 LDA KBD
BPL L1730
BIT KBDSTROBE
RTS
*
*
*
L1739 JSR L0812
LDA #$01
JSR L081E
L1741 LDY #$06
JSR L0824
BCC L1796
CMP #$8D
BNE L178D
LDA $E0
BNE L1763
CPY #$07
BNE L175A
LDA RWTS_TRACK
JMP L1796
L175A LDA $00
LSR
LSR
LSR
LSR
JMP L1796
L1763 CPY #$06
BNE L176D
LDA RWTS_TRACK
JMP L1796
L176D CPY #$07
BNE L177F
LDY #$FF
LDA $00
SEC
L1776 INY
SBC #$64
BCS L1776
TYA
JMP L1796
L177F LDY #$FF
LDA $00
SEC
L1784 INY
SBC #$0A
BCS L1784
TYA
JMP L1796
L178D JSR L082A
JSR L0815
JMP L080C
*
*
*
L1796 CMP LBEFD+1 ; END OF DISK ?
BCC L17A3
LDA #$87
JSR L1DD0
JMP L1741
L17A3 STA $DF
LDY #$06
JSR L081B
L17AA LDY #$11
JSR L0824
BCC L17F3
CMP #$8D
BNE L178D
LDA $E0
BNE L17CC
CPY #$12
BNE L17C3
LDA RWTS_SECTOR
JMP L17F3
L17C3 LDA $00
LSR
LSR
LSR
LSR
JMP L17F3
L17CC CPY #$11
BNE L17D6
LDA RWTS_SECTOR
JMP L17F3
L17D6 CPY #$12
BNE L17E8
LDY #$FF
LDA $00
SEC
L17DF INY
SBC #$64
BCS L17DF
TYA
JMP L17F3
L17E8 LDY #$FF
LDA $00
SEC
L17ED INY
SBC #$0A
BCS L17ED
TYA
L17F3 CMP #$10
BCC L17FF
LDA #$87
JSR COUT1
JMP L17AA
L17FF STA RWTS_SECTOR
LDA $DF
STA RWTS_TRACK
JMP L1862
L180A PHA
JSR L0812
LDA #$01
STA RWTS_COMMAND
LDA $F1
CMP $E3
BEQ L1822
LDA #$00
STA $F1
STA $EC
JSR L082D
L1822 LDA $EC
BEQ L1829
JMP L14A3
L1829 PLA
L182A CLC
ADC RWTS_SECTOR
STA RWTS_SECTOR
BPL L1846
DEC RWTS_TRACK
BPL L1841
LDA LBEFD+1
STA RWTS_TRACK
DEC RWTS_TRACK
L1841 LDA #$10
JMP L182A
L1846 AND #$F0
BEQ L185F
INC RWTS_TRACK
LDA RWTS_TRACK
CMP LBEFD+1
BCC L185A
LDA #$00
STA RWTS_TRACK
L185A LDA #$F0
JMP L182A
L185F JMP L1862
L1862 JSR L082A
LDA #$00
STA RWTS_VOLUME
STA RWTS_BUFFER
LDA $EF
STA RWTS_BUFFER+1
LDA #>RWTS
LDY #<RWTS
JSR RWTS_ENTRY
BCS L189F
JSR L082A
LDY #$00
L1880 LDA ($EE),Y
STA L8A00,Y
INY
BNE L1880
LDA RWTS_COMMAND
CMP #$02
BEQ L1896
LDA $E7
BEQ L1896
JSR L1923
L1896 JSR L080F
JSR L0815
JMP L0809
*
* CANNOT WRITE
*
L189F LDA #$87
JSR L1DD0
LDX #$19
L18A6 LDA L1909,X
STA L07D0,X
DEX
BPL L18A6
LDA RWTS_COMMAND
CMP #$01
BNE L18CA
LDA #$A0
STA $07D6
LDA #$C5
STA $07D8
LDA #$C1
STA $07D9
LDA #$C4
STA $07DA
L18CA LDA #$20
STA $26
L18CE DEC $27
BNE L18E1
DEC $26
BNE L18E1
LDA $07E9
EOR #$7F
STA $07E9
JMP L18CA
L18E1 LDA KBD
BPL L18CE
BIT KBDSTROBE
PHA
LDX #$27
LDA #$A0
L18EE STA L07D0,X
DEX
BPL L18EE
PLA
CMP #$F9 ; y
BNE L18FC
JMP L1862
L18FC CMP #$D9 ; Y
BNE L1903
JMP L1862
L1903 JSR L0815
JMP L0809
L1909 ASC "CAN'T WRITE. RETRY (Y/N):_"
L1923 LDY #$00
L1925 LDA ($EE),Y
CLC
ADC $F2
EOR $F3
AND $F5
ORA $F4
STA ($EE),Y
LDA L8A00,Y
CLC
ADC $F2
EOR $F3
AND $F5
ORA $F4
STA L8A00,Y
INY
BNE L1925
RTS
L1945 LDY #$00
L1947 LDA ($EE),Y
EOR $F3
SEC
SBC $F2
STA ($EE),Y
LDA L8A00,Y
EOR $F3
SEC
SBC $F2
STA L8A00,Y
INY
BNE L1947
RTS
L195F LDX #$27
L1961 LDA L198B,X
STA L07D0,X
DEX
BPL L1961
LDA #$17
JSR L081E
LDY #$0E
LDA $F2
JSR L081B
LDY #$16
LDA $F3
JSR L081B
LDY #$1E
LDA $F5
JSR L081B
LDY #$25
LDA $F4
JMP L081B
L198B ASC "MASK WITH ADD $00/EOR $00/AND $00/OR $00"
L19B3 LDX #$77
LDA #$A0
L19B7 STA L0400,X
STA L0480,X
STA L0500,X
STA L0580,X
STA L0600,X
STA L0680,X
STA L0700,X
STA L0780,X
DEX
BPL L19B7
LDX #$27
L19D4 LDA #$AD
STA L0400,X
DEX
BPL L19D4
LDX #$0C
L19DE LDA L1D9A,X
STA L040D,X
DEX
BPL L19DE
INX
STX $24
LDA #$02
JMP L081E
L19EF JSR L19B3
LDX #$27
L19F4 LDA L1DA7,X
STA L0600,X
DEX
BPL L19F4
L19FD LDA #$20
STA $26
L1A01 DEC $27
BNE L1A13
DEC $26
BNE L1A13
LDA $0627
EOR #$7F
STA $0627
BNE L19FD
L1A13 LDA KBD
BPL L1A01
BIT KBDSTROBE
CMP #$F3 ; s
BNE L1A21
LDA #$D3 ; S
L1A21 CMP #$E8 ; h
BNE L1A27
LDA #$C8 ; H
L1A27 CMP #$E1 ; a
BNE L1A2D
LDA #$C1 ; A
L1A2D CMP #$D3 ; S
BEQ L1A34
JMP L1B15
* SECTOR SEARCH
L1A34 JSR L19B3
LDA #$01
STA RWTS_COMMAND
LDA #$00
STA RWTS_VOLUME
STA RWTS_TRACK
STA RWTS_SECTOR
STA RWTS_BUFFER
LDA #>L8B00
STA RWTS_BUFFER+1
L1A4F LDA KBD
CMP #$9B
BNE L1A59
JMP L1AFC
L1A59 LDA #>RWTS
LDY #<RWTS
JSR RWTS_ENTRY
BCC L1A65
JMP L1AFC
L1A65 LDY #$00
L1A67 LDA ($EE),Y
CMP L8B00,Y
BNE L1AC3
INY
BNE L1A67
LDY $24
LDA RWTS_TRACK
JSR L081B
LDA #$AF
STA ($28),Y
INY
LDA RWTS_SECTOR
JSR L081B
INY
STY $24
CPY #$28
BNE L1AC3
LDA #$00
STA $24
INC $25
LDA $25
CMP #$16
BNE L1AC0
LDA #$A8
STA $07E1
LDA #$D7
STA $07E2
LDA #$C1
STA $07E3
LDA #$C9
STA $07E4
LDA #$D4
STA $07E5
LDA #$A9
STA $07E6
L1AB5 LDA KBD
BPL L1AB5
BIT KBDSTROBE
JSR L19B3
L1AC0 JSR L0821
L1AC3 INC RWTS_SECTOR
LDA RWTS_SECTOR
AND #$0F
BNE L1A4F
STA RWTS_SECTOR
INC RWTS_TRACK
LDA RWTS_TRACK
CMP LBEFD+1
BEQ L1ADE
JMP L1A4F
L1ADE LDA #$00
STA RWTS_TRACK
BIT KBDSTROBE
LDX #$0D
L1AE8 LDA L1D7E,X
STA $07DD,X
DEX
BPL L1AE8
L1AF1 LDA KBD
CMP #$8D
BNE L1AF1
BIT KBDSTROBE
RTS
L1AFC BIT KBDSTROBE
LDX #$0D
L1B01 LDA L1D8C,X
STA $07DD,X
DEX
BPL L1B01
L1B0A LDA KBD
CMP #$9B
BNE L1B0A
BIT KBDSTROBE
RTS
* ASCII SEARCH
L1B15 CMP #$C1
BEQ L1B1C
JMP L1B9C
L1B1C JSR L19B3
LDX #$27
L1B21 LDA L1D56,X
STA L0600,X
DEX
BPL L1B21
INX
L1B2B LDA #$20
STA $26
L1B2F DEC $27
BNE L1B41
DEC $26
BNE L1B41
LDA L0700,X
EOR #$7F
STA L0700,X
BNE L1B2B
L1B41 LDA KBD
BPL L1B2F
BIT KBDSTROBE
CMP #$9B
BNE L1B4E
RTS
L1B4E CMP #$8D
BEQ L1B7B
CMP #$88
BNE L1B66
CPX #$00
BEQ L1B41
LDA #$A0
STA L0700,X
DEX
STA L0700,X
JMP L1B2F
L1B66 CPX #$27
BEQ L1B41
AND $E8
BPL L1B72
CMP #$C1
BCC L1B74
L1B72 ORA $E9
L1B74 STA L0700,X
INX
JMP L1B2F
L1B7B CPX #$00
BNE L1B80
RTS
L1B80 STX L02FF
TXA
EOR #$FF
STA L02FE
INC L02FE
INC L02FE
DEX
L1B90 LDA L0700,X
STA L0200,X
DEX
BPL L1B90
JMP L1C61
* HEXA SEARCH
L1B9C CMP #$C8
BEQ L1BA1
RTS
L1BA1 JSR L19B3
LDX #$27
L1BA6 LDA L1D2E,X
STA L0600,X
DEX
BPL L1BA6
LDX #$00
L1BB1 LDA #$20
STA $26
L1BB5 DEC $27
BNE L1BC7
DEC $26
BNE L1BC7
LDA L0700,X
EOR #$7F
STA L0700,X
BNE L1BB1
L1BC7 LDA KBD
BPL L1BB5
BIT KBDSTROBE
CMP #$9B
BNE L1BD4
RTS
L1BD4 CMP #$8D
BEQ L1C16
CMP #$88
BNE L1BEC
CPX #$00
BEQ L1BB5
LDA #$A0
STA L0700,X
DEX
STA L0700,X
JMP L1BB5
L1BEC CMP #$B0
BCC L1C0E
CMP #$BA
BCC L1C03
CMP #$E1
BCC L1BFB
SEC
SBC #$20
L1BFB CMP #$C1
BCC L1C0E
CMP #$C7
BCS L1C0E
L1C03 CPX #$27
BEQ L1BB5
STA L0700,X
INX
JMP L1BB5
L1C0E LDA #$87
JSR L1DD0
JMP L1BB5
L1C16 TXA
BNE L1C1A
RTS
L1C1A AND #$01
BNE L1C0E
TXA
LSR
STA L02FF
EOR #$FF
STA L02FE
DEC L02FE
DEC L02FE
LDX #$00
LDY #$00
L1C32 LDA L0700,Y
SEC
SBC #$B0
CMP #$0A
BCC L1C3F
SEC
SBC #$07
L1C3F ASL
ASL
ASL
ASL
STA L0200,X
INY
LDA L0700,Y
SEC
SBC #$B0
CMP #$0A
BCC L1C54
SEC
SBC #$07
L1C54 ORA L0200,X
STA L0200,X
INX
INY
CPX L02FF
BNE L1C32
L1C61 JSR L19B3
LDA #$00
STA RWTS_VOLUME
STA RWTS_TRACK
STA RWTS_SECTOR
STA RWTS_BUFFER
LDA #$01
STA RWTS_COMMAND
LDA #>L8B00
STA RWTS_BUFFER+1
L1C7C LDA KBD
CMP #$9B
BNE L1C86
JMP L1AFC
L1C86 LDA #>RWTS
LDY #<RWTS
JSR RWTS_ENTRY
BCC L1C92
JMP L1AFC
L1C92 LDY #$00
L1C94 STY $DF
LDX #$00
L1C98 LDA L8B00,Y
CMP L0200,X
BNE L1D05
INY
INX
CPX L02FF
BNE L1C98
LDY $24
LDA RWTS_TRACK
JSR L081B
LDA #$AF
STA ($28),Y
INY
LDA RWTS_SECTOR
JSR L081B
LDA #$AD
STA ($28),Y
INY
LDA $DF
JSR L081B
INY
INY
INY
STY $24
CPY #$23
BCC L1D05
LDA #$00
STA $24
INC $25
JSR L0821
LDA $25
CMP #$16
BNE L1D05
LDA #$A8
STA $07E1
LDA #$D7
STA $07E2
LDA #$C1
STA $07E3
LDA #$C9
STA $07E4
LDA #$D4
STA $07E5
LDA #$A9
STA $07E6
L1CFA LDA KBD
BPL L1CFA
BIT KBDSTROBE
JSR L19B3
L1D05 LDY $DF
INY
CPY L02FE
BNE L1C94
INC RWTS_SECTOR
LDA RWTS_SECTOR
AND #$0F
BEQ L1D1A
JMP L1C7C
L1D1A STA RWTS_SECTOR
INC RWTS_TRACK
LDA RWTS_TRACK
CMP LBEFD+1
BEQ L1D2B
JMP L1C7C
L1D2B JMP L1ADE
L1D2E ASC "TYPE IN THE HEXADECIMAL BYTES TO SEARCH:"
L1D56 ASC "TYPE IN THE SEARCH STRING (MAX 40 CHARS)"
L1D7E ASC "PRESS <RETURN>"
L1D8C ASC "PRESS <ESCAPE>"
L1D9A ASC " DISK SEARCH "
L1DA7 ASC "DO <S>ECTOR, <H>EXA OR <A>SCII SEARCH: _"
HEX 00
L1DD0 LDA #$40
JSR L1DF0
STY L1DF3
LDY #$08
L1DDA LDA #$25
JSR L1DF4
LDA SPKR
LDA #$20
JSR L1DF4
LDA SPKR
DEY
BNE L1DDA
LDY L1DF3
L1DF0 RTS
DB $00
DB $00
L1DF3 DB $00
L1DF4 SEC
L1DF5 PHA
L1DF6 SBC #$01
BNE L1DF6
PLA
SBC #$01
BNE L1DF5
RTS
DS \
L1E00 ASC "------------ DISK EDIT HELP ------------"
ASC " [G] GO TO A SPECIFIC SECTOR IN A FILE. "
ASC " [L] 6502 OP-CODES VIEW MODE. "04
ASC " "08
ASC " PRESS [?] KEY FOR THE NEXT HELP SCREEN"
ASC " [R] READ A SPECIFIC TRACK/SECTOR. "
ASC " [X] HEXA MASK AND/OR/XOR SELECTION. "
ASC " "04
ASC " "FF" "00
ASC " ---------------------------------------"
ASC "- [W] REWRITE A SPECIFIC TRACK/SECTOR. "
ASC " "
ASC " "
ASC '&'
ASC " SECTOR SELECTION: "
ASC " "
ASC " BYTE SELECTION: "
ASC " "
ASC '`'
ASC " [LEFT ARROW] PREVIOUS SECTOR. "
ASC " SECTOR VIEW: "
ASC " [I] UP A LINE. [M] DOWN A L"
ASC "INE. "
ASC '`'
ASC " [RIGHT ARROW] NEXT SECTOR. "
ASC " [A] ASCII CHARACTERS VIEW MODE. "
ASC " [J] LEFT A BYTE. [K] RIGHT A "
ASC "BYTE. "02
ASC " [UP ARROW] PREVIOUS TRACK. "
ASC " [B] MODE ASCII-HEXA (HALF SCREEN"
ASC " EACH). [P] POSITION CURSOR AT A SPECIFI"
ASC "C BYTE. [DOWN ARROW] NEXT TRACK"
ASC ". [H] HEXADECIMAL BYTES VI"
ASC "EW MODE. [U] GO TO THE TOP OF THE"
ASC " SCREEN. "0D0F
ASC 'RESTAR'
L2200 ASC "------------ DISK EDIT HELP ------------"
ASC " [-] RESTORE THE CURRENT BYTE. "
ASC " [CTRL-F] ERASE/FORMAT TRACK/DISK. "03
ASC " "06
ASC " PRESS [?] KEY FOR THE NEXT HELP SCREEN"
ASC " [<] REMOVE THE CURRENT BYTE. "
ASC " [F] FIND A BYTE/STRING PATTERN. "
ASC " "04
ASC " "FF" "00
ASC " ---------------------------------------"
ASC "- [=] FILL END OF BUFFER WITH BYTE. "
ASC " [N] TOGGLE HEXA/DECIMAL NUMBERING. "
ASC " "
ASC '&'
ASC " EDITION: "
ASC " [>] ADD A BYTE (AT CURRENT POSIT"
ASC "ION). [O] INPUT/OUTPUT PARAMETERS SELE"
ASC "CTION. "
ASC '`'
ASC " [1 OR 2] SELECT AN EDITION BUFFE"
ASC "R. "
ASC " [Q] MONITOR [CTRL-Q] PRODOS QUI"
ASC "T. "
ASC '`'
ASC " [ENTER] ENTER EDITION MODE. "
ASC " GENERAL MODE: "
ASC " [S] SLOT AND DRIVE SPECIFICATION"
ASC ". "02
ASC " [ESCAPE] LEAVE EDITION MODE. "
ASC " [C] COPY THE SECTOR ON THE OTHER"
ASC " DRIVE. [T] TYPEFACE MASK SELECTION (FLS"
ASC "H/INV). [Z] CANCEL ALL MODIFICAT"
ASC "IONS. [D] DIRECTORY COMMAND MO"
ASC "DE. [V] VTOC EDITION MODE. "
ASC " "
ASC 'RS'0D0A
ASC "J"01
ASC 'CM'
L2600 ASC "------------ DISK EDIT HELP ------------"
ASC " [CTRL-H] <===> [LEFT ARROW] KEY "
ASC "SPECIAL COMMANDS: "12
ASC " "
ASC '$'
ASC " GENERAL COMMANDS (CONTINUED): "
ASC " [CTRL-I] <===> [-->!] KEY "
ASC " [CTRL-C] TOGGLE LW CASE/NORMAL MODE. "
ASC " "04
ASC " "FF" "00
ASC " [Y] TOGGLE ASCII FILTER. "
ASC " [CTRL-J] <===> [DOWN ARROW] KEY "
ASC " [CTRL-P] SCREEN HARDCOPY ON PRINTER. "
ASC " "
ASC '0'
ASC " [.] SPECIFY WINDOW ORIGIN. "
ASC " [CTRL-K] <===> [UP ARROW] KEY "
ASC " [CTRL-S] PRINTER SLOT NUMBER. "
ASC " "
ASC '`'
ASC " [?] CALL FOR HELP. (DISPLAY T"
ASC "HIS) [CTRL-M] <===> [RETURN] KEY "
ASC " [CTRL-T] TOGGLE MASK/UNMASK COMM"
ASC "AND. "
ASC '`'
ASC " [-->!] GO TO BEGINNING OF NEXT L"
ASC "INE. [CTRL-Q] <===> [Q] KEY "
ASC " "
ASC " "02
ASC " "
ASC " [CTRL-U] <===> [RIGHT ARROW] KEY"
ASC " (C) 2007 FROM THE SOFTWARE FACTOR"
ASC "Y, LOGO KEYBOARD EQUIVALENTS: "
ASC " "
ASC " ------------- END OF HELP"
ASC " --------------"
ASC '$7D0,X'0D03
L2A00 ASC "--------- INPUT/OUTPUT CONTROL ---------"
ASC " "
ASC " !XXX: XX XX XX XX XX XX XX XX ! "13
ASC " "
ASC '&'
ASC " "
L2A80 ASC " "
ASC "DOS TYPE : XXXXXX (DOS3.3) "
ASC " !XXX: XX XX XX XX XX XX XX XX ! "04
ASC " "FF" "00
ASC " "
L2B00 ASC "ADRESS FIELD MARK : XX-XX-XX (D5-AA-96)"
ASC " "
ASC " !XXX: XX XX XX XX XX XX XX XX ! "
ASC '0'
ASC " "
L2B80 ASC "ADRESS FIELD EPILOG: XX-XX-XX (DE-AA-EB)"
ASC " +--------- SECTOR NUMBERING ---------+ "
ASC " !XXX: XX XX XX XX XX XX XX XX ! "
ASC '`'
ASC " "
L2C00 ASC "DATA FIELD MARK : XX-XX-XX (D5-AA-AD)"
ASC " !XXX: XXX XXX XXX XXX XXX XXX XXX XXX! "
ASC " !XXX: XX XX XX XX XX XX XX XX ! "
ASC '`'
ASC " "
L2C80 ASC "DATA FIELD EPILOG : XX-XX-XX (DE-AA-EB)"
ASC " !XXX: XXX XXX XXX XXX XXX XXX XXX XXX! "
ASC " !XXX: XX XX XX XX XX XX XX XX ! "02
ASC " "
L2D00 ASC "CHECKSUM ENABLED : XXX (YES) "
ASC " +------------- NIBBLES: -------------+ "
ASC " !XXX: XX XX XX XX XX XX XX XX ! "
ASC "X "
L2D80 ASC "NUMBER OF TRACKS : XXX (XXX) "
ASC " !XXX: XX XX XX XX XX XX XX XX ! "
ASC " +------------------------------------+ "
ASC "K"
L2DF9 CMP #$CF ; OPTIONS
BEQ L2E00
JMP L3536
L2E00 LDX #$77
L2E02 LDA L2A00,X
STA L0400,X
LDA L2A80,X
STA L0480,X
LDA L2B00,X
STA L0500,X
LDA L2B80,X
STA L0580,X
LDA L2C00,X
STA L0600,X
LDA L2C80,X
STA L0680,X
LDA L2D00,X
STA L0700,X
LDA L2D80,X
STA L0780,X
DEX
BPL L2E02
JSR L33B3
JSR L3407
JSR L335F
JSR L3386
LDA #$02
JSR L081E
LDA #$15
STA $24
JSR L332C
L2E4D LDA KBD
BPL L2E4D
BIT KBDSTROBE
CMP #$E0
BCC L2E5C
SEC
SBC #$20
L2E5C CMP #$CD
BNE L2E6C
JSR L330B
JSR L2FF1
JSR L332C
JMP L2E4D
L2E6C CMP #$C9
BNE L2E7C
JSR L330B
JSR L2FBD
JSR L332C
JMP L2E4D
L2E7C CMP #$CB
BNE L2E8C
JSR L330B
JSR L2F8D
JSR L332C
JMP L2E4D
L2E8C CMP #$CA
BNE L2E9C
JSR L330B
JSR L2F4E
JSR L332C
JMP L2E4D
L2E9C CMP #$CE
BNE L2EBA
LDA $25
PHA
LDA $E0
BNE L2EA9
LDA #$FF
L2EA9 EOR $E0
STA $E0
JSR L3407
PLA
JSR L081E
JSR L332C
JMP L2E4D
L2EBA CMP #$8D
BNE L2ECA
JSR L330B
JSR L302D
JSR L332C
JMP L2E4D
L2ECA CMP #$DA
BNE L2F28
LDA #$00
STA $E3
LDA #$38
STA LB942
LDA #$23
STA LBEFD+1
JSR setIDOS
LDX #$3F
L2EE1 LDA L34B1,X
STA LBA29,X
DEX
BPL L2EE1
LDX #$00
LDY #$00
L2EEE STX $08
LDX #$00
L2EF2 LDA L34F1,Y
STA $00,X
INX
INY
CPX #$04
BNE L2EF2
LDX $08
LDA L3485,X
LDX #$00
STA ($00,X)
STA ($02,X)
LDX $08
INX
CPX #$0C
BNE L2EEE
LDA $25
PHA
JSR L33B3
JSR L3407
JSR L3386
JSR L335F
PLA
JSR L081E
JSR L332C
JMP L2E4D
L2F28 CMP #$9B
BNE L2F46
LDX #$96
L2F2E TXA
STA LBA00,X
INX
BMI L2F2E
LDX #$3F
L2F37 LDY LBA29,X
BPL L2F40
TXA
STA LBA00,Y
L2F40 DEX
BPL L2F37
JMP L0800
L2F46 LDA #$87
JSR L1DD0
JMP L2E4D
L2F4E LDA $25
CMP #$0B
BCC L2F67
LDA $24
SEC
SBC #$04
STA $24
CMP #$03
BEQ L2F60
RTS
L2F60 LDA #$23
STA $24
JMP L2FBD
L2F67 CMP #$07
BCS L2F8A
LDA $24
SEC
SBC #$03
STA $24
CMP #$12
BEQ L2F77
RTS
L2F77 LDA #$1B
STA $24
LDA $25
CMP #$02
BNE L2F8A
LDA #$23
STA $24
LDA #$16
JMP L081E
L2F8A JMP L2FBD
L2F8D LDA $25
CMP #$0B
BCC L2FA6
LDA $24
CLC
ADC #$04
STA $24
CMP #$27
BEQ L2F9F
RTS
L2F9F LDA #$07
STA $24
JMP L2FF1
L2FA6 CMP #$06
BCS L2FBA
LDA $24
CLC
ADC #$03
STA $24
CMP #$1E
BEQ L2FB6
RTS
L2FB6 LDA #$15
STA $24
L2FBA JMP L2FF1
L2FBD DEC $25
JSR L0821
LDA $25
CMP #$01
BNE L2FD1
LDA #$07
STA $24
LDA #$16
JMP L081E
L2FD1 CMP #$08
BNE L2FDA
LDA #$07
JMP L081E
L2FDA CMP #$0B
BNE L2FE7
LDA #$15
STA $24
LDA #$09
JMP L081E
L2FE7 CMP #$0E
BNE L2FF0
LDA #$0D
JMP L081E
L2FF0 RTS
L2FF1 INC $25
JSR L0821
LDA $25
CMP #$17
BNE L3005
LDA #$15
STA $24
LDA #$02
JMP L081E
L3005 CMP #$0E
BNE L300E
LDA #$0F
JMP L081E
L300E CMP #$0A
BNE L301B
LDA #$07
STA $24
LDA #$0C
JMP L081E
L301B CMP #$08
BNE L3024
LDA #$09
JMP L081E
L3024 CMP #$06
BNE L302C
LDA #$15
STA $24
L302C RTS
L302D LDA $25
CMP #$06
BEQ L3036
JMP L30CC
L3036 LDA #$20
STA $26
L303A DEC $27
BNE L3066
DEC $26
BNE L3066
LDA $0715
CMP #$DF
BNE L304F
JSR L335F
JMP L3036
L304F LDA #$DF
STA $0715
STA $0716
LDA $0717
CMP #$A0
BEQ L3036
LDA #$DF
STA $0717
JMP L3036
L3066 LDA KBD
BPL L303A
BIT KBDSTROBE
CMP #$F9
BEQ L3074
CMP #$D9
L3074 BNE L3084
LDA #$38
L3078 STA LB942
JSR L335F
JSR L2F8D
JMP L302D
L3084 CMP #$EE
BEQ L308A
CMP #$CE
L308A BNE L3091
LDA #$18
JMP L3078
L3091 CMP #$8D
BEQ L3097
CMP #$8A
L3097 BEQ L309B
CMP #$95
L309B BNE L30A3
LDA LB942
JMP L3078
L30A3 CMP #$88
BNE L30B0
JSR L335F
JSR L2F4E
JMP L302D
L30B0 CMP #$8B
BNE L30BD
JSR L335F
JSR L2FBD
JMP L302D
L30BD CMP #$9B
BNE L30C4
JMP L335F
L30C4 LDA #$87
JSR L1DD0
JMP L3036
L30CC CMP #$07
BNE L3118
LDY $24
JSR L0824
BCS L30E0
STA LBEFD+1
JSR L2F8D
JMP L302D
L30E0 CMP #$8D
BEQ L30E6
CMP #$8A
L30E6 BEQ L30EA
CMP #$95
L30EA BNE L30FA
JSR L3407
LDA #$07
JSR L081E
JSR L2FF1
JMP L302D
L30FA CMP #$8B
BEQ L3100
CMP #$88
L3100 BNE L3110
JSR L3407
LDA #$07
JSR L081E
JSR L2FBD
JMP L302D
L3110 JSR L3407
LDA #$07
JMP L081E
L3118 CMP #$09
BEQ L311F
JMP L31C1
L311F LDA #$20
STA $26
L3123 DEC $27
BNE L3145
DEC $26
BNE L3145
LDA L04BD
CMP #$DF
BNE L3138
JSR L3386
JMP L311F
L3138 LDA #$DF
LDX #$05
L313C STA L04BD,X
DEX
BPL L313C
JMP L311F
L3145 LDA KBD
BPL L3123
BIT KBDSTROBE
CMP #$E0
BCC L3154
SEC
SBC #$20
L3154 CMP #$C3 ; CP/M
BNE L3155
LDA #$20
STA $E3
JSR setICPM
L315F JSR L3386
JSR L3407
LDA #$09
JSR L081E
JSR L2FF1
JMP L302D
L3155 CMP #$C4 ; DOS 3.3
BNE L3170
LDA #$00
STA $E3
JSR setIDOS
JMP L315F
L3170 CMP #$D0 ; ProDOS
BNE L317E
LDA #$7F
L3171 STA $E3
JSR setIPRO
JMP L315F
L317E CMP #$D5 ; UCSD Pascal
BNE L318C
LDA #$FF
BNE L3171 ; L315F
* STA $E3
* JSR setIPRO
* JMP L315F
L318C CMP #$8D
BEQ L3192
CMP #$8A
L3192 BEQ L3196
CMP #$95
L3196 BNE L31A1
JSR L3386
JSR L2FF1
JMP L302D
L31A1 CMP #$8B
BEQ L31A7
CMP #$88
L31A7 BNE L31B2
JSR L3386
JSR L2FBD
JMP L302D
L31B2 CMP #$9B
BNE L31B9
JMP L3386
L31B9 LDA #$87
JSR L1DD0
JMP L311F
L31C1 CMP #$06
BCC L31C8
JMP L324C
L31C8 SEC
SBC #$02
STA $01
ASL
ADC $01
STA $01
LDA $24
SEC
SBC #$15
BEQ L31DF
AND #$01
BNE L31DF
LDA #$02
L31DF CLC
ADC $01
ASL
ASL
TAX
LDA L34F1,X
STA $02
LDA L34F1+1,X
STA $03
LDA L34F3,X
STA $04
LDA L34F3+1,X
STA $05
LDY $24
JSR L0830
BMI L321A
ASL
ASL
ASL
ASL
STA $00
INY
JSR L0830
BMI L321A
ORA $00
LDY #$00
STA ($02),Y
STA ($04),Y
L3214 JSR L2F8D
JMP L302D
L321A PHA
LDY #$00
LDA ($02),Y
LDY $24
JSR L0818
PLA
CMP #$8D
BEQ L3214
CMP #$95
BEQ L3214
CMP #$88
BNE L3237
JSR L2F4E
JMP L302D
L3237 CMP #$8A
BNE L3241
JSR L2FF1
JMP L302D
L3241 CMP #$8B
BEQ L3246
RTS
L3246 JSR L2FBD
JMP L302D
L324C CMP #$0F
BCS L32A6
LDY $24
JSR L0824
BCS L3273
PHA
LDA $25
AND #$01
ASL
ASL
ASL
STA $00
LDA $24
LSR
LSR
ORA $00
TAX
DEX
PLA
STA LBFB8,X
L326D JSR L2F8D
JMP L302D
L3273 PHA
LDA $25
PHA
JSR L3407
PLA
JSR L081E
PLA
CMP #$8D
BEQ L326D
CMP #$95
BEQ L326D
CMP #$88
BNE L3291
JSR L2F4E
JMP L302D
L3291 CMP #$8A
BNE L329B
JSR L2FF1
JMP L302D
L329B CMP #$8B
BNE L32A5
JSR L2FBD
JMP L302D
L32A5 RTS
L32A6 LDY $24
JSR L0830
BMI L32D8
ASL
ASL
ASL
ASL
STA $00
INY
JSR L0830
BMI L32D8
ORA $00
PHA
LDA $25
SEC
SBC #$0F
ASL
ASL
ASL
STA $01
LDA $24
LSR
LSR
ORA $01
TAX
DEX
PLA
STA LBA29,X
L32D2 JSR L2F8D
JMP L302D
L32D8 PHA
LDA $25
PHA
JSR L33B3
PLA
JSR L081E
PLA
CMP #$8D
BEQ L32D2
CMP #$95
BEQ L32D2
CMP #$88
BNE L32F6
JSR L2F4E
JMP L302D
L32F6 CMP #$8A
BNE L3300
JSR L2FF1
JMP L302D
L3300 CMP #$8B
BNE L330A
JSR L2FBD
JMP L302D
L330A RTS
L330B LDY $24
LDA $25
CMP #$09
BNE L3316
JSR L3316
L3316 JSR L331C
JSR L331C
L331C LDA ($28),Y
AND #$3F
ORA #$80
CMP #$A0
BCS L3328
ORA #$40
L3328 STA ($28),Y
INY
RTS
L332C LDY $24
LDA $25
CMP #$09
BNE L3337
JSR L3337
L3337 LDA ($28),Y
CMP #$A4
BEQ L3343
AND #$3F
ORA #$40
STA ($28),Y
L3343 INY
LDA ($28),Y
AND #$3F
ORA #$40
STA ($28),Y
INY
LDA ($28),Y
CMP #$A0
BEQ L335D
CMP #$AD
BEQ L335D
AND #$3F
ORA #$40
STA ($28),Y
L335D INY
RTS
L335F LDA LB942
CMP #$38
BNE L3376
LDA #$D9 ; Y
STA $0715
LDA #$C5 ; E
STA $0716
LDA #$D3 ; S
STA $0717
RTS
L3376 LDA #$CE ; N
STA $0715
LDA #$CF ; O
STA $0716
LDA #$A0 ;
STA $0717
RTS
L3386 LDX #$05 ; DOS 3.3
LDY #$05
LDA $E3
BEQ L3396
LDX #$17 ; CP/M
CMP #$20
BEQ L3396
LDX #$0B ; ProDOS
ORA #$00
BPL L3396
LDX #$11 ; PASCAL
L3396 LDA L33A1,X
STA L04BD,Y
DEX
DEY
BPL L3396
RTS
L33A1 ASC "DOS3.3"
ASC "PRODOS"
ASC "PASCAL"
ASC "CP/M "
L33B3 LDA #$02
JSR L081E
LDX #$00
L33BA LDY #$15
L33BC LDA L34F1,X
STA $00
INX
LDA L34F1,X
STA $01
INX
INX
INX
STX $02
LDX #$00
LDA ($00,X)
JSR L0818
LDX $02
INY
CPY #$1E
BNE L33BC
INC $25
JSR L0821
LDA $25
CMP #$06
BNE L33BA
LDX #$00
LDA #$0F
JSR L081E
L33EC LDY #$07
L33EE LDA LBA29,X
JSR L0818
INX
INY
INY
CPY #$27
BNE L33EE
INC $25
JSR L0821
LDA $25
CMP #$17
BNE L33EC
RTS
L3407 LDA #$07
JSR L081E
LDY #$15
LDA LBEFD+1
JSR L081B
LDY #$1F
LDA #$23
JSR L081B
LDA #$0C
JSR L081E
LDX #$00
L3422 LDY #$02
LDA $25
AND #$01
ASL
ASL
ASL
STX $00
JSR L081B
LDX $00
LDY #$07
L3434 LDA LBFB8,X
STX $00
JSR L081B
LDX $00
INY
INX
CPY #$27
BNE L3434
INC $25
JSR L0821
LDA $25
CMP #$0E
BNE L3422
LDA #$0F
JSR L081E
L3454 LDY #$02
LDA $25
SEC
SBC #$0F
ASL
ASL
ASL
JSR L081B
INC $25
JSR L0821
LDA $25
CMP #$17
BNE L3454
RTS
setIDOS LDX #$0F
]lp LDA INTER_DOS,X
STA LBFB8,X
DEX
BPL ]lp
RTS
setIPRO LDX #$0F
]lp LDA INTER_PRO,X
STA LBFB8,X
DEX
BPL ]lp
RTS
setICPM LDX #$0F
]lp LDA INTER_CPM,X
STA LBFB8,X
DEX
BPL ]lp
RTS
* MARKERS
L3485 HEX D5AA96
HEX DEAAEB
HEX D5AAAD
HEX DEAAEB
* DOS 3.3 INTERLEAVING
INTER_DOS HEX 000D0B09070503010E0C0A080604020F
* PRODOS INTERLEAVING
INTER_PRO HEX 00020406080A0C0E01030507090B0D0F
* CP/M INTERLEAVING
INTER_CPM HEX 000306090C0F0205080B0E0104070A0D
* NIBBLES
L34B1 HEX 96979A9B9D9E9FA6A7ABACADAEAFB2B3
HEX B4B5B6B7B9BABBBCBDBEBFCBCDCECFD3
HEX D6D7D9DADBDCDDDEDFE5E6E7E9EAEBEC
HEX EDEEEFF2F3F4F5F6F7F9FAFBFCFDFEFF
* ADDRESSES IN RWTS FOR THE MARKERS
L34F1 DA LB954+1
L34F3 DA LBC79+1
DA LB95E+1
DA LBC7E+1
DA LB969+1
DA LBC83+1
DA LB990+1
DA LBCAD+1
DA LB99A+1
DA LBCB2+1
DA LBCB7+1
DA LBCB7+1
DA LB852+1
DA LB8E6+1
DA LB857+1
DA LB8F0+1
DA LB85C+1
DA LB8FB+1
DA LB89D+1
DA LB934+1
DA LB8A2+1
DA LB93E+1
DA LB8A7+1
DA LB8A7+1
DS 15
L3530 JMP L3D3B
L3533 JMP L3B75
L3536 CMP #$C4
BNE L353D
JMP L35FE
L353D CMP #$C7
BEQ L3544
JMP L3FB6
L3544 LDA $EC
BNE L354B
JMP L0806
L354B JSR L0812
LDA #$15
JSR L081E
LDY #$25
JSR L0824
BCC L3563
JSR L3F7F
JSR L0815
JMP L080C
L3563 PHA
LDA #$01
STA RWTS_COMMAND
LDA $F1
BNE L359C
PLA
CMP #$7A
BCS L3593
TAY
ASL
ADC #$0C
TAX
LDA L8C00,X
ORA L8C00+1,X
BEQ L3593
LDA L8C00,X
STA RWTS_TRACK
LDA L8C00+1,X
STA RWTS_SECTOR
STY $F9
JSR L3F7F
JMP L14A6
L3593 JSR L3F7F
JSR L0815
JMP L0806
L359C BPL L35C9
PLA
STA $02
CLC
ADC $FA
STA $00
LDA $FB
ADC #$00
STA $01
CMP $FD
BCC L35BA
BNE L3593
LDA $00
CMP $FC
BCC L35BA
BNE L3593
L35BA LDA $00
STA $FE
LDA $01
STA $FF
LDA $02
STA $F9
JMP L3F8B
L35C9 LDA $DE
CMP #$10
BNE L35E3
PLA
CMP #$02
BCS L3593
ORA $FA
STA $FE
AND #$01
STA $F9
LDA $FB
STA $FF
JMP L3F8B
L35E3 PLA
TAX
LDA L8C00,X
ORA L8D00,X
BEQ L3593
STX $F9
LDA L8C00,X
ASL
STA $FE
LDA L8D00,X
ROL
STA $FF
JMP L3F8B
L35FE JSR L3A03
LDX #$27
LDA #$AD
L3605 STA L0400,X
STA L07D0,X
DEX
BPL L3605
LDX #$05
LDY #$05
LDA $E3
BEQ L361E
LDY #$0B
ORA #$00
BPL L361E
LDY #$11
L361E LDA L373D,Y
STA L07E1,X
DEY
DEX
BPL L361E
LDX #$0F
L362A LDA L372D,X
STA L040C,X
DEX
BPL L362A
LDA $F0
CMP $E3
BEQ L363D
LDA #$00
STA $ED
L363D LDA $ED
BNE L3644
JSR L3778
L3644 JSR L388D
JSR L374F
L364A LDA KBD
BPL L364A
BIT KBDSTROBE
CMP #$9B
BNE L3659
JMP L0800
L3659 CMP #$D2
BNE L3664
LDA #$00
STA $ED
JMP L35FE
L3664 CMP #$C4
BNE L367A
LDX #$0F
L366A LDA L3B55,X
STA LBFB8,X
DEX
BPL L366A
LDA #$00
STA $E3
JMP L35FE
L367A CMP #$D0
BNE L3690
LDX #$0F
L3680 LDA L3B65,X
STA LBFB8,X
DEX
BPL L3680
LDA #$7F
STA $E3
JMP L35FE
L3690 CMP #$D5
BNE L36A6
LDX #$0F
L3696 LDA L3B65,X
STA LBFB8,X
DEX
BPL L3696
LDA #$FF
STA $E3
JMP L35FE
L36A6 CMP #$8A
BEQ L36AC
CMP #$95
L36AC BNE L36D5
JSR L3766
LDA $F7
CMP #$FF
BEQ L36CF
CLC
ADC #$01
JSR L3ABE
BEQ L36CF
INC $F7
LDA $F7
SEC
SBC $F8
CMP #$16
BCC L36CF
INC $F8
JSR L388D
L36CF JSR L374F
JMP L364A
L36D5 CMP #$88
BEQ L36DB
CMP #$8B
L36DB BNE L36F5
JSR L3766
LDA $F7
BEQ L36CF
CMP $F8
BNE L36ED
DEC $F8
JSR L388D
L36ED DEC $F7
JSR L374F
JMP L364A
L36F5 CMP #$D8
BNE L3700
LDA #$00
STA $EC
JMP L0800
L3700 CMP #$8D
BEQ L3706
CMP #$C7
L3706 BNE L3725
LDA #$00
STA $F9
LDA #$FF
STA $EC
LDA $F7
STA $F6
LDA $E3
STA $F1
BMI L3722
BNE L371F
JMP L3BC3
L371F JMP L3C1B
L3722 JMP L3CD5
L3725 LDA #$87
JSR L1DD0
JMP L364A
L372D ASC " DIRECTORY MODE "
L373D ASC "DOS3.3"
L3743 ASC "PRODOS"
L3749 ASC "PASCAL"
L374F LDA $F7
SEC
SBC $F8
CLC
ADC #$01
JSR L081E
LDY #$27
L375C LDA ($28),Y
AND #$3F
STA ($28),Y
DEY
BPL L375C
RTS
L3766 LDY #$27
L3768 LDA ($28),Y
ORA #$80
CMP #$A0
BCS L3772
ORA #$40
L3772 STA ($28),Y
DEY
BPL L3768
RTS
L3778 LDA #$00
STA $EC
STA $F6
STA $F7
STA $F8
LDA RWTS_TRACK
STA $1F
LDA RWTS_SECTOR
STA $1E
LDA $E3
BMI L37DB
BNE L3808
LDA #$11
STA RWTS_TRACK
LDA #$00
STA RWTS_SECTOR
STA RWTS_BUFFER
STA $00
LDA #>L6000
STA RWTS_BUFFER+1
STA $01
JSR L3A60
L37AB LDY #$01
LDA ($00),Y
STA RWTS_TRACK
INY
LDA ($00),Y
STA RWTS_SECTOR
ORA RWTS_TRACK
BEQ L37CE
JSR L3A60
LDA RWTS_BUFFER+1
STA $01
INC RWTS_BUFFER+1
LDY #$DD
LDA ($00),Y
BNE L37AB
L37CE INC $01
LDY #$00
TYA
L37D3 STA ($00),Y
INY
BNE L37D3
JMP L3872
L37DB LDA #$00
STA RWTS_TRACK
STA RWTS_VOLUME
STA RWTS_BUFFER
LDA #$04
STA RWTS_SECTOR
LDA #$01
STA RWTS_COMMAND
LDA #>L6000
STA RWTS_BUFFER+1
L37F5 JSR L3A60
INC RWTS_BUFFER+1
INC RWTS_SECTOR
LDA RWTS_SECTOR
CMP #$0C
BNE L37F5
JMP L3872
L3808 LDA #$00
STA $01
LDA #$02
STA $00
LDA #>L6000
STA RWTS_BUFFER+1
L3815 LDA $00
ASL
AND #$0F
STA RWTS_SECTOR
LDA $00
LSR
LSR
LSR
STA RWTS_TRACK
LDA $01
ASL
ASL
ASL
ASL
ASL
ORA RWTS_TRACK
STA RWTS_TRACK
LDA #$00
STA RWTS_VOLUME
STA RWTS_BUFFER
LDA #$01
STA RWTS_COMMAND
JSR L3A60
INC RWTS_BUFFER+1
INC RWTS_SECTOR
JSR L3A60
LDA #$00
STA $02
LDA RWTS_BUFFER+1
STA $03
DEC $03
INC RWTS_BUFFER+1
LDY #$02
LDA ($02),Y
STA $00
INY
LDA ($02),Y
STA $01
ORA $00
BNE L3815
TYA
INC $03
INC $03
L386D STA ($02),Y
INY
BNE L386D
L3872 LDA $1E
STA RWTS_SECTOR
LDA $1F
STA RWTS_TRACK
LDA #$FF
STA $ED
LDA $E3
STA $F0
LDA #$00
STA $F7
STA $EC
STA $F8
RTS
L388D LDA #$01
JSR L081E
LDA $F8
STA $1D
LDA $E3
BMI L38EC
BEQ L389F
JMP L3964
L389F JSR L0821
LDA $1D
JSR L3AE3
LDY #$00
LDA ($1E),Y
BEQ L38DA
LDY #$00
JSR L081B
LDA #$BA
STA ($28),Y
LDY #$01
LDA ($1E),Y
LDY #$04
JSR L081B
LDA $28
ORA #$06
STA $28
LDY #$03
L38C7 LDA ($1E),Y
CMP #$A0
BCS L38CF
LDA #$AE
L38CF STA ($28),Y
INY
CPY #$21
BNE L38C7
INC $1D
BNE L38E3
L38DA LDY #$27
LDA #$A0
L38DE STA ($28),Y
DEY
BPL L38DE
L38E3 INC $25
LDA $25
CMP #$17
BNE L389F
RTS
L38EC JSR L0821
LDA $1D
JSR L3AFE
LDA $1D
BEQ L392B
LDY #$01
LDA ($1E),Y
DEY
ORA ($1E),Y
BEQ L394E
INY
LDA ($1E),Y
ASL
ASL
ASL
ASL
ASL
STA $00
DEY
LDA ($1E),Y
LSR
LSR
LSR
ORA $00
LDY #$00
JSR L081B
LDA #$BA
STA ($28),Y
LDY #$00
LDA ($1E),Y
ASL
AND #$0F
LDY #$04
JSR L081B
JMP L392E
L392B JSR L39F1
L392E LDA $28
ORA #$02
STA $28
LDY #$06
LDA ($1E),Y
AND #$1F
TAX
L393B INY
DEX
BMI L394E
LDA ($1E),Y
ORA #$80
CMP #$A0
BCS L3949
LDA #$AE
L3949 STA ($28),Y
JMP L393B
L394E CPY #$26
BCS L3959
LDA #$A0
STA ($28),Y
INY
BNE L394E
L3959 INC $1D
INC $25
LDA $25
CMP #$17
BNE L38EC
RTS
L3964 JSR L0821
LDA $1D
JSR L3B2D
LDY #$05
LDA ($1E),Y
BEQ L39D4
DEY
LDA ($1E),Y
BEQ L39D6
AND #$E0
CMP #$E0
BEQ L39A8
LDY #$16
LDA ($1E),Y
ASL
ASL
ASL
ASL
ASL
STA $00
DEY
LDA ($1E),Y
LSR
LSR
LSR
ORA $00
LDY #$00
JSR L081B
LDA #$BA
STA ($28),Y
LDY #$15
LDA ($1E),Y
ASL
AND #$0F
LDY #$04
JSR L081B
JMP L39AB
L39A8 JSR L39F1
L39AB LDA $28
ORA #$04
STA $28
LDY #$04
LDA ($1E),Y
BPL L39BF
INC $28
LDA #$AF
STA ($28),Y
LDA ($1E),Y
L39BF AND #$0F
TAX
L39C2 INY
LDA ($1E),Y
ORA #$80
CMP #$A0
BCS L39CD
LDA #$AE
L39CD STA ($28),Y
DEX
BPL L39C2
BMI L39D8
L39D4 DEC $1D
L39D6 LDY #$00
L39D8 CPY #$22
BCS L39E3
LDA #$A0
STA ($28),Y
INY
BNE L39D8
L39E3 INC $1D
INC $25
LDA $25
CMP #$17
BEQ L39F0
JMP L3964
L39F0 RTS
L39F1 LDY #$06
L39F3 LDA L39FC,Y
STA ($28),Y
DEY
BPL L39F3
RTS
L39FC ASC "NAME IS"
L3A03 LDX #$77
LDA #$A0
L3A07 STA L0400,X
STA L0480,X
STA L0500,X
STA L0580,X
STA L0600,X
STA L0680,X
STA L0700,X
STA L0780,X
DEX
BPL L3A07
RTS
L3A23 LDA #>L8C00
STA RWTS_BUFFER+1
LDA #$00
STA RWTS_BUFFER
JMP L3A60
L3A30 STA RWTS_BUFFER+1
LDA #$00
STA RWTS_BUFFER
LDA $FC
AND #$0F
STA RWTS_SECTOR
LDA $FC
LSR
LSR
LSR
LSR
STA RWTS_TRACK
LDA $FD
ASL
ASL
ASL
ASL
ORA RWTS_TRACK
STA RWTS_TRACK
JSR L3A60
INC RWTS_BUFFER+1
INC RWTS_SECTOR
JMP L3A60
L3A60 LDA #$00
STA RWTS_VOLUME
LDA #$01
STA RWTS_COMMAND
LDA #>RWTS
LDY #<RWTS
JSR RWTS_ENTRY
BCS L3A74
RTS
L3A74 LDX #$27
L3A76 LDA #$A0
STA $0750,X
LDA L3A96,X
STA L07D0,X
DEX
BPL L3A76
L3A84 LDA KBD
BPL L3A84
BIT KBDSTROBE
LDA #$00
STA $EC
LDX #$FF
TXS
JMP L0800
L3A96 ASC "I/O ERROR WHILE READING DIRECTORY OR TSL"
L3ABE PHA
LDA $F0
BMI L3ACE
BNE L3ADA
PLA
JSR L3AE3
LDY #$00
LDA ($1E),Y
RTS
L3ACE PLA
JSR L3AFE
LDY #$00
LDA ($1E),Y
INY
ORA ($1E),Y
RTS
L3ADA PLA
JSR L3B2D
LDY #$05
LDA ($1E),Y
RTS
L3AE3 LDX #$60
DEX
SEC
L3AE7 INX
SBC #$07
BCS L3AE7
ADC #$07
TAY
LDA L3AF7,Y
STA $1E
STX $1F
RTS
L3AF7 HEX 0B2E517497BADD
L3AFE LDX #$60
CMP #$27
BCC L3B09
LDX #$64
SEC
SBC #$27
L3B09 STX $1F
DEC $1F
LDX #$FF
SEC
L3B10 INC $1F
INX
SBC #$0A
BCS L3B10
ADC #$0A
TAY
TXA
ASL
ASL
ADC L3B23,Y
STA $1E
RTS
L3B23 HEX 001A344E68829CB6D0EA
L3B2D LDX #$60
DEX
DEX
SEC
L3B32 INX
INX
SBC #$0D
BCS L3B32
ADC #$0D
CMP #$07
BCC L3B3F
INX
L3B3F STX $1F
TAX
LDA L3B48,X
STA $1E
RTS
L3B48 HEX 00274E759CC3EA11385F86ADD4
L3B55 HEX 000D0B09070503010E0C0A080604020F
L3B65 HEX 00020406080A0C0E01030507090B0D0F
L3B75 LDA $E3
CMP $F1
BEQ L3B7F
LDA #$00
STA $EC
L3B7F LDA $EC
BNE L3B84
RTS
L3B84 LDX #$27
L3B86 LDA L3B9B,X
STA $06D0,X
DEX
BPL L3B86
LDA #$15
JSR L081E
LDY #$25
LDA $F9
JMP L081B
L3B9B ASC "DOSXXX:0123456789ABCDEF0123456789ABC/XXX"
L3BC3 LDX #$05
L3BC5 LDA L373D,X
STA L3B9B,X
DEX
BPL L3BC5
LDA $F6
JSR L3AE3
LDY #$00
LDA ($1E),Y
BEQ L3C0F
CMP #$FF
BEQ L3C0F
STA $FA
STA $FC
INY
LDA ($1E),Y
STA $FB
STA $FD
DEC $F9
LDY #$03
L3BEC LDA ($1E),Y
CMP #$A0
BCS L3BF4
LDA #$AE
L3BF4 STA L3B9B+4,Y
INY
CPY #$20
BNE L3BEC
LDA $FC
STA RWTS_TRACK
LDA $FD
STA RWTS_SECTOR
JSR L3A23
JSR L0CDC
JMP L3E5F
L3C0F LDA #$87
JSR L1DD0
LDA #$00
STA $EC
JMP L364A
L3C1B LDX #$05
L3C1D LDA L3743,X
STA L3B9B,X
DEX
BPL L3C1D
LDA $F6
JSR L3B2D
LDY #$04
LDA ($1E),Y
BEQ L3C0F
AND #$E0
CMP #$E0
BEQ L3C0F
CMP #$C0
BNE L3C64
JSR L3766
LDY #$15
LDA ($1E),Y
STA $00
INY
LDA ($1E),Y
STA $01
LDA #>L6000
STA RWTS_BUFFER+1
LDA RWTS_TRACK
STA $1F
LDA RWTS_SECTOR
STA $1E
JSR L3815
JSR L388D
JSR L374F
JMP L364A
L3C64 LDA ($1E),Y
AND #$0F
TAX
L3C69 INY
LDA ($1E),Y
ORA #$80
CMP #$A0
BCS L3C74
LDA #$AE
L3C74 STA L3B9B+2,Y
DEX
BNE L3C69
LDA #$A0
L3C7C STA L3B9B+3,Y
INY
CPY #$21
BNE L3C7C
LDY #$15
LDA ($1E),Y
INY
ASL
STA $FA
STA $FC
LDA ($1E),Y
ROL
STA $FB
STA $FD
LDY #$04
LDA ($1E),Y
AND #$30
STA $DE
CMP #$10
BNE L3CB5
INC $FC
BNE L3CA7
INC $FD
L3CA7 LDA $FA
STA $FE
LDA $FB
STA $FF
JSR L0CDC
JMP L3F8B
L3CB5 CMP #$20
BNE L3CC6
LDA #$8C
JSR L3A30
JSR L0CDC
LDX #$00
JMP L3E9E
L3CC6 LDA #$8E
JSR L3A30
LDA #$FF
STA $DD
JSR L0CDC
JMP L3EC3
L3CD5 LDX #$05
L3CD7 LDA L3749,X
STA L3B9B,X
DEX
BPL L3CD7
LDA $F6
BNE L3CE7
JMP L3C0F
L3CE7 JSR L3AFE
LDY #$06
LDA ($1E),Y
TAX
L3CEF INY
LDA ($1E),Y
ORA #$80
CMP #$A0
BCS L3CFA
LDA #$AE
L3CFA STA L3B9B,Y
DEX
BNE L3CEF
LDA #$A0
L3D02 INY
STA L3B9B,Y
CPY #$23
BNE L3D02
LDY #$00
LDA ($1E),Y
INY
ASL
STA $FA
LDA ($1E),Y
ROL
STA $FB
INY
LDA ($1E),Y
INY
ASL
STA $FC
LDA ($1E),Y
ROL
STA $FD
DEC $FC
LDA $FC
CMP #$FF
BNE L3D2D
DEC $FD
L3D2D JSR L0CDC
LDA $FA
STA $FE
LDA $FB
STA $FF
JMP L3F8B
L3D3B PLA
ORA #$00
BMI L3D43
JMP L3E5F
L3D43 LDA $F1
BPL L3D65
L3D47 LDA $FE
CMP $FA
BNE L3D56
LDA $FF
CMP $FB
BNE L3D56
JMP L3F39
L3D56 DEC $FE
DEC $F9
LDA $FE
CMP #$FF
BNE L3D62
DEC $FF
L3D62 JMP L3F8B
L3D65 BEQ L3DDE
LDA $DE
CMP #$10
BEQ L3D47
LDA $FE
AND #$01
BEQ L3D78
DEC $FE
JMP L3F8B
L3D78 LDX $F9
BNE L3D89
LDA $DE
CMP #$20
BEQ L3D84
LDA $DD
L3D84 BNE L3DB6
JMP L3F39
L3D89 DEX
LDA L8C00,X
ORA L8D00,X
BNE L3DA3
CPX #$00
BNE L3D89
LDA $DE
CMP #$20
BEQ L3D9E
LDA $DD
L3D9E BNE L3DB6
JMP L3F39
L3DA3 LDA L8C00,X
ASL
ORA #$01
STA $FE
LDA L8D00,X
ROL
STA $FF
STX $F9
JMP L3F8B
L3DB6 LDX $DD
L3DB8 DEX
BPL L3DBE
JMP L3F39
L3DBE LDA L8E00,X
ORA L8F00,X
BEQ L3DB8
LDA L8E00,X
ASL
STA $FC
LDA L8F00,X
ROL
STA $FD
STX $DD
LDA #$8C
JSR L3A30
LDX #$00
JMP L3D89
L3DDE LDA $F9
ASL
CLC
ADC #$0C
TAX
L3DE5 DEX
DEX
CPX #$0C
BCC L3E0C
LDA L8C00,X
ORA L8C00+1,X
BEQ L3DE5
LDA L8C00,X
STA RWTS_TRACK
LDA L8C00+1,X
STA RWTS_SECTOR
TXA
SEC
SBC #$0C
LSR
STA $F9
JSR L3F7F
JMP L14A6
L3E0C LDA $FA
CMP $FC
BNE L3E1B
LDA $FB
CMP $FD
BNE L3E1B
JMP L3F39
L3E1B LDA $FC
STA RWTS_TRACK
LDA $FD
STA RWTS_SECTOR
L3E25 JSR L3A23
LDA L8C00+1
ORA L8C00+2
BNE L3E33
JMP L3F39
L3E33 LDA L8C00+1
CMP $FA
BNE L3E50
LDA L8C00+2
CMP $FB
BNE L3E50
LDA RWTS_TRACK
STA $FA
LDA RWTS_SECTOR
STA $FB
LDX #$00
JMP L3DE5
L3E50 LDA L8C00+1
STA RWTS_TRACK
LDA L8C00+2
STA RWTS_SECTOR
JMP L3E25
L3E5F LDA $F1
BPL L3E7D
L3E63 LDA $FE
CMP $FC
BNE L3E72
LDA $FF
CMP $FD
BNE L3E72
JMP L3F39
L3E72 INC $FE
BNE L3E78
INC $FF
L3E78 INC $F9
JMP L3F8B
L3E7D BEQ L3EEB
LDA $DE
CMP #$10
BEQ L3E63
LDA $FE
AND #$01
BNE L3E90
INC $FE
JMP L3F8B
L3E90 LDX $F9
INX
BNE L3E9E
LDA $DE
CMP #$20
BNE L3EC3
JMP L3F39
L3E9E LDA L8C00,X
ORA L8D00,X
BNE L3EB2
INX
BNE L3E9E
LDA $DE
CMP #$20
BNE L3EC3
JMP L3F39
L3EB2 LDA L8C00,X
ASL
STA $FE
LDA L8D00,X
ROL
STA $FF
STX $F9
JMP L3F8B
L3EC3 LDX $DD
L3EC5 INX
BPL L3ECB
JMP L3F39
L3ECB LDA L8E00,X
ORA L8F00,X
BEQ L3EC5
LDA L8E00,X
ASL
STA $FC
LDA L8F00,X
ROL
STA $FD
STX $DD
LDA #$8C
JSR L3A30
LDX #$00
JMP L3E9E
L3EEB LDA $F9
ASL
CLC
ADC #$0C
TAX
L3EF2 INX
INX
BEQ L3F17
LDA L8C00,X
ORA L8C00+1,X
BEQ L3EF2
LDA L8C00,X
STA RWTS_TRACK
LDA L8C00+1,X
STA RWTS_SECTOR
TXA
SEC
SBC #$0C
LSR
STA $F9
JSR L3F7F
JMP L14A6
L3F17 LDA L8C00+1
ORA L8C00+2
BNE L3F22
JMP L3F39
L3F22 LDA L8C00+1
STA $FA
STA RWTS_TRACK
LDA L8C00+2
STA RWTS_SECTOR
STA $FB
JSR L3A23
LDX #$0A
BNE L3EF2
L3F39 LDX #$27
L3F3B LDA L3F57,X
STA L07D0,X
DEX
BPL L3F3B
LDA #$87
JSR L1DD0
L3F49 LDA KBD
BPL L3F49
BIT KBDSTROBE
JSR L0815
JMP L0809
L3F57 ASC "OUT OF FILE BOUNDARIES. PRESS [RETURN] "
L3F7F LDA #$15
JSR L081E
LDY #$25
LDA $F9
JMP L081B
L3F8B JSR L3F7F
LDA $FE
AND #$0F
STA RWTS_SECTOR
LDA $FE
LSR
LSR
LSR
LSR
STA RWTS_TRACK
LDA $FF
ASL
ASL
ASL
ASL
ORA RWTS_TRACK
STA RWTS_TRACK
LDA #$01
STA RWTS_COMMAND
JMP L14A6
DB $00
DB $00
DB $00
DB $00
L3FB6 CMP #$CC
BEQ L3FBD
JMP L4580
L3FBD LDA #$00
STA $DB
STA $DC
LDX #$77
LDA #$A0
L3FC7 STA L0400,X
STA L0480,X
STA L0500,X
STA L0580,X
STA L0600,X
STA L0680,X
STA L0700,X
STA L0780,X
DEX
BPL L3FC7
LDX #$27
LDA #$AD
L3FE6 STA L0400,X
DEX
BPL L3FE6
LDX #$11
L3FEE LDA L41A6,X
STA $040B,X
DEX
BPL L3FEE
L3FF7 LDA $E6
STA $10
LDA $EF
STA $11
LDA #$00
STA $12
STA $13
L4005 LDA $12
CMP $DB
BNE L4011
LDA $13
CMP $DC
BEQ L402C
L4011 LDY #$00
LDA ($10),Y
TAX
LDA L4480,X
AND #$03
CLC
ADC $10
STA $10
BCC L4024
INC $11
L4024 INC $12
BNE L4005
INC $13
BNE L4005
L402C LDA #$01
JSR L081E
L4031 JSR L0821
LDA $11
CMP #$8A
BNE L403F
LDY #$00
JMP L40FE
L403F LDY #$00
LDA ($10),Y
STA L41B8
INY
LDA ($10),Y
STA L41B9
INY
LDA ($10),Y
STA L41BA
LDY #$00
LDA $11
AND #$0F
JSR L0818
LDA $10
JSR L0818
LDA #$BA
STA ($28),Y
INY
LDA #$A0
STA ($28),Y
LDA L41B8
TAX
JSR L0818
LDA L4480,X
AND #$03
STA $DF
CLC
ADC $10
STA $10
BCC L4080
INC $11
L4080 DEC $DF
BEQ L409E
LDA #$A0
STA ($28),Y
INY
LDA L41B9
JSR L0818
DEC $DF
BEQ L409E
LDA #$A0
STA ($28),Y
INY
LDA L41BA
JSR L0818
L409E LDA #$A0
STA ($28),Y
INY
CPY #$14
BNE L409E
LDX L41B8
LDA L4280,X
LSR
LSR
AND #$1F
ORA #$C0
STA ($28),Y
INY
LDA L4280,X
AND #$03
ASL
ASL
ASL
ORA #$C0
STA $00
LDA L4380,X
ASL
ROL
ROL
ROL
AND #$07
ORA $00
STA ($28),Y
INY
LDA L4380,X
AND #$1F
ORA #$C0
STA ($28),Y
INY
LDA #$A0
STA ($28),Y
INY
STA ($28),Y
INY
STA ($28),Y
INY
LDX L41B8
LDA L4480,X
LSR
AND #$1E
TAX
LDA L41BB,X
STA L41D7+1
LDA L41BB+1,X
STA L41D7+2
JSR L41D7
L40FE LDA #$A0
STA ($28),Y
INY
CPY #$28
BNE L40FE
INC $25
LDA $25
CMP #$18
BEQ L4112
JMP L4031
L4112 LDA KBD
BPL L4112
BIT KBDSTROBE
CMP #$9B
BNE L4121
JMP L0800
L4121 CMP #$8B
BEQ L4127
CMP #$C9
L4127 BNE L414C
LDA $DC
BNE L413C
LDA $DB
BEQ L419E
CMP #$14
BCS L413C
LDA #$00
STA $DB
JMP L3FF7
L413C LDA $DB
SEC
SBC #$14
STA $DB
LDA $DC
SBC #$00
STA $DC
JMP L3FF7
L414C CMP #$88
BEQ L4152
CMP #$CA
L4152 BNE L4167
LDA $DB
ORA $DC
BEQ L419E
DEC $DB
LDA $DB
CMP #$FF
BNE L4164
DEC $DC
L4164 JMP L3FF7
L4167 CMP #$95
BEQ L416D
CMP #$CB
L416D BNE L417E
LDA $11
CMP #$8A
BEQ L419E
INC $DB
BNE L417B
INC $DC
L417B JMP L3FF7
L417E CMP #$8D
BEQ L4184
CMP #$CD
L4184 BEQ L4188
CMP #$8A
L4188 BNE L419E
LDA $11
CMP #$8A
BEQ L419E
LDA $DB
CLC
ADC #$14
STA $DB
BCC L419B
INC $DC
L419B JMP L3FF7
L419E LDA #$87
JSR L1DD0
JMP L4112
L41A6 ASC " DISASSEMBLY MODE "
L41B8 DB $00
L41B9 DB $20
L41BA DB $91
L41BB DA L4201
DA L41DA
DA L41DF
DA L41EA
DA L41F2
DA L4202
DA L423C
DA L4248
DA L4250
DA L4258
DA L4210
DA L4221
DA L4229
DA L4231
L41D7 JMP L4201
L41DA LDA #$A3
STA ($28),Y
INY
L41DF LDA #$A4
STA ($28),Y
INY
LDA L41B9
JMP L0818
L41EA JSR L41DF
LDA #$D8
JMP L41F7
L41F2 JSR L41DF
LDA #$D9
L41F7 INY
STA ($28),Y
DEY
LDA #$AC
STA ($28),Y
INY
INY
L4201 RTS
L4202 LDA #$A8
STA ($28),Y
INY
JSR L41DF
L420A LDA #$A9
STA ($28),Y
INY
RTS
L4210 LDA #$A4
STA ($28),Y
INY
LDA L41BA
JSR L0818
LDA L41B9
JMP L0818
L4221 JSR L4210
LDA #$D8
JMP L41F7
L4229 JSR L4210
LDA #$D9
JMP L41F7
L4231 LDA #$A8
STA ($28),Y
INY
JSR L4210
JMP L420A
L423C JSR L4202
DEY
LDA #$D8
JSR L41F7
JMP L420A
L4248 JSR L4202
LDA #$D8
JMP L41F7
L4250 JSR L4202
LDA #$D9
JMP L41F7
L4258 LDA $11
AND #$0F
STA L41BA
LDA L41B9
BMI L4272
CLC
ADC $10
STA L41B9
BCC L426F
INC L41BA
L426F JMP L4210
L4272 CLC
ADC $10
STA L41B9
BCS L426F
DEC L41BA
JMP L4210
L4280 HEX 0A3E0000523E0600413E0600523E0600
HEX 0A3E3E00523E06000D3E2500523E0600
HEX 2A050000090549004105490009054900
HEX 09050500000549004C05100000054900
HEX 4A150000001532004115320029153200
HEX 0A151500001532000D15410000153200
HEX 4A0400004E0449004104490029044900
HEX 0A0404004E0449004C04410000044900
HEX 0A4E00004E4E4E00100053004E4E4E00
HEX 084E4E004E4E4E00534E53004E4E4E00
HEX 30303000303030005030500030303000
HEX 08303000303030000D30520030303000
HEX 0E0D00000E0D1000250D105C0E0D1000
HEX 090D0D00000D10000D30414E000D1000
HEX 0E4C00000E4C2500254C39000E4C2500
HEX 084C4C00004C25004C4C4100004C2500
L4380 HEX 4B41000062416C0010416C0062416C00
HEX 0C41410042416C008341C10042416C00
HEX 72C4000034C4EC0090C4EC0034C4EC00
HEX A9C4C40000C4EC00A3C4A10000C4EC00
HEX 89F2000000F2720001F27200B0F27200
HEX C3F2F20000F2720089F2190000F27200
HEX 938300009A83F2008183F200B083F200
HEX D38383009A83F200A98399000083F200
HEX 4181000099819800B900010099819800
HEX 6381810099819800218113009A819A00
HEX 99819800998198003981380099819800
HEX 73818100998198009681780099819800
HEX 19B0000019B0A300D9B0B82919B0A300
HEX C5B0B00000B0A3008481189000B0A300
HEX 184300001843C300D843F0001843C300
HEX B14343000043C300A44398000043C300
L4480 HEX 011A01010A0A0A01010601012B2B2B01
HEX 262216010A0E0E01013301012B2F2F01
HEX 2B1A01010A0A0A01010601012B2B2B01
HEX 26221601010E0E0101330101012F2F01
HEX 011A0101010A0A01010601012B2B2B01
HEX 26221601010E0E0101330101012F2F01
HEX 011A01010A0A0A0101060101372B2B01
HEX 262216010E0E0E0101330101012F2F01
HEX 261A01010A0A0A01010101012B2B2B01
HEX 262216010E0E1201013301012B2F2F01
HEX 061A06010A0A0A01010601012B2B2B01
HEX 262216010E0E1201013301012F2F3301
HEX 061A01010A0A0A01010601012B2B2B01
HEX 26221601010E0E0101330101012F2F01
HEX 061A01010A0A0A01010601012B2B2B01
HEX 26221601010E0E01010E0101012F2F01
*
* V: VTOC
*
L4580 CMP #$D6 ; VTOC MODE
BEQ L4587
JMP L0806
L4587 LDA RWTS_TRACK
STA $DB
STA $D9
LDA RWTS_SECTOR
STA $DC
STA $DA
L4595 LDA #$00
STA RWTS_VOLUME
STA RWTS_BUFFER
LDA #>L8B00
STA RWTS_BUFFER+1
LDA #$01
STA RWTS_COMMAND
LDA $E3
BPL L45C6
LDX #$27
L45AD LDA L4A64,X
STA L07D0,X
DEX
BPL L45AD
LDA #$87
JSR L1DD0
L45BB LDA KBD
BPL L45BB
BIT KBDSTROBE
JMP L0809
L45C6 BNE L45D5
LDA #$11
STA RWTS_TRACK
LDA #$00
STA RWTS_SECTOR
JMP L4620
L45D5 LDA #$00
STA RWTS_TRACK
LDA #$04
STA RWTS_SECTOR
L45DF JSR L480B
LDA L8B00+2
ORA L8B00+3
BEQ L460D
LDA L8B00+2
ASL
AND #$0F
STA RWTS_SECTOR
LDA L8B00+2
LSR
LSR
LSR
STA RWTS_TRACK
LDA L8B00+3
ASL
ASL
ASL
ASL
ASL
ORA RWTS_TRACK
STA RWTS_TRACK
JMP L45DF
L460D INC RWTS_SECTOR
INC RWTS_SECTOR
LDA RWTS_SECTOR
AND #$0F
BNE L4620
STA RWTS_SECTOR
INC RWTS_TRACK
L4620 JSR L480B
LDX #$77
LDA #$A0
L4627 STA L0400,X
STA L0480,X
STA L0500,X
STA L0580,X
STA L0600,X
STA L0680,X
STA L0700,X
STA L0780,X
DEX
BPL L4627
LDX #$27
L4644 LDA #$AD
STA L0400,X
STA L0580,X
STA $0650,X
LDA L4A8C,X
STA L0480,X
LDA L4AB4,X
STA L0500,X
LDA L4ADC,X
STA $06D0,X
LDA L4B04,X
STA $0750,X
LDA L4B2C,X
STA L07D0,X
DEX
BPL L4644
LDX #$0F
L4672 LDA L4B54,X
STA $040C,X
DEX
BPL L4672
LDX LBEFD+1
CPX #$26
BCS L4691
INX
INX
LDA #$A0
L4686 STA L0480,X
STA L0500,X
INX
CPX #$28
BCC L4686
L4691 LDA #$04
JSR L081E
L4696 LDA $25
CLC
ADC #$AC
CMP #$BA
BCC L46A2
CLC
ADC #$07
L46A2 LDY #$00
STA ($28),Y
INY
LDA #$BA
STA ($28),Y
INY
L46AC TYA
SEC
SBC #$02
CMP LBEFD+1
BCS L46CD
JSR L483D
LDA L8B00,X
AND $1D
BEQ L46C4
LDA #$AE
JMP L46C6
L46C4 LDA #$AA
L46C6 STA ($28),Y
INY
CPY #$28
BNE L46AC
L46CD INC $25
JSR L0821
LDA $25
CMP #$14
BNE L4696
JSR L47EB
L46DB LDA #$20
STA $26
L46DF DEC $27
BNE L46F2
DEC $26
BNE L46F2
LDA $07D3
EOR #$7F
STA $07D3
JMP L46DB
L46F2 LDA KBD
BPL L46DF
BIT KBDSTROBE
CMP #$E0
BCC L4700
AND #$DF
L4700 CMP #$9B ; ESCAPE
BEQ L4706
CMP #$D8 ; X-IT VTOC MODE
L4706 BNE L4715
LDA $DB
STA RWTS_TRACK
LDA $DC
STA RWTS_SECTOR
JMP L0800
L4715 CMP #$D2 ; R-EAD NEW VTOC
BNE L471C
JMP L4595
L471C CMP #$D7 ; W-RITE VTOC
BNE L472B
LDA #$02
STA RWTS_COMMAND
JSR L480B
JMP L46DB
L472B CMP #$8D ; RETURN
BEQ L4731 ; OR
CMP #$A0 ; SPACE
L4731 BNE L4743
LDA $D9
JSR L483D
LDA L8B00,X
EOR $1D
STA L8B00,X
JMP L4691
L4743 CMP #$C9 ; I
BEQ L4749 ; OR
CMP #$8B ; UP ARROW
L4749 BNE L4767
JSR L47E0
DEC $DA
BPL L4761
LDA #$0F
STA $DA
DEC $D9
BPL L4761
LDA LBEFD+1
STA $D9
DEC $D9
L4761 JSR L47EB
JMP L46DB
L4767 CMP #$CD ; M
BEQ L476D ; OR
CMP #$8A ; DOWN ARROW
L476D BNE L478C
JSR L47E0
INC $DA
LDA $DA
AND #$0F
BNE L4761
STA $DA
INC $D9
LDA $D9
CMP LBEFD+1
BCC L4761
LDA #$00
STA $D9
JMP L4761
L478C CMP #$CA ; J
BEQ L4792 ; OR
CMP #$88 ; LEFT ARROW
L4792 BNE L47A5
JSR L47E0
DEC $D9
BPL L4761
LDA LBEFD+1
STA $D9
DEC $D9
JMP L4761
L47A5 CMP #$CB ; K
BEQ L47AB ; OR
CMP #$95 ; RIGHT ARROW
L47AB BNE L47C0
JSR L47E0
INC $D9
LDA $D9
CMP LBEFD+1
BCC L4761
LDA #$00
STA $D9
JMP L4761
L47C0 CMP #$BF ; ? FILE MAP
BNE L47D8
LDA $EC
BEQ L47D8
LDA $E3
BNE L47D2
JSR L486F
JMP L4691
L47D2 JSR L4945
JMP L4691
L47D8 LDA #$87
JSR L1DD0
JMP L46DB
L47E0 LDY $24
LDA ($28),Y
AND #$3F
ORA #$80
STA ($28),Y
RTS
L47EB LDA $DA
CLC
ADC #$04
JSR L081E
LDA $D9
CMP #$26
BCC L47FD
LDA #$25
STA $D9
L47FD TAY
INY
INY
STY $24
LDA ($28),Y
AND #$3F
ORA #$40
STA ($28),Y
RTS
L480B LDA #>RWTS
LDY #<RWTS
JSR RWTS_ENTRY
BCS L4815
RTS
L4815 LDX #$FF
TXS
LDX #$27
L481A LDA L4A3C,X
STA L07D0,X
DEX
BPL L481A
LDA #$87
JSR L1DD0
L4828 LDA KBD
BPL L4828
BIT KBDSTROBE
LDA $DB
STA RWTS_TRACK
LDA $DC
STA RWTS_SECTOR
JMP L0800
L483D PHA
LDA $E3
BNE L4858
PLA
ASL
ASL
ADC #$39
TAX
LDA $25
SEC
SBC #$04
CMP #$08
BCC L4862
DEX
SEC
SBC #$08
JMP L4862
L4858 PLA
TAX
LDA $25
SEC
SBC #$04
LSR
EOR #$07
L4862 STA $1D
LDA #$00
SEC
L4867 ROL
DEC $1D
BPL L4867
STA $1D
RTS
L486F LDA RWTS_TRACK
STA $1E
LDA RWTS_SECTOR
STA $1F
LDA $FC
STA RWTS_TRACK
LDA $FD
STA RWTS_SECTOR
LDA #>L9000
STA RWTS_BUFFER+1
LDA #<L9000
STA RWTS_BUFFER
STA RWTS_VOLUME
LDA #$01
STA RWTS_COMMAND
L4895 JSR L4929
JSR L480B
LDX #$0C
L489D LDA L9000,X
ORA L9000+1,X
BEQ L48B4
LDA L9000,X
STA RWTS_TRACK
LDA L9000+1,X
STA RWTS_SECTOR
JSR L4929
L48B4 INX
INX
BNE L489D
LDA L9000+1
ORA L9000+2
BEQ L48CF
LDA L9000+1
STA RWTS_TRACK
LDA L9000+2
STA RWTS_SECTOR
JMP L4895
L48CF LDA #$CF
STA L07D0
LDA #$D5
STA $07D1
LDA #$D4
STA $07D2
LDA #$BA
STA $07D3
L48E3 LDA #$20
STA $26
L48E7 DEC $27
BNE L48FA
DEC $26
BNE L48FA
LDA $07D4
EOR #$7F
STA $07D4
JMP L48E3
L48FA LDA KBD
BPL L48E7
BIT KBDSTROBE
LDA #$A0
STA $07D4
STA $07D3
LDA #$BA
STA $07D2
LDA #$CE
STA $07D1
LDA #$C9
STA L07D0
LDA $1E
STA RWTS_TRACK
LDA $1F
STA RWTS_SECTOR
LDA #>L8B00
STA RWTS_BUFFER+1
RTS
L4929 LDA RWTS_SECTOR
CLC
ADC #$04
JSR L081E
LDY RWTS_TRACK
CPY #$26
BCS L4944
CPY LBEFD+1
BCS L4944
INY
INY
LDA #$20
STA ($28),Y
L4944 RTS
L4945 LDA RWTS_TRACK
STA $1E
LDA RWTS_SECTOR
STA $1F
LDA $DE
CMP #$10
BNE L4963
LDA $FA
STA $00
LDA $FB
STA $01
JSR L4A08
JMP L48CF
L4963 LDA $FA
STA $00
LDA $FB
STA $01
LDA #>L9000
STA RWTS_BUFFER+1
LDA #<L9000
STA RWTS_BUFFER
STA RWTS_VOLUME
LDA #$01
STA RWTS_COMMAND
JSR L49BD
LDA $DE
CMP #$20
BNE L4989
JMP L48CF
L4989 LDX #$00
L498B LDA L9000,X
STA L9200,X
LDA L9100,X
STA L9300,X
INX
BNE L498B
LDX #$00
L499C LDA L9200,X
ORA L9300,X
BEQ L49B7
LDA L9200,X
ASL
STA $00
LDA L9300,X
ROL
STA $01
STX $1D
JSR L49BD
LDX $1D
L49B7 INX
BPL L499C
JMP L48CF
L49BD JSR L4A08
LDA $00
AND #$0F
STA RWTS_SECTOR
LDA $00
LSR
LSR
LSR
LSR
STA RWTS_TRACK
LDA $01
ASL
ASL
ASL
ASL
ORA RWTS_TRACK
STA RWTS_TRACK
JSR L480B
INC RWTS_BUFFER+1
INC RWTS_SECTOR
JSR L480B
DEC RWTS_BUFFER+1
LDX #$00
L49ED LDA L9000,X
ORA L9100,X
BEQ L4A04
LDA L9000,X
ASL
STA $00
LDA L9100,X
ROL
STA $01
JSR L4A08
L4A04 INX
BNE L49ED
RTS
L4A08 LDA $00
AND #$0F
CLC
ADC #$04
JSR L081E
LDA $00
LSR
LSR
LSR
LSR
STA $02
LDA $01
ASL
ASL
ASL
ASL
ORA $02
TAY
CPY #$26
BCS L4A3B
CPY LBEFD+1
BCS L4A3B
INY
INY
LDA #$20
STA ($28),Y
INC $25
JSR L0821
LDA #$20
STA ($28),Y
L4A3B RTS
L4A3C ASC "A DISK ERROR HAS OCCURED DURING VTOC I/O"
L4A64 ASC "THERE IS NO PASCAL VTOC TO SHOW/EDIT! "
L4A8C ASC "T 00000000000000001111111111111111222222"
L4AB4 ASC "R 0123456789ABCDEF0123456789ABCDEF012345"
L4ADC ASC "COMMANDS: [R]EAD NEW VTOC, [W]RITE VTOC "
L4B04 ASC " [X]-IT VTOC MODE [?]FILE MAP "
L4B2C ASC "IN:_ [SPACE]UN/USED [I/J/K/M]MOVE"
L4B54 ASC " VTOC EDIT MODE "
DS $58
INC PWREDUP
LDA #$50
STA $BC75
LDA #$D3
STA $BCD5
LDA #$4B
STA $BCF5
LDY #$15
JMP $BB6D
L4BD3 LDX #$00
L4BD5 LDA $5000,X
L4BD8 STA $9800,X
INX
BNE L4BD5
INC L4BD5+2
INC L4BD8+2
LDA L4BD8+2
CMP #$C0
BNE L4BD3
LDX #$00
L4BED LDA $9E51,X
STA $03D0,X
INX
CPX #$22
BNE L4BED
LDA #$22
STA $047E
JMP L139B
*
* DF.RWTS
*
PUT DF.RWTS