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