100 PCLEAR8:CLEAR200,25291
110 ERRORGOTO30000
120 IFPEEK(31999)=57THEN150
130 LOAD"PIXIE.COD",25292
140 LOAD"PIXIE.SCR",9216:CLOSE
150 DEFUSR0=28213:DEFUSR1=29243:DEFUSR2=27108:DEFUSR3=27736:DEFUSR4=28367:DEFUSR5=25292
160 PMODE4,5:DRAW"BM219,180NE2NU4NH2NL4NG2ND4NF2C0R4":ST=0:EN=0
170 RG=1:GOSUB10000
180 DIMFR(614),SQ(13),AR(0)
190 GET(232,169)-(254,190),SQ,G
200 FO=0:BU=0:LX=0:LY=0:CX=0:CY=0:RA=0:HL=0:RX=0:RY=0:RR=0:RH=0:RF=0:MX=0:MY=0:MC=0:FR=0:FX=0:FY=0:X1=0:Y1=0:X2=0:Y2=0:ER=0
210 U=0:V=0:A=0:RU=0:RV=0:NS=0:NE=0:DU=0:JK=0:ME=0
220 ME$="":N1$="":N2$="":N$=STRING$(9,32):F$=""
230 IN=0:GOSUB9000:GOSUB1000
240 GOSUB24000
250 EXEC27608:SCREEN1,1
500 F=USR00(F):ONF GOSUB1000,2000,3000,4000,5000,6000,7000,8000,9000,10000,11000,12000,13000,14000,15000,16000,17000,18000,19000,20000
510 EXEC&H8012:JK=PEEK(&HFF00)AND1:IFJK=0THEN510ELSEPLAY"L10O3CDEDC":GOTO500
1000 PMODE4,1:GOSUB25000:PCLS:PMODE2,6:GOSUB25000:PCLS:POKE28831,0:X=128:Y=96:XL=X:YL=Y:PMODE4,5:GOTO25000
2000 ME$="3-3-9A00":ME=USR01(VARPTR(ME$)):IFME=1THENEXEC28914:RETURNELSEIFME=2THENEXEC28893:RETURNELSERETURN
3000 GOSUB3500:ON(RG+1)GOTO3100,3200
3100 JK=PEEK(&HFF00)AND1:IFJK THEN3100ELSEEXEC&H8012:U=PEEK(&H15A):V=PEEK(&H15B):IFU>0ANDU<63ANDV>0ANDV<63THEN3210ELSEU=X+(X>0ANDU=0)-(X<255ANDU=63):V=Y+(Y>48ANDV=0)-(Y<143ANDV=63):GOSUB3500:X=U:Y=V:GOSUB3500
3110 JK=PEEK(&HFF00)AND1:IFJK=0THEN3110ELSE3100
3200 JK=PEEK(&HFF00)AND1:IFJK=0THEN3210ELSEEXEC&H8012:U=INT(PEEK(&H15A)/63*255):V=48+INT(PEEK(&H15B)/63*95):IF(U=X ANDV=Y)THEN3200ELSEGOSUB3500:X=U:Y=V:GOSUB3500:GOTO3200
3210 JK=PEEK(&HFF00)AND1:IFJK=0THEN3210
3500 PSET(X,Y,5-PPOINT(X,Y)):RETURN
4000 ON(RG+1)GOTO4100,4200
4100 GOSUB3500:JK=PEEK(&HFF00)AND1:IFJK THEN4100ELSEEXEC&H8012:U=PEEK(&H15A):V=PEEK(&H15B):IFU>0ANDU<63ANDV>0ANDV<63THEN4210ELSEU=X+(X>0ANDU=0)-(X<255ANDU=63):V=Y+(Y>48ANDV=0)-(Y<143ANDV=63):GOSUB4500:X=U:Y=V:GOSUB4500
4110 JK=PEEK(&HFF00)AND1:IFJK=0THEN4110ELSE4100
4200 GOSUB3500:JK=PEEK(&HFF00)AND1:IFJK=0THEN4210ELSEEXEC&H8012:U=PEEK(&H15A):V=PEEK(&H15B):U=X+(X>0ANDU=0)-(X<255ANDU=63):V=Y+(Y>48ANDV=0)-(Y<143ANDV=63):GOSUB4500:X=U:Y=V:GOSUB4500:GOTO4200
4210 JK=PEEK(&HFF00)AND1:IFJK=0THEN4210
4500 PSET(X,Y,IN):RETURN
5000 IF(FO<>5ANDBU)THEN22000ELSEON(BU+1)GOTO5100,5200
5100 ME$="4-4-B1A5A6A4":ME=USR01(VARPTR(ME$)):IFME=4THENLINE(XL,YL)-(X,Y),PSET:XL=X:YL=Y:RETURNELSELX=X:LY=Y:FO=5:BU=1:RETURN
5200 IFME=1THENLINE(LX,LY)-(X,Y),PSETELSEIFME=2THENLINE(LX,LY)-(X,Y),PSET,B ELSELINE(LX,LY)-(X,Y),PSET,BF
5210 RX=LX-X:RY=LY-Y:RF=ME:XL=X:YL=Y:BU=0:RETURN
6000 IF(FO<>6ANDBU)THEN22000ELSEON(BU+1)GOTO6100,6200
6100 ME$="4-5-A1A2A30":ME=USR01(VARPTR(ME$)):IFME=4THENRETURNELSEONME GOTO6110,6120,6130
6110 PAINT(X,Y),IN,IN:GOTO6500
6120 A=USR03(A):IFA>255THENGOSUB24000:ER=3:GOTO23000ELSEPOKE178,A:PAINT(X,Y),,IN:GOSUB24000:GOTO6500
6130 IFX>252ORY>140THENER=1:GOTO23000ELSEX1=X:Y1=Y:FO=6:BU=1:RETURN
6200 IF(X<X1)OR(Y<Y1)THENER=1:GOTO23000ELSEX2=X:Y2=Y
6210 IF(X2-X1)/4<>INT((X2-X1)/4)THENX2=X2+(X2>X1):GOTO6210
6220 IF(Y2-Y1)/4<>INT((Y2-Y1)/4)THENY2=Y2+(Y2>Y1):GOTO6220
6230 A=USR04(A):GET(48+16*A,37)-(51+16*A,40),AR,G:GOSUB24000:FORJ=Y1 TOY2 STEP4:FORI=X1 TOX2 STEP4:PUT(I,J)-(I+3,J+3),AR,OR:NEXTI,J:BU=0
6500 COLOR5:DRAW"BM0,46DR255BD97L255D":GOTO25000
7000 EXEC28832:RETURN
8000 ME$="4-7-A8A9B00":ME=USR01(VARPTR(ME$)):IFME=4THENRETURNELSEONME GOTO8100,8200,8300
8100 IFRF=0THENER=4:GOTO23000ELSERU=X+RX:RV=Y+RY:IFRU<0ORRU>255ORRV<48ORRV>143THENER=2:GOTO23000ELSEIFRF=1THENLINE(X,Y)-(RU,RV),PSET:RETURNELSEIFRF=2THENLINE(X,Y)-(RU,RV),PSET,B:RETURNELSEIFRF=3THENLINE(X,Y)-(RU,RV),PSET,BF:RETURN
8110 IFY-RR*RH*((PEEK(28149+ST*8+EN)AND240)/32)<48ORY+RR*RH*((PEEK(28149+ST*8+EN)AND15)/2)>143THENER=2:GOTO23000ELSECIRCLE(X,Y),RR,IN,RH,ST/8,EN/8:RETURN
8200 MX=X:MY=Y:MC=1:RETURN
8300 IFMC=0THENER=4:GOTO23000ELSELINE(X,Y)-(MX,MY),PSET:RETURN
9000 IN=5-IN:GOSUB25000:DRAW"BM217,165NR4UNR4UR4L2U10":RETURN
10000 RG=1-RG:DRAW"BM234,150C"+STR$(1-RG)+"U2R2BR14R2D2BD13D2L2BL14L2U2BU7BE3C"+STR$(RG)+"U2R2BR8R2D2BD7D2L2BL8L2U2":GOTO25000
11000 ME$="3-2-9A00":ME=USR01(VARPTR(ME$)):IFME=1THENPMODE4,1:GOSUB25000:PCLSELSEIFME=2THENPMODE2,6:GOSUB25000:PCLSELSERETURN
11010 PMODE4,5:GOTO25000
12000 EXEC28770:RETURN
13000 EXEC28930,PEEK(28831)-48+Y+X*256:GOTO24000
14000 EXEC31721:RETURN
15000 IF(FO<>15ANDBU)THEN22000ELSEON(BU+1)GOTO15100,15200,15300
15100 CX=X:CY=Y:GOSUB15500:FO=15:BU=1:RETURN
15200 RA=INT(SQR((CX-X)^2+(CY-Y)^2)+.5):IFRA=0THENER=1:GOTO23000ELSEME$="3-6-B1A70":ME=USR01(VARPTR(ME$)):IFME=1THENHL=1:GOTO15310ELSEIFME=2THENBU=2:RETURNELSEGOSUB15500:BU=0:RETURN
15300 HL=(INT(INT(SQR((CX-X)^2+(CY-Y)^2)+.5)/RA*100))/100
15310 IFCY-RA*HL*((PEEK(28149+ST*8+EN)AND240)/32)<48ORCY+RA*HL*((PEEK(28149+ST*8+EN)AND15)/2)>143THENER=2:GOTO23000ELSECIRCLE(CX,CY),RA,IN,HL,ST/8,EN/8:GOSUB15500:RR=RA:RH=HL:RF=4:BU=0:RETURN
15500 PSET(CX,CY,5-PPOINT(CX,CY)):RETURN
16000 ME$="3-8-B2B30":ME=USR01(VARPTR(ME$)):IFME=3THENRETURNELSEONME GOTO16100,16200
16100 IF(FO<>16ANDBU)THEN22000ELSEON(BU+1)GOTO16110,16120
16110 X1=X:Y1=Y:FO=16:BU=1:RETURN
16120 IF(X<X1)OR(Y<Y1)THENER=1:GOTO23000ELSEGET(X1,Y1)-(X,Y),FR,G:FX=X-X1:FY=Y-Y1:FR=1:BU=0:RETURN
16200 IFFR=0THENER=4:GOTO23000ELSEIF(X+FX)>255OR(Y+FY)>143THENER=2:GOTO23000ELSEX2=X+FX:Y2=Y+FY:ME$="5-1-45678":ME=USR01(VARPTR(ME$))
16210 IFME=1THENPUT(X,Y)-(X2,Y2),FR,PSET:RETURNELSEIFME=2THENPUT(X,Y)-(X2,Y2),FR,PRESET:RETURNELSEIFME=3THENPUT(X,Y)-(X2,Y2),FR,AND:RETURNELSEIFME=4THENPUT(X,Y)-(X2,Y2),FR,OR:RETURNELSEPUT(X,Y)-(X2,Y2),FR,NOT:RETURN
17000 PMODE4,1:SCREEN1,1
17010 JK=PEEK(&HFF00)AND1:IFJK THEN17010
17020 JK=PEEK(&HFF00)AND1:IFJK=0THEN17020ELSEPMODE4,5:SCREEN1,1:GOTO25000
18000 ME$="4-0-1230":ME=USR01(VARPTR(ME$)):IFME=1THENA=USR02(VARPTR(N$)):F$=LEFT$(N$,INSTR(N$," ")-1):RETURNELSEIFME=4THENRETURNELSEIFN$=STRING$(9,32)THENER=5:GOTO23000ELSEIFME=2THENLOADF$+".BIN",3072:RETURNELSESAVEF$+".BIN",3072,9216,33649:RETURN
19000 JK=PEEK(&HFF00)AND1:IFJK THEN19000
19010 JK=PEEK(&HFF00)AND1:IFJK=0THEN19010ELSEON(NS+1)GOTO19100,19200
19100 EXEC&H8012:IFPEEK(&H15A)+PEEK(&H15B)=0THENNS=1:BEEP:GOTO19000
19110 COLOR5:DRAW"BM219,180":DU=ST:NE=2:GOSUB19300:ST=ST+1+8*(ST>7):COLOR0:DU=ST:GOSUB19300:GOSUB19400:DU=EN:NE=4:GOSUB19300:GOTO19000
19200 EXEC&H8012:IFPEEK(&H15A)+PEEK(&H15B)=0THENNS=0:BEEP:GOTO25000
19210 COLOR5:DRAW"BM219,180":DU=EN:NE=4:GOSUB19300:EN=EN+1+8*(EN>7):COLOR0:DU=EN:GOSUB19300:GOSUB19400:DU=ST:NE=2:GOSUB19300:GOTO19000
19300 N1$=STR$(NE):N2$=STR$(NE/2):ON(DU+1)GOTO19310,19320,19330,19340,19350,19360,19370,19380
19310 DRAW"NR"+N1$:RETURN
19320 DRAW"NF"+N2$:RETURN
19330 DRAW"ND"+N1$:RETURN
19340 DRAW"NG"+N2$:RETURN
19350 DRAW"NL"+N1$:RETURN
19360 DRAW"NH"+N2$:RETURN
19370 DRAW"NU"+N1$:RETURN
19380 DRAW"NE"+N2$:RETURN
19400 ON(DU+1)GOTO19410,19420,19430,19440,19450,19460,19470,19480
19410 PLAY"L10O4C":RETURN
19420 PLAY"L10O3C":RETURN
19430 PLAY"L10O3D":RETURN
19440 PLAY"L10O3E":RETURN
19450 PLAY"L10O3F":RETURN
19460 PLAY"L10O3G":RETURN
19470 PLAY"L10O3A":RETURN
19480 PLAY"L10O3B":RETURN
20000 FORDU=1TO16:JK=PEEK(&HFF00)AND1:IFJK THENPUT(232,169)-(254,190),SQ,PRESET:WAIT250:PUT(232,169)-(254,190),SQ,PSET:WAIT250:NEXT:CLS5:PMODE4,1:PCLS:PMODE4,5:PCLS:POKE113,0:EXEC46004
20010 JK=PEEK(&HFF00)AND1:IFJK=0THEN20010ELSEDU=18:NEXT:RETURN
22000 IFFO=15THENGOSUB15500
22010 BU=0:ER=0
23000 PLAY"L10O4GAFO2FO4C"
23010 DU=USR05(ER)
24000 COLOR5:LINE(2,37)-(254,45),PSET,BF
25000 COLORIN,5-IN:RETURN
30000 IFERR=160AND ERL=18000THENER=6:GOTO30050
30010 IFERR=152AND ERL=18000THENER=7:GOTO30050
30020 IFERR=148AND ERL=18000THENER=8:GOTO30050
30030 IFERR>127AND ERL=18000THENER=9:GOTO30050
30040 ER=10
30050 PMODE4,5:SCREEN1,1
30060 GOSUB23000:GOTO500
