revolution-x/GXMENU.ASM

7669 lines
210 KiB
NASM
Raw Permalink Blame History

This file contains invisible Unicode characters!

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

.MLIB "GXMACS.LIB"
.FILE "GXMENU.ASM"
.TITLE "<<< GENERATION X - MENU ROUTINES >>>"
.WIDTH 132
.OPTION B,D,L,T
.MNOLIST
**************************************************************************
* *
* COPYRIGHT (C) 1992 MIDWAY MANUFACTURING COMPANY. *
* ALL RIGHTS RESERVED. *
* *
**************************************************************************
.INCLUDE "GX.INC"
.INCLUDE "GXSTRING.H"
.INCLUDE "GXDICT.H"
.INCLUDE "IMGTBL.GLO"
*SYMBOLS IN THIS MODULE
.DEF P_FORK, ROM_NAME, WAIT_BUT, DIAG, CPU_RET
.DEF ST_STICK, GETSTICK, MESS_MM, MENU_TOP, STD_BORD, B_MENU
.DEF BLNKHELP, COL_INST, H_SLAVE
.DEF CKDIAG, CKTEST, DIGSRT
.DEF SET_AVGWAVE, SCR_BOX_OBJ, SCR_REV_OBJ, MESS_TITLE
.DEF UHOH, BEEP_1, FORM_SWS, ANY_BUT
.DEF GET_PLAYS, LASTCOLOR
.DEF BLASTMESS, M_CALIBRATE, MESS_DRIVER, OCTO_AUDS
.GLOBAL TOP_BOX
.IF PRINTER
.DEF PRINTAUDTABLE
.DEF PRINTCOINTABLE
.ENDIF
*SYMBOLS IN AP.ASM
.REF DIPINIT, WIPEOUT, WARMSET
.REF SLEEP_SWITCHX
*SYMBOLS IN APCONTRL.ASM
.REF GO_DRIVER, GO_CALIBRATE, RECOIL_OFF
*SYMBOLS IN APCMOS.ASM
.REF DUMP_FS, DISPDUMP
.REF FORM_ADC, CMOS_VAL, FAC_SET, F_ADC_S, CLR_AUD
*SYMBOLS IN APUTIL.ASM
.REF FILLAREA
*SYMBOLS IN APMISC.ASM
.REF COLOR_START
*SYMBOLS IN APHSTD.ASM
.REF INIT_TB, INIT_HSR, ALL_TAB, WC_WORD, GET_HSC, WC_BYTEI
*SYMBOLS IN APADJ.ASM
.REF GO_ADJ, DO_ADJH, MEN_ADJ, CKDIP, GET_CSPT
*SYMBOLS IN APRAM.ASM
.REF GAME_STATE, VALIDATOR
*SYMBOLS IN APCOIN.ASM
.REF NO_CREDS, GAMEUNITS, CAT_A0, STRCAT
*SYMBOLS IN APDTST.ASM
.REF DIAGCPUTEST, BURNIN, READ_DIP
.IF PRINTER
*SYMBOLS IN APPRNT.ASM
.REF PRINTAUDS,PBADGUY
.ELSE
*SYMBOLS IN APDTST.ASM
.REF SWITCHTEST, CONV_PLOT, DIPTEST
.REF COLORBAR
.ENDIF
*SYMBOLS IN GXTEXT.ASM
.REF HEX_TO_ASCII_DEC
*SYMBOLS IN GXSND.ASM
.REF SOUND_RX
*
* MAIN_RET
*
* POSITIVE NUMBER HERE SAYS RETURN (UPWARD) TO MAIN MENU (GEN_MENU ONLY)
* NEGATIVE NUMBER HERE SAYS SETUP RESTORE AFTER RAM TEST. (GEN_MENU)
*
.BSS MAIN_RET,16 ;FLAG SAYS RETURN TO MAIN MENU
.BSS GMENULEV,16 ;HOW DEEP INTO GEN_MENU WE ARE
.BSS SND_MADE,16 ;SOUND TEST FLAG
.BSS NO_CLEAR,16 ;FLAG TELLS GET_MENU NOT TO CLEAR!
.BSS SCODE,16
.BSS DCODE,16
.BSS FAC_FLAG,16 ;FLAG SAYS CLEAR AUDITS AND HSTABLE
.BSS CHAROUT,16
.BSS BLINE,16
.BSS BCHAR,16
.BSS PTSIZE,16 ; BOGUS 15 PT FONT FLAG
.BSS UNUSED_WORD1,16 ;For alignment purposes
.BSS LAST_BUT,32
.BSS SWSET1,32
.BSS SWSET2,32
.BSS LASTCOLOR,32
.BSS _serial_number,32
.BSS _month,32
.BSS _day,32
.BSS _year,32
.BSS _volume_level,32
.bss _in_volume_adjust,32
.globl _cabinet_type
.bss _cabinet_type,32
.globl _in_driver_test
.bss _in_driver_test,32
.TEXT
.globl DIAG_UP, DIAG_DOWN, DIAG_ENTER, DIAG_ESCAPE
DIAG_UP:
.WORD 0F2FFH, 30, 083d4H, 0
DIAG_DOWN:
.WORD 0F2FFH, 30, 083d5H, 0
DIAG_ENTER:
.WORD 0F2FFH, 30, 083d6H, 0
DIAG_ESCAPE:
.WORD 0F2FFH, 30, 083d7H, 0
VOL_ADJUST_SOUND:
.WORD 0F0FFH, 30, 083e8H, 0
SOUNDS_OFF
.WORD 0F07FH, 1, 043e3H
.WORD 0F17FH, 1, 043e4H
.WORD 0F27FH, 1, 043e5H
.WORD 0F37FH, 1, 043e6H, 0
GET_VERSION_SOUND:
.WORD 0F0FFH, 1, 083e7H,0
;XUNIT START
READ_SW1_CNS:
move @SWITCH,a0
move @COINS,a14
sll 16,a14
movy a14,a0
RETS
READ_SW2_DIP:
move @SWITCH2,a0
move @DIPSWITCH,a14
sll 16,a14
movy a14,a0
RETS
**************************************************************************
* *
* READ_SW1_SW2 *
* *
* Combine the locations SWITCH and SWITCH2 into one *
* LONG word looking like this [SWITCH2,SWITCH] *
* *
**************************************************************************
READ_SW1_SW2
move @SWITCH,a0
move @SWITCH2,a14
sll 16,a14
movy a14,a0
RETS
;XUNIT END
.IF PRINTER
GO_PRINT
JAUC PRINTAUDS
.ENDIF
**************************************************************************
* *
* DIAG *
* *
* PROCESS STARTED WHEN DIAG SWITCH IS HIT *
* *
* ENTRY *
* NOTHING *
* *
* EXIT *
* WARMBOOTS THE PROCESSOR *
* *
**************************************************************************
DIAG
move @COINS,a14,L
not a14
btst 13,a14
janz SUCIDE
SOUNDON
MOVE @GAME_STATE,A0,W
CMPI INDIAG,A0
JAEQ SUCIDE
CMPI INAMODE,A0
JREQ DIAG_JUMP
CMPI INGAMEOV,A0
JREQ DIAG_JUMP
AUDIT AUDSTOCKINGS ;Click audit to show bogusness
DIAG_JUMP
SOUND1 SOUNDS_OFF
clr a14
move a14,@_in_volume_adjust,1
callr READ_DIP
andi 02000h,a0
jrz _x_cab
movk 1,a0
_x_cab:
move a0,@_cabinet_type,L
CLR A0
MOVE A0,@PTSIZE,W ;EVERYTHING IN 7PT
CALLR DIGSRT ;MAKE SURE WE'RE IN TEST MODE
.IF PRINTER
MOVK 8,A0
CALLA PBADGUY ;ENTERING TEST MODE
.ENDIF
CLR A0
MOVE A0,@MAIN_RET,W ;CLEAR THE FLOAT TO TOP FLAG.
MOVE A0,@GMENULEV,W ;INDICATE WE'RE AT LEVEL ZERO.
DIAG_RESTART
MOVI MEN_MAIN,A8
JSRP GEN_MENU ;PROCESS THIS MENU!
**************************************************************************
* *
* DIAG_EX *
* *
* DIAGNOSTIC EXIT *
* *
* ENTRY *
* NOTHING *
* *
* EXIT *
* NOTHING *
* *
**************************************************************************
DIAG_EX:
SLEEP 2
CALLA CLR_SCRN
CALLA CMOS_VAL ; VALIDATE THE CMOS
;Removed for momentary coin door test switch operation
; CALLA CKTEST
CALLA READ_DIP
ANDI DPTEST,A0
JRZ DE2
MOVI NOTCLOSEDDIP,A8
CALLA LM_SETUP
JSRP PRINTF
jruc DE3
DE2
CALLR READ_SW1_CNS ; XUNIT
NOT A0
ANDI 00100000H,A0
JAZ WARMSET
MOVI NOTCLOSEDJAMMA,A8
CALLA LM_SETUP
JSRP PRINTF
DE3
MOVI NOTCLOSEDWAIT,A8
CALLA LM_SETUP
JSRP PRINTF
CALLR READ_SW1_CNS ; XUNIT HANGOUT FOR A WHILE
ANDI 1E643030H,A0
MOVE A0,@SWSET1,L
CALLR READ_SW2_DIP ; XUNIT
ANDI 00003030H,A0
MOVE A0,@SWSET2,L
DE4
SLEEP 1 ;APPEASE THE MAIN LOOP
; CALLR CKTEST ;CHECK STATUS OF TEST SWITCH
CALLR READ_SW1_CNS ; XUNIT GOTTA SEE IF TIME TO LEAVE
MOVE @SWSET1,A1,L
MOVE A0,A3 ;SAVE A COPY AROUND
ANDI 1E643030H,A0
ANDI 1E643030H,A1
CMP A0,A1
JRNZ DE5
CALLR READ_SW2_DIP ; XUNIT
MOVE A0,A4 ;SAVE A COPY
MOVE @SWSET1,A2,L
ANDI 00003030H,A1
ANDI 00003030H,A3
CMP A1,A3
JRNZ DIAG_EX ; WELL ONE OF THEM IS OPEN NOW
MOVE @SWSET2,A1,L
ANDI DPTEST << 16,A1
ANDI DPTEST << 16,A4
CMP A1,A4
JRNZ DIAG_EX
JRUC DE4
DE5
; CALLR CKTEST ; ONE FINAL TIME ( STILL WRONG )
JRUC DIAG_JUMP
NOTCLOSEDDIP
MESS_MAC RD7FONT,SPACING07,200,50,COLOR_PRED,STRCNRM,0
.STRING W_DIPSWITCH," ",W_TEST," SELECT (U108 # 8) ",W_CLOSED,".",0
.EVEN
NOTCLOSEDJAMMA
MESS_MAC RD7FONT,SPACING07,200,70,COLOR_PRED,STRCNRM,0
.STRING W_COIN," DOOR ",W_TEST," ",W_SWITCH," ",W_CLOSED,".",0
.EVEN
NOTCLOSEDWAIT
MESS_MAC RD7FONT,SPACING07,200,120,COLOR_PRED,STRCNRM,0
.STRING "PRESS ANY ",W_BUTTON," TO ",W_RETURN," TO ",W_TEST," MODE\nOR"
.STRING "\nOPEN THE ",W_SWITCH,"(S) TO ",W_RETURN," TO ",W_GAME,".",0
.EVEN
**************************************************************************
* *
* DIGSRT *
* *
* THIS IS CALLED ON ENTRY TO DIAGNOSTICS. *
* *
**************************************************************************
DIGSRT
CALLR DIAG_STATE
CALLA WIPEOUT ;INITIALIZE THE OBJECT LIST
PAGEOFF ;MAKE SURE PAGE FLIPPING IS OFF
CALLA COLOR_START ;START UP THE COLOR PROCESSES
CALLA DIPINIT ;INITIALIZE WHAT WE CAN FROM THE DIPS
MOVK 1,A0
MOVE A0,@DISPLAYON,W ;WE NEED TO SEE THE STUFF JACK
movi DPYSTRT0,a14 ; XUNIT
move a14,@DPYST,L ; XUNIT
CALLA CLR_SCRN ;CLEAR THE SCREEN!
RETS
**************************************************************************
* *
* DIAG_STATE *
* *
* GET EVERYTHING SETUP/KILLED OFF FOR DIAG STATE *
* *
* ENTRY *
* NOTHING *
* *
* EXIT *
* NOTHING *
* *
**************************************************************************
DIAG_STATE
CLR A1
CALLA KILALL ;KILL ABSOLUTELY EVERYONE!
CALLA RECOIL_OFF ;TURN THE GUN RECOILS OFF
MOVI PID_DIAG,A1 ;SET OUR ID TO DIAGNOSTICS MAN
MOVE A1,*A13(PROCID),W ;PASS OUR ID TO FORKED PROCESS
MOVI INDIAG,A0
MOVE A0,@GAME_STATE,W ;PUT US IN TEST MODE!
RETS
**************************************************************************
* *
* GO_DIAG *
* *
* ENTER THE DIAGNOSTICS MENU *
* *
**************************************************************************
.IF PRINTER
.ELSE
GO_DIAG
MOVI MEN_DIAG,A8 ;PUT UP THE MENU AND GO!
JAUC GEN_MENU ;THIS WILL RETURN TO LEVEL ABOVE US!
GO_SWITCH
MMTM SP,A12,A13
DISPOFF
CALLA CLR_SCRN
CALLA SWITCHTEST
CLRM @TIMER,W
SOUND1 DIAG_ESCAPE
MMFM SP,A12,A13
DIAG_RESTORE
CALLA CLRDMAQ
CALLA MYOINIT
DISPON
CALLA CLR_SCRN
RETP
GO_DIP
MMTM SP,A12,A13
DISPOFF
CALLA CLR_SCRN
MOVKM 1,@_in_volume_adjust,L
CALLA DIPTEST
CLRM @_in_volume_adjust,L
CLRM @TIMER,W
SOUND1 DIAG_ESCAPE
CALLA DIPINIT
MMFM SP,A12,A13
JRUC DIAG_RESTORE
.ENDIF
GO_CPU
DISPOFF
JAUC DIAGCPUTEST
GO_BURN
DISPOFF
JAUC BURNIN
CPU_RET
CLR A0
MOVE A0,@GMENULEV,W ;INDICATE WE'RE AT LEVEL ZERO.
.IF PRINTER
.ELSE
MOVI RTR_LEV,A0 ;THIS IS THE LEVEL TO DIVE TO
NEG A0 ;NEGATE IT AS FLAG TO DIVE.
MOVE A0,@MAIN_RET,W ;INDICATE
.ENDIF
PAGEOFF ;MAKE SURE PAGE FLIPPING IS OFF
JAUC DIAG_RESTART ;NOW START IT UP....
.IF PRINTER
.ELSE
GO_CONV
MMTM SP,A12,A13
DISPOFF
CALLA CLR_SCRN
CALLA CONV_PLOT
; SOUND1 DIAG_ESCAPE
MMFM SP,A12,A13
JSRP WAIT_BUT ;NOW WAIT FOR ANY BUTTON!
JRUC DIAG_RESTORE
GO_BARS
MMTM SP,A12,A13
DISPOFF
CALLA CLR_SCRN
CALLA COLORBAR
; SOUND1 DIAG_ESCAPE
MMFM SP,A12,A13
JSRP WAIT_BUT ;NOW WAIT FOR ANY BUTTON!
JRUC DIAG_RESTORE
.ENDIF
**************************************************************************
* *
* OPERATOR MESSAGE ENTRY *
* *
**************************************************************************
OP_LINE_CHAR EQU PDATA
OP_LINE_LINE EQU PDATA+WORD_SIZE
OP_LETS EQU OP_LINE_LINE+WORD_SIZE
OP_STIME EQU OP_LETS+(30 * BYTE_SIZE)
OP_SVAL EQU OP_STIME+WORD_SIZE
LET_DIST_X EQU 25
LET_DIST_Y EQU 20
LET_BOX_CX EQU 6
LET_BOX_CY EQU 3
LET_BOX_WX EQU 3
LET_BOX_WY EQU 1
LET_START_Y1 EQU 175
LET_START_Y2 EQU LET_START_Y1+LET_DIST_Y
LET_START_Y3 EQU LET_START_Y2+LET_DIST_Y
LET_START_Y4 EQU LET_START_Y3+LET_DIST_Y
LET_INST1 EQU 60
LET_START_X EQU 15
LET_LINE_MAX EQU 3
LET_CHAR_MAX EQU 14
LET_TEXT_GAP EQU 11
LET_TEXT1 EQU 120
LET_TEXT2 EQU LET_TEXT1+LET_TEXT_GAP
LET_TEXT3 EQU LET_TEXT2+LET_TEXT_GAP
OP_MAX_CHARS EQU CMESS_CHARS
.IF 0 ;OPERATOR MESSAGE TAKEN OUT
DO_OPMESS:
CALLA CLR_SCRN
MOVI M_SET_OMESS,A8 ;SET OPERATOR MESSAGE...ARE YOU SURE
MOVI OPGOFORIT,A9 ;GEORGE'S ENTRY POINT
MOVI NULL_ST,A10 ;THIS WILL NEVER BE SEEN!
JAUC AREUSURE ;ASK EM.
OPGOFORIT
.IF PRINTER
MOVK 1,A0
CALLA PBADGUY
.ENDIF
CALLA CLR_SCRN
MOVI U_OPMESS,A2
MOVI COLOR_YELLOW,A3
JSRP TOP_BOX ; KICK OUT TOP BOX
MOVI OMINST1,A8
CALLA LM_SETUP
JSRP PRINTF
CLR A8 ; DO THE THREE ROWS OF LETTERS
MOVI 0FFH,A10
CALLR OPPLOTLINE
MOVK 1,A8
MOVI 0FFH,A10
CALLR OPPLOTLINE
MOVK 2,A8
MOVI 0FFH,A10
CALLR OPPLOTLINE
MOVK 3,A8
MOVI 0FFH,A10
CALLR OPPLOTLINE
CLR A0
MOVE A0,@BLINE,W
MOVE A0,@BCHAR,W
CLR A8
MOVE A8,*A13(OP_LINE_LINE),W ; ON THE FIRST LINE
CALLR OMSTARTLINE ; INITIALIZE ALL THE FLAGS FOR IT
CLR A10
MOVK 1,A11
CALLR BOXCHAR ; BOX INITIAL ONE
MOVK 1,A11
CALLR OMPLOTTEXT
;
; LOOP FOR STICK AND THINGS
;
CLR A0
MOVE A0,*A13(OP_SVAL),W
MOVE A0,*A13(OP_STIME),W
DOLOOP
SLEEP 1
CALLR OPGETSTICK ; CHECK OUT THE PLAYER BOARD
MOVE A0,A0
JRNZ DO1 ; BR = GOT SOMETHING
MOVE A0,*A13(OP_SVAL),W ; CLEAR TIMER AND DIRECTION
MOVE A0,*A13(OP_STIME),W
JRUC DOLOOP
DO1
MOVE *A13(OP_SVAL),A1,W ; GET LAST DIRECTION
ANDI 7,A1 ; MASK OFF REPEAT BIT
CMP A0,A1
JRZ DO2 ; BR = YES, STILL SAME THING
MOVE A0,*A13(OP_SVAL),W
CLR A1
MOVE A1,*A13(OP_STIME),W ; CLEAR THE TIMER
JRUC DODONE ; PROCESS INITIAL HIT
DO2
MOVE *A13(OP_SVAL),A1,W ; SNAG THE REPEAT BIT
ANDI 80H,A1
JRNZ DO3 ; BR = IN REPEAT MODE
MOVE *A13(OP_STIME),A0,W ; GET TIMER
INC A0
MOVE A0,*A13(OP_STIME),W
CMPI 15,A0
JRLO DOLOOP ; GO BACK TO SLEEP
CLR A0
MOVE A0,*A13(OP_STIME),W ; CLEAR OUT THE TIMER
MOVE *A13(OP_SVAL),A1,W
MOVE A1,A0
ORI 80H,A1 ; PUT UPPER BIT ON
MOVE A1,*A13(OP_SVAL),W ; SET DIRECTION WITH REPEAT ON
JRUC DODONE
DO3
MOVE *A13(OP_STIME),A0,W ; GET TIMER
INC A0
MOVE A0,*A13(OP_STIME),W
CMPI 5,A0
JRLO DOLOOP ; GO BACK TO SLEEP
CLR A0
MOVE A0,*A13(OP_STIME),W ; CLEAR OUT THE TIMER
MOVE *A13(OP_SVAL),A0,W
ANDI 7H,A0 ; TURN OFF REPEAT BIT
DODONE
MOVE *A13(OP_SVAL),A1,W ;GET CURRENT ENTRY...IN A1
ANDI 7,A1
MOVE @BLINE,A8,W
MOVE @BCHAR,A10,W
CLR A11
CALLR BOXCHAR ; UNHIGHLIGHT IT
CMPI 1,A1 ; CHECK UP
JRNZ DOC1
DEC A8
JRUC DOPROC
DOC1
CMPI 2,A1
JRNZ DOC2
INC A8
JRUC DOPROC
DOC2
CMPI 3,A1
JRNZ DOC3
DEC A10
JRUC DOPROC
DOC3
CMPI 4,A1
JRNZ DOC4
INC A10
JRUC DOPROC
DOC4
CMPI 5,A1 ; DRAW BUTTON
JRNZ DOCCLR ; WOOF WOOF
CALLR OMADDCHAR ; ADD THE CHAR IN A8/A10
CMPI 0FFH,A8 ; CHECK TO SEE IF DONE WITH ALL
JRZ DOCEND
MOVE @BLINE,A8,W
MOVE @BCHAR,A10,W
MOVK 1,A11
CALLR BOXCHAR ; TURN THE BOX BACK ON
JRUC DOLOOP
DOCCLR
CMPI 6,A1 ; START BUTTON
JRNZ DOLOOP
CLR A7
MOVE A7,*A13(OP_LINE_LINE),W
MOVE A7,*A13(OP_LETS),L
CALLR OMSTORECMOS
MOVK 1,A7
MOVE A7,*A13(OP_LINE_LINE),W
CALLR OMSTORECMOS
MOVK 2,A7
MOVE A7,*A13(OP_LINE_LINE),W
CALLR OMSTORECMOS
CALLR BLASTMESS
JRUC DOCCLEAR
;
; CHECK A8 ( BLINE ) AND A10 ( BCHAR ) FOR BOUNDARY STUFF
;
DOPROC
MOVE A8,A8
JRNN DOC5
CLR A8
JRUC DOC6
DOC5
CMPI LET_LINE_MAX,A8
JRLE DOC6
MOVI LET_LINE_MAX,A8
DOC6
MOVE A10,A10
JRNN DOC7
CLR A10
JRUC DOC8
DOC7
CMPI LET_CHAR_MAX,A10
JRLE DOC8
MOVI LET_CHAR_MAX,A10
DOC8
MOVE A8,@BLINE,W
MOVE A10,@BCHAR,W
MOVK 1,A11
CALLR BOXCHAR
JRUC DOLOOP
;
; HERE IS WHERE ONE COMES WHEN DONE ENTERING THE MESSAGE -- ALREADY
; STORED IN CMOS, TOO
;
DOCEND
SLEEP 2 ; GET EVERYBODY CAUGHT UP
CALLA CLR_SCRN ;CLEAR THE SCREEN
MOVI MESS_SUCCESS,A8 ;THIS IS SUCCESS MESSAGE
JSRP SUR_MESS ;PRINT THE MESSAGE
RETP
DOCCLEAR
SLEEP 2
CALLA CLR_SCRN
MOVI MESS_CLEARED,A8
JSRP SUR_MESS
RETP
MESS_SUCCESS
.STRING W_MESSAGE," STORED",0
.EVEN
MESS_CLEARED
.STRING W_MESSAGE," ",W_CLEAR,"ED",0
.EVEN
.ENDIF
BLASTMESS:
CALLA CMOSUNLOCK
;XUNIT CALLA ADJ_PAGE ; GUY ENTERETED A WHOLE MESSAGE
CLR A0
MOVI VALID_CUSTOM,A7
CALLA WC_WORD
CALLA CMOSLOCK
CALLA F_ADC_S ; FIX UP THE CHECKSUM
RETS
.IF 0
**************************************************************************
* *
* OPGETSTICK *
* *
**************************************************************************
OPGETSTICK
MMTM SP,A1
CALLR READ_SW1_CNS ; XUNIT
NOT A0
MOVE A0,A2
ANDI 00040030H,A0 ; P1 START/BOMB/FIRE
MOVE A2,A1
ANDI 00203000H,A1 ; P2 START/BOMB/FIRE
SRL 8,A1
OR A1,A0
BTST 18,A0 ;PLAYER 1 START IS UP
JRZ OG2
MOVK 1,A0
JRUC OGRET
OG2
BTST 13,A0 ;PLAYER 2 START IS DOWN
JRZ OG3
MOVK 2,A0
JRUC OGRET
OG3
**** MOVE A0,A1
**** ANDI 04H,A1
**** JRZ OG4
**** MOVK 3,A0
**** JRUC OGRET
****OG4
**** MOVE A0,A1
**** ANDI 08H,A1
**** JRZ OG5
**** MOVK 4,A0
**** JRUC OGRET
OG5
BTST P1TRIGGER,A0
JRZ OG6
MOVK 5,A0
JRUC OGRET
OG6
BTST P1BOMB,A0
JRZ OG7
MOVK 6,A0
JRUC OGRET
OG7
CLR A0
OGRET
MMFM SP,A1
RETS
**************************************************************************
* *
* OMSTARTLINE *
* *
* SETUP THINGS FOR A NEW LINE OF TEXT *
* *
* ENTRY *
* NOTHING *
* *
* EXIT *
* NOTHING *
* *
**************************************************************************
OMSTARTLINE:
PUSH A0
CLR A0
MOVE A0,*A13(OP_LETS),W
MOVE A0,*A13(OP_LINE_CHAR),W
PULL A0
RETS
**************************************************************************
* *
* OMPLOTTEXT *
* *
* PLOT OUT A LINE OF TEXT ON THE SCREEN *
* *
* ENTRY *
* NOTHING ( WELL, ALMOST ) *
* *
* EXIT *
* NOTHING *
* *
**************************************************************************
OMPLOTTEXT:
MMTM SP,A8,A10,A11
PUSH A11
MOVI OMTSETUP,A8
CALLA LM_SETUP
MOVE A13,A8
ADDI OP_LETS,A8
MOVE *A13(OP_LINE_LINE),A9,W
SLL 5,A9
ADDI OMLOC,A9
MOVE *A9,A9,L
SLL 16,A9
MMTM SP,A3,A4,A9
MOVE A9,A3
SUBI 20000H,A3
MOVI [LET_TEXT_GAP+2,394],A4
CALLA BLNKAREA
MMFM SP,A3,A4,A9
ADDI 200,A9
JSRP PRINTF
PULL A5
MOVE A5,A5 ; FLAG FOR UNDERSCORE OR NOT
JRZ NOUNDER
MOVI COLOR_PLF,A5
MOVI OMUNDERSCORE,A8
ADDI 5,A9 ; SHIFT THE LITTLE GUY OVER
JSRP PRINTF
NOUNDER
MMFM SP,A8,A10,A11
RETS
**************************************************************************
* *
* OMADDCHAR *
* *
* ADD THE CHARACTER POINTED TO BY A8/A10 *
* *
* ENTRY *
* A8 LINE *
* A10 CHAR ON LINE *
* *
* EXIT *
* NOTHING *
* *
**************************************************************************
OMADDCHAR:
MMTM SP,A8,A10
MOVE A8,A0
SLL 16,A0
ADD A10,A0
CMPI [3,13],A0 ; RUB
JRNZ OMAC1
MOVE *A13(OP_LINE_CHAR),A1,W
JRZ OMACRET
DEC A1
MOVE A1,*A13(OP_LINE_CHAR),W
MOVE A1,A2
CLR A0
JRUC RUBENT
OMAC1
CMPI [3,14],A0 ; CR
JRNZ OMAC2
CLR A11
CALLR OMPLOTTEXT ; GET RID OF THE FLASHING UNDERSCORE
CLR A0
MOVE A0,@BLINE,W
MOVE A0,@BCHAR,W
CALLR OMSTORECMOS ; WELL, BABY -- STORE IT
MOVE *A13(OP_LINE_LINE),A8,W ; GRAB THE LINE
CMPI 2,A8
JRHS OMADONE
INC A8
MOVE A8,*A13(OP_LINE_LINE),W ; ON THE FIRST LINE
CALLR OMSTARTLINE ; INITIALIZE ALL THE FLAGS FOR IT
MOVK 1,A11
CALLR OMPLOTTEXT
JRUC OMACRET
;
; HERE IS JUST ENTER A NORMAL CHARACTER --
;
; A8 = LINE
; A10 = CHARACTER
;
OMAC2
SLL 5,A8
ADDI OLTAB,A8 ; GET TABLE BASE ADDRESS
MOVE *A8,A8,L
SLL 3,A10
ADD A10,A8 ; CHAR OFFSET
MOVB *A8,A0 ; SNAG THE CHAR
MOVE *A13(OP_LINE_CHAR),A1,W
MOVE A1,A2
CMPI OP_MAX_CHARS,A1
JRHS OMACMAX
INC A1
MOVE A1,*A13(OP_LINE_CHAR),W
RUBENT
CMPI 7EH,A0 ; CHECK FOR THE SPACE CHARACTER
JRNZ OMNOTSPACE
MOVI 20H,A0
OMNOTSPACE
MOVE A13,A8
ADDI OP_LETS,A8
SLL 3,A2
ADD A2,A8 ; OFFSET INTO LOCAL STORAGE
MOVB A0,*A8
ADDK 8,A8
CLR A0
MOVB A0,*A8 ; MAKE SURE ZERO TERMINATED
MOVK 1,A11
CALLR OMPLOTTEXT
OMACRET
MMFM SP,A8,A10
RETS
OMADONE ; COME HERE WHEN REALLY DONE
CALLA CMOSUNLOCK
;XUNIT CALLA ADJ_PAGE ; GUY ENTERETED A WHOLE MESSAGE
MOVI VALID_CUSTOM,A7
MOVI VALID_VALUE,A0
CALLA WC_WORD
CALLA CMOSLOCK
CALLA F_ADC_S ; FIX UP THE CHECKSUM
MMFM SP,A8,A10
MOVI 0FFH,A8 ; FLAG DONE WITH EVERYTHING
RETS
OMACMAX
MMFM SP,A8,A10 ; LIKE TOTALLY GROSS, MAN...
CLR A11
CALLR BOXCHAR
MOVK 3,A8
MOVK 14,A10
MOVE A8,@BLINE,W
MOVE A10,@BCHAR,W
RETS
**************************************************************************
* *
* OMSTORECMOS *
* *
* STORE THE MESSAGE IN CMOS *
* *
* ENTRY *
* NOTHING *
* *
* EXIT *
* NOTHING *
* *
**************************************************************************
OMSTORECMOS:
CALLA CMOSUNLOCK
;XUNIT CALLA ADJ_PAGE ; POINT AT ADJUSTMENTS PAGE
MOVE *A13(OP_LINE_LINE),A7,W
MOVI CMESS_LINE_SIZE,A6
MPYU A6,A7 ; OFFSET ME, BABY
ADDI CUSTOM_MESSAGE,A7 ; A7 IS CMOS LOCATION
MOVE A13,A6
ADDI OP_LETS,A6 ; A6 IS THE PROCESS BLOCK LOC
MOVI CMESS_CHARS,A5 ; CHARS/LINE
CMOS_LOOP
MOVB *A6,A0 ;FETCH A CHARACTER
ANDI BYTE_MASK,A0
CALLA WC_BYTEI ;WRITE A BYTE
ADDI BYTE_SIZE,A6 ;POINT AT NEXT BYTE
DSJS A5,CMOS_LOOP
CALLA CMOSLOCK
CALLA F_ADC_S ;REFRESH CHECKSUM
RETS
OMLOC .LONG LET_TEXT1, LET_TEXT2, LET_TEXT3
**************************************************************************
* *
* BOXCHAR *
* *
* ENTRY *
* A8 WHICH LINE ( 0 - 2 ) *
* A10 CHARACTER ON LINE *
* A11 COLOR TO USE ( 0 = BLACK, 1 = LASER FLASH ) *
* *
* EXIT *
* NOTHING *
* *
**************************************************************************
BOXCHAR:
MMTM SP,A1,A8,A10
MOVI LET_DIST_Y,A1
MPYU A8,A1 ; DISTANCE
ADDI LET_START_Y1-LET_BOX_CY,A1
SLL 16,A1
MOVE A1,A4
MOVI LET_DIST_X,A1
MPYU A10,A1
ADDI LET_START_X-LET_BOX_CX,A1
MOVX A1,A4 ; UPPER LEFT IN A4
MOVE A4,A5
MOVI [LET_DIST_Y+LET_BOX_WY,LET_DIST_X+LET_BOX_WX],A0
ADDXY A0,A5 ; LOWER RIGHT IN A5
MOVI [1,1],A0 ; BORDER HEIGHT,WIDTH
MOVI COLOR_BLACK,A9 ; DOBORDER IS RETARDED
MOVE A11,A11
JRZ BC1
MOVI COLOR_LF,A9
BC1
CALLR DOBORDER
MOVE A11,A11
JRNZ BC2
MOVI 0FFH,A10
BC2
CALLR OPPLOTLINE
MMFM SP,A1,A8,A10
RETS
**************************************************************************
* *
* OPPLOTLINE *
* *
* PLOT OUT A LINE OF CHARACTERS *
* *
* ENTRY *
* A8 TABLE NUMBER *
* A10 WHICH CHARACTER TO HIGHLIGHT *
* *
* EXIT *
* NOTHING *
* *
**************************************************************************
OPPLOTLINE:
MMTM SP,A8,A9,A10,A11
MOVE A8,A9
SLL 5,A8
ADDI OLTAB,A8
MOVE *A8,A8,L
SLL 4,A9
ADDI OLYTAB,A9
MOVE *A9,A9,W
SLL 16,A9 ; GET IN THE Y POSITION
ADDI LET_START_X,A9
OPLLOOP
MOVB *A8,A0 ; GRAB CHAR NUMBER
MOVE A0,A0
JRZ OPLRET
MOVE A0,@CHAROUT,W
PUSH A8
PUSH A9
PUSH A10
PUSH A9
MOVI COLOR_PRED,A5 ; COLOR
MOVE A10,A10
JRNZ OPL1
MOVI COLOR_PLF,A5
OPL1
PUSH A5
MOVI OP_MESS,A8
CALLA LM_SETUP
PULL A5 ; COLOR
PULL A9 ; SET THE POSITION OF THE CHAR
JSRP PRINTF
PULL A10
DEC A10
PULL A9
PULL A8
ADDK 8,A8
ADDI LET_DIST_X,A9
JRUC OPLLOOP
OPLRET
MMFM SP,A8,A9,A10,A11
RETS
OP_MESS:
MESS_MAC RD15FONT,1,200,95,COLOR_PRED,STRLNRM,0
.STRING "%c",0
.LONG CHAROUT
.EVEN
OLTAB .LONG OL1TAB, OL2TAB, OL3TAB, OL4TAB
OLYTAB .WORD LET_START_Y1, LET_START_Y2, LET_START_Y3, LET_START_Y4
OL1TAB .BYTE 41H, 42H, 43H, 44H, 45H, 46H, 47H, 48H, 49H, 31H, 32H, 33H
.BYTE 3FH, 21H, 22H
.BYTE 00
OL2TAB .BYTE 4AH, 4BH, 4CH, 4DH, 4EH, 4FH, 50H, 51H, 52H, 34H, 35H, 36H
.BYTE 28H, 29H, 2AH
.BYTE 00
OL3TAB .BYTE 53H, 54H, 55H, 56H, 57H, 58H, 59H, 5AH, 7EH, 37H, 38H, 39H
.BYTE 30H, 3AH, 3BH
.BYTE 00
OL4TAB .BYTE 23H, 24H, 20H, 26H, 27H
.BYTE 2BH, 2CH, 2DH, 2EH, 2FH
.BYTE 3DH, 82H, 7EH, 7FH, 83H
.BYTE 00
OMINST1:
MESS_MAC RD7FONT,SPACING07,200,LET_INST1,COLOR_PWHITE,STRCNRM,0
.STRING "USE ",W_PLAYER," 1 CONTROLS TO ENTER A ",W_MESSAGE
.STRING "\nOF UP TO 3 LINES OF 25 LETTERS."
.STRING "\n\b",W_SELECT," CR TO END EACH LINE."
.STRING "\nPRESS \b",W_PLAYER," 1 ",W_START," \bTO ",W_CLEAR," OUT ",W_MESSAGE,"."
.BYTE 0
.WORD COLOR_YELLOW
.WORD COLOR_RED
.WORD COLOR_YELLOW
.WORD COLOR_RED
.WORD COLOR_YELLOW
.EVEN
OMTSETUP
MESS_MAC RD7FONT,SPACING07,200,LET_INST1,COLOR_PBLUE,STRCNRM,0
.EVEN
OMUNDERSCORE
.STRING "-",0
.EVEN
.ENDIF
**************************************************************************
* *
* SOUND SYSTEM TEST *
* *
**************************************************************************
TO_SD_BD EQU 0
TO_Y_BD EQU 3 ;A5 FOR SNDSND
TEST_YAM EQU 0F2H ;A3 GETS CODE
TEST_DAC EQU 0F2H
**************************************************************************
* *
* GO_STEST *
* *
* SETUP THE MENU FOR THE SOUND TEST *
* *
* ENTRY *
* NOTHING *
* *
* EXIT *
* NOTHING *
* *
**************************************************************************
GO_STEST CLR A0
MOVE A0,@SCODE,W ;NO "CURRENT" SYNTH YET
MOVE A0,@DCODE,W ;NO "CURRENT" DIG YET
MOVI MEN_STEST,A8 ;PUT UP THE MENU AND GO!
JAUC GEN_MENU ;THIS WILL RETURN TO LEVEL ABOVE US!
**************************************************************************
* *
* SEND_YAM *
* *
* SEND A CODE PASSED IN A3 OUT TO THE YAMAMAHA *
* *
* ENTRY *
* A3 CODE *
* *
* EXIT *
* NOTHING *
* *
**************************************************************************
SEND_YAM
mmtm sp,a0
move @SCODE,a0,W
sll 6,a0
addi SCTAB,a0
calla ONESND
mmfm sp,a0
rets
**************************************************************************
* *
* SHUT_UP *
* *
* TELL THE SOUND BOARD TO GET SCREWED *
* *
* ENTRY *
* NOTHING *
* *
* EXIT *
* NOTHING *
* *
**************************************************************************
SHUT_UP
MOVI SND_ALLOFF,A0 ;TURN OFF SOUNDS
CALLA ONESND
SLEEP 1
RETP
INC_IF_NEC
MOVE A3,A3 ;IF ITS ZERO...KICK IT!
JRZ INC_IT
; MOVE @LAST_BUT,A0,L ;SEE WHICH BUTTON
; CMPI 2,A0
JRNZ NO_INC ;THEN USE SAME CODE
INC_IT
INC A3
NO_INC
RETS
SCTAB
.WORD 0F080H, 1, 08000H, 0
.WORD 0F080H, 1, 08001H, 0
.WORD 0F080H, 1, 08005H, 0
.WORD 0F080H, 1, 08006H, 0
.WORD 0F080H, 1, 0800dH, 0
.WORD 0F080H, 1, 08011H, 0
.WORD 0F080H, 1, 08018H, 0
.WORD 0F080H, 1, 08019H, 0
.WORD 0F080H, 1, 0801aH, 0
.WORD 0F180H, 1, 084abH, 0
.WORD 0F180H, 1, 084aeH, 0
.WORD 0F180H, 1, 08100H, 0
.WORD 0F180H, 1, 08103H, 0
.WORD 0F180H, 1, 08106H, 0
.WORD 0F180H, 1, 0812dH, 0
.WORD 0F180H, 1, 0813cH, 0
.WORD 0F080H, 1, 08145H, 0
.WORD 0F080H, 1, 0814eH, 0
.WORD 0F080H, 1, 08161H, 0
.WORD 0F080H, 1, 08167H, 0
.WORD 0F080H, 1, 0816bH, 0
.WORD 0F080H, 1, 08174H, 0
.WORD 0F080H, 1, 0817dH, 0
.WORD 0F080H, 1, 081b9H, 0
.WORD 0F080H, 1, 081d5H, 0
.WORD 0F080H, 1, 081d8H, 0
.WORD 0F080H, 1, 08200H, 0
.WORD 0F080H, 1, 0820aH, 0
.WORD 0F080H, 1, 08213H, 0
.WORD 0F080H, 1, 08219H, 0
.WORD 0F080H, 1, 08231H, 0
.WORD 0F080H, 1, 08232H, 0
.WORD 0F080H, 1, 08252H, 0
.WORD 0F080H, 1, 08281H, 0
.WORD 0F080H, 1, 08282H, 0
.WORD 0F080H, 1, 08287H, 0
.WORD 0F080H, 1, 0828dH, 0
.WORD 0F080H, 1, 0829bH, 0
.WORD 0F080H, 1, 082a7H, 0
.WORD 0F080H, 1, 082c1H, 0
.WORD 0F080H, 1, 08313H, 0
.WORD 0F080H, 1, 0832cH, 0
.WORD 0F080H, 1, 08336H, 0
.WORD 0F080H, 1, 08339H, 0
.WORD 0F080H, 1, 0833fH, 0
.WORD 0F080H, 1, 08366H, 0
.WORD 0F080H, 1, 08368H, 0
.WORD 0F080H, 1, 083a5H, 0
.WORD 0F080H, 1, 08806H, 0
.WORD 0F080H, 1, 08812H, 0
.WORD 0F080H, 1, 08815H, 0
.WORD 0F080H, 1, 08820H, 0
.WORD 0F080H, 1, 0882fH, 0
.WORD 0F080H, 1, 08832H, 0
.WORD 0F080H, 1, 08835H, 0
.WORD 0F080H, 1, 08838H, 0
.WORD 0F080H, 1, 0883cH, 0
.WORD 0F080H, 1, 08843H, 0
;LAST_SCODE EQU ($-SCTAB)/WORD_SIZE
LAST_SCODE EQU (($-SCTAB)/(WORD_SIZE*4))-1
.EVEN
**************************************************************************
* *
* GO_DIGT *
* *
* SETUP A GENERIC SOUND BOARD TEST *
* *
* ENTRY *
* NOTHING *
* *
* EXIT *
* NOTHING *
* *
**************************************************************************
GO_DIGT
CALLA QSNDRST ;RESET IN CASE CRASHED!
SLEEP 4 ;LET IT GO A SEC!
CALLA CLR_SCRN
MOVI M_DIGT,A2
MOVI COLOR_GREEN,A3
JSRP TOP_BOX ;PRINT TITLE BOX.
; CALLA SURE_BOX ;PUT A NICE BOX UP!
SOUND_IRQ_CONNECTED
SOUND_DONGER
clr a8
move a8,@SOUND_RX,W
CALLA SNDRES ;RESET TO GET THE DINGS
movi SOUND_WAIT_MESS,a8
CALLA LM_SETUP
JSRP PRINTF
movi 25,a2
move a2,@_serial_number,L
_sound_diag_loop:
SLEEP 16 ;6.4 Seconds
move @SOUND_RX,a8,W
jrnz snd_response
move @_serial_number,a2,L
dec a2
move a2,@_serial_number,L
jrnz _sound_diag_loop
jruc no_response
snd_response:
SLEEP 10
move @SOUND_RX,a8,W
andi 0ffh,a8
subi 1,a8
sll 5,a8
addi SOUNDTEST_MSGS,a8
move *a8,a8,L
CALLA LM_SETUP
JSRP PRINTF
SLEEP 5
CALLA SET_VOLUME
SLEEP 30
movi -1,a8
; clr a8
move a8,@SOUND_RX,W
SOUND1 GET_VERSION_SOUND
movi 10,a2
move a2,@_serial_number,L
_release_loop:
SLEEP 20
move @SOUND_RX,a8,W
cmpi -1,a8
jrnz _got_release
move @_serial_number,a2,L
dec a2
move a2,@_serial_number,L
jrnz _release_loop
jruc no_release
_got_release:
move a8,a2
srl 4,a2
andi 0fh,a2
CMPK 0dh,a2
JRNE _release_prompt
andi 0fh,a8
move a8,@_serial_number,L
movi SNDPROTO_NUM_PROMPT,a8
CALLA LM_SETUP
JSRP PRINTF
jruc snd_diag_done
_release_prompt:
andi 0fh,a8
move a8,@_serial_number,L
movi SNDRELEASE_NUM_PROMPT,a8
CALLA LM_SETUP
JSRP PRINTF
jruc snd_diag_done
no_release:
movi SOUND_NOREL_MESS,a8,L
CALLA LM_SETUP
JSRP PRINTF
jruc snd_diag_done
no_response:
movi SOUND_NORESP_MESS,a8,L
CALLA LM_SETUP
JSRP PRINTF
snd_diag_done:
; MOVI SOUND_TEST_RESULTS ;Test Results String
; CALLA LM_SETUP
; JSRP PRINTF
; MOVI DAC_ERR,A8
; JSRP L_MESS ;PRINT ERROR
movi SOUNDS_OFF,a0
calla ONESND
SOUNDON
JAUC ANY_BUT ;AND TELL EM ANY BUTTON TO CONTINUE
**************************************************************************
* *
* GO_SYNP *
* *
* THIS IS THE "PLAY SYNTHESIZER" CODE. *
* *
* GET THE NEXT CODE...SEND IT TO THE YAMAHA AND *
* DISPLAY THE CORRESPONDING TITLE. *
* *
**************************************************************************
GO_SYNP
movk 2,a0
move a0,@_in_volume_adjust,1
movi SOUNDS_OFF,a0
calla ONESND
MOVE @SCODE,A3,W ;GET THE NEXT CODE
CALLR INC_IF_NEC
CMPI LAST_SCODE,A3 ;HAVE WE HIT THE LAST CODE?
JRLS GO_SYNP1 ;BR = NO
MOVK 1,A3 ;RESET SOUND LIST
GO_SYNP1
MOVE A3,@SCODE,W ;STORE CURRENT CODE COUNTER
CALLR SEND_YAM
MOVK 1,A0
MOVE A0,@NO_CLEAR
RETP ;THATS IT!
**************************************************************************
* *
* GAME UTILITIES SELECTED *
* *
**************************************************************************
GO_UTIL MOVI MEN_UTIL,A8
JAUC GEN_MENU ;PROCESS THE UTILITY MENU!
**************************************************************************
* *
* DO_FACSET *
* *
* RESET THE CMOS TO FACTORY SETTINGS *
* *
* ENTRY *
* NOTHING *
* *
* EXIT *
* NOTHING *
* *
**************************************************************************
DO_FACSET:
MOVI MESS_FACSET,A8
MOVK 1,A0
JRUC DEF_ADJ_PART
**************************************************************************
* *
* DO_DEF_ADJ *
* *
* JUST RESET THE ADJUSTMENTS TO THE FACTORY SETTINGS *
* *
* ENTRY *
* NOTHING *
* *
* EXIT *
* NOTHING *
* *
**************************************************************************
DO_DEF_ADJ:
MOVI MESS_DEF_ADJ,A8
CLR A0
; FALL THROUGH
**************************************************************************
* *
* DEF_ADJ_PART *
* *
* SETUP CMOS TO DEFAULT ADJUSTMENTS *
* *
* ENTRY *
* A0 HOW MUCH TO CLEAR *
* A8 MESSAGE TO USE *
* *
* EXIT *
* NOTHING *
* *
**************************************************************************
DEF_ADJ_PART:
MOVE A0,@FAC_FLAG,W ;INDICATE THIS IS ADJUSTMENTS ONLY
MOVE A8,-*A12,L ;PUSH THE MESSAGE
MOVE *A12+,A8,L ;RESTORE MESSAGE
MOVI DEFADJSOFT,A9
MOVI NULL_ST,A10 ;DON'T PRINT ANYTHING....ROUTINE WILL.
JSRP AREUSURE
RETP
*
* RETURN A0=0 FOR FAILURE
*
DO_CANCEL
CLR A0
RETP
DEFADJSOFT
*
* NOW SMASH THE CHECKSUM
*
.IF PRINTER
MOVE @FAC_FLAG,A0,W
ADDI 6,A0
CALLA PBADGUY
.ENDIF
CALLA FORM_ADC ;FORM THE CKSUM
MOVE A1,A0 ;PUT IN CMOS WRITING REGGIE
MOVI ADJ_CKSUM,A7
INC A0 ;THIS SMASHES ADJUSTMENTS
CALLA CMOSUNLOCK
CALLA WC_WORD ;AND STORE IT
CALLA CMOSLOCK
*
* NOW MAKE SURE ITS SMASHED
*
CALLA CMOS_VAL
JRZ AD_FAIL ;WE CAN'T DO IT.....PRINT FAILURE.
*
* NOW SET THE ADJUSTMENTS TO THE FACTORY VALUE.
*
CALLA FAC_SET ;THIS DOES THE DEED!
CALLA CMOS_VAL ;IS IT OK NOW?
JRNZ AD_FAIL ;NOPE...PRINT FAILURE
MOVI DEFRESMESS,A8
MOVE @FAC_FLAG,A0,W ;DO WE NEED TO CLEAR THE TABLES?
JRZ DAX ;NOPE...POST SINGLE MESSAGE
MOVI MESS_DEFCONF,A8 ;THIS IS SINGLE MESSAGE
CALLA CLR_SCRN ;CLEAR THE SCREEN FOR OUR MESSAGES.
CALLR FAC_STUF ;DO AUDITS AND HIGH SCORE TABLE
MOVI MESS_FFSCONF,A8 ;PRINT THE REST OF THE MESSAGES
JSRP L_MESS ;THAT DOES IT!
NOTABS RETP
AD_FAIL MOVI MESS_FACFAIL,A8
JRUC DAX
DEF_CAN MOVI MESS_CANCELLED,A8
DAX CALLA CLR_SCRN
JSRP SUR_MESS
RETP
DEFRESMESS
.STRING W_ADJUSTMENTS," RESTORED",0
.EVEN
*
* ON A FULL FACTORY SETTING (EITHER REQUESTED OR
* ADJUSTMENT FAILURE) THIS CLEARS THE AUDITS AND
* HIGH SCORE TABLE.
*
FAC_STUF
CALLA CLR_AUD ;CLEAR AUDITS TOO
CALLR RES_ALL ;ALL TIME TABLE
CALLR INVALID_CUSTOM
RETS
**************************************************************************
* *
* INVALID_CUSTOM *
* *
* THIS KILLS THE CUSTOM MESSAGE SO THAT THE FACTORY MESSAGE *
* WILL BE USED. NOTE THAT THIS CHECKSUMS THE ADJUSTMENTS, *
* SO BE CAREFUL WITH IT! *
* *
* ENTRY *
* NOTHING *
* *
* EXIT *
* NOTHING *
* *
**************************************************************************
INVALID_CUSTOM:
MMTM SP,A0,A7
;XUNIT CALLA ADJ_PAGE ;POINT AT ADJUSTMENT PAGE
CLR A0
MOVI VALID_CUSTOM,A7
calla CMOSUNLOCK
CALLA WC_WORD
calla CMOSLOCK
CALLA F_ADC_S ;FIXUP CHECKSUM FOR OUR DEED!
MMFM SP,A0,A7
RETS
.if NOPIC
.else
**************************************************************************
* *
* HARDWARE INFORMATION SELECTED *
* *
**************************************************************************
SERIAL_NUM_PROMPT:
MESS_MAC RD7FONT,SPACING07,200,180,COLOR_PPURPLE,STRCNRM,0
.STRING "SERIAL NUMBER: %06ld",0
.LONG _serial_number
.EVEN
MAN_DATE_PROMPT:
MESS_MAC RD7FONT, SPACING07,200, 200, COLOR_PPURPLE,STRCNRM,0
.STRING "DATE OF MANUFACTURE: %02ld/%02ld/19%02ld",0
.LONG _month
.LONG _day
.LONG _year
.EVEN
WILLY_PROMPT:
MESS_MAC RD15FONT, SPACING07, 200, 100, COLOR_PGREEN, STRCNRM,0
.STRING "Midway Manufacturing Inc.",0
.EVEN
X_PROMPT:
MESS_MAC RD20FONT, SPACING20, 200, 140, COLOR_PYELLOW, STRCNRM, 0
.STRING "X UNIT",0
.EVEN
.globl _get_serial_number
_get_serial_number:
movi CMOS_SN,a0
movk 3,a1
clr a2
_gs_loop:
sll 8,a2
move *a0+,a3,1
andi 0ffh,a3
or a3,a2
dsjs a1,_gs_loop
move a2,@_serial_number,1
rets
_get_date:
movi CMOS_DATE,a0
movk 2,a1
clr a2
_gd_loop:
sll 8,a2
move *a0+,a3,1
andi 0ffh,a3
or a3,a2
dsjs a1,_gd_loop
move a2,a1
subk 1,a1
movi 372,a0
divu a0,a1
movi 372,a3
mpyu a1,a3
sub a3,a2
addi 80,a1
move a1,@_year,1
move a2,a0
movi 31,a1
modu a1,a0
move a0,@_day,1
move a2,a1
subk 1,a1
movi 31,a0
divu a0,a1
addk 1,a1
move a1,@_month,1
rets
GO_HARDWARE:
calla _get_serial_number
calla _get_date
movk 1,a8
move a8,@NO_CLEAR,W
calla CLR_SCRN
movi WILLY_PROMPT,a8
calla LM_SETUP
JSRP PRINTF
movi X_PROMPT,a8
calla LM_SETUP
JSRP PRINTF
movi SERIAL_NUM_PROMPT,a8
calla LM_SETUP
JSRP PRINTF
movi MAN_DATE_PROMPT,a8
calla LM_SETUP
JSRP PRINTF
movi MEN_HARDWARE,a8
jauc GEN_MENU
RET_HARDWARE:
clr a8
move a8,@NO_CLEAR,W
JSRP FORCE_MAIN
RETP
.endif
SNDRELEASE_NUM_PROMPT:
MESS_MAC RD15FONT,SPACING07,200,130,COLOR_PPURPLE,STRCNRM,0
.STRING "Sound Software Version:\n"
.STRING "RELEASE %2ld",0
.LONG _serial_number
.EVEN
SNDPROTO_NUM_PROMPT:
MESS_MAC RD15FONT,SPACING07,200,130,COLOR_PPURPLE,STRCNRM,0
.STRING "Sound Software Version:\n"
.STRING "PROTO %2ld",0
.LONG _serial_number
.EVEN
VOL_PROMPT:
MESS_MAC RD15FONT, SPACING07, 200, 100, COLOR_PGREEN, STRCNRM,0
.STRING "Volume Level",0
.EVEN
MIN_PROMPT:
MESS_MAC RD7FONT, SPACING07, 50, 137, COLOR_PGREEN, STRCNRM, 0
.STRING "-",0
.EVEN
MAX_PROMPT:
MESS_MAC RD7FONT, SPACING07, 350, 137, COLOR_PGREEN, STRCNRM, 0
.STRING "+",0
.EVEN
;CVAL_PROMPT:
; MESS_MAC RD15FONT, SPACING07, 150, 170, COLOR_PPURPLE,STRLNRM,0
; .STRING "Current Value: %3ld",0
; .STRING "CURRENT VALUE",0
; .LONG _volume_level
; .EVEN
VOL_PROMPT1:
.STRING "VOLUME LEVEL",0
.EVEN
MIN_PROMPT1:
.STRING "MIN",0
.EVEN
MAX_PROMPT1:
.STRING "MAX",0
.EVEN
.globl draw_volume_scale1
draw_volume_scale:
ADJUST ADJVOLUME
move a0,@_volume_level,1
mmtm sp,a0
; movi [170,150],a0
; movi [16,200],a1
; movi COLOR_BLACK,a2
; FCALL RECTANGLE,b6
; movi CVAL_PROMPT,a0
;; clr a2
; movi COLOR_PURPLE,a3
; movi [170,150],a1
; FCALL STRING,b6
; movi 3,a3
; movk 5,a4
; move @_volume_level,a8,1
; calla HEX_TO_ASCII_DEC
; move a8,a0
; movi [170,260],a1
; clr a2
; movi COLOR_PURPLE,a3
; FCALL STRING,b6
; calla LM_SETUP
; JSRP PRINTF
movi VOL_PROMPT,a8
calla LM_SETUP
JSRP PRINTF
movi MIN_PROMPT,a8
calla LM_SETUP
JSRP PRINTF
movi MAX_PROMPT,a8
calla LM_SETUP
JSRP PRINTF
movi [134,75],a0
movi [16,256],a1
movi COLOR_BLACK,a2
FCALL RECTANGLE,b6
movi [0,85],a3
_yblock_loop:
move a3,a0
addi [139,0],a0
movi [5,5],a1
movi COLOR_YELLOW,a2
FCALL RECTANGLE,b6
addi 20,a3
cmpi 334,a3
jrlt _yblock_loop
move *sp,a4,1
jrz _rblock_done
movi [0,75],a3
_rblock_loop:
move a3,a0
addi [134,0],a0
movi [15,5],a1
movi COLOR_RED,a2
FCALL RECTANGLE,b6
addi 10,a3
subi 10,a4
cmpi 0,a4
jrgt _rblock_loop
_rblock_done:
mmfm sp,a0
rets
draw_volume_scale1:
mmtm sp,a0,a1,a2,a3,a4,a5,a6,a8,a13
ADJUST ADJVOLUME
move a0,@_volume_level,1
mmtm sp,a0
; movi [968,150],a0
; movi [16,200],a1
; movi COLOR_BLACK,a2
; FCALL RECTANGLE,b6
; movi CVAL_PROMPT,a0
; clr a2
; movi COLOR_PURPLE,a3
; movi [968,150],a1
; FCALL STRING,b6
; movi 3,a3
; movk 5,a4
; move @_volume_level,a8,1
; calla HEX_TO_ASCII_DEC
; move a8,a0
; movi [968,260],a1
; clr a2
; movi COLOR_PURPLE,a3
; FCALL STRING,b6
movi VOL_PROMPT1,a0
FCALL STRINGCENTER,b6
addi [860,0],a1
clr a2
movi COLOR_GREEN,a3
FCALL STRING,b6
movi MIN_PROMPT1,a0
movi [905,40],a1
clr a2
movi COLOR_GREEN,a3
FCALL STRING,b6
movi MAX_PROMPT1,a0
movi [905,340],a1
clr a2
movi COLOR_GREEN,a3
FCALL STRING,b6
movi [902,75],a0
movi [16,256],a1
movi COLOR_BLACK,a2
FCALL RECTANGLE,b6
movi [0,85],a3
_yblock_loop1:
move a3,a0
addi [907,0],a0
movi [5,5],a1
movi COLOR_YELLOW,a2
FCALL RECTANGLE,b6
addi 20,a3
cmpi 334,a3
jrlt _yblock_loop1
move *sp,a4,1
jrz _rblock_done1
movi [0,75],a3
_rblock_loop1:
move a3,a0
addi [902,0],a0
movi [15,5],a1
movi COLOR_RED,a2
FCALL RECTANGLE,b6
addi 10,a3
subi 10,a4
cmpi 0,a4
jrgt _rblock_loop1
_rblock_done1:
mmfm sp,a0
mmfm sp,a0,a1,a2,a3,a4,a5,a6,a8,a13
rets
GO_VOLUME:
ADJUST ADJVOLUME
move a0,@_volume_level,1
SOUND1 VOL_ADJUST_SOUND
movk 1,a8
move a8,@_in_volume_adjust,L
calla CLR_SCRN
movi MESS_VOL_TITLE,a2
movi COLOR_WHITE,a3
JSRP TOP_BOX
move @_cabinet_type,a8,L
jrz _xvol_inst
movi VOL_INST_T2,a8
jruc _xvol_inst_out
_xvol_inst:
movi VOL_INST,a8
_xvol_inst_out:
calla LM_SETUP
JSRP PRINTF
calla draw_volume_scale
movi MEN_VOLUME,a8
movk 1,a9
JSRP B_MENU
RET_VOLUME:
clr a8
move a8,@NO_CLEAR,W
move a8,@_in_volume_adjust,L
SOUND1 SOUNDS_OFF
RETP
**************************************************************************
* *
* COIN BOOKKEEPING SELECTED *
* *
**************************************************************************
GO_BOOK
CALLA CLR_SCRN
MOVI MES_BOOK,A2
MOVI COLOR_WHITE,A3
JSRP TOP_BOX ;PRINT TITLE BOX.
MOVE @VALIDATOR,A0,W
JRZ BOOK_NO_BV ;BR = We are not using a bill validator
MOVI COIN_AUDS_BV,A0 ;PUT TABLE UP.
JRUC BOOK_PRINT
BOOK_NO_BV
MOVI COIN_AUDS,A0 ;PUT TABLE UP.
BOOK_PRINT
JSRP PRNT_AUD
MOVI MEN_DETAIL,A8
MOVI 1,A9 ;CURSOR ON 1ST ENTRY
JSRP B_MENU ;SEE IF THEY WANT PAGE 2.
CMPI 1,A8 ;DID WE GET 1'ST ENTRY?
JRNZ NO_DETAIL ;NOPE...RETURN TO OUR CALLER
DETAIL_SCREEN
CALLA CLR_SCRN ;CLEAR OUT FOR ACTION!
MOVI MES_TOTALS,A2
MOVI COLOR_WHITE,A3
JSRP TOP_BOX ;PRINT TITLE BOX.
MOVK 1,A0
MOVE A0,@PTSIZE,W ;THIS BOX IS IN 15 PT
MOVE @VALIDATOR,A2,W
JRZ DS_FOUR_SLOT
MOVI COIN_D1_BV,A2 ;DETAILED AUDIT 1 W/Validator
MOVI ADJCDIV,A0
CALLA GET_ADJ
JRNZ DSGO
MOVI COIN_SD1_BV,A2
JRUC DSGO
DS_FOUR_SLOT
MOVI COIN_D1,A2 ;DETAILED AUDIT 1
MOVI ADJCDIV,A0
CALLA GET_ADJ
JRNZ DSGO
MOVI COIN_SD1,A2
DSGO
MOVE A2,A0
JSRP PRNT_AUD ;PRINT IT
CLR A0
MOVE A0,@PTSIZE,W
MOVI MEN_CLR_SUB,A8 ;CLEAR SUBTOTAL OR RETURN TO MAIN MENU
MOVI 2,A9 ;CURSOR ON 2ND ENTRY
JSRP B_MENU
CMPI 1,A8 ;CHOICE 1 IS CLEAR.....
JRNZ NO_CLEAR_SUB ;NOPE...RETURN TO CALLER!
MOVI MESS_CLEAR_SUBS,A8 ;CLEAR COIN SUB-TOTALS...ARE YOU SURE
MOVI CLR_COINS,A9 ;ROUTINE TO DO IT
MOVI MESS_SUBS_CLEAR,A10 ;CONFIRMATION.
JSRP AREUSURE ;ASK EM.
JRUC DETAIL_SCREEN ;NOW PUT THIS SCREEN BACK UP.
NO_CLEAR_SUB
NO_DETAIL
RETP
**************************************************************************
* *
* GAME AUDITS SELECTED *
* *
**************************************************************************
GO_AUD
JSRP NEW_AUDIT_PAGE
MOVI GAME_AUDS,A0
JSRP PRNT_AUD ;PLOT PAGE ONE
MOVI MEN_AP1,A8 ;OPTIONS FOR FIRST PAGE
MOVI 1,A9 ;CURSOR ON 1ST ENTRY
JSRP B_MENU ;WAIT FOR OPERATOR ENTRY
CMPI 1,A8 ;DOES HE WANT NEXT PAGE?
JRNZ NO_AP2 ;BR = NO, RETURN TO MAIN MENU
GA2
JSRP NEW_AUDIT_PAGE
MOVI GAME_AUD2,A0
JSRP PRNT_AUD ;PLOT PAGE TWO
MOVI MEN_AP2,A8 ;PAGE 2 OPTIONS
MOVI 1,A9 ;CURSOR ON 1ST ENTRY
JSRP B_MENU ;WAIT FOR OPERATOR ENTRY
CMPI 1,A8 ;NEXT PAGE?
JRZ GA3 ;BR = YES
CMPI 2,A8 ;PREVIOUS PAGE?
JRZ GO_AUD ;BR = YES
JRUC NO_AP2 ;MUST WANT OUT
GA3
JSRP NEW_AUDIT_PAGE ;WIPE TO NEW PAGE
MOVI GAME_AUD3,A0
JSRP PRNT_AUD ;PLOT PAGE 3
MOVI MEN_AP2,A8 ;PAGE 3 OPTIONS
MOVI 1,A9 ;CURSOR ON 2ND ENTRY
JSRP B_MENU ;WAIT FOR OPERATOR ENTRY
CMPI 1,A8 ;PREVIOUS PAGE?
JRZ GA4 ;BR = YES
CMPI 2,A8 ;PREVIOUS PAGE?
JRZ GA2 ;BR = YES
JRUC NO_AP2 ;MUST WANT OUT
GA4
JSRP NEW_AUDIT_PAGE ;WIPE TO NEW PAGE
MOVI GAME_AUD4,A0
JSRP PRNT_AUD ;PLOT PAGE 3
MOVI MEN_AP2,A8 ;PAGE 3 OPTIONS
MOVI 1,A9 ;CURSOR ON 2ND ENTRY
JSRP B_MENU ;WAIT FOR OPERATOR ENTRY
CMPI 1,A8 ;PREVIOUS PAGE?
JRZ GA5 ;BR = YES
CMPI 2,A8 ;PREVIOUS PAGE?
JRZ GA3 ;BR = YES
JRUC NO_AP2 ;MUST WANT OUT
GA5
JSRP NEW_AUDIT_PAGE ;WIPE TO NEW PAGE
MOVI GAME_AUD5,A0
JSRP PRNT_AUD ;PLOT PAGE 3
MOVI MEN_AP2,A8 ;PAGE 3 OPTIONS
MOVI 1,A9 ;CURSOR ON 2ND ENTRY
JSRP B_MENU ;WAIT FOR OPERATOR ENTRY
CMPI 1,A8 ;PREVIOUS PAGE?
JRZ GA_LAST ;BR = YES
CMPI 2,A8 ;PREVIOUS PAGE?
JRZ GA4 ;BR = YES
JRUC NO_AP2 ;MUST WANT OUT
GA_LAST
JSRP NEW_AUDIT_PAGE ;WIPE TO NEW PAGE
MOVI GAME_AUDL,A0
JSRP PRNT_AUD ;PLOT PAGE 3
MOVI MEN_AP3,A8 ;PAGE 3 OPTIONS
MOVI 2,A9 ;CURSOR ON 2ND ENTRY
JSRP B_MENU ;WAIT FOR OPERATOR ENTRY
CMPI 1,A8 ;PREVIOUS PAGE?
JRZ GA5 ;BR = YES
CALLR READ_SW1_CNS ; XUNIT
ANDI 200000H,A0 ;HOLDING P2 START?
JRNZ NO_AP2
*THE FOLLOWING ARE CONSIDERED HIDDEN AUDITS
JSRP NEW_AUDIT_PAGE ;WIPE TO NEW PAGE
MOVI GAME_AUDH,A0
JSRP PRNT_AUD ;PLOT PAGE 4
MOVI MEN_AP3,A8 ;PAGE 4 OPTIONS
MOVI 2,A9 ;CURSOR ON 2ND ENTRY
JSRP B_MENU ;WAIT FOR OPERATOR ENTRY
CMPI 1,A8 ;PREVIOUS PAGE?
JRZ GA3 ;BR = YES
JSRP DISPDUMP ;DISPLAY THE DUMPS
NO_AP2
RETP
**************************************************************************
* *
* OCTO_AUDS - PRINT OUT AUDITS DURING OCTOPUS PAGE *
* *
**************************************************************************
OCTO_AUDS
JSRP NEW_AUDIT_PAGE
MOVI GAME_AUDS,A0
JSRP PRNT_AUD ;PLOT PAGE ONE
SLEEP 15
MOVI 2000,A0
JSRP SLEEP_SWITCHX
JSRP NEW_AUDIT_PAGE
MOVI GAME_AUD2,A0
JSRP PRNT_AUD ;PLOT PAGE ONE
SLEEP 15
MOVI 2000,A0
JSRP SLEEP_SWITCHX
JSRP NEW_AUDIT_PAGE
MOVI GAME_AUD3,A0
JSRP PRNT_AUD ;PLOT PAGE ONE
SLEEP 15
MOVI 2000,A0
JSRP SLEEP_SWITCHX
JSRP NEW_AUDIT_PAGE
MOVI GAME_AUD4,A0
JSRP PRNT_AUD ;PLOT PAGE ONE
SLEEP 15
MOVI 2000,A0
JSRP SLEEP_SWITCHX
JSRP NEW_AUDIT_PAGE
MOVI GAME_AUD5,A0
JSRP PRNT_AUD ;PLOT PAGE ONE
SLEEP 15
MOVI 2000,A0
JSRP SLEEP_SWITCHX
JSRP NEW_AUDIT_PAGE
MOVI GAME_AUDL,A0
JSRP PRNT_AUD ;PLOT PAGE ONE
SLEEP 15
MOVI 2000,A0
JSRP SLEEP_SWITCHX
JSRP NEW_AUDIT_PAGE
MOVI GAME_AUDH,A0
JSRP PRNT_AUD ;PLOT PAGE ONE
SLEEP 15
MOVI 2000,A0
JSRP SLEEP_SWITCHX
JAUC DISPDUMP ;DISPLAY THE DUMPS
**************************************************************************
* *
* NEW_AUDIT_PAGE - INITIALIZE A NEW AUDIT PAGE, CLEAR SCREEN AND *
* PLOT THE HEADER BOX. *
* NOTE: CALL WITH JSRP *
* *
**************************************************************************
NEW_AUDIT_PAGE
CALLA CLR_SCRN
MOVI MES_AUD,A2
MOVI COLOR_BLUE,A3
JRUC TOP_BOX ;PRINT TITLE BOX.
**************************************************************************
* *
* PRNT_AUD *
* *
* THIS IS CALLED TO PRINT OUT AN AUDIT TABLE. *
* *
**************************************************************************
AT_PTR EQU PDATA ;LONG
AT_Y EQU PDATA+LONG_SIZE ;WORD
AT_DY EQU AT_Y+WORD_SIZE ;WORD
AT_LX EQU AT_DY+WORD_SIZE ;WORD LEFT MARGIN X
AT_RX EQU AT_LX+WORD_SIZE ;WORD RIGHT MARGIN X
AT_OBJ EQU AT_RX+WORD_SIZE ;LONG OBJECT POINTER FOR COLLECTION ROUT
AT_MESS EQU AT_OBJ+LONG_SIZE ;LONG PRINT_MONEY MESSAGE STASH
PRNT_AUD
MOVE *A0+,A1,W ;GET STARTING HEIGHT
MOVE A1,*A13(AT_Y),W ;STORE
MOVE *A0+,A1,W ;GET DY TO USE
MOVE A1,*A13(AT_DY),W ;STASH IT AWAY
MOVI 40,A14
MOVE @PTSIZE,A1,W
JRZ PAGO_PT
MOVI 33,A14
PAGO_PT
MOVE *A0+,A1,W ;GET LEFT MARGIN
ADD A14,A1
MOVE A1,*A13(AT_LX),W ;STORE
MOVE *A0+,A1,W ;GET RIGHT MARGIN
SUB A14,A1
MOVE A1,*A13(AT_RX),W ;STASH IT AWAY
MOVE A0,*A13(AT_PTR),L ;SAVE POINTER INTO AREA
PA1
MOVE @LASTCOLOR,A14,L
CMPI COLOR_PYELLOW,A14
JRZ PACOLFLIP1
MOVI COLOR_PYELLOW,A14
JRUC PACOLFLIP2
PACOLFLIP1
MOVI COLOR_PPURPLE,A14
PACOLFLIP2
MOVE A14,@LASTCOLOR,L
JSRP DO_AN_AUDIT ;PRINT OUT THE CURRENT AUDIT
MOVE *A13(AT_PTR),A0,L ;GET POINTER
ADDI AUD_T_SIZE,A0
MOVE A0,*A13(AT_PTR),L ;PUT BACK
CALLR ADD_AUDIT_DY
MOVE *A0,A1,L ;ARE WE DONE?
JRNZ PA1
RETP
**************************************************************************
* *
* ADD_AUDIT_DY *
* *
* THIS IS CALLED TO MOVE THE AUDIT Y (STORE IN *
* PROCESS AREA) TO THE NEXT AUDIT BY ADDING THE *
* CURRENT DY (ALSO STORED IN PROCESS AREA). *
* *
**************************************************************************
ADD_AUDIT_DY
MMTM SP,A1,A2
MOVE *A13(AT_Y),A1,W
MOVE *A13(AT_DY),A2,W ;GET DELTA Y
ADD A2,A1 ;MOVE THE Y DOWN
MOVE A1,*A13(AT_Y),W
MMFM SP,A1,A2
RETS
BEGIN_AUDIT
MMTM SP,A0
CLR A0
MOVE A0,@BAD_AUD,W ;MONITOR CORRUPTION.
MMFM SP,A0
RETS
DO_AN_AUDIT
CALLR BEGIN_AUDIT
MOVE *A13(AT_PTR),A3,L ;GET POINTER
MOVE *A3(AUD_ROUTINE),A4,L ;ROUTINE TO CALL?
JRZ DO_BY_NUMBER ;NOPE....DO IT BY NUMBER
MOVI DAA_RET,A7
MOVE A7,-*A12,L ;PUSH RET ADDR
JUMP A4 ;"CALL" THE ROUTINE
DO_BY_NUMBER
MOVE *A3(AUD_NUMBER),A0,W ;FETCH THE AUDIT NUMBER
CALLA GET_AUD ;TURN INTO AUDIT COUNT!
MOVE A1,A3 ;PROTECT FOR A SECOND.
JSRP NUMBER_WORK ;GET THE NUMBER IN A3 UP THERE!
DAA_RET
MOVI MESS_AUD_LINE,A8
MOVE @PTSIZE,A14,W
JRZ DAA_GO
MOVI MESS15_AUD_LINE,A8
DAA_GO
CALLA LM_SETUP ;SETUP FOR AUDIT PRINTING.
MOVE @LASTCOLOR,A5,L
MOVE *A13(AT_PTR),A3,L ;GET AUDIT POINTER
MOVE *A3(AUD_MESS),A8,L ;GET TEXT POINTER
JSRP LEFT_FINISH
RETP ;THAT'S ALL WE DO!
*
* LEFT_FINISH AND RIGHT_FINISH
*
* THESE ARE CALLED TO PUT AUDIT INFO
* ON THE LEFT OR RIGHT SIDE ONCE A8 POINTS AT
* THE CORRECT DATA TO PRINT
*
LEFT_FINISH
CALLR TURN_RED_IF_NEC
CALLR SET_FOR_Y ;SET FOR AUDIT'S Y
CALLR SET_LEFT_X ;SET FOR LEFT X
JSRP PRINTF ;AND TYPE UP THE MESSAGE!
RETP
RIGHT_FINISH
CALLR TURN_RED_IF_NEC ;CHANGE COLOR IF CORRUPTED.
CALLR SET_FOR_Y ;SET FOR AUDIT'S Y
CALLR SET_RIGHT_X
JSRP PRINTF ;FINISH THE JOB!
MOVE @BAD_AUD,A0,W ;IS IT CORRUPTED?
JRZ RFX ;NOPE....RETURN
MOVI MESS_ERROR,A8
CALLA LM_SETUP ;SETUP "ERROR"
CALLR SET_FOR_Y ;SET FOR AUDIT'S Y
**** ADDI 40000H,A9 ;PUSH 4 Y UNITS TO CENTER
CALLR SET_RIGHT_X
JSRP PRINTF ;FINISH THE JOB!
RFX
RETP
TURN_RED_IF_NEC
MMTM SP,A3
MOVE @BAD_AUD,A3,W ;CHANGE TO RED?
JRZ DAA_1 ;NOPE...ITS OK!
MOVI COLOR_PRED,A5 ;CHANGE COLOR TO RED
DAA_1
MMFM SP,A3
RETS
SET_FOR_Y
MMTM SP,A3
MOVE *A13(AT_Y),A3,W ;GET Y COORDINATE
SLL 16,A3 ;PUT IT IN POSITION
MOVY A3,A9 ;PUT IT IN PLACE
MMFM SP,A3
RETS
SET_LEFT_X
MMTM SP,A3
MOVE *A13(AT_LX),A3,W
MOVX A3,A9 ;PUT THE X IN PLACE
MMFM SP,A3
RETS
SET_RIGHT_X
MMTM SP,A3
MOVE *A13(AT_RX),A3,W
MOVX A3,A9 ;PUT THE X IN PLACE
MMFM SP,A3
RETS
**************************************************************************
* *
* NUMBER_WORK *
* *
* A3 HAS THE NUMBER TO DISPLAY.....DO IT! *
* *
**************************************************************************
NUMBER_WORK
MOVI MESS_AUD_NUM,A8 ;SETUP FOR AUDIT NUMBER
MOVE @PTSIZE,A14,W
JRZ NUMGO
MOVI MESS15_AUD_NUM,A8
NUMGO
CALLA LM_SETUP
MOVE @LASTCOLOR,A5,L
MOVE A3,A8 ;NOW WE HAVE BINARY NUMBER
CALLA HEXTOASC ;NOW WE POINT TO THE STRING.
JSRP RIGHT_FINISH
RETP
STARTS
CALLR GET_STARTS
MOVE A2,A3 ;GET IN PRINTOUT REG.
JRUC NUMBER_WORK ;AND PRINT IT
CONTINS
CALLR GET_CONTS
MOVE A2,A3 ;GET IN PRINTOUT REG.
JRUC NUMBER_WORK ;AND PRINT IT
DOPLAYS
CALLR GET_PLAYS
MOVE A2,A3 ;PUT IN PLACE
JRUC NUMBER_WORK
DOTOTTIME
CLR A3
JRUC NUMBER_WORK
DOHSLEFT
MOVI ADJHSRES,A0
CALLA GET_ADJ ;IS IF OFF?
JRZ DOHSOFF ;YEP...PRINT IT
CALLA GET_HSC ;GET THE COUNTER VALUE
MOVE A0,A3
JRUC NUMBER_WORK ;AND SHOW IT!
DOHSOFF
MOVI MESS_AUD_NUM,A8
CALLA LM_SETUP ;SETUP FOR AUDIT PRINTING.
MOVE @LASTCOLOR,A5,L
MOVI M_HSOFF,A8 ;THIS EFFECTIVELY ERASES LINE!
JAUC RIGHT_FINISH
**************************************************************************
* *
* GET_STARTS *
* *
* RETURN THE TOTAL GAME STARTS *
* *
* ENTRY *
* NOTHING *
* *
* EXIT *
* A2 TOTAL GAME STARTS *
* *
**************************************************************************
GET_STARTS:
MMTM SP,A0,A1
MOVI AUDSTART,A0
CALLA GET_AUD
MOVE A1,A2
MMFM SP,A0,A1
RETS
**************************************************************************
* *
* GET_CONTS *
* *
* RETURN TOTAL GAME CONTINUES IN A2 *
* *
* ENTRY *
* NOTHING *
* *
* EXIT *
* A2 TOTAL GAME CONTINUES *
* *
**************************************************************************
GET_CONTS:
MMTM SP,A0,A1
MOVI AUDCONTTAKEN,A0
CALLA GET_AUD
MOVE A1,A2
MMFM SP,A0,A1
RETS
**************************************************************************
* *
* GET_PLAYS *
* *
* RETURN THE TOTAL PLAYS ( STARTS + CONTINUES ) *
* *
* ENTRY *
* NOTHING *
* *
* EXIT *
* A2 TOTAL PLAYS *
* *
**************************************************************************
GET_PLAYS:
MMTM SP,A0
CALLR GET_STARTS
MOVE A2,A0
CALLR GET_CONTS
ADD A0,A2
MMFM SP,A0
RETS
DO_PTIME
MOVI AUDPTIME,A0
JRUC TIMEGO
DO_AVGTC
CLR A3
MOVI AUDNUMTC,A0
CALLA GET_AUD ; GET THE DIVISOR
MOVE A1,A2
JRZ DTCGO ; NO /0'S HERE, BUD
MOVI AUDAVGTC,A0
CALLA GET_AUD ; GET TOTAL TIME
CLR A0
DIVU A2,A0 ; A0 CONTAINS THE REAL NUMBER
MOVE A0,A3 ; NUMBER TO DISPLAY
DTCGO
JRUC PLOTTIME
**************************************************************************
* *
* SET_AVGWAVE *
* *
* CALL FOR SETTING THE AVERAGE WAVE *
* *
* ENTRY *
* A1 WAVE REACHED *
* *
* EXOT *
* NOTHING *
* *
* CALL *
* CALL *
* *
**************************************************************************
SET_AVGWAVE:
MMTM SP,A0,A1,A2
MOVE A1,A2 ; SAVE AWAY FOR POSTERITY
MOVI AUDNUMTG,A0
CALLA AUD1
MOVI AUDWAVECNT,A0 ; WAVE COUNTER THINGIE
CALLA GET_AUD
ADD A2,A1
CALLA STORE_AUDIT
MOVI AUDAVGGC,A0
CALLA GET_AUD
MOVE @GAMEUNITS,A2,W ; UNITS USED IN THIS GAME
ADD A2,A1
CALLA STORE_AUDIT
MMFM SP,A0,A1,A2
RETS
DO_AVGWAVE
CLR A3
MOVI AUDNUMTG,A0
CALLA GET_AUD ; GET THE DIVISOR
MOVE A1,A2
JRZ DAWAVEGO ; NO /0'S HERE, BUD
MOVI AUDWAVECNT,A0
CALLA GET_AUD ; GET TOTAL TIME
CLR A0
DIVU A2,A0 ; A0 CONTAINS THE REAL NUMBER
MOVE A0,A3 ; NUMBER TO DISPLAY
DAWAVEGO
JAUC NUMBER_WORK
*
*CALCULATE PERCENTAGE OF CONTINUES TAKEN
*
DO_PCTCONT
CLR A3
MOVI AUDCONTOFFER,A0
CALLA GET_AUD ;CONTINUES OFFERED IS THE DIVISOR
MOVE A1,A2
JRZ DAPCTGO ;BR = 0 NOT ALLOWED IN THIS DIVIDE
MOVI AUDCONTTAKEN,A0
CALLA GET_AUD ;CONTINUES TAKEN IS THE DIVIDEND
MOVI 100,A0 ;MAKE IT A PERCENTAGE
MPYU A0,A1
DIVU A2,A1 ;AND GET IT
MOVE A1,A3 ;NUMBER TO DISPLAY
DAPCTGO
JAUC NUMBER_WORK
*
* Average credits spent per game
*
DO_AVGGC
CLR A3
MOVI AUDNUMTG,A0
CALLA GET_AUD ; GET THE DIVISOR
MOVE A1,A2
JRZ DAGCGO ; NO /0'S HERE, BUD
MOVI AUDAVGGC,A0
CALLA GET_AUD ; GET TOTAL CREDITS
CLR A0
DIVU A2,A0 ; A0 CONTAINS THE REAL NUMBER
MOVE A0,A3 ; NUMBER TO DISPLAY
DAGCGO
JAUC NUMBER_WORK
*
* Average credits spent per player/game
*
DO_AVGPC
CLR A3
CALLR GET_STARTS
JRZ DAPCGO ; NO /0'S HERE, BUD
MOVI AUDAVGGC,A0
CALLA GET_AUD ; GET TOTAL CREDITS SPENT
CLR A0
DIVU A2,A0 ; A0 CONTAINS THE REAL NUMBER
MOVE A0,A3 ; NUMBER TO DISPLAY
DAPCGO
JAUC NUMBER_WORK
DO_UPTIME
MOVI AUDUPTIME,A0
JRUC TIMEGO
DO_P1TIME
MOVI AUD1TIME,A0
JRUC TIMEGO
DO_P2TIME
MOVI AUD2TIME,A0
JRUC TIMEGO
DO_P3TIME
MOVI AUD3TIME,A0
JRUC TIMEGO
TIMEGO
CALLA GET_AUD
MOVE A1,A3
JRUC PLOTTIME
**************************************************************************
* *
* PLOTTIME *
* *
* PLOT OUT THE TIME SPECIFIED IN A3 *
* *
* ENTRY *
* A3 TIME ( IN SECONDS ) *
* *
* EXIT *
* NOTHING *
* *
**************************************************************************
PLOTTIME:
MOVI MESS_AUD_NUM,A8
CALLA LM_SETUP
MOVE @LASTCOLOR,A5,L
MMTM SP,A0,A1,A2,A7,A9,A10,A11
CLR A9 ; NO SECONDS
CLR A10 ; NO MINUTES
CLR A11 ; NO HOURS
MOVI STRINGF_RAM,A7 ; STRING TO BUILD IN
MOVE A3,A1 ; BASE VALUE
JRZ PNOTIME
CLR A0 ; DIVIDEND IN <A0><A1>
MOVI 60,A2 ; 60 SECS/MINUTE
DIVU A2,A0 ; A0 = MINUTES, A1 = SECONDS
MOVE A1,A9 ; SET SECONDS
MOVE A0,A1 ; MINUTES/HOURS
JRZ PNOTIME
CLR A0
DIVU A2,A0 ; A0 = HOURS, A1 = MINUTES
MOVE A1,A10
MOVE A0,A11
PNOTIME
MOVE A11,A0
JRZ PNOHOURS
CALLA CAT_A0 ; HOURS
MOVI ME_COLON,A8
CALLA STRCAT
PNOHOURS
MOVE A10,A0
CMPI 10,A0
JRHS P1
MOVE A11,A11 ; NO LEADING ZERO IF NO HOURS
JRZ P1
CLR A0
CALLA CAT_A0 ; INSERT EXTRA ZERO
MOVE A10,A0
P1
CALLA CAT_A0 ; MINUTES
MOVI ME_COLON,A8
CALLA STRCAT
MOVE A9,A0
CMPI 10,A0
JRHS P2
CLR A0
CALLA CAT_A0 ; INSERT EXTRA ZERO
MOVE A9,A0
P2
CALLA CAT_A0 ; SECONDS
MMFM SP,A0,A1,A2,A7,A9,A10,A11
MOVI STRINGF_RAM,A8
JSRP RIGHT_FINISH
RETP
ME_COLON:
.STRING ":",0
.EVEN
**************************************************************************
* *
* DO_MONEY - ROUTINE TO OUTPUT MONEY TOTALS FOR A GIVEN STANDARD COINAGE *
* IF THE COINAGE IS CUSTOM, IT JUST TOTALS COINS *
* RECEIVED IN COIN SLOTS. USED ON THE DETAILED *
* BOOKKEEPING PAGE. *
* *
**************************************************************************
DO_MONEY:
MOVI COLOR_PWHITE,A8
MOVE A8,@LASTCOLOR,L ; A GROSS KLUDGE
MOVE *A13(AT_Y),A8,W
ADDI 10H,A8
MOVE A8,*A13(AT_Y),W
MOVI MESS_AUD_NUM,A8
MOVE @PTSIZE,A14,W
JRZ DO_M_GO
MOVI MESS15_AUD_NUM,A8
DO_M_GO
CALLA LM_SETUP
MOVE @LASTCOLOR,A5,L
MMTM SP,A0,A1,A2,A3,A4,A5,A7,A10,A11
CALLR BEGIN_AUDIT ;KEEP TRACK OF SANITY OF CALC.
MOVI AUDLCOIN,A8 ;NOW PRINT MONEY FOR THE CHUTES
CALLR SUM_COINS
MOVK 1,A0 ;DIVIDE COINS BY 1 IF ITS BEEN TAMPERED WITH
CALLR SIXP
JRZ DIV_BY_1 ;TAMPERED WITH...DIVIDE BY 1 FOR "COINS"
MOVI ADJCDIV,A0 ;GET THE COIN PARTS PLEASE
CALLA GET_ADJ
DIV_BY_1
MOVE A2,A11 ;SETUP <A10><A11> AS DIVIDEND
CLR A10
DIVU A0,A10 ; DOLLARS IN A10, CHANGE IN A11
MOVI 100,A5
DIVU A0,A5
MPYU A5,A11
MOVI STRINGF_RAM,A7 ; STRING TO BUILD IN
CALLR SIXP ;HAVE THE 6 BEEN TAMPERED
JRZ NO_PREFIX
CALLA GET_CSPT
MOVE *A6(CS_LMES),A8,L
CALLA STRCAT
NO_PREFIX
MOVE A0,A2 ;KEEP DIVISOR FOR CHECK
MOVE A10,A0
CALLA CAT_A0 ;STUFF IN THE WHOLE GRAIN VALUE
CMPI 1,A2 ;WE'RE WE DEALING FRACTIONS?
JREQ NO_FRACTION ;BR = NO
MOVI PERIODSIGN,A8
CALLA STRCAT
CMPI 10,A11
JRHS DM2
CLR A0
CALLA CAT_A0
DM2
MOVE A11,A0
CALLA CAT_A0
NO_FRACTION
CALLR SIXP ;HAVE THE 6 BEEN TAMPERED
JRZ NO_SUFFIX
MOVE *A6(CS_RMES),A8,L
CALLA STRCAT
NO_SUFFIX
MMFM SP,A0,A1,A2,A3,A4,A5,A7,A10,A11
MOVI STRINGF_RAM,A8
JSRP RIGHT_FINISH
RETP
**************************************************************************
* *
* SUM_COINS *
* *
* A8 HAS FIRST OF THE "CHUTES" AUDIT NUMBERS OF INTEREST *
* *
* RETURN COINS TIMES THEIR FACTORS IN A2. *
* *
**************************************************************************
SUM_COINS
MMTM SP,A0,A1,A3,A6,A4
MOVE A8,A0 ;POINT AT AUDIT NUMBER
CLR A2 ;SUM = ZERO
CALLA GET_CSPT ;A6 POINTS AT CSELECT TABLE
ADDI CS_LVAL,A6 ;POINT AT 1ST MULTIPLIER
MOVI CHUTES,A4 ;NOW...ITERATE OVER THE CHUTES
NEXT_CHUTE
MOVE *A6+,A3,W ;GET MULTPLIER FOR THIS CHUTE
CALLR FIX_A3 ;REPLACE A3 WITH 1 (MULTIPLIER) IF
* ;ITS SOME CUSTOM MODE.
CALLR ADD_AUD_A0_TIMES_A3_TO_A2
INC A0 ;NEXT AUDIT
DSJS A4,NEXT_CHUTE
MMFM SP,A0,A1,A3,A6,A4
RETS
ADD_AUD_A0_TIMES_A3_TO_A2
CALLA GET_AUD ;FETCH THE AUDIT
MPYU A1,A3 ;TIME THE FACTOR
ADD A3,A2
RETS
**************************************************************************
* *
* FIX_A3 *
* *
* THIS IS CALLED BY THE LOW LEVEL MONEY TOTALIZER. *
* THE MULTIPLIER FOR THE COIN SLOT THAT ITS WORKING *
* ON IS IN A3. WE REPLACE IT WITH "1" TO SUM "TOTAL COINS" *
* IF ITS IN A NON-STANDARD COIN MODE. *
* *
**************************************************************************
FIX_A3
CALLR SIXP ;HAS IT BEEN TAMPERED WITH?
JRNZ FIX_A3X ;NOPE...LEAVE A3
MOVK 1,A3
FIX_A3X
RETS
**************************************************************************
* *
* SIXP *
* *
* THIS IS CALLED TO SEE IF THE 1ST 6 COIN PARAMETERS HAVE *
* BEEN TAMPERED WITH. *
* *
* .EQ. YES *
* .NE. NO *
* *
**************************************************************************
SIXP
MMTM SP,A0
MOVI ADJ1ST6,A0
CALLA GET_ADJ ;HAS IT BEEN TAMPERED WITH?
MMFM SP,A0
RETS
PERIODSIGN:
.STRING ".",0
.EVEN
**************************************************************************
* *
* UTILITY ROUTINES FOR UTILITIES MENU *
* *
**************************************************************************
DO_CLCRED
MOVI MESS_CLCRED,A8 ;CLEAR COIN SUB-TOTALS...ARE YOU SURE
MOVI CLR_CREDITS,A9 ;ROUTINE TO DO IT
MOVI MESS_CCCONF,A10 ;CONFIRMATION.
JAUC AREUSURE ;ASK EM......THEN RETURN!
CLR_CREDITS
.IF PRINTER
MOVK 2,A0
CALLA PBADGUY
.ENDIF
CALLA NO_CREDS ;CALL THE ROUTINE THAT DOES IT
RETP
DO_CLCOIN
MOVI MESS_CLCOIN,A8 ;CLEAR COIN SUB-TOTALS...ARE YOU SURE
MOVI CLR_COINS,A9 ;ROUTINE TO DO IT
MOVI MESS_CCNCONF,A10 ;CONFIRMATION.
JAUC AREUSURE ;ASK EM......THEN RETURN!
CLR_COINS
.IF PRINTER
CLR A0
CALLA PBADGUY
.ENDIF
MOVI FRST_C,A0
MOVI LAST_C,A1
CALLA CLR_AUDR
RETP
DO_CLAUD
MOVI MESS_CLAUD,A8 ;CLEAR COIN SUB-TOTALS...ARE YOU SURE
MOVI CLR_AUDITS,A9 ;ROUTINE TO DO IT
MOVI MESS_CAUDCONF,A10 ;CONFIRMATION.
JAUC AREUSURE ;ASK EM......THEN RETURN!
CLR_AUDITS
.IF PRINTER
MOVK 4,A0
CALLA PBADGUY
.ENDIF
MOVI FRSTGAUD,A0
MOVI LASTGAUD,A1
CALLA CLR_AUDR
CALLA DUMP_FS ;AND START THE "DUMP" RECORDS OVER
RETP
DO_HSRES
MOVI MESS_HSRESET,A8
MOVI HSSOFT,A9
MOVI MESS_HSRCONF,A10
JAUC AREUSURE
HSSOFT
.IF PRINTER
MOVK 5,A0
CALLA PBADGUY
.ENDIF
CALLR RES_ALL
RETP ;PROGRAM TO DO THE JOB!
**************************************************************************
* *
* RES_ALL *
* *
* RESET THE ALL TIME HIGHSCORE TABLE AND THE RESET COUNTER *
* *
* ENTRY *
* NOTHING *
* *
* EXIT *
* NOTHING *
* *
**************************************************************************
RES_ALL:
MOVI ALL_TAB,A8 ;ALWAYS CLEAR OUT TODAYS TABLE
CALLA INIT_TB
CALLA INIT_HSR ;RE-SET THE HIGH SCORE RESET COUNTER
RETS
**************************************************************************
* *
* MONITOR PATTERNS *
* *
**************************************************************************
.IF PRINTER
.ELSE
GO_PATTERNS
MOVI MEN_PATTERNS,A8 ;PUT UP THE MENU AND GO!
JAUC GEN_MENU ;THIS WILL RETURN TO LEVEL ABOVE US!
* A1 = <COLOR><PALETTE>
* A3 = DAG OF AREA [YPOS,XPOS]
* A4 = [Y,X] SIZE OF AREA
GO_RED
MOVI COLOR_RED,A1
JAUC SC_COL
GO_GREEN
MOVI COLOR_GREEN,A1
JAUC SC_COL
GO_BLUE
MOVI COLOR_BLUE,A1
SC_COL
SLL 16,A1 ;PALETTE 0....COLOR UP HIGH
CLR A3 ;UPPER LEFT
MOVI 00FF0190H,A4
CALLA FILLAREA ;THIS DOES THE SCREEN
JAUC WAIT_BUT ;NOW WAIT FOR ANY BUTTON!
.ENDIF
**************************************************************************
* *
* WAIT FOR A BUTTON MENU *
* *
**************************************************************************
ANY_BUT
MOVI ANY_MENU,A8 ;ANY BUTTON TO CONTINUE
MOVI 1,A9 ;CURSOR ON ENTRY 1
JAUC B_MENU ;DO IT....RETURN WHEN PRESSED.
**************************************************************************
* *
* WAIT_BUT *
* *
* THIS IS CALLED ON RETURN FROM MANY OF THE "HARD" *
* DIAGNOSTIC TESTS TO HOLD CONTROL TILL ANY BUTTON IS *
* HIT. *
* *
**************************************************************************
WAIT_BUT
PUSHP A8
CLR A8
*WAIT FIRST FOR ALL SWITCHES TO BE OPEN, TIMEOUT IS 8 SECONDS
WB_OPEN_WAIT
CALLR READ_SW1_CNS ; XUNIT HANGOUT FOR A WHILE
move a0,a1
callr READ_SW2_DIP
ori 0ffff0000h,a0
and a1,a0
move @_in_driver_test,a1,1
jrz _wb_norm
andi 1A642020h,a0
cmpi 1A642020h,a0
jruc _wb_driver
_wb_norm:
; ANDI 1A643030H,A0
; CMPI 1A643030H,A0 ;ARE ALL SWITCHES OFF?
ANDI 1A743030H,A0
CMPI 1A743030H,A0 ;ARE ALL SWITCHES OFF?
_wb_driver:
JREQ WB_GO ;BR = YES
INC A8
CMPI 300,A8 ;HAVE WE WAITED TOO LONG?
JRHS WB_GO
SLOOP 1,WB_OPEN_WAIT
WB_GO
PULLP A8
MOVE A0,@SWSET1,L
WB1
SLEEP 10
CALLR CKTEST ; CHECK TEST SWITCHES
CALLR READ_SW1_CNS ; XUNIT GOTTA SEE IF TIME TO LEAVE
move a0,a1
callr READ_SW2_DIP
ori 0ffff0000h,a0
and a1,a0
move @_in_driver_test,a1,1
jrz _wb_norm1
andi 1A642020h,a0
cmpi 1A642020h,a0
jruc _wb_driver1
_wb_norm1:
; ANDI 1A643030H,A0
; cmpi 1a643030h,a0
ANDI 1A743030H,A0
cmpi 1a743030h,a0
_wb_driver1:
; JRNZ WBEND
jrnz wbend1
; SLEEP 1
JRUC WB1
wbend1
SOUND1 DIAG_ESCAPE
WBEND
sleep 10
callr READ_SW1_CNS
move a0,a1
callr READ_SW2_DIP
ori 0ffff0000h,a0
and a1,a0
move @_in_driver_test,a1,1
jrz _wb_norm2
andi 1A642020h,a0
cmpi 1A642020h,a0
jruc _wb_driver2
_wb_norm2:
; andi 1a643030h,a0
; cmpi 1a643030h,a0
andi 1a743030h,a0
cmpi 1a743030h,a0
_wb_driver2:
jrnz WBEND
clr a0
move a0,@_in_driver_test,1
; SOUND1 DIAG_ESCAPE
RETP
**************************************************************************
* *
* CKTEST *
* *
* CHECK TO SEE IF EITHER OF THE TEST BUTTONS IS CLOSED, *
* IF NOT, HEAD OUT TO WARMSET *
* *
* ENTRY *
* NOTHING *
* *
* EXIT *
* NOTHING *
* *
**************************************************************************
CKTEST
;Following removed to accomodate the new momentary coin door test switch
; PUSH A0
; CALLA READ_DIP ;Get the dipswitches
; ANDI DPTEST,A0 ;Is the test switch still closed?
; JRNZ CKRET ;BR = Yes, do nothing
; JAUC WARMSET ;Switch is open, exit
; CALLR READ_SW1_CNS ; XUNIT
; NOT A0
; ANDI 00100000H,A0
; JAZ WARMSET ; WE BE OUTTA HERE!
;CKRET
; PULL A0
RETS
**************************************************************************
* *
* CKDIAG *
* *
* CHECK TO SEE IF WE NEED TO GO OFF TO THE DIAGNOSTICS ROUTINES *
* *
* ENTRY *
* NOTHING *
* *
* EXIT *
* A0 0 = COOL, 1 = GO TO DIAGS *
* *
**************************************************************************
CKDIAG
CLR A0
CALLA READ_DIP
ANDI DPTEST,A0
JRNZ CKDGO
CALLR READ_SW1_CNS ; XUNIT
NOT A0
ANDI 00100000H,A0
JRZ CKDRET
CKDGO
MOVK 1,A0
CKDRET
MOVE A0,A0
RETS
**************************************************************************
* *
* FORCE_MAIN *
* *
* THIS IS CALLED TO GET TO MAIN MENU FROM LEVEL FURTHER *
* THAN 1 DOWN. IT SETS THE GLOBAL FLAG "MAIN_RET" *
* NON ZERO. GEN_MENU WILL KEEP RETURNING UNTIL *
* IT GETS BACK TO THE MAIN MENU. *
* *
**************************************************************************
FORCE_MAIN
MOVK 1,A0 ;POSITIVE NUMBER FORCES MAIN MENU.
MOVE A0,@MAIN_RET,W
RETP ;NOW "RETURN TO THE MENU"
**************************************************************************
* *
* GEN_MENU *
* *
* THIS IS A GENERAL MENU HANDLER. IT POSTS THE MENU *
* WITH SELECTION 1 AVAILABLE. AFTER A SELECTION IS *
* MADE, IF IT HAS A ROUTINE CODE OF ZERO, (EXIT) *
* IT RETURNS TO THE LEVEL ABOVE IT. ELSE, IT *
* JSRP'S THE NEW ROUTINE. WHEN THE NEW ROUTINE *
* RETURNS, WE RE-POST THE SAME MENU WITH THE *
* BAR ON THE FOLLOWING ENTRY. *
* *
* A8 = MENU DESCRIPTOR *
* *
**************************************************************************
*
* MENU ROM OFFSETS
*
MR_FONT EQU 0
MR_TCAL EQU MR_FONT+LONG_SIZE
MR_TITLE EQU MR_TCAL+LONG_SIZE ;POINTER TO TITLE FOR TILE BOX (IF NEC)
MR_TCLR EQU MR_TITLE+LONG_SIZE ;COLOR OF TITLE
MR_WORDS EQU MR_TCLR+WORD_SIZE ;STREAM OF WORDS TO COPY TO PDATA STARTS HERE
MR_X EQU MR_WORDS
MR_Y EQU MR_X+WORD_SIZE
MR_DY EQU MR_Y+WORD_SIZE
MR_COL EQU MR_DY+WORD_SIZE
MR_HITE EQU MR_COL+WORD_SIZE
MR_BDY EQU MR_HITE+WORD_SIZE
MR_DX EQU MR_BDY+WORD_SIZE
MR_WID EQU MR_DX+WORD_SIZE
GEN_MENU
CALLR CKTEST ;ROUND ABOUT 100 ON PLOTBUG
MOVE @GMENULEV,A0,W ;KICK LEVEL POINTER
INC A0
MOVE A0,@GMENULEV,W
*
MOVE A8,-*A12,L ;SAVE MENU PTR
MOVI 1,A8 ;START WITH "FIRST" ENTRY
MOVE A8,-*A12,W ;PUT MENU NUMBER AS A WORD
*
* IF WE GET HERE AND MAIN_RET IS NOT ZERO, THE WE MUST
* RETURN TO LEVEL ABOVE US IF WE'RE NOT THE MAIN
* MENU.
*
GEN_LOOP
MOVE @MAIN_RET,A0,W ;ARE WE IN "EXIT" MODE?
JRZ NO_EXIT ;NO
JRN DIVE_TO_MONITOR ;WE'RE DIVING TO MONITOR PATTERNS.
MOVE @GMENULEV,A0,W ;CHECK LEVEL
CMPI 1,A0 ;ARE WE AT LEVEL 1
JRNZ GEN_EXIT ;NOPE.....POP UP A LEVEL.
*
* WE'RE AT LEVEL 1....CLEAR OUT THE FLAG THAT
* GOT US HERE.
*
DIVE_COMPLETE
CLR A0
MOVE A0,@MAIN_RET,W ;NOW WE MAY PROCEED!
NO_EXIT
MOVE @NO_CLEAR,A0,W ;INHIBIT CLEAR?
JRNZ SKIP_CLR
CALLA CLR_SCRN ;CLEAR THE SCREEN
SKIP_CLR
CLR A0
MOVE A0,@NO_CLEAR,W ;AND RE-SET IT!
MOVE *A12(WORD_SIZE),A8,L ;GET MENU DESCRIPTOR
JSRP MENU_TOP
JSRP CYAN_BOX ;PUT UP MAIN MENU INSTRUCTIONS
MOVE *A12,A9,W ;GET MENU NUMBER TO USE
JSRP B_MENU ;GET RESULT
PHONEY_MENU_RET
MOVE A10,A10 ;WAS IT ADVANCE?
JRZ NO_KICK ;NOPE....LEAVE WHERE HE CAME FROM
INC A8 ;KICK INDEX BY 1 FOR NEXT TIME
NO_KICK
MOVE A8,*A12,W ;AND LEAVE ON THE STACK
MOVE A9,A9 ;NOW JSRP THE ROUTINE
JRZ GEN_EXIT ;NONE THERE....ITS "EXIT"
*
* JSRP TO A9
*
MOVI GEN_LOOP,A7
MOVE A7,-*A12,L ;PUSH RET ADDR
JUMP A9
GEN_EXIT
ADDI WORD_SIZE+LONG_SIZE,A12 ;POP THE ARGUMENTS
MOVE @GMENULEV,A0,W ;KICK LEVEL POINTER
DEC A0
MOVE A0,@GMENULEV,W
RETP
**************************************************************************
* *
* DIVE_TO_MONITOR *
* *
* WE GET CONTROL HERE WHEN WE ARE KLUDGING THE RETURN *
* FROM "CPU" TEST (WHICH BLOWS AWAY RAM!) *
* *
**************************************************************************
DIVE_TO_MONITOR
MOVE @GMENULEV,A0,W ;CHECK LEVEL
CMPI 1,A0 ;ARE WE AT LEVEL 1
JRNZ DTM1 ;NOPE....SET "MONITOR" LEVEL
*
* WE'RE AT LEVEL 1......."SELECT" THE DIAGNOSTIC MENU
* A8 = 1.....A9 = ROUTINE FOR DIAGNOSTIC MENU
*
MOVK 1,A8
.IF PRINTER
.ELSE
MOVI GO_DIAG,A9 ;ROUTINE FOR DIAGNOSTIC MENU
.ENDIF
MOVK 1,A10 ;RETURN AS IF ADVANCE WAS PRESSED
JRUC PHONEY_MENU_RET ;WE'RE READY TO CALL DIAG MENU
*
* WE'RE IN DIAGNOSTIC MENU....NOW WE JUST NEED TO MAKE
* THE "CURRENT" SELECTION THE ONE AFTER CPU TEST
* (MONITOR PATTERNS)
*
DTM1 MOVE @MAIN_RET,A8,W ;FLAG IS OPPOSITE OF ENTRY NUMBER
NEG A8 ;THIS IS RETURN LEVEL!
.IF PRINTER
.ELSE
MOVI RTR_LEV,A8 ;START WITH "RETURN" ENTRY NUMBER
.ENDIF
MOVE A8,*A12,W ;PUT MENU NUMBER AS A WORD
JRUC DIVE_COMPLETE ;THIS COMPLETES THE DIVE!
*
* FOR DOBORDER
*
* A4 = UPPER LEFT Y,X
* A5 = LOWER RIGHT Y,X
* A0 = Y,X WIDTH OF BORDER
* A9 = COLOR OF BORDER.
**************************************************************************
* *
* TOP_BOX *
* *
* THIS DISPLAYS THE TEST BOX AT THE TOP. *
* *
* A2 POINTS AT THE STRING TO CENTER IN THE BOX. *
* A3 IS COLOR TO DO IT IN. *
* *
**************************************************************************
MENU_TOP
MOVE *A8(MR_TITLE),A2,L ;GET TITLE INTO A2
MOVE *A8(MR_TCLR),A3,W ;AND COLOR INTO A3
TOP_BOX
MOVE A8,-*A12,L ;PUSH MENU PTR
*
* FIRST MAKE THE BOX...IT BLACKS OUT THE REGION
*
CALLR SCR_BOX ;PUT UP THE TITLE BOX
MOVI MESS_TITLE,A8 ;SET PARAMETERS
CALLA LM_SETUP ;PUT IT OUT.
MOVE A2,A8 ;GET STRING IN THE CORRECT REGGIE
MOVE A3,A6 ;MOVE COLOR TO COLOR REGGIE
; MOVE A3,A5 ;FIXING THIS WOULD BREAK EVERYTHING!
*
JSRP PRINTF ;AND PRINT IT!
JSRP SCR_REV ;NOW ADD THE REV.
MOVE *A12+,A8,L ;RESTORE THE MENU PTR
RETP
**************************************************************************
* *
* SCR_REV *
* *
* DISPLAY REV IN TITLE BOX. *
* *
**************************************************************************
SCR_REV
MOVI MESS_REV,A8 ;GET READY FOR REV MESSAGE
CALLA LM_SETUP ;SETUP FOR REV MESSAGE
MOVI ROM_NAME,A8 ;USE ROM COPY OF REV.
JSRP PRINTF ;FINISH PRINTING MESSAGE
RETP
**************************************************************************
* *
* SCR_REV_OBJ *
* *
* DISPLAY REV IN TITLE BOX AS OBJECTS *
* *
**************************************************************************
SCR_REV_OBJ
MOVI MESS_REV,A8 ;GET READY FOR REV MESSAGE
CALLA LM_SETUP ;SETUP FOR REV MESSAGE
MOVI STRCNRMO,A1
MOVI ROM_NAME,A8 ;USE ROM COPY OF REV.
JSRP PRINTF ;FINISH PRINTING MESSAGE
RETP
**************************************************************************
* *
* SCR_BOX *
* *
* THIS DISPLAYS THE TITLE BOX. *
* *
**************************************************************************
SCR_BOX
MOVI TIT_ULX+(10000H*TIT_ULY),A4 ;UPPER LEFT
MOVI TIT_LRX+(10000H*TIT_LRY),A5 ;LOWER RIGHT
MOVI COLOR_YELLOW,A9
CALLR STD_BORD ;TACO BELL HAS YOUR ORDER, MAKE A RU-UUUN......
RETS
**************************************************************************
* *
* SCR_BOX_OBJ *
* *
* THIS DISPLAYS THE TITLE BOX AS OBJECTS *
* *
**************************************************************************
SCR_BOX_OBJ
MOVI COLOR_PYELLOW,A1
MOVI TIT_ULX+(10000H*TIT_ULY),A3 ;UPPER LEFT
MOVI MB_XWID,A2 ;LINE THICKNESS
MOVI (TIT_LRX+(10000H*TIT_LRY))-(TIT_ULX+(10000H*TIT_ULY)),A0 ;SIZE
CALLA DRAWBOX_OBJ ;DRAW DAT BOX
RETS
**************************************************************************
* *
* REV_TO_PDATA *
* *
* THIS COPIES THE CURRENT REV. DATA TO THE *
* CALLING (CONTROLLING) PROCESSES' PDATA AREA. *
* *
**************************************************************************
* *
* REV_TO_PDATA *
* MMTM SP,A2,A7,A6,A0 *
* CALLA ADJ_PAGE *
* MOVI NAME_REV,A7 ;POINT AT CMOS NAME STORAGE *
* MOVE A13,A6 ;POINT WITH A6 *
* ADDI PDATA,A6 *
* MOVI NAME_REV_SIZE,A2 ;MAXIMUM NAME SIZE *
* *
* REV_XFER_LOOP *
* CALLA RC_BYTEI ;FETCH A BYTE *
* MOVB A0,*A6 ;PUT IN PROCESS AREA *
* ADDI BYTE_SIZE,A6 ;PUSH THIS POINTER *
* DSJS A2,REV_XFER_LOOP *
* *
* CLR A0 ;STORE A ZERO BEYOND IN CASE ITS *
* MOVE A0,*A6,W ;2 BYTES DOESN'T HURT *
* MMFM SP,A2,A7,A6,A0 *
* RETS *
* *
**************************************************************************
*
* THIS PRINTS THE "MOVE JOYSTICK" BOX.
*
* A8 = MENU DESCRIPTOR THAT WILL ACCOMPANY IT
* ON SCREEN. WE ADJUST THE BOX EDGES AND
* MESSAGE CENTER IN "X" ONLY TO CORRESPOND
* TO THE MENU BOX.
*
CYAN_BOX
MOVE A8,-*A12,L ;PUSH THE MENU PTR
MOVI COLOR_RED,A9
CALLR COL_INST ;THIS PRINTS BOX AND STASHES
* ;CENTER X AT *A13(PDATA),W
move @_cabinet_type,a8
jrz _x_inst1
movi MM_INST1_T2,a8
jruc _x_inst1a
_x_inst1:
MOVI MM_INST1,A8 ;POINT AT INSTRUCTIONS MESSAGE
_x_inst1a:
JSRP C_PD_M
move @_cabinet_type,a8
jrz _x_inst2
movi MM_INST2_T2,a8
jruc _x_inst2a
_x_inst2:
MOVI MM_INST2,A8 ;POINT AT INSTRUCTIONS MESSAGE
_x_inst2a:
JSRP C_PD_M
MOVE *A12+,A8,L ;GET BACK MENU PTR.
RETP
**************************************************************************
* *
* COL_INST *
* *
* THIS PRINTS OUT THE "CYAN" INSTRUCTION BOX *
* IN THE COLOR SPECIFIED BY A9. *
* *
**************************************************************************
COL_INST
*
* WE NEED TO DETERMINE LEFT AND RIGHT X
*
CALLR STUFF_MENU_PROCESS ;MOVE DATA INTO PDATA AREA
CALLR MEN_NUMS ;GET THE NUMBERS FOR THIS MENU
MOVE A6,*A13(PDATA),W ;STASH THE X CENTER
ADDI 10000H*INST_ULY,A4 ;UPPER LEFT Y
ADDI 10000H*INST_LRY,A5 ;UPPER LEFT X
CALLR STD_BORD ;TACO BELL HAS YOUR ORDER, MAKE A RU-UUUN......
RETS
**************************************************************************
* *
* MEN_NUMS *
* *
* THIS IS CALLED TO GET SOME NUMBERS ASSOCIATED *
* WITH A MENU BOX. *
* *
* THIS RETURNS: *
* *
* A4 = LEFT X *
* A5 = RIGHT X *
* A6 = CENTER X *
* *
**************************************************************************
MEN_NUMS
CALLR MENU_UL_A4_A5 ;LEFT X IN A4
CALLR MENU_LR_A6_A5 ;RIGHT X IN A6
MOVE A6,A5 ;COPY RIGHT X INTO A5
ADD A4,A6 ;FIND CENTER
SRL 1,A6 ;A6 NOW HAS CENTER X (FOR LATER)
RETS
**************************************************************************
* *
* C_PD_M *
* *
* THIS PRINTS A L_MESS MESSAGE PASSED IN A8, CENTERED *
* ON THE X STORED AT *A13(PDATA),W *
* *
**************************************************************************
C_PD_M
CALLA LM_SETUP ;SETUP THE MESSAGE
ANDI 0FFFF0000H,A9 ;REMOVE X
MOVE *A13(PDATA),A3,W ;GET THE X
ADD A3,A9 ;PUT OUR X IN
; JUMP A1 ;AND "CALL" THE ROUTINE
JAUC PRINTF
**************************************************************************
* *
* WT_ADV *
* *
* WAIT TILL ADVANCE. THIS HOLDS CONTROL UNTIL ADVANCE *
* BUTTON IS PRESSED. *
* *
**************************************************************************
WT_ADV
SLEEP 2
WT_A6
CALLR GET_ADV ;SCAN THE BUTTON
JRNZ WT_ADV ;NOT PRESSED.
RETP
BEEP_1 .WORD 0F3DFH,010H,08082H,0 ;MENU ITEM SCAN SOUND
WOLF .WORD 0F3DFH,010H,080AEH,0 ;MENU ITEM SELECT SOUND
UHOH .WORD 0F3DFH,010H,0813AH,0 ;FAILURE OF ANY KIND
**************************************************************************
* *
* WW_ADV *
* *
* WAIT WHILE ADVANCE. THIS HOLDS CONTROL WHILE ADVANCE *
* BUTTON IS HELD (OR STUCK). *
* *
**************************************************************************
WW_ADV
SLEEP 2
CALLR GET_ADV
JRZ WW_ADV
RETP
**************************************************************************
* *
* GET_ADV *
* *
* THIS GETS PHYSICAL STATE OF ADVANCE BUTTON. *
* *
* .EQ. PRESSED *
* .NE. OPEN *
* *
**************************************************************************
GET_ADV
MMTM SP,A0
MOVE @COINS,A0,W ;FETCH COIN SWITCHES (LOOKING FOR ADVANCE)
; ANDI ADV_BIT,A0 ;KEEP ADVANCE BIT.
MMFM SP,A0
RETS
**************************************************************************
* *
* GET_MENU *
* *
* This routine is called (via JSRP) to display a menu on *
* screen and receive a selection from the operator. *
* *
* The menu descriptor is passed in A8. *
* *
* The selection number is returned in a8. (line 1 = 1) *
* The routine address is returned in a9. *
* A10 is returned non-zero if advance was the button used *
* *
* A menu (pointed to by A8) is defined as follows: *
* *
* FONT TO BE USED (LONG) *
* X FOR LEFT MARGIN (WORD) *
* Y FOR TOP LINE (WORD) *
* DY PER ENTRY (WORD) *
* TEXT_COLOR (WORD) *
* HEIGHT OF SELECTION BAR (WORD) *
* DX FROM TOP OF TEXT TO SEL. BAR (WORD) *
* *
* A9 POINTS AT ENTRY TO START WITH *
* *
* Then for each entry: *
* *
* TEXT POINTER (LONG) *
* ACTIVATION ROUTINE (LONG) *
* *
* The list is terminated by a zero. *
* *
* This routine forks a separate process to do the work *
* for it. Therefore the caller has full use of *
* the PDATA area. *
* *
**************************************************************************
*
* Equates for GET_MENU slave process.
*
MEN_OFF EQU PDATA ;WORD-OFFSET INTO MENU OF SELECTION
MEN_ROUT EQU MEN_OFF+WORD_SIZE ;LONG-ROUTINE FOR SELECTION
MEN_ROM EQU MEN_ROUT+LONG_SIZE ;LONG-POINTER TO ROM STRUCTURE
MEN_ULX EQU MEN_ROM+LONG_SIZE ;WORD-LEFT X (CENTER X WHEN CENTERING)
MEN_ULY EQU MEN_ULX+WORD_SIZE ;WORD-TOP Y
MEN_DY EQU MEN_ULY+WORD_SIZE ;WORD-Y UNITS PER ENTRY
MEN_COLR EQU MEN_DY+WORD_SIZE ;WORD-COLOR FOR ENTRIES
MEN_BAR EQU MEN_COLR+WORD_SIZE ;WORD-HEIGHT OF SELECTION BAR
MEN_BDY EQU MEN_BAR+WORD_SIZE ;WORD-DY FROM TOP OF TEXT TO TOP OF BAR.
MEN_BDX EQU MEN_BDY+WORD_SIZE ;WORD-DX FROM LEFT OF WORD TO LEFT OF BAR
MEN_BWID EQU MEN_BDX+WORD_SIZE ;WORD-WIDTH OF BAR
MEN_SCOL EQU MEN_BWID+WORD_SIZE ;WORD-COLOR OF SELECTED TEXT
MEN_TPTR EQU MEN_SCOL+WORD_SIZE ;LONG-POINTER TO BEGINNING OF TEXT ENTRIES.
MEN_ENTS EQU MEN_TPTR+LONG_SIZE ;WORD-NUMBER OF ENTRIES IN MENU
MEN_CUR EQU MEN_ENTS+WORD_SIZE ;WORD-CURRENT SELECTION (1ST IS 1)
MEN_WALK EQU MEN_CUR+WORD_SIZE ;WORD-NUMBER OF ENTRY WE'RE ON AS WE WALK
MEN_STIK EQU MEN_WALK+WORD_SIZE ;LONG-"STUCK" STATE OF SWITCHES
MEN_ACT EQU MEN_STIK+LONG_SIZE ;LONG-SWITCH WE'RE ACTING ON. (BIT)
MEN_TYPO EQU MEN_ACT+LONG_SIZE ;WORD-TYPOMATIC COUNTER
MEN_HITS EQU MEN_TYPO+WORD_SIZE ;WORD-CONSECUTIVE TYPOMATIC HITS
MEN_ADV EQU MEN_HITS+WORD_SIZE ;WORD-NON-ZERO IF ADVANCE WAS BUTTON USED
WORD_ENTS EQU (MEN_TPTR-MEN_ULX)/WORD_SIZE ;NUMBER OF WORD ENTRIES
B_MENU
MOVI BD_SLAVE,A7
JRUC GMJMP
GET_MENU
MOVI GM_SLAVE,A7 ;THIS IS ROUTINE
GMJMP
MOVI MENU_PID,A1 ;THIS IS ID
CALLA GETPRC ;CREATE IT
MOVE A0,A10 ;SAVE HIS POINTER
GM1
SLEEP 2
MOVI MDUN_PID,A0
CALLA EXISTP_ALL ;WAIT FOR ID TO CHANGE TO THIS!
JRZ GM1 ;LOOP UNTIL IT EXISTS!
MOVE *A10(MEN_OFF),A8,W ;RETURN OFFSET OF SELECTION
MOVE *A10(MEN_ROUT),A9,L ;AND ROUTINE THAT WAS SELECTED.
MOVE *A10(MEN_ADV),A10,W ;INDICATE WHETHER ADVANCE WAS USED
MOVI MDUN_PID,A0
CALLA KILLPROC_ALL ;KILL THE HANGING MENU GETTER!
RETP ;AND RETURN
**************************************************************************
* *
* GM_SLAVE *
* *
* This displays the menu.......moves the selection bar *
* and returns the selection information by stuffing *
* it in its process area and changing its ID to *
* MDUN_PID once selection is made. *
* *
* On entry....A8 points at the GET_MENU data structure. *
* A9 is which entry to start with selected. *
* *
**************************************************************************
BD_SLAVE
CALLR MENU_BORDER ;DRAW THE BORDER FOR SELCTIONS.
GM_SLAVE
JSRP ST_STICK ;TELL STICK(S) AND BUTTONS WE'RE STARTING.
CALLR STUFF_MENU_PROCESS ;MOVE DATA INTO PDATA AREA
*
* PLOT ENTIRE MENU
*
* DO_MENU_LINE WILL RETURN CARRY SET
* WHEN WE GET BEYOND THE END.
*
MOVK 1,A0 ;SETUP FOR LINE 1.
DO_ANOTHER_LINE
MOVE A0,*A13(MEN_WALK),W ;WALK THROUGH.
JSRP DO_MENU_LINE ;PUT OUT LINE IN A0.
MOVE *A13(MEN_WALK),A0,W ;GET BACK THE COUNTER
INC A0 ;MOVE TO NEXT ENTRY.
MOVE *A13(MEN_ENTS),A1,W ;SEE IF WE'RE DONE.
CMP A1,A0
JRLS DO_ANOTHER_LINE
*
* MAIN MENU PLOTTED......NOW LET THE DMA UN-LOAD BEFORE PLOTTING HELP
*
CALLR PLOT_HELP ;PLOT HELP FOR 1ST IF NECESSARY
*
* NOW WE JUST WANT TO UPDATE BASED ON STICK...ACT
* ON BUTTONS!
*
* RESPONSES: UP....DOWN....BUTTON....NOTHING....
*
* NOTHING = 0
* UP = 1
* DOWN = 2
* BUTTON = 3
*
* A0 = RESPONSE
* A1 = MEN_CUR VALUE.
*
CLR A0
MOVE A0,*A13(MEN_HITS),W
MOVE A0,*A13(MEN_TYPO),L
MENU_LOOP
SLEEP 1
JSRP GETSTICK ;CHECK OUT THE PLAYER BOARD
MOVE A0,A0
JRNZ ML1 ;BR = GOT SOMETHING
MOVE A0,*A13(MEN_HITS),W ;CLEAR TIMER AND DIRECTION
MOVE A0,*A13(MEN_TYPO),W
JRUC MENU_LOOP
ML1
MOVE *A13(MEN_HITS),A1,W ;GET LAST DIRECTION
ANDI 7,A1 ;MASK OFF REPEAT BIT
CMP A0,A1
JRZ ML2 ;BR = YES, STILL SAME THING
MOVE A0,*A13(MEN_HITS),W
CLR A1
MOVE A1,*A13(MEN_TYPO),W ;CLEAR THE TIMER
JRUC MLDONE ;PROCESS INITIAL HIT
ML2
MOVE *A13(MEN_HITS),A1,W ;SNAG THE REPEAT BIT
ANDI 80H,A1
JRNZ ML3 ;BR = IN REPEAT MODE
MOVE *A13(MEN_TYPO),A0,W ;GET TIMER
INC A0
MOVE A0,*A13(MEN_TYPO),W
CMPI 15,A0
JRLO MENU_LOOP ;GO BACK TO SLEEP
CLR A0
MOVE A0,*A13(MEN_TYPO),W ;CLEAR OUT THE TIMER
MOVE *A13(MEN_HITS),A1,W
MOVE A1,A0
ORI 80H,A1 ;PUT UPPER BIT ON
MOVE A1,*A13(MEN_HITS),W ;SET DIRECTION WITH REPEAT ON
JRUC MLDONE
ML3
MOVE *A13(MEN_TYPO),A0,W ;GET TIMER
INC A0
MOVE A0,*A13(MEN_TYPO),W
CMPI 5,A0
JRLO MENU_LOOP ;GO BACK TO SLEEP
CLR A0
MOVE A0,*A13(MEN_TYPO),W ;CLEAR OUT THE TIMER
MOVE *A13(MEN_HITS),A0,W
ANDI 7H,A0 ;TURN OFF REPEAT BIT
MLDONE
MOVE *A13(MEN_CUR),A1,W ;GET CURRENT ENTRY...IN A1
cmpi 4,a0 ;ESCAPE BUTTON?
jrz menu_escape ;YEP KILL OFF THIS LEVEL
CMPI 3,A0 ;BUTTON?
JRZ MENU_BUTTON ;YEP....WE'RE OUT OF HERE.
CMPI 2,A0
JRZ MENU_DOWN ;ITS DOWN....
*
* REQUEST TO GO UP....ARE WE AT #1
*
mmtm sp,a0,a1
move @SCODE,a0,W
move @DCODE,a1,W
or a0,a1
jrz _no_scode_sub
movk 2,a1
move a1,@_in_volume_adjust,1
subk 1,a0
jrnn _scode_ok
clr a0
_scode_ok:
move a0,@SCODE,W
mmfm sp,a0,a1
jruc MENU_BUTTON
_no_scode_sub:
mmfm sp,a0,a1
CMPI 1,A1 ;WELL?
JRLS MENU_LOOP ;YEP....IGNORE
JSRP UN_SELECT ;PUT BACK THE OLD "CURRENT ONE
MOVE *A13(MEN_CUR),A0,W ;GET CURRENT ENTRY
DEC A0 ;MAKE ONE LESS.
mmtm sp,a0,a1
SOUND1 DIAG_UP
mmfm sp,a0,a1
JRUC JOIN_DOWN ;NOW PLOT THE NEW ONE.
MENU_DOWN
mmtm sp,a0,a1
move @SCODE,a0,W
move @DCODE,a1,W
or a0,a1
jrz _no_scode_add
movk 2,a1
move a1,@_in_volume_adjust,1
addk 1,a0
move a0,@SCODE,W
mmfm sp,a0,a1
jruc MENU_BUTTON
_no_scode_add:
mmfm sp,a0,a1
MOVE *A13(MEN_ENTS),A2,W ;GET NUMBER IN MENU
CMP A2,A1 ;ARE WE AT MAX
JRHS MENU_LOOP ;YEP...NO ACTION
JSRP UN_SELECT ;PUT BACK THE OLD "CURRENT ONE
MOVE *A13(MEN_CUR),A0,W ;GET CURRENT ENTRY
INC A0 ;MAKE THIS THE NEXT.
mmtm sp,a0,a1
SOUND1 DIAG_DOWN
mmfm sp,a0,a1
JOIN_DOWN
MOVE A0,*A13(MEN_CUR),W ;PUT BACK
JSRP DO_MENU_LINE ;PUT OUT LINE IN A0.
*
* MAKE THE "DINK" SOUND HERE FOR ENTRY TO ENTRY MOVEMENT
*
CALLR PLOT_HELP ;PLOT HELP NEW ONE
SLEEP 1 ;DELAY BEEP 1 FRAME
; SOUND1 BEEP_1 ;MAKE A BEEP.
JRUC MENU_LOOP ;AND WAIT FOR NEXT RESPONSE.
*
* CONTROL COMES HERE WHEN A BUTTON IS PRESSED
*
* The selection number is returned in a8. (line 1 = 1)
* The routine address is returned in a9.
MENU_BUTTON
*
* A0 HAS A 3.
* A2 HAS THE BUTTON BIT.....IS IT ADVANCE?
*
mmtm sp,a0
move @_in_volume_adjust,a0,L
jrnz _no_enter_sound
SOUND1 DIAG_ENTER ;MAKE THE CASH SOUND
_no_enter_sound:
mmfm sp,a0
MOVE *A13(MEN_ROM),A0,L
CMPI MEN_ADJ,A0 ;SPECIAL CASE FOR MENU ADJ
JRNZ MBNOTADJ
CALLA CKDIP
JRNZ MBNOTADJ ;NOT USING DIP SWITCHES
MOVE *A13(MEN_CUR),A0,W ;GET THE SELECT ITEM
CMPI 2,A0 ;"STANDARD PRICING"
JRZ MBABORT
CMPI 3,A0 ;"CUSTOM PRICING"
JRZ MBABORT
CMPI 4,A0 ;"FREE PLAY"
JRNZ MBNOTADJ
MBABORT
; SOUND1 UHOH
JRUC MENU_LOOP
MBNOTADJ
CLR A0 ;NOT ADVANCE
IS_ADV
MOVE A0,*A13(MEN_ADV),W ;NON ZERO IF IT WAS ADVANCE
JSRP BUTTON_STALL ;HIGHLIGHT SELECTION AND HANG ON BUTTON
MOVE *A13(MEN_CUR),A0,W ;GET "CURRENT" ENTRY.
CALLR GET_MENU_DATA ;A1=CURRENT_OFFSET A2=TEXT A3=ROUTINE
MOVE A0,*A13(MEN_OFF),W ;STORE THE OFFSET (CHOICE NUM)
MOVE A3,*A13(MEN_ROUT),L ;AND THE ROUTINE POINTER
MOVI MDUN_PID,A0
MOVE A0,*A13(PROCID),W ;CHANGE OUR ID.
MENU_DONE
SLEEP 20
JRUC MENU_DONE ;NOW HANG TILL DISPATCHER SEES ID.
menu_escape:
mmtm sp,a0,a1
SOUND1 SOUNDS_OFF
move @SCODE,a0,W ;ARE WE IN SOUND REPEAT ?
move @DCODE,a1,W
or a0,a1
jrz mbe_norepeat ;BR = NOT REPEATING SOUNDS
clr a0
move a0,@_in_volume_adjust,1
move a0,@SCODE,W
move a0,@DCODE,W
mmfm sp,a0,a1
movk 2,a0
jruc MENU_DOWN
mbe_norepeat:
mmfm sp,a0,a1
SOUND1 DIAG_ESCAPE
CLR A0 ;NOT ADVANCE
MOVE A0,*A13(MEN_ADV),W ;NON ZERO IF IT WAS ADVANCE
JSRP BUTTON_STALL ;HIGHLIGHT SELECTION AND HANG ON BUTTON
MOVE *A13(MEN_CUR),A0,W ;GET "CURRENT" ENTRY.
CALLR GET_MENU_DATA ;A1=CURRENT_OFFSET A2=TEXT A3=ROUTINE
clr a0
MOVE A0,*A13(MEN_OFF),W ;STORE THE OFFSET (CHOICE NUM)
MOVE A0,*A13(MEN_ROUT),L ;AND THE ROUTINE POINTER
MOVI MDUN_PID,A0
MOVE A0,*A13(PROCID),W ;CHANGE OUR ID.
jruc MENU_DONE
**************************************************************************
* *
* MENU UTILITIES *
* *
**************************************************************************
**************************************************************************
* *
* BUTTON_STALL *
* *
* THIS IS CALLED WHEN THE MENU GETS A BUTTON HIT. *
* A1 HAS THE BIT OF THE BUTTON. *
* *
* WE PAINT THE MENU SQUARE TO FEEDBACK THE HIT. *
* *
* THEN WE HANG ON THE BUTTON UNTIL ITS LET GO. *
* *
**************************************************************************
BUTTON_STALL
MOVE A2,@LAST_BUT,L ;PUSH THE BUTTON STATE
MOVE @SCODE,A0,W ;NO CASH FOR REPEAT SOUND CODES
MOVE @DCODE,A1,W
OR A0,A1
JRNZ DONT_WAIT ;ITS A SOUND REPEAT....DON'T HOLD EITHER!
MOVE *A13(MEN_CUR),A0,W ;GET CURRENT SELECTION
MOVI COLOR_YELLOW,A1
CALLR MENU_BAR ;CHANGE THE BAR COLOR.
CALLR GET_MENU_DATA ;GET OUR TEXT POINTER BACK
MOVI COLOR_WHITE,A1 ;WHITE ON ORANGE DURING HOT MOMENT
JSRP MENU_TEXT ;AND WRITE INVERTED TEXT
MOVE @LAST_BUT,A8,L ;GET BUTTON BACK
MOVI 08H,A9 ;MINIMUM TIME FOR BUTTON HIGHLITE
MOVI 2AH,A10 ;.5 SECONDS OF ADVANCE HOLD-DOWN
* ;WILL EXIT TEST MODE.
WAIT_FOR_RELEASE
; CMPI ADV_HIGH,A8 ;IS IT ADVANCE BUTTON?
; JRNZ NOT_ADV ;NOPE.....NEVER MIND
; DEC A10 ;1 LESS TIME UNIT
; JRZ DIAG_EX ;IF HE HOLDS ADVANCE...WE'RE GONE!
NOT_ADV SLEEP 1
MOVE A9,A9 ;REDUCE FOR HELD TIME
JRZ WAIT_1 ;ZEROED OUT ALREADY.
DEC A9
WAIT_1
CALLR FORM_SWS ;WAIT FOR THIS ONE TO GO TO ZERO
AND A8,A0 ;IS OUR BUTTON STILL DOWN?
JRNZ WAIT_FOR_RELEASE
*
* ITS RELEASED...NOW SHOW ORANGE BAR FOR MINIMUM TIME
INC A9 ;MAKE SURE A9 HAS 1 OR MORE
WAIT_2
SLEEP 1
DSJS A9,WAIT_2
DONT_WAIT
MOVE *A13(MEN_CUR),A0,W ;GET CURRENT SELECTION
CLR A1 ;ERASE BAR
CALLR MENU_BAR ;CHANGE THE BAR COLOR.
CALLR GET_MENU_DATA ;GET OUR TEXT POINTER BACK
MOVE *A13(MEN_COLR),A1,W ;RE-PLOT THE NORMAL TEXT
JSRP MENU_TEXT
SLEEP 2 ;NOW GIVE SOME BOUNCE PROTECTION.
RETP
**************************************************************************
* *
* STUFF_MENU_PROCESS *
* *
* THIS IS CALLED TO STUFF THE MENU ROM DATA INTO THE *
* CURRENT PROCESSES PDATA AREA. *
* *
**************************************************************************
STUFF_MENU_PROCESS
MMTM SP,A0,A1,A2,A3,A8
MOVE A13,A0 ;POINT IN PROCESS AREA
ADDI MEN_ROM,A0 ;THIS IS WHERE 1ST TIDBIT GOES
MOVE A8,*A0+,L ;STORE OUR BASE POINTER IN STRUCTURE
ADDI MR_WORDS,A8 ;MOVE TO WORD LIST
MOVI WORD_ENTS,A2 ;NOW THIS MANY MORE WORDS.
GMS1 MOVE *A8+,A1,W
MOVE A1,*A0+,W
DSJS A2,GMS1
*
* ALL THE MENU PARAMETERS ARE NOW IN THE PDATA AREA.
* A8 POINTS AT THE FIRST ITEM TO DISPLAY.
*
MOVE A8,*A13(MEN_TPTR),L ;STORE IN PROCESS AREA.
*
* NOW WE WANT TO FIND THE NUMBER OF ENTRIES IN THE MENU
*
CLR A0 ;START AT #1.
HOW_MANY
INC A0 ;MOVE TO NEXT ENTRY.
CALLR GET_MENU_DATA ;GET THE PARAMETERS FOR THIS ENTRY
MOVE A2,A2 ;AND SEE IF A2=0
JRNZ HOW_MANY ;ITS REAL.....PUT IT UP.
DEC A0 ;PREVIOUS LINE WAS THE LAST.
MOVE A0,*A13(MEN_ENTS),W ;STUFF NUMBER IN MENU.
MOVE A9,A9 ;DID BOZO PASS ZERO AS CURRENT?
JRZ USE_LAST
CMP A0,A9 ;MAKE SURE ITS NOT TOO HIGH
JRHI USE_LAST ;A9 IS TOO HIGH
MOVE A9,A0 ;USE THE ONE PAST
USE_LAST MOVE A0,*A13(MEN_CUR),W ;MAKE ENTRY "1" CURRENT.
MMFM SP,A0,A1,A2,A3,A8
RETS
**************************************************************************
* *
* DO_MENU_LINE *
* *
* A0 HAS THE LINE TO DO. (1 THROUGH N). *
* PRINT TEXT NORMAL IF NOT "MEN_CUR". *
* PRINT INVERT BAR FOLLOWED BY BLACK TEXT IF *
* ITS THE CURRENT ENTRY. *
* *
**************************************************************************
DO_MENU_LINE
CALLR GET_MENU_DATA ;GET "CURRENT" IN A1
CMP A0,A1 ;IS IT "CURRENT" ENTRY?
JRZ DO_CURRENT_ENT ;YEP....DO INVERSE STUFF
*
* A0 HAS OFFSET (FOR POSITIONING)
* A2 HAS TEXT POINTER (FOR MESSAGE)
* A1 NEEDS COLOR FOR MESSAGE.
*
MOVE *A13(MEN_COLR),A1,W ;USE THE NORMAL ENTRY COLOR
JSRP MENU_TEXT ;PUT UP THE "TEXT" PORTION.
RETP ;AND RETURN
DO_CURRENT_ENT
MOVI COLOR_WHITE,A1 ;DO THE BAR IN WHITE (AT A0 HEIGHT)
CALLR MENU_BAR ;PUT IT UP (A0 PRESERVED)
CALLR GET_MENU_DATA ;GET OUR TEXT POINTER BACK
MOVE *A13(MEN_SCOL),A1,W ;GET "SELECTED" COLOR
JSRP MENU_TEXT ;AND WRITE INVERTED TEXT
RETP ;THAT'S ALL FOLKS.
**************************************************************************
* *
* UN_SELECT *
* *
* THIS IS CALLED TO "UN-SELECT" THE CURRENT ENTRY. *
* *
**************************************************************************
UN_SELECT
MOVE *A13(MEN_CUR),A0,W ;POINT AT CURRENT ENTRY
CLR A1 ;USE BLACK FOR BACKGROUND
CALLR MENU_BAR ;THIS REMOVES THE BAR.
CALLR GET_MENU_DATA ;NOW GET A2 TO TEXT POINTER
MOVE *A13(MEN_COLR),A1,W ;USE THE NORMAL ENTRY COLOR
JSRP MENU_TEXT ;PUT UP THE "TEXT" PORTION.
RETP ;AND RETURN
**************************************************************************
* *
* MENU_BAR *
* *
* THIS IS CALLED TO PUT UP THE SELECTION BAR FOR *
* THE ENTRY IN A0, IN THE COLOR IN A1. *
* *
* THIS ROUTINE MUST PRESERVE A0. *
* *
**************************************************************************
* STRNGLEN - RETURNS THE LENGTH, IN PIXELS, OF A GIVEN STRING *
* A8 = PTR TO STRING *
* A10 = [Y,X] SPACING OF STRING *
* A11 = PTR TO FONT TABLE *
* RETURNS: *
* A7 = LENGTH OF STRING *
* Z BIT SET IF LENGTH IS ZERO *
*
* FOR FILLAREA
*
* A1 = <COLOR><PALETTE>
* A3 = DAG OF AREA [YPOS,XPOS]
* A4 = [Y,X] SIZE OF AREA
*
MENU_BAR MMTM SP,A0,A1,A3,A4,A5,A6,A7,A8 ;SAVE THE OFFSET
MMTM SP,A1 ;SAVE COLOR!
CALLR GET_MENU_DATA ;GET THE TEXT POINTER
CALLR STLEN_SETUP ;SETUP FOR STRLEN CALL.
CALLA STRNGLEN ;FIND WIDTH OF STRING.
*
* A7 HAS LENGTH OF STRING.
*
* WE NEED TO GET INTO A3 THE COORDINATES UF UPPER LEFT
* AND A4 THE LENGTH.
*
* IF WE'RE CENTERING, WE USE THE BAR WIDTH PARAMETER
* ALONG THE CENTER LINE.
*
* IF WE'RE LEFT JUSTIFIED, WE'LL LET THE BOX GO THE
* LENGTH OF THE TEXT FOR NOW.
*
MOVE *A13(MEN_ULX),A3,W ;LEFT X IN A3
*
* IF WE'RE CENTERING....WE NEED TO MOVE THE "LEFT X" BACK HALF
* THE WIDTH OF THE STRING.
*
MOVE *A13(MEN_ROM),A6,L ;GET ROM POINTER
MOVE *A6(MR_TCAL),A6,L ;CHECK ROUTINE
CMPI STRCNRM,A6
JRNZ NOT_CENTERING
*
* WE'RE CENTERING....CENTER X IS IN A3
*
MOVE *A13(MEN_BWID),A7,W ;A7 IS THE REGISTER FOR BAR WIDTH
MOVE A7,A4 ;GET COPY IN A4
SRL 1,A4 ;1/2 OF WIDTH COMES OFF OF CENTER
SUB A4,A3 ;A3 NOW HAS "LEFT X"
JRUC CENTERING ;A7 IS WIDTH...A3 IS X
*
* LEFT JUSTIFIED....DO IT THE OLD WAY!
*
NOT_CENTERING
MOVE *A13(MEN_BDX),A4,W ;GET EXTRA X UNITS FOR BAR
SUB A4,A3
* NOW ADD TWICE THE EXTRA X TO THE STRING LENGTH TO
* FORM THE BAR LENGTH.
*
SLL 1,A4 ;NOW DOUBLE THE EXCESS DX FOR BAR
ADD A4,A7 ;NOW A7 HAS WIDTH OF BAR
CENTERING
SUBI C_KLUDGE,A3 ;KLUDGE TO NULLIFY FINAL SPACE.
CALLR GET_ENTRY_Y ;GET Y FOR ENTRY IN A5
MOVE *A13(MEN_BDY),A6,W ;GET BAR DY (NEGATIVE)
ADD A6,A5 ;ADJUST Y BY BAR DY
SLL 16,A5 ;SHIFT Y INTO POSITION
ADD A5,A3 ;A3 NOW POINTS AT UPPER LEFT
MOVE *A13(MEN_BAR),A4,W ;Y HEIGHT OF BAR
SLL 16,A4 ;IN POSITION
ADD A7,A4 ;A7 HAS X WIDTH OF BAR.
MMFM SP,A1 ;NOW GET COLOR BACK!
SLL 16,A1 ;SHIFT COLOR TO HIGH HALF (PAL. 0)
CALLA FILLAREA ;FILL IT UP!
MMFM SP,A0,A1,A3,A4,A5,A6,A7,A8 ;SAVE THE OFFSET
RETS
**************************************************************************
* *
* MENU_TEXT *
* *
* THIS IS CALLED TO DISPLAY THE TEXT FOR AN ENTRY. *
* *
* A0 HAS OFFSET (FOR POSITIONING) *
* A1 HAS COLOR FOR MESSAGE. *
* A2 HAS TEXT POINTER (FOR MESSAGE) *
* *
* WE NEED TO SHIFT THE DATA FOR THE TEXT ROUTINE *
* AS FOLLOWS: *
* *
* A0 = SLEEP *
* A5 = COLOR *
* A8 = POINTER *
* A9 = ADDRESS *
* A10 = SPACING *
* A11 = FONT *
* *
**************************************************************************
MENU_TEXT
CALLR GET_ENTRY_Y ;GET Y FOR ENTRY IN A5
SLL 16,A5 ;SHIFT Y INTO POSITION
MOVE *A13(MEN_ULX),A9,W ;GET THE X
ADD A5,A9 ;A9 SET WITH SCREEN ADDRESS
; MOVE A1,A6 ;COLOR -- THIS IS NARC STYLE
MOVE A1,A5 ; FIX FOR PASSING COLORS -- JKM
SLL 16,A5
CLR A0 ;NO SLEEP
CALLR STLEN_SETUP
MOVE *A13(MEN_ROM),A1,L
MOVE *A1(MR_TCAL),A1,L ;GET THE ROUTINE TO USE
; JUMP A1 ;AND CALL IT!
JAUC PRINTF
STLEN_SETUP
MOVE A2,A8 ;TEXT POINTER
MOVI SPACING20,A10 ;SPACING
MOVE *A13(MEN_ROM),A11,L
MOVE *A11(MR_FONT),A11,L ;LOAD FONT
RETS
**************************************************************************
* *
* MENU JOYSTICK HANDLING *
* *
**************************************************************************
**************************************************************************
* *
* ST_STICK *
* *
* INITIALIZE THE STUCK STICK STUFF *
* *
* ENTRY *
* NOTHING *
* *
* EXIT *
* NOTHING *
* *
**************************************************************************
ST_STICK
CALLR READ_SW1_CNS ; XUNIT
MOVE A0,*A13(MEN_STIK),L ; BITS TO IGNORE PART 1
RETP
**************************************************************************
* *
* GETSTICK *
* *
* CHECKS OUT ALL THE STICKS ON THE BOARD AND RETURNS SOME *
* USEFUL INFO ABOUT THEM *
* *
* ENTRY *
* NOTHING *
* *
* EXIT *
* A0 STICK/BUTTON CONDITION *
* 0 = NOTHING *
* 1 = STICK UP *
* 2 = STICK DOWN *
* 3 = BUTTON DOWN *
* *
**************************************************************************
GETSTICK:
;
CALLR CKTEST ; CHECK THE TEST SWITCH
;
MMTM SP,A3,A4
;
; THIS ALSO TAKES CARE OF STUCK SWITCHES
;
CALLR READ_SW1_CNS ; XUNIT
move a0,a2
move @SWITCH2,a0,L
ori 0ffff0000h,a0
and a0,a2
MOVE *A13(MEN_STIK),A0,L
NOT A0 ; THIS IS SOOOOO GROSS
NOT A2
AND A2,A0
NOT A0
MOVE A0,*A13(MEN_STIK),L
AND A0,A2 ; IGNORE SOME BITS
;
; SCAN FOR BUTTONS
;
MOVE A2,A4 ;CHECK ALL BUTTONS
; ANDI 00003030H,A4
; switches
ANDI 00503030H,A4 ;TEST/ESCAPE P1,2,3,or 4 a or b BUTTON ?
JRZ GSCKSTK ;BR = NO BUTTONS
; ANDI 00001010H,A4 ;FIRE BUTTONS?
; switches
ANDI 00101010H,A4 ;TEST P1,2,3,or 4 a BUTTON?
JRZ GSCK1 ;BR = NO
MOVK 2,A2
JRUC GSGOTBUTS
GSCK1
MOVK 1,A2 ;MUSTA BEEN AN ESCAPE
JRUC GSGOTESC
*
* SCAN FOR START BUTTONS
*
GSCKSTK
BTST 18,A2
JRNZ GSGOTUP
BTST 27,A2
JRNZ GSGOTUP
BTST 21,A2
JRNZ GSGOTDOWN
BTST 28,A2
JRNZ GSGOTDOWN
GSAINTGOT
CLR A0
JRUC GSRET
GSGOTUP
move @_in_volume_adjust,a0,1
cmpi 2,a0
jrz _up_snd_done
move a0,a0
jrnz _noup_sound
jruc _up_snd_done
_noup_sound:
ADJUST ADJMINVOL
move a0,a4
ADJUST ADJVOLUME
addi -1,a0
cmp a4,a0
jrge _vol_min
move a4,a0
_vol_min:
move a0,@_volume_level,1
move a0,a1
movi ADJVOLUME,a0
calla PUT_ADJ
calla F_ADC_S
calla SET_VOLUME
calla draw_volume_scale
_up_snd_done:
MOVK 1,A0
JRUC GSRET
GSGOTDOWN
move @_in_volume_adjust,a0,1
cmpi 2,a0
jrz _down_snd_done
move a0,a0
jrnz _nodown_sound
jruc _down_snd_done
_nodown_sound:
ADJUST ADJVOLUME
addi 1,a0
cmpi 256,a0
jrlt _vol_max
movi 255,a0
_vol_max:
move a0,@_volume_level,1
move a0,a1
movi ADJVOLUME,a0
calla PUT_ADJ
calla F_ADC_S
calla SET_VOLUME
calla draw_volume_scale
_down_snd_done:
MOVK 2,A0
JRUC GSRET
GSGOTBUTS
MOVK 3,A0
jruc GSRET
GSGOTESC:
movk 4,a0
GSRET
MOVE A0,A0 ; SET THE FLAGS
MMFM SP,A3,A4
RETP
**************************************************************************
* *
* FRST_BIT *
* *
* A0 HAS 1 OR MORE BITS SET....RETURN 1 OF THEM. *
* *
**************************************************************************
FRST_BIT MMTM SP,A1,A2
MOVK 1,A1 ;SHIFT TILL WE FIND IT.
FB1 MOVE A0,A2
AND A1,A2
JRNZ GOT_IT ;WE HAVE ON (IN A1)
SLL 1,A1 ;SHIFT IT
JRUC FB1
GOT_IT MOVE A1,A0 ;RETURN THE BIT
MMFM SP,A1,A2
RETS
**************************************************************************
* *
* FORM_SWS *
* *
* GET THE SWITCHES....1=CLOSED.....AND SAVE *
* THIS SCAN AS "LAST STATE". RETURN: *
* *
* CURRENT STATE IN A0 *
* PREVIOUS STATE IN A1 *
* *
**************************************************************************
FORM_SWS
MOVE *A13(MEN_STIK),A1,L ;RETURN PREVIOUS STATE
CALLR READ_SW1_CNS ; XUNIT GET BOTH SWITCH WORDS
NOT A0 ;COMPLEMENT
MOVE A0,*A13(MEN_STIK),L ;SAVE "STUCK" STATE.
RETS
**************************************************************************
* *
* GET_MENU_DATA *
* *
* A0 IS OFFSET OF ENTRY OF INTEREST *
* *
* RETURN A1 = CURRENT OFFSET *
* A2 = TEXT POINTER *
* A3 = ROUTINE *
* *
**************************************************************************
GET_MENU_DATA
MMTM SP,A0 ;DON'T ALTER A0
CALLR PM_ENTRY ;POINT A1 AT ENTRY
MOVE *A1(MENU_TEXT_PTR),A2,L ;FETCH THE TEXT POINTER
MOVE *A1(MENU_ROUTINE),A3,L ;FETCH THE ROUTINE
MOVE *A13(MEN_CUR),A1,W ;RETURN CURRENT ENTRY IN A1
MMFM SP,A0 ;DON'T ALTER A0
RETS
**************************************************************************
* *
* PM_ENTRY *
* *
* A0 = MENU ENTRY OF INTEREST *
* RETURN A1 -> POINTS AT <TEXT><ROUTINE><HELP> FOR THIS *
* ENTRY. *
* *
**************************************************************************
PM_ENTRY
MMTM SP,A0
DEC A0 ;INDEX FROM ZERO
MOVI MENU_ENTRY_SIZE,A1 ;TIMES SIZE PER ENTRY
MPYU A0,A1 ;A1 CONTAINS OFFSET INTO TABLE
MOVE *A13(MEN_TPTR),A0,L ;GET THE BASE OF THE MENU TEXT ENTRIES
ADD A0,A1 ;ADD TO OFFSET
MMFM SP,A0
RETS
**************************************************************************
* *
* PLOT_HELP *
* *
* THIS ROUTINE PLOTS (OR CLEARS) THE HELP AREA *
* FOR THE CURRENT ENTRY. *
* *
**************************************************************************
PLOT_HELP
MOVE *A13(MEN_CUR),A0,W ;GET CURRENT ENTRY
CALLR PM_ENTRY ;A1 POINTS AT GROUP
MOVE *A1(MENU_HELP),A8,L ;GET HELP TABLE
CMPI NO_HELP,A8 ;NOT A "HELP" SITUATION?
JRZ NO_HELP_FOR_THIS_ONE
CMPI ADJ_HELP,A8 ;ADJUSTMENT HELP REQUESTED?
JAEQ DO_ADJH ;THEN DO IT IN ADJ MODULE!
CMPI SND_HELP,A8 ;ARE WE IN SOUND TEST?
JREQ DO_SHELP
CMPI SND_PLAY,A8
JREQ DO_SPLAY
CALLR DO_HELP_MENU
NO_HELP_FOR_THIS_ONE
RETS
**************************************************************************
* *
* DO_SHELP *
* *
* THIS IS CALLED FOR EACH NON PLAYING ENTRY IN THE SOUND *
* TABLE MENU. IT CAUSES THE SOUND BOARD TO BE SHUT *
* UP AND THE BOTTOM LINE (WHERE TITLES APPEAR) *
* TO BE ERASED. *
* *
**************************************************************************
DO_SHELP
MOVE @SND_MADE,A0,W ;DID SOMEONE MAKE A SOUND?
JRZ DO_SH1 ;NOPE
CLR A0
MOVE A0,@SND_MADE,W ;CLEAR THIS AND RESET THE BOARD!
MOVE A0,@SCODE,W
MOVE A0,@DCODE,W
CALLA QSNDRST ;kill any sounds in progress
DO_SH1
CALLR BLNKSNAM ;BLANK OUT ANY WRITING!
RETS
*
* A0 CONTAINS 3 FOR SYNTHESIZER...4 FOR DIGITIZER...
* IF CORRESPONDING "CODE" BYTE IS NON ZERO, THEN DISPLAY
* THE TEXTLINE THAT CORRESPONDS. ELSE BLANK OUT THE
* AREA.
*
DO_SPLAY
CALLR BLNKSNAM ;BLANK OUT LAST MESSAGE
CMPI 2,A0 ;SYNTHESIZER?
JRZ CK_SYNT ;YEP.
CLR A1
JRUC DO_SPQX
CK_SYNT
MOVE @DCODE,A1,W ;HOLD INFO IF DIGITIZER WAS RUNNING
CLR A0
MOVE A0,@DCODE,W ;CLEAR OUT DIG CODE
MOVE @SCODE,A0 ;ANY CODE
JRZ DO_SPQX ;NOTHING HERE.
MOVI STABLE,A1 ;BASE OF POINTER TABLE FOR DIGITIZER
DO_SP1
CALLR MEN_NUMS ;A4 = LEFT X A5 = RIGHT X
.IF GERMAN
SUBK 3,A4
ADDK 6,A5
.ENDIF
ADDI 10000H*SND_MESS_Y,A4 ;UPPER LEFT Y
ADDI 10000H*(SND_MESS_Y+SND_BOX_H),A5 ;UPPER LEFT X
MOVI COLOR_WHITE,A9
CALLR STD_BORD ;TACO BELL HAS YOUR ORDER, MAKE A RU-UUUN......
DEC A0 ;INDEX FROM 1.
SLL 5,A0
ADD A0,A1
MOVE *A1,A2,L ;NOW WE HAVE THE MESSAGE
move @_cabinet_type,a8,L
jrz _xsnd_inst
movi SND_INST_T2,a8
jruc _xsnd_insta
_xsnd_inst:
MOVI SND_INST,A8
_xsnd_insta:
JSRP L_MESS ;PUT INSTRUCTION OUT.
MOVI SND_SETUP,A8
CALLA LM_SETUP
MOVE A2,A8
JSRP PRINTF ;DO THE DEED
RETS ;AND RETURN
DO_SPQX
MOVE A1,A1 ;OUR SELECTION ISN'T RUNNING...WAS OTHER?
JRZ DO_SPX ;NOPE
CALLA QSNDRST ;KILL SOUNDS IN PROGRESS
CLR A0
MOVE A0,@SND_MADE,W ;NO RESET NECESSARY NOW
DO_SPX
RETS
**************************************************************************
* *
* BLNKSNAM *
* *
* CALLED TO BLANK OUT THE SOUND CODE NAME DURING *
* SOUND TEST. *
* *
**************************************************************************
*
* A3 = POINTER
* A4 = SIZE
*
BLNKSNAM
MOVI (SND_MESS_Y*10000H)+20H,A3
MOVI (SND_BOX_H*10000H)+1E0H,A4
JAUC BLNKAREA ;ITS BLANK!
**************************************************************************
* *
* GET_ENTRY_Y *
* *
* THIS RETURNS THE Y POSITIONS FOR THE ENTRY SPECIFIED *
* IN A0. *
* *
* A5 = Y VALUE IN UNITS. *
* *
**************************************************************************
GET_ENTRY_Y
MMTM SP,A0,A1
MOVE *A13(MEN_ULY),A5,W
MOVE *A13(MEN_DY),A1,W
DEC A0
MPYU A0,A1 ;A1 HAS OFFSET PER ENTRY
ADD A1,A5
MMFM SP,A0,A1
RETS
**************************************************************************
* *
* MENU_BORDER *
* *
* THIS IS CALLED TO PUT A BORDER AROUND THE MENU. *
* *
* A8 = MENU STRUCTURE *
* A9 = 1st item to activate as current *
* *
* BORDER IS DONE IN MENU TEXT COLOR *
* *
* THIS ASSUMES MENU IS IN THE CENTERING FORMAT *
* *
**************************************************************************
*
* 1ST WE NEED TO FIND UPPER LEFT.
*
*
* X = MENU_X - (BAR_WIDTH/2) - 2 (LESS BORDER WIDTH)
* Y = MENU_Y - BDY (LESS BORDER HEIGHT)
*
* LOWER RIGHT :
*
* X = MENU_X + (BAR_WIDTH/2) - 2 (PLUS BORDER WIDTH)
* Y = MENU_Y + (MENU_ENTRIES-1) * DY)) - BDY + BAR_HITE
*
*
MENU_BORDER
MMTM SP,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9
CALLR STUFF_MENU_PROCESS ;MOVE DATA INTO PDATA AREA
*
* FIRST COMPUTE UPPER LEFT
*
CALLR MENU_UL_A4_A5 ;GET UPPER LEFT COORDINATES
SLL 16,A5
ADD A5,A4 ;A4 POINTS TO UPPER LEFT.
*
* FORM LOWER RIGHT
*
CALLR MENU_LR_A6_A5
SLL 16,A5 ;SHIFT A5 DOWN
ADD A6,A5 ;A5 POINTS AT LOWER RIGHT
MOVE *A13(MEN_COLR),A9,W ;GET MENU TEXT COLOR
CALLR STD_BORD
MMFM SP,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9
RETS
**************************************************************************
* *
* MCSETUP *
* *
* RETURN: *
* A0 = CENTER OF MENU *
* A1 = 1/2 BAR WIDTH *
* A2 = Y FOR FIRST LINE OF TEXT OF MENU *
* A3 = DELTA Y (NEGATIVE TO GET FROM TEXT TO BAR. *
* *
**************************************************************************
MCSETUP
MOVE *A13(MEN_ULX),A0,W ;UPPER LEFT X (ACTUALLY CENTER)
MOVE *A13(MEN_BWID),A1,W ;BAR_WIDTH
SRL 1,A1 ;ALL CALCS USE BAR_WIDTH/2
MOVE *A13(MEN_ULY),A2,W ;UPPER LEFT Y
MOVE *A13(MEN_BDY),A3,W ;DELTA Y (NEGATIVE)
RETS
**************************************************************************
* *
* MENU_UL_A4_A5 *
* *
* RETURN WINDOW UPPER LEFT CORNER *
* *
* A4 = X *
* A5 = Y *
* *
**************************************************************************
MENU_UL_A4_A5
MMTM SP,A0,A1,A2,A3
CALLR MCSETUP ;STUFF THE REGGIES
MOVE A0,A4 ;FORM ULX
SUB A1,A4
SUBI C_KLUDGE,A4 ;A4 HAS UPPER LEFT X
MOVE A2,A5
ADD A3,A5 ;A5 HAS UPPER LEFT Y
SUBI MB_XWID+GAP,A4 ;NOW WE POINT AT UPPER LEFT FOR FRAME
SUBI MB_YWID+GAP,A5
MMFM SP,A0,A1,A2,A3
RETS
**************************************************************************
* *
* MENU_LR_A6_A5 *
* *
* RETURN WINDOW LOWER RIGHT CORNER *
* *
* A6 = X *
* A5 = Y *
* *
**************************************************************************
MENU_LR_A6_A5
MMTM SP,A0,A1,A2,A3
CALLR MCSETUP ;STUFF THE REGGIES
MOVE A0,A6 ;LOWER RIGHT X
ADD A1,A6
SUBI C_KLUDGE,A6 ;THIS IS THE X
MOVE *A13(MEN_ENTS),A0,W ;THIS IS LAST ENTRY
CALLR GET_ENTRY_Y ;A5 HAS THE Y FOR THE LAST ENTRY
ADD A3,A5 ;A5 NOW HAS TOP OF LAST BOX
MOVE *A13(MEN_BAR),A7,W ;HEIGHT OF BAR
ADD A7,A5 ;A5 NOW HAS LOWER RIGHT Y
ADDI MB_YWID+GAP,A5
ADDI MB_XWID+GAP,A6 ;THIS IS END OF BORDER
MMFM SP,A0,A1,A2,A3
RETS
**************************************************************************
* *
* F_TITLE *
* *
* THIS IS CALLED TO FRAME A TITLE IN THE SAME WIDTH *
* AS THE MAIN TITLE. *
* *
* A0 = Y LEVEL OF 15 POINT TEXT *
* A9 = COLOR *
* *
**************************************************************************
F_TITLE MMTM SP,A4,A5,A0
MOVE A0,A4 ;COPY Y
; SUBI 12,A4
SUBI 8,A4
SLL 16,A4
ADDI TIT_ULX,A4 ;UPPER LEFT SET
MOVE A0,A5 ;LOWER RIGHT
; ADDI 27,A5
ADDI 23,A5
SLL 16,A5
ADDI TIT_LRX,A5 ;LOWER RIGHT SET
CALLR STD_BORD ;TACO BELL HAS YOUR ORDER, MAKE A RU-UUUN......
MMFM SP,A4,A5,A0
RETS
FIRST_BORDER_COLOR EQU 0E0E0H
LAST_BORDER_COLOR EQU 0EFEFH
**************************************************************************
* *
* G_BORDER *
* *
* THIS IS CALLED TO DO A "HSTD TABLE" TYPE CYCLING *
* BORDER. THIS ROUTINE GETS: *
* *
* A4 = UPPER LEFT Y,X *
* A5 = LOWER RIGHT Y,X *
* A6 = NUMBER OF SLICES GOING IN. *
* *
**************************************************************************
G_BORDER MMTM SP,A0,A1,A2,A3,A4,A5,A6
MOVI 10001H,A0 ;1 BY 1 DIMENSION
MOVI LAST_BORDER_COLOR,A9 ;USE LAST ONE 1ST
NEXT_RING
CALLR DOBORDER ;DO THIS RING
MOVI 10001H,A1 ;THIS IS 1 UNIT IN X AND Y
ADDXY A1,A4
SUBXY A1,A5
SUBI 101H,A9
CMPI FIRST_BORDER_COLOR,A9
JRHS COLOK
MOVI LAST_BORDER_COLOR,A9
COLOK DSJS A6,NEXT_RING
MMFM SP,A0,A1,A2,A3,A4,A5,A6
RETS
**************************************************************************
* *
* DOBORDER *
* *
* THIS IS CALLED TO DRAW A BORDER FRAME. *
* *
* A4 = UPPER LEFT Y,X *
* A5 = LOWER RIGHT Y,X *
* A0 = Y,X WIDTH OF BORDER *
* A9 = COLOR OF BORDER. *
* *
* THIS ROUTINE *** CLEARS OUT ALL AREA INSIDE THE BORDER*** *
* AS A FUNCTION OF ITS OPERATION. *
* *
* THE BORDER IS DONE IN THE "FIXED" PALETTE *
* *
* IT IS ASSUMED THAT THE DISPLAY SYSTEM IS RUNNING! *
* *
**************************************************************************
*
* A1 = <COLOR><PALETTE>
* A3 = DAG OF AREA [YPOS,XPOS]
* A4 = [Y,X] SIZE OF AREA
*
DOBORDER
MMTM SP,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9
MOVE A9,A1 ;GET COLOR
SLL 16,A1 ;COLOR ON TOP..PALETTE 0
*
* NOW WE NEED TO MAKE 4 BARS!
*
MOVE A0,A2 ;SEPARATE DELTA
ANDI SX_MASK,A0
ANDI SY_MASK,A2
MOVE A4,A6 ;UPPER LEFTS HERE
MOVE A4,A7
MOVE A5,A8 ;LOWER RIGHTS HERE
MOVE A5,A9
ANDI SX_MASK,A6 ;LEFT X
ANDI SX_MASK,A8 ;RIGHT X
ANDI SY_MASK,A7 ;TOP Y
ANDI SY_MASK,A9 ;BOTTOM Y
*
* FIRST BAR GOES FROM ORIGINAL UL XY TO RIGHT X
* AND TOP Y+DELTA Y
*
* A3 IS ORIGINAL A4 PASSED.
* FORM DESTINATION IN A4
*
MOVE A4,A3
MOVX A8,A4
MOVY A7,A4
ADDXY A2,A4 ;ADD THE DELTA
CALLR DO_A_LINE ;DO THIS LINE
*
* GOING AROUND CLOCKWISE.....THIS ONE STARTS AT RIGHT X-DELTA
* AND TOP Y
*
MOVX A8,A3
SUBXY A0,A3
MOVY A7,A3
*
* THIS IS THE NATURAL LOWER RIGHT CORNER
*
MOVX A8,A4
MOVY A9,A4
CALLR DO_A_LINE
*
* NOW FOR BOTTOM LINE.....A4 IS STILL SET!
*
MOVX A6,A3
MOVY A9,A3
SUBXY A2,A3
CALLR DO_A_LINE
*
* LEFT WALL....FROM UPPER LEFT
*
MOVX A6,A3
MOVY A7,A3
MOVX A6,A4
ADDXY A0,A4
MOVY A9,A4
CALLR DO_A_LINE
MMFM SP,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9
RETS
DO_A_LINE
MMTM SP,A4
SUBXY A3,A4 ;FORM DISTANCE
CALLA FILLAREA ;AND DO THE FILL
MMFM SP,A4
RETS
STD_BORD
MMTM SP,A0
MOVI BORDER_SIZE,A0
CALLA DOBORDER
MMFM SP,A0
RETS
**************************************************************************
* *
* DO_HELP_MENU *
* *
* THIS IS CALLED TO DISPLAY A HELP MENU FOR THE CURRENT *
* MENU ENTRY. *
* *
* A HELP MENU IS DEFINED AS FOLLOWS: *
* *
* HM_JUST WORD 0=CENTER 1=LEFT *
* HM_COLOR WORD COLOR OF MENU *
* HM_ENTS WORD NUMBER OF LINES IN MENU *
* LONG LONG WORD POINTERS FOR EACH LINE! *
* *
* THE PROCESS AREA IS FILLED WITH THE CURRENT MENU *
* PARAMETERS. *
* *
* A8 = POINTER TO HELP MENU STRUCTURE ABOVE *
* *
**************************************************************************
DO_HELP_MENU
CALLR BLNKHELP
MOVE A8,A8 ;CHECK IF HELP MENU EXISTS.
JRZ DHMX ;NOPE JUST CLEARING WAS OUR JOB.
MOVE *A13(MEN_CUR),A0,W ;THIS IS CURRENT ENTRY
MOVE A0,A11 ;PASS ENTRY NUMBER IN A11
CALLR GET_ENTRY_Y ;A5 HAS THE Y FOR THE CURRENT ENTRY
*
* NOW WE NEED TO MOVE TO MAKE TOP ENTRY BOX LINE UP.
*
MOVE *A13(MEN_BDY),A10,W ;THIS IS NEGATIVE TO GIVE US BOX TOP
ADD A5,A10 ;NOW WE HAVE BOX TOP
MOVE *A13(MEN_BAR),A5,W ;GET BAR HEIGHT
SRL 1,A5 ;FIND CENTER OF BAR
ADD A5,A10 ;NOW WE'RE AT BAR CENTER.
* SUBI MB_YWID+GAP,A10 ;THIS IS MAIN MENU TOP. (FOR TOP ENTRY)
MOVI H_SLAVE,A7 ;FORK OFF SO IT CAN USE PDATA!
CALLA P_FORK ;START UP ANOTHER W/ SAME ID TO FLASH!
DHMX RETS
**************************************************************************
* *
* BLNKHELP *
* *
* THIS IS CALLED TO BLANK OUT THE HELP AREA. IT IS *
* USED BY BOTH THE "NORMAL" HELP PLOTTER AND IS *
* CALLED BY THE ADJUSTMENT HELP PROGRAM. *
* *
* THIS RETURNS THE LEFT X FOR THE HELP MENU IN A9 *
* *
**************************************************************************
BLNKHELP
MMTM SP,A3,A4,A5,A6
CALLR MENU_LR_A6_A5 ;GET RIGHT X OF MAIN MENU IN A6
MOVE A6,A9 ;PASS TO HELP MENU SLAVE
*
* NOW BLANK OUT THE "HELP" REGION
*
MOVE A6,A3 ;UPPER LEFT X OF REGION TO BLANK OUT
ADDI INST_ULY*10000H,A3 ;THIS IS UPPER LEFT OF BLOCK
MOVI TIT_LRX+(10000H*400),A4 ;COORDINATE OF LOWER RIGHT OF HELP AREA
SUBXY A3,A4 ;THIS IS SIZE OF REGION TO BLANK
CALLA BLNKAREA ;BLANK OUT THE HELP AREA
ADDI BOX_XGAP,A9 ;RETURN X FOR HELP MENUS
MMFM SP,A3,A4,A5,A6
RETS
P_FORK
MMTM SP,A1
MOVE *A13(PROCID),A1,W ;PASS OUR ID TO FORKED PROCESS
CALLA GETPRC ;MAKE THE PROCESS
MMFM SP,A1
RETS
**************************************************************************
* *
* H_SLAVE *
* *
* THIS IS A PROCESS CREATED TO PLOT THE HELP BOX. *
* IT DOES ITS PLOTTING THEN DIES. THIS ALLOWS IT *
* TO USE THE PDATA AREA WITHOUT DISTURBING THE CALLER. *
* *
* A8 = POINTER TO HELP BOX STRUCTURE *
* A9 = LEFT MARGIN FOR THE HELP BOX. *
* A10 = Y OF CENTER OF BOX ...HIGH HALF IS ZERO FOR Y CENTING *
* IF HIGH HALF IS NON-ZERO, THEN THIS IS TOP OF BOX *
* *
**************************************************************************
HM_JUST EQU 0
HM_COLOR EQU HM_JUST+WORD_SIZE
HM_ENTS EQU HM_COLOR+WORD_SIZE
HM_DATA EQU HM_ENTS+WORD_SIZE ;ENTRY POINTERS
HS_ROUT EQU PDATA ;LONG-TEXT ROUTINE
HS_X EQU HS_ROUT+LONG_SIZE ;WORD-X FOR TEXT ROUTINE
HS_Y EQU HS_X+WORD_SIZE ;WORD-CURRENT Y
HS_ENTS EQU HS_Y+WORD_SIZE ;WORD-ENTRIES LEFT TO DO
HS_COLOR EQU HS_ENTS+WORD_SIZE ;WORD-COLOR OF MENU
HS_PTR EQU HS_COLOR+WORD_SIZE ;LONG-CURRENT TEXT POINTER
H_SLAVE
*
* A9 HAS RIGHT X OF MENU
*
MOVE A9,A1 ;PUT THIS X VALUE IN A1
MOVE *A8(HM_JUST),A0,W ;0 = CENTER 1=LEFT
JRZ HS_CENT ;CENTER....SETUP X ACCORDINGLY
*
* LEFT JUSTIFY....STORE ROUTINE
*
MOVI STRLNRM,A0 ;LEFT JUSTIFY ROUTIN
*
* NOW FORM X AS SOME MARGIN FROM WINDOW....
*
ADDI MB_XWID+HELP_X_MARGIN,A1 ;ADD MARGIN TO FORM X FOR TEXT
JRUC CENTER_JOIN ;CONTINUE
HS_CENT MOVI STRCNRM,A0 ;USE CENTERING ROUTINE
*
* A1 HAS LEFT X OF HELP BOX...FIND RIGHT X
*
ADDI TIT_LRX,A1
SRL 1,A1 ;THIS IS CENTER X
CENTER_JOIN
MOVE A1,*A13(HS_X),W ;STORE X
MOVE A0,*A13(HS_ROUT),L ;STORE ROUTINE
MOVE *A8(HM_ENTS),A1,W ;GET NUMBER OF ENTRIES
MOVE A1,*A13(HS_ENTS),W ;COUNT IT DOWN IN P-AREA
MOVE *A8(HM_COLOR),A0,W ;GET COLOR
MOVE A0,*A13(HS_COLOR),W ;STASH IT
ADDI HM_DATA,A8 ;POINT AT 1ST ENTRY
MOVE A8,*A13(HS_PTR),L ;NOW WE'RE READY.
*
* ALL PDATA AREA SET.....NOW WE NEED TO DRAW THE BORDER
*
* FOR DOBORDER
*
* A4 = UPPER LEFT Y,X
* A5 = LOWER RIGHT Y,X
* A0 = Y,X WIDTH OF BORDER
* A9 = COLOR OF BORDER.
*
* LOWER RIGHT X IS SUCH THAT IT LINES UP WITH TITLE BOX.
* THE Y IS A BIT TRICKIER......NUMBER OF ENTRIES IS
* SITTING IN A1
*
MOVI HELP_DY,A5 ;DISTANCE PER ENTRY
MPYU A1,A5 ;DISTANCE FOR ALL ENTRIES
ADDI HELP_Y_MARGIN+(MB_YWID*2)+HELP_YLO_MARGIN,A5
*
* A5 NOW CONTAINS FULL HEIGHT OF BOX
*
* NOW SEE IF WE'RE CENTERING ON A10 OR IF A10 IS THE TOP.
*
CALLR TOP_IN_A10
*
* NOW FORM UPPER LEFT IN A4
*
MOVE A10,A4 ;MOVE Y OVER
SLL 16,A4 ;MAKE ROOM FOR X
ADD A9,A4 ;PUT IN THE X...THIS IS UPPER LEFT!
ADD A10,A5 ;ADD BASE TO OFFSET
SLL 16,A5 ;PUT IN Y POSITION
ADDI TIT_LRX,A5 ;ADD IN THE X FOR THE CORNER
*
* NOW ADJUST FROM TOP OF BOX TO POSITION OF
* 1ST ENTRY.
*
ADDI MB_YWID+HELP_Y_MARGIN,A10 ;Y OF 1ST ENTRY
MOVE A10,*A13(HS_Y),W ;PUT AWAY
MOVE *A13(HS_COLOR),A9,W ;GET THE COLOR FOR DOBORDER
CALLR STD_BORD
*
* NOW WE NEED TO WALK THROUGH AND PLOT THE HELP
* MENU ENTRIES.
*
* A0 = SLEEP
* A1 = ROUTINE
* A6 = COLOR
* A8 = POINTER
* A9 = ADDRESS
* A10 = SPACING
* A11 = FONT
* A14 = FLAGS
*
NEXT_HELP
MOVE *A13(HS_PTR),A2,L ;GET OUR CURRENT POINTER
MOVE *A2+,A8,L ;GET THE CURRENT MESSAGE POINTER
MOVE A2,*A13(HS_PTR),L ;AND PUT POINTER BACK
CLR A0
MOVE *A13(HS_ROUT),A1,L ;ROUTINE IN A1
; MOVE *A13(HS_COLOR),A6,W ;STUFF COLOR -- OLD NARC STYLE
MOVE *A13(HS_COLOR),A5,W ;STUFF COLOR
SLL 16,A5
MOVE *A13(HS_Y),A9,W ;GET Y
SLL 16,A9 ;SHIFT INTO PLACE
MOVE *A13(HS_X),A10,W
ADD A10,A9 ;A9 IS NOW POINTING AT SCREEN
MOVI SPACING07,A10 ;SPACING
MOVI RD7FONT,A11 ;FONT IS BABY FONT
JSRP PRINTF ;PRINT IT OUT!
MOVE *A13(HS_Y),A9,W ;GET THE Y
ADDI HELP_DY,A9 ;KICK IT
MOVE A9,*A13(HS_Y),W ;PUT IT BACK
MOVE *A13(HS_ENTS),A0,W ;ENTRY COUNT
DEC A0
MOVE A0,*A13(HS_ENTS),W ;PUT IT BACK
JRNZ NEXT_HELP
JAUC SUCIDE ;OUR WORK IS DONE!
**************************************************************************
* *
* TOP_IN_A10 *
* *
* THIS IS CALLED BY H_SLAVE TO GET THE UPPER LEFT *
* CORNER OF THE BOX IN A10. A10 HAS THE PASSED PARAMETER. *
* A5 HAS THE HEIGHT OF THE BOX. IF THE TOP HALF OF A10 *
* IS ZERO, THEN THEN WE WANT THE BOX CENTER AT THE *
* A10 LEVEL. IF THE TOP HALF OF A10 IS NON-ZERO THEN *
* A10 WAS PASSED AS THE TOP. *
* *
* RETURN A10 AS THE Y FOR THE TOP OF THE HELP BOX. *
* *
**************************************************************************
TOP_IN_A10
MMTM SP,A5
CMPI 0FFFFH,A10 ;IS THE TOP HALF ZERO?
JRHI TOP_IS_TOP ;TOP IS SET..RETURN
SRL 1,A5 ;TOP OF BOX IS HALF UP FROM MAIN MENU BAR CENTER
SUB A5,A10 ;NOW A10 HAS Y BASE OF BOX
TOP_IS_TOP
MMFM SP,A5
RETS
**************************************************************************
* *
* AREUSURE *
* *
* THIS IS CALLED TO GET A CONFIRMATION FROM THE USER. *
* A8 = PROMPT...THIS WILL APPEAR ABOVE THE "ARE YOU SURE" *
* A9 = ROUTINE TO JSRP TO DO THE DESIRED ACTION *
* A10 = MESSAGE TO DISPLAY CONFIRMING COMPLETION *
* *
* RETURN A0=0 MEANS YES WAS CHOSEN. *
* A0 .NE. 0 MEANS NO *
* *
**************************************************************************
AREUSURE
CALLA CLR_SCRN ;BLANK IT ALL OUT!
MOVE A9,*A13(PDATA),L ;SAVE ROUTINE
MOVE A10,-*A12,L ;AND CONFIRM MESSAGE
CALLR SURE_BOX
MOVE A8,A2 ;PUT MESSAGE TEXT IN SAFE PLACE
MOVI MESS_SURE,A8 ;SETUP FOR TITLE
CALLA LM_SETUP ;STUFF REGGIES
MOVE A2,A8 ;GET STRING IN THERE
JSRP PRINTF ;AND PRINT IT
MOVI M_SURE,A8 ;NOW THE "ARE YOU SURE" PART
JSRP L_MESS ;PUT IT UP.
MOVI MEN_YN,A8 ;PUT UP THE "YES/NO" SELECTOR.
MOVI 2,A9 ;CURSOR ON 2ND ENTRY (NO)
JSRP B_MENU ;AND GET A RESPONSE.
CMPI 1,A8 ;WAS IT YES?
JRNZ SURE_X ;NOPE....GET OUT
CALLA CLR_SCRN ;CLEAR THE SCREEN FIRST, SO ROUTINE CAN PLOT!
MOVE *A13(PDATA),A0,L ;GET THE ROUTINE TO CALL
MOVI SURE_RET,A7
MOVE A7,-*A12,L ;PUSH RETURN ADDRESS
JUMP A0 ;AND "JSRP" THE ROUTINE
SURE_RET CALLR SURE_BOX ;BOX IT!
MOVE *A12+,A8,L
JSRP SUR_MESS ;PRINT THE MESSAGE
JSRP ANY_BUT ;NOW RETRIEVE ANY BUTTON THEN RETURN
CLR A0 ;RETURN SUCCESS
RETP
SURE_X ADDI LONG_SIZE,A12 ;POP MESSAGE
MOVI 2,A0 ;RETURN FAILURE
RETP
**************************************************************************
* *
* SUR_MESS *
* *
* THIS PRINTS MESSAGE IN A8 IN THE ARE U SURE BOX *
* CONFIRMATION SPOT. *
* *
**************************************************************************
SUR_MESS
MOVE A8,-*A12,L
MOVI MESS_CONFIRM,A8
CALLA LM_SETUP ;GET CONFIRMATION DATA READY.
MOVE *A12+,A8,L
JSRP PRINTF ;PRINT OUR PART
RETP
SURE_BOX
MOVI COLOR_YELLOW,A9
MOVI 003D0025H,A4
MOVI 00F6016AH,A5
CALLR STD_BORD ;BORDER-IZE THE WHOLE THING.
RETS
*
*BLANK THE INSIDE OF THE "ARE YOU SURE BOX"
*
BLNK_SURE_BOX
MOVI [41H,29H],A3
MOVI [0F2H,166H]-[41H,29H],A4
JAUC BLNKAREA ;ITS BLANK!
CENT_BOX
MOVI COLOR_RED,A9
CBOX_COL
MOVI 0006E0030H,A4
MOVI 0011A01D0H,A5
CALLR STD_BORD ;BORDER-IZE THE WHOLE THING.
RETS
*----------------------------------------------------------------------------*
*----------------------------------------------------------------------------*
***************************** MESSAGES *********************************
*----------------------------------------------------------------------------*
*----------------------------------------------------------------------------*
.IF SCREEN_WIDE
INSTR_Y EQU INST_ULY+10
INSTR_2Y EQU INSTR_Y+12
.ELSE
INSTR_Y EQU INST_ULY+6
INSTR_2Y EQU INSTR_Y+10
.ENDIF
.IF GERMAN
MM_INST1
MESS_MAC RD7FONT,SPACING07,MENU_X,INSTR_Y,COLOR_PRGB,STRCNRM,0
.STRING "- AUF/+ AB",0
.EVEN
MM_INST2
MESS_MAC RD7FONT,SPACING07,MENU_X,INSTR_2Y,COLOR_PRGB,STRCNRM,0
.STRING "START MIT TEST",0
.EVEN
MM_INST1_T2
MESS_MAC RD7FONT,SPACING07,MENU_X,INSTR_Y,COLOR_PRGB,STRCNRM,0
.STRING "P1 START AUF/P2 START AB",0
.EVEN
MM_INST2_T2
MESS_MAC RD7FONT,SPACING07,MENU_X,INSTR_2Y,COLOR_PRGB,STRCNRM,0
.STRING "START MIT TRIGGER",0
.EVEN
.ELSE
MM_INST1
MESS_MAC RD7FONT,SPACING07,MENU_X,INSTR_Y,COLOR_PRGB,STRCNRM,0
.STRING "- = MOVE UP/+ = MOVE DOWN",0
.EVEN
MM_INST2
MESS_MAC RD7FONT,SPACING07,MENU_X,INSTR_2Y,COLOR_PRGB,STRCNRM,0
.STRING "ENTER = RUN/ESC = PREV MENU",0
.EVEN
MM_INST1_T2
MESS_MAC RD7FONT,SPACING07,MENU_X,INSTR_Y,COLOR_PRGB,STRCNRM,0
.STRING "P1 START UP/P2 START DOWN",0
.EVEN
MM_INST2_T2
MESS_MAC RD7FONT,SPACING07,MENU_X,INSTR_2Y,COLOR_PRGB,STRCNRM,0
.STRING "TRIGGER=RUN/BOMB=PREV MENU",0
.EVEN
.ENDIF
MESS_FAIL
MESS_MAC RD15FONT,SPACING20,256,176,COLOR_PRED,STRCNRM,0
.STRING "INVALID ",W_GAME," ",W_SETTINGS
.BYTE 0,1 ;0 = END OF STRING...1 = MORE MESSAGES!
.EVEN
MESS_MAC RD15FONT,SPACING20,256,226,COLOR_PWHITE,STRCNRM,0
.STRING "ATTEMPT TO RESTORE"
.BYTE 0,1 ;0 = END OF STRING...1 = MORE MESSAGES!
.EVEN
MESS_MAC RD15FONT,SPACING20,256,256,COLOR_PWHITE,STRCNRM,0
.STRING W_FACSET,"S HAS FAILED."
.BYTE 0,0
.EVEN
MESS_TITLE
MESS_MAC RD15FONT,SPACING20,TM_X,TM_Y,COLOR_PGREEN,STRCNRM,0
.IF SCREEN_WIDE
RV_Y EQU TM_Y+25
.ELSE
RV_Y EQU TM_Y+18
.ENDIF
MESS_REV
MESS_MAC RD7FONT,SPACING07,TM_X,RV_Y,COLOR_PYELLOW,STRCNRM,0
*
* THIS IS SETUP FOR THE QUESTION BEING ASKED
* BY "ARE YOU SURE"
*
MESS_SURE
MESS_MAC RD15FONT,SPACING20,200,102,COLOR_PLF,STRCNRM,0
*
* THIS IS THE "ARE YOU SURE" PART.
*
M_SURE
MESS_MAC RD15FONT,SPACING20,200,128,COLOR_PYELLOW,STRCNRM,0
.IF GERMAN
.STRING "OK?"
.ELSE
.STRING "ARE YOU SURE?"
.ENDIF
.BYTE 0
.EVEN
.WORD 0
MESS_CONFIRM
MESS_MAC RD15FONT,SPACING20,200,115,COLOR_PLF,STRCNRM,0
SIY1 EQU SND_MESS_Y+30
SIY3 EQU SND_MESS_Y+41
SIY2 EQU SND_MESS_Y+8
.IF GERMAN
SND_INST
MESS_MAC RD7FONT,SPACING07,200,SIY1,COLOR_PWHITE,STRCNRM,0
.STRING "WIEDERHOLUNG MIT BOMBEN-TASTE",0
.EVEN
.WORD 1
MESS_MAC RD7FONT,SPACING07,200,SIY3,COLOR_PWHITE,STRCNRM,0
.STRING "N",C_GERA,"CHSTES GER",C_GERA,"USCH MIT TRIGGER",0
.EVEN
.WORD 0
SND_INST_T2
MESS_MAC RD7FONT,SPACING07,200,SIY1,COLOR_PWHITE,STRCNRM,0
.STRING "WIEDERHOLUNG MIT BOMBEN-TASTE",0
.EVEN
.WORD 1
MESS_MAC RD7FONT,SPACING07,200,SIY3,COLOR_PWHITE,STRCNRM,0
.STRING "N",C_GERA,"CHSTES GER",C_GERA,"USCH MIT TRIGGER",0
.EVEN
.WORD 0
.ELSE
SND_INST
MESS_MAC RD7FONT,SPACING07,198,SIY1,COLOR_PWHITE,STRCNRM,0
.STRING "ESCAPE = QUIT/ENTER = REPEAT",0
.EVEN
.WORD 1
MESS_MAC RD7FONT,SPACING07,196,SIY3,COLOR_PWHITE,STRCNRM,0
.STRING "+ = NEXT SOUND/- = PREV SOUND",0
.EVEN
.WORD 0
SND_INST_T2
MESS_MAC RD7FONT,SPACING07,198,SIY1,COLOR_PWHITE,STRCNRM,0
.STRING "BOMB = QUIT/TRIGGER = REPEAT",0
.EVEN
.WORD 1
MESS_MAC RD7FONT,SPACING07,198,SIY3,COLOR_PWHITE,STRCNRM,0
.STRING "P2 START =NEXT/P1 START =PREV",0
.EVEN
.WORD 0
.ENDIF
SND_SETUP MESS_MAC RD15FONT,SPACING20,200,SIY2,COLOR_PLF,STRCNRM,0
STABLE
.LONG st0,st1,st2,st3,st4,st5,st6,st7,st9
.LONG st10,st11,st12,st13,st14,st15,st16,st18,st19
.LONG st20,st21,st22,st23,st24,st26,st27,st28,st29
.LONG st30,st31,st32,st33,st34,st35,st36,st37,st38,st39
.LONG st40,st42,st44,st45,st46,st47,st48,st49
.LONG st50,st51,st53,st54,st55,st57,st58,st59
.LONG st60,st61,st62,st64
st0:
.string "AUDITORIUM MUSIC",0
.even
st1:
.string "MONDOR BATTLE",0
.even
st2:
.string "GUITAR GROOVE",0
.even
st3:
.string "JUNGLE GROOVE",0
.even
st4:
.string "CHEMICAL GROOVE",0
.even
st5:
.string "ELEVATOR MUZAK",0
.even
st6:
.string "SWEET EMOTION",0
.even
st7:
.string "WALK THIS WAY",0
.even
st9:
.string "PLAYER GUN SHOT",0
.even
st10:
.string "CD LAUNCH",0
.even
st11:
.string "ENEMY AK47",0
.even
st12:
.string "ENEMY M1",0
.even
st13:
.string "ENEMY 357 MAGNUM",0
.even
st14:
.string "SOAP DISPENSER DIES",0
.even
st15:
.string "SINK HIT",0
.even
st16:
.string "DRYER ROCKET HIT",0
.even
st18:
.string "TOILET FLUSH",0
.even
st19:
.string "BOUNCING COINS",0
.even
st20:
.string "GUITAR SLIDE",0
.even
st21:
.string "SHATTERING BOTTLE",0
.even
st22:
.string "ROCKETED TABLE",0
.even
st23:
.string "GONG",0
.even
st24:
.string "SIGN FALL ON RECEPTIONIST",0
.even
st25:
.string "NONBOY THUD",0
.even
st26:
.string "DEBRIS EXPLOSION",0
.even
st27:
.string "VIDEO CAMERA SHOT",0
.even
st28:
.string "OOMPH",0
.even
st29:
.string "WAKE UP",0
.even
st30:
.string "WARCRY",0
.even
st31:
.string "ENEMY SCREAM",0
.even
st32:
.string "CLUB'S CLOSED",0
.even
st33:
.string "NO TRESSPASSING",0
.even
st34:
.string "KISS",0
.even
st35:
.string "OW",0
.even
st36:
.string "OOH",0
.even
st37:
.string "FLESH WOUND",0
.even
st38:
.string "TAKE THAT",0
.even
st39:
.string "WORST NIGHTMARE",0
.even
st40:
.string "I'VE HAD WORSE",0
.even
st42:
.string "LAND THE CHOPPER",0
.even
st43:
.string "BREAKING GLASS",0
.even
st44:
.string "AIR RAID",0
.even
st45:
.string "GLASS SHATTER",0
.even
st46:
.string "OPEN POWERUP CRATE",0
.even
st47:
.string "DUMPSTER HIT",0
.even
st48:
.string "CANNON GARBAGE CAN",0
.even
st49:
.string "PHONE RING",0
.even
st50:
.string "IF YOU'D LIKE TO MAKE...",0
.even
st51:
.string "CAT HIT",0
.even
st53:
.string "LOOK OUT",0
.even
st54:
.string "GOOD SHOT",0
.even
st55:
.string "YESS",0
.even
st57:
.string "YOU'RE DOING GREAT",0
.even
st58:
.string "REVOLUTION XSSSS",0
.even
st59:
.string "SQUASH 'EM",0
.even
st60:
.string "SCHOOL'S OUT",0
.even
st61:
.string "WOAH",0
.even
st62:
.string "HEY BACK OFF",0
.even
st64:
.string "DESTROY KEMITECH",0
.even
ROM_NAME .STRING "REVOLUTION X - REVISION 2.0 - 7/19/94"
.IF AUSTRALIA
.STRING " AUSTRALIA.",0
.ELSE
.STRING 0
.ENDIF
.EVEN
**************************************************************************
* *
* MENU DATA *
* *
**************************************************************************
**************************************************************************
* *
* MAIN TEST MENU AND ASSOCIATED DATA *
* *
**************************************************************************
.IF PRINTER
MEN_MAIN
.LONG RD7FONT ;FONT
.LONG STRCNRM ;CENTER PLEASE
.LONG MESSMAIN ;TITLE
.WORD COLOR_WHITE ;COLOR OF TITLE
.WORD MENU_X ;UL X
.WORD MENU_Y ;UL Y
.WORD MENU_DY-4 ;VERTICAL SPACING
.WORD COLOR_WHITE ;COLOR WHEN NOT SELECTED
.WORD BAR_HITE-4 ;HEIGHT OF SELECTION BAR
.WORD BAR_DY+1 ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE)
.WORD BAR_DX ;EXTRA X ON EACH SIDE.
.WORD BAR_WID ;WIDTH OF BAR!
.WORD COLOR_DECAY ;TEXT COLOR OF SELECTED ITEM
.LONG MESS_COIN_AUD,GO_BOOK,COIN_HELP
.LONG MESS_GAME_AUD,GO_AUD,AUDIT_HELP
.LONG MESS_GAME_ADJ,GO_ADJ,ADJUST_HELP
.LONG MESS_UTIL,GO_UTIL,UTIL_HELP
.LONG M_PRINT,GO_PRINT,BLNK_HELP ;SPECIAL CASE!
.LONG M_CALIBRATE,GO_CALIBRATE,CALIBRATE_HELP
.LONG MESS_EXIT,0,EXIT_HELP
.LONG 0 ;END
M_PRINT
.STRING "PRINT GAME INFORMATION",0
.EVEN
.ELSE
.IF GERMAN
MEN_MAIN
.LONG RD7FONT ;FONT
.LONG STRCNRM ;CENTER PLEASE
.LONG MESSMAIN ;TITLE
.WORD COLOR_WHITE ;COLOR OF TITLE
.WORD MENU_X ;UL X
.WORD MENU_Y+2 ;UL Y
.WORD MENU_DY-8 ;VERTICAL SPACING
.WORD COLOR_WHITE ;COLOR WHEN NOT SELECTED
.WORD BAR_HITE-6 ;HEIGHT OF SELECTION BAR
.WORD BAR_DY+2 ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE)
.WORD BAR_DX ;EXTRA X ON EACH SIDE.
.WORD BAR_WID ;WIDTH OF BAR!
.WORD COLOR_DECAY ;TEXT COLOR OF SELECTED ITEM
.LONG MESS_DIAG,GO_DIAG,DIAG_HELP
.LONG MESS_COIN_AUD,GO_BOOK,BLNK_HELP
.LONG MESS_GAME_AUD,GO_AUD,BLNK_HELP
.LONG MESS_GAME_ADJ,GO_ADJ,BLNK_HELP
.LONG MESS_UTIL,GO_UTIL,UTIL_HELP
.LONG M_CALIBRATE,GO_CALIBRATE,BLNK_HELP
.if NOPIC
.else
.LONG MESS_HARDWARE,GO_HARDWARE,HARDWARE_HELP
.endif
.LONG MESS_VOL,GO_VOLUME,VOLUME_HELP
.LONG MESS_EXIT,0,BLNK_HELP
.LONG 0 ;END
.ELSE
MEN_MAIN
.LONG RD7FONT ;FONT
.LONG STRCNRM ;CENTER PLEASE
.LONG MESSMAIN ;TITLE
.WORD COLOR_WHITE ;COLOR OF TITLE
.WORD MENU_X ;UL X
.WORD MENU_Y+2 ;UL Y
.WORD MENU_DY-8 ;VERTICAL SPACING
.WORD COLOR_WHITE ;COLOR WHEN NOT SELECTED
.WORD BAR_HITE-6 ;HEIGHT OF SELECTION BAR
.WORD BAR_DY+2 ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE)
.WORD BAR_DX ;EXTRA X ON EACH SIDE.
.WORD BAR_WID ;WIDTH OF BAR!
.WORD COLOR_DECAY ;TEXT COLOR OF SELECTED ITEM
.LONG MESS_DIAG,GO_DIAG,DIAG_HELP
.LONG MESS_COIN_AUD,GO_BOOK,COIN_HELP
.LONG MESS_GAME_AUD,GO_AUD,AUDIT_HELP
.LONG MESS_GAME_ADJ,GO_ADJ,ADJUST_HELP
.LONG MESS_UTIL,GO_UTIL,UTIL_HELP
.LONG M_CALIBRATE,GO_CALIBRATE,CALIBRATE_HELP
.if NOPIC
.else
.LONG MESS_HARDWARE,GO_HARDWARE,HARDWARE_HELP
.endif
.LONG MESS_VOL,GO_VOLUME,VOLUME_HELP
.LONG MESS_EXIT,0,EXIT_HELP
.LONG 0 ;END
.ENDIF
.ENDIF
.IF GERMAN
MESSMAIN
.STRING "REVOLUTION X ",W_TEST," MEN",C_GERU,0
.EVEN
MESS_DIAG
.STRING "DIAGNOSE-",W_TEST,"S",0
.EVEN
MES_BOOK
MESS_COIN_AUD
.STRING "M{NZBUCHHALTUNG",0
.EVEN
MES_AUD
MESS_GAME_AUD
.STRING "AUSLESEDATEN",0
.EVEN
MESS_GAME_ADJ
.STRING "SPIEL-EINSTELLUNG",0
.EVEN
MESS_UTIL
.STRING W_TEST,"-FUNKTIONEN",0
.EVEN
M_CALIBRATE
.STRING "PISTOLEN KALIBRIEREN",0
.EVEN
MESS_HARDWARE
.STRING "",0
.EVEN
MESS_EXIT
.STRING "{BERGANG INS SPIELENDE",0
.EVEN
.ELSE
MESSMAIN
.STRING "REVOLUTION X ",W_TEST," MENU",0
.EVEN
MESS_DIAG
.STRING "DIAGNOSTIC ",W_TEST,"S",0
.EVEN
MES_BOOK
MESS_COIN_AUD
.STRING W_COIN," ",W_BOOK,"KEEPING",0
.EVEN
MES_AUD
MESS_GAME_AUD
.STRING W_GAME," ",W_AUDITS,0
.EVEN
MESS_GAME_ADJ
.STRING W_GAME," ",W_ADJUSTMENT,0
.EVEN
MESS_UTIL
.STRING "UTILITIES",0
.EVEN
M_CALIBRATE
.STRING "CALIBRATE GUNS",0
.EVEN
MESS_HARDWARE
.STRING "HARDWARE INFO",0
.EVEN
MESS_VOL
.STRING "ADJUST VOLUME",0
.EVEN
MESS_EXIT
.STRING "EXIT TO ",W_GAME," OVER",0
.EVEN
.ENDIF
DIAG_HELP
.WORD 0 ;CENTER JUSTIFY
.WORD COLOR_BLUE ;COLOR
.WORD 7 ;2 ENTRIES
.LONG MESS_SWTEST
.LONG MESS_DIPTEST
.LONG MESS_CPUTEST
.LONG M_STEST
.LONG MESS_PATTERNS
.LONG MESS_DRIVER
.LONG U_BURNIN
COIN_HELP
.WORD 0 ;CENTER JUSTIFY
.WORD COLOR_BLUE ;COLOR
.WORD 3 ;2 ENTRIES
.LONG CH_0
.LONG CH_1
.LONG CH_2
AUDIT_HELP
.WORD 0 ;CENTER JUSTIFY
.WORD COLOR_BLUE ;COLOR
.WORD 2 ;2 ENTRIES
.LONG AH_1
.LONG AH_2
ADJUST_HELP
.WORD 0 ;CENTER JUSTIFY
.WORD COLOR_BLUE ;COLOR
.WORD 3 ;3 ENTRIES
.LONG AD_1
.LONG AD_2
.LONG AD_3
CALIBRATE_HELP
.WORD 0 ;CENTER JUSTIFY
.WORD COLOR_BLUE ;COLOR
.WORD 3 ;3 ENTRIES
.LONG GCH_1
.LONG GCH_2
.LONG GCH_3
UTIL_HELP
.WORD 0 ;CENTER JUSTIFY
.WORD COLOR_BLUE ;COLOR
.WORD 5 ;NUMBER OF ENTRIES
**** .LONG U_OPMESS
.LONG U_CLR_CRED
.LONG U_CLR_COIN
.LONG U_CLR_AUD
.LONG U_HSRESET
.LONG U_FACTORY
EXIT_HELP
.WORD 0 ;CENTER JUSTIFY
.WORD COLOR_BLUE ;COLOR
.WORD 1 ;1 ENTRY
.LONG U_END
HARDWARE_HELP
.WORD 0
.WORD COLOR_BLUE
.WORD 2
.LONG HDWH_SN
.LONG HDWH_MAN
VOLUME_HELP
.WORD 0
.WORD COLOR_BLUE
.WORD 2
.LONG VOLH1
.LONG VOLH2
.IF GERMAN
.ELSE
HDWH_SN
.STRING "SERIAL NUMBER",0
.EVEN
HDWH_MAN
.STRING "MANUFACTURE DATE",0
.EVEN
VOLH1
.STRING "ALTERNATE VOLUME",0
.EVEN
VOLH2
.STRING "ADJUSTMENT METHOD",0
.EVEN
.ENDIF
.IF GERMAN
MESS_SWTEST
.STRING "KONTAKT-",W_TEST,0
.EVEN
MESS_DIPTEST
.STRING "DIP-SCHALTER-",W_TEST,0
.EVEN
MESS_CPUTEST
.STRING "CPU-PLATINEN-",W_TEST,0
.EVEN
MESS_STEST
M_STEST
.STRING "SOUND-PLATINEN-",W_TEST,0
.EVEN
MESS_PATTERNS
.STRING "MONITOR-MUSTER",0
.EVEN
MESS_DRIVER
.STRING "TREIBER-PLATINEN-",W_TEST,0
.EVEN
MESS_BURN
U_BURNIN
.STRING "BURN-IN-",W_TEST,0
.EVEN
.ELSE
MESS_SWTEST
.STRING W_SWITCH," ",W_TEST,0
.EVEN
MESS_DIPTEST
.STRING "DIP ",W_SWITCH," ",W_TEST,0
.EVEN
MESS_CPUTEST
.STRING "CPU ",W_BOARD," ",W_TEST,0
.EVEN
MESS_STEST
M_STEST
.STRING "SOUND ",W_BOARD," ",W_TEST,0
.EVEN
MESS_PATTERNS
.STRING "MONITOR PATTERNS",0
.EVEN
MESS_DRIVER
.STRING "DRIVER ",W_BOARD," ",W_TEST,0
.EVEN
MESS_BURN
U_BURNIN
.STRING "BURN-IN ",W_TEST,0
.EVEN
MESS_SERIAL_NUM
.STRING "SERIAL NUMBER",0
.EVEN
.ENDIF
CH_0
.STRING "VIEW COINBOX",0
.EVEN
CH_1
.STRING W_TOTALS," AND",0
.EVEN
CH_2
.STRING W_GAME,W_PLAY," COUNTERS",0
.EVEN
AH_1
.STRING "VIEW ",W_GAME,0
.EVEN
AH_2
.STRING W_PLAY," STATISTICS",0
.EVEN
AD_1
.STRING "MAKE CHANGES",0
.EVEN
AD_2
.STRING "TO PRICING AND",0
.EVEN
AD_3
.STRING W_GAME," DIFFICULTY",0
.EVEN
GCH_1
.STRING "ALIGN GUNS",0
.EVEN
GCH_2
.STRING "SO THAT CURSOR",0
.EVEN
GCH_3
.STRING "TRACKS ACCURATELY.",0
.EVEN
.IF GERMAN
MESS_MM
.STRING "ZUR",C_GERU,"CH INS HAUPTMEN",C_GERU,0
.EVEN
MESS_HSRESET
U_HSRESET
.STRING "HIGHSCORE L",C_GERO,"SCHEN",0
.EVEN
U_FACTORY
.STRING "FABRIKDATENEINSTELLUNG",0
.EVEN
.ELSE
MESS_MM
.STRING "RETURN TO MAIN MENU",0
.EVEN
MESS_HSRESET
U_HSRESET
.STRING "RESET HIGH SCORES",0
.EVEN
U_FACTORY
.STRING W_FACSET,"S",0
.EVEN
.ENDIF
****U_OPMESS
**** .STRING "OPERATOR ",W_MESSAGE,0
**** .EVEN
U_END
.STRING "END ",W_TEST,"ING",0
.EVEN
**************************************************************************
* *
* SOUNDS SYSTEM TESTS MENU *
* *
**************************************************************************
MEN_STEST
.LONG RD7FONT ;FONT
.LONG STRCNRM ;CENTER PLEASE
.LONG M_STEST ;TITLE
.WORD COLOR_GREEN ;COLOR OF TITLE
.WORD 200 ;UL X
.WORD MENU_Y-3 ;UL Y
.WORD 18 ;VERTICAL SPACING
.WORD COLOR_RED ;COLOR WHEN NOT SELECTED
.WORD 18 ;HEIGHT OF SELECTION BAR
.WORD -6 ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE)
.WORD BAR_DX ;EXTRA X ON EACH SIDE.
.WORD 195 ;WIDTH OF BAR!
.WORD COLOR_DECAY ;TEXT COLOR OF SELECTED ITEM
.LONG M_DIGT,GO_DIGT,SND_HELP
.LONG M_SYNP,GO_SYNP,SND_PLAY
.IF PRINTER
.ELSE
.LONG MESS_DIAGM,0,SND_HELP
.ENDIF
.LONG MESS_MM,FORCE_MAIN,SND_HELP
.LONG 0
.IF GERMAN
M_DIGT
.STRING "ALLGEMEINER ",W_TEST,0
.EVEN
M_SYNP
.STRING "MUSIK SPIELEN",0
.EVEN
.ELSE
M_DIGT
.STRING "SOUND BOARD ",W_TEST,0
.EVEN
M_SYNP
.STRING W_PLAY," SOUNDS",0
.EVEN
.ENDIF
DAC_LX EQU 125
*
*MESSAGE FOR SOUND BOARD IRQ NOT WORKING
*
SIRQ_ERR
MESS_MAC RD15FONT,SPACING07,200,95,COLOR_PLF,STRCNRM,0
.STRING "** WARNING! **",0
.EVEN
.WORD 1
MESS_MAC RD7FONT,SPACING07,200,120,COLOR_PYELLOW,STRCNRM,0
.STRING "UNABLE TO DETECT ",W_SOUND," BOARD IRQ.",0
.EVEN
.WORD 1
MESS_MAC RD7FONT,SPACING07,200,135,COLOR_PYELLOW,STRCNRM,0
.STRING "THIS MAY RESULT IN ERRANT ",W_SOUND,"S.",0
.EVEN
.WORD 0
*
*FOOTNOTE MESSAGE TO REMIND US THAT THE IRQ FAILED
*
SIRQ_ERR2
MESS_MAC RD7FONT,SPACING07,200,165,COLOR_PRED,STRCNRM,0
.STRING W_ERROR," - ",W_SOUND," IRQ NOT DETECTED.",0
.EVEN
.WORD 0
.IF GERMAN
*
*FOOTNOTE MESSAGE TO TELL US THAT THE IRQ LINE WAS CHECKED
*
SIRQ_DETECT
MESS_MAC RD7FONT,SPACING07,200,165,COLOR_PGREEN,STRCNRM,0
.STRING W_SOUND," IRQ FUNKTIONIERT.",0
.EVEN
.WORD 0
*
*CLUE OPERATOR IN ON HOW TO TELL IF HIS SOUND BOARD IS WORKING
*
DAC_LX2 EQU DAC_LX+52
DAC_ERR
MESS_MAC RD7FONT,SPACING07,200,70,COLOR_PLF,STRCNRM,0
.STRING "AUF GER[SCHE ACHTEN:",0
.EVEN
.WORD 1
MESS_MAC RD7FONT,SPACING07,DAC_LX,85,COLOR_PYELLOW,STRLNRM,0
.STRING "0 GER[SCHE - HARDWARE PR{FEN",0
.EVEN
.WORD 1
MESS_MAC RD7FONT,SPACING07,DAC_LX,95,COLOR_PYELLOW,STRLNRM,0
.STRING "1 GER[SCHE - ",W_SOUND,"-PLATINE OK",0
.EVEN
.WORD 1
MESS_MAC RD7FONT,SPACING07,DAC_LX,105,COLOR_PYELLOW,STRLNRM,0
.STRING "2 GER[SCHE - ROM-FEHLER U2",0
.EVEN
.WORD 1
MESS_MAC RD7FONT,SPACING07,DAC_LX,115,COLOR_PYELLOW,STRLNRM,0
.STRING "3 GER[SCHE - ROM-FEHLER U3",0
.EVEN
MESS_MAC RD7FONT,SPACING07,DAC_LX,125,COLOR_PYELLOW,STRLNRM,0
.STRING "4 GER[SCHE - ROM-FEHLER U4",0
.EVEN
.WORD 1
MESS_MAC RD7FONT,SPACING07,DAC_LX,135,COLOR_PYELLOW,STRLNRM,0
.STRING "5 GER[SCHE - ROM-FEHLER U5",0
.EVEN
.WORD 1
MESS_MAC RD7FONT,SPACING07,DAC_LX,145,COLOR_PYELLOW,STRLNRM,0
.STRING "6 GER[SCHE - ROM-FEHLER U6",0
.EVEN
.WORD 1
MESS_MAC RD7FONT,SPACING07,DAC_LX,155,COLOR_PYELLOW,STRLNRM,0
.STRING "7 GER[SCHE - ROM-FEHLER U7",0
.EVEN
.WORD 1
MESS_MAC RD7FONT,SPACING07,DAC_LX,165,COLOR_PYELLOW,STRLNRM,0
.STRING "8 GER[SCHE - ROM-FEHLER U8",0
.EVEN
.WORD 1
MESS_MAC RD7FONT,SPACING07,DAC_LX,175,COLOR_PYELLOW,STRLNRM,0
.STRING "9 GER[SCHE - ROM-FEHLER U9",0
.EVEN
.WORD 1
MESS_MAC RD7FONT,SPACING07,DAC_LX,185,COLOR_PYELLOW,STRLNRM,0
.STRING "10 GER[SCHE - RAM-FEHLER",0
.EVEN
.WORD 0
.ELSE
*
*FOOTNOTE MESSAGE TO TELL US THAT THE IRQ LINE WAS CHECKED
*
SIRQ_DETECT
MESS_MAC RD7FONT,SPACING07,200,165,COLOR_PGREEN,STRCNRM,0
.STRING W_SOUND," IRQ DETECT FUNCTIONAL.",0
.EVEN
.WORD 0
*
*CLUE OPERATOR IN ON HOW TO TELL IF HIS SOUND BOARD IS WORKING
*
DAC_LX2 EQU DAC_LX+52
;DAC_ERR
; MESS_MAC RD7FONT,SPACING07,200,70,COLOR_PLF,STRCNRM,0
; .STRING "LISTEN FOR ",W_TONE,"S:",0
; .EVEN
; .WORD 1
; MESS_MAC RD7FONT,SPACING07,DAC_LX,85,COLOR_PYELLOW,STRLNRM,0
; .STRING "0 ",W_TONE,"S - CHECK HARDWARE",0
; .EVEN
; .WORD 1
; MESS_MAC RD7FONT,SPACING07,DAC_LX,95,COLOR_PYELLOW,STRLNRM,0
; .STRING "1 ",W_TONE," ",0
; .EVEN
; .WORD 1
; MESS_MAC RD7FONT,SPACING07,DAC_LX2,95,COLOR_PYELLOW,STRLNRM,0
; .STRING "- ",W_SOUND," BOARD OK",0
; .EVEN
; .WORD 1
; MESS_MAC RD7FONT,SPACING07,DAC_LX,105,COLOR_PYELLOW,STRLNRM,0
; .STRING "2 ",W_TONE,"S - ROM ",W_ERROR," U2",0
; .EVEN
; .WORD 1
; MESS_MAC RD7FONT,SPACING07,DAC_LX,115,COLOR_PYELLOW,STRLNRM,0
; .STRING "3 ",W_TONE,"S - ROM ",W_ERROR," U3",0
; .EVEN
; .WORD 1
; MESS_MAC RD7FONT,SPACING07,DAC_LX,125,COLOR_PYELLOW,STRLNRM,0
; .STRING "4 ",W_TONE,"S - ROM ",W_ERROR," U4",0
; .EVEN
; .WORD 1
; MESS_MAC RD7FONT,SPACING07,DAC_LX,135,COLOR_PYELLOW,STRLNRM,0
; .STRING "5 ",W_TONE,"S - ROM ",W_ERROR," U5",0
; .EVEN
; .WORD 1
; MESS_MAC RD7FONT,SPACING07,DAC_LX,145,COLOR_PYELLOW,STRLNRM,0
; .STRING "6 ",W_TONE,"S - ROM ",W_ERROR," U6",0
; .EVEN
; .WORD 1
; MESS_MAC RD7FONT,SPACING07,DAC_LX,155,COLOR_PYELLOW,STRLNRM,0
; .STRING "7 ",W_TONE,"S - ROM ",W_ERROR," U7",0
; .EVEN
; .WORD 1
; MESS_MAC RD7FONT,SPACING07,DAC_LX,165,COLOR_PYELLOW,STRLNRM,0
; .STRING "8 ",W_TONE,"S - ROM ",W_ERROR," U8",0
; .EVEN
; .WORD 1
; MESS_MAC RD7FONT,SPACING07,DAC_LX,175,COLOR_PYELLOW,STRLNRM,0
; .STRING "9 ",W_TONE,"S - ROM ",W_ERROR," U9",0
; .EVEN
; .WORD 1
; MESS_MAC RD7FONT,SPACING07,DAC_LX,185,COLOR_PYELLOW,STRLNRM,0
; .STRING "10 ",W_TONE,"S - SRAM ",W_ERROR,0
; .EVEN
; .WORD 0
SOUND_NORESP_MESS:
MESS_MAC RD15FONT,SPACING07,200,95,COLOR_PRED,STRCNRM,0
.STRING "ERROR - Sound Board not responding.",0
.EVEN
SOUND_NOREL_MESS:
MESS_MAC RD15FONT,SPACING07,200,138,COLOR_PRED,STRCNRM,0
.STRING "No Revision Info Available.",0
.EVEN
SOUND_WAIT_MESS:
MESS_MAC RD15FONT,SPACING07,200,217,COLOR_PDECAY,STRCNRM,0
.STRING "Testing Sound Hardware",0
.EVEN
SOUNDTEST_MSGS:
.long stmess_0, stmess_1, stmess_2, stmess_3, stmess_4
.long stmess_5, stmess_6, stmess_7, stmess_8, stmess_9
stmess_0:
MESS_MAC RD15FONT,SPACING07,200,95,COLOR_PGREEN,STRCNRM,0
.STRING "Sound Board Tests O.K.",0
.EVEN
stmess_1:
MESS_MAC RD15FONT,SPACING07,200,95,COLOR_PRED,STRCNRM,0
.STRING "Sound ROM U2 Failure",0
.EVEN
stmess_2:
MESS_MAC RD15FONT,SPACING07,200,95,COLOR_PRED,STRCNRM,0
.STRING "Sound ROM U3 Failure",0
.EVEN
stmess_3:
MESS_MAC RD15FONT,SPACING07,200,95,COLOR_PRED,STRCNRM,0
.STRING "Sound ROM U4 Failure",0
.EVEN
stmess_4:
MESS_MAC RD15FONT,SPACING07,200,95,COLOR_PRED,STRCNRM,0
.STRING "Sound ROM U5 Failure",0
.EVEN
stmess_5:
MESS_MAC RD15FONT,SPACING07,200,95,COLOR_PRED,STRCNRM,0
.STRING "Sound ROM U6 Failure",0
.EVEN
stmess_6:
MESS_MAC RD15FONT,SPACING07,200,95,COLOR_PRED,STRCNRM,0
.STRING "Sound ROM U7 Failure",0
.EVEN
stmess_7:
MESS_MAC RD15FONT,SPACING07,200,95,COLOR_PRED,STRCNRM,0
.STRING "Sound ROM U8 Failure",0
.EVEN
stmess_8:
MESS_MAC RD15FONT,SPACING07,200,95,COLOR_PRED,STRCNRM,0
.STRING "Sound ROM U9 Failure",0
.EVEN
stmess_9:
MESS_MAC RD15FONT,SPACING07,200,95,COLOR_PRED,STRCNRM,0
.STRING "Sound RAM Failure",0
.EVEN
.ENDIF
**************************************************************************
* *
* DIAGNOSTIC TESTS MENU *
* *
**************************************************************************
.IF PRINTER
.ELSE
MEN_DIAG
.LONG RD7FONT ;FONT
.LONG STRCNRM ;CENTER PLEASE
.LONG MESS_DIAG ;TITLE
.WORD COLOR_RED ;COLOR OF TITLE
.WORD 200 ;UL X
.WORD MENU_Y-3 ;UL Y
.WORD MENU_DY-6 ;VERTICAL SPACING
.WORD COLOR_RED ;COLOR WHEN NOT SELECTED
.WORD BAR_HITE-6 ;HEIGHT OF SELECTION BAR
.WORD -6 ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE)
.WORD BAR_DX ;EXTRA X ON EACH SIDE.
.WORD 195 ;WIDTH OF BAR! (A LITTLE FATTER)
.WORD COLOR_DECAY ;TEXT COLOR OF SELECTED ITEM (SHOULD BE DECAY)
.LONG MESS_SWTEST,GO_SWITCH,BLNK_HELP
.LONG MESS_DIPTEST,GO_DIP,BLNK_HELP
ROM_LEV EQU 3 ;TEST NUMBER FOLLOWING ROM TEST
.LONG MESS_CPUTEST,GO_CPU,BLNK_HELP
RTR_LEV EQU 4 ;TEST NUMBER FOLLOWING CPU TEST (FOR RETURN)
.LONG M_STEST,GO_STEST,BLNK_HELP
.LONG MESS_PATTERNS,GO_PATTERNS,BLNK_HELP
.LONG MESS_DRIVER,GO_DRIVER,BLNK_HELP
.LONG MESS_BURN,GO_BURN,BLNK_HELP
.LONG MESS_MM,0,BLNK_HELP ;RETURN TO MAIN MENU
.LONG 0
.ENDIF
**************************************************************************
* *
* HARDWARE INFORMATION MENU *
* *
**************************************************************************
.IF PRINTER
.ELSE
MEN_HARDWARE
.LONG RD7FONT ;FONT
.LONG STRCNRM ;CENTER PLEASE
.LONG MESS_HDW_TITLE ;TITLE
.WORD COLOR_GREEN ;COLOR OF TITLE
.WORD 200 ;UL X
.WORD 230 ;UL Y
.WORD MENU_DY ;VERTICAL SPACING
.WORD COLOR_BLUE ;COLOR WHEN NOT SELECTED
.WORD BAR_HITE ;HEIGHT OF SELECTION BAR
.WORD BAR_DY ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE)
.WORD BAR_DX ;EXTRA X ON EACH SIDE.
.WORD 234 ;WIDTH OF BAR! (A LITTLE FATTER)
.WORD COLOR_DECAY ;TEXT COLOR OF SELECTED ITEM (SHOULD BE DECAY)
.if NOPIC
.LONG MESS_MM,FORCE_MAIN,NO_HELP
.else
.LONG MESS_MM,RET_HARDWARE,NO_HELP
.endif
.LONG 0
.ENDIF
MESS_HDW_TITLE
.STRING "HARDWARE INFORMATION",0
.EVEN
**************************************************************************
* *
* VOLUME ADJUSTMENT MENU *
* *
**************************************************************************
.IF PRINTER
.ELSE
MEN_VOLUME
.LONG RD7FONT ;FONT
.LONG STRCNRM ;CENTER PLEASE
.LONG MESS_VOL_TITLE ;TITLE
.WORD COLOR_GREEN ;COLOR OF TITLE
.WORD 200 ;UL X
.WORD 230 ;UL Y
.WORD MENU_DY ;VERTICAL SPACING
.WORD COLOR_BLUE ;COLOR WHEN NOT SELECTED
.WORD BAR_HITE ;HEIGHT OF SELECTION BAR
.WORD BAR_DY ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE)
.WORD BAR_DX ;EXTRA X ON EACH SIDE.
.WORD 244 ;WIDTH OF BAR! (A LITTLE FATTER)
.WORD COLOR_DECAY ;TEXT COLOR OF SELECTED ITEM (SHOULD BE DECAY)
.LONG MESS_MM,FORCE_MAIN,NO_HELP
.LONG 0
.ENDIF
VOL_INST:
MESS_MAC RD7FONT,SPACING07,200,60,COLOR_PRGB,STRCNRM,0
.STRING "- = VOLUME DOWN / + = VOLUME UP",0
.EVEN
VOL_INST_T2:
MESS_MAC RD7FONT,SPACING07,200,60,COLOR_PRGB,STRCNRM,0
.STRING "P1 START = VOLUME DOWN / P2 START = VOLUME UP",0
.EVEN
MESS_VOL_TITLE
.STRING "VOLUME ADJUSTMENT",0
.EVEN
**************************************************************************
* *
* BOOKKEEPING *
* *
**************************************************************************
**************************************************************************
* *
* AUDIT TABLE STRUCTURE *
* *
**************************************************************************
AUD_MESS EQU 0 ;LONG-PTR TO TEXT
AUD_ROUTINE EQU AUD_MESS+LONG_SIZE ;LONG - NON ZERO MEANS CALL FOR NUMBER
AUD_NUMBER EQU AUD_ROUTINE+LONG_SIZE ;WORD - IF ABOVE ZERO, THEN AUDIT NUMBER
AUD_T_SIZE EQU AUD_NUMBER+WORD_SIZE
AMAC .MACRO MESS,ROUT,AUDIT
.LONG :MESS:
.LONG :ROUT:
.WORD :AUDIT:
.ENDM
AUD_LM EQU TIT_ULX ;SQUARE OFF AUDITS W/ HEADER.
AUD_RM EQU TIT_LRX
AUD_Y_START EQU 61
AUD_DY EQU 18
CP2_Y EQU 142 ;PART 2 OF COIN AUDIT PAGE.
MES_TOTALS
.STRING W_TOTAL," ",W_COLLECTION,0
.EVEN
*
* DETAILED COINAGE AVAILABLE (ON 1ST COINAGE PAGE)
*
MEN_DETAIL
.LONG RD7FONT ;FONT
.LONG STRCNRM ;CENTER PLEASE
.LONG MESS_PATTERNS ;TITLE
.WORD COLOR_YELLOW ;COLOR OF TITLE
.WORD 200 ;UL X (CENTER IT!)
.WORD 227 ;UL Y
.WORD 12 ;VERTICAL SPACING
.WORD COLOR_BLUE ;COLOR WHEN NOT SELECTED
.WORD 12 ;HEIGHT OF SELECTION BAR
.WORD -2 ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE)
.WORD BAR_DX ;EXTRA X ON EACH SIDE.
.WORD 170 ;WIDTH OF BAR!
.WORD COLOR_DECAY ;TEXT COLOR OF SELECTED ITEM
.LONG MESS_DETAIL,0,NO_HELP ;DETAILED SECTION
.LONG MESS_MM,FORCE_MAIN,NO_HELP ;RETURN TO MAIN MENU
.LONG 0
.IF GERMAN
MESS_DETAIL
.STRING "WEITERE DATEN"
.BYTE 0
.EVEN
.ELSE
MESS_DETAIL
.STRING "MORE DETAILED DATA"
.BYTE 0
.EVEN
.ENDIF
*
* TOP HALF OF COIN AUDIT PAGE 1 TABLE
*
COIN_AUDS
.WORD AUD_Y_START ;Y START
.WORD 14 ;Y BETWEEN ENTRIES
.WORD AUD_LM ;LEFT MARGIN X
.WORD AUD_RM ;RIGHT MARGIN X
AMAC M_LCOIN,0,AUDLCOIN
AMAC M_RCOIN,0,AUDRCOIN
AMAC M_CCOIN,0,AUDCCOIN
AMAC M_4COIN,0,AUD4COIN
AMAC M_SCOIN,0,AUDSCOIN
AMAC M_PAIDC,0,AUDPAIDC
AMAC M_GSTART,0,AUDGSTARTS
AMAC M_START,STARTS,0
AMAC M_CONT,CONTINS,0
AMAC M_PLAYS,DOPLAYS,0
AMAC M_HSLEFT,DOHSLEFT,0
.LONG 0
COIN_AUDS_BV
.WORD AUD_Y_START ;Y START
.WORD 14 ;Y BETWEEN ENTRIES
.WORD AUD_LM ;LEFT MARGIN X
.WORD AUD_RM ;RIGHT MARGIN X
AMAC M_LCOIN,0,AUDLCOIN
AMAC M_RCOIN,0,AUDRCOIN
AMAC M_CCOIN,0,AUDCCOIN
AMAC M_DBV,0,AUD4COIN
AMAC M_SCOIN,0,AUDSCOIN
AMAC M_PAIDC,0,AUDPAIDC
AMAC M_GSTART,0,AUDGSTARTS
AMAC M_START,STARTS,0
AMAC M_CONT,CONTINS,0
AMAC M_PLAYS,DOPLAYS,0
AMAC M_HSLEFT,DOHSLEFT,0
.LONG 0
.IF GERMAN
M_WDOG:
.STRING "WATCHDOGS AUSGEL",C_GERO,"ST",0
.EVEN
M_SECURITY
.STRING "FEHLSTARTS",0
.EVEN
.ELSE
M_WDOG:
.STRING "WATCHDOGS TRIGGERED",0
.EVEN
M_SECURITY
.STRING "START FAILURES",0
.EVEN
.ENDIF
M_BADTRAP
.STRING "SOFTWARE TRAPS",0
.EVEN
M_WARNING
.STRING "SOFTWARE WARNINGS",0
.EVEN
M_STOCKINGS
.STRING "STOCKING ALERT!",0
.EVEN
*
* BOTTOM HALF OF COIN AUDIT PAGE 1 TABLE
*
.IF GERMAN
M_LCOIN
.STRING "LINKER M",C_GERU,"NZEINWURF",0
.EVEN
M_CCOIN
.STRING "3. M",C_GERU,"NZEINWURF",0
.EVEN
M_RCOIN
.STRING "RECHTER M",C_GERU,"NZEINWURF",0
.EVEN
M_4COIN
.STRING "4. M",C_GERU,"NZEINWURF",0
.EVEN
M_SCOIN
.STRING "SERVICE-KREDITE",0
.EVEN
M_PAIDC
.STRING "GESPIELTE KREDITE",0
.EVEN
M_START
.STRING "GESTARTETE SPIELE",0
.EVEN
M_CONT
.STRING "SPIELFORTSETZUNGEN",0
.EVEN
M_PLAYS
.STRING "GESAMTSPIELE",0
.EVEN
M_HSLEFT
.STRING "SPIELE BIS H.S.-R",C_GERU,"CKSTELLUNG",0
.EVEN
M_HSOFF
.STRING "OFF",0
.EVEN
.ELSE
M_LCOIN
.STRING W_LEFT," ",W_SLOT," ",W_COINS,0
.EVEN
M_CCOIN
.STRING "THIRD ",W_SLOT," ",W_COINS,0
.EVEN
M_RCOIN
.STRING W_RIGHT," ",W_SLOT," ",W_COINS,0
.EVEN
M_4COIN
.STRING W_FOURTH," ",W_SLOT," ",W_COINS,0
.EVEN
M_SCOIN
.STRING "SERVICE ",W_CREDITS,0
.EVEN
M_PAIDC
.STRING "PAID ",W_CREDITS,0
.EVEN
M_GSTART
.STRING W_TOTAL," ",W_GAMES," ",W_START,"ED",0
.EVEN
M_GGAMEO
.STRING W_TOTAL," ",W_GAMES," ENDED",0
.EVEN
M_START
.STRING W_PLAYER," ",W_STARTS,0
.EVEN
M_CONT
.STRING W_PLAYER," ",W_CONTINUES,0
.EVEN
M_PLAYS
.STRING W_TOTAL," ",W_PLAYER," ",W_STARTS," AND ",W_CONTINUES,0
.EVEN
M_HSLEFT
.STRING W_PLAYS," UNTIL H.S. RESET",0
.EVEN
M_HSOFF
.STRING "OFF",0
.EVEN
.ENDIF
M_DBV
.STRING "BILL VALIDATOR PULSES",0
.EVEN
*
* AUDIT TEXT
*
MESS_ERROR
MESS_MAC RD7FONT,SPACING07,0,0,COLOR_PRED,STRLNRM,0
.STRING " ",W_ERROR
.BYTE 0
.EVEN
MESS_AUD_NUM
MESS_MAC RD7FONT,SPACING07,367,227,COLOR_PYELLOW,STRRNRM,0
MESS15_AUD_NUM
MESS_MAC RD15FONT,SPACING07,367,227,COLOR_PYELLOW,STRRNRM,0
MESS_AUD_LINE
MESS_MAC RD7FONT,SPACING07,30,355,COLOR_PYELLOW,STRLNRM,0
MESS15_AUD_LINE
MESS_MAC RD15FONT,SPACING07,30,355,COLOR_PYELLOW,STRLNRM,0
**************************************************************************
* *
* COIN_D1 *
* *
* THIS IS TOP HALF OF DETAILED COIN AUDIT PAGE *
* ITS THE SAME AS THE OTHER COIN PAGE WITH THE Y POSITIONING *
* A LITTLE DIFFERENT *
* *
**************************************************************************
COIN_D1
.WORD AUD_Y_START+7
.WORD 24 ;Y BETWEEN ENTRIES
.WORD AUD_LM ;LEFT MARGIN X
.WORD AUD_RM ;RIGHT MARGIN X
AMAC M_LCOIN,0,AUDLCOIN
AMAC M_RCOIN,0,AUDRCOIN
AMAC M_CCOIN,0,AUDCCOIN
AMAC M_4COIN,0,AUD4COIN
AMAC M_TOTCOL,DO_MONEY,0
.LONG 0
COIN_D1_BV
.WORD AUD_Y_START+7
.WORD 24 ;Y BETWEEN ENTRIES
.WORD AUD_LM ;LEFT MARGIN X
.WORD AUD_RM ;RIGHT MARGIN X
AMAC M_LCOIN,0,AUDLCOIN
AMAC M_RCOIN,0,AUDRCOIN
AMAC M_CCOIN,0,AUDCCOIN
AMAC M_DBV,0,AUD4COIN
AMAC M_TOTCOL,DO_MONEY,0
.LONG 0
COIN_SD1
.WORD AUD_Y_START+7
.WORD 24 ;Y BETWEEN ENTRIES
.WORD AUD_LM ;LEFT MARGIN X
.WORD AUD_RM ;RIGHT MARGIN X
AMAC M_LCOIN,0,AUDLCOIN
AMAC M_RCOIN,0,AUDRCOIN
AMAC M_CCOIN,0,AUDCCOIN
AMAC M_4COIN,0,AUD4COIN
.LONG 0
COIN_SD1_BV
.WORD AUD_Y_START+7
.WORD 24 ;Y BETWEEN ENTRIES
.WORD AUD_LM ;LEFT MARGIN X
.WORD AUD_RM ;RIGHT MARGIN X
AMAC M_LCOIN,0,AUDLCOIN
AMAC M_RCOIN,0,AUDRCOIN
AMAC M_CCOIN,0,AUDCCOIN
AMAC M_DBV,0,AUD4COIN
.LONG 0
*
* DOOR CLOSED AUDITS.
*
M_TOTCOL
.STRING W_TOTAL,0
.EVEN
.IF GERMAN
MESS_CLEAR_SUBS
.STRING "M",C_GERU,"NZZ",C_GERA,"HLER-L",C_GERO,"SCHEN",0
.EVEN
.ELSE
MESS_CLEAR_SUBS
.STRING W_CLEAR," ",W_COINCOUNTS,0
.EVEN
.ENDIF
MESS_SUBS_CLEAR
.STRING W_COINCOUNTS," ",W_CLEAR,"ED",0
.EVEN
.IF GERMAN
MESS_YES
.STRING "JA",0
.EVEN
MESS_NO
.STRING "NEIN",0
.EVEN
.ELSE
MESS_YES
.STRING "YES",0
.EVEN
MESS_NO
.STRING "NO",0
.EVEN
.ENDIF
*
* CLEAR SUB-TOTALS (ON DETAILED COINAGE PAGE)
*
MEN_CLR_SUB
.LONG RD7FONT ;FONT
.LONG STRCNRM ;CENTER PLEASE
.LONG MESS_PATTERNS ;TITLE
.WORD COLOR_YELLOW ;COLOR OF TITLE
.WORD 200 ;UL X (CENTER IT!)
.WORD 227 ;UL Y
.WORD 12 ;VERTICAL SPACING
.WORD COLOR_BLUE ;COLOR WHEN NOT SELECTED
.WORD 12 ;HEIGHT OF SELECTION BAR
.WORD -2 ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE)
.WORD BAR_DX ;EXTRA X ON EACH SIDE.
.WORD 170 ;WIDTH OF BAR!
.WORD COLOR_DECAY ;TEXT COLOR OF SELECTED ITEM
.LONG MESS_CLEAR_SUBS,0,NO_HELP ;CLEAR SUB-TOTALS
.LONG MESS_MM,FORCE_MAIN,NO_HELP ;RETURN TO MAIN MENU
.LONG 0
*
* YES/NO (FOR ARE YOU SURE?)
*
MEN_YN
.LONG RD7FONT ;FONT
.LONG STRCNRM ;CENTER PLEASE
.LONG MESS_PATTERNS ;TITLE
.WORD COLOR_RED ;COLOR OF TITLE
.WORD 200 ;UL X
.WORD 166 ;UL Y
.WORD 17 ;VERTICAL SPACING
.WORD COLOR_YELLOW ;COLOR WHEN NOT SELECTED
.WORD 17 ;HEIGHT OF SELECTION BAR
.WORD -4 ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE)
.WORD BAR_DX ;EXTRA X ON EACH SIDE.
.WORD 78 ;WIDTH OF BAR! (A LITTLE FATTER)
.WORD COLOR_DECAY ;TEXT COLOR OF SELECTED ITEM
.LONG MESS_YES,0,NO_HELP
.LONG MESS_NO,0,NO_HELP
.LONG 0
**************************************************************************
* *
* GAME PLAY AUDIT PAGES *
* *
**************************************************************************
GAME_AUDS
.WORD 61 ;Y START
.WORD 17 ;Y BETWEEN ENTRIES
.WORD AUD_LM ;LEFT MARGIN X
.WORD AUD_RM ;RIGHT MARGIN X
AMAC M_GSTART,0,AUDGSTARTS
AMAC M_GGAMEO,0,AUDNUMTG
AMAC M_TTIME,DO_PTIME,0
AMAC M_UPTIME,DO_UPTIME,0
AMAC M_AVGTC,DO_AVGTC,0
AMAC M_COSTPG,DO_AVGGC,0
AMAC M_1TIME,DO_P1TIME,0
AMAC M_2TIME,DO_P2TIME,0
AMAC M_3TIME,DO_P3TIME,0
.LONG 0
GAME_AUD2
.WORD 61 ;Y START
.WORD 15 ;Y BETWEEN ENTRIES
.WORD AUD_LM ;LEFT MARGIN X
.WORD AUD_RM ;RIGHT MARGIN X
AMAC M_START,STARTS,0
AMAC M_CONT,CONTINS,0
AMAC M_PLAYS,DOPLAYS,0
AMAC M_CONTOFF,0,AUDCONTOFFER
AMAC M_CONTTAK,0,AUDCONTTAKEN
AMAC M_PCTCONT,DO_PCTCONT,0
AMAC M_COSTPP,DO_AVGPC,0
AMAC M_SLAMS,0,AUDSLAMS
AMAC M_BURNIN,0,AUDAUTO
AMAC M_SECURITY,0,AUDSECURITY
.LONG 0
GAME_AUD3
.WORD 61 ;Y START
.WORD 17 ;Y BETWEEN ENTRIES
.WORD AUD_LM ;LEFT MARGIN X
.WORD AUD_RM ;RIGHT MARGIN X
AMAC M_GSTART,0,AUDGSTARTS
AMAC M_LABTR,0,AUDLABTR ;Checkpoint - BTR in LA
AMAC M_LACLUB,0,AUDLACLUB ;Checkpoint - Enter CLUB X
AMAC M_LAAERO,0,AUDLAAERO ;Checkpoint - See Aerosmith
AMAC M_LAEND,0,AUDLAEND ;Checkpoint - End CLUB X
AMAC M_FLHELI,0,AUDFLHELI ;Checkpoint - Boss helicopter reached
AMAC M_FLEND,0,AUDFLEND ;Checkpoint - Flight wave completed
AMAC M_MIDEAST,0,AUDMIDEAST ;Checkpoint - Middle East Selected
AMAC M_MIEND,0,AUDMIEND ;Checkpoint - Middle East Completed
.LONG 0
GAME_AUD4
.WORD 61 ;Y START
.WORD 17 ;Y BETWEEN ENTRIES
.WORD AUD_LM ;LEFT MARGIN X
.WORD AUD_RM ;RIGHT MARGIN X
AMAC M_GSTART,0,AUDGSTARTS
AMAC M_JUNGLE,0,AUDJUNGLE ;Checkpoint - Jungle selected
AMAC M_JUBTR,0,AUDJUBTR ;Checkpoint - Reached BTR
AMAC M_JUDESK,0,AUDJUDESK ;Checkpoint - Defeated receptionist
AMAC M_JUELEV,0,AUDJUELEV ;Checkpoint - Reached elevator
AMAC M_JUBZERK,0,AUDJUBZERK ;Checkpoint - Reached Berzerk hall
AMAC M_JUBUG,0,AUDJUBUG ;Checkpoint - Bug chase
AMAC M_JUEND,0,AUDJUEND ;Checkpoint - Jungle completed
.LONG 0
GAME_AUD5
.WORD 61 ;Y START
.WORD 17 ;Y BETWEEN ENTRIES
.WORD AUD_LM ;LEFT MARGIN X
.WORD AUD_RM ;RIGHT MARGIN X
AMAC M_GSTART,0,AUDGSTARTS
AMAC M_JAPAN,0,AUDJAPAN ;Checkpoint - Pacific Rim selected
AMAC M_JACRATE,0,AUDJACRATE ;Checkpoint - Crated section reached
AMAC M_JAFAC,0,AUDJAFAC ;Checkpoint - Factory section reached
AMAC M_JARD,0,AUDJARD ;Checkpoint - R&D section reached
AMAC M_JADESK,0,AUDJADESK ;Checkpoint - Boss desk reached
AMAC M_JAEND,0,AUDJAEND ;Checkpoint - Pacific Rim completed
AMAC M_WEMBLEY,0,AUDWEMBLEY ;Checkpoint - Wembley stadium reached
AMAC M_GAMEC,0,AUDFINISH ;Game completed
.LONG 0
GAME_AUDL
.WORD 61 ;Y START
.WORD 17 ;Y BETWEEN ENTRIES
.WORD AUD_LM ;LEFT MARGIN X
.WORD AUD_RM ;RIGHT MARGIN X
AMAC M_GSTART,0,AUDGSTARTS
AMAC M_TYLER,0,AUDTYLER ;Steven Tyler found
AMAC M_PERRY,0,AUDPERRY ;Joe Perry found
AMAC M_HAMILTON,0,AUDHAMILTON ;Tom Hamilton found
AMAC M_WHITFORD,0,AUDWHITFORD ;Brad Whitford found
AMAC M_KRAMER,0,AUDKRAMER ;Joey Kramer found
AMAC M_BACKSTAGE,0,AUDBACKSTAGE ;Checkpoint - Pleasure dome
.LONG 0
GAME_AUDH
.WORD 61 ;Y START
.WORD 17 ;Y BETWEEN ENTRIES
.WORD AUD_LM ;LEFT MARGIN X
.WORD AUD_RM ;RIGHT MARGIN X
AMAC M_WDOG,0,AUDDOGGY
AMAC M_WARNING,0,AUDWARNING
AMAC M_BADTRAP,0,AUDBADTRAP
AMAC M_STOCKINGS,0,AUDSTOCKINGS
.LONG 0
**************************************************************************
* *
* AUDIT PAGE OPTIONS #1 *
* *
* TO NEXT PAGE *
* RETURN TO MAIN MENU *
* *
**************************************************************************
MEN_AP1
.LONG RD7FONT ;FONT
.LONG STRCNRM ;CENTER PLEASE
.LONG MESS_PATTERNS ;TITLE
.WORD COLOR_YELLOW ;COLOR OF TITLE
.WORD 200 ;UL X (CENTER IT!)
.WORD 227 ;UL Y
.WORD 12 ;VERTICAL SPACING
.WORD COLOR_BLUE ;COLOR WHEN NOT SELECTED
.WORD 12 ;HEIGHT OF SELECTION BAR
.WORD -2 ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE)
.WORD BAR_DX+5 ;EXTRA X ON EACH SIDE.
.WORD 170 ;WIDTH OF BAR!
.WORD COLOR_DECAY ;TEXT COLOR OF SELECTED ITEM
.LONG MESS_TOPAGE2,0,NO_HELP ;"TO NEXT PAGE"
.LONG MESS_MM,FORCE_MAIN,NO_HELP ;"RETURN TO MAIN MENU"
.LONG 0
**************************************************************************
* *
* AUDIT PAGE OPTIONS #2 *
* *
* TO NEXT PAGE *
* TO PREVIOUS PAGE *
* RETURN TO MAIN MENU *
* *
**************************************************************************
MEN_AP2
.LONG RD7FONT ;FONT
.LONG STRCNRM ;CENTER PLEASE
.LONG MESS_PATTERNS ;TITLE
.WORD COLOR_YELLOW ;COLOR OF TITLE
.WORD 200 ;UL X (CENTER IT!)
.WORD 216 ;UL Y
.WORD 12 ;VERTICAL SPACING
.WORD COLOR_BLUE ;COLOR WHEN NOT SELECTED
.WORD 12 ;HEIGHT OF SELECTION BAR
.WORD -2 ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE)
.WORD BAR_DX+5 ;EXTRA X ON EACH SIDE.
.WORD 170 ;WIDTH OF BAR!
.WORD COLOR_DECAY ;TEXT COLOR OF SELECTED ITEM
.LONG MESS_TOPAGE2,0,NO_HELP ;"TO NEXT PAGE"
.LONG MESS_BACKP1,0,NO_HELP ;"TO PREVIOUS PAGE"
.LONG MESS_MM,FORCE_MAIN,NO_HELP ;"RETURN TO MAIN MENU"
.LONG 0
**************************************************************************
* *
* AUDIT PAGE OPTIONS #3 *
* *
* TO PREVIOUS PAGE *
* RETURN TO MAIN MENU *
* *
**************************************************************************
MEN_AP3
.LONG RD7FONT ;FONT
.LONG STRCNRM ;CENTER PLEASE
.LONG MESS_PATTERNS ;TITLE
.WORD COLOR_YELLOW ;COLOR OF TITLE
.WORD 200 ;UL X (CENTER IT!)
.WORD 227 ;UL Y
.WORD 12 ;VERTICAL SPACING
.WORD COLOR_BLUE ;COLOR WHEN NOT SELECTED
.WORD 12 ;HEIGHT OF SELECTION BAR
.WORD -2 ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE)
.WORD BAR_DX+5 ;EXTRA X ON EACH SIDE.
.WORD 170 ;WIDTH OF BAR!
.WORD COLOR_DECAY ;TEXT COLOR OF SELECTED ITEM
.LONG MESS_BACKP1,0,NO_HELP ;"TO PREVIOUS PAGE"
.LONG MESS_MM,FORCE_MAIN,NO_HELP ;"RETURN TO MAIN MENU"
.LONG 0
**************************************************************************
* *
* AUDIT PAGE MESSAGES *
* *
**************************************************************************
.IF GERMAN
MESS_TOPAGE2
.STRING "N",C_GERA,"CHSTE AUSLESE-SEITE",0
.EVEN
MESS_BACKP1
.STRING "VORHERIGE AUSLESE-SEITE",0
.EVEN
M_GAMEC
.STRING "KOMPLETT DURCHGESPIELTE SPIELE",0
.EVEN
M_WAVER
.STRING "DURCHSCHN. ERREICHTE WELLE",0
.EVEN
M_COSTPG
.STRING "DURCHSCHN. KREDIT/SPIEL",0
.EVEN
M_BURNIN
.STRING "BURN-IN-TEST ERFOLGREICH BEENDET",0
.EVEN
M_1TIME
.STRING "ZEIT F. 1 SPIELER",0
.EVEN
M_2TIME
.STRING "ZEIT F. 2 SPIELER",0
.EVEN
M_3TIME
.STRING "ZEIT F. 3 SPIELER",0
.EVEN
M_TTIME
.STRING "GESAMT-SPIELZEIT",0
.EVEN
M_UPTIME
.STRING "EINSCHALTZEIT",0
.EVEN
M_AVGTC
.STRING "DURCHSCHN. ZEIT/KREDIT",0
.EVEN
M_MAXWAVE
.STRING "MAXIMUM-WELLE ERREICHT",0
.EVEN
M_CONTOFF
.STRING "ANGEBOTENE SPIELFORTSETZUNGEN",0
.EVEN
M_CONTTAK
.STRING "ANGENOMMENE SPIELFORTSETZUNGEN",0
.EVEN
M_PCTCONT
.STRING "PERCENTAGE OF ",W_CONTINUES," TAKEN",0
.EVEN
M_SLAMS
.STRING "M",C_GERU,"NZT",C_GERU,"R-SLAMS",0
.EVEN
.ELSE
MESS_TOPAGE2
.STRING "NEXT ",W_AUDIT," PAGE",0
.EVEN
MESS_BACKP1
.STRING "PREVIOUS ",W_AUDIT," PAGE",0
.EVEN
M_GAMEC
.STRING W_GAME,"S ",W_PLAY,"ED TO COMPLETION",0
.EVEN
M_WAVER
.STRING W_AVERAGE," WAVE REACHED",0
.EVEN
M_COSTPG
.STRING W_AVERAGE," ",W_CREDITS," SPENT PER ",W_GAME,0
.EVEN
M_COSTPP
.STRING W_AVERAGE," ",W_CREDITS," SPENT PER ",W_PLAYER,"/",W_GAME,0
.EVEN
M_BURNIN
.STRING "BURNIN LOOPS SUCCESSFULLY COMPLETED",0
.EVEN
M_1TIME
.STRING W_TIME," 1 ",W_PLAYER," ONLY",0
.EVEN
M_2TIME
.STRING W_TIME," 2 ",W_PLAYER," ",W_SIMULTANEOUS,0
.EVEN
M_3TIME
.STRING W_TIME," 3 ",W_PLAYER," ",W_SIMULTANEOUS,0
.EVEN
M_TTIME
.STRING W_TOTAL," ",W_PLAY," ",W_TIME,0
.EVEN
M_UPTIME
.STRING W_TOTAL," ",W_GAME," UPTIME",0
.EVEN
M_AVGTC
.STRING W_AVERAGE," ",W_TIME," / ",W_CREDIT,0
.EVEN
M_MAXWAVE
.STRING "MAXIMUM WAVE COMPLETED",0
.EVEN
M_CONTOFF
.STRING W_GAME," ",W_CONTINUES," OFFERED",0
.EVEN
M_CONTTAK
.STRING W_GAME," ",W_CONTINUES," TAKEN",0
.EVEN
M_PCTCONT
.STRING "PERCENTAGE OF ",W_CONTINUES," TAKEN",0
.EVEN
M_SLAMS
.STRING W_COIN," DOOR SLAMS",0
.EVEN
.ENDIF
M_LABTR
.STRING "REACHED L.A. BTR",0
.EVEN
M_LACLUB
.STRING "ENTERED CLUB X",0
.EVEN
M_LAAERO
.STRING "REACHED AEROSMITH IN CLUB X",0
.EVEN
M_LAEND
.STRING "COMPLETED CLUB X",0
.EVEN
M_FLHELI
.STRING "REACHED HELICOPTER BOSS",0
.EVEN
M_FLEND
.STRING "COMPLETED FLYING WAVE",0
.EVEN
M_MIDEAST
.STRING "SELECTED MIDDLE EAST",0
.EVEN
M_MIEND
.STRING "COMPLETED MIDDLE EAST",0
.EVEN
M_JUNGLE
.STRING "SELECTED JUNGLE",0
.EVEN
M_JUBTR
.STRING "REACHED JUNGLE BTR",0
.EVEN
M_JUDESK
.STRING "REACHED RECEPTIONIST",0
.EVEN
M_JUELEV
.STRING "REACHED ELEVATOR",0
.EVEN
M_JUBZERK
.STRING "REACHED FINAL HALLWAY",0
.EVEN
M_JUBUG
.STRING "STARTED BUG CHASE",0
.EVEN
M_JUEND
.STRING "COMPLETED JUNGLE",0
.EVEN
M_JAPAN
.STRING "SELECTED PACIFIC RIM",0
.EVEN
M_JACRATE
.STRING "REACHED WAREHOUSE",0
.EVEN
M_JAFAC
.STRING "REACHED FACTORY",0
.EVEN
M_JARD
.STRING "REACHED R&D AREA",0
.EVEN
M_JADESK
.STRING "REACHED MANAGER'S OFFICE",0
.EVEN
M_JAEND
.STRING "COMPLETED PACIFIC RIM",0
.EVEN
M_WEMBLEY
.STRING "REACHED WEMBLEY STADIUM",0
.EVEN
M_TYLER
.STRING "FOUND STEVEN TYLER",0
.EVEN
M_PERRY
.STRING "FOUND JOE PERRY",0
.EVEN
M_WHITFORD
.STRING "FOUND BRAD WHITFORD",0
.EVEN
M_HAMILTON
.STRING "FOUND TOM HAMILTON",0
.EVEN
M_KRAMER
.STRING "FOUND JOEY KRAMER",0
.EVEN
M_BACKSTAGE
.STRING "PARTYED BACKSTAGE",0
.EVEN
**************************************************************************
* *
* UTILITIES MENU *
* *
**************************************************************************
*
* UTILITES MENU GOES LEFT OF CENTER
*
UM_WID EQU 206
UM_X EQU TIT_ULX+GAP+MB_XWID+(UM_WID/2)+C_KLUDGE
.IF GERMAN
MEN_UTIL
.LONG RD7FONT ;FONT
.LONG STRCNRM ;CENTER PLEASE
.LONG MESS_UTIL ;TITLE
.WORD COLOR_WHITE ;COLOR OF TITLE
.WORD UM_X ;UL X
.WORD MENU_Y-5 ;UL Y
.WORD 20 ;VERTICAL SPACING
.WORD COLOR_WHITE ;COLOR WHEN NOT SELECTED
.WORD 19 ;HEIGHT OF SELECTION BAR
.WORD -5 ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE)
.WORD BAR_DX ;EXTRA X ON EACH SIDE.
.WORD UM_WID ;WIDTH OF BAR!
.WORD COLOR_DECAY ;TEXT COLOR OF SELECTED ITEM
**** .LONG MESS_OPMESS,DO_OPMESS,BLNK_HELP
.LONG MESS_CLCRED,DO_CLCRED,BLNK_HELP
.LONG MESS_CLCOIN,DO_CLCOIN,BLNK_HELP
.LONG MESS_CLAUD,DO_CLAUD,BLNK_HELP
.LONG MESS_HSRES,DO_HSRES,BLNK_HELP
.LONG MESS_DEF_ADJ,DO_DEF_ADJ,BLNK_HELP
.LONG MESS_FACSET,DO_FACSET,BLNK_HELP
.LONG MESS_MM,0,BLNK_HELP ;RETURN TO MAIN MENU
.LONG 0 ;END
MESS_CLCRED
U_CLR_CRED
MESS_CCCONF
.STRING "KREDITE-L]SCHUNG",0
.EVEN
MESS_CLCOIN
U_CLR_COIN
.STRING "M{NZZ[HLER-L]SCHUNG",0
.EVEN
MESS_CLAUD
U_CLR_AUD
.STRING "AUSLESEDATEN L]SCHEN",0
.EVEN
MESS_HSRES
.STRING "HIGHSCORE L]SCHEN",0
.EVEN
MESS_FACSET
.STRING "FABRIKDATENEINSTELLUNG",0
.EVEN
MESS_FACFAIL
.STRING "CMOS SCHLECHT",0
.EVEN
MESS_CANCELLED
.STRING "CANCELLED",0
.EVEN
MESS_DEF_ADJ
.STRING "VORGEW[HLTE EINSTELLUNG",0
.EVEN
.ELSE
MEN_UTIL
.LONG RD7FONT ;FONT
.LONG STRCNRM ;CENTER PLEASE
.LONG MESS_UTIL ;TITLE
.WORD COLOR_WHITE ;COLOR OF TITLE
.WORD UM_X ;UL X
.WORD MENU_Y-5 ;UL Y
.WORD 20 ;VERTICAL SPACING
.WORD COLOR_WHITE ;COLOR WHEN NOT SELECTED
.WORD 19 ;HEIGHT OF SELECTION BAR
.WORD -5 ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE)
.WORD BAR_DX ;EXTRA X ON EACH SIDE.
.WORD UM_WID ;WIDTH OF BAR!
.WORD COLOR_DECAY ;TEXT COLOR OF SELECTED ITEM
**** .LONG MESS_OPMESS,DO_OPMESS,OPMESS_HELP
.LONG MESS_CLCRED,DO_CLCRED,CLCRED_HELP
.LONG MESS_CLCOIN,DO_CLCOIN,CLCOIN_HELP
.LONG MESS_CLAUD,DO_CLAUD,CLAUD_HELP
.LONG MESS_HSRES,DO_HSRES,HSRES_HELP
.LONG MESS_DEF_ADJ,DO_DEF_ADJ,DEF_ADJ_HELP
.LONG MESS_FACSET,DO_FACSET,FACSET_HELP
.LONG MESS_MM,0,BLNK_HELP ;RETURN TO MAIN MENU
.LONG 0 ;END
MESS_CLCRED
U_CLR_CRED
.STRING W_CLEAR," ",W_CREDITS,0
.EVEN
MESS_CCCONF
.STRING W_CREDITS," ",W_CLEAR,"ED",0
.EVEN
MESS_CLCOIN
U_CLR_COIN
.STRING W_CLEAR," ",W_COINCOUNTS,0
.EVEN
MESS_CLAUD
U_CLR_AUD
.STRING W_CLEAR," ",W_GAME," ",W_AUDITS,0
.EVEN
MESS_HSRES
.STRING "RESET ",W_HIGH," ",W_SCORE,"S",0
.EVEN
MESS_FACSET
.STRING "FULL FACTORY RESTORE",0
.EVEN
MESS_FACFAIL
.STRING "FAILURE IN CMOS RAM",0
.EVEN
MESS_CANCELLED
.STRING "CANCELLED",0
.EVEN
MESS_DEF_ADJ
.STRING "DEFAULT ",W_ADJUSTMENTS,0
.EVEN
.ENDIF
*
* HELP FOR UTILITY MENU
*
CLCRED_HELP
.WORD 0 ;CENTER JUSTIFY
.WORD COLOR_BLUE ;COLOR
.WORD 3 ;2 ENTRIES
.LONG MEH_CLCRED1
.LONG MEH_CLCRED2
.LONG MEH_CLCRED3
CLCOIN_HELP
.WORD 0 ;CENTER JUSTIFY
.WORD COLOR_BLUE ;COLOR
.WORD 4 ;2 ENTRIES
.LONG MEH_CLCOIN1
.LONG MEH_CLCOIN2
.LONG MEH_CLCOIN3
.LONG MEH_CLCOIN4
CLAUD_HELP
.WORD 0 ;CENTER JUSTIFY
.WORD COLOR_BLUE ;COLOR
.WORD 2 ;2 ENTRIES
.LONG MEH_CLAUD1
.LONG MEH_CLAUD2
HSRES_HELP
.WORD 0 ;CENTER JUSTIFY
.WORD COLOR_BLUE ;COLOR
.WORD 3 ;2 ENTRIES
.LONG MEH_RESHS1
.LONG MEH_RESHS2
.LONG MEH_RESHS3
OPMESS_HELP
.WORD 0 ;CENTER JUSTIFY
.WORD COLOR_BLUE ;COLOR
.WORD 4 ;2 ENTRIES
.LONG MEH_CUSM1
.LONG MEH_CUSM2
.LONG MEH_CUSM3
.LONG MEH_CUSM4
DEF_ADJ_HELP
.WORD 0 ;CENTER JUSTIFY
.WORD COLOR_BLUE ;COLOR
.WORD 4 ;2 ENTRIES
.LONG MEH_DEFA1
.LONG MEH_DEFA2
.LONG MEH_DEFA3
.LONG MEH_DEFA4
FACSET_HELP
.WORD 0 ;CENTER JUSTIFY
.WORD COLOR_BLUE ;COLOR
.WORD 3 ;2 ENTRIES
.LONG MEH_FAC1
.LONG MEH_FAC2
.LONG MEH_FAC3
**************************************************************************
* *
* STRINGS FOR UTILITY HELP MENUS *
* *
**************************************************************************
MEH_CLCRED1
.STRING "REMOVE ANY",0
.EVEN
MEH_CLCRED2
.STRING "POSTED ",W_CREDITS,0
.EVEN
MEH_CLCRED3
.STRING "FROM THE ",W_GAME,0
.EVEN
MEH_CLCOIN1
.STRING W_CLEAR," OUT PAID",0
.EVEN
MEH_CLCOIN2
.STRING W_CREDITS," ",W_TOTAL,0
.EVEN
MEH_CLCOIN3
.STRING "AND THE ",W_COIN,0
.EVEN
MEH_CLCOIN4
.STRING W_SLOT," COUNTERS",0
.EVEN
MEH_CLAUD1
.STRING W_CLEAR," ",W_GAME,W_PLAY,0
.EVEN
MEH_CLAUD2
.STRING "STATISTICS",0
.EVEN
MEH_RESHS1
.STRING "RESET ",W_HIGH," ",W_SCORE,0
.EVEN
MEH_RESHS2
.STRING "TABLE TO FACTORY",0
.EVEN
MEH_RESHS3
.STRING "DEFAULT VALUES",0
.EVEN
MEH_CUSM1
.STRING "ENTER YOUR OWN",0
.EVEN
MEH_CUSM2
.STRING W_MESSAGE," TO",0
.EVEN
MEH_CUSM3
.STRING "APPEAR IN THE",0
.EVEN
MEH_CUSM4
.STRING "ATTRACT MODE",0
.EVEN
MEH_DEFA1
.STRING "SET ALL ",W_GAME,0
.EVEN
MEH_DEFA2
.STRING W_ADJUSTMENTS," TO",0
.EVEN
MEH_DEFA3
.STRING "THEIR FACTORY",0
.EVEN
MEH_DEFA4
.STRING "DEFAULT VALUE",0
.EVEN
MEH_FAC1
.STRING "RESET ALL ",W_AUDITS,",",0
.EVEN
MEH_FAC2
.STRING "COUNTERS, ",W_ADJUSTMENTS,0
.EVEN
MEH_FAC3
.STRING "AND THE ",W_HIGH," ",W_SCORE,"S.",0
.EVEN
**************************************************************************
* *
* PRESS ANY BUTTON TO CONTINUE *
* *
**************************************************************************
ANY_MENU
.LONG RD7FONT ;FONT
.LONG STRCNRM ;CENTER PLEASE
.LONG 0 ;TITLE
.WORD 0 ;COLOR OF TITLE
.WORD 200 ;UL X
.WORD 215 ;UL Y
.WORD MENU_DY ;VERTICAL SPACING
.WORD COLOR_BLUE ;COLOR WHEN NOT SELECTED
.WORD BAR_HITE ;HEIGHT OF SELECTION BAR
.WORD BAR_DY ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE)
.WORD BAR_DX ;EXTRA X ON EACH SIDE.
.WORD 234 ;WIDTH OF BAR!
.WORD COLOR_DECAY ;TEXT COLOR OF SELECTED ITEM
.LONG MESS_ANY,0,NO_HELP
.LONG 0
.IF GERMAN
MESS_ANY
.STRING "WEITER MIT BELIEBIGEM KNOPF",0
.EVEN
MESS_FFSCONF
MESS_FAC
MESS_MAC RD7FONT,SPACING07,200,96,COLOR_PWHITE,STRCNRM,0
MESS_DEFCONF
.STRING "VORGEW",C_GERA,"HLTE EINSTELLUNG.",0
.EVEN
.WORD 1
MESS_MAC RD7FONT,SPACING07,200,112,COLOR_PYELLOW,STRCNRM,0
.EVEN
MESS_CCNCONF
.STRING "M",C_GERU,"NZZ",C_GERA,"HLER-L",C_GERO,"SCHUNG.",0
.EVEN
.WORD 1
MESS_MAC RD7FONT,SPACING07,200,128,COLOR_PBLUE,STRCNRM,0
MESS_CAUDCONF
.STRING "AUSLESEDATEN L",C_GERO,"SCHEN.",0
.EVEN
.WORD 1
MESS_MAC RD7FONT,SPACING07,200,144,COLOR_PRED,STRCNRM,0
MESS_HSRCONF
.STRING "HIGHSCORE L",C_GERO,"SCHEN.",0
.EVEN
.WORD 0
.ELSE
MESS_ANY
.STRING "ENTER ",W_BUTTON," TO ",W_CONTINUE,0
.EVEN
MESS_FFSCONF
MESS_FAC
MESS_MAC RD7FONT,SPACING07,200,96,COLOR_PWHITE,STRCNRM,0
MESS_DEFCONF
.STRING "DEFAULT ",W_ADJUSTMENTS," RESTORED.",0
.EVEN
.WORD 1
MESS_MAC RD7FONT,SPACING07,200,112,COLOR_PYELLOW,STRCNRM,0
.EVEN
MESS_CCNCONF
.STRING W_COINCOUNTS," ",W_CLEAR,"ED.",0
.EVEN
.WORD 1
MESS_MAC RD7FONT,SPACING07,200,128,COLOR_PBLUE,STRCNRM,0
MESS_CAUDCONF
.STRING W_GAME," ",W_AUDITS," ",W_CLEAR,"ED.",0
.EVEN
.WORD 1
MESS_MAC RD7FONT,SPACING07,200,144,COLOR_PRED,STRCNRM,0
MESS_HSRCONF
.STRING W_HIGH," ",W_SCORE," TABLE RESET.",0
.EVEN
.WORD 0
.ENDIF
*
* MONITOR PATTERNS
*
.IF PRINTER
.ELSE
MEN_PATTERNS
.LONG RD7FONT ;FONT
.LONG STRCNRM ;CENTER PLEASE
.LONG MESS_PATTERNS ;TITLE
.WORD COLOR_RED ;COLOR OF TITLE
.WORD 200 ;UL X (CENTER IT!)
.WORD MENU_Y-3 ;UL Y
.WORD 20 ;VERTICAL SPACING
.WORD COLOR_YELLOW ;COLOR WHEN NOT SELECTED
.WORD 20 ;HEIGHT OF SELECTION BAR
.WORD -6 ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE)
.WORD BAR_DX ;EXTRA X ON EACH SIDE.
.WORD 234 ;WIDTH OF BAR!
.WORD COLOR_DECAY ;TEXT COLOR OF SELECTED ITEM
.LONG MESS_RED,GO_RED,BLNK_HELP
.LONG MESS_GREEN,GO_GREEN,BLNK_HELP
.LONG MESS_BLUE,GO_BLUE,BLNK_HELP
.LONG MESS_BARS,GO_BARS,BLNK_HELP
.LONG MESS_CROSS,GO_CONV,BLNK_HELP
.LONG MESS_DIAGM,0,BLNK_HELP
.LONG MESS_MM,FORCE_MAIN,NO_HELP ;RETURN TO MAIN MENU
.LONG 0
.IF GERMAN
MESS_RED
.STRING "ROT",0
.EVEN
MESS_GREEN
.STRING "GR",C_GERU,"N",0
.EVEN
MESS_BLUE
.STRING "BLAU",0
.EVEN
MESS_BARS
.STRING "FARBBALKEN",0
.EVEN
MESS_CROSS
.STRING "GITTERMUSTER",0
.EVEN
MESS_DIAGM
.STRING "ZUR",C_GERU,"CK ZUM DIAGNOSE-MEN",C_GERU,0
.EVEN
.ELSE
MESS_RED
.STRING "RED ",W_SCREEN,0
.EVEN
MESS_GREEN
.STRING "GREEN ",W_SCREEN,0
.EVEN
MESS_BLUE
.STRING "BLUE ",W_SCREEN,0
.EVEN
MESS_BARS
.STRING "COLOR BARS",0
.EVEN
MESS_CROSS
.STRING "CROSSHATCH PATTERN",0
.EVEN
MESS_DIAGM
.STRING "BACK TO DIAGNOSTICS MENU",0
.EVEN
.ENDIF
.ENDIF
NULL_ST
.BYTE 0
.EVEN
.IF PRINTER
**************************************************************************
* *
* AUDIT PRINTING TABLES *
* *
**************************************************************************
PAMAC .MACRO TEXT,ADJUST,FORMAT
.LONG :TEXT:
.WORD :ADJUST:
.WORD :FORMAT:
.ENDM
;
; FORMAT
;
; 0 = STRAIGHT NUMBER
; 1 = TIME
; 2 = TOTAL NUMBER OF PLAYS ( GROSS, HUH? )
;
PRINTAUDTABLE:
PAMAC M_PLAYS,0,2 ;PLAYS ON TOP
PAMAC M_TTIME,AUDPTIME,1
PAMAC M_UPTIME,AUDUPTIME,1
PAMAC M_AVGTL,AUDAVGTL,4
PAMAC M_AVGTC,AUDAVGTC,3
PAMAC M_1TIME,AUD1TIME,1
PAMAC M_2TIME,AUD2TIME,1
PAMAC M_MAXWAVE,AUDMAXWAVE,0
PAMAC M_CONTOFF,AUDCONTOFFER,0
PAMAC M_CONTTAK,AUDCONTTAKEN,0
PAMAC M_PCTCONT,AUDCONTTAKEN,7
PAMAC M_SLAMS,AUDSLAMS,0
PAMAC M_GAMEC,AUDFINISH,0
PAMAC M_COSTPG,AUDAVGGC,6
PAMAC M_WAVER,AUDWAVECNT,5
PAMAC M_BURNIN,AUDAUTO,0
.LONG 0
PRINTCOINTABLE:
PAMAC M_LCOIN,AUDLCOIN,0
PAMAC M_RCOIN,AUDRCOIN,0
PAMAC M_CCOIN,AUDCCOIN,0
PAMAC M_4COIN,AUD4COIN,0
PAMAC M_SCOIN,AUDSCOIN,0
PAMAC M_PAIDC,AUDPAIDC,0
.LONG 0
.ENDIF