10 POKE&HFF94,5:POKE&HFFD8,0:POKE&H404,32:POKE&H406,32:POKE&HE6C6,33 20 K=USR4(15) 30 CLEAR 1000:POKE &HFFD9,0:W=1 40 FORX=0TO4:READB:POKE&HF80B+X,B:POKE&HF84B+X,B:POKE&HF898+X,B:NEXTX:DATA &HE6,&H01,&H12,&HCA,&H00 50 ON BRK GOTO 240:ON ERR GOTO 1230 60 'FORX=0TO15:PALETTEX,0:NEXTX 70 FORX=0 TO 7:READ Y:PALETTEX,Y:PALETTEX+8,Y:NEXTX 80 DATA 0,7,56,63,1,9,36,54 90 IF PEEK(&HE000)=1 THEN CLS1 100 ATTR3,0:CB$= " File Edit Run Special" 110 PM$(0)="File":PM$(1)="Edit":PM$(2)="Run":PM$(3)="Special" 120 PL(0)=1:PL(1)=15:PL(2)=32:PL(3)=49 130 ATTR 3,0 140 FORM=0 TO 3:L=0 150 READ FL$(M,L),CA(M,L) 160 IF FL$(M,L)="@" THEN T(M)=L-1:GOTO 180 170 L=L+1:GOTO 150 180 NEXT M 190 DATA " Load A Program ",0," Save A Program ",0," Kill A Program ",0," Clear Memory ",0,@,0 200 DATA " Delete ",0," Insert ",0," Enter ",0," Cut ",1," Paste ",1,@,0 210 DATA " Single ",0," Loop ",0," Debug ",0,@,0 220 DATA " Manual Robot Control ",0," Print the program ",1,@,0 230 POKE &HE000,1 240 POKE&HFFD9,0:POKE&HF7C5,&H0D:LOCATE 0,0:ATTR3,0:PRINTCB$ 250 POKE&HFF50,0:ATTR 0,7:PRINT:ATTR 0,1:PRINT:ATTR 7,6:FH$="Step # Command Output Input Delay":PRINTFH$ 260 ATTR 2,4:FORX=1TO7:PRINT:NEXTX:ATTR 3,5:PRINT:ATTR2,4:FORX=1TO7:PRINT:NEXTX:K=USR1(W) 270 ATTR 3,1:PRINT:PRINT 280 A$=INKEY$:U=PEEK(341):D=PEEK(342) 290 IF A$="g" OR A$=CHR$(4) THEN 360 300 IF U=247 THEN W=W-1:IF W=0 THEN K=USR4(50):W=1 310 IF D=247 THEN W=W+1:IF LPEEK(&H6DFFC+(W*4))=0 THEN K=USR4(50):W=W-1 320 IF D=247 OR U=247 THEN K=USR1(W) 330 IFA$=CHR$(189)THENPOKE&HFFD8,0:STOP 340 IF A$=CHR$(12) THEN GOSUB 1470 350 GOTO 280 360 REM SELECT PULL DOWN MENU 370 ATTR3,0:LOCATE0,0:PRINTCB$;:LOCATE PL(A),0:ATTR 3,6:PRINTPM$(A); 380 A$=INKEY$:IF A$="" THEN 380 390 IF A$="g" THEN A=A-1:A=A AND 3:GOTO 370 400 IF A$=CHR$(4) THEN A=A+1:A=A AND 3:GOTO 370 410 IF A$=CHR$(13) THEN ON A+1 GOSUB 600,650,700,750:GOTO 430 420 GOTO 380 430 ' NOW CHOOSE THE OPTION IN THAT MENU 440 O=0:A$="":GOTO 460 450 A$=INKEY$:IFA$="" THEN 450 460 FORX=0TOT(A):LOCATE PL(A)-1,2+X:ATTR0,7:PRINT" ";:ATTR 2*CA(A,X),3:PRINTFL$(A,X);:ATTR0,7:NEXTX 470 LOCATE 79,23 480 IF A$="^" THEN O=O-1:IF O=-1 THEN O=0 490 IF A$=CHR$(10) THEN O=O+1:IF FL$(A,O)="@" THEN O=O-1 500 IF A$=CHR$(13) AND CA(A,O)=0 THEN 530 510 IF CA(A,O)=1 THEN ATTR 2,3:LOCATE PL(A),2+O:PRINTFL$(A,O);:ATTR0,7:GOTO 450 520 ATTR 3,0:LOCATE PL(A),2+O:PRINTFL$(A,O);:ATTR 0,7:LOCATE PL(A)-1,1:GOTO 450 530 FORX=0TO7:LOCATE PL(A),2+O:ATTR0,3:PRINTFL$(A,O);:ATTR0,7:LOCATE PL(A),2+O:GOSUB 800:ATTR3,0:PRINTFL$(A,O);:ATTR0,7:LOCATE PL(A),2:GOSUB 800:NEXTX 540 ON A+1 GOTO 550,560,570,580 550 ON O+1 GOTO 810,1020,1120,1170 560 ON O+1 GOTO 1370,1390,1430,5000,6000 570 ON O+1 GOTO 1750,1850,4000 580 ' ON O+1 GOTO 590 FORCED SYNTAX ERROR 600 REM FILE WINDOW 610 LOCATE1,0:ATTR0,3:PRINT"File";:FORX=0 TO T(0):LOCATE 0,2+X 620 ATTR 0,7:PRINT" ";:ATTR 2*CA(0,X),3:PRINTFL$(0,X);:ATTR 0,7 630 NEXT X:LOCATE0,2+X:PRINTSTRING$(LEN(FL$(0,0))+1,32); 640 RETURN 650 REM EDIT WINDOW 660 LOCATE 15,0:ATTR0,3:PRINT"Edit";:FORX=0 TO T(1):LOCATE 14,2+X 670 ATTR 0,7:PRINT" ";:ATTR 2*CA(1,X),3:PRINTFL$(1,X);:ATTR0,7 680 NEXT X:LOCATE 14,2+X:PRINTSTRING$(LEN(FL$(1,0))+1,32); 690 RETURN 700 REM RUN WINDOW 710 LOCATE 32,0:ATTR 0,3:PRINT"Run";:FORX=0 TO T(2):LOCATE 31,2+X 720 ATTR 0,7:PRINT" ";:ATTR 2*CA(2,X),3:PRINTFL$(2,X);:ATTR0,7 730 NEXT X:LOCATE 31,2+X:PRINTSTRING$(LEN(FL$(2,0))+1,32); 740 RETURN 750 REM SPECIAL MENU 760 LOCATE 49,0:ATTR0,3:PRINT"Special";:FORX=0 TO T(3):LOCATE 48,2+X 770 ATTR 0,7:PRINT" ";:ATTR 2*CA(3,X),3:PRINTFL$(3,X);:ATTR0,7 780 NEXT X:LOCATE 48,2+X:PRINTSTRING$(LEN(FL$(3,0))+1,32); 790 RETURN 800 FORQQ=1TO20:NEXTQQ:RETURN 810 ' EDIT, LOAD PROGRAM 820 POKE&HFFD9,0:POKE&HF7C5,0:POKE &H400,19:POKE &H401,5:POKE &H402,42:POKE &H403,13:POKE &H405,6:POKE &H407,5:A=USR6(0) 830 LOCATE 19,16:ATTR 6,6:PRINTSTRING$(42,32); 840 LOCATE 31,5:ATTR 3,6:PRINT"Programs on disk:";:LOCATE 20,6:ATTR 3,4:C=0:R=0 850 FORX=3 TO 18:POKE&HFFD8,0:DSKI$ 0,17,X,D1$,D2$:POKE&HFFD9,0 860 S$=D1$:GOSUB 960:IF ES THEN X=18:GOTO 880 870 S$=D2$:GOSUB 960:IF ES THEN X=18:GOTO 880 880 NEXTX 890 IF KL=1 THEN KL=0:RETURN 900 LOCATE 30,16:ATTR 3,6:PRINT"Enter file to load:";:LOCATE 36,17:ATTR6,4:INPUT F$ 910 LOCATE 35,15:ATTR 0,2:PRINTSTRING$(10,32);:LOCATE 35,16:PRINT" ";:ATTR 3,0:PRINT" Loading ";:ATTR0,2:LOCATE 35,17:PRINTSTRING$(10,32); 920 W=1:S=0:OPEN"I",#1,F$+"/PGM":A=USR5(0):POKE &HFFD8,0 930 IF EOF(1) THEN CLOSE:GOTO 240 ELSE INPUT #1,C$ 940 LPOKE &H6E000+S,VAL(C$) 950 S=S+1:GOTO 930 960 ES=0:FOR B=0 TO 3:B$=MID$(S$,(B*32)+1,11):IF MID$(B$,1,1)=CHR$(255) THEN ES=-1:RETURN 970 IF MID$(B$,1,1)=CHR$(0) THEN 1000 980 IF MID$(B$,9,3)<>"PGM" THEN 1000 990 LOCATE 21+C*10,R+6:PRINTMID$(B$,1,8);:C=C+1:IF C=4 THEN C=0:R=R+1 1000 NEXT B 1010 RETURN 1020 ' SAVE A PROGRAM 1030 POKE &H400,29:POKE &H401,10:POKE &H402,22:POKE &403,5:POKE&H405,6:POKE&H407,1:A=USR6(0):LOCATE 31,11:ATTR3,1:PRINT" Save A Program ";:LOCATE 30,13:ATTR 7,1:PRINT" Program name?"; 1040 POKE&HF7C5,0:LOCATE 34,14:ATTR3,4:INPUTF$ 1050 POKE&HFFD8,0:OPEN"O",#1,F$+"/PGM":S=0 1060 POKE&HFFD9,0:C$="&H"+HEX$(LPEEK(&H6E000+(S*4))):O$="&H"+HEX$(LPEEK(&H6E001+(S*4))) 1070 I$="&H"+HEX$(LPEEK(&H6E002+(S*4))):D$="&H"+HEX$(LPEEK(&H6E003+(S*4))) 1080 POKE&HFFD8,0 1090 WRITE #1,C$,O$,I$,D$ 1100 S=S+1:IF C$<>"&H0" THEN GOTO 1060 1110 CLOSE:K=USR4(0):GOTO 240 1120 ' KILL A PROGRAM 1130 KL=1:GOSUB 810 1140 LOCATE 30,16:ATTR 3,6:PRINT"Enter file to KILL";:LOCATE 36,17:ATTR6,4:INPUT F$ 1150 POKE&HFFD8,0:KILL F$+"/PGM":POKE&HFFD9,0 1160 GOTO 240 1170 ' ERASE MEMORY 1180 LOCATE 25,15:ATTR 2,2:PRINTSTRING$(15,32);:LOCATE 25,16:PRINT" ";:ATTR 3,0:PRINT"Are you sure ?";:ATTR 2,2:LOCATE 25,17:PRINTSTRING$(15,32);:LOCATE 25,17 1190 K=USR4(210) 1200 A$=INKEY$:IF A$="" THEN 1200:IF A$<>"Y" THEN 240 1210 A=USR5(0) 1220 GOTO 240 1230 ' ERROR HANDLER 1240 LOCATE 25,10 1250 POKE&HFFD9,0:POKE &H400,25:POKE &H401,10:POKE &H402,29:POKE &H403,4:POKE &H405,3:POKE &H407,0:A=USR6(0) 1260 POKE&HFFD8,0:FORQQ=1TO7:K=USR4(30):NEXTQQ 1270 K=ERNO:Q=ERLIN 1280 IF K=20 THEN ATTR 0,3:LOCATE 32,11:ATTR2,0,B:PRINT"Disk I/O Error!";:ATTR 3,0:GOTO 1350 1290 IF K=26 THEN ATTR 0,3:LOCATE 30,11:ATTR2,0,B:PRINT"No such file on disk.";:ATTR3,0:GOTO 1350 1300 IF K=28 THEN ATTR 0,3:LOCATE 33,11:ATTR2,0,B:PRINT"Disk is full.";:ATTR3,0:GOTO 1350 1310 IF K=30 THEN ATTR 0,3:LOCATE 29,11:ATTR2,0,B:PRINT"Disk is write locked.";:ATTR3,0:GOTO 1350 1320 IF K=31 THEN ATTR 0,3:LOCATE 31,11:ATTR2,0,B:PRINT"Illegal filename.";:LOCATE 28,12:ATTR2,0:PRINT"Check manual for details";:ATTR3,0:GOTO 1350 1330 ATTR 0,3:LOCATE 26,11:ATTR 3,0:PRINT"A ";:ATTR 3,0,U:PRINT"system error";:ATTR 3,0:PRINT" has occurred"; 1340 LOCATE 26,12:PRINT"Error # ";:ATTR 7,0:PRINTK;:ATTR 3,0:LOCATE 40,12:PRINT"Line #";:ATTR 7,0:PRINTQ;:ATTR 3,0 1350 LOCATE 30,13:PRINT"Press ";:ATTR 3,6:PRINT"BREAK";:ATTR 3,0:PRINT" to resume"; 1360 GOTO 1360 1370 ' DELETE A STEP 1380 K=USR2(W-1):K=USR4(20):K=USR1(W):GOTO 240 1390 ' INSERT A STEP 1400 LOCATE0,1:ATTR0,7:PRINT:ATTR0,1:PRINT:ATTR 7,6:PRINTFH$ 1410 K=USR3(W-1):K=USR1(W):K=USR4(50):GOSUB1470 1420 GOTO 240 1430 ' ENTER A PROGRAM 1440 LOCATE0,1:ATTR0,7:PRINT:ATTR0,1:PRINT:ATTR 7,6:PRINTFH$ 1450 LOCATE 20,20:ATTR 7,1:PRINT"Program Entry Mode";:LOCATE79,23 1460 GOSUB 1470:W=W+1:A=USR1(W):GOTO 1460 1470 ' INPUT A FUNCTION 1480 ML=&H6E000+(W-1)*4 1490 LPOKE ML,0:LPOKE ML+1,0:LPOKE ML+2,0:LPOKE ML+3,0:A=USR1(W) 1500 LOCATE10,11:ATTR 6,5,B:PRINT" ?"; 1510 A$=INKEY$:IF A$="" THEN 1510 1520 IF A$="M" THEN F=1:GOTO 1560 1530 IF A$="W" THEN F=2:GOTO 1560 1540 IF A$="D" THEN F=3:GOTO 1560 1550 GOTO 1510 1560 LPOKE ML,F:LOCATE 36,11:K=USR1(W):K=USR4(4) 1570 IF F=3 THEN 1690 1580 ' OUTPUT 1590 LOCATE23,11:ATTR 6,5,B:PRINT"?";:ATTR 3,5:POKE &HF7C5,0:LINEINPUT O$:POKE &HF7C5,13:LOCATE 0,11:PRINT 1600 IF O$="" THEN 1590 1610 O=VAL("&H"+O$) 1620 LPOKE ML+1,O:LOCATE 75,11:K=USR1(W) 1630 IF F<>2 THEN 1690 1640 ATTR 6,4,B:LOCATE 36,11:PRINT"?"; 1650 ' INPUT 1660 A$=INKEY$:IF A$="" THEN 1660 1670 O=VAL(A$):IF O<1 OR O>4 THEN 1660 1680 LPOKE ML+2,O:LOCATE 75,11:K=USR1(W):K=USR4(4):RETURN 1690 ' TIME 1700 LOCATE47,11:ATTR 6,5,B:PRINT"?";:ATTR 3,5:POKE&HF7C5,0:LINEINPUT O$:POKE&HF7C5,13:LOCATE0,11:PRINT 1710 IF O$="" THEN 1590 1720 O=VAL(O$):IF O>99 OR O<1 THEN K=USR4(100):GOTO 1700 1730 LPOKE ML+3,O:LOCATE 75,11:K=USR1(W) 1740 RETURN 1750 ' RUN, SINGLE 1760 LS=0 1770 ON BRK GOTO 1840 1780 FORX=0 TO 15:POKE &H520+X,PEEK(&HFFB0+X):POKE &HFFB0+X,PEEK(&H500+X):NEXTX 1790 HSCREEN2:POKE &H20F,LS 1800 IF LS=0 THEN K=USR0(0):GOTO 1840 1810 POKE &H212,&HFF 1820 K=USR0(0) 1830 IF PEEK(&H212)=&H00 THEN 1820 1840 FORX=0 TO 15:POKE &HFFB0+X,PEEK(&H520+X):NEXTX:ON BRK GOTO 240:HSCREEN0:GOTO 240 1850 ' RUN,LOOP 1860 LS=1:GOTO 1770