first commit main
authorteamarchive2.fnf.archive.org root <root@teamarchive2.fnf.archive.org>
Tue, 6 Apr 2021 22:09:56 +0000 (22:09 +0000)
committerteamarchive2.fnf.archive.org root <root@teamarchive2.fnf.archive.org>
Tue, 6 Apr 2021 22:09:56 +0000 (22:09 +0000)
240 files changed:
ADJUST.ASM [new file with mode: 0644]
AUDIT.ASM [new file with mode: 0644]
AUDIT.EQU [new file with mode: 0644]
BACKUP/ADJUST.ASM [new file with mode: 0644]
BACKUP/AUDIT.ASM [new file with mode: 0644]
BACKUP/AUDIT.EQU [new file with mode: 0644]
BACKUP/AUDIT1.EQU [new file with mode: 0644]
BACKUP/BAKGND.ASM [new file with mode: 0644]
BACKUP/BEAM.ASM [new file with mode: 0644]
BACKUP/BGNDPAL.ASM [new file with mode: 0644]
BACKUP/BGNDTBL.ASM [new file with mode: 0644]
BACKUP/BGNDUD.ROB [new file with mode: 0644]
BACKUP/BGNDUD.TRG [new file with mode: 0644]
BACKUP/BLAH.ASM [new file with mode: 0644]
BACKUP/BNCR2.ASM [new file with mode: 0644]
BACKUP/BOUNCERS.ASM [new file with mode: 0644]
BACKUP/CALLR.C [new file with mode: 0644]
BACKUP/CALLR.ERR [new file with mode: 0644]
BACKUP/CHASER.ASM [new file with mode: 0644]
BACKUP/CKCALLR.BAT [new file with mode: 0644]
BACKUP/COBRA.ASM [new file with mode: 0644]
BACKUP/COBRO.DMP [new file with mode: 0644]
BACKUP/COLL2.ASM [new file with mode: 0644]
BACKUP/CYCLER.ASM [new file with mode: 0644]
BACKUP/DEMO.ASM [new file with mode: 0644]
BACKUP/DIAG.ASM [new file with mode: 0644]
BACKUP/DISP.EQU [new file with mode: 0644]
BACKUP/DISP.OLD [new file with mode: 0644]
BACKUP/ENDWAVE.ASM [new file with mode: 0644]
BACKUP/ENT.ASM [new file with mode: 0644]
BACKUP/FATMAN.ASM [new file with mode: 0644]
BACKUP/FBDISP.ASM [new file with mode: 0644]
BACKUP/FRANIM.ASM [new file with mode: 0644]
BACKUP/FRANIM.EQU [new file with mode: 0644]
BACKUP/GAL.ASM [new file with mode: 0644]
BACKUP/GETROBO.BAT [new file with mode: 0644]
BACKUP/GSP.INC [new file with mode: 0644]
BACKUP/HSTAB.ASM [new file with mode: 0644]
BACKUP/HSTD.ASM [new file with mode: 0644]
BACKUP/HULKS.ASM [new file with mode: 0644]
BACKUP/ICONS.ASM [new file with mode: 0644]
BACKUP/IMGPAL.ASM [new file with mode: 0644]
BACKUP/IMGSRC.ASM [new file with mode: 0644]
BACKUP/IMGTBL.ASM [new file with mode: 0644]
BACKUP/LINK.EQU [new file with mode: 0644]
BACKUP/LZRORB.ASM [new file with mode: 0644]
BACKUP/MAC2.ASM [new file with mode: 0644]
BACKUP/MACROS.HDR [new file with mode: 0644]
BACKUP/MAIN.ASM [new file with mode: 0644]
BACKUP/MAKE.INI [new file with mode: 0644]
BACKUP/MAKEFILE [new file with mode: 0644]
BACKUP/MARK.EQU [new file with mode: 0644]
BACKUP/MENU.ASM [new file with mode: 0644]
BACKUP/MENU.EQU [new file with mode: 0644]
BACKUP/MENU.OLD [new file with mode: 0644]
BACKUP/MENU1.ASM [new file with mode: 0644]
BACKUP/MINE.ASM [new file with mode: 0644]
BACKUP/MPROC.ASM [new file with mode: 0644]
BACKUP/MPROC.EQU [new file with mode: 0644]
BACKUP/MUTOID.ASM [new file with mode: 0644]
BACKUP/NDSP1.ASM [new file with mode: 0644]
BACKUP/NDSP1.OLD [new file with mode: 0644]
BACKUP/NEWATT.ASM [new file with mode: 0644]
BACKUP/NEWAVES.ASM [new file with mode: 0644]
BACKUP/NEWMENU.ASM [new file with mode: 0644]
BACKUP/OLDMUT.ASM [new file with mode: 0644]
BACKUP/PALL.ASM [new file with mode: 0644]
BACKUP/PALRTST.ASM [new file with mode: 0644]
BACKUP/PALSRC.ASM [new file with mode: 0644]
BACKUP/PATCH.ASM [new file with mode: 0644]
BACKUP/POW1.ASM [new file with mode: 0644]
BACKUP/POW2.ASM [new file with mode: 0644]
BACKUP/RAM.ASM [new file with mode: 0644]
BACKUP/RBAK4.DOC [new file with mode: 0644]
BACKUP/RBOSS.ASM [new file with mode: 0644]
BACKUP/RBOSS.NEW [new file with mode: 0644]
BACKUP/ROBO.ASM [new file with mode: 0644]
BACKUP/ROBO.CMD [new file with mode: 0644]
BACKUP/ROBO.EQU [new file with mode: 0644]
BACKUP/ROBO.LOD [new file with mode: 0644]
BACKUP/ROBO.OLD [new file with mode: 0644]
BACKUP/ROBO.TVS [new file with mode: 0644]
BACKUP/ROBOATT.ASM [new file with mode: 0644]
BACKUP/ROBOAUD.ASM [new file with mode: 0644]
BACKUP/ROBOAUD.EQU [new file with mode: 0644]
BACKUP/ROBODIP.DOC [new file with mode: 0644]
BACKUP/ROBODOOR.ASM [new file with mode: 0644]
BACKUP/ROBOFE.0 [new file with mode: 0644]
BACKUP/ROBOFE.1 [new file with mode: 0644]
BACKUP/ROBOPAL.ASM [new file with mode: 0644]
BACKUP/ROBOTS.ASM [new file with mode: 0644]
BACKUP/ROBOTST.ASM [new file with mode: 0644]
BACKUP/SCORE.ASM [new file with mode: 0644]
BACKUP/SETUP.DAT [new file with mode: 0644]
BACKUP/SHELL.ASM [new file with mode: 0644]
BACKUP/SHOTS.ASM [new file with mode: 0644]
BACKUP/SNAKE.ASM [new file with mode: 0644]
BACKUP/SND.ASM [new file with mode: 0644]
BACKUP/SND.EQU [new file with mode: 0644]
BACKUP/SNDS2.ASM [new file with mode: 0644]
BACKUP/SOUNDS.ASM [new file with mode: 0644]
BACKUP/SYS.INC [new file with mode: 0644]
BACKUP/TANK.ASM [new file with mode: 0644]
BACKUP/TEST.ASM [new file with mode: 0644]
BACKUP/TEST.OLD [new file with mode: 0644]
BACKUP/TEXT.ASM [new file with mode: 0644]
BACKUP/TILES.ASM [new file with mode: 0644]
BACKUP/TRAIN.ASM [new file with mode: 0644]
BACKUP/TRIG.ASM [new file with mode: 0644]
BACKUP/TROGPALL.ASM [new file with mode: 0644]
BACKUP/TVMNTR.ASM [new file with mode: 0644]
BACKUP/UTIL.ASM [new file with mode: 0644]
BACKUP/WAVES.ASM [new file with mode: 0644]
BACKUP/WLMAN.ASM [new file with mode: 0644]
BAKGND.ASM [new file with mode: 0644]
CHASER.ASM [new file with mode: 0644]
COBRA.ASM [new file with mode: 0644]
COLL2.ASM [new file with mode: 0644]
DEMO.ASM [new file with mode: 0644]
DIAG.ASM [new file with mode: 0644]
DISP.EQU [new file with mode: 0644]
ENDWAVE.ASM [new file with mode: 0644]
FATMAN.ASM [new file with mode: 0644]
GAL.ASM [new file with mode: 0644]
GETROBO.BAT [new file with mode: 0644]
GSP.INC [new file with mode: 0644]
HSTD.ASM [new file with mode: 0644]
HULKS.ASM [new file with mode: 0644]
ICONS.ASM [new file with mode: 0644]
IMG/ART11.BDB [new file with mode: 0644]
IMG/ART11.BDD [new file with mode: 0644]
IMG/BLUEGUY.IMG [new file with mode: 0644]
IMG/BMB.IMG [new file with mode: 0644]
IMG/BNSARN.BDB [new file with mode: 0644]
IMG/BNSARN.BDD [new file with mode: 0644]
IMG/BONUS.BDB [new file with mode: 0644]
IMG/BONUS.BDD [new file with mode: 0644]
IMG/BONUSE.BDB [new file with mode: 0644]
IMG/BONUSE.BDD [new file with mode: 0644]
IMG/BRGRN.IMG [new file with mode: 0644]
IMG/CNTSTNT.IMG [new file with mode: 0644]
IMG/COBRA.IMG [new file with mode: 0644]
IMG/FAT2.IMG [new file with mode: 0644]
IMG/FINAL7.BDB [new file with mode: 0644]
IMG/FINAL7.BDD [new file with mode: 0644]
IMG/FINALTPG.BDB [new file with mode: 0644]
IMG/FINALTPG.BDD [new file with mode: 0644]
IMG/FINGRNT.IMG [new file with mode: 0644]
IMG/FLATFACE.IMG [new file with mode: 0644]
IMG/GALAGAS.IMG [new file with mode: 0644]
IMG/ICON3.IMG [new file with mode: 0644]
IMG/JKSNAKE.IMG [new file with mode: 0644]
IMG/JOP.IMG [new file with mode: 0644]
IMG/JUNGLE.IMG [new file with mode: 0644]
IMG/JUNGZ.BDB [new file with mode: 0644]
IMG/JUNGZ.BDD [new file with mode: 0644]
IMG/MNTR.IMG [new file with mode: 0644]
IMG/MUTEXP.IMG [new file with mode: 0644]
IMG/NEWHISC.BDB [new file with mode: 0644]
IMG/NEWHISC.BDD [new file with mode: 0644]
IMG/NPRZ.IMG [new file with mode: 0644]
IMG/NSNAK.IMG [new file with mode: 0644]
IMG/NUARENA3.IMG [new file with mode: 0644]
IMG/NUARN.IMG [new file with mode: 0644]
IMG/NUSET7.BDB [new file with mode: 0644]
IMG/NUSET7.BDD [new file with mode: 0644]
IMG/ORBS.IMG [new file with mode: 0644]
IMG/PHOTON.IMG [new file with mode: 0644]
IMG/PLYRS2.IMG [new file with mode: 0644]
IMG/RBTNEW2.BDB [new file with mode: 0644]
IMG/RBTNEW2.BDD [new file with mode: 0644]
IMG/RCKUP.BDB [new file with mode: 0644]
IMG/RCKUP.BDD [new file with mode: 0644]
IMG/ROBO.IRW [new file with mode: 0644]
IMG/ROBO.LOD [new file with mode: 0644]
IMG/ROBO0.LOD [new file with mode: 0644]
IMG/ROBOY.IRW [new file with mode: 0644]
IMG/ROBOY.LOD [new file with mode: 0644]
IMG/ROBOY2.LOD [new file with mode: 0644]
IMG/SCORP.IMG [new file with mode: 0644]
IMG/SMASHLOG.IMG [new file with mode: 0644]
IMG/SPIDER.IMG [new file with mode: 0644]
IMG/TANKMAN2.IMG [new file with mode: 0644]
IMG/TEMPLE.IMG [new file with mode: 0644]
IMG/TMP5X.BDB [new file with mode: 0644]
IMG/TMP5X.BDD [new file with mode: 0644]
IMG/TROGF15.IMG [new file with mode: 0644]
IMG/TROGF7.IMG [new file with mode: 0644]
IMG/TSHIRT.BDB [new file with mode: 0644]
IMG/TSHIRT.BDD [new file with mode: 0644]
IMG/TTPGN.BDB [new file with mode: 0644]
IMG/TTPGN.BDD [new file with mode: 0644]
IMG/WLKSET.IMG [new file with mode: 0644]
LINK.EQU [new file with mode: 0644]
LZRORB.ASM [new file with mode: 0644]
MAC2.ASM [new file with mode: 0644]
MACROS.HDR [new file with mode: 0644]
MAIN.ASM [new file with mode: 0644]
MAKE.INI [new file with mode: 0644]
MAKEFILE [new file with mode: 0644]
MARK.EQU [new file with mode: 0644]
MENU.ASM [new file with mode: 0644]
MENU.EQU [new file with mode: 0644]
MINE.ASM [new file with mode: 0644]
MPROC.ASM [new file with mode: 0644]
MPROC.EQU [new file with mode: 0644]
MUTOID.ASM [new file with mode: 0644]
NDSP1.ASM [new file with mode: 0644]
PALL.ASM [new file with mode: 0644]
PATCH.ASM [new file with mode: 0644]
POW1.ASM [new file with mode: 0644]
POW2.ASM [new file with mode: 0644]
RAM.ASM [new file with mode: 0644]
RBOSS.ASM [new file with mode: 0644]
README.md [new file with mode: 0644]
ROBO.ASM [new file with mode: 0644]
ROBO.CMD [new file with mode: 0644]
ROBO.EQU [new file with mode: 0644]
ROBO.TVS [new file with mode: 0644]
ROBOATT.ASM [new file with mode: 0644]
ROBODOOR.ASM [new file with mode: 0644]
ROBOPAL.ASM [new file with mode: 0644]
ROBOTS.ASM [new file with mode: 0644]
SCORE.ASM [new file with mode: 0644]
SHOTS.ASM [new file with mode: 0644]
SNAKE.ASM [new file with mode: 0644]
SND.EQU [new file with mode: 0644]
SOUNDS.ASM [new file with mode: 0644]
SYS.INC [new file with mode: 0644]
SYS.OLD [new file with mode: 0644]
SYS.RBO [new file with mode: 0644]
TANK.ASM [new file with mode: 0644]
TEMP.ASM [new file with mode: 0644]
TEST.ASM [new file with mode: 0644]
TEXT.ASM [new file with mode: 0644]
TRIG.ASM [new file with mode: 0644]
TVMNTR.ASM [new file with mode: 0644]
UTIL.ASM [new file with mode: 0644]
WAVES.ASM [new file with mode: 0644]
WLMAN.ASM [new file with mode: 0644]

diff --git a/ADJUST.ASM b/ADJUST.ASM
new file mode 100644 (file)
index 0000000..9450bf3
--- /dev/null
@@ -0,0 +1,2890 @@
+       .FILE   'ADJUST.ASM'\r
+       .TITLE  "ROBO GAME ADJUSTMENTS"\r
+       .WIDTH  132\r
+       .OPTION B,D,L,T\r
+       .MNOLIST\r
+\r
+;\r
+; SOFTWARE:\r
+;\r
+; COPYRIGHT (C) 1989 WILLIAMS ELECTRONICS GAMES, INC.\r
+;                              \r
+;\r
+; GET THE SYSTEM STUFF\r
+\r
+       .INCLUDE        "MPROC.EQU"             ;MPROC EQUATES\r
+       .INCLUDE        "DISP.EQU"              ;DISPLAY PROC. EQUATES\r
+       .INCLUDE        "\VIDEO\SYS\SYS.INC"    ;Z UNIT SYSTEM EQUATES\r
+       .INCLUDE        "\VIDEO\SYS\MACROS.HDR" ;MACROS DEFINITIONS\r
+       .INCLUDE        "IMGTBL.GLO"\r
+       .INCLUDE        "ROBO.EQU"\r
+       .INCLUDE        "LINK.EQU"              ;LINKY EQUATES\r
+       .INCLUDE        "MENU.EQU"              ;MENU EQUATES\r
+\r
+\r
+       .TEXT\r
+;\r
+*        IN THIS MODULE\r
+*\r
+         .DEF GO_ADJ\r
+         .DEF DO_ADJH\r
+        .DEF BCDBIN\r
+        .DEF BINBCD\r
+*\r
+*        IN HSTD.ASM\r
+*\r
+         .REF CMOS_VAL\r
+         .REF P_FORK\r
+         .REF INIT_HSR\r
+*\r
+*        IN TEST.ASM\r
+*\r
+         .REF         B_MENU,CYAN_BOX\r
+         .REF         L_MESS,TOP_BOX\r
+         .REF         LM_FINIS\r
+         .REF         LM_SETUP\r
+         .REF         AREUSURE\r
+         .REF         ST_STICK\r
+         .REF         GETSTICK\r
+         .REF         SUR_MESS\r
+         .REF         SURE_BOX\r
+         .REF         GET_FAC\r
+         .REF         MENU_TOP\r
+         .REF         DOBORDER\r
+         .REF         BLNKHELP\r
+         .REF         H_SLAVE\r
+;         .REF         CK_DOOR\r
+         .REF         COL_INST\r
+         .REF         STD_BORD\r
+         .REF         LD_CTAB\r
+*\r
+*        IN MENU.ASM\r
+*\r
+         .REF         ANY_BUT\r
+         .REF         MESS_MM\r
+         .REF         GET_CSPT\r
+*\r
+*        IN AUDIT.ASM\r
+*\r
+         .REF         GET_ADJ,HTOHXASC\r
+         .REF         PUT_ADJ\r
+         .REF         F_ADC_S\r
+         .REF         CS_ENTS           ;NUMBER OF HIGHEST IN COIN TABLE\r
+         .REF         STRCAT\r
+         .REF         NO_CREDS\r
+*\r
+\r
+*       OTHERS\r
+\r
+        .REF            RD15FONT,RD7FONT,STRCNRM,BLNKAREA,HEXTOASC\r
+        .REF            STRRNRM,STRLNRM,CLR_SCRN\r
+*\r
+         .TEXT\r
+*\r
+*        Adjustment menu requested.....make sure CMOS is ok!\r
+*\r
+GO_ADJ:   \r
+       MOVI    MEN_ADJ,A8\r
+\r
+GEN_ADJUST:\r
+        MOVE    A8,-*A12,L           ;PUSH MENU ON STACK\r
+\r
+        CALLA   CMOS_VAL            ;CHECK OUT THE REGION\r
+        JRZ     SET_OK              ;ITS OK.....CONTINUE....\r
+\r
+        JSRP    GET_FAC             ;BRING TO FACTORY SETTINGS OR QUIT.\r
+        JSRP    ANY_BUT\r
+\r
+        CALLA   CMOS_VAL             ;CAN'T GO IF WE'RE NOT OK NOW\r
+        JRNZ    GO_ADQ               ;ITS NOT VALID....NO ADJUSTING!\r
+\r
+SET_OK:   \r
+       MOVK    1,A0\r
+        MOVE    A0,-*A12,W           ;LIKE GEN_MENU...KEEP NUMBER ON STACK\r
+*\r
+ADJ_LOOP: \r
+       CALLA   CLR_SCRN             ;CLEAR THE SCREEN!\r
+\r
+        MOVI    ADJ_ADV,A8\r
+        JSRP    L_MESS               ;PRINT THE NEW INSTRUCTIONS\r
+\r
+        MOVE    *A12(WORD_SIZE),A8,L ;GET THE MENU\r
+        JSRP    MENU_TOP             ;PRINT OUT THE TOP.\r
+        MOVI    ROBO_YELLOW,A9\r
+        CALLA   COL_INST             ;PUT UP A DIFFERENT INSTR. BOX\r
+\r
+        MOVE    *A12,A9,W            ;GET INDEX TO USE.\r
+        JSRP    B_MENU               ;FETCH THE ENTRY TO ADJUST.\r
+*\r
+*       EACH ADJUSTMENT HAS A STRUCTURE ASSOCIATED WITH IT.\r
+*       A9 RETURNS A STRUCTURE FOR THE ITEM SELECTED.\r
+*\r
+        MOVE    A9,A9                ;0 IS RETURN TO MAIN MENU\r
+        JRZ     GO_ADJX\r
+*\r
+*       A8 HAS THE MENU NUMBER.....UNLIKE GEN_MENU...DON'T STEP!\r
+*\r
+        MOVE    A8,*A12,W            ;PUT IT SAFELY ON OUR STACK.\r
+\r
+        MOVE    *A9(AD_ROUT),A0,L    ;GET THE ROUTINE TO CALL FOR ACTIVATION\r
+        MOVI    ADJ_LOOP,A7\r
+        MOVE    A7,-*A12,L           ;PUSH RETURN ADDRESS\r
+        JUMP    A0                   ;"CALL THE ROUTINE (PASSING STRUCT IN A9)\r
+\r
+GO_ADJX:  \r
+       ADDI    WORD_SIZE,A12        ;"POP" THE POSITION INDICATOR\r
+GO_ADQ:   \r
+       ADDI    LONG_SIZE,A12        ;POP MENU\r
+        RETP                         ;OK...RETURN!\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          PRICE_ADJ                                                     *\r
+*                                                                        *\r
+*          THIS IS EXECUTED WHEN THE "CUSTOM PRICING" ENTRY IS           *\r
+*          SELECTED FOR ADJUSTMENT FROM THE ADJUSTMENT MENU.             *\r
+*                                                                        *\r
+*          IT CREATES A WHOLE NEW ADJUSTMENT MENU CONTIAING:             *\r
+*                                                                        *\r
+*                                                                        *\r
+*                          LEFT SLOT UNITS                               *\r
+*                          CENTER SLOT UNITS                             *\r
+*                          RIGHT SLOT UNITS                              *\r
+*                          UNITS / CREDIT                                *\r
+*                          UNITS / BONUS                                 *\r
+*                          MINIMUM UNITS                                 *\r
+*                          CREDITS TO START                              *\r
+*                          CREDITS TO CONTINUE                           *\r
+*                          SHOW CREDIT FRACTIONS                         *\r
+*                          COINS PER DOLLAR                              *\r
+*                          FREE PLAY                                     *\r
+*                          MAXIMUM CREDITS                               *\r
+*                          COIN PAGE HELP                                *\r
+*                                                                        *\r
+**************************************************************************\r
+PRICE_ADJ:\r
+        MOVI    MEN_CUST,A8           ;HANDLE JUST LIKE MAIN ADJ. MENU\r
+        JAUC    GEN_ADJUST\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          GEN_ADJ                                                       *\r
+*                                                                        *\r
+*          THIS IS THE ROUTINE THAT IS EXECUTED TO DO                    *\r
+*          THE ADJUSTING ONCE A BUTTON IS CLICKED ON                     *\r
+*          AN ADJUSTMENT.                                                *\r
+*                                                                        *\r
+*          A9 -> ADJUSTMENT STRUCTURE!                                   *\r
+*                                                                        *\r
+**************************************************************************\r
+GEN_ADJ:  \r
+       MOVE    A9,*A13(PDATA),L     ;SAVE THE STRUCTURE POINTER\r
+\r
+        MOVE    A9,A8                ;GET TO GENERAL POINTING REGISTER\r
+        JSRP    DO_IN_WHITE          ;GO FROM LF TO WHITE RIGHT AWAY.\r
+\r
+;        JSRP    ADJ_DOOR              ;CAN'T DO IT UNLESS DOOR IS OPEN.\r
+        MOVE    A0,A0\r
+        JRNZ    ADJ_CAN              ;CANCELLED\r
+*\r
+        CALLR   CLR_MAIN             ;CLEAR OUT THE MAIN MENU REGION\r
+        CALLR   ADJ_INST             ;PUT INSTRUCTIONS AT BOTTOM.\r
+        JSRP    ST_STICK             ;LOCKOUT STUCK SWITCHES\r
+\r
+        SLEEP   2                    ;STOP RACE ON INSTRUCTIONS\r
+ADJ_CHNG: \r
+       SLEEP   1                    ;NOW LOOP ON STICK...EXIT\r
+\r
+        MOVI    31000H,A5                ;TYPOMATIC....BOT HALF SAYS DON'T TIME OUT\r
+*                                         ;TOP HALF IS TICKS PER HIT\r
+        JSRP    GETSTICK                 ;ASK THE STICK HANDLER.......\r
+        MOVE    *A13(PDATA),A8,L         ;GET OUR POINTER\r
+        MOVE    A0,A1                    ;KEEP GETSTICK VALUE\r
+        JRZ     ADJ_CHNG                 ;ITS ZERO....NO MORE WORK NEEDED\r
+\r
+        MOVE    *A8(AD_CMOS),A0,W        ;GET ADJ NUMBER\r
+        MOVE    A0,A2                    ;COPY FOR LATER\r
+\r
+        CALLR   GET_EADJ                  ;READ IT OUT (FIXING ZERO IF NEC)\r
+        MOVE    A0,A3                     ;SAVE "OLD" VALUE\r
+*\r
+*       A0 = ADJUSTMENT VALUE\r
+*       A1 = GET_STICK VALUE\r
+*       A2 = ADJUSTMENT NUMBER\r
+*       A3 = ADJUSTMENT VALUE READ!\r
+*       A8 = ADJUSTMENT STRUCTURE POINTER\r
+*\r
+        CMPI    3,A1                     ;BUTTON......BACK TO ADJ MENU!\r
+        JRZ     ADJ_BUTT                 ;YEP....WE'RE OUT OF HERE.\r
+\r
+        CMPI    2,A1\r
+        JRZ     ADJ_DOWN                 ;ITS DOWN....\r
+*\r
+*       REQUEST TO GO UP....\r
+*\r
+        CALLR   INC_ADJ                   ;INCREMENT IT\r
+        JRUC    ADJ_JOIN\r
+\r
+ADJ_DOWN: \r
+       CALLR   DEC_ADJ                   ;DECREMENT IT\r
+ADJ_JOIN: \r
+       MOVE    A2,A0                     ;ADJUSTMENT NUMBER\r
+        CALLR   GET_EADJ                  ;READ IT OUT (FIXING ZERO IF NEC)\r
+        CMP     A0,A3                     ;DID IT NOT CHANGE?\r
+        JRZ     ADJ_CHNG                  ;NOPE....NO ACTION!\r
+*\r
+*       IT CHANGED....WE NEED TO BEEP AND RE-PLOT LOWER\r
+*       PORTION TO REFLECT NEW SETTING.\r
+*\r
+        SOUND1  ADJ_BEEP               ;MAKE A BEEP.\r
+        JSRP    DO_IN_WHITE            ;AND UPDATE THE ADJUSTMENT\r
+\r
+        JRUC    ADJ_CHNG               ;AND LOOP!\r
+\r
+DO_IN_WHITE:\r
+        CALLR   CLR_CUR                ;CLEAR OUT CURRENT SETTING\r
+        MOVI    ROBO_WHITE,A11        ;THEY'RE STARING....NO HEADACHES\r
+        JAUC    AD_CRVAL               ;PRINT THE NEW VALUE\r
+\r
+ADJ_BUTT: \r
+       SOUND1  ADJ_CASH\r
+ADJ_CAN:  \r
+       RETP\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          DEC_ADJ                                                       *\r
+*                                                                        *\r
+*          THIS IS CALLED TO MOVE TO THE PREVIOUS VALUE.                 *\r
+*          A0 = VALUE READ FROM CMOS                                     *\r
+*          A2 = ADJUSTMENT NUMBER (TO WRITE IT BACK)                     *\r
+*          A8 = ADJUSTMENT STRUCTURE POINTER.                            *\r
+*                                                                        *\r
+*          INC_ADJ IS USED TO STEP TO THE NEXT VALUE                     *\r
+*                                                                        *\r
+**************************************************************************\r
+DEC_ADJ:  \r
+       MMTM    SP,A0,A1,A2,A3\r
+        MOVE    A0,A3                          ;COPY ORIGINAL VALUE\r
+        MOVE    *A8(AD_DELTA),A1,L             ;GET UNITS BETWEEN VALUES\r
+        CALLR   MAKE_BIN_IF_NEC                ;CHANGE RADIX FOR MATH IF NECESSARY\r
+        SUB     A1,A0                          ;REMOVE THIS FROM READ VALUE\r
+        JRUC    FINISH_CHANGE                  ;GO TO COMMON ROUTINE TO WRAP IT UP\r
+\r
+INC_ADJ:  \r
+       MMTM    SP,A0,A1,A2,A3\r
+        MOVE    A0,A3                          ;COPY ORIGINAL VALUE\r
+        MOVE    *A8(AD_DELTA),A1,L             ;GET UNITS BETWEEN VALUES\r
+        CALLR   MAKE_BIN_IF_NEC\r
+        ADD      A1,A0                         ;REMOVE THIS FROM READ VALUE\r
+\r
+FINISH_CHANGE:\r
+        CALLR   BCD_IF_NEC                     ;BACK TO BCD AFTER THE MATH\r
+        CALLR   PUT_IN_RANGE                   ;ADJUST TO ACCOUNT FOR WRAP AND LIMITS\r
+        MOVE    *A8(AD_ZEQU),A1,L              ;This number becomes zero\r
+        CMP     A0,A1                          ;is this the number?\r
+        JRNZ    FC_NZ                          ;NOPE...STORE IT!\r
+        CLR     A0                             ;USE ZERO IN PLACE OF THIS NUMBER!\r
+\r
+FC_NZ:    \r
+       MOVE    A0,A1                          ;WRITING REG\r
+        MOVE    A2,A0                          ;ADJUSTMENT NUMBER\r
+        CALLA   PUT_ADJ                        ;WRITE IT BACK\r
+*\r
+*       SEE IF WE'RE DOING MASTER COINAGE.\r
+*\r
+        CMP     A1,A3                          ;DID THE NUMBER CHANGE?\r
+        JRZ     NOT_COIN                       ;NOPE...DON'T LOAD IT UP!\r
+*\r
+*       AT THIS POINT WE KNOW THAT THE VALUE BEING ADJUSTED CHANGED.\r
+*\r
+        CALLR   DIRTY_IF_NEC                   ;IF ITS A COIN VALUE TAKE NOTE!\r
+\r
+        CMPI    ADJPRICE,A0                    ;IS IT?\r
+        JRNZ    NOT_COIN                       ;NOT COIN\r
+\r
+        CALLA   LD_CTAB                        ;BATCH WRITE THE VALUES IN!\r
+        CALLA   NO_CREDS                       ;REMOVE CREDITS AND FRACTIONS WHEN\r
+*                                               ;MODE CHANGES\r
+\r
+NOT_COIN:\r
+        CALLA   F_ADC_S                        ;MAKE CHECKSUM VALID!\r
+       MMFM    SP,A0,A1,A2,A3\r
+       RETS\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          DIRTY_IF_NEC                                                  *\r
+*                                                                        *\r
+*          THIS IS CALLED BY ALL ADJUSTMENTS WHEN THEY ACTUALLY          *\r
+*          CHANGE THEIR VALUE.  FOR THE COINAGE ADJUSTMENTS,             *\r
+*          IF ANY OF THE 1ST 6 VALUES ARE TOUCHED WE NEED TO MAKE        *\r
+*                                                                        *\r
+*                          ADJ1ST6 = ZERO.                               *\r
+*                                                                        *\r
+*          IF ANY OF THE 1ST 8 VALUES ARE TOUCHED WE NEED TO MAKE        *\r
+*                                                                        *\r
+*                          ADJVIRGIN = ZERO.                             *\r
+*                                                                        *\r
+*          THE AD_FLAGS FIELD IN THE ADJUSTMENT STRUCTURE HAVE BITS      *\r
+*          INDICATING WHICH (IF ANY) SHOULD BE DIRTYED.                  *\r
+*                                                                        *\r
+**************************************************************************\r
+DIRTY_IF_NEC:\r
+       \r
+        MMTM    SP,A0,A1,A2\r
+        MOVE    *A8(AD_FLAGS),A2,W        ;FETCH THE FLAGS\r
+\r
+        BTST    VIRG_BIT,A2               ;DOES CHANGING THIS SAY SET VIRG BIT.\r
+        JRZ     NOT_1ST_8                 ;NOPE\r
+\r
+        MOVI    ADJVIRGIN,A0\r
+        CLR     A1\r
+        CALLA   PUT_ADJ\r
+\r
+NOT_1ST_8:\r
+        BTST    SIX_BIT,A2                ;1ST 6?\r
+        JRZ     NOT_1ST_6\r
+\r
+        MOVI    ADJ1ST6,A0\r
+        CLR     A1\r
+        CALLA   PUT_ADJ\r
+NOT_1ST_6:\r
+        BTST    HSR_BIT,A2                ;HIGH SCORE RESET NUM?\r
+        JRZ     NOT_HSR                   ;NOPE\r
+\r
+        CALLA   INIT_HSR                  ;IT WAS CHANGED....STUFF THE VALUE!\r
+\r
+NOT_HSR:\r
+       MMFM    SP,A0,A1,A2\r
+       RETS\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          MAKE_BIN_IF_NEC                                               *\r
+*                                                                        *\r
+*          THIS IS CALLED AFTER THE A0 HAS THE ADJUSTMENT AND            *\r
+*          A1 HAS THE AMOUNT TO ADD OR SUBTRACT.  IF WE'RE               *\r
+*          DOING BCD MATH THEN CONVERT BOTH A0 AND A1.                   *\r
+*                                                                        *\r
+**************************************************************************\r
+MAKE_BIN_IF_NEC:\r
+        MMTM    SP,A2\r
+        MOVE    *A8(AD_FLAGS),A2,W             ;GET THE FLAGS\r
+        BTST    BCD_BIT,A2                     ;BCD?\r
+        JRZ     MBINX                          ;NOPE\r
+\r
+        CALLA   BCDBIN                         ;CONVERT A0 TO BINARY\r
+        MOVE    A0,A2                          ;SAVE\r
+        MOVE    A1,A0                          ;NOW A1\r
+        CALLA   BCDBIN\r
+        MOVE    A0,A1\r
+        MOVE    A2,A0                          ;NOW PUT A0 BACK\r
+MBINX:   \r
+       MMFM    SP,A2\r
+       RETS\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          BCD_IF_NEC                                                    *\r
+*                                                                        *\r
+*          A0 HAS A RESULT OF THE ADJUSTMENT.....IN BINARY.              *\r
+*          CONVERT BACK TO BCD IF THAT'S THE MODE.                       *\r
+*                                                                        *\r
+**************************************************************************\r
+BCD_IF_NEC:\r
+        MMTM    SP,A2\r
+        MOVE    *A8(AD_FLAGS),A2,W             ;GET THE FLAGS\r
+        BTST    BCD_BIT,A2                     ;BCD?\r
+        JRZ     BINX                           ;NOPE\r
+\r
+        CALLA   BINBCD                         ;BACK TO BCD\r
+\r
+BINX:    \r
+       MMFM    SP,A2\r
+       RETS\r
+\r
+ADJ_CASH\r
+       .WORD   >F7A5-10H,8,>8080,0             ;CASH REGISTER SOUND \r
+ADJ_LBEEP  \r
+ADJ_BEEP       .WORD   >F3F7-10H,>20,>80AF,0           ;BEEP TONE\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          CLR_CUR                                                       *\r
+*                                                                        *\r
+*          THIS IS CALLED TO CLEAR OUT THE AREA WHERE THE                *\r
+*          "CURRENT SETTING" IS BEING DISPLAYED.                         *\r
+*                                                                        *\r
+**************************************************************************\r
+CLR_CUR:  \r
+       MMTM    SP,A3,A4\r
+        MOVI    AM_HX,A3             ;THIS IS LEFT MARGIN OF HELP AREA\r
+\r
+        MOVI    CUR_LRX,A4           ;RIGHT X\r
+        SUB     A3,A4                ;A4 HAS X DISTANCE\r
+\r
+        ADDI    ADJ_ULY*10000H,A3    ;UPPER LEFT Y\r
+        ADDI    (256-ADJ_ULY)*10000H,A4  ;Y GOES TO BOTTOM OF SCREEN\r
+        CALLA   BLNKAREA                 ;ITS BLANK NOW!\r
+       MMFM    SP,A3,A4\r
+       RETS\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          CLR_MAIN                                                      *\r
+*                                                                        *\r
+*          THIS IS CALLED TO CLEAR OUT THE ADJUSTMENT MENU AND           *\r
+*          THE CYAN INSTRUCTIONS FOR THIS MENU.                          *\r
+*                                                                        *\r
+**************************************************************************\r
+CLR_MAIN: \r
+       MMTM    SP,A3,A4\r
+        MOVI    TIT_ULX,A3           ;LEFT EDGE\r
+        MOVI    AM_HX,A4         ;UP TO THIS EDGE\r
+        SUB     A3,A4                ;X'S ARE SET.\r
+        ADDI    INST_ULY*10000H,A3   ;TOP Y\r
+        ADDI    (400-INST_ULY)*10000H,A4  ;Y DISTANCE\r
+        CALLA   BLNKAREA\r
+       MMFM    SP,A3,A4\r
+       RETS\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          ADJ_DOOR                                                       *\r
+*                                                                        *\r
+*          PRINT MESSAGE THAT DOOR MUST BE OPENED TO CONTINUE.           *\r
+*          HOLD CONTROL TILL BUTTON IS PRESSED (CANCELLING)              *\r
+*          OR DOOR IS OPEN.                                              *\r
+*                                                                        *\r
+*          RETURN A0 = 0 MEANS DOOR GOT OPENED.                          *\r
+*                 A0 .NE 0 FOR BUTTON PRESSED.                           *\r
+*                                                                        *\r
+**************************************************************************\r
+;ADJ_DOOR:\r
+;        CALLA   CK_DOOR              ;IS THE DOOR OPEN?  NZ=OPEN\r
+;        JRNZ    DORET                ;YEP.......RETURN A0=0\r
+;\r
+;        CALLA   CLR_MAIN             ;CLEAR THE SCREEN\r
+;        MOVI    CUR_ULY,A10          ;PLOT TO SQUARE UP WITH "CURRENT SETTING"\r
+;        CALLA   ADINBOX             ;PUT A NICE BOX AROUND IT.\r
+;        MOVI    MESS_OPEN_OR_CANCEL,A8\r
+;        JSRP    L_MESS               ;GIVE INSTRUCTIONS\r
+;        JSRP    ST_STICK             ;GET "STARTING STATE"\r
+\r
+;WD1:      \r
+;      SLEEP   1                    ;NAP A BIT\r
+\r
+;        CALLA   CK_DOOR\r
+;        JRNZ    DORET                ;ITS OPEN...RETURN OK\r
+\r
+;        MOVI    40010H,A5            ;TYPOMATIC PARMS\r
+;        JSRP    GETSTICK             ;CHECK BUTTONS\r
+;        CMPI    3,A0                 ;BUTTON?\r
+;        JRNZ    WD1                  ;NOT YET\r
+\r
+;        SOUND1  ADJ_LBEEP            ;MAKE A BEEP.\r
+;        MOVI    3,A0                 ;RETURN A0 .NE. 0\r
+*\r
+*       RETURN A0=3                  \r
+*\r
+;        RETP\r
+\r
+*       RETURN A0=0  (CONTINUE)\r
+*\r
+;DORET:    \r
+;      CLR     A0\r
+;        RETP\r
+\r
+\r
+*         \r
+**************************************************************************\r
+*                                                                        *\r
+*          ADJ_INST                                                      *\r
+*                                                                        *\r
+*          THIS IS CALLED TO PUT AN INSTRUCTION BOX OUT                  *\r
+*          WHILE ADJUSTMENT IS TAKING PLACE.                             *\r
+*                                                                        *\r
+**************************************************************************\r
+ADJ_INST: \r
+        MOVE    *A13(PDATA),A8,L     ;PASS THE ADJUSTMENT POINTER\r
+        MOVI    ADJ_INST_P,A7\r
+        CALLA   P_FORK               ;START IT UP!\r
+        RETS\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          ADJ_INST_P                                                    *\r
+*                                                                        *\r
+*          THIS IS CALLED TO PUT INSTRUCTIONS FOR ADJUSTMENT             *\r
+*          MODIFICAITION UP AND FLASH THE ARROW (IF ITS NOT              *\r
+*          TOO ANNOYING)                                                 *\r
+*                                                                        *\r
+**************************************************************************\r
+\r
+ADJ_INST_P:\r
+        JSRP   ADJUSTING        ;PUT UP "ADJUSTING DIFFICULTY" MESSAGE\r
+\r
+        MOVE    A10,A3          ;STASH # OF ARROWS WHERE IT WILL BE SAFE\r
+        CALLR   ADINBOX         ;PUT THE BOX OUT\r
+\r
+        MOVI    INST_TO_ADJ,A8\r
+        JSRP    L_MESS          ;PRINT OUT INSTRUCTIONS\r
+\r
+        MOVI    ADJ_ARROW,A8\r
+        JSRP    L_MESS\r
+\r
+        JAUC    SUCIDE\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          ADINBOX                                                       *\r
+*                                                                        *\r
+*          THIS PUTS A BOX AROUND THE ADJUSTMENT INSTRUCTIONS.           *\r
+*                                                                        *\r
+**************************************************************************\r
+*\r
+INBOX_HEIGHT     EQU     7BH\r
+\r
+ADINBOX:  \r
+       MMTM    SP,A10\r
+        MOVI    CUR_ULY-2,A10          \r
+        SLL     16,A10\r
+        MOVI    TIT_ULX,A4           ;UPPER RIGHT X\r
+        MOVY    A10,A4               ;UPPER RIGHT\r
+\r
+        MOVI    AM_RX,A5\r
+        MOVY    A10,A5               ;START WITH BASE Y\r
+        ADDI    INBOX_HEIGHT*10000H,A5\r
+\r
+        CALLR   WH_BORD\r
+       MMFM    SP,A10\r
+       RETS\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          ADJUSTING                                                     *\r
+*                                                                        *\r
+*          THIS IS CALLED WHEN WE ENTER THE "ADJUSTING" PHASE            *\r
+*          IT PUTS A BOX IN THE LEFT AREA TO SAY WHAT WE ARE ADJUSTING.  *\r
+*                                                                        *\r
+**************************************************************************\r
+ADJUSTING:\r
+        MOVE    A8,A2                ;PUT ADJUSTMENT BLOCK PTR WHERE ITS SAFE\r
+        MOVI    (CUR_ULY-31H)*10000H,A4        ;FOR DO_BORDER\r
+        ADDI    TIT_ULX,A4                     ;A4 IS REASONABLY EASY\r
+\r
+        MOVI    ((CUR_ULY-2)+MB_YWID)*10000H,A5    ;OVERLAP THE ONE BELOW IT\r
+        ADDI    AM_RX,A5                       ;THIS IS RIGHT EDGE\r
+\r
+        CALLR   WH_BORD                        ;DO A WHITE BORDER\r
+\r
+        MOVI    MES_ADNAME,A8                  ;PUT THE ADJUSTMENT NAME UP\r
+        CALLA   LM_SETUP\r
+        MOVE    *A2(AD_MAIN),A8,L              ;GET THE MAIN MENU MESSAGE\r
+        JSRP    LM_FINIS\r
+\r
+        MOVI    MES_ADJUSTING,A8\r
+        JSRP    L_MESS\r
+        RETP\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          PARAM_VAL                                                     *\r
+*                                                                        *\r
+*          This is called to summarize the values of the                 *\r
+*          important adjustments on the parameter page.                  *\r
+*                                                                        *\r
+**************************************************************************\r
+*\r
+*        WE WILL PRING OUT 3 LINES IN A BOX.\r
+*\r
+*        1) Pricing:\r
+*        2) Free Play:   yes/no\r
+*        3) Maximum Credits:\r
+*\r
+\r
+PDY      EQU     HELP_DY+(HELP_DY/2)\r
+PMARG    EQU     6\r
+\r
+PARAM_VAL:\r
+        MOVI    8,A1                      ;Setup a box for our 3 lines\r
+        CALLR   ADJ_BOX                   ;(a10 is set as y for the 3 lines)\r
+\r
+        ADDI    6,A10                     ;PUSH TO CENTER 5 LINES IN BOX\r
+\r
+        CALLR   GET_COIN_TITLE            ;COIN MODE\r
+        MOVI    MESS_GP,A8\r
+        JSRP    SMALL_LEFT_RIGHT          ;PRINT THE LINES\r
+\r
+        ADDI    PDY,A10               ;PUSH TO NEXT LINE\r
+\r
+        MOVI    M_NO,A2                   ;ASSUME "NO"\r
+        MOVI    ADJFREPL,A0\r
+        CALLA   GET_ADJ                   ;GET THE FREE PLAY ADJUSTMENT\r
+        JRZ     NOT_FREE\r
+        MOVI    M_YES,A2\r
+\r
+NOT_FREE: \r
+       MOVI    MESS_FP,A8\r
+        JSRP    SMALL_LEFT_RIGHT          ;PRINT THE LINES\r
+\r
+        ADDI    PDY,A10               ;PUSH TO NEXT LINE\r
+         \r
+        MOVI    ADJMAXC,A0\r
+        MOVI    MESS_MAX,A8\r
+        JSRP    ADJ_LEFT_RIGHT       ;A0 = ADJUST  A8 = MESSAGE\r
+*\r
+*       CREDITS TO START AND CONTINUE NEEDS TO HANDLE PLURAL ETC.\r
+*\r
+        ADDI    PDY,A10               ;PUSH TO NEXT LINE\r
+        MOVI    ADJCSTRT,A0          ;GET CREDITS REQUIRED TO START   \r
+        MOVI    M_CTS_PL,A8                                           \r
+        JSRP    ADJ_LEFT_RIGHT       ;A0 = ADJUST  A8 = MESSAGE\r
+*                                                                      \r
+*       NOW THE CREDITS TO CONTINUE                                   \r
+*                                                                      \r
+        ADDI    PDY,A10               ;PUSH TO NEXT LINE\r
+        MOVI    ADJCCONT,A0          ;GET CREDITS REQUIRED TO CONTINU \r
+        MOVI    M_CTC_PL,A8                                           \r
+        JSRP    ADJ_LEFT_RIGHT       ;A0 = ADJUST  A8 = MESSAGE\r
+\r
+        RETP\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          ADJ_LEFT_RIGHT                                                *\r
+*                                                                        *\r
+*          A8 HAS MESSAGE                                                *\r
+*          A0 HAS ADJUSTMENT                                             *\r
+*          A10 HAS HEIGHT.                                               *\r
+*                                                                        *\r
+*          LEFT JUSTIFY A8 MESSAGE                                       *\r
+*          RIGHT JUSTIFY A0 ADJUSTMENT (AFTER READING IT)                *\r
+*                                                                        *\r
+**************************************************************************\r
+ADJ_LEFT_RIGHT:\r
+        MOVE    A8,A3                ;STASH MESSAGE\r
+\r
+        CALLA   GET_ADJ\r
+        MOVE    A0,A8\r
+        CALLA   HEXTOASC             ;A8 POINTS TO NUMBER STRING\r
+\r
+        MOVE    A8,A2\r
+        MOVE    A3,A8                ;GET MESSAGE IN A8\r
+\r
+        JRUC    SMALL_LEFT_RIGHT\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          SMALL_LEFT_RIGHT                                              *\r
+*                                                                        *\r
+*          THIS IS CALLED TO PRINT A LEFT AND RIGHT JUSTIFIED            *\r
+*          PAIR OF STRINGS IN THE "CURRENT SETTING BOX"                  *\r
+*                                                                        *\r
+*          A2 = RIGHT JUSTIFIED STRING                                   *\r
+*          A8 = LEFT JUSTIFIED STRING TO PRINT                           *\r
+*          A10 = Y VALUE                                                 *\r
+*                                                                        *\r
+**************************************************************************\r
+SMALL_LEFT_RIGHT:\r
+        MMTM    A12,A11,A6,A10,A9,A3\r
+\r
+        MOVI    ROBO_WHITE,A6       ;SOLID WHITE FOR THESE MULTI-LINERS\r
+        MOVI    RD7FONT,A11          ;USE BABY FONT\r
+\r
+        MOVI    AM_HX+PMARG,A9    ;LEFT X IS INSIDE LEFT LINE\r
+\r
+        MOVE    A10,A3                  ;SAVE Y IN A3\r
+        SLL     16,A3\r
+        MOVY    A3,A9                ;POINTER SET!\r
+\r
+        MOVI    SPACING07,A10\r
+\r
+        CLR     A0\r
+\r
+        JSRP    STRLNRM              ;DO IT!\r
+\r
+        MOVE    A2,A8                ;GET RIGHT JUSTIFIED STRING\r
+        MOVI    TIT_LRX-PMARG,A9  ;INSIDE RIGHT MARGIN\r
+        MOVY    A3,A9                ;AT OUR Y\r
+        JSRP    STRRNRM              ;PRINT IT!\r
+\r
+       MMFM    A12,A11,A6,A10,A9,A3\r
+       RETP\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          COIN_SET                                                      *\r
+*                                                                        *\r
+*          THIS IS THE ROUTINE THAT IS CALLED TO DISPLAY THE CURRENT     *\r
+*          COINAGE SETTINGS.                                             *\r
+*                                                                        *\r
+*          A8 HAS POINTER TO ADJUSTMENT BLOCK                            *\r
+*          A11 HAS THE COLOR TO USE                                      *\r
+*                                                                        *\r
+**************************************************************************\r
+COIN_SET:\r
+        CALLR   TAMPEREDP            ;HAS THE 1ST 6 COIN VALUE BEEN TAMPERED WITH?\r
+        JRZ     SBO                  ;YEP....SMALL BOX ONLY!\r
+\r
+        MOVI    8,A1                      ;BIG BOX FOR OUTSIDE\r
+        CALLR   ADJ_BOX\r
+SBO:     \r
+       MOVI    1,A1                      ;DRAW A BOX TO HOLD 1 LINE\r
+        CALLR   ADJ_BOX                   ;DRAW THE BOX....PASS BACK 1ST PLOT LINE\r
+*\r
+*       THE ABOVE 2 CALLS SHOULD CREATE A BOX LIKE:\r
+*\r
+*                    ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»\r
+*                    º     U.S.A. 1      º\r
+*                    ºÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹\r
+*                    º 1 COIN / 1 CREDIT º\r
+*                    º                   º\r
+*                    º                   º\r
+*                    º 25c   $1.00   25c º\r
+*                    ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ\r
+*\r
+*                A10 HAS THE PLACE TO PLOT THE TITLE LINE.\r
+*\r
+        MOVE    A10,A4               ;KEEP THE Y HANDY.\r
+*\r
+        CALLR   GET_COIN_TITLE       ;GET TITLE FOR BIG BOX IN A2.\r
+*\r
+*       A2 HAS STRING\r
+*       A11 IS COLOR\r
+*       A10 IS Y TO PRINT\r
+*\r
+COIN_TIT:\r
+        JSRP    DO_BIG_LINE               ;PRINT THIS LINE!\r
+\r
+        MOVI    ROBO_WHITE,A11      ;DON'T GLOW INSIDE BOX IF THAT'S THE MODE\r
+\r
+        CALLR   TAMPEREDP            ;HAS THE 1ST 6 COIN VALUE BEEN TAMPERED WITH?\r
+        JRZ     NO_INFO              ;YEP....JUST GIVE THE STARTS AND CONTINUES\r
+\r
+        CALLA   GET_CSPT             ;A6 POINTS AT THE CSELECT BLOCK\r
+        MOVE    *A6(CS_LIST),A2,L    ;FETCH POINTER TO MESSAGE LIST\r
+        JRZ     NO_HEADERS           ;NO LIST!\r
+\r
+        MOVI    COIN_HEAD_Y,A10      ;AT THIS HEIGHT\r
+\r
+NEXT_HEADER:\r
+        MOVE    *A2+,A8,L            \r
+        JRZ     NO_HEADERS           ;HEADERS ARE OUT...CONTINUE\r
+\r
+        JSRP    PRINT_SMALL_LINE     ;PRINT THE LINE\r
+        ADDI    12,A10               ;PUSH TO NEXT LINE\r
+        JRUC    NEXT_HEADER\r
+\r
+NO_HEADERS:\r
+        MOVI    MESS_CTS,A10         ;SET Y FOR COIN SLOT LINE.\r
+        MOVI    M_SLOTVAL,A8\r
+        JSRP    PRINT_SMALL_LINE     ;HEADER FOR COIN SLOT VALUE\r
+\r
+        ADDI    12,A10               ;PUSH Y UP FOR A GAP             *\r
+\r
+        CALLA   GET_CSPT             ;A6 POINTS AT THE CSELECT BLOCK\r
+        MOVE    *A6(CS_SLOTS),A8,L   ;PRINT COIN SLOT INFO\r
+        JSRP    PRINT_SMALL_LINE      ;PRINT THE LINE\r
+\r
+NO_INFO:\r
+        RETP                         ;DONE FOR NOW\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          GET_COIN_TITLE                                                *\r
+*                                                                        *\r
+*          THIS IS CALLED TO FETCH THE CHARACTER STRING MESSAGE          *\r
+*          FOR THE CURRENT COIN MODE.  IF ITS STANDARD, THEN             *\r
+*          IT IS FETCHED BASED ON THE COIN SELECT TABLE.                 *\r
+*                                                                        *\r
+*          IF THE 1ST 6 PARAMETERS HAVE BEEN MODIFIED, THEN              *\r
+*          IT RETURNS THE STRING "NON-STANDARD".                         *\r
+*                                                                        *\r
+**************************************************************************\r
+GET_COIN_TITLE:\r
+        MMTM    SP,A6                ;PRESERVE FOR COIN SELECT TABLE\r
+\r
+        CALLA   GET_CSPT             ;A6 POINTS AT THE CSELECT BLOCK\r
+\r
+        MOVI    MESS_TAMPERED,A2\r
+\r
+        MOVI    ADJ1ST6,A0           ;NON-STANADARD TITLE IF 1ST 6 MODIFIED\r
+        CALLA   GET_ADJ              ;WELL?\r
+        JRZ     GCTX                 ;PUT OUT THE TITLE LINE AS TAMPERED!\r
+\r
+        MOVE    *A6(CS_TITLE),A2,L   ;GET THE CSELECT TITLE FOR ITS VALUES\r
+\r
+GCTX:  \r
+       MMFM    SP,A6                ;PRESERVE FOR COIN SELECT TABLE\r
+       RETS\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          TAMPEREDP                                                     *\r
+*                                                                        *\r
+*          HAVE THE COIN PARAMETERS BEEN TAMPERED WITH.                  *\r
+*          THIS IS NON-ZERO IF ANY OF THE 1ST 6 COIN                     *\r
+*          PARAMETERS HAVE BEEN ADJUSTED.                                *\r
+*                                                                        *\r
+**************************************************************************\r
+TAMPEREDP:\r
+        MMTM    SP,A0\r
+        MOVI    ADJ1ST6,A0           ;JUST CHECK THE 1ST 6\r
+        CALLA   GET_ADJ              ;HAS IT BEEN TAMPERED WITH (0 MEANS YES)\r
+       MMFM    SP,A0\r
+       RETS\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          PRINT_SMALL_LINE                                              *\r
+*                                                                        *\r
+*          THIS IS CALLED TO PRINT A LINE IN THE "CURRENT SETTING"       *\r
+*          BOX FOR THE COINAGE.                                          *\r
+*                                                                        *\r
+*          A8 = STRING TO PRINT                                          *\r
+*          A11 = COLOR                                                   *\r
+*          A10 = Y VALUE                                                 *\r
+*                                                                        *\r
+*          PRINT IN THE 7 POINT FONT WITH X CENTERED FOR THE             *\r
+*          HELP SYSTEM.                                                  *\r
+*                                                                        *\r
+**************************************************************************\r
+PRINT_SMALL_LINE:\r
+        MMTM    A12,A11,A6,A10,A9\r
+\r
+        MOVE    A11,A6               ;COLOR SET\r
+        MOVI    RD7FONT,A11          ;USE BABY FONT\r
+\r
+        MOVI    AM_HX,A9,W           ;GET LEFT X\r
+        CALLR   LEFT_TO_CENTER       ;CONVERT IT\r
+\r
+        MOVE    A10,A0\r
+        SLL     16,A0\r
+        MOVY    A0,A9                ;POINTER SET!\r
+\r
+        MOVI    SPACING07,A10\r
+\r
+        CLR     A0\r
+\r
+        JSRP    STRCNRM              ;DO IT!\r
+\r
+       MMFM    A12,A11,A6,A10,A9\r
+        RETP\r
+\r
+*\r
+*        DO_ADJH\r
+*\r
+*        THIS IS CALLED TO PLOT THE RIGHT HALF OF THE SCREEN\r
+*        FOR EACH ADJUSTMENT AS THE USER SELECTS THEM ON\r
+*        THE ADJUSTMENT MENU.\r
+*\r
+*        THE FORMAT IS AS FOLLOWS:\r
+*\r
+*    ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»\r
+*    º                  A D J U S T M E N T    M E N U                   º\r
+*    º                       ROBO  REVISION  1.4                         º\r
+*    ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ\r
+*    ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»  ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»\r
+*    º   SELECT BLAH BLAH BLAH     º  º          GAME DIFFICULTY         º\r
+*    ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ  ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ\r
+*    ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»  ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»\r
+*    º                             º  º  THIS CONTROLS THE OVERALL       º\r
+*    º        GAME  PRICING        º  º  DIFFICULTY OF GAME PLAY.        º\r
+*    º=======GAME DIFFICULTY=======º  º                                  º\r
+*    º       LIVES PER PLAY        º  º  RANGE OF SETTINGS:  1-9         º\r
+*    º     POWER-UPS PER PLAY      º  º                                  º\r
+*    º       EXTRA MAN EVERY       º  º  EASIEST SETTING: 1              º\r
+*    º       LAST EXTRA MAN        º  º  HARDEST SETTING: 9              º\r
+*    º     ATTRACT-MODE SOUND      º  º  FACTORY SETTING: 3              º\r
+*    º    AUTO HIGH SCORE RESET    º  ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ\r
+*    º       VIOLENCE LEVEL        º  \r
+*    º    RETURN TO MAIN MENU      º\r
+*    º                             º  \r
+*    º                             º  ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»\r
+*    º                             º  º                                  º\r
+*    º                             º  º          9 - EXTRA HARD          º\r
+*    º                             º  º                                  º\r
+*    ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ  ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ\r
+*\r
+*\r
+*       ON ENTRY....A1 POINTS AT THE 3 WORDS FOR CURRENT\r
+*       MENU ENTRY.\r
+*\r
+DO_ADJH:\r
+*\r
+*       FIRST WE BLANK OUT THE AREA...WE NEED TO DO THIS FROM\r
+*       THE MENU PROCESS SINCE THE RIGHT EDGE IS DETERMINED BY\r
+*       MENU PDATA STUFF.  IT WILL RETURN IN A9 THE MARGIN WE \r
+*       SHOULD WORK FROM.\r
+*\r
+        CALLA   BLNKHELP             ;BLANK OUT THE AREA WE'RE PLOTTING!\r
+        MOVE    A1,A8                ;PASS THE STRUCTURE POINTER TO NEW PROCESS!\r
+        MOVI    AD_SLAVE,A7\r
+        CALLA   P_FORK               ;THIS CREATES IT!\r
+        RETS                         ;NOW RETURN TO MENU HANDLER!\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          AD_SLAVE                                                      *\r
+*                                                                        *\r
+*          THIS IS FORKED TO PLOT THE RIGHT SIDE...IT HAS                *\r
+*          ITS OWN PDATA AREA FOR INFO STORAGE.                          *\r
+*                                                                        *\r
+*          A8 = POINTER TO THE MENU SELECTION 3 LONG-WORD ENTRY          *\r
+*          A9 = LEFT X MARGIN FOR OUR WORK.                              *\r
+*                                                                        *\r
+**************************************************************************\r
+ADS_STRUCT       EQU     PDATA                  ;LONG-POINTER TO ADJUSTMENT STRUCTURE\r
+ADS_LX           EQU     ADS_STRUCT+LONG_SIZE   ;WORD-LEFT X TO WORK FROM\r
+ADS_CX           EQU     ADS_LX+WORD_SIZE       ;WORD-CENTER X FOR WORK\r
+\r
+AD_SLAVE:\r
+        MOVE    *A8(MENU_ROUTINE),A11,L   ;NOW WE HAVE OUR SPECIAL STRUCTURE!\r
+        MOVE    A11,*A13(ADS_STRUCT),L    ;STASH IT...WE'LL NEED IT\r
+        MOVE    A9,*A13(ADS_LX),W         ;ALSO THE X.....\r
+\r
+        MOVE    A9,A4                     ;COPY LEFT FOR BORDER ROUT\r
+        CALLR   LEFT_TO_CENTER\r
+\r
+        MOVE    A9,*A13(ADS_CX),W         ;STASH THE CENTER\r
+*\r
+*         A4 = UPPER LEFT Y,X                                           \r
+*         A5 = LOWER RIGHT Y,X                                        \r
+*         A0 = Y,X WIDTH OF BORDER                                     \r
+*         A9 = COLOR OF BORDER.                                         \r
+*\r
+        ADDI    INST_ULY*10000H,A4           ;ADD IN THE Y\r
+        MOVI    (INST_LRY*10000H)+TIT_LRX,A5 ;THIS IS OTHER EDGE. \r
+        MOVI    ROBO_PURPLE,A9\r
+        CALLA   STD_BORD                       ;ADJUSTMENT BORDER IS UP.\r
+*\r
+        MOVI    ADJT_SETUP,A8\r
+        CALLA   LM_SETUP                       ;SETUP TO PRINT TITLE\r
+\r
+        MOVE    *A13(ADS_CX),A2,W              ;GET THE X\r
+        MOVX    A2,A9                          ;SUBSTITUTE OUR X IN.\r
+\r
+        MOVE    *A13(ADS_STRUCT),A2,L          ;GET STRUCTURE POINTER\r
+        MOVE    *A2(AD_TITLE),A8,L             ;GET MESSAGE POINTER\r
+\r
+        JSRP    LM_FINIS                       ;BOX AND TITLE ARE UP.\r
+\r
+        MOVE    *A2(AD_HELP),A8,L              ;HELP STRUCTURE\r
+        MOVE    *A13(ADS_LX),A9,W              ;LEFT X FOR HELP BOX\r
+        MOVI    INST_LRY+BOX_YGAP,A10          ;THIS IS HELP BOX POSITION\r
+        ADDI    10000H,A10                     ;FLAG THAT THIS IS TOP..NOT CENTER!\r
+\r
+        MOVI    H_SLAVE,A7           ;FORK OFF SO IT CAN USE PDATA!\r
+        CALLA   P_FORK               ;START UP ANOTHER W/ SAME ID \r
+*\r
+*       NOW WE NEED TO SHOW THE CURRENT SETTING ON THE LOWER HALF OF\r
+*       THE SCREEN.\r
+*\r
+        MOVE    *A13(ADS_STRUCT),A8,L   ;GET THE ADJUSTMENT STRUCTURE\r
+        MOVI    ROBO_LF,A11           ;INDICATE STANDARD COLOR.\r
+        JSRP    AD_CRVAL                ;PRINT SCREEN SHOWING THE CURRENT VALUE\r
+\r
+        JAUC    SUCIDE               ;OUR JOB IS DONE!...EXIT\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          LEFT_TO_CENTER                                                *\r
+*                                                                        *\r
+*          THIS IS CALLED TO FIND THE CENTER POINT FOR A BOX BASED ON    *\r
+*          THE LEFT PASSED IN A9.  CENTER X RETURNED IN A9.              *\r
+*                                                                        *\r
+**************************************************************************\r
+LEFT_TO_CENTER:\r
+        ADDI    TIT_LRX,A9                ;FIND BOX CENTER\r
+        SRL     1,A9                      ;NOW WE HAVE THE CENTER\r
+        ADDI    C_KLUDGE,A9               ;MAKE IT CENTER CORRECTLY\r
+        RETS\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          AD_CRVAL                                                      *\r
+*                                                                        *\r
+*          THIS IS CALLED TO PRINT THE CURRENT VALUE FOR ANY             *\r
+*          ADJUSTMENT.  THE VALUE SHOULD BE PRINTED AND BOXED            *\r
+*          IN THE LOWER RIGHT REGION UNDER THE "CURRENT SETTING"         *\r
+*          HEADER.                                                       *\r
+*                                                                        *\r
+*          A8 -> ADJUSTMENT STRUCTURE                                    *\r
+*          A11  -> COLOR TO USE                                          *\r
+*          ADJ_LEFX (GLOBAL RAM) CONTAINS LEFT MARGIN FOR THIS.          *\r
+*                                                                        *\r
+**************************************************************************\r
+\r
+AD_CRVAL: \r
+       MOVE    *A8(AD_NAMEIT),A0,L       ;FETCH THE "NAME-IT" ROUTINE\r
+        JUMP    A0                        ;AND "JSRP" THAT ROUTINE\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          HEX_OR_MESS                                                   *\r
+*                                                                        *\r
+*          THIS IS CALLED FOR THE EXTRA MAN EVERY...AND                  *\r
+*          "LAST EXTRA MAN" ADJUSTMENTS.  IT PRINTS OUT                  *\r
+*          THE HEX ADJUSTMENT WITH COMMAS, OR PRINTS                     *\r
+*          THE MESSAGE STORED AT A8(AD_NAMPTR) ON ITS LOWEST VALUE.      *\r
+*                                                                        *\r
+*          ****** NOTE THAT "BIN_OR_MESS" (BELOW) USES PARTS OF THIS!    *\r
+*                                                                        *\r
+**************************************************************************\r
+HEX_OR_MESS:\r
+       MMTM    SP,A8                     ;PRESERVE A8 PLEASE\r
+\r
+        CALLR   ADJ_STUFF                 ;GET THE REGGIES FIXED UP.\r
+*\r
+*       NOW A0 HAS THE ADJUSTMENT....FORM THE C-STRING\r
+*\r
+        MOVE    *A8(AD_MIN),A1,L          ;GET MINIMUM VALUE\r
+        CMP     A0,A1                     ;ARE WE AT MINIMUM?\r
+        JRNZ    NOT_MIN                   ;NOPE\r
+\r
+AT_MIN:   \r
+       MOVE    *A8(AD_NAMPTR),A8,L       ;GET THE MESSAGE POINTER\r
+        JRUC    PRT_MIN\r
+\r
+NOT_MIN:  \r
+       MOVE    A0,A8\r
+        MOVK    1,A3                      ;INDICATE COMMAS ARE DESIRED\r
+        CALLA   HTOHXASC                  ;CONVERT A8 TO THIS NUMBER\r
+\r
+PRT_MIN:  \r
+       MOVE    A8,A2\r
+       MMFM    SP,A8                     ;PRESERVE A8 PLEASE\r
+\r
+        JSRP    DO_BIG_LINE               ;NOW PRINT IT OUT\r
+        RETP                              ;AND RETURN\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          BIN_OR_MESS                                                   *\r
+*                                                                        *\r
+*          THIS IS CALLED TO PRINT A BINARY NUMBER OR                    *\r
+*          A MESSAGE AT A8(AD_NAMPTR) IF IT IS AT MINIMUM.               *\r
+*                                                                        *\r
+**************************************************************************\r
+BIN_OR_MESS:\r
+        MMTM    SP,A8                     ;PRESERVE A8 PLEASE\r
+\r
+        CALLR   ADJ_STUFF                 ;GET THE REGGIES FIXED UP.\r
+*\r
+*       NOW A0 HAS THE ADJUSTMENT....FORM THE C-STRING\r
+*\r
+        MOVE    *A8(AD_MIN),A1,L          ;GET MINIMUM VALUE\r
+        CMP     A0,A1                     ;ARE WE AT MINIMUM?\r
+        JRZ     AT_MIN                    ;YEP.....PRINT "OFF"\r
+\r
+        CALLA   BINBCD                    ;TURN TO BCD PLEASE\r
+        JRUC    NOT_MIN                   ;AND NOW PRINT WITH COMMAS.\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          JUST_BIN                                                      *\r
+*                                                                        *\r
+*          THIS IS CALLED TO PRINT OUT THE ADJUSTMENT                    *\r
+*          (STORED IN BINARAY) IN DECIMAL.                               *\r
+*                                                                        *\r
+**************************************************************************\r
+JUST_BIN:\r
+        MMTM    SP,A8                     ;PRESERVE A8 PLEASE\r
+\r
+        CALLR   ADJ_STUFF                 ;GET THE REGGIES FIXED UP.\r
+*\r
+*       NOW A0 HAS THE ADJUSTMENT....FORM THE C-STRING\r
+*\r
+        CALLA   BINBCD                    ;TURN IT TO BCD!\r
+        JRUC    NOT_MIN\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          LIST_1LINE                                                    *\r
+*                                                                        *\r
+*          THIS IS CALLED TO DO A 1 LINE LISTING OF MESSAGES             *\r
+*          ASSOCAITED WITH THE CURRENT ADJUSTMENT.                       *\r
+*          A8 = STRUCTURE                                                *\r
+*          A11 = COLOR OF TEXT INSIDE BOX.                               *\r
+*                                                                        *\r
+**************************************************************************\r
+LIST_1LINE:\r
+        CALLR   ADJ_STUFF                 ;GET THE REGGIES FIXED UP.\r
+\r
+        MOVE    *A8(AD_MAX),A1,L          ;IS IT TOO HIGH?\r
+        CMP     A1,A0                     ;COMPARE TO ADJUSTMENT\r
+        JRLS    L1L1                      ;IN RANGE.....\r
+*\r
+*       ADJUSTMENT IS TOO HIGH...DON'T GO THROUGH TABLE!\r
+*\r
+        MOVI    M_NULL,A2                 ;USE NULL POINTER\r
+        JRUC    L1L2\r
+\r
+L1L1:     \r
+       MOVE    *A8(AD_MIN),A1,L          ;GET THE LOWEST VALUE\r
+        SUB     A1,A0                     ;THIS IS OFFSET\r
+        MOVI    LONG_SIZE,A1              ;THIS MANY LONG WORDS\r
+        MPYU    A0,A1                     ;THIS IS OFFSET INTO TABLE\r
+        MOVE    *A8(AD_NAMPTR),A0,L       ;THIS IS TABLE BASE\r
+        ADD     A1,A0                     ;A0 HAS THE TEXT OF THE SINGLE LINE\r
+        MOVE    *A0,A2,L                  ;GET THE VECTOR\r
+*\r
+*       TEXT POINTER IN A2\r
+*       COLOR IN A11\r
+*       Y IN A10\r
+*\r
+L1L2:     \r
+       JSRP    DO_BIG_LINE               ;PRINT OUT THIS LINE\r
+        RETP                              ;NOW RETURN\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          ADJ_STUFF                                                     *\r
+*                                                                        *\r
+*          THIS IS CALLED BY THE ROUTINES THAT DISPLAY                   *\r
+*          ADJUSTMENTS.  IT PLOTS THE BOX AND RETURNS:                   *\r
+*                                                                        *\r
+*                  A10 = HEIGHT FOR 15 POINT SINGLE TEXT LINE            *\r
+*                  A0 =  ADJUSTMENT WITH ZERO SUBSTITUTION COMPLETED.    *\r
+*                                                                        *\r
+**************************************************************************\r
+ADJ_STUFF:\r
+        MOVI    1,A1                      ;INDICATE 2 PUNY LINES (FOR OUR BIG ONE)\r
+        CALLR   ADJ_BOX                   ;DRAW THE BOX....PASS BACK 1ST PLOT LINE\r
+*\r
+*       A10 HAS Y HEIGHT OF 1ST ENTRY.\r
+*\r
+        MOVE    *A8(AD_CMOS),A0,W         ;GET ADJUSTMENT NUMBER\r
+        CALLR   GET_EADJ                  ;FETCH THE CURRENT VALUE.\r
+\r
+        CALLR   PUT_IN_RANGE              ;IF ITS OUT OF RANGE, FIX IT!\r
+        RETS\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          DO_BIG_LINE                                                   *\r
+*                                                                        *\r
+*          THIS IS CALLED TO DO A SINGLE LINE FOR AN ADJUSTMENT          *\r
+*          "CURRENT ADJUSTMENT" BOX.                                     *\r
+*                                                                        *\r
+*          A2 = POINTER TO TEXT                                          *\r
+*          A10 = Y COORDINATE                                            *\r
+*          A11 = COLOR                                                   *\r
+*                                                                        *\r
+*          X LEFT COORDINATE IS IN GLOBAL "ADJ_LEFX"                     *\r
+*                                                                        *\r
+**************************************************************************\r
+DO_BIG_LINE:\r
+        MMTM    A12,A10,A11,A8       ;SAVE STUFF FOR CALLER\r
+        MOVE    A11,A6\r
+        MOVI    AM_HX,A9,W           ;GET LEFT X\r
+        CALLR   LEFT_TO_CENTER       ;CONVERT IT\r
+        SLL     16,A10               ;SHIFT Y DOWN\r
+        MOVY    A10,A9               ;X,Y SET\r
+        MOVE    A2,A8                ;TEXT POINTER\r
+        CLR     A0                   ;NO SLEEP\r
+        MOVI    SPACING20,A10\r
+        MOVI    RD7FONT,A11\r
+        JSRP    STRCNRM              ;DO IT!\r
+       MMFM    A12,A10,A11,A8       ;POP THE STUFF.\r
+       RETP\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          GET_EADJ                                                      *\r
+*                                                                        *\r
+*          THIS IS LIKE GET_ADJ, HOWEVER IF ZERO COMES OUT,              *\r
+*          WE CHECK TO SEE IF THERE IS A LOGICAL NUMBER TO               *\r
+*          PASS OUT IN PLACE OF THE ZERO.                                *\r
+*                                                                        *\r
+*          A8 POINTS AT THE ADJUSTMENT STRUCTURE.                        *\r
+*                                                                        *\r
+**************************************************************************\r
+GET_EADJ:\r
+        MMTM    SP,A1\r
+        CALLA   GET_ADJ              ;FETCH THE ADJUSTMENT\r
+        JRNZ    GET_EA1              ;ITS NOT ZERO....RETURN\r
+*\r
+*       ITS ZERO....SEE IF THERE'S A VALUE TO SUB\r
+*\r
+        MOVE    *A8(AD_ZEQU),A1,L    ;IS THERE A SUB VALUE?\r
+        JRZ     GET_EA1              ;NOPE...RETURN THE ZERO (AND FLAG)\r
+\r
+        MOVE    A1,A0                ;RETURN THE SUBSTITUTE VALUE\r
+GET_EA1:       \r
+       MMFM    SP,A1\r
+       RETS\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          PUT_IN_RANGE                                                  *\r
+*                                                                        *\r
+*          THIS IS CALLED TO TAKE AN ADJUSTMENT AND MAKE SURE            *\r
+*          IT HAS A VALID VALUE.  IF ITS BETWEEN THE MIN AND MAX         *\r
+*          (INCLUSIVE) ALLOWED, THEN WE RETURN WITH NO ACTION.           *\r
+*                                                                        *\r
+*          IF ITS OUTSIDE, THEN WE SET IT ACCORDING TO THE               *\r
+*          "WRAP_AROUND" PARAMETER.                                      *\r
+*                                                                        *\r
+*          A0 HAS ADJUSTMENT VALUE                                       *\r
+*          A8 POINTS AT ADJUSTMENT STRUCTURE.                            *\r
+*                                                                        *\r
+*          RETURN NEW VALUE IN A0.                                       *\r
+*                                                                        *\r
+**************************************************************************\r
+PUT_IN_RANGE:\r
+        MMTM    SP,A1,A2,A3\r
+        MOVE    *A8(AD_MIN),A1,L          ;GET MINIMUM\r
+        MOVE    *A8(AD_MAX),A2,L          ;GET MAXIMUM\r
+        MOVE    *A8(AD_FLAGS),A3,W        ;ARE WE WRAPPING AROUND\r
+        BTST    WRAP_BIT,A3               ;WELL?\r
+        JRNZ    CK_WRAP                   ;YEP....USE A FANCY HANDLER.\r
+\r
+        CMP     A1,A0                     ;ARE WE TOO LOW?\r
+        JRHS    NOT_LO\r
+*\r
+*       ITS TOO LOW.....USE MINIMUM\r
+*\r
+USE_LO:   \r
+       MOVE    A1,A0\r
+\r
+*\r
+*       WE'RE NOT WRAPPING AROUNG....IF ITS MEGA-HIGH....KEEP IT\r
+*       AT THE LOW BOUNDARY.\r
+*\r
+NOT_LO:   \r
+       CMPI    090000000H,A0            \r
+        JRHI    USE_LO                    ;USE THE LOW VALUE!\r
+\r
+        CMP     A2,A0\r
+        JRLS    PIRX\r
+\r
+USE_HI:   \r
+       MOVE    A2,A0\r
+        JRUC    PIRX\r
+*\r
+*       WE NEED TO WRAP FROM LOWEST TO HIGHEST\r
+*\r
+CK_WRAP: \r
+        CMPI    090000000H,A0             ;IN THIS RANGE, WE MUST HAVE WRAPPED DOWN\r
+        JRHI    USE_HI                    ;SO USE HIGH VALUE\r
+\r
+        CMP     A1,A0                     ;IS IT LOWER THAN LO?\r
+        JRLO    USE_HI                    ;IT IS ....USE THE HIGH ONE.\r
+\r
+        CMP     A2,A0                     ;IS IT TOO HIGH?\r
+        JRHI    USE_LO                    ;IT IS....USE THE LOW ONE.\r
+\r
+PIRX:          \r
+       MMFM    SP,A1,A2,A3\r
+       RETS\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          ADJ_BOX                                                       *\r
+*                                                                        *\r
+*          A1 HAS NUMBER OF LINES FOR ADJUSTMENT                         *\r
+*          RETURN A10 AT Y IF 1ST LINE OF BOX.                           *\r
+*                                                                        *\r
+**************************************************************************\r
+ADJ_BOX:  \r
+       MMTM    SP,A4,A5,A0,A9\r
+*\r
+        MOVI    HELP_DY,A5                ;DISTANCE PER ENTRY\r
+        MPYU    A1,A5                     ;DISTANCE FOR ALL ENTRIES\r
+        ADDI    HELP_Y_MARGIN+(MB_YWID*2)+HELP_YLO_MARGIN,A5\r
+*\r
+*       A5 NOW CONTAINS FULL HEIGHT OF BOX\r
+*\r
+        MOVI    ADJ_ULY,A10               ;THIS IS TOP OF BOX\r
+*\r
+*       NOW FORM UPPER LEFT IN A4\r
+*\r
+        MOVE    A10,A4                    ;MOVE Y OVER\r
+        SLL     16,A4                     ;MAKE ROOM FOR X\r
+        ADDI    AM_HX,A4                     ;PUT IN THE X...THIS IS UPPER LEFT!\r
+\r
+        ADD     A10,A5                    ;ADD BASE TO OFFSET\r
+        SLL     16,A5                     ;PUT IN Y POSITION\r
+        ADDI    TIT_LRX,A5                ;ADD IN THE X FOR THE CORNER\r
+*\r
+*       NOW ADJUST FROM TOP OF BOX TO POSITION OF \r
+*       1ST ENTRY.\r
+*\r
+        ADDI    MB_YWID+HELP_Y_MARGIN,A10  ;Y OF 1ST ENTRY\r
+*\r
+*       A10 IS NOW SET FOR RETURN VALUE\r
+*\r
+        MOVI    ROBO_YELLOW,A9            ;MAKE THESE BOXES YELLOW\r
+\r
+        CALLA   STD_BORD       \r
+       MMFM    SP,A4,A5,A0,A9\r
+       RETS\r
+\r
+WH_BORD:  \r
+       MMTM    SP,A9\r
+        MOVI    ROBO_WHITE,A9\r
+        CALLA   STD_BORD\r
+       MMFM    SP,A9\r
+       RETS\r
+;\r
+**************************************************************************\r
+*                                                                        *\r
+*          BINBCD                                                        *\r
+*                                                                        *\r
+*          CONVERT BINARY NUMBER IN A0 TO BCD.                           *\r
+*                                                                        *\r
+**************************************************************************\r
+BINBCD   MMTM    SP,A1,A2,A3,A4,A5\r
+         CMPI    99999999,A0               ;ARE WE TOO BIG?\r
+         JRLS    BBIR                      ;IN RANGE\r
+         MOVI    99999999H,A0              ;RETURN THE LARGEST NUMBER WE HAVE!\r
+         JRUC    BB_RET\r
+\r
+BBIR     MOVI    10,A1                     ;ALWAYS DIVIDE BY A0\r
+         CLR     A5                        ;ACCUMULATE RESULT IN A5\r
+         CLR     A4                        ;A4 HAS CURRENT SHIFT COUNT\r
+         MOVE    A0,A3                     ;<A2><A3> HAS NUMERATOR\r
+DO_BCD_AGAIN\r
+         CLR     A2\r
+         DIVU    A1,A2                     ;A2 HAS LEFTOVER...A3 HAS CURRENT DIGIT\r
+         SLL     A4,A3                     ;SHIFT IT CORRECT NUMBER OF TIMES\r
+         ADD     A3,A5                     ;ADD IT INTO RESULT REG\r
+         ADDK    4,A4                      ;ADD 4 TO SHIFT COUNT\r
+         MOVE    A2,A3                     ;REFRESH NUMERATOR\r
+         JRNZ    DO_BCD_AGAIN\r
+\r
+         MOVE    A5,A0                     ;PUT OUT RESULT\r
+BB_RET MMFM    SP,A1,A2,A3,A4,A5\r
+       RETS\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          BCDBIN                                                        *\r
+*                                                                        *\r
+*          THIS TURNS A BCD NUMBER (IN A0) INTO A BINARY                 *\r
+*          NUMBER.                                                       *\r
+*                                                                        *\r
+**************************************************************************\r
+BCDBIN   MMTM    SP,A1,A2,A3,A4,A5       ;WORK REGGIES.\r
+         CLR     A2                      ;ACCUMULATE IN A2\r
+         MOVI    1,A3                    ;CURRENT FACTOR IS 1.\r
+         MOVI    10,A4                   ;SAVE SOME MOVI INSTS LATER\r
+         MOVI    16,A5                   ;DIVIDE IT DOWN BY 16 AT A TIME\r
+BCBLOOP  MOVE    A0,A1                   ;DIVIDEND IN <A0><A1>\r
+         JRZ     BCBDONE                 ;ALL UNITS EXHAUSTED!\r
+         CLR     A0\r
+         DIVU    A5,A0                   ;DIVIDE BY 10H...(REMAINDER IN A1)\r
+         MPYU    A3,A1                   ;TIMES POSITION FACTOR\r
+         ADD     A1,A2                   ;INTO ACCUMULATION REGISTER\r
+         MPYU    A4,A3                   ;NEXT DIGIT IS WORTH 10 TIMES THIS ONE\r
+         JRUC    BCBLOOP\r
+\r
+BCBDONE  MOVE    A2,A0                   ;RETURN RESULT IN A0\r
+       MMFM    SP,A1,A2,A3,A4,A5       ;WORK REGGIES.\r
+       RETS\r
+**** DATA SECTION BEGINS ****\r
+\r
+       .DATA\r
+*\r
+*        GAME ADJUSTMENT\r
+*\r
+*        THE FOLLOWING STRUCTURES ARE FOR EACH ADJUSTMENT\r
+*\r
+*        AD_ROUT  EQU     0                         ;LONG...ROUTINE TO RUN WHEN SELECTED.\r
+*        AD_TITLE EQU     AD_ROUT+LONG_SIZE         ;LONG...POINTER TO TITLE FOR RIGHT COLUMN\r
+*        AD_HELP  EQU     AD_TITLE+LONG_SIZE        ;LONG...POINT TO HELP STRUCT FOR EXPLANATION\r
+*        AD_CMOS  EQU     AD_HELP+LONG_SIZE         ;WORD...GET_ADJ / PUT_ADJ NUMBER.\r
+*        AD_MIN   EQU     AD_CMOS+WORD_SIZE         ;LONG...MINIMUM VALUE FOR ADJ.\r
+*        AD_MAX   EQU     AD_MIN+LONG_SIZE          ;LONG...MAXIMUM VALUE FOR ADJ.\r
+*        AD_DELTA EQU     AD_MAX+LONG_SIZE          ;LONG...UNITS BETWEEN VALUES.\r
+*        AD_ZEQU  EQU     AD_DELTA+LONG_SIZE        ;LONG...NUMBER TO STORE IN MEMORY AS ZERO\r
+*        AD_NAMEIT EQU    AD_HYPER+LONG_SIZE        ;LONG...ROUTINE TO PRINT VALUES.\r
+*        AD_WRAP  EQU     AD_NAMEIT+LONG_SIZE       ;WORD...NON ZERO TO WRAP FROM HIGHEST TO LOWEST \r
+*        AD_NAMPTR EQU    AD_WRAP+WORD_SIZE         ;LONG...POINTER TO DATA FOR NAMEIT ROUTINE\r
+*\r
+DO_PRICE:\r
+        .LONG   GEN_ADJ              ;ROUTINE TO RUN\r
+        .LONG   MESS_PRICE           ;POINTER TO HEADER MESSAGE\r
+        .LONG   HELP_PRICE           ;POINTER TO HELP MESSAGES FOR RIGHT SIDE\r
+        .WORD   ADJPRICE             ;CMOS ADJUSTMENT WE'RE SETTING\r
+        .LONG   1                    ;MINIMUM VALUE\r
+        .LONG   CS_ENTS              ;MAXIMUM VALUE\r
+        .LONG   1                    ;MOVE UP AND DOWN BY 1'S\r
+        .LONG   0                    ;DON'T SUB ZERO FOR ANY\r
+        .LONG   COIN_SET             ;MESSAGE LIST USED FOR VALUES.\r
+        .WORD   WRAP_VAL             ;WRAP AROUND ON COIN MODES\r
+        .LONG   0                    ;LIST OF MESSAGES FOR THIS ADJ.\r
+        .LONG   MESS_PRICE           ;POINTER TO HEADER MESSAGE\r
+\r
+DO_PARAM:\r
+        .LONG   PRICE_ADJ            ;ROUTINE TO RUN\r
+        .LONG   MESS_PARAM           ;POINTER TO HEADER MESSAGE\r
+        .LONG   HELP_PARAM           ;POINTER TO HELP MESSAGES FOR RIGHT SIDE\r
+        .WORD   ADJPRICE             ;CMOS ADJUSTMENT WE'RE SETTING\r
+        .LONG   1                    ;MINIMUM VALUE\r
+        .LONG   CS_ENTS              ;MAXIMUM VALUE\r
+        .LONG   1                    ;MOVE UP AND DOWN BY 1'S\r
+        .LONG   0                    ;DON'T SUB ZERO FOR ANY\r
+        .LONG   PARAM_VAL            ;Routine for showing current value\r
+        .WORD   WRAP_VAL             ;WRAP AROUND ON COIN MODES\r
+        .LONG   0                    ;LIST OF MESSAGES FOR THIS ADJ.\r
+        .LONG   MESS_PARAM           ;POINTER TO HEADER MESSAGE\r
+\r
+*MECHANICAL COIN COUNTER ADJUST\r
+\r
+DO_CNTR:\r
+        .LONG   GEN_ADJ              ;ROUTINE TO RUN\r
+        .LONG   MESS_CNTR            ;POINTER TO HEADER MESSAGE\r
+        .LONG   HELP_CNTR            ;POINTER TO HELP MESSAGES FOR RIGHT SIDE\r
+        .WORD   ADJCNTR              ;CMOS ADJUSTMENT WE'RE SETTING\r
+        .LONG   1                    ;MINIMUM VALUE\r
+        .LONG   3                    ;MAXIMUM VALUE\r
+        .LONG   1                    ;MOVE UP AND DOWN BY 1'S\r
+        .LONG   0                    ;DON'T SUB ZERO FOR ANY\r
+        .LONG   LIST_1LINE           ;MESSAGE LIST USED FOR VALUES.\r
+        .WORD   0                    ;DON'T WRAP AROUND\r
+        .LONG   LIST_CNTR            ;JUST SHOW THE NUMBER\r
+        .LONG   MESS_CNTR            ;POINTER TO HEADER MESSAGE\r
+\r
+DO_DIFF:\r
+        .LONG   GEN_ADJ              ;ROUTINE TO RUN\r
+        .LONG   MESS_DIFF            ;POINTER TO HEADER MESSAGE\r
+        .LONG   HELP_DIFF            ;POINTER TO HELP MESSAGES FOR RIGHT SIDE\r
+        .WORD   ADJDIFF              ;CMOS ADJUSTMENT WE'RE SETTING\r
+        .LONG   1                    ;MINIMUM VALUE\r
+        .LONG   10                    ;MAXIMUM VALUE\r
+        .LONG   1                    ;MOVE UP AND DOWN BY 1'S\r
+        .LONG   0                    ;DON'T SUB ZERO FOR ANY\r
+        .LONG   LIST_1LINE           ;MESSAGE LIST USED FOR VALUES.\r
+        .WORD   0                    ;DON'T WRAP AROUND\r
+        .LONG   LIST_DIFF            ;LIST OF MESSAGES FOR THIS ADJ.\r
+        .LONG   MESS_DIFF            ;POINTER TO HEADER MESSAGE\r
+\r
+;DO_EASY:  \r
+;      .LONG   GEN_ADJ              ;ROUTINE TO RUN\r
+;        .LONG   MESS_EASY            ;POINTER TO HEADER MESSAGE\r
+;        .LONG   HELP_EASY            ;POINTER TO HELP MESSAGES FOR RIGHT SIDE\r
+;        .WORD   ADJBUYIN             ;CMOS ADJUSTMENT WE'RE SETTING\r
+;        .LONG   0                    ;MINIMUM VALUE\r
+;        .LONG   1                    ;MAXIMUM VALUE\r
+;        .LONG   1                    ;MOVE UP AND DOWN BY 250'S\r
+;        .LONG   0                    ;DON'T SUB ZERO FOR ANY\r
+;        .LONG   LIST_1LINE           ;MESSAGE LIST USED FOR VALUES.\r
+;        .WORD   WRAP_VAL             ;WRAP AROUND\r
+;        .LONG   LIST_NOYES           ;LIST OF MESSAGES FOR THIS ADJ.\r
+;        .LONG   MESS_EASY            ;POINTER TO HEADER MESSAGE\r
+\r
+DO_LIVES:\r
+        .LONG   GEN_ADJ              ;ROUTINE TO RUN\r
+        .LONG   MESS_LIVES           ;POINTER TO HEADER MESSAGE\r
+        .LONG   HELP_LIVES           ;POINTER TO HELP MESSAGES FOR RIGHT SIDE\r
+        .WORD   ADJLIVES             ;CMOS ADJUSTMENT WE'RE SETTING\r
+        .LONG   1                    ;MINIMUM VALUE\r
+        .LONG   7                    ;MAXIMUM VALUE\r
+        .LONG   1                    ;MOVE UP AND DOWN BY 1'S\r
+        .LONG   0                    ;DON'T SUB ZERO FOR ANY\r
+        .LONG   LIST_1LINE           ;MESSAGE LIST USED FOR VALUES.\r
+        .WORD   0                    ;DON'T WRAP AROUND\r
+        .LONG   LIST_LIVES           ;LIST OF MESSAGES FOR THIS ADJ.\r
+        .LONG   MESS_LIVES           ;POINTER TO HEADER MESSAGE\r
+\r
+;DO_ROCKS:\r
+;        .LONG   GEN_ADJ              ;ROUTINE TO RUN\r
+;        .LONG   MESS_ROCKS           ;POINTER TO HEADER MESSAGE\r
+;        .LONG   HELP_ROCKS           ;POINTER TO HELP MESSAGES FOR RIGHT SIDE\r
+;        .WORD   ADJROCKS             ;CMOS ADJUSTMENT WE'RE SETTING\r
+;        .LONG   1                    ;MINIMUM VALUE\r
+;        .LONG   10                    ;MAXIMUM VALUE\r
+;        .LONG   1                    ;MOVE UP AND DOWN BY 1'S\r
+;        .LONG   0                    ;DON'T SUB ZERO FOR ANY\r
+;        .LONG   LIST_1LINE           ;MESSAGE LIST USED FOR VALUES.\r
+;        .WORD   0                    ;DON'T WRAP AROUND\r
+;        .LONG   LIST_ROCKS           ;LIST OF MESSAGES FOR THIS ADJ.\r
+;        .LONG   MESS_ROCKS           ;POINTER TO HEADER MESSAGE\r
+\r
+;DO_EXTRA:\r
+;        .LONG   GEN_ADJ              ;ROUTINE TO RUN\r
+;        .LONG   MESS_EXTRA           ;POINTER TO HEADER MESSAGE\r
+;        .LONG   HELP_EXTRA           ;POINTER TO HELP MESSAGES FOR RIGHT SIDE\r
+;        .WORD   ADJEXTRA             ;CMOS ADJUSTMENT WE'RE SETTING\r
+;        .LONG   25000H               ;MINIMUM VALUE (25000 IS "OFF" 50000 IS MIN)\r
+;        .LONG   500000H              ;MAXIMUM VALUE\r
+;        .LONG   25000H               ;MOVE UP AND DOWN BY 25K AT A CRACK'S\r
+;        .LONG   25000H               ;SUBSTITUTE ZERO FOR 25000H\r
+;        .LONG   HEX_OR_MESS          ;HEX WITH COMMAS...OR OFF IF SET TO LOWEST VALUE\r
+;        .WORD   WRAP_VAL+BCD_VAL     ;ALLOW WRAP AROUND\r
+;        .LONG   MESS_OFF             ;NO ANCILLARY INFO.\r
+;        .LONG   MESS_EXTRA           ;POINTER TO HEADER MESSAGE\r
+\r
+;DO_LAST:\r
+;        .LONG   GEN_ADJ              ;ROUTINE TO RUN\r
+;        .LONG   MESS_LAST            ;POINTER TO HEADER MESSAGE\r
+;        .LONG   HELP_LAST            ;POINTER TO HELP MESSAGES FOR RIGHT SIDE\r
+;        .WORD   ADJLAST              ;CMOS ADJUSTMENT WE'RE SETTING\r
+;        .LONG   00H                  ;MINIMUM VALUE (0 IS "OFF" 100000 IS MIN)\r
+;        .LONG   5000000H             ;MAXIMUM VALUE  5 MIL\r
+;        .LONG   100000H              ;MOVE UP AND DOWN BY 100K AT A CRACK'S\r
+;        .LONG   00H                  ;SUBSTITUTE ZERO FOR ZERO\r
+;        .LONG   HEX_OR_MESS          ;HEX WITH COMMAS...OR OFF IF SET TO LOWEST VALUE\r
+;        .WORD   WRAP_VAL+BCD_VAL     ;ALLOW WRAP AROUND\r
+;        .LONG   MESS_OFF             ;NO ANCILLARY INFO.\r
+;        .LONG   MESS_LAST            ;POINTER TO HEADER MESSAGE\r
+\r
+DO_AMODE:\r
+        .LONG   GEN_ADJ              ;ROUTINE TO RUN\r
+        .LONG   MESS_AMOD2           ;POINTER TO HEADER MESSAGE\r
+        .LONG   HELP_AMODE           ;POINTER TO HELP MESSAGES FOR RIGHT SIDE\r
+        .WORD   ADJMUSIC             ;CMOS ADJUSTMENT WE'RE SETTING\r
+        .LONG   0                    ;MINIMUM VALUE\r
+        .LONG   1                    ;MAXIMUM VALUE\r
+        .LONG   1                    ;MOVE UP AND DOWN BY 1'S\r
+        .LONG   0                    ;DON'T SUB ZERO FOR ANY\r
+        .LONG   LIST_1LINE           ;MESSAGE LIST USED FOR VALUES.\r
+        .WORD   WRAP_VAL             ;WRAP AROUND\r
+        .LONG   LIST_AMODE           ;LIST OF MESSAGES FOR THIS ADJ.\r
+        .LONG   MESS_AMODE           ;POINTER TO HEADER MESSAGE\r
+\r
+DO_AHSRES:\r
+        .LONG   GEN_ADJ              ;ROUTINE TO RUN\r
+        .LONG   MESS_HSR2            ;POINTER TO HEADER MESSAGE\r
+        .LONG   HELP_AHSRES          ;POINTER TO HELP MESSAGES FOR RIGHT SIDE\r
+        .WORD   ADJHSRES             ;CMOS ADJUSTMENT WE'RE SETTING\r
+        .LONG   0                    ;MINIMUM VALUE\r
+        .LONG   25000                ;MAXIMUM VALUE\r
+        .LONG   250                  ;MOVE UP AND DOWN BY 250'S\r
+        .LONG   0                    ;DON'T SUB ZERO FOR ANY\r
+        .LONG   BIN_OR_MESS          ;MESSAGE LIST USED FOR VALUES.\r
+        .WORD   WRAP_VAL^HSR_VAL     ;WRAP AROUND AND RESET HSC IF TOUCHED\r
+        .LONG   MESS_OFF             ;LIST OF MESSAGES FOR THIS ADJ.\r
+        .LONG   MESS_AHSRES          ;POINTER TO HEADER MESSAGE\r
+\r
+DO_GORE: \r
+        .LONG   GEN_ADJ              ;ROUTINE TO RUN\r
+        .LONG   MESS_GORE            ;POINTER TO HEADER MESSAGE\r
+        .LONG   HELP_GORE            ;POINTER TO HELP MESSAGES FOR RIGHT SIDE\r
+        .WORD   ADJGORE              ;CMOS ADJUSTMENT WE'RE SETTING\r
+        .LONG   0                    ;MINIMUM VALUE\r
+        .LONG   1                    ;MAXIMUM VALUE\r
+        .LONG   1                    ;MOVE UP AND DOWN BY 1'S\r
+        .LONG   0                    ;DON'T SUB ZERO FOR ANY\r
+        .LONG   LIST_1LINE           ;MESSAGE LIST USED FOR VALUES.\r
+        .WORD   WRAP_VAL             ;WRAP AROUND\r
+        .LONG   LIST_GORE            ;LIST OF MESSAGES FOR THIS ADJ.\r
+        .LONG   MESS_GORE            ;POINTER TO HEADER MESSAGE\r
+*\r
+*       THESE ARE ALL FOR THE CUSTOM PRICING MENU\r
+*\r
+COINBITS:       EQU     WRAP_VAL+VIRG_VAL+SIX_VAL\r
+\r
+DO_LCOIN:\r
+        .LONG   GEN_ADJ              ;ROUTINE TO RUN\r
+        .LONG   M_LCU                ;POINTER TO HEADER MESSAGE\r
+        .LONG   HELP_LCU             ;POINTER TO HELP MESSAGES FOR RIGHT SIDE\r
+        .WORD   ADJLMULT             ;CMOS ADJUSTMENT WE'RE SETTING\r
+        .LONG   0                    ;MINIMUM VALUE\r
+        .LONG   99                   ;MAXIMUM VALUE\r
+        .LONG   1                    ;MOVE UP AND DOWN BY 1'S\r
+        .LONG   0                    ;DON'T SUB ZERO FOR ANY\r
+        .LONG   JUST_BIN             ;JUST SHOW THE NUMBER\r
+        .WORD   COINBITS             ;WRAP AROUND\r
+        .LONG   0                    ;NO EXTRA INFO NEEDED\r
+        .LONG   M_LCU                ;POINTER TO HEADER MESSAGE\r
+\r
+DO_CCOIN:\r
+        .LONG   GEN_ADJ              ;ROUTINE TO RUN\r
+        .LONG   M_CCU               ;POINTER TO HEADER MESSAGE\r
+        .LONG   HELP_CCU             ;POINTER TO HELP MESSAGES FOR RIGHT SIDE\r
+        .WORD   ADJCMULT             ;CMOS ADJUSTMENT WE'RE SETTING\r
+        .LONG   0                    ;MINIMUM VALUE\r
+        .LONG   99                   ;MAXIMUM VALUE\r
+        .LONG   1                    ;MOVE UP AND DOWN BY 1'S\r
+        .LONG   0                    ;DON'T SUB ZERO FOR ANY\r
+        .LONG   JUST_BIN             ;JUST SHOW THE NUMBER\r
+        .WORD   COINBITS             ;WRAP AROUND\r
+        .LONG   0                    ;NO EXTRA INFO NEEDED\r
+        .LONG   M_CCU                ;POINTER TO HEADER MESSAGE\r
+\r
+DO_RCOIN:\r
+        .LONG   GEN_ADJ              ;ROUTINE TO RUN\r
+        .LONG   M_RCU                ;POINTER TO HEADER MESSAGE\r
+        .LONG   HELP_RCU             ;POINTER TO HELP MESSAGES FOR RIGHT SIDE\r
+        .WORD   ADJRMULT             ;CMOS ADJUSTMENT WE'RE SETTING\r
+        .LONG   0                    ;MINIMUM VALUE\r
+        .LONG   99                   ;MAXIMUM VALUE\r
+        .LONG   1                    ;MOVE UP AND DOWN BY 1'S\r
+        .LONG   0                    ;DON'T SUB ZERO FOR ANY\r
+        .LONG   JUST_BIN             ;JUST SHOW THE NUMBER\r
+        .WORD   COINBITS             ;WRAP AROUND\r
+        .LONG   0                    ;NO EXTRA INFO NEEDED\r
+        .LONG   M_RCU                ;POINTER TO HEADER MESSAGE\r
+DO_XCOIN:\r
+        .LONG   GEN_ADJ              ;ROUTINE TO RUN\r
+        .LONG   M_XCU                ;POINTER TO HEADER MESSAGE\r
+        .LONG   HELP_XCU             ;POINTER TO HELP MESSAGES FOR RIGHT SIDE\r
+        .WORD   ADJXMULT             ;CMOS ADJUSTMENT WE'RE SETTING\r
+        .LONG   0                    ;MINIMUM VALUE\r
+        .LONG   99                   ;MAXIMUM VALUE\r
+        .LONG   1                    ;MOVE UP AND DOWN BY 1'S\r
+        .LONG   0                    ;DON'T SUB ZERO FOR ANY\r
+        .LONG   JUST_BIN             ;JUST SHOW THE NUMBER\r
+        .WORD   COINBITS             ;WRAP AROUND\r
+        .LONG   0                    ;NO EXTRA INFO NEEDED\r
+        .LONG   M_XCU                ;POINTER TO HEADER MESSAGE\r
+\r
+DO_UC:    \r
+       .LONG   GEN_ADJ              ;ROUTINE TO RUN\r
+        .LONG   M_UC                 ;POINTER TO HEADER MESSAGE\r
+        .LONG   HELP_UC              ;POINTER TO HELP MESSAGES FOR RIGHT SIDE\r
+        .WORD   ADJCUNIT             ;CMOS ADJUSTMENT WE'RE SETTING\r
+        .LONG   1                    ;MINIMUM VALUE\r
+        .LONG   99                   ;MAXIMUM VALUE\r
+        .LONG   1                    ;MOVE UP AND DOWN BY 1'S\r
+        .LONG   0                    ;DON'T SUB ZERO FOR ANY\r
+        .LONG   JUST_BIN             ;JUST SHOW THE NUMBER\r
+        .WORD   COINBITS             ;WRAP AROUND\r
+        .LONG   0                    ;NO EXTRA INFO NEEDED\r
+        .LONG   M_UC                 ;POINTER TO HEADER MESSAGE\r
+\r
+DO_UB:    \r
+       .LONG   GEN_ADJ              ;ROUTINE TO RUN\r
+        .LONG   M_UB                 ;POINTER TO HEADER MESSAGE\r
+        .LONG   HELP_UB              ;POINTER TO HELP MESSAGES FOR RIGHT SIDE\r
+        .WORD   ADJBUNIT             ;CMOS ADJUSTMENT WE'RE SETTING\r
+        .LONG   0                    ;MINIMUM VALUE\r
+        .LONG   99                   ;MAXIMUM VALUE\r
+        .LONG   1                    ;MOVE UP AND DOWN BY 1'S\r
+        .LONG   0                    ;DON'T SUB ZERO FOR ANY\r
+        .LONG   BIN_OR_MESS          ;JUST SHOW THE NUMBER\r
+        .WORD   COINBITS             ;WRAP AROUND\r
+        .LONG   M_NOBONUS            ;NO EXTRA INFO NEEDED\r
+        .LONG   M_UB                 ;POINTER TO HEADER MESSAGE\r
+    \r
+DO_UM:    \r
+       .LONG   GEN_ADJ              ;ROUTINE TO RUN\r
+        .LONG   M_UM2                ;POINTER TO HEADER MESSAGE\r
+        .LONG   HELP_UM              ;POINTER TO HELP MESSAGES FOR RIGHT SIDE\r
+        .WORD   ADJMUNIT             ;CMOS ADJUSTMENT WE'RE SETTING\r
+        .LONG   0                    ;MINIMUM VALUE\r
+        .LONG   99                   ;MAXIMUM VALUE\r
+        .LONG   1                    ;MOVE UP AND DOWN BY 1'S\r
+        .LONG   0                    ;DON'T SUB ZERO FOR ANY\r
+        .LONG   BIN_OR_MESS          ;JUST SHOW THE NUMBER\r
+        .WORD   COINBITS             ;WRAP AROUND\r
+        .LONG   M_NOMIN              ;NO EXTRA INFO NEEDED\r
+        .LONG   M_UM                 ;POINTER TO HEADER MESSAGE\r
+\r
+CREDBITS:       EQU     VIRG_VAL\r
+\r
+DO_CST:   \r
+       .LONG   GEN_ADJ              ;ROUTINE TO RUN\r
+        .LONG   M_CST                ;POINTER TO HEADER MESSAGE\r
+        .LONG   HELP_CS              ;POINTER TO HELP MESSAGES FOR RIGHT SIDE\r
+        .WORD   ADJCSTRT             ;CMOS ADJUSTMENT WE'RE SETTING\r
+        .LONG   1                    ;MINIMUM VALUE\r
+        .LONG   4                    ;MAXIMUM VALUE\r
+        .LONG   1                    ;MOVE UP AND DOWN BY 1'S\r
+        .LONG   0                    ;DON'T SUB ZERO FOR ANY\r
+        .LONG   JUST_BIN            ;JUST SHOW THE NUMBER\r
+        .WORD   CREDBITS             ;WRAP AROUND\r
+        .LONG   0                    ;NO EXTRA INFO NEEDED\r
+        .LONG   M_CST                ;POINTER TO HEADER MESSAGE\r
+\r
+DO_CONT:  \r
+       .LONG   GEN_ADJ              ;ROUTINE TO RUN\r
+        .LONG   M_CONT2               ;POINTER TO HEADER MESSAGE\r
+        .LONG   HELP_CC              ;POINTER TO HELP MESSAGES FOR RIGHT SIDE\r
+        .WORD   ADJCCONT             ;CMOS ADJUSTMENT WE'RE SETTING\r
+        .LONG   1                    ;MINIMUM VALUE\r
+        .LONG   4                    ;MAXIMUM VALUE\r
+        .LONG   1                    ;MOVE UP AND DOWN BY 1'S\r
+        .LONG   0                    ;DON'T SUB ZERO FOR ANY\r
+        .LONG   JUST_BIN             ;JUST SHOW THE NUMBER\r
+        .WORD   CREDBITS             ;WRAP AROUND\r
+        .LONG   0                    ;NO EXTRA INFO NEEDED\r
+        .LONG   M_CONT               ;POINTER TO HEADER MESSAGE\r
+\r
+DO_CRFR:\r
+        .LONG   GEN_ADJ              ;ROUTINE TO RUN\r
+        .LONG   M_CRFR2              ;POINTER TO HEADER MESSAGE\r
+        .LONG   HELP_CRFR            ;POINTER TO HELP MESSAGES FOR RIGHT SIDE\r
+        .WORD   ADJFRAC              ;CMOS ADJUSTMENT WE'RE SETTING\r
+        .LONG   0                    ;MINIMUM VALUE\r
+        .LONG   1                    ;MAXIMUM VALUE\r
+        .LONG   1                    ;MOVE UP AND DOWN BY 1\r
+        .LONG   0                    ;DON'T SUB ZERO FOR ANY\r
+        .LONG   LIST_1LINE           ;MESSAGE LIST USED FOR VALUES.\r
+        .WORD   WRAP_VAL             ;WRAP AROUND\r
+        .LONG   LIST_NOYES           ;LIST OF MESSAGES FOR THIS ADJ.\r
+        .LONG   M_CRFR               ;POINTER TO HEADER MESSAGE\r
+\r
+DO_CPD:   \r
+       .LONG   GEN_ADJ              ;ROUTINE TO RUN\r
+        .LONG   M_CPD                ;POINTER TO HEADER MESSAGE\r
+        .LONG   HELP_CPD             ;POINTER TO HELP MESSAGES FOR RIGHT SIDE\r
+        .WORD   ADJCDIV              ;CMOS ADJUSTMENT WE'RE SETTING\r
+        .LONG   0                    ;MINIMUM VALUE\r
+        .LONG   20                   ;MAXIMUM VALUE\r
+        .LONG   1                    ;MOVE UP AND DOWN BY 1'S\r
+        .LONG   0                    ;DON'T SUB ZERO FOR ANY\r
+        .LONG   BIN_OR_MESS             ;JUST SHOW THE NUMBER\r
+        .WORD   0                    ;NO WRAP AROUND\r
+        .LONG   M_NO_COL             ;NO EXTRA INFO NEEDED\r
+        .LONG   M_CPD                ;POINTER TO HEADER MESSAGE\r
+\r
+DO_MAX:   \r
+       .LONG   GEN_ADJ              ;ROUTINE TO RUN\r
+        .LONG   M_MAX                ;POINTER TO HEADER MESSAGE\r
+        .LONG   HELP_MAX             ;POINTER TO HELP MESSAGES FOR RIGHT SIDE\r
+        .WORD   ADJMAXC              ;CMOS ADJUSTMENT WE'RE SETTING\r
+        .LONG   5                    ;MINIMUM VALUE\r
+        .LONG   99                   ;MAXIMUM VALUE\r
+        .LONG   1                    ;MOVE UP AND DOWN BY 1'S\r
+        .LONG   0                    ;DON'T SUB ZERO FOR ANY\r
+        .LONG   JUST_BIN             ;JUST SHOW THE NUMBER\r
+        .WORD   WRAP_VAL             ;WRAP AROUND\r
+        .LONG   0                    ;NO EXTRA INFO NEEDED\r
+        .LONG   M_MAX                ;POINTER TO HEADER MESSAGE\r
+\r
+DO_FREE:\r
+        .LONG   GEN_ADJ              ;ROUTINE TO RUN\r
+        .LONG   MESS_FREE            ;POINTER TO HEADER MESSAGE\r
+        .LONG   HELP_FREE            ;POINTER TO HELP MESSAGES FOR RIGHT SIDE\r
+        .WORD   ADJFREPL             ;CMOS ADJUSTMENT WE'RE SETTING\r
+*\r
+*      G_FREE:  REPLACE  ".LONG 0"   WITH  ".LONG 1"   \r
+*\r
+       .LONG   0                    ;MINIMUM VALUE\r
+        .LONG   1                    ;MAXIMUM VALUE\r
+        .LONG   1                    ;MOVE UP AND DOWN BY 250'S\r
+        .LONG   0                    ;DON'T SUB ZERO FOR ANY\r
+        .LONG   LIST_1LINE           ;MESSAGE LIST USED FOR VALUES.\r
+        .WORD   WRAP_VAL             ;WRAP AROUND\r
+*\r
+*      G_FREE:  REPLACE  ".LONG LIST_NOYES"   WITH  ".LONG LIST_YESNO" \r
+*\r
+        .LONG   LIST_NOYES           ;LIST OF MESSAGES FOR THIS ADJ.\r
+        .LONG   MESS_FREE            ;POINTER TO HEADER MESSAGE\r
+\r
+DO_CTIT:\r
+        .LONG   GEN_ADJ              ;ROUTINE TO RUN\r
+        .LONG   MESS_CTIT            ;POINTER TO HEADER MESSAGE\r
+        .LONG   CTIT_HELP            ;POINTER TO HELP MESSAGES FOR RIGHT SIDE\r
+        .WORD   ADJNOCPAG            ;CMOS ADJUSTMENT WE'RE SETTING\r
+        .LONG   0                    ;MINIMUM VALUE\r
+        .LONG   1                    ;MAXIMUM VALUE\r
+        .LONG   1                    ;MOVE UP AND DOWN BY 1'S\r
+        .LONG   0                    ;DON'T SUB ZERO FOR ANY\r
+        .LONG   LIST_1LINE           ;MESSAGE LIST USED FOR VALUES.\r
+        .WORD   WRAP_VAL             ;WRAP AROUND\r
+        .LONG   LIST_YESNO           ;LIST OF MESSAGES FOR THIS ADJ.\r
+        .LONG   MESS_CTIT            ;POINTER TO HEADER MESSAGE\r
+\r
+*\r
+*       ADJUSTMENT MENU IS SKINNY..LEAVING ROOM FOR EXPLANATION.\r
+*\r
+AM_BDY  EQU     -2\r
+AM_WID  EQU     0A7H\r
+AM_X    EQU     TIT_ULX+GAP+MB_XWID+(AM_WID/2)+C_KLUDGE\r
+AM_Y    EQU     INST_LRY+BOX_YGAP+MB_YWID+GAP-AM_BDY\r
+*\r
+*       RIGHT MARGIN OF ADJUST MENU BOX\r
+*\r
+AM_RX   EQU     TIT_ULX+(2*GAP)+AM_WID+(2*MB_XWID)\r
+*\r
+*       LEFT MARGIN OF HELP BOX\r
+*\r
+AM_HX   EQU     AM_RX+BOX_XGAP\r
+\r
+MEN_ADJ: \r
+       .LONG   RD7FONT         ;FONT\r
+        .LONG   STRCNRM         ;CENTER PLEASE\r
+        .LONG   M_GADJ          ;TITLE\r
+        .WORD   ROBO_PURPLE    ;COLOR OF TITLE\r
+        .WORD   AM_X            ;UL X\r
+        .WORD   AM_Y            ;UL Y\r
+        .WORD   12\r
+        .WORD   ROBO_WHITE     ;COLOR WHEN NOT SELECTED\r
+        .WORD   12              ;HEIGHT OF SELECTION BAR\r
+        .WORD   AM_BDY          ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE)\r
+        .WORD   BAR_DX          ;EXTRA X ON EACH SIDE.\r
+        .WORD   AM_WID          ;WIDTH OF BAR!\r
+        .WORD   ROBO_DECAY     ;TEXT COLOR OF SELECTED ITEM\r
+        .LONG   MESS_MM,0,BLNK_HELP        ;RETURN TO MAIN MENU\r
+        .LONG   MESS_PRICE,DO_PRICE,ADJ_HELP\r
+        .LONG   MESS_PARAM,DO_PARAM,ADJ_HELP\r
+        .LONG   MESS_CNTR,DO_CNTR,ADJ_HELP     \r
+        .LONG   MESS_DIFF,DO_DIFF,ADJ_HELP     \r
+;        .LONG   MESS_EASY,DO_EASY,ADJ_HELP\r
+        .LONG   MESS_LIVES,DO_LIVES,ADJ_HELP    \r
+;        .LONG   MESS_ROCKS,DO_ROCKS,ADJ_HELP\r
+;        .LONG   MESS_EXTRA,DO_EXTRA,ADJ_HELP\r
+;        .LONG   MESS_LAST,DO_LAST,ADJ_HELP\r
+        .LONG   MESS_AMODE,DO_AMODE,ADJ_HELP\r
+        .LONG   MESS_AHSRES,DO_AHSRES,ADJ_HELP\r
+        .LONG   MESS_GORE,DO_GORE,ADJ_HELP\r
+        .LONG   MESS_MM,0,BLNK_HELP        ;RETURN TO MAIN MENU\r
+        .LONG   0               ;END\r
+\r
+MEN_CUST:\r
+        .LONG   RD7FONT         ;FONT\r
+        .LONG   STRCNRM         ;CENTER PLEASE\r
+        .LONG   M_CUSPRI        ;TITLE\r
+        .WORD   ROBO_CYAN       ;COLOR OF TITLE\r
+        .WORD   AM_X            ;UL X\r
+        .WORD   AM_Y            ;UL Y\r
+        .WORD   11              ;VERTICAL SPACING\r
+        .WORD   ROBO_CYAN       ;COLOR WHEN NOT SELECTED\r
+        .WORD   12              ;HEIGHT OF SELECTION BAR\r
+        .WORD   AM_BDY          ;DISTANCE OF BAR FROM TOP OF TEXT (NEGATIVE)\r
+        .WORD   BAR_DX          ;EXTRA X ON EACH SIDE.\r
+        .WORD   AM_WID          ;WIDTH OF BAR!\r
+        .WORD   ROBO_DECAY     ;TEXT COLOR OF SELECTED ITEM\r
+        .LONG   MESS_AM,0,BLNK_HELP        ;RETURN TO MAIN MENU\r
+        .LONG   M_LCU,DO_LCOIN,ADJ_HELP     ;LEFT SLOT UNITS\r
+        .LONG   M_RCU,DO_RCOIN,ADJ_HELP     ;RIGHT SLOT UNITS\r
+        .LONG   M_CCU,DO_CCOIN,ADJ_HELP     ;CENTER SLOT UNITS\r
+        .LONG   M_XCU,DO_XCOIN,ADJ_HELP     ;RIGHT SLOT UNITS\r
+        .LONG   M_UC,DO_UC,ADJ_HELP         ;UNITS FOR CREDIT\r
+        .LONG   M_UB,DO_UB,ADJ_HELP         ;UNITS FOR BONUS\r
+        .LONG   M_UM,DO_UM,ADJ_HELP         ;MINIMUM UNITS\r
+        .LONG   M_CST,DO_CST,ADJ_HELP       ;CREDITS REQUIRED TO START\r
+        .LONG   M_CONT,DO_CONT,ADJ_HELP     ;CREDITS REQUIRED TO CONTINUE\r
+        .LONG   MESS_CTIT,DO_CTIT,ADJ_HELP     ;COIN PAGE HELP LINE\r
+        .LONG   M_CRFR,DO_CRFR,ADJ_HELP        ;SHOW CREDIT FRACTIONS\r
+        .LONG   M_CPD,DO_CPD,ADJ_HELP          ;COINS PER DOLLAR\r
+        .LONG   MESS_FREE,DO_FREE,ADJ_HELP     ;FREE PLAY\r
+        .LONG   M_MAX,DO_MAX,ADJ_HELP          ;MAXIMUM CREDITS\r
+;        .LONG   MESS_AM,0,BLNK_HELP        ;RETURN TO MAIN MENU\r
+        .LONG   0\r
+\r
+M_GADJ  \r
+       .STRING         "GAME ADJUSTMENT"\r
+        .BYTE     0\r
+        .EVEN\r
+\r
+M_CUSPRI: \r
+       .STRING         "CUSTOM PRICING"\r
+        .BYTE     0\r
+        .EVEN\r
+\r
+MESS_FREE:        \r
+       .STRING "FREE PLAY"\r
+        .BYTE 0\r
+        .EVEN\r
+\r
+MESS_PRICE:\r
+        .STRING "STANDARD PRICING"\r
+        .BYTE 0\r
+        .EVEN\r
+MESS_PARAM:\r
+       .STRING "CUSTOM PRICING"  \r
+        .BYTE 0\r
+        .EVEN\r
+MESS_DIFF:\r
+        .STRING "GAME DIFFICULTY"\r
+        .BYTE 0\r
+        .EVEN\r
+MESS_CNTR:\r
+        .STRING "COIN COUNTER MODE"\r
+        .BYTE 0\r
+        .EVEN\r
+MESS_CTIT:\r
+        .STRING "COIN PAGE HELP"\r
+        .BYTE 0\r
+        .EVEN\r
+MESS_LIVES:       \r
+       .STRING "LIVES PER PLAY"\r
+        .BYTE 0\r
+        .EVEN\r
+;MESS_EASY:        \r
+;      .STRING "EASY BUY-IN"\r
+;        .BYTE 0\r
+;        .EVEN\r
+;MESS_ROCKS:\r
+;        .STRING "POWER-UPS PER PLAY"\r
+;        .BYTE 0\r
+;        .EVEN\r
+;MESS_EXTRA:\r
+;        .STRING "EXTRA MAN EVERY"\r
+;        .BYTE 0\r
+;        .EVEN\r
+;MESS_LAST:        \r
+;      .STRING "LAST EXTRA MAN"\r
+;        .BYTE 0\r
+;        .EVEN\r
+MESS_AMODE:       \r
+       .STRING "ATTRACT-MODE SOUND"   ;FOR MENU\r
+        .BYTE 0\r
+        .EVEN\r
+MESS_AMOD2:       \r
+       .STRING "A-MODE SOUND"        ;FOR TITLE BOX (SHORTER VER.)\r
+        .BYTE 0\r
+        .EVEN\r
+MESS_AHSRES:       \r
+       .STRING "AUTO HIGH SCORE RESET"    ;FOR MENU\r
+        .BYTE 0\r
+        .EVEN\r
+MESS_HSR2:\r
+        .STRING "AUTO H.S. RESET"\r
+        .BYTE 0\r
+        .EVEN\r
+MESS_GORE:        \r
+       .STRING "VIOLENCE LEVEL"\r
+        .BYTE 0\r
+        .EVEN\r
+\r
+M_LCU:    \r
+       .STRING "LEFT CHUTE (1) UNITS"\r
+        .BYTE 0\r
+        .EVEN\r
+M_CCU:    \r
+       .STRING "CHUTE (3) UNITS"\r
+        .BYTE 0\r
+        .EVEN\r
+M_RCU:   \r
+       .STRING "RIGHT CHUTE (2) UNITS"\r
+        .BYTE 0\r
+        .EVEN\r
+M_XCU:   \r
+       .STRING "CHUTE (4) UNITS"\r
+        .BYTE 0\r
+        .EVEN\r
+M_UC:     \r
+       .STRING "UNITS / CREDIT"\r
+        .BYTE 0\r
+        .EVEN\r
+M_UB:     \r
+       .STRING "UNITS / BONUS"\r
+        .BYTE 0\r
+        .EVEN\r
+M_UM:     \r
+       .STRING "MIN. UNITS REQUIRED"\r
+        .BYTE 0\r
+        .EVEN\r
+M_UM2:    \r
+       .STRING  "MINIMUM UNITS"\r
+        .BYTE 0\r
+        .EVEN\r
+M_CST:    \r
+       .STRING "CREDITS TO START"\r
+        .BYTE 0\r
+        .EVEN\r
+M_CONT:   \r
+       .STRING "CREDITS TO CONTINUE"\r
+        .BYTE 0\r
+        .EVEN\r
+M_CONT2:  \r
+       .STRING "CRED. TO CONTINUE"\r
+        .BYTE 0\r
+        .EVEN\r
+M_CRFR:   \r
+       .STRING "SHOW CREDIT FRACTIONS"\r
+        .BYTE 0\r
+        .EVEN\r
+M_CRFR2:  \r
+       .STRING "CREDIT FRACTIONS"\r
+        .BYTE 0\r
+        .EVEN\r
+M_CPD:    \r
+       .STRING "COINS PER DOLLAR"\r
+        .BYTE 0\r
+        .EVEN\r
+M_MAX:    \r
+       .STRING "MAXIMUM CREDITS"\r
+        .BYTE 0\r
+        .EVEN\r
+MESS_AM:  \r
+       .STRING "RETURN TO ADJ. MENU"\r
+        .BYTE 0\r
+        .EVEN\r
+*\r
+*       THIS IS THE ADJUSTMENT NAME IN THE UPPER RIGHT\r
+*       BOX\r
+*\r
+ADJT_Y  EQU     INST_ULY+9                ;CENTER IN THE BOX\r
+ADJT_SETUP:\r
+        MESS_MAC  RD7FONT,SPACING20,200,ADJT_Y,ROBO_LF,STRCNRM,0\r
+\r
+CSET_Y EQU     CUR_ULY+7\r
+        .EVEN\r
+\r
+MOC_Y1   EQU     CSET_Y+20\r
+MOC_Y2   EQU     MOC_Y1+10\r
+MOC_Y3   EQU     MOC_Y2+10\r
+\r
+MESS_OPEN_OR_CANCEL\r
+         MESS_MAC  RD7FONT,SPACING20,AM_X,MOC_Y1,ROBO_LF,STRCNRM,0\r
+         .STRING   "OPEN COIN DOOR, OR"\r
+         .BYTE   0,1\r
+         .EVEN\r
+         MESS_MAC  RD7FONT,SPACING20,AM_X,MOC_Y2,ROBO_LF,STRCNRM,0\r
+         .STRING   "PRESS ANY BUTTON"\r
+         .BYTE   0,1\r
+         .EVEN\r
+         MESS_MAC  RD7FONT,SPACING20,AM_X,MOC_Y3,ROBO_LF,STRCNRM,0\r
+         .STRING   "TO CANCEL"\r
+         .BYTE   0,0\r
+         .EVEN\r
+\r
+IN_Y1    EQU     CUR_ULY+12\r
+IN_Y2    EQU     IN_Y1+12\r
+IN_Y3    EQU     IN_Y2+39\r
+IN_Y4    EQU     IN_Y3+12\r
+\r
+INST_TO_ADJ\r
+          MESS_MAC  RD7FONT,SPACING07,AM_X,IN_Y1,ROBO_WHITE,STRCNRM,0\r
+         .STRING   "MODIFY VALUE WITH"\r
+         .BYTE   0,1  \r
+         .EVEN\r
+          MESS_MAC  RD7FONT,SPACING07,AM_X,IN_Y2,ROBO_WHITE,STRCNRM,0\r
+         .STRING   "ANY STICK"\r
+         .BYTE   0,1  \r
+         .EVEN\r
+         MESS_MAC  RD7FONT,SPACING07,AM_X,IN_Y3,ROBO_WHITE,STRCNRM,0\r
+         .STRING   "PRESS ANY BUTTON"\r
+         .BYTE   0,1 \r
+         .EVEN\r
+         MESS_MAC  RD7FONT,SPACING07,AM_X,IN_Y4,ROBO_WHITE,STRCNRM,0\r
+         .STRING   "WHEN VALUE IS CORRECT."\r
+         .BYTE   0,0 \r
+         .EVEN\r
+*\r
+*        FOR THE WORD UNDER "ADJUSTING" WHILE THE ADJUSTING\r
+*        IS ACTUALLY BEING DONE\r
+*\r
+ADNOW_Y1 EQU     CUR_ULY-35\r
+ADNOW_Y2 EQU     ADNOW_Y1+12\r
+\r
+MES_ADJUSTING\r
+         MESS_MAC  RD7FONT,SPACING07,AM_X,ADNOW_Y1,ROBO_LF,STRCNRM,0\r
+         .STRING   "ADJUSTING"\r
+         .BYTE   0,0\r
+         .EVEN\r
+\r
+MES_ADNAME\r
+         MESS_MAC  RD7FONT,SPACING07,AM_X,ADNOW_Y2,ROBO_LF,STRCNRM,0\r
+\r
+INSTR_Y  EQU     INST_ULY+5\r
+INSTR_2Y EQU     INSTR_Y+10\r
+\r
+ADJ_ADV\r
+          MESS_MAC  RD7FONT,SPACING07,AM_X,INSTR_Y,ROBO_CYAN,STRCNRM,0\r
+         .STRING   "SELECT WITH ANY STICK"\r
+         .BYTE   0,1  \r
+         .EVEN\r
+         MESS_MAC  RD7FONT,SPACING07,AM_X,INSTR_2Y,ROBO_CYAN,STRCNRM,0\r
+         .STRING   "PRESS A BUTTON TO MODIFY"\r
+         .BYTE   0,0 \r
+         .EVEN\r
+\r
+AAY      EQU     IN_Y1+19H\r
+\r
+ADJ_ARROW\r
+         MESS_MAC  RD7FONT,0FFFDH,AM_X,AAY,ROBO_LASER,STRCNRM,0\r
+         .STRING   "----->    ----->    ----->    ----->    ----->"\r
+         .BYTE   0,0\r
+         .EVEN\r
+*\r
+*        IF COIN SETTINGS DON'T NEATLY FIT INTO\r
+*        A MODE\r
+*\r
+MESS_TAMPERED\r
+         .STRING "NON-STANDARD"\r
+         .BYTE   0\r
+         .EVEN\r
+\r
+M_SLOTVAL\r
+         .STRING "COIN SLOT VALUE"\r
+         .BYTE   0\r
+         .EVEN\r
+\r
+MESS_GP  .STRING "GAME PRICING:"\r
+         .BYTE   0\r
+         .EVEN\r
+MESS_FP  .STRING "FREE PLAY:"\r
+         .BYTE   0\r
+         .EVEN\r
+MESS_MAX .STRING "MAXIMUM CREDITS:"\r
+         .BYTE   0\r
+         .EVEN\r
+\r
+M_CTS_PL         .STRING "CREDITS TO START:"\r
+         .BYTE 0\r
+         .EVEN\r
+M_CTC_PL         .STRING "CREDITS TO CONTINUE:"\r
+         .BYTE 0\r
+         .EVEN\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          HELP STRUCTURES FOR MAIN ADJUSTMENT MENU!                     *\r
+*                                                                        *\r
+**************************************************************************\r
+HELP_DIFF\r
+         .WORD   1               ;CENTER JUSTIFY\r
+         .WORD   ROBO_YELLOW    ;COLOR\r
+         .WORD   6               ;6 ENTRIES\r
+         .LONG   DH_0\r
+         .LONG   DH_1\r
+         .LONG   M_NULL\r
+         .LONG   DH_3\r
+         .LONG   DH_4\r
+         .LONG   DH_5\r
+HELP_CNTR\r
+         .WORD   1               ;CENTER JUSTIFY\r
+         .WORD   ROBO_YELLOW    ;COLOR\r
+         .WORD   6               ;6 ENTRIES\r
+         .LONG   CNTRH_0\r
+         .LONG   CNTRH_1\r
+         .LONG   M_NULL\r
+         .LONG   CNTRH_3\r
+         .LONG   CNTRH_4\r
+         .LONG   CNTRH_5\r
+\r
+HELP_PRICE\r
+         .WORD   0               ;CENTER JUSTIFY\r
+         .WORD   ROBO_YELLOW    ;COLOR\r
+         .WORD   4               ;5 ENTRIES\r
+         .LONG   PH_0\r
+         .LONG   PH_1\r
+         .LONG   PH_2\r
+         .LONG   PH_3\r
+\r
+HELP_PARAM\r
+         .WORD   0               ;CENTER JUSTIFY\r
+         .WORD   ROBO_YELLOW    ;COLOR\r
+         .WORD   6               ;5 ENTRIES\r
+         .LONG   PP_0\r
+         .LONG   PP_1\r
+         .LONG   PP_2\r
+         .LONG   PP_3\r
+         .LONG   PP_4\r
+         .LONG   PP_5\r
+\r
+;HELP_EASY\r
+;         .WORD   0               ;CENTER JUSTIFY\r
+;         .WORD   ROBO_YELLOW    ;COLOR\r
+;         .WORD   4               ;4 ENTRIES\r
+;         .LONG   EH_0\r
+;         .LONG   EH_1\r
+;         .LONG   M_NULL\r
+;         .LONG   EH_2\r
+\r
+HELP_LIVES\r
+         .WORD   0               ;CENTER JUSTIFY\r
+         .WORD   ROBO_YELLOW    ;COLOR\r
+         .WORD   6               ;6 ENTRIES\r
+         .LONG   LH_0\r
+         .LONG   LH_1\r
+         .LONG   LH_2\r
+         .LONG   LH_3\r
+         .LONG   M_NULL\r
+         .LONG   LH_4\r
+\r
+;HELP_ROCKS\r
+;         .WORD   0               ;CENTER JUSTIFY\r
+;         .WORD   ROBO_YELLOW    ;COLOR\r
+;         .WORD   6               ;6 ENTRIES\r
+;         .LONG   RH_0            ;UNIQUE LINE FOR ROCKETS\r
+;         .LONG   LH_1            ;SAME WORDING AS LIVES\r
+;         .LONG   LH_2\r
+;         .LONG   LH_3\r
+;         .LONG   M_NULL\r
+;         .LONG   RH_5            ;FACTORY OF 5\r
+\r
+;HELP_EXTRA\r
+;         .WORD   0               ;CENTER JUSTIFY\r
+;         .WORD   ROBO_YELLOW    ;COLOR\r
+;         .WORD   6               ;6 ENTRIES\r
+;         .LONG   EXH_0            ;UNIQUE LINE FOR ROCKETS\r
+;         .LONG   EXH_1            ;SAME WORDING AS LIVES\r
+;         .LONG   EXH_2\r
+;         .LONG   EXH_3\r
+;         .LONG   M_NULL\r
+;         .LONG   EXH_4            ;FACTORY OF 100,000\r
+\r
+;HELP_LAST\r
+;         .WORD   0               ;CENTER JUSTIFY\r
+;         .WORD   ROBO_YELLOW    ;COLOR\r
+;         .WORD   6               ;6 ENTRIES\r
+;         .LONG   LMH_0\r
+;         .LONG   LMH_1\r
+;         .LONG   LMH_2\r
+;         .LONG   M_NULL\r
+;         .LONG   LMH_3\r
+;         .LONG   LMH_4\r
+\r
+HELP_AMODE\r
+         .WORD   0               ;CENTER JUSTIFY\r
+         .WORD   ROBO_YELLOW    ;COLOR\r
+         .WORD   5               ;6 ENTRIES\r
+         .LONG   HAM_1\r
+         .LONG   HAM_2\r
+         .LONG   HAM_3\r
+         .LONG   M_NULL\r
+         .LONG   HAM_4\r
+\r
+HELP_AHSRES\r
+         .WORD   0               ;CENTER JUSTIFY\r
+         .WORD   ROBO_YELLOW    ;COLOR\r
+         .WORD   6               ;6 ENTRIES\r
+         .LONG   HAH_1\r
+         .LONG   HAH_2\r
+         .LONG   HAH_3\r
+         .LONG   HAH_4\r
+         .LONG   M_NULL\r
+         .LONG   HAH_5\r
+\r
+HELP_GORE\r
+         .WORD   0               ;CENTER JUSTIFY\r
+         .WORD   ROBO_YELLOW    ;COLOR\r
+         .WORD   5               ;6 ENTRIES\r
+         .LONG   HG_1\r
+         .LONG   HG_2\r
+         .LONG   HG_3\r
+         .LONG   M_NULL\r
+         .LONG   HG_4\r
+\r
+HELP_FREE\r
+         .WORD   0\r
+         .WORD   ROBO_WHITE\r
+         .WORD   6\r
+         .LONG   FP_M1\r
+         .LONG   FP_M2\r
+         .LONG   FP_M3\r
+         .LONG   FP_M4\r
+         .LONG   M_NULL\r
+         .LONG   FP_M5\r
+\r
+CTIT_HELP\r
+         .WORD   0\r
+         .WORD   ROBO_WHITE\r
+         .WORD   5\r
+         .LONG   CT_M1\r
+         .LONG   CT_M2\r
+         .LONG   CT_M3\r
+         .LONG   CT_M4\r
+         .LONG   CT_M5\r
+\r
+HELP_LCU\r
+         .WORD   0\r
+         .WORD   ROBO_WHITE\r
+         .WORD   6\r
+         .LONG   LC_M1\r
+         .LONG   LC_M2\r
+         .LONG   LC_M3\r
+         .LONG   LC_M4\r
+         .LONG   LC_M5\r
+         .LONG   LC_M6\r
+\r
+HELP_CCU\r
+         .WORD   0\r
+         .WORD   ROBO_WHITE\r
+         .WORD   6\r
+         .LONG   LC_M1\r
+         .LONG   LC_M2\r
+         .LONG   LC_M3\r
+         .LONG   LC_M4\r
+         .LONG   CC_M5\r
+         .LONG   LC_M6\r
+\r
+HELP_RCU\r
+         .WORD   0\r
+         .WORD   ROBO_WHITE\r
+         .WORD   6\r
+         .LONG   LC_M1\r
+         .LONG   LC_M2\r
+         .LONG   LC_M3\r
+         .LONG   LC_M4\r
+         .LONG   RC_M5\r
+         .LONG   LC_M6\r
+HELP_XCU\r
+         .WORD   0\r
+         .WORD   ROBO_WHITE\r
+         .WORD   6\r
+         .LONG   LC_M1\r
+         .LONG   LC_M2\r
+         .LONG   LC_M3\r
+         .LONG   LC_M4\r
+         .LONG   XC_M5\r
+         .LONG   LC_M6\r
+\r
+HELP_UC  .WORD   0\r
+         .WORD   ROBO_WHITE\r
+         .WORD   3\r
+         .LONG   UC_M1\r
+         .LONG   UC_M2\r
+         .LONG   UC_M3\r
+\r
+HELP_UB  .WORD   0\r
+         .WORD   ROBO_WHITE\r
+         .WORD   3\r
+         .LONG   UB_M1\r
+         .LONG   UB_M2\r
+         .LONG   UB_M3\r
+\r
+HELP_UM  .WORD   0\r
+         .WORD   ROBO_WHITE\r
+         .WORD   3\r
+         .LONG   UM_M1\r
+         .LONG   UM_M2\r
+         .LONG   UM_M3\r
+\r
+\r
+HELP_CS  .WORD   0\r
+         .WORD   ROBO_WHITE\r
+         .WORD   3\r
+         .LONG   CS_M1\r
+         .LONG   CS_M2\r
+         .LONG   CS_M3\r
+\r
+HELP_CC  .WORD   0\r
+         .WORD   ROBO_WHITE\r
+         .WORD   3\r
+         .LONG   CS_M1\r
+         .LONG   CS_M2\r
+         .LONG   CC_M3\r
+\r
+HELP_CRFR \r
+         .WORD   0\r
+         .WORD   ROBO_WHITE\r
+         .WORD   6\r
+         .LONG   FR_M1\r
+         .LONG   FR_M2\r
+         .LONG   FR_M3\r
+         .LONG   M_NULL\r
+         .LONG   FR_M4\r
+         .LONG   FR_M5\r
+\r
+HELP_CPD .WORD   0\r
+         .WORD   ROBO_WHITE\r
+         .WORD   6\r
+         .LONG   CPD_M1\r
+         .LONG   CPD_M2\r
+         .LONG   CPD_M3\r
+         .LONG   CPD_M4\r
+         .LONG   CPD_M5\r
+         .LONG   CPD_M6\r
+\r
+HELP_MAX .WORD   0\r
+         .WORD   ROBO_WHITE\r
+         .WORD   6\r
+         .LONG   MC_M1\r
+         .LONG   MC_M2\r
+         .LONG   MC_M3\r
+         .LONG   MC_M4\r
+         .LONG   M_NULL\r
+         .LONG   MC_M5\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          HELP MESSAGES FOR MAIN ADJUSTMENT MENU!                       *\r
+*                                                                        *\r
+**************************************************************************\r
+\r
+CNTRH_0     .STRING "THIS CONTROLS MECHANICAL"\r
+         .BYTE 0\r
+         .EVEN\r
+CNTRH_1     .STRING "COIN COUNTER MODE"\r
+          .BYTE 0\r
+         .EVEN\r
+CNTRH_3     .STRING "CNTR1 = MULT OF LOW COIN: 1"\r
+         .BYTE 0\r
+         .EVEN\r
+CNTRH_4     .STRING "CNTR1 = 1 COUNT/COIN:     2"\r
+         .BYTE 0                  \r
+         .EVEN\r
+CNTRH_5     .STRING "CNTR1=LCOIN, CNTR2=RCOIN: 3"\r
+         .BYTE 0\r
+         .EVEN\r
+\r
+\r
+DH_0     .STRING "THIS CONTROLS THE OVERALL"\r
+         .BYTE 0\r
+         .EVEN\r
+DH_1     .STRING "DIFFICULTY OF GAME PLAY."\r
+M_NULL   .BYTE 0\r
+         .EVEN\r
+DH_3     .STRING "EASIEST  SETTING: 1"\r
+         .BYTE 0\r
+         .EVEN\r
+DH_4     .STRING "HARDEST SETTING: 10"\r
+         .BYTE 0\r
+         .EVEN\r
+DH_5     .STRING "FACTORY SETTING: 3"\r
+         .BYTE 0\r
+         .EVEN\r
+\r
+PH_0     .STRING "SELECT BUILT-IN PRICING"\r
+         .BYTE 0\r
+         .EVEN\r
+PH_1     .STRING "MODE, SELECTING COINS"\r
+         .BYTE 0\r
+         .EVEN\r
+PH_2     .STRING "PER CREDIT, AND"\r
+         .BYTE 0\r
+         .EVEN\r
+PH_3     .STRING "COIN SLOT VALUE."\r
+         .BYTE 0\r
+         .EVEN\r
+*\r
+*\r
+;RH_0     .STRING "THE NUMBER OF POWER-UPS"\r
+;         .BYTE 0\r
+;         .EVEN\r
+\r
+;RH_5     .STRING "FACTORY SETTING: 5"\r
+;         .BYTE 0\r
+;         .EVEN\r
+\r
+LH_0     .STRING "THE NUMBER OF LIVES"\r
+         .BYTE 0\r
+         .EVEN\r
+LH_1     .STRING "A PLAYER RECEIVES"\r
+         .BYTE 0\r
+         .EVEN\r
+LH_2     .STRING "EACH TIME HE STARTS"\r
+         .BYTE 0\r
+         .EVEN\r
+LH_3     .STRING "OR CONTINUES A GAME."\r
+         .BYTE 0\r
+         .EVEN\r
+LH_4     .STRING "FACTORY SETTING: 3"\r
+         .BYTE 0\r
+         .EVEN\r
+\r
+;EXH_0    .STRING "PLAYERS RECEIVE AN"\r
+;         .BYTE 0\r
+;         .EVEN\r
+;EXH_1    .STRING "EXTRA LIFE EACH"\r
+;         .BYTE 0\r
+;         .EVEN\r
+;EXH_2    .STRING "TIME THEY SCORE"\r
+;         .BYTE 0\r
+;         .EVEN\r
+;EXH_3    .STRING "THIS MANY POINTS."\r
+;         .BYTE 0\r
+;         .EVEN\r
+;EXH_4    .STRING "FACTORY SETTING: 100,000"\r
+;         .BYTE 0\r
+;         .EVEN\r
+\r
+;LMH_0    .STRING "ONCE A SCORE REACHES"\r
+;         .BYTE 0\r
+;         .EVEN\r
+;LMH_1    .STRING "THIS LEVEL, NO EXTRA"\r
+;         .BYTE 0\r
+;         .EVEN\r
+;LMH_2    .STRING "MEN WILL BE AWARDED."\r
+;         .BYTE 0\r
+;         .EVEN\r
+;LMH_3    .STRING "FACTORY SETTING: OFF"\r
+;         .BYTE 0\r
+;         .EVEN\r
+;LMH_4    .STRING "(NO LIMIT ON EXTRA MEN)" \r
+;         .BYTE 0\r
+;         .EVEN\r
+\r
+HAM_1    .STRING "THIS DETERMINES WHETHER"\r
+         .BYTE 0\r
+         .EVEN\r
+HAM_2    .STRING "THE GAME WILL MAKE SOUNDS"\r
+         .BYTE 0\r
+         .EVEN\r
+HAM_3    .STRING "IN THE ATTRACT MODE."\r
+         .BYTE 0\r
+         .EVEN\r
+HAM_4    .STRING "FACTORY SETTING: ON"\r
+         .BYTE 0\r
+         .EVEN\r
+HAH_1    .STRING "THE ALL TIME HIGH SCORE"\r
+         .BYTE 0\r
+         .EVEN\r
+HAH_2    .STRING "TABLE WILL BE RESET TO"\r
+         .BYTE 0\r
+         .EVEN\r
+HAH_3    .STRING "FACTORY VALUES EACH TIME"\r
+         .BYTE 0\r
+         .EVEN\r
+HAH_4    .STRING "THIS MANY PLAYS OCCURS."\r
+         .BYTE 0\r
+         .EVEN\r
+HAH_5    .STRING "FACTORY SETTING: 5000"\r
+         .BYTE 0\r
+         .EVEN\r
+HG_1     .STRING "THIS ALLOWS THE GRAPHIC"\r
+         .BYTE 0\r
+         .EVEN\r
+HG_2     .STRING "VIOLENCE SHOWN ON SCREEN"\r
+         .BYTE 0\r
+         .EVEN\r
+HG_3     .STRING "TO BE ADJUSTED."\r
+         .BYTE 0\r
+         .EVEN\r
+HG_4     .STRING "FACTORY SETTING: NORMAL"\r
+         .BYTE 0\r
+         .EVEN\r
+\r
+FP_M1    .STRING "SETTING FREE PLAY TO"\r
+         .BYTE 0\r
+         .EVEN\r
+FP_M2    .BYTE   ASCII_DQ\r
+         .STRING "YES"\r
+         .BYTE   ASCII_DQ\r
+         .STRING " ALLOWS UNLIMITED"\r
+         .BYTE 0\r
+         .EVEN\r
+FP_M3    .STRING "PLAY WITHOUT INSERTING"\r
+         .BYTE 0\r
+         .EVEN\r
+FP_M4    .STRING "ANY COINS."\r
+         .BYTE 0\r
+         .EVEN\r
+FP_M5    .STRING "FACTORY SETTING: NO"\r
+         .BYTE 0\r
+         .EVEN\r
+CT_M1    .STRING "WHENEVER STANDARD PRICING"\r
+         .BYTE 0\r
+         .EVEN\r
+CT_M2    .STRING "IS USED, A CORRESPONDING"\r
+         .BYTE 0\r
+         .EVEN\r
+CT_M3    .STRING "MESSAGE IS DISPLAYED ON THE"\r
+         .BYTE 0\r
+         .EVEN\r
+CT_M4    .STRING "CREDITS SCREEN.  SETTING THIS"\r
+         .BYTE 0\r
+         .EVEN\r
+CT_M5    .STRING "TO "\r
+         .BYTE ASCII_DQ\r
+         .STRING "NO"\r
+         .BYTE ASCII_DQ\r
+         .STRING " DISABLES THE MESSAGE."\r
+         .BYTE 0\r
+         .EVEN\r
+\r
+PP_0     .STRING "THIS ALLOWS ADJUSTMENT"\r
+         .BYTE 0\r
+         .EVEN\r
+PP_1     .STRING "OF PRICING PARAMETERS"\r
+         .BYTE 0\r
+         .EVEN\r
+PP_2     .STRING "(FOR NON-STANDARD MODES),"\r
+         .BYTE 0\r
+         .EVEN\r
+PP_3     .STRING "FREE PLAY, MAXIMUM CREDITS,"\r
+         .BYTE 0\r
+         .EVEN\r
+PP_4     .STRING "CREDITS REQUIRED TO START"\r
+         .BYTE 0\r
+         .EVEN\r
+PP_5     .STRING "AND CREDITS TO CONTINUE."\r
+         .BYTE 0\r
+         .EVEN\r
+\r
+;EH_0     .STRING   "SETTING NOT YET"\r
+;         .BYTE 0\r
+;         .EVEN\r
+;EH_1     .STRING   "ESTABLISHED"\r
+;         .BYTE 0\r
+;         .EVEN\r
+;EH_2     .STRING   "FACTORY SETTING: ???"\r
+;         .BYTE 0\r
+;         .EVEN\r
+\r
+LC_M1    .STRING "EACH COIN INSERTED ADDS TO"\r
+         .BYTE 0\r
+         .EVEN\r
+LC_M2    .STRING "COIN UNITS.  THIS ADJUSTMENT"\r
+         .BYTE 0\r
+         .EVEN\r
+LC_M3    .STRING "SPECIFIES THE NUMBER OF COIN"\r
+         .BYTE 0\r
+         .EVEN\r
+LC_M4    .STRING "UNITS GIVEN FOR EACH"\r
+         .BYTE 0\r
+         .EVEN\r
+LC_M5    .STRING "COIN IN LEFT COIN CHUTE."\r
+         .BYTE 0\r
+         .EVEN\r
+LC_M6    .STRING "(SEE "\r
+         .BYTE ASCII_DQ\r
+         .STRING "UNITS / CREDIT"\r
+         .BYTE ASCII_DQ\r
+         .STRING ")"\r
+         .BYTE 0\r
+         .EVEN\r
+CC_M5    .STRING "COIN IN THIRD COIN CHUTE."\r
+         .BYTE 0\r
+         .EVEN\r
+RC_M5    .STRING "COIN IN RIGHT COIN CHUTE."\r
+         .BYTE 0\r
+         .EVEN\r
+XC_M5    .STRING "COIN IN FOURTH COIN CHUTE."\r
+         .BYTE 0\r
+         .EVEN\r
+UC_M1    .STRING "THIS IS THE NUMBER OF COIN"\r
+         .BYTE 0\r
+         .EVEN\r
+UC_M2    .STRING "UNITS REQUIRED TO BUY ONE"\r
+         .BYTE 0\r
+         .EVEN\r
+UC_M3    .STRING "CREDIT."\r
+         .BYTE 0\r
+         .EVEN\r
+UB_M1    .STRING "1 BONUS CREDIT IS AWARDED"\r
+         .BYTE 0\r
+         .EVEN\r
+UB_M2    .STRING "AFTER THIS MANY COIN UNITS"\r
+         .BYTE 0\r
+         .EVEN\r
+UB_M3    .STRING "HAVE ACCUMULATED."\r
+         .BYTE 0\r
+         .EVEN\r
+\r
+UM_M1    .STRING "NO CREDITS WILL BE AWARDED"\r
+         .BYTE 0\r
+         .EVEN\r
+UM_M2    .STRING "UNTIL THIS MANY COIN"\r
+         .BYTE 0\r
+         .EVEN\r
+UM_M3    .STRING "UNITS HAVE ACCUMULATED."\r
+         .BYTE 0\r
+         .EVEN\r
+\r
+CS_M1    .STRING "EACH PLAYER NEEDS THIS"\r
+         .BYTE 0\r
+         .EVEN\r
+CS_M2    .STRING "MANY CREDITS TO"\r
+         .BYTE 0\r
+         .EVEN\r
+CS_M3    .STRING "BEGIN PLAY."\r
+         .BYTE 0\r
+         .EVEN\r
+\r
+CC_M3    .STRING "CONTINUE A GAME."\r
+         .BYTE 0\r
+         .EVEN\r
+\r
+FR_M1    .STRING "WHEN SET TO YES,"\r
+         .BYTE 0\r
+         .EVEN\r
+FR_M2    .STRING "FRACTIONAL CREDITS WILL BE"\r
+         .BYTE 0\r
+         .EVEN\r
+FR_M3    .STRING "SEEN ON THE CREDITS SCREEN."\r
+         .BYTE 0\r
+         .EVEN\r
+FR_M4    .STRING "FRACTION SHOWN IS:"\r
+         .BYTE 0\r
+         .EVEN\r
+FR_M5    .STRING "(COIN UNITS / "\r
+         .BYTE ASCII_DQ\r
+         .STRING "UNITS/CREDIT"\r
+         .BYTE ASCII_DQ\r
+         .STRING ")"\r
+         .BYTE 0\r
+         .EVEN\r
+\r
+CPD_M1   .STRING "THE DETAILED BOOKKEEPING"\r
+         .BYTE 0\r
+         .EVEN\r
+CPD_M2   .STRING "SCREEN SHOWS TOTAL"\r
+         .BYTE 0\r
+         .EVEN\r
+CPD_M3   .STRING "COLLECTIONS BASED ON THIS"\r
+         .BYTE 0\r
+         .EVEN\r
+CPD_M4   .STRING "MANY COINS PER DOLLAR."\r
+         .BYTE 0\r
+         .EVEN\r
+CPD_M5   .STRING "(SET TO ZERO TO DISABLE THE"\r
+         .BYTE 0\r
+         .EVEN\r
+CPD_M6   .STRING "DISPLAY OF MONEY TOTALS.)"\r
+         .BYTE 0\r
+         .EVEN\r
+\r
+MC_M1    .STRING "THIS IS THE LIMIT FOR"\r
+         .BYTE 0\r
+         .EVEN\r
+MC_M2    .STRING "THE CREDITS COUNTER."\r
+         .BYTE 0\r
+         .EVEN\r
+MC_M3    .STRING "ADDITIONAL COINS INSERTED"\r
+         .BYTE 0\r
+         .EVEN\r
+MC_M4    .STRING "WILL BE LOST."\r
+         .BYTE 0\r
+         .EVEN\r
+MC_M5    .STRING "FACTORY SETTING: 30"\r
+         .BYTE 0\r
+         .EVEN\r
+\r
+*\r
+*        ADJUSTMENT ENUMERATION STRINGS\r
+*\r
+LIST_CNTR        \r
+         .LONG   CNTR_1,CNTR_2,CNTR_3\r
+LIST_DIFF        \r
+         .LONG   DIFF_1,DIFF_2,DIFF_3,DIFF_4,DIFF_5\r
+         .LONG   DIFF_6,DIFF_7,DIFF_8,DIFF_9,DIFF_10\r
+\r
+LIST_LIVES\r
+         .LONG   LIVE_1,LIVE_2,LIVE_3,LIVE_4,LIVE_5\r
+         .LONG   LIVE_6,LIVE_7\r
+\r
+;LIST_ROCKS\r
+;         .LONG   ROCK_1,ROCK_2,ROCK_3,ROCK_4,ROCK_5\r
+;         .LONG   ROCK_6,ROCK_7,ROCK_8,ROCK_9,ROCK_10\r
+\r
+LIST_AMODE\r
+         .LONG   M_AMS,M_NOAMS\r
+\r
+LIST_GORE\r
+         .LONG   M_NORM,M_LESS\r
+\r
+LIST_NOYES\r
+         .LONG   M_NO,M_YES\r
+\r
+LIST_YESNO\r
+         .LONG   M_YES,M_NO\r
+\r
+M_NO     .STRING "NO"\r
+         .BYTE   0\r
+         .EVEN\r
+\r
+M_YES    .STRING "YES"\r
+         .BYTE   0\r
+         .EVEN\r
+\r
+CNTR_1   .STRING "1 (PROPORTIONAL)"\r
+         .BYTE   0\r
+         .EVEN\r
+CNTR_2   .STRING "2 (1 COUNT/COIN)"\r
+         .BYTE   0\r
+         .EVEN\r
+CNTR_3   .STRING "3 (2 COUNTERS)"\r
+         .BYTE   0\r
+         .EVEN\r
+\r
+DIFF_1   .STRING "1 (EXTRA EASY)"\r
+         .BYTE   0\r
+         .EVEN\r
+DIFF_2   .STRING "2 (EASIER)"\r
+         .BYTE   0\r
+         .EVEN\r
+DIFF_3   .STRING "3 (EASY)"\r
+         .BYTE   0\r
+         .EVEN\r
+DIFF_4   .STRING "4 (MEDIUM-EASY)"\r
+         .BYTE   0\r
+         .EVEN\r
+DIFF_5   .STRING "5 (MEDIUM)"\r
+         .BYTE   0\r
+         .EVEN\r
+DIFF_6   .STRING "6 (MEDIUM-HARD)"\r
+         .BYTE   0\r
+         .EVEN\r
+DIFF_7   .STRING "7 (HARD)"\r
+         .BYTE   0\r
+         .EVEN\r
+DIFF_8   .STRING "8 (HARDER)"\r
+         .BYTE   0\r
+         .EVEN\r
+DIFF_9   .STRING "9 (EXTRA HARD)"\r
+         .BYTE   0\r
+         .EVEN\r
+DIFF_10  .STRING "10 (EXTRA HARD)"\r
+         .BYTE   0\r
+         .EVEN\r
+\r
+LIVE_1   .STRING "1 LIFE"\r
+         .BYTE 0\r
+         .EVEN\r
+LIVE_2   .STRING "2 LIVES"\r
+         .BYTE 0\r
+         .EVEN\r
+LIVE_3   .STRING "3 LIVES"\r
+         .BYTE 0\r
+         .EVEN\r
+LIVE_4   .STRING "4 LIVES"\r
+         .BYTE 0\r
+         .EVEN\r
+LIVE_5   .STRING "5 LIVES"\r
+         .BYTE 0\r
+         .EVEN\r
+LIVE_6   .STRING "6 LIVES"\r
+         .BYTE 0\r
+         .EVEN\r
+LIVE_7   .STRING "7 LIVES"\r
+         .BYTE 0\r
+         .EVEN\r
+\r
+;ROCK_1   .STRING "1 POWER-UP"\r
+;         .BYTE 0\r
+;         .EVEN\r
+;ROCK_2   .STRING "2 POWER-UPS"\r
+;         .BYTE 0\r
+;         .EVEN\r
+;ROCK_3   .STRING "3 POWER-UPS"\r
+;         .BYTE 0\r
+;         .EVEN\r
+;ROCK_4   .STRING "4 POWER-UPS"\r
+;         .BYTE 0\r
+;         .EVEN\r
+;ROCK_5   .STRING "5 POWER-UPS"\r
+;         .BYTE 0\r
+;         .EVEN\r
+;ROCK_6   .STRING "6 POWER-UPS"\r
+;         .BYTE 0\r
+;         .EVEN\r
+;ROCK_7   .STRING "7 POWER-UPS"\r
+;         .BYTE 0\r
+;         .EVEN\r
+;ROCK_8   .STRING "8 POWER-UPS"\r
+;         .BYTE 0\r
+;         .EVEN\r
+;ROCK_9   .STRING "9 POWER-UPS"\r
+;         .BYTE 0\r
+;         .EVEN\r
+;ROCK_10  .STRING "10 POWER-UPS"\r
+;         .BYTE 0\r
+;         .EVEN\r
+\r
+M_AMS    .STRING "ON"\r
+         .BYTE 0\r
+         .EVEN\r
+M_NOAMS  .STRING "OFF"\r
+         .BYTE 0\r
+         .EVEN\r
+M_NORM   .STRING "NORMAL"\r
+         .BYTE 0\r
+         .EVEN\r
+M_LESS   .STRING "LESS VIOLENT"\r
+         .BYTE 0\r
+         .EVEN\r
+*\r
+*        FOR EXTRA MAN EVERY AND LAST EXTRA MAN\r
+*\r
+MESS_OFF .STRING "OFF"\r
+         .BYTE 0\r
+         .EVEN\r
+\r
+M_NOBONUS  .STRING "NO BONUS CREDIT"\r
+         .BYTE 0\r
+         .EVEN\r
+\r
+M_NOMIN  .STRING "NO MINIMUM"\r
+         .BYTE 0\r
+         .EVEN\r
+\r
+M_NO_COL .STRING "NO MONEY TOTALS"\r
+         .BYTE 0\r
+         .EVEN\r
+\r
+         .END\r
+\1a
\ No newline at end of file
diff --git a/AUDIT.ASM b/AUDIT.ASM
new file mode 100644 (file)
index 0000000..4efdbf6
--- /dev/null
+++ b/AUDIT.ASM
@@ -0,0 +1,2957 @@
+       .FILE   'AUDIT.ASM'\r
+       .TITLE  "ROBO AUDITS AND AJUSTMENTS HANDLING"\r
+       .WIDTH  132\r
+       .OPTION B,D,L,T\r
+       .MNOLIST\r
+\r
+;\r
+; SOFTWARE BUFUS: LARRY DEMAR, ROBBI ASHWORTH, AND DR. J\r
+;\r
+; COPYRIGHT (C) 1990 WILLIAMS ELECTRONICS GAMES, INC.\r
+;\r
+;\r
+; GET THE SYSTEM STUFF\r
+\r
+       .INCLUDE        "MPROC.EQU"             ;MPROC EQUATES\r
+       .INCLUDE        "DISP.EQU"              ;DISPLAY PROC. EQUATES\r
+       .INCLUDE        "\VIDEO\SYS\SYS.INC"    ;Z UNIT SYSTEM EQUATES\r
+       .INCLUDE        "\VIDEO\SYS\MACROS.HDR" ;MACROS DEFINITIONS\r
+       .INCLUDE        "IMGTBL.GLO"\r
+       .INCLUDE        "ROBO.EQU"\r
+       .INCLUDE        "LINK.EQU"              ;LINK EQUATES\r
+       .INCLUDE        "MENU.EQU"              ;MENU EQUATES\r
+\r
+       .TEXT\r
+\r
+*\r
+*        BAD_AUD - ANYTIME AN AUDIT NUMBER IS FETCHED, IF ITS\r
+*                  CHECKSUM IS BAD, THEN BAD_AUD GETS SET TO 1\r
+*                  THIS CAUSES "ERROR" IF ANY AUDIT IN A CALCULATION\r
+*                  IS CORRUPTED, AND KEEPS A BAD CHECKSUM BAD WHEN\r
+*                  AN AUDIT IS CHANGED.\r
+                       \r
+        .BSS            BAD_AUD,16   ;(BAD_AUD...NOT BAD_DOG!)     \r
+        .BSS            P_TIMR,16   ;TIMER UNITS FOR GAME\r
+;        .BSS            P2_TIMR,16   ;TIMER UNITS FOR 2 PLAYERS\r
+        .BSS            C_FRAC,16    ;TIME 10 SECONDS TO\r
+*                                    ;INDICATE COIN ACTIVITY\r
+        .BSS            C_FLAGS,3*32 ;INTERRUPT COIN BOUNCE\r
+        .BSS          COINCNTR,32  ;MECH COIN COUNTER TIMERS AND COUNTS        \r
+COINCNT1       .EQU    COINCNTR\r
+COINCNT2       .EQU    COINCNTR+8\r
+*                       TIMERS 1,2:B16-23,B24-B31; COUNTS 1,2 B0-B7;B8-B15 \r
+        .BSS            OCT_FLG,16   ;FLAG SAYS WE'RE HALFWAY THROUGH PUSS!\r
+                       \r
+*\r
+*        IN THIS MODULE\r
+        .DEF           C_FRAC,COINCNTR                 \r
+        .DEF           L_MESS,AUD,AUD1,GET_ADJ\r
+        .DEF           GET_AUD,SLAM_SW,STORE_AUDIT\r
+        .DEF           CR_STRTP\r
+        .DEF           CR_CONTP\r
+        .DEF           P_START  \r
+        .DEF           P_CONT  \r
+        .DEF           CRED_P  \r
+        .DEF           L_TIMER\r
+        .DEF           CRD_SCRN\r
+        .DEF           ADD_DUMP\r
+        .DEF           LM_SETUP\r
+        .DEF           LM_FINIS\r
+        .DEF           CMOS_VAL\r
+        .DEF           CLR_AUD,FAC_SET,DISPDUMP\r
+        .DEF           CLR_AUDR\r
+        .DEF           FORM_ADC\r
+        .DEF           F_ADC_S\r
+        .DEF           BAD_AUD\r
+        .DEF           ADJ_PAGE\r
+        .DEF           STRCAT\r
+;        .DEF          CLR_SUBS\r
+        .DEF           NO_CREDS\r
+        .DEF           COIN_PAG\r
+        .DEF           CAT_A0\r
+        .DEF           UNIT_CLR\r
+        .DEF           CK_MAX\r
+        .DEF           DUMP_FS\r
+        .DEF           HTOHXASC\r
+        .DEF           PUT_ADJ\r
+        .DEF           LD_CTAB\r
+        .DEF           DEF_PAGE\r
+        .DEF           ROM_NAME\r
+        .DEF           C_FLAGS\r
+        .DEF           GET_CSTR\r
+        .DEF           WAIT_MUT\r
+       .DEF            UNSTACK\r
+;      .DEF            COINIRQ\r
+       .DEF            CLRSWPRC\r
+       .DEF            KILL_CRD\r
+       .DEF            CCCC\r
+       .DEF            GET_CREDITS\r
+\r
+       .GLOBAL         SYNCHALF,NOAUTOE,WDOGDIS,GAMSTATE\r
+\r
+       .REF    STATUS,COINSND,BTIME,ATSTRT\r
+\r
+*\r
+*       IN HSTD.ASM\r
+*\r
+        .REF           SET_PAGE,ENTERON,CANT\r
+        .REF           P_FORK \r
+        .REF           DEC_HSR,INIT_HSR\r
+        .REF           RC_BYTEI\r
+        .REF           RC_BYTE\r
+        .REF           RC_WORD\r
+        .REF           RC_LONG\r
+        .REF           RC_LONGI\r
+        .REF           WC_BYTE\r
+        .REF           WC_BYTEI\r
+        .REF           WC_WORD\r
+        .REF           WC_WORDI\r
+        .REF           WC_LONG\r
+        .REF           WC_LONGI\r
+*\r
+*       IN MENU.ASM\r
+*\r
+        .REF           GET_CSPT\r
+        .REF           STR_OBJ\r
+        .REF           STR_FREE\r
+        .REF           CKPROMPT\r
+        .REF           TWO_TS,TWO_TP\r
+        .REF           BUILD_ST\r
+        .REF           HID_P\r
+       .REF            DIAG\r
+       .REF            CS_ENTS\r
+*\r
+*        IN ROBOATT.ASM\r
+*\r
+       .REF            WIPEOUT,CNTDIG1,CNTDIG2\r
+       .REF            P1START\r
+       .REF            P2START\r
+\r
+*\r
+*        IN TEST.ASM\r
+*\r
+;        .REF          CK_DOOR\r
+;        .REF          WT_ADV,WW_ADV\r
+        .REF           WAIT_BUT\r
+        .REF           FORM_SWS\r
+;\r
+;       IN ROBOATT.ASM\r
+;     \r
+       .REF    P1START\r
+       .REF    P2START\r
+\r
+*\r
+*        OTHERS\r
+*\r
+        .REF           SOUNDSUP\r
+       .REF            RD15FONT,RD7FONT,DMAQWAIT,STRCNRM\r
+       .REF            STRNGRAM,BLNKAREA,STRLNRM,HEXTOASC\r
+       .REF            CLR_SCRN\r
+       .REF            KILALL\r
+       .REF            GETPRC,SWSTST,SWSTACK,SUCIDE\r
+       .REF            ATSTRT\r
+       .REF            GAMERASE,AUTOEON,AUTOEOFF\r
+       .REF            COLRSTRT\r
+;\r
+; UNINITIALIZED RAM DEFINED IN THIS FILE\r
+;\r
+; SOUND EQUATES\r
+;\r
+         .TEXT\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          COIN HANDLING                                                 *\r
+*                                                                        *\r
+**************************************************************************\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          L_TIMER                                                       *\r
+*                                                                        *\r
+*          THIS IS CALLED EACH TICK THROUGH THE EXEC LOOP                *\r
+*          BEFORE TIMER IS CLEARED.  IT DOES NOTHING                     *\r
+*          IF THE GAME IS NOT IN PLAY.   ELSE IT ADDS                    *\r
+*          THE EXEC TIME TO THE 1 PLAYER OR 2 PLAYER                     *\r
+*          TIMER BASED ON CURRENT NUMBER OF PEOPLE PLAYING.              *\r
+*                                                                        *\r
+**************************************************************************\r
+FIVE_SEC EQU     113H                ;THIS IS 5 SECONDS.  (Experimentally!)\r
+\r
+L_TIMER:  \r
+       MOVE    @GAMSTATE,A0         ;CHECK IF ITS IN PLAY\r
+        CMPI    INAMODE,A0\r
+        JREQ    CK_OCTO              ;ATTRACT MODE..CHECK OCTOPUS!\r
+        CMPI    INDIAG,A0\r
+        JREQ    NO_PLAY\r
+        CMPI    INGAMEOV,A0\r
+        JREQ    NO_PLAY\r
+       MOVE    @STATUS,A2\r
+       JRZ     NO_PLAY\r
+;\r
+;       WE'RE PLAYING!\r
+;\r
+\r
+        MOVE    @TIMER,A1,W          ;GET ELAPSED TIME\r
+        MOVE    @P_TIMR,A0,W        ;GET PLAY TIMER.\r
+        ADD     A1,A0                ;ADD ELAPSED TIME\r
+\r
+        CMPI    FIVE_SEC,A0          ;ARE WE AT 5 SECONDS?\r
+        JRLO    LTIMX              ;NOT YET\r
+\r
+        MOVI    AUD1TIME,A0\r
+        CMPI    3,A2               ;CHECK TWO PLAYER GAME\r
+        JRNE    ONE_PLYR                   ;NO\r
+        MOVI    AUD2TIME,A0        ;YES, AUDIT DOUBLE\r
+ONE_PLYR\r
+        CALLA   AUD1                 ;CHALK IT!\r
+        CLR     A0\r
+LTIMX\r
+        MOVE    A0,@P_TIMR,W        ;CLEAR OUT TIMER\r
+NO_PLAY:  \r
+       RETS\r
+*\r
+*       ITS A-MODE...CHECK OCTOPUS!\r
+*\r
+CK_OCTO:\r
+        MOVE    @SWITCH,A0,L         ;CHECK FOR OCTOPUS \r
+       NOT     A0\r
+       ANDI    >24FFFF,A0          ;GET STICKS 'N STARTS\r
+        MOVE    @OCT_FLG,A1,W        ;GOT PART 1?\r
+        JRNZ    CK_P2                ;YEP...CHECK FOR OTHER HALF\r
+\r
+        CMPI   >00201001,A0       ;NO CHECK PART 1\r
+        JRNZ    NO_OCTO             ;NO ONE HOME\r
+        MOVI   60,A1,W            ;ONE SEC TO GET PART TWO\r
+CK_P2:    \r
+       DEC     A1                 ;WAIT EXACTLY 1 SEC.\r
+        MOVE    A1,@OCT_FLG,W        ;GOT PART 1 SET FLAG\r
+       JRNE    NO_OCTO\r
+        CMPI    >00002008,A0                ;JOYSTICKS CORRECT?\r
+       JRNZ    NO_OCTO              ;BR= NOPE!\r
+\r
+        MOVI    ACTIVE,A13\r
+        MOVI    HID_P,A7             ;START THE PROCESS!\r
+        CLR     A1\r
+        CALLA   GETPRC               ;THAT'S ALL FOLKS!\r
+NO_OCTO:  \r
+       RETS\r
+;\r
+;UNSTACK THE SWITCHES FOR OTHER THAN PLAYER CONTROLS \r
+;\r
+UNSTACK:\r
+       MOVI    SWSTST,A0       ;INITIALIZE SWITCH STACK\r
+       MOVE    A0,@SWSTACK,L\r
+UNSTKL:\r
+       MOVE    @SWSTACK,A3,L\r
+       CMPI    SWSTST,A3,L     ;STACK AT START?       \r
+       JREQ    UNSTKX          ;BR=NO SWITCHES ACTIVE\r
+       MOVE    @FREE,A0,L\r
+       JRZ     UNSTKX          ;NO PROCESSES LEFT, TRY NEXT TIME AROUND\r
+       MOVE    *A3+,A0,W       ;GET ENTRY\r
+       MOVE    A3,@SWSTACK,L   ;UPDATE STACK\r
+       SLL     27,A0           ;MAX SWITCH # = 31\r
+       SRL     27,A0\r
+       MOVE    A0,A2\r
+       ADD     A0,A2\r
+       ADD     A0,A2           ;MULT BY 3\r
+       SLL     4,A2            ;ADJUST FOR WORD SIZE (16)\r
+       ADDI    SWTAB,A2\r
+       MOVE    *A2+,A1         ;GET PID\r
+       MOVE    *A2+,A7,L       ;GET STARTING ADDR\r
+       JREQ    UNSTKL          ;NULL ENTRY\r
+       CALLA   GETPRC          ;SPAWN THE PROCESS\r
+UNSTKX:\r
+       SLEEP   1\r
+       JRUC    UNSTKL\r
+*\r
+*GIVE HIM A SERVICE CREDIT\r
+*\r
+SERVICE\r
+        MOVE    @GAMSTATE,A0,W         ;DIAGNOSTICS?\r
+        CMPI    INDIAG,A0\r
+        JREQ    SERVICX                ;THEN NO ACTION!\r
+\r
+        CALLR   CCCC                 ;MAKE SURE THINGS ARE IN TACT\r
+\r
+        MOVI    AUDSERV,A0\r
+        CALLA   AUD1                    ;CHALK UP A SERVICE CREDITS!\r
+\r
+       SOUND1  COINSND\r
+\r
+        CALLR   GET_CREDITS\r
+        ADDK    1,A0                 ;ADD IN THE NEW ONES.\r
+        CALLR   PUT_CREDITS                     ;NOW STORE EM BACK (ENFORCE MAX)\r
+\r
+       CALLR   FORM_COIN_CKSUM_AND_STORE\r
+       JRUC    CREDSP\r
+SERVICX\r
+       DIE\r
+\r
+**************************************************************************\r
+*                                                                       *\r
+* FREEZE - PROCESS TO FREEZE THE GAME ACTION WHEN THE FREEZE BUTTON     *\r
+*       GOES FROM OFF TO ON. GAME RESUMES WHEN THE BUTTON IS RELEASED.  *\r
+*                                                                       *\r
+**************************************************************************\r
+FREEZE\r
+       MOVE    @GAMSTATE,A0\r
+       CMPI    INDIAG,A0\r
+       JREQ    FREEZE_DIE              ;NO FREEZE SHIT DURING DIAGNOSTICS\r
+\r
+;        CMPI    INAMODE,A0\r
+;        JAEQ    DIAG               ;GAME ONLY PLEASE\r
+;        CMPI    INGAMEOV,A0\r
+;        JAEQ    DIAG\r
+\r
+       CALLA   SYNCHALF\r
+       MOVE    @NOAUTOE,A8,W\r
+       MOVK    1,A0\r
+       MOVE    A0,@NOAUTOE,W\r
+       CALLA   AUTOEOFF                ;SHUT OFF AUTO-ERASE\r
+       CLR     A0\r
+       MOVE    A0,@DISPLAYON\r
+       CALLA   DMAQWAIT                ;BLOW OUT THE QUEUE'D IMAGES\r
+       PUSHST\r
+       DINT\r
+       CALLA   WDOGDIS\r
+\r
+       MOVI    1500000,A1\r
+FREZWT\r
+       DSJS    A1,FREZWT\r
+FREEZE_LP:\r
+       MOVE    @SWITCH+>10,A0,W                ;GET THE COIN DOOR SWITCHES     \r
+       BTST    8,A0\r
+       JREQ    FREEZE_LP                       ;LOOP 'TIL BUTTON COMES UP      \r
+       POPST\r
+       MOVE    A8,@NOAUTOE,W\r
+       MOVK    1,A0\r
+       MOVE    A0,@DISPLAYON\r
+FREEZE_DIE:\r
+       DIE\r
+\r
+;\r
+; THE FOLLOWING COIN ROUTINES ARE PROCESSES!\r
+;\r
+LCOIN:\r
+        MOVI    ADJLMULT,A8    ;CMOS RAM ADJUST\r
+        MOVI    LC_FLAG,A10     ;LEFT COIN FLAG\r
+        MOVI    AUDLCOIN,A11   ;AUDIT NUMBER\r
+        JRUC    VALID_COIN\r
+\r
+CCOIN:\r
+        MOVI    ADJCMULT,A8\r
+        MOVI    CC_FLAG,A10     ;CENTER COIN FLAG\r
+        MOVI    AUDCCOIN,A11\r
+        JRUC    VALID_COIN\r
+\r
+RCOIN:\r
+       MOVI    ADJRMULT,A8\r
+        MOVI    RC_FLAG,A10     ;RYTE COIN FLAG\r
+        MOVI    AUDRCOIN,A11\r
+        JRUC    VALID_COIN\r
+\r
+XCOIN:\r
+       MOVI    ADJXMULT,A8\r
+        MOVI    XC_FLAG,A10     ;XTRA (FOURTH) COIN FLAG\r
+        MOVI    AUDXCOIN,A11\r
+        JRUC    VALID_COIN\r
+;\r
+; COIN CONTROL EQUATES\r
+;\r
+LC_FLAG        .EQU    C_FLAGS       ;UHB LEFT COIN\r
+RC_FLAG        .EQU    C_FLAGS+8     ;UHB RYTE  "\r
+CC_FLAG        .EQU    C_FLAGS+16    ;UHB CNTR  "\r
+XC_FLAG        .EQU    C_FLAGS+24    ;UHB XTRA  "\r
+;\r
+; VALID_COIN- CHECK THE DURATION OF COIN DROP AND SEES IF IT IS A VALID                                                                       \r
+;            ENTRY\r
+;PARAMS REQUIRED:\r
+; A8 = MULTIPLIER FOR THAT SWITCH.                      \r
+; A10 = RAM TIMER/FLAG\r
+; A11 = BASE AUDIT NUMBER                               \r
+;\r
+VALID_COIN:\r
+        MOVE    @GAMSTATE,A0,W         ;DIAGNOSTICS?\r
+        CMPI    INDIAG,A0\r
+        JREQ    CRX                    ;THEN NO ACTION!\r
+\r
+        MOVE    A8,A0                  ;MOVE MULTIPLIER ADJUST NUMBER TO A0\r
+        CALLA   GET_ADJ                ;FETCH IT\r
+        MOVE    A0,A8                  ;AND BACK TO STATIC REG...ANY THERE?\r
+        JRZ     CRX                    ;NOPE....DON'T WASTE THE TIME!\r
+\r
+        CALLR   SLAM_P                 ;SLAM AROUND?\r
+        JRNZ    CRX                    ;THEN NO ACTION\r
+        MOVI    LC_PID,A0              ;ALL 3 SLOTS USE THIS ID NOW\r
+        MOVE    A0,*A13(PROCID),W      ;SET OUR ID (IN CASE TABLE IS WRONG)\r
+        MOVB    *A10,A0                ;GET FLAG BYTE\r
+        JRNZ    CRX                    ;SOMEONE ELSE THERE...WE'RE A BOUNCE!\r
+;\r
+; OK....THIS IS A NEW POSITIVE EDGE....START THE DROP TIMING\r
+;\r
+       MOVK    30,A0                   ;HIT TIMER FOR 1/2 SEC.\r
+       MOVB    A0,*A10\r
+\r
+COIN_LOOP:\r
+        SLEEP   1                      ;SLEEP TILL WE GET SUCCESS OR FAIL\r
+        MOVB    *A10,A0                ;GET THE TIMER\r
+        JRGT   COIN_LOOP\r
+\r
+        CALLR   SLAM_P                 ;SLAM?\r
+        JRNZ    CRX                    ;THEN WE'RE OUT OF HERE\r
+;\r
+; 1/2 SECOND HAS PASSED WITHOUT A SLAM....INDICATE COIN DROP\r
+                                       \r
+        CLR     A0\r
+        MOVE    A0,@SOUNDSUP,W         ;TURN SOUNDS ON. (A-MODE SOUND SUPRESSOR)\r
+       SOUND1  COINSND\r
+\r
+       MOVK    10,A0\r
+       MOVE    A0,@BTIME               ;RESTUFF BUYIN TIMER\r
+       CALLR   DOCNT\r
+\r
+        MOVI    15*40H/8,A0            ;DON'T WIPE ON GAME OVER IF ITS WITHIN\r
+        MOVE    A0,@C_FRAC,W           ;15 SECONDS (THIS TIMES OUT TO OVER 20)\r
+\r
+        MOVE    A11,A0\r
+        CALLR   AUD1                ;CHALK THE DIRECT AUDIT\r
+\r
+*HIT THE MECHANICAL COIN COUNTERS\r
+       MOVI    ADJCNTR,A0      \r
+       CALLA   GET_ADJ\r
+       CMPI    1,A0\r
+       JRNE    MECH20\r
+\r
+*MULTIPLE OF LEAST VALUE COIN MODE\r
+       CALLA   GET_CSPT                ;POINT TO COIN TABLE A6\r
+       MOVK    4,A1                    ;CHECK ALL CHUTES\r
+       ADDI    CS_LVAL,A6              ;ADD IN OFFSET TO CHUTE VALUES\r
+       MOVE    A6,A5                   ;SAVE A6\r
+MECH1L\r
+       MOVE    *A5+,A0,W               ;NUMBERS UNDER 10?\r
+       CMPI    10,A0\r
+       JRHI    MECH10                  ;NO, JUST ONE CLICK\r
+       DSJS    A1,MECH1L\r
+MECH11 \r
+       DEC     A11                     ;GET YOUR CLICK COUNT\r
+       SLL     4,A11                   ;OFFSET FOR CHUTE, WORD CORRECT\r
+       ADD     A11,A6\r
+       MOVE    *A6,A2,W                ;GET TOTAL COUNTS\r
+       MOVI    COINCNT1,A1\r
+       JRUC    MECH3B\r
+MECH10\r
+       MOVK    2,A0                    ;VALUE OVER 10, JUST GIVE ONE CLICK\r
+MECH20\r
+       MOVI    COINCNT1,A1\r
+       CMPI    2,A0\r
+       JREQ    MECH3A                   ;CLICK COUNTER 1 MODE\r
+       \r
+       CMPI    AUDLCOIN,A11\r
+       JREQ    MECH3A\r
+       CMPI    AUDRCOIN,A11\r
+       JRNE    MECH4\r
+       ADDK    8,A1\r
+MECH3A\r
+       MOVK    1,A2\r
+MECH3B\r
+       DINT\r
+       MOVB    *A1,A0\r
+       ADD     A2,A0\r
+       MOVB    A0,*A1\r
+       EINT\r
+MECH4\r
+        MOVE    A8,A8                  ;NO CREDIT UNITS?\r
+        JRZ     CRX                    ;THEN NO MORE WORK TO DO.\r
+        CALLR   ADJUST_CREDITS         ;GIVE CREDIT FOR THE MONEY.\r
+        CALLR   DEF_PAGE               ;POINT PAGE AWAY!\r
+;\r
+; SET-UP CREDITS MSG IN GAME SCREEN AND INDICATE 'INSERT COIN' IF NOT ENOUGH\r
+; HAVE BEEN DROPPED\r
+; \r
+;        CALLA   G_MSG                 ;PLOT MESSAGE FOR GAME PLAY SCREEN\r
+CREDSP:\r
+       MOVE    @STATUS,A0\r
+       JRNZ    CRX\r
+       MOVE    @GAMSTATE,A0,W        \r
+       CMPI    INAMODE,A0              ;A DISPLAY IN AMODE ONLY!\r
+       JRNZ    CRX                     ;BR=GAME DEMO MODE IN PROGRESS  \r
+        MOVI    CP_PID1,A0             ;CHANGE TO "CREDIT PAGE" ID 1\r
+        MOVE    A0,*A13(PROCID),W    \r
+       MOVI    0FFFFH,A1               ;CHECK TO SEE IF CREDIT PAGE IS UP\r
+       CALLA   EXISTP              \r
+        JRZ     CRY                    ;BR=NO CREDIT PAGE PUT HER UP! \r
+        JRUC    CRX                    ;OTHERWISE DON'T RE-DISPLAY IT\r
+CRY:\r
+        JSRP    CRD_SCRN                       ;PUT UP THE CREDITS SCREEN\r
+       CLR     A0\r
+       MOVE    A0,@ENTERON\r
+       MOVB    A0,@CANT\r
+        SLEEP   5*60                   ;SLEEP FOR 5 SECONDS\r
+\r
+;\r
+; NOW THAT CREDITS HAS BEEN ADJUSTED.....WE NEED TO \r
+; START ATTRACT MODE \r
+;\r
+       CALLR   KILL_CRD\r
+       CALLA   ATSTRT\r
+CRX:\r
+       JAUC    SUCIDE\r
+\r
+KILL_CRD:\r
+       MOVI    DUM_ID,A0\r
+       MOVE    A0,*A13(PROCID),W\r
+        MOVI    CP_PID2,A0\r
+       CLR     A1\r
+       NOT     A1\r
+        CALLA   KILALL          ;ITS DEAD!\r
+       MOVK    1,A0\r
+       MOVE    A0,@GAMERASE\r
+       CALLA   AUTOEON\r
+        CALLA   DMAQWAIT        ; WAIT FOR DMA TO BE DONE (IF IN MOTION)\r
+       RETS\r
+\r
+DOCNT\r
+       MOVB    @CNTDIG1,A1\r
+       JRZ     SKIP1\r
+       MOVB    A0,@CNTDIG1\r
+SKIP1  MOVB    @CNTDIG2,A1\r
+       JRZ     SKIP1A\r
+       MOVB    A0,@CNTDIG2\r
+SKIP1A\r
+       RETS\r
+;\r
+DUMDIE:\r
+       SLEEP   1\r
+       DIE\r
+\r
+;      \r
+;MAKE ALL SWITCH PROCESS DUMDIE ENTRIES\r
+;\r
+CLRSWPRC:\r
+       MMTM    SP,A0,A1,A3\r
+       CLR     A1              ;USE SWTAB ENTRY 0 FOR DUMDIE PROC\r
+       MOVE    @SWSTACK,A3,L\r
+CLRSTKL        CMPI    SWSTST,A3,L     ;STACK AT START?\r
+       JREQ    CLRSTKX         ;YES, EXIT\r
+       MOVE    *A3+,A0,W\r
+       CMPI    31,A0\r
+       JRLS    CLRSTKL         ;THIS ENTRY IS A REAL SWITCH\r
+       MOVE    A1,*A3(-10H),W  ;STORE THE DUMDIE CALL\r
+       JRUC    CLRSTKL\r
+CLRSTKX\r
+       MMFM    SP,A0,A1,A3\r
+       RETS\r
+\r
+*\r
+*       CR_STRTP - ARE THERE ENOUGH CREDITS TO START\r
+*       CR_CONTP - ARE THERE ENOUGH CREDITS TO CONTINUE\r
+*       P_START  - PLAYER STARTED...DEDUCT CREDITS\r
+*       P_CONT   - PLAYER CONTINUED...DEDUCT CREDITS\r
+*       CRED_P   - HOW MANY CREDITS \r
+*\r
+*       JRHS FOR OK TO START!\r
+*\r
+CR_STRTP: \r
+       MMTM    SP,A0,A1\r
+        MOVI    ADJFREPL,A0\r
+        CALLR   GET_ADJ              ;ARE WE IN FREE PLAY?\r
+        CMPI    1,A0                 ;WE ARE IF ITS NOT ZERO.\r
+        JRHS    CR_STX\r
+\r
+        CALLR   CCCC                 ;MAKE SURE THINGS ARE IN TACT\r
+        CALLR  COIN_PAG\r
+        CALLR   GET_CREDITS          ;GET CURRENT CREDITS\r
+        MOVE    A0,A1\r
+        MOVI    ADJCSTRT,A0\r
+        CALLR   GET_ADJ              ;GET NUMBER NEEDED\r
+        CMP     A0,A1                ;DO WE HAVE ENOUGH TO START?\r
+\r
+CR_STX:   \r
+       MMFM    SP,A0,A1\r
+       RETS\r
+\r
+CR_CONTP:\r
+        MMTM    SP,A0,A1\r
+        MOVI    ADJFREPL,A0\r
+        CALLR   GET_ADJ              ;ARE WE IN FREE PLAY?\r
+        CMPI    1,A0                 ;WE ARE IF ITS NOT ZERO.\r
+        JRHS    CR_STX1\r
+\r
+        CALLR   CCCC                 ;MAKE SURE THINGS ARE IN TACT\r
+       CALLR   COIN_PAG\r
+        CALLR   GET_CREDITS          ;GET CURRENT CREDITS\r
+        MOVE    A0,A1\r
+        MOVI    ADJCCONT,A0\r
+        CALLR   GET_ADJ              ;GET NUMBER NEEDED\r
+        CMP     A0,A1                ;DO WE HAVE ENOUGH TO START?\r
+CR_STX1:       \r
+       MMFM    SP,A0,A1\r
+       RETS\r
+\r
+P_START:  \r
+       MMTM    SP,A0,A1\r
+        CALLR   CRED_P\r
+        MOVE    A0,A1\r
+        MOVI    ADJCSTRT,A0\r
+        CALLR   GET_ADJ              ;GET NUMBER NEEDED\r
+        CALLR   REMOVE_CREDITS\r
+        CALLA   DEC_HSR              ;TAKE 1 FROM HIGH SCORE RESET COUNTER\r
+       MMFM    SP,A0,A1\r
+       RETS\r
+\r
+P_CONT:   \r
+       MMTM    SP,A0,A1\r
+        CALLR   CRED_P\r
+        MOVE    A0,A1\r
+        MOVI    ADJCCONT,A0\r
+        CALLR   GET_ADJ              ;GET NUMBER NEEDED\r
+        CALLR   REMOVE_CREDITS\r
+        CALLA   DEC_HSR              ;TAKE 1 FROM HIGH SCORE RESET COUNTER\r
+       MMFM    SP,A0,A1\r
+       RETS\r
+\r
+REMOVE_CREDITS:\r
+        SUB     A0,A1                ;REMOVE START AMOUNT FROM WHAT WE HAVE\r
+        JRHS    PS1                  ;WE'RE OK.\r
+\r
+        CLR     A1                   ;IT WENT NEGATIVE....MAKE ZERO.\r
+PS1:     \r
+       CALLR   COIN_PAG\r
+        MOVI    CREDITS,A7\r
+        MOVE    A1,A0                ;PUT WHATS LEFT OUT TO WRITE\r
+        CALLA   WC_BYTE              ;WRITE THE NEW AMOUNT\r
+\r
+        CALLR   FORM_COIN_CKSUM_AND_STORE\r
+        CALLR   DEF_PAGE             ;POINT AT DEFAULT PAGE.\r
+        RETS\r
+               \r
+**************************************************************************\r
+*                                                                        *\r
+*          NO_CREDS                                                      *\r
+*                                                                        *\r
+*          THIS IS CALLED TO REMOVE CREDITS AND CREDIT FRACTIONS         *\r
+*          FROM THE MACHINE.                                             *\r
+*                                                                        *\r
+**************************************************************************\r
+NO_CREDS: \r
+       MMTM    SP,A0,A1,A7\r
+        CALLR   FORM_COIN_CKSUM ;MAKE THE REAL CKSUM\r
+        MOVI    COIN_CKSUM,A7\r
+        MOVE    A1,A0\r
+        INC     A0              ;MAKE THE CKSUM BAD!\r
+        CALLA   WC_BYTE\r
+       MMFM    SP,A0,A1,A7\r
+       RETS\r
+**************************************************************************\r
+*                                                                        *\r
+*          CHALK_COIN                                                    *\r
+*                                                                        *\r
+*          A11 contains the base audit number.  Chalk the audit for      *\r
+*          1 more coin hit there!                                        *\r
+*                                                                        *\r
+*          3 away from the base is the "door-closed" counter             *\r
+*                                                                        *\r
+*          3 away from that is the "sub-total".                          *\r
+*                                                                        *\r
+*          3 away from that is the "door-closed" sub-total.              *\r
+*                                                                        *\r
+*                                                                        *\r
+**************************************************************************\r
+;CHALK_COIN: \r
+;        MMTM    SP,A0\r
+;        MOVE    A11,A0\r
+;*\r
+;*       READY TO CHALK THE AUDIT......ZERO MEANS "EXTRA SLOT"\r
+;*\r
+;\r
+;CCC01:    \r
+;      CALLR   CHALK_FOR_A0    ;CHALK RELEVANT COUNTERS\r
+;      MMFM    SP,A0\r
+;      RETS\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          CHALK_FOR_A0                                                  *\r
+*                                                                        *\r
+*          THIS IS CALLED TO CHALK THE AUDITS FOR A COIN SWITCH.         *\r
+*          A0 HAS THE BASE AUDIT FOR THE COIN SWITCH.                    *\r
+*                                                                        *\r
+**************************************************************************\r
+;CHALK_FOR_A0:\r
+;        MMTM    SP,A0\r
+;        CALLR   AUD1            ;CHALK THE DIRECT AUDIT\r
+\r
+;        ADDI    2*CHUTES,A0     ;AND THE "SUB-TOTAL"\r
+;        CALLR   AUD1\r
+\r
+;        SUBI    CHUTES,A0       ;MOVE TO DOOR OPEN TOTAL\r
+;        CALLR   AUD1\r
+;\r
+;        ADDI    2*CHUTES,A0     ;AND DOOR OPEN SUB-TOTAL\r
+;        CALLR   AUD1\r
+\r
+;CKCN1:        \r
+;      MMFM    SP,A0\r
+;      RETS\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          ADJUST_CREDITS                                                *\r
+*                                                                        *\r
+*          This is the routine that turns the coin switch hit            *\r
+*          into a tangable (if you could say that) reward.               *\r
+*                                                                        *\r
+*          The coin chute multiplier is in A8.                           *\r
+*                                                                        *\r
+**************************************************************************\r
+ADJUST_CREDITS:\r
+       \r
+        MMTM    SP,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11\r
+        CALLR   CK_MAX          ;ARE WE AT MAXIMUM CREDITS?\r
+        JRHS    ADCRXX          ;YEP.....DON'T ROCK THE BOAT!\r
+*\r
+        CALLR   CCCC            ;VALIDATE THE CURRENT TOTALS (OR CLEAR!)\r
+\r
+        CALLR   FETCH_REQ       ;GET THE REQUIRED FOR CREDIT, BONUS AND MINIMUM\r
+*\r
+*       A2 = REQUIRED FOR CREDIT\r
+*       A3 = FOR BONUS\r
+*       A4 = MINIMUM\r
+*\r
+        CALLR   ADD_TO_CUNITS   ;ADD TO OUR CUNITS\r
+        MOVE    A3,A3           ;BONUS EFFECTIVE?\r
+        JRZ     NO_BUNITS       ;NOPE....DON'T RUN UP THE COUNTER!\r
+\r
+        CALLR   ADD_TO_BUNITS   ;ADD TO BONUS UNITS\r
+\r
+NO_BUNITS:\r
+        MOVE    A4,A4           ;MINIMUM REQUIRED?\r
+        JRZ     NO_MINIMUM      ;NOPE.....LEAVE ALONE.\r
+\r
+        MOVI    MINUNITS,A7     ;POINT AT MINIMUM\r
+        CALLA   RC_WORD         ;GET THE AMOUNT ACCUMULATED\r
+        ADD     A8,A0           ;ADD AMOUNT RECEIVED\r
+        CALLA   WC_WORD         ;WRITE THE MINUNITS BACK IN CASE NOT ENOUGH.\r
+\r
+        SUB     A4,A0           ;DO WE HAVE ENOUGH TO ACT?\r
+        JRLO    ADCRX           ;NOPE....NO CREDITS YET!\r
+\r
+        CLR     A0              ;CLEAR OUT MINIMUM FOR NEXT SHOT!\r
+        CALLA   WC_WORD         ;REMOVE ACCUMULATED MINIMUM.\r
+\r
+NO_MINIMUM:\r
+        CLR     A6              ;COUNT ACCUMULATED CREDITS IN A6\r
+        CLR     A10             ;IN CASE NO BONUS!\r
+\r
+        CLR     A8\r
+        MOVI    BUNITS,A7\r
+        CALLA   RC_WORD         ;GET THE NUMBER OF BUNITS\r
+        MOVE    A0,A9           ;INTO A9\r
+\r
+        MOVE    A3,A3           ;DON'T DIVIDE BY ZERO!\r
+        JRZ     NO_BU_BU\r
+        DIVU    A3,A8           ;DIVIDE BUNITS BY NUMBER NEEDED FOR BONUS\r
+\r
+        MOVE    A9,A0           ;WRITE REMAINDER BACK\r
+        CALLA   WC_WORD\r
+\r
+        MOVE    A8,A6           ;NUMBER OF BONUS CREDITS EARNED.\r
+        MOVE    A8,A10          ;REMEMBER IF ANY BONUS CREDITS WERE EARNED!\r
+\r
+NO_BU_BU:\r
+        CLR     A8\r
+        CALLR   GET_CUNITS      ;READ IN THE CUNITS\r
+        MOVE    A0,A9\r
+\r
+        MOVE    A2,A2           ;DON'T DIVIDE BY ZERO.\r
+        JRZ     NO_CR\r
+\r
+        DIVU    A2,A8           ;GET CREDITS!\r
+        MOVE    A9,A0           ;REMAINDER IS LEFTOVER CUNITS\r
+        CALLR   PUT_CUNITS\r
+        ADD     A8,A6           ;A6 HAS WHAT WE'VE WON!\r
+\r
+NO_CR:    \r
+       MOVE    A6,A1\r
+        MOVI    AUDPAIDC,A0\r
+        CALLA   AUD             ;CHALK UP THE EARNED CREDITS!\r
+\r
+        CALLR   GET_CREDITS\r
+        ADD     A6,A0           ;ADD IN THE NEW ONES.\r
+        CALLR   PUT_CREDITS     ;NOW STORE EM BACK (ENFORCE MAX)\r
+\r
+        MOVE    A10,A10         ;WAS THE BONUS EARNED?\r
+        JRZ     ADCRX           ;NOPE...EXIT!\r
+*\r
+*        WHEN BONUS EARNED...WE START THE WHOLE SYSTEM OVER!\r
+*\r
+        CALLR   CLEAR_UNITS\r
+\r
+ADCRX:   \r
+       CALLR   FORM_COIN_CKSUM_AND_STORE\r
+ADCRXX:        \r
+       MMFM    SP,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11\r
+       RETS\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          PUT_CREDITS                                                   *\r
+*                                                                        *\r
+*          STORE CREDIT COUNT IN A0 TO CMOS....ENFORCING                 *\r
+*          MAXIMUM CREDITS.                                              *\r
+*                                                                        *\r
+**************************************************************************\r
+PUT_CREDITS:\r
+       MMTM    SP,A0,A6,A7\r
+        CALLR   GET_MAX         ;GET MAX CREDS IN A1....BE ON COIN PAGE\r
+        CMP     A1,A0           ;SEE HOW WE STACK UP.\r
+        JRLO    USE_A0          ;WE'RE LOWER...JUST STORE.\r
+*\r
+*       WE'RE AT (OR OVER) MAXIMUM CREDITS\r
+*\r
+        CALLR   CLEAR_UNITS     ;CLEAR OUT THE UNIT FRACTIONS.\r
+        MOVE    A1,A0           ;USE MAXIMUM\r
+\r
+USE_A0:   \r
+       MOVI    CREDITS,A7\r
+        CALLA   WC_BYTE         ;WRITE THE CREDITS OUT.\r
+       MMFM    SP,A0,A6,A7\r
+       RETS\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          GET_MAX                                                       *\r
+*                                                                        *\r
+*          GET MAXIMUM CREDITS IN A1.                                    *\r
+*                                                                        *\r
+*          THIS LEAVES YOU ON COIN PAGE.                                 *\r
+*                                                                        *\r
+**************************************************************************\r
+GET_MAX:\r
+        MMTM    SP,A0\r
+        MOVI    ADJMAXC,A0\r
+        CALLA   GET_ADJ_FOR_COIN    ;FETCH MAXIMUM CREDITS (PUT US ON COIN PAGE)\r
+        MOVE    A0,A1\r
+       MMFM    SP,A0\r
+       RETS\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          CK_MAX                                                        *\r
+*                                                                        *\r
+*          THIS IS CALLED TO SEE IF WE ARE AT MAXIMUM CREDITS.           *\r
+*          .HS. MEANS WE ARE AT MAXIMUM CREDITS.                         *\r
+*                                                                        *\r
+**************************************************************************\r
+CK_MAX:   \r
+       MMTM    SP,A0,A1\r
+        CALLR   GET_MAX              ;GET MAXIMUM IN A1\r
+        CALLR   CRED_P               ;GET CREDITS IN A0 (AND FLIP PAGE AWAY)\r
+        CMP     A1,A0                ;JRHS FOR MAXIMUM CREDITS!\r
+       MMFM    SP,A0,A1\r
+       RETS\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          UNIT_CLR                                                      *\r
+*                                                                        *\r
+*          THIS IS CALLED AT GAME OVER.  IT CLEARS                       *\r
+*          OUT ANY COIN FRACTIONS THAT WERE NOT USED BY THE              *\r
+*          CURRENT PLAYER(S).  THIS ALLOWS ALL BUY-IN TO                 *\r
+*          TAKE ADVANTAGE OF MULTIPLE COIN BONUSES.                      *\r
+*                                                                        *\r
+*          ANYTIME A COIN IS INSERTED, C_FRAC IS SET TO ABOUT            *\r
+*          10 SECONDS.  MY TIMING INTERFACE COUNTS C_FRAC DOWN           *\r
+*          TO ZERO.  IF C_FRAC IS NON ZERO WHEN THIS ROUTINE IS          *\r
+*          CALLED, THEN SOMEONE PUT A COIN IN NOT TOO LONG BEFORE        *\r
+*          GAME OVER.  DON'T SCREW HIM OUT OF HIS FRACTIONS.             *\r
+*                                                                        *\r
+**************************************************************************\r
+UNIT_CLR: \r
+       MMTM    SP,A0\r
+        MOVE    @C_FRAC,A0,W                   ;DO WE GIVE HIM A REPRIEVE?\r
+        JRNZ    UC1                            ;YEP!\r
+        CALLR   CCCC                           ;VALIDATE COINAGE\r
+        CALLR   CLEAR_UNITS                    ;CLEAR OUT FRACTIONAL UNITS\r
+        CALLR   FORM_COIN_CKSUM_AND_STORE      ;MAKE ALL GOOD.\r
+UC1:   \r
+       MMFM    SP,A0\r
+       RETS\r
+\r
+CLEAR_UNITS:\r
+        MMTM    SP,A0,A7\r
+        CLR     A0\r
+        MOVI    CUNITS,A7       ;3 CONSECUTIVE WORDS OF CMOS\r
+        CALLA   WC_WORDI\r
+        CALLA   WC_WORDI\r
+        CALLA   WC_WORD\r
+       MMFM    SP,A0,A7\r
+       RETS\r
+*\r
+*        RETURN CREDITS IN A0.........AND Z BIT CLEAR IF\r
+*        CREDITS EXIST OR IN FREE PLAY.\r
+*\r
+CRED_P:   \r
+       CALLR   CCCC            ;CHECK TO SEE IF DATA IS OK.\r
+\r
+GET_CREDITS:\r
+        MMTM    SP,A7\r
+        CALLR   COIN_PAG\r
+        MOVI    CREDITS,A7      ;\r
+        CALLA   RC_BYTE         ;READ CURRENT CREDITS\r
+        JRNZ    GC1             ;WE GOT SOME!\r
+\r
+        MMTM    SP,A0           ;PUSH THE ZERO!\r
+        MOVI    ADJFREPL,A0\r
+        CALLR   GET_ADJ         ;SEE IF FREEPLAY......(Z BIT CLEAR IF SO!)\r
+        MMFM    SP,A0           ;RESTORE A0\r
+\r
+GC1:     \r
+       CALLR   DEF_PAGE        ;FLIP CMOS AWAY\r
+       MMFM    SP,A7\r
+       RETS\r
+\r
+ADD_TO_CUNITS:\r
+        MMTM    SP,A0,A7\r
+        CALLR   GET_CUNITS\r
+        ADD     A8,A0\r
+        CALLR   PUT_CUNITS\r
+       MMFM    SP,A0,A7\r
+       RETS\r
+\r
+GET_CUNITS:\r
+        MMTM    SP,A7\r
+        MOVI    CUNITS,A7\r
+        CALLA   RC_WORD\r
+       MMFM    SP,A7\r
+       RETS\r
+\r
+PUT_CUNITS:\r
+        MMTM    SP,A7\r
+        MOVI    CUNITS,A7\r
+        CALLA   WC_WORD\r
+       MMFM    SP,A7\r
+       RETS\r
+\r
+ADD_TO_BUNITS:\r
+        MMTM    SP,A7,A0\r
+        MOVI    BUNITS,A7\r
+        CALLA   RC_WORD\r
+        ADD     A8,A0\r
+        CALLA   WC_WORD\r
+       MMFM    SP,A7,A0\r
+       RETS\r
+\r
+CRD_SCRN:\r
+        MOVI    CP_PID1,A0           ;CHANGE OUR ID TO CREDIT 1\r
+        MOVE    A0,*A13(PROCID),W    \r
+\r
+        MOVI    CP_PID2,A0       ;ARE WE SHOWING THE CREDIT PAGE?\r
+       CLR     A1\r
+       NOT     A1\r
+        CALLA   EXISTP\r
+\r
+        JRZ     NOT_CREDIT       ;ITS NOT THE CREDIT PAGE...TRASH IT.\r
+*\r
+*       CREDIT PAGE IS RUNNING....KILL IT!\r
+*\r
+       MOVI    CP_PID2,A0\r
+       CALLA   KILALL\r
+       CALLA   DMAQWAIT\r
+*\r
+*       NOW BLANK THE AREA OF OUR INTEREST\r
+*\r
+\r
+* A3 = DAG OF AREA [YPOS,XPOS]                                          *\r
+* A4 = [Y,X] SIZE OF AREA                                               *\r
+         \r
+        MOVI    0680000H,A3                              ;CORNER OF REGION\r
+        MOVI    0D80190H,A4\r
+        CALLA   BLNKAREA                                 ;BLANK IT OUT!\r
+        JRUC    BLANKED_NOW_GO\r
+\r
+NOT_CREDIT:\r
+        CALLA   WIPEOUT         ;TAKE DOWN WHATEVER'S RUNNING.\r
+       CALLA   CLR_SCRN\r
+        SLEEP   1           \r
+\r
+        MOVI    1,A0\r
+        MOVE    A0,@DISPLAYON,W ;TURN THE DISPLAY PROCESSOR BACK ON!\r
+\r
+        SLEEP   1\r
+\r
+        CALLA   COLRSTRT        ;RESTART THE COLORS JACK\r
+\r
+BLANKED_NOW_GO:\r
+        MOVI    CPYR_MES,A8          ;COPYRIGHT MESSAGE\r
+        JSRP    L_MESS\r
+\r
+        MOVI    CP_PID2,A0           ;SET OUR ID BACK TO "CREDITS PAGE"\r
+        MOVE    A0,*A13(PROCID),W    ;SET OUR ID (IN CASE TABLE IS WRONG)\r
+*\r
+*       BEWARE.....GET_CSTR SMASHES A LONG WORD IN THE PDATA AREA\r
+*       AT:  AT PDATA + 3*LONG_SIZE\r
+*\r
+        CALLR   GET_CSTR                  ;GET THE CREDITS STRING\r
+        MOVE    A8,A2                     ;PUT IT IN NON-VOLITILE REGGIE!\r
+\r
+        CALLR   SELECT_SETUP              ;POINT AT PLACE BASED ON PROMPTING\r
+        CALLR   LM_SETUP\r
+        MOVE    A2,A8                     ;POINT AT MESSAGE\r
+        JSRP    LM_FINIS                  ;AND PRINT IT OUT!\r
+\r
+        CALLA   CKPROMPT                  ;IS THERE A PROMPT STRING?\r
+        JRZ     BOT_PROMPT                ;NOT ON TOP...DO THE BOTTOM \r
+*\r
+*       BASED ON A1.....WE NEED TO DO THE FOLLOWING:\r
+*\r
+*       A1 = 0 PLOT THE A0 STRING OUTRIGHT USING L_MESS\r
+*               (IT CONTAINS ALL DATA)\r
+*\r
+*       A1 = 1  PLOT ONLY THE STRING LIST (1, 2 or 3 POINTERS\r
+*                CENTERED APPROPRIATELY\r
+*\r
+*       A1 = 2  PLOT THE 1ST LINE OF THE STRING LIST ALONG\r
+*                WITH THE 2 CREDITS TO START...1 TO CONTINUE\r
+*        \r
+*       A1 = 3  PLOT THE 2ND LINE OF THE STRING LIST ALONG\r
+*                WITH THE 2 CREDITS TO START...1 TO CONTINUE\r
+*\r
+*       A1 = 4  PLOT THE 3RD LINE OF THE STRING LIST ALONG\r
+*                WITH THE 2 CREDITS TO START...1 TO CONTINUE\r
+*\r
+*       A1 = 5 PLOT THE 1ST LINE W/ 2 CREDITS PER PLAYER\r
+*\r
+*       A1 = 6 PLOT THE 2ND LINE W/2 CREDITS PER PLAYER\r
+*\r
+*       A1 = 7 PLOT THE 3RD LINE W/2 CREDITS PER PLAYER\r
+*\r
+*       A1 = 8 PLOT CUSTOM MESSAGE\r
+*\r
+        MOVE    A0,A8                                                 \r
+        MOVI    LONG_SIZE,A0              ;INDEX A1 INTO A TABLE\r
+        MPYU    A0,A1                     ;A1 HAS OFFSET\r
+        ADDI    HELP_TAB,A1               ;A1 POINTS AT VECTOR\r
+        MOVE    *A1,A1,L                  ;GET THE VECTOR\r
+\r
+        MOVI    BOT_PROMPT,A7\r
+        MOVE    A7,-*A12,L                ;PUSH RETURN ADDRESS\r
+        JUMP    A1                        ;THUS "JSRP"ing THE ROUTINE\r
+\r
+BOT_PROMPT:\r
+        JSRP    ADD_PROMPT           ;ADD THE HELPFUL HARDWARE PROMPT\r
+\r
+        RETP\r
+\r
+HELP_TAB .LONG   L_MESS               ;0 SAYS USE L_MESS\r
+         .LONG   JUST_LIST            ;1 SAYS USE LISTED MESSAGES ONLY\r
+         .LONG   LINE_ONE_PLUS        ;2 SAYS USE 1ST LINE W/ 2 TO START\r
+         .LONG   LINE_TWO_PLUS        ;3\r
+         .LONG   LINE_THREE_PLUS      ;4\r
+         .LONG   LINE_ONE_PLUS_2      ;5 USE 1ST LINE 2/ 2 CREDITS PER PLAYER\r
+         .LONG   LINE_TWO_PLUS_2      ;6\r
+         .LONG   LINE_THREE_PLUS_2    ;7\r
+         .LONG   OUTPUT_CUSTOM        ;8 CUSTOM MESSAGE!\r
+\r
+JUST_LIST:\r
+        MOVE    A8,A3                ;STASH WHERE IT WILL SURVIVE\r
+        MOVE    *A3(LONG_SIZE),A2,L  ;ONE WORD ONLY?\r
+        JRZ     JUST_ONE             ;YEP....CENTER IT NICELY\r
+*\r
+*       there's a 2nd line...check for 3rd!\r
+*\r
+        MOVE    *A3(2*LONG_SIZE),A2,L  ;IS THERE A 3RD LINE?\r
+        JRZ     JUST_TWO               ;NOPE\r
+\r
+        MOVI    SETUP_3_OF_3,A8\r
+        JSRP    SET_THEN_A2\r
+\r
+        MOVE    *A3(LONG_SIZE),A2,L    ;GET LINE 2\r
+\r
+        MOVI    SETUP_2_OF_3,A8\r
+        JSRP    SET_THEN_A2\r
+\r
+        MOVI    SETUP_1_OF_3,A8        ;SET HEIGHT FOR TOP LINE\r
+        JRUC    FIRST_LINE\r
+\r
+JUST_TWO:\r
+        MOVE    *A3(LONG_SIZE),A2,L    ;GET LINE 2\r
+        MOVI    SETUP_2_OF_2,A8\r
+        JSRP    SET_THEN_A2\r
+\r
+        MOVI    SETUP_1_OF_2,A8\r
+\r
+FIRST_LINE:\r
+        MOVE    *A3,A2,L\r
+        JRUC    SET_THEN_A2               ;DO TOP LEN AND RETURN\r
+\r
+JUST_ONE: \r
+       MOVI    SETUP_1_OF_1,A8\r
+        JRUC    FIRST_LINE                ;DO TOP LEN AND RETURN\r
+\r
+*\r
+*       OUTPUT THE CUSTOM MESSAGE\r
+*\r
+CM_LINE1  EQU     CUSTOM_MESSAGE\r
+CM_LINE2  EQU     CUSTOM_MESSAGE+CMESS_LINE_SIZE\r
+CM_LINE3  EQU     CUSTOM_MESSAGE+(2*CMESS_LINE_SIZE)\r
+\r
+OUTPUT_CUSTOM:\r
+       MOVI    CM_LINE3,A10         ;CHECK LINE 3\r
+        CALLR   CK_LINE              ;3 VALID LINES?\r
+        JRZ     GO_FOR_2\r
+\r
+        MOVI    SETUP_3_OF_3,A8\r
+        JSRP    SET_THEN_STRNGRAM    ;PUT IT OUT\r
+\r
+        MOVI    CM_LINE2,A10\r
+        MOVI    SETUP_2_OF_3,A8\r
+        JSRP    SET_THEN_STRNGRAM\r
+\r
+        MOVI    CM_LINE1,A10\r
+        MOVI    SETUP_1_OF_3,A8\r
+        JRUC    SET_THEN_STRNGRAM\r
+\r
+GO_FOR_2:\r
+        MOVI    CM_LINE2,A10         ;CHECK LINE 2\r
+        CALLR   CK_LINE              ;3 VALID LINES?\r
+        JRZ     GO_FOR_1\r
+\r
+        MOVI    SETUP_2_OF_2,A8\r
+        JSRP    SET_THEN_STRNGRAM    ;PUT IT OUT\r
+\r
+        MOVI    CM_LINE1,A10\r
+        MOVI    SETUP_1_OF_2,A8\r
+        JRUC    SET_THEN_STRNGRAM\r
+\r
+GO_FOR_1:\r
+        MOVI    CM_LINE1,A10\r
+        MOVI    SETUP_1_OF_1,A8\r
+        JRUC    SET_THEN_STRNGRAM\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          SET_THEN_A2                                                   *\r
+*                                                                        *\r
+*          THIS IS A PRIMITIVE FOR THE COIN PAGE PLOTTERS.               *\r
+*                                                                        *\r
+*          IT SETS UP WITH THE STRING IN A8, THEN FINSHES                *\r
+*          ON THE STRING IN A2.                                          *\r
+*                                                                        *\r
+*          JSRP THIS ROUTINE!                                            *\r
+*                                                                        *\r
+**************************************************************************\r
+SET_THEN_A2:\r
+        CALLA   LM_SETUP\r
+        MOVE    A2,A8\r
+        JAUC    LM_FINIS               ;THAT DOES LINE 3\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          SET_THEN_STRNGRAM                                             *\r
+*                                                                        *\r
+*          A10 POINTS AT A CMOS STRING FOR CUSTOM MESSAGE.               *\r
+*          A8 CONTAINS THE SETUP STRING FOR PRINTING THIS                *\r
+*          STRING OUT.  CONVERT FROM CMOS TO STRNGRAM                    *\r
+*          AND PRINT ON THE STRING.                                      *\r
+*                                                                        *\r
+**************************************************************************\r
+SET_THEN_STRNGRAM:\r
+        CALLR   CK_LINE                ;TRANSFER TO STRNGRAM\r
+        CALLA   LM_SETUP\r
+        MOVI    STRNGRAM,A8\r
+        JAUC    LM_FINIS\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          CK_LINE                                                       *\r
+*                                                                        *\r
+*          A10 POINTS AT A CMOS STRING.  WE MOVE THIS STRING             *\r
+*          TO OUR PDATA AREA.  THEN WE CALL BUILD_ST TO                  *\r
+*          PACK IT INTO "STRNGRAM" WE RETURN .EQ. (PASSED FROM           *\r
+*          BUILD_ST) BACK TO OUR CALLER IF IT IS ALL SPACES.             *\r
+*                                                                        *\r
+**************************************************************************\r
+CK_LINE:  \r
+       MMTM    SP,A0,A7,A1,A2,A10\r
+        MOVE    A10,A7               ;INPUT POINTER TO CMOS\r
+        MOVE    A13,A10              ;OUR PDATA AREA\r
+        ADDI    PDATA,A10            ;A10 IS DESTINATION.\r
+        MOVE    A10,A2               ;ITERATE TO LOAD IT UP.\r
+\r
+        MOVI    CMESS_CHARS,A1       ;COUNTER\r
+        CALLA   ADJ_PAGE             ;POINT THE PAGE\r
+\r
+CK_LOOP:  \r
+       CALLA   RC_BYTEI             ;FETCH A BYTE\r
+        MOVB    A0,*A2               ;STORE\r
+        ADDI    BYTE_SIZE,A2\r
+        DSJS    A1,CK_LOOP\r
+\r
+        CALLA   DEF_PAGE             ;POINT AWAY NOW\r
+        CALLA   BUILD_ST             ;NOW XFER TO STRNGRAM (REMOVING SPACES ETC)\r
+       MMFM    SP,A0,A7,A1,A2,A10   ;RETURN .EQ. IF ITS ALL SPACES.\r
+       RETS\r
+\r
+LINE_ONE_PLUS:\r
+        MOVE    *A8,A2,L             ;GET LINE 1\r
+LOP_1:   \r
+       MOVI    SETUP_1_OF_3,A8\r
+        CALLA   LM_SETUP\r
+        MOVE    A2,A8                ;SWAP IN TEXT POINTER\r
+        JSRP    LM_FINIS             ;PRINT IT\r
+\r
+LOP_2:   \r
+       MOVI    TWO_TS,A8            ;TWO TO START STUFF\r
+        JAUC    L_MESS               ;PRINT IT AND RETURN\r
+\r
+*\r
+*        IF THE GAME IS IN A 2 TO START....2 TO CONTINUE MODE\r
+*\r
+LINE_THREE_PLUS:\r
+        MOVE    *A8(2*LONG_SIZE),A2,L  ;FETCH LINE 3\r
+        JRZ     LOP_2                ;NOTHING ON LINE 3\r
+        JAUC    LOP_1                ;THEN ITS THE SAME AS ABOVE!\r
+\r
+LINE_TWO_PLUS:\r
+        MOVE    *A8(LONG_SIZE),A2,L  ;FETCH LINE 2\r
+        JRZ     LOP_2                ;NOTHING ON LINE 2\r
+        JAUC    LOP_1                ;THEN ITS THE SAME AS ABOVE!\r
+\r
+LINE_ONE_PLUS_2:\r
+        MOVE    *A8,A2,L             ;GET LINE 1\r
+LOP_12:   \r
+       MOVI    SETUP_1_OF_2,A8\r
+        CALLA   LM_SETUP\r
+        MOVE    A2,A8                ;SWAP IN TEXT POINTER\r
+        JSRP    LM_FINIS             ;PRINT IT\r
+\r
+LOP_22:   \r
+       MOVI    TWO_TP,A8            ;TWO CREDITS PER PLAYER\r
+        JAUC    L_MESS               ;PRINT IT AND RETURN\r
+\r
+LINE_TWO_PLUS_2:\r
+        MOVE    *A8(LONG_SIZE),A2,L  ;FETCH LINE 2\r
+        JRZ     LOP_22               ;NOTHING ON LINE 2\r
+        JAUC    LOP_12               ;THEN ITS THE SAME AS ABOVE!\r
+\r
+LINE_THREE_PLUS_2:\r
+        MOVE    *A8(2*LONG_SIZE),A2,L  ;FETCH LINE 3\r
+        JRZ     LOP_22               ;NOTHING ON LINE 3\r
+        JAUC    LOP_12               ;THEN ITS THE SAME AS ABOVE!\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          SELECT_SETUP                                                  *\r
+*                                                                        *\r
+*          THIS IS CALLED TO SELECT A SETUP STRING FOR THE               *\r
+*          CREDITS MESSAGE.  IF THERE IS PROMPTING TO ADD...WE           *\r
+*          DROP IT DOWN....ELSE WE PRINT IT CENTERED.                    *\r
+*                                                                        *\r
+**************************************************************************\r
+SELECT_SETUP:\r
+        MMTM    SP,A0                     \r
+        MOVI    MESS_CNUM,A8              ;ASSUME NO EXTRA PROMPT\r
+\r
+        CALLA   CKPROMPT                  ;IS THERE ONE?\r
+        JRZ     NO_EXTRA\r
+\r
+        MOVI    MESS_LOWNUM,A8\r
+NO_EXTRA:      \r
+       MMFM    SP,A0                     \r
+       RETS\r
\r
+**************************************************************************\r
+*                                                                        *\r
+*          FETCH_REQ                                                     *\r
+*                                                                        *\r
+*          THIS ROUTINE FETCHES THE NUMBER OF UNITS REQUIRED             *\r
+*          FOR CREDIT, BONUS AND MINIMUM:                                *\r
+*                                                                        *\r
+*                  A2 = REQ FOR CREDITS                                  *\r
+*                  A3 = REQ FOR BONUS                                    *\r
+*                  A4 = MINIMUM                                          *\r
+*                                                                        *\r
+**************************************************************************\r
+FETCH_REQ:\r
+        MMTM    SP,A0\r
+        MOVI    ADJCUNIT,A0\r
+        CALLR   GET_ADJ\r
+        MOVE    A0,A2\r
+\r
+        MOVI    ADJBUNIT,A0\r
+        CALLR   GET_ADJ\r
+        MOVE    A0,A3\r
+\r
+        MOVI    ADJMUNIT,A0\r
+        CALLR   GET_ADJ_FOR_COIN\r
+        MOVE    A0,A4\r
+       MMFM    SP,A0\r
+       RETS\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          SLAM_P                                                        *\r
+*                                                                        *\r
+*          IS THERE A SLAM PROCESS RUNNING?                              *\r
+*                                                                        *\r
+*          .EQ.    NO                                                    *\r
+*          .NE.    YES                                                   *\r
+*                                                                        *\r
+**************************************************************************\r
+SLAM_P:   \r
+       MOVI    SLAM_PID,A0          ;SLAM PROCESS ACTIVE?\r
+        MOVI    0FFFFH,A1\r
+        CALLA   EXISTP\r
+        RETS\r
+\r
+SLAM_SW:  \r
+       MOVI    SLAM_PID,A0\r
+        MOVE    A0,*A13(PROCID),W    ;SET OUR ID TO SLAM\r
+        MOVI    0FFFFH,A1\r
+        CALLA   KILALL               ;KILL ANY OTHER INCARNATIONS\r
+\r
+        SLEEP   40H                  ;1 SECOND OF COIN IGNORING.\r
+        JAUC    SUCIDE\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          FORM_COIN_CKSUM                                               *\r
+*                                                                        *\r
+*          THIS ROUTINE IS CALLED TO FORM THE COIN/CREDITS               *\r
+*          CHECKSUM.  THE CHECKSUM IS RETURNED IN A1.                    *\r
+*                                                                        *\r
+*          .EQ.   IT MATCHES WHATS THERE                                 *\r
+*          .NE.   IT DOESN'T MATCH                                       *\r
+*                                                                        *\r
+**************************************************************************\r
+FORM_COIN_CKSUM:\r
+        MMTM    SP,A0,A7,A2\r
+        CALLR   COIN_PAG                 ;MAKE SURE WE'RE ON THE RIGHT PAGE.\r
+        MOVI    COIN_CKSUM_START,A7       ;POINT AT FIRST BYTE TO CHECK\r
+        MOVI    COIN_CKSUM_BYTES,A2\r
+        CLR     A1                        ;CLEAR OUT CHECKSUM\r
+\r
+CN_SUM:   \r
+       CALLA   RC_BYTEI                  ;FETCH A BYTE IN A0\r
+        ADD     A0,A1                     ;ADD TO SUM\r
+        DSJS    A2,CN_SUM                 ;TILL WE HAVE EM ALL\r
+\r
+        NOT     A1                        ;COMPLEMENT OF COURSE\r
+       SLL     24,A1\r
+       SRL     24,A1\r
+;        ANDI    BYTE_MASK,A1              ;AND KEEP THE BYTE\r
+\r
+        MOVI    COIN_CKSUM,A7\r
+        CALLA   RC_BYTE                   ;FETCH THE CURRENT CKSUM\r
+        CMP     A0,A1                     ;COMPARE TO THIS\r
+       MMFM    SP,A0,A7,A2\r
+       RETS\r
+\r
+FORM_COIN_CKSUM_AND_STORE:\r
+        MMTM    SP,A1,A7,A0\r
+        CALLR   FORM_COIN_CKSUM\r
+        MOVI    COIN_CKSUM,A7\r
+        MOVE    A1,A0\r
+        CALLA   WC_BYTE\r
+       MMFM    SP,A1,A7,A0\r
+       RETS\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          CCCC                                                          *\r
+*                                                                        *\r
+*          Check_Coin_and_Clear_on_bad_Checksum.                         *\r
+*                                                                        *\r
+*          This is called before operations that deal with               *\r
+*          the coinage and credits values.                               *\r
+*                                                                        *\r
+*          It checks to see if they area is in tact. If it               *\r
+*          is, then no action is performed.                              *\r
+*                                                                        *\r
+*          Else, it clears our all values (credits, etc.)                *\r
+*          so that nothing is given away erroneously.                    *\r
+*                                                                        *\r
+**************************************************************************\r
+CCCC:     \r
+       MMTM    SP,A0,A1,A7,A2\r
+        CALLR   FORM_COIN_CKSUM      ;THIS SETS US TO THE COINAGE PAGE!\r
+        JRZ     CCCCX                ;ALL IS OK!\r
+\r
+        MOVI    COIN_CKSUM_START,A7  ;POINT AT FIRST BYTE\r
+        MOVI    COIN_CKSUM_BYTES,A2  ;NUMBER OF BYTES TO CLEAR\r
+        CLR     A0\r
+\r
+CCCC_LOOP:\r
+        CALLA   WC_BYTEI             ;WRITE A BYTE\r
+        DSJS    A2,CCCC_LOOP         ;UNTIL THEY'RE DONE!\r
+\r
+        CALLR   FORM_COIN_CKSUM_AND_STORE  ;NOW MAKE THE CKSUM VALID\r
+\r
+CCCCX:   \r
+       MMFM    SP,A0,A1,A7,A2\r
+       RETS\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          COIN_PAG                                                     *\r
+*                                                                        *\r
+*          THIS SETS THE CURRENT CMOS PAGE FOR COIN/CREDITS              *\r
+*                                                                        *\r
+**************************************************************************\r
+COIN_PAG:\r
+       MMTM    SP,A1\r
+        MOVI    COIN_SELECT,A1       ;THIS IS COIN/CREDITS PAGE\r
+        CALLA   SET_PAGE             ;SET IT PLEASE\r
+       MMFM    SP,A1\r
+       RETS\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*         AUDIT HANDLING                                                 *\r
+*                                                                        *\r
+**************************************************************************\r
+*                                                                        *\r
+*          POINT_AT_AUDIT                                                *\r
+*                                                                        *\r
+*          THIS IS CALLED TO POINT AT THE AUDIT INDICATED BY             *\r
+*          A0.  A0 IS THE AUDIT NUMBER 0-30.  A7 IS RETURNED             *\r
+*          POINTING AT THE BEGINNING OF THE AUDIT.                       *\r
+*                                                                        *\r
+**************************************************************************\r
+POINT_AT_AUDIT:\r
+        MMTM    SP,A1\r
+        CALLR   AUDIT_PAGE\r
+\r
+        MOVI    AUD_SIZE,A7          ;THIS IS SIZE PER AUDIT\r
+        MPYU    A0,A7                ;A1 NOW HAS OFFSET\r
+        ADDI    AUDITORG,A7          ;ADD BASE\r
+       MMFM    SP,A1\r
+       RETS\r
+\r
+AUDIT_PAGE:\r
+        MMTM    SP,A1\r
+        MOVI    AUDIT_SELECT,A1      ;THIS IS AUDIT PAGE\r
+        CALLA   SET_PAGE             ;SET IT PLEASE\r
+       MMFM    SP,A1\r
+       RETS\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          FORM_AUD_CKSUM                                                *\r
+*                                                                        *\r
+*          THIS IS CALLED TO FORM THE CHECKSUM FOR THE AUDIT             *\r
+*          SPECIFIED IN A0.                                              *\r
+*                                                                        *\r
+*          A1 RETURNS THE CHECKSUM.                                      *\r
+*                                                                        *\r
+*          Z BIT IS SET BASED ON WHETHER IT MATCHES THE CHECKSUM THERE.  *\r
+*                                                                        *\r
+**************************************************************************\r
+FORM_AUD_CKSUM:\r
+        MMTM    SP,A0,A4,A7\r
+        CALLR   POINT_AT_AUDIT            ;A7 = POINTER TO CURRENT ENTRY\r
+        MMTM    SP,A7                     ;SAVE POINTER TO ENTRY\r
+        MOVI    AUD_BYTES_TO_CHECK,A4     ;COUNT DOWN THE BYTES\r
+        CLR     A1                        ;KEEP SUM IN A1\r
+ADD_A_BYTE:\r
+        CALLA   RC_BYTEI                  ;GET A BYTE INTO A0\r
+        ADD     A0,A1                     ;ADD TO SUM\r
+        DSJ     A4,ADD_A_BYTE             ;ONE MORE ADDED\r
+        NOT     A1                        ;CHECKSUM IS NOW IN LOW WORD\r
+       ZEXT    A1,W\r
+;        ANDI    WORD_MASK,A1              ;MASK SO ITS COOL\r
+       MMFM    SP,A7                     ;GET POINTER BACK\r
+        ADDI    AUD_CKSUM,A7              ;POINT AT CHECKBYTE\r
+        CALLA   RC_WORD                   ;READ IN THE CKSUM\r
+        CMP     A0,A1                     ;COMPARE WHAT'S THERE TO WHAT WE GOT\r
+       MMFM    SP,A0,A4,A7               ;Z BIT RETURNS COMPARE\r
+       RETS                              ;A1 RETURNS CKSUM\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          STORE_AUD_CKSUM                                               *\r
+*                                                                        *\r
+*          THIS WILL STORE THE AUDIT CHECKSUM IN A1 FOR THE              *\r
+*          AUDIT NUMBER SPECIFIED BY A0.                                 *\r
+*                                                                        *\r
+**************************************************************************\r
+STORE_AUD_CKSUM:\r
+        MMTM    SP,A7,A0                  ;POINTING REGISTER\r
+        CALLR   POINT_AT_AUDIT            ;A7 POINTS AT AUDIT\r
+        ADDI    AUD_CKSUM,A7              ;POINT AT CHECKBYTE\r
+        MOVE    A1,A0                     ;GET CHECKBYTE IN A0\r
+        CALLA   WC_WORD                   ;WRITE THE CKSUM\r
+       MMFM    SP,A7,A0                  ;POINTING REGISTER\r
+       RETS\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          FORM_AUD_CKSUM_AND_STORE                                      *\r
+*                                                                        *\r
+*          THE VALUE AT BAD_AUD IS USED TO DETERMINE WHETHER TO STORE    *\r
+*          THE CORRECT OR INCORRECT VALUE!                               *\r
+*                                                                        *\r
+*          A0 = AUDIT NUMBER                                             *\r
+*                                                                        *\r
+**************************************************************************\r
+FORM_AUD_CKSUM_AND_STORE:\r
+        MMTM    SP,A1,A2                     ;SAVE A1!\r
+        CALLR   FORM_AUD_CKSUM\r
+        MOVE    @BAD_AUD,A2,W                ;GET THE "FUDGE" WORD\r
+        XOR     A2,A1                        ;MAKE CKSUM BAD IF AUDIT IS BAD\r
+        CALLR   STORE_AUD_CKSUM\r
+       MMFM    SP,A1,A2\r
+       RETS\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          GET_AUD                                                       *\r
+*                                                                        *\r
+*          THIS IS CALLED TO FETCH THE AUDIT VALUE FOR THE AUDIT         *\r
+*          SPECIFIED IN A0 INTO A1.  IF THE CHECKBYTE FOR THE            *\r
+*          AUDIT IS INCORRECT, THEN RAM LOCATION BAD_AUD WILL BE         *\r
+*          SET TO 1.                                                     *\r
+*                                                                        *\r
+**************************************************************************\r
+GET_AUD:\r
+       MMTM    SP,A7,A0\r
+        CALLR   FORM_AUD_CKSUM       ;SEE IF CKSUM IS OK\r
+        JRZ     FETCH_AUDIT_1        ;ITS OK....\r
+*\r
+*        CHECKSUM IS BAD....SET GLOBAL\r
+*\r
+         MOVK    1,A1\r
+         MOVE    A1,@BAD_AUD,W        ;SET THE FLAG!\r
+\r
+FETCH_AUDIT_1:\r
+         CALLR   POINT_AT_AUDIT       ;A7 POINTS AT AUDIT\r
+         ADDI    AUD_DATA,A7          ;ADD ZERO OFFSET\r
+         CALLA   RC_LONG              ;FETCH THE LONG WORD TO A0\r
+         MOVE    A0,A1                ;RETURN IN A1\r
+        MMFM    SP,A7,A0\r
+        RETS\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          STORE_AUDIT                                                   *\r
+*                                                                        *\r
+*          A0 = AUDIT NUMBER TO STORE VALUE FOR                          *\r
+*          A1 = VALUE TO STORE.                                          *\r
+*          BAD_AUD = NON ZERO IF BAD CHECKSUM IS TO BE MAINTAINED.       *\r
+*                                                                        *\r
+**************************************************************************\r
+STORE_AUDIT:\r
+       \r
+        MMTM    SP,A0,A7\r
+        CALLR   POINT_AT_AUDIT       ;A7 POINTS AT AUDIT\r
+        ADDI    AUD_DATA,A7          ;ADD ZERO OFFSET\r
+        MOVE    A1,A0                ;MOVE DATA TO WRITING REGISTER\r
+        CALLA   WC_LONG              ;WRITE THE DATA BACK\r
+       MMFM    SP,A0,A7             ;GET AUDIT NUMBER BACK\r
+        JRUC    FORM_AUD_CKSUM_AND_STORE    ;STORE GOOD OR BAD CKSUM BASED\r
+                                            ;ON BAD_AUD\r
+\r
+;**************************************************************************\r
+;*                                                                        *\r
+;*          CLR_SUBS                                                      *\r
+;*                                                                        *\r
+;*          THIS IS CALLED TO CLEAR OUT THE COINAGE SUB-TOTALS.           *\r
+;*                                                                        *\r
+;**************************************************************************\r
+;CLR_SUBS: \r
+;      MOVI    FRST_SUB,A0\r
+;        MOVI    LAST_SUB,A1\r
+;        CALLR   CLR_AUDR        ;CLEAR EM OUT!\r
+;        RETP\r
+;\r
+**************************************************************************\r
+*                                                                        *\r
+*          CLR_AUDR                                                 *\r
+*                                                                        *\r
+*          THIS IS CALLED TO CLEAR OUT A RANGE OF AUDITS.                *\r
+*          A0 = 1ST AUDIT NUMBER                                         *\r
+*          A1 = LAST AUDIT NUMBER (INCLUSIVE)                            *\r
+*                                                                        *\r
+**************************************************************************\r
+CLR_AUDR:\r
+        MMTM    SP,A0,A1,A2\r
+        MOVE    A1,A2                     ;MOVE "LAST" TO A2\r
+        CLR     A1                        ;WE'LL STORE ZEROS\r
+        MOVE    A1,@BAD_AUD               ;MAKE CKSUMS GOOD ON STORING\r
+CAR1:    \r
+       CALLR   STORE_AUDIT               ;STORE THIS AUDIT\r
+        INC     A0                        ;KICK TO NEXT AUDIT\r
+        CMP     A2,A0\r
+        JRLS    CAR1\r
+       MMFM    SP,A0,A1,A2\r
+       RETS\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*      CLR_DUMP_AUD                                                     *\r
+*                                                                       *\r
+*      This is called by both joysticks down while looking              *\r
+*      at dump page.   It clears out the audits associated              *\r
+*      with that page.                                                  *\r
+*                                                                        *\r
+**************************************************************************\r
+;CLR_DUMP_AUD:\r
+;        MOVI    AUDDOGGY,A0 \r
+;      CALLR   KILL_AUD\r
+;        MOVI    AUDLOCK,A0  \r
+;      CALLR   KILL_AUD\r
+;        MOVI    AUDTRAP,A0  \r
+;      CALLR   KILL_AUD\r
+;        MOVI    AUDSURV,A0  \r
+;      CALLR   KILL_AUD\r
+;        MOVI    AUDBONE,A0  \r
+;      CALLR   KILL_AUD\r
+;      RETS\r
+       \r
+**************************************************************************\r
+*                                                                        *\r
+*      KILL_AUD                                                         *\r
+*                                                                       *\r
+*      This is called to clear out an audit.                            *\r
+*                                                                       *\r
+*      A0 = audit number.                                               *\r
+*                                                                        *\r
+**************************************************************************\r
+KILL_AUD:\r
+       MMTM    SP,A1\r
+        CLR     A1                        ;WE'LL STORE ZEROS\r
+        MOVE    A1,@BAD_AUD               ;MAKE CKSUMS GOOD ON STORING\r
+        CALLR   STORE_AUDIT               ;STORE THIS AUDIT\r
+       MMFM    SP,A1\r
+       RETS\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          AUD                                                           *\r
+*                                                                        *\r
+*          A0 = AUDIT NUMBER.......A1 = COUNT TO ADD.                    *\r
+*                                                                        *\r
+**************************************************************************\r
+AUD:      \r
+        MMTM    SP,A1,A2\r
+        CLR     A2                   ;SET "BAD_AUD" GOOD UNTIL OTHERWISE PROVEN!\r
+        MOVE    A2,@BAD_AUD,W        ;ITS GOOD.\r
+        MOVE    A1,A2                ;COPY OUR COUNT\r
+        CALLR   GET_AUD              ;FETCH THE CURRENT AUDIT COUNTER\r
+        ADD     A2,A1                ;ADD THE NEW COUNT\r
+        CALLR   STORE_AUDIT          ;STORE IT BACK\r
+        CALLR   DEF_PAGE             ;SWITCH PAGE AWAY FROM THE DATA!\r
+       MMFM    SP,A1,A2\r
+       RETS\r
+\r
+AUD1:     \r
+       MMTM    SP,A1\r
+        MOVK    1,A1\r
+        CALLR   AUD\r
+       MMFM    SP,A1\r
+       RETS\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          CLR_AUD                                                       *\r
+*                                                                        *\r
+*          This is called to clear out all of the audits.                *\r
+*                                                                        *\r
+*          A relatively easy task given the primitives available.        *\r
+*                                                                        *\r
+**************************************************************************\r
+CLR_AUD:  \r
+       MMTM    SP,A0,A1\r
+        MOVI    1,A0                 ;START AT AUDIT 1\r
+        MOVI    N_AUDITS-1,A1        ;THIS IS TOTAL ALLOCATED\r
+        CALLR   CLR_AUDR\r
+       MMFM    SP,A0,A1\r
+       RETS\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          ADJUSTMENTS                                                   *\r
+*                                                                        *\r
+**************************************************************************\r
+**************************************************************************\r
+*                                                                        *\r
+*          CMOS_VAL                                                     *\r
+*                                                                        *\r
+*          ARE ADJUSTMENTS AND NAME/REV OK?                              *\r
+*                                                                        *\r
+*          .EQ. MEANS YES                                                *\r
+*          .NE. MEANS NO                                                 *\r
+*                                                                        *\r
+**************************************************************************\r
+CMOS_VAL:\r
+        CALLR   FORM_ADC  ;SEE IF CKSUM IS OK.\r
+        JRNZ    CMOS_BAD        ;NOPE....RETURN .NE.\r
+\r
+        CALLR   CHECK_NAME_AND_REV   ;HOW ABOUT THE NAME AND REV?\r
+CMOS_BAD:\r
+        RETS\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          Adjustments are all stored as long words in CMOS.             *\r
+*          They are referenced by adjustment number.  Stuff              *\r
+*          adjustment number in A0.  Call GET_ADJ and the                *\r
+*          value is returned in A0.                                      *\r
+*                                                                        *\r
+**************************************************************************\r
+**************************************************************************\r
+*                                                                        *\r
+*          FORM_ADC                                                *\r
+*                                                                        *\r
+*          THIS IS CALLED TO FORM THE CHECKSUM FOR THE ADJUSTMENTS       *\r
+*          AREA.  IT IS RETURNED IN A1.                                  *\r
+*                                                                        *\r
+*          IT IS COMPARED TO THE REAL CHECKSUM AND .EQ. RETURNED IF OK.  *\r
+*                                                                        *\r
+**************************************************************************\r
+FORM_ADC: \r
+       MMTM    SP,A7,A0,A6\r
+        CALLR   ADJ_PAGE          ;SET CMOS PAGE FOR ADJUSTMENTS\r
+        MOVI    ADJUSTORG,A7         ;POINT AT FIRST BYTE\r
+        MOVI    ADJ_BYTES_TO_CHECK,A6  ;NUMBER OF BYTES\r
+        CLR     A1                     ;ACCUMULATE CKSUM HERE\r
+\r
+ADJ_C1:   \r
+       CALLA   RC_BYTEI               ;READ A BYTE\r
+        ADD     A0,A1                  ;ADD THE BYTE TO THE SUM\r
+        DSJS    A6,ADJ_C1\r
+        NOT     A1                     ;COMPLEMENT THE SUM\r
+       ZEXT    A1,W\r
+;        ANDI    WORD_MASK,A1           ;KEEP A WORD.\r
+        MOVI    ADJ_CKSUM,A7\r
+        CALLA   RC_WORD                ;FETCH THE CHECKSUM\r
+        CMP     A0,A1                  ;COMPARE TO FETCHED VALUE\r
+       MMFM    SP,A7,A0,A6\r
+       RETS\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          F_ADC_S                                                       *\r
+*                                                                        *\r
+*          CALCULATE THE ADJUSTMENT CHECKSUM AND STORE THE               *\r
+*          NEW VALUE.                                                    *\r
+*                                                                        *\r
+**************************************************************************\r
+F_ADC_S:\r
+        MMTM    SP,A0,A1,A7\r
+        CALLR   FORM_ADC         ;FORM THE CKSUM\r
+        MOVE    A1,A0                  ;PUT IN CMOS WRITING REGGIE\r
+        MOVI    ADJ_CKSUM,A7\r
+        CALLA   WC_WORD                ;AND STORE IT\r
+       MMFM    SP,A0,A1,A7\r
+       RETS\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          GET_ADJ                                                       *\r
+*                                                                        *\r
+*          THIS IS CALLED TO FETCH THE VALUE OF AN ADJUSTMENT.           *\r
+*                                                                        *\r
+*          THE ADJUSTMENT NUMBER IS GIVEN IN A0.                         *\r
+*          THE VALUE FOR THE ADJUSTMENT IS RETURNED IN A0.               *\r
+*                                                                        *\r
+**************************************************************************\r
+GET_ADJ:  \r
+       MMTM    SP,A1,A7\r
+        CALLR   ADJPOINT             ;POINT AT ADJUSTMENT\r
+        CALLA   RC_LONG              ;FETCH THE ADJUST PLEASE\r
+        CALLR   DEF_PAGE\r
+        MOVE    A0,A0                ;RETURN Z BIT BASED ON ADJUSTMENT!\r
+       MMFM    SP,A1,A7\r
+       RETS\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          PUT_ADJ                                                       *\r
+*                                                                        *\r
+*          ADJUST NUMBER IN A0.                                          *\r
+*          VALUE IN A1.                                                  *\r
+*          STORE IT!........                                             *\r
+*                                                                        *\r
+*          ****************** THIS IS A UTILITY......IT DOES NOT         *\r
+*                             CORRECT ANY CHECKSUM CHANGE THAT           *\r
+*                             MAY OCCUR!!                                *\r
+*                                         ***************************    *\r
+*                                                                        *\r
+**************************************************************************\r
+PUT_ADJ:  \r
+       MMTM    SP,A7,A0\r
+        CALLR   ADJPOINT             ;POINT AT REQUESTED ADJ.\r
+        MOVE    A1,A0                ;GET VALUE IN WRITING REGGIE!\r
+        CALLA   WC_LONG              ;WRITE THE ADJUSTMENT\r
+        CALLR   DEF_PAGE             ;SWAP PAGE AWAY.\r
+       MMFM    SP,A7,A0\r
+       RETS\r
+\r
+ADJPOINT:\r
+        CALLR   ADJ_PAGE             ;SET CMOS PAGE FOR ADJUSTMENTS\r
+        MOVI    ADJ_SIZE,A7          ;SIZE PER ADJUSTMENT IN A7\r
+        MPYU    A0,A7                ;TIMES ADJUSTMENT REQUESTED.\r
+        ADDI    ADJUSTORG,A7         ;ADD TO BASE\r
+        RETS\r
+\r
+GET_ADJ_FOR_COIN:\r
+        CALLR   GET_ADJ              ;GET THE ADJUSTMENT\r
+        JAUC    COIN_PAG            ;THEN RE-INSTATE THE COIN PAGE!\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          CHECK_NAME_AND_REV                                            *\r
+*                                                                        *\r
+*          THIS ROUTINE IS CALLED TO SEE IF THE GAME NAME/REV IS         *\r
+*          CORRECT.  IF IT IS NOT, THE GAME WILL AUTOMATICALLY           *\r
+*          FACTORY SET.   .EQ. MEANS OK!                                 *\r
+*                                                                        *\r
+**************************************************************************\r
+CHECK_NAME_AND_REV:\r
+        MMTM    SP,A0,A1,A2,A3,A7\r
+        CALLR   ADJ_PAGE          ;MAKE SURE WE'RE ON THE CORRECT PAGE\r
+\r
+        MOVI    NAME_REV,A7          ;POINT AT CMOS NAME STORAGE\r
+        MOVI    ROM_NAME,A1          ;POINT AT OUR VERSION\r
+        MOVI    NAME_REV_SIZE,A2     ;MAXIMUM NAME SIZE\r
+\r
+NEXT_LET1:\r
+        CALLA   RC_BYTEI             ;FETCH A BYTE\r
+        MOVB    *A1,A3               ;GET 1 FROM ROM\r
+       SLL     24,A3\r
+       SRL     24,A3\r
+;        ANDI    BYTE_MASK,A3         ;MASK ANY SIGN EXTENDS\r
+\r
+        CMP     A3,A0                ;THEY BETTER BE THE SAME\r
+        JRNZ    RETURN_NOW           ;NOPE....BYE  (RETURN .NE.)\r
+\r
+        ADDI    BYTE_SIZE,A1         ;KICK SOURCE POINTER\r
+        MOVE    A0,A0                ;WAS IT A ZERO?\r
+        JRZ     RETURN_NOW           ;YEP....NO MORE (RETURN .EQ.)\r
+        DSJS    A2,NEXT_LET1\r
+        CLR     A0                   ;RETURN .EQ.\r
+         \r
+RETURN_NOW:\r
+       MMFM    SP,A0,A1,A2,A3,A7\r
+       RETS\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          ADJ_PAGE                                                   *\r
+*                                                                        *\r
+*          THIS SETS THE CURRENT CMOS PAGE FOR ADJUSTMENTS.              *\r
+*                                                                        *\r
+**************************************************************************\r
+ADJ_PAGE:\r
+        MMTM    SP,A1\r
+        MOVI    ADJUST_SELECT,A1      ;THIS IS AUDIT PAGE\r
+        CALLA   SET_PAGE             ;SET IT PLEASE\r
+       MMFM    SP,A1\r
+       RETS\r
+\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          DEF_PAGE                                                      *\r
+*                                                                        *\r
+*          THIS SWITCHES TO "DEFAULT" PAGE.  THE DEFAULT                 *\r
+*          PAGE IS THE ONE THAT WE WOULD LIKE TO SMASH                   *\r
+*          MOST IN THE CASE OF A CRASH.  AFTER MOST                      *\r
+*          PROCESSING, WE SWITCH TO THIS PAGE!                           *\r
+*                                                                        *\r
+**************************************************************************\r
+DEF_PAGE:\r
+       PUSHST                       ;PRESERVE CODES THAT ARE BEING RETURNED\r
+        MMTM    SP,A1\r
+        MOVI    TODAYS_SELECT,A1     ;THIS IS TODAY'S HIGH SCORES PAGE\r
+        CALLA   SET_PAGE             ;SET IT PLEASE\r
+        MMFM    SP,A1\r
+        POPST\r
+       RETS\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          FAC_SET                                                       *\r
+*                                                                        *\r
+*          THIS ROUTINE RESTORES THE FACTORY SETTINGS TO THE             *\r
+*          ADJUSTMENTS.                                                  *\r
+*                                                                        *\r
+**************************************************************************\r
+FAC_SET:  \r
+       MMTM    SP,A0,A1,A2,A7\r
+        CALLR   DUMP_FS              ;CLEAR OUT "DUMP" MEMORY\r
+        CALLR   NO_CREDS             ;REMOVE ANY COINS\r
+**************************************************************************\r
+*                                                                        *\r
+*          CALLR   HS_RESET_COUNTER                                      *\r
+*                                                                        *\r
+**************************************************************************\r
+        CALLR   ADJ_PAGE             ;SET CMOS PAGE CORRECTLY\r
+        MOVI    FACTORY_TABLE,A1     ;ROM\r
+        MOVI    ADJUSTORG,A7         ;CMOS\r
+        MOVI    N_ADJUSTS,A2         ;NUMBER OF ADJUSTMENTS ALLOCATED\r
+\r
+FACS1:    \r
+       MOVE    *A1+,A0,W            ;FETCH A ROM LONG WORD\r
+       ZEXT    A0,W\r
+        CALLA   WC_LONGI             ;WRITE THE WORD TO CMOS\r
+        DSJS    A2,FACS1             ;WRITE 1 LONG WORD PER ADJUST\r
+\r
+        .IF    YUNIT\r
+       MOVE    @SWITCH+>30,A1\r
+       NOT     A1\r
+       SLL     26,A1\r
+       SRL     26,A1                   ;STRIP OFF BITS\r
+       INC     A1\r
+       CMPI    CS_ENTS,A1              ;GET DIP SWITCH DEFAULT MODE\r
+       JRHI    FACS2\r
+        MOVI    ADJPRICE,A0          ;AS MASTER PRICER.\r
+        CALLA   PUT_ADJ\r
+        .ENDIF\r
+FACS2\r
+        CALLR   LD_CTAB      ;EXPAND THE CSELCT VALUE\r
+        CALLR   F_ADC_S  ;MAKE THE CHECKSUM CORRECT.\r
+*\r
+*       NOW STORE THE GAME NAME AND REVISION INFO\r
+*\r
+        MOVI    NAME_REV,A7          ;POINT AT CMOS NAME STORAGE\r
+        MOVI    ROM_NAME,A1          ;POINT AT OUR VERSION\r
+        MOVI    NAME_REV_SIZE,A2     ;MAXIMUM NAME SIZE\r
+\r
+NEXT_LETTER:\r
+        MOVB    *A1,A0               ;FETCH A BYTE\r
+        CALLA   WC_BYTEI             ;WRITE IT TO CMOS\r
+        ADDI    BYTE_SIZE,A1         ;KICK SOURCE POINTER\r
+        MOVE    A0,A0                ;WAS IT A ZERO?\r
+        JRZ     NAME_DONE            ;YEP....NO MORE!\r
+        DSJS    A2,NEXT_LETTER\r
+         \r
+NAME_DONE:\r
+       MMFM    SP,A0,A1,A2,A7\r
+       RETS\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*          SWITCH_FOR_JUMPER                                             *\r
+*                                                                        *\r
+*          THIS IS CALLED OUT OF THE FACTORY SETTING SEQUENCE.           *\r
+*          IT CHECKS FOR JUMPER COMBINATIONS INDICATING                  *\r
+*          GERMAN OR FRENCH GAMES.                                       *\r
+*                                                                        *