First commit main
authorHistorical Source <49599193+historicalsource@users.noreply.github.com>
Thu, 14 Oct 2021 03:43:47 +0000 (23:43 -0400)
committerHistorical Source <49599193+historicalsource@users.noreply.github.com>
Thu, 14 Oct 2021 03:43:47 +0000 (23:43 -0400)
A06400.RBN [new file with mode: 0644]
A06401.RBN [new file with mode: 0644]
A07754.XX [new file with mode: 0644]
A07764.RBN [new file with mode: 0644]
A07765.RBN [new file with mode: 0644]
DOMIN4.DIR [new file with mode: 0644]
DOMIN4.MAP [new file with mode: 0644]

diff --git a/A06400.RBN b/A06400.RBN
new file mode 100644 (file)
index 0000000..3b8e3bb
Binary files /dev/null and b/A06400.RBN differ
diff --git a/A06401.RBN b/A06401.RBN
new file mode 100644 (file)
index 0000000..a280a02
Binary files /dev/null and b/A06401.RBN differ
diff --git a/A07754.XX b/A07754.XX
new file mode 100644 (file)
index 0000000..286fab7
--- /dev/null
+++ b/A07754.XX
@@ -0,0 +1,1638 @@
+       .TITLE  FORD\r
+POS1   =0\r
+POS2   =2\r
+POS3   =4\r
+POS4   =6\r
+ADIR1  =10\r
+FTIM1  =14\r
+TEMP3  =20\r
+FRAME  =22\r
+SNUM   =23\r
+SOUND  =24\r
+TIMER  =25\r
+CRASH  =26\r
+HSCR   =27\r
+PF1    =30\r
+PF2    =31\r
+PF3    =32\r
+PF4    =33\r
+STIM1  =34\r
+FLAG1  =40\r
+PWALL1 =44\r
+PPOS1  =50\r
+PPOS2  =52\r
+PPOS3  =54\r
+PPOS4  =56\r
+ACOD1  =60\r
+SCR    =64\r
+PTR    =70\r
+TEMP1  =72\r
+WALL1  =74\r
+CREDIT =100\r
+TAMT   =101\r
+TOG    =102\r
+AFLAG  =103\r
+COINS  =104\r
+TONE   =105\r
+TEMP2  =106\r
+T1     =110\r
+T2     =111\r
+T3     =112\r
+T4     =113\r
+UP1    =114\r
+UP2    =115\r
+UP3    =116\r
+UP4    =117\r
+CNT    =120\r
+WIN    =121\r
+SIMUL  =122\r
+CNTRL  =126\r
+RTEST  =127\r
+SBI1   =4032\r
+SBI2   =4037\r
+SBI3   =4050\r
+SBI4   =4055\r
+ST     =4200\r
+CLICK  =6020\r
+TEST   =14000\r
+TESTV  =252\r
+AMODE  =6000\r
+TREST  =6200\r
+SB1    =6060\r
+SB2    =6100\r
+SB3    =6120\r
+SB4    =6140\r
+GSW    =4060\r
+CSW    =4061\r
+COINAD =4100\r
+SPOS1  =2360\r
+SPOS2  =2726\r
+SPOS3  =3217\r
+SPOS4  =2651\r
+APOS1  =2620\r
+APOS2  =2724\r
+APOS3  =3017\r
+APOS4  =2713\r
+TPOS1  =2320\r
+TPOS2  =2727\r
+TPOS3  =3257\r
+TPOS4  =2650\r
+TLOS1  =2260\r
+TLOS2  =2730\r
+TLOS3  =3317\r
+TLOS4  =2647\r
+PLAYFIELD=2000\r
+SW1    =4030\r
+SW2    =4034\r
+SW3    =4050\r
+SW4    =4054\r
+       .ASECT\r
+       .=30000\r
+PWRON: SEI                     ;POWER ON RESET\r
+       CLD\r
+       LDX     I,177           ;SET UP STACK\r
+       TXS\r
+       LDA     A,TEST\r
+       CMP     I,TESTV         ;DIAGNOSTIC PRESENT?\r
+       BEQ     TESTVJ          ;YES, GO TO TEST\r
+       BNE     MAINT           ;NO, GO TO MAIN LOOP\r
+TESTVJ:        JSR     A,TEST\r
+MAINT: JSR     A,SETUP         ;CLEAR CREDIT\r
+MAIN:  JSR     A,ATRACT\r
+       JSR     A,START\r
+       JMP     A,MAIN\r
+;ATTRACT SUBROUTINE\r
+ATRACT:        LDA     I,0\r
+       STA     Z,CRASH\r
+       STA     A,AMODE+1       ;TURN OFF SOUND\r
+       STA     A,SB1\r
+       STA     A,SB2\r
+       STA     A,SB3\r
+       STA     A,SB4\r
+       STA     Z,AFLAG         ;SET ATTRACT FLAG=0\r
+       LDX     I,0\r
+A40:   STA     ZX,PF1          ;ZERO PLAYER FLAGS\r
+       INX\r
+       CPX     I,4\r
+       BNE     A40\r
+       STA     A,TREST         ;PULSE WATCHDOG\r
+       JSR     A,BLANK         ;BLANK SCREEN\r
+       STA     A,TREST         ;PULSE WATCHDOG\r
+       JSR     A,INITL         ;INITIALIZE\r
+       JSR     A,SCORE         ;OUTPUT SCORE\r
+       LDA     I,104           ;OUTPUT COIN MESSAGE\r
+       BIT     A,CSW\r
+       BPL     A70\r
+       LDA     I,102\r
+       BVC     A70\r
+       LDA     I,103\r
+A70:   JSR     A,MESS\r
+       LDA     I,101           ;OUTPUT GAME OVER\r
+       JSR     A,MESS\r
+A1:    JSR     A,PLAY\r
+       LDA     A,ST            ;SELF-TEST?\r
+       BMI     S,+5            ;NO\r
+       JSR     A,TRAM          ;YES, GO TO SELF-TEST\r
+       LDA     Z,CREDIT\r
+       BNE     A2\r
+       LDA     Z,TEMP2\r
+       BMI     ATRACT\r
+       JSR     A,WAIT\r
+       JMP     A,A1\r
+A2:    LDA     I,1\r
+       STA     Z,AFLAG         ;SET ATTRACT FLAG\r
+       LDA     I,217\r
+       STA     Z,TIMER         ;SET UP BUTTON TIMER\r
+       JSR     A,BLANK\r
+       JSR     A,INITL\r
+       JSR     A,SCORE\r
+       LDA     I,104\r
+       BIT     A,CSW\r
+       BPL     A50\r
+       LDA     I,102\r
+       BVC     A50\r
+       LDA     I,103\r
+A50:   JSR     A,MESS\r
+       LDA     I,105\r
+       JSR     A,MESS\r
+A3:    STA     A,CLICK\r
+       LDA     A,SBI1          ;CHECK START BUTTONS\r
+       BMI     A4\r
+       LDX     I,0\r
+       LDA     ZX,PF1\r
+       BNE     A4\r
+       BEQ     A10\r
+A4:    LDA     A,SBI2\r
+       BMI     A5\r
+       LDX     I,1\r
+       LDA     ZX,PF1\r
+       BNE     A5\r
+       BEQ     A10\r
+A5:    LDA     A,SBI3\r
+       BMI     A6\r
+       LDX     I,2\r
+       LDA     ZX,PF1\r
+       BNE     A6\r
+       BEQ     A10\r
+A6:    LDA     A,SBI4\r
+       BMI     A7\r
+       LDX     I,3\r
+       LDA     ZX,PF1\r
+       BNE     A7\r
+A10:   LDA     Z,CREDIT        ;ANY CREDIT?\r
+       BEQ     A7              ;NO\r
+       DEC     Z,CREDIT        ;YES, DECREMENT CREDIT\r
+       LDA     I,1\r
+       STA     ZX,PF1          ;SET PLAYER FLAG\r
+A7:    LDA     Z,CREDIT\r
+       CMP     I,4\r
+       BCC     A51\r
+       LDA     I,4\r
+A51:   ORA     I,260\r
+       STA     A,PLAYFIELD+526\r
+       LDX     I,0\r
+A9:    LDA     ZX,PF1          ;ANY PLAYER FLAG SET?\r
+       BNE     A8              ;YES\r
+       INX\r
+       CPX     I,4\r
+       BNE     A9\r
+A20:   INC     Z,FRAME         ;NO, INCREMENT FRAME\r
+       LDA     Z,FRAME\r
+       AND     I,10\r
+       BEQ     A21\r
+       STA     A,SB1+1         ;TURN LITES ON\r
+       STA     A,SB2+1\r
+       STA     A,SB3+1\r
+       STA     A,SB4+1\r
+       LDA     I,110\r
+       JSR     A,MESS\r
+       LDA     I,106\r
+       JSR     A,MESS\r
+       JMP     A,A30\r
+A21:   LDA     Z,PF1           ;TURN SELECTED LITES OFF\r
+       BEQ     A220\r
+       STA     A,CLICK+1\r
+       BNE     A22\r
+A220:  STA     A,SB1\r
+A22:   LDA     Z,PF2\r
+       BEQ     A230\r
+       STA     A,CLICK+1\r
+       BNE     A23\r
+A230:  STA     A,SB2\r
+A23:   LDA     Z,PF3\r
+       BEQ     A240\r
+       STA     A,CLICK+1\r
+       BNE     A24\r
+A240:  STA     A,SB3\r
+A24:   LDA     Z,PF4\r
+       BEQ     A250\r
+       STA     A,CLICK+1\r
+       BNE     A25\r
+A250:  STA     A,SB4\r
+A25:   LDA     I,210\r
+       JSR     A,MESS\r
+       LDA     I,206\r
+       JSR     A,MESS\r
+A30:   JSR     A,WAIT\r
+       JMP     A,A3\r
+A8:    INC     Z,TIMER         ;TIMER DONE?\r
+       BNE     A20             ;NO\r
+       STA     A,SB1           ;YES\r
+       STA     A,SB2\r
+       STA     A,SB3\r
+       STA     A,SB4\r
+       LDA     Z,PF1\r
+       BEQ     A31\r
+       STA     A,SB1+1\r
+A31:   LDA     Z,PF2\r
+       BEQ     A32\r
+       STA     A,SB2+1\r
+A32:   LDA     Z,PF3\r
+       BEQ     A33\r
+       STA     A,SB3+1\r
+A33:   LDA     Z,PF4\r
+       BEQ     A34\r
+       STA     A,SB4+1\r
+A34:   RTS\r
+\r
+;START SUBROUTINE\r
+START: JSR     A,BLANK         ;BLANK SCREEN\r
+       JSR     A,INITL         ;INITIALIZE\r
+       STA     A,TREST\r
+       LDA     I,0\r
+       STA     Z,CRASH\r
+       STA     Z,TONE\r
+       STA     A,CLICK\r
+       LDX     I,0\r
+S6:    STA     ZX,SCR          ;ZERO SCORE\r
+       INX\r
+       CPX     I,4\r
+       BNE     S6\r
+       JSR     A,SCORE         ;OUTPUT SCORE\r
+       LDA     I,4\r
+       STA     Z,SOUND\r
+       STA     A,AMODE         ;TURN ON SOUND\r
+S2:    JSR     A,PLAY\r
+       LDA     Z,TEMP2\r
+       BMI     S750\r
+S751:  JSR     A,WAIT\r
+       JMP     A,S2\r
+S750:  STA     A,CLICK\r
+       LDA     I,0\r
+       STA     Z,CRASH\r
+       LDX     I,0\r
+       LDY     I,0\r
+S101:  LDA     ZX,SCR\r
+       CMP     Z,HSCR\r
+       BNE     S100\r
+       INY\r
+S100:  INX\r
+       CPX     I,4\r
+       BNE     S101\r
+       LDA     I,0\r
+       CPY     I,3\r
+       BCC     S102\r
+       LDA     I,1\r
+S102:  STA     Z,CNT\r
+       LDX     I,217           ;FREEZE SCREEN FOR AWHILE\r
+S79:   JSR     A,WAIT\r
+       LDA     Z,CNT           ;FLASH GAME OVER?\r
+       BEQ     S752            ;NO\r
+       LDY     I,101\r
+       TXA\r
+       AND     I,30\r
+       BNE     S103\r
+       LDY     I,201\r
+S103:  TYA\r
+       JSR     A,MESS\r
+S752:  INX\r
+       BNE     S79\r
+       LDA     Z,CNT           ;GAME OVER?\r
+       BEQ     S400            ;NO\r
+       LDX     I,0             ;YES, SELECT GAME WINNER\r
+S401:  LDA     ZX,SCR\r
+       CMP     Z,HSCR\r
+       BCC     S402            ;GOT THE WINNER\r
+       INX\r
+       CPX     I,4\r
+       BNE     S401\r
+       BEQ     S400            ;NO WINNER\r
+S402:  STX     Z,WIN\r
+S400:  LDA     Z,WIN\r
+       BMI     S47\r
+       JSR     A,BLANK\r
+       JSR     A,INITL\r
+       JSR     A,SCORE\r
+       STA     A,TREST\r
+       LDA     I,107           ;FLASH WINNER'S ARROW\r
+       JSR     A,MESS\r
+       LDX     I,144\r
+S40:   JSR     A,WAIT\r
+       TXA\r
+       AND     I,14\r
+       BNE     S41\r
+       LDA     I,0\r
+       STA     A,APOS1\r
+       STA     A,APOS2\r
+       STA     A,APOS3\r
+       STA     A,APOS4\r
+       BEQ     S45\r
+S41:   LDY     Z,WIN\r
+       BNE     S42\r
+       LDA     I,276\r
+       STA     A,APOS1\r
+       BMI     S45\r
+S42:   CPY     I,1\r
+       BNE     S43\r
+       LDA     I,277\r
+       STA     A,APOS2\r
+       BMI     S45\r
+S43:   CPY     I,2\r
+       BNE     S44\r
+       LDA     I,274\r
+       STA     A,APOS3\r
+       BMI     S45\r
+S44:   LDA     I,275\r
+       STA     A,APOS4\r
+S45:   INX\r
+       BNE     S40\r
+S47:   LDA     Z,CNT           ;GAME OVER?\r
+       BNE     S78             ;YES\r
+       JSR     A,BLANK\r
+       JSR     A,INITL         ;NO, RESTART GAME\r
+       LDA     I,4\r
+       STA     Z,SOUND\r
+       JSR     A,SCORE\r
+       LDX     I,0\r
+S50:   LDA     ZX,FLAG1        ;ELIMINATE ARROWS\r
+       CMP     I,2             ;OF PLAYERS WHO\r
+       BNE     S51             ;ARE GONE\r
+       LDA     I,0\r
+       CPX     I,0\r
+       BNE     S52\r
+       STA     A,SPOS1\r
+       BEQ     S51\r
+S52:   CPX     I,1\r
+       BNE     S53\r
+       STA     A,SPOS2\r
+       BEQ     S51\r
+S53:   CPX     I,2\r
+       BNE     S54\r
+       STA     A,SPOS3\r
+       BEQ     S51\r
+S54:   STA     A,SPOS4\r
+S51:   INX\r
+       CPX     I,4\r
+       BNE     S50\r
+       JMP     A,S2\r
+S78:   RTS                     ;ALL DONE, RETURN TO MAINLINE\r
+;PLAY SUBROUTINE\r
+PLAY:  LDX     I,0\r
+P8:    LDA     ZX,FLAG1\r
+       CMP     I,377\r
+       BEQ     P41\r
+       INX\r
+       CPX     I,4\r
+       BNE     P8\r
+       LDA     Z,TONE          ;IN NORMAL PLAY\r
+       BEQ     P67             ;MAKE SOUND WHOOSH\r
+       LDA     I,4\r
+       SEC\r
+       SBC     Z,TONE\r
+       DEC     Z,TONE\r
+P67:   STA     Z,CRASH\r
+       BPL     P40\r
+P41:   LDA     Z,CRASH\r
+       BEQ     P40\r
+       DEC     Z,CRASH\r
+P40:   JSR     A,SCAN          ;LOOK AT SWITCHES\r
+       LDA     Z,TIMER         ;TIME TO UPDATE?\r
+       BNE     P2              ;NO\r
+       LDA     Z,TAMT          ;YES, RESET TIMER\r
+       STA     Z,TIMER\r
+       LDY     I,0\r
+       LDX     I,0\r
+P44:   LDA     ZX,FLAG1        ;COUNT # OF PLAYERS\r
+       BEQ     P45             ;NOT GOING FORWARD\r
+       INY                     ;IF 3 OR GREATER,\r
+P45:   INX                     ;BYPASS GOING FORWARD\r
+       CPX     I,4             ;LOGIC\r
+       BNE     P44\r
+       CPY     I,3\r
+       BCS     P1\r
+       LDA     I,0\r
+       STA     Z,CNT           ;SET UP TOGGLE COUNTER\r
+       LDX     Z,TOG\r
+       LDA     Z,AFLAG         ;IN ATTRACT MODE\r
+       BEQ     P42             ;IGNORE SCORE\r
+       LDA     ZX,SCR          ;PLAYER ELIMINATED?\r
+       CMP     Z,HSCR\r
+       BEQ     P1              ;YES\r
+P42:   LDA     ZX,FLAG1        ;PLAYER GOING FORWARD?\r
+       BNE     P1              ;NO\r
+       JSR     A,FOR           ;YES, DO SO\r
+P1:    INC     Z,TOG           ;BUMP TOG\r
+       LDA     Z,TOG\r
+       CMP     I,4\r
+       BNE     P100\r
+       LDA     I,0\r
+       STA     Z,TOG\r
+P100:  LDX     Z,TOG           ;VALID TOGGLE?\r
+       LDA     ZX,FLAG1\r
+       BEQ     P2              ;YES\r
+       LDA     Z,CNT           ;CHECKED ALL 4 PLAYERS?\r
+       CMP     I,4\r
+       BEQ     P2              ;YES\r
+       INC     Z,CNT           ;NO, GET NEXT TOGGLE\r
+       JMP     A,P1\r
+P2:    DEC     Z,TIMER         ;DECREMENT TIMER\r
+       LDX     I,0\r
+P3:    LDA     ZX,FLAG1        ;GOING FORWARD?\r
+       BEQ     P4              ;YES\r
+       CMP     I,377           ;COLLIDING?\r
+       BNE     P5              ;NO\r
+       JSR     A,COL           ;YES\r
+       JMP     A,P4\r
+P5:    CMP     I,1             ;TOPPLING?\r
+       BNE     P6              ;NO\r
+       JSR     A,TOP           ;YES\r
+       JMP     A,P4\r
+P6:    CMP     I,2             ;ALL DONE?\r
+       BEQ     P4              ;YES\r
+       JSR     A,ELIM          ;NO,CLEAR OUT DOMINOES\r
+P4:    INX\r
+       CPX     I,4\r
+       BNE     P3\r
+       LDA     Z,AFLAG         ;IF IN ATTRACT MODE\r
+       BEQ     P43             ;IGNORE FOLLOWING LOGIC\r
+       LDA     I,1\r
+       STA     Z,TEMP1\r
+       LDX     I,0\r
+       LDY     I,0\r
+P20:   LDA     ZX,PF1          ;CHECK TO SEE IF\r
+       BNE     P21             ;ONLY COMPUTER REMAINS\r
+       LDA     ZX,FLAG1\r
+       BNE     P22\r
+       INY\r
+       BNE     P22\r
+P21:   LDA     ZX,FLAG1\r
+       CMP     I,2\r
+       BNE     P43\r
+       LDA     ZX,SCR          ;IS THIS PLAYER\r
+       CMP     Z,HSCR          ;ELIMINATED FOR GOOD?\r
+       BCS     P22             ;YES\r
+       LDA     I,0             ;NO, CLEAR TEMP1\r
+       STA     Z,TEMP1\r
+P22:   INX\r
+       CPX     I,4\r
+       BNE     P20\r
+       CPY     I,2             ;IF SO, GIVE ALL REMAINING\r
+       BCC     P43             ;COMPUTER PLAYERS BUT ONE\r
+       DEY                     ;A FALLEN DOMINO SO AS TO\r
+       LDX     I,0             ;END HEAT IMMEDIATELY\r
+P23:   LDA     ZX,PF1\r
+       BNE     P24\r
+       LDA     ZX,FLAG1\r
+       BNE     P24\r
+       LDA     Z,TEMP1         ;ANY USERS STILL ACTIVE?\r
+       BNE     P55             ;NO\r
+       LDA     I,1             ;YES,DEFEAT COMPUTER\r
+       STA     Z,CNTRL         ;CONTROL OF REMAINING\r
+       BNE     P43             ;PLAYERS\r
+P55:   LDA     Z,HSCR          ;KILL ALL BUT ONE\r
+       STA     ZX,SCR          ;REMAINING COMPUTER PLAYERS\r
+       LDA     I,2\r
+       STA     ZX,FLAG1\r
+P25:   DEY\r
+       BEQ     P43\r
+P24:   INX\r
+       CPX     I,4\r
+       BNE     P23\r
+P43:   LDX     I,0\r
+       LDA     I,377\r
+       STA     Z,WIN\r
+P470:  LDA     ZX,FLAG1                ;RECORD WINNER\r
+       CMP     I,2\r
+       BEQ     P471\r
+       LDA     ZX,SIMUL\r
+       BNE     P471\r
+       STX     Z,WIN\r
+P471:  INX\r
+       CPX     I,4\r
+       BNE     P470\r
+       LDY     I,0\r
+       LDX     I,0\r
+P7:    LDA     ZX,FLAG1                ;HEAT FINISHED?\r
+       CMP     I,2\r
+       BNE     P9\r
+       INY\r
+P9:    INX\r
+       CPX     I,4\r
+       BNE     P7\r
+       CPY     I,3\r
+       BCS     S75\r
+S80:   INC     Z,FRAME         ;BUMP FRAME COUNTER\r
+       LDA     Z,FRAME         ;TIME TO SPEEDUP?\r
+       AND     I,177\r
+       BNE     S81             ;NO\r
+       LDA     Z,TAMT          ;YES\r
+       CMP     I,7             ;MAX SPEEDUP\r
+       BEQ     S81             ;YES\r
+       DEC     Z,TAMT          ;NO, SPEED IT UP\r
+S81:   LDA     I,0\r
+       BEQ     S,+4\r
+S75:   LDA     I,377\r
+       STA     Z,TEMP2\r
+       RTS\r
+FOR:   STX     Z,TEMP2\r
+       LDA     Z,AFLAG                 ;SUPPRESS SOUNDS\r
+       BEQ     F2                      ;IN ATTRACT MODE\r
+       LDA     AX,SOTAB                ;GET CORRECT SOUND\r
+       STA     Z,SOUND\r
+       LDA     I,3\r
+       STA     Z,TONE\r
+F2:    LDA     ZX,PWALL1               ;FIRST TIME?\r
+       BNE     F3                      ;NO\r
+       LDY     ZX,ADIR1                ;YES, ASSUME ADIR\r
+       LDX     AY,BTAB\r
+       BPL     F4\r
+F3:    JSR     A,FIND                  ;FIND CORRECT DOMINO INDEX\r
+F4:    LDY     Z,TEMP2\r
+       LDA     AY,ADIR1                ;ACCESS CORRECT DIRECTION TABLE\r
+       BNE     F6\r
+       LDA     AX,TAB1\r
+       BNE     F10\r
+F6:    CMP     I,1\r
+       BNE     F7\r
+       LDA     AX,TAB2\r
+       BNE     F10\r
+F7:    CMP     I,2\r
+       BNE     F8\r
+       LDA     AX,TAB3\r
+       BNE     F10\r
+F8:    LDA     AX,TAB4\r
+F10:   LDY     I,0                     ;OUTPUT WALL SECTION\r
+       LDX     Z,TEMP2\r
+       CPX     I,1\r
+       BEQ     F40\r
+       CPX     I,3\r
+       BEQ     F40\r
+       ORA     I,200\r
+F40:   JSR     A,OUTX\r
+       AND     I,177\r
+       STA     ZX,PWALL1               ;SAVE WALL CODE\r
+       LDA     Z,TEMP2\r
+       ASL\r
+       TAX\r
+       LDA     ZX,POS1                 ;SAVE POSITION\r
+       STA     ZX,PPOS1\r
+       LDA     ZX,POS1+1\r
+       STA     ZX,PPOS1+1\r
+       LDX     Z,TEMP2\r
+       LDA     ZX,ACOD1\r
+       AND     I,173\r
+       JSR     A,NPOS                  ;UPDATE POSITION\r
+       LDY     I,0\r
+       JSR     A,INX                   ;CHECK FOR EMINENT COLLISIONS\r
+       BEQ     F20                     ;NONE\r
+       STA     ZX,WALL1                ;YES\r
+       LDX     I,0                     ;IF COLLISION IS NOT\r
+       AND     I,173                   ;WITH AN ARROW, A\r
+F24:   CMP     AX,KTAB                 ;SIMULTANEOUS\r
+       BEQ     F23                     ;COLLISION CANNOT OCCUR\r
+       INX\r
+       CPX     I,4\r
+       BNE     F24\r
+       LDX     Z,TEMP2\r
+       LDA     I,377\r
+       STA     ZX,FLAG1\r
+       BMI     F25\r
+F23:   LDA     Z,TEMP2\r
+       ASL\r
+       TAX\r
+       LDA     ZX,POS1                 ;CHECK FOR\r
+       CMP     AY,POS1                 ;SIMULTANEOUS\r
+       BNE     F22                     ;COLLISIONS\r
+       LDA     ZX,POS1+1\r
+       CMP     AY,POS1+1\r
+       BNE     F22\r
+       TYA\r
+       LSR\r
+       TAX\r
+       LDA     I,377\r
+       STA     ZX,FLAG1\r
+       LDA     I,1\r
+       STA     ZX,SIMUL\r
+F22:   INY\r
+       INY\r
+       CPY     I,8.\r
+       BNE     F23\r
+F25:   LDA     Z,AFLAG                 ;SUPPRESS CRASH\r
+       BEQ     F20                     ;IN ATTRACT MODE\r
+       LDA     I,15.\r
+       STA     Z,SOUND\r
+       LDA     I,17\r
+       STA     Z,CRASH\r
+F20:   LDX     Z,TEMP2\r
+       LDY     I,0\r
+       LDA     ZX,ACOD1                ;OUTUT NEW ARROW\r
+       JSR     A,OUTX\r
+       RTS\r
+SOTAB: .BYTE   0,4,8.,12.\r
+COL:   STX     Z,TEMP2\r
+       LDY     I,0\r
+       LDA     ZX,FTIM1                ;FLASH TIMER STILL ACTIVE?\r
+       BEQ     CL10                    ;NO\r
+       DEC     ZX,FTIM1                ;YES, DECREMENT IT\r
+       LDA     ZX,FTIM1                ;TIME TO FLASH?\r
+       AND     I,2\r
+       BNE     CL2\r
+       LDA     ZX,ACOD1                ;FLASH ARROW\r
+       JSR     A,OUTX\r
+       RTS\r
+CL2:   LDA     ZX,WALL1                ;FLASH WALL\r
+       JSR     A,OUTX\r
+       RTS\r
+CL10:  LDA     I,1                     ;FLASHING ALL DONE\r
+       STA     ZX,FLAG1                ;SET FLAG TO TOPPLE\r
+       LDA     ZX,SIMUL                ;SIMULTANEOUS COLLISION?\r
+       BEQ     CL3                     ;NO\r
+       LDA     I,0                     ;YES, RESET WALL\r
+       STA     ZX,WALL1                ;SECTION TO A BLANK\r
+CL3:   LDY     I,0\r
+       LDX     Z,TEMP2\r
+       LDA     ZX,WALL1\r
+       JSR     A,OUTX\r
+       TXA\r
+       ASL\r
+       TAX\r
+       LDA     ZX,PPOS1                ;RESTORE POSITION\r
+       STA     ZX,POS1\r
+       LDA     ZX,PPOS1+1\r
+       STA     ZX,POS1+1\r
+       LDX     Z,TEMP2\r
+       LDA     Z,AFLAG                 ;MAKE SURE\r
+       BEQ     CL5                     ;SCORE DOES NOT\r
+       INC     ZX,SCR                  ;CHANGE IN ATTRACT MODE\r
+       LDA     Z,HSCR\r
+       CMP     ZX,SCR\r
+       BCS     CL5\r
+       STA     ZX,SCR\r
+CL5:   RTS\r
+TOP:   STX     Z,TEMP2\r
+       LDA     ZX,STIM1                ;TIME TO TOPPLE?\r
+       BEQ     TO1                     ;YES\r
+       DEC     ZX,STIM1                ;NO, DECREMENT TIMER\r
+       RTS\r
+TO1:   LDY     I,0\r
+       JSR     A,INX                   ;READ CURRENT POSITION\r
+       JSR     A,VALID\r
+       BCS     TO4\r
+       STA     Z,TEMP1\r
+       ORA     I,1\r
+       JSR     A,OUTX                  ;TOPPLE DOMINO\r
+       LDA     Z,AFLAG                 ;SUPPRESS CLICK\r
+       BEQ     TO3                     ;IN ATTRACT MODE\r
+       JSR     A,TICK\r
+TO3:   LDA     Z,TEMP2\r
+       ASL\r
+       TAX\r
+       LDA     ZX,POS1                 ;CURRENT POSITION=\r
+       CMP     AX,BPOS                 ;INITIAL POSITION?\r
+       BNE     TO2                     ;NO\r
+       LDA     ZX,POS1+1\r
+       CMP     AX,BPOS+1\r
+       BNE     TO2                     ;NO\r
+       LDA     Z,TEMP2\r
+       ASL\r
+       TAX\r
+       LDA     ZX,PPOS1        ;RESTORE POSITION\r
+       STA     ZX,POS1\r
+       LDA     ZX,PPOS1+1\r
+       STA     ZX,POS1+1\r
+       LDX     Z,TEMP2                 ;YES, ALL DONE\r
+       LDA     I,3                     ;SET FLAG\r
+       STA     ZX,FLAG1                ;TO ELIMINATE\r
+       RTS\r
+TO2:   LDX     Z,TEMP2\r
+       LDA     I,2\r
+       STA     ZX,STIM1                ;RESET TOPPLE TIMER\r
+       LDA     Z,TEMP1                 ;UPDATE POSITION\r
+       AND     I,177\r
+       JSR     A,UPOS\r
+TO4:   RTS\r
+ELIM:  STX     Z,TEMP2         ;ELIMINATE DOMINOES\r
+EL2:   LDY     I,0\r
+       LDX     Z,TEMP2         ;GET LAST DOMINO\r
+       JSR     A,INX\r
+       AND     I,176           ;AND OUT TOPPLE BIT\r
+       JSR     A,VALID\r
+       BCS     EL3\r
+       STA     Z,TEMP1\r
+       LDA     I,0\r
+       JSR     A,OUTX          ;ELIMINATE DOMINO\r
+       STA     A,TREST\r
+       LDA     Z,TEMP2\r
+       ASL\r
+       TAX\r
+       LDA     ZX,POS1         ;ALL DONE?\r
+       CMP     AX,BPOS\r
+       BNE     EL1             ;NO\r
+       LDA     ZX,POS1+1\r
+       CMP     AX,BPOS+1\r
+       BNE     EL1             ;NO\r
+       LDX     Z,TEMP2         ;YES, ALL DONE\r
+       LDA     I,2\r
+       STA     ZX,FLAG1\r
+EL3:   RTS\r
+EL1:   LDX     Z,TEMP2\r
+       LDA     Z,TEMP1\r
+       JSR     A,UPOS          ;UPDATE POSITION\r
+       JMP     A,EL2\r
+OUTX:  CPX     I,0                     ;OUTPUTS A-REG TO NY,POS\r
+       BNE     OX1                     ;DEPENDENT ON X-REG\r
+       STA     NY,POS1\r
+       RTS\r
+OX1:   CPX     I,1\r
+       BNE     OX2\r
+       STA     NY,POS2\r
+       RTS\r
+OX2:   CPX     I,2\r
+       BNE     OX3\r
+       STA     NY,POS3\r
+       RTS\r
+OX3:   STA     NY,POS4\r
+       RTS\r
+INX:   CPX     I,0                     ;INPUTS TO A-REG\r
+       BNE     IN1                     ;FROM NY,POS\r
+       LDA     NY,POS1                 ;DEPENDENT ON X-REG\r
+       RTS\r
+IN1:   CPX     I,1\r
+       BNE     IN2\r
+       LDA     NY,POS2\r
+       RTS\r
+IN2:   CPX     I,2\r
+       BNE     IN3\r
+       LDA     NY,POS3\r
+       RTS\r
+IN3:   LDA     NY,POS4\r
+       RTS\r
+;\r
+;MESSAGE ROUTINE\r
+;      ON ENTRY A-REG = BITS 0-5 = # OF MESSAGE\r
+;                     = BIT 6 = 1 WHITE\r
+;                               0 BLACK\r
+;                     = BIT 7 = 1 BLANK MESSAGE\r
+;                               0 WRITE MESSAGE\r
+;\r
+MESS:  STX     Z,TEMP3\r
+       STY     Z,TEMP3+1\r
+       LDX     I,0\r
+       STX     Z,PTR\r
+       STX     Z,PTR+1\r
+       CLC\r
+       ROL\r
+       ROL     Z,PTR           ;SAVE R/W BIT\r
+       ROL\r
+       ROL     Z,PTR+1         ;SAVE COLOR BIT\r
+       LSR\r
+       TAX\r
+       LDA     AX,MESG\r
+       STA     Z,TEMP1\r
+       LDA     AX,MESG+1\r
+       STA     Z,TEMP1+1\r
+       LDA     AX,POSM\r
+       STA     Z,TEMP2\r
+       LDA     AX,POSM+1\r
+       STA     Z,TEMP2+1\r
+       LDY     I,0\r
+M1:    LDA     NY,TEMP1\r
+       BEQ     M5\r
+       LDX     Z,PTR\r
+       BNE     M2\r
+       CMP     I,40\r
+       BNE     M3\r
+M2:    LDA     I,0\r
+M3:    LDX     Z,PTR+1\r
+       BEQ     M4\r
+       ORA     I,200\r
+M4:    STA     NY,TEMP2\r
+       INY\r
+       BPL     M1\r
+M5:    LDX     Z,TEMP3\r
+       LDY     Z,TEMP3+1\r
+       RTS\r
+SCORE: LDX     I,0             ;OUTPUT CORRECT SCORE DOMINOS\r
+SE1:   LDA     Z,HSCR\r
+       SEC\r
+       SBC     ZX,SCR\r
+       TAY\r
+       LDA     AY,DOTS2\r
+       STA     Z,TEMP3\r
+       LDA     AY,DOTS1\r
+       CPX     I,0\r
+       BNE     SE2\r
+       ORA     I,200\r
+       STA     A,TPOS1\r
+       LDA     Z,TEMP3\r
+       ORA     I,200\r
+       STA     A,TLOS1\r
+       JMP     A,SE5\r
+SE2:   CPX     I,1\r
+       BNE     SE3\r
+       STA     A,TPOS2\r
+       LDA     Z,TEMP3\r
+       STA     A,TLOS2\r
+       JMP     A,SE5\r
+SE3:   CPX     I,2\r
+       BNE     SE4\r
+       ORA     I,200\r
+SE8:   STA     A,TPOS3\r
+       STA     A,TPOS4\r
+       LDA     Z,TEMP3\r
+       ORA     I,200\r
+       STA     A,TLOS3\r
+       JMP     A,SE5\r
+SE4:   STA     A,TPOS4\r
+       LDA     Z,TEMP3\r
+       STA     A,TLOS4\r
+SE5:   INX\r
+       CPX     I,4\r
+       BNE     SE1\r
+       LDA     Z,AFLAG\r
+       BEQ     SE20\r
+       LDX     I,0\r
+SE10:  LDA     ZX,SCR          ;IF PLAYER REACHES\r
+       CMP     Z,HSCR          ;HSCR, LOCK HIM OUT\r
+       BNE     SE11\r
+       LDA     I,2\r
+       STA     ZX,FLAG1\r
+SE11:  INX\r
+       CPX     I,4\r
+       BNE     SE10\r
+SE20:  RTS\r
+DOTS1: .BYTE   34,35,35,36,37,37,37\r
+DOTS2: .BYTE   34,34,35,35,35,36,37\r
+TICK:  STA     A,CLICK+1       ;GENERATES A CLICK\r
+       STY     Z,TEMP3\r
+       STX     Z,TEMP3+1\r
+       LDY     I,0\r
+       LDX     I,1\r
+TK1:   DEY                     ;WAIT 5 MSEC\r
+       BNE     S,-1\r
+       DEX\r
+       BNE     TK1\r
+       STA     A,CLICK\r
+       LDY     Z,TEMP3\r
+       LDX     Z,TEMP3+1\r
+       RTS\r
+SETUP: LDA     I,0\r
+       STA     Z,COINS\r
+       STA     Z,CREDIT\r
+       STA     A,CLICK\r
+       TAX\r
+SU1:   STA     ZX,SCR\r
+       INX\r
+       CPX     I,4\r
+       BNE     SU1\r
+       RTS\r
+WAIT:  BIT     A,COINAD        ;CONTINUALLY LOOK FOR COINS\r
+       BPL     WA2\r
+       BVS     WA1\r
+WA2:   JSR     A,COIN\r
+WA1:   LDA     A,AMODE\r
+       ROL\r
+       ROL\r
+       BPL     WAIT\r
+       STA     A,TREST         ;PULSE WATCHDOG\r
+       RTS\r
+INITL: LDA     I,SPOS1&377     ;SETUP INITIAL POSITIONS\r
+       STA     Z,POS1\r
+       LDA     I,SPOS1&177400/256.\r
+       STA     Z,POS1+1\r
+       LDA     I,SPOS2&377\r
+       STA     Z,POS2\r
+       LDA     I,SPOS2&177400/256.\r
+       STA     Z,POS2+1\r
+       LDA     I,SPOS3&377\r
+       STA     Z,POS3\r
+       LDA     I,SPOS3&177400/256.\r
+       STA     Z,POS3+1\r
+       LDA     I,SPOS4&377\r
+       STA     Z,POS4\r
+       LDA     I,SPOS4&177400/256.\r
+       STA     Z,POS4+1\r
+       LDA     I,2\r
+       STA     Z,ADIR1\r
+       LDA     I,3\r
+       STA     Z,ADIR1+1\r
+       LDA     I,0\r
+       STA     Z,ADIR1+2\r
+       LDA     I,1\r
+       STA     Z,ADIR1+3\r
+       LDA     I,274\r
+       STA     Z,ACOD1\r
+       STA     A,SPOS1\r
+       LDA     I,75\r
+       STA     Z,ACOD1+1\r
+       STA     A,SPOS2\r
+       LDA     I,272\r
+       STA     Z,ACOD1+2\r
+       STA     A,SPOS3\r
+       LDA     I,73\r
+       STA     Z,ACOD1+3\r
+       STA     A,SPOS4\r
+       LDA     I,14.           ;SET UP TIMER\r
+       STA     Z,TIMER\r
+       STA     Z,TAMT\r
+       LDA     I,8.\r
+       LDY     I,2\r
+       LDX     I,0\r
+I4:    STA     ZX,FTIM1\r
+       STY     ZX,STIM1\r
+       INX\r
+       CPX     I,4\r
+       BNE     I4\r
+       LDA     A,GSW           ;SET GAME LENGTH\r
+       AND     I,300\r
+       CLC\r
+       ROL\r
+       ROL\r
+       ROL\r
+       ADC     I,3\r
+       STA     Z,HSCR\r
+       LDA     I,0\r
+       STA     Z,TOG\r
+       STA     Z,SNUM\r
+       STA     Z,CNTRL\r
+       LDX     I,0\r
+I5:    STA     ZX,FLAG1\r
+       STA     ZX,PWALL1\r
+       STA     ZX,SIMUL\r
+       INX\r
+       CPX     I,4\r
+       BNE     I5\r
+       LDA     I,PLAYFIELD+37&377\r
+       STA     Z,PTR\r
+       LDA     I,PLAYFIELD+37&177400/256.\r
+       STA     Z,PTR+1\r
+       LDX     I,0\r
+I3:    LDY     I,0\r
+       LDA     I,234\r
+       STA     NY,PTR\r
+       INY\r
+       STA     NY,PTR\r
+       LDA     Z,PTR\r
+       CLC\r
+       ADC     I,40\r
+       STA     Z,PTR\r
+       LDA     Z,PTR+1\r
+       ADC     I,0\r
+       STA     Z,PTR+1\r
+       INX\r
+       CPX     I,27.\r
+       BNE     I3\r
+       LDX     I,0\r
+       LDA     I,234\r
+I1:    STA     AX,PLAYFIELD\r
+       STA     AX,PLAYFIELD+1540\r
+       INX\r
+       CPX     I,32.\r
+       BNE     I1\r
+       RTS\r
+VALID: STX     Z,TEMP3         ;CHECK TO SEE\r
+       STA     Z,TEMP3+1       ;IF IT IS A\r
+       LDX     I,0             ;VALID DOMINO\r
+       AND     I,177\r
+VA1:   CMP     AX,CTAB\r
+       BEQ     VA2\r
+       INX\r
+       CPX     I,12.\r
+       BNE     VA1\r
+       LDX     I,0\r
+VA5:   LDA     ZX,FLAG1                ;ANY PLAYERS\r
+       CMP     I,377           ;STILL COLLIDING?\r
+       BEQ     VA4             ;YES\r
+       INX\r
+       CPX     I,4\r
+       BNE     VA5\r
+       LDX     I,0             ;NO SET ALL PLAYERS DONE\r
+       LDA     I,2\r
+VA6:   STA     ZX,FLAG1\r
+       INX\r
+       CPX     I,4\r
+       BNE     VA6\r
+VA4:   SEC\r
+       JMP     A,VA3\r
+VA2:   CLC\r
+VA3:   LDA     Z,TEMP3+1\r
+       LDX     Z,TEMP3\r
+       RTS\r
+FIND:  LDX     I,0             ;FIND CORRECT\r
+FF1:   CMP     AX,CTAB         ;DOMINO INDEX\r
+       BEQ     FF2\r
+       INX\r
+       BPL     FF1\r
+FF2:   RTS\r
+FAR:   LDX     I,0             ;FIND CORRECT\r
+FA1:   CMP     AX,KTAB         ;ARROW INDEX\r
+       BEQ     FA2\r
+       INX\r
+       BPL     FA1\r
+FA2:   RTS\r
+BLANK: LDA     I,0             ;BLANKS SCREEN\r
+       LDX     I,340\r
+B1:    DEX\r
+       STA     AX,PLAYFIELD\r
+       STA     AX,PLAYFIELD+224.\r
+       STA     AX,PLAYFIELD+448.\r
+       STA     AX,PLAYFIELD+672.\r
+       BNE     B1\r
+       RTS\r
+UPOS:  STX     Z,TEMP2+1\r
+       JSR     A,FIND          ;GET CORRECT\r
+       TXA                     ;DOMINO INDEX\r
+       TAY\r
+       LDA     Z,TEMP2+1\r
+       ASL\r
+       TAX\r
+       LDA     AY,OTABL        ;GET NEXT POSITION\r
+       CLC\r
+       ADC     ZX,POS1\r
+       STA     ZX,POS1\r
+       LDA     AY,OTABH\r
+       ADC     ZX,POS1+1\r
+       STA     ZX,POS1+1\r
+       LDX     Z,TEMP2+1\r
+       RTS\r
+NPOS:  STX     Z,TEMP2+1\r
+       JSR     A,FAR           ;GET CORRECT ARROW\r
+       TXA\r
+       TAY\r
+       LDA     Z,TEMP2+1\r
+       ASL\r
+       TAX\r
+       LDA     AY,PTABL        ;COMPUTE NEXT POSITION\r
+       CLC\r
+       ADC     ZX,POS1\r
+       STA     ZX,POS1\r
+       LDA     AY,PTABH\r
+       ADC     ZX,POS1+1\r
+       STA     ZX,POS1+1\r
+       LDX     Z,TEMP2+1\r
+       RTS\r
+COIN:  JSR     A,KOIN          ;GET COINS\r
+CO7:   LDA     A,CSW\r
+       BPL     CO1\r
+       ROL\r
+       BPL     CO2\r
+       LDA     Z,COINS         ;1 COIN 2 CREDITS\r
+       BNE     S,+3\r
+CO5:   RTS\r
+       DEC     Z,COINS\r
+       INC     Z,CREDIT\r
+       INC     Z,CREDIT\r
+       JMP     A,CO7\r
+       NOP\r
+CO2:   LDA     Z,COINS         ;1 COIN 1 CREDIT\r
+       BEQ     CO5\r
+       DEC     Z,COINS\r
+       INC     Z,CREDIT\r
+       JMP     A,CO7\r
+       NOP\r
+CO1:   LDA     Z,COINS\r
+       BEQ     CO5\r
+       DEC     Z,COINS\r
+       LDA     Z,CREDIT\r
+       CLC\r
+       ADC     I,4\r
+       STA     Z,CREDIT\r
+       JMP     A,CO7\r
+       NOP\r
+KOIN:  LDA     I,9.\r
+       STA     Z,TEMP1\r
+       STA     Z,TEMP1+1\r
+K1:    BIT     A,COINAD\r
+       BPL     S,+5\r
+       BVC     S,+3\r
+       RTS\r
+       STA     A,TREST         ;PULSE WATCHDOG\r
+       LDY     I,372\r
+       DEY\r
+       BNE     S,-1\r
+       BIT     A,COINAD\r
+       BVC     S,+8.\r
+       LDA     I,9.\r
+       STA     Z,TEMP1\r
+       BPL     K2\r
+       LDA     Z,TEMP1\r
+       BEQ     K2\r
+       DEC     Z,TEMP1\r
+       BNE     K2\r
+       INC     Z,COINS\r
+K2:    BIT     A,COINAD\r
+       BPL     S,+8.\r
+       LDA     I,9.\r
+       STA     Z,TEMP1+1\r
+       BPL     K1\r
+       LDA     Z,TEMP1+1\r
+       BEQ     K1\r
+       DEC     Z,TEMP1+1\r
+       BNE     K1\r
+       INC     Z,COINS\r
+       JMP     A,K1\r
+PTABL: .BYTE   340,1,40,377\r
+PTABH: .BYTE   377,0,0,377\r
+BTAB:  .BYTE   0,3,6,9.\r
+CTAB:  .BYTE   50,52,42,54,56,46\r
+       .BYTE   40,142,152,44,146,156\r
+OTABL: .BYTE   40,377,40,377,340,377\r
+       .BYTE   340,1,340,1,40,1\r
+OTABH: .BYTE   0,377,0,377,377,377\r
+       .BYTE   377,0,377,0,0,0\r
+SCAN:  LDX     I,0\r
+SC10:  STX     Z,TEMP2+1\r
+       LDA     ZX,FLAG1        ;PLAYER ACTIVE\r
+       BNE     SC6             ;NO\r
+       LDA     ZX,PF1          ;YES, USER OR COMPUTER?\r
+       BEQ     SC2             ;COMPUTER\r
+       LDA     Z,TEMP2+1       ;USER\r
+       ASL\r
+       TAX\r
+       LDA     AX,SWTAB\r
+       STA     Z,PTR\r
+       LDA     AX,SWTAB+1\r
+       STA     Z,PTR+1\r
+       LDX     Z,TEMP2+1\r
+       LDY     I,0\r
+SC5:   LDA     NY,PTR          ;USER, GET SWITCHES\r
+       BPL     SC4\r
+       INY\r
+       CPY     I,4\r
+       BNE     SC5\r
+       BEQ     SC6             ;NO CHANGE, IGNORE SWITCHES\r
+SC4:   STY     ZX,ADIR1        ;UPDATE DIRECTION\r
+       LDA     AY,KTAB         ;GET NEW ARROW CODE\r
+       CPX     I,0\r
+       BNE     SC1\r
+       ORA     I,204\r
+       BMI     SC7\r
+SC1:   CPX     I,2\r
+       BNE     SC3\r
+       ORA     I,200\r
+       BMI     SC7\r
+SC3:   CPX     I,1\r
+       BNE     SC7\r
+       ORA     I,4\r
+SC7:   STA     ZX,ACOD1        ;SAVE IT\r
+       LDY     I,0\r
+       JSR     A,OUTX          ;AND OUTPUT NEW ARROW\r
+       JMP     A,SC6\r
+SC2:   CPX     Z,TOG           ;ON COMPUTER PLAY\r
+       BNE     SC6             ;CHANGE ARROW ONLY\r
+       LDA     Z,TIMER         ;ONCE PER MOVE\r
+       BNE     SC6\r
+       LDA     Z,CNTRL         ;STILL UNDER COMPUTER CONTROL?\r
+       BNE     SC6             ;NO\r
+       JSR     A,NEXT\r
+SC6:   INX                     ;DONE ALL FOUR PLAYERS?\r
+       CPX     I,4\r
+       BNE     SC10            ;NO\r
+       RTS                     ;YES\r
+NEXT:  STX     Z,TEMP2\r
+       LDY     I,0             ;CHOOSE STRATEGY\r
+       LDA     Z,TAMT          ;DEPENDENT ON GAME TIME\r
+       CMP     I,10.\r
+       BCS     NE60\r
+       LDY     I,1\r
+NE60:  STY     Z,SNUM\r
+       LDA     I,0\r
+       STA     Z,T1\r
+       STA     Z,T2\r
+       STA     Z,T3\r
+       STA     Z,T4\r
+       LDA     Z,TEMP2\r
+       ASL\r
+       TAX\r
+       LDA     ZX,POS1\r
+       SEC\r
+       SBC     I,40\r
+       STA     Z,PTR\r
+       LDA     ZX,POS1+1\r
+       SBC     I,0\r
+       STA     Z,PTR+1\r
+NE1:   LDX     I,0             ;LOOK AT SURROUNDING CELLS\r
+       LDY     I,0             ;IF NON-EMPTY SKIP CHECK LOGIC\r
+       LDA     NY,PTR\r
+       BNE     NE2             ;IF EMPTY, CHECK ADJACENT\r
+       LDA     Z,PTR           ;4 CELLS TO GET AN EXIT COUNT\r
+       SEC\r
+       SBC     I,40\r
+       STA     Z,TEMP1\r
+       LDA     Z,PTR+1\r
+       SBC     I,0\r
+       STA     Z,TEMP1+1\r
+       JSR     A,CHECK\r
+NE2:   LDY     I,41\r
+       INX\r
+       LDA     NY,PTR\r
+       BNE     NE3\r
+       LDA     Z,PTR\r
+       CLC\r
+       ADC     I,1\r
+       STA     Z,TEMP1\r
+       LDA     Z,PTR+1\r
+       ADC     I,0\r
+       STA     Z,TEMP1+1\r
+       JSR     A,CHECK\r
+NE3:   LDY     I,100\r
+       INX\r
+       LDA     NY,PTR\r
+       BNE     NE4\r
+       LDA     Z,PTR\r
+       CLC\r
+       ADC     I,40\r
+       STA     Z,TEMP1\r
+       LDA     Z,PTR+1\r
+       ADC     I,0\r
+       STA     Z,TEMP1+1\r
+       JSR     A,CHECK\r
+NE4:   LDY     I,37\r
+       INX\r
+       LDA     NY,PTR\r
+       BNE     NE5\r
+       LDA     Z,PTR\r
+       SEC\r
+       SBC     I,1\r
+       STA     Z,TEMP1\r
+       LDA     Z,PTR+1\r
+       SBC     I,0\r
+       STA     Z,TEMP1+1\r
+       JSR     A,CHECK\r
+NE5:   LDY     I,0\r
+NE6:   LDX     AY,T1           ;GET STATISTICAL CONVERSION\r
+       LDA     Z,SNUM          ;CHOOSE PROPER STRATEGY\r
+       BNE     NE40\r
+       LDA     AX,STAB1\r
+       BPL     NE41\r
+NE40:  LDA     AX,STAB2\r
+NE41:  STA     AY,T1\r
+       INY\r
+       CPY     I,4\r
+       BNE     NE6\r
+       LDX     Z,SNUM          ;GET PROPER STRATEGY\r
+       LDA     AX,SFOR\r
+       STA     Z,TEMP1\r
+       LDY     Z,TEMP2         ;GIVE FORWARD DIRECTION\r
+       LDX     AY,ADIR1        ;AN ADDED BIAS\r
+       LDY     I,0\r
+       TYA\r
+NE7:   CLC\r
+       ADC     ZX,T1\r
+       INY\r
+       CPY     Z,TEMP1\r
+       BNE     NE7\r
+       STA     ZX,T1\r
+       LDX     Z,SNUM          ;GET PROPER STRATEGY\r
+       LDA     AX,SCEN\r
+       STA     Z,TEMP1\r
+       LDX     I,1             ;GIVE IMPETUS TOWARD CENTER\r
+       LDA     Z,TEMP2\r
+       ASL\r
+       TAY\r
+       LDA     AY,POS1\r
+       AND     I,20\r
+       BEQ     S,+4\r
+       LDX     I,3\r
+       LDA     I,0\r
+       TAY\r
+NE30:  CLC\r
+       ADC     ZX,T1\r
+       INY\r
+       CPY     Z,TEMP1\r
+       BNE     NE30\r
+       STA     ZX,T1\r
+       LDX     I,0\r
+       LDA     Z,TEMP2\r
+       ASL\r
+       TAY\r
+       LDA     AY,POS1+1\r
+       AND     I,2\r
+       BNE     S,+4\r
+       LDX     I,2\r
+       LDA     I,0\r
+       TAY\r
+NE31:  CLC\r
+       ADC     ZX,T1\r
+       INY\r
+       CPY     Z,TEMP1\r
+       BNE     NE31\r
+       STA     ZX,T1\r
+       LDA     Z,T1\r
+       CLC\r
+       ADC     Z,T2\r
+       CLC\r
+       ADC     Z,T3\r
+       CLC\r
+       ADC     Z,T4\r
+       STA     Z,TEMP1\r
+       BEQ     NE50\r
+       JSR     A,RANDU         ;GET RANDOM #\r
+NE8:   CMP     Z,TEMP1         ;PUT RANDOM #\r
+       BCC     NE9             ;IN PROPER RANGE\r
+       SEC\r
+       SBC     Z,TEMP1\r
+       JMP     A,NE8\r
+NE9:   STA     Z,TEMP1\r
+       LDY     I,0\r
+       STY     Z,TEMP1+1\r
+       LDA     Z,T1            ;PICK DIRECTION\r
+       BEQ     NE20\r
+       CMP     Z,TEMP1\r
+       BCS     NE10\r
+       STA     Z,TEMP1+1\r
+NE20:  INY\r
+       LDA     Z,T2\r
+       BEQ     NE21\r
+       CLC\r
+       ADC     Z,TEMP1+1\r
+       CMP     Z,TEMP1\r
+       BCS     NE10\r
+       STA     Z,TEMP1+1\r
+NE21:  INY\r
+       LDA     Z,T3\r
+       BEQ     NE22\r
+       CLC\r
+       ADC     Z,TEMP1+1\r
+       CMP     Z,TEMP1\r
+       BCS     NE10\r
+NE22:  INY\r
+NE10:  LDX     Z,TEMP2\r
+       STY     ZX,ADIR1\r
+       LDA     AY,KTAB\r
+       CPX     I,0\r
+       BNE     NE71\r
+       ORA     I,204\r
+       BMI     NE70\r
+NE71:  CPX     I,2\r
+       BNE     NE72\r
+       ORA     I,200\r
+       BMI     NE70\r
+NE72:  CPX     I,1\r
+       BNE     NE70\r
+       ORA     I,4\r
+NE70:  STA     ZX,ACOD1\r
+       LDY     I,0\r
+       LDX     Z,TEMP2\r
+       JSR     A,OUTX          ;OUTPUT NEW ARROW\r
+NE50:  LDX     Z,TEMP2\r
+       RTS\r
+STAB1: .BYTE   0,1,7.,1\r
+STAB2: .BYTE   0,1,12.,1\r
+SFOR:  .BYTE   6,12.\r
+SCEN:  .BYTE   5,1\r
+CHECK: LDY     I,0             ;SCAN SURROUNDING CELLS\r
+       LDA     NY,TEMP1        ;EVERY EMPTY CELL\r
+       BNE     S,+4            ;BUMP COUNTER\r
+       INC     ZX,T1\r
+       LDY     I,41\r
+       LDA     NY,TEMP1\r
+       BNE     S,+4\r
+       INC     ZX,T1\r
+       LDY     I,100\r
+       LDA     NY,TEMP1\r
+       BNE     S,+4\r
+       INC     ZX,T1\r
+       LDY     I,37\r
+       LDA     NY,TEMP1\r
+       BNE     S,+4\r
+       INC     ZX,T1\r
+       RTS\r
+;ROUTINE TO PRODUCE A PSEUDO-RANDOM 8-BIT NUMBER\r
+RANDU: LDA     I,0\r
+       STA     Z,TEMP1+1\r
+       LDA     Z,UP4\r
+       ROL\r
+       ROL\r
+       ROL     Z,TEMP1+1\r
+       LDA     Z,UP1\r
+       AND     I,10\r
+       LSR\r
+       LSR\r
+       LSR\r
+       EOR     Z,TEMP1+1\r
+       LSR\r
+       ROL     Z,UP1\r
+       ROL     Z,UP2\r
+       ROL     Z,UP3\r
+       ROL     Z,UP4\r
+       LDA     Z,UP1           ;CHECK FOR LOCK-UP\r
+       BNE     RA1\r
+       LDA     Z,UP2\r
+       BNE     RA1\r
+       LDA     Z,UP3\r
+       BNE     RA1\r
+       LDA     Z,UP4\r
+       BNE     RA1\r
+       LDA     I,42            ;LOCK-UP OCCURRED\r
+       STA     Z,UP3\r
+RA1:   LDA     Z,UP3\r
+       RTS\r
+;RAM TEST\r
+TRAM:  LDX     I,0             ;FILL UP RAM WITH TEST PATTERN\r
+TT1:   TXA\r
+       CLC\r
+       ADC     I,4\r
+       STA     AX,2000\r
+       TXA\r
+       CLC\r
+       ADC     I,5\r
+       STA     AX,2400\r
+       TXA\r
+       CLC\r
+       ADC     I,6\r
+       STA     AX,3000\r
+       TXA\r
+       CLC\r
+       ADC     I,7\r
+       CPX     I,200           ;DO NOT CHECK WORKING RAM\r
+       BCS     S,+5\r
+       STA     AX,3400\r
+       INX\r
+       BNE     TT1\r
+TT2:   TXA                     ;NOW CHECK RAM CELLS\r
+       CLC\r
+       ADC     I,4\r
+TT3:   CMP     AX,2000         ;IF RAM CELL BAD,\r
+       STA     A,TREST\r
+       BNE     TT3             ;HANG ON CELL\r
+       TXA\r
+       CLC\r
+       ADC     I,5\r
+TT4:   CMP     AX,2400\r
+       STA     A,TREST\r
+       BNE     TT4\r
+       TXA\r
+       CLC\r
+       ADC     I,6\r
+TT5:   CMP     AX,3000\r
+       STA     A,TREST\r
+       BNE     TT5\r
+       TXA\r
+       CLC\r
+       ADC     I,7\r
+       CPX     I,200\r
+       BCS     TT40\r
+TT6:   CMP     AX,3400\r
+       STA     A,TREST\r
+       BNE     TT6\r
+TT40:  INX\r
+       BNE     TT2\r
+       LDA     I,0             ;TURN OFF SOUND\r
+       STA     Z,CRASH\r
+       LDX     I,0\r
+TT30:  JSR     A,WAIT\r
+       DEX\r
+       BNE     TT30\r
+       JSR     A,BLANK         ;BLANK SCREEN\r
+       LDX     I,0             ;ROM CHECKSUM\r
+       LDA     I,PWRON&177400/256.\r
+       STA     Z,PTR+1\r
+TT8:   LDA     I,4\r
+       STA     Z,TEMP1\r
+       LDA     I,0\r
+       STA     Z,PTR\r
+       TAY\r
+TT7:   CLC\r
+       ADC     NY,PTR          ;BUILD CHECKSUM\r
+       INY\r
+       STA     A,TREST         ;PULSE WATCHDOG\r
+       BNE     TT7\r
+       INC     Z,PTR+1\r
+       DEC     Z,TEMP1\r
+       BNE     TT7\r
+       CMP     AX,CKSUM\r
+       BEQ     TT9\r
+       TXA                     ;BAD ROM CHECKSUM\r
+       ORA     I,60\r
+       STA     AX,PLAYFIELD+1020       ;OUTPUT ROM # TO SCREEN\r
+TT9:   INX\r
+       CPX     I,4\r
+       BNE     TT8\r
+       STA     A,AMODE         ;TURN ON SOUND\r
+       LDA     I,14\r
+       STA     Z,SOUND\r
+       STA     A,SB1+1         ;TURN ON LITES\r
+       STA     A,SB2+1\r
+       STA     A,SB3+1\r
+       STA     A,SB4+1\r
+TT10:  LDX     I,0             ;SWITCH TEST\r
+       LDY     I,0\r
+TT11:  LDA     AX,4030\r
+       BMI     TT12\r
+       LDY     I,6\r
+TT12:  INX\r
+       CPX     I,8.\r
+       BNE     TT11\r
+       LDX     I,0\r
+TT15:  LDA     AX,4050\r
+       BMI     TT16\r
+       LDY     I,6\r
+TT16:  INX\r
+       CPX     I,8.\r
+       BNE     TT15\r
+       LDA     A,4100\r
+       BMI     S,+4\r
+       LDY     I,6\r
+       ROL\r
+       BMI     S,+4\r
+       LDY     I,6\r
+       STY     Z,CRASH\r
+TT20:  LDA     A,AMODE\r
+       ROL\r
+       ROL\r
+       BPL     TT20\r
+       STA     A,TREST         ;PULSE WATCHDOG\r
+       LDA     I,0\r
+       STA     Z,CRASH\r
+       LDA     A,ST\r
+       BPL     TT10\r
+       JMP     A,PWRON\r
+CKSUM: .BYTE   172,200,134,60,172\r
+KTAB:  .BYTE   72,73,70,71\r
+TAB1:  .BYTE   50,50,52,52,52,40\r
+       .BYTE   40,40,156,156,156,50\r
+TAB2:  .BYTE   42,42,54,54,54,56\r
+       .BYTE   56,56,44,44,44,42\r
+TAB3:  .BYTE   50,50,46,46,46,40\r
+       .BYTE   40,40,142,142,142,50\r
+TAB4:  .BYTE   146,146,54,54,54,152\r
+       .BYTE   152,152,44,44,44,146\r
+NMI:   PHA\r
+       TXA\r
+       PHA\r
+       CLD\r
+       LDA     Z,RTEST         ;CHECK RAM CELLS\r
+       CMP     I,222\r
+       BNE     NM2\r
+       LDA     Z,RTEST+1\r
+       CMP     I,77\r
+       BNE     NM2\r
+       TSX\r
+       LDA     AX,405          ;GET PCH\r
+       CMP     I,60            ;VALID RANGE?\r
+       BCC     NM3\r
+       CMP     I,100\r
+       BCS     NM3\r
+NM1:   PLA\r
+       TAX\r
+       PLA\r
+       RTI\r
+NM2:   LDA     I,222\r
+       STA     Z,RTEST\r
+       LDA     I,77\r
+       STA     Z,RTEST+1\r
+NM3:   JMP     A,PWRON\r
+MESG:  .WORD   MES0\r
+       .WORD   MES1\r
+       .WORD   MES2\r
+       .WORD   MES3\r
+       .WORD   MES4\r
+       .WORD   MES5\r
+       .WORD   MES6\r
+       .WORD   MES7\r
+       .WORD   MES8\r
+POSM:  .WORD   PLAYFIELD+54\r
+       .WORD   PLAYFIELD+14\r
+       .WORD   PLAYFIELD+150\r
+       .WORD   PLAYFIELD+150\r
+       .WORD   PLAYFIELD+150\r
+       .WORD   PLAYFIELD+502\r
+       .WORD   PLAYFIELD+1045\r
+       .WORD   PLAYFIELD+715\r
+       .WORD   PLAYFIELD+712\r
+BPOS:  .WORD   SPOS1\r
+       .WORD   SPOS2\r
+       .WORD   SPOS3\r
+       .WORD   SPOS4\r
+SWTAB: .WORD   SW1\r
+       .WORD   SW2\r
+       .WORD   SW3\r
+       .WORD   SW4\r
+MES0:  .BYTE   75\r
+       .ASCII  / SCORE /\r
+       .BYTE   277,0\r
+MES1:  .ASCIZ  /GAME OVER/\r
+MES2:  .ASCIZ  /1 PLAY PER COIN/\r
+MES3:  .ASCIZ  /2 PLAYS PER COIN/\r
+MES4:  .ASCIZ  /4 PLAYS PER COIN/\r
+MES5:  .ASCIZ  /YOU HAVE CREDIT FOR   PLAYERS/\r
+MES6:  .ASCIZ  /PUSH YOUR START BUTTON/\r
+MES7:  .ASCIZ  /WINNER/\r
+MES8:  .ASCIZ  /EACH PLAYER/\r
+       .REPT   37772-.\r
+       .BYTE   0\r
+       .ENDM\r
+       .WORD   NMI,PWRON,PWRON\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
\ No newline at end of file
diff --git a/A07764.RBN b/A07764.RBN
new file mode 100644 (file)
index 0000000..28f2c2b
Binary files /dev/null and b/A07764.RBN differ
diff --git a/A07765.RBN b/A07765.RBN
new file mode 100644 (file)
index 0000000..c4faf72
Binary files /dev/null and b/A07765.RBN differ
diff --git a/DOMIN4.DIR b/DOMIN4.DIR
new file mode 100644 (file)
index 0000000..e180d63
Binary files /dev/null and b/DOMIN4.DIR differ
diff --git a/DOMIN4.MAP b/DOMIN4.MAP
new file mode 100644 (file)
index 0000000..a1cc8d0
Binary files /dev/null and b/DOMIN4.MAP differ