DPY- 1-RAM 2-ROM 3-SND 4-IO 5-DIP \1 <<<--- you need the "\1" to be able to load a number into REG1. Where you put the STOP commands (after RAM/ROM, or I/O tests) the program will halt. Instead put in the GOTO MAINLOOP at the end of each test. And at the very end of this program listing use END instead of STOP...or put nothing in as RUNUUT will stop the program anyway. John :-#)# At 12:02 PM 01/03/2002 -0500, Kev wrote:
I still don't understand all the finer points of programing using the RKSIC compiler & labels.
GOTOs only work within individual programs and EXECUTE (EX) is used to jump to another program.
Having said that, the following program will compile & attempt to run but it doesn't respond to Keyboard inputs other than beep.
What did I miss?
! *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
! Donkey Kong Jr Test Routine ! Use in CPU Z80 processor socket ! Program created by MOWERMAN ! Program written on 2/28/02 ! Revision Date 2/28/02 ! Revision number 0 ! ! UNABLE TO TEST SOUND PROCESSOR 8035 ! UNABLE TO TEST VID RAM 2P 2R ! UNABLE TO TEST CHARACTER ROMS 3P 3N
SETUP
TRAP ACTIVE FORCE LINE NO TRAP ACTIVE INTERRUPT NO
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! MAIN LOOP ROUTINE
! Proposed standard ! 1 = RAM Test ! 2 = ROM Test ! 3 = SND Test ! 4 = I/O Test ! 5 = DIP Test ! 6 = PROBE Test ! 9 = Run UUT !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !
PROGRAM 0 DPY-DONKEY KONG JR TST DPY-+-PRESS CONT STOP
MAINLOOP:
DPY- 1-RAM 2-ROM 3-SND 4-IO 5-DIP 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: EX RAMTST GOTO MAINLOOP ROMTEST: EX ROMTST GOTO MAINLOOP SNDTEST: EX SNDTST GOTO MAINLOOP IOTEST: EX IOTST GOTO MAINLOOP DIPTEST: EX DIPTST GOTO MAINLOOP PRBTEST: EX PRBTST GOTO MAINLOOP RTEST: EX RUNTST GOTO MAINLOOP
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !RAM TEST
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !
PROGRAM RAMTST DPY-TESTING CPU RAM 3A 4A# RAM SHORT @ 6800-6BFF DPY-TESTING CPU RAM 3B 4B# RAM SHORT @ 6400-67FF DPY-TESTING CPU RAM 3C 4C# RAM SHORT @ 6000-63FF DPY-TESTING VID RAM 6R 6P# RAM SHORT @ 7000-77FF
DPY-+-PRESS CONT# STOP
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !ROM TEST
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !
PROGRAM ROMTST
0: LABEL 0 DPY-ROM VERSION 1 OR 2 ? /1 IF REG1 = 1 GOTO 1 IF REG1 = 2 GOTO 2 GOTO 0 2: LABEL 2
! DONKEY KONG JR ROMS 5B/5C/5E F-2 ! NOTICE THESE ROMS ARE INTERLEAVED! !
DPY-TESTING ROM 5B ROM TEST @ 0-FFF SIG 3F16 ROM TEST @ 3000-3FFF SIG 4C8F DPY-TESTING ROM 5C ROM TEST @ 1000-17FF SIG AEDA ROM TEST @ 2000-27FF SIG 49FF ROM TEST @ 4800-4FFF SIG 3FB8 ROM TEST @ 5800-5FFF SIG 734C DPY-TESTING ROM 5E ROM TEST @ 4000-47FF SIG 57D1 ROM TEST @ 2800-2FFF SIG 2799 ROM TEST @ 5000-57FF SIG 56BC ROM TEST @ 1800-1FFF SIG 8EEC
GOTO F 1: LABEL 1 F: LABEL F DPY-ROM TEST COMPLETE STOP
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !SND TEST
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !
PROGRAM SNDTST
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 3: LABEL 3 REG1 = 40 DPY-JUMP SND. CONT=NEXT DPY-+ SND%1# 4: LABEL 4 WRITE @ 7D01 = FF IF REG1 = 25 GOTO 5 GOTO 4 5: LABEL 5 REG1 = 40 DPY-STOMP SND.CONT=NEXT DPY-+ SND%1# 6: LABEL 6 WRITE @ 7D02 = FF IF REG1 = 25 GOTO 7 GOTO 6 7: LABEL 7 REG1 = 40 DPY-COIN SND. CONT= DPY-+NEXT SND%1# 8: LABEL 8 WRITE @ 7D03 = FF IF REG1 = 25 GOTO 9 GOTO 8 9: LABEL 9 REG1 = 40 DPY-PRIZE SND. CONT=NEXT DPY-+ SND%1# A: LABEL A WRITE @ 7D05 = FF IF REG1 = 25 GOTO B GOTO A B: LABEL B REG1 = 40 DPY-DEAD SND. CONT=NEXT SND%1# C: LABEL C WRITE @ 7D80 = FF IF REG1 = 25 GOTO F GOTO C F: LABEL F REG1 = 40 DPY-SND TESTS COMPLETE. PRESS DPY-+ CONT%1# STOP
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !I/O TEST
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !
PROGRAM IOTST STOP
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !DIP SWITCH TEST ! ! For the DIP Test I was imagining a All on & All off test ! Perhaps a on/off/on/off/on/off/on/off then reverse test would be better? ! ! Final setup should be factory settings? ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !
PROGRAM DIPTST
SWITCHLOOP: INC REGF INC REG2 READ @REGF IF REGE AND 1 >0 GOTO SW6KOFF GOTO SW6KON NEXTSW: IF REGE AND 2 >0 GOTO SW6JOFF GOTO SW6JON ADDTEST: IF REGF >6807 GOTO CONT GOTO SWITCHLOOP
SW6KON: DPY-# DPY-6K NUMBER $2 ON STOP GOTO NEXTSW
SW6JON: IF REGF=6807 GOTO CONT DPY-# DPY-6J NUMBER $2 ON STOP GOTO ADDTEST
SW6KOFF: DPY-# DPY-6K NUMBER $2 OFF STOP GOTO NEXTSW
SW6JOFF: IF REGF=6807 GOTO CONT DPY-# DPY-6J NUMBER $2 OFF STOP GOTO ADDTEST
CONT:
DPY-# DPY-DIP TEST COMPLETE STOP
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !PROBE TEST
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !
PROGRAM PRBTST
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
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !
PROGRAM RUNTST DPY-RUNNING BOARD RUN UUT STOP