cruisin-usa/DIAG.ASM

4190 lines
74 KiB
NASM
Executable File

.FILE "DIAG.ASM"
*----------------------------------------------------------------------------
*DIAGNOSTIC AND BOOK KEEPING ROUTINES
*
*COPYRIGHT (C) 1994 BY TV GAMES, INC.
*ALL RIGHTS RESERVED
*
.include C30.EQU
.include MACS.EQU
.include MPROC.EQU
.include VUNIT.EQU
.include CMOS.EQU
.include SYSID.EQU
.include SYS.EQU
.include GLOBALS.EQU
.include SNDTAB.EQU
.include PALL.EQU
.include OBJECTS.EQU
.include TEXT.EQU
.include DIRQ.EQU
.include DIAG.EQU
.include ERROR.EQU
.text
*WAIT FOR ENTER BUTTON ON
WT_START
WT_S1
LDI @_newbut,R0
TSTB SW_DIAG,R0
BNZ WT_S1
RETS
*WAIT FOR ENTER BUTTON OFF
WT_NSTART
WT_NS1
LDI @_newbut,R0
TSTB SW_DIAG,R0
BZ WT_NS1
RETS
*WAIT FOR ENTER ON THEN OFF
KEYPAUSE
CALL WT_START
B WT_NSTART
*MAKE A BEEP
BEEP
LDI 980,AR2
BR SENDSND
;
*----------------------------------------------------------------------------
MW_Y2 .set 0
MW_X2 .set 1
MW_Y1 .set 2
MW_X1 .set 3
MAKE_WINDOW:
PUSH AR3
PUSH AR2
PUSH R2
PUSH R3
PUSH RC
LDI SP,AR3
LDI COL_LGREY,RS
CALL _fill
LDI *-AR3(MW_X1),AR2
LDI *-AR3(MW_Y1),R2
LDI *-AR3(MW_X2),R3
LDI *-AR3(MW_Y1),RC
LDI COL_LGREY2,RS
CALL _line
LDI *-AR3(MW_X1),AR2
LDI *-AR3(MW_Y1),R2
LDI *-AR3(MW_X1),R3
LDI *-AR3(MW_Y2),RC
LDI COL_LGREY2,RS
CALL _line
LDI *-AR3(MW_X2),AR2
LDI *-AR3(MW_Y1),R2
LDI *-AR3(MW_X2),R3
LDI *-AR3(MW_Y2),RC
LDI COL_DGREY,RS
CALL _line
LDI *-AR3(MW_X1),AR2
LDI *-AR3(MW_Y2),R2
LDI *-AR3(MW_X2),R3
LDI *-AR3(MW_Y2),RC
LDI COL_DGREY,RS
CALL _line
POP RC
POP R3
POP R2
POP AR2
POP AR3
RETS
*----------------------------------------------------------------------------
MAKE_IWINDOW:
PUSH AR3
PUSH AR2
PUSH R2
PUSH R3
PUSH RC
LDI SP,AR3
LDI COL_LGREY,RS
CALL _fill
LDI *-AR3(MW_X1),AR2
LDI *-AR3(MW_Y1),R2
LDI *-AR3(MW_X2),R3
LDI *-AR3(MW_Y1),RC
LDI COL_DGREY,RS
CALL _line
LDI *-AR3(MW_X1),AR2
LDI *-AR3(MW_Y1),R2
LDI *-AR3(MW_X1),R3
LDI *-AR3(MW_Y2),RC
LDI COL_DGREY,RS
CALL _line
LDI *-AR3(MW_X2),AR2
LDI *-AR3(MW_Y1),R2
LDI *-AR3(MW_X2),R3
LDI *-AR3(MW_Y2),RC
LDI COL_LGREY2,RS
CALL _line
LDI *-AR3(MW_X1),AR2
LDI *-AR3(MW_Y2),R2
LDI *-AR3(MW_X2),R3
LDI *-AR3(MW_Y2),RC
LDI COL_LGREY2,RS
CALL _line
POP RC
POP R3
POP R2
POP AR2
POP AR3
RETS
*----------------------------------------------------------------------------
romdata
inst1 .string "USE UP/DOWN TO SELECT FUNCTION",0
inst2 .string "ENTER TO ACTIVATE",0
title .string "CRUISIN USA DIAGNOSTICS",0
toexit .string "HIT ENTER TO EXIT",0
.text
DIAGPAL:
.word 16 ;LENGTH OF PALETTE
RGB 060h,060h,060h ;0 LIGHT GREY
RGB 0ffh,0ffh,0ffh ;1 WHITE
RGB 070h,070h,070h ;2 GREY
RGB 0ffh,000h,000h ;3 RED
RGB 000h,0ffh,000h ;4 GREEN
RGB 055h,055h,099h ;5 BLUE (for the sky paled out)
RGB 0ffh,0ffh,000h ;6 YELLOW
RGB 000h,0ffh,0ffh ;7 CYAN
RGB 000h,000h,000h ;8 BLACK
RGB 000h,000h,077h ;9 TRUE BLUE
RGB 0C0h,0A0h,000h ;A Amber color
RGB 050h,050h,050h ;B DARK GREY
RGB 060h,060h,060h ; LIGHT GREY
RGB 090h,090h,090h ; LIGHT GREY2
RGB 0C0h,0C0h,0C0h ; LIGHT GREY3
RGB 020h,020h,020h ; LIGHT GREY3
.text
*----------------------------------------------------------------------------
HARD_LOAD_DIAGPAL:
LDL DIAGPAL,AR2
LDIL COLORAM,AR1
LDI *AR2++,AR0
DEC AR0
LODLP
LDI *AR2++,R0
STI R0,*AR1++
DBU AR0,LODLP
RETS ;F -cycling color
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
.globl HIDDEN_DIAG
.bss SOFT_AUDIT,1
HIDDEN_DIAG:
CALL ENTER_DIAG_INIT
LDI @DIAGPAL+1,R0
STI R0,@BGNDCOLA
LDI MDIAG,R0 ;set mode appropriate
STI R0,@_MODE
CALL CLRSCRN ;we are NOT page flipping
CALL SETPAGE0
LDIL SCREEN0,R0 ;set active screen to 1 (writeable)
STI R0,@ACTIVE_SCREEN
LDI 1,R0
STI R0,@SOFT_AUDIT
CALL AUDIT_DISPLAY
BR DIAG_RETURN
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
*
*
ENTER_DIAG_INIT:
POP R0
LDP @FASTSTKI
LDI @FASTSTKI,SP ;LOAD THE ADDRESS INTO SP
PUSH R0
FIFO_CLRP R0 ;is the fifo clear
DMA_WT R0
CALL FIFO_RESET
CALL SILENT
LDI 1,R2
SETAUD ADJ_OUTOFDIAG
LDI MDIAG,R0 ;MELLOW THE WHEEL
STI R0,@_MODE
LDI INT0_M|INT3_M,IE ;ENABLE INTERRUPTS
AND 0,IF
CALL ENABLEGIE ;MUST DO AT START FOR I/O READING
CALL INIT_SYSTEM
CALL PAL_INIT
LDL DIAGPAL,AR2
CALL PAL_ALLOC_RAW
CLRI AR2
CALL SENDSND
CLRI R4
STI R4,@SOFT_AUDIT
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
ENTER_DIAG:
CALL ENTER_DIAG_INIT
ENTER_DIAG2
CLRI R0
STI R0,@BUTTON_STATUS
LDI MDIAG,R0 ;set mode appropriate
STI R0,@_MODE
LDL MAIN_MENU,AR5
LDI MAIN_MENU_LEN,AR6
LDI @MMT,AR7
BU HANDLE_MENU
RETURN_TO_MAINMENU:
LDI MDIAG,R0 ;set mode appropriate
STI R0,@_MODE
LDL MAIN_MENU,AR5
LDI MAIN_MENU_LEN,AR6
LDI @MMT,AR7
BU HMER
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
TOEXIT:
LDI DEFAULT_COLOR,RC
TEXTIT toexit,180,371
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
;*ARE DIAGs STILL ACTIVE?
;*T-> RETURN
;*F-> RESET
;*
;DIAG_ACTIVEP:
; LDI @_newbut,R0 ;old system method
; RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
*
FILSIZI .word 3FFFFH
REDV .word 30003h ;these values point into fixed palette
GREENV .word 40004h
BLUEV .word 90009h
BLACKV .word 80008h
MONITOR_DIAGNOSTICS:
CALL COLORBARS
CALL KEYPAUSE
CALL PAL_INIT
LDL DIAGPAL,AR2
CALL PAL_ALLOC_RAW
LDIL SCREEN0,AR2
LDI @FILSIZI,R3
LDI @REDV,R2
CALL SCREEN_FILL
CALL KEYPAUSE
; CALL DIAG_ACTIVEP
LDIL SCREEN0,AR2
LDI @FILSIZI,R3
LDI @GREENV,R2
CALL SCREEN_FILL
CALL KEYPAUSE
; CALL DIAG_ACTIVEP
LDIL SCREEN0,AR2
LDI @FILSIZI,R3
LDI @BLUEV,R2
CALL SCREEN_FILL
CALL KEYPAUSE
; CALL DIAG_ACTIVEP
LDIL SCREEN0,AR2
LDI @FILSIZI,R3
LDI @BLACKV,R2
CALL SCREEN_FILL
;12 across
;HLINES
;20 down
LDI 20,AR7
LDI 0,AR6
LINLOP
CMPI 20,AR6
LDIEQ 19,AR6
CLRI AR2
LDI 511,R3
LDI AR6,R2
LDI AR6,RC
LDI 1,RS
CALL _line
ADDI 20,AR6
DBU AR7,LINLOP
;VLINES
LDI 32,AR7
LDI 0,AR6
VLINLOP
CMPI 16,AR6
LDIEQ 15,AR6
CLRI R2
LDI 399,RC
LDI AR6,AR2
LDI AR6,R3
LDI 1,RS
CALL _line
ADDI 16,AR6
DBU AR7,VLINLOP
CALL KEYPAUSE
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
COLORBARS:
CALL CLRSCRN0
CLRI R0
STI R0,@BGNDCOLA
LDI 09Eh,AR0
LS 16,AR0
LDI 15,RC
RPTB GREYLP
LDI R0,R1
LDI R0,R2
LS 5,R1
LS 10,R2
LDI R0,R3
OR R1,R3
OR R2,R3
STI R3,*AR0++
GREYLP ADDI 2,R0
CLRI R0
LDI 15,RC
RPTB REDLP
LDI R0,R1
LS 10,R1
STI R1,*AR0++
REDLP ADDI 2,R0
CLRI R0
LDI 15,RC
RPTB GREENLP
LDI R0,R1
LSH 5,R1
STI R1,*AR0++
GREENLP ADDI 2,R0
CLRI R0
LDI 15,RC
RPTB BLUELP
STI R0,*AR0++
BLUELP ADDI 2,R0
CLRI R3 ;color
LDI 50,R2 ;starting Y coordinate
LDI 3,AR4
WHOLELP
LDI R3,R4
LDI 50,AR5 ;lines per mess
GROUPLP LDI R4,R3
LDI 128,AR2 ;starting X pixel
LDI 15,AR7 ;blocks per lines
LINELP LDI 15,AR6 ;pixels per block
BLOCKLP CALL _pixel
INC AR2 ;next pixel
DBU AR6,BLOCKLP
INC R3
DBU AR7,LINELP
INC R2
DBU AR5,GROUPLP
ADDI 20,R2
DBU AR4,WHOLELP
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
*SHOW SWITCHES (AND POTS)
*
.bss buffer,20
bufferI .word buffer
.bss _opot0,1
.bss _opot1,1
.bss _opot2,1
SHOWSWITCH:
CALL SETUP_DIAG_SCREEN
LDI -1,R0
STI R0,@_opot0
STI R0,@_opot1
STI R0,@_opot2
STI R0,@_onebut
STI R0,@LASTDIPPLOT
STI R0,@LASTSHIFT
IWINDOW 125,170,145,355
IWINDOW 135,95,220,135
IWINDOW 245,95,420,135
GROUP 10,60,465,150 ;pots etc
GROUP 10,160,170,360 ;switches
GROUP 190,160,360,250 ;shifter
LDI COL_VDGREY,RC
TEXTITT "SWITCH TEST",205,26
TEXTITT "STEERING WHEEL",20,100
TEXTITT "GAS PEDAL",20,110
TEXTITT "BRAKE PEDAL",20,120
TEXTITT "VIEW 1",20,180
TEXTITT "VIEW 2",20,200
TEXTITT "VIEW 3",20,220
TEXTITT "START",20,240
TEXTITT "COIN 1",20,260
TEXTITT "COIN 2",20,280
TEXTITT "COIN 3",20,300
TEXTITT "COIN 4",20,320
TEXTITT "RADIO",20,340
TEXTITT "HIT ENTER TO EXIT",40,40
TEXTITT "ENTER",215,280
TEXTITT "VOLUME UP",215,300
TEXTITT "VOLUME DOWN",215,320
TEXTITT "SERVICE",215,340
TEXTITT "CREDIT",225,350
IWINDOW 325,270,355,360
SSLP
; CALL DIAG_ACTIVEP
CALL DISPPOTS
CALL DISPLAY_SWITCH_STATUS
LDI COL_VDGREY,RC
TEXTITT "CMOS VALUES",250,70
TEXTITT "MIN CENTER MAX",250,80
TEXTITT "POT READING",134,80
READADJ ADJ_GASMIN
LDI R0,R2
LDI @bufferI,AR2
CALL _itoa
LDI 250,R2
LDI 110,R3
LDI DEFAULT_COLOR,RC
CALL _outtextxyc
READADJ ADJ_GASMAX
LDI R0,R2
LDI @bufferI,AR2
CALL _itoa
LDI 350,R2
LDI 110,R3
LDI DEFAULT_COLOR,RC
CALL _outtextxyc
READADJ ADJ_STEERMIN
LDI R0,R2
LDI @bufferI,AR2
CALL _itoa
LDI 250,R2
LDI 100,R3
LDI DEFAULT_COLOR,RC
CALL _outtextxyc
READADJ ADJ_STEERCENTER
LDI R0,R2
LDI @bufferI,AR2
CALL _itoa
LDI 300,R2
LDI 100,R3
LDI DEFAULT_COLOR,RC
CALL _outtextxyc
READADJ ADJ_STEERMAX
LDI R0,R2
LDI @bufferI,AR2
CALL _itoa
LDI 350,R2
LDI 100,R3
LDI DEFAULT_COLOR,RC
CALL _outtextxyc
READADJ ADJ_BRAKEMIN
LDI R0,R2
LDI @bufferI,AR2
CALL _itoa
LDI 250,R2
LDI 120,R3
LDI DEFAULT_COLOR,RC
CALL _outtextxyc
READADJ ADJ_BRAKEMAX
LDI R0,R2
LDI @bufferI,AR2
CALL _itoa
LDI 350,R2
LDI 120,R3
LDI DEFAULT_COLOR,RC
CALL _outtextxyc
LDI 7FFFh,R0 ;waste a little time
MPYI 10,R0
RPTS R0
NOP
NOT @_newbut,R0
AND SW_DIAG,R0
BNZ NOWTOEXIT
; RETSNZ
CALL WAIT_FOR_VBLANK ;wait for vblk
B SSLP
NOWTOEXIT
LDI 330,AR2
LDI AR2,R3
ADDI 10,R3
LDI 275,R2
SUBI 2,R2
LDI R2,RC
ADDI 12,RC
LDI COL_RED,RS
CALL _fill
LDI 10,AR5
BBD5 CALL WAIT_FOR_VBLANK ;wait for vblk
DBU AR5,BBD5
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
*BOTTOM EIGHT BITS ONLY
*
*
*PARAMETER
* AR2 STRING
* R2 VALUE
*
*
ASCII_TO_BINARY:
LDI 0,RS
LDI 0,R0 ;output
LDI 80h,R1 ;mask
LDI 7,AR3
ATBLP
TSTB R1,R2
LDIZ '0',R3
LDINZ '1',R3
LSH RS,R3
OR R3,R0
RS 1,R1
ADDI 8,RS
CMPI 32,RS
BLT JJ
LDI 0,RS
STI R0,*AR2++
CLRI R0
JJ
DBU AR3,ATBLP
CLRI R0
STI R0,*AR2++
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
.bss _onebut,1
DISPLAY_SWITCH_STATUS:
CALL DISPLAY_SHIFTER
LDI @_newbut,R0
LDI @_onebut,R1
CMPI R1,R0
RETSEQ
STI R0,@_onebut
FILL 130,175,140,350,0 ;MAIN
FILL 327,272,353,358,0 ;TEST SWITCHES
LDI @SWITCHES_DIAGI,AR6
DSS
LDI @_newbut,R0
LDI *AR6++(3),R1
CMPI -1,R1
BZ DONEDSS
AND R1,R0
BNZ DSS
LDI *-AR6(1),AR2
LDI AR2,R3
ADDI 10,R3
LDI *-AR6(2),R2
SUBI 2,R2
LDI R2,RC
ADDI 12,RC
LDI COL_RED,RS
CALL _fill
NOPLOT
B DSS
DONEDSS
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
SWITCHES_DIAGI .word SWITCHES_DIAG
romdata
SWITCHES_DIAG .word SW_VIEW0,180,130
.word SW_VIEW1,200,130
.word SW_VIEW2,220,130
.word SW_START,240,130
.word SW_COIN1,260,130
.word SW_COIN2,280,130
.word SW_COIN3,300,130
.word SW_COIN4,320,130
.word SW_RADIO,340,130
.word SW_DIAG,275,330
.word SW_VOLPLUS,295,330
.word SW_VOLMINUS,315,330
.word SW_COINSRV,335,330
.word -1
.text
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
.bss LASTSHIFT,1
DISPLAY_SHIFTER:
NOT @_newbut,R0
AND 3C00h,R0
CMPI @LASTSHIFT,R0
RETSEQ
STI R0,@LASTSHIFT
LDI COL_VDGREY,RC
TEXTITT "SHIFT 1",215,170
TEXTITT "SHIFT 2",215,240
TEXTITT "SHIFT 3",290,170
TEXTITT "SHIFT 4",290,240
PUSH R0
PUSH AR2
FILL 230,180,325,230,0
POP AR2
POP R0
; 400h = 4
; 800h = 3
;1000h = 2
;2000h = 1
LDI @_newbut,R0
TSTB 2000h,R0
BNZ NOT1ST
FILL 230,180,250,200,COL_RED
NOT1ST
LDI @_newbut,R0
TSTB 1000h,R0
BNZ NOT2ND
FILL 230,210,250,230,COL_RED
NOT2ND
LDI @_newbut,R0
TSTB 800h,R0
BNZ NOT3RD
FILL 305,180,325,200,COL_RED
NOT3RD
LDI @_newbut,R0
TSTB 400h,R0
BNZ NOT4TH
FILL 305,210,325,230,COL_RED
NOT4TH
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
DISPPOTS:
LDI @_pot0,R2
CMPI @_opot0,R2
BEQ NOPLOTpot0
STI R2,@_opot0
FILL 150,100,215,109,0
LDI @_pot0,R2
LDI @bufferI,AR2
CALL _itoa
LDI 150,R2
LDI 100,R3
LDI COL_VDGREY,RC
CALL _outtextxyc
NOPLOTpot0
LDI @_pot1,R2
CMPI @_opot1,R2
BEQ NOPLOTpot1
STI R2,@_opot1
FILL 150,110,215,119,0
LDI @_pot1,R2
LDI @bufferI,AR2
CALL _itoa
LDI 150,R2
LDI 110,R3
LDI COL_VDGREY,RC
CALL _outtextxyc
NOPLOTpot1
LDI @_pot2,R2
CMPI @_opot2,R2
BEQ NOPLOTpot2
STI R2,@_opot2
FILL 150,120,215,129,0
LDPI @_pot2,R2
LDPI @bufferI,AR2
CALL _itoa
LDI 150,R2
LDI 120,R3
LDI COL_VDGREY,RC
CALL _outtextxyc
NOPLOTpot2
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
*
*
romdata
SW1T .string "DIP SW2",0
SW2T .string "DIP SW3",0
.text
.bss SW1BANK,3
.bss SW2BANK,3
.bss LASTDIPPLOT,1
SHOW_DIPSWITCH:
CALL SETUP_DIAG_SCREEN
LDI COL_VDGREY,RC
TEXTITT "DIP SWITCH TEST",20,15
LDI -1,R0
STI R0,@LASTDIPPLOT
CALL TOEXIT
DIPLP
CALL DISPLAY_DIPSWITCH_STATUS
NOT @_newbut,R0
AND SW_DIAG,R0
RETSNZ
CALL WAIT_FOR_VBLANK ;wait for vblk
B DIPLP
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
*
*PARAMETERS
* R5 X
* R6 Y
* R7 THE DIP
*
*vertical plotting of the dipswitches as 'on'|'off'
*
*
.bss DIPTMP,2
.data
ISON .word ONTEXT
ISOFF .word OFFTEXT
romdata
ONTEXT .string "ON",0
OFFTEXT .string "OFF",0
.text
*
SHOW_DIPSWITCH_STATUS:
LDI 7,AR5
LDI 1,R4 ;Index Number
SDS_LP
TSTB 80h,R7
LDIZ @ISON,AR2
LDINZ @ISOFF,AR2
PUSH R7
LDI R5,R2
ADDI 20,R2
LDI R6,R3
LDI COL_VDGREY,RC
CALL _outtextxyc
LDI R4,R2
LDL DIPTMP,AR2
CALL _itoa
LDI R5,R2
LDI R6,R3
LDI COL_VDGREY,RC
CALL _outtextxyc
POP R7
LS 1,R7
INC R4
ADDI 10,R6
DBU AR5,SDS_LP
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
*
*
*
*
DISPLAY_DIPSWITCH_STATUS:
LDI @DIPRAM,R0
CMPI @LASTDIPPLOT,R0
RETSEQ
STI R0,@LASTDIPPLOT
;BANK 1
LDI COL_VDGREY,RC
TEXTITT "DIP SW2 U97",30,40
GROUP 20,50,400,170
FILL 22,52,398,168,0
LDI 30,R5
LDI 60,R6
CLRI AR2
LDP @DIPSW
LDI @DIPSW,R7
LDI *AR2,AR2
SETDP
RS 16,R7
CALL SHOW_DIPSWITCH_STATUS
;BANK ONE (SW2) DECODED...
; .data
;TONI .word TON
;TOFFI .word TOFF
;TON .string "TEST ON",0
;TOFF .string "TEST OFF",0
; .text
;
; LDI 90,R2 ;DIAGNOSTICS
; LDI 60+(0*10),R3
; LDI @DIPRAM,R0
; TSTB DIP_DIAG,R0
; LDINZ @TOFFI,AR2
; LDIZ @TONI,AR2
; CALL _outtextxyc
LDI 90,R2 ;MOTION
LDI 60+(1*10),R3
LDI @DIPRAM,R0
TSTB DIP_MOTION,R0
LDINZ @DNMOTI,AR2
LDIZ @DMOTI,AR2
CALL _outtextxyc
.data
DNSUPI .word DNSUP
DSUPI .word DSUP
DNSUP .string "UPRIGHT",0
DSUP .string "SITDOWN",0
.text
LDI 90,R2
LDI 60+(2*10),R3
LDI @DIPRAM,R0
TSTB DIP_STANDUP,R0
LDINZ @DNSUPI,AR2
LDIZ @DSUPI,AR2
CALL _outtextxyc
; .data
;RF1I .word RF1
;RF2I .word RF2
;RF1 .string "FREEZE ON",0
;RF2 .string "FREEZE OFF",0
; .text
;
; LDI 90,R2
; LDI 60+(3*10),R3
; LDI @DIPRAM,R0
; TSTB DIP_FREEZE,R0
; LDIZ @RF1I,AR2
; LDINZ @RF2I,AR2
; CALL _outtextxyc
LDI 90,R2 ;COMMUNICATION
LDI 60+(5*10),R3
LDI @DIPRAM,R0
TSTB DIP_COMMP,R0
LDINZ @DNLINKDI,AR2
LDIZ @DLINKDI,AR2
CALL _outtextxyc
LDI 90,R2 ;COMMUNICATION
LDI 60+(7*10),R3
LDI @DIPRAM,R0
TSTB CMDP_MASTER,R0
LDIZ @DMOD1,AR2
LDINZ @DMOD2,AR2
CALL _outtextxyc
;BANK 2
LDI COL_VDGREY,RC
TEXTITT "DIP SW3",30,180
GROUP 20,190,400,310
FILL 22,192,398,308,0
LDI 30,R5
LDI 200,R6
CLRI AR2
LDP @DIPSW
LDI @DIPSW,R7
LDI *AR2,AR2
SETDP
RS 24,R7
CALL SHOW_DIPSWITCH_STATUS
;BANK TWO (SW3) DECODED...
LINE 85,200,85,200+(6*10)+9,COL_VDGREY
.ref GETCOIN_DEFAULT,GET_THIS_COINTXT
CALL GETCOIN_DEFAULT
PUSH R2
LDI R2,AR0
CALL GET_THIS_COINTXT
LDI AR0,AR4
LDI *AR4++,AR2
LDI 90,R2
LDI 200+(3*10),R3
LDI COL_VDGREY,RC
CALL _outtextxyc
LDI *AR4++,AR2
CMPI 0,AR2
BEQ DONE_MODE_MSG
LDI 90,R2
LDI 200+(4*10),R3
LDI COL_VDGREY,RC
CALL _outtextxyc
LDI *AR4++,AR2
CMPI 0,AR2
BEQ DONE_MODE_MSG
LDI 90,R2
LDI 200+(5*10),R3
LDI COL_VDGREY,RC
CALL _outtextxyc
DONE_MODE_MSG
POP AR2
.ref COINMSGC_TABI
ADDI @COINMSGC_TABI,AR2
LDI *AR2,AR2
LDI 90,R2
LDI 200+(2*10),R3
LDI COL_VDGREY,RC
CALL _outtextxyc
; PUSH AR2
; LDI R2,AR0
; CALL GET_THIS_COINTXT
; LDI AR0,AR2
; LDI 90,R2
; LDI 200+(3*10),R3
; LDI COL_VDGREY,RC
; CALL _outtextxyc
;
; POP AR2
; LDI *+AR2,AR2
; LDI 90,R2
; LDI 200+(2*10),R3
; LDI COL_VDGREY,RC
; CALL _outtextxyc
.data
COINCNTR1I .word COINCNTR1
COINCNTR2I .word COINCNTR2
COINCNTR1 .string "ONE COIN COUNTER",0
COINCNTR2 .string "TWO COIN COUNTERS",0
.text
LDI 90,R2 ;COMMUNICATION
LDI 200+(7*10),R3
LDI @DIPRAM,R0
TSTB DIP_COINCNTR,R0
LDINZ @COINCNTR1I,AR2
LDIZ @COINCNTR2I,AR2
CALL _outtextxyc
RETS
*----------------------------------------------------------------------------
romdata
DMOT .string "MOTION ON",0
DNMOT .string "MOTION OFF",0
DLINKD .string "LINK ON",0
DNLINKD .string "LINK OFF",0
.text
DMOD1 SPTR "MASTER"
DMOD2 SPTR "SLAVE"
DMOTI .word DMOT
DNMOTI .word DNMOT
DLINKDI .word DLINKD
DNLINKDI .word DNLINKD
*----------------------------------------------------------------------------
MENUENTRY .MACRO LABEL,ROUTINE
.sect "THEDATA"
l? .string ":LABEL:",0
.text
.word l?,:ROUTINE:
.ENDM
*----------------------------------------------------------------------------
MOMT SPTR "MOTION MENU"
RUN_MOTION_MENU:
LDL MOTION_MENU,AR5
LDI MOTION_MENU_LEN,AR6
LDI @MOMT,AR7
BU HANDLE_MENU
*----------------------------------------------------------------------------
AMT SPTR "ADJUSTMENT MENU"
RUN_ADJUSTMENT_MENU:
LDL ADJUSTMENT_MENU,AR5
LDI ADJUSTMENT_MENU_LEN,AR6
LDI @AMT,AR7
BU HANDLE_MENU
ADJTABI .word ADJTAB
.SECT "THEDATA"
ADJTAB
.word ADJ_COINMODE,PRINT_COINMODE
.word ADJ_STANDARD_PRICING,PRINT_CUSTOM_SELECTED
; .word 0,0
; .word 0,0
.word ADJ_FREE_PLAY,PRINT_ONOFF
.word ADJ_FREEGAME,PRINT_ONOFF
.word ADJ_TIME_TO_START,PRINT_TIME
.word ADJ_CHECKPOINT_BONUS,PRINT_NUMBER
.word ADJ_ATTRACT_MODE_SOUND,PRINT_ONOFF
.word ADJ_HIGH_SCORE_ENTRY,PRINT_ONOFF
.word ADJ_MIN_VOL_LEVEL,PRINT_VOL
.word ADJ_MPHORKPM,PRINT_MPH
.word ADJ_ROADKILL,PRINT_ONOFF
.word ADJ_CLINTON,PRINT_ONOFF
.word ADJ_GIRLS,PRINT_ONOFF
.word ADJ_HIGHSCORE_RESET,PRINT_NUMBER
.word ADJ_DIFFICULTY,PRINT_NUMBER
.word ADJ_MAX_CREDITS,PRINT_NUMBER
.word ADJ_STEERING_SENSITIVITY,PRINT_NUMBER
.word 0,0
.text
PRINT_ADJUSTMENT:
PUSH AR4
LDI @ADJTABI,AR4
CALL PRINT_VALUE
POP AR4
RETS
*----------------------------------------------------------------------------
UMT SPTR "UTILITIES MENU"
RUN_UTILITIES_MENU:
LDL UTILITIES_MENU,AR5
LDI UTILITIES_MENU_LEN,AR6
LDI @UMT,AR7
BU HANDLE_MENU
*----------------------------------------------------------------------------
MMT SPTR "MAIN MENU"
DMT SPTR "DIAGNOSTIC MENU"
RUN_DIAG_MENU:
LDL DIAGNOSTIC_MENU,AR5
LDI DIAGNOSTIC_MENU_LEN,AR6
LDI @DMT,AR7
*----------------------------------------------------------------------------
*
*PARAMETERS
* AR5 POINTER TO MENU TABLE
* AR6 LENGTH OF MENU
* AR7 SPTR MENU NAME
*
.bss MENU_SCROLL,1 ;INTEGER
HANDLE_MENU:
LDI 0,R0
STI R0,@MENU_SCROLL
CLRI R6 ;MENU INDEX
HMER
PUSH R6
LDI @DIAGPAL+1,R0
STI R0,@BGNDCOLA
PUSH AR7
CALL SETUP_DIAG_SCREEN
LDI COL_VDGREY,RC
TEXTIT title,30,20
TEXTIT inst1,20,260
TEXTIT inst2,20,270
LDI *-AR5,R2 ;Routine that prints the value
BEQ HMSTAND
LDI *-AR5(2),R2
BEQ HMSTAND
CALLU R2
BR HMNOTSTAND
HMSTAND
IWINDOW 20,45,280,250
HMNOTSTAND
LDI 30,R2
LDI 35,R3
LDI COL_VDGREY,RC
POP AR7
LDI AR7,AR2
CALL _outtextxyc
LDI 10000,R7 ;wait_mac counter
MPYI 55,R7
POP R6
HANMENL
LDI @MENU_SCROLL,R0
; CLRI R0
; LDI AR5,AR4
LDI 2,AR4 ;OFFSET AR4 to MENU_SCROLL
MPYI R0,AR4
ADDI AR5,AR4
LDI 50,R3 ;Y POSITION OF TEXT
PUSH AR7
LDI AR6,AR7
SUBI @MENU_SCROLL,AR7
CMPI 20,AR7
LDIGT 20,AR7
DEC AR7
HANMENL_PLOT
LDI COL_VDGREY,RC
CMPI R0,R6
LDIEQ COL_RED,RC
LDI *AR4++(2),AR2
LDI 30,R2
CALL _outtextxyc
LDI *-AR5,R5 ;Routine that prints the value
CALLNE R5
ADDI 10,R3
INC R0
DBU AR7,HANMENL_PLOT
POP AR7
LDI @_newbut,R0 ;old system method
LDI R0,R1
TSTB SW_COINSRV,R1
BNZ JAJA5
;this locks on the main menu.
;fix later
LDL MAIN_MENU,AR0
CMPI AR0,AR5
BEQ JAJA5
LDI 982,AR2
CALL SENDSND
PUSH AR5
PUSH AR6
PUSH AR7
PUSH R6
CALL XIT_MENU_TO_MAIN
;
; CALLZ ESCAPE_TO_MAIN
JAJA5
TSTB SW_DIAG,R1
BZ HM_EXECUTE
TSTB SW_VOLMINUS,R0 ;move up
BNZ HM_NOTUP
LDI 980,AR2
CALL SENDSND
ADDI 1,R6
CMPI AR6,R6
BLT HM_WT
LDI AR6,R6
DEC R6
B HM_WT
HM_NOTUP
TSTB SW_VOLPLUS,R0 ;move down
BNZ HM_NOTDOWN
LDI 981,AR2
CALL SENDSND
SUBI 1,R6
LDILT 0,R6
HM_WT
; WAIT_MAC
LDI R7,R1
wta
DEC R1
BLT wtta
LDI @_newbut,R0
AND SW_VOLPLUS|SW_VOLMINUS,R0
CMPI SW_VOLPLUS|SW_VOLMINUS,R0
BNE wta
LDI 10000,R7
MPYI 55,R7
BU J55
wtta
LDI 5000,R7
MPYI 55,R7
J55
HM_NOTDOWN
CMPI 0,R6
BEQ NO_SCROLL
LDI 0,R2
LDI @MENU_SCROLL,R0
LDI R0,R1
ADDI 20,R1
CMPI R0,R6
BLT GO_SCROLL
CMPI R1,AR6
BLE NO_SCROLL
GO_SCROLL
CMPI R0,R6
LDILT -10,R2
CMPI R1,R6
LDIGE 10,R2
ADDI R2,R0
LDIN 0,R0
STI R0,@MENU_SCROLL
CMPI 0,R2
BNE HMER ;REDRAW entir screen if scrolled
NO_SCROLL
B HANMENL
HM_EXECUTE
LDI 982,AR2
CALL SENDSND
LDI R6,AR0
MPYI 2,AR0
ADDI AR5,AR0
LDI *+AR0(1),R0
BZ HANMENL
PUSH AR5
PUSH AR6
PUSH AR7
PUSH R6
CALLU R0
POP R6
POP AR7
POP AR6
POP AR5
B HMER
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
;ESCAPE_TO_MAIN:
; LDI 982,AR2
; CALL SENDSND
; POP R0
; RETS
XIT_MENU_TO_MAIN:
LDI 0,R0
STI R0,@MENU_SCROLL
CALL LAMPSOFF
POP R0 ;return address
POP R6
POP AR7
POP AR6
POP AR5
RETS
; BR RETURN_TO_MAINMENU
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
SETUP_DIAG_SCREEN:
CALL CLRSCRN
CALL SETPAGE0
LDIL SCREEN0,R0
STI R0,@ACTIVE_SCREEN
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
SNDMAC .MACRO TTXT,SNDIDX
.data
l? .string ":TTXT:",0
.text
.word l?,:SNDIDX:
.ENDM
MUSIC_TAB
SNDMAC "REDLINE SHUFFLE",SHUFFLE_DRIV
SNDMAC "HOUSE SPECIAL",DISCODUCK
SNDMAC "DEADWOOD RIDE",SPAGETTI
.word -1
EFFECTS_TAB
SNDMAC "GIRL SPEECH",CHOOSEUCAR
SNDMAC "TRUCK HORN",TRUCKHORN_BLAST
SNDMAC "EXPLOSION 1",EXP1
SNDMAC "COLLISION",SCOLLF
SNDMAC "CAR PASS",CARPASS
.word -1
SOUND_BOARD_TEST:
CALL SETUP_DIAG_SCREEN
CLRI R5 ;TUNE INDEX
CLRI R6 ;SNDFX INDEX
LDI COL_VDGREY,RC
TEXTITT "SOUND BOARD TEST",50,20
TEXTITT "ENTER TO EXIT",20,100
TEXTITT "UP TO CHANGE MUSIC",20,110
TEXTITT "DOWN TO TRIGGER SOUND EFFECT",20,120
LDL MUSIC_TAB,AR5
LDL EFFECTS_TAB,AR6
LDI -1,R5
LDI -1,R6
SBT_UPDT
CMPI AR5,R5
BEQ NUPDT
LDI AR5,R5
FILL 20,200,200,220,0
LDI COL_VDGREY,RC
TEXTITT "TUNE",20,200
LDI *AR5,AR2
LDI 30,R2
LDI 210,R3
CALL _outtextxyc
LDI *+AR5,AR2
.globl HARDSND
CALL HARDSND
NUPDT
CMPI AR6,R6
BEQ NUPDE
LDI AR6,R6
FILL 20,250,200,270,0
LDI COL_VDGREY,RC
TEXTITT "SOUND EFFECT",20,250
LDI *AR6,AR2
LDI 30,R2
LDI 260,R3
CALL _outtextxyc
LDI *+AR6,AR2
.globl HARDSND
CALL HARDSND
NUPDE
SBT_LP
NOT @_newbut,R0
AND SW_DIAG,R0
BZ NOXIT
CALL SILENT
RETS
NOXIT
NOT @_newbut,R0
AND SW_VOLPLUS,R0
BZ NONEXTT
SBTLP2 CALL WAIT_FOR_VBLANK
NOT @_newbut,R0
AND SW_VOLPLUS,R0
BNZ SBTLP2
ADDI 2,AR5
LDI *AR5,R0
BNN SBT_UPDT
LDL MUSIC_TAB,AR5
BU SBT_UPDT
NONEXTT
NOT @_newbut,R0
AND SW_VOLMINUS,R0
BZ NONEXTE
SBTLP1 CALL WAIT_FOR_VBLANK
NOT @_newbut,R0
AND SW_VOLMINUS,R0
BNZ SBTLP1
ADDI 2,AR6
LDI *AR6,R0
BNN SBT_UPDT
LDL EFFECTS_TAB,AR6
BU SBT_UPDT
NONEXTE
LDI 7FFFh,R0
MPYI 10,R0
RPTS R0
NOP
CALL WAIT_FOR_VBLANK
BU SBT_LP
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
STEERING_WHEEL_TEST:
CALL SETUP_DIAG_SCREEN
LDI COL_VDGREY,RC
TEXTITT "STEERING WHEEL TEST",20,50
TEXTITT "MOVING WHEEL TO LEFT",20,100
CLRI R6
* R0 BYTE TO SEND TO WHEEL
LDI 127,AR5
SWTLP1
INC R6
CMPI 127,R6
LDIGT 127,R6
LDI R6,R0
OR 080h,R0
CALL TOWHEEL
CALL WAIT_FOR_VBLANK
DBU AR5,SWTLP1
LDI COL_VDGREY,RC
TEXTITT "HIT ENTER TO CONTINUE",20,120
CALL WT_NSTART
CALL WT_START
CALL BEEP
LDI COL_VDGREY,RC
TEXTITT "MOVING WHEEL TO RIGHT",20,140
CLRI R6
LDI 127,AR5
SWTLP3
INC R6
CMPI 127,R6
LDIGT 127,R6
LDI R6,R0
CALL TOWHEEL
CALL WAIT_FOR_VBLANK
DBU AR5,SWTLP3
LDI COL_VDGREY,RC
TEXTITT "HIT ENTER TO CONTINUE",20,160
CALL WT_NSTART
CALL WT_START
CALL BEEP
CLRI R0
CALL TOWHEEL
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
AMODES SPTR "ATTRACT MODE SOUNDS"
AMODESND:
READAUD ADJ_ATTRACT_MODE_SOUND
LDI R0,R5
LDI @AMODES,AR2
LDI @NULLSTR,AR3
CALL DUAL_ON_OFF
LDI R5,R2
SETADJ ADJ_ATTRACT_MODE_SOUND
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
BURNIN_TEST:
CALL TEST_CHIPS
SOFTWTM R0 ;SET WAIT STATES
DINT
LDP @FASTSTKI
LDI @FASTSTKI,SP ;LOAD THE ADDRESS INTO SP
LDI AUD_SUCCESSFULL_BURNINS,AR2
CALL AUDIT_INC
;IGNORE GLITCH FIX
LDP @SWITCH1
LDI @SWITCH1,R0
SETDP
TSTB SW_DIAG,R0
BNZ BURNIN_TEST
BU ENTER_DIAG
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
.ref COUNTRY_TABI
; .ref COINMSG_TABI ;????
.ref MSGC_USA1,MSGC_USA2,MSGC_USA3,MSGC_USA4,MSGC_USA5
.ref MSGC_USA6,MSGC_USA7,MSGC_USA8,MSGC_USA9,MSGC_USA10,MSGC_USA11,MSGC_USA12
.ref MSGC_GERMAN1,MSGC_GERMAN2,MSGC_GERMAN3,MSGC_GERMAN4,MSGC_GERMAN5
.ref MSGC_GERMAN6,MSGC_GERMAN7,MSGC_GERMAN8
.ref MSGC_FRENCH1,MSGC_FRENCH2,MSGC_FRENCH3,MSGC_FRENCH4,MSGC_FRENCH5,MSGC_FRENCH6
.ref MSGC_FRENCH7,MSGC_FRENCH8,MSGC_FRENCH9,MSGC_FRENCH10,MSGC_FRENCH11
.ref MSGC_CANADA1,MSGC_CANADA2,MSGC_CANADA3
.ref MSGC_SWISS1,MSGC_SWISS2,MSGC_SWISS3
.ref MSGC_ITALY1,MSGC_ITALY2,MSGC_ITALY3
.ref MSGC_UK1,MSGC_UK2,MSGC_UK3
.ref MSGC_SPAIN1,MSGC_SPAIN2,MSGC_SPAIN3,MSGC_SPAIN4,MSGC_SPAIN5,MSGC_SPAIN6
.ref MSGC_AUSTRALIA1,MSGC_AUSTRALIA2,MSGC_AUSTRALIA3,MSGC_AUSTRALIA4
.ref MSGC_JAPAN1,MSGC_JAPAN2,MSGC_JAPAN3
.ref MSGC_TAIWAN1,MSGC_TAIWAN2,MSGC_TAIWAN3
.ref MSGC_AUSTRIA1,MSGC_AUSTRIA2,MSGC_AUSTRIA3,MSGC_AUSTRIA4
.ref MSGC_BELGIUM1,MSGC_BELGIUM2,MSGC_BELGIUM3
.ref MSGC_SWEDEN1,MSGC_FINLAND1,MSGC_NETHERLAND1,MSGC_NETHERLAND2,MSGC_NORWAY1,MSGC_DENMARK1
.ref MSGC_HUNGARY1
.ref MSGC_GENERAL1,MSGC_GENERAL2,MSGC_GENERAL3,MSGC_GENERAL4,MSGC_GENERAL5
.ref MSGC_GENERAL6,MSGC_GENERAL7,MSGC_GENERAL8
STANDARD_PRICING_MENU_LEN .set 16
.word 0
STANDARD_PRICING_MENU
MENUENTRY "USA",RUN_COUNTRY
MENUENTRY "GERMAN",RUN_COUNTRY
MENUENTRY "FRENCH",RUN_COUNTRY
MENUENTRY "CANADA",RUN_COUNTRY
MENUENTRY "SWISS",RUN_COUNTRY
MENUENTRY "ITALY",RUN_COUNTRY
MENUENTRY "UK",RUN_COUNTRY
MENUENTRY "SPAIN",RUN_COUNTRY
MENUENTRY "AUSTRALIA",RUN_COUNTRY
MENUENTRY "JAPAN",RUN_COUNTRY
MENUENTRY "TAIWAN",RUN_COUNTRY
MENUENTRY "AUSTRIA",RUN_COUNTRY
MENUENTRY "BELGIUM",RUN_COUNTRY
MENUENTRY "OTHER",RUN_COUNTRY
MENUENTRY "GENERAL",RUN_COUNTRY
MENUENTRY "EXIT TO MAIN",XIT_MENU_TO_MAIN
romdata
USA_MENU_LEN .set 13
.word MAKE_STANDARW
.word PRINT_STANDARD
USA_MENU
.word MSGC_USA1,PRICE_YES_NO
.word MSGC_USA2,PRICE_YES_NO
.word MSGC_USA3,PRICE_YES_NO
.word MSGC_USA4,PRICE_YES_NO
.word MSGC_USA5,PRICE_YES_NO
.word MSGC_USA6,PRICE_YES_NO
.word MSGC_USA7,PRICE_YES_NO
.word MSGC_USA8,PRICE_YES_NO
.word MSGC_USA9,PRICE_YES_NO
.word MSGC_USA10,PRICE_YES_NO
.word MSGC_USA11,PRICE_YES_NO
.word MSGC_USA12,PRICE_YES_NO
.word ETMAIN,XIT_MENU_TO_MAIN
GERMAN_MENU_LEN .set 9
.word MAKE_STANDARW
.word PRINT_STANDARD
GERMAN_MENU
.word MSGC_GERMAN1,PRICE_YES_NO
.word MSGC_GERMAN2,PRICE_YES_NO
.word MSGC_GERMAN3,PRICE_YES_NO
.word MSGC_GERMAN4,PRICE_YES_NO
.word MSGC_GERMAN5,PRICE_YES_NO
.word MSGC_GERMAN6,PRICE_YES_NO
.word MSGC_GERMAN7,PRICE_YES_NO
.word MSGC_GERMAN8,PRICE_YES_NO
.word ETMAIN,XIT_MENU_TO_MAIN
FRENCH_MENU_LEN .set 12
.word MAKE_STANDARW
.word PRINT_STANDARD
FRENCH_MENU
.word MSGC_FRENCH1,PRICE_YES_NO
.word MSGC_FRENCH2,PRICE_YES_NO
.word MSGC_FRENCH3,PRICE_YES_NO
.word MSGC_FRENCH4,PRICE_YES_NO
.word MSGC_FRENCH5,PRICE_YES_NO
.word MSGC_FRENCH6,PRICE_YES_NO
.word MSGC_FRENCH7,PRICE_YES_NO
.word MSGC_FRENCH8,PRICE_YES_NO
.word MSGC_FRENCH9,PRICE_YES_NO
.word MSGC_FRENCH10,PRICE_YES_NO
.word MSGC_FRENCH11,PRICE_YES_NO
.word ETMAIN,XIT_MENU_TO_MAIN
CANADA_MENU_LEN .set 4
.word MAKE_STANDARW
.word PRINT_STANDARD
CANADA_MENU
.word MSGC_CANADA1,PRICE_YES_NO
.word MSGC_CANADA2,PRICE_YES_NO
.word MSGC_CANADA3,PRICE_YES_NO
.word ETMAIN,XIT_MENU_TO_MAIN
SWISS_MENU_LEN .set 4
.word MAKE_STANDARW
.word PRINT_STANDARD
SWISS_MENU
.word MSGC_SWISS1,PRICE_YES_NO
.word MSGC_SWISS2,PRICE_YES_NO
.word MSGC_SWISS3,PRICE_YES_NO
.word ETMAIN,XIT_MENU_TO_MAIN
ITALY_MENU_LEN .set 4
.word MAKE_STANDARW
.word PRINT_STANDARD
ITALY_MENU
.word MSGC_ITALY1,PRICE_YES_NO
.word MSGC_ITALY2,PRICE_YES_NO
.word MSGC_ITALY3,PRICE_YES_NO
.word ETMAIN,XIT_MENU_TO_MAIN
UK_MENU_LEN .set 4
.word MAKE_STANDARW
.word PRINT_STANDARD
UK_MENU
.word MSGC_UK1,PRICE_YES_NO
.word MSGC_UK2,PRICE_YES_NO
.word MSGC_UK3,PRICE_YES_NO
.word ETMAIN,XIT_MENU_TO_MAIN
SPAIN_MENU_LEN .set 7
.word MAKE_STANDARW
.word PRINT_STANDARD
SPAIN_MENU
.word MSGC_SPAIN1,PRICE_YES_NO
.word MSGC_SPAIN2,PRICE_YES_NO
.word MSGC_SPAIN3,PRICE_YES_NO
.word MSGC_SPAIN4,PRICE_YES_NO
.word MSGC_SPAIN5,PRICE_YES_NO
.word MSGC_SPAIN6,PRICE_YES_NO
.word ETMAIN,XIT_MENU_TO_MAIN
AUSTRALIA_MENU_LEN .set 5
.word MAKE_STANDARW
.word PRINT_STANDARD
AUSTRALIA_MENU
.word MSGC_AUSTRALIA1,PRICE_YES_NO
.word MSGC_AUSTRALIA2,PRICE_YES_NO
.word MSGC_AUSTRALIA3,PRICE_YES_NO
.word MSGC_AUSTRALIA4,PRICE_YES_NO
.word ETMAIN,XIT_MENU_TO_MAIN
JAPAN_MENU_LEN .set 4
.word MAKE_STANDARW
.word PRINT_STANDARD
JAPAN_MENU
.word MSGC_JAPAN1,PRICE_YES_NO
.word MSGC_JAPAN2,PRICE_YES_NO
.word MSGC_JAPAN3,PRICE_YES_NO
.word ETMAIN,XIT_MENU_TO_MAIN
TAIWAN_MENU_LEN .set 4
.word MAKE_STANDARW
.word PRINT_STANDARD
TAIWAN_MENU
.word MSGC_TAIWAN1,PRICE_YES_NO
.word MSGC_TAIWAN2,PRICE_YES_NO
.word MSGC_TAIWAN3,PRICE_YES_NO
.word ETMAIN,XIT_MENU_TO_MAIN
AUSTRIA_MENU_LEN .set 5
.word MAKE_STANDARW
.word PRINT_STANDARD
AUSTRIA_MENU
.word MSGC_AUSTRIA1,PRICE_YES_NO
.word MSGC_AUSTRIA2,PRICE_YES_NO
.word MSGC_AUSTRIA3,PRICE_YES_NO
.word MSGC_AUSTRIA4,PRICE_YES_NO
.word ETMAIN,XIT_MENU_TO_MAIN
BELGIUM_MENU_LEN .set 4
.word MAKE_STANDARW
.word PRINT_STANDARD
BELGIUM_MENU
.word MSGC_BELGIUM1,PRICE_YES_NO
.word MSGC_BELGIUM2,PRICE_YES_NO
.word MSGC_BELGIUM3,PRICE_YES_NO
.word ETMAIN,XIT_MENU_TO_MAIN
OTHER_MENU_LEN .set 8
.word MAKE_STANDARW
.word PRINT_STANDARD
OTHER_MENU
.word MSGC_SWEDEN1,PRICE_YES_NO
.word MSGC_FINLAND1,PRICE_YES_NO
.word MSGC_NETHERLAND1,PRICE_YES_NO
.word MSGC_NETHERLAND2,PRICE_YES_NO
.word MSGC_NORWAY1,PRICE_YES_NO
.word MSGC_DENMARK1,PRICE_YES_NO
.word MSGC_HUNGARY1,PRICE_YES_NO
.word ETMAIN,XIT_MENU_TO_MAIN
GENERAL_MENU_LEN .set 9
.word MAKE_STANDARW
.word PRINT_STANDARD
GENERAL_MENU
.word MSGC_GENERAL1,PRICE_YES_NO
.word MSGC_GENERAL2,PRICE_YES_NO
.word MSGC_GENERAL3,PRICE_YES_NO
.word MSGC_GENERAL4,PRICE_YES_NO
.word MSGC_GENERAL5,PRICE_YES_NO
.word MSGC_GENERAL6,PRICE_YES_NO
.word MSGC_GENERAL7,PRICE_YES_NO
.word MSGC_GENERAL8,PRICE_YES_NO
.word ETMAIN,XIT_MENU_TO_MAIN
ETMAIN .string "EXIT TO MAIN",0
.text
COUNTRY_MENUTABI .word COUNTRY_MENUTAB
romdata
COUNTRY_MENUTAB
.word USA_MENU,USA_MENU_LEN
.word GERMAN_MENU,GERMAN_MENU_LEN
.word FRENCH_MENU,FRENCH_MENU_LEN
.word CANADA_MENU,CANADA_MENU_LEN
.word SWISS_MENU,SWISS_MENU_LEN
.word ITALY_MENU,ITALY_MENU_LEN
.word UK_MENU,UK_MENU_LEN
.word SPAIN_MENU,SPAIN_MENU_LEN
.word AUSTRALIA_MENU,AUSTRALIA_MENU_LEN
.word JAPAN_MENU,JAPAN_MENU_LEN
.word TAIWAN_MENU,TAIWAN_MENU_LEN
.word AUSTRIA_MENU,AUSTRIA_MENU_LEN
.word BELGIUM_MENU,BELGIUM_MENU_LEN
.word OTHER_MENU,OTHER_MENU_LEN
.word GENERAL_MENU,GENERAL_MENU_LEN
.text
.bss COUNTRY,1
RUN_COUNTRY
LDI -1,R0
STI R0,@PSLAST ;JUMP START PRINT STANDARD
LDI R6,AR5
ADDI @COUNTRY_TABI,AR5
LDI *AR5,R0
STI R0,@COUNTRY
LDI R6,R0
MPYI 2,R0
LDI @COUNTRY_MENUTABI,AR5
ADDI R0,AR5
LDI *+AR5,AR6 ;MENU LENGTH
LDI *AR5,AR5 ;MENU DATA
LDI @SPM,AR7
BU HANDLE_MENU
.text
*----------------------------------------------------------------------------
MAKE_STANDARW:
IWINDOW 20,45,250,250
IWINDOW 262,45,500,250
RETS
PSSTARTY .set 100
.bss PSLAST,1
PRINT_STANDARD:
CMPI R0,R6
RETSNE
CMPI @PSLAST,R0
RETSEQ
STI R0,@PSLAST
CALL PUSHALL
PUSH RC
FILL 270,PSSTARTY+120,498,PSSTARTY+129,0
FILL 490-24,PSSTARTY,498,PSSTARTY+149,0
FILL 270,PSSTARTY-40,498,PSSTARTY-10,0
CMPI 0,AR7
BLE PS_SKIPMENU
LDI COL_RED,RC
LDI R0,AR4
ADDI @COUNTRY,AR4
MPYI COIN_ENTRY_SIZE,AR4
ADDI @COIN_TABLEI,AR4
ADDI 3,AR4
LDI *AR4++,AR2
LDI 270,R2
LDI PSSTARTY-40,R3
CALL _outtextxyc
LDI *AR4++,AR2
CMPI 0,AR2
BEQ DONE_MSG
LDI 270,R2
LDI PSSTARTY-30,R3
CALL _outtextxyc
LDI *AR4++,AR2
CMPI 0,AR2
BEQ DONE_MSG
LDI 270,R2
LDI PSSTARTY-20,R3
CALL _outtextxyc
DONE_MSG
LDI DEFAULT_COLOR,RC
TEXTITT "DETAILED PRICING INFORMATION",270,PSSTARTY-50
TEXTITT "LEFT CHUTE UNITS",270,PSSTARTY+0
TEXTITT "RIGHT CHUTE UNITS",270,PSSTARTY+10
TEXTITT "CENTER CHUTE UNITS",270,PSSTARTY+20
TEXTITT "FOURTH CHUTE UNITS",270,PSSTARTY+30
TEXTITT "UNITS PER CREDIT",270,PSSTARTY+40
TEXTITT "UNITS FOR BONUS",270,PSSTARTY+50
TEXTITT "MINIMUM UNITS",270,PSSTARTY+60
TEXTITT "CREDITS TO START",270,PSSTARTY+70
TEXTITT "CREDITS TO CONTINUE",270,PSSTARTY+80
TEXTITT "LEFT CENTER RIGHT FOURTH",270,PSSTARTY+100
TEXTITT "PRICING SELECTED",270,PSSTARTY+140
PS_SKIPMENU
POP RC
CMPI 0,AR7
BLE PSLPX
LDI R0,AR4
ADDI @COUNTRY,AR4
MPYI COIN_ENTRY_SIZE,AR4
ADDI @COIN_TABLEI,AR4
LDI *AR4++,R4
LDI 490,R2 ;X POS
LDI PSSTARTY,R3 ;Y POS START OF TEXT
; PUSH AR2
;First print the SLOT units
PSLP
LDI R4,R0
AND 0FFh,R0
PUSH R2
PUSH RC
LDI R0,R2
LDI @bufferI,AR2
CALL _itoa
POP RC
POP R2
PUSH R2 ;PRESERVE R2 for LATER USE
LDI 0,R1
CMPI 10,R0
LDIGE -8,R1 ;Right justify
CMPI 100,R0
LDIGE -16,R1 ;Right justify
ADDI R1,R2
CALL _outtextxyc
POP R2
LSH -8,R4
ADDI 10,R3
CMPI PSSTARTY+40,R3
BLT PSLP
CMPI PSSTARTY+80,R3
BEQ PSLP1
CMPI PSSTARTY+40,R3
BGT PSLP1_CHECK
PSLP1
; POP AR2
LDI *AR4++,R4
; PUSH AR2
PSLP1_CHECK
CMPI PSSTARTY+90,R3
BLT PSLP
; POP AR4
ADDI 3,AR4
;Print LEFT slot denomination
LDI *AR4++,AR2
LDI PSSTARTY+120,R3
LDI 270,R2
CALL _outtextxyc
;Print RIGHT slot denomination
LDI *AR4++,AR2
LDI 270+112,R2
CALL _outtextxyc
;Print CENTER slot denomination
LDI *AR4++,AR2
LDI 270+56,R2
CALL _outtextxyc
;Print FOURTH slot denomination
LDI *AR4++,AR2
LDI 270+176,R2
CALL _outtextxyc
LDI R6,R1
ADDI @COUNTRY,R1
READADJ ADJ_COINMODE
CMPI R0,R1
LDIEQ 1,R0
LDINE 0,R0
LDI PSSTARTY+140,R3
CALL PRINT_SPYN
PSLPX
CALL POPALL
RETS
PRINT_SPYN:
LDI @YES,AR2
LDI 474,R2
CMPI 0,R0
LDIEQ @NO,AR2
LDIEQ 482,R2
CALL _outtextxyc
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
CUSTOM_PRICING_MENU_LEN .set 16
.word 0
.word PRINT_SLOT
CUSTOM_PRICING_MENU
MENUENTRY "LEFT CHUTE UNITS",SET_SLOT
MENUENTRY "RIGHT CHUTE UNITS",SET_SLOT
MENUENTRY "CENTER CHUTE UNITS",SET_SLOT
MENUENTRY "FOURTH CHUTE UNITS",SET_SLOT
MENUENTRY "UNITS PER CREDIT",SET_SLOT
MENUENTRY "UNITS FOR BONUS",SET_SLOT
MENUENTRY "MINIMUM UNITS",SET_SLOT
MENUENTRY "CREDITS TO START",SET_SLOT
MENUENTRY "CREDITS TO CONTINUE",SET_SLOT
MENUENTRY "LEFT CHUTE COUNTER",SET_SLOT
MENUENTRY "RIGHT CHUTE COUNTER",SET_SLOT
MENUENTRY "CENTER CHUTE COUNTER",SET_SLOT
MENUENTRY "FOURTH CHUTE COUNTER",SET_SLOT
MENUENTRY "SHOW FRACTION",FRACTION_YES_NO
MENUENTRY "SELECT CUSTOM PRICING",CUSTOM_YES_NO
MENUENTRY "EXIT TO MAIN MENU",XIT_MENU_TO_MAIN
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
*USER INITIALIZE CONTROL VALUES
*
*
romdata
sct .string "CALIBRATE CONTROLS",0
.text
SET_CONTROLS:
CALL SETUP_DIAG_SCREEN
LDI DEFAULT_COLOR,RC
TEXTIT sct,150,10
TEXTITT "TAKE HANDS AND FEET OFF CONTROLS, AND SET STEERING",50,40
TEXTITT "WHEEL TO CENTER THEN HIT ENTER",50,50
CALL WT_NSTART
CALL WT_START
CALL BEEP
;get gas pedal min
LDI @_pot1,R2
SETADJ ADJ_GASMIN
LDI @_pot2,R2
SETADJ ADJ_BRAKEMIN
;get wheel center
LDI @_pot0,R2
SETADJ ADJ_STEERCENTER
CALL CLRSCRN
;turn wheel to left and hit sw1
LDI DEFAULT_COLOR,RC
TEXTIT sct,150,10
TEXTITT "TURN WHEEL ALL THE WAY TO THE LEFT AND HIT ENTER",50,40
CALL WT_NSTART
CALL WT_START
CALL BEEP
LDI @_pot0,R2
SETADJ ADJ_STEERMIN
CALL CLRSCRN
LDI DEFAULT_COLOR,RC
TEXTIT sct,150,10
TEXTITT "TURN WHEEL ALL THE WAY TO THE RIGHT AND HIT ENTER",50,40 ;turn wheel to right
CALL WT_NSTART
CALL WT_START
CALL BEEP
LDI @_pot0,R2
SETADJ ADJ_STEERMAX
CALL CLRSCRN
LDI DEFAULT_COLOR,RC
TEXTIT sct,150,10
;"push gas pedal all the way and hit sw1"
TEXTITT "PUSH GAS PEDAL TO MAX AND HIT ENTER",50,40
CALL WT_NSTART
CALL WT_START
CALL BEEP
LDI @_pot1,R2
SETADJ ADJ_GASMAX
LDI @DIPRAM,R0
TSTB DIP_STANDUP,R0
BNZ DADA5
CALL CLRSCRN
LDI DEFAULT_COLOR,RC
TEXTIT sct,150,10
TEXTITT "PUSH BRAKE PEDAL TO MAX AND HIT ENTER",50,40
CALL WT_NSTART
CALL WT_START
CALL BEEP
LDI @_pot2,R2
SETADJ ADJ_BRAKEMAX
CALL WT_NSTART
DADA5
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
*SET_VOLUME SYSTEM ADJUSTMENT
*
*
*START RETURN
*VIEW1 VOLUME UP
*VIEW2 VOLUME DOWN
*
*
SET_VOLUME:
CALL SETUP_DIAG_SCREEN
GROUP 90,60,410,240
IWINDOW 120,72,240,90
LDI COL_VDGREY,RC
TEXTITT "ADJUST VOLUME",125,76
IWINDOW 119,149,379,181
FILL 120,150,378,180,COL_BLACK
LDI COL_VDGREY,RC
TEXTITT "MIN",118,135
TEXTITT "MAX",360,135
TEXTITT "ENTER EXIT",130,200
TEXTITT "UP INCREASE VOLUME",130,210
TEXTITT "DOWN DECREASE VOLUME",130,220
READADJ ADJ_VOLUME
LDI R0,R4
READAUD ADJ_MIN_VOL_LEVEL
CMPI R0,R4
LDILT R0,R4
CALL SHOW_VOLUME
SOND1 MUNSTER_SURF
SOND1 ENGINESTART
SETVOL_LP
LDI 700,AR2
CALL RANDU0
LDI R0,R0
BNZ SETNN
LDI 6,AR2
CALL RANDU0
LDPI @INCIDENTI,AR2
ADDI R0,AR2
LDI *AR2,AR2
CALL ONESND
.data
INCIDENTI .word INCIDENT
INCIDENT .word CARPASS,TRUCKPASS
.word SCOLLA,TKEY
.word BOTTOMOUT,VIEW2IN
.text
SETNN
LDI @_newbut,R0
LDI R0,R1
TSTB SW_DIAG,R1 ;move up
BNZ NOTRET
SOND1 KILLALLS
RETS
NOTRET
TSTB SW_VOLPLUS,R0 ;move up
BNZ NOTUPA
ADDI 1,R4
CMPI 255,R4
LDIGT 255,R4
PUSH R0
READAUD ADJ_MIN_VOL_LEVEL
CMPI R0,R4
LDILT R0,R4
POP R0
LDI R4,R1
CALL SET_MASTER_VOL
LDI R4,R2
SETADJ ADJ_VOLUME
CALL SHOW_VOLUME
B WTA
NOTUPA
TSTB SW_VOLMINUS,R0 ;move down
BNZ NOTDOWNA
SUBI 1,R4
LDILT 1,R4
PUSH R0
READAUD ADJ_MIN_VOL_LEVEL
CMPI R0,R4
LDILT R0,R4
POP R0
LDI R4,R1
CALL SET_MASTER_VOL
LDI R4,R2
SETADJ ADJ_VOLUME
CALL SHOW_VOLUME
WTA
NOTDOWNA
B SETVOL_LP
SHOW_VOLUME
LDI 120,AR2
LDI AR2,R3
ADDI R4,R3
LDI 150,R2
LDI 180,RC
LDI COL_GREEN,RS
CALL _fill
LDI 120,AR2
ADDI R4,AR2
LDI 355,R3
LDI 150,R2
LDI 180,RC
LDI COL_BLACK,RS
CALL _fill
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
FULL_FACTORY_RESTORE:
.data
FFR .string "FULL FACTORY RESTORE",0
.text
LDL FFR,AR2
LDI @NULLSTR,AR3
CALL CLEAR_YES_NO
RETSC
SETDP
.GLOBL FFRSUB,SET_CONTROLS,DIAGPAL
FFRSUB
CALL RESET_BOOKKEEPING
CALL INIT_HSTD_TABLES
CALL RESET_ADJUSTMENTS
CLRI R2
SETAUD AUD_PCREDITS
SETAUD AUD_CREDITS
LDI @FFRST,AR2
CALL MESSAGE_BOX
CALL SET_CONTROLS
RETS
FFRST SPTR "FULL FACTORY RESTORE"
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
DEFAULT_ADJUSTMENTS:
.data
RDA .string "RESET DEFAULT ADJUSTMENTS",0
.text
LDL RDA,AR2
LDI @NULLSTR,AR3
CALL CLEAR_YES_NO
RETSC
SETDP
CALL RESET_ADJUSTMENTS
LDI @DAS,AR2
CALL MESSAGE_BOX
CALL SET_CONTROLS
RETS
DAS SPTR "DEFAULT ADJUSTMENTS SET"
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
RESET_HIGH_SCORES:
.data
RHS .string "RESET HIGH SCORES",0
.text
LDL RHS,AR2
LDI @NULLSTR,AR3
CALL CLEAR_YES_NO
RETSC
SETDP
CALL INIT_HSTD_TABLES
LDI @HSRS,AR2
CALL MESSAGE_BOX
RETS
HSRS SPTR "HIGH SCORES RESET"
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
CLEAR_GAME_AUDITS:
.data
CGA .string "CLEAR GAME AUDITS",0
.text
LDL CGA,AR2
LDI @NULLSTR,AR3
CALL CLEAR_YES_NO
RETSC
SETDP
CALL RESET_BOOKKEEPING
LDI @BOOKR,AR2
CALL MESSAGE_BOX
RETS
BOOKR SPTR "BOOKKEEPING RESET"
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
FREEPLAYT SPTR "FREE PLAY"
FREEPLAYONOFF:
READAUD ADJ_FREE_PLAY
LDI R0,R5
LDI @FREEPLAYT,AR2
LDI @NULLSTR,AR3
CALL DUAL_ON_OFF
LDI R5,R2
SETADJ ADJ_FREE_PLAY
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
FGOO1 SPTR "GIVE FREE GAME"
FGOO2 SPTR "ON 1ST POSITION"
FREEGAMEONOFF:
READAUD ADJ_FREEGAME
LDI R0,R5
LDI @FGOO1,AR2
LDI @FGOO2,AR3
CALL DUAL_ON_OFF
LDI R5,R2
SETADJ ADJ_FREEGAME
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
APHSTD SPTR "ALLOW PLAYER TO"
APHSTD2 SPTR "ENTER INITIALS"
HIGHSCORE_ENTRY:
READAUD ADJ_HIGH_SCORE_ENTRY
LDI R0,R5
LDI @APHSTD,AR2
LDI @APHSTD2,AR3
CALL DUAL_ON_OFF
LDI R5,R2
SETADJ ADJ_HIGH_SCORE_ENTRY
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
GI1 SPTR "SHOW GIRLS"
GIRLS_ONOFF:
READAUD ADJ_GIRLS
LDI R0,R5
LDI @GI1,AR2
LDI @NULLSTR,AR3
CALL DUAL_ON_OFF
LDI R5,R2
SETADJ ADJ_GIRLS
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
CL1 SPTR "SHOW PRESIDENT"
CLINTON_ONOFF:
READAUD ADJ_CLINTON
LDI R0,R5
LDI @CL1,AR2
LDI @NULLSTR,AR3
CALL DUAL_ON_OFF
LDI R5,R2
SETADJ ADJ_CLINTON
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
RK1 SPTR "SHOW ROADKILL"
ROADKILL_ONOFF:
READAUD ADJ_ROADKILL
LDI R0,R5
LDI @RK1,AR2
LDI @NULLSTR,AR3
CALL DUAL_ON_OFF
LDI R5,R2
SETADJ ADJ_ROADKILL
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
*
* 0 = MPH (default)
* 1 = KPH
*
MP1 SPTR "SPEED IN MPH OR KPH"
MP2 SPTR "KPH"
MP3 SPTR "MPH"
MILES_OR_KILO:
READAUD ADJ_MPHORKPM
LDI R0,R5
LDI @MP1,AR2
LDI @NULLSTR,AR3
LDI @MP2,AR4
LDI @MP3,AR5
CALL DUAL_VALUE
LDI R5,R2
SETADJ ADJ_MPHORKPM
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
CLR_CRED SPTR "CLEAR CREDITS"
YES SPTR "YES"
NO SPTR "NO"
ONS SPTR "ON"
OFFS SPTR "OFF"
NULLSTR SPTR ""
AREUSURE SPTR "ARE YOU SURE?"
*----------------------------------------------------------------------------
CLEAR_CREDITS:
LDI @CLR_CRED,AR2
LDI @AREUSURE,AR3
CALL CLEAR_YES_NO
RETSC
SETDP
CLRI R2
SETAUD AUD_PCREDITS
SETAUD AUD_CREDITS
LDI @CCD2A,AR2
CALL MESSAGE_BOX
RETS
CCD2A SPTR "CREDITS CLEARED"
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
MESSAGE_BOX:
PUSH AR2
WINDOW 110,115,370,285
IWINDOW 120,125,360,275
LDI COL_VDGREY,RC
POP AR2
LDI 130,R2
LDI 170,R3
CALL _outtextxyc
LDI 30,AR6
ABLP CALL WAIT_FOR_VBLANK
DBU AR6,ABLP
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
*DUAL VALUE
*
*
*PARAMETERS
* AR2 TEXT STRING 1
* AR3 TEXT STRING 2
* AR4 RESPONSE 1
* AR5 RESPONSE 2
* R5 VALUE {0,1}
*
*RETURNS
* C ON YES (RESPONSE 1)
* NC ON NO (RESPONSE 2)
*
CLEAR_YES_NO:
LDI 0,R5
ASK_YES_NO:
LDI @YES,AR4
LDI @NO,AR5
BU DUAL_VALUE
* R5 DEFAULT
DUAL_ON_OFF:
LDI @ONS,AR4
LDI @OFFS,AR5
BU DUAL_VALUE
DUAL_VALUE:
AND 1,R5 ;KEEP IT WITHIN RANGE
PUSH AR4
PUSH AR5
PUSH AR3
PUSH AR2
WAIT_MAC_NOREPEAT
WINDOW 110,115,370,285
IWINDOW 120,125,360,275
LDI COL_VDGREY,RC
POP AR2
LDI 130,R2
LDI 140,R3
CALL _outtextxyc
POP AR2
LDI 130,R2
LDI 150,R3
CALL _outtextxyc
TEXTITT "UP TO CHANGE",130,235
TEXTITT "ENTER TO ACCEPT",130,245
CALL WAIT_FOR_VBLANK
CALL WAIT_FOR_VBLANK
POP AR7
POP AR6
CYNLOOP
LDI COL_VDGREY,RC
CMPI 1,R5
LDIEQ COL_RED,RC
LDI AR6,AR2
LDI 170,R2
LDI 200,R3
CALL _outtextxyc
LDI COL_VDGREY,RC
CMPI 0,R5
LDIEQ COL_RED,RC
LDI AR7,AR2
LDI 220,R2
LDI 200,R3
CALL _outtextxyc
LDI @_newbut,R0 ;old system method
TSTB SW_DIAG,R0
BZ DOEXIT
TSTB SW_VOLPLUS,R0 ;move down
BZ CHNG
TSTB SW_VOLMINUS,R0 ;move up
BZ NCHNG
BU NCHNG
CHNG
XOR 1,R5
SOND1 WPC_MISC2
NCHNG
WAIT_MAC_NOREPEAT
B CYNLOOP
DOEXIT
CMPI 0,R5
BEQ CYN_YES
CYN_NO
CLRC
RETS
CYN_YES
SETC
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
SSGD SPTR "STEERING SENSITIVITY"
SSGD2 SPTR "0 (ADOLT) TO 5 (GAMEPLAYER)"
SET_STEERING_SENSITIVITY:
READAUD ADJ_STEERING_SENSITIVITY
LDI R0,R5
LDI @SSGD,AR2
LDI @SSGD2,AR3
LDI 0,R6
LDI 5,R7
LDI @GAMEDIFF_CVTI,AR4
LDI 1,R4
CALL MULTI_VALUE_STEP
LDI R5,R2
SETADJ ADJ_STEERING_SENSITIVITY
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
HSGD SPTR "PLAYS TO HIGHSCORE"
HSGD2 SPTR "RESET 1000 TO 25000"
SET_HIGHSCORE_RESET:
READAUD ADJ_HIGHSCORE_RESET
LDI R0,R5
LDI @HSGD,AR2
LDI @HSGD2,AR3
LDI 1000,R6
LDI 25000,R7
LDI @GAMEDIFF_CVTI,AR4
LDI 1000,R4
CALL MULTI_VALUE_STEP
LDI R5,R2
SETADJ ADJ_HIGHSCORE_RESET
RETS
*----------------------------------------------------------------------------
;*----------------------------------------------------------------------------
;FSGD SPTR "FIRST PLACE PERCENT"
;FSGD2 SPTR "10 TO 40"
;SET_FIRST_PLACE_PERCENT:
;
; READAUD ADJ_FIRST_PLACE_PERCENT
; LDI R0,R5
;
; LDI @FSGD,AR2
; LDI @FSGD2,AR3
; LDI 10,R6
; LDI 40,R7
;
; LDI @GAMEDIFF_CVTI,AR4
; CALL MULTI_VALUE
;
; LDI R5,R2
; SETADJ ADJ_FIRST_PLACE_PERCENT
; RETS
;*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
*
*
*
SGD SPTR "GAME DIFFICULTY"
SGD2 SPTR "0 (EASY) TO 9 (HARD)"
SET_GAME_DIFFICULTY:
READAUD ADJ_DIFFICULTY
LDI R0,R5
LDI @SGD,AR2
LDI @SGD2,AR3
CLRI R6
LDI 9,R7
LDI @GAMEDIFF_CVTI,AR4
LDI 1,R4
CALL MULTI_VALUE_STEP
LDI R5,R2
SETADJ ADJ_DIFFICULTY
RETS
GAMEDIFF_CVTI .word GAMEDIFF_CVT
*
*
GAMEDIFF_CVT:
PUSH R2
LDI R5,R2
LDI @bufferI,AR2
CALL _itoa
LDI @bufferI,AR2
POP R2
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
*
*
*
ITD SPTR "INITIAL TIME"
ITD2 SPTR "60-90 SECONDS"
SET_TIME_TO_START:
READAUD ADJ_TIME_TO_START
LDI R0,R5
LDI @ITD,AR2
LDI @ITD2,AR3
CLRI R6
LDI 6,R7
LDI @TIME_CVTI,AR4
CALL MULTI_VALUE
LDI R5,R2
SETADJ ADJ_TIME_TO_START
RETS
TIME_CVTI .word TIME_CVT
*
*
TIME_CVT:
PUSH R2
LDI R5,R2
MPYI 5,R2
ADDI 60,R2
LDI @bufferI,AR2
CALL _itoa
LDI @bufferI,AR2
POP R2
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
CPBTT SPTR "CHECKPOINT TIME BONUS"
CPBTT2 SPTR "10-25 SECONDS"
SET_CHECKPOINT_BONUS:
READAUD ADJ_CHECKPOINT_BONUS
LDI R0,R5
LDI @CPBTT,AR2
LDI @CPBTT2,AR3
LDI 10,R6
LDI 25,R7
LDI @CHECKPOINT_BONUS_CVTI,AR4
CALL MULTI_VALUE
LDI R5,R2
SETADJ ADJ_CHECKPOINT_BONUS
RETS
CHECKPOINT_BONUS_CVTI .word CHECKPOINT_BONUS_CVT
CHECKPOINT_BONUS_CVT:
PUSH R2
LDI R5,R2
LDI @bufferI,AR2
CALL _itoa
LDI @bufferI,AR2
POP R2
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
MXT1 SPTR "MAX CREDITS"
MXT2 SPTR "10-50"
SET_MAX_CREDITS:
READAUD ADJ_MAX_CREDITS
LDI R0,R5
LDI @MXT1,AR2
LDI @MXT2,AR3
LDI 10,R6
LDI 50,R7
LDI @CHECKPOINT_BONUS_CVTI,AR4
CALL MULTI_VALUE
LDI R5,R2
SETADJ ADJ_MAX_CREDITS
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
*
*
*
MVL SPTR "MINIMUM VOLUME LEVEL"
SET_MIN_VOL_LEVEL:
READAUD ADJ_MIN_VOL_LEVEL
FLOAT R0,R5
MPYF 0.11764,R5
FIX R5
LDI @MVL,AR2
LDI @NULLSTR,AR3
CLRI R6
LDI 30,R7
LDI @SET_MIN_VOL_LEVEL_CVTI,AR4
CALL MULTI_VALUE
FLOAT R5
MPYF 8.5,R5
FIX R5,R2
SETADJ ADJ_MIN_VOL_LEVEL
RETS
SET_MIN_VOL_LEVEL_CVTI .word SET_MIN_VOL_LEVEL_CVT
*
*
SET_MIN_VOL_LEVEL_CVT:
PUSH R2
LDI R5,R2
LDI @bufferI,AR2
CALL _itoa
LDI @bufferI,AR2
POP R2
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
*MULTI VALUE
*
*PARAMETERS
* AR2 STRING 1
* AR3 STRING 2
* AR4 ROUTINE TO RETURN VALUE STRING
* R5 INITIAL VALUE
* R6 MIN VALUE
* R7 MAX VALUE
* (NO WRAP AROUND)
*RETURNS
* R5 VALUE (INDEX)
*
.bss REPEAT_SW,1
.bss REPEAT_TIME,1
*
*
*PARAMETERS (ADDITIONAL FOR STEP)
* R4 STEP
*
*
MULTI_VALUE:
LDI 1,R4
MULTI_VALUE_STEP:
PUSH R5
PUSH R6
PUSH R7
PUSH AR4
PUSH AR5
PUSH AR3
PUSH AR2
WAIT_MAC_NOREPEAT
LDI 10000,R0
MPYI 55,R0
STI R0,@REPEAT_TIME
LDI 0,R0
STI R0,@REPEAT_SW
WINDOW 110,115,320,285
IWINDOW 120,125,310,275
LDI COL_VDGREY,RC
POP AR2
LDI 130,R2
LDI 140,R3
CALL _outtextxyc
POP AR2
LDI 130,R2
LDI 150,R3
CALL _outtextxyc
TEXTITT "ENTER TO ACCEPT",130,225
TEXTITT "UP TO INCREASE",130,235
TEXTITT "DOWN TO DECREASE",130,245
CALL WAIT_FOR_VBLANK
CALL WAIT_FOR_VBLANK
POP AR7
POP AR6
POP R7
POP R6
POP R5
DVLOOP
CMPI R6,R5
LDILT R6,R5
CMPI R7,R5
LDIGT R7,R5
FILL 170,200,309,209,0
LDI AR4,R0
CALLU R0 ;VALUE PASSED IN R5 (ALL REGS PRESERVED)
LDI COL_VDGREY,RC
LDI 170,R2
LDI 200,R3
CALL _outtextxyc
CALL WAIT_FOR_VBLANK
LDI @_newbut,R0 ;old system method
TSTB SW_DIAG,R0
BZ DOEXITDV
TSTB SW_VOLPLUS,R0 ;move down
BZ CHNGDV
TSTB SW_VOLMINUS,R0 ;move up
BNZ NCHNGDV
SUBI R4,R5
LDI 980,AR2
CALL SENDSND
BU NCHNGDV
CHNGDV
ADDI R4,R5
LDI 981,AR2
CALL SENDSND
NCHNGDV
LDI @REPEAT_TIME,R1
WT5
DEC R1
BLT WTT5
LDI @_newbut,R0
AND SW_VOLPLUS|SW_VOLMINUS|SW_DIAG,R0
CMPI @REPEAT_SW,R0
BEQ WT5
WTT5
CMPI @REPEAT_SW,R0
BNE WTTT5
LDI 5000,R1
MPYI 55,R1
STI R1,@REPEAT_TIME
B DVLOOP
WTTT5
LDI 10000,R1
MPYI 55,R1
STI R1,@REPEAT_TIME
STI R0,@REPEAT_SW
B DVLOOP
DOEXITDV
RETS
*----------------------------------------------------------------------------
SPM SPTR "STANDARD PRICING MENU"
RUN_STANDARD_PRICING:
LDL STANDARD_PRICING_MENU,AR5
LDI STANDARD_PRICING_MENU_LEN,AR6
LDI @SPM,AR7
BU HANDLE_MENU
*----------------------------------------------------------------------------
.data
SELTP .string "SELECT THIS PRICING",0
.text
PRICE_YES_NO:
LDI -1,R0
STI R0,@PSLAST ;JUMP START PRINT STANDARD
LDL SELTP,AR2
LDI @AREUSURE,AR3
PUSH R6
CALL CLEAR_YES_NO
POP R6
RETSC
LDI R6,R2
ADDI @COUNTRY,R2
LDI ADJ_COINMODE,AR2
CALL ADJUSTMENT_WRITE
LDI 1,R2
LDI ADJ_STANDARD_PRICING,AR2
CALL ADJUSTMENT_WRITE
;IF YOU CHANGE MODES YOU RESET THE CREDITS
;
LDI 0,R2
LDI AUD_PCREDITS,AR2
CALL ADJUSTMENT_WRITE
LDI 0,R2
LDI AUD_CREDITS,AR2
CALL ADJUSTMENT_WRITE
;NOTE: AUD_BCREDITS RESET DURING GAME INIT
.ref SET_COINAGE_ADJ
CALL SET_COINAGE_ADJ ;Set the custom coinage to the standard just selected
LDI @STP,AR2
CALL MESSAGE_BOX
RETS
STP SPTR "PRICING SELECTED"
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
RCMT SPTR "CUSTOM PRICING"
RUN_CUSTOM_PRICING:
LDL CUSTOM_PRICING_MENU,AR5
LDI CUSTOM_PRICING_MENU_LEN,AR6
LDI @RCMT,AR7
BU HANDLE_MENU
*----------------------------------------------------------------------------
.data
FRACYN .string "SHOW FRACTION",0
.text
FRACTION_YES_NO:
READAUD ADJ_SHOW_FRAC
LDI R0,R5
LDL FRACYN,AR2
LDI @NULLSTR,AR3
CALL ASK_YES_NO
LDI 1,R2
LDIC 0,R2
LDI ADJ_SHOW_FRAC,AR2
CALL ADJUSTMENT_WRITE
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
.data
USECP .string "USE CUSTOM PRICING",0
.text
CUSTOM_YES_NO:
READAUD ADJ_STANDARD_PRICING
LDI R0,R5
XOR 1,R5
LDL USECP,AR2
LDI @NULLSTR,AR3
CALL ASK_YES_NO
LDI 0,R2
LDIC 1,R2
PUSH R2
LDI ADJ_STANDARD_PRICING,AR2
CALL ADJUSTMENT_WRITE
POP R2
CMPI 1,R2
BEQ CUSTOM_NO
LDI @CPS,AR2
CALL MESSAGE_BOX
CUSTOM_NO
RETS
CPS SPTR "CUSTOM PRICING SELECTED"
*----------------------------------------------------------------------------
CMESSAGE_TAB
.word CPCS,CPCS,CPCS,CPCS,CUPC,CTSS,CTCS,CCTS,CCTC,CTPC,CTPC,CTPC,CTPC
CPCS .string "UNITS PER COIN",0
CUPC .string "UNITS PER CREDIT",0
CTSS .string "BONUS UNITS",0
CTCS .string "MINIMUM UNITS",0
CCTS .string "CREDITS TO START",0
CCTC .string "CREDITS TO CONTINUE",0
CTPC .string "COUNTER TICKS PER COIN",0
SET_SLOT:
LDI R6,AR2 ;R6 = menu selection index
LDI ADJ_COIN1_UNITS,R0
CMPI 9,R6
BLT SET_SLOT1
LDI ADJ_COIN1_COUNTER,R0
SUBI 9,R0 ;STRIP THE MENU OFFSET
SET_SLOT1
ADDI R0,AR2
CALL ADJUSTMENT_READ
LDI R0,R5
LDL CMESSAGE_TAB,AR2
ADDI R6,AR2
LDI *AR2,AR2
LDI @NULLSTR,AR3
PUSH R6
LDI 0,R6 ;RANGE 0 to 100
LDI 100,R7
LDI @GAMEDIFF_CVTI,AR4 ;This will print the values as numbers
CALL MULTI_VALUE
POP R6
LDI R5,R2
LDI R6,AR2
LDI ADJ_COIN1_UNITS,R0
CMPI 9,R6
BLT SET_SLOT2
LDI ADJ_COIN1_COUNTER,R0
SUBI 9,R0 ;STRIP THE MENU OFFSET
SET_SLOT2
ADDI R0,AR2
CALL ADJUSTMENT_WRITE
;IF YOU CHANGE MODES YOU RESET THE CREDITS
LDI 0,R2
LDI AUD_PCREDITS,AR2
CALL ADJUSTMENT_WRITE
LDI 0,R2
LDI AUD_CREDITS,AR2
CALL ADJUSTMENT_WRITE
RETS
PSTABI .word PSTAB
.SECT "THEDATA"
PSTAB
.word ADJ_COIN1_UNITS,PRINT_NUMBER
.word ADJ_COIN2_UNITS,PRINT_NUMBER
.word ADJ_COIN3_UNITS,PRINT_NUMBER
.word ADJ_COIN4_UNITS,PRINT_NUMBER
.word ADJ_UNITS_PER_CREDIT,PRINT_NUMBER
.word ADJ_BONUS_UNITS,PRINT_NUMBER
.word ADJ_UNITS_MIN,PRINT_NUMBER
.word ADJ_CREDITS_TO_START,PRINT_NUMBER
.word ADJ_CREDITS_TO_CONTINUE,PRINT_NUMBER
.word ADJ_COIN1_COUNTER,PRINT_NUMBER
.word ADJ_COIN2_COUNTER,PRINT_NUMBER
.word ADJ_COIN3_COUNTER,PRINT_NUMBER
.word ADJ_COIN4_COUNTER,PRINT_NUMBER
.word ADJ_SHOW_FRAC,PRINT_YN
.word ADJ_STANDARD_PRICING,PRINT_YN_INV
.word 0,0
.text
PRINT_SLOT:
PUSH AR4
LDI @PSTABI,AR4
CALL PRINT_VALUE
POP AR4
RETS
PRINT_VALUE:
PUSH R0
PUSH R1
PUSH R2
PUSH AR2
MPYI 2,R0
ADDI R0,AR4
LDI *AR4,AR2
CALL ADJUSTMENT_READ
; LDI *+AR4,AR2
; ADDI @PVTABI,AR2
; LDI *AR2,R1
; BEQ PRINT_VALUEX
LDI *+AR4,R1
BEQ PRINT_VALUEX
CALLU R1
PRINT_VALUEX
POP AR2
POP R2
POP R1
POP R0
RETS
;PVTABI .word PVTAB
;
; .word 0
; .word PRINT_MPH_INV ;-4
; .word PRINT_ONOFF_INV ;-3
; .word PRINT_YN_INV ;-2
; .word 0 ;-1
;PVTAB .word 0 ;0
; .word PRINT_NUMBER ;1
; .word PRINT_YN ;2
; .word PRINT_ONOFF ;3
; .word PRINT_MPH ;4
; .word PRINT_TIME ;5
; .word PRINT_VOL ;6
PRINT_VOL:
PUSH RC
FLOAT R0
MPYF 0.11764,R0
FIX R0
LDI R0,R2
LDI @bufferI,AR2
CALL _itoa
LDI @bufferI,AR2
LDI 270,R2
CMPI 10,R0
LDIGE 262,R2
CMPI 100,R0
LDIGE 254,R2
POP RC
CALL _outtextxyc
RETS
GETSTR_LENGTH:
PUSH AR2
PUSH R0
PUSH R1
PUSH R3
CLRI R2
GSLP
CLRI R1
LDI *AR2++,R3
GSLP1
LDI R3,R0
LSH R1,R0
AND 0FFH,R0
BEQ GSLDONE
ADDI 1,R2
SUBI 8,R1
CMPI -32,R1
BGT GSLP1
BR GSLP
GSLDONE
POP R3
POP R1
POP R0
POP AR2
RETS
PRINT_COINMODE:
PUSH R0
READADJ ADJ_STANDARD_PRICING
POP R2
CMPI 0,R0
RETSEQ
ADDI @COINMSGC_TABI,R2
LDI R2,AR2
LDI *AR2,AR2
CALL GETSTR_LENGTH
MPYI -8,R2
ADDI 278,R2
CALL _outtextxyc
RETS
PRINT_CUSTOM_SELECTED:
CMPI 1,R0
RETSEQ
LDI @ISON,AR2
LDI 262,R2
CALL _outtextxyc
RETS
PRINT_TIME:
MPYI 5,R0
ADDI 60,R0
PRINT_NUMBER:
PUSH RC
LDI R0,R2
LDI @bufferI,AR2
CALL _itoa
LDI @bufferI,AR2
LDI 270,R2
CMPI 10,R0
LDIGE 262,R2
CMPI 100,R0
LDIGE 254,R2
CMPI 1000,R0
LDIGE 246,R2
CMPI 10000,R0
LDIGE 238,R2
PUSH R1
LDI 10000,R1
MPYI 10,R1
CMPI R1,R0
LDIGE 230,R2
POP R1
POP RC
CALL _outtextxyc
RETS
PRINT_YN_INV:
NEGI R0
ADDI 1,R0 ;Drops through to PRINT_YN
PRINT_YN:
LDI @YES,AR2
LDI 254,R2
CMPI 0,R0
LDIEQ @NO,AR2
LDIEQ 262,R2
CALL _outtextxyc
RETS
PRINT_ONOFF_INV:
NEGI R0
ADDI 1,R0 ;Drops through to PRINT_ONOFF
PRINT_ONOFF:
LDI @ISON,AR2
LDI 262,R2
CMPI 0,R0
LDIEQ @ISOFF,AR2
LDIEQ 254,R2
CALL _outtextxyc
RETS
PRINT_MPH_INV:
NEGI R0
ADDI 1,R0 ;Drops through to PRINT_MPH
PRINT_MPH:
LDI @MP3,AR2
LDI 254,R2
CMPI 1,R0
LDIEQ @MP2,AR2
CALL _outtextxyc
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
*MENU DEFINITIONS
*
*
MAIN_MENU_LEN .set 7
.word 0
MAIN_MENU:
MENUENTRY "DIAGNOSTIC MENU",RUN_DIAG_MENU
MENUENTRY "GAME AUDITS",AUDIT_DISPLAY
MENUENTRY "ADJUSTMENTS MENU",RUN_ADJUSTMENT_MENU
MENUENTRY "UTILITIES",RUN_UTILITIES_MENU
MENUENTRY "CALIBRATE CONTROLS",SET_CONTROLS
MENUENTRY "ADJUST VOLUME",SET_VOLUME
MENUENTRY "EXIT TO GAME OVER",DIAG_RETURN
DIAGNOSTIC_MENU_LEN .set 10
.word 0
DIAGNOSTIC_MENU:
MENUENTRY "SWITCH TEST",SHOWSWITCH
MENUENTRY "DIP SWITCH TEST",SHOW_DIPSWITCH
MENUENTRY "CPU BOARD TEST",TEST_CHIPS
MENUENTRY "SOUND BOARD TEST",SOUND_BOARD_TEST
MENUENTRY "STEERING WHEEL TEST",STEERING_WHEEL_TEST
MENUENTRY "MONITOR TEST",MONITOR_DIAGNOSTICS
MENUENTRY "BURNIN TEST",BURNIN_TEST
MENUENTRY "MOTION MENU",RUN_MOTION_MENU ;MOTION_BURNIN
MENUENTRY "LAMP TEST",RUN_LAMP_TEST
MENUENTRY "EXIT TO MAIN MENU",XIT_MENU_TO_MAIN
UTILITIES_MENU_LEN .set 6
.word 0
UTILITIES_MENU:
MENUENTRY "CLEAR CREDITS",CLEAR_CREDITS
MENUENTRY "CLEAR GAME AUDITS",CLEAR_GAME_AUDITS
MENUENTRY "RESET HIGH SCORES",RESET_HIGH_SCORES
MENUENTRY "DEFAULT ADJUSTMENTS",DEFAULT_ADJUSTMENTS
MENUENTRY "FULL FACTORY RESTORE",FULL_FACTORY_RESTORE
MENUENTRY "EXIT TO MAIN MENU",XIT_MENU_TO_MAIN
ADJUSTMENT_MENU_LEN .set 18
.word 0
.word PRINT_ADJUSTMENT
ADJUSTMENT_MENU
MENUENTRY "STANDARD PRICING",RUN_STANDARD_PRICING
MENUENTRY "CUSTOM PRICING",RUN_CUSTOM_PRICING
MENUENTRY "FREE PLAY",FREEPLAYONOFF
MENUENTRY "FIRST PLACE AWARDS FREE GAME",FREEGAMEONOFF
MENUENTRY "START TIME BONUS SECS",SET_TIME_TO_START
MENUENTRY "CHECKPOINT BONUS TIME SECS",SET_CHECKPOINT_BONUS
MENUENTRY "ATTRACT MODE SOUND",AMODESND
MENUENTRY "HIGH SCORE ENTRY",HIGHSCORE_ENTRY
MENUENTRY "MIN VOLUME LEVEL",SET_MIN_VOL_LEVEL
MENUENTRY "SPEED IN MPH OR KPH",MILES_OR_KILO
MENUENTRY "SHOW ROADKILL",ROADKILL_ONOFF
MENUENTRY "SHOW PRESIDENT",CLINTON_ONOFF
MENUENTRY "SHOW GIRLS",GIRLS_ONOFF
MENUENTRY "HIGHSCORE RESET",SET_HIGHSCORE_RESET
MENUENTRY "GAME DIFFICULTY",SET_GAME_DIFFICULTY
MENUENTRY "MAX CREDITS",SET_MAX_CREDITS
MENUENTRY "STEERING SENSITIVITY",SET_STEERING_SENSITIVITY
MENUENTRY "EXIT TO MAIN MENU",XIT_MENU_TO_MAIN
.globl DIAG_MOTION_TESTX,DIAG_MOTION_TESTY,DIAG_MOTION_TESTZ
.globl DIAG_MOTION_BURNIN
MOTION_MENU_LEN .set 7
.word 0
MOTION_MENU
MENUENTRY "FRONT AXIS UP/DOWN",DIAG_MOTION_TESTZ
MENUENTRY "LEFT REAR AXIS UP/DOWN",DIAG_MOTION_TESTX
MENUENTRY "RIGHT REAR AXIS UP/DOWN",DIAG_MOTION_TESTY
MENUENTRY "COMBINED MOTION",DIAG_MOTION_BURNIN
MENUENTRY "MOTION SAFETY SWITCHES",MOTION_SAFETY_SWITCHES_DIAG
.globl SEND_MOTOR_OFF
MENUENTRY "HARD MOTION OFF",SEND_MOTOR_OFF
MENUENTRY "EXIT TO MAIN MENU",XIT_MENU_TO_MAIN
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
LAMPT SPTR "LAMP TEST"
LAMP_MENU_LEN .set 11
.word 0
LAMP_MENU:
MENUENTRY "TURN ON ALL LAMPS",LAMPSALL
MENUENTRY "TURN OFF ALL LAMPS",LAMPSOFF
MENUENTRY "TURN ON START",LAMPS
MENUENTRY "TURN ON VIEW 1",LAMPV1
MENUENTRY "TURN ON VIEW 2",LAMPV2
MENUENTRY "TURN ON VIEW 3",LAMPV3
MENUENTRY "TURN ON LEFT TAIL",LAMPLT
MENUENTRY "TURN ON RIGHT TAIL",LAMPRT
MENUENTRY "TURN ON LEFT FRONT",LAMPLF
MENUENTRY "TURN ON RIGHT FRONT",LAMPRF
MENUENTRY "EXIT TO MAIN MENU",XIT_MENU_TO_MAIN
RUN_LAMP_TEST:
LDL LAMP_MENU,AR5
LDI LAMP_MENU_LEN,AR6
LDI @LAMPT,AR7
BU HANDLE_MENU
LAMPSOFF:
LDI 0,R0
BU LJIN
LAMPSALL:
LDI 0FFh,R0
BU LJIN
LAMPS: LDI 1,R0
BU LJIN
LAMPV1: LDI 2,R0
BU LJIN
LAMPV2: LDI 4,R0
BU LJIN
LAMPV3: LDI 8,R0
BU LJIN
LAMPLT: LDI 10h,R0
BU LJIN
LAMPRT: LDI 20h,R0
BU LJIN
LAMPLF: LDI 40h,R0
BU LJIN
LAMPRF: LDI 80h,R0
LJIN LDP @BUTTON_STATUS
STI R0,@BUTTON_STATUS
SETDP
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
MOTION_CHECK_SAFETY_CODES:
PUSH R0
PUSH R1
PUSH R2
PUSH R3
CALL CLEAR_MATS
CLRI AR2
LDP @991030h
LDI @991030h,R0
LDI *AR2,AR2
SETDP
RS 8,R0 ;right justify
LDL MOTION_SAFETY_CODES,AR2
MCSC_LP LDI *AR2,R1
CMPI -1,R1
BEQ NO_ERRORS
AND *+AR2(1),R1
LDI R0,R3
AND *+AR2(1),R3
CMPI R3,R1
BNE JJDDA
LDI *+AR2(2),R0
CALLU R0
BU ALL_DONE
JJDDA NOP *++AR2(3)
BU MCSC_LP
NO_ERRORS
IWINDOW 50,320,450,360
LDI COL_BLACK,RC
TEXTITT "ALL SYSTEMS OK",70,330
ALL_DONE
POP R3
POP R2
POP R1
POP R0
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
MSCM .MACRO CODE,MASK,ROUTINE
.word :CODE:,:MASK:,:ROUTINE:
.ENDM
MOTION_SAFETY_CODES:
MSCM 080h,080h,MSC_BOARD_NOTPLUGGED
MSCM 070h,0F0h,MSC_FAILSAFE_NOTCONNECTED
MSCM 060h,0F0h,MSC_FAILSAFE_OK
MSCM 050h,0F0h,MSC_OPTO_LED
MSCM 040h,0F0h,MSC_OPTO_DETECTOR
MSCM 030h,0F0h,MSC_OPTO_PATH
MSCM 020h,0F0h,MSC_MAT_STEPPED
MSCM 010h,0F0h,MSC_MAT_NOTPLUGGED
.word -1
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
MSC_BOARD_NOTPLUGGED:
IWINDOW 50,320,450,360
LDI COL_BLACK,RC
TEXTITT "BOARD NOT PLUGGED IN OR PAL NOT INSTALLED",70,330
RETS
MSC_MAT_STEPPED:
IWINDOW 50,320,450,360
LDI COL_BLACK,RC
TEXTITT "MAT STEPPED ON",70,330
CLRI AR2
LDP @991030h
LDI @991030h,R4
LDI *AR2,AR2
SETDP
RS 8,R4 ;right justify
TSTB 1,R4
BZ NM1
FILL 102,142,128,218,COL_RED
NM1 TSTB 2,R4
BZ NM2
FILL 32,232,128,278,COL_RED
NM2 TSTB 4,R4
BZ NM3
FILL 32,142,58,218,COL_RED
NM3 TSTB 8,R4
BZ NM4
FILL 32,82,128,118,COL_RED
NM4 RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
MSC_MAT_NOTPLUGGED:
IWINDOW 50,320,450,360
LDI COL_BLACK,RC
TEXTITT "MAT NOT PLUGGED IN",70,330
CLRI AR2
LDP @991030h
LDI @991030h,R4
LDI *AR2,AR2
SETDP
RS 8,R4 ;right justify
TSTB 1,R4
BZ NM1A
FILL 102,142,128,218,COL_RED
NM1A TSTB 2,R4
BZ NM2A
FILL 32,232,128,278,COL_RED
NM2A TSTB 4,R4
BZ NM3A
FILL 32,142,58,218,COL_RED
NM3A TSTB 8,R4
BZ NM4A
FILL 32,82,128,118,COL_RED
NM4A RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
MSC_OPTO_PATH:
IWINDOW 50,320,450,360
LDI COL_BLACK,RC
TEXTITT "OPTO PATH BROKEN",70,330
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
MSC_OPTO_LED:
IWINDOW 50,320,450,360
LDI COL_BLACK,RC
TEXTITT "OPTO LED NOT EMITTING",70,330
CLRI AR2
LDP @991030h
LDI @991030h,R4
LDI *AR2,AR2
SETDP
RS 8,R4 ;right justify
TSTB 1,R4
BZ NJ1
FILLW 150+32,212,16,16,COL_RED ;L1
NJ1 TSTB 2,R4
BZ NJ2
FILLW 150+57,232,16,16,COL_RED ;L2
NJ2 TSTB 4,R4
BZ NJ3
FILLW 150+87,232,16,16,COL_RED ;L3
NJ3 TSTB 8,R4
BZ NJ4
FILLW 150+112,212,16,16,COL_RED ;L4
NJ4
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
MSC_OPTO_DETECTOR:
IWINDOW 50,320,450,360
LDI COL_BLACK,RC
TEXTITT "OPTO DETECTOR NOT RECEIVING",70,330
CLRI AR2
LDP @991030h
LDI @991030h,R4
LDI *AR2,AR2
SETDP
RS 8,R4 ;right justify
TSTB 1,R4
BZ NJ1A
FILLW 150+32,112,16,16,COL_RED ;D1
NJ1A TSTB 2,R4
BZ NJ2A
FILLW 150+57,82,16,16,COL_RED ;D2
NJ2A TSTB 4,R4
BZ NJ3A
FILLW 150+87,82,16,16,COL_RED ;D3
NJ3A TSTB 8,R4
BZ NJ4A
FILLW 150+112,112,16,16,COL_RED ;D4
NJ4A
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
MSC_FAILSAFE_OK:
IWINDOW 50,320,450,360
LDI COL_BLACK,RC
TEXTITT "FAIL SAFE SWITCH ENGAGED",70,330
CLRI AR2
LDP @991030h
LDI @991030h,R4
LDI *AR2,AR2
SETDP
RS 8,R4 ;right justify
TSTB 4,R4
BZ NM4B
FILL 150+150+62,82,150+150+98,118,COL_RED
NM4B TSTB 1,R4
BZ NM1B
FILL 150+150+32,232,150+150+58,278,COL_RED
NM1B TSTB 2,R4
BZ NM2B
FILL 150+150+102,232,150+150+128,278,COL_RED
NM2B
RETS
MSC_FAILSAFE_NOTCONNECTED:
IWINDOW 50,320,450,360
LDI COL_BLACK,RC
TEXTITT "FAIL SAFE SWITCH NOT CONNECTED CORRECTLY",70,330
CLRI AR2
LDP @991030h
LDI @991030h,R4
LDI *AR2,AR2
SETDP
RS 8,R4 ;right justify
TSTB 4,R4
BZ NM4BA
FILL 150+150+62,82,150+150+98,118,COL_RED
NM4BA TSTB 1,R4
BZ NM1BA
FILL 150+150+32,232,150+150+58,278,COL_RED
NM1BA TSTB 2,R4
BZ NM2BA
FILL 150+150+102,232,150+150+128,278,COL_RED
NM2BA
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
DRAW_MOTION_SAFETY_DIAG:
LDI COL_BLACK,RC
TEXTITT "MATS:",50,50
TEXTITT "FRONT",55,72
TEXTITT "REAR",55,285
;MATS
RECT 30,80,130,120,COL_BLACK
RECT 30,140,60,220,COL_BLACK
RECT 100,140,130,220,COL_BLACK
RECT 30,230,130,280,COL_BLACK
LDI COL_BLACK,RC
TEXTITT "OPTOS:",150+50,50
TEXTITT "FRONT",150+55,72
TEXTITT "REAR",150+55,285
;LEDS
RECTW 150+30,110,20,20,COL_BLACK ;D1
RECTW 150+55,80,20,20,COL_BLACK ;D2
RECTW 150+85,80,20,20,COL_BLACK ;D3
RECTW 150+110,110,20,20,COL_BLACK ;D4
RECTW 150+30,210,20,20,COL_BLACK ;L1
RECTW 150+55,230,20,20,COL_BLACK ;L2
RECTW 150+85,230,20,20,COL_BLACK ;L3
RECTW 150+110,210,20,20,COL_BLACK ;L4
; RECT 150+30,80,150+130,120,COL_BLACK
; RECT 150+30,140,150+60,220,COL_BLACK
; RECT 150+100,140,150+130,220,COL_BLACK
; RECT 150+30,230,150+130,280,COL_BLACK
LDI COL_BLACK,RC
TEXTITT "FAILSAFE SWITCHES:",150+150,50
TEXTITT "FRONT",150+150+61,72
TEXTITT "REAR",150+150+65,285
;FAIL SAFE
RECT 150+150+60,80,150+150+100,120,COL_BLACK
RECT 150+150+30,230,150+150+60,280,COL_BLACK
RECT 150+150+100,230,150+150+130,280,COL_BLACK
LDI COL_BLACK,RC
TEXTITT "HIT ENTER TO ESCAPE",20,380
TEXTITT "MOTION SAFETY DIAGNOSTICS",30,20
TEXTITT "ERROR MESSAGE:",50,305
TEXTITT "MOTION STOP:",300,15
IWINDOW 50,320,450,360 ;error window
IWINDOW 390,5,430,35 ;motion
RETS
*----------------------------------------------------------------------------
CLEAR_MATS:
;MATS
FILL 32,82,128,118,0
FILL 32,142,58,218,0
FILL 102,142,128,218,0
FILL 32,232,128,278,0
;FAIL SAFE
FILL 150+150+62,82,150+150+98,118,0
FILL 150+150+32,232,150+150+58,278,0
FILL 150+150+102,232,150+150+128,278,0
;LED (LED)
FILLW 150+32,212,16,16,0 ;L1
FILLW 150+57,232,16,16,0 ;L2
FILLW 150+87,232,16,16,0 ;L3
FILLW 150+112,212,16,16,0 ;L4
;LED (DETECTOR)
FILLW 150+32,112,16,16,0 ;D1
FILLW 150+57,82,16,16,0 ;D2
FILLW 150+87,82,16,16,0 ;D3
FILLW 150+112,112,16,16,0 ;D4
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
*
*diagnostic routine to show motion safety condition
*
*
*
.bss OLD_MOTION_CODE,1
.globl MOTION_SAFETY_SWITCHES_DIAG
MOTION_SAFETY_SWITCHES_DIAG:
CALL SETUP_DIAG_SCREEN
CALL DRAW_MOTION_SAFETY_DIAG
CALL MOTION_CHECK_SAFETY_CODES
CLRI AR2
LDP @991030h
LDI @991030h,R0
LDI *AR2,AR2
SETDP
RS 7,R0
LS 16+7,R0
RS 16,R0
STI R0,@OLD_MOTION_CODE
MSSD_LP
NOT @_newbut,R0
AND SW_DIAG,R0
RETSNZ
CLRI AR2
LDP @991030h
LDI @991030h,R0
LDI *AR2,AR2
SETDP
TSTB 080h,R0
BZ MSOFF
FILL 400,10,420,30,COL_RED
BU MSFX
MSOFF FILL 400,10,420,30,0
MSFX
CLRI AR2
LDP @991030h
LDI @991030h,R0
LDI *AR2,AR2
SETDP
RS 7,R0
LS 16+7,R0
RS 16,R0
CMPI @OLD_MOTION_CODE,R0
BEQ MSSD_LP
STI R0,@OLD_MOTION_CODE
;
;binary debugging aid
;
FILL 300,305,500,315,0
.bss IBOIBOT,2
CLRI AR2
LDP @991030h
LDI @991030h,R2
LDI *AR2,AR2
SETDP
RS 8,R2
AND 0FFh,R2
LDL IBOIBOT,AR2
CALL HEX2ASC
LDI COL_BLACK,RC
LDI 300,R2
LDI 305,R3
CALL _outtextxyc
;end dbg
;
CALL MOTION_CHECK_SAFETY_CODES
BU MSSD_LP
RETS
*----------------------------------------------------------------------------
.include audits.asm
; .include motion.asm
.END