diff --git a/PLASMA-SYS1.PO b/PLASMA-SYS1.PO index 792faac..29003b1 100644 Binary files a/PLASMA-SYS1.PO and b/PLASMA-SYS1.PO differ diff --git a/src/libsrc/apple/sndseq.pla b/src/libsrc/apple/sndseq.pla index 52f9d39..e0da4aa 100755 --- a/src/libsrc/apple/sndseq.pla +++ b/src/libsrc/apple/sndseq.pla @@ -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