1 REM "Z.GOZO2+" 2001.06.26 CREATES GOZO ML02 2 REM GOZO ML02 VAR @ (SC-1)*2+192*256 RANDOM ML @ 24064 3 REM RANDOM DATA @ 24159 TO 24213 "B" LIST @ 24356 4 REM BOARD @ 24386 ================================= 10 POKE178,55 12 SYS24064 14 X=24356 16 FORY=24159TO24213 18 E=PEEK(Y) 20 B=E+8 22 Z=B+24386 24 E=PEEK(Z) 26 IFE<32THEN32 28 POKEX,B 30 X=X+1 32 NEXT 34 END 36 REM ================================= 1000 POKE55,0:POKE56,160:CLR:BS=128+192*256:FL$="GOZO ML02":GOTO1630 1010 B=PEEK(AD):AD=AD+1:IFB=32THEN1010 1020 RETURN 1030 AA=AD 1040 B=PEEK(AA):AA=AA+1:IFB=32THEN1040 1050 RETURN 1060 GOSUB1010:IFB<>0THENPRINTB:GOTO1730 1070 RETURN 1080 N=0 1090 GOSUB1010:IFB<48 OR B>57 THEN RETURN 1100 N=N*10+(B-48):GOTO1090 1110 NH=INT(NN/256):NL=NN-(NH*256):RETURN 1120 GOSUB1110:PRINT MID$(HX$,(NHAND240)/16+1,1);MID$(HX$,(NHAND15)+1,1); 1130 PRINTMID$(HX$,(NLAND240)/16+1,1);MID$(HX$,(NLAND15)+1,1);:RETURN 1140 BX=BX+1:IFP<>3 THEN ML=ML+1:RETURN 1150 POKE ML,Z:ML=ML+1:RETURN 1160 IFP<>1THENSP=SP+1:SL=SL+1:RETURN 1170 POKESP,Z:SP=SP+1:SL=SL+1:RETURN 1180 IFP<>3THENRETURN 1190 DX=DX+1:POKE DW,NL:POKE DW+1,NH:DW=DW+2:RETURN 1200 GOSUB1010:IFB>64THEN1220 1210 G=1:AD=AD-1:GOSUB1080:AD=AD-1:NN=N:GOTO1240 1220 GOSUB1250 1230 G=0:B=B-65:NN=(B*2)+ZV 1240 B=PEEK(AD):GOSUB1110:RETURN 1250 IF(B<65 OR B>90)THEN5360 1260 RETURN 1270 Z=173:GOSUB1140:Z=NL:GOSUB1140:Z=NH:GOTO1140 1280 Z=173:GOSUB1140:Z=NL+1:GOSUB1140:Z=NH:GOTO1140 1290 Z=141:GOSUB1140:Z=NL:GOSUB1140:Z=NH:GOTO1140 1300 Z=141:GOSUB1140:Z=NL+1:GOSUB1140:Z=NH:GOTO1140 1310 Z=169:GOSUB1140:Z=NL:GOTO1140 1320 Z=169:GOSUB1140:Z=NH:GOTO1140 1330 Z=173:GOSUB1140:Z=VL:GOSUB1140:Z=VH:GOTO1140 1340 Z=173:GOSUB1140:Z=VL+1:GOSUB1140:Z=VH:GOTO1140 1350 Z=141:GOSUB1140:Z=VL:GOSUB1140:Z=VH:GOTO1140 1360 Z=141:GOSUB1140:Z=VL+1:GOSUB1140:Z=VH:GOTO1140 1370 NL=MS(H,0):NH=MS(H,1):RETURN 1380 GOSUB1140:Z=NL:GOSUB1140:Z=NH:GOTO1140 1390 GOSUB1140:Z=NL+1:GOSUB1140:Z=NH:GOTO1140 1400 GOSUB1140:Z=NL:GOTO1140 1410 GOSUB1140:Z=NH:GOTO1140 1420 Z=165:GOSUB1140:Z=Y:GOTO1140 1430 Z=162:GOSUB1140:Z=Y:GOTO1140 1440 Z=161:GOSUB1140:Z=Y:GOTO1140 1450 Z=145:GOSUB1140:Z=Y:GOTO1140 1460 Z=160:GOSUB1140:Z=Y:GOTO1140 1470 Z=133:GOSUB1140:Z=Y:GOTO1140 1480 Z=56:GOTO1140 1490 Z=24:GOTO1140 1500 Z=32:GOSUB1140:Z=YL:GOSUB1140:Z=YH:GOTO1140 1510 Z=76:GOSUB1140:Z=YL:GOSUB1140:Z=YH:GOTO1140 1520 Z=233:GOSUB1140:Z=NL:GOTO1140 1530 Z=233:GOSUB1140:Z=NH:GOTO1140 1540 Z=105:GOSUB1140:Z=NL:GOTO1140 1550 Z=105:GOSUB1140:Z=NH:GOTO1140 1560 Z=237:GOSUB1140:Z=NL:GOSUB1140:Z=NH:GOTO1140 1570 Z=237:GOSUB1140:Z=NL+1:GOSUB1140:Z=NH:GOTO1140 1580 Z=109:GOSUB1140:Z=NL:GOSUB1140:Z=NH:GOTO1140 1590 Z=109:GOSUB1140:Z=NL+1:GOSUB1140:Z=NH:GOTO1140 1600 Z=Y1:GOSUB1140:Z=Y2:GOTO1140 1610 Z=Y1:GOSUB1140:Z=Y2:GOSUB1140:Z=Y3:GOTO1140 1620 Z=169:GOSUB1140:Z=Y:GOTO1140 1630 LX=3:XX=0:ZP=BS+80:P=1:ZM=ZP:SK=-1 1635 ZV=192*256:REM VARIABLE'S START ADDRESS, FOR ORIGINAL SET ZV=679 1640 DIM LL(255,1),FS(6,4),LI%(LX,5),MS(5,3),OC%(3,1) 1650 GOSUB5440:SYS828,232,3 1660 FORI=0TOLX:FORJ=0TO5:READLI%(I,J):NEXT:NEXT:BX=0:DX=0:F2=0 1670 AD=PEEK(43)+PEEK(44)*256:PRINT"[147] ***** PASS";P;" *****" 1680 SP=ZP:ML=ZM 1690 NM=PEEK(AD)+PEEK(AD+1)*256 1700 LN=PEEK(AD+2)+PEEK(AD+3)*256:IFLN>999THEN1740 1710 PRINT" COMPILING LINE #"MID$(STR$(LN),2) 1720 IFP=2THENLL(XX,0)=LN:LL(XX,1)=ML:XX=XX+1 1730 AD=AD+4:GOSUB1010:GOTO1790 1740 IFP=1THENP=2:ZM=SP:R1=ZM:LA=SP:U1=BX:BX=0:GOTO1670 1750 IFP=2THENP=3:ZM=LA:R2=ZM:GOSUB5420:DB=LA+BX+4:DW=DB:U2=BX:BX=0:GOTO1670 1760 U3=BX:GOSUB4760:PRINT"DONE!":PRINT:GOSUB4580 1770 IFPEEK(ML-1)<>96THENZ=96:GOSUB1140 1780 GOTO4450 1790 IFB=136THEN3610:REM LET 1800 IFB=153THEN2020:REM PRINT 1810 IFB=128THEN2300:REM END 1820 IFB=137THEN2170:REM GOTO 1830 IFB=141THEN2230:REM GOSUB 1840 IFB=142THEN2300:REM RETURN 1850 IFB=139THEN2320:REM IF 1860 IFB=151THEN2600:REM POKE 1870 IFB=129THEN2710:REM FOR 1880 IFB=130THEN2960:REM NEXT 1890 IFB=135THEN3320:REM READ 1900 IFB=140THEN3420:REM RESTORE 1910 IFB=131THEN3470:REM DATA 1920 IFB=156THEN3510:REM CLR 1930 IFB=143THEN2000:REM REM 1940 IFB=161THEN3530:REM GET 1950 IFB=158THEN4300:REM SYS 1960 REM THIS LINE ASSUMES LET 1970 AD=AD-1:GOTO3610 1980 SYSBS:END 1990 FORI=0TOXX-1:PRINTLL(I,0),LL(I,1):NEXT 2000 AD=NM:GOTO1690 2010 REM HANDLE PRINT 2020 GOSUB1010:IFB=199THEN3250 2030 IFB>64 THEN2110 2040 IFB<>34THEN2150 2050 SL=0:NN=SP:GOSUB1110 2060 B=PEEK(AD):AD=AD+1:IF((B=0)OR(B=34))THEN2080 2070 Z=B:GOSUB1160:GOTO2060 2080 GOSUB1310:Y=34:GOSUB1470:GOSUB1320:Y=35:GOSUB1470 2090 Y=SL:GOSUB1430:YL=37:YH=171:GOSUB1500:GOSUB1010:IFB<>59THEN2150 2095 GOTO2000 2100 REM HANDLE PRINT 2110 IFB<65 OR B>91 THEN5360 2120 B=B-65:NN=(B*2)+ZV:GOSUB1110:GOSUB1010:W=B 2130 GOSUB1280:Z=174:GOSUB1380:YL=205:YH=189:GOSUB1500:IFW<>59THEN2150 2135 GOTO2000 2140 REM HANDLE PRINT 2150 YL=215:YH=170:GOSUB1500:GOTO2000 2160 REM HANDLE GOTO 2170 GOSUB1080:IF P<>3 THEN2210 2180 IFXX=0THEN5380 2190 F2=0:FORI=0TO(XX-1):IFLL(I,0)=NTHENF2=1:NN=LL(I,1) 2200 NEXT:IFF2=0THEN5380 2210 GOSUB1110:YL=NL:YH=NH:GOSUB1510:GOTO2000 2220 REM HANDLE GOSUB 2230 GOSUB1080:IF P<>3 THEN2210 2240 IFXX=0THEN5380 2250 F2=0:FORI=0TO(XX-1):IFLL(I,0)=NTHENF2=1:NN=LL(I,1) 2260 NEXT:IFF2=0THEN5380 2270 GOSUB1110:Z=32:GOSUB1140:Z=NL:GOSUB1140:Z=NH:GOSUB1140:GOTO2000 2280 GOSUB1110:YL=NL:YH=NH:GOSUB1500:GOTO2000 2290 REM HANDLE RETURN 2300 Z=96:GOSUB1140:GOTO2000 2310 REM HANDLE IF 2320 GOSUB1010:IFB<65 OR B>90 THEN5360 2330 B=B-65:NN=(B*2)+ZV:GOSUB1110:VH=NH:VL=NL 2340 GOSUB1010 2350 IFB=177THENF1=1:GOTO2390:REM > 2360 IFB=178THENF1=2:GOTO2390:REM = 2370 IFB=179THENF1=3:GOTO2390:REM < 2380 GOTO5360:REM SYNTAX ERROR 2390 F3=0:GOSUB1010:IFB<65THEN2420 2400 GOSUB1250:F3=1:B=B-65:NN=(B*2)+ZV:GOSUB1110:GOTO2430 2410 REM IF <=> 2420 AD=AD-1:GOSUB1080:AD=AD-1:NN=N:GOSUB1110 2430 GOSUB1480:GOSUB1330:IFF3THENGOSUB1560:GOTO2450 2440 GOSUB1520 2450 Y=2:GOSUB1470:GOSUB1340:IFF3THENGOSUB1570:GOTO2470 2460 GOSUB1530 2470 Y1=5:Y2=2:GOSUB1600 2480 IFF1<>3THEN2500 2490 Y1=240:Y2=5:GOSUB1600:Y1=176:Y2=3:GOSUB1600:GOTO2530 2500 IFF1<>2THEN2520 2510 Y1=208:Y2=3:GOSUB1600:GOTO2530 2520 Y1=144:Y2=5:GOSUB1600:Y1=240:Y2=3:GOSUB1600:GOTO2530 2530 GOSUB1010:IFB<>167THEN5360 2540 GOSUB1080:IF P<>3 THEN2580 2550 IFXX=0THEN5380 2560 F2=0:FORI=0TO(XX-1):IFLL(I,0)=NTHENF2=1:NN=LL(I,1) 2570 NEXT:IFF2=0THEN5380 2580 GOSUB1110:YL=NL:YH=NH:GOSUB1510:GOTO2000 2590 REM HANDLE POKE 2600 GOSUB1200:VL=NL:VH=NH:TT=G:GOSUB1010:IFB<>44THEN5360 2610 GOSUB1200:IFTTTHEN2660 2620 GOSUB1330:Y=20:GOSUB1470:GOSUB1340:Y=21:GOSUB1470 2630 IFGTHENGOSUB1310:GOTO2650 2640 GOSUB1270 2650 Y=0:GOSUB1430:Y1=129:Y2=20:GOSUB1600:GOTO2000 2660 IFG=0THENGOSUB1270:GOTO2680 2670 GOSUB1310 2680 IFVH=0THENY=VL:GOSUB1470:GOTO2000 2690 GOSUB1350:GOTO2000 2700 REM HANDLE FOR 2710 GOSUB1010:IFB<65 OR B>90 THEN5360 2720 B=B-65:NN=(B*2)+ZV:GOSUB1110:VH=NH:VL=NL 2730 SK=SK+1:FS(SK,3)=NN:FS(SK,4)=0:FS(SK,1)=1 2740 GOSUB1010:IFB<>178THEN5360 2750 GOSUB1010:IF B>64THEN2800 2760 REM START = CONSTANT 2770 AD=AD-1:GOSUB1080:NN=N:GOSUB1110:GOSUB1310:GOSUB1350:GOSUB1320:GOSUB1360 2780 AD=AD-1:GOTO2810 2790 REM START = VARIABLE 2800 B=B-65:NN=(B*2)+ZV:GOSUB1110:GOSUB1270:GOSUB1350:GOSUB1280:GOSUB1360 2810 GOSUB1010:IFB<>164THEN5360 2820 GOSUB1010:IF B>64THEN2860 2830 REM TO = CONSTANT 2840 AD=AD-1:GOSUB1080:AD=AD-1:FS(SK,0)=N:GOTO2870 2850 REM TO = VARIABLE 2860 B=B-65:NN=(B*2)+ZV:FS(SK,0)=NN:FS(SK,4)=FS(SK,4) OR 2 2870 FS(SK,2)=ML:GOSUB1010:IFB=0THEN2000 2880 REM HANDLE STEP 2890 IFB<>169THEN5360 2900 GOSUB1010:IF B>64THEN2940 2910 REM STEP = CONSTANT 2920 AD=AD-1:GOSUB1080:AD=AD-1:FS(SK,1)=N:GOTO2000 2930 REM STEP = VARIABLE 2940 B=B-65:NN=(B*2)+ZV:FS(SK,1)=NN:FS(SK,4)=FS(SK,4) OR 4 : GOTO2000 2950 REM HANDLE NEXT 2960 IFSK=-1THEN5390 2970 NN=FS(SK,3):GOSUB1110:VL=NL:VH=NH 2980 NN=FS(SK,1):GOSUB1110 2990 GOSUB1490:GOSUB1330 3000 IF(FS(SK,4)AND4)=4 THEN3020 3010 GOSUB1540:GOTO3030 3020 GOSUB1580 3030 GOSUB1350 3040 GOSUB1340 3050 IF(FS(SK,4)AND4)=4 THEN3070 3060 GOSUB1550:GOTO3080 3070 GOSUB1590 3080 GOSUB1360 3090 NN=FS(SK,2):GOSUB1110:AL=NL:AH=NH 3100 NN=FS(SK,0):GOSUB1110 3110 GOSUB1480:GOSUB1330 3120 IF(FS(SK,4)AND2)=2 THEN3140 3130 GOSUB1520:GOTO3150 3140 GOSUB1560 3150 Y=2:GOSUB1470 3160 GOSUB1340 3170 IF(FS(SK,4)AND2)=2 THEN3190 3180 GOSUB1530:GOTO3200 3190 GOSUB1570 3200 Y1=5:Y2=2:GOSUB1600 3210 Y1=240:Y2=2:GOSUB1600:Y1=176:Y2=3:GOSUB1600 3220 YL=AL:YH=AH:GOSUB1510 3230 SK=SK-1:GOTO2000 3240 REM HANDLE PRINT CHR$() 3250 GOSUB1010:IFB<>40THEN5360 3260 GOSUB1010:IFB>64THEN3280 3270 AD=AD-1:GOSUB1080:Y=(N AND 255):GOSUB1620:GOTO3300 3280 B=B-65:NN=(B*2)+ZV:GOSUB1110 3290 GOSUB1270 3300 YL=210:YH=255:GOSUB1500:GOSUB1010:IFB<>59THEN2150 3305 GOTO2000 3310 REM HANDLE READ 3320 IFP<>2 THEN3370 3330 IFLI%(1,5)=1THEN3350 3340 F2=1:NN=LA:GOSUB1110:LI%(1,3)=NL:LI%(1,4)=NH:LI%(1,5)=1:LA=LA+LI%(1,2) 3350 IFLI%(0,5)=1THEN3370 3360 NN=LA:GOSUB1110:LI%(0,3)=NL:LI%(0,4)=NH:LI%(0,5)=1:LA=LA+LI%(0,2) 3370 GOSUB1010:B=B-65:NN=(B*2)+ZV:GOSUB1110 3380 YL=LI%(1,3):YH=LI%(1,4):GOSUB1500 3390 GOSUB1290 3400 Z=142:GOSUB1390:GOTO2000 3410 REM HANDLE RESTORE 3420 IFP<>2THEN3450 3430 IFLI%(0,5)=1THEN3450 3440 F2=1:NN=LA:GOSUB1110:LI%(0,3)=NL:LI%(0,4)=NH:LI%(0,5)=1:LA=LA+LI%(0,2) 3450 YL=LI%(0,3):YH=LI%(0,4):GOSUB1500:GOTO2000 3460 REM HANDLE DATA 3470 GOSUB1010:AD=AD-1:IFB=0THEN2000 3480 GOSUB1080:NN=N:GOSUB1110:GOSUB1180:IFB=44THEN3480 3490 GOTO2000 3500 REM HANDLE CLR 3510 NN=BS+64:GOSUB1110:YL=NL:YH=NH:GOSUB1500:GOTO2000 3520 REM HANDLE GET 3530 GOSUB1010:GOSUB1250 3540 B=B-65:NN=(B*2)+ZV:GOSUB1110:VH=NH:VL=NL 3550 YL=228:YH=255:GOSUB1500:GOSUB1290 3560 Y=0:GOSUB1620 3570 GOSUB1300:GOTO2000 3580 REM 3590 REM HANDLE LET 3600 REM 3610 GOSUB1200:IFGTHEN5360 3620 VL=NL:VH=NH 3630 GOSUB1010:IFB<>178THEN5360 3640 GOSUB1030 3650 REM HANDLE FUNCTIONS HERE 3660 IFB=194THEN4350: REM PEEK 3670 GOSUB1200:GOSUB1010:OP=0 3680 MS(0,0)=NL:MS(0,1)=NH:MS(0,2)=G:MS(0,3)=NN 3690 IF((B=0)OR(B=58))THENSE=B:GOTO3760 3700 OP=B:RO=B:IFOP=175THENOP=172 3710 IFOP=176THENOP=173 3720 IFRO=172THENOP=174 3730 IFRO=173THENOP=175 3740 GOSUB1200:GOSUB1010 3750 MS(1,0)=NL:MS(1,1)=NH:MS(1,2)=G:MS(1,3)=NN:SE=B 3760 IFOP<>0THEN3840 3770 H=0:GOSUB1370:IFMS(0,2)THEN3810 3780 REM = 3790 GOSUB1270:GOSUB1350:GOSUB1280:GOSUB1360:GOTO3820 3800 REM = 3810 GOSUB1310:GOSUB1350:GOSUB1320:GOSUB1360 3820 IFSE=58THEN3610 3830 GOTO2000 3840 IF((OP<170)OR(OP>173))THEN4070 3850 REM HANDLE ADDITION & SUBTRACTION 3860 IFMS(0,2)+MS(1,2)<>2 THEN3920 3870 REM = <+-> 3880 REM GOSUB 500 3890 IFOP=170THEN NN=MS(0,3)+MS(1,3):GOSUB1110:GOTO3810 3900 IFOP=171THEN NN=MS(0,3)-MS(1,3):GOSUB1110:GOTO3810 3910 GOTO5360 3920 IFOP=170THENZ=24:GOSUB1140 3930 IFOP=171THENZ=56:GOSUB1140 3940 H=0:GOSUB1370:N1=NL:N2=NH:IFMS(0,2)THENGOSUB1310:GOTO3960 3950 GOSUB1270 3960 Z=OC%(OP-170,MS(1,2)):TT=Z 3970 H=1:GOSUB1370:N3=NL:N4=NH:IFMS(1,2)THENGOSUB1400:GOTO3990 3980 GOSUB1380 3990 GOSUB1350 4000 NL=N1:NH=N2:IFMS(0,2)THENGOSUB1320:GOTO4020 4010 GOSUB1280 4020 Z=TT:NL=N3:NH=N4:IFMS(1,2)THENGOSUB1410:GOTO4040 4030 GOSUB1390 4040 GOSUB1360 4050 IFSE=58THEN3610 4060 GOTO2000 4070 IFOP=175THEN4130 4080 IFOP<>174THEN5360 4090 IFP<>2THEN4160 4100 IFLI%(3,5)=1THEN4160 4110 F2=1:NN=LA:GOSUB1110:LI%(3,3)=NL:LI%(3,4)=NH:LI%(3,5)=1:LA=LA+LI%(3,2) 4120 GOTO4160 4130 IFP<>2THEN4160 4140 IFLI%(2,5)=1THEN4160 4150 F2=1:NN=LA:GOSUB1110:LI%(2,3)=NL:LI%(2,4)=NH:LI%(2,5)=1:LA=LA+LI%(2,2) 4160 H=0:GOSUB1370:IFMS(0,2)THEN4180 4170 GOSUB1270:Y=5:GOSUB1470:GOSUB1280:Y=6:GOSUB1470:GOTO4190 4180 GOSUB1310:Y=5:GOSUB1470:GOSUB1320:Y=6:GOSUB1470 4190 H=1:GOSUB1370:IFMS(1,2)THEN4210 4200 GOSUB1270:Y=3:GOSUB1470:GOSUB1280:Y=4:GOSUB1470:GOTO4220 4210 GOSUB1310:Y=3:GOSUB1470:GOSUB1320:Y=4:GOSUB1470 4220 IFOP=174THEN4250 4230 Z=32:GOSUB1140:Z=LI%(2,3):GOSUB1140:Z=LI%(2,4):GOSUB1140 4240 Y=5:GOSUB1420:GOSUB1350:Y=6:GOSUB1420:GOSUB1360:GOTO4270 4250 Z=32:GOSUB1140:Z=LI%(3,3):GOSUB1140:Z=LI%(3,4):GOSUB1140 4260 Y=163:GOSUB1420:GOSUB1350:Y=164:GOSUB1420:GOSUB1360 4270 IFSE=58THEN3610 4280 GOTO2000 4290 REM HANDLE SYS 4300 GOSUB1200:IFGTHEN4320 4310 GOSUB1270:Y=20:GOSUB1470:GOSUB1280:Y=21:GOSUB1470:GOTO4330 4320 GOSUB1310:Y=20:GOSUB1470:GOSUB1320:Y=21:GOSUB1470 4330 Z=32:GOSUB1140:Z=48:GOSUB1140:Z=225:GOSUB1140:GOTO2000 4340 REM HANDLE PEEK 4350 GOSUB1010:GOSUB1010:IFB<>40THEN5360 4360 GOSUB1200:IFGTHEN4410 4370 GOSUB1270:Y=20:GOSUB1470:GOSUB1280:Y=21:GOSUB1470:Y=0:GOSUB1430:Y=20:GOSUB1440 4380 GOSUB1350:NL=0:GOSUB1310:GOSUB1360:GOSUB1010:IFB<>41THEN5360 4390 GOSUB1010:IFB=58THEN3610 4400 GOTO2000 4410 IFNH=0THEN4430 4420 GOSUB1270:GOTO4380 4430 Y=NL:GOSUB1420:GOTO4380 4440 REM THIS IS FILE SAVE ROUTINE 4450 A$=FL$:DV=8 4455 OPEN15,DV,15:PRINT#15,"S0:"+A$:CLOSE15 4460 NN=DW+2:GOSUB1110:L=LEN(A$):AD=0:VL=0:VH=0:I=0 4470 A$=A$:POKE251,PEEK(71):POKE252,PEEK(72):AD=PEEK(251)+PEEK(252)*256 4480 VL=PEEK(AD+1):VH=PEEK(AD+2) 4490 POKE780,8:POKE781,8:POKE782,1 4500 SYS65466 :REM SETLFS 4510 POKE780,L:POKE781,VL:POKE782,VH 4520 SYS65469 :REM SETNAM 4525 TH=NH:TL=NL:NN=BS:GOSUB1110 4530 POKE251,NL:POKE252,NH :REM START 4540 POKE780,251:POKE781,TL:POKE782,TH 4550 SYS65496 :REM SAVE 4560 END 4570 REM PRINT COMPILE INFO 4580 REM PRINT" "FL$" INFO.":PRINT"PRESS P FOR PRINTER (DEVICE 4)," 4582 REM PRINT"ANY OTHER KEY FOR SCREEN." 4584 REM POKE198,0:WAIT198,1:GETA$:IFA$="P"THEN OPEN 4,4,7:CMD 4 4590 PRINT"START........ "BS 4600 PRINT"STRING POOL.. "ZP 4610 PRINT"RUNTIME LIB.. "SP 4620 PRINT"CODE START... "LA 4630 PRINT"CODE END .... "DB-1 4640 PRINT"CODE SIZE.... "(DB-1)-LA"BYTES" 4660 PRINT"DATA AREA.... "DB 4670 PRINT"PROG END..... "DW+2 4680 PRINTTAB(14);"-------------------" 4690 PRINT"TOTAL SIZE... "(DW+2)-BS"BYTES" 4710 PRINT:PRINT:PRINT" ZIP-BASIC, COPYRIGHT (C) 2000 BY" 4720 PRINTTAB(9);"J & F PUBLISHING INC." 4730 PRINTTAB(10);"ALL RIGHTS RESERVED" 4735 REM IF A$="P" THEN PRINT#4:CLOSE4 4740 RETURN 4750 REM HANDLE RUNTIME LIBRARY 4760 PRINT"[147]BUILDING RUNTIME LIBRARY..." 4770 FORI=BSTOBS+47:POKEI,0:NEXT:FORI=BS+48TOBS+62:POKEI,234:NEXT 4780 POKEBS+63,96:POKEBS,32:NN=BS+48:GOSUB1110:POKEBS+1,NL:POKEBS+2,NH 4790 READ D$:FORI=1TOLEN(D$):POKEBS+9+I,ASC(MID$(D$,I,1)):NEXT 4800 FORI=BS+64TOBS+74:READD:POKEI,D:NEXT 4805 H%=ZV/256:POKEBS+69,ZV-H%*256:POKEBS+70,H%:REM VARIABLE'S START ADDRESS 4810 POKEBS+51,32:NN=BS+64:GOSUB1110:POKEBS+52,NL:POKEBS+53,NH 4820 POKE BS+3,76:NN=LA:GOSUB1110:POKEBS+4,NL:POKEBS+5,NH 4830 IFF2<>1THENRETURN 4840 FORI=0TOLX 4850 IFLI%(I,5)<>1 THEN4900 4860 REM INSTALL LIBRARY 4870 SYS828,LI%(I,0),LI%(I,1) 4880 NT=LI%(I,3)+(LI%(I,4)*256):NC=LI%(I,2)-1 4890 FF=0:FORJ=0TONC:READD:IFSGN(D)<>-1THEN 4896 4892 IF FF=1THEN FF=0:D=NH:GOTO4896 4894 NN=ABS(D)+BS:GOSUB1110:FF=1:D=NL 4896 POKENT+J,D:NEXT 4900 NEXT 4910 IFLI%(0,5)<>1THEN4940 4920 NN=DB:GOSUB1110:POKEBS+6,NL:POKEBS+7,NH:NN=DW:GOSUB1110:POKEBS+8,NL 4930 POKEBS+9,NH:POKEBS+48,32:POKEBS+49,LI%(0,3):POKEBS+50,LI%(0,4) 4940 RETURN 4950 REM LIB ARRAY DATA 4960 DATA 176,19,11,0,0,0 :REM RESTORE 4970 DATA 206,19,43,0,0,0 :REM READ 4980 DATA 20,20,59,0,0,0 :REM DIVIDE 4990 DATA 110,20,48,0,0,0 :REM MULTIPLY 5000 DATA "ZIP-BASIC (C) 2000 J&F PUBLISHING" 5010 DATA 162,88,169,0,157,167,2,202 5020 DATA 16,250,96 5030 REM THIS IS LIBRARY RESTORE 5040 DATA 173,-6,-1,133,65,173,-7,-1 5050 DATA 133,66,96 5060 REM *** THIS IS LIBRARY READ *** 5070 DATA 165,65,205,-8,-1,208,12,165 5080 DATA 66,205,-9,-1,208,5,162,13 5090 DATA 108,0,3,160,0,177,65,72 5100 DATA 200,177,65,170,24,165,65,105 5110 DATA 2,133,65,165,66,105,0,133 5120 DATA 66,104,96 5130 REM *** THIS IS LIBRARY DIVIDE *** 5140 DATA 165,3,5,4,208,5,162,20 5150 DATA 108,0,3,169,0,133,163,133 5160 DATA 164,162,16,6,5,38,6,38 5170 DATA 163,38,164,56,165,163,229,3 5180 DATA 168,165,164,229,4,144,6,230 5190 DATA 5,133,164,132,163,202,208,227 5200 DATA 165,163,141,217,2,165,164,141 5210 DATA 218,2,96 5220 REM *** LIBRARY MULTIPLY *** 5230 DATA 169,0,133,165,133,166,162,16 5240 DATA 70,4,102,3,144,11,24,165 5250 DATA 165,101,5,133,165,165,166,101 5260 DATA 6,106,133,166,102,165,102,164 5270 DATA 102,163,202,208,227,165,165 5280 DATA 141,217,2,165,166,141,218,2 5290 DATA 96 5360 ER$="SYNTAX ERROR":GOTO5400 5370 ER$="BAD COMMAND":GOTO5400 5380 ER$="UNDEF'D STATEMENT":GOTO5400 5390 ER$="NEXT WITHOUT FOR":GOTO5400 5400 PRINT "[ERROR][146][154] " ER$" IN LINE"LN:END 5410 REM FIXUP LINE NUMBERS 5420 N=R2-R1:IFN=0THENRETURN 5430 FORI=0TOXX-1:LL(I,1)=LL(I,1)+N:NEXT:RETURN 5440 POKE828,32:POKE829,253:POKE830,174:POKE831,32:POKE832,158:POKE833,183 5450 POKE834,134:POKE835,20:POKE836,32:POKE837,253:POKE838,174:POKE839,32 5460 POKE840,158:POKE841,183:POKE842,134:POKE843,21:POKE844,32:POKE845,19 5470 POKE846,166:POKE847,176:POKE848,3:POKE849,76:POKE850,227:POKE851,168 5480 POKE852,165:POKE853,95:POKE854,164:POKE855,96:POKE856,56:POKE857,233 5490 POKE 858,1:POKE859,76:POKE860,36:POKE861,168 5500 OC%(0,0)=109:OC%(0,1)=105:OC%(1,0)=237:OC%(1,1)=233 5510 OC%(2,0)=45:OC%(2,1)=41:OC%(3,0)=13:OC%(3,1)=9 5520 HX$="0123456789ABCDEF":RETURN 9998 : 9999 REM * SCRATCH & SAVE * 10000 FL$="Z.GOZO2+":DV=8 10001 OPEN15,DV,15:PRINT#15,"S0:"+FL$:CLOSE15:SAVE FL$,DV:END 10002 : 19998 REM * LIST TO PRINTER * 19999 REM (SET TO DEVICE 4 & EMULATE) 20000 P=PEEK(646):POKE646,PEEK(53281):PRINT"[147]PRINT#1:CLOSE1":POKE646,P 20001 POKE631,19:POKE632,13:POKE198,2:OPEN1,4,7:CMD1:LIST-&999:END