<x-html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD W3 HTML//EN">
<HTML>
<HEAD>
<META content=text/html;charset=iso-8859-1 http-equiv=Content-Type>
<META content='"MSHTML 4.72.3612.1706"' name=GENERATOR>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT size=2>
<P>! BARE BONES ARCADE BOARD TESTER</P>
<P>! by Mowerman@erols.com</P>
<P>!</P>
<P>! 3/26/02</P>
<P>! Ver 3</P>
<P>!</P>
<P>! This is close to a running program that can be used</P>
<P>! to quickly create a running program for testing arcade boards.</P>
<P>! I have created a running program from this outline and compiled</P>
<P>! it using the RKSIC.exe program for the FLUKE 9010A.</P>
<P>!</P>
<P>!</P>
<P>! PROGRAM HOUSEKEEPING VARIABLES</P>
<P>!</P>
<P>! *GAMENAME....replace with current game name.</P>
<P>! *PROGRAMMER..replace with current author name.</P>
<P>! *DATE........replace with original program date.</P>
<P>! *MODDATE.....replace with revision date.</P>
<P>! *REVISION....replace with revision number.</P>
<P>! *POD.........replace with test pod required.</P>
<P>!</P>
<P>! BOARD SPECIFIC VARIABLES</P>
<P>!</P>
<P>! *RAMSTART1...replace with first RAM location.</P>
<P>! *RAMLENGTH1..replace with size of first RAM chip location.</P>
<P>! *ROMSTART1...replace with first ROM location.</P>
<P>! *ROMEND1.....replace with last location of first ROM.</P>
<P>! *ROMSIG1.....replace with Fluke Signature of first ROM.</P>
<P>! *IO1.........replace with first I/O byte location.</P>
<P>! *DIP1........replace with first Dip Switch byte location.</P>
<P> </P>
<P> </P>
<P>! *GAMENAME Test Routine</P>
<P>! Use *POD in CPU processor socket</P>
<P>! Program created by *PROGRAMMER</P>
<P>! Program written on *DATE</P>
<P>! Revision Date *MODDATE</P>
<P>! Revision number *REVISION</P>
<P>INCLUDE "Z80.POD" ! Use to set required pod also used for setup</P>
<P> </P>
<P>SETUP</P>
<P>TRAP ACTIVE FORCE LINE NO</P>
<P>TRAP ACTIVE INTERRUPT NO</P>
<P></P>
<P>! Pod specific setup controls may be placed here</P>
<P>PROGRAM MAIN</P>
<P>DPY-*GAMENAME TST</P>
<P>DPY-+-PRESS CONT</P>
<P>STOP</P>
<P>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!</P>
<P>! MAIN LOOP ROUTINE</P>
<P>! Proposed standard</P>
<P>! 1 = RAM Test</P>
<P>! 2 = ROM Test</P>
<P>! 3 = SND Test</P>
<P>! 4 = I/O Test</P>
<P>! 5 = DIP Test</P>
<P>! 6 = PROBE Test</P>
<P>! 0 = Run UUT</P>
<P>!</P>
<P>! Register 1 is used for keyboard input for selection</P>
<P>!</P>
<P>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
</P>
<P>MAINLOOP:</P>
<P>DPY- 1-RAM 2-ROM 3-SND 4-IO 5-DIP\1</P>
<P>IF REG1 = 1 GOTO RAMTEST</P>
<P>IF REG1 = 2 GOTO ROMTEST</P>
<P>IF REG1 = 3 GOTO SNDTEST</P>
<P>IF REG1 = 4 GOTO IOTEST</P>
<P>IF REG1 = 5 GOTO DIPTEST</P>
<P>IF REG1 = 6 GOTO PRBTEST</P>
<P>IF REG1 = 9 GOTO RTEST</P>
<P>GOTO MAINLOOP</P>
<P>RAMTEST:</P>
<P>EXECUTE TSTRAM</P>
<P>GOTO MAINLOOP</P>
<P>ROMTEST:</P>
<P>EXECUTE TSTROM</P>
<P>GOTO MAINLOOP</P>
<P>SNDTEST:</P>
<P>EXECUTE TSTSND</P>
<P>GOTO MAINLOOP</P>
<P>IOTEST:</P>
<P>EXECUTE TSTIO</P>
<P>GOTO MAINLOOP</P>
<P>DIPTEST:</P>
<P>EXECUTE DIPTST</P>
<P>GOTO MAINLOOP</P>
<P>PRBTEST:</P>
<P>EXECUTE TSTPRB</P>
<P>GOTO MAINLOOP</P>
<P>RTEST:</P>
<P>EXECUTE TSTRUN</P>
<P>GOTO MAINLOOP</P>
<P>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!</P>
<P>! RAM TEST</P>
<P>!</P>
<P>! Display each (set) of RAMs as testing many Rams are 4 bit wide such as</P>
<P>! the common 2114s.</P>
<P>!</P>
<P>! RAM SHORT @ *RAMSTART1 - *RAMLENGTH1</P>
<P>!</P>
<P>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
</P>
<P>PROGRAM TSTRAM</P>
<P>DPY-TESTING PGM RAM R3 M3#</P>
<P>RAM SHORT @ 0-1FFF</P>
<P>DPY- RAM TEST COMPLETE PRESS CONT#</P>
<P>STOP</P>
<P> </P>
<P>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!</P>
<P>! ROM TEST</P>
<P>!</P>
<P>! Promt for version of ROM (if needed). Response goes into REG1.</P>
<P>! REG1 used for GOTO jump to corresponding LABEL for proper test.</P>
<P>!</P>
<P>! Rom Test is done by removeable roms rather than blocks of memory this</P>
<P>! helps pinpoint the bad rom to replace.</P>
<P>!</P>
<P>! ROM TEST @ *ROMSTART1 - *ROMEND1 SIG *ROMSIG1</P>
<P>!</P>
<P>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
</P>
<P>PROGRAM TSTROM</P>
<P>0: LABEL 0</P>
<P>DPY-ROM VERSION 1 OR 2 ? /1</P>
<P>IF REG1 = 1 GOTO 1</P>
<P>IF REG1 = 2 GOTO 2</P>
<P>GOTO 0</P>
<P>1: LABEL 1</P>
<P>DPY-TESTING ROM F1</P>
<P>ROM TEST @ 6800-6FFF SIG 53C9</P>
<P>DPY-TESTING ROM D E1</P>
<P>ROM TEST @ 7000-77FF SIG 3D7A</P>
<P>GOTO F</P>
<P>2: LABEL 2</P>
<P>! Insert Version 2 ROM test here</P>
<P>F: LABEL F</P>
<P>DPY-ROM TEST COMPLETE</P>
<P>STOP</P>
<P>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!</P>
<P>! SND TEST</P>
<P>!</P>
<P>! Sound test very dependant on game. Some games will have a separate
sound</P>
<P>! processor & some may be directly accessable from the main
processor.</P>
<P>! This test is for directly accessable sound generators.</P>
<P>!</P>
<P>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
</P>
<P>PROGRAM TSTSND</P>
<P>REG1 = 40</P>
<P>DPY-Rivet SND. CONT=NEXT</P>
<P>DPY-+ SND%1#</P>
<P>0: LABEL 0</P>
<P>WRITE @7C00 = 05</P>
<P>IF REG1 = 25 GOTO 1</P>
<P>GOTO 0</P>
<P>1: LABEL 1</P>
<P>REG1 = 40</P>
<P>DPY-Springs SND. CONT=NEXT SND%1#</P>
<P>2: LABEL 2</P>
<P>WRITE @ 7C00 = 0A</P>
<P>IF REG1 = 25 GOTO 3</P>
<P>GOTO 2</P>
<P>F: LABEL F</P>
<P>REG1 = 40</P>
<P>DPY-SND TESTS COMPLETE. PRESS</P>
<P>DPY-+ CONT%1#</P>
<P>STOP</P>
<P>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!</P>
<P>! I/O TEST</P>
<P>!</P>
<P>! This test may be configured to test all individual inputs one at a time
or</P>
<P>! may just be configured to display the bytewide register of inputs. By</P>
<P>! looking at bytewide inputs for Normally Open momentary inputs (buttons
/</P>
<P>! joysticks, coins etc) you can verify none are stuck on.</P>
<P>!</P>
<P>! READ @ *IO1</P>
<P>! REGE is contents of previous 9010A command, so display them.</P>
<P>!</P>
<P>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
</P>
<P>PROGRAM TSTIO</P>
<P>READ @ *IO1</P>
<P>DPY-IO2 = $E PRESS CONT</P>
<P>STOP</P>
<P>DPY-IO TESTS COMPLETE. PRESS</P>
<P>DPY-+ CONT%1#</P>
<P>STOP </P>
<P>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!</P>
<P>! DIP SWITCH TEST</P>
<P>!</P>
<P>! The DIP Test is 3 stages, a All on test, All off test, Factory settings</P>
<P>!</P>
<P>! Set REGF = *DIP1 location</P>
<P>! REGE is contents of previous 9010A command, so use it.</P>
<P>! </P>
<P>! I could not get it to compare to REGE so I used REG1 = REGE and then</P>
<P>! compared to REG1.</P>
<P>!</P>
<P>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
</P>
<P>PROGRAM DIPTST</P>
<P>REGF = *DIP1</P>
<P>SW1ON:</P>
<P>DPY- TURN ALL DIPS ON AT SW1 #</P>
<P>STOP</P>
<P>READ @ REGF</P>
<P>REG1 = REGE</P>
<P>IF REG1 = FF GOTO SW1OFF</P>
<P>DPY- ERROR SW1 OFF PRESS CONT # </P>
<P>STOP</P>
<P>GOTO SW1ON</P>
<P>SW1OFF: </P>
<P>DPY- TURN ALL DIPS OFF AT SW1 #</P>
<P>STOP</P>
<P>READ @REGF</P>
<P>REG1 = REGE</P>
<P>IF REG1 = 0 GOTO SW1FACTORY </P>
<P>DPY- ERROR SW1 ON PRESS CONT #</P>
<P>STOP</P>
<P>GOTO SW1OFF</P>
<P>SW1FACTORY:</P>
<P>DPY- FACT SET SW1 00000001 #</P>
<P>STOP</P>
<P>READ @REGF</P>
<P>REG1 = REGE</P>
<P>IF REG1 = 80 GOTO SW2</P>
<P>DPY- ERROR SW1 FACT PRESS CONT #</P>
<P>STOP</P>
<P>GOTO SW1FACTORY</P>
<P>SW2:</P>
<P>! DONE</P>
<P>DPY-DIP TEST COMPLETE. PRESS</P>
<P>DPY-+ CONT%1#</P>
<P>STOP</P>
<P> </P>
<P> </P>
<P>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!</P>
<P>! PROBE TEST</P>
<P>!</P>
<P>! Copied from Asteroids Test by *Sorry I don't have his name at the
moment</P>
<P>! </P>
<P>! The probe test is designed to excercise given signals on the board,
such</P>
<P>! as flip, enable, select etc to aid in finding faults.</P>
<P>!</P>
<P>! I'm not real clear on the implementation here, basically I belive the</P>
<P>! program does a set number of writes to trigger a signal & the probe
counts</P>
<P>! to see if it recieves all of the triggered signals. I have noticed that</P>
<P>! it is possible to see the 'wrong' signal & thus get a false positive
test.</P>
<P>!</P>
<P>! REG9 = *ProbeLocation1</P>
<P>! REGB = *Number of Triggers excercised</P>
<P>! REG0 = Number of triggers read by probe</P>
<P>!</P>
<P>! Improvement or use of Signatures here should be investigated.</P>
<P>!</P>
<P>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
</P>
<P>PROGRAM TSTPRB</P>
<P>SYNC ADDRESS</P>
<P>DPY-PLACE PROBE ON POINTS</P>
<P>DPY-+ SHOWN.#</P>
<P>STOP</P>
<P>DPY-FLIP 5J-6.#</P>
<P>STOP</P>
<P>REGB = 1</P>
<P>REG9 = 7D82</P>
<P>REGB = 40</P>
<P>EXECUTE PROGRAM 65</P>
<P>STOP</P>
<P>PROGRAM 65 116 BYTES</P>
<P>READ PROBE</P>
<P>REG1 = REGB</P>
<P>1: LABEL 1</P>
<P>IF REG8 = 0 GOTO 2</P>
<P>READ @ REG9</P>
<P>GOTO 3</P>
<P>2: LABEL 2</P>
<P>WRITE @ REG9 = REGA</P>
<P>3: LABEL 3</P>
<P>DEC REG1</P>
<P>IF REG1 > 0 GOTO 1</P>
<P>READ PROBE</P>
<P>REG0 = REG0 AND 7F</P>
<P>IF REG0 = REGB GOTO 4</P>
<P>DPY-+CNT BAD.</P>
<P>GOTO 5</P>
<P>4: LABEL 4</P>
<P>DPY-+ OK. </P>
<P>5: LABEL 5</P>
<P>DPY-+COUNT @0=@B#</P>
<P>STOP</P>
<P> </P>
<P>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!</P>
<P>! RUN UUT TEST</P>
<P>!</P>
<P>! Simply runs Unit Under Test in operating mode</P>
<P>! May require a pointer, but watchdog/reset feature of board should start</P>
<P>! the board correctly</P>
<P>!</P>
<P>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
</P>
<P>PROGRAM TSTRUN</P>
<P>DPY-RUNNING BOARD</P>
<P>RUN UUT</P>
<P>STOP</P>
<P>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!</P>
<P>! DELAY</P>
<P>!</P>
<P>! Simply runs a 1 second Delay. </P>
<P>!</P>
<P>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!</P>
<P> </P>
<P>PROGRAM DELAY</P>
<P>REG1=40 0:</P>
<P>DEC REG1</P>
<P>IF REG1 >0 GOTO 0</P></FONT></DIV></BODY></HTML>
</x-html>
Received on Thu Mar 28 20:09:02 2002
This archive was generated by hypermail 2.1.8 : Tue Dec 02 2003 - 18:40:41 EST