From db6cf6c73c69e54c45890936afee2e96173aa4f8 Mon Sep 17 00:00:00 2001 From: Bobbi Webber-Manners Date: Mon, 21 Nov 2022 16:02:46 -0500 Subject: [PATCH] Supports both Ensoniq (GS) and Mockingboard (//e). --- applecorn.po | Bin 819200 -> 819200 bytes auxmem.init.s | 2 +- auxmem.misc.s | 41 +++++++++++++++++++++-------------------- mainmem.audio.s | 19 ++++++++++++------- mainmem.init.s | 8 ++++++-- mame_applecorn | 4 ++-- 6 files changed, 42 insertions(+), 32 deletions(-) diff --git a/applecorn.po b/applecorn.po index 41a1e8801c6bad9261087a6d854132c8bbc4ff44..2dd3dc708008e6956fc1d5f5c7e131266e437c5a 100644 GIT binary patch delta 6420 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 delta 6696 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 diff --git a/auxmem.init.s b/auxmem.init.s index 9915aa7..c193116 100644 --- a/auxmem.init.s +++ b/auxmem.init.s @@ -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-20' +HELLO ASC 'Applecorn MOS 2022-11-21' DB $00 ; Unify MOS messages * TO DO: Move into RAM GSSPEED DB $00 ; $80 if GS is fast, $00 for slow diff --git a/auxmem.misc.s b/auxmem.misc.s index c9ff86a..eef2097 100644 --- a/auxmem.misc.s +++ b/auxmem.misc.s @@ -380,15 +380,15 @@ 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 +* 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 PHX CLD @@ -421,19 +421,20 @@ IRQBRKRET >>> IENTAUX ; IENTAUX does not do CLI 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 +* 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 +*:S4 ; TODO: Pass on to IRQ1V PLX PLA NULLRTI RTI diff --git a/mainmem.audio.s b/mainmem.audio.s index 7bda744..f2e2cca 100644 --- a/mainmem.audio.s +++ b/mainmem.audio.s @@ -513,28 +513,33 @@ CHECK4BYTES PHX * Configure an oscillator to play a note * On entry: X - oscillator number 0-3 , A - frequency, Y - amplitude * Preserves all registers -AUDIONOTE +AUDIONOTE PHA + LDA AUDIOCARD + BEQ :MOCK + PLA JMP ENSQNOTE -* JMP MOCKNOTE - RTS +:MOCK PLA + JMP MOCKNOTE * Adjust frequency of oscillator * On entry: X - oscillator number 0-3 , Y - frequency to set * Preserves X & Y AUDIOFREQ + LDA AUDIOCARD + BEQ :MOCK JMP ENSQFREQ -* JMP MOCKFREQ - RTS +:MOCK JMP MOCKFREQ * Adjust amplitude of oscillator * On entry: X - oscillator number 0-3 , Y - amplitude to set * Preserves X & Y AUDIOAMP + LDA AUDIOCARD + BEQ :MOCK JMP ENSQAMP -* JMP MOCKAMP - RTS +:MOCK JMP MOCKAMP * Handle envelope tick counter diff --git a/mainmem.init.s b/mainmem.init.s index d43ea49..324c49d 100644 --- a/mainmem.init.s +++ b/mainmem.init.s @@ -6,6 +6,7 @@ * 14-Nov-2021 If started from CSD, gets prefix to CMDBUF. +AUDIOCARD DB $00 ; $00 = Mockingboard, $01 = Ensoniq * Trampoline in main memory used by aux memory IRQ handler * to invoke Apple II / ProDOS IRQs in main memory @@ -34,10 +35,13 @@ RESET TSX * Reset hardware RESETHW SEC + STZ AUDIOCARD JSR IDROUTINE ; See if this is a GS BCS :NOTGS JSR ENSQINIT ; Initialize Ensoniq + INC AUDIOCARD + RTS ; AUDIOCARD=1 :NOTGS -* JSR MOCKINIT ; Initialize Mockingboard (sl4) - RTS + JSR MOCKINIT ; Initialize Mockingboard (sl4) + RTS ; AUDIOCARD=0 diff --git a/mame_applecorn b/mame_applecorn index a21de9b..05ac8af 100755 --- a/mame_applecorn +++ b/mame_applecorn @@ -1,2 +1,2 @@ -#mame -w apple2ee -debug -sl5 mouse -sl7 cffa2 -harddisk1 ~/Personal/Development/Applecorn/applecorn.po -mame -w apple2gs -debug -sl7 cffa2 -harddisk1 ~/Personal/Development/Applecorn/applecorn.po -harddisk2 tests/JGHMusic2.po +mame -w apple2ee -debug -sl5 mouse -sl7 cffa2 -harddisk1 ~/Personal/Development/Applecorn/applecorn.po +#mame -w apple2gs -debug -sl7 cffa2 -harddisk1 ~/Personal/Development/Applecorn/applecorn.po -harddisk2 tests/JGHMusic2.po