0100 ;SAVE#D:SNOWA.PT1 0110 ;------------------- 0120 ; part 1 of the game 0130 ; 0140 ; by: Barry Kolbe 0150 ; 0160 ;------------------- 0170 .OPT NO LIST 0180 ; 0190 ;page zero variables 0200 ; 0210 DRY = $82 0220 PXP = $83 ;2byter 0230 PYP = $85 ; " 0240 ADD = $87 0250 HMV = $88 0260 CURCHR = $89 0270 VERT = $8A 0280 EADD = $8B 0290 EHOLD = $8C 0300 EYX = $8D 0310 EYY = $8E 0320 ICY = $8F 0330 ICX = $90 0340 VTIME = $91 0350 VFLG = $92 0360 XSP = $93 0370 YSP = $94 0380 RAND = $95 0390 ICNT = $96 0400 DATA = $97 0410 UNIQUE = $98 0420 FTIME = $99 ;7 bytes 0430 CARTIM = $A0 ;6 bytes 0440 RMTIM = $A6 ;6 bytes 0450 ROADC = $AC ;2 bytes 0460 ROADG = $AE ; " 0470 CNT = $B0 0480 SHD = $B1 0490 MAPFLG = $B2 0500 FUEL = $B3 ;3 bytes 0510 LIVES = $B6 0520 DIRF = $B7 0530 DIRECT = $B8 0540 CARCNT = $B9 0550 ICEON = $BA 0560 Y1 = $BB 0570 Y2 = $BC 0580 ICEDIR = $BD 0590 IDECNT = $BE 0600 LEVEL = $BF 0610 FULK = $C0 0620 ICTL = $C1 0630 ICTH = $C2 0640 ICESPEED = $C3 0650 THOUS = $C4 0660 SPSND = $C5 0670 IFLAG = $C6 0680 IISY = $C7 0690 IIY3 = $C8 0700 COUNT = $C9 ;these are 0710 IL = $CB 0720 TL = $CB ;all 0730 JL = $CD 0740 BFL = $CD 0750 INDR = $CB ;2 bytes 0760 IND2 = $CD 0770 FOFS = $CF 0780 YH = $D0 0790 XD1 = $D1 0800 XH = $D2 0810 ICECNT = $D3 0820 SCRS = $D4 ;6 bytes 0830 FULX = $DA ;6 bytes 0840 FULY = $E0 ;6 bytes 0850 CARX = $E6 ;4 bytes 0860 CARY = $EA ;4 bytes 0870 OFFSCN = $EE ;2 bytes 0880 SLENGTH = $F0 0890 EDM = $F1 ;2 0900 SXP = $F3 0910 SYP = $F4 0920 ; 0930 ;OS equates 0940 ; 0950 CIOV = $E456 0960 ICCOM = $0342 0970 ICBAL = $0344 0980 ICBAH = $0345 0990 ICBLL = $0348 1000 ICBLH = $0349 1010 AUX1 = $034A 1020 AUX2 = $034B 1030 SETVBV = $E45C 1040 XITVBV = $E462 1050 RANDOM = $D20A 1060 RTCLOK = $14 1070 CONSOL = $D01F 1080 EOL = $9B 1090 SEOL = $BB 1100 PCHR = 54 1110 ; 1120 COLOR0 = $02C4 1130 COLOR1 = $02C5 1140 COLOR2 = $02C6 1150 COLOR3 = $02C7 1160 COLOR4 = $02C8 1170 SDLSTL = $0230 1180 CH = $02FC 1190 ; 1200 STICK = $0278 1210 STRIG = $0284 1220 HPOSP0 = $D000 1230 HPOSM0 = $D004 1240 HSCROL = $D404 1250 VSCROL = $D405 1260 HITCLR = $D01E 1270 P0PL = $D00C 1280 P1PL = $D00D 1290 ; 1300 ;memory usage 1310 ; 1320 SCNMEM = $9000 1330 PMB = $8000 1340 SET = $8C00 1350 MYPMB = $8400 1360 MSMEM = PMB+$0300 1370 P0MEM = MYPMB 1380 P1MEM = MYPMB+$0100 1390 P2MEM = MYPMB+$0200 1400 P3MEM = MYPMB+$0300 1410 CHSET = $8C00 1420 GOVER = $9B00 1430 TXTWIN = $8B00 1440 SCLN = TXTWIN+20 1450 CHRLN1 = TXTWIN+40 1460 SC2 = SCNMEM+128 1470 SC3 = SC2+128 1480 SC4 = SC3+128 1490 SC5 = SC4+128 1500 SC6 = SC5+128 1510 SC7 = SC6+128 1520 SC8 = SC7+128 1530 SC9 = SC8+128 1540 SC10 = SC9+128 1550 SC11 = SC10+128 1560 BCKUP = $7FC0 1570 SET2 = $7D00 1580 SCRLMEM = $7C00 1590 ;credits @ $7b00 1600 ; 1610 ;display list interrupt 1620 ; 1630 *= PMB 1640 DLI PHA 1650 DIC LDA #2 1660 STA $D40A 1670 STA $D01A 1680 PLA 1690 RTI 1700 ; 1710 ;character set 1720 ; 1730 *= $8C00 1740 .INCLUDE #D:SNOW.PT5 1750 ; 1760 *= TXTWIN 1770 .SBYTE " FUEL 150 PLOWS " 1780 .SBYTE "3 SCORE " 1790 .SBYTE "000000 " 1800 ; 1810 *= GOVER 1820 .SBYTE " SNOWFLAKES " 1830 .SBYTE "WIN press " 1840 .SBYTE "START " 1850 ; 1860 ;display lists ;intro first 1870 ;then game board 1880 ; 1890 *= $7F00 1900 IDLST .BYTE $70,$70,$70,$70 1910 .BYTE $70,$70,$70,$42 1920 .WORD SNOWMEM 1930 .BYTE $02,$70,$70,$70,$02 1940 .BYTE $02,$70,$70,$70,$70 1950 .BYTE $57 1960 LMS .WORD SCRLMEM 1970 .BYTE $70,$70,$70,$70,$46 1980 .WORD TOPSCORE 1990 .BYTE $41 2000 .WORD IDLST 2010 ; 2020 *= $7F80 2030 DL1 .BYTE $70,$70,$70 2040 .BYTE $42 2050 .WORD SNOWMEM 2060 .BYTE 2 2070 .BYTE $75 2080 SL1 .WORD SCNMEM 2090 .BYTE $75 2100 .WORD SC2 2110 .BYTE $75 2120 .WORD SC3 2130 .BYTE $75 2140 .WORD SC4 2150 .BYTE $75 2160 .WORD SC5 2170 .BYTE $75 2180 .WORD SC6 2190 .BYTE $75 2200 .WORD SC7 2210 .BYTE $75 2220 .WORD SC8 2230 .BYTE $75 2240 .WORD SC9 2250 .BYTE $75 2260 .WORD SC10 2270 .BYTE $D5 2280 .WORD SC11 2290 .BYTE $46 2300 TMESS .WORD TXTWIN 2310 .BYTE 6,$41 2320 .WORD DL1 2330 ; 2340 ;start of program 2350 ; 2360 *= $4000 2370 ; 2380 ;save the display list 2390 ;for next levels 2400 ; 2410 BEGIN LDY #50 2420 MDL LDA DL1,Y 2430 STA BCKUP,Y 2440 DEY 2450 BPL MDL 2460 LDA # >CHSET ;new chrset 2470 STA 756 2480 JSR SETPMG ;player init 2490 ; 2500 LDX # >VBLNK ;set vbi 2510 LDY # PMB 3590 STA 54279 3600 LDA #$28 ;yellow 3610 STA 704 3620 LDA #6 ;black 3630 STA 705 3640 LDA #$A6 3650 STA 706 3660 STA 707 3670 LDA #$80 3680 STA PXP 3690 LDA #$70 3700 STA PYP 3710 LDA #1 3720 STA 53258 3730 STA 53259 3740 RTS 3750 ; 3760 ;clear pm area 3770 ; 3780 CLRPM LDY #$FF 3790 LDA #0 3800 CPM STA P0MEM,Y 3810 STA P1MEM,Y 3820 STA P2MEM,Y 3830 STA P3MEM,Y 3840 STA MSMEM,Y 3850 DEY 3860 CPY #$FF 3870 BNE CPM 3880 RTS 3890 ; 3900 ;define plrs 3910 ; 3920 DEFPLR LDX #3 3930 LDA DIRECT 3940 DF1 CMP DIRTAB,X 3950 BEQ DFOK 3960 DEX 3970 BPL DF1 3980 RTS 3990 DFOK LDA PD0L,X 4000 STA JL 4010 LDA PD0H,X 4020 STA JL+1 4030 LDA PD1L,X 4040 STA IL 4050 LDA PD1H,X 4060 STA IL+1 4070 TXA 4080 PHA 4090 LDA PYP 4100 STA Y1 4110 CLC 4120 ADC YTB,X 4130 STA PYP+1 4140 STA Y2 4150 TAY 4160 LDA #0 4170 STA P1MEM-1,Y 4180 LDY #0 4190 DFP LDA (JL),Y 4200 LDX Y1 4210 STA P0MEM,X 4220 LDA (IL),Y 4230 LDX Y2 4240 STA P1MEM,X 4250 INY 4260 INC Y1 4270 INC Y2 4280 CPY #16 4290 BNE DFP 4300 LDX Y2 4310 STA P1MEM,X 4320 LDX PXP 4330 STX HPOSP0 4340 PLA 4350 TAX 4360 LDA PXP 4370 CLC 4380 ADC XTB,X 4390 STA PXP+1 4400 STA HPOSP0+1 4410 RTS 4420 ; 4430 DIRTAB .BYTE 11,7,14,13 4440 XTB .BYTE $FF,$01,$00,$00 4450 YTB .BYTE $00,$00,$FF,$01 4460 ; 4470 ;player definitions & tables 4480 ; 4490 PD0L .BYTE P0D1, >P0D2, >P0D3, >P0D4 4510 PD1L .BYTE P1D1, >P1D2, >P1D3, >P1D4 4530 P0D1 .BYTE $00,$00,$00,$FF 4540 .BYTE $FF,$76,$76,$76 4550 .BYTE $76,$76,$76,$FF 4560 .BYTE $FF,$00,$00,$00 4570 P0D2 .BYTE $00,$00,$00,$FF 4580 .BYTE $FF,$6E,$6E,$6E 4590 .BYTE $6E,$6E,$6E,$FF 4600 .BYTE $FF,$00,$00,$00 4610 P0D3 .BYTE $00,$66,$66,$7E 4620 .BYTE $7E,$7E,$7E,$7E 4630 .BYTE $7E,$66,$66,$66 4640 .BYTE $7E,$7E,$66,$00 4650 P0D4 .BYTE $00,$66,$7E,$7E 4660 .BYTE $66,$66,$66,$7E 4670 .BYTE $7E,$7E,$7E,$7E 4680 .BYTE $7E,$66,$66,0 4690 ; 4700 P1D1 .BYTE $00,$AA,$AA,$80 4710 .BYTE $80,$84,$84,$84 4720 .BYTE $84,$84,$84,$80 4730 .BYTE $80,$AA,$AA,$00 4740 P1D2 .BYTE $00,$FD,$FD,$01 4750 .BYTE $01,$61,$61,$61 4760 .BYTE $61,$61,$61,$01 4770 .BYTE $01,$FD,$FD,$00 4780 P1D3 .BYTE 0,$FF,$FF,$00 4790 .BYTE $99,$99,$18,$18 4800 .BYTE $99,$99,$18,$18 4810 .BYTE $99,$99,$00,$00 4820 P1D4 .BYTE $00,$00,$81,$99 4830 .BYTE $18,$18,$99,$99 4840 .BYTE $18,$18,$99,$99 4850 .BYTE $00,$FF,$FF,$00 4860 ; 4870 ;delay 4880 ; 4890 LDL LDY #19 4900 BNE DLN 4910 DELAY LDY #7 4920 DLN JSR WAIT 4930 DEY 4940 BNE DLN 4950 RTS 4960 ; 4970 ;initialize 4980 ; 4990 ;set up 128 table 5000 INIT LDY #0 5010 LDA # SCNMEM 5040 STA M128H 5050 TLP LDA M128L,Y 5060 CLC 5070 ADC #128 5080 STA M128L+1,Y 5090 LDA M128H,Y 5100 ADC #0 5110 STA M128H+1,Y 5120 INY 5130 CPY #33 5140 BNE TLP 5150 ; 5160 LDX #7 ;score & fuel 5170 LDA #$10 ;IC $10 5180 SCF STA SCRS,X 5190 DEX 5200 BPL SCF 5210 STA THOUS 5220 JSR RESFUL 5230 LDA #3 ;set lives 5240 STA LIVES 5250 LDA #$13 5260 STA TXTWIN+16 5270 LDA #$60 5280 STA ICECNT 5290 LDA #$FF 5300 STA LEVEL 5310 RTS 5320 ; 5330 CLRTAB .BYTE $D8,$44,$0A,$46,$00 5340 ; 5350 STSCRL LDA # >SL1 5360 STA JL+1 5370 LDA #