├── JAPDATA.ASM ├── RRB10.ASM ├── RRC11.ASM ├── RRCHRIS.ASM ├── RRDX2.ASM ├── RRELESE6.ASM ├── RRET.ASM ├── RRF.ASM ├── RRFRED.ASM ├── RRG23.ASM ├── RRH11.ASM ├── RRHX4.ASM ├── RRLOG.ASM ├── RRLOGD.ASM ├── RRM1.ASM ├── RRP8.ASM ├── RRS22.ASM ├── RRSCRIPT.ASM ├── RRSET.ASM ├── RRT2.ASM ├── RRTABLE.ASM ├── RRTEST1.ASM ├── RRTEST2.ASM ├── RRTESTB.ASM ├── RRTESTC.ASM ├── RRTEXT.ASM ├── RRTK4.ASM └── RRX7.ASM /JAPDATA.ASM: -------------------------------------------------------------------------------- 1 | * 2 | * ROBOTRON 3-10-82 RELEASE 1 3 | * 4 | 5 | ORG $26B7 6 | FCB $65 7 | ORG $5E77 8 | FCB $68 9 | ORG $DE54 10 | FCB $1B,$1B,$1B,$1B,$1B,$1B,$1B,$1B 11 | * 12 | * CHECKSUMS 13 | * 14 | * 15 | * 0-$4D 16 | * 1-$19 17 | * 2-$D9 18 | * 3-$1B 19 | * 4-$7E 20 | * 5-$DD 21 | * 6-$F1 22 | * 7-$3E 23 | * 8-$6D 24 | * 25 | * D-$4D 26 | * E-$48 27 | 28 | * SUPER CHECKERS - 98F3 = $37 29 | * BE72 = $4A 30 | 31 | 32 | ************************************************************************** 33 | * * 34 | * Here is a detailed explaination of the Robotron 2084 * 35 | * "JAP ZAPPERS". This was a primitive system setup to * 36 | * try and make it more difficult for game copiers to * 37 | * Modify the game. There were scrambled sections of the * 38 | * code that would try and monitor "random" checksums * 39 | * of regions of the code. If they detected that the code * 40 | * had been modified, they would cause random program * 41 | * events to occur at a low frequency (the random and * 42 | * low frequency combination would make it harder to track * 43 | * down the culprits). We always assumed that developers * 44 | * with good tools would find these quickly, but Christian * 45 | * Gingras, removed this small nuisance while trying to * 46 | * fix the other bugs he had found in the program (with * 47 | * the aid of his Radio Shack Color Computer). * 48 | * * 49 | * There are 2 regions for which checksums are kept. The * 50 | * checksums are not the sum of all bytes, but the sum * 51 | * of every 8 and 16 bytes respectively. The first checksum * 52 | * is the sum of every 16th byte from $0007 to $8927 inclusive * 53 | * and is stored at $98F3 (HCK1). This sum should come out to * 54 | * $37. The second checksum is the sum of every 8th byte * 55 | * from $D015 to $EAAD and is stored at $BE72 (HCK2). This sum * 56 | * should come out to $4A. * 57 | * * 58 | * There are 6 places in the software that are concerned * 59 | * with the checksums. * 60 | * * 61 | * In RRTEXT, at label WORDZ (the call for message handling) * 62 | * there is a check of HCK1 for its $37 value, and handling * 63 | * to zap if incorrect. * 64 | * * 65 | * In RRS22, the code to set the HCK1 value (by performing the * 66 | * required addition) is found within the PINIT routine. * 67 | * PINIT is used to initialize the process structure at the * 68 | * start of each turn. * 69 | * * 70 | * In RRS22 there is a check of HCK1 for its $37 value in the * 71 | * ASCAN routine. ASCAN is called at the start of each wave * 72 | * by each object to make sure the space it wants is un-occupied * 73 | * * 74 | * In RRG23 the code to setup the HCK2 value (by performing * 75 | * the required addition) is found within the game start * 76 | * routine (START1 and START2). * 77 | * * 78 | * In RRX7 there is a check of HCK2 for its $4A value in * 79 | * the explosion starter (EXSTV). * 80 | * * 81 | * In RRB10 there is a routine that computes the HCK2 value * 82 | * (on the fly in case the copiers goose the values into * 83 | * ram) and zaps if it does not come up with the $4A value. * 84 | * This is found in the brain starter (BRNSTV) and is run * 85 | * in any waves that contain BRAIN robots. * 86 | * * 87 | * The checksums are computed with the equivilents of the * 88 | * following code: * 89 | * * 90 | * HCK1 ($98F3) = $37 * 91 | * * 92 | * clra * 93 | * ldx #$0007 * 94 | * loop: adda 0,x * 95 | * leax $10,x * 96 | * cmpx #$8935 * 97 | * blo loop * 98 | * sta hck1 * 99 | * * 100 | * * 101 | * HCK2 ($BE72) = $4A * 102 | * * 103 | * clra * 104 | * ldx #$d015 * 105 | * loop: adda 0,x * 106 | * leax $8,x * 107 | * cmpx #$EAB1 * 108 | * blo loop * 109 | * sta hck2 * 110 | * * 111 | * * 112 | ************************************************************************** 113 | 114 | END 115 | 116 | -------------------------------------------------------------------------------- /RRC11.ASM: -------------------------------------------------------------------------------- 1 | OPT NOL 2 | LIB RRF 3 | OPT LIS 4 | STTL C I R C L E S AND E N F O R C E R S 5 | * 6 | *VECTORS 7 | * 8 | ORG RCORG 9 | JMP CIRST 10 | JMP CIRKKV 11 | FDB CIRP0 12 | FDB ENGP1 13 | FDB ENFP0 14 | * 15 | *MISC SOUNDS 16 | * 17 | ENDSND FCB $D8,$01,$08,$18,0 ENFORCER DROP OFF 18 | CRKSND FCB $D1,$01,$08,$08,0 CIRCLE KILL 19 | ENFSND FCB $D0,$01,$08,$1D,0 ENFORCER SHOOT 20 | ENKSND FCB $D0,$03,$04,$17,0 ENFORCER KILL 21 | SPKSND FCB $D0,$01,$04,$15,$01,$08,$14,0 SPARK KILL 22 | * 23 | *CIRCLE START 24 | *PD=OBJ,PD2=TIME TO DROP,PD3=#OF ENFORCERS 25 | *A=# 26 | CIRST LDA CIRCNT 27 | PSHS A 28 | BEQ CIRCSX 29 | CIRSTL MKPROB CIRCLE,CIRP4,CIRKIL 30 | BEQ CIRCSX NONE LEFT 31 | JSR RANDXY 32 | LDA #XMIN+2 33 | TST SEED 34 | BMI CIRCS1 35 | LDA #XMAX-8 36 | CIRCS1 STD OBJX,X INIT COORDS 37 | STA OX16,X 38 | STB OY16,X 39 | LDA CDPTIM 40 | JSR RMAX 41 | STA PD2,U TIME TO DROP 42 | LDA ENFNUM 43 | JSR RMAX 44 | LSRA 45 | ADCA #0 46 | STA PD3,U # TO DROP 47 | JSR CIRNAC RANDOM CIRCLE ACCEL 48 | LDD #CIRP4 PHONY PICTURE TO HIT 49 | STD FONIPC,X 50 | STX OPTR 51 | DEC ,S 52 | BNE CIRSTL 53 | CIRCSX PULS A,PC 54 | * 55 | *CIRCLE PROCESS 56 | *PD=OBJ,PD2=TIME TO DROP,PD3=# ENF,PD5=X ACC,PD6=Y ACC 57 | *PD7=ACC TIME 58 | * 59 | CIRCLE LDX PD,U 60 | LDD OPICT,X 61 | ADDD #4 62 | CMPD #CIRP4 63 | BLS CIRC1 64 | LDD #CIRP0 65 | TST STATUS DONT START EARLY GUYS 66 | BNE CIRC1 67 | DEC PD2,U GO CRITICAL?? 68 | BEQ CIRC2 YIP 69 | CIRC1 STD OPICT,X 70 | DEC PD7,U NEW ACCEL? 71 | BNE CIRC1A NO 72 | JSR CIRNAC 73 | CIRC1A JSR CIRGO ACCELERATE+DAMP 74 | NAP 2,CIRCLE 75 | *GO GET THE MO'FO' 76 | CIRC2 LDA CDPTIM 77 | LSRA 78 | LSRA 79 | JSR RMAX 80 | STA PD2,U TIME TO DROP 81 | CIRC2L LDX PD,U 82 | LDD OPICT,X 83 | ADDD #4 84 | CMPD #CIRP7 85 | BLS CIRC2A 86 | DEC PD2,U 87 | BNE CIR2A 88 | LDA ENFCNT MAXXED OUT?? 89 | CMPA #8 90 | BHS CIRC2 TOO MANY 91 | LDA OVCNT OUT OF REAL TIME ?? 92 | CMPA #17 93 | BHS CIRC2 94 | JSR ENFDRP 95 | DEC PD3,U 96 | BEQ CIRC3 ALL DONJE 97 | BRA CIRC2 GET NEW DROP TIME 98 | CIR2A LDD #CIRP0 99 | CIRC2A STD OPICT,X 100 | DEC PD7,U 101 | BNE CIRC2B 102 | JSR CIRNAC 103 | CIRC2B JSR CIRGO 104 | NAP 2,CIRC2L 105 | *ESCAPE PHASE 106 | CIRC3 LDD #0 107 | STD OYV,X 108 | LDD #$100 109 | TST SEED 110 | BPL CIRC3A 111 | NEGA 112 | CIRC3A STD OXV,X 113 | CIRC3L LDX PD,U 114 | LDD OPICT,X 115 | ADDD #4 116 | CMPD #CIRP4 117 | BLS CIRC3B 118 | LDA OX16,X DONE? 119 | CMPA #XMIN+3 120 | BLS CIRC4 YES 121 | CMPA #XMAX-10 122 | BHS CIRC4 YES 123 | LDD #CIRP0 124 | CIRC3B STD OPICT,X 125 | NAP 2,CIRC3L 126 | *ALL DONE 127 | CIRC4 JSR KILLOF 128 | DEC CIRCNT 129 | JMP SUCIDE 130 | * 131 | *CIRCLE NEW ACCEL 132 | *X=OBJ,PD5=X ACC,PD6=Y ACC,PD7=ACC TIME 133 | * 134 | CIRNAC LDA HSEED 135 | ANDA #$1F 136 | ADDA #-$10 137 | STA PD5,U X ACC 138 | LDA LSEED 139 | EORA SEED 140 | ANDA #$3F 141 | ADDA #-$20 142 | STA PD6,U Y ACC 143 | LDA #15 144 | JSR RANDU 145 | STA PD7,U 146 | RTS 147 | * 148 | *CIRCLE ACCELERATE 149 | *X=OBJ 150 | CIRGO LDB PD5,U X ACCEL 151 | SEX 152 | ADDD OXV,X 153 | CMPD #$0100 CHECK YOUR LIMITS 154 | BLT CIRG1 155 | LDD #$0100 156 | CIRG1 CMPD #$FF00 157 | BGT CIRG2 158 | LDD #$FF00 159 | CIRG2 STD OXV,X 160 | COMA 161 | COMB 162 | ASLB 163 | ROLA 164 | ASLB 165 | ROLA 166 | TFR A,B 167 | SEX 168 | ADDD OXV,X 169 | STD OXV,X 170 | LDB PD6,U Y ACCEL 171 | SEX 172 | ADDD OYV,X 173 | CMPD #$0200 174 | BLT CIRG3 175 | LDD #$0200 176 | CIRG3 CMPD #$FE00 177 | BGT CIRG4 178 | LDD #$FE00 179 | CIRG4 STD OYV,X 180 | COMA 181 | COMB 182 | ASLB 183 | ROLA 184 | TFR A,B 185 | SEX 186 | ADDD OYV,X 187 | STD OYV,X 188 | RTS 189 | * 190 | *KILL A CIRCLE 191 | *X=OBJECT 192 | CIRKIL LDA PCFLG 193 | BNE CIRKX DONT BLOW IF PLAYER HITS YOU 194 | JSR KILOFP KILL, OFF OBJ; KILL PROC 195 | LDU OFREE 196 | LDD ,U GET OBJ BACK 197 | STD OFREE 198 | MAKP CIRKP CIRCLE KILL PROC 199 | STU PD,X 200 | LDD #CIRP1 201 | STD OPICT,U 202 | DEC CIRCNT 203 | LDD #$0210 SCORE 1K 204 | JSR SCORE 205 | LDD #CRKSND 206 | JMP SNDLD 207 | CIRKX RTS 208 | * 209 | *CIRCLE KILL PROCESS BUBBLE BURST 210 | *PD=OBJ. 211 | CIRKP LDD #$FFAA 212 | STD PD4,U COLORS.. 213 | LDA #7 214 | STA PD6,U COUNT 215 | CIRKKV EQU * 216 | CIRKPL LDX PD,U 217 | LDY OPICT,X 218 | LDD OBJX,X 219 | JSR PCTOFF 220 | LEAY 4,Y 221 | STY OPICT,X 222 | DEC PD6,U 223 | BEQ CIRKPX 224 | LDA PD5,U 225 | STA XTEMP2 226 | LDD OBJX,X 227 | JSR MPCTON 228 | NAP 2,CIRKPL 229 | CIRKPX EQU * 230 | LDD OBJX,X DISPLAY 1000 MESSAGE 231 | ADDD #$0105 232 | STD OBJX,X 233 | LDA #30 234 | STA PD2,U 235 | LDD P1KD 236 | STD OPICT,X 237 | CIRKX1 LDX PD,U 238 | LDA PD4,U 239 | STA XTEMP2 COLOR 240 | LDY OPICT,X 241 | LDD OBJX,X 242 | JSR MPCTON 243 | DEC PD2,U 244 | BEQ CIRKX2 245 | NAP 2,CIRKX1 246 | CIRKX2 JSR PCTOFF 247 | LDD OFREE DUMP 248 | STD ,X 249 | STX OFREE 250 | JMP SUCIDE CROAK NOW PLEASE!! 251 | * 252 | *DROP OFF AN ENFORCER 253 | *X=CIRCLE OBJECT 254 | ENFDRP PSHS X,Y,D,U 255 | TFR X,Y 256 | MKPROB ENFRCE,ENGP1,ENFKIL 257 | BEQ ENFDX NONE LEFT 258 | LDA OX16,Y 259 | LDB OY16,Y 260 | STA OX16,X 261 | STB OY16,X 262 | STD OBJX,X 263 | LDA ENSTIM 264 | JSR RMAX 265 | STA PD6,U SHOT TIMER 266 | STX OPTR LINK EM IN 267 | LDD #ENDSND 268 | JSR SNDLD 269 | INC ENFCNT 270 | ENFDX PULS X,Y,D,U,PC 271 | * 272 | *ENFORCER PROCESS 273 | *PD=OBJECT,PD6=SHOT TIMER, PD7=UPDATE TIMER 274 | * 275 | ENFR0 LDX PD,U GROW UP 276 | LDD OPICT,X 277 | ADDD #4 278 | CMPD #ENFP0 279 | BHS ENFR10 ALL GROWN UP 280 | STD OPICT,X 281 | ENFRCE NAP 8,ENFR0 282 | *GO GIT IM 283 | ENFR10 STD OPICT,X SAVE THE PICT 284 | JSR ENFNV GET A VELOCITY 285 | ENFR1 LDX PD,U 286 | DEC PD7,U 287 | BNE ENFR1A 288 | JSR ENFNV 289 | ENFR1A DEC PD6,U 290 | BNE ENFR1B 291 | JSR ENFSHT TAKE A SHOT AT THE JAGOFF 292 | ENFR1B NAP 3,ENFR1 293 | * 294 | *GET A NEW ENFORCER VELOCITY 295 | *PD7=UPDATE TIMER, X=OBJ 296 | * 297 | ENFNV JSR RAND16 298 | ANDA #$1F 299 | STA PD7,U 300 | CLRA 301 | ASRB 302 | ASRB 303 | ASRB 304 | ADDB PX 305 | CMPB #XMIN 306 | BHS ENFNV1 307 | LDB #XMIN 308 | ENFNV1 CMPA #XMAX 309 | BLS ENFNV4 310 | CMPB #XMAX+$40 311 | BHS ENFNV2 312 | LDB #XMAX 313 | BRA ENFNV4 314 | ENFNV2 LDB #XMIN 315 | ENFNV4 SUBB OX16,X 316 | SBCA #0 GET THE SIGN GUYS 317 | ASLB 318 | ROLA 319 | STD OXV,X 320 | CLRA 321 | LDB HSEED 322 | ASRB 323 | ASRB 324 | ASRB 325 | ADDB PX+1 326 | CMPB #YMAX 327 | BLS ENFNV5 328 | LDB #YMAX 329 | ENFNV5 CMPB #YMIN 330 | BHS ENFNV7 331 | CMPB #YMIN>>1 332 | BHS ENFNV6 333 | LDB #YMAX 334 | BRA ENFNV7 335 | ENFNV6 LDB #YMIN 336 | ENFNV7 SUBB OY16,X 337 | SBCA #0 GET THE SIGN 338 | ASLB 339 | ROLA 340 | STD OYV,X 341 | RTS 342 | * 343 | *ENFORCER SHOOT 344 | *X=OBJ 345 | ENFSHT PSHS U,X 346 | TFR X,Y 347 | LDA ENSTIM SHOT TIMER 348 | JSR RMAX 349 | STA PD6,U 350 | LDA SPKCNT TOO MANY?? 351 | CMPA #20 352 | BHS ENFSX 353 | LDA OVCNT NO TIME LEFT?? 354 | CMPA #17 355 | BHS ENFSX 356 | MKPROB SPARK,SPKP0,SPKIL 357 | BEQ ENFSX NONE LEFT 358 | INC SPKCNT 359 | LDD OBJX,Y 360 | STA OX16,X 361 | STB OY16,X 362 | STD OBJX,X 363 | LDB SEED 364 | ANDB #$1F 365 | ADDB #-$10 366 | LDA PX 367 | CMPA #XMIN+$10 368 | BHS ENFS2 369 | CLRB 370 | ENFS2 ADDB PX 371 | CLRA 372 | SUBB OBJX,X 373 | SBCA #0 GET SIGN 374 | ASLB 375 | ROLA 376 | ASLB 377 | ROLA 378 | STD OXV,X 379 | LDB LSEED 380 | ANDB #$1F 381 | ADDB #-$10 382 | ADDB PX+1 383 | CLRA 384 | SUBB OBJY,X 385 | SBCA #0 386 | ASLB 387 | ROLA 388 | ASLB 389 | ROLA 390 | STD OYV,X 391 | LDB LSEED 392 | ANDB #$1F 393 | ADDB #-$10 394 | SEX 395 | STD PD2,U X ACC 396 | LDB HSEED 397 | ANDB #$1F 398 | ADDB #-$10 399 | SEX 400 | STD PD4,U Y ACC 401 | STX OPTR 402 | LDA HSEED 403 | ANDA #$F 404 | ADDA #$14 405 | STA PD7,U LIFETIME 406 | LDD #ENFSND 407 | JSR SNDLD 408 | ENFSX PULS U,X,PC 409 | * 410 | *KILL AN ENFORCER 411 | *X=OBJECT 412 | ENFKIL LDA PCFLG 413 | BNE ENFKX 414 | JSR KILOFP 415 | LDX OFREE 416 | LDD ,X 417 | STD OFREE GET OBJ BACK 418 | JSR EXST 419 | LDD OFREE 420 | STD ,X 421 | STX OFREE FREE HIM 422 | DEC ENFCNT 423 | LDD #$0115 424 | JSR SCORE 425 | LDD #ENKSND 426 | JMP SNDLD 427 | ENFKX RTS 428 | * 429 | *SPARK PROCESS 430 | *PD=OBJ,PD2=X ACC,PD4=Y ACC 431 | *PD7=LIFE 432 | SPARK LDX PD,U 433 | LDD OPICT,X 434 | ADDD #4 435 | CMPD #SPKP3 436 | BLS SPK1 437 | LDD #SPKP0 438 | SPK1 STD OPICT,X 439 | LDD OXV,X 440 | ADDD PD2,U 441 | STD OXV,X 442 | LDD OYV,X 443 | ADDD PD4,U 444 | STD OYV,X 445 | DEC PD7,U 446 | BEQ SPKDIE 447 | NAP 4,SPARK 448 | SPKDIE JSR KILLOF 449 | DEC SPKCNT 450 | JMP SUCIDE 451 | * 452 | *SPARK KILL 453 | *X=OBJ 454 | SPKIL LDA PCFLG 455 | BNE SPKX 456 | JSR KILOFP 457 | DEC SPKCNT 458 | LDD #$0025 459 | JSR SCORE 460 | LDD #SPKSND 461 | JMP SNDLD 462 | SPKX RTS 463 | *CIRCLES 464 | CIRP0 FCB 8,15 465 | FDB CIRD0 466 | CIRP1 FCB 8,15 467 | FDB CIRD1 468 | CIRP2 FCB 8,15 469 | FDB CIRD2 470 | CIRP3 FCB 8,15 471 | FDB CIRD3 472 | CIRP4 FCB 8,15 473 | FDB CIRD4 474 | CIRP5 FCB 8,15 475 | FDB CIRD5 476 | CIRP6 FCB 8,15 477 | FDB CIRD6 478 | CIRP7 FCB 8,15 479 | FDB CIRD7 480 | 481 | IFC &A,NOL 482 | OPT NOL 483 | ENDIF 484 | 485 | CIRD0 EQU * 486 | FDB $0000,$0000,$0000,$0000 487 | FDB $0000,$0000,$0000,$0000 488 | FDB $0000,$0000,$0000,$0000 489 | FDB $0000,$0000,$0000,$0000 490 | FDB $0000,$0000,$0000,$0000 491 | FDB $0000,$0000,$0000,$0000 492 | FDB $0000,$0000,$0000,$0000 493 | FDB $0000,$000F,$0000,$0000 494 | FDB $0000,$0000,$0000,$0000 495 | FDB $0000,$0000,$0000,$0000 496 | FDB $0000,$0000,$0000,$0000 497 | FDB $0000,$0000,$0000,$0000 498 | FDB $0000,$0000,$0000,$0000 499 | FDB $0000,$0000,$0000,$0000 500 | FDB $0000,$0000,$0000,$0000 501 | CIRD1 EQU * 502 | FDB $0000,$0000,$0000,$0000 503 | FDB $0000,$0000,$0000,$0000 504 | FDB $0000,$0000,$0000,$0000 505 | FDB $0000,$0000,$0000,$0000 506 | FDB $0000,$0000,$0000,$0000 507 | FDB $0000,$0000,$0000,$0000 508 | FDB $0000,$000F,$0000,$0000 509 | FDB $0000,$00FF,$F000,$0000 510 | FDB $0000,$000F,$0000,$0000 511 | FDB $0000,$0000,$0000,$0000 512 | FDB $0000,$0000,$0000,$0000 513 | FDB $0000,$0000,$0000,$0000 514 | FDB $0000,$0000,$0000,$0000 515 | FDB $0000,$0000,$0000,$0000 516 | FDB $0000,$0000,$0000,$0000 517 | CIRD2 EQU * 518 | FDB $0000,$0000,$0000,$0000 519 | FDB $0000,$0000,$0000,$0000 520 | FDB $0000,$0000,$0000,$0000 521 | FDB $0000,$0000,$0000,$0000 522 | FDB $0000,$0000,$0000,$0000 523 | FDB $0000,$00FF,$F000,$0000 524 | FDB $0000,$0FFF,$FF00,$0000 525 | FDB $0000,$0FF0,$FF00,$0000 526 | FDB $0000,$0FFF,$FF00,$0000 527 | FDB $0000,$00FF,$F000,$0000 528 | FDB $0000,$0000,$0000,$0000 529 | FDB $0000,$0000,$0000,$0000 530 | FDB $0000,$0000,$0000,$0000 531 | FDB $0000,$0000,$0000,$0000 532 | FDB $0000,$0000,$0000,$0000 533 | CIRD3 EQU * 534 | FDB $0000,$0000,$0000,$0000 535 | FDB $0000,$0000,$0000,$0000 536 | FDB $0000,$0000,$0000,$0000 537 | FDB $0000,$0000,$0000,$0000 538 | FDB $0000,$00FF,$F000,$0000 539 | FDB $0000,$0FFF,$FF00,$0000 540 | FDB $0000,$FFF0,$FFF0,$0000 541 | FDB $0000,$FF00,$0FF0,$0000 542 | FDB $0000,$FFF0,$FFF0,$0000 543 | FDB $0000,$0FFF,$FF00,$0000 544 | FDB $0000,$00FF,$F000,$0000 545 | FDB $0000,$0000,$0000,$0000 546 | FDB $0000,$0000,$0000,$0000 547 | FDB $0000,$0000,$0000,$0000 548 | FDB $0000,$0000,$0000,$0000 549 | CIRD4 EQU * 550 | FDB $0000,$0000,$0000,$0000 551 | FDB $0000,$0000,$0000,$0000 552 | FDB $0000,$0000,$0000,$0000 553 | FDB $0000,$0FFF,$FF00,$0000 554 | FDB $0000,$FFFF,$FFF0,$0000 555 | FDB $000F,$FF00,$0FFF,$0000 556 | FDB $000F,$F000,$00FF,$0000 557 | FDB $000F,$F000,$00FF,$0000 558 | FDB $000F,$F000,$00FF,$0000 559 | FDB $000F,$FF00,$0FFF,$0000 560 | FDB $0000,$FFFF,$FFF0,$0000 561 | FDB $0000,$0FFF,$FF00,$0000 562 | FDB $0000,$0000,$0000,$0000 563 | FDB $0000,$0000,$0000,$0000 564 | FDB $0000,$0000,$0000,$0000 565 | CIRD5 EQU * 566 | FDB $0000,$0000,$0000,$0000 567 | FDB $0000,$0000,$0000,$0000 568 | FDB $0000,$0FFF,$FF00,$0000 569 | FDB $000F,$FFFF,$FFFF,$0000 570 | FDB $000F,$F000,$00FF,$0000 571 | FDB $00FF,$0000,$000F,$F000 572 | FDB $00FF,$0000,$000F,$F000 573 | FDB $00FF,$0000,$000F,$F000 574 | FDB $00FF,$0000,$000F,$F000 575 | FDB $00FF,$0000,$000F,$F000 576 | FDB $000F,$F000,$00FF,$0000 577 | FDB $000F,$FFFF,$FFFF,$0000 578 | FDB $0000,$0FFF,$FF00,$0000 579 | FDB $0000,$0000,$0000,$0000 580 | FDB $0000,$0000,$0000,$0000 581 | CIRD6 EQU * 582 | FDB $0000,$0000,$0000,$0000 583 | FDB $0000,$00FF,$F000,$0000 584 | FDB $0000,$FFFF,$FFF0,$0000 585 | FDB $0000,$0000,$0000,$0000 586 | FDB $00F0,$0000,$0000,$F000 587 | FDB $00F0,$0000,$0000,$F000 588 | FDB $0FF0,$0000,$0000,$FF00 589 | FDB $0FF0,$0000,$0000,$FF00 590 | FDB $0FF0,$0000,$0000,$FF00 591 | FDB $00F0,$0000,$0000,$F000 592 | FDB $00F0,$0000,$0000,$F000 593 | FDB $0000,$0000,$0000,$0000 594 | FDB $0000,$FFFF,$FFF0,$0000 595 | FDB $0000,$00FF,$F000,$0000 596 | FDB $0000,$0000,$0000,$0000 597 | CIRD7 EQU * 598 | FDB $0000,$000F,$0000,$0000 599 | FDB $0000,$00FF,$F000,$0000 600 | FDB $0000,$0000,$0000,$0000 601 | FDB $0000,$0000,$0000,$0000 602 | FDB $0000,$0000,$0000,$0000 603 | FDB $0000,$0000,$0000,$0000 604 | FDB $0F00,$0000,$0000,$0F00 605 | FDB $FF00,$0000,$0000,$0FF0 606 | FDB $0F00,$0000,$0000,$0F00 607 | FDB $0000,$0000,$0000,$0000 608 | FDB $0000,$0000,$0000,$0000 609 | FDB $0000,$0000,$0000,$0000 610 | FDB $0000,$0000,$0000,$0000 611 | FDB $0000,$00FF,$F000,$0000 612 | FDB $0000,$000F,$0000,$0000 613 | *ENFORCER PICTS 614 | ENGP1 FCB 5,11 615 | FDB ENGD1 616 | ENGP2 FCB 5,11 617 | FDB ENGD2 618 | ENGP3 FCB 5,11 619 | FDB ENGD3 620 | ENGP4 FCB 5,11 621 | FDB ENGD4 622 | ENGP5 FCB 5,11 623 | FDB ENGD5 624 | ENFP0 FCB 5,11 625 | FDB ENFD0 626 | ENFD0 FCB $00,$00,$80,$00,$00 627 | FCB $00,$08,$88,$00,$00 628 | FCB $00,$8A,$AA,$80,$00 629 | FCB $08,$FF,$FF,$F8,$00 630 | FCB $00,$08,$88,$00,$00 631 | FCB $90,$88,$78,$80,$90 632 | FCB $09,$97,$77,$99,$00 633 | FCB $90,$77,$77,$70,$90 634 | FCB $00,$00,$80,$00,$00 635 | FCB $00,$DD,$DD,$D0,$00 636 | FCB $0D,$DD,$DD,$DD,$00 637 | ENGD1 EQU * 638 | FCB $00,$00,$00,$00,$00 639 | FCB $00,$00,$00,$00,$00 640 | FCB $00,$00,$00,$00,$00 641 | FCB $00,$00,$00,$00,$00 642 | FCB $00,$00,$80,$00,$00 643 | FCB $00,$08,$F8,$00,$00 644 | FCB $00,$00,$70,$00,$00 645 | FCB $00,$00,$D0,$00,$00 646 | FCB $00,$00,$00,$00,$00 647 | FCB $00,$00,$00,$00,$00 648 | FCB $00,$00,$00,$00,$00 649 | ENGD2 EQU * 650 | FCB $00,$00,$00,$00,$00 651 | FCB $00,$00,$00,$00,$00 652 | FCB $00,$00,$00,$00,$00 653 | FCB $00,$00,$80,$00,$00 654 | FCB $00,$08,$F8,$00,$00 655 | FCB $00,$00,$80,$00,$00 656 | FCB $00,$09,$79,$00,$00 657 | FCB $00,$00,$D0,$00,$00 658 | FCB $00,$00,$00,$00,$00 659 | FCB $00,$00,$00,$00,$00 660 | FCB $00,$00,$00,$00,$00 661 | ENGD3 EQU * 662 | FCB $00,$00,$00,$00,$00 663 | FCB $00,$00,$00,$00,$00 664 | FCB $00,$00,$00,$00,$00 665 | FCB $00,$00,$88,$00,$00 666 | FCB $00,$08,$FF,$80,$00 667 | FCB $00,$00,$88,$00,$00 668 | FCB $00,$09,$77,$90,$00 669 | FCB $00,$00,$77,$00,$00 670 | FCB $00,$00,$DD,$00,$00 671 | FCB $00,$00,$00,$00,$00 672 | FCB $00,$00,$00,$00,$00 673 | ENGD4 EQU * 674 | FCB $00,$00,$00,$00,$00 675 | FCB $00,$00,$80,$00,$00 676 | FCB $00,$08,$A8,$00,$00 677 | FCB $00,$8F,$FF,$80,$00 678 | FCB $00,$00,$80,$00,$00 679 | FCB $00,$08,$78,$00,$00 680 | FCB $09,$97,$77,$99,$00 681 | FCB $00,$07,$77,$00,$00 682 | FCB $00,$00,$80,$00,$00 683 | FCB $00,$0D,$DD,$00,$00 684 | FCB $00,$00,$00,$00,$00 685 | ENGD5 EQU * 686 | FCB $00,$00,$00,$00,$00 687 | FCB $00,$00,$88,$00,$00 688 | FCB $00,$08,$AA,$80,$00 689 | FCB $00,$8F,$FF,$F8,$00 690 | FCB $00,$00,$88,$00,$00 691 | FCB $00,$98,$88,$89,$00 692 | FCB $00,$09,$77,$90,$00 693 | FCB $00,$97,$77,$79,$00 694 | FCB $00,$00,$88,$00,$00 695 | FCB $00,$0D,$DD,$D0,$00 696 | FCB $00,$00,$00,$00,$00 697 | *SPARK PICTS 698 | SPKP0 FCB 4,7 699 | FDB SPKD0 700 | SPKP1 FCB 4,7 701 | FDB SPKD1 702 | SPKP2 FCB 4,7 703 | FDB SPKD2 704 | SPKP3 FCB 4,7 705 | FDB SPKD3 706 | SPKD0 EQU * 707 | FDB $000B,$0000 708 | FDB $000B,$0000 709 | FDB $000B,$0000 710 | FDB $FFFB,$FFF0 711 | FDB $000B,$0000 712 | FDB $000B,$0000 713 | FDB $000B,$0000 714 | SPKD1 EQU * 715 | FDB $0000,$0000 716 | FDB $0F00,$0B00 717 | FDB $00F0,$B000 718 | FDB $000B,$0000 719 | FDB $00B0,$F000 720 | FDB $0B00,$0F00 721 | FDB $0000,$0000 722 | SPKD2 EQU * 723 | FDB $000F,$0000 724 | FDB $000F,$0000 725 | FDB $000F,$0000 726 | FDB $BBBB,$BBB0 727 | FDB $000F,$0000 728 | FDB $000F,$0000 729 | FDB $000F,$0000 730 | SPKD3 EQU * 731 | FDB $0000,$0000 732 | FDB $0B00,$0F00 733 | FDB $00B0,$F000 734 | FDB $000B,$0000 735 | FDB $00F0,$B000 736 | FDB $0F00,$0B00 737 | FDB $0000,$0000 738 | END 739 | -------------------------------------------------------------------------------- /RRCHRIS.ASM: -------------------------------------------------------------------------------- 1 | 2 | ************************************************************************** 3 | * * 4 | * This is the patch that was written by Christian Gingras * 5 | * to fix the famous enforcer diagonal explosion bug. * 6 | * It is used to patch the $4000 rom in the final robotron * 7 | * version (called version 6 in software.....R5 is what is * 8 | * on the listing). * 9 | * * 10 | ************************************************************************** 11 | 12 | OPT NOL 13 | LIB RRF 14 | OPT LIS 15 | 16 | STTL DIAGONAL EXPLOSIONS 17 | 18 | ORG DXRAM (BASE PAGE) 19 | 20 | YYCNT RMB 1 WHEN CHOPPING UP X, SAVE TO UPDATE ULY 21 | YOFF RMB 1 ACTUAL PIXEL OFFSET TO CENTER (USED) 22 | XSIZE RMB 1 DISTANCE BETWEEN X POINTS THIS FRAME 23 | YSIZE RMB 1 DISTANCE BETWEEN Y POINTS THIS FRAME 24 | EXPTR RMB 2 25 | APPTR RMB 2 APPEAR POINTER 26 | EXFREE RMB 2 27 | HITE RMB 1 28 | TEMP1 RMB 2 29 | TEMP2 RMB 1 30 | 31 | KLJMP EQU $4A59 32 | 33 | ORG $4990 34 | JMP UN 35 | 36 | ORG $49B7 37 | JMP DEUX 38 | 39 | ORG $49E2 40 | JMP TROIS 41 | 42 | ORG $4A97 43 | 44 | UN DEC HITE 45 | BEQ KLJMP 46 | DEC YOFF 47 | JMP $4994 48 | 49 | DEUX DEC HITE 50 | BEQ KLJMP 51 | INC YYCNT 52 | JMP $49BB 53 | 54 | TROIS DEC HITE 55 | BEQ KLJMP 56 | INC YYCNT 57 | JMP $49E6 58 | 59 | FCC '05/1987 CHR.G.' 60 | 61 | ORG $4AD7 62 | * FCB $FD THIS SETS JAP ZAPPER CORRECT 63 | FCB $4C THIS SETS CHECKSUM FOR THE PART CORRECT. 64 | 65 | END 66 | 67 | -------------------------------------------------------------------------------- /RRELESE6.ASM: -------------------------------------------------------------------------------- 1 | * 2 | * Additional patch bytes for version 6. It is assumed that 3 | * the binary of all of these sources, Plus these patches, 4 | * plus setting the checksum block around ffb0 comprises 5 | * the correct binary image. 6 | * 7 | 8 | ORG $26B1 9 | FCB $55,$55,$55,$55,$55,$55,$55,$55 10 | ORG $DF34 11 | FCB $A,$A,$A,$A,$A,$A,$A 12 | ORG $E3B0 13 | FCB $26,$26,$26,$26,$26,$26,$26,$26,$26 14 | ORG $6D2E 15 | FCB $21 16 | ORG $E398 17 | FCB $A6 18 | END 19 | 20 | -------------------------------------------------------------------------------- /RRF.ASM: -------------------------------------------------------------------------------- 1 | OPT PAGS 2 | TTL R O B O T W A R 3 | * 4 | * HARDWARE CONSTANTS 5 | * 6 | HSTK EQU $BF70 7 | VECTOR EQU $EFF0 8 | CRAM EQU $C000 COLOR RAM ADDR 9 | WDOG EQU $CBFF 10 | WDATA EQU $39 11 | CMOS EQU $CC00 12 | SOUND EQU $C80E 13 | VERTCT EQU $CB00 6-BIT VERTICAL BEAM ADDR 14 | RWCNTL EQU $C900 (BIT 0: 1-ROM READ; 0-RAM READ) 15 | * (BIT 1: 1-INVERT; 0-NORMAL SCREEN) 16 | * 17 | *PIA DEFINITIONS 18 | * 19 | PIA0 EQU $C80C 20 | *B0 AUTO UP 21 | *B1 ADVANCE 22 | *B2 RCOIN 23 | *B3 HSRESET 24 | *B4 LCOIN 25 | *B5 CCOIN 26 | *B6 SLAM 27 | *B7 SOUND HANDSHAKE 28 | *CA2 LED3 29 | *CA1 IRQ 240 (16 MS) (LINE 240) 30 | PIA1 EQU $C80E 31 | *B0-B5 SOUND 32 | *B6-B7 LED 0,1 33 | *CB1 IRQ 4 MS (0,$40,$80,$C0) 34 | *CB2 LED2 35 | PIA2 EQU $C804 36 | *B0 MOVE UP 37 | *B1 MOVE DOWN 38 | *B2 MOVE LEFT 39 | *B3 MOVE RIGHT 40 | *B4 START 1 41 | *B5 START 2 42 | *B6 FIRE UP 43 | *B7 FIRE DOWN 44 | * 45 | PIA3 EQU $C806 46 | *B0 FIRE LEFT 47 | *B1 FIRE RIGHT 48 | *B7 INPUT 1=COCKTAIL 49 | *CB2 OUTPUT SWITCH MUX CONTROL 1=PLAYER1,0=PLAYER2 50 | * 51 | *DMA CONSTANTS 52 | * 53 | DMACTL EQU $CA00 CONTROL BYTE WRITE INITIATES TRANSFER 54 | *B0:READ FORMAT 0=SERIAL;1=BLOCK 55 | *B1:WRITE FORMAT 0=SERIAL;1=BLOCK 56 | *B2:XSFER RATE 0=ROM-RAM (1MSEC); 1=RAM-RAM (2 MSEC) 57 | *B3:1=ZERO WRITE SUPPRESS 58 | *B4:1=CONSTANT SUBSTITUTION 59 | *B5:1=ODD FLAVOR 60 | *B6:1=B0-B3 WRITE SUPPRESS 61 | *B7:1=B4-B7 WRITE SUPPRESS 62 | DMACON EQU $CA01 CONSTANT DATA BYTE 63 | DMAORG EQU $CA02 ORIGIN ADDR MSB,LSB 64 | DMADES EQU $CA04 DESTINATION " 65 | DMASIZ EQU $CA06 HOR,VERT BYTE COUNTS 66 | *SCORE DISPLAY CONSTANTS 67 | YMAX EQU 234 68 | YMIN EQU 24 MIN Y COORD 69 | XMAX EQU $8F 70 | XMIN EQU 7 71 | P1ORG EQU $18*$100+14 72 | P1MAN EQU P1ORG+7*$300+$100 73 | P1DISP EQU P1ORG 74 | P2ORG EQU P1ORG+$40*$100 75 | P2MAN EQU P2ORG+P1MAN-P1ORG 76 | P2DISP EQU P2ORG 77 | DIGLTH EQU $300 78 | PCOORD EQU $4A7C INIT PLAYER COORD 79 | FONCOL EQU $66 PHONY STARTUP COLOR 80 | * 81 | *MODULE VECTORS + STORAGE ALLOCATION 82 | * 83 | ***OPSYS**..... R O S .......... 84 | * 85 | ROSORG EQU $D000 86 | ORG ROSORG 87 | INIT RMB 3 88 | ASCAN RMB 3 89 | SDOUT RMB 3 90 | SCRTRN RMB 3 91 | SCORE RMB 3 92 | SCRTR0 RMB 3 93 | SCRCLR RMB 3 94 | DMAOFF RMB 3 95 | DMAON RMB 3 96 | BLKCLR RMB 3 97 | PCTOFF RMB 3 98 | PCTON RMB 3 99 | COLST RMB 3 100 | COL0 RMB 3 101 | HEXBCD RMB 3 102 | BCDHEX RMB 3 103 | OINIT RMB 3 104 | CRINIT RMB 3 105 | PINIT RMB 3 106 | RAND RMB 3 107 | RAND16 RMB 3 108 | RMAX RMB 3 109 | RANDU RMB 3 110 | PLINDX RMB 3 111 | PLDX RMB 3 112 | SNDLD RMB 3 113 | KILO1 RMB 3 114 | GETOBJ RMB 3 115 | MAKEP RMB 3 116 | MKPROC RMB 3 117 | MSPROC RMB 3 118 | KILL RMB 3 119 | GNCIDE RMB 3 120 | SUCIDE RMB 3 121 | SLEEP RMB 3 122 | RIPV RMB 3 123 | MPROB RMB 3 124 | GETOB RMB 3 125 | KILLOB RMB 3 126 | KILLOF RMB 3 127 | KILOFP RMB 3 128 | GETROB RMB 3 129 | KILROB RMB 3 130 | GETPST RMB 3 131 | KILPST RMB 3 132 | GETHUM RMB 3 133 | KILHUM RMB 3 134 | DMAOFN RMB 3 135 | MPCTON RMB 3 136 | BLKON RMB 3 137 | EXECV RMB 3 138 | P1SW RMB 3 139 | P2SW RMB 3 140 | DIVAB RMB 3 141 | RCMOSA RMB 3 142 | RCMOSB RMB 3 143 | RCMOSD RMB 3 144 | WCMOSA RMB 3 145 | WCMOSB RMB 3 146 | WCMOSD RMB 3 147 | BCDBIN RMB 3 148 | RWMOVE RMB 3 149 | AUD RMB 3 150 | AUD1 RMB 3 151 | INT20V RMB 3 152 | LFV RMB 3 153 | NEWBCH RMB 3 BCDHEX THAT USES A!! 154 | * 155 | *PLAYER DEATH 156 | * 157 | RDORG EQU $DD00 158 | ORG RDORG 159 | RDTHV RMB 3 160 | * 161 | *HUMANS+HULKS 162 | * 163 | RHORG EQU $0000 164 | ORG RHORG 165 | HULKST RMB 3 166 | HUMST RMB 3 167 | CKLIM RMB 3 168 | SKULL RMB 3 169 | P1KD RMB 2 170 | MOMPIC RMB 2 171 | DADPIC RMB 2 172 | KIDPIC RMB 2 173 | HLKPIC RMB 2 174 | HLKANA RMB 2 175 | HUMANA RMB 2 176 | SKLPIC RMB 2 177 | * 178 | ***CIRCLES,ENFORCERS,SPARX 179 | * 180 | RCORG EQU $1140 181 | ORG RCORG 182 | CIRCST RMB 3 START CIRCLES 183 | CIRKV RMB 3 184 | CIRPIC RMB 2 185 | ENGPIC RMB 2 186 | ENFPIC RMB 2 187 | * 188 | *BRAINS & CO. 189 | * 190 | BRNORG EQU $1AC0 191 | ORG BRNORG 192 | BRNST RMB 3 193 | BRNPIC RMB 2 194 | BRONV RMB 3 195 | HUMONV RMB 3 196 | PRGPIC RMB 2 197 | * 198 | *******ROBOT GAME...... R G ....... 199 | * 200 | RGORG EQU $26C0 201 | ORG RGORG 202 | PLAYER RMB 3 203 | RANDXY RMB 3 204 | CKOBS RMB 3 205 | MANDSP RMB 3 206 | STRT1 RMB 3 207 | STRT2 RMB 3 208 | TDISPV RMB 3 209 | MANPIC RMB 2 210 | LASPIC RMB 2 211 | * 212 | *ROBOTS&POSTS 213 | * 214 | RPORG EQU $3880 215 | ORG RPORG 216 | RINIT RMB 3 217 | PSINIT RMB 3 218 | PSTP1 RMB 2 219 | OPON RMB 3 220 | OPON1 RMB 3 221 | SAFTY RMB 3 222 | ROBPIC RMB 2 223 | PSTPIC RMB 2 224 | PKPRCV RMB 3 225 | * 226 | *TRANSPORTER 227 | * 228 | RTORG EQU $4140 229 | ORG RTORG 230 | TRANST RMB 3 231 | * 232 | *DIAGONAL EXPLOSIONS 233 | * 234 | RDXORG EQU $4680 235 | ORG RDXORG 236 | DXINIT RMB 3 237 | DXST RMB 3 238 | DAPST RMB 3 239 | DXUPD RMB 3 240 | * 241 | *TANKS 242 | * 243 | RTKORG EQU $4B00 244 | ORG RTKORG 245 | TANKST RMB 3 246 | SQST RMB 3 247 | SQPIC RMB 2 248 | TNGPIC RMB 2 249 | TNKPIC RMB 2 250 | * 251 | *MARQUEE 252 | * 253 | RMORG EQU $5700 254 | ORG RMORG 255 | RMST RMB 3 256 | * 257 | *EXPLOSIONS 258 | * 259 | RXORG EQU $5B40 260 | ORG RXORG 261 | EXINIT RMB 3 262 | EXST RMB 3 263 | APST RMB 3 264 | EXUPD RMB 3 265 | PDEATH RMB 3 266 | HVEXST RMB 3 267 | DDEXST RMB 3 DUAL DIAGONALS 268 | AMAP RMB 3 ATTRACT MODE APPEAR 269 | HAPST RMB 3 HORIZONTAL APPEAR 270 | HEXST RMB 3 HORIZONTAL EXPLODE 271 | 272 | * STINKY LINKY VINCKYS 273 | 274 | LOGORG EQU $77A0 PLACE FOR PROGRAM 275 | GOV EQU LOGORG 276 | CCV EQU GOV+3 277 | 278 | TSCORG EQU $E3D0 HIGH SCORE BULLSHIT 279 | PUPHSC EQU TSCORG POWER UP HIGH SCORE CHECK 280 | ENDPRC EQU PUPHSC+3 END OF GAME PROCESSING 281 | GODSET EQU ENDPRC+3 ENTER GODS NAME BY OPERATOR 282 | HIGHRS EQU GODSET+3 RESET HIGH SCORE TABLE BY OPERATOR 283 | HSCHKV EQU HIGHRS+3 CHECK IF HS TABLE LOOKS BASHED 284 | HSBUTV EQU HSCHKV+3 HIGH SCORE RESET BUTTON 285 | 286 | TABORG EQU $DF40 287 | TABLEV EQU TABORG 288 | 289 | TSTORG EQU $F000 290 | PWRUPV EQU TSTORG 291 | ADVSW EQU PWRUPV+3 292 | AUTOCY EQU ADVSW+3 293 | HXINIT EQU AUTOCY+3 294 | HEXSTX EQU HXINIT+3 295 | HAPSTX EQU HEXSTX+3 296 | HXUPD EQU HAPSTX+3 297 | WLOOPV EQU HXUPD+3 298 | ELOOPV EQU WLOOPV+2 299 | L2 EQU ELOOPV+2 300 | L0 EQU L2+2 301 | 302 | TSBORG EQU $6F00 ADJUST PART OF TEST MODE 303 | ADJV EQU TSBORG 304 | CMINIT EQU ADJV+3 305 | ATMCK EQU CMINIT+3 306 | GETLT EQU ATMCK+3 ROUTINE TO GET LETTERS FROM CONTROL PANEL 307 | CMSMVV EQU GETLT+3 308 | DOPMES EQU CMSMVV+3 2 BYTER 309 | 310 | TXORG EQU $5F90 PLACE FOR TEXT PROGRAM 311 | PR35V EQU TXORG 312 | PR57V EQU PR35V+3 313 | WRD5V EQU PR57V+3 314 | WRD7V EQU WRD5V+3 315 | PRINV EQU WRD7V+3 316 | PRSCR EQU PRINV+3 317 | 318 | WRD5FV EQU WRD5V 319 | WRD7FV EQU WRD7V 320 | PRN5FV EQU PR35V 321 | PRN7FV EQU PR57V 322 | 323 | SETORG EQU $E9C8 CHARACTER SET 324 | TAB35 EQU SETORG 325 | TAB57 EQU TAB35+2 326 | N0V EQU TAB57 327 | 328 | * 329 | *BASE PAGE RAM AREA 330 | * 331 | ORG $9800 332 | RAM EQU * 333 | SETDP RAM>>8 334 | PCRAM RMB 16 PSEUDO COLOR RAM 335 | TIMER RMB 1 IRQ TIMER 336 | ACTIVE RMB 2 POINTER TO LIST OF CURRENTLY ACTIVE (SLEEPING) PROCS. 337 | FREE RMB 2 POINTER TO LIST OF UNALLOCATED PROCESS SLEEP SPACE. 338 | CRPROC RMB 2 POINTER TO SLEEP AREA OF CURRENTLY EXECUTING PROCESS. 339 | OPTR RMB 2 MOTION OBJECT LIST POINTER 340 | OBPTR RMB 2 OBSTACLE LIST POINTER 341 | OFREE RMB 2 FREE LIST POINTER 342 | SPFREE RMB 2 SUPER PROCESS FREE LIST 343 | HPTR RMB 2 HUMAN PTR 344 | RPTR RMB 2 ROBOT LIST 345 | PPTR RMB 2 PHATAL OBJECT LIST 346 | ITEMP RMB 2 INTERUPT TEMP 347 | PSTIN RMB 2 348 | ITEMP2 RMB 2 349 | XTEMP RMB 2 SAVE AREA FOR QUICK TEMPORARY 350 | XTEMP2 RMB 2 351 | PIA01 RMB 1 N-1 PIA0 352 | PIA02 RMB 1 N-2 PIA0 353 | PIA21 RMB 1 N-1 PIA2 354 | PIA22 RMB 1 N-2 PIA2 355 | SWPROC RMB 12 SWITCH SCAN TEMP 356 | CURPLR RMB 1 CURRENT 357 | PLRCNT RMB 1 NUMBER OF PLAYERS 358 | XXX2 RMB 1 '80' IRQ LINE 359 | OVCNT RMB 1 OVERFLOW COUNT 360 | IFLG RMB 1 IRQ FLAG 361 | FRAME RMB 1 IRQ COUNT 362 | RWCTMP RMB 1 SCREEN READ CONTROL BYTE 363 | REPLA RMB 2 REPLAY LEVEL 364 | PCFLG RMB 1 PLAYER COLLISION 365 | HTABX RMB 2 HUMAN TABLE INDEX 366 | *COIN BUSINESS 367 | SLMCNT RMB 1 368 | LCCNT RMB 1 369 | RCCNT RMB 1 370 | CCCNT RMB 1 371 | BUNITS RMB 1 372 | CUNITS RMB 1 373 | CREDIT RMB 1 374 | *ATTRACT SWITCHES: FONY PRAYAH CONTLOHL 375 | ATRSW2 RMB 1 376 | ATRSW3 RMB 1 377 | *SOUND RAM 378 | SNDX RMB 2 TABLE INDEX 379 | SNDPRI RMB 1 PRIORITY 380 | SNDTMR RMB 1 381 | SNDREP RMB 1 382 | * 383 | *STATUS FLAG 384 | *B7=GAME OVER 385 | *B6= 386 | *B5= 387 | *B4=PLAYER OUTPUT 388 | *B3=MOTION OBJS VEL +ENEMIES 389 | *B2=EXPLOSION UPDATE 390 | *B1=POST ,MOT OBJ REFRESH 391 | *B0=PLAYER MOTION,COLLISION,FIRE 392 | STATUS RMB 1 393 | * 394 | *PLAYER OBJECT STRUCTURE 395 | * 396 | PLOBJ EQU * 397 | RMB 2 OLINK 398 | PPICT RMB 2 OPICT 399 | PX RMB 2 OBJX 400 | RMB 2 OBJID 401 | RMB 2 OCVECT 402 | PX16 RMB 2 OX16 403 | PY16 RMB 2 OY16 404 | PXV RMB 2 OXV 405 | PYV RMB 2 OYV 406 | RMB 1 OFLAV 407 | PODATA RMB 1 ODATA 408 | POLDPC RMB 2 OLDPIC 409 | PLAIMC RMB 1 PLAYER ANIMATION RATE 410 | PLAIMN RMB 1 PLAYER ANIMATION NUMBER 411 | PLAIMB RMB 2 PLAYER ANIMATION BASE ADDR 412 | * 413 | *COLLISION ROUTINE PARAMETERS 414 | * 415 | XCNT RMB 1 SCAN COUNTS 416 | YCNT RMB 1 417 | OX1 RMB 1 OFFSETS 418 | OY1 RMB 1 419 | PX1 RMB 1 420 | PY1 RMB 1 421 | OBW RMB 1 HT TEMPS 422 | PLW RMB 1 423 | ULX RMB 1 UPPER LEFT COORD 424 | ULY RMB 1 " 425 | LRX RMB 1 426 | LRY RMB 1 427 | CTEMP RMB 2 INDEX TEMP 428 | CTEMP2 RMB 2 429 | *RANDOM VARIABLES 430 | SEED RMB 1 431 | HSEED RMB 1 432 | LSEED RMB 1 433 | *LASER 434 | LCNT RMB 1 435 | LASDIR RMB 2 436 | *SPARKS 437 | SPKCNT RMB 1 438 | ROBST RMB 2 PTR TO ROBOT LIST 439 | SAVCNT RMB 1 HUMAN COUNT SAVED 440 | BCMCNT RMB 1 BRAIN CRUISE MISSILES 441 | *POST ANIMATION+WALL COLOR 442 | WALCOL RMB 1 WALL+POST BG 443 | PSTCOL RMB 1 POST COLOR 444 | LASCOL RMB 1 LASER WALL COLLIDE COLOR 445 | PSTREF RMB 1 POST REFRESH RATE 446 | PSTANI RMB 2 CURR POST ANIMATION 447 | BRNFLG RMB 1 BRAIN HUMAN KILL FLAG 448 | * 449 | *EXPLOSION STUFF 450 | EXPRAM RMB $10 451 | CENTMP RMB 2 CENTER OF BLOW 452 | HXRAM RMB $10 453 | DXRAM RMB $10 454 | RMRAM RMB 6 MARQUEE RAM 455 | 456 | ************************ LINKYS STINKYS 457 | 458 | INDIAG RMB 1 459 | 460 | * 461 | * TEXT VARIABLES 462 | * 463 | 464 | TEXCOL RMB 1 (TEXCOL) PRINTING COLOR (NIBBLES REPRESENT FLAVOR COLO 465 | TXFLAV RMB 1 (TXFLAV) FLAVOR OF CURRENT CURSOR (0=EVEN, 1=ODD) 466 | TXLEAD RMB 1 (TXLEAD) LEAD ZERO BLANKING ON/OFF (0=OFF, 1=ON) 467 | TXFONT RMB 1 (TXFONT) FONT HEIGHT (5 OR 7) PIXELS 468 | TEXMAR RMB 2 CURRENT LEFT MARGIN CURSOR POINTER 469 | TEXMFL RMB 1 CURRENT LEFT MARGIN FLAVOR 470 | TEXTP3 RMB 1 471 | TXCLIP RMB 1 472 | 473 | * 474 | *** GET LETTER ROUTINE RAM 475 | * 476 | 477 | GETLRM RMB 2 478 | GETLST RMB 3 479 | 480 | ********************* LOGO RAM 481 | 482 | LOGX RMB 2 483 | LOGCOL RMB 1 484 | LOGCL2 RMB 1 485 | LOGCNT RMB 1 486 | LOGSAV RMB 2 487 | LOGCST RMB 2 488 | 489 | LASTX RMB 2 490 | SIDE RMB 1 491 | BALCOL RMB 1 492 | SLIDER RMB 1 493 | ERPTR RMB 2 494 | *MOVE THIS SOMEDAY 495 | ENFCNT RMB 1 496 | GAMTIM RMB 1 GAME TIMER 497 | TNKSPD RMB 1 TANK SPEED PARAMETER 498 | SCRFLG RMB 1 SCORE FLAG 499 | SHLCNT RMB 1 SHELL COUNTER 500 | RIPFLG RMB 1 501 | HCK1 RMB 1 502 | ATFLAG RMB 1 INDICATE WHAT PAGE AND HOW 503 | 504 | * 505 | *TABLE DATA 506 | * 507 | ORG RAM+$100 PAST BASE PAGE 508 | * 509 | *MASTER OBJECT LIST 510 | * 511 | OLIST EQU * 512 | OSIZE EQU $18 513 | * 514 | *INDEX OFFSETS 515 | * 516 | OLINK EQU 0 LINK TO NEXT 517 | OPICT EQU 2 PICTURE DESCRIPTOR ADDR 518 | OBJX EQU 4 UPPER LEFT SCREEN X 519 | OBJY EQU 5 UPPER LEFT SCREEN Y 520 | OBJID EQU 6 ASSOCIATED PROCESS ID (IF ANY) 521 | OCVECT EQU 8 COLLISION ROUTINE ADDR 522 | OX16 EQU $A 16 BIT X WORLD COORD 523 | OY16 EQU $C 16 BIT Y WORLD COORD 524 | OXV EQU $E X VELOCITY 525 | OYV EQU $10 Y VELOCITY 526 | OFLAV EQU $12 OLD FLAVOR 527 | ODATA EQU $13 MISC. DATA 528 | OLDPIC EQU $14 OLD PICTURE TO ERASE 529 | FONIPC EQU $16 FONY PICT FOR COLLISION PURPOSES 530 | *RESERVE AREA 531 | RMB (180)*OSIZE 532 | OLEND EQU * 533 | * 534 | *USER DEFINED PROCESS TYPES 535 | * 536 | STYPE EQU 0 SYSTEM PROCESS 537 | CTYPE EQU 1 COIN 538 | * 539 | *SLEEPING PROCESS TABLE 540 | * 541 | PTAB EQU * 542 | * 543 | *OFFSET CONSTANTS 544 | * 545 | PLINK EQU 0 546 | PADDR EQU 2 547 | PTIME EQU 4 548 | PTYPE EQU 5 549 | PCOD EQU 6 550 | PDATA EQU 7 551 | PD EQU 7 552 | PD1 EQU 8 553 | PD2 EQU 9 554 | PD3 EQU 10 555 | PD4 EQU 11 556 | PD5 EQU 12 557 | PD6 EQU 13 558 | PD7 EQU 14 559 | PSIZE EQU 15 560 | RMB 15*(120) 561 | TABEND EQU * 562 | * 563 | *SUPER PROCESSES 564 | * 565 | SPSIZE EQU PSIZE+16 566 | SPTAB RMB SPSIZE*20 567 | SPTEND EQU * 568 | * 569 | *OBJECT PICTURE STRUCTURE 570 | * 571 | OBJW EQU 0 572 | OBJH EQU 1 573 | OBJDAT EQU 2 574 | OBJL EQU 4 575 | * 576 | *HUMAN TABLE 577 | * 578 | HTAB RMB 80 579 | HTBEND EQU * 580 | * 581 | *POST REFRESH LIST 582 | * 583 | PSLIST RMB 64 POST LIST 584 | PSLEND EQU * 585 | * 586 | *HORIZONTAL EXPLOSION TABLES 587 | * 588 | HXTAB RMB $800 589 | 590 | * 591 | *DIAGONAL XPLOSION TABLES 592 | * 593 | DXTAB RMB $200 594 | * 595 | *PLAYER DATA TABLE 596 | * 597 | PLDATA EQU * 598 | ZP1SCR RMB 4 SCORE MSB 1ST 599 | ZP1RP RMB 4 NEXT REPLAY LEVEL 600 | ZP1LAS RMB 1 #OF LASERS 601 | ZP1WAV RMB 1 WAVE # IN HEX 602 | ZP1ENM RMB 50 ENEMY STATE 603 | ZP1END EQU * 604 | ZP2SCR RMB 4 605 | ZP2RP RMB 4 606 | ZP2LAS RMB 1 607 | ZP2WAV RMB 1 608 | ZP2ENM RMB 50 609 | PLDEND EQU * END OF PLAYER DATA 610 | PLDLEN EQU ZP1END-PLDATA 611 | PSCOR EQU ZP1SCR-PLDATA 612 | PRPLA EQU ZP1RP-PLDATA 613 | PLAS EQU ZP1LAS-PLDATA 614 | PWAV EQU ZP1WAV-PLDATA 615 | PENEMY EQU ZP1ENM-PLDATA 616 | * 617 | *ENEMIES LIST 618 | *WARNING DO NOT CHANGE ORDER OF COUNTS 619 | ELIST EQU * 620 | ROBSPD RMB 1 SPEED 621 | RMXSPD RMB 1 MAX ROBOT SPEED 622 | ENFNUM RMB 1 # OF ENFORCERS/CIRCLE X2 623 | ENSTIM RMB 1 ENF SHOT TIMER 624 | CDPTIM RMB 1 CIRCLE DROP TIMER 625 | HLKSPD RMB 1 HULK SPEED 626 | BSHTIM RMB 1 BRAIN SHOT TIMER 627 | BRNSPD RMB 1 BRAIN SPEED 628 | TNKSHT RMB 1 TANK SHOT RATE 629 | SHLSPD RMB 1 SHELL SPEED 630 | TDPTIM RMB 1 TANK DROP TIMR 631 | SQSPD RMB 1 SQUARE SPEED 632 | ECNTS EQU * START COUNTS 633 | ROBCNT RMB 1 # ROBOTS 634 | PSTCNT RMB 1 # POSTS 635 | MOMCNT RMB 1 # MOM UNITS 636 | DADCNT RMB 1 # DAD UNITS 637 | KIDCNT RMB 1 # KIDS 638 | HLKCNT RMB 1 # HULKS 639 | BRNCNT RMB 1 # BRAINS 640 | CIRCNT RMB 1 # CIRCLES 641 | SQCNT RMB 1 # SQUARES 642 | TNKCNT RMB 1 # TANKS 643 | ELEND EQU * 644 | HCK2 RMB 1 645 | * 646 | * CMOS RAM ALLOCATION 647 | * 648 | ORG CMOS+$100 WRITABLE CMOS 649 | CREDST RMB 2 CREDITS BACKUP 650 | SLOT1 RMB 6 1 LEFT COIN TOTAL 651 | RMB 6 2 CENTER COIN TOTAL 652 | RMB 6 3 RIGHT COIN TOTAL 653 | RMB 6 4 TOTAL PAID CREDITS 654 | RMB 6 5 TOTAL REPLAYS 655 | BKTIME RMB 6 6 FLIGHT TIME IN MINS 656 | BKMEN RMB 6 7 TOTAL SHIPS PLAYED 657 | BKPLAY RMB 6 8 TOTAL GAMES PLAYED 658 | BKEND EQU * END OF BOOKKEEPING STUFF 659 | SCRSIZ EQU 14 NUMBER OF NIBBLES IN A SCORE ENTRY 660 | GODINT RMB 6 661 | GODSCR RMB 48 662 | CMSCOR RMB 37*SCRSIZ 37 BACKED UP SCORES, 36 OF WHICH ARE VISIBLE 663 | TODAYS RMB 10*SCRSIZ TODAYS GREATEST 664 | TODEND EQU * 665 | ORG CMOS ADEQUATE BIRTH CONTROL PROTECTION 666 | REPLAY RMB 2 REPLAY LEVEL 667 | NSHIP RMB 2 # OF SHIPS/1 CREDIT GAME 668 | COINSL RMB 2 FOR COINAGE SELECT MODE 669 | SLOT1M RMB 2 LEFT COIN MULT 670 | SLOT2M RMB 2 CENTER COIN MULT 671 | SLOT3M RMB 2 RIGHT COIN MULT 672 | CUNITC RMB 2 COIN UNITS PER CREDIT 673 | CUNITB RMB 2 COIN UNITS FOR BONUS 674 | MINUNT RMB 2 MINIMUM REQD 675 | FREEPL RMB 2 FREE PLAY MODE (ONE CREDIT GAME) 676 | GA1 RMB 2 10 MASTER DIFFICULTY CONTROL 1 677 | GA2 RMB 2 NUMBER OF LETTERS ALLOWED TO GOD 10 678 | SPECFN RMB 2 RESTORE FACTORY SETTINGS 679 | RMB 2 CLEAR AUDIT TOTALS 680 | RMB 2 INITIALIZE HIGH SCORE TABLE 681 | RMB 2 INTIATE AUTO CYCLE 682 | RMB 2 ENTER ATTRACT MODE MESSAGE 683 | RMB 2 ENTER HIGHEST SCORE NAME 684 | ENDADJ EQU * 685 | OPMESS RMB 100 2 LINES OF 25 CHARS EACH. 686 | OPL1 RMB 2 687 | OPL2 RMB 2 688 | ADJSUM RMB 2 689 | OMESUM RMB 2 690 | 691 | * 692 | *M A C R O S 693 | * 694 | NAP MACRO 695 | LDA #&1 TIME 696 | LDX #&2 WAKEUP ADDR 697 | JMP SLEEP 698 | ENDM 699 | * 700 | *MAKE A NEW PROCESS 701 | * 702 | NEWP MACRO 703 | LDX #&1 ADDR 704 | LDA #&2 TYPE 705 | JSR MKPROC 706 | ENDM 707 | *INIT PROCESS \0=SADDR 708 | MAKP MACRO 709 | JSR MAKEP 710 | FDB &1 711 | ENDM 712 | *MAKE A PROCESS AND OBJECT 713 | MKPROB MACRO 714 | JSR MPROB 715 | FDB &1,&2,&3 716 | ENDM 717 | 718 | -------------------------------------------------------------------------------- /RRFRED.ASM: -------------------------------------------------------------------------------- 1 | OPT PAG 2 | 3 | LIB RRF USE EUGENES FRED + 4 | 5 | HORIZ EQU $CA06 6 | DEST EQU $CA04 7 | ORIG EQU $CA02 8 | CONST EQU $CA01 9 | CONTRL EQU $CA00 10 | 11 | * MESSAGE NUMBER EQUATES 12 | 13 | DMFAIL EQU 0 DMA FAILURE 14 | OKM EQU 1 INTITIAL TESTS SAY OK 15 | RERRM EQU 2 TESTS SAY RAM ERROR. 16 | ROMERM EQU 3 TESTS SAY ROM ERROR. 17 | ROMOK EQU 4 18 | RAMOK EQU 5 19 | CMOK EQU 6 20 | CMERR EQU 7 21 | CMDOOR EQU 8 22 | SNDTEX EQU 9 23 | FDROMM EQU 10 24 | FDRAMM EQU 11 25 | SWTESM EQU 12 MESSAGE SAYING "SWITCH TEST" 26 | SWMES1 EQU 13 34-50 ARE SWITCH TEST MESSAGES 27 | CMTSTM EQU 30 COLOR MATRIX TEST ETC. 28 | BOOKM EQU 31 29 | AUDMES EQU 32 53-61 ARE AUDIT MESSAGES 30 | * 40 IS GAME OVER 31 | AUDM1 EQU 41 FIRST PART OF 6 DIGIT 32 | AUDM2 EQU 42 SECOND PART OF 6 DIGIT 33 | AUDM3 EQU 43 4 DIGIT AUDIT 34 | FROBM EQU 44 DIPLAY OF FROB MESSAGE 35 | CONTMS EQU 45 EXTRA MESSAGES FOR FIRST PAGE OF ADJUSTMENTS 36 | ADJMES EQU 46 ACTUAL MESSAGE FOR FIRST ADJUSTMENT (REPLAY)-63 37 | REPMM1 EQU 64 38 | REPMM2 EQU 65 39 | NOMESS EQU 66 40 | HIVOL EQU 67 41 | RECOM EQU 68 42 | POORP EQU 69 43 | CUSTM EQU 70 44 | YESM EQU 71 45 | NOM EQU 72 46 | EXLIB EQU 73 47 | LIB EQU 74 48 | * PLAYER X GAME OVER 49 | CONS EQU 76 50 | EXCON EQU 77 51 | REPMM3 EQU 78 52 | CMIMES EQU 79 53 | RESMES EQU 80 54 | YES1M EQU 81 55 | COINM1 EQU 82 82-89 56 | NOREPM EQU 90 57 | BOOKRS EQU 91 58 | OMESM EQU 92 59 | HSRESM EQU 93 60 | GODMES EQU 94 61 | CONG EQU 95 62 | NOWMES EQU 96 63 | HSINDX EQU 97 64 | HIGH1 EQU 98 65 | HIGH3 EQU 99 66 | ONLY5M EQU 100 67 | OPCNTM EQU 101 68 | REPMM4 EQU 102 69 | * PLAYER X UP 70 | * WAVE X 71 | INDMF EQU 105 72 | AVTIM EQU 106 73 | AVTEND EQU 107 74 | AVPLA EQU 108 75 | AVPLEN EQU 109 76 | SCRMES EQU 110 77 | INDMES EQU 111 78 | CPM1 EQU 112 79 | * BOTTOM COPYRITE MESSAGE 113 80 | * SECOND HALF OF WAVE MESSAGE 114 81 | MMOM EQU 115 82 | MDAD EQU 116 83 | MKID EQU 117 84 | MGRUNT EQU 118 85 | MHULK EQU 119 86 | MSPCU EQU 120 87 | MENTK EQU 121 88 | MBRAIN EQU 122 89 | COINMF EQU 123 90 | MPROG EQU 124 91 | EXTMES EQU 125 92 | NULMES EQU 126 93 | ACRM EQU 127 94 | TITLEM EQU 128 95 | FAMMM EQU 129 96 | 97 | RAMTOP EQU $C000 TOP OF RAM FOR RAM TEST 98 | 99 | ORG HXTAB 100 | EGRAM RMB 2 101 | EGRAM2 RMB 2 102 | PLRX RMB 2 103 | ALTBL RMB 20 PLACE FOR 20 CHAR HIGH SCORE SAVE 104 | 105 | MESOUT EQU ALTBL OPERATOR MESSAGE BUFFER 106 | RAMALS EQU ALTBL DIAGNOSTIC/HIGH SCORE SCRATCH REF. 107 | CRDRAM EQU ALTBL 108 | 109 | ORG ALTBL+60 DO THE BALL PAST THE OPERATOR MESS AREA 110 | ARAM1 RMB 392 WILLI PAGE A-MODE STUFF 111 | ERLIST RMB 28*2 112 | EREND EQU * 113 | -------------------------------------------------------------------------------- /RRHX4.ASM: -------------------------------------------------------------------------------- 1 | STTL HORIZ EXPLODES 2 | 3 | * 4 | *INIT DMASIZ EXPLOSION DATA STRUCTURE 5 | * 6 | HXINV PSHS X,D 7 | LDX #EX FIRST 8 | STX EXFREE 9 | EXIN0 LEAX EXSIZE,X FIND NEXT 10 | STX -EXSIZE,X STORE 11 | CMPX #EXEND-EXSIZE BLO EXIN0 12 | EXIN1 LDD #0 13 | STD ,X 14 | STD EXPTR 15 | STD APPTR 16 | PULS X,D,PC 17 | * 18 | *GET A DATA BLOCK IN U FOR EXPLOSIONS 19 | * 20 | GETBLK PSHS X 21 | LDU EXFREE 22 | BEQ NOBLK NONE 23 | LDX ,U GET NEXT 24 | STX EXFREE 25 | LDX EXPTR GET LIST 26 | STX ,U APPEND US 27 | STU EXPTR 28 | CLC 29 | PULS X,PC RETURN IN U 30 | NOBLK SEC 31 | PULS X,PC 32 | * 33 | *GET AN APPEAR BLOCK 34 | * 35 | GETAP PSHS X 36 | LDU EXFREE 37 | BEQ NOBLK 38 | LDX ,U 39 | STX EXFREE 40 | LDX APPTR 41 | STX ,U 42 | STU APPTR 43 | CLC 44 | PULS X,PC 45 | * 46 | *START A DMASIZ APPEAR X=OBJECT 47 | * 48 | HAPSTV PSHS X,U,D,Y 49 | JSR GETAP GET A BLOCK TO USE 50 | BCS APBYE 51 | LDD OBJX,X 52 | LDX OPICT,X 53 | STD UL,U STORE UPPER LEFT (FIRST FRAME) 54 | LDB CENTMP 55 | STB XCENT,U 56 | SUBB UL,U SUBTRACT X UPPER LEFT 57 | BCS NWCEAP NO GOOD 58 | CMPB 0,X COMPARE 59 | BLO APNTOK 60 | NWCEAP LDB ,X GET WIDTH 61 | STB XOF,U SAVE OFFSET 62 | ADDB UL,U ADD TOP 63 | STB XCENT,U THIS IS 64 | BRA CCONTA 65 | APNTOK ASLB DOUBLE CENTER FOR BYTE ADJUSTMENT 66 | STB XOF,U 67 | CCONTA LDD #$4646 SUPRESS LOW GUYS, SLOW, ZERO SUPRESS, SER-BLK 68 | STD DMACNT,U 69 | LDD ,X FETCH H,W 70 | STD WH,U SAVE 71 | LDA #1 ONLY ERASE 1 ROW FIRST TIME THROUGH 72 | STA XHITE,U HITE FOR FIRST ERASE 73 | EORA #$4 74 | EORB #$4 75 | STD DMAWH,U FORMED 76 | LDX 2,X GET DATA POINTER 77 | STX PICPTR,U SAVE OBJECT DESC 78 | LDD #$1000 1ST FRAME SIZE 79 | STD XSIZER,U 80 | 81 | DMOVE LEAX DATA-1,U LET X POINT AT DATA STORAGE AREA 82 | STX TEMP1 SAVE POINTER 83 | LDY PICPTR,U U POINTS AT DATA 84 | LDB WH+1,U ITERATE OVER THE HEIGHT 85 | STB TEMP2+1 86 | HSET2 LDX TEMP1 GET SAVED POINTER 87 | LEAX 1,X MOVE TO NEXT LOCATION 88 | STX TEMP1 AND SAVE 89 | LDA WH,U GET WIDTH 90 | STA TEMP2 SAVE AS COUNTER 91 | HSET1 LDA ,Y+ GET A BYTE 6 92 | STA ,X STORE 5 93 | ABX ADD HEIGHT TO GET TO NEXT 4 94 | ASLA 2 95 | ASLA 2 96 | ASLA 2 97 | ASLA 2 98 | STA ,X 5 99 | ABX 4 100 | DEC TEMP2 6 101 | BNE HSET1 3 102 | DEC TEMP2+1 1 LESS ROW 103 | BNE HSET2 104 | APBYE CLC 105 | PULS X,D,U,PC,Y 106 | * 107 | *START A DMASIZ EXPLOSION 108 | *X=OBJ 109 | HEXSTV PSHS X,U,D,Y 110 | JSR DMAOFF 111 | JSR GETBLK GET A BLOCK TO USE 112 | BCS APBYE DONE...NO BLOCKS 113 | LDD OBJX,X 114 | LDX OPICT,X 115 | STD UL,U STORE UPPER LEFT (FIRST FRAME) 116 | LDB CENTMP 117 | STB XCENT,U 118 | SUBB UL,U SUBTRACT X UPPER LEFT 119 | BCS NWCENT NO GOOD 120 | CMPB 0,X COMPARE 121 | BLO CENTOK 122 | NWCENT LDB ,X GET WIDTH 123 | STB XOF,U SAVE OFFSET 124 | ADDB UL,U ADD TOP 125 | STB XCENT,U THIS IS 126 | BRA CCONT 127 | CENTOK ASLB DOUBLE CENTER FOR BYTE ADJUSTMENT 128 | STB XOF,U 129 | CCONT LDD #$4646 SUPRESS UPPER, SLOW, SUPRESS, SER TO BLOCK 130 | STD DMACNT,U THIS IS DMA CONTROL BYTE 131 | LDD ,X FETCH H,W 132 | STD WH,U SAVE 133 | ASLA DOUBLE WIDTH FOR HEIGHT TO USE 134 | STA XHITE,U HITE FOR FIRST ERASE 135 | LDA #1 HEIGHT IS 1 FOR DMA 136 | EORA #$4 137 | EORB #$4 138 | STD DMAWH,U FORMED 139 | LDX 2,X GET DATA POINTER 140 | STX PICPTR,U SAVE OBJECT DESC 141 | LDD #$0 1ST FRAME MIN 142 | STD XSIZER,U 143 | LDA #$10 NUMBER OF FRAMES LEFT 144 | STA FRAMES,U 145 | BRA DMOVE 146 | 147 | * THIS CODE DMA'S THE DMASIZONTAL LINES 148 | * A JUMP INTO HERE IS MADE BASED ON NUMBER OF 149 | * VERTICAL LINES IN OBJECT 150 | 151 | BSLOOP STA ,Y Y FOR CURRENT TRANSFER 152 | STX DMAORG DATA POINTER 153 | STU DMACTL DO THE LINE 154 | ABX NEXT DMAORG 155 | ADDA XSIZE ADD SPACING 156 | BSSIZE EQU *-BSLOOP 157 | 158 | STA ,Y 159 | STX DMAORG 160 | STU DMACTL 161 | ABX 162 | ADDA XSIZE 163 | 164 | STA ,Y 165 | STX DMAORG 166 | STU DMACTL 167 | ABX 168 | ADDA XSIZE 169 | 170 | STA ,Y 171 | STX DMAORG 172 | STU DMACTL 173 | ABX 174 | ADDA XSIZE 175 | 176 | STA ,Y 177 | STX DMAORG 178 | STU DMACTL 179 | ABX 180 | ADDA XSIZE 181 | 182 | STA ,Y 183 | STX DMAORG 184 | STU DMACTL 185 | ABX 186 | ADDA XSIZE 187 | 188 | STA ,Y 189 | STX DMAORG 190 | STU DMACTL 191 | ABX 192 | ADDA XSIZE 193 | 194 | STA ,Y 195 | STX DMAORG 196 | STU DMACTL 197 | ABX 198 | ADDA XSIZE 199 | 200 | STA ,Y 201 | STX DMAORG 202 | STU DMACTL 203 | ABX 204 | ADDA XSIZE 205 | 206 | STA ,Y 207 | STX DMAORG 208 | STU DMACTL 209 | ABX 210 | ADDA XSIZE 211 | 212 | STA ,Y 213 | STX DMAORG 214 | STU DMACTL 215 | ABX 216 | ADDA XSIZE 217 | 218 | STA ,Y 219 | STX DMAORG 220 | STU DMACTL 221 | ABX 222 | ADDA XSIZE 223 | 224 | STA ,Y 225 | STX DMAORG 226 | STU DMACTL 227 | ABX 228 | ADDA XSIZE 229 | 230 | STA ,Y 231 | STX DMAORG 232 | STU DMACTL 233 | ABX 234 | ADDA XSIZE 235 | 236 | STA ,Y 237 | STX DMAORG 238 | STU DMACTL 239 | ABX 240 | ADDA XSIZE 241 | 242 | STA ,Y 243 | STX DMAORG 244 | STU DMACTL 245 | CLI 246 | PULS Y,PC 247 | 248 | ERLOOP STA ,U PUT HEIGHT TO ERASE DOWN 249 | STB ,X ERASE PLEASE 250 | ADDA XSIZE 251 | ERSIZ EQU *-ERLOOP 252 | 253 | STA ,U 254 | STB ,X 255 | ADDA XSIZE 256 | 257 | STA ,U 258 | STB ,X 259 | ADDA XSIZE 260 | 261 | STA ,U 262 | STB ,X 263 | ADDA XSIZE 264 | 265 | STA ,U 266 | STB ,X 267 | ADDA XSIZE 268 | 269 | STA ,U 270 | STB ,X 271 | ADDA XSIZE 272 | 273 | STA ,U 274 | STB ,X 275 | ADDA XSIZE 276 | 277 | STA ,U 278 | STB ,X 279 | ADDA XSIZE 280 | 281 | STA ,U 282 | STB ,X 283 | ADDA XSIZE 284 | 285 | STA ,U 286 | STB ,X 287 | ADDA XSIZE 288 | 289 | STA ,U 290 | STB ,X 291 | ADDA XSIZE 292 | 293 | STA ,U 294 | STB ,X 295 | ADDA XSIZE 296 | 297 | STA ,U 298 | STB ,X 299 | ADDA XSIZE 300 | 301 | STA ,U 302 | STB ,X 303 | ADDA XSIZE 304 | 305 | STA ,U 306 | STB ,X 307 | ADDA XSIZE 308 | 309 | STA ,U 310 | STB ,X 311 | CLI 312 | RTS 313 | * 314 | *ERASE AN EXPLOSION 315 | *Y=DATA BLOCK 316 | * 317 | ERASE LDB XHITE,Y ACTUALLY PLOTTED 318 | SUBB #16 MAX OF 16 319 | NEGB 320 | LDA #ERSIZ 321 | MUL 322 | LDX #ERLOOP START OF LOOP 323 | ABX 324 | PSHS X PLACE TO JUMP 325 | 326 | LDA XSIZER,Y 327 | STA XSIZE 328 | 329 | LDD UL,Y GET UPPER LEFT 330 | SEI 331 | STB DMADES+1 HIGH HALF OF SCREEN STUFF 332 | 333 | LDB DMACNT,Y SUPRESS HIGH, DMACONANT, SLOW, BLOCK DMADES 334 | ORAB #$10 ERASE 335 | ANDB #$F7 NO SUPRESS 336 | 337 | LDU #0 338 | STU DMACON CONSTANT, AND HIGH HALF OF DMAORG 339 | STB DMAORG+1 LOW HALF OF ORIG 340 | 341 | LDU DMAWH,Y 342 | STU DMASIZ 343 | 344 | LDU #DMADES 345 | LDX #DMACTL 346 | 347 | RTS 348 | * 349 | *KILL AN EXPLOSION,APPEAR 350 | *Y=DATA BLOCK 351 | * 352 | KILEXP LDU #EXPTR LETS WALK LIST TO FIND HIM 353 | KILEX2 CMPY ,U ARE WE SET 354 | BEQ KILEX1 YEP 355 | LDU ,U KEEP WALKING 356 | BNE KILEX2 STILL STUFF THERE 357 | SEI 358 | BRA * ERROR TRAP 359 | KILEX1 LDD ,Y GET GUY WE POINT AT 360 | STD ,U POINT AROUND US 361 | LDD EXFREE 362 | STD ,Y APPEND FREE LIST 363 | STY EXFREE 364 | LEAY ,U RETURN GUY BEFORE US TO WALK FROM 365 | RTS 366 | * 367 | *WRITE APPEARS 368 | *Y=BLOCK 369 | AWRITE LDD XSIZER,Y 370 | SUBD #$80 371 | CMPA XSIZER,Y ANY CHANGE? 372 | BNE AWRIT0 YIP. 373 | STB XSIZER+1,Y 374 | RTS 375 | AWRIT0 JSR ERASE ERASE THE COCK-SUCKER 376 | LDA STATUS SCROLL? 377 | BNE AWRIT1 378 | LDB PX+1 SCROLL PLAYER APPEAR 379 | STB UL+1,Y 380 | LDB XOF,Y 381 | LSRB 382 | ADDB PX 383 | STB XCENT,Y 384 | AWRIT1 LDA WH,Y GET WIDTH 385 | ASLA DOUBLE FOR PIXEL WIDTH 386 | DECA NO NEED TO DO END COLUMN 387 | STA WIDE 388 | 389 | LDD XSIZER,Y GET SIZE 390 | SUBD #$080 SMALLEN IT 391 | TSTA 392 | BHI APGO 393 | LDU #APPTR 394 | JMP KILEX2 395 | * 396 | *WRITE EXPLOSION 397 | *Y=DATA BLOCK 398 | * 399 | WRITE DEC FRAMES,Y ONE LESS FRAME 400 | BEQ KILEXP DONE 401 | 402 | LDA WH,Y GET WIDTH 403 | ASLA DOUBLE FOR PIXEL WIDTH 404 | DECA NO NEED TO DO ZEROS ON LEFT COLUMN 405 | STA WIDE 406 | 407 | LDD XSIZER,Y 408 | ADDD #$100 409 | APGO STD XSIZER,Y 410 | STA XSIZE 411 | 412 | LSRA 1/2 AND SAVE 413 | LDB XOF,Y GET OFFSET 414 | BNE APGO1 OBSCURE BUG CHECK (NO 1/2 UNIT FROM TOP) 415 | CLRA 416 | APGO1 STA TEMP2 417 | 418 | LEAX DATA,Y POINT AT THE DATA 419 | 420 | LDA XSIZE 421 | LDB XOF,Y GET OFFSET 422 | MUL DISTANCE UP FROM CENTER 423 | 424 | 425 | STD TEMP1 SAVE 426 | LDB XCENT,Y GET CENTER 427 | CLRA 428 | SUBD TEMP1 LETS BE GENERAL PURPOSE 429 | ADDB TEMP2 ADD 1/2 SIZE 430 | ADCA #0 AND PROPAGATE 431 | BNE CHK2 432 | CMPB #XMIN 433 | BHI CHK3 WERE OK 434 | CHK2 DEC WIDE 435 | ADDB XSIZE 436 | ADCA #0 437 | BNE CHK2 438 | CHK1 CMPB #XMIN 439 | BLS CHK2 440 | STB UL,Y STORE IN PLACE 441 | LDD WH,Y FIND OFFSET 442 | SUBA WIDE 443 | MUL 444 | ABX 445 | BRA CHK3A 446 | CHK3 STB UL,Y 447 | CHK3A LDA WIDE 448 | DECA 449 | LDB XSIZE FIND FILL DEFLECTION 450 | MUL 451 | ADDB UL,Y ADD FIRST POINT 452 | ADCA #0 FIND FULL DEFLECTION 453 | BEQ CHK4 AOK 454 | CHK5 DEC WIDE 1 LESS 455 | SUBB XSIZE 1 LESS DOWNWARD 456 | SBCA #0 457 | BNE CHK5 458 | CHK4 CMPB #XMAX 459 | BHS CHK5 460 | 461 | * FIND "LOOP" ENTRY 462 | 463 | LDA WIDE GET HEIGHT 464 | LBEQ KILEXP 465 | STA XHITE,Y SAVE FOR ERASE 466 | SUBA #16 16 = 0 OFFSET, 0 = 16 OFFSET 467 | NEGA 468 | LDB #BSSIZE SIZE OF ITERATION 469 | MUL 470 | ADDD #BSLOOP BEGINNING 471 | PSHS D,Y 472 | 473 | LDU DMACNT,Y SUPRESS HIGH NIB, SLOW, SUPRESS, SER TO BLOCK 474 | LDD DMAWH,Y GET WH 475 | 476 | SEI NO INTS BABY 477 | STD DMASIZ 478 | LDA UL+1,Y GET Y OF DMADESINATION 479 | STA DMADES+1 480 | 481 | LDB WH+1,Y GET INITIAL Y HEIGHT (AMOUNT TO ADD TO SOURCE PTR) 482 | LDA UL,Y GET X WIDTH AT START 483 | 484 | LDY #DMADES PLACE TO STOE STUFF 485 | 486 | RTS JUMP INTO IT 487 | *EXPLOSION APPEAR UPDATE 488 | * 489 | HXUPDV LDY EXPTR 490 | BEQ APUPD 491 | HXUPDL JSR ERASE 492 | JSR WRITE 493 | LDY ,Y 494 | BNE HXUPDL 495 | APUPD LDY APPTR 496 | BEQ APUPDX 497 | APUPDL JSR AWRITE 498 | LDY ,Y 499 | BNE APUPDL 500 | APUPDX RTS 501 | 502 | REPEAT EQU $C0 503 | ENDLET EQU $A0 504 | ENDCOL EQU $90 505 | 506 | ON EQU $40 INDICATE COLOR IS ON 507 | ON2 EQU $20 COLOR 2 ON 508 | 509 | L2V FCB 23 1 510 | FCB 1+ON2 COLOR 2 511 | FCB ENDCOL 512 | 513 | FCB 13 2 514 | FCB 1+ON2 515 | FCB 8 516 | FCB 2+ON2 517 | FCB ENDCOL 518 | 519 | FCB 12 3 520 | FCB 2+ON2 521 | FCB 7 522 | FCB 1+ON2 523 | FCB 1+ON 524 | FCB 1+ON2 525 | FCB ENDCOL 526 | 527 | FCB 11 4 528 | FCB 1+ON2 529 | FCB 1+ON 530 | FCB 1+ON2 531 | FCB 6 532 | FCB 1+ON2 533 | FCB 2+ON 534 | FCB 1+ON2 535 | FCB ENDCOL 536 | 537 | FCB 10 5 538 | FCB 1+ON2 539 | FCB 2+ON 540 | FCB 1+ON2 541 | FCB 5 542 | FCB 1+ON2 543 | FCB 3+ON 544 | FCB 1+ON2 545 | FCB ENDCOL 546 | 547 | FCB 9 6 548 | FCB ON2+1 549 | FCB 3+ON 550 | FCB 1+ON2 551 | FCB 4 552 | FCB 1+ON2 553 | FCB 4+ON 554 | FCB 1+ON2 555 | FCB ENDCOL 556 | 557 | FCB 8 7 558 | FCB 1+ON2 559 | FCB 4+ON 560 | FCB 1+ON2 561 | FCB 3 562 | FCB 1+ON2 563 | FCB 5+ON 564 | FCB 1+ON2 565 | FCB ENDCOL 566 | 567 | FCB 8 8 568 | FCB 1+ON2 569 | FCB 4+ON 570 | FCB 1+ON2 571 | FCB 2 572 | FCB 1+ON2 573 | FCB 6+ON 574 | FCB 1+ON2 575 | FCB ENDCOL 576 | 577 | FCB 8 9 578 | FCB 1+ON2 579 | FCB 4+ON 580 | FCB 1+ON2 581 | FCB 1 582 | FCB 1+ON2 583 | FCB 3+ON 584 | FCB 1+ON2 585 | FCB 3+ON 586 | FCB 1+ON2 587 | FCB ENDCOL 588 | 589 | FCB 8 10 590 | FCB 1+ON2 591 | FCB 3+ON 592 | FCB 1+ON2 593 | FCB 1 594 | FCB 1+ON2 595 | FCB 3+ON 596 | FCB 2+ON2 597 | FCB 3+ON 598 | FCB 1+ON2 599 | FCB ENDCOL 600 | 601 | FCB 8 11 602 | FCB 1+ON2 603 | FCB 3+ON 604 | FCB 1+ON2 605 | FCB 1 606 | FCB 1+ON2 607 | FCB 2+ON 608 | FCB 1+ON2 609 | FCB 1 610 | FCB 1+ON2 611 | FCB 3+ON 612 | FCB 1+ON2 613 | FCB ENDCOL 614 | 615 | FCB REPEAT+4 12,13,14,15 616 | 617 | FCB 8 16 618 | FCB 1+ON2 619 | FCB 3+ON 620 | FCB 3+ON2 621 | FCB 2+ON 622 | FCB 1+ON2 623 | FCB 1 624 | FCB 1+ON2 625 | FCB 3+ON 626 | FCB 1+ON2 627 | FCB ENDCOL 628 | 629 | FCB 8 17 630 | FCB 1+ON2 631 | FCB 8+ON 632 | FCB 1+ON2 633 | FCB 1 634 | FCB 1+ON2 635 | FCB 3+ON 636 | FCB 1+ON2 637 | FCB ENDCOL 638 | 639 | FCB REPEAT+2 18,19 640 | 641 | FCB 8 20 642 | FCB 10+ON2 643 | FCB 1 644 | FCB 1+ON2 645 | FCB 3+ON 646 | FCB 1+ON2 647 | FCB ENDCOL 648 | 649 | FCB 18 21 650 | FCB 1+ON2 651 | FCB 4+ON 652 | FCB 1+ON2 653 | FCB ENDCOL 654 | 655 | FCB REPEAT+3 22,23,24 656 | 657 | FCB ENDLET END OF THE 2 (ROUGHLY) 658 | 659 | L0V FCB 11 1 660 | FCB 8+ON2 661 | FCB 4+ON 662 | FCB 1+ON2 663 | FCB ENDCOL 664 | 665 | FCB 10 2 666 | FCB 1+ON2 667 | FCB 10+ON 668 | FCB 3+ON2 669 | FCB ENDCOL 670 | 671 | FCB 9 3 672 | FCB 1+ON2 673 | FCB 11+ON 674 | FCB 1+ON2 675 | FCB ENDCOL 676 | 677 | FCB 8 4 678 | FCB 1+ON2 679 | FCB 13+ON 680 | FCB 1+ON2 681 | FCB ENDCOL 682 | 683 | FCB 7 5 684 | FCB 1+ON2 685 | FCB 4+ON 686 | FCB 7+ON2 687 | FCB 4+ON 688 | FCB 1+ON2 689 | FCB ENDCOL 690 | 691 | FCB 6 6 692 | FCB 1+ON2 693 | FCB 4+ON 694 | FCB 1+ON2 695 | FCB 7 696 | FCB 1+ON2 697 | FCB 4+ON 698 | FCB 1+ON2 699 | FCB ENDCOL 700 | 701 | FCB 5 7 702 | FCB 1+ON2 703 | FCB 4+ON 704 | FCB 1+ON2 705 | FCB 9 706 | FCB 1+ON2 707 | FCB 4+ON 708 | FCB 1+ON2 709 | FCB ENDCOL 710 | 711 | FCB 4 8 712 | FCB 1+ON2 713 | FCB 4+ON 714 | FCB 13+ON2 715 | FCB 4+ON 716 | FCB 1+ON2 717 | FCB ENDCOL 718 | 719 | FCB 3 9 720 | FCB 1+ON2 721 | FCB 23+ON 722 | FCB 1+ON2 723 | FCB ENDCOL 724 | 725 | FCB 2 10 726 | FCB 1+ON2 727 | FCB 25+ON 728 | FCB 1+ON2 729 | FCB ENDCOL 730 | 731 | FCB 1 11 732 | FCB 1+ON2 733 | FCB 27+ON 734 | FCB 1+ON2 735 | FCB ENDCOL 736 | 737 | FCB 31+ON2 12 738 | FCB ENDCOL 739 | 740 | FCB ENDLET 741 | -------------------------------------------------------------------------------- /RRLOG.ASM: -------------------------------------------------------------------------------- 1 | OPT NOL 2 | LIB RRFRED 3 | 4 | IFNC &A,NOL 5 | OPT LIS 6 | ENDIF 7 | 8 | WSTART EQU $183A 9 | 10 | RAPRAM EQU OLIST+(18*OSIZE) LEAVE 18 OBJECTS FOR APPEARS 11 | 12 | ORG 0 OFFSETS 13 | O1PT RMB 4 TOP OBJECT POINTER 14 | O2PT RMB 4 BOTTOM OBJECT POINTER 15 | APADD RMB 2 ADRESS TO EXPAND 16 | DATA1 RMB 14*11 DATA FOR FIRST OBJECT 17 | DATA2 RMB 13*11 DATA FOR SECOND OBJECT 18 | RAPSIZ EQU * 19 | 20 | ORG LOGORG 21 | 22 | JMP LOGGER 23 | FDB COLC 24 | 25 | LOGGER JSR GNCIDE 26 | CLR ATFLAG NO COIN SEEN YET 27 | MAKP CCHECK MONITOR CREDITS 28 | LDX #LOGG1 LOOK....UP IN THE SKY.... 29 | CLRA ITS A BIRD......ITS A PLANE....NO, 30 | JSR MSPROC ITS S U P E R P R O C E S S ! 31 | JMP SUCIDE AND DIE 32 | 33 | CCHECK LDA CREDIT 34 | STA PD,U 35 | CCHEK1 LDA CREDIT 36 | CMPA PD,U 37 | BEQ CCHEK2 38 | INC ATFLAG INDICATE IN COIN JUST INSERTED MODE 39 | JMP FAMPAG GO TO FAMILY PAGE FOR COIN 40 | CCHEK2 NAP 8,CCHEK1 41 | 42 | RMAK FDB LR,LO,LB,LO,LT,LR,LO,LN,LC,0 ROBOTRON POINTERS 43 | 44 | LOGG1 JSR SCRCLR 45 | JSR TABORG 46 | 47 | CLR ATFLAG NORMAL PATH INTO FAMILY PAGE...NO CREDS 48 | JMP FAMPAG AND DO THAT PAGE 49 | 50 | RUNIT CLR ATFLAG 51 | JSR GNCIDE 52 | JSR OINIT 53 | JSR SCRCLR 54 | MAKP CCHECK MONITOR CREDITS 55 | CLR PCRAM+$C ROBOTRON COLORS 56 | CLR PCRAM+$E 57 | 58 | NAP 3,RUNNME MAKE SURE THE PCRAM STUFF TAKES EFFECT 59 | 60 | RUNNME LDX #WSTART PLACE FOR UPPER LEFT OF LOGO 61 | STX PD+2,U 62 | 63 | LDX #RAPRAM RAM DATA AT 64 | LDY #RMAK 65 | 66 | RUNIT3 STY PD,U LETTER POINTER AT PD 67 | STX PD+4,U RAM POINTER AT PD+4 68 | 69 | NAP 1,RUNIT2 SLEEPY TIME 70 | 71 | RUNIT2 LDY PD+4,U GET DATA BLOCK 72 | LDD #$B0E 11 X 14 FOR TOP 73 | STD O1PT,Y 74 | LDB #13 11 X 13 FOR BOTTOM 75 | STD O2PT,Y 76 | LEAX DATA1,Y FIRST DATA POINTER 77 | STX O1PT+2,Y DATA POINTER 78 | LEAX DATA2,Y 79 | STX O2PT+2,Y 80 | LDX PD+2,U GET NEXT LETTER SCREEN POINTER 81 | STX APADD,Y AND SAVE FOR APPEAR 82 | 83 | LDY PD,U GET LETTER POINTER 84 | LDU ,Y GET NEXT LETTER 85 | BEQ WDONE DONE WRITING...TIME FOR BLASTOFF! 86 | 87 | CLRB NO FLAVOR PLEASE 88 | LDA #$CE COLORS 89 | PSHS X SAVE POINTER WE'RE USING 90 | JSR LETOUT PUT THE LETTER ON THE SCREEN 91 | LDU CRPROC RESTORE PROCESS BASE 92 | LEAX $200,X SPACER 93 | STX PD+2,U NEXT ONE 94 | 95 | PULS X PLACE WE WROTE IT 96 | 97 | LDY PD+4,U GET PLACE TO WRITE IT 98 | LEAY DATA1,Y POINT WHERE DATA GOES 99 | LDD #$B1B REAL FOR 11 BY 27 100 | JSR RWMOVE DO IT JACK! 101 | 102 | LDX PD+4,U GET RAM POINTER 103 | LEAX RAPSIZ,X 104 | 105 | LDY PD,U 106 | LEAY 2,Y 107 | BRA RUNIT3 108 | 109 | GETBAL PSHS A 110 | LDA FREEPL+1 SEE IF BALLS ALLOWED 111 | ANDA #$0F GET THE BYTE 112 | PULS A,PC 113 | 114 | * TIME TO STAGE THE APPEARS 115 | 116 | WDONE BSR GETBAL SEE IF FANCY 117 | BEQ NOBA11 118 | 119 | JSR SCRCLR CLEAR THE SCREEN 120 | 121 | NOBA11 LDA #$7 122 | STA PCRAM+$C RED 123 | 124 | LDA #$3F 125 | STA PCRAM+$E 126 | 127 | BSR GETBAL 128 | LBEQ LOGG2 NO APPEARS NECESSARY 129 | 130 | LDA STATUS 131 | ANDA #$FB 132 | STA STATUS 133 | 134 | LDU CRPROC 135 | 136 | LDY #RAPRAM POINT AT FIRST 137 | STY PD,U 138 | LDA #9 9 CHARS 139 | STA PD+2,U 140 | BRA WDONE1 NO EXTRA NAPPING! 141 | 142 | WDONE0 NAP 8,WDONE1 143 | 144 | WDONE1 LDY PD,U GET THE LETTER TO DO 145 | LDD APADD,Y GET THE ADDRESS OF TOP 146 | ADDB #13 147 | STB CENTMP+1 148 | SUBB #13 149 | LEAX O1PT,Y GET THE OBJECT 150 | 151 | JSR AMAP DO THE APPEAR 152 | 153 | ADDB #14 PULL TO THE TOP 154 | STB CENTMP+1 155 | 156 | LEAX O2PT,Y POINT AT SECOND OBJECT 157 | 158 | JSR AMAP 159 | 160 | LEAY RAPSIZ,Y FORM NEXT 161 | STY PD,U 162 | DEC PD+2,U 163 | BNE WDONE0 164 | NAP $20,LOGG2 LET THEM FINISH, THEN DO OTHER STUFF 165 | 166 | COLE LDA #$3F COLOR F IS YELLOW ALSO 167 | STA PCRAM+$F 168 | 169 | LDA #$7 170 | STA PCRAM+$D 171 | 172 | MAKP LFV MAKE THE LASER COLORER (COLOR A) 173 | 174 | LDY #L2084 POINTER TO THE STUFF 175 | CLRB 176 | LDX #$395C SCREEN PTR 177 | LDA #$FD YELLOW PRIMARY, RED TRIM 178 | COLE2 LDU [,Y++] 179 | BEQ COLLLE DONE! 180 | JSR LETOUT PUT IT OUT 181 | BRA COLE2 182 | 183 | COLLLE LDU ,Y++ 184 | BEQ COLE1 185 | JSR LETOUT 186 | BRA COLLLE 187 | 188 | COLE1 MAKP COLC 189 | 190 | LDX #CEPTR 191 | LDY #PCRAM+$E 192 | LDA #1 193 | 194 | COLENT LDU CRPROC 195 | STX PD+2,U 196 | STY PD+4,U 197 | STA PD+6,U 198 | 199 | COLE4 LDX PD+2,U 200 | STX PD,U 201 | 202 | COLE3 LDX PD,U 203 | LDA ,X+ 204 | BEQ COLE4 205 | 206 | STA [PD+4,U] 207 | STX PD,U 208 | LDA PD+6,U 209 | LDX #COLE3 210 | JMP SLEEP 211 | 212 | COLC LDA LSEED 213 | BPL COLC1 214 | 215 | LDA #7 RED ME 216 | STA PCRAM+$C 217 | JSR RAND 218 | ANDA #$7 3 BITS OF SLEEP 219 | INCA 220 | LDX #COLC1 221 | JMP SLEEP 222 | 223 | COLC1 LDA SEED HOW RANDOM DO I FEEL? 224 | ANDA #$3 225 | BEQ COLC11 NOT VERY 226 | 227 | CLR PCRAM+$C 228 | NAP 3,COLC11 229 | 230 | COLC11 LDX #COLTAB 231 | JSR RAND 232 | ANDA #$0F 233 | LDA A,X 234 | STA PCRAM+$C 235 | NAP 7,COLC2 236 | 237 | COLC2 LDA LSEED 238 | ANDA #$3 239 | BEQ COLC 240 | 241 | CLR PCRAM+$C 242 | NAP 4,COLC 243 | 244 | CEPTR FCB $3F,$3F,$3F,$37,$2F,$27,$1F,$17,$F,7,7,7 245 | FCB $F,$17,$1F,$27,$2F,$37,$3F,$3F,$3F,0 246 | 247 | COLTAB FCB $FF,$C0,$C7,$1F,$7 248 | FCB $07,$C0,$C7 249 | FCB $FF,$C0,$C7,$16,$7 250 | FCB $FF,$C0,$C7 251 | 252 | *OLTAB FCB $38,$FF,$3A,$3B,$3C 253 | *FCB $3D,$3E,$3F,$37,$2F,$27,$FF,$FF 254 | *FCB $FF,$47,$87,$87,$C7,$C7 255 | *FCB $C6,$C5,$CC,$CB,$CA,$DA,$E8,$F8 256 | *FCB $FA,$FB,$FD,$FF,$BF,$3F,$3E 257 | *FCB $3C,0 258 | 259 | HISTRY EQU * 260 | 261 | IFC &A,NOL 262 | 263 | OPT LIS 264 | LIB RRSCRIPT 265 | OPT NOL 266 | 267 | ELSE 268 | LIB RRSCRIPT 269 | 270 | ENDIF 271 | 272 | LOGG2 JSR OINIT REDO THE OBJECT STRUCTURE 273 | 274 | LDA STATUS CAN EXPLOSIONS NOW 275 | ORAA #4 276 | STA STATUS 277 | 278 | MAKP COLE COLOR E PROCESS NEEDED,(ALSO PUT OUT 2084) 279 | JSR CSET 280 | MAKP MESSER HANDLE OPERATOR MESSAGE THEN TAKE OVER 281 | 282 | JSR GETBAL SEE IF INHIBITED 283 | BNE DOBALL 284 | 285 | MAKP COL1 START THE WHITE PROCESS 286 | 287 | NAP $FF,NOBA22 288 | NOBA22 NAP $FF,HISTRY 289 | 290 | DOBALL JSR WILSUB SETUP FIRST WILL BALL 291 | LDA #28 WE'LL DO 28 AND THEN DIE 292 | LDU CRPROC 293 | STA PD,U COUNTER 294 | RUN1 LDX LASTX 295 | LDA BALCOL 296 | JSR BALOUT OUTPUT A BALL AT INITIAL PLACE 297 | JSR FORMX 298 | NAP 4,RUN2 299 | RUN2 DEC PD,U 300 | BNE RUN1 301 | JMP WILLME NOW SPIN EM' 302 | 303 | MESSER JSR ATMCK SEE IF OPERATOR MESSAGE IS INTACT 304 | BEQ MESS01 YEP 305 | LDX DOPMES GET THE DEFAULT MESSAGE 306 | LDY #MESOUT 52 BYTES WORTH 307 | MESS02 LDD ,X++ 308 | STD ,Y++ 309 | CMPY #MESOUT+52 310 | BLO MESS02 311 | BRA MESS03 312 | MESS01 LDX #OPMESS 313 | LDY #MESOUT 314 | MESS04 JSR RCMOSD GET 2 BYTES 315 | STD ,Y++ 316 | CMPY #MESOUT+52 317 | BLO MESS04 318 | MESS03 LDA MESOUT+50 GET X OF FIRST LINE 319 | LDB #$86 HEIGHT 320 | LDY #MESOUT FIRST CHAR 321 | BSR LINOUT PUT OUT A LINE 322 | LDA MESOUT+51 323 | LDB #$96 324 | LDY #MESOUT+25 325 | BSR LINOUT OUT LINE 2 326 | LDB CREDIT 327 | LDA #CPM1 COPYRIGHT ETC 328 | JSR WRD5V PUT IT OUT 329 | JMP SUCIDE WE'RE DONE..BYE 330 | 331 | LINOUT PULS X GET RETURN ADDR 332 | LDU CRPROC 333 | STX PD,U AND SAVE 334 | TFR D,X POINTER IN X PLEASE 335 | LDA #25 336 | STA PD+2,U NUMBER OF LETTERS TO OUTPUT 337 | LDA #$66 COLOR OF OPERATOR MESSAGE 338 | STA TEXCOL PUT IT AWAY 339 | LINO1 LDA ,Y+ GET A LETTER 340 | JSR PR57V PRINT IT 341 | STX PD+3,U 342 | STY PD+5,U 343 | NAP 2,LINO2 344 | LINO2 LDX PD+3,U 345 | LDY PD+5,U 346 | DEC PD+2,U 347 | BNE LINO1 348 | JMP [PD,U] 349 | 350 | FCC ' ROBOTRON: 2084 ' 351 | FCC ' COPYRIGHT 1982 WILLIAMS ELECTRONICS INC. ' 352 | FCC ' ALL RIGHTS RESERVED ' 353 | 354 | WILSUB JSR FINIT FIRST TWO LOCATIONS FOR INITIAL MOVE 355 | LDY #ARAM1 356 | LDA #$10 MOVE OUTER COLOR TO ARAM1 357 | BSR WMOVE DO IT 358 | JMP FINIT INIT THE DATABASE AND RETURN 359 | 360 | WILLME BSR WILSUB DO SETUP STUFF 361 | 362 | MAKP COL1 MAKE THE COLOR PROC 363 | 364 | LDU CRPROC 365 | LDX #$2C0 366 | STX PD+6,U SAVE 367 | 368 | LDA #6 369 | STA PD+4,U 370 | 371 | LDX LASTX 372 | LDA BALCOL 373 | BRA WILL55 374 | 375 | WILL1 LDA #6 376 | STA PD+4,U 377 | 378 | WILL44 JSR FORMX 379 | JSR XUPD UPDATE POINTER TO MAKE THIS STUPID BEAM RUN 380 | 381 | WILL55 LDY ERPTR GET HEIGHT OF GUY WE'RE GONNA ERASE 382 | LDB VERTCT IT MUST BE 10 LINES BEYOND US 383 | STB XTEMP KEEP IT HONEST 384 | CMPB 1,Y FIND WHICH SIDE ITS ON 385 | BLO WILL33 ITS ABOVE US! 386 | 387 | SUBB 1,Y ITS BELOW US, SUBTRACT US 388 | CMPB #20 389 | BLS WILL55 LOOP PLEASE 390 | LDB XTEMP GET THE COUNTER 391 | CMPB #$EC ARE WE REAL LOW?? 392 | BHS WILL55 THEN WE NEED TO LET IRQ IN TO CHANGE PCRAM 393 | BRA WILL66 394 | 395 | WILL33 LDB 1,Y GET THE Y VALUE 396 | CMPB #30 IS THE Y WE'RE TRYING TO PLOT HIGH?? 397 | BLS WILL55 THEN WAIT FOR BELOW US 398 | 399 | SUBB VERTCT ELSE FIND OUT HOW HIGH? 400 | CMPB #30 LETS SAY WE NEED 30 LINES TO DO IT 401 | BLS WILL55 402 | 403 | WILL66 JSR BALOFF TURN OFF THE BALL WE'RE ABOUT TO DO 404 | 405 | JSR BALOUT PUT OUT THE BALL AT THAT POINT 406 | 407 | LDU CRPROC 408 | DEC PD+4,U 409 | BNE WILL44 410 | 411 | LDX PD+6,U TIME LEFT 412 | LEAX -1,X 413 | LBEQ HISTRY START OVER 414 | STX PD+6,U 415 | 416 | NAP 1,WILL1 417 | 418 | WMOVE PSHS Y,A SAVE THE EVENTUAL TARGET 419 | LDX LASTX GET THE FIRST X FOR SETUP 420 | PULS A 421 | PSHS X SAVE THE X 422 | CLRB 423 | LDU #BILL 424 | JSR LETOUT NOW ITS ALLEGEDLY ON SCREEN 425 | 426 | PULS X,Y GET BACK X (SCREEN) Y (RAM) 427 | LDD #$E1B 14 X 28 IN REAL 428 | JMP RWMOVE DO THE XFER FROM PRIME REAL ESTATE AND RET 429 | 430 | X1 EQU $5 431 | X2 EQU $85 432 | Y1 EQU $F 433 | Y2 EQU $CF 434 | 435 | FINIT PSHS D,X 436 | LDA #X1 437 | LDB #Y1 438 | STD LASTX 439 | CLR SIDE SIDE 0 440 | CLR SLIDER 441 | LDA #$77 442 | STA BALCOL 443 | LDX #ERLIST 444 | STX ERPTR 445 | LDD #$13AF ERASE SCREEN CENTER ON FIRST PASS 446 | FINIT1 STD ,X++ 447 | CMPX #EREND WHOLE LIST?? 448 | BLO FINIT1 449 | PULS D,PC,X 450 | 451 | FORMX PSHS B 452 | LDA SIDE SIDE 0,1,2 OR 3?? 453 | ANDA #$3 LOW IS ALL THATS IMPORTANT 454 | DECA 455 | BMI SIDE0 456 | DECA 457 | BMI SIDE1 458 | DECA 459 | BMI SIDE2 460 | SIDE3 LDD LASTX 461 | SUBB #32 MOVE UP 1 462 | BCS BADSID 463 | CMPB #Y1 LOW Y?? 464 | BHI SIDEX DONE IF HIGH 465 | BADSID LDA SLIDER FIND SLIDE AMOUNT 466 | ADDA #2 2 UNITS PER 467 | CMPA #16 468 | BLO SLID1 469 | CLR SLIDER 470 | LDA #X1+16 471 | LDB #Y1 472 | BRA SIDCH 473 | SLID1 STA SLIDER 474 | LDB #Y1 475 | LDA #X1 476 | ADDA SLIDER SHIFT OVER BY SLIDER 477 | BRA SIDCH NEW SIDE! 478 | SIDE2 LDD LASTX 479 | SUBA #16 480 | BCS SIDE25 481 | CMPA #X1 482 | BHI SIDEX 483 | SIDE25 LDA #X1 484 | LDB SLIDER 485 | NEGB 486 | ASLB 487 | ADDB #Y2 HIGH Y 488 | BRA SIDCH 489 | SIDE1 LDD LASTX 490 | ADDB #32 491 | CMPB #Y2 492 | BLO SIDEX 493 | LDB #Y2 494 | LDA #X2 495 | SUBA SLIDER 496 | BRA SIDCH 497 | SIDE0 LDD LASTX 498 | ADDA #16 499 | CMPA #X2 500 | BLO SIDEX 501 | LDA #X2 502 | LDB SLIDER 503 | ASLB 504 | ADDB #Y1 505 | SIDCH INC SIDE CHANGE TO A NEW SIDE 506 | SIDEX STD LASTX SAVE THE X 507 | TFR D,X RETURN IN X 508 | LDA BALCOL RETURN OLD COLOR 509 | SUBA #$11 NEXT COLOR 510 | BCS SIDE8 511 | BNE SIDE7 512 | SIDE8 LDA #$77 513 | SIDE7 STA BALCOL 514 | PULS B,PC 515 | 516 | XUPD PSHS X 517 | LDX ERPTR GET CURRENT ERASE POSITION 518 | LEAX 2,X POINT TO NEXT 519 | CMPX #EREND DONE?? 520 | BLO BALOF1 IN RANGE 521 | LDX #ERLIST 522 | BALOF1 STX ERPTR PLACE 523 | PULS X,PC 524 | 525 | BALOFF PSHS X,D,CC 526 | LDX [ERPTR] GET ENTRY 32 AGO 527 | SEI 528 | STX DEST PLACE TO ERASE 529 | LDD #$A1F SIZE 530 | STD HORIZ 531 | CLR CONST 532 | LDD #ARAM1 SOURCE IS WILLY BALL 533 | STD ORIG 534 | LDA #$1E 535 | STA CONTRL 536 | PULS CC,X,D,PC 537 | 538 | BALOUT PSHS CC,A 539 | STX [ERPTR] SAVE THIS BALLS POS. FOR ERASE MUCH LATER 540 | SEI 541 | STA CONST COLOR 542 | STX DEST PLACE TO GO 543 | LDD #$A1F 544 | STD HORIZ SIZE ME 545 | LDD #ARAM1 HALO 546 | STD ORIG 547 | LDA #$1E SLOW SER TO BLK CONST ZWS 548 | STA CONTRL 549 | 550 | * LDD #ARAM2 W 551 | * STA ORIG 552 | 553 | * CLR CONST CLEAR THIS FRAME 554 | 555 | * LDA #$1E ZWS ETC 556 | * STA CONTRL 557 | PULS CC,A,PC 558 | 559 | CSET PSHS X,Y,A 560 | LDX #LCTAB USE LOGO COLOR TABLE FOR 1-7 561 | LDY #PCRAM+1 562 | COLLL LDA ,X+ 563 | STA ,Y+ 564 | CMPY #PCRAM+8 565 | BLO COLLL 566 | PULS X,Y,A,PC 567 | 568 | COL1 LDX #PCRAM+1 569 | STX PD+2,U 570 | COLL BSR CSET SET THE COLORS WE'LL USE 571 | COLL5 LDX PD+2,U GET WHITE POINTER 572 | LEAX 1,X KICK IT UP 573 | CMPX #PCRAM+8 574 | BLO COLL8 575 | LDX #PCRAM+1 576 | COLL8 STX PD+2,U 577 | LDA #$FF 578 | STA ,X 579 | NAP 3,COLL 580 | 581 | LCTAB FCB $7 RED 582 | FCB $C0 BLUE 583 | FCB $17 ORANGE-BROWN 584 | FCB $30 GREEN 585 | FCB $C7 VIOLET 586 | FCB $1F ORANGE 587 | FCB $3F YELLOW 588 | 589 | LIB RRLOGD 590 | 591 | END 592 | -------------------------------------------------------------------------------- /RRM1.ASM: -------------------------------------------------------------------------------- 1 | OPT NOL 2 | LIB RRF 3 | OPT LIS 4 | STTL LINKY MARQUEE EFFECT 5 | * 6 | *RAM AREA 7 | * 8 | ORG RMRAM 9 | UPPER RMB 1 10 | LOWER RMB 1 11 | LEFT RMB 1 12 | RIGHT RMB 1 13 | HFLAV RMB 1 14 | LFLAV RMB 1 15 | * 16 | *VECTORS 17 | * 18 | ORG RMORG 19 | JMP ENDWAV 20 | 21 | ENDWAV PULS D GET RETURN 22 | LDU CRPROC 23 | STD PD,U SAVE PROCESS GUY 24 | MAKP WCPROC START THE COLOR PROCESS 25 | 26 | LDA #$EF 27 | 28 | FR33 LDX #$3B80 UPPER LEFT AT STAT 29 | LDY #$5A82 LOWER RIGHT AT START 30 | 31 | FR22 STX PD+2,U 32 | STY PD+4,U 33 | STA PD+6,U 34 | 35 | NAP 1,FR11 THE SLEEPER 36 | 37 | FR11 LDX PD+2,U 38 | LDY PD+4,U 39 | LDA PD+6,U 40 | 41 | LDB #2 INTERATIONS UNTIL SLEEP 42 | STB PD+7,U COUNTER 43 | 44 | FR0 JSR MARQ 45 | TSTA 46 | BEQ FR1D IF ZERO...NO CHANGE 47 | CMPA #$12 48 | BNE FR1C 49 | LDA #$EF 50 | BRA FR1D 51 | FR1C CMPA #$F1 52 | BNE FR1B 53 | LDA #$DE 54 | BRA FR1D 55 | FR1B CMPA #$23 STUPID O1 56 | BNE FR1A 57 | LDA #$F1 58 | BRA FR1D 59 | FR1A SUBA #$22 60 | FR1D CMPX #$616 DID WE JUST DO CENTER 61 | BEQ FR2 YEP 62 | LEAX -$102,X 63 | LEAY $102,Y 64 | DEC PD+7,U 65 | BNE FR0 66 | BRA FR22 SLEEP TIME 67 | 68 | * LDB TIMER SEE IF WE ARE WANTED?? 69 | * BNE FR22 TAKE A NAP 70 | * BRA FR0 GET ANOTHER FRAME IN 71 | 72 | FR2 TSTA DONE?? 73 | BEQ SUCTIM 74 | CLRA 75 | BRA FR33 AND JUST CLEAR 'EM OUT 76 | 77 | SUCTIM JMP [PD,U] RETURN! 78 | 79 | TABTAB FDB DECTAB,$1F00 PRIMRIES TO SECONDARIES 80 | FDB DECT1,$3F00 PRI - SEC - WHITE 81 | FDB DECT2,$3F00 82 | FDB BRTTAB,$F00 83 | FDB DCATAB,$F00 84 | FDB BPRTAB,$F00 85 | FDB GYRTAB,$F00 86 | FDB BFTAB,$1F00 87 | FDB CLLTAB,$1F00 88 | FDB LOGTAB,$F00 89 | FDB BFTAB2,$1F00 90 | FDB DECTB4,$1F00 91 | 92 | BRTTAB FCB 1,2,3,4,5,6,7,$F,$17,$1F,$2D,$34 93 | FCB $3A,$7A,$BA,$FA,$F8,$F0,$E0,$D0,$C0,$C0 94 | FCB 0,0 95 | 96 | DCATAB FCB $C0,$C0,$D0,$E0,$F0,$F8,$FA,$BA,$7A,$3A 97 | FCB $34,$2D,$1F,$17,$F,7,6,5,4,3,2,1,0,0 98 | 99 | BPRTAB FCB $C0,$C1,$C2,$C3,$C4,$C5,$C6,$C7,$87,$87,$47,$47 100 | FCB $07,$07,$47,$47,$87,$87,$C7,$C7,$C6,$C5,$C4,$C3 101 | FCB $C2,$C1,0,0 102 | 103 | GYRTAB FCB $38,$38,$31,$3A,$3B,$3C,$2D,$2E,$2F,$27 104 | FCB $1F,$17,$17,$0F,$07,$07,$0F,$17,$17,$1F,$27,$2F 105 | FCB $2E,$2D,$2C,$3B,$3A,$39,0,0 106 | 107 | BFTAB2 FCB $38,$39,$3A,$3B,$3C 108 | FCB $3D,$3E,$3F,$37,$2F,$27,$17,$0F 109 | FCB $07,$06,$05,$04,$03,$02 110 | FCB $01,$01,$01,$49,$CA,$DA,$E8,$F8 111 | FCB $F9,$FA,$FB,$FD,$FF,$BF,$3F,$3E 112 | FCB $C0,$C0,$C0,$07,$07,$38,$38,$38 113 | FCB $07,$C0,$38,$FF,$FF 114 | FCB 0,0 115 | 116 | BFTAB FCB $38,$39,$3A,$3B,$3C 117 | FCB $3D,$3E,$3F,$37,$2F,$27,$1F,$17 118 | FCB $47,$47,$87,$87,$C7,$C7 119 | FCB $C6,$C5,$CC,$CB,$CA,$DA,$E8,$F8 120 | FCB $F9,$FA,$FB,$FD,$FF,$BF,$3F,$3E 121 | FCB $C0,$C0,$C0,$07,$07,$38,$38,$38 122 | FCB $07,$C0,$38,$FF,$FF 123 | FCB 0,0 124 | 125 | CLLTAB FCB $38,$39,$3A,$3B,$3C 126 | FCB $3D,$3E,$3F,$37,$2F,$27,$1F,$17 127 | FCB $47,$47,$87,$87,$C7,$C7 128 | FCB $C6,$C5,$CC,$CB,$CA,$DA,$E8,$F8 129 | FCB $F9,$FA,$FB,$FD,$FF,$BF,$3F,$3E 130 | FCB $3C 131 | FCB 0,0 132 | 133 | LOGTAB FCB $37,$2F,$27,$1F,$17,$47,$47,$87 134 | FCB $87,$C7,$C7,$C6,$C5,$CC,$CB,$CA 135 | FCB $C0,$D0,$98,$38,$33 136 | FCB 0,0 137 | 138 | DECT2 FCB $07,$0F,$17,$1F,$27,$2F,$37,$3F 139 | FCB $3F,$7F,$7F,$BF,$BF,$FF,$FF,$FF,$BF,$BF 140 | FCB $7F,$7F,$3F,$3F 141 | FCB $3E,$3D,$3C,$3B,$3A,$39,$38,$38 142 | FCB $30,$28,$20,$08,$08,$49 143 | FCB $52,$A5,$FB,$FC,$FD,$FE,$FF,$FF 144 | FCB $FE,$FD,$FC,$FB,$FA,$F9,$F8 145 | FCB $F0,$E8 146 | FCB $E0,$D8,$D0,$C8,$C0,$80,$40,$01 147 | FCB $01,$01,$01,$02,$03 148 | FCB $04,$05,$06,$4F,$EF,$F7,$FF,$FF 149 | FCB $F7,$EF,$E7,$DF,$D7,$CF,$C7 150 | FCB $87,$87,$47 151 | FCB $47,$7,0,0 152 | 153 | DECT1 FCB $07,$0F,$17,$1F,$27,$2F,$37,$3F 154 | FCB $3F,$7F,$7F,$BF,$BF,$FF,$FF,$FF,$BF,$BF 155 | FCB $7F,$7F,$3F,$3F 156 | FCB $3E,$3D,$3C,$3B,$3A,$39,$38,$38 157 | FCB $78,$78,$B8,$B8,$F8,$F8 158 | FCB $F9,$FA,$FB,$FC,$FD,$FE,$FF,$FF 159 | FCB $FE,$FD,$FC,$FB,$FA,$F9,$F8 160 | FCB $F0,$E8 161 | FCB $E0,$D8,$D0,$C8,$C0,$C1,$C2,$C3 162 | FCB $C4,$C5,$C6,$C7,$C7 163 | FCB $CF,$D7,$DF,$E7,$EF,$F7,$FF,$FF 164 | FCB $F7,$EF,$E7,$DF,$D7,$CF,$C7 165 | FCB $87,$87,$47 166 | FCB $47,$7,0,0 167 | 168 | DECTB4 FCB $07,$0F,$17,$1F,$27,$2F,$37,$3F 169 | FCB $3E,$3D,$3C,$3B,$3A,$39,$38,$38 170 | FCB $78,$78,$B8,$B8,$F8,$F8,$F0,$E8 171 | FCB $E0,$D8,$D0,$C8,$C0,$80,$41,$01 172 | FCB $01,$02,$03,$04,$05,$06,$07,$07 173 | FCB $07,$7,0,0 174 | 175 | DECTAB FCB $07,$0F,$17,$1F,$27,$2F,$37,$3F 176 | FCB $3E,$3D,$3C,$3B,$3A,$39,$38,$38 177 | FCB $78,$78,$B8,$B8,$F8,$F8,$F0,$E8 178 | FCB $E0,$D8,$D0,$C8,$C0,$C1,$C2,$C3 179 | FCB $C4,$C5,$C6,$C7,$C7,$87,$87,$47 180 | FCB $47,$7,0,0 181 | 182 | WCPROC LDY #TABTAB 183 | PCCALL JSR RAND GET 184 | ANDA #$F LOOK AT LOW 185 | CMPA #12 0-11 PLEASE 186 | BHS PCCALL 187 | ASLA 188 | ASLA 4 PER 189 | TFR A,B 190 | LDX B,Y GET THE POINTER 191 | ADDB #2 POINT AT MASK 192 | JSR RAND 193 | ANDA B,Y MASK IT 194 | STX PD,U SAVE START 195 | LEAX A,X 196 | STX PD+2,U SAVE IT 197 | 198 | PCSUB LDX PD+2,U GET THE POINTER INTO OUR THING 199 | LEAX 1,X 200 | TST ,X END OF LIST 201 | BNE PCCS1 202 | LDX PD,U START OVER 203 | PCCS1 STX PD+2,U MOVE TO NEXT 204 | 205 | RCS1 LDY #PCRAM+1 FOR COLOR MATRIX 206 | RCS3 LDA ,X+ GET A BYTE 207 | BNE RCS2 208 | LDX PD,U START TABLE OVER 209 | BRA RCS3 210 | RCS2 STA ,Y+ STORE IT 211 | CMPY #PCRAM+16 212 | BLO RCS3 AND LOOP 213 | 214 | LDB #$00 MOVING BLACK 215 | LDA PD+4,U 216 | DECA 217 | CMPA #$5 218 | BLO PCS7 219 | LDA #4 220 | PCS7 STA PD+4,U OFFSETTER 221 | LDX #PCRAM+1 222 | PCS4 STB A,X 223 | LEAX 5,X 224 | CMPX #PCRAM+16 225 | BLO PCS4 226 | NAP 1,PCSUB 227 | 228 | * MARQ - DRAW A LINKY MARQUIS. PASS UPPER LEFT IN X. 229 | * PASS LOWER RIGHT IN Y. 230 | * RANGES ARE INCLUSIVE. LOWER-UPPER MUST BE EVEN (ODD INCLUSIVE) 231 | * A CONTAINS THE HIGH AND LOW FLAVOR COLORS () 232 | 233 | MARQ PSHS X,Y,D,U 234 | ANDA #$F0 235 | STA HFLAV SAVE FLAVOR COLORS 236 | LDA ,S 237 | ANDA #$0F 238 | STA LFLAV 239 | TFR X,D 240 | STA LEFT 241 | STB UPPER 242 | TFR Y,D 243 | STA RIGHT 244 | STB LOWER 245 | SUBB UPPER LOWER-UPPER ODD??? 246 | RORB CHECK 247 | BCC MARQ1 NOPE 248 | DEC LOWER NOT THAT LOW...OK? 249 | 250 | MARQ1 JSR GHIGH GET HIGH DUPED BYTE IN B 251 | LDA UPPER GET THE UPPER 252 | JSR HHIGH HIGH PART OF TOP DMASIZONTAL LINE 253 | INCA 254 | JSR GLOW 255 | BSR HLOW LOW PART 256 | * 257 | LDA LOWER 258 | JSR GHIGH 259 | BSR HHIGH 1 LESS FOR GEN PURP 260 | DECA 261 | JSR GLOW 262 | BSR HLOW 263 | * 264 | LDA LEFT LEFT BYTE 265 | JSR GNORM 266 | BSR VHIGH HIGH FLAVOR STUFF IN A VERT LINE 267 | * 268 | LDA RIGHT 269 | JSR GFLIP 270 | BSR VHIGH 271 | 272 | MAR11 PULS U,D,X,Y,PC 273 | 274 | * VHIGH - PLOT VERTICAL LINE FROM [UPPER TO LOWER] 275 | * CONSISTING OF EVERY OTHER BYTE GETTING THE HIGH NIBBLE COLOR 276 | * A HAS THE X TO USE 277 | 278 | VHIGH PSHS D,X,CC 279 | BSR SETUPV SETUP X,B 280 | SEI 281 | STA DMACON STORE CONSTANT 282 | LDA #5 1 WIDE, B HIGH 283 | EORB #4 284 | STD DMASIZ 285 | LDD #0 286 | STD DMAORG FROM NOWHERE 287 | STX DMADES DESTINATION PEGGED 288 | LDA #$12 WRITE THE DMACONANT LINES 289 | STA DMACTL 290 | PULS CC,D,X,PC 291 | 292 | SETUPV PSHS B 293 | LDB UPPER GET UPPER Y 294 | INCB START 1 AFTER 295 | TFR D,X THIS IS PONTER 296 | LDB LOWER 297 | SUBB UPPER THIS IS GUARANTEED EVEN 298 | DECB EXCLUSIVE PLEASE 299 | PULS A,PC 300 | 301 | * HHIGH - THIS ROUTINE PLOTS HIGH COLOR IN THE HIGH HALF OF 302 | * CONSECUTIVE DMASIZONTAL PIXELS GOING FROM 303 | * [LEFT TO RIGHT] AT THE HEIGHT GIVEN IN REGISTER A. 304 | 305 | HHIGH PSHS X,D,CC 306 | BSR SETUPH SETUP COUNT IN B, X POINTS AT FIRST BYTE 307 | INCB ADD 1 TO MAKE IT INCLUSIVE 308 | HHIGH1 SEI 309 | STA DMACON STORE THE CONSTANT 310 | EORB #4 311 | STB DMASIZ 312 | LDA #5 313 | STA DMASIZ+1 1 HIGH 314 | STD DMAORG GOOD ORIGINATION 315 | STX DMADES 316 | LDA #$12 317 | STA DMACTL 318 | PULS X,D,PC,CC 319 | 320 | HLOW PSHS X,D,CC 321 | BSR SETUPH SETUP 322 | DECB EXCLUSIVE 323 | LEAX $100,X MOVE OVER 1 324 | BRA HHIGH1 AND GO 325 | 326 | SETUPH PSHS B SAVE COLOR 327 | TFR A,B MOVE Y OVER 328 | LDA LEFT GET LEFT X 329 | TFR D,X MAKE POINTER 330 | LDB RIGHT 331 | SUBB LEFT FIND DIFFERENCE (EXCLUSIVE 332 | PULS A,PC AND RETURN 333 | 334 | GHIGH LDB HFLAV GET HIGH FLAVOR 335 | LSRB 336 | LSRB 337 | LSRB 338 | LSRB 339 | ORAB HFLAV HIGH FLAVOR IN BOTH 340 | RTS 341 | 342 | GLOW LDB LFLAV 343 | ASLB 344 | ASLB 345 | ASLB 346 | ASLB 347 | ORAB LFLAV 348 | RTS 349 | 350 | GNORM LDB HFLAV 351 | ORAB LFLAV 352 | RTS 353 | 354 | GFLIP LDB HFLAV 355 | LSRB 356 | LSRB 357 | LSRB 358 | LSRB 359 | PSHS B 360 | LDB LFLAV 361 | ASLB 362 | ASLB 363 | ASLB 364 | ASLB 365 | ORAB ,S+ 366 | RTS 367 | 368 | END 369 | -------------------------------------------------------------------------------- /RRP8.ASM: -------------------------------------------------------------------------------- 1 | OPT NOL 2 | LIB RRF 3 | OPT LIS 4 | STTL ROBOTS AND POSTS 5 | ORG RPORG 6 | JMP RINITV 7 | JMP PSINV 8 | FDB PSTP1V 9 | JMP OPONV 10 | JMP OPON1V 11 | JMP SAFTYV 12 | FDB RWDP1 13 | FDB PSTP1V 14 | JMP PKPROC 15 | * 16 | *SOUND TABLE 17 | * 18 | RBSND FCB $D0,$01,$0C,$14,$01,$08,$17,0 ROBOT HIT 19 | RMVSND FCB $C0,$01,$0A,$06,0 ROBOT MOVE 20 | PSKSND FCB $D0,$01,$08,$17,0 POST KILL 21 | * 22 | *INITIALIZE ROBOTS 23 | * 24 | RINITV LDA ROBCNT 25 | PSHS A 26 | BEQ RINX 27 | RINL JSR GETROB 28 | LDD #RWDP1 29 | STD OPICT,X 30 | STD OLDPIC,X 31 | BSR SAFTY 32 | RINL0 JSR RANDXY 33 | CMPB XTEMP 34 | BLS RINL1 35 | CMPB XTEMP+1 36 | BHS RINL1 37 | CMPA XTEMP2 38 | BLS RINL1 39 | CMPA XTEMP2+1 40 | BLO RINL0 41 | RINL1 STD OBJX,X 42 | STA OX16,X 43 | STB OY16,X 44 | TFR D,U 45 | LDD [OPICT,X] 46 | JSR ASCAN 47 | BNE RINL0 48 | LDA ROBSPD 49 | JSR RANDU 50 | STA ODATA,X 51 | LDD #ROBKIL 52 | STD OCVECT,X 53 | BSR OPON1 TURN HIM ON WITH PHONY COLOR 54 | DEC ,S 55 | BNE RINL 56 | STX ROBST SAVE START OF LIST 57 | MAKP ROBOT 58 | RINX PULS A,PC 59 | * 60 | *GRUNT SAFTY MARGIN 61 | * 62 | SAFTYV PSHS X,U,D 63 | JSR PLINDX 64 | LDA PWAV,X 65 | CMPA #10 66 | BLO SAF0 67 | LDA #6 68 | BRA SAF1 69 | SAF0 CMPA #5 70 | BLS SAF1 71 | LDA #5 72 | SAF1 LDX #SAFTAB-4 73 | ASLA 74 | ASLA 75 | LEAX A,X 76 | LDD ,X 77 | STD XTEMP SET UP LIMITS 78 | LDD 2,X 79 | STD XTEMP2 80 | PULS D,X,U,PC 81 | SAFTAB FCB $40,$B0,$1A,$7A 82 | FCB $48,$A8,$1A,$7A 83 | FCB $50,$A0,$2A,$6A 84 | FCB $54,$9D,$30,$60 85 | FCB $5D,$96,$35,$59 86 | FCB $62,$94,$38,$5C 87 | * 88 | *ON PICTURE OF OBJECT 89 | *X=OBJ, A=COL 90 | OPON1V PSHS D,Y 91 | LDA #FONCOL 92 | BRA OPON2 93 | OPONV PSHS D,Y 94 | OPON2 STA XTEMP2 95 | LDD OBJX,X 96 | LDY OPICT,X 97 | JSR MPCTON 98 | PULS D,Y,PC 99 | * 100 | *INITIALIZE POSTS 101 | * 102 | PSINV PSHS X,Y,U 103 | LDX #PSLIST 104 | STX PSTIN 105 | LEAY ,X 106 | PSI00 CLR ,X+ 107 | CMPX #PSLEND 108 | BLO PSI00 109 | LDA PSTCNT 110 | PSHS A 111 | BEQ PSIX 112 | PSIL JSR GETPST 113 | LDD PSTANI 114 | STD OPICT,X 115 | STD OLDPIC,X 116 | BSR SAFTYV 117 | LDD XTEMP 118 | ADDD #$03FC ADJUST BOUNDS 119 | STD XTEMP 120 | LDD XTEMP2 121 | ADDD #$02FD 122 | STD XTEMP2 123 | PSI0 JSR RANDXY 124 | CMPB XTEMP 125 | BLS PSI1 126 | CMPB XTEMP+1 127 | BHS PSI1 128 | CMPA XTEMP2 129 | BLS PSI1 130 | CMPA XTEMP2+1 131 | BLO PSI0 132 | PSI1 STD OBJX,X 133 | STA OX16,X 134 | STB OY16,X 135 | LDU OBJX,X 136 | LDD [OPICT,X] 137 | JSR ASCAN 138 | BNE PSI0 139 | LDD #PSTKIL 140 | STD OCVECT,X 141 | STY OBJID,X SAVE REF POINTER FOR KILL 142 | LEAY 2,Y 143 | JSR OPON1 ON MONO PHONY 144 | DEC ,S 145 | BNE PSIL 146 | PSIX PULS A,X,Y,U,PC 147 | * 148 | *ROBOT PROCESS 149 | * 150 | ROBOT LDA STATUS 151 | BITA #$7F 152 | BEQ ROB0A 153 | NAP 2,ROBOT 154 | ROB0A NAP 10,ROB0 155 | ROB0 CLRB 156 | LDA ROBCNT 157 | PSHS D 158 | BEQ ROBXXX 159 | LDX ROBST 160 | BRA ROB1A 161 | ROB1 LDX ,X 162 | ROB1A DEC ODATA,X TIME TO MOVE? 163 | BEQ ROB1B 164 | DEC ,S 165 | BNE ROB1 166 | ROBXXX BRA ROBX ALL DONE 167 | ROB1B LDA ROBSPD 168 | JSR RANDU 169 | STA ODATA,X 170 | LDB OY16,X 171 | SUBB PY16 SEEK PLAYER 172 | BHI ROB2 173 | CMPB #$FE 174 | BHI ROB3 175 | LDB #4 176 | BRA ROB2A 177 | ROB2 CMPB #2 178 | BLO ROB3 179 | LDB #-4 180 | ROB2A ADDB OY16,X 181 | CMPB #YMAX-12 182 | BHI ROB3 183 | CMPB #YMIN 184 | BLO ROB3 185 | STB OY16,X 186 | ROB3 LDB OX16,X 187 | SUBB PX16 188 | BHI ROB4 189 | LDB #2 190 | BRA ROB4A 191 | ROB4 CMPB #1 192 | BLO ROB5 193 | LDB #-2 194 | ROB4A ADDB OX16,X 195 | CMPB #XMAX-5 196 | BHI ROB5 197 | CMPB #XMIN 198 | BLO ROB5 199 | STB OX16,X 200 | ROB5 LDD OPICT,X 201 | ADDD #4 202 | CMPD #RWDP4 203 | BLS ROB11 204 | LDD #RWDP1 205 | ROB11 STD OPICT,X 206 | JSR DMAOFN 207 | INC 1,S MAKE A SOUND 208 | LDU OPICT,X 209 | LDD OBJX,X 210 | PSHS X 211 | LDX #PPTR 212 | JSR COL0 213 | PULS X 214 | BEQ ROBLP 215 | LDY ,X 216 | BSR ROBKIL 217 | DEC ,S 218 | BEQ ROBX ALL DONE 219 | LEAX ,Y 220 | JMP ROB1A 221 | ROBLP DEC ,S 222 | LBNE ROB1 223 | ROBX LDD ,S++ 224 | BEQ ROBXX NO SOUND NEEDED 225 | LDD #RMVSND 226 | JSR SNDLD 227 | ROBXX NAP 4,ROB0 228 | *KILL ROBOT 229 | ROBKIL LDA PCFLG DONT BLOW ON PLAYER 230 | BNE ROBKON 231 | JSR EXST BLOW HIM UP!!!! 232 | CMPX ROBST CHECK FOR START CHANGE 233 | BNE ROBK0 234 | LDD ,X 235 | STD ROBST 236 | ROBK0 JSR KILROB 237 | LDD #$0110 238 | JSR SCORE 239 | LDD #RBSND 240 | JSR SNDLD 241 | LDB #$E0 SPEED EM UP 242 | LDA ROBSPD 243 | MUL 244 | CMPA RMXSPD 245 | BLO ROBK1 246 | STA ROBSPD 247 | ROBK1 DEC ROBCNT 248 | ROBKX RTS 249 | ROBKON JMP DMAON ON GRUNT...SEE WHAT YOU HIT 250 | *KILL POST 251 | PSTKIL LDA PCFLG 252 | BNE PSTKON 253 | JSR KILPST 254 | LDD #0 255 | STD [OBJID,X] WIPE OUT REFRESH 256 | JSR DMAOFF 257 | DEC PSTCNT 258 | LDD FREE 259 | BEQ PSTKX OUT OF PROCS 260 | LEAU ,X 261 | LDX ,X 262 | STX OFREE 263 | MAKP PKPROC 264 | STU PD,X 265 | LDD #PSKSND 266 | JMP SNDLD 267 | PSTKX RTS 268 | PSTKON LDA PSTCOL 269 | JMP OPON TURN HIM ON 270 | * 271 | *POST KILL PROCESS 272 | * 273 | PKPROC LDX PD,U 274 | LDY OPICT,X 275 | BRA PKPR2 276 | PKPR1 LDX PD,U 277 | LDY OPICT,X 278 | LEAY 5,Y 279 | LDA ,Y 280 | BNE PKPR2 281 | JSR DMAOFF ITS ALL OVER.... 282 | LDD OFREE 283 | STD ,X 284 | STX OFREE 285 | JMP SUCIDE 286 | PKPR2 STY OPICT,X 287 | JSR DMAOFN 288 | LDA 4,Y SLEEP TIME VARIABLE SLEEP 289 | LDX #PKPR1 290 | JMP SLEEP 291 | * 292 | *POST IMAGES 293 | * 294 | PSTP1V EQU * 295 | *STAR 296 | PSP1A FCB 5,9 W,H 297 | FDB PSD1A DATA ADDR 298 | FCB 6 SLEEP TIME 299 | PSP2A FCB 5,9 300 | FDB PSD2A 301 | FCB 3 302 | PSP3A FCB 5,9 303 | FDB PSD3A 304 | FCB 2,0 END OF SEQUENCE 305 | *SNOWFLAKE 306 | PSP1B FCB 5,9 W,H 307 | FDB PSD1B DATA ADDR 308 | FCB 6 SLEEP TIME 309 | PSP2B FCB 5,9 310 | FDB PSD2B 311 | FCB 3 312 | PSP3B FCB 5,9 313 | FDB PSD3B 314 | FCB 2,0 END OF SEQUENCE 315 | *SQUARE 316 | PSP1C FCB 5,9 W,H 317 | FDB PSD1C DATA ADDR 318 | FCB 6 SLEEP TIME 319 | PSP2C FCB 5,9 320 | FDB PSD2C 321 | FCB 3 322 | PSP3C FCB 5,9 323 | FDB PSD3C 324 | FCB 2,0 END OF SEQUENCE 325 | *TRIANGLE 326 | PSP1D FCB 5,9 W,H 327 | FDB PSD1D DATA ADDR 328 | FCB 6 SLEEP TIME 329 | PSP2D FCB 5,9 330 | FDB PSD2D 331 | FCB 3 332 | PSP3D FCB 5,9 333 | FDB PSD3D 334 | FCB 2,0 END OF SEQUENCE 335 | *VERT. BAR 336 | PSP1E FCB 3,9 W,H 337 | FDB PSD1E DATA ADDR 338 | FCB 6 SLEEP TIME 339 | PSP2E FCB 3,9 340 | FDB PSD2E 341 | FCB 3 342 | PSP3E FCB 3,9 343 | FDB PSD3E 344 | FCB 2,0 END OF SEQUENCE 345 | *DIAMOND 346 | PSP1F FCB 5,9 W,H 347 | FDB PSD1F DATA ADDR 348 | FCB 6 SLEEP TIME 349 | PSP2F FCB 5,9 350 | FDB PSD2F 351 | FCB 3 352 | PSP3F FCB 5,9 353 | FDB PSD3F 354 | FCB 2,0 END OF SEQUENCE 355 | *2084 POST 356 | PSP1G FCB 9,7 357 | FDB PSD1G 358 | FCB 6 359 | PSP2G FCB 9,7 360 | FDB PSD2G 361 | FCB 3 362 | PSP3G FCB 9,7 363 | FDB PSD3G 364 | FCB 2,0 365 | *SPIKE 366 | PSP1H FCB 5,9 367 | FDB PSD1H 368 | FCB 6 369 | PSP2H FCB 5,9 370 | FDB PSD2H 371 | FCB 3 372 | PSP3H FCB 5,9 373 | FDB PSD3H 374 | FCB 2,0 375 | *SPIRAL 376 | PSP1I FCB 5,10 377 | FDB PSD1I 378 | FCB 6 379 | PSP2I FCB 5,10 380 | FDB PSD2I 381 | FCB 3 382 | PSP3I FCB 5,10 383 | FDB PSD3I 384 | FCB 2,0 385 | 386 | IFC &A,NOL 387 | OPT NOL 388 | ENDIF 389 | *STAR PICTS 390 | PSD1A EQU * 391 | FCB $00,$00,$90,$00,$00 392 | FCB $09,$00,$90,$09,$00 393 | FCB $00,$90,$90,$90,$00 394 | FCB $00,$09,$99,$00,$00 395 | FCB $99,$99,$99,$99,$90 396 | FCB $00,$09,$99,$00,$00 397 | FCB $00,$90,$90,$90,$00 398 | FCB $09,$00,$90,$09,$00 399 | FCB $00,$00,$90,$00,$00 400 | PSD2A EQU * 401 | FCB $00,$00,$00,$00,$00 402 | FCB $00,$00,$A0,$00,$00 403 | FCB $00,$A0,$A0,$A0,$00 404 | FCB $00,$0A,$AA,$00,$00 405 | FCB $0A,$AA,$AA,$AA,$00 406 | FCB $00,$0A,$AA,$00,$00 407 | FCB $00,$A0,$A0,$A0,$00 408 | FCB $00,$00,$A0,$00,$00 409 | FCB $00,$00,$00,$00,$00 410 | PSD3A EQU * 411 | FCB $00,$00,$00,$00,$00 412 | FCB $00,$00,$00,$00,$00 413 | FCB $00,$00,$00,$00,$00 414 | FCB $00,$00,$A0,$00,$00 415 | FCB $00,$0A,$AA,$00,$00 416 | FCB $00,$00,$A0,$00,$00 417 | FCB $00,$00,$00,$00,$00 418 | FCB $00,$00,$00,$00,$00 419 | FCB $00,$00,$00,$00,$00 420 | *SNOWFLAKE PICTS 421 | PSD1B EQU * 422 | FCB $00,$00,$90,$00,$00 423 | FCB $09,$09,$09,$09,$00 424 | FCB $00,$90,$90,$90,$00 425 | FCB $09,$09,$09,$09,$00 426 | FCB $90,$90,$00,$90,$90 427 | FCB $09,$09,$09,$09,$00 428 | FCB $00,$90,$90,$90,$00 429 | FCB $09,$09,$09,$09,$00 430 | FCB $00,$00,$90,$00,$00 431 | PSD2B EQU * 432 | FCB $00,$00,$00,$00,$00 433 | FCB $00,$00,$A0,$00,$00 434 | FCB $00,$0A,$0A,$00,$00 435 | FCB $00,$A0,$A0,$A0,$00 436 | FCB $0A,$0A,$0A,$0A,$00 437 | FCB $00,$A0,$A0,$A0,$00 438 | FCB $00,$0A,$0A,$00,$00 439 | FCB $00,$00,$A0,$00,$00 440 | FCB $00,$00,$00,$00,$00 441 | PSD3B EQU * 442 | FCB $00,$00,$00,$00,$00 443 | FCB $00,$00,$00,$00,$00 444 | FCB $00,$00,$00,$00,$00 445 | FCB $00,$00,$A0,$00,$00 446 | FCB $00,$0A,$AA,$00,$00 447 | FCB $00,$00,$A0,$00,$00 448 | FCB $00,$00,$00,$00,$00 449 | FCB $00,$00,$00,$00,$00 450 | FCB $00,$00,$00,$00,$00 451 | *SQUARE PICTS 452 | PSD1C EQU * 453 | FCB $99,$99,$99,$99,$90 454 | FCB $99,$99,$99,$99,$90 455 | FCB $99,$99,$99,$99,$90 456 | FCB $99,$99,$99,$99,$90 457 | FCB $99,$99,$99,$99,$90 458 | FCB $99,$99,$99,$99,$90 459 | FCB $99,$99,$99,$99,$90 460 | FCB $99,$99,$99,$99,$90 461 | FCB $99,$99,$99,$99,$90 462 | PSD2C EQU * 463 | FCB $00,$00,$00,$00,$00 464 | FCB $0A,$AA,$AA,$AA,$00 465 | FCB $0A,$AA,$AA,$AA,$00 466 | FCB $0A,$AA,$AA,$AA,$00 467 | FCB $0A,$AA,$AA,$AA,$00 468 | FCB $0A,$AA,$AA,$AA,$00 469 | FCB $0A,$AA,$AA,$AA,$00 470 | FCB $0A,$AA,$AA,$AA,$00 471 | FCB $00,$00,$00,$00,$00 472 | PSD3C EQU * 473 | FCB $00,$00,$00,$00,$00 474 | FCB $00,$00,$00,$00,$00 475 | FCB $00,$00,$00,$00,$00 476 | FCB $00,$0A,$AA,$00,$00 477 | FCB $00,$0A,$AA,$00,$00 478 | FCB $00,$0A,$AA,$00,$00 479 | FCB $00,$00,$00,$00,$00 480 | FCB $00,$00,$00,$00,$00 481 | FCB $00,$00,$00,$00,$00 482 | *TRIANGLE PICT 483 | PSD1D EQU * 484 | FCB $00,$00,$00,$00,$90 485 | FCB $00,$00,$00,$09,$90 486 | FCB $00,$00,$00,$99,$90 487 | FCB $00,$00,$09,$99,$90 488 | FCB $00,$00,$99,$99,$90 489 | FCB $00,$09,$99,$99,$90 490 | FCB $00,$99,$99,$99,$90 491 | FCB $09,$99,$99,$99,$90 492 | FCB $99,$99,$99,$99,$90 493 | PSD2D EQU * 494 | FCB $00,$00,$00,$00,$00 495 | FCB $00,$00,$00,$00,$00 496 | FCB $00,$00,$00,$0A,$00 497 | FCB $00,$00,$00,$AA,$00 498 | FCB $00,$00,$0A,$AA,$00 499 | FCB $00,$00,$AA,$AA,$00 500 | FCB $00,$0A,$AA,$AA,$00 501 | FCB $00,$AA,$AA,$AA,$00 502 | FCB $00,$00,$00,$00,$00 503 | PSD3D EQU * 504 | FCB $00,$00,$00,$00,$00 505 | FCB $00,$00,$00,$00,$00 506 | FCB $00,$00,$00,$00,$00 507 | FCB $00,$00,$00,$00,$00 508 | FCB $00,$00,$00,$A0,$00 509 | FCB $00,$00,$0A,$A0,$00 510 | FCB $00,$00,$AA,$A0,$00 511 | FCB $00,$00,$00,$00,$00 512 | FCB $00,$00,$00,$00,$00 513 | *VERT. BAR PICT 514 | PSD1E EQU * 515 | FCB $99,$99,$90 516 | FCB $99,$99,$90 517 | FCB $99,$99,$90 518 | FCB $99,$99,$90 519 | FCB $99,$99,$90 520 | FCB $99,$99,$90 521 | FCB $99,$99,$90 522 | FCB $99,$99,$90 523 | FCB $99,$99,$90 524 | PSD2E EQU * 525 | FCB $00,$00,$00 526 | FCB $0A,$AA,$00 527 | FCB $0A,$AA,$00 528 | FCB $0A,$AA,$00 529 | FCB $0A,$AA,$00 530 | FCB $0A,$AA,$00 531 | FCB $0A,$AA,$00 532 | FCB $0A,$AA,$00 533 | FCB $00,$00,$00 534 | PSD3E EQU * 535 | FCB $00,$00,$00 536 | FCB $00,$00,$00 537 | FCB $00,$A0,$00 538 | FCB $00,$A0,$00 539 | FCB $00,$A0,$00 540 | FCB $00,$A0,$00 541 | FCB $00,$A0,$00 542 | FCB $00,$00,$00 543 | FCB $00,$00,$00 544 | *DIAMOND 545 | PSD1F EQU * 546 | FCB $00,$00,$90,$00,$00 547 | FCB $00,$09,$99,$00,$00 548 | FCB $00,$99,$99,$90,$00 549 | FCB $09,$99,$99,$99,$00 550 | FCB $99,$99,$99,$99,$90 551 | FCB $09,$99,$99,$99,$00 552 | FCB $00,$99,$99,$90,$00 553 | FCB $00,$09,$99,$00,$00 554 | FCB $00,$00,$90,$00,$00 555 | PSD2F EQU * 556 | FCB $00,$00,$00,$00,$00 557 | FCB $00,$00,$A0,$00,$00 558 | FCB $00,$0A,$AA,$00,$00 559 | FCB $00,$AA,$AA,$A0,$00 560 | FCB $0A,$AA,$AA,$AA,$00 561 | FCB $00,$AA,$AA,$A0,$00 562 | FCB $00,$0A,$AA,$00,$00 563 | FCB $00,$00,$A0,$00,$00 564 | FCB $00,$00,$00,$00,$00 565 | PSD3F EQU * 566 | FCB $00,$00,$00,$00,$00 567 | FCB $00,$00,$00,$00,$00 568 | FCB $00,$00,$00,$00,$00 569 | FCB $00,$00,$A0,$00,$00 570 | FCB $00,$0A,$AA,$00,$00 571 | FCB $00,$00,$A0,$00,$00 572 | FCB $00,$00,$00,$00,$00 573 | FCB $00,$00,$00,$00,$00 574 | FCB $00,$00,$00,$00,$00 575 | * 576 | *2084 577 | * 578 | PSD1G EQU * 579 | FCB $99,$99,$99,$99,$99,$99,$99,$99,$90 580 | FCB $90,$00,$90,$00,$90,$00,$90,$90,$90 581 | FCB $99,$90,$90,$90,$90,$90,$90,$90,$90 582 | FCB $90,$00,$90,$90,$90,$00,$90,$00,$90 583 | FCB $90,$99,$90,$90,$90,$90,$99,$90,$90 584 | FCB $90,$00,$90,$00,$90,$00,$99,$90,$90 585 | FCB $99,$99,$99,$99,$99,$99,$99,$99,$90 586 | PSD2G EQU * 587 | FCB $00,$00,$00,$00,$00,$00,$00,$00,$00 588 | FCB $0A,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$00 589 | FCB $0A,$A0,$A0,$A0,$A0,$A0,$A0,$AA,$00 590 | FCB $0A,$00,$A0,$A0,$A0,$00,$00,$0A,$00 591 | FCB $0A,$AA,$A0,$A0,$A0,$A0,$AA,$AA,$00 592 | FCB $0A,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$00 593 | FCB $00,$00,$00,$00,$00,$00,$00,$00,$00 594 | PSD3G EQU * 595 | FCB $00,$00,$00,$00,$00,$00,$00,$00,$00 596 | FCB $00,$00,$00,$00,$00,$00,$00,$00,$00 597 | FCB $00,$00,$00,$00,$00,$00,$00,$00,$00 598 | FCB $00,$0A,$AA,$AA,$AA,$AA,$AA,$00,$00 599 | FCB $00,$00,$00,$00,$00,$00,$00,$00,$00 600 | FCB $00,$00,$00,$00,$00,$00,$00,$00,$00 601 | FCB $00,$00,$00,$00,$00,$00,$00,$00,$00 602 | *SPIKE 603 | PSD1H EQU * 604 | FCB $00,$00,$90,$00,$00 605 | FCB $09,$99,$99,$99,$00 606 | FCB $09,$99,$09,$99,$00 607 | FCB $09,$90,$00,$99,$00 608 | FCB $99,$00,$00,$09,$90 609 | FCB $09,$90,$00,$99,$00 610 | FCB $09,$99,$09,$99,$00 611 | FCB $09,$99,$99,$99,$00 612 | FCB $00,$00,$90,$00,$00 613 | PSD2H EQU * 614 | FCB $00,$00,$00,$00,$00 615 | FCB $00,$00,$A0,$00,$00 616 | FCB $00,$AA,$AA,$A0,$00 617 | FCB $00,$AA,$0A,$A0,$00 618 | FCB $0A,$A0,$00,$AA,$00 619 | FCB $00,$AA,$0A,$A0,$00 620 | FCB $00,$AA,$AA,$A0,$00 621 | FCB $00,$00,$A0,$00,$00 622 | FCB $00,$00,$00,$00,$00 623 | PSD3H EQU * 624 | FCB $00,$00,$00,$00,$00 625 | FCB $00,$00,$00,$00,$00 626 | FCB $00,$00,$A0,$00,$00 627 | FCB $00,$0A,$AA,$00,$00 628 | FCB $00,$AA,$0A,$A0,$00 629 | FCB $00,$0A,$AA,$00,$00 630 | FCB $00,$00,$A0,$00,$00 631 | FCB $00,$00,$00,$00,$00 632 | FCB $00,$00,$00,$00,$00 633 | *SPIRAL DATA 634 | PSD1I EQU * 635 | FCB $99,$99,$99,$99,$90 636 | FCB $90,$00,$00,$00,$90 637 | FCB $90,$99,$99,$90,$90 638 | FCB $90,$90,$00,$90,$90 639 | FCB $90,$90,$90,$90,$90 640 | FCB $90,$99,$90,$90,$90 641 | FCB $90,$00,$00,$90,$90 642 | FCB $99,$99,$99,$90,$90 643 | FCB $00,$00,$00,$00,$90 644 | FCB $09,$99,$99,$99,$90 645 | PSD2I EQU * 646 | FCB $00,$00,$00,$00,$00 647 | FCB $00,$00,$00,$00,$00 648 | FCB $00,$AA,$AA,$A0,$00 649 | FCB $00,$A0,$00,$A0,$00 650 | FCB $A0,$A0,$A0,$A0,$00 651 | FCB $A0,$AA,$A0,$A0,$00 652 | FCB $A0,$00,$00,$A0,$00 653 | FCB $AA,$AA,$AA,$A0,$00 654 | FCB $00,$00,$00,$00,$00 655 | FCB $00,$00,$00,$00,$00 656 | PSD3I EQU * 657 | FCB $00,$00,$00,$00,$00 658 | FCB $00,$00,$00,$00,$00 659 | FCB $00,$AA,$AA,$A0,$00 660 | FCB $00,$A0,$00,$A0,$00 661 | FCB $00,$A0,$A0,$A0,$00 662 | FCB $00,$AA,$A0,$00,$00 663 | FCB $00,$00,$00,$00,$00 664 | FCB $00,$00,$00,$00,$00 665 | FCB $00,$00,$00,$00,$00 666 | FCB $00,$00,$00,$00,$00 667 | * 668 | *ROBOT PITCHERS 669 | * 670 | RWDP1 FCB 5,13 671 | FDB RWDD1 672 | RWDP2 FCB 5,13 673 | FDB RWDD2 674 | RWDP3 FCB 5,13 675 | FDB RWDD1 676 | RWDP4 FCB 5,13 677 | FDB RWDD3 678 | RWDD1 FCB $00,$01,$11,$00,$00 679 | FCB $00,$66,$66,$60,$00 680 | FCB $00,$CC,$CC,$C0,$00 681 | FCB $00,$01,$11,$00,$00 682 | FCB $11,$91,$11,$91,$10 683 | FCB $51,$19,$99,$11,$50 684 | FCB $50,$11,$91,$10,$50 685 | FCB $50,$01,$11,$00,$50 686 | FCB $00,$01,$11,$00,$00 687 | FCB $00,$11,$01,$10,$00 688 | FCB $00,$11,$01,$10,$00 689 | FCB $05,$55,$05,$55,$00 690 | FCB $00,$00,$00,$00,$00 691 | RWDD2 FCB $00,$01,$11,$00,$00 692 | FCB $00,$66,$66,$60,$00 693 | FCB $00,$CC,$CC,$C0,$00 694 | FCB $00,$01,$11,$00,$00 695 | FCB $11,$91,$11,$91,$10 696 | FCB $51,$19,$99,$11,$50 697 | FCB $50,$11,$91,$10,$50 698 | FCB $50,$01,$11,$00,$50 699 | FCB $00,$11,$11,$00,$00 700 | FCB $00,$11,$01,$10,$00 701 | FCB $05,$55,$01,$10,$00 702 | FCB $00,$00,$01,$10,$00 703 | FCB $00,$00,$05,$55,$00 704 | RWDD3 FCB $00,$01,$11,$00,$00 705 | FCB $00,$66,$66,$60,$00 706 | FCB $00,$CC,$CC,$C0,$00 707 | FCB $00,$01,$11,$00,$00 708 | FCB $11,$91,$11,$91,$10 709 | FCB $51,$19,$99,$11,$50 710 | FCB $50,$11,$91,$10,$50 711 | FCB $50,$01,$11,$00,$50 712 | FCB $00,$01,$11,$10,$00 713 | FCB $00,$11,$01,$10,$00 714 | FCB $00,$11,$05,$55,$00 715 | FCB $00,$11,$00,$00,$00 716 | FCB $05,$55,$00,$00,$00 717 | END 718 | -------------------------------------------------------------------------------- /RRSET.ASM: -------------------------------------------------------------------------------- 1 | OPT NOL 2 | LIB RRFRED 3 | OPT LIS 4 | 5 | ORG SETORG SET US HERE 6 | FDB TAB35Z 7 | FDB TAB57Z 8 | 9 | TAB35Z FDB C0 10 | FDB C1 11 | FDB C2 12 | FDB C3 13 | FDB C4 14 | FDB C5 15 | FDB C6 16 | FDB C7 17 | FDB C8 18 | FDB C9 19 | FDB CSP 20 | FDB CEX 21 | FDB CCO 22 | FDB CPE 23 | FDB CAR 24 | FDB ACL 25 | FDB AHY 26 | FDB CA 27 | FDB CB 28 | FDB CCC 29 | FDB CD 30 | FDB CE 31 | FDB CF 32 | FDB CG 33 | FDB CH 34 | FDB CI 35 | FDB CJ 36 | FDB CK 37 | FDB CL 38 | FDB CM 39 | FDB CN 40 | FDB CO 41 | FDB CP 42 | FDB CQ 43 | FDB CR 44 | FDB CS 45 | FDB CT 46 | FDB CU 47 | FDB CV 48 | FDB CW 49 | FDB CX 50 | FDB CY 51 | FDB CZ 52 | FDB CLP 53 | FDB CRP 54 | FDB CFRB 55 | FDB CSLSH 56 | 57 | C0 FCB 3 58 | FCB $FF,$F0 59 | FCB $F0,$F0 60 | FCB $F0,$F0 61 | FCB $F0,$F0 62 | FCB $FF,$F0 63 | 64 | C1 FCB 3 65 | FCB $0F,$00 66 | FCB $0F,$00 67 | FCB $0F,$00 68 | FCB $0F,$00 69 | FCB $0F,$00 70 | 71 | C2 FCB 3 72 | FCB $FF,$F0 73 | FCB $00,$F0 74 | FCB $FF,$F0 75 | FCB $F0,$00 76 | FCB $FF,$F0 77 | 78 | C3 FCB 3 79 | FCB $FF,$F0 80 | FCB $00,$F0 81 | FCB $0F,$F0 82 | FCB $00,$F0 83 | FCB $FF,$F0 84 | 85 | C4 FCB 3 86 | FCB $F0,$F0 87 | FCB $F0,$F0 88 | FCB $FF,$F0 89 | FCB $00,$F0 90 | FCB $00,$F0 91 | 92 | C5 FCB 3 93 | FCB $FF,$F0 94 | FCB $F0,$00 95 | FCB $FF,$F0 96 | FCB $00,$F0 97 | FCB $FF,$F0 98 | 99 | C6 FCB 3 100 | FCB $FF,$F0 101 | FCB $F0,$00 102 | FCB $FF,$F0 103 | FCB $F0,$F0 104 | FCB $FF,$F0 105 | 106 | C7 FCB 3 107 | FCB $FF,$F0 108 | FCB $00,$F0 109 | FCB $00,$F0 110 | FCB $00,$F0 111 | FCB $00,$F0 112 | 113 | C8 FCB 3 114 | FCB $FF,$F0 115 | FCB $F0,$F0 116 | FCB $FF,$F0 117 | FCB $F0,$F0 118 | FCB $FF,$F0 119 | 120 | C9 FCB 3 121 | FCB $FF,$F0 122 | FCB $F0,$F0 123 | FCB $FF,$F0 124 | FCB $00,$F0 125 | FCB $00,$F0 126 | 127 | CSP FCB 1 128 | FCB $00 129 | FCB $00 130 | FCB $00 131 | FCB $00 132 | FCB $00 133 | 134 | CEX FCB 1 135 | FCB $F0 136 | FCB $F0 137 | FCB $F0 138 | FCB $00 139 | FCB $F0 140 | 141 | CCO FCB 3 142 | FCB $00,$00 143 | FCB $00,$00 144 | FCB $00,$00 145 | FCB $FF,$00 146 | FCB $0F,$00 147 | 148 | CPE FCB 1 149 | FCB $00 150 | FCB $00 151 | FCB $00 152 | FCB $00 153 | FCB $F0 154 | 155 | CAR FCB 5 156 | FCB $00,$F0,$00 157 | FCB $0F,$FF,$00 158 | FCB $FF,$FF,$F0 159 | FCB $00,$F0,$00 160 | FCB $00,$F0,$00 161 | 162 | ACL FCB 1 163 | FCB $00 164 | FCB $F0 165 | FCB $00 166 | FCB $F0 167 | FCB $00 168 | 169 | AHY FCB 3 170 | FCB $00,$00 171 | FCB $00,$00 172 | FCB $FF,$F0 173 | FCB $00,$00 174 | FCB $00,$00 175 | 176 | CA FCB 3 177 | FCB $FF,$F0 178 | FCB $F0,$F0 179 | FCB $FF,$F0 180 | FCB $F0,$F0 181 | FCB $F0,$F0 182 | 183 | CB FCB 3 184 | FCB $FF,$F0 185 | FCB $F0,$F0 186 | FCB $FF,$00 187 | FCB $F0,$F0 188 | FCB $FF,$F0 189 | 190 | CCC FCB 3 191 | FCB $FF,$F0 192 | FCB $F0,$00 193 | FCB $F0,$00 194 | FCB $F0,$00 195 | FCB $FF,$F0 196 | 197 | CD FCB 3 198 | FCB $FF,$00 199 | FCB $F0,$F0 200 | FCB $F0,$F0 201 | FCB $F0,$F0 202 | FCB $FF,$00 203 | 204 | CE FCB 3 205 | FCB $FF,$F0 206 | FCB $F0,$00 207 | FCB $FF,$00 208 | FCB $F0,$00 209 | FCB $FF,$F0 210 | 211 | CF FCB 3 212 | FCB $FF,$F0 213 | FCB $F0,$00 214 | FCB $FF,$00 215 | FCB $F0,$00 216 | FCB $F0,$00 217 | 218 | CG FCB 3 219 | FCB $FF,$F0 220 | FCB $F0,$00 221 | FCB $F0,$F0 222 | FCB $F0,$F0 223 | FCB $FF,$F0 224 | 225 | CH FCB 3 226 | FCB $F0,$F0 227 | FCB $F0,$F0 228 | FCB $FF,$F0 229 | FCB $F0,$F0 230 | FCB $F0,$F0 231 | 232 | CI FCB 3 233 | FCB $FF,$F0 234 | FCB $0F,$00 235 | FCB $0F,$00 236 | FCB $0F,$00 237 | FCB $FF,$F0 238 | 239 | CJ FCB 3 240 | FCB $00,$F0 241 | FCB $00,$F0 242 | FCB $00,$F0 243 | FCB $F0,$F0 244 | FCB $FF,$F0 245 | 246 | CK FCB 3 247 | FCB $F0,$F0 248 | FCB $F0,$F0 249 | FCB $FF,$00 250 | FCB $F0,$F0 251 | FCB $F0,$F0 252 | 253 | CL FCB 3 254 | FCB $F0,$00 255 | FCB $F0,$00 256 | FCB $F0,$00 257 | FCB $F0,$00 258 | FCB $FF,$F0 259 | 260 | CM FCB 5 261 | FCB $FF,$FF,$F0 262 | FCB $F0,$F0,$F0 263 | FCB $F0,$F0,$F0 264 | FCB $F0,$00,$F0 265 | FCB $F0,$00,$F0 266 | 267 | CN FCB 3 268 | FCB $FF,$F0 269 | FCB $F0,$F0 270 | FCB $F0,$F0 271 | FCB $F0,$F0 272 | FCB $F0,$F0 273 | 274 | CO FCB 3 275 | FCB $FF,$F0 276 | FCB $F0,$F0 277 | FCB $F0,$F0 278 | FCB $F0,$F0 279 | FCB $FF,$F0 280 | 281 | CP FCB 3 282 | FCB $FF,$F0 283 | FCB $F0,$F0 284 | FCB $FF,$F0 285 | FCB $F0,$00 286 | FCB $F0,$00 287 | 288 | CQ FCB 3 289 | FCB $FF,$F0 290 | FCB $F0,$F0 291 | FCB $FF,$F0 292 | FCB $00,$F0 293 | FCB $00,$F0 294 | 295 | CR FCB 3 296 | FCB $FF,$F0 297 | FCB $F0,$F0 298 | FCB $FF,$00 299 | FCB $F0,$F0 300 | FCB $F0,$F0 301 | 302 | CS FCB 3 303 | FCB $FF,$F0 304 | FCB $F0,$00 305 | FCB $FF,$F0 306 | FCB $00,$F0 307 | FCB $FF,$F0 308 | 309 | CT FCB 3 310 | FCB $FF,$F0 311 | FCB $0F,$00 312 | FCB $0F,$00 313 | FCB $0F,$00 314 | FCB $0F,$00 315 | 316 | CU FCB $3 317 | FCB $F0,$F0 318 | FCB $F0,$F0 319 | FCB $F0,$F0 320 | FCB $F0,$F0 321 | FCB $FF,$F0 322 | 323 | CV FCB 3 324 | FCB $F0,$F0 325 | FCB $F0,$F0 326 | FCB $F0,$F0 327 | FCB $0F,$00 328 | FCB $0F,$00 329 | 330 | CW FCB 5 331 | FCB $F0,$00,$F0 332 | FCB $F0,$00,$F0 333 | FCB $F0,$F0,$F0 334 | FCB $F0,$F0,$F0 335 | FCB $FF,$FF,$F0 336 | 337 | CX FCB 3 338 | FCB $F0,$F0 339 | FCB $F0,$F0 340 | FCB $0F,$00 341 | FCB $F0,$F0 342 | FCB $F0,$F0 343 | 344 | CY FCB 3 345 | FCB $F0,$F0 346 | FCB $F0,$F0 347 | FCB $FF,$F0 348 | FCB $0F,$00 349 | FCB $0F,$00 350 | 351 | CZ FCB 3 352 | FCB $FF,$F0 353 | FCB $00,$F0 354 | FCB $0F,$00 355 | FCB $F0,$00 356 | FCB $FF,$F0 357 | 358 | CLP FCB 3 359 | FCB $0F,$00 360 | FCB $F0,$00 361 | FCB $F0,$00 362 | FCB $F0,$00 363 | FCB $0F,$00 364 | 365 | CRP FCB 3 366 | FCB $0F,$00 367 | FCB $00,$F0 368 | FCB $00,$F0 369 | FCB $00,$F0 370 | FCB $0F,$00 371 | 372 | CFRB FCB 7 373 | FCB $00,$0F,$00,$00 374 | FCB $00,$00,$F0,$00 375 | FCB $FF,$00,$FF,$00 376 | FCB $00,$00,$F0,$00 377 | FCB $00,$0F,$00,$00 378 | 379 | CSLSH FCB 3 380 | FCB $00,$F0 381 | FCB $00,$F0 382 | FCB $0F,$00 383 | FCB $F0,$00 384 | FCB $F0,$00 385 | 386 | TAB57Z FDB D0 387 | FDB D1 388 | FDB D2 389 | FDB D3 390 | FDB D4 391 | FDB D5 392 | FDB D6 393 | FDB D7 394 | FDB D8 395 | FDB D9 396 | FDB DSP 397 | FDB DEX 398 | FDB DCO 399 | FDB DPE 400 | FDB DAR 401 | FDB DCL 402 | FDB DHY 403 | FDB DA 404 | FDB DB 405 | FDB DCC 406 | FDB DD 407 | FDB DE 408 | FDB DF 409 | FDB DG 410 | FDB DH 411 | FDB DI 412 | FDB DJ 413 | FDB DK 414 | FDB DL 415 | FDB DM 416 | FDB DN 417 | FDB DO 418 | FDB DP 419 | FDB DQ 420 | FDB DR 421 | FDB DS 422 | FDB DT 423 | FDB DU 424 | FDB DV 425 | FDB DW 426 | FDB DX 427 | FDB DY 428 | FDB DZ 429 | FDB DLP 430 | FDB DRP 431 | FDB DFRB 432 | FDB DSLSH 433 | 434 | D0 FCB 5 435 | FCB $99,$99,$90 436 | FCB $90,$00,$90 437 | FCB $90,$00,$90 438 | FCB $90,$00,$90 439 | FCB $90,$00,$90 440 | FCB $99,$99,$90 441 | 442 | D1 FCB 5 443 | FCB $00,$99,$00 444 | FCB $00,$09,$00 445 | FCB $00,$09,$00 446 | FCB $00,$09,$00 447 | FCB $00,$09,$00 448 | FCB $09,$99,$90 449 | 450 | D2 FCB 5 451 | FCB $09,$99,$90 452 | FCB $00,$00,$90 453 | FCB $99,$99,$90 454 | FCB $90,$00,$00 455 | FCB $90,$00,$00 456 | FCB $99,$99,$00 457 | 458 | D3 FCB 5 459 | FCB $09,$99,$90 460 | FCB $00,$00,$90 461 | FCB $09,$99,$90 462 | FCB $00,$00,$90 463 | FCB $00,$00,$90 464 | FCB $99,$99,$90 465 | 466 | D4 FCB 5 467 | FCB $90,$00,$00 468 | FCB $90,$09,$00 469 | FCB $90,$09,$00 470 | FCB $99,$99,$90 471 | FCB $00,$09,$00 472 | FCB $00,$09,$00 473 | 474 | D5 FCB 5 475 | FCB $99,$99,$00 476 | FCB $90,$00,$00 477 | FCB $99,$99,$90 478 | FCB $00,$00,$90 479 | FCB $00,$00,$90 480 | FCB $99,$99,$90 481 | 482 | D6 FCB 5 483 | FCB $99,$99,$00 484 | FCB $90,$00,$00 485 | FCB $99,$99,$90 486 | FCB $90,$00,$90 487 | FCB $90,$00,$90 488 | FCB $99,$99,$90 489 | 490 | D7 FCB 5 491 | FCB $99,$99,$90 492 | FCB $00,$00,$90 493 | FCB $00,$09,$00 494 | FCB $00,$90,$00 495 | FCB $09,$00,$00 496 | FCB $90,$00,$00 497 | 498 | D8 FCB 5 499 | FCB $99,$99,$90 500 | FCB $90,$00,$90 501 | FCB $99,$99,$90 502 | FCB $90,$00,$90 503 | FCB $90,$00,$90 504 | FCB $99,$99,$90 505 | 506 | D9 FCB 5 507 | FCB $99,$99,$90 508 | FCB $90,$00,$90 509 | FCB $99,$99,$90 510 | FCB $00,$00,$90 511 | FCB $00,$00,$90 512 | FCB $09,$99,$90 513 | 514 | DSP FCB 3 SPACE 515 | FCB $00,$00 516 | FCB $00,$00 517 | FCB $00,$00 518 | FCB $00,$00 519 | FCB $00,$00 520 | FCB $00,$00 521 | 522 | DEX FCB 2 523 | FCB $FF,$00 524 | FCB $FF,$00 525 | FCB $FF,$00 526 | FCB $FF,$00 527 | FCB $00,$00 528 | FCB $FF,$00 529 | FCB $FF,$00 530 | 531 | DCO FCB 2 COMMA 532 | FCB $00,$00 533 | FCB $00,$00 534 | FCB $00,$00 535 | FCB $FF,$00 536 | FCB $FF,$00 537 | FCB $F0,$00 538 | 539 | DPE FCB 2 540 | FCB $00,$00 541 | FCB $00,$00 542 | FCB $00,$00 543 | FCB $00,$00 544 | FCB $FF,$00 545 | FCB $FF,$00 546 | 547 | DAR FCB 9 BLANKR USED TO BLOCK ERASE 548 | FCB $FF,$FF,$FF,$FF,$F0 549 | FCB $FF,$FF,$FF,$FF,$F0 550 | FCB $FF,$FF,$FF,$FF,$F0 551 | FCB $FF,$FF,$FF,$FF,$F0 552 | FCB $FF,$FF,$FF,$FF,$F0 553 | FCB $FF,$FF,$FF,$FF,$F0 554 | 555 | DCL FCB 2 COLON 556 | FCB $00,$00 557 | FCB $FF,$00 558 | FCB $FF,$00 559 | FCB $00,$00 560 | FCB $FF,$00 561 | FCB $FF,$00 562 | 563 | DHY FCB 3 564 | FCB $00,$00 565 | FCB $00,$00 566 | FCB $00,$00 567 | FCB $22,$20 568 | FCB $00,$00 569 | FCB $00,$00 570 | 571 | DA FCB 5 572 | FCB $66,$66,$60 573 | FCB $60,$06,$60 574 | FCB $66,$66,$60 575 | FCB $60,$06,$60 576 | FCB $60,$06,$60 577 | FCB $60,$06,$60 578 | 579 | DB FCB 5 580 | FCB $66,$66,$00 581 | FCB $60,$06,$00 582 | FCB $66,$66,$60 583 | FCB $66,$00,$60 584 | FCB $66,$00,$60 585 | FCB $66,$66,$60 586 | 587 | DCC FCB 5 588 | FCB $66,$66,$60 589 | FCB $66,$00,$00 590 | FCB $66,$00,$00 591 | FCB $66,$00,$00 592 | FCB $66,$00,$00 593 | FCB $66,$66,$60 594 | 595 | DD FCB 5 596 | FCB $66,$66,$00 597 | FCB $66,$00,$60 598 | FCB $66,$00,$60 599 | FCB $66,$00,$60 600 | FCB $66,$00,$60 601 | FCB $66,$66,$00 602 | 603 | DE FCB 5 604 | FCB $66,$66,$60 605 | FCB $60,$00,$00 606 | FCB $66,$66,$60 607 | FCB $66,$00,$00 608 | FCB $66,$00,$00 609 | FCB $66,$66,$60 610 | 611 | DF FCB 5 612 | FCB $66,$66,$60 613 | FCB $60,$00,$00 614 | FCB $66,$66,$60 615 | FCB $66,$00,$00 616 | FCB $66,$00,$00 617 | FCB $66,$00,$00 618 | 619 | DG FCB 5 620 | FCB $66,$66,$60 621 | FCB $66,$06,$60 622 | FCB $66,$00,$00 623 | FCB $66,$06,$60 624 | FCB $66,$00,$60 625 | FCB $66,$66,$60 626 | 627 | DH FCB 5 628 | FCB $66,$00,$60 629 | FCB $66,$00,$60 630 | FCB $66,$66,$60 631 | FCB $66,$00,$60 632 | FCB $66,$00,$60 633 | FCB $66,$00,$60 634 | 635 | DI FCB 4 636 | FCB $06,$60,$00 637 | FCB $06,$60,$00 638 | FCB $06,$60,$00 639 | FCB $06,$60,$00 640 | FCB $06,$60,$00 641 | FCB $06,$60,$00 642 | 643 | DJ FCB 5 644 | FCB $00,$00,$60 645 | FCB $00,$00,$60 646 | FCB $00,$00,$60 647 | FCB $00,$00,$60 648 | FCB $66,$00,$60 649 | FCB $66,$66,$60 650 | 651 | DK FCB 5 652 | FCB $66,$00,$60 653 | FCB $66,$06,$00 654 | FCB $66,$60,$00 655 | FCB $66,$60,$00 656 | FCB $66,$06,$00 657 | FCB $66,$00,$60 658 | 659 | DL FCB 5 660 | FCB $60,$00,$00 661 | FCB $60,$00,$00 662 | FCB $60,$00,$00 663 | FCB $60,$00,$00 664 | FCB $66,$66,$60 665 | FCB $66,$66,$60 666 | 667 | DM FCB 5 668 | FCB $66,$66,$60 669 | FCB $60,$60,$60 670 | FCB $60,$60,$60 671 | FCB $60,$00,$60 672 | FCB $60,$00,$60 673 | FCB $60,$00,$60 674 | 675 | DN FCB 5 676 | FCB $66,$66,$60 677 | FCB $60,$00,$60 678 | FCB $66,$00,$60 679 | FCB $66,$00,$60 680 | FCB $66,$00,$60 681 | FCB $66,$00,$60 682 | 683 | DO FCB 5 684 | FCB $66,$66,$60 685 | FCB $60,$06,$60 686 | FCB $60,$00,$60 687 | FCB $60,$00,$60 688 | FCB $60,$00,$60 689 | FCB $66,$66,$60 690 | 691 | DP FCB 5 692 | FCB $66,$66,$60 693 | FCB $60,$00,$60 694 | FCB $66,$66,$60 695 | FCB $66,$00,$00 696 | FCB $66,$00,$00 697 | FCB $66,$00,$00 698 | 699 | DQ FCB 5 700 | FCB $66,$66,$60 701 | FCB $66,$00,$60 702 | FCB $66,$00,$60 703 | FCB $66,$00,$60 704 | FCB $66,$06,$00 705 | FCB $66,$60,$60 706 | 707 | DR FCB 5 708 | FCB $66,$66,$00 709 | FCB $60,$06,$00 710 | FCB $66,$66,$60 711 | FCB $66,$00,$60 712 | FCB $66,$00,$60 713 | FCB $66,$00,$60 714 | 715 | DS FCB 5 716 | FCB $66,$66,$60 717 | FCB $60,$00,$00 718 | FCB $66,$66,$60 719 | FCB $00,$00,$60 720 | FCB $66,$00,$60 721 | FCB $66,$66,$60 722 | 723 | DT FCB 5 724 | FCB $66,$66,$60 725 | FCB $00,$60,$00 726 | FCB $00,$66,$00 727 | FCB $00,$66,$00 728 | FCB $00,$66,$00 729 | FCB $00,$66,$00 730 | 731 | DU FCB 5 732 | FCB $60,$06,$60 733 | FCB $60,$06,$60 734 | FCB $60,$06,$60 735 | FCB $60,$06,$60 736 | FCB $60,$06,$60 737 | FCB $66,$66,$60 738 | 739 | DV FCB 5 740 | FCB $66,$00,$60 741 | FCB $66,$00,$60 742 | FCB $66,$00,$60 743 | FCB $66,$00,$60 744 | FCB $06,$06,$00 745 | FCB $00,$60,$00 746 | 747 | DW FCB 5 748 | FCB $60,$00,$60 749 | FCB $60,$00,$60 750 | FCB $60,$00,$60 751 | FCB $60,$60,$60 752 | FCB $60,$60,$60 753 | FCB $66,$66,$60 754 | 755 | DX FCB 5 756 | FCB $60,$00,$60 757 | FCB $06,$06,$00 758 | FCB $00,$60,$00 759 | FCB $00,$60,$00 760 | FCB $06,$06,$00 761 | FCB $60,$00,$60 762 | 763 | DY FCB 5 764 | FCB $66,$00,$60 765 | FCB $66,$00,$60 766 | FCB $66,$66,$60 767 | FCB $00,$60,$00 768 | FCB $00,$60,$00 769 | FCB $00,$60,$00 770 | 771 | DZ FCB 5 772 | FCB $66,$66,$60 773 | FCB $00,$06,$00 774 | FCB $00,$60,$00 775 | FCB $06,$00,$00 776 | FCB $66,$66,$60 777 | FCB $66,$66,$60 778 | 779 | DLP FCB 3 780 | FCB $00,$F0 781 | FCB $0F,$00 782 | FCB $F0,$00 783 | FCB $F0,$00 784 | FCB $0F,$00 785 | FCB $00,$F0 786 | 787 | DRP FCB 3 788 | FCB $F0,$00 789 | FCB $0F,$00 790 | FCB $00,$F0 791 | FCB $00,$F0 792 | FCB $0F,$00 793 | FCB $F0,$00 794 | 795 | DFRB FCB 4 SLASH 796 | FCB $00,$0F,$00 797 | FCB $00,$F0,$00 798 | FCB $00,$F0,$00 799 | FCB $0F,$00,$00 800 | FCB $0F,$00,$00 801 | FCB $F0,$00,$00 802 | 803 | DSLSH FCB 5 804 | FCB $00,$F0,$00 805 | FCB $0F,$F0,$00 806 | FCB $FF,$FF,$F0 807 | FCB $0F,$F0,$00 808 | FCB $00,$F0,$00 809 | FCB $00,$00,$00 810 | 811 | END 812 | -------------------------------------------------------------------------------- /RRT2.ASM: -------------------------------------------------------------------------------- 1 | OPT NOL 2 | LIB RRF 3 | OPT LIS 4 | STTL TRANSPORTER......... 5 | OPOINT EQU 0 6 | OW EQU OPOINT+2 OFFSETS IN MEMORY BLOCK 7 | OH EQU OW+1 8 | OPT EQU OH+1 POINTER TO RAM DATA TO BE USED BY DMA 9 | PICPTR EQU OPT+2 OBJECT 10 | BYTCNT EQU PICPTR+2 NUMBER OF BYTES IN OBJECT 11 | FRPTR EQU BYTCNT+1 POINTER TO CURRENT FRAME 12 | GLTPTR EQU FRPTR+2 13 | DATA EQU GLTPTR+2 DATA AREA 1 IS THIS DISTANCE INTO SECOND BLOCK 14 | BKSIZE EQU 116+DATA SIZE OF ALLOCATION BLOCKS 15 | ORG HXTAB 16 | FREEP RMB 2 17 | TRPTR RMB 2 18 | GTEMP RMB 2 19 | BYTES RMB 1 20 | LAST RMB 2 21 | TRRAM EQU * 22 | RMB 10*BKSIZE 23 | TREND EQU * 24 | 25 | ORG RTORG PLACE TO RUN THE CODE FROM 26 | JMP TRNSTV 27 | 28 | ***** T R A N S P O R T E R 29 | *SOUNDS 30 | TR1SND FCB $FF,$01,$01,$13,0 CLEAR THE SYSTEM 31 | 32 | * COLORS FOR PIXEL GLITTER 33 | 34 | GLIT0 FCB $99,$22,$55,$11,$99,$22,$55,$11,$99,$22 WH,RED,YEL,ORANG 35 | FCB $55,$11,$99,$22,$55,$11,$99,$22,$55,$11 36 | GLIT1 FCB $AA,$CC,$AA,$CC,$AA,$CC,$AA,$CC,$AA,$CC CY,CY 37 | FCB $AA,$CC,$AA,$CC,$AA,$CC,$AA,$CC,$AA,$CC 38 | GLIT2 FCB $99,$77,$99,$77,$99,$77,$99,$77,$99,$77 WH,BL 39 | FCB $99,$77,$99,$77,$99,$77,$99,$77,$99,$77 40 | GLIT3 FCB $11,$55,$11,$55,$11,$55,$11,$55,$11,$55 RED,YEL 41 | FCB $11,$55,$11,$55,$11,$55,$11,$55,$11,$55 42 | GLIT4 FCB $FF,$EE,$DD,$CC,$BB,$AA,$FF,$EE,$DD,$CC 43 | FCB $BB,$AA,$FF,$EE,$DD,$CC,$BB,$AA,$FF,$EE 44 | GLIT5 FCB $11,$66,$77,$BB,$AA,$11,$66,$77,$BB,$AA 45 | FCB $11,$66,$77,$BB,$AA,$11,$66,$77,$BB,$AA 46 | GLIT6 FCB $33,$55,$33,$55,$AA,$33,$55,$33,$55,$AA PURP,YEL + SOME WH. 47 | FCB $33,$55,$33,$55,$AA,$33,$55,$33,$55,$AA 48 | 49 | GLITAB FDB GLIT0 50 | FDB GLIT1 51 | FDB GLIT2 52 | FDB GLIT3 53 | FDB GLIT4 54 | FDB GLIT5 55 | FDB GLIT6 56 | FDB GLIT4 57 | 58 | FCC ' COPYRIGHT 1982 WILLIAMS ELECTRONICS INC. ' 59 | 60 | TRINIT PSHS X,Y 61 | LDX #TRRAM POINT AT FIRST BLOCK 62 | STX FREEP FREE LIST 63 | TRIN0 LEAY BKSIZE,X FIND NEXT BLOCK 64 | STY ,X MAKE THIS ONE POINT AT NEXT ONE 65 | CMPY #TREND DID WE JUST POINT AT NON EXISTANT?? 66 | BHS TRIN1 YEP 67 | LEAX ,Y NOW POINT AT NEXT 68 | BRA TRIN0 69 | TRIN1 LDY #0 END OF THE LINE 70 | STY ,X 71 | STY TRPTR NO ONE ON LIST 72 | PULS X,Y,PC 73 | 74 | * ONDRV - TRANSPORT GUY ON... 75 | * X = POINTER TO H,W,DATA_POINTER 76 | * X RETURNS POINTER TO RAM IMAGE TO REFRESH 77 | 78 | TRSTRT PSHS Y,D,U 79 | BSR GETBLK GET A DATA BLOCK 80 | BCS ONBYE NO BLOCKS...BYE 81 | ONDRV0 STY TRPTR PUT THE MAIN MAN ON THE LIST 82 | STX PICPTR,Y SAVE PICTURE POINTER 83 | LDD ,X GET W,H 84 | STD OW,Y STORE THEM 85 | MUL FORM BYTE COUNT 86 | STB BYTCNT,Y AND SAVE 87 | LEAU DATA,Y FIND WHERE DATA WILL START 88 | STU OPT,Y 89 | BSR CLRM CLEAR MEMORY IN ALLOCATED BLOCK 90 | LDU #TRNTAB APPEAR TABLE TO BE USED 91 | STU FRPTR,Y FIRST FRAME 92 | JSR RAND GET RANDOM GLITTER 93 | ANDA #$7 94 | ASLA 95 | LDU #GLITAB 96 | LDD A,U 97 | STD GLTPTR,Y 98 | LEAX OW,Y THIS LOOKS LIKE AN OBJECT...RETURN IT 99 | ONBYE PULS Y,U,D,PC PULL IT ALL AND RETURN 100 | 101 | CLRM PSHS D,Y 102 | LDY OPT,Y 103 | CLRM1 CLR ,Y+ CLEAR A BYTE 104 | DECB 105 | BNE CLRM1 106 | PULS PC,D,Y 107 | 108 | GETBLK PSHS X 109 | LDY FREEP 110 | BEQ GETERR 111 | LDX ,Y GET NEXT 112 | STX FREEP MAKE LIST 113 | LDX TRPTR GET CURRENT LIST 114 | STX ,Y POINT AT IT 115 | CLC 116 | PULS X,PC 117 | GETERR SEC 118 | PULS X,PC 119 | 120 | * Y BLOCK FOR OBJECT TO UPDATE 121 | * X RETURNS PICPTR FOR OBJECT 122 | * U RETURNS TRANS TABLE POINTER 123 | 124 | TMAKE LDX FRPTR,Y GET FRAME POINTER 125 | PSHS X AND SAVE IT SO WE MAY STILL USE U 126 | LEAX 1,X KICK FRAM COUNTER 127 | STX FRPTR,Y 128 | LDA SEED 129 | ANDA #$7 130 | LDX GLTPTR,Y GET THE GLITTER POINTER 131 | LEAX A,X ADD THE RANDOM GUY 132 | STX GTEMP AND PUT IT IN RAM 133 | LDX PICPTR,Y LOAD THE ACTUAL PICTURE POINTER 134 | LDB BYTCNT,Y LOAD THE BYTE COUNT IN THE OBJECT 135 | PULS U,PC PUT THE FRAME POINTER IN U AND RETURN 136 | 137 | * TRNSPT - X POINTS AT DATA FOR OBJECT 138 | * Y POINTS AT DATA AREA 139 | * B CONTAINS BYTES IN OBJECT 140 | * U EQUALS CURRENT TRANSPORT FRAME 141 | 142 | TRNSPT PSHS D,U,Y,X 143 | LDX 2,X POINT AT DATA TEMPLATE 144 | LDY OPT,Y POINT AT PHONEY OBJECT 145 | LDA ,U GET THE FRAME NUMBER 146 | BPL XON TRANS EM ON THIS FRAME 147 | ANDA #$7F TAKE OFF BIT AWAY. 148 | JSR GETGRP GET THE GROUP POINTER IN U. 149 | POFF0 LDD ,U++ GET THE NEXT POINT 150 | CMPA BYTES CHECK BYTE NUMBER 151 | BHS TRNDUN TOO LARGE TO BE IN THIS PICTURE 152 | COMB TAKE AWAY TO TURN OFF. 153 | ANDB A,Y 154 | STB A,Y 155 | BRA POFF0 156 | XON BITA #$40 GLITTER FRAME?? 157 | BNE XONG THEN GET OUT OF HERE! 158 | BSR GETGRP 159 | PON0 LDD ,U++ 160 | CMPA BYTES 161 | BHS TRNDUN 162 | ANDB A,X GET WHAT THE BYTE LOOKS LIKE 163 | ORAB A,Y OR IT IN (IT WAS OFF) 164 | STB A,Y 165 | BRA PON0 166 | TRNDUN PULS D,PC,U,X,Y 167 | 168 | XONG ANDA #$3F TAKE AWAY GLITTER BIT 169 | BSR GETGRP 170 | PON0G LDD ,U++ 171 | CMPA BYTES 172 | BHS TRNDUN 173 | ANDB A,X GET WHAT THE BYTE LOOKS LIKE 174 | BEQ PON0G NOTHING THERE...DONE WITH THE BYTE 175 | LDB [GTEMP] GET THE CURRENT GLITTER BYTE 176 | INC GTEMP+1 KICK GLITTER POINTER 177 | **************************************************************************** 178 | * BNE PON1G DIDN'T WRAP THESE 2 INSTRUCTIO 179 | * INC GTEMP ARE SUPERFLOUS FOR MOST ADDRS 180 | **************************************************************************** 181 | PON1G ANDB -1,U 182 | ORAB A,Y OR IT IN (IT WAS OFF) 183 | STB A,Y 184 | BRA PON0G 185 | 186 | GETGRP LDU #GRPLST GROUP TABLE 187 | DECA MAKE 1-12, 0-11 188 | ASLA 189 | LDU A,U 190 | STB BYTES SAVE BYTE COUNT 191 | RTS 192 | 193 | TRKIL PSHS X 194 | LDX ,Y GET THE NEXT GUY 195 | STX [LAST] MAKE THE LAST GUY POINT TO OUR NEXT 196 | LDX FREEP 197 | STX ,Y APPEND FREE LIST TO US 198 | STY FREEP AND MAKE US THE LIST 199 | LDY LAST MAKE POINT AT LAST FOR NEXT ITERATION 200 | PULS X,PC 201 | 202 | ********* TRANSPORTER UPDATE 203 | 204 | UPDATE LDY #TRPTR WORK THROUGH LIST 205 | BRA TRNUP0 206 | TRNUP3 JSR TMAKE FOR ALL OF THE PARAMETERS 207 | CMPU #TABBOT TOO FAR ON ONE??? 208 | BEQ TRNUP1 209 | JSR TRNSPT DO THE POINT 210 | TRNUP0 STY LAST 211 | LDY ,Y WALK TO NEXT 212 | BNE TRNUP3 ITS GOOD 213 | RTS DONE 214 | 215 | TRNUP1 JSR TRKIL 216 | BRA TRNUP0 217 | 218 | TRNTAB FCB $43 219 | FCB $83 220 | FCB $46 221 | FCB $86 222 | FCB $44 223 | FCB $84 224 | FCB $42 225 | FCB $82 226 | FCB $41 227 | FCB $81 228 | FCB $47 229 | FCB $87 230 | FCB $44 231 | FCB $46 232 | FCB $84 233 | FCB $42 234 | FCB $86 235 | FCB $43 236 | FCB $82 237 | FCB $41 238 | FCB $83 239 | FCB $45 240 | FCB $81 241 | FCB $48 242 | FCB $85 243 | FCB $47 244 | FCB $88 245 | FCB $44 246 | FCB $87 247 | FCB $45 248 | FCB $42 249 | FCB $84 250 | FCB $46 251 | FCB $85 252 | FCB $47 253 | FCB $82 254 | FCB $48 255 | FCB $86 256 | FCB $43 257 | FCB $87 258 | FCB $41 259 | FCB $88 260 | FCB $42 261 | FCB $83 262 | FCB $44 263 | FCB $81 264 | FCB $45 265 | FCB $47 266 | FCB $82 267 | FCB $46 268 | FCB $84 269 | COL2 FCB $85 270 | FCB $48 271 | FCB $87 272 | FCB $43 273 | FCB $86 274 | FCB $44 275 | FCB $42 276 | FCB $88 277 | FCB $45 278 | FCB $83 279 | FCB $41 280 | FCB $84 281 | FCB $43 282 | FCB $82 283 | FCB $47 284 | FCB $46 285 | FCB $85 286 | FCB $48 287 | FCB $81 288 | FCB $42 289 | FCB $83 290 | FCB $44 291 | FCB $87 292 | FCB $41 293 | FCB $86 294 | FCB $45 295 | FCB $88 296 | FCB $43 297 | FCB $46 298 | FCB $84 299 | FCB $48 300 | FCB $81 301 | FCB $47 302 | FCB $85 303 | FCB $44 304 | FCB $82 305 | FCB $41 306 | FCB $45 307 | FCB $83 308 | FCB $42 309 | FCB $86 310 | FCB $88 311 | FCB $43 312 | FCB $87 313 | FCB $46 314 | FCB $84 315 | FCB $48 316 | FCB $85 317 | FCB 7 318 | FCB $81 319 | FCB 4 320 | FCB 5 321 | FCB $82 322 | FCB 1 323 | FCB $83 324 | FCB 2 325 | FCB $86 326 | FCB 3 327 | FCB $88 328 | FCB 6 329 | FCB $87 330 | FCB 8 331 | FCB $84 332 | FCB 7 333 | FCB $85 334 | FCB 4 335 | FCB $81 336 | FCB 5 337 | FCB 1 338 | FCB $82 339 | FCB $83 340 | FCB 2 341 | FCB 3 342 | FCB $88 343 | FCB 8 344 | FCB $84 345 | FCB $87 346 | FCB 7 347 | FCB 4 348 | TABBOT EQU * 349 | FCB 0 FIX FLAW IN ALGORITHM 350 | 351 | GRPLST FDB GROUP1 352 | FDB GROUP2 353 | FDB GROUP3 354 | FDB GROUP4 355 | FDB GROUP5 356 | FDB GROUP6 357 | FDB GROUP7 358 | FDB GROUP8 359 | 360 | GRPTAB EQU * 361 | GROUP1 FCB 00,$F0,06,$0F,09,$0F,12,$F0,19,$F0,23,$0F,24,$0F,29,$F0 362 | FCB 34,$F0,37,$0F,43,$F0,46,$0F,48,$F0,50,$0F,60,$F0,62,$0F 363 | FCB 67,$0F,69,$F0,72,$F0,76,$0F,80,$0F,81,$F0,90,$F0,93,$0F 364 | FCB 96,$0F,101,$F0,106,$0F,110,$0F,115,$F0 365 | GROUP2 FCB 01,$0F,03,$F0,08,$F0,15,$0F,18,$F0,20,$0F,27,$0F,30,$F0 366 | FCB 32,$F0,34,$0F,45,$F0,47,$0F,51,$0F,53,$F0,57,$0F,61,$F0 367 | FCB 67,$F0,71,$0F,74,$0F,78,$F0,83,$F0,85,$0F,91,$0F,91,$F0 368 | FCB 99,$0F,104,$F0,109,$F0,113,$0F,115,$0F 369 | GROUP3 FCB 04,$0F,07,$F0,09,$F0,10,$0F,20,$F0,21,$0F,28,$0F,31,$F0 370 | FCB 33,$F0,35,$0F,41,$0F,46,$F0,52,$0F,54,$F0,58,$F0,61,$0F 371 | FCB 66,$F0,68,$0F,73,$0F,77,$F0,85,$F0,87,$0F,89,$0F,92,$F0 372 | FCB 97,$F0,104,$0F,106,$F0,109,$0F,114,$0F 373 | GROUP4 FCB 00,$0F,02,$F0,10,$F0,12,$0F,16,$F0,22,$0F,26,$F0,30,$0F 374 | FCB 33,$0F,35,$F0,44,$0F,47,$F0,51,$F0,54,$0F,56,$F0,59,$0F 375 | FCB 66,$0F,70,$F0,73,$F0,77,$0F,82,$F0,84,$0F,90,$0F,93,$F0 376 | FCB 97,$0F,100,$F0,105,$0F,108,$F0,112,$F0 377 | GROUP5 FCB 02,$0F,06,$F0,08,$0F,14,$F0,19,$0F,22,$F0,25,$F0,29,$0F 378 | FCB 36,$0F,39,$F0,41,$F0,43,$0F,48,$0F,49,$F0,60,$0F,62,$F0 379 | FCB 64,$0F,65,$F0,75,$F0,78,$0F,82,$0F,87,$F0,89,$F0,94,$0F 380 | FCB 98,$F0,101,$0F,103,$F0,107,$0F,111,$F0 381 | GROUP6 FCB 01,$F0,07,$0F,11,$0F,13,$F0,17,$0F,21,$F0,26,$0F,28,$F0 382 | FCB 32,$0F,37,$F0,42,$F0,45,$0F,49,$0F,50,$F0,56,$0F,63,$F0 383 | FCB 68,$F0,70,$0F,75,$0F,79,$F0,84,$F0,86,$0F,88,$0F,95,$F0 384 | FCB 96,$F0,102,$F0,108,$0F,111,$0F,113,$F0 385 | GROUP7 FCB 03,$0F,04,$F0,13,$0F,15,$F0,17,$F0,18,$0F,24,$F0,31,$0F 386 | FCB 38,$F0,39,$0F,40,$0F,44,$F0,52,$F0,55,$0F,59,$F0,63,$0F 387 | FCB 64,$F0,69,$0F,72,$0F,74,$F0,83,$0F,86,$F0,88,$F0,92,$0F 388 | FCB 98,$0F,100,$0F,107,$F0,112,$0F,114,$F0 389 | GROUP8 FCB 05,$F0,05,$0F,11,$F0,14,$0F,16,$0F,23,$F0,25,$0F,27,$F0 390 | FCB 36,$F0,38,$0F,40,$F0,42,$0F,53,$0F,55,$F0,57,$F0,58,$0F 391 | FCB 65,$0F,71,$F0,76,$F0,79,$0F,80,$F0,81,$0F,94,$F0,95,$0F 392 | FCB 99,$F0,102,$0F,103,$0F,105,$F0,110,$F0 393 | * 394 | *START TRANSPORTING 395 | * 396 | TRNSTV JSR TRINIT 397 | LDX RPTR 398 | BEQ TRN1X 399 | MAKP TRSPRC 400 | LDX RPTR 401 | LDD #0 402 | LDY #0 403 | PSHS D 404 | PSHS D 405 | TRN00 LDD OPICT,X 406 | STD OLDPIC,X 407 | LEAY 1,Y 408 | CMPY #15 409 | BHI TRN01 410 | CMPD ,S SAME GUY? 411 | BEQ TRN0 YES 412 | TRN01 LDY #0 413 | STD ,S SAVE NEW PICT 414 | PSHS X 415 | LDX OPICT,X 416 | JSR TRSTRT 417 | STX 4,S SAVE IMAGE 418 | PULS X SAVE NEW PICT 419 | TRN0 LDD 2,S 420 | STD OPICT,X 421 | LDX ,X 422 | BNE TRN00 423 | LEAS 4,S 424 | TRNLP JSR ROBUP OUTPUT ROBOTS 425 | JSR UPDATE UPDATE IMAGES 426 | LDX TRPTR 427 | BEQ TRN1X 428 | NAP 1,TRNLP 429 | TRN1X LDX RPTR 430 | BEQ TRN2X 431 | TRN1XL LDD OLDPIC,X RESTORE IMAGES 432 | STD OPICT,X 433 | LDX ,X 434 | BNE TRN1XL 435 | TRN2X JSR HXINIT RECOVER DATA BASE FOR HORIZ EXPLODES 436 | JMP SUCIDE 437 | * 438 | *TRANSPORTER SOUND PROCESS 439 | * 440 | TRSPRC LDD #TR1SND 441 | JSR SNDLD CLEAR OUT THE SYSTEM 442 | LDA #$48 443 | STA PD,U 444 | TRSPRL LDB #$12 445 | JSR SDOUT 446 | DEC PD,U 447 | BEQ TRSPR1 448 | NAP 1,TRSPRL 449 | TRSPR1 LDA #$24 450 | STA PD,U 451 | TRSP1L LDB #$12 452 | JSR SDOUT 453 | DEC PD,U 454 | LBEQ SUCIDE 455 | NAP 2,TRSP1L 456 | * 457 | *UPDATE YOUR ROBOTS 458 | *RAM-RAM 459 | ROBUP LDX RPTR 460 | BEQ ROBUPX 461 | ROBUPL LDY OPICT,X 462 | LDD ,Y 463 | EORA #4 464 | EORB #4 465 | SEI 466 | STD DMASIZ 467 | LDU 2,Y 468 | STU DMAORG 469 | LDD OBJX,X 470 | STD DMADES 471 | LDA #$6 472 | STA DMACTL 473 | CLI 474 | LDX ,X 475 | BNE ROBUPL 476 | ROBUPX RTS 477 | END 478 | 479 | -------------------------------------------------------------------------------- /RRTABLE.ASM: -------------------------------------------------------------------------------- 1 | OPT NOL 2 | LIB RRFRED 3 | OPT LIS 4 | 5 | TCOL1 EQU GETLRM 6 | TCOL2 EQU GETLRM+1 7 | 8 | ORG TABORG HIGH SCORE TABLE ORIGIN 9 | 10 | * PD - FONT SIZE 11 | * PD+1 NUMBER PER COLUMN 12 | * PD+2 NUMBER OF COLUMNS LEFT 13 | * PD+3 HEIGHT SPACING BETWEEN ROWS 14 | * PD+4 WIDTH SPACING BETWEEN COLUMNS 15 | * PD+5 NUMBER LEFT IN THIS COLUMN 16 | * PD+6 INDEX OF CURRENT ENTRY 17 | * PD+7 X ADDRESS DURING SLEEP 18 | * PD+9 CMOS PTR DURING SLEEP 19 | * PD+11 RETURN ADDRESS SAVE 20 | * PD+18 TOP LEVEL RETURN ADDRESS 21 | * PD+15 X RETURN 22 | * PD+16 Y RETURN 23 | * PD+17 NUMBER UNTIL SLEEP 24 | 25 | TABLE PULS D GET RETURN 26 | LDU CRPROC 27 | STD PD+18,U SAVE "RETURN ADDRESS" 28 | MAKP LOOPP START THE COLORING PROCESS 29 | JSR FRAMER PUT OUT THE FRAME 30 | LDA #$99 31 | STA TCOL1 32 | LDA #$CC 33 | STA TCOL2 34 | LDY #TODAYS POINT AT FIRST TODAYS SCORE 35 | LDU CRPROC POINT RIGHT 36 | LDA #7 USE 7 FONT 37 | STA PD,U 38 | LDD #$502 5 PER COLUMN, 2 COLUMNS 39 | STD PD+1,U 40 | LDD #$934 41 | STD PD+3,U 7 HEIGHT, 50 WIDTH 42 | LDA #1 START WITH INDEX OF 1 43 | STA PD+6,U INDEX POINTER 44 | LDX #$1A35 UPPER LEFT OF PLACE TO DO IT 45 | JSR PRJNK PRINT THE STUFF 46 | LDA #$AA 47 | STA TCOL1 NEW COLOR 48 | LDA #$DD 49 | STA TCOL2 50 | LDY #GODSCR+34 51 | JSR CLSET SET THE COLOR 52 | LDX #GODSCR+38 POINT AT LAST CHAR 53 | TABLE1 JSR RCMOSA GET A CHAR 54 | LEAX -4,X 55 | CMPA #$3A SPACE?? 56 | BNE TABLE2 NOPE 57 | CMPX #GODSCR ARE WE POINTING AT FIRST?? 58 | BHS TABLE1 59 | TABLE2 LEAX 2,X POINT AT FIRST NON BLANK 60 | PSHS X SAVE ON STACK 61 | LDX #$157A PLACE FOR GOD 62 | LDA #$31 63 | JSR PR57V 64 | LDA #$5C RIGHT PAREN 65 | JSR PR57V 66 | LEAX $300,X SPACE OVER 67 | LDY #GODSCR 68 | TABLE3 EXG X,Y SWAP CMOS, CURSOR 69 | JSR RCMOSA GET A LETTER 70 | EXG X,Y RESTORE CURSOR 71 | JSR PR57V PRINT IT 72 | CMPY ,S SEE IF WE'RE DOWN TO SPACES ONLY 73 | BLS TABLE3 74 | LEAX $200,X SPACE OVER 75 | LDY #GODSCR+40 POINT AT SCORE 76 | JSR PRSCOR PRINT OUT A SCORE (FONT IS 7 IN PD,U) 77 | 78 | STX XTEMP SAVE X 79 | LDX #GA2 80 | JSR RCMOSA 81 | CMPA #3 82 | BEQ NOINTS 83 | LDX XTEMP 84 | 85 | LEAX $500,X MOVE FOR INITIALS 86 | LDA #$5B LEFT PAREN 87 | JSR PR57V 88 | LDY #GODINT 89 | LDB #3 90 | TABL33 EXG X,Y 91 | JSR RCMOSA 92 | EXG X,Y 93 | JSR PR57V 94 | DECB 95 | BNE TABL33 96 | 97 | LDA #$5C RIGHT PAREN 98 | JSR PR57V 99 | 100 | NOINTS LDU CRPROC 101 | LDA #5 FONT 102 | STA PD,U 103 | LDD #$C03 9 ROWS BY FOUR COLUMNS 104 | STD PD+1,U 105 | LDD #$728 SPACING 106 | STD PD+3,U 107 | LDA #2 FIRST INDEX 108 | STA PD+6,U 109 | LDX #$1488 PLACE TO START 110 | LDY #CMSCOR PLACE OF SCORES 111 | BSR PRJNK 112 | 113 | LDA #SCRMES PUT OUT HEADERS ETC. 114 | JSR WRD7V DO IT 115 | 116 | MAKP DECAZ 117 | MAKP COLA 118 | MAKP COLC 119 | MAKP COLD 120 | 121 | LDU CRPROC 122 | LDA #200 123 | STA PD,U NUMBER OF FRAMES TO FREEZE 124 | TAB888 NAP 3,TABLE6 125 | TABLE6 DEC PD,U 126 | BNE TAB888 127 | 128 | LDA #$FF 129 | STA PD,U 130 | TAB777 NAP 4,TAB999 131 | TAB999 LDA PIA3 132 | ANDA #$3 ONLY 2 SWS HERE 133 | ORAA PIA2 ANY PRESSED? 134 | BEQ TABLE7 NONE PRESSED 135 | DEC PD,U 1 LESS COUNT 136 | BNE TAB777 137 | 138 | TABLE7 JMP [PD+18,U] RETURN 139 | 140 | PRJNK PULS D GET RETURN 141 | LDU CRPROC 142 | STD PD+11,U SAVE RETURN 143 | 144 | STX PD+15,U SAVE W,H RETURN STOPS 145 | STX PD+7,U 146 | STY PD+9,U 147 | 148 | LDA PD+1,U GET NUMMBER PER COLUMN 149 | STA PD+5,U MAKE THIS NUMBER LEFT IN THIS COMUMN 150 | 151 | TOD44 LDA #4 NUMBER OF ENTRIES PER SLEEP 152 | STA PD+17,U 153 | 154 | LDX PD+7,U RESTORE POINTERS 155 | LDY PD+9,U 156 | 157 | TOD33 BSR CLSET SET THE COLOR FOR THIS LINE 158 | 159 | LDB PD+6,U GET INDEX 160 | LDA #INDMES 161 | JSR PWSUB PRINT "WORD" AT PROPER HEIGHT 162 | 163 | PSHS X SAVE POINTER 164 | 165 | LDB #3 3 CHARS 166 | TOD1 EXG X,Y GET CMOS POINTER IN X 167 | JSR RCMOSA GET THE LETTER 168 | EXG X,Y 169 | 170 | JSR PCSUB PRINT THE CHARACTER PROPERLY 171 | DECB 172 | BNE TOD1 173 | 174 | PULS X GET THE INITIAL POINTER BACK 175 | LDA PD,U GET HEIGHT OF FONT 176 | LDB #3 177 | MUL 178 | LSRB 1/2 179 | INCB ADD 2 PIXELS 180 | TFR B,A 181 | LDB PD,U CHECK FOR 5 182 | CMPB #5 183 | BNE TABFIX 184 | INCA 1 MORE IN CASE OF STUPID WWW 185 | TABFIX CLRB 186 | LEAX D,X PLACE FOR SCORE 187 | 188 | JSR PRSCOR PRINT THE GUYS SCORE 189 | 190 | LDA PD+6,U 191 | ADDA #1 192 | DAA 193 | STA PD+6,U 194 | 195 | TFR X,D MOVE CURSOR OVER 196 | LDA PD+15,U RESTORE X 197 | ADDB PD+3,U ADD COLUMN SPACING 198 | TFR D,X RETURN AS POINTER 199 | 200 | DEC PD+5,U 1 LESS IN CURRENT COLUMN 201 | BEQ TOD22 DONE WITH COLUMN 202 | 203 | TOD66 DEC PD+17,U 1 LESS TILL SLEEP 204 | BNE TOD33 205 | 206 | STX PD+7,U SAVE POINTERS 207 | STY PD+9,U 208 | 209 | NAP 1,TOD44 210 | 211 | TOD22 LDD PD+15,U GET CORNER POINTER 212 | ADDA PD+4,U ADD WIDTH SPACING 213 | STA PD+15,U 214 | TFR D,X AND SHOVE IN X 215 | 216 | LDA PD+1,U GET NUMBER PER COLUMN 217 | STA PD+5,U NUMBER TO DO 218 | DEC PD+2,U NUMBER OF COLUMNS 219 | BNE TOD66 220 | 221 | JMP [PD+11,U] RETURN NOW 222 | 223 | * CLSET - Y POINTS AT SCORE-6...IF IT IS EQUAL TO 224 | * EITHER PLAYERS SCORE, AND NOT THE NEXT CMOS SCORE, 225 | * THEN THE COLOR IS CHANGED TO TCOL2, ELSE TCOL1 226 | 227 | CLSET PSHS X,Y,D 228 | LEAY 6,Y POINT AT SCORE 229 | LDX #ZP1SCR CHECK PLAYER 1'S SCORE 230 | BSR CKME 231 | BEQ CLS1 IT WAS GOOD 232 | LDB PLRCNT HOW MANY PLAYERS 233 | DECB 234 | BEQ CLS2 NO GOOD 235 | LDX #ZP2SCR 236 | BSR CKME 237 | BNE CLS2 NO GOOD 238 | CLS1 BSR CKNXT SEE IF NEXT MATCHES 239 | BEQ CLS2 IT MATCHES...HOLD OFF 240 | LDA TCOL2 USE NORMAL COLOR 241 | BRA CLS3 242 | CLS2 LDA TCOL1 243 | CLS3 STA TEXCOL 244 | PULS X,Y,D,PC 245 | 246 | * CKME BEQ FOR EQUAL 247 | * Y POINTS AT CMOS SCORE 248 | * X POINTS AT RAM SCORE 249 | 250 | CKME PSHS Y 251 | EXG X,Y CMOSER USE X 252 | JSR RCMOSA 253 | ANDA #$F 254 | LDB #4 255 | CKME2 CMPA ,Y+ DO WE MATCH 256 | BNE CKME1 NOPE 257 | JSR RCMOSA GET NEXT 258 | DECB 259 | BNE CKME2 260 | CKME1 PULS Y,PC 261 | 262 | CKNXT LEAY 1,Y PUSH PAST CHECKSUM 263 | LEAX SCRSIZ,Y X POINTS AT NEXT SCORE 264 | LDB #7 7 BYTES TO CHECK 265 | CKNXT1 LDA ,X+ 266 | EORA ,Y+ LOWER GUYS 267 | ANDA #$F 268 | BNE CKBYE NOT EQUAL 269 | DECB 270 | BNE CKNXT1 271 | CKBYE RTS 272 | 273 | PRSCOR EXG X,Y 274 | JSR RCMOSA 275 | JSR RCMOSB GET 2 BYTES OF SCORE 276 | EXG X,Y 277 | ANDA #$0F TAKE AWAY CHECK NIBBLE 278 | BNE PR2SC 2 PARTER 279 | TSTB ALL ZERO?? 280 | BNE PR2SC 281 | LDA #HIGH3 282 | BRA PR3SC 283 | PR2SC PSHS Y 284 | TFR D,Y 285 | LDA #HIGH1 286 | JSR PWSUB PRINT WORD IN PROPER FONT 287 | PULS Y RESTOE Y 288 | LDA #AUDM2 USE AUDIT TEXT FOR LOW HALF 289 | PR3SC PSHS A SAVE MESSAGE 290 | EXG X,Y 291 | JSR RCMOSD GET THE STUFF 292 | EXG X,Y 293 | PSHS Y SAVE Y AGAIN 294 | TFR D,Y PRINTED STUFF IN Y 295 | LDA 2,S RESTORE MESSAGE NUMBER 296 | BSR PWSUB PRINT IT 297 | PULS Y RESTOE Y 298 | PULS A,PC AND RETURN 299 | 300 | PWSUB PSHS U,X,A 301 | LDX #WRD7V 302 | LDA PD,U GET FONT 303 | CMPA #7 BIG?? 304 | BEQ PWSUB1 305 | LDX #WRD5V SMALL 306 | PWSUB1 TFR X,U 307 | PULS A,X 308 | JSR ,U 309 | PULS U,PC 310 | 311 | PCSUB PSHS U,X,A 312 | LDX #PR57V 313 | LDA PD,U 314 | CMPA #7 315 | BEQ PWSUB1 316 | LDX #PR35V 317 | BRA PWSUB1 318 | FCC ' ROBOTRON: 2084 ' 319 | FCC ' COPYRIGHT 1982 WILLIAMS ELECTRONICS INC. ' 320 | FCC ' ALL RIGHTS RESERVED ' 321 | 322 | * HASSLER UPPER LEFT IS $0308 323 | * HASSLER LOWER RIGHT IS $94F4 (BOTH INCLUSIVE) 324 | 325 | FRAMER PULS D GET RETURN ADDRESS 326 | LDU CRPROC 327 | STD PD+8,U AND SAVE 328 | 329 | LDX #PCRAM 330 | LDD #0 331 | FRAME7 STD ,X++ 332 | CMPX #PCRAM+16 333 | BLO FRAME7 334 | * 335 | LDX #$60D TERMINAL POINT 336 | STX PD+16,U 337 | LDA #$11 338 | STA PD+14,U 339 | * 340 | FRAME3 LDX #$3E7D 341 | STX PD+10,U 342 | LDY #$597F 343 | STY PD+12,U 344 | 345 | FRAME1 LDA #2 346 | STA PD+15,U SLEEP COUNT 347 | 348 | LDX PD+10,U 349 | LDY PD+12,U 350 | LDA PD+14,U 351 | 352 | FRAME2 JSR MARQ 353 | 354 | CMPX PD+16,U 355 | BEQ FRBYE 356 | LEAX -$102,X 357 | LEAY $102,Y 358 | BSR GETA GET THE A TO USE 359 | 360 | DEC PD+15,U 361 | BNE FRAME2 362 | 363 | STA PD+14,U 364 | STX PD+10,U 365 | STY PD+12,U 366 | NAP 1,FRAME1 NIGHTY NIGHT 367 | 368 | GETA PSHS B 369 | LDB PD+16,U 370 | CMPB #6 WRITING?? 371 | BNE GETA1 NOPE...LEAVE THE ZERO 372 | SUBA #$11 373 | BNE GETA1 374 | LDA #$88 375 | GETA1 PULS B,PC 376 | 377 | FRBYE LDX PD+16,U CHECK LIMIT 378 | CMPX #$60D 379 | BEQ FRCONT NOT DONE YET 380 | JMP [PD+8,U] RETURN 381 | FRCONT LDX #$E1D THIS IS OTHER LIMIT 382 | STX PD+16,U NEW LIMIT 383 | CLR PD+14,U STORE ZEROS 384 | JMP FRAME3 385 | 386 | LOOPP LDX #COLTAB GET FIRST OF COLOR TABLE 387 | LOOP1 LDA ,X+ GET THE NEXT BYTE 388 | BSR OUTCOL CYCLE IT IN 389 | STX PD,U SAVE X 390 | NAP 3,LOOP2 391 | LOOP2 LDX PD,U RESTORE X 392 | CMPX #TABEDD 393 | BLO LOOP1 394 | BRA LOOPP 395 | 396 | OUTCOL LDY #PCRAM+1 START AT 1 397 | OUTC1 LDB 1,Y 398 | STB ,Y+ 399 | CMPY #PCRAM+8 400 | BLO OUTC1 NOT THERE YET 401 | STA ,Y 402 | RTS 403 | 404 | COLA LDY #PCRAM+$A Y = PCRAM LOCATION 405 | LDX #CATAB X = PLACE TO START 406 | COMMM LDD #CATAB D = START OF TABLE 407 | 408 | COLENT STD PD+4,U 409 | STY PD+2,U 410 | BRA COLA4 411 | 412 | COLA3 LDX PD+4,U 413 | COLA4 STX PD,U 414 | COLA5 LDX PD,U 415 | LDA ,X+ GET NEXT BYTE 416 | BEQ COLA3 417 | STA [PD+2,U] 418 | STX PD,U 419 | NAP 4,COLA5 420 | 421 | CATAB FCB $7,$7,$7,$7,$7,$7,$7,$7,$57,$A7,$FF,$FF,$A7,$57,0 422 | 423 | CCTAB FCB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$E4,$D2,$C0,$C0,$C0 424 | FCB $D2,$E4,0 425 | 426 | DECAZ LDX #CATAB+7 OUT OF PHASE PLEASE 427 | LDY #PCRAM+9 428 | BRA COMMM 429 | 430 | COLC LDX #CCTAB+7 431 | LDY #PCRAM+$C 432 | COLLL LDD #CCTAB 433 | BRA COLENT 434 | 435 | COLD LDX #CCTAB 436 | LDY #PCRAM+$D 437 | BRA COLLL 438 | 439 | COLTAB FCB $37,$2F,$27,$1F,$17,$47,$47,$87 440 | FCB $87,$C7,$C7,$C6,$C5,$CC,$CB,$CA 441 | FCB $C0,$D0,$98,$38,$33 442 | TABEDD EQU * 443 | 444 | UPPER EQU PD 445 | LOWER EQU PD+1 446 | LEFT EQU PD+2 447 | RIGHT EQU PD+3 448 | HFLAV EQU PD+4 449 | LFLAV EQU PD+5 450 | 451 | * MARQ - DRAW A LINKY MARQUIS. PASS UPPER LEFT IN X. 452 | * PASS LOWER RIGHT IN Y. 453 | * RANGES ARE INCLUSIVE. LOWER-UPPER MUST BE EVEN (ODD INCLUSIVE) 454 | * A CONTAINS THE HIGH AND LOW FLAVOR COLORS () 455 | 456 | MARQ PSHS X,Y,D 457 | LDU CRPROC 458 | ANDA #$F0 459 | STA HFLAV,U SAVE FLAVOR COLORS 460 | LDA ,S 461 | ANDA #$0F 462 | STA LFLAV,U 463 | TFR X,D 464 | STA LEFT,U 465 | STB UPPER,U 466 | TFR Y,D 467 | STA RIGHT,U 468 | STB LOWER,U 469 | SUBB UPPER,U LOWER-UPPER ODD??? 470 | RORB CHECK 471 | BCC MARQ1 NOPE 472 | DEC LOWER,U NOT THAT LOW...OK? 473 | 474 | MARQ1 LDA UPPER,U DO TOP LINE 475 | BSR HHIGH HIGH PART OF TOP HORIZONTAL LINE 476 | INCA 477 | BSR HLOW LOW PART 478 | * 479 | LDA LOWER,U 480 | BSR HHIGH 1 LESS FOR GEN PURP 481 | DECA 482 | BSR HLOW 483 | * 484 | LDA LEFT,U LEFT BYTE 485 | BSR VHIGH HIGH FLAVOR STUFF IN A VERT LINE 486 | BSR VLOW LOW FLAVOR STUFF IN A VERT LINE 487 | * 488 | LDA RIGHT,U 489 | BSR VHIGH 490 | DECA 491 | BSR VLOW 492 | PULS D,X,Y,PC 493 | 494 | * VHIGH - PLOT VERTICAL LINE FROM [UPPER TO LOWER] 495 | * CONSISTING OF EVERY OTHER BYTE GETTING THE HIGH NIBBLE COLOR 496 | * A HAS THE X TO USE 497 | 498 | VHIGH PSHS D,X 499 | BSR SETUPV SETUP X,B 500 | INCB 1 MORE TO BE INCLUSIVE 501 | LDA HFLAV,U GET HIGH FLAVOR 502 | VHIGH1 STA ,X++ STORE THE BYTE 503 | DECB 504 | BNE VHIGH1 505 | PULS D,X,PC 506 | 507 | VLOW PSHS D,X 508 | BSR SETUPV SETUP X,B 509 | LEAX 1,X MOVE X UP 1 510 | LDA LFLAV,U USE LOW FLAVOR 511 | BRA VHIGH1 512 | 513 | SETUPV LDB UPPER,U GET UPPER Y 514 | TFR D,X THIS IS PONTER 515 | LDB LOWER,U 516 | SUBB UPPER,U THIS IS GUARANTEED EVEN 517 | LSRB 1/2 PLEASE (EVERY 2 IS PLOTTED) 518 | RTS 519 | 520 | * HHIGH - THIS ROUTINE PLOTS HIGH COLOR IN THE HIGH HALF OF 521 | * CONSECUTIVE HORIZONTAL PIXELS GOING FROM 522 | * [LEFT TO RIGHT] AT THE HEIGHT GIVEN IN REGISTER A. 523 | 524 | HHIGH PSHS X,D 525 | BSR SETUPH SETUP COUNT IN B, X POINTS AT FIRST BYTE 526 | INCB ADD 1 TO MAKE IT INCLUSIVE 527 | LDA HFLAV,U GET THE DATA BYTE 528 | HHIGH1 STA ,X STORE 1 529 | LEAX $100,X PUSH TO NEXT 530 | DECB 1 LESS 531 | BNE HHIGH1 532 | PULS X,D,PC 533 | 534 | * HLOW - THIS ROUTINE PLOTS LOW COLOR IN THE LOW HALF OF 535 | * CONSECUTIVE HORIZONTAL PIXELS GOING FROM 536 | * [LEFT TO RIGHT) AT THE HEIGHT GIVEN IN REGISTER A. 537 | 538 | HLOW PSHS X,D 539 | BSR SETUPH 540 | LDA LFLAV,U USE LOW FLAVOR 541 | BRA HHIGH1 AND DO NORMAL PROCESSING ABOVE 542 | 543 | SETUPH TFR A,B MOVE Y OVER 544 | LDA LEFT,U GET LEFT X 545 | TFR D,X MAKE POINTER 546 | LDB RIGHT,U 547 | SUBB LEFT,U FIND DIFFERENCE (EXCLUSIVE 548 | RTS AND RETURN 549 | 550 | END 551 | -------------------------------------------------------------------------------- /RRTEST2.ASM: -------------------------------------------------------------------------------- 1 | FDRET LDU #RAMERJ RAM ERROR RETURN 2 | BRA FDROM0 3 | 4 | FDROM LDU #DIG11Z 5 | FDROM0 LDS #HSTK 6 | FDROM5 LDY #FDROM6 7 | LDA #1 8 | JMP DELA1 9 | FDROM6 LDA PIA0 10 | BITA #$2 11 | BNE FDROM5 12 | FDROM1 LDY #FDROM7 13 | LDA #1 14 | JMP DELA1 15 | FDROM7 LDA PIA0 16 | BITA #$2 17 | BEQ FDROM1 18 | FDROM2 LDY #FDROM8 19 | LDA #1 20 | JMP DELA1 21 | FDROM8 LDA PIA0 22 | BITA #2 23 | BNE FDROM2 24 | JMP ,U 25 | 26 | AVWAIT PULS D 27 | LDU CRPROC 28 | STD PD+6,U 29 | AVWAIZ LDA PIA0 SEE IF ADVANCE PRESSED 30 | BITA #$2 WELL?? 31 | BNE AVWAT2 32 | NAP 1,AVWAIZ WELL, WAIT FOR IT. 33 | AVWAT2 CLR PCRAM 34 | JSR SCRCLR 35 | BRA AVWAT5 36 | AVWAT4 LDA PIA0 37 | BITA #$2 WAIT FOR IT TO BE RELEASED 38 | BEQ AVWAT3 39 | AVWAT5 NAP 2,AVWAT4 40 | AVWAT3 JMP [PD+6,U] 41 | 42 | AVCHK PSHS A 43 | LDA PIA0 44 | BITA #$2 45 | BEQ AVCHK1 46 | SEC 47 | PULS A,PC 48 | AVCHK1 CLC 49 | PULS A,PC 50 | 51 | * 52 | * DISPLAY BOOKKEEPPING 53 | * 54 | 55 | BOOK LDA #$FF 56 | STA STATUS 57 | JSR INITCM COLOR MATRIX PROPER. 58 | BSR AVCHK 59 | BCC BOOK3 60 | BSR AVWAIT WAIT FOR HIM TO LET GO. 61 | BOOK3 LDA #BOOKM 62 | JSR WRD7V PRINT THE BOOKKEEPING MESSAGE 63 | LDU #SLOT1 64 | LDA #AUDMES FIRST OF THE AUDIT MESSAGES 65 | BOOK0 PSHS A SAVE MESSAGE NUMBER 66 | JSR WRD7V PRINT IT. 67 | EXG U,X 68 | JSR RCMOSB GET THE TOP BYTE 69 | PSHS B 70 | JSR RCMOSD 71 | TFR D,Y 72 | PULS B 73 | EXG U,X 74 | BSR BOOKSB PRINT B,Y WITH APPROPRIATE BLANKING 75 | 76 | PULS A RESTORE A 77 | INCA 78 | CMPU #BKEND 79 | BLO BOOK0 THANK YOU SIR, MAY I HAVE ANOTHER?? 80 | * 81 | * COMPUTE AVERAGE PLAY TIME, AVERAGE LIVES PER GAME 82 | * 83 | 84 | LDA #AVTIM 85 | JSR WRD7V 86 | 87 | PSHS X 88 | LDX #BKTIME 89 | LDY #BKPLAY PLAYS 90 | JSR BCDIV DO THE DIVIDE 91 | PULS X 92 | 93 | LDB QUO GET TOP OF QUOTIENT 94 | LDY QUO+1 95 | 96 | BSR BOOKSB PRINT OUT TH 6 WITH THE RITE KIND OF BLANKING 97 | 98 | LDA QUO+3 GET 100THS 99 | ANDA #$F 1/10 100 | STA DVTEMP SAVE 101 | 102 | LDA QUO+3 103 | BITA #$10 1 IN THE 10'S 104 | BEQ BOOK45 105 | 106 | ANDA #$EF TAKE THE BIT AWAY 107 | LSRA 1/2 108 | ADDA #5 RESTORE THE WHATEVER 109 | DAA 110 | BRA BOOK46 111 | 112 | BOOK45 LSRA 1/2 113 | BOOK46 ADDA DVTEMP ADD THE 1/10 114 | DAA 115 | TFR A,B 116 | 117 | LDA #AVTEND 118 | JSR WRD7V PUT OUT : END 119 | 120 | LDA #AVPLA 121 | JSR WRD7V 122 | 123 | PSHS X 124 | LDX #BKMEN 125 | LDY #BKPLAY PLAYS 126 | BSR BCDIV DO THE DIVIDE 127 | PULS X 128 | 129 | LDB QUO GET TOP OF QUOTIENT 130 | LDY QUO+1 131 | 132 | BSR BOOKSB PRINT OUT TH 6 WITH THE RITE KIND OF BLANKING 133 | 134 | LDB QUO+3 GET 100THS 135 | LDA #AVPLEN 136 | JSR WRD7V 137 | 138 | JSR AVWAIT 139 | JMP ADJV NOW GO DO ADJUSTMENT MODE 140 | 141 | BOOKSB TSTB 142 | BEQ BOOK1 143 | LDA #AUDM1 144 | JSR WRD7V FULL SIX DIGITS USED 145 | LDA #AUDM2 146 | JSR WRD7V 147 | BRA BOOK2 148 | BOOK1 LDA #AUDM3 149 | JSR WRD7V 150 | BOOK2 RTS 151 | 152 | CBCDA PSHS B 153 | JSR RCMOSA GET THE BYTE 154 | TFR A,B 155 | ANDA #$F 156 | CMPA #$9 157 | BLS CMCDB 158 | LDA #9 159 | CMCDB ANDB #$F0 160 | CMPB #$90 161 | BLS CMCDC 162 | LDB #$90 163 | CMCDC PSHS B 164 | ORA ,S+ 165 | PULS B,PC 166 | 167 | * DIVIDE - PASS X POINTS AT DIVIDEND 168 | * PASS Y POINTS AT DIVISOR 169 | * QUOTIENT 4 BYTES AT QUO IN BCD WITH 100THS 170 | * QUO: QQ QQ QQ . DD 171 | 172 | BCDIV PSHS X,Y,D,U 173 | LDD #0 174 | STD QUO 175 | STD QUO+2 ZERO QUOTIENT IN CASE OF ZERO DIVIDE 176 | 177 | BSR CBCDA GET 2 BYTES OF DIVIDEND 178 | STA DIV 179 | BSR CBCDA 180 | STA DIV+1 181 | BSR CBCDA 182 | STA DIV+2 183 | LDD #0 184 | STA DIV+3 185 | STD DIV+4 186 | STA DIVSOR+3 187 | STD DIVSOR+4 188 | 189 | TFR Y,X POINT AT DIVISOR 190 | JSR CBCDA 191 | STA DIVSOR 192 | JSR CBCDA 193 | STA DIVSOR+1 194 | JSR CBCDA 195 | STA DIVSOR+2 196 | 197 | BNE BCDIV1 NOT ZERO....WE MAY CONTIUE 198 | 199 | LDD DIVSOR CHECK FOR ALL ZERO 200 | BEQ DIVEX EXIT...ZERO DIVISOR 201 | 202 | BCDIV1 LDU #QUO+2 POINT AT UNITS QUOTIENT VALUE 203 | 204 | BCDIV4 TST DIVSOR WE NEED TO SHIFT DIVISOR DOWN 205 | BNE BCDIV2 ITS IN THE RANGE WE LIKE 206 | 207 | LEAU -1,U MOVE TO PROPER SIGNIF 208 | 209 | LDB #5 BYTES TO SHIFT 210 | LDX #DIVSOR 211 | BCDIV3 LDA 1,X 212 | STA 0,X+ 213 | DECB 214 | BNE BCDIV3 215 | CLR ,X SHIFT IN ZEROS 216 | 217 | BRA BCDIV4 218 | 219 | BCDIV2 LDX #DIV 220 | 221 | BCDIV5 BSR SUBME DO A SUBTRACT 222 | BCC BCDIV5 DONE WITH THIS DIGIT 223 | 224 | LDY #DIVSOR+5 LAST DIGIT 225 | LDB #5 SHIFT 3 DOWN 226 | 227 | BCDIV6 LDA -1,Y GET PREVIOUS BYTE 228 | STA ,Y 229 | LEAY -1,Y PUSH BACK 230 | DECB 231 | BNE BCDIV6 232 | CLR ,Y SHIFTED 233 | 234 | LEAU 1,U 235 | CMPU #QUO+3 LAST QUO BYTE 236 | BLS BCDIV5 237 | DIVEX PULS X,Y,D,U,PC 238 | 239 | SUBME LDY #DIVSOR POINT AT DIVISOR 240 | LDA #0 MAKE SURE WE FIT 241 | SUBM1 LDB A,X GET DIVIDEND BYTE (MUST BE LARGER) 242 | SUBB ,Y+ WELL?? 243 | BHI SUBGO IT IS 244 | BLO SUBBYE IT ISN'T..DONE 245 | 246 | INCA 247 | CMPA #6 248 | BLO SUBM1 249 | 250 | SUBGO LDB #6 251 | LDY #DIVTMP 252 | SUBGO1 LDA #$99 GET A BYTE 253 | SUBA 6,Y 254 | STA ,Y+ 255 | DECB 256 | BNE SUBGO1 257 | 258 | LDB #6 259 | CLC 260 | LDA #1 261 | SUBGO2 ADCA ,-Y 262 | DAA 263 | STA ,Y AND STORE BACK 264 | LDA #0 265 | DECB 266 | BNE SUBGO2 267 | 268 | LDB #5 INITIAL OFFSET WHILE WALKING 269 | LDY #DIVTMP+6 270 | CLC 271 | SUBGO3 LDA ,-Y GET THE SUBTREHEND 272 | ADCA B,X "SUBTRACT" FROM DIVISOR 273 | DAA 274 | STA B,X STORE BACK TO DIVISOR 275 | DECB 276 | BPL SUBGO3 277 | LDA ,U GET CURRENT QUOTIENT BYTE 278 | ADDA #1 279 | DAA 280 | STA ,U KICK IT 281 | CLC 282 | RTS 283 | 284 | SUBBYE SEC 285 | RTS 286 | 287 | * 288 | * SOUND TEST 289 | * 290 | 291 | SNDSRT JSR SCRCLR CLEAR THE SCREEN 292 | SNDSR1 LDD #$FE01 SET UP FOR SOUND LINE 1 293 | STD PD,U 294 | RTS 295 | 296 | SNDCYC PULS D 297 | STD PD+6,U 298 | LDA #$3F 299 | STA SOUND 300 | NAP 1,SNDC55 301 | SNDC55 LDA #$2C 302 | STA SOUND 303 | NAP 1,SNDCY6 304 | SNDCY6 LDA #$3F 305 | STA SOUND 306 | NAP 1,SNDCY1 307 | SNDCY1 LDD PD,U 308 | ANDA #$3F 309 | STA SOUND 310 | LDA #SNDTEX 311 | JSR WRD7V 312 | LDA #$40 313 | STA PD+4,U 314 | SNDCY4 NAP 1,SNDCY5 315 | SNDCY5 JSR AVCHK ADVANCE??? 316 | BCS SNDCY3 THEN GO 317 | DEC PD+4,U 318 | BNE SNDCY4 319 | SNDCY3 LDA PD+2,U SEE WHO SET THIS UP?? 320 | BNE SNDC90 AUTOCY DID....ALWAYS ADVANCE 321 | LDA PIA0 CHECK MANUAL/AUTO 322 | RORA 323 | BCC SNDC91 MANUAL...DON'T MOVE ON. 324 | SNDC90 LDD PD,U 325 | SEC 326 | ROLA MOVE TO NEXT LINE 327 | INCB 328 | CMPB #7 UP TO LINE 7?? 329 | BLO SNDCY2 330 | BSR SNDSR1 331 | SNDCY2 STD PD,U 332 | SNDC91 JMP [PD+6,U] 333 | 334 | * 335 | * CMOS RAM TEST 336 | * 337 | 338 | CMTEST LDX #CMOS 339 | LDY #RAMALS USE SAMRAM 340 | CMTST1 LDA ,X+ DON'T DO DOUBLES BECAUSE OF HARDWARE BRAIN DAM. 341 | STA ,Y+ 342 | CMPX #CMOS+$400 DONE?? 343 | BNE CMTST1 344 | LDB #6 ENOUGH ITERATIONS TO ASSURE 345 | ORCC #$3F STOP INTERRUPTS 346 | CMTST2 LDU HSEED 347 | LDY SEED 348 | LDX #CMOS 349 | CMTST3 JSR RAND 350 | STA ,X+ 351 | LDA #WDATA 352 | STA WDOG 353 | CMPX #CMOS+$400 DONE?? 354 | BNE CMTST3 355 | STY SEED RESTORE SEED 356 | STU HSEED 357 | LDX #CMOS 358 | CMTST4 JSR RAND 359 | EORA ,X+ 360 | ANDA #$F 361 | BNE CMEROR 362 | LDA #WDATA 363 | STA WDOG 364 | CMPX #CMOS+$400 365 | BNE CMTST4 366 | DECB ANOTHER PASS...DONE?? 367 | BNE CMTST2 368 | BSR RAMBAK 369 | CLC CLEAR IT FOR REAL 370 | RTS AND RETURN 371 | 372 | RAMBAK LDU #RAMALS 373 | LDY #CMOS 374 | RAMBK0 LDA ,U+ 375 | STA ,Y+ 376 | CMPY #CMOS+$400 377 | BNE RAMBK0 378 | RTS 379 | 380 | CMEROR BSR RAMBAK 381 | SEC 382 | RTS 383 | 384 | * RAM TEST....Y = PLACE TO RETURN IF NO ERROR 385 | * X = SEED TO START WITH 386 | * A = ITERATIONS TO MAKE 387 | 388 | RAMTST ORCC #$3F NO INTERRUPTS DURING TEST 389 | CLR RWCNTL SET TO RAM READ 390 | TFR A,DP COUNT AT DP. 391 | TFR X,D START WITH A PASSED SEED. 392 | RAM2 TFR D,U SAVE THE SEED 393 | RAM0 LDX #0 MEMORY POINTER 394 | RAM3 COMB DONT ASK 395 | BITB #9 396 | BNE RAM4 397 | COMB 398 | RORA 399 | RORB 400 | BRA RAM6 401 | RAM4 COMB 402 | BITB #9 403 | BNE RAM5 404 | RORA 405 | RORB 406 | BRA RAM6 407 | RAM5 LSRA 408 | RORB 409 | RAM6 STD ,X++ 410 | EXG X,D SINCE IRQ RUNS OUT OF RAM, STROKE ROVER 411 | TSTB 412 | BNE RAM6B EVERY 256! 413 | LDB #WDATA 414 | STB WDOG HAVE A BONE..EVER BEEN BONED..... 415 | TFR DP,B CHECK IS NORMAL DIAGS 416 | CMPB #$FF FF MEANS FRONT DOOR 417 | BNE RAM6C 418 | LDB PIA0 CHECK FOR ADV. 419 | BITB #2 420 | BEQ RAM6C NOT PRESSED. 421 | JMP ,Y TIME TO RETURN 422 | RAM6C CLRB RETURN B TO ZERO 423 | RAM6B EXG X,D TRADE BACK 424 | CMPX #RAMTOP DONE?? 425 | BNE RAM3 NOPE..CONTINUE 426 | * 427 | TFR U,D RESTORE SEED. 428 | LDX #0 429 | RAM7 COMB 430 | BITB #9 431 | BNE RAM8 432 | COMB 433 | RORA 434 | RORB 435 | BRA RAM10 436 | RAM8 COMB 437 | BITB #9 438 | BNE RAM9 439 | RORA 440 | RORB 441 | BRA RAM10 442 | RAM9 LSRA 443 | RORB 444 | RAM10 CMPD ,X++ 445 | BNE RERROR RAM ERROR! 446 | RAM25 EXG X,D CHECK FOR END OF PAGE 447 | TSTB 448 | BNE RAM17 449 | LDB #WDATA 450 | STB WDOG 451 | TFR DP,B SEE IF NORMAL RUN 452 | CMPB #$FF FRONT DOOR?? 453 | BNE RAM17C NOPE 454 | LDB PIA0 CHECK ADV. 455 | BITB #2 456 | BEQ RAM17C 457 | JMP ,Y JUST RETURN (NO ERRORS) 458 | RAM17C CLRB 459 | RAM17 EXG X,D TRADE BACK 460 | CPX #RAMTOP DONE?? 461 | BNE RAM7 462 | TFR D,U SHOVE NEW SEED OVER 463 | TFR DP,A 464 | CMPA #$FF FF INDICATES FRONT DOOR 465 | BNE RAM99 466 | TFR U,D 467 | JMP RAM0 DO ANOTHER ITERATION IN THIS TEST. 468 | RAM99 DECA TAKE ONE AWAY 469 | TFR A,DP RETURN 470 | CMPA #$80 ZERO OUT IN AUTO CYCLE??? 471 | BEQ RAM99Z YEP.... 472 | TSTA SET FOR BELOW BRANCH 473 | TFR U,D MAKE SEED AND SAVED SEED LOOK ALIKE 474 | LBNE RAM0 DO ANOTHER ITERATION 475 | RAM99Z LDB #1 SET BACK TO ROM 476 | STB RWCNTL 477 | JMP ,Y RETURN 478 | RERROR LEAX -2,X BACK TO ERROR POINT 479 | EORA ,X FIND DIFFERENCE. 480 | EORB 1,X 481 | TSTA NO DIFFERENCE? 482 | BNE RERR2 DIFF. 483 | TSTB 484 | BNE RERR2 485 | LEAX 2,X UNDO THIS BULLSHIT...MAYBE ALPHA BABY. 486 | BRA RAM25 AND CONTINUE 487 | RERR2 LDU #$30 FIND BANK NUMBER 488 | EXG X,D 489 | CLRB 490 | EXG X,D 491 | RERR0 CMPX #0 492 | BEQ RERR1 DONE. 493 | LEAX -$100,X 494 | LEAU $10,U 495 | CMPU #$30 496 | BLS RERR0 497 | LDU #$10 498 | BRA RERR0 499 | RERR1 LEAU 1,U 500 | ASRA 501 | BCS RERR5 THIS IS THE BIT 502 | ASRB 503 | BCS RERR5 504 | BRA RERR1 505 | 506 | RERR5 TFR U,D BRING THE BANK,BIT INTO B 507 | LDA #1 INDICATE RAM ERROR 508 | STA RWCNTL BACK TO THAT JAZZ 509 | LDS #RERR6 RETURN HERE 510 | BRA PULSE PULSE THE LEDS 511 | RERR6 LDA #RAM>>8 512 | TFR A,DP 513 | TFR CC,A 514 | COMA 515 | BITA #$C0 INITIAL TEST??? 516 | BEQ RER098 YEP 517 | LDA #FDRAMM 518 | BRA RER099 519 | RER098 LDA #RERRM 520 | RER099 LDS #HSTK SET UP THE STACK 521 | JSR SCRCLR 522 | JSR WRD7V PRINT THE MESSAGE. 523 | TFR CC,A SEE WHICH TEST 524 | BITA #$40 FIRQ SAYS FRONT DOOR 525 | BNE REROR7 NOPE 526 | JMP FDRET DO THE FRONT DOOR RETURN 527 | REROR7 LDY #INIT OTHERWISE START...TRY AND RUN THE GAME. 528 | BRA DELAY 529 | 530 | DELAY LDA #32 531 | DELA1 LDX #$5800 532 | DELA2 LEAX -1,X 533 | LDB #WDATA 534 | STB WDOG 535 | CMPX #0 536 | BNE DELA2 537 | DECA 538 | BNE DELA1 539 | JMP ,Y RETURN 540 | 541 | * 542 | * PULSE......PUT SOME CRAP IN LED'S 543 | * LOW HALF OF A IS ERROR CODE... 544 | * BOTH HALVES OF B ARE THE RELEVANT DATA. 545 | * 546 | 547 | PULSE TFR D,U SAVE A,B 548 | LDA #2 549 | TFR A,DP 550 | PULSE0 TFR U,D 551 | LDY #PULSE1 552 | BRA PSSUB 553 | PULSE1 LDA #2 554 | LDY #PULSE2 555 | BRA DELA1 556 | PULSE2 LDY #PULSE3 557 | BRA BLKLED 558 | PULSE3 LDA #1 559 | LDY #PULSE4 560 | BRA DELA1 561 | PULSE4 TFR U,D GET DATA BACK 562 | TFR B,A SHIFT B DOWN 563 | LSRA 564 | LSRA 565 | LSRA 566 | LSRA PROPER HALF 567 | LDY #PULSE5 568 | BRA PSSUB PULSE IT. 569 | PULSE5 LDA #2 570 | LDY #PULSE6 571 | BRA DELA1 572 | PULSE6 LDY #PULSE7 573 | BRA BLKLED 574 | PULSE7 LDA #1 575 | LDY #PULSE8 576 | BRA DELA1 577 | PULSE8 TFR U,D 578 | TFR B,A 579 | LDY #PULSE9 580 | BRA PSSUB 581 | PULSE9 LDA #2 582 | LDY #PULS10 583 | BRA DELA1 584 | PULS10 LDY #PULS11 585 | BRA BLKLED 586 | PULS11 LDA #5 587 | LDY #PULS12 588 | JMP DELA1 589 | PULS12 TFR DP,A SEE IF FIRST PASS?? 590 | DECA 591 | TFR A,DP 592 | BNE PULSE0 593 | LDY #PULS95 594 | BRA BLKLED BLANK EM. 595 | PULS95 TFR U,D RESTORE D 596 | JMP ,S AND RETURN 597 | 598 | BLKLED LDA #$3C 599 | STA PIA0+1 600 | INCA 601 | STA PIA1+1 602 | LDA #$C0 603 | STA PIA1 604 | JMP ,Y AND RETURN 605 | 606 | * PSSUB - PUT LOW HALF OF A TO LEDS 607 | 608 | PSSUB TFR A,B SAVE A COPY. 609 | RORA BIT 0 - CARRY 610 | RORA BIT 0 - BIT 7 611 | RORA BIT 0 - BIT 6 612 | ANDA #$C0 613 | STA PIA1 THOSE BITS OUT. 614 | LDA #$34 ASSUME ZERO 615 | BITB #$4 SEE IF 1 616 | BEQ PSSUB1 NOPE 617 | LDA #$3C 618 | PSSUB1 STA PIA1+1 THATS ALL FOR THAT BIT 619 | LDA #$34 620 | BITB #$8 621 | BEQ PSSUB2 622 | LDA #$3C 623 | PSSUB2 STA PIA0+1 624 | JMP ,Y AND RETURN 625 | 626 | ROMTST ORCC #$3F NO INTERRUPTS WHILE THIS RUNS 627 | LDX #ROMTAB INDEX INTO TABLE 628 | ROM0 CMPX #ROMEND DONE?? 629 | BEQ ROMDUN YEP 630 | LDA 1,X LOOK TO SEE IF PART STUFFED?? 631 | BEQ ROMBOT NOPE...MOVE TO NEXT 632 | LDA ,X GET BASE 633 | CLRB 634 | TFR D,U USE U TO POINT THROUGH 635 | LDA #WDATA FOR ROVER 636 | ROM1 ADDB ,U+ ADD A BYTE 637 | STA WDOG 638 | EXG D,U SEE IF DUN 639 | CMPA 2,X ARE WE TO NEXT PART 640 | EXG D,U CHANGE BACK 641 | BNE ROM1 NOPE 642 | CMPB 1,X EXPECTED SUM??? 643 | BNE ROMERR NOPE....LETS SEND OUT PROBLEM WARNING. 644 | ROMBOT LEAX 2,X MOVE TO NEXT PART 645 | BRA ROM0 646 | ROMERR LDA ,X GET THE ADDRESS OF THE BAD PART 647 | LSRA 648 | LSRA 649 | LSRA 650 | LSRA 651 | CMPA #$D ONE OF TOP 3 PARTS?? 652 | BLO ROMER1 NOPE 653 | SUBA #4 GROUP THEM WITH THE LOWER PARTS 654 | ROMER1 ADDA #1 MAKE ERRORS FROM 1-12 655 | DAA AND MAKE BCK 656 | TFR A,B 657 | LDA #2 ROM ERROR 658 | LDS #RERR3 RETURN 659 | JMP PULSE AND SEND OUT THE CODE 660 | RERR3 LDA #RAM>>8 661 | TFR A,DP 662 | LDA #WDATA 663 | STA WDOG 664 | LDS #HSTK 665 | JSR SCRCLR 666 | TFR CC,A 667 | COMA 668 | BITA #$C0 INITIAL TEST?? 669 | BEQ RERR94 670 | LDA #FDROMM 671 | BRA RERR95 672 | RERR94 LDA #ROMERM 673 | RERR95 JSR WRD7V PUT THE MESSAGE ON THE SCREEN 674 | TFR CC,B SEE WHERE WE CAM FROM 675 | BITB #$40 FIRQ SAYS FRONT DOOR 676 | BNE ROMER3 677 | JMP FDROM 678 | ROMER3 LDY #INIT NOW TRY AND RUN THE GAME 679 | JMP DELAY BUT NOT UNTIL A SHORT DELAY. 680 | ROMDUN JMP ,Y ALL ROMS OK...RETURN. 681 | 682 | * ROMTAB - THIS TABLE INDICATES THE BASE OF THE PART, AND THE 683 | * RESULTING SUM. IF SUM=0 THEN PART IS NOT STUFFED. 684 | 685 | ROMTAB FCB $00,0 0000 686 | FCB $10,0 1000 687 | FCB $20,0 2000 688 | FCB $30,0 3000 689 | FCB $40,0 4000 690 | FCB $50,0 5000 691 | FCB $60,0 6000 692 | FCB $70,0 7000 693 | FCB $80,0 8000 694 | FCB $90,0 9000 695 | FCB $A0,0 A000 696 | FCB $B0,0 B000 697 | FCB $C0,0 C000 698 | FCB $D0,0 D000 699 | FCB $E0,0 E000 700 | FCB $F0,0 F000 701 | ROMEND FCB 0 702 | FCB 0 CHECK BYTE (FUDGER) FOR THIS PART ($F000) 703 | 704 | FCC '(C)1982 WILLIAMS ELEC.INC' 705 | 706 | ORG $FFF0 707 | FDB PWRUPV,PWRUPV,PWRUPV,PWRUPV 708 | FDB PWRUPV 709 | FDB PWRUPV,PWRUPV,PWRUPV 710 | 711 | END 712 | 713 | -------------------------------------------------------------------------------- /RRTEXT.ASM: -------------------------------------------------------------------------------- 1 | OPT NOL 2 | LIB RRFRED INCLUDE THE TEMP GUY 3 | OPT LIS 4 | 5 | * SPECIAL CHARACTER NAMES 6 | 7 | SPACE EQU $3A 8 | EXPT EQU $3B 9 | COMMA EQU $3C 10 | PERIOD EQU $3D 11 | ARROW EQU $3E 12 | BLANKR EQU ARROW BLOCK OF FF'S FOR BLANKING 13 | COLON EQU $3F 14 | HYPHEN EQU $40 15 | LPAREN EQU $5B 16 | RPAREN EQU $5C 17 | FROB EQU $5D 18 | SLASH EQU $5E 19 | LASCAR EQU $5E LAST CHARACTER 20 | 21 | CLRDEF EQU $11 COLOR 1 IS DEFAULT 22 | 23 | ORG TXORG 24 | 25 | JMP PRNT35 26 | JMP PRNT57 27 | JMP WORD35 28 | JMP WORD57 29 | JMP PRINIT 30 | JMP EUGSCR 31 | 32 | PRINIT PSHS A BE NICE TO THE CALLER 33 | LDA #CLRDEF DEFAULT COLOR 34 | STA TEXCOL PUT IT DOWN 35 | PULS A 36 | PRRST PSHS A 37 | LDA #$7 38 | STA TXFONT 39 | CLR TXFLAV NO FLAVORS NOW 40 | CLR TEXMFL LEFT MARGIN FLAVOR 41 | CLR TXCLIP 42 | LDA #1 43 | STA TXLEAD LEAD ZERO BLANKING ON 44 | STX TEXMAR SET CURRENT CURSOR POSITION AS LEFT MARGIN 45 | PULS A,PC AND RETURN FOR NOW 46 | 47 | PRNT35 PSHS D,Y,U 48 | LDB #WDATA IN CASE OF LONG PHRASE AT START OR OTHER 49 | STB WDOG 50 | LDB #5 51 | STB TXFONT 52 | CMPA #$20 REAL SPACE 53 | BNE PR3501 NO 54 | LDA #SPACE THEN USE OUR RENDITION 55 | PR3501 LDY TAB35 56 | CMPA #LASCAR INVALID CALL 57 | BHI PRNOPR THEN ABORT 58 | SUBA #$30 GET A NICE OFFSET 59 | BCS PRNOPR OUT OF RANGE 60 | ASLA WORDS BABY. 61 | LDY A,Y LOAD ADDRESS OF CHARACTER START. 62 | LDA 0,Y GET WIDTH (IN PIXELS) 63 | LSRA 1/2 MAKES BYTES 64 | INCA GIVE EXTRA FOR FLAVORING COLUMN 65 | EORA #4 BD 66 | LDB #1 5 XOR 4 = 1 67 | PSHS CC,Y SAVE CURRENT CONDITION CODE, DEST POINTER 68 | SEI THEN SET 69 | STD HORIZ 70 | LEAY 1,Y NOW POINT AT DATA 71 | STY ORIG SEND TO DMA (YES THE DMA!) 72 | LDA TEXCOL GET THE CURRENT COLOR 73 | STA CONST CONSTANTLY 74 | STX DEST CURSOR IS WHERE ITS GOING 75 | LDA #$1A 76 | LDB TXFLAV CHECK OUT FLAVOR 77 | BEQ PR3502 78 | PR3555 LDA #$3A 79 | PR3502 STA CONTRL 80 | PULS CC,Y RESTORE INTERRUPT THE WAY WE WERE! 81 | LDA 0,Y GET WIDTH BACK 82 | INCA ADD THE SPACE 83 | CLRB 84 | LSRA BACK TO BYTES 85 | LEAX D,X KICK X BYTES 86 | BCC PRNOPR FLAVOR IS UNCHANGED 87 | LDA TXFLAV CHECK FLAVOR 88 | BEQ PRNOP1 IT WAS EVEN 89 | LEAX $100,X EXTRA FOR FLAVOR OVER FLOW 90 | CLRB 91 | BRA PRNOP2 92 | PRNOP1 LDB #$FF 93 | PRNOP2 STB TXFLAV 94 | PRNOPR PULS D,Y,U,PC 95 | 96 | PRNT57 PSHS D,Y,U 97 | LDB #WDATA 98 | STB WDOG BONE ME 99 | LDB #7 100 | STB TXFONT 101 | CMPA #$20 REAL SPACE 102 | BNE PR570Z NO 103 | LDA #SPACE THEN USE OUR RENDITION 104 | PR570Z LDY TAB57 105 | CMPA #LASCAR INVALID CALL 106 | BHI PRNOPR THEN ABORT 107 | SUBA #$30 GET A NICE OFFSET 108 | BCS PRNOPR OUT OF RANGE 109 | ASLA WORDS BABY. 110 | LDY A,Y LOAD ADDRESS OF CHARACTER START. 111 | LDA 0,Y GET WIDTH (IN PIXELS) 112 | LSRA 1/2 MAKES BYTES 113 | INCA GIVE EXTRA FOR FLAVORING COLUMN 114 | EORA #4 115 | LDB TXCLIP GET CLIP FACTOR 116 | BLE CLNOC NEGATIVE OR ZERO, JUST ADD CLIP NUMBER 117 | NEGB CLIP IS FROM TOP, SUBTRACT FROM 6 118 | CLNOC ADDB #6 ADD CLIP TO 6 119 | EORB #4 AND PLEASE THE SHIT OUT OF GREGGY 120 | PSHS CC,Y SAVE INTERRUPT STATE, DATA POINTER 121 | SEI 122 | STD HORIZ 123 | LEAY 1,Y NOW POINT AT DATA 124 | LDB TXCLIP CHECK CLIP AGAIN 125 | BLE CLNO1 START FROM TOP OF GUY IF ZERO OR NEG 126 | EORA #4 GET BYTE WIDTH BACK 127 | MUL FORM BYTES TO CLIP 128 | LEAY B,Y AND START FROM THERE 129 | CLNO1 STY ORIG SEND TO DMA (YES THE DMA!) 130 | LDA TEXCOL GET THE CURRENT COLOR 131 | STA CONST CONSTANTLY 132 | STX DEST CURSOR IS WHERE ITS GOING 133 | LDA #$1A 134 | LDB TXFLAV CHECK OUT FLAVOR 135 | BEQ PR3502 136 | BRA PR3555 DO ODD FLAVOR AND REST LIKE 35 137 | 138 | * PRNUM5, PRNUM7 - THESE ROUTINES WILL PRINT NUMBERS AT THE CURRENT 139 | * CURSOR POSITION (BASED ON X AND TXFLAV) IN THE HEIGHT INDICATE 140 | * BY THE ENTRYPOINT. THE NUMBERS ARE TO BE PASSED IN D. 141 | * THE RAM LOCATION TXLEAD INDICATES THAT LEAD ZERO BLANKING 142 | * IS TO TAKE PLACE (IF = 1). 143 | 144 | PRNM25 CLR TXFLAV 145 | PSHS D,Y,U 146 | LDA #5 147 | CLRB 148 | BRA PRNM3 149 | 150 | PRN25L CLR TXFLAV 151 | PSHS D,Y,U 152 | LDA #5 153 | LDB #1 154 | BRA PRNM3 155 | 156 | PRN27L CLR TXFLAV 157 | PSHS D,Y,U 158 | LDA #7 159 | LDB #1 160 | BRA PRNM3 161 | 162 | EUGSCR CLR TXFLAV 163 | PSHS D,Y,U 164 | LDB #7 165 | STB TXFONT 166 | LDB #2 BLANKING TYPE 167 | STB TXLEAD 168 | BSR PNUMHI 169 | LDA ,S RESTORE A 170 | BSR PNUMLO 171 | PULS D,Y,U,PC 172 | 173 | PRNM27 CLR TXFLAV 174 | PSHS D,Y,U 175 | LDA #7 176 | CLRB 177 | PRNM3 STA TXFONT 178 | STB TXLEAD 179 | LDA 0,S RESTORE A 180 | BRA PRNM4 181 | 182 | PRNUM2 PSHS D,Y,U 183 | PRNM4 CLR TEXTP3 LEAD ZERO GUY 184 | PRNM44 BSR PNUMHI HIGH HALF 185 | INC TEXTP3 186 | LDA 0,S 187 | BSR PNUMLO 188 | PULS D,Y,U,PC 189 | 190 | PRNUM5 CLR TXFLAV 191 | PSHS D,Y,U 192 | LDA #5 193 | CLRB 194 | BRA PRNM0 195 | 196 | PRNM5L CLR TXFLAV 197 | PSHS D,Y,U 198 | LDA #5 199 | LDB #1 200 | BRA PRNM0 201 | 202 | PRNM7L CLR TXFLAV 203 | PSHS D,Y,U 204 | LDA #7 205 | LDB #1 206 | BRA PRNM0 207 | 208 | PRNUM7 CLR TXFLAV 209 | PSHS D,Y,U 210 | LDA #7 211 | CLRB 212 | PRNM0 STA TXFONT 213 | STB TXLEAD 214 | LDA 0,S RESTORE A 215 | BRA PRNM1 216 | 217 | PRNUM PSHS D,Y,U 218 | PRNM1 CLR TEXTP3 INDICATE THAT LEAD ZERO IN EFFECT 219 | BSR PNUMHI HIGH HALF OF A 220 | LDA 0,S 221 | BSR PNUMLO LOW HALF OF A 222 | LDA 1,S GET B 223 | BSR PNUMHI HIGH HALF OF B 224 | INC TEXTP3 KILL ZERO BLANKING 225 | LDA 1,S GET B BACK 226 | BSR PNUMLO 227 | PULS D,Y,U,PC RESTORE AND RETURN 228 | 229 | PNUMHI LSRA SHIFT HIGH HALF TO LOW 230 | LSRA 231 | LSRA 232 | LSRA 233 | PNUMLO ANDA #$0F KILL HIGH HALF FOR THIS ENTRYPOINT 234 | BNE PRNTIM NOT ZERO....BLANKING INCONSEQUENTIAL 235 | LDB TEXTP3 236 | BNE PRNTIM NO BLANKING ON THIS DIGIT 237 | LDB TXLEAD LEAD ZERO BLANK IN EFFECT?? 238 | BNE BLANZZ YEP....DON'T DO THIS DIGIT! 239 | PRNTIM INC TEXTP3 TIME TO PRINT...NO MORE BLANKING 240 | ADDA #$30 BASE OF FIRST NUMBER 241 | LDB TXFONT FONT?? 242 | CMPB #7 LARGE 243 | LBEQ PRNT57 ROUTINE TO PRINT 5 X 7 S 244 | JMP PRNT35 245 | BLANZZ CMPB #2 SPACE BLANKING?? 246 | BNE BLANZ1 YEP 247 | LEAX $200,X PUSH FOR SMALL CHARACTER 248 | LDB TXFONT 249 | CMPB #5 250 | BEQ BLANZ1 251 | LEAX $100,X 252 | BLANZ1 RTS 253 | 254 | ***** 255 | * STRING PROCESSING 256 | ***** 257 | 258 | * CONTROL CHARACTERS : 259 | 260 | * NEWLINE - $1 WORTHLESS...DOES NOTHING . 261 | 262 | * RETURN - $2 SAME AS NEWLINE 263 | 264 | * LINE FEED - $3 SAME AS NEWLINE 265 | 266 | * SET COLOR - $4 THIS WILL CAUSE THE PRINTING COLOR TO BE 267 | * CHANGED TO THE BYTE FOLLOWING THIS 268 | 269 | * HYPER CURSOR - $5 THIS WILL SET THE CURSOR TO THE -THREE- 270 | * BYTE IMMEDIATE POSITION (CURSOR,FLAVOR) (RELATIVE) 271 | 272 | * SET LEFT MARGIN - $6 THIS WILL SET THE LEFT MARGIN TO THE -THREE- 273 | * BYTE IMMEDIATE POSITION (CURSOR,FLAVOR) (RELATIVE) 274 | 275 | * SET LARGE FONT - $7 THIS WILL SET NEW FONT HEIGHT TO SEVEN PIXEL. 276 | 277 | * SET SMALL FONT - $8 THIS WILL SET NEW FONT HEIGHT TO FIVE PIXEL. 278 | 279 | * LEAD ZERO BLANK ON - $9 280 | 281 | * LEAD ZERO BLANK OFF - $A 282 | 283 | * 4 DIGIT NUMBER IMM. - $B FOLLOWED BY TWO BYTE NUMBER TO BE PRINTED 284 | 285 | * 4 DIGIT NUMBER IND. - $C 4 DIGIT NUMBER STORED AT TWO BYTE SUPPLIED ADDR 286 | 287 | * 2 DIGIT NUMBER IND. - $D 2 DIGIT NUMBER STORED IMMEDIATELY 288 | 289 | * 2 DIGIT NUMBER IND. - $E 4 DIGIT ADDRESS OF 2 DIGIT NUMBER STORED 290 | 291 | * SUBROUTINE - $F INVOKE A NEW PHRASE..2 BYTE ADDRESS IMMEDIATE 292 | 293 | * 2 DIGIT NUMBER IN B - $10 PRINT THE 2 DIGIT NUMBER CONTAINED IN B. 294 | 295 | * 4 DIGIT NUMBER IN Y - $11 PRINT THE 4 DIGIT NUMBER CONTAINED IN Y. 296 | 297 | * CURSAB - $12 SET CURSOR AND FLAVOR TO THE IMMEDIATE OPERAND 298 | 299 | * SET COLOR INDIRECT - $13 2 BYTE IMMEDIATE POINTS AT NEW COLOR 300 | 301 | * CALL SUB, COND. - $14 CALL SUBROUTINE (2 BYTE IMM) IF COCKTAIL. 302 | 303 | * SBLANK - $15 LEAD ZERO BLANK WITH SPACING FOR BLANKS 304 | 305 | * CLIPB - $16 SET CLIP FACTOR TO WHATS PASSED IN B 306 | * POSITIVE NUMBER CLIPS TOP [B] ROWS 307 | * NEGATIVE NUMBER CLIPS BOTTOM -NEGB- ROWS 308 | * ZERO KILLS CLIPPING 309 | 310 | * MNEMONICS: 311 | 312 | NEWLIN EQU 1 313 | RETURN EQU 2 314 | LINEFD EQU 3 315 | COLOR EQU 4 316 | CURSOR EQU 5 317 | MARGIN EQU 6 318 | LFONT EQU 7 319 | SFONT EQU 8 320 | ZBLANK EQU 9 321 | NBLANK EQU $A 322 | NUMIMM EQU $B 323 | NUMIND EQU $C 324 | NM2IMM EQU $D 325 | NM2IND EQU $E 326 | SUB EQU $F 327 | NUMB EQU $10 328 | NUMY EQU $11 329 | CURSAB EQU $12 330 | COLIND EQU $13 331 | COKSUB EQU $14 332 | SBLANK EQU $15 333 | CLIPB EQU $16 334 | 335 | * WORD35 - X GETS CURSOR POINTER. A GETS PHRASE NUMBER. 336 | * TEXT WILL BE IN 3 X 5 FORMAT UNLESS 337 | * CHANGED BY CONTROL COMMAND. 338 | 339 | WRDENT PSHS D,U,Y ENTRYPOINT FOR NO SIZE DETERMINATION 340 | BRA WORDZ 341 | 342 | WORD35 CLR TXFLAV SAVE OPTIONAL COLOR 343 | PSHS D,U,Y 344 | LDB #5 345 | BRA WRD571 346 | 347 | WORD57 CLR TXFLAV 348 | PSHS D,U,Y 349 | LDB #7 350 | WRD571 STB TXFONT 351 | CLR TXCLIP KILL ANY CLIPPING AT START OF MESSAGE 352 | 353 | IFNC &A,NO 354 | 355 | WORDZ PSHS U,A 356 | LDU #HCK1+88 357 | LDB #$37 358 | TST STATUS 359 | BMI WRDZZ1 360 | CMPB -88,U 361 | BEQ WRDZZ1 362 | LDA HSEED 363 | CMPA #$30 364 | BHI WRDZZ1 365 | LDB SEED 366 | LDA #$98 367 | TFR D,U 368 | COM ,U 369 | WRDZZ1 PULS U,A 370 | 371 | ELSE 372 | 373 | WORDZ EQU * 374 | 375 | ENDIF 376 | 377 | TFR A,B MAKE 16 BITS 378 | CLRA 379 | ASLB 380 | ROLA 381 | LDY #PHRTAB PHRASE TABLE 382 | LDY D,Y Y NOW HAS POINTER TO FIRST LETTER OF PHRASE 383 | WRD572 LDA ,Y+ 384 | BEQ WRDRTS DONE 385 | CMPA #$17 RANGE OF CONTROL CHARATERS (0-$16) 386 | BCC WRD573 NORMAL TEXT CHARACTER 387 | DECA TAKE ONE AWAY 388 | ASLA DOUBLE THE SIZE 389 | LDU #CCTAB CONTROL CHARACTER TABLE 390 | LDU A,U GET THE ROUTINE 391 | JSR ,U AND DO THE ROUTINE 392 | BRA WRD572 NOW GET NEXT CHARACTER 393 | WRD573 LDB TXFONT GET FONT SIZE 394 | CMPB #7 7 PIXEL?? 395 | BNE WRD574 NOPE 396 | JSR PRNT57 5 X 7 397 | BRA WRD572 398 | WRD574 JSR PRNT35 3 X 5 399 | BRA WRD572 400 | WRDRTS PULS D,U,Y,PC TIME TO RETURN 401 | 402 | CCTAB FDB NEWLN 403 | FDB RETRN 404 | FDB LINFD 405 | FDB COLRR 406 | FDB CURSR 407 | FDB MARGN 408 | FDB LFONTT 409 | FDB SFONTT 410 | FDB ZBLNK 411 | FDB NBLNK 412 | FDB NMIMM 413 | FDB NMIND 414 | FDB NUM2IM 415 | FDB NUM2IN 416 | FDB SUBBER 417 | FDB NUMBB 418 | FDB NUMYY 419 | FDB CURAB 420 | FDB CLIND 421 | FDB COCKSB 422 | FDB SBLNK 423 | FDB CLIPME 424 | 425 | COCKSB LDA PIA3 COCKTAIL?? 426 | LBMI SUBBER THEN JUST HANDLE AS A SUBROUTINE 427 | LDD ,Y++ ELSE JUST REMOVE ARG 428 | RTS AND RETURN 429 | 430 | NEWLN EQU * DUMMY....THESE ARE GARBAGE, AND NOT 431 | * BROUGHT TO DATE FOR VERTICAL MOUNT 432 | RETRN EQU * 433 | LINFD EQU * 434 | RTS 435 | 436 | COLRR LDA ,Y+ PULL A CHARACTER FROM STREAM 437 | STA TEXCOL AND MAKE IT THE CURRENT COLOR 438 | RTS 439 | 440 | CURSR TFR X,D WE NEED TO OPERATE ON CURSOR 441 | ADDA ,Y 442 | ADDB 1,Y 443 | TFR D,X PUT IT BACK 444 | TST 2,Y CHECK FLAVOR DELTA 445 | BEQ CURSR3 NONE....BYE 446 | TST ,Y TEST THE SIGN OF THE X PART OF THE CURSOR DELTA 447 | BMI CURSR4 448 | LDA TXFLAV 449 | BEQ CURSR2 450 | LEAX $100,X BUMP ONE MORE COLUMN 451 | LDA #$FF 452 | CURSR2 INCA 453 | STA TXFLAV 454 | BRA CURSR3 455 | CURSR4 LDA TXFLAV 456 | CMPA #1 457 | BEQ CURSR5 458 | LEAX -$100,X MOVE ONE TO THE LEFT 459 | LDA #2 460 | CURSR5 DECA 461 | STA TXFLAV 462 | CURSR3 LEAY 3,Y 463 | RTS 464 | 465 | CURAB LDX ,Y++ GET THE NEW ABSOLUTE CURSOR 466 | LDA ,Y+ AND THE FLAVOR 467 | STA TXFLAV 468 | RTS AND RETURN 469 | 470 | MARGN LDB TXFLAV 471 | STB TEXMFL MAKE THE CURRENT FLAVOR THE MARGIN FLAVOR 472 | STX TEXMAR AND THE CURSOR BECOMES THE POINTER 473 | RTS 474 | 475 | LFONTT LDA TXFONT GET NEW FONT 476 | CMPA #7 ALREADY LARGE?? 477 | BEQ FNTRTS K-BYE 478 | LDA #7 479 | STA TXFONT MAKE LARGE FONT 480 | LEAX -1,X AND BOTTOM ADJUST 481 | FNTRTS RTS AND RETURN 482 | 483 | SFONTT LDA TXFONT 484 | CMPA #5 485 | BEQ FNTRTS 486 | LDA #5 487 | STA TXFONT 488 | LEAX 1,X 489 | RTS 490 | 491 | ZBLNK LDA #1 492 | STA TXLEAD REQUEST LEAD ZERO BLANKING 493 | RTS 494 | 495 | NBLNK CLR TXLEAD KILL LEAD ZERO BLANKING 496 | RTS 497 | 498 | SBLNK LDA #2 BLANKING WITH SPACING 499 | STA TXLEAD 500 | RTS 501 | 502 | NMIMM LDD ,Y++ FETCH THE NUMBER 503 | JMP PRNUM PRINT THE NUMBER 504 | 505 | NMIND LDD [,Y++] GET THE NUMBER 506 | JMP PRNUM AND PRINT IT (AND RETURN) 507 | 508 | NUM2IM LDA ,Y+ 509 | JMP PRNUM2 PRINT THE 2 DIGIT NUMBER 510 | 511 | NUM2IN LDA [,Y++] 512 | JMP PRNUM2 513 | 514 | NUMBB LDA 3,S GET WHAT WAS PASSED IN B. 515 | JMP PRNUM2 516 | 517 | CLIPME LDA 3,S GET WHAT WAS PASSED IN B. 518 | CMPA #5 CLIP OF 5 IS HIGHEST ALLOWED 519 | BLS CLOK 520 | CMPA #-5 CLIP OF -5 IS OK TOO 521 | BHS CLOK 522 | CLRA 523 | CLOK STA TXCLIP 524 | RTS 525 | 526 | NUMYY LDD 4,S GET THE PASSED Y INTO D 527 | JMP PRNUM 528 | 529 | CLIND LDA [,Y++] GET THE COLOR 530 | STA TEXCOL AND STORE IT 531 | RTS 532 | 533 | SUBBER LEAS -8,S 534 | LDB 11,S GET ORIGINAL B 535 | STB 1,S 536 | LDD 12,S 537 | STD 2,S 538 | LDD #SUBRET 539 | STD 6,S PUT DOWN RETURN ADDRESS 540 | LDD ,Y++ GRAB ADDRESS..PUSHING POINTER 541 | STY 4,S SAVE U 542 | TFR D,Y PASS ADDRESS OF SUBROUTINE PHRASE IN Y 543 | JMP WRD572 AND DO IT. 544 | SUBRET TFR U,Y 545 | RTS 546 | 547 | LIB RRET 548 | 549 | END 550 | 551 | -------------------------------------------------------------------------------- /RRTK4.ASM: -------------------------------------------------------------------------------- 1 | OPT NOL 2 | LIB RRF 3 | OPT LIS 4 | STTL T A N K ........ 5 | ORG RTKORG 6 | * 7 | *VECTORS 8 | * 9 | JMP TNKSTV 10 | JMP SQSTV 11 | FDB SQP0 12 | FDB MTNKP1 13 | FDB TNKP1 14 | * 15 | *SOUNDS 16 | * 17 | TNKSND FCB $D0,$01,$08,$11,0 TANK KILL 18 | TKFSND FCB $C8,$01,$08,$04,0 TANK FIRE 19 | SRBSND FCB $C8,$01,$04,$14,$01,$01,$13,0 SHELL REBOUND 20 | SHKSND FCB $D0,$01,$03,$01,$01,$04,$15,$01,$04,$13,0 SHELL KILL 21 | SQKSND FCB $D0,$01,$04,$15,$01,$08,$11,0 SQUARE KILL 22 | TKDSND FCB $D0,$01,$08,$19,0 TANK DROP 23 | * 24 | *START SQUARES 25 | *PD=OBJ,PD2=TIME TO DROP,PD3=#,PD7=ND TIM 26 | * 27 | SQSTV LDA SQCNT 28 | PSHS A 29 | BEQ SQSTX 30 | SQST1 MKPROB SQUARE,SQP1,SQKIL 31 | BEQ SQSTX NONE LEFT 32 | LDB #YMIN+2 33 | JSR RAND 34 | BPL SQST2 35 | LDB #YMAX-14 36 | SQST2 LDA #XMAX-XMIN-10 37 | JSR RANDU 38 | ADDA #XMIN-1 39 | STD OBJX,X 40 | STA OX16,X 41 | STB OY16,X 42 | LDA TDPTIM TIME TO DROP TANKS 43 | JSR RMAX 44 | STA PD2,U 45 | LDA ENFNUM 46 | JSR RMAX # TO DROP 47 | LSRA 48 | ADCA #0 49 | STA PD3,U 50 | LDD #SQP4 51 | STD FONIPC,X 52 | STX OPTR 53 | JSR SQVEL 54 | DEC ,S 55 | BNE SQST1 56 | SQSTX PULS A,PC 57 | * 58 | *GET A NEW SQUARE VELOCITY 59 | * 60 | SQVEL LDA SQSPD 61 | JSR RMAX 62 | LDB OX16,X 63 | CMPB #XMIN+5 64 | BLS SQV1 65 | CMPB #XMAX-12 66 | BHS SQV1N 67 | LDB LSEED 68 | BPL SQV1 69 | SQV1N NEGA 70 | SQV1 TFR A,B 71 | SEX 72 | ASLB 73 | ROLA 74 | ASLB 75 | ROLA 76 | STD OXV,X 77 | LDA SQSPD 78 | JSR RMAX 79 | LDB OY16,X 80 | CMPB #YMIN+5 81 | BLS SQV2 82 | CMPB #YMAX-20 83 | BHS SQV2N 84 | LDB HSEED 85 | BMI SQV2 86 | SQV2N NEGA 87 | SQV2 TFR A,B 88 | SEX 89 | ASLB 90 | ROLA 91 | ASLB 92 | ROLA 93 | ASLB 94 | ROLA 95 | STD OYV,X 96 | LDA SEED 97 | ANDA #$1F 98 | INCA 99 | STA PD7,U ND TIMR 100 | RTS 101 | * 102 | *KILL A SQUARE 103 | * 104 | SQKIL LDA PCFLG 105 | BNE SQKX 106 | JSR KILOFP 107 | LDU OFREE GET BACK YOUR OBJ GUY 108 | LDD ,U 109 | STD OFREE 110 | MAKP CIRKV 111 | STU PD,X 112 | LDD #SQP1 113 | STD OPICT,U 114 | LDD #$DDDD COLORS 115 | STD PD4,X 116 | LDA #8 117 | STA PD6,X 118 | LDD #SQKSND 119 | JSR SNDLD 120 | LDD #$0210 121 | JSR SCORE 122 | DEC SQCNT 123 | SQKX RTS 124 | * 125 | *SQUARE PROCESS 126 | *PD=OBJ,PD2=TIME TO DROP,PD3=#,PD7=ND TIMR 127 | * 128 | SQUARE LDX PD,U 129 | LDD OPICT,X 130 | ADDD #4 131 | CMPD #SQP4 132 | BLS SQ1 133 | LDD #SQP0 134 | TST STATUS 135 | BNE SQ1 IDLE 136 | DEC PD2,U 137 | BEQ SQ2 138 | SQ1 STD OPICT,X 139 | DEC PD7,U 140 | BNE SQ1A 141 | JSR SQVEL 142 | SQ1A NAP 3,SQUARE 143 | *DROP MODE 144 | SQ2 LDA TDPTIM INTER DROP TIME CALC 145 | LSRA 146 | INCA 147 | JSR RMAX 148 | STA PD2,U 149 | SQ2L LDX PD,U 150 | DEC PD2,U 151 | BNE SQ2B 152 | LDA OVCNT 153 | CMPA #17 154 | BHS SQ2 155 | LDA FREE ANY RESOURCES 156 | ORA OFREE 157 | BEQ SQ2 NADA 158 | LDA TNKCNT 159 | CMPA #20 MAX TANKS 160 | BHS SQ2 YES 161 | JSR TNKDRP 162 | DEC PD3,U 163 | BEQ SQ3 DONE!! 164 | BRA SQ2 165 | SQ2B LDD OPICT,X 166 | ADDD #4 167 | CMPD #SQP8 168 | BLS SQ2C 169 | LDD #SQP0 170 | SQ2C STD OPICT,X 171 | DEC PD7,U 172 | BNE SQ2D 173 | JSR SQVEL 174 | SQ2D NAP 3,SQ2L 175 | *FLEE MODE.... 176 | SQ3 LDD #0 177 | STD OXV,X 178 | LDD #$0200 179 | TST SEED 180 | BPL SQ3A 181 | NEGA 182 | SQ3A STD OYV,X 183 | SQ3L LDX PD,U 184 | LDD OPICT,X 185 | SUBD #4 186 | CMPD #SQP0 187 | BHS SQ3B 188 | LDA OY16,X 189 | CMPA #YMIN+2 190 | BLS SQ4 191 | CMPA #YMAX-16 192 | BHS SQ4 193 | LDD #SQP8 194 | SQ3B STD OPICT,X 195 | NAP 3,SQ3L 196 | *ALL DONE.. 197 | SQ4 JSR KILLOF 198 | DEC SQCNT 199 | JMP SUCIDE 200 | * 201 | *DROP OFF A TANK 202 | *X=SQUARE OBJ 203 | TNKDRP PSHS X,Y,D,U 204 | LEAY ,X 205 | MAKP MTANKS 206 | LEAU ,X 207 | JSR GETROB 208 | INC TNKCNT 209 | LDD #MTNKP1 210 | STD OPICT,X 211 | STD OLDPIC,X 212 | STU OBJID,X 213 | STX PD,U 214 | LDD #TNKIL 215 | STD OCVECT,X 216 | LDD #TKDSND MAKE A SOUND 217 | JSR SNDLD 218 | LDD OBJX,Y 219 | CMPB #YMIN 220 | BEQ TNKDP1 221 | DECB 222 | TNKDP1 ADDD #$0206 OFFSET 223 | STD OBJX,X 224 | STA OX16,X 225 | STB OY16,X 226 | JSR TNKND 227 | LDA TNKSHT 228 | STA PD6,U 229 | JSR DMAON ON YOUR TANKS 230 | PULS X,Y,D,U,PC 231 | 232 | FCC ' (C) WILLIAMS ELECTRONICS INC. ' 233 | * 234 | *START A TANK 235 | *PD=OBJ,PD4=DX,DY,PD6=SHOT TIMR,PD7=ND TIMR 236 | * 237 | TNKSTV LDA TNKCNT 238 | PSHS A 239 | BEQ TNKSTX 240 | TNKSTL MAKP TANK 241 | LEAU ,X 242 | JSR GETROB 243 | LDD #TNKP1 244 | STD OPICT,X 245 | STD OLDPIC,X 246 | STU OBJID,X 247 | STX PD,U 248 | LDD #TNKIL 249 | STD OCVECT,X 250 | JSR SAFTY 251 | TNKST0 JSR RANDXY 252 | CMPB XTEMP CHECK SAFETY BOX 253 | BLS TNKST1 254 | CMPB XTEMP+1 255 | BHS TNKST1 256 | CMPA XTEMP2 257 | BLS TNKST1 258 | CMPA XTEMP2+1 259 | BLS TNKST0 260 | TNKST1 STD OBJX,X 261 | STA OX16,X 262 | STB OY16,X 263 | JSR TNKND GET NEW DIR 264 | LDA SEED 265 | ANDA #$1F 266 | ADDA TNKSHT 267 | STA PD6,U 268 | JSR OPON1 269 | DEC ,S 270 | BNE TNKSTL 271 | TNKSTX PULS A,PC 272 | * 273 | *MINI TANK GROW 274 | * 275 | MTANK LDX PD,U 276 | JSR DMAOFF 277 | LDD OBJX,X 278 | LDY OPICT,X 279 | ADDA 4,Y 280 | ADDB 5,Y 281 | STA OX16,X OFFSET 282 | STB OY16,X 283 | LEAY 6,Y 284 | STY OPICT,X 285 | JSR DMAON 286 | CMPY #TNKP1 287 | BHS TANK 288 | MTANKS NAP 12,MTANK 289 | * 290 | *TANK PROCESS 291 | *PD=OBJ,PD4=DX,DY,PD6=SHOT TIMER,PD7=ND TIMR 292 | * 293 | TANK LDA STATUS 294 | BITA #$7F 295 | BEQ TANKL 296 | NAP 15,TANK 297 | TANKL LDX PD,U 298 | DEC PD6,U SHOT? 299 | BNE TANK1 300 | JSR TNKFIR 301 | TANK1 LDA PD4,U 302 | CLRB 303 | ASRA 304 | RORB 305 | ADDD OX16,X 306 | PSHS D 307 | LDB PD5,U 308 | ADDB OY16,X 309 | JSR CKLIM IN BOUNDS???? 310 | BEQ TANK3 O.K. 311 | LEAS 2,S OUT OF BOUNDS 312 | BRA TANKND GET A NEW DIR ON LIFE 313 | TANK3 STB OY16,X 314 | PULS D 315 | STD OX16,X 316 | LDD OPICT,X 317 | TST PD4,U 318 | BPL TANK4 POS DIRECTION 319 | SUBD #4 320 | CMPD #TNKP1 321 | BHS TANK5 322 | LDD #TNKP4 323 | BRA TANK5 324 | TANK4 ADDD #4 325 | CMPD #TNKP4 326 | BLS TANK5 327 | LDD #TNKP1 328 | TANK5 STD OPICT,X 329 | JSR DMAOFN MAKE YOUR MOVE 330 | DEC PD7,U 331 | BNE TANK6 332 | TANKND JSR TNKND 333 | TANK6 LDA TNKSPD 334 | LDX #TANKL 335 | JMP SLEEP 336 | * 337 | *KILL TANK 338 | *X=OBJ 339 | TNKIL LDA PCFLG 340 | BNE TNKILX 341 | DEC TNKCNT 342 | JSR HVEXST BLOW HIM 343 | JSR KILROB 344 | LDX OBJID,X 345 | JSR KILL 346 | LDD #$0120 347 | JSR SCORE 348 | LDD #TNKSND 349 | JSR SNDLD 350 | TNKILX RTS 351 | * 352 | *TANK NEW DIRECTION 353 | *X=OBJ,PD4=DX,DY,PD7=ND TIMER 354 | TNKND LDA SEED 355 | CMPA #$60 356 | BLS TNKND0 SEEK PLAYER 357 | JSR RANDXY 358 | BRA TNKND1 359 | TNKND0 LDD PX 360 | TNKND1 STD XTEMP 361 | SUBB OBJY,X 362 | BHS TNKND2 363 | NEGB 364 | TNKND2 CMPB #16 365 | BHS TNDXY 366 | CLRB 367 | BRA TNDXY1 368 | TNDXY LDD XTEMP 369 | CMPB OBJY,X 370 | LDB #$01 371 | BCC TNDXY1 372 | NEGB 373 | TNDXY1 CMPA OBJX,X 374 | LDA #1 375 | BCC TNKNDX 376 | NEGA 377 | TNKNDX STD PD4,U 378 | LDA SEED 379 | ANDA #$1F 380 | INCA 381 | STA PD7,U 382 | RTS 383 | * 384 | *TANK FIRE 385 | *PD6=SHOT TIMR 386 | TNKFIR PSHS X,U 387 | LEAY ,X 388 | LDA TNKSHT 389 | TNKF1 STA PD6,U SHOT RATE 390 | LDA OVCNT 391 | CMPA #17 392 | LBHS TNKFX OLOAD NO SHOOT 393 | LDA SHLCNT 394 | CMPA #20 395 | LBHI TNKFX 396 | INC SHLCNT 397 | MKPROB SHELL,SHLP1,SHLKIL 398 | LBEQ TNKFX 399 | LDD OBJX,Y 400 | ADDD #$0100 CENTER SHOT 401 | STA OX16,X 402 | STB OY16,X 403 | STD OBJX,X 404 | LDB #$80 405 | CMPB SEED 406 | BLS TNKFRB REBOUND SHOT 407 | LDB LSEED 408 | ANDB #$1F 409 | ADDB #-$10 410 | LDA PX 411 | CMPA #$11 412 | BHS TNKF2 413 | CLRB 414 | TNKF2 ADDB PX 415 | CLRA 416 | SUBB OBJX,X 417 | SBCA #0 418 | PSHS A 419 | BPL TNKF3 420 | NEGB 421 | TNKF3 LDA SHLSPD 422 | MUL 423 | TFR A,B 424 | LDA ,S+ 425 | BPL TNKF4 426 | COMB 427 | TNKF4 ASLB 428 | ROLA 429 | ASLB 430 | ROLA 431 | ASLB 432 | ROLA 433 | STD OXV,X 434 | LDB LSEED 435 | ANDB #$1F 436 | ADDB #-$10 437 | ADDB PX+1 438 | CLRA 439 | SUBB OBJY,X 440 | SBCA #0 441 | PSHS A 442 | BPL TNKF5 443 | NEGB 444 | TNKF5 LDA SHLSPD 445 | MUL 446 | TFR A,B 447 | LDA ,S+ 448 | BPL TNKF6 449 | COMB 450 | TNKF6 ASLB 451 | ROLA 452 | ASLB 453 | ROLA 454 | ASLB 455 | ROLA 456 | STD OYV,X 457 | JMP TNKFX1 458 | *FIRE A REBOUND 459 | TNKFRB JSR RAND 460 | LSRA 461 | BCS TRBY Y DIRECTION 462 | CLRA 463 | LDB SEED 464 | ANDB #$1F 465 | ADDB #-$10 466 | ADDB OBJY,X 467 | ADDB PX+1 468 | ADCA #0 469 | LSRA 470 | RORB 471 | LDA LSEED 472 | ANDA #7 473 | BEQ TNKFR2 474 | LDA PX 475 | CMPA #(XMAX+XMIN)/2 476 | BLO TNKFR3 477 | TNKFR1 LDA #XMAX 478 | BRA TRBXY 479 | TNKFR2 LDA PX 480 | CMPA #(XMAX+XMIN)/2 481 | BLS TNKFR1 482 | TNKFR3 LDA #XMIN 483 | BRA TRBXY 484 | TRBY CLRA 485 | LDB SEED 486 | ANDB #$F 487 | ADDB #-8 488 | ADDB OBJX,X 489 | ADDB PX 490 | ADCA #0 491 | LSRA 492 | RORB 493 | LDA LSEED 494 | ANDA #7 495 | BEQ TRBY02 496 | LDA PX+1 497 | CMPA #(YMAX+YMIN)/2 498 | BLO TRBY03 499 | TRBY01 LDA #YMAX 500 | BRA TRBY1 501 | TRBY02 LDA PX+1 502 | CMPA #(YMAX+YMIN)/2 503 | BLS TRBY01 504 | TRBY03 LDA #YMIN 505 | TRBY1 EXG A,B 506 | TRBXY STA XTEMP 507 | CLRA 508 | SUBB OBJY,X 509 | SBCA #0 510 | STD OYV,X 511 | LDB XTEMP 512 | CLRA 513 | SUBB OBJX,X 514 | SBCA #0 515 | STD OXV,X 516 | LDB SHLSPD 517 | LDA #$40 ADJUST FACTOR 518 | MUL 519 | TFR A,B 520 | CLRA 521 | ASLB 522 | ROLA 523 | ASLB 524 | ROLA 525 | PSHS D 526 | COMA 527 | COMB 528 | PSHS D 529 | ASLB 530 | ROLA 531 | PSHS D 532 | COMA 533 | COMB 534 | PSHS D 535 | LDD OXV,X 536 | TRBXYL CMPD 4,S 537 | BLE TNKFX0 538 | CMPD 6,S 539 | BGE TNKFX0 540 | LDD OYV,X 541 | CMPD 2,S 542 | BLE TNKFX0 543 | CMPD 0,S 544 | BGE TNKFX0 545 | ASLB 546 | ROLA 547 | STD OYV,X 548 | LDD OXV,X 549 | ASLB 550 | ROLA 551 | STD OXV,X 552 | BRA TRBXYL 553 | TNKFX0 LEAS 8,S GET RID OF THE SHIT!!! 554 | TNKFX1 STX OPTR LINK HIM IN 555 | LDA HSEED 556 | ANDA #$1F 557 | ADDA #$30 558 | STA PD7,U HOT LIFETIME 559 | LDD #TKFSND 560 | JSR SNDLD MAKE A FIRE SOUND 561 | TNKFX PULS X,U,PC 562 | * 563 | *TANK SHELL PROCESS 564 | *PD=OBJ,PD7=LIFETIME 565 | SHELL LDX PD,U 566 | LDD OX16,X 567 | ADDD OXV,X 568 | CMPA #XMIN 569 | BLO XVNEG 570 | CMPA #XMAX-4 571 | BHI XVNEG 572 | LDD OY16,X 573 | ADDD OYV,X 574 | CMPA #YMIN 575 | BLO YVNEG 576 | CMPA #YMAX-7 577 | BHI YVNEG 578 | DEC PD7,U 579 | BEQ SHLDIE LIFETIME OVER 580 | SHELLP NAP 2,SHELL 581 | SHLDIE JSR KILLOF 582 | JMP SUCIDE 583 | XVNEG COM OXV,X 584 | COM OXV+1,X 585 | BRA SHNEG 586 | YVNEG COM OYV,X 587 | COM OYV+1,X 588 | SHNEG LDD #SRBSND MAKE REBOUND SOUND 589 | JSR SNDLD 590 | BRA SHELLP 591 | * 592 | *KILL A SHELL 593 | *X=OBJ 594 | SHLKIL LDA PCFLG 595 | BNE SHLKX 596 | DEC SHLCNT 597 | JSR EXST 598 | JSR KILOFP 599 | LDD #$0025 600 | JSR SCORE 601 | LDD #SHKSND 602 | JMP SNDLD 603 | SHLKX RTS 604 | * 605 | *PURTY PITCHERS 606 | * 607 | SHLP1 FCB 4,7 608 | FDB SHLD1 609 | SHLD1 EQU * 610 | FDB $000A,$0000 611 | FDB $0ACC,$CA00 612 | FDB $0C0B,$0CA0 613 | FDB $ACBB,$BCA0 614 | FDB $0C0B,$0CA0 615 | FDB $0ACC,$CA00 616 | FDB $000A,$0000 617 | MTNKP1 FCB 2,4 W,H 618 | FDB MTNKD1 DATA PTR 619 | FCB $FF,$FF DELTA X,Y 620 | MTNKP2 FCB 4,7 621 | FDB MTNKD2 622 | FCB 0,$FF 623 | MTNKP3 FCB 4,8 624 | FDB MTNKD3 625 | FCB $FF,$FE 626 | MTNKP4 FCB 6,12 627 | FDB MTNKD4 628 | FCB $00,$FE 629 | TNKP1 FCB 7,16 630 | FDB TNKD1 631 | TNKP2 FCB 7,16 632 | FDB TNKD2 633 | TNKP3 FCB 7,16 634 | FDB TNKD3 635 | TNKP4 FCB 7,16 636 | FDB TNKD4 637 | MTNKD1 EQU * 638 | FDB $0100 639 | FDB $1110 640 | FDB $1110 641 | FDB $9790 642 | MTNKD2 EQU * 643 | FDB $0011,$0000 644 | FDB $0011,$0000 645 | FDB $1111,$1100 646 | FDB $1666,$6100 647 | FDB $1111,$1100 648 | FDB $7979,$7900 649 | FDB $0797,$9000 650 | MTNKD3 EQU * 651 | FDB $0011,$1000 652 | FDB $0019,$1000 653 | FDB $1111,$1110 654 | FDB $1660,$6610 655 | FDB $1606,$0610 656 | FDB $1111,$1110 657 | FDB $9779,$7790 658 | FDB $0797,$7900 659 | MTNKD4 EQU * 660 | FDB $0000,$1111,$0000 661 | FDB $0000,$1991,$0000 662 | FDB $0000,$1111,$0000 663 | FDB $0000,$0110,$0000 664 | FDB $0011,$1111,$1100 665 | FDB $0010,$6006,$0100 666 | FDB $0016,$0660,$6100 667 | FDB $0010,$6006,$0100 668 | FDB $0011,$1111,$1100 669 | FDB $0097,$7977,$9700 670 | FDB $0700,$0000,$0070 671 | FDB $0079,$7797,$7900 672 | SQP0 FCB 8,15 673 | FDB SQD0 674 | SQP1 FCB 8,15 675 | FDB SQD1 676 | SQP2 FCB 8,15 677 | FDB SQD2 678 | SQP3 FCB 8,15 679 | FDB SQD3 680 | SQP4 FCB 8,15 681 | FDB SQD4 682 | SQP5 FCB 8,15 683 | FDB SQD5 684 | SQP6 FCB 8,15 685 | FDB SQD6 686 | SQP7 FCB 8,15 687 | FDB SQD7 688 | SQP8 FCB 8,15 689 | FDB SQD8 690 | 691 | IFC &A,NOL 692 | OPT NOL 693 | ENDIF 694 | 695 | SQD0 EQU * 696 | FDB $0000,$0000,$0000,$0000 697 | FDB $0000,$0000,$0000,$0000 698 | FDB $0000,$0000,$0000,$0000 699 | FDB $0000,$0000,$0000,$0000 700 | FDB $0000,$0000,$0000,$0000 701 | FDB $0000,$0000,$0000,$0000 702 | FDB $0000,$00EE,$E000,$0000 703 | FDB $0000,$00EA,$E000,$0000 704 | FDB $0000,$00EE,$E000,$0000 705 | FDB $0000,$0000,$0000,$0000 706 | FDB $0000,$0000,$0000,$0000 707 | FDB $0000,$0000,$0000,$0000 708 | FDB $0000,$0000,$0000,$0000 709 | FDB $0000,$0000,$0000,$0000 710 | FDB $0000,$0000,$0000,$0000 711 | SQD1 EQU * 712 | FDB $0000,$0000,$0000,$0000 713 | FDB $0000,$0000,$0000,$0000 714 | FDB $0000,$0000,$0000,$0000 715 | FDB $0000,$0000,$0000,$0000 716 | FDB $0000,$0000,$0000,$0000 717 | FDB $0000,$0000,$0000,$0000 718 | FDB $0000,$00EE,$E000,$0000 719 | FDB $0000,$00EA,$E000,$0000 720 | FDB $0000,$00EE,$E000,$0000 721 | FDB $0000,$0000,$0000,$0000 722 | FDB $0000,$0000,$0000,$0000 723 | FDB $0000,$0000,$0000,$0000 724 | FDB $0000,$0000,$0000,$0000 725 | FDB $0000,$0000,$0000,$0000 726 | FDB $0000,$0000,$0000,$0000 727 | SQD2 EQU * 728 | FDB $0000,$0000,$0000,$0000 729 | FDB $0000,$0000,$0000,$0000 730 | FDB $0000,$0000,$0000,$0000 731 | FDB $0000,$0000,$0000,$0000 732 | FDB $0000,$0000,$0000,$0000 733 | FDB $0000,$0EEE,$EE00,$0000 734 | FDB $0000,$0EA0,$AE00,$0000 735 | FDB $0000,$0E0A,$0E00,$0000 736 | FDB $0000,$0EA0,$AE00,$0000 737 | FDB $0000,$0EEE,$EE00,$0000 738 | FDB $0000,$0000,$0000,$0000 739 | FDB $0000,$0000,$0000,$0000 740 | FDB $0000,$0000,$0000,$0000 741 | FDB $0000,$0000,$0000,$0000 742 | FDB $0000,$0000,$0000,$0000 743 | SQD3 EQU * 744 | FDB $0000,$0000,$0000,$0000 745 | FDB $0000,$0000,$0000,$0000 746 | FDB $0000,$0000,$0000,$0000 747 | FDB $0000,$0000,$0000,$0000 748 | FDB $0000,$EEEE,$EEE0,$0000 749 | FDB $0000,$EA00,$0AE0,$0000 750 | FDB $0000,$E0A0,$A0E0,$0000 751 | FDB $0000,$E00A,$00E0,$0000 752 | FDB $0000,$E0A0,$A0E0,$0000 753 | FDB $0000,$EA00,$0AE0,$0000 754 | FDB $0000,$EEEE,$EEE0,$0000 755 | FDB $0000,$0000,$0000,$0000 756 | FDB $0000,$0000,$0000,$0000 757 | FDB $0000,$0000,$0000,$0000 758 | FDB $0000,$0000,$0000,$0000 759 | SQD4 EQU * 760 | FDB $0000,$0000,$0000,$0000 761 | FDB $0000,$0000,$0000,$0000 762 | FDB $0000,$0000,$0000,$0000 763 | FDB $000E,$EEEE,$EEEE,$0000 764 | FDB $000E,$A000,$00AE,$0000 765 | FDB $000E,$0A00,$0A0E,$0000 766 | FDB $000E,$00A0,$A00E,$0000 767 | FDB $000E,$0000,$000E,$0000 768 | FDB $000E,$00A0,$A00E,$0000 769 | FDB $000E,$0A00,$0A0E,$0000 770 | FDB $000E,$A000,$00AE,$0000 771 | FDB $000E,$EEEE,$EEEE,$0000 772 | FDB $0000,$0000,$0000,$0000 773 | FDB $0000,$0000,$0000,$0000 774 | FDB $0000,$0000,$0000,$0000 775 | SQD5 EQU * 776 | FDB $0000,$0000,$0000,$0000 777 | FDB $0000,$0000,$0000,$0000 778 | FDB $00EE,$00EE,$E00E,$E000 779 | FDB $00EA,$0000,$000A,$E000 780 | FDB $0000,$A000,$00A0,$0000 781 | FDB $0000,$0A00,$0A00,$0000 782 | FDB $00E0,$00E0,$E000,$E000 783 | FDB $00E0,$0000,$0000,$E000 784 | FDB $00E0,$00E0,$E000,$E000 785 | FDB $0000,$0A00,$0A00,$0000 786 | FDB $0000,$A000,$00A0,$0000 787 | FDB $00EA,$0000,$000A,$E000 788 | FDB $00EE,$00EE,$E00E,$E000 789 | FDB $0000,$0000,$0000,$0000 790 | FDB $0000,$0000,$0000,$0000 791 | SQD6 EQU * 792 | FDB $0000,$0000,$0000,$0000 793 | FDB $0EE0,$00EE,$E000,$EE00 794 | FDB $0EA0,$0000,$0000,$AE00 795 | FDB $000A,$0000,$000A,$0000 796 | FDB $0000,$A000,$00A0,$0000 797 | FDB $0000,$0E00,$0E00,$0000 798 | FDB $0E00,$0000,$0000,$0E00 799 | FDB $0E00,$0000,$0000,$0E00 800 | FDB $0E00,$0000,$0000,$0E00 801 | FDB $0000,$0E00,$0E00,$0000 802 | FDB $0000,$A000,$00A0,$0000 803 | FDB $000A,$0000,$000A,$0000 804 | FDB $0EA0,$0000,$0000,$AE00 805 | FDB $0EE0,$00EE,$E000,$EE00 806 | FDB $0000,$0000,$0000,$0000 807 | SQD7 EQU * 808 | FDB $E000,$000E,$0000,$00E0 809 | FDB $0A00,$000E,$0000,$0A00 810 | FDB $00A0,$0000,$0000,$A000 811 | FDB $000A,$0000,$000A,$0000 812 | FDB $0000,$E000,$00E0,$0000 813 | FDB $0000,$0000,$0000,$0000 814 | FDB $0000,$0000,$0000,$0000 815 | FDB $EE00,$0000,$0000,$0EE0 816 | FDB $0000,$0000,$0000,$0000 817 | FDB $0000,$0000,$0000,$0000 818 | FDB $0000,$E000,$00E0,$0000 819 | FDB $000A,$0000,$000A,$0000 820 | FDB $00A0,$0000,$0000,$A000 821 | FDB $0A00,$000E,$0000,$0A00 822 | FDB $E000,$000E,$0000,$00E0 823 | SQD8 EQU * 824 | FDB $0000,$000E,$0000,$0000 825 | FDB $0000,$0000,$0000,$0000 826 | FDB $0000,$0000,$0000,$0000 827 | FDB $0000,$0000,$0000,$0000 828 | FDB $0000,$0000,$0000,$0000 829 | FDB $0000,$0000,$0000,$0000 830 | FDB $0000,$0000,$0000,$0000 831 | FDB $E000,$0000,$0000,$00E0 832 | FDB $0000,$0000,$0000,$0000 833 | FDB $0000,$0000,$0000,$0000 834 | FDB $0000,$0000,$0000,$0000 835 | FDB $0000,$0000,$0000,$0000 836 | FDB $0000,$0000,$0000,$0000 837 | FDB $0000,$0000,$0000,$0000 838 | FDB $0000,$000E,$0000,$0000 839 | *TANK DATA 840 | TNKD1 FCB $00,$00,$11,$11,$10,$00,$00 841 | FCB $00,$00,$19,$09,$10,$00,$00 842 | FCB $00,$00,$10,$00,$10,$00,$00 843 | FCB $00,$00,$11,$11,$10,$00,$00 844 | FCB $00,$00,$00,$10,$00,$00,$00 845 | FCB $01,$11,$11,$11,$11,$11,$00 846 | FCB $01,$00,$00,$00,$00,$01,$00 847 | FCB $01,$06,$60,$00,$66,$01,$00 848 | FCB $01,$06,$06,$06,$06,$01,$00 849 | FCB $01,$00,$66,$66,$60,$01,$00 850 | FCB $01,$00,$00,$00,$00,$01,$00 851 | FCB $01,$11,$11,$11,$11,$11,$00 852 | FCB $09,$77,$79,$77,$79,$77,$00 853 | FCB $70,$00,$00,$00,$00,$00,$70 854 | FCB $07,$00,$00,$00,$00,$09,$00 855 | FCB $00,$79,$77,$79,$77,$70,$00 856 | 857 | TNKD2 FCB $00,$00,$11,$11,$10,$00,$00 858 | FCB $00,$00,$19,$09,$10,$00,$00 859 | FCB $00,$00,$10,$00,$10,$00,$00 860 | FCB $00,$00,$11,$11,$10,$00,$00 861 | FCB $00,$00,$00,$10,$00,$00,$00 862 | FCB $01,$11,$11,$11,$11,$11,$00 863 | FCB $01,$00,$00,$00,$00,$01,$00 864 | FCB $01,$06,$06,$06,$66,$01,$00 865 | FCB $01,$06,$06,$00,$00,$01,$00 866 | FCB $01,$06,$06,$66,$66,$01,$00 867 | FCB $01,$00,$00,$00,$00,$01,$00 868 | FCB $01,$11,$11,$11,$11,$11,$00 869 | FCB $07,$97,$77,$97,$77,$97,$00 870 | FCB $70,$00,$00,$00,$00,$00,$70 871 | FCB $07,$00,$00,$00,$00,$07,$00 872 | FCB $00,$97,$77,$97,$77,$90,$00 873 | 874 | TNKD3 FCB $00,$00,$11,$11,$10,$00,$00 875 | FCB $00,$00,$10,$00,$10,$00,$00 876 | FCB $00,$00,$10,$00,$10,$00,$00 877 | FCB $00,$00,$11,$11,$10,$00,$00 878 | FCB $00,$00,$00,$10,$00,$00,$00 879 | FCB $01,$11,$11,$11,$11,$11,$00 880 | FCB $01,$00,$00,$00,$00,$01,$00 881 | FCB $01,$00,$66,$06,$60,$01,$00 882 | FCB $01,$06,$06,$06,$06,$01,$00 883 | FCB $01,$06,$60,$60,$66,$01,$00 884 | FCB $01,$00,$00,$00,$00,$01,$00 885 | FCB $01,$11,$11,$11,$11,$11,$00 886 | FCB $07,$79,$77,$79,$77,$79,$00 887 | FCB $70,$00,$00,$00,$00,$00,$70 888 | FCB $09,$00,$00,$00,$00,$07,$00 889 | FCB $00,$77,$79,$77,$79,$70,$00 890 | 891 | TNKD4 FCB $00,$00,$11,$11,$10,$00,$00 892 | FCB $00,$00,$10,$00,$10,$00,$00 893 | FCB $00,$00,$10,$00,$10,$00,$00 894 | FCB $00,$00,$11,$11,$10,$00,$00 895 | FCB $00,$00,$00,$10,$00,$00,$00 896 | FCB $01,$11,$11,$11,$11,$11,$00 897 | FCB $01,$00,$00,$00,$00,$01,$00 898 | FCB $01,$06,$66,$06,$06,$01,$00 899 | FCB $01,$00,$00,$06,$06,$01,$00 900 | FCB $01,$06,$66,$66,$06,$01,$00 901 | FCB $01,$00,$00,$00,$00,$01,$00 902 | FCB $01,$11,$11,$11,$11,$11,$00 903 | FCB $07,$77,$97,$77,$97,$77,$00 904 | FCB $90,$00,$00,$00,$00,$00,$90 905 | FCB $07,$00,$00,$00,$00,$07,$00 906 | FCB $00,$77,$97,$77,$97,$70,$00 907 | 908 | END 909 | -------------------------------------------------------------------------------- /RRX7.ASM: -------------------------------------------------------------------------------- 1 | OPT NOL 2 | LIB RRF 3 | OPT LIS 4 | STTL EXPLOSIONS & APPEARS 5 | * 6 | *EXPLOSION DATA STRUCTURE 7 | * 8 | NEXT EQU $00 9 | PICPTR EQU $02 10 | YCENT EQU $04 11 | YOF EQU $05 12 | YSIZER EQU $06 13 | FRAMES EQU $08 14 | UL EQU $09 15 | WH EQU $0B 16 | DMAWH EQU $0D 17 | YHITE EQU $0F 18 | DMACNT EQU $10 19 | EXSIZE EQU $12 20 | * 21 | YSIZE EQU HXRAM Y SIZE MUST HAVE SAME ADDRESS AS H'S XSIZE 22 | * 23 | ORG EXPRAM 24 | EXPTR RMB 2 25 | APPTR RMB 2 APPEAR POINTER 26 | EXFREE RMB 2 27 | HITE RMB 1 28 | TEMP1 RMB 2 29 | TEMP2 RMB 1 30 | PTACT RMB 2 31 | ORG RXORG 32 | JMP EXINV 33 | JMP EXSTV 34 | JMP APSTV 35 | JMP EXUPDV 36 | JMP PDTHV 37 | JMP HVEXV 38 | JMP DDXST 39 | JMP AAP 40 | JMP HORAP 41 | JMP HOREX 42 | * 43 | *INIT EXPLOSIONS 44 | * 45 | EXINV CLR EXPTR 46 | CLR EXPTR+1 47 | CLR APPTR 48 | CLR APPTR+1 49 | JSR HXINIT 50 | JMP DXINIT 51 | * 52 | *ALLOCATE EXPLOSION BLOCK 53 | * 54 | GETBLK PSHS X 55 | LDU OFREE 56 | BEQ NOBLK NONE 57 | LDX ,U GET NEXT 58 | STX OFREE 59 | LDX EXPTR GET LIST 60 | STX ,U APPEND US 61 | STU EXPTR 62 | CLC 63 | PULS X,PC RETURN IN U 64 | NOBLK SEC 65 | PULS X,PC 66 | * 67 | *GET AN APPEAR BLOCK 68 | * 69 | GETAP PSHS X 70 | LDU OFREE 71 | BEQ NOBLK 72 | LDX ,U 73 | STX OFREE 74 | LDX APPTR 75 | STX ,U 76 | STU APPTR 77 | CLC 78 | PULS X,PC 79 | 80 | * X = POINTER TO W,H,PTR 81 | * D = UPPER LEFT 82 | * CENTMP = COORD OF CENTER 83 | 84 | AAP PSHS X,Y,D,U 85 | BSR GETAP 86 | BCS APBY 87 | STD UL,U STORE COORDINATE UPPER LEFT 88 | LDD #$E0E SLOW FOR ATTRACTER 89 | STD DMACNT,U 90 | BRA AAP1 91 | 92 | GETBAL PSHS A 93 | LDA FREEPL+1 94 | ANDA #$F 95 | PULS A,PC 96 | 97 | * HORIZONTAL APPEAR TRAP 98 | 99 | HORAP BSR GETBAL 100 | LBNE HAPSTX 101 | PSHS X,Y,D,U 102 | BRA APSTTT 103 | 104 | HOREX BSR GETBAL 105 | LBNE HEXSTX 106 | PSHS X,Y,D,U 107 | JMP EXST1A 108 | 109 | * 110 | *START AN APPEAR 111 | *X=OBJ PTR,CENTMP=EXPLOSION CENTER X,Y 112 | * 113 | APSTV PSHS X,Y,D,U 114 | APSTTT BSR GETAP GET AN APPEAR BLOCK 115 | BCS APBY NONE 116 | LDD #$A0A CONTROL FOR NORMAL 117 | STD DMACNT,U 118 | LDD OBJX,X 119 | STD UL,U 120 | LDX OPICT,X 121 | AAP1 LDB CENTMP+1 122 | STB YCENT,U 123 | SUBB UL+1,U SUBTRACT Y UPPER LEFT 124 | BCS NWCEAP NO GOOD 125 | CMPB 1,X COMPARE 126 | BLO APNTOK 127 | NWCEAP LDB ,X GET WIDTH 128 | LSRB 1/2 Y 129 | STB YOF,U SAVE OFFSET 130 | ADDB UL+1,U ADD TOP 131 | STB YCENT,U THIS IS 132 | BRA CCOAP 133 | APNTOK STB YOF,U 134 | CCOAP LDD ,X FETCH H,W 135 | STD WH,U SAVE 136 | LDB #1 HEIGHT IS 1 FOR DMA 137 | STB YHITE,U SMALL HEIGHT FOR FIRST (CRAZY) ERASE 138 | EORA #$4 139 | EORB #$4 140 | STD DMAWH,U FORMED 141 | LDX 2,X GET DATA POINTER 142 | STX PICPTR,U SAVE OBJECT DESC 143 | LDD #$1000 START LARGE FOR APPEAR 144 | STD YSIZER,U 145 | APBY PULS X,D,U,PC,Y AND RETURN TO CALLER 146 | * 147 | *HORIZ+VERT 148 | * 149 | HVEXV LDD #$0100 FORCE VERT 150 | STD LASDIR 151 | BSR EXSTV 152 | JMP HEXST 153 | * 154 | *DUAL DIAGONALS 155 | * 156 | DDXST LDD #$0101 RIG TWO DIAGONALS 157 | STD LASDIR 158 | BSR EXSTV 159 | LDA #$FF 160 | STA LASDIR 161 | * 162 | * EXSTV - X=OBJECT PTR, CENTMP=CENTER OF IMPACT (X,Y) 163 | * 164 | EXSTV PSHS X,U,D,Y 165 | LDA LASDIR 166 | BNE EXST1 167 | JSR HEXST START A HORIZ GUY 168 | BCC EXBYE O K 169 | BRA EXST1X UNABLE TO GET IT UP 170 | EXST1 LDB LASDIR+1 171 | BEQ EXST1A NO Y COMPONENT, STRAIGHT VERTICAL 172 | EORA LASDIR+1 CALC SLOPE 173 | COMA 174 | JSR DXST 175 | BCC EXBYE 176 | BRA EXST1X ABORTED 177 | EXST1A JSR GETBLK GET A BLOCK TO USE 178 | BCC EXST2 G OT ONE 179 | EXST1X LDY OPICT,X ABORT THE SUCKER 180 | LDD OBJX,X 181 | JSR PCTOFF OFF THE IMAGE 182 | BRA EXBYE 183 | EXST2 LDD OBJX,X 184 | LDX OPICT,X 185 | STD UL,U STORE UPPER LEFT (FIRST FRAME) 186 | LDD #$A0A DMA GUY 187 | STD DMACNT,U 188 | LDB CENTMP+1 189 | STB YCENT,U 190 | SUBB UL+1,U SUBTRACT Y UPPER LEFT 191 | BCS NWCENT NO GOOD 192 | CMPB 1,X COMPARE 193 | BLO CENTOK 194 | NWCENT LDB 1,X GET HEIGHT 195 | LSRB 1/2 Y 196 | STB YOF,U SAVE OFFSET 197 | ADDB UL+1,U ADD TOP 198 | STB YCENT,U THIS IS 199 | BRA CCONT 200 | CENTOK STB YOF,U 201 | CCONT LDY #HCK2+1331 202 | LDD ,X FETCH H,W 203 | STD WH,U SAVE 204 | STB YHITE,U HITE FOR FIRST ERASE 205 | LDB #1 HEIGHT IS 1 FOR DMA 206 | EORA #$4 207 | EORB #$4 208 | STD DMAWH,U FORMED 209 | 210 | IFNC &A,NO 211 | 212 | LDA STATUS 213 | BMI NOCKK NOT IN GAME OVER! 214 | 215 | LDA -1331,Y GET CHECK BYTE 216 | CMPA #$4A IS IT THE MAGIC NUMBER 217 | BEQ NOCKK ITS OK 218 | 219 | LDA LSEED 220 | BNE NOCKK 221 | 222 | LDB HSEED 223 | LDA #$98 224 | 225 | PSHS D 226 | STU [,S] 227 | PULS D 228 | 229 | ENDIF 230 | 231 | NOCKK LDX 2,X GET DATA POINTER 232 | STX PICPTR,U SAVE OBJECT DESC 233 | LDD #$100 1 UNIT IS MIN 234 | STD YSIZER,U 235 | LDA #$10 NUMBER OF BYTES TO ERASE, NUMBER OF FRAMES LEFT 236 | STA FRAMES,U 237 | EXBYE PULS X,D,U,PC,Y AND RETURN TO CALLER 238 | 239 | ERSIZ EQU 6 240 | BSSIZE EQU 11 SIZE OF LOOP ELEMENTS IN OTHER FILE 241 | 242 | ERASE LDB YHITE,Y ACTUALLY PLOTTED 243 | SUBB #16 MAX OF 16 244 | NEGB 245 | LDA #ERSIZ 246 | MUL 247 | LDX ELOOPV LOAD START OF ERASE LOOP 248 | ABX 249 | PSHS X PLACE TO JUMP TO 250 | LDA YSIZER,Y 251 | STA YSIZE 252 | 253 | LDA UL,Y GET UPPER LEFT 254 | LDB #$12 255 | SEI 256 | STA DMADES HIGH HALF OF SCREEN STUFF 257 | 258 | LDA UL+1,Y SO THAT COMMON LOOP WORKS 259 | LDU #0 260 | STU DMACON CONSTANT, AND HIGH HALF OF DMAORG 261 | STA DMAORG+1 LOW HALF OF ORIG 262 | 263 | LDU DMAWH,Y 264 | STU DMASIZ 265 | LDU #DMADES+1 Y CHANGES FOR US 266 | LDX #DMACTL ADD SOME SPEED 267 | RTS AND JUMP TO THE LOOP 268 | * 269 | *KILL EXPLOSION 270 | *Y= EXP TO KILL 271 | 272 | KILEXP LDU #EXPTR LETS WALK LIST TO FIND HIM 273 | KILEX2 CMPY ,U ARE WE SET 274 | BEQ KILEX1 YEP 275 | LDU ,U KEEP WALKING 276 | BNE KILEX2 STILL STUFF THERE 277 | SEI 278 | BRA * ERROR TRAP 279 | KILEX1 LDD ,Y GET GUY WE POINT AT 280 | STD ,U POINT AROUND US 281 | LDD OFREE 282 | STD ,Y APPEND FREE LIST 283 | STY OFREE 284 | LEAY ,U RETURN GUY BEFORE US TO WALK FROM 285 | RTS DONE! 286 | 287 | FCC ' ROBOTRON: 2084 ' 288 | FCC ' COPYRIGHT 1982 WILLIAMS ELECTRONICS INC. ' 289 | FCC ' ALL RIGHTS RESERVED ' 290 | 291 | * 292 | *APPEAR WRITE 293 | *Y=APPEAR 294 | AWRITE LDD YSIZER,Y 295 | SUBD #$0080 296 | CMPA YSIZER,Y CHANGE? 297 | BNE AWRIT0 UPDATE IT 298 | STB YSIZER+1,Y STORE FRACT+QUIT 299 | RTS 300 | AWRIT0 JSR ERASE 301 | LDA STATUS 302 | BNE AWRIT1 SCROLL EM 303 | LDD PX 304 | STA UL,Y 305 | ADDB YOF,Y 306 | STB YCENT,Y 307 | AWRIT1 LDA WH+1,Y GET HEIGHT 308 | STA HITE PRELIMINARY ATTEMPT AT HEIGHT 309 | 310 | LDD YSIZER,Y GET CURRENT SIZE 311 | CMPA #1 DONE?? 312 | BHI AWW2 313 | BSR APGO PUT IT OUT ONCE MORE 314 | AWW1 LDU #APPTR 315 | JMP KILEX2 AND KILL IT 316 | 317 | AWW2 SUBD #$080 TAKE AWAY SOME SIZE 318 | CMPA #1 319 | BHI APGO DONE! 320 | LDA DMACNT,Y GET CONTROL 321 | CMPA #$E SLOW A MODE STUFF?? 322 | BNE AWW1 NO 323 | LDA #1 FORCE SIZE OF 1 324 | BRA APGO FINISH, THEN KILL! 325 | * 326 | *WRITE EXPANDED IMAGE 327 | * 328 | 329 | WRITE DEC FRAMES,Y ONE LESS FRAME 330 | LBEQ KILEXP DONE 331 | 332 | LDA WH+1,Y GET HEIGHT 333 | STA HITE 334 | 335 | LDD YSIZER,Y 336 | ADDD #$100 337 | APGO STA YSIZE 338 | STD YSIZER,Y 339 | 340 | LSRA 1/2 AND SAVE 341 | LDB YOF,Y CHECK FOR ZERO OFFSET 342 | BNE APGO1 343 | CLRA IF DOWN FROM TOP....FIX TOP ONE (OBSCURE BUG) 344 | APGO1 STA TEMP2 345 | 346 | LDX PICPTR,Y GET DATA POINTER 347 | 348 | LDA YSIZE 349 | LDB YOF,Y GET OFFSET 350 | MUL DISTANCE UP FROM CENTER 351 | 352 | STD TEMP1 SAVE 353 | LDB YCENT,Y GET CENTER 354 | CLRA 355 | SUBD TEMP1 LETS BE GENERAL PURPOSE 356 | ADDB TEMP2 ADD 1/2 SIZE 357 | ADCA #0 AND PROPAGATE 358 | BNE CHK2 359 | CMPB #YMIN 360 | BHI CHK3 361 | CHK2 DEC HITE 362 | ADDB YSIZE 363 | ADCA #0 364 | BNE CHK2 365 | CHK1 CMPB #YMIN 366 | BLS CHK2 367 | STB UL+1,Y STORE IN PLACE 368 | LDD WH,Y 369 | SUBB HITE 370 | MUL 371 | ABX 372 | BRA CHK3A 373 | CHK3 STB UL+1,Y 374 | CHK3A LDA HITE GET HEIGHT 375 | DECA 376 | LDB YSIZE FIND FILL DEFLECTION 377 | MUL 378 | ADDB UL+1,Y ADD FIRST POINT 379 | ADCA #0 FIND FULL DEFLECTION 380 | BEQ CHK4 AOK 381 | CHK5 DEC HITE 1 LESS 382 | SUBB YSIZE 1 LESS DOWNWARD 383 | SBCA #0 384 | BNE CHK5 385 | CHK4 CMPB #YMAX 386 | BHS CHK5 387 | 388 | * FIND "LOOP" ENTRY 389 | 390 | LDA HITE GET HEIGHT 391 | LBEQ KILEXP 392 | STA YHITE,Y SAVE FOR ERASE 393 | SUBA #16 16 = 0 OFFSET, 0 = 16 OFFSET 394 | NEGA 395 | LDB #BSSIZE SIZE OF ITERATION 396 | MUL 397 | ADDD WLOOPV ADD THE START OF THE LOOP 398 | PSHS D,Y 399 | 400 | LDU DMACNT,Y DMA CONTROL REG 401 | LDD DMAWH,Y GET WH 402 | 403 | SEI NO INTS BABY 404 | STD DMASIZ 405 | LDA UL,Y GET X OF DMADESINATION 406 | STA DMADES 407 | 408 | LDB WH,Y GET INITIAL X WIDTH (AMOUNT TO ADD TO SOURCE PTR) 409 | LDA UL+1,Y GET Y HEIGHT AT START 410 | 411 | LDY #DMADES+1 PLACE TO CHANGE IN LOOP 412 | 413 | RTS JUMP INTO IT 414 | * 415 | *EXPLOSION,APPEAR UPDATE 416 | * 417 | EXUPDV LDY EXPTR 418 | BEQ APUPD 419 | EXUPDL JSR ERASE 420 | JSR WRITE 421 | LDY ,Y 422 | BNE EXUPDL 423 | APUPD LDY APPTR 424 | BEQ APUPDX 425 | APUPDL JSR AWRITE 426 | LDY ,Y 427 | BNE APUPDL 428 | APUPDX JSR HXUPD HORIZ UPDATE 429 | JMP DXUPD 430 | * 431 | *GENIES BITCHEN 330AM PDEATH 432 | * 433 | PDTHV LDU CRPROC 434 | PULS D 435 | STD PD6,U 436 | LDA #10 437 | STA PD,U 438 | LDX #PLOBJ 439 | JSR DMAOFF 440 | PDTH0 LDX #PLOBJ 441 | LDA #$99 442 | JSR OPON 443 | NAP 2,PDTH1 444 | PDTH1 LDA SEED 445 | ANDA #3 446 | LDX #PDCTAB 447 | LDA A,X 448 | LDX #PLOBJ 449 | JSR OPON 450 | DEC PD,U 451 | BEQ PDTH2 452 | NAP 6,PDTH0 453 | PDTH2 EQU * 454 | JSR GNCIDE 455 | JSR COLST 456 | JSR KILL OFF DECAY 457 | LDU CRPROC 458 | LDX #PD2TAB 459 | STX PD,U 460 | LDX #PLOBJ 461 | LDA #$CC 462 | JSR OPON 463 | PDTH3 LDX PD,U 464 | LDA ,X+ 465 | STA PCRAM+$C 466 | BEQ PDTH4 467 | STX PD,U 468 | NAP 4,PDTH3 469 | PDTH4 LDX #PLOBJ 470 | CLR OFLAV,X 471 | JSR DMAOFF 472 | JSR COLST 473 | LDU CRPROC 474 | JMP [PD6,U] 475 | PDCTAB FCB $00,$11,$33,$77 476 | PD2TAB FCB $FF,$F6,$AD,$A4,$5B,$52,$09,$0 477 | END 478 | --------------------------------------------------------------------------------