4335 lines
86 KiB
NASM
Executable File
4335 lines
86 KiB
NASM
Executable File
**************************************************************
|
||
*
|
||
* Software: JAMIE BEGELMAN, KURT MAHAN, EUGENE P. JARVIS
|
||
* Initiated: ?
|
||
*
|
||
* Modified: Shawn Liptak, 11/14/91 -Total carnage clean up
|
||
* Shawn Liptak, 1/20/92 -DIP switch test
|
||
* Shawn Liptak, 1/24/92 -Added line_draw
|
||
* Shawn Liptak, 2/20/92 -Basketball cleanup
|
||
* GEORGE PETRO, 1/17/93 -NBA JAM
|
||
*
|
||
* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC.
|
||
*
|
||
*.Last mod - 3/24/93 16:48
|
||
**************************************************************
|
||
.width 132
|
||
.option b,d,l,t
|
||
.mnolist
|
||
|
||
|
||
.include "gsp.equ"
|
||
.include "sys.equ"
|
||
.include mproc.equ
|
||
.include mac2.asm
|
||
.include link.equ
|
||
.include imgtbl.glo
|
||
; .include "imgtbl2.glo"
|
||
.include "shawn.hdr"
|
||
.INCLUDE GAME.EQU
|
||
.INCLUDE DIPEQU.ASM
|
||
|
||
|
||
SCRXFUDGE equ 56
|
||
**************************************************************************
|
||
* *
|
||
* DEFS AND REFS *
|
||
* *
|
||
**************************************************************************
|
||
.ref fudge_switches, fudge_switches_diag, CKTEST, CPU_RET
|
||
.REF SNDSND,INTIO,WARMSET,GET_AUD,STORE_AUDIT,WDOGDIS
|
||
.ref dirqtimer, AUD1, GAMSTATE, KILL_AUD, PCMOSRET
|
||
.ref CLR_AUD, FAC_SET, CMOS_VAL, ROM_NAME
|
||
|
||
.DEF POWERTST, DIAGCPUTEST, POWERCMOS
|
||
.def SWITCHTEST, SWSET1, SWSET2
|
||
.DEF CROSS_H,COL_BARS,BURN_IN,STRNEW1
|
||
|
||
.DEF CIRCLE,HVLINE,STRING,RECTANGLE,POINT,DSCRCLR,INITCOLR
|
||
.DEF READ_DIP
|
||
|
||
.REF SNDTST
|
||
.REF SYSCOPY
|
||
*SYMBOLS IN MENU.ASM
|
||
.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 DIPCOINTAB
|
||
|
||
|
||
.REF GET_ADJ, GET_CSPT, NO_CREDS
|
||
.REF PUT_ADJ, CRED_P, HEXTOASC, F_ADC_S, SET_COIN_ADJ
|
||
.REF init_all, mainlp, DIAG_COLORS
|
||
|
||
*
|
||
*DIAGNOSTIC SOUND EQUATES
|
||
*
|
||
CMOS_ERROR_SND .EQU 0FF92H
|
||
CPU_ERROR_SND .EQU 0FF92H
|
||
DIP_SND .EQU 0FF83H
|
||
SWITCH_SND .EQU 0FF80H
|
||
|
||
.BSS SWSET1,32 ; FOR SWITCH TEST
|
||
.BSS SWSET2,32
|
||
|
||
.BSS DIPVAL,16
|
||
.BSS DIP1ST,16
|
||
|
||
.BSS FORCEDIP,16 ; FOR FORCING THE USE OF THE DIP
|
||
.BSS CERRORS,32
|
||
.BSS CPASSES,32
|
||
.BSS SCHANGE,16
|
||
|
||
**************************************************************************
|
||
* *
|
||
* USEFUL MACROS *
|
||
* *
|
||
**************************************************************************
|
||
*
|
||
* TIMED PAUSE
|
||
*
|
||
PAUSE .macro TIME, REG
|
||
MOVI :TIME:,:REG:,L
|
||
LABEL? NOP
|
||
DSJS :REG:,LABEL?
|
||
.endm
|
||
|
||
*BIT SET
|
||
* BSET BIT# 0-31(KONSTANT OR REGISTER),REGISTER TO SET BIT IN
|
||
* NOTE: A14 IS DESTROYED, 'A' FILE REGISTERS ONLY
|
||
|
||
BSET .macro P1,R1
|
||
MOVK 1,A14
|
||
SLL :P1:,A14
|
||
OR A14,:R1:
|
||
.endm
|
||
|
||
|
||
*
|
||
*RJST - RIGHT JUSTIFIES BITS IN A LONG WORD, I.E. RIGHTMOST BIT
|
||
* TO BIT POSITION 0
|
||
* RJST REG
|
||
RJST .macro REG
|
||
MOVE :REG:,:REG:
|
||
JRZ MX?
|
||
MLP?
|
||
SRL 1,:REG:
|
||
JRNC MLP?
|
||
SLL 1,:REG:
|
||
ADDK 1,:REG:
|
||
MX?
|
||
.endm
|
||
|
||
|
||
BUT_MAC .macro X,Y,RADIUS,COLOR,MASK,SHIFT,EXTEND
|
||
.WORD :X:
|
||
.WORD :Y:
|
||
.WORD :RADIUS:
|
||
.LONG :COLOR:
|
||
.LONG :MASK:
|
||
.WORD :SHIFT:
|
||
.WORD :EXTEND:
|
||
.endm
|
||
|
||
STR_MAC .macro X,Y,STRING,COLOR,DIR
|
||
.WORD :X:
|
||
.WORD :Y:
|
||
.LONG :STRING:
|
||
.WORD :COLOR:
|
||
.WORD :DIR:
|
||
.endm
|
||
|
||
VECMAC .macro COLOR,X1,Y1,X2,Y2
|
||
.WORD :COLOR:
|
||
.WORD :X1:
|
||
.WORD :Y1:
|
||
.WORD :X2:
|
||
.WORD :Y2:
|
||
.endm
|
||
|
||
DOTMAC .macro COLOR,X,Y
|
||
.WORD :COLOR:
|
||
.WORD :X:
|
||
.WORD :Y:
|
||
.endm
|
||
|
||
RECTMAC .macro COLOR,X,Y,W,H
|
||
.WORD :W:
|
||
.WORD :H:
|
||
.WORD :X:
|
||
.WORD :Y:
|
||
.WORD :COLOR:
|
||
.endm
|
||
|
||
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:
|
||
.endm
|
||
|
||
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:
|
||
.endm
|
||
|
||
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:
|
||
|
||
.endm
|
||
|
||
|
||
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
|
||
|
||
|
||
**************************************************************************
|
||
* *
|
||
* POWERTST *
|
||
* *
|
||
* POWERUP SELF TEST ROUTINES *
|
||
* *
|
||
* ENTRY *
|
||
* NOTHING *
|
||
* *
|
||
* EXIT *
|
||
* NOTHING *
|
||
* *
|
||
**************************************************************************
|
||
POWERTST
|
||
dint
|
||
setf 16,1,0
|
||
setf 32,0,1
|
||
MOVI STCKST,SP,L
|
||
move a0,@WATCHDOG ;Reset
|
||
|
||
; HALT DMA AND ENABLE CACHE
|
||
|
||
clr a14
|
||
move a14,@DMACTRL
|
||
move a14,@DMACTRL
|
||
|
||
FCALL INTIO,B6
|
||
|
||
; DISABLE VIDEO PALETTE RAMS, AUTOERASE AND ERROR LED
|
||
|
||
MOVI SYSCINIT,A13
|
||
MOVE A13,@SYSCTRL
|
||
|
||
FCALL CPUTEST,SP
|
||
JAUC WARMSET
|
||
|
||
|
||
|
||
|
||
**************************************************************************
|
||
* *
|
||
* 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,@SYSCTRL,W
|
||
|
||
CALLA WDOGDIS ; GET RID OF WATCH DOG
|
||
|
||
CLR A13 ; USED TO DECIDE WHETHER PAUSE OR NOT
|
||
MOVE A13,@DMACTRL,W
|
||
MOVE A13,@DMACTRL,W
|
||
FCALL INITCOLR,B5 ; FIX UP THE COLORS
|
||
FCALL INTIO,B6
|
||
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 COLOR_YELLOW,A3
|
||
FCALL STRING,B6
|
||
|
||
CALLA CMOS_VAL ; CHECKSUM AUDITS/ADJUSTMENTS
|
||
JREQ CMOSOK
|
||
*
|
||
* BAD CHECKSUM ON POWERUP ----> FACTORY SET
|
||
*
|
||
; CALLA RES_ALL ;ALL TIME TABLE
|
||
clr a0 ;Full
|
||
CALLA FAC_SET
|
||
CALLA CLR_AUD
|
||
|
||
MOVK 1,A13 ; FLAG ERROR
|
||
CALLA CMOS_VAL ; TRY AGAIN
|
||
JREQ CMOSB1 ; BR = OK WE'RE IN
|
||
|
||
MOVI CMOS_BAD,A0
|
||
FCALL STRINGCENTER,B6
|
||
ADDI [50,0],A1
|
||
CLR A2
|
||
MOVI COLOR_RED,A3
|
||
FCALL STRING,B6
|
||
MOVI CMOS_UNFAC,A0
|
||
FCALL STRINGCENTER,B6
|
||
ADDI [65,0],A1
|
||
CLR A2
|
||
MOVI COLOR_RED,A3
|
||
FCALL STRING,B6
|
||
JRUC CMOS1
|
||
CMOSB1
|
||
MOVI CMOS_FACRES,A0
|
||
FCALL STRINGCENTER,B6
|
||
ADDI [50,0],A1
|
||
CLR A2
|
||
MOVI COLOR_RED,A3
|
||
FCALL STRING,B6
|
||
JRUC CMOS1
|
||
CMOSOK
|
||
MOVI CMOS_OK,A0
|
||
FCALL STRINGCENTER,B6
|
||
ADDI [50,0],A1
|
||
CLR A2
|
||
MOVI COLOR_GREEN,A3
|
||
FCALL STRING,B6
|
||
|
||
CMOS1
|
||
CALLA CRED_P ;CHECK OUT CREDITS, THIS WILL CLEAR
|
||
;IF NECESSARY. THANX LINKY!
|
||
|
||
CALLR READ_DIP
|
||
ANDI DPUSECMOS,A0
|
||
JRNZ CMOS3 ; BR = USING CMOS COINAGE
|
||
|
||
MOVI CMOS_DIP,A0
|
||
FCALL STRINGCENTER,B6
|
||
ADDI [110,0],A1
|
||
CLR A2
|
||
MOVI COLOR_WHITE,A3
|
||
FCALL STRING,B6
|
||
|
||
CALLR SET_DIP_COINAGE
|
||
JRUC CMOS4
|
||
|
||
CMOS3
|
||
;
|
||
; USING CMOS HERE
|
||
;
|
||
MOVI CMOS_CMOS,A0
|
||
FCALL STRINGCENTER,B6
|
||
ADDI [110,0],A1
|
||
CLR A2
|
||
MOVI COLOR_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 COLOR_RED,A3
|
||
FCALL STRING,B6
|
||
MOVK 1,A13 ; FLAG ERROR
|
||
CMOSRET
|
||
MOVE A13,A13
|
||
JRZ CTMP0
|
||
|
||
MOVI CMOS_ERROR_SND,A0
|
||
MOVE A0,@SOUND,W
|
||
|
||
MOVI CMOS_WAIT,A0
|
||
FCALL STRINGCENTER,B6
|
||
ADDI [230,0],A1
|
||
CLR A2
|
||
MOVI COLOR_RED,A3
|
||
FCALL STRING,B6
|
||
CALLA WDOGDIS ; DISABLE WOOF WOOF
|
||
|
||
CALLA fudge_switches ;get fudged switches in a0
|
||
andi BUTTONS|START_BITS,a0
|
||
MOVE A0,@SWSET1,L
|
||
CTMP1
|
||
move a0,@WATCHDOG ;Reset
|
||
CALLA fudge_switches ;get fudged switches in a0
|
||
andi BUTTONS|START_BITS,a0
|
||
MOVE @SWSET1,A1,L
|
||
CMP A0,A1
|
||
JRZ CTMP1
|
||
JRUC CTMP2
|
||
CTMP0
|
||
MOVI 200H,A0
|
||
CTMP_WAIT
|
||
move a0,@WATCHDOG ;Reset
|
||
PAUSE 1000H,B6
|
||
DSJS A0,CTMP_WAIT
|
||
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 UJ11 BAD",0
|
||
.EVEN
|
||
|
||
CMOS_UNFAC
|
||
.STRING "UNABLE TO RESTORE FACTORY SETTINGS",0
|
||
.EVEN
|
||
|
||
CMOS_OK
|
||
.STRING "CMOS OK",0
|
||
.EVEN
|
||
|
||
**************************************************************************
|
||
* *
|
||
* BURNIN *
|
||
* *
|
||
* FACTORY BURNIN TEST -- EXITS BY RESETING THE GAME *
|
||
* *
|
||
* ENTRY *
|
||
* NOTHING *
|
||
* *
|
||
* EXIT *
|
||
* NOTHING *
|
||
* *
|
||
* CALL *
|
||
* JAUC *
|
||
* *
|
||
**************************************************************************
|
||
|
||
BURN_IN:
|
||
DINT
|
||
MOVI AUDAUTO,A0 ;ZERO OUT BURNIN AUDIT
|
||
CALLA KILL_AUD
|
||
BURNLOOP
|
||
CALLA WDOGDIS ;MAKE SURE THE DOG IS ASLEEP
|
||
FCALL CPUTEST,SP
|
||
BURNSP:
|
||
setf 16,1,0
|
||
setf 32,0,1
|
||
MOVI STCKST,SP,L ;RESTORE THE STACK PTR
|
||
MOVI SYSCINIT,A0 ;RE-INITIALIZE SYSTEM CONTROL
|
||
MOVE A0,@SYSCTRL,W
|
||
MOVE A0,@SYSCOPY,W ;KEEP A COPY IN RAM
|
||
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,0,1 ; LONG WORD
|
||
MOVI STCKST,SP,L
|
||
CALLA init_all
|
||
|
||
CALLA DIAG_COLORS ;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,@GAMSTATE,W
|
||
JAUC mainlp
|
||
|
||
|
||
**************************************************************************
|
||
* *
|
||
* CPUTEST *
|
||
* *
|
||
* THE ACTUAL CPU TEST STUFF *
|
||
* *
|
||
* ENTRY *
|
||
* SP RETURN ADDRESS *
|
||
* *
|
||
* EXIT *
|
||
* WHO KNOWS *
|
||
* *
|
||
* CALL *
|
||
* FCALL CPUTEST,SP *
|
||
* *
|
||
**************************************************************************
|
||
CPUT_X .EQU 25 ;TEXT X POSITION
|
||
CPUT_Y1 .EQU 128 ;TEXT ROW 1 Y POSITION
|
||
CPUT_Y2 .EQU 140 ;TEXT ROW 2 Y POSITION
|
||
CPUT_Y3 .EQU 152 ;TEXT ROW 3 Y POSITION
|
||
CPUT_CLR .EQU [CPUT_Y1,CPUT_X] ;CLEAR START
|
||
CPUT_CLRS .EQU [CPUT_Y3-CPUT_Y1+15,200-CPUT_X]
|
||
|
||
CPUTEST:
|
||
move a0,@WATCHDOG ;Reset
|
||
FCALL INITCOLR,B5 ;HEY! IT LOOKS BETTER THIS WAY
|
||
FCALL DSCRCLR,B6 ;BLOW THE SCREEN OR IT LOOKS TOO UGLY
|
||
|
||
CLR B0
|
||
MOVI 0FFFCH,A13
|
||
MOVE A13,@SYSCTRL,W ;MAKE SURE WE'RE WRITING TO BIT MAP
|
||
MOVI VRAMCHIPS,A14 ;VERIFY BIT MAP
|
||
FCALL RAMCHECK,B5
|
||
|
||
; ENABLE VIDEO PALETTE MAP ACCESS
|
||
|
||
MOVI PAL_SELECT,A13
|
||
MOVE A13,@SYSCTRL,W
|
||
MOVI PALCHIPS,A14 ;VERIFY OBJECT PALETTE RAM
|
||
FCALL RAMCHECK,B5
|
||
MOVE B0,A12
|
||
|
||
; DISABLE VIDEO PALETTE MAP ACCESS
|
||
|
||
MOVI 0FFFCH,A13
|
||
MOVE A13,@SYSCTRL,W
|
||
FCALL INITCOLR,B5 ;RELOAD THE COLORS
|
||
FCALL DSCRCLR,B6
|
||
|
||
FCALL CPUDRAW,B5 ;SHOW THE CPU
|
||
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 PSRAMCK
|
||
PBADRAM
|
||
MOVI RAMBADMESS,A0
|
||
MOVI [CPUT_Y1,CPUT_X],A1
|
||
CLR A2
|
||
MOVI COLOR_RED,A3
|
||
FCALL STRING,B6
|
||
JRUC PCPUBAD
|
||
|
||
PSRAMCK
|
||
MOVI SRAMCHECK,A0
|
||
MOVI [CPUT_Y1,CPUT_X],A1
|
||
CLR A2
|
||
MOVI COLOR_YELLOW,A3
|
||
FCALL STRING,B6
|
||
|
||
CLR B0
|
||
MOVI SRAMCHIPS,A14 ;VERIFY SCRATCH RAMS
|
||
FCALL RAMCHECK,B5
|
||
MOVE B0,A12
|
||
|
||
MOVI CPUT_CLR,A0
|
||
MOVI CPUT_CLRS,A1
|
||
MOVI COLOR_BLACK,A2
|
||
FCALL RECTANGLE,B6
|
||
|
||
MOVE A12,A12
|
||
JRNZ PBADRAM
|
||
|
||
PROMCK
|
||
MOVI ROMCMESS,A0
|
||
MOVI [CPUT_Y1,CPUT_X],A1
|
||
CLR A2
|
||
MOVI COLOR_YELLOW,A3
|
||
FCALL STRING,B6
|
||
|
||
MOVI CPUEXIT1_MESS,A0
|
||
MOVI [CPUT_Y2,CPUT_X],A1
|
||
CLR A2
|
||
MOVI COLOR_YELLOW,A3
|
||
FCALL STRING,B6
|
||
|
||
MOVI CPUEXIT2_MESS,A0
|
||
MOVI [CPUT_Y3,CPUT_X],A1
|
||
CLR A2
|
||
MOVI COLOR_YELLOW,A3
|
||
FCALL STRING,B6
|
||
|
||
CLR B0 ;KEEP THE STATS HERE
|
||
|
||
MOVI PROMCHIPS,A14
|
||
FCALL ROMCHECK,B5
|
||
JRNZ PROMABORT
|
||
|
||
MOVI IROMCHIPS,A14
|
||
FCALL ROMCHECK,B5
|
||
PROMABORT
|
||
MOVE B0,A12
|
||
MOVI CPUT_CLR,A0
|
||
MOVI CPUT_CLRS,A1
|
||
MOVI COLOR_BLACK,A2
|
||
FCALL RECTANGLE,B6
|
||
|
||
MOVE A12,A12
|
||
JRNZ PBADROM
|
||
|
||
*WE CHECK ON THE DMA HERE
|
||
PDMACK
|
||
MOVI DMACMESS,A0
|
||
MOVI [CPUT_Y1,CPUT_X],A1
|
||
CLR A2
|
||
MOVI COLOR_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 CPUT_CLR,A0
|
||
MOVI CPUT_CLRS,A1
|
||
MOVI COLOR_BLACK,A2
|
||
FCALL RECTANGLE,B6
|
||
|
||
MOVE A12,A12
|
||
JRZ PCPUGOOD
|
||
MOVI DMABADMESS,A0
|
||
MOVI [CPUT_Y1,CPUT_X],A1
|
||
CLR A2
|
||
MOVI COLOR_RED,A3
|
||
FCALL STRING,B6
|
||
JRUC PCPUBAD
|
||
|
||
PBADROM
|
||
MOVI CPUT_CLR,A0
|
||
MOVI CPUT_CLRS,A1
|
||
MOVI COLOR_BLACK,A2
|
||
FCALL RECTANGLE,B6
|
||
MOVI ROMBADMESS,A0
|
||
MOVI [CPUT_Y1,CPUT_X],A1
|
||
CLR A2
|
||
MOVI COLOR_RED,A3
|
||
FCALL STRING,B6
|
||
|
||
PCPUBAD
|
||
MOVI CPUPAUSE,A0
|
||
MOVI [CPUT_Y2,CPUT_X],A1
|
||
CLR A2
|
||
MOVI COLOR_RED,A3
|
||
FCALL STRING,B6
|
||
|
||
PCPUWAIT
|
||
move a0,@WATCHDOG ;Reset
|
||
|
||
.IF TUNIT
|
||
MOVI CPU_ERROR_SND,A0
|
||
MOVE A0,@SOUND,W
|
||
.ELSE
|
||
MOVI 0FD00H|CPU_ERROR_SND,A0
|
||
MOVE A0,@SOUND,W
|
||
MOVI 0FF00H|CPU_ERROR_SND,A0
|
||
MOVE A0,@SOUND,W ; LET HIM HEAR IT
|
||
.ENDIF
|
||
|
||
MOVE A13,B5
|
||
PAUSE 10000,B6
|
||
FCALL fudge_switches_diag,B6
|
||
andi BUTTONS|START_BITS,a0
|
||
MOVE A0,B1
|
||
MOVI -1,B0 ; ASSUME DON'T TIMEOUT
|
||
CMPI DIAGSP,SP
|
||
JRZ PCPUTMP1
|
||
CMPI BURNSP,SP
|
||
JRZ PCPUTMP1
|
||
MOVI 200000H,B0
|
||
PCPUTMP1
|
||
move a0,@WATCHDOG ;Reset
|
||
MOVE B0,B0
|
||
JRN PCPUNOTIMEOUT
|
||
DEC B0
|
||
JRZ PCPURET ; TIMEOUT HERE
|
||
PCPUNOTIMEOUT
|
||
FCALL fudge_switches_diag,B6
|
||
andi BUTTONS|START_BITS,a0
|
||
MOVE B1,A1
|
||
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 UE13 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
|
||
|
||
CPUPAUSE
|
||
.STRING "PRESS ANY BUTTON",0
|
||
.EVEN
|
||
|
||
CPUEXIT1_MESS
|
||
.STRING "HOLD START BUTTON",0
|
||
.EVEN
|
||
CPUEXIT2_MESS
|
||
.STRING "TO EXIT.",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 COLOR_WHITE,A3
|
||
FCALL STRING,B6
|
||
MOVI BOARDSTRING2,A0
|
||
MOVI [37,13],A1
|
||
FCALL STRING,B6
|
||
MOVE A13,B5
|
||
FRET B5
|
||
|
||
BOARDSTRING
|
||
.STRING "A-14816-40043",0
|
||
.EVEN
|
||
|
||
BOARDSTRING2
|
||
.STRING "NBA JAM T.E.",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 COLOR_WHITE,A2
|
||
FCALL HVLINE,B6
|
||
MOVE A6,A0
|
||
MOVE A7,A1
|
||
ADDI [1,0],A1
|
||
MOVI COLOR_WHITE,A2
|
||
FCALL HVLINE,B6
|
||
MOVE A8,A0
|
||
MOVE A7,A1
|
||
MOVI COLOR_WHITE,A2
|
||
FCALL HVLINE,B6
|
||
MOVE A5,A0
|
||
MOVE A8,A1
|
||
MOVI COLOR_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 COLOR_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 COLOR_BLACK,A3
|
||
MOVE A11,A11 ; CHECK FOR COLOR
|
||
JRNZ COBLACK
|
||
MOVI COLOR_WHITE,A3
|
||
COBLACK
|
||
FCALL STRING,B6
|
||
FRET B5
|
||
|
||
CHIPCOLORS:
|
||
.WORD COLOR_BLACK
|
||
.WORD COLOR_GREEN
|
||
.WORD COLOR_RED
|
||
.WORD COLOR_GREY
|
||
|
||
**************************************************************************
|
||
* *
|
||
* DMACHECK *
|
||
* *
|
||
* CHECK THE DMA OUT *
|
||
* *
|
||
* ENTRY *
|
||
* B5 RETURN ADDRESS *
|
||
* *
|
||
* EXIT *
|
||
* A0 DMA STATUS *
|
||
* 0 = GOOD *
|
||
* 1 = BAD *
|
||
* *
|
||
**************************************************************************
|
||
DMACHECK
|
||
setf 16,1,0
|
||
|
||
move a0,@WATCHDOG ;Reset
|
||
CLR A14
|
||
MOVE A14,@DMACTRL,W
|
||
MOVE A14,@DMACTRL,W
|
||
|
||
MOVK DMACF4,A14
|
||
MOVE A14,@DMACONF,W ;ADJUST WINDOW RIGHT/LEFT BORDER
|
||
MOVI [511,0],A14
|
||
MOVE A14,@DMAWINDOW,L ;OPEN LEFT TO RIGHT
|
||
MOVI DMAWIN|DMACF4,A14
|
||
MOVE A14,@DMACONF,W ;ADJUST WINDOW RIGHT/LEFT BORDER
|
||
MOVI [511,0],A14
|
||
MOVE A14,@DMAWINDOW,L ;FULL HEIGHT WINDOW
|
||
MOVI [100H,100H],A14
|
||
MOVE A14,@DMASCALEX
|
||
|
||
MOVI [1,448],A14 ;BLOW OUT TRADEMARK
|
||
MOVE A14,@DMAHSIZE,L
|
||
|
||
CLR A14
|
||
MOVE A14,@DMAOFFST,W ;OFFSET
|
||
MOVE A14,@DMACONST,W ;CONSTANT
|
||
MOVE A14,@DMAHORIZ,L ;CLEAR DESTINATION ADDRESS
|
||
|
||
MOVI 2000000H,A14 ;DMA LOGO LOCATION
|
||
MOVE A14,@DMASAGL,L
|
||
|
||
MOVI 257,A14
|
||
MOVE A14,@DMAVERT,W ;OFFSCREEN PLOT
|
||
|
||
MOVI 0505H,A14
|
||
MOVE A14,@DMACMAP,W
|
||
|
||
MOVI 8003H,A14 ;USE IMAGE ROM - WRITE ALWAYS
|
||
MOVE A14,@DMACTRL,W ;KICK OFF THE DMA
|
||
|
||
MOVI 7FFFH,A14 ;LOAD TIMEOUT COUNTER
|
||
DMACWAIT
|
||
move a0,@WATCHDOG ;Reset
|
||
MOVE @DMACTRL,A0,W ;DMA BUSY?
|
||
JRNN DMADONE ;BR = NO, TIME TO CHECK
|
||
DSJS A14,DMACWAIT
|
||
JRUC DMACBAD ;DMA TIMED OUT
|
||
|
||
DMADONE
|
||
CLR A0 ;GET BACK TO A REAL PALETTE
|
||
MOVE A0,@DMACMAP,W
|
||
MOVI 0101000H,A0 ;LINEAR SCREEN LOCATION OF DATA
|
||
MOVI 2000000H,A1 ;DMA LOGO LOCATION
|
||
MOVI 448,A2 ;NUMBER OF BYTES TO COMPARE
|
||
DMACLOOP
|
||
MOVB *A0,A3 ;DESTINATION BYTE
|
||
; SLL 28,A3
|
||
; SRL 28,A3
|
||
MOVB *A1,A4 ;SOURCE BYTE
|
||
; SLL 28,A4
|
||
; SRL 28,A4
|
||
ADDK 8,A0
|
||
ADDK 8,A1
|
||
CMP A3,A4
|
||
JRNZ DMACBAD ;BR = DATA ERROR
|
||
DSJS A2,DMACLOOP
|
||
*
|
||
*CHECK DATA IN OBJECT PALETTE
|
||
*
|
||
MOVI PAL_SELECT,A13
|
||
MOVE A13,@SYSCTRL,W ;ENABLE PALETTE
|
||
|
||
MOVI 0101000H,A0 ;LOCATION
|
||
MOVI 224,A2 ;NUMBER OF WORDS TO COMPARE
|
||
DMACLOOP2
|
||
MOVE *A0+,A3,W
|
||
; ANDI 0F0FH,A3
|
||
CMPI 0505H,A3
|
||
JRNZ DMACBAD
|
||
DSJS A2,DMACLOOP2
|
||
CLR A0
|
||
JRUC DMACRET
|
||
DMACBAD
|
||
CLR A0 ;GET BACK TO A REAL PALETTE
|
||
MOVE A0,@DMACTRL,W
|
||
MOVE A0,@DMACTRL,W
|
||
MOVE A0,@DMACMAP,W
|
||
MOVK 1,A0
|
||
DMACRET
|
||
MOVI 0FFFCH,A13
|
||
MOVE A13,@SYSCTRL,W
|
||
|
||
SETF 16,0,0
|
||
|
||
MOVE A0,A0
|
||
FRET B5
|
||
|
||
|
||
DOG_COUNT .EQU 8000H ;EVERY 32K
|
||
.align
|
||
**************************************************************************
|
||
* *
|
||
* 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:
|
||
move a0,@WATCHDOG ;Reset
|
||
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
|
||
CLR A5
|
||
MOVI DOG_COUNT,B14
|
||
|
||
RAC1
|
||
SLA 1,A7 ; GENERATE A PSEUDO
|
||
JRV RAC2 ; RANDOM NUMBER
|
||
movk 2,a4
|
||
or a4,a7
|
||
RAC2
|
||
MOVE A7,A6
|
||
ADDC A5,A6
|
||
|
||
MOVE A6,*A8+,1 ; WRITE
|
||
DSJS B14,RAC1_NODOG
|
||
movb a0,@WATCHDOG ;Reset
|
||
MOVI DOG_COUNT,B14 ;AND RELOAD COUNT
|
||
RAC1_NODOG
|
||
DSJS A9,RAC1
|
||
|
||
;READBACK IN ASCENDING ORDER
|
||
MOVE A13,A9 ; XEROX COUNT
|
||
MOVE A12,A8 ; XEROX START
|
||
|
||
MOVI RANDOM_SEED,A7
|
||
MOVI DOG_COUNT,B14
|
||
|
||
RAC3 SLA 1,A7 ; GENERATE A PSEUDO
|
||
JRV RAC4 ; RANDOM NUMBER
|
||
movk 2,a4
|
||
or a4,a7
|
||
RAC4 MOVE A7,A6
|
||
ADDC A5,A6
|
||
|
||
move *a8,a4,0 ;Read
|
||
add a11,a8
|
||
ZEXT A6
|
||
|
||
CMP A6,A4
|
||
jrne rac5 ;Error?
|
||
|
||
DSJS B14,RAC5_NODOG
|
||
movb a0,@WATCHDOG ;Reset
|
||
MOVI DOG_COUNT,B14 ;AND RELOAD COUNT
|
||
RAC5_NODOG
|
||
DSJS A9,RAC3
|
||
|
||
jruc showstat
|
||
|
||
rac5 ;Error!
|
||
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
|
||
|
||
|
||
showstat
|
||
SETF 16,0,0 ; RESET FIELDS
|
||
SETF 32,0,1
|
||
move a0,@WATCHDOG ;Reset
|
||
|
||
|
||
; 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
|
||
|
||
|
||
**************************************************************************
|
||
* *
|
||
* ROMCHECK - ROUTINE TO CHECKSUM THE PROGRAM AND IMAGE ROMS. *
|
||
* RETURNS *
|
||
* B0 = BITS SET FOR BAD ROMS. *
|
||
* Z = TEST FINISHED. *
|
||
* NZ = TEST ABORTED BY USER. *
|
||
* *
|
||
**************************************************************************
|
||
.align
|
||
|
||
ROMCHECK:
|
||
move a0,@WATCHDOG ;Reset
|
||
ROMLOOP
|
||
CLR B2
|
||
MOVE *A14(ROM_CKSM),A13,L ; CHECK TO SEE IF ROM SOCKET THERE
|
||
JRZ ROMEMPTY
|
||
CLR A8 ; CHECKSUM
|
||
|
||
MOVI DOG_COUNT,B14
|
||
|
||
MOVE *A14(ROM_SADR),A12,L ; STARTING ADDRESS
|
||
MOVE *A14(ROM_EADR),A13,L ; ENDING ADDRESS
|
||
MOVE *A14(ROM_ITLV),A11,W ; INTERLEAVE
|
||
;
|
||
; SUM UP A GIVEN IMAGE ROM -- THE TUNIT WAY
|
||
;
|
||
SUB A12,A13 ; (( EADDR - SADDR ) / INTERLEAVE) + 1
|
||
DIVU A11,A13
|
||
INC A13
|
||
setf 8,0,1
|
||
rcilp
|
||
move *a12,a7,1 ;Get a byte
|
||
add a11,a12
|
||
add a7,a8
|
||
dsjs b14,rcilp_nodog
|
||
move a0,@WATCHDOG ;Reset
|
||
movi DOG_COUNT,b14 ;AND RELOAD COUNT
|
||
rcilp_nodog
|
||
dsjs a13,rcilp
|
||
|
||
setf 32,0,1
|
||
|
||
*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 a0,@WATCHDOG ;Reset
|
||
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
|
||
*CHECKING FOR EARLY EXIT BY OPERATOR
|
||
MOVE @SWITCH,A13,L
|
||
ANDI START_BITS,A13
|
||
CMPI START_BITS,A13
|
||
JRNE ROMABORT
|
||
; MOVE A13,A8
|
||
; ANDI 00000004H,A13 ;CHECK PLAYER 1 START
|
||
; JRZ ROMABORT ;BR = IT'S PRESSED
|
||
; ANDI 00000020H,A8 ;CHECK PLAYER 2 START
|
||
; JRZ ROMABORT ;BR = IT'S PRESSED
|
||
JRUC ROMLOOP ;BACK FOR THE NEXT
|
||
*HERE ON OPERATOR ABORT
|
||
ROMABORT
|
||
CLRZ
|
||
ROMEMPTY
|
||
FRET B5
|
||
|
||
|
||
**************************************************************************
|
||
* *
|
||
* MONITOR STUFF *
|
||
* *
|
||
**************************************************************************
|
||
CROSS_H
|
||
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
|
||
**************************************************************************
|
||
* *
|
||
* MONITOR TEST DATA AREA *
|
||
* *
|
||
**************************************************************************
|
||
|
||
MON_VECS:
|
||
VECMAC ROBO_WHITE,004,004,390,004
|
||
VECMAC ROBO_WHITE,004,004,004,250
|
||
VECMAC ROBO_WHITE,004,250,390,250
|
||
VECMAC ROBO_WHITE,390,250,390,004
|
||
VECMAC ROBO_WHITE,060,005,060,250
|
||
VECMAC ROBO_WHITE,115,005,115,250
|
||
VECMAC ROBO_WHITE,170,005,170,250
|
||
VECMAC ROBO_WHITE,225,005,225,250
|
||
VECMAC ROBO_WHITE,280,005,280,250
|
||
VECMAC ROBO_WHITE,335,005,335,250
|
||
VECMAC ROBO_WHITE,005,054,390,054
|
||
VECMAC ROBO_WHITE,005,103,390,103
|
||
VECMAC ROBO_WHITE,005,152,390,152
|
||
VECMAC ROBO_WHITE,005,201,390,201
|
||
.LONG 0
|
||
|
||
MON_RECS:
|
||
VECMAC ROBO_RED, 182,000,030,005 ; TOP
|
||
VECMAC ROBO_GREEN, 182,005,030,006
|
||
VECMAC ROBO_RED, 182,250,030,005 ; BOTTOM
|
||
VECMAC ROBO_GREEN, 182,244,030,006
|
||
VECMAC ROBO_RED, 000,117,005,020 ; LEFT
|
||
VECMAC ROBO_GREEN, 005,117,006,020
|
||
VECMAC ROBO_RED, 390,117,005,020 ; RIGHT
|
||
VECMAC ROBO_GREEN, 384,117,006,020
|
||
.LONG 0
|
||
|
||
MON_DOTS:
|
||
DOTMAC ROBO_WHITE,032,029
|
||
DOTMAC ROBO_WHITE,087,029
|
||
DOTMAC ROBO_WHITE,142,029
|
||
DOTMAC ROBO_WHITE,197,029
|
||
DOTMAC ROBO_WHITE,252,029
|
||
DOTMAC ROBO_WHITE,307,029
|
||
DOTMAC ROBO_WHITE,362,029
|
||
|
||
DOTMAC ROBO_WHITE,032,078
|
||
DOTMAC ROBO_WHITE,087,078
|
||
DOTMAC ROBO_WHITE,142,078
|
||
DOTMAC ROBO_WHITE,197,078
|
||
DOTMAC ROBO_WHITE,252,078
|
||
DOTMAC ROBO_WHITE,307,078
|
||
DOTMAC ROBO_WHITE,362,078
|
||
|
||
DOTMAC ROBO_WHITE,032,127
|
||
DOTMAC ROBO_WHITE,087,127
|
||
DOTMAC ROBO_WHITE,142,127
|
||
DOTMAC ROBO_WHITE,197,127
|
||
DOTMAC ROBO_WHITE,252,127
|
||
DOTMAC ROBO_WHITE,307,127
|
||
DOTMAC ROBO_WHITE,362,127
|
||
|
||
DOTMAC ROBO_WHITE,032,176
|
||
DOTMAC ROBO_WHITE,087,176
|
||
DOTMAC ROBO_WHITE,142,176
|
||
DOTMAC ROBO_WHITE,197,176
|
||
DOTMAC ROBO_WHITE,252,176
|
||
DOTMAC ROBO_WHITE,307,176
|
||
DOTMAC ROBO_WHITE,362,176
|
||
|
||
DOTMAC ROBO_WHITE,032,225
|
||
DOTMAC ROBO_WHITE,087,225
|
||
DOTMAC ROBO_WHITE,142,225
|
||
DOTMAC ROBO_WHITE,197,225
|
||
DOTMAC ROBO_WHITE,252,225
|
||
DOTMAC ROBO_WHITE,307,225
|
||
DOTMAC ROBO_WHITE,362,225
|
||
.LONG 0
|
||
|
||
PRIMARY_COLORS:
|
||
RECTMAC ROBO_RED,0,0,395,255
|
||
RECTMAC ROBO_GREEN,0,0,395,255
|
||
RECTMAC ROBO_BLUE,0,0,395,255
|
||
.LONG 0
|
||
|
||
COLOR_BARS:
|
||
|
||
RECTMAC ROBO_BLACK, 0, 0, 49, 16
|
||
RECTMAC ROBO_BLACK, 49, 0, 49, 16
|
||
RECTMAC ROBO_BLACK, 98, 0, 49, 16
|
||
RECTMAC ROBO_BLACK, 147, 0, 49, 16
|
||
RECTMAC ROBO_BLACK, 196, 0, 49, 16
|
||
RECTMAC ROBO_BLACK, 245, 0, 49, 16
|
||
RECTMAC ROBO_BLACK, 294, 0, 49, 16
|
||
RECTMAC ROBO_BLACK, 343, 0, 49, 16
|
||
.LONG 0
|
||
|
||
|
||
|
||
**************************************************************************
|
||
* *
|
||
* COLORBAR *
|
||
* *
|
||
**************************************************************************
|
||
COL_BARS
|
||
COLORBAR
|
||
|
||
MOVI INTENSITIES_START,A0,L
|
||
MOVI COLRAM+100H,A1,L
|
||
|
||
MOVK 16, A2 ;5 BITS / COLOR
|
||
MOVK 8, A6 ;# COLOR BARS
|
||
CB3
|
||
ADDI >F00,A1 ;STEP TO NEXT PALETTE
|
||
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,@DMACTRL,W ; HALT THE DMA
|
||
MOVE A14,@DMACTRL,W
|
||
MOVI 0101H,A14
|
||
MOVE A14,A8
|
||
|
||
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
|
||
CB6
|
||
CLR A2 ; STARTING COLOR
|
||
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
|
||
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
|
||
|
||
**************************************************************************
|
||
* SWITCHTEST - Test regular or DIP switches
|
||
* A0=Mode (0=Switches, 1=DIPs)
|
||
|
||
DONEMASK EQU 00240000H ; P1 + P2 START
|
||
.BSS DONECNT,32 ; FOR SWITCH TEST
|
||
|
||
SWITCHTEST
|
||
PUSH a12,a13
|
||
|
||
subk 1,a0
|
||
jreq DIPTEST
|
||
|
||
; CALLA WDOGDIS
|
||
movk 10h,A13
|
||
MOVE A13,@DONECNT,L
|
||
CLR A13 ; THE HOLD ME REGISTER
|
||
MOVE A13,@SWSET1,L
|
||
MOVE A13,@SWSET2,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 BUT_STRS,A9
|
||
CALLR STR_PLOT ; PLOT THE BUTTON STRINGS
|
||
|
||
MOVI [180,0],A0
|
||
MOVI [180,400],A1
|
||
MOVI ROBO_WHITE,A2
|
||
FCALL HVLINE,B6 ; DRAW LITTLE WHITE LINE
|
||
SDLOOP
|
||
PULL a12,a13
|
||
SLEEPK 1
|
||
PUSH a12,a13
|
||
|
||
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
|
||
MOVE @DONECNT,A0,L ;REQUIRE A CERTAIN TIME
|
||
DEC A0
|
||
MOVE A0,@DONECNT,L
|
||
JRNE SDGO
|
||
|
||
switchx PULL a12,a13
|
||
RETP
|
||
|
||
SDGO
|
||
MOVE @SWSET1,A11,L
|
||
CMP A11,A10 ; CHECK FOR CHANGES
|
||
JRZ SDCK2
|
||
MOVE A10,@SWSET1,L
|
||
MOVE @SWITCH+32,A10,L
|
||
NOT A10
|
||
SLL 16,A10
|
||
SRL 16,A10
|
||
JRUC SDPRC1
|
||
SDCK2
|
||
MOVE @SWITCH+32,A10,L
|
||
NOT A10
|
||
SLL 16,A10
|
||
SRL 16,A10
|
||
MOVE @SWSET2,A11,L
|
||
CMP A11,A10
|
||
JRZ SDLOOP
|
||
SDPRC1
|
||
MOVE A10,@SWSET2,L
|
||
SDPROC
|
||
CLR A0
|
||
MOVE A0,@SCHANGE
|
||
|
||
MOVI BUT_TABLE,A9
|
||
CALLR BUT_PLOT
|
||
MOVI BUT_STRS,A9
|
||
CALLR STR_PLOT ; PLOT THE BUTTON STRINGS
|
||
MOVI JOY_TABLE,A9
|
||
CALLR JOY_UPDATE ; UPDATE THE JOYSTICK INFO
|
||
|
||
MOVE @SCHANGE,A0
|
||
JRZ SDLOOP
|
||
|
||
MOVI SWITCH_SND,A0
|
||
MOVE A0,@SOUND
|
||
JRUC SDLOOP
|
||
|
||
|
||
|
||
**************************************************************************
|
||
* *
|
||
* SET_DIP_COINAGE - SETUP COINAGE ACCORDING TO THE DIPSWITCHES *
|
||
* *
|
||
**************************************************************************
|
||
SET_DIP_COINAGE
|
||
MMTM SP,A0,A1,A2,A6
|
||
|
||
CALLR READ_DIP
|
||
MOVE A0,A2
|
||
ANDI DPUSECMOS,A2 ;USING CMOS?
|
||
JRNZ SDC_X ;BR=YES, DO NOT LOAD COINAGE
|
||
|
||
MOVE A0,A2
|
||
ANDI DPCOUNTRY,A0
|
||
|
||
SRL DPCOUNTRY_SRL,A0 ; CHANGE TO TO MULTIPLE OF 32
|
||
SLL 5,A0
|
||
|
||
ADDI DIPCOINTAB,A0
|
||
MOVE *A0,A1,L ; POINTER TO RIGHT COIN TABLE
|
||
|
||
ANDI DPCOINAGE,A2
|
||
CMPI DPCOINAGE,A2 ; CHECK FOR FREEPLAY
|
||
JRZ CMOS21
|
||
|
||
SRL DPCOINAGE_SRL,A2
|
||
SLL 4,A2
|
||
|
||
ADD A2,A1
|
||
MOVE *A1,A1,W ; WHICH COIN TABLE TO USE
|
||
|
||
MOVI ADJPRICE,A0
|
||
CALLA GET_ADJ ;GET THE COIN SELECT NUMBER BEING USED.
|
||
CMP A0,A1 ;DID WE CHANGE COIN MODES
|
||
JREQ SDC_SAMEC
|
||
CALLA NO_CREDS ;CLEAR CREDITS
|
||
CALLA CRED_P ;LINK-OUT!
|
||
SDC_SAMEC
|
||
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
|
||
MOVI ADJ1ST6,A0 ;MAKE THEM UNTOUCHED PLEASE
|
||
MOVK 1,A1
|
||
CALLA PUT_ADJ
|
||
|
||
CALLA F_ADC_S ;CHECKSUM THE ADJUSTMENTS
|
||
|
||
CALLA GET_CSPT
|
||
CALLA SET_COIN_ADJ ; SET THE ADJUSTMENTS UP IN CMOS
|
||
|
||
CALLA F_ADC_S ;CHECKSUM THE ADJUSTMENTS
|
||
|
||
JRUC SDC_X
|
||
CMOS21
|
||
MOVI ADJFREPL,A0
|
||
MOVK 1,A1 ; FREEPLAY, DUDE!
|
||
CALLA PUT_ADJ
|
||
JRUC CMOS20
|
||
SDC_X
|
||
MMFM SP,A0,A1,A2,A6
|
||
RETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* DIPTEST *
|
||
* *
|
||
* DIP SWITCH TESTING *
|
||
* *
|
||
**************************************************************************
|
||
|
||
DIPTEST:
|
||
MOVK 1,A14
|
||
MOVE A14,@DIP1ST,W ;YES THIS IS THE FIRST TIME THROUGH
|
||
CALLR READ_DIP
|
||
MOVE A0,@DIPVAL,W
|
||
|
||
DT_PLOT
|
||
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 SET_DIP_COINAGE
|
||
|
||
CALLR DIPPLOT
|
||
CALLR DIPSTATE
|
||
|
||
MOVE @DIP1ST,A14,W
|
||
JRNZ DTL_SKIP_SND
|
||
|
||
MOVI DIP_SND,A0
|
||
MOVE A0,@SOUND,W
|
||
|
||
DTL_SKIP_SND
|
||
CLRM @DIP1ST,W
|
||
|
||
CALLA fudge_switches ;get fudged switches in a0
|
||
andi BUTTONS|START_BITS,a0
|
||
MOVE A0,@SWSET1,L
|
||
DTLOOP
|
||
PULL a12,a13
|
||
SLEEPK 1
|
||
PUSH a12,a13
|
||
|
||
; CALLA CKTEST ; EMERGENCY EXIT
|
||
|
||
CALLA fudge_switches ;get fudged switches in a0
|
||
MOVE @SWSET1,A1,L
|
||
andi BUTTONS|START_BITS,a0
|
||
CMP A0,A1
|
||
JRNZ DT_X
|
||
|
||
CALLR READ_DIP
|
||
MOVE @DIPVAL,A1,W
|
||
ZEXT A1
|
||
CMP A0,A1
|
||
JRZ DTLOOP ;BR = NO CHANGE
|
||
MOVE A0,@DIPVAL,W ;SAVE THE OLD
|
||
JRUC DT_PLOT ;PLOT THE NEW SWITCH STUFF
|
||
DT_X
|
||
JRUC switchx
|
||
|
||
|
||
**************************************************************************
|
||
* *
|
||
* DIPSTATE *
|
||
* *
|
||
* PLOT OUT THE STATES OF ALL THE DIP SWITCHES *
|
||
* *
|
||
* ENTRY *
|
||
* NOTHING *
|
||
* *
|
||
* EXIT *
|
||
* NOTHING *
|
||
* *
|
||
**************************************************************************
|
||
DIPSTATE
|
||
MOVI [32,74],A0
|
||
MOVI [104,140],A1
|
||
MOVI COLOR_BLACK,A2
|
||
FCALL RECTANGLE,B6
|
||
MOVI [32,284],A0
|
||
MOVI [104,111],A1
|
||
MOVI COLOR_BLACK,A2
|
||
FCALL RECTANGLE,B6
|
||
|
||
CALLR READ_DIP
|
||
MOVE A0,A10 ;LET'S KEEP A COPY
|
||
|
||
CLR A2
|
||
MOVI COLOR_WHITE,A3
|
||
|
||
CLR A7
|
||
MOVI DUSECMOS_0,A1
|
||
ANDI DPUSECMOS,A0
|
||
JRZ DS1
|
||
MOVK 1,A7
|
||
MOVI DUSECMOS_1,A1
|
||
DS1
|
||
MOVE A1,A0
|
||
MOVI [39,75],A1
|
||
FCALL STRING,B6
|
||
|
||
*PLOT CURRENT COINAGE
|
||
MOVE A7,A7 ;ARE WE CMOS OR DIPSWITCH
|
||
JRZ DS_PC ;BR = DIPSWITCH
|
||
|
||
MOVI [63,75],A1
|
||
MOVI DUNUSED,A0 ;JUST PRINT UNUSED
|
||
FCALL STRING,B6
|
||
JRUC DS_SC ;AND GO FOR THE NEXT SWITCHES
|
||
|
||
DS_PC
|
||
MOVI COLOR_WHITE,A3
|
||
MOVI [51,75],A1
|
||
MOVI DCOINAGE,A0
|
||
FCALL STRING,B6
|
||
MOVE A10,A0
|
||
ANDI DPCOUNTRY,A0
|
||
SRL DPCOUNTRY_SRL,A0
|
||
SLL 5,A0
|
||
ADDI DCOINTAB,A0
|
||
MOVE *A0,A1,L ; POINTER TO RIGHT COIN TABLE
|
||
MOVE A10,A0
|
||
ANDI DPCOINAGE,A0
|
||
SRL DPCOINAGE_SRL,A0
|
||
SLL 5,A0
|
||
ADD A0,A1
|
||
MOVE *A1,A0,L ; NOW POINTING AT MESSAGE
|
||
CLR A2
|
||
MOVI [51,132],A1
|
||
FCALL STRING,B6
|
||
|
||
*PLOT CREDITS TO START, CREDITS TO CONTINUE
|
||
MOVI DTOSTART,A0
|
||
MOVI [63,90],A1
|
||
FCALL STRING,B6
|
||
|
||
MOVI DTOCONTINUE,A0
|
||
MOVI [75,90],A1
|
||
FCALL STRING,B6
|
||
|
||
MOVI ADJCSTRT,A0
|
||
CALLA GET_ADJ ; GET NUMBER NEEDED ( IN A0 )
|
||
MOVE A0,A8
|
||
CMPI 9,A8
|
||
JRLS DSTS_1
|
||
MOVK 9,A8
|
||
DSTS_1
|
||
CALLA HEXTOASC
|
||
MOVE A8,A0
|
||
MOVI [63,80],A1
|
||
FCALL STRING,B6
|
||
|
||
MOVI ADJCCONT,A0
|
||
CALLA GET_ADJ ; GET NUMBER NEEDED ( IN A0 )
|
||
MOVE A0,A8
|
||
CMPI 9,A8
|
||
JRLS DSTC_1
|
||
MOVK 9,A8
|
||
DSTC_1
|
||
CALLA HEXTOASC
|
||
MOVE A8,A0
|
||
MOVI [75,80],A1
|
||
FCALL STRING,B6
|
||
|
||
|
||
DS_SC
|
||
*PLOT COUNTRY SELECTION
|
||
MOVE A10,A0
|
||
ANDI DPCOUNTRY,A0
|
||
SRL DPCOUNTRY_SRL,A0
|
||
SLL 5,A0
|
||
ADDI DCOUNTRY_TAB,A0
|
||
MOVE *A0,A0,L
|
||
MOVI [93,75],A1
|
||
FCALL STRING,B6
|
||
|
||
*PLOT COIN COUNTER MODE
|
||
MOVE A10,A7
|
||
ANDI DPCOUNTER,A7
|
||
SRL DPCOUNTER_SRL,A7
|
||
SLL 6,A7
|
||
ADDI DCOUNTER_TAB,A7
|
||
MOVE *A7+,A0,L
|
||
MOVI [113,75],A1
|
||
FCALL STRING,B6
|
||
MOVE *A7+,A0,L
|
||
MOVI [125,75],A1
|
||
FCALL STRING,B6
|
||
|
||
|
||
*PLOT NUMBER OF PLAYERS ALLOWED
|
||
MOVE A10,A0 ;ADD THE FOLLOWING FOR PLAYER #
|
||
ANDI DPPLAYERS,A0
|
||
RJST A0
|
||
SLL 5,A0
|
||
ADDI DPLAYER_TAB,A0
|
||
MOVE *A0,A0,L
|
||
|
||
|
||
|
||
; MOVI DUNUSED,A0 ;RJR! <---TAKE THIS OUT FOR KIT
|
||
|
||
|
||
|
||
MOVI [39,285],A1
|
||
FCALL STRING,B6
|
||
;;;
|
||
|
||
*PLOT DOLLAR BILL VALIDATOR STATUS
|
||
MOVI DNOVALIDATOR,A0 ;ASSUME NO VALIDATOR
|
||
MOVE A10,A1
|
||
ANDI DPVALIDATOR,A1 ;DO WE HAVE ONE?
|
||
JRZ DSTS_NOV ;BR = NO
|
||
MOVI DVALIDATOR,A0 ;ASSUME NO VALIDATOR
|
||
|
||
DSTS_NOV
|
||
MOVI [51,285],A1
|
||
FCALL STRING,B6
|
||
|
||
;Turmell
|
||
; MOVI DUNUSED,A0
|
||
|
||
*PLOT video clips off/on message
|
||
MOVI DCLIPS,A0 ;Assume clips on
|
||
MOVE A10,A1
|
||
ANDI DPNOVIDCLIPS,A1
|
||
JRZ DSTS_NOC ;BR = NO
|
||
MOVI DNOCLIPS,A0 ;Assume no clips wanted
|
||
|
||
DSTS_NOC
|
||
|
||
|
||
MOVI [63,285],A1
|
||
FCALL STRING,B6
|
||
|
||
MOVI DUNUSED,A0
|
||
MOVI [75,285],A1
|
||
FCALL STRING,B6
|
||
|
||
MOVI DUNUSED,A0
|
||
MOVI [87,285],A1
|
||
FCALL STRING,B6
|
||
|
||
MOVI DUNUSED,A0
|
||
MOVI [99,285],A1
|
||
FCALL STRING,B6
|
||
|
||
|
||
;Turmell
|
||
; MOVI DUNUSED,A0
|
||
|
||
*PLOT skip over powerup test message
|
||
MOVI DPOWER,A0
|
||
MOVE A10,A1
|
||
ANDI DPPOWER,A1
|
||
JRZ DSTS_NOP
|
||
MOVI DNOPOWER,A0
|
||
|
||
DSTS_NOP
|
||
|
||
MOVI [111,285],A1
|
||
FCALL STRING,B6
|
||
|
||
MOVI DTEST_0,A0
|
||
MOVI [123,285],A1
|
||
FCALL STRING,B6
|
||
|
||
RETS
|
||
|
||
|
||
**************************************************************************
|
||
* *
|
||
* DIPPLOT *
|
||
* *
|
||
* PLOT OUT THE DIP SWITCHES *
|
||
* *
|
||
* ENTRY *
|
||
* NOTHING *
|
||
* *
|
||
* EXIT *
|
||
* NOTHING *
|
||
* *
|
||
**************************************************************************
|
||
|
||
DIPPLOT:
|
||
MOVI [33,21],A0
|
||
MOVI [104,38],A1
|
||
MOVI COLOR_BLACK,A2
|
||
FCALL RECTANGLE,B6
|
||
MOVI [33,231],A0
|
||
MOVI [104,38],A1
|
||
MOVI COLOR_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
|
||
.IF TUNIT=0
|
||
JRLO DIPL2
|
||
.ELSE
|
||
JRHS DIPL2
|
||
.ENDIF
|
||
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 COLOR_GREY,A4
|
||
JRUC DIPSTR
|
||
|
||
DIPON
|
||
MOVI DP_ON,A1
|
||
ADDI 32,A3
|
||
MOVI COLOR_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
|
||
|
||
|
||
**************************************************************************
|
||
* *
|
||
* 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
|
||
movk 7,a2
|
||
RDLOOP
|
||
BTST A2,A0
|
||
JRZ RD1
|
||
MOVK 7,A3
|
||
SUB A2,A3
|
||
BSET A3,A1
|
||
RD1
|
||
addk 8,a2
|
||
BTST A2,A0
|
||
JRZ RD2
|
||
MOVK 15,A3
|
||
SUB A2,A3
|
||
addk 8,a3
|
||
BSET A3,A1
|
||
RD2
|
||
subk 8,a2
|
||
DEC A2
|
||
JRNN RDLOOP
|
||
MOVE A1,A0
|
||
|
||
MMFM SP,A1,A2,A3
|
||
RETS
|
||
|
||
|
||
**************************************************************************
|
||
* *
|
||
* JOY_MESS *
|
||
* *
|
||
* PLOT THE STATUS OF A JOYSTICK AROUND A CIRCLE *
|
||
* *
|
||
* ENTRY *
|
||
* A9 CENTER OF STICK CIRCLE *
|
||
* A10 BUTTON MASK *
|
||
* A11 COLOR *
|
||
* *
|
||
* EXIT *
|
||
* NOTHING *
|
||
* *
|
||
**************************************************************************
|
||
|
||
JOY_MESS
|
||
MOVI JJJTAB,A8
|
||
MOVK 4,A7
|
||
JML
|
||
MOVI ROBO_BLACK,A3
|
||
SRL 1,A10
|
||
JRNC JM1
|
||
MOVE A11,A3 ; SET COLOR
|
||
MOVK 1,A14
|
||
MOVE A14,@SCHANGE,W
|
||
JM1
|
||
MOVE *A8+,A0,L
|
||
MOVE A9,A1 ; CIRCLE CENTER
|
||
MOVB *A8,A2 ;X CORRECTION
|
||
ADDK 8,A8
|
||
ADD A2,A1
|
||
MOVB *A8,A2 ;Y CORRECTION
|
||
ADDK 8,A8
|
||
SLL 16,A2
|
||
ADD A2,A1
|
||
CLR A2 ; DIRECTION
|
||
CALLR STRNEW
|
||
DSJS A7,JML
|
||
RETS
|
||
*
|
||
*JOYSTICK MESSAGE TABLE
|
||
*
|
||
JJJTAB
|
||
.LONG UPMESS
|
||
.BYTE -7,-25
|
||
|
||
.LONG DOWNMESS
|
||
.BYTE -13,18
|
||
|
||
.LONG LEFTMESS
|
||
.BYTE -39,-4
|
||
|
||
.LONG RIGHTMESS
|
||
.BYTE 18,-4
|
||
|
||
|
||
|
||
**************************************************************************
|
||
* *
|
||
* 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:
|
||
clr b4 ;OFFSET
|
||
|
||
MOVE *A9,A1,L ; XY LOC
|
||
JRZ BPDONE
|
||
ADDK 32,A9
|
||
MOVE *A9+,A0 ; RADIUS
|
||
MOVE *A9+,A6,L ; COLOR
|
||
MOVE *A9+,A11,L ; GET 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
|
||
ADDK 16,A9
|
||
AND A10,A11 ; MASK OFF SOMETHING USEFUL
|
||
JRZ BPHOLLOW
|
||
ADDI CFILL,A6 ; MASK IN THE FILL BITS
|
||
JRUC BPCIRC
|
||
BPHOLLOW
|
||
MMTM SP,A0,A1,A6
|
||
MOVI ROBO_BLACK,A6
|
||
ADDI CFILL,A6
|
||
FCALL CIRCLE,B6
|
||
MMFM SP,A0,A1,A6
|
||
JRUC BPCIRC2
|
||
BPCIRC
|
||
MOVK 1,A14
|
||
MOVE A14,@SCHANGE,W
|
||
BPCIRC2
|
||
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
|
||
ADDK 32,A9
|
||
MOVE *A9+,A0 ; RADIUS
|
||
MOVE *A9,A6,L ; COLOR
|
||
ADDI 96,A9
|
||
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:
|
||
MOVE *A9,A1,L ; XY LOC
|
||
JRZ JUDONE
|
||
ADDI 32,A9
|
||
MOVE *A9+,A0 ; RADIUS
|
||
MOVE *A9+,A11,L ; COLOR
|
||
MOVE *A9+,A6,L ; MASK
|
||
MOVE *A9+,A7 ; SHIFT COUNT
|
||
MOVE *A9,A8 ; EXTEND-O-BIT FOR JAMMA
|
||
JRZ JULOW
|
||
MOVE @SWSET2,A10,L
|
||
JRUC JUAND
|
||
JULOW
|
||
MOVE @SWSET1,A10,L
|
||
JUAND
|
||
ADDK 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,A8,A7
|
||
MOVE A1,A9 ; CENTER OF STICK HERE
|
||
MOVE A6,A10 ; BUTTON MASK
|
||
CALLR JOY_MESS
|
||
MMFM SP,A9,A10,A8,A7
|
||
JRUC JOY_UPDATE
|
||
JUDONE
|
||
RETS
|
||
|
||
|
||
**************************************************************************
|
||
* *
|
||
* 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
|
||
ADDK 32,A9
|
||
MOVE *A9+,A0,L ;STRING PTR
|
||
MOVE *A9+,A3 ;COLOR
|
||
MOVE *A9+,A2 ;DIRECTION
|
||
FCALL STRING,B6
|
||
JRUC STR_PLOT
|
||
STDONE
|
||
RETS
|
||
|
||
CFILL EQU 0FFFF0000H
|
||
|
||
|
||
; FORMAT
|
||
;
|
||
; X,Y,RADIUS,COLOR,MASK,SHIFT COUNT ( FOR JOYSTICK STUFF ), EXTENDBIT
|
||
|
||
P1BC .equ 80
|
||
P2BC .equ 160
|
||
P3BC .equ 240
|
||
P4BC .equ 320
|
||
PBCY .equ 162
|
||
|
||
BUT_TABLE
|
||
BUT_MAC P1BC+20,PBCY,10,ROBO_BLUE,020H,0,0 ; P1 A2
|
||
BUT_MAC P1BC,PBCY-12,10,ROBO_RED,010H,0,0 ; P1 A1
|
||
BUT_MAC P1BC-20,PBCY,10,ROBO_WHITE,040H,0,0 ; P1 A3
|
||
|
||
BUT_MAC P2BC+20,PBCY,10,ROBO_BLUE,02000H,0,0 ; P2 A2
|
||
BUT_MAC P2BC,PBCY-12,10,ROBO_RED,01000H,0,0 ; P2 A1
|
||
BUT_MAC P2BC-20,PBCY,10,ROBO_WHITE,04000H,0,0 ; P2 A3
|
||
|
||
BUT_MAC P3BC+20,PBCY,10,ROBO_BLUE,020H,0,1 ; P3 A2
|
||
BUT_MAC P3BC,PBCY-12,10,ROBO_RED,010H,0,1 ; P3 A1
|
||
BUT_MAC P3BC-20,PBCY,10,ROBO_WHITE,040H,0,1 ; P3 A3
|
||
|
||
BUT_MAC P4BC+20,PBCY,10,ROBO_BLUE,02000H,0,1 ; P4 A2
|
||
BUT_MAC P4BC,PBCY-12,10,ROBO_RED,01000H,0,1 ; P4 A1
|
||
BUT_MAC P4BC-20,PBCY,10,ROBO_WHITE,04000H,0,1 ; P4 A3
|
||
|
||
BUT_MAC P1BC,70,10,ROBO_WHITE,00040000H,0,0 ; P1 START
|
||
BUT_MAC P2BC,70,10,ROBO_WHITE,00200000H,0,0 ; P2 START
|
||
BUT_MAC P3BC,70,10,ROBO_WHITE,02000000H,0,0 ; P3 START
|
||
BUT_MAC P4BC,70,10,ROBO_WHITE,04000000H,0,0 ; P4 START
|
||
|
||
BUT_MAC 30,207,10,COLOR_GREEN,00010000H,0,0 ; COIN LEFT
|
||
BUT_MAC 75,207,10,COLOR_GREEN,00020000H,0,0 ; COIN RIGHT
|
||
BUT_MAC 120,207,10,COLOR_GREEN,00800000H,0,0 ; COIN CENTER
|
||
BUT_MAC 165,207,10,COLOR_GREEN,01000000H,0,0 ; FOURTH COIN
|
||
BUT_MAC 214,207,10,COLOR_GREEN,00400000H,0,0 ; SERVICE CREDIT
|
||
BUT_MAC 260,199,10,COLOR_GREEN,00080000H,0,0 ; SLAM
|
||
BUT_MAC 260,222,10,COLOR_GREEN,00100000H,0,0 ; TEST
|
||
|
||
|
||
.LONG 0
|
||
|
||
; X,Y,RADIUS,COLOR,MASK,SHIFT,EXTEND
|
||
JOY_TABLE
|
||
BUT_MAC P1BC,110,16,CFILL+ROBO_RED,0fH,0,0 ; P1 MOVE
|
||
BUT_MAC P2BC,110,16,CFILL+ROBO_RED,0f00H,8,0 ; P2 MOVE
|
||
BUT_MAC P3BC,110,16,CFILL+ROBO_RED,0fh,0,1 ; P3 MOVE
|
||
BUT_MAC P4BC,110,16,CFILL+ROBO_RED,0f00H,8,1 ; P4 MOVE
|
||
.LONG 0
|
||
|
||
|
||
STR_TABLE
|
||
STR_MAC 116,15,STSTART,ROBO_YELLOW,0 ; JAM SWITCH MESSAGE
|
||
|
||
STR_MAC P1BC-24,47,P1START,ROBO_RED,0 ; P1 START
|
||
STR_MAC P2BC-24,47,P2START,ROBO_RED,0 ; P2 START
|
||
STR_MAC P3BC-24,47,P3START,ROBO_RED,0 ; P1 START
|
||
STR_MAC P4BC-24,47,P4START,ROBO_RED,0 ; P2 START
|
||
|
||
STR_MAC 94,30,GETOUT1,ROBO_WHITE,0 ;GET OUT MESSAGE 1
|
||
|
||
STR_MAC 12,233,LEFTSLOT,COLOR_GREEN,0 ;LEFT COIN
|
||
STR_MAC 56,233,RIGHTSLOT,COLOR_GREEN,0 ;RIGHT COIN
|
||
STR_MAC 103,222,CENTER,COLOR_GREEN,0 ;CENTER COIN
|
||
STR_MAC 147,222,FOURTH,COLOR_GREEN,0 ;COIN MIDDLE
|
||
STR_MAC 10,222,COINMESS1,COLOR_GREEN,0 ;BOTTOM MESSAGE
|
||
STR_MAC 55,222,COINMESS2,COLOR_GREEN,0
|
||
STR_MAC 193,222,SERVICE1,COLOR_GREEN,0 ;SERVICE CREDIT
|
||
STR_MAC 197,233,SERVICE2,COLOR_GREEN,0 ;SERVICE CREDIT
|
||
STR_MAC 275,196,SLAM,COLOR_GREEN,0 ;SLAM
|
||
STR_MAC 275,219,TEST,COLOR_GREEN,0 ;TEST SWITCH
|
||
|
||
STR_MAC P1BC-15,110-3,J1MESS,ROBO_WHITE,0
|
||
STR_MAC P2BC-15,110-3,J2MESS,ROBO_WHITE,0
|
||
STR_MAC P3BC-15,110-3,J3MESS,ROBO_WHITE,0
|
||
STR_MAC P4BC-15,110-3,J4MESS,ROBO_WHITE,0
|
||
|
||
.LONG 0
|
||
|
||
|
||
BUT_STRS
|
||
STR_MAC P1BC+18,PBCY-4,PASSMESS,ROBO_BLUE,0 ; P1 A2
|
||
STR_MAC P1BC-3,PBCY-16,SHOOTMESS,ROBO_RED,0 ; P1 A1
|
||
STR_MAC P1BC-23,PBCY-4,TURBOMESS,ROBO_WHITE,0 ; P1 A3
|
||
|
||
STR_MAC P2BC+18,PBCY-4,PASSMESS,ROBO_BLUE,0 ; P1 A2
|
||
STR_MAC P2BC-3,PBCY-16,SHOOTMESS,ROBO_RED,0 ; P1 A1
|
||
STR_MAC P2BC-23,PBCY-4,TURBOMESS,ROBO_WHITE,0 ; P1 A3
|
||
|
||
STR_MAC P3BC+18,PBCY-4,PASSMESS,ROBO_BLUE,0 ; P1 A2
|
||
STR_MAC P3BC-3,PBCY-16,SHOOTMESS,ROBO_RED,0 ; P1 A1
|
||
STR_MAC P3BC-23,PBCY-4,TURBOMESS,ROBO_WHITE,0 ; P1 A3
|
||
|
||
STR_MAC P4BC+18,PBCY-4,PASSMESS,ROBO_BLUE,0 ; P1 A2
|
||
STR_MAC P4BC-3,PBCY-16,SHOOTMESS,ROBO_RED,0 ; P1 A1
|
||
STR_MAC P4BC-23,PBCY-4,TURBOMESS,ROBO_WHITE,0 ; P1 A3
|
||
|
||
.LONG 0
|
||
|
||
**************************************************************************
|
||
* *
|
||
* DIP SWITCH DISPLAY STUFF *
|
||
* *
|
||
**************************************************************************
|
||
|
||
DIP_VECS:
|
||
VECMAC COLOR_RED,20,32,60,32 ; DS1
|
||
VECMAC COLOR_RED,20,32,20,138
|
||
VECMAC COLOR_RED,20,138,60,138
|
||
VECMAC COLOR_RED,60,32,60,138
|
||
|
||
VECMAC COLOR_RED,230,32,270,32 ; DS2
|
||
VECMAC COLOR_RED,230,32,230,138
|
||
VECMAC COLOR_RED,230,138,270,138
|
||
VECMAC COLOR_RED,270,32,270,138
|
||
|
||
VECMAC COLOR_WHITE,63,42,73,42
|
||
|
||
; VECMAC COLOR_WHITE,63,54,73,54
|
||
|
||
VECMAC COLOR_WHITE,63,54,68,54 ;COINAGE MODE
|
||
VECMAC COLOR_WHITE,63,78,68,78
|
||
VECMAC COLOR_WHITE,68,54,68,78
|
||
VECMAC COLOR_WHITE,68,66,73,66
|
||
|
||
VECMAC COLOR_WHITE,63,90,68,90 ;COUNTRY
|
||
VECMAC COLOR_WHITE,63,102,68,102
|
||
VECMAC COLOR_WHITE,68,90,68,102
|
||
VECMAC COLOR_WHITE,68,96,73,96
|
||
|
||
VECMAC COLOR_WHITE,63,114,68,114 ;COIN COUNTER MODE
|
||
VECMAC COLOR_WHITE,63,126,68,126
|
||
VECMAC COLOR_WHITE,68,114,68,126
|
||
VECMAC COLOR_WHITE,68,120,73,120
|
||
|
||
VECMAC COLOR_WHITE,273,42,283,42 ;# OF PLAYERS
|
||
|
||
VECMAC COLOR_WHITE,273,54,283,54 ;UNUSED
|
||
|
||
VECMAC COLOR_WHITE,273,66,283,66 ;UNUSED
|
||
|
||
VECMAC COLOR_WHITE,273,78,283,78 ;UNUSED
|
||
|
||
VECMAC COLOR_WHITE,273,90,283,90 ;UNUSED
|
||
|
||
VECMAC COLOR_WHITE,273,102,283,102 ;UNUSED
|
||
|
||
|
||
; VECMAC COLOR_WHITE,273,90,278,90 ;# OF PLAYERS
|
||
; VECMAC COLOR_WHITE,273,102,278,102
|
||
; VECMAC COLOR_WHITE,278,90,278,102
|
||
; VECMAC COLOR_WHITE,278,96,283,96
|
||
|
||
VECMAC COLOR_WHITE,273,114,283,114 ;UNUSED
|
||
|
||
VECMAC COLOR_WHITE,273,126,283,126 ;TEST SWITCH
|
||
|
||
.LONG 0
|
||
|
||
DIP_STRS:
|
||
STR_MAC 124,8,DP_TITLE,COLOR_GREEN,0
|
||
STR_MAC 30,20,DP_DS1,COLOR_WHITE,0
|
||
STR_MAC 240,20,DP_DS2,COLOR_WHITE,0
|
||
STR_MAC 7,39,DP_DSN1,COLOR_WHITE,0
|
||
STR_MAC 7,51,DP_DSN2,COLOR_WHITE,0
|
||
STR_MAC 7,63,DP_DSN3,COLOR_WHITE,0
|
||
STR_MAC 7,75,DP_DSN4,COLOR_WHITE,0
|
||
STR_MAC 7,87,DP_DSN5,COLOR_WHITE,0
|
||
STR_MAC 7,99,DP_DSN6,COLOR_WHITE,0
|
||
STR_MAC 7,111,DP_DSN7,COLOR_WHITE,0
|
||
STR_MAC 7,123,DP_DSN8,COLOR_WHITE,0
|
||
|
||
STR_MAC 217,39,DP_DSN1,COLOR_WHITE,0
|
||
STR_MAC 217,51,DP_DSN2,COLOR_WHITE,0
|
||
STR_MAC 217,63,DP_DSN3,COLOR_WHITE,0
|
||
STR_MAC 217,75,DP_DSN4,COLOR_WHITE,0
|
||
STR_MAC 217,87,DP_DSN5,COLOR_WHITE,0
|
||
STR_MAC 217,99,DP_DSN6,COLOR_WHITE,0
|
||
STR_MAC 217,111,DP_DSN7,COLOR_WHITE,0
|
||
STR_MAC 217,123,DP_DSN8,COLOR_WHITE,0
|
||
|
||
STR_MAC 100,150,DP_INS1,COLOR_WHITE,0
|
||
|
||
.LONG 0
|
||
|
||
DP_DS1:
|
||
.STRING "UJ1",0
|
||
.EVEN
|
||
DP_DS2:
|
||
.STRING "UJ2",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
|
||
|
||
DUSECMOS_1:
|
||
.STRING "CMOS COINAGE",0
|
||
.EVEN
|
||
|
||
DUSECMOS_0:
|
||
.STRING "DIPSWITCH COINAGE",0
|
||
.EVEN
|
||
|
||
DMIRROR_0
|
||
.STRING "MIRROR DISPLAY",0
|
||
.EVEN
|
||
|
||
DMIRROR_1
|
||
.STRING "NORMAL DISPLAY",0
|
||
.EVEN
|
||
|
||
DCOUNTER_0a
|
||
.STRING "ONE COIN COUNTER",0
|
||
.EVEN
|
||
DCOUNTER_0b
|
||
.STRING "1 COUNT/COIN",0
|
||
.EVEN
|
||
|
||
DCOUNTER_1a
|
||
.STRING "TWO COIN COUNTERS",0
|
||
.EVEN
|
||
DCOUNTER_1b
|
||
.STRING "1 COUNT/COIN",0
|
||
.EVEN
|
||
|
||
DCOUNTER_2a
|
||
.STRING "ONE COIN COUNTER",0
|
||
.EVEN
|
||
DCOUNTER_2b
|
||
.STRING "TOTALIZING ",0
|
||
.EVEN
|
||
|
||
|
||
DCOUNTER_TAB
|
||
.LONG DCOUNTER_0a, DCOUNTER_0b
|
||
.LONG DCOUNTER_1a, DCOUNTER_1b
|
||
.LONG DCOUNTER_2a, DCOUNTER_2b
|
||
.LONG DCOUNTER_0a, DCOUNTER_0b
|
||
|
||
DCOINAGE
|
||
.STRING "COINAGE",0
|
||
.EVEN
|
||
|
||
DCOUNTRY_0
|
||
.STRING "USA",0
|
||
.EVEN
|
||
DCOUNTRY_2
|
||
.STRING "FRENCH",0
|
||
.EVEN
|
||
|
||
DPLAYER_TAB
|
||
.LONG DPLAYER_0, DPLAYER_1
|
||
|
||
DCOUNTRY_1
|
||
.STRING "GERMAN",0
|
||
.EVEN
|
||
|
||
DCOUNTRY_TAB
|
||
.LONG DCOUNTRY_0, DCOUNTRY_1, DCOUNTRY_2, DCOUNTRY_3
|
||
|
||
DCREDITS
|
||
.STRING "CREDITS...",0
|
||
.EVEN
|
||
DTOSTART
|
||
.STRING "TO START",0
|
||
.EVEN
|
||
DTOCONTINUE
|
||
.STRING "TO CONTINUE",0
|
||
.EVEN
|
||
|
||
DTEST_0
|
||
.STRING "TEST SWITCH",0
|
||
.EVEN
|
||
|
||
DPLAYER_0
|
||
.STRING "4 PLAYER KIT",0
|
||
.EVEN
|
||
DPLAYER_1
|
||
.STRING "2 PLAYER KIT",0
|
||
.EVEN
|
||
|
||
DNOVALIDATOR
|
||
.STRING "NO VALIDATOR",0
|
||
.EVEN
|
||
DVALIDATOR
|
||
.STRING "VALIDATOR INST.",0
|
||
.EVEN
|
||
DCLIPS
|
||
; .STRING "SHOW VIDEO",0
|
||
.STRING "UNUSED",0
|
||
.EVEN
|
||
DNOCLIPS
|
||
; .STRING "SKIP VIDEO",0
|
||
.STRING "UNUSED",0
|
||
.EVEN
|
||
DPOWER
|
||
.STRING "POWERUP TEST",0
|
||
.EVEN
|
||
DNOPOWER
|
||
.STRING "SKIP TEST",0
|
||
.EVEN
|
||
|
||
DUCOIN7
|
||
.STRING "FREEPLAY",0
|
||
.EVEN
|
||
|
||
DCOINTAB
|
||
.LONG DUCOINTAB, DGCOINTAB, DFCOINTAB, DUCOINTAB
|
||
|
||
DP_TITLE
|
||
.STRING "DIPSWITCH SETTINGS",0
|
||
.EVEN
|
||
|
||
DP_INS1
|
||
.STRING "PRESS ANY BUTTON TO EXIT",0
|
||
.EVEN
|
||
|
||
DP_ON
|
||
.STRING "ON",0
|
||
.EVEN
|
||
DP_OFF
|
||
.STRING "OFF",0
|
||
|
||
DUNUSED
|
||
DGCOIN4
|
||
DCOUNTRY_3
|
||
.STRING "UNUSED",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
|
||
|
||
DCREDTAB
|
||
.LONG DP_DSN2,DP_DSN1
|
||
.LONG DP_DSN1,DP_DSN1
|
||
.LONG DP_DSN2,DP_DSN2
|
||
.LONG DP_DSN3,DP_DSN1
|
||
.LONG DP_DSN4,DP_DSN1
|
||
.LONG DP_DSN3,DP_DSN2
|
||
.LONG DP_DSN4,DP_DSN2
|
||
.LONG DP_DSN3,DP_DSN3
|
||
|
||
|
||
.if 0
|
||
dip_t
|
||
STR_MAC 090h,20h,DIPMES0,ROBO_YELLOW,0 ;DIP SWITCH TEST
|
||
STR_MAC DS1_XPOS+16,3Ch,DIPMES1,ROBO_GREEN,0 ;DIP SWITCH 1
|
||
STR_MAC DS2_XPOS+16,3Ch,DIPMES2,ROBO_GREEN,0 ;DIP SWITCH 2
|
||
STR_MAC 200-12*8,220,GETOUT2,ROBO_GREEN,0 ;exit message
|
||
.LONG 0
|
||
|
||
dipline_t
|
||
.word 20,10,379,10
|
||
.word 379,10,379,245
|
||
.word 379,245,20,245
|
||
.word 20,245,20,10
|
||
|
||
.word DS1_XPOS+12,DIP_YPOS-4, DS1_XPOS+43,DIP_YPOS-4
|
||
.word DS1_XPOS+12,DIP_YPOS+109, DS1_XPOS+43,DIP_YPOS+109
|
||
.word DS1_XPOS+12,DIP_YPOS-4, DS1_XPOS+12,DIP_YPOS+109
|
||
.word DS1_XPOS+43,DIP_YPOS-4, DS1_XPOS+43,DIP_YPOS+109
|
||
|
||
.word DS2_XPOS+12,DIP_YPOS-4, DS2_XPOS+43,DIP_YPOS-4
|
||
.word DS2_XPOS+12,DIP_YPOS+109, DS2_XPOS+43,DIP_YPOS+109
|
||
.word DS2_XPOS+12,DIP_YPOS-4, DS2_XPOS+12,DIP_YPOS+109
|
||
.word DS2_XPOS+43,DIP_YPOS-4, DS2_XPOS+43,DIP_YPOS+109
|
||
|
||
.long -1
|
||
|
||
dipline2
|
||
.word DS1_XPOS+45,DIP_YPOS+3, DS1_XPOS+48,DIP_YPOS+3
|
||
.word DS1_XPOS+45,DIP_YPOS+4+5*14, DS1_XPOS+48,DIP_YPOS+4+5*14
|
||
.word DS1_XPOS+48,DIP_YPOS+3, DS1_XPOS+48,DIP_YPOS+4+5*14
|
||
.word DS1_XPOS+49,DIP_YPOS-2+3*14, DS1_XPOS+51,DIP_YPOS-2+3*14
|
||
.word DS1_XPOS+45,DIP_YPOS+4+6*14, DS1_XPOS+51,DIP_YPOS+4+6*14
|
||
.word DS2_XPOS+45,DIP_YPOS+4, DS2_XPOS+51,DIP_YPOS+4
|
||
.long -1
|
||
|
||
country_text
|
||
.long cntry0,cntry1,cntry2,cntry3 ;4
|
||
.long cntry4,cntry5,cntry6,cntry7 ;8
|
||
.long cntry8,cntry9,cntry10,cntry11 ;12
|
||
.long cntry12,cntry13,cntry14,cntry15 ;16
|
||
.long cntry16,cntry17,cntry18,cntry19 ;20
|
||
.long cntry20,cntry21,cntry22,cntry23 ;24
|
||
.long cntry24,cntry25,cntry26,cntry0 ;28
|
||
.long cntry0,cntry0,cntry0,cntry0 ;32
|
||
|
||
.long cntry0,cntry0,cntry0,cntry0 ;36
|
||
.long cntry0,cntry0,cntry0,cntry0 ;40
|
||
.long cntry0,cntry0,cntry0,cntry0 ;44
|
||
.long cntry0,cntry0,cntry0,cntry0 ;48
|
||
.long cntry0,cntry0,cntry0,cntry0 ;52
|
||
.long cntry0,cntry0,cntry0,cntry0 ;56
|
||
.long cntry0,cntry0,cntry0,cntry0 ;60
|
||
.long cntry0,cntry0,cntry0,cntry0 ;64
|
||
|
||
cntry0 .string "USA 1",0 ;0
|
||
cntry1 .string "USA 2",0 ;1
|
||
cntry2 .string "USA 3",0 ;2
|
||
cntry3 .string "GERMANY 1",0 ;3
|
||
cntry4 .string "GERMANY 2",0 ;4
|
||
cntry5 .string "GERMANY 3",0 ;5
|
||
cntry6 .string "FRANCE 1",0 ;6
|
||
cntry7 .string "FRANCE 2",0 ;7
|
||
cntry8 .string "FRANCE 3",0 ;8
|
||
cntry9 .string "SWISS 1",0 ;9
|
||
cntry10 .string "ITALY",0 ;10
|
||
cntry11 .string "UK 1",0 ;11
|
||
cntry12 .string "UK 2",0 ;12
|
||
cntry13 .string "UK ELEC",0 ;13
|
||
cntry14 .string "SPAIN 1",0 ;14
|
||
cntry15 .string "AUSTRALIA 1",0 ;15
|
||
cntry16 .string "JAPAN 1",0 ;16
|
||
cntry17 .string "JAPAN 2",0 ;17
|
||
cntry18 .string "AUSTRIA 1",0 ;18
|
||
cntry19 .string "BELGIUM 1",0 ;19
|
||
cntry20 .string "BELGIUM 2",0 ;20
|
||
cntry21 .string "SWEDEN",0 ;21
|
||
cntry22 .string "NEW ZEALAND",0 ;22
|
||
cntry23 .string "NETHERLANDS",0 ;23
|
||
cntry24 .string "FINLAND",0 ;24
|
||
cntry25 .string "NORWAY",0 ;25
|
||
cntry26 .string "DENMARK",0 ;26
|
||
|
||
DIP_COIN1 .string "CMOS COINAGE",0
|
||
DIP_COIN2 .string "DIP COINAGE",0
|
||
DIP_TESTSW1 .string "TEST MODE",0
|
||
DIP_TESTSW2 .string "GAME MODE",0
|
||
|
||
DIPMES0 .STRING "DIP SWITCH TEST",0
|
||
DIPMES1 .STRING "DS1",0
|
||
DIPMES2 .STRING "DS2",0
|
||
DIPMES01 .string "1",0
|
||
DIPMES02 .string "2",0
|
||
DIPMES03 .string "3",0
|
||
DIPMES04 .string "4",0
|
||
DIPMES05 .string "5",0
|
||
DIPMES06 .string "6",0
|
||
DIPMES07 .string "7",0
|
||
DIPMES08 .string "8",0
|
||
DIPMES18
|
||
.STRING "1 2 3 4 5 6 7 8",0
|
||
DIPON .STRING "ON",0
|
||
DIPOFF .STRING "OFF",0
|
||
|
||
.endif
|
||
|
||
LEFTSLOT
|
||
.STRING "LEFT",0
|
||
.EVEN
|
||
RIGHTSLOT
|
||
.STRING "RIGHT",0
|
||
.EVEN
|
||
SERVICE1
|
||
.STRING "SERVICE",0
|
||
.EVEN
|
||
SERVICE2
|
||
.STRING "CREDIT",0
|
||
.EVEN
|
||
|
||
COINMESS1
|
||
.STRING "COIN1",0
|
||
.EVEN
|
||
COINMESS2
|
||
.STRING "COIN2",0
|
||
.EVEN
|
||
|
||
CENTER
|
||
.STRING "COIN3",0
|
||
.EVEN
|
||
FOURTH
|
||
.STRING "COIN4",0
|
||
.EVEN
|
||
|
||
SLAM
|
||
.STRING "SLAM - TILT",0
|
||
.EVEN
|
||
TEST
|
||
.STRING "TEST",0
|
||
.EVEN
|
||
|
||
J1MESS .string "JOY1",0
|
||
J2MESS .string "JOY2",0
|
||
J3MESS .string "JOY3",0
|
||
J4MESS .string "JOY4",0
|
||
|
||
PASSMESS .STRING "P",0
|
||
SHOOTMESS .STRING "S",0
|
||
TURBOMESS .STRING "T",0
|
||
|
||
GETOUT2 .STRING "PRESS ANY BUTTON TO EXIT",0
|
||
GETOUT1 .STRING "START1 AND START2 TO EXIT",0
|
||
; .STRING "TEST SWITCH OFF TO EXIT",0
|
||
.EVEN
|
||
|
||
STSTART .STRING "NBA JAM SWITCHES",0
|
||
.EVEN
|
||
|
||
P1START .STRING "START1",0
|
||
.EVEN
|
||
P2START .STRING "START2",0
|
||
.EVEN
|
||
P3START .STRING "START3",0
|
||
.EVEN
|
||
P4START .STRING "START4",0
|
||
.EVEN
|
||
|
||
LEFTMESS
|
||
.STRING "LFT",0
|
||
.EVEN
|
||
RIGHTMESS
|
||
.STRING "RT",0
|
||
.EVEN
|
||
UPMESS
|
||
.STRING "UP",0
|
||
.EVEN
|
||
DOWNMESS
|
||
.STRING "DWN",0
|
||
.EVEN
|
||
|
||
P1MOVE
|
||
.STRING "P1 MOVE",0
|
||
.EVEN
|
||
P2MOVE
|
||
.STRING "P2 MOVE",0
|
||
.EVEN
|
||
P3MOVE
|
||
.STRING "P3 MOVE",0
|
||
.EVEN
|
||
P4MOVE
|
||
.STRING "P4 MOVE",0
|
||
.EVEN
|
||
|
||
|
||
****************************************************************************
|
||
* INITCOLR: INITIALIZE COLORS; ROUTINE LOADS PALETTE 0 WITH THE COLOR *
|
||
* PALETTE USED BY DIAGNOSTIC TESTS. *
|
||
****************************************************************************
|
||
|
||
INITCOLR
|
||
|
||
MOVI COLRAM,A0,L ; PALETTE LOCATION
|
||
|
||
.ref DIAGP
|
||
|
||
MOVI DIAGP,A1,L
|
||
MOVE *A1+,A2,W ; LENGTH OF PALETTE
|
||
LPLP1
|
||
MOVE *A1+,*A0+,W
|
||
DSJS A2,LPLP1 ; KEEP ON CHUGGIN, BABY
|
||
|
||
CLR A14
|
||
MOVE A14, @CMAPSEL
|
||
|
||
FRET B5
|
||
****************************************************************************
|
||
* POINT: FUNCTION DISPLAYS A POINT OF ANY COLOR. *
|
||
* *
|
||
* ENTRY: A0 = XY SCREEN ADDRESS OF THE POINT *
|
||
* A1 = COLOR VALUE *
|
||
* B6 = RETURN ADDRESS *
|
||
* *
|
||
* USES: A0, A1, B2, B3, B4, B6, B10 *
|
||
****************************************************************************
|
||
|
||
POINT:
|
||
ADDI SCRXFUDGE,A0
|
||
|
||
MOVI SCRN_PTCH, DPTCH
|
||
CLR OFFSET
|
||
|
||
LMO DPTCH, B10
|
||
MOVE B10, @CONVDP
|
||
|
||
PIXT A1, *A0.XY
|
||
|
||
FRET B6
|
||
|
||
****************************************************************************
|
||
* RECTANGLE: FUNCTION DISPLAYS A RECTANGLE OF ANY COLOR. *
|
||
* *
|
||
* ENTRY: A0 = XY SCREEN ADDRESS OF UPPER LEFT CORNER *
|
||
* A1 = XY RECTANGLE DIMENSIONS *
|
||
* A2 = COLOR VALUE *
|
||
* *
|
||
* B6 = RETURN ADDRESS *
|
||
* *
|
||
* USES: A0, A1, A2, B2, B3, B4, B6, B7, B9, B10 *
|
||
****************************************************************************
|
||
|
||
RECTANGLE:
|
||
ADDI SCRXFUDGE,A0
|
||
|
||
MOVI SCRN_PTCH, DPTCH
|
||
CLR OFFSET
|
||
|
||
LMO DPTCH, B10
|
||
MOVE B10, @CONVDP
|
||
|
||
MOVE A2, COLOR1
|
||
MOVE A0, DADDR
|
||
MOVE A1, DYDX
|
||
|
||
FILL XY
|
||
|
||
SUBI SCRXFUDGE,A0
|
||
|
||
FRET B6
|
||
|
||
****************************************************************************
|
||
* LINE: FUNCTION DRAWS HORIZONTAL OR VERTICAL LINES OF ANY COLOR.
|
||
*
|
||
* ENTRY: A0 = BEGINNING XY SCREEN ADDRESS
|
||
* A1 = ENDING XY SCREEN ADDRESS
|
||
* A2 = COLOR VALUE
|
||
*
|
||
* B6 = RETURN ADDRESS
|
||
*
|
||
* USES: A0-A4, B3,B4,B6,B9,B10
|
||
****************************************************************************
|
||
|
||
HVLINE
|
||
MOVI SCRXFUDGE,A3
|
||
ADDXY A3,A0
|
||
ADDXY A3,A1
|
||
|
||
MOVI SCRN_PTCH,DPTCH
|
||
CLR OFFSET
|
||
|
||
LMO DPTCH,B10
|
||
MOVE B10,@CONVDP
|
||
|
||
MOVE A2,COLOR1
|
||
|
||
MOVK 1, A2 ; DRAV DX: ASSUME HORIZONTAL LINE
|
||
|
||
MOVE A0,A3 ; DETERMINE (P2 > P1) OR (P2 < P1)
|
||
CVXYL A3,A3
|
||
|
||
MOVE A1,A4
|
||
CVXYL A4,A4
|
||
|
||
CMP A3,A4 ; IF (P2 < P1) ~(INCREMENT)
|
||
JRP $100
|
||
|
||
NEG A2 ; INCREMENT IS A SIGNED WORD
|
||
ZEXT A2
|
||
|
||
$100 CMPXY A0,A1 ; IF VERTICAL LINE
|
||
JRZ $110 ; DRAV DX -> DRAV DY
|
||
SLL 16,A2
|
||
|
||
$110 DRAV A2,A0 ; DRAW LINE
|
||
CMPXY A0,A1
|
||
JRNN $110
|
||
JRNZ $110
|
||
|
||
FRET B6
|
||
|
||
|
||
********************************
|
||
* Draw a line
|
||
* A0=YX Start
|
||
* A1=YX End
|
||
* A2=Color
|
||
* B6=Return addr
|
||
* Trashes B0-B5,B7-B13
|
||
|
||
SUBRP line_draw
|
||
|
||
ADDI SCRXFUDGE,A0
|
||
ADDI SCRXFUDGE,A1
|
||
|
||
move a2,COLOR1
|
||
movi SCRN_PTCH,DPTCH
|
||
clr OFFSET ;B4
|
||
lmo DPTCH,b0
|
||
move b0,@CONVDP
|
||
|
||
move a0,b2 ;YX strt
|
||
move a1,b10 ;YX end
|
||
clr b7 ;b:a
|
||
subxy b2,b10
|
||
jrnc bpos
|
||
jrnv bneg_apos
|
||
subxy b10,b7
|
||
movi -1,b11
|
||
jruc cmp_b_a
|
||
bneg_apos
|
||
subxy b10,b7
|
||
movx b10,b7
|
||
movi >ffff0000,b11
|
||
jruc cmp_b_a
|
||
bpos jrnv bpos_apos
|
||
bpos_aneg
|
||
subxy b10,b7
|
||
movy b10,b7
|
||
movi >1ffff,b11
|
||
jruc cmp_b_a
|
||
bpos_apos
|
||
move b10,b7
|
||
movi >10001,b11
|
||
cmp_b_a clr b12
|
||
|
||
move b7,b0
|
||
srl 16,b0
|
||
clr b10
|
||
movx b7,b10
|
||
cmp b0,b10
|
||
jrgt a_ge_b
|
||
|
||
move b0,b10
|
||
movx b7,b0
|
||
rl 16,b7 ;Swap b:a
|
||
movy b11,b12
|
||
sll 1,b0
|
||
sub b10,b0
|
||
addk 1,b10
|
||
move b11,b11
|
||
jrn line1
|
||
line0 line 0
|
||
jruc ldx
|
||
|
||
a_ge_b movx b11,b12
|
||
sll 1,b0
|
||
sub b10,b0
|
||
move b11,b11
|
||
jrnn line0
|
||
line1 line 1
|
||
|
||
ldx FRET B6
|
||
|
||
|
||
****************************************************************************
|
||
* STRING: FUNCTION DISPLAYS AN ASCII STRING OF ANY COLOR EITHER VERTICALLY
|
||
* OR HORIZONTALLY.
|
||
*
|
||
* ENTRY: A0 = STARTING STRING ADDRESS
|
||
* A1 = Y:X SCREEN ADDRESS
|
||
* A2 = DIRECTION
|
||
* A3 = COLOR
|
||
*
|
||
* B6 = RETURN ADDRESS
|
||
*
|
||
* USES: A0 - A6, B0 - B4, B6 - B14
|
||
****************************************************************************
|
||
STRNEW1
|
||
MMTM SP,A1,A2,A3,A4,A5,A6
|
||
FCALL STRING,B6
|
||
MMFM SP,A1,A2,A3,A4,A5,A6
|
||
RETS
|
||
STRNEW
|
||
PUSH a0
|
||
CALLR STRNEW1
|
||
MMFM SP,A0
|
||
RETS
|
||
|
||
STRING
|
||
ADDI SCRXFUDGE,A1
|
||
|
||
MOVI SCRN_PTCH,DPTCH
|
||
CLR OFFSET
|
||
|
||
LMO DPTCH,B10
|
||
MOVE B10,@CONVDP
|
||
|
||
MOVE A3,COLOR1
|
||
CLR COLOR0
|
||
|
||
|
||
$200 MOVB *A0,A4 ;GET CHARACTER
|
||
JRZ $230 ;QUIT IF NULL
|
||
|
||
ADDK 8,A0
|
||
SUBK 32,A4 ;GET POINTER TO CHARACTER HEADER
|
||
SLL 3,A4
|
||
ADDI SYSFONT,A4,L
|
||
MOVB *A4,A4
|
||
SLL 5,A4
|
||
ADDI T2_SP,A4
|
||
MOVE *A4+,A5 ;CHAR DIMENSIONS
|
||
MOVE A5,A6 ;SPLIT UP BYTE
|
||
SLL 12,A6 ;SHIFT UP HEIGHT TO Y
|
||
SLL 28,A5 ;STRIP AWAY HEIGHT
|
||
SRL 28,A5
|
||
MOVY A6,A5
|
||
RL 16,A5
|
||
MOVE A5,DYDX
|
||
|
||
CLR A6 ;A6 = CHAR WIDTH
|
||
MOVX A5,A6
|
||
|
||
ADDK 7, A6 ;ROUND UP WIDTH TO INTEGRAL NUMBER
|
||
SRL 3, A6 ;OF BYTES = SOURCE PITCH
|
||
SLL 3, A6
|
||
MOVE A6,SPTCH
|
||
|
||
MOVE *A4,A6 ;CHAR DATA
|
||
ADDI CBASE,A6
|
||
MOVE A6,SADDR
|
||
|
||
MOVE A1,DADDR
|
||
|
||
PIXBLT B,XY
|
||
|
||
CLR A6
|
||
MOVE A2,A2
|
||
JRZ $210
|
||
|
||
MOVY A5,A6 ;A1 += (CHAR HEIGHT + SPACING)
|
||
SRL 16,A6 ;DIRECTION = DOWN
|
||
ADDK 1,A6
|
||
SLL 16,A6
|
||
ADD A6,A1
|
||
JRUC $200
|
||
|
||
$210 MOVX A5,A6 ;A1 += (CHAR WIDTH + SPACING)
|
||
ADDK 2,A6 ;DIRECTION = RIGHT
|
||
ADD A6,A1
|
||
JRUC $200
|
||
|
||
$230 ;SETF 16, 1, 0
|
||
FRET B6
|
||
|
||
STRINGCENTER:
|
||
SETF 8, 0, 0
|
||
CLR A1
|
||
MOVE A0,A2
|
||
SPLLOOP
|
||
MOVE *A0+, A4 ; GET THE CHAR
|
||
JRZ SPLEND ; END OF STRING
|
||
|
||
SUBK 32, A4 ; GET POINTER TO CHARACTER HEADER
|
||
|
||
SLL 3,A4
|
||
ADDI SYSFONT,A4,L
|
||
MOVB *A4,A4
|
||
SLL 5,A4
|
||
ADDI T2_SP,A4
|
||
|
||
MOVE *A4+, A5, 1 ; CHAR DIMENSIONS
|
||
ZEXT A5
|
||
|
||
SRL 4,A5 ; GET JUST THE X DIMENSION
|
||
|
||
; ADDK 7, A5 ; ROUND UP WIDTH TO INTEGRAL NUMBER
|
||
; SRL 3, A5 ; OF BYTES = SOURCE PITCH
|
||
; SLL 3, A5
|
||
|
||
ADDK 2H, A5 ; GIVE IN TO SPACING
|
||
ADD A5, A1
|
||
JRUC SPLLOOP
|
||
|
||
SPLEND
|
||
SETF 16, 1, 0
|
||
MOVE A2,A0 ; RESTORE STRING ADDRESS
|
||
SRL 1,A1
|
||
MOVI 200,A2
|
||
SUB A1,A2
|
||
MOVE A2,A1
|
||
FRET B6
|
||
|
||
;****************************************************************************
|
||
;* CIRCLE: FUNCTION DRAWS OUTLINE OR FILLED CIRCLES. *
|
||
;* *
|
||
;* ENTRY: A0 = radius *
|
||
;* A1 = center (Y:X) *
|
||
;* A6 = <00:15> = color *
|
||
;* A6 = <15:31> = fill: 0=no fill, 1=fill *
|
||
;* *
|
||
;* USES: A0 - A8, B0, B10 *
|
||
;****************************************************************************
|
||
|
||
CIRCLE
|
||
ADDI SCRXFUDGE,A1
|
||
|
||
movi plot8,a7 ; assume no fill
|
||
btst 16,a6
|
||
jrz CIRC0
|
||
movi fill4,a7
|
||
CIRC0
|
||
movi SCRN_PTCH,DPTCH ;Restore screen pitch and convdp
|
||
movk >13,b10 ;this is faster
|
||
MOVE B10,@CONVDP
|
||
MOVE A6,COLOR1
|
||
movi [1,0],DYDX ; Y width always 1
|
||
|
||
clr a2 ; x = 0
|
||
move a0,a3 ; y = r
|
||
move a0,a4
|
||
sll 1,a4
|
||
subk 3,a4
|
||
neg a4 ; d = 3 - 2*r
|
||
cloop
|
||
cmp a3,a2 ; if x > y, we are done
|
||
jrgt done
|
||
|
||
MOVE A7,B0 ; PLOT ROUTINE
|
||
EXGPC B0
|
||
|
||
move a2,a5 ; x -> a5
|
||
btst 31,a4
|
||
jrz dpos ; branch if d is positive
|
||
|
||
; d negative
|
||
|
||
sll 2,a5 ; 4*x -> a5
|
||
addk 6,a5 ; 4*x+6 -> a5
|
||
jruc cont
|
||
|
||
; d positive
|
||
|
||
dpos sub a3,a5 ; x-y -> a5
|
||
sll 2,a5 ; 4*(x-y) -> a5
|
||
addk 10,a5 ; 4*(x-y)+10 -> a5
|
||
subk 1,a3 ; y = y - 1
|
||
|
||
cont add a5,a4 ; d = d + a5
|
||
addk 1,a2 ; x = x + 1
|
||
jruc cloop
|
||
|
||
done FRET B6
|
||
|
||
plot8
|
||
move a3,a5
|
||
neg a5 ; -y into a5; +y in a3
|
||
sll 16,a5
|
||
sll 16,a3
|
||
movx a2,a5 ; a3 = (y:x)
|
||
movx a2,a3 ; a5 = (-y:x)
|
||
|
||
movk 2,a8
|
||
put4
|
||
move a1,a0 ; center (Y:X) in a0
|
||
addxy a3,a0 ; (cx+x),(cy+y)
|
||
pixt a6,*a0.XY
|
||
move a1,a0 ; center (Y:X) in a0
|
||
addxy a5,a0 ; (cx+x),(cy-y)
|
||
pixt a6,*a0.XY
|
||
move a1,a0 ; center (Y:X) in a0
|
||
subxy a3,a0 ; (cx-x),(cy-y)
|
||
pixt a6,*a0.XY
|
||
move a1,a0 ; center (Y:X) in a0
|
||
subxy a5,a0 ; (cx-x),(cy+y)
|
||
pixt A6,*a0.XY
|
||
rl 16,a3
|
||
rl 16,a5 ; transpose x and y
|
||
dsj a8,put4
|
||
sra 16,a3 ; restore y
|
||
|
||
FRET B0
|
||
|
||
fill4:
|
||
move a2,b10 ; x
|
||
sll 1,b10 ; 2x
|
||
movx b10,DYDX ; delta x = 2x
|
||
move a3,a5
|
||
neg a5 ; -y into a5 +y in a3
|
||
sll 16,a5
|
||
sll 16,a3
|
||
movx a2,a5 ; a3 = (y:x)
|
||
movx a2,a3 ; a5 = (-y:x)
|
||
movk 2,a8
|
||
put2:
|
||
move a1,a0
|
||
subxy a5,a0
|
||
move a0,DADDR
|
||
fill XY
|
||
|
||
move a1,a0
|
||
subxy a3,a0
|
||
move a0,DADDR
|
||
fill XY
|
||
rl 16,a3 ; a3 = (x:y)
|
||
rl 16,a5 ; transpose x and y
|
||
clr a6
|
||
subxy a5,a6
|
||
move a6,a5 ; a5 = (-x:y)
|
||
move a3,b10 ; y
|
||
sll 1,b10 ; 2y
|
||
movx b10,DYDX ; delta x = 2y
|
||
dsj a8,put2
|
||
sra 16,a3 ; restore y
|
||
|
||
FRET B0
|
||
|
||
********************************
|
||
*SCRCLR - CLEAR ENTIRE BIT MAP
|
||
* USES:B2,B3,B4 CALL WITH B6
|
||
DSCRCLR
|
||
CLR B2
|
||
DSWRITE
|
||
CLR B3
|
||
MOVE B3,@DMACMAP,0
|
||
MOVI SCREEN,B3,L
|
||
MOVI (SCRNE-SCREEN)/32,B4,L
|
||
SCRLP MOVE B2,*B3+,L
|
||
DSJS B4,SCRLP
|
||
FRET B6
|
||
|
||
|
||
|
||
**************************************************************************
|
||
* *
|
||
* CPU BOARD INFORMATION *
|
||
* *
|
||
**************************************************************************
|
||
|
||
CPU_VECS:
|
||
VECMAC COLOR_WHITE,5,15,390,15 ; BOARD OUTLINE
|
||
VECMAC COLOR_WHITE,390,15,390,254
|
||
VECMAC COLOR_WHITE,5,253,390,253
|
||
VECMAC COLOR_WHITE,5,15,5,100
|
||
VECMAC COLOR_WHITE,5,100,15,100
|
||
VECMAC COLOR_WHITE,15,100,15,115
|
||
VECMAC COLOR_WHITE,5,115,15,115
|
||
VECMAC COLOR_WHITE,5,115,5,135
|
||
VECMAC COLOR_WHITE,5,135,15,135
|
||
VECMAC COLOR_WHITE,15,135,15,138
|
||
VECMAC COLOR_WHITE,5,138,15,138
|
||
VECMAC COLOR_WHITE,5,138,5,215
|
||
VECMAC COLOR_WHITE,5,215,15,215
|
||
VECMAC COLOR_WHITE,15,215,15,230
|
||
VECMAC COLOR_WHITE,5,230,15,230
|
||
VECMAC COLOR_WHITE,5,230,5,254
|
||
.LONG 0
|
||
|
||
CPUXBASE EQU 5
|
||
CPUYBASE EQU 5
|
||
|
||
|
||
CPU_CHIPS:
|
||
CRAM1 CHIPMAC 0,125,25,20,45,7,11,CNAMEA8,1,2,2,1 ; COLOR RAM
|
||
CRAM2 CHIPMAC 1,125,75,20,45,7,11,CNAMEC8,1,2,2,1 ; COLOR RAM
|
||
|
||
VRAM1 CHIPMAC 2,190,25,15,38,6,2,CNAMEA11,1,2,2,1 ; BANK 1 VIDEO RAM
|
||
VRAM2 CHIPMAC 3,207,25,15,38,6,2,CNAMEA12,1,2,2,1 ; (PALETTE)
|
||
VRAM3 CHIPMAC 4,224,25,15,38,6,2,CNAMEA13,1,2,2,1
|
||
VRAM4 CHIPMAC 5,241,25,15,38,6,2,CNAMEA14,1,2,2,1
|
||
|
||
VRAM5 CHIPMAC 6,190,71,15,38,6,2,CNAMEB11,1,2,2,1 ; BANK 2 VIDEO RAM
|
||
VRAM6 CHIPMAC 7,207,71,15,38,6,2,CNAMEB12,1,2,2,1 ; (PIXEL)
|
||
VRAM7 CHIPMAC 8,224,71,15,38,6,2,CNAMEB13,1,2,2,1
|
||
VRAM8 CHIPMAC 9,241,71,15,38,6,2,CNAMEB14,1,2,2,1
|
||
|
||
CPU CHIPMAC 0,330,60,35,35,4,13,CNAMEB21,0,3,3,1 ; CPU
|
||
|
||
DMA CHIPMAC 0,201,120,38,38,6,16,CNAMEE13,0,3,3,1 ; DMA
|
||
|
||
PROM1 CHIPMAC 1,155,210,20,40,7,3,CNAMEJ12,1,2,2,1 ; PROGRAM ROM 1
|
||
PROM2 CHIPMAC 0,155,167,20,40,7,3,CNAMEG12,1,2,2,1 ; PROGRAM ROM 2
|
||
|
||
IROM1 CHIPMAC 1,195,167,20,40,7,3,CNAMEG14,1,2,2,1 ; IMAGE ROM
|
||
IROM2 CHIPMAC 2,217,167,20,40,7,3,CNAMEG16,1,2,2,1 ; IMAGE ROM
|
||
IROM3 CHIPMAC 3,239,167,20,40,7,3,CNAMEG17,1,2,2,1 ; IMAGE ROM
|
||
IROM4 CHIPMAC 4,261,167,20,40,7,3,CNAMEG18,1,2,2,1 ; IMAGE ROM
|
||
|
||
IROM5 CHIPMAC 5,283,167,20,40,7,3,CNAMEG19,1,2,2,1 ; IMAGE ROM
|
||
IROM6 CHIPMAC 6,305,167,20,40,7,3,CNAMEG20,1,2,2,1 ; IMAGE ROM
|
||
IROM7 CHIPMAC 7,327,167,20,40,7,3,CNAMEG22,1,2,2,1 ; IMAGE ROM
|
||
IROM8 CHIPMAC 8,349,167,20,40,7,3,CNAMEG23,1,2,2,1 ; IMAGE ROM
|
||
|
||
IROM9 CHIPMAC 9,195,210,20,40,7,3,CNAMEJ14,1,2,2,1 ; IMAGE ROM
|
||
IROM10 CHIPMAC 10,217,210,20,40,7,3,CNAMEJ16,1,2,2,1 ; IMAGE ROM
|
||
IROM11 CHIPMAC 11,239,210,20,40,7,3,CNAMEJ17,1,2,2,1 ; IMAGE ROM
|
||
IROM12 CHIPMAC 12,261,210,20,40,7,3,CNAMEJ18,1,2,2,1 ; IMAGE ROM
|
||
|
||
IROM13 CHIPMAC 13,283,210,20,40,7,3,CNAMEJ19,1,2,2,1 ; IMAGE ROM
|
||
IROM14 CHIPMAC 14,305,210,20,40,7,3,CNAMEJ20,1,2,2,1 ; IMAGE ROM
|
||
IROM15 CHIPMAC 15,327,210,20,40,7,3,CNAMEJ22,1,2,2,1 ; IMAGE ROM
|
||
IROM16 CHIPMAC 16,349,210,20,40,7,3,CNAMEJ23,1,2,2,1 ; IMAGE ROM
|
||
|
||
SRAM1 CHIPMAC 0,50,210,13,33,4,4,CNAMEJ4,1,2,2,1 ; SCRATCH PAD
|
||
SRAM2 CHIPMAC 1,67,210,13,33,4,4,CNAMEJ5,1,2,2,1 ; SCRATCH PAD
|
||
SRAM3 CHIPMAC 2,84,210,13,33,4,4,CNAMEJ6,1,2,2,1 ; SCRATCH PAD
|
||
SRAM4 CHIPMAC 3,101,210,13,33,4,4,CNAMEJ7,1,2,2,1 ; SCRATCH PAD
|
||
.LONG 0
|
||
|
||
VRAMTAB .LONG CRAM1,CRAM2
|
||
.LONG VRAM1,VRAM2,VRAM3,VRAM4,VRAM5,VRAM6
|
||
.LONG VRAM7,VRAM8
|
||
.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
|
||
|
||
CNAMEA8
|
||
.STRING "UA8",0
|
||
.EVEN
|
||
CNAMEA11
|
||
.STRING "UA11",0
|
||
.EVEN
|
||
CNAMEA12
|
||
.STRING "UA12",0
|
||
.EVEN
|
||
CNAMEA13
|
||
.STRING "UA13",0
|
||
.EVEN
|
||
CNAMEA14
|
||
.STRING "UA14",0
|
||
.EVEN
|
||
|
||
CNAMEB11
|
||
.STRING "UB11",0
|
||
.EVEN
|
||
CNAMEB12
|
||
.STRING "UB12",0
|
||
.EVEN
|
||
CNAMEB13
|
||
.STRING "UB13",0
|
||
.EVEN
|
||
CNAMEB14
|
||
.STRING "UB14",0
|
||
.EVEN
|
||
CNAMEB21
|
||
.STRING "UB21",0
|
||
.EVEN
|
||
|
||
CNAMEC8
|
||
.STRING "UC8",0
|
||
.EVEN
|
||
|
||
CNAMEE13
|
||
.STRING "UE13",0
|
||
.EVEN
|
||
|
||
CNAMEG12
|
||
.STRING "UG12",0
|
||
.EVEN
|
||
CNAMEG14
|
||
.STRING "UG14",0
|
||
.EVEN
|
||
CNAMEG16
|
||
.STRING "UG16",0
|
||
.EVEN
|
||
CNAMEG17
|
||
.STRING "UG17",0
|
||
.EVEN
|
||
CNAMEG18
|
||
.STRING "UG18",0
|
||
.EVEN
|
||
CNAMEG19
|
||
.STRING "UG19",0
|
||
.EVEN
|
||
CNAMEG20
|
||
.STRING "UG20",0
|
||
.EVEN
|
||
CNAMEG22
|
||
.STRING "UG22",0
|
||
.EVEN
|
||
CNAMEG23
|
||
.STRING "UG23",0
|
||
.EVEN
|
||
|
||
CNAMEJ4
|
||
.STRING "UJ4",0
|
||
.EVEN
|
||
CNAMEJ5
|
||
.STRING "UJ5",0
|
||
.EVEN
|
||
CNAMEJ6
|
||
.STRING "UJ6",0
|
||
.EVEN
|
||
CNAMEJ7
|
||
.STRING "UJ7",0
|
||
.EVEN
|
||
CNAMEJ12
|
||
.STRING "UJ12",0
|
||
.EVEN
|
||
CNAMEJ14
|
||
.STRING "UJ14",0
|
||
.EVEN
|
||
CNAMEJ16
|
||
.STRING "UJ16",0
|
||
.EVEN
|
||
CNAMEJ17
|
||
.STRING "UJ17",0
|
||
.EVEN
|
||
CNAMEJ18
|
||
.STRING "UJ18",0
|
||
.EVEN
|
||
CNAMEJ19
|
||
.STRING "UJ19",0
|
||
.EVEN
|
||
CNAMEJ20
|
||
.STRING "UJ20",0
|
||
.EVEN
|
||
CNAMEJ22
|
||
.STRING "UJ22",0
|
||
.EVEN
|
||
CNAMEJ23
|
||
.STRING "UJ23",0
|
||
.EVEN
|
||
|
||
|
||
**************************************************************************
|
||
* *
|
||
* RAM CHIP DATA *
|
||
* *
|
||
**************************************************************************
|
||
|
||
;
|
||
; MAKE SURE THESE TABLES CORRESPOND WITH THE STUFF ABOVE
|
||
;
|
||
|
||
VRAMCHIPS:
|
||
; COLOR RAMS
|
||
|
||
RAM_CHIP 0,0, 8, 16, 1800000H, 187FFF0H ; UA8 ( 0 - 3 )
|
||
RAM_CHIP 0,1, 8, 16, 1800008H, 187FFF8H ; UC8 ( 8 - 11 )
|
||
|
||
; VIDEO RAMS
|
||
; RAM_CHIP $MACRO TAB_LINK,CHIP_NO, WIDTH, INTERLEAVE, START_ADDR, END_ADDR
|
||
|
||
RAM_CHIP 0, 6, 8, 32, 0000018H, 03FFFF8H ; UB11 ( 24 - 27 )
|
||
RAM_CHIP 0, 8, 8, 32, 0000010H, 03FFFF0H ; UB13 ( 16 - 19 )
|
||
RAM_CHIP 0, 7, 8, 32, 0000008H, 03FFFE8H ; UB12 ( 8 - 11 )
|
||
RAM_CHIP 0, 9, 8, 32, 0000000H, 03FFFE0H ; UB14 ( 0 - 3 )
|
||
|
||
.LONG 0
|
||
|
||
PALCHIPS:
|
||
; VIDEO PALETTE RAMS
|
||
; RAM_CHIP $MACRO TAB_LINK,CHIP_NO, WIDTH, INTERLEAVE, START_ADDR, END_ADDR
|
||
|
||
RAM_CHIP 0,2, 8, 32, 0000018H, 03FFFF8H ; UA11 ( 24 - 27 )
|
||
RAM_CHIP 0,4, 8, 32, 0000010H, 03FFFF0H ; UA13 ( 16 - 19 )
|
||
RAM_CHIP 0,3, 8, 32, 0000008H, 03FFFE8H ; UA12 ( 8 - 11 )
|
||
RAM_CHIP 0,5, 8, 32, 0000000H, 03FFFE0H ; UA14 ( 0 - 3 )
|
||
|
||
.LONG 0
|
||
|
||
; SCRATCH RAMS
|
||
|
||
SRAMCHECK
|
||
.STRING "CHECKING SCRATCH RAMS",0
|
||
.EVEN
|
||
|
||
SRAMCHIPS
|
||
RAM_CHIP SRAM4,3, 4, 16, 1000004H, 13FFFF4H ; UJ7 ( 4 - 7 )
|
||
RAM_CHIP SRAM3,2, 4, 16, 1000000H, 13FFFF0H ; UJ6 ( 0 - 3 )
|
||
RAM_CHIP SRAM2,1, 4, 16, 1000008H, 13FFFF8H ; UJ5 ( 8 - 11 )
|
||
RAM_CHIP SRAM1,0, 4, 16, 100000CH, 13FFFFCH ; UJ4 ( 12 - 15 )
|
||
|
||
.LONG 0
|
||
|
||
****************************************************************************
|
||
* SYSFONT: SYSTEM FONT; MODULE DEFINES THE FONT USED WITH SYSTEM *
|
||
* DIAGNOSTICS. *
|
||
****************************************************************************
|
||
|
||
; ===========================
|
||
; | DYDX CHAR DIMENSIONS |
|
||
; | POINTER TO XY CHAR DATA |
|
||
; ===========================
|
||
|
||
T2_SP .WORD 048h
|
||
.word I2_SP-CBASE
|
||
|
||
T2_MN .WORD 088h
|
||
.WORD I2_MN-CBASE
|
||
|
||
T2_PER .WORD 028H
|
||
.WORD I2_PER-CBASE
|
||
|
||
T2_SLASH
|
||
.WORD 068H
|
||
.WORD I2_SLASH-CBASE
|
||
T2_00
|
||
.WORD 068h
|
||
.WORD I2_00-CBASE
|
||
|
||
T2_11:
|
||
.WORD 068h
|
||
.WORD I2_11-CBASE
|
||
|
||
T2_22:
|
||
.WORD 068h
|
||
.WORD I2_22-CBASE
|
||
|
||
T2_33:
|
||
.WORD 068h
|
||
.WORD I2_33-CBASE
|
||
|
||
T2_44:
|
||
.WORD 068h
|
||
.WORD I2_44-CBASE
|
||
|
||
T2_55:
|
||
.WORD 068h
|
||
.WORD I2_55-CBASE
|
||
|
||
T2_66:
|
||
.WORD 068h
|
||
.WORD I2_66-CBASE
|
||
|
||
T2_77:
|
||
.WORD 068h
|
||
.WORD I2_77-CBASE
|
||
|
||
T2_88:
|
||
.WORD 068h
|
||
.WORD I2_88-CBASE
|
||
|
||
T2_99:
|
||
.WORD 068h
|
||
.WORD I2_99-CBASE
|
||
|
||
T2_AA:
|
||
.WORD 068h
|
||
.WORD I2_AA-CBASE
|
||
|
||
T2_BB:
|
||
.WORD 068h
|
||
.WORD I2_BB-CBASE
|
||
|
||
T2_CC:
|
||
.WORD 068h
|
||
.WORD I2_CC-CBASE
|
||
|
||
T2_DD:
|
||
.WORD 068h
|
||
.WORD I2_DD-CBASE
|
||
|
||
T2_EE:
|
||
.WORD 068h
|
||
.WORD I2_EE-CBASE
|
||
|
||
T2_FF:
|
||
.WORD 068h
|
||
.WORD I2_FF-CBASE
|
||
|
||
T2_GG:
|
||
.WORD 068h
|
||
.WORD I2_GG-CBASE
|
||
|
||
T2_HH:
|
||
.WORD 068h
|
||
.WORD I2_HH-CBASE
|
||
|
||
T2_II:
|
||
.WORD 028h
|
||
.WORD I2_II-CBASE
|
||
|
||
T2_JJ:
|
||
.WORD 068h
|
||
.WORD I2_JJ-CBASE
|
||
|
||
T2_KK:
|
||
.WORD 068h
|
||
.WORD I2_KK-CBASE
|
||
|
||
T2_LL:
|
||
.WORD 058h
|
||
.WORD I2_LL-CBASE
|
||
|
||
T2_MM:
|
||
.WORD 0A8h
|
||
.WORD I2_MM-CBASE
|
||
|
||
T2_NN:
|
||
.WORD 078h
|
||
.WORD I2_NN-CBASE
|
||
|
||
T2_OO:
|
||
.WORD 078h
|
||
.WORD I2_OO-CBASE
|
||
|
||
T2_PP:
|
||
.WORD 068h
|
||
.WORD I2_PP-CBASE
|
||
|
||
T2_QQ:
|
||
.WORD 07Ah
|
||
.WORD I2_QQ-CBASE
|
||
|
||
T2_RR:
|
||
.WORD 068h
|
||
.WORD I2_RR-CBASE
|
||
|
||
T2_SS:
|
||
.WORD 068h
|
||
.WORD I2_SS-CBASE
|
||
|
||
T2_TT:
|
||
.WORD 068h
|
||
.WORD I2_TT-CBASE
|
||
|
||
T2_UU:
|
||
.WORD 068h
|
||
.WORD I2_UU-CBASE
|
||
|
||
T2_VV:
|
||
.WORD 078h
|
||
.WORD I2_VV-CBASE
|
||
|
||
T2_WW:
|
||
.WORD 0B8h
|
||
.WORD I2_WW-CBASE
|
||
|
||
T2_XX:
|
||
.WORD 078h
|
||
.WORD I2_XX-CBASE
|
||
|
||
T2_YY:
|
||
.WORD 068h
|
||
.WORD I2_YY-CBASE
|
||
|
||
T2_ZZ:
|
||
.WORD 068h
|
||
.WORD I2_ZZ-CBASE
|
||
|
||
; ===========================
|
||
; | CHARACTER DIRECTORY |
|
||
; ===========================
|
||
|
||
SYSFONT
|
||
|
||
.BYTE (T2_SP-T2_SP)/32 ;SPACE CHARACTER, " "
|
||
.BYTE (T2_SP-T2_SP)/32 ;FILLER
|
||
.BYTE (T2_SP-T2_SP)/32
|
||
.BYTE (T2_SP-T2_SP)/32
|
||
.BYTE (T2_SP-T2_SP)/32
|
||
.BYTE (T2_SP-T2_SP)/32
|
||
.BYTE (T2_SP-T2_SP)/32
|
||
.BYTE (T2_SP-T2_SP)/32
|
||
.BYTE (T2_SP-T2_SP)/32
|
||
.BYTE (T2_SP-T2_SP)/32
|
||
.BYTE (T2_SP-T2_SP)/32
|
||
.BYTE (T2_SP-T2_SP)/32
|
||
.BYTE (T2_SP-T2_SP)/32
|
||
.BYTE (T2_MN-T2_SP)/32 ; MINUS CHARACTER, "-"
|
||
.BYTE (T2_PER-T2_SP)/32
|
||
.BYTE (T2_SLASH-T2_SP)/32 ; "/"
|
||
.BYTE (T2_00-T2_SP)/32 ;0
|
||
.BYTE (T2_11-T2_SP)/32 ;1
|
||
.BYTE (T2_22-T2_SP)/32 ;2
|
||
.BYTE (T2_33-T2_SP)/32 ;3
|
||
.BYTE (T2_44-T2_SP)/32 ;4
|
||
.BYTE (T2_55-T2_SP)/32 ;5
|
||
.BYTE (T2_66-T2_SP)/32 ;6
|
||
.BYTE (T2_77-T2_SP)/32 ;7
|
||
.BYTE (T2_88-T2_SP)/32 ;8
|
||
.BYTE (T2_99-T2_SP)/32 ;9
|
||
.BYTE (T2_00-T2_SP)/32 ; no :
|
||
.BYTE (T2_00-T2_SP)/32 ; no ;
|
||
.BYTE (T2_00-T2_SP)/32 ; no <
|
||
.BYTE (T2_00-T2_SP)/32 ; no =
|
||
.BYTE (T2_00-T2_SP)/32 ; no >
|
||
.BYTE (T2_00-T2_SP)/32 ; no ?
|
||
.BYTE (T2_00-T2_SP)/32 ; no @
|
||
.BYTE (T2_AA-T2_SP)/32 ;A
|
||
.BYTE (T2_BB-T2_SP)/32 ;B
|
||
.BYTE (T2_CC-T2_SP)/32 ;C
|
||
.BYTE (T2_DD-T2_SP)/32 ;D
|
||
.BYTE (T2_EE-T2_SP)/32 ;E
|
||
.BYTE (T2_FF-T2_SP)/32 ;F
|
||
.BYTE (T2_GG-T2_SP)/32 ;G
|
||
.BYTE (T2_HH-T2_SP)/32 ;H
|
||
.BYTE (T2_II-T2_SP)/32 ;I
|
||
.BYTE (T2_JJ-T2_SP)/32 ;J
|
||
.BYTE (T2_KK-T2_SP)/32 ;K
|
||
.BYTE (T2_LL-T2_SP)/32 ;L
|
||
.BYTE (T2_MM-T2_SP)/32 ;M
|
||
.BYTE (T2_NN-T2_SP)/32 ;N
|
||
.BYTE (T2_OO-T2_SP)/32 ;O
|
||
.BYTE (T2_PP-T2_SP)/32 ;P
|
||
.BYTE (T2_QQ-T2_SP)/32 ;Q
|
||
.BYTE (T2_RR-T2_SP)/32 ;R
|
||
.BYTE (T2_SS-T2_SP)/32 ;S
|
||
.BYTE (T2_TT-T2_SP)/32 ;T
|
||
.BYTE (T2_UU-T2_SP)/32 ;U
|
||
.BYTE (T2_VV-T2_SP)/32 ;V
|
||
.BYTE (T2_WW-T2_SP)/32 ;W
|
||
.BYTE (T2_XX-T2_SP)/32 ;X
|
||
.BYTE (T2_YY-T2_SP)/32 ;Y
|
||
.BYTE (T2_ZZ-T2_SP)/32 ;Z
|
||
|
||
; ===========================
|
||
; | CHARACTER DEFINITIONS |
|
||
; ===========================
|
||
CBASE
|
||
I2_SP
|
||
.byte 00h
|
||
.byte 00h
|
||
.byte 00h
|
||
.byte 00h
|
||
.byte 00h
|
||
.byte 00h
|
||
.byte 00h
|
||
.byte 00h
|
||
|
||
I2_MN:
|
||
.byte 000h
|
||
.byte 000h
|
||
.byte 000h
|
||
.byte 0FFh
|
||
.byte 0FFh
|
||
.byte 000h
|
||
.byte 000h
|
||
.byte 000h
|
||
|
||
I2_PER:
|
||
.BYTE 0
|
||
.BYTE 0
|
||
.BYTE 0
|
||
.BYTE 0
|
||
.BYTE 0
|
||
.BYTE 0
|
||
.BYTE 0FFH
|
||
.BYTE 0FFH
|
||
|
||
I2_SLASH:
|
||
.BYTE 30H
|
||
.BYTE 30H
|
||
.BYTE 18H
|
||
.BYTE 18H
|
||
.BYTE 06H
|
||
.BYTE 06H
|
||
.BYTE 03H
|
||
.BYTE 03H
|
||
|
||
I2_00:
|
||
.byte 01Eh
|
||
.byte 03Fh
|
||
.byte 033h
|
||
.byte 033h
|
||
.byte 033h
|
||
.byte 033h
|
||
.byte 03Fh
|
||
.byte 01Eh
|
||
|
||
I2_11:
|
||
.byte 0Eh
|
||
.byte 0Fh
|
||
.byte 0Fh
|
||
.byte 0Ch
|
||
.byte 0Ch
|
||
.byte 0Ch
|
||
.byte 0Ch
|
||
.byte 0Ch
|
||
|
||
I2_22:
|
||
.byte 01Fh
|
||
.byte 03Fh
|
||
.byte 038h
|
||
.byte 01Ch
|
||
.byte 0Eh
|
||
.byte 07h
|
||
.byte 03Fh
|
||
.byte 03Fh
|
||
|
||
I2_33:
|
||
.byte 01Fh
|
||
.byte 03Fh
|
||
.byte 030h
|
||
.byte 01Eh
|
||
.byte 01Eh
|
||
.byte 030h
|
||
.byte 03Fh
|
||
.byte 01Fh
|
||
|
||
I2_44:
|
||
.byte 038h
|
||
.byte 03Ch
|
||
.byte 036h
|
||
.byte 033h
|
||
.byte 03Fh
|
||
.byte 03Fh
|
||
.byte 030h
|
||
.byte 030h
|
||
|
||
I2_55:
|
||
.byte 03Fh
|
||
.byte 03Fh
|
||
.byte 03h
|
||
.byte 01Fh
|
||
.byte 03Fh
|
||
.byte 030h
|
||
.byte 03Fh
|
||
.byte 01Fh
|
||
|
||
I2_66:
|
||
.byte 03Eh
|
||
.byte 03Fh
|
||
.byte 03h
|
||
.byte 01Fh
|
||
.byte 03Fh
|
||
.byte 033h
|
||
.byte 03Fh
|
||
.byte 01Eh
|
||
|
||
I2_77:
|
||
.byte 03Fh
|
||
.byte 03Fh
|
||
.byte 030h
|
||
.byte 018h
|
||
.byte 018h
|
||
.byte 0Ch
|
||
.byte 0Ch
|
||
.byte 0Ch
|
||
|
||
I2_88:
|
||
.byte 01Eh
|
||
.byte 03Fh
|
||
.byte 033h
|
||
.byte 01Eh
|
||
.byte 01Eh
|
||
.byte 033h
|
||
.byte 03Fh
|
||
.byte 01Eh
|
||
|
||
I2_99:
|
||
.byte 01Eh
|
||
.byte 03Fh
|
||
.byte 033h
|
||
.byte 03Fh
|
||
.byte 03Eh
|
||
.byte 030h
|
||
.byte 03Fh
|
||
.byte 01Fh
|
||
|
||
I2_AA:
|
||
.byte 01Eh
|
||
.byte 03Fh
|
||
.byte 033h
|
||
.byte 033h
|
||
.byte 03Fh
|
||
.byte 03Fh
|
||
.byte 033h
|
||
.byte 033h
|
||
|
||
I2_BB:
|
||
.byte 01Fh
|
||
.byte 03Fh
|
||
.byte 033h
|
||
.byte 03Fh
|
||
.byte 01Fh
|
||
.byte 033h
|
||
.byte 03Fh
|
||
.byte 01Fh
|
||
|
||
I2_CC:
|
||
.byte 03Eh
|
||
.byte 03Fh
|
||
.byte 03h
|
||
.byte 03h
|
||
.byte 03h
|
||
.byte 03h
|
||
.byte 03Fh
|
||
.byte 03Eh
|
||
|
||
I2_DD:
|
||
.byte 01Fh
|
||
.byte 03Fh
|
||
.byte 033h
|
||
.byte 033h
|
||
.byte 033h
|
||
.byte 033h
|
||
.byte 03Fh
|
||
.byte 01Fh
|
||
|
||
I2_EE:
|
||
.byte 03Fh
|
||
.byte 03Fh
|
||
.byte 03h
|
||
.byte 03Fh
|
||
.byte 03Fh
|
||
.byte 03h
|
||
.byte 03Fh
|
||
.byte 03Fh
|
||
|
||
I2_FF:
|
||
.byte 03Fh
|
||
.byte 03Fh
|
||
.byte 03h
|
||
.byte 03Fh
|
||
.byte 03Fh
|
||
.byte 03h
|
||
.byte 03h
|
||
.byte 03h
|
||
|
||
I2_GG:
|
||
.byte 03Eh
|
||
.byte 03Fh
|
||
.byte 03h
|
||
.byte 03h
|
||
.byte 033h
|
||
.byte 033h
|
||
.byte 03Fh
|
||
.byte 01Eh
|
||
|
||
I2_HH:
|
||
.byte 033h
|
||
.byte 033h
|
||
.byte 033h
|
||
.byte 03Fh
|
||
.byte 03Fh
|
||
.byte 033h
|
||
.byte 033h
|
||
.byte 033h
|
||
|
||
I2_II:
|
||
.byte 03h
|
||
.byte 03h
|
||
.byte 03h
|
||
.byte 03h
|
||
.byte 03h
|
||
.byte 03h
|
||
.byte 03h
|
||
.byte 03h
|
||
|
||
I2_JJ:
|
||
.byte 030h
|
||
.byte 030h
|
||
.byte 030h
|
||
.byte 030h
|
||
.byte 030h
|
||
.byte 033h
|
||
.byte 03Fh
|
||
.byte 01Eh
|
||
|
||
I2_KK:
|
||
.byte 033h
|
||
.byte 033h
|
||
.byte 01Bh
|
||
.byte 0Fh
|
||
.byte 01Fh
|
||
.byte 033h
|
||
.byte 033h
|
||
.byte 033h
|
||
|
||
I2_LL:
|
||
.byte 03h
|
||
.byte 03h
|
||
.byte 03h
|
||
.byte 03h
|
||
.byte 03h
|
||
.byte 03h
|
||
.byte 01Fh
|
||
.byte 01Fh
|
||
|
||
I2_MM:
|
||
.byte 087h,03h
|
||
.byte 0CFh,03h
|
||
.byte 0CFh,03h
|
||
.byte 07Bh,03h
|
||
.byte 07Bh,03h
|
||
.byte 033h,03h
|
||
.byte 033h,03h
|
||
.byte 033h,03h
|
||
|
||
I2_NN:
|
||
.byte 063h
|
||
.byte 067h
|
||
.byte 06Fh
|
||
.byte 06Fh
|
||
.byte 07Bh
|
||
.byte 07Bh
|
||
.byte 073h
|
||
.byte 063h
|
||
|
||
I2_OO:
|
||
.byte 03Eh
|
||
.byte 07Fh
|
||
.byte 063h
|
||
.byte 063h
|
||
.byte 063h
|
||
.byte 063h
|
||
.byte 07Fh
|
||
.byte 03Eh
|
||
|
||
I2_PP:
|
||
.byte 01Fh
|
||
.byte 03Fh
|
||
.byte 033h
|
||
.byte 03Fh
|
||
.byte 01Fh
|
||
.byte 03h
|
||
.byte 03h
|
||
.byte 03h
|
||
|
||
I2_QQ:
|
||
.byte 03Eh
|
||
.byte 07Fh
|
||
.byte 063h
|
||
.byte 063h
|
||
.byte 063h
|
||
.byte 063h
|
||
.byte 07Fh
|
||
.byte 03Eh
|
||
.byte 060h
|
||
.byte 060h
|
||
|
||
I2_RR:
|
||
.byte 01Fh
|
||
.byte 03Fh
|
||
.byte 033h
|
||
.byte 03Fh
|
||
.byte 01Fh
|
||
.byte 033h
|
||
.byte 033h
|
||
.byte 033h
|
||
|
||
I2_SS:
|
||
.byte 03Eh
|
||
.byte 03Fh
|
||
.byte 03h
|
||
.byte 01Fh
|
||
.byte 03Eh
|
||
.byte 030h
|
||
.byte 03Fh
|
||
.byte 01Fh
|
||
|
||
I2_TT:
|
||
.byte 03Fh
|
||
.byte 03Fh
|
||
.byte 0Ch
|
||
.byte 0Ch
|
||
.byte 0Ch
|
||
.byte 0Ch
|
||
.byte 0Ch
|
||
.byte 0Ch
|
||
|
||
I2_UU:
|
||
.byte 033h
|
||
.byte 033h
|
||
.byte 033h
|
||
.byte 033h
|
||
.byte 033h
|
||
.byte 033h
|
||
.byte 03Fh
|
||
.byte 01Eh
|
||
|
||
I2_VV:
|
||
.byte 063h
|
||
.byte 063h
|
||
.byte 063h
|
||
.byte 036h
|
||
.byte 036h
|
||
.byte 03Eh
|
||
.byte 01Ch
|
||
.byte 01Ch
|
||
|
||
I2_WW:
|
||
.byte 023h,06h
|
||
.byte 023h,06h
|
||
.byte 073h,06h
|
||
.byte 076h,03h
|
||
.byte 076h,03h
|
||
.byte 0DEh,03h
|
||
.byte 08Ch,01h
|
||
.byte 08Ch,01h
|
||
|
||
I2_XX:
|
||
.byte 063h
|
||
.byte 063h
|
||
.byte 036h
|
||
.byte 01Ch
|
||
.byte 01Ch
|
||
.byte 036h
|
||
.byte 063h
|
||
.byte 063h
|
||
|
||
I2_YY:
|
||
.byte 033h
|
||
.byte 033h
|
||
.byte 01Eh
|
||
.byte 01Eh
|
||
.byte 0Ch
|
||
.byte 0Ch
|
||
.byte 0Ch
|
||
.byte 0Ch
|
||
|
||
I2_ZZ:
|
||
.byte 03Fh
|
||
.byte 03Fh
|
||
.byte 038h
|
||
.byte 01Ch
|
||
.byte 0Eh
|
||
.byte 07h
|
||
.byte 03Fh
|
||
.byte 03Fh
|
||
|
||
|
||
.EVEN
|
||
*
|
||
* ROM chip definitions and checksums
|
||
*
|
||
CKSUM1 .equ >87F3 ;>5d0b ;>ac9f ;a911
|
||
CKSUM2 .equ >D49A ;>edd7 ;>a0e2 ;9fff
|
||
|
||
PROMCHIPS
|
||
ROM_CHIP PROM1,0,0,16, 0FF800000H, 0FFFFFFF0H, CKSUM1 ; UJ12
|
||
ROM_CHIP PROM2,1,0,16, 0FF800008H, 0FFFFFFF8H, CKSUM2 ; UG12
|
||
.LONG 0
|
||
|
||
* CHECKSUM PATCHES
|
||
.WORD >ffff-CKSUM1 ;1'S COMPLEMENT OF THE UJ12 CHECKSUM
|
||
.WORD >ffff-CKSUM2 ;1'S COMPLEMENT OF THE UG12 CHECKSUM
|
||
|
||
|
||
**************************************************************************
|
||
* *
|
||
* IMAGE ROM CHECKSUM TABLES *
|
||
* *
|
||
* NOTE: COMMENT OUT ANY UNSTUFFED PARTS THAT *
|
||
* EXIST BEFORE THE .LONG 0 TERMINATOR! *
|
||
* *
|
||
**************************************************************************
|
||
; ROM_CHIP $MACRO TAB_LINK,CHIP_NO, WIDTH, INTERLEAVE, START_ADDR, END_ADDR, CHECK_SUM
|
||
IROMCHIPS
|
||
|
||
;1161 = NBA2_20.0
|
||
;748D = NBA2_20.1
|
||
;8B9D = NBA2_20.2
|
||
;5AFE = NBA2_20.3
|
||
;3E9B = NBA2_30.0
|
||
;5CA0 = NBA2_30.1
|
||
;C6EC = NBA2_30.2
|
||
;C336 = NBA2_30.3
|
||
;F400 = NBA2_40.0
|
||
;B70D = NBA2_40.1
|
||
;F731 = NBA2_40.2
|
||
;7BE3 = NBA2_40.3
|
||
;0ADB = NBA2_50.0
|
||
;3E90 = NBA2_50.1
|
||
;3C9B = NBA2_50.2
|
||
;0648 = NBA2_50.3
|
||
;F7A6 = NBA_PROG.0
|
||
;BE66 = NBA_PROG.1
|
||
|
||
;BDD6 = NBA2_50.0
|
||
;F515 = NBA2_50.1
|
||
;EF39 = NBA2_50.2
|
||
;B948 = NBA2_50.3
|
||
|
||
|
||
.EVEN
|
||
ROM_CHIP IROM1, 1, 8,32, 2000000H, 2FFFFE0H, 01161H ; UG14
|
||
ROM_CHIP IROM9, 9, 8,32, 2000008H, 2FFFFE8H, 0748dH ; UJ14
|
||
ROM_CHIP IROM5, 5, 8,32, 2000010H, 2FFFFF0H, 08b9dH ; UG19
|
||
ROM_CHIP IROM13,13, 8,32, 2000018H, 2FFFFF8H, 05afeH ; UJ19
|
||
|
||
ROM_CHIP IROM2, 2, 8,32, 3000000H, 3FFFFE0H, 03e9bH ; UG16
|
||
ROM_CHIP IROM10,10, 8,32, 3000008H, 3FFFFE8H, 05ca0H ; UJ16
|
||
ROM_CHIP IROM6, 6, 8,32, 3000010H, 3FFFFF0H, 0c6ecH ; UG20
|
||
ROM_CHIP IROM14,14, 8,32, 3000018H, 3FFFFF8H, 0c336H ; UJ20
|
||
|
||
ROM_CHIP IROM3, 3, 8,32, 4000000H, 4FFFFE0H, 0f400H ; UG17
|
||
ROM_CHIP IROM11,11, 8,32, 4000008H, 4FFFFE8H, 0b70dH ; UJ17
|
||
ROM_CHIP IROM7, 7, 8,32, 4000010H, 4FFFFF0H, 0f731H ; UG22
|
||
ROM_CHIP IROM15,15, 8,32, 4000018H, 4FFFFF8H, 07be3H ; UJ22
|
||
|
||
ROM_CHIP IROM4, 4, 8,32, 5000000H, 5FFFFE0H, 0bdd6H ; UG18
|
||
ROM_CHIP IROM12,12, 8,32, 5000008H, 5FFFFE8H, 0f515H ; UJ18
|
||
ROM_CHIP IROM8, 8, 8,32, 5000010H, 5FFFFF0H, 0ef39H ; UG23
|
||
ROM_CHIP IROM16,16, 8,32, 5000018H, 5FFFFF8H, 0b948H ; UJ23
|
||
|
||
.LONG 0 ; FORCE IT TO STOP HERE
|
||
|
||
|
||
|
||
.END
|
||
|