140 DIM I(7),FN$(14),N$(3)›150 IF PEEK(1536)<>72 THEN GOSUB 1400›160 GRAPHICS 0:POKE 752,1›170 SETCOLOR 2,7,2:SETCOLOR 4,7,2›180 DL=PEEK(560)+256*PEEK(561)+4›190 SD=PEEK(88)+256*PEEK(89)+13*40:ASD=SD+5*40›200 A1=1630:FUNC=1631:A2=1632:LOGIC=1628›210 RAM=PEEK(106)-8:PMBASE=RAM*256›220 CHRORG=57344›230 POKE 559,46:POKE 54279,RAM›240 POKE 53277,3:POKE 53256,3›250 CHSET=(RAM-8)*256›260 POKE DL+23,6:POKE DL+24,7›270 POKE DL+18,130›280 POKE 512,0:POKE 513,6›290 POKE 54286,192›300 POKE 1549,RAM-8:POKE 1538,0›310 A=USR(1555,CHSET)›320 P0=PMBASE+512+20:P1=PMBASE+640+20:P2=PMBASE+768+20:P=PMBASE+896+20:T=85›325 FOR I=0 TO 128:POKE P0+I,0:POKE P1+I,0:POKE P2+I,0:NEXT I›330 FOR I=0 TO 7:FOR J=0 TO 3:T=255-T:POKE P0+I*4+J,0:POKE P1+I*4+J,T:T=255-T›340 POKE P2+I*4+J,T:NEXT J:T=255-T:NEXT I›350 POKE 53248,64:POKE 53249,64:POKE 53250,64›360 POKE 704,198:POKE 705,240:POKE 706,68›370 POKE 53256,3:POKE 53257,3:POKE 53258,3:POKE 623,1›380 ? " ":FOR I=1 TO 8:? " | |":NEXT I:? " "›390 POKE 82,14:POSITION 14,1›400 ? "Å Edit Ò Restore"›410 ? "Æ Copy From Ø Switch"›420 ? "Ô Copy To à Clear"›430 ? "Ï Overlay É Invert"›440 ? "Ó Save Font Ì Load Font"›450 ? "œ Delete  Insert"›460 ? "ž Scroll Left Ÿ ScrollRight"›465 ? "Ð Print Char."›470 ? "× Write Data Ñuit"›480 ? "†ü‡ Reverse Ç Graphics"›490 FOR I=0 TO 3:FOR J=0 TO 31:Z1=J+I*40+4:Z2=I*32+J:POKE SD+Z1,Z2:POKE ASD+Z1,Z2:NEXT J:NEXT I›500 POKE 82,2:POSITION 0,0›510 OPEN #2,4,0,"K:"›520 P=PEEK(764):IF P=255 THEN 520›530 IF P=60 THEN 520›540 IF P=39 THEN POKE 764,168›550 GET #2,K›560 IF K<>ASC("E") THEN 790›570 GOSUB 1750›580 FOR I=0 TO 7:A=PEEK(CHSET+C*8+I):FOR J=0 TO 3:POKE P0+I*4+J,A:NEXT J:NEXT I›590 POKE ASD+169,C:POKE ASD+190,C›600 JX=0:JY=0›610 POSITION JX+4,JY+1›620 ? CHR$(32+128*FF);"";:FF=1-FF›630 IF STRIG(0)=0 THEN 750›640 IF PEEK(764)<255 THEN ? " ";:GOTO 520›650 ST=STICK(0):IF ST=15 THEN 620›660 IF STRIG(0) THEN FOR I=0 TO 100 STEP 20:SOUND 0,100-I,10,8:NEXT I›670 POSITION JX+4,JY+1:? " "›680 JX=JX+(ST=7)-(ST=11)›690 JY=JY+(ST=13)-(ST=14)›700 IF JX<0 THEN JX=7›710 IF JX>7 THEN JX=0›720 IF JY<0 THEN JY=7›730 IF JY>7 THEN JY=0›740 GOTO 610›750 POKE A1,PEEK(CHSET+C*8+JY):POKE A2,2^(7-JX):POKE FUNC,73:A=USR(LOGIC)›760 POKE CHSET+C*8+JY,A:FOR J=0 TO 3:POKE P0+JY*4+J,A:NEXT J›770 FOR I=1 TO 10:SOUND 0,I*4,8,8:NEXT I:SOUND 0,0,0,0›780 GOTO 650›790 IF K<>ASC("F") THEN 830›800 S=C:GOSUB 1750›810 FOR I=0 TO 7:A=PEEK(CHSET+C*8+I):POKE CHSET+S*8+I,A:NEXT I›820 C=S:GOTO 580›830 IF K<>ASC("T") THEN 870›840 S=C:GOSUB 1750›850 FOR I=0 TO 7:A=PEEK(CHSET+S*8+I):POKE CHSET+C*8+I,A:NEXT I›860 C=S:GOTO 600›870 IF K<>ASC("O") THEN 920›880 S=C:GOSUB 1750›890 FOR I=0 TO 7:POKE A1,PEEK(CHSET+C*8+I):POKE A2,PEEK(CHSET+S*8+I):POKE FUNC,9:A=USR(LOGIC)›900 POKE CHSET+S*8+I,A:NEXT I›910 C=S:GOTO 580›920 IF K<>ASC("R") THEN 940›930 FOR I=0 TO 7:POKE CHSET+C*8+I,PEEK(CHRORG+C*8+I):NEXT I:GOTO 580›940 IF K<>ASC("C") THEN 960›950 FOR I=0 TO 7:POKE CHSET+C*8+I,0:NEXT I:GOTO 580›960 IF K<>ASC("") THEN 980›970 FOR I=0 TO 7:POKE CHSET+C*8+I,255-PEEK(CHSET+C*8+I):NEXT I:GOTO 580›980 IF K<>ASC("X") THEN 1010›990 S=C:GOSUB 1750›1000 FOR I=0 TO 7:A=PEEK(CHSET+S*8+I):POKE CHSET+S*8+I,PEEK(CHSET+C*8+I):POKE CHSET+C*8+I,A:NEXT I:GOTO 580›1010 IF K<>ASC("I") THEN 1030›1020 FOR I=0 TO 7:I(I)=PEEK(CHSET+C*8+I):NEXT I:FOR I=0 TO 7:POKE CHSET+C*8+I,I(7-I):NEXT I:GOTO 580›1030 IF K<>ASC("") AND K<>ASC("œ") THEN 1050›1040 FOR I=JY TO 6:POKE CHSET+C*8+I,PEEK(CHSET+C*8+I+1):NEXT I:POKE CHSET+C*8+7,0:GOTO 580›1050 IF K<>ASC("") AND K<>ASC("") THEN 1070›1060 FOR I=7 TO JY STEP -1:POKE CHSET+C*8+I,PEEK(CHSET+C*8+I-1):NEXT I:POKE CHSET+C*8+JY,0:GOTO 580›1070 IF K<>ASC("") THEN 1100›1080 FOR I=0 TO 7:A=PEEK(CHSET+C*8+I)*2:IF A>255 THEN A=A-256›1090 POKE CHSET+C*8+I,A:NEXT I:GOTO 580›1100 IF K<>ASC("") THEN 1130›1110 FOR I=0 TO 7:A=INT(PEEK(CHSET+C*8+I)/2)›1120 POKE CHSET+C*8+I,A:NEXT I:GOTO 580›1130 IF K<>ASC("Q") THEN 1150›1140 POKE 53248,0:POKE 53249,0:POKE 53250,0:POKE 53277,0:GRAPHICS 0:END ›1150 IF K<>ASC("S") THEN 1210›1160 GOSUB 1610:POKE 195,0›1170 TRAP 1190:OPEN #1,8,0,FN$›1180 A=USR(1589,CHSET)›1190 CLOSE #1:TRAP 40000:IF PEEK(195) THEN 1260›1200 POKE 54286,192:GOTO 580›1210 IF K<>ASC("L") THEN 1290›1220 GOSUB 1610:POKE 195,0›1230 TRAP 1250:OPEN #1,4,0,FN$›1240 A=USR(1619,CHSET)›1250 CLOSE #1:TRAP 40000:IF PEEK(195)=(0) THEN 1200›1260 POSITION 14,0:? "ý* ERROR -";PEEK(195);" *":CLOSE #1›1270 IF PEEK(764)<255 THEN POSITION 14,0:? " ":GOTO 1200›1280 GOTO 1270›1290 IF K<>ASC("W") THEN 1370›1300 POSITION 2,10:N$=" ":L=LEN(STR$(C)):N$(1,L)=STR$(C):L=LEN(N$)›1310 FOR I=1 TO L:? CHR$(ASC(N$(I,I))+128);:NEXT I:? ">";›1320 FOR I=0 TO 2:FOR J=0 TO 1+(I>0):A=PEEK(CHSET+C*8+J+I*3)›1330 SOUND 0,(I*3+J)*10+50,10,8›1340 PRINT A;",";:NEXT L:? "~":NEXT I:SOUND 0,0,0,0›1350 IF PEEK(764)=255 THEN 1350›1360 POSITION 2,10:FOR I=1 TO 3:? " ":NEXT I:GOTO 520›1370 IF K<>ASC("G") THEN 1395›1380 CF=1-CF:POKE 1549,RAM-8+2*CF›1390 GOTO 520›1395 IF K<>ASC("P") THEN 520›1397 GOTO 5000›1400 GRAPHICS 2+16:SETCOLOR 4,1,6:POSITION 5,3:? #6;"SUPERÆÏÎÔ"›1410 POSITION 4,5:? #6;"patience":POSITION 2,7:? #6;"ãèáòìåó âòáîîïî"›1420 FOR I=1536 TO 1639:READ A:POKE I,A:POKE 709,A:SOUND 0,A,10,4:NEXT I›1430 SOUND 0,0,0,0:RETURN ›1440 DATA 72,169,100,141,10,210›1450 DATA 141,24,208,141,26,208›1460 DATA 169,6,141,9,212,104›1470 DATA 64,104,104,133,204,104›1480 DATA 133,203,169,0,133,205›1490 DATA 169,224,133,206,162,4›1500 DATA 160,0,177,205,145,203›1510 DATA 200,208,249,230,204,230›1520 DATA 206,202,208,240,96,104›1530 DATA 162,16,169,9,157,66›1540 DATA 3,104,157,69,3,104›1550 DATA 157,68,3,169,0,157›1560 DATA 72,3,169,4,157,73›1570 DATA 3,32,86,228,96,104›1580 DATA 162,16,169,5,76,58›1590 DATA 6,9,104,169,0,9,0,133›1600 DATA 212,169,0,133,213,96›1610 POSITION 14,0:? "Filename?";›1620 FN$="":K=0›1630 POKE 20,0›1640 IF PEEK(764)<255 AND PEEK(764)<>39 AND PEEK(764)<>60 THEN 1670›1650 IF PEEK(20)<10 THEN 1640›1660 ? CHR$(21+11*K);"LEFT";:K=1-K:GOTO 1630›1670 GET #2,A›1680 IF A=155 THEN ? " ";:FOR I=1 TO LEN(FN$)+10:? "~";:NEXT I:RETURN ›1690 IF A=126 AND LEN(FN$)>1 THEN FN$=FN$(1,LEN(FN$)-1):? " ";CHR$(A);:GOTO 1630›1695 IF A=126 AND LEN(FN$)=1 THEN ? CHR$(A);:GOTO 1620›1700 IF A=58 OR (A>=48 AND A<=57) OR (A>=65 AND A<=90) OR A=46 THEN 1720›1710 GOTO 1630›1720 IF LEN(FN$)<14 THEN FN$(LEN(FN$)+1)=CHR$(A):? CHR$(A);›1730 GOTO 1630›1740 END ›1750 REM GET CHOICE OF CHARACTER›1760 CY=INT(MRY/32):CX=MRY-32*CY›1770 C=CX+CY*32›1780 POKE SD+CX+CY*40+4,C+128›1790 POKE ASD+CX+CY*40+4,C+128›1800 IF STRIG(0)=0 OR PEEK(764)<255 THEN MRY=C:GOTO 1900›1810 ST=STICK(0):IF ST=15 THEN 1800›1820 POKE 53279,0›1830 GOSUB 1900›1840 CX=CX-(ST=11)+(ST=7):CY=CY-(ST=14)+(ST=13)›1850 IF CX<0 THEN CX=31:CY=CY-1›1860 IF CX>31 THEN CX=0:CY=CY+1›1870 IF CY<0 THEN CY=3›1880 IF CY>3 THEN CY=0›1890 GOTO 1770›1900 POKE SD+CX+CY*40+4,C›1910 POKE ASD+CX+CY*40+4,C›1920 RETURN ›5000 REM PRINT DATA›5015 TRAP 1260:OPEN #1,8,0,"P:":PRINT #1;" ---(";C;")-----"›5020 FOR I=0 TO 7:PRINT #1;" ";›5030 A=PEEK(CHSET+C*8+I)›5040 P=128:D=A›5050 FOR J=1 TO 8›5060 IF INT(D/P)=1 THEN PUT #1,88:D=D-P:GOTO 5080›5070 PUT #1,32›5080 P=P/2:NEXT J:PRINT #1;" ";A›5090 NEXT I:PRINT #1;" ---------"›5100 CLOSE #1:POKE 54286,192:TRAP 40000:GOTO 520›