home *** CD-ROM | disk | FTP | other *** search
/ Mega Magazine 7 / Mega_Magazine_07_19xx___nl_Disk_2_of_2_Side_A.atr / wavey.arc / WAVEY.ASM < prev   
Assembly Source File  |  1985-10-07  |  13KB  |  1 lines

  1. 10 ;£¢20 ;£WAVEY   .M65/ASM¢30 ;£^^^^^^^^^^^^¢40 ;£ Line scrolling demo¢50 ;£¢60       .OPT NO LIST,NO EJECT,OBJ¢70       *=  $3000¢80 SKCTL =   $D20F¢90 AUDF1 =   $D200¢0100 AUDC1 = $D201¢0110 AUDCTL = $D208¢0120 STICK0 = $0278¢0130 TRIG0 = $D010¢0140 HSCROL = $D404¢0150 SDLSTL = $0230¢0160 VDSLST = $0200¢0170 NMIEN = $D40E¢0180 COLPF0 = $D016¢0190 COLPF2 = $D018¢0200 COLBAK = $D01A¢0210 GRACTL = $D01D¢0220 RANDOM = $D20A¢0230 WSYNC = $D40A¢0240 SDMCTL = $022F¢0250 DMACTL = $D400¢0260 SETVBV = $E45C¢0270 XITVBV = $E462¢0280 CONSOL = $D10F¢0290 CHBAS = $02F4¢0300 GRAFP0 = $D00D¢0310 GRAFP1 = GRAFP0+1¢0320 SIZEP0 = $D008¢0330 SIZEP1 = SIZEP0+1¢0340 HPOSP0 = $D000¢0350 HPOSP1 = HPOSP0+1¢0360 HPOSP2 = HPOSP1+1¢0370 HPOSP3 = HPOSP2+1¢0380 COLPM0 = $D012¢0390 COLPM1 = COLPM0+1¢0400 COLPM2 = COLPM1+1¢0410 COLPM3 = COLPM2+1¢0420 GPRIOR = $026F¢0430 PRIOR = $D01B¢0440 PCOLR0 = $02C0¢0450 PCOLR1 = PCOLR0+1¢0460 SCROL .BYTE 0¢0470 WHERE .BYTE 0¢0480 STEP .BYTE 0¢0490 CF  .BYTE 0¢0500 FLAG .BYTE 1¢0510 TEMP =  $CB¢0520 ;¢0530 START¢0540     LDA #35¢0550     STA SDMCTL¢0560     LDA #$70¢0570     STA CHBAS¢0580     LDA # <DLIST¢0590     STA SDLSTL¢0600     LDA # >DLIST¢0610     STA SDLSTL+1¢0620     LDA # <PMDLI¢0630     STA VDSLST¢0640     LDA # >PMDLI¢0650     STA VDSLST+1¢0660     LDA #0¢0670     STA $CE¢0680     STA AUDC1¢0690     STA AUDC1+2¢0700     STA AUDC1+4¢0710     STA AUDC1+6¢0720     STA HPOSP2¢0730     STA HPOSP3¢0740     STA $14¢0750     STA SIZEP1¢0760     STA PCOLR0¢0770     STA PCOLR1¢0780     STA GRACTL¢0790     STA $06FF¢0800     LDA #8¢0810     STA 709¢0820     LDA #6¢0830     STA 708¢0840     LDA #$C0¢0850     STA AUDCTL¢0860     STA $FF¢0870     LDA #$0A¢0880     STA 710¢0890     LDA #$80¢0900     STA $D0¢0910     LDA #3¢0920     STA SIZEP0¢0930     STA SKCTL¢0940     LDA #4¢0950     STA GPRIOR¢0960     LDA #255¢0970     STA GRAFP0¢0980     STA GRAFP1¢0990     LDA #15¢1000     STA SCROL¢1010     STA HSCROL¢1020     LDA #1¢1030     LDA #1¢1040     STA 544¢1050 WAIT1 LDA 544¢1060     BNE WAIT1¢1070     LDA #192¢1080     STA NMIEN¢1090     LDY # <HERE¢1100     LDX # >HERE¢1110     LDA #7¢1120     JSR SETVBV¢1130 LOOP JMP LOOP¢1140 ;¢1150 ;¢1160 ; Scroll the scroller by one bit¢1170 ; and shift LMS address if¢1180 ; needed.¢1190 SCROLY¢1200     LDA SCROL¢1210     SBC #1¢1220     STA SCROL¢1230     STA HSCROL¢1240     CMP #5¢1250     BEQ ZERO¢1260     RTS ¢1270 ZERO LDA #13¢1280     STA SCROL¢1290     STA HSCROL¢1300     LDA LOW¢1310     CLC ¢1320     ADC #1¢1330     STA LOW¢1340     BCC ONE¢1350     INC HI¢1360 ONE LDA LOW¢1370 ?A1 CMP # <LEN¢1380     BNE END¢1390     LDA HI¢1400 ?A2 CMP # >LEN¢1410     BNE END¢1420     LDA # <SCRNMEM¢1430     STA LOW¢1440     LDA # >SCRNMEM¢1450     STA HI¢1460 END RTS ¢1470 ;¢1480 ;Cracked music routine from¢1490 ; DownTown. JSR once during¢1500 ; VBlank.¢1510 MUSIC LDA $FF¢1520     STA AUDCTL¢1530     LDA #$03¢1540     STA SKCTL¢1550     DEC $060D¢1560     BEQ ?1¢1570     JMP ?2¢1580 ?1  LDX #$02¢1590     STX $060D¢1600     DEC $060C¢1610     BNE ?3¢1620     LDX #$05¢1630     STX $060C¢1640     JSR ?4¢1650 ?3  LDY $0600¢1660     INY ¢1670     CPY #$31¢1680     BNE ?8¢1690     DEY ¢1700 ?8  STY $0600¢1710     TYA ¢1720     CLC ¢1730     ADC $0608¢1740     TAY ¢1750     LDA $7800,Y¢1760     STA $0604¢1770     LDY $0601¢1780     INY ¢1790     CPY #$31¢1800     BNE ?5¢1810     DEY ¢1820 ?5  STY $0601¢1830     TYA ¢1840     CLC ¢1850     ADC $0609¢1860     TAY ¢1870     LDA $7900,Y¢1880     STA $0605¢1890     LDY $0602¢1900     INY ¢1910     CPY #$31¢1920     BNE ?6¢1930     DEY ¢1940 ?6  STY $0602¢1950     TYA ¢1960     CLC ¢1970     ADC $060A¢1980     TAY ¢1990     LDA $7A00,Y¢2000     STA $0606¢2010     LDY $0603¢2020     INY ¢2030     CPY #$31¢2040     BNE ?7¢2050     DEY ¢2060 ?7  STY $0603¢2070     TYA ¢2080     CLC ¢2090     ADC $060B¢2100     TAY ¢2110     LDA $7B00,Y¢2120     STA $0607¢2130     CLC ¢2140     LDA $0604¢2150     ADC #$80¢2160     STA AUDC1¢2170     LDA $0605¢2180     ADC #$A0¢2190     STA AUDC1+2¢2200     LDA $0606¢2210     ADC #$C0¢2220     STA AUDC1+4¢2230     LDA $0607¢2240     ADC #$A0¢2250     STA AUDC1+6¢2260 ?2  LDA SKCTL¢2270     CMP #$06¢2280     BNE ?9¢2290     LDA #$00¢2300     STA $CE¢2310     LDA #$80¢2320     STA $D0¢2330     STA $CF¢2340 ?9  JMP ?23¢2350 ?16 LDY $060E¢2360     LDA $7C00,Y¢2370     STA $060E¢2380     RTS ¢2390 ?24 LDA $060E¢2400     CLC ¢2410     ADC #$40¢2420     TAY ¢2430     LDA $7C00,Y¢2440     STA $060E¢2450     RTS ¢2460 ?15 LDY $060F¢2470     LDA #$CE¢2480 ?10 CLC ¢2490     ADC #$32¢2500     DEY ¢2510     BPL ?10¢2520     STA $060F¢2530     RTS ¢2540 ?4  INC $CE¢2550     BNE ?11¢2560     INC $D0¢2570 ?11 LDY #$00¢2580     LDX $D0¢2590     CPX #$83¢2600     BNE ?12¢2610     LDA #$80¢2620     STA $D0¢2630     TAX ¢2640 ?12 STX $CF¢2650     LDX #$00¢2660     LDY #$00¢2670     LDA ($CE),Y¢2680     JSR ?13¢2690     LDA $060E¢2700     BEQ ?14¢2710     STX $0600¢2720     JSR ?15¢2730     JSR ?16¢2740     LDA $060E¢2750     STA AUDF1¢2760     LDA $060F¢2770     STA $0608¢2780 ?14 LDA $D0¢2790     CLC ¢2800     ADC #$04¢2810     STA $CF¢2820     LDY #$00¢2830     LDA ($CE),Y¢2840     JSR ?13¢2850     LDA $060E¢2860     BEQ ?17¢2870     LDX #$00¢2880     STX $0601¢2890     JSR ?15¢2900     JSR ?16¢2910     LDA $060E¢2920     STA $0611¢2930     LDA $060F¢2940     STA $0609¢2950     CLC ¢2960 ?17 LDA $D0¢2970     CLC ¢2980     ADC #$08¢2990     STA $CF¢3000     LDY #$00¢3010     LDA ($CE),Y¢3020     JSR ?13¢3030     LDA $060E¢3040     BEQ ?18¢3050     STX $0602¢3060     JSR ?15¢3070     JSR ?24¢3080     LDA $060E¢3090     STA AUDF1+4¢3100     LDA $060F¢3110     STA $060A¢3120 ?18 LDA $D0¢3130     CLC ¢3140     ADC #$0C¢3150     STA $CF¢3160     LDY #$00¢3170     LDA ($CE),Y¢3180     JSR ?13¢3190     LDA $060E¢3200     BEQ ?19¢3210     STX $0603¢3220     JSR ?15¢3230     JSR ?16¢3240     LDA $060E¢3250     STA $0612¢3260     LDA $060F¢3270     STA $060B¢3280 ?19 RTS ¢3290 ?13 PHA ¢3300     AND #$3F¢3310     STA $060E¢3320     PLA ¢3330     AND #$C0¢3340     LSR A¢3350     LSR A¢3360     LSR A¢3370     LSR A¢3380     LSR A¢3390     LSR A¢3400     STA $060F¢3410     RTS ¢3420 ?23 INC $0610¢3430     LDA $0612¢3440     STA AUDF1+6¢3450     LDA $0611¢3460     DEC $0613¢3470     BNE ?20¢3480     LDX #$03¢3490     STX $0613¢3500     CMP #$39¢3510     BCC ?20¢3520     LDA $0610¢3530     AND #$01¢3540     CLC ¢3550     ADC $0611¢3560     SEC ¢3570     SBC #$01¢3580 ?20 STA AUDF1+2¢3590     LDA #$40¢3600     LDX $0608¢3610     CPX #$00¢3620     BEQ ?21¢3630     CPX #$32¢3640     BEQ ?21¢3650     CLC ¢3660     ADC #$80¢3670 ?21 STA $FF¢3680     RTS ¢3690 ;¢3700 ; Vblank routine¢3710 HERE LDA #0¢3720     STA 77¢3730     JSR MUSIC¢3740     LDA $06FF¢3750     ADC CF¢3760     AND #$3F¢3770     BNE HERE0¢3780     LDA FLAG¢3790     EOR #1¢3800     STA FLAG¢3810     BEQ LABEL0¢3820     LDA #3¢3830     STA SIZEP0¢3840     LDA #0¢3850     STA SIZEP1¢3860     BEQ LABEL1¢3870 LABEL0 LDA #0¢3880     STA SIZEP0¢3890     LDA #3¢3900     STA SIZEP1¢3910 LABEL1 LDA PMV1¢3920     STA PMV2¢3930     EOR #1¢3940     STA PMV1¢3950     LDA PMX1¢3960     STA PMX2¢3970     EOR #1¢3980     STA PMX1¢3990 HERE0 LDA STICK0¢4000     AND #$0C¢4010     CMP #4¢4020     BEQ NEXT¢4030     JSR SCROLY¢4040     LDA STICK0¢4050     AND #$0C¢4060     CMP #8¢4070     BNE NEXT¢4080     JSR SCROLY¢4090 NEXT LDA TRIG0¢4100     BEQ SKIP1¢4110     INC CF¢4120 ;¢4130 ; Control bouncing of scroll¢4140 ; line.¢4150 SKIP1 LDY WHERE¢4160     JSR NLOOPY¢4170     LDA #$00¢4180     STA DL2,Y¢4190     STA DL2+1,Y¢4200     STA DL2-[[ <COPLN]+1],Y¢4210     STA DL2-[[ <COPLN]+2],Y¢4220     LDY STEP¢4230     LDA ORDER,Y¢4240     STA WHERE¢4250     INY ¢4260     STY STEP¢4270     CPY # <ORDERLN¢4280     BNE EXIT¢4290     LDA #0¢4300     STA STEP¢4310 EXIT JMP XITVBV¢4320 ;¢4330 ; Do a simple copy of the Scroll¢4340 ; Dlist to the active Dlist area¢4350 ; according to where it should¢4360 ; be.¢4370 NLOOPY¢4380     LDX #0¢4390 NLOOP LDA DL,X¢4400     STA DL2,Y¢4410     INY ¢4420     INX ¢4430     CPX # <COPLN¢4440     BNE NLOOP¢4450     RTS ¢4460 ;¢4470 ; Active Dlist area.¢4480 ;  All the $00s here is the area¢4490 ;  where the bouncing scroll¢4500 ;  line is copied to.¢4510 DLIST .BYTE $70,$70,$60,$00¢4520 DL2 .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00¢4530     .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00¢4540     .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00¢4550 ;¢4560 ; This is the area where the¢4570 ; 64 DLI waveform takes place.¢4580 ;¢4590     .BYTE $40¢4600     .BYTE $80,$80,$80,$80,$80,$80,$80,$80,$80,$80¢4610     .BYTE $80,$80,$80,$80,$80,$80,$80,$80,$80,$80¢4620     .BYTE $80,$80,$80,$80,$80,$80,$80,$80,$80,$80¢4630     .BYTE $80,$80,$80,$80,$80,$80,$80,$80,$80,$80¢4640     .BYTE $80,$80,$80,$80,$80,$80,$80,$80,$80,$80¢4650     .BYTE $80,$80,$80,$80,$80,$80,$80,$80,$80,$80¢4660     .BYTE $80,$80,$80,$80¢4670     .BYTE $41, <DLIST, >DLIST¢4680 ;¢4690 ; This is the Dlist part of the¢4700 ; scroll line.  the VBlank¢4710 ; routine controls the copying¢4720 ; of the below data to the¢4730 ; correct portion of the active¢4740 ; Dlist.¢4750 DL  .BYTE $4E, <LINE, >LINE¢4760     .BYTE $4E, <LINE, >LINE¢4770     .BYTE $80¢4780     .BYTE $57¢4790 LOW .BYTE  <SCRNMEM¢4800 HI  .BYTE  >SCRNMEM¢4810     .BYTE $00¢4820     .BYTE $4E, <LINE, >LINE¢4830     .BYTE $4E, <LINE, >LINE¢4840 COPLN = *-DL¢4850 ;¢4860 LINE .BYTE $E4,$E4,$E4,$E4,$E4,$E4,$E4,$E4,$E4,$E4,$E4,$E4,$E4,$E4,$E4,$E4,$E4,$E4,$E4,$E4¢4870     .BYTE $E4,$E4,$E4,$E4,$E4,$E4,$E4,$E4,$E4,$E4,$E4,$E4,$E4,$E4,$E4,$E4,$E4,$E4,$E4,$E4¢4880     .BYTE $E4,$E4,$E4,$E4,$E4,$E4,$E4,$E4¢4890 SCRNMEM .SBYTE +31,"                     "¢4900     .SBYTE +31,"WELCOME TO THE 8-BIT SHADOW PRODUCTIONS' FIRST DEMO, THE "¢4910     .SBYTE +159,"WAVEY"¢4920     .SBYTE +31," DEMO.  "¢4930     .SBYTE +159,"WE ARE A GROUP OF 3... DATA, AQUALUNG, AND PURE EVIL.  "¢4940     .SBYTE +31,"AQUALUNG AND PURE EVIL DESIGNED THE COOL P/M BELOW.  I JUST DID THIS LAME SCROLLER "¢4950     .SBYTE +31,"AND CRACKED THIS MUSIC.  "¢4960     .SBYTE +159,"FOR YOUR VIEWING PLEASURE YOU MAY USE THE JOYSTICK TO MOVE THIS SCROLLER AND FIRE TO PAUSE"¢4970     .SBYTE +159," THE WAVEFORM.  "¢4980     .SBYTE +31,"GREETINX TO MACE, WHITE SHADOW, AND J.A.C.S.  "¢4990     .SBYTE +159,"8/92"¢5000     .SBYTE +31,"                    "¢5010 LEN =   *-19¢5020 ;¢5030 LEN2¢5040     .SBYTE "  "¢5050 ;¢5060 ; DLI for the scroll line¢5070 ; rasters.¢5080 DLI¢5090     PHA ¢5100     TYA ¢5110     PHA ¢5120     TXA ¢5130     PHA ¢5140     LDX #15*16+14¢5150     LDY #0¢5160 D1¢5170     STA WSYNC¢5180     STX COLPF0¢5190     TXA ¢5200     SBC #$2E¢5210     STA COLPF2¢5220     STY COLBAK¢5230     DEX ¢5240     DEX ¢5250     INY ¢5260     INY ¢5270     CPY #16¢5280     BNE D1¢5290     DEY ¢5300     DEY ¢5310     LDX #3*16¢5320 D2¢5330     STA WSYNC¢5340     STX COLPF0¢5350     TXA ¢5360     ADC #$70¢5370     STA COLPF2¢5380     STY COLBAK¢5390     INX ¢5400     INX ¢5410     DEY ¢5420     DEY ¢5430     CPY #254¢5440     BNE D2¢5450     LDA #6¢5460     STA WSYNC¢5470     STA COLPF0¢5480     LDA #10¢5490     STA COLPF2¢5500     LDA #0¢5510     STA COLBAK¢5520     LDA # <PMDLI¢5530     STA VDSLST¢5540     LDA # >PMDLI¢5550     STA VDSLST+1¢5560     STA WSYNC¢5570     STA WSYNC¢5580     STA WSYNC¢5590 ;   LDA #33¢5600 ;   STA DMACTL¢5610     PLA ¢5620     TAX ¢5630     PLA ¢5640     TAY ¢5650     PLA ¢5660     RTI ¢5670 ;¢5680 ; An ultra-simple routine to¢5690 ; subtract 31 from the scroll¢5700 ; line text as protection.¢5710 ; purposely placed in the midst¢5720 ; of the code so a bit of¢5730 ; confusion takes place in¢5740 ; finding this routine.¢5750 ;  Of course an experienced¢5760 ; hacker would have no problem.¢5770 CRACK LDA # <[SCRNMEM-1]¢5780     STA TEMP¢5790     LDA # >[SCRNMEM-1]¢5800     STA TEMP+1¢5810     LDY #0¢5820 UNPROT LDA (TEMP),Y¢5830     SBC #30¢5840     STA (TEMP),Y¢5850     LDA TEMP¢5860     CLC ¢5870     ADC #1¢5880     STA TEMP¢5890     BCC CHK1¢5900     INC TEMP+1¢5910 CHK1 LDA TEMP+1¢5920     CMP # >LEN2¢5930     BNE UNPROT¢5940     LDA TEMP¢5950     CMP # <LEN2¢5960     BNE UNPROT¢5970     LDX #$05¢5980     LDA #0¢5990     TAY ¢6000 CRLP STA $7800,Y¢6010     INY ¢6020     BNE CRLP¢6030     INC CRLP+2¢6040     DEX ¢6050     BNE CRLP¢6060     RTS ¢6070 ;¢6080 ; This is the heart of the¢6090 ; waveform.  This DLI is run 64¢6100 ; times.¢6110 PMDLI¢6120     PHA ¢6130     TYA ¢6140     PHA ¢6150     LDA $06FF¢6160     AND #$3F¢6170     ADC CF¢6180     AND #$7F¢6190     TAY ¢6200     LDA ORDER1,Y¢6210     STA HPOSP0¢6220 PMV1 =  *-2¢6230     LDA $D207¢6240     ASL A¢6250     ADC #70¢6260     STA COLPM0¢6270 PMX1 =  *-2¢6280     LDA ORDER2,Y¢6290     STA HPOSP1¢6300 PMV2 =  *-2¢6310     LDA $D207¢6320     ASL A¢6330     ADC #68+$60¢6340     STA COLPM1¢6350 PMX2 =  *-2¢6360     INC $06FF¢6370     LDA $06FF¢6380     AND #$3F¢6390     BNE PD1¢6400     LDA # <DLI¢6410     STA VDSLST¢6420     LDA # >DLI¢6430     STA VDSLST+1¢6440     LDA #0¢6450     STA HPOSP0¢6460     STA HPOSP1¢6470     STA HPOSP2¢6480     STA HPOSP3¢6490     STA COLPM0¢6500     STA COLPM1¢6510     STA COLPM2¢6520     STA COLPM3¢6530 PD1¢6540     PLA ¢6550     TAY ¢6560     PLA ¢6570     RTI ¢6580 ;¢6590 ; Include the Data.¢6600     .INCLUDE #D1:>M65>DATA.M65¢6610 ;¢