Giter Club home page Giter Club logo

mb-audit's People

Contributors

tomcw avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

xotmatrix

mb-audit's Issues

Support MB in slot 3

One immediate issue is that the //e ROM's 6502 IRQ (=BRK) vector at $FFFE will vector to $C3FA.
(RESET goes to $FA62 and NMI goes to $3FB)

Not an issue with the II/II+, since IRQ goes to $FA40 (there is in C3 ROM).

Perhaps the best solution is to enable the LC's HIGH RAM and change IRQ to vector to my code.
(Fine for IIe/IIc/IIgs since they all have LC's)
NB. After each RESET then re-enable LC and slot 3 ROM.

Use local copy of WAIT, not monitor ROM's

On cea2, ("mb-audit: a Mockingboard test suite for emulators") Kent Dickey said:

I have a suggestion for 11:0E:00: you call the monitor routine WAIT to wait
a number of cycles--and you care about the exact number of cycles elapsed
(well, really you care about cycles mod 2, so if it's off by a multiple of
2 it's fine). WAIT on a IIgs is not cycle accurate, and it might not be
on other monitor ROMs either since the WAIT description says it waits a
minimum number of microseconds. So the IIgs ROM has extra code to ensure
the CPU is running at slow speed, and this adds extra time. You would be
better off creating your own WAIT in your code so that it's consistent
regardless of the monitor code in ROM.

After playing tune on Phasor, get a bit of noise when testing Phasor

Repro:

  • mb-audit v1.1 (preview 0.2)
  • do 'Music Test' for a few seconds (perhaps until it uses the AY noise channel?)
  • ESC to exit, then do 'Audit & Diagnostics'
  • the MB-C (s4) makes no extra noise
  • the Phasor (s1) make ~1s of noise before saying 'Classic Adventure'
  • NB. doesn't happen everytime

mb-audit hangs if run directly from Phasor native mode

A simple repro for this is:

  • use a Phasor card
  • CALL-151
  • C0C5 ; select Phasor native
  • 2000G

Problems:

  1. Detect6522 only detects 6522-B at $80 and not 6522-A.
    • This is because 6522-A is mapped to $10.
  2. After calling DetectSSI263 the code hangs due to infinite IRQs.
    • This is because the SSI263 generates a direct IRQ to the 6502, and not via the 6522-B.

NB. On a setup with Slot-1=Phasor, Slot-4=MB-C, then after the MB-C detection is done first, you'll get the following msg:
Slot #1 : Warning: Unknown card (no AYs)
This is because DisplayCardUpdate gets called after each card has had sub-system detection done.

Support MB4c card

From the MB4c User Manual (https://quick09.tistory.com/1385):

Mockingboard 4c needs to use Slot#4, but, APPLE //c already occupied and mouse firmware there.
It shouldn’t be removed some cases it need for software.
For this, I used an switching function to make it vacant Slot#4 for Mockingboard 4c.
Basically, If some data wrote to $C400(In fact C400-C4ff) the CPLD make vacant the Slot#4 and set the Mockingboard
to use it.
Many of cases it works properly, but, some of Mockingboard detecting S/W it failed to detect. Hence, You may need to
Turn it ON manually by put data as below.

]CALL-151
*C403:FF FF

And French Touch code here shows some magic writes to $C403 & $C404 to "wake up MB4C for IIc".

UI improvements

  1. For mba: at the "Tone" test stage:
    • state that keys 1,2,3... (and Q,W,E...) toggle the AY channels
    • visually show when a channel is on (INVERSE) or off (NORMAL)
  2. For "(C) SPEECH" test show a message if there are no speech chips + "Press any key"
    • currently it just returns immediately back to the main menu
  3. For "(E) 6522 T2C_H" test show a message if it doesn't run the test + "Press any key"
    • currently it just returns immediately back to the main menu

Improve support for Phasor's Echo+ mode

Since I can't read the AY regs, then I don't even know the AY writes are working!
EDIT: I can read the Echo+ AY regs (and this is now implemented in mb-audit).

NB. the Echo+ has a single 6522 and 2x AY's.

  • try to play a tone on the AY channels
  • try to read AY regs using different four MSB bits...

From Wikipedia:

Although there are only 16 registers, the four MSB bits of the 8-bit bus must be set to the factory default '0000' value when selecting a register. Incorrectly setting the MSB bits causes the chip to ignore the register change. General Instruments did take orders for customized MSB bits (factory set to other than '0000'). The chips made with customize-set MSB register bits allow the same processor to control more than one AY chip on the same bus (e.g. Mockingboard sound card for Apple or TurboSound for ZX Spectrum). There are many new-old-stock (NOS) chips on the secondary market with MSB bits factory set to a non-'0000' value. The non-0000 value can cause significant developmental troubles for designers and repair technicians. Software must be written to identify the correct value of the MSB bits on any given chip. Also, software must be changed or hardware added to allow these factory set MSB chips to be used in place of the default '0000' chips.

IIgs: Improve 6522 Test 1

From cea2, Kent Dickey said: (after running against v0.7-beta)


I have two more requests, both low priority: Can you change T6522_1
so that it doesn't hang if the interrupt doesn't arrive? Just put in a
timeout of some sort?

And second, can you change the T6522_1 Timer1 value from $0303 to $0404?
I like to run KEGS in a special forced 1MHz mode when running Apple II
programs, where it ignores the SPEEDREG and always runs at 1MHz and never
2.8MHz. And when I do that with mb-audit v0.7-beta, then T6522_1
hangs since I'm slowing down the ROM interrupt handler (which manipulates the
speed register and so would normally run at 2.8MHz) and so the interrupt
occurs before the T6522_1 code wants it to, and mb-audit hangs.

MEGA Audio card fails with "No Mockingboard detected!"

MEGA Audio configured just for slot 4:
NB. Register $E (IER) reads back with b7=0
(Also: Timer1-Latch is $0000, but the Timer1 count isn't constrained & Timer2 seems to always read as $00FF!)
IMG_20210905_142225

After patching Detect6522() to ignore the check for IER.b7==1 and use Timer1 (not Timer2):
Test: 10:02:00
Expected:E0 Actual:60
The test is failing, as again, register $E reads back with b7=0
IMG_20210905_195506

NMI and mockingboard

Hi @tomcw

is there a reference that describes which mockingboards used NMI?
How was a programmer to know which boards used only IRQ?

T6522_1: hangs in IIgs-ROM3 (MAME)

It hangs in this code:

+	lda		#0
	sta		isrIFR

-		lda		#IxR_TIMER1			; T1 int from one-shot mode
		and		isrIFR
		beq		-

I think the IIgs interrupt handling code is longer than 0x0202 cycles, so the timer has already expired... and so the timer1 interrupt never fires after setting isrIFR = 0.

Support 'SD Music Deluxe' Mockingboard compatible card

On cea2, Johnson reported:

my card is SD Music Deluxe [...] from Ian Kim that only compatible with Mockingboard, this is a good test to see how good it is, this card can play SkyFox but the tempo or sound not perfect in Music Construction Set.
:
Since it's OPL3 emulate AY8913, it fail is reasonable, maybe you can add this to the record later, the card is using W65C22S (PLCC).

mb-audiov0 7-beta

Tone test not working for first card with MB C & S/SI combo

With a Mockingboard C and a Sound Speech I installed at the same time. The detection works correctly and the multi card tests pass. When mb-audit gets to the tone test, the tone test does not work for the card in the highest slot. It does work ok for the next card. If I swap the cards around, the card in the highest slot is always the one that does not work.

This work ok in AppleWin with its MB C pair, so feels like its something to do with the S/SI and MB C combo. I have another MB A, but its failing the 6522 test 10 (10:00:00) so can't test this with another combo at the moment.

tested with v0.4-beta.

Sorry, this is a bit of an edge case, but had me puzzled for awhile when trying the tone tests until I worked out what was happening.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.