0100 ;FADERII.M65 0101 ;BY PATRICK DELL'ERA 0102 ;ANTIC MAGAZINE 0104 ; 0105 PROGRAM = $3E00 0106 BUFFER = $2007 0107 ;External reference equates 0108 LBL:105 = BUFFER+2 0109 LBL:106 = BUFFER+3 0110 LBL:091 = BUFFER+4 0111 LBL:064 = BUFFER+$0B 0112 LBL:121 = BUFFER+$0D 0113 LBL:125 = BUFFER+$0E 0114 LBL:127 = BUFFER+$16 0115 LBL:080 = BUFFER+$21 0116 LBL:107 = BUFFER+$22 0117 LBL:083 = BUFFER+$23 0118 LBL:078 = BUFFER+$24 0119 ;End of external references 0120 ; 0121 ;System equates used 0122 BOOT = $09 0123 DOSVEC = $0A 0124 RTCLOK = $12 0125 SOUNDR = $41 0126 ATRACT = $4D 0127 SAVMSC = $58 0128 SDLSTL = $0230 0129 SDLSTH = $0231 0130 COLDST = $0244 0131 RUNADR = $02E0 0132 COLOR0 = $02C4 0133 COLOR1 = $02C5 0134 COLOR2 = $02C6 0135 COLOR4 = $02C8 0136 ICCOM = $0342 0137 ICBAL = $0344 0138 ICBAH = $0345 0139 ICBLL = $0348 0140 ICBLH = $0349 0141 ICAX1 = $034A 0142 ICAX2 = $034B 0143 CONSOL = $D01F 0144 RANDOM = $D20A 0145 CIOV = $E456 0146 EOL = $9B 0147 ;End of system equates 0148 ;Zero-page equates 0149 PIC.CTR = $E0 0150 N09 = $EA 0151 CTR1 = $BA 0152 CTR2 = $BB 0153 SVCOLR = $CC 0154 PICTYPE = $CB 0155 N16 = $EC 0156 N17 = $E6 0157 N18 = $E4 0158 N19 = $E1 0159 N22 = $E3 0160 N23 = $EB 0161 N24 = $E2 0162 N27 = $E9 0163 N41 = $80 0164 N42 = $81 0165 N54 = $82 0166 N55 = $83 0167 N59 = $84 0168 N60 = $85 0169 ;End of zero-page equates 0170 .PAGE "Main Program 11/10/84" 0171 ; 0172 ;Program Start 0173 ; First two bytes are variables 0174 ; indicating the Pause length 0175 ; and the Drive # pictures are 0176 ; read from. 0177 ; 0178 *= PROGRAM 0179 WAIT 0180 .BYTE 2 0181 DRNUM 0182 .BYTE '1 0183 ; 0184 ;Routine to load compressed 0185 ; files. 0186 ; 0187 READ.HDR 0188 INC PIC.CTR 0189 JMP GET.BYTE 0190 PIC.LDR 0191 LDA #$FF 0192 STA PIC.CTR 0193 LBL:007 0194 JSR READ.HDR 0195 LDX PIC.CTR 0196 CPX #$1A 0197 BEQ LBL:006 0198 CPX #$0D 0199 BEQ SVCOLR.PIC 0200 CPX #7 0201 BNE LBL:007 0202 STA N09 0203 JMP LBL:007 0204 SVCOLR.PIC 0205 STA SVCOLR+1 0206 JSR READ.HDR 0207 STA SVCOLR+2 0208 JSR READ.HDR 0209 STA SVCOLR+3 0210 JSR READ.HDR 0211 STA SVCOLR+4 0212 JSR READ.HDR 0213 STA SVCOLR 0214 JMP LBL:007 0215 LBL:006 LDA #0 0216 STA N16 0217 STA N17 0218 LDA SAVMSC 0219 STA PIC.CTR 0220 STA N18 0221 LDA SAVMSC+1 0222 STA PIC.CTR+1 0223 STA N18+1 0224 LBL:030 JSR GET.BYTE 0225 PHA 0226 LDX #0 0227 STX N22 0228 AND #$80 0229 STA N23 0230 PLA 0231 AND #$7F 0232 STA N24 0233 BNE LBL:025 0234 JSR GET.BYTE 0235 STA N22 0236 JSR GET.BYTE 0237 STA N24 0238 LBL:025 DEC N24 0239 LDA N23 0240 BNE LBL:026 0241 JSR GET.BYTE 0242 STA N27 0243 LBL:029 0244 JMP LBL:028 0245 LBL:032 DEC N24 0246 LDA #$FF 0247 CMP N24 0248 BNE LBL:029 0249 DEC N22 0250 LDA #$FF 0251 CMP N22 0252 BNE LBL:029 0253 BEQ LBL:030 0254 LBL:036 DEC N24 0255 LDA #$FF 0256 CMP N24 0257 BNE LBL:026 0258 DEC N22 0259 LDA #$FF 0260 CMP N22 0261 BEQ LBL:030 0262 LBL:026 JSR GET.BYTE 0263 STA N27 0264 LBL:028 LDA #2 0265 CMP N09 0266 BEQ LBL:031 0267 LBL:035 BEQ LBL:032 0268 LDA N27 0269 LDY #0 0270 STA (PIC.CTR),Y 0271 CLC 0272 LDA #$50 0273 ADC PIC.CTR 0274 STA PIC.CTR 0275 LDA #0 0276 ADC PIC.CTR+1 0277 STA PIC.CTR+1 0278 INC N17 0279 LDA #$60 0280 CMP N17 0281 BNE LBL:033 0282 LDA #1 0283 CMP N16 0284 BNE LBL:034 0285 CLC 0286 LDA #1 0287 ADC N18 0288 STA N18 0289 STA PIC.CTR 0290 LDA #0 0291 STA N16 0292 STA N17 0293 ADC N18+1 0294 STA N18+1 0295 STA PIC.CTR+1 0296 JMP LBL:033 0297 LBL:034 INC N16 0298 CLC 0299 LDA #$28 0300 ADC N18 0301 STA PIC.CTR 0302 LDA #0 0303 STA N17 0304 ADC N18+1 0305 STA PIC.CTR+1 0306 LBL:033 LDA N23 0307 BEQ LBL:035 0308 LBL:037 BNE LBL:036 0309 LBL:031 LDA N27 0310 LDY #0 0311 STA (PIC.CTR),Y 0312 INC PIC.CTR 0313 BNE LBL:031.1 0314 INC PIC.CTR+1 0315 LBL:031.1 0316 LDA N23 0317 BEQ LBL:035 ;Forced branch 0318 BNE LBL:037 ; 0319 ; 0320 ;CIO utilities 0321 ; 0322 GET.BYTE 0323 LDX #$10 0324 LDA #0 0325 STA ICBLL,X 0326 STA ICBLH,X 0327 JSR CIOV 0328 BMI LBL:038 0329 RTS 0330 LBL:038 PLA 0331 PLA 0332 JMP MIC.1 0333 CLOSE.CH1 0334 LDX #$10 0335 CLOSE.CH6 0336 LDA #$0C 0337 STA ICCOM,X 0338 JMP CIOV 0339 OPEN.1 0340 STA ICBAH,X 0341 TYA 0342 STA ICBAL,X 0343 LDA #3 0344 STA ICCOM,X 0345 LBL:040 JSR CIOV 0346 BMI EXIT 0347 RTS 0348 EXIT JSR CLOSE.CH1 0349 JMP (DOSVEC) 0350 ; 0351 ;Picture fader routine 0352 ; 0353 MSKTBL 0354 .BYTE $01,$08,$40,$02 0355 .BYTE $10,$80,$04,$20 0356 FADEIN 0357 LDA SAVMSC 0358 STA N41 0359 STA N54 0360 LDA #0 0361 STA CTR2 0362 LBL:104 LDA #7 0363 CMP CTR2 0364 BCS LBL:087 0365 RTS 0366 LBL:087 LDX CTR2 0367 LDA #0 0368 STA LBL:080 0369 LBL:090 LDA #$FE 0370 CMP LBL:080 0371 BCC LBL:088 0372 TXA 0373 PHA 0374 LDX LBL:080 0375 LDY LBL:078,X 0376 PLA 0377 TAX 0378 JSR LBL:089 0379 INC LBL:080 0380 JMP LBL:090 0381 LBL:088 TXA 0382 PHA 0383 LDX #$FF 0384 LDY LBL:078,X 0385 PLA 0386 TAX 0387 JSR LBL:089 0388 LDA LBL:091 0389 BMI LBL:092 0390 LDY CTR2 0391 CPY #2 0392 BNE LBL:093 0393 LDA SVCOLR-1,Y 0394 STA COLOR0 0395 LBL:093 0396 CPY #3 0397 BNE LBL:096 0398 LDA SVCOLR-1,Y 0399 STA COLOR1 0400 LBL:096 0401 CPY #4 0402 BNE LBL:099 0403 LDA SVCOLR-1,Y 0404 STA COLOR2 0405 LBL:099 0406 CPY #5 0407 BNE LBL:092 0408 LDA SVCOLR 0409 STA COLOR4 0410 LBL:092 INC CTR2 0411 JMP LBL:104 0412 LBL:089 0413 LDA LBL:105 0414 STA N42 0415 LDA LBL:106 0416 STA N55 0417 LDA #0 0418 STA LBL:107 0419 LBL:113 LDA #$1D 0420 CMP LBL:107 0421 BCS LBL:108 0422 RTS 0423 LBL:108 LDA (N41),Y 0424 AND MSKTBL,X 0425 BNE LBL:111 0426 LDA MSKTBL,X 0427 EOR #$FF 0428 AND (N54),Y 0429 JMP LBL:112 0430 LBL:111 ORA (N54),Y 0431 LBL:112 STA (N54),Y 0432 INC N42 0433 INC N55 0434 INX 0435 TXA 0436 AND #7 0437 TAX 0438 INC LBL:107 0439 JMP LBL:113 0440 ; 0441 ;Program Entry 0442 ; 0443 START 0444 LDA DRNUM ;User alterable 0445 STA DDVC+1 ;drive # 0446 LDX #1 ;Tells system 0447 STX BOOT ;no Coldstart 0448 STX PICTYPE ;and initializes 0449 DEX 0450 STX COLDST 0451 STX SOUNDR ;No disk sound 0452 ; 0453 ;Build random table for fading 0454 ;picture. 0455 ; 0456 LBL:079 TXA 0457 STA LBL:078,X 0458 INX 0459 BNE LBL:079 0460 STX LBL:080 0461 LBL:081 0462 LDA #$FF 0463 STA N60 0464 EOR LBL:080 0465 PHA 0466 STA N59 0467 LBL:062 ASL A 0468 BCS LBL:061 0469 LSR N60 0470 JMP LBL:062 0471 LBL:061 LDA RANDOM 0472 AND N60 0473 CMP N59 0474 BEQ LBL:063 0475 BCS LBL:061 0476 LBL:063 0477 STA LBL:083 0478 TAX 0479 LDA LBL:078,X 0480 TAY 0481 PLA 0482 PHA 0483 TAX 0484 LDA LBL:078,X 0485 LDX LBL:083 0486 STA LBL:078,X 0487 PLA 0488 TAX 0489 TYA 0490 STA LBL:078,X 0491 INC LBL:080 0492 INC PICTYPE 0493 BNE LBL:081 0494 ; 0495 ;Build screen dislpay list by 0496 ;closing channel 6 0497 ; 0498 LDX #$60 0499 JSR CLOSE.CH6 0500 ; 0501 ;Then open GRAPHICS 8+16 0502 ; 0503 LDA #$0C 0504 STA ICAX1,X 0505 LDA #8 0506 STA ICAX2,X 0507 LDY # <SDVC 0508 LDA # >SDVC 0509 JSR OPEN.1 0510 ; 0511 ;Give screen some color and 0512 ;modify display list to 0513 ;ANTIC E (GRAPHICS 7+) display 0514 ;list 0515 ; 0516 LDA #$80 0517 STA COLOR4 0518 LDA SDLSTL 0519 STA N41 0520 LDA SDLSTH 0521 STA N42 0522 LDY #3 0523 LDA #$4E 0524 STA (N41),Y 0525 LDY #6 0526 LBL:071 LDA #$0E 0527 STA (N41),Y 0528 INY 0529 CPY #$63 0530 BNE LBL:071 0531 LDA #$4E 0532 STA (N41),Y 0533 INY 0534 INY 0535 INY 0536 LBL:073 LDA (N41),Y 0537 CMP #$0F 0538 BNE LBL:072.A 0539 LDA #$0E 0540 STA (N41),Y 0541 INY 0542 BNE LBL:073 0543 ; 0544 ;Set pointers to a hidden 0545 ;screen used to fade new 0546 ;picture into old. 0547 ; 0548 LBL:072.A 0549 STA LBL:106 0550 LDA SAVMSC+1 0551 STA LBL:106 0552 LDA LBL:106 0553 SEC 0554 SBC #$20 0555 STA LBL:105 0556 LDA LBL:105 0557 STA SAVMSC+1 0558 ; 0559 ;Set ctr to point to first 0560 ;picture. 0561 ; 0562 FIRST.PIC LDA #1 0563 STA CTR1 0564 ; 0565 ;Open the disk directory for 0566 ;reading. 0567 ; 0568 NXT.PIC 0569 JSR CLOSE.CH1 0570 LDA #6 0571 STA ICAX1,X 0572 LDA #0 0573 STA ICAX2,X 0574 LDY # <DDVC 0575 LDA # >DDVC 0576 JSR OPEN.1 0577 STY CTR2 ;Y=0 always... 0578 ; 0579 ;Read filenames 'til CTR2=CTR1. 0580 ;CTR1 is index to which 0581 ;picture was last shown. 0582 ; 0583 LBL:119 LDA CTR1 0584 CMP CTR2 0585 BCC LBL:118 0586 LDX #$10 0587 LDA # <LBL:064+1 0588 STA ICBAL,X 0589 LDA # >LBL:064+1 0590 STA ICBAH,X 0591 LDA #20 0592 STA ICBLL,X 0593 LDA #0 0594 STA ICBLH,X 0595 LDA #5 0596 STA ICCOM,X 0597 JSR CIOV 0598 BMI FIRST.PIC 0599 INC CTR2 0600 BNE LBL:119 0601 ; 0602 ;Have read the correct # of 0603 ;filenames. Now check if 0604 ;this is a FREE SECTORS message. 0605 ;If yes, start from 1st picture. 0606 ; 0607 LBL:118 0608 JSR CLOSE.CH1 0609 LDA LBL:121 0610 CMP #$20 0611 BNE FIRST.PIC 0612 ; 0613 ;Stick "D1:" in front of 0614 ;filename. 0615 ; 0616 LDX #2 0617 NAME.LOOP LDA DDVC,X 0618 STA LBL:064,X 0619 DEX 0620 BPL NAME.LOOP 0621 ; 0622 ;Then reform name with no 0623 ;spaces, a period, the extender, 0624 ;and an end-of-line. 0625 ; 0626 NAME.LOOP.1 INX 0627 CPX #8 0628 BEQ NAME.LOOP.2 0629 LDA LBL:125,X 0630 CMP #$20 0631 BNE NAME.LOOP.1 0632 NAME.LOOP.2 LDY LBL:127 0633 LDA #'. 0634 STA LBL:125,X 0635 TYA 0636 INX 0637 STA LBL:125,X 0638 STA PICTYPE 0639 LDA #'I 0640 INX 0641 STA LBL:125,X 0642 LDA #'C 0643 INX 0644 STA LBL:125,X 0645 LDA #EOL 0646 INX 0647 STA LBL:125,X 0648 ; 0649 ;Open the picture for reading. 0650 ; 0651 JSR CLOSE.CH1 0652 LDA #4 0653 STA ICAX1,X 0654 LDA #0 0655 STA ICAX2,X 0656 LDY # <LBL:064 0657 LDA # >LBL:064 0658 JSR OPEN.1 0659 LDA LBL:105 0660 STA SAVMSC+1 0661 LDA #7 0662 LDX #$10 0663 STA ICCOM,X 0664 ; 0665 ;If the extender is 'PIC' then 0666 ;go to compressed picture load 0667 ;routine. 0668 ; 0669 LDY PICTYPE 0670 CPY #'P 0671 BNE MIC 0672 JMP PIC.LDR 0673 ; 0674 ;Otherwise, do standard load. 0675 ; 0676 MIC 0677 LDA SAVMSC 0678 STA ICBAL,X 0679 LDA SAVMSC+1 0680 STA ICBAH,X 0681 LDA #0 0682 STA ICBLL,X 0683 LDA #$1E 0684 STA ICBLH,X 0685 JSR LBL:040 0686 JSR GET.BYTE 0687 STA SVCOLR 0688 JSR GET.BYTE 0689 STA SVCOLR+1 0690 JSR GET.BYTE 0691 STA SVCOLR+2 0692 JSR GET.BYTE 0693 STA SVCOLR+3 0694 ; 0695 ;Both load types continue here. 0696 ;Fade new picture in. Pause 0697 ;and read console keys. 0698 ; 0699 MIC.1 0700 JSR FADEIN 0701 JSR CLOSE.CH1 0702 LDA #0 0703 STA ATRACT 0704 STA RTCLOK+1 0705 LBL:134 LDA RTCLOK+1 0706 CMP WAIT 0707 BCS LBL:130 0708 LBL:132 LDA CONSOL 0709 CMP #5 0710 BNE LBL:133 0711 JMP EXIT 0712 LBL:133 CMP #3 0713 BNE LBL:133.1 0714 LBL:133.2 0715 LDA #6 0716 LBL:133.3 0717 CMP CONSOL 0718 BNE LBL:133.3 0719 LBL:133.1 0720 CMP #6 0721 BNE LBL:134 0722 LBL:130 INC CTR1 0723 JMP NXT.PIC 0724 DDVC 0725 .BYTE "D1:*.?IC",EOL 0726 SDVC 0727 .BYTE "S:",EOL 0728 *= RUNADR 0729 .WORD START 0730 .SET 1,0
Back to previous page