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›