Bally/Midway MCR Sound Test ROM

Many years ago, I tried my first experiment in "shareware". It was a stand-alone sound test ROM for the Bally/Midway Super Sound I/O (SSIO) boards used in the MCR series games. I think I got like $10 total. Oh, well... I suppose it was a bit of an obscure platform. ;-)

Anyway, Tom at had carefully preserved my old work (thanks Tom!), so I'm offering it here again for your amusement and/or enlightenment.

Download the SSIO Sound Test/Debugging EPROM

 |                     BALLY SSIO TEST EPROM                     |

   REVISION DATE: 16 March 1997
      CREATED BY: Clay Cowgill



 After getting frustrated *way* too many times trying to debug MCR game
 sound boards (The "Super Sound I/O" in Tron, Satan's Hollow, Spy Hunter,
 Two Tigers, Wacko, Solar Fox, Kick, Domino Man, Timber, Discs of Tron,
 etc, etc, etc... ;-) I finally sat down and wrote my own test ROM for the
 little monsters. 

 It's pretty simple-- you replace ROM 0 on the SSIO and fire up the
 system.  Depending on the setting of the dip switches on the board,
 different tests are run. 

 The list is:

   1) onboard RAM test (thorough!)
   2) Sound chip output test
   3) Sound output filter test
   4) Panning test
   5) Sound chip I/O test
   6) Chip select tester (hits all I/O selects)

 The main reason for this is because even when the whole game board is
 running, it's tough to debug sound-- you have to go to the self test
 screen, select the sound test, choose "all sounds" and then poke around
 the board tracing the sound paths.

 The annoying part is that the "game" sound tests use different sounds on
 different sound channels, so if you're trying to find a problem with Sound
 channel "B" on the second sound chip, you can only test while the "all
 sounds test" cycles by a sound that's on channel "B". This is even
 tougher if you've got the thing on the bench without any controls hooked
 up. Grrrr...

 So, my ROM gets around that. You don't even need the rest of the game
 board working to get the SSIO fixed and operational. As long as you've
 got power and the test ROM you can work everything over...  

 The sound test puts out constant square waves from each sound channel at
 different frequencies so it's easy to track them around the board. The
 sound output tests exercise the parallel ports on the 8910 chips.
 Panning and filter use the parallel ports to control the sound shaping

 The RAM test gives the 2K SRAM a severe beating. I don't trust the
 built-in SSIO RAM test...

 The Chip Select test goes out and pounds on each address in the address
 map so you can make sure that everything is decoding OK and getting its
 chip selects...

 Remove the program ROM 0 at location "A7" on the SSIO board. Place the SNDTEST
 ROM in the "A7" socket. (Note: SSIO boards may be jumpered for use with 2732
 or 2532 type EPROMs. Your SNDTEST ROM type should match the rest of the ROMs
 on the SSIO board you're going to test.)

 Once the SNDTEST ROM is installed, locate dip-switch block SW3 near the edge
 of the PCB and verify that all the switches are in the "OFF" position.

 Apply power to the board. The SSIO can remain connected to the rest of boards
 in the system (CPU, Video Generator, etc.). (The CPU will complain that
 there is a problem with the sound board, don't worry about it.) The LED at
 location LED3 should be OFF. 

 Once power is applied there are six tests that can be performed by the SNDTEST
 ROM simply by pushing one of the first six switches on SW3. (Switches 7 and 8
 are not used.)

 Note: You'll definately want the schematics handy when you're working on
 one of these boards to get full use out of the SNDTEST ROM!

 When you want to run a test, set SW3 to all "OFF" and hit the reset switch.
 LED3 will be dark and you can run a test by closing the appropriate switch.
 When you're done with a test, return SW3 to all "OFF" and hit reset. Then
 choose another test with SW3.

 SWITCH 1 -- Test 8910 at F7
     Closing switch one will program the 8910 at location F7 to output three
     maximum volume square waves. The outputs appear at Pins 3,4, and 38. Each
     of the square waves output will have a different duty cycle so you should
     be able to see/hear the difference between them as you trace through the
     circuit. (Note: I do all this testing with a scope, so I'm not real sure
     what it'll sound like with the amp connected. I picked values to make the
     waves look ok on a scope, they might sound pretty nasty. Let me know if
     it is annoying.)

     When the commands have all been sent to the sound chip, LED3 will light.

 SWITCH 2 -- Test 8910 at F6
     Same as above test, except for the sound chip as F6.

 SWITCH 3 -- Test LED3
     This test simply lights LED3 to make sure it's working. It'll probably
     get replaced by another test when needed. If LED3 does not light, there
     is either a problem with the latch driving the LED, or some other CPU
     error (bad Z80 at A12, bad buffers on the Z80 address/data lines,
     shorted lines etc.)

 SWITCH 4 -- Test 8910 I/O Ports
     Closing switch 4 starts an I/O port output test on both sound chips. Pins
     6 through 21 will produce square waves, each twice the frequency of the
     previous, starting with pin 21 (IOA0) and pin 13 (IOB0). (So on a scope,
     starting at pin 13 and working up to pin 6 you should series of square
     waves each twice the frequency of the previous.)

     If you encounter any "dead" lines during this test, try another 8910 chip.
     If that doesn't help, look for shorted traces or bad IC's hanging off the

     LED3 will light when the test is running.

 SWITCH 5 -- Test RAM at A6
     Closing switch 5 runs a fairly thorough RAM test on the RAM chip at A6.
     The test does pattern tests, walking bit tests, and full on/off tests and
     should find most bad RAMs. The test only takes a fraction of a second to
     run (it's only 2K!) and LED3 will light IF THE RAM IS GOOD. If LED3 doesn't
     come on immediately, return SW3 to all off, hit reset and close switch 5
     again. Watch LED3 very closely (or probe it with a scope) and you'll see
     a brief flash as the test runs. Replace the RAM and try again.

 SWITCH 6 -- Test chip selects
     This test goes out and hits every location that the SSIO Z-80 uses in it's
     memory decoder arrangement. (74ls138's at B12 and B13) Using a scope or
     logic probe you can verify and trace chip selects for the following segments:

     SSIO Memory Map
     0xF000  SW3 switches (d0-d5 only)  B13 pin 7
     0xE000  Clear Processor Interrupt (CLPINT*)  B13 pin 9
     0xD000  LED Latch (d0-d5, d0 is LED 3) (TLED*)  B13 pin 10
     0xC000  Write Status Latch (WSTAT*)  B13 pin 11
     0xB000  8910 at F6  B13 pin 12
     0xA000  8910 at F7  B13 pin 13
     0x9000  Read Interface RAM (RIRAM*)  B13 pin 14
     0x8000  Program RAM select (PRAM*)  B13 pin 15

     0x3000-0x3fff ROM3*  B12 pin 12
     0x2000-0x2fff ROM2*  B12 pin 13
     0x1000-0x1fff ROM1*  B12 pin 14
     0x0000-0x0fff ROM0*  B12 pin 15

 Note that there's a large undecoded segment on B12 that has available chip
 selects for 0x4000-0x7fff. Kinda interesting.

 I hope this code helps you out! Let me know if you need a copy of the SSIO
 schematics, since this ROM isn't very helpful without them. I'm working on
 an automated pan/filter test for SW3-3, but I wasn't very happy with it so
 I'm leaving it out for now. The most recent copy of the test ROM is located

 One thing to watch out for -- Pin 6 (IOB7) on F6 is used as a "MUTE" control
 for the audio channels! If you happen to have that line stuck, you won't get
 any signals at all through the audio mixer. Check it with the Sound I/O Port
 Test as it goes into (and out of) the 7406 at A1 on pins 11 and 10.

 Also, the square waves coming off the 8910's are pretty easy to follow around
 the board until the final output filter at D3 (an LM3900). There's a cap/diode
 array that does some REALLY funky waveshaping.

 Feel free to contact me if something isn't clear, or you need help!


 |                                 END                                |


Updated: 4/24/2003

2003, Clayton Cowgill