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