Re: 9010A bare bones program suggestions?

From: John Robertson <jrr_at_flippers.com>
Date: Sun Mar 03 2002 - 13:06:21 EST

<x-html>
<html>
The POKEY test is in the Asteroids_Deluxe.s script...<br><br>
John :-#)#<br><br>
At 11:11 AM 03/03/2002 -0500, Kev wrote:<br>
<blockquote type=cite class=cite cite><font size=2>Okay, I've finally
learned enough to sketch out a program outline.&nbsp; The hope is that
fellow Flukers out here can develope programs or just modules that will
be easily inserted into this outline, example a POKEY test
routine.</font><br>
&nbsp;<br>
<font size=2>Any &amp; all comments/suggestions welcomed.</font><br>
&nbsp;<br>
<font size=2>Kev</font><br>
&nbsp;<br>
&nbsp;<br>
&nbsp;<br>
&nbsp;<br>
&nbsp;<br>
<font face="courier" size=2>! BARE BONES ARCADE BOARD TESTER<br>
!&nbsp; by
<a href="mailto:Mowerman@erols.com">Mowerman@erols.com</a><br>
!<br>
! This is not a running program but an outline that can be used<br>
! to quickly create a running program for testing arcade boards.<br>
! I have created a running program from this outline and compiled<br>
! it using the RKSIC.exe program for the FLUKE 9010A.<br>
!<br>
!<br>
! PROGRAM HOUSEKEEPING VARIABLES<br>
!<br>
! *GAMENAME....replace with current game name.<br>
! *PROGRAMMER..replace with current author name.<br>
! *DATE........replace with original program date.<br>
! *MODDATE.....replace with revision date.<br>
! *REVISION....replace with revision number.<br>
! *POD.........replace with test pod required.<br>
!<br>
! BOARD SPECIFIC VARIABLES<br>
!<br>
! *RAMSTART1...replace with first RAM location.<br>
! *RAMLENGTH1..replace with size of first RAM chip location.<br>
! *ROMSTART1...replace with first ROM location.<br>
! *ROMEND1.....replace with last location of first ROM.<br>
! *ROMSIG1.....replace with Fluke Signature of first ROM.<br>
! *IO1.........replace with first I/O byte location.<br>
! *DIP1........replace with first Dip Switch byte location.</font><br>
&nbsp;<br>
&nbsp;<br>
&nbsp;<br>
<font face="courier" size=2>! *GAMENAME Test Routine<br>
! Use *POD in CPU processor socket<br>
! Program created by *PROGRAMMER<br>
! Program written on *DATE<br>
! Revision Date *MODDATE<br>
! Revision number *REVISION</font><br>
&nbsp;<br>
<font face="courier" size=2>SETUP</font><br>
&nbsp;<br>
<font face="courier" size=2>&nbsp;&nbsp; TRAP ACTIVE FORCE LINE NO<br>
&nbsp;&nbsp; TRAP ACTIVE INTERRUPT NO</font><br>
&nbsp;<br>
<font face="courier" size=2>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!<br>
! MAIN LOOP ROUTINE</font><br>
&nbsp;<br>
<font face="courier" size=2>! Proposed standard<br>
! 1 = RAM Test<br>
! 2 = ROM Test<br>
! 3 = SND Test<br>
! 4 = I/O Test<br>
! 5 = DIP Test<br>
! 6 = PROBE Test<br>
! 0 = Run UUT<br>
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
</font><br>
&nbsp;<br>
<font face="courier" size=2>PROGRAM 0&nbsp;&nbsp; <br>
&nbsp;&nbsp; DPY-*GAMENAME TST<br>
&nbsp;&nbsp; DPY-+-PRESS CONT<br>
&nbsp;&nbsp; STOP</font><br>
&nbsp;<br>
<font face="courier" size=2>MAINLOOP:<br>
&nbsp;&nbsp; DPY-MNU 1=RAM 2=ROM 3=SND 4=IO 5=DIP<br>
&nbsp;&nbsp; IF REG1 = 1 GOTO 1<br>
&nbsp;&nbsp; IF REG1 = 2 GOTO 2<br>
&nbsp;&nbsp; IF REG1 = 3 GOTO 3<br>
&nbsp;&nbsp; IF REG1 = 4 GOTO 4<br>
&nbsp;&nbsp; IF REG1 = 5 GOTO 5<br>
&nbsp;&nbsp; IF REG1 = 6 GOTO 6<br>
&nbsp;&nbsp; IF REG1 = 0 GOTO A<br>
&nbsp;&nbsp; GOTO MAINLOOP</font><br>
&nbsp;<br>
&nbsp;<br>
&nbsp;<br>
<font face="courier" size=2>1: LABEL 1<br>
&nbsp;&nbsp; EXECUTE PROGRAM TSTRAM<br>
&nbsp;&nbsp; GOTO MAINLOOP<br>
2: LABEL 2<br>
&nbsp;&nbsp; EXECUTE PROGRAM TSTROM<br>
&nbsp;&nbsp; GOTO MAINLOOP<br>
3: LABEL 3<br>
&nbsp;&nbsp; EXECUTE PROGRAM TSTSND<br>
&nbsp;&nbsp; GOTO MAINLOOP<br>
4: LABEL 4<br>
&nbsp;&nbsp; EXECUTE PROGRAM TSTIO<br>
&nbsp;&nbsp; GOTO MAINLOOP<br>
5: LABEL 5<br>
&nbsp;&nbsp; EXECUTE PROGRAM TSTDIP<br>
&nbsp;&nbsp; GOTO MAINLOOP<br>
6: LABEL 6<br>
&nbsp;&nbsp; EXECUTE PROGRAM TSTPRB<br>
&nbsp;&nbsp; GOTO MAINLOOP<br>
&nbsp; <br>
A: LABEL A<br>
&nbsp;&nbsp; EXECUTE PROGRAM TSTRUN<br>
&nbsp;&nbsp; GOTO MAINLOOP</font><br>
&nbsp;<br>
<font face="courier" size=2>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!<br>
!&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RAM TEST<br>
!<br>
! Display each (set) of RAMs as testing many Rams are 4 bit wide such
as<br>
! the common 2114s.<br>
!<br>
! RAM SHORT @ *RAMSTART1 - *RAMLENGTH1<br>
!<br>
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
</font><br>
&nbsp;<br>
<font face="courier" size=2>PROGRAM TSTRAM<br>
&nbsp;&nbsp; DPY-TESTING PGM RAM R3 M3#<br>
&nbsp;&nbsp; RAM SHORT @ 0-1FFF<br>
&nbsp;&nbsp; DPY- RAM TEST COMPLETE PRESS CONT#<br>
&nbsp;&nbsp; STOP</font><br>
&nbsp;<br>
<font face="courier" size=2><br>
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!<br>
!&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ROM TEST<br>
!<br>
! Promt for version of ROM (if needed).&nbsp; Response goes into
REG1.<br>
! REG1 used for GOTO jump to corresponding LABEL for proper test.<br>
!<br>
! Rom Test is done by removeable roms rather than blocks of memory
this<br>
! helps pinpoint the bad rom to replace.<br>
!<br>
! ROM TEST @ *ROMSTART1 - *ROMEND1 SIG *ROMSIG1<br>
!<br>
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
</font><br>
&nbsp;<br>
<font face="courier" size=2>PROGRAM TSTROM</font><br>
&nbsp;<br>
<font face="courier" size=2>0: LABEL 0<br>
&nbsp;&nbsp; DPY-ROM VERSION 1 OR 2 ? /1<br>
&nbsp;&nbsp; IF REG1 = 1 GOTO 1<br>
&nbsp;&nbsp; IF REG1 = 2 GOTO 2<br>
&nbsp;&nbsp; GOTO 0<br>
1: LABEL 1<br>
&nbsp;&nbsp; DPY-TESTING ROM F1<br>
&nbsp;&nbsp; ROM TEST @ 6800-6FFF SIG 53C9<br>
&nbsp;&nbsp; DPY-TESTING ROM D E1<br>
&nbsp;&nbsp; ROM TEST @ 7000-77FF SIG 3D7A<br>
&nbsp;&nbsp; GOTO F<br>
2: LABEL 2</font><br>
&nbsp;<br>
<font face="courier" size=2>!&nbsp; Insert Version 2 ROM test
here</font><br>
&nbsp;<br>
<font face="courier" size=2>F: LABEL F<br>
&nbsp;&nbsp; DPY-ROM TEST COMPLETE<br>
&nbsp;&nbsp; STOP</font><br>
&nbsp;<br>
<font face="courier" size=2>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!<br>
!&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SND TEST<br>
!<br>
! Sound test very dependant on game.&nbsp; Some games will have a
separate sound<br>
! processor &amp; some may be directly accessable from the main
processor.<br>
! This test is for directly accessable sound generators.<br>
!<br>
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
</font><br>
&nbsp;<br>
<font face="courier" size=2>PROGRAM TSTSND</font><br>
&nbsp;<br>
<font face="courier" size=2>&nbsp;&nbsp; REG1 = 40<br>
&nbsp;&nbsp; DPY-Rivet SND. CONT=NEXT<br>
&nbsp;&nbsp; DPY-+ SND%1#<br>
0: LABEL 0<br>
&nbsp;&nbsp; WRITE @7C00 = 05<br>
&nbsp;&nbsp; IF REG1 = 25 GOTO 1<br>
&nbsp;&nbsp; GOTO 0<br>
1: LABEL 1<br>
&nbsp;&nbsp; REG1 = 40<br>
&nbsp;&nbsp; DPY-Springs SND. CONT=NEXT SND%1#<br>
2: LABEL 2<br>
&nbsp;&nbsp; WRITE @ 7C00 = 0A<br>
&nbsp;&nbsp; IF REG1 = 25 GOTO 3<br>
&nbsp;&nbsp; GOTO 2<br>
F: LABEL F<br>
&nbsp;&nbsp; REG1 = 40<br>
&nbsp;&nbsp; DPY-SND TESTS COMPLETE. PRESS<br>
&nbsp;&nbsp; DPY-+ CONT%1#<br>
&nbsp;&nbsp; STOP</font><br>
&nbsp;<br>
<font face="courier" size=2>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!<br>
!&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; I/O TEST<br>
!<br>
! This test may be configured to test all individual inputs one at a time
or<br>
! may just be configured to display the bytewide register of
inputs.&nbsp; By<br>
! looking at bytewide inputs for Normally Open momentary inputs (buttons
/<br>
! joysticks, coins etc) you can verify none are stuck on.<br>
!<br>
! READ @ *IO1<br>
! REGE is contents of previous 9010A command, so display them.<br>
!<br>
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
</font><br>
&nbsp;<br>
<font face="courier" size=2>PROGRAM TSTIO</font><br>
&nbsp;<br>
<font face="courier" size=2>&nbsp;&nbsp; READ @ *IO1<br>
&nbsp;&nbsp; DPY-IO2 = $E PRESS CONT<br>
&nbsp;&nbsp; STOP<br>
&nbsp;&nbsp; DPY-IO TESTS COMPLETE. PRESS<br>
&nbsp;&nbsp; DPY-+ CONT%1#<br>
&nbsp;&nbsp; STOP </font><br>
&nbsp;<br>
<font face="courier" size=2>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!<br>
!&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DIP SWITCH TEST<br>
!<br>
! The DIP Test is 3 stages, a All on test, All off test, Factory
settings<br>
!<br>
! Set REGF = *DIP1 location<br>
! REGE is contents of previous 9010A command, so use it.<br>
! <br>
! I could not get it to compare to REGE so I used REG1 = REGE and
then<br>
! compared to REG1.<br>
!<br>
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
</font><br>
&nbsp;<br>
<font face="courier" size=2>PROGRAM DIPTST</font><br>
&nbsp;<br>
<font face="courier" size=2>REGF = *DIP1</font><br>
&nbsp;<br>
<font face="courier" size=2>SW1ON:<br>
&nbsp;&nbsp; DPY- TURN ALL DIPS ON AT SW1 #<br>
&nbsp;&nbsp; STOP<br>
&nbsp;&nbsp; READ @ REGF<br>
&nbsp;&nbsp; REG1 = REGE<br>
&nbsp;&nbsp; IF REG1 = FF GOTO SW1OFF<br>
&nbsp;&nbsp; DPY- ERROR SW1 OFF PRESS CONT # <br>
&nbsp;&nbsp; STOP<br>
&nbsp;&nbsp; GOTO SW1ON<br>
SW1OFF:&nbsp;&nbsp; <br>
&nbsp;&nbsp; DPY- TURN ALL DIPS OFF AT SW1 #<br>
&nbsp;&nbsp; STOP<br>
&nbsp;&nbsp; READ @REGF<br>
&nbsp;&nbsp; REG1 = REGE<br>
&nbsp;&nbsp; IF REG1 = 0 GOTO SW1FACTORY <br>
&nbsp;&nbsp; DPY- ERROR SW1 ON PRESS CONT #<br>
&nbsp;&nbsp; STOP<br>
&nbsp;&nbsp; GOTO SW1OFF<br>
SW1FACTORY:<br>
&nbsp;&nbsp; DPY- FACT SET SW1 00000001 #<br>
&nbsp;&nbsp; STOP<br>
&nbsp;&nbsp; READ @REGF<br>
&nbsp;&nbsp; REG1 = REGE<br>
&nbsp;&nbsp; IF REG1 = 80 GOTO SW2<br>
&nbsp;&nbsp; DPY- ERROR SW1 FACT PRESS CONT #<br>
&nbsp;&nbsp; STOP<br>
&nbsp;&nbsp; GOTO SW1FACTORY<br>
&nbsp;SW2:</font><br>
&nbsp;<br>
<font face="courier" size=2>! DONE</font><br>
&nbsp;<br>
<font face="courier" size=2>&nbsp; DPY-DIP TEST COMPLETE. PRESS<br>
&nbsp; DPY-+ CONT%1#<br>
&nbsp; STOP</font><br>
&nbsp;<br>
&nbsp;<br>
&nbsp;<br>
<font face="courier" size=2>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!<br>
!&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PROBE TEST<br>
!<br>
! Copied from Asteroids Test by *Sorry I don't have his name at the
moment<br>
! <br>
! The probe test is designed to excercise given signals on the board,
such<br>
! as flip, enable, select etc to aid in finding faults.<br>
!<br>
! I'm not real clear on the implementation here, basically I belive
the<br>
! program does a set number of writes to trigger a signal &amp; the probe
counts<br>
! to see if it recieves all of the triggered signals.&nbsp; I have
noticed that<br>
! it is possible to see the 'wrong' signal &amp; thus get a false
positive test.<br>
!<br>
! REG9 = *ProbeLocation1<br>
! REGB = *Number of Triggers excercised<br>
! REG0 = Number of triggers read by probe<br>
!<br>
! Improvement or use of Signatures here should be investigated.<br>
!<br>
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
</font><br>
&nbsp;<br>
<font face="courier" size=2>PROGRAM TSTPRB</font><br>
&nbsp;<br>
<font face="courier" size=2>&nbsp;&nbsp; SYNC ADDRESS<br>
&nbsp;&nbsp; DPY-PLACE PROBE ON POINTS<br>
&nbsp;&nbsp; DPY-+ SHOWN.#<br>
&nbsp;&nbsp; STOP<br>
&nbsp;&nbsp; DPY-FLIP 5J-6.#<br>
&nbsp;&nbsp; STOP<br>
&nbsp;&nbsp; REGB = 1<br>
&nbsp;&nbsp; REG9 = 7D82<br>
&nbsp;&nbsp; REGB = 40<br>
&nbsp;&nbsp; EXECUTE PROGRAM 65<br>
&nbsp;&nbsp; STOP</font><br>
&nbsp;<br>
<font face="courier" size=2>PROGRAM 65&nbsp;&nbsp; 116 BYTES</font><br>
&nbsp;<br>
<font face="courier" size=2>&nbsp;&nbsp; READ PROBE<br>
&nbsp;&nbsp; REG1 = REGB<br>
1: LABEL 1<br>
&nbsp;&nbsp; IF REG8 = 0 GOTO 2<br>
&nbsp;&nbsp; READ @ REG9<br>
&nbsp;&nbsp; GOTO 3<br>
2: LABEL 2<br>
&nbsp;&nbsp; WRITE @ REG9 = REGA<br>
3: LABEL 3<br>
&nbsp;&nbsp; DEC REG1<br>
&nbsp;&nbsp; IF REG1 &gt; 0 GOTO 1<br>
&nbsp;&nbsp; READ PROBE<br>
&nbsp;&nbsp; REG0 = REG0 AND 7F<br>
&nbsp;&nbsp; IF REG0 = REGB GOTO 4<br>
&nbsp;&nbsp; DPY-+CNT BAD.<br>
&nbsp;&nbsp; GOTO 5<br>
4: LABEL 4<br>
&nbsp;&nbsp; DPY-+ OK. <br>
5: LABEL 5<br>
&nbsp;&nbsp; DPY-+COUNT @0=@B#<br>
&nbsp;&nbsp; STOP</font><br>
&nbsp;<br>
<font face="courier" size=2><br>
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!<br>
!&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RUN UUT TEST<br>
!<br>
! Simply runs Unit Under Test in operating mode<br>
! May require a pointer, but watchdog/reset feature of board should
start<br>
! the board correctly<br>
!<br>
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
</font><br>
&nbsp;<br>
<font face="courier" size=2>PROGRAM TSTRUN</font><br>
&nbsp;<br>
<font face="courier" size=2>&nbsp;&nbsp; DPY-RUNNING BOARD<br>
RUN UUT<br>
STOP</font><br>
<blockquote type=cite class=cite cite><blockquote type=cite class=cite cite>&nbsp;</blockquote></blockquote></blockquote></html>

</x-html>
Received on Sun Mar 03 11:20:06 2002

This archive was generated by hypermail 2.1.8 : Tue Dec 02 2003 - 18:40:41 EST