1 !! EDIT VERSION A3 FOR RSTS V04A-12 !! !! BY ADRI HEMELAAR !! !! COMPUTER DEPARTMENT PRINS MAURITS LABORATORIES !! 2 !! LANGE KLEIWEG 137-139, RIJSWIJK 2100, THE NETHERLANDS !! !! UPDATED 21-Aug-73 03:49 PM !! 100 K0%=0% : K1%=1% : K2%=2% : K3%=3% : I7%,K6%=6% : K7%=7% : K9%=512% : L0$="" : L9$="KB:" : L6$="EDIT" : OPEN L9$ FOR INPUT AS FILE K1% !CONSTANTS 200 PRINT L6$; " V-A3" : I8%=9% : GOSUB 20000 : K7$,L6$=L6$+RIGHT(NUM$(100%+ASCII(K0$)/K2%),K3%)+".TM" : K5$=L6$+CHR$(49%) : L2$=L6$+CHR$(50%) !NAMES OF TEMP. FILES 1000 GOSUB 20500 : I%=INSTR(K1%,L5$,CHR$(60%)) : GOTO 2000 IF I% : K3$,K4$=L5$ : GOTO 3000 !FILE SPECIFICATION 2000 K3$=LEFT(L5$,I%-K1%) : K4$=RIGHT(L5$,I%+K1%) 3000 GOTO 3100 IF LEN(K3$)>K0% AND LEN(K4$)>K0% : I9%=109% : GOSUB 21200 : GOTO 1000 !ILLEGAL FILE SPEC. 3100 ON ERROR GOTO 10300 : OPEN K4$ FOR INPUT AS FILE K3% : OPEN K5$ AS FILE 4%, CLUSTERSIZE 8% : DIM #4%, L$(512%)=128% : L$(127%)=L9$ : ON ERROR GOTO 10200 : L3%,L5%=K0% 3200 L3%=L3%+K1% : INPUT LINE #K3%, L6$ : GOSUB 20600 : L$(L3%)=L6$ : GOTO 3200 3300 L$(L3%),K6$=L0$ : CLOSE K3% : OPEN L2$ AS FILE K2% : DIM #2%, L1$(256%)=128% : I8%=-K7% : I1%,I9%=K0% : GOSUB 20000 : ON ERROR GOTO 10100 : GOTO 6600 3400 I9%=98% : GOSUB 21200 !SYNTAX ERROR 3500 M%,I7%=K0% : GOSUB 20000 : PRINT L7$; CHR$(63%) !PRINT COMMAND IN ERROR 4000 L7$=L0$ : GOTO 5010 IF M% : I7%=K0% : GOSUB 20000 : GOTO 5020 IF M8% : M5%=K1% : GOSUB 20500 : K6$=L6$ 4100 L5$,K0$=L0$ : M3%,M7%,I4%,L8%=K0% : GOTO 4200 IF L$(L%)=L0$ IMP L%=L3% : L1%=L% : GOTO 9000 4200 GOTO 4000 UNLESS LEN(K6$) : GOSUB 21300 : L8%=K1% IF I%=35% : GOTO 4700 IF I%=47% : GOTO 4200 IF I%<33% OR I%=35% : GOTO 4400 UNLESS I%=43% OR I%=45% OR (I%>47% AND I%<58%) : K0$=K0$+L6$ : GOTO 4200 4400 I1%=LEN(K0$) : IF I%>63% AND I%<87% THEN ON I%-63% GOTO 6400,6500,6600,6700,6800,6900,4500,7100,4500,7300,7400,6790, 7600,7700,4500,4500,8000,8100,4500,8300,4500,8500,8600 4500 I9%=109% : GOSUB 21200 : GOTO 3500 !WHAT? 4700 GOTO 3400 IF LEN(K0$) : K0$=NUM$(L3%-L%) : M3%=K0% : M7%=K1% : GOTO 4200 !/COMMAND 5000 GOSUB 20700 : GOTO 3400 UNLESS L4%>K0% : GOTO 3500 IF L2$=L0$ OR M8%>K0% : K5$=K6$ : M8%,M%=L4% !EXECUTE MACRO 5010 M%=M%-K1% : K6$=L2$ : GOTO 4100 5020 K6$=K5$ : M8%=K0% : GOTO 4100 !RESTORE COMMAND STRING 5100 GOTO 3400 IF I1% : GOSUB 20500 : L5$=L9$ UNLESS LEN(L5$) : ON ERROR GOTO 10200 : OPEN L5$ FOR INPUT AS FILE K3% !EDIT READ 5110 FOR I1%=K0% TO 255% : INPUT LINE #K3%, L6$ : GOSUB 20600 : L1$(I1%+K1%)=L6$ : NEXT I1% 5120 ON ERROR GOTO 10100 : CLOSE K3% : L5%=I1% !COPIED INTO SAVE BUFFER 5130 GOTO 3500 IF L3%+I1%>K9% : K0$=RIGHT(L$(L%),M9%+K1%) : L$(L%)=LEFT(L$(L%),M9%) : IF M9% THEN I3%=K1% ELSE I3%=K0% 5140 I4%=I1%+I3% : I%=K1% : I%=K0% IF L%=L3% : L$(I2%+I4%)=L$(I2%) FOR I2%=L3% TO L%+I% STEP -K1% : M2%=M2%+I4% IF M2%>L%+K1% : L$(I2%+L%-K1%+I3%)=L1$(I2%) FOR I2%=K1% TO I1% : L%=L%+I4% : L3%=L3%+I4% : L$(L%)=K0$ : M9%=K0% : GOTO 4100 5190 GOSUB 20500 : K3$=L5$ !NEW OUTPUT FILE 5200 GOTO 3400 IF I1% : CLOSE K2% : L5$=K3$ : IF K3$=K4$ THEN L6$=LEFT(K4$,INSTR(K1%,K4$,CHR$(46%)))+"BAK" : ON ERROR GOTO 10300 : KILL L6$ IF ERL=5210 : ON ERROR GOTO 10000 !EXIT 5210 NAME K4$ AS L6$ IF K3$=K4$ : ON ERROR GOTO 10300 : OPEN K3$ FOR OUTPUT AS FILE K2%, RECORDSIZE 512% : PRINT #K2%, L$(L%); FOR L%=K1% TO L3% : PRINT #K2%, CHR$(26%) : PRINT "OUTPUT FILE-"; K3$ : GOTO 32000 6400 GOTO 3400 IF I1% : M3%=M1% : K0$=NUM$(M2%-L%) : M7%=K1% : GOTO 4200 !RESTORE MARK 6500 M9%=M3% : GOSUB 20700 : L%=L%+L4% : L%=L3% IF L%>L3% : L%=K1% IF L%K1% THEN L4%=L4%-K1% : GOTO 7110 7130 GOSUB 21000 UNLESS L8% : GOTO 4100 7140 NEXT L% : GOTO 3500 !UNSUCCESFUL SEARCH 7150 I%=ASCII(RIGHT(L$(L%),M9%-K1%)) : I%=K0% IF M9%=K1% : GOSUB 21000 : I1%=ASCII(RIGHT(L$(L%),M9%+K1%)) : GOTO 7110 IF (I%>47% AND I%<58%) OR (I%>63% AND I%<91%) OR (I1%>47% AND I1%<58%) OR (I1%>63% AND I1%<91%) : GOTO 7120 7300 GOTO 3400 IF I1% : M0%=73% : GOSUB 20300 : GOTO 3400 IF I% : GOSUB 20400 : GOTO 4100 !INSERT 7400 GOTO 6500 IF M7% : GOSUB 20700 : M9%=M9%+L4% : M9%=K0% UNLESS L4% : GOSUB 20200 : GOTO 4100 !JUMP 7600 GOSUB 20800 : GOTO 7640 IF L1%<>L2% IMP L4%=K1% : I%=L1%-K1% !LIST 7610 I%=I%+K1% : IF I%=L1% THEN IF L4%>K0% THEN PRINT RIGHT(L$(I%),M9%+K1%); ELSE PRINT RIGHT(L$(I%),M3%+K1%); 7620 GOTO 7610 IF I%=L1% : IF I%=L2% THEN PRINT LEFT(L$(I%),M9%); IF L4%K0% : GOTO 7650 7630 PRINT L$(I%); : GOTO 7610 7640 IF L4%=K1% THEN PRINT RIGHT(L$(L%),M9%+K1%); ELSE I1%=M3%-M9% : IF I1%256% : L1$(K1%)=RIGHT(L$(L%),M9%+K1%) : L4%=L3%-L%+K1% IF L4%>L3%-L%+K1% : L1$(I%)=L$(L%+I%-K1%) FOR I%=K2% TO L4% : L5%=L4% : GOTO 4100 !SAVE 8500 GOTO 3400 IF I1% : I1%=L5% : IF L5%L3% : GOTO 4100 10000 IF ERR<>16% GOTO 10300 ELSE RESUME 5200 !KILL EXISTING FILE 10100 RESUME 31000 IF ERR=28% : L5$=L0$ : I9%=ERR : GOSUB 21200 : RESUME 3500 !EDITING ERROR TRAP 10200 IF ERR=11% THEN RESUME 3300 IF ERL=3200 : RESUME 5120 IF ERL=5110 10300 RESUME 31000 IF ERR=28% : RESUME 5210 IF ERL=5200 : I9%=ERR : GOSUB 21200 : RESUME 1000 IF ERL<3500 : RESUME 5100 IF ERL=5100 : RESUME 5190 20000 I8%,I9%=K0% UNLESS I7%=K6% : K0$=SYS(CHR$(I7%)+CHR$(I8%)+CHR$(I9%)) : RETURN !SYS FUNCTION CALL 20100 GOSUB 20700 : I1%=M9% : M9%=K0% UNLESS L4% : M9%=M9%+L4% IF L4%K0% : I1%=LEN(L$(L%)) IF I1%>LEN(L$(L%)) : GOSUB 20200 : L$(L%)=LEFT(L$(L%),M9%)+RIGHT(L$(L%),I1%+K1%) : RETURN 20200 M9%=K0% IF M9%LEN(L$(L%)) : RETURN 20300 I%=K1% : GOTO 20340 IF LEN(K6$) !ASK FOR TEXT OBJECT 20310 PRINT CHR$(M0%); CHR$(62%); : INPUT LINE #K1%, K$ : I1%=INSTR(K1%,K$,CHR$(K7%)) : GOTO 20330 UNLESS I1% : I%=K0% 20320 K$=LEFT(K$,I1%-K1%)+RIGHT(K$,I1%+K1%) : I1%=INSTR(I1%,K$,CHR$(K7%)) : RETURN UNLESS I1% : GOTO 20320 20330 L6$=K$ : GOSUB 21100 : K$=L6$ : I%=K0% : RETURN 20340 I1%=INSTR(K2%,K6$,LEFT(K6$,K1%)) : IF I1%=K2% THEN L7$=L7$+LEFT(K6$,K2%) : K6$=RIGHT(K6$,K3%) : GOTO 20310 20350 IF I1%=K0% THEN RETURN ELSE K$=MID(K6$,K2%,I1%-K2%) : L7$=L7$+LEFT(K6$,I1%) : K6$=RIGHT(K6$,I1%+K1%) : I%=K0% : RETURN 20400 L6$=LEFT(L$(L%),M9%)+K$+RIGHT(L$(L%),M9%+K1%) : I%=K0% : GOSUB 20600 : L$(L%)=L6$ : M9%=M9%+LEN(K$) : GOSUB 20200 : PRINT "LINE LENGTH ="; LEN(L6$) IF LEN(L6$)>120% AND I%=K0% : RETURN UNLESS L%=L3% : L3%=L3%+K1% : L$(L3%)=L0$ : RETURN 20500 I%=35% : I%=42% IF M5% : I%=46% IF M6% : PRINT CHR$(I%); : INPUT LINE #K1%, L6$ : GOSUB 21100 : L5$=L6$ : M5%,M6%=K0% : RETURN 20600 IF LEN(L6$)<129% THEN RETURN ELSE L5$=MID(L6$,115%,72%) : FOR I%=K1% TO LEN(L5$) : I3%=ASCII(RIGHT(L5$,I%)) : L5$=LEFT(L5$,I%-K1%)+CHR$(92%)+RIGHT(L5$,I%+K1%) IF I3%<32% OR I3%>95% : NEXT I% : PRINT L5$ : L5$=CHR$(94%) : L6$=LEFT(L6$,128%) : I9%=47% : GOSUB 21200 : RETURN 20700 K0$=NUM$(K1%) IF K0$=L0$ OR K0$=CHR$(43%) : K0$=NUM$(-K1%) IF K0$=CHR$(45%) : L4%=VAL(K0$) : K0$=L0$ : RETURN 20800 GOSUB 20700 : GOTO 20810 IF L4%L3% : RETURN 20810 L2%=L% : L1%=L%+L4% : L1%=K1% IF L1%K0% : K0$=NUM$(I1%) : GOSUB 20100 : RETURN 20910 IF L4%=K1% THEN L$(L%)=LEFT(L$(L%),M9%) : RETURN 20920 L$(I%)=L0$ FOR I%=L1%+K1% TO L2%-K1% : IF L4%