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