Save The Last Human Family

master
teamarchive2.fnf.archive.org root 2021-01-08 02:27:11 +00:00
commit da11ac0436
28 changed files with 21229 additions and 0 deletions

115
JAPDATA.ASM Executable file
View File

@ -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

1008
RRB10.ASM Executable file

File diff suppressed because it is too large Load Diff

738
RRC11.ASM Executable file
View File

@ -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

66
RRCHRIS.ASM Executable file
View File

@ -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

668
RRDX2.ASM Executable file
View File

@ -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

19
RRELESE6.ASM Executable file
View File

@ -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

984
RRET.ASM Executable file
View File

@ -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

717
RRF.ASM Executable file
View File

@ -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

112
RRFRED.ASM Executable file
View File

@ -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 *

1572
RRG23.ASM Executable file

File diff suppressed because it is too large Load Diff

1366
RRH11.ASM Executable file

File diff suppressed because it is too large Load Diff

740
RRHX4.ASM Executable file
View File

@ -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

591
RRLOG.ASM Executable file
View File

@ -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

1056
RRLOGD.ASM Executable file

File diff suppressed because it is too large Load Diff

368
RRM1.ASM Executable file
View File

@ -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

717
RRP8.ASM Executable file
View File

@ -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

1850
RRS22.ASM Executable file

File diff suppressed because it is too large Load Diff

1536
RRSCRIPT.ASM Executable file

File diff suppressed because it is too large Load Diff

811
RRSET.ASM Executable file
View File

@ -0,0 +1,811 @@
OPT NOL
LIB RRFRED
OPT LIS
ORG SETORG SET US HERE
FDB TAB35Z
FDB TAB57Z
TAB35Z FDB C0
FDB C1
FDB C2
FDB C3
FDB C4
FDB C5
FDB C6
FDB C7
FDB C8
FDB C9
FDB CSP
FDB CEX
FDB CCO
FDB CPE
FDB CAR
FDB ACL
FDB AHY
FDB CA
FDB CB
FDB CCC
FDB CD
FDB CE
FDB CF
FDB CG
FDB CH
FDB CI
FDB CJ
FDB CK
FDB CL
FDB CM
FDB CN
FDB CO
FDB CP
FDB CQ
FDB CR
FDB CS
FDB CT
FDB CU
FDB CV
FDB CW
FDB CX
FDB CY
FDB CZ
FDB CLP
FDB CRP
FDB CFRB
FDB CSLSH
C0 FCB 3
FCB $FF,$F0
FCB $F0,$F0
FCB $F0,$F0
FCB $F0,$F0
FCB $FF,$F0
C1 FCB 3
FCB $0F,$00
FCB $0F,$00
FCB $0F,$00
FCB $0F,$00
FCB $0F,$00
C2 FCB 3
FCB $FF,$F0
FCB $00,$F0
FCB $FF,$F0
FCB $F0,$00
FCB $FF,$F0
C3 FCB 3
FCB $FF,$F0
FCB $00,$F0
FCB $0F,$F0
FCB $00,$F0
FCB $FF,$F0
C4 FCB 3
FCB $F0,$F0
FCB $F0,$F0
FCB $FF,$F0
FCB $00,$F0
FCB $00,$F0
C5 FCB 3
FCB $FF,$F0
FCB $F0,$00
FCB $FF,$F0
FCB $00,$F0
FCB $FF,$F0
C6 FCB 3
FCB $FF,$F0
FCB $F0,$00
FCB $FF,$F0
FCB $F0,$F0
FCB $FF,$F0
C7 FCB 3
FCB $FF,$F0
FCB $00,$F0
FCB $00,$F0
FCB $00,$F0
FCB $00,$F0
C8 FCB 3
FCB $FF,$F0
FCB $F0,$F0
FCB $FF,$F0
FCB $F0,$F0
FCB $FF,$F0
C9 FCB 3
FCB $FF,$F0
FCB $F0,$F0
FCB $FF,$F0
FCB $00,$F0
FCB $00,$F0
CSP FCB 1
FCB $00
FCB $00
FCB $00
FCB $00
FCB $00
CEX FCB 1
FCB $F0
FCB $F0
FCB $F0
FCB $00
FCB $F0
CCO FCB 3
FCB $00,$00
FCB $00,$00
FCB $00,$00
FCB $FF,$00
FCB $0F,$00
CPE FCB 1
FCB $00
FCB $00
FCB $00
FCB $00
FCB $F0
CAR FCB 5
FCB $00,$F0,$00
FCB $0F,$FF,$00
FCB $FF,$FF,$F0
FCB $00,$F0,$00
FCB $00,$F0,$00
ACL FCB 1
FCB $00
FCB $F0
FCB $00
FCB $F0
FCB $00
AHY FCB 3
FCB $00,$00
FCB $00,$00
FCB $FF,$F0
FCB $00,$00
FCB $00,$00
CA FCB 3
FCB $FF,$F0
FCB $F0,$F0
FCB $FF,$F0
FCB $F0,$F0
FCB $F0,$F0
CB FCB 3
FCB $FF,$F0
FCB $F0,$F0
FCB $FF,$00
FCB $F0,$F0
FCB $FF,$F0
CCC FCB 3
FCB $FF,$F0
FCB $F0,$00
FCB $F0,$00
FCB $F0,$00
FCB $FF,$F0
CD FCB 3
FCB $FF,$00
FCB $F0,$F0
FCB $F0,$F0
FCB $F0,$F0
FCB $FF,$00
CE FCB 3
FCB $FF,$F0
FCB $F0,$00
FCB $FF,$00
FCB $F0,$00
FCB $FF,$F0
CF FCB 3
FCB $FF,$F0
FCB $F0,$00
FCB $FF,$00
FCB $F0,$00
FCB $F0,$00
CG FCB 3
FCB $FF,$F0
FCB $F0,$00
FCB $F0,$F0
FCB $F0,$F0
FCB $FF,$F0
CH FCB 3
FCB $F0,$F0
FCB $F0,$F0
FCB $FF,$F0
FCB $F0,$F0
FCB $F0,$F0
CI FCB 3
FCB $FF,$F0
FCB $0F,$00
FCB $0F,$00
FCB $0F,$00
FCB $FF,$F0
CJ FCB 3
FCB $00,$F0
FCB $00,$F0
FCB $00,$F0
FCB $F0,$F0
FCB $FF,$F0
CK FCB 3
FCB $F0,$F0
FCB $F0,$F0
FCB $FF,$00
FCB $F0,$F0
FCB $F0,$F0
CL FCB 3
FCB $F0,$00
FCB $F0,$00
FCB $F0,$00
FCB $F0,$00
FCB $FF,$F0
CM FCB 5
FCB $FF,$FF,$F0
FCB $F0,$F0,$F0
FCB $F0,$F0,$F0
FCB $F0,$00,$F0
FCB $F0,$00,$F0
CN FCB 3
FCB $FF,$F0
FCB $F0,$F0
FCB $F0,$F0
FCB $F0,$F0
FCB $F0,$F0
CO FCB 3
FCB $FF,$F0
FCB $F0,$F0
FCB $F0,$F0
FCB $F0,$F0
FCB $FF,$F0
CP FCB 3
FCB $FF,$F0
FCB $F0,$F0
FCB $FF,$F0
FCB $F0,$00
FCB $F0,$00
CQ FCB 3
FCB $FF,$F0
FCB $F0,$F0
FCB $FF,$F0
FCB $00,$F0
FCB $00,$F0
CR FCB 3
FCB $FF,$F0
FCB $F0,$F0
FCB $FF,$00
FCB $F0,$F0
FCB $F0,$F0
CS FCB 3
FCB $FF,$F0
FCB $F0,$00
FCB $FF,$F0
FCB $00,$F0
FCB $FF,$F0
CT FCB 3
FCB $FF,$F0
FCB $0F,$00
FCB $0F,$00
FCB $0F,$00
FCB $0F,$00
CU FCB $3
FCB $F0,$F0
FCB $F0,$F0
FCB $F0,$F0
FCB $F0,$F0
FCB $FF,$F0
CV FCB 3
FCB $F0,$F0
FCB $F0,$F0
FCB $F0,$F0
FCB $0F,$00
FCB $0F,$00
CW FCB 5
FCB $F0,$00,$F0
FCB $F0,$00,$F0
FCB $F0,$F0,$F0
FCB $F0,$F0,$F0
FCB $FF,$FF,$F0
CX FCB 3
FCB $F0,$F0
FCB $F0,$F0
FCB $0F,$00
FCB $F0,$F0
FCB $F0,$F0
CY FCB 3
FCB $F0,$F0
FCB $F0,$F0
FCB $FF,$F0
FCB $0F,$00
FCB $0F,$00
CZ FCB 3
FCB $FF,$F0
FCB $00,$F0
FCB $0F,$00
FCB $F0,$00
FCB $FF,$F0
CLP FCB 3
FCB $0F,$00
FCB $F0,$00
FCB $F0,$00
FCB $F0,$00
FCB $0F,$00
CRP FCB 3
FCB $0F,$00
FCB $00,$F0
FCB $00,$F0
FCB $00,$F0
FCB $0F,$00
CFRB FCB 7
FCB $00,$0F,$00,$00
FCB $00,$00,$F0,$00
FCB $FF,$00,$FF,$00
FCB $00,$00,$F0,$00
FCB $00,$0F,$00,$00
CSLSH FCB 3
FCB $00,$F0
FCB $00,$F0
FCB $0F,$00
FCB $F0,$00
FCB $F0,$00
TAB57Z FDB D0
FDB D1
FDB D2
FDB D3
FDB D4
FDB D5
FDB D6
FDB D7
FDB D8
FDB D9
FDB DSP
FDB DEX
FDB DCO
FDB DPE
FDB DAR
FDB DCL
FDB DHY
FDB DA
FDB DB
FDB DCC
FDB DD
FDB DE
FDB DF
FDB DG
FDB DH
FDB DI
FDB DJ
FDB DK
FDB DL
FDB DM
FDB DN
FDB DO
FDB DP
FDB DQ
FDB DR
FDB DS
FDB DT
FDB DU
FDB DV
FDB DW
FDB DX
FDB DY
FDB DZ
FDB DLP
FDB DRP
FDB DFRB
FDB DSLSH
D0 FCB 5
FCB $99,$99,$90
FCB $90,$00,$90
FCB $90,$00,$90
FCB $90,$00,$90
FCB $90,$00,$90
FCB $99,$99,$90
D1 FCB 5
FCB $00,$99,$00
FCB $00,$09,$00
FCB $00,$09,$00
FCB $00,$09,$00
FCB $00,$09,$00
FCB $09,$99,$90
D2 FCB 5
FCB $09,$99,$90
FCB $00,$00,$90
FCB $99,$99,$90
FCB $90,$00,$00
FCB $90,$00,$00
FCB $99,$99,$00
D3 FCB 5
FCB $09,$99,$90
FCB $00,$00,$90
FCB $09,$99,$90
FCB $00,$00,$90
FCB $00,$00,$90
FCB $99,$99,$90
D4 FCB 5
FCB $90,$00,$00
FCB $90,$09,$00
FCB $90,$09,$00
FCB $99,$99,$90
FCB $00,$09,$00
FCB $00,$09,$00
D5 FCB 5
FCB $99,$99,$00
FCB $90,$00,$00
FCB $99,$99,$90
FCB $00,$00,$90
FCB $00,$00,$90
FCB $99,$99,$90
D6 FCB 5
FCB $99,$99,$00
FCB $90,$00,$00
FCB $99,$99,$90
FCB $90,$00,$90
FCB $90,$00,$90
FCB $99,$99,$90
D7 FCB 5
FCB $99,$99,$90
FCB $00,$00,$90
FCB $00,$09,$00
FCB $00,$90,$00
FCB $09,$00,$00
FCB $90,$00,$00
D8 FCB 5
FCB $99,$99,$90
FCB $90,$00,$90
FCB $99,$99,$90
FCB $90,$00,$90
FCB $90,$00,$90
FCB $99,$99,$90
D9 FCB 5
FCB $99,$99,$90
FCB $90,$00,$90
FCB $99,$99,$90
FCB $00,$00,$90
FCB $00,$00,$90
FCB $09,$99,$90
DSP FCB 3 SPACE
FCB $00,$00
FCB $00,$00
FCB $00,$00
FCB $00,$00
FCB $00,$00
FCB $00,$00
DEX FCB 2
FCB $FF,$00
FCB $FF,$00
FCB $FF,$00
FCB $FF,$00
FCB $00,$00
FCB $FF,$00
FCB $FF,$00
DCO FCB 2 COMMA
FCB $00,$00
FCB $00,$00
FCB $00,$00
FCB $FF,$00
FCB $FF,$00
FCB $F0,$00
DPE FCB 2
FCB $00,$00
FCB $00,$00
FCB $00,$00
FCB $00,$00
FCB $FF,$00
FCB $FF,$00
DAR FCB 9 BLANKR USED TO BLOCK ERASE
FCB $FF,$FF,$FF,$FF,$F0
FCB $FF,$FF,$FF,$FF,$F0
FCB $FF,$FF,$FF,$FF,$F0
FCB $FF,$FF,$FF,$FF,$F0
FCB $FF,$FF,$FF,$FF,$F0
FCB $FF,$FF,$FF,$FF,$F0
DCL FCB 2 COLON
FCB $00,$00
FCB $FF,$00
FCB $FF,$00
FCB $00,$00
FCB $FF,$00
FCB $FF,$00
DHY FCB 3
FCB $00,$00
FCB $00,$00
FCB $00,$00
FCB $22,$20
FCB $00,$00
FCB $00,$00
DA FCB 5
FCB $66,$66,$60
FCB $60,$06,$60
FCB $66,$66,$60
FCB $60,$06,$60
FCB $60,$06,$60
FCB $60,$06,$60
DB FCB 5
FCB $66,$66,$00
FCB $60,$06,$00
FCB $66,$66,$60
FCB $66,$00,$60
FCB $66,$00,$60
FCB $66,$66,$60
DCC FCB 5
FCB $66,$66,$60
FCB $66,$00,$00
FCB $66,$00,$00
FCB $66,$00,$00
FCB $66,$00,$00
FCB $66,$66,$60
DD FCB 5
FCB $66,$66,$00
FCB $66,$00,$60
FCB $66,$00,$60
FCB $66,$00,$60
FCB $66,$00,$60
FCB $66,$66,$00
DE FCB 5
FCB $66,$66,$60
FCB $60,$00,$00
FCB $66,$66,$60
FCB $66,$00,$00
FCB $66,$00,$00
FCB $66,$66,$60
DF FCB 5
FCB $66,$66,$60
FCB $60,$00,$00
FCB $66,$66,$60
FCB $66,$00,$00
FCB $66,$00,$00
FCB $66,$00,$00
DG FCB 5
FCB $66,$66,$60
FCB $66,$06,$60
FCB $66,$00,$00
FCB $66,$06,$60
FCB $66,$00,$60
FCB $66,$66,$60
DH FCB 5
FCB $66,$00,$60
FCB $66,$00,$60
FCB $66,$66,$60
FCB $66,$00,$60
FCB $66,$00,$60
FCB $66,$00,$60
DI FCB 4
FCB $06,$60,$00
FCB $06,$60,$00
FCB $06,$60,$00
FCB $06,$60,$00
FCB $06,$60,$00
FCB $06,$60,$00
DJ FCB 5
FCB $00,$00,$60
FCB $00,$00,$60
FCB $00,$00,$60
FCB $00,$00,$60
FCB $66,$00,$60
FCB $66,$66,$60
DK FCB 5
FCB $66,$00,$60
FCB $66,$06,$00
FCB $66,$60,$00
FCB $66,$60,$00
FCB $66,$06,$00
FCB $66,$00,$60
DL FCB 5
FCB $60,$00,$00
FCB $60,$00,$00
FCB $60,$00,$00
FCB $60,$00,$00
FCB $66,$66,$60
FCB $66,$66,$60
DM FCB 5
FCB $66,$66,$60
FCB $60,$60,$60
FCB $60,$60,$60
FCB $60,$00,$60
FCB $60,$00,$60
FCB $60,$00,$60
DN FCB 5
FCB $66,$66,$60
FCB $60,$00,$60
FCB $66,$00,$60
FCB $66,$00,$60
FCB $66,$00,$60
FCB $66,$00,$60
DO FCB 5
FCB $66,$66,$60
FCB $60,$06,$60
FCB $60,$00,$60
FCB $60,$00,$60
FCB $60,$00,$60
FCB $66,$66,$60
DP FCB 5
FCB $66,$66,$60
FCB $60,$00,$60
FCB $66,$66,$60
FCB $66,$00,$00
FCB $66,$00,$00
FCB $66,$00,$00
DQ FCB 5
FCB $66,$66,$60
FCB $66,$00,$60
FCB $66,$00,$60
FCB $66,$00,$60
FCB $66,$06,$00
FCB $66,$60,$60
DR FCB 5
FCB $66,$66,$00
FCB $60,$06,$00
FCB $66,$66,$60
FCB $66,$00,$60
FCB $66,$00,$60
FCB $66,$00,$60
DS FCB 5
FCB $66,$66,$60
FCB $60,$00,$00
FCB $66,$66,$60
FCB $00,$00,$60
FCB $66,$00,$60
FCB $66,$66,$60
DT FCB 5
FCB $66,$66,$60
FCB $00,$60,$00
FCB $00,$66,$00
FCB $00,$66,$00
FCB $00,$66,$00
FCB $00,$66,$00
DU FCB 5
FCB $60,$06,$60
FCB $60,$06,$60
FCB $60,$06,$60
FCB $60,$06,$60
FCB $60,$06,$60
FCB $66,$66,$60
DV FCB 5
FCB $66,$00,$60
FCB $66,$00,$60
FCB $66,$00,$60
FCB $66,$00,$60
FCB $06,$06,$00
FCB $00,$60,$00
DW FCB 5
FCB $60,$00,$60
FCB $60,$00,$60
FCB $60,$00,$60
FCB $60,$60,$60
FCB $60,$60,$60
FCB $66,$66,$60
DX FCB 5
FCB $60,$00,$60
FCB $06,$06,$00
FCB $00,$60,$00
FCB $00,$60,$00
FCB $06,$06,$00
FCB $60,$00,$60
DY FCB 5
FCB $66,$00,$60
FCB $66,$00,$60
FCB $66,$66,$60
FCB $00,$60,$00
FCB $00,$60,$00
FCB $00,$60,$00
DZ FCB 5
FCB $66,$66,$60
FCB $00,$06,$00
FCB $00,$60,$00
FCB $06,$00,$00
FCB $66,$66,$60
FCB $66,$66,$60
DLP FCB 3
FCB $00,$F0
FCB $0F,$00
FCB $F0,$00
FCB $F0,$00
FCB $0F,$00
FCB $00,$F0
DRP FCB 3
FCB $F0,$00
FCB $0F,$00
FCB $00,$F0
FCB $00,$F0
FCB $0F,$00
FCB $F0,$00
DFRB FCB 4 SLASH
FCB $00,$0F,$00
FCB $00,$F0,$00
FCB $00,$F0,$00
FCB $0F,$00,$00
FCB $0F,$00,$00
FCB $F0,$00,$00
DSLSH FCB 5
FCB $00,$F0,$00
FCB $0F,$F0,$00
FCB $FF,$FF,$F0
FCB $0F,$F0,$00
FCB $00,$F0,$00
FCB $00,$00,$00
END

478
RRT2.ASM Executable file
View File

@ -0,0 +1,478 @@
OPT NOL
LIB RRF
OPT LIS
STTL TRANSPORTER.........
OPOINT EQU 0
OW EQU OPOINT+2 OFFSETS IN MEMORY BLOCK
OH EQU OW+1
OPT EQU OH+1 POINTER TO RAM DATA TO BE USED BY DMA
PICPTR EQU OPT+2 OBJECT
BYTCNT EQU PICPTR+2 NUMBER OF BYTES IN OBJECT
FRPTR EQU BYTCNT+1 POINTER TO CURRENT FRAME
GLTPTR EQU FRPTR+2
DATA EQU GLTPTR+2 DATA AREA 1 IS THIS DISTANCE INTO SECOND BLOCK
BKSIZE EQU 116+DATA SIZE OF ALLOCATION BLOCKS
ORG HXTAB
FREEP RMB 2
TRPTR RMB 2
GTEMP RMB 2
BYTES RMB 1
LAST RMB 2
TRRAM EQU *
RMB 10*BKSIZE
TREND EQU *
ORG RTORG PLACE TO RUN THE CODE FROM
JMP TRNSTV
***** T R A N S P O R T E R
*SOUNDS
TR1SND FCB $FF,$01,$01,$13,0 CLEAR THE SYSTEM
* COLORS FOR PIXEL GLITTER
GLIT0 FCB $99,$22,$55,$11,$99,$22,$55,$11,$99,$22 WH,RED,YEL,ORANG
FCB $55,$11,$99,$22,$55,$11,$99,$22,$55,$11
GLIT1 FCB $AA,$CC,$AA,$CC,$AA,$CC,$AA,$CC,$AA,$CC CY,CY
FCB $AA,$CC,$AA,$CC,$AA,$CC,$AA,$CC,$AA,$CC
GLIT2 FCB $99,$77,$99,$77,$99,$77,$99,$77,$99,$77 WH,BL
FCB $99,$77,$99,$77,$99,$77,$99,$77,$99,$77
GLIT3 FCB $11,$55,$11,$55,$11,$55,$11,$55,$11,$55 RED,YEL
FCB $11,$55,$11,$55,$11,$55,$11,$55,$11,$55
GLIT4 FCB $FF,$EE,$DD,$CC,$BB,$AA,$FF,$EE,$DD,$CC
FCB $BB,$AA,$FF,$EE,$DD,$CC,$BB,$AA,$FF,$EE
GLIT5 FCB $11,$66,$77,$BB,$AA,$11,$66,$77,$BB,$AA
FCB $11,$66,$77,$BB,$AA,$11,$66,$77,$BB,$AA
GLIT6 FCB $33,$55,$33,$55,$AA,$33,$55,$33,$55,$AA PURP,YEL + SOME WH.
FCB $33,$55,$33,$55,$AA,$33,$55,$33,$55,$AA
GLITAB FDB GLIT0
FDB GLIT1
FDB GLIT2
FDB GLIT3
FDB GLIT4
FDB GLIT5
FDB GLIT6
FDB GLIT4
FCC ' COPYRIGHT 1982 WILLIAMS ELECTRONICS INC. '
TRINIT PSHS X,Y
LDX #TRRAM POINT AT FIRST BLOCK
STX FREEP FREE LIST
TRIN0 LEAY BKSIZE,X FIND NEXT BLOCK
STY ,X MAKE THIS ONE POINT AT NEXT ONE
CMPY #TREND DID WE JUST POINT AT NON EXISTANT??
BHS TRIN1 YEP
LEAX ,Y NOW POINT AT NEXT
BRA TRIN0
TRIN1 LDY #0 END OF THE LINE
STY ,X
STY TRPTR NO ONE ON LIST
PULS X,Y,PC
* ONDRV - TRANSPORT GUY ON...
* X = POINTER TO H,W,DATA_POINTER
* X RETURNS POINTER TO RAM IMAGE TO REFRESH
TRSTRT PSHS Y,D,U
BSR GETBLK GET A DATA BLOCK
BCS ONBYE NO BLOCKS...BYE
ONDRV0 STY TRPTR PUT THE MAIN MAN ON THE LIST
STX PICPTR,Y SAVE PICTURE POINTER
LDD ,X GET W,H
STD OW,Y STORE THEM
MUL FORM BYTE COUNT
STB BYTCNT,Y AND SAVE
LEAU DATA,Y FIND WHERE DATA WILL START
STU OPT,Y
BSR CLRM CLEAR MEMORY IN ALLOCATED BLOCK
LDU #TRNTAB APPEAR TABLE TO BE USED
STU FRPTR,Y FIRST FRAME
JSR RAND GET RANDOM GLITTER
ANDA #$7
ASLA
LDU #GLITAB
LDD A,U
STD GLTPTR,Y
LEAX OW,Y THIS LOOKS LIKE AN OBJECT...RETURN IT
ONBYE PULS Y,U,D,PC PULL IT ALL AND RETURN
CLRM PSHS D,Y
LDY OPT,Y
CLRM1 CLR ,Y+ CLEAR A BYTE
DECB
BNE CLRM1
PULS PC,D,Y
GETBLK PSHS X
LDY FREEP
BEQ GETERR
LDX ,Y GET NEXT
STX FREEP MAKE LIST
LDX TRPTR GET CURRENT LIST
STX ,Y POINT AT IT
CLC
PULS X,PC
GETERR SEC
PULS X,PC
* Y BLOCK FOR OBJECT TO UPDATE
* X RETURNS PICPTR FOR OBJECT
* U RETURNS TRANS TABLE POINTER
TMAKE LDX FRPTR,Y GET FRAME POINTER
PSHS X AND SAVE IT SO WE MAY STILL USE U
LEAX 1,X KICK FRAM COUNTER
STX FRPTR,Y
LDA SEED
ANDA #$7
LDX GLTPTR,Y GET THE GLITTER POINTER
LEAX A,X ADD THE RANDOM GUY
STX GTEMP AND PUT IT IN RAM
LDX PICPTR,Y LOAD THE ACTUAL PICTURE POINTER
LDB BYTCNT,Y LOAD THE BYTE COUNT IN THE OBJECT
PULS U,PC PUT THE FRAME POINTER IN U AND RETURN
* TRNSPT - X POINTS AT DATA FOR OBJECT
* Y POINTS AT DATA AREA
* B CONTAINS BYTES IN OBJECT
* U EQUALS CURRENT TRANSPORT FRAME
TRNSPT PSHS D,U,Y,X
LDX 2,X POINT AT DATA TEMPLATE
LDY OPT,Y POINT AT PHONEY OBJECT
LDA ,U GET THE FRAME NUMBER
BPL XON TRANS EM ON THIS FRAME
ANDA #$7F TAKE OFF BIT AWAY.
JSR GETGRP GET THE GROUP POINTER IN U.
POFF0 LDD ,U++ GET THE NEXT POINT
CMPA BYTES CHECK BYTE NUMBER
BHS TRNDUN TOO LARGE TO BE IN THIS PICTURE
COMB TAKE AWAY TO TURN OFF.
ANDB A,Y
STB A,Y
BRA POFF0
XON BITA #$40 GLITTER FRAME??
BNE XONG THEN GET OUT OF HERE!
BSR GETGRP
PON0 LDD ,U++
CMPA BYTES
BHS TRNDUN
ANDB A,X GET WHAT THE BYTE LOOKS LIKE
ORAB A,Y OR IT IN (IT WAS OFF)
STB A,Y
BRA PON0
TRNDUN PULS D,PC,U,X,Y
XONG ANDA #$3F TAKE AWAY GLITTER BIT
BSR GETGRP
PON0G LDD ,U++
CMPA BYTES
BHS TRNDUN
ANDB A,X GET WHAT THE BYTE LOOKS LIKE
BEQ PON0G NOTHING THERE...DONE WITH THE BYTE
LDB [GTEMP] GET THE CURRENT GLITTER BYTE
INC GTEMP+1 KICK GLITTER POINTER
****************************************************************************
* BNE PON1G DIDN'T WRAP THESE 2 INSTRUCTIO
* INC GTEMP ARE SUPERFLOUS FOR MOST ADDRS
****************************************************************************
PON1G ANDB -1,U
ORAB A,Y OR IT IN (IT WAS OFF)
STB A,Y
BRA PON0G
GETGRP LDU #GRPLST GROUP TABLE
DECA MAKE 1-12, 0-11
ASLA
LDU A,U
STB BYTES SAVE BYTE COUNT
RTS
TRKIL PSHS X
LDX ,Y GET THE NEXT GUY
STX [LAST] MAKE THE LAST GUY POINT TO OUR NEXT
LDX FREEP
STX ,Y APPEND FREE LIST TO US
STY FREEP AND MAKE US THE LIST
LDY LAST MAKE POINT AT LAST FOR NEXT ITERATION
PULS X,PC
********* TRANSPORTER UPDATE
UPDATE LDY #TRPTR WORK THROUGH LIST
BRA TRNUP0
TRNUP3 JSR TMAKE FOR ALL OF THE PARAMETERS
CMPU #TABBOT TOO FAR ON ONE???
BEQ TRNUP1
JSR TRNSPT DO THE POINT
TRNUP0 STY LAST
LDY ,Y WALK TO NEXT
BNE TRNUP3 ITS GOOD
RTS DONE
TRNUP1 JSR TRKIL
BRA TRNUP0
TRNTAB FCB $43
FCB $83
FCB $46
FCB $86
FCB $44
FCB $84
FCB $42
FCB $82
FCB $41
FCB $81
FCB $47
FCB $87
FCB $44
FCB $46
FCB $84
FCB $42
FCB $86
FCB $43
FCB $82
FCB $41
FCB $83
FCB $45
FCB $81
FCB $48
FCB $85
FCB $47
FCB $88
FCB $44
FCB $87
FCB $45
FCB $42
FCB $84
FCB $46
FCB $85
FCB $47
FCB $82
FCB $48
FCB $86
FCB $43
FCB $87
FCB $41
FCB $88
FCB $42
FCB $83
FCB $44
FCB $81
FCB $45
FCB $47
FCB $82
FCB $46
FCB $84
COL2 FCB $85
FCB $48
FCB $87
FCB $43
FCB $86
FCB $44
FCB $42
FCB $88
FCB $45
FCB $83
FCB $41
FCB $84
FCB $43
FCB $82
FCB $47
FCB $46
FCB $85
FCB $48
FCB $81
FCB $42
FCB $83
FCB $44
FCB $87
FCB $41
FCB $86
FCB $45
FCB $88
FCB $43
FCB $46
FCB $84
FCB $48
FCB $81
FCB $47
FCB $85
FCB $44
FCB $82
FCB $41
FCB $45
FCB $83
FCB $42
FCB $86
FCB $88
FCB $43
FCB $87
FCB $46
FCB $84
FCB $48
FCB $85
FCB 7
FCB $81
FCB 4
FCB 5
FCB $82
FCB 1
FCB $83
FCB 2
FCB $86
FCB 3
FCB $88
FCB 6
FCB $87
FCB 8
FCB $84
FCB 7
FCB $85
FCB 4
FCB $81
FCB 5
FCB 1
FCB $82
FCB $83
FCB 2
FCB 3
FCB $88
FCB 8
FCB $84
FCB $87
FCB 7
FCB 4
TABBOT EQU *
FCB 0 FIX FLAW IN ALGORITHM
GRPLST FDB GROUP1
FDB GROUP2
FDB GROUP3
FDB GROUP4
FDB GROUP5
FDB GROUP6
FDB GROUP7
FDB GROUP8
GRPTAB EQU *
GROUP1 FCB 00,$F0,06,$0F,09,$0F,12,$F0,19,$F0,23,$0F,24,$0F,29,$F0
FCB 34,$F0,37,$0F,43,$F0,46,$0F,48,$F0,50,$0F,60,$F0,62,$0F
FCB 67,$0F,69,$F0,72,$F0,76,$0F,80,$0F,81,$F0,90,$F0,93,$0F
FCB 96,$0F,101,$F0,106,$0F,110,$0F,115,$F0
GROUP2 FCB 01,$0F,03,$F0,08,$F0,15,$0F,18,$F0,20,$0F,27,$0F,30,$F0
FCB 32,$F0,34,$0F,45,$F0,47,$0F,51,$0F,53,$F0,57,$0F,61,$F0
FCB 67,$F0,71,$0F,74,$0F,78,$F0,83,$F0,85,$0F,91,$0F,91,$F0
FCB 99,$0F,104,$F0,109,$F0,113,$0F,115,$0F
GROUP3 FCB 04,$0F,07,$F0,09,$F0,10,$0F,20,$F0,21,$0F,28,$0F,31,$F0
FCB 33,$F0,35,$0F,41,$0F,46,$F0,52,$0F,54,$F0,58,$F0,61,$0F
FCB 66,$F0,68,$0F,73,$0F,77,$F0,85,$F0,87,$0F,89,$0F,92,$F0
FCB 97,$F0,104,$0F,106,$F0,109,$0F,114,$0F
GROUP4 FCB 00,$0F,02,$F0,10,$F0,12,$0F,16,$F0,22,$0F,26,$F0,30,$0F
FCB 33,$0F,35,$F0,44,$0F,47,$F0,51,$F0,54,$0F,56,$F0,59,$0F
FCB 66,$0F,70,$F0,73,$F0,77,$0F,82,$F0,84,$0F,90,$0F,93,$F0
FCB 97,$0F,100,$F0,105,$0F,108,$F0,112,$F0
GROUP5 FCB 02,$0F,06,$F0,08,$0F,14,$F0,19,$0F,22,$F0,25,$F0,29,$0F
FCB 36,$0F,39,$F0,41,$F0,43,$0F,48,$0F,49,$F0,60,$0F,62,$F0
FCB 64,$0F,65,$F0,75,$F0,78,$0F,82,$0F,87,$F0,89,$F0,94,$0F
FCB 98,$F0,101,$0F,103,$F0,107,$0F,111,$F0
GROUP6 FCB 01,$F0,07,$0F,11,$0F,13,$F0,17,$0F,21,$F0,26,$0F,28,$F0
FCB 32,$0F,37,$F0,42,$F0,45,$0F,49,$0F,50,$F0,56,$0F,63,$F0
FCB 68,$F0,70,$0F,75,$0F,79,$F0,84,$F0,86,$0F,88,$0F,95,$F0
FCB 96,$F0,102,$F0,108,$0F,111,$0F,113,$F0
GROUP7 FCB 03,$0F,04,$F0,13,$0F,15,$F0,17,$F0,18,$0F,24,$F0,31,$0F
FCB 38,$F0,39,$0F,40,$0F,44,$F0,52,$F0,55,$0F,59,$F0,63,$0F
FCB 64,$F0,69,$0F,72,$0F,74,$F0,83,$0F,86,$F0,88,$F0,92,$0F
FCB 98,$0F,100,$0F,107,$F0,112,$0F,114,$F0
GROUP8 FCB 05,$F0,05,$0F,11,$F0,14,$0F,16,$0F,23,$F0,25,$0F,27,$F0
FCB 36,$F0,38,$0F,40,$F0,42,$0F,53,$0F,55,$F0,57,$F0,58,$0F
FCB 65,$0F,71,$F0,76,$F0,79,$0F,80,$F0,81,$0F,94,$F0,95,$0F
FCB 99,$F0,102,$0F,103,$0F,105,$F0,110,$F0
*
*START TRANSPORTING
*
TRNSTV JSR TRINIT
LDX RPTR
BEQ TRN1X
MAKP TRSPRC
LDX RPTR
LDD #0
LDY #0
PSHS D
PSHS D
TRN00 LDD OPICT,X
STD OLDPIC,X
LEAY 1,Y
CMPY #15
BHI TRN01
CMPD ,S SAME GUY?
BEQ TRN0 YES
TRN01 LDY #0
STD ,S SAVE NEW PICT
PSHS X
LDX OPICT,X
JSR TRSTRT
STX 4,S SAVE IMAGE
PULS X SAVE NEW PICT
TRN0 LDD 2,S
STD OPICT,X
LDX ,X
BNE TRN00
LEAS 4,S
TRNLP JSR ROBUP OUTPUT ROBOTS
JSR UPDATE UPDATE IMAGES
LDX TRPTR
BEQ TRN1X
NAP 1,TRNLP
TRN1X LDX RPTR
BEQ TRN2X
TRN1XL LDD OLDPIC,X RESTORE IMAGES
STD OPICT,X
LDX ,X
BNE TRN1XL
TRN2X JSR HXINIT RECOVER DATA BASE FOR HORIZ EXPLODES
JMP SUCIDE
*
*TRANSPORTER SOUND PROCESS
*
TRSPRC LDD #TR1SND
JSR SNDLD CLEAR OUT THE SYSTEM
LDA #$48
STA PD,U
TRSPRL LDB #$12
JSR SDOUT
DEC PD,U
BEQ TRSPR1
NAP 1,TRSPRL
TRSPR1 LDA #$24
STA PD,U
TRSP1L LDB #$12
JSR SDOUT
DEC PD,U
LBEQ SUCIDE
NAP 2,TRSP1L
*
*UPDATE YOUR ROBOTS
*RAM-RAM
ROBUP LDX RPTR
BEQ ROBUPX
ROBUPL LDY OPICT,X
LDD ,Y
EORA #4
EORB #4
SEI
STD DMASIZ
LDU 2,Y
STU DMAORG
LDD OBJX,X
STD DMADES
LDA #$6
STA DMACTL
CLI
LDX ,X
BNE ROBUPL
ROBUPX RTS
END

550
RRTABLE.ASM Executable file
View File

@ -0,0 +1,550 @@
OPT NOL
LIB RRFRED
OPT LIS
TCOL1 EQU GETLRM
TCOL2 EQU GETLRM+1
ORG TABORG HIGH SCORE TABLE ORIGIN
* PD - FONT SIZE
* PD+1 NUMBER PER COLUMN
* PD+2 NUMBER OF COLUMNS LEFT
* PD+3 HEIGHT SPACING BETWEEN ROWS
* PD+4 WIDTH SPACING BETWEEN COLUMNS
* PD+5 NUMBER LEFT IN THIS COLUMN
* PD+6 INDEX OF CURRENT ENTRY
* PD+7 X ADDRESS DURING SLEEP
* PD+9 CMOS PTR DURING SLEEP
* PD+11 RETURN ADDRESS SAVE
* PD+18 TOP LEVEL RETURN ADDRESS
* PD+15 X RETURN
* PD+16 Y RETURN
* PD+17 NUMBER UNTIL SLEEP
TABLE PULS D GET RETURN
LDU CRPROC
STD PD+18,U SAVE "RETURN ADDRESS"
MAKP LOOPP START THE COLORING PROCESS
JSR FRAMER PUT OUT THE FRAME
LDA #$99
STA TCOL1
LDA #$CC
STA TCOL2
LDY #TODAYS POINT AT FIRST TODAYS SCORE
LDU CRPROC POINT RIGHT
LDA #7 USE 7 FONT
STA PD,U
LDD #$502 5 PER COLUMN, 2 COLUMNS
STD PD+1,U
LDD #$934
STD PD+3,U 7 HEIGHT, 50 WIDTH
LDA #1 START WITH INDEX OF 1
STA PD+6,U INDEX POINTER
LDX #$1A35 UPPER LEFT OF PLACE TO DO IT
JSR PRJNK PRINT THE STUFF
LDA #$AA
STA TCOL1 NEW COLOR
LDA #$DD
STA TCOL2
LDY #GODSCR+34
JSR CLSET SET THE COLOR
LDX #GODSCR+38 POINT AT LAST CHAR
TABLE1 JSR RCMOSA GET A CHAR
LEAX -4,X
CMPA #$3A SPACE??
BNE TABLE2 NOPE
CMPX #GODSCR ARE WE POINTING AT FIRST??
BHS TABLE1
TABLE2 LEAX 2,X POINT AT FIRST NON BLANK
PSHS X SAVE ON STACK
LDX #$157A PLACE FOR GOD
LDA #$31
JSR PR57V
LDA #$5C RIGHT PAREN
JSR PR57V
LEAX $300,X SPACE OVER
LDY #GODSCR
TABLE3 EXG X,Y SWAP CMOS, CURSOR
JSR RCMOSA GET A LETTER
EXG X,Y RESTORE CURSOR
JSR PR57V PRINT IT
CMPY ,S SEE IF WE'RE DOWN TO SPACES ONLY
BLS TABLE3
LEAX $200,X SPACE OVER
LDY #GODSCR+40 POINT AT SCORE
JSR PRSCOR PRINT OUT A SCORE (FONT IS 7 IN PD,U)
STX XTEMP SAVE X
LDX #GA2
JSR RCMOSA
CMPA #3
BEQ NOINTS
LDX XTEMP
LEAX $500,X MOVE FOR INITIALS
LDA #$5B LEFT PAREN
JSR PR57V
LDY #GODINT
LDB #3
TABL33 EXG X,Y
JSR RCMOSA
EXG X,Y
JSR PR57V
DECB
BNE TABL33
LDA #$5C RIGHT PAREN
JSR PR57V
NOINTS LDU CRPROC
LDA #5 FONT
STA PD,U
LDD #$C03 9 ROWS BY FOUR COLUMNS
STD PD+1,U
LDD #$728 SPACING
STD PD+3,U
LDA #2 FIRST INDEX
STA PD+6,U
LDX #$1488 PLACE TO START
LDY #CMSCOR PLACE OF SCORES
BSR PRJNK
LDA #SCRMES PUT OUT HEADERS ETC.
JSR WRD7V DO IT
MAKP DECAZ
MAKP COLA
MAKP COLC
MAKP COLD
LDU CRPROC
LDA #200
STA PD,U NUMBER OF FRAMES TO FREEZE
TAB888 NAP 3,TABLE6
TABLE6 DEC PD,U
BNE TAB888
LDA #$FF
STA PD,U
TAB777 NAP 4,TAB999
TAB999 LDA PIA3
ANDA #$3 ONLY 2 SWS HERE
ORAA PIA2 ANY PRESSED?
BEQ TABLE7 NONE PRESSED
DEC PD,U 1 LESS COUNT
BNE TAB777
TABLE7 JMP [PD+18,U] RETURN
PRJNK PULS D GET RETURN
LDU CRPROC
STD PD+11,U SAVE RETURN
STX PD+15,U SAVE W,H RETURN STOPS
STX PD+7,U
STY PD+9,U
LDA PD+1,U GET NUMMBER PER COLUMN
STA PD+5,U MAKE THIS NUMBER LEFT IN THIS COMUMN
TOD44 LDA #4 NUMBER OF ENTRIES PER SLEEP
STA PD+17,U
LDX PD+7,U RESTORE POINTERS
LDY PD+9,U
TOD33 BSR CLSET SET THE COLOR FOR THIS LINE
LDB PD+6,U GET INDEX
LDA #INDMES
JSR PWSUB PRINT "WORD" AT PROPER HEIGHT
PSHS X SAVE POINTER
LDB #3 3 CHARS
TOD1 EXG X,Y GET CMOS POINTER IN X
JSR RCMOSA GET THE LETTER
EXG X,Y
JSR PCSUB PRINT THE CHARACTER PROPERLY
DECB
BNE TOD1
PULS X GET THE INITIAL POINTER BACK
LDA PD,U GET HEIGHT OF FONT
LDB #3
MUL
LSRB 1/2
INCB ADD 2 PIXELS
TFR B,A
LDB PD,U CHECK FOR 5
CMPB #5
BNE TABFIX
INCA 1 MORE IN CASE OF STUPID WWW
TABFIX CLRB
LEAX D,X PLACE FOR SCORE
JSR PRSCOR PRINT THE GUYS SCORE
LDA PD+6,U
ADDA #1
DAA
STA PD+6,U
TFR X,D MOVE CURSOR OVER
LDA PD+15,U RESTORE X
ADDB PD+3,U ADD COLUMN SPACING
TFR D,X RETURN AS POINTER
DEC PD+5,U 1 LESS IN CURRENT COLUMN
BEQ TOD22 DONE WITH COLUMN
TOD66 DEC PD+17,U 1 LESS TILL SLEEP
BNE TOD33
STX PD+7,U SAVE POINTERS
STY PD+9,U
NAP 1,TOD44
TOD22 LDD PD+15,U GET CORNER POINTER
ADDA PD+4,U ADD WIDTH SPACING
STA PD+15,U
TFR D,X AND SHOVE IN X
LDA PD+1,U GET NUMBER PER COLUMN
STA PD+5,U NUMBER TO DO
DEC PD+2,U NUMBER OF COLUMNS
BNE TOD66
JMP [PD+11,U] RETURN NOW
* CLSET - Y POINTS AT SCORE-6...IF IT IS EQUAL TO
* EITHER PLAYERS SCORE, AND NOT THE NEXT CMOS SCORE,
* THEN THE COLOR IS CHANGED TO TCOL2, ELSE TCOL1
CLSET PSHS X,Y,D
LEAY 6,Y POINT AT SCORE
LDX #ZP1SCR CHECK PLAYER 1'S SCORE
BSR CKME
BEQ CLS1 IT WAS GOOD
LDB PLRCNT HOW MANY PLAYERS
DECB
BEQ CLS2 NO GOOD
LDX #ZP2SCR
BSR CKME
BNE CLS2 NO GOOD
CLS1 BSR CKNXT SEE IF NEXT MATCHES
BEQ CLS2 IT MATCHES...HOLD OFF
LDA TCOL2 USE NORMAL COLOR
BRA CLS3
CLS2 LDA TCOL1
CLS3 STA TEXCOL
PULS X,Y,D,PC
* CKME BEQ FOR EQUAL
* Y POINTS AT CMOS SCORE
* X POINTS AT RAM SCORE
CKME PSHS Y
EXG X,Y CMOSER USE X
JSR RCMOSA
ANDA #$F
LDB #4
CKME2 CMPA ,Y+ DO WE MATCH
BNE CKME1 NOPE
JSR RCMOSA GET NEXT
DECB
BNE CKME2
CKME1 PULS Y,PC
CKNXT LEAY 1,Y PUSH PAST CHECKSUM
LEAX SCRSIZ,Y X POINTS AT NEXT SCORE
LDB #7 7 BYTES TO CHECK
CKNXT1 LDA ,X+
EORA ,Y+ LOWER GUYS
ANDA #$F
BNE CKBYE NOT EQUAL
DECB
BNE CKNXT1
CKBYE RTS
PRSCOR EXG X,Y
JSR RCMOSA
JSR RCMOSB GET 2 BYTES OF SCORE
EXG X,Y
ANDA #$0F TAKE AWAY CHECK NIBBLE
BNE PR2SC 2 PARTER
TSTB ALL ZERO??
BNE PR2SC
LDA #HIGH3
BRA PR3SC
PR2SC PSHS Y
TFR D,Y
LDA #HIGH1
JSR PWSUB PRINT WORD IN PROPER FONT
PULS Y RESTOE Y
LDA #AUDM2 USE AUDIT TEXT FOR LOW HALF
PR3SC PSHS A SAVE MESSAGE
EXG X,Y
JSR RCMOSD GET THE STUFF
EXG X,Y
PSHS Y SAVE Y AGAIN
TFR D,Y PRINTED STUFF IN Y
LDA 2,S RESTORE MESSAGE NUMBER
BSR PWSUB PRINT IT
PULS Y RESTOE Y
PULS A,PC AND RETURN
PWSUB PSHS U,X,A
LDX #WRD7V
LDA PD,U GET FONT
CMPA #7 BIG??
BEQ PWSUB1
LDX #WRD5V SMALL
PWSUB1 TFR X,U
PULS A,X
JSR ,U
PULS U,PC
PCSUB PSHS U,X,A
LDX #PR57V
LDA PD,U
CMPA #7
BEQ PWSUB1
LDX #PR35V
BRA PWSUB1
FCC ' ROBOTRON: 2084 '
FCC ' COPYRIGHT 1982 WILLIAMS ELECTRONICS INC. '
FCC ' ALL RIGHTS RESERVED '
* HASSLER UPPER LEFT IS $0308
* HASSLER LOWER RIGHT IS $94F4 (BOTH INCLUSIVE)
FRAMER PULS D GET RETURN ADDRESS
LDU CRPROC
STD PD+8,U AND SAVE
LDX #PCRAM
LDD #0
FRAME7 STD ,X++
CMPX #PCRAM+16
BLO FRAME7
*
LDX #$60D TERMINAL POINT
STX PD+16,U
LDA #$11
STA PD+14,U
*
FRAME3 LDX #$3E7D
STX PD+10,U
LDY #$597F
STY PD+12,U
FRAME1 LDA #2
STA PD+15,U SLEEP COUNT
LDX PD+10,U
LDY PD+12,U
LDA PD+14,U
FRAME2 JSR MARQ
CMPX PD+16,U
BEQ FRBYE
LEAX -$102,X
LEAY $102,Y
BSR GETA GET THE A TO USE
DEC PD+15,U
BNE FRAME2
STA PD+14,U
STX PD+10,U
STY PD+12,U
NAP 1,FRAME1 NIGHTY NIGHT
GETA PSHS B
LDB PD+16,U
CMPB #6 WRITING??
BNE GETA1 NOPE...LEAVE THE ZERO
SUBA #$11
BNE GETA1
LDA #$88
GETA1 PULS B,PC
FRBYE LDX PD+16,U CHECK LIMIT
CMPX #$60D
BEQ FRCONT NOT DONE YET
JMP [PD+8,U] RETURN
FRCONT LDX #$E1D THIS IS OTHER LIMIT
STX PD+16,U NEW LIMIT
CLR PD+14,U STORE ZEROS
JMP FRAME3
LOOPP LDX #COLTAB GET FIRST OF COLOR TABLE
LOOP1 LDA ,X+ GET THE NEXT BYTE
BSR OUTCOL CYCLE IT IN
STX PD,U SAVE X
NAP 3,LOOP2
LOOP2 LDX PD,U RESTORE X
CMPX #TABEDD
BLO LOOP1
BRA LOOPP
OUTCOL LDY #PCRAM+1 START AT 1
OUTC1 LDB 1,Y
STB ,Y+
CMPY #PCRAM+8
BLO OUTC1 NOT THERE YET
STA ,Y
RTS
COLA LDY #PCRAM+$A Y = PCRAM LOCATION
LDX #CATAB X = PLACE TO START
COMMM LDD #CATAB D = START OF TABLE
COLENT STD PD+4,U
STY PD+2,U
BRA COLA4
COLA3 LDX PD+4,U
COLA4 STX PD,U
COLA5 LDX PD,U
LDA ,X+ GET NEXT BYTE
BEQ COLA3
STA [PD+2,U]
STX PD,U
NAP 4,COLA5
CATAB FCB $7,$7,$7,$7,$7,$7,$7,$7,$57,$A7,$FF,$FF,$A7,$57,0
CCTAB FCB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$E4,$D2,$C0,$C0,$C0
FCB $D2,$E4,0
DECAZ LDX #CATAB+7 OUT OF PHASE PLEASE
LDY #PCRAM+9
BRA COMMM
COLC LDX #CCTAB+7
LDY #PCRAM+$C
COLLL LDD #CCTAB
BRA COLENT
COLD LDX #CCTAB
LDY #PCRAM+$D
BRA COLLL
COLTAB FCB $37,$2F,$27,$1F,$17,$47,$47,$87
FCB $87,$C7,$C7,$C6,$C5,$CC,$CB,$CA
FCB $C0,$D0,$98,$38,$33
TABEDD EQU *
UPPER EQU PD
LOWER EQU PD+1
LEFT EQU PD+2
RIGHT EQU PD+3
HFLAV EQU PD+4
LFLAV EQU PD+5
* 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
LDU CRPROC
ANDA #$F0
STA HFLAV,U SAVE FLAVOR COLORS
LDA ,S
ANDA #$0F
STA LFLAV,U
TFR X,D
STA LEFT,U
STB UPPER,U
TFR Y,D
STA RIGHT,U
STB LOWER,U
SUBB UPPER,U LOWER-UPPER ODD???
RORB CHECK
BCC MARQ1 NOPE
DEC LOWER,U NOT THAT LOW...OK?
MARQ1 LDA UPPER,U DO TOP LINE
BSR HHIGH HIGH PART OF TOP HORIZONTAL LINE
INCA
BSR HLOW LOW PART
*
LDA LOWER,U
BSR HHIGH 1 LESS FOR GEN PURP
DECA
BSR HLOW
*
LDA LEFT,U LEFT BYTE
BSR VHIGH HIGH FLAVOR STUFF IN A VERT LINE
BSR VLOW LOW FLAVOR STUFF IN A VERT LINE
*
LDA RIGHT,U
BSR VHIGH
DECA
BSR VLOW
PULS 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
BSR SETUPV SETUP X,B
INCB 1 MORE TO BE INCLUSIVE
LDA HFLAV,U GET HIGH FLAVOR
VHIGH1 STA ,X++ STORE THE BYTE
DECB
BNE VHIGH1
PULS D,X,PC
VLOW PSHS D,X
BSR SETUPV SETUP X,B
LEAX 1,X MOVE X UP 1
LDA LFLAV,U USE LOW FLAVOR
BRA VHIGH1
SETUPV LDB UPPER,U GET UPPER Y
TFR D,X THIS IS PONTER
LDB LOWER,U
SUBB UPPER,U THIS IS GUARANTEED EVEN
LSRB 1/2 PLEASE (EVERY 2 IS PLOTTED)
RTS
* HHIGH - THIS ROUTINE PLOTS HIGH COLOR IN THE HIGH HALF OF
* CONSECUTIVE HORIZONTAL PIXELS GOING FROM
* [LEFT TO RIGHT] AT THE HEIGHT GIVEN IN REGISTER A.
HHIGH PSHS X,D
BSR SETUPH SETUP COUNT IN B, X POINTS AT FIRST BYTE
INCB ADD 1 TO MAKE IT INCLUSIVE
LDA HFLAV,U GET THE DATA BYTE
HHIGH1 STA ,X STORE 1
LEAX $100,X PUSH TO NEXT
DECB 1 LESS
BNE HHIGH1
PULS X,D,PC
* HLOW - THIS ROUTINE PLOTS LOW COLOR IN THE LOW HALF OF
* CONSECUTIVE HORIZONTAL PIXELS GOING FROM
* [LEFT TO RIGHT) AT THE HEIGHT GIVEN IN REGISTER A.
HLOW PSHS X,D
BSR SETUPH
LDA LFLAV,U USE LOW FLAVOR
BRA HHIGH1 AND DO NORMAL PROCESSING ABOVE
SETUPH TFR A,B MOVE Y OVER
LDA LEFT,U GET LEFT X
TFR D,X MAKE POINTER
LDB RIGHT,U
SUBB LEFT,U FIND DIFFERENCE (EXCLUSIVE
RTS AND RETURN
END

849
RRTEST1.ASM Executable file
View File

@ -0,0 +1,849 @@
OPT NOL
LIB RRFRED
OPT LIS
*
ORG RAMALS
SW0ST RMB 1
SW0SCN RMB 1
SW2ST RMB 1
SW2SCN RMB 1
SW3ST RMB 1
SW3SCN RMB 1
SW2STI RMB 1
SW2SCI RMB 1
SW3STI RMB 1
SW3SCI RMB 1
* PSEUDO DMA
RCONT RMB 1 THESE ARE THE PASSED REGISTERS
RCONST RMB 1
RORIG RMB 2
RDEST RMB 2
RHORIZ RMB 2
DHORIZ RMB 1 THESE ARE THE DYNAMICALLY CHANGING
DVERT RMB 1 REGISTERS
DORIG RMB 2
DDEST RMB 2
DFL RMB 1 FLAVOR SAVOR
NEWROW RMB 1 NEW ROW FLAG
DMATMP RMB 2
DIV RMB 6 6 BYTES OF DIVIDEND
DIVTMP RMB 6
DIVSOR RMB 6 6 BYTES OF DIVISOR
QUO RMB 4
DVTEMP RMB 2
****************************** STUFF FOR HORIZ EXPLOSION
*
* EXPLODING OBJECT DATA STRUCTURE
*
ORG HXTAB PLACE FOR DATA
EX EQU *
NEXTZ RMB 2 LIST POINTER
PICPTZ RMB 2 POINTER TO DATA
XCENTZ RMB 1 SCREEN Y CENTER
XOFZ RMB 1 OFFSET IN Y TO OBJECT CENTER (PIXELS) (0-HEIGHT)
XSIZEZ 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
DMACNZ RMB 2 DMA CONTROL RET
XHITEZ RMB 1
DATAZ RMB 7*16*2 RESERVE FOR DATA IN VERTICAL FORMAT
ESIZEZ EQU *
NEXT EQU NEXTZ-EX
PICPTR EQU PICPTZ-EX
XCENT EQU XCENTZ-EX
XOF EQU XOFZ-EX
XSIZER EQU XSIZEZ-EX
FRAMES EQU FRAMEZ-EX
UL EQU ULZ-EX
WH EQU WHZ-EX
DMAWH EQU DMAWHZ-EX
DMACNT EQU DMACNZ-EX
XHITE EQU XHITEZ-EX
DATA EQU DATAZ-EX
EXSIZE EQU ESIZEZ-EX
RMB ((8-1)*EXSIZE) NUMBER OF BLOCKS
EXEND EQU *
ORG HXRAM (BASE PAGE)
XSIZE RMB 1 DISTANCE BETWEEN Y POINTS THIS FRAME
EXPTR RMB 2
APPTR RMB 2
EXFREE RMB 2
WIDE RMB 1
TEMP1 RMB 2
TEMP2 RMB 1
****************************************************************
ORG TSTORG
JMP PWRUP
JMP ADVSWZ
JMP AUTCYC
JMP HXINV
JMP HEXSTV
JMP HAPSTV
JMP HXUPDV
FDB BSLOOP
FDB ERLOOP
FDB L2V
FDB L0V
LIB RRHX4
*
*** POWER UP ROUTINE
*
PWRUP ORCC #$FF NO INTERRUPTS ETC.
LDS #HSTK IF AND WHEN WE DECIDE TO USE THE STACK
CLR PIA0+1
CLR PIA0
LDA #$3C SET LED 3 TO 1 (WE'RE MAKING AN F TO BLANK)
STA PIA0+1
CLR PIA1+1
LDA #$C0 BITS 6,7 TO OUTPUTS (LEDS)
STA PIA1
LDA #$3C SET BIT 2 TO 1
STA PIA1+1 CLEAR CB2 (LED)
LDA #$C0 CLEAR LEDS
STA PIA1 SET BITS 0,1
LDA #1
STA RWCNTL MAKE SURE WE COPY FROM ROM!
LDX #CRTAB
LDY #CRAM
PWRUP0 LDD ,X++
STD ,Y++
CMPX #CRTAB+16
BLO PWRUP0
LDA #2
LDY #PWRUP1
LDX #0
JMP RAMTST DO A RAM TEST.
PWRUP1 LDY #PWRUP4
JMP ROMTST
PWRUP4 LDA #$34 PUT A ZERO IN THE LED.
STA PIA0+1
STA PIA1+1
CLR PIA1
LDA #RAM>>8
TFR A,DP
LDS #HSTK
JSR SCRCLR
LDA #OKM
JSR WRD7V INDICATE OK
LDY #INIT DELAY TO JUMP INTO GAME.
LDA #7
JMP DELA1
*
* ADVANCE SWITCH
*
ADVSWZ LDA #STYPE
STA PTYPE,U
LDA INDIAG ALREADY HERE??
BNE SUCDV
NAP 2,ADVSW2 MAKE SURE THAT ITS NOT NOISE
ADVSW2 LDA PIA0 IS IT STILL PRESSED??
BITA #$02 WELL??
BNE ADVSW3 YEP
SUCDV JMP SUCIDE NOPE...DIE
ADVSW3 JSR GNCIDE CAN EVERYBODY
JSR P1SW MAKE SURE PROPER DIRECTION FACED
LDA #$FF
STA INDIAG
STA STATUS KEEP EM ALL OUT
JSR INITCM INITIALIZE COLOR MATRIX
JSR SCRCLR
LDA PIA0 CHECK WHICH TYPE OF TEST
RORA AUTO UP??
LBCS BOOK YEP...GO TO BOOKKEEPING
ORCC #$BF FIRQ ENABLED INDICATES NORMAL AGNOSTICS RUNNING
LDY #DAG999
JMP BLKLED BLANK THE LEDS
DAG999 LDA #WDATA
STA WDOG
LDA PIA0 WAIT FOR ADVANCE SWITCH LET GO
BITA #2
BNE DAG999
LDY #DIAG0
JMP ROMTST DO THE ROM TEST
DIAG0 LDA #RAM>>8
TFR A,DP
JSR SCRCLR CLEAR FOR ROMS MESSAGE.
LDA #ROMOK
JSR WRD7V PRINT THE MESSAGE
LDB #3
DIG111 LDX #$7000
DIAG1 LDA #WDATA
STA WDOG
LDA PIA0
BITA #2
BNE DIAG2 CONTINUE IF ADVANCE PRESSED.
LEAX -1,X
CMPX #0
BNE DIAG1
DECB
BNE DIG111
DIG11Z LDY #DIAG2
LDX #0
LDA #$FF INDICATE FRONT DOOR
JMP RAMTST DO THE RAM TEST.
DIAG2 LDA #1
STA RWCNTL
LDA #RAM>>8
TFR A,DP
JSR SCRCLR
LDA #RAMOK
JSR WRD7V PRINT RAM OK MESSAGE
DIAG22 LDA #WDATA
STA WDOG
LDA PIA0
BITA #2
BNE DIAG22 HOLD CONTROL UNTIL LET GO.
RAMERJ LDX #$9800 RAM ERROR MESSAGE COMES HERE.
CLRA
DIAG3 STA ,X+ CLR USABLE MEMORY
LDB #WDATA
STB WDOG
CPX #HSTK+1
BLO DIAG3
JSR INITCM COLOR MATRIX BACK
LDD #$A55A
STD HSEED
STA INDIAG INDICATE THAT WE'RE AGNOSTICS
JSR PINIT TIME TO LET THE SYSTEM TAKE OVER
JSR INT20V GET OTHER STUFF IN PROPER SHAPE
JSR P1SW
LDA #$FF
STA STATUS
MAKP DIAG4 START A PROCESS TO CONTINUE
BSR ZLED ZERO IN LED
ANDCC #0 LET THE INTERRUPTS IN
JMP EXECV GO!
DIAG4 JSR AVWAIT WAIT FOR ADVANCE SWITCH.
JSR CMTEST TEST CMOS.
ANDCC #1 INTERRUPTS BACK ON LEAVE CARRY
LDA #CMOK
BCC DIAG66
LDB #$2F INDICATE THAT ITS IN R/W HALF
CMPX #CMOS+$100
BHI DIAG5 IT WAS IN WRITABLE HALF
LDB #$1F
DIAG5 ORCC #$10 LOCK OUT THE INTERRUPTS
LDS #DIAG55
LDA #$3
JMP PULSE
DIAG55 LDS #HSTK
BSR ZLED
LDA #RAM>>8
TFR A,DP
ANDCC #$EF LET THE INTERRUPTS BACK
LDA #CMERR
CMPB #$1F
BHI DIAG66
LDA #CMDOOR
DIAG66 JSR SCRCLR
JSR WRD7V PRINT ONE OF THE TWO MESSAGES.
* LDA #CMFD TELL HIM WHATS GOING ON
* JSR WRD7V
* NAP $C0,DMAP1
*MAP1 JSR SCRCLR CLEAR OUT HOSER
*MAP5 LDB #10
* LDA #$3F
* STA SOUND
* LDA #5
*MAP2 JSR DMASRT DO THE TEST
* BCS DMAP3 ERROR
* JSR AVCHK
* BCS DMAP4 ADVANCE PRESSED
* DECB
* BNE DMAP2
* LDA #$19 MAKE SOME SOUND DURING THIS
* STA SOUND
* LDB #30
*MPA1 LDA #WDATA
* STA WDOG
* DECB
* BNE DMPA1
* BRA DMAP5
*
*MAP3 JSR SCRCLR
* JSR INITCM
* LDA #DMFAIL BAD BYTES
* JSR WRD7V PRINT IT
* BRA DMAP7
*
*MAP4 JSR SCRCLR
* JSR INITCM
* LDA #DMPASS
* JSR WRD7V
*MAP99 JSR AVCHK WAIT FOR RELEASE OF GUY THAT GOT US HERE
* BCS DMAP99
*
*MAP7 JSR AVWAIT MOVE ON TO NEXT IMAGE
*
JSR AVWAIT
LDU CRPROC
CLR PD+2,U INDICATE FRONT DOOR TEST CALLING
JSR SNDSRT START THE SOUND TEST
DIAG6 JSR SNDCYC CYCLE ONE SOUND
JSR AVCHK CHECK ADVANCE SWITCH.
BCC DIAG6 NOT PRESSED, DO ANOTHER SOUND
LDA #$3F
STA SOUND
NAP 1,DIAG77
DIAG77 LDA #$2C SILENCE
STA SOUND
JSR AVWAIT NOW WAIT FOR RELEASE.
JSR SWTEST DO A SWITCH TEST.
JSR AVWAIT WAIT FOR RELESE
JSR CRTEST DO THE COLOR MATRIX TEST
JSR AVCHK HOLDING BUTTON??
BCC DIAG78 NOPE...CONTINUE
JSR AVWAIT WAIT FOR LET GO TIME.
DIAG78 JMP TSTPAT DO SOME TEST PATTERNS THEN GO TO BOOK.
ZLED CLR PIA1 ZERO IN LED INDICATES ON LAST TEST OR DUN
LDA #$34
STA PIA0+1
INCA
STA PIA1+1
RTS
*
INITCM LDX #CRTAB
LDY #PCRAM
LDU #CRAM
ADVS90 LDD ,X++
STD ,Y++
STD ,U++
CMPX #CRTAB+16
BLO ADVS90
RTS
CRTAB FCB $00,$07,$17,$C7,$1F,$3F,$38,$C0
FCB $A4,$FF,$38,$17,$CC,$81,$81,$07 STARGATE COLOR TABLE
*
*** AUTO CYCLE
*
AUTCYC LDA #$3F MAKE LOOK LIKE FRONT DOOR TEST THANX TO MOTOROLA
TFR A,CC SET TO AUTOCYCLE NO INTS PLEASE ETC.
BSR INITCM COLOR MATRIX OK.....OK?
LDA #$85 FIVE RAM PASSES, IN AUTOCYCLE
LDX RAMALS+$600 TAKE A BYTE FORM THE RAM TEST
LEAX $1234,X ADD A STUPID NUMBER TO VARY TEST
LDY #AUTO1
JMP RAMTST TEST THE RAM
AUTO1 LDY #AUTO2
JMP ROMTST
AUTO2 LDA #RAM>>8
TFR A,DP
LDS #HSTK JUST IN CASE
JSR CMTEST
BCC AUTO4
LDA #3 CMOS ERROR IN LED NOW
BSR LEDME PUT IT OUT
LDA #CMDOOR
CMPX #CMOS+$100 WRITE PROTECT??
BLS AUTO8
LDA #CMERR
AUTO8 LDB #WDATA
STB WDOG ARF
JSR SCRCLR
JSR WRD7V PRINT THE ERROR
AUTO5 LDA #WDATA
STA WDOG
BRA AUTO5
AUTO4 BSR BARS
LDY #AUTCYC
LDA #4
JMP DELA1
LEDME LDY #LEDME1 RETURN ADDRESS
JSR PSSUB PUT OUT THE LOW HALF OF A
LEDME1 RTS AND RETURN
*
*** TEST PATTERNS
*
TSTPAT JSR CROSS DO FANCY HASSLER PAT.
JSR AVWAIT WAIT FOR ADVANCE
JSR SCRCLR
LDA #$7 RED
STA PCRAM
JSR AVWAIT
LDA #$38 GREEN
STA PCRAM
JSR AVWAIT
LDA #$C0
STA PCRAM BLUE
JSR AVWAIT
BSR BARS
JSR AVWAIT
JMP BOOK
HASSUB STX XTEMP
LEAX $1000,X
COL221 LEAX -$100,X
CMPX #RAM INTO SCRATCHPAD??
BHI COL221
RTS
BARS LDX #PCRAM
LDY #CBARCL
LDU #CRAM
BARS0 LDD ,Y++ GET A COLOR
STD ,X++
STD ,U++ IN CASE INTERRUPTS OFF
LDA #WDATA
STA WDOG
CMPX #PCRAM+16
BLO BARS0
LDD #0
LDX #0
COLOR1 BSR HASSUB
COLOR2 STD ,--X
PSHS A
LDA #WDATA
STA WDOG
PULS A
CMPX XTEMP
BNE COLOR2
LEAX $900,X
TSTA
BNE COLOR3
LDX #$D00
COLOR3 ADDD #$1111
BCC COLOR1
RTS
*
CBARCL FCB $5,$5,$28,$28,$80,$80,$0,$0
FCB $AD,$AD,$2D,$2D,$A8,$A8,$85,$85
*
* DON HASSLER CROSSHATCH
*
* RAM0 = BLACK - 00
* RAM1 = WHITE - FF
* RAM2 = BLUE - C0
* RAM3 = GREEN - 38
* RAM4 = RED - 07
*
CROSS JSR SCRCLR CLEAR SCREEN
CLRA
JSR SETPCR ZERO COLOR MATRIX
LDA #$FF
STA PCRAM+1
LDA #$C0
STA PCRAM+2
LDA #$38
STA PCRAM+3
LDA #$7
STA PCRAM+4
LDY #WVERT MOVE WHITE VERTICALS
LDD #$0101
CROSS4 LDX 0,Y GET START PTR
CROSS5 STD 0,X++ MOVE IN WHITE
CMPX 2,Y CK IF LINE DONE
BNE CROSS5 NO, KEEP GOING
LEAY 4,Y INCR Y BY 4
CMPY #WVERTX CK IF ALL DONE
BNE CROSS4 NO, DO NEXT LINE
LDA #$11 MOVE WHITE HORIZ
LDY #WHORZ
CROSS2 LDX 0,Y GET START PTR
STX XTEMP
CROSS3 STA 0,X MOVE IN WHITE
INC XTEMP UPDATE PTR
LDX XTEMP
CMPX 2,Y CK IF DONE
BNE CROSS3 NO, KEEP GOING
LEAY 4,Y INCR Y BY 4
CMPY #WHORZX CK IF ALL DONE
BNE CROSS2 NO, DO NEXT LINE
LDY #HORZZ MOVE IN COLOR HORIZ.
CROSS6 LDX 0,Y GET START PTR
STX XTEMP
LDA 4,Y GET COLOR
CROSS7 STA 0,X MOVE IN COLOR
INC XTEMP
LDX XTEMP
CMPX 2,Y CK IF LINE DONE
BNE CROSS7 NO, KEEP GOING
LEAY 5,Y INCR Y BY 5
CMPY #HORIZX CK IF ALL DONE
BNE CROSS6 NO, DO NEXT LINE
LDY #VERT MOVE IN COLOR VERTICAL
CROSS8 LDX 0,Y GET START PTR
LDA 4,Y GET COLOR
CROSS9 STA 0,X+ MOVE IN COLOR
CMPX 2,Y CK IF LINE DONE
BNE CROSS9 NO, KEEP GOING
LEAY 5,Y INCR Y BY 5
CMPY #VERTX CK IF ALL DONE
BNE CROSS8 NO, DO NEXT LINE
LDA #$21 BLUE TOUCH UP
STA $437E
LDA #$20
STA $937E
LDX #$4B0A
CROSSA SEI
CLR RWCNTL
LDA 0,X
LDB #1
STB RWCNTL
CLI
ANDA #$F0
ORA #$02
STA 0,X+
CMPX #$4B6D
BNE CROSSA
LDX #$4B90
CROSSB SEI
CLR RWCNTL
LDA 0,X
LDB #1
STB RWCNTL
CLI
ANDA #$F0
ORA #$02
STA 0,X+
CMPX #$4BF3
BNE CROSSB
LDX #$0B18
STX XTEMP MOVE IN DOTS
CROSSC LDX XTEMP
SEI
CLR RWCNTL
LDA 0,X OR IN DOT
LDB #1
STB RWCNTL
CLI
ANDA #$F0
ORA #$01
STA 0,X STORE DOT
LDB XTEMP+1 UPDATE VERTICAL PTR
ADDB #$22
BCS CROSSD
STB XTEMP+1
BRA CROSSC
CROSSD LDB #$18
STB XTEMP+1 RE-INIT VERT. PTR
LDB XTEMP
ADDB #$10 UPDATE HORIZ PTR
STB XTEMP
CMPB #$9B CK IF DONE
BNE CROSSC NO, KEEP GOING
RTS
*
* CROSS HATCH DATA
*
WHORZ FDB $0407
FDB $9407
FDB $0429
FDB $9429
FDB $044B
FDB $944B
FDB $046D
FDB $946D
FDB $048F
FDB $948F
FDB $04B1
FDB $94B1
FDB $04D3
FDB $94D3
FDB $04F5
FDB $94F5
WHORZX EQU *
WVERT FDB $0307
FDB $03F5
FDB $1307
FDB $13F5
FDB $2307
FDB $23F5
FDB $3307
FDB $33F5
FDB $4307
FDB $43F5
FDB $5307
FDB $53F5
FDB $6307
FDB $63F5
FDB $7307
FDB $73F5
FDB $8307
FDB $83F5
FDB $9307
FDB $93F5
WVERTX EQU *
HORZZ FDB $4505
FDB $5205
FCB $44
FDB $4506
FDB $5206
FCB $44
FDB $4507
FDB $5207
FCB $00
FDB $4508
FDB $5208
FCB $33
FDB $4509
FDB $5209
FCB $33
FDB $45F3
FDB $52F3
FCB $33
FDB $45F4
FDB $52F4
FCB $33
FDB $45F5
FDB $52F5
FCB $00
FDB $45F6
FDB $52F6
FCB $44
FDB $45F7
FDB $52F7
FCB $44
FDB $047E
FDB $437E
FCB $22
FDB $547E
FDB $937E
FCB $22
HORIZX EQU *
VERT FDB $026F
FDB $028E
FCB $04
FDB $036F
FDB $038E
FCB $30
FDB $936F
FDB $938E
FCB $00
FDB $946F
FDB $948E
FCB $34
VERTX EQU *
*
*** COLOR MATRIX TEST
*
CRTEST PULS D GET RETURN
LDU CRPROC
STD PD+6,U SAVE
JSR SCRCLR CLEAR OUT BABY
LDA #CMTSTM PRINT THE MESSAGE
JSR WRD7V
LDA #$80
STA PD,U
CRTST1 NAP 1,CRTST2
CRTST2 JSR AVCHK PRESS??
BCS CMTBYE NOPE
DEC PD,U DONE WITH DELAY??
BNE CRTST1
LDA COLRMT GET FIRST COLOR.
BSR SETPCR STORE IT DOWN
BSR RAMBAR SET UP MEMORY.
CRTTZZ LDX #COLRMT TABLE TO STORE
CRTST3 LDA ,X+ GET A COLOR
LDU CRPROC
STX PD+2,U
BSR SETPCR STORE IT THROUGH
LDA #$80
STA PD,U
CRTST4 NAP 1,CRTST5
CRTST5 JSR AVCHK ADVANCE??
BCS CMTBYE YEP
DEC PD,U
BNE CRTST4
LDX PD+2,U RESTORE POINTER
CMPX #COLRMT+8
BLO CRTST3
BRA CRTTZZ CONTINUE THROUGH
CMTBYE LDU CRPROC
JMP [PD+6,U]
RAMBAR LDX #$0
LDY #COLRMD NUMBERS TO PUT IN BARS
RAMBA1 JSR HASSUB SAVE OUR X
LDA ,Y+
TFR A,B
RAMBA2 STD ,--X
CMPX XTEMP
BNE RAMBA2
LEAX $900,X
TSTA
BNE RAMBA3
LDX #$D00
RAMBA3 CMPY #COLRMD+16
BNE RAMBA1
RTS
COLRMT FCB $02,$03,$04,$10,$18,$20,$40,$80
COLRMD FCB $00,$FF,$11,$EE,$22,$DD,$33,$CC
FCB $44,$BB,$55,$AA,$66,$99,$77,$88
SETPCR LDX #PCRAM
SETPC1 STA ,X+
CMPX #PCRAM+16
BLO SETPC1
RTS
*
*** SWITCH TEST
*
SWMH EQU 44 HEIGHT OF FIRST MESSAGE
SWTEST PULS D GET RETURN ADDR
LDU CRPROC
STD PD+6,U
LDA #10
STA PD+4,U DELAY COUNTER FOR EXIT
JSR SCRCLR CLEAR IT PLEASE
LDA #SWTESM SWITCH TEST MESSAGE.
JSR WRD7V
LDU #RAMALS
SWTES0 CLR ,U+
CMPU #SW3SCI+1
BLS SWTES0
SWTES2 LDU #STABP
BSR SWSCN0
SWTES1 LDA #$34
STA PIA3+1
BSR SWSCN0 SCAN THE COCKTAIL SIDE
LDA #$3C
STA PIA3+1
BSR SWDISP
JSR AVCHK ADVANCE PRESSED?
BCC SWT999 NOPE.
LDU CRPROC
DEC PD+4,U
BEQ SWTBYE
SWT999 NAP 1,SWTES2
SWTBYE LDU CRPROC
JMP [PD+6,U] "RETURN"
SWSCN0 LDX ,U++ GET ADDRESS OF PORT
BEQ SWSCN5 DONE
LDY ,U++ GET ADDRESS TO STORE STATE
LDA ,X GET NEW STATE
EORA ,Y SEE WHERE DIFFERENT
STA 1,Y AND SAVE AS DIFFERENCE BYTE.
BRA SWSCN0
SWSCN5 RTS
SWDISP LDU #SPHTAB WE'LL WALK THROUGH SWITCH PHRASE TABLE
LDY #RAMALS WALK THROUGH THE SCANNED STUFF.
SWDIS4 LDB #1 WALK FROM LSB
SWDIS0 BITB 1,Y SEE IF THIS BIT CHANGED.
BEQ SWDIS2
BSR SWACT TAKE SOME ACTION
SWDIS2 LEAU 3,U MOVE TO NEXT ENTRY
ASLB SHIFT ONE DOWN
BCC SWDIS0
LEAY 2,Y TO NEXT BYTE
CMPY #SW3SCI PAST TABLE
BHI SWDIS9 YEP..DONE
LDA PIA3 COCKTAIL
BMI SWDIS4 YEP...FULL SCAN
CMPY #SW3SCN NOPE..DONE WITH NORMAL SWITCHES??
BLS SWDIS4 NOT DONE
SWDIS9 RTS RETURN BABY.
SWACT PSHS B,X SAVE THE MASK
LDA #$3F
STA SOUND BRING SOUND LINES HIGH IN ANTICIPATION
EORB ,Y INVERT THE BIT
STB ,Y AND MAKE THAT THE NEW STATE
LDB ,S RESTORE MASK
BITB ,Y WHICH WAY DID IT GO
BNE SWPRNT ON....PRINT A MESSAGE.
LDB 2,U HEIGHT
BEQ SWNOAC
LDA #$40 X
TFR D,X MAKE IT CURSOR
LDD #$3006
JSR BLKCLR CLEAR THE BLOCK
PULS B,X,PC
SWPRNT LDB 2,U GET HEIGHT
BEQ SWNOAC
LDA #$40 CURSOR
TFR D,X
LDB #$BB
STB TEXCOL
LDD ,U GET MESSAGE NUMBER,B (PLAYER NUMBER)
JSR WRD5FV AND PRINT IT.
LDA #$37
STA SOUND MAKE A SOUND
SWNOAC PULS B,X,PC AND RETURN.
STABP FDB PIA0,SW0ST
FDB PIA2,SW2ST
FDB PIA3,SW3ST
FDB 0
FDB PIA2,SW2STI
FDB PIA3,SW3STI
FDB 0
SPHTAB FCB SWMES1,0,SWMH AUTO UP
FCB SWMES1+1,0,SWMH+7 ADVANCE
FCB SWMES1+2,0,SWMH+14 RIGHT COIN
FCB SWMES1+3,0,SWMH+21 HIGH SCORE RESET
FCB SWMES1+4,0,SWMH+28 LEFT COIN
FCB SWMES1+5,0,SWMH+35 CENTER COIN
FCB SWMES1+6,0,SWMH+42 SLAM SWITCH
FCB 0,0,0 UNUSED (SOUND HANDSHAKE)
*
FCB SWMES1+7,1,SWMH+49 FIRE (1)
FCB SWMES1+8,1,SWMH+56 THRUST (1)
FCB SWMES1+9,1,SWMH+63 SMARTBOMB (1)
FCB SWMES1+10,1,SWMH+70 HYPERSPACE (1)
FCB SWMES1+11,0,SWMH+77 START 2
FCB SWMES1+12,0,SWMH+84 START 1
FCB SWMES1+13,1,SWMH+91 REVERSE (1)
FCB SWMES1+14,1,SWMH+98 DOWN (1)
*
FCB SWMES1+15,1,SWMH+105 UP (1)
FCB SWMES1+16,1,SWMH+112 INVISO (1)
FCB 0,0,0 UNUSED
FCB 0,0,0 UNUSED
FCB 0,0,0 UNUSED
FCB 0,0,0 UNUSED
FCB 0,0,0 UNUSED
FCB 0,0,0 UNUSED
*
FCB SWMES1+7,2,SWMH+119 FIRE (2)
FCB SWMES1+8,2,SWMH+126 THRUST (2)
FCB SWMES1+9,2,SWMH+133 SMART BOMB(2)
FCB SWMES1+10,2,SWMH+140 HYPERSPACE (2)
FCB 0,0,0 UNUSED
FCB 0,0,0 UNUSED
FCB SWMES1+13,2,SWMH+147 REVERSE (2)
FCB SWMES1+14,2,SWMH+154 DOWN (2)
*
FCB SWMES1+15,2,SWMH+161 UP (2)
FCB SWMES1+16,2,SWMH+168 INVISO (2)
FCB 0,0,0 UNUSED
FCB 0,0,0 UNUSED
FCB 0,0,0 UNUSED
FCB 0,0,0 UNUSED
FCB 0,0,0 UNUSED
FCB 0,0,0 UNUSED
LIB RRTEST2 INCLUDE SECOND HALF

712
RRTEST2.ASM Executable file
View File

@ -0,0 +1,712 @@
FDRET LDU #RAMERJ RAM ERROR RETURN
BRA FDROM0
FDROM LDU #DIG11Z
FDROM0 LDS #HSTK
FDROM5 LDY #FDROM6
LDA #1
JMP DELA1
FDROM6 LDA PIA0
BITA #$2
BNE FDROM5
FDROM1 LDY #FDROM7
LDA #1
JMP DELA1
FDROM7 LDA PIA0
BITA #$2
BEQ FDROM1
FDROM2 LDY #FDROM8
LDA #1
JMP DELA1
FDROM8 LDA PIA0
BITA #2
BNE FDROM2
JMP ,U
AVWAIT PULS D
LDU CRPROC
STD PD+6,U
AVWAIZ LDA PIA0 SEE IF ADVANCE PRESSED
BITA #$2 WELL??
BNE AVWAT2
NAP 1,AVWAIZ WELL, WAIT FOR IT.
AVWAT2 CLR PCRAM
JSR SCRCLR
BRA AVWAT5
AVWAT4 LDA PIA0
BITA #$2 WAIT FOR IT TO BE RELEASED
BEQ AVWAT3
AVWAT5 NAP 2,AVWAT4
AVWAT3 JMP [PD+6,U]
AVCHK PSHS A
LDA PIA0
BITA #$2
BEQ AVCHK1
SEC
PULS A,PC
AVCHK1 CLC
PULS A,PC
*
* DISPLAY BOOKKEEPPING
*
BOOK LDA #$FF
STA STATUS
JSR INITCM COLOR MATRIX PROPER.
BSR AVCHK
BCC BOOK3
BSR AVWAIT WAIT FOR HIM TO LET GO.
BOOK3 LDA #BOOKM
JSR WRD7V PRINT THE BOOKKEEPING MESSAGE
LDU #SLOT1
LDA #AUDMES FIRST OF THE AUDIT MESSAGES
BOOK0 PSHS A SAVE MESSAGE NUMBER
JSR WRD7V PRINT IT.
EXG U,X
JSR RCMOSB GET THE TOP BYTE
PSHS B
JSR RCMOSD
TFR D,Y
PULS B
EXG U,X
BSR BOOKSB PRINT B,Y WITH APPROPRIATE BLANKING
PULS A RESTORE A
INCA
CMPU #BKEND
BLO BOOK0 THANK YOU SIR, MAY I HAVE ANOTHER??
*
* COMPUTE AVERAGE PLAY TIME, AVERAGE LIVES PER GAME
*
LDA #AVTIM
JSR WRD7V
PSHS X
LDX #BKTIME
LDY #BKPLAY PLAYS
JSR BCDIV DO THE DIVIDE
PULS X
LDB QUO GET TOP OF QUOTIENT
LDY QUO+1
BSR BOOKSB PRINT OUT TH 6 WITH THE RITE KIND OF BLANKING
LDA QUO+3 GET 100THS
ANDA #$F 1/10
STA DVTEMP SAVE
LDA QUO+3
BITA #$10 1 IN THE 10'S
BEQ BOOK45
ANDA #$EF TAKE THE BIT AWAY
LSRA 1/2
ADDA #5 RESTORE THE WHATEVER
DAA
BRA BOOK46
BOOK45 LSRA 1/2
BOOK46 ADDA DVTEMP ADD THE 1/10
DAA
TFR A,B
LDA #AVTEND
JSR WRD7V PUT OUT : END
LDA #AVPLA
JSR WRD7V
PSHS X
LDX #BKMEN
LDY #BKPLAY PLAYS
BSR BCDIV DO THE DIVIDE
PULS X
LDB QUO GET TOP OF QUOTIENT
LDY QUO+1
BSR BOOKSB PRINT OUT TH 6 WITH THE RITE KIND OF BLANKING
LDB QUO+3 GET 100THS
LDA #AVPLEN
JSR WRD7V
JSR AVWAIT
JMP ADJV NOW GO DO ADJUSTMENT MODE
BOOKSB TSTB
BEQ BOOK1
LDA #AUDM1
JSR WRD7V FULL SIX DIGITS USED
LDA #AUDM2
JSR WRD7V
BRA BOOK2
BOOK1 LDA #AUDM3
JSR WRD7V
BOOK2 RTS
CBCDA PSHS B
JSR RCMOSA GET THE BYTE
TFR A,B
ANDA #$F
CMPA #$9
BLS CMCDB
LDA #9
CMCDB ANDB #$F0
CMPB #$90
BLS CMCDC
LDB #$90
CMCDC PSHS B
ORA ,S+
PULS B,PC
* DIVIDE - PASS X POINTS AT DIVIDEND
* PASS Y POINTS AT DIVISOR
* QUOTIENT 4 BYTES AT QUO IN BCD WITH 100THS
* QUO: QQ QQ QQ . DD
BCDIV PSHS X,Y,D,U
LDD #0
STD QUO
STD QUO+2 ZERO QUOTIENT IN CASE OF ZERO DIVIDE
BSR CBCDA GET 2 BYTES OF DIVIDEND
STA DIV
BSR CBCDA
STA DIV+1
BSR CBCDA
STA DIV+2
LDD #0
STA DIV+3
STD DIV+4
STA DIVSOR+3
STD DIVSOR+4
TFR Y,X POINT AT DIVISOR
JSR CBCDA
STA DIVSOR
JSR CBCDA
STA DIVSOR+1
JSR CBCDA
STA DIVSOR+2
BNE BCDIV1 NOT ZERO....WE MAY CONTIUE
LDD DIVSOR CHECK FOR ALL ZERO
BEQ DIVEX EXIT...ZERO DIVISOR
BCDIV1 LDU #QUO+2 POINT AT UNITS QUOTIENT VALUE
BCDIV4 TST DIVSOR WE NEED TO SHIFT DIVISOR DOWN
BNE BCDIV2 ITS IN THE RANGE WE LIKE
LEAU -1,U MOVE TO PROPER SIGNIF
LDB #5 BYTES TO SHIFT
LDX #DIVSOR
BCDIV3 LDA 1,X
STA 0,X+
DECB
BNE BCDIV3
CLR ,X SHIFT IN ZEROS
BRA BCDIV4
BCDIV2 LDX #DIV
BCDIV5 BSR SUBME DO A SUBTRACT
BCC BCDIV5 DONE WITH THIS DIGIT
LDY #DIVSOR+5 LAST DIGIT
LDB #5 SHIFT 3 DOWN
BCDIV6 LDA -1,Y GET PREVIOUS BYTE
STA ,Y
LEAY -1,Y PUSH BACK
DECB
BNE BCDIV6
CLR ,Y SHIFTED
LEAU 1,U
CMPU #QUO+3 LAST QUO BYTE
BLS BCDIV5
DIVEX PULS X,Y,D,U,PC
SUBME LDY #DIVSOR POINT AT DIVISOR
LDA #0 MAKE SURE WE FIT
SUBM1 LDB A,X GET DIVIDEND BYTE (MUST BE LARGER)
SUBB ,Y+ WELL??
BHI SUBGO IT IS
BLO SUBBYE IT ISN'T..DONE
INCA
CMPA #6
BLO SUBM1
SUBGO LDB #6
LDY #DIVTMP
SUBGO1 LDA #$99 GET A BYTE
SUBA 6,Y
STA ,Y+
DECB
BNE SUBGO1
LDB #6
CLC
LDA #1
SUBGO2 ADCA ,-Y
DAA
STA ,Y AND STORE BACK
LDA #0
DECB
BNE SUBGO2
LDB #5 INITIAL OFFSET WHILE WALKING
LDY #DIVTMP+6
CLC
SUBGO3 LDA ,-Y GET THE SUBTREHEND
ADCA B,X "SUBTRACT" FROM DIVISOR
DAA
STA B,X STORE BACK TO DIVISOR
DECB
BPL SUBGO3
LDA ,U GET CURRENT QUOTIENT BYTE
ADDA #1
DAA
STA ,U KICK IT
CLC
RTS
SUBBYE SEC
RTS
*
* SOUND TEST
*
SNDSRT JSR SCRCLR CLEAR THE SCREEN
SNDSR1 LDD #$FE01 SET UP FOR SOUND LINE 1
STD PD,U
RTS
SNDCYC PULS D
STD PD+6,U
LDA #$3F
STA SOUND
NAP 1,SNDC55
SNDC55 LDA #$2C
STA SOUND
NAP 1,SNDCY6
SNDCY6 LDA #$3F
STA SOUND
NAP 1,SNDCY1
SNDCY1 LDD PD,U
ANDA #$3F
STA SOUND
LDA #SNDTEX
JSR WRD7V
LDA #$40
STA PD+4,U
SNDCY4 NAP 1,SNDCY5
SNDCY5 JSR AVCHK ADVANCE???
BCS SNDCY3 THEN GO
DEC PD+4,U
BNE SNDCY4
SNDCY3 LDA PD+2,U SEE WHO SET THIS UP??
BNE SNDC90 AUTOCY DID....ALWAYS ADVANCE
LDA PIA0 CHECK MANUAL/AUTO
RORA
BCC SNDC91 MANUAL...DON'T MOVE ON.
SNDC90 LDD PD,U
SEC
ROLA MOVE TO NEXT LINE
INCB
CMPB #7 UP TO LINE 7??
BLO SNDCY2
BSR SNDSR1
SNDCY2 STD PD,U
SNDC91 JMP [PD+6,U]
*
* CMOS RAM TEST
*
CMTEST LDX #CMOS
LDY #RAMALS USE SAMRAM
CMTST1 LDA ,X+ DON'T DO DOUBLES BECAUSE OF HARDWARE BRAIN DAM.
STA ,Y+
CMPX #CMOS+$400 DONE??
BNE CMTST1
LDB #6 ENOUGH ITERATIONS TO ASSURE
ORCC #$3F STOP INTERRUPTS
CMTST2 LDU HSEED
LDY SEED
LDX #CMOS
CMTST3 JSR RAND
STA ,X+
LDA #WDATA
STA WDOG
CMPX #CMOS+$400 DONE??
BNE CMTST3
STY SEED RESTORE SEED
STU HSEED
LDX #CMOS
CMTST4 JSR RAND
EORA ,X+
ANDA #$F
BNE CMEROR
LDA #WDATA
STA WDOG
CMPX #CMOS+$400
BNE CMTST4
DECB ANOTHER PASS...DONE??
BNE CMTST2
BSR RAMBAK
CLC CLEAR IT FOR REAL
RTS AND RETURN
RAMBAK LDU #RAMALS
LDY #CMOS
RAMBK0 LDA ,U+
STA ,Y+
CMPY #CMOS+$400
BNE RAMBK0
RTS
CMEROR BSR RAMBAK
SEC
RTS
* RAM TEST....Y = PLACE TO RETURN IF NO ERROR
* X = SEED TO START WITH
* A = ITERATIONS TO MAKE
RAMTST ORCC #$3F NO INTERRUPTS DURING TEST
CLR RWCNTL SET TO RAM READ
TFR A,DP COUNT AT DP.
TFR X,D START WITH A PASSED SEED.
RAM2 TFR D,U SAVE THE SEED
RAM0 LDX #0 MEMORY POINTER
RAM3 COMB DONT ASK
BITB #9
BNE RAM4
COMB
RORA
RORB
BRA RAM6
RAM4 COMB
BITB #9
BNE RAM5
RORA
RORB
BRA RAM6
RAM5 LSRA
RORB
RAM6 STD ,X++
EXG X,D SINCE IRQ RUNS OUT OF RAM, STROKE ROVER
TSTB
BNE RAM6B EVERY 256!
LDB #WDATA
STB WDOG HAVE A BONE..EVER BEEN BONED.....
TFR DP,B CHECK IS NORMAL DIAGS
CMPB #$FF FF MEANS FRONT DOOR
BNE RAM6C
LDB PIA0 CHECK FOR ADV.
BITB #2
BEQ RAM6C NOT PRESSED.
JMP ,Y TIME TO RETURN
RAM6C CLRB RETURN B TO ZERO
RAM6B EXG X,D TRADE BACK
CMPX #RAMTOP DONE??
BNE RAM3 NOPE..CONTINUE
*
TFR U,D RESTORE SEED.
LDX #0
RAM7 COMB
BITB #9
BNE RAM8
COMB
RORA
RORB
BRA RAM10
RAM8 COMB
BITB #9
BNE RAM9
RORA
RORB
BRA RAM10
RAM9 LSRA
RORB
RAM10 CMPD ,X++
BNE RERROR RAM ERROR!
RAM25 EXG X,D CHECK FOR END OF PAGE
TSTB
BNE RAM17
LDB #WDATA
STB WDOG
TFR DP,B SEE IF NORMAL RUN
CMPB #$FF FRONT DOOR??
BNE RAM17C NOPE
LDB PIA0 CHECK ADV.
BITB #2
BEQ RAM17C
JMP ,Y JUST RETURN (NO ERRORS)
RAM17C CLRB
RAM17 EXG X,D TRADE BACK
CPX #RAMTOP DONE??
BNE RAM7
TFR D,U SHOVE NEW SEED OVER
TFR DP,A
CMPA #$FF FF INDICATES FRONT DOOR
BNE RAM99
TFR U,D
JMP RAM0 DO ANOTHER ITERATION IN THIS TEST.
RAM99 DECA TAKE ONE AWAY
TFR A,DP RETURN
CMPA #$80 ZERO OUT IN AUTO CYCLE???
BEQ RAM99Z YEP....
TSTA SET FOR BELOW BRANCH
TFR U,D MAKE SEED AND SAVED SEED LOOK ALIKE
LBNE RAM0 DO ANOTHER ITERATION
RAM99Z LDB #1 SET BACK TO ROM
STB RWCNTL
JMP ,Y RETURN
RERROR LEAX -2,X BACK TO ERROR POINT
EORA ,X FIND DIFFERENCE.
EORB 1,X
TSTA NO DIFFERENCE?
BNE RERR2 DIFF.
TSTB
BNE RERR2
LEAX 2,X UNDO THIS BULLSHIT...MAYBE ALPHA BABY.
BRA RAM25 AND CONTINUE
RERR2 LDU #$30 FIND BANK NUMBER
EXG X,D
CLRB
EXG X,D
RERR0 CMPX #0
BEQ RERR1 DONE.
LEAX -$100,X
LEAU $10,U
CMPU #$30
BLS RERR0
LDU #$10
BRA RERR0
RERR1 LEAU 1,U
ASRA
BCS RERR5 THIS IS THE BIT
ASRB
BCS RERR5
BRA RERR1
RERR5 TFR U,D BRING THE BANK,BIT INTO B
LDA #1 INDICATE RAM ERROR
STA RWCNTL BACK TO THAT JAZZ
LDS #RERR6 RETURN HERE
BRA PULSE PULSE THE LEDS
RERR6 LDA #RAM>>8
TFR A,DP
TFR CC,A
COMA
BITA #$C0 INITIAL TEST???
BEQ RER098 YEP
LDA #FDRAMM
BRA RER099
RER098 LDA #RERRM
RER099 LDS #HSTK SET UP THE STACK
JSR SCRCLR
JSR WRD7V PRINT THE MESSAGE.
TFR CC,A SEE WHICH TEST
BITA #$40 FIRQ SAYS FRONT DOOR
BNE REROR7 NOPE
JMP FDRET DO THE FRONT DOOR RETURN
REROR7 LDY #INIT OTHERWISE START...TRY AND RUN THE GAME.
BRA DELAY
DELAY LDA #32
DELA1 LDX #$5800
DELA2 LEAX -1,X
LDB #WDATA
STB WDOG
CMPX #0
BNE DELA2
DECA
BNE DELA1
JMP ,Y RETURN
*
* PULSE......PUT SOME CRAP IN LED'S
* LOW HALF OF A IS ERROR CODE...
* BOTH HALVES OF B ARE THE RELEVANT DATA.
*
PULSE TFR D,U SAVE A,B
LDA #2
TFR A,DP
PULSE0 TFR U,D
LDY #PULSE1
BRA PSSUB
PULSE1 LDA #2
LDY #PULSE2
BRA DELA1
PULSE2 LDY #PULSE3
BRA BLKLED
PULSE3 LDA #1
LDY #PULSE4
BRA DELA1
PULSE4 TFR U,D GET DATA BACK
TFR B,A SHIFT B DOWN
LSRA
LSRA
LSRA
LSRA PROPER HALF
LDY #PULSE5
BRA PSSUB PULSE IT.
PULSE5 LDA #2
LDY #PULSE6
BRA DELA1
PULSE6 LDY #PULSE7
BRA BLKLED
PULSE7 LDA #1
LDY #PULSE8
BRA DELA1
PULSE8 TFR U,D
TFR B,A
LDY #PULSE9
BRA PSSUB
PULSE9 LDA #2
LDY #PULS10
BRA DELA1
PULS10 LDY #PULS11
BRA BLKLED
PULS11 LDA #5
LDY #PULS12
JMP DELA1
PULS12 TFR DP,A SEE IF FIRST PASS??
DECA
TFR A,DP
BNE PULSE0
LDY #PULS95
BRA BLKLED BLANK EM.
PULS95 TFR U,D RESTORE D
JMP ,S AND RETURN
BLKLED LDA #$3C
STA PIA0+1
INCA
STA PIA1+1
LDA #$C0
STA PIA1
JMP ,Y AND RETURN
* PSSUB - PUT LOW HALF OF A TO LEDS
PSSUB TFR A,B SAVE A COPY.
RORA BIT 0 - CARRY
RORA BIT 0 - BIT 7
RORA BIT 0 - BIT 6
ANDA #$C0
STA PIA1 THOSE BITS OUT.
LDA #$34 ASSUME ZERO
BITB #$4 SEE IF 1
BEQ PSSUB1 NOPE
LDA #$3C
PSSUB1 STA PIA1+1 THATS ALL FOR THAT BIT
LDA #$34
BITB #$8
BEQ PSSUB2
LDA #$3C
PSSUB2 STA PIA0+1
JMP ,Y AND RETURN
ROMTST ORCC #$3F NO INTERRUPTS WHILE THIS RUNS
LDX #ROMTAB INDEX INTO TABLE
ROM0 CMPX #ROMEND DONE??
BEQ ROMDUN YEP
LDA 1,X LOOK TO SEE IF PART STUFFED??
BEQ ROMBOT NOPE...MOVE TO NEXT
LDA ,X GET BASE
CLRB
TFR D,U USE U TO POINT THROUGH
LDA #WDATA FOR ROVER
ROM1 ADDB ,U+ ADD A BYTE
STA WDOG
EXG D,U SEE IF DUN
CMPA 2,X ARE WE TO NEXT PART
EXG D,U CHANGE BACK
BNE ROM1 NOPE
CMPB 1,X EXPECTED SUM???
BNE ROMERR NOPE....LETS SEND OUT PROBLEM WARNING.
ROMBOT LEAX 2,X MOVE TO NEXT PART
BRA ROM0
ROMERR LDA ,X GET THE ADDRESS OF THE BAD PART
LSRA
LSRA
LSRA
LSRA
CMPA #$D ONE OF TOP 3 PARTS??
BLO ROMER1 NOPE
SUBA #4 GROUP THEM WITH THE LOWER PARTS
ROMER1 ADDA #1 MAKE ERRORS FROM 1-12
DAA AND MAKE BCK
TFR A,B
LDA #2 ROM ERROR
LDS #RERR3 RETURN
JMP PULSE AND SEND OUT THE CODE
RERR3 LDA #RAM>>8
TFR A,DP
LDA #WDATA
STA WDOG
LDS #HSTK
JSR SCRCLR
TFR CC,A
COMA
BITA #$C0 INITIAL TEST??
BEQ RERR94
LDA #FDROMM
BRA RERR95
RERR94 LDA #ROMERM
RERR95 JSR WRD7V PUT THE MESSAGE ON THE SCREEN
TFR CC,B SEE WHERE WE CAM FROM
BITB #$40 FIRQ SAYS FRONT DOOR
BNE ROMER3
JMP FDROM
ROMER3 LDY #INIT NOW TRY AND RUN THE GAME
JMP DELAY BUT NOT UNTIL A SHORT DELAY.
ROMDUN JMP ,Y ALL ROMS OK...RETURN.
* ROMTAB - THIS TABLE INDICATES THE BASE OF THE PART, AND THE
* RESULTING SUM. IF SUM=0 THEN PART IS NOT STUFFED.
ROMTAB FCB $00,0 0000
FCB $10,0 1000
FCB $20,0 2000
FCB $30,0 3000
FCB $40,0 4000
FCB $50,0 5000
FCB $60,0 6000
FCB $70,0 7000
FCB $80,0 8000
FCB $90,0 9000
FCB $A0,0 A000
FCB $B0,0 B000
FCB $C0,0 C000
FCB $D0,0 D000
FCB $E0,0 E000
FCB $F0,0 F000
ROMEND FCB 0
FCB 0 CHECK BYTE (FUDGER) FOR THIS PART ($F000)
FCC '(C)1982 WILLIAMS ELEC.INC'
ORG $FFF0
FDB PWRUPV,PWRUPV,PWRUPV,PWRUPV
FDB PWRUPV
FDB PWRUPV,PWRUPV,PWRUPV
END

1066
RRTESTB.ASM Executable file

File diff suppressed because it is too large Load Diff

605
RRTESTC.ASM Executable file
View File

@ -0,0 +1,605 @@
OPT NOL
LIB RRFRED
OPT LIS
ORG TSCORG PLACE TO RUN FROM
JMP CKHS CHECK HIGH SCORES (POWER UP)
JMP ENDGAM END OF GAME HIGH SCORE PROCESSING
JMP GODENT ENTER GOD
JMP RESHSC RESET HIGH SCORES
JMP HSCHK CHECK HIGH SCORES AFTER FAC SET RESTORE
JMP HSBUT HIGH SCORE RESET BUTTON
*
HSBUT LDA #$18 3 SECONDS REQUIRED
STA PD,U
LDA #$3F
STA SOUND
HSBUT1 NAP 8,HSBUT2 CHECK BUTTON
HSBUT2 LDA PIA0
BITA #8 STILL PRESSED??
BEQ HSBUT3 NOPE....BYE
DEC PD,U
BNE HSBUT1 NOT ENOUGH TIME YET
LDY #GODINT JUST PUT IN DEFAULT NAME
LDX #DEFHSR
LDB #23 NOT THE SCORE, JUST THE NAMES
JSR CMSMVV
JSR MKGODC MAKE THE NEW CHECK BYTE
CLR SOUND INDICATE MISSION ACCOMPLISHED
HSBUT3 JMP SUCIDE
*
HSCHK LDY #CMSCOR START AT BEGINNING OF TABLE
LDB #8 8 BAD ENTRIES IS ADEQUATE FOR FULL BASH
HSCHK1 JSR FSCCK FORM THE CHECK BYTE
EORA 6,Y COMPARE TO CHECK BYTE THERE
ANDA #$0F
BEQ HSCHK2
DECB
BEQ RESHSC 8 BAD ONES..RESET
HSCHK2 LDA #WDATA
STA WDOG
LEAY SCRSIZ,Y
CMPY #TODAYS BEYOND REGION??
BLO HSCHK1
RTS
*
*** RESHSC RESET HIGH SCORES
*
RESHSC LDA #WDATA
STA WDOG
LDX #DEFHSR DEFAULT SCORES
LDY #GODINT GODS INITIALS FOLLOWED BY GODS SCORE FOLLOWED BY REST
LDB #CDEFS1 SIZE OF DEFAULT TABLE
JSR CMSMVV TRANSFER THE BLOCK
LDX #DEFSC2
LDY #GODINT+(2*CDEFS1)
LDB #CDEFS2
JSR CMSMVV
JSR MKGODC
LDY #CMSCOR WALK THROUGH
RESHS1 JSR MKSCCK
LDA #WDATA
STA WDOG
LEAY SCRSIZ,Y
CMPY #TODAYS
BLO RESHS1
LDA #HSRESM SAY THAT THEY WERE RESET
JMP WRD7V AND RETURN
DEFHSR FCC 'BIL'
DEFGOD FCC 'WILLY'
FCB $3A
FCC 'ELKTRIX'
FCB $3A,$3A,$3A,$3A,$3A,$3A,$3A
FCB $00,$15,$17,$82
FCC 'VID'
FCB $00,$12,$21,$45
FCC 'KID'
FCB $00,$12,$21,$35
TODTAB FCC 'DRJ'
FCB $00,$05,$21,$27
FCC 'LED'
FCB $00,$05,$02,$18
FCC 'EPJ'
FCB $00,$04,$12,$55
FCC 'JER'
FCB $00,$04,$12,$50
FCC 'KID'
FCB $00,$03,$19,$20
FCC 'MLG'
FCB $00,$03,$19,$19
FCC 'SSR'
FCB $00,$02,$66,$45
FCC 'UNA'
FCB $00,$02,$66,$35
FCC 'JRS'
FCB $00,$02,$52,$50
FCC 'CJM'
FCB $00,$02,$41,$10
ENDTOD FCC 'KJF'
FCB $00,$02,$30,$20
FCC 'MRS'
FCB $00,$02,$20,$35
FCC 'PGD'
FCB $00,$02,$10,$90
FCC 'NJM'
FCB $00,$02,$09,$65
FCC 'NHD'
FCB $00,$02,$09,$60
CDEFS1 EQU *-DEFHSR
DEFSC2 FCC 'DON'
FCB $00,$01,$82,$80
FCC 'VIV'
FCB $00,$01,$82,$80
FCC 'GWW'
FCB $00,$01,$81,$05
FCC 'CRB'
FCB $00,$01,$80,$55
FCC 'MDR'
FCB $00,$01,$75,$65
FCC 'BAC'
FCB $00,$01,$72,$56
FCC 'W'
FCB $3A
FCC 'R'
FCB $00,$01,$70,$70
FCC 'MPT'
FCB $00,$01,$60,$60
FCC 'SUE'
FCB $00,$01,$55,$20
FCC 'MOM'
FCB $00,$01,$44,$80
FCC 'DAD'
FCB $00,$01,$44,$79
FCC 'SFD'
FCB $00,$01,$44,$78
FCC 'AKD'
FCB $00,$01,$44,$77
FCC 'CWK'
FCB $00,$01,$33,$30
FCC 'TMH'
FCB $00,$01,$32,$70
FCC 'EJS'
FCB $00,$01,$31,$20
FCC 'RAY'
FCB $00,$01,$30,$65
FCC 'GAY'
FCB $00,$01,$29,$65
FCC 'RKM'
FCB $00,$01,$28,$55
FCC 'CNS'
FCB $00,$01,$27,$55
*
CDEFS2 EQU *-DEFSC2 LENGTH OF TABLE
*
NULSCR FCB $3A,$3A,$3A
FCB $00,$01,$00,$00
NULSIZ EQU *-NULSCR
HSTUNE FCB $C0,1,1,$1B,1,1,2,0 PLEBIAN HIGH
GODSND EQU *
ULTUNE FCB $C0 UPPER LEFT OR GOD
FCB 1,$FF,$3C
FCB 1,$FF,$00 CONTINUE AIR-RAID
FCB 1,$20,00
FCB 1,$C0,$36 FALLING PLANE
FCB 1,$60,$3D FALLING BOMB
FCB 2,$A,$11 2 THUNDER CRACKS
FCB 2,$40,$3E,0 AND THE AFTERSHOCK
CLRSCR PSHS X,Y,B SAVE BASHED
LDX #NULSCR POINT AT NULL SCORE
LDB #NULSIZ HALF AN ENTRYS WORTH OF BYTES
JSR CMSMVV
PULS X,Y,B,PC
MKGODC PSHS A
BSR FGODC FOR GODS CHECK BYTE IN LOW HALF OF A
STA GODSCR+40 STORE AFTER THE CHARACTERS
PULS A,PC
*
** FORM GOD'S CHECK BYTE
*
FGODC PSHS X
LDX #GODINT LETS START AT THE VERY BEGINNING....
CLRA
FGODC0 ADDA ,X ADD THE CURRENT NIBBLE
FGODC1 LEAX 1,X
CMPX #GODSCR+40 CHECK BYTE???
BEQ FGODC1
CMPX #GODSCR+48 DONE???
BNE FGODC0
PULS X,PC RETURN IN LOW HALF OF A
MKSCCK PSHS A
BSR FSCCK FORM THE CHECK BYTE
STA 6,Y STORE IT
PULS A,PC
FSCCK PSHS Y,B
LDB #SCRSIZ
CLRA
MSCCK0 CMPB #SCRSIZ-6 ABOUT TO DO CHECK BYTE??
BEQ MSCCK1
ADDA ,Y ADD THE CURRENT BYTE
MSCCK1 LEAY 1,Y
DECB
BNE MSCCK0
PULS Y,B,PC
CKHS LDA #50 DONT GO THROUGH MORE THAN 50
PSHS A
LDY #CMSCOR WALK THROUGH SCORES
CKHS7 BSR FSCCK FORM THE SCORE CHECK BYTE
EORA 6,Y
ANDA #$F
BEQ CKHS5
CKHS4 JSR RMENTR REMOVE THE ENTRY
CLR CREDST
CLR CREDST+1
DEC ,S MAKE SURE WE DON'T REMOVE TOO MANY
BEQ CKHS67
BRA CKHS7 DON'T PUSH POINTER YET.
CKHS5 LDA #3
LDB #4
BSR CKENT
BCS CKHS4
CKHS6 LEAY SCRSIZ,Y MOVE TO NEXT
CMPY #TODAYS
BLO CKHS7
CKHS67 PULS A TAKE ENTRY OFF OF STACK
LDX #TODTAB TODAY'S TABLE (NORMAL BYTES)
LDY #TODAYS
LDB #ENDTOD-TODTAB
JSR CMSMVV
BSR FGODC NOW CHECK OUT GOD.
EORA GODSCR+40 CHECK IT OUT
ANDA #$F
BEQ CKHS1 OK..CONTINUE
BSR REMGOD
CKHS1 LDY #GODINT BEGINNING OF TEXT ONLY PART-CHECK ALPHA NUM
LDA #23 20 CHARS OF TEXT
LDB #4 4 BYTES OF NUMBERS PLEASE
BSR CKENT MAKE SURE ALPHAS AND NUMERICS
BCC CKHS3
BSR REMGOD REMOVE GOD
CKHS3 RTS
REMGOD LDX #GODSCR GOD BAD FIRST BLANK OUT
LDA #$3A
CKHS2Z JSR WCMOSA
CMPX #GODSCR+40 DONE??
BLO CKHS2Z DO ANOTHER CHARACTER
LDX #CMSCOR #2
LDY #GODSCR
LDA #6 6 NIBBLES
JSR BLKMOV MOVED
LDY #GODINT X STILL POINTS AT FIRST GUYS INITIALS
JSR BLKMOV MOV EM TOO
LDX #CMSCOR+6 #2 SCORE
LDY #GODSCR+40 #2 SCORE GOES HERE
LDA #8
JSR BLKMOV
JSR MKGODC MAKE THE CHECK BYTE
LDY #CMSCOR NOW REMEOVE #2
JMP RMENTR REMOVE #2 AND RETURN
CKENT PSHS D,X
LDB #WDATA
STB WDOG
TFR Y,X CMOSABLE REGISTER
CKENT1 JSR RCMOSB READ A BYTE
CMPB #$41 LOWER THAN A??
BHS CKENT4 NOPE...HIGH ENOUGH CHECK TOO HIGH
CMPB #$3A TOO LOW..CHECK SPACE
BNE CKENT5 NOPE...NOT VALID
CKENT4 CMPB #$5A
BHI CKENT5 HIGHER THAN Z
DECA ONE LESS ON THIS FRONT
BNE CKENT1
LDA 1,S GET THE SECOND PART COUNTER BACK
JSR RCMOSB GET THE CHECK BYTE
ANDB #$F
CMPB #9
BHI CKENT5 NO HEX ALLOWED
DECA
CKENT2 JSR RCMOSB
PSHS B
ANDB #$F LOOK AT LOW HALF
CMPB #9
PULS B
BHI CKENT5 NOT NUMERIC...ERROR!
ANDB #$F0
CMPB #$99
BHI CKENT5
DECA
BNE CKENT2
CKENT3 CLC
CKENT8 LDA #WDATA
STA WDOG
PULS X,D,PC
CKENT5 SEC
BRA CKENT8
*
*** RMENTR - REMOVE SCORE ENTRY POINTED TO BY Y.
*
RMENTR PSHS X,Y,D
LEAX SCRSIZ,Y X POINTS PAST Y
RMENT0 CMPX #TODAYS ARE WE BEYOND IN X.
BHS RMENT1 YEP...DONE.
LDA #SCRSIZ
BSR BLKMOV MOVE THE BLOCK X TO Y
LEAY SCRSIZ,Y
LEAX SCRSIZ,X
LDA #WDATA
STA WDOG
BRA RMENT0
RMENT1 JSR CLRSCR CLEAR THE BLOCK NOW POINTED AT BY Y (BOTTOM)
JSR MKSCCK AND FORM THE CHECK BYTE
PULS X,Y,D,PC
* BLKMOV A BYTES FROM [X] TO [Y]
BLKMOV PSHS X,Y,D
BLKMV1 LDB ,X+
STB ,Y+
DECA
BNE BLKMV1
PULS X,Y,D,PC
ENDGAM JSR GNCIDE KILL COLOR PROCS ETC.
JSR SCRCLR
JSR CRINIT PRETTY COLORS PLEASE
JSR P1SW POINT AT PLAYER 1
LDX #ZP1SCR PLAYER 1'S SCORE
LDB #1 PLAYER '1'
BSR EGSUB DO IT UP FOR HIM
LDB PLRCNT HOW MANY???
DECB
BEQ ENDGMR RETURN.
JSR SCRCLR
LDA PIA3 COCKTAIL??
BPL ENDGM1 NOPE
JSR P2SW THEN FACE THE NATION
ENDGM1 LDX #ZP2SCR
LDB #2
BSR EGSUB
JSR SCRCLR
JSR P1SW AND SWITCH TO PLAYER 1
ENDGMR JMP GOV JUMP TO GAME OVER (AMODE) PROCESSING
EGSUB PULS Y GET RETURN ADDRESS
STY EGRAM
STX PLRX SAVE PARAMS
STB CURPLR
JSR GODCHK SEE IF GOD
BCC EGSUB1
JSR GODESB HAVE HIM ENTER IT.
LDY #CMSCOR BUBBLE TO VACATE THIS POSITION
LDX #TODAYS-SCRSIZ FROM BOTTOM
JSR BUBDN BUBBLE EM DOWN
LDX #GODSCR+40 POINT AT SOON TO BE EX-GOD
LDY #CMSCOR+6 THIS IS WHERE IT GOES
LDA #8 8 NIBBLES
JSR BLKMOV MOVE IT DOWN
LDX #GODINT AND HIS INITIALS
LDY #CMSCOR
LDA #6
JSR BLKMOV AND MOVE IT
LDY #CMSCOR POINT AT #2
JSR MKSCCK AND FORM HIS CHECK BYTE
LDX PLRX POINT AT SCORE
LDY #GODSCR+40
LDB #4
JSR CMSMVV
JSR MKGODC
LDX #NULSCR BLANK INITIALS
LDY #GODINT
LDB #3
JSR CMSMVV
JSR SCRCLR
LDA #NOWMES TELL HIM TO ENTER HIS INITIALS NOW.
STA EGRAM2 INDICATE GOD JUST ENTERED
LDX #GA2 CHECK NUMBER OF INITIALS
JSR RCMOSB
CMPB #3
BEQ GET333 THEN USE INITIALS AS INITIALS
BRA GETHM2 JUMP INTO THE ROUTINE TO DO THAT.
* CODE TO GET GOD HERE.
EGSUB1 JSR TODCHK CHECK TODAYS HIGH
BCS GETHIM
JSR ALLCHK CHECK ALL TIME
BCS GETHIM
JMP [EGRAM] RETURN...HOW BORING.
*
GETHIM CLR EGRAM2
LDD #HSTUNE HIGH SCORE TUNE
CMPY #TODAYS IS IT POINTING AT THE HIGHEST
BNE GETHM1 NOPE
LDD #ULTUNE
GETHM1 JSR SNDLDS
LDA #CONG
GETHM2 LDB CURPLR GET PLAYER NUMBER
JSR SCRCLR
JSR WRD7V PUT THE MESSAGE OUT
LDD #$3A3A SPACES
STD ALTBL
STA ALTBL+2
LDD #$300 3 CHARS PLEASE, NO FUNNY ONES
LDX #$4680 PLACE TO DO IT
LDY #ALTBL PLACE FOR HS.
JSR GETLT
GET333 JSR TODCHK SEE WHERE TO PUT IT ETC.
BCC GETHM3 NOT THIS TIME JACK
LDX #TODEND-SCRSIZ END OF TODAYS
JSR SCTRNS
GETHM3 JSR ALLCHK CHECK FOR ALL TIME
BCC GETHM5 NOPE
TST EGRAM2 WAS THIS GOD??
BEQ GETHM4 NOPE
LDX #ALTBL
LDY #GODINT JUST STORE THE INITIALS ON THIS SIDE
LDB #3
JSR CMSMVV DONE.
JSR MKGODC FORM GOD'S NEW CHECK BYTE
LDA #5 INTERESTED IF THERE ARE 5 OTHERS!
BSR SETBZZ WELL????
BCC GETHM5 NOPE.
TFR X,Y MOVE LOWEST POINTED TO INTO Y
JSR RMENTR REMOVE IT.
BRA GTTHM8 AND TELL HIM IT WAS REMOVED
GETHM4 JSR SETBOT FIND PLACE TO BUBBLE DOWN TO (5 MAX RULE)
PSHS CC SAVE ANSWER
PSHS X
CMPY ,S++
BHI GETHM8 NOT BETTER THAN HIS TOP 5
BSR SCTRNS DONE.
GETHM8 PULS CC GET CARRY BACK
BCC GETHM5
GTTHM8 JSR SCRCLR
LDA #ONLY5M
JSR WRD7V
NAP $60,GETHM5
GETHM5 JMP [EGRAM]
SETBZZ PSHS Y,D
BRA SETBT0
SETBOT PSHS Y,D
LDX #GODINT SEE IF MATCH OF GOD INITIALS
BSR SETSUB
LDA #4 ASSUME MATCH
BCS SETBT0 YEP...ONLY 4 MORE NEEDED
INCA
SETBT0 STA XTEMP
LDX #CMSCOR POINT AT FIRST ENTRY
SETBT1 BSR SETSUB SEE IF THIS ONE MATCHES
BCC SETBT3 NOPE...
DEC XTEMP FOUND
BEQ SETBT5 AND TIME TO EXIT
SETBT3 LEAX SCRSIZ,X PUSH TO NEXT
CMPX #TODAYS
BLO SETBT1 NOT DONE...DO ANOTHER
LDX #TODAYS-SCRSIZ BUBBLE FROM BOTTOM
CLC
PULS Y,D,PC
SETBT5 SEC
PULS Y,D,PC AND RETURN IT
SETSUB PSHS X
LDY #ALTBL ALT TABLE
LDB #3
SETSB2 JSR RCMOSA
CMPA ,Y+ COMPARE TO ALT LETTER
BNE SETSB1 NO GOOD...MOVE TO NEXT
DECB ONE LESS TO DO
BNE SETSB2
SEC
PULS X,PC
SETSB1 CLC NO MATCH
PULS X,PC
SCTRNS PSHS Y
JSR BUBDN BUBBLE EM TO MAKE ROOM
LDX #ALTBL
LDB #3
JSR CMSMVV TRANSFER THE BLOCK
LDX PLRX
LDB #4
JSR CMSMVV TRANSFER THE SCORE
PULS Y
JMP MKSCCK FORM THE CHECK BYTE
BUBDN PSHS X,Y
TFR X,Y BOTTOM IS DESTINATION
BUBDN1 CMPY 2,S IS OUR DESTINATION WHAT WE WANT TO FILL??
BEQ BUBDUN THEN WE'RE DONE
LEAX -SCRSIZ,Y X IS SOURCE
LDA #SCRSIZ THAT MANY BYTES
JSR BLKMOV MOVE THE BLOCK
LEAY -SCRSIZ,Y
BRA BUBDN1
BUBDUN PULS X,Y,PC BYE
GODENT PULS D RETURN
STD EGRAM
LDB #1
BSR GODESB HAVE THE GUY ENTER IT
JSR MKGODC MAKE THE CHECK BYTE AND RETURN
JMP [EGRAM]
GODESB PULS Y GET RETURN ADDRESS
STY EGRAM2 SAVE IT
CLRA
TFR D,Y PASS PLAYER IN Y
LDD #GODSND
JSR SNDLDS MAKE THE SOUND (TUNE)
LDX #GA2 GET GOD LETTERS
JSR RCMOSB
JSR SCRCLR
CMPB #3 ONLY 3???
BNE GMANY NO
LDB CURPLR GET PLAYER
LDA #CONG
JSR WRD7V PRINT THE NORMAL MESSAGE
LDA #3
LDX #$4680
BRA GTHREE
GMANY LDA #GODMES
JSR WRD7V PRINT OUT CONGRATS
TFR B,A MAX LETTERS IN A NOW
JSR NEWBCH CALL THE RIGHT ONE
LDX #$2D80 PLACE TO DO IT
GTHREE LDY #ALTBL+20 PLACE TO STORE THE CHARS
LDB #$3A PUT SPACES IN
GODES1 STB ,-Y
CMPY #ALTBL
BHI GODES1
CLRB ALPHA ONLY
JSR GETLT ENTER THE STUFF
LDX #ALTBL
LDY #GODSCR
LDB #20
JSR CMSMVV
JMP [EGRAM2] RETURN
GODCHK PSHS X,Y
LDY #GODSCR+40 POINT AT THE SCORE PART
LDX PLRX POINT AT HIS SCORE
BSR CMPSCR COMPARE SCORES
PULS X,Y,PC RETURN THE CARRY BIT
TODCHK PSHS X RETURN ENTRY POINTER IF OK
LDY #TODAYS+6
LDX PLRX
TODCK1 BSR CMPSCR COMPARE
BCS TODBYE
LEAY SCRSIZ,Y PUSH TO NEXT
CMPY #TODEND BEYOND
BLO TODCK1
CLC
PULS X,PC
TODBYE LEAY -6,Y PUSH BACK TO BEGINNING OF ENTRY TO REPLACE
PULS X,PC AND RETURN WITH CARRY SET
ALLCHK PSHS X
LDY #GODSCR+40 POINT AT SCORE PART OF GOD ENTRY
LDX PLRX
ALCK1 BSR CMPSCR
BCS TODBYE
LEAY SCRSIZ,Y
CMPY #TODAYS-SCRSIZ BEYOND VISIBLES??????
BLO ALCK1 NOPE..CONTINUE
CLC
PULS X,PC NOT GOOD ENOUGH
CMPSCR PSHS Y,X,D
EXG X,Y MAKE X POINT AT CMOS
LDB ,Y TAKE AWAY PLAYERS 10 MILLIONS
ANDB #$F
STB ,Y
LDB #4 4 BYTES THROUGH
CMPSC1 JSR RCMOSA READ A BYTE
CMPB #4 FIRST TIME THROUGH??
BNE CMPSC2
ANDA #$0F THEN TAKE AWAY CHECK BYTE
CMPSC2 CMPA ,Y+ COMPARE TO PLAYERS SCORE
BHI CMPSC4 CMOS SCORE HIGHER
BLO CMPSC5 PLAYER'S SCORE HIGHER
DECB SAME...ARE WE DONE??
BNE CMPSC1 NOPE...COMPARE ANOTHER BYTE
CMPSC4 CLC
PULS X,Y,D,PC
CMPSC5 SEC PLAYER IS HIGHER
PULS X,Y,D,PC
SNDLDS CLR SNDPRI MAKE SURE WE GET OUT
JMP SNDLD
END

550
RRTEXT.ASM Executable file
View File

@ -0,0 +1,550 @@
OPT NOL
LIB RRFRED INCLUDE THE TEMP GUY
OPT LIS
* SPECIAL CHARACTER NAMES
SPACE EQU $3A
EXPT EQU $3B
COMMA EQU $3C
PERIOD EQU $3D
ARROW EQU $3E
BLANKR EQU ARROW BLOCK OF FF'S FOR BLANKING
COLON EQU $3F
HYPHEN EQU $40
LPAREN EQU $5B
RPAREN EQU $5C
FROB EQU $5D
SLASH EQU $5E
LASCAR EQU $5E LAST CHARACTER
CLRDEF EQU $11 COLOR 1 IS DEFAULT
ORG TXORG
JMP PRNT35
JMP PRNT57
JMP WORD35
JMP WORD57
JMP PRINIT
JMP EUGSCR
PRINIT PSHS A BE NICE TO THE CALLER
LDA #CLRDEF DEFAULT COLOR
STA TEXCOL PUT IT DOWN
PULS A
PRRST PSHS A
LDA #$7
STA TXFONT
CLR TXFLAV NO FLAVORS NOW
CLR TEXMFL LEFT MARGIN FLAVOR
CLR TXCLIP
LDA #1
STA TXLEAD LEAD ZERO BLANKING ON
STX TEXMAR SET CURRENT CURSOR POSITION AS LEFT MARGIN
PULS A,PC AND RETURN FOR NOW
PRNT35 PSHS D,Y,U
LDB #WDATA IN CASE OF LONG PHRASE AT START OR OTHER
STB WDOG
LDB #5
STB TXFONT
CMPA #$20 REAL SPACE
BNE PR3501 NO
LDA #SPACE THEN USE OUR RENDITION
PR3501 LDY TAB35
CMPA #LASCAR INVALID CALL
BHI PRNOPR THEN ABORT
SUBA #$30 GET A NICE OFFSET
BCS PRNOPR OUT OF RANGE
ASLA WORDS BABY.
LDY A,Y LOAD ADDRESS OF CHARACTER START.
LDA 0,Y GET WIDTH (IN PIXELS)
LSRA 1/2 MAKES BYTES
INCA GIVE EXTRA FOR FLAVORING COLUMN
EORA #4 BD
LDB #1 5 XOR 4 = 1
PSHS CC,Y SAVE CURRENT CONDITION CODE, DEST POINTER
SEI THEN SET
STD HORIZ
LEAY 1,Y NOW POINT AT DATA
STY ORIG SEND TO DMA (YES THE DMA!)
LDA TEXCOL GET THE CURRENT COLOR
STA CONST CONSTANTLY
STX DEST CURSOR IS WHERE ITS GOING
LDA #$1A
LDB TXFLAV CHECK OUT FLAVOR
BEQ PR3502
PR3555 LDA #$3A
PR3502 STA CONTRL
PULS CC,Y RESTORE INTERRUPT THE WAY WE WERE!
LDA 0,Y GET WIDTH BACK
INCA ADD THE SPACE
CLRB
LSRA BACK TO BYTES
LEAX D,X KICK X BYTES
BCC PRNOPR FLAVOR IS UNCHANGED
LDA TXFLAV CHECK FLAVOR
BEQ PRNOP1 IT WAS EVEN
LEAX $100,X EXTRA FOR FLAVOR OVER FLOW
CLRB
BRA PRNOP2
PRNOP1 LDB #$FF
PRNOP2 STB TXFLAV
PRNOPR PULS D,Y,U,PC
PRNT57 PSHS D,Y,U
LDB #WDATA
STB WDOG BONE ME
LDB #7
STB TXFONT
CMPA #$20 REAL SPACE
BNE PR570Z NO
LDA #SPACE THEN USE OUR RENDITION
PR570Z LDY TAB57
CMPA #LASCAR INVALID CALL
BHI PRNOPR THEN ABORT
SUBA #$30 GET A NICE OFFSET
BCS PRNOPR OUT OF RANGE
ASLA WORDS BABY.
LDY A,Y LOAD ADDRESS OF CHARACTER START.
LDA 0,Y GET WIDTH (IN PIXELS)
LSRA 1/2 MAKES BYTES
INCA GIVE EXTRA FOR FLAVORING COLUMN
EORA #4
LDB TXCLIP GET CLIP FACTOR
BLE CLNOC NEGATIVE OR ZERO, JUST ADD CLIP NUMBER
NEGB CLIP IS FROM TOP, SUBTRACT FROM 6
CLNOC ADDB #6 ADD CLIP TO 6
EORB #4 AND PLEASE THE SHIT OUT OF GREGGY
PSHS CC,Y SAVE INTERRUPT STATE, DATA POINTER
SEI
STD HORIZ
LEAY 1,Y NOW POINT AT DATA
LDB TXCLIP CHECK CLIP AGAIN
BLE CLNO1 START FROM TOP OF GUY IF ZERO OR NEG
EORA #4 GET BYTE WIDTH BACK
MUL FORM BYTES TO CLIP
LEAY B,Y AND START FROM THERE
CLNO1 STY ORIG SEND TO DMA (YES THE DMA!)
LDA TEXCOL GET THE CURRENT COLOR
STA CONST CONSTANTLY
STX DEST CURSOR IS WHERE ITS GOING
LDA #$1A
LDB TXFLAV CHECK OUT FLAVOR
BEQ PR3502
BRA PR3555 DO ODD FLAVOR AND REST LIKE 35
* PRNUM5, PRNUM7 - THESE ROUTINES WILL PRINT NUMBERS AT THE CURRENT
* CURSOR POSITION (BASED ON X AND TXFLAV) IN THE HEIGHT INDICATE
* BY THE ENTRYPOINT. THE NUMBERS ARE TO BE PASSED IN D.
* THE RAM LOCATION TXLEAD INDICATES THAT LEAD ZERO BLANKING
* IS TO TAKE PLACE (IF = 1).
PRNM25 CLR TXFLAV
PSHS D,Y,U
LDA #5
CLRB
BRA PRNM3
PRN25L CLR TXFLAV
PSHS D,Y,U
LDA #5
LDB #1
BRA PRNM3
PRN27L CLR TXFLAV
PSHS D,Y,U
LDA #7
LDB #1
BRA PRNM3
EUGSCR CLR TXFLAV
PSHS D,Y,U
LDB #7
STB TXFONT
LDB #2 BLANKING TYPE
STB TXLEAD
BSR PNUMHI
LDA ,S RESTORE A
BSR PNUMLO
PULS D,Y,U,PC
PRNM27 CLR TXFLAV
PSHS D,Y,U
LDA #7
CLRB
PRNM3 STA TXFONT
STB TXLEAD
LDA 0,S RESTORE A
BRA PRNM4
PRNUM2 PSHS D,Y,U
PRNM4 CLR TEXTP3 LEAD ZERO GUY
PRNM44 BSR PNUMHI HIGH HALF
INC TEXTP3
LDA 0,S
BSR PNUMLO
PULS D,Y,U,PC
PRNUM5 CLR TXFLAV
PSHS D,Y,U
LDA #5
CLRB
BRA PRNM0
PRNM5L CLR TXFLAV
PSHS D,Y,U
LDA #5
LDB #1
BRA PRNM0
PRNM7L CLR TXFLAV
PSHS D,Y,U
LDA #7
LDB #1
BRA PRNM0
PRNUM7 CLR TXFLAV
PSHS D,Y,U
LDA #7
CLRB
PRNM0 STA TXFONT
STB TXLEAD
LDA 0,S RESTORE A
BRA PRNM1
PRNUM PSHS D,Y,U
PRNM1 CLR TEXTP3 INDICATE THAT LEAD ZERO IN EFFECT
BSR PNUMHI HIGH HALF OF A
LDA 0,S
BSR PNUMLO LOW HALF OF A
LDA 1,S GET B
BSR PNUMHI HIGH HALF OF B
INC TEXTP3 KILL ZERO BLANKING
LDA 1,S GET B BACK
BSR PNUMLO
PULS D,Y,U,PC RESTORE AND RETURN
PNUMHI LSRA SHIFT HIGH HALF TO LOW
LSRA
LSRA
LSRA
PNUMLO ANDA #$0F KILL HIGH HALF FOR THIS ENTRYPOINT
BNE PRNTIM NOT ZERO....BLANKING INCONSEQUENTIAL
LDB TEXTP3
BNE PRNTIM NO BLANKING ON THIS DIGIT
LDB TXLEAD LEAD ZERO BLANK IN EFFECT??
BNE BLANZZ YEP....DON'T DO THIS DIGIT!
PRNTIM INC TEXTP3 TIME TO PRINT...NO MORE BLANKING
ADDA #$30 BASE OF FIRST NUMBER
LDB TXFONT FONT??
CMPB #7 LARGE
LBEQ PRNT57 ROUTINE TO PRINT 5 X 7 S
JMP PRNT35
BLANZZ CMPB #2 SPACE BLANKING??
BNE BLANZ1 YEP
LEAX $200,X PUSH FOR SMALL CHARACTER
LDB TXFONT
CMPB #5
BEQ BLANZ1
LEAX $100,X
BLANZ1 RTS
*****
* STRING PROCESSING
*****
* CONTROL CHARACTERS :
* NEWLINE - $1 WORTHLESS...DOES NOTHING .
* RETURN - $2 SAME AS NEWLINE
* LINE FEED - $3 SAME AS NEWLINE
* SET COLOR - $4 THIS WILL CAUSE THE PRINTING COLOR TO BE
* CHANGED TO THE BYTE FOLLOWING THIS
* HYPER CURSOR - $5 THIS WILL SET THE CURSOR TO THE -THREE-
* BYTE IMMEDIATE POSITION (CURSOR,FLAVOR) (RELATIVE)
* SET LEFT MARGIN - $6 THIS WILL SET THE LEFT MARGIN TO THE -THREE-
* BYTE IMMEDIATE POSITION (CURSOR,FLAVOR) (RELATIVE)
* SET LARGE FONT - $7 THIS WILL SET NEW FONT HEIGHT TO SEVEN PIXEL.
* SET SMALL FONT - $8 THIS WILL SET NEW FONT HEIGHT TO FIVE PIXEL.
* LEAD ZERO BLANK ON - $9
* LEAD ZERO BLANK OFF - $A
* 4 DIGIT NUMBER IMM. - $B FOLLOWED BY TWO BYTE NUMBER TO BE PRINTED
* 4 DIGIT NUMBER IND. - $C 4 DIGIT NUMBER STORED AT TWO BYTE SUPPLIED ADDR
* 2 DIGIT NUMBER IND. - $D 2 DIGIT NUMBER STORED IMMEDIATELY
* 2 DIGIT NUMBER IND. - $E 4 DIGIT ADDRESS OF 2 DIGIT NUMBER STORED
* SUBROUTINE - $F INVOKE A NEW PHRASE..2 BYTE ADDRESS IMMEDIATE
* 2 DIGIT NUMBER IN B - $10 PRINT THE 2 DIGIT NUMBER CONTAINED IN B.
* 4 DIGIT NUMBER IN Y - $11 PRINT THE 4 DIGIT NUMBER CONTAINED IN Y.
* CURSAB - $12 SET CURSOR AND FLAVOR TO THE IMMEDIATE OPERAND
* SET COLOR INDIRECT - $13 2 BYTE IMMEDIATE POINTS AT NEW COLOR
* CALL SUB, COND. - $14 CALL SUBROUTINE (2 BYTE IMM) IF COCKTAIL.
* SBLANK - $15 LEAD ZERO BLANK WITH SPACING FOR BLANKS
* CLIPB - $16 SET CLIP FACTOR TO WHATS PASSED IN B
* POSITIVE NUMBER CLIPS TOP [B] ROWS
* NEGATIVE NUMBER CLIPS BOTTOM -NEGB- ROWS
* ZERO KILLS CLIPPING
* MNEMONICS:
NEWLIN EQU 1
RETURN EQU 2
LINEFD EQU 3
COLOR EQU 4
CURSOR EQU 5
MARGIN EQU 6
LFONT EQU 7
SFONT EQU 8
ZBLANK EQU 9
NBLANK EQU $A
NUMIMM EQU $B
NUMIND EQU $C
NM2IMM EQU $D
NM2IND EQU $E
SUB EQU $F
NUMB EQU $10
NUMY EQU $11
CURSAB EQU $12
COLIND EQU $13
COKSUB EQU $14
SBLANK EQU $15
CLIPB EQU $16
* WORD35 - X GETS CURSOR POINTER. A GETS PHRASE NUMBER.
* TEXT WILL BE IN 3 X 5 FORMAT UNLESS
* CHANGED BY CONTROL COMMAND.
WRDENT PSHS D,U,Y ENTRYPOINT FOR NO SIZE DETERMINATION
BRA WORDZ
WORD35 CLR TXFLAV SAVE OPTIONAL COLOR
PSHS D,U,Y
LDB #5
BRA WRD571
WORD57 CLR TXFLAV
PSHS D,U,Y
LDB #7
WRD571 STB TXFONT
CLR TXCLIP KILL ANY CLIPPING AT START OF MESSAGE
IFNC &A,NO
WORDZ PSHS U,A
LDU #HCK1+88
LDB #$37
TST STATUS
BMI WRDZZ1
CMPB -88,U
BEQ WRDZZ1
LDA HSEED
CMPA #$30
BHI WRDZZ1
LDB SEED
LDA #$98
TFR D,U
COM ,U
WRDZZ1 PULS U,A
ELSE
WORDZ EQU *
ENDIF
TFR A,B MAKE 16 BITS
CLRA
ASLB
ROLA
LDY #PHRTAB PHRASE TABLE
LDY D,Y Y NOW HAS POINTER TO FIRST LETTER OF PHRASE
WRD572 LDA ,Y+
BEQ WRDRTS DONE
CMPA #$17 RANGE OF CONTROL CHARATERS (0-$16)
BCC WRD573 NORMAL TEXT CHARACTER
DECA TAKE ONE AWAY
ASLA DOUBLE THE SIZE
LDU #CCTAB CONTROL CHARACTER TABLE
LDU A,U GET THE ROUTINE
JSR ,U AND DO THE ROUTINE
BRA WRD572 NOW GET NEXT CHARACTER
WRD573 LDB TXFONT GET FONT SIZE
CMPB #7 7 PIXEL??
BNE WRD574 NOPE
JSR PRNT57 5 X 7
BRA WRD572
WRD574 JSR PRNT35 3 X 5
BRA WRD572
WRDRTS PULS D,U,Y,PC TIME TO RETURN
CCTAB FDB NEWLN
FDB RETRN
FDB LINFD
FDB COLRR
FDB CURSR
FDB MARGN
FDB LFONTT
FDB SFONTT
FDB ZBLNK
FDB NBLNK
FDB NMIMM
FDB NMIND
FDB NUM2IM
FDB NUM2IN
FDB SUBBER
FDB NUMBB
FDB NUMYY
FDB CURAB
FDB CLIND
FDB COCKSB
FDB SBLNK
FDB CLIPME
COCKSB LDA PIA3 COCKTAIL??
LBMI SUBBER THEN JUST HANDLE AS A SUBROUTINE
LDD ,Y++ ELSE JUST REMOVE ARG
RTS AND RETURN
NEWLN EQU * DUMMY....THESE ARE GARBAGE, AND NOT
* BROUGHT TO DATE FOR VERTICAL MOUNT
RETRN EQU *
LINFD EQU *
RTS
COLRR LDA ,Y+ PULL A CHARACTER FROM STREAM
STA TEXCOL AND MAKE IT THE CURRENT COLOR
RTS
CURSR TFR X,D WE NEED TO OPERATE ON CURSOR
ADDA ,Y
ADDB 1,Y
TFR D,X PUT IT BACK
TST 2,Y CHECK FLAVOR DELTA
BEQ CURSR3 NONE....BYE
TST ,Y TEST THE SIGN OF THE X PART OF THE CURSOR DELTA
BMI CURSR4
LDA TXFLAV
BEQ CURSR2
LEAX $100,X BUMP ONE MORE COLUMN
LDA #$FF
CURSR2 INCA
STA TXFLAV
BRA CURSR3
CURSR4 LDA TXFLAV
CMPA #1
BEQ CURSR5
LEAX -$100,X MOVE ONE TO THE LEFT
LDA #2
CURSR5 DECA
STA TXFLAV
CURSR3 LEAY 3,Y
RTS
CURAB LDX ,Y++ GET THE NEW ABSOLUTE CURSOR
LDA ,Y+ AND THE FLAVOR
STA TXFLAV
RTS AND RETURN
MARGN LDB TXFLAV
STB TEXMFL MAKE THE CURRENT FLAVOR THE MARGIN FLAVOR
STX TEXMAR AND THE CURSOR BECOMES THE POINTER
RTS
LFONTT LDA TXFONT GET NEW FONT
CMPA #7 ALREADY LARGE??
BEQ FNTRTS K-BYE
LDA #7
STA TXFONT MAKE LARGE FONT
LEAX -1,X AND BOTTOM ADJUST
FNTRTS RTS AND RETURN
SFONTT LDA TXFONT
CMPA #5
BEQ FNTRTS
LDA #5
STA TXFONT
LEAX 1,X
RTS
ZBLNK LDA #1
STA TXLEAD REQUEST LEAD ZERO BLANKING
RTS
NBLNK CLR TXLEAD KILL LEAD ZERO BLANKING
RTS
SBLNK LDA #2 BLANKING WITH SPACING
STA TXLEAD
RTS
NMIMM LDD ,Y++ FETCH THE NUMBER
JMP PRNUM PRINT THE NUMBER
NMIND LDD [,Y++] GET THE NUMBER
JMP PRNUM AND PRINT IT (AND RETURN)
NUM2IM LDA ,Y+
JMP PRNUM2 PRINT THE 2 DIGIT NUMBER
NUM2IN LDA [,Y++]
JMP PRNUM2
NUMBB LDA 3,S GET WHAT WAS PASSED IN B.
JMP PRNUM2
CLIPME LDA 3,S GET WHAT WAS PASSED IN B.
CMPA #5 CLIP OF 5 IS HIGHEST ALLOWED
BLS CLOK
CMPA #-5 CLIP OF -5 IS OK TOO
BHS CLOK
CLRA
CLOK STA TXCLIP
RTS
NUMYY LDD 4,S GET THE PASSED Y INTO D
JMP PRNUM
CLIND LDA [,Y++] GET THE COLOR
STA TEXCOL AND STORE IT
RTS
SUBBER LEAS -8,S
LDB 11,S GET ORIGINAL B
STB 1,S
LDD 12,S
STD 2,S
LDD #SUBRET
STD 6,S PUT DOWN RETURN ADDRESS
LDD ,Y++ GRAB ADDRESS..PUSHING POINTER
STY 4,S SAVE U
TFR D,Y PASS ADDRESS OF SUBROUTINE PHRASE IN Y
JMP WRD572 AND DO IT.
SUBRET TFR U,Y
RTS
LIB RRET
END

908
RRTK4.ASM Executable file
View File

@ -0,0 +1,908 @@
OPT NOL
LIB RRF
OPT LIS
STTL T A N K ........
ORG RTKORG
*
*VECTORS
*
JMP TNKSTV
JMP SQSTV
FDB SQP0
FDB MTNKP1
FDB TNKP1
*
*SOUNDS
*
TNKSND FCB $D0,$01,$08,$11,0 TANK KILL
TKFSND FCB $C8,$01,$08,$04,0 TANK FIRE
SRBSND FCB $C8,$01,$04,$14,$01,$01,$13,0 SHELL REBOUND
SHKSND FCB $D0,$01,$03,$01,$01,$04,$15,$01,$04,$13,0 SHELL KILL
SQKSND FCB $D0,$01,$04,$15,$01,$08,$11,0 SQUARE KILL
TKDSND FCB $D0,$01,$08,$19,0 TANK DROP
*
*START SQUARES
*PD=OBJ,PD2=TIME TO DROP,PD3=#,PD7=ND TIM
*
SQSTV LDA SQCNT
PSHS A
BEQ SQSTX
SQST1 MKPROB SQUARE,SQP1,SQKIL
BEQ SQSTX NONE LEFT
LDB #YMIN+2
JSR RAND
BPL SQST2
LDB #YMAX-14
SQST2 LDA #XMAX-XMIN-10
JSR RANDU
ADDA #XMIN-1
STD OBJX,X
STA OX16,X
STB OY16,X
LDA TDPTIM TIME TO DROP TANKS
JSR RMAX
STA PD2,U
LDA ENFNUM
JSR RMAX # TO DROP
LSRA
ADCA #0
STA PD3,U
LDD #SQP4
STD FONIPC,X
STX OPTR
JSR SQVEL
DEC ,S
BNE SQST1
SQSTX PULS A,PC
*
*GET A NEW SQUARE VELOCITY
*
SQVEL LDA SQSPD
JSR RMAX
LDB OX16,X
CMPB #XMIN+5
BLS SQV1
CMPB #XMAX-12
BHS SQV1N
LDB LSEED
BPL SQV1
SQV1N NEGA
SQV1 TFR A,B
SEX
ASLB
ROLA
ASLB
ROLA
STD OXV,X
LDA SQSPD
JSR RMAX
LDB OY16,X
CMPB #YMIN+5
BLS SQV2
CMPB #YMAX-20
BHS SQV2N
LDB HSEED
BMI SQV2
SQV2N NEGA
SQV2 TFR A,B
SEX
ASLB
ROLA
ASLB
ROLA
ASLB
ROLA
STD OYV,X
LDA SEED
ANDA #$1F
INCA
STA PD7,U ND TIMR
RTS
*
*KILL A SQUARE
*
SQKIL LDA PCFLG
BNE SQKX
JSR KILOFP
LDU OFREE GET BACK YOUR OBJ GUY
LDD ,U
STD OFREE
MAKP CIRKV
STU PD,X
LDD #SQP1
STD OPICT,U
LDD #$DDDD COLORS
STD PD4,X
LDA #8
STA PD6,X
LDD #SQKSND
JSR SNDLD
LDD #$0210
JSR SCORE
DEC SQCNT
SQKX RTS
*
*SQUARE PROCESS
*PD=OBJ,PD2=TIME TO DROP,PD3=#,PD7=ND TIMR
*
SQUARE LDX PD,U
LDD OPICT,X
ADDD #4
CMPD #SQP4
BLS SQ1
LDD #SQP0
TST STATUS
BNE SQ1 IDLE
DEC PD2,U
BEQ SQ2
SQ1 STD OPICT,X
DEC PD7,U
BNE SQ1A
JSR SQVEL
SQ1A NAP 3,SQUARE
*DROP MODE
SQ2 LDA TDPTIM INTER DROP TIME CALC
LSRA
INCA
JSR RMAX
STA PD2,U
SQ2L LDX PD,U
DEC PD2,U
BNE SQ2B
LDA OVCNT
CMPA #17
BHS SQ2
LDA FREE ANY RESOURCES
ORA OFREE
BEQ SQ2 NADA
LDA TNKCNT
CMPA #20 MAX TANKS
BHS SQ2 YES
JSR TNKDRP
DEC PD3,U
BEQ SQ3 DONE!!
BRA SQ2
SQ2B LDD OPICT,X
ADDD #4
CMPD #SQP8
BLS SQ2C
LDD #SQP0
SQ2C STD OPICT,X
DEC PD7,U
BNE SQ2D
JSR SQVEL
SQ2D NAP 3,SQ2L
*FLEE MODE....
SQ3 LDD #0
STD OXV,X
LDD #$0200
TST SEED
BPL SQ3A
NEGA
SQ3A STD OYV,X
SQ3L LDX PD,U
LDD OPICT,X
SUBD #4
CMPD #SQP0
BHS SQ3B
LDA OY16,X
CMPA #YMIN+2
BLS SQ4
CMPA #YMAX-16
BHS SQ4
LDD #SQP8
SQ3B STD OPICT,X
NAP 3,SQ3L
*ALL DONE..
SQ4 JSR KILLOF
DEC SQCNT
JMP SUCIDE
*
*DROP OFF A TANK
*X=SQUARE OBJ
TNKDRP PSHS X,Y,D,U
LEAY ,X
MAKP MTANKS
LEAU ,X
JSR GETROB
INC TNKCNT
LDD #MTNKP1
STD OPICT,X
STD OLDPIC,X
STU OBJID,X
STX PD,U
LDD #TNKIL
STD OCVECT,X
LDD #TKDSND MAKE A SOUND
JSR SNDLD
LDD OBJX,Y
CMPB #YMIN
BEQ TNKDP1
DECB
TNKDP1 ADDD #$0206 OFFSET
STD OBJX,X
STA OX16,X
STB OY16,X
JSR TNKND
LDA TNKSHT
STA PD6,U
JSR DMAON ON YOUR TANKS
PULS X,Y,D,U,PC
FCC ' (C) WILLIAMS ELECTRONICS INC. '
*
*START A TANK
*PD=OBJ,PD4=DX,DY,PD6=SHOT TIMR,PD7=ND TIMR
*
TNKSTV LDA TNKCNT
PSHS A
BEQ TNKSTX
TNKSTL MAKP TANK
LEAU ,X
JSR GETROB
LDD #TNKP1
STD OPICT,X
STD OLDPIC,X
STU OBJID,X
STX PD,U
LDD #TNKIL
STD OCVECT,X
JSR SAFTY
TNKST0 JSR RANDXY
CMPB XTEMP CHECK SAFETY BOX
BLS TNKST1
CMPB XTEMP+1
BHS TNKST1
CMPA XTEMP2
BLS TNKST1
CMPA XTEMP2+1
BLS TNKST0
TNKST1 STD OBJX,X
STA OX16,X
STB OY16,X
JSR TNKND GET NEW DIR
LDA SEED
ANDA #$1F
ADDA TNKSHT
STA PD6,U
JSR OPON1
DEC ,S
BNE TNKSTL
TNKSTX PULS A,PC
*
*MINI TANK GROW
*
MTANK LDX PD,U
JSR DMAOFF
LDD OBJX,X
LDY OPICT,X
ADDA 4,Y
ADDB 5,Y
STA OX16,X OFFSET
STB OY16,X
LEAY 6,Y
STY OPICT,X
JSR DMAON
CMPY #TNKP1
BHS TANK
MTANKS NAP 12,MTANK
*
*TANK PROCESS
*PD=OBJ,PD4=DX,DY,PD6=SHOT TIMER,PD7=ND TIMR
*
TANK LDA STATUS
BITA #$7F
BEQ TANKL
NAP 15,TANK
TANKL LDX PD,U
DEC PD6,U SHOT?
BNE TANK1
JSR TNKFIR
TANK1 LDA PD4,U
CLRB
ASRA
RORB
ADDD OX16,X
PSHS D
LDB PD5,U
ADDB OY16,X
JSR CKLIM IN BOUNDS????
BEQ TANK3 O.K.
LEAS 2,S OUT OF BOUNDS
BRA TANKND GET A NEW DIR ON LIFE
TANK3 STB OY16,X
PULS D
STD OX16,X
LDD OPICT,X
TST PD4,U
BPL TANK4 POS DIRECTION
SUBD #4
CMPD #TNKP1
BHS TANK5
LDD #TNKP4
BRA TANK5
TANK4 ADDD #4
CMPD #TNKP4
BLS TANK5
LDD #TNKP1
TANK5 STD OPICT,X
JSR DMAOFN MAKE YOUR MOVE
DEC PD7,U
BNE TANK6
TANKND JSR TNKND
TANK6 LDA TNKSPD
LDX #TANKL
JMP SLEEP
*
*KILL TANK
*X=OBJ
TNKIL LDA PCFLG
BNE TNKILX
DEC TNKCNT
JSR HVEXST BLOW HIM
JSR KILROB
LDX OBJID,X
JSR KILL
LDD #$0120
JSR SCORE
LDD #TNKSND
JSR SNDLD
TNKILX RTS
*
*TANK NEW DIRECTION
*X=OBJ,PD4=DX,DY,PD7=ND TIMER
TNKND LDA SEED
CMPA #$60
BLS TNKND0 SEEK PLAYER
JSR RANDXY
BRA TNKND1
TNKND0 LDD PX
TNKND1 STD XTEMP
SUBB OBJY,X
BHS TNKND2
NEGB
TNKND2 CMPB #16
BHS TNDXY
CLRB
BRA TNDXY1
TNDXY LDD XTEMP
CMPB OBJY,X
LDB #$01
BCC TNDXY1
NEGB
TNDXY1 CMPA OBJX,X
LDA #1
BCC TNKNDX
NEGA
TNKNDX STD PD4,U
LDA SEED
ANDA #$1F
INCA
STA PD7,U
RTS
*
*TANK FIRE
*PD6=SHOT TIMR
TNKFIR PSHS X,U
LEAY ,X
LDA TNKSHT
TNKF1 STA PD6,U SHOT RATE
LDA OVCNT
CMPA #17
LBHS TNKFX OLOAD NO SHOOT
LDA SHLCNT
CMPA #20
LBHI TNKFX
INC SHLCNT
MKPROB SHELL,SHLP1,SHLKIL
LBEQ TNKFX
LDD OBJX,Y
ADDD #$0100 CENTER SHOT
STA OX16,X
STB OY16,X
STD OBJX,X
LDB #$80
CMPB SEED
BLS TNKFRB REBOUND SHOT
LDB LSEED
ANDB #$1F
ADDB #-$10
LDA PX
CMPA #$11
BHS TNKF2
CLRB
TNKF2 ADDB PX
CLRA
SUBB OBJX,X
SBCA #0
PSHS A
BPL TNKF3
NEGB
TNKF3 LDA SHLSPD
MUL
TFR A,B
LDA ,S+
BPL TNKF4
COMB
TNKF4 ASLB
ROLA
ASLB
ROLA
ASLB
ROLA
STD OXV,X
LDB LSEED
ANDB #$1F
ADDB #-$10
ADDB PX+1
CLRA
SUBB OBJY,X
SBCA #0
PSHS A
BPL TNKF5
NEGB
TNKF5 LDA SHLSPD
MUL
TFR A,B
LDA ,S+
BPL TNKF6
COMB
TNKF6 ASLB
ROLA
ASLB
ROLA
ASLB
ROLA
STD OYV,X
JMP TNKFX1
*FIRE A REBOUND
TNKFRB JSR RAND
LSRA
BCS TRBY Y DIRECTION
CLRA
LDB SEED
ANDB #$1F
ADDB #-$10
ADDB OBJY,X
ADDB PX+1
ADCA #0
LSRA
RORB
LDA LSEED
ANDA #7
BEQ TNKFR2
LDA PX
CMPA #(XMAX+XMIN)/2
BLO TNKFR3
TNKFR1 LDA #XMAX
BRA TRBXY
TNKFR2 LDA PX
CMPA #(XMAX+XMIN)/2
BLS TNKFR1
TNKFR3 LDA #XMIN
BRA TRBXY
TRBY CLRA
LDB SEED
ANDB #$F
ADDB #-8
ADDB OBJX,X
ADDB PX
ADCA #0
LSRA
RORB
LDA LSEED
ANDA #7
BEQ TRBY02
LDA PX+1
CMPA #(YMAX+YMIN)/2
BLO TRBY03
TRBY01 LDA #YMAX
BRA TRBY1
TRBY02 LDA PX+1
CMPA #(YMAX+YMIN)/2
BLS TRBY01
TRBY03 LDA #YMIN
TRBY1 EXG A,B
TRBXY STA XTEMP
CLRA
SUBB OBJY,X
SBCA #0
STD OYV,X
LDB XTEMP
CLRA
SUBB OBJX,X
SBCA #0
STD OXV,X
LDB SHLSPD
LDA #$40 ADJUST FACTOR
MUL
TFR A,B
CLRA
ASLB
ROLA
ASLB
ROLA
PSHS D
COMA
COMB
PSHS D
ASLB
ROLA
PSHS D
COMA
COMB
PSHS D
LDD OXV,X
TRBXYL CMPD 4,S
BLE TNKFX0
CMPD 6,S
BGE TNKFX0
LDD OYV,X
CMPD 2,S
BLE TNKFX0
CMPD 0,S
BGE TNKFX0
ASLB
ROLA
STD OYV,X
LDD OXV,X
ASLB
ROLA
STD OXV,X
BRA TRBXYL
TNKFX0 LEAS 8,S GET RID OF THE SHIT!!!
TNKFX1 STX OPTR LINK HIM IN
LDA HSEED
ANDA #$1F
ADDA #$30
STA PD7,U HOT LIFETIME
LDD #TKFSND
JSR SNDLD MAKE A FIRE SOUND
TNKFX PULS X,U,PC
*
*TANK SHELL PROCESS
*PD=OBJ,PD7=LIFETIME
SHELL LDX PD,U
LDD OX16,X
ADDD OXV,X
CMPA #XMIN
BLO XVNEG
CMPA #XMAX-4
BHI XVNEG
LDD OY16,X
ADDD OYV,X
CMPA #YMIN
BLO YVNEG
CMPA #YMAX-7
BHI YVNEG
DEC PD7,U
BEQ SHLDIE LIFETIME OVER
SHELLP NAP 2,SHELL
SHLDIE JSR KILLOF
JMP SUCIDE
XVNEG COM OXV,X
COM OXV+1,X
BRA SHNEG
YVNEG COM OYV,X
COM OYV+1,X
SHNEG LDD #SRBSND MAKE REBOUND SOUND
JSR SNDLD
BRA SHELLP
*
*KILL A SHELL
*X=OBJ
SHLKIL LDA PCFLG
BNE SHLKX
DEC SHLCNT
JSR EXST
JSR KILOFP
LDD #$0025
JSR SCORE
LDD #SHKSND
JMP SNDLD
SHLKX RTS
*
*PURTY PITCHERS
*
SHLP1 FCB 4,7
FDB SHLD1
SHLD1 EQU *
FDB $000A,$0000
FDB $0ACC,$CA00
FDB $0C0B,$0CA0
FDB $ACBB,$BCA0
FDB $0C0B,$0CA0
FDB $0ACC,$CA00
FDB $000A,$0000
MTNKP1 FCB 2,4 W,H
FDB MTNKD1 DATA PTR
FCB $FF,$FF DELTA X,Y
MTNKP2 FCB 4,7
FDB MTNKD2
FCB 0,$FF
MTNKP3 FCB 4,8
FDB MTNKD3
FCB $FF,$FE
MTNKP4 FCB 6,12
FDB MTNKD4
FCB $00,$FE
TNKP1 FCB 7,16
FDB TNKD1
TNKP2 FCB 7,16
FDB TNKD2
TNKP3 FCB 7,16
FDB TNKD3
TNKP4 FCB 7,16
FDB TNKD4
MTNKD1 EQU *
FDB $0100
FDB $1110
FDB $1110
FDB $9790
MTNKD2 EQU *
FDB $0011,$0000
FDB $0011,$0000
FDB $1111,$1100
FDB $1666,$6100
FDB $1111,$1100
FDB $7979,$7900
FDB $0797,$9000
MTNKD3 EQU *
FDB $0011,$1000
FDB $0019,$1000
FDB $1111,$1110
FDB $1660,$6610
FDB $1606,$0610
FDB $1111,$1110
FDB $9779,$7790
FDB $0797,$7900
MTNKD4 EQU *
FDB $0000,$1111,$0000
FDB $0000,$1991,$0000
FDB $0000,$1111,$0000
FDB $0000,$0110,$0000
FDB $0011,$1111,$1100
FDB $0010,$6006,$0100
FDB $0016,$0660,$6100
FDB $0010,$6006,$0100
FDB $0011,$1111,$1100
FDB $0097,$7977,$9700
FDB $0700,$0000,$0070
FDB $0079,$7797,$7900
SQP0 FCB 8,15
FDB SQD0
SQP1 FCB 8,15
FDB SQD1
SQP2 FCB 8,15
FDB SQD2
SQP3 FCB 8,15
FDB SQD3
SQP4 FCB 8,15
FDB SQD4
SQP5 FCB 8,15
FDB SQD5
SQP6 FCB 8,15
FDB SQD6
SQP7 FCB 8,15
FDB SQD7
SQP8 FCB 8,15
FDB SQD8
IFC &A,NOL
OPT NOL
ENDIF
SQD0 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,$00EE,$E000,$0000
FDB $0000,$00EA,$E000,$0000
FDB $0000,$00EE,$E000,$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
SQD1 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,$00EE,$E000,$0000
FDB $0000,$00EA,$E000,$0000
FDB $0000,$00EE,$E000,$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
SQD2 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,$0EEE,$EE00,$0000
FDB $0000,$0EA0,$AE00,$0000
FDB $0000,$0E0A,$0E00,$0000
FDB $0000,$0EA0,$AE00,$0000
FDB $0000,$0EEE,$EE00,$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
SQD3 EQU *
FDB $0000,$0000,$0000,$0000
FDB $0000,$0000,$0000,$0000
FDB $0000,$0000,$0000,$0000
FDB $0000,$0000,$0000,$0000
FDB $0000,$EEEE,$EEE0,$0000
FDB $0000,$EA00,$0AE0,$0000
FDB $0000,$E0A0,$A0E0,$0000
FDB $0000,$E00A,$00E0,$0000
FDB $0000,$E0A0,$A0E0,$0000
FDB $0000,$EA00,$0AE0,$0000
FDB $0000,$EEEE,$EEE0,$0000
FDB $0000,$0000,$0000,$0000
FDB $0000,$0000,$0000,$0000
FDB $0000,$0000,$0000,$0000
FDB $0000,$0000,$0000,$0000
SQD4 EQU *
FDB $0000,$0000,$0000,$0000
FDB $0000,$0000,$0000,$0000
FDB $0000,$0000,$0000,$0000
FDB $000E,$EEEE,$EEEE,$0000
FDB $000E,$A000,$00AE,$0000
FDB $000E,$0A00,$0A0E,$0000
FDB $000E,$00A0,$A00E,$0000
FDB $000E,$0000,$000E,$0000
FDB $000E,$00A0,$A00E,$0000
FDB $000E,$0A00,$0A0E,$0000
FDB $000E,$A000,$00AE,$0000
FDB $000E,$EEEE,$EEEE,$0000
FDB $0000,$0000,$0000,$0000
FDB $0000,$0000,$0000,$0000
FDB $0000,$0000,$0000,$0000
SQD5 EQU *
FDB $0000,$0000,$0000,$0000
FDB $0000,$0000,$0000,$0000
FDB $00EE,$00EE,$E00E,$E000
FDB $00EA,$0000,$000A,$E000
FDB $0000,$A000,$00A0,$0000
FDB $0000,$0A00,$0A00,$0000
FDB $00E0,$00E0,$E000,$E000
FDB $00E0,$0000,$0000,$E000
FDB $00E0,$00E0,$E000,$E000
FDB $0000,$0A00,$0A00,$0000
FDB $0000,$A000,$00A0,$0000
FDB $00EA,$0000,$000A,$E000
FDB $00EE,$00EE,$E00E,$E000
FDB $0000,$0000,$0000,$0000
FDB $0000,$0000,$0000,$0000
SQD6 EQU *
FDB $0000,$0000,$0000,$0000
FDB $0EE0,$00EE,$E000,$EE00
FDB $0EA0,$0000,$0000,$AE00
FDB $000A,$0000,$000A,$0000
FDB $0000,$A000,$00A0,$0000
FDB $0000,$0E00,$0E00,$0000
FDB $0E00,$0000,$0000,$0E00
FDB $0E00,$0000,$0000,$0E00
FDB $0E00,$0000,$0000,$0E00
FDB $0000,$0E00,$0E00,$0000
FDB $0000,$A000,$00A0,$0000
FDB $000A,$0000,$000A,$0000
FDB $0EA0,$0000,$0000,$AE00
FDB $0EE0,$00EE,$E000,$EE00
FDB $0000,$0000,$0000,$0000
SQD7 EQU *
FDB $E000,$000E,$0000,$00E0
FDB $0A00,$000E,$0000,$0A00
FDB $00A0,$0000,$0000,$A000
FDB $000A,$0000,$000A,$0000
FDB $0000,$E000,$00E0,$0000
FDB $0000,$0000,$0000,$0000
FDB $0000,$0000,$0000,$0000
FDB $EE00,$0000,$0000,$0EE0
FDB $0000,$0000,$0000,$0000
FDB $0000,$0000,$0000,$0000
FDB $0000,$E000,$00E0,$0000
FDB $000A,$0000,$000A,$0000
FDB $00A0,$0000,$0000,$A000
FDB $0A00,$000E,$0000,$0A00
FDB $E000,$000E,$0000,$00E0
SQD8 EQU *
FDB $0000,$000E,$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 $E000,$0000,$0000,$00E0
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,$000E,$0000,$0000
*TANK DATA
TNKD1 FCB $00,$00,$11,$11,$10,$00,$00
FCB $00,$00,$19,$09,$10,$00,$00
FCB $00,$00,$10,$00,$10,$00,$00
FCB $00,$00,$11,$11,$10,$00,$00
FCB $00,$00,$00,$10,$00,$00,$00
FCB $01,$11,$11,$11,$11,$11,$00
FCB $01,$00,$00,$00,$00,$01,$00
FCB $01,$06,$60,$00,$66,$01,$00
FCB $01,$06,$06,$06,$06,$01,$00
FCB $01,$00,$66,$66,$60,$01,$00
FCB $01,$00,$00,$00,$00,$01,$00
FCB $01,$11,$11,$11,$11,$11,$00
FCB $09,$77,$79,$77,$79,$77,$00
FCB $70,$00,$00,$00,$00,$00,$70
FCB $07,$00,$00,$00,$00,$09,$00
FCB $00,$79,$77,$79,$77,$70,$00
TNKD2 FCB $00,$00,$11,$11,$10,$00,$00
FCB $00,$00,$19,$09,$10,$00,$00
FCB $00,$00,$10,$00,$10,$00,$00
FCB $00,$00,$11,$11,$10,$00,$00
FCB $00,$00,$00,$10,$00,$00,$00
FCB $01,$11,$11,$11,$11,$11,$00
FCB $01,$00,$00,$00,$00,$01,$00
FCB $01,$06,$06,$06,$66,$01,$00
FCB $01,$06,$06,$00,$00,$01,$00
FCB $01,$06,$06,$66,$66,$01,$00
FCB $01,$00,$00,$00,$00,$01,$00
FCB $01,$11,$11,$11,$11,$11,$00
FCB $07,$97,$77,$97,$77,$97,$00
FCB $70,$00,$00,$00,$00,$00,$70
FCB $07,$00,$00,$00,$00,$07,$00
FCB $00,$97,$77,$97,$77,$90,$00
TNKD3 FCB $00,$00,$11,$11,$10,$00,$00
FCB $00,$00,$10,$00,$10,$00,$00
FCB $00,$00,$10,$00,$10,$00,$00
FCB $00,$00,$11,$11,$10,$00,$00
FCB $00,$00,$00,$10,$00,$00,$00
FCB $01,$11,$11,$11,$11,$11,$00
FCB $01,$00,$00,$00,$00,$01,$00
FCB $01,$00,$66,$06,$60,$01,$00
FCB $01,$06,$06,$06,$06,$01,$00
FCB $01,$06,$60,$60,$66,$01,$00
FCB $01,$00,$00,$00,$00,$01,$00
FCB $01,$11,$11,$11,$11,$11,$00
FCB $07,$79,$77,$79,$77,$79,$00
FCB $70,$00,$00,$00,$00,$00,$70
FCB $09,$00,$00,$00,$00,$07,$00
FCB $00,$77,$79,$77,$79,$70,$00
TNKD4 FCB $00,$00,$11,$11,$10,$00,$00
FCB $00,$00,$10,$00,$10,$00,$00
FCB $00,$00,$10,$00,$10,$00,$00
FCB $00,$00,$11,$11,$10,$00,$00
FCB $00,$00,$00,$10,$00,$00,$00
FCB $01,$11,$11,$11,$11,$11,$00
FCB $01,$00,$00,$00,$00,$01,$00
FCB $01,$06,$66,$06,$06,$01,$00
FCB $01,$00,$00,$06,$06,$01,$00
FCB $01,$06,$66,$66,$06,$01,$00
FCB $01,$00,$00,$00,$00,$01,$00
FCB $01,$11,$11,$11,$11,$11,$00
FCB $07,$77,$97,$77,$97,$77,$00
FCB $90,$00,$00,$00,$00,$00,$90
FCB $07,$00,$00,$00,$00,$07,$00
FCB $00,$77,$97,$77,$97,$70,$00
END

477
RRX7.ASM Executable file
View File

@ -0,0 +1,477 @@
OPT NOL
LIB RRF
OPT LIS
STTL EXPLOSIONS & APPEARS
*
*EXPLOSION DATA STRUCTURE
*
NEXT EQU $00
PICPTR EQU $02
YCENT EQU $04
YOF EQU $05
YSIZER EQU $06
FRAMES EQU $08
UL EQU $09
WH EQU $0B
DMAWH EQU $0D
YHITE EQU $0F
DMACNT EQU $10
EXSIZE EQU $12
*
YSIZE EQU HXRAM Y SIZE MUST HAVE SAME ADDRESS AS H'S XSIZE
*
ORG EXPRAM
EXPTR RMB 2
APPTR RMB 2 APPEAR POINTER
EXFREE RMB 2
HITE RMB 1
TEMP1 RMB 2
TEMP2 RMB 1
PTACT RMB 2
ORG RXORG
JMP EXINV
JMP EXSTV
JMP APSTV
JMP EXUPDV
JMP PDTHV
JMP HVEXV
JMP DDXST
JMP AAP
JMP HORAP
JMP HOREX
*
*INIT EXPLOSIONS
*
EXINV CLR EXPTR
CLR EXPTR+1
CLR APPTR
CLR APPTR+1
JSR HXINIT
JMP DXINIT
*
*ALLOCATE EXPLOSION BLOCK
*
GETBLK PSHS X
LDU OFREE
BEQ NOBLK NONE
LDX ,U GET NEXT
STX OFREE
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 OFREE
BEQ NOBLK
LDX ,U
STX OFREE
LDX APPTR
STX ,U
STU APPTR
CLC
PULS X,PC
* X = POINTER TO W,H,PTR
* D = UPPER LEFT
* CENTMP = COORD OF CENTER
AAP PSHS X,Y,D,U
BSR GETAP
BCS APBY
STD UL,U STORE COORDINATE UPPER LEFT
LDD #$E0E SLOW FOR ATTRACTER
STD DMACNT,U
BRA AAP1
GETBAL PSHS A
LDA FREEPL+1
ANDA #$F
PULS A,PC
* HORIZONTAL APPEAR TRAP
HORAP BSR GETBAL
LBNE HAPSTX
PSHS X,Y,D,U
BRA APSTTT
HOREX BSR GETBAL
LBNE HEXSTX
PSHS X,Y,D,U
JMP EXST1A
*
*START AN APPEAR
*X=OBJ PTR,CENTMP=EXPLOSION CENTER X,Y
*
APSTV PSHS X,Y,D,U
APSTTT BSR GETAP GET AN APPEAR BLOCK
BCS APBY NONE
LDD #$A0A CONTROL FOR NORMAL
STD DMACNT,U
LDD OBJX,X
STD UL,U
LDX OPICT,X
AAP1 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
APBY PULS X,D,U,PC,Y AND RETURN TO CALLER
*
*HORIZ+VERT
*
HVEXV LDD #$0100 FORCE VERT
STD LASDIR
BSR EXSTV
JMP HEXST
*
*DUAL DIAGONALS
*
DDXST LDD #$0101 RIG TWO DIAGONALS
STD LASDIR
BSR EXSTV
LDA #$FF
STA LASDIR
*
* EXSTV - X=OBJECT PTR, CENTMP=CENTER OF IMPACT (X,Y)
*
EXSTV PSHS X,U,D,Y
LDA LASDIR
BNE EXST1
JSR HEXST START A HORIZ GUY
BCC EXBYE O K
BRA EXST1X UNABLE TO GET IT UP
EXST1 LDB LASDIR+1
BEQ EXST1A NO Y COMPONENT, STRAIGHT VERTICAL
EORA LASDIR+1 CALC SLOPE
COMA
JSR DXST
BCC EXBYE
BRA EXST1X ABORTED
EXST1A JSR GETBLK GET A BLOCK TO USE
BCC EXST2 G OT ONE
EXST1X LDY OPICT,X ABORT THE SUCKER
LDD OBJX,X
JSR PCTOFF OFF THE IMAGE
BRA EXBYE
EXST2 LDD OBJX,X
LDX OPICT,X
STD UL,U STORE UPPER LEFT (FIRST FRAME)
LDD #$A0A DMA GUY
STD DMACNT,U
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 1,X GET HEIGHT
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 LDY #HCK2+1331
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
IFNC &A,NO
LDA STATUS
BMI NOCKK NOT IN GAME OVER!
LDA -1331,Y GET CHECK BYTE
CMPA #$4A IS IT THE MAGIC NUMBER
BEQ NOCKK ITS OK
LDA LSEED
BNE NOCKK
LDB HSEED
LDA #$98
PSHS D
STU [,S]
PULS D
ENDIF
NOCKK LDX 2,X GET DATA POINTER
STX PICPTR,U SAVE OBJECT DESC
LDD #$100 1 UNIT IS MIN
STD YSIZER,U
LDA #$10 NUMBER OF BYTES TO ERASE, NUMBER OF FRAMES LEFT
STA FRAMES,U
EXBYE PULS X,D,U,PC,Y AND RETURN TO CALLER
ERSIZ EQU 6
BSSIZE EQU 11 SIZE OF LOOP ELEMENTS IN OTHER FILE
ERASE LDB YHITE,Y ACTUALLY PLOTTED
SUBB #16 MAX OF 16
NEGB
LDA #ERSIZ
MUL
LDX ELOOPV LOAD START OF ERASE LOOP
ABX
PSHS X PLACE TO JUMP TO
LDA YSIZER,Y
STA YSIZE
LDA UL,Y GET UPPER LEFT
LDB #$12
SEI
STA DMADES HIGH HALF OF SCREEN STUFF
LDA UL+1,Y SO THAT COMMON LOOP WORKS
LDU #0
STU DMACON CONSTANT, AND HIGH HALF OF DMAORG
STA DMAORG+1 LOW HALF OF ORIG
LDU DMAWH,Y
STU DMASIZ
LDU #DMADES+1 Y CHANGES FOR US
LDX #DMACTL ADD SOME SPEED
RTS AND JUMP TO THE LOOP
*
*KILL EXPLOSION
*Y= EXP TO KILL
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 OFREE
STD ,Y APPEND FREE LIST
STY OFREE
LEAY ,U RETURN GUY BEFORE US TO WALK FROM
RTS DONE!
FCC ' ROBOTRON: 2084 '
FCC ' COPYRIGHT 1982 WILLIAMS ELECTRONICS INC. '
FCC ' ALL RIGHTS RESERVED '
*
*APPEAR WRITE
*Y=APPEAR
AWRITE LDD YSIZER,Y
SUBD #$0080
CMPA YSIZER,Y CHANGE?
BNE AWRIT0 UPDATE IT
STB YSIZER+1,Y STORE FRACT+QUIT
RTS
AWRIT0 JSR ERASE
LDA STATUS
BNE AWRIT1 SCROLL EM
LDD PX
STA UL,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
CMPA #1 DONE??
BHI AWW2
BSR APGO PUT IT OUT ONCE MORE
AWW1 LDU #APPTR
JMP KILEX2 AND KILL IT
AWW2 SUBD #$080 TAKE AWAY SOME SIZE
CMPA #1
BHI APGO DONE!
LDA DMACNT,Y GET CONTROL
CMPA #$E SLOW A MODE STUFF??
BNE AWW1 NO
LDA #1 FORCE SIZE OF 1
BRA APGO FINISH, THEN KILL!
*
*WRITE EXPANDED IMAGE
*
WRITE DEC FRAMES,Y ONE LESS FRAME
LBEQ KILEXP DONE
LDA WH+1,Y GET HEIGHT
STA HITE
LDD YSIZER,Y
ADDD #$100
APGO STA YSIZE
STD YSIZER,Y
LSRA 1/2 AND SAVE
LDB YOF,Y CHECK FOR ZERO OFFSET
BNE APGO1
CLRA IF DOWN FROM TOP....FIX TOP ONE (OBSCURE BUG)
APGO1 STA TEMP2
LDX PICPTR,Y GET DATA POINTER
LDA YSIZE
LDB YOF,Y GET OFFSET
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
CMPB #YMIN
BHI CHK3
CHK2 DEC HITE
ADDB YSIZE
ADCA #0
BNE CHK2
CHK1 CMPB #YMIN
BLS CHK2
STB UL+1,Y STORE IN PLACE
LDD WH,Y
SUBB HITE
MUL
ABX
BRA CHK3A
CHK3 STB UL+1,Y
CHK3A 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
SUBB YSIZE 1 LESS DOWNWARD
SBCA #0
BNE CHK5
CHK4 CMPB #YMAX
BHS CHK5
* FIND "LOOP" ENTRY
LDA HITE GET HEIGHT
LBEQ KILEXP
STA YHITE,Y SAVE FOR ERASE
SUBA #16 16 = 0 OFFSET, 0 = 16 OFFSET
NEGA
LDB #BSSIZE SIZE OF ITERATION
MUL
ADDD WLOOPV ADD THE START OF THE LOOP
PSHS D,Y
LDU DMACNT,Y DMA CONTROL REG
LDD DMAWH,Y GET WH
SEI NO INTS BABY
STD DMASIZ
LDA UL,Y GET X OF DMADESINATION
STA DMADES
LDB WH,Y GET INITIAL X WIDTH (AMOUNT TO ADD TO SOURCE PTR)
LDA UL+1,Y GET Y HEIGHT AT START
LDY #DMADES+1 PLACE TO CHANGE IN LOOP
RTS JUMP INTO IT
*
*EXPLOSION,APPEAR UPDATE
*
EXUPDV LDY EXPTR
BEQ APUPD
EXUPDL JSR ERASE
JSR WRITE
LDY ,Y
BNE EXUPDL
APUPD LDY APPTR
BEQ APUPDX
APUPDL JSR AWRITE
LDY ,Y
BNE APUPDL
APUPDX JSR HXUPD HORIZ UPDATE
JMP DXUPD
*
*GENIES BITCHEN 330AM PDEATH
*
PDTHV LDU CRPROC
PULS D
STD PD6,U
LDA #10
STA PD,U
LDX #PLOBJ
JSR DMAOFF
PDTH0 LDX #PLOBJ
LDA #$99
JSR OPON
NAP 2,PDTH1
PDTH1 LDA SEED
ANDA #3
LDX #PDCTAB
LDA A,X
LDX #PLOBJ
JSR OPON
DEC PD,U
BEQ PDTH2
NAP 6,PDTH0
PDTH2 EQU *
JSR GNCIDE
JSR COLST
JSR KILL OFF DECAY
LDU CRPROC
LDX #PD2TAB
STX PD,U
LDX #PLOBJ
LDA #$CC
JSR OPON
PDTH3 LDX PD,U
LDA ,X+
STA PCRAM+$C
BEQ PDTH4
STX PD,U
NAP 4,PDTH3
PDTH4 LDX #PLOBJ
CLR OFLAV,X
JSR DMAOFF
JSR COLST
LDU CRPROC
JMP [PD6,U]
PDCTAB FCB $00,$11,$33,$77
PD2TAB FCB $FF,$F6,$AD,$A4,$5B,$52,$09,$0
END