mirror of
https://github.com/dschmenk/PLASMA.git
synced 2025-02-20 17:29:11 +00:00
Better MockingBoard detection
This commit is contained in:
parent
b96c08fb59
commit
8ebe11621a
BIN
PLASMA-SYS1.PO
BIN
PLASMA-SYS1.PO
Binary file not shown.
@ -213,6 +213,36 @@ asm psgWrite(pVIA, reg, val)#0
|
||||
INX
|
||||
RTS
|
||||
end
|
||||
asm viaCheck(pVIA)#2
|
||||
PHP
|
||||
SEI
|
||||
LDA ESTKL,X
|
||||
STA TMPL
|
||||
LDA ESTKH,X
|
||||
STA TMPH
|
||||
STX ESP
|
||||
LDX #$80
|
||||
LDY #$04
|
||||
- LDA (TMP),Y
|
||||
BMI +
|
||||
DEX
|
||||
BNE -
|
||||
TXA ; TIMEOUT
|
||||
BEQ ++
|
||||
+ TAX
|
||||
LDA (TMP),Y
|
||||
++ TAY
|
||||
TXA
|
||||
LDX ESP
|
||||
DEX
|
||||
STA ESTKL,X
|
||||
STY ESTKL+1,X
|
||||
LDA #$00
|
||||
STA ESTKH,X
|
||||
STA ESTKH+1,X
|
||||
PLP
|
||||
RTS
|
||||
end
|
||||
//
|
||||
// Apple II speaker tone generator routines
|
||||
//
|
||||
@ -374,14 +404,21 @@ end
|
||||
// Search slots for MockingBoard
|
||||
//
|
||||
def mbTicklePSG(pVIA)
|
||||
pVIA->IER = $7F // Mask all interrupts
|
||||
pVIA->ACR = $00 // Stop T1 countdown
|
||||
pVIA->DDRB = $FF // Output enable port A and B
|
||||
pVIA->DDRA = $FF
|
||||
pVIA->IORA = $00 // Reset MockingBoard
|
||||
if pVIA->IORA == $00
|
||||
byte tmrBegin, tmrEnd
|
||||
word tmrDiff
|
||||
|
||||
tmrBegin, tmrEnd = viaCheck(pVIA)
|
||||
tmrDiff = tmrEnd - tmrBegin
|
||||
//puts("VIA address: $"); puth(pVIA); puts(" Timer Diff = "); puti(tmrDiff); putln
|
||||
if tmrDiff == 10
|
||||
pVIA->IER = $7F // Mask all interrupts
|
||||
//pVIA->ACR = $00 // Stop T1 countdown
|
||||
pVIA->DDRB = $FF // Output enable port A and B
|
||||
pVIA->DDRA = $FF
|
||||
pVIA->IORA = $00 // Reset MockingBoard
|
||||
//if pVIA->IORA == $00
|
||||
pVIA->IORA = $04 // Inactive MockingBoard control lines
|
||||
if pVIA->IORA == $04
|
||||
//if pVIA->IORA == $04
|
||||
//
|
||||
// At least we know we have some sort of R/W in the ROM
|
||||
// address space. Most likely a MockingBoard or John Bell
|
||||
@ -392,7 +429,7 @@ def mbTicklePSG(pVIA)
|
||||
//if mbReadP(pVIA, 2) == $7E and mbReadP(pVIA, 3) == $0A
|
||||
return pVIA
|
||||
//fin
|
||||
fin
|
||||
//fin
|
||||
fin
|
||||
return 0
|
||||
end
|
||||
@ -632,7 +669,7 @@ def mbSequence(yield, func)#0
|
||||
psgWrite(mbVIA2, BENVAMP, $00)
|
||||
psgWrite(mbVIA2, CENVAMP, $00)
|
||||
fin
|
||||
mbVIA1->ACR = $00 // Stop T1 countdown
|
||||
//mbVIA1->ACR = $00 // Stop T1 countdown
|
||||
mbVIA1->IER = $7F // Mask all interrupts
|
||||
mbVIA1->IFR = $40 // Clear interrupt
|
||||
setStatusReg(status)
|
||||
@ -821,14 +858,15 @@ when MACHID & MACHID_MODEL
|
||||
return -1
|
||||
break
|
||||
otherwise
|
||||
puts("MockingBoard Slot:\n")
|
||||
puts("ENTER = None\n")
|
||||
puts("0 = Scan\n")
|
||||
puts("1-7 = Slot #\n")
|
||||
instr = gets('>'|$80)
|
||||
if ^instr
|
||||
mbSlot = mbSearch(^(instr + 1) - '0')
|
||||
fin
|
||||
//puts("MockingBoard Slot:\n")
|
||||
//puts("ENTER = None\n")
|
||||
//puts("0 = Scan\n")
|
||||
//puts("1-7 = Slot #\n")
|
||||
//instr = gets('>'|$80)
|
||||
//if ^instr
|
||||
// mbSlot = mbSearch(^(instr + 1) - '0')
|
||||
//fin
|
||||
mbSlot = mbSearch(0)
|
||||
break
|
||||
wend
|
||||
if mbSlot < 0
|
||||
|
Loading…
x
Reference in New Issue
Block a user