100 DIM A(480*5): A(480*5)=0 110 CLS: R=0: C=0 120 CC=PEEK(16384+R*32+C) 130 A$=INKEY$: IF A$<>"" THEN 160 140 IF K=0 THEN POKE 16384+R*32+C,128: K=1: GOTO 130 130 POKE 16384+R*32+C,255: K=0: GOTO 130 160 POKE 16384+R*32+C,CC:A=ASC(A$) 170 IF A=94 THEN 330 180 IF A=142 THEN 400 190 IF (A<32) OR (A>127) THEN 250 200 IF A=64 THEN POKE 16384+R*32+C,96; GOTO 270 210 IF (A>31) AND (A<65) THEN A=A+64 220 POKE 16384+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 16384+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 760 450 IF A$="P" THEN 650 460 IF A$="S" THEN 560 470 IF A$<>"G" THEN 800 480 A$=INKEY$: IF A$="" THEN 480 490 PRINT @491,A$;:IF (A$<"1") OR (A$>"5") THEN 800 500 B=(VAL(A$)-1)*480 510 J=0 520 FOR I=B TO B+479 530 POKE 16384+J,A(I) 540 J=J+1: NEXT I 550 GOTO 800 560 A$=INKEY$: IF A$="" THEN 560 570 PRINT @491,A$;:IF (A$<"1") OR (A$>"5") THEN 800 580 B=(VAL(A$)-1)*480 590 J=0 600 FOR I=B TO B+479 610 A(I)=PEEK(16384+J) 620 J=J+1: NEXT I 630 A(480*5)=I-1 640 GOTO 800 650 FOR I=0 TO A(480*S) 660 IF A(I)=223 THEN LRINT: I=INT(I/32)*32+31: GOTO 690 670 B=A(I): IF B>90 THEN B=A(I)-64 680 LPRINT CHR$(B); 690 A$=INKEY$: IF A$<>"" THEN 800 700 NEXT I 710 GOTO 800 720 REM CASSETTE OUTPUT 730 CLS 740 CSAVE*A,"SCREEN" 750 A$="1": GOTO 500 760 REM CASSETTE INPUT 770 CLS 780 CLOAD*A,"SCREEN" 790 A$="1": GOTO 500 800 PRINT @480," ";:GOTO 120