First commit main
authorHistorical Source <49599193+historicalsource@users.noreply.github.com>
Thu, 14 Oct 2021 03:46:27 +0000 (23:46 -0400)
committerHistorical Source <49599193+historicalsource@users.noreply.github.com>
Thu, 14 Oct 2021 03:46:27 +0000 (23:46 -0400)
A08505.RBN [new file with mode: 0644]
A08506.XX [new file with mode: 0644]
A08515.RBN [new file with mode: 0644]
A08516.RBN [new file with mode: 0644]
A08517.RBN [new file with mode: 0644]
A08518.RBN [new file with mode: 0644]
A08519.RBN [new file with mode: 0644]
A08520.RBN [new file with mode: 0644]
A08521.RBN [new file with mode: 0644]
DRAG.DIR [new file with mode: 0644]
DRAG.MAP [new file with mode: 0644]

diff --git a/A08505.RBN b/A08505.RBN
new file mode 100644 (file)
index 0000000..8053320
Binary files /dev/null and b/A08505.RBN differ
diff --git a/A08506.XX b/A08506.XX
new file mode 100644 (file)
index 0000000..6b0e925
--- /dev/null
+++ b/A08506.XX
@@ -0,0 +1,1902 @@
+       ROM=1\r
+       .NLIST  TTM\r
+       .TITLE  DRAGON\r
+       .MACRO  .MSG,STRING\r
+       .IRPC   ..1,STRING\r
+       .IF     LE,''..1-47.    ;IF BELOW 0, SET WHITE\r
+       .IFT\r
+       .BYTE   WHITE\r
+       .IFF\r
+       .IF     GT,''..1-57.\r
+       .C=     ''..1-55.\r
+       .IFF\r
+       .C=     ''..1-48.\r
+       .ENDC\r
+       .IF     GT,.C-31.       ;IF V OR BEFORE LEAVE ALONE\r
+       .C=     .C+32.          ;ELSE ADD 20 HEX\r
+       .ENDC\r
+       .BYTE   .C\r
+       .ENDC\r
+       .ENDM\r
+       .BYTE   128.                    ;EOL\r
+       .ENDM\r
+\r
+\r
+       .ASECT\r
+\r
+       .SBTTL  DEFINITIONS\r
+BALL   =       70              ;38 HEX\r
+WHITE  =       340\r
+BLACK  =       240\r
+BLO1   =       20              ;10 HEX, NUMBER OF FIRST BLOW-UP PICT.\r
+CHP1   =       23              ;13 HEX, NUMBER OF FIRST CHUTE   PICT.\r
+EDGE1  =       146             ;66\r
+RAIL   =       147             ;67\r
+ACEL1  =       4000            ;800 HEX\r
+ACEL2  =       4010            ;808 HEX\r
+TSWT   =       4005            ;805 HEX\r
+CONSW1 =       4020\r
+CONSW2 =       4030\r
+START0 =       4050            ;828 HEX\r
+LAMP1  =       ^H90F\r
+START2 =       4040            ;820 HEX\r
+LAMP2  =       ^H91F\r
+MOTOR1 =       ^H90B\r
+MOTOR2 =       ^H91B\r
+PRICEH =       4060            ;830 PRICE OPTIONS\r
+PRICEL =       4070            ;838\r
+MSPD1  =       4400            ;900 HEX\r
+MSPD2  =       4420            ;910 HEX\r
+SCRCH1 =       4406            ;906 1 IS ON\r
+EXPL1  =       4405\r
+EXPL2  =       4425\r
+TONE1  =       4415\r
+TONE2  =       4435\r
+WTCHDG =       7000            ;E00 HEX, WATCHDOG\r
+LTEST  =       6400            ;D00 HEX\r
+STRG   =       6000\r
+PLAY   =       5000\r
+POS    =       5400\r
+STAMP1 =       PLAY+141\r
+XMTREE =       PLAY+220\r
+RPOS1  =       POS+50\r
+TPOS2  =       POS+70\r
+TPOS0  =       POS+250\r
+RPOS2  =       POS+170\r
+RPOS3  =       POS+230\r
+RPOS4  =       POS+350\r
+RDLIN  =       240.            ;REDLINE FOR BLOWUP.\r
+SHFTPT =       160.            ;AUTO-CAR'S SHIFT POINT\r
+ETFRCT =       12.             ;# OF FRAMES PER PSUEDO-TENTH'\r
+HTTIM  =       150.            ;# OF 'PSUEDO TENTHS' PER HEAT\r
+POWBND =       208.            ;BOTTOM OF POWER BAND\r
+VLVFLT =       240.            ;TOP OF POWER BAND\r
+FINISH =       240             ;CRUDST= THIS AT FINISH\r
+\r
+       .SBTTL  RAM LOCATIONS\r
+       .=200\r
+K:     .BLKB   1               ;2 BUCKETS, FOR TEMPORARY\r
+L:     .BLKB   1               ;STORAGE WITHIN SUBROUTINES.\r
+M:     .BLKB   1               ;BUCKET FOR INT. RTNS.\r
+CHPOS: .BLKB   1               ;HORIZ. DISP. FOR CAR\r
+DIST:  .BLKB   1               ;DISTANCE TRAVELED (FT./256)\r
+       .BLKB   2               ;CHPOS, DIST FOR CAR 2\r
+RODPOS:        .BLKB   2               ;HORIZ. DISP. FOR ROAD\r
+       .BLKB   2               ;RODPOS FOR CAR 2\r
+CVPOS: .BLKB   2\r
+       .BLKB   2               ;CVPOS FOR CAR 2\r
+DLTARP:        .BLKB   1               ;DELTA (RODPOS)\r
+LVEL:  .BLKB   1\r
+       .BLKB   2               ;DLTARP AND LVEL FOR CAR2\r
+STAT:  .BLKB   1\r
+VEL:   .BLKB   1\r
+       .BLKB   2               ;STAT, VEL FOR CAR 2\r
+BMSG:  .BLKB   1               ;MESSAGE FOR BOTTOM OF TRACK\r
+TMSG:  .BLKB   1               ;MESSAGE FOR TOP OF TRACK\r
+       .BLKB   2               ;TMSG, BMSG FOR CAR 2\r
+GEAR:  .BLKB   1\r
+STW:   .BLKB   1\r
+       .BLKB   2               ;GEAR, STW FOR CAR 2\r
+ERPM:  .BLKB   1\r
+LOAD:  .BLKB   1\r
+       .BLKB   2               ;ERPM, LOAD FOR CAR 2\r
+MSMTCH:        .BLKB   1               ;MISMATCH - ROAD:WHEELS\r
+CRUDST:        .BLKB   1               ;CRUDE MEASURE OF DISTANCE.\r
+       .BLKB   2               ;MSMTCH, CRUDST FOR CAR 2.\r
+REVINT:        .BLKB   4\r
+SWT:   .BLKB   1               ;BUFFER FOR SWITCHES\r
+TSTW:  .BLKB   1               ;BUFFER FOR STEERING\r
+       .BLKB   2               ;SWT, TSTW FOR OTHER CAR.\r
+BLTIM: .BLKB   1               ;BLOW-UP TIMER\r
+CHUTIM:        .BLKB   1               ;CHUTE TIMER\r
+       .BLKB   2               ;BLTIM, CHUTIM FOR CAR 2\r
+PGEAR: .BLKB   1               ;PROPOSED GEAR\r
+PENTIM:        .BLKB   1               ;PENALTY TIMER\r
+       .BLKB   2\r
+PICT1: .BLKB   3               ;PICTURE F0R CAR 1(2)\r
+PICT2: .BLKB   3               ;   "     "   "  2(0)\r
+ETCOM: .BLKB   1               ;COMMON TIMER FOR ET\r
+ETDIV: .BLKB   1               ;FRAME DIV. FOR ET\r
+FRFLG: .BLKB   1               ;\r
+TREE:  .BLKB   1               ;BIT MAP VERSION OF XMAS TREE\r
+CARPTR:        .BLKB   2               ;INDEX FOR CAR PARAMETERS.\r
+CARNO  =       .-1             ;A ONE BYTE CAR #, 0 (BOT) OR 2 (TOP)\r
+EHTIM: .BLKB   1\r
+MTIMER:        .BLKB   1\r
+ATMTIM:        .BLKB   1               ;ATTRACT MSG. TIMER\r
+TIME:  .BLKB   2               ;MUST BE JUST BEFORE OTIME***\r
+OTIME: .BLKB   1               ;MUST TRACK L.S.BYTE OF TIME.\r
+SOUND1:        .BLKB   1               ;BITS TO OUTPUT TO FIRST GROUP OF SOUND LATCHES.\r
+SOUND2:        .BLKB   1               ;SAME FOR SECOND GROUP.\r
+       .BLKB   2               ;SOUNDS FOR SECOND CAR.\r
+TBLPTR:        .BLKB   2               ;FOR BUILDING INDEX REGISTERS.\r
+TXTPOS:        .BLKB   2               ;WHERE MSG. GOES\r
+MTXT:  .BLKB   2               ;POINT TO MESSAGE TEXT.\r
+ET:    .BLKB   1               ;ELAPSED TIME (FROZEN AT FINISH)\r
+DRIVER:        .BLKB   1               ;+PLAYER -MACHINE\r
+       .BLKB   2\r
+OSTRG: .BLKB   1               ;OLD STEERING\r
+SAVG:  .BLKB   1               ;SOUND AVERAGE\r
+TALY1: .BLKB   1               ;COIN TIMER\r
+TALY2: .BLKB   1               ;THE OTHER COIN TIMER\r
+HEAT:  .BLKB   1               ;MUST BE JUST BEFORE CASE***\r
+CASE:  .BLKB   1               ;CASE SWITCH.\r
+RECLOW:        .BLKB   1               ;RECORD LOW THIS PLAYER\r
+STSW:  .BLKB   1       ;START SWITCH DEBOUNCE\r
+       .BLKB   2\r
+CREDIT:        .BLKB   1               ;JUST WHAT IT SAYS.\r
+COINCT:        .BLKB   1               ;COUNTS COINS, NOT CREDITS\r
+POLY:  .BLKB   1\r
+       .=      11000           ;1200 HEX\r
+       .SBTTL  SETUP\r
+RESET: LDS     I,377           ;KEEP AN EYE ON STACK***\r
+       LDX     E,^H3000        ;CHECK FOR DIAGNOSTIC FIXTURE\r
+       CPX     I,0\r
+       .=      .-2\r
+       .RAD50  /TST/\r
+       BNE     1$\r
+       JMP     ^H3002          ;JUMP TO DIAGNOSTIC, IF PRESENT\r
+1$:    TST     E,TSWT\r
+       BMI     2$\r
+       JMP     E,TROUT\r
+2$:    LDX     I,0\r
+       STX     D,CREDIT        ;GETS COINCT TOO.\r
+       STX     D,TALY1         ;ALSO GETS TALY2\r
+       JSR     CLRTOT\r
+NPR:   LDX     I,0\r
+       STX     D,TIME+1        ;GETS OTIME TOO\r
+       STX     D,HEAT          ;GETS CASE TOO\r
+       LDAA    I,377\r
+       STAA    D,DRIVER\r
+       STAA    D,DRIVER+2\r
+       STAA    E,WTCHDG\r
+       .BYTE   2               ;!!! IMPORTANT, SEE PG. A-13 OF APPLICATIONS\r
+       CLI                     ;MANUAL, QUESTION 15 !!!\r
+       BSR     INIT\r
+       JMP     E,WAIT          ;SYNC IN\r
+CKS12: .BYTE   273             ;CHECKSUM FOR ROM 1200-13FF\r
+INIT:  LDX     I,TIME-200      ;GET OFFSET FROM START OF RAM\r
+       CLRB\r
+1$:    STAB    X,200           ;CLEAR L-TIME\r
+       DEX\r
+       BNE     1$\r
+       LDX     I,PLAY\r
+       LDAA    I,BLACK\r
+2$:    STAA    X,0             ;BLANK PLAYFIELD\r
+       INX\r
+       INCB\r
+       BNE     2$\r
+       LDX     I,PLAY+100\r
+       LDAA    I,WHITE\r
+       LDAB    I,64.\r
+3$:    STAA    X,0             ;WRITE TRACK\r
+       STAA    X,160\r
+       INX\r
+       DECB\r
+       BNE     3$\r
+       LDAB    I,16.\r
+       LDX     I,PLAY+60\r
+4$:    LDAA    I,RAIL\r
+       BITB    I,3\r
+       BNE     5$\r
+       DECA                    ;MAKES IT EDGE1\r
+5$:    STAA    X,0\r
+       STAA    X,160\r
+       ADDA    I,3             ;MAKES IT TOP JUSTIFIED***\r
+       STAA    X,120\r
+       STAA    X,300\r
+       INX\r
+       DECB\r
+       BNE     4$\r
+       LDAA    I,8.            ;MOVE UP AND LEFT 1/2 STAMP.\r
+       CLRB\r
+       LDX     I,POS\r
+6$:    STAA    X,0\r
+       BITB    I,1\r
+       BEQ     7$              ;8'S IN EVEN LOCATIONS\r
+       CLR     X,0             ;0'S IN ODD LOCATIONS\r
+7$:    INX\r
+       INCB\r
+       BNE     6$\r
+       LDAA    I,46\r
+       STAA    D,CVPOS\r
+       STAA    D,CVPOS+2       ;CENTER CARS ON TRACK\r
+       LDAA    I,300\r
+       STAA    D,STAT\r
+       STAA    D,STAT+2\r
+       LDAA    I,4             ;IMPOSSIBLE-TO-REACH VALUE, WILL\r
+       STAA    D,FRFLG         ;FORCE WAIT FOR V-BLANKING\r
+       LDX     I,0\r
+       STX     D,TIME+1        ;GETS OTIME TOO, ASSURES SYNCHRONISM.\r
+       RTS\r
+\r
+       .SBTTL  MAIN (?) LOOP\r
+CHARGE:        DEC     E,CREDIT\r
+CLRTOT:        LDAA    I,152.\r
+       STAA    D,RECLOW\r
+       STAA    D,RECLOW+2\r
+       RTS\r
+ATLOOP:        LDX     I,0\r
+       STX     D,SOUND1\r
+       STX     D,SOUND1+2\r
+CKSTSW:        LDX     I,2             ;POINT TO PARAM BLOCK\r
+       LDAB    E,START2        ;GET START SW.\r
+       JSR     STARTQ          ;PROCESS START\r
+       LDX     I,0             ;DO OTHER ONE\r
+       LDAB    E,START0\r
+       JSR     STARTQ\r
+WAIT:  WAI\r
+       LDAA    D,FRFLG\r
+       BITA    I,375\r
+       BNE     WAIT\r
+       STAA    D,CARNO\r
+       LDX     D,CARPTR\r
+       JSR     E,DRIVE         ;SETS DUMMIES\r
+       JSR     E,ENGINE        ;A = VEL\r
+       STAA    X,VEL\r
+       LDAB    X,ERPM\r
+       LDAA    X,REVINT+1\r
+       SUBB    I,RDLIN         ;OVER-REV?\r
+       BCC     1$              ;'BHS'\r
+       CLRB\r
+       CLRA\r
+1$:    ABA\r
+       STAA    X,REVINT+1\r
+       LDAA    I,0             ;CLRA, LEAVE CARRY\r
+       ADCA    X,REVINT\r
+       STAA    X,REVINT\r
+       BEQ     2$\r
+       JSR     E,BLOW\r
+2$:    JSR     E,HMOV\r
+       JSR     E,VMOV\r
+       JSR     E,CARMOV\r
+       JSR     E,RODMOV\r
+       JSR     E,PICT\r
+       JSR     E,CHUTE\r
+       JSR     E,ENDCHK\r
+       JSR     E,PNLTY\r
+       LDAA    D,CARNO         ;CHEAP TST\r
+       BNE     CASWT\r
+       LDAA    D,OTIME\r
+       INCA\r
+       CMPA    D,TIME+1\r
+       BEQ     3$\r
+       SWI\r
+3$:    STAA    D,OTIME\r
+       BITA    I,77\r
+       BNE     WHTNXT\r
+       DEC     E,MTIMER\r
+       BNE     WHTNXT\r
+       JSR     E,INIT          ;RE-INIT IF MTIMER RUNS OUT (273 SEC./4.5 MIN.)\r
+       STX     D,HEAT          ;INIT RETURNS WITH X=0\r
+WHTNXT:        STAA    E,WTCHDG        ;KEEP SLEEPING DOGS ASLEEP.\r
+CASWT: CLI                     ;JUST IN CASE!!\r
+       LDAA    D,CASE\r
+       BEQ     ATMSG\r
+       DECA\r
+       BNE     1$\r
+       JMP     E,INST1\r
+1$:    DECA\r
+       BNE     2$\r
+       JMP     E,XMTRTN\r
+2$:    DECA\r
+       BEQ     WAIT\r
+       DECA\r
+       BNE     3$\r
+       JMP     E,WINNER\r
+3$:    SWI                     ;ILLEGAL CASE, RESET\r
+ATMSG: LDAA    D,CARNO\r
+       BEQ     ATEXIT\r
+       TST     E,TSWT\r
+       BMI     1$\r
+       SEI\r
+       JMP     E,TROUT\r
+1$:    LDAB    D,CREDIT        ;MONEY IN SLOT?\r
+       BEQ     ATINST          ;NO, ROLL THE INSTRUCTIONS.\r
+       JSR     E,PRICE         ;CHECK FOR FREE PLAY\r
+       BEQ     ATINST          ;YES, ROLL 'EM\r
+       LDAA    D,TIME+1\r
+       BITA    I,37\r
+       BNE     ATEXIT\r
+ATFP:  LDAA    I,M.CF-MTBL\r
+       STAA    D,TMSG+2\r
+       LDAA    I,M.1P-MTBL\r
+       LDAB    D,CREDIT\r
+       DECB\r
+       BLE      ATSNT1\r
+       LDAA     I,M.2P-MTBL\r
+       BRA      ATSNT1\r
+ATINST:        LDAB    D,ATMTIM\r
+       LDAA    D,TIME+1\r
+       BITA    I,3             ;EVERY FOURTH FRAME\r
+       BNE     ATEXIT\r
+ATRST: LDX     I,MDTBL\r
+       STAB    D,ATMTIM        ;HERE FOR RESTART ONLY***\r
+       INC     E,ATMTIM\r
+       TSTB\r
+2$:    BEQ     ATPMSG\r
+       INX\r
+       SUBB    I,51.\r
+       BCC     2$\r
+       BRA     ATEXIT\r
+ATPMSG:        LDAA    X,0             ;GET NEXT MESSAGE\r
+       CMPA    I,M.CF-MTBL     ;'CREDIT FOR'?\r
+       BEQ     ATPRCE          ;YES, QUOTE PRICE.\r
+       CMPA    I,M.BX-MTBL     ;BONUS?\r
+       BNE     ATSENT          ;NO, PRINT IT\r
+       LDAB    D,SWT+2         ;ELSE CHECK BONUS SWITCHES\r
+       ANDB    I,3\r
+       BEQ     ATRST           ;NO BONUS, RESTART MESSAGES NOW\r
+ATSENT:        STAA    D,TMSG+2\r
+       LDAA    X,6\r
+ATSNT1:        STAA    D,BMSG+2\r
+ATEXIT:        JMP     E,ATLOOP\r
+ATPRCE:        JSR     E,PRICE\r
+       BEQ     ATFP            ;FREE PLAY\r
+       BITB    I,1             ;PRICE 1 COIN?\r
+       BNE     LOMED           ;PER WHAT?\r
+       LDAA    I,M.2C-MTBL\r
+       BRA     ATSENT\r
+LOMED: LDAA    I,M.1C-MTBL\r
+       TST     E,PRICEH\r
+       BMI     ATSENT\r
+       LDAA    I,M.2P-MTBL\r
+       STAA    D,TMSG+2\r
+       LDAA    I,M.PC-MTBL\r
+       BRA     ATSNT1\r
+MDTBL: .BYTE   M.HR-MTBL,INST-MTBL,M.CF-MTBL,M.HT-MTBL,M.BX-MTBL,M.HR-MTBL\r
+       .BYTE   M.SY-MTBL,M.BE-MTBL,M.PP-MTBL,M.PG-MTBL,M.BH-MTBL\r
+\r
+       .SBTTL  CAR MOTION\r
+CARMOV:        LDAA    X,CHPOS\r
+       STAA    D,L\r
+       LDAA    X,CVPOS\r
+       CMPA    I,66            ;ROOM FOR HIGH WHEELY\r
+       BLE     HIWLRT          ;YES, CONTINUE\r
+       LDAB    X,STAT\r
+       ANDB    I,34\r
+       CMPB    I,14            ;IS CAR IN HIGH WHEELY\r
+       BNE     HIWLRT          ;NO, CONTINUE\r
+       LDAA    I,66            ;KEEP AWAY FROM RAIL\r
+HIWLRT:        ADDA    I,11\r
+       STAA    D,K\r
+       LDX     I,TPOS0\r
+       LDAB    D,CARNO\r
+       BEQ     1$\r
+       LDX     I,TPOS2\r
+1$:    LDAB    I,74            ;STRIP NUMBER X 4\r
+VRLOOP:        LDAA    D,K\r
+       SBA                     ;IS CAR ANYWHERE IN THIS STRIP\r
+       BMI     GDBND           ;IF BELOW JUST POINT TO GUARDBAND\r
+       CMPA    I,31\r
+       BGT     GDBND           ;IF ABOVE POINT TO GUARD BAND\r
+       LDAA    D,K             ;GET BACK CAR POSN.\r
+       SUBA    I,37            ;ADJUST FOR NATIVE POSITION OF CAR\r
+VRSTOR:        PSHA                    ;SAVE VERT DISP.\r
+       LDAA    D,L             ;GET CARS HORIZ. DISP.\r
+GBSTOR:        STAA    X,0\r
+       LSRA\r
+       LSRA\r
+       LSRA\r
+       LSRA\r
+       STAA    X,1\r
+       PULA                    ;GET VERT DISP. BACK.\r
+       STAA    X,2\r
+       LSRA\r
+       LSRA\r
+       LSRA\r
+       LSRA\r
+       STAA    X,3\r
+       INX\r
+       INX\r
+       INX\r
+       INX\r
+       SUBB    I,4\r
+       BPL     VRLOOP\r
+       LDX     D,CARPTR        ;RESTORE INDEX REG\r
+       RTS\r
+GDBND: CMPB    I,50            ;TOP NATIVE CAR STRIP\r
+       BGT     STRPH1          ;STRIP IS ABOVE CAR\r
+       CMPB    I,20            ;BOTTOM NATIVE CAR STRIP\r
+       BLT     STRPLO          ;STRIP IS BELOW CAR\r
+NOROOM:        TBA\r
+       SUBA    I,41            ;POINT TO WHITE ABOVE CAR.\r
+       BRA     VRSTOR\r
+STRPH1:        LDAA    D,K             ;VERT POSN\r
+       CMPA    I,57            ;BOTTOM OF BANNER\r
+       BGT     NOROOM          ;NO ROOM FOR TOP BANNER.\r
+BANNER:        LDAA    I,8.\r
+       PSHA\r
+       BRA     GBSTOR\r
+STRPLO:        TST     E,TREE          ;CHECK FOR ATTRACT MODE.\r
+       BEQ     BANNER          ;IF SO SHOW BOTTOM BANNER.\r
+       LDAA    D,K             ;ELSE CHECK VISIBILITY OF TOP BANNER\r
+       CMPA    I,57\r
+       BLE     NOROOM          ;IF SEEN ON TOP, LEAVE BOTTOM ALONE.\r
+       LDAA    I,-50           ;ELSE SHOW TOP IN BOTTOM.\r
+       PSHA\r
+       LDAA    I,8.\r
+       BRA     GBSTOR\r
+CKS14: .BYTE   247\r
+\r
+       .SBTTL  HORIZ. MOTION\r
+HMOV:  LDAB    X,VEL\r
+       CLRA\r
+       ASLB\r
+       ROLA\r
+       ASLB\r
+       ROLA\r
+       ASLB\r
+       ROLA\r
+       ASLB\r
+       ROLA\r
+       STAA    X,DLTARP\r
+       ADDB    X,RODPOS+1\r
+       ADCA    X,RODPOS\r
+       STAB    X,RODPOS+1\r
+       STAA    X,RODPOS\r
+       LDAB    X,DIST\r
+       ADCB    I,0\r
+       STAB    X,DIST\r
+       ANDA    I,340\r
+       LSRB\r
+       ANDB    I,37\r
+       STAB    D,K\r
+       ORAA    D,K\r
+       RORA\r
+       RORA\r
+       RORA\r
+       RORA\r
+       RORA\r
+       STAA    X,CRUDST\r
+       LDAB    X,VEL\r
+       LSRB\r
+       LSRB\r
+       LSRB\r
+       LSRB\r
+       ABA\r
+       COMA                    ;NEGATIVE TO MOVE RIGHT.\r
+       STAA    X,CHPOS\r
+       RTS\r
+\r
+       .SBTTL  VERT. MOTION\r
+VMOV:  LDAA    X,STW\r
+       ASRA\r
+       STAA    D,K\r
+       CLRA\r
+       LDAB    X,DLTARP\r
+       BEQ     ADCVP\r
+RMLP:  ADDA    D,K             ;DLTARP*STW/2\r
+       DECB\r
+       BNE     RMLP\r
+       ASRA                    ;ORIGINAL SPEED***\r
+       RORB\r
+       ASRA\r
+       RORB\r
+       ASRA\r
+       RORB\r
+       ASRA\r
+       RORB\r
+ADCVP: ADDB    X,CVPOS+1       ;ADD TO VERT POSN.\r
+       ADCA    X,CVPOS         ;DOUBLE PRECISION\r
+       PSHA\r
+       LDAA    X,SOUND1\r
+       ANDA    I,277\r
+       STAA    X,SOUND1\r
+       PULA\r
+       CMPA    I,15\r
+       BGE     1$\r
+       BSR     FRICT\r
+       LDAA    I,15\r
+       CLRB                    ;LOWER FENCE\r
+1$:    CMPA    I,77\r
+       BLE     2$\r
+       BSR     FRICT\r
+       LDAA    I,77            ;UPPER FENCE\r
+       LDAB    I,377\r
+2$:    STAA    X,CVPOS\r
+       STAB    X,CVPOS+1\r
+       RTS\r
+\r
+FRICT: LDAB    X,CRUDST\r
+       CMPB    I,FINISH\r
+       BHI     2$\r
+       LDAB    X,SOUND1\r
+       ORAB    I,100\r
+       STAB    X,SOUND1        ;TURN ON SCREECH\r
+       CMPA    I,40            ;A HAS VERT POSN\r
+       LDAB    X,TSTW          ;SET N CLEAR V LEAVE C\r
+       BCS     5$              ;IF A<40 CHECK PLUS\r
+       CMPB    I,10\r
+       BLE     4$\r
+       LDAB    I,10\r
+4$:    STAB    X,TSTW\r
+       LDAB    X,ERPM\r
+       SUBB    I,20            ;SLOW HIM DOWN\r
+       BCC     1$\r
+       LDAB    I,10            ;LEAVE SOME STEERAGE\r
+1$:    STAB    X,ERPM\r
+2$:    RTS\r
+5$:    CMPB    I,-10\r
+       BGE     4$\r
+       LDAB    I,-10\r
+       BRA     4$\r
+       .SBTTL  ROAD MOTION\r
+RODMOV:        LDAA    X,RODPOS\r
+       LDX     I,RPOS1\r
+       LDAB    D,CARNO\r
+       BNE     S,+5\r
+       LDX     I,RPOS3\r
+       BSR     STR\r
+       ADDA    I,20            ;OFFSET RAILS\r
+       LDX     I,RPOS2\r
+       LDAB    D,CARNO\r
+       BNE     S,+5\r
+       LDX     I,RPOS4\r
+       BSR     STR\r
+       LDX     D,CARPTR\r
+       RTS\r
+\r
+STR:   TAB\r
+       LSRB\r
+       LSRB\r
+       LSRB\r
+       LSRB\r
+       STAA    X,0\r
+       STAB    X,1\r
+       STAA    X,4\r
+       STAB    X,5\r
+       STAA    X,10\r
+       STAB    X,11\r
+       STAA    X,14\r
+       STAB    X,15\r
+       RTS\r
+       .PAGE\r
+       .SBTTL  V-BLANKING\r
+BTDCVT:        LDAB    I,-1            ;CONVERTS BINARY (A) TO DECIMAL (A&B)\r
+1$:    INCB\r
+       SUBA    I,100.\r
+       BCC     1$              ;'BLO', AFTER SUBA CARRY=BORROW\r
+       ADDA    I,100.          ;RESTORATIVE DIVISION, WORK ON IT ***\r
+       PSHB\r
+       LDAB    I,360           ;START 1 OFF\r
+2$:    ADDB    I,20            ;10 HEX\r
+       SUBA    I,10.\r
+       BCC     2$\r
+       ADDA    I,10.\r
+       ABA\r
+       TAB\r
+       PULA\r
+       RTS\r
+DET:   CMPA    I,152.\r
+       BCC     DETRET\r
+       BSR     BTDCVT\r
+       PSHB\r
+       LDAB    I,40\r
+       BSR     DNUM1\r
+       PULA\r
+       BSR     DNUM\r
+       STAA    X,0\r
+       DEX\r
+       LDAA    I,116\r
+       ABA\r
+       STAA    X,0\r
+DETRET:        RTS\r
+DNUM:  PSHA\r
+       LSRA\r
+       LSRA\r
+       LSRA\r
+       LSRA\r
+       ABA\r
+       STAA    X,0\r
+       PULA\r
+       INX\r
+DNUM1: ANDA    I,17\r
+       ABA\r
+       STAA    X,0\r
+       INX\r
+       RTS\r
+VBRTN: CLR     E,FRFLG\r
+       LDX     I,PLAY+230\r
+       LDAA    D,ET\r
+       BSR     DET             ;CONVERT TO DECIMAL AND DISPLAY\r
+       LDX     I,PLAY+20\r
+       LDAA    D,RECLOW        ;RECORD LOW\r
+       BSR     DET\r
+1$:    LDX     I,PLAY+50\r
+       LDAA    D,ET+2\r
+       BSR     DET\r
+       LDX     I,PLAY+34\r
+       LDAA    D,RECLOW+2\r
+       BSR     DET\r
+2$:    LDX     I,STAMP1-21\r
+       LDAA    D,PICT2\r
+       BEQ     STCR2           ;GET RID OF W'S\r
+       STAA    X,20\r
+       LDAA    D,PICT2+1\r
+       STAA    X,21\r
+       LDAA    D,PICT2+2\r
+       STAA    X,22\r
+       EORA    I,321           ;D1 WHEELY PIECE\r
+       BITA    I,277           ;IN EITHER FORM\r
+       BNE     3$              ;IF NOT, MAKE WHITE\r
+       ORAA    I,233           ;ELSE MAKE FRONT WHEEL TO MATCH\r
+       BRA     4$\r
+3$:    LDAA    I,WHITE\r
+4$:    STAA    X,2\r
+STCR2: LDAA    D,PICT1\r
+       BEQ     STXM\r
+       STAA    X,200\r
+       LDAA    D,PICT1+1\r
+       STAA    X,201\r
+       LDAA    D,PICT1+2\r
+       STAA    X,202\r
+       EORA    I,321           \r
+       BITA    I,277\r
+       BNE     1$\r
+       ORAA    I,233\r
+       BRA     2$\r
+1$:    LDAA    I,WHITE         ;NO, JUST BLANK IT\r
+2$:    STAA    X,162\r
+STXM:  LDAA    D,TREE\r
+       LDX     I,XMTREE\r
+TRLOOP:        LDAB    I,BLACK\r
+       ASLA\r
+       BCC     S,+4\r
+       LDAB    I,BALL\r
+       STAB    X,0\r
+       INX\r
+       CPX     I,XMTREE+6\r
+       BNE     TRLOOP\r
+       JSR     E,VBEXT         ;ANY EXTRA VERT BLK TASKS.\r
+       LDX     D,TIME\r
+       INX                     ;DO A D.P. INCREMENT.\r
+       STX     D,TIME\r
+VBRET: RTS\r
+\r
+       .SBTTL  INTERRUPT\r
+INTEN: TSX\r
+       LDAA    X,5             ;CHECK PCH.\r
+       CMPA    I,20            ;IN PROGRAM AREA?\r
+       BCC     2$              ; 'BHS', OK SO FAR.\r
+1$:    SWI\r
+2$:    CMPA    I,37\r
+       BHI     1$              ;NO, A BOMB-OUT\r
+       INC     E,FRFLG\r
+       BMI     1$              ;1/2 SEC. WITHOUT V-BLANKING!\r
+       LDAB    E,LTEST         ;CHECK WHO WOKE US UP\r
+       CMPB    I,17            ;0F HEX\r
+       BNE     S,+5\r
+       JSR     E,VBRTN         ;IF WE ARE IN VBLANKING\r
+       BSR     RSTRG\r
+       JSR     E,COINS\r
+       BSR     RSWT\r
+       BSR     SNDAVG\r
+       RTI\r
+\r
+\r
+       .SBTTL  READ SWITCHES\r
+RSWT:  LDX     I,ACEL1+7\r
+       LDAA    I,377\r
+       TAB\r
+       SEC\r
+RSLOOP:        RORA\r
+       RORB\r
+       ANDA    X,0\r
+       ANDB    X,10\r
+       DEX\r
+       CPX     I,ACEL1-1\r
+       BNE     RSLOOP\r
+       COMA\r
+       COMB\r
+       STAA    D,SWT+2\r
+       STAB    D,SWT\r
+       RTS\r
+\r
+       .SBTTL  READ STEERING\r
+RSTRG: LDAA    E,STRG          ;GET NEW STEERING WD.\r
+       STAA    D,M             ;SAVE FOR LATER.\r
+       EORA    D,OSTRG         ;SEE WHAT CHANGED\r
+       BEQ     SDONE           ;IF NOTHING CHANGED, JUST GO BACK.\r
+       TAB\r
+       ASLA\r
+       ANDA    I,373           ;STOP CARRIES FROM RIGHT TO LEFT.\r
+       ABA                     ;THIS IS AN OR, IF ONLY ONE BIT CHANGED.\r
+       LDAB    D,M\r
+       ASLB\r
+       EORB    D,OSTRG\r
+       BITA    I,2             ;SEE IF WHEEL 1 CHANGED.\r
+       BEQ     HIWHL           ;IF NOT, TRY WHEEL 2.\r
+       PSHA\r
+       LDAA    D,TSTW+2\r
+       BITB    I,2             ;CHECK FORWARD/BACKWARD.\r
+       BEQ     INCSW1\r
+DSTW1: DECA\r
+       CMPA    I,-40\r
+       BGT     S,+7\r
+INCSW1:        INCA\r
+       CMPA    I,40\r
+       BGT     DSTW1           ;SOFTWARE STOPS FOR STEERING\r
+       STAA    D,TSTW+2\r
+       PULA\r
+HIWHL: BITA    I,10\r
+       BEQ     SDONE\r
+       LDAA    D,TSTW\r
+       BITB    I,10\r
+       BEQ     INCSW2\r
+DSTW2: DECA\r
+       CMPA    I,-40\r
+       BGT     S,+7\r
+INCSW2:        INCA\r
+       CMPA    I,40\r
+       BGT     DSTW2\r
+       STAA    D,TSTW\r
+SDONE: LDAA    D,M\r
+       STAA    D,OSTRG\r
+       RTS\r
+CKS16: .BYTE   330\r
+\r
+       .SBTTL  MOTOR SOUNDS\r
+SNDAVG:        LDAA    D,SAVG\r
+       INCA\r
+       ANDA    I,7\r
+       STAA    D,SAVG\r
+       TAB\r
+       TST     E,GEAR+2        ;NO AVERAGING IN NEUTRAL\r
+       BNE     S,+3\r
+       CLRA\r
+       TST     E,GEAR\r
+       BNE     S,+3\r
+       CLRB\r
+       ADDB    D,ERPM\r
+       BCC     S,+3            ;IF WE DIDN'T WRAP, JUST OUTPUT.\r
+       COMB                    ;ELSE SET BACK TO HIGHEST RPM.\r
+       ADDA    D,ERPM+2\r
+       BCC     S,+3\r
+       COMA\r
+       LDX     I,MSPD1\r
+       LSRA                    ;SHIFT OUT BOTTOM BITS\r
+       LSRA\r
+       LSRA\r
+       LSRB\r
+       LSRB\r
+       LSRB\r
+       ORAA    D,SOUND1+2      ;ADD SOUNDS FOR THIS LATCH.\r
+       ORAB    D,SOUND1\r
+       EORA    I,77            ;SOME ARE ASSERTED LOW\r
+       EORB    I,77\r
+OSL:   STAA    X,0             ;BOTTOM BIT GOES TO LATCH\r
+       LSRA\r
+       STAB    X,MSPD2-MSPD1   ;DISPLACE TO SECOND SET OF LATCHES\r
+       LSRB\r
+       INX\r
+       CPX     I,MSPD1+8.\r
+       BEQ     SNDS2\r
+       CPX     I,MSPD1+16.\r
+       BNE     OSL\r
+       RTS\r
+SNDS2: LDAA    D,DRIVER+2\r
+       COMA\r
+       ANDA    I,200\r
+       ORAA    D,SOUND2+2\r
+       LDAB    D,DRIVER\r
+       COMB\r
+       ANDB    I,200\r
+       ORAB    D,SOUND2\r
+       EORA    I,107\r
+       EORB    I,127\r
+       BRA     OSL\r
+\r
+       .SBTTL  ENGINE\r
+CLUTCH:        PSHA\r
+       LDAB    X,LVEL\r
+       SBA\r
+       RORA\r
+       STAA    X,MSMTCH\r
+       BMI     SLODWN          \r
+       CMPA    I,4\r
+       BLS     CLEAN\r
+       TBA\r
+       LDAB    X,GEAR\r
+       NEGB\r
+       ASLB\r
+       ADDB    X,ERPM          ;SUBTRACT TWICE GEAR # FROM RPM\r
+       BCS     S,+3            ;IF RESULT >= 0\r
+       CLRB                    ;ELSE B:=0\r
+       STAB    X,ERPM\r
+       INCA\r
+       BRA     CHRET\r
+SLODWN:        CMPA    I,373           ;SMALL NEG #\r
+       BHI     CLEAN\r
+       TBA\r
+       LDAB    X,GEAR\r
+       ASLB\r
+       ADDB    X,ERPM\r
+       BCC     S,+4            ;IF NO WRAP\r
+       LDAB    I,376           ;ELSE LIMIT\r
+       STAB    X,ERPM\r
+       TSTA\r
+       BEQ     CHRET\r
+       DECA\r
+CHRET: INS                     ;THROW AWAY PROP. NEW VEL.\r
+       RTS\r
+CLEAN: PULA                    ;REGEN. NEW VEL\r
+       RTS\r
+\r
+DOWN:  ADDB    I,-4\r
+       BCS     S,+3            ;IF A WAS > = 4\r
+       CLRB                    ;IF A WRAPPED JUST NOW\r
+       BRA     SPLST\r
+\r
+D1:    LDAA    I,2             ;RESET LOAD\r
+       STAA    X,LOAD\r
+       TSTB\r
+       BEQ     SPLST\r
+       DECB\r
+       BRA     SPLST\r
+ENGINE:        LDAB    X,ERPM\r
+       LDAA    X,GEAR  \r
+       BNE     INGR\r
+       TST     X,STAT\r
+       BMI     DOWN\r
+       ORAB    I,2\r
+       LDAA    D,TIME+1\r
+       BITA    I,3             ;GIVE PLAYER A CHANCE\r
+       BNE     SPLST           ;ONLY REV EVERY 4TH FRAME.\r
+       TBA\r
+       LSRA\r
+       ABA\r
+       TAB                     ;EXPONENTIAL REV'S\r
+       BCC     SPLST\r
+       LDAB    I,377\r
+       BRA     SPLST\r
+INGR:  ASLA\r
+       INC     X,LOAD\r
+       CMPA    X,LOAD\r
+       BGT     SPLST\r
+       TST     X,STAT\r
+       BMI     D1\r
+       CMPB    I,POWBND        ;RPM IN POWER BAND\r
+       BLS     1$              ;NO, TOO LOW\r
+       CMPB    I,VLVFLT        ;CHECK TOO HIGH\r
+       BLS     EACEL           ;NOPE, JUST RIGHT\r
+1$:    ORAA    X,LOAD          ;ELSE WAIT\r
+       BITA    I,1             ;FOR 1 MORE FRAME\r
+       BEQ     SPLST\r
+EACEL: LDAA    I,2\r
+       STAA    X,LOAD\r
+       INCB\r
+       BNE     SPLST\r
+       COMB\r
+SPLST: STAB    X,ERPM\r
+       LDAA    X,GEAR\r
+       BNE     INGEAR\r
+       LDAA    X,LVEL          ;JUST PREV. VEL\r
+       BRA     CLRTN           ;COAST IN NEUTRAL\r
+INGEAR:        LSRB\r
+       LSRB\r
+       STAB    D,K\r
+       CLRB\r
+1$:    ADDB    D,K\r
+       DECA\r
+       BNE     1$              ;MULT ERPM * GEAR\r
+       TBA\r
+CLRTN: JSR     E,CLUTCH\r
+       STAA    X,LVEL\r
+       RTS\r
+\r
+       .SBTTL  V-BLANK\r
+VBEXT: LDAA    D,MTXT          ;VALIDATE TEXT PTR\r
+       LSRA                    ;LSB OF MSD IS DON'T CARE\r
+       CMPA    I,MTBL/512.     ;MSG. TABLE IN LAST ROM\r
+       BNE     NXTMSG          ;TRASH, GET NEXT MSG\r
+       LDAA    I,0             ;*** MSG SPEED PATCH\r
+       STAA    D,M\r
+VBELOP:        LDX     D,MTXT          ;ADH OF TABLE+MSG #\r
+       LDAA    X,MTBL&255.     ;GET CHAR, OFFSET IS ADL OF TABLE\r
+       CMPA    I,200           ;CHECK EOL\r
+       BNE     1$\r
+       LDAA    I,WHITE         ;ELSE SUB. BLANK\r
+       DEX                     ;BACK UP PTR\r
+1$:    INX                     ;ON TO NEXT CHAR.\r
+       STX     D,MTXT          ;SAVE SOURCE PTR\r
+       LDAB    I,12            ;INSURANCE, TXT POS\r
+       STAB    D,TXTPOS        ;MUST BE IN PLAYFIELD\r
+       LDX     D,TXTPOS        ;GET DEST PTR\r
+       CMPA    I,30            ;CHECK BLACK BALL\r
+       BNE     2$              ;NO, JUST OUTPUT\r
+       BSR     VBSUB           ;ELSE SUBSTITUTE\r
+2$:    STAA    X,1             ;STORE CHAR\r
+       INX                     ;BUMP PTR\r
+       STX     D,TXTPOS        ;SAVE IT\r
+       LDAB    D,TXTPOS+1      ;GET BOTTOM BYTE\r
+       ANDB    I,17            ;DON'T CARE WHICH STRIP\r
+       CMPB    I,17\r
+       BEQ     NXTMSG\r
+       DEC     E,M\r
+       BPL     VBELOP\r
+       RTS\r
+NXTMSG:        LDX     I,4             ;SCAN 4 MSG'S\r
+1$:    LDAA    X,BMSG-1        ;GET MSG OFFSET\r
+       COMA                    ;CHECK FOR FF\r
+       BNE     2$              ;IF NOT, IS REAL MSG.\r
+       DEX                     ;ELSE KEEP SCANNING\r
+       BNE     1$\r
+       STX     D,MTXT          ;CLEAR PTR\r
+       RTS\r
+2$:    COMA                    ;REGEN. OFFSET\r
+       STAA    D,MTXT+1        ;STORE IN MSG. PTR\r
+       LDAA    I,MTBL/256.     ;HIGH BYTE OF TABLE\r
+       STAA    D,MTXT\r
+       LDAA    I,255.\r
+       STAA    X,BMSG-1        ;ACKNOWLEDGE\r
+       STX     D,TXTPOS        ;SAVE SLOT PTR\r
+       LDAA    I,MPTBL-1/256.\r
+       STAA    D,TXTPOS\r
+       LDX     D,TXTPOS\r
+       LDAA    X,MPTBL-1&255.\r
+       STAA    D,TXTPOS+1\r
+       RTS\r
+VBSUB: CPX     I,5105          ;POSN FOR 'SCORE TO BEAT'\r
+       BEQ     1$\r
+       BSR     HEATNO\r
+       RTS\r
+1$:    BSR     BONCAL\r
+       JSR     BTDCVT          ;CONVERT TO DECIMAL\r
+       TBA                     ;LOW DIGITS ARE OF INTEREST\r
+       LSRB\r
+       LSRB\r
+       LSRB\r
+       LSRB\r
+       STAB    X,1\r
+       INX\r
+       LDAB    I,116\r
+       STAB    X,1\r
+       INX\r
+       ANDA    I,17\r
+       RTS\r
+VBXRET:        RTS\r
+MPTBL: .BYTE   340,260,160,100\r
+HEATNO:        LDAA    D,SWT           ;GET OPTION SWITCHES\r
+       ANDA    I,3             ;MASK\r
+       LSRA                    ;EACH SWITCH ADDS A HEAT\r
+       ADCA    I,3             ;BASIC # OF HEATS\r
+       RTS\r
+BONCAL:        LDAA    D,SWT+2\r
+       ANDA    I,3             ;CHECK BONUS OPTION\r
+       BEQ     BCRET\r
+       TAB\r
+       ASLA\r
+       ASLA\r
+       ABA\r
+       ASLA                    ;10,20, OR 30 HERE\r
+       ADDA    I,39.\r
+BCRET: RTS\r
+       .PAGE\r
+       .SBTTL  AUTO DRIVE\r
+DRIVE: LDAA    X,STAT\r
+;STAT BIT ASSIGNMENTS\r
+;      7    - ACEL     0=ON  1=OFF\r
+;      6    - CHUTE LATCH  0=ON\r
+;      5    -LYLE'S LATCH (OWEN DEFEAT)\r
+;      4    -READ 3-0 AS:BELOW IF 0,PICTURE # IF 1. \r
+;      3,2  - TILT     00=FLAT\r
+;                      01=DIPPED\r
+;                      10=LOW WHEELY\r
+;                      11=HIGH WHEELY\r
+;      1,0  - SMOKE    0=NONE 1,2,3 MORE\r
+       LDAB    X,DRIVER        ;DO WE DRIVE THIS CAR\r
+       BEQ     NDRET           ;NO, PLAYER DOES\r
+       BPL     STAGE           ;+=NON ZERO, HE'S BEING HELD\r
+       LSRB                    ;SAVE BEATEN BIT\r
+       LDAB    D,CASE          ;ATTRACT?\r
+       BEQ     DRAT            ;DRIVE IN ATTRACT\r
+       LDAB    D,TREE          ;LOOK AT LIGHTS\r
+       BITB    I,40            ; GREEN ON,YELLOW OFF?\r
+       BNE     RUN\r
+STAGE: LDAB    I,2             ;SECOND FOR SLUGGISHNESS\r
+       BCS     GOFF            ;IF UNBEATEN\r
+       CLRB\r
+       BRA     GOFF            ;GAS OFF, CHUTE OFF\r
+DRAT:  TST     E,CARNO\r
+       BNE     STAGE           ;CAR 2 STANDS STILL IN ATTRACT\r
+RUN:   LDAB    X,GEAR\r
+       BNE     INGEER\r
+       TST     X,ERPM\r
+       BPL     INGEER\r
+SHIFT: CMPB    I,3\r
+       BHI     GOFF\r
+       INCB\r
+GOFF:  ORAA    I,300           ;GAS OFF, CHUTE OFF, FOR SHIFT\r
+GRET:  PSHB\r
+       LDAB    X,CRUDST\r
+       CMPB    I,FINISH\r
+       PULB                    ;NO EFFECT ON CC\r
+       BLS     1$              ;NOT AT FINISH YET\r
+       CLRB                    ;NEUTRAL\r
+       ORAA    I,200           ;GAS OFF\r
+       ANDA    I,277           ;CHUTE ON\r
+1$:    STAB    X,GEAR\r
+       STAA    X,STAT\r
+       RTS\r
+INGEER:        PSHB                    ;SAVE GEAR\r
+       LDAB    X,ERPM\r
+       CMPB    I,SHFTPT        ;HAVE WE REVVED TO SHIFT POINT\r
+       PULB                    ;GET BACK GEAR, LEAVE COND. CODES ALONE\r
+       BHI     SHIFT\r
+       ANDA    I,177           ;GAS ON\r
+       ORAA    I,100           ;CHUTE OFF\r
+       BRA     GRET\r
+NDRET: LDAB    D,TREE          ;HAS RACE BEGUN?\r
+       BEQ     STAGE           ;NO,HOLD HIM SO MESSAGES ARE SAFE\r
+       LDAB    X,SWT\r
+       ORAA    I,200           ;PRESET ACEL OFF\r
+       ANDB    I,200\r
+       ABA                     ;COPY GAS PEDAL\r
+       LDAB    X,VEL           ;SEE IF HE'S MOVING.\r
+       BNE     STRAN           ;IF SO LET STEERING BE.\r
+       ANDA    I,337           ;CLEAR LYLE LATCH\r
+       STAB    X,TSTW          ;ELSE CLEAR OUT NOISE.\r
+STRAN: LDAB    X,TSTW\r
+       STAB    X,STW\r
+       JSR     E,STWKCK\r
+       CLRB                    ;DEFAULT NEUT.\r
+       PSHA                    ;SAVE STAT\r
+       LDAA    X,SWT           ;GET GEAR SWITCHES\r
+       ANDA    I,170\r
+       BEQ     2$              ;IF NONE ON WE'RE DONE\r
+1$:    INCB                    ;ELSE SCAN DOWN LOOK FOR GEAR\r
+       ASLA\r
+       BPL     1$\r
+2$:    PULA                    ;GET STAT\r
+       CMPB    X,PGEAR         ;PROPOSED GEAR DEBOUNCE\r
+       BEQ     3$              ;SEEN TWICE NOW, USE IT\r
+       STAB    X,PGEAR         ;NOT LIKE LAST ONE, SAVE IT\r
+       LDAB    X,GEAR          ;AND USE OLD GEAR\r
+3$:    TSTB                    ;GOING INTO NEUTRAL?\r
+       BNE     4$              ;NO, PROCEED\r
+       BITA    I,40            ;YES, CHECK LYLE-LATCH\r
+       BEQ     GRET            ;YES, ALLOW IT\r
+       LDAB    X,GEAR\r
+4$:    CMPB    I,4\r
+       BNE     GRET\r
+       ORAA    I,40            ;SET LYLE LATCH\r
+       LDAB    X,ERPM          ;IN FOURTH CHECK REVS\r
+       CMPB    I,RDLIN-2\r
+       BLS     5$              ;NO DANGER LET HIM GO\r
+       ORAA    I,200           ;GAS OFF\r
+5$:    LDAB    I,4             ;GEAR BACK\r
+       BRA     GRET\r
+CKS18: .BYTE   366\r
+       .SBTTL  KICK STEERING\r
+STWKCK:        PSHA\r
+       LDAA    D,TIME+1\r
+       BITA    I,77            ;ONLY EVERY 64 FRAMES\r
+       BNE     STKRET\r
+       LDAB    I,2\r
+       PSHB\r
+       LDAA    X,CRUDST\r
+       LDAB    D,CRUDST\r
+       TST     E,CARNO\r
+       BNE     S,+4\r
+       LDAB    D,CRUDST+2\r
+       CBA\r
+       PULB\r
+       BHI     S,+3\r
+       ASRB\r
+       LDAA    D,POLY\r
+       BNE     S,+3\r
+       COMA\r
+       ASLA\r
+       EORA    D,POLY\r
+       ASLA\r
+       ASLA\r
+       ROL     E,POLY\r
+       LDAA    D,POLY          ;RANDOM #\r
+       BMI     S,+3            ;WHICH DIR. TO KICK.\r
+       NEGB\r
+       ADDB    X,TSTW\r
+       STAB    X,TSTW\r
+STKRET:        PULA\r
+       RTS\r
+\r
+       .SBTTL  PICTURES\r
+PICT:  LDAA    X,STAT          ;1 FIELD OUT OF PHASE ***\r
+       BITA    I,20            ;SPECIAL WHEN LIT.\r
+       BNE     PDECOD          ;'JUST DECODE' SPECIAL.\r
+       BITA    I,3             ;SMOKE?\r
+       BEQ     PDRET\r
+       LDAB    X,SOUND1\r
+       ORAB    I,100           ;TURN ON SCREECH.\r
+       STAB    X,SOUND1        ;(VMOV TURNS IT OFF***)\r
+PDRET: LDAB    X,MSMTCH        ;NO, DO NORMAL ANIMATION.\r
+       CMPB    I,2\r
+       BGT     WHLPCT\r
+       CMPB    I,-4\r
+       BLE     DIPPCT\r
+       BITA    I,14            ;IS CAR FLAT\r
+       BEQ     FLAT\r
+       BITA    I,10            ;IS IT IN WHEELY\r
+       BEQ     S,+4\r
+       SUBA    I,4             ;HIGH>LOW, LOW>DIP\r
+       ANDA    I,373           ;DIP>FLAT\r
+FLAT:  BITA    I,3             ;SMOKE?\r
+       BEQ     DECODE          ;NO SMOKE\r
+       LDAB    D,TIME+1\r
+       BITB    I,3             ;DEC EVERY FOURTH FRAME\r
+       BNE     DECODE\r
+       DECA\r
+DECODE:        STAA    X,STAT\r
+       LDAA    D,TIME+1\r
+       ASLA\r
+       ORAA    D,TIME+1\r
+       ORAA    I,14            ;MASKS SMOKE ON EVEN FRAMES\r
+       ANDA    X,STAT\r
+PDECOD:        ANDA    I,37            ;ISOLATE PICT#\r
+       CMPA    I,8.            ;CHECK WHEELY OR ABOVE\r
+       BMI     1$              ;BELOW LEAVE ALONE\r
+       ADDA    I,4             ;ELSE BYPASS OLD LOW WHEELY\r
+1$:    TAB\r
+       ABA\r
+       ABA                     ;MULT. BY 3\r
+       CLRB\r
+       ADDA    I,PCTBL&255.\r
+       STAA    D,TBLPTR+1\r
+       ADCB    I,PCTBL/256.\r
+       STAB    D,TBLPTR\r
+       LDX     D,TBLPTR\r
+       LDAA    X,0\r
+       STAA    D,K\r
+       LDAA    X,1\r
+       STAA    D,L\r
+       LDAA    X,2\r
+       BSR     SQORND\r
+       LDX     D,CARPTR\r
+       BEQ     2$\r
+       INX\r
+2$:    STAA    X,PICT1+2\r
+       LDAA    D,L\r
+       STAA    X,PICT1+1\r
+       LDAA    D,K\r
+       STAA    X,PICT1\r
+       LDX     D,CARPTR\r
+       RTS\r
+DIPPCT:        BITA    I,10            ;WE'RE GOING TO DIP. WHEELY?\r
+       BEQ     FRFLT           ;NO\r
+       EORA    I,14            ;HIGH>FLAT,LOW>DIP\r
+       BRA     INCSMK\r
+FRFLT: ORAA    I,4             ;DIP IT IF NOT ALREADY\r
+INCSMK:        LDAB    I,1             ;PRESET FOR INCREMENT\r
+       COMA\r
+       EORB    D,TIME+1        ;ODD FRAME NO INC.\r
+       ANDB    I,1             ;GET RID OF TIME TRASH\r
+       BITA    I,3             ;CHECK FOR MAX SMOKE\r
+       BNE     S,+3\r
+       CLRB                    ;MAX ALREADY, NO INC.\r
+       COMA\r
+       ABA\r
+       BRA     DECODE\r
+WHLPCT:        CMPB    I,10\r
+       BLS     SMKON\r
+       CMPB    I,20\r
+       BLS     MLO\r
+       CMPB    I,30\r
+       BLS     ALO\r
+       CMPB    I,40\r
+       BLS     MHI\r
+       BITA    I,10            ;CHECK ALREADY WHEELY\r
+       BNE     S,+8.           ;YES ALREADY\r
+       ORAA    I,10\r
+       ANDA    I,373           ;NO, MAKE IT A LOW ONE\r
+       BRA     INCSMK          ;AND MAKE SMOKE\r
+       BITA    I,4             ;HIGH ALREADY?\r
+       BNE     INCSMK          ;YES, MORE SMOKE\r
+       ORAA    I,4             ;NO, MAKE IT HIGH\r
+       BRA     DECODE          ;BUT NO MORE SMOKE YET\r
+MHI:   TAB\r
+       COMB\r
+       BITB    I,14            ;IS IT HIGH\r
+       BEQ     INCSMK          ;YES, MORE SMOKE\r
+ALO:   BITA    I,14\r
+       BNE     S,+4\r
+       ORAA    I,10            ;FLAT>LOW\r
+MLO:   ANDA    I,373           ;DIP>FLAT, HIGH>LOW\r
+       BRA     INCSMK\r
+SMKON: ANDA    I,363           ;SET FLAT\r
+       BRA     INCSMK\r
+SQORND:        CMPA    I,301\r
+       BNE     SQSPEC          ;RETURN IF FRONT WHEELS NOT NORMAL.\r
+       LDX     D,CARPTR\r
+       TST     X,VEL           ;STOPPED\r
+       BEQ     SQRET           ;YES, LEAVE ROUND\r
+       LDAB    I,10\r
+       BITB    X,RODPOS\r
+       BEQ     SQRET\r
+       LDAB    I,300           ;PLAIN REAR HALF\r
+       CMPB    D,L\r
+       BNE     S,+6            ;IF SMOKE, LEAVE REAR ALONE.\r
+       LDAA    I,302           ;ELSE MAKE SQUARE.\r
+       STAA    D,L\r
+       LDAA    I,303\r
+SQRET: RTS\r
+SQSPEC:        LDAB    D,TIME+1        ;THIS RTN. FLASHES SPECIALS\r
+       BITB    I,4\r
+       BNE     SQRET\r
+       LDAA    D,L\r
+       EORA    I,100           ;INVERT PICT\r
+       STAA    D,L\r
+       LDAA    D,K\r
+       CMPA    I,WHITE\r
+       BEQ     S,+6            ;DON'T INVERT WHITE.\r
+       EORA    I,100\r
+       STAA    D,K\r
+       LDAA    X,2\r
+       EORA    I,100\r
+       RTS\r
+PCTBL: .BYTE   WHITE,300,301   ;FLAT\r
+       .BYTE   WHITE,310,301   ;SMOKE 1\r
+       .BYTE   313,311,301     ;SMOKE 2\r
+       .BYTE   314,311,301     ;SMOKE 3\r
+       .BYTE   WHITE,327,330   ;DIPPED\r
+       .BYTE   WHITE,337,330\r
+       .BYTE   213,335,330\r
+       .BYTE   214,335,330\r
+       .BYTE   WHITE,304,305   ;OLD LOW WHEELY***\r
+       .BYTE   WHITE,334,305\r
+       .BYTE   313,312,305\r
+       .BYTE   314,312,305\r
+       .BYTE   WHITE,306,307   ;LOW WHEELY\r
+       .BYTE   WHITE,332,307\r
+       .BYTE   336,332,307\r
+       .BYTE   214,332,307\r
+       .BYTE   WHITE,320,321   ;HIGH WHEELY\r
+       .BYTE   WHITE,222,321\r
+       .BYTE   236,222,321\r
+       .BYTE   314,222,321\r
+       .BYTE   WHITE,316,301   ;BLOW-UP, STAGE 1\r
+       .BYTE   WHITE,317,301   ;STAGE 2\r
+       .BYTE   WHITE,315,301   ;STAGE 3\r
+       .BYTE   324,323,301     ;CHUTE 1\r
+       .BYTE   325,323,301     ;CHUTE 2\r
+       .BYTE   326,323,301     ;CHUTE 3\r
+       .BYTE   331,323,301     ;LIMP CHUTE\r
+\r
+       .SBTTL  START BUTTONS\r
+INST1: LDAA    I,M.GL-MTBL\r
+       LDAB    I,M.WF-MTBL\r
+       LDX     D,TIME\r
+       DEX                     ;CHEAP CHECK FOR FRAME 1\r
+       BEQ     2$\r
+       CPX     I,440           ;END OF 'WAIT FOR GREEN LIGHT'\r
+       BNE     3$\r
+1$:    LDAA    I,3             ;START THE TREE\r
+       STAA    D,TREE\r
+       CLRA\r
+       INC     E,CASE          ;CASE=2, START THE TREE\r
+       CLRB\r
+       STAA    D,ET\r
+       STAA    D,ET+2\r
+2$:    STAB    D,TMSG\r
+       STAB    D,TMSG+2\r
+       STAA    D,BMSG\r
+       STAA    D,BMSG+2\r
+3$:    TST     E,HEAT\r
+       BNE     4$\r
+       JMP     CKSTSW\r
+4$:    JMP     WAIT\r
+\r
+\r
+STARTQ:        LDAA    D,CREDIT\r
+       BNE     2$              ;HAS MONEY, PROCEED, ELSE TURN LAMP OFF\r
+1$:    ANDA    I,200           ;ISOLATE FLASHING BIT\r
+       LDAB    X,SOUND2\r
+       ANDB    I,30            ;ALLOW MOTOR ON,SOUND ON\r
+       ABA\r
+       STAA    X,SOUND2\r
+       RTS\r
+2$:    LDAA    X,DRIVER        ;WHO IS DRIVING\r
+       BPL     1$              ;ALREADY DRIVING\r
+       ASLB                    ;START SWITCH INTO CARRY\r
+       ROL     X,STSW          ;INTO DEBOUNCE WD\r
+       LDAB    X,STSW\r
+       COMB                    ;ALL ONES BECOMES 0\r
+       BEQ     3$              ;BUTTON DOWN\r
+       LDAA    D,TIME+1        ;ELSE FLASH LAMP\r
+       ASLA                    ;BY SHIFTING BIT 3\r
+       ASLA                    ;OF TIME (4 HZ) INTO\r
+       ASLA                    ;SIGN OF ACCA\r
+       ASLA\r
+       BRA     1$              ;AND EXITING\r
+3$:    CLR     X,DRIVER        ;PUT PLAYER IN COMMAND\r
+       JSR     CHARGE          ;TAKE HIS MONEY\r
+       LDAA    D,DRIVER\r
+       ORAA    D,DRIVER+2\r
+       BPL     1$              ;NOT FIRST PLAYER, RETURN\r
+RSTART:        CLRA\r
+       STAA    D,SOUND1\r
+       STAA    D,SOUND1+2\r
+       INCA                    ;MAKE A ONE \r
+       STAA    D,CASE          ;FOR CASE OF TIMER\r
+       LDAA    I,30            ;MOTOR ON, SOUND ON\r
+       STAA    D,SOUND2\r
+       STAA    D,SOUND2+2\r
+       JSR     INIT            ;INITIALIZE A BUNCH OF STUFF \r
+       TST     X,DRIVER        ;INIT LEAVES X=0\r
+       BMI     1$\r
+       CLR     X,DRIVER        ;MAKE SURE HOLD FLAG IS CLEAR\r
+1$:    TST     X,DRIVER+2\r
+       BMI     2$\r
+       CLR     X,DRIVER+2\r
+2$:    RTS\r
+CKS1A: .BYTE   300\r
+\f      .SBTTL  BLOW ENGINE\r
+BLOW:  PSHA\r
+       LDAA    X,SOUND1\r
+       ANDA    I,337           ;TURN OFF BLOW-UP, IF ON\r
+       STAA    X,SOUND1\r
+       LDAA    X,STAT\r
+       PSHA\r
+       ANDA    I,37            ;ISOLATE PICT\r
+       CMPA    I,BLO1          ;ALREADY BLOWING\r
+       BMI     NBYET           ;NOT YET\r
+       CMPA    I,BLO1+2\r
+       BMI     BLSEQ\r
+       BGT     NBYET\r
+       DEC     X,BLTIM\r
+       BPL     BLORET\r
+       LDAB    X,BLTIM\r
+       CMPB    I,-100\r
+       BGT     BLORET\r
+       CLR     X,REVINT\r
+       CLR     X,REVINT+1\r
+       CLR     X,TMSG\r
+       CLR     X,DRIVER\r
+       CLRA\r
+       BRA     BLORET\r
+BLSEQ: DEC     X,BLTIM         ;BUMP TIMER\r
+       BNE     BLORET          ;NO TIMEOUT?  RETURN\r
+       INCA                    ;NEXT PICT.\r
+BLSRET:        LDAB    I,16\r
+       STAB    X,BLTIM         ;RESET TIMER\r
+BLORET:        PULB                    ;GET STAT BACK\r
+       ANDB    I,340           ;THROW AWAY OLD PICT.\r
+       ABA                     ;SPLICE IN NEW PICT.\r
+       STAA    X,STAT\r
+       CLR     X,ERPM          ;NO REV'S WITH A ROD THROWN\r
+       CLR     X,LVEL          ;NO SPEED EITHER\r
+       PULA\r
+       RTS\r
+NBYET: LDAA    I,BLO1\r
+       LDAB    X,SOUND1\r
+       ORAB    I,40            ;TURN ON BLOW-UP SOUND\r
+       STAB    X,SOUND1\r
+       INC     X,DRIVER                ;SET +, NON ZERO TO HOLD\r
+       LDAB    I,BEMSG-MTBL            ;OUTPUT BLOWN ENGINE MESSAGE.\r
+       STAB    X,TMSG\r
+       BRA     BLSRET\r
+\r
+       .SBTTL  XMAS TREE\r
+XMTRTN:        LDAB    D,TREE\r
+       LDX     D,CARPTR        ;DO TREE ONCE PER FRAME\r
+       BEQ     XMRET           ;AT END OF FRAME, NOT MIDDLE\r
+       LDAA    D,TIME+1\r
+       ANDA    I,37            ;32 TICKS, ABOUT HALF A SECOND\r
+       BEQ     XMTDN           \r
+       EORA    I,7             ;MATCHES 7 TICKS PAST ABOVE\r
+       BNE     XMRET\r
+       LDAA    D,SOUND2\r
+       ANDA    I,337           ;TURN OFF LO TONE\r
+       STAA    D,SOUND2\r
+       LDAA    D,SOUND2+2\r
+       ANDA    I,337           ;TURN OFF HI TONE\r
+       STAA    D,SOUND2+2\r
+       ASLB\r
+       ANDB    D,TREE          ;TURNS LAST LIGHT OFF\r
+       BITB    I,37            ;CHECK FOR ALL YELLOWS OUT\r
+       BEQ     XMEXIT          ;YES, DONE WITH THE TREE\r
+XMSRET:        STAB    D,TREE  \r
+XMRET: JMP     E,WAIT\r
+XMTDN: ASLB\r
+       ORAB    D,TREE          ;LIGHT UP NEXT ONE DOWN\r
+       LDAA    D,SOUND2\r
+       ORAA    I,40\r
+       STAA    D,SOUND2        ;TURN ON HI TONE\r
+       BITB    I,40            ;GREEN ONE?\r
+       BEQ     XMSRET          ;NO, JUST LIGHT IT UP\r
+       LDAA    D,SOUND2+2\r
+       ORAA    I,40\r
+       STAA    D,SOUND2+2      ;TURN ON LO TONE TOO.\r
+       BSR     XMRDLT          ;CHECK IF CAR 2 JUMPED\r
+       LDX     I,0\r
+       BSR     XMRDLT          ;CHECK IF CAR 0 JUMPED\r
+       BRA     XMSRET\r
+XMEXIT:        INC     E,CASE          ;XMTRTN>WAIT\r
+       BRA     XMSRET\r
+XMRDLT:        LDAA    X,RODPOS        ;SEE IF HE JUMPED\r
+       BNE     CHEAT\r
+       LDAA    X,RODPOS+1\r
+       BEQ     XMRDRT          ;HE'S HONEST \r
+CHEAT: CLR     X,RODPOS        ;ELSE SET HIM BACK\r
+       CLR     X,RODPOS+1\r
+       CLR     X,DIST\r
+       INC     X,DRIVER                ;SET +, NON ZERO TO HOLD\r
+       LDAA    X,STAT\r
+       ORAA    I,200\r
+       STAA    X,STAT          ;SHUT OFF GAS\r
+       LDAA    I,M.P-MTBL\r
+       STAA    X,TMSG          ;TELL HIM\r
+       ORAB    I,100           ;AND THE REST.\r
+       CLR     X,LVEL          ;STOP HIM\r
+       CLR     X,ERPM          ;AND HIS ENGINE\r
+       LDAA    I,120.          ;FOR 1 SECOND,\r
+       STAA    X,PENTIM\r
+XMRDRT:        RTS\r
+PNLTY: TST     X,PENTIM\r
+       BEQ     PENRET\r
+       DEC     X,PENTIM\r
+       BNE     PENRET\r
+       CLR     X,DRIVER        ;LET HIM GO\r
+       CLR     X,TMSG          ;LET HIM KNOW\r
+       LDAB    I,40            ;GREEN ALONE\r
+       STAB    D,TREE\r
+PENRET:        RTS\r
+\r
+       .SBTTL  CHUTE SEQUENCE\r
+CHUTE: PSHA\r
+       LDAA    X,STAT\r
+       BITA    I,100           ;CHECK CHUTE LATCH\r
+       BNE     CHABT           ;1=OFF, JUST RETURN\r
+       ANDA    I,37            ;ISOLATE PICT.\r
+       CMPA    I,CHP1          ;HAS SEQ. STARTED\r
+       BMI     NCYET\r
+       CMPA    I,CHP1+3\r
+       BGT     NCYET\r
+       DEC     X,CHUTIM\r
+       LDAB    X,CHUTIM\r
+       BMI     CHSTAB\r
+CHPSEL:        LDAA    I,CHP1          ;DEFAULT OF FIRST STAGE\r
+       CMPB    I,20.           ;TIME TO CHANGE\r
+       BGT     CHOUT           ;NO, LEAVE FIRST\r
+       INCA                    ;YES, TRY SECOND\r
+       PSHB\r
+       LDAB    X,SOUND1\r
+       ANDB    I,337\r
+       STAB    X,SOUND1        ;TURN OFF CRASH\r
+       LDAB    X,SOUND2\r
+       ORAB    I,2\r
+       STAB    X,SOUND2        ;AND DAMP IT NOW.\r
+       PULB\r
+       CMPB    I,10.\r
+       BGT     CHOUT           ;STICK WITH SECOND\r
+       INCA                    ;MAKE IT THIRD\r
+CHOUT: LDAB    X,STAT\r
+       ANDB    I,340\r
+       ABA\r
+       STAA    X,STAT\r
+CHABT: PULA\r
+       RTS\r
+NCYET: BITA    I,20            ;OTHER SPECIAL IN PROGRESS?\r
+       BNE     CHABT           ;YES, JUST RETURN\r
+       LDAB    X,SOUND1\r
+       ORAB    I,40            ;START 'CRASH'\r
+       STAB    X,SOUND1\r
+       LDAB    I,30.   \r
+       STAB    X,CHUTIM        ;START HALF-SECOND TIMER\r
+       BRA     CHPSEL          ;DO PICTURE SELECTION.\r
+CHSTAB:        LDAA    I,CHP1+3        ;PREPARE TO RETURN LIMP CHUTE\r
+       LDAB    X,LVEL\r
+       BEQ     CHLRTN          ;RETURN LIMP IF STOPPED\r
+       TBA\r
+       LSRA\r
+       LSRA\r
+       LSRA\r
+       LSRA\r
+       BNE     S,+3            ;IF THAT IS TOO SMALL TO NOTICE,\r
+       INCA                    ;JUST USE 1\r
+       NEGA                    ;WE WANT TO REDUCE IT\r
+       ADDA    X,LVEL          \r
+       STAA    X,LVEL\r
+       LDAA    I,CHP1+2        ;SET FULL CHUTE\r
+CHSTRT:        INC     X,CHUTIM                ;KEEP 'EM COMING BACK\r
+       BRA     CHOUT\r
+CHLRTN:        LDAA    I,CHP1+3        ;SET LIMP CHUTE\r
+       BRA     CHSTRT\r
+       .PAGE\r
+       .SBTTL  SCORING AND END CHECK\r
+ENDCHK:        LDAB    D,CARNO         ;DO ONCE PER FRAME\r
+       BEQ     2$              ;AT END\r
+       LDAA    D,TREE\r
+       BITA    I,40            ;GREEN LIGHT ON?\r
+       BEQ     ATCHK           ;NO, CHECK ATTRACT\r
+       LDAA    D,ETCOM         ;COMMON TIMER\r
+       DEC     X,ETDIV-2       ;X SHOULD BE 2 RIGHT NOW\r
+       BPL     1$\r
+       INCA\r
+       STAA    D,ETCOM\r
+       LDAB    I,ETFRCT-1\r
+       STAB    D,ETDIV\r
+1$:    LDX     I,0\r
+       BSR     3$\r
+       LDX     D,CARPTR        ;HAD BETTER BE 2\r
+       BSR     3$\r
+       ORAB    D,STAT\r
+       BITB    I,100           ;BOTH DONE\r
+       BNE     2$\r
+       LDAB    I,4\r
+       STAB    D,CASE\r
+2$:    RTS\r
+3$:    LDAB    X,STAT\r
+       BITB    I,100\r
+       BEQ     2$\r
+       STAA    X,ET\r
+4$:    CMPA    I,HTTIM\r
+       BNE     2$\r
+TIMOUT:        LDAA    I,M.S-MTBL              ;'SLOW POKE'\r
+       STAA    X,TMSG\r
+       LDAB    I,200                   ;GAS OFF, CHUTE ON\r
+       STAB    X,STAT\r
+       CLR     X,GEAR\r
+       LDAA    D,ETCOM\r
+       RTS\r
+ATCHK: LDAA    D,STAT          ;CHECK CAR 0\r
+       ORAA    I,340\r
+       CMPA    I,343+CHP1              ;CHECK FOR LIMP CHUTE\r
+       BNE     1$\r
+       ANDA    I,340\r
+       STAA    D,STAT\r
+       CLRA\r
+       STAA    D,RODPOS\r
+       STAA    D,DIST\r
+       STAA    D,GEAR\r
+       STAA    D,ERPM\r
+       STAA    D,LVEL\r
+       STAA    D,CRUDST\r
+1$:    RTS\r
+\r
+COINS: LDX     I,0\r
+       TST     E,CONSW1        ;- NO COIN, + COIN\r
+       BSR     CONTST\r
+       INX\r
+       TST     E,CONSW2\r
+       BSR     CONTST\r
+       BSR     PRICE\r
+       BNE     1$\r
+       STAB    D,CREDIT        ;ZERO, SO FAR\r
+       BRA     CREDUP          ;GETS BUMPED TO 2\r
+1$:    LDAA    D,COINCT        ;WHAT BID SO FAR\r
+       ANDA    I,3             ;HOLD IT DOWN\r
+       SBA                     ;CHECK PRICE TAG\r
+       BMI     CFINSH          ;NOT ENOUGH MONEY\r
+       STAA    D,COINCT        ;CHARGE HIM\r
+CREDUP:        INC     X,CREDIT-1      ;RING UP SALE (X IS 1)\r
+       LDAA    E,PRICEH        ;LOW BUDGET?\r
+       BMI     CFINSH\r
+       INC     X,CREDIT-1      ;TWO FOR ONE (X IS 1)\r
+CFINSH:        LDAA    I,4             ;NEW, CONSERVATIVE CREDIT LIMIT.\r
+       CMPA    D,CREDIT\r
+       BHI     S,+4\r
+       STAA    D,CREDIT\r
+       RTS\r
+CONTST:        BMI     COIN01\r
+       INC     X,TALY1\r
+       BVC     COIN03\r
+       COM     X,TALY1         ;HOLD AT 128\r
+       BRA     COIN03\r
+COIN01:        LDAA    X,TALY1\r
+       CLR     X,TALY1\r
+       CMPA    I,3\r
+       BLE     COIN03\r
+       INC     E,COINCT\r
+COIN03:        RTS\r
+PRICE: CLRB                    ;STARTING PRICE=0\r
+       SEC                     ;HAVE A1 WAITING\r
+       LDAA    E,PRICEH        ;LDAA IS FASTER, LEAVES CARRY ALONE\r
+       BPL     S,+3            ;SKIP IF OFF\r
+       ROLB                    ;ELSE UP ANTE\r
+       LDAA    E,PRICEL\r
+       BPL     S,+3\r
+       ROLB\r
+       TSTB\r
+       RTS\r
+CKS1C: .BYTE   66\r
+\r
+       .SBTTL MESSAGES\r
+MTBL:  .BYTE   200\r
+M.BX:  .MSG    BEAT-O-F0R\r
+M.BH:  .MSG    -B0NUS-HEAT\r
+M.HT:  .MSG    --O-HEATS\r
+M.PG:  .MSG    --PER-GAME\r
+M.1C:  .MSG    ---1-C0IN\r
+M.2C:  .MSG    --2-C0INS\r
+M.PP:  .MSG    -PER-PLAYER\r
+M.2P:  .MSG    --2-PLAYS\r
+M.PC:  .MSG    --PER-C0IN\r
+M.CF:  .MSG    -CREDIT-F0R\r
+M.1P:  .MSG    -0NE-PLAYER\r
+INST:  .MSG    0VER-REVS-CAN\r
+M.BE:  .MSG    -BL0W-ENGINE\r
+M.HR:  .MSG    HITTING-RAIL\r
+M.SY:  .MSG    -SL0WS-Y0U\r
+M.WF:  .MSG    -WAIT-F0R\r
+M.GL:  .MSG    GREEN-LIGHT\r
+BEMSG: .MSG    ENGINE-BL0WN\r
+M.W:   .MSG    -_-WINNER-_\r
+M.S:   .MSG    -SL0W-P0KE\r
+M.P:   .MSG    T00-S00N\r
+WINNER:        LDAA    D,EHTIM\r
+       BNE     WMDLY\r
+       LDAA    D,ET\r
+       CMPA    D,ET+2\r
+       BHI     WIN1\r
+       BCS     WIN2            ;'BLO'\r
+TOTALS:        LDAA    D,ET\r
+       CMPA    D,RECLOW\r
+       BCC     1$\r
+       STAA    D,RECLOW\r
+1$:    LDAA    D,ET+2\r
+       CMPA    D,RECLOW+2\r
+       BCC     2$\r
+       STAA    D,RECLOW+2\r
+2$:    CLRA                    ;***\r
+       STAA    D,BMSG          ;***\r
+       STAA    D,BMSG+2        ;***\r
+       BRA     WMDLY\r
+WIN1:  LDAA    I,M.W-MTBL\r
+       STAA    D,TMSG+2\r
+       LDAA    D,DRIVER\r
+       ANDA    I,376\r
+       STAA    D,DRIVER\r
+       BRA     TOTALS\r
+WIN2:  LDAA    I,M.W-MTBL\r
+       STAA    D,TMSG\r
+       LDAA    D,DRIVER+2\r
+       ANDA    I,376\r
+       STAA    D,DRIVER+2\r
+       BRA     TOTALS\r
+WMDLY: LDAA    D,TIME+1\r
+       LSRA                    ;DO ONLY EVERY OTHER FRAME\r
+       BCS     WMEXIT\r
+INCEHT:        INC     E,EHTIM\r
+       BVS     HTCNT           ;AT COUNT OF 128, CHECK HEAT #\r
+       BEQ     NXTHT           ;AT 0, START BONUS HEAT\r
+WMEXIT:        JMP     E,WAIT\r
+HTCNT: JSR     E,HEATNO\r
+       INC     E,HEAT\r
+       CMPA    D,HEAT\r
+       BEQ     BONHTQ\r
+       BLS     EOG\r
+NXTHT: JSR     RSTART\r
+       JMP     E,WAIT\r
+BONHTQ:        JSR     E,BONCAL\r
+       BEQ     EOG             ;NO BONUS ALLOWED\r
+       LDAB    D,DRIVER\r
+       BMI     1$\r
+       CMPA    D,RECLOW\r
+       BHI     BONHT\r
+1$:    LDAB    D,DRIVER+2\r
+       BMI     EOG\r
+       CMPA    D,RECLOW+2\r
+       BCS     EOG             ;'BLO'\r
+BONHT: LDAA    I,M.BH-MTBL\r
+       STAA    D,TMSG\r
+       STAA    D,TMSG+2\r
+       BRA     INCEHT          ;KICK EHTIM PAST 128.\r
+EOG:   JMP     E,NPR           ;RESET EVERYTHING BUT MONEY\r
+\r
+       .SBTTL SELF-TEST\r
+TROUT: CLRA                    ;MAKE A ZERO\r
+       LDX     I,128.          ;128 BYTES OF RAM\r
+1$:    STAA    X,177           ;RAM STARTS AT 80 HEX\r
+       DEX\r
+       BNE     1$              ;CLEAR RAM\r
+       LDX     I,200           ;RESET PTR.\r
+       COMA                    ;MAKE BYTE OF ALL ONES\r
+2$:    LDAB    X,177           ;SEE IF LOC IS STILL 0\r
+       BNE     ERROR           ;IF NOT, IS AN ERROR\r
+       STAA    X,177           ;ELSE SET ONES TO CHECK DISTURB\r
+       DEX\r
+       BNE     2$              ;REPEAT FOR WHOLE RAM\r
+       LDAB    I,8.            ;8 BITS TO CHECK DATA SHORTS\r
+3$:    CMPA    D,200           ;MEMORY SHOULD MATCH ACCA\r
+       BNE     ERROR           ;IF NOT, IS ERROR\r
+       LSRA                    ;SHIFT BOTH BYTES\r
+       LSR     X,200           ;X IS ZERO, SO THIS IS "D,200"\r
+       DECB                    ;COUNT BITS\r
+       BPL     3$\r
+       CLRA\r
+       BRA     MEMRPT\r
+ROMTST:        LDX     I,^H1200                ;POINT TO START OF ROM\r
+       CLRB                    ;WORD CNT.\r
+ROMTLP:        CLRA                    ;ZERO INITIAL CKSUM\r
+1$:    ADDA    X,0\r
+       ADDA    X,1             ;ADD IN TWO BYTES\r
+       INX\r
+       INX\r
+       DECB\r
+       BNE     1$              ;REPEAT FOR 256 WDS, 512 BYTES\r
+       SUBA    I,73.           ;RESIDUE MOD 256 MUST BE 73(WHY NOT?)\r
+       STAA    D,0             ;FOR LOOKING AT WITH ANALYZER\r
+       BEQ     MEMRPT\r
+ERROR: LDAA    I,200\r
+MEMRPT:        TXS                     ;SAVE MEM PTR.\r
+       LDX     I,SCRCH1\r
+       ORAA    I,100           ;TURN SOUND ON\r
+       TAB\r
+       EORB    I,200           ;TONE2 IS OPP. OF TONE 1\r
+1$:    STAA    X,0\r
+       STAB    X,16.\r
+       LSRA\r
+       LSRB\r
+       INX\r
+       CBA                     ;ONLY EQUAL WHEN DONE\r
+       BNE     1$\r
+       LDX     I,0\r
+2$:    DEX                     ;PAUSE\r
+       BNE     2$\r
+       STAA    E,TONE1         ;TURN OFF TONES\r
+       STAA    E,TONE2\r
+3$:    DEX                     ;PAUSE\r
+       BNE     3$\r
+       TSX                     ;GET ORIG. MEM PTR\r
+       CPX     I,10000\r
+       BMI     ROMTST          ;IF WE CAME OUT OF RAM\r
+       CPX     I,^H2000        ;END OF ROM?\r
+       BNE     ROMTLP          ;NO, KEEP ON\r
+VIDTST:        CLRB                    ;TO CLEAN POSN\r
+       LDAA    I,350\r
+       LDX     I,PLAY\r
+10$:   STAA    X,0             ;CLEAR PLAY WITH E8'S\r
+       INX\r
+       STAA    X,255.          ;8'S INTO POSN\r
+       BITB    I,3\r
+       BEQ     11$             ;ALLOW THEM TO STAY IN HORIZ LSD.\r
+       CLR     X,255.          ;ELSE CLEAR THEM OUT\r
+11$:   INCB\r
+       BNE     10$\r
+       LDX     I,PLAY\r
+       CLRA                    ;A TRACKS LSB OF X(ALMOST)\r
+1$:    STAA    X,0\r
+       INCA\r
+       INX\r
+       CMPA    I,120\r
+       BMI     1$\r
+       BNE     2$\r
+       ADDA    I,20            ;SKIP EMPTY CHARACTER ROM\r
+2$:    CMPA    I,160           ;STILL DOING CHARACTERS?\r
+       BMI     1$              ;YES, CONTINUE\r
+       LDS     I,PCTBL-1       ;ELSE POINT TO CARS\r
+       LDAA    I,97.\r
+3$:    PULB                    ;GET A CAR PIECE\r
+4$:    STAB    X,0             ;STASH IT\r
+       INX\r
+       INCA\r
+       CMPA    I,314           ;COUNT OF CAR STAMPS OUTPUT\r
+       BEQ     20$\r
+       CMPA    I,221\r
+       BNE     5$\r
+       LDX     I,PLAY+240\r
+5$:    CMPA    I,241\r
+       BNE     6$\r
+       LDX     I,PLAY+300\r
+6$:    BITA    I,3\r
+       BNE     3$\r
+       LDAB    I,WHITE\r
+       BRA     4$\r
+20$:   LDX     I,PLAY+276\r
+       LDAA    I,14\r
+       LDAB    I,333           ;FRONT WHEELS OF HIGH WHEELY\r
+21$:   BITA    I,3\r
+       BNE     22$             ;DON'T MESS WITH MOST OF THEM\r
+       STAB    X,0             ;JUST PUT THEM WHERE THEY'RE NEEDED\r
+22$:   DEX\r
+       DECA\r
+       BPL     21$\r
+SWTST: LDS     I,377\r
+       STAB    E,MOTOR1\r
+       STAB    E,MOTOR2        ;TURN ON MOTORS\r
+SWTLOP:        JSR     RSWT            ;GET PLAYER CTL.'S IN A&B\r
+       LSRA\r
+       EORA    X,17.           ;SHIFT IN COINS SWITCH\r
+       LSRA\r
+       EORA    X,33.           ;AND START BUTTON\r
+       LSRB\r
+       EORB    X,25.           ;AND OTHER COIN SWITCH\r
+       LSRB\r
+       EORB    X,41.           ;AND OTHER START BUTTON\r
+       STAB    D,SWT           ;SAVE ACCUMULATED WORD\r
+       CLC\r
+       BPL     2$\r
+       CLR     E,L             ;INDICATE START PRESSED\r
+       SEC\r
+2$:    ROL     E,LAMP2\r
+       STAA    D,SWT+2         ;SAVE AND TST\r
+       CLC\r
+       BPL     3$\r
+       CLR     E,L             ;INDICATE START PRESSED\r
+       SEC\r
+3$:    ROL     E,LAMP1\r
+       TST     E,L\r
+       BEQ     7$              ;START BUTTON PRESSED\r
+       ASLA\r
+       ASLA                    ;ELSE CHECK ACEL\r
+       BMI     4$\r
+       COMA                    ;COMPLEMENT OF SIGN INTO BIT 0\r
+4$:    ASLB\r
+       ASLB\r
+       BMI     5$\r
+       COMB\r
+5$:    LDX     I,MSPD1\r
+6$:    STAA    X,0\r
+       STAB    X,16.\r
+       INX\r
+       CPX     I,EXPL1\r
+       BNE     6$\r
+       BRA     SWTLOP\r
+7$:    TST     E,M             ;BEEN HERE BEFORE?\r
+       BEQ     BEEBOP          ;IF WE HAVE\r
+       CLR     E,M             ;MARK OUR PLACE\r
+       CLR     E,MOTOR1\r
+       CLR     E,MOTOR2                ;SHUT OFF MOTORS\r
+BEEBOP:        EORA    D,TSTW+2\r
+       BNE     BBSWB\r
+       EORB    D,TSTW\r
+       BEQ     SWTLOP\r
+       ANDB    D,SWT\r
+       BNE     BEEP\r
+BOP:   LDAA    I,1\r
+       STAA    E,TONE1\r
+BBCOM: LDX     I,10000\r
+1$:    DEX\r
+       BNE     1$\r
+       CLR     E,TONE1\r
+       CLR     E,TONE2\r
+       LDAA    D,SWT\r
+       STAA    D,TSTW\r
+       LDAA    D,SWT+2\r
+       STAA    D,TSTW+2\r
+       BRA     SWTLOP\r
+BBSWB: ANDA    D,SWT+2\r
+       BEQ     BOP\r
+BEEP:  LDAA    I,1\r
+       STAA    E,TONE2\r
+       BRA     BBCOM\r
+CKS1E: .BYTE   260\r
+FILL   =17770-.\r
+       .REPT   FILL\r
+       .BYTE   0\r
+       .ENDR\r
+RESETH =RESET/400\r
+RESETL =RESET&377\r
+       .BYTE   INTEN/400,INTEN&377\r
+       .BYTE   RESETH,RESETL\r
+       .BYTE   RESETH,RESETL\r
+       .BYTE   RESETH,RESETL\r
+       .IF     NDF,ROM\r
+       .RADIX  16\r
+       .=0A000\r
+       .WORD   INTEN\r
+       .=0A048\r
+       .WORD   RESET\r
+       .ENDC\r
+       .END\r
+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0
\ No newline at end of file
diff --git a/A08515.RBN b/A08515.RBN
new file mode 100644 (file)
index 0000000..65c7703
Binary files /dev/null and b/A08515.RBN differ
diff --git a/A08516.RBN b/A08516.RBN
new file mode 100644 (file)
index 0000000..d339056
Binary files /dev/null and b/A08516.RBN differ
diff --git a/A08517.RBN b/A08517.RBN
new file mode 100644 (file)
index 0000000..2aea82c
Binary files /dev/null and b/A08517.RBN differ
diff --git a/A08518.RBN b/A08518.RBN
new file mode 100644 (file)
index 0000000..e33e256
Binary files /dev/null and b/A08518.RBN differ
diff --git a/A08519.RBN b/A08519.RBN
new file mode 100644 (file)
index 0000000..4b4f65d
Binary files /dev/null and b/A08519.RBN differ
diff --git a/A08520.RBN b/A08520.RBN
new file mode 100644 (file)
index 0000000..5aa3f11
Binary files /dev/null and b/A08520.RBN differ
diff --git a/A08521.RBN b/A08521.RBN
new file mode 100644 (file)
index 0000000..d2b6011
Binary files /dev/null and b/A08521.RBN differ
diff --git a/DRAG.DIR b/DRAG.DIR
new file mode 100644 (file)
index 0000000..f34bf91
Binary files /dev/null and b/DRAG.DIR differ
diff --git a/DRAG.MAP b/DRAG.MAP
new file mode 100644 (file)
index 0000000..a1b9b56
Binary files /dev/null and b/DRAG.MAP differ