100 DIM A(480*S): A(480*S)=0 110 CLS: R=0: C=0 120 CC=PEEK(1024+K*32+C) 130 A$INKEY$: IF A$<>" THEN 160 140 IF K=0 THEN POKE 1024+R*32+C,128: K=1: GOTO 130 130 POKE 1024+R*32+C,255: K=0: GOTO 130 160 POKE 1024+R*32+C,CC:A=ASC(A$): 170 IF A=94 THEN 330 180 IF A=95 THEN 400 190 IF (A<32) OR (A>127) THEN 250 200 IF A=64 THEN POKE 1024+R*32+C,96; GOTO 270 210 IF (A>31) AND (A<65) THEN A=A+64 220 POKE 1024+R*32+C,A 230 C=C+1: IF C=32 THEN C=0: R=R+1: IF R=15 THEN R=0 240 GOTO 120 250 IF (A<8) OR (A>13) THEN 120 260 ON A-7 GOTO 270,290,310,120,120,350 270 C=C-1: IF C=-1 THEN C=31: R=R-1: IF R=-1 THEN R=14 280 GOTO 120 290 C=C+1: IF C=32 THEN C=0: R=R+1: IF R=15 THEN R=0 300 GOTO 120 310 R=R+1: IF R=15 THEN R=0 320 GOTO 120 330 R=R-1: IF R=-1 THEN R=14 340 GOTO 120 350 FOR J=1 TO 32-C 360 POKE 1024+R*32+C,223 370 C=C+1: NEXT J 380 R=R+1: C=0: IF R=15 THEN R=0 390 GOTO 120 400 PRINT@48O,"FUNCTION?"; 410 A$=INKEY$: IF A$="" THEN 410 420 PRINT @490,A$; 430 IF A$="W" THEN 720 440 IF A$="L" THEN 810 450 IF A$="P" THEN 650 460 IF A$="S" THEN 560 470 IF A$<>"G" THEN 900 480 A$=INKEY$: IF A$="" THEN 480 490 PRINT @491,A$;:IF (A$<"1") OR (A$>"5") THEN 900 500 B=(VAL(A$)-1)*480 510 J=0 520 FOR I=B TO B+479 530 POKE 1024+J,A(I) 540 J=J+1: NEXT I 550 GOTO 900 560 A$=INKEY$: IF A$="" THEN 560 570 PRINT @491,A$;:IF (A$<"L") OR (A$>"5") THEN 900 580 B=(VAL(A$)-1)*480 590 J=0 600 FOR I=B TO B+479 610 A(I)=PEEK(1O24+J) 620 J=J+1: NEXT I 630 A(480*5)=I-1 640 GOTO 900 650 FOR I=0 TO A(480*S) 660 IF A(I)=223 THEN PRINT#-2: I=INT(I/32)*32+31: GOTO 690 670 B=A(I): IF B>90 THEN B=A(I)-64 680 PRINT#-2,CHR$(B); 690 A$=INKEY$: IF A$<>"" THEN 900 700 NEXT I 710 GOTO 900 720 REM CASSETTE OUTPUT 730 CLS 740 OPEN "O",-1,"SCREEN" 750 FOR I=0 TO 480*5 760 PRINT#-1,A(I) 770 PRINT"."; 780 NEXT I 790 CLOSE-1 800 A$="1": GOTO 500 810 REM CASSETTE INPUT 820 CLS 830 OPEN "I",-1,"SCREEN" 840 FOR I=0 TO 480*5 850 INPUT#-1,A(I) 860 PRINT"."; 870 NEXT I 880 CLOSE-1 890 A$="1": GOTO 500 900 PRINT @48O," ";:GOTO 120