trog/TROGDTST.ASM

3365 lines
71 KiB
NASM
Raw Permalink Blame History

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

.MLIB "TROGMACS.LIB"
.FILE 'TROGDTST.ASM'
.TITLE "TROG DIAG TEST ROUTINES"
.WIDTH 132
.OPTION B,D,L,T
.MNOLIST
**************************************************************************
* *
* COPYRIGHT (C) 1990 MIDWAY MANUFACTURING COMPANY, *
* MANUFACTURERS OF BALLY/MIDWAY AMUSEMENT GAMES. *
* ALL RIGHTS RESERVED. *
* *
**************************************************************************
.INCLUDE "MPROCEQU.ASM" ;MPROC equates
.INCLUDE "DISPEQU.ASM" ;Display processor equates
.INCLUDE "GSPINC.ASM" ;GSP assembler equates
.INCLUDE "SYSINC.ASM" ;Zunit system equates
.INCLUDE "TROGEQU.ASM"
.INCLUDE "IMGTBL.GLO"
.INCLUDE "STRING.H"
.INCLUDE "TROGSEQU.ASM"
.INCLUDE "TROGMEQU.ASM"
.INCLUDE "TROGDIP.ASM"
.INCLUDE "TROGAUDN.ASM"
**************************************************************************
* *
* DEFS AND REFS *
* *
**************************************************************************
.DEF POWERTST
.DEF DIAGCPUTEST, POWERCMOS
.DEF READ_DIP, FORCEDIP
.DEF BURNIN
.DEF CHECKDIPFREE
.IF PRINTER
.ELSE
.DEF SWITCHTEST, CONV_PLOT, DIPTEST, COLORBAR
.ENDIF
.REF CIRCLE, HVLINE, STRING, RECTANGLE, POINT, DSCRCLR
.REF STRINGCENTER
.REF SNDRES,POWERRET, INITCOLR
.REF ROM_NAME, CMOS_VAL, FAC_SET, INIT_TAB, WARMSET, PCMOSRET
.REF INIT_TB, ALL_TAB, TOD_TAB
.REF GET_HSC, INIT_HSR, VAL_TAB
.REF CMOSLOCK, CMOSUNLOCK, CPU_RET, CLSCRACH, EXEC_LP, COLOR_START
.REF DIPINIT, CLRALLPD, SINTRAM, HSINTRAM, IRQLED, EXECLED
.REF WDOGRAM
.REF WC_BYTEI, RC_BYTEI, WIPEOUT, RC_LONGI, WC_LONGI
.REF CLR_AUD, STORE_AUDIT
.REF USA_1, USA_2, USA_3, USA_4, USA_ELECTITLE
.REF GERMAN_1, GERMAN_2, GERMAN_3, GERMAN_4, GERMAN_ELECTITLE
.REF FRENCH_1, FRENCH_2, FRENCH_3, FRENCH_4, FRENCH_ELECTITLE
.REF KILL_AUD, GET_AUD
.REF WDOGDIS, WDISTAB
.REF CKTEST, MAIN_INIT
.REF INITDATA, IDATAEND, IDATALEN
.REF DIPCOINTAB, SET_COIN_ADJ
.REF GET_CSPT, PUT_ADJ
.REF BLASTMESS
.REF CLEAR_HSCOLORS
.IF PRINTER
.REF OFFTIME,PBADGUY
.ENDIF
**************************************************************************
* *
* SOME RAM FOR YOU *
* *
**************************************************************************
.BSS SWSET1,32 ; FOR SWITCH TEST
.BSS SWSET2,32
.BSS SWPREV1,32
.BSS SWPREV2,32
.BSS DIPVAL,16
.BSS FORCEDIP,16 ; FOR FORCING THE USE OF THE DIP
.BSS CERRORS,32
.BSS CPASSES,32
**************************************************************************
* *
* USEFUL MACROS *
* *
**************************************************************************
BUT_MAC $MACRO X,Y,RADIUS,COLOR,MASK,SHIFT,EXTEND
.WORD :X:
.WORD :Y:
.WORD :RADIUS:
.LONG :COLOR:
.LONG :MASK:
.WORD :SHIFT:
.WORD :EXTEND:
$END
STR_MAC $MACRO X,Y,STRING,COLOR,DIR
.WORD :X:
.WORD :Y:
.LONG :STRING:
.WORD :COLOR:
.WORD :DIR:
$END
VECMAC $MACRO COLOR,X1,Y1,X2,Y2
.WORD :COLOR:
.WORD :X1:
.WORD :Y1:
.WORD :X2:
.WORD :Y2:
$END
DOTMAC $MACRO COLOR,X,Y
.WORD :COLOR:
.WORD :X:
.WORD :Y:
$END
RECTMAC $MACRO COLOR,X,Y,W,H
.WORD :W:
.WORD :H:
.WORD :X:
.WORD :Y:
.WORD :COLOR:
$END
CHIPMAC $MACRO NUM,X1,Y1,X2,Y2,X3,Y3,STRING,DIR,X4,Y4,STUFFED
.WORD :NUM:
.WORD :X1:
.WORD :Y1:
.WORD :X2:
.WORD :Y2:
.WORD :X3:
.WORD :Y3:
.LONG :STRING:
.WORD :DIR:
.WORD :X4:
.WORD :Y4:
.WORD :STUFFED:
$END
CMNUM EQU 0
CMLOC EQU CMNUM+16
CMXLOC EQU CMLOC
CMYLOC EQU CMLOC+16
CMSIZE EQU CMLOC+32
CMXSIZE EQU CMSIZE
CMYSIZE EQU CMSIZE+16
CMOFFSET EQU CMSIZE+32
CMSTRING EQU CMOFFSET+32
CMDIR EQU CMSTRING+32
CMPINLOC EQU CMDIR+16
CMSTUFFED EQU CMPINLOC+32
CMEND EQU CMSTUFFED+16
**************************************************************************
* *
* RAM_CHIP: MACRO DEFINES A RAM CHIP RECORD. *
* *
* CHIP_NO -- CHIP NUMBER *
* WIDTH -- CHIP CELL SIZE IN BITS (MUST BE > 0) *
* INTERLEAVE -- DISTANCE BETWEEN ADJACENT CELLS ON CHIP (IN BITS) *
* START_ADDR -- ADDRESS OF FIRST CELL ON CHIP *
* END_ADDR -- ADDRESS OF LAST CELL ON CHIP *
* *
**************************************************************************
RAM_CHIP $MACRO TAB_LINK,CHIP_NO, WIDTH, INTERLEAVE, START_ADDR, END_ADDR
.WORD :WIDTH:
.WORD :INTERLEAVE:
.WORD :CHIP_NO:
.LONG :START_ADDR:
.LONG :END_ADDR:
.LONG :TAB_LINK:
$END
RAM_WDTH EQU 000H ; OFFSETS INTO RAM CHIP RECORD
RAM_ITLV EQU 010H
RAM_NMBR EQU 020H
RAM_SADR EQU 030H
RAM_EADR EQU 050H
RAM_LINK EQU 070H
RAM_SIZE EQU 090H
ROM_CKSM EQU 000H
ROM_WDTH EQU 010H ; OFFSETS INTO ROM CHIP RECORD
ROM_ITLV EQU 020H
ROM_NMBR EQU 030H
ROM_SADR EQU 040H
ROM_EADR EQU 060H
ROM_LINK EQU 080H
ROM_SIZE EQU 0A0H
;****************************************************************************
;* ROM_CHIP: MACRO DEFINES A ROM CHIP RECORD. *
;* *
;* CHIP_NO -- CHIP NUMBER *
;* WIDTH -- CHIP CELL SIZE IN BITS (MUST BE > 0) *
;* INTERLEAVE -- DISTANCE BETWEEN ADJACENT CELLS ON CHIP (IN BITS) *
;* START_ADDR -- ADDRESS OF FIRST CELL ON CHIP *
;* END_ADDR -- ADDRESS OF LAST CELL ON CHIP *
;* CHECK_SUM -- DATAIO CHECK SUM FOR CHIP *
;****************************************************************************
ROM_CHIP $MACRO TAB_LINK,CHIP_NO, WIDTH, INTERLEAVE, START_ADDR, END_ADDR, CHECK_SUM
.WORD :CHECK_SUM:
.WORD :WIDTH:
.WORD :INTERLEAVE:
.WORD :CHIP_NO:
.LONG :START_ADDR:
.LONG :END_ADDR:
.LONG :TAB_LINK:
$END
RANDOM_SEED EQU 5A5A5A5Ah ; RAM TESTS: PSEUDO-RANDOM SEQUENCE
ZERO_EXTEND EQU 1Fh ; PARAMETERS
SIGN_EXTEND EQU 20h
PAL_SELECT EQU 0FFDCH ; ENABLE VIDEO PALETTE MAP ACCESS
.TEXT
.EVEN
**************************************************************************
* *
* POWERCMOS *
* *
* CHECK THE CMOS AND DO A LOT OF OTHER STUFF -- SHOW THE *
* POWER UP MESSAGES *
* *
* ENTRY *
* NOTHING *
* *
* EXIT *
* NOTHING *
* *
**************************************************************************
POWERCMOS:
DINT
MOVI SYSCINIT,A1
MOVE A1,@SYSCOPY,W
MOVE A1,@SYSCTRL,W
CALLA WDOGDIS ; GET RID OF WATCH DOG
CLR A13 ; USED TO DECIDE WHETHER PAUSE OR NOT
FCALL INITCOLR,B5 ; FIX UP THE COLORS
FCALL DSCRCLR,B6 ; MAKE SURE OF SCREEN
MOVI ROM_NAME,A0
FCALL STRINGCENTER,B6 ; GET WIDTH OF STRING
ADDI [30,0],A1
CLR A2
MOVI TROG_YELLOW,A3
FCALL STRING,B6
CALLA CMOS_VAL ; CHECKSUM AUDITS/ADJUSTMENTS
JREQ CMOSOK
CALLA FAC_SET ; BUMMER, BABY! RESET TO FACTORY
CALLA BLASTMESS
CALLA CLR_AUD
MOVI ALL_TAB,A8 ; ALWAYS CLEAR OUT TODAYS TABLE
CALLA INIT_TB
MOVI TOD_TAB,A8
CALLA INIT_TB
CALLA INIT_HSR ; RE-SET THE HIGH SCORE RESET COUNTER
MOVK 1,A13 ; FLAG ERROR
CALLA CMOS_VAL ; TRY AGAIN
JREQ CMOSB1
MOVI CMOS_BAD,A0
FCALL STRINGCENTER,B6
ADDI [50,0],A1
CLR A2
MOVI TROG_RED,A3
FCALL STRING,B6
MOVI CMOS_UNFAC,A0
FCALL STRINGCENTER,B6
ADDI [65,0],A1
CLR A2
MOVI TROG_RED,A3
FCALL STRING,B6
JRUC CMOS1
CMOSB1
MOVI CMOS_FACRES,A0
FCALL STRINGCENTER,B6
ADDI [50,0],A1
CLR A2
MOVI TROG_RED,A3
FCALL STRING,B6
JRUC CMOS1
CMOSOK
MOVI CMOS_OK,A0
FCALL STRINGCENTER,B6
ADDI [50,0],A1
CLR A2
MOVI TROG_GREEN,A3
FCALL STRING,B6
CMOS1
MOVI AUDONTIME,A0
.IF PRINTER
CALLA GET_AUD
MOVE A1,@OFFTIME,L ; SAVE THE LAST POWER TIME STUFF
.ENDIF
CLR A1
CALLA STORE_AUDIT
MOVI TOD_TAB,A8
CALLA INIT_TB ; LATER, ON TODAY'S TABLE
MOVI TOD_TAB,A8 ; OK, VALIDATE IT
CLR A2 ; FOR RECURSION
CALLA VAL_TAB
JRNC CTAGO
MOVK 1,A13 ; FLAG ERROR
MOVI CMOS_TBAD,A0
FCALL STRINGCENTER,B6
ADDI [77,0],A1
CLR A2
MOVI TROG_RED,A3
FCALL STRING,B6
CTAGO
MOVI ALL_TAB,A8
CALLA VAL_TAB ; VALIDATE THE ALLTIME TABLE
JRNC CTA1
MOVK 1,A13 ; FLAG ERROR
MOVI CMOS_ABAD,A0
FCALL STRINGCENTER,B6
ADDI [89,0],A1
CLR A2
MOVI TROG_RED,A3
FCALL STRING,B6
JRUC CMOS2
CTA1
CALLA CLEAR_HSCOLORS ; WIPE OUT ALL THE COLORATION
MOVE A2,A2
JRNZ CTA2 ; IT GOT INITIALIZED
CALLA GET_HSC ; GET HIGHSCORE COUNTER
JRNZ CMOS2 ; BR = NOT TIME YET
MOVI ADJHSRES,A0 ; GET ADJUSTED VALUE
CALLA GET_ADJ
JRZ CMOS2 ; TURNED OFF, NOTHING TO DO
MOVI ALL_TAB,A8
CALLA INIT_TB ; LATER ON ALLTIME TABLE
CTA2
MOVI CMOS_ALL,A0
FCALL STRINGCENTER,B6
ADDI [90,0],A1
CLR A2
MOVI TROG_GREEN,A3
FCALL STRING,B6
CALLA INIT_HSR ; RESET THE HIGHSCORE COUNTER
;
; BY HERE, THE CMOS SHOULD BE FIXED UP AS GOOD AS POSSIBLE -- NOTE
; THAT IF CMOS IS BUSTED, THE GUY IS FUCKED FOR COINAGE
;
; WITH SOME THOUGHT THAT MIGHT BE FIXABLE
;
CMOS2
CALLR READ_DIP
ANDI DPUSECMOS,A0
JRNZ CMOS3 ; BR = NOT USING CMOS COINAGE
MOVI CMOS_DIP,A0
FCALL STRINGCENTER,B6
ADDI [110,0],A1
CLR A2
MOVI TROG_WHITE,A3
FCALL STRING,B6
CALLR READ_DIP
MOVE A0,A2
ANDI DPCOUNTRY,A0
SRL 3,A0
ADDI DIPCOINTAB,A0
MOVE *A0,A1,L ; POINTER TO RIGHT COIN TABLE
ANDI DPCOINAGE,A2
CMPI DPCOINAGE,A2 ; CHECK FOR FREEPLAY
JRZ CMOS21
SLL 2,A2
ADD A2,A1
MOVE *A1,A1,W ; WHICH COIN TABLE TO USE
MOVI ADJPRICE,A0 ; MASTER PRICING
CALLA PUT_ADJ ; STUFF IT IN CMOS
MOVI ADJFREPL,A0
CLR A1 ; MAKE SURE NO FREEPLAY
CALLA PUT_ADJ
CMOS20
CALLA GET_CSPT
CALLA SET_COIN_ADJ ; SET THE ADJUSTMENTS UP IN CMOS
JRUC CMOS4
CMOS21
MOVI ADJFREPL,A0
MOVK 1,A1 ; FREEPLAY, DUDE!
CALLA PUT_ADJ
JRUC CMOS20
CMOS3
;
; NOT USING CMOS HERE
;
MOVI CMOS_CMOS,A0
FCALL STRINGCENTER,B6
ADDI [110,0],A1
CLR A2
MOVI TROG_WHITE,A3
FCALL STRING,B6
CMOS4
; CALLR PLOTCOINAGE ; PLOT SOME COINAGE
MOVE @SWITCH,A0,L ; CHECK SLAM SWITCH
NOT A0
ANDI 00080000H,A0
JRZ CMOSRET
MOVI CMOS_TILT,A0
FCALL STRINGCENTER,B6
ADDI [205,0],A1
CLR A2
MOVI TROG_RED,A3
FCALL STRING,B6
MOVK 1,A13 ; FLAG ERROR
CMOSRET
MOVE A13,A13
JRZ CTMP0
MOVI 0FD43H,A0
MOVE A0,@SOUND,W
MOVI 0FF43H,A0
MOVE A0,@SOUND,W ; LET HIM HEAR IT
MOVI CMOS_WAIT,A0
FCALL STRINGCENTER,B6
ADDI [230,0],A1
CLR A2
MOVI TROG_RED,A3
FCALL STRING,B6
CALLA WDOGDIS ; DISABLE WOOF WOOF
MOVE @SWITCH,A0,L ; HANGOUT FOR A WHILE
ANDI 86241010H,A0
MOVE A0,@SWSET1,L
MOVE @SWITCH+32,A0,L
ANDI 10H,A0
MOVE A0,@SWSET2,L
CTMP1
MOVE @SWITCH,A0,L ; GOTTA SEE IF TIME TO LEAVE
MOVE @SWSET1,A1,L
ANDI 86241010H,A0
CMP A0,A1
JRNZ CTMP2
MOVE @SWITCH+32,A0,L
MOVE @SWSET2,A1,L
ANDI 10H,A0
CMP A0,A1
JRZ CTMP1
JRUC CTMP2
CTMP0
PAUSE 200000H,B6
CTMP2
JAUC PCMOSRET
CMOS_TILT
.STRING "WARNING -- SLAM SWITCH CLOSED",0
.EVEN
CMOS_DIP
.STRING "USING DIPSWITCH COINAGE",0
.EVEN
CMOS_CMOS
.STRING "USING CMOS COINAGE",0
.EVEN
CMOS_WAIT
.STRING "ERRORS DETECTED -- ANY BUTTON TO CONTINUE",0
.EVEN
CMOS_FACRES
.STRING "CMOS INVALID -- FACTORY SETTINGS RESTORED",0
.EVEN
CMOS_BAD
.STRING "CMOS CHIP U49 BAD",0
.EVEN
CMOS_UNFAC
.STRING "UNABLE TO RESTORE FACTORY SETTINGS",0
.EVEN
CMOS_OK
.STRING "CMOS OK",0
.EVEN
CMOS_ALL
.STRING "TOP TROGS RESET",0
.EVEN
CMOS_ABAD
.STRING "UNABLE TO RESET ALLTIME HIGHSCORE TABLE",0
.EVEN
CMOS_TBAD
.STRING "UNABLE TO RESET DAILY HIGHSCORE TABLE",0
.EVEN
**************************************************************************
* *
* PLOTCOINAGE *
* *
* PLOT OUT THE CURRENT COINAGE ON THE SCREEN *
* *
* ENTRY *
* NOTHING *
* *
* EXIT *
* NOTHING *
* *
**************************************************************************
PLOTCOINAGE:
.IF PRINTER
RETS
.ELSE
MOVI ADJFREPL,A0
CALLA GET_ADJ
JRNZ PCFREE
PC1
MOVI ADJPRICE,A0
CALLA GET_ADJ ; GET THE CURRENT PRICING
CALLA GET_CSPT
MOVE *A6(CS_LIST),A7,L
JRZ PCNOHEAD ; NO HEADER, BELIEVE IT OR NOT
MOVI [130,0],A8 ; BASE ADDRESS FOR STRING
PCNEXTHEAD
MOVE *A7+,A0,L ; PICKUP THE NEXT POINTER
JRZ PCNOHEAD
FCALL STRINGCENTER,B6
ADD A8,A1
CLR A2
MOVI TROG_YELLOW,A3
FCALL STRING,B6
ADDI [12,0],A8 ; MOVE DOWN A LINE
JRUC PCNEXTHEAD
JRUC PCNOHEAD
PCFREE
MOVI DUCOIN7,A0
FCALL STRINGCENTER,B6
ADDI [130,0],A1
CLR A2
MOVI TROG_YELLOW,A3
FCALL STRING,B6
PCNOHEAD
RETS
.ENDIF
**************************************************************************
* *
* *
* CPU TESTING ROUTINES *
* *
* *
**************************************************************************
**************************************************************************
* *
* BURNIN *
* *
* FACTORY BURNIN TEST -- EXITS BY RESETING THE GAME *
* *
* ENTRY *
* NOTHING *
* *
* EXIT *
* NOTHING *
* *
* CALL *
* JAUC *
* *
**************************************************************************
BURNIN:
CALLA WDOGDIS ; LATER ON WOOF WOOF
DINT
MOVI AUDAUTO,A0 ; ZERO OUT BURNIN AUDIT
CALLA KILL_AUD
BURNLOOP
FCALL CPUTEST,SP
BURNSP:
SETF 16,1,0
SETF 32,1,1
MOVI STCKST,SP,L ; MIGHT HELP TO RESTORE THE STACK PTR
MOVI AUDAUTO,A0
CALLA AUD1 ; ANOTHER ONE WORKED
JRUC BURNLOOP
**************************************************************************
* *
* DIAGCPUTEST *
* *
* DIAGNOSTIC CALL FOR THE CPU TEST *
* *
* ENTRY *
* NOTHING *
* *
* EXIT *
* JUMPS TO *EXEC_LP* AFTER SETTING EVERYTHING UP *
* *
* CALL *
* JAUC *
* *
**************************************************************************
DIAGCPUTEST:
CALLA WDOGDIS
DINT
FCALL CPUTEST,SP
DIAGSP:
;
SETF 16,1,0 ; WORD NO SIGN EXTEND
SETF 32,1,1 ; LONG WORD
MOVI STCKST,SP,L
CALLA CLSCRACH
MOVI SYSCINIT,A0
MOVE A0,@SYSCOPY,W
MOVE A0,@SYSCTRL,W ; GET EVERYBODY HAPPY
CALLA MAIN_INIT
CALLA COLOR_START ;FIRE UP THE COLORS
EINT ; ENABLE INTERRUPTS AND WE'RE OFF
DISPON ; ENABLE THE DISPLAY SYSTEM
CREATE DIAG_PID,CPU_RET
MOVI INDIAG,A0
MOVE A0,@GAME_STATE,W
JAUC EXEC_LP
**************************************************************************
* *
* POWERCPUTEST *
* *
* CHECK OUT THE CPU ON POWER ON *
* *
* ENTRY *
* NOTHING *
* *
* EXIT *
* JUMPS TO *PONTEST* *
* *
* CALL *
* JAUC *
* *
**************************************************************************
POWERCPUTEST:
DINT
.IF YUNIT
MOVE @DIPSWITCH,A0,L ; CHECK FOR POWER ON BYPASS
NOT A0
ANDI 2000H,A0
JANZ PONTEST
.ELSE
JAUC PONTEST
.ENDIF
FCALL CPUTEST,SP
JAUC PONTEST
**************************************************************************
* *
* CPUTEST *
* *
* THE ACTUAL CPU TEST STUFF *
* *
* ENTRY *
* SP RETURN ADDRESS *
* *
* EXIT *
* WHO KNOWS *
* *
* CALL *
* FCALL CPUTEST,SP *
* *
**************************************************************************
CPUTEST:
CLR B0
MOVI 0FFFCH,A13
MOVE A13,@SYSCTRL,W ; MAKE SURE VIDEO PALETTE DISABLED
MOVI VRAMCHIPS, A14 ; VERIFY COLOR/VIDEO RAMS
FCALL RAMCHECK, B5
; ENABLE VIDEO PALETTE MAP ACCESS
MOVI PAL_SELECT, A13
MOVE A13,@SYSCTRL,W
MOVI PALCHIPS, A14 ; VERIFY VIDEO PALETTE MAP RAMS
FCALL RAMCHECK, B5
MOVE B0,A12
; DISABLE VIDEO PALETTE MAP ACCESS
MOVI 0FFFCH,A13
MOVE A13,@SYSCTRL,W
FCALL INITCOLR, B5 ; DISPLAY CPU BOARD
FCALL DSCRCLR,B6
FCALL CPUDRAW,B5
MOVI CPU,A10 ; WE GOT THIS FAR, CPU MUST BE OK
MOVI 1,A11
FCALL CHIPOUT,B5
MOVI VRAMTAB,A9
FCALL CHIPTABLE,B5 ; PLOT OUT THE CHIP TABLE
MOVE A12,A12
JRZ PDMACK
PBADRAM
MOVI RAMBADMESS,A0
MOVI [128,130],A1
CLR A2
MOVI TROG_RED,A3
FCALL STRING,B6
JRUC PCPUBAD
PDMACK
MOVI DMACMESS,A0
MOVI [128,130],A1
CLR A2
MOVI TROG_YELLOW,A3
FCALL STRING,B6
FCALL DMACHECK,B5 ; CHECK THE DMA
MOVI DMA,A10
MOVE A0,A11
MOVE A0,A12
INC A11 ; GREEN/RED
FCALL CHIPOUT,B5
MOVI [128,130],A0
MOVI [10,260],A1
MOVI TROG_BLACK,A2
FCALL RECTANGLE,B6
MOVE A12,A12
JRZ PSRAMCK
MOVI DMABADMESS,A0
MOVI [128,130],A1
CLR A2
MOVI TROG_RED,A3
FCALL STRING,B6
JRUC PCPUBAD
PSRAMCK
MOVI SRAMCHECK,A0
MOVI [128,130],A1
CLR A2
MOVI TROG_YELLOW,A3
FCALL STRING,B6
CLR B0
MOVI SRAMCHIPS,A14 ; VERIFY SCRATCH RAMS
FCALL RAMCHECK, B5
MOVE B0,A12
MOVI [128,130],A0
MOVI [10,260],A1
MOVI TROG_BLACK,A2
FCALL RECTANGLE,B6
MOVE A12,A12
JRNZ PBADRAM
PROMCK
MOVI ROMCMESS,A0
MOVI [128,130],A1
CLR A2
MOVI TROG_YELLOW,A3
FCALL STRING,B6
CLR B0
MOVI PROMCHIPS,A14
FCALL ROMCHECK,B5
MOVE B0,B0
; JRNZ PBADROM ; FOR NOW, WOOF WOOF
CLR B0 ; CHECK ROMS
MOVI IROMCHIPS,A14
FCALL ROMCHECK,B5
MOVE B0,A12
MOVI [128,130],A0
MOVI [10,260],A1
MOVI TROG_BLACK,A2
FCALL RECTANGLE,B6
MOVE A12,A12
JRZ PCPUGOOD
PBADROM
MOVI [128,130],A0
MOVI [10,260],A1
MOVI TROG_BLACK,A2
FCALL RECTANGLE,B6
MOVI ROMBADMESS,A0
MOVI [128,130],A1
CLR A2
MOVI TROG_RED,A3
FCALL STRING,B6
PCPUBAD
MOVI CPUPAUSE,A0
MOVI [143,130],A1
CLR A2
MOVI TROG_RED,A3
FCALL STRING,B6
PCPUWAIT
MOVI 0FD43H,A0
MOVE A0,@SOUND,W
MOVI 0FF43H,A0
MOVE A0,@SOUND,W ; LET HIM HEAR IT
MOVE A13,B5
PAUSE 10000,B6
MOVE @SWITCH,A0,L
ANDI 86241010H,A0
MOVE A0,@SWSET1,L
MOVE @SWITCH+32,A0,L
ANDI 10H,A0
MOVE A0,@SWSET2,L
MOVI -1,B0 ; ASSUME DON'T TIMEOUT
CMPI DIAGSP,SP
JRZ PCPUTMP1
CMPI BURNSP,SP
JRZ PCPUTMP1
MOVI 200000H,B0
PCPUTMP1
MOVE B0,B0
JRN PCPUNOTIMEOUT
DEC B0
JRZ PCPURET ; TIMEOUT HERE
PCPUNOTIMEOUT
MOVE @SWITCH,A0,L ; GOTTA SEE IF TIME TO LEAVE
MOVE @SWSET1,A1,L
ANDI 86241010H,A0
CMP A0,A1
JRNZ PCPURET
MOVE @SWITCH+32,A0,L
ANDI 10H,A0
MOVE @SWSET2,A1,L
CMP A0,A1
JRNZ PCPURET
JRUC PCPUTMP1
PCPUGOOD
CLR A0
JRUC PCPUREALRET
PCPURET
MOVK 1,A0
PCPUREALRET
MOVE A0,A0
FRET SP
DMACMESS
.STRING "CHECKING CUSTOM",0
.EVEN
DMABADMESS
.STRING "CUSTOM CHIP U99 BAD",0
.EVEN
ROMCMESS
.STRING "CHECKING ROMS",0
.EVEN
ROMBADMESS
.STRING "ROM CHIPS BAD",0
.EVEN
RAMBADMESS
.STRING "RAM CHIPS BAD",0
.EVEN
CPUGOOD
.STRING "CPU BOARD OK",0
.EVEN
CPUWAIT1
CPUPAUSE
.STRING "PRESS ANY BUTTON",0
.EVEN
**************************************************************************
* *
* CPUDRAW *
* *
* PLOT THE CPU BOARD AND DRAW ALL THE CHIPS *
* *
* ENTRY *
* B5 RETURN ADDRESS *
* *
* EXIT *
* NOTHING *
* *
**************************************************************************
CPUDRAW:
MOVI CPU_VECS,A9 ; POINT AT VECTOR TABLE
CPUDLP1
MOVE *A9+,A2,W ; GET COLOR
JRZ CPUD1
MOVE *A9+,A0,L ; START POINT
MOVE *A9+,A1,L ; END POINT
FCALL HVLINE,B6
JRUC CPUDLP1
CPUD1
MOVE B5,A13
FCALL CHIPPLOT,B5 ; PLOT ALL THE CHIPS
MOVI BOARDSTRING,A0
MOVI [25,11],A1
CLR A2
MOVI TROG_WHITE,A3
FCALL STRING,B6
MOVI BOARDSTRING2,A0
MOVI [37,13],A1
FCALL STRING,B6
MOVE A13,B5
FRET B5
BOARDSTRING
.STRING "C-13234-40003",0
.EVEN
BOARDSTRING2
.STRING " TROG",0
.EVEN
**************************************************************************
* *
* CHIPTABLE *
* *
* UPDATE A LIST OF CHIPS, BASED ON THEIR VALUES IN A12 *
* *
* ENTRY *
* A9 POINTER TO TABLE *
* A12 LIST OF ON/OFF BITS *
* B5 RETURN ADDRESS *
* *
* EXIT *
* NOTHING *
* *
**************************************************************************
CHIPTABLE:
MOVE B5,A14
CTABLOOP
MOVE *A9+,A10,L ; GET POINTER TO CHIP RECORD
JRZ CTABDONE
MOVK 1,A11
MOVE *A10(CMNUM),A0,W ; GET THE BIT NUMBER
BTST A0,A12 ; CHECK BIT NUMBER
JRZ CTABL2
MOVK 2,A11
CTABL2
FCALL CHIPOUT,B5
JRUC CTABLOOP
CTABDONE
MOVE A14,B5
FRET B5
**************************************************************************
* *
* CHIPPLOT *
* *
* PLOT OUT THE CHIP LIST *
* *
* ENTRY *
* B5 RET VALUE *
* *
* EXIT *
* NOTHING *
**************************************************************************
CHIPPLOT:
MOVE B5,A14
MOVI CPU_CHIPS,A10
CPPLOTLOOP
CLR A11
MOVE *A10,A0,L
JRZ CPPLOTDONE
FCALL CHIPOUT,B5
ADDI CMEND,A10
JRUC CPPLOTLOOP
CPPLOTDONE
MOVE A14,B5
FRET B5
**************************************************************************
* *
* CHIPOUT *
* *
* ACTUALLY PLOT THE CHIP *
* *
* ENTRY *
* A10 POINTS TO CHIP TO PLOT *
* A11 COLOR OF CHIP *
* 00 = OUTLINE *
* 01 = GREEN *
* 02 = RED *
* 03 = GREY *
* *
* EXIT *
* A10 IS INTACT *
* *
**************************************************************************
CHIPOUT:
MOVE *A10(CMLOC),A5,L ; CHIP OUTLINE
MOVE A5,A6
MOVE A5,A7
MOVE A5,A8
MOVE *A10(CMXSIZE),A0,W
ADD A0,A6
ADD A0,A7
MOVE *A10(CMYSIZE),A0,W
SLL 16,A0
ADD A0,A7
ADD A0,A8
MOVE A5,A0
MOVE A6,A1
MOVI TROG_WHITE,A2
FCALL HVLINE,B6
MOVE A6,A0
MOVE A7,A1
MOVI TROG_WHITE,A2
FCALL HVLINE,B6
MOVE A8,A0
MOVE A7,A1
MOVI TROG_WHITE,A2
FCALL HVLINE,B6
MOVE A5,A0
MOVE A8,A1
MOVI TROG_WHITE,A2
FCALL HVLINE,B6
;
MOVE *A10(CMSTUFFED),A0,W ; CHECK FOR STUFFED
JRNZ CONOSTUF
MOVK 3,A11 ; WANT IT GREY, DUDE
CONOSTUF
MOVE A11,A11 ; CHECK FOR FILLING THE CHIP
JRZ CONOFILL
MOVE *A10(CMLOC),A0,L
ADDI 00010001H,A0
MOVE *A10(CMSIZE),A1,L
SUBI 00010001H,A1 ; GET INTERNAL AREA
MOVE A11,A2
SLL 4,A2
ADDI CHIPCOLORS,A2
MOVE *A2,A2,W ; GET ME A COLOR
FCALL RECTANGLE,B6
CONOFILL
MOVE *A10(CMPINLOC),A1,L ; PIN LOCATION
MOVE A5,A0
ADD A1,A0
MOVI TROG_WHITE,A1
FCALL POINT,B6
MOVE *A10(CMSTRING),A0,L ; CHIP TEXT
MOVE A5,A1
MOVE *A10(CMOFFSET),A2,L
ADD A2,A1
MOVE *A10(CMDIR),A2,W
MOVI TROG_BLACK,A3
MOVE A11,A11 ; CHECK FOR COLOR
JRNZ COBLACK
MOVI TROG_WHITE,A3
COBLACK
FCALL STRING,B6
FRET B5
CHIPCOLORS:
.WORD TROG_BLACK
.WORD TROG_GREEN
.WORD TROG_RED
.WORD TROG_GREY
**************************************************************************
* *
* DMACHECK *
* *
* CHECK THE DMA OUT *
* *
* ENTRY *
* B5 RETURN ADDRESS *
* *
* EXIT *
* A0 DMA STATUS *
* 0 = GOOD *
* 1 = BAD *
* *
**************************************************************************
DMACHECK
MOVI [1,448],A14,L ; BLOW OUT TRADEMARK
MOVE A14,@DMAHSIZE,1
CLR A14
MOVE A14,@DMAOFFST ; OFFSET
MOVE A14,@DMACONST,0 ; CONSTANT
MOVE A14,@DMAHORIZ,1 ; CLEAR DESTINATION ADDRESS
MOVI 2000000H,A14
MOVE A14,@DMASAGL,1
MOVI 257,A14
MOVE A14,@DMAVERT,W ; NEAT NEW VERTICAL ADDRESS
.IF YUNIT
MOVI 5050H,A14
.ELSE
MOVI 0505H,A14
.ENDIF
MOVE A14, @DMACMAP, 0
; MOVI 8042H, A14
MOVI 8003H,A14 ; USE IMAGE ROM - WRITE ALWAYS
MOVE A14, @DMACTRL, 0
MOVI 7FFFH,A14
DMACWAIT
MOVE @DMACTRL,A0,W ;DMA BUSY?
JRNN DMADONE
DSJS A14,DMACWAIT
JRUC DMACBAD ; DMA TIMED OUT
DMADONE
CLR A0 ; GET BACK TO A REAL PALETTE
MOVE A0, @DMACMAP, 0
MOVI 0101000H,A0 ; LOCATION
MOVI 2000000H,A1 ; DMA LOGO LOCATION
MOVI 448,A2 ; NUMBER OF BYTES TO COMPARE
DMACLOOP
MOVB *A0,A3
ANDI 0FH,A3 ; MASK, SINCE IT IS 4 BITS, DUDE!
MOVB *A1,A4
ANDI 0FH,A4 ; WELL, WE KNOW WHAT IT SHOULD BE, BUT...
ADDK 8,A0
ADDK 8,A1
CMP A3,A4
JRNZ DMACBAD
DSJS A2,DMACLOOP
;
; NOW CHECK OUT THE PALETTE END OF THINGS
;
MOVI PAL_SELECT, A13
MOVE A13,@SYSCTRL,W ; ENABLE PALETTE
MOVI 0101000H,A0 ; LOCATION
MOVI 224,A2 ; NUMBER OF BYTES TO COMPARE
DMACLOOP2
MOVE *A0+,A3,W
.IF YUNIT
ANDI 0F0F0H,A3
CMPI 5050H,A3
.ELSE
CMPI 0505H,A3
.ENDIF
JRNZ DMACBAD
DSJS A2,DMACLOOP2
CLR A0
JRUC DMACRET
DMACBAD
MOVK 1,A0
DMACRET
MOVI 0FFFCH,A13
MOVE A13,@SYSCTRL,W
MOVE A0,A0
FRET B5
**************************************************************************
* *
* POWERTST *
* *
* POWERUP SELF TEST ROUTINES *
* *
* ENTRY *
* NOTHING *
* *
* EXIT *
* NOTHING *
* *
**************************************************************************
POWERTST
DINT
SETF 16, 0, 0
SETF 32, 0, 1
MOVI STCKST,SP,L
; HALT DMA AND ENABLE CACHE
CLR A14
MOVE A14, @DMACTRL
MOVE A14, @CONTROL
.IF 0
; RESET SOUND BOARD
MOVI 0FB00H, A14
MOVE A14, @SOUND_BOARD
CLR A14
NOT A14
MOVE A14, @SOUND_BOARD
.ENDIF
; DISABLE VIDEO PALETTE RAMS, AUTOERASE AND ERROR LED
MOVI 0FFFCH,A13
MOVE A13,@SYSCTRL,W
; DISABLE WATCH DOG
SETF 16,1,0 ;SIGN EXTENSION ON FOR THIS
MOVI WDISTAB,A1
MOVK 1,A3
MOVI 0FFFCH,A2
MOVE *A1+,A0,W
WDOGSL
OR A2,A0
MOVE A0,@SYSCTRL,W
XOR A3,A0
MOVE A0,@SYSCTRL,W
MOVE *A1+,A0,W
JRNN WDOGSL
SETF 16,0,0 ;BACK OFF FOR BEGLEMAN SHIT
; INITIALIZE IO REGISTERS
MOVI HESYNC,B2,L
MOVI INITDATA,B0,L
; MOVI (IDATAEND-INITDATA)/16,B10
MOVI IDATALEN,B10
INITIOS:
MOVE *B0+,*B2+
DSJS B10,INITIOS
JRUC POWERCPUTEST
PONTEST
; MOVI 0FFFBH,A0
MOVI SYSCINIT,A0
MOVE A0,@SYSCOPY,W
MOVE A0,@SYSCTRL,W
JAUC POWERRET
**************************************************************************
* *
* RAMCHECK *
* *
* CHECK A BANK OF RAM, GIVEN A STARTING TABLE ADDRESS *
* *
* ENTRY *
* A14 POINTER TO RAM TABLE *
* B5 RETURN ADDRESS *
* *
* EXIT *
* B0 LIST OF ERRORS *
* *
**************************************************************************
RAMCHECK:
SETF 16, 0, 0
SETF 32, 0, 1
; SNAG NEXT CHIP RECORD
RAMLOOP:
CLR B2
MOVE *A14(RAM_SADR),A12,L ; STARTING ADDRESS
MOVE *A14(RAM_EADR),A13,L ; ENDING ADDRESS
MOVE *A14(RAM_ITLV),A11,W ; INTERLEAVE
MOVE *A14(RAM_WDTH),A10,W ; WIDTH
; CELL COUNT
SUB A12, A13 ; (END-START)/INTERLEAVE+1
DIVU A11, A13
INC A13
; SET FIELD SIZES
MOVE A11, A9 ; FS1 = INTERLEAVE
ANDI ZERO_EXTEND, A9
EXGF A9, 1
MOVE A10, A9 ; FS0 = WIDTH
ANDI ZERO_EXTEND, A9
EXGF A9, 0
; FILL IN ASCENDING ORDER
MOVE A13, A9 ; XEROX COUNT
MOVE A12, A8 ; XEROX START
MOVI RANDOM_SEED, A7, L
CLR A5
RAC1: SLA 1, A7 ; GENERATE A PSEUDO
JRV RAC2 ; RANDOM NUMBER
ORI 2, A7
RAC2: MOVE A7, A6
ADDC A5, A6
MOVE A6, *A8+, 1 ; WRITE
DSJS A9, RAC1
; READBACK IN ASCENDING ORDER
MOVE A13, A9 ; XEROX COUNT
MOVE A12, A8 ; XEROX START
MOVI RANDOM_SEED, A7, L
RAC3: SLA 1, A7 ; GENERATE A PSEUDO
JRV RAC4 ; RANDOM NUMBER
ORI 2, A7
RAC4: MOVE A7, A6
ADDC A5, A6
MOVE *A8+, A4, 1 ; READ
ZEXT A6
ZEXT A4
CMP A6, A4
JRZ RAC5
;
; GOT AN ERROR HERE
;
SETF 16, 0, 0 ; RESET FIELDS
SETF 32, 0, 1
MOVE *A14(RAM_NMBR),A4,W ; GET BIT NUMBER TO SET
MOVE A4,B1
MOVK 1,B2
SLL B1,B2
OR B2,B0 ; SET THAT BIT
JRUC RAC6 ; BREAK !!
RAC5: DSJS A9, RAC3
RAC6: SETF 16, 0, 0 ; RESET FIELDS
SETF 32, 0, 1
;
; B1 SHOULD BE ZERO IF THE CHIP IS COOL HERE
;
MOVE *A14(RAM_LINK),A10,L
JRZ RAMNOPLOT
MOVK 1,A11
MOVE B2,B2
JRZ RAMPLOT
MOVK 2,A11
RAMPLOT
MOVE B5,A9 ; I HOPE THIS ONE IS SAFE!
MOVE B0,A13
FCALL CHIPOUT,B5
MOVE A13,B0
MOVE A9,B5
RAMNOPLOT
ADDI RAM_SIZE,A14 ; ADVANCE TO NEXT GUY
MOVE *A14,A7,W
JRNZ RAMLOOP ; HERE WE GO AGAIN
FRET B5
**************************************************************************
* *
* ROM STUFF *
* *
**************************************************************************
ROMCHECK:
ROMLOOP
CLR B2
MOVE *A14(ROM_CKSM),A13,L ; CHECK TO SEE IF ROM SOCKET THERE
JRZ ROMEMPTY
MOVE *A14(ROM_SADR),A12,L ; STARTING ADDRESS
MOVE *A14(ROM_EADR),A13,L ; ENDING ADDRESS
MOVE *A14(ROM_ITLV),A11,W ; INTERLEAVE
MOVE *A14(ROM_WDTH),A10,W ; WIDTH
JRZ PROG_ROM
;
; SUM UP A GIVEN IMAGE ROM -- THIS IS ONLY FOR 4BIT SYSTEMS
;
SUB A12,A13 ; ( EADDR - SADDR ) / 32 + 1
MOVK 32,A0
DIVU A0,A13
INC A13
;
CLR A8 ; CHECKSUM
;
*DETERMINE WHICH ROM WE ARE CHECKSUMMING, SHIFTING IS DIFFERENT FOR EACH
SLL 1,A11
NEG A11
RC_ROM0
MOVE *A12+,A7,L
SRL A11,A7
CLR A0 ; WORK AREA
CLR A1 ; CONSTRUCTED BYTE
MOVE A7,A0
SLL 30,A0
SRL 30,A0
MOVE A0,A1 ; FIRST TWO BITS
MOVE A7,A0
SRL 8,A0
SLL 30,A0
SRL 28,A0
OR A0,A1 ; BITS 3-2
MOVE A7,A0
SRL 16,A0
SLL 30,A0
SRL 26,A0
OR A0,A1 ; BITS 5-4
SRL 24,A7
SLL 30,A7
SRL 24,A7
OR A7,A1 ; BITS 7-6
ADD A1,A8
ZEXT A8
DSJ A13,RC_ROM0
JRUC ROMCKCK
*CHECKSUM ROUTINE FOR PROGRAM ROM
PROG_ROM
SUB A12,A13 ; ( EADDR - SADDR ) / 32 + 1
SRL 4,A13
INC A13
CLR A8 ; CHECKSUM
RCPLP
MOVB *A12,A7
SLL 24,A7
SRL 24,A7
ADDK 16,A12
ADD A7,A8
DSJS A13,RCPLP
MOVE *A14(ROM_NMBR),A4,W ;WHICH PROGRAM ROM ARE WE CHECKING?
JRNZ PROGRAM_1 ;BR = HIGH BYTE ROM
MOVE @CHECKSUM0,A7,W ;LOAD HARD CODED CHECKSUM
JRUC ROM_COMPARE
PROGRAM_1
MOVE @CHECKSUM1,A7,W
JRUC ROM_COMPARE
*LAND HERE FROM IMAGE CHECKSUM TO DETERMINE IF WE HIT IT
ROMCKCK
MOVE *A14(ROM_CKSM),A7,W
ROM_COMPARE
ZEXT A7
ZEXT A8
CMP A7,A8
JRZ ROMRELOOP
MOVE *A14(ROM_NMBR),A4,W ; GET BIT NUMBER TO SET
MOVE A4,B1
MOVK 1,B2
SLL B1,B2
OR B2,B0 ; SET THAT BIT
ROMRELOOP
MOVE *A14(ROM_LINK),A10,L
JRZ ROMNOPLOT
MOVK 1,A11
MOVE B2,B2
JRZ ROMPLOT
MOVK 2,A11
ROMPLOT
MOVE B5,A9 ; I HOPE THIS ONE IS SAFE!
MOVE B0,A13
FCALL CHIPOUT,B5
MOVE A13,B0
MOVE A9,B5
ROMNOPLOT
ADDI ROM_SIZE,A14
JRUC ROMLOOP
;
ROMEMPTY
FRET B5
.IF PRINTER
.ELSE
**************************************************************************
* *
* MONITOR STUFF *
* *
**************************************************************************
CONV_PLOT:
MOVI MON_RECS,A9
CPRLP1
MOVE *A9+,A2,W ; GET COLOR
JRZ CPRDONE
MOVE *A9+,A0,L ; START POINT
MOVE *A9+,A1,L ; DIMENSIONS
FCALL RECTANGLE,B6
JRUC CPRLP1
CPRDONE
MOVI MON_VECS,A9 ; POINT AT VECTOR TABLE
CPVLP1
MOVE *A9+,A2,W ; GET COLOR
JRZ CPVDONE
MOVE *A9+,A0,L ; START POINT
MOVE *A9+,A1,L ; END POINT
FCALL HVLINE,B6
JRUC CPVLP1
CPVDONE
MOVI MON_DOTS,A9 ; POINT AT DOT TABLE
CPDLP1
MOVE *A9+,A1,W ; GET COLOR
JRZ CPDDONE
MOVE *A9+,A0,L ; GET THE POINT
FCALL POINT,B6
JRUC CPDLP1
CPDDONE
RETS
**************************************************************************
* *
* COLORBAR *
* *
**************************************************************************
COLORBAR:
; =========================
; | SET PALETTE 0 FOR |
; | COLOR BARS. |
; =========================
MOVI INTENSITIES_START,A0,L
MOVI COLRAM+(7*PALSIZE),A1,L ; START AT PALETTE 8 CAUSE OF CYCLERS
MOVK 16,A2 ; 5 BITS / COLOR
MOVK 8,A6 ; # COLOR BARS
CB3 MOVE *A0+,A3 ; STARTING COLOR
MOVE *A0+,A4 ; COLOR DECREMENT
MOVE A2,A5
CB4 MOVE A3,*A1+
SUB A4,A3
DSJS A5,CB4
DSJS A6,CB3
; =========================
; | DISPLAY COLOR BARS |
; =========================
CLR A14
MOVE A14,@DMAGO ; HALT THE DMA
.IF YUNIT
MOVI 1010H,A14 ;A14 IS ALSO THE PALETTE INCREMENT
MOVI 7070H,A8
.ELSE
MOVI 0101H,A14
MOVI 0707H,A8
.ENDIF
MOVI COLOR_BARS, A3, L ; COLOR BAR TABLE
MOVI [16,0], A13, L ; POSITION INCRMENT
MOVI 101H,A12
MOVK 16, A11 ; # INTENSITIES / BAR
MOVK 8,A6 ;THIS MANY BARS
CLR A2 ; STARTING COLOR
CB6
MOVE *A3+,A1,L
JRZ CB8
MOVE A8,@DMACMAP,W ;STUFF PALETTE
MOVE *A3+,A0,L
ADDK 16,A3
MOVE A11,A10
CB7
FCALL RECTANGLE, B6
ADD A13, A0
ADD A12, A2
DSJS A10, CB7
ADD A14,A8 ;NEXT PALETTE PLEASE
DSJ A6,CB6
CB8
CLR A14
MOVE A14,@DMACMAP,W
RETS
INTENSITIES_START:
.WORD 03E0H ; GREEN
.WORD 0040H ; BUMP GREEN
.WORD 7C00H ; RED
.WORD 0800H ; BUMP RED
.WORD 001FH ; BLUE
.WORD 0002H ; BUMP BLUE
.WORD 0000H ; BLACK
.WORD 0000H ; BUMP BLACK
.WORD 7FFFH ; WHITE
.WORD 0842H ; BUMP WHITE
.WORD 7FE0H ; YELLOW
.WORD 0840H ; BUMP YELLOW
.WORD 7C1FH ; PURPLE
.WORD 0802H ; BUMP PURPLE
.WORD 03FFH ; CYAN
.WORD 0042H ; BUMP CYAN
.LONG 0
**************************************************************************
* *
* DIPTEST *
* *
* DIP SWITCH TESTING *
* *
**************************************************************************
DIPTEST:
CALLA WDOGDIS
MOVI DIP_VECS,A9 ; POINT AT VECTOR TABLE
DTVLP1
MOVE *A9+,A2,W ; GET COLOR
JRZ DTVDONE
MOVE *A9+,A0,L ; START POINT
MOVE *A9+,A1,L ; END POINT
FCALL HVLINE,B6
JRUC DTVLP1
DTVDONE
MOVI DIP_STRS,A9
CALLR STR_PLOT
CALLR DIPPLOT
CALLR DIPSTATE
PAUSE 10000,B6
MOVE @SWITCH,A0,L
ANDI 86241010H,A0
MOVE A0,@SWSET1,L
MOVE @SWITCH+32,A0,L
ANDI 10H,A0
MOVE A0,@SWSET2,L
DTLOOP
CALLA CKTEST ; EMERGENCY EXIT
MOVE @SWITCH,A0,L ; GOTTA SEE IF TIME TO LEAVE
MOVE @SWSET1,A1,L
ANDI 86241010H,A0
CMP A0,A1
JRZ DTCKS1
RETS
DTCKS1
MOVE @SWITCH+32,A0,L
ANDI 10H,A0
MOVE @SWSET2,A1,L
CMP A0,A1
JRZ DTLGO
RETS
DTLGO
CALLR READ_DIP
MOVE @DIPVAL,A1,W
ANDI 0FFFFH,A1 ; FUCKING SIGN EXTEND
CMP A0,A1
JRZ DTLOOP
MOVE A0,@DIPVAL,W
CALLR DIPPLOT
CALLR DIPSTATE
MOVI 0FD8BH,A0
MOVE A0,@SOUND,W
MOVI 0FF8BH,A0
MOVE A0,@SOUND,W ; LET HIM HEAR IT
JRUC DTLOOP
**************************************************************************
* *
* DIPSTATE *
* *
* PLOT OUT THE STATES OF ALL THE DIP SWITCHES *
* *
* ENTRY *
* NOTHING *
* *
* EXIT *
* NOTHING *
* *
**************************************************************************
DIPSTATE
MOVI [32,74],A0
MOVI [104,140],A1
MOVI TROG_BLACK,A2
FCALL RECTANGLE,B6
MOVI [32,284],A0
MOVI [104,111],A1
MOVI TROG_BLACK,A2
FCALL RECTANGLE,B6
CALLR READ_DIP
CLR A2
MOVI TROG_WHITE,A3
MOVI DCOCKTAIL_0,A1
CALLR READ_DIP
ANDI DPCOCKTAIL,A0 ; COCKTAIL
JRZ SD1
MOVI DCOCKTAIL_1,A1
SD1
MOVE A1,A0
MOVI [39,75],A1
FCALL STRING,B6
MOVI DUSECMOS_0,A1
CALLR READ_DIP
ANDI DPUSECMOS,A0
JRZ DS1
MOVI DUSECMOS_1,A1
DS1
MOVE A1,A0
MOVI [51,75],A1
FCALL STRING,B6
MOVI TROG_WHITE,A3
MOVI [69,75],A1
MOVI DCOINAGE,A0
FCALL STRING,B6
CALLR READ_DIP
MOVE A0,A2
ANDI DPCOUNTRY,A0
SRL 3,A0
ADDI DCOINTAB,A0
MOVE *A0,A1,L ; POINTER TO RIGHT COIN TABLE
ANDI DPCOINAGE,A2
SLL 3,A2
ADD A2,A1
MOVE *A1,A0,L ; NOW POINTING AT MESSAGE
CLR A2
MOVI [81,75],A1
FCALL STRING,B6
MOVI DUNUSED,A0
MOVI [101,75],A1
FCALL STRING,B6
MOVI DUNUSED,A0
MOVI [112,75],A1
FCALL STRING,B6
MOVI DUNUSED,A0
MOVI [123,75],A1
FCALL STRING,B6
CALLR READ_DIP
ANDI DPCOUNTRY,A0
SRL 3,A0
ADDI DCOUNTRY_TAB,A0
MOVE *A0,A0,L
MOVI [45,285],A1
FCALL STRING,B6
**** CALLR SHOWCOUNTRY ; UPDATE THE 543 COINAGE SETTINGS
MOVI DUNUSED,A0
MOVI [63,285],A1
FCALL STRING,B6
MOVI DCOUNTER_0,A1
CALLR READ_DIP
ANDI DPCOUNTER,A0 ; COUNTER
JRZ SD2
MOVI DCOUNTER_1,A1
SD2
MOVE A1,A0
MOVI [75,285],A1
FCALL STRING,B6
CALLR READ_DIP
ANDI DPPLAYERS,A0
SRL 7,A0
ADDI DPLAYER_TAB,A0
MOVE *A0,A0,L
MOVI [93,285],A1
FCALL STRING,B6
MOVI DFREEZE_0,A0
MOVI [112,285],A1
FCALL STRING,B6
MOVI DTEST_0,A0
MOVI [123,285],A1
FCALL STRING,B6
RETS
****SHOWCOUNTRY
**** MOVI [161,7],A0
**** MOVI [93,162],A1
**** MOVI TROG_BLACK,A2
**** FCALL RECTANGLE,B6
**** CALLR READ_DIP
**** MOVE A0,A7
**** ANDI DPCOUNTRY,A7
**** SRL 3,A7
**** ADDI COINTAB,A7
**** MOVE *A7,A7,L
**** MOVI SHOWYLOC,A8
**** CLR A2
**** MOVI TROG_WHITE,A3
****SCL1
**** MOVE *A7+,A0,L ; NEXT STRING
**** JRZ SCDONE
**** MOVE *A8+,A1,W ; NEXT Y LOCATION
**** SLL 16,A1
**** ADDK 7,A1
**** FCALL STRING,B6
**** JRUC SCL1
****SCDONE
**** RETS
****SHOWYLOC .WORD 161, 173, 185, 197, 209, 221, 233, 245, 0, 0
.ENDIF
**************************************************************************
* *
* CHECKDIPFREE *
* *
* CHECK TO SEE IF EITHER OF THE COIN SLOTS IS ON FREE PLAY, *
* AND IF SO RETURN Z, OTHERWISE DON'T *
* *
* ENTRY *
* NOTHING *
* *
* EXIT *
* .EQ. YES, FREEPLAY *
* *
**************************************************************************
CHECKDIPFREE:
PUSH A0
CALLR READ_DIP
ANDI DPCOINAGE,A0
CMPI DPCOINAGE,A0
CDFRET
PULL A0
RETS
.IF PRINTER
.ELSE
**************************************************************************
* *
* DIPPLOT *
* *
* PLOT OUT THE DIP SWITCHES *
* *
* ENTRY *
* NOTHING *
* *
* EXIT *
* NOTHING *
* *
**************************************************************************
DIPPLOT:
MOVI [33,21],A0
MOVI [104,38],A1
MOVI TROG_BLACK,A2
FCALL RECTANGLE,B6
MOVI [33,231],A0
MOVI [104,38],A1
MOVI TROG_BLACK,A2
FCALL RECTANGLE,B6
CALLR READ_DIP
CLR A2
DIPLOOP
MOVE A2,A3
SLL 5,A3
ADDI DIPYTAB,A3
MOVE *A3,A3,L
SLL 16,A3 ; GOT THE Y LOC
CLR A5
CMPI 8,A2
JRLO DIPL2
MOVI 210,A5
DIPL2
MOVX A5,A3
BTST A2,A0 ; CHECK IF BIT IS SET
JRNZ DIPON
MOVI DP_OFF,A1
ADDI 29,A3
MOVI TROG_GREY,A4
JRUC DIPSTR
DIPON
MOVI DP_ON,A1
ADDI 32,A3
MOVI TROG_WHITE,A4
DIPSTR
MMTM SP,A0,A2
MOVE A1,A0 ; SET STRING
MOVE A3,A1 ; SET LOCATION
MOVE A4,A3
CLR A2 ; HORIZONTAL
FCALL STRING,B6
MMFM SP,A0,A2
INC A2
CMPI 16,A2
JRLO DIPLOOP
RETS
DIPYTAB
.LONG 39,51,63,75,87,99,111,123
.LONG 39,51,63,75,87,99,111,123
.ENDIF
**************************************************************************
* *
* READ_DIP *
* *
* READ IN BOTH DIP SWITCHES *
* *
* ENTRY *
* NOTHING *
* *
* EXIT *
* A0 DIP SWITCH *
* *
**************************************************************************
READ_DIP:
MMTM SP,A1,A2,A3
MOVE @DIPSWITCH,A0,W ; READ IT IN
NOT A0 ; INVERT IT FOR TRUE BITS
CLR A1
MOVI 7,A2
RDLOOP
BTST A2,A0
JRZ RD1
MOVK 7,A3
SUB A2,A3
BSET A3,A1
RD1
PUSH A2
ADDI 8,A2
BTST A2,A0
JRZ RD2
MOVK 15,A3
SUB A2,A3
ADDI 8,A3
BSET A3,A1
RD2
PULL A2
DEC A2
JRNN RDLOOP
MOVE A1,A0
.IF YUNIT
.ELSE
MOVI DPUSECMOS,A0
.ENDIF
MMFM SP,A1,A2,A3
RETS
**************************************************************************
* *
* SWITCHTEST *
* *
* DRAW OUT THE TROG SWITCHES -- A PRETTY PICTURE *
* *
* ENTRY *
* NOTHING *
* *
* EXIT *
* NOTHING *
* *
**************************************************************************
.IF PRINTER
.ELSE
SWITCHTEST:
CALLA WDOGDIS
CLR A13 ; THE HOLD ME REGISTER
MOVE A13,@SWSET1,L
MOVE A13,@SWSET2,L
MOVE A13,@SWPREV1,L
MOVE A13,@SWPREV2,L
MOVI BUT_TABLE,A9
CLR A10
CALLR BUT_PLOT ; PLOT SOME BUTTONS
MOVI JOY_TABLE,A9
CALLR JOY_PLOT ; PLOT THE JOYSTICKS
MOVI STR_TABLE,A9
CALLR STR_PLOT ; PLOT THE STRINGS
MOVI 00B90000H,A0
MOVI 00B90190H,A1
MOVI TROG_WHITE,A2
FCALL HVLINE,B6 ; DRAW LITTLE WHITE LINE
SDLOOP
MOVE @SWITCH,A10,L ; GRAB ME A SWITCH REGISTER
NOT A10
MOVE A10,A0
ANDI DONEMASK,A0
CMPI DONEMASK,A0,L ; CHECK FOR DONE
JRNZ SDGO
RETS
SDGO
MOVE @SWSET1,A11,L
CMP A11,A10 ; CHECK FOR CHANGES
JRZ SDCK2
MOVE A10,@SWSET1,L
MOVE @SWITCH+32,A10,L
NOT A10
ANDI 0FFH,A10
MOVE A10,@SWSET2,L
JRUC SDPROC
SDCK2
MOVE @SWITCH+32,A10,L
NOT A10
ANDI 0FFH,A10
MOVE @SWSET2,A11,L
CMP A11,A10
JRZ SDLOOP
MOVE A10,@SWSET2,L
SDPROC
MOVI BUT_TABLE,A9
CALLR BUT_PLOT
MOVI JOY_TABLE,A9
CALLR JOY_UPDATE ; UPDATE THE JOYSTICK INFO
MOVE @SWPREV1,A1,L
NOT A1
MOVE @SWSET1,A2,L
NOT A2
OR A2,A1
CMP A1,A2
JRNZ SDSOUND
MOVE @SWPREV2,A1,L
NOT A1
MOVE @SWSET2,A2,L
NOT A2
OR A2,A1
CMP A1,A2
JRZ SDNOSOUND
SDSOUND
MOVI 0FD8BH,A0
MOVE A0,@SOUND,W
MOVI 0FF8BH,A0
MOVE A0,@SOUND,W
SDNOSOUND
MOVE @SWSET1,@SWPREV1,L
MOVE @SWSET2,@SWPREV2,L
JRUC SDLOOP
RETS
**************************************************************************
* *
* JOY_MESS *
* *
* PLOT THE STATUS OF A JOYSTICK AROUND A CIRCLE *
* *
* ENTRY *
* A9 CENTER OF STICK CIRCLE *
* A10 BUTTON MASK *
* A11 COLOR *
* A12 PLAYER NUMBER *
* *
* EXIT *
* NOTHING *
* *
**************************************************************************
JOY_MESS:
CALLR READ_DIP
ANDI DPCOCKTAIL,A0 ;COCKTAIL TABLE?
JRZ JM_NORM ;BR = NO
MOVE A12,A1
SLL 5,A1
ADDI JM_COCKTAIL_XLATION,A1
MOVE *A1,A1,L
SLL 28,A10
SRL 25,A10
ADD A10,A1
MOVB *A1,A10
JM_NORM
MOVI TROG_BLACK,A3
SRL 1,A10
JRNC JM1
MOVE A11,A3 ; SET COLOR
JM1
MOVI UPMESS,A0
MOVE A9,A1 ; CIRCLE CENTER
MOVI 31,A2
SLL 16,A2
SUB A2,A1 ; SUB RADIUS FROM Y
SUBI 5,A1 ; SUB STRING WIDTH FROM X
CLR A2 ; DIRECTION
FCALL STRING,B6
;
MOVI TROG_BLACK,A3
SRL 1,A10
JRNC JM2
MOVE A11,A3 ; SET COLOR
JM2
MOVI DOWNMESS,A0
MOVE A9,A1 ; CIRCLE CENTER
MOVI 19,A2
SLL 16,A2
ADD A2,A1 ; ADD RADIUS TO Y
SUBI 5,A1 ; SUB STRING WIDTH FROM X
CLR A2 ; DIRECTION
FCALL STRING,B6
;
MOVI TROG_BLACK,A3
SRL 1,A10
JRNC JM3
MOVE A11,A3
JM3
MOVI LEFTMESS,A0
MOVE A9,A1 ; CIRCLE CENTER
MOVI 5,A2
SLL 16,A2
SUB A2,A1 ; CENTER LETTERS
SUBI 33,A1 ; SUB STRING WIDTH FROM X
CLR A2 ; DIRECTION
FCALL STRING,B6
;
MOVI TROG_BLACK,A3
SRL 1,A10
JRNC JM4
MOVE A11,A3
JM4
MOVI RIGHTMESS,A0
MOVE A9,A1 ; CIRCLE CENTER
MOVI 5,A2
SLL 16,A2
SUB A2,A1 ; CENTER LETTERS
ADDI 18,A1 ; ADD STRING WIDTH FROM X
CLR A2 ; DIRECTION
FCALL STRING,B6
RETS
*
*MIDWAY COCKTAIL TABLE TRANSLATIONS FOR THE JOYSTICKS
*
JM_COCKTAIL_XLATION
.LONG JM_XLATE_P1,JM_XLATE_P2,JM_XLATE_P3,JM_XLATE_P4
JM_XLATE_P1
.BYTE 00,08,04,0CH,01,09,05,0DH,02,0AH,06,0EH,03,0BH,07,0FH
.EVEN
JM_XLATE_P2
.BYTE 00,04,08,0CH,02,06,0AH,0EH,01,05,09,0DH,03,07,0BH,0FH
.EVEN
JM_XLATE_P3
.BYTE 00,01,02,03,04,05,06,07,08,09,0AH,0BH,0CH,0DH,0EH,0FH
.EVEN
JM_XLATE_P4
.BYTE 00,01,02,03,04,05,06,07,08,09,0AH,0BH,0CH,0DH,0EH,0FH
.EVEN
**************************************************************************
* *
* BUT_PLOT *
* *
* PLOT A BUTTON TABLE ON THE SCREEN *
* *
* ENTRY *
* A9 POINTS TO BUTTON TABLE LIST *
* A10 SETTINGS OF THE SWITCH REGISTER *
* *
* EXIT *
* NOTHING *
* *
**************************************************************************
BUT_PLOT:
MOVE *A9+,A1,L ; XY LOC
JRZ BPDONE
**** ADDI 32,A9
MOVE *A9+,A0,W ; RADIUS
**** ADDI 16,A9
MOVE *A9+,A6,L ; COLOR
**** ADDI 32,A9
MOVE *A9+,A11,L ; GET MASK
**** ADDI 32,A9 ; MASK
ADDK 16,A9 ; SHIFT COUNT
MOVE *A9+,A8,W ; JAMMA EXTEND-O-BIT
JRZ BPLOW
MOVE @SWSET2,A10,L
JRUC BPAND
BPLOW
MOVE @SWSET1,A10,L
BPAND
**** ADDI 16,A9
AND A10,A11 ; MASK OFF SOMETHING USEFUL
JRZ BPHOLLOW
SUBK 2,A0
ADDI CFILL,A6 ; MASK IN THE FILL BITS
JRUC BPCIRC
BPHOLLOW
MMTM SP,A0,A1,A6
SUBK 2,A0
MOVI TROG_BLACK,A6
ADDI CFILL,A6
FCALL CIRCLE,B6
MMFM SP,A0,A1,A6
BPCIRC
FCALL CIRCLE,B6
JRUC BUT_PLOT
BPDONE
RETS
**************************************************************************
* *
* JOY_PLOT *
* *
* PLOT A BUTTON TABLE ON THE SCREEN *
* *
* ENTRY *
* A9 POINTS TO BUTTON TABLE LIST *
* *
**************************************************************************
JOY_PLOT:
MOVE *A9+,A1,L ; XY LOC
JRZ JPDONE
**** ADDI 32,A9
MOVE *A9+,A0,W ; RADIUS
**** ADDI 16,A9
MOVE *A9+,A6,L ; COLOR
**** ADDI 32,A9
ADDK 32,A9 ; MASK
ADDK 16,A9 ; SHIFT COUNT
ADDK 16,A9 ; JAMMA EXTEND-O-BIT
FCALL CIRCLE,B6
JRUC JOY_PLOT
JPDONE
RETS
**************************************************************************
* *
* JOY_UPDATE *
* *
* UPDATE ALL THE STICK INFORMATION *
* *
* ENTRY *
* A9 JOYSTICK TABLE POINTER *
* A10 SWITCH INFORMATION *
* *
* EXIT *
* NOTHING *
* *
**************************************************************************
JOY_UPDATE:
PUSH A12
CLR A12
JU_LOOP
MOVE *A9+,A1,L ; XY LOC
JRZ JUDONE
**** ADDI 32,A9
MOVE *A9+,A0,W ; RADIUS
**** ADDI 16,A9
MOVE *A9+,A11,L ; COLOR
**** ADDI 32,A9
MOVE *A9+,A6,L ; MASK
**** ADDI 32,A9
MOVE *A9+,A7,W ; SHIFT COUNT
**** ADDI 16,A9
MOVE *A9+,A8,W ; EXTEND-O-BIT FOR JAMMA
JRZ JULOW
MOVE @SWSET2,A10,L
JRUC JUAND
JULOW
MOVE @SWSET1,A10,L
JUAND
**** ADDI 16,A9
AND A10,A6 ; MASK OFF JOYSTICK BITS
NOT A7
ADDK 1,A7
SRL A7,A6 ; ZERO BASE THE LITTLE SUCKER
MMTM SP,A9,A10
MOVE A1,A9 ; CENTER OF STICK HERE
MOVE A6,A10 ; BUTTON MASK
CALLR JOY_MESS
MMFM SP,A9,A10
INC A12
JRUC JU_LOOP
JUDONE
PULL A12
RETS
.ENDIF
**************************************************************************
* *
* STR_PLOT *
* *
* PLOT A STRING TABLE ON THE SCREEN *
* *
* ENTRY *
* A9 POINTS TO STRING TABLE LIST *
* *
**************************************************************************
STR_PLOT:
MOVE *A9+,A1,L ; XY LOC
JRZ STDONE
**** ADDI 32,A9
MOVE *A9+,A0,L ; STRING PTR
**** ADDI 32,A9
MOVE *A9+,A3,W ; COLOR
**** ADDI 16,A9
MOVE *A9+,A2,W ; DIRECTION
**** ADDI 16,A9
FCALL STRING,B6
JRUC STR_PLOT
STDONE
RETS
CFILL EQU 0FFFF0000H
;
; FORMAT
;
; X,Y,RADIUS,COLOR,MASK,SHIFT COUNT ( FOR JOYSTICK STUFF ), EXTENDBIT
;
TROG_P1 EQU TROG_RED
TROG_P2 EQU TROG_BLUE
TROG_P3 EQU TROG_YELLOW
TROG_P4 EQU TROG_PURPLE
**************************************************************************
* *
* Y-UNIT DEFS *
* *
**************************************************************************
.IF PRINTER
.ELSE
BUT_TABLE:
BUT_MAC 147,35,10,TROG_P1,00040000H,0,0 ; P1 START
BUT_MAC 182,45,10,TROG_P2,00200000H,0,0 ; P2 START
BUT_MAC 217,45,10,TROG_P3,02000000H,0,0 ; P3 START
BUT_MAC 253,35,10,TROG_P4,04000000H,0,0 ; P4 START
BUT_MAC 70,35,10,TROG_P1,00000010H,0,0 ; P1 PUNCH
BUT_MAC 110,170,10,TROG_P2,00001000H,0,0 ; P2 PUNCH
BUT_MAC 221,170,10,TROG_P3,80000000H,0,0 ; P3 PUNCH
BUT_MAC 340,125,10,TROG_P4,00000010H,0,1 ; P4 PUNCH
BUT_MAC 260,199,10,TROG_GREEN,00080000H,0,0 ; SLAM
BUT_MAC 260,222,10,TROG_GREEN,00100000H,0,0 ; TEST
BUT_MAC 260,245,10,TROG_GREEN,01000000H,0,0 ; VIDEO FREEZE
BUT_MAC 30,207,10,TROG_GREEN,00010000H,0,0 ; COIN LEFT
BUT_MAC 75,207,10,TROG_GREEN,00020000H,0,0 ; COIN RIGHT
BUT_MAC 120,207,10,TROG_GREEN,00800000H,0,0 ; COIN CENTER
BUT_MAC 165,207,10,TROG_GREEN,00000020H,0,1 ; FOURTH COIN
BUT_MAC 214,207,10,TROG_GREEN,00400000H,0,0 ; SERVICE CREDIT
.LONG 0
JOY_TABLE
BUT_MAC 80,80,15,CFILL+TROG_P1,0000000FH,0,0 ; J1
BUT_MAC 152,130,15,CFILL+TROG_P2,00000F00H,8,0 ; J2
BUT_MAC 263,130,15,CFILL+TROG_P3,78000000H,27,0 ; J3
BUT_MAC 335,80,15,CFILL+TROG_P4,0000000FH,0,1 ; J4
.LONG 0
DONEMASK EQU 00040010H ; P1 START + P1 PUNCH
STR_TABLE:
STR_MAC 178,15,STSTART,TROG_GREEN,0 ; GENERIC "STARTS"
STR_MAC 142,52,P1START,TROG_P1,0 ; P1 START
STR_MAC 177,62,P2START,TROG_P2,0 ; P2 START
STR_MAC 212,62,P3START,TROG_P3,0 ; P3 START
STR_MAC 248,52,P4START,TROG_P4,0 ; P4 START
STR_MAC 40,13,P1DRAW,TROG_P1,0 ; P1 PUNCH
STR_MAC 125,167,P2DRAW,TROG_P2,0 ; P2 PUNCH
STR_MAC 236,167,P3DRAW,TROG_P3,0 ; P3 PUNCH
STR_MAC 315,140,P4DRAW,TROG_P4,0 ; P4 PUNCH
STR_MAC 275,196,SLAM,TROG_GREEN,0 ; SLAM
STR_MAC 275,219,TEST,TROG_GREEN,0 ; TEST SWITCH
STR_MAC 275,242,VIDEO,TROG_GREEN,0 ; VIDEO FREEZE
STR_MAC 12,233,LEFTSLOT,TROG_GREEN,0 ; LEFT COIN
STR_MAC 56,233,RIGHTSLOT,TROG_GREEN,0 ; RIGHT COIN
STR_MAC 103,222,CENTER,TROG_GREEN,0 ; CENTER COIN
STR_MAC 147,222,FOURTH,TROG_GREEN,0 ; COIN MIDDLE
STR_MAC 10,222,COINMESS1,TROG_GREEN,0 ; BOTTOM MESSAGE
STR_MAC 55,222,COINMESS2,TROG_GREEN,0
STR_MAC 193,222,SERVICE1,TROG_GREEN,0 ; SERVICE CREDIT
STR_MAC 197,233,SERVICE2,TROG_GREEN,0 ; SERVICE CREDIT
STR_MAC 118,80,GETOUT1,TROG_WHITE,0 ; GET OUT MESSAGE 1
STR_MAC 177,90,GETOUT2,TROG_WHITE,0
.LONG 0
GETOUT1
.STRING "PLAYER 1 START AND PUNCH",0
.EVEN
GETOUT2
.STRING "TO EXIT",0
.EVEN
STSTART
.STRING "STARTS",0
.EVEN
P1START
.STRING "P1",0
.EVEN
P2START
.STRING "P2",0
.EVEN
P3START
.STRING "P3",0
.EVEN
P4START
.STRING "P4",0
.EVEN
LEFTMESS
.STRING "<",0
.EVEN
RIGHTMESS
.STRING ">",0
.EVEN
UPMESS
.STRING "^",0
.EVEN
DOWNMESS
.STRING "_",0
.EVEN
P1DRAW
.STRING "P1 PUNCH",0
.EVEN
P2DRAW
.STRING "P2 PUNCH",0
.EVEN
P3DRAW
.STRING "P3 PUNCH",0
.EVEN
P4DRAW
.STRING "P4 PUNCH",0
.EVEN
COINMESS1
.STRING "COIN1",0
.EVEN
COINMESS2
.STRING "COIN2",0
.EVEN
LEFTSLOT
.STRING "LEFT",0
.EVEN
RIGHTSLOT
.STRING "RIGHT",0
.EVEN
CENTER
.STRING "COIN3",0
.EVEN
FOURTH
.STRING "COIN4",0
.EVEN
SERVICE1
.STRING "SERVICE",0
.EVEN
SERVICE2
.STRING "CREDIT",0
.EVEN
SLAM
.STRING "SLAM - TILT",0
.EVEN
TEST
.STRING "TEST",0
.EVEN
VIDEO
.STRING "VIDEO FREEZE",0
.EVEN
.ENDIF
.IF PRINTER
.ELSE
**************************************************************************
* *
* MONITOR TEST DATA AREA *
* *
**************************************************************************
MON_VECS:
VECMAC TROG_WHITE,004,004,390,004
VECMAC TROG_WHITE,004,004,004,250
VECMAC TROG_WHITE,004,250,390,250
VECMAC TROG_WHITE,390,250,390,004
VECMAC TROG_WHITE,060,005,060,250
VECMAC TROG_WHITE,115,005,115,250
VECMAC TROG_WHITE,170,005,170,250
VECMAC TROG_WHITE,225,005,225,250
VECMAC TROG_WHITE,280,005,280,250
VECMAC TROG_WHITE,335,005,335,250
VECMAC TROG_WHITE,005,54,390,54
VECMAC TROG_WHITE,005,103,390,103
VECMAC TROG_WHITE,005,152,390,152
VECMAC TROG_WHITE,005,201,390,201
.LONG 0
MON_RECS:
VECMAC TROG_RED,182,000,030,005 ; TOP
VECMAC TROG_GREEN,182,005,030,006
VECMAC TROG_RED,182,250,030,005 ; BOTTOM
VECMAC TROG_GREEN,182,244,030,006
VECMAC TROG_RED,000,117,005,020 ; LEFT
VECMAC TROG_GREEN,005,117,006,020
VECMAC TROG_RED,390,117,005,020 ; RIGHT
VECMAC TROG_GREEN,384,117,006,020
.LONG 0
MON_DOTS:
DOTMAC TROG_WHITE,032,029
DOTMAC TROG_WHITE,087,029
DOTMAC TROG_WHITE,142,029
DOTMAC TROG_WHITE,197,029
DOTMAC TROG_WHITE,252,029
DOTMAC TROG_WHITE,307,029
DOTMAC TROG_WHITE,362,029
DOTMAC TROG_WHITE,032,078
DOTMAC TROG_WHITE,087,078
DOTMAC TROG_WHITE,142,078
DOTMAC TROG_WHITE,197,078
DOTMAC TROG_WHITE,252,078
DOTMAC TROG_WHITE,307,078
DOTMAC TROG_WHITE,362,078
DOTMAC TROG_WHITE,032,127
DOTMAC TROG_WHITE,087,127
DOTMAC TROG_WHITE,142,127
DOTMAC TROG_WHITE,197,127
DOTMAC TROG_WHITE,252,127
DOTMAC TROG_WHITE,307,127
DOTMAC TROG_WHITE,362,127
DOTMAC TROG_WHITE,032,176
DOTMAC TROG_WHITE,087,176
DOTMAC TROG_WHITE,142,176
DOTMAC TROG_WHITE,197,176
DOTMAC TROG_WHITE,252,176
DOTMAC TROG_WHITE,307,176
DOTMAC TROG_WHITE,362,176
DOTMAC TROG_WHITE,032,225
DOTMAC TROG_WHITE,087,225
DOTMAC TROG_WHITE,142,225
DOTMAC TROG_WHITE,197,225
DOTMAC TROG_WHITE,252,225
DOTMAC TROG_WHITE,307,225
DOTMAC TROG_WHITE,362,225
.LONG 0
PRIMARY_COLORS:
RECTMAC TROG_RED,0,0,395,255
RECTMAC TROG_GREEN,0,0,395,255
RECTMAC TROG_BLUE,0,0,395,255
.LONG 0
COLOR_BARS:
RECTMAC TROG_BLACK, 0, 0, 49, 16
RECTMAC TROG_BLACK, 49, 0, 49, 16
RECTMAC TROG_BLACK, 98, 0, 49, 16
RECTMAC TROG_BLACK, 147, 0, 49, 16
RECTMAC TROG_BLACK, 196, 0, 49, 16
RECTMAC TROG_BLACK, 245, 0, 49, 16
RECTMAC TROG_BLACK, 294, 0, 49, 16
RECTMAC TROG_BLACK, 343, 0, 49, 16
.LONG 0
**************************************************************************
* *
* DIP SWITCH DISPLAY STUFF *
* *
**************************************************************************
DIP_VECS:
VECMAC TROG_RED,20,32,60,32 ; DS1
VECMAC TROG_RED,20,32,20,138
VECMAC TROG_RED,20,138,60,138
VECMAC TROG_RED,60,32,60,138
VECMAC TROG_RED,230,32,270,32 ; DS2
VECMAC TROG_RED,230,32,230,138
VECMAC TROG_RED,230,138,270,138
VECMAC TROG_RED,270,32,270,138
VECMAC TROG_WHITE,63,42,73,42
VECMAC TROG_WHITE,63,54,73,54
VECMAC TROG_WHITE,63,66,68,66
VECMAC TROG_WHITE,63,90,68,90
VECMAC TROG_WHITE,68,66,68,90
VECMAC TROG_WHITE,68,78,73,78
VECMAC TROG_WHITE,63,102,68,102
VECMAC TROG_WHITE,63,126,68,126
VECMAC TROG_WHITE,68,102,68,126
VECMAC TROG_WHITE,68,114,73,114
VECMAC TROG_WHITE,273,42,278,42 ; COUNTRY
VECMAC TROG_WHITE,273,54,278,54
VECMAC TROG_WHITE,278,42,278,54
VECMAC TROG_WHITE,278,48,283,48
VECMAC TROG_WHITE,273,66,283,66
VECMAC TROG_WHITE,273,78,283,78
VECMAC TROG_WHITE,273,90,278,90
VECMAC TROG_WHITE,273,102,278,102
VECMAC TROG_WHITE,278,90,278,102
VECMAC TROG_WHITE,278,96,283,96
VECMAC TROG_WHITE,273,114,283,114
VECMAC TROG_WHITE,273,126,283,126
**** VECMAC TROG_WHITE,1,142,393,142
.LONG 0
DIP_STRS:
STR_MAC 124,8,DP_TITLE,TROG_GREEN,0
STR_MAC 30,20,DP_DS1,TROG_WHITE,0
STR_MAC 240,20,DP_DS2,TROG_WHITE,0
STR_MAC 7,39,DP_DSN1,TROG_WHITE,0
STR_MAC 7,51,DP_DSN2,TROG_WHITE,0
STR_MAC 7,63,DP_DSN3,TROG_WHITE,0
STR_MAC 7,75,DP_DSN4,TROG_WHITE,0
STR_MAC 7,87,DP_DSN5,TROG_WHITE,0
STR_MAC 7,99,DP_DSN6,TROG_WHITE,0
STR_MAC 7,111,DP_DSN7,TROG_WHITE,0
STR_MAC 7,123,DP_DSN8,TROG_WHITE,0
STR_MAC 217,39,DP_DSN1,TROG_WHITE,0
STR_MAC 217,51,DP_DSN2,TROG_WHITE,0
STR_MAC 217,63,DP_DSN3,TROG_WHITE,0
STR_MAC 217,75,DP_DSN4,TROG_WHITE,0
STR_MAC 217,87,DP_DSN5,TROG_WHITE,0
STR_MAC 217,99,DP_DSN6,TROG_WHITE,0
STR_MAC 217,111,DP_DSN7,TROG_WHITE,0
STR_MAC 217,123,DP_DSN8,TROG_WHITE,0
**** STR_MAC 7,149,DCOINTITLE,TROG_BLUE,0
; STR_MAC 7,161,DCOIN000,TROG_WHITE,0
; STR_MAC 7,173,DCOIN001,TROG_WHITE,0
; STR_MAC 7,185,DCOIN010,TROG_WHITE,0
; STR_MAC 7,197,DCOIN011,TROG_WHITE,0
; STR_MAC 7,209,DCOIN100,TROG_WHITE,0
; STR_MAC 7,221,DCOIN101,TROG_WHITE,0
; STR_MAC 7,233,DCOIN110,TROG_WHITE,0
; STR_MAC 7,245,DCOIN111,TROG_WHITE,0
**** STR_MAC 170,149,DCOUNTRYTITLE,TROG_BLUE,0
**** STR_MAC 170,161,DCOUNTRY00,TROG_WHITE,0
**** STR_MAC 170,173,DCOUNTRY01,TROG_WHITE,0
**** STR_MAC 170,185,DCOUNTRY10,TROG_WHITE,0
**** STR_MAC 170,197,DCOUNTRY11,TROG_WHITE,0
**** STR_MAC 290,149,DPLAYERSTITLE,TROG_BLUE,0
**** STR_MAC 290,161,DPLAYERS00,TROG_WHITE,0
**** STR_MAC 290,173,DPLAYERS01,TROG_WHITE,0
**** STR_MAC 290,185,DPLAYERS10,TROG_WHITE,0
**** STR_MAC 290,197,DPLAYERS11,TROG_WHITE,0
STR_MAC 100,170,DP_INS1,TROG_GREEN,0
**** STR_MAC 170,245,DP_INS1,TROG_GREEN,0
**** STR_MAC 170,215,DP_INS2,TROG_GREEN,0
**** STR_MAC 170,227,DP_INS3,TROG_GREEN,0
.LONG 0
DP_TITLE
.STRING "DIPSWITCH SETTINGS",0
.EVEN
DP_INS1
.STRING "PRESS ANY BUTTON TO EXIT",0
.EVEN
****DP_INS2
**** .STRING "0 - OFF - OPEN",0
**** .EVEN
****DP_INS3
**** .STRING "1 - ON - CLOSED",0
**** .EVEN
DP_DS1:
.STRING "DS1",0
.EVEN
DP_DS2:
.STRING "DS2",0
.EVEN
DP_DSN1
.STRING "1",0
.EVEN
DP_DSN2
.STRING "2",0
.EVEN
DP_DSN3
.STRING "3",0
.EVEN
DP_DSN4
.STRING "4",0
.EVEN
DP_DSN5
.STRING "5",0
.EVEN
DP_DSN6
.STRING "6",0
.EVEN
DP_DSN7
.STRING "7",0
.EVEN
DP_DSN8
.STRING "8",0
.EVEN
DP_ON
.STRING "ON",0
.EVEN
DP_OFF
.STRING "OFF",0
DUSECMOS_1:
.STRING "CMOS COINAGE",0
.EVEN
DUSECMOS_0:
.STRING "DIPSWITCH COINAGE",0
.EVEN
DCOCKTAIL_0
.STRING "UPRIGHT",0
.EVEN
DCOCKTAIL_1
.STRING "MIDWAY COCKTAIL",0
.EVEN
DCOUNTER_0
.STRING "ONE COUNTER",0
.EVEN
DCOUNTER_1
.STRING "TWO COUNTERS",0
.EVEN
DCOINAGE
.STRING "COINAGE",0
.EVEN
DCOUNTRY_TAB
.LONG DCOUNTRY_0, DCOUNTRY_1, DCOUNTRY_2, DCOUNTRY_3
DCOUNTRY_0
.STRING "USA",0
.EVEN
DCOUNTRY_1
.STRING "GERMAN",0
.EVEN
DCOUNTRY_2
.STRING "FRENCH",0
.EVEN
DCOUNTRY_3
.STRING "UNUSED",0
.EVEN
DJOYSTICK_0
.STRING "8 WAY JOYSTICKS",0
.EVEN
DJOYSTICK_1
.STRING "4 WAY JOYSTICKS",0
.EVEN
DPLAYER_TAB
.LONG DPLAYER_0, DPLAYER_1, DPLAYER_2, DPLAYER_3
DPLAYER_0
.STRING "4 PLAYER",0
.EVEN
DPLAYER_1
.STRING "3 PLAYER",0
.EVEN
DPLAYER_2
.STRING "2 PLAYER",0
.EVEN
DPLAYER_3
.STRING "1 PLAYER",0
.EVEN
DFREEZE_0
.STRING "VIDEO FREEZE",0
.EVEN
DTEST_0
.STRING "TEST SWITCH",0
.EVEN
DUNUSED
.STRING "UNUSED",0
.EVEN
****DCOINTITLE
**** .STRING "543 - COINAGE",0
**** .EVEN
****UCOIN0 .STRING "000 USA 1",0
**** .EVEN
****UCOIN1 .STRING "001 USA 2",0
**** .EVEN
****UCOIN2 .STRING "010 USA 3",0
**** .EVEN
****UCOIN3 .STRING "011 USA 4",0
**** .EVEN
****UCOIN4 .STRING "100 USA 5",0
**** .EVEN
****UCOIN5 .STRING "101 USA 6",0
**** .EVEN
****UCOIN6 .STRING "110 USA 7",0
**** .EVEN
****UCOIN7 .STRING "111 FREEPLAY",0
**** .EVEN
****GCOIN0 .STRING "000 GERMAN 1",0
**** .EVEN
****GCOIN1 .STRING "001 GERMAN 2",0
**** .EVEN
****GCOIN2 .STRING "010 GERMAN 3",0
**** .EVEN
****GCOIN3 .STRING "011 GERMAN 4",0
**** .EVEN
****GCOIN4 .STRING "100 UNUSED",0
**** .EVEN
****GCOIN5 .STRING "101 UNUSED",0
**** .EVEN
****GCOIN6 .STRING "110 UNUSED",0
**** .EVEN
****FCOIN0 .STRING "000 FRANCE 1",0
**** .EVEN
****FCOIN1 .STRING "001 FRANCE 2",0
**** .EVEN
****FCOIN2 .STRING "010 FRANCE 3",0
**** .EVEN
****FCOIN3 .STRING "011 FRANCE 4",0
**** .EVEN
****FCOIN4 .STRING "100 FRANCE 5",0
**** .EVEN
****FCOIN5 .STRING "101 FRANCE 6",0
**** .EVEN
****FCOIN6 .STRING "110 FRANCE 7",0
**** .EVEN
****UCOINTAB
**** .LONG UCOIN0, UCOIN1, UCOIN2, UCOIN3, UCOIN4, UCOIN5, UCOIN6, UCOIN7,0
****GCOINTAB
**** .LONG GCOIN0, GCOIN1, GCOIN2, GCOIN3, GCOIN4, GCOIN5, GCOIN6, UCOIN7,0
****FCOINTAB
**** .LONG FCOIN0, FCOIN1, FCOIN2, FCOIN3, FCOIN4, FCOIN5, FCOIN6, UCOIN7,0
****COINTAB
**** .LONG UCOINTAB, GCOINTAB, FCOINTAB, UCOINTAB
****DUCOIN0 .STRING "USA 1",0
**** .EVEN
****DUCOIN1 .STRING "USA 2",0
**** .EVEN
****DUCOIN2 .STRING "USA 3",0
**** .EVEN
****DUCOIN3 .STRING "USA 4",0
**** .EVEN
****DUCOIN4 .STRING "USA 5",0
**** .EVEN
****DUCOIN5 .STRING "USA 6",0
**** .EVEN
****DUCOIN6 .STRING "USA 7",0
**** .EVEN
DUCOIN7 .STRING "FREEPLAY",0
.EVEN
****DGCOIN0 .STRING "GERMAN 1",0
**** .EVEN
****DGCOIN1 .STRING "GERMAN 2",0
**** .EVEN
****DGCOIN2 .STRING "GERMAN 3",0
**** .EVEN
****DGCOIN3 .STRING "GERMAN 4",0
**** .EVEN
DGCOIN4 .STRING "UNUSED",0
.EVEN
****DGCOIN5 .STRING "UNUSED",0
**** .EVEN
****DGCOIN6 .STRING "UNUSED",0
**** .EVEN
****DFCOIN0 .STRING "FRANCE 1",0
**** .EVEN
****DFCOIN1 .STRING "FRANCE 2",0
**** .EVEN
****DFCOIN2 .STRING "FRANCE 3",0
**** .EVEN
****DFCOIN3 .STRING "FRANCE 4",0
**** .EVEN
****DFCOIN4 .STRING "FRANCE 9",0
**** .EVEN
****DFCOIN5 .STRING "FRANCE 10",0
**** .EVEN
****DFCOIN6 .STRING "FRANCE 11",0
**** .EVEN
DUCOINTAB
.LONG USA_1,USA_2,USA_3,USA_4,USA_ELECTITLE,DGCOIN4
.LONG DGCOIN4,DUCOIN7
DGCOINTAB
.LONG GERMAN_1,GERMAN_2,GERMAN_3,GERMAN_4,GERMAN_ELECTITLE
.LONG DGCOIN4,DGCOIN4,DUCOIN7
DFCOINTAB
.LONG FRENCH_1,FRENCH_2,FRENCH_3,FRENCH_4,FRENCH_ELECTITLE
.LONG DGCOIN4,DGCOIN4,DUCOIN7
DCOINTAB
.LONG DUCOINTAB, DGCOINTAB, DFCOINTAB, DUCOINTAB
****DCOUNTRYTITLE
**** .STRING "21 - COUNTRY",0
**** .EVEN
****DCOUNTRY00
**** .STRING "00 USA",0
**** .EVEN
****DCOUNTRY01
**** .STRING "01 GERMAN",0
**** .EVEN
****DCOUNTRY10
**** .STRING "10 FRENCH",0
**** .EVEN
****DCOUNTRY11
**** .STRING "11 UNUSED",0
**** .EVEN
****DPLAYERSTITLE
**** .STRING "65 - PLAYER",0
**** .EVEN
****DPLAYERS00
**** .STRING "00 4 PLAYER",0
**** .EVEN
****DPLAYERS01
**** .STRING "01 3 PLAYER",0
**** .EVEN
****DPLAYERS10
**** .STRING "10 2 PLAYER",0
**** .EVEN
****DPLAYERS11
**** .STRING "11 1 PLAYER",0
**** .EVEN
.ENDIF
**************************************************************************
* *
* CPU BOARD INFORMATION *
* *
**************************************************************************
CPU_VECS:
VECMAC TROG_WHITE,5,15,390,15 ; BOARD OUTLINE
VECMAC TROG_WHITE,390,15,390,254
VECMAC TROG_WHITE,5,254,390,254
VECMAC TROG_WHITE,5,15,5,100
VECMAC TROG_WHITE,5,100,15,100
VECMAC TROG_WHITE,15,100,15,115
VECMAC TROG_WHITE,5,115,15,115
VECMAC TROG_WHITE,5,115,5,135
VECMAC TROG_WHITE,5,135,15,135
VECMAC TROG_WHITE,15,135,15,138
VECMAC TROG_WHITE,5,138,15,138
VECMAC TROG_WHITE,5,138,5,215
VECMAC TROG_WHITE,5,215,15,215
VECMAC TROG_WHITE,15,215,15,230
VECMAC TROG_WHITE,5,230,15,230
VECMAC TROG_WHITE,5,230,5,254
.LONG 0
CPUXBASE EQU 5
CPUYBASE EQU 5
CPU_CHIPS:
CRAM1 CHIPMAC 0,120,25,20,40,7,12,CNAME5,1,2,2,1 ; COLOR RAM
CRAM2 CHIPMAC 1,120,70,20,40,7,8,CNAME23,1,2,2,1 ; COLOR RAM
VRAM1 CHIPMAC 2,200,25,15,35,5,5,CNAME10,1,2,2,1 ; BANK 1 VIDEO RAM
VRAM2 CHIPMAC 3,217,25,15,35,5,5,CNAME11,1,2,2,1
VRAM3 CHIPMAC 4,234,25,15,35,5,5,CNAME12,1,2,2,0
VRAM4 CHIPMAC 5,251,25,15,35,5,5,CNAME13,1,2,2,0
VRAM5 CHIPMAC 6,268,25,15,35,5,5,CNAME14,1,2,2,0
VRAM6 CHIPMAC 7,285,25,15,35,5,5,CNAME15,1,2,2,0
VRAM7 CHIPMAC 8,200,70,15,35,5,5,CNAME28,1,2,2,1 ; BANK 2 VIDEO RAM
VRAM8 CHIPMAC 9,217,70,15,35,5,5,CNAME29,1,2,2,1
VRAM9 CHIPMAC 10,234,70,15,35,5,5,CNAME30,1,2,2,1
VRAM10 CHIPMAC 11,251,70,15,35,5,5,CNAME31,1,2,2,1
VRAM11 CHIPMAC 12,268,70,15,35,5,5,CNAME32,1,2,2,1
VRAM12 CHIPMAC 13,285,70,15,35,5,5,CNAME33,1,2,2,1
CPU CHIPMAC 0,330,80,35,35,8,14,CNAME36,0,3,3,1 ; CPU
DMA CHIPMAC 0,320,175,45,40,12,18,CNAME99,0,42,3,1 ; DMA
PROM1 CHIPMAC 0,90,167,20,40,7,8,CNAME89,1,2,2,1 ; PROGRAM ROM 1
PROM2 CHIPMAC 1,90,210,20,40,7,3,CNAME105,1,2,2,1 ; PROGRAM ROM 2
IROM1 CHIPMAC 1,130,167,20,40,7,8,CNAME90,1,2,2,1 ; IMAGE ROM
IROM2 CHIPMAC 2,152,167,20,40,7,8,CNAME91,1,2,2,1 ; IMAGE ROM
IROM3 CHIPMAC 3,174,167,20,40,7,8,CNAME92,1,2,2,0 ; IMAGE ROM
IROM4 CHIPMAC 4,196,167,20,40,7,8,CNAME93,1,2,2,0 ; IMAGE ROM
IROM5 CHIPMAC 5,228,167,20,40,7,8,CNAME95,1,2,2,1 ; IMAGE ROM
IROM6 CHIPMAC 6,250,167,20,40,7,8,CNAME96,1,2,2,1 ; IMAGE ROM
IROM7 CHIPMAC 7,272,167,20,40,7,8,CNAME97,1,2,2,1 ; IMAGE ROM
IROM8 CHIPMAC 8,294,167,20,40,7,8,CNAME98,1,2,2,0 ; IMAGE ROM
IROM9 CHIPMAC 9,130,210,20,40,7,3,CNAME106,1,2,2,1 ; IMAGE ROM
IROM10 CHIPMAC 10,152,210,20,40,7,3,CNAME107,1,2,2,1 ; IMAGE ROM
IROM11 CHIPMAC 11,174,210,20,40,7,3,CNAME108,1,2,2,0 ; IMAGE ROM
IROM12 CHIPMAC 12,196,210,20,40,7,3,CNAME109,1,2,2,0 ; IMAGE ROM
IROM13 CHIPMAC 13,228,210,20,40,7,3,CNAME111,1,2,2,1 ; IMAGE ROM
IROM14 CHIPMAC 14,250,210,20,40,7,3,CNAME112,1,2,2,1 ; IMAGE ROM
IROM15 CHIPMAC 15,272,210,20,40,7,3,CNAME113,1,2,2,1 ; IMAGE ROM
IROM16 CHIPMAC 16,294,210,20,40,7,3,CNAME114,1,2,2,0 ; IMAGE ROM
SRAM1 CHIPMAC 0,30,115,15,35,5,5,CNAME66,1,2,2,1 ; SCRATCH PAD
SRAM2 CHIPMAC 1,47,115,15,35,5,5,CNAME67,1,2,2,1 ; SCRATCH PAD
SRAM3 CHIPMAC 2,64,115,15,35,5,5,CNAME68,1,2,2,1 ; SCRATCH PAD
SRAM4 CHIPMAC 3,81,115,15,35,5,5,CNAME69,1,2,2,1 ; SCRATCH PAD
.LONG 0
VRAMTAB .LONG CRAM1,CRAM2
.LONG VRAM1,VRAM2,VRAM3,VRAM4,VRAM5,VRAM6
.LONG VRAM7,VRAM8,VRAM9,VRAM10,VRAM11,VRAM12
.LONG 0
PROMTAB .LONG PROM1,PROM2
.LONG 0
IROMTAB .LONG IROM1,IROM2,IROM3,IROM4
.LONG IROM5,IROM6,IROM7,IROM8
.LONG IROM9,IROM10,IROM11,IROM12
.LONG IROM13,IROM14,IROM15,IROM16
.LONG 0
SRAMTAB .LONG SRAM1,SRAM2,SRAM3,SRAM4
.LONG 0
CNAME5
.STRING "U5",0
.EVEN
CNAME10
.STRING "U10",0
.EVEN
CNAME11
.STRING "U11",0
.EVEN
CNAME12
.STRING "U12",0
.EVEN
CNAME13
.STRING "U13",0
.EVEN
CNAME14
.STRING "U14",0
.EVEN
CNAME15
.STRING "U15",0
.EVEN
CNAME23
.STRING "U23",0
.EVEN
CNAME28
.STRING "U28",0
.EVEN
CNAME29
.STRING "U29",0
.EVEN
CNAME30
.STRING "U30",0
.EVEN
CNAME31
.STRING "U31",0
.EVEN
CNAME32
.STRING "U32",0
.EVEN
CNAME33
.STRING "U33",0
.EVEN
CNAME36
.STRING "U36",0
.EVEN
CNAME49
.STRING "U49",0
.EVEN
CNAME66
.STRING "U66",0
.EVEN
CNAME67
.STRING "U67",0
.EVEN
CNAME68
.STRING "U68",0
.EVEN
CNAME69
.STRING "U69",0
.EVEN
CNAME89
.STRING "U89",0
.EVEN
CNAME90
.STRING "U90",0
.EVEN
CNAME91
.STRING "U91",0
.EVEN
CNAME92
.STRING "U92",0
.EVEN
CNAME93
.STRING "U93",0
.EVEN
CNAME95
.STRING "U95",0
.EVEN
CNAME96
.STRING "U96",0
.EVEN
CNAME97
.STRING "U97",0
.EVEN
CNAME98
.STRING "U98",0
.EVEN
CNAME99
.STRING "U99",0
.EVEN
CNAME105
.STRING "U105",0
.EVEN
CNAME106
.STRING "U106",0
.EVEN
CNAME107
.STRING "U107",0
.EVEN
CNAME108
.STRING "U108",0
.EVEN
CNAME109
.STRING "U109",0
.EVEN
CNAME111
.STRING "U111",0
.EVEN
CNAME112
.STRING "U112",0
.EVEN
CNAME113
.STRING "U113",0
.EVEN
CNAME114
.STRING "U114",0
.EVEN
CNAME115
.STRING "U115",0
.EVEN
**************************************************************************
* *
* RAM CHIP DATA *
* *
**************************************************************************
;
; MAKE SURE THESE TABLES CORRESPOND WITH THE STUFF ABOVE
;
VRAMCHIPS:
; COLOR RAMS
RAM_CHIP 0,0, 8, 16, 1800008H, 180FFF8H
RAM_CHIP 0,1, 8, 16, 1800000H, 180FFF0H
; VIDEO RAMS
RAM_CHIP 0,10, 4, 32, 0000018H, 01FFFF8H ; U30 ( 24 - 27 )
RAM_CHIP 0,11, 4, 32, 0000010H, 01FFFF0H ; U31 ( 16 - 19 )
RAM_CHIP 0,12, 4, 32, 0000008H, 01FFFE8H ; U32 ( 8 - 11 )
RAM_CHIP 0,13, 4, 32, 0000000H, 01FFFE0H ; U33 ( 0 - 3 )
.LONG 0
PALCHIPS:
; VIDEO PALETTE RAMS
RAM_CHIP 0,2, 4, 32, 000001CH, 01FFFFCH ; U10 ( 28 - 31 )
RAM_CHIP 0,3, 4, 32, 0000014H, 01FFFF4H ; U11 ( 20 - 23 )
RAM_CHIP 0,8, 4, 32, 000000CH, 01FFFECH ; U28 ( 12 - 15 )
RAM_CHIP 0,9, 4, 32, 0000004H, 01FFFE4H ; U29 ( 4 - 7 )
.LONG 0
; SCRATCH RAMS
SRAMCHECK
.STRING "CHECKING SCRATCH RAMS",0
.EVEN
SRAMCHIPS
RAM_CHIP SRAM4,3, 4, 16, 1000000H, 10FFFF0H ; U69 ( 0 - 3 )
RAM_CHIP SRAM3,2, 4, 16, 1000004H, 10FFFF4H ; U68 ( 4 - 7 )
RAM_CHIP SRAM2,1, 4, 16, 1000008H, 10FFFF8H ; U67 ( 8 - 11 )
RAM_CHIP SRAM1,0, 4, 16, 100000CH, 10FFFFCH ; U66 ( 12 - 15 )
.LONG 0
**************************************************************************
* *
* PROGRAM CHECKSUMS *
* *
* THE TWO PROGRAM CHECKSUMS MUST BE GLOBALLY DEFINED *
* AS CHECKSUM0 AND CHECKSUM1 IF YOU WISH TO USE THE *
* AUTOMATIC SREC CHECKSUMMER. ENTER 34010 WHEN ASKED. *
* *
**************************************************************************
PROMCHIPS
ROM_CHIP PROM1,0,0,0, 0FFE00000H, 0FFFFFFF0H, 0FFFFH ; U105
ROM_CHIP PROM2,1,0,0, 0FFE00008H, 0FFFFFFF8H, 0FFFFH ; U89
.LONG 0
.SECT "CKSUMS"
CHECKSUM0
.WORD 0FFFFH ;U105 CHECKSUM
CHECKSUM1
.WORD 0FFFFH ;U89 CHECKSUM
.LONG 0 ;CHECKSUM PATCH SPACE
.TEXT
**************************************************************************
* *
* IMAGE ROM CHECKSUM TABLES *
* *
* NOTE: COMMENT OUT ANY UNSTUFFED PARTS THAT *
* EXIST BEFORE THE .LONG 0 TERMINATOR! *
* *
**************************************************************************
IROMCHIPS
ROM_CHIP IROM13,13, 8, 0, 2000000H, 23FFFFFH, 0CB32H ; U111
ROM_CHIP IROM5, 5, 8, 1, 2000000H, 23FFFFFH, 07006H ; U95
ROM_CHIP IROM14,14, 8, 0, 2400000H, 27FFFFFH, 01059H ; U112
ROM_CHIP IROM6, 6, 8, 1, 2400000H, 27FFFFFH, 019CDH ; U96
ROM_CHIP IROM15,15, 8, 0, 2800000H, 2BFFFFFH, 0C5CEH ; U113
ROM_CHIP IROM7, 7, 8, 1, 2800000H, 2BFFFFFH, 02E1AH ; U97
*** ROM_CHIP IROM16,16, 8, 0, 2C00000H, 2FFFFFFH, 0EAFDH ; U114
*** ROM_CHIP IROM8, 8, 8, 1, 2C00000H, 2FFFFFFH, 0EAFDH ; U98
;
; PROPER ADDRESSING FOR THE FIRST 8 EPROMS ( AT 3000000H )
;
ROM_CHIP IROM9, 9, 8, 2, 3000000H, 33FFFFFH, 01317H ; U106
ROM_CHIP IROM1, 1, 8, 3, 3000000H, 33FFFFFH, 0E772H ; U90
ROM_CHIP IROM10,10, 8, 2, 3400000H, 37FFFFFH, 07CCEH ; U107
ROM_CHIP IROM2, 2, 8, 3, 3400000H, 37FFFFFH, 07676H ; U91
.LONG 0 ; FORCE IT TO STOP HERE
ROM_CHIP IROM11,11, 8, 2, 3800000H, 3BFFFFFH, 0EAFDH ; U108
ROM_CHIP IROM3, 3, 8, 3, 3800000H, 3BFFFFFH, 0EAFDH ; U92
ROM_CHIP IROM12,12, 8, 2, 3C00000H, 3FFFFFFH, 0EAFDH ; U109
ROM_CHIP IROM4, 4, 8, 3, 3C00000H, 3FFFFFFH, 0EAFDH ; U93
.LONG 0
.END