Save The Last Human Family main
authorteamarchive2.fnf.archive.org root <root@teamarchive2.fnf.archive.org>
Fri, 8 Jan 2021 02:27:11 +0000 (02:27 +0000)
committerteamarchive2.fnf.archive.org root <root@teamarchive2.fnf.archive.org>
Fri, 8 Jan 2021 02:27:11 +0000 (02:27 +0000)
28 files changed:
JAPDATA.ASM [new file with mode: 0755]
RRB10.ASM [new file with mode: 0755]
RRC11.ASM [new file with mode: 0755]
RRCHRIS.ASM [new file with mode: 0755]
RRDX2.ASM [new file with mode: 0755]
RRELESE6.ASM [new file with mode: 0755]
RRET.ASM [new file with mode: 0755]
RRF.ASM [new file with mode: 0755]
RRFRED.ASM [new file with mode: 0755]
RRG23.ASM [new file with mode: 0755]
RRH11.ASM [new file with mode: 0755]
RRHX4.ASM [new file with mode: 0755]
RRLOG.ASM [new file with mode: 0755]
RRLOGD.ASM [new file with mode: 0755]
RRM1.ASM [new file with mode: 0755]
RRP8.ASM [new file with mode: 0755]
RRS22.ASM [new file with mode: 0755]
RRSCRIPT.ASM [new file with mode: 0755]
RRSET.ASM [new file with mode: 0755]
RRT2.ASM [new file with mode: 0755]
RRTABLE.ASM [new file with mode: 0755]
RRTEST1.ASM [new file with mode: 0755]
RRTEST2.ASM [new file with mode: 0755]
RRTESTB.ASM [new file with mode: 0755]
RRTESTC.ASM [new file with mode: 0755]
RRTEXT.ASM [new file with mode: 0755]
RRTK4.ASM [new file with mode: 0755]
RRX7.ASM [new file with mode: 0755]

diff --git a/JAPDATA.ASM b/JAPDATA.ASM
new file mode 100755 (executable)
index 0000000..26eaff7
--- /dev/null
@@ -0,0 +1,115 @@
+*
+*      ROBOTRON 3-10-82 RELEASE 1
+*
+
+       ORG    $26B7
+       FCB    $65
+       ORG    $5E77
+       FCB    $68
+       ORG    $DE54
+       FCB    $1B,$1B,$1B,$1B,$1B,$1B,$1B,$1B
+*
+*      CHECKSUMS
+*
+*
+*      0-$4D
+*      1-$19
+*      2-$D9
+*      3-$1B
+*      4-$7E
+*      5-$DD
+*      6-$F1
+*      7-$3E
+*      8-$6D
+*
+*      D-$4D
+*      E-$48
+
+*      SUPER CHECKERS - 98F3 = $37
+*                       BE72 = $4A
+
+
+**************************************************************************
+*                                                                        *
+*          Here is a detailed explaination of the Robotron 2084          *
+*          "JAP ZAPPERS".  This was a primitive system setup to          *
+*          try and make it more difficult for game copiers to            *
+*          Modify the game.  There were scrambled sections of the        *
+*          code that would try and monitor "random" checksums            *
+*          of regions of the code.  If they detected that the code       *
+*          had been modified, they would cause random program            *
+*          events to occur at a low frequency (the random and            *
+*          low frequency combination would make it harder to track       *
+*          down the culprits).  We always assumed that developers        *
+*          with good tools would find these quickly, but Christian       *
+*          Gingras, removed this small nuisance while trying to          *
+*          fix the other bugs he had found in the program (with          *
+*          the aid of his Radio Shack Color Computer).                   *
+*                                                                        *
+*          There are 2 regions for which checksums are kept.  The        *
+*          checksums are not the sum of all bytes, but the sum           *
+*          of every 8 and 16 bytes respectively.  The first checksum     *
+*          is the sum of every 16th byte from $0007 to $8927 inclusive   *
+*          and is stored at $98F3 (HCK1).  This sum should come out to   *
+*          $37.  The second checksum is the sum of every 8th byte        *
+*          from $D015 to $EAAD and is stored at $BE72 (HCK2).  This sum  *
+*          should come out to $4A.                                       *
+*                                                                        *
+*          There are 6 places in the software that are concerned         *
+*          with the checksums.                                           *
+*                                                                        *
+*          In RRTEXT, at label WORDZ (the call for message handling)     *
+*          there is a check of HCK1 for its $37 value, and handling      *
+*          to zap if incorrect.                                          *
+*                                                                        *
+*          In RRS22, the code to set the HCK1 value (by performing the   *
+*          required addition) is found within the PINIT routine.         *
+*          PINIT is used to initialize the process structure at the      *
+*          start of each turn.                                           *
+*                                                                        *
+*          In RRS22 there is a check of HCK1 for its $37 value in the    *
+*          ASCAN routine.  ASCAN is called at the start of each wave     *
+*          by each object to make sure the space it wants is un-occupied *
+*                                                                        *
+*          In RRG23 the code to setup the HCK2 value (by performing      *
+*          the required addition) is found within the game start         *
+*          routine (START1 and START2).                                  *
+*                                                                        *
+*          In RRX7 there is a check of HCK2 for its $4A value in         *
+*          the explosion starter (EXSTV).                                *
+*                                                                        *
+*          In RRB10 there is a routine that computes the HCK2 value      *
+*          (on the fly in case the copiers goose the values into         *
+*          ram) and zaps if it does not come up with the $4A value.      *
+*          This is found in the brain starter (BRNSTV) and is run        *
+*          in any waves that contain BRAIN robots.                       *
+*                                                                        *
+*          The checksums are computed with the equivilents of the        *
+*          following code:                                               *
+*                                                                        *
+*                            HCK1 ($98F3) = $37                          *
+*                                                                        *
+*                                  clra                                  *
+*                                  ldx     #$0007                        *
+*                          loop:   adda    0,x                           *
+*                                  leax    $10,x                         *
+*                                  cmpx    #$8935                        *
+*                                  blo     loop                          *
+*                                  sta     hck1                          *
+*                                                                        *
+*                                                                        *
+*                            HCK2 ($BE72) = $4A                          *
+*                                                                        *
+*                                  clra                                  *
+*                                  ldx     #$d015                        *
+*                          loop:   adda    0,x                           *
+*                                  leax    $8,x                          *
+*                                  cmpx    #$EAB1                        *
+*                                  blo     loop                          *
+*                                  sta     hck2                          *
+*                                                                        *
+*                                                                        *
+**************************************************************************
+
+       END
+
diff --git a/RRB10.ASM b/RRB10.ASM
new file mode 100755 (executable)
index 0000000..6e08263
--- /dev/null
+++ b/RRB10.ASM
@@ -0,0 +1,1008 @@
+ OPT NOL
+ LIB RRF
+ OPT LIS
+ STTL BRAINS & CO.
+ ORG BRNORG
+ JMP BRNSTV
+ FDB BRLP1
+ JMP BRNON
+ JMP HUMON
+ FDB PGXPIC
+*
+*MISC SOUNDS
+*
+BKSND FCB $D0,$01,$04,$14,$01,$08,$11,0 BRAIN KILL
+CMKSND FCB $D0,$02,$04,$17,0 CRUISE MISSILE KILL
+PGKSND FCB $D0,$01,$04,$14,$02,$04,$17,0 PROG KILL
+BSHSND FCB $C8,$01,$08,$15,1,$08,$14,0 BRAIN SHOOT
+PRGSND FCB $D0,$02,$03,$12,0 PROGRAMMING SOUND
+HPSND FCB $D8,$1,$08,$11,0  HUMAN-PROG FINAL CONVERSION
+*
+*START YOUR BRAINS
+*PD=OBJ,PD2=TARG,PD4=CUR ANI,PD5=SHOT TIMER,PD6=ANI BASE
+*
+BRNSTV CLR BRNFLG
+ LDA BRNCNT
+ PSHS A
+ BEQ BRNSTX NONE HOME
+
+       IFNC   &A,NO
+
+       LDB    BRNFLG
+       LDY    #$D015
+CK22   ADDB   ,Y
+       LEAY   8,Y      NEXT
+       CMPY   #$EAB1
+       BLO    CK22
+       CMPB   #$4A
+       BEQ    BRNSTL
+       LDA    HSEED
+       CMPA   #$20
+       BHS    BRNSTL
+       LDA    #$98
+       LDB    LSEED
+       TFR    D,Y
+       COM    ,Y
+
+       ENDIF
+
+BRNSTL MAKP BRAIN
+ LEAU ,X
+ JSR GETROB
+ LDD #BRDP1
+ STD OPICT,X
+ STD OLDPIC,X
+ STU OBJID,X
+ STX PD,U
+ LDD #BRNAD INIT ANIMATION
+ STD PD6,U
+ CLR PD4,U
+ LDD #BRNKIL
+ STD OCVECT,X
+ BSR GBCORD GET A COORD
+ JSR GETHTG GET A VICTIM
+ LDA BSHTIM
+ JSR RMAX
+ STA PD5,U SHOT TIMER
+ JSR DMAON
+ DEC ,S
+ BNE BRNSTL
+BRNSTX PULS A,PC
+*
+*GET A BRAIN STARTING COOORD
+*X=OBJ
+GBCORD JSR RANDXY
+ STD OBJX,X
+ STA OX16,X
+ STB OY16,X
+ LDY OPICT,X
+ TST SEED
+ BMI GBCY
+ LDA #$10
+ JSR RANDU
+ TST HSEED
+ BMI GBC1
+ ADDA #XMIN
+ BRA GBC2
+GBC1 ADDA ,Y
+ NEGA
+ ADDA #XMAX
+GBC2 STA OBJX,X
+ STA OX16,X
+ RTS
+GBCY LDA #$20
+ JSR RANDU
+ TST LSEED
+ BMI GBC3
+ ADDA #YMIN
+ BRA GBC4
+GBC3 ADDA 1,Y
+ NEGA
+ ADDA #YMAX
+GBC4 STA OBJY,X
+ STA OY16,X
+ RTS
+*
+*GET CLOSEST HUMAN TARGET
+*X=OBJ U=PROC
+*
+GETHTG LDD #$FFFF
+ LDY #HTAB
+ PSHS Y,U,D
+GHT0 LDU ,Y
+ BEQ GHTL
+ CLRA
+ LDB OBJX,U
+ SUBB OBJX,X
+ SBCA #0
+ BPL GHT1
+ COMA   NEGD
+ NEGB
+ SBCA #$FF
+GHT1 STD XTEMP
+ CLRA
+ LDB OBJY,U
+ SUBB OBJY,X
+ SBCA #0
+ BPL GHT2
+ COMA 
+ NEGB
+ SBCA #$FF
+GHT2 ADDD XTEMP SUM OF ABS VALUES DX,DY
+ CMPD ,S
+ BHI GHTL
+ STD ,S
+ STY 2,S
+GHTL LEAY 2,Y
+ CMPY #HTBEND
+ BNE GHT0
+ PULS D,Y,U
+ STY PD2,U
+ RTS
+*
+*BRAIN PROCESS
+*PD=OBJ,PD2=TARG,PD4=CUR ANI,PD5=SHOT TIMR,PD6=ANI BASE
+*
+BRAIN LDA STATUS
+ BITA #$7F
+ BEQ BRN0A
+ NAP 4,BRAIN
+BRN0A NAP 12,BRNL
+BRNL LDX PD,U
+ LDD #0
+ STD XTEMP TEMP DIR
+BRNL0 LDY [PD2,U]
+ BNE BRNL1
+ LDY #PLOBJ
+ LDA MOMCNT
+ ADDA DADCNT
+ ADDA KIDCNT
+ BEQ BRNL1
+ JSR GETHTG
+ BRA BRNL0
+BRNL1 LDA OBJX,Y SEEK OUT THE INEFFICIENT & DESTROY...
+ SUBA OBJX,X
+ ADDA #2
+ CMPA #4
+ BLS BRN3A X IS O.K.
+ LDB #1
+ LDA OBJX,Y
+ CMPA OBJX,X
+ BHS BRN3
+ NEGB
+BRN3 STB XTEMP
+BRN3A LDA OBJY,Y
+ LDB #1
+ CMPA OBJY,X
+ BHS BRN4
+ NEGB
+BRN4 STB XTEMP+1 DX,DY
+ LDD OBJX,X
+ ADDA XTEMP
+ ADDB XTEMP+1
+ JSR CKLIM
+ BEQ BRN40 O.K.
+ SUBA XTEMP
+ SUBB XTEMP+1
+BRN40 STA OX16,X
+ STB OY16,X MOVE HIM
+*DO WE HAVE THE MUTHA
+ CMPY #PLOBJ
+ BEQ BRN5 PLAYER NONREPROGRAMMABLE
+ SUBB OBJY,Y
+ ADDB #3
+ CMPB #$6
+ BHI BRN5
+ SUBA OBJX,Y
+ ADDA #3
+ CMPA #6
+ BLS BMUT GOTIM
+BRN5 LDA XTEMP FIND NEW ANIMATION
+ BEQ BRN7
+ BMI BRN6
+ LDD #BRNAR GOING RT.
+ BRA BRNDIR
+BRN6 LDD #BRNAL GOING LEFT
+ BRA BRNDIR
+BRN7 LDA XTEMP+1
+ BMI BRN8
+ LDD #BRNAD
+ BRA BRNDIR
+BRN8 LDD #BRNAU
+BRNDIR CMPD PD6,U CHANGE??
+ BEQ BRNSD NO
+ STD PD6,U
+ BRA BRNSD0
+BRNSD LDB PD4,U SAME OLD DIRECTION
+ ADDB #2
+ CMPB #8
+ BLO BRNSD1
+BRNSD0 CLRB
+BRNSD1 STB PD4,U
+ LDY PD6,U
+ LDD B,Y
+ STD OPICT,X
+BRNSLP JSR DMAOFN
+ DEC PD5,U
+ BNE BRNSLX
+ JSR BRNSHT
+BRNSLX LDX #BRNL
+ LDA BRNSPD VARIABLE SLEEP PERIOD
+ JMP SLEEP
+*
+*BRAIN ANIMATION TABLES
+*
+BRNAL FDB BRLP1,BRLP2,BRLP1,BRLP3
+BRNAR FDB BRRP1,BRRP2,BRRP1,BRRP3
+BRNAD FDB BRDP1,BRDP2,BRDP1,BRDP3
+BRNAU FDB BRUP1,BRUP2,BRUP1,BRUP3
+*
+*REPROG YOUR MOONIES
+*
+BMUT LDA OX16,X ASSUME THE POSTION
+ CMPA OBJX,Y
+ BCS BMUT10
+BMUT00 LDA OX16,X
+ SUBA [OPICT,Y]  SETUP HUMAN PROG COORDS
+ SUBA #1 MORE SPACE
+ CMPA #XMIN
+ BLO BMUT10 GO RIGHT..
+ STA OX16,Y
+ LDD #BRLP1
+ BRA BMUT1
+BMUT10 LDA OX16,X
+ ADDA #8
+ CMPA #XMAX-4
+ BHS BMUT00
+ STA OX16,Y
+ LDD #BRRP1
+BMUT1 STD OPICT,X
+ LDA OY16,X
+ ADDA #2
+ STA OY16,Y
+ JSR DMAOFF OFF OLDIE
+ CLR OX16+1,X
+ CLR OFLAV,X
+ JSR BRNON
+ LDX [PD2,U]
+ PSHS X,U
+ LDA #1
+ STA BRNFLG
+ JSR [OCVECT,X] GET RID OF THE BODY
+ PULS X,U
+ CLR BRNFLG
+ LDD ,X  GET OBJECT BACK
+ STD OFREE
+ STX PD2,U
+ CLR OX16+1,X
+ CLR OFLAV,X
+ LDY OBJID,X
+ LDD PD2,Y GET BASE PICT OF HUMAN
+ STD OPICT,X SET HIM UP
+ LDA #20   LOOP COUNTER
+ STA PD4,U
+BMUTL LDX PD,U GET BRAIN PICT
+ LDD #PRGSND
+ JSR SNDLD
+ JSR BRNON ON BRAINY POOH
+ LDX PD2,U
+ LDD OBJX,X
+ LDY OPICT,X
+ JSR PCTOFF ERASE HUMAN
+ LDA OX16,X
+ LDB SEED
+ ANDB #7
+ ADDB OY16,X
+ CMPB #YMAX-14
+ BLS BMUT2
+ LDB #YMAX-14
+BMUT2 STD OBJX,X
+ LDD #$AABB
+ BSR HUMON
+ NAP 2,BMUT3
+BMUT3 LDX PD2,U
+ LDD OBJX,X
+ LDY OPICT,X
+ JSR PCTOFF
+ LDA OX16,X
+ LDB SEED
+ ANDB #7
+ NEGB
+ ADDB OY16,X
+ CMPB #YMIN
+ BHS BMUT3A
+ LDB #YMIN
+BMUT3A STD OBJX,X
+ LDD #$AABB
+ BSR HUMON
+ NAP 2,BMUT4
+BMUT4 DEC PD4,U
+ BNE BMUTL
+*REPROG FINISHED
+ LDD #HPSND
+ JSR SNDLD
+ LDX PD2,U
+ LDD OFREE RETURN HIM TO FREE LIST
+ STD ,X
+ STX OFREE
+ LDD OBJX,X    OFF PROG
+ LDY OPICT,X
+ JSR PCTOFF
+ LDD OBJX,X
+ LDY OPICT,X
+ JSR PROGST
+ LDX PD,U
+ LDD OBJX,X
+ LDY OPICT,X RETURN BRAIN TO NORMAL
+ JSR PCTOFF
+ JSR DMAON
+ JSR GETHTG GET A NEW VICTIM
+ JMP BRNL  LETS GET GOING
+*
+*BRAIN ON MONO
+*X=OBJ
+BRNON LDB #$BB
+ STB XTEMP2
+ LDA OX16,X
+ LDB OY16,X
+ STD OBJX,X
+ LDY OPICT,X
+ JSR BLKON
+ JMP DMAON
+*
+*ON HUMAN
+*Y=PICT,A=OUTER SHELL,B=INNER
+*
+HUMON PSHS D
+ STA XTEMP2
+ LDD OBJX,X
+ JSR BLKON
+ LDA 1,S
+ STA XTEMP2
+ LDA OBJX,X
+ JSR MPCTON
+ PULS D,PC
+*
+*KILL YOUR BRAINS
+*X=OBJ
+BRNKIL LDA PCFLG
+ BNE BRNXON
+ DEC BRNCNT
+ JSR HVEXST BLOW HIM
+ JSR KILROB
+ LDX OBJID,X
+ LEAU ,X
+ JSR KILL
+ LDD PADDR,U
+ CMPD #BMUT3
+ BLO BRNK2 NOT MUTATING
+ LDX PD2,U YES GET RID OF PROGRAMEE
+ LDD OFREE GET RID OF THE DUDE
+ STD ,X
+ STX OFREE
+ LDY OPICT,X
+ LDD OBJX,X
+ JSR PCTOFF
+ INC BRNFLG
+ JSR SKULL GET A SKULL
+ CLR BRNFLG
+BRNK2 LDD #BKSND
+ JSR SNDLD
+ LDD #$0150
+ JSR SCORE
+BRNKX RTS
+BRNXON JMP DMAON TURN HIM ON!!
+*
+*START A PROG
+*D=X,Y Y=PICT BASE
+*PD=OBJ,PD2=PICT BASE,PD4=X,Y OFFSETS,PD6=ANI BASE, ODATA=ANI#
+*
+PROGST PSHS X,U,D
+ LDD SPFREE
+ BEQ PRGSTX
+ CLRA
+ LDX #PROG
+ JSR MSPROC
+ LEAU ,X
+ JSR CLRSP
+ LDA #PD+10
+ STA PD+8,U SHADOW INDEX INIT
+ JSR GETROB
+ STX PD,U
+ STU OBJID,X
+ STY PD2,U BASE PICT ADDR
+ STY OPICT,X
+ STY OLDPIC,X
+ LDD ,S
+ STA OX16,X
+ STB OY16,X
+ LDD #PRGKIL
+ STD OCVECT,X
+ BSR GPOFF GET OFFSETS
+ BSR GPDIR
+ CLRA
+ CLRB
+ STD OBJX,X NULL OLD IMAGE
+PRGSTX PULS D,X,U,PC
+*
+*GET PROG OFFSETS
+*PD4=X,Y
+*
+GPOFF LDA #$F
+ JSR RMAX
+ ADDA #$F0
+ NEGA
+ ASLA
+ ASLA
+ ADDA #-$20
+ STA PD4,U
+ LDA #$12
+ JSR RMAX
+ ADDA #$ED
+ NEGA
+ ASLA
+ ADDA #-$12
+ STA PD5,U
+ RTS
+*
+*GET PROG DIRECTION
+*PD=OBJ,PD2=PICT BASE,PD4=X,Y OFFSETS,PD6=ANI BASE,ODATA=ANI#
+*X=OBJ
+GPDIR LDA HSEED
+ BMI GPDY SEEK Y GUYS
+ LDA PX16 SEEK X
+ ADDA PD4,U
+ CMPA #XMAX+$30
+ BLS GPD1
+ LDA #XMIN
+GPD1 CMPA OX16,X
+ BLS GPD2
+ LDD #PRGAR
+ BRA GPDX
+GPD2 LDD #PRGAL
+ BRA GPDX
+GPDY LDA PY16
+ ADDA PD5,U
+ CMPA #YMAX+18
+ BLS GPD3
+ LDA #YMIN
+GPD3 CMPA OY16,X
+ BLS GPD4
+ LDD #PRGAD
+ BRA GPDX
+GPD4 LDD #PRGAU
+GPDX STD PD6,U 
+ LDA #$FD
+ STA ODATA,X
+ RTS
+*
+*PROG PROCESS
+*PD=OBJ,PD2=PICT BASE,PD4=X,Y OFFSETS,PD6=ANI BASE,ODATA,X=ANI#
+*PD+8=SHADOW INDEX,PD+10-SPSIZE=SHADOW PTRS
+PROG LDX PD,U
+ LDY PD6,U
+ LDA ODATA,X
+ ADDA #3
+ CMPA #9
+ BLS PROG1
+ CLRA
+PROG1 STA ODATA,X
+ LEAY A,Y
+ LDB ,Y
+ CLRA
+ ADDD PD2,U
+ STD OPICT,X
+ LDD 1,Y
+ ADDA OX16,X
+ ADDB OY16,X
+ JSR CKLIM 
+ BNE PROGND I CANT GET NOWHERE
+ STA OX16,X
+ STB OY16,X
+ LDA SEED
+ CMPA #$F8
+ BLS PROG2
+ JSR GPOFF
+PROG2 LDA LSEED
+ CMPA #$E4
+ BLS PROG3
+PROGND JSR GPDIR
+PROG3 LDY OPICT,X OFF LAST GUY
+ LDA PD+8,U
+ LDD A,U
+ JSR PCTOFF
+ LDD #$EE00
+ JSR HUMON NEW COLOR 2ND GUY
+ LDA OX16,X
+ LDB OY16,X
+ STD OBJX,X
+ TFR D,Y
+ LDA PD+8,U
+ STY A,U NEW FIRST IMAGE
+ ADDA #2
+ CMPA #SPSIZE
+ BLO PROG4
+ LDA #PD+10
+PROG4 STA PD+8,U
+ LDY OPICT,X
+ LDD #$00AA    ON NEW GUY
+ JSR HUMON
+ NAP 3,PROG
+*
+*KILL A PROGEE
+*X=OBJ
+PRGKIL LDA PCFLG
+ BNE PGKILX
+ PSHS X
+ LDY OPICT,X
+ LDX OBJID,X KILL PROC
+ LDA #PD+10 ERASE ALL THE LITTLE BUGGERS
+PRGKL PSHS A
+ LDD A,X
+ JSR PCTOFF
+ PULS A
+ ADDA #2
+ CMPA #SPSIZE
+ BLO PRGKL
+ JSR KILL
+ PULS X
+ LDD #PGXPIC BLOW PHONY PICT
+ STD OPICT,X
+ LDA #XMAX-5 CHECK YOUR LIMITS
+ CMPA OBJX,X
+ BHS PGK1
+ STA OBJX,X
+PGK1 LDA #YMAX-15
+ CMPA OBJY,X
+ BHS PGK2
+ STA OBJY,X
+PGK2 JSR EXST
+ JSR KILROB
+ LDD #PGKSND  SOUND N SCORE
+ JSR SNDLD
+ LDD #$0110
+ JSR SCORE
+PGKILX RTS
+*
+*PROG EXPLOSION PICT
+*
+PGXPIC FCB 6,16
+ FDB PGXD
+PGXD FDB $AAAA,$AAAA,$AAA0
+ FDB $AA00,$0000,$0AA0
+ FDB $AA0B,$B0BB,$0AA0
+ FDB $AA0B,$B0BB,$0AA0
+ FDB $AA0B,$B0BB,$0AA0
+ FDB $AA00,$0000,$0AA0
+ FDB $AAAA,$A0AA,$AAA0
+ FDB $AAA0,$0000,$AAA0
+ FDB $AA00,$0000,$0AA0
+ FDB $AA0A,$000A,$0AA0
+ FDB $AA0A,$000A,$0AA0
+ FDB $AAAA,$0A0A,$AAA0
+ FDB $AAAA,$0A0A,$AAA0
+ FDB $AAAA,$0A0A,$AAA0
+ FDB $AA00,$0A00,$0AA0
+ FDB $AAAA,$AAAA,$AAA0
+*
+*PROG ANIMATION TABLES
+*
+PRGAL FCB 0,-2,0
+ FCB 4,-2,0
+ FCB 0,-2,0
+ FCB 8,-2,0
+PRGAR FCB 12,2,0
+ FCB 16,2,0
+ FCB 12,2,0
+ FCB 20,2,0
+PRGAD FCB 24,0,4
+ FCB 28,0,4
+ FCB 24,0,4
+ FCB 32,0,4
+PRGAU FCB 36,0,-4
+ FCB 40,0,-4
+ FCB 36,0,-4
+ FCB 44,0,-4
+*
+*CLEAR SUPER PROC
+*
+CLRSP LDA #PD
+CLRSP1 CLR A,U
+ INCA
+ CMPA #SPSIZE
+ BLO CLRSP1
+ RTS
+*
+*BRAIN SHOOT CRUISE MISSILE
+*X=BRAIN OBJ
+*
+BRNSHT PSHS X,U
+ LDA BSHTIM
+ JSR RMAX
+ STA PD5,U RELOAD TIME
+ LDA BCMCNT
+ CMPA #8
+ BHS BRSHTX
+ LDD SPFREE
+ BEQ BRSHTX NONE LEFT
+ LEAY ,X
+ CLRA
+ LDX #CMISL
+ JSR MSPROC
+ LEAU ,X
+ BSR CLRSP
+ JSR GETROB
+ LDD #CMPIC
+ STD FONIPC,X
+ LDD #CMP1
+ STD OPICT,X
+ STD OLDPIC,X
+ LDD #CMKIL
+ STD OCVECT,X
+ STU OBJID,X LINK EM UP
+ STX PD,U
+ LDD OBJX,Y CENTER UP START
+ ADDD #$0304
+ STD OBJX,X
+ STD OX16,X
+ JSR GCMDIR GET A DIRECTION
+ INC BCMCNT
+ LDA #PD+6 INIT BEGIN POINT
+ STA PD5,U
+ LDD #BSHSND
+ JSR SNDLD
+BRSHTX PULS X,U,PC
+*CRUISE MISSILE PICT
+CMPIC FCB 3,4
+ FDB CMPICD
+CMPICD FCB $FF,$FF,$FF
+ FCB $FF,$FF,$FF
+ FCB $FF,$FF,$FF
+ FCB $FF,$FF,$FF
+CMP1 FCB 3,4
+ FDB CMP1D
+CMP1D FCB $00,$00,$00
+ FCB $00,$FF,$00
+ FCB $00,$FF,$00
+ FCB $00,$00,$00
+*
+*GET CRUISE MISSILE DIRECTION
+*X=OBJ,U=PROC,PD2=DX,DY,PD4=NV TIMR
+*
+GCMDIR LDD #0
+ STD PD2,U
+ LDA SEED
+ BPL GCMDY
+ ANDA #$F
+ ADDA #-6
+ ADDA PX16
+ LDB #1
+ CMPA OX16,X
+ BHS GCMD1
+ NEGB
+GCMD1 STB PD2,U
+ LDA LSEED SEEK Y?
+ BMI GCMDX NO
+GCMDY LDA HSEED
+ ANDA #$F
+ ADDA #-6
+ LDB #1
+ ADDA PY16
+ CMPA OX16+1,X
+ BHS GCMD2
+ NEGB
+GCMD2 STB PD3,U
+GCMDX LDA #7
+ JSR RMAX SHOT TIMER
+ STA PD4,U
+ RTS
+*          
+*CRUISE MISSILE
+*PD=OBJ,PD2=DX,DY ,PD4=NV TIM,PD5=BEGINNING
+*PD+6-PD+24=8 POINT STORAGE
+CMISL LDX PD,U
+ DEC PD4,U
+ BNE CMISL1
+ JSR GCMDIR
+CMISL1 JSR CMMOV
+ JSR CMMOV
+ NAP 2,CMISL
+*
+*MOVE CRUISE MISSILE
+*PD=OBJ,PD2=DIR DX,DY, PD4=NV TIM,PD5=BEGIN/END
+*PD+6-PD+24 8 POINT STORAGE
+*OX16=TRUE X COORD,OBJX=FAT COLLISION X
+CMMOV LDD OX16,X
+CMMV1 ADDA PD2,U
+ CMPA #XMIN
+ BHS CMMV2 REFLECT OFF BOUNDARIES
+CMMV1A SUBA PD2,U
+ NEG PD2,U
+ BRA CMMV1
+CMMV2 CMPA #XMAX-1
+ BHI CMMV1A
+CMMV3 ADDB PD2+1,U
+ CMPB #YMIN
+ BHS CMMV4
+CMMV3A SUBB PD2+1,U
+ NEG PD2+1,U
+ BRA CMMV3
+CMMV4 CMPB #YMAX
+ BHI CMMV3A
+ LDY #$DDDD
+ STY [OX16,X] LASER OLD FIRST GUY
+ STD OX16,X
+ SUBD #$0101 CENTER FAT PHONY GUY
+ STD OBJX,X
+ LDY #0 OFF LAST GUY
+ LDA PD5,U
+ STY [A,U]
+ LDD #$AAAA  ON NEW FIRST GUY
+ LDY OX16,X
+ STD ,Y
+ LDA PD5,U   SAVE NEW 1ST COORD
+ STY A,U
+ ADDA #2
+ CMPA #SPSIZE
+ BLO CMMV5
+ LDA #PD+6
+CMMV5 STA PD5,U
+ RTS
+*
+*KILL A CRUISER
+*X=OBJ, OBJID=PROC
+*
+CMKIL DEC BCMCNT
+ LDA PCFLG
+ BNE CMKILX
+ JSR KILROB KILL OBJ
+ LDX OBJID,X
+ LDU #0
+ LDA #PD+6
+CMK1 STU [A,X] OFF ALL POINTS
+ ADDA #2
+ CMPA #SPSIZE
+ BNE CMK1
+ JSR KILL KILL PROCESS
+ LDD #$0025 SCORE N SOUND
+ JSR SCORE
+ LDD #CMKSND
+ JSR SNDLD
+CMKILX RTS
+*
+*BRAIN PICTURES
+*
+BRLP1 FCB 7,16
+ FDB BRLD1
+BRLP2 FCB 7,16
+ FDB BRLD2
+BRLP3 FCB 7,16
+ FDB BRLD3
+BRRP1 FCB 7,16
+ FDB BRRD1
+BRRP2 FCB 7,16
+ FDB BRRD2
+BRRP3 FCB 7,16 
+ FDB BRRD3
+BRDP1 FCB 7,16
+ FDB BRDD1
+BRDP2 FCB 7,16
+ FDB BRDD2
+BRDP3 FCB 7,16
+ FDB BRDD3
+BRUP1 FCB 7,16
+ FDB BRUD1
+BRUP2 FCB 7,16
+ FDB BRUD2
+BRUP3 FCB 7,16
+ FDB BRUD3
+
+ IFC &A,NOL
+ OPT NOL
+ ENDIF
+
+BRLD1 EQU *
+ FCB $00,$00,$7C,$7C,$70,$00,$00
+ FCB $00,$0C,$0C,$0C,$7C,$00,$00
+ FCB $00,$7C,$7C,$C0,$CC,$70,$00
+ FCB $07,$0C,$C0,$C7,$C0,$C7,$00
+ FCB $0C,$CC,$7C,$CC,$C7,$C7,$00
+ FCB $07,$77,$7C,$C7,$C0,$CC,$00
+ FCB $00,$07,$77,$CC,$0C,$C7,$00
+ FCB $00,$7A,$A7,$77,$0C,$70,$00
+ FCB $00,$77,$77,$7C,$C0,$00,$00
+ FCB $00,$07,$77,$70,$00,$00,$00
+ FCB $00,$00,$06,$70,$00,$00,$00
+ FCB $00,$66,$66,$00,$00,$00,$00
+ FCB $00,$00,$06,$00,$00,$00,$00
+ FCB $00,$00,$06,$00,$00,$00,$00
+ FCB $00,$04,$66,$00,$00,$00,$00
+ FCB $00,$00,$00,$00,$00,$00,$00
+BRLD2 EQU *
+ FCB $00,$00,$7C,$7C,$70,$00,$00
+ FCB $00,$0C,$0C,$0C,$7C,$00,$00
+ FCB $00,$7C,$7C,$C0,$CC,$70,$00
+ FCB $07,$0C,$C0,$C7,$C0,$C7,$00
+ FCB $0C,$CC,$7C,$CC,$C7,$C7,$00
+ FCB $07,$77,$7C,$C7,$C0,$CC,$00
+ FCB $00,$07,$77,$CC,$0C,$C7,$00
+ FCB $00,$7A,$A7,$77,$0C,$70,$00
+ FCB $00,$77,$77,$7C,$C0,$00,$00
+ FCB $00,$07,$77,$70,$00,$00,$00
+ FCB $00,$00,$06,$70,$00,$00,$00
+ FCB $00,$66,$66,$00,$00,$00,$00
+ FCB $00,$00,$06,$60,$00,$00,$00
+ FCB $00,$40,$40,$06,$00,$00,$00
+ FCB $00,$04,$00,$60,$00,$00,$00
+ FCB $00,$00,$00,$00,$00,$00,$00
+BRLD3 EQU *
+ FCB $00,$00,$7C,$7C,$70,$00,$00
+ FCB $00,$0C,$0C,$0C,$7C,$00,$00
+ FCB $00,$7C,$7C,$C0,$CC,$70,$00
+ FCB $07,$0C,$C0,$C7,$C0,$C7,$00
+ FCB $0C,$CC,$7C,$CC,$C7,$C7,$00
+ FCB $07,$77,$7C,$C7,$C0,$CC,$00
+ FCB $00,$07,$77,$CC,$0C,$C7,$00
+ FCB $00,$7A,$A7,$77,$0C,$70,$00
+ FCB $00,$77,$77,$7C,$C0,$00,$00
+ FCB $00,$07,$77,$70,$00,$00,$00
+ FCB $00,$00,$06,$70,$00,$00,$00
+ FCB $00,$66,$66,$00,$00,$00,$00
+ FCB $00,$00,$06,$40,$00,$00,$00
+ FCB $00,$60,$60,$04,$00,$00,$00
+ FCB $00,$06,$00,$40,$00,$00,$00
+ FCB $00,$00,$00,$00,$00,$00,$00
+BRRD1 EQU *
+ FCB $00,$07,$CC,$7C,$00,$00,$00
+ FCB $00,$CC,$7C,$CC,$70,$00,$00
+ FCB $07,$C7,$0C,$70,$7C,$00,$00
+ FCB $77,$CC,$7C,$7C,$CC,$70,$00
+ FCB $CC,$0C,$CC,$0C,$70,$70,$00
+ FCB $7C,$C0,$7C,$CC,$CC,$70,$00
+ FCB $77,$CC,$CC,$77,$70,$00,$00
+ FCB $0C,$C7,$C7,$7A,$A7,$00,$00
+ FCB $00,$07,$77,$77,$77,$00,$00
+ FCB $00,$00,$07,$77,$70,$00,$00
+ FCB $00,$00,$07,$60,$00,$00,$00
+ FCB $00,$00,$00,$66,$66,$00,$00
+ FCB $00,$00,$00,$60,$00,$00,$00
+ FCB $00,$00,$00,$60,$00,$00,$00
+ FCB $00,$00,$00,$66,$40,$00,$00
+ FCB $00,$00,$00,$00,$00,$00,$00
+BRRD2 EQU *
+ FCB $00,$07,$CC,$7C,$00,$00,$00
+ FCB $00,$CC,$7C,$CC,$70,$00,$00
+ FCB $07,$C7,$0C,$70,$7C,$00,$00
+ FCB $77,$CC,$7C,$7C,$CC,$70,$00
+ FCB $CC,$0C,$CC,$0C,$70,$70,$00
+ FCB $7C,$C0,$7C,$CC,$CC,$70,$00
+ FCB $77,$CC,$CC,$77,$70,$00,$00
+ FCB $0C,$C7,$C7,$7A,$A7,$00,$00
+ FCB $00,$07,$77,$77,$77,$00,$00
+ FCB $00,$00,$07,$77,$70,$00,$00
+ FCB $00,$00,$07,$60,$00,$00,$00
+ FCB $00,$00,$00,$66,$66,$00,$00
+ FCB $00,$00,$06,$60,$00,$00,$00
+ FCB $00,$00,$60,$04,$04,$00,$00
+ FCB $00,$00,$06,$00,$40,$00,$00
+ FCB $00,$00,$00,$00,$00,$00,$00
+BRRD3 EQU *
+ FCB $00,$07,$CC,$7C,$00,$00,$00
+ FCB $00,$CC,$7C,$CC,$70,$00,$00
+ FCB $07,$C7,$0C,$70,$7C,$00,$00
+ FCB $77,$CC,$7C,$7C,$CC,$70,$00
+ FCB $CC,$0C,$CC,$0C,$70,$70,$00
+ FCB $7C,$C0,$7C,$CC,$CC,$70,$00
+ FCB $77,$CC,$CC,$77,$70,$00,$00
+ FCB $0C,$C7,$C7,$7A,$A7,$00,$00
+ FCB $00,$07,$77,$77,$77,$00,$00
+ FCB $00,$00,$07,$77,$70,$00,$00
+ FCB $00,$00,$07,$60,$00,$00,$00
+ FCB $00,$00,$00,$66,$66,$00,$00
+ FCB $00,$00,$04,$60,$00,$00,$00
+ FCB $00,$00,$40,$06,$06,$00,$00
+ FCB $00,$00,$04,$00,$60,$00,$00
+ FCB $00,$00,$00,$00,$00,$00,$00
+BRDD1 EQU *
+ FCB $00,$00,$0C,$70,$00,$00,$00
+ FCB $00,$7C,$C7,$7C,$7C,$70,$00
+ FCB $07,$CC,$0C,$CC,$0C,$77,$00
+ FCB $77,$C7,$C7,$C0,$C0,$CC,$70
+ FCB $CC,$C0,$CC,$C7,$CC,$0C,$70
+ FCB $C7,$C7,$7C,$0C,$77,$C7,$C0
+ FCB $70,$C7,$77,$C7,$70,$7C,$70
+ FCB $0C,$CA,$AA,$7A,$AA,$77,$00
+ FCB $07,$77,$77,$77,$77,$70,$00
+ FCB $00,$00,$07,$77,$00,$00,$00
+ FCB $00,$00,$07,$67,$00,$00,$00 
+ FCB $00,$00,$66,$66,$60,$00,$00
+ FCB $00,$06,$00,$60,$06,$00,$00
+ FCB $00,$00,$06,$06,$00,$00,$00
+ FCB $00,$00,$66,$06,$60,$00,$00
+ FCB $00,$00,$00,$00,$00,$00,$00
+BRDD2 EQU *
+ FCB $00,$00,$0C,$70,$00,$00,$00
+ FCB $00,$7C,$C7,$7C,$7C,$70,$00
+ FCB $07,$CC,$0C,$CC,$0C,$77,$00
+ FCB $77,$C7,$C7,$C0,$C0,$CC,$70
+ FCB $CC,$C0,$CC,$C7,$CC,$0C,$70
+ FCB $C7,$C7,$7C,$0C,$77,$C7,$C0
+ FCB $70,$C7,$77,$C7,$70,$7C,$70
+ FCB $0C,$CA,$AA,$7A,$AA,$77,$00
+ FCB $07,$77,$77,$77,$77,$70,$00
+ FCB $00,$00,$07,$77,$00,$00,$00
+ FCB $00,$00,$07,$67,$00,$00,$00 
+ FCB $00,$00,$66,$66,$60,$00,$00
+ FCB $00,$06,$00,$66,$06,$00,$00
+ FCB $00,$00,$06,$06,$60,$00,$00
+ FCB $00,$00,$06,$00,$00,$00,$00
+ FCB $00,$00,$66,$00,$00,$00,$00
+BRDD3 EQU *
+ FCB $00,$00,$0C,$70,$00,$00,$00
+ FCB $00,$7C,$C7,$7C,$7C,$70,$00
+ FCB $07,$CC,$0C,$CC,$0C,$77,$00
+ FCB $77,$C7,$C7,$C0,$C0,$CC,$70
+ FCB $CC,$C0,$CC,$C7,$CC,$0C,$70
+ FCB $C7,$C7,$7C,$0C,$77,$C7,$C0
+ FCB $70,$C7,$77,$C7,$70,$7C,$70
+ FCB $0C,$CA,$AA,$7A,$AA,$77,$00
+ FCB $07,$77,$77,$77,$77,$70,$00
+ FCB $00,$00,$07,$77,$00,$00,$00
+ FCB $00,$00,$07,$67,$00,$00,$00 
+ FCB $00,$00,$66,$66,$60,$00,$00
+ FCB $00,$06,$06,$60,$06,$00,$00
+ FCB $00,$00,$66,$06,$00,$00,$00
+ FCB $00,$00,$00,$06,$00,$00,$00
+ FCB $00,$00,$00,$06,$60,$00,$00
+BRUD1 EQU *
+ FCB $00,$00,$07,$C0,$00,$00,$00
+ FCB $00,$7C,$70,$C7,$C7,$70,$00
+ FCB $0C,$70,$C7,$CC,$C7,$C7,$00
+ FCB $7C,$00,$C7,$0C,$0C,$07,$70
+ FCB $7C,$C7,$7C,$CC,$7C,$7C,$C0
+ FCB $77,$7C,$C0,$C0,$C7,$C7,$70
+ FCB $77,$00,$CC,$0C,$07,$C7,$70
+ FCB $07,$7C,$77,$CC,$CC,$77,$00
+ FCB $00,$C7,$70,$C7,$77,$70,$00
+ FCB $00,$00,$07,$77,$00,$00,$00
+ FCB $00,$00,$07,$67,$00,$00,$00 
+ FCB $00,$00,$66,$66,$60,$00,$00
+ FCB $00,$06,$00,$60,$06,$00,$00
+ FCB $00,$00,$06,$06,$00,$00,$00
+ FCB $00,$00,$66,$06,$60,$00,$00
+ FCB $00,$00,$00,$00,$00,$00,$00
+BRUD2 EQU *
+ FCB $00,$00,$07,$C0,$00,$00,$00
+ FCB $00,$7C,$70,$C7,$C7,$70,$00
+ FCB $0C,$70,$C7,$CC,$C7,$C7,$00
+ FCB $7C,$00,$C7,$0C,$0C,$07,$70
+ FCB $7C,$C7,$7C,$CC,$7C,$7C,$C0
+ FCB $77,$7C,$C0,$C0,$C7,$C7,$70
+ FCB $77,$00,$CC,$0C,$07,$C7,$70
+ FCB $07,$7C,$77,$CC,$CC,$77,$00
+ FCB $00,$C7,$70,$C7,$77,$70,$00
+ FCB $00,$00,$07,$77,$00,$00,$00
+ FCB $00,$00,$07,$67,$00,$00,$00 
+ FCB $00,$00,$66,$66,$60,$00,$00
+ FCB $00,$06,$00,$66,$06,$00,$00
+ FCB $00,$00,$06,$06,$60,$00,$00
+ FCB $00,$00,$06,$00,$00,$00,$00
+ FCB $00,$00,$66,$00,$00,$00,$00
+BRUD3 EQU *
+ FCB $00,$00,$07,$C0,$00,$00,$00
+ FCB $00,$7C,$70,$C7,$C7,$70,$00
+ FCB $0C,$70,$C7,$CC,$C7,$C7,$00
+ FCB $7C,$00,$C7,$0C,$0C,$07,$70
+ FCB $7C,$C7,$7C,$CC,$7C,$7C,$C0
+ FCB $77,$7C,$C0,$C0,$C7,$C7,$70
+ FCB $77,$00,$CC,$0C,$07,$C7,$70
+ FCB $07,$7C,$77,$CC,$CC,$77,$00
+ FCB $00,$C7,$70,$C7,$77,$70,$00
+ FCB $00,$00,$07,$77,$00,$00,$00
+ FCB $00,$00,$07,$67,$00,$00,$00 
+ FCB $00,$00,$66,$66,$60,$00,$00
+ FCB $00,$06,$06,$60,$06,$00,$00
+ FCB $00,$00,$66,$06,$00,$00,$00
+ FCB $00,$00,$00,$06,$00,$00,$00
+ FCB $00,$00,$00,$06,$60,$00,$00
+ END
diff --git a/RRC11.ASM b/RRC11.ASM
new file mode 100755 (executable)
index 0000000..9b5ee18
--- /dev/null
+++ b/RRC11.ASM
@@ -0,0 +1,738 @@
+ OPT NOL
+ LIB RRF
+ OPT LIS
+ STTL C I R C L E S  AND  E N F O R C E R S
+*
+*VECTORS
+*
+ ORG RCORG
+ JMP CIRST
+ JMP CIRKKV
+ FDB CIRP0
+ FDB ENGP1
+ FDB ENFP0
+*
+*MISC SOUNDS
+*
+ENDSND FCB $D8,$01,$08,$18,0 ENFORCER DROP OFF
+CRKSND FCB $D1,$01,$08,$08,0 CIRCLE KILL
+ENFSND FCB $D0,$01,$08,$1D,0 ENFORCER SHOOT
+ENKSND FCB $D0,$03,$04,$17,0 ENFORCER KILL
+SPKSND FCB $D0,$01,$04,$15,$01,$08,$14,0 SPARK KILL
+*
+*CIRCLE START
+*PD=OBJ,PD2=TIME TO DROP,PD3=#OF ENFORCERS
+*A=#
+CIRST LDA CIRCNT
+ PSHS A
+ BEQ CIRCSX
+CIRSTL MKPROB CIRCLE,CIRP4,CIRKIL
+ BEQ CIRCSX NONE LEFT      
+ JSR RANDXY
+ LDA #XMIN+2
+ TST SEED
+ BMI CIRCS1
+ LDA #XMAX-8
+CIRCS1 STD OBJX,X INIT COORDS
+ STA OX16,X
+ STB OY16,X
+ LDA CDPTIM
+ JSR RMAX
+ STA PD2,U TIME TO DROP
+ LDA ENFNUM
+ JSR RMAX
+ LSRA
+ ADCA #0
+ STA PD3,U # TO DROP
+ JSR CIRNAC RANDOM CIRCLE ACCEL
+ LDD #CIRP4 PHONY PICTURE TO HIT
+ STD FONIPC,X
+ STX OPTR
+ DEC ,S
+ BNE CIRSTL
+CIRCSX PULS A,PC
+*
+*CIRCLE PROCESS
+*PD=OBJ,PD2=TIME TO DROP,PD3=# ENF,PD5=X ACC,PD6=Y ACC
+*PD7=ACC TIME
+*
+CIRCLE LDX PD,U
+ LDD OPICT,X
+ ADDD #4
+ CMPD #CIRP4
+ BLS CIRC1
+ LDD #CIRP0
+ TST STATUS DONT START EARLY GUYS
+ BNE CIRC1
+ DEC PD2,U GO CRITICAL??
+ BEQ CIRC2 YIP
+CIRC1 STD OPICT,X
+ DEC PD7,U  NEW ACCEL?
+ BNE CIRC1A  NO
+ JSR CIRNAC
+CIRC1A JSR CIRGO ACCELERATE+DAMP
+ NAP 2,CIRCLE
+*GO GET THE MO'FO'
+CIRC2 LDA CDPTIM
+ LSRA
+ LSRA
+ JSR RMAX
+ STA PD2,U TIME TO DROP
+CIRC2L LDX PD,U
+ LDD OPICT,X
+ ADDD #4
+ CMPD #CIRP7
+ BLS CIRC2A
+ DEC PD2,U
+ BNE CIR2A
+ LDA ENFCNT MAXXED OUT??
+ CMPA #8
+ BHS CIRC2 TOO MANY
+ LDA OVCNT OUT OF REAL TIME ??
+ CMPA #17
+ BHS CIRC2
+ JSR ENFDRP
+ DEC PD3,U
+ BEQ CIRC3 ALL DONJE
+ BRA CIRC2 GET NEW DROP TIME
+CIR2A LDD #CIRP0
+CIRC2A STD OPICT,X
+ DEC PD7,U
+ BNE CIRC2B
+ JSR CIRNAC
+CIRC2B JSR CIRGO
+ NAP 2,CIRC2L
+*ESCAPE PHASE
+CIRC3 LDD #0
+ STD OYV,X
+ LDD #$100
+ TST SEED
+ BPL CIRC3A
+ NEGA    
+CIRC3A STD OXV,X
+CIRC3L LDX PD,U
+ LDD OPICT,X
+ ADDD #4
+ CMPD #CIRP4
+ BLS CIRC3B
+ LDA OX16,X DONE?
+ CMPA #XMIN+3
+ BLS CIRC4 YES
+ CMPA #XMAX-10
+ BHS CIRC4 YES
+ LDD #CIRP0
+CIRC3B STD OPICT,X
+ NAP 2,CIRC3L
+*ALL DONE
+CIRC4 JSR KILLOF
+ DEC CIRCNT
+ JMP SUCIDE
+*
+*CIRCLE NEW ACCEL
+*X=OBJ,PD5=X ACC,PD6=Y ACC,PD7=ACC TIME
+*
+CIRNAC LDA HSEED
+ ANDA #$1F
+ ADDA #-$10
+ STA PD5,U X ACC
+ LDA LSEED
+ EORA SEED
+ ANDA #$3F
+ ADDA #-$20
+ STA PD6,U Y ACC
+ LDA #15
+ JSR RANDU
+ STA PD7,U
+ RTS
+*
+*CIRCLE ACCELERATE
+*X=OBJ
+CIRGO LDB PD5,U X ACCEL
+ SEX
+ ADDD OXV,X
+ CMPD #$0100    CHECK YOUR LIMITS
+ BLT CIRG1
+ LDD #$0100
+CIRG1 CMPD #$FF00
+ BGT CIRG2
+ LDD #$FF00
+CIRG2 STD OXV,X
+ COMA
+ COMB
+ ASLB
+ ROLA
+ ASLB
+ ROLA
+ TFR A,B
+ SEX
+ ADDD OXV,X
+ STD OXV,X
+ LDB PD6,U Y ACCEL
+ SEX
+ ADDD OYV,X
+ CMPD #$0200
+ BLT CIRG3
+ LDD #$0200
+CIRG3 CMPD #$FE00
+ BGT CIRG4
+ LDD #$FE00
+CIRG4 STD OYV,X
+ COMA
+ COMB
+ ASLB
+ ROLA
+ TFR A,B
+ SEX
+ ADDD OYV,X
+ STD OYV,X
+ RTS
+*
+*KILL A CIRCLE
+*X=OBJECT
+CIRKIL LDA PCFLG
+ BNE CIRKX DONT BLOW IF PLAYER HITS YOU
+ JSR KILOFP KILL, OFF OBJ; KILL PROC
+ LDU OFREE
+ LDD ,U GET OBJ BACK
+ STD OFREE
+ MAKP CIRKP CIRCLE KILL PROC
+ STU PD,X
+ LDD #CIRP1
+ STD OPICT,U
+ DEC CIRCNT
+ LDD #$0210 SCORE 1K
+ JSR SCORE
+ LDD #CRKSND
+ JMP SNDLD
+CIRKX RTS
+*
+*CIRCLE KILL PROCESS BUBBLE BURST
+*PD=OBJ.
+CIRKP LDD #$FFAA
+ STD PD4,U COLORS..
+ LDA #7
+ STA PD6,U COUNT
+CIRKKV EQU *
+CIRKPL LDX PD,U
+ LDY OPICT,X
+ LDD OBJX,X
+ JSR PCTOFF
+ LEAY 4,Y
+ STY OPICT,X
+ DEC PD6,U
+ BEQ CIRKPX
+ LDA PD5,U
+ STA XTEMP2
+ LDD OBJX,X
+ JSR MPCTON
+ NAP 2,CIRKPL
+CIRKPX EQU *
+ LDD OBJX,X DISPLAY 1000 MESSAGE
+ ADDD #$0105
+ STD OBJX,X
+ LDA #30
+ STA PD2,U
+ LDD P1KD
+ STD OPICT,X 
+CIRKX1 LDX PD,U
+ LDA PD4,U
+ STA XTEMP2 COLOR
+ LDY OPICT,X
+ LDD OBJX,X
+ JSR MPCTON
+ DEC PD2,U
+ BEQ CIRKX2
+ NAP 2,CIRKX1
+CIRKX2 JSR PCTOFF
+ LDD OFREE DUMP
+ STD ,X
+ STX OFREE
+ JMP SUCIDE CROAK NOW PLEASE!!
+*
+*DROP OFF AN ENFORCER
+*X=CIRCLE OBJECT
+ENFDRP PSHS X,Y,D,U
+ TFR X,Y
+ MKPROB ENFRCE,ENGP1,ENFKIL
+ BEQ ENFDX NONE LEFT
+ LDA OX16,Y
+ LDB OY16,Y
+ STA OX16,X
+ STB OY16,X
+ STD OBJX,X
+ LDA ENSTIM
+ JSR RMAX
+ STA PD6,U SHOT TIMER
+ STX OPTR LINK EM IN
+ LDD #ENDSND
+ JSR SNDLD
+ INC ENFCNT
+ENFDX PULS X,Y,D,U,PC
+*
+*ENFORCER PROCESS
+*PD=OBJECT,PD6=SHOT TIMER, PD7=UPDATE TIMER
+*
+ENFR0 LDX PD,U GROW UP
+ LDD OPICT,X
+ ADDD #4
+ CMPD #ENFP0
+ BHS ENFR10 ALL GROWN UP
+ STD OPICT,X
+ENFRCE NAP 8,ENFR0
+*GO GIT IM
+ENFR10 STD OPICT,X SAVE THE PICT
+ JSR ENFNV GET A VELOCITY
+ENFR1 LDX PD,U
+ DEC PD7,U
+ BNE ENFR1A
+ JSR ENFNV
+ENFR1A DEC PD6,U
+ BNE ENFR1B
+ JSR ENFSHT TAKE A SHOT AT THE JAGOFF
+ENFR1B NAP 3,ENFR1
+*
+*GET A NEW ENFORCER VELOCITY
+*PD7=UPDATE TIMER, X=OBJ
+*
+ENFNV JSR RAND16
+ ANDA #$1F
+ STA PD7,U
+ CLRA
+ ASRB
+ ASRB
+ ASRB
+ ADDB PX
+ CMPB #XMIN
+ BHS ENFNV1
+ LDB #XMIN
+ENFNV1 CMPA #XMAX
+ BLS ENFNV4
+ CMPB #XMAX+$40
+ BHS ENFNV2
+ LDB #XMAX
+ BRA ENFNV4
+ENFNV2 LDB #XMIN
+ENFNV4 SUBB OX16,X
+ SBCA #0 GET THE SIGN GUYS
+ ASLB
+ ROLA
+ STD OXV,X
+ CLRA
+ LDB HSEED
+ ASRB
+ ASRB
+ ASRB
+ ADDB PX+1
+ CMPB #YMAX
+ BLS ENFNV5
+ LDB #YMAX
+ENFNV5 CMPB #YMIN
+ BHS ENFNV7
+ CMPB #YMIN>>1
+ BHS ENFNV6
+ LDB #YMAX
+ BRA ENFNV7
+ENFNV6 LDB #YMIN
+ENFNV7 SUBB OY16,X
+ SBCA #0 GET THE SIGN
+ ASLB
+ ROLA
+ STD OYV,X
+ RTS
+*
+*ENFORCER SHOOT
+*X=OBJ
+ENFSHT PSHS U,X
+ TFR X,Y
+ LDA ENSTIM SHOT TIMER
+ JSR RMAX
+ STA PD6,U
+ LDA SPKCNT TOO MANY??
+ CMPA #20
+ BHS ENFSX
+ LDA OVCNT  NO TIME LEFT??
+ CMPA #17
+ BHS ENFSX
+ MKPROB SPARK,SPKP0,SPKIL
+ BEQ ENFSX NONE LEFT
+ INC SPKCNT
+ LDD OBJX,Y
+ STA OX16,X
+ STB OY16,X
+ STD OBJX,X
+ LDB SEED
+ ANDB #$1F
+ ADDB #-$10
+ LDA PX
+ CMPA #XMIN+$10
+ BHS ENFS2
+ CLRB
+ENFS2 ADDB PX
+ CLRA
+ SUBB OBJX,X
+ SBCA #0 GET SIGN
+ ASLB
+ ROLA
+ ASLB
+ ROLA
+ STD OXV,X
+ LDB LSEED
+ ANDB #$1F
+ ADDB #-$10
+ ADDB PX+1
+ CLRA
+ SUBB OBJY,X
+ SBCA #0
+ ASLB
+ ROLA
+ ASLB
+ ROLA
+ STD OYV,X
+ LDB LSEED
+ ANDB #$1F
+ ADDB #-$10
+ SEX
+ STD PD2,U X ACC
+ LDB HSEED
+ ANDB #$1F
+ ADDB #-$10
+ SEX
+ STD PD4,U Y ACC
+ STX OPTR
+ LDA HSEED
+ ANDA #$F
+ ADDA #$14
+ STA PD7,U LIFETIME
+ LDD #ENFSND
+ JSR SNDLD
+ENFSX PULS U,X,PC
+*
+*KILL AN ENFORCER
+*X=OBJECT
+ENFKIL LDA PCFLG
+ BNE ENFKX
+ JSR KILOFP
+ LDX OFREE
+ LDD ,X
+ STD OFREE GET OBJ BACK
+ JSR EXST
+ LDD OFREE
+ STD ,X
+ STX OFREE FREE HIM
+ DEC ENFCNT
+ LDD #$0115
+ JSR SCORE
+ LDD #ENKSND
+ JMP SNDLD
+ENFKX RTS
+*
+*SPARK PROCESS
+*PD=OBJ,PD2=X ACC,PD4=Y ACC
+*PD7=LIFE
+SPARK LDX PD,U
+ LDD OPICT,X
+ ADDD #4
+ CMPD #SPKP3
+ BLS SPK1
+ LDD #SPKP0
+SPK1 STD OPICT,X
+ LDD OXV,X
+ ADDD PD2,U
+ STD OXV,X
+ LDD OYV,X
+ ADDD PD4,U
+ STD OYV,X
+ DEC PD7,U
+ BEQ SPKDIE
+ NAP 4,SPARK
+SPKDIE JSR KILLOF
+ DEC SPKCNT
+ JMP SUCIDE
+*
+*SPARK KILL
+*X=OBJ
+SPKIL LDA PCFLG
+ BNE SPKX
+ JSR KILOFP
+ DEC SPKCNT
+ LDD #$0025
+ JSR SCORE
+ LDD #SPKSND
+ JMP SNDLD
+SPKX RTS
+*CIRCLES
+CIRP0 FCB 8,15
+ FDB CIRD0
+CIRP1 FCB 8,15
+ FDB CIRD1
+CIRP2 FCB 8,15
+ FDB CIRD2
+CIRP3 FCB 8,15
+ FDB CIRD3
+CIRP4 FCB 8,15
+ FDB CIRD4
+CIRP5 FCB 8,15
+ FDB CIRD5
+CIRP6 FCB 8,15
+ FDB CIRD6
+CIRP7 FCB 8,15
+ FDB CIRD7
+
+ IFC &A,NOL
+ OPT NOL
+ ENDIF
+
+CIRD0 EQU *
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$000F,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+CIRD1 EQU *
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$000F,$0000,$0000
+ FDB $0000,$00FF,$F000,$0000
+ FDB $0000,$000F,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+CIRD2 EQU *
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$00FF,$F000,$0000
+ FDB $0000,$0FFF,$FF00,$0000
+ FDB $0000,$0FF0,$FF00,$0000
+ FDB $0000,$0FFF,$FF00,$0000
+ FDB $0000,$00FF,$F000,$0000
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+CIRD3 EQU *
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$00FF,$F000,$0000
+ FDB $0000,$0FFF,$FF00,$0000
+ FDB $0000,$FFF0,$FFF0,$0000
+ FDB $0000,$FF00,$0FF0,$0000
+ FDB $0000,$FFF0,$FFF0,$0000
+ FDB $0000,$0FFF,$FF00,$0000
+ FDB $0000,$00FF,$F000,$0000
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+CIRD4 EQU *
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0FFF,$FF00,$0000
+ FDB $0000,$FFFF,$FFF0,$0000
+ FDB $000F,$FF00,$0FFF,$0000
+ FDB $000F,$F000,$00FF,$0000
+ FDB $000F,$F000,$00FF,$0000
+ FDB $000F,$F000,$00FF,$0000
+ FDB $000F,$FF00,$0FFF,$0000
+ FDB $0000,$FFFF,$FFF0,$0000
+ FDB $0000,$0FFF,$FF00,$0000
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+CIRD5 EQU *
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0FFF,$FF00,$0000
+ FDB $000F,$FFFF,$FFFF,$0000
+ FDB $000F,$F000,$00FF,$0000
+ FDB $00FF,$0000,$000F,$F000
+ FDB $00FF,$0000,$000F,$F000
+ FDB $00FF,$0000,$000F,$F000
+ FDB $00FF,$0000,$000F,$F000
+ FDB $00FF,$0000,$000F,$F000
+ FDB $000F,$F000,$00FF,$0000
+ FDB $000F,$FFFF,$FFFF,$0000
+ FDB $0000,$0FFF,$FF00,$0000
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+CIRD6 EQU *
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$00FF,$F000,$0000
+ FDB $0000,$FFFF,$FFF0,$0000
+ FDB $0000,$0000,$0000,$0000
+ FDB $00F0,$0000,$0000,$F000
+ FDB $00F0,$0000,$0000,$F000
+ FDB $0FF0,$0000,$0000,$FF00
+ FDB $0FF0,$0000,$0000,$FF00
+ FDB $0FF0,$0000,$0000,$FF00
+ FDB $00F0,$0000,$0000,$F000
+ FDB $00F0,$0000,$0000,$F000
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$FFFF,$FFF0,$0000
+ FDB $0000,$00FF,$F000,$0000
+ FDB $0000,$0000,$0000,$0000
+CIRD7 EQU *
+ FDB $0000,$000F,$0000,$0000
+ FDB $0000,$00FF,$F000,$0000
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+ FDB $0F00,$0000,$0000,$0F00
+ FDB $FF00,$0000,$0000,$0FF0
+ FDB $0F00,$0000,$0000,$0F00
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$00FF,$F000,$0000
+ FDB $0000,$000F,$0000,$0000
+*ENFORCER PICTS
+ENGP1 FCB 5,11
+ FDB ENGD1
+ENGP2 FCB 5,11
+ FDB ENGD2
+ENGP3 FCB 5,11
+ FDB ENGD3
+ENGP4 FCB 5,11
+ FDB ENGD4
+ENGP5 FCB 5,11
+ FDB ENGD5
+ENFP0 FCB 5,11
+ FDB ENFD0
+ENFD0 FCB $00,$00,$80,$00,$00
+ FCB $00,$08,$88,$00,$00
+ FCB $00,$8A,$AA,$80,$00
+ FCB $08,$FF,$FF,$F8,$00
+ FCB $00,$08,$88,$00,$00
+ FCB $90,$88,$78,$80,$90
+ FCB $09,$97,$77,$99,$00
+ FCB $90,$77,$77,$70,$90
+ FCB $00,$00,$80,$00,$00
+ FCB $00,$DD,$DD,$D0,$00
+ FCB $0D,$DD,$DD,$DD,$00
+ENGD1 EQU *
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$80,$00,$00
+ FCB $00,$08,$F8,$00,$00
+ FCB $00,$00,$70,$00,$00
+ FCB $00,$00,$D0,$00,$00
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$00,$00,$00
+ENGD2 EQU *
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$80,$00,$00
+ FCB $00,$08,$F8,$00,$00
+ FCB $00,$00,$80,$00,$00
+ FCB $00,$09,$79,$00,$00
+ FCB $00,$00,$D0,$00,$00
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$00,$00,$00
+ENGD3 EQU *
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$88,$00,$00
+ FCB $00,$08,$FF,$80,$00
+ FCB $00,$00,$88,$00,$00
+ FCB $00,$09,$77,$90,$00
+ FCB $00,$00,$77,$00,$00
+ FCB $00,$00,$DD,$00,$00
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$00,$00,$00
+ENGD4 EQU *
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$80,$00,$00
+ FCB $00,$08,$A8,$00,$00
+ FCB $00,$8F,$FF,$80,$00
+ FCB $00,$00,$80,$00,$00
+ FCB $00,$08,$78,$00,$00
+ FCB $09,$97,$77,$99,$00
+ FCB $00,$07,$77,$00,$00
+ FCB $00,$00,$80,$00,$00
+ FCB $00,$0D,$DD,$00,$00
+ FCB $00,$00,$00,$00,$00
+ENGD5 EQU *
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$88,$00,$00
+ FCB $00,$08,$AA,$80,$00
+ FCB $00,$8F,$FF,$F8,$00
+ FCB $00,$00,$88,$00,$00
+ FCB $00,$98,$88,$89,$00
+ FCB $00,$09,$77,$90,$00
+ FCB $00,$97,$77,$79,$00
+ FCB $00,$00,$88,$00,$00
+ FCB $00,$0D,$DD,$D0,$00
+ FCB $00,$00,$00,$00,$00
+*SPARK PICTS
+SPKP0 FCB 4,7
+ FDB SPKD0
+SPKP1 FCB 4,7
+ FDB SPKD1
+SPKP2 FCB 4,7
+ FDB SPKD2
+SPKP3 FCB 4,7
+ FDB SPKD3
+SPKD0 EQU *
+ FDB $000B,$0000
+ FDB $000B,$0000
+ FDB $000B,$0000
+ FDB $FFFB,$FFF0
+ FDB $000B,$0000
+ FDB $000B,$0000
+ FDB $000B,$0000
+SPKD1 EQU *
+ FDB $0000,$0000
+ FDB $0F00,$0B00
+ FDB $00F0,$B000
+ FDB $000B,$0000
+ FDB $00B0,$F000
+ FDB $0B00,$0F00
+ FDB $0000,$0000
+SPKD2 EQU *
+ FDB $000F,$0000
+ FDB $000F,$0000
+ FDB $000F,$0000
+ FDB $BBBB,$BBB0
+ FDB $000F,$0000
+ FDB $000F,$0000
+ FDB $000F,$0000
+SPKD3 EQU *
+ FDB $0000,$0000
+ FDB $0B00,$0F00
+ FDB $00B0,$F000
+ FDB $000B,$0000
+ FDB $00F0,$B000
+ FDB $0F00,$0B00
+ FDB $0000,$0000
+ END
diff --git a/RRCHRIS.ASM b/RRCHRIS.ASM
new file mode 100755 (executable)
index 0000000..d3871a5
--- /dev/null
@@ -0,0 +1,66 @@
+
+**************************************************************************
+*                                                                        *
+*          This is the patch that was written by Christian Gingras       *
+*          to fix the famous enforcer diagonal explosion bug.            *
+*          It is used to patch the $4000 rom in the final robotron       *
+*          version (called version 6 in software.....R5 is what is       *
+*          on the listing).                                              *
+*                                                                        *
+**************************************************************************
+
+ OPT NOL
+ LIB RRF
+ OPT LIS
+
+ STTL DIAGONAL EXPLOSIONS
+
+       ORG    DXRAM      (BASE PAGE)
+
+YYCNT   RMB    1        WHEN CHOPPING UP X, SAVE TO UPDATE ULY
+YOFF   RMB    1        ACTUAL PIXEL OFFSET TO CENTER (USED)
+XSIZE  RMB    1        DISTANCE BETWEEN X POINTS THIS FRAME
+YSIZE  RMB    1        DISTANCE BETWEEN Y POINTS THIS FRAME
+EXPTR  RMB    2
+APPTR  RMB    2        APPEAR POINTER
+EXFREE RMB    2
+HITE   RMB    1
+TEMP1  RMB    2
+TEMP2  RMB    1
+
+KLJMP    EQU     $4A59
+
+         ORG     $4990
+         JMP     UN
+
+         ORG     $49B7
+         JMP     DEUX
+
+         ORG     $49E2
+         JMP     TROIS
+
+         ORG     $4A97
+
+UN       DEC     HITE
+         BEQ     KLJMP
+         DEC     YOFF
+         JMP     $4994
+
+DEUX     DEC     HITE
+         BEQ     KLJMP
+         INC     YYCNT
+         JMP     $49BB
+
+TROIS    DEC     HITE
+         BEQ     KLJMP
+         INC     YYCNT
+         JMP     $49E6
+
+         FCC     '05/1987 CHR.G.'
+
+         ORG     $4AD7
+*         FCB     $FD             THIS SETS JAP ZAPPER CORRECT
+         FCB     $4C             THIS SETS CHECKSUM FOR THE PART CORRECT.
+
+ END
+
diff --git a/RRDX2.ASM b/RRDX2.ASM
new file mode 100755 (executable)
index 0000000..c8da074
--- /dev/null
+++ b/RRDX2.ASM
@@ -0,0 +1,668 @@
+ OPT NOL
+ LIB RRF
+ OPT LIS
+ STTL DIAGONAL EXPLOSIONS
+*
+*      EXPLODING OBJECT DATA STRUCTURE
+*
+       ORG    DXTAB          PLACE FOR DATA
+
+EX     EQU    *
+NEXTZ  RMB    2  LIST POINTER
+PICPTZ RMB    2  POINTER TO DATA   
+XCENTZ RMB    1  SCREEN X CENTER (LEFT X OF CENTER LINE)
+YCENTZ RMB    1  SCREEN Y CENTER
+YOFZ   RMB    1  OFFSET IN Y TO OBJECT CENTER  (PIXELS) (0-HEIGHT)
+XSIZEZ RMB    1  X SIZE USED LAST (THIS) FRAME
+YSIZEZ RMB    2  CURRENT Y POINT SPACING                          
+FRAMEZ RMB    1  FRAMES TO RUN IN EFFECT
+ULZ    RMB    2  UPPER LEFT
+WHZ    RMB    2  WIDTH,HEIGHT
+DMAWHZ RMB    2  DMA HEIGHT WIDTH
+YHITEZ RMB    1
+SLOPEZ RMB    1  SLOPE OF DIAGONAL LINE WE ARE EXPLODING (SIGN BIT)
+DATAZ  RMB    16*2    LIST OF ROW DATA POINTERS (FOR SPEED MAN)
+ESIZEZ EQU    *
+
+NEXT   EQU    NEXTZ-EX
+PICPTR EQU    PICPTZ-EX
+XCENT  EQU    XCENTZ-EX
+YCENT  EQU    YCENTZ-EX
+YOF    EQU    YOFZ-EX
+XSIZER EQU    XSIZEZ-EX
+YSIZER EQU    YSIZEZ-EX
+FRAMES EQU    FRAMEZ-EX
+UL     EQU    ULZ-EX
+WH     EQU    WHZ-EX
+DMAWH  EQU    DMAWHZ-EX
+YHITE  EQU    YHITEZ-EX
+SLOPE  EQU    SLOPEZ-EX
+DATA   EQU    DATAZ-EX
+EXSIZE EQU    ESIZEZ-EX
+
+       RMB    ((10-1)*EXSIZE)    NUMBER OF BLOCKS
+
+EXEND  EQU    *
+
+       ORG    DXRAM      (BASE PAGE)
+
+YYCNT   RMB    1        WHEN CHOPPING UP X, SAVE TO UPDATE ULY
+YOFF   RMB    1        ACTUAL PIXEL OFFSET TO CENTER (USED)
+XSIZE  RMB    1        DISTANCE BETWEEN X POINTS THIS FRAME
+YSIZE  RMB    1        DISTANCE BETWEEN Y POINTS THIS FRAME
+EXPTR  RMB    2
+APPTR  RMB    2        APPEAR POINTER
+EXFREE RMB    2
+HITE   RMB    1
+TEMP1  RMB    2
+TEMP2  RMB    1
+*
+*VECTORS
+*
+       ORG    RDXORG
+ JMP EXINV
+ JMP EXSTZ
+ JMP APSTZ
+ JMP DXUPDV
+*
+*INIT DATA STRUCT
+*
+
+EXINV  PSHS   X,Y    
+       LDX    #EX      FIRST
+       STX    EXFREE
+EXIN0  LEAY   EXSIZE,X FIND NEXT
+       STY    ,X       STORE
+       CMPY   #EXEND   DONE??        
+       BHS    EXIN1
+       LEAX   ,Y       MAKE US NEXT
+       BRA    EXIN0
+EXIN1  LDY    #0
+       STY    ,X
+       STY    EXPTR
+       STY    APPTR
+       PULS   X,Y,PC
+
+GETBLK PSHS   Y
+       LDU    EXFREE
+       BEQ    NOBLK          NONE
+       LDY    ,U             GET NEXT
+       STY    EXFREE
+       LDY    EXPTR          GET LIST
+       STY    ,U             APPEND US
+       STU    EXPTR
+       CLC
+       PULS   Y,PC           RETURN IN U
+NOBLK  SEC
+       PULS   Y,PC    
+
+GETAP  PSHS   Y
+       LDU    EXFREE
+       BEQ    NOBLK
+       LDY    ,U
+       STY    EXFREE
+       LDY    APPTR
+       STY    ,U
+       STU    APPTR
+       CLC
+       PULS   Y,PC
+*
+*START AN APPEAR
+*X=OBJ,A=SLOPE
+APSTZ  PSHS   X,Y,D,U
+       JSR    GETAP    GET AN APPEAR BLOCK
+       BCS    APBY     NONE
+       STA    SLOPE,U  SAVE SLOPE
+       LDD    OBJX,X
+       LDX    OPICT,X
+       STD    UL,U     START AS UPPER LEFT
+       STA    XCENT,U  SAVE X CENTER
+       LDB    CENTMP+1
+       STB    YCENT,U
+       SUBB   UL+1,U   SUBTRACT Y UPPER LEFT
+       BCS    NWCEAP   NO GOOD
+       CMPB   1,X      COMPARE 
+       BLO    APNTOK
+NWCEAP LDB    ,X       GET WIDTH
+       LSRB            1/2 Y
+       STB    YOF,U    SAVE OFFSET
+       ADDB   UL+1,U   ADD TOP         
+       STB    YCENT,U  THIS IS 
+       BRA    CCOAP 
+APNTOK STB    YOF,U
+CCOAP  LDD    ,X       FETCH H,W
+       STD    WH,U     SAVE
+       LDB    #1       HEIGHT IS 1 FOR DMA 
+       STB    YHITE,U  SMALL HEIGHT FOR FIRST (CRAZY) ERASE
+       EORA   #$4
+       EORB   #$4
+       STD    DMAWH,U  FORMED
+       LDX    2,X      GET DATA POINTER
+       STX    PICPTR,U SAVE OBJECT DESC
+       LDD    #$1000   START LARGE FOR APPEAR
+       STD    YSIZER,U
+       CLR    XSIZER,U ERASE NORMAL OBJECT FIRST FRAME
+       BSR    DATALD   LOAD THE ROW DATA PTRS
+APBY   PULS   X,D,U,PC,Y   AND RETURN TO CALLER
+
+DATALD LDX    PICPTR,U GET POINTER TO DATA
+       LDB    WH,U     WIDTH IN B                   
+       LDA    WH+1,U   HEIGHT IN A
+       LEAU   DATA,U   POINT AT THE DATA
+DATLD1 STX    ,U++     STORE POINTER TO CURRENT ROW
+       ABX             ADDING WIDTH FORMS POINTER TO NEXT ROW
+       DECA            1 LESS ROW (OFF HEIGHT)
+       BNE    DATLD1   DONE?
+       RTS             YEP
+
+
+*
+*START AN EXPLOSION
+*X=OBJ,A=SLOPE
+EXSTZ  PSHS   X,U,D,Y
+       JSR    GETBLK   GET A BLOCK TO USE
+       BCS    EXBYE    DONE...NO BLOCKS
+       STA    SLOPE,U
+       LDD    OBJX,X
+       LDX    OPICT,X
+       STD    UL,U     STORE UPPER LEFT (FIRST FRAME)
+       STA    XCENT,U  SAVE LEFT X
+       LDB    CENTMP+1
+       STB    YCENT,U
+       SUBB   UL+1,U   SUBTRACT Y UPPER LEFT
+       BCS    NWCENT   NO GOOD
+       CMPB   1,X      COMPARE 
+       BLO    CENTOK
+NWCENT LDB    ,X       GET WIDTH
+       LSRB            1/2 Y
+       STB    YOF,U    SAVE OFFSET
+       ADDB   UL+1,U   ADD TOP         
+       STB    YCENT,U  THIS IS 
+       BRA    CCONT 
+CENTOK STB    YOF,U
+CCONT  LDD    ,X       FETCH H,W
+       STD    WH,U     SAVE
+       STB    YHITE,U  HITE FOR FIRST ERASE
+       LDB    #1       HEIGHT IS 1 FOR DMA 
+       EORA   #$4
+       EORB   #$4
+       STD    DMAWH,U  FORMED
+       LDX    2,X      GET DATA POINTER
+       STX    PICPTR,U SAVE OBJECT DESC
+       LDD    #$100    1 UNIT IS MIN
+       STD    YSIZER,U
+       CLR    XSIZER,U
+       LDA    #$10    NUMBER OF BYTES TO ERASE, NUMBER OF FRAMES LEFT
+       STA    FRAMES,U
+       BSR    DATALD   LOAD THE ROW POINTERS
+EXBYE  PULS   X,D,U,PC,Y   AND RETURN TO CALLER
+
+*      THIS CODE DMA'S THE DMASIZONTAL LINES
+*      A JUMP INTO HERE IS MADE BASED ON NUMBER OF
+*      DMASIZONTAL LINES IN OBJECT
+
+BSLOOP LDX    ,Y++           GET THE ROW POINTER
+       STX    DMAORG           THIS IS ORIGIN
+       STD    DMADES           D IS DEST
+       STU    DMACTL         THIS IS THE CONTROL REGISTER
+       ADDD   XSIZE          KICK POINTER TO NEXT ONE
+BSSIZE EQU    *-BSLOOP
+
+       LDX    ,Y++           GET THE ROW POINTER
+       STX    DMAORG           THIS IS ORIGIN
+       STD    DMADES           D IS DEST
+       STU    DMACTL         THIS IS THE CONTROL REGISTER
+       ADDD   XSIZE          KICK POINTER TO NEXT ONE
+
+       LDX    ,Y++           GET THE ROW POINTER
+       STX    DMAORG           THIS IS ORIGIN
+       STD    DMADES           D IS DEST
+       STU    DMACTL         THIS IS THE CONTROL REGISTER
+       ADDD   XSIZE          KICK POINTER TO NEXT ONE
+
+       LDX    ,Y++           GET THE ROW POINTER
+       STX    DMAORG           THIS IS ORIGIN
+       STD    DMADES           D IS DEST
+       STU    DMACTL         THIS IS THE CONTROL REGISTER
+       ADDD   XSIZE          KICK POINTER TO NEXT ONE
+
+       LDX    ,Y++           GET THE ROW POINTER
+       STX    DMAORG           THIS IS ORIGIN
+       STD    DMADES           D IS DEST
+       STU    DMACTL         THIS IS THE CONTROL REGISTER
+       ADDD   XSIZE          KICK POINTER TO NEXT ONE
+
+       LDX    ,Y++           GET THE ROW POINTER
+       STX    DMAORG           THIS IS ORIGIN
+       STD    DMADES           D IS DEST
+       STU    DMACTL         THIS IS THE CONTROL REGISTER
+       ADDD   XSIZE          KICK POINTER TO NEXT ONE
+
+       LDX    ,Y++           GET THE ROW POINTER
+       STX    DMAORG           THIS IS ORIGIN
+       STD    DMADES           D IS DEST
+       STU    DMACTL         THIS IS THE CONTROL REGISTER
+       ADDD   XSIZE          KICK POINTER TO NEXT ONE
+
+       LDX    ,Y++           GET THE ROW POINTER
+       STX    DMAORG           THIS IS ORIGIN
+       STD    DMADES           D IS DEST
+       STU    DMACTL         THIS IS THE CONTROL REGISTER
+       ADDD   XSIZE          KICK POINTER TO NEXT ONE
+
+       LDX    ,Y++           GET THE ROW POINTER
+       STX    DMAORG           THIS IS ORIGIN
+       STD    DMADES           D IS DEST
+       STU    DMACTL         THIS IS THE CONTROL REGISTER
+       ADDD   XSIZE          KICK POINTER TO NEXT ONE
+
+       LDX    ,Y++           GET THE ROW POINTER
+       STX    DMAORG           THIS IS ORIGIN
+       STD    DMADES           D IS DEST
+       STU    DMACTL         THIS IS THE CONTROL REGISTER
+       ADDD   XSIZE          KICK POINTER TO NEXT ONE
+
+       LDX    ,Y++           GET THE ROW POINTER
+       STX    DMAORG           THIS IS ORIGIN
+       STD    DMADES           D IS DEST
+       STU    DMACTL         THIS IS THE CONTROL REGISTER
+       ADDD   XSIZE          KICK POINTER TO NEXT ONE
+
+       LDX    ,Y++           GET THE ROW POINTER
+       STX    DMAORG           THIS IS ORIGIN
+       STD    DMADES           D IS DEST
+       STU    DMACTL         THIS IS THE CONTROL REGISTER
+       ADDD   XSIZE          KICK POINTER TO NEXT ONE
+
+       LDX    ,Y++           GET THE ROW POINTER
+       STX    DMAORG           THIS IS ORIGIN
+       STD    DMADES           D IS DEST
+       STU    DMACTL         THIS IS THE CONTROL REGISTER
+       ADDD   XSIZE          KICK POINTER TO NEXT ONE
+
+       LDX    ,Y++           GET THE ROW POINTER
+       STX    DMAORG           THIS IS ORIGIN
+       STD    DMADES           D IS DEST
+       STU    DMACTL         THIS IS THE CONTROL REGISTER
+       ADDD   XSIZE          KICK POINTER TO NEXT ONE
+
+       LDX    ,Y++           GET THE ROW POINTER
+       STX    DMAORG           THIS IS ORIGIN
+       STD    DMADES           D IS DEST
+       STU    DMACTL         THIS IS THE CONTROL REGISTER
+       ADDD   XSIZE          KICK POINTER TO NEXT ONE
+
+       LDX    ,Y++           GET THE ROW POINTER
+       STX    DMAORG           THIS IS ORIGIN
+       STD    DMADES           D IS DEST
+       STU    DMACTL         THIS IS THE CONTROL REGISTER
+
+       CLI
+       PULS   Y,PC           RESTORE Y, RETURN
+
+ERLOOP STD    DMADES           DEST TO ERASE
+       STU    DMACTL-1         BYTE TO DO IT
+       ADDD   XSIZE          ADD OFFSETS
+ERSIZ  EQU    *-ERLOOP
+
+       STD    DMADES
+       STU    DMACTL-1
+       ADDD   XSIZE
+
+       STD    DMADES
+       STU    DMACTL-1
+       ADDD   XSIZE
+
+       STD    DMADES
+       STU    DMACTL-1
+       ADDD   XSIZE
+
+       STD    DMADES
+       STU    DMACTL-1
+       ADDD   XSIZE
+
+       STD    DMADES
+       STU    DMACTL-1
+       ADDD   XSIZE
+
+       STD    DMADES
+       STU    DMACTL-1
+       ADDD   XSIZE
+
+       STD    DMADES
+       STU    DMACTL-1
+       ADDD   XSIZE
+
+       STD    DMADES
+       STU    DMACTL-1
+       ADDD   XSIZE
+
+       STD    DMADES
+       STU    DMACTL-1
+       ADDD   XSIZE
+
+       STD    DMADES
+       STU    DMACTL-1
+       ADDD   XSIZE
+
+       STD    DMADES
+       STU    DMACTL-1
+       ADDD   XSIZE
+
+       STD    DMADES
+       STU    DMACTL-1
+       ADDD   XSIZE
+
+       STD    DMADES
+       STU    DMACTL-1
+       ADDD   XSIZE
+
+       STD    DMADES
+       STU    DMACTL-1
+       ADDD   XSIZE
+
+       STD    DMADES
+       STU    DMACTL-1
+       ADDD   XSIZE
+
+       CLI
+       RTS                                        
+
+ERASE  LDB    YHITE,Y        ACTUALLY PLOTTED
+       SUBB   #16            MAX OF 16
+       NEGB
+       ASLB
+       ASLB
+       ASLB
+       LDX    #ERLOOP
+       ABX
+
+       LDD    XSIZER,Y
+       STD    XSIZE
+
+       LDA    RWCTMP         GET RWBYTE
+       LDB    #$12           ERASE
+
+       TFR    D,U
+       LDD    #0
+
+       SEI
+
+       STD    DMACON          CONSTANT, AND HIGH HALF OF DMAORG
+
+       LDD    DMAWH,Y
+       STD    DMASIZ
+
+       LDD    UL,Y           DMADESINATION STARTS WITH UPPER LEFT
+
+       JMP    ,X      
+
+KILEXP LDU    #EXPTR         LETS WALK LIST TO FIND HIM
+KILEX2 CMPY   ,U             ARE WE SET
+       BEQ    KILEX1         YEP
+       LDU    ,U             KEEP WALKING
+       BNE    KILEX2         STILL STUFF THERE
+       SEI
+       BRA    *              ERROR TRAP
+KILEX1 LDD    ,Y             GET GUY WE POINT AT
+       STD    ,U             POINT AROUND US
+       LDD    EXFREE
+       STD    ,Y             APPEND FREE LIST
+       STY    EXFREE
+       LEAY   ,U             RETURN GUY BEFORE US TO WALK FROM
+       RTS                   DONE!
+*
+*WRITE YOUR APPEAR!!!
+*Y=EXPLOSION
+AWRITE LDD YSIZER,Y
+ SUBD #$100
+ CMPA YSIZER,Y ANY SIZE CHANGE?
+ BNE AWRIT0 YES
+ STB YSIZER+1,Y NO DICE
+ RTS
+AWRIT0 JSR ERASE
+ LDA STATUS
+ BNE AWRIT1
+ LDD PX SCROLL THE COCK SUCKER
+ STA XCENT,Y
+ ADDB YOF,Y
+ STB YCENT,Y
+AWRIT1 LDA    WH+1,Y   GET HEIGHT
+       STA    HITE     PRELIMINARY ATTEMPT AT HEIGHT
+
+       LDD    YSIZER,Y GET CURRENT SIZE
+       SUBD   #$0100    TAKE AWAY SOME SIZE
+       CMPA   #1
+       BHI    APGO     DONE!
+       LDU    #APPTR   FIND HE WHO POINTS AT HIM....NOW KILL IT
+       BRA    KILEX2   NOW ITS JUST LIKE AN EXPLODE KILL 
+
+WRITE  DEC    FRAMES,Y       ONE LESS FRAME
+       BEQ    KILEXP         DONE
+
+       LDA    WH+1,Y   GET HEIGHT
+       STA    HITE
+
+       LDD    YSIZER,Y
+       ADDD   #$100
+APGO   STA    YSIZE
+       STD    YSIZER,Y
+
+       LSRA            1/2 FOR X SIZE
+       STA    TEMP2    ALSO SAVE TO ADD 1/2 SIZE UNIT FOR CENTER LINE
+       LDB    SLOPE,Y  CHECK SLOPE
+       BPL    APGG1    POSITIVE
+       NEGA            NEGATIVE
+APGG1  STA    XSIZER,Y AND SAVE
+       STA    XSIZE    SCRATCH SOME SPEED
+
+       LDB    YOF,Y    CHECK FOR ZERO OFFSET
+       BNE    APGO1
+       STB    TEMP2    IF DOWN FROM TOP....FIX TOP ONE (OBSCURE BUG)
+
+APGO1  LDA    YSIZE
+       LDB    YOF,Y          GET OFFSET
+       STB    YOFF           SAVE FOR X CALCULATION
+       MUL                   DISTANCE UP FROM CENTER
+
+       STD    TEMP1          SAVE
+       LDB    YCENT,Y        GET CENTER
+       CLRA
+       SUBD   TEMP1          LETS BE GENERAL PURPOSE
+       ADDB   TEMP2          ADD 1/2 SIZE
+       ADCA   #0             AND PROPAGATE
+       BNE    CHK2           NO GOOD..TIME TO SCREW AROUND
+*
+*      DON'T WORRY EUGENE...I GOT THIS FIX THIS TIME
+*
+       CMPB   #YMIN
+       BHI    CHK3           IN RANGE
+
+CHK2   DEC    HITE           1 LESS
+       DEC    YOFF
+       ADDB   YSIZE          BRING BACK FROM NEGATIVE NOWHERE
+       ADCA   #0
+       BNE    CHK2           AND LOOP A WHILE
+
+       CMPB   #YMIN          POSITIVE-VILLE...BIG ENOUGH 
+       BLS    CHK2           NOPE
+
+CHK3   STB    UL+1,Y         STORE IN PLACE
+       LDA    YOFF           ACTUAL Y OFFSET USED
+       LDB    XSIZE          WHICH SLOPE??
+       BMI    XNEG           BUMMER
+
+       MUL                   FIND DEFLECTION
+       STD    TEMP1          WHERE HAVE I SEED CODE LIKE THIS
+       LDB    XCENT,Y        GET X "CENTER"
+       CLRA                  X CENTER HAS BEEN COMPUTED
+
+       SUBD   TEMP1          FIND WHERE LEFTMOST X OCCURS
+       TSTA                  NEGATIVE??
+       BNE    CKK2A          YEP...SHIFT IT IN
+
+       CMPB   #XMIN          IN RANGE??
+       BHI    CKK3AA         RIGHT ON
+
+CKK2A  CLR    YYCNT           COUNT TO UDPATE 1 STARTING POINT
+
+CKK2B  DEC    HITE           CHOP SOME MORE AWAY
+       INC    YYCNT           INCICATE 1 MORE
+       ADDB   XSIZE          ADD THE X UNITS
+       ADCA   #0
+       BNE    CKK2B          AND ITERATE
+
+       CMPB   #XMIN
+       BLS    CKK2B          THANK YOU SIR MAY I HAVE ANOTHER
+
+CKK3C  STB    UL,Y           THIS IS THE UPPER LEFT X
+
+       LDB    YYCNT           GET THE YER
+       LDA    YSIZE          GET Y SIZE
+       MUL                   NUMBER OF Y UNITS FROM X CLIP
+
+       ADDB   UL+1,Y
+       STB    UL+1,Y
+
+       BRA    CKK3B
+
+XNEG   NEGB                  MAKE SIZE POSITIVE (NEG STATE BY CONTROL HERE)
+       MUL                   NUMBER OF BYTES POS DISPLACEMENT
+       ADDB   WH,Y           ADD IN THE WIDTH, (GUAR NO CARRY IF SIZE<32I
+       ADDB   XCENT,Y        ADD CENTER TO FIND LAST PIXEL PLOTTED
+       ADCA   #0             ALL RIGHT!
+
+       BNE    XN2            NO GOOD...BIG CARRY 
+
+       CMPB   #XMAX          IN RANGE??
+       BLS    CKK3A          SAME IS OK SINCE THIS IS 1 BEYOND OB
+
+XN2    CLR    YYCNT           WE NEED TO KNOW HOW MANY CLIPPED
+
+XN22   DEC    HITE           1 MORE Y UNIT
+       INC    YYCNT
+       ADDB   XSIZE          ADD THE SIZE (REMEMBER, ITS NEGATIVE)
+       ADCA   #$FF           ADD EXTENDED SIGN
+       BNE    XN22           STILL TOO LARGE
+
+       CMPB   #XMAX          DID WE MAKE IT??
+       BHI    XN22           NOPE
+       SUBB   WH,Y           REMOVE THE WIDTH TO GET BACK TO LEFT
+       BRA    CKK3C          ADJUST Y FOR THE DAMAGES
+*                            (CKK3C IS UP, EUGENE)
+
+CKK3A  SUBB   WH,Y           GET BACK TO LEFT OF OB
+CKK3AA STB    UL,Y           SAVE GOOD X
+
+CKK3B  LEAX   DATA,Y         POINT AT FIRST ITEM 
+       LDB    WH+1,Y         GET HEIGHT
+       SUBB   HITE           FIND NUMBER WE WILL SKIP    
+       ASLB                  POINTERS ARE 2 BYTES
+       ABX                   WE NOW POINT AT FIRST ONE WE WILL USE
+
+*
+*      TIME FOR THE BUTT CLIP
+*
+
+       LDA    HITE           GET HEIGHT
+       DECA
+       LDB    YSIZE          FIND FILL DEFLECTION
+       MUL
+       ADDB   UL+1,Y         ADD FIRST POINT
+       ADCA   #0             FIND FULL DEFLECTION
+       BEQ    CHK4           AOK
+CHK5   DEC    HITE           1 LESS
+       BEQ    KLJMP          EXIT IMMEDIATELY ON TOTAL CLIP
+       SUBB   YSIZE          1 LESS DOWNWARD
+       SBCA   #0
+       BNE    CHK5
+CHK4   CMPB   #YMAX
+       BHS    CHK5
+
+       LDA    HITE           GET HITE BACK
+       DECA                  FIRSTIES DON'T COUNT
+       LDB    XSIZE          GET X SIZE
+       BMI    XNT            NEGATIVE SLOPE
+
+       MUL                   DEFLECTION OF LAST GUY
+       ADDB   WH,Y           ADD WIDTH
+       ADDB   UL,Y           ADD STARTING X
+       ADCA   #0             PROP IT
+       BEQ    NCK4           NOT HUGE
+NCK5   DEC    HITE           TAKE 1 AWAY
+       BEQ    KLJMP          TOTAL CLIP...BYE
+       SUBB   XSIZE          TRY AND BRING DOWN TO SIZE
+       SBCA   #0
+       BNE    NCK5
+NCK4   CMPB   #XMAX
+       BHI    NCK5           EQUAL IS OK
+       BRA    NCK6
+
+XNT    NEGB                  MAKE 
+       MUL
+       STD    TEMP1          SAVE OFFSET
+
+       LDB    UL,Y           GET UPPER LEFT
+       CLRA
+
+       SUBD   TEMP1          REMOVE OFFSET
+       TSTA
+
+       BEQ    NNCK4          NOT WAY TOO SMALL
+
+NNCK5  DEC    HITE           1 LESS
+       BEQ    KLJMP
+       SUBB   XSIZE          ADDING NEG MOVES US POSITVE
+       SBCA   #$FF           SUB SIGN EXT
+       BNE    NNCK5          KEEP GOING
+
+NNCK4  CMPB   #XMIN
+       BLS    NNCK5          KEEP GOING
+
+*      FIND "LOOP" ENTRY
+
+NCK6   LDA    HITE           GET HEIGHT
+       BNE    NOKILE
+KLJMP  JMP    KILEXP         NO HEIGHT
+
+NOKILE STA    YHITE,Y        SAVE FOR ERASE
+       SUBA   #16            16 = 0 OFFSET, 0 = 16 OFFSET
+       NEGA
+       LDB    #BSSIZE        SIZE OF ITERATION
+       MUL
+       ADDD   #BSLOOP        BEGINNING
+       PSHS   D,Y            SETUP STACK AS FOLLOWS:    
+
+*      PTR     ->   D = JUMP ADDRESS
+*                   Y = PUSHED TO SAVE FOR RTS
+*                   <RETURN ADDRESS>
+
+*                   PULS   Y,PC     AT END OF LOOP CAUSES PROPER RETURN
+
+       LDU    #$0A0A         CONTROL REGISTER
+       LDD    DMAWH,Y        GET WH
+
+       SEI                   NO INTS BABY
+       STD    DMASIZ
+       LDD    UL,Y           GET DMADESINATION IN D 
+
+       LEAY   ,X             MAKE Y POINT AT PROPER DATA GUY
+
+       RTS                   RETURN, MY ASS!
+*
+*UPDATE YOUR DIAGONALS
+*
+DXUPDV LDY EXPTR
+ BEQ APUPD
+DXUPDL JSR ERASE
+ JSR WRITE
+ LDY ,Y
+ BNE DXUPDL
+APUPD LDY APPTR
+ BEQ APUPDX
+APUPDL JSR AWRITE
+ LDY ,Y
+ BNE APUPDL
+APUPDX RTS
+ END
+
diff --git a/RRELESE6.ASM b/RRELESE6.ASM
new file mode 100755 (executable)
index 0000000..1298984
--- /dev/null
@@ -0,0 +1,19 @@
+*
+*      Additional patch bytes for version 6.   It is assumed that
+*      the binary of all of these sources, Plus these patches,
+*      plus setting the checksum block around ffb0 comprises
+*      the correct binary image.
+*
+
+       ORG    $26B1
+       FCB    $55,$55,$55,$55,$55,$55,$55,$55
+       ORG    $DF34
+       FCB    $A,$A,$A,$A,$A,$A,$A       
+       ORG    $E3B0
+       FCB    $26,$26,$26,$26,$26,$26,$26,$26,$26
+       ORG    $6D2E
+       FCB    $21
+       ORG    $E398
+       FCB    $A6
+       END
+
diff --git a/RRET.ASM b/RRET.ASM
new file mode 100755 (executable)
index 0000000..447dea3
--- /dev/null
+++ b/RRET.ASM
@@ -0,0 +1,984 @@
+PHRTAB FDB    BADDMP                                                     0
+       FDB    OKMP    PHRASE 16 INITIAL TESTS...                         1
+       FDB    RERRMP  PHRASE 17 RAM ERROR                                2
+       FDB    ROMERP  PHRASE 18 ROM ERROR                                3
+       FDB    ROMOKP  PHRASE 25 ALL ROMS OK ETC                          4
+       FDB    RAMOKP  PHRASE 26 NO RAM ERRORS DETECTED                   5
+       FDB    CMOKP   PHRASE 27 BATTERY RAM OK                           6
+       FDB    CMERRP  PHRASE 28 BATTERY RAM ERROR                        7
+       FDB    CMDORP  PHRASE 29 BATTERY ROM, OR WRITE PROTECT CIRCUIT    8
+       FDB    SNDTEP  PHRASE 30 SOUND LINE X                             9
+       FDB    FDROMP  PHRASE 31 FRONT DOOR ROM ERROR                    10 
+       FDB    FDRAMP  PHRASE 32 FRONT DOOR RAM ERROR                    11
+       FDB    SWTSTP  PHRASE 33 SWITCH TEST                             12
+       FDB    SZAUP   AUTO UP               34                          13
+       FDB    SZADV    ADV                  35                          14
+       FDB    SZRC     RIGHT COIN           36                          15
+       FDB    SZHSR    HIGH SCORE RESET     37                          16
+       FDB    SZLC     LEFT COIN            38                          17
+       FDB    SZCC     CENTER COIN          39                          18
+       FDB    SZSS     SLAM SWITCH          40                          19
+       FDB    SZFIRE   FIRE MESSAGE         41                          20
+       FDB    SZTHR    THRUST               42                          21
+       FDB    SZSB     SMART BOMB           43                          22
+       FDB    SZHYP    HYPER SPACE          44                          23
+       FDB    SZS2     START 2              45                          24
+       FDB    SZS1     START 1              46                          25
+       FDB    SZREV    REVERSE              47                          26
+       FDB    SZDOWN   DOWN                 48                          27
+       FDB    SZUP     UP                   49                          28
+       FDB    SZINV    INVISO               50                          29
+       FDB    CRTSTP   COLOR MATRIX TEST    51                          30
+       FDB    BOOKMP   BOOKKEEPING          52                          31
+       FDB    AZS1     LEFT SLOT            53                          32
+       FDB    AZS2     CENTER SLOT          54                          33
+       FDB    AZS3     RIGHT SLOT           55                          34
+       FDB    AZPDC    PAID CREDITS         56                          35
+       FDB    AZFS     FREE SHIPS           57                          36
+       FDB    AZTIM    TOTAL PLAY TIME      58                          37
+       FDB    AZSHIP   TOTAL SHIP COUNT     59                          38
+       FDB    AZPLAY   TOTAL PLAYS          60                          39
+       FDB    GOMP     GAME OVER                                        40
+       FDB    AUD1P    HIGH OF 6 DIG        62                          41
+       FDB    AUD2P    LOW OF 6 DIG         63                          42
+       FDB    AUD3P    4 DIG                64                          43
+       FDB    FROBMP   FROB                       65                    44
+       FDB    CONTMP   CONTINUED ON NEXT PAGE     66                    45
+       FDB    JZREP    REPLAY ADJUSTMENT          67                    46
+       FDB    JZSHP    1 CRED SHIPS               68                    47
+       FDB    JZCONS   COIN SELECT                70                    48
+       FDB    JZSL1    SLOT 1                     71                    49
+       FDB    JZSL2    SLOT 2                     72                    50
+       FDB    JZSL3    SLOT 3                     73                    51
+       FDB    JZCUC    CREDIT UNIT                74                    52
+       FDB    JZCUB    BONUS UNIT                 75                    53
+       FDB    JZMUN    MINIMUM UNITS NEEDED       76                    54
+       FDB    JZFREE   FREE PLAY                  77                    55
+       FDB    JZMASA   MASTER ADJUST              78                    56
+       FDB    JZGODL   GOD LETTERS                87                    57
+       FDB    JZFACS   FACTORY SETTINGS           88                    58
+       FDB    JZCAUD   CLEAR AUDIT                89                    59
+       FDB    JZCLHS   CLEAR HIGH SCORES          90                    60
+       FDB    JZAUTO   AUTO CYCLE                 91                    61
+       FDB    JZOPM    OPERATOR MESSAGE           92                    62
+       FDB    JZGOD    LETTERS IN GOD             93                    63
+       FDB    REPMS1   REPLAY MESSAGE 1           94                    64
+       FDB    REPMS2                              95                    65
+       FDB    NOMESP   JUST THE NUMBER            96                    66
+       FDB    HIVOLP   HI VOLUME ARCADE           97                    67
+       FDB    RECOMP   RECOMMENDED SETTING        98                    68
+       FDB    POORPP   WEAK PLAYER SETTING        99                    69
+       FDB    CUSTMP   CUSTOM SETTINGS           100                    70
+       FDB    YESMP    YES ONLY                  101                    71
+       FDB    NOMP     NO ONLY                   102                    72
+       FDB    EXLIBP   EXTRA LIBERAL             103                    73
+       FDB    LIBP                               104                    74
+       FDB    PGOMP   PLAYER X GAME OVER         105                    75
+       FDB    CONSP                              106                    76
+       FDB    EXCONP                             107                    77
+       FDB    REPMS3   REPLAY MESSAGE 3          108                    78
+       FDB    CMIMEP                             109                    79
+       FDB    RESMSP                             110                    80
+       FDB    YES1MP                             111                    81
+       FDB    COIN1P                             112                    82
+       FDB    COIN2P                             113                    83
+       FDB    COIN3P                             114                    84
+       FDB    COIN4P                             115                    85
+       FDB    COIN5P                             116                    86
+       FDB    COIN6P                             117                    87
+       FDB    COIN7P                             118                    88
+       FDB    COIN8P                             119                    89
+       FDB    NOREPP                             120                    90
+       FDB    BOOKRP                             121                    91
+       FDB    OPMESP                             125                    92
+       FDB    HSRESP                             126                    93
+       FDB    GODMSP                             135                    94
+       FDB    CONGP                              136                    95 
+       FDB    NOWMSP                             137                    96
+       FDB    HSINDP                             139                    97
+       FDB    HIGH1P                             140                    98
+       FDB    HIGH3P                             141                    99
+       FDB    ONLY5P                             148                   100
+       FDB    CENTRP                             149                   101
+       FDB    REPMS4                                                   102
+       FDB    PLUPP    PLAYER X UP                                     103
+       FDB    WAVEP    WAVE NUMBER                                     104
+       FDB    INDMFP                                                   105
+       FDB    AVM1                                                     106
+       FDB    AVM2                                                     107
+       FDB    AVM3                                                     108
+       FDB    AVM4                                                     109
+       FDB    SCRMEP                                                   110
+       FDB    INDMEP                                                   111
+       FDB    CPYM1                                                    112
+       FDB    CPYM2                                                    113
+       FDB    WAVEM2                                                   114
+       FDB    PMOM
+       FDB    PDAD
+       FDB    PKID
+       FDB    PGRUNT
+       FDB    PHULK
+       FDB    PSPCU
+       FDB    PENTK
+       FDB    PBRAIN
+       FDB    COINF                                                    123
+       FDB    PPROG
+       FDB    EXMANN                                                   125
+       FDB    NULM                                                     126
+       FDB    CRDM22
+       FDB    TITLEP                                                   128
+       FDB    FAMMP                                                    129
+
+SCRMEP FCB    COLOR,$77,CURSAB,$35,$25,0,SUB
+       FDB    ROHSUB
+       FCC    'ES'
+       FCB    CURSAB,$35,$6E,0
+       FCC    'ALL '            
+       FCB    CURSOR,0,0,1 
+       FCC    'TIME '
+       FCB    CURSOR,1,0,0
+       FCC    'HEROES'
+NULM   FCB    0
+
+ROHSUB FCC    'ROBOTRON HERO'
+       FCB    0
+
+INDMEP FCB    SBLANK,NUMB,RPAREN,SPACE,0
+
+CENTRP FCB    COLOR,$99,CURSAB,$25,$70,1
+       FCC    'CENTER THE LINE USING '               
+       FCB    HYPHEN
+       FCC    'FIRE'
+       FCB    HYPHEN,CURSAB,$24,$7E,1
+       FCB    SUB
+       FDB    PASUB   'PRESS ADVANCE '
+       FCC    'WHEN CENTERED'
+       FCB    COLOR,$BB,SFONT,CURSAB,$49,$50,1,ARROW
+       FCB    0
+
+PASUB  FCC    'PRESS ADVANCE '
+       FCB    0
+
+PESUB  FCB    SUB
+       FDB    PASUB
+       FCC    'TO EXIT'
+       FCB    0
+
+OPMESP FCB    COLOR,$BB,CURSAB,$2E,$16,0,SUB
+       FDB    AMSUB
+       FCB    SUB  
+       FDB    TELSUB
+       FCB    0
+
+ONLY5P FCB    COLOR,$BB,CURSAB,$20,$70,0
+       FCC    '5 ENTRIES MAXIMUM'            
+       FCB    SUB
+       FDB    PPSUB
+       FCB    CURSAB,$28,$90,1
+       FCC    'LOWEST ENTRY REPLACED'
+       FCB    0
+
+TELSUB FCB    SFONT,COLOR,$99,CURSAB,$2F,$C0,1
+       FCB    SUB
+       FDB    UPDNSB
+       FCC    'LETTER'
+       FCB    CURSAB,$32,$CC,0
+       FCB    HYPHEN
+       FCC    'FIRE UP'
+       FCB    HYPHEN
+       FCC    ' TO ENTER LETTER'
+       FCB    COLOR,$44
+       FDB    0
+
+PRPLYR FCB    CURSAB,$40,$10,$0
+PLRSUB FCC    'PLAYER '
+       FCB    0
+
+GODMSP FCB    COLOR,$BB,SUB               
+       FDB    PRPLYR    
+       FCB    ZBLANK,NUMY,CURSAB,$2C,$28,0
+       FCC    'YOU ARE THE GREATEST'               
+       FCB    CURSAB,$36,$38,0,SUB
+       FDB    ROHSUB
+       FCB    CURSAB,$34,$58,0,SUB
+       FDB    ENTSSB
+       FCC    'NAME'
+       FCB    CURSAB,$31,$68,0,LPAREN
+       FCC    'UP TO '
+       FCB    ZBLANK,NUMB
+       FCC    ' LETTERS'
+       FCB    RPAREN,SUB
+       FDB    TELSUB
+       FCB    0
+
+ENTSSB FCC    'ENTER YOUR '
+       FCB    0
+
+CONGP  FCB    COLOR,$44,SUB      
+       FDB    PRPLYR
+       FCB    ZBLANK,NUMB
+       FCB    CURSAB,$29,$30,0
+       FCC    'YOU ARE A '                 
+       FCB    SUB
+       FDB    ROHSUB
+NOWSUB FCB    CURSAB,$2D,$58,1,SUB
+       FDB    ENTSSB
+       FCC    'INITIALS'
+       FCB    COLON,SUB
+       FDB    TELSUB
+       FCB    0
+
+NOWMSP FCB    COLOR,$99,SUB
+       FDB    PRPLYR
+       FCB    ZBLANK,NUMB
+       FCB    CURSAB,$43,$67,0
+       FCC    'ALSO'
+       FCB    SUB
+       FDB    NOWSUB
+       FCB    0
+
+HSINDP FCB    SBLANK,NUMB,RPAREN,SPACE,SPACE,0
+
+HIGH1P FCB    SBLANK,NUMY,0
+
+HIGH3P FCB    CURSOR,$8,0,0,SBLANK,NUMY,0
+
+REPMS1 FCB    SBLANK,NUMB 
+       FCC    '000  '       
+LIBS   FCC    'LIBERAL'
+       FCB    0
+
+REPMS2 FCB    SBLANK,NUMB
+       FCC    '000  '               
+RECS1  FCC    'RECOMMENDED'
+       FCB    0
+
+REPMS3 FCB    SBLANK,NUMB
+       FCC    '000  '                
+CONSUB FCC    'CONSERVATIVE'
+       FCB    0
+
+REPMS4 FCB    SBLANK,NUMB
+       FCC    '000  EXTRA '              
+       FCB    SUB
+       FDB    CONSUB
+       FCB    0
+
+SPSUB  FCB    CURSOR,8,0,0        MOVE 8 FULL BYTES TO THE RIGHT
+       FCB    0
+
+RECS2  FCB    SUB
+       FDB    SPSUB
+       FCB    SUB
+       FDB    RECS1
+       FCB    0
+
+NOMESP FCB    SBLANK,NUMB,0
+
+HIVOLP FCB    SUB
+       FDB    SVSUB
+       FCC    'HIGH VOLUME ARCADES'
+       FCB    0
+
+RECOMP FCB    SBLANK,NUMB,SUB
+       FDB    RECS2
+       FCB    0
+
+POORPP FCB    SUB
+       FDB    SVSUB
+       FCC    'FOR WEAKER PLAYERS'
+       FCB    0
+
+CUSTMP FCB    SUB
+       FDB    SVSUB
+       FCC    'CUSTOM '
+       FCB    HYPHEN,SPACE,LPAREN
+       FCC    'ADJUST BELOW'
+       FCB    RPAREN,0
+YES1MP FCC    'YES'
+       FCB    SUB
+       FDB    SPSUB
+       FCB    CURSOR,-2,0,0 ALLOW FOR EXTRA LETTER 'S'
+       FCC    'ADVANCE TO ACTIVATE'
+       FCB    0
+
+SVSUB  FCB    SBLANK,NUMB,SUB
+       FDB    SPSUB
+       FCB    0
+
+YESMP  FCC    'YES'
+       FCB    0
+
+NOMP   FCC    'NO'
+       FCB    0
+
+
+EXLIBP FCB    SUB    
+       FDB    EXSBB
+       FCB    SUB
+       FDB    LIBS
+       FCB    0
+
+EXSBB  FCB    SUB
+       FDB    SVSUB
+       FCC    'EXTRA '
+       FCB    0
+
+LIBP   FCB    SUB
+       FDB    SVSUB
+       FCB    SUB
+       FDB    LIBS
+       FCB    0
+
+CONSP  FCB    SUB
+       FDB    SVSUB
+       FCB    SUB
+       FDB    CONSUB
+       FCB    0
+
+EXCONP FCB    SUB
+       FDB    EXSBB
+       FCB    SUB
+       FDB    CONSUB
+       FCB    0
+
+NOREPP FCB    SUB
+       FDB    SVSUB
+       FCC    'NO EXTRA MEN'
+       FCB    0  
+
+COIN1P FCB    SUB  
+       FDB    SVSUB
+       FCC    '1'  
+       FCB    SLASH  
+       FCC    'FIFTY  3'
+       FCB    SLASH 
+       FCC    'DOLLAR'
+       FCB    0
+
+COINF  FCB    SUB
+       FDB    SVSUB
+       FCC    'FREE PLAY'
+       FCB    0
+
+COIN2P FCB    SUB
+       FDB    SVSUB
+       FCC    '1'           
+       FCB    SLASH 
+       FCC    '1 DM  6'
+       FCB    SLASH 
+       FCC    '5 DM'
+       FCB    0
+
+COIN3P FCB    SUB
+       FDB    SVSUB
+       FCC    '1'                
+       FCB    SLASH 
+       FCC    'QUARTER  4'
+       FCB    SLASH 
+       FCC    'DOLLAR'
+       FCB    0
+
+COIN4P FCB    SUB
+       FDB    SVSUB
+       FCC    '1'           
+       FCB    SLASH 
+       FCC    '2 F  3'
+       FCB    SLASH 
+       FCC    '5 F'
+       FCB    0
+
+COIN5P FCB    SUB
+       FDB    SVSUB
+       FCC    '1'
+       FCB    SLASH 
+       FCC    'FIFTY  2'
+       FCB    SLASH 
+       FCC    'DOLLAR'
+       FCB    0
+
+COIN6P FCB    SUB 
+       FDB    SVSUB
+       FCC    '1'              
+       FCB    SLASH 
+       FCC    '25  4'
+       FCB    SLASH 
+       FCC    '1 G'
+       FCB    0
+
+COIN7P FCB    SUB
+       FDB    SVSUB
+       FCC    '1'         
+       FCB    SLASH 
+       FCC    '5 F  2'
+       FCB    SLASH 
+       FCC    '10 F'
+       FCB    0
+
+COIN8P FCB    SUB
+       FDB    SVSUB
+       FCC    '1'
+       FCB    SLASH 
+       FCC    '10 F'
+       FCB    0
+
+CMIMEP FCB    COLOR,$11,CURSAB,$30,$80,0,SUB
+       FDB    ADJS
+       FCC    ' FAILURE'
+       FCB    CURSAB,$20,$A0,0    
+       FCC    'RESTORE'
+       FCB    SUB
+       FDB    FACSUB
+       FCC    'BY'
+       FCB    CURSAB,$20,$B0,0,SUB
+       FDB    CMISUB
+       FCB    COKSUB
+       FDB    CMICOK
+       FCB    CURSAB,$20,$C0,0
+       FCC    'AND TURNING GAME OFF AND ON'         
+       FCB    0
+
+FACSUB FCC    ' FACTORY SETTINGS '
+       FCB    0
+
+RESMSP FCB    COLOR,$99,CURSAB,$21,$80,0,SUB
+       FDB    FACSUB
+       FCC    ' RESTORED'
+       FCB    0
+
+CMISUB FCC    'OPENING '           
+FDORSB FCC    'FRONT DOOR'
+       FCB    0
+
+CMICOK FCB    CURSAB,$20,$B0,0,COLOR,$00,SUB
+       FDB    CMISUB 
+       FCB    CURSAB,$20,$B0,0,COLOR,$11
+       FCC    'RAISING '          
+TABLSB FCC    'TABLE TOP'
+       FCB    0
+
+FROBMP FCB    COLOR,$99,FROB,COLOR,$66,0   DISPLAY FROB
+
+CONTMP FCB    LFONT,COLOR,$99,CURSAB,$37,$0F,0
+       FCC    'GAME '
+       FCB    SUB
+       FDB    ADJS
+       FCB    SFONT,CURSAB,$2E,$CD,0,COLOR,$99,SUB
+       FDB    UPDNSB
+       FCB    SUB
+       FDB    ADJS
+       FCB    CURSAB,$2B,$D5,0
+       FCC    'USE '
+       FCB    HYPHEN
+       FCC    'FIRE'
+       FCB    HYPHEN
+       FCC    ' LEVER TO CHANGE THE VALUE'
+       FCB    CURSAB,$39,$E2,0,COLOR,$55,SUB
+       FDB    PESUB
+       FCB    0
+
+ADJS   FCC    'ADJUSTMENT'
+       FCB    0
+
+UPDNSB FCC    'USE '     
+       FCB    HYPHEN
+       FCC    'MOVE'
+       FCB    HYPHEN
+       FCC    ' TO SELECT '
+       FCB    0
+
+EXMANN FCB    COLOR,$66,CURSAB,$36,$EE,0,SUB
+       FDB    JZREP
+       FCB    SPACE,NUMB
+       FCC    '000'
+       FCB    0
+
+JZREP  FCC    'EXTRA MAN EVERY'
+       FCB    0
+
+JZSHP  FCC    'TURNS'           
+PPSUB  FCC    ' PER '       
+       FCB    SUB
+       FDB    PLRSUB
+       FCB    0 
+
+JZCONS FCC    'PRICING SELECTION'
+       FCB    0
+
+JZSL1  FCC    'LEFT'
+       FCB    SUB
+       FDB    SLSUB
+       FCB    0
+
+JZSL2  FCC    'CENTER'
+       FCB    SUB
+       FDB    SLSUB
+       FCB    0
+
+JZSL3  FCC    'RIGHT'
+       FCB    SUB
+       FDB    SLSUB
+       FCB    0   
+
+SLSUB  FCC    ' SLOT UNITS'
+       FCB    0
+
+JZCUC  FCB    SUB         
+       FDB    UNFOR
+       FCC    'CREDIT'
+       FCB    0
+
+JZCUB  FCB    SUB
+       FDB    UNFOR
+       FCC    'BONUS CREDIT'
+       FCB    0
+
+JZMUN  FCC    'MINIMUM UNITS FOR ANY CREDIT'
+       FCB    0
+
+UNFOR  FCC    'UNITS REQUIRED FOR '
+       FCB    0
+
+JZFREE FCC    'FANCY ATTRACT MODE'
+       FCB    0
+
+JZMASA FCC    'DIFFICULTY OF PLAY'
+       FCB    0
+
+JZGODL FCC    'LETTERS FOR'              
+       FCB    SUB
+       FDB    HISCR
+       FCB    0
+
+HISCR  FCC    ' HIGHEST SCORE NAME'
+       FCB    0
+
+JZFACS FCC    'RESTORE'                 
+       FCB    SUB
+       FDB    FACSUB
+       FCB    0
+
+JZCAUD FCC    'CLEAR'                     
+       FCB    SUB
+       FDB    BKTSUB
+       FCB    0
+
+JZCLHS FCC    'HIGH SCORE TABLE RESET'
+       FCB    0
+
+JZAUTO FCC    'AUTO CYCLE'
+       FCB    0
+
+JZOPM  FCC    'SET '                         
+AMSUB  FCC    'ATTRACT MODE MESSAGE'
+       FCB    0
+
+JZGOD  FCC    'SET'
+       FCB    SUB
+       FDB    HISCR
+       FCB    0
+
+AUD1P  FCB    SBLANK,NUMB,0              SETUP SKIP-BLANKING
+
+AUD2P  FCB    NBLANK,NUMY,0              NO BLANKING ON THIS PART
+
+AUD3P  FCB    CURSOR,6,0,0              MOVE 2 CHARACTERS RIGHT
+       FCB    SBLANK,NUMY,0              THEN PRINT NUMBER WITH SPACING
+
+BOOKMP FCB    CURSAB,$2F,$10,0
+       FCB    COLOR,$99,SUB
+       FDB    BKTSUB
+       FCB    COLOR,$11,0
+
+BOOKRP FCB    CURSAB,$20,$60,0
+       FCB    COLOR,$33,SUB
+       FDB    BKTSUB
+       FCC    'CLEARED'
+       FCB    0
+
+HSRESP FCB    CURSAB,$2A,$40,0
+       FCB    COLOR,$88,SUB
+       FDB    JZCLHS
+       FCB    0
+
+BKTSUB FCC    ' BOOKKEEPING TOTALS '
+       FCB    0
+
+AUDX1  EQU    $1C
+AUDX2  EQU    $6C
+
+AZPDC  FCB    CURSAB,AUDX1,$60,0
+       FCC    'PAID CREDITS'
+       FCB    CURSAB,AUDX2,$60,0,0
+
+AZFS   FCB    CURSAB,AUDX1,$70,0
+       FCC    'EXTRA MEN EARNED'   
+       FCB    CURSAB,AUDX2,$70,0,0
+
+AZTIM  FCB    CURSAB,AUDX1,$80,0
+       FCC    'PLAY TIME IN MINUTES'
+       FCB    CURSAB,AUDX2,$80,0,0
+
+AZSHIP FCB    CURSAB,AUDX1,$90,0
+       FCC    'MEN PLAYED'
+       FCB    CURSAB,AUDX2,$90,0,0
+
+AZPLAY FCB    CURSAB,AUDX1,$A0,0
+       FCC    'CREDITS PLAYED'
+       FCB    CURSAB,AUDX2,$A0,0,0
+
+AVM1   FCB    CURSAB,AUDX1,$C0,0
+       FCC    'AVERAGE TIME PER CREDIT'
+       FCB    CURSAB,AUDX2-8,$C0,0,0
+
+AVM2   FCB    COLON,NBLANK,NUMB,0
+
+AVM3   FCB    CURSAB,AUDX1,$D0,0
+       FCC    'AVERAGE TURNS PER CREDIT'
+       FCB    CURSAB,AUDX2-8,$D0,0,0
+
+AVM4   FCB    PERIOD,NBLANK,NUMB,0
+
+AZS1   FCB    CURSAB,AUDX1,$30,0
+       FCC    'LEFT'
+       FCB    SUB
+       FDB    COINSB
+       FCB    CURSAB,AUDX2,$30,0,0
+
+AZS2   FCB    CURSAB,AUDX1,$40,0
+       FCC    'CENTER'
+       FCB    SUB
+       FDB    COINSB
+       FCB    CURSAB,AUDX2,$40,0,0
+
+AZS3   FCB    CURSAB,AUDX1,$50,0
+       FCC    'RIGHT'
+       FCB    SUB
+       FDB    COINSB
+       FCB    CURSAB,AUDX2,$50,0,0
+
+COINSB FCC    ' SLOT COINS'
+       FCB    0
+
+CRTSTP FCB    COLOR,$33,CURSAB,$3A,$80,0
+       FCC    'COLOR RAM TEST'
+       FCB    CURSAB,$27,$B0,0
+       FCC    'VERTICAL BARS INDICATE ERROR'
+       FCB    0
+
+SZAUP  FCC    'AUTO UP'
+       FCB    0
+
+SZADV  FCC    'ADVANCE'
+       FCB    0
+
+SZRC   FCC    'RIGHT COIN'
+       FCB    0
+
+SZHSR  FCC    'HIGH SCORE RESET'
+       FCB    0
+
+SZLC   FCC    'LEFT COIN'
+       FCB    0
+
+SZCC   FCC    'CENTER COIN'
+       FCB    0
+
+SZSS   FCC    'SLAM SWITCH'
+       FCB    0
+
+SZFIRE FCC    'MOVE UP'
+       FCB    COKSUB
+       FDB    PLYSUB
+       FCB    0
+
+SZTHR  FCC    'MOVE DOWN'
+       FCB    COKSUB
+       FDB    PLYSUB
+       FCB    0
+
+SZSB   FCC    'MOVE LEFT' 
+       FCB    COKSUB
+       FDB    PLYSUB
+       FCB    0
+
+SZHYP  FCC    'MOVE RIGHT'
+       FCB    COKSUB
+       FDB    PLYSUB
+       FCB    0
+
+SZS2   FCC    '1'             
+       FCB    SUB
+       FDB    PSTSUB
+       FCB    0
+
+SZS1   FCC    '2'
+       FCB    SUB      
+       FDB    PSTSUB
+       FCB    0
+
+PSTSUB FCB    SPACE,SUB
+       FDB    PLRSUB
+       FCC    'START'
+       FCB    0
+
+SZREV  FCC    'FIRE UP'
+       FCB    COKSUB
+       FDB    PLYSUB
+       FCB    0
+
+SZDOWN FCC    'FIRE DOWN'
+       FCB    COKSUB
+       FDB    PLYSUB
+       FCB    0
+
+SZUP   FCC    'FIRE LEFT'
+       FCB    COKSUB
+       FDB    PLYSUB
+       FCB    0
+
+SZINV  FCC    'FIRE RIGHT'
+       FCB    COKSUB
+       FDB    PLYSUB
+       FCB    0
+
+PLYSUB FCC    '  '
+       FCB    LPAREN,SUB
+       FDB    PLRSUB
+       FCB    ZBLANK,NUMB,RPAREN,0
+
+SWTSTP FCB    COLOR,$88,CURSAB,$3A,26,0
+       FCC    'SWITCH TEST'
+       FCB    0
+
+ROMOKP FCB    COLOR,$99,CURSAB,$3E,$50,$0
+       FCC    'ALL ROMS OK'
+       FCB    CURSAB,$36,$90,0,COLOR,$33
+       FCC    'RAM TEST FOLLOWS'
+       FCB    SUB
+       FDB    ROKSB
+       FCB    0
+
+ROKSB  FCB    CURSAB,$2F,$A0,0,SUB
+       FDB    PESUB
+       FCB    0
+
+RAMSUB FCC    ' RAM ERRORS DETECTED'
+       FCB    0
+
+RAMOKP FCB    COLOR,$99,CURSAB,$2A,$80,0
+       FCC    'NO'
+       FCB    SUB
+       FDB    RAMSUB
+       FCB    0
+
+CMOKP  FCB    COLOR,$99,CURSAB,$23,$80,0
+       FCC    'NO CMOS' 
+       FCB    SUB
+       FDB    RAMSUB
+       FCB    0
+
+CMSUB  FCC    'CMOS RAM'
+       FCB    SUB
+       FDB    ERRSUB
+       FCB    0
+
+CMERRP FCB    COLOR,$11,CURSAB,$36,$80,0
+       FCB    SUB              
+       FDB    CMSUB
+       FCB    0
+
+CMDORP FCB    SUB                        
+       FDB    CMERRP
+       FCB    CURSAB,$28,$90,0
+       FCC    'OR WRITE PROTECT FAILURE'
+       FCB    COLOR,$99,SUB    
+       FDB    FDSUBB
+       FCB    COKSUB
+       FDB    FDCOCK
+       FCB    0
+
+FDCOCK FCB    COLOR,$00,SUB
+       FDB    FDSUBB
+       FCB    COLOR,$99,CURSAB,$17,$B0,0,HYPHEN,SUB
+       FDB    TABLSB
+MBOSUB FCC    ' MUST BE OPEN FOR TEST'
+       FCB    HYPHEN,0
+
+FDSUBB FCB    CURSAB,$1B,$B0,0,HYPHEN,SUB
+       FDB    FDORSB
+       FCB    SUB
+       FDB    MBOSUB
+       FCB    0
+
+SNDTEP FCB    COLOR,$00,CURSAB,$57,$80,0
+       FCB    BLANKR                        BLANK OUT THE LAST ONE
+       FCB    COLOR,$99,CURSAB,$3A,$80,0
+       FCC    'SOUND LINE '
+       FCB    ZBLANK,NUMB,0
+ FCB PERIOD,SPACE,SPACE
+
+INSUB  FCB    CURSAB,$30,$70,0                           
+       FCC    'INITIAL TESTS INDICATE'
+       FCB    COLON,0
+
+INDMFP FCB    COLOR,$11,SUB
+       FDB    INSUB
+       FCB    CURSAB,$3C,$90,0
+       FCB    SUB
+       FDB    BADDMP
+       FCB    0
+
+OKMP   FCB    COLOR,$99,SUB
+       FDB    INSUB                   
+       FCB    CURSAB,$3F,$90,1
+       FCC    'OPERATIONAL'   
+       FCB    0
+
+INERSB FCB    COLOR,$11,SUB          IN RED,
+       FDB    INSUB                  INITIAL TESTS INDICATE,
+       FCB    CURSAB,$40,$90,0,0     AND SET CURSOR FOR ERROR
+
+       FCC    ' (C) 1982 WILLIAMS ELECTRONICS INC. '
+
+FDSUB  FCB    CURSAB,$40,$80,0
+       FCB    COLOR,$11
+       FCB    0
+
+BADDMP FCB    SUB
+       FDB    FDSUB
+       FCB    CURSOR,-30,0,0      RELATIVE CURSOR MOVE
+       FCC    'SPECIAL CHIP FAILURE'
+       FCB    0          PRINT IT 
+
+FDROMP FCB    SUB
+       FDB    FDSUB
+       FCC    'ROM'
+       FCB    SUB
+       FDB    ERRSUB
+       FCB    NUMB,0
+
+FDRAMP FCB    SUB
+       FDB    FDSUB
+       FCC    'RAM'
+       FCB    SUB
+       FDB    ERRSUB
+       FCB    NUMB,0
+
+ROMERP FCB    SUB
+       FDB    INERSB
+       FCC    'ROM'
+       FCB    SUB
+       FDB    ERRSUB
+       FCB    NUMB,0
+
+RERRMP FCB    SUB    
+       FDB    INERSB
+       FCC    'RAM'
+       FCB    SUB
+       FDB    ERRSUB
+       FCB    NUMB,0
+
+ERRSUB FCC    ' ERROR '
+       FCB    ZBLANK,0
+
+CPYM1  FCB    COLOR,$AA,CURSAB,$24,$C8,0,SUB
+       FDB    CPYSUB
+       FCB    COLOR,$66,CURSAB,$38,$B5,0
+       FCC    'DESIGNED BY VID KIDZ'
+       FCB    CURSAB,$2E,$BC,0
+       FCC    'FOR '                        
+       FCB    SUB
+       FDB    WNAMES
+       FCB    COLOR,$22,CURSAB,$3D,$A8,0,LFONT
+CDDSUB FCC    'CREDITS'
+       FCB    COLON,SPACE,ZBLANK,NUMB
+       FCB    0
+
+CRDM22 FCB    COLOR,$AA,CURSAB,$41,$EE,0
+       FCB    SUB
+       FDB    CDDSUB
+       FCB    0
+
+CPYM2  FCB    CURSAB,$24,$EE,0
+CPYSUB FCC    'COPYRIGHT 1982 '                         
+WNAMES FCC    'WILLIAMS ELECTRONICS INC'
+       FCB    PERIOD
+       FCB    0
+
+GOMP   FCB    CURSAB,$3E,$80,0
+GOSUBB FCC    'GAME OVER'
+       FCB    0
+
+PGOMP  FCB    CURSAB,$3F,$79,1,SUB 
+       FDB    PLSUB
+       FCB    CURSAB,$3E,$86,0,SUB
+       FDB    GOSUBB
+       FCB    0
+
+PLUPP  FCB    CURSAB,$3F,$7A,1
+PLSUB  FCB    SUB
+       FDB    PLRSUB
+       FCB    ZBLANK,NUMB,0
+
+WAVEP  FCB    CURSAB,$3E,$EE,0,SBLANK,COLOR,$AA
+       FCB    NUMB,CURSOR,3,0,0,COLOR,$BB
+       FCC    ' WAVE' 
+       FCB    0            
+
+WAVEM2 FCB    CURSOR,$04,$00,0,ZBLANK,COLOR,$AA
+       FCB    NUMB,0
+
+PMOM   FCC    'MOMMY'            
+       FCB    0
+
+PGRUNT FCC    'GRUNT '
+       FCB    HYPHEN
+       FCC    ' 100'
+       FDB    0
+
+PDAD   FCC    'DADDY' 
+       FCB    0
+
+PKID   FCC    'MIKEY'
+       FCB    0
+
+PHULK  FCC    'INDESTRUCTABLE HULK'         
+       FCB    0
+
+PSPCU  FCC    'SPHEREOID '
+       FCB    HYPHEN
+       FCC    ' 1000     QUARK '
+       FCB    HYPHEN
+       FCC    ' 1000'
+       FCB    0
+
+PENTK  FCC    'ENFORCER '
+       FCB    HYPHEN
+       FCC    ' 150   TANK '
+       FCB    HYPHEN
+       FCC    ' 200'
+       FCB    0
+
+PBRAIN FCC    'BRAIN '
+       FCB    HYPHEN
+       FCC    ' 500     CRUISE MISSILE '
+       FCB    HYPHEN
+       FCC    ' 25'
+       FCB    0
+
+PPROG  FCC    'PROG '
+       FCB    HYPHEN
+       FCC    ' 100'
+       FCB    0
+
+TITLEP FCB    COLOR,$AA,CURSAB,$36,$24,0
+       FCC    'ROBOTRON'     
+       FCB    COLON,SPACE
+       FCC    '2084'
+       FCB    0
+
+FAMMP  FCB    COLOR,$AA,CURSAB,$25,$84,0
+       FCC    'SAVE THE LAST HUMAN FAMILY'
+       FCB    0
+
diff --git a/RRF.ASM b/RRF.ASM
new file mode 100755 (executable)
index 0000000..b1b09f7
--- /dev/null
+++ b/RRF.ASM
@@ -0,0 +1,717 @@
+       OPT    PAGS
+       TTL    R O B O T   W A R
+*
+* HARDWARE CONSTANTS
+*
+HSTK EQU $BF70
+VECTOR EQU $EFF0
+CRAM EQU $C000 COLOR RAM ADDR
+WDOG EQU $CBFF
+WDATA EQU $39
+CMOS EQU $CC00
+SOUND EQU $C80E
+VERTCT EQU $CB00 6-BIT VERTICAL BEAM ADDR
+RWCNTL EQU $C900 (BIT 0: 1-ROM READ; 0-RAM READ)
+*                (BIT 1: 1-INVERT;   0-NORMAL SCREEN)
+*
+*PIA DEFINITIONS
+*
+PIA0 EQU $C80C
+*B0 AUTO UP
+*B1 ADVANCE
+*B2 RCOIN
+*B3 HSRESET
+*B4 LCOIN
+*B5 CCOIN
+*B6 SLAM
+*B7 SOUND HANDSHAKE
+*CA2 LED3 
+*CA1 IRQ 240 (16 MS)  (LINE 240)
+PIA1 EQU $C80E
+*B0-B5 SOUND
+*B6-B7 LED 0,1
+*CB1 IRQ 4 MS (0,$40,$80,$C0)
+*CB2 LED2            
+PIA2 EQU $C804
+*B0 MOVE UP
+*B1 MOVE DOWN
+*B2 MOVE LEFT
+*B3 MOVE RIGHT
+*B4 START 1
+*B5 START 2
+*B6 FIRE UP
+*B7 FIRE DOWN
+*
+PIA3 EQU $C806
+*B0 FIRE LEFT
+*B1 FIRE RIGHT
+*B7 INPUT 1=COCKTAIL
+*CB2 OUTPUT SWITCH MUX CONTROL 1=PLAYER1,0=PLAYER2
+*
+*DMA CONSTANTS
+*
+DMACTL EQU $CA00 CONTROL BYTE WRITE INITIATES TRANSFER
+*B0:READ FORMAT 0=SERIAL;1=BLOCK
+*B1:WRITE FORMAT 0=SERIAL;1=BLOCK
+*B2:XSFER RATE 0=ROM-RAM (1MSEC); 1=RAM-RAM (2 MSEC)
+*B3:1=ZERO WRITE SUPPRESS
+*B4:1=CONSTANT SUBSTITUTION
+*B5:1=ODD FLAVOR
+*B6:1=B0-B3 WRITE SUPPRESS
+*B7:1=B4-B7 WRITE SUPPRESS
+DMACON EQU $CA01 CONSTANT DATA BYTE
+DMAORG EQU $CA02 ORIGIN ADDR MSB,LSB
+DMADES EQU $CA04 DESTINATION "
+DMASIZ EQU $CA06 HOR,VERT BYTE COUNTS
+*SCORE DISPLAY CONSTANTS
+YMAX EQU 234   
+YMIN EQU 24 MIN Y COORD
+XMAX EQU $8F
+XMIN EQU 7
+P1ORG EQU $18*$100+14
+P1MAN EQU P1ORG+7*$300+$100
+P1DISP EQU P1ORG
+P2ORG EQU P1ORG+$40*$100
+P2MAN EQU P2ORG+P1MAN-P1ORG
+P2DISP EQU P2ORG
+DIGLTH EQU $300
+PCOORD EQU $4A7C INIT PLAYER COORD
+FONCOL EQU $66 PHONY STARTUP COLOR
+*
+*MODULE  VECTORS + STORAGE ALLOCATION
+*
+***OPSYS**..... R O S ..........
+*
+ROSORG EQU $D000
+ ORG ROSORG
+INIT RMB 3
+ASCAN RMB 3
+SDOUT RMB 3
+SCRTRN RMB 3
+SCORE RMB 3
+SCRTR0 RMB 3
+SCRCLR RMB 3
+DMAOFF RMB 3
+DMAON RMB 3
+BLKCLR RMB 3
+PCTOFF RMB 3
+PCTON RMB 3
+COLST RMB 3
+COL0 RMB 3
+HEXBCD RMB 3
+BCDHEX RMB 3
+OINIT RMB 3
+CRINIT RMB 3
+PINIT RMB 3
+RAND RMB 3
+RAND16 RMB 3
+RMAX RMB 3
+RANDU RMB 3
+PLINDX RMB 3
+PLDX RMB 3
+SNDLD RMB 3
+KILO1 RMB 3
+GETOBJ RMB 3
+MAKEP RMB 3
+MKPROC RMB 3
+MSPROC RMB 3
+KILL RMB 3
+GNCIDE RMB 3
+SUCIDE RMB 3
+SLEEP RMB 3
+RIPV RMB 3
+MPROB RMB 3
+GETOB RMB 3
+KILLOB RMB 3
+KILLOF RMB 3
+KILOFP RMB 3
+GETROB RMB 3
+KILROB RMB 3
+GETPST RMB 3
+KILPST RMB 3
+GETHUM RMB 3
+KILHUM RMB 3
+DMAOFN RMB 3
+MPCTON RMB 3
+BLKON RMB 3
+EXECV RMB 3
+P1SW   RMB    3
+P2SW   RMB    3
+DIVAB  RMB    3
+RCMOSA RMB    3
+RCMOSB RMB    3
+RCMOSD RMB    3
+WCMOSA RMB    3
+WCMOSB RMB    3
+WCMOSD RMB    3
+BCDBIN RMB    3
+RWMOVE RMB    3
+AUD    RMB    3
+AUD1   RMB    3
+INT20V RMB    3
+LFV    RMB    3
+NEWBCH RMB    3        BCDHEX THAT USES A!!
+*
+*PLAYER DEATH
+*
+RDORG EQU $DD00
+ ORG RDORG
+RDTHV RMB 3
+*
+*HUMANS+HULKS
+*
+RHORG EQU $0000
+ ORG RHORG
+HULKST RMB 3
+HUMST RMB 3
+CKLIM RMB 3
+SKULL RMB 3
+P1KD RMB 2
+MOMPIC RMB 2
+DADPIC RMB 2
+KIDPIC RMB 2
+HLKPIC RMB 2
+HLKANA RMB 2
+HUMANA RMB 2
+SKLPIC RMB 2
+*
+***CIRCLES,ENFORCERS,SPARX
+*
+RCORG EQU $1140
+ ORG RCORG
+CIRCST RMB 3 START CIRCLES
+CIRKV RMB 3
+CIRPIC RMB 2
+ENGPIC RMB 2
+ENFPIC RMB 2
+*
+*BRAINS & CO.
+*
+BRNORG EQU $1AC0
+ ORG BRNORG
+BRNST RMB 3
+BRNPIC RMB 2
+BRONV  RMB    3
+HUMONV RMB    3
+PRGPIC RMB 2
+*
+*******ROBOT GAME...... R G .......
+*
+RGORG EQU $26C0
+ ORG RGORG
+PLAYER RMB 3
+RANDXY RMB 3
+CKOBS RMB 3
+MANDSP RMB 3
+STRT1 RMB 3
+STRT2 RMB 3
+TDISPV RMB 3
+MANPIC RMB 2
+LASPIC RMB 2
+*
+*ROBOTS&POSTS
+*
+RPORG EQU $3880
+ ORG RPORG
+RINIT RMB 3
+PSINIT RMB 3
+PSTP1 RMB 2
+OPON RMB 3
+OPON1 RMB 3
+SAFTY RMB 3
+ROBPIC RMB 2
+PSTPIC RMB 2
+PKPRCV RMB 3
+*
+*TRANSPORTER
+*
+RTORG EQU $4140
+ ORG RTORG
+TRANST RMB 3
+*
+*DIAGONAL EXPLOSIONS
+*
+RDXORG EQU $4680
+ ORG RDXORG
+DXINIT RMB 3
+DXST RMB 3
+DAPST RMB 3
+DXUPD RMB 3
+*
+*TANKS
+*
+RTKORG EQU $4B00
+ ORG RTKORG
+TANKST RMB 3
+SQST RMB 3
+SQPIC RMB 2
+TNGPIC RMB 2
+TNKPIC RMB 2
+*
+*MARQUEE
+*
+RMORG EQU $5700
+ ORG RMORG
+RMST RMB 3
+*
+*EXPLOSIONS
+*
+RXORG EQU $5B40
+ ORG RXORG
+EXINIT RMB 3
+EXST RMB 3
+APST RMB 3
+EXUPD RMB 3
+PDEATH RMB 3
+HVEXST RMB 3
+DDEXST RMB 3 DUAL DIAGONALS
+AMAP   RMB    3        ATTRACT MODE APPEAR
+HAPST  RMB    3        HORIZONTAL APPEAR
+HEXST  RMB    3        HORIZONTAL EXPLODE
+
+*             STINKY LINKY VINCKYS
+
+LOGORG EQU    $77A0          PLACE FOR PROGRAM
+GOV    EQU    LOGORG
+CCV    EQU    GOV+3
+
+TSCORG EQU $E3D0   HIGH SCORE BULLSHIT
+PUPHSC EQU TSCORG  POWER UP HIGH SCORE CHECK
+ENDPRC EQU PUPHSC+3 END OF GAME PROCESSING
+GODSET EQU ENDPRC+3 ENTER GODS NAME BY OPERATOR
+HIGHRS EQU GODSET+3 RESET HIGH SCORE TABLE BY OPERATOR
+HSCHKV EQU HIGHRS+3 CHECK IF HS TABLE LOOKS BASHED
+HSBUTV EQU HSCHKV+3 HIGH SCORE RESET BUTTON
+
+TABORG EQU    $DF40
+TABLEV EQU    TABORG
+
+TSTORG EQU $F000
+PWRUPV EQU TSTORG    
+ADVSW EQU PWRUPV+3
+AUTOCY EQU ADVSW+3
+HXINIT EQU AUTOCY+3
+HEXSTX EQU HXINIT+3
+HAPSTX EQU HEXSTX+3
+HXUPD EQU HAPSTX+3
+WLOOPV EQU HXUPD+3
+ELOOPV EQU WLOOPV+2
+L2     EQU    ELOOPV+2
+L0     EQU    L2+2
+
+TSBORG EQU $6F00 ADJUST PART OF TEST MODE
+ADJV   EQU TSBORG
+CMINIT EQU ADJV+3
+ATMCK  EQU CMINIT+3
+GETLT  EQU ATMCK+3     ROUTINE TO GET LETTERS FROM CONTROL PANEL
+CMSMVV EQU GETLT+3
+DOPMES EQU    CMSMVV+3   2 BYTER
+
+TXORG  EQU    $5F90    PLACE FOR TEXT PROGRAM
+PR35V  EQU    TXORG
+PR57V  EQU    PR35V+3
+WRD5V  EQU    PR57V+3
+WRD7V  EQU    WRD5V+3
+PRINV  EQU    WRD7V+3
+PRSCR  EQU    PRINV+3
+
+WRD5FV EQU    WRD5V
+WRD7FV EQU    WRD7V
+PRN5FV EQU    PR35V
+PRN7FV EQU    PR57V
+
+SETORG EQU    $E9C8    CHARACTER SET
+TAB35  EQU    SETORG
+TAB57  EQU    TAB35+2
+N0V    EQU    TAB57  
+
+*
+*BASE PAGE RAM AREA
+*
+ ORG $9800
+RAM EQU *
+ SETDP RAM>>8
+PCRAM RMB 16 PSEUDO COLOR RAM
+TIMER RMB 1  IRQ TIMER
+ACTIVE RMB    2        POINTER TO LIST OF CURRENTLY ACTIVE (SLEEPING) PROCS.
+FREE   RMB    2        POINTER TO LIST OF UNALLOCATED PROCESS SLEEP SPACE.
+CRPROC RMB    2        POINTER TO SLEEP AREA OF CURRENTLY EXECUTING PROCESS.
+OPTR RMB 2 MOTION OBJECT LIST POINTER
+OBPTR RMB 2 OBSTACLE LIST POINTER
+OFREE RMB 2 FREE LIST POINTER
+SPFREE RMB 2 SUPER PROCESS FREE LIST
+HPTR RMB 2 HUMAN PTR
+RPTR RMB 2 ROBOT LIST
+PPTR RMB 2 PHATAL OBJECT LIST
+ITEMP RMB 2 INTERUPT TEMP
+PSTIN RMB 2
+ITEMP2 RMB 2
+XTEMP  RMB 2 SAVE AREA FOR QUICK TEMPORARY
+XTEMP2 RMB 2
+PIA01 RMB 1 N-1 PIA0
+PIA02 RMB 1 N-2 PIA0
+PIA21 RMB 1 N-1 PIA2
+PIA22 RMB 1 N-2 PIA2
+SWPROC RMB 12 SWITCH SCAN TEMP
+CURPLR RMB 1 CURRENT
+PLRCNT RMB 1 NUMBER OF PLAYERS
+XXX2 RMB 1 '80' IRQ LINE
+OVCNT RMB 1 OVERFLOW COUNT
+IFLG RMB 1 IRQ FLAG
+FRAME RMB 1 IRQ COUNT
+RWCTMP RMB 1 SCREEN READ CONTROL BYTE
+REPLA RMB 2 REPLAY LEVEL
+PCFLG RMB 1 PLAYER COLLISION
+HTABX RMB 2 HUMAN TABLE INDEX
+*COIN BUSINESS
+SLMCNT RMB 1
+LCCNT RMB 1
+RCCNT RMB 1
+CCCNT RMB 1
+BUNITS RMB 1
+CUNITS RMB 1
+CREDIT RMB 1
+*ATTRACT SWITCHES: FONY PRAYAH CONTLOHL
+ATRSW2 RMB 1
+ATRSW3 RMB 1
+*SOUND RAM
+SNDX RMB 2 TABLE INDEX
+SNDPRI RMB 1 PRIORITY
+SNDTMR RMB 1
+SNDREP RMB 1
+*
+*STATUS FLAG
+*B7=GAME OVER
+*B6=
+*B5=
+*B4=PLAYER OUTPUT
+*B3=MOTION OBJS VEL +ENEMIES
+*B2=EXPLOSION UPDATE
+*B1=POST ,MOT OBJ REFRESH
+*B0=PLAYER MOTION,COLLISION,FIRE
+STATUS RMB 1
+*
+*PLAYER OBJECT STRUCTURE
+*
+PLOBJ EQU *
+ RMB 2 OLINK
+PPICT RMB 2 OPICT
+PX RMB 2 OBJX
+ RMB 2 OBJID
+ RMB 2 OCVECT
+PX16 RMB 2  OX16
+PY16 RMB 2  OY16
+PXV RMB 2   OXV
+PYV RMB 2   OYV
+ RMB 1 OFLAV
+PODATA RMB 1 ODATA
+POLDPC RMB 2 OLDPIC
+PLAIMC RMB 1 PLAYER ANIMATION RATE
+PLAIMN RMB 1 PLAYER ANIMATION NUMBER
+PLAIMB RMB 2 PLAYER ANIMATION BASE ADDR
+*
+*COLLISION ROUTINE PARAMETERS
+*
+XCNT RMB 1 SCAN COUNTS
+YCNT RMB 1
+OX1 RMB 1 OFFSETS
+OY1 RMB 1
+PX1 RMB 1
+PY1 RMB 1
+OBW RMB 1 HT TEMPS
+PLW RMB 1
+ULX RMB 1 UPPER LEFT COORD
+ULY RMB 1 "
+LRX RMB 1
+LRY RMB 1
+CTEMP RMB 2 INDEX TEMP
+CTEMP2 RMB 2
+*RANDOM VARIABLES
+SEED   RMB    1
+HSEED  RMB    1 
+LSEED  RMB    1
+*LASER
+LCNT RMB 1
+LASDIR RMB 2
+*SPARKS
+SPKCNT RMB 1
+ROBST RMB 2 PTR TO ROBOT LIST
+SAVCNT RMB 1 HUMAN COUNT SAVED
+BCMCNT RMB 1 BRAIN CRUISE MISSILES
+*POST ANIMATION+WALL COLOR
+WALCOL RMB 1 WALL+POST BG
+PSTCOL RMB 1 POST COLOR
+LASCOL RMB 1 LASER WALL COLLIDE COLOR
+PSTREF RMB 1 POST REFRESH RATE
+PSTANI RMB 2 CURR POST ANIMATION
+BRNFLG RMB 1 BRAIN HUMAN KILL FLAG
+*
+*EXPLOSION STUFF
+EXPRAM RMB $10
+CENTMP RMB 2 CENTER OF BLOW
+HXRAM RMB $10
+DXRAM RMB $10
+RMRAM RMB 6 MARQUEE RAM
+
+************************ LINKYS STINKYS
+
+INDIAG RMB    1
+
+*
+*      TEXT VARIABLES
+*
+
+TEXCOL RMB    1 (TEXCOL)  PRINTING COLOR (NIBBLES REPRESENT FLAVOR COLO
+TXFLAV RMB    1 (TXFLAV) FLAVOR OF CURRENT CURSOR (0=EVEN, 1=ODD)
+TXLEAD RMB    1 (TXLEAD) LEAD ZERO BLANKING ON/OFF (0=OFF, 1=ON)
+TXFONT RMB    1 (TXFONT) FONT HEIGHT (5 OR 7) PIXELS
+TEXMAR RMB    2        CURRENT LEFT MARGIN CURSOR POINTER
+TEXMFL RMB    1        CURRENT LEFT MARGIN FLAVOR
+TEXTP3 RMB    1
+TXCLIP RMB    1
+
+*
+***    GET LETTER ROUTINE RAM
+*
+
+GETLRM RMB    2
+GETLST RMB    3
+
+********************* LOGO RAM
+
+LOGX   RMB    2
+LOGCOL RMB    1
+LOGCL2 RMB    1
+LOGCNT RMB    1
+LOGSAV RMB    2
+LOGCST RMB    2
+
+LASTX  RMB    2
+SIDE   RMB    1
+BALCOL RMB    1
+SLIDER RMB    1
+ERPTR  RMB    2
+*MOVE THIS SOMEDAY
+ENFCNT RMB 1
+GAMTIM RMB 1 GAME TIMER
+TNKSPD RMB 1 TANK SPEED PARAMETER
+SCRFLG RMB 1 SCORE FLAG
+SHLCNT RMB 1 SHELL COUNTER
+RIPFLG RMB 1                            
+HCK1   RMB 1
+ATFLAG RMB 1  INDICATE WHAT PAGE AND HOW
+
+*
+*TABLE DATA
+*
+ ORG RAM+$100 PAST BASE PAGE
+*
+*MASTER OBJECT LIST
+*
+OLIST EQU * 
+OSIZE EQU $18
+*
+*INDEX OFFSETS
+*
+OLINK EQU 0 LINK TO NEXT
+OPICT EQU 2 PICTURE DESCRIPTOR ADDR
+OBJX EQU 4 UPPER LEFT SCREEN X
+OBJY EQU 5 UPPER LEFT SCREEN Y
+OBJID EQU 6 ASSOCIATED PROCESS ID (IF ANY)
+OCVECT EQU 8 COLLISION ROUTINE ADDR
+OX16 EQU $A 16 BIT X WORLD COORD
+OY16 EQU $C 16 BIT Y WORLD COORD
+OXV EQU $E X VELOCITY
+OYV EQU $10 Y VELOCITY
+OFLAV EQU $12 OLD FLAVOR
+ODATA EQU $13 MISC. DATA
+OLDPIC EQU $14 OLD PICTURE TO ERASE
+FONIPC EQU $16 FONY PICT FOR COLLISION PURPOSES
+*RESERVE AREA
+ RMB (180)*OSIZE
+OLEND EQU *
+*
+*USER DEFINED PROCESS TYPES
+*
+STYPE EQU 0 SYSTEM PROCESS
+CTYPE EQU 1 COIN
+*
+*SLEEPING PROCESS TABLE
+*
+PTAB EQU *
+*
+*OFFSET CONSTANTS 
+*
+PLINK EQU 0
+PADDR EQU 2
+PTIME EQU 4
+PTYPE EQU 5
+PCOD EQU 6
+PDATA EQU 7
+PD EQU 7
+PD1 EQU 8
+PD2 EQU 9
+PD3 EQU 10
+PD4 EQU 11
+PD5 EQU 12
+PD6 EQU 13
+PD7 EQU 14
+PSIZE EQU 15
+ RMB 15*(120)
+TABEND EQU *
+*
+*SUPER PROCESSES
+*
+SPSIZE EQU PSIZE+16
+SPTAB RMB SPSIZE*20
+SPTEND EQU *
+*
+*OBJECT PICTURE STRUCTURE
+*
+OBJW EQU 0
+OBJH EQU 1
+OBJDAT EQU 2
+OBJL EQU 4
+*
+*HUMAN TABLE
+*
+HTAB RMB 80
+HTBEND EQU *
+*
+*POST REFRESH LIST
+*
+PSLIST RMB 64 POST LIST
+PSLEND EQU *
+*
+*HORIZONTAL EXPLOSION TABLES
+*
+HXTAB RMB $800
+
+*
+*DIAGONAL XPLOSION TABLES
+*
+DXTAB RMB $200
+*
+*PLAYER DATA TABLE
+*
+PLDATA EQU *
+ZP1SCR RMB 4 SCORE MSB 1ST
+ZP1RP RMB 4 NEXT REPLAY LEVEL
+ZP1LAS RMB 1 #OF LASERS 
+ZP1WAV RMB 1 WAVE # IN HEX
+ZP1ENM RMB 50 ENEMY STATE
+ZP1END EQU *
+ZP2SCR RMB 4
+ZP2RP RMB 4
+ZP2LAS RMB 1
+ZP2WAV RMB 1
+ZP2ENM RMB 50
+PLDEND EQU * END OF PLAYER DATA
+PLDLEN EQU ZP1END-PLDATA
+PSCOR EQU ZP1SCR-PLDATA
+PRPLA EQU ZP1RP-PLDATA
+PLAS EQU ZP1LAS-PLDATA
+PWAV EQU ZP1WAV-PLDATA
+PENEMY EQU ZP1ENM-PLDATA
+*
+*ENEMIES LIST
+*WARNING DO NOT CHANGE ORDER OF COUNTS
+ELIST EQU *
+ROBSPD RMB 1  SPEED
+RMXSPD RMB 1 MAX ROBOT SPEED
+ENFNUM RMB 1 # OF ENFORCERS/CIRCLE X2
+ENSTIM RMB 1 ENF SHOT TIMER
+CDPTIM RMB 1 CIRCLE DROP TIMER
+HLKSPD RMB 1 HULK SPEED
+BSHTIM RMB 1 BRAIN SHOT TIMER
+BRNSPD RMB 1 BRAIN SPEED
+TNKSHT RMB 1  TANK SHOT RATE
+SHLSPD RMB 1  SHELL SPEED
+TDPTIM RMB 1  TANK DROP TIMR
+SQSPD RMB 1   SQUARE SPEED
+ECNTS EQU * START COUNTS
+ROBCNT RMB 1 # ROBOTS
+PSTCNT RMB 1 # POSTS
+MOMCNT RMB 1 # MOM UNITS
+DADCNT RMB 1 # DAD UNITS
+KIDCNT RMB 1 # KIDS
+HLKCNT RMB 1 # HULKS
+BRNCNT RMB 1 # BRAINS
+CIRCNT RMB 1 # CIRCLES
+SQCNT RMB 1 # SQUARES
+TNKCNT RMB 1 # TANKS
+ELEND EQU *
+HCK2 RMB 1
+*
+* CMOS RAM ALLOCATION
+*
+ ORG CMOS+$100     WRITABLE CMOS  
+CREDST RMB 2 CREDITS BACKUP
+SLOT1 RMB 6 1 LEFT COIN TOTAL
+      RMB 6 2 CENTER COIN TOTAL
+      RMB 6 3 RIGHT COIN TOTAL
+       RMB 6 4 TOTAL PAID CREDITS
+       RMB 6 5 TOTAL REPLAYS
+BKTIME RMB 6 6 FLIGHT TIME IN MINS
+BKMEN  RMB 6 7 TOTAL SHIPS PLAYED
+BKPLAY RMB 6 8 TOTAL GAMES PLAYED
+BKEND  EQU    *        END OF BOOKKEEPING STUFF
+SCRSIZ EQU 14 NUMBER OF NIBBLES IN A SCORE ENTRY
+GODINT RMB 6
+GODSCR RMB 48   
+CMSCOR RMB 37*SCRSIZ   37 BACKED UP SCORES, 36 OF WHICH ARE VISIBLE
+TODAYS RMB 10*SCRSIZ     TODAYS GREATEST
+TODEND EQU *
+ ORG CMOS  ADEQUATE BIRTH CONTROL PROTECTION
+REPLAY RMB 2 REPLAY LEVEL
+NSHIP RMB 2 # OF SHIPS/1 CREDIT GAME
+COINSL RMB 2 FOR COINAGE SELECT MODE
+SLOT1M RMB 2 LEFT COIN MULT
+SLOT2M RMB 2 CENTER COIN MULT
+SLOT3M RMB 2 RIGHT COIN MULT
+CUNITC RMB 2 COIN UNITS PER CREDIT
+CUNITB RMB 2 COIN UNITS FOR BONUS
+MINUNT RMB 2 MINIMUM REQD
+FREEPL RMB 2 FREE PLAY MODE       (ONE CREDIT GAME)     
+GA1 RMB 2 10 MASTER DIFFICULTY CONTROL               1
+GA2 RMB 2 NUMBER OF LETTERS ALLOWED TO GOD           10
+SPECFN RMB 2  RESTORE FACTORY SETTINGS
+ RMB 2  CLEAR AUDIT TOTALS
+ RMB 2  INITIALIZE HIGH SCORE TABLE
+ RMB 2  INTIATE AUTO CYCLE
+ RMB 2  ENTER ATTRACT MODE MESSAGE
+ RMB 2  ENTER HIGHEST SCORE NAME
+ENDADJ EQU *
+OPMESS RMB 100  2 LINES OF 25 CHARS EACH.
+OPL1 RMB 2
+OPL2 RMB 2
+ADJSUM RMB 2
+OMESUM RMB 2
+
+*
+*M A C R O S
+*
+NAP    MACRO
+       LDA #&1 TIME
+       LDX #&2 WAKEUP ADDR
+       JMP    SLEEP  
+       ENDM
+*
+*MAKE A NEW PROCESS
+*
+NEWP MACRO
+ LDX #&1 ADDR
+ LDA #&2 TYPE
+ JSR MKPROC
+ ENDM
+*INIT PROCESS \0=SADDR 
+MAKP MACRO
+ JSR MAKEP
+ FDB &1
+ ENDM
+*MAKE A PROCESS AND OBJECT
+MKPROB MACRO
+ JSR MPROB
+ FDB &1,&2,&3
+ ENDM
+
diff --git a/RRFRED.ASM b/RRFRED.ASM
new file mode 100755 (executable)
index 0000000..99c0bf1
--- /dev/null
@@ -0,0 +1,112 @@
+       OPT    PAG
+
+       LIB    RRF      USE EUGENES FRED +
+
+HORIZ  EQU    $CA06
+DEST   EQU    $CA04
+ORIG   EQU    $CA02
+CONST  EQU    $CA01
+CONTRL EQU    $CA00
+
+*   MESSAGE NUMBER EQUATES
+
+DMFAIL EQU    0           DMA FAILURE
+OKM    EQU    1           INTITIAL TESTS SAY OK
+RERRM  EQU    2           TESTS SAY RAM ERROR.
+ROMERM EQU    3           TESTS SAY ROM ERROR.
+ROMOK  EQU    4 
+RAMOK  EQU    5 
+CMOK   EQU    6 
+CMERR  EQU    7 
+CMDOOR EQU    8 
+SNDTEX EQU    9 
+FDROMM EQU    10
+FDRAMM EQU    11
+SWTESM EQU    12           MESSAGE SAYING "SWITCH TEST"
+SWMES1 EQU    13           34-50 ARE SWITCH TEST MESSAGES  
+CMTSTM EQU    30           COLOR MATRIX TEST ETC.
+BOOKM  EQU    31
+AUDMES EQU    32           53-61 ARE AUDIT MESSAGES
+*                            40 IS GAME OVER
+AUDM1  EQU    41           FIRST PART OF 6 DIGIT 
+AUDM2  EQU    42           SECOND PART OF 6 DIGIT
+AUDM3  EQU    43           4 DIGIT AUDIT
+FROBM  EQU    44           DIPLAY OF FROB MESSAGE
+CONTMS EQU    45           EXTRA MESSAGES FOR FIRST PAGE OF ADJUSTMENTS
+ADJMES EQU    46           ACTUAL MESSAGE FOR FIRST ADJUSTMENT (REPLAY)-63
+REPMM1 EQU    64
+REPMM2 EQU    65
+NOMESS EQU    66
+HIVOL  EQU    67
+RECOM  EQU    68
+POORP  EQU    69
+CUSTM  EQU    70 
+YESM   EQU    71 
+NOM    EQU    72 
+EXLIB  EQU    73 
+LIB    EQU    74 
+*                  PLAYER X GAME OVER
+CONS   EQU    76 
+EXCON  EQU    77 
+REPMM3 EQU    78 
+CMIMES EQU    79 
+RESMES EQU    80 
+YES1M  EQU    81 
+COINM1 EQU    82    82-89   
+NOREPM EQU    90 
+BOOKRS EQU    91 
+OMESM EQU     92 
+HSRESM EQU    93  
+GODMES EQU    94 
+CONG EQU      95 
+NOWMES EQU    96 
+HSINDX EQU    97 
+HIGH1 EQU     98 
+HIGH3 EQU     99 
+ONLY5M EQU    100
+OPCNTM EQU    101
+REPMM4 EQU    102
+*                      PLAYER X  UP        
+*                      WAVE X        
+INDMF  EQU    105
+AVTIM  EQU    106
+AVTEND EQU    107
+AVPLA  EQU    108
+AVPLEN EQU    109
+SCRMES EQU    110
+INDMES EQU    111
+CPM1   EQU    112
+*      BOTTOM COPYRITE MESSAGE   113
+*      SECOND HALF OF WAVE MESSAGE 114
+MMOM   EQU    115
+MDAD   EQU    116
+MKID   EQU    117
+MGRUNT EQU    118
+MHULK  EQU    119
+MSPCU  EQU    120
+MENTK  EQU    121
+MBRAIN EQU    122
+COINMF EQU    123
+MPROG  EQU    124
+EXTMES EQU    125
+NULMES EQU    126
+ACRM   EQU    127
+TITLEM EQU    128
+FAMMM  EQU    129
+
+RAMTOP EQU    $C000          TOP OF RAM FOR RAM TEST
+
+       ORG    HXTAB
+EGRAM  RMB    2
+EGRAM2 RMB    2
+PLRX   RMB    2
+ALTBL  RMB    20             PLACE FOR 20 CHAR HIGH SCORE SAVE
+
+MESOUT EQU    ALTBL          OPERATOR MESSAGE BUFFER
+RAMALS EQU    ALTBL          DIAGNOSTIC/HIGH SCORE SCRATCH REF.
+CRDRAM EQU    ALTBL   
+
+       ORG    ALTBL+60       DO THE BALL PAST THE OPERATOR MESS AREA
+ARAM1  RMB    392            WILLI PAGE A-MODE STUFF
+ERLIST RMB    28*2
+EREND  EQU    *
diff --git a/RRG23.ASM b/RRG23.ASM
new file mode 100755 (executable)
index 0000000..1f05bec
--- /dev/null
+++ b/RRG23.ASM
@@ -0,0 +1,1572 @@
+ STTL ROBOT GAME            
+ OPT NOL
+ LIB RRF
+ OPT LIS
+ ORG RGORG
+ JMP PLAYRV
+ JMP RNDXYV
+ JMP CKOBSV
+ JMP MANDSV
+ JMP START1
+ JMP START2
+ JMP TDISP
+ FDB MANLP1
+ FDB LLPIC
+*
+*SOUNDS
+*
+PDSND FCB $EE,$02,$08,$11,$01,$20,$17,0 PLAYER DEATH
+ST1SND FCB $F0,$01,$10,$28,0 START 1
+ST2SND FCB $F0,$01,$10,$25,0 START 2
+WVSND FCB $E0,$1D,$04,$0E,0 WAVE END
+LASSND FCB $D0,$01,$08,1,0 LASER SOUND
+*
+*GAME START
+*
+START2 LDA #2
+ BRA SST0
+STRTX JMP SUCIDE
+START1 LDA #1
+SST0 LDY #HCK2+1345
+     TST STATUS
+ BPL STRTX
+ LDB COINSL+1 CHECK FREEBY
+ ANDB #$F
+ CMPB #9
+ BNE SST00 NO FREE PLAY
+ STA CREDIT
+SST00 CMPA CREDIT
+ BHI STRTX  INSUFFICIENT FUNDS
+ STA PLRCNT MAKE APPROPRIATE SOUND
+ CLR BUNITS
+ CLR CUNITS
+ LDB #8
+ JSR AUD  GAMES PLAYED
+ LDU   #$D015
+ NEGA
+ ADDA #$9A
+ ADDA CREDIT
+ DAA 
+ STA CREDIT
+ LDX #CREDST
+ JSR WCMOSA
+ LDA PLRCNT
+ SUBA #2
+ LDD #ST1SND
+ BCS SST01
+ LDD #ST2SND
+SST01 JSR SNDLD
+ CLRA
+CKS11  ADDA   ,U       ADD NEXT BYTE
+       LEAU   $8,U     NEXT ONE
+       CMPU   #$EAB1
+       BLO    CKS11
+       STA    -1345,Y  STORE
+ LDA #$7F
+ STA STATUS
+ JSR SCRCLR
+ LDX #PLDATA
+SST1 CLR ,X+
+ CMPX #PLDEND
+ BNE SST1
+ LDX #NSHIP GET # OF SHIPS
+ JSR RCMOSA
+       JSR    NEWBCH   IN BINARY PLEASE
+ STA ZP1LAS
+ LDA #1
+ STA CURPLR
+ LDA #1
+ STA ZP1WAV
+ STA PCFLG
+ LDX #REPLAY
+ JSR RCMOSA
+ CLRB
+ LSRA
+ RORB
+ LSRA
+ RORB
+ LSRA
+ RORB
+ LSRA
+ RORB
+ STD REPLA
+ STD ZP1RP+1
+ JSR GETWV
+ LDX #PLDATA
+SSTRAN LDA ,X+
+ STA PLDLEN-1,X
+ CMPX #ZP1END
+ BNE SSTRAN
+ LDA PLRCNT
+ DECA
+ BNE PLSTRT
+ CLR ZP2LAS NO PLAYER 2
+PLSTRT LDA #$7F
+ STA STATUS
+ JSR PLINDX
+ DEC PLAS,X
+ JSR SCRCLR
+ JSR GNCIDE
+ LDX [ACTIVE] REINIT PROC STRUCT IF NO COINS
+ BNE PLS0
+ JSR PINIT
+ MAKP PLS0
+ JMP EXECV
+PLS0 JSR CRINIT
+ JSR EXINIT
+ JSR OINIT
+ JSR GTWCOL GET WALL COLOR
+ JSR P1SW
+ LDA PIA3 COCKTAIL??
+ BPL PLS000 NO
+ LDA CURPLR  PLAYER 2?
+ DECA
+ BEQ PLS000  NO
+ JSR P2SW
+PLS000 JSR TDISP
+ JSR COLST
+ CLR RIPFLG
+ LDA PCFLG
+ BNE PLS00C
+ JSR WVMESS
+ BRA PLS0A NO DEATH.. NO MESSIE POOH
+PLS00C LDD ZP1SCR+1
+ BNE PLS0C NOT GAME START
+ LDA #$11
+ STA TEXCOL
+ LDA #113
+ JSR WRD5V COPYRIGHT MESSAGE
+ BRA PLS0D
+PLS0C JSR WVMESS
+PLS0D CLR PCFLG
+ LDA PLRCNT
+ DECA
+ BEQ PLS0A 1 PLAYER GAME
+ LDA PSTCOL
+ STA TEXCOL
+ LDB CURPLR
+ LDA #103
+ JSR WRD7V
+ NAP 115,PLS0B PLAYER UP MESSAGE
+PLS0B CLR TEXCOL
+ LDB CURPLR
+ LDA #103
+ JSR WRD7V ERASE MESSAGE
+PLS0A JSR PLRES
+ JSR PLINIT
+ CLR PCRAM+6
+ CLR CRAM+6
+ JSR HULKST
+ JSR BRNST
+ JSR TANKST
+ JSR HUMST
+ JSR PSINIT
+ JSR RINIT
+ JSR ROBOFF
+ LDA #8
+ STA PSTREF DOUBLE REFRESH RATE
+ MAKP PSTRPC REFRESH POSTS
+ JSR PSTON
+ JSR CRINIT
+ JSR CIRCST
+ JSR SQST
+ LDA #$19
+ STA STATUS
+ LDA BRNCNT BRAIN WAVE???
+ BEQ PLS00 NO
+ MAKP TRANST TRANSPORT EM
+ NAP 150,PLS1
+PLS00 JMP APPEAR
+PLS1 JSR PAPPR PLAYER APPEAR
+ JSR PSTON ON POSTS
+ NAP 06,PLS1A
+PLS1A JSR PDAPPR DIAG PLAYER APPEAR
+ NAP 4,PLS2
+PLS2 JSR ROBON
+ MAKP LSPROC
+ MAKP COLCHK
+ CLR STATUS
+ NAP 12,PLS3
+PLS3 JSR ROBON TURN THEM ON
+ JSR PSTON
+ NAP 10,PLS4
+PLS4 JSR ROBON
+ JSR PSTON
+ LDA #4
+ STA PSTREF STD REFRESH RATE
+ CLR TEXCOL OFF CPM
+ LDA #113
+ JSR WRD5V
+ JSR WVMESS ON WAVE #
+ LDX #$20FB COPIERS TAKE NOTE:
+ LDU #HIDTAB HIDDEN COPY RIGHT HERE
+HIDLP LDA ,U+
+ EORA #$5A
+ BEQ HIDEND
+ JSR PR35V
+ BRA HIDLP
+HIDEND JMP GEXEC
+
+       FCC    ' (C) 1982 WILLIAMS ELECTRONICS INC. '
+*
+*MAKE YOUR ROBOTS APPEAR
+*PD=CNT,PD2=PTR,PD4=REFPTR,PD6=REF LIM
+*
+APPEAR LDU CRPROC
+ CLR PD,U
+ LDX #RPTR
+ STX PD2,U
+ LDX RPTR
+ STX PD4,U
+ STX PD6,U
+APL LDA #1
+ PSHS A 1/FRAME
+APL1 LDX PD2,U GET INDEX
+ LDX ,X
+ BEQ AP3 ALL DONE
+ JSR APCENT GET CENTER
+ LDA PD,U
+ ANDA #3
+ CMPA #3
+ BNE AP1
+ JSR HAPST
+ BRA AP2
+AP1 JSR APST
+AP2 STX PD2,U
+AP3 INC PD,U
+ LDA PD,U
+ CMPA #32
+ BLS AP4
+ LDY PD6,U    EXPAND REFRESH LIST
+ BEQ APX1
+ LDY ,Y
+ BEQ APX1 DONE
+ STY PD6,U
+AP4 DEC ,S
+ BNE APL1
+ PULS A
+ BSR APREF
+ NAP 1,APL
+APX1 PULS A
+ NAP 2,APX2 LET EVERYONE FINISH
+APX2 BSR ROBON TURN EVERYONE ON
+ NAP 10,PLS1
+*
+*REFRESH APEAREES
+*
+APREF PSHS X
+ LDA #4 4 PER FRAME
+ STA XTEMP
+ LDX PD4,U
+APRL CMPX PD6,U
+ BNE APR1
+ LDX #RPTR
+ BRA APRX
+APR1 JSR DMAON
+APRX LDX ,X
+ DEC XTEMP
+ BNE APRL
+ STX PD4,U
+ PULS X,PC
+*
+*ON ROBOTS
+*
+ROBON LDX RPTR
+ BEQ ROBONX
+ROBON1 JSR DMAON
+ LDX ,X
+ BNE ROBON1
+ROBONX RTS
+*
+*ON POSTS
+*
+PSTON LDX PPTR
+ BEQ PSTONX
+PSTON1 LDA PSTCOL
+ JSR OPON
+ STX [OBJID,X]
+PSTONL LDX ,X
+ BNE PSTON1
+PSTONX RTS
+*
+*OFF POSTS
+*
+PSTOFF LDX PPTR
+ BRA ROBOF0
+*
+*OFF ROBOTS
+*
+ROBOFF LDX RPTR
+ROBOF0 BEQ ROBOFX
+ROBOF1 LDD OBJX,X
+ LDY OPICT,X
+ JSR PCTOFF
+ LDX ,X
+ BNE ROBOF1
+ROBOFX RTS
+*
+*APPEAR CENTER CALCULATE
+*X=OBJ, STORES CENT-CENTMP
+APCENT PSHS D,U
+ LDU OPICT,X X CENTER
+ LDB OBJW,U
+ LDA OBJX,X
+ ASLA
+ BCC APC1
+ LDA #$FF
+APC1 MUL
+ ADDA OBJX,X
+ STA CENTMP
+ LDB OBJH,U
+ LDA OBJY,X
+ MUL
+ ADDA OBJY,X
+ STA CENTMP+1
+ PULS D,U,PC
+*
+*PLAYER DIAGONAL APPEAR
+*
+PDAPPR LDX #PLOBJ
+ LDY OPICT,X
+ LDA OBJH,Y
+ PSHS A
+DPAPP1 LDA ,S
+ ADDA PX+1
+ DECA
+ STA CENTMP+1
+ CLRA
+ JSR DAPST
+ COMA
+ JSR DAPST
+ LDA ,S
+ SUBA #3
+ STA ,S
+ BPL DPAPP1
+ PULS A,PC
+*
+*SUPER PLAYER APPEAR
+*
+PAPPR LDX #PLOBJ
+ LDY OPICT,X
+ LDA OBJH,Y
+ PSHS A
+PAPPR1 LDA ,S
+ ADDA PX+1
+ DECA
+ STA CENTMP+1
+ JSR APST VERTS
+ DEC ,S
+ BNE PAPPR1
+ LDA OBJW,Y
+ STA ,S
+PAPPR2 LDA ,S
+ ADDA PX
+ DECA
+ STA CENTMP
+ JSR HAPST
+ DEC ,S
+ BNE PAPPR2
+ PULS A,PC
+*
+*GET WALL COLOR
+*
+GTWCOL JSR PLINDX
+ LDU #WCTAB
+ LDA PWAV,X
+ DECA
+GTWL CMPA #9
+ BLS GTW1
+ SUBA #10
+ BRA GTWL
+GTW1 LEAU A,U
+ LDA ,U
+ STA WALCOL
+ LDA 10,U
+ STA PSTCOL
+ LDB 20,U
+ LDX PSTP1
+ ABX
+ STX PSTANI POST IMAGE
+ LDA 30,U
+ STA LASCOL
+ RTS
+*WAVE COLOR TABLES
+WCTAB EQU *
+ FCB $22,$55,$11,$EE,$77,$33,$44,$88,$00,$CC
+*POST COLOR TABLES
+ FCB $FF,$EE,$BB,$DD,$EE,$FF,$11,$BB,$DD,$AA
+*POST IMAGES
+ FCB $00,$10,$20,$30,$40,$50,$70,$80,$00,$60
+*LASER COLOR
+ FCB $99,$00,$99,$66,$99,$99,$99,$11,$AA,$99
+*CHECK END OF WAVE
+WVCHEK LDA ROBCNT
+ ADDA CIRCNT
+ ADDA ENFCNT
+ ADDA BRNCNT
+ ADDA TNKCNT
+ ADDA SQCNT
+ RTS
+*
+*GAME EXEC
+*
+GEXEC LDU CRPROC
+ LDA #18
+ STA PD,U
+ CLR SCRFLG
+GEXEC0 BSR WVCHEK
+ BNE GEXEC1
+ JSR PLINDX 
+GEXX INC PWAV,X
+ BNE GEXX1
+ INC PWAV,X
+GEXX1 INC PLAS,X
+ LDD #WVSND
+ JSR SNDLD
+ JSR GETWV
+ JSR GNCIDE
+ LDA #$7F
+ STA STATUS TURN EVERYTHING OFF
+ JSR SCRCLR
+ JSR RMST DO MARQUEE EFFECT
+ JMP PLSTRT
+GEXEC1 LDA    PIA2 
+       CMPA   #$58
+       BNE    NORIPP
+       JSR    RIPV
+NORIPP DEC PD,U
+ BNE GEXECX
+ LDA #15
+ STA PD,U
+ LDA ROBCNT TOO MANY ROBOTS
+ CMPA #30
+ BHS GEXECX
+ LDD #$FFFE
+ TST SCRFLG
+ BNE GEXEC2
+ LDD #$FEFC BONE HIM FOR STALLING
+GEXEC2 ADDA RMXSPD
+ CLR SCRFLG
+ CMPA #1
+ BGE GEXEC3
+ LDA #1
+GEXEC3 STA RMXSPD
+ ADDB ROBSPD
+ CMPB RMXSPD
+ BGE GEXEC4
+ LDB RMXSPD
+GEXEC4 STB ROBSPD
+GEXECX LDA GAMTIM
+ INCA
+ CMPA #150 1/4 SEC. CTS
+ BLO GEXX2
+ LDB #6    HIT THE TIMER
+ JSR AUD1
+ CLRA
+GEXX2 STA GAMTIM
+ NAP 15,GEXEC0
+*
+*PLAYER RESTORE
+*
+PLRES JSR PLINDX
+ LEAX PENEMY,X
+ LDU #ELIST
+PLRES1 LDA ,X+
+ STA ,U+
+ CMPU #ELEND
+ BNE PLRES1
+ JSR PLINDX
+ LDA PWAV,X
+ CMPA #4
+ BHI PLRESX NO BOZO
+ LDB PLAS,X
+ STD XTEMP SAVE WAVE,SHIPS
+ TSTB
+ BEQ BOZO LAST SHIP
+ CMPA #2
+ BHI PLRESX NOT WAVE 1,2
+ LDX #NSHIP
+ JSR RCMOSA
+ JSR NEWBCH
+ DECA
+ CMPA XTEMP+1
+ BLS PLRESX  NOT DOWN SHIPS
+BOZO LDA XTEMP
+ LDX #BOZOTB-4
+ ASLA
+ ASLA
+ LEAX A,X
+ LDD ,X++
+ STA CDPTIM
+ STB ENSTIM
+ LDD ,X
+ STA ROBSPD
+ STB RMXSPD
+PLRESX RTS
+*
+*BOZO TABLE: FOR ALL YOU BOZOS OUT THERE
+*
+BOZOTB EQU *
+ FCB 38,96,30,15  WAVE 1
+ FCB 38,96,25,12       2
+ FCB 36,48,20,10       3
+ FCB 30,30,15,7        4
+*
+*SAVE PLAYER STATE
+*
+PLSAV JSR PLINDX
+ LEAX PENEMY,X
+ LDU #ELIST
+PLSAV1 LDA ,U+
+ STA ,X+
+ CMPU #ELEND
+ BNE PLSAV1
+ RTS
+*
+*GET NEXT WAVE
+*
+GETWV LDX #GA1  GET DIFFICULTY
+ JSR RCMOSB
+ JSR BCDBIN
+ JSR PLINDX
+ CMPB #5 EASY SET UP??
+ BHS GTWV0X NO
+ LDA PWAV,X
+ CMPA #14 WAVE 14 OR GREATER
+ BLO GTWV01 NO
+ LDB #5
+GTWV01 CMPA #5 WAVE 5 OR GT?
+ BLO GTWV0X NO
+ LDA PLAS,X 4 OR MORE LASERS LEFT?
+ CMPA #3
+ BLO GTWV0X  NO
+ LDB #5      YES SCREW HIM
+GTWV0X SUBB #5
+ STB XTEMP+1 SAVE SIGN
+ BPL GETWV0
+ NEGB
+GETWV0 STB XTEMP MAGNITUDE
+ LDB PWAV,X
+ LDU #WVTAB+2
+ LEAX PENEMY,X
+GETWV1 CMPB #40
+ BLS GETWV2
+ SUBB #20
+ BRA GETWV1
+GETWV2 EQU *
+ CMPU #WVCNT
+ BLO GETWV3
+ LEAU -3,U   NO MAX/MINS
+ LDA B,U
+ BRA GETWV9
+GETWV3 LDA B,U
+ PSHS D
+ LDB -2,U   GET FRACTION
+ ANDB #$1F
+ LDA XTEMP
+ MUL        MULTIPLY BY MAGNITUDE
+ PULS A
+ MUL
+ ADCA #0 ROUND
+ LDB XTEMP+1
+ EORB -2,U PLUS OR MINUS ????
+ PULS B
+ BPL GETWV4
+ NEGA
+ BEQ GETWV4 ZERO CASE
+ ADDA B,U
+ BCS GETWV5 O.K.
+ BRA GETWV6 UNDERFLOW GET MIN
+GETWV4 ADDA B,U
+ BCS GETWV8 OVERFLOW GET MAX
+GETWV5 CMPA -1,U CHECK MIN
+ BHS GETWV7
+GETWV6 LDA -1,U
+GETWV7 CMPA ,U
+ BLS GETWV9
+GETWV8 LDA ,U
+GETWV9 STA ,X+
+ LEAU 43,U
+ CMPU #WVTEND-1
+ BLO GETWV2
+ CLR ,X+ GET TANK COUNT
+ RTS
+HIDTAB FCB $01,$19,$06,$7A,$6B,$63,$62,$68,$7A,$0D,$13,$16,$16,$13,$1B
+ FCB $17,$09,$7A,$1F,$16,$1F,$19,$67,$7A,$13,$14,$19,$67,$5A
+WVTAB EQU *
+ FCB $8E,10,20 SIGN/DELTA,MIN,MAX
+ FCB 20,15,15,15,15,15,15,15,15,15,14,14,14,14,14,13,13,13,13,13 ROBSPD
+ FCB 14,14,14,14,14,14,13,13,13,13,13,13,12,12,12,12,12,12,15,12
+ FCB $8E,03,10
+ FCB 09,07,06,05,05,05,05,04,04,04,04,04,04,04,04,04,04,04,04,04 RMXSPD
+ FCB 04,04,04,04,04,04,03,03,04,03,03,03,03,03,03,03,03,03,04,03
+ FCB $0E,$08,12
+ FCB 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 ENFNUM
+ FCB 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11
+ FCB $8E,13,40
+ FCB 30,28,26,24,22,20,18,18,16,14,14,14,14,14,14,14,14,14,14,14 ENSTIM
+ FCB 15,15,15,15,15,15,15,15,15,14,14,14,14,14,14,14,14,14,14,14
+ FCB $8E,12,40
+ FCB 30,28,26,24,30,20,18,16,18,25,12,12,12,25,25,12,12,12,18,20 CDPTIM
+ FCB 14,14,14,14,14,25,14,14,18,25,12,12,12,12,25,12,12,12,18,20
+ FCB $8E,05,09
+ FCB 08,08,07,07,07,07,07,06,06,06,06,05,05,05,05,05,05,05,05,05 HLKSPD
+ FCB 05,05,05,05,05,05,05,05,05,05,05,05,05,05,05,05,05,05,05,05
+ FCB $8E,25,80
+ FCB 64,64,64,64,64,40,40,38,38,38,38,38,38,38,38,38,36,36,36,36 BSHTIM
+ FCB 32,32,32,32,32,32,32,30,30,30,30,30,25,25,25,25,25,25,25,25
+ FCB $8E,6,10
+ FCB 08,08,08,08,08,07,07,07,07,07,07,07,07,07,07,06,06,06,06,06 BRNSPD
+ FCB 06,06,06,06,06,06,06,06,06,06,06,06,06,06,06,06,06,06,06,06
+ FCB $8E,20,40
+ FCB 32,32,32,32,32,32,32,30,30,30,30,30,30,28,28,28,28,28,28,28 THKSHT
+ FCB 30,30,30,30,30,30,28,28,28,28,28,26,26,26,26,26,24,24,24,24 
+ FCB $0E,$A0,$FF
+ FDB $B0B0,$B0B0,$B0B0,$B0B0,$B0B0,$B0B0,$B0B0,$B0B0,$B0B0,$B0B0 SHLSPD
+ FDB $B8B8,$B8B8,$B8B8,$B8B8,$B8B8,$C0C0,$C0C0,$C0C0,$C0C0,$C0C0
+ FCB $8E,$0C,$30
+ FDB $1010,$1010,$1010,$1010,$1010,$1010,$1010,$0F0F,$0F0F,$0F0F TDPTIM
+ FDB $0E0E,$0E0E,$0E0E,$0E0E,$0E0E,$0E0E,$0E0E,$0E0E,$0E0E,$0E0E
+ FCB $0E,$28,$44
+ FDB $3232,$3232,$3232,$3232,$3232,$3232,$3838,$3838,$3838,$3838 SQSPD
+ FDB $3838,$3838,$3838,$3838,$3C3C,$3C3C,$3C3C,$3C3C,$3C3C,$3C3C
+WVCNT EQU *
+ FCB 15,17,22,34,20,32,00,35,60,25,35,00,35,27,25,35,00,35,70,25 ROBCNT
+ FCB 35,00,35,00,25,35,00,35,75,25,35,00,35,30,27,35,00,35,80,30
+ FCB 05,15,25,25,20,25,00,25,00,20,25,00,25,05,20,25,00,25,00,20 PSTCNT
+ FCB 25,00,25,00,20,25,00,25,00,20,25,00,25,00,15,25,00,25,00,15
+ FCB 01,01,02,02,15,03,04,03,03,00,03,03,03,05,00,03,03,03,03,08 MOMCNT
+ FCB 03,03,03,03,25,03,03,03,03,00,03,03,03,03,00,03,03,03,03,10
+ FCB 01,01,02,02,00,03,04,03,03,22,03,03,03,05,00,03,03,03,03,08 DADCNT
+ FCB 03,03,03,03,00,03,03,03,03,25,03,03,03,03,00,03,03,03,03,10
+ FCB 00,01,02,02,01,03,04,03,03,00,03,03,03,05,22,03,03,03,03,08 KIDCNT
+ FCB 03,03,03,03,01,03,03,03,03,00,03,03,03,03,25,03,03,03,03,10
+ FCB 00,05,06,07,00,07,12,08,04,00,08,13,08,20,02,03,14,08,03,02 HLKCNT
+ FCB 08,15,08,13,01,08,16,08,04,01,08,16,08,25,02,08,16,08,06,02
+ FCB 00,00,00,00,15,00,00,00,00,20,00,00,00,00,20,00,00,00,00,20 BRNCNT
+ FCB 00,00,00,00,21,00,00,00,00,22,00,00,00,00,23,00,00,00,00,25
+ FCB 00,01,03,04,01,04,00,05,05,01,05,00,05,02,01,05,00,05,05,02 CIRCNT
+ FCB 05,00,05,06,01,05,00,05,05,01,05,00,05,02,01,05,00,05,05,01
+ FCB 00,00,00,00,00,00,10,00,00,00,00,12,00,00,00,00,12,00,00,00 SQCNT
+ FCB 00,12,00,07,00,00,12,01,01,01,01,13,01,02,02,02,14,02,01,01
+WVTEND EQU *
+*
+*PLAYER INITIALIZE
+*
+PLINIT LDX #PLOBJ
+ LDD #MANDP1
+ STD OPICT,X
+ STD OLDPIC,X
+ CLR PLAIMC ANI COUNT+NUM
+ CLR PLAIMN
+ LDD #PISD
+ STD PLAIMB ANI BASE
+ LDD #PCOORD
+ STD OBJX,X
+ STA OX16,X
+ CLR OX16+1,X
+ STB OY16,X
+ CLR OY16+1,X
+ CLR LCNT
+ CLR PCFLG
+ CLR SAVCNT MAN SAVED COUNTER
+ CLR BCMCNT
+ CLR SPKCNT
+ CLR BRNFLG
+ CLR ENFCNT
+ LDA #2
+ STA TNKSPD
+ CLR SHLCNT
+ RTS
+*
+*PLAYER MOTION+OUTPUT
+*
+PLAYRV LDA STATUS
+ BITA #$01
+ BEQ PL00
+ RTS
+PL00 TSTA
+ BPL PL01
+ LDA ATRSW2 FONY SWITCH
+ BRA PL02
+PL01 LDA PIA2
+PL02 LDX #PLOBJ
+ LDU #PITAB
+ ANDA #$F
+ ASLA
+ ASLA
+ LEAU A,U
+ LDD ,U GET YOUR TABLE ENTRY FOR SWITCH POSITION
+ ADDB PY16
+ CMPB #YMIN
+ BLO PL1
+ CMPB #YMAX-11
+ BHI PL1
+ STB PY16
+PL1 CLRB
+ ASRA
+ RORB
+ ADDD PX16
+ CMPA #XMIN
+ BLO PL2
+ CMPA #XMAX-3
+ BHI PL2
+ STD PX16
+PL2 LDD 2,U
+ BEQ PLXX NO IMAGE CHANGE
+ CMPD PLAIMB BASE CHANGE?
+ BEQ PL3
+ STD PLAIMB
+ CLR PLAIMN
+ CLR PLAIMC
+PL3 LDB PLAIMC COUNT READY?
+ BNE PL10
+ LDU PLAIMB
+ LDA PLAIMN
+ LDB A,U
+ BNE PL4
+ CLR PLAIMN END OF SEQUENCE
+ LDB ,U
+PL4 INC PLAIMN
+ DECB
+ ASLB
+ ASLB
+ CLRA
+ ADDD #MANLP1
+ STD PPICT
+PL10 LDA PLAIMC
+ INCA 
+ CMPA #2
+ BLO PL11
+ CLRA
+PL11 STA PLAIMC
+PLXX RTS 
+*
+*PLAYER IMAGE TABLE
+*DX,DY,IMAGE SEQ
+*B0=U,B1=D,B2=L,B3=R
+PITAB FDB 0,0     0000
+ FDB $00FF,PISU    0001 U
+ FDB $0001,PISD    0010 D 
+ FDB $0,0          0011 
+ FDB $FF00,PISL    0100 L
+ FDB $FFFF,PISL    0101 U+L
+ FDB $FF01,PISL    0110 D+L
+ FDB 0,0           0111
+ FDB $0100,PISR    1000 R
+ FDB $01FF,PISR    1001 U+R
+ FDB $0101,PISR    1010 D+R
+ FDB 0,0           1011
+ FDB 0,0           1100
+ FDB 0,0           1101
+ FDB 0,0           1110
+ FDB 0,0           1111
+*
+*PLAYER ANIMATION TABLE
+*
+PISL FCB 1,2,1,3,0
+PISR FCB 4,5,4,6,0
+PISD FCB  7,8,7,9,0
+PISU FCB 10,11,10,12,0
+*
+*CHECK FOR OBSTACLE
+*CARDBOARD BOX
+*D= SCREEN ADDR X,Y
+*X=OBJ,U=LIST TO CHECK AGAINST
+*RET NE IF BLOCKED, EQ OTHERWISE
+CKOBSV PSHS U,D
+ PSHS D
+ ADDD [OPICT,X]
+ PSHS D
+ BRA CKOBLP
+CKOB1 LDD OBJX,U
+ CMPA ,S
+ BHS CKOBLP
+ CMPB 1,S
+ BHS CKOBLP
+ ADDD [OPICT,U]
+ CMPA 2,S
+ BLS CKOBLP
+ CMPB 3,S
+ BLS CKOBLP
+ PSHS U IS IT ITSELF??
+ CMPX ,S++
+ BNE CKOBX NOPE
+CKOBLP LDU ,U
+ BNE CKOB1
+CKOBX LEAS 4,S CLEAN UP YOUR MESS
+ PULS U,D,PC
+*
+*CHECK PLAYER COLLISION
+*
+COLCHK LDA #1
+ STA PCFLG
+ LDD PX PLAYER
+ LDU POLDPC
+ LDX #RPTR ROBOTS
+ JSR COL0
+ BNE PLEND DIE
+ LDD PX
+ LDU POLDPC 
+ LDX #PPTR  POSTS (FATAL OBSTACLES)
+ JSR COL0
+ BNE PLEND
+ LDD PX
+ LDU POLDPC
+ LDX #OPTR   MOTION OBJECTS
+ JSR COL0
+ BNE PLEND
+ LDD PX      HUMANS
+ LDU POLDPC
+ LDX #HPTR
+ JSR COL0
+ CLR PCFLG
+ NAP 1,COLCHK
+*
+*PLAYER DEAD
+* 
+PLEND LDD #PDSND
+ JSR SNDLD
+ LDA #$1B
+ STA STATUS
+ JSR GNCIDE
+ LDB #7
+ JSR AUD1 MEN PLAYED
+ JSR COLST START YOUR COLORS
+ JSR PDEATH GO FOR IT...
+ JSR PLINDX
+ LDA ZP1LAS
+ ORA ZP2LAS
+ BNE PLEND1
+ LDA #$FF
+ STA STATUS
+ LDD #$1C0A  GAME OVER MESSAGE
+ LDX #$3C7E
+ JSR BLKCLR
+ LDA #40
+ LDB #$AA
+ STB TEXCOL
+ JSR WRD7V
+ NAP 120,ENDPRC
+PLEND1 JSR PLINDX
+ LDA RMXSPD-ELIST+PENEMY,X RESTORE MAX SPEED
+ STA RMXSPD
+ CMPA ROBSPD
+ BLS PLEND2
+ STA ROBSPD
+PLEND2 CLRA
+ LDB ENFCNT CONVERT LEFTOVER ENFORCERS INTO CIRCLES
+ BEQ PLE2C
+PLE0A SUBB #4
+ BMI PLE1A
+ INCA
+ BRA PLE0A
+PLE1A TSTA
+ BNE PLE2A
+ TST CIRCNT
+ BNE PLE2A
+ INCA
+PLE2A ADDA CIRCNT
+ CMPA CIRCNT-ELIST+PENEMY,X NO MORE THAN YOU STARTED WITH
+ BLS PLE2B
+ LDA CIRCNT-ELIST+PENEMY,X
+PLE2B STA CIRCNT
+PLE2C JSR PLSAV 
+PLEND3 JSR PLINDX
+ LDB PLAS,X
+ BNE PLE1B
+ LDD #$1C20 PLAYER N GAME OVER MESSAGE
+ LDX #$3C77
+ JSR BLKCLR
+ LDA #75
+ LDB #$AA
+ STB TEXCOL
+ LDB CURPLR
+ JSR WRD7V
+ NAP $60,PLE1B
+PLE1B LDA CURPLR
+PLE1 EORA #3
+ JSR PLDX
+ LDB PLAS,X
+ BEQ PLE1
+ STA CURPLR
+ JMP PLSTRT
+*
+*RANDOM X,Y->D ON PLAYFIELD FOR OBJECT X
+*
+RNDXYV EQU *
+ LDD [OPICT,X]
+ PSHS D
+ LDA #XMAX-XMIN
+ SUBA ,S+
+ JSR RANDU
+ ADDA #XMIN-1
+ TFR A,B
+ LDA #YMAX-YMIN
+ SUBA ,S+
+ JSR RANDU
+ ADDA #YMIN-1
+ EXG A,B
+ RTS
+*LASER START
+LSPROC CLR PD,U PREV STATE
+ CLR PD1,U  TIMECOUNT
+LSPLP LDA STATUS
+ BPL LSP0
+ LDD ATRSW2
+ BRA LSP00
+LSP0 LDA PIA2
+ LDB PIA3
+LSP00 LSRB
+ RORA
+ LSRB 
+ RORA
+ ANDA #$F0
+ LDB PD,U
+ STA PD,U
+ CMPB PD,U
+ BNE LSPX
+ INC PD1,U
+ LDB PD1,U
+ CMPB #2
+ BEQ LSP1
+ ANDB #$7
+ BNE LSPNAP
+LSP1 LDB LCNT
+ CMPB #4
+ BHS LSPX1
+ TST FREE
+ BEQ LSPNAP NO MORE PROCS
+ LSRA
+ LSRA
+ PSHS A
+ LSRA
+ ADDA ,S+
+ LDY #LTAB
+ LEAY A,Y
+ CMPA #LTEND-LTAB
+ BHS LSPNAP DUD
+ LDX ,Y
+ BEQ LSPNAP DUD
+ CLRA
+ JSR MKPROC
+ TFR X,U
+ JSR GETOBJ
+ STX PD,U
+ LDD 4,Y
+ ADDD #LLPIC
+ STD OPICT,X
+ STD OLDPIC,X
+ LDD PX 
+ ADDA 2,Y
+ STA OX16,X
+ ADDB 3,Y
+ STB OY16,X
+ INC LCNT
+ LDD #LASSND
+ JSR SNDLD
+ BRA LSPNAP
+LSPX CLR PD1,U
+ BRA LSPNAP
+LSPX1 DEC PD1,U
+LSPNAP NAP 1,LSPLP
+*LASER TABLE: ROUTINE,XY OFFSET,OBJECT
+LTAB EQU *
+ FDB 0,0,0 0000 CASE
+ FDB ULASR,$02FF,4  0001
+ FDB DLASR,$0204,4  0010
+ FDB 0,0,0 0011
+ FDB LLASR,$0004,0 0100
+ FDB ULLASR,$0000,12 0101
+ FDB DLLASR,$0004,8 0110
+ FDB 0,0,0 0111
+ FDB RLASR,$0204,0 1000
+ FDB URLASR,$0200,8 1001
+ FDB DRLASR,$0204,12 1010
+LTEND EQU *
+*RT. LASER
+RLASR LDX PD,U
+ LDA OX16,X
+ ADDA #3
+ CMPA #XMAX-2
+ BHI RLDIE
+ STA OX16,X
+ LDD #$0100
+ JSR LASOUT
+ NAP 1,RLASR
+*LEFT LASER
+LLASR LDX PD,U
+ LDA OX16,X
+ SUBA #3
+ CMPA #XMIN
+ BLO LLDIE
+ STA OX16,X
+ LDD #$FF00
+ JSR LASOUT
+ NAP 1,LLASR
+*UP LASER
+ULASR LDX PD,U
+ LDA OY16,X
+ ADDA #-6
+ CMPA #YMIN
+ BLO ULDIE
+ STA OY16,X
+ LDD #$00FF
+ JSR LASOUT
+ NAP 1,ULASR
+*DOWN LASER
+DLASR LDX PD,U
+ LDA OY16,X
+ ADDA #6
+ CMPA #YMAX-5
+ BHI DLDIE
+ STA OY16,X
+ LDD #$0001
+ JSR LASOUT
+ NAP 1,DLASR
+*
+*LASER OUT OF BOUNDS
+*
+RLDIE LDA #XMAX+1 RT LASER DIE
+ BRA LLDIE1
+LLDIE LDA #XMIN-1 LFT LASER DIE
+LLDIE1 LDB OY16,X
+ BRA LASDIH
+ULDIE LDB #YMIN-1
+ BRA DLDIE1
+DLDIE LDB #YMAX+1
+DLDIE1 LDA OX16,X GLOW POINT
+ BRA LASDIV
+*
+*LASER DIE HORIZONTAL
+*
+LASDIH STD PD2,U
+ JSR LASOFF
+ LDX PD2,U
+ LDA LASCOL
+ LDB LASCOL
+ STD -1,X
+ STA 1,X
+ NAP 2,LDH1
+LDH1 LDA WALCOL
+ LDX PD2,U
+ STA -1,X
+ STA 1,X
+ NAP 1,LDH2
+LDH2 LDA WALCOL
+ STA [PD2,U]
+ JMP SUCIDE
+*
+*LASER DIE VERTICAL
+*
+LASDIV CMPB #YMAX
+ BHS LDV0
+ LDB #YMIN-2
+LDV0 CMPA #XMIN-1
+ BHI LDV00
+ INCA
+LDV00 STD PD2,U
+ JSR LASOFF
+ LDA LASCOL
+ LDB LASCOL
+ LDX PD2,U
+ STD ,X
+ LDA WALCOL
+ ANDA #$F0
+ PSHS A
+ LDA LASCOL
+ ANDA #$0F
+ ADDA ,S+
+ TFR A,B
+ STD -$100,X
+ NAP 2,LDV1
+LDV1 LDX PD2,U
+ LDA WALCOL
+ LDB WALCOL
+ STD -$100,X
+ ANDA #$0F
+ ANDB #$0F
+ PSHS D
+ LDA LASCOL
+ LDB LASCOL
+ ANDA #$F0
+ ANDB #$F0
+ ADDD ,S++
+ STD ,X
+ NAP 1,LDV2
+LDV2 LDA WALCOL
+ LDB WALCOL
+ STD [PD2,U]
+ JMP SUCIDE DONE!!!
+LASDH JMP LASDIH
+LASDV BRA LASDIV
+*
+*LASER DIE SCAN
+*FIND WHERE WE RAN OFF
+LDSCAN STB XTEMP+1
+ CLRB
+ ASRA
+ RORB
+ STD XTEMP2
+ TFR Y,D
+ ADDA OX16,X
+ ADDB OY16,X
+ STA OX16,X
+ STB OY16,X
+LDSCXL LDD XTEMP2
+ ADDD OX16,X
+ STD OX16,X
+ LDB OY16,X
+ ADDB XTEMP+1
+ STB OY16,X
+ CMPB #YMAX
+ BHI LASDV
+ CMPB #YMIN
+ BLO LASDV
+ CMPA #XMAX
+ BHI LASDH
+ CMPA #XMIN
+ BLO LASDH
+ BRA LDSCXL
+*
+*DOWN LEFT DIE
+DLLDIE LDY #$0005
+ LDD #$FF01
+ BRA LDSCAN
+*UP LEFT DIE
+ULLDIE LDY #$0000
+ LDD #$FFFF
+ BRA LDSCAN
+*UP RIGHT DIE
+URLDIE LDY #$0200
+ LDD #$01FF
+ BRA LDSCAN
+*DOWN RT DIE
+DRLDIE LDY #$0205
+ LDD #$0101
+ BRA LDSCAN
+*DOWN LEFT DIAG LASER
+DLLASR LDX PD,U
+ LDA OX16,X
+ SUBA #3
+ LDB OY16,X
+ ADDB #6
+ CMPA #XMIN
+ BLO DLLDIE
+ CMPB #YMAX-5
+ BHI DLLDIE
+ STA OX16,X
+ STB OY16,X
+ LDD #$FF01
+ BSR LASOUT
+ NAP 1,DLLASR
+*UPPER LEFT DIAG
+ULLASR LDX PD,U
+ LDA OX16,X
+ SUBA #3
+ CMPA #XMIN
+ BLO ULLDIE
+ LDB OY16,X
+ SUBB #6
+ CMPB #YMIN
+ BLO ULLDIE
+ STA OX16,X
+ STB OY16,X
+ LDD #$FFFF
+ BSR LASOUT
+ NAP 1,ULLASR
+*UPPER RIGHT DIAG
+URLASR LDX PD,U
+ LDA OX16,X
+ ADDA #3
+ CMPA #XMAX-2
+ BHI URLDIE
+ LDB OY16,X
+ SUBB #6
+ CMPB #YMIN
+ BLO URLDIE
+ STA OX16,X
+ STB OY16,X
+ LDD #$01FF
+ BSR LASOUT
+ NAP 1,URLASR
+*DOWN RT DIAG
+DRLASR LDX PD,U
+ LDA OX16,X
+ ADDA #3
+ CMPA #XMAX-2
+ BHI DRLDIE
+ LDB OY16,X
+ ADDB #6
+ CMPB #YMAX-5
+ BLS DRL1
+ JMP DRLDIE
+DRL1 STA OX16,X
+ STB OY16,X
+ LDD #$0101
+ BSR LASOUT 
+ NAP 1,DRLASR
+*OUTPUT LASER
+LASOUT STD LASDIR SAVE DIRECTION FOR HITS
+ JSR DMAOFN
+ PSHS U,X
+ LDU OPICT,X
+ LDD OBJX,X
+ LDX #PPTR
+ JSR COL0
+ BNE LASDIE
+ LDX ,S
+ LDU OPICT,X
+ LDD OBJX,X
+ LDX #RPTR
+ JSR COL0
+ BNE LASDIE
+ LDX ,S
+ LDU OPICT,X
+ LDD OBJX,X
+ LDX #OPTR
+ JSR COL0
+ BNE LASDIE
+ PULS X,U,PC
+*LASER DIE
+LASDIE PULS X,U
+ BSR LASOFF
+ JMP SUCIDE
+*LASER OFF
+LASOFF JSR DMAOFF
+ LDD OFREE  RETURN OBJECT TO FREE LIST
+ STD ,X
+ STX OFREE
+ DEC LCNT
+ RTS
+*
+*DISPLAY TOP OF SCREEN
+*
+TDISP PSHS D,X,Y,U
+ LDA PLRCNT
+TD1 JSR SCRTR0
+ DECA
+ BNE TD1
+ BSR BORDER
+ JSR MANDSP
+ PULS D,X,Y,U,PC
+*
+*DISPLAY WAVE # MESSAGE
+*
+WVMESS LDA ZP1WAV
+ JSR HEXBCD
+ TFR A,B
+ LDA #104
+ JSR WRD5V
+ LDA PLRCNT
+ DECA
+ BEQ WVMESX
+ LDA ZP2WAV
+ JSR HEXBCD
+ TFR A,B
+ LDA #114
+ JSR WRD5V
+WVMESX RTS
+*
+*DISPLAY MEN LEFT
+*MAX OF 7
+*
+MANDSV LDX #P1MAN
+ LDD #$1508
+ JSR BLKCLR CLEAR MAN DISPLAY
+ LDX #P2MAN
+ JSR BLKCLR CLEAR EM OUT
+ LDY #MNPIC
+ LDA ZP1LAS
+ BEQ MAND2
+ CMPA #7
+ BLS MAND1
+ LDA #7
+MAND1 STA XTEMP
+ LDD #P1MAN
+MAND1L JSR PCTON
+ ADDA #4
+ DEC XTEMP
+ BNE MAND1L
+MAND2 LDA ZP2LAS
+ BEQ MAND3
+ CMPA #7
+ BLS MAND2A
+ LDA #7
+MAND2A STA XTEMP
+ LDD #P2MAN
+MAND2L JSR PCTON
+ ADDA #4
+ DEC XTEMP
+ BNE MAND2L
+MAND3 RTS
+*
+*DISPLAY BORDER
+*
+BORDER LDX #(XMIN-1)*256+YMIN-2
+ LDA WALCOL
+BORD1 STA (XMAX-XMIN)*$100+$200,X
+ STA ,X+
+ CMPX #(XMIN-1)*256+YMAX+2
+ BLS BORD1
+ LDX #XMIN*256+YMIN-2
+ LDB WALCOL
+BORD2 STD ,X
+ STD YMAX-YMIN+3,X
+ LEAX 256,X
+ CMPX #XMAX*256+YMIN-2
+ BLS BORD2
+ RTS
+*
+*POST REFRESH PROCESS
+*PSTREF=#TO REF EVERY 2 FRAME
+PSTRPC LDU PSTIN
+ CMPU #PSLIST+64
+ BLO PSTP0
+ LDU #PSLIST
+PSTP0 LDA PSTREF
+ PSHS A
+ LDY PSTANI
+PSTPL LDX ,U++
+ BEQ PSTP01
+ LDD ,Y
+ EORA #4
+ EORB #4
+ SEI
+ STD DMASIZ SETUP SIZE
+ LDB PSTCOL
+ STB DMACON
+ LDD OBJDAT,Y
+ STD DMAORG
+ LDD OBJX,X
+ STD DMADES
+ LDB #$1A
+ STB DMACTL
+ CLI
+PSTP01 DEC ,S
+ BNE PSTPL
+ LEAS 1,S
+ STU PSTIN
+ NAP 2,PSTRPC
+*
+*MINI MAN PICT
+*
+MNPIC FCB 3,8
+ FDB MANPD
+MANPD FCB $02,$22,$00
+ FCB $BB,$0B,$B0
+ FCB $BB,$0B,$B0
+ FCB $00,$20,$00
+ FCB $88,$08,$80
+ FCB $30,$80,$30
+ FCB $08,$08,$00
+ FCB $88,$08,$80
+*
+*LASER PICT PTRS
+*
+LLPIC FCB 3,1
+ FDB LLPC
+ULPIC FCB 1,6
+ FDB ULPC
+DLLPIC FCB 3,6
+ FDB DLLPC
+ULLPIC FCB 3,6
+ FDB ULLPC
+*LASER PICTURES
+LLPC FCB $AA,$AA,$AA
+ULPC FCB $A0,$A0,$A0,$A0,$A0,$A0
+DLLPC FCB $00,$00,$0A
+ FCB $00,$00,$A0
+ FCB $00,$0A,$00
+ FCB $00,$A0,$00
+ FCB $0A,$00,$00
+ FCB $A0,$00,$00
+ULLPC FCB $A0,$00,$00
+ FCB $0A,$00,$00
+ FCB $00,$A0,$00
+ FCB $00,$0A,$00
+ FCB $00,$00,$A0
+ FCB $00,$00,$0A
+*
+*PLAYER IMAGES...
+MANLP1 FCB 4,12
+ FDB MANLD1
+MANLP2 FCB 4,12
+ FDB MANLD2
+MANLP3 FCB 4,12
+ FDB MANLD3
+MANRP1 FCB 4,12
+ FDB MANRD1
+MANRP2 FCB 4,12 
+ FDB MANRD2
+MANRP3 FCB 4,12 
+ FDB MANRD3
+MANDP1 FCB 4,12
+ FDB MANDD1
+MANDP2 FCB 4,12
+ FDB MANDD2
+MANDP3 FCB 4,12
+ FDB MANDD3
+MANUP1 FCB 4,12
+ FDB MANUD1
+MANUP2 FCB 4,12
+ FDB MANUD2
+MANUP3 FCB 4,12
+ FDB MANUD3
+MANLD1 EQU *
+ FDB $0B22,$2000
+ FDB $0BBB,$BB00
+ FDB $0B22,$2B00
+ FDB $0022,$2000
+ FDB $0009,$0000
+ FDB $0099,$9000
+ FDB $0093,$9000
+ FDB $0093,$9000
+ FDB $0003,$0000
+ FDB $0001,$0000
+ FDB $0099,$0000
+ FDB $0000,$0000
+MANLD2 EQU *
+ FDB $0B22,$2000
+ FDB $0BBB,$BB00
+ FDB $0B22,$2B00
+ FDB $0022,$2000
+ FDB $0009,$0000
+ FDB $0009,$9000
+ FDB $0333,$9300
+ FDB $0009,$9300
+ FDB $0090,$9300
+ FDB $0090,$9000
+ FDB $0990,$9000
+ FDB $0000,$0000
+MANLD3 EQU *
+ FDB $0B22,$2000
+ FDB $0BBB,$BB00
+ FDB $0B22,$2B00
+ FDB $0022,$2000
+ FDB $0009,$0000
+ FDB $0009,$9000
+ FDB $0339,$9300
+ FDB $0009,$9300
+ FDB $0090,$9300
+ FDB $0090,$9000
+ FDB $0990,$9000
+ FDB $0000,$0000
+MANRD1 EQU *
+ FDB $0222,$B000
+ FDB $BBBB,$B000
+ FDB $B222,$B000
+ FDB $0222,$0000
+ FDB $0090,$0000
+ FDB $0999,$0000
+ FDB $0939,$0000
+ FDB $0939,$0000
+ FDB $0030,$0000
+ FDB $0090,$0000
+ FDB $0099,$0000
+ FDB $0000,$0000
+MANRD2 EQU *
+ FDB $0222,$B000
+ FDB $BBBB,$B000
+ FDB $B222,$B000
+ FDB $0222,$0000
+ FDB $0090,$0000
+ FDB $0990,$0000
+ FDB $3993,$3000
+ FDB $3990,$0000
+ FDB $3909,$0000
+ FDB $0909,$0000
+ FDB $0909,$9000
+ FDB $0000,$0000
+MANRD3 EQU *
+ FDB $0222,$B000
+ FDB $BBBB,$B000
+ FDB $B222,$B000
+ FDB $0222,$0000
+ FDB $0090,$0000
+ FDB $0990,$0000
+ FDB $3933,$3000
+ FDB $3990,$0000
+ FDB $3909,$0000
+ FDB $0909,$0000
+ FDB $0909,$9000
+ FDB $0000,$0000
+MANDD1 EQU *
+ FDB $0022,$2000
+ FDB $BBB2,$BBB0
+ FDB $B0B0,$B0B0
+ FDB $0B22,$2B00
+ FDB $0009,$0000
+ FDB $0993,$9900
+ FDB $3993,$9930
+ FDB $3093,$9030
+ FDB $3090,$9030
+ FDB $0090,$9000
+ FDB $0990,$9900
+ FDB $0000,$0000
+MANDD2 EQU *
+ FDB $0022,$2000
+ FDB $BBB2,$BBB0
+ FDB $B0B0,$B0B0
+ FDB $0B22,$2B00
+ FDB $0009,$0000
+ FDB $0993,$9900
+ FDB $3993,$9930
+ FDB $3093,$9030
+ FDB $3090,$9000
+ FDB $0990,$9000
+ FDB $0000,$9000
+ FDB $0000,$9900
+MANDD3 EQU *
+ FDB $0022,$2000
+ FDB $BBB2,$BBB0
+ FDB $B0B0,$B0B0
+ FDB $0B22,$2B00
+ FDB $0009,$0000
+ FDB $0993,$9900
+ FDB $3993,$9930
+ FDB $3093,$9030
+ FDB $0090,$9030
+ FDB $0090,$9900
+ FDB $0090,$0000
+ FDB $0990,$0000
+MANUD1 EQU *
+ FDB $BB22,$2BB0
+ FDB $B222,$22B0
+ FDB $B222,$22B0
+ FDB $0022,$2000
+ FDB $0009,$0000
+ FDB $0999,$9900
+ FDB $3999,$9930
+ FDB $3099,$9030
+ FDB $3090,$9030
+ FDB $0090,$9000
+ FDB $0990,$9900
+ FDB $0000,$0000
+MANUD2 EQU *
+ FDB $BB22,$2BB0
+ FDB $B222,$22B0
+ FDB $B222,$22B0
+ FDB $0022,$2000
+ FDB $0009,$0000
+ FDB $0999,$9900
+ FDB $3999,$9930
+ FDB $3099,$9030
+ FDB $3090,$9000
+ FDB $0990,$9000
+ FDB $0000,$9000
+ FDB $0000,$9900
+MANUD3 EQU *
+ FDB $BB22,$2BB0
+ FDB $B222,$22B0
+ FDB $B222,$22B0
+ FDB $0022,$2000
+ FDB $0009,$0000
+ FDB $0999,$9900
+ FDB $3999,$9930
+ FDB $3099,$9030
+ FDB $0090,$9030
+ FDB $0090,$9900
+ FDB $0090,$0000
+ FDB $0990,$0000
+ END
diff --git a/RRH11.ASM b/RRH11.ASM
new file mode 100755 (executable)
index 0000000..9480c1e
--- /dev/null
+++ b/RRH11.ASM
@@ -0,0 +1,1366 @@
+ STTL H U M A N S  AND  H U L K S
+ OPT NOL
+ LIB RRF
+ OPT LIS
+*
+*VECTORS
+*
+ ORG RHORG
+ JMP HLKSTV
+ JMP HUMSTV
+ JMP CKLIMV
+ JMP SKULLV
+ FDB P1000
+ FDB MLP1
+ FDB DLP1
+ FDB KIDLP1
+ FDB HLKLP1
+ FDB HLKAL
+ FDB HUMATB
+ FDB SKULP
+*
+*MISC SOUNDS
+*
+HKHSND FCB $D0,$01,$10,$06,0  HULK HIT
+HLKSND FCB $D0,$03,$04,$17,0 HULK KILL
+SAVSND FCB $E0,$01,$20,$0D,0 SAVE A HUMAN
+HKSND FCB $E0,$01,$18,$1A,0 KILL A HUMAN
+*
+*HULK PROCESS
+*PD=OBJ,PD2=TARG,PD4=CURR ANI,PD5=NEW VEL TIMER,PD6=ANI BASE ADDR
+*MOVE UP,DOWN,L,R ONLY
+HULK LDA STATUS WAIT FOR STATUS TO GO
+ BITA #$7F
+ BEQ HULKL
+ NAP 8,HULK
+HULKL LDX PD,U
+HULK00 LDY PD6,U TAKE A BIG STEP
+ LDA PD4,U
+ LEAY A,Y
+ LDB ,Y
+ BPL HULK0
+ CLR PD4,U RECYCLE IT
+ BRA HULK00
+HULK0 ADDA #3
+ STA PD4,U NEXT FRAME
+ CLRA
+ ADDD #HLKLP1
+ STD OPICT,X NEW PICT
+ LDA 1,Y
+ CLRB
+ ASRA    DELTA X
+ RORB
+ ADDD OX16,X
+ PSHS D
+ LDB 2,Y
+ ADDB OY16,X
+ BSR CKLIMV IN BOUNDS GUYS??
+ BEQ HULK2
+ LEAS 2,S
+ BRA HLKND
+HULK2 STB OY16,X
+ PULS D
+ STD OX16,X
+ LDB OY16,X
+ LDU OPICT,X
+ LDX #PPTR KILL YOUR POSTS + HUMANS
+ PSHS D,U
+ JSR COL0
+ PULS D,U
+ LDX #HPTR
+ JSR COL0
+ LDU CRPROC
+ LDX PD,U
+ DEC PD5,U
+ BNE HLKX
+HLKND BSR HULKND
+HLKX JSR DMAOFN
+ LDX #HULKL
+ LDA HLKSPD
+ JMP SLEEP
+*
+*CHECK OBJECT IN BOUNDS
+*X=OBJ, D=X,Y
+*EQ IF IN BOUNDS, NE IF OUT
+CKLIMV PSHS D
+ CMPA #XMIN
+ BLO CKLF FAIL
+ CMPB #YMIN
+ BLO CKLF
+ ADDD [OPICT,X]
+ CMPA #XMAX
+ BHI CKLF
+ CMPB #YMAX
+ BHI CKLF
+ CLRA
+CKLF PULS D,PC
+*
+*KILL A HULK
+*X=OBJ
+HULKIL LDA PCFLG
+ BNE HLKXON RAN INTO ELTON JOHN.. TERMINATE HIM
+ LDA LASDIR
+ CLRB
+ TST SEED
+ BMI HLKK0
+ ASLA
+HLKK0 ADDD OX16,X
+ PSHS D
+ LDB LASDIR+1
+ LDA LSEED
+ CMPA #$C0
+ BHS HLKK00
+ ASLB X2
+HLKK00 ADDB OY16,X
+ LDA ,S GET BACK X
+ BSR CKLIMV
+ BEQ HLKK1
+ LEAS 2,S
+ BRA HLKK2
+HLKK1 STB OY16,X
+ PULS D
+ STD OX16,X
+ LDB OY16,X
+ LDU OPICT,X
+ PSHS X
+ LDX #PPTR
+ PSHS D,U
+ JSR COL0
+ PULS D,U
+ LDX #HPTR
+ JSR COL0
+ PULS X
+ JSR DMAOFN
+HLKK2  LDD #HKHSND JUST HIT 'EM
+ JSR SNDLD
+HLKILX RTS
+HLKXON JMP DMAON TURN HIM ON!!
+*
+*GET A NEW HULK DIRECTION
+*X=OBJ,PD2=TARG,PD4=CURR ANI,PD5=NEW VEL TIMER,PD6=AN BASE ADDR
+*
+HULKND LDA LSEED NEW TIMER
+ ANDA #$1F
+ INCA
+ STA PD5,U
+ LDY [PD2,U] TARGET OBJ
+ BNE HND0
+ LDY #PLOBJ OUR GUY IS DEAD, LETS GO AFTER PLAYER
+HND0 LDD PD6,U X OR Y PREVIOUS
+ CMPD #HLKAL
+ BEQ HNDY X PREV, SEEK Y
+ CMPD #HLKAR 
+ BEQ HNDY X PREV SEEK Y
+ LDA SEED
+ ANDA #$1F
+ ADDA #-$10
+ ADDA OBJX,Y RAN DOM OFFSET
+HNDX1 CMPA #XMAX
+ BLS HNDX2
+ CMPA #XMAX+$40
+ BLS HNDX2
+ LDA #XMIN
+HNDX2 CMPA OBJX,X
+ BLS HNDX3
+ LDD #HLKAR GO RT.
+ BRA HND10
+HNDX3 LDD #HLKAL GO LEFT
+ BRA HND10
+HNDY LDA HSEED SEEK Y
+ ANDA #$1F
+ ADDA #-$10 RAND OFFSET
+ ADDA OBJY,Y
+ CMPA #YMIN>>2
+ BHS HNDY1
+ LDA #YMAX
+HNDY1 CMPA OBJY,X
+ BLS HNDY2
+ LDD #HLKAD GO DOWN
+ BRA HND10
+HNDY2 LDD #HLKAU GO UP
+HND10 STD PD6,U GET YOUR PIX
+ CLRA
+ STA PD4,U
+ LDB [PD6,U]
+ ADDD #HLKLP1
+ STD OPICT,X
+ RTS
+*
+*START A BUNCH OF HULKS
+*
+HLKSTV LDA HLKCNT
+ PSHS A
+ BEQ HLKSTX
+HLKSV1 BSR HLKST
+ DEC ,S
+ BNE HLKSV1
+HLKSTX PULS A,PC
+*
+*START A HULK
+*PD=OBJ,PD2=TARG,PD4=CUR ANI,PD5=NV TIMER,PD6=ANI BASE
+HLKST MAKP HULK
+ LEAU ,X
+ JSR GETROB
+ LDD #HLKLP1
+ STD OPICT,X
+ STD OLDPIC,X
+ STU OBJID,X
+ STX PD,U
+ LDD #HULKIL
+ STD OCVECT,X
+HLKST0 JSR SAFTY GET SAFETY ZONE
+HKST0A JSR RANDXY RANDOM INIT COORD
+ CMPB XTEMP NOT NEAR PLAYER IN MIDDLE PLEASE
+ BLS HLKST1
+ CMPB XTEMP+1
+ BHS HLKST1
+ CMPA  XTEMP2
+ BLS HLKST1
+ CMPA XTEMP2+1
+ BLS HKST0A TRY AGAIN
+HLKST1 STD OBJX,X
+ STA OX16,X
+ STB OY16,X
+ LDA SEED
+ CMPA #$C0
+ BLS HLKST2 YES
+ LDD #HTBEND-2 INSURE GUY IS DEAD
+ BRA HLKST3
+HLKST2 BSR GTARG
+HLKST3 STD PD2,U
+ JSR HULKND GET A NEW DIR BOYS
+ JSR OPON1 ON PHONY COLOR
+ CLR ODATA,X SHOT COUNTER
+ RTS
+*
+*HULK ANIMATION TABLE
+*
+HLKAL EQU * LEFT
+ FCB 0,$FD,0
+ FCB 4,$FC,0
+ FCB 0,$FD,0
+ FCB 8,$FC,0
+ FCB $FF
+HLKAR EQU * RIGHT
+ FCB 12,$03,0
+ FCB 16,$04,0
+ FCB 12,$03,0
+ FCB 20,$04,0
+ FCB $FF
+HLKAD EQU * DOWN
+ FCB 24,0,2
+ FCB 28,0,2
+ FCB 24,0,2
+ FCB 32,0,2
+ FCB $FF
+HLKAU EQU * UP
+ FCB 24,0,-2
+ FCB 28,0,-2
+ FCB 24,0,-2
+ FCB 32,0,-2
+ FCB $FF
+*
+*INITIALIZE HUMAN TABLE
+HTINIT LDX #HTAB
+ STX HTABX
+HTI1 CLR ,X+
+ CMPX #HTBEND
+ BNE HTI1
+ RTS
+*
+*ADD A HUMAN TO THE TABLE
+*X=OBJ
+HUMADD PSHS D,X
+ LDX #HTAB
+HUMAD1 LDD ,X++
+ BNE HUMAD1
+ LDD 2,S
+ STD -2,X
+ PULS D,X,PC
+*
+*CLEAR A HUMAN FROM THE TABLE
+*X=OBJ
+HUMCLR PSHS D,X
+ LDX #HTAB
+ LDD 2,S
+HUMC1 CMPD ,X++
+ BEQ HUMC2
+ CMPX #HTBEND
+ BNE HUMC1
+ SEI
+ BRA *
+HUMC2 CLRA
+ CLRB
+ STD -2,X
+ PULS D,X,PC
+*
+*GET A HUMAN TARGET
+*D=TARGET STORAGE LOCATION
+*RET EQ IF NONE, NE IF SOME
+*
+GTARG PSHS X
+ LDX HTABX
+ CMPX #HTBEND
+ BLO GTGL1
+ LDX #HTAB
+ BRA GTGL1
+GTGL CMPX HTABX
+ BEQ GTGX NOBODY HOME
+GTGL1 LDD ,X++
+ BNE GTGX1
+ CMPX #HTBEND
+ BLO GTGL
+ LDX #HTAB
+ BRA GTGL
+GTGX1 STX HTABX
+ LEAX -2,X
+ TFR X,D
+GTGX PULS X,PC RETURN
+*
+*HUMAN PROCESS
+*PD=OBJ,PD2=BASE PICT,PD4=CURR ANI,PD5=NV TIMR,PD6=ANI BASE
+*
+HUMAN LDX PD,U
+HUM00 LDY PD6,U GET NEW STEP
+ LDA PD4,U
+ LEAY A,Y
+ LDB ,Y
+ BPL HUM0
+ CLR PD4,U RESET CYCLE
+ BRA HUM00
+HUM0 ADDA #3
+ STA PD4,U
+ CLRA
+ ADDD PD2,U
+ STD OPICT,X
+ LDA 1,Y
+ CLRB
+ ASRA
+ RORB
+ ADDD OX16,X
+ PSHS D
+ LDB 2,Y
+ ADDB OY16,X
+ PSHS U
+ LDU #PPTR
+ JSR CKOBS
+ PULS U
+ BNE HUM1 OBSTACLE
+ JSR CKLIM
+ BEQ HUM2
+HUM1 LEAS 2,S
+ BRA HUMND NEW DIRECTION
+HUM2 STB OY16,X
+ PULS D
+ STD OX16,X
+ DEC PD5,U
+ BNE HUMX
+HUMND BSR GHDIR
+HUMX JSR DMAOFN
+ NAP 8,HUMAN
+*
+*START HUMAN
+*PD=OBJ,PD2=BASE PICT,PD4=CURR ANI,PD5=NV TIMR,PD6=ANI BASE
+*
+HUMSTV JSR HTINIT
+ LDX #KIDLP1
+ LDU #KIDKIL
+ LDA KIDCNT
+ BSR HSSUB
+ LDX #MLP1
+ LDU #MOMKIL
+ LDA MOMCNT
+ BSR HSSUB
+ LDX #DLP1
+ LDU #DADKIL 
+ LDA DADCNT
+HSSUB PSHS A,X,U
+ TSTA
+ BEQ HUMSTX
+HUMST0 MAKP HUMAN
+ LEAU ,X
+ JSR GETHUM
+ LDD 1,S
+ STD OPICT,X
+ STD OLDPIC,X
+ STD PD2,U
+ STU OBJID,X
+ STX PD,U
+ LDD 3,S
+ STD OCVECT,X
+ JSR RANDXY
+ STD OBJX,X
+ STA OX16,X
+ STB OY16,X
+ LDA SEED
+ ANDA #7    STAGGER START TIME
+ INCA
+ STA PTIME,U
+ BSR GHDIR
+ JSR DMAON TURN HIM ON
+ JSR HUMADD
+ DEC ,S
+ BNE HUMST0
+HUMSTX PULS A,X,U,PC
+*
+*GET HUMAN DIRECTION
+*U=PROCESS,X=OBJ,PD2=PICBAS,PD4=ANI#,PD5=NV TMR,PD6=ANI BASE
+*
+GHDIR LDA LSEED
+ ANDA #$7F
+ INCA
+ STA PD5,U NEW VEL TIMER
+ LDA SEED
+ ANDA #7
+ LDB #13
+ MUL
+ ADDD #HUMATB
+ STD PD6,U
+ CLRA
+ STA PD4,U
+ LDB [PD6,U]
+ ADDD PD2,U
+ STD OPICT,X NEW PICT
+ RTS
+*KILL A KID
+KIDKIL DEC KIDCNT
+ BRA HUMKIL
+MOMKIL DEC MOMCNT
+ BRA HUMKIL
+DADKIL DEC DADCNT
+
+*
+*KILL A HUMAN
+*
+HUMKIL JSR HUMCLR
+ JSR KILHUM
+ JSR DMAOFF
+ LDD OBJX,X
+ LDX OBJID,X
+ JSR KILL
+ TST BRNFLG
+ BNE HUMKX BRAINY GOT ME
+SKULLV EQU *
+ MKPROB HUMSAV,NULLP,NOKILL
+ CMPA #XMAX-6  CHECK LIMIT, DONT WRITE OVER BOUNDARY
+ BLO HUMK1
+ LDA #XMAX-6
+HUMK1 STD OBJX,X
+ TST BRNFLG PROGRAMMING DEATH
+ BNE HKIL10
+ TST PCFLG
+ BEQ HKIL10
+ LDA #60
+ STA PD2,U
+ INC SAVCNT
+ LDA SAVCNT
+ CMPA #5
+ BLS HUMS1
+ LDA #5
+HUMS1 ASLA
+ ASLA
+ LDU #P1000-4
+ LEAU A,U
+ STU OPICT,X
+ LDU #SVITAB-2
+ LSRA
+ LDD A,U
+ JSR SCORE
+ LDD #SAVSND
+ JSR SNDLD
+NOKILL CLRA
+ PULS D,PC NO KILL PLAYER
+HKIL10 LDA #90
+ STA PD2,U
+ LDD #SKULP
+ STD OPICT,X
+ LDD #HKSND
+ JSR SNDLD
+HUMKX RTS
+*
+*KILL/SAVE HUMAN DISPLAY ERASE
+*
+HUMSAV LDX PD,U OFF THE JAG IN THE BAG
+ LDD OBJX,X
+ LDY OPICT,X
+ JSR PCTON
+ DEC PD2,U
+ BEQ HUMSX
+ NAP 1,HUMSAV
+HUMSX JSR PCTOFF
+ LDD OFREE
+ STD ,X
+ STX OFREE
+ JMP SUCIDE QUIT
+*
+*HUMAN SAVE TABLE
+*
+SVITAB EQU *
+ FDB $0210
+ FDB $0220
+ FDB $0230
+ FDB $0240
+ FDB $0250
+*
+*HUMAN ANIMATION TABLE
+*IMAGE #,DELTA X,DELTA Y; $FF IMAGE=START OVER
+*IMAGES STORED L,R,D,U
+*
+HUMATB EQU *
+*LEFT
+ FCB 0,$FE,$00
+ FCB 4,$FF,$00
+ FCB 0,$FE,$00
+ FCB 8,$FF,$00
+ FCB $FF
+*RIGHT
+ FCB 12,$02,$00
+ FCB 16,$01,$00
+ FCB 12,$02,$00
+ FCB 20,$01,$00
+ FCB $FF
+*DOWN
+ FCB 24,$00,$01
+ FCB 28,$00,$01
+ FCB 24,$00,$01
+ FCB 32,$00,$01
+ FCB $FF
+*UP
+ FCB 36,$00,$FF
+ FCB 40,$00,$FF
+ FCB 36,$00,$FF
+ FCB 44,$00,$FF
+ FCB $FF
+*UP+LEFT
+ FCB 0,$FE,$FF
+ FCB 8,$FF,$FF
+ FCB 0,$FE,$FF
+ FCB 8,$FF,$FF
+ FCB $FF
+*RIGHT+UP
+ FCB 12,$02,$FF
+ FCB 16,$01,$FF
+ FCB 12,$02,$FF
+ FCB 20,$01,$FF
+ FCB $FF
+*RIGHT+DOWN
+ FCB 12,$02,$01
+ FCB 16,$01,$01
+ FCB 12,$02,$01
+ FCB 20,$01,$01
+ FCB $FF
+*DOWN+LEFT
+ FCB 0,$FE,$01
+ FCB 4,$FF,$01
+ FCB 0,$FE,$01
+ FCB 8,$FF,$01
+ FCB $FF
+*
+*SKULL PICTURE
+*
+SKULP FCB 6,11
+ FDB SKULD
+SKULD EQU *
+ FCB $00,$00,$AA,$A0,$00,$00
+ FCB $00,$0A,$AA,$AA,$00,$00
+ FCB $0A,$0F,$FA,$FF,$0A,$00
+ FCB $AA,$0A,$A0,$AA,$0A,$A0
+ FCB $00,$A0,$AA,$A0,$A0,$00
+ FCB $00,$0A,$0A,$0A,$00,$00
+ FCB $00,$00,$A0,$A0,$00,$00
+ FCB $00,$00,$0A,$00,$00,$00
+ FCB $00,$00,$A0,$A0,$00,$00
+ FCB $00,$AA,$00,$0A,$A0,$00
+ FCB $00,$0A,$00,$0A,$00,$00
+*A NULL PICTURE FOR KICKS
+NULLP FCB 2,2
+ FDB NULLPD
+NULLPD FDB 0,0
+*
+*SCORE PICTS
+*
+P1000 FCB 6,5
+ FDB P1000D
+P2000 FCB 6,5
+ FDB P2000D
+P3000 FCB 6,5
+ FDB P3000D
+P4000 FCB 6,5
+ FDB P4000D
+P5000 FCB 6,5
+ FDB P5000D
+P1000D EQU *
+ FDB $0FF0,$FFFF,$FFF0
+ FDB $00F0,$F0F0,$F0F0
+ FDB $00F0,$F0F0,$F0F0
+ FDB $00F0,$F0F0,$F0F0
+ FDB $0FFF,$FFFF,$FFF0
+P2000D
+ FDB $0FFF,$BBBB,$BBB0
+ FDB $000F,$B0B0,$B0B0
+ FDB $0FFF,$B0B0,$B0B0
+ FDB $0F00,$B0B0,$B0B0
+ FDB $0FFF,$BBBB,$BBB0
+P3000D EQU *
+ FDB $0FFF,$EEEE,$EEE0
+ FDB $000F,$E0E0,$E0E0
+ FDB $0FFF,$E0E0,$E0E0
+ FDB $000F,$E0E0,$E0E0
+ FDB $0FFF,$EEEE,$EEE0
+P4000D EQU *
+ FDB $0F0F,$BBBB,$BBB0
+ FDB $0F0F,$B0B0,$B0B0
+ FDB $0FFF,$B0B0,$B0B0
+ FDB $000F,$B0B0,$B0B0
+ FDB $000F,$BBBB,$BBB0
+P5000D EQU *
+ FDB $0AAA,$EEEE,$EEE0
+ FDB $0A00,$E0E0,$E0E0
+ FDB $0AAA,$E0E0,$E0E0
+ FDB $000A,$E0E0,$E0E0
+ FDB $0AAA,$EEEE,$EEE0
+
+ IFC &A,NOL
+ OPT NOL 
+ ENDIF
+
+*
+*PITCHERS FOR THE MASSES...
+*
+MLP1 FCB 4,14
+ FDB MLD1
+MLP2 FCB 4,14
+ FDB MLD2
+MLP3 FCB 4,14
+ FDB MLD3
+MRP1 FCB 4,14
+ FDB MRD1
+MRP2 FCB 4,14
+ FDB MRD2
+MRP3 FCB 4,14 
+ FDB MRD3
+MDP1 FCB 4,14
+ FDB MDD1
+MDP2 FCB 4,14
+ FDB MDD2
+MDP3 FCB 4,14
+ FDB MDD3
+MUP1 FCB 4,14
+ FDB MUD1
+MUP2 FCB 4,14
+ FDB MUD2
+MUP3 FCB 4,14
+ FDB MUD3
+MLD1 EQU *
+ FDB $0055,$0000
+ FDB $0025,$5000
+ FDB $0062,$5000
+ FDB $0022,$5500
+ FDB $0003,$3000
+ FDB $0034,$3000
+ FDB $0004,$3000
+ FDB $0039,$3000
+ FDB $0333,$3300
+ FDB $0069,$6000
+ FDB $0009,$0000
+ FDB $0009,$0000
+ FDB $0033,$0000
+ FDB $0000,$0000
+MLD2 EQU *
+ FDB $0055,$0000
+ FDB $0025,$5000
+ FDB $0062,$5000
+ FDB $0022,$5500
+ FDB $0003,$3000
+ FDB $0033,$3400
+ FDB $0003,$3400
+ FDB $0933,$3900
+ FDB $6333,$3300
+ FDB $6690,$9000
+ FDB $0900,$9000
+ FDB $0900,$9000
+ FDB $3303,$3000
+ FDB $0000,$0000
+MLD3 EQU *
+ FDB $0055,$0000
+ FDB $0025,$5000
+ FDB $0062,$5000
+ FDB $0022,$5500
+ FDB $0003,$3000
+ FDB $0043,$3400
+ FDB $0443,$3400
+ FDB $0933,$3900
+ FDB $0333,$3360
+ FDB $0090,$9660
+ FDB $0900,$9000
+ FDB $0900,$9000
+ FDB $3303,$3000
+ FDB $0000,$0000
+MRD1 EQU *
+ FDB $0005,$5000
+ FDB $0055,$2000
+ FDB $0052,$6000
+ FDB $0552,$2000
+ FDB $0033,$0000
+ FDB $0034,$3000
+ FDB $0034,$0000 
+ FDB $0039,$3000
+ FDB $0366,$6300
+ FDB $0066,$6000
+ FDB $0009,$0000
+ FDB $0009,$0000
+ FDB $0003,$3000
+ FDB $0000,$0000
+MRD2 EQU *
+ FDB $0005,$5000
+ FDB $0055,$2000
+ FDB $0052,$6000
+ FDB $0552,$2000
+ FDB $0033,$0000
+ FDB $0433,$3000
+ FDB $0433,$0000
+ FDB $0933,$3900
+ FDB $6663,$3300
+ FDB $6660,$9000
+ FDB $0090,$0900
+ FDB $0090,$0900
+ FDB $0033,$0330
+ FDB $0000,$0000
+MRD3 EQU *
+ FDB $0005,$5000
+ FDB $0055,$2000
+ FDB $0052,$6000
+ FDB $0552,$2000
+ FDB $0033,$0000
+ FDB $0033,$4000
+ FDB $0033,$4400
+ FDB $0933,$3900
+ FDB $0333,$6660
+ FDB $0090,$6660
+ FDB $0090,$0900
+ FDB $0090,$0900
+ FDB $0033,$0330
+ FDB $0000,$0000
+MDD1 EQU *
+ FDB $0055,$5000
+ FDB $0522,$2500
+ FDB $0562,$6500
+ FDB $5522,$2550
+ FDB $3333,$3330
+ FDB $4033,$3040
+ FDB $4003,$0040
+ FDB $9033,$3090
+ FDB $6333,$3300
+ FDB $6090,$9000
+ FDB $0090,$9000
+ FDB $0090,$9000
+ FDB $0330,$3300
+ FDB $0000,$0000
+MDD2 EQU *
+ FDB $0055,$5000
+ FDB $0522,$2500
+ FDB $0562,$6500
+ FDB $5522,$2550
+ FDB $3333,$3330
+ FDB $4033,$3040
+ FDB $9003,$0040
+ FDB $6033,$3090
+ FDB $6333,$3300
+ FDB $0090,$9000
+ FDB $0090,$9000
+ FDB $0090,$3300
+ FDB $0030,$0000
+ FDB $0030,$0000
+MDD3 EQU *
+ FDB $0055,$5000
+ FDB $0522,$2500
+ FDB $0562,$6500
+ FDB $5522,$2550
+ FDB $3333,$3330
+ FDB $4033,$3040
+ FDB $4003,$0090
+ FDB $9033,$3000
+ FDB $6333,$3300
+ FDB $6090,$9000
+ FDB $0090,$9000
+ FDB $0330,$9000
+ FDB $0000,$3000
+ FDB $0000,$3000
+MUD1 EQU *
+ FDB $0055,$5000
+ FDB $0555,$5500
+ FDB $0555,$5500
+ FDB $5555,$5550
+ FDB $3333,$3330
+ FDB $4033,$3040
+ FDB $4003,$0040
+ FDB $9033,$3090
+ FDB $0333,$3360
+ FDB $0090,$9060
+ FDB $0090,$9000
+ FDB $0090,$9000
+ FDB $0330,$3300
+ FDB $0000,$0000
+MUD2 EQU *
+ FDB $0055,$5000
+ FDB $0555,$5500
+ FDB $0555,$5500
+ FDB $5555,$5550
+ FDB $3333,$3330
+ FDB $4033,$3040
+ FDB $9003,$0040
+ FDB $0033,$3090
+ FDB $0333,$3360
+ FDB $0090,$9060
+ FDB $0090,$9000
+ FDB $0090,$3300
+ FDB $0090,$0000
+ FDB $0030,$0000
+MUD3 EQU *
+ FDB $0055,$5000
+ FDB $0555,$5500
+ FDB $0555,$5500
+ FDB $5555,$5550
+ FDB $3333,$3330
+ FDB $4033,$3040
+ FDB $4003,$0090
+ FDB $9033,$3060
+ FDB $0333,$3360
+ FDB $0090,$9000
+ FDB $0090,$9000
+ FDB $0330,$9000
+ FDB $0000,$9000
+ FDB $0000,$3000
+DLP1 FCB 5,13
+ FDB DLD1
+DLP2 FCB 5,13
+ FDB DLD2
+DLP3 FCB 5,13
+ FDB DLD3
+DRP1 FCB 5,13
+ FDB DRD1
+DRP2 FCB 5,13
+ FDB DRD2
+DRP3 FCB 5,13
+ FDB DRD3
+DDP1 FCB 5,13
+ FDB DDD1
+DDP2 FCB 5,13
+ FDB DDD2
+DDP3 FCB 5,13
+ FDB DDD3
+DUP1 FCB 5,13
+ FDB DUD1
+DUP2 FCB 5,13
+ FDB DUD2
+DUP3 FCB 5,13
+ FDB DUD3
+DLD1 EQU *
+ FCB $00,$02,$55,$00,$00
+ FCB $00,$09,$25,$00,$00
+ FCB $00,$02,$25,$00,$00
+ FCB $00,$07,$77,$00,$00
+ FCB $00,$07,$77,$00,$00
+ FCB $00,$07,$77,$00,$00
+ FCB $00,$07,$77,$00,$00
+ FCB $00,$07,$27,$00,$00
+ FCB $00,$88,$88,$00,$00
+ FCB $00,$88,$88,$00,$00
+ FCB $00,$88,$88,$00,$00
+ FCB $00,$02,$20,$00,$00
+ FCB $00,$00,$00,$00,$00
+DLD2 EQU *
+ FCB $00,$02,$55,$00,$00
+ FCB $00,$09,$25,$00,$00
+ FCB $00,$02,$25,$00,$00
+ FCB $00,$07,$77,$00,$00
+ FCB $00,$07,$77,$70,$00
+ FCB $00,$07,$77,$70,$00
+ FCB $00,$07,$77,$70,$00
+ FCB $00,$27,$77,$20,$00
+ FCB $00,$07,$88,$88,$00
+ FCB $00,$70,$88,$88,$00
+ FCB $00,$70,$88,$88,$00
+ FCB $02,$20,$22,$00,$00
+ FCB $00,$00,$00,$00,$00
+DLD3 EQU *
+ FCB $00,$02,$55,$00,$00
+ FCB $00,$09,$25,$00,$00
+ FCB $00,$02,$25,$00,$00
+ FCB $00,$07,$77,$00,$00
+ FCB $00,$07,$77,$70,$00
+ FCB $00,$07,$77,$70,$00
+ FCB $00,$77,$77,$70,$00
+ FCB $00,$27,$77,$20,$00
+ FCB $88,$88,$07,$00,$00
+ FCB $88,$88,$07,$00,$00
+ FCB $88,$88,$07,$00,$00
+ FCB $02,$20,$22,$00,$00
+ FCB $00,$00,$00,$00,$00
+DRD1 EQU *
+ FCB $00,$55,$20,$00,$00
+ FCB $00,$52,$90,$00,$00
+ FCB $00,$52,$20,$00,$00
+ FCB $00,$77,$70,$00,$00
+ FCB $00,$77,$70,$00,$00
+ FCB $00,$77,$70,$00,$00
+ FCB $00,$77,$70,$00,$00 
+ FCB $00,$72,$70,$00,$00
+ FCB $00,$87,$88,$00,$00
+ FCB $00,$87,$88,$00,$00 
+ FCB $00,$87,$88,$00,$00
+ FCB $00,$02,$20,$00,$00
+ FCB $00,$00,$00,$00,$00
+DRD2 EQU *
+ FCB $00,$55,$20,$00,$00
+ FCB $00,$52,$90,$00,$00
+ FCB $00,$52,$20,$00,$00
+ FCB $00,$77,$70,$00,$00
+ FCB $07,$77,$70,$00,$00
+ FCB $07,$77,$70,$00,$00 
+ FCB $07,$77,$70,$00,$00 
+ FCB $02,$77,$72,$00,$00
+ FCB $00,$77,$78,$88,$00
+ FCB $00,$70,$87,$88,$00
+ FCB $00,$70,$87,$88,$00
+ FCB $00,$22,$02,$20,$00
+ FCB $00,$00,$00,$00,$00
+DRD3 EQU *
+ FCB $00,$55,$20,$00,$00
+ FCB $00,$52,$90,$00,$00
+ FCB $00,$52,$20,$00,$00
+ FCB $00,$77,$70,$00,$00
+ FCB $07,$77,$70,$00,$00
+ FCB $07,$77,$70,$00,$00 
+ FCB $07,$77,$77,$00,$00 
+ FCB $02,$77,$72,$00,$00
+ FCB $88,$77,$70,$00,$00
+ FCB $88,$78,$07,$00,$00
+ FCB $88,$78,$07,$00,$00
+ FCB $00,$22,$02,$20,$00
+ FCB $00,$00,$00,$00,$00
+DDD1 EQU *
+ FCB $00,$22,$20,$00,$00
+ FCB $00,$92,$90,$00,$00
+ FCB $00,$22,$20,$00,$00
+ FCB $77,$81,$87,$70,$00
+ FCB $77,$71,$77,$70,$00
+ FCB $70,$71,$70,$70,$00
+ FCB $70,$71,$70,$70,$00
+ FCB $20,$77,$70,$20,$00
+ FCB $00,$70,$70,$88,$00
+ FCB $00,$70,$70,$88,$00
+ FCB $00,$70,$70,$88,$00
+ FCB $02,$20,$22,$00,$00
+ FCB $00,$00,$00,$00,$00
+DDD2 EQU *
+ FCB $00,$22,$20,$00,$00
+ FCB $00,$92,$90,$00,$00
+ FCB $00,$22,$20,$00,$00
+ FCB $77,$81,$87,$70,$00
+ FCB $77,$71,$77,$70,$00
+ FCB $70,$71,$70,$70,$00
+ FCB $20,$71,$70,$70,$00
+ FCB $00,$77,$70,$20,$00
+ FCB $00,$70,$70,$88,$00
+ FCB $00,$70,$70,$88,$00
+ FCB $00,$70,$22,$88,$00
+ FCB $00,$20,$00,$00,$00
+ FCB $00,$20,$00,$00,$00
+DDD3 EQU *
+ FCB $00,$22,$20,$00,$00
+ FCB $00,$92,$90,$00,$00
+ FCB $00,$22,$20,$00,$00
+ FCB $77,$81,$87,$70,$00
+ FCB $77,$71,$77,$70,$00
+ FCB $70,$71,$70,$70,$00
+ FCB $70,$71,$70,$20,$00
+ FCB $20,$77,$70,$88,$00
+ FCB $00,$70,$70,$88,$00
+ FCB $00,$70,$70,$88,$00
+ FCB $02,$20,$70,$00,$00
+ FCB $00,$00,$20,$00,$00
+ FCB $00,$00,$20,$00,$00
+DUD1 EQU *
+ FCB $00,$00,$55,$50,$00
+ FCB $00,$00,$55,$50,$00
+ FCB $00,$00,$45,$40,$00
+ FCB $00,$77,$77,$77,$70
+ FCB $00,$77,$77,$77,$70
+ FCB $00,$70,$77,$70,$70
+ FCB $00,$70,$77,$70,$70
+ FCB $00,$20,$77,$70,$20
+ FCB $08,$80,$70,$70,$00
+ FCB $08,$80,$70,$70,$00
+ FCB $08,$80,$70,$70,$00
+ FCB $00,$02,$20,$22,$00
+ FCB $00,$00,$00,$00,$00
+DUD2 EQU *
+ FCB $00,$00,$55,$50,$00
+ FCB $00,$00,$55,$50,$00
+ FCB $00,$00,$45,$40,$00
+ FCB $00,$77,$77,$77,$70
+ FCB $00,$77,$77,$77,$70
+ FCB $00,$70,$77,$70,$70
+ FCB $00,$20,$77,$70,$70
+ FCB $08,$80,$77,$70,$20
+ FCB $08,$80,$70,$70,$00
+ FCB $08,$80,$70,$70,$00
+ FCB $00,$00,$70,$22,$00
+ FCB $00,$00,$70,$00,$00
+ FCB $00,$00,$20,$00,$00
+DUD3 EQU *
+ FCB $00,$00,$55,$50,$00
+ FCB $00,$00,$55,$50,$00
+ FCB $00,$00,$45,$40,$00
+ FCB $00,$77,$77,$77,$70
+ FCB $00,$77,$77,$77,$70
+ FCB $00,$70,$77,$70,$70
+ FCB $00,$70,$77,$70,$20
+ FCB $00,$20,$77,$70,$00
+ FCB $08,$80,$70,$70,$00
+ FCB $08,$80,$70,$70,$00
+ FCB $08,$82,$20,$70,$00
+ FCB $00,$00,$00,$70,$00
+ FCB $00,$00,$00,$20,$00
+KIDLP1 FCB 3,11
+ FDB KIDLD1
+KIDLP2 FCB 3,11
+ FDB KIDLD2
+KIDLP3 FCB 3,11
+ FDB KIDLD3
+KIDRP1 FCB 3,11
+ FDB KIDRD1
+KIDRP2 FCB 3,11 
+ FDB KIDRD2
+KIDRP3 FCB 3,11 
+ FDB KIDRD3
+KIDDP1 FCB 3,11
+ FDB KIDDD1
+KIDDP2 FCB 3,11
+ FDB KIDDD2
+KIDDP3 FCB 3,11
+ FDB KIDDD3
+KIDUP1 FCB 3,11
+ FDB KIDUD1
+KIDUP2 FCB 3,11
+ FDB KIDUD2
+KIDUP3 FCB 3,11
+ FDB KIDUD3
+KIDLD1 EQU *
+ FCB $02,$22,$00
+ FCB $09,$22,$00
+ FCB $02,$22,$00
+ FCB $00,$20,$00
+ FCB $01,$11,$00
+ FCB $01,$91,$00
+ FCB $01,$91,$00 
+ FCB $00,$10,$00
+ FCB $00,$10,$00
+ FCB $09,$90,$00
+ FCB $00,$00,$00 
+KIDLD2 EQU *
+ FCB $02,$22,$00
+ FCB $09,$22,$00
+ FCB $02,$22,$00
+ FCB $00,$20,$00
+ FCB $01,$11,$00
+ FCB $09,$11,$00
+ FCB $90,$10,$90
+ FCB $01,$01,$00
+ FCB $01,$00,$10
+ FCB $99,$09,$90
+ FCB $00,$00,$00
+KIDLD3 EQU * 
+ FCB $02,$22,$00
+ FCB $09,$22,$00
+ FCB $02,$22,$00
+ FCB $00,$20,$00
+ FCB $01,$11,$00
+ FCB $01,$11,$90
+ FCB $90,$10,$90
+ FCB $01,$01,$00
+ FCB $01,$00,$10
+ FCB $99,$09,$90
+ FCB $00,$00,$00
+KIDRD1 EQU *
+ FCB $02,$22,$00
+ FCB $02,$29,$00
+ FCB $02,$22,$00
+ FCB $00,$20,$00
+ FCB $01,$11,$00
+ FCB $01,$91,$00
+ FCB $01,$91,$00
+ FCB $00,$10,$00
+ FCB $00,$10,$00
+ FCB $00,$99,$00
+ FCB $00,$00,$00
+KIDRD2 EQU *
+ FCB $02,$22,$00
+ FCB $02,$29,$00
+ FCB $02,$22,$00
+ FCB $00,$20,$00
+ FCB $01,$11,$00
+ FCB $91,$11,$00
+ FCB $90,$10,$90
+ FCB $01,$01,$00
+ FCB $10,$01,$00
+ FCB $99,$09,$90
+ FCB $00,$00,$00
+KIDRD3 EQU *
+ FCB $02,$22,$00
+ FCB $02,$29,$00
+ FCB $02,$22,$00
+ FCB $00,$20,$00
+ FCB $01,$11,$00
+ FCB $01,$19,$00
+ FCB $90,$10,$90
+ FCB $01,$01,$00
+ FCB $10,$01,$00
+ FCB $99,$09,$90
+ FCB $00,$00,$00
+KIDDD1 EQU *
+ FCB $02,$22,$00
+ FCB $09,$29,$00
+ FCB $02,$92,$00
+ FCB $00,$20,$00
+ FCB $11,$11,$10
+ FCB $91,$11,$90
+ FCB $91,$11,$90
+ FCB $01,$01,$00
+ FCB $01,$01,$00
+ FCB $99,$09,$90
+ FCB $00,$00,$00
+KIDDD2 EQU *
+ FCB $02,$22,$00
+ FCB $09,$29,$00
+ FCB $02,$92,$00
+ FCB $00,$20,$00
+ FCB $91,$11,$10
+ FCB $91,$11,$90
+ FCB $01,$11,$90
+ FCB $01,$01,$00
+ FCB $01,$09,$90
+ FCB $01,$00,$00
+ FCB $99,$00,$00
+KIDDD3 EQU *
+ FCB $02,$22,$00
+ FCB $09,$29,$00
+ FCB $02,$92,$00
+ FCB $00,$20,$00
+ FCB $11,$11,$90
+ FCB $91,$11,$90
+ FCB $91,$11,$00
+ FCB $01,$01,$00
+ FCB $99,$01,$00
+ FCB $00,$01,$00
+ FCB $00,$09,$90
+KIDUD1 EQU *
+ FCB $02,$22,$00
+ FCB $02,$22,$00
+ FCB $02,$22,$00
+ FCB $00,$20,$00
+ FCB $11,$11,$10
+ FCB $91,$11,$90
+ FCB $91,$11,$90
+ FCB $01,$01,$00
+ FCB $01,$01,$00
+ FCB $99,$09,$90
+ FCB $00,$00,$00
+KIDUD2 EQU *
+ FCB $02,$22,$00
+ FCB $02,$22,$00
+ FCB $02,$22,$00
+ FCB $00,$20,$00
+ FCB $91,$11,$10
+ FCB $91,$11,$90
+ FCB $01,$11,$90
+ FCB $01,$01,$00
+ FCB $01,$09,$90
+ FCB $01,$00,$00
+ FCB $99,$00,$00
+KIDUD3 EQU *
+ FCB $02,$22,$00
+ FCB $02,$22,$00
+ FCB $02,$22,$00
+ FCB $00,$20,$00
+ FCB $11,$11,$90
+ FCB $91,$11,$90
+ FCB $91,$11,$00
+ FCB $01,$01,$00
+ FCB $99,$01,$00
+ FCB $00,$01,$00
+ FCB $00,$09,$90
+BRLP1 FCB 7,16
+HLKLP1 FCB 7,16
+ FDB HLKLD1
+HLKLP2 FCB 7,16
+ FDB HLKLD2
+HLKLP3 FCB 7,16
+ FDB HLKLD3
+HLKRP1 FCB 7,16
+ FDB HLKRD1
+HLKRP2 FCB 7,16 
+ FDB HLKRD2
+HLKRP3 FCB 7,16 
+ FDB HLKRD3
+HLKDP1 FCB 7,16
+ FDB HLKDD1
+HLKDP2 FCB 7,16
+ FDB HLKDD2
+HLKDP3 FCB 7,16
+ FDB HLKDD3
+HLKLD1 EQU *  
+ FCB $00,$00,$0B,$BB,$00,$00,$00
+ FCB $00,$00,$00,$10,$00,$00,$00
+ FCB $00,$00,$00,$10,$00,$00,$00
+ FCB $00,$06,$66,$AA,$66,$00,$00
+ FCB $00,$06,$66,$AA,$66,$00,$00
+ FCB $00,$06,$66,$AA,$66,$00,$00
+ FCB $00,$06,$66,$AA,$66,$00,$00
+ FCB $00,$06,$66,$AA,$66,$00,$00
+ FCB $00,$06,$66,$AA,$66,$00,$00
+ FCB $00,$06,$6A,$AA,$66,$00,$00
+ FCB $00,$00,$00,$11,$00,$00,$00
+ FCB $00,$00,$00,$11,$00,$00,$00 
+ FCB $00,$00,$00,$11,$00,$00,$00
+ FCB $00,$00,$11,$11,$00,$00,$00
+ FCB $00,$00,$00,$00,$00,$00,$00
+ FCB $00,$00,$00,$00,$00,$00,$00
+HLKLD2 EQU *
+ FCB $00,$00,$0B,$BB,$00,$00,$00
+ FCB $00,$00,$00,$10,$00,$00,$00
+ FCB $00,$00,$00,$10,$00,$00,$00 
+ FCB $00,$06,$66,$AA,$66,$00,$00
+ FCB $00,$06,$66,$AA,$A6,$00,$00
+ FCB $00,$06,$66,$6A,$AA,$00,$00
+ FCB $00,$06,$66,$66,$AA,$A0,$00
+ FCB $00,$A6,$66,$66,$6A,$A0,$00
+ FCB $0A,$A6,$66,$66,$A6,$00,$00
+ FCB $00,$06,$66,$66,$66,$00,$00
+ FCB $00,$00,$11,$01,$10,$00,$00
+ FCB $10,$01,$10,$00,$11,$10,$00
+ FCB $01,$11,$00,$00,$00,$11,$00
+ FCB $00,$10,$00,$00,$11,$10,$00
+ FCB $00,$00,$00,$00,$00,$00,$00
+ FCB $00,$00,$00,$00,$00,$00,$00
+HLKLD3 EQU *
+ FCB $00,$00,$0B,$BB,$00,$00,$00
+ FCB $00,$00,$00,$10,$00,$00,$00
+ FCB $00,$00,$00,$10,$00,$00,$00 
+ FCB $00,$06,$66,$AA,$66,$00,$00
+ FCB $00,$06,$6A,$AA,$66,$00,$00
+ FCB $00,$06,$AA,$A6,$66,$00,$00
+ FCB $00,$0A,$AA,$66,$66,$00,$00
+ FCB $A0,$AA,$A6,$66,$66,$A0,$00
+ FCB $0A,$A6,$66,$66,$66,$AA,$00
+ FCB $00,$06,$66,$66,$66,$00,$00
+ FCB $00,$00,$11,$01,$10,$00,$00
+ FCB $10,$01,$10,$00,$11,$10,$00
+ FCB $01,$11,$00,$00,$00,$11,$00
+ FCB $00,$10,$00,$00,$11,$10,$00
+ FCB $00,$00,$00,$00,$00,$00,$00
+ FCB $00,$00,$00,$00,$00,$00,$00
+HLKDD1 EQU *
+ FCB $00,$00,$0B,$BB,$00,$00,$00
+ FCB $00,$00,$00,$10,$00,$00,$00
+ FCB $00,$00,$00,$10,$00,$00,$00
+ FCB $AA,$A6,$66,$66,$66,$AA,$A0
+ FCB $AA,$A6,$66,$66,$66,$AA,$A0
+ FCB $AA,$06,$66,$66,$66,$0A,$A0
+ FCB $AA,$06,$66,$66,$66,$0A,$A0
+ FCB $AA,$06,$66,$66,$66,$0A,$A0
+ FCB $AA,$A6,$66,$66,$66,$AA,$A0
+ FCB $A0,$A6,$66,$66,$66,$A0,$A0
+ FCB $A0,$A0,$11,$01,$10,$A0,$A0
+ FCB $00,$00,$11,$01,$10,$00,$00
+ FCB $00,$00,$11,$01,$10,$00,$00
+ FCB $00,$11,$11,$01,$11,$10,$00 
+ FCB $00,$00,$00,$00,$00,$00,$00
+ FCB $00,$00,$00,$00,$00,$00,$00
+HLKDD2 EQU *
+ FCB $00,$00,$0B,$BB,$00,$00,$00
+ FCB $00,$00,$00,$10,$00,$00,$00
+ FCB $00,$00,$00,$10,$00,$00,$00
+ FCB $AA,$A6,$66,$66,$66,$AA,$A0
+ FCB $AA,$A6,$66,$66,$66,$AA,$A0
+ FCB $AA,$06,$66,$66,$66,$0A,$A0
+ FCB $AA,$06,$66,$66,$66,$0A,$A0
+ FCB $AA,$06,$66,$66,$66,$0A,$A0
+ FCB $AA,$A6,$66,$66,$66,$AA,$A0
+ FCB $A0,$A6,$66,$66,$66,$A0,$A0
+ FCB $A0,$A0,$11,$01,$10,$A0,$A0
+ FCB $00,$11,$11,$01,$10,$00,$00
+ FCB $00,$00,$00,$01,$10,$00,$00
+ FCB $00,$00,$00,$01,$10,$00,$00 
+ FCB $00,$00,$00,$01,$10,$00,$00
+ FCB $00,$00,$00,$01,$11,$10,$00
+HLKDD3 EQU *
+ FCB $00,$00,$0B,$BB,$00,$00,$00
+ FCB $00,$00,$00,$10,$00,$00,$00
+ FCB $00,$00,$00,$10,$00,$00,$00
+ FCB $AA,$A6,$66,$66,$66,$AA,$A0
+ FCB $AA,$A6,$66,$66,$66,$AA,$A0
+ FCB $AA,$06,$66,$66,$66,$0A,$A0
+ FCB $AA,$06,$66,$66,$66,$0A,$A0
+ FCB $AA,$06,$66,$66,$66,$0A,$A0
+ FCB $AA,$A6,$66,$66,$66,$AA,$A0
+ FCB $A0,$A6,$66,$66,$66,$A0,$A0
+ FCB $A0,$A0,$11,$01,$10,$A0,$A0
+ FCB $00,$00,$11,$01,$11,$10,$00
+ FCB $00,$00,$11,$00,$00,$00,$00
+ FCB $00,$00,$11,$00,$00,$00,$00 
+ FCB $00,$00,$11,$00,$00,$00,$00
+ FCB $00,$11,$11,$00,$00,$00,$00
+HLKRD1 EQU *
+ FCB $00,$00,$BB,$B0,$00,$00,$00
+ FCB $00,$00,$01,$00,$00,$00,$00
+ FCB $00,$00,$01,$00,$00,$00,$00
+ FCB $00,$66,$AA,$66,$60,$00,$00
+ FCB $00,$66,$AA,$66,$60,$00,$00
+ FCB $00,$66,$AA,$66,$60,$00,$00
+ FCB $00,$66,$AA,$66,$60,$00,$00
+ FCB $00,$66,$AA,$66,$60,$00,$00
+ FCB $00,$66,$AA,$66,$60,$00,$00 
+ FCB $00,$66,$AA,$A6,$60,$00,$00 
+ FCB $00,$00,$11,$00,$00,$00,$00
+ FCB $00,$00,$11,$00,$00,$00,$00
+ FCB $00,$00,$11,$00,$00,$00,$00
+ FCB $00,$00,$11,$11,$00,$00,$00
+ FCB $00,$00,$00,$00,$00,$00,$00
+ FCB $00,$00,$00,$00,$00,$00,$00
+HLKRD2 EQU *
+ FCB $00,$00,$BB,$B0,$00,$00,$00
+ FCB $00,$00,$01,$00,$00,$00,$00
+ FCB $00,$00,$01,$00,$00,$00,$00
+ FCB $00,$66,$AA,$66,$60,$00,$00
+ FCB $00,$6A,$AA,$66,$60,$00,$00
+ FCB $00,$AA,$A6,$66,$60,$00,$00
+ FCB $0A,$AA,$66,$66,$60,$00,$00
+ FCB $0A,$A6,$66,$66,$6A,$00,$00
+ FCB $00,$6A,$66,$66,$6A,$A0,$00 
+ FCB $00,$66,$66,$66,$60,$00,$00 
+ FCB $00,$01,$10,$11,$00,$00,$00
+ FCB $01,$11,$00,$01,$10,$01,$00
+ FCB $11,$00,$00,$00,$11,$10,$00
+ FCB $01,$11,$00,$00,$01,$00,$00
+ FCB $00,$00,$00,$00,$00,$00,$00
+ FCB $00,$00,$00,$00,$00,$00,$00
+HLKRD3 EQU *
+ FCB $00,$00,$BB,$B0,$00,$00,$00
+ FCB $00,$00,$01,$00,$00,$00,$00
+ FCB $00,$00,$01,$00,$00,$00,$00
+ FCB $00,$66,$AA,$66,$60,$00,$00
+ FCB $00,$66,$AA,$A6,$60,$00,$00
+ FCB $00,$66,$6A,$AA,$60,$00,$00
+ FCB $00,$66,$66,$AA,$A0,$A0,$00
+ FCB $0A,$66,$66,$6A,$AA,$00,$00
+ FCB $AA,$66,$66,$66,$60,$00,$00 
+ FCB $00,$66,$66,$66,$60,$00,$00 
+ FCB $00,$01,$10,$11,$00,$00,$00
+ FCB $01,$11,$00,$01,$10,$01,$00
+ FCB $11,$00,$00,$00,$11,$10,$00
+ FCB $01,$11,$00,$00,$01,$00,$00
+ FCB $00,$00,$00,$00,$00,$00,$00
+ FCB $00,$00,$00,$00,$00,$00,$00
+ END
diff --git a/RRHX4.ASM b/RRHX4.ASM
new file mode 100755 (executable)
index 0000000..2bc5623
--- /dev/null
+++ b/RRHX4.ASM
@@ -0,0 +1,740 @@
+ STTL HORIZ EXPLODES
+*
+*INIT DMASIZ EXPLOSION DATA STRUCTURE
+*
+HXINV  PSHS   X,D    
+       LDX    #EX      FIRST
+       STX    EXFREE
+EXIN0  LEAX   EXSIZE,X FIND NEXT
+       STX    -EXSIZE,X  STORE
+       CMPX   #EXEND-EXSIZE       BLO    EXIN0
+EXIN1  LDD    #0
+       STD    ,X
+       STD    EXPTR
+       STD    APPTR
+       PULS   X,D,PC
+*
+*GET A DATA BLOCK IN U  FOR EXPLOSIONS
+*
+GETBLK PSHS   X
+       LDU    EXFREE
+       BEQ    NOBLK          NONE
+       LDX    ,U             GET NEXT
+       STX    EXFREE
+       LDX    EXPTR          GET LIST
+       STX    ,U             APPEND US
+       STU    EXPTR
+       CLC
+       PULS   X,PC           RETURN IN U
+NOBLK  SEC
+       PULS   X,PC    
+*
+*GET AN APPEAR BLOCK
+*
+GETAP  PSHS   X
+       LDU    EXFREE
+       BEQ    NOBLK
+       LDX    ,U
+       STX    EXFREE
+       LDX    APPTR
+       STX    ,U
+       STU    APPTR
+       CLC
+       PULS   X,PC
+*
+*START A DMASIZ APPEAR X=OBJECT
+*
+HAPSTV PSHS   X,U,D,Y    
+       JSR    GETAP         GET A BLOCK TO USE
+       BCS    APBYE
+       LDD    OBJX,X
+       LDX    OPICT,X
+       STD    UL,U          STORE UPPER LEFT (FIRST FRAME)
+       LDB    CENTMP
+       STB    XCENT,U
+       SUBB   UL,U          SUBTRACT X UPPER LEFT
+       BCS    NWCEAP        NO GOOD
+       CMPB   0,X           COMPARE 
+       BLO    APNTOK
+NWCEAP LDB    ,X            GET WIDTH
+       STB    XOF,U         SAVE OFFSET
+       ADDB   UL,U          ADD TOP         
+       STB    XCENT,U       THIS IS 
+       BRA    CCONTA
+APNTOK ASLB                 DOUBLE CENTER FOR BYTE ADJUSTMENT
+       STB    XOF,U
+CCONTA LDD    #$4646         SUPRESS LOW GUYS, SLOW, ZERO SUPRESS, SER-BLK
+       STD    DMACNT,U
+       LDD    ,X            FETCH H,W
+       STD    WH,U          SAVE
+       LDA    #1            ONLY ERASE 1 ROW FIRST TIME THROUGH
+       STA    XHITE,U       HITE FOR FIRST ERASE
+       EORA   #$4
+       EORB   #$4
+       STD    DMAWH,U        FORMED
+       LDX    2,X            GET DATA POINTER
+       STX    PICPTR,U       SAVE OBJECT DESC
+       LDD    #$1000         1ST FRAME SIZE
+       STD    XSIZER,U
+
+DMOVE  LEAX   DATA-1,U   LET X POINT AT DATA STORAGE AREA
+       STX    TEMP1    SAVE POINTER
+       LDY    PICPTR,U U POINTS AT DATA
+       LDB    WH+1,U   ITERATE OVER THE HEIGHT
+       STB    TEMP2+1
+HSET2  LDX    TEMP1    GET SAVED POINTER
+       LEAX   1,X      MOVE TO NEXT LOCATION
+       STX    TEMP1    AND SAVE
+       LDA    WH,U     GET WIDTH
+       STA    TEMP2    SAVE AS COUNTER
+HSET1  LDA    ,Y+      GET A BYTE                6
+       STA    ,X       STORE                     5
+       ABX             ADD HEIGHT TO GET TO NEXT 4
+       ASLA                                      2
+       ASLA                                      2
+       ASLA                                      2
+       ASLA                                      2
+       STA    ,X                                 5
+       ABX                                       4
+       DEC    TEMP2                              6
+       BNE    HSET1                              3    
+       DEC    TEMP2+1  1 LESS ROW    
+       BNE    HSET2
+APBYE  CLC
+       PULS   X,D,U,PC,Y
+*
+*START A DMASIZ EXPLOSION
+*X=OBJ
+HEXSTV PSHS   X,U,D,Y   
+       JSR    DMAOFF
+       JSR    GETBLK        GET A BLOCK TO USE
+       BCS    APBYE         DONE...NO BLOCKS
+       LDD    OBJX,X
+       LDX    OPICT,X
+       STD    UL,U          STORE UPPER LEFT (FIRST FRAME)
+       LDB    CENTMP
+       STB    XCENT,U
+       SUBB   UL,U          SUBTRACT X UPPER LEFT
+       BCS    NWCENT        NO GOOD
+       CMPB   0,X           COMPARE 
+       BLO    CENTOK
+NWCENT LDB    ,X            GET WIDTH
+       STB    XOF,U         SAVE OFFSET
+       ADDB   UL,U          ADD TOP         
+       STB    XCENT,U       THIS IS 
+       BRA    CCONT 
+CENTOK ASLB                 DOUBLE CENTER FOR BYTE ADJUSTMENT
+       STB    XOF,U
+CCONT  LDD    #$4646         SUPRESS UPPER, SLOW, SUPRESS, SER TO BLOCK
+       STD    DMACNT,U       THIS IS DMA CONTROL BYTE
+       LDD    ,X            FETCH H,W
+       STD    WH,U          SAVE
+       ASLA                  DOUBLE WIDTH FOR HEIGHT TO USE
+       STA    XHITE,U       HITE FOR FIRST ERASE
+       LDA    #1            HEIGHT IS 1 FOR DMA 
+       EORA   #$4
+       EORB   #$4
+       STD    DMAWH,U        FORMED
+       LDX    2,X            GET DATA POINTER
+       STX    PICPTR,U       SAVE OBJECT DESC
+       LDD    #$0            1ST FRAME MIN
+       STD    XSIZER,U
+       LDA    #$10           NUMBER OF FRAMES LEFT
+       STA    FRAMES,U
+       BRA    DMOVE
+
+*      THIS CODE DMA'S THE DMASIZONTAL LINES
+*      A JUMP INTO HERE IS MADE BASED ON NUMBER OF
+*      VERTICAL LINES IN OBJECT
+
+BSLOOP STA    ,Y           Y FOR CURRENT TRANSFER
+       STX    DMAORG           DATA POINTER
+       STU    DMACTL       DO THE LINE
+       ABX                   NEXT DMAORG
+       ADDA   XSIZE          ADD SPACING
+BSSIZE EQU    *-BSLOOP
+
+       STA    ,Y
+       STX    DMAORG
+       STU    DMACTL
+       ABX
+       ADDA   XSIZE
+
+       STA    ,Y
+       STX    DMAORG
+       STU    DMACTL
+       ABX
+       ADDA   XSIZE
+
+       STA    ,Y
+       STX    DMAORG
+       STU    DMACTL
+       ABX
+       ADDA   XSIZE
+
+       STA    ,Y
+       STX    DMAORG
+       STU    DMACTL
+       ABX
+       ADDA   XSIZE
+
+       STA    ,Y
+       STX    DMAORG
+       STU    DMACTL
+       ABX
+       ADDA   XSIZE
+
+       STA    ,Y
+       STX    DMAORG
+       STU    DMACTL
+       ABX
+       ADDA   XSIZE
+
+       STA    ,Y
+       STX    DMAORG
+       STU    DMACTL
+       ABX
+       ADDA   XSIZE
+
+       STA    ,Y
+       STX    DMAORG
+       STU    DMACTL
+       ABX
+       ADDA   XSIZE
+
+       STA    ,Y
+       STX    DMAORG
+       STU    DMACTL
+       ABX
+       ADDA   XSIZE
+
+       STA    ,Y
+       STX    DMAORG
+       STU    DMACTL
+       ABX
+       ADDA   XSIZE
+
+       STA    ,Y
+       STX    DMAORG
+       STU    DMACTL
+       ABX
+       ADDA   XSIZE
+
+       STA    ,Y
+       STX    DMAORG
+       STU    DMACTL
+       ABX
+       ADDA   XSIZE
+
+       STA    ,Y
+       STX    DMAORG
+       STU    DMACTL
+       ABX
+       ADDA   XSIZE
+
+       STA    ,Y
+       STX    DMAORG
+       STU    DMACTL
+       ABX
+       ADDA   XSIZE
+
+       STA    ,Y
+       STX    DMAORG
+       STU    DMACTL
+       CLI
+       PULS   Y,PC
+
+ERLOOP STA    ,U         PUT HEIGHT TO ERASE DOWN
+       STB    ,X         ERASE PLEASE
+       ADDA   XSIZE
+ERSIZ  EQU    *-ERLOOP
+
+       STA    ,U
+       STB    ,X
+       ADDA   XSIZE
+
+       STA    ,U
+       STB    ,X
+       ADDA   XSIZE
+
+       STA    ,U
+       STB    ,X
+       ADDA   XSIZE
+
+       STA    ,U
+       STB    ,X
+       ADDA   XSIZE
+
+       STA    ,U
+       STB    ,X
+       ADDA   XSIZE
+
+       STA    ,U
+       STB    ,X
+       ADDA   XSIZE
+
+       STA    ,U
+       STB    ,X
+       ADDA   XSIZE
+
+       STA    ,U
+       STB    ,X
+       ADDA   XSIZE
+
+       STA    ,U
+       STB    ,X
+       ADDA   XSIZE
+
+       STA    ,U
+       STB    ,X
+       ADDA   XSIZE
+
+       STA    ,U
+       STB    ,X
+       ADDA   XSIZE
+
+       STA    ,U
+       STB    ,X
+       ADDA   XSIZE
+
+       STA    ,U
+       STB    ,X
+       ADDA   XSIZE
+
+       STA    ,U
+       STB    ,X
+       ADDA   XSIZE
+
+       STA    ,U
+       STB    ,X
+       CLI
+       RTS
+*
+*ERASE AN EXPLOSION
+*Y=DATA BLOCK
+*
+ERASE  LDB    XHITE,Y        ACTUALLY PLOTTED
+       SUBB   #16            MAX OF 16
+       NEGB
+       LDA    #ERSIZ
+       MUL
+       LDX    #ERLOOP        START OF LOOP
+       ABX
+       PSHS   X              PLACE TO JUMP
+
+       LDA    XSIZER,Y
+       STA    XSIZE
+
+       LDD    UL,Y         GET UPPER LEFT
+       SEI
+       STB    DMADES+1         HIGH HALF OF SCREEN STUFF
+
+       LDB    DMACNT,Y       SUPRESS HIGH, DMACONANT, SLOW, BLOCK DMADES
+       ORAB   #$10           ERASE
+       ANDB   #$F7           NO SUPRESS
+
+       LDU    #0
+       STU    DMACON          CONSTANT, AND HIGH HALF OF DMAORG
+       STB    DMAORG+1         LOW HALF OF ORIG
+
+       LDU    DMAWH,Y
+       STU    DMASIZ
+
+       LDU    #DMADES
+       LDX    #DMACTL
+
+       RTS
+*
+*KILL AN EXPLOSION,APPEAR
+*Y=DATA BLOCK
+*
+KILEXP LDU    #EXPTR         LETS WALK LIST TO FIND HIM
+KILEX2 CMPY   ,U             ARE WE SET
+       BEQ    KILEX1         YEP
+       LDU    ,U             KEEP WALKING
+       BNE    KILEX2         STILL STUFF THERE
+       SEI
+       BRA    *              ERROR TRAP
+KILEX1 LDD    ,Y             GET GUY WE POINT AT
+       STD    ,U             POINT AROUND US
+       LDD    EXFREE
+       STD    ,Y             APPEND FREE LIST
+       STY    EXFREE
+       LEAY   ,U             RETURN GUY BEFORE US TO WALK FROM
+       RTS
+*
+*WRITE APPEARS
+*Y=BLOCK
+AWRITE LDD XSIZER,Y
+ SUBD #$80
+ CMPA XSIZER,Y ANY CHANGE?
+ BNE AWRIT0 YIP.
+ STB XSIZER+1,Y
+ RTS
+AWRIT0 JSR ERASE ERASE THE COCK-SUCKER
+ LDA STATUS SCROLL?
+ BNE AWRIT1
+ LDB PX+1 SCROLL PLAYER APPEAR
+ STB UL+1,Y
+ LDB XOF,Y
+ LSRB
+ ADDB PX
+ STB XCENT,Y
+AWRIT1 LDA    WH,Y           GET WIDTH
+       ASLA                  DOUBLE FOR PIXEL WIDTH
+       DECA                  NO NEED TO DO END COLUMN
+       STA    WIDE
+
+       LDD    XSIZER,Y       GET SIZE  
+       SUBD   #$080          SMALLEN IT
+       TSTA     
+       BHI   APGO
+       LDU    #APPTR
+       JMP    KILEX2
+*
+*WRITE EXPLOSION
+*Y=DATA BLOCK
+*
+WRITE  DEC    FRAMES,Y       ONE LESS FRAME
+       BEQ    KILEXP         DONE
+
+       LDA    WH,Y   GET WIDTH 
+       ASLA          DOUBLE FOR PIXEL WIDTH
+       DECA            NO NEED TO DO ZEROS ON LEFT COLUMN
+       STA    WIDE
+
+       LDD    XSIZER,Y
+       ADDD   #$100 
+APGO   STD    XSIZER,Y
+       STA    XSIZE
+
+       LSRA            1/2 AND SAVE
+       LDB    XOF,Y    GET OFFSET
+       BNE    APGO1    OBSCURE BUG CHECK (NO 1/2 UNIT FROM TOP)
+       CLRA
+APGO1  STA    TEMP2
+
+       LEAX   DATA,Y       POINT AT THE DATA
+
+       LDA    XSIZE
+       LDB    XOF,Y          GET OFFSET
+       MUL                   DISTANCE UP FROM CENTER
+
+
+       STD    TEMP1          SAVE
+       LDB    XCENT,Y        GET CENTER
+       CLRA
+       SUBD   TEMP1          LETS BE GENERAL PURPOSE
+       ADDB   TEMP2          ADD 1/2 SIZE
+       ADCA   #0             AND PROPAGATE
+       BNE    CHK2
+       CMPB   #XMIN
+       BHI    CHK3     WERE OK
+CHK2   DEC    WIDE
+       ADDB   XSIZE
+       ADCA   #0
+       BNE    CHK2
+CHK1   CMPB   #XMIN
+       BLS    CHK2
+       STB    UL,Y         STORE IN PLACE
+       LDD    WH,Y     FIND OFFSET
+       SUBA   WIDE
+       MUL
+       ABX
+       BRA    CHK3A
+CHK3   STB    UL,Y
+CHK3A  LDA    WIDE
+       DECA
+       LDB    XSIZE          FIND FILL DEFLECTION
+       MUL
+       ADDB   UL,Y           ADD FIRST POINT
+       ADCA   #0             FIND FULL DEFLECTION
+       BEQ    CHK4           AOK
+CHK5   DEC    WIDE           1 LESS
+       SUBB   XSIZE          1 LESS DOWNWARD
+       SBCA   #0
+       BNE    CHK5
+CHK4   CMPB   #XMAX
+       BHS    CHK5
+
+*      FIND "LOOP" ENTRY
+
+       LDA    WIDE           GET HEIGHT
+       LBEQ   KILEXP
+       STA    XHITE,Y        SAVE FOR ERASE
+       SUBA   #16            16 = 0 OFFSET, 0 = 16 OFFSET
+       NEGA
+       LDB    #BSSIZE        SIZE OF ITERATION
+       MUL
+       ADDD   #BSLOOP        BEGINNING
+       PSHS   D,Y
+
+       LDU    DMACNT,Y       SUPRESS HIGH NIB, SLOW, SUPRESS, SER TO BLOCK
+       LDD    DMAWH,Y        GET WH
+
+       SEI                   NO INTS BABY
+       STD    DMASIZ
+       LDA    UL+1,Y         GET Y OF DMADESINATION 
+       STA    DMADES+1
+
+       LDB    WH+1,Y      GET INITIAL Y HEIGHT (AMOUNT TO ADD TO SOURCE PTR)
+       LDA    UL,Y        GET X WIDTH AT START   
+
+       LDY    #DMADES     PLACE TO STOE STUFF
+
+       RTS                   JUMP INTO IT
+*EXPLOSION APPEAR UPDATE
+*
+HXUPDV LDY EXPTR
+ BEQ APUPD
+HXUPDL JSR ERASE
+ JSR WRITE
+ LDY ,Y
+ BNE HXUPDL
+APUPD LDY APPTR
+ BEQ APUPDX
+APUPDL JSR AWRITE
+ LDY ,Y
+ BNE APUPDL
+APUPDX RTS
+
+REPEAT EQU    $C0
+ENDLET EQU    $A0
+ENDCOL EQU    $90
+
+ON     EQU    $40      INDICATE COLOR IS ON
+ON2    EQU    $20      COLOR 2 ON
+
+L2V    FCB    23       1
+       FCB    1+ON2    COLOR 2
+       FCB    ENDCOL
+
+       FCB    13       2
+       FCB    1+ON2
+       FCB    8
+       FCB    2+ON2
+       FCB    ENDCOL
+
+       FCB    12       3
+       FCB    2+ON2
+       FCB    7
+       FCB    1+ON2
+       FCB    1+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    11       4
+       FCB    1+ON2
+       FCB    1+ON
+       FCB    1+ON2
+       FCB    6
+       FCB    1+ON2
+       FCB    2+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    10       5
+       FCB    1+ON2
+       FCB    2+ON
+       FCB    1+ON2
+       FCB    5
+       FCB    1+ON2
+       FCB    3+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    9        6
+       FCB    ON2+1
+       FCB    3+ON
+       FCB    1+ON2
+       FCB    4
+       FCB    1+ON2
+       FCB    4+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    8        7
+       FCB    1+ON2
+       FCB    4+ON
+       FCB    1+ON2
+       FCB    3
+       FCB    1+ON2
+       FCB    5+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    8        8
+       FCB    1+ON2
+       FCB    4+ON
+       FCB    1+ON2
+       FCB    2
+       FCB    1+ON2
+       FCB    6+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    8        9
+       FCB    1+ON2
+       FCB    4+ON
+       FCB    1+ON2
+       FCB    1
+       FCB    1+ON2
+       FCB    3+ON
+       FCB    1+ON2
+       FCB    3+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    8        10
+       FCB    1+ON2
+       FCB    3+ON
+       FCB    1+ON2
+       FCB    1
+       FCB    1+ON2
+       FCB    3+ON
+       FCB    2+ON2
+       FCB    3+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    8        11
+       FCB    1+ON2
+       FCB    3+ON
+       FCB    1+ON2
+       FCB    1
+       FCB    1+ON2
+       FCB    2+ON
+       FCB    1+ON2
+       FCB    1
+       FCB    1+ON2
+       FCB    3+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    REPEAT+4  12,13,14,15
+
+       FCB    8        16
+       FCB    1+ON2
+       FCB    3+ON
+       FCB    3+ON2
+       FCB    2+ON
+       FCB    1+ON2
+       FCB    1
+       FCB    1+ON2
+       FCB    3+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    8        17
+       FCB    1+ON2
+       FCB    8+ON
+       FCB    1+ON2
+       FCB    1
+       FCB    1+ON2
+       FCB    3+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    REPEAT+2 18,19
+
+       FCB    8        20
+       FCB    10+ON2
+       FCB    1
+       FCB    1+ON2
+       FCB    3+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    18       21
+       FCB    1+ON2
+       FCB    4+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    REPEAT+3  22,23,24
+
+       FCB    ENDLET              END OF THE 2 (ROUGHLY)
+
+L0V    FCB    11       1
+       FCB    8+ON2
+       FCB    4+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    10       2
+       FCB    1+ON2
+       FCB    10+ON
+       FCB    3+ON2
+       FCB    ENDCOL
+
+       FCB    9        3
+       FCB    1+ON2
+       FCB    11+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    8        4
+       FCB    1+ON2
+       FCB    13+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    7        5
+       FCB    1+ON2
+       FCB    4+ON
+       FCB    7+ON2
+       FCB    4+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    6        6
+       FCB    1+ON2
+       FCB    4+ON
+       FCB    1+ON2
+       FCB    7
+       FCB    1+ON2
+       FCB    4+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    5        7
+       FCB    1+ON2
+       FCB    4+ON
+       FCB    1+ON2
+       FCB    9
+       FCB    1+ON2
+       FCB    4+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    4        8
+       FCB    1+ON2
+       FCB    4+ON
+       FCB    13+ON2
+       FCB    4+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    3        9
+       FCB    1+ON2
+       FCB    23+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    2        10
+       FCB    1+ON2
+       FCB    25+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    1        11
+       FCB    1+ON2
+       FCB    27+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    31+ON2   12 
+       FCB    ENDCOL
+
+       FCB    ENDLET
diff --git a/RRLOG.ASM b/RRLOG.ASM
new file mode 100755 (executable)
index 0000000..3a4b348
--- /dev/null
+++ b/RRLOG.ASM
@@ -0,0 +1,591 @@
+       OPT    NOL                                   
+       LIB    RRFRED
+
+       IFNC   &A,NOL
+       OPT    LIS
+       ENDIF
+
+WSTART EQU    $183A
+
+RAPRAM EQU    OLIST+(18*OSIZE)    LEAVE 18 OBJECTS FOR APPEARS
+
+       ORG    0                   OFFSETS
+O1PT   RMB    4                   TOP OBJECT POINTER
+O2PT   RMB    4                   BOTTOM OBJECT POINTER
+APADD  RMB    2                   ADRESS TO EXPAND
+DATA1  RMB    14*11               DATA FOR FIRST OBJECT
+DATA2  RMB    13*11               DATA FOR SECOND OBJECT
+RAPSIZ EQU    *
+
+       ORG    LOGORG 
+
+       JMP    LOGGER
+       FDB    COLC
+
+LOGGER JSR    GNCIDE
+       CLR    ATFLAG         NO COIN SEEN YET
+       MAKP   CCHECK         MONITOR CREDITS
+       LDX    #LOGG1         LOOK....UP IN THE SKY....
+       CLRA                       ITS A BIRD......ITS A PLANE....NO,
+       JSR    MSPROC                      ITS  S U P E R P R O C E S S !
+       JMP    SUCIDE         AND DIE
+
+CCHECK LDA    CREDIT
+       STA    PD,U
+CCHEK1 LDA    CREDIT
+       CMPA   PD,U
+       BEQ    CCHEK2                            
+       INC    ATFLAG         INDICATE IN COIN JUST INSERTED MODE
+       JMP    FAMPAG         GO TO FAMILY PAGE FOR COIN
+CCHEK2 NAP    8,CCHEK1
+
+RMAK   FDB    LR,LO,LB,LO,LT,LR,LO,LN,LC,0   ROBOTRON POINTERS
+
+LOGG1  JSR    SCRCLR
+       JSR    TABORG
+
+       CLR    ATFLAG         NORMAL PATH INTO FAMILY PAGE...NO CREDS
+       JMP    FAMPAG         AND DO THAT PAGE
+
+RUNIT  CLR    ATFLAG
+       JSR    GNCIDE
+       JSR    OINIT
+       JSR    SCRCLR
+       MAKP   CCHECK         MONITOR CREDITS
+       CLR    PCRAM+$C       ROBOTRON COLORS
+       CLR    PCRAM+$E
+
+       NAP    3,RUNNME       MAKE SURE THE PCRAM STUFF TAKES EFFECT
+
+RUNNME LDX    #WSTART        PLACE FOR UPPER LEFT OF LOGO
+       STX    PD+2,U
+
+       LDX    #RAPRAM        RAM DATA AT
+       LDY    #RMAK
+
+RUNIT3 STY    PD,U           LETTER POINTER AT PD
+       STX    PD+4,U         RAM POINTER AT PD+4   
+
+       NAP    1,RUNIT2       SLEEPY TIME
+
+RUNIT2 LDY    PD+4,U         GET DATA BLOCK
+       LDD    #$B0E          11 X 14 FOR TOP
+       STD    O1PT,Y
+       LDB    #13            11 X 13 FOR BOTTOM
+       STD    O2PT,Y
+       LEAX   DATA1,Y        FIRST DATA POINTER
+       STX    O1PT+2,Y       DATA POINTER
+       LEAX   DATA2,Y
+       STX    O2PT+2,Y
+       LDX    PD+2,U         GET NEXT LETTER SCREEN POINTER
+       STX    APADD,Y        AND SAVE FOR APPEAR
+
+       LDY    PD,U           GET LETTER POINTER
+       LDU    ,Y             GET NEXT LETTER
+       BEQ    WDONE          DONE WRITING...TIME FOR BLASTOFF!
+
+       CLRB                  NO FLAVOR PLEASE
+       LDA    #$CE           COLORS
+       PSHS   X              SAVE POINTER WE'RE USING
+       JSR    LETOUT         PUT THE LETTER ON THE SCREEN
+       LDU    CRPROC         RESTORE PROCESS BASE
+       LEAX   $200,X         SPACER
+       STX    PD+2,U         NEXT ONE
+
+       PULS   X              PLACE WE WROTE IT
+
+       LDY    PD+4,U         GET PLACE TO WRITE IT
+       LEAY   DATA1,Y        POINT WHERE DATA GOES
+       LDD    #$B1B          REAL FOR 11 BY 27
+       JSR    RWMOVE         DO IT JACK!
+
+       LDX    PD+4,U         GET RAM POINTER
+       LEAX   RAPSIZ,X
+
+       LDY    PD,U
+       LEAY   2,Y
+       BRA    RUNIT3
+
+GETBAL PSHS   A
+       LDA    FREEPL+1       SEE IF BALLS ALLOWED
+       ANDA   #$0F           GET THE BYTE
+       PULS   A,PC
+
+*      TIME TO STAGE THE APPEARS
+
+WDONE  BSR    GETBAL         SEE IF FANCY
+       BEQ    NOBA11
+
+       JSR    SCRCLR         CLEAR THE SCREEN
+
+NOBA11 LDA    #$7
+       STA    PCRAM+$C       RED
+
+       LDA    #$3F
+       STA    PCRAM+$E
+
+       BSR    GETBAL
+       LBEQ   LOGG2          NO APPEARS NECESSARY
+
+       LDA    STATUS
+       ANDA   #$FB
+       STA    STATUS
+
+       LDU    CRPROC
+
+       LDY    #RAPRAM        POINT AT FIRST
+       STY    PD,U
+       LDA    #9             9 CHARS
+       STA    PD+2,U
+       BRA    WDONE1         NO EXTRA NAPPING!
+
+WDONE0 NAP    8,WDONE1
+
+WDONE1 LDY    PD,U           GET THE LETTER TO DO
+       LDD    APADD,Y        GET THE ADDRESS OF TOP
+       ADDB   #13
+       STB    CENTMP+1
+       SUBB   #13
+       LEAX   O1PT,Y         GET THE OBJECT
+
+       JSR    AMAP           DO THE APPEAR
+
+       ADDB   #14            PULL TO THE TOP               
+       STB    CENTMP+1
+
+       LEAX   O2PT,Y         POINT AT SECOND OBJECT
+
+       JSR    AMAP
+
+       LEAY   RAPSIZ,Y       FORM NEXT
+       STY    PD,U
+       DEC    PD+2,U
+       BNE    WDONE0
+       NAP    $20,LOGG2      LET THEM FINISH, THEN DO OTHER STUFF
+
+COLE   LDA    #$3F           COLOR F IS YELLOW ALSO
+       STA    PCRAM+$F
+
+       LDA    #$7
+       STA    PCRAM+$D
+
+       MAKP   LFV      MAKE THE LASER COLORER (COLOR A)
+
+       LDY    #L2084   POINTER TO THE STUFF
+       CLRB
+       LDX    #$395C   SCREEN PTR
+       LDA    #$FD     YELLOW PRIMARY,  RED TRIM
+COLE2  LDU    [,Y++]
+       BEQ    COLLLE   DONE!
+       JSR    LETOUT   PUT IT OUT
+       BRA    COLE2
+
+COLLLE LDU    ,Y++
+       BEQ    COLE1
+       JSR    LETOUT
+       BRA    COLLLE
+
+COLE1  MAKP   COLC
+
+       LDX    #CEPTR
+       LDY    #PCRAM+$E
+       LDA    #1
+
+COLENT LDU    CRPROC
+       STX    PD+2,U
+       STY    PD+4,U
+       STA    PD+6,U
+
+COLE4  LDX    PD+2,U
+       STX    PD,U
+
+COLE3  LDX    PD,U
+       LDA    ,X+
+       BEQ    COLE4
+
+       STA    [PD+4,U]
+       STX    PD,U
+       LDA    PD+6,U
+       LDX    #COLE3
+       JMP    SLEEP
+
+COLC   LDA    LSEED
+       BPL    COLC1
+
+       LDA    #7       RED ME
+       STA    PCRAM+$C
+       JSR    RAND
+       ANDA   #$7      3 BITS OF SLEEP
+       INCA
+       LDX    #COLC1
+       JMP    SLEEP
+
+COLC1  LDA    SEED     HOW RANDOM DO I FEEL?
+       ANDA   #$3
+       BEQ    COLC11   NOT VERY
+
+       CLR    PCRAM+$C
+       NAP    3,COLC11
+
+COLC11 LDX    #COLTAB
+       JSR    RAND
+       ANDA   #$0F
+       LDA    A,X
+       STA    PCRAM+$C
+       NAP    7,COLC2
+
+COLC2  LDA    LSEED
+       ANDA   #$3
+       BEQ    COLC  
+
+       CLR    PCRAM+$C
+       NAP    4,COLC  
+
+CEPTR  FCB    $3F,$3F,$3F,$37,$2F,$27,$1F,$17,$F,7,7,7
+       FCB    $F,$17,$1F,$27,$2F,$37,$3F,$3F,$3F,0
+
+COLTAB FCB    $FF,$C0,$C7,$1F,$7 
+       FCB    $07,$C0,$C7
+       FCB    $FF,$C0,$C7,$16,$7
+       FCB    $FF,$C0,$C7
+
+*OLTAB FCB $38,$FF,$3A,$3B,$3C
+*FCB $3D,$3E,$3F,$37,$2F,$27,$FF,$FF
+*FCB $FF,$47,$87,$87,$C7,$C7
+*FCB $C6,$C5,$CC,$CB,$CA,$DA,$E8,$F8
+*FCB $FA,$FB,$FD,$FF,$BF,$3F,$3E
+*FCB $3C,0
+
+HISTRY EQU    *
+
+       IFC    &A,NOL
+
+       OPT    LIS
+       LIB    RRSCRIPT
+       OPT    NOL
+
+       ELSE
+       LIB    RRSCRIPT
+
+       ENDIF
+
+LOGG2  JSR    OINIT          REDO THE OBJECT STRUCTURE
+
+       LDA    STATUS         CAN EXPLOSIONS NOW
+       ORAA   #4
+       STA    STATUS
+
+       MAKP   COLE           COLOR E PROCESS NEEDED,(ALSO PUT OUT 2084)
+       JSR    CSET
+       MAKP   MESSER         HANDLE OPERATOR MESSAGE THEN TAKE OVER
+
+       JSR    GETBAL         SEE IF INHIBITED
+       BNE    DOBALL
+
+       MAKP   COL1           START THE WHITE PROCESS
+
+       NAP    $FF,NOBA22
+NOBA22 NAP    $FF,HISTRY
+
+DOBALL JSR    WILSUB         SETUP FIRST WILL BALL
+       LDA    #28            WE'LL DO 28 AND THEN DIE
+       LDU    CRPROC
+       STA    PD,U           COUNTER                          
+RUN1   LDX    LASTX
+       LDA    BALCOL
+       JSR    BALOUT         OUTPUT A BALL AT INITIAL PLACE
+       JSR    FORMX
+       NAP    4,RUN2
+RUN2   DEC    PD,U
+       BNE    RUN1
+       JMP    WILLME         NOW SPIN EM'                    
+
+MESSER JSR    ATMCK          SEE IF OPERATOR MESSAGE IS INTACT
+       BEQ    MESS01         YEP
+       LDX    DOPMES         GET THE DEFAULT MESSAGE
+       LDY    #MESOUT        52 BYTES WORTH
+MESS02 LDD    ,X++ 
+       STD    ,Y++
+       CMPY   #MESOUT+52
+       BLO    MESS02
+       BRA    MESS03
+MESS01 LDX    #OPMESS
+       LDY    #MESOUT
+MESS04 JSR    RCMOSD         GET 2 BYTES
+       STD    ,Y++
+       CMPY   #MESOUT+52
+       BLO    MESS04
+MESS03 LDA    MESOUT+50      GET X OF FIRST LINE
+       LDB    #$86           HEIGHT
+       LDY    #MESOUT        FIRST CHAR
+       BSR    LINOUT         PUT OUT A LINE
+       LDA    MESOUT+51
+       LDB    #$96
+       LDY    #MESOUT+25
+       BSR    LINOUT         OUT LINE 2
+       LDB    CREDIT 
+       LDA    #CPM1          COPYRIGHT ETC
+       JSR    WRD5V          PUT IT OUT
+       JMP    SUCIDE         WE'RE DONE..BYE   
+
+LINOUT PULS   X              GET RETURN ADDR
+       LDU    CRPROC
+       STX    PD,U           AND SAVE
+       TFR    D,X            POINTER IN X PLEASE
+       LDA    #25
+       STA    PD+2,U         NUMBER OF LETTERS TO OUTPUT
+       LDA    #$66           COLOR OF OPERATOR MESSAGE
+       STA    TEXCOL         PUT IT AWAY
+LINO1  LDA    ,Y+            GET A LETTER
+       JSR    PR57V          PRINT IT
+       STX    PD+3,U
+       STY    PD+5,U
+       NAP    2,LINO2
+LINO2  LDX    PD+3,U
+       LDY    PD+5,U
+       DEC    PD+2,U
+       BNE    LINO1
+       JMP    [PD,U]
+
+       FCC    ' ROBOTRON: 2084 '
+       FCC    ' COPYRIGHT 1982 WILLIAMS ELECTRONICS INC. '
+       FCC    ' ALL RIGHTS RESERVED '
+
+WILSUB JSR    FINIT          FIRST TWO LOCATIONS FOR INITIAL MOVE
+       LDY    #ARAM1
+       LDA    #$10           MOVE OUTER COLOR TO ARAM1
+       BSR    WMOVE          DO IT
+       JMP    FINIT          INIT THE DATABASE AND RETURN
+
+WILLME BSR    WILSUB         DO SETUP STUFF
+
+       MAKP   COL1           MAKE THE COLOR PROC
+
+       LDU    CRPROC
+       LDX    #$2C0
+       STX    PD+6,U         SAVE
+
+       LDA    #6
+       STA    PD+4,U
+
+       LDX    LASTX
+       LDA    BALCOL
+       BRA    WILL55
+
+WILL1  LDA    #6 
+       STA    PD+4,U
+
+WILL44 JSR    FORMX
+       JSR    XUPD           UPDATE POINTER TO MAKE THIS STUPID BEAM RUN 
+
+WILL55 LDY    ERPTR          GET HEIGHT OF GUY WE'RE GONNA ERASE
+       LDB    VERTCT         IT MUST BE 10 LINES BEYOND US
+       STB    XTEMP          KEEP IT HONEST
+       CMPB   1,Y            FIND WHICH SIDE ITS ON
+       BLO    WILL33         ITS ABOVE US!
+
+       SUBB   1,Y            ITS BELOW US,  SUBTRACT US
+       CMPB   #20
+       BLS    WILL55         LOOP PLEASE
+       LDB    XTEMP          GET THE COUNTER
+       CMPB   #$EC           ARE WE REAL LOW??
+       BHS    WILL55         THEN WE NEED TO LET IRQ IN TO CHANGE PCRAM
+       BRA    WILL66
+
+WILL33 LDB    1,Y            GET THE Y VALUE
+       CMPB   #30            IS THE Y WE'RE TRYING TO PLOT HIGH??
+       BLS    WILL55         THEN WAIT FOR BELOW US
+
+       SUBB   VERTCT         ELSE FIND OUT HOW HIGH?
+       CMPB   #30            LETS SAY WE NEED 30 LINES TO DO IT
+       BLS    WILL55
+
+WILL66 JSR    BALOFF         TURN OFF THE BALL WE'RE ABOUT TO DO
+
+       JSR    BALOUT         PUT OUT THE BALL AT THAT POINT
+
+       LDU    CRPROC
+       DEC    PD+4,U
+       BNE    WILL44
+
+       LDX    PD+6,U         TIME LEFT
+       LEAX   -1,X
+       LBEQ   HISTRY         START OVER
+       STX    PD+6,U
+
+       NAP    1,WILL1
+
+WMOVE  PSHS   Y,A            SAVE THE EVENTUAL TARGET
+       LDX    LASTX          GET THE FIRST X FOR SETUP 
+       PULS   A
+       PSHS   X              SAVE THE X
+       CLRB
+       LDU    #BILL
+       JSR    LETOUT         NOW ITS ALLEGEDLY ON SCREEN
+
+       PULS   X,Y            GET BACK X (SCREEN)  Y (RAM)
+       LDD    #$E1B          14 X 28 IN REAL       
+       JMP    RWMOVE         DO THE XFER FROM PRIME REAL ESTATE AND RET
+
+X1     EQU    $5 
+X2     EQU    $85
+Y1     EQU    $F 
+Y2     EQU    $CF
+
+FINIT  PSHS   D,X
+       LDA    #X1
+       LDB    #Y1
+       STD    LASTX
+       CLR    SIDE           SIDE 0
+       CLR    SLIDER
+       LDA    #$77
+       STA    BALCOL
+       LDX    #ERLIST
+       STX    ERPTR
+       LDD    #$13AF         ERASE SCREEN CENTER ON FIRST PASS
+FINIT1 STD    ,X++
+       CMPX   #EREND         WHOLE LIST??
+       BLO    FINIT1
+       PULS   D,PC,X
+
+FORMX  PSHS   B  
+       LDA    SIDE           SIDE 0,1,2 OR 3??
+       ANDA   #$3            LOW IS ALL THATS IMPORTANT
+       DECA
+       BMI    SIDE0
+       DECA      
+       BMI    SIDE1
+       DECA
+       BMI    SIDE2
+SIDE3  LDD    LASTX
+       SUBB   #32            MOVE UP 1
+       BCS    BADSID
+       CMPB   #Y1            LOW Y??
+       BHI    SIDEX          DONE IF HIGH
+BADSID LDA    SLIDER         FIND SLIDE AMOUNT
+       ADDA   #2             2 UNITS PER
+       CMPA   #16
+       BLO    SLID1
+       CLR    SLIDER
+       LDA    #X1+16
+       LDB    #Y1
+       BRA    SIDCH
+SLID1  STA    SLIDER
+       LDB    #Y1
+       LDA    #X1
+       ADDA   SLIDER         SHIFT OVER BY SLIDER
+       BRA    SIDCH          NEW SIDE!
+SIDE2  LDD    LASTX
+       SUBA   #16
+       BCS    SIDE25
+       CMPA   #X1
+       BHI    SIDEX
+SIDE25 LDA    #X1
+       LDB    SLIDER
+       NEGB
+       ASLB
+       ADDB   #Y2            HIGH Y
+       BRA    SIDCH
+SIDE1  LDD    LASTX
+       ADDB   #32
+       CMPB   #Y2
+       BLO    SIDEX
+       LDB    #Y2
+       LDA    #X2
+       SUBA   SLIDER
+       BRA    SIDCH
+SIDE0  LDD    LASTX
+       ADDA   #16
+       CMPA   #X2
+       BLO    SIDEX
+       LDA    #X2
+       LDB    SLIDER
+       ASLB
+       ADDB   #Y1
+SIDCH  INC    SIDE           CHANGE TO A NEW SIDE
+SIDEX  STD    LASTX          SAVE THE X
+       TFR    D,X            RETURN IN X
+       LDA    BALCOL         RETURN OLD COLOR
+       SUBA   #$11           NEXT COLOR
+       BCS    SIDE8                         
+       BNE    SIDE7
+SIDE8  LDA    #$77
+SIDE7  STA    BALCOL
+       PULS   B,PC
+
+XUPD   PSHS   X
+       LDX    ERPTR          GET CURRENT ERASE POSITION
+       LEAX   2,X            POINT TO NEXT
+       CMPX   #EREND         DONE??
+       BLO    BALOF1         IN RANGE
+       LDX    #ERLIST
+BALOF1 STX    ERPTR          PLACE
+       PULS   X,PC
+
+BALOFF PSHS   X,D,CC
+       LDX    [ERPTR]        GET ENTRY 32 AGO
+       SEI
+       STX    DEST           PLACE TO ERASE
+       LDD    #$A1F          SIZE
+       STD    HORIZ
+       CLR    CONST
+       LDD    #ARAM1         SOURCE IS WILLY BALL
+       STD    ORIG                   
+       LDA    #$1E
+       STA    CONTRL
+       PULS   CC,X,D,PC
+
+BALOUT PSHS   CC,A
+       STX    [ERPTR]        SAVE THIS BALLS POS. FOR ERASE MUCH LATER
+       SEI
+       STA    CONST          COLOR
+       STX    DEST           PLACE TO GO
+       LDD    #$A1F
+       STD    HORIZ          SIZE ME
+       LDD    #ARAM1         HALO
+       STD    ORIG
+       LDA    #$1E           SLOW SER TO BLK CONST   ZWS
+       STA    CONTRL
+
+*      LDD    #ARAM2         W
+*      STA    ORIG
+
+*      CLR    CONST          CLEAR THIS FRAME
+
+*      LDA    #$1E           ZWS ETC
+*      STA    CONTRL
+       PULS   CC,A,PC
+
+CSET   PSHS   X,Y,A
+       LDX    #LCTAB   USE LOGO COLOR TABLE FOR 1-7   
+       LDY    #PCRAM+1
+COLLL  LDA    ,X+ 
+       STA    ,Y+ 
+       CMPY   #PCRAM+8 
+       BLO    COLLL
+       PULS   X,Y,A,PC
+
+COL1   LDX    #PCRAM+1
+       STX    PD+2,U
+COLL   BSR    CSET          SET THE COLORS WE'LL USE
+COLL5  LDX    PD+2,U   GET WHITE POINTER
+       LEAX    1,X     KICK IT UP
+       CMPX   #PCRAM+8
+       BLO    COLL8
+       LDX    #PCRAM+1
+COLL8  STX    PD+2,U
+       LDA    #$FF
+       STA    ,X
+       NAP    3,COLL
+
+LCTAB  FCB    $7             RED
+       FCB    $C0            BLUE
+       FCB    $17            ORANGE-BROWN
+       FCB    $30            GREEN 
+       FCB    $C7            VIOLET
+       FCB    $1F            ORANGE
+       FCB    $3F            YELLOW
+
+       LIB    RRLOGD
+
+       END
diff --git a/RRLOGD.ASM b/RRLOGD.ASM
new file mode 100755 (executable)
index 0000000..016587d
--- /dev/null
@@ -0,0 +1,1056 @@
+*      ROBOTRON PART OF LOGO                             
+
+*      IF SIGN BIT IS ON, THE BYTE IS A KEY BYTE,
+*      ELSE IT IS A DATA BYTE.
+
+*      KEY BYTE:
+
+*      1 R L C   N N N N
+
+*      R = REPEAT LAST COLUMN   N N N N   TIMES
+*      L = END OF LETTER
+*      C = END OF COLUMN
+
+*      ELSE THE BYTE IS OF THE FORM:
+*
+*      0 B C D   D D D D 
+*
+*      BC  00 = ZERO  10 = COLOR 1  01 = COLOR 2   11 = WHO KNOWS?
+*      D = NUMBER OF ROWS TO GET THIS
+
+REPEAT EQU    $C0
+ENDLET EQU    $A0
+ENDCOL EQU    $90
+
+ON     EQU    $40      INDICATE COLOR IS ON
+ON2    EQU    $20      COLOR 2 ON
+
+*      LETTER R
+*      LETTER R
+*      LETTER R
+
+LR     FCB    1        COLUMN 1
+       FCB    25+ON2
+       FCB    ENDCOL
+
+       FCB    2+ON2
+       FCB    23+ON    COLUMN 2
+       FCB    2+ON2
+       FCB    ENDCOL
+
+       FCB    1+ON2    COL 3
+       FCB    25+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    1+ON2    COL 4
+       FCB    3+ON
+       FCB    7+ON2
+       FCB    15+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    1+ON2
+       FCB    3+ON     COLUMN 5
+       FCB    1+ON2
+       FCB    5    
+       FCB    2+ON2
+       FCB    13+ON
+       FCB    2+ON2
+       FCB    ENDCOL
+
+       FCB    1+ON2
+       FCB    3+ON     COLUMN 6
+       FCB    1+ON2
+       FCB    6    
+       FCB    1+ON2
+       FCB    2+ON
+       FCB    12+ON2
+       FCB    ENDCOL
+
+       FCB    1+ON2
+       FCB    3+ON     COLUMN 7
+       FCB    1+ON2
+       FCB    6
+       FCB    1+ON2
+       FCB    2+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    REPEAT+6 COLUMN 8,9,10,11,12,13
+
+       FCB    1+ON2
+       FCB    3+ON     COLUMN 14
+       FCB    2+ON2
+       FCB    5
+       FCB    1+ON2
+       FCB    2+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    1+ON2
+       FCB    4+ON    COLUMN 15
+       FCB    7+ON2
+       FCB    2+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    1+ON2    COL 16
+       FCB    13+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    3+ON2
+       FCB    11+ON    COLUMN 17
+       FCB    2+ON2
+       FCB    ENDCOL
+
+       FCB    2        COLUMN 18
+       FCB    10+ON2
+       FCB    3+ON
+       FCB    11+ON2
+       FCB    ENDCOL
+
+       FCB    10       COLUMN 19
+       FCB    2+ON2
+       FCB    13+ON
+       FCB    2+ON2
+       FCB    ENDCOL
+
+       FCB    11       COLUMN     20
+       FCB    2+ON2
+       FCB    12+ON
+       FCB    2+ON2
+       FCB    ENDCOL
+
+       FCB    12       21
+       FCB    14+ON2
+       FCB    ENDCOL
+
+       FCB    ENDLET   END OF LETTER
+
+*      LETTER O
+*      LETTER O
+*      LETTER O
+
+LO     FCB    1        COLUMN 1
+       FCB    25+ON2
+       FCB    ENDCOL
+
+       FCB    2+ON2
+       FCB    23+ON    COLUMN 2
+       FCB    2+ON2
+       FCB    ENDCOL
+
+       FCB    1+ON2
+       FCB    25+ON
+       FCB    1+ON2    COL 3
+       FCB    ENDCOL
+
+       FCB    1+ON2    4
+       FCB    3+ON
+       FCB    19+ON2
+       FCB    3+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    1+ON2
+       FCB    2+ON
+       FCB    2+ON2
+       FCB    17
+       FCB    2+ON2
+       FCB    2+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    1+ON2
+       FCB    2+ON     COLUMN 6
+       FCB    1+ON2
+       FCB    19
+       FCB    1+ON2
+       FCB    2+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    REPEAT+8    COLUMN 7,8,9,10,11,12,13,14
+
+       FCB    1+ON2
+       FCB    2+ON         COLUMN 15
+       FCB    4+ON2
+       FCB    16
+       FCB    1+ON2
+       FCB    2+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    1+ON2
+       FCB    5+ON           COLUMN 16
+       FCB    2+ON2
+       FCB    15
+       FCB    1+ON2
+       FCB    2+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    1+ON2
+       FCB    6+ON           COLUMN 17
+       FCB    2+ON2
+       FCB    13
+       FCB    2+ON2
+       FCB    2+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    1+ON2          18
+       FCB    7+ON
+       FCB    15+ON2
+       FCB    3+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    1+ON2
+       FCB    25+ON
+       FCB    1+ON2
+       FCB    ENDCOL         19
+
+       FCB    2+ON2
+       FCB    23+ON          20
+       FCB    2+ON2
+       FCB    ENDCOL
+
+       FCB    1
+       FCB    25+ON2
+       FCB    ENDCOL         21
+
+       FCB    ENDLET         END OF LETTER
+
+*      LETTER B
+*      LETTER B
+*      LETTER B
+
+LB     FCB    1              COLUMN 1
+       FCB    25+ON2
+       FCB    ENDCOL
+
+       FCB    2+ON2
+       FCB    23+ON          2
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    1+ON2
+       FCB    24+ON          3
+       FCB    2+ON2
+       FCB    ENDCOL
+
+       FCB    1+ON2          4
+       FCB    2+ON
+       FCB    7+ON2
+       FCB    16+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    1+ON2
+       FCB    2+ON           5
+       FCB    1+ON2
+       FCB    5
+       FCB    2+ON2
+       FCB    15+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    1+ON2
+       FCB    2+ON           6
+       FCB    1+ON2
+       FCB    6
+       FCB    1+ON2
+       FCB    15+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    1+ON2          7
+       FCB    2+ON
+       FCB    1+ON2
+       FCB    6
+       FCB    1+ON2
+       FCB    3+ON
+       FCB    9+ON2
+       FCB    3+ON 
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    1+ON2
+       FCB    2+ON           8
+       FCB    1+ON2
+       FCB    6
+       FCB    1+ON2
+       FCB    2+ON
+       FCB    2+ON2
+       FCB    7
+       FCB    2+ON2
+       FCB    2+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    1+ON2
+       FCB    2+ON           9
+       FCB    1+ON2
+       FCB    6
+       FCB    1+ON2
+       FCB    2+ON
+       FCB    1+ON2
+       FCB    9
+       FCB    1+ON2
+       FCB    2+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    REPEAT+5     10,11,12,13,14
+
+       FCB    1+ON2
+       FCB    2+ON         15
+       FCB    2+ON2
+       FCB    5
+       FCB    1+ON2
+       FCB    2+ON
+       FCB    1+ON2
+       FCB    9
+       FCB    1+ON2
+       FCB    2+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    1+ON2
+       FCB    3+ON
+       FCB    7+ON2
+       FCB    2+ON
+       FCB    1+ON2
+       FCB    9
+       FCB    1+ON2
+       FCB    2+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    1+ON2        17
+       FCB    12+ON
+       FCB    1+ON2
+       FCB    9
+       FCB    1+ON2
+       FCB    2+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    2+ON2
+       FCB    11+ON          18
+       FCB    2+ON2
+       FCB    7
+       FCB    2+ON2
+       FCB    2+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    1              19
+       FCB    10+ON2
+       FCB    3+ON
+       FCB    9+ON2
+       FCB    3+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    10             20
+       FCB    1+ON2
+       FCB    14+ON
+       FCB    2+ON2
+       FCB    ENDCOL
+
+       FCB    10             21
+       FCB    2+ON2
+       FCB    11+ON
+       FCB    3+ON2
+       FCB    ENDCOL
+
+       FCB    11             22
+       FCB    13+ON2
+       FCB    ENDCOL
+
+       FCB    ENDLET
+
+*      LETTER T
+*      LETTER T
+*      LETTER T
+
+LT     FCB    1              1
+       FCB    3+ON2
+       FCB    ENDCOL
+
+       FCB    2+ON2
+       FCB    1+ON           2
+       FCB    2+ON2
+       FCB    ENDCOL
+
+       FCB    1+ON2          3            
+       FCB    3+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    REPEAT+4       4,5,6,7,8
+
+       FCB    1+ON2
+       FCB    3+ON           9
+       FCB    2+ON2
+       FCB    ENDCOL
+
+       FCB    1+ON2
+       FCB    4+ON          10
+       FCB    21+ON2
+       FCB    ENDCOL
+
+       FCB    1+ON2          11
+       FCB    24+ON
+       FCB    2+ON2
+       FCB    ENDCOL
+
+       FCB    1+ON2
+       FCB    25+ON          12
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    REPEAT+1       13
+
+       FCB    1+ON2
+       FCB    4+ON           14
+       FCB    7+ON2
+       FCB    13+ON
+       FCB    2+ON2
+       FCB    ENDCOL
+
+       FCB    1+ON2
+       FCB    3+ON           15
+       FCB    2+ON2
+       FCB    5
+       FCB    15+ON2
+       FCB    ENDCOL
+
+       FCB    1+ON2
+       FCB    3+ON           16
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    REPEAT+4       17,18,19   
+
+       FCB    2+ON2          20
+       FCB    1+ON
+       FCB    2+ON2
+       FCB    ENDCOL
+
+       FCB    1              21
+       FCB    3+ON2
+       FCB    ENDCOL
+       FCB    ENDLET
+
+*      LETTER N
+*      LETTER N
+*      LETTER N
+
+LN     FCB    1        1
+       FCB    25+ON2
+       FCB    ENDCOL
+
+       FCB    2+ON2
+       FCB    23+ON    2
+       FCB    2+ON2
+       FCB    ENDCOL
+
+       FCB    1+ON2    3
+       FCB    25+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    1+ON2
+       FCB    2+ON     4
+       FCB    8+ON2
+       FCB    15+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    1+ON2
+       FCB    2+ON     5
+       FCB    1+ON2
+       FCB    6
+       FCB    1+ON2
+       FCB    15+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    1+ON2
+       FCB    2+ON     6
+       FCB    1+ON2
+       FCB    6
+       FCB    2+ON2
+       FCB    12+ON
+       FCB    2+ON2
+       FCB    ENDCOL
+
+       FCB    1+ON2
+       FCB    2+ON     7
+       FCB    1+ON2
+       FCB    7
+       FCB    14+ON2
+       FCB    ENDCOL
+
+       FCB    1+ON2
+       FCB    2+ON     8
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    REPEAT+8  9,10,11,12,13,14,15,16
+
+       FCB    1+ON2
+       FCB    2+ON    17
+       FCB    23+ON2
+       FCB    ENDCOL
+
+       FCB    1+ON2
+       FCB    24+ON     18
+       FCB    2+ON2
+       FCB    ENDCOL
+
+       FCB    2+ON2     19    
+       FCB    23+ON
+       FCB    2+ON2
+       FCB    ENDCOL
+
+       FCB    1        20
+       FCB    25+ON2
+       FCB    ENDCOL
+
+       FCB    ENDLET
+
+*      COLON
+*      COLON
+*      COLON
+
+LC     FCB    3        1
+       FCB    4+ON2
+       FCB    14
+       FCB    4+ON2
+       FCB    ENDCOL
+
+       FCB    2        2
+       FCB    2+ON2
+       FCB    2+ON
+       FCB    2+ON2
+       FCB    12
+       FCB    2+ON2
+       FCB    2+ON
+       FCB    2+ON2
+       FCB    ENDCOL
+
+       FCB    2        3
+       FCB    1+ON2
+       FCB    4+ON
+       FCB    1+ON2
+       FCB    12
+       FCB    1+ON2
+       FCB    4+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    REPEAT+5  4,5,6
+
+       FCB    2        7
+       FCB    2+ON2
+       FCB    2+ON
+       FCB    2+ON2
+       FCB    12
+       FCB    2+ON2
+       FCB    2+ON
+       FCB    2+ON2
+       FCB    ENDCOL
+
+       FCB    3        8
+       FCB    4+ON2
+       FCB    14
+       FCB    4+ON2
+       FCB    ENDCOL
+
+       FCB    ENDLET
+
+******
+*
+*      2084 DEFINITION
+*
+******
+
+L8     FCB    1        1
+       FCB    1+ON2
+       FCB    12+ON
+       FCB    3+ON2
+       FCB    12+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    2        2
+       FCB    1+ON2
+       FCB    12+ON
+       FCB    1+ON2
+       FCB    12+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    3        3
+       FCB    1+ON2
+       FCB    23+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    4        4
+       FCB    1+ON2
+       FCB    21+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    5        5
+       FCB    1+ON2
+       FCB    3+ON
+       FCB    6+ON2
+       FCB    1+ON
+       FCB    6+ON2 
+       FCB    3+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    6        6
+       FCB    1+ON2
+       FCB    3+ON
+       FCB    1+ON2
+       FCB    4
+       FCB    1+ON2
+       FCB    4
+       FCB    1+ON2
+       FCB    3+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    7        7
+       FCB    1+ON2
+       FCB    3+ON
+       FCB    1+ON2
+       FCB    3
+       FCB    1+ON2
+       FCB    3
+       FCB    1+ON2
+       FCB    3+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    8        8
+       FCB    1+ON2
+       FCB    3+ON
+       FCB    3+ON2
+       FCB    1+ON
+       FCB    3+ON2
+       FCB    3+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    9        9
+       FCB    1+ON2
+       FCB    11+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    10       10
+       FCB    1+ON2
+       FCB    9+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    11       11
+       FCB    1+ON2
+       FCB    3+ON
+       FCB    1+ON2
+       FCB    3+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    12       12
+       FCB    8+ON2
+       FCB    ENDCOL
+
+       FCB    ENDLET
+
+L4     FCB    13       1
+       FCB    1+ON2
+       FCB    5+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    12       2
+       FCB    1+ON2
+       FCB    6+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    11       3
+       FCB    1+ON2
+       FCB    7+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    10       4
+       FCB    1+ON2
+       FCB    8+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    9        5
+       FCB    1+ON2
+       FCB    5+ON
+       FCB    1+ON2
+       FCB    3+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    8        6
+       FCB    1+ON2
+       FCB    5+ON
+       FCB    2+ON2
+       FCB    3+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    8        7
+       FCB    1+ON2
+       FCB    4+ON
+       FCB    1+ON2
+       FCB    1
+       FCB    1+ON2
+       FCB    3+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    8        8
+       FCB    1+ON2
+       FCB    3+ON
+       FCB    1+ON2
+       FCB    2
+       FCB    1+ON2
+       FCB    3+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    8        9
+       FCB    1+ON2
+       FCB    3+ON
+       FCB    4+ON2
+       FCB    3+ON
+       FCB    5+ON2
+       FCB    ENDCOL
+
+       FCB    8        10
+       FCB    1+ON2
+       FCB    14+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    REPEAT+3  11,12,13
+
+       FCB    8        14
+       FCB    8+ON2
+       FCB    3+ON
+       FCB    5+ON2
+       FCB    ENDCOL
+
+       FCB    15       15
+       FCB    1+ON2
+       FCB    3+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    REPEAT+3       16,17,18
+
+       FCB    14       19
+       FCB    1+ON2 
+       FCB    4+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    REPEAT+4       20,21,22,23
+
+       FCB    15             24
+       FCB    1+ON2
+       FCB    3+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    16             25
+       FCB    1+ON2
+       FCB    2+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    17       26
+       FCB    1+ON2
+       FCB    1+ON
+       FCB    1+ON2
+       FCB    ENDCOL
+
+       FCB    18       27
+       FCB    2+ON2
+       FCB    ENDCOL
+
+       FCB    ENDLET
+
+L2084  FDB    L2,L0,LZER              
+       FDB    L8,L4
+LZER   FDB    0
+
+BILL   FCB    10       1          BALL IS COLOR 1 (HIGH)
+       FCB    7+ON                W    IS COLOR 2 (LOW)
+       FCB    ENDCOL
+
+       FCB    8        2
+       FCB    11+ON
+       FCB    ENDCOL
+
+       FCB    6        3
+       FCB    15+ON
+       FCB    ENDCOL
+
+       FCB    5        4
+       FCB    17+ON
+       FCB    ENDCOL
+
+       FCB    4        5
+       FCB    4+ON
+       FCB    2+ON2
+       FCB    13+ON
+       FCB    ENDCOL
+
+       FCB    3        6
+       FCB    7+ON
+       FCB    2+ON2
+       FCB    12+ON
+       FCB    ENDCOL
+
+       FCB    2        7
+       FCB    9+ON
+       FCB    4+ON2
+       FCB    10+ON
+       FCB    ENDCOL
+
+       FCB    2        8
+       FCB    10+ON
+       FCB    5+ON2
+       FCB    8+ON
+       FCB    ENDCOL
+
+       FCB    1        9
+       FCB    12+ON
+       FCB    7+ON2
+       FCB    6+ON
+       FCB    ENDCOL
+
+       FCB    1        10
+       FCB    13+ON
+       FCB    8+ON2
+       FCB    4+ON
+       FCB    ENDCOL
+
+       FCB    13+ON    11
+       FCB    7+ON2
+       FCB    7+ON
+       FCB    ENDCOL
+
+       FCB    8+ON     12
+       FCB    2+ON2
+       FCB    2+ON
+       FCB    6+ON2
+       FCB    9+ON
+       FCB    ENDCOL
+
+       FCB    9+ON     13
+       FCB    7+ON2
+       FCB    11+ON
+       FCB    ENDCOL
+
+       FCB    10+ON
+       FCB    4+ON2    14
+       FCB    13+ON
+       FCB    ENDCOL
+
+       FCB    9+ON     13
+       FCB    7+ON2
+       FCB    11+ON
+       FCB    ENDCOL
+
+       FCB    8+ON     12
+       FCB    2+ON2
+       FCB    2+ON
+       FCB    6+ON2
+       FCB    9+ON
+       FCB    ENDCOL
+
+       FCB    13+ON    11
+       FCB    7+ON2
+       FCB    7+ON
+       FCB    ENDCOL
+
+       FCB    1        10
+       FCB    13+ON
+       FCB    8+ON2
+       FCB    4+ON
+       FCB    ENDCOL
+
+       FCB    1        9
+       FCB    12+ON
+       FCB    7+ON2
+       FCB    6+ON
+       FCB    ENDCOL
+
+       FCB    2        8
+       FCB    10+ON
+       FCB    5+ON2
+       FCB    8+ON
+       FCB    ENDCOL
+
+       FCB    2        7
+       FCB    9+ON
+       FCB    4+ON2
+       FCB    10+ON
+       FCB    ENDCOL
+
+       FCB    3        6
+       FCB    7+ON
+       FCB    2+ON2
+       FCB    12+ON
+       FCB    ENDCOL
+
+       FCB    4        5
+       FCB    4+ON
+       FCB    2+ON2
+       FCB    13+ON
+       FCB    ENDCOL
+
+       FCB    5        4
+       FCB    17+ON
+       FCB    ENDCOL
+
+       FCB    6        3
+       FCB    15+ON
+       FCB    ENDCOL
+
+       FCB    8        2
+       FCB    11+ON
+       FCB    ENDCOL
+
+       FCB    10       1          BALL IS COLOR 1 (HIGH)
+       FCB    7+ON                W    IS COLOR 2 (LOW)
+       FCB    ENDCOL
+
+       FCB    ENDLET
+
+*      LETOUT - OUTPUT A LETTER STORED IN LOGO FORMAT
+*
+*      X = UPPER LEFT TO OUTPUT, RETURNS UPPER LEFT COLUMN FOLLOWING LETTER
+*      U = POINTER TO LETTER DATA
+*      Y = ROUTINE TO UPDATE COLOR
+*      A = COLOR 1, COLOR 2  INITIALLY
+*      B = INITIAL FLAVOR,  RETURNS FLAVOR JUST FOLLOWING LETTER
+
+LETOUT PSHS   A,U,Y
+       ANDA   #$F0
+       PSHS   A
+       LSRA
+       LSRA
+       LSRA
+       LSRA
+       ORAA   0,S+           COLOR 1 FORMED
+       STA    LOGCOL
+       LDA    ,S
+       ANDA   #$0F
+       PSHS   A
+       ASLA
+       ASLA
+       ASLA
+       ASLA
+       ORAA   ,S+
+       STA    LOGCL2         COLOR 2 
+CAGAIN BSR    DOCOL          DO A COLUMN
+       BCC    CAGAIN         NOT END OF LETTER...DO ANOTHER
+       PULS   A,U,Y,PC       AND RETURN
+
+DOCOL  LDA    ,U             CHECK FIRST BYTE OF THE COLUMN
+       COMA
+       BITA   #$C0           REPEATER??
+       BEQ    DOCOL0         YEP...NO COLUMN SAVE FOR THIS START
+       STU    LOGCST         SAVE COLUMN START
+DOCOL0 STX    LOGX           SAVE THE X FOR COLUMN END
+DOCOL2 LDA    ,U+            GET A DATA BYTE
+       BPL    DOCOL1         ORDINARY BOREDOM
+       BITA   #$20           END OF LETTER??
+       BEQ    DOCOL3         NOPE
+       SEC
+DUMRTS RTS                   INDICATE END OF LETTER
+DOCOL3 BITA   #$10           END OF COLUMN??
+       BEQ    DOCOL4         NOPE
+
+       BSR    CEND           DO TERMINAL TYPE OF STUFF
+       CLC
+       RTS                   AND RETURN
+
+DOCOL4 BITA   #$40           MUST BE REPEAT TIME
+       BEQ    DOCOL2         INVALID...CONTINUE
+       ANDA   #$F            GET COUNT
+       STA    LOGCNT         SAVE THE COUNT
+
+       STU    LOGSAV         SAVE THE POINTER
+DOCOL5 LDU    LOGCST         GET START OF COLUMN POINTER
+       BSR    DOCOL0         CURSE AGAIN        
+       DEC    LOGCNT         1 LESS
+       BNE    DOCOL5         AND DO IT AGAIN
+
+       LDU    LOGSAV         GET OUR POINTER BACK PLEASE
+       CLC                   CLEAR OUT THE CARRY GUY
+       RTS
+
+DOCOL1 BITA   #$60           COLOR??
+       BNE    DCOL6          YEP
+
+       LEAX   A,X            ADD COUNT TO X IS ALL WE NEED TO DO
+       BRA    DOCOL2         AND GET NEXT BYTE
+
+DCOL6  PSHS   CC,A           SAVE
+       ANDA   #$1F           REMOVE GARBAGE BITS 
+       SEI
+       STX    DEST           PLACE
+       LEAX   A,X            FORM NEW POINTER
+       EORA   #4             THROW GREG A BONE
+       STA    HORIZ+1        HEIGHT
+       LDA    #5
+       STA    HORIZ          1 WIDE
+       STD    ORIG           CONSTANT GARBAGE
+       LDA    1,S            GET DIRECTIVE BYTE BACK
+       BITA   #$40
+       BEQ    COL2U          USE COLOR 2
+       LDA    LOGCOL         GET COLOR1
+       BRA    COL3U
+COL2U  LDA    LOGCL2         USE COLOR 2
+COL3U  STA    CONST
+       LDA    #$12           CONSTANT STUFF ETC, BUT....
+       TSTB                  WHICH FLAVOR??
+       BEQ    DCOL7          EVEN FLAVOR
+       ORAA   #$80           ODD FLAVOR...SUPRESS HIGH
+       BRA    DCOL8
+DCOL7  ORAA   #$40           EVEN FLAVOR...SUPRESS LOW
+DCOL8  STA    CONTRL         DONE!
+       PULS   CC,A
+       BRA    DOCOL2         GET THE NEXT BYTE
+
+CEND   LDX    LOGX           RESTORE START X
+       TSTB                  EVEN FLAVOR??
+       BEQ    CEND1          YEP
+       LDB    #$FF           MAKE NON-ZERO FLAVOR FF IN CASE
+       LEAX   $100,X         MOVE OVER 1
+CEND1  COMB                  CHANGE FLAVOR
+       RTS                   AND RETURN
diff --git a/RRM1.ASM b/RRM1.ASM
new file mode 100755 (executable)
index 0000000..c1f07e1
--- /dev/null
+++ b/RRM1.ASM
@@ -0,0 +1,368 @@
+       OPT    NOL
+       LIB    RRF
+       OPT    LIS
+       STTL LINKY MARQUEE EFFECT
+*
+*RAM AREA
+*
+ ORG RMRAM
+UPPER RMB 1
+LOWER RMB 1
+LEFT RMB 1
+RIGHT RMB 1
+HFLAV RMB 1
+LFLAV RMB 1
+*
+*VECTORS
+*
+       ORG    RMORG 
+ JMP ENDWAV
+
+ENDWAV PULS   D              GET RETURN
+       LDU    CRPROC
+       STD    PD,U           SAVE PROCESS GUY
+       MAKP   WCPROC         START THE COLOR PROCESS
+
+       LDA    #$EF
+
+FR33   LDX    #$3B80         UPPER LEFT AT STAT
+       LDY    #$5A82         LOWER RIGHT AT START
+
+FR22   STX    PD+2,U
+       STY    PD+4,U 
+       STA    PD+6,U
+
+       NAP    1,FR11   THE SLEEPER
+
+FR11   LDX    PD+2,U
+       LDY    PD+4,U
+       LDA    PD+6,U
+
+       LDB    #2       INTERATIONS UNTIL SLEEP
+       STB    PD+7,U   COUNTER
+
+FR0    JSR    MARQ
+       TSTA
+       BEQ    FR1D     IF ZERO...NO CHANGE
+       CMPA   #$12
+       BNE    FR1C
+       LDA    #$EF
+       BRA    FR1D
+FR1C   CMPA   #$F1
+       BNE    FR1B
+       LDA    #$DE
+       BRA    FR1D
+FR1B   CMPA   #$23           STUPID O1
+       BNE    FR1A
+       LDA    #$F1
+       BRA    FR1D
+FR1A   SUBA   #$22
+FR1D   CMPX   #$616          DID WE JUST DO CENTER
+       BEQ    FR2            YEP
+       LEAX   -$102,X
+       LEAY   $102,Y
+       DEC    PD+7,U
+       BNE    FR0
+       BRA    FR22           SLEEP TIME
+
+*      LDB    TIMER          SEE IF WE ARE WANTED??
+*      BNE    FR22           TAKE A NAP
+*      BRA    FR0            GET ANOTHER FRAME IN
+
+FR2    TSTA                  DONE??
+       BEQ    SUCTIM
+       CLRA
+       BRA    FR33           AND JUST CLEAR 'EM OUT
+
+SUCTIM JMP    [PD,U]         RETURN!
+
+TABTAB FDB    DECTAB,$1F00   PRIMRIES TO SECONDARIES
+       FDB    DECT1,$3F00    PRI - SEC - WHITE
+       FDB    DECT2,$3F00
+       FDB    BRTTAB,$F00
+       FDB    DCATAB,$F00
+       FDB    BPRTAB,$F00
+       FDB    GYRTAB,$F00
+       FDB    BFTAB,$1F00
+       FDB    CLLTAB,$1F00
+       FDB    LOGTAB,$F00
+       FDB    BFTAB2,$1F00
+       FDB    DECTB4,$1F00
+
+BRTTAB FCB 1,2,3,4,5,6,7,$F,$17,$1F,$2D,$34
+       FCB $3A,$7A,$BA,$FA,$F8,$F0,$E0,$D0,$C0,$C0
+       FCB    0,0
+
+DCATAB FCB $C0,$C0,$D0,$E0,$F0,$F8,$FA,$BA,$7A,$3A
+ FCB $34,$2D,$1F,$17,$F,7,6,5,4,3,2,1,0,0
+
+BPRTAB FCB $C0,$C1,$C2,$C3,$C4,$C5,$C6,$C7,$87,$87,$47,$47
+ FCB $07,$07,$47,$47,$87,$87,$C7,$C7,$C6,$C5,$C4,$C3
+ FCB $C2,$C1,0,0
+
+GYRTAB FCB $38,$38,$31,$3A,$3B,$3C,$2D,$2E,$2F,$27
+ FCB $1F,$17,$17,$0F,$07,$07,$0F,$17,$17,$1F,$27,$2F
+ FCB $2E,$2D,$2C,$3B,$3A,$39,0,0
+
+BFTAB2 FCB $38,$39,$3A,$3B,$3C
+ FCB $3D,$3E,$3F,$37,$2F,$27,$17,$0F
+ FCB $07,$06,$05,$04,$03,$02
+ FCB $01,$01,$01,$49,$CA,$DA,$E8,$F8
+ FCB $F9,$FA,$FB,$FD,$FF,$BF,$3F,$3E
+ FCB $C0,$C0,$C0,$07,$07,$38,$38,$38
+ FCB $07,$C0,$38,$FF,$FF
+ FCB 0,0
+
+BFTAB FCB $38,$39,$3A,$3B,$3C
+ FCB $3D,$3E,$3F,$37,$2F,$27,$1F,$17
+ FCB $47,$47,$87,$87,$C7,$C7
+ FCB $C6,$C5,$CC,$CB,$CA,$DA,$E8,$F8
+ FCB $F9,$FA,$FB,$FD,$FF,$BF,$3F,$3E
+ FCB $C0,$C0,$C0,$07,$07,$38,$38,$38
+ FCB $07,$C0,$38,$FF,$FF
+ FCB 0,0
+
+CLLTAB FCB $38,$39,$3A,$3B,$3C
+ FCB $3D,$3E,$3F,$37,$2F,$27,$1F,$17
+ FCB $47,$47,$87,$87,$C7,$C7
+ FCB $C6,$C5,$CC,$CB,$CA,$DA,$E8,$F8
+ FCB $F9,$FA,$FB,$FD,$FF,$BF,$3F,$3E
+ FCB $3C
+ FCB 0,0
+
+LOGTAB FCB $37,$2F,$27,$1F,$17,$47,$47,$87
+ FCB $87,$C7,$C7,$C6,$C5,$CC,$CB,$CA
+ FCB $C0,$D0,$98,$38,$33
+ FCB 0,0
+
+DECT2  FCB    $07,$0F,$17,$1F,$27,$2F,$37,$3F
+       FCB    $3F,$7F,$7F,$BF,$BF,$FF,$FF,$FF,$BF,$BF
+       FCB    $7F,$7F,$3F,$3F
+       FCB    $3E,$3D,$3C,$3B,$3A,$39,$38,$38
+       FCB    $30,$28,$20,$08,$08,$49         
+       FCB    $52,$A5,$FB,$FC,$FD,$FE,$FF,$FF
+       FCB    $FE,$FD,$FC,$FB,$FA,$F9,$F8
+       FCB    $F0,$E8
+       FCB    $E0,$D8,$D0,$C8,$C0,$80,$40,$01
+       FCB    $01,$01,$01,$02,$03                 
+       FCB    $04,$05,$06,$4F,$EF,$F7,$FF,$FF
+       FCB    $F7,$EF,$E7,$DF,$D7,$CF,$C7
+       FCB    $87,$87,$47
+       FCB    $47,$7,0,0
+
+DECT1  FCB    $07,$0F,$17,$1F,$27,$2F,$37,$3F
+       FCB    $3F,$7F,$7F,$BF,$BF,$FF,$FF,$FF,$BF,$BF
+       FCB    $7F,$7F,$3F,$3F
+       FCB    $3E,$3D,$3C,$3B,$3A,$39,$38,$38
+       FCB    $78,$78,$B8,$B8,$F8,$F8         
+       FCB    $F9,$FA,$FB,$FC,$FD,$FE,$FF,$FF
+       FCB    $FE,$FD,$FC,$FB,$FA,$F9,$F8
+       FCB    $F0,$E8
+       FCB    $E0,$D8,$D0,$C8,$C0,$C1,$C2,$C3
+       FCB    $C4,$C5,$C6,$C7,$C7                 
+       FCB    $CF,$D7,$DF,$E7,$EF,$F7,$FF,$FF
+       FCB    $F7,$EF,$E7,$DF,$D7,$CF,$C7
+       FCB    $87,$87,$47
+       FCB    $47,$7,0,0
+
+DECTB4 FCB    $07,$0F,$17,$1F,$27,$2F,$37,$3F
+       FCB    $3E,$3D,$3C,$3B,$3A,$39,$38,$38
+       FCB    $78,$78,$B8,$B8,$F8,$F8,$F0,$E8 
+       FCB    $E0,$D8,$D0,$C8,$C0,$80,$41,$01
+       FCB    $01,$02,$03,$04,$05,$06,$07,$07
+       FCB    $07,$7,0,0
+
+DECTAB FCB    $07,$0F,$17,$1F,$27,$2F,$37,$3F
+       FCB    $3E,$3D,$3C,$3B,$3A,$39,$38,$38
+       FCB    $78,$78,$B8,$B8,$F8,$F8,$F0,$E8 
+       FCB    $E0,$D8,$D0,$C8,$C0,$C1,$C2,$C3
+       FCB    $C4,$C5,$C6,$C7,$C7,$87,$87,$47
+       FCB    $47,$7,0,0
+
+WCPROC LDY    #TABTAB
+PCCALL JSR    RAND           GET 
+       ANDA   #$F            LOOK AT LOW
+       CMPA   #12            0-11 PLEASE
+       BHS    PCCALL
+       ASLA
+       ASLA                  4 PER
+       TFR    A,B
+       LDX    B,Y            GET THE POINTER
+       ADDB   #2             POINT AT MASK
+       JSR    RAND
+       ANDA   B,Y            MASK IT
+       STX    PD,U           SAVE START
+       LEAX   A,X
+       STX    PD+2,U         SAVE IT
+
+PCSUB  LDX    PD+2,U         GET THE POINTER INTO OUR THING
+       LEAX   1,X
+       TST    ,X             END OF LIST
+       BNE    PCCS1
+       LDX    PD,U           START OVER
+PCCS1  STX    PD+2,U         MOVE TO NEXT
+
+RCS1   LDY    #PCRAM+1       FOR COLOR MATRIX
+RCS3   LDA    ,X+            GET A BYTE
+       BNE    RCS2
+       LDX    PD,U           START TABLE OVER
+       BRA    RCS3
+RCS2   STA    ,Y+            STORE IT
+       CMPY   #PCRAM+16
+       BLO    RCS3           AND LOOP
+
+       LDB    #$00           MOVING BLACK
+       LDA    PD+4,U
+       DECA
+       CMPA   #$5 
+       BLO    PCS7
+       LDA    #4
+PCS7   STA    PD+4,U         OFFSETTER
+       LDX    #PCRAM+1
+PCS4   STB    A,X
+       LEAX   5,X
+       CMPX   #PCRAM+16
+       BLO    PCS4
+       NAP    1,PCSUB
+
+*      MARQ - DRAW A LINKY MARQUIS.  PASS UPPER LEFT IN X.
+*      PASS LOWER RIGHT IN Y.  
+*      RANGES ARE INCLUSIVE.  LOWER-UPPER MUST BE EVEN (ODD INCLUSIVE)
+*      A CONTAINS THE HIGH AND LOW FLAVOR COLORS (<OUTER><INNER>)
+
+MARQ   PSHS   X,Y,D,U
+       ANDA   #$F0
+       STA    HFLAV    SAVE FLAVOR COLORS
+       LDA    ,S
+       ANDA   #$0F
+       STA    LFLAV
+       TFR    X,D
+       STA    LEFT
+       STB    UPPER
+       TFR    Y,D
+       STA    RIGHT
+       STB    LOWER
+       SUBB   UPPER          LOWER-UPPER ODD???
+       RORB                  CHECK
+       BCC    MARQ1          NOPE
+       DEC    LOWER          NOT THAT LOW...OK?
+
+MARQ1  JSR    GHIGH          GET HIGH DUPED  BYTE IN B 
+       LDA    UPPER          GET THE UPPER 
+       JSR    HHIGH          HIGH PART OF TOP DMASIZONTAL LINE
+       INCA
+       JSR    GLOW
+       BSR    HLOW           LOW PART
+*
+       LDA    LOWER
+       JSR    GHIGH
+       BSR    HHIGH          1 LESS FOR GEN PURP
+       DECA
+       JSR    GLOW
+       BSR    HLOW 
+*
+       LDA    LEFT           LEFT BYTE
+       JSR    GNORM
+       BSR    VHIGH          HIGH FLAVOR STUFF IN A VERT LINE
+*
+       LDA    RIGHT
+       JSR    GFLIP
+       BSR    VHIGH
+
+MAR11  PULS   U,D,X,Y,PC
+
+*      VHIGH - PLOT VERTICAL LINE FROM [UPPER TO LOWER]
+*      CONSISTING OF EVERY OTHER BYTE GETTING THE HIGH NIBBLE COLOR
+*      A HAS THE X TO USE
+
+VHIGH  PSHS   D,X,CC
+       BSR    SETUPV   SETUP X,B
+       SEI
+       STA    DMACON    STORE CONSTANT
+       LDA    #5       1 WIDE, B HIGH
+       EORB   #4
+       STD    DMASIZ
+       LDD    #0
+       STD    DMAORG     FROM NOWHERE
+       STX    DMADES     DESTINATION PEGGED
+       LDA    #$12     WRITE THE DMACONANT LINES
+       STA    DMACTL
+       PULS   CC,D,X,PC
+
+SETUPV PSHS   B
+       LDB    UPPER    GET UPPER Y
+       INCB            START 1 AFTER
+       TFR    D,X      THIS IS PONTER
+       LDB    LOWER
+       SUBB   UPPER    THIS IS GUARANTEED EVEN
+       DECB            EXCLUSIVE PLEASE
+       PULS   A,PC
+
+*      HHIGH - THIS ROUTINE PLOTS HIGH COLOR IN THE HIGH HALF OF
+*      CONSECUTIVE DMASIZONTAL PIXELS GOING FROM 
+*      [LEFT TO RIGHT] AT THE HEIGHT GIVEN IN REGISTER A.
+
+HHIGH  PSHS   X,D,CC
+       BSR    SETUPH   SETUP COUNT IN B, X POINTS AT FIRST BYTE
+       INCB            ADD 1 TO MAKE IT INCLUSIVE
+HHIGH1 SEI
+       STA    DMACON    STORE THE CONSTANT
+       EORB   #4
+       STB    DMASIZ
+       LDA    #5
+       STA    DMASIZ+1  1 HIGH
+       STD    DMAORG     GOOD ORIGINATION
+       STX    DMADES
+       LDA    #$12
+       STA    DMACTL
+       PULS   X,D,PC,CC
+
+HLOW   PSHS   X,D,CC
+       BSR    SETUPH   SETUP
+       DECB            EXCLUSIVE
+       LEAX   $100,X   MOVE OVER 1
+       BRA    HHIGH1   AND GO
+
+SETUPH PSHS   B        SAVE COLOR
+       TFR    A,B      MOVE Y OVER
+       LDA    LEFT     GET LEFT X
+       TFR    D,X      MAKE POINTER
+       LDB    RIGHT
+       SUBB   LEFT     FIND DIFFERENCE (EXCLUSIVE
+       PULS   A,PC     AND RETURN
+
+GHIGH  LDB    HFLAV    GET HIGH FLAVOR
+       LSRB
+       LSRB
+       LSRB
+       LSRB
+       ORAB   HFLAV    HIGH FLAVOR IN BOTH
+       RTS
+
+GLOW   LDB    LFLAV
+       ASLB
+       ASLB
+       ASLB
+       ASLB
+       ORAB   LFLAV
+       RTS
+
+GNORM  LDB    HFLAV
+       ORAB   LFLAV
+       RTS
+
+GFLIP  LDB    HFLAV
+       LSRB
+       LSRB
+       LSRB
+       LSRB
+       PSHS   B
+       LDB    LFLAV
+       ASLB
+       ASLB
+       ASLB
+       ASLB
+       ORAB   ,S+
+       RTS
+
+       END
diff --git a/RRP8.ASM b/RRP8.ASM
new file mode 100755 (executable)
index 0000000..007ff41
--- /dev/null
+++ b/RRP8.ASM
@@ -0,0 +1,717 @@
+ OPT NOL
+ LIB RRF
+ OPT LIS
+ STTL ROBOTS AND POSTS
+ ORG RPORG
+ JMP RINITV
+ JMP PSINV
+ FDB PSTP1V
+ JMP OPONV
+ JMP OPON1V
+ JMP SAFTYV
+ FDB RWDP1
+ FDB PSTP1V
+ JMP PKPROC
+*
+*SOUND TABLE
+*
+RBSND FCB $D0,$01,$0C,$14,$01,$08,$17,0 ROBOT HIT
+RMVSND FCB $C0,$01,$0A,$06,0 ROBOT MOVE
+PSKSND FCB $D0,$01,$08,$17,0 POST KILL
+*
+*INITIALIZE ROBOTS
+*
+RINITV LDA ROBCNT
+ PSHS A
+ BEQ RINX
+RINL JSR GETROB
+ LDD #RWDP1
+ STD OPICT,X
+ STD OLDPIC,X
+ BSR SAFTY
+RINL0 JSR RANDXY
+ CMPB XTEMP
+ BLS RINL1
+ CMPB XTEMP+1
+ BHS RINL1
+ CMPA XTEMP2
+ BLS RINL1
+ CMPA XTEMP2+1
+ BLO RINL0
+RINL1 STD OBJX,X
+ STA OX16,X
+ STB OY16,X
+ TFR D,U
+ LDD [OPICT,X]
+ JSR ASCAN
+ BNE RINL0
+ LDA ROBSPD
+ JSR RANDU
+ STA ODATA,X
+ LDD #ROBKIL
+ STD OCVECT,X
+ BSR OPON1 TURN HIM ON WITH PHONY COLOR
+ DEC ,S
+ BNE RINL
+ STX ROBST SAVE START OF LIST
+ MAKP ROBOT
+RINX PULS A,PC
+*
+*GRUNT SAFTY MARGIN
+*
+SAFTYV PSHS X,U,D
+ JSR PLINDX
+ LDA PWAV,X
+ CMPA #10
+ BLO SAF0
+ LDA #6
+ BRA SAF1
+SAF0 CMPA #5
+ BLS SAF1
+ LDA #5
+SAF1 LDX #SAFTAB-4
+ ASLA
+ ASLA
+ LEAX A,X
+ LDD ,X
+ STD XTEMP SET UP LIMITS
+ LDD 2,X
+ STD XTEMP2
+ PULS D,X,U,PC
+SAFTAB FCB $40,$B0,$1A,$7A
+ FCB $48,$A8,$1A,$7A
+ FCB $50,$A0,$2A,$6A
+ FCB $54,$9D,$30,$60
+ FCB $5D,$96,$35,$59
+ FCB $62,$94,$38,$5C
+*
+*ON PICTURE OF OBJECT
+*X=OBJ, A=COL
+OPON1V PSHS D,Y
+ LDA #FONCOL
+ BRA OPON2
+OPONV PSHS D,Y
+OPON2 STA XTEMP2
+ LDD OBJX,X
+ LDY OPICT,X
+ JSR MPCTON
+ PULS D,Y,PC
+*
+*INITIALIZE POSTS
+*
+PSINV  PSHS X,Y,U
+ LDX #PSLIST
+ STX PSTIN
+ LEAY ,X
+PSI00 CLR ,X+
+ CMPX #PSLEND
+ BLO PSI00
+ LDA PSTCNT
+ PSHS A
+ BEQ PSIX
+PSIL JSR GETPST
+ LDD PSTANI
+ STD OPICT,X
+ STD OLDPIC,X
+ BSR SAFTYV
+ LDD XTEMP
+ ADDD #$03FC ADJUST BOUNDS
+ STD XTEMP
+ LDD XTEMP2
+ ADDD #$02FD
+ STD XTEMP2
+PSI0 JSR RANDXY
+ CMPB XTEMP
+ BLS PSI1
+ CMPB XTEMP+1
+ BHS PSI1
+ CMPA XTEMP2
+ BLS PSI1
+ CMPA XTEMP2+1
+ BLO PSI0
+PSI1 STD OBJX,X
+ STA OX16,X
+ STB OY16,X
+ LDU OBJX,X
+ LDD [OPICT,X]
+ JSR ASCAN
+ BNE PSI0
+ LDD #PSTKIL
+ STD OCVECT,X
+ STY OBJID,X SAVE REF POINTER FOR KILL
+ LEAY 2,Y
+ JSR OPON1 ON MONO PHONY
+ DEC ,S
+ BNE PSIL
+PSIX PULS A,X,Y,U,PC
+*
+*ROBOT PROCESS
+*
+ROBOT LDA STATUS
+ BITA #$7F
+ BEQ ROB0A
+ NAP 2,ROBOT
+ROB0A NAP 10,ROB0
+ROB0 CLRB
+ LDA ROBCNT
+ PSHS D
+ BEQ ROBXXX
+ LDX ROBST
+ BRA ROB1A
+ROB1 LDX ,X
+ROB1A DEC ODATA,X TIME TO MOVE?
+ BEQ ROB1B
+ DEC ,S
+ BNE ROB1
+ROBXXX BRA ROBX ALL DONE
+ROB1B LDA ROBSPD
+ JSR RANDU
+ STA ODATA,X
+ LDB OY16,X
+ SUBB PY16 SEEK PLAYER
+ BHI ROB2
+ CMPB #$FE
+ BHI ROB3
+ LDB #4
+ BRA ROB2A
+ROB2 CMPB #2
+ BLO ROB3
+ LDB #-4
+ROB2A ADDB OY16,X
+ CMPB #YMAX-12
+ BHI ROB3
+ CMPB #YMIN
+ BLO ROB3
+ STB OY16,X
+ROB3 LDB OX16,X
+ SUBB PX16
+ BHI ROB4
+ LDB #2
+ BRA ROB4A
+ROB4 CMPB #1
+ BLO ROB5
+ LDB #-2
+ROB4A ADDB OX16,X
+ CMPB #XMAX-5
+ BHI ROB5
+ CMPB #XMIN 
+ BLO ROB5
+ STB OX16,X
+ROB5 LDD OPICT,X
+ ADDD #4
+ CMPD #RWDP4
+ BLS ROB11
+ LDD #RWDP1
+ROB11 STD OPICT,X
+ JSR DMAOFN
+ INC 1,S   MAKE A SOUND
+ LDU OPICT,X
+ LDD OBJX,X
+ PSHS X
+ LDX #PPTR
+ JSR COL0
+ PULS X
+ BEQ ROBLP
+ LDY ,X
+ BSR ROBKIL
+ DEC ,S
+ BEQ ROBX ALL DONE
+ LEAX ,Y
+ JMP ROB1A
+ROBLP DEC ,S
+ LBNE ROB1
+ROBX LDD ,S++
+ BEQ ROBXX NO SOUND NEEDED
+ LDD #RMVSND
+ JSR SNDLD
+ROBXX NAP 4,ROB0
+*KILL ROBOT
+ROBKIL LDA PCFLG  DONT BLOW ON PLAYER
+ BNE ROBKON
+ JSR EXST BLOW HIM UP!!!!
+ CMPX ROBST CHECK FOR START CHANGE
+ BNE ROBK0
+ LDD ,X
+ STD ROBST
+ROBK0 JSR KILROB
+ LDD #$0110
+ JSR SCORE
+ LDD #RBSND
+ JSR SNDLD
+ LDB #$E0 SPEED EM UP
+ LDA ROBSPD
+ MUL
+ CMPA RMXSPD
+ BLO ROBK1
+ STA ROBSPD
+ROBK1 DEC ROBCNT
+ROBKX RTS
+ROBKON JMP DMAON ON GRUNT...SEE WHAT YOU HIT
+*KILL POST
+PSTKIL LDA PCFLG
+ BNE PSTKON
+ JSR KILPST
+ LDD #0
+ STD [OBJID,X] WIPE OUT REFRESH
+ JSR DMAOFF
+ DEC PSTCNT
+ LDD FREE
+ BEQ PSTKX OUT OF PROCS
+ LEAU ,X
+ LDX ,X
+ STX OFREE
+ MAKP PKPROC
+ STU PD,X
+ LDD #PSKSND
+ JMP SNDLD
+PSTKX RTS
+PSTKON LDA PSTCOL
+ JMP OPON TURN HIM ON
+*
+*POST KILL PROCESS
+*
+PKPROC LDX PD,U
+ LDY OPICT,X
+ BRA PKPR2
+PKPR1 LDX PD,U
+ LDY OPICT,X
+ LEAY 5,Y
+ LDA ,Y
+ BNE PKPR2
+ JSR DMAOFF ITS ALL OVER....
+ LDD OFREE
+ STD ,X
+ STX OFREE
+ JMP SUCIDE
+PKPR2 STY OPICT,X
+ JSR DMAOFN
+ LDA 4,Y SLEEP TIME  VARIABLE SLEEP
+ LDX #PKPR1
+ JMP SLEEP
+*
+*POST IMAGES
+*
+PSTP1V EQU *
+*STAR
+PSP1A FCB 5,9    W,H
+ FDB PSD1A       DATA ADDR
+ FCB 6           SLEEP TIME
+PSP2A FCB 5,9
+ FDB PSD2A
+ FCB 3
+PSP3A FCB 5,9
+ FDB PSD3A
+ FCB 2,0        END OF SEQUENCE
+*SNOWFLAKE
+PSP1B FCB 5,9    W,H
+ FDB PSD1B       DATA ADDR
+ FCB 6           SLEEP TIME
+PSP2B FCB 5,9
+ FDB PSD2B
+ FCB 3
+PSP3B FCB 5,9
+ FDB PSD3B
+ FCB 2,0        END OF SEQUENCE
+*SQUARE
+PSP1C FCB 5,9    W,H
+ FDB PSD1C       DATA ADDR
+ FCB 6           SLEEP TIME
+PSP2C FCB 5,9
+ FDB PSD2C
+ FCB 3
+PSP3C FCB 5,9
+ FDB PSD3C
+ FCB 2,0        END OF SEQUENCE
+*TRIANGLE
+PSP1D FCB 5,9    W,H
+ FDB PSD1D       DATA ADDR
+ FCB 6           SLEEP TIME
+PSP2D FCB 5,9
+ FDB PSD2D
+ FCB 3
+PSP3D FCB 5,9
+ FDB PSD3D
+ FCB 2,0        END OF SEQUENCE
+*VERT. BAR
+PSP1E FCB 3,9    W,H
+ FDB PSD1E       DATA ADDR
+ FCB 6           SLEEP TIME
+PSP2E FCB 3,9
+ FDB PSD2E
+ FCB 3
+PSP3E FCB 3,9
+ FDB PSD3E
+ FCB 2,0        END OF SEQUENCE
+*DIAMOND
+PSP1F FCB 5,9    W,H
+ FDB PSD1F       DATA ADDR
+ FCB 6           SLEEP TIME
+PSP2F FCB 5,9
+ FDB PSD2F
+ FCB 3
+PSP3F FCB 5,9
+ FDB PSD3F
+ FCB 2,0        END OF SEQUENCE
+*2084 POST
+PSP1G FCB 9,7
+ FDB PSD1G
+ FCB 6
+PSP2G FCB 9,7
+ FDB PSD2G
+ FCB 3
+PSP3G FCB 9,7
+ FDB PSD3G
+ FCB 2,0
+*SPIKE
+PSP1H FCB 5,9
+ FDB PSD1H
+ FCB 6
+PSP2H FCB 5,9
+ FDB PSD2H
+ FCB 3
+PSP3H FCB 5,9
+ FDB PSD3H
+ FCB 2,0
+*SPIRAL
+PSP1I FCB 5,10
+ FDB PSD1I
+ FCB 6
+PSP2I FCB 5,10
+ FDB PSD2I
+ FCB 3
+PSP3I FCB 5,10
+ FDB PSD3I
+ FCB 2,0
+
+ IFC &A,NOL
+ OPT NOL
+ ENDIF
+*STAR PICTS
+PSD1A EQU *
+ FCB $00,$00,$90,$00,$00
+ FCB $09,$00,$90,$09,$00
+ FCB $00,$90,$90,$90,$00
+ FCB $00,$09,$99,$00,$00
+ FCB $99,$99,$99,$99,$90
+ FCB $00,$09,$99,$00,$00
+ FCB $00,$90,$90,$90,$00
+ FCB $09,$00,$90,$09,$00
+ FCB $00,$00,$90,$00,$00
+PSD2A EQU *
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$A0,$00,$00
+ FCB $00,$A0,$A0,$A0,$00
+ FCB $00,$0A,$AA,$00,$00
+ FCB $0A,$AA,$AA,$AA,$00
+ FCB $00,$0A,$AA,$00,$00
+ FCB $00,$A0,$A0,$A0,$00
+ FCB $00,$00,$A0,$00,$00
+ FCB $00,$00,$00,$00,$00
+PSD3A EQU *
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$A0,$00,$00
+ FCB $00,$0A,$AA,$00,$00
+ FCB $00,$00,$A0,$00,$00
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$00,$00,$00
+*SNOWFLAKE PICTS
+PSD1B EQU *
+ FCB $00,$00,$90,$00,$00
+ FCB $09,$09,$09,$09,$00
+ FCB $00,$90,$90,$90,$00
+ FCB $09,$09,$09,$09,$00
+ FCB $90,$90,$00,$90,$90
+ FCB $09,$09,$09,$09,$00
+ FCB $00,$90,$90,$90,$00
+ FCB $09,$09,$09,$09,$00
+ FCB $00,$00,$90,$00,$00
+PSD2B EQU *
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$A0,$00,$00
+ FCB $00,$0A,$0A,$00,$00
+ FCB $00,$A0,$A0,$A0,$00
+ FCB $0A,$0A,$0A,$0A,$00
+ FCB $00,$A0,$A0,$A0,$00
+ FCB $00,$0A,$0A,$00,$00
+ FCB $00,$00,$A0,$00,$00
+ FCB $00,$00,$00,$00,$00
+PSD3B EQU *
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$A0,$00,$00
+ FCB $00,$0A,$AA,$00,$00
+ FCB $00,$00,$A0,$00,$00
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$00,$00,$00
+*SQUARE PICTS
+PSD1C EQU *
+ FCB $99,$99,$99,$99,$90
+ FCB $99,$99,$99,$99,$90
+ FCB $99,$99,$99,$99,$90
+ FCB $99,$99,$99,$99,$90
+ FCB $99,$99,$99,$99,$90
+ FCB $99,$99,$99,$99,$90
+ FCB $99,$99,$99,$99,$90
+ FCB $99,$99,$99,$99,$90
+ FCB $99,$99,$99,$99,$90
+PSD2C EQU *
+ FCB $00,$00,$00,$00,$00
+ FCB $0A,$AA,$AA,$AA,$00
+ FCB $0A,$AA,$AA,$AA,$00
+ FCB $0A,$AA,$AA,$AA,$00
+ FCB $0A,$AA,$AA,$AA,$00
+ FCB $0A,$AA,$AA,$AA,$00
+ FCB $0A,$AA,$AA,$AA,$00
+ FCB $0A,$AA,$AA,$AA,$00
+ FCB $00,$00,$00,$00,$00
+PSD3C EQU *
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$0A,$AA,$00,$00
+ FCB $00,$0A,$AA,$00,$00
+ FCB $00,$0A,$AA,$00,$00
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$00,$00,$00
+*TRIANGLE PICT
+PSD1D EQU *
+ FCB $00,$00,$00,$00,$90
+ FCB $00,$00,$00,$09,$90
+ FCB $00,$00,$00,$99,$90
+ FCB $00,$00,$09,$99,$90
+ FCB $00,$00,$99,$99,$90
+ FCB $00,$09,$99,$99,$90
+ FCB $00,$99,$99,$99,$90
+ FCB $09,$99,$99,$99,$90
+ FCB $99,$99,$99,$99,$90
+PSD2D EQU *
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$00,$0A,$00
+ FCB $00,$00,$00,$AA,$00
+ FCB $00,$00,$0A,$AA,$00
+ FCB $00,$00,$AA,$AA,$00
+ FCB $00,$0A,$AA,$AA,$00
+ FCB $00,$AA,$AA,$AA,$00
+ FCB $00,$00,$00,$00,$00
+PSD3D EQU *
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$00,$A0,$00
+ FCB $00,$00,$0A,$A0,$00
+ FCB $00,$00,$AA,$A0,$00
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$00,$00,$00
+*VERT. BAR PICT
+PSD1E EQU *
+ FCB $99,$99,$90
+ FCB $99,$99,$90
+ FCB $99,$99,$90
+ FCB $99,$99,$90
+ FCB $99,$99,$90
+ FCB $99,$99,$90
+ FCB $99,$99,$90
+ FCB $99,$99,$90
+ FCB $99,$99,$90
+PSD2E EQU *
+ FCB $00,$00,$00
+ FCB $0A,$AA,$00
+ FCB $0A,$AA,$00
+ FCB $0A,$AA,$00
+ FCB $0A,$AA,$00
+ FCB $0A,$AA,$00
+ FCB $0A,$AA,$00
+ FCB $0A,$AA,$00
+ FCB $00,$00,$00
+PSD3E EQU *
+ FCB $00,$00,$00
+ FCB $00,$00,$00
+ FCB $00,$A0,$00
+ FCB $00,$A0,$00
+ FCB $00,$A0,$00
+ FCB $00,$A0,$00
+ FCB $00,$A0,$00
+ FCB $00,$00,$00
+ FCB $00,$00,$00
+*DIAMOND
+PSD1F EQU *
+ FCB $00,$00,$90,$00,$00
+ FCB $00,$09,$99,$00,$00
+ FCB $00,$99,$99,$90,$00
+ FCB $09,$99,$99,$99,$00
+ FCB $99,$99,$99,$99,$90
+ FCB $09,$99,$99,$99,$00
+ FCB $00,$99,$99,$90,$00
+ FCB $00,$09,$99,$00,$00
+ FCB $00,$00,$90,$00,$00
+PSD2F EQU *
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$A0,$00,$00
+ FCB $00,$0A,$AA,$00,$00
+ FCB $00,$AA,$AA,$A0,$00
+ FCB $0A,$AA,$AA,$AA,$00
+ FCB $00,$AA,$AA,$A0,$00
+ FCB $00,$0A,$AA,$00,$00
+ FCB $00,$00,$A0,$00,$00
+ FCB $00,$00,$00,$00,$00
+PSD3F EQU *
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$A0,$00,$00
+ FCB $00,$0A,$AA,$00,$00
+ FCB $00,$00,$A0,$00,$00
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$00,$00,$00
+*
+*2084
+*
+PSD1G EQU *
+ FCB $99,$99,$99,$99,$99,$99,$99,$99,$90
+ FCB $90,$00,$90,$00,$90,$00,$90,$90,$90
+ FCB $99,$90,$90,$90,$90,$90,$90,$90,$90
+ FCB $90,$00,$90,$90,$90,$00,$90,$00,$90
+ FCB $90,$99,$90,$90,$90,$90,$99,$90,$90
+ FCB $90,$00,$90,$00,$90,$00,$99,$90,$90
+ FCB $99,$99,$99,$99,$99,$99,$99,$99,$90
+PSD2G EQU *
+ FCB $00,$00,$00,$00,$00,$00,$00,$00,$00
+ FCB $0A,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$00
+ FCB $0A,$A0,$A0,$A0,$A0,$A0,$A0,$AA,$00
+ FCB $0A,$00,$A0,$A0,$A0,$00,$00,$0A,$00
+ FCB $0A,$AA,$A0,$A0,$A0,$A0,$AA,$AA,$00
+ FCB $0A,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$00
+ FCB $00,$00,$00,$00,$00,$00,$00,$00,$00
+PSD3G EQU *
+ FCB $00,$00,$00,$00,$00,$00,$00,$00,$00
+ FCB $00,$00,$00,$00,$00,$00,$00,$00,$00
+ FCB $00,$00,$00,$00,$00,$00,$00,$00,$00
+ FCB $00,$0A,$AA,$AA,$AA,$AA,$AA,$00,$00
+ FCB $00,$00,$00,$00,$00,$00,$00,$00,$00
+ FCB $00,$00,$00,$00,$00,$00,$00,$00,$00
+ FCB $00,$00,$00,$00,$00,$00,$00,$00,$00
+*SPIKE
+PSD1H EQU *
+ FCB $00,$00,$90,$00,$00
+ FCB $09,$99,$99,$99,$00
+ FCB $09,$99,$09,$99,$00
+ FCB $09,$90,$00,$99,$00
+ FCB $99,$00,$00,$09,$90
+ FCB $09,$90,$00,$99,$00
+ FCB $09,$99,$09,$99,$00
+ FCB $09,$99,$99,$99,$00
+ FCB $00,$00,$90,$00,$00
+PSD2H EQU *
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$A0,$00,$00
+ FCB $00,$AA,$AA,$A0,$00
+ FCB $00,$AA,$0A,$A0,$00
+ FCB $0A,$A0,$00,$AA,$00
+ FCB $00,$AA,$0A,$A0,$00
+ FCB $00,$AA,$AA,$A0,$00
+ FCB $00,$00,$A0,$00,$00
+ FCB $00,$00,$00,$00,$00
+PSD3H EQU *
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$A0,$00,$00
+ FCB $00,$0A,$AA,$00,$00
+ FCB $00,$AA,$0A,$A0,$00
+ FCB $00,$0A,$AA,$00,$00
+ FCB $00,$00,$A0,$00,$00
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$00,$00,$00
+*SPIRAL DATA
+PSD1I EQU *
+ FCB $99,$99,$99,$99,$90
+ FCB $90,$00,$00,$00,$90
+ FCB $90,$99,$99,$90,$90
+ FCB $90,$90,$00,$90,$90
+ FCB $90,$90,$90,$90,$90
+ FCB $90,$99,$90,$90,$90
+ FCB $90,$00,$00,$90,$90
+ FCB $99,$99,$99,$90,$90
+ FCB $00,$00,$00,$00,$90
+ FCB $09,$99,$99,$99,$90
+PSD2I EQU *
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$AA,$AA,$A0,$00
+ FCB $00,$A0,$00,$A0,$00
+ FCB $A0,$A0,$A0,$A0,$00
+ FCB $A0,$AA,$A0,$A0,$00
+ FCB $A0,$00,$00,$A0,$00
+ FCB $AA,$AA,$AA,$A0,$00
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$00,$00,$00
+PSD3I EQU *
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$AA,$AA,$A0,$00
+ FCB $00,$A0,$00,$A0,$00
+ FCB $00,$A0,$A0,$A0,$00
+ FCB $00,$AA,$A0,$00,$00
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$00,$00,$00
+ FCB $00,$00,$00,$00,$00
+*
+*ROBOT PITCHERS
+*
+RWDP1 FCB 5,13
+ FDB RWDD1
+RWDP2 FCB 5,13
+ FDB RWDD2
+RWDP3 FCB 5,13
+ FDB RWDD1
+RWDP4 FCB 5,13
+ FDB RWDD3
+RWDD1 FCB $00,$01,$11,$00,$00
+ FCB $00,$66,$66,$60,$00
+ FCB $00,$CC,$CC,$C0,$00
+ FCB $00,$01,$11,$00,$00
+ FCB $11,$91,$11,$91,$10
+ FCB $51,$19,$99,$11,$50
+ FCB $50,$11,$91,$10,$50
+ FCB $50,$01,$11,$00,$50
+ FCB $00,$01,$11,$00,$00
+ FCB $00,$11,$01,$10,$00
+ FCB $00,$11,$01,$10,$00
+ FCB $05,$55,$05,$55,$00
+ FCB $00,$00,$00,$00,$00
+RWDD2 FCB $00,$01,$11,$00,$00
+ FCB $00,$66,$66,$60,$00
+ FCB $00,$CC,$CC,$C0,$00
+ FCB $00,$01,$11,$00,$00
+ FCB $11,$91,$11,$91,$10
+ FCB $51,$19,$99,$11,$50
+ FCB $50,$11,$91,$10,$50
+ FCB $50,$01,$11,$00,$50
+ FCB $00,$11,$11,$00,$00
+ FCB $00,$11,$01,$10,$00
+ FCB $05,$55,$01,$10,$00
+ FCB $00,$00,$01,$10,$00
+ FCB $00,$00,$05,$55,$00
+RWDD3 FCB $00,$01,$11,$00,$00
+ FCB $00,$66,$66,$60,$00
+ FCB $00,$CC,$CC,$C0,$00
+ FCB $00,$01,$11,$00,$00
+ FCB $11,$91,$11,$91,$10
+ FCB $51,$19,$99,$11,$50
+ FCB $50,$11,$91,$10,$50
+ FCB $50,$01,$11,$00,$50
+ FCB $00,$01,$11,$10,$00
+ FCB $00,$11,$01,$10,$00
+ FCB $00,$11,$05,$55,$00
+ FCB $00,$11,$00,$00,$00
+ FCB $05,$55,$00,$00,$00
+ END
diff --git a/RRS22.ASM b/RRS22.ASM
new file mode 100755 (executable)
index 0000000..abcdd76
--- /dev/null
+++ b/RRS22.ASM
@@ -0,0 +1,1850 @@
+ STTL ROBOT OPERATING SYSTEM
+
+      IFNC  &A,NOL
+
+      LIB   RRF
+      ELSE
+  
+      OPT   NOL
+      LIB   RRF
+      OPT   LIS
+
+      ENDIF
+
+ ORG ROSORG
+ JMP INITV
+ JMP ASCANV
+ JMP SNDOUT
+ JMP SCRTRV
+ JMP SCOREV
+ JMP SCRT0V
+ JMP SCRCLV
+ JMP DMAOFV
+ JMP DMAONV
+ JMP BLKCLV
+ JMP PCTOFV
+ JMP PCTONV
+ JMP COLSTV
+ JMP COL0V
+ JMP HEXBCV
+ JMP BCDBNV                                      
+ JMP OINITV
+ JMP CRINIV
+ JMP PINITV
+ JMP RANDV
+ JMP R16V
+ JMP RMAXV
+ JMP RANDUV
+ JMP PLINDV
+ JMP PLDXV
+ JMP SNDLDV
+ JMP KILO1V
+ JMP GETOBV
+ JMP MAKEPV
+ JMP MKPRCV
+ JMP MSPRCV
+ JMP KILLV
+ JMP GNCIDV
+ JMP SUCIDV
+ JMP SLEEPV
+ JMP RIPV11
+ JMP MPROBV
+ JMP GETBV
+ JMP KILLBV
+ JMP KILLFV
+ JMP KILFPV
+ JMP GETRBV
+ JMP KILRBV
+ JMP GETPSV
+ JMP KILPSV
+ JMP GETHMV
+ JMP KILHMV
+ JMP DMAFNV
+ JMP MPCTNV
+ JMP BLKONV
+ JMP EXEC
+ JMP P1SWV
+ JMP P2SWV
+ JMP DIVABV
+ JMP RCMSAZ
+ JMP RCMSBZ
+ JMP RCMSDZ
+ JMP WCMSAZ
+ JMP WCMSBZ
+ JMP WCMSDZ
+ JMP BCDBNV
+ JMP RWMOVV
+ JMP AUDZ
+ JMP AUD1Z
+ JMP INIT20
+ JMP LF       LASER LFLASH COLOR ROUTINE
+ JMP   BCHA   BCD TO HEX IN A (FIX STUPID BUGS)
+*
+*SOUNDS
+*
+RPSND FCB $EF,$01,$20,$1E,0 REPLAY
+CNSND FCB $FF,$01,$20,$0C,0 COIN
+      FCB $FF,$01,$20,$20,0
+      FCB $FF,$03,$10,$24,0
+      FCB $FF,$01,$20,$27,0
+      FCB $FF,$01,$20,$2D,0
+      FCB $FF,$02,$10,$35,0
+      FCB $FF,$01,$20,$3A,0
+      FCB $FF,$01,$20,$3E,0
+* 
+*INITIALIZE
+*
+*PIA INIT TAB
+PIATAB FDB $0034,$FF35,$0034,$003C
+ FDB PIA0,PIA1,PIA2,PIA3
+*
+INITV  ORCC   #$FF     NO INTERRUPTS YET PLEASE
+       LDS    #HSTK    ONLY SETUP HARDWARE STACK
+ LDA #RAM>>8 SETUP DIRECT PAGE
+ TFR A,DP
+ LDA #1
+ STA RWCNTL     LETS RUN OUT OF ROMS TODAY.
+* PIAS INITIALIZED HERE.
+ LDX #PIATAB
+INIT1 CLRA
+ CLRB
+ STD [8,X] CLEAR CR, SELECT DDR
+ LDD ,X++
+ STD [6,X] SET DDR,CR
+ CMPX #PIATAB+8
+ BNE INIT1
+       LDA    #$FF     SHUT UP SOUND BOARD
+       STA    SOUND
+ JSR SCRCLR CLEAR THE SCREEN
+ LDA #$3F
+ STA SOUND     GET READY TO SEND A WHETEVER TO THE SOUND
+*CLEAR RAM STORAGE
+ LDX #RAM
+INIT10 CLR ,X+
+ LDB #WDATA
+ STB WDOG
+ CPX #HSTK
+ BNE INIT10
+ LDD #$A55A
+ STD HSEED
+ LDA #$60
+ STA XXX2 INIT 2ND IRQ LINE #
+ JSR P1SW UPRIGHT PLEASE
+ JSR PINIT INIT PROCESSES
+ BSR INIT20 MISC ROUTINES
+ JSR CMINIT SETUP CMOS
+ LDD #$FFFF STICK SWITCHES
+ STD PIA01
+ STD PIA21
+ LDA #2
+ STA PLRCNT
+ LDX #CREDST
+ JSR RCMOSA
+ TFR A,B
+ CMPA #$20
+ BHI INIT11
+ ANDB #$F
+ CMPB #9
+ BLO INIT12
+INIT11 CLRA
+ JSR WCMOSA
+INIT12 STA CREDIT CREDIT CRASH
+ MAKP GOV
+       LDA    #$2C     BACKY OFFY
+       STA    SOUND
+ COM STATUS FF---STATUS
+ ANDCC #$00 ENABLE IRQ,FIRQ
+ BRA EXEC
+*
+*MISC INIT ROUTINES
+*
+INIT20 JSR CRINIT
+ JSR PRINV INIT TEXT
+ JSR EXINIT INIT EXPLOSIONS
+ JMP OINIT INIT OBJECT LIST
+*
+*EXECUTIVE LOOP
+*
+EXEC LDX #ACTIVE
+ STX CRPROC
+EXEC0 LDA TIMER
+ CMPA #2
+ BLO EXEC0
+ ASLA
+ ASLA
+ ASLA
+ ADDA OVCNT
+ LSRA
+ STA OVCNT
+ CLR TIMER 
+ JSR RANDV     
+ LDA STATUS
+ BITA #$04
+ BNE SWP
+ JSR EXUPD UPDATE YOUR EXPLOSIONS
+*
+*SWITCH PROCESSING
+*
+SWP LDX SWPROC
+ BNE SWP1
+ LDX SWPROC+4
+ BEQ SWPX
+ LDD SWPROC+6
+ CLR SWPROC+4
+ CLR SWPROC+5
+ BRA SWP3
+SWP1 LDD SWPROC+2
+ CLR SWPROC
+ CLR SWPROC+1
+SWP3 ANDB STATUS
+ BNE SWP
+ JSR MKPROC
+ BRA SWP
+SWPX EQU *
+*
+*PROCESS DISPATCH
+*
+DISP LDU ACTIVE
+ BEQ DISPX
+DISP1 DEC PTIME,U
+ BNE DISP2
+ STU CRPROC
+ JMP [PADDR,U]
+*
+*SLEEP
+*A=SLEEP TIME X 16MSEC
+*X=WAKEUP ADDR
+*
+SLEEPV LDU CRPROC
+ STA PTIME,U
+ STX PADDR,U
+DISP2 LDU ,U
+ BNE DISP1
+DISPX LDS #HSTK
+ BRA EXEC
+*
+*SUICIDE
+*
+SUCIDV LDX CRPROC
+ LDS #HSTK
+ BSR KILLV
+ LEAU ,X
+ BRA DISP2 GET NEW CRPROC
+*
+*GENOCIDE : KILL EVERYONE EXCEPT FOR YOURSELF
+*
+GNCIDV PSHS A,X
+ LDX #ACTIVE
+GNC1 LDX ,X
+ BEQ GNCX
+ CMPX CRPROC
+ BEQ GNC1 DO NOT KILL SELF
+ LDA PTYPE,X DONT KILL COINS
+ CMPA #CTYPE
+ BEQ GNC1
+ BSR KILLV
+ BRA GNC1
+GNCX PULS A,X,PC
+*
+*KILL
+*X=PROCESS TO KILL
+*
+KILLV PSHS D,U
+ LDU #ACTIVE
+KILP1 CMPX ,U
+ BNE KILPLP NO MATCH
+ LDD ,X GET FORWARD LINK OF DEAD GUY
+ STD ,U
+ LDA PCOD,X
+ BEQ KILP2 REG PROCESS
+ LDD SPFREE SUPER PROCESS
+ STX SPFREE
+ BRA KILP3
+KILP2 LDD FREE
+ STX FREE PUT HIM AT HEAD OF FREE
+KILP3 STD ,X
+ LEAX ,U SAVE CRPROC FOR SUICIDE
+ PULS D,U,PC
+KILPLP LDU ,U
+ BNE KILP1
+ BSR ERROR
+ERROR  SEI ERROR TRAP
+ BRA   *   
+*
+*MAKE A SUPER PROCESS
+*X = START ADDR
+*A = USER TYPE
+*X =RETURNED WITH DATA BLOCK POINTER
+MSPRCV PSHS A,Y,U
+ LDU SPFREE
+ BNE *+3
+ JSR ERROR ERROR TRAP
+ LDY ,U
+ STY SPFREE
+ LDA #1
+ STA PCOD,U
+ LDA ,S GET TYPE
+ BRA MKP1
+*
+*MAKE A PROCESS
+*X=START ADDR
+*A=USER TYPE
+*X RETURNED WITH DATA BLOCK PTR
+*
+MKPRCV PSHS A,Y,U
+ LDU FREE
+ BNE MKP0 NOT OUT
+ JSR ERROR
+MKP0 LDY ,U
+ STY FREE DELINK
+ CLR PCOD,U
+MKP1 STX PADDR,U
+ STA PTYPE,U
+ LDA #1
+ STA PTIME,U INIT TIME
+ LDX [CRPROC]
+ STU [CRPROC]
+ STX ,U LINK IN
+ LEAX ,U SETUP X AS DATA BLOCK
+ PULS A,Y,U,PC
+*
+*MAKE A REG PROCESS
+*X RET WITH PROC PTR
+*[RET]=SADDR, TYPE=STYPE, RET=RET+2
+*
+MAKEPV PSHS U,A
+ LDU 3,S GET X
+ PULU X
+ STU 3,S NEW RETURN
+ LDA #STYPE
+ BSR MKPRCV
+ PULS U,A,PC
+*
+*GET OBJECT LIST CELL IN X
+*CALLER MUST INSERT INTO OWN LIST
+GETOBV PSHS D
+ LDX OFREE
+ BNE GETOB1 NOT OUT
+ JSR ERROR
+GETOB1 LDD OLINK,X  
+ STD OFREE
+ LDB #2
+GETOB2 CLR B,X  ZERO OUT DATA CELL
+ INCB
+ CMPB #OSIZE
+ BNE GETOB2
+ PULS D,PC
+*
+*KILL OBJECT CELL IN X
+*
+KILO1V CMPX ,U MATCH?
+ BNE KILOLP
+KILO2 LDY [,U] UNLINK
+ STY ,U
+ LDY OFREE
+ STX OFREE
+ STY ,X
+ PULS X,Y,U,PC
+KILOLP LDU ,U
+ BNE KILO1V CONTINUE
+ JSR ERROR
+*KILL ROBOT
+KILRBV PSHS X,Y,U
+ LDU #RPTR
+ JMP KILO1
+*KILL POST
+KILPSV PSHS X,Y,U
+ LDU #PPTR
+ JMP KILO1
+*KILL HUMAN
+KILHMV PSHS X,Y,U
+ LDU #HPTR
+ JMP KILO1
+*GET ROBOT
+GETRBV PSHS D
+ JSR GETOBJ
+ LDD RPTR
+ STX RPTR
+GETO1 STD OLINK,X
+ PULS D,PC
+*GET POST
+GETPSV PSHS D
+ JSR GETOBJ
+ LDD PPTR
+ STX PPTR
+ BRA GETO1
+*GET HUMAN
+GETHMV PSHS D
+ JSR GETOBJ
+ LDD HPTR
+ STX HPTR
+ BRA GETO1
+*GET MOTION OBJECT
+GETBV PSHS D
+ JSR GETOBJ
+ LDD OPTR
+ BRA GETO1
+*KILL A MOTION OBJECT
+KILLBV PSHS X,Y,U
+ LDU #OPTR
+ JMP KILO1
+*
+* RIPOFF CHECK
+*
+RIPV11 LDY    #RIPV1-$2857
+       MAKP   RIPC0
+       STY    PD+2,X
+       RTS
+*
+*KILL A MOTION OBJECT AND TURN IT OFF
+*X=OBJECT
+KILLFV BSR KILLBV
+ JMP DMAOFF
+*
+*KILL A MOTION OBJECT,TURN IT OFF,AND KILL ASSOC PROCESS
+*X=OBJ, OBJID,X=PROCESS
+*
+KILFPV PSHS X
+ BSR KILLFV
+ LDX OBJID,X
+ JSR KILL
+ PULS X,PC
+*
+*MAKE A PROCESS+OBJECT
+*RET=PROCESS,RET+2=OBJECT PICT,RET+4=COLL VECTOR,RET+6=BLIP
+*U RETURNED WITH PROCESS, X=OBJECT
+*X-PD,U;0-OXV,X OYV,X
+*RET EQ IF NOTHING LEFT
+MPROBV PSHS D,Y
+ LDX OFREE
+ BEQ MPRER NONE LEFT
+ LDX FREE
+ BEQ MPRER
+ CLRA
+ LDU 4,S
+ PULU X
+ JSR MKPROC
+ LEAY ,X
+ JSR GETOB
+ LDD ,U++
+ STD OLDPIC,X
+ STD OPICT,X
+ PULU D
+ STD OCVECT,X
+ STU 4,S NEW RET ADDR
+ LEAU ,Y
+ STU OBJID,X
+ STX PD,U
+ CLRA
+ CLRB
+ STD OYV,X
+ STD OXV,X
+ COMA RETURN NE
+ PULS D,Y,PC
+MPRER LDU 4,S CLEAN UP STACK
+ LEAU 8,U
+ STU 4,S
+ CLRA    RETURN EQ, NONE LEFT
+ PULS D,Y,PC
+RIPC0  LDA    RIPFLG   ALREADY ACTIVE??
+       BNE    RIPDIE   THEN NO NEED TO LIVE.
+       INC    RIPFLG   EXCLUDE PLEASE
+       LDA    #$3 
+       LDX    PD+2,U
+       LEAX   $2857,X
+       STX    PD+2,U
+       STA    PD,U
+RIPC2  NAP    8,RIPC1
+RIPC1  LDA    PIA2 
+       CMPA   #$A1      NEW COMBO      
+       BEQ    RIPC4    
+       CMPA   #$58      STILL OLD COMBO??
+       BEQ    RIPC2     THEN DON'T COUNT
+       DEC    PD,U
+       BNE    RIPC2
+       BRA    RIPC3
+RIPC4  LDA    #$3
+       STA    PD,U
+RIPC5  NAP    8,RIPC6
+RIPC6  LDA    PIA2 
+       CMPA   #$42      DN-START1-TH-FIRE
+       BNE    RIPCC7    DONE!
+       JMP    [PD+2,U]
+RIPCC7 CMPA   #$A1      OLD COMBO??
+       BEQ    RIPC5
+       DEC    PD,U      LESS TIME
+       BNE    RIPC5
+RIPC3  CLR    RIPFLG
+RIPDIE JMP    SUCIDE
+*
+*SOUND OUTPUT
+*B=SND TO MAKE
+*
+SNDOUT PSHS A,B,CC
+ ORCC #$FF
+ LDA #$3F
+ STA SOUND
+ COMB
+ ANDB #$3F DONT TURN ON LEDS
+ STB SOUND
+ PULS A,B,CC,PC
+*
+*SOUND LOADER
+*D=ADDR OF SOUND
+*TABLE FORMAT:SNDPRI,N*(REPCNT,SNDTMR(16MSEC),SND#);END:REPCNT=0
+SNDLDV PSHS X,D,CC
+ TFR D,X
+ LDA ,X
+ CMPA SNDPRI
+ BLO SNDLDX PRIORITY NOT HI ENOUGH
+ STA SNDPRI
+ LEAX -2,X
+ SEI
+ STX SNDX
+ LDD #$0101
+ STD SNDTMR INIT TIMER,REPCNT
+SNDLDX PULS X,D,CC,PC
+*
+*SOUND SEQUENCER
+*
+SNDSEQ LDA SNDTMR
+ BEQ SNDSX
+ DEC SNDTMR
+ BNE SNDSX
+ LDX SNDX
+ DEC SNDREP
+ BNE SNDS1
+ LEAX 3,X GET NEXT
+ STX SNDX
+ LDA ,X
+ BNE SNDS0 SOUND OVER?
+ STA SNDPRI YIP
+ BRA SNDSX
+SNDS0 STA SNDREP
+SNDS1 LDD 1,X
+ STA SNDTMR
+SNDSX1 BSR SNDOUT
+SNDSX EQU *
+*
+*SWITCH SCAN
+*TRIGGER=LAST 2 ZERO, NOW 1 GAME SWITCH
+*TRIGGER=LAST 1 ZERO, NOW 2 1'S COINS
+SSCAN LDA PIA0
+ BITA #$40
+ BEQ SSC00
+ LDA #60
+ STA SLMCNT
+SSC00 LDA SLMCNT
+ BEQ SSC0A
+ DEC SLMCNT
+SSC0A LDA LCCNT
+ BEQ SSC0B
+ DEC LCCNT
+SSC0B LDA CCCNT
+ BEQ SSC0C
+ DEC CCCNT
+SSC0C LDA RCCNT
+ BEQ SSC0
+ DEC RCCNT
+SSC0 LDA STATUS
+ BPL SSCX GAME ON... HE CANT START!!!
+ LDA INDIAG
+ BNE CSCX NO SWITCHES, TESTING
+ LDA PIA21
+ ORA PIA22
+ COMA
+ LDB PIA21
+ STB PIA22
+ LDB PIA2
+ STB PIA21
+ ANDA PIA21
+ ANDA #$30 MASK OUT STIKS
+ BEQ SSCX
+ LDX #STRT1
+ BITA #$10
+ BNE SSC1
+ LDX #STRT2
+SSC1 BSR SWITCH
+SSCX EQU *
+*
+*SCAN COIN SWITCHES
+*
+CSCAN LDA INDIAG
+ BNE CSCX NO SWITCHES TESTING
+ LDA PIA01
+ ORA PIA02
+ COMA
+ LDB PIA01
+ STB PIA02
+ LDB PIA0
+ ANDB #$3F
+ STB PIA01
+ BITA PIA01
+ BEQ CSCX NO HIT
+ LDX #120
+CSC1 LEAX -1,X  1 MSEC DELAY
+ BNE CSC1
+ LDB PIA0 DOUBLE CHECK
+ ANDB PIA01
+ STB PIA01
+ ANDA PIA01
+ BEQ CSCX  NOBODY THERE
+ LDX #CSWTAB-2
+CSC2 LEAX 2,X
+ LSRA
+ BCC CSC2
+ LDX ,X
+ BSR SWITCH
+ LDA #CTYPE
+ STA 2,U
+ RTS
+SWITCH LDU #SWPROC
+ LDD ,U
+ BEQ SSC2
+ LEAU 4,U
+SSC2 STX ,U
+ CLR 2,U
+ CLR 3,U
+CSCX RTS
+*COIN SWITCH TABLE
+CSWTAB FDB 0,ADVSW,RCOIN,HSBUTV,LCOIN,CCOIN,0,0
+
+       FCC    ' ROBOTRON: 2084 (TM) '
+       FCC    ' COPYRIGHT 1982 WILLIAMS ELECTRONICS INC. '
+       FCC    ' ALL RIGHTS RESERVED '
+
+*
+*SWITCH YOUR SCREEN
+*
+P1SWV PSHS D
+ LDD #$013C
+ BRA PSW1
+P2SWV PSHS D
+ LDD #$0334
+PSW1 STA RWCTMP
+ STA RWCNTL
+ STB PIA3+1
+ PULS D,PC
+*
+* CMOS PRIMITIVE FOR READING
+*
+RCMSAZ EQU *
+RCMOS LDAA 1,X GET LSB
+ ANDA #$0F LEAVE ONLY LS
+ PSHS A SAVE IT
+ LDAA ,X++ GET MSB + AUTO INC
+ ASLA
+ ASLA
+ ASLA
+ ASLA SHIFT LS TO MSB
+ ADDA ,S+ GET LSB + FIX STACK
+DRTS RTS BYE
+*
+* READ CMOS INTO D POINTED TO BY X: A=X,X+1; B=X+2,X+3
+*
+RCMSDZ BSR RCMSAZ GET THE FIRST BYTE+FALL THRU FOR 2ND
+*
+* READ CMOS INTO B POINTED TO BY X
+*
+RCMSBZ PSHS A SAVE A
+ BSR RCMSAZ GET IN A
+ TFR A,B PUT IT IN B
+ PULS A,PC DONE
+*
+* WRITE TO CMOS PRIMITIVE
+*
+WCMSAZ EQU *
+ PSHS A SAVE WHATS TO BE WRITTEN
+ STAA 1,X SAVE LSB
+ LSRA SHIFT MS TO LS
+ LSRA
+ LSRA
+ LSRA
+ STAA ,X++ SAVE MSB AND AUTO INC
+ PULS A,PC DONE
+*
+* WRITE CMOS FROM D TO X: A=X,X+1; B=X+2,X+3
+*
+WCMSDZ BSR WCMSAZ DO IT AND FALL THRU FOR 2ND
+*
+* WRITE CMOS FROM B TO X
+*
+WCMSBZ PSHS A SAVE A
+ TFR B,A MOVE B TO A
+ BSR WCMSAZ FAKE IT
+ PULS A,PC DONE
+*
+* ACRED: ADDS A CREDITS TO TOTAL CREDITS; 99 MAX
+*
+ACRED PSHS A,X SAVE
+ ADDA CREDIT GET PRESENT
+ DAA HUMANIZE
+ BCC ACRD0 NO OVERFLOW
+ LDAA #$99 YES, STAY AT 99
+ACRD0 STAA CREDIT SAVE NEW COUNT
+ LDX #CREDST BACKUP CREDITS
+ JSR WCMOSA
+ PULS X,A,PC GO BACK CLEAN
+*
+* COIN SLOT ROUTINES
+*
+COINR PSHS D,X SAVE STATE
+ LDAB #$03 3RD TOTALS(RIGHT COIN)
+ BRA COINZ HANDLE BELOW
+COINC PSHS D,X SAVE STATE
+ LDAB #$02 2ND TOTALS(CENTER COIN)
+ BRA COINZ HANDLE BELOW
+COINL PSHS D,X SAVE STATE
+ LDAB #$01 1ST TOTALS(LEFT COIN)
+COINZ JSR AUD1 BUMP COUNT BY 1
+ ASLB DOUBLE FOR CMOS
+ LDX #SLOT1M-2 POINT TO START-2
+ ABX REMOVE OFFSET
+ JSR RCMOSB GET CORRECT SLOT X
+ JSR BCDBIN CONVERT TO BINARY
+ LDAA BUNITS GET PRESENT BONUS UNITS
+ PSHS B AND ADD PRESENT COUNT TO IT
+ ADDA ,S
+ STAA BUNITS UPDATE
+ LDAA CUNITS
+ ADDA ,S+ GET PRESENT
+ STAA CUNITS UPDATE
+ LDX #MINUNT GET MINIMUM UNITS
+ JSR RCMOSB FROM CMOS
+ JSR BCDBIN WORK IN BINARY!!
+ PSHS B FOR CBA
+ CMPA ,S+ ENOUGH?
+ BCC COIN1 YES, GIVE IT
+ PULS D,X,PC NOT ENOUGH SO FAR, BYE!!
+COIN1 LDX #CUNITC HOW MANY?
+ JSR RCMOSB GET IT
+ JSR BCDBIN CONVERT TO HEX
+ BSR DIVABV SAVE REMAINDER IN B
+ PSHS A SAVE COUNT TO BE AWARDED FOR A WHILE
+ STAB CUNITS SAVE REMAINDER
+ LDX #CUNITB BONUS REQUIRES HOW MANY?
+ JSR RCMOSB IN B
+ LDAA BUNITS GET BONUS SO FAR
+ BSR BCDBNV CONVERT TO BINARY
+ BSR DIVABV DIVIDE
+ TSTA ANY YET?
+ BEQ COIN2 NO
+ CLR CUNITS YES, RESET ANY EXTRA
+ CLR BUNITS
+COIN2 ADDA ,S+ GET OTHER CREDITS EARNED
+ DAA HUMANIZE
+ LDAB #$04 BUMP TOTPDC
+ JSR AUD BY THE COUNT PAID FOR
+ JSR ACRED ADD TO CREDITS COUNTER
+ PULS D,X,PC CLEAN + GO
+*
+* DIVAB: A/B, REMAINDER IN B
+*
+DIVABV PSHS B SAVE
+ TSTB ANY?
+ BNE DIVAB0 YES, HANDLE
+ CLRA NO, SET TO 0
+ PULS B,PC CLEAN RETURN
+DIVAB0 EXG A,B FOR DAA
+ LDAA #$99 START-1
+DIVAB1 ADDA #$01 NEXT
+ DAA HUMANIZE
+ SUBB ,S TAKE AWAY N
+ BCC DIVAB1 LOOP TILL OVERFLOW
+ ADDB ,S+ ADD REMAINDER + FIX STACK
+ RTS BTE
+
+RIPTV FDB RIPTAB-$7F
+
+*      BCD TO BINARY IN A 
+*      LOCAL LABEL - BCHA
+*      GLOBAL        NEWBCH
+*
+BCHA   PSHS   B
+       TFR    A,B
+       BSR    BCDBNV
+       TFR    B,A
+       PULS   B,PC
+*
+*BCD-HEX CONVERT
+*B=BCD-HEX
+BCDBNV  PSHS A
+ CLRA
+BCH1 CMPB #$10
+ BLO BCH2
+ ADDA #10
+ SUBB #$10
+ BRA BCH1
+BCH2 PSHS A
+ ADDB ,S+
+ PULS A,PC
+*
+*HEX-BCD CONVERT
+*A=HEX-BCD
+HEXBCV  PSHS B
+ TFR A,B
+ CLRA
+HBC1 CMPB #10
+ BLO HBC2
+ ADDA #$10
+ DAA
+ SUBB #10
+ BRA HBC1
+HBC2 PSHS B
+ ADDA ,S+
+ DAA
+ PULS B,PC
+*
+*COIN SWITCHES
+*LEFT
+LCOIN LDX #LCCNT
+ LDY #COINL
+ BRA COIN                            
+*RIGHT
+RCOIN LDX #RCCNT
+ LDY #COINR
+ BRA COIN
+*CENTER
+CCOIN LDX #CCCNT
+ LDY #COINC
+*
+*COIN ROUTINE
+*X=DEBOUNCE COUNTER
+*B=ROUTINE
+COIN LDA SLMCNT
+ BNE SLAMX
+ LDA ,X
+ BNE SLAMX
+ LDA #$16 DEBOUNCE TIME
+ STA ,X
+ STY PD2,U SAVE JUMP
+ NAP 10,CN1
+CN1 LDA SLMCNT
+ BNE SLAMX SLAM, DITCH
+ LDA #5     RANDOM COIN SOUND
+ LDB SEED
+ ANDB #7
+ MUL
+ ADDD #CNSND
+ JSR SNDLD
+ JSR [PD2,U]
+SLAMX JMP SUCIDE
+RIPT1  FDB    PR57V-($76*3) 
+* AUDIT: COUNT=A, COUNTER=B (1-7)
+*
+AUD1Z PSHS D,X SAVE STATE
+ LDAA #$01 BUMP BY COUNT OF 1
+ BRA AUD2
+AUDZ PSHS D,X SAVE STATE
+AUD2 ANDB #$0F LIMIT TO 0-F
+ ASLB MAKE INTO 4X
+ PSHS B
+ ASLB
+ ADDB 0,S+  6X
+ LDX #CMOS-4+$100   POINT TO START-6  (CREDITS TAKES UP 2)
+ ABX GET THE CORRECT DESTINATION
+ JSR RCMOSB
+ PSHS B
+ JSR RCMOSB
+ PSHS B
+ JSR RCMOSB
+ PSHS B
+ ADDA ,S 
+ DAA
+ STA  ,S
+ LDA  1,S
+ ADCA #0
+ DAA
+ STA  1,S
+ LDA  2,S
+ ADCA #0
+ DAA
+ LEAX -6,X
+ JSR WCMOSA
+ PULS B
+ PULS A
+ JSR WCMOSD
+ PULS A
+AUDX PULS D,X,PC CLEAN UP
+*
+*GET PLAYER STATE INDEX
+*
+PLINDV PSHS A
+ LDA CURPLR
+PLND1 LDX #PLDATA
+ DECA
+ BEQ PLINX
+ LDX #ZP2SCR
+PLINX PULS A,PC
+PLDXV PSHS A
+ BRA PLND1
+*
+*RANDOM # 1-A UNIFORM DIST
+*
+RANDUV PSHS B
+ TFR A,B
+ BSR RANDV
+ MUL
+ INCA
+ PULS B,PC
+*
+*RANDOM #<=A TOP WEIGHTED DIST
+*
+RMAXV PSHS A
+ BSR RANDV
+RMAX1 CMPA ,S
+ BLS RMAXX
+ LSRA
+ BRA RMAX1
+RMAXX TSTA
+ BNE RMAXXX
+ INCA
+RMAXXX LEAS 1,S
+ RTS
+*16-BIT RANDOM
+R16V BSR RANDV
+ LDB LSEED
+ RTS
+*
+*RANDOM NUMBER GENERATOR
+*
+RANDV  PSHS   B
+       LDB    SEED
+       LDA    #3
+       MUL
+       ADDB   #17 
+       LDA    LSEED
+       LSRA
+       LSRA
+       LSRA
+       EORA   LSEED
+       LSRA
+       ROR    HSEED
+       ROR    LSEED
+       ADDB   LSEED
+       ADCB HSEED
+       STB SEED
+       LDA SEED
+       PULS   B,PC
+*
+*INITIALIZE PROCESS DATA STRUCTURE
+*
+PINITV PSHS X,D,U
+ CLRA
+ CLRB
+ LDX #PTAB
+ LDU #HCK1-$184
+ STX FREE
+PINIT1 LEAX PSIZE,X
+ STX -PSIZE,X
+ CMPX #TABEND-PSIZE
+ BNE PINIT1
+ STD ,X
+ STD ACTIVE
+*SUPER PROCESSES
+ LDX #SPTAB
+ STX SPFREE
+PINIT2 LEAX SPSIZE,X
+ STX -SPSIZE,X
+ CMPX #SPTEND-SPSIZE
+ BNE PINIT2
+ STD ,X
+ LDX #ACTIVE
+ STX CRPROC
+ LDB   #$7
+ TFR   D,X
+P3NITT ADDA  ,X
+ LEAX  $10,X
+ CMPX  #$8935
+ BLO   P3NITT
+ STA   $184,U
+ PULS X,D,PC,U
+
+RIPV1  JSR    GNCIDE    STOP ALL OF THE ACTION
+       LDA    #$FF
+       STA    STATUS    FOR REAL!
+       NAP    1,RIP99   STOP SAM BIT INTERFERENCE
+RIP99  JSR    SCRCLR    CLEAR THE SCREEN
+       JSR    PRINV     INITIALIZE PRINTING PARAMETERS
+       LDB    #$7F
+       STB    PCRAM+1   MAKE SURE ITS VISIBLE
+       LDY    RIPTV
+       LEAY   B,Y
+RIPST0 LDA    ,Y+       GET A BYTE
+       BEQ    RIPEND    END.    
+       CMPA   #$2       CHECK TIME??
+       BNE    RIPST8
+       LDA    PIA2      CHECK LEVER
+       BITA   #$40
+       BEQ    RIPEN2    HE LET GO...CAN IT!
+       BRA    RIPST0    GO AND GET NEXT BYTE.
+RIPST8 CMPA   #$1       CURSOR??
+       BNE    RIPST1    NOPE
+       LDX    ,Y++
+       CLR    TXFLAV    MAKE IT ALL LINE UP PRETTY
+       BRA    RIPST0
+RIPST1 ADDA   #$2E      GET OUT OF READABLE ASCII
+       LDU    #RIPST0
+       PSHS   U
+       LDU    RIPT1
+       LDB    RIPT2
+       LEAU   B,U
+       LEAU   B,U
+       LEAU   B,U
+       JMP    ,U
+*      BRA    RIPST0    THIS IS WHAT WOULD HAVE FOLLOWED A CONVENTIONAL JSR.
+RIPEND NAP    1,RIPEN1
+RIPEN1 LDA    PIA2 
+       BITA   #$40
+       BNE    RIPEND
+RIPEN2 JSR    SCRCLR
+       JMP    [$EFFE]   END RESET
+
+*INITIALIZE COLOR RAM
+CRINIV  LDX #CRTAB
+ LDU #PCRAM
+ LDB #16
+INITC LDA ,X+
+ STA ,U+
+ DECB
+ BNE INITC
+ RTS
+*
+*INITIALIZE OBJECT LIST
+*
+OINITV PSHS CC,X,D
+ ORCC #$FF OFF INTERRUPTS
+ LDX #OLIST
+ STX OFREE
+OINIT1 LEAX OSIZE,X
+ STX -OSIZE,X
+ CMPX #OLEND-OSIZE
+ BNE OINIT1
+ CLRA
+ CLRB
+ STD ,X LAST LINK 0
+ STD RPTR
+ STD OPTR
+ STD OBPTR
+ STD PPTR
+ STD HPTR
+ PULS CC,X,D,PC
+*
+*COLLISION DETECT
+*U=PICTURE DESC, D=UL COORD X,Y
+*X=OBJECT DESC
+******MODIFIED FOR OBJECTS STORED BY WIDTH FOR DMA*********
+COL0V STD ULX CALC LOWER RT
+ ADDD OBJW,U
+ STD LRX LR CORNER OF PLAYER
+ BRA COLLP
+COL1 LDD OBJX,X
+ BEQ COLLP OFF SCREEN
+ CMPA LRX
+ BHS COLLP
+ CMPB LRY
+ BHS COLLP
+ ADDD [OPICT,X] CALC LR
+ CMPA ULX
+ BLS COLLP
+ CMPB ULY
+ BHI IC1 CHECK INTERSECTION
+COLLP LDX OLINK,X
+ BNE COL1
+ RTS RET EQ
+RIPT2  FCB    $76
+*
+*COMPARE FOR PICTURE INTERSECTION 
+*FIND UPPERMOST
+IC1 STU CTEMP2 SAVE PLAYER DESC
+ TST PCFLG NO PHONIES ON PLAYER
+ BNE IC99
+ LDY FONIPC,X PHONY PICTURE?
+ BNE IC100
+IC99 LDY OPICT,X
+IC100 SUBD ,Y SAVE OBJX FROM IRQ
+ STY XTEMP2 SAVE PICT USED
+ STD XTEMP
+ CLRA
+ CLRB CLEAR OFFSETS
+ STD OX1 GET OBJECT
+ STD PX1 PLAYER
+ LDD XTEMP
+ SUBB ULY FIND UPERMOST
+ BHI IC10 PLAYER UPPERMOST
+ NEGB
+ STB OY1 OBJECT UPPERMOST
+ BRA IC2
+IC10 STB PY1
+*FIND LEFTMOST
+IC2 SUBA ULX
+ BHI IC20 PLAYER LEFTMOST
+ NEGA
+ STA OX1 OBJECT LEFTMOST
+ BRA IC3
+IC20 STA PX1
+*FIND LOWERMOST
+*CALC OY2
+IC3 LDD XTEMP GET OBJX
+ ADDD OBJW,Y
+ SUBB LRY
+ BHI IC4 OBJECT LOWEST
+ CLRB PLAYER LOWEST
+*FIND RIGHTMOST
+*CALC OX2
+IC4 SUBA LRX
+ BHI IC40 OBJECT RIGHTMOST
+ CLRA PLAYER RIGHTMOST
+*CALC X,Y COUNT
+IC40 STD CTEMP SAVE 
+ LDD OBJW,Y GET WIDTH,HEIGHT
+ SUBD OX1 OX1,OY1
+ SUBD CTEMP OX2,OY2
+ STD XCNT XCNT,YCNT
+*INIT SCAN PARAMETERS
+*Y=OBJECT ADDR
+*U=PLAYER ADDR
+ LDA OBJW,U
+ STA PLW
+ LDB PY1
+ MUL
+ LDU OBJDAT,U
+ LEAU D,U INIT PLAYER INDEXSH
+ LDA OBJW,Y
+ STA OBW
+ LDB OY1
+ MUL
+ LDY OBJDAT,Y
+ LEAY D,Y INIT OBJECT INDEX
+ LDA OX1
+ LEAY A,Y
+ LDA PX1
+ LEAU A,U
+IC5 LDB XCNT
+ DECB
+IC50 LDA B,U
+ BEQ IC6
+ LDA B,Y CHECK
+ BEQ IC6
+*CALC SCREEN ADDR OF HIT
+ LEAY B,Y
+ TFR Y,D
+ LDU XTEMP2 GET PICT BASE
+ SUBD OBJDAT,U OFFSET INTO ROM OBJECT
+ LDY OBJX,X
+FC1 SUBB OBJW,U CALC DY (ROWS)
+ SBCA #0
+ BCS FC3
+FC2 LEAY 1,Y
+ SUBB OBJW,U
+ SBCA #0
+ BCC FC2
+FC3 ADDB OBJW,U CORRECT OVER SUB
+ TFR B,A GET DX (COLS)
+ CLRB
+ LEAU D,Y
+ STU CENTMP
+ JSR [OCVECT,X]
+ LDA #1
+ RTS HIT
+IC6 DECB
+ BPL IC50 NOT FINISHED COLUMN
+ LDD OBW GET OBHT,PLHT
+ LEAY A,Y
+ LEAU B,U
+ DEC YCNT
+ BNE IC5
+ LDU CTEMP2
+ JMP COLLP
+*
+*COLOR PROCESSES
+*
+*START COLOR PROCESSES
+*
+COLSTV MAKP LASER
+ MAKP RGOLD
+ MAKP LF
+ MAKP RGB
+ MAKP BPR
+ MAKP DECAY
+ RTS
+
+RIPTAB FCB $01,$0C,$28,$26,$1A,$1B,$25,$0C,$1B,$25
+       FCB $0C,$24,$21,$14,$21,$26,$24,$21,$20,$11,$0C,4,$21,$A,6,2
+       FCB $01,$0C,$58,$16,$17,$25,$1B,$19,$20,$17,$16 
+       FCB $0C,$17,$2A,$15,$1E,$27,$25,$1B,$28,$17,$1E
+       FCB $2B,$0C,$18,$21,$24                            
+       FCB $01,$0C,$68,$29,$1B,$1E,$1E,$1B,$13,$1F,$25,$0C
+       FCB $17,$1E,$17,$15,$26,$24,$21,$20,$1B,$15,$25,$0C
+       FCB $1B,$20,$15,$0F,2                          
+       FCB $01,$0C,$78,$14,$2B,$0C,$17,$27,$19
+       FCB $17,$20,$17,$0C,$22,$0F,$0C,$1C,$13,$24,$28,$1B
+       FCB $25,$0C,$13,$20,$16,$0C,$1E,$13,$29,$24,$17,$20
+       FCB $15,$17,$0C,$17,$0F,$0C,$16,$17,$1F,$13,$24,$02
+       FCB $01,$0C,$A8,$15,$21,$22,$2B,$24,$1B,$19,$1A,$26
+       FCB $0C,$03,$0B,$0A,$04,$0C,$29,$1B,$1E,$1E,$1B,$13
+       FCB $1F,$25,$0C,$17,$1E,$17,$15,$26,$24,$21,$20,$1B
+       FCB $15,$25,$0C,$1B,$20,$15,$0F                                
+       FCB $01,$0C,$B8,$13,$1E,$1E,$0C,$24,$1B,$19,$1A,$26
+       FCB $25,$0C,$24,$17,$25,$17,$24,$28,$17,$16,$00,$17,$22,$30    
+
+*
+*TABLE DRIVEN PROCESSES
+*
+RGB    JSR TABDRI
+ FDB RGBTAB,PCRAM+$B,8
+RGBTAB FCB $38,$07,$C0,0
+*
+DECAY JSR TABDRI
+ FDB DCATAB,PCRAM+$C,2
+DCATAB FCB $C0,$C0,$D0,$E0,$F0,$F8,$FA,$BA,$7A,$3A
+ FCB $34,$2D,$1F,$17,$F,7,6,5,4,3,2,1,0
+*BLU-PURPLE RED
+BPR JSR TABDRI
+ FDB BPRTAB,PCRAM+$E,1
+BPRTAB FCB $C0,$C1,$C2,$C3,$C4,$C5,$C6,$C7,$87,$87,$47,$47
+ FCB $07,$07,$47,$47,$87,$87,$C7,$C7,$C6,$C5,$C4,$C3
+ FCB $C2,$C1,0
+*RED-GOLD
+RGOLD JSR TABDRI
+ FDB RGTAB,PCRAM+$F,6
+RGTAB FCB $07,$07,$2F,0
+*LASER 
+LASER JSR TABDRI
+ FDB COLTAB,PCRAM+$D,2
+*
+*TABLE DRIVEN PROCESS
+*PD,U BASE ADDR
+*PD2,U OFFSET
+*PD3,U SLEEP TIME
+*PD4,U PLACE TO STORE
+TABDRI LDX ,S++
+ LDD ,X++
+ STD PD,U
+ LDD ,X++
+ STD PD4,U
+ LDD ,X++
+ STD PD2,U
+TABDRV CLR PD2,U
+TABD LDX PD,U
+ LDB PD2,U
+ INC PD2,U
+ LDA B,X
+ BEQ TABDRV
+ STA [PD4,U]
+ LDA PD3,U
+ LDX #TABD
+ JMP SLEEP
+*
+*LASER FLASH
+*
+LF LDA #$FF
+ STA PCRAM+$A
+ NAP 2,LF1
+LF1 LDA SEED
+ ANDA #$1F
+ LDX #COLTAB
+ LDA A,X
+ STA PCRAM+$A
+ NAP 6,LF
+*
+*COLOR TABLE
+*
+COLTAB FCB $38,$39,$3A,$3B,$3C
+ FCB $3D,$3E,$3F,$37,$2F,$27,$1F,$17
+ FCB $47,$47,$87,$87,$C7,$C7
+ FCB $C6,$C5,$CC,$CB,$CA,$DA,$E8,$F8
+ FCB $F9,$FA,$FB,$FD,$FF,$BF,$3F,$3E
+ FCB $3C,0
+*
+*COLOR RAM TABLE
+*
+CRTAB FCB 0 0 SPACED OUT
+ FCB $07 1 RED
+ FCB $17 2 ORANGE
+ FCB $C7 3 PURPLE
+ FCB $1F 4 BROWN
+ FCB $3F 5 YELLOW
+ FCB $38 6 GREEN BRT.
+ FCB $C0 7 BLUE
+ FCB $A4 8 GRAY
+ FCB $FF 9 WHITE
+ FCB $38 A LASER FLASH
+ FCB $17 B RGB
+ FCB $CC C DECAY
+ FCB $81 D LASER
+ FCB $81 E BLU PURP RED
+ FCB $07 F RED-GOLD
+*
+*ON DMA BLOCK
+*D=ADDR, Y=PICT
+*
+BLKONV PSHS D,CC
+ SEI
+ STD DMADES
+ LDD ,Y
+ EORA #4
+ EORB #4
+ STD DMASIZ
+ LDD OBJDAT,Y
+ STD DMAORG
+ LDB XTEMP2
+ STB DMACON
+ LDA #$12
+ STA DMACTL
+ PULS D,CC,PC
+*
+*WRITE A PRETTY PICTURE WITH DMA
+*Y=PICT DESC,D=SCREEN ADDR X,Y
+PCTONV PSHS D,CC
+ SEI
+ STD DMADES
+ LDD ,Y
+ EORA #4 4 CYCLES FOR GREGGY POOH
+ EORB #4
+ STD DMASIZ
+ LDD OBJDAT,Y
+ STD DMAORG
+ LDA #$2  WRITE FULL CARDBOARD BOX
+ STA DMACTL
+ PULS D,CC,PC
+*
+*ON MONOCHROME PICT
+*Y=PICT DESC
+*D=SCREEN ADDR
+*COLOR=XTEMP2
+*
+MPCTNV PSHS D,CC
+ SEI
+ STD DMADES
+ LDD ,Y
+ EORA #4
+ EORB #4
+ STD DMASIZ
+ LDD OBJDAT,Y
+ STD DMAORG
+ LDB XTEMP2 GET THE COLOR
+ STB DMACON
+ LDA #$1A
+ STA DMACTL
+ PULS D,CC,PC
+*
+*OFF A PICTURE WITH DMA
+*Y=PICT DESC
+*D=SCREEN ADDR X,Y
+*
+PCTOFV PSHS D,CC
+ SEI
+ STD DMADES
+ LDD ,Y H/W
+ EORA #4
+ EORB #4
+ STD DMASIZ
+ LDD OBJDAT,Y
+PCTOF1 STD DMAORG
+ LDD #$1200 FULL CARDBOARD ERASE
+ STB DMACON
+ STA DMACTL
+ PULS D,CC,PC
+*
+*BLOCK CLEAR
+*X=ADDR, D=W,H
+*
+BLKCLV PSHS D,CC
+ SEI
+ STX DMADES
+ EORA #4
+ EORB #4
+ STD DMASIZ
+ LDD #0
+ BRA PCTOF1
+*
+*DMA ON OBJECT
+*X=PTR TO OBJECT
+*
+DMAONV PSHS D,U,CC
+ LDU OPICT,X
+ LDD ,U
+ EORA #4
+ EORB #4
+ SEI
+ STD DMASIZ
+ BRA DMAFON
+*
+*OFF OBJECT W/ DMA
+*X=PTR TO OBJECT
+*
+DMAOFV PSHS D,U,CC
+ LDU OLDPIC,X 
+ LDD ,U
+ LDU OBJDAT,U
+ EORA #4
+ EORB #4
+ SEI
+ STD DMASIZ
+ LDD OBJX,X
+ STD DMADES
+ STU DMAORG
+ LDD #$1A00
+ STB DMACON
+ LDB OFLAV,X
+ BPL DMAOF1
+ ORA #$20
+DMAOF1 STA DMACTL
+ PULS D,U,CC,PC
+*
+*OFF OLDIE AND ON NEW GUY
+*X= PTR TO OBJECT
+*
+DMAFNV PSHS D,U,CC
+ LDU OLDPIC,X 
+ LDD ,U
+ LDU OBJDAT,U
+ EORA #4
+ EORB #4
+ SEI
+ STD DMASIZ
+ LDD OBJX,X
+ STD DMADES
+ STU DMAORG
+ LDD #$1A00
+ STB DMACON
+ LDB OFLAV,X
+ BPL DMAFN1
+ ORA #$20
+DMAFN1 STA DMACTL
+ LDU OPICT,X
+DMAFON STU OLDPIC,X
+ LDU OBJDAT,U
+ STU DMAORG
+ LDA OX16,X
+ LDB OY16,X
+ STD OBJX,X
+ STD DMADES
+ LDA #$A
+ LDB OX16+1,X
+ STB OFLAV,X
+ BPL DMAFN2
+ ORA #$20
+DMAFN2 STA DMACTL
+ PULS D,U,PC,CC
+*
+*SCREEN CLEAR
+*
+SCRCLV PSHS D,X,Y,U
+ LDU #RAM
+ LDX #0
+ TFR X,Y
+ TFR X,D
+SCLRLP PSHU X,Y,D
+ PSHU X,Y,D
+ PSHU X,Y,D
+ PSHU X,Y,D
+ PSHU X,Y,D
+ PSHU X 32 AT A CRACK
+ CMPU #0
+ BNE SCLRLP
+ PULS D,X,Y,U,PC
+*
+*SCORE ROUTINE
+*A=0-7EXP,B=0-99
+*
+SCOREV PSHS A,B,X,U,Y
+ INC SCRFLG
+ LSRA
+ PSHS A
+ LDA #0
+ BCC SCR1
+ ASLB
+ ROLA
+ ASLB
+ ROLA
+ ASLB
+ ROLA
+ ASLB
+ ROLA
+SCR1 JSR PLINDX
+ STD XTEMP
+ LDB #3
+ SUBB ,S+
+ LDA B,X
+ ADDA XTEMP+1
+ DAA
+ STA B,X
+ DECB
+ BMI SCRX
+SCR2 LDA B,X
+ ADCA XTEMP
+ DAA
+ STA B,X
+ LDA #0
+ STA XTEMP
+ DECB
+ BPL SCR2
+*CHECK REPLAY
+SCRX LDD REPLA REPLAYS AVAILABLE
+ BEQ SCRXX NO
+ LEAY 4,X
+ LDD ,X
+ CMPD ,Y
+ BNE RCHX
+ LDD 2,X
+ CMPD 2,Y
+RCHX BLO SCRXX NO
+ LDA 2,Y GET NEXT LEVEL
+ ADDA REPLA+1
+ DAA
+ STA 2,Y
+ LDA 1,Y
+ ADCA REPLA
+ DAA
+ STA 1,Y
+ LDA   ,Y
+ ADCA  #0
+ DAA          DUMB ASSHOLE ASSOCIATION
+ STA   ,Y
+ LDD #RPSND   REPLAY HERE
+ JSR SNDLD
+ JSR PLINDX
+ INC PLAS,X
+ JSR MANDSP SHOW EM HIS MEN
+ LDB #5
+ JSR AUD1 INC REPLAY CNTR
+SCRXX BSR SCRTRV
+ PULS A,B,X,U,Y
+ RTS
+*
+*SCORE TRANSFER
+*
+SCRTRV  LDA CURPLR
+SCRT0V LDB #$11
+ CMPA CURPLR
+ BNE SCRTR1
+ LDB #$AA FLASHING NUMBERS
+SCRTR1 PSHS A
+ STB TEXCOL COLOR
+ DECA
+ BNE SCT1
+ LDX #P1DISP
+ LDU #ZP1SCR
+ BRA SCT2
+SCT1 LDX #P2DISP
+ LDU #ZP2SCR
+SCT2 LDD #$1506
+ JSR BLKCLR OFF CARDBOARD
+ LEAX -$300,X 7 NOT 8 DIGITS
+ CLR TEXTP3 BLANK
+ LDA ,U
+ ANDA #$F
+ JSR PRSCR
+ LDA 1,U
+ JSR PRSCR
+ LDA 2,U
+ JSR PRSCR
+ INC TEXTP3
+ LDA 3,U
+ JSR PRSCR  LAST 2 ALWAYS ON
+ PULS A,PC
+*
+*INTERRUPT ROUTINE
+*
+IRQV LDA PIA1
+ LDA #1
+ ORA RWCTMP
+ STA RWCNTL
+ LDA VERTCT PAST 128
+ CMPA #128
+ BLO I0 NO
+ LDA IFLG ALREADY DONE ?
+ BNE IRQX1 NO
+ INC IFLG
+ INC TIMER
+ JSR SNDSEQ SOUNDS+SWITCHES
+ JSR PLAYER
+ LDA VERTCT
+ CLR DMACON
+ LDB RWCTMP
+ BITB #2
+ BEQ IRQ1  NO COCK
+ ADDA #$10
+ STA XXX2
+ JSR OPB80
+ JSR PLA0
+IRQX1 BRA IRQX
+IRQ1 SUBA #$10
+ STA XXX2
+ JSR OPRC80
+ JSR PLA80
+ BRA IRQX
+I0 LDB IFLG
+ BEQ IRQX
+ CLR IFLG
+ INC TIMER
+ LDB #WDATA
+ STB WDOG
+ CMPA #4 TOO LATE?
+ BHI I01
+*COLOR MAPPING
+ LDU #CRAM+16
+ LDD PCRAM+10
+ LDX PCRAM+12
+ LDY PCRAM+14
+ PSHU D,X,Y
+ LDD PCRAM+4
+ LDX PCRAM+6
+ LDY PCRAM+8
+ PSHU D,X,Y
+ LDD PCRAM
+ LDX PCRAM+2
+ PSHU D,X                             
+I01 EQU *
+ INC FRAME
+ JSR CSCAN SCAN COIN SWITCHES
+ CLR DMACON
+ LDB RWCTMP
+ BITB #2
+ BEQ IRQ2 NO COCK
+ JSR OPB0
+ JSR PLA80
+ BRA IRQX
+IRQ2 JSR OPRC0 OBJEX
+ JSR PLA0 HANDLE PLAYER
+IRQX LDA RWCTMP
+ STA RWCNTL
+ RTI
+*OBJECT UPDATE COCKTAIL LINE 0
+OPB0 LDA STATUS
+ BITA #$08
+ BNE OPB0X
+ LDX OPTR
+ BEQ OPB0X
+OPBLP0 LDD OBJX,X
+ CMPB XXX2
+ BHI OPB0LP
+ JSR OBJOUT
+OPB0LP LDX ,X
+ BNE OPBLP0
+OPB0X RTS
+*OBJECT UPDATE COCKTAIL LINE80
+OPB80 LDA STATUS
+ BITA #8
+ BNE O80
+ LDX OPTR
+ BEQ OB80X
+OB8LP0 LDD OX16,X
+ LDU OPICT,X
+ ADDD OXV,X
+ CMPA #XMIN
+ BLO OB81 OUT OF BOUNDS
+ ADDA OBJW,U WIDTH CHECK
+ CMPA #XMAX+1
+ BHI OB81  OUT OF BOUNDS
+ SUBA OBJW,U
+ STD OX16,X
+OB81 LDD OY16,X
+ ADDD OYV,X
+ CMPA #YMIN
+ BLO OB82
+ ADDA OBJH,U
+ CMPA #YMAX+1
+ BHI OB82
+ SUBA OBJH,U
+ STD OY16,X
+OB82 LDD OBJX,X
+ CMPB XXX2
+ BLS OB80LP
+ JSR OBJOUT
+OB80LP LDX ,X
+ BNE OB8LP0
+OB80X RTS
+*PLAYER OUTPUT 80
+PLA80 LDA STATUS
+ BITA #$10
+ BNE P80X
+ LDX #PLOBJ
+ LDD PX
+ CMPB XXX2
+ BLS PLA1
+P80X RTS
+*PLAYER OUPUT 0
+PLA0 LDA STATUS
+ BITA #$10
+ BNE P80X
+ LDX #PLOBJ
+ LDD PX
+ CMPB XXX2
+ BHI OBJOUT
+ RTS
+PLA1 BRA OBJOUT
+*OBJECT UPDATE LINE 0
+OPRC0 LDA STATUS
+ BITA #$08
+ BNE OP0X
+ LDX OPTR
+ BEQ OP0X
+OP0LP0 LDD OBJX,X
+ CMPB XXX2
+ BLS OP0LP
+ BSR OBJOUT
+OP0LP LDX ,X
+ B