************************************************************** * * Software: LARRY DEMAR and DR. J * Initiated: ? * * Modified: Shawn Liptak, 11/1/91 -Total carnage * Shawn Liptak, 1/20/92 -Coinage from T2, Dipswitch * Shawn Liptak, 1/24/92 -Coinage corrections * Shawn Liptak, 3/4/92 -Basketball mods * Shawn Liptak, 10/2/92 -TUNIT sound mods * Jason Skiles, 11/24/93 -DCS sound mods * Jason Skiles, 12/3/93 -Strip audits for WWF * * COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. * *.Last mod - 12/7/93 11:25 ************************************************************** .file "menu.asm" .title "test menus" .width 132 .option b,d,l,t .mnolist .include "mproc.equ" .include "display.equ" .include "sys.equ" .include "gsp.equ" .include "game.equ" .include "link.equ" .include "menu.equ" .include "macros.h" .include "sound.h" .include "fontsimg.glo" .text ; IN THIS MODULE .DEF MEN_MAIN,GET_CSPT .DEF MESS_FAC .DEF ANY_BUT,MEN_YN .DEF STR_OBJ .DEF STR_FREE .DEF CKPROMPT .DEF GO_DIAG ;ROUTINE FOR DIAGNOSTIC MENU .DEF RTR_LEV,ROM_LEV .DEF MESS_MM .DEF CS_ENTS ;NUMBER OF HIGHEST IN COIN TABLE .DEF TWO_TS,TWO_TP .DEF FAC_STUF .DEF BUILD_ST .DEF SCODE ;SYNTH CODE CURRENTLY BEING MADE .DEF DCODE ;DIG CODE CURRENTLY BEING MADE .DEF HID_P .DEF SNDTST .DEF USA_1, USA_2, USA_3, USA_4, USA_ELECTITLE .DEF GERMAN_1, GERMAN_2, GERMAN_3, GERMAN_4, GERMAN_ELECTITLE .DEF FRENCH_1, FRENCH_2, FRENCH_3, FRENCH_4, FRENCH_ELECTITLE .DEF DIPCOINTAB .def RES_ALL ****************************************************************************** * EXTERNAL REFERENCES .ref _coin_addr .ref _switch_addr .ref _switch2_addr .ref _sound_addr .ref _soundirq_addr .ref _coin_counter_addr .ref _set_time .ref dec_to_asc .ref copy_rom_string .ref concat_string,concat_rom_string .ref message_buffer .ref MENU_TOP .ref COL_INST .ref GETSTICK .ref ST_STICK .ref CLR_MAIN .ref ADJ_INST .ref CADJ_BOX .ref CLR_CUR .ref _switch_map_mode .ref _clk_rd .ref _get_time .ref _aquire_time .REF RNDRNG0 .REF CREATE_TEXT_LINE .globl _rtc_seconds, _rtc_day, _rtc_date, _rtc_month .globl _rtc_minutes, _rtc_hours, _rtc_year .globl _tseconds,_tminutes,_thours,_tday,_tdate,_tmonth,_tyear .globl _serial_number,_month,_day,_year,_man_date .globl _GetTime,_auto_update_save .bss _setup_mess,10*16 ;Used for built messages .bss _setup_mess_msg,8*40 ;Used for built message strings .bss _rtc_seconds,16 ;These are used when SETTING the RTC .bss _rtc_minutes,16 .bss _rtc_hours,16 .bss _rtc_day,16 .bss _rtc_date,16 .bss _rtc_month,16 .bss _rtc_year,16 .bss _last_seconds,16 ;This is used when displaying the time .bss _tseconds,16 ;This is where the current time is .bss _tminutes,16 ;stored when the time data is read .bss _thours,16 ;from the PIC. .bss _tday,16 .bss _tdate,16 .bss _tmonth,16 .bss _tyear,16 .bss _mytemp,32 .bss _serial_number,32 ;Game Serial Number (Hexidecimal) .bss _man_date,32 ;Date of manufacture (composite) .bss _month,32 ;Date of manufacture (month) .bss _day,32 ;Date of manufacture (date) .bss _year,32 ;Date of manufacture (year) .bss _auto_update_save,32 ;Save area for clock auto update .ref display_init .ref opmsg_main .ref SWITCHTEST .ref CLR_AUD .ref fswitches_cur,fswitches_down,fudge_switches2 .ref AREUSURE .ref RD15FONT .ref L_MESS .ref SCRCLR .ref SUR_MESS .ref DIAG_EX .ref GET_ADJ .ref NO_CREDS .ref COL_BARS .ref DIGSRT .ref STRCNRM .ref GET_AUD .ref STRCAT .ref QSNDRST .ref FAC_SET .ref GEN_MENU .ref STRNGRAM .ref GET_HSC .ref STD_BORD .ref CLR_AUDR .ref STRNEW1 .ref CMOS_VAL .ref FORM_ADC .ref LM_FINIS .ref INIT_HSR .ref TOP_BOX .ref LM_SETUP .ref B_MENU .ref GO_ADJ .ref BLNKAREA .ref MAIN_RET .ref STRLNRM .ref RD7FONT .ref WC_WORD .ref HEXTOASC .ref DIAGCPUTEST .ref CROSS_H .ref WDOGDIS .ref SURE_BOX .ref ROM_NAME .ref STRRNRM .ref FILLAREA .ref CLR_SCRN .ref CAT_A0 .ref CK_MAX .ref BURN_IN .ref WAIT_BUT .ref BAD_AUD ;from AUDIT.ASM .ref AUD1 ;from DIAG.ASM .ref RECTANGLE ;from HSTD.ASM .ref INIT_TB,STREAK_TAB,PIN_SPEED_TAB,INIT_HSTRING .REF BEATEN_TAB .ref INTER_TAB .REF TAG_TAB ;from MPROC.ASM .ref KIL1C ;from NSOUND.ASM .ref SNDSND,nosounds,set_volume ;from UTIL.ASM .ref get_but_val_down,get_stick_val_cur,dpageflip_off ****************************************************************************** .BSS FAC_FLAG,16 ;FLAG SAYS CLEAR AUDITS AND HSTABLE ;IF FACTORY SETTINGS SUCCEED. .BSS SCODE,16 ;SYNTH CODE LAST MADE! .BSS DCODE,16 ;DIG CODE LAST MADE! .BSS TMPOBJ,32 ;TEMPORARY OBJECT FROM STR_OBJ BSSX octopus2,16 ************************************************************************** * * * COIN TABLE * * * ************************************************************************** * * The coin table is made up of the normal entries from * the pinball system, as well as some new ones that * determine start and buy-in cost, and others that * aid in the determination of a "total collection". * * Left Slot Multiplier word * Center Slot Multiplier word * Right Slot Multiplier word * fourth slot Muliplier word * bill validator Muliplier word * Units for Credit word * Units for Bonus word * Minimum Units word * Credits to start word * Credits to Continue word * Divisor in money calculation word 0 means "OFF" * * -------------------------------------------------------------- * The above value get copied as adjustments (and are adjustable). * In addition, the coin table contains help on how to arrive at * the "Total Collection" for the coin audits. * -------------------------------------------------------------- * * Count for each Left coin word * Count for each Center coin word * Count for each Right coin word * Count for fourth coin word * Count for DBV word * Pointer to Leading text string long * Pointer to Following text string long * ************************************************************************** * * GET_CSPT * * THIS IS CALLED TO RETURN IN A6 THE CURRENT * CSELCT LINE AS STORED IN THE ADJUSTMENT TABLE. * ************************************************************************** GET_CSPT PUSH a0 movk ADJPRICE,a0 CALLA GET_ADJ ;GET THE COIN SELECT NUMBER BEING USED. CALLR CS_POINT PULL a0 RETS ************************************************************************** * CS_POINT - Point at selected entry in the coinage select table * A0=Offset # * Rets: A6=*Coinage table ************************************************************************** CS_POINT MMTM SP,A0,A1 MOVE A0,A0 ;ZERO? JRZ CS1 ;YEP...RETURN FIRST LINE CMPI CS_ENTS,A0 ;IN RANGE? JRLS CS2 ;YEP...CONTINUE MOVK 1,A0 ;TOO LARGE.......USE 1ST LINE. CS2 DEC A0 ;INDEX INTO TABLE CS1 MOVI CS_SIZE,A1 ;SIZE PER ENTRY MPYU A0,A1 ;OFFSET INTO TABLE ADDI CSELCT,A1 MOVE A1,A6 ;RETURN THE POINTER MMFM SP,A0,A1 RETS ************************************************************************** * * CKPROMPT * * IS THERE A PROMPT STRING FOR THE CREDITS PAGE. * * A0 RETURNS: * * YES.....RETURN POINTER TO SOMETHING * NO......RETURN ZERO * * IF A0 HAS A POINTER THEN.... * * IF A1 = 0 THEN A0 IS AN L_MESS STRING THAT SHOULD * JUST BE SENT OUT. * * IF A1 != 0 THEN A0 IS A POINTER LIST OF UP TO 2 MESSAGES. * THAT GIVE PRICING INFO * * A1 = 0 PLOT THE A0 STRING OUTRIGHT USING L_MESS * (IT CONTAINS ALL DATA) * * A1 = 1 PLOT ONLY THE STRING LIST (1 OR 2 POINTERS * CENTERED APPROPRIATELY * * A1 = 2 PLOT THE 1ST LINE OF THE STRING LIST ALONG * WITH THE 2 CREDITS TO START...1 TO CONTINUE * * A1 = 3 PLOT THE 2ND LINE OF THE STRING LIST ALONG * WITH THE 2 CREDITS TO START...1 TO CONTINUE * * A1 = 4 PLOT THE 3RD LINE OF THE STRING LIST ALONG * WITH THE 2 CREDITS TO START...1 TO CONTINUE * * A1 = 5 PLOT THE 1ST LINE OF THE STRING LIST ALONG * ALONG WITH 2 COINS PER PLAYER * * A1 = 6 PLOT THE 2ND LINE OF THE STRING LIST ALONG * ALONG WITH 2 COINS PER PLAYER * * A1 = 7 PLOT THE 3RD LINE OF THE STRING LIST ALONG * ALONG WITH 2 COINS PER PLAYER * * A1 = 8 CUSTOM MESSAGE * ************************************************************************** CKPROMPT PUSH a6 movk ADJFREPL,a0 CALLA GET_ADJ jrnz RET_NO ;Free play? CALLA CK_MAX ;ARE WE AT MAX CREDITS? JRHS RET_MAX movk ADJNOCPAG,a0 CALLA GET_ADJ ;CHECK THE ADJUSTMENT JRNZ CKSPCASE ;WE'RE SET TO SHUT UP.JUST START/CONT movk ADJ1ST6,a0 ;has operator messed around? CALLA GET_ADJ JRZ CKSPCASE ;YEP...GO FOR GENERIC "2 TO START" * OPERATOR IS USING CANNED COINAGE....WE NEED TO USE THE * CHECK IF ITS 2/1 OR 2/2 CALLR CK_2_CRED ;IS IT A 2 CREDIT MODE? JRZ NOT_2_MODE ;NOPE...PRINT STOCK STUFF MOVE A0,A1 ;COPY 2/1 2/2 CODE CALLR GET_CSPT ;POINT A6 AT CSEL FOR US NOW. MOVE *A6(CS_PICK),A0 ;GET INDICATION OF WHICH LINE JRZ CKSPCASE ;IT SAYS JUST ENUMERATE THE MODE! * NOW....IF ITS 2/1, A0 HAS THE CORRECT RETURN CODE * IF ITS 2/2 WE NEED TO ADD 2 subk 1,a1 JRZ RET_A0_VAL ;2/1? addk 3,a0 JRUC RET_A0_VAL ;RETURN THIS! NOT_2_MODE CALLR GET_CSPT ;POINT A6 AT CSEL FOR US NOW. MOVE *A6(CS_PROMPT),A0,L ;FETCH POINTER TO MESSAGE (IF ANY) JRZ CKSPCASE ;WE HAVE SOMETHING STORED AT THE PROMPT CMPI CSM_LAST,A0 ;IS IT LITTLE? JRHI CKEXIT ;NOPE..ITS A POINTER..RETURN L_MESS STATUE RET_A0_VAL MOVE A0,A1 ;ITS LITTLE...RETURN IT AS A CODE MOVE *A6(CS_LIST),A0,L ;PASS BACK MESSAGE LIST FOR THIS MODE JRUC CK_BYE RET_NO CLR A0 ;IT IS FREE PLAY. CKEXIT CLR A1 ;NO FANCIES YET CK_BYE PULL a6 move a0,a0 ;Pass Z rets * CONTROL COMES HERE IF IT LOOKS LIKE NO MESSAGE IS * APPROPRIATE....CHECK FOR 2 TO START 1 TO CONTINUE GENERIC NEEDED. CKSPCASE CALLR CK_2_CRED ;CHECK IF THERE ARE 2 CREDIT MODES. JRZ RET_NO ;NOT A 2 CREDIT MODE. subk 1,a0 JRZ TWO_ONE ;YEP...RETURN 2/1 MOVI TWO_CRED_PER_PLAYER,A0 JRUC CKEXIT ;RETURN IT! TWO_ONE MOVI TWO_TO_START_2C,A0 JRUC CKEXIT RET_MAX MOVI MAX_C_M,A0 JRUC CKEXIT ************************************************************************** * CK_2_CRED - Checks if in a 2-credit to start mode * * A0=0 NOT 2/1 OR 2/2 CREDIT MODE * A0=1 2 TO START 1 TO CONTINUE * A0=2 2 TO START 2 TO CONTINUE * * Z NOT 2/1 OR 2/2 CREDIT MODE * NZ IS 2/1 OR 2/2 CREDIT MODE ************************************************************************** CK_2_CRED MOVI ADJCSTRT,A0 CALLA GET_ADJ ;HOW MANY TO START subk 2,a0 jrnz c2c20 ;!2 to start? MOVI ADJCCONT,A0 CALLA GET_ADJ ;GET CONTINUE NUMBER cmpi 2,a0 ;1 or 2 is what we return jrhi c2c20 ;>2? move a0,a0 ;Return NZ (unless its 2/0) rets c2c20 clr a0 ;Pass Z rets ************************************************************************** * * * MENU HANDLING SOFTWARE * * * ************************************************************************** ************************************************************************** * * * 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 RETP ;NOW "RETURN TO THE MENU" ************************************************************************** * * * DIAGNOSTIC TESTS SELECTED......SHOW DIAGNOSTIC TEST MENU * * * ************************************************************************** GO_DIAG MOVI MEN_DIAG,A8 ;PUT UP THE MENU AND GO! JAUC GEN_MENU ;THIS WILL RETURN TO LEVEL ABOVE US! ************************************************************************** * * * COIN BOOKKEEPING SELECTED * * * ************************************************************************** gb20 JSRP DO_CLCOIN GO_BOOK CALLA CLR_SCRN MOVI MES_BOOK,A2 MOVI ROBO_WHITE,A3 JSRP TOP_BOX ;PRINT TITLE BOX. MOVI COIN_AUDS,A0 ;PUT TABLE UP. JSRP PRNT_AUD MOVI COIN1_AUDS,A0 ;PUT TABLE UP. JSRP PRNT_AUD MOVI AUDLCOIN,A8 ;NOW PRINT MONEY FOR 1ST 3 JSRP PRINT_COL MOVI COIN2_AUDS,A0 ;PUT TABLE UP. JSRP PRNT_AUD ; MOVI COIN_A2,A0 ;PUT PART 2 OF THE TABLE THERE. ; JSRP PRNT_AUD MOVI MEN_DETAIL,A8 MOVK 2,A9 ;CURSOR ON 2nd ENTRY JSRP B_MENU ;SEE IF THEY WANT PAGE 2. CMPI 1,A8 ;DID WE GET 1'ST ENTRY? jreq gb20 RETP ;DETAIL_SCREEN ; CALLA CLR_SCRN ;CLEAR OUT FOR ACTION! ; ; MOVI DT_Y1,A0 ;HEIGHT OF TOP TITLE ; MOVI ROBO_YELLOW,A9 ;COLOR ; CALLA F_TITLE ;FRAME IT ; ; MOVI DT_Y2,A0 ;HEIGHT OF 2ND TITLE ; CALLA F_TITLE ;FRAME IT ; ; MOVI DETAIL_TITLES,A8 ;NO ROOM FOR PRETTY TOP BOX...DO TITLES ; JSRP L_MESS ;ESTABLISH THE TITLES. ; ; MOVI COIN_D1,A0 ;DETAILED AUDIT 1 ; JSRP PRNT_AUD ;PRINT IT ; ; MOVI AUDLCOIN,A8 ;NOW PRINT MONEY FOR 1ST 3 ; JSRP PRINT_COL ; ; MOVI AUDLCSUB,A8 ;SUB-TOTAL OF TOTAL MONEY ; JSRP PRINT_SUBTOTAL ;PRINT IT. ; ; MOVI COIN_D2,A0 ;DETAILED AUDIT 2 ; JSRP PRNT_AUD ; ; MOVI AUDLCDC,A8 ;NOW PRINT MONEY FOR DOOR CLOSED SET ; JSRP PRINT_COL ; ; MOVI AUDLCDCS,A8 ;NOW PRINT SUB-TOTAL FOR DOOR CLOSED ; JSRP PRINT_SUBTOTAL ;THATS IT! ; ; 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_SUBS,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 ;AND RETURN TO OUR CALLER. ; ;PRINT_SUBTOTAL ; CALLR ADD_AUDIT_DY ;PUSH THE Y 1 LEVEL ; MOVI T_SUB,A9 ;USE "SUB-TOTAL" MESSAGE ; JAUC PRINT_MONEY ;AND NOW PRINT THE REQUESTED SUM. ************************************************************************** * * * GAME AUDITS SELECTED * * * ************************************************************************** ************************************************************************** * * * AUDITS TO BE SHOWN ON GAME AUDITS PAGE: * * * * EXTRA MEN * * GAMES COMPLETED * * 1 PLAYER MINUTES * * 2 PLAYER MINUTES * * TOTAL HOURS PLAYED * * AVG "PLAYER" GAME TIME * * AVG. ELAPSED TIME / PLAY * * * ************************************************************************** GO_AUD CALLA CLR_SCRN MOVI MES_AUD,A2 MOVI ROBO_CYAN,A3 JSRP TOP_BOX ;PRINT TITLE BOX. MOVI GAME_AUDS1,A0 ;PUT TABLE UP. JSRP PRNT_AUD SLEEPK 1 MOVI MEN_AP1,A8 ;AUDIT PAGE 1 MENU MOVK 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_AP2 ;NOPE...RETURN TO OUR CALLER #page2 CALLA CLR_SCRN MOVI MES_AUD,A2 MOVI ROBO_CYAN,A3 JSRP TOP_BOX ;PRINT TITLE BOX. MOVI GAME_AUDS2,A0 ;PUT TABLE UP. JSRP PRNT_AUD MOVI MEN_AP2,A8 MOVK 1,A9 ;CURSOR ON 1ST ENTRY JSRP B_MENU ;SEE IF THEY WANT PAGE 2. cmpi 2,A8 ;DID WE GET 2nd ENTRY (RETURN TO PAGE 1) jreq GO_AUD ;YEP...PUT IT UP! #page2a CALLA CLR_SCRN MOVI MES_AUD,A2 MOVI ROBO_CYAN,A3 JSRP TOP_BOX ;PRINT TITLE BOX. MOVI GAME_AUDS2a,A0 ;PUT TABLE UP. JSRP PRNT_AUD MOVI MEN_AP2,A8 MOVK 1,A9 ;CURSOR ON 1ST ENTRY JSRP B_MENU ;SEE IF THEY WANT PAGE 2. cmpi 2,A8 ;DID WE GET 2nd ENTRY (RETURN TO PAGE 1) jreq #page2 ;YEP...PUT IT UP! #page3 CALLA CLR_SCRN MOVI MES_AUD,A2 MOVI ROBO_CYAN,A3 JSRP TOP_BOX ;PRINT TITLE BOX. MOVI GAME_AUDS3a,A0 ;PUT TABLE UP. JSRP PRNT_AUD MOVI GAME_AUDS3b,A0 ;PUT TABLE UP. JSRP PRNT_AUD MOVI GAME_AUDS3c,A0 ;PUT TABLE UP. JSRP PRNT_AUD MOVI GAME_AUDS3d,A0 ;PUT TABLE UP. JSRP PRNT_AUD movi GAUD_P3HEAD1,a8 ;and the page header JSRP L_MESS movi GAUD_P3HEAD2,a8 ;and the page header JSRP L_MESS movi GAUD_P3HEAD3,a8 ;and the page header JSRP L_MESS movi GAUD_P3HEAD4,a8 ;and the page header JSRP L_MESS movi GAUD_P3HEAD5,a8 ;and the page header JSRP L_MESS movi GAUD_P3HEAD6,a8 ;and the page header JSRP L_MESS MOVI MEN_AP3,A8 MOVK 1,A9 ;CURSOR ON 1ST ENTRY JSRP B_MENU ;SEE IF THEY WANT PAGE 2. cmpi 2,A8 ;DID WE GET 2nd ENTRY (RETURN TO PAGE 2) ; jreq #page2 ;YEP...PUT IT UP! jreq #page2a ;YEP...PUT IT UP! NO_AP2 RETP GO_UTIL MOVI MEN_UTIL,A8 JAUC GEN_MENU ;PROCESS THE UTILITY MENU! * * INDIVIDUAL UTILITY PROGRAMS * 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! ************************************************************************** * * * VOLUME ADJUSTMENT SELECTED * * * ************************************************************************** .bss bar_height,16 GO_VOL calla display_blank calla dpageflip_off ;page flipping off calla CLR_SCRN movi M_VOLUME,a2 movi ROBO_GREEN,a3 JSRP TOP_BOX create FX_PID,background_sound ;noise ; movi pf_volume_1,a8 ;title/instructions ; JSRP L_MESS movi pf_volume_2,a8 JSRP L_MESS movi pf_volume_3,a8 JSRP L_MESS movi bxy,a0 ;frame movi bw|bh,a1 ; movi ROBO_GREEN,a2 movi ROBO_BLUE,a2 fcall RECTANGLE,b6 movi bxy+>00030003,a0 ;frame movi bw|bh->00060006,a1 movi ROBO_BLACK,a2 fcall RECTANGLE,b6 movi pf_volume_4,a8 ;MIN/MAX JSRP L_MESS movi pf_volume_5,a8 JSRP L_MESS clr a0 move a0,@bar_height movi ADJVOLUME,a0 calla GET_ADJ BADCHK a0,0,255,28 ;reg, lo, hi, val if bad calla set_volume callr vol_to_ht callr adjust_bar_height SLEEPK 2 calla display_unblank vol_loop_top SLEEPK 1 ;check for done clr a1 clr a0 calla get_but_val_down or a0,a1 movk 1,a0 calla get_but_val_down or a0,a1 move @_coin_addr,a0,L move *a0,a0 not a0 ; andi 0e7ffh,a0 andi 0e7efh,a0 or a0,a1 jrnz vol_loop_done ;check for a vol change clr a0 calla get_stick_val_cur move a0,a1 movk 1,a0 calla get_stick_val_cur or a0,a1 andi 0011b,a1 ;filter out left/right ;listen to the coin door switches too. OR them in. ; move @COINS,a0 ;the down switch move @_coin_addr,a0,L move *a0,a0 not a0 andi 0800h,a0 srl 10,a0 or a0,a1 ; move @COINS,a0 ;the up switch move @_coin_addr,a0,L move *a0,a0 not a0 andi 1000h,a0 srl 12,a0 or a0,a1 jrz vol_loop_top ;get the volume movi ADJVOLUME,a0 calla GET_ADJ ;make sure the volume is in range BADCHK a0,1,255,28 ;reg, lo, hi, val if bad ; cmpi 4,a0 ; jrge vol_notlow ; movi 4,a0 ; jruc vol_nothigh ;vol_notlow ; cmpi 255,a0 ; jrle vol_nothigh ; movi 255,a0 ;vol_nothigh btst JOYDN,a1 jrnz vol_dec ;increment volume cmpi 255,a0 jreq vol_loop_top inc a0 calla set_volume callr vol_to_ht callr adjust_bar_height jruc vol_loop_top vol_dec ;decrement volume cmpi 4,a0 jreq vol_loop_top dec a0 calla set_volume callr vol_to_ht callr adjust_bar_height jruc vol_loop_top vol_loop_done movi FX_PID,a0 ;kill the background noise calla KIL1C calla nosounds RETP #*************************************** * Adjusts the bar height * >a0=new height (1-170) SUBRP adjust_bar_height move a0,a1 move @bar_height,a0 #adjust_loop cmp a1,a0 jreq #done jrlt #grow_bar movi ROBO_BLACK,a2 callr vol_bar_line dec a0 jruc #adjust_loop #grow_bar inc a0 movi ROBO_RED,a2 callr vol_bar_line jruc #adjust_loop #done move a0,@bar_height rets **************************************** * Draws a line on the volume bar, but won't overwrite green pixels (text) * >a0=line index (not Ypos) >a2=color SUBRP vol_bar_line PUSH a0,a1,a2 ;convert the line index to a linear address sla 16,a0 neg a0 addi bxy+bh->00030000+59,a0 ;various fudges here cvxyl a0,a0 ;now write the color value to all non-green pixels movi bw-6,a14 vbl_pixel_loop movb *a0,a1 ; cmpi ROBO_GREEN&0Fh,a1 cmpi ROBO_BLUE&0Fh,a1 jreq vbl_skip_pixel movb a2,*a0 vbl_skip_pixel addk 8,a0 dsj a14,vbl_pixel_loop PULL a0,a1,a2 rets **************************************** * Converts a 0-255 volume value to a 1-170 bar height value * >a0=volume * 40 bgsnd3 movi sound_fx_table,a10 bgsnd6 move *a10+,a3,W jrz bgsnd3 calla SNDSND SLEEP >20 jruc bgsnd6 sound_fx_table .word 6528 .word >0B0 .word >080 .word >203 .word >0C5 .word >0B9 .word >0CB .word >206 .word >0B6 .word >0D1 .word >315 .word >202 .word 0 pf_volume_2 MESS_MAC RD7FONT,SPACING20,200,174+53,COLOR_YELLOW,STRCNRM,0 .string "ADJUST VOLUME WITH JOYSTICKS OR VOLUME BUTTONS",0,0 .even pf_volume_3 MESS_MAC RD7FONT,SPACING20,200,184+53,ROBO_LASER,STRCNRM,0 .string "ANY OTHER BUTTON TO QUIT",0,0 .even pf_volume_4 MESS_MAC RD7FONT,SPACING20,201,vb_y+>05,ROBO_BLUE,STRCNRM,0 .string "MAX",0,0 .even pf_volume_5 MESS_MAC RD7FONT,SPACING20,201,vb_y+>a0,ROBO_BLUE,STRCNRM,0 .string "MIN",0,0 .even vb_y .set >2f vb_height .set 171 bxy .set >002e0000+200->18 bh .set >b0*>10000 bw .set >30 bthickx .set 3 bthicky .set 3*>10000 volume_table .long bh+3,bxy ; height:width / y:x coordinates .long bh+3,bxy+bw ; height:width / y:x coordinates .long bthicky+bw,bxy ; height:width / y:x coordinates .long bthicky+bw+bthickx,bxy+bh ; height:width / y:x coordinates .long 0 ************************************************************************** * * * CLR_CREDITS * * * * ROUTINE TO CLEAR OUT THE CREDITS POSTED ON THE GAME. * * * ************************************************************************** CLR_CREDITS 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 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! DO_CLPLRECS movi MESS_CLPLRECS,A8 ;CLEAR PLAYER RECORDS movi clr_plr_records,a9 ;ROUTINE TO DO IT movi MESS_CLPLRECSCONF,a10 ;CONFIRMATION. jauc AREUSURE ;ASK EM......THEN RETURN! ; .global clear_player_records clr_plr_records ; calla clear_player_records MOVI AUD_BHART,A0 MOVI LASTGAUD,A1 CALLA CLR_AUDR RETP CLR_AUDITS 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 CALLR RES_ALL RETP ;PROGRAM TO DO THE JOB! ************************************************************************** * * RES_ALL * * RESET ALL TIME HIGH SCORE TABLE AND THE * HIGH SCORE RESET COUNTER. * ************************************************************************** RES_ALL MOVI STREAK_TAB,A8 CALLA INIT_TB movi PIN_SPEED_TAB,a8 calla INIT_TB movi BEATEN_TAB,a8 calla INIT_TB movi INTER_TAB,a8 calla INIT_TB MOVI TAG_TAB,A8 calla INIT_TB calla INIT_HSTRING jauc INIT_HSR ;RE-SET THE HIGH SCORE RESET COUNTER DO_FACSET MOVI MESS_FACSET,A8 MOVK 1,A0 JRUC DEF_ADJ_PART ************************************************************************** * * * DO_DEF_ADJ THIS IS CALLED FROM UTILITY MENU TO * * DO THE DEFAULT ADJUSTMENTS. * * * * DEF_ADJ_PART THIS IS CALLED OUT OF THE FULL * * FACTORY SETTING TO HANDLE THE * * ADJUSTMENT PART. * * * * A8 MUST HAVE THE MESSAGE FOR "ARE YOU SURE" * * A0 .NE. 0 FOR FULL FACTORY SETTINGS (ON * * SUCCESS OF ADJUSTMENT PART * * * ************************************************************************** DO_DEF_ADJ MOVI MESS_DEF_ADJ,A8 CLR A0 DEF_ADJ_PART MOVE A0,@FAC_FLAG,W ;INDICATE THIS IS ADJUSTMENTS ONLY MOVI DEFADJSOFT,A9 MOVI NULL_ST,A10 ;DON'T PRINT ANYTHING....ROUTINE WILL. JSRP AREUSURE RETP DEFADJSOFT * * NOW SMASH THE CHECKSUM * CALLA FORM_ADC ;FORM THE CKSUM MOVE A1,A0 ;PUT IN CMOS WRITING REGGIE MOVI ADJ_CKSUM,A7 INC A0 ;THIS SMASHES ADJUSTMENTS CALLA WC_WORD ;AND STORE IT .ref form_crc32 .ref WC_LONG calla form_crc32 move a1,a0 movi ADJ_CRC32,a7 calla WC_LONG * * 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. * clr a0 ;Full CALLA FAC_SET CALLA CMOS_VAL ;IS IT OK NOW? JRNZ AD_FAIL ;NOPE...PRINT FAILURE MOVI MESS_DEFCONF,A8 ;THIS IS SINGLE MESSAGE MOVE @FAC_FLAG,A0,W ;DO WE NEED TO CLEAR THE TABLES? JRZ DAX ;NOPE...POST 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 * * 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 RETS AD_FAIL MOVI MESS_FACFAIL,A8 JRUC DAX DEF_CAN MOVI MESS_CANCELLED,A8 DAX CALLA CLR_SCRN JSRP SUR_MESS RETP ************************************************************************** * * * EXIST_LET * * * * IS THE E_INITS PROCESS RUNNING? * * * ************************************************************************** EXIST_LET MOVI OPMES_PID,A0 ;SETUP FOR THE EXISTP MOVI 0FFFFH,A1 JAUC EXISTP ************************************************************************** * * * BUILD_ST * * * * THIS IS CALLED TO TAKE THE STRING POINTED TO * * BY -A10- AND REMOVE LEADING AND TRAILING BLANKS * * AND MOVE THE STRING TO "STRNGRAM". * * * * RETURN THE NUMBER OF TRAILING BLANKS IN A2. * * RETURN .EQ. IF ALL BLANK! * * * ************************************************************************** BUILD_ST MMTM SP,A0,A1,A3,A4,A5,A10 CLR A4 ;A4 = ZERO UNTIL 1ST NON-BLANK MOVI STRNGRAM-BYTE_SIZE,A5 ;LAST NON-SPACE CHAR MOVI STRNGRAM,A1 ;DESTINATION POINTER MOVI CMESS_CHARS,A2 ;CHAR COUNT BSLOOP MOVB *A10,A3 ;FETCH A BYTE ANDI BYTE_MASK,A3 ;KILL SIGN EXTEND. JRNZ BS1 ;NOT ZERO MOVI SPACE,A3 ;REPLACE ZERO WITH SPACE. BS1 CMPI SPACE,A3 ;IS IT A SPACE? JRZ BS2 ;IT IS... * * NON-SPACE CHARACTER * OR A3,A4 ;INDICATE 1ST NON-BLANK SEEN MOVE A1,A5 ;INDICATE THIS IS CURRENT TERMINATOR. JRUC BS3 BS2 MOVE A4,A4 ;HAS 1ST SPACE BEEN SEEN? JRZ BS4 ;NOT YET...DON'T STORE BS3 MOVB A3,*A1 ;STORE IT IN MEMORY ADDK BYTE_SIZE,A1 ;PUSH DESTINATION POINTER BS4 ADDK BYTE_SIZE,A10 ;PUSH SOURCE POINTER DSJS A2,BSLOOP ;AND FINISH PARSE * * A5 NOW POINTS AT LAST NON-BLANK CHARACTER * ADDK BYTE_SIZE,A5 ;THIS IS 1 BEYOND CLR A2 MOVB A2,*A5 ;TERMINATE WITH A ZERO. * * FOR OUR RETURN, WE NEED TO COMPUTE THE NUMBER OF * TRAILING SPACES IGNORED. * MOVE A4,A4 ;ALL BLANK? JRNZ NOT_BLNK MOVI CMESS_CHARS,A2 ;ALL CHARS ARE TRAILING BLANKS JRUC BL_EX ;RETURN THIS NOT_BLNK MOVE A1,A2 ;THIS IS LAST CHAR WE WROTE SUB A5,A2 ;THIS IS NUMBER OF TRAILING SPACES (TIMES 8) SRL 3,A2 ;DIVIDE BY 8 TO GET SPACES BL_EX MOVE A4,A4 ;FLAG ZERO FOR ALL BLANK! MMFM SP,A0,A1,A3,A4,A5,A10 RETS * A1 = * A3 = DAG OF AREA [YPOS,XPOS] * A4 = [Y,X] SIZE OF AREA GO_RED MOVI ROBO_RED,A1 JAUC SC_COL GO_GREEN MOVI ROBO_GREEN,A1 JAUC SC_COL GO_BLUE MOVI ROBO_BLUE,A1 SC_COL SLL 16,A1 ;[color,palette] clr a3 ;[y,x] start movi [256,399],a4 ;[Y,X] SIZE OF AREA CALLA FILLAREA ;THIS DOES THE SCREEN movk 3,a1 ; Any button map mode move a1,@_switch_map_mode,L ; JAUC WAIT_BUT ;NOW WAIT FOR ANY BUTTON! JSRP WAIT_BUT movk 1,a1 move a1,@_switch_map_mode,L ; Back to menu map mode RETP GO_CPUTEST JAUC DIAGCPUTEST GO_CROSS CALLA SCRCLR CALLA CROSS_H movk 3,a1 ; Any button map mode move a1,@_switch_map_mode,L ; JAUC WAIT_BUT ;NOW WAIT FOR ANY BUTTON! JSRP WAIT_BUT movk 1,a1 move a1,@_switch_map_mode,L ; Back to menu map mode RETP ; JSRP WAIT_BUT ; CALLA SCRCLR ; CALLA display_init ; RETP GO_SWTEST CALLA SCRCLR movi M_SWTEST,a2 movi ROBO_GREEN,a3 JSRP TOP_BOX clr a0 JSRP SWITCHTEST ; CALLA SCRCLR ; CALLA display_init RETP dipsw_test CALLA SCRCLR movi M_DIPTEST,a2 movi ROBO_GREEN,a3 JSRP TOP_BOX movk 1,a0 ;DIP mode JSRP SWITCHTEST RETP ;GO_ROMTEST ; JAUC ROM_CHK GO_BARS ; MOVI 8000H,A1 ; CLR A0 ; CALLA KILALL CALLA SCRCLR MMTM SP,A12,A13 CALLA COL_BARS MMFM SP,A12,A13 movk 3,a1 ; Any button map mode move a1,@_switch_map_mode,L ; JAUC WAIT_BUT ;NOW WAIT FOR ANY BUTTON! JSRP WAIT_BUT movk 1,a1 move a1,@_switch_map_mode,L ; Back to menu map mode RETP ; JSRP WAIT_BUT ; CALLA SCRCLR ; CALLA display_init ; CALLA COLRSTRT ; RETP DO_BURN MOVI MESS_BURN,A8 ;CLEAR COIN SUB-TOTALS...ARE YOU SURE MOVI BURN_IN,A9 ;ENTRY POINT MOVI MESS_BURN,A10 ;THIS WILL NEVER BE SEEN! JAUC AREUSURE ;ASK EM. ANY_BUT MOVI ANY_MENU,A8 ;ANY BUTTON TO CONTINUE MOVK 1,A9 ;CURSOR ON ENTRY 1 JAUC B_MENU ;DO IT....RETURN WHEN PRESSED. ************************************************************************** * * * HARDWARE INFORMATION SELECTED * * * ************************************************************************** .data M_DIPTEST .string "DIPSWITCH TEST",0 .even M_SWTEST .string "GENERAL SWITCH TEST",0 .even M_VOLUME .string "VOLUME ADJUST",0 .even HARDWARE_HELP .word 0 .word COLOR_BLUE .word 2 .long HDWH_SN .long HDWH_MAN HDWH_SN .string "SERIAL NUMBER",0 .even HDWH_MAN .string "MANUFACTURE DATE",0 .even CLOCK_HELP .word 0 .word COLOR_BLUE .word 2 .long CLKH_MESS1 .long CLKH_MESS2 CLKH_MESS1 .string "DISPLAY OR SET",0 .even CLKH_MESS2 .string "THE REAL TIME CLOCK",0 .even CLK_DISPLAY_HELP .word 0 .word COLOR_BLUE .word 3 .long CDISP_H1 .long CDISP_H2 .long CDISP_H3 CDISP_H1 .string "DISPLAYS THE CURRENT",0 .even CDISP_H2 .string "DATE AND TIME FROM",0 .even CDISP_H3 .string "THE REAL TIME CLOCK",0 .even CLK_SET_HELP .word 0 .word COLOR_BLUE .word 3 .long CSET_H1 .long CSET_H2 .long CSET_H3 CSET_H1 .string "ALLOWS SETTING OF THE",0 .even CSET_H2 .string "DATE AND TIME FOR",0 .even CSET_H3 .string "THE REAL TIME CLOCK",0 .even CLK_CALIBRATE_HELP .word 0 .word COLOR_BLUE .word 3 .long CCAL_H1 .long CCAL_H2 .long CCAL_H3 CCAL_H1 .string "PREFORMS AUTOMATIC",0 .even CCAL_H2 .string "CALIBRATION OF THE",0 .even CCAL_H3 .string "REAL TIME CLOCK",0 .even MESS_HARDWARE .string "HARDWARE INFO",0 .even MESS_CLOCK .string "REAL TIME CLOCK",0 .even CAL_MESS_Y EQU 114 CLK_CALIBRATE_MESS MESS_MAC RD15FONT,SPACING07,200,CAL_MESS_Y+20,ROBO_YELLOW,STRCNRM,0 .string "Calibrating Real Time Clock" .byte 0,1 .even MESS_MAC RD15FONT,SPACING07,200,CAL_MESS_Y,ROBO_DECAY,STRCNRM,0 .string "Please Wait" .byte 0,0 .even CLK_CALIBRATE_OK_MESS MESS_MAC RD15FONT,SPACING07,200,CAL_MESS_Y+7,ROBO_WHITE,STRCNRM,0 .string "Calibration Successful" .byte 0,0 .even M_CLK_DISPLAY .string "DATE AND TIME DISPLAY",0,0 .even M_CLK_CALIBRATE .string "REAL TIME CLOCK CALIBRATION",0,0 .even M_CLK_SET .string "SETTING REAL TIME CLOCK",0,0 .even CDAY_PROMPT_Y EQU 50 CTIME_PROMPT_Y EQU 130 CDAY_Y EQU CDAY_PROMPT_Y+30 CDATE_Y EQU CDAY_Y+20 CTIME_Y EQU CTIME_PROMPT_Y+30 MESS_CLKD_PROMPTS MESS_MAC RD15FONT,SPACING07,200,CDAY_PROMPT_Y,ROBO_WHITE,STRCNRM,0 .string "Current Date" .byte 0,1 .even MESS_MAC RD15FONT,SPACING07,200,CTIME_PROMPT_Y,ROBO_WHITE,STRCNRM,0 .string "Current Time" .byte 0,1 .even MESS_QUIT MESS_MAC RD7FONT,SPACING07,200,230,ROBO_DECAY,STRCNRM,0 .string "PRESS ANY BUTTON TO QUIT" .byte 0,0 .even MESS_RTC_SET MESS_MAC RD7FONT,SPACING07,200,215,ROBO_LASER,STRCNRM,0 .string "THE REAL TIME CLOCK HAS BEEN SET" .byte 0,0 .even MESS_SUNDAY .string "Sunday",0 .even MESS_MONDAY .string "Monday",0 .even MESS_TUESDAY .string "Tuesday",0 .even MESS_WEDNESDAY .string "Wednesday",0 .even MESS_THURSDAY .string "Thursday",0 .even MESS_FRIDAY .string "Friday",0 .even MESS_SATURDAY .string "Saturday",0 .even DAY_TABLE .long MESS_SUNDAY,MESS_MONDAY,MESS_TUESDAY,MESS_WEDNESDAY .long MESS_THURSDAY,MESS_FRIDAY,MESS_SATURDAY .even MESS_JANUARY .string "January ",0 .even MESS_FEBRUARY .string "February ",0 .even MESS_MARCH .string "March ",0 .even MESS_APRIL .string "April ",0 .even MESS_MAY .string "May ",0 .even MESS_JUNE .string "June ",0 .even MESS_JULY .string "July ",0 .even MESS_AUGUST .string "August ",0 .even MESS_SEPTEMBER .string "September ",0 .even MESS_OCTOBER .string "October ",0 .even MESS_NOVEMBER .string "November ",0 .even MESS_DECEMBER .string "December ",0 .even MONTH_TABLE .long MESS_JANUARY, MESS_FEBRUARY, MESS_MARCH, MESS_APRIL .long MESS_MAY, MESS_JUNE, MESS_JULY, MESS_AUGUST, MESS_SEPTEMBER .long MESS_OCTOBER, MESS_NOVEMBER, MESS_DECEMBER .even MESS_HYEARS .string ", 19",0 .even TSEPERATOR .string ":",0 .even ZPAD .string "0",0 .even TIME_PM .string " PM",0 .even TIME_AM .string " AM",0 .even DAY_SETUP MESS_MAC RD15FONT,SPACING07,200,CDAY_Y,ROBO_GREEN,STRCNRM,0 .string "" .byte 0,0 .even DATE_SETUP MESS_MAC RD15FONT,SPACING07,200,CDATE_Y,ROBO_GREEN,STRCNRM,0 .string "" .byte 0,0 .even TIME_SETUP MESS_MAC RD15FONT,SPACING07,200,CTIME_Y,ROBO_GREEN,STRCNRM,0 .string "" .byte 0,0 .even DAYADJ_SETUP MESS_MAC RD15FONT,SPACING07,284,185,ROBO_GREEN,STRCNRM,0 .string "" .byte 0,0 .even DATEADJ_SETUP MESS_MAC RD15FONT,SPACING07,286,205,ROBO_GREEN,STRCNRM,0 .string "" .byte 0,0 .even TADJ_SETUP MESS_MAC RD15FONT,SPACING07,284,225,ROBO_GREEN,STRCNRM,0 .string "" .byte 0,0 .even ;SNDRELEASE_NUM_PROMPT: ; MESS_MAC RD15FONT,SPACING07,200,130,ROBO_PURPLE,STRCNRM,0 ; .string "Sound Software Version:\n" ; .string "RELEASE %2ld" ; .byte 0,0 ; .long _serial_number ; .even ;SNDPROTO_NUM_PROMPT: ; MESS_MAC RD15FONT,SPACING07,200,130,ROBO_PURPLE,STRCNRM,0 ; .string "Sound Software Version:\n" ; .string "PROTO %2ld" ; .byte 0,0 ; .long _serial_number ; .even WILLY_Y EQU 50 UNIT_Y EQU WILLY_Y+50 SERIAL_Y EQU UNIT_Y+40 MAN_Y EQU SERIAL_Y+40 M_DOM .string "DATE OF MANUFACTURE: ",0 .even M_SERIAL .string "SERIAL NUMBER: ",0 .even MAN_DATE_SETUP: MESS_MAC RD7FONT, SPACING07,200, MAN_Y, ROBO_PURPLE,STRCNRM,0 .string "" .byte 0,0 .even WILLY_PROMPT: MESS_MAC RD15FONT, SPACING07, 200, WILLY_Y, ROBO_GREEN, STRCNRM,0 .string "Midway Manufacturing Inc." .byte 0,1 .even MESS_MAC RD15FONT, SPACING20, 200, UNIT_Y, ROBO_YELLOW, STRCNRM, 0 .string "WWF UNIT" .byte 0,0 .even SERIAL_NUM_SETUP: MESS_MAC RD7FONT,SPACING07,200,SERIAL_Y,ROBO_PURPLE,STRCNRM,0 .string "" .byte 0,0 .even M_HARDWARE_INFO .string "HARDWARE INFORMATION",0 .even MESS_CLK_TITLE .string "REAL TIME CLOCK",0 .even MESS_DISPLAY .string "DISPLAY",0 .even MESS_SET .string "SET",0 .even MESS_CALIBRATE .string "CALIBRATE",0 .even MEN_CLOCK .long RD7FONT ;FONT .long STRCNRM ;CENTER PLEASE .long MESS_CLK_TITLE ;TITLE .word COLOR_GREEN ;COLOR OF TITLE .word 104 ;UL X .word MENU_Y-3 ;UL Y .word MENU_DY-4 ;VERTICAL SPACING .word ROBO_WHITE ;COLOR WHEN NOT SELECTED .word 16 ;HEIGHT OF SELECTION BAR .word -4 ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE) .word BAR_DX ;EXTRA X ON EACH SIDE. .word BAR_WID ;WIDTH OF BAR! (A LITTLE FATTER) .word ROBO_DECAY ;TEXT COLOR OF SELECTED ITEM (SHOULD BE DECAY) .long MESS_DISPLAY,GO_DISPLAY,CLK_DISPLAY_HELP .long MESS_SET,GO_TIME_SET,CLK_SET_HELP ; .long MESS_CALIBRATE,GO_CALIBRATE,CLK_CALIBRATE_HELP ; .long MESS_MM,RET_CLOCK,NO_HELP .long MESS_MM,RET_CLOCK,BLNK_HELP .long 0 * * CLOCK SET MENU IS SKINNY..LEAVING ROOM FOR EXPLANATION. * CS_BDY EQU -2 CS_WID EQU 0A7H CS_X EQU TIT_ULX+GAP+MB_XWID+(CS_WID/2)+C_KLUDGE CS_Y EQU INST_LRY+BOX_YGAP+MB_YWID+GAP-CS_BDY * * RIGHT MARGIN OF ADJUST MENU BOX * CS_RX EQU TIT_ULX+(2*GAP)+CS_WID+(2*MB_XWID) * * LEFT MARGIN OF HELP BOX * CS_HX EQU CS_RX+BOX_XGAP M_TIME_SET .string "SET REAL TIME CLOCK",0 .even MESS_YEAR_SET .string "YEAR",0 .even MESS_DATE_SET .string "DATE",0 .even MESS_MONTH_SET .string "MONTH",0 .even MESS_DAY_SET .string "DAY",0 .even MESS_HOUR_SET .string "HOURS",0 .even MESS_MINUTE_SET .string "MINUTES",0 .even MESS_SECOND_SET .string "SECONDS",0 .even MESS_SET_CLOCK .string "SET TIME/DATE",0 .even MESS_CLK_RET .string "RETURN TO PREV MENU",0 .even MEN_TIME_SET .LONG RD7FONT ;FONT .LONG STRCNRM ;CENTER PLEASE .LONG M_TIME_SET ;TITLE .WORD COLOR_WHITE ;COLOR OF TITLE .WORD CS_X ;UL X .WORD CS_Y ;UL Y .WORD 12 .WORD COLOR_WHITE ;COLOR WHEN NOT SELECTED .WORD 12 ;HEIGHT OF SELECTION BAR .WORD CS_BDY ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE) .WORD BAR_DX ;EXTRA X ON EACH SIDE. .WORD CS_WID ;WIDTH OF BAR! .WORD COLOR_DECAY ;TEXT COLOR OF SELECTED ITEM .LONG MESS_CLK_RET,0,BLNK_HELP ;RETURN TO MAIN MENU .LONG MESS_YEAR_SET,DO_YEAR,ADJ_HELP .LONG MESS_DATE_SET,DO_DATE,ADJ_HELP .LONG MESS_MONTH_SET,DO_MONTH,ADJ_HELP ;FREE PLAY .LONG MESS_DAY_SET,DO_DAY,ADJ_HELP .LONG MESS_HOUR_SET,DO_HOUR,ADJ_HELP .LONG MESS_MINUTE_SET,DO_MINUTE,ADJ_HELP .LONG MESS_SECOND_SET,DO_SECOND,ADJ_HELP .LONG MESS_SET_CLOCK,GO_CLOCK_SET,SET_CLOCK_HELP .LONG MESS_CLK_RET,0,BLNK_HELP ;RETURN TO MAIN MENU .LONG 0 ;END INSTR_Y EQU INST_ULY+5 INSTR_2Y EQU INSTR_Y+10 CS_ADV MESS_MAC RD7FONT,SPACING07,CS_X,INSTR_Y,COLOR_BPR,STRCNRM,0 .STRING "SELECT WITH ANY STICK" .BYTE 0,1 .EVEN MESS_MAC RD7FONT,SPACING07,CS_X,INSTR_2Y,COLOR_BPR,STRCNRM,0 .STRING "PRESS A BUTTON TO MODIFY" .BYTE 0,0 .EVEN SCH_1 .string "SETS THE REAL TIME CLOCK",0 .even SCH_2 .string "TO THE VALUES SPECIFIED BY",0 .even SCH_3 .string "THE OTHER MENU ITEMS.",0 .even SET_CLOCK_HELP .word 1 .word COLOR_BLUE .word 3 .long SCH_1 .long SCH_2 .long SCH_3 .even YSH_1 .string " SET THE REAL TIME CLOCK's",0 .even YSH_2 .string " YEAR VALUE.",0 .even YSH_3 .string " Takes effect when SET is",0 .even YSH_4 .string " selected on the RTC MENU",0 .even HELP_YEAR .word 1 .word COLOR_BLUE .word 4 .long YSH_1 .long YSH_2 .long YSH_3 .long YSH_4 .even DO_YEAR .long GEN_TS ; Routine to run .long MESS_YEAR_SET ; Header Message .long HELP_YEAR ; Help Messages .word 6 ; Index number of val to change .long 0 ; Minimum value .long 99 ; Maximum value .long 1 ; Move up and down by 1's .long 0 ; Dont sub zero for any .long YEAR_SET ; Message list for values .word WRAP_VAL ; Wrap around .long 0 ; Just Show Number .long MESS_YEAR_SET ; Header Message DTSH_2 .string " DATE VALUE.",0 .even HELP_DATE .word 1 .word COLOR_BLUE .word 4 .long YSH_1 .long DTSH_2 .long YSH_3 .long YSH_4 .even DO_DATE .long GEN_TS ; Routine to run .long MESS_DATE_SET ; Header Message .long HELP_DATE ; Help Messages .word 4 ; Index Number of val to change .long 1 ; Minimum value .long 31 ; Maximum value .long 1 ; Move up and down by 1's .long 0 ; Dont sub zero for any .long DATE_SET ; Message list for values .word WRAP_VAL ; Wrap around .long 0 ; Just Show Number .long MESS_DATE_SET ; Header Message MSH_2 .string " MONTH OF YEAR.",0 .even HELP_MONTH .word 1 .word COLOR_BLUE .word 4 .long YSH_1 .long MSH_2 .long YSH_3 .long YSH_4 .even DO_MONTH .long GEN_TS ; Routine to run .long MESS_MONTH_SET ; Header Message .long HELP_MONTH ; Help Messages .word 5 ; Index Number of val to change .long 1 ; Minimum value .long 12 ; Maximum value .long 1 ; Move up and down by 1's .long 0 ; Dont sub zero for any .long MONTH_SET ; Message list for values .word WRAP_VAL ; Wrap around .long MONTH_TABLE ; Just Show Number .long MESS_MONTH_SET ; Header Message DSH_2 .string " DAY OF WEEK.",0 .even HELP_DAY .word 1 .word COLOR_BLUE .word 4 .long YSH_1 .long DSH_2 .long YSH_3 .long YSH_4 .even DO_DAY .long GEN_TS ; Routine to run .long MESS_DAY_SET ; Header Message .long HELP_DAY ; Help Messages .word 3 ; Index Number of val to change .long 1 ; Minimum value .long 7 ; Maximum value .long 1 ; Move up and down by 1's .long 0 ; Dont sub zero for any .long DAY_SET ; Message list for values .word WRAP_VAL ; Wrap around .long DAY_TABLE ; Just Show Number .long MESS_DAY_SET ; Header Message HSH_2 .string " HOUR VALUE.",0 .even HELP_HOUR .word 1 .word COLOR_BLUE .word 4 .long YSH_1 .long HSH_2 .long YSH_3 .long YSH_4 .even DO_HOUR .long GEN_TS ; Routine to run .long MESS_HOUR_SET ; Header Message .long HELP_HOUR ; Help Messages .word 2 ; Index Number of val to change .long 1 ; Minimum value .long 24 ; Maximum value .long 1 ; Move up and down by 1's .long 0 ; Dont sub zero for any .long HOUR_SET ; Message list for values .word WRAP_VAL ; Wrap around .long 0 ; Just Show Number .long MESS_HOUR_SET ; Header Message MINSH_2 .string " MINUTE VALUE.",0 .even HELP_MINUTE .word 1 .word COLOR_BLUE .word 4 .long YSH_1 .long MINSH_2 .long YSH_3 .long YSH_4 .even DO_MINUTE .long GEN_TS ; Routine to run .long MESS_MINUTE_SET ; Header Message .long HELP_MINUTE ; Help Messages .word 1 ; Index Number of val to change .long 0 ; Minimum value .long 59 ; Maximum value .long 1 ; Move up and down by 1's .long 0 ; Dont sub zero for any .long MINUTE_SET ; Message list for values .word WRAP_VAL ; Wrap around .long 0 ; Just Show Number .long MESS_MINUTE_SET ; Header Message SSH_2 .string " SECOND VALUE.",0 .even HELP_SECOND .word 1 .word COLOR_BLUE .word 4 .long YSH_1 .long SSH_2 .long YSH_3 .long YSH_4 .even DO_SECOND .long GEN_TS ; Routine to run .long MESS_SECOND_SET ; Header Message .long HELP_SECOND ; Help Messages .word 0 ; Not used .long 0 ; Minimum value .long 59 ; Maximum value .long 1 ; Move up and down by 1's .long 0 ; Dont sub zero for any .long SECOND_SET ; Message list for values .word WRAP_VAL ; Wrap around .long 0 ; Just Show Number .long MESS_SECOND_SET ; Header Message .text GO_HARDWARE: move @_man_date,a2,L 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 calla CLR_SCRN ; Clear the screen movi M_HARDWARE_INFO,a2 ; Put up Title Box movi ROBO_GREEN,a3 JSRP TOP_BOX movi WILLY_PROMPT,a8 JSRP L_MESS movi M_DOM,a4 calla copy_rom_string ; Copy the Date of manufacture prompt move @_month,a0 dec a0 sll 5,a0 movi MONTH_TABLE,a8 add a0,a8 move *a8,a4,L calla concat_rom_string ; Copy the month name move @_day,a0 ; Convert date to ascii movi 31,a1 calla dec_to_asc calla concat_string ; Add date to string movi MESS_HYEARS,a4 ; Add , 19 to string calla concat_rom_string move @_year,a0 ; Convert year to ascii movi 99,a1 calla dec_to_asc calla concat_string ; Add year to string movi MAN_DATE_SETUP,a0 ; Setup message callr _setup_message movi _setup_mess,a8 JSRP L_MESS ; Print Date of Manufacture movi M_SERIAL,a4 calla copy_rom_string ; Copy serial number prompt move @_serial_number,a0,L ; Convert serial number to ascii movi 1000000,a1 calla dec_to_asc calla concat_string ; Add serial number to prompt movi SERIAL_NUM_SETUP,a0 ; Setup the message callr _setup_message movi _setup_mess,a8 JSRP L_MESS ; Print the Serial Number movi MESS_QUIT,a8 JSRP L_MESS _hardware_check_sw: ; Wait for a button to be pressed SLEEP 10 move @_switch2_addr,a0,L move *a0,a0,W move @_switch_addr,a1,L move *a1,a1,W sll 16,a0 srl 16,a0 sll 16,a1 srl 16,a1 and a0,a1 move @_coin_addr,a0,L move *a0,a0 ori 10h,a0 sll 16,a0 or a1,a0 not a0 jrz _hardware_check_sw RET_HARDWARE: JSRP FORCE_MAIN RETP GO_CLOCK: move @_clk_rd,a8,L ;Save current auto update state move a8,@_auto_update_save,L clr a8 ;Enable auto update move a8,@_clk_rd,L JSRP _GetTime movi MEN_CLOCK,a8 jauc GEN_MENU RET_CLOCK: move @_auto_update_save,a8,L ;Restore Auto Update state move a8,@_clk_rd,L JSRP FORCE_MAIN RETP GO_CALIBRATE: calla CLR_SCRN ; Clear the screen movi M_CLK_CALIBRATE,a2 ; Put up Title Box movi ROBO_GREEN,a3 JSRP TOP_BOX movi CLK_CALIBRATE_MESS,a8 ; Put up calibrating message JSRP L_MESS SLEEP 5*60 ; Do calibration here move @0c00000b0h,a0 ; Make sure transparency is OFF move a0,-*sp andni 020h,a0 move a0,@0c00000b0h movi [CAL_MESS_Y,0],a0 ; Get rid of calibrating message movi [40,400],a1 movi ROBO_BLACK,a2 fcall RECTANGLE,b6 move *sp+,a0 move a0,@0c00000b0h ; Restore CONTROL register movi CLK_CALIBRATE_OK_MESS,a8 ; Put up success message JSRP L_MESS SLEEP 60 ; Let user see it calla CLR_SCRN RETP ; All done ; a0 = pointer to MESS_MAC TO COPY message is copied from message_buffer _setup_message: movi _setup_mess,a1 movk 10,a2 _sm_lp1: move *a0+,*a1+ dsjs a2,_sm_lp1 movi _setup_mess_msg,a1 movi message_buffer,a0 pushst setf 8,0 _sm_lp2: move *a0+,a2 move a2,*a1+ move a2,a2 jrnz _sm_lp2 _sm_done popst clr a2 move a2,*a1 rets ******************************************************************* * _GetTime - Process subroutine to get the current time. Time is * returned in the _tXXXXXX globals. * SUBRP _GetTime move @_clk_rd,a0,L ;Save status of auto update move a0,@_auto_update_save,L movi -1,a0 ;Shut down auto update move a0,@_clk_rd,L calla _aquire_time ;Arm time aquistion SLEEPK 5 ;Wait for it to aquire time calla _get_time ;Get the current time move @_auto_update_save,a0,L move a0,@_clk_rd,L ;Restore auto update status RETP ;All done ; Process Subroutine to print time _display_time: clr a0 move a0,@message_buffer move @_thours,a0 ; Hours jrnz _hour_gz1 addk 12,a0 jruc _time_is_am _hour_gz1 cmpi 12,a0 jrle _time_is_am move @_thours,a0 ; Hours subi 12,a0 _time_is_am movi 12,a1 ; Max hours calla dec_to_asc calla concat_string movi TSEPERATOR,a4 calla concat_rom_string move @_tminutes,a0 cmpi 9,a0 jrgt _no_min_pad movi ZPAD,a4 calla concat_rom_string _no_min_pad move @_tminutes,a0 movi 59,a1 ; Max Minutes calla dec_to_asc calla concat_string movi TSEPERATOR,a4 calla concat_rom_string move @_tseconds,a0 move a0,@_last_seconds cmpi 9,a0 jrgt _no_sec_pad movi ZPAD,a4 calla concat_rom_string _no_sec_pad move @_tseconds,a0 movi 59,a1 ; Max Seconds calla dec_to_asc calla concat_string move @_thours,a0 ; Hours cmpi 11,a0 jrgt _time_is_pm movi TIME_AM,a4 jruc _tdone _time_is_pm movi TIME_PM,a4 _tdone calla concat_rom_string movi TIME_SETUP,a0 callr _setup_message movi _setup_mess,a8 JSRP L_MESS _time_check_sw: SLEEP 1 move @_switch2_addr,a0,L move *a0,a0,W move @_switch_addr,a1,L move *a1,a1,W sll 16,a0 srl 16,a0 sll 16,a1 srl 16,a1 and a0,a1 move @_coin_addr,a0,L move *a0,a0,W ori 10h,a0 sll 16,a0 or a1,a0 not a0 jrnz _dtime_done move @_tseconds,a0 move @_last_seconds,a1 cmp a0,a1 jrz _time_check_sw movi 1cch,a3 calla SNDSND move @CONTROL,a0 ; Make sure transparency is OFF move a0,-*sp andni 020h,a0 move a0,@CONTROL movi [CTIME_Y,0],a0 ; Get rid of calibrating message movi [20,400],a1 movi ROBO_BLACK,a2 fcall RECTANGLE,b6 move *sp+,a0 move a0,@CONTROL ; Restore CONTROL register jruc _display_time _dtime_done RETP GO_DISPLAY: calla CLR_SCRN ; Clear the screen movi M_CLK_DISPLAY,a2 ; Put up Title Box movi ROBO_GREEN,a3 JSRP TOP_BOX GO_CLKS: ; move @_clk_rd,a0,L ;Save current auto update state ; move a0,@_auto_update_save,L ; clr a0 ;Enable auto update ; move a0,@_clk_rd,L ; JSRP _GetTime movi MESS_CLKD_PROMPTS,a8 ; Put up assorted prompts JSRP L_MESS SLEEP 5 movi DAY_TABLE,a8 ; Put Day of week up move @_tday,a0 ; Day of week (1-7) dec a0 cmpi 6,a0 jrgt _bad_day sll 5,a0 add a0,a8 move *a8,a4,L calla copy_rom_string movi DAY_SETUP,a0 callr _setup_message movi _setup_mess,a8 JSRP L_MESS _bad_day movi MONTH_TABLE,a8 ; Put month of year up move @_tmonth,a0 ; Month of year number (0-11) dec a0 cmpi 11,a0 jrgt _bad_month sll 5,a0 add a0,a8 move *a8,a4,L calla copy_rom_string ; Copy month name to buffer _bad_month move @_tdate,a0 ; Date (1-31) cmpi 9,a0 jrgt _no_date_pad movi ZPAD,a4 calla concat_rom_string _no_date_pad move @_tdate,a0 ; Date (1-31) movi 31,a1 ; Maximum Date calla dec_to_asc ; Convert Date to ascii calla concat_string ; Add to buffer movi MESS_HYEARS,a4 ; , 19 calla concat_rom_string ; Add to buffer move @_tyear,a0 ; Year (0 - 99) cmpi 9,a0 jrgt _no_year_pad movi ZPAD,a4 calla concat_rom_string _no_year_pad move @_tyear,a0 movi 99,a1 ; Max year calla dec_to_asc ; Convert Years to ascii calla concat_string ; Add to buffer movi DATE_SETUP,a0 callr _setup_message movi _setup_mess,a8 JSRP L_MESS JSRP _display_time ; move @_auto_update_save,a0,L ;Restore Auto Update state ; move a0,@_clk_rd,L movi 0c7h,a3 calla SNDSND RETP ; All done _transfer_time mmtm sp,a1,a2,a3 movi _rtc_seconds,a1 movi _tseconds,a2 movi 7,a3 _tt_loop1 move *a2+,*a1+ dsjs a3,_tt_loop1 mmfm sp,a1,a2,a3 rets GO_CLOCK_SET: calla CLR_SCRN ; Clear the screen movi M_CLK_SET,a2 ; Put up Title Box movi ROBO_GREEN,a3 JSRP TOP_BOX calla _set_time movi MESS_RTC_SET,a8 ; Put up "CLOCK SET" message JSRP L_MESS ; SLEEP 16 SLEEP 30 callr _transfer_time jauc GO_CLKS GO_TIME_SET ; JSRP _GetTime callr _transfer_time movi MEN_TIME_SET,a8 GEN_TIME_SET move a8,-*a12,L movk 1,a0 move a0,-*a12,W TIME_SET_LOOP calla CLR_SCRN movi CS_ADV,a8 JSRP L_MESS move *a12(WORD_SIZE),a8,L JSRP MENU_TOP movi COLOR_RED,a9 calla COL_INST move *a12,a9,W JSRP B_MENU move a9,a9 jrz GO_TS_QUIT _not_set_time move a8,*a12,W move *a9(AD_ROUT),a0,L movi TIME_SET_LOOP,a7 move a7,-*a12,L cmpi 9,a8 jrz _time_set jump a0 _time_set jauc GO_CLOCK_SET GO_TS_QUIT addk WORD_SIZE,a12 addk LONG_SIZE,a12 RETP _do_title mmtm a12,a10,a11,a8 ;SAVE STUFF FOR CALLER ; move @_clk_rd,a0,L ;Save current auto update state ; move a0,@_auto_update_save,L ; clr a0 ;Enable auto update ; move a0,@_clk_rd,L ; JSRP _GetTime subk 4,a10 move a11,a6 movi CS_HX,a9 addi TIT_LRX,a9 srl 1,a9 subk 4,a9 sll 16,a10 ;SHIFT Y DOWN movy a10,a9 ;X,Y SET move a2,a8 ;TEXT POINTER clr a0 ;NO SLEEP movi SPACING20,a10 movi RD15FONT,a11 JSRP STRCNRM ;DO IT! mmfm a12,a10,a11,a8 ;POP THE STUFF. RETP _adj_time_and_date movi DAY_TABLE,a8 ; Put Day of week up move @_rtc_day,a0 ; Day of week number (1-7) dec a0 ; cmpi 6,a0 ; jrgt _abad_day sll 5,a0 add a0,a8 move *a8,a4,L calla copy_rom_string movi DAYADJ_SETUP,a0 callr _setup_message movi _setup_mess,a8 JSRP L_MESS _abad_day movi MONTH_TABLE,a8 ; Put month of year up move @_rtc_month,a0 ; Month of year number (1 - 12) dec a0 ; cmpi 11,a0 ; jrgt _abad_month sll 5,a0 add a0,a8 move *a8,a4,L calla copy_rom_string ; Copy month name to buffer _abad_month move @_rtc_date,a0 ; Date cmpi 9,a0 jrgt _no_date_pad1 movi ZPAD,a4 calla concat_rom_string _no_date_pad1 move @_rtc_date,a0 ; Date movi 31,a1 ; Maximum Date calla dec_to_asc ; Convert Date to ascii calla concat_string ; Add to buffer movi MESS_HYEARS,a4 ; , 19 calla concat_rom_string ; Add to buffer move @_rtc_year,a0 ; Year cmpi 9,a0 jrgt _no_year_pad1 movi ZPAD,a4 calla concat_rom_string _no_year_pad1 move @_rtc_year,a0 movi 99,a1 ; Max year calla dec_to_asc ; Convert Years to ascii calla concat_string ; Add to buffer movi DATEADJ_SETUP,a0 callr _setup_message movi _setup_mess,a8 JSRP L_MESS clr a0 move a0,@message_buffer move @_rtc_hours,a0 ; Hours jrnz _hour_gz addk 12,a0 jruc _time_is_am1 _hour_gz cmpi 12,a0 jrle _time_is_am1 move @_rtc_hours,a0 ; Hours subi 12,a0 _time_is_am1 movi 12,a1 ; Max hours calla dec_to_asc calla concat_string movi TSEPERATOR,a4 calla concat_rom_string move @_rtc_minutes,a0 cmpi 9,a0 jrgt _no_min_pad1 movi ZPAD,a4 calla concat_rom_string _no_min_pad1 move @_rtc_minutes,a0 movi 59,a1 ; Max Minutes calla dec_to_asc calla concat_string movi TSEPERATOR,a4 calla concat_rom_string move @_rtc_seconds,a0 cmpi 9,a0 jrgt _no_sec_pad1 movi ZPAD,a4 calla concat_rom_string _no_sec_pad1 move @_rtc_seconds,a0 movi 59,a1 ; Max Seconds calla dec_to_asc calla concat_string move @_rtc_hours,a0 ; Hours cmpi 11,a0 jrgt _time_is_pm1 _time_is_afm movi TIME_AM,a4 jruc _tdone1 _time_is_pm1 cmpi 24,a0 jrz _time_is_afm movi TIME_PM,a4 _tdone1 calla concat_rom_string movi TADJ_SETUP,a0 callr _setup_message movi _setup_mess,a8 JSRP L_MESS RETP _set_it_up calla CLR_CUR movi 6,a1 movk 5,a4 calla CADJ_BOX movi 1,a1 clr a4 calla CADJ_BOX movi [ADJ_CULY+5,CS_HX+5],A3 movi [21,185],A4 calla BLNKAREA movi [ADJ_CULY+31,CS_HX+5],A3 movi [58,185],A4 calla BLNKAREA SLEEPK 2 ; I dare you to take this out RETP YEAR_SET JSRP _set_it_up movi MESS_YEAR_SET,a2 JSRP _do_title JSRP _adj_time_and_date RETP MONTH_SET JSRP _set_it_up movi MESS_MONTH_SET,a2 JSRP _do_title JSRP _adj_time_and_date RETP DATE_SET JSRP _set_it_up movi MESS_DATE_SET,a2 JSRP _do_title JSRP _adj_time_and_date RETP DAY_SET JSRP _set_it_up movi MESS_DAY_SET,a2 JSRP _do_title JSRP _adj_time_and_date RETP HOUR_SET JSRP _set_it_up movi MESS_HOUR_SET,a2 JSRP _do_title JSRP _adj_time_and_date RETP MINUTE_SET JSRP _set_it_up movi MESS_MINUTE_SET,a2 JSRP _do_title JSRP _adj_time_and_date RETP SECOND_SET JSRP _set_it_up movi MESS_SECOND_SET,a2 JSRP _do_title JSRP _adj_time_and_date RETP ; a0 = value code ; a8 = PTR to data struct ; TRASHES a0, a3, a2 _ts_val_up: mmtm sp,a0,a2,a3 sll 4,a0 addi _rtc_seconds,a0 move *a0,a3 addk 1,a3 move *a8(AD_MAX),a2,L cmp a3,a2 jrge _ts_vu_done move *a8(AD_MIN),a3,L _ts_vu_done andi 0ffh,a1 move a3,*a0 mmfm sp,a0,a2,a3 rets ; a0 = value code ; a8 = PTR to data struct ; TRASHES a0, a3 _ts_val_down: mmtm sp,a0,a3,a1 sll 4,a0 addi _rtc_seconds,a0 move *a0,a3 subk 1,a3 move *a8(AD_MIN),a1,L cmp a1,a3 jrge _ts_vd_done move *a8(AD_MAX),a3,L _ts_vd_done andi 0ffh,a3 move a3,*a0 mmfm sp,a0,a3,a1 rets GEN_TS: movk 2,a0 move a0,@_switch_map_mode,L move a9,*a13(PDATA),L move a9,a8 calla CLR_MAIN calla ADJ_INST JSRP ST_STICK SLEEPK 2 TS_CHNG SLEEPK 1 movi 31000h,a5 JSRP GETSTICK move *a13(PDATA),a8,L move a0,a1 jrz TS_CHNG move *a8(AD_CMOS),a0,W ; Get What we are adjusting cmpi 3,a1 jrz TS_BUTT cmpi 2,a1 jrz TS_DOWN callr _ts_val_up ; Incrment the value jruc TS_JOIN TS_DOWN: callr _ts_val_down ; Decrement the value TS_JOIN: movi beep1_snd,a3 calla SNDSND JSRP TS_UPDATE jruc TS_CHNG TS_UPDATE: move *a8(AD_NAMEIT),a0,L movi ROBO_LASER,a11 jump a0 TS_BUTT: movi beep2_snd,a3 calla SNDSND JSRP TS_UPDATE SLEEPK 5 TS_CAN: movk 1,a0 move a0,@_switch_map_mode,L RETP ******************************** * DIAGNOSTIC TESTS * * SOUND TEST STUFF NCHAN EQU 6 ;DECLARE NUMBER OF ALLOWED CHANNELS MUSICHAN EQU 3 ;THIS CHANNEL IS FOR THE TUNES ;RESETBIT EQU 0FE00H ;Sound board reset bit GO_STEST CALLA CLR_SCRN movi MEN_SOUNDTEST,a8 movk 1,a9 ;CURSOR ON 1st ENTRY JAUC GEN_MENU ;THIS WILL RETURN TO LEVEL ABOVE US! ; jsrp B_MENU ;SEE IF THEY WANT PAGE 2. ; cmpi 1,A8 ;DID WE GET 1'ST ENTRY? ; RETP SNDTST MOVI SNDMES,A8 ;MESSAGE POINTER SNDTLP CALLA SCRCLR MOVI M_STEST,A0 ;SOUND TEST MESSAGE MOVI >6080,A1 CLR A2 MOVI ROBO_WHITE,A3 CALLA STRNEW1 MOVI >B080,A1 ;SCREEN ADDRESS MOVE A8,A0 CALLA STRNEW1 ADDK 8,A0 MOVB *A0,A5 ;Channel ADDK 8,A0 MOVB *A0,A3 ;Sound # sll 32-8,a3 ;Kill sign extend srl 32-8,a3 ADDK 8,A0 CALLA SNDSND MOVE A0,A8 MOVE A13,A13 ;AUTO-CYCLE? JRNE SNDSLP ;NO CALLA WDOGDIS MOVI 3000000,A13 SNDAUTO DSJS A13,SNDAUTO JRUC SNDSLP1 SNDSLP SLEEP 120 SNDSLP1 MOVB *A8,A5 JRNE SNDTLP MOVE A13,A13 ;AUTO CYCLE EXIT JREQ SNDX1 RETP SNDX1 RETS *SOUND TABLE *MESSAGE,CHANNEL,SOUNDCODE * SNDMES .byte "TUNE 1 (1)",0 .byte MUSICHAN,1 .byte "NO WAY (E6)",0 .byte 1,>e6 .byte "EXPL1 (30)",0 .byte 4,>30 .byte "TUNE 2 (9)",0 .byte MUSICHAN,9 .byte "SPIDER BOUNCE (83)",0 .byte 4,>83 .byte "MUSIC OFF (0)",0 .byte MUSICHAN,0 .byte 0 ;THE END OF TABLE .even .ref SNDPROTOPROMPT .ref SNDRELEASEPROMPT .ref SNDTIMEOUT .ref SOUNDSUP .ref _snd_chip_count snd_vprompt .string "SOUND SYSTEM VERSION: ",0 .even snd_rev_mes MESS_MAC RD7FONT,SPACING07,200,227,ROBO_GREEN,STRCNRM,0 .byte 0,0,0 .even snd_tout_mes MESS_MAC RD7FONT,SPACING07,200,227,ROBO_RED,STRCNRM,0 .byte 0,0,0 .even #************************************************************* * SUBRP GetSoundRev move @_coin_counter_addr,a0,L movi 030h,a1 ; Yank down the reset move a1,*a0,W movi 10000,a1 ; Hold it fer a while dsjs a1,$ movi 020h,a1 ; Let it go move a1,*a0,W movi 10000,a1 dsjs a1,$ move @_sound_addr,a0,L ; Bypass the diags movb a0,*a0 movi 500000,a1 ; Wait fer a while #swait_lp dsjs a1,#swait_lp clr a3 ; Turn on the sounds move a3,@SOUNDSUP,W movi 999,a3 ; Send revision request sound call calla SNDSND movi 1000000,a2 #sndrev_loop move @_soundirq_addr,a0,L ; Wait fer a response move *a0,a1,W btst B_SDAV,a1 ; Got a response ? jrz #snd_response ; BR = yes dsjs a2,#sndrev_loop #snd_timeout movi SNDTIMEOUT,a4 ; If we get here we never got a response calla copy_rom_string movi snd_tout_mes,a0 callr _setup_message movi _setup_mess,a8 JSRP L_MESS jruc #sndrev_done ; Then we be done #snd_response movi snd_vprompt,a4 calla copy_rom_string move @_sound_addr,a0,L ; Get sound revision data move *a0,a0,W move a0,@_snd_chip_count,W ; Put up sound revision move a0,a1 andi 0ffh,a1 cmpi 0ffh,a1 jrz #snd_timeout andi 0f0h,a1 cmpi 0d0h,a1 jrz #proto_version movi SNDRELEASEPROMPT,a4 jruc #do_snd_version #proto_version movi SNDPROTOPROMPT,a4 #do_snd_version calla concat_rom_string move @_snd_chip_count,a0,W andi 0fh,a0 movk 15,a1 calla dec_to_asc calla concat_string movi snd_rev_mes,a0 callr _setup_message movi _setup_mess,a8 JSRP L_MESS #sndrev_done RETP ******************************************************************************* DO_GENTEST CALLA CLR_SCRN MOVI M_DIGT,A2 MOVI ROBO_GREEN,A3 JSRP TOP_BOX ;PRINT TITLE BOX. CALLA SURE_BOX ;PUT A NICE BOX UP! movi #snd_testing_mess,a8 JSRP L_MESS JSRP GetSoundRev ;reset the board movi SNDRSTBIT|32,a0 ;pull bit low ; move a0,@COIN_COUNTERS,W move @_coin_counter_addr,a8,L move a0,*a8,W movi 8,a14 ;wait a bit dsjs a14,$ movi 32,a0 ;send it high again ; move a0,@COIN_COUNTERS,W move @_coin_counter_addr,a8,L move a0,*a8,W SLEEP TSEC/4 ;250ms wait movi TSEC*7,a0 ;wait for data available JSRP poll_sdav ; movb @SOUNDR,a0 ;read from the board (better be 0x79) move @_sound_addr,a0,L movb *a0,a0 cmpi 79h,a0 jrne sdav_not79 movi TSEC/5,a0 JSRP poll_sdav ;great. now wait for the bong count ; movb @SOUNDR,a0 move @_sound_addr,a0,L movb *a0,a0 X32 a0 addi diag_message_table,a0 move *a0,a8,L JSRP L_MESS jauc ANY_BUT sdav_not79 movi AUD_SNDERR4,a0 calla AUD1 .if DEBUG ;sound board misbehaving. should LOCKUP ; write a 0x79 after the checksum .endif ; tests. it wrote something else. jauc ANY_BUT diag_message_table .long #check_hardware .long #board_ok .long #bad_u2_checksum .long #bad_u3_checksum .long #bad_u4_checksum .long #bad_u5_checksum .long #bad_u6_checksum .long #bad_u7_checksum .long #bad_u8_checksum .long #bad_u9_checksum .long #bad_ram **************************************** * Wait for sound board Data AVailable to go active, with timeout. * >a0=timeout * 1212 AMAC M_PLAYS,DOPLAYS,0,ROBO_YELLOW ; AMAC M_HSLEFT,DOHSLEFT,0,ROBO_YELLOW .long 0 amst_s TXTLINE "ATTRACT MODE STARTS" M_START TXTLINE "MID GAME STARTS" M_CONTO TXTLINE "CONTINUES OFFERED" M_CONT TXTLINE "CONTINUES TAKEN" M_EXTRA TXTLINE "EXTRA MEN COLLECTED/EARNED" M_P1MIN TXTLINE "HOURS OF SINGLE PLAY" M_P2MIN TXTLINE "HOURS OF DUAL PLAY" M_HOURS TXTLINE "TOTAL HOURS OF PLAY" M_AVGT .byte "AVG. ",ASCII_DQ,"PLAYER",ASCII_DQ," GAME TIME (MIN.)",0 .even ;* BOTTOM HALF OF COIN AUDIT PAGE 1 TABLE ;COIN_A2 .WORD CP2_Y ;Y START ; .WORD AUD_DY ;Y BETWEEN ENTRIES ; .WORD AUD_LM ;LEFT MARGIN X ; .WORD AUD_RM ;RIGHT MARGIN X ; AMAC M_START,STARTS,0,ROBO_YELLOW ; AMAC M_CONT,CONTINS,0,ROBO_YELLOW ; AMAC M_PLAYS,DOPLAYS,0,ROBO_YELLOW ; AMAC M_HSLEFT,DOHSLEFT,0,ROBO_YELLOW ; .LONG 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 39H ;Y START ; .WORD 11H ;Y BETWEEN ENTRIES ; .WORD AUD_LM ;LEFT MARGIN X ; .WORD AUD_RM ;RIGHT MARGIN X ; AMAC M_LCOIN,0,AUDLCOIN,ROBO_YELLOW ; AMAC M_CCOIN,0,AUDCCOIN,ROBO_YELLOW ; AMAC M_RCOIN,0,AUDRCOIN,ROBO_YELLOW ; .LONG 0 * * DOOR CLOSED AUDITS. * ;COIN_D2 ; .WORD 090H ;Y START ; .WORD 11H ;Y BETWEEN ENTRIES ; .WORD AUD_LM ;LEFT MARGIN X ; .WORD AUD_RM ;RIGHT MARGIN X ; AMAC M_LCOIN,0,AUDLCDC,ROBO_YELLOW ; AMAC M_CCOIN,0,AUDCCDC,ROBO_YELLOW ; AMAC M_RCOIN,0,AUDRCDC,ROBO_YELLOW ; .LONG 0 ************************************************************************** * * * GAME PLAY AUDIT SCREEN * * * ************************************************************************** .asg 50,LM .asg 400-50,RM GAME_AUDS1 .word 55-10,11,LM,RM ;Y start, Y spacing, L margin, R margin AMAC str_totuptime, prn_uptime,0, ROBO_WHITE AMAC str_totpltime, prn_pltime,0, ROBO_WHITE AMAC str_1pplay, prn_1plpct,0, ROBO_BLUE AMAC str_2pplay, prn_2plpct,0, ROBO_BLUE AMAC str_totstarts, 0,AUD_TOTSTARTS,ROBO_YELLOW AMAC str_amodstarts, 0,AUD_PRESTARTS,ROBO_YELLOW AMAC str_contoff, 0,AUD_CONTOFF, ROBO_CYAN AMAC str_conttaken, 0,AUD_CONTTAKN, ROBO_CYAN AMAC str_vscpus, 0,AUD_VSCPUS, ROBO_PURPLE AMAC str_vscpuf, 0,AUD_VSCPUF, ROBO_PURPLE AMAC str_cpuwin, prn_cpuwins,0, ROBO_GREEN AMAC str_credlen, prn_credlen,0,ROBO_GREEN AMAC str_inter, 0,AUD_INTERCON, ROBO_YELLOW AMAC str_wwf, 0,AUD_WWF, ROBO_YELLOW .long 0 GAME_AUDS2 .word 55-10,11,LM,RM ;Y start, Y spacing, L margin, R margin AMAC str_gametime, prn_avgtime,0, ROBO_BLUE AMAC str_vshumtime, prn_hvhtime,0, ROBO_WHITE AMAC str_cpuwintime, prn_cwintime,0, ROBO_WHITE AMAC str_cpulosstime,prn_closstime,0,ROBO_WHITE AMAC str_fasthvh, prn_fasthvh,0, ROBO_GREEN AMAC str_fastcpuwin, prn_fastcwin,0, ROBO_GREEN AMAC str_combo_per, prn_combogames,0, ROBO_GREEN AMAC str_fasthumwin, prn_fasthwin,0, ROBO_GREEN ; AMAC str_kanomorph, prn_kanomorph,0, ROBO_GREEN AMAC str_lockups, 0,AUD_LOCKUP, ROBO_CYAN AMAC str_lockups2, 0,AUD_LOCKUP2, ROBO_CYAN AMAC str_snderr1, 0,AUD_SNDERR1, ROBO_PINK AMAC str_snderr2, 0,AUD_SNDERR2, ROBO_PINK AMAC str_snderr3, 0,AUD_SNDERR3, ROBO_PINK AMAC str_snderr4, 0,AUD_SNDERR4, ROBO_PINK .long 0 GAME_AUDS2a .word 55-10,11,LM,RM ;Y start, Y spacing, L margin, R margin AMAC str_hdtohd, 0,AUD_HEADTOHEAD,ROBO_WHITE AMAC str_rumble, 0,AUD_ROYALRUM, ROBO_WHITE AMAC str_rumwins, 0,AUD_RRWINS, ROBO_GREEN AMAC str_p1icons, 0,AUD_P1ICONMAX,ROBO_CYAN AMAC str_p2icons, 0,AUD_P2ICONMAX,ROBO_CYAN .long 0 GAME_AUDS3a .word 55-10+22,11,LM,RM-140 ;Y start, Y spacing, L margin, R margin AMAC str_bhart, 0,AUD_BHART, ROBO_GREEN AMAC str_rramo, 0,AUD_RRAMO, ROBO_WHITE AMAC str_under, 0,AUD_UNDER, ROBO_BLUE AMAC str_yoko, 0,AUD_YOKO, ROBO_YELLOW AMAC str_smich, 0,AUD_SMICH, ROBO_CYAN AMAC str_bbbig, 0,AUD_BBBIG, ROBO_PURPLE AMAC str_dclow, 0,AUD_DCLOW, ROBO_GREEN AMAC str_lluge, 0,AUD_LLUGE, ROBO_YELLOW ; AMAC str_adam, dummy,0, ROBO_BLUE .long 0 GAME_AUDS3b .word 55-10+22,11,LM,RM-105-12 ;Y start, Y spacing, L margin, R margin AMAC str_space, bhart_hwinpct,0,ROBO_GREEN AMAC str_space, rramo_hwinpct,0,ROBO_WHITE AMAC str_space, under_hwinpct,0,ROBO_BLUE AMAC str_space, yoko_hwinpct,0,ROBO_YELLOW AMAC str_space, smich_hwinpct,0,ROBO_CYAN AMAC str_space, bbbig_hwinpct,0,ROBO_PURPLE AMAC str_space, dclow_hwinpct,0,ROBO_GREEN AMAC str_space, lluge_hwinpct,0,ROBO_YELLOW .long 0 GAME_AUDS3c .word 55-10+22,11,LM,RM-35 ;Y start, Y spacing, L margin, R margin AMAC str_space, 0,AUD_BHARTC, ROBO_GREEN AMAC str_space, 0,AUD_RRAMOC, ROBO_WHITE AMAC str_space, 0,AUD_UNDERC, ROBO_BLUE AMAC str_space, 0,AUD_YOKOC, ROBO_YELLOW AMAC str_space, 0,AUD_SMICHC, ROBO_CYAN AMAC str_space, 0,AUD_BBBIGC, ROBO_PURPLE AMAC str_space, 0,AUD_DCLOWC, ROBO_GREEN AMAC str_space, 0,AUD_LLUGEC, ROBO_YELLOW .long 0 GAME_AUDS3d .word 55-10+22,11,LM,RM-12 ;Y start, Y spacing, L margin, R margin AMAC str_space, bhart_cwinpct,0,ROBO_GREEN AMAC str_space, rramo_cwinpct,0,ROBO_WHITE AMAC str_space, under_cwinpct,0,ROBO_BLUE AMAC str_space, yoko_cwinpct,0,ROBO_YELLOW AMAC str_space, smich_cwinpct,0,ROBO_CYAN AMAC str_space, bbbig_cwinpct,0,ROBO_PURPLE AMAC str_space, dclow_cwinpct,0,ROBO_GREEN AMAC str_space, lluge_cwinpct,0,ROBO_YELLOW ; AMAC str_space, prn_adam,0, ROBO_WHITE .long 0 GAUD_P3HEAD1 MESS_MAC RD7FONT,SPACING07,RM-135,45,ROBO_BLUE,STRCNRM,0 .STRING "PLAYER",0,0 .EVEN GAUD_P3HEAD2 MESS_MAC RD7FONT,SPACING07,RM-30,45,ROBO_BLUE,STRCNRM,0 .STRING "CPU",0,0 .EVEN GAUD_P3HEAD3 MESS_MAC RD7FONT,SPACING07,RM-140,56,ROBO_RED,STRRNRM,0 .STRING "USES",0,0 .EVEN GAUD_P3HEAD4 MESS_MAC RD7FONT,SPACING07,RM-105,56,ROBO_RED,STRRNRM,0 .STRING "WINS",0,0 .EVEN GAUD_P3HEAD5 MESS_MAC RD7FONT,SPACING07,RM-35,56,ROBO_RED,STRRNRM,0 .STRING "USES",0,0 .EVEN GAUD_P3HEAD6 MESS_MAC RD7FONT,SPACING07,RM,56,ROBO_RED,STRRNRM,0 .STRING "WINS",0,0 .EVEN ;page 1 str_totuptime TXTLINE "TOTAL GAME UPTIME (HRS:MINS)" str_totpltime TXTLINE "TOTAL GAME PLAY TIME (HRS:MINS)" str_1pplay TXTLINE "ONE-PLAYER PLAY" str_2pplay TXTLINE "TWO-PLAYER PLAY" str_totstarts TXTLINE "TOTAL STARTS" str_amodstarts TXTLINE "ATTRACT MODE STARTS" str_contoff TXTLINE "CONTINUES OFFERED" str_conttaken TXTLINE "CONTINUES TAKEN" str_vscpus TXTLINE "1P GAMES BEGUN" str_vscpuf TXTLINE "1P GAMES FINISHED" str_cpuwin TXTLINE "CPU VICTORIES" str_inter TXTLINE "INTER BELT CHOSEN" str_wwf TXTLINE "WWF BELT CHOSEN" str_hdtohd TXTLINE "HEAD TO HEAD GAMES" str_rumble TXTLINE "ROYAL RUMBLE GAMES" str_rumwins TXTLINE "ROYAL RUMBLE WINS" str_p1icons TXTLINE "PLAYER 1 MAX ICONS" str_p2icons TXTLINE "PLAYER 2 MAX ICONS" ;page 2 str_gametime TXTLINE "AVG MATCH TIME (MIN:SEC)" str_vshumtime TXTLINE "AVG HUMAN VS HUMAN TIME" str_cpuwintime TXTLINE "AVG CPU WIN TIME" str_cpulosstime TXTLINE "AVG CPU LOSS TIME" str_fasthvh TXTLINE "FASTEST 2-PLAYER WIN" ;str_kanomorph TXTLINE "KANO TRANSFORMATIONS" str_credlen TXTLINE "AVG 1 PLAYER TIME PER CREDIT" str_fastcpuwin TXTLINE "FASTEST CPU WIN" str_fasthumwin TXTLINE "FASTEST CPU LOSS" str_combo_per TXTLINE "HUMAN COMBO GAMES" str_lockups TXTLINE "DOGS" str_lockups2 TXTLINE "PROCESS KO" str_snderr1 TXTLINE "SND ERR #1 (IRQ)" str_snderr2 TXTLINE "SND ERR #2 (ROM CHECKSUM)" str_snderr3 TXTLINE "SND ERR #3 (RAM TEST)" str_snderr4 TXTLINE "SND ERR #4 (SDAV)" ;page 3 str_bhart TXTLINE "BRET HART" str_rramo TXTLINE "RAZOR RAMON" str_under TXTLINE "UNDERTAKER" str_yoko TXTLINE "YOKOZUNA" str_smich TXTLINE "SHAWN MICHAELS" str_bbbig TXTLINE "BAM BAM BIGELOW" str_dclow TXTLINE "DOINK THE CLOWN" str_lluge TXTLINE "LEX LUGER" ;str_adam TXTLINE "ADAM BOMB APPEARANCES" str_pct TXTLINE "%" str_space TXTLINE " " .even .if 0 ROBO_GREY EQU 0101H ;[0E0H-223,0E0H-223] ROBO_WHITE EQU 0202H ;[0E1H-223,0E1H-223] ROBO_RED EQU 0303H ;[0E2H-223,0E2H-223] ROBO_ORANGE EQU 0404H ;[0E3H-223,0E3H-223] ROBO_YELLOW EQU 0505H ;[0E4H-223,0E4H-223] ROBO_GREEN EQU 0606H ;[0E5H-223,0E5H-223] ROBO_BLUE EQU 0707H ;[0E6H-223,0E6H-223] ROBO_LF EQU 03E3EH ROBO_CYAN EQU 0E0EH ;[0EDH-223,0EDH-223] ROBO_DECAY EQU 03F3FH ROBO_RGOLD EQU 0A0AH ;[0E9H-223,0E9H-223] ROBO_LASER EQU 03E3EH ROBO_LASER2 EQU 03F3FH ROBO_BLUWH EQU 0C0CH ;[0EBH-223,0EBH-223] ROBO_PINK EQU 0303H ;[0E2H-223,0E2H-223] ROBO_SKY EQU 0D0DH ;[0ECH-223,0ECH-223] ;LAST COLOR IN ROBO IS "SKY" COLOR ROBO_PURPLE EQU ROBO_SKY ;PURPLE FOR TEST MODE ROBO_BLACK EQU 1414H ;BLACK AS COAL .endif #***************************************************************************** * total uptime prn_uptime movi AUD_UPTIME,a0 calla GET_AUD ;* 5 sec incs / 60 (sec p/min) = /12 movk 12,a0 divu a0,a1 ;mins jruc P_TIME #***************************************************************************** * actual play time prn_pltime movi AUD_PLTIME,a0 calla GET_AUD ;* 5 sec incs / 60 (sec p/min) = /12 movk 12,a0 divu a0,a1 ;mins jruc P_TIME #***************************************************************************** * percentage of 1 player play prn_1plpct movi AUD_PLTIME,a0 calla GET_AUD move a1,a4 movi AUD_1PLAYTIME,a0 calla GET_AUD movi 100,a0 mpyu a0,a1 move a1,a2 move a4,a0 callr ROUNDED_A0_INTO_A2 ;DIVIDES A0 INTO A2. RESULT IN A2 move a2,a3 jruc PERCENT_WORK #***************************************************************************** * percentage of 2 player play prn_2plpct movi AUD_PLTIME,a0 calla GET_AUD move a1,a4 movi AUD_2PLAYTIME,a0 calla GET_AUD movi 100,a0 mpyu a0,a1 move a1,a2 move a4,a0 callr ROUNDED_A0_INTO_A2 ;DIVIDES A0 INTO A2. RESULT IN A2 move a2,a3 jruc PERCENT_WORK #***************************************************************************** * prn_cpuwins movi AUD_VSCPUF,a0 calla GET_AUD move a1,a4 movi AUD_CPUWIN,a0 calla GET_AUD movi 100,a0 mpyu a0,a1 move a1,a2 move a4,a0 callr ROUNDED_A0_INTO_A2 ;DIVIDES A0 INTO A2. RESULT IN A2 move a2,a3 jruc PERCENT_WORK #***************************************************************************** * avg battle time (all categories) prn_avgtime movi AUD_2PBTIME,a0 calla GET_AUD move a1,a3 movi AUD_CPUWINTIME,a0 calla GET_AUD add a1,a3 movi AUD_CPULOSETIME,a0 calla GET_AUD add a1,a3 movi AUD_VSHUMF,a0 calla GET_AUD move a1,a2 movi AUD_VSCPUF,a0 calla GET_AUD add a1,a2 divu a2,a3 move a3,a1 jruc P_TIME #***************************************************************************** * avg 2-player battle time prn_hvhtime movi AUD_2PBTIME,a0 calla GET_AUD move a1,a3 movi AUD_VSHUMF,a0 calla GET_AUD divu a1,a3 move a3,a1 jruc P_TIME #***************************************************************************** * avg CPU win time prn_cwintime movi AUD_CPUWINTIME,a0 calla GET_AUD move a1,a3 movi AUD_CPUWIN,a0 calla GET_AUD divu a1,a3 move a3,a1 jruc P_TIME #***************************************************************************** * avg CPU loss time prn_closstime movi AUD_CPULOSETIME,a0 calla GET_AUD move a1,a3 movi AUD_VSCPUF,a0 calla GET_AUD move a1,a2 movi AUD_CPUWIN,a0 calla GET_AUD sub a1,a2 divu a2,a3 move a3,a1 jruc P_TIME #***************************************************************************** * fastest human v human win prn_fasthvh movi AUD_FASTHDH,a0 calla GET_AUD jruc P_TIME #***************************************************************************** ;* KANO MORPHS ; ;prn_adam ;prn_kanomorph ; movi AUD_VSCPUF,a0 ; calla GET_AUD ; CMPI 3000,A1 ; JRLE ZERO_MORPHS ; MOVI 10,A0 ; CALLA RNDRNG0 ; MOVE A0,A8 ; PUSH A8 ; MOVI MESS_AUD_NUM,A8 ;SETUP FOR AUDIT NUMBER ; CALLA LM_SETUP ; PULL A8 ; CALLA HEXTOASC ;NOW WE POINT TO THE STRING. ; move *a13(AT_PTR),a6,L ;Get *audit ; move *a6(AUD_COLOR),a6 ; JSRP RIGHT_FINISH ;PRINT THE LINE ;dummy ; RETP ; ;ZERO_MORPHS ; MOVI MESS_AUD_NUM,A8 ;SETUP FOR AUDIT NUMBER ; CALLA LM_SETUP ; CLR A8 ; CALLA HEXTOASC ;NOW WE POINT TO THE STRING. ; move *a13(AT_PTR),a6,L ;Get *audit ; move *a6(AUD_COLOR),a6 ; JSRP RIGHT_FINISH ;PRINT THE LINE ; RETP prn_credlen MOVI AUD_CREDLEN,A0 CALLA GET_AUD MOVE A1,A3 MOVI AUD_CREDLENNUM,A0 CALLA GET_AUD DIVU A1,A3 MOVK 5,A1 ;TURN INTO SECONDS MPYU A1,A3 ;A3 HAS SECONDS OF INTEREST MOVE A3,A1 jruc P_TIME #***************************************************************************** * fastest computer win prn_fastcwin movi AUD_FASTCDH,a0 calla GET_AUD jruc P_TIME #***************************************************************************** * fastest computer loss prn_fasthwin movi AUD_FASTHDC,a0 calla GET_AUD jruc P_TIME #***************************************************************************** * percentage of human combo games prn_combogames movi AUD_COMBO,a2 movi AUD_TOTALGAMES,a0 jruc #set ****************************************************************************** * wrestler win percentages * bhart_hwinpct movi AUD_BHART,a0 movi AUD_BHARTHW,a2 jruc #set bhart_cwinpct movi AUD_BHARTC,a0 movi AUD_BHARTCW,a2 jruc #set rramo_hwinpct movi AUD_RRAMO,a0 movi AUD_RRAMOHW,a2 jruc #set rramo_cwinpct movi AUD_RRAMOC,a0 movi AUD_RRAMOCW,a2 jruc #set under_hwinpct movi AUD_UNDER,a0 movi AUD_UNDERHW,a2 jruc #set under_cwinpct movi AUD_UNDERC,a0 movi AUD_UNDERCW,a2 jruc #set yoko_hwinpct movi AUD_YOKO,a0 movi AUD_YOKOHW,a2 jruc #set yoko_cwinpct movi AUD_YOKOC,a0 movi AUD_YOKOCW,a2 jruc #set smich_hwinpct movi AUD_SMICH,a0 movi AUD_SMICHHW,a2 jruc #set smich_cwinpct movi AUD_SMICHC,a0 movi AUD_SMICHCW,a2 jruc #set bbbig_hwinpct movi AUD_BBBIG,a0 movi AUD_BBBIGHW,a2 jruc #set bbbig_cwinpct movi AUD_BBBIGC,a0 movi AUD_BBBIGCW,a2 jruc #set dclow_hwinpct movi AUD_DCLOW,a0 movi AUD_DCLOWHW,a2 jruc #set dclow_cwinpct movi AUD_DCLOWC,a0 movi AUD_DCLOWCW,a2 jruc #set lluge_hwinpct movi AUD_LLUGE,a0 movi AUD_LLUGEHW,a2 jruc #set lluge_cwinpct movi AUD_LLUGEC,a0 movi AUD_LLUGECW,a2 jruc #set #set calla GET_AUD move a1,a4 move a2,a0 calla GET_AUD movi 100,a0 mpyu a0,a1 move a1,a2 move a4,a0 callr ROUNDED_A0_INTO_A2 move a2,a3 jruc PERCENT_WORK ************************************************************************** * NUMBER_WORK - Print audit number * A3=# PERCENT_WORK MOVI MESS_AUD_NUM,A8 ;SETUP FOR AUDIT NUMBER CALLA LM_SETUP MOVE A3,A8 ;NOW WE HAVE BINARY NUMBER CALLA HEXTOASC ;NOW WE POINT TO THE STRING. PUSH a8 move a8,a7 movi str_pct,a8 CALLA STRCAT PULL a8 PUSH a0 move *a13(AT_RX),a0 PUSHP a0 addi 13,a0 move a0,*a13(AT_RX) PULL a0 move *a13(AT_PTR),a6,L ;Get *audit move *a6(AUD_COLOR),a6 JSRP RIGHT_FINISH PULLP a0 move a0,*a13(AT_RX) ;restore right margin RETP #***************************************************************************** MISC_AUD .word 50,18,AUD_LM,AUD_RM ;Y start, Y spacing, LMar, RMar AMAC M_SECBON,0,AUDSURV,ROBO_YELLOW ;WARPS TAKEN AMAC M_HIDB,0,AUDBONE,ROBO_YELLOW ;GAMES NOT FINISHED AMAC M_PLAYS,DOPLAYS,0,ROBO_YELLOW ;PLAYS ON TOP AMAC M_P1MIN,DO_P1MIN,0,ROBO_YELLOW AMAC M_P2MIN,DO_P2MIN,0,ROBO_YELLOW AMAC M_AVGT,DO_AVGT,0,ROBO_YELLOW AMAC M_ELAPSE,DO_ELAPSE,0,ROBO_YELLOW AMAC adiff_s,diff_prt,0,>1212 .LONG 0 adiff_s TXTLINE "GAME DIFFICULTY LEVEL" .IF 0 ******************************** * Display revision message * Do coin DIP if enabled * Check cmos, if bad reset to factory FACCHECK calla dpageflip_off CALLA CLR_SCRN MOVI DIAGP,A0 CALLA pal_getf MOVI AUDSTAT,A0 ;CLEAR GAME STATE AUDIT CLR A1 CALLA STORE_AUDIT MOVI ROM_NAME,A2 MOVI ROBO_LF,A3 JSRP TOP_BOX ;PRINT TITLE BOX. .if YUNIT move @SWITCH+30h,a0 btst 6,a0 jrnz fc40 ;No DIP coinage? movk 1,a0 ;Just coinage calla FAC_SET movi dipcoinage_mess,a8 JSRP L_MESS fc40 .endif .if DEBUG SLEEPK 1 ;Show it DEBUG .else SLEEP 120 ;Show it .endif CALLA CMOS_VAL ;CMOS BOGUS? JRZ FACC0 ;NO MOVI MESS_RESET,A8 ;ERROR MESSAGE JSRP L_MESS SLEEP 60 CALLR RES_ALL ;ALL TIME TABLE clr a0 ;Full CALLA FAC_SET MOVI MESS_FAC,A8 CALLA LM_SETUP ;GET CONFIRMATION DATA READY. JSRP LM_FINIS SLEEP 60 CALLA CMOS_VAL ;CMOS BOGUS? JRZ FACC00 ;NO CALLA SCRCLR MOVI MESS_RESET,A8 ;ERROR MESSAGE JSRP L_MESS FACC00 SLEEP 240 FACC0 CALLA SCRCLR CREATE AMODE_PID,attract_mode DIE dipcoinage_mess MESS_MAC RD7FONT,SPACING20,200,65,ROBO_WHITE,STRCNRM,0 .byte "USING DIPSWITCH COINAGE",0,0 .even .ENDIF ******************************** * Octopus sucessful, show stats HID_P CALLA display_init ;MAKE SURE A13 IS OK BEFORE ANY ACTIONS! CALLA DIGSRT ;RE-INIT THE WORLD! MOVI ROM_NAME,A2 MOVI ROBO_LF,A3 JSRP TOP_BOX ;PRINT TITLE BOX. * A4 = UPPER LEFT Y,X * * A5 = LOWER RIGHT Y,X * * A6 = NUMBER OF SLICES GOING IN. * calla CLR_SCRN ;Clr screen movi COIN_OCTO_AUDS,a0 JSRP PRNT_AUD movi AUD_Y_STRT,a0 ;aud Y start MOVE a0,*A13(AT_Y),W ;set Y COORDINATE MOVI AUDLCOIN,A8 ;NOW PRINT MONEY FOR 1ST 3 JSRP PRINT_COL2 JSRP WAIT_BUT calla CLR_SCRN ;Clr screen movi GAME_AUDS1,A0 ;Show 1st screen JSRP PRNT_AUD JSRP WAIT_BUT calla CLR_SCRN ;Clr screen movi GAME_AUDS2,A0 ;Show 2nd screen JSRP PRNT_AUD JSRP WAIT_BUT calla CLR_SCRN ;Clr screen movi GAME_AUDS2a,A0 ;Show 3rd screen JSRP PRNT_AUD JSRP WAIT_BUT calla CLR_SCRN ;Clr screen movi GAME_AUDS3a,A0 ;Show 4th screen data JSRP PRNT_AUD movi GAME_AUDS3b,A0 JSRP PRNT_AUD movi GAME_AUDS3c,A0 JSRP PRNT_AUD movi GAME_AUDS3d,A0 JSRP PRNT_AUD movi GAUD_P3HEAD1,a8 ;and the page headers JSRP L_MESS movi GAUD_P3HEAD2,a8 JSRP L_MESS movi GAUD_P3HEAD3,a8 JSRP L_MESS movi GAUD_P3HEAD4,a8 JSRP L_MESS movi GAUD_P3HEAD5,a8 JSRP L_MESS movi GAUD_P3HEAD6,a8 JSRP L_MESS JSRP WAIT_BUT ;volume adjust JSRP GO_VOL JAUC DIAG_EX ;NOW GET OUT! ************************************************************************** * 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 ;GET STARTING HEIGHT MOVE A1,*A13(AT_Y) ;STORE MOVE *A0+,A1 ;GET DY TO USE MOVE A1,*A13(AT_DY) ;STASH IT AWAY MOVE *A0+,A1 ;GET LEFT MARGIN MOVE A1,*A13(AT_LX) ;STORE MOVE *A0+,A1 ;GET RIGHT MARGIN MOVE A1,*A13(AT_RX) ;STASH IT AWAY MOVE A0,*A13(AT_PTR),L ;SAVE POINTER INTO AREA PA1 JSRP aud_prtone 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 SLEEPK 2 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 ******************************** * Print an audit line SUBRP aud_prtone CALLR BEGIN_AUDIT MOVE *A13(AT_PTR),A3,L ;GET POINTER MOVE *A3(AUD_ROUTINE),A4,L jrz apo20 ;No code? movi apo50,a7 MOVE A7,-*A12,L ;PUSH RET ADDR JUMP A4 ;"CALL" THE ROUTINE apo20 MOVE *A3(AUD_NUMBER),A0 ;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! apo50 movi MESS_AUD_LINE,a8 calla LM_SETUP ;Setup for audit printing move *a13(AT_PTR),a3,L ;Get *audit move *a3(AUD_COLOR),a6 move *a3(AUD_MESS),a8,L ;Get *text jruc LEFT_FINISH ******************************** * 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 LM_FINIS ;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 LM_FINIS ;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 LM_FINIS ;FINISH THE JOB! RFX RETP TURN_RED_IF_NEC MMTM SP,A3 MOVE @BAD_AUD,A3 ;CHANGE TO RED? JRZ DAA_1 ;NOPE...ITS OK! MOVI ROBO_RED,A6 ;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 - Print audit number * A3=# NUMBER_WORK MOVI MESS_AUD_NUM,A8 ;SETUP FOR AUDIT NUMBER CALLA LM_SETUP MOVE A3,A8 ;NOW WE HAVE BINARY NUMBER CALLA HEXTOASC ;NOW WE POINT TO THE STRING. move *a13(AT_PTR),a6,L ;Get *audit move *a6(AUD_COLOR),a6 jruc RIGHT_FINISH ************************************************************************** * * * GET_STARTS * * * * TOTAL GAME STARTS IN A2. * * * ************************************************************************** GET_STARTS MMTM SP,A0,A1 MOVK AUD1STRT,A0 CALLA GET_AUD MOVE A1,A2 MOVK AUD2STRT,A0 CALLA GET_AUD ADD A1,A2 MMFM SP,A0,A1 RETS ************************************************************************** * * * GET_CONTS * * * * TOTAL GAME CONTINUES IN A2. * * * ************************************************************************** GET_CONTS MMTM SP,A0,A1 MOVK AUD1CONT,A0 CALLA GET_AUD MOVE A1,A2 MOVK AUD2CONT,A0 CALLA GET_AUD ADD A1,A2 MMFM SP,A0,A1 RETS ************************************************************************** * Get total plays (Beginning+starts+continues) * Rets: A2=# GET_PLAYS PUSH a0 ; movk AUDBEGIN,a0 ; calla GET_AUD ; move a1,a0 clr a0 callr GET_STARTS ;Actually middle starts add a2,a0 callr GET_CONTS add a0,a2 PULL a0 rets ************************************************************************** * * * PRINT_MONEY * * * * THIS IS CALLED TO PRINT OUT THE "MONEY" ON THE MONEY * * LINE OF THE AUDIT TABLE. * * * * AUDIT X AND Y IS SET FOR THE LINE TO DISPLAY IT ON. * * * * A8 HAS THE 1ST OF 3 AUDITS TO USE FOR THE CALCULATION * * A9 HAS THE MESSAGE TO LEFT JUSTIFY ON THE CURRENT LINE * * * ************************************************************************** PRINT_COL MOVI T_MONEY,A9 ;THIS ENTRYPOINT IS FOR COLLECTION MESSAGE PRINT_MONEY MOVE A9,*A13(AT_MESS),L ;HOLD MESSAGE FOR WHEN WE NEED IT! MOVI ADJCDIV,A0 ;IF DIVISOR IS ZERO..THEN ITS OFF! CALLA GET_ADJ JRZ NO_MONEY ;THAT'S ALL FOLKS! CALLR BEGIN_AUDIT ;KEEP TRACK OF SANITY OF CALC. * * ROUTINE IN A2 FORMS STRING BASED ON 3 AUDITS STARTING * WITH THE NUMBER IN A8. * CALLR STR_OBJ ;GET AN OBJECT FOR STRINGING JRC NO_MONEY ;COULDN'T GET AN OBJECT! CALLR SUM_COINS ;ADD UP THE COIN PARTS IN A2 * * WE'RE DOING A PREFIX STRING...NO PREFIX IF ITS BEEN TAMPERED * CALLR SIXP ;HAVE THE 6 BEEN TAMPERED JRZ NO_PREFIX CALLR GET_CSPT ;A6 POINTS AT CSECECT DATA. MOVE *A6(CS_LMES),A8,L ;LEFT STRING FOR MONEY TOTAL CALLA STRCAT ;SHOVE THE STRING IN! NO_PREFIX 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 * * GET QUOTIENT IN A2 * REMAINDER IN A3 * DIV_BY_1 MOVE A2,A3 ;SETUP AS DIVIDEND CLR A2 DIVU A0,A2 ;DIVIDE UNITS/DIVISOR MOVE A2,A8 ;WE NEED TO PUT QUOTIENT IN STRING CALLA HEXTOASC ;THIS FORMS STRING FOR QUOTIENT CALLA STRCAT ;ADD QUOTIENT TO PRINTOUT CMPI 1,A0 ;IS DIVISOR ONE?????? JRZ NOFRAC ;YEP.......NO DECIMAL! * * WE HAVE A DIVISOR.....WE NEED TO DISPLAY CENTS. * MOVI ME_DECIMAL,A8 ;ADD DECIMAL POINT CALLA STRCAT ;ITS THERE! * * REMAINDER IS IN A3....TURN IT TO 100THS. * MOVI 100,A2 MPYU A2,A3 ;REMAINDER TIMES 100 MOVE A3,A2 ;DIVIDEND IN A2 CALLR ROUNDED_A0_INTO_A2 CALLR A2_100TH ;CAT THE 100THS IN A2 TO THE A7 STRING. NOFRAC MOVI COINS_TRAIL,A8 ;ASSUME IT WILL BE "COINS" CALLR SIXP ;TAMPERED? JRZ COIN_SUF ;YEP....USE " COINS" MOVE *A6(CS_RMES),A8,L ;FINISH IT OFF WITH RIGHT STRING COIN_SUF CALLA STRCAT ;SHOVE THE STRING IN! MOVI M_MONEY,A8 ;MESSAGE FOR THIS LINE PASSED IN A9 CALLA LM_SETUP MOVE @TMPOBJ,A8,L ;POINTER TO MONEY STRING JSRP RIGHT_FINISH ;PUT ON RIGHT MARGIN CALLR STR_FREE MOVE *A13(AT_MESS),A8,L ;SETUP PASSED MESSAGE CALLA LM_SETUP JSRP LEFT_FINISH ;PUT UP PASSED MESSAGE. NO_MONEY RETP ************************************************************************** * prints up collection minus $$$ * PRINT_COL2 MOVI T_MONEY2,A9 ;THIS ENTRYPOINT IS FOR COLLECTION MESSAGE MOVE A9,*A13(AT_MESS),L ;HOLD MESSAGE FOR WHEN WE NEED IT! MOVI ADJCDIV,A0 ;IF DIVISOR IS ZERO..THEN ITS OFF! CALLA GET_ADJ JRZ NO_MONEY2 ;THAT'S ALL FOLKS! CALLR BEGIN_AUDIT ;KEEP TRACK OF SANITY OF CALC. * * ROUTINE IN A2 FORMS STRING BASED ON 3 AUDITS STARTING * WITH THE NUMBER IN A8. * CALLR STR_OBJ ;GET AN OBJECT FOR STRINGING JRC NO_MONEY2 ;COULDN'T GET AN OBJECT! CALLR SUM_COINS ;ADD UP THE COIN PARTS IN A2 * * WE'RE DOING A PREFIX STRING...NO PREFIX IF ITS BEEN TAMPERED * ;; CALLR SIXP ;HAVE THE 6 BEEN TAMPERED ;; JRZ NO_PREFIX2 ;; CALLR GET_CSPT ;A6 POINTS AT CSECECT DATA. ;; MOVE *A6(CS_LMES),A8,L ;LEFT STRING FOR MONEY TOTAL movi M_VERINF,a8 CALLA STRCAT ;SHOVE THE STRING IN! NO_PREFIX2 MOVK 1,A0 ;DIVIDE COINS BY 1 IF ITS BEEN TAMPERED WITH CALLR SIXP JRZ DIV_BY_12 ;TAMPERED WITH...DIVIDE BY 1 FOR "COINS" MOVI ADJCDIV,A0 ;GET THE COIN PARTS PLEASE CALLA GET_ADJ * * GET QUOTIENT IN A2 * REMAINDER IN A3 * DIV_BY_12 MOVE A2,A3 ;SETUP AS DIVIDEND CLR A2 DIVU A0,A2 ;DIVIDE UNITS/DIVISOR MOVE A2,A8 ;WE NEED TO PUT QUOTIENT IN STRING CALLA HEXTOASC ;THIS FORMS STRING FOR QUOTIENT CALLA STRCAT ;ADD QUOTIENT TO PRINTOUT CMPI 1,A0 ;IS DIVISOR ONE?????? JRZ NOFRAC2 ;YEP.......NO DECIMAL! * * WE HAVE A DIVISOR.....WE NEED TO DISPLAY CENTS. * ;; MOVI ME_DECIMAL,A8 ;ADD DECIMAL POINT MOVI ME_DASH,A8 ;ADD DASH CALLA STRCAT ;ITS THERE! * * REMAINDER IS IN A3....TURN IT TO 100THS. * MOVI 100,A2 MPYU A2,A3 ;REMAINDER TIMES 100 MOVE A3,A2 ;DIVIDEND IN A2 CALLR ROUNDED_A0_INTO_A2 CALLR A2_100TH ;CAT THE 100THS IN A2 TO THE A7 STRING. NOFRAC2 MOVI COINS_TRAIL,A8 ;ASSUME IT WILL BE "COINS" CALLR SIXP ;TAMPERED? JRZ COIN_SUF2 ;YEP....USE " COINS" MOVE *A6(CS_RMES),A8,L ;FINISH IT OFF WITH RIGHT STRING COIN_SUF2 CALLA STRCAT ;SHOVE THE STRING IN! MOVI M_MONEY,A8 ;MESSAGE FOR THIS LINE PASSED IN A9 CALLA LM_SETUP MOVE @TMPOBJ,A8,L ;POINTER TO MONEY STRING JSRP RIGHT_FINISH ;PUT ON RIGHT MARGIN CALLR STR_FREE MOVE *A13(AT_MESS),A8,L ;SETUP PASSED MESSAGE CALLA LM_SETUP JSRP LEFT_FINISH ;PUT UP PASSED MESSAGE. NO_MONEY2 RETP ************************************************************************** * * * STR_OBJ * * * * THIS IS CALLED TO GET AN OBJECT FOR * * CONCATONATING STRINGS TOGETHER. * * * * A7 POINTS AT NULL STRING * * * * NOTE THAT THIS IS NO LONGER RE-ENTRANT! * * * * YOU MUST CALL STR_FREE BEFORE SLEEPING! * * * ************************************************************************** STR_OBJ PUSH a0,a1,a14 CALLA GETOBJ ;USE AN OBJECT BLOCK FOR STRING MANIPULATION JRNZ STR_O1 * * NO OBJECTS DURING TEST MODE * SETC JRUC STR_OFAIL STR_O1 MOVE A0,@TMPOBJ,L ;SAVE TO FREE LATER MOVE A0,A7 ;THIS IS WHERE IT BELONGS. CLR A0 MOVB A0,*A7 ;MAKE STRING NULL CLRC ;RETURN SUCCESS STR_OFAIL PULL a0,a1,a14 RETS ************************************************************************** * * * ROUNDED_A0_INTO_A2 * * * * THIS DIVIDES A0 INTO A2. IT LEAVES THE RESULT IN A2 * * AND ROUNDS UP IF NECESSARY. * * * ************************************************************************** ROUNDED_A0_INTO_A2 MMTM SP,A3 MOVE A0,A0 ;DIVIDE BY ZERO? JRNZ NDZ MOVE A0,A2 ;RETURN ZERO JRUC NOROUND NDZ MOVE A2,A3 CLR A2 ; AS DIVIDEND DIVU A0,A2 ;DIVIDE AND A2 = PENNIES....A3 = REMAINDER SLL 1,A3 ;SHIFT REMAINDER CMP A0,A3 ;COMPARE TO DIVISOR JRLO NOROUND ;TOO LOW TO ROUND UP INC A2 ;A2 HAS CORRECT PENNIES NOROUND MMFM SP,A3 RETS ************************************************************************** * * * A2_100TH * * * * A7 HAS A STRING TO BE PRINTED. WE HAVE THE * * LAST TWO NUMBERS (NOT TO BE LEAD ZERO BLANKED) IN * * A2. CONCATONATE THEM ONTO THE A7 STRING. * * * * THIS IS USED FOR PENNIES, HOURS AND MINUTES. * * * ************************************************************************** A2_100TH MMTM SP,A8 CMPI 9,A2 ;9 OR LESS REQUIES LEAD ZERO. JRHI NOLEAD MOVI ME_ZERO,A8 ;THROW IN THE LEAD ZERO CALLA STRCAT ;THIS DOES IT! NOLEAD MOVE A2,A8 CALLA HEXTOASC ;MAKE STRING CALLA STRCAT ;PUT IT IN! MMFM SP,A8 RETS ************************************************************************** * * * SUM_COINS * * * * A8 HAS FIRST OF THE 4 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 CALLR 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. * * Z=YES * ************************************************************************** SIXP MMTM SP,A0 MOVI ADJ1ST6,A0 CALLA GET_ADJ ;HAS IT BEEN TAMPERED WITH? MMFM SP,A0 RETS 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 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. MOVI M_HSOFF,A8 ;THIS EFFECTIVELY ERASES LINE! JAUC RIGHT_FINISH DO_P1MIN MOVI AUD1TIME,A0 P1MJ CALLA GET_AUD ;TURN INTO NUMBER MOVE A1,A4 ;MOVE NUMBER TO "HOUR" COMPUTATION REGGIE JRUC DH11 ;AND DO LIKE THE HOURS! DO_P2MIN MOVI AUD2TIME,A0 JRUC P1MJ DO_HOURS CALLR TOT_TIME ;READ OUT THE TOTAL TIME. DH11 MOVE A4,A5 ;A5 HAS RUNNING PLAY TIME CLR A4 ; READY FOR DIVISION MOVK 12,A0 DIVU A0,A4 ;A4 HAS MINUTES CMPI 6,A5 ;ROUND PROPERLY JRLO DH1 ;NOT ENOUGH INC A4 DH1 MOVE A4,A1 ;NOW THIS DIVIDED BY 60 IS WHAT WE NEED jruc P_TIME ;DO IT! DO_AVGT CALLR TOT_TIME ;A3 HAS WEIGHTED TIME DOAVC CALLR GET_PLAYS ;GET TOTAL PLAYS IN A2 MOVE A2,A0 ;STASH IN A0. MOVK 5,A1 ;TURN INTO SECONDS MPYU A1,A3 ;A3 HAS SECONDS OF INTEREST MOVE A3,A2 CALLR ROUNDED_A0_INTO_A2 ;DIVIDE A2 BY PLAYS (AND ROUND) MOVE A2,A1 ;NOW GET IN PLACE FOR P_TIME jruc P_TIME ;DO IT! DO_ELAPSE CALLR TOT_TIME MOVE A4,A3 ;USE ELAPSED TIME JRUC DOAVC ;AND THE REST IS IDENTICAL. keyavg_prt ; movi AUDKEYTOT,a0 ; calla GET_AUD ; move a1,a3 ; movi AUDFULLGAMES,a0 ; calla GET_AUD ; divs a1,a3 ; jruc NUMBER_WORK ;Print it diff_prt movk ADJDIFF,a0 calla GET_ADJ move a0,a3 jruc NUMBER_WORK ;Print it ************************************************************************** * * * P_TIME * * * * THIS IS CALLED TO DISPLAY AN AUDIT IN TIME (0:00) * * FORMAT. THE NUMBER TO BE USED IS PASSED IN A1. * * * ************************************************************************** P_TIME CALLR STR_OBJ ;USE AN OBJECT BLOCK FOR STRING MANIPULATION JRC NO_OBJS ;NO OBJECTS....PRINT NOTHING CLR A0 ;DIVIDEND IN MOVI 60,A2 DIVU A2,A0 ;A0 = "MINUTES"....A1 = "SECONDS CALLA CAT_A0 ;ADD A0 STRING TO A7 BUILD MOVI ME_COLON,A8 CALLA STRCAT ;PUT THE COLON IN. MOVE A1,A2 ;GET "SECONDS" IN A2 CALLR A2_100TH ;AND GET THE 100THS IN. MOVI MESS_AUD_NUM,A8 ;SETUP FOR AUDIT NUMBER CALLA LM_SETUP move *a13(AT_PTR),a6,L ;Get *audit move *a6(AUD_COLOR),a6 MOVE A7,A8 ;PUT STRING CORRECT REGGIE JSRP RIGHT_FINISH ;PRINT THE LINE CALLR STR_FREE ;FREE UP THE OBJECT! NO_OBJS RETP ;NOW RETURN TO CALLER STR_FREE MOVE @TMPOBJ,A0,L ;GET OBJECT BACK JRNZ FREE_IT_NOW .IF DEBUG LOCKUP .ENDIF RETS ;NO OBJECT...RETURN! FREE_IT_NOW jauc FREEOBJ ;AND LET IT GO. ************************************************************************** * * * TOT_TIME * * * * (1 * P1TIME) + (2 * P2TIME) IN A3 * * ELAPSED TIME IN A4 * * * ************************************************************************** TOT_TIME MMTM SP,A0,A1 MOVI AUD1TIME,A0 CALLA GET_AUD MOVE A1,A3 MOVE A1,A4 MOVI AUD2TIME,A0 CALLA GET_AUD ADD A1,A4 ;A4 HAS SIMPLE SUM NOW SLL 1,A1 ;DOUBLE THE PLAYER 2 TIME ADD A1,A3 MMFM SP,A0,A1 RETS ******************************** **** DATA SECTION BEGINS **** .DATA ******************************** * AUDIT TEXT MESS_ERROR MESS_MAC RD7FONT,SPACING07,0,0,ROBO_RED,STRLNRM,0 TXTLINE " ERROR" MESS_AUD_NUM MESS_MAC RD7FONT,SPACING20,367,227,ROBO_YELLOW,STRRNRM,0 MESS_AUD_LINE MESS_MAC RD7FONT,SPACING20,23,227,ROBO_YELLOW,STRLNRM,0 MES_AUD TXTLINE "GAME AUDITS" MES_BOOK TXTLINE "COIN BOOKKEEPING" M_LCOIN TXTLINE "LEFT SLOT COINS" M_CCOIN TXTLINE "CENTER SLOT (3) COINS" M_RCOIN TXTLINE "RIGHT SLOT COINS" M_LCOIN2 TXTLINE "WATCHDOG FEEDINGS" M_CCOIN2 TXTLINE "SELF-CORRECTED CMOS ERRORS" M_RCOIN2 TXTLINE "PROCESS LIST RE-INITIALIZATIONS" M_XCOIN TXTLINE "EXTRA SLOT (4) COINS" M_DBV TXTLINE "BILL VALIDATOR" M_PAIDC TXTLINE "PAID CREDITS" M_SERV TXTLINE "SERVICE CREDITS" M_PLAYS TXTLINE "TOTAL PLAYS" M_HSLEFT TXTLINE "PLAYS UNTIL H.S. RESET" M_HSOFF TXTLINE "OFF" .even M_ELAPSE TXTLINE "AVG. ELAPSED TIME/PLAY" M_MONEY MESS_MAC RD15FONT,SPACING20,367,227,ROBO_WHITE,STRRNRM,0 T_MONEY MESS_MAC RD15FONT,SPACING20,23,227,ROBO_WHITE,STRLNRM,0 TXTLINE "TOTAL COLLECTION" T_MONEY2 MESS_MAC RD15FONT,SPACING20,23,227,ROBO_WHITE,STRLNRM,0 TXTLINE "XRAM COUNT" M_VERINF TXTLINE "031-0" M_LOCKUP TXTLINE "LOCKUPS" M_HIDB TXTLINE "GAMES NOT FINISHED" M_SECBON TXTLINE "WARPS" ************************************************************************** * * * MENU DESCRIPTORS * * * ************************************************************************** * * MAIN TEST MENU * MEN_MAIN .LONG RD7FONT ;FONT .LONG STRCNRM ;CENTER PLEASE .LONG MESSMAIN ;TITLE .WORD ROBO_WHITE ;COLOR OF TITLE .WORD MENU_X ;UL X .WORD MENU_Y-3 ;UL Y .WORD MENU_DY-6 ;VERTICAL SPACING .WORD ROBO_WHITE ;COLOR WHEN NOT SELECTED .WORD 16 ;HEIGHT OF SELECTION BAR .WORD -4 ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE) .WORD BAR_DX ;EXTRA X ON EACH SIDE. .WORD BAR_WID ;WIDTH OF BAR! .WORD ROBO_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 MESS_HARDWARE,GO_HARDWARE,HARDWARE_HELP .LONG MESS_CLOCK,GO_CLOCK,CLOCK_HELP .LONG MESS_VOL,GO_VOL,VOL_HELP .LONG MESS_EXIT,0,EXIT_HELP ;SPECIAL CASE! .LONG 0 ;END * UTILITES MENU GOES LEFT OF CENTER UM_WID EQU 206 UM_X EQU TIT_ULX+GAP+MB_XWID+(UM_WID/2)+C_KLUDGE MEN_UTIL .LONG RD7FONT ;FONT .LONG STRCNRM ;CENTER PLEASE .LONG MESSUTIL ;TITLE .WORD COLOR_WHITE ;COLOR OF TITLE .WORD UM_X ;UL X .WORD MENU_Y-3 ;UL Y .WORD 18 ;VERTICAL SPACING .WORD COLOR_WHITE ;COLOR WHEN NOT SELECTED .WORD 16 ;HEIGHT OF SELECTION BAR .WORD -4 ;DISTANCE OF BAR FROM TOP OF TEXT (NEG) .WORD BAR_DX ;EXTRA X ON EACH SIDE. .WORD UM_WID ;WIDTH OF BAR! .WORD COLOR_DECAY ;TEXT COLOR OF SELECTED ITEM .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_CLPLRECS,DO_CLPLRECS,CLPLRECS_HELP .LONG MESS_DEF_ADJ,DO_DEF_ADJ,DEF_ADJ_HELP .LONG MESS_FACSET,DO_FACSET,FACSET_HELP .LONG opmsg_s,opmsg_main,OPMSG_HELP .LONG MESS_MM,0,BLNK_HELP ;RETURN TO MAIN MENU .LONG 0 ;END * DIAGNOSTIC TESTS MENU MEN_DIAG .LONG RD7FONT ;FONT .LONG STRCNRM ;CENTER PLEASE .LONG MESSDIAG ;TITLE .WORD COLOR_RED ;COLOR OF TITLE .WORD 200 ;UL X .WORD MENU_Y-3 ;UL Y .WORD 20 ;VERTICAL SPACING .WORD COLOR_RED ;COLOR WHEN NOT SELECTED .WORD 16 ;HEIGHT OF SELECTION BAR .WORD -4 ;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 .LONG MESS_SWTEST,GO_SWTEST,BLNK_HELP .LONG diptst_mess,dipsw_test,BLNK_HELP ROM_LEV EQU 3 ;TEST NUMBER FOLLOWING ROM TEST .LONG MESS_CPUTEST,GO_CPUTEST,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_BURN,DO_BURN,BLNK_HELP .LONG MESS_MM,0,BLNK_HELP ;RETURN TO MAIN MENU .LONG 0 STM_WID EQU 250 * 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 200 ;UL Y .WORD MENU_DY ;VERTICAL SPACING .WORD COLOR_BLUE ;COLOR WHEN NOT SELECTED .WORD BAR_HITE ;HEIGHT OF SELECTION BAR .WORD -9 ;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 * MONITOR PATTERNS MEN_PATTERNS .LONG RD7FONT ;FONT .LONG STRCNRM ;CENTER PLEASE .LONG MESSPAT ;TITLE .WORD COLOR_RED ;COLOR OF TITLE .WORD 200 ;UL X (CENTER IT!) .WORD MENU_Y-3 ;UL Y .WORD 23 ;VERTICAL SPACING .WORD COLOR_YELLOW ;COLOR WHEN NOT SELECTED .WORD 16 ;HEIGHT OF SELECTION BAR .WORD -4 ;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_CROSS,BLNK_HELP .LONG MESS_DIAGM,0,BLNK_HELP .LONG MESS_MM,FORCE_MAIN,NO_HELP ;RETURN TO MAIN MENU .LONG 0 * DETAILED COINAGE AVAILABLE (ON 1ST COINAGE PAGE) MEN_DETAIL .LONG RD7FONT ;FONT .LONG STRCNRM ;CENTER PLEASE .LONG MESSPAT ;TITLE .WORD COLOR_YELLOW ;COLOR OF TITLE .WORD 200 ;UL X (CENTER IT!) .WORD 224 ;UL Y .WORD 12 ;VERTICAL SPACING .WORD COLOR_BLUE ;COLOR WHEN NOT SELECTED .WORD 10 ;HEIGHT OF SELECTION BAR .WORD -1 ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE) .WORD BAR_DX ;EXTRA X ON EACH SIDE. .WORD 157 ;WIDTH OF BAR! .WORD COLOR_DECAY ;TEXT COLOR OF SELECTED ITEM .LONG MESS_CLCOIN,0,NO_HELP ;Clr coins .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 MESSDIAG ;TITLE .WORD COLOR_RED ;COLOR OF TITLE .WORD 200 ;UL X .WORD 166 ;UL Y .WORD 19 ;VERTICAL SPACING .WORD COLOR_YELLOW ;COLOR WHEN NOT SELECTED .WORD 16 ;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 * NEXT AUDIT PAGE MEN_AP1 .LONG RD7FONT ;FONT .LONG STRCNRM ;CENTER PLEASE .LONG MESSPAT ;TITLE .WORD ROBO_YELLOW ;COLOR OF TITLE .WORD 200 ;UL X (CENTER IT!) .WORD 226 ;UL Y .WORD 12 ;VERTICAL SPACING .WORD COLOR_BLUE ;COLOR WHEN NOT SELECTED .WORD 10 ;HEIGHT OF SELECTION BAR .WORD -1 ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE) .WORD BAR_DX ;EXTRA X ON EACH SIDE. .WORD 157 ;WIDTH OF BAR! .WORD ROBO_DECAY ;TEXT COLOR OF SELECTED ITEM .LONG MESS_TOPAGE2,0,NO_HELP ;DETAILED SECTION .LONG MESS_MM,FORCE_MAIN,NO_HELP;RETURN TO MAIN MENU .LONG 0 MEN_AP2 .LONG RD7FONT ;FONT .LONG STRCNRM ;CENTER PLEASE .LONG MESSPAT ;TITLE .WORD ROBO_YELLOW ;COLOR OF TITLE .WORD 200 ;UL X (CENTER IT!) .WORD 226 ;UL Y .WORD 12 ;VERTICAL SPACING .WORD COLOR_BLUE ;COLOR WHEN NOT SELECTED .WORD 10 ;HEIGHT OF SELECTION BAR .WORD -1 ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE) .WORD BAR_DX ;EXTRA X ON EACH SIDE. .WORD 157 ;WIDTH OF BAR! .WORD ROBO_DECAY ;TEXT COLOR OF SELECTED ITEM .LONG MESS_TOPAGE2,0,NO_HELP ;DETAILED SECTION .LONG MESS_BACKP1,0,NO_HELP ;DETAILED SECTION .LONG 0 MEN_AP3 .LONG RD7FONT ;FONT .LONG STRCNRM ;CENTER PLEASE .LONG MESSPAT ;TITLE .WORD ROBO_YELLOW ;COLOR OF TITLE .WORD 200 ;UL X (CENTER IT!) .WORD 226 ;UL Y .WORD 12 ;VERTICAL SPACING .WORD COLOR_BLUE ;COLOR WHEN NOT SELECTED .WORD 10 ;HEIGHT OF SELECTION BAR .WORD -1 ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE) .WORD BAR_DX ;EXTRA X ON EACH SIDE. .WORD 157 ;WIDTH OF BAR! .WORD ROBO_DECAY ;TEXT COLOR OF SELECTED ITEM .LONG MESS_MM,FORCE_MAIN,NO_HELP;RETURN TO MAIN MENU .LONG MESS_BACKP1,0,NO_HELP ;DETAILED SECTION .LONG 0 MEN_SOUNDTEST .LONG RD7FONT ;FONT .LONG STRCNRM ;CENTER PLEASE .LONG MESS_SNDTST0 ;TITLE .WORD ROBO_YELLOW ;COLOR OF TITLE .WORD 200 ;UL X (CENTER IT!) .WORD MENU_Y-3 ;UL Y .WORD 20 ;VERTICAL SPACING .word ROBO_RED ;colour when not selected .WORD 16 ;HEIGHT OF SELECTION BAR .WORD -4 ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE) .WORD BAR_DX ;EXTRA X ON EACH SIDE. .WORD 192+6 ;WIDTH OF BAR! .WORD ROBO_DECAY ;TEXT COLOR OF SELECTED ITEM .long MESS_SNDTST1,DO_GENTEST,NO_HELP .long MESS_SNDTST2,DO_PLAYSOUNDS,NO_HELP .long MESS_SNDTST3,0,NO_HELP .long MESS_SNDTST4,FORCE_MAIN,NO_HELP .LONG 0 ************************************************************************** * * * HELP MENUS FOR MAIN MENU * * * ************************************************************************** * HM_JUST 0 = CENTER 1 = LEFT * HM_COLOR * HM_ENTS DIAG_HELP .WORD 0 ;CENTER JUSTIFY .WORD COLOR_BLUE ;COLOR .WORD 6 ;# ENTRIES .LONG MESS_SWTEST .long diptst_mess .LONG MESS_CPUTEST .LONG M_STEST .LONG MESS_PATTERNS .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 UTIL_HELP .WORD 0 ;CENTER JUSTIFY .WORD COLOR_BLUE ;COLOR .WORD 6 ;6 ENTRIES .LONG U_CLR_CRED .LONG U_CLR_COIN .LONG U_CLR_AUD .LONG U_HSRESET .LONG U_CLRRECS .LONG U_FACTORY VOL_HELP .WORD 0 ;CENTER JUSTIFY .WORD COLOR_BLUE ;COLOR .WORD 2 ;2 ENTRIES .LONG MESS_ATV .LONG MESS_OTG EXIT_HELP .WORD 0 ;CENTER JUSTIFY .WORD COLOR_BLUE ;COLOR .WORD 1 ;1 ENTRY .LONG U_END ******************************** * HELP FOR UTILITY MENU CLCRED_HELP .WORD 0 ;CENTER JUSTIFY .WORD COLOR_BLUE ;COLOR .WORD 3 ;# entries .LONG MEH_CLCRED1 .LONG MEH_CLCRED2 .LONG MEH_CLCRED3 CLCOIN_HELP .WORD 0 ;CENTER JUSTIFY .WORD COLOR_BLUE ;COLOR .WORD 4 ;# 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 ;# entries .LONG MEH_CLAUD1 .LONG MEH_CLAUD2 CLPLRECS_HELP .WORD 0 ;CENTER JUSTIFY .WORD COLOR_BLUE ;COLOR .WORD 2 ;# entries .long MEH_CLPLRECS1 .long MEH_CLPLRECS2 HSRES_HELP .WORD 0 ;CENTER JUSTIFY .WORD COLOR_BLUE ;COLOR .WORD 3 ;# entries .LONG MEH_RESHS1 .LONG MEH_RESHS2 .LONG MEH_RESHS3 DEF_ADJ_HELP .WORD 0 ;CENTER JUSTIFY .WORD COLOR_BLUE ;COLOR .WORD 4 ;# entries .LONG MEH_DEFA1 .LONG MEH_DEFA2 .LONG MEH_DEFA3 .LONG MEH_DEFA4 FACSET_HELP .WORD 0 ;CENTER JUSTIFY .WORD COLOR_BLUE ;COLOR .WORD 4 ;# entries .LONG MEH_FAC1 .LONG MEH_FAC2 .LONG MEH_FAC3 .LONG MEH_FAC4 OPMSG_HELP .word 0 ;CENTER JUSTIFY .word COLOR_BLUE ;COLOR .word 3 ;# entries .long opmsgh1_s .long opmsgh2_s .long opmsgh3_s ************************************************************************** * * * TEXT STRINGS * * * ************************************************************************** SIY0 equ 190 SIY1 equ 212 SIY2 equ 224 SIY3 equ 236 SND_INST MESS_MAC RD7FONT,SPACING07,200,SIY1,ROBO_WHITE,STRCNRM,0 .STRING "UP AND DOWN TO SELECT SOUND",0,1 .EVEN MESS_MAC RD7FONT,SPACING07,200,SIY2,ROBO_WHITE,STRCNRM,0 .STRING "PRESS ACTION BUTTON TO PLAY",0,1 .EVEN MESS_MAC RD7FONT,SPACING07,200,SIY3,ROBO_WHITE,STRCNRM,0 .STRING "PRESS START BUTTON TO EXIT",0,0 SND_SETUP MESS_MAC RD15FONT,SPACING20,200,SIY0,ROBO_WHITE,STRCNRM,0 sounds_tab .long SND_ST0,SND_ST1,SND_ST2,SND_ST3 .long SND_ST4,SND_ST5,SND_ST6,SND_ST7 SND_ST0 .string "FACE HIT",0 SND_ST1 .string "WHOOSH",0 SND_ST2 .string "HARD HIT",0 SND_ST3 .string "LONG GRUNT",0 SND_ST4 .string "SHORT GRUNT",0 SND_ST5 .string "DOINK LAUGH",0 SND_ST6 .string "DOINK YELL",0 SND_ST7 .string "MR FUJI",0 .even TEST_SOUND_TAB .word 080h,0B4h,0C7h,0DDh,114h,226h,230h,6528 MESS_SNDTST0 .string "SOUND BOARD TEST",0 MESS_SNDTST1 .string "GENERAL TEST",0 MESS_SNDTST2 .string "PLAY SOUNDS",0 MESS_SNDTST3 .string "BACK TO DIAGNOSTICS MENU",0 MESS_SNDTST4 .string "RETURN TO MAIN MENU",0 MESS_YES .byte "YES",0 .EVEN MESS_NO .byte "NO",0 .EVEN ;MESS_CLEAR_SUBS ; .byte "CLEAR SUBTOTALS" ; .BYTE 0 ; .EVEN ; ;MESS_SUBS_CLEAR ; .byte "SUBTOTALS CLEARED" ; .BYTE 0 ; .EVEN MESS_TOPAGE2 .byte "NEXT AUDIT PAGE" .BYTE 0 .EVEN MESS_BACKP1 .byte "PREVIOUS AUDIT PAGE" .BYTE 0 .EVEN MESS_ANY .byte "ANY BUTTON TO CONTINUE" .BYTE 0 .EVEN MESS_MM .byte "RETURN TO MAIN MENU" .BYTE 0 .EVEN MESSDIAG ;THIS IS TITLE OF PAGE MESS_DIAG .byte "DIAGNOSTIC TESTS" .BYTE 0 .EVEN MESS_COIN_AUD .byte "COIN BOOKKEEPING" .BYTE 0 .EVEN MESS_GAME_AUD .byte "GAME AUDITS" .BYTE 0 .EVEN MESS_GAME_ADJ .byte "GAME ADJUSTMENT" .BYTE 0 .EVEN MESS_UTIL .byte "UTILITIES" .BYTE 0 .EVEN MESS_VOL .byte "VOLUME ADJUST" .BYTE 0 .EVEN MESS_EXIT .byte "EXIT TO GAME OVER" .BYTE 0 .EVEN CH_0 .byte "VIEW COINBOX" .BYTE 0 .EVEN CH_1 .byte "TOTALS AND" .BYTE 0 .EVEN CH_2 .byte "GAMEPLAY COUNTERS" .BYTE 0 .EVEN AH_1 .byte "VIEW GAME" .BYTE 0 .EVEN AH_2 .byte "PLAY STATISTICS" .BYTE 0 .EVEN AD_1 .byte "MAKE CHANGES" .BYTE 0 .EVEN AD_2 .byte "TO PRICING AND" .BYTE 0 .EVEN AD_3 .byte "GAME DIFFICULTY" .BYTE 0 .EVEN MESS_CLCRED U_CLR_CRED .byte "CLEAR CREDITS" .BYTE 0 .EVEN MESS_CCCONF .byte "CREDITS CLEARED" .BYTE 0 .EVEN MESS_CLCOIN U_CLR_COIN .byte "CLEAR COIN COUNTERS" .BYTE 0 .EVEN MESS_CLAUD U_CLR_AUD .byte "CLEAR GAME AUDITS" .BYTE 0 .EVEN MESS_CLPLRECS U_CLRRECS .string "CLEAR PLAYER STATISTICS",0 MESS_HSRESET U_HSRESET .byte "RESET HIGH SCORES" .BYTE 0 .EVEN MESS_HSRES .byte "RESET HIGH SCORES" .BYTE 0 .EVEN MESS_ATV .byte "ADJUST THE VOLUME",0 .even MESS_OTG .byte "OF THE GAME",0 .even ;M_OPMESS_TIT ;U_OPMESS .byte "OPERATOR MESSAGE" ; .BYTE 0 ; .EVEN ;M_SET_OMESS ;;MESS_OPMESS .byte "SET OPERATOR MESSAGE" ; .BYTE 0 ; .EVEN U_BURNIN .byte "BURN-IN TEST",0 .even MESS_BURN .byte "RUN BURN-IN TEST",0 .even MESS_DEF_ADJ TXTLINE "DEFAULT ADJUSTMENTS" U_FACTORY TXTLINE "FACTORY SETTINGS" MESS_FACSET TXTLINE "FULL FACTORY RESTORE" opmsg_s TXTLINE "OPERATOR MESSAGE" opmsgh1_s TXTLINE "ENTER AN OPERATOR" opmsgh2_s TXTLINE "MESSAGE TO" opmsgh3_s TXTLINE "THE PLAYERS" U_END .byte "END TESTING",0 .even MESS_SWTEST .byte "SWITCH TEST",0 .even diptst_mess .byte "DIP SWITCH TEST",0 .even MESS_CPUTEST .byte "CPU BOARD TEST",0 .even M_STEST .byte "SOUND BOARD TEST",0 .even MESSPAT ;HEADER TITLE MESS_PATTERNS .byte "MONITOR PATTERNS",0 .EVEN MESS_RED .byte "RED SCREEN",0 .EVEN MESS_GREEN .byte "GREEN SCREEN",0 .EVEN MESS_BLUE .byte "BLUE SCREEN",0 .EVEN MESS_BARS .byte "COLOR BARS",0 .EVEN MESS_CROSS .byte "CROSSHATCH PATTERN",0 .EVEN MESS_DIAGM .byte "BACK TO DIAGNOSTICS MENU",0 .EVEN * ON FULL RESTORE....THE FOLLOWING IS PRINTED. ;0 = END OF STRING...1 = MORE MESSAGES! MESS_RESET MESS_MAC RD7FONT,SPACING20,200,80,ROBO_RED,STRCNRM,0 MESS_FACFAIL .byte "FAILURE IN CMOS RAM",0,0 .EVEN MESS_FFSCONF MESS_FAC MESS_MAC RD7FONT,SPACING20,200,96,COLOR_WHITE,STRCNRM,0 MESS_DEFCONF .byte "ADJUSTMENTS RESTORED.",0,1 .EVEN MESS_MAC RD7FONT,SPACING20,200,112,COLOR_YELLOW,STRCNRM,0 MESS_CCNCONF .byte "COIN COUNTERS CLEARED.",0,1 .EVEN MESS_MAC RD7FONT,SPACING20,200,128,COLOR_BLUE,STRCNRM,0 MESS_CAUDCONF .byte "GAME AUDITS CLEARED.",0,1 .EVEN MESS_MAC RD7FONT,SPACING20,200,144,COLOR_RED,STRCNRM,0 MESS_HSRCONF .byte "HIGH SCORE TABLE RESET.",0,1 .EVEN MESS_MAC RD7FONT,SPACING20,200,160,COLOR_CYAN,STRCNRM,0 MESS_CLPLRECSCONF .string "PLAYER STATISTICS CLEARED.",0,0 .EVEN MESS_CANCELLED .byte "CANCELLED",0 .EVEN CIN_X EQU (TIT_ULX+TIT_LRX)/2 CR_X EQU CIN_X-34 CIN_Y EQU 86 CIY1 EQU CIN_Y+14 CIY2 EQU CIY1+15 CIY3 EQU CIY2+25 CIY4 EQU CIY3+25 ************************************************************************** * * * STRINGS FOR UTILITY HELP MENUS * * * ************************************************************************** MEH_CLCRED1 .byte "REMOVE ANY",0 .EVEN MEH_CLCRED2 .byte "POSTED CREDITS",0 .EVEN MEH_CLCRED3 .byte "FROM THE GAME",0 .EVEN MEH_CLCOIN1 .byte "CLEAR OUT PAID",0 .EVEN MEH_CLCOIN2 .byte "CREDITS TOTAL",0 .EVEN MEH_CLCOIN3 .byte "AND THE COIN",0 .EVEN MEH_CLCOIN4 .byte "SLOT COUNTERS",0 .EVEN MEH_CLAUD1 .byte "CLEAR GAMEPLAY",0 .EVEN MEH_CLAUD2 .byte "STATISTICS",0 .EVEN MEH_CLPLRECS1 .string "CLEAR PLAYER",0 .even MEH_CLPLRECS2 .string "STATISTICS",0 .even MEH_RESHS1 .byte "RESET HIGH SCORE",0 .EVEN MEH_RESHS2 .byte "TABLE TO FACTORY",0 .EVEN MEH_RESHS3 .byte "DEFAULT VALUES",0 .EVEN MEH_DEFA1 .byte "SET ALL GAME",0 .EVEN MEH_DEFA2 .byte "ADJUSTMENTS TO",0 .EVEN MEH_DEFA3 .byte "THEIR FACTORY",0 .EVEN MEH_DEFA4 .byte "DEFAULT VALUE",0 .EVEN MEH_FAC1 .STRING "RESET ALL AUDITS,",0 .EVEN MEH_FAC2 .STRING "COUNTERS, ADJUSTMENTS,",0 .EVEN MEH_FAC3 .STRING "HIGH SCORES AND",0 .EVEN MEH_FAC4 .STRING "THE PLAYER STATISTICS.",0 .EVEN ************************************************************************** * * * MAIN MENU NAMES * * * ************************************************************************** MESSMAIN .byte "WRESTLEMANIA TEST MENU",0 .even MESSUTIL .byte "UTILITY MENU",0 .even CSELCT ************************************************************************** * * * USA 1: 1 COIN = 1 CREDIT * * * * 2 TO START / 2 TO CONTINUE * * * ************************************************************************** .WORD 1,0,1,0,4,1,0,0,2,2 ;WILLY PRICING .WORD 4 ;4 COINS PER DOLLAR (FOR CALC) .WORD 1 ;DISPLAY COIN FRACTIONS .WORD 1,0,1,0,4 ;COIN VALUE .LONG DOLLAR_LEAD,NULL_ST ;CHARACTER STRINGS. .LONG OCOP ;ONE COIN ONE PLAY .LONG USA_1 ;TITLE OF COIN MODE .LONG Q_Q ;1 COIN PER CREDIT (SERIES OF STRINGS) .WORD SHOW_NONE ;NO PRICING LINE ON 2/1 .LONG USA_QDQ ;QUARTER ************************************************************************** * * * USA 2: 1 COIN = 1 CREDIT * * * * 2 TO START / 1 TO CONTINUE * * * ************************************************************************** .WORD 1,0,1,0,4,1,0,0,2,1 ;WILLY PRICING .WORD 4 ;4 COINS PER DOLLAR (FOR CALC) .WORD 1 ;DISPLAY COIN FRACTIONS .WORD 1,0,1,0,4 ;COIN VALUE .LONG DOLLAR_LEAD,NULL_ST ;CHARACTER STRINGS. .LONG OCOP ;ONE COIN ONE PLAY .LONG USA_2 ;TITLE OF COIN MODE .LONG Q_Q ;1 COIN PER CREDIT (SERIES OF STRINGS) .WORD SHOW_NONE ;NO PRICING LINE ON 2/1 .LONG USA_QDQ ;QUARTER ************************************************************************** * * * USA 3 COINAGE IS 25 CENT * * 1 TO START / 1 TO CONTINUE * * * ************************************************************************** .WORD 1,0,1,0,4,1,0,0,1,1 ;WILLY PRICING .WORD 4 ;4 COINS PER DOLLAR (FOR CALC) .WORD 1 ;DISPLAY COIN FRACTIONS .WORD 1,0,1,0,4 ;COIN VALUE .LONG DOLLAR_LEAD,NULL_ST ;CHARACTER STRINGS. .LONG CSM_LIST ;ONE COIN ONE PLAY .LONG USA_3 ;TITLE OF COIN MODE .LONG Q_Q ;1 COIN PER CREDIT (SERIES OF STRINGS) .WORD SHOW_NONE ;NO PRICING LINE ON 2/1 .LONG USA_QDQ ;QUARTER ************************************************************************** * * * USA 4 COINAGE IS 50 CENT 3/$1.00 * * 1 TO START / 1 TO CONTINUE * * * ************************************************************************** .WORD 1,0,1,0,4,2,4,0,1,1 ; WILLY PRICING .WORD 4 ; 4 COINS PER DOLLAR (FOR CALC) .WORD 1 ; DISPLAY COIN FRACTIONS .WORD 1,0,1,0,4 ; COIN VALUE .LONG DOLLAR_LEAD,NULL_ST ; CHARACTER STRINGS. .LONG CSM_LIST ; PRINT THE 2 THE OP SEES .LONG USA_4 ; TITLE OF COIN MODE .LONG DOLLAR_3 ; 1 COIN PER CREDIT (SERIES OF STRINGS) .WORD SHOW_2 ; SHOW LINE 2 .LONG USA_QDQ ; QUARTER ************************************************************************** * * * ADDITION "FULL PRICE" COINAGES * * * ************************************************************************** .IF FULLPRICE ************************************************************************** * * * USA 5 COINAGE IS 50 CENT 4/$1.00 * * 2 TO START / 1 TO CONTINUE * * * ************************************************************************** .WORD 3,0,3,0,12,4,12,6,2,1 ;WILLY PRICING .WORD 4 ;4 COINS PER DOLLAR (FOR CALC) .WORD 0 ;NO COIN FRACTIONS .WORD 1,0,1,0,4 ;COIN VALUE .LONG DOLLAR_LEAD,NULL_ST ;CHARACTER STRINGS. .LONG CSM_LIST ;PRINT THE 2 THE OP SEES .LONG USA_5 ;TITLE OF COIN MODE .LONG DOLLAR_4 ;1 COIN PER CREDIT (SERIES OF STRINGS) .WORD SHOW_2 ;SHOW LINE 2 .LONG USA_QDQ ;QUARTER * * USA 6 50 PER CREDIT * .WORD 1,0,1,0,4,2,0,0,1,1 ; WILLY PRICING .WORD 4 ;4 COINS PER DOLLAR (FOR CALC) .WORD 1 ;DISPLAY COIN FRACTIONS .WORD 1,0,1,0,4 ;COIN VALUE .LONG DOLLAR_LEAD,NULL_ST ;CHARACTER STRINGS. .LONG CSM_LIST ;2 COINS PER PLAYER .LONG USA_6 ;TITLE OF COIN MODE .LONG F_F_1S1C ;2 COINS PER CREDIT (SERIES OF STRINGS) .WORD SHOW_1 ;SHOW LINE 1 .LONG USA_QDQ ;QUARTER * * USA 7 COINAGE IS 50 CENT 3/$1.00 * .WORD 1,0,1,0,4,2,4,0,1,1 ; WILLY PRICING .WORD 4 ;4 COINS PER DOLLAR (FOR CALC) .WORD 0 ;DISPLAY COIN FRACTIONS .WORD 1,0,1,0,4 ;COIN VALUE .LONG DOLLAR_LEAD,NULL_ST ;CHARACTER STRINGS. .LONG CSM_LIST ;PRINT THE 2 THE OP SEES .LONG USA_7 ;TITLE OF COIN MODE .LONG UFS3D ;1 COIN PER CREDIT (SERIES OF STRINGS) .WORD SHOW_2 ;SHOW LINE 2 .LONG USA_QDQ ;QUARTER * * USA 8 COINAGE IS 50 CENT 4/$1.00 * * L, C,R, 4,DBV,U/C,U/B,MINUNITS /START /CONTINUE .WORD 3,0,3,0,12,4,12,6,2,2 ;WILLY PRICING .WORD 4 ;4 COINS PER DOLLAR (FOR CALC) .WORD 0 ;NO COIN FRACTIONS .WORD 1,0,1,0,4 ;COIN VALUE .LONG DOLLAR_LEAD,NULL_ST ;CHARACTER STRINGS. .LONG CSM_LIST ;PRINT THE 2 THE OP SEES .LONG USA_8 ;TITLE OF COIN MODE .LONG UFS4D ;1 COIN PER CREDIT (SERIES OF STRINGS) .WORD SHOW_2 ;SHOW LINE 2 .LONG USA_QDQ ;QUARTER * USA 9 COINAGE IS 50 CENT 4/$1.00 * * L, C,R, 4,DBV,U/C,U/B,MINUNITS /START /CONTINUE .WORD 1,0,1,0,4,1,0,1,3,2 ;WILLY PRICING .WORD 4 ;4 COINS PER DOLLAR (FOR CALC) .WORD 0 ;NO COIN FRACTIONS .WORD 1,0,1,0,4 ;COIN VALUE .LONG DOLLAR_LEAD,NULL_ST ;CHARACTER STRINGS. .LONG CSM_LIST ;PRINT THE 2 THE OP SEES .LONG USA_9 ;TITLE OF COIN MODE .LONG Q_Q ;1 COIN PER CREDIT (SERIES OF STRINGS) .WORD SHOW_2 ;SHOW LINE 2 .LONG USA_QDQ ;QUARTER * USA 10 COINAGE IS 50 CENT 4/$1.00 * .WORD 1,0,1,0,4,1,0,1,3,3 ;WILLY PRICING .WORD 4 ;4 COINS PER DOLLAR (FOR CALC) .WORD 0 ;NO COIN FRACTIONS .WORD 1,0,1,0,4 ;COIN VALUE .LONG DOLLAR_LEAD,NULL_ST ;CHARACTER STRINGS. .LONG CSM_LIST ;PRINT THE 2 THE OP SEES .LONG USA_10 ;TITLE OF COIN MODE .LONG Q_Q ;1 COIN PER CREDIT (SERIES OF STRINGS) .WORD SHOW_2 ;SHOW LINE 2 .LONG USA_QDQ ;QUARTER .ENDIF * * USA ELECTRONIC * .WORD 20,2,5,1,20,5,0,0,2,2 ; L,C,R,4,U/C,U/B,MINUNITS .WORD 20 ; COINS/DOLLAR .WORD 1 ; DISPLAY FRACTIONS .WORD 20,2,5,1,20 ; L,C,R,4 .LONG DOLLAR_LEAD,NULL_ST ; CHARACTER STRINGS. .LONG USA_ELECTRONIC ; SPECIAL MESSAGE .LONG USA_ELECTITLE ; TITLE OF COIN MODE .LONG USA_EL ; SETTINGS DESCRIPTION .WORD SHOW_2 ; LINES TO SHOW ON .LONG USA_ESLOT ; QUARTER * * GERMAN 1 COINAGE IS 6 PLAYS FOR 5 DM * 2 TO START, 2 TO CONTINUE * .WORD 6,0,30,0,0,5,0,0,2,2 ;WILLY PRICING .WORD 1 ;DMS HAVE NO FRACTIONS .WORD 0 ;DON'T DISPLAY COIN FRACTIONS .WORD 1,0,5,0,0 ;COIN VALUE .LONG NULL_ST,DM_TRAIL ;CHARACTER STRINGS. .LONG CSM_LIST .LONG GERMAN_1 ;TITLE OF COIN MODE .LONG DM_6 ;1 COIN PER CREDIT (SERIES OF STRINGS) .WORD SHOW_2 .LONG GERMAN_15 ;1 DM / 5 DM G1SEL EQU ($-CSELCT)/CS_SIZE ;COIN SELECT VALUE FOR GERMAN 1 * * GERMAN 2 COINAGE IS 7 PLAYS FOR 5 DM * 2 TO START, 1 TO CONTINUE * .WORD 6,0,30,0,0,5,30,0,2,1 ;WILLY PRICING .WORD 1 ;DMS HAVE NO FRACTIONS .WORD 0 ;DON'T DISPLAY COIN FRACTIONS .WORD 1,0,5,0,0 ;COIN VALUE .LONG NULL_ST,DM_TRAIL ;CHARACTER STRINGS. .LONG CSM_LIST .LONG GERMAN_2 ;TITLE OF COIN MODE .LONG DM_7 ;1 COIN PER CREDIT (SERIES OF STRINGS) .WORD SHOW_2 .LONG GERMAN_15 ;1 DM / 5 DM * * GERMAN 3 COINAGE IS 8 PLAYS FOR 5 DM * 2 TO START, 1 TO CONTINUE * .WORD 7,0,35,0,0,5,35,0,2,1 ;WILLY PRICING .WORD 1 ;DMS HAVE NO FRACTIONS .WORD 0 ;DON'T DISPLAY COIN FRACTIONS .WORD 1,0,5,0,0 ;COIN VALUE .LONG NULL_ST,DM_TRAIL ;CHARACTER STRINGS. .LONG CSM_LIST .LONG GERMAN_3 ;TITLE OF COIN MODE .LONG DM_8 ;1 COIN PER CREDIT (SERIES OF STRINGS) .WORD SHOW_2 .LONG GERMAN_15 ;1 DM / 5 DM * * GERMAN 4 COINAGE IS 5 PLAYS FOR 5 DM * 2 TO START, 1 TO CONTINUE * .WORD 1,0,5,0,0,1,0,0,2,1 ;WILLY PRICING .WORD 1 ;DMS HAVE NO FRACTIONS .WORD 0 ;DON'T DISPLAY COIN FRACTIONS .WORD 1,0,5,0,0 ;COIN VALUE .LONG NULL_ST,DM_TRAIL ;CHARACTER STRINGS. .LONG CSM_LIST .LONG GERMAN_4 ;TITLE OF COIN MODE .LONG DM_5 ;1 COIN PER CREDIT (SERIES OF STRINGS) .WORD SHOW_2 .LONG GERMAN_15 ;1 DM / 5 DM * * GERMAN 5 COINAGE IS 6 PLAYS FOR 5 DM * 2 TO START, 1 TO CONTINUE * .WORD 6,0,30,0,0,5,0,0,2,1 ;WILLY PRICING .WORD 1 ;DMS HAVE NO FRACTIONS .WORD 0 ;DON'T DISPLAY COIN FRACTIONS .WORD 1,0,5,0,0 ;COIN VALUE .LONG NULL_ST,DM_TRAIL ;CHARACTER STRINGS. .LONG CSM_LIST .LONG GERMAN_5 ;TITLE OF COIN MODE .LONG DM_6 ;1 COIN PER CREDIT (SERIES OF STRINGS) .WORD SHOW_2 .LONG GERMAN_15 ;1 DM / 5 DM * * GERMAN ELECTRONIC * 2 TO START, 2 TO CONTINUE * .WORD 60,12,24,0,0,10,0,0,2,2 ; L,C,R,4,U/C,U/B,MINUNITS .WORD 1 ; COINS/DOLLAR .WORD 0 ; DISPLAY FRACTIONS .WORD 5,1,2,0,0 ; L,C,R,4 .LONG NULL_ST,DM_TRAIL ;CHARACTER STRINGS. .LONG GERMAN_ELECTRONIC ; SPECIAL MESSAGE .LONG GERMAN_ELECTITLE ; TITLE OF COIN MODE .LONG DM112265 ; SETTINGS DESCRIPTION .WORD SHOW_3 ; LINES TO SHOW ON .LONG GERMAN_ESLOT ; QUARTER **************************************************************************** **************************************************************************** ******* THE FOLLOWING NUMBERS ARE FIGURED FOR THE FRENCH SETTINGS ******* REQUESTED BY DIMITRI K. OF P.S.D. ******* ******* 1F 5F 10F U/C U/B M/U ******* -------------------------------- ******* 1/2F 3/5F 7/10F 3 15 30 5 30 0 ******* 1/3F 2/5F 5/10F 2 10 20 5 20 0 ******* 1/5F 3/10F 1 5 10 5 10 0 ******* 1/5F 3/10F 7/20F 3 15 30 10 60 15 ******* 2/5F 4/10F 9/20F 2 10 20 5 40 10 ******* 2/5F 5/10F 11/20F 1 5 10 2 20 5 ******* * * * FRENCH 1 2/5F 5/10F * * .WORD 2,0,4,0,0,1,4,0,2,2 ; 2/5F 5/10F .WORD 1 ;1 FRANC PER FRANC .WORD 0 ;DON'T DISPLAY COIN FRACTIONS .WORD 5,0,10,0,0 ;COIN VALUE .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. .LONG CSM_LIST ;WAIT TILL HE SAYS "IF IT IS NOT POSSIBLE" .LONG FRENCH_1 ;TITLE OF COIN MODE .LONG FIVE_10 ;1 COIN PER CREDIT (SERIES OF STRINGS) .WORD SHOW_2 .LONG FRENCH510 F1SEL EQU ($-CSELCT)/CS_SIZE ;COIN SELECT VALUE FOR FRENCH 1 * * FRENCH 2 2/5F 4/10F * * .WORD 2,0,4,0,0,1,0,0,2,1 ; 2/5F 4/10F .WORD 1 ;1 FRANC PER FRANC .WORD 0 ;DON'T DISPLAY COIN FRACTIONS .WORD 5,0,10,0,0 ;COIN VALUE .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. .LONG CSM_LIST ;WAIT TILL HE SAYS "IF IT IS NOT POSSIBLE" .LONG FRENCH_2 ;TITLE OF COIN MODE .LONG FOUR_10 ;1 COIN PER CREDIT (SERIES OF STRINGS) .WORD SHOW_2 .LONG FRENCH510 * * FRENCH 3 1/5F 3/10F * * .WORD 1,0,2,0,0,1,2,0,2,1 ;1/5F 3/10F .WORD 1 ;1 FRANC PER FRANC .WORD 0 ;DON'T DISPLAY COIN FRACTIONS .WORD 5,0,10,0,0 ;COIN VALUE .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. .LONG CSM_LIST ;WAIT TILL HE SAYS "IF IT IS NOT POSSIBLE" .LONG FRENCH_3 ;TITLE OF COIN MODE .LONG THREE_10 ;1 COIN PER CREDIT (SERIES OF STRINGS) .WORD SHOW_2 .LONG FRENCH510 * * FRENCH 4 1/5F 2/10F * * .WORD 1,0,2,0,0,1,0,0,2,1 ;1/5F 2/10F .WORD 1 ;1 FRANC PER FRANC .WORD 0 ;DON'T DISPLAY COIN FRACTIONS .WORD 5,0,10,0,0 ;COIN VALUE .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. .LONG CSM_LIST ;WAIT TILL HE SAYS "IF IT IS NOT POSSIBLE" .LONG FRENCH_4 ;TITLE OF COIN MODE .LONG TWO_10 ;1 COIN PER CREDIT (SERIES OF STRINGS) .WORD SHOW_1 .LONG FRENCH510 .IF FULLPRICE * * * FRENCH 5 2/5F 5/10F 11/2 X 10F * * .WORD 5,0,10,0,0,2,20,0,2,1 ;2/5F 5/10F 11/20F .WORD 1 ;1 FRANC PER FRANC .WORD 0 ;DON'T DISPLAY COIN FRACTIONS .WORD 5,0,10,0,0 ;COIN VALUE .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. .LONG CSM_LIST ;WAIT TILL HE SAYS "IF IT IS NOT POSSIBLE" .LONG FRENCH_5 ;TITLE OF COIN MODE .LONG FIVE_10_11 ;1 COIN PER CREDIT (SERIES OF STRINGS) .WORD SHOW_3 ;USE LINE 3 WHEN ONLY 1 WILL FIT .LONG FRENCH510 * * FRENCH 6 2/5F 4/10F 9/2 X 10F * * .WORD 2,0,4,0,0,1,8,0,2,1 ;2/5F 4/10F 9/20F .WORD 1 ;1 FRANC PER FRANC .WORD 0 ;DON'T DISPLAY COIN FRACTIONS .WORD 5,0,10,0,0 ;COIN VALUE .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. .LONG CSM_LIST ;WAIT TILL HE SAYS "IF IT IS NOT POSSIBLE" .LONG FRENCH_6 ;TITLE OF COIN MODE .LONG FOUR_10_9 ;1 COIN PER CREDIT (SERIES OF STRINGS) .WORD SHOW_3 ;USE LINE 3 WHEN ONLY 1 WILL FIT .LONG FRENCH510 * * FRENCH 7 1/5F 3/10F 7/2 X 10F * * .WORD 3,0,6,0,0,2,12,0,2,1 ;1/5F 3/10F 7/20F .WORD 1 ;1 FRANC PER FRANC .WORD 0 ;DON'T DISPLAY COIN FRACTIONS .WORD 5,0,10,0,0 ;COIN VALUE .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. .LONG CSM_LIST ;WAIT TILL HE SAYS "IF IT IS NOT POSSIBLE" .LONG FRENCH_7 ;TITLE OF COIN MODE .LONG THREE_10_7 ;1 COIN PER CREDIT (SERIES OF STRINGS) .WORD SHOW_3 ;USE LINE 3 WHEN ONLY 1 WILL FIT .LONG FRENCH510 * * FRENCH 8 1/5F 2/10F 5/2 X 10F * * .WORD 1,0,2,0,0,1,4,0,2,1 ;1/5F 2/10F 5/20F .WORD 1 ;1 FRANC PER FRANC .WORD 0 ;DON'T DISPLAY COIN FRACTIONS .WORD 5,0,10,0,0 ;COIN VALUE .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. .LONG CSM_LIST ;WAIT TILL HE SAYS "IF IT IS NOT POSSIBLE" .LONG FRENCH_8 ;TITLE OF COIN MODE .LONG TWO_10_5 ;1 COIN PER CREDIT (SERIES OF STRINGS) .WORD SHOW_3 ;USE LINE 3 WHEN ONLY 1 WILL FIT .LONG FRENCH510 * * FRENCH 9 1/3 X 1F 2/5F * * COIN SLOTS ARE 1F -- 5F * * .WORD 2,0,10,0,0,5,0,0,2,1 ;1/3X1F 2/5F .WORD 1 ;1 FRANC PER FRANC .WORD 0 ;DON'T DISPLAY COIN FRACTIONS .WORD 1,0,5,0,0 ;COIN VALUE .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. .LONG CSM_LIST ;WAIT TILL HE SAYS "IF IT IS NOT POSSIBLE" .LONG FRENCH_9 ;TITLE OF COIN MODE .LONG F1325 ;1 COIN PER CREDIT (SERIES OF STRINGS) .WORD SHOW_2 ;USE LINE 2 WHEN ONLY 1 WILL FIT .LONG FRENCH1F5F * * FRENCH 10 1/2 X 1F 3/5F * * COIN SLOTS ARE 1F -- 5F * * .WORD 3,0,15,0,0,5,0,0,2,1 ;1/2X1F 3/5F .WORD 1 ;1 FRANC PER FRANC .WORD 0 ;DON'T DISPLAY COIN FRACTIONS .WORD 1,0,5,0,0 ;COIN VALUE .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. .LONG CSM_LIST ;WAIT TILL HE SAYS "IF IT IS NOT POSSIBLE" .LONG FRENCH_10 ;TITLE OF COIN MODE .LONG F1235 ;1 COIN PER CREDIT (SERIES OF STRINGS) .WORD SHOW_2 ;USE LINE 2 WHEN ONLY 1 WILL FIT .LONG FRENCH1F5F * * FRENCH 11 1/3 X 1F 2/5F 5/2 X 5F * * COIN SLOTS ARE 1F -- 5F * * .WORD 2,0,10,0,0,5,20,0,2,1 ;1/3X1F 2/5F 5/10F .WORD 1 ;1 FRANC PER FRANC .WORD 0 ;DON'T DISPLAY COIN FRACTIONS .WORD 1,0,5,0,0 ;COIN VALUE .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. .LONG CSM_LIST ;WAIT TILL HE SAYS "IF IT IS NOT POSSIBLE" .LONG FRENCH_11 ;TITLE OF COIN MODE .LONG F13255 ;1 COIN PER CREDIT (SERIES OF STRINGS) .WORD SHOW_3 ;USE LINE 2 WHEN ONLY 1 WILL FIT .LONG FRENCH1F5F * * FRENCH 12 1/2 X 1F 3/5F 7 / 2 X 5F * * COIN SLOTS ARE 1F -- 5F * * .WORD 3,0,15,0,0,5,30,0,2,1 ;1/2X1F 3/5F 7/10F .WORD 1 ;1 FRANC PER FRANC .WORD 0 ;DON'T DISPLAY COIN FRACTIONS .WORD 1,0,5,0,0 ;COIN VALUE .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. .LONG CSM_LIST ;WAIT TILL HE SAYS "IF IT IS NOT POSSIBLE" .LONG FRENCH_12 ;TITLE OF COIN MODE .LONG F12355 ;1 COIN PER CREDIT (SERIES OF STRINGS) .WORD SHOW_3 ;USE LINE 2 WHEN ONLY 1 WILL FIT .LONG FRENCH1F5F .ENDIF * * FRANCE ELECTRONIC * .WORD 1,15,6,0,0,3,0,0,2,2 ; L,C,R,4,U/C,U/B,MINUNITS .WORD 1 ; COINS/DOLLAR .WORD 0 ;DON'T DISPLAY COIN FRACTIONS .WORD 1,10,5,0,0 ; L,C,R,4 .LONG NULL_ST,FRANC_TRAIL ; CHARACTER STRINGS. .LONG FRANCE_ELECTRONIC ; SPECIAL MESSAGE .LONG FRENCH_ELECTITLE ; TITLE OF COIN MODE .LONG F13255 ;COIN PAGE DESCRIPTION .WORD SHOW_3 ;THREE LINES FOR THIS BABY .LONG FRANCE_ESLOT ; QUARTER * * CANADA COINAGE IS 50 CENT 3/$1.00 * .WORD 1,0,4,0,4,2,4,0,2,2 ;WILLY PRICING .WORD 4 ;4 COINS PER DOLLAR (FOR CALC) .WORD 1 ;DISPLAY COIN FRACTIONS .WORD 1,0,4,0,4 ;COIN VALUE .LONG DOLLAR_LEAD,NULL_ST ;CHARACTER STRINGS. .LONG CSM_LIST ;PRINT THE 2 THE OP SEES .LONG CANADA ;TITLE OF COIN MODE .LONG CAN_1503D ;1 PLAY 50, 3 FOR A DOLLAR .WORD SHOW_2 ;SHOW LINE 2 .LONG CAN_QD ;QUARTER .IF FULLPRICE * SWISS 1 COINAGE IS 6 PLAYS FOR 5 FRANC .WORD 6,0,30,0,0,5,0,0,2,2 ;WILLY PRICING .WORD 1 ;FRANCS HAVE NO FRACTIONS .WORD 0 ;DON'T DISPLAY COIN FRACTIO .WORD 1,0,5,0,0 ;COIN VALUE .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. .LONG CSM_LIST .LONG SWISS_1 ;TITLE OF COIN MODE .LONG SFRANC_6 ;1 COIN PER CREDIT (SERIES .WORD SHOW_2 .LONG SWISS15 * SWISS 2 COINAGE IS 7 PLAYS FOR 5 FRANC .WORD 6,0,30,0,0,5,30,0,2,2 ;WILLY PRICING .WORD 1 ;FRANCS HAVE NO FRACTIONS .WORD 0 ;DON'T DISPLAY COIN FRACTIO .WORD 1,0,5,0,0 ;COIN VALUE .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. .LONG CSM_LIST .LONG SWISS_2 ;TITLE OF COIN MODE .LONG SFRANC_7 ;1 COIN PER CREDIT (SERIES .WORD SHOW_2 .LONG SWISS15 * SWISS 3 COINAGE IS 8 PLAYS FOR 5 FRANC .WORD 7,0,35,0,0,5,35,0,2,2 ;WILLY PRICING .WORD 1 ;FRANCS HAVE NO FRACTIONS .WORD 0 ;DON'T DISPLAY COIN FRACTIO .WORD 1,0,5,0,0 ;COIN VALUE .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. .LONG CSM_LIST .LONG SWISS_3 ;TITLE OF COIN MODE .LONG SFRANC_8 ;1 COIN PER CREDIT (SERIES .WORD SHOW_2 .LONG SWISS15 * ITALY COINAGE IS 1 PLAYS FOR 500 LIRE .WORD 1,0,1,0,0,1,0,0,2,2 ;WILLY PRICING .WORD 1 ;LIRE HAVE NO FRACTIONS .WORD 0 ;DON'T DISPLAY COIN FRACTIO ; .WORD 500,0,500,0,0 ;COIN VALUE .WORD 1,0,1,0,0 ;COIN VALUE .LONG NULL_ST,LIRE_TRAIL ;CHARACTER STRINGS. .LONG CSM_LIST .LONG ITALY_1 ;TITLE OF COIN MODE .LONG P1500L ;1 COIN PER CREDIT (SERIES OF ST .WORD SHOW_1 .LONG ITALYLIRE * U.K. ELECTRONIC 1 * CENTER = 20P XTRA = 10P LEFT = 1P RIGHT = 50P * 1 PLAY / 50 P * 3 PLAY / 1 POUND * L, C, R, 4,DBV,U/C,U/B,MINUNITS /START /CONTINUE .WORD 10, 2, 5, 1, 0, 5, 10,0,1,1 ;NUMBERS FOR 1L/20P/50P/10P .WORD 10 ;PENCE SUCK! .WORD 0 ;DON'T DISPLAY COIN FRACTIO .WORD 10,2,5,1,0 ;COIN VALUE .LONG NULL_ST,POUND_TRAIL ;CHARACTER STRINGS. .LONG UK_ELECTRONIC1 ;SPECIAL TITLE W/ POUND .LONG UK_1 ;TITLE OF COIN MODE .LONG UK_420 ; .WORD SHOW_2 .LONG UK_ELEC * U.K. ELECTRONIC 2 (CCU) * CREDITS ARE AWARDED 1 COIN / 1 PLAY..... * CCU ACCUMULATES 4 COINS AND STROKES US AS FOLLOWS: * 1 PLAY / 50 P * 2 PLAY / 1 POUND * L, C, R, 4,DBV,U/C,U/B,MINUNITS /START /CONTINUE .WORD 10, 2, 5, 1, 0, 5, 0,0,1,1 ;NUMBERS FOR 1L/20P/50P/10P .WORD 10 ;PENCE ARE FRACTIONS! .WORD 0 ;DON'T DISPLAY COIN FRACTIO .WORD 10,2,5,1,0 ;COIN VALUE .LONG NULL_ST,COINS_TRAIL ;CHARACTER STRINGS. .LONG UK_ELECTRONIC2 ;SPECIAL TITLE W/ POUND .LONG UK_2 ;TITLE OF COIN MODE .LONG UK_320 ; .WORD SHOW_2 .LONG UK_ELEC * U.K. 3 COINAGE IS 1 PLAY FOR 30P 2 FOR 50P 5 FOR 1.00 .WORD 20,4,10,2,0,5,20,0,1,1 ;WILLY PRICING .WORD 10 ;PENCE ARE FRACTIONS! .WORD 0 ;DON'T DISPLAY COIN FRACTIO .WORD 10,2,5,1,0 ;COIN VALUE .LONG NULL_ST,POUND_TRAIL ;CHARACTER STRINGS. .LONG UK_ELECTRONIC3 ;SPECIAL TITLE W/ POUND .LONG UK_3 ;TITLE OF COIN MODE .LONG UK_120 ;1 COIN PER CREDIT (SERIES OF ST .WORD SHOW_2 .LONG UK_ELEC * U.K. 4 .WORD 10, 0, 5, 0, 0, 5, 10,0,1,1 ;NUMBERS FOR 1L/20P/50P/10P .WORD 10 ;PENCE SUCK! .WORD 0 ;DON'T DISPLAY COIN FRACTIO .WORD 10,0,5,0,0 ;COIN VALUE .LONG NULL_ST,POUND_TRAIL ;CHARACTER STRINGS. .LONG UK_ELECTRONIC1 .LONG UK_4 ;TITLE OF COIN MODE .LONG UK_220 ; .WORD SHOW_2 .LONG UK2050 * U.K. 5 * 1 PLAY / 50 P * 2 PLAY / 1 POUND * L, C, R, 4,DBV,U/C,U/B,MINUNITS /START /CONTINUE .WORD 10, 0, 5, 0, 0, 5, 0,0,1,1 ;NUMBERS FOR 1L/20P/50P/10P .WORD 10 ;PENCE ARE FRACTIONS! .WORD 0 ;DON'T DISPLAY COIN FRACTIO .WORD 10,0,5,0,0 ;COIN VALUE .LONG NULL_ST,COINS_TRAIL ;CHARACTER STRINGS. .LONG UK_ELECTRONIC2 .LONG UK_5 ;TITLE OF COIN MODE .LONG UK_520 ; .WORD SHOW_2 .LONG UK2050 * DONE BECAUSE WE LEARNED SOME NEW SPANISH SHIT! * SPAIN 1 1 PLAY / 100 PESETA 6 PLAY / 500 PESETA .WORD 1,0,5,0,0,1,5,0,2,2 ;WILLY PRICING .WORD 1 ;NO FRACTIONS .WORD 0 ;DON'T DISPLAY COIN FRACTIO .WORD 1,0,5,0,0 ;COIN VALUE .LONG NULL_ST,PESETA_TRAIL ;CHARACTER STRINGS. .LONG CSM_LIST .LONG SP_1 ;TITLE OF COIN MODE .LONG SP_5100 ;1 COIN PER CREDIT (SERIES OF ST .WORD SHOW_2 .LONG PESETA100 * SPAIN 2 1 PLAY / 25 PESETA 5 PLAY / 100 PESETA .WORD 1,0,5,0,0,1,0,0,2,2 ;WILLY PRICING .WORD 1 ;NO FRACTIONS .WORD 0 ;DON'T DISPLAY COIN FRACTIO .WORD 1,0,5,0,0 ;COIN VALUE .LONG NULL_ST,PESETA_TRAIL ;CHARACTER STRINGS. .LONG CSM_LIST .LONG SP_2 ;TITLE OF COIN MODE .LONG SP_4100 ;1 COIN PER CREDIT (SERIES OF ST .WORD SHOW_2 .LONG PESETA100 * AUSTRALIA 1 1 PLAY / 3 X 20 CENTS 2 FOR $1.00 .WORD 2,0,10,0,0,5,0,0,2,2 ;WILLY PRICING .WORD 5 ;DOLLARS .WORD 0 ;DON'T SHOW FRACTIONS FOR T .WORD 1,0,5,0,0 ;COIN VALUE .LONG DOLLAR_LEAD,NULL_ST ;CHARACTER STRINGS. .LONG CSM_LIST .LONG AUS_1 ;TITLE OF COIN MODE .LONG AU_60 ;1 COIN PER CREDIT (SERIES OF S .WORD SHOW_2 .LONG AUST20C * * AUSTRALIA 2 1 PLAY / $1.00 2 PLAYS FOR $2.00 * .WORD 1,0,5,0,0,5,0,0,1,1 ; WILLY PRICING .WORD 5 ; DOLLARS .WORD 1 ; SHOW FRACTIONS FOR THE 3 C .WORD 1,0,5,0,0 ; COIN VALUE .LONG DOLLAR_LEAD,NULL_ST ; CHARACTER STRINGS. .LONG CSM_LIST .LONG AUS_2 ; TITLE OF COIN MODE .LONG AU_100 ; 1 COIN PER CREDIT (SERIES OF ST .WORD SHOW_2 .LONG AUST20C .ENDIF * JAPAN 1 1 PLAY / 100 YEN .WORD 1,0,1,0,0,1,0,0,2,2 ;WILLY PRICING .WORD 1 ;DOLLARS .WORD 1 ;FRACTIONS OK .WORD 1,0,1,0,0 ;COIN VALUE .LONG NULL_ST,YEN_TRAIL ;CHARACTER STRINGS. .LONG CSM_LIST .LONG JAP_1 ;TITLE OF COIN MODE .LONG JAP_100 ;1 COIN PER CREDIT (SERIES OF ST .WORD SHOW_1 .LONG YEN100 .IF FULLPRICE * JAPAN 2 2 PLAY / 100 YEN .WORD 2,0,2,0,0,1,0,0,2,2 ;WILLY PRICING .WORD 1 ;DOLLARS .WORD 1 ;FRACTIONS OK .WORD 1,0,1,0,0 ;COIN VALUE .LONG NULL_ST,YEN_TRAIL ;CHARACTER STRINGS. .LONG CSM_LIST .LONG JAP_2 ;TITLE OF COIN MODE .LONG JAP_200 ;1 COIN PER CREDIT (SERIES OF ST .WORD SHOW_1 .LONG YEN100 * AUSTRIA 1 1 PLAY / 5 SCHILLING 2 PLAY / 10 SCHILLING .WORD 1,0,2,0,0,1,0,0,2,2 ;WILLY PRICING .WORD 1 ;DOLLARS .WORD 1 ;FRACTIONS OK .WORD 5,0,10,0,0 ;COIN VALUE .LONG NULL_ST,SHILL_TRAIL ;CHARACTER STRINGS. .LONG CSM_LIST .LONG ASTA_1 ;TITLE OF COIN MODE .LONG ASTA_15 ;1 COIN PER CREDIT (SERIES OF ST .WORD SHOW_1 .LONG SHILL510 * AUSTRIA 2 1 PLAY / 2 X 5 SCHILLING 3 PLAY / 10 SCHILLING .WORD 1,0,2,0,0,2,4,0,2,2 ;WILLY PRICING .WORD 1 ;DOLLARS .WORD 1 ;FRACTIONS OK .WORD 5,0,10,0,0 ;COIN VALUE .LONG NULL_ST,SHILL_TRAIL ;CHARACTER STRINGS. .LONG CSM_LIST .LONG ASTA_2 ;TITLE OF COIN MODE .LONG ASTA_10 ;1 COIN PER CREDIT (SERIES OF ST .WORD SHOW_2 .LONG SHILL510 * BELGIUM 1 1 PLAY / 20F .WORD 1,0,1,0,0,1,0,0,2,2 ;WILLY PRICING .WORD 1 ;DOLLARS .WORD 1 ;FRACTIONS OK .WORD 4,0,4,0,0 ;COIN VALUE .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. .LONG CSM_LIST .LONG BEL_1 ;TITLE OF COIN MODE .LONG BEL_120 ;1 COIN PER CREDIT (SERIES OF ST .WORD SHOW_1 .LONG FRANC20 * BELGIUM 2 3 PLAY / 20F .WORD 3,0,3,0,0,1,0,0,2,2 ;WILLY PRICING .WORD 1 ;DOLLARS .WORD 1 ;FRACTIONS OK .WORD 4,0,4,0,0 ;COIN VALUE .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. .LONG CSM_LIST .LONG BEL_2 ;TITLE OF COIN MODE .LONG BEL_320 ;1 COIN PER CREDIT (SERIES OF ST .WORD SHOW_1 .LONG FRANC20 * BELGIUM 3 2 PLAY / 20F .WORD 2,0,2,0,0,1,0,0,2,2 ;WILLY PRICING .WORD 1 ;DOLLARS .WORD 1 ;FRACTIONS OK .WORD 4,0,4,0,0 ;COIN VALUE .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. .LONG CSM_LIST .LONG BEL_3 ;TITLE OF COIN MODE .LONG BEL_220 ;1 COIN PER CREDIT (SERIES OF ST .WORD SHOW_1 .LONG FRANC20 * * BELGIUM ELECTRONIC * .WORD 10,1,4,0,0,4,0,0,2,2 ; L,C,R,4,U/C,U/B,MINUNITS .WORD 1 ; COINS/DOLLAR .WORD 1 ; DISPLAY FRACTIONS .WORD 10,1,4,0,0 ; L,C,R,4 .LONG NULL_ST,FRANC_TRAIL ;CHARACTER STRINGS. .LONG BELGIUM_ELECTRONIC ; SPECIAL MESSAGE .LONG BELGIUM_ELECTITLE ; TITLE OF COIN MODE .LONG BEL_ELEC ; SETTINGS DESCRIPTION .WORD SHOW_2 ; LINES TO SHOW ON .LONG BELGIUM_ESLOT ; QUARTER * SWEDEN 1 PLAY / 3 X 1 KRONA 2 PLAY 5 KRONA .WORD 2,0,10,0,0,5,0,0,2,2 ;WILLY PRICING .WORD 1 ;DOLLARS .WORD 0 ;DON'T SHOW FRACTIONS .WORD 1,0,5,0,0 ;COIN VALUE .LONG NULL_ST,KRONA_TRAIL ;CHARACTER STRINGS. .LONG CSM_LIST .LONG SWED_1 ;TITLE OF COIN MODE .LONG SWED_2X5 ;1 COIN PER CREDIT (SERIES .WORD SHOW_1 .LONG KRONA5 * NEW ZEALAND 1 1 PLAY / 3 X 20 CENT .WORD 1,0,1,0,0,3,0,0,1,1 ;WILLY PRICING .WORD 5 ;FIVE PER .WORD 1 ;SHOW FRACTIONS .WORD 1,0,1,0,0 ;COIN VALUE .LONG DOLLAR_LEAD,NULL_ST ;CHARACTER STRINGS. .LONG CSM_LIST .LONG NZ_1 ;TITLE OF COIN MODE .LONG NZ_13 ;1 COIN PER CREDIT (SERIES OF S .WORD SHOW_1 .LONG NZ20 * NEW ZEALAND 2 1 PLAY / 2 X 20 CENT .WORD 1,0,1,0,0,2,0,0,1,1 ;WILLY PRICING .WORD 5 ;FIVE PER .WORD 1 ;SHOW FRACTIONS .WORD 1,0,1,0,0 ;COIN VALUE .LONG DOLLAR_LEAD,NULL_ST ;CHARACTER STRINGS. .LONG CSM_LIST .LONG NZ_2 ;TITLE OF COIN MODE .LONG NZ_12 ;1 COIN PER CREDIT (SERIES OF S .WORD SHOW_1 .LONG NZ20 * NETHERLANDS 1 PLAY / 1 HFL. 3 PLAY / 2.5 HFL. .WORD 1,0,3,0,0,1,0,0,2,2 ;WILLY PRICING .WORD 1 ;FIVE PER .WORD 0 ;DON'T SHOW FRACTIONS .WORD 2,0,5,0,0 ;COIN VALUE .LONG NULL_ST,HFL_TRAIL ;CHARACTER STRINGS. .LONG CSM_LIST .LONG NETH ;TITLE OF COIN MODE .LONG NETH_HF ;1 COIN PER CREDIT (SERIES OF ST .WORD SHOW_2 .LONG HFSLOT * FINLAND 1 PLAY / 1 MARKKA .WORD 1,0,1,0,0,1,0,0,2,2 ;WILLY PRICING .WORD 1 ;FIVE PER .WORD 0 ;DON'T SHOW FRACTIONS .WORD 1,0,1,0,0 ;COIN VALUE .LONG NULL_ST,MARKKA_TRAIL ;CHARACTER STRINGS. .LONG CSM_LIST .LONG FINLAND ;TITLE OF COIN MODE .LONG FINMKA ;1 COIN PER CREDIT (SERIES OF ST .WORD SHOW_1 .LONG MKSLOT * NORWAY 1 PLAY / 2 X 1 KRONE 3/ 5 X 1 KRONE .WORD 3,0,3,0,0,5,0,0,2,2 ;WILLY PRICING .WORD 1 ;FIVE PER .WORD 0 ;DON'T SHOW FRACTIONS .WORD 1,0,1,0,0 ;COIN VALUE .LONG NULL_ST,KRONE_TRAIL ;CHARACTER STRINGS. .LONG CSM_LIST .LONG NORWAY ;TITLE OF COIN MODE .LONG KR_LIST ;1 COIN PER CREDIT (SERIES OF STRI .WORD SHOW_2 .LONG NKRSLOT * DENMARK 1 PLAY / 2 X 1 KRONE 3/ 5 KRONE 7 / 10 KRONE .WORD 3,0,15,0,0,5,30,0,2,2 ;WILLY PRICING .WORD 1 ;FIVE PER .WORD 0 ;DON'T SHOW FRACTIONS .WORD 1,0,5,0,0 ;COIN VALUE .LONG NULL_ST,KRONE_TRAIL ;CHARACTER STRINGS. .LONG CSM_LIST .LONG DENMARK ;TITLE OF COIN MODE .LONG DKR_LIST ;1 COIN PER CREDIT (SERIES .WORD SHOW_3 .LONG DKRSLOT * ANTILLES 1 PLAY / 25 CENTS 4 PLAYS / 1 GUILDER .WORD 1,0,4,0,0,1,0,0,2,2 ;WILLY PRICING .WORD 4 ;FIVE PER .WORD 0 ;DON'T SHOW FRACTIONS .WORD 1,0,4,0,0 ;COIN VALUE .LONG NULL_ST,GUILDER_TRAIL ;CHARACTER STRINGS. .LONG CSM_LIST .LONG ANTILLES ;TITLE OF COIN MODE .LONG ANT_LIST ;1 COIN PER CREDIT (SERIES .WORD SHOW_1 .LONG ANTSLOT * HUNGARY 1 CREDIT / 2X10 FORINT 3 CREDITS / 2X20 FORINT .WORD 1,0,2,0,0,2,4,0,2,2 ;WILLY PRICING .WORD 1 ;1 TO 1 .WORD 0 ;DON'T SHOW FRACTIONS .WORD 1,0,2,0,0 ;COIN VALUE .LONG NULL_ST,FORINT_TRAIL ;CHARACTER STRINGS. .LONG CSM_LIST .LONG HUNGARY ;TITLE OF COIN MODE .LONG HUNG_LIST ;1 COIN PER CREDIT (SERIES .WORD SHOW_1 .LONG HUNGSLOT .ENDIF CS_ENTS EQU ($-CSELCT)/CS_SIZE ;NUMBER OF ENTRIES IN TABLE ; ; DIP SWITCH TABLES ; USABASE EQU 1 GERBASE EQU G1SEL FRABASE EQU F1SEL .IF FULLPRICE USADIP .WORD USABASE+0, USABASE+1, USABASE+2, USABASE+3, USABASE+8 .WORD USABASE+8, USABASE+8 GERDIP .WORD GERBASE+0, GERBASE+1, GERBASE+2, GERBASE+3, GERBASE+4 .WORD GERBASE+4, GERBASE+4 FRADIP .WORD FRABASE+0, FRABASE+1, FRABASE+2, FRABASE+3, FRABASE+12 .WORD FRABASE+12, FRABASE+12 .ELSE USADIP .WORD USABASE+0, USABASE+1, USABASE+2, USABASE+3, USABASE+4 .WORD USABASE+4, USABASE+4 GERDIP .WORD GERBASE+0, GERBASE+1, GERBASE+2, GERBASE+3, GERBASE+4 .WORD GERBASE+4, GERBASE+4 FRADIP .WORD FRABASE+0, FRABASE+1, FRABASE+2, FRABASE+3, FRABASE+4 .WORD FRABASE+4, FRABASE+4 .ENDIF DIPCOINTAB .LONG USADIP, GERDIP, FRADIP, USADIP ************************************************************************** * * * COLLECTION MESSAGES * * * ************************************************************************** ME_ZERO .STRING "0" .BYTE 0 .EVEN ME_DASH .string "-",0 .even ME_DECIMAL .STRING "." .BYTE 0 .EVEN ME_COLON .STRING ":" .BYTE 0 .EVEN DOLLAR_LEAD .STRING "$ " .BYTE 0 .EVEN POUND_LEAD .STRING FONT_EPOUND," ",0 .EVEN POUND_TRAIL .STRING " PND",0 .EVEN NULL_ST .BYTE 0 .EVEN DM_TRAIL .STRING " DM" .BYTE 0 .EVEN FRANC_TRAIL .STRING " FRANC" .BYTE 0 .EVEN .IF FULLPRICE LIRE_TRAIL .STRING " LIRE" .BYTE 0 .EVEN PESETA_TRAIL .STRING " PESETA" .BYTE 0 .EVEN .ENDIF YEN_TRAIL .STRING " YEN" .BYTE 0 .EVEN .IF FULLPRICE SHILL_TRAIL .STRING " SCHILLINGS" .BYTE 0 .EVEN KRONA_TRAIL .STRING " KRONA" .BYTE 0 .EVEN .ENDIF COINS_TRAIL .STRING " COINS" .BYTE 0 .EVEN .IF FULLPRICE HFL_TRAIL .STRING " HFI." .BYTE 0 .EVEN MARKKA_TRAIL .STRING " MARKKA" .BYTE 0 .EVEN KRONE_TRAIL .STRING " KRONE" .BYTE 0 .EVEN GUILDER_TRAIL .STRING " GUILDER" .BYTE 0 .EVEN FORINT_TRAIL .STRING " FT",0 .ENDIF * * FOR THE COINAGE ADJUSTMENT MODE: * * * THIS SET IS TITLES FOR THE CANNED MODES. * USA_1 .STRING "USA 1",0 .EVEN USA_2 .STRING "USA 2",0 .EVEN USA_3 .STRING "USA 3",0 .EVEN USA_4 .STRING "USA 4",0 .EVEN .IF FULLPRICE USA_5 .STRING "USA 5",0 .EVEN USA_6 .STRING "USA 6",0 .EVEN USA_7 .STRING "USA 7",0 .EVEN USA_8 .STRING "USA 8",0 .EVEN USA_9 .STRING "USA 9",0 .EVEN USA_10 .STRING "USA 10",0 .EVEN .ENDIF USA_ELECTITLE .STRING "USA ECA",0 .EVEN FRENCH_ELECTITLE .STRING "FRANCE ECA",0 .EVEN GERMAN_ELECTITLE .STRING "GERMAN ECA",0 .EVEN BEL_ELECTITLE .STRING "BELGUIM ECA",0 .EVEN GERMAN_1 .STRING "GERMAN 1",0 .EVEN GERMAN_2 .STRING "GERMAN 2",0 .EVEN GERMAN_3 .STRING "GERMAN 3",0 .EVEN GERMAN_4 .STRING "GERMAN 4",0 .EVEN GERMAN_5 .STRING "GERMAN 5",0 .EVEN FRENCH_1 .STRING "FRANCE 1",0 .EVEN FRENCH_2 .STRING "FRANCE 2",0 .EVEN FRENCH_3 .STRING "FRANCE 3",0 .EVEN FRENCH_4 .STRING "FRANCE 4",0 .EVEN .IF FULLPRICE FRENCH_5 .STRING "FRANCE 5",0 .EVEN FRENCH_6 .STRING "FRANCE 6",0 .EVEN FRENCH_7 .STRING "FRANCE 7",0 .EVEN FRENCH_8 .STRING "FRANCE 8",0 .EVEN FRENCH_9 .STRING "FRANCE 9",0 .EVEN FRENCH_10 .STRING "FRANCE 10",0 .EVEN FRENCH_11 .STRING "FRANCE 11",0 .EVEN FRENCH_12 .STRING "FRANCE 12",0 .EVEN CANADA .STRING "CANADA",0 .EVEN SWISS_1 .STRING "SWISS 1" .BYTE 0 .EVEN SWISS_2 .STRING "SWISS 2" .BYTE 0 .EVEN SWISS_3 .STRING "SWISS 3" .BYTE 0 .EVEN ITALY_1 .STRING "ITALY" .BYTE 0 .EVEN UK_1 .STRING "U.K. 1 ECA" .BYTE 0 .EVEN UK_2 .STRING "U.K. 2 ECA" .BYTE 0 .EVEN UK_3 .STRING "U.K. 3 ECA" .BYTE 0 .EVEN UK_4 .STRING "U.K. 4" .BYTE 0 .EVEN UK_5 .STRING "U.K. 5" .BYTE 0 .EVEN SP_1 .STRING "SPAIN 1" .BYTE 0 .EVEN SP_2 .STRING "SPAIN 2" .BYTE 0 .EVEN AUS_1 .STRING "AUSTRALIA 1" .BYTE 0 .EVEN AUS_2 .STRING "AUSTRALIA 2" .BYTE 0 .EVEN .ENDIF JAP_1 .STRING "JAPAN 1" .BYTE 0 .EVEN .IF FULLPRICE JAP_2 .STRING "JAPAN 2" .BYTE 0 .EVEN ASTA_1 .STRING "AUSTRIA 1" .BYTE 0 .EVEN ASTA_2 .STRING "AUSTRIA 2" .BYTE 0 .EVEN BEL_1 .STRING "BELGIUM 1" .BYTE 0 .EVEN BEL_2 .STRING "BELGIUM 2" .BYTE 0 .EVEN BEL_3 .STRING "BELGIUM 3" .BYTE 0 .EVEN BELGIUM_ELECTITLE .STRING "BELGIUM ECA",0 .EVEN SWED_1 .STRING "SWEDEN" .BYTE 0 .EVEN NZ_1 .STRING "NEW ZEALAND 1" .BYTE 0 .EVEN NZ_2 .STRING "NEW ZEALAND 2" .BYTE 0 .EVEN NETH .STRING "NETHERLANDS" .BYTE 0 .EVEN FINLAND .STRING "FINLAND" .BYTE 0 .EVEN NORWAY .STRING "NORWAY" .BYTE 0 .EVEN DENMARK .STRING "DENMARK" .BYTE 0 .EVEN ANTILLES .STRING "ANTILLES" .BYTE 0 .EVEN HUNGARY .STRING "HUNGARY",0 .EVEN .ENDIF * * THIS SECTION IS A POINTER TO STRING LISTS * FOR THE "CURRENT SETTING" BOX. * USA_EL .LONG EC1 .LONG DOLL4 .LONG 0 * * 1 COIN / 1 CREDIT Q_Q .LONG C11 ;THIS POINTS AT MESSAGE .LONG 0 ;THIS ENDS LIST * * 2 COINS / 1 CREDIT * F_F_1S1C .LONG C21 .LONG 0 ************************************************************************* * * 2 COINS / 1 CREDIT * 4 COINS / 3 CREDITS * DOLLAR_3 .LONG C21 .LONG C43 .LONG 0 * * 2 COINS / 1 CREDIT * 4 COINS / 4 CREDITS * DOLLAR_4 .LONG C21 .LONG C44 .LONG 0 ******************************************************************** .IF FULLPRICE U1Q4D .LONG C11 ;THIS POINTS AT MESSAGE .LONG DOLL4 ;4 FOR A DOLLAR .LONG 0 ;UFS2D .LONG C21 ; THIS POINTS AT MESSAGE ; .LONG DOLL2 ; 2 FOR A DOLLAR ; .LONG 0 UFS3D .LONG C21 ;THIS POINTS AT MESSAGE .LONG DOLL3 ;3 FOR A DOLLAR .LONG 0 UFS4D .LONG C21 ;THIS POINTS AT MESSAGE .LONG DOLL4 ;4 FOR A DOLLAR .LONG 0 .ENDIF * * 1 PLAY 1/DM * 5 PLAY 5/DM * DM_5 .LONG DM11 .LONG DM55 .LONG 0 DM_6 .LONG DM11 .LONG DM65 .LONG 0 DM_7 .LONG DM11 .LONG DM75 .LONG 0 DM_8 .LONG DM11 .LONG DM85 .LONG 0 DM112265 .LONG DM11 .LONG DM22 .LONG DM65 .LONG 0 SFRANC_6 .LONG SFRANC11 .LONG SFRANC65 .LONG 0 CAN_1503D .LONG C15 ;THIS POINTS AT MESSAGE .LONG DOLL3 ;3 FOR A DOLLAR .LONG 0 SFRANC_7 .LONG SFRANC11 .LONG SFRANC75 .LONG 0 SFRANC_8 .LONG SFRANC11 .LONG SFRANC85 .LONG 0 * * 2 PLAYS 5F / 5 PLAYS 10F * FIVE_10 .LONG F25 .LONG F510 .LONG 0 FIVE_10_11 .LONG F25 .LONG F510 .LONG F1120 .LONG 0 FOUR_10 .LONG F25 .LONG F410 .LONG 0 FOUR_10_9 .LONG F25 .LONG F410 .LONG F4109 .LONG 0 THREE_10 .LONG F15 .LONG F310 .LONG 0 THREE_10_7 .LONG F15 .LONG F310 .LONG F4107 .LONG 0 TWO_10 .LONG F15 .LONG F210 .LONG 0 TWO_10_5 .LONG F15 .LONG F210 .LONG F4105 .LONG 0 F1325 .LONG F3X1F .LONG F2F5 .LONG 0 F13255 .LONG F3X1F .LONG F2F5 ; .LONG F52X5 .LONG F5X10F .LONG 0 F1235 .LONG F2X1F .LONG F3F5 .LONG 0 F12355 .LONG F2X1F .LONG F3F5 .LONG F72X5 .LONG 0 .IF FULLPRICE * 500 LIRE P1500L .LONG P1500L_P .LONG 0 * 1 PLAY / 20 P 3 PLAYS 50 P UK_120 .LONG UK_1201 .LONG UK_1202 .LONG UK_1203 .LONG 0 ;UK_220 .LONG UK_2201 ; .LONG UK_2202 ; .LONG 0 UK_520 UK_320 .LONG UK_3201 ; .LONG UK_3202 .LONG UK_3203 .LONG 0 UK_220 UK_420 .LONG UK_4201 .LONG UK_4202 ; .LONG UK_4203 .LONG 0 SP_4100 .LONG SP_11 .LONG SP_44 .LONG 0 SP_5100 .LONG SP_11 .LONG SP_54 .LONG 0 AU_60 .LONG AU_36 .LONG AU_2D .LONG 0 AU_100 .LONG AU_520 .LONG AU_1D .LONG 0 .ENDIF JAP_100 .LONG JAP_101 .LONG 0 .IF FULLPRICE JAP_200 .LONG JAP_201 .LONG 0 ASTA_10 .LONG ASTA101 .LONG ASTA102 .LONG 0 ASTA_15 .LONG ASTA151 .LONG ASTA152 .LONG 0 BEL_120 .LONG BEL_1201 .LONG 0 BEL_220 .LONG BEL_2201 .LONG 0 BEL_320 .LONG BEL_3201 .LONG 0 BEL_ELEC .LONG BEL_1201 .LONG 0 SWED_2X5 .LONG SWED_S51 .LONG SWED_S52 .LONG 0 NZ_12 .LONG NZ_121 .LONG 0 NZ_13 .LONG NZ_131 .LONG 0 NETH_HF .LONG HF_11 .LONG HF_32 .LONG 0 FINMKA .LONG FIN_1 .LONG 0 KR_LIST .LONG NOR_12 .LONG NOR_35 .LONG 0 DKR_LIST .LONG DEN_12 .LONG DEN_35 .LONG DEN_710 .LONG 0 ANT_LIST .LONG ANT1P25 .LONG ANT4DOL .LONG 0 HUNG_LIST .LONG HUNG2X10 .LONG HUNG2X20 .LONG 0 .ENDIF EC1 .STRING "1 CREDIT / 25 CENTS",0 .EVEN C11 .STRING "1 CREDIT / 1 COIN" .BYTE 0 .EVEN C21 .STRING "1 CREDIT / 2 COINS" .BYTE 0 .EVEN C43 .STRING "3 CREDIT / 4 COINS" .BYTE 0 .EVEN C44 .STRING "4 CREDITS / 4 COINS" .BYTE 0 .EVEN C15 .STRING "1 CREDIT / 2 X 25 CENTS",0 .EVEN DOLL2 .STRING "2 CREDITS / $1.00" .BYTE 0 .EVEN DOLL3 .STRING "3 CREDITS / $1.00" .BYTE 0 .EVEN DOLL4 .STRING "4 CREDITS / $1.00" .BYTE 0 .EVEN DM11 .STRING "1 CREDIT / 1 DM",0 .EVEN DM22 .STRING "2 CREDITS / 2 DM",0 .EVEN DM55 .STRING "5 CREDITS / 5 DM",0 .EVEN DM65 .STRING "6 CREDITS / 5 DM",0 .EVEN DM75 .STRING "7 CREDITS / 5 DM",0 .EVEN DM85 .STRING "8 CREDITS / 5 DM",0 .EVEN F3F5 .STRING "3 CREDITS / 5F" .BYTE 0 .EVEN F2F5 F25 .STRING "2 CREDITS / 5F" .BYTE 0 .EVEN F15 .STRING "1 CREDIT / 5F" .BYTE 0 .EVEN F510 .STRING "5 CREDITS / 10F" .BYTE 0 .EVEN F1120 .STRING "11 CREDITS / 2 X 10F" .BYTE 0 .EVEN F4109 .STRING "9 CREDITS / 2 X 10F" .BYTE 0 .EVEN F4107 .STRING "7 CREDITS / 2 X 10F" .BYTE 0 .EVEN F4105 .STRING "5 CREDITS / 2 X 10F" .BYTE 0 .EVEN F410 .STRING "4 CREDITS / 10F" .BYTE 0 .EVEN F310 .STRING "3 CREDITS / 10F" .BYTE 0 .EVEN F210 .STRING "2 CREDITS / 10F" .BYTE 0 .EVEN F3X1F .STRING "1 CREDIT / 3 X 1F" .BYTE 0 .EVEN F2X1F .STRING "1 CREDIT / 2 X 1F" .BYTE 0 .EVEN F52X5 .STRING "5 CREDITS / 2 X 5F" .BYTE 0 .EVEN F5X10F .STRING "5 CREDITS / 10F" .BYTE 0 .EVEN F72X5 .STRING "7 CREDITS / 2 X 5F" .BYTE 0 .EVEN SFRANC11 .STRING "1 CREDIT / 1F" .BYTE 0 .EVEN SFRANC65 .STRING "6 CREDITS / 5F" .BYTE 0 .EVEN SFRANC75 .STRING "7 CREDITS / 5F" .BYTE 0 .EVEN SFRANC85 .STRING "8 CREDITS / 5F" .BYTE 0 .EVEN .IF FULLPRICE P1500L_P .STRING "1 CREDIT / 500 LIRE" .BYTE 0 .EVEN UK_1201 .STRING "1 CREDIT / 30 P" .BYTE 0 .EVEN UK_1202 .STRING "2 CREDITS / 50 P" .BYTE 0 .EVEN UK_1203 .STRING "5 CREDITS / L1.00" .BYTE 0 .EVEN UK_2201 .STRING "2 CREDITS / 20 P" .BYTE 0 .EVEN UK_2202 .STRING "5 CREDITS / 50 P" .BYTE 0 .EVEN UK_3201 .STRING "1 CREDIT / 50 P" .BYTE 0 .EVEN ;UK_3202 .STRING "2 CREDITS / 50 P" ; .BYTE 0 ; .EVEN UK_3203 .STRING "2 CREDITS / L1.00" .BYTE 0 .EVEN UK_4201 .STRING "1 CREDIT / 50 P" .BYTE 0 .EVEN UK_4202 .STRING "3 CREDITS / L1.00" .BYTE 0 .EVEN ;UK_4203 .STRING "7 CREDITS / L1.00" ; .BYTE 0 ; .EVEN SP_11 .STRING "1 CREDIT / 100 PESETA" .BYTE 0 .EVEN SP_44 .STRING "5 CREDITS / 500 PESETA" .BYTE 0 .EVEN SP_54 .STRING "6 CREDITS / 500 PESETA" .BYTE 0 .EVEN NZ_131 AU_36 .STRING "1 CREDIT / 3 X 20 CENTS" .BYTE 0 .EVEN AU_2D .STRING "2 CREDITS / $ 1.00" .BYTE 0 .EVEN AU_520 .STRING "1 CREDIT / 5 X 20 CENTS" .BYTE 0 .EVEN AU_1D .STRING "1 CREDIT / $ 1.00" .BYTE 0 .EVEN .ENDIF JAP_101 .STRING "1 CREDIT / 100 YEN" .BYTE 0 .EVEN .IF FULLPRICE JAP_201 .STRING "2 CREDITS / 100 YEN" .BYTE 0 .EVEN ASTA101 .STRING "1 CREDIT / 2 X 5 SCHILLING" .BYTE 0 .EVEN ASTA102 .STRING "3 CREDITS / 2 X 10 SCHILLING" .BYTE 0 .EVEN ASTA151 .STRING "1 CREDIT / 5 SCHILLING" .BYTE 0 .EVEN ASTA152 .STRING "2 CREDITS / 10 SCHILLING" .BYTE 0 .EVEN BEL_1201 .STRING "1 CREDIT / 2OF" .BYTE 0 .EVEN BEL_2201 .STRING "2 CREDITS / 2OF" .BYTE 0 .EVEN BEL_3201 .STRING "3 CREDITS / 2OF" .BYTE 0 .EVEN SWED_S51 .STRING "1 CREDIT / 3 X 1 KRONA" .BYTE 0 .EVEN SWED_S52 .STRING "2 CREDITS / 5 KRONA" .BYTE 0 .EVEN NZ_121 .STRING "1 CREDIT / 2 X 20 CENTS" .BYTE 0 .EVEN HF_11 .STRING "1 CREDIT / 1 HFI" .BYTE 0 .EVEN HF_32 .STRING "3 CREDITS / 2.5 HFI" .BYTE 0 .EVEN FIN_1 .STRING "1 CREDIT / 1 MARKKA" .BYTE 0 .EVEN DEN_12 NOR_12 .STRING "1 CREDIT / 2 X 1 KRONE" .BYTE 0 .EVEN NOR_35 .STRING "3 CREDITS / 5 X 1 KRONE" .BYTE 0 .EVEN DEN_35 .STRING "3 CREDITS / 5 KRONE" .BYTE 0 .EVEN DEN_710 .STRING "7 CREDITS / 2 X 5 KRONE" .BYTE 0 .EVEN ANT1P25 .STRING "1 CREDIT / 25 CENTS" .BYTE 0 .EVEN ANT4DOL .STRING "4 CREDITS / 1 GUILDER" .BYTE 0 .EVEN HUNG2X10 .STRING "1 CREDIT / 2 X 10 FORINT",0 .EVEN HUNG2X20 .STRING "3 CREDITS / 2 X 20 FORINT",0 .EVEN .ENDIF ************************************************************************** * * * COIN SLOT TITLES * * * ************************************************************************** USA_ESLOT .STRING "$1.00 .10 .25 .5 $1.00 ",0 .EVEN FRANCE_ESLOT .STRING "1F 5F 10F ",0 .EVEN GERMAN_ESLOT .STRING " 5DM 2DM 1DM ",0 .EVEN BELGIUM_ESLOT .STRING " 50F 20F 5F ",0 .EVEN USA_QQ .STRING "25 CENT 25 CENT" .BYTE 0 .EVEN .IF FULLPRICE USA_QDQ .STRING ".25 .25 $1.00",0 .EVEN .ENDIF GERMAN_15 .STRING "1 DM 5 DM " .BYTE 0 .EVEN FRENCH510 .STRING "5F 10F " .BYTE 0 .EVEN FRENCH1F5F .STRING "1F 5F ",0 .EVEN CAN_QD .STRING ".25 $1.00 $1.00",0 .EVEN .IF FULLPRICE SWISS15 .STRING "1F 5F ",0 .BYTE 0 .EVEN ITALYLIRE .STRING "500L 500L " .BYTE 0 .EVEN UK2050 .STRING "L1.00 50 P " .BYTE 0 .EVEN UK_ELEC .STRING "L1.00 20P 50P 10P " .BYTE 0 .EVEN UK_CCU .STRING "CCU ON LEFT SLOT " .BYTE 0 .EVEN PESETA100 .STRING "100 P 500 P ",0 .EVEN AUST20C .STRING ".20 $ 1.00 ",0 .EVEN .ENDIF YEN100 .STRING "100Y 100Y " .BYTE 0 .EVEN .IF FULLPRICE SHILL510 .STRING "5 10 SCHILLING " .BYTE 0 .EVEN FRANC20 .STRING "20F 20F " .BYTE 0 .EVEN KRONA5 .STRING "1 KR 5 KR " .BYTE 0 .EVEN NZ20 .STRING ".20 .20 " .BYTE 0 .EVEN HFSLOT .STRING "1HFI 2.5HFI " .BYTE 0 .EVEN MKSLOT .STRING "1 1 MARKKA " .BYTE 0 .EVEN NKRSLOT .STRING "1 KR 1 KR " .BYTE 0 .EVEN DKRSLOT .STRING "1 KR 5 KR " .BYTE 0 .EVEN ANTSLOT .STRING ".25 1 GUILDER " .BYTE 0 .EVEN HUNGSLOT .STRING "10 20 FORINT ",0 .EVEN .ENDIF ;;CP_CX EQU 200 ;;CP_11 EQU 11 ;;CP_13 EQU 13 ;;CP_23 EQU 23 ;;CP_33 EQU 33 OCOP MESS_MAC RD7FONT,SPACING07,CP_CX,CP_11,ROBO_YELLOW,STRCNRM,0 .STRING "1 COIN / 1 PLAY" .BYTE 0,0 .EVEN USA_ELECTRONIC: MESS_MAC RD7FONT,SPACING07,CP_CX,CP_13,ROBO_YELLOW,STRCNRM,0 .STRING "1 CREDIT / 25 CENTS" .STRING "\n4 CREDITS / 1 DOLLAR",0,1 .EVEN FRANCE_ELECTRONIC: MESS_MAC RD7FONT,SPACING07,CP_CX,CP_13,ROBO_YELLOW,STRCNRM,0 .STRING "1 CREDIT / 25 CENTS" .STRING "\n4 CREDITS / 1 DOLLAR",0,1 .EVEN GERMAN_ELECTRONIC: MESS_MAC RD7FONT,SPACING07,CP_CX,CP_13,ROBO_YELLOW,STRCNRM,0 .STRING "1 CREDIT / 1 DM" .STRING "\n6 CREDITS / 5 DM",0,1 .EVEN .IF FULLPRICE BELGIUM_ELECTRONIC: MESS_MAC RD7FONT,SPACING07,CP_CX,CP_13,ROBO_YELLOW,STRCNRM,0 .STRING "1 CREDIT / 20 FR" .EVEN UK_ELECTRONIC1 MESS_MAC RD7FONT,SPACING07,CP_CX,CP_13,ROBO_LF,STRCNRM,0 .STRING "1 CREDIT / 50 P" .BYTE 0,1 .EVEN MESS_MAC RD7FONT,SPACING07,CP_CX,CP_33,ROBO_LF,STRCNRM,0 .STRING "3 CREDITS / " .BYTE FONT_EPOUND .STRING "1.00" .BYTE 0,0 .EVEN UK_ELECTRONIC2 MESS_MAC RD7FONT,SPACING07,CP_CX,CP_13,ROBO_LF,STRCNRM,0 .STRING "1 CREDIT / 50 P" .BYTE 0,1 .EVEN MESS_MAC RD7FONT,SPACING07,CP_CX,CP_33,ROBO_LF,STRCNRM,0 .STRING "2 CREDITS / " .BYTE FONT_EPOUND .STRING "1.00" .BYTE 0,0 .EVEN UK_ELECTRONIC3 MESS_MAC RD7FONT,SPACING07,CP_CX,CP_13,ROBO_LF,STRCNRM,0 .STRING "1 CREDIT / 30 P" .BYTE 0,1 .EVEN MESS_MAC RD7FONT,SPACING07,CP_CX,CP_23,ROBO_LF,STRCNRM,0 .STRING "2 CREDITS / 50 P" .BYTE 0,1 .EVEN MESS_MAC RD7FONT,SPACING07,CP_CX,CP_33,ROBO_LF,STRCNRM,0 .STRING "5 CREDITS / " .BYTE FONT_EPOUND .STRING "1.00" .BYTE 0,0 .EVEN .ENDIF * * THE FOLLOWING 2 MESSAGES ARE GENERIC AND WILL * BE DISPLAYED IF THE MODE MATCHES AND NO * APPROPRIATE MESSAGE EXISTS * * THIS IS FOR THIS BEING THE ONLY MESSAGE DISPLAYED ON * THE SCREEN * TWO_TO_START MESS_MAC RD15FONT,SPACING20,CP_CX,CP_12,ROBO_LASER,STRCNRM,0 .byte "2 CREDITS TO START",0,1 .even MESS_MAC RD15FONT,SPACING20,CP_CX,CP_22,ROBO_LASER,STRCNRM,0 .byte "1 CREDIT TO CONTINUE",0,0 .even TWO_TO_START_2C MESS_MAC RD15FONT,SPACING20,CP_CX,CP_12,ROBO_LASER,STRCNRM,0 .byte "2 CREDITS TO START",0,1 .even MESS_MAC RD15FONT,SPACING20,CP_CX,CP_22,ROBO_LASER,STRCNRM,0 .byte "2 CREDITS TO CONTINUE",0,0 .even * * THIS IS FOR LINES TWO AND 3 WITH AN ADDITIONAL LINE ABOVE * TWO_TS MESS_MAC RD15FONT,SPACING20,CP_CX,CP_23,ROBO_LASER,STRCNRM,0 .byte "2 CREDITS TO START",0,1 .even MESS_MAC RD15FONT,SPACING20,CP_CX,CP_33,ROBO_LASER,STRCNRM,0 .byte "1 CREDIT TO CONTINUE",0,0 .even TWO_TP MESS_MAC RD15FONT,SPACING20,CP_CX,CP_22,ROBO_LASER,STRCNRM,0 .byte "2 CREDITS PER PLAYER",0,0 .even TWO_CRED_PER_PLAYER MESS_MAC RD15FONT,SPACING20,CP_CX,CP_11,ROBO_LASER,STRCNRM,0 .byte "2 CREDITS PER PLAYER",0,0 .even MAX_C_M MESS_MAC RD15FONT,SPACING20,CP_CX,CP_11,ROBO_LF,STRCNRM,0 .byte "MAXIMUM CREDITS!",0,0 .even ****************************************************************************** .end