Bug fix to Mockingboard ISR. Works now!

This commit is contained in:
Bobbi Webber-Manners 2022-11-20 22:45:40 -05:00
parent 408f1ad9ea
commit 38cbb97a56
3 changed files with 29 additions and 8 deletions

View File

@ -85,6 +85,8 @@ CLR80VID EQU $C00C
SET80VID EQU $C00D
CLRALTCHAR EQU $C00E
SETALTCHAR EQU $C00F
RDRAMRD EQU $C013
RDRAMWR EQU $C014
KBDSTRB EQU $C010
RDVBL EQU $C019

View File

@ -290,7 +290,7 @@ BYTE00 BEQ BYTE00A ; OSBYTE 0,0 - generate error
RTS ; %000x1xxx host type, 'A'pple
BYTE00A BRK
DB $F7
HELLO ASC 'Applecorn MOS 2022-11-09'
HELLO ASC 'Applecorn MOS 2022-11-20'
DB $00 ; Unify MOS messages
* TO DO: Move into RAM
GSSPEED DB $00 ; $80 if GS is fast, $00 for slow

View File

@ -380,12 +380,17 @@ GSBRKAUX >>> IENTAUX ; IENTAUX does not do CLI
IRQBRKHDLR PHA
* Mustn't enable IRQs within the IRQ handler
* Do not use WRTMAIN/WRTAUX macros
LDA RDRAMRD ; Record softswitch state
STA $90
LDA RDRAMWR
STA $91
STA WRMAINRAM ; Write to main memory
STA $45 ; $45=A for ProDOS IRQ handlers
STA WRCARDRAM ; Write to aux memory
STA RDCARDRAM ; Read from aux memory
TXA
PHA
PHX
CLD
TSX
LDA $103,X ; Get PSW from stack
@ -405,17 +410,31 @@ IRQBRKHDLR PHA
JSR SERVICEX
LDX BYTEVARBASE+$FC ; Get current language
JSR ROMSELECT ; Bring it into memory
PLA
TAX
PLX
PLA
CLI
JMP (BRKV) ; Pass on to BRK handler
:IRQ >>> XF2MAIN,A2IRQ ; Bounce to Apple IRQ handler
:IRQ PHY
>>> XF2MAIN,A2IRQ ; Bounce to Apple IRQ handler
IRQBRKRET
>>> IENTAUX ; IENTAUX does not do CLI
PLA ; TODO: Pass on to IRQ1V
TAX
PLY
LDA $90 ; Restore state of RAMRD
BMI :S1
STA RDMAINRAM
BRA :S2
:S1 STA RDCARDRAM
:S2 LDA $91 ; Restore state of RAMWRT
BMI :S3
STA WRMAINRAM
BRA :S4
:S3 STA WRCARDRAM
:S4 ; TODO: Pass on to IRQ1V
PLX
PLA
NULLRTI RTI