20 ST = 1: FOR I = 2000 TO 2039:SC(I) = PEEK(I): NEXT : VTAB 24: HTAB 14: INVERSE : PRINT " STAND BY: ";: FOR I = 0 TO 22: FOR J = V(I) TO V(I) +39:SC(J) = PEEK(J): NEXT : HTAB 24: PRINT 22 -I;" ";: NEXT : NORMAL : GOSUB 1730: RETURN
30 DIM V(23),SC(2039): PRINT "<CTRL-D>NOMONICO"
50 TEXT : HOME : POKE -16300,0: POKE -16302,0
60 PRINT "<CTRL-D>BLOAD SCR.LOGO,A$400"
70 PRINT "<CTRL-D>BLOAD SCR.HELP,A$800"
110 SC(0) = 0:J = 0:U = 160: RESTORE : FOR I = 0 TO 23: READ V(I): NEXT
120 VTAB 24: HTAB 11: PRINT "(STAND BY.)";: FOR I = 2000 TO 2039:SC(I) = 160: NEXT
190 K = PEEK(Q): IF K <SP AND (K < >138 AND K < >139 AND K < >BS AND K < >FS AND K < >CA AND K < >CZ AND K < >ES AND K < >CI AND K < >CF AND K < >CN AND K < >CM AND K < >CB AND K < >CL AND K < >CS AND K < >CX AND K < >CT) THEN 190
200 POKE QQ,0: IF NOT MF THEN 210
201 IF K = ES THEN EF = 1: GOTO 170
202 IF K = 212 OR K = 244 OR K = CT THEN POP : GOSUB 1730:MF = 0: GOTO 169
203 IF K = CM THEN RETURN
205 IF K = 139 OR K = 193 THEN K = CA
206 IF K = 138 OR K = 218 THEN K = CZ
207 IF K < >ES AND K < >BS AND K < >FS AND K < >CA AND K < >CZ THEN EF = 0
208 GOTO 420
210 IF K >159 THEN POKE P,K +32 *(UC <0 AND K >191 AND K <224) +F -64 *(K >191 AND F <0):SC(P) = PEEK(P):H = H +1:EF = 0: GOTO 510
220 IF K = ES THEN EF = 1: GOTO 170
230 IF K = CS THEN UC = UC * -1: GOTO 170
270 IF K = CB THEN K = 219: GOTO 210
290 IF K = CX THEN K = 220: GOTO 210
310 IF K = CL THEN K = 223: GOTO 210
330 IF K = CI THEN F = -128:M$ = " INVERSE ": INVERSE : GOTO 610
350 IF K = CF THEN F = -64:M$ = " FLASH ": FLASH : GOTO 610
370 IF K = CN THEN F = 0:M$ = " NORMAL ": NORMAL : GOTO 610
390 IF K = CM THEN H = 0:V = V +1
420 IF K = FS THEN H = H +1 +8 *(EF >0)
430 IF K = BS THEN H = H -1 -8 *(EF >0)
450 IF K = CA OR K = 139 THEN V = V -1 -4 *(EF >0)
470 IF K = CZ OR K = 138 THEN V = V +1 +4 *(EF >0)
490 POKE P,S:EF = 0
510 IF H >39 THEN H = 0:V = V +1
530 IF H <0 THEN H = 39: IF V <23 THEN V = V -1
550 IF V <0 THEN V = 23
570 IF V >23 THEN V = 0
590 GOTO 170
610 VTAB 24: HTAB 1: PRINT M$;: FOR I = 1 TO 300: NEXT : FOR I = 2000 TO 2008: POKE I,SC(I): NEXT : GOTO 190
630 REM <CTRL-J><CTRL-J>(^C)OMMANDS<CTRL-J>
650 POKE P,SC(P): GOSUB 1760: PRINT "COMMAND? (C/G/H/L/M/P/Q/S): (H=HELP";: POKE 2039, ASC(")") +128: HTAB 28: GET A$: IF A$ < >"C" AND A$ < >"H" AND A$ < >"G" AND A$ < >"L" AND A$ < >"M" AND A$ < >"Q" AND A$ < >"T" AND A$ < >"S" AND A$ < >"P" THEN GOSUB 1730: GOTO 169
651 PRINT A$;: POKE -16368,0: VTAB 1
670 REM <CTRL-J><CTRL-J>(T)YPE<CTRL-J>
690 IF A$ = "T" THEN GOSUB 1730: GOTO 169
710 REM <CTRL-J><CTRL-J>(G)RID<CTRL-J>
730 IF A$ < >"G" THEN 850
770 POKE -16302,0: POKE -16297,0: GOSUB 1730: VTAB 24: HTAB 9: INVERSE : PRINT " PRESS ANY KEY TO STOP. ";: FOR I = 1 TO 750: NEXT : NORMAL
790 TEXT : FOR I = 1 TO 1: NEXT : POKE -16304,0: IF PEEK( -16384) <127 THEN 790
810 POKE QQ,0: TEXT : GOSUB 1730: GOTO 169
830 REM <CTRL-J><CTRL-J>(C)LEAR LINE, SCREEN<CTRL-J>
850 IF A$ < >"C" THEN 1250
870 GOSUB 1760: PRINT "CLEAR LINE, COLUMN OR SCREEN? (L,C,S):";: GET A$: IF A$ < >"L" AND A$ < >"C" AND A$ < >"S" THEN GOSUB 1730: GOTO 169
890 REM <CTRL-J><CTRL-J>(L)INE CLEAR<CTRL-J>
910 GOSUB 1730: IF A$ < >"L" THEN 1050
930 INVERSE : FOR I = 1 TO 24: VTAB I: HTAB 1: PRINT CHR$(I +64);: NEXT : NORMAL
950 VTAB 24: HTAB 2: CALL -868: PRINT " CLEAR WHICH LINE? (A-X):";: GET A$: VTAB 1
970 GOSUB 1730: FOR I = 0 TO 23: POKE V(I),SC(V(I)): NEXT : IF (A$ <"A" OR A$ >"X") THEN GOSUB 1730: GOTO 169
990 LN = ASC(A$) -65: FOR I = V(LN) TO V(LN) +39: POKE I,U: NEXT : GOSUB 1760: PRINT "O.K.? (Y/N):";: GET A$: GOSUB 1730: IF A$ < >"Y" THEN FOR I = V(LN) TO V(LN) +39: POKE I,SC(I): NEXT : GOTO 169
1010 FOR I = V(LN) TO V(LN) +39: POKE I,U:SC(I) = U: NEXT : GOTO 169
1030 REM <CTRL-J><CTRL-J>(C)OLUMN CLEAR<CTRL-J>
1050 IF A$ < >"C" THEN 1190
1070 INVERSE : FOR I = 1 TO 40: VTAB 1: HTAB I: PRINT CHR$(48 +I): NEXT : NORMAL
1090 GOSUB 1760: PRINT "CLEAR WHICH COLUMN? (1-X):";: GET A$: VTAB 1: GOSUB 1730: FOR I = V(0) TO V(0) +39: POKE I,SC(I): NEXT : IF A$ <"1" OR A$ >"X" THEN 169
1110 LN = ASC(A$) -49: FOR I = 0 TO 23: POKE V(I) +LN,U: NEXT
1130 GOSUB 1760: PRINT "O.K.? (Y/N):";: GET A$: VTAB 1: GOSUB 1730: IF A$ < >"Y" THEN FOR I = 0 TO 23: POKE V(I) +LN,SC(V(I) +LN): NEXT : GOTO 169
1150 FOR I = 0 TO 23:SC(V(I) +LN) = U: NEXT : GOTO 169
1170 REM <CTRL-J><CTRL-J>(X) CLEAR SCREEN<CTRL-J>
1190 GOSUB 1760: PRINT "CLEAR ENTIRE SCREEN? (Y/N):";: GET A$: VTAB 1: GOSUB 1730: IF A$ < >"Y" THEN 169
1210 HOME : GOSUB 20: GOTO 169
1230 REM <CTRL-J><CTRL-J>(S)AVE SCREEN<CTRL-J>
1250 IF A$ < >"S" THEN 1350
1270 GOSUB 1760: PRINT "SAVE SCREEN TO DISK? (Y/N):";: GET A$: VTAB 1: GOSUB 1730: IF A$ < >"Y" THEN 169
1683 IF A$ = "Y" THEN FOR I = V1 TO V2 -(V2 = 23): VTAB I +1: HTAB H1 +1: PRINT SPC( H2 -H1 +1): NEXT : IF V2 = 23 THEN VTAB 24: HTAB H1 +1: PRINT SPC( H2 -H1): POKE 2039,U
1686 FOR I = 0 TO V4 -V3: FOR J = 0 TO H4 -H3: POKE V(V3 +I) +H3 +J,SC(V(V1 +I) +H1 +J): NEXT : NEXT : IF A$ < >"Y" THEN VTAB 24: HTAB 14: INVERSE : PRINT " STAND BY...";: NORMAL : FOR I = 0 TO V4 -V3: FOR J = 0 TO H4 -H3:K = V(V3 +I) +H3 +J:SC(K) = PEEK(K): NEXT : NEXT : GOSUB 1730
1695 IF A$ = "Y" THEN GOSUB 20
1700 MF = 0: GOSUB 1730: GOTO 169
1729 REM <CTRL-J><CTRL-J>GOSUBS<CTRL-J><CTRL-J>
1730 N = 2000
1750 FOR I = N TO N +39: POKE I,SC(I): NEXT : RETURN
1760 NORMAL : VTAB 24: HTAB 1: CALL -868: FOR I = 1 TO 2: FOR J = 1 TO 2:S = PEEK( -16336): NEXT : FOR J = 1 TO 99: NEXT : NEXT : POKE QQ,0: RETURN
1770 DATA 1024,1152,1280,1408,1536,1664,1792,1920,1064,1192,1320,1448,1576,1704,1832,1960,1104,1232,1360,1488,1616,1744,1872,2000
1790 REM <CTRL-J><CTRL-J>ERROR MESSAGE<CTRL-J>
1810 NORMAL : POKE -16300,0: VTAB 1: PRINT : PRINT "<CTRL-D>PR#0": IF PEEK(222) < >255 THEN GOSUB 1760: INVERSE : HTAB 4: PRINT CHR$(7);" SOMETHING IS WRONG. TRY AGAIN. "; CHR$(7);: FOR I = 1 TO 999: NEXT : NORMAL : GOSUB 1730: GOTO 145
1830 MF = 0: GOTO 650
2000 REM <CTRL-J><CTRL-J>FORMAT MOVE<CTRL-J>
2005 GOSUB 1760: PRINT "FLUSH LEFT, RIGHT OR CENTERED? (L/R/C):";: GET A$: IF A$ < >"L" AND A$ < >"R" AND A$ < >"C" THEN GOSUB 1730:MF = 0: GOTO 169
2006 GOSUB 1760: PRINT "ALL LINES OR ONE AT A TIME? (A/O):";: GET Q$: GOSUB 1730: IF Q$ < >"A" AND Q$ < >"O" THEN GOSUB 1730:MF = 0: GOTO 169
2010 IF Q$ = "O" THEN GOSUB 1760: PRINT "PUT CURSOR ON LINE & <RETURN> (T=TYPE";: POKE 2039, ASC(")") +128: FLASH : HTAB 30: PRINT " ";: NORMAL : GOSUB 170
2030 IF Q$ = "O" THEN J = V(V):LN = V
2032 IF Q$ = "A" THEN FOR LN = 0 TO 23:J = V(LN): POKE J,62: POKE J +39,60
2035 FOR I = 0 TO 39: IF SC(J +I) = U THEN NEXT : GOTO 2102
2040 S1 = I -1: FOR I = 39 TO 1 STEP -1: IF SC(J +I) = U THEN NEXT
2050 S2 = I +1:S3 = S2 -S1 -1: IF S3 = 40 OR S3 <0 THEN 2102