Falls jemand interesse hat "MULTIMENU" als TAS
Code
;
; **** ZP FIELDS ****
;
f30 = $30
;
; **** ZP ABSOLUTE ADRESSES ****
;
a02 = $02
a03 = $03
a05 = $05
a06 = $06
a07 = $07
a08 = $08
a09 = $09
a31 = $31
a90 = $90
a93 = $93
aBA = $BA
aC3 = $C3
aC4 = $C4
aC6 = $C6
;
; **** ZP POINTERS ****
;
p08 = $08
pC3 = $C3
;
; **** FIELDS ****
;
f304D = $304D
fD800 = $D800
fD850 = $D850
fD900 = $D900
fD918 = $D918
fD940 = $D940
fDA00 = $DA00
fDAE8 = $DAE8
;
; **** ABSOLUTE ADRESSES ****
;
a028A = $028A
a0298 = $0298
a0314 = $0314
a0315 = $0315
a03D0 = $03D0
a03D7 = $03D7
a1C00 = $1C00
a1C01 = $1C01
a45A9 = $45A9
a9C11 = $9C11
;
; **** POINTERS ****
;
p1A = $001A
p0318 = $0318
p07FA = $07FA
pEA31 = $EA31
;
; **** EXTERNAL JUMPS ****
;
e0345 = $0345
e035E = $035E
e038D = $038D
eD57D = $D57D
eD599 = $D599
eE5A8 = $E5A8
eE60A = $E60A
eE6C1 = $E6C1
eF4D4 = $F4D4
eF510 = $F510
eF642 = $F642
eF969 = $F969
;
; **** PREDEFINED LABELS ****
;
ROM_UNTLKj = $EDEF
ROM_ACPTRj = $EE13
ROM_IOINITj = $FDA3
ROM_SECOND = $FF93
ROM_TKSA = $FF96
ROM_ACPTR = $FFA5
ROM_CIOUT = $FFA8
ROM_UNTLK = $FFAB
ROM_UNLSN = $FFAE
ROM_LISTEN = $FFB1
ROM_TALK = $FFB4
ROM_GETIN = $FFE4
* = $0400
.TEXT " ", $0D, $15, $0C, $14, $09, "-", $0D, $05, $0E, $15, " "
.TEXT " "
.TEXT $02, ". ", $02, $01, $03, $0B, $15, $10, " ", $0D, ". ", $0D, $0F, $0E, $09, $14, $0F, $12, " "
.TEXT $06, ". ", $10, $09, $03, $14, $15, $12, $05, " ", $06, $0F, $12, $0D, $01, $14, $14, $05, $12, " ", $10, ". ", $10, $09, $03, $14, $15, $12, $05, " ", $05, $04, $09, $14, $0F, $12
.TEXT $03, ". ", $03, $08, $01, $12, $01, $03, $14, $05, $12, " ", $05, $04, $09, $14, $0F, $12, " ", $13, ". ", $13, $10, $12, $09, $14, $05, " ", $05, $04, $09, $14, $0F, $12, " "
.TEXT $15, ". ", $15, $14, $09, $0C, $09, $14, $09, $05, $13, " ", $08, ". ", $08, $01, $12, $04, "-", $03, $0F, $10, $19, " "
.TEXT " "
.TEXT " ", $0E, $0F, $14, " ", $10, $09, $03, $14, $15, $12, $05, " ", $13, $03, $12, $05, $05, $0E, " "
.TEXT " ", $0C, $0F, $01, $04, " ", $0D, $0F, $04, $15, $0C, $05, " (", $19, "/", $0E, ")? "
f0568 .TEXT "BMFPCSUH"
f0570 .TEXT $0E
.BYTE $16,$18,$17,$0D,$0C,$18,$0B
f0578 .BYTE $04,$01,$07,$01,$01,$00,$01,$00
s0580 LDA #$FD
AND a90
STA a90
JSR ROM_ACPTRj ;$EE13 (jmp) - input byte from SERIAL
EOR a08
EOR a09
STA (p08),Y
INC a08
BNE b0595
INC a09
b0595 RTS
s0596 STY a02
LDX #$07
b059A CMP f0568,X
BEQ b05A3
DEX
BPL b059A
RTS
b05A3 LDA #$00
b05A5 DEX
BMI b05AD
CLC
ADC #$14
BNE b05A5
b05AD CLC
ADC #$50
STA a08
LDA #$D8
STA a09
LDY #$13
LDA a02
b05BA STA (p08),Y
DEY
BPL b05BA
RTS
j05C0 SEI
LDX #$FF
TXS
INX
STX a05
STX a028A
JSR ROM_IOINITj ;$FDA3 (jmp) - initialize CIA & IRQ
JSR eE5A8
LDA #$0B
STA $D020 ;Border Color
STA $D021 ;Background Color 0
LDX #$00
b05DA STA fD800,X
STA fD900,X
STA fDA00,X
STA fDAE8,X
INX
BNE b05DA
b05E9 CPX #$28
BCS b05F2
LDA #$0D
STA fD800,X
b05F2 LDA #$01
STA fD850,X
INX
CPX #$A0
BNE b05E9
LDY #$03
a05FF =*+$01
LDA #$00
JSR s0596
CLI
b0604 JSR ROM_GETIN ;$FFE4 - get a byte from channel
BEQ b0604
CMP #$03
BNE b0610
b060D JMP (p0318) ;NMI
b0610 LDX #$07
b0612 CMP f0568,X
BEQ b061C
DEX
BPL b0612
BMI b0604
b061C CMP a05FF
BEQ b060D
STA a0633
LDA f0570,X
STA a03D0
LDA f0578,X
STA a03D7
LDY #$07
a0633 =*+$01
LDA #$00
JSR s0596
LDA a0633
CMP #$50
BEQ b0642
CMP #$46
BNE b0659
b0642 JSR e0345
LDA a9C11
JSR e035E
AND #$20
BNE b0659
LDX #$27
LDA #$0A
b0653 STA fD918,X
DEX
BPL b0653
b0659 LDX #$27
LDA #$07
b065D STA fD940,X
DEX
BPL b065D
CLI
LDA #$00
STA aC6
b0668 JSR ROM_GETIN ;$FFE4 - get a byte from channel
BEQ b0668
CMP #$0D
BEQ b0678
CMP #$59
BEQ b0678
JMP j05C0
b0678 LDA #$0B
STA $D011 ;VIC Control Register 1
JSR s0775
b0680 LDA f0788,Y
BEQ b068B
JSR ROM_CIOUT ;$FFA8 - output byte to SERIAL
INY
BNE b0680
b068B JSR ROM_UNLSN ;$FFAE - unlisten all SERIAL devices
LDX #$90
LDY #$07
LDA #$04
STA a93
JSR s0720
LDA #$03
JSR ROM_CIOUT ;$FFA8 - output byte to SERIAL
JSR ROM_CIOUT ;$FFA8 - output byte to SERIAL
JSR ROM_UNLSN ;$FFAE - unlisten all SERIAL devices
LDA aBA
JSR ROM_TALK ;$FFB4 - make SERIAL device talk
LDA #$6F
JSR ROM_TKSA ;$FF96 - send secondary addr after talk
JSR ROM_ACPTR ;$FFA5 - input byte from SERIAL
STA a02
b06B3 JSR ROM_ACPTR ;$FFA5 - input byte from SERIAL
CMP #$0D
BNE b06B3
JSR ROM_UNTLK ;$FFAB - untalk all SERIAL devices
LDA a02
CMP #$37
BEQ b06C6
JMP (p0318) ;NMI
b06C6 SEI
LDA #<pEA31
LDX #>pEA31
STA a0314 ;IRQ
STX a0315 ;IRQ
JSR e038D
LDA #<p1A
STA a08
LDY #>p1A
STY a09
b06DC JSR s0580
LDA a08
CMP #$90
BNE b06DC
LDA #<p07FA
STA a08
LDA #>p07FA
STA a09
b06ED JSR s0580
LDA a08
BNE b06ED
JSR ROM_ACPTRj ;$EE13 (jmp) - input byte from SERIAL
STA a09
JSR ROM_ACPTRj ;$EE13 (jmp) - input byte from SERIAL
STA a08
b06FE JSR s0580
BIT a90
BVC b06FE
JSR ROM_UNTLKj ;$EDEF (jmp) - untalk all SERIAL devices
JSR eF642
SEI
LDX #$05
b070E LDA p07FA,X
p0712 =*+$01
STA a0314,X ;IRQ
DEX
BPL b070E
LDA a0633
STA a05FF
JMP j05C0
s0720 JSR s0775
LDA #$49
JSR ROM_CIOUT ;$FFA8 - output byte to SERIAL
JSR ROM_UNLSN ;$FFAE - unlisten all SERIAL devices
STX aC3
STY aC4
LDX #$03
LDY #$00
b0733 JSR s075E
TYA
JSR ROM_CIOUT ;$FFA8 - output byte to SERIAL
TXA
JSR ROM_CIOUT ;$FFA8 - output byte to SERIAL
LDA #$20
JSR ROM_CIOUT ;$FFA8 - output byte to SERIAL
b0743 LDA (pC3),Y
JSR ROM_CIOUT ;$FFA8 - output byte to SERIAL
INY
TYA
AND #$1F
BNE b0743
JSR ROM_UNLSN ;$FFAE - unlisten all SERIAL devices
TYA
BNE b0733
INC aC4
INX
CPX a93
BCC b0733
JMP j0761
s075E LDA #$57
j0761 =*+$01
BIT a45A9
PHA
JSR s0775
LDA #$4D
JSR ROM_CIOUT ;$FFA8 - output byte to SERIAL
LDA #$2D
JSR ROM_CIOUT ;$FFA8 - output byte to SERIAL
PLA
JMP ROM_CIOUT ;$FFA8 - output byte to SERIAL
s0775 LDA #$6F
PHA
LDA #$00
STA a90
LDA aBA
JSR ROM_LISTEN ;$FFB1 - make SERIAL device listen
PLA
JSR ROM_SECOND ;$FF93 - send secondary addr after listen
LDA a90
RTS
f0788 EOR f30,X ;Buffer pointer for disk controller
ROL f304D,X
BRK #$00
BRK #$4C
BIT a03 ;Command code for buffer 3
LDA #<p0712
STA a06 ;Track and sector for buffer 0
LDA #>p0712
STA a07
LDA #$E0
LDX #$00
JSR eD57D
DEC a0298 ;Flag: Work return
JSR eD599 ;$D599 Verify execution
CMP #$02
BCC b07AF
JMP eE60A ;$E60A Prepare error number and message
b07AF LDA #$73
JMP eE6C1 ;$E6C1 Print error on track 00,00 to error buffer
LDA #$04
STA a31
JSR eF510 ;$F510 Read block header
LDA a1C00 ;PB, control port B
AND #$9F
STA a1C00 ;PB, control port B
LDX #$00
b07C5 BIT a1C00 ;PB, control port B
BMI b07C5
b07CA INX
BIT a1C00 ;PB, control port B
BPL b07CA
CPX #$14
LDA a1C01 ;PA, port A ( to and from read/write head)
CLV
LDY #$00
BCC b07DD
JMP eF4D4
b07DD LDA #$F4
LDA #$03
JMP eF969 ;$F969 Error entry disk controller
.BYTE $00,$00,$00,$00,$00,$00,$00,$00
.BYTE $00,$00,$00,$00,$00,$00,$00,$00
.BYTE $00,$00,$00,$00
Alles anzeigen