0 Z$="" 200 REM "COMMUNIQUE" 300 REM WRITTEN BY ALAN GARDNER 400 REM 2-21-86 500 REM 600 REM 700 IFLF=0THENLF=1:LOAD"INPUT.BLOAD.O",8,1 900 SYS831,50759,"TEXT@50759.O" 925 SYS831,51309,"SCR/LINE.WP.O" 950 SYS831,51456,"UNPACKER" 1000 : 1100 POKE55,0:POKE56,90:CLR 1200 : 1500 Z$="":DIMT$(320),VL$(30),VL%(30),S%(10),V%(20) 1550 X=49152:F$="" 1552 IFPEEK(X)<>0THENF$=F$+CHR$(PEEK(X)):X=X+1:GOTO1552 1600 BA=52224:TE=50759:BL%=831:IN%=828:MO%=1:SW=51309:LW=51312:S%(0)=0 1700 CL%=1:RE%=0:C$="" 1800 LM%=0:RM%=39:TM%=0:BM%=23:TY%=0:FL%=0 1900 S$=" " 2000 D$="" 2050 : 2060 PRINT"[147] GOING TO THE GALLERY...":POKE53280,0 2100 : 2102 GOSUB15000 2110 OPEN8,8,8,F$:LC%=0:LL%=0:CL%=1 2120 SYSIN%,8,80:Z$=Z$+"":IFLEFT$(Z$,2)="^ "THEN2120 2130 IFLEFT$(Z$,2)="^@"THENLL%=LL%+1:VL$(LL%)=MID$(Z$,3):VL%(LL%)=LC%+1:GOTO2120 2140 IFZ$<>"[199]"ANDZ$<>"[196]"THENLC%=LC%+1:T$(LC%)=Z$:GOTO2120 2150 CLOSE8:CLOSE15:LC%=LC%-1 2152 ZZ=FRE(0):GOSUB15000:SYS51459:SYSSW,16:POKE53270,200 2200 : 2202 PF$(0)=CHR$(171):PF$(1)=CHR$(184):PF$(2)=CHR$(177):PF=0 2300 : 2400 REM 2500 GETA$:IFA$=PF$(PF)THENPF=PF+1:IFPF=3THEN60000 2510 C$=T$(CL%):IFC$=""THENT$(CL%)=" ":GOTO2900 2600 C$=LEFT$(T$(CL%),1):IFC$="'"THENCL%=CL%+1:GOTO2500 2700 IFC$="^"THENGOSUB3800:GOTO2400 2800 : 2900 REM ROUTINE TO PRINT TEXT HERE 3000 Z$=T$(CL%):SYSTE,Z$,LM%*8,(TM%+TY%)*8 3100 PRINTT$(CL%):IFHF=1THENHF=0:LM%=SS 3200 TY%=TY%+1 3300 CL%=CL%+1:GOTO2400 3400 REM ************************* 3500 END:REM * END OF BODY * 3600 REM ************************* 3700 : 3800 REM CHECK OPTIONS 3900 C$=MID$(T$(CL%),2,1) 4000 : 4500 : 4600 IFC$="G"THENGOSUB9800:GOTO5800: REM GOTO 4700 IFC$="S"THENGOSUB10900:GOTO5800: REM GOSUB 4800 IFC$="P"THENGOSUB7300:GOTO5600: REM PLOT SHP 4900 IFC$="#"THEN16000: REM MASSAGE VARIABLES 5000 IFC$="D"THEN11300: REM DISK OPTION 5100 IFC$="C"THENGOSUB6000:GOTO5600: REM CLEAR 5200 IFC$="W"THENGOSUB7000:GOTO5600: REM WIPE 5300 IFC$="X"THENIFS%(0)=0THEN14300: REM EXIT PROGRAM 5400 IFC$="X"THENCL%=S%(S%(0))+1:S%(0)=S%(0)-1:GOTO5800:REM RETURN FROM SUB 5500 IFC$="K"THEN9500: REM WAIT 5550 IFC$="I"THENGOSUB12000:GOTO5800: REM INPUT 5551 IFC$="V"THENGOSUB17000:GOTO5600: REM VTAB 5552 IFC$="H"THENGOSUB18000:GOTO5600: REM HTAB 5553 IFC$="L"THENI%=3:GOSUB8800:LM%=N%-1:GOTO5600 5554 IFC$="R"THENI%=3:GOSUB8800:RM%=N%-1:GOTO5600 5556 IFC$="T"THENI%=3:GOSUB8800:TM%=N%-1:GOTO5600 5558 IFC$="B"THENI%=3:GOSUB8800:BM%=N%-1:GOTO5600 5600 REM RETURN TO LINE 2500 5700 X=CL%:X=X+1:CL%=X 5800 RETURN 5900 : 6000 REM CLEAR CURRENT WINDOW 6100 I%=3:GOSUB8800:OP=N% 6200 IFOP=0THENX=16 6300 IFOP=1THENX=1 6400 SP$=LEFT$(S$,RM%-LM%+1) 6500 FOR T=TM% TO BM% 6600 SYS TE,SP$,LM%*8,T*8: SYS LW,BA+T*40+LM%,RM%-LM%,X 6700 NEXT T:TY%=0 6800 RETURN 6900 : 7000 REM CLEAR ENTIRE SCREEN 7100 I%=3:GOSUB8800:OP=N% 7110 IFOP=0THENSYSSW,16 7120 IFOP=1THENSYSSW,1 7130 TY%=0 7140 RETURN 7200 : 7300 REM PLOT A SHAPE 7400 I%=3:GOSUB8800:SH%=N%:SH%=SH%-1 7500 GOSUB8800:MO%=N% 7600 GOSUB8800:PX%=N% 7800 PY%=VAL(MID$(T$(CL%),I%)) 7900 : 8000 REM *** PLOT A SHAPE *** 8100 POKE249,224:POKE250,204 8150 AD%=23296:IFMO%=2THENAD%=28416 8200 POKE251,0:POKE252,AD%/256 8300 POKE253,PX%:POKE254,PY% 8400 POKE255,SH% 8500 SYS51462 8600 RETURN 8700 : 8800 REM PARSE OUT A VALUE 8900 REM I%=START POSN IN T$(CL%) 9000 REM RETURNS N% AS VALUE PARSED 9100 C%=0:E%=0:L%=LEN(T$(CL%)) 9110 IFMID$(T$(CL%),I%,1)="#"THENE%=1:I%=I%+1 9200 T$=MID$(T$(CL%),I%,1) 9210 IF(T$>="0")AND(T$<="9")THENI%=I%+1:C%=C%+1:IFI%<=L%THEN9200 9300 I%=I%-C%:N%=VAL(MID$(T$(CL%),I%,C%)) 9350 IFE%=1THENN%=V%(N%) 9375 I%=I%+C%+1:RETURN 9400 : 9500 REM WAIT FOR A KEYPRESS 9525 L$="":IFLEN(T$(CL%))<3THEN9600 9550 IFPEEK(198)<>0THENL$=MID$(T$(CL%),5):GOSUB10200:CL%=L:POKE198,0:GOTO5800 9560 GOTO5600 9600 POKE198,0:WAIT198,1:GETK$:GOTO5600 9700 : 9800 REM GOTO A LABEL 9900 L$=MID$(T$(CL%),4):L=0:GOSUB10200 10000 CL%=L:RETURN 10100 : 10200 REM FIND A LABEL IN THE TEXT 10300 FOR X=1 TO LL% 10400 IFVL$(X)=L$THENL=VL%(X):GOTO10700 10500 NEXTX:T$="UNKNOWN LABEL --- "+L$ 10600 SYSSW,16:SYSTE,T$,0,0:STOP 10700 RETURN 10800 : 10900 REM GOSUB A LABEL 11000 L$=MID$(T$(CL%),4):L=0:GOSUB10200 11050 IFS%(0)=10THENSYSSW,16:SYSTE,"STACK OVERFLOW",0,0:STOP 11100 S%(0)=S%(0)+1:S%(S%(0))=CL%:CL%=L: RETURN 11200 : 11300 REM GET SOMETHING FROM DISK 11400 IFMID$(T$(CL%),3,1)="T"THENF$=MID$(T$(CL%),5):GOTO2100 11410 : 11450 I%=5:C%=0 11460 IFMID$(T$(CL%),I%,1)<>","THENI%=I%+1:C%=C%+1:GOTO11460 11470 I%=I%-C%:F$=MID$(T$(CL%),I%,C%) 11480 MO%=VAL(MID$(T$(CL%),I%+C%+1)) 11485 AD%=23296:IFMO%=2THENAD%=28416 11490 X=AD%:SYSBL%,X,F$ 11492 POKE249,224:POKE250,204 11495 GOTO 5600 11900 : 12000 REM INPUT CERTAIN KEYS AND GOTO THE DESIGNATED LABEL 12100 T$=T$(CL%) 12200 NK=1:C=4 12300 VK$(NK)=MID$(T$,C,1) 12400 IFMID$(T$,C+1,1)=","THENNK=NK+1:C=C+2:GOTO12300 12500 REM NK=NUM OF VALID KEYS 12600 C=C+2:CH%=C 12700 FORX=1TONK-1 12800 IFMID$(T$,CH%,1)=","THEN13000 12900 CH%=CH%+1:GOTO12800 13000 LL$(X)=MID$(T$,C,CH%-C) 13100 C=CH%+1:CH%=C 13200 NEXTX:LL$(NK)=MID$(T$,CH%) 13300 REM LABELS IN% VL$(1-NK) 13400 : 13500 POKE198,0:WAIT198,1:GETK$ 13600 FORX=1TONK 13700 IFK$=VK$(X)THENL$=LL$(X):GOTO13900 13800 NEXTX:GOTO13500 13900 GOSUB10200 14000 CL%=L 14100 RETURN 14200 : 14300 SYS831,18176,"CTITLE.SHP" 14310 GOSUB15000:SYS51456:FORDL=1TO3000:NEXT 14400 SYS 51459:PRINT"[147]":POKE56,160:CLR 14500 LOAD"HELLO CONNECT",8:END 14502 END 14600 REM ***** END ***** 15000 REM 15005 REM SET PARAMETERS 15010 POKE249,224:POKE250,204 15015 POKE251,0:POKE252,71 15020 POKE253,0:POKE254,0 15025 POKE255,0 15040 RETURN 15050 : 16000 REM MASSAGE VARIABLES 16010 C$=T$(CL%) 16020 I%=3:GOSUB8800:VN%=N% 16025 OP$=MID$(C$,I%-1,1) 16030 GOSUB8800:NU%=N% 16040 L$=MID$(C$,I%) 16060 IFOP$="="THENV%(VN%)=NU%: GOTO5700 16070 IFOP$="-"THENV%(VN%)=V%(VN%)-NU%: GOTO5700 16075 IFOP$="+"THENV%(VN%)=V%(VN%)+NU%: GOTO5700 16080 IFOP$="?"THENIFV%(VN%)=NU%THEN GOSUB10200:CL%=L:GOTO5800 16490 GOTO5700 16499 : 17000 REM VTAB 17010 I%=3:GOSUB8800:TY%=N%:RETURN 17020 : 18000 REM HTAB 18010 I%=3:GOSUB8800:SS=LM%:LM%=N%:HF=1 18020 RETURN 18030 : 60000 REM TOO BAD!!! 60010 SYS831,18176,"CTITLE.SHP" 60020 GOSUB15000:SYS51456 60030 FORDL=1TO1000:NEXT:PRINT"[147]":SYS51459:POKE53280,0:POKE53281,0:RUN1100 60040 :