mirror of
https://github.com/retro-software/B5500-software.git
synced 2026-03-05 10:23:52 +00:00
1. Commit library tape images, directories, and extracted text files. 2. Commit additional utilities under Unisys-Emode-Tools.
501 lines
40 KiB
Plaintext
501 lines
40 KiB
Plaintext
BEGIN
|
|
COMMENT PROGRAM CREATE/FILE, TO CREATE A DISK FILE LIKE
|
|
TEXT/EDITOR DOES BUT USING LESS MEMORY ETC;
|
|
COMMENT CUBE LIBRARY NUMBER Z100003,THIS VERSION DATED 2-8-68.
|
|
WRITTEN BY DONNA WILLIAMS & W.H.EICHELBERGER,
|
|
UNIVERSITY OF DENVER;
|
|
COMMENT
|
|
FILE DF1 DISK SERIAL "FIRST""SECOND"(1,10,30),
|
|
DF2 DISK SERIAL [20:6] "FIRST""SECOND"(1,10,30,SAVE 99);
|
|
FILE DF1 DISK SERIAL "FIRST""SECOND"(1,10,150),
|
|
DF2 DISK SERIAL [20:15]"FIRST""SECOND"(1,10,150,SAVE 99);
|
|
SWITCH FILE DF~DF1,DF2;
|
|
ALPHA FILE IN TTIN 14(2,8);
|
|
ALPHA FILE OUT TOUT 14(2,8);
|
|
SAVE ARRAY A,DATA[0:9];
|
|
SAVE ARRAY READIN,FREE[0:7];
|
|
SAVE ARRAY DICT[0:3];
|
|
ARRAY DIC[0:1];
|
|
INTEGER JJ,KK;
|
|
BOOLEAN ALFASEQ;
|
|
INTEGER F;
|
|
ALPHA ND1,ND2;
|
|
INTEGER N,J,K,I,L,M,P,STA,R;
|
|
ALPHA ID1,ID2;
|
|
BOOLEAN RLFG,ILFG,SRTFG,THRFG,PLFG;
|
|
LABEL REED,DONE,REED1,THRU;
|
|
LABEL TC,RL,PL,OK,CS,RS,IL,DL,GA,ST,ERR;
|
|
SWITCH SW~TC,RL,PL,OK,CS,RS,IL,DL,GA,ST,ERR;
|
|
DEFINE READSTA=READ(TTIN(STA),8,READIN[*]); WRITE(TOUT(STA),FCR)#,
|
|
ERROP=11#;
|
|
FORMAT FNO (X8,"IMPROPER RESPONSE. TRY AGAIN{!~"),
|
|
FCR(X8,"{!~"),
|
|
FDONE(X8,"DONE{!~"),
|
|
FSRT(X8,"FILE BEING SORTED AND RESEQUENCED. WAIT{!~"),
|
|
FST(X8,"{!PROGRAM TERMINATED{!~"),
|
|
FOT(X8,I8, "~"),
|
|
ILL(X8,"ILLEGAL OPERATION CODE.{!~"),
|
|
NOPL(X8,"NO SUCH LINE NUMBER.{!~"),
|
|
FCF4(X8,"THIS OPERATION LEGAL ONLY AFTER RL.{!~"),
|
|
NTFND(X8,"LINE ",I8," NOT IN FILE.{!~");
|
|
STREAM PROCEDURE MOV(F,T,N,M);
|
|
VALUE N,M;
|
|
BEGIN
|
|
SI~F; DI~T; DS~ N CHR; M(DS~ 1 LIT " ");
|
|
END MOV;
|
|
BOOLEAN STREAM PROCEDURE CMD(A);
|
|
BEGIN
|
|
SI~A;
|
|
IF SC = "*" THEN TALLY~1;
|
|
CMD~TALLY;
|
|
END CMD;
|
|
PROCEDURE WRITESEQ(I);
|
|
INTEGER I;
|
|
BEGIN
|
|
WRITE(TOUT(STA),FOT,I);
|
|
READ SEEK(TTIN(STA));
|
|
END WRITESEQ;
|
|
STREAM PROCEDURE BCV(A,B);
|
|
BEGIN
|
|
SI~A; DI~B; DS~8 OCT;
|
|
END BCV;
|
|
STREAM PROCEDURE OCV(OCTL,CHRS);
|
|
BEGIN
|
|
SI~OCTL; DI~CHRS; DS~8 DEC;
|
|
END OCV;
|
|
STREAM PROCEDURE MOVE(F,T,N);
|
|
VALUE N;
|
|
BEGIN
|
|
SI~F; SI~SI+3;
|
|
DI~T;
|
|
DS~N CHR; DS~2 LIT ",,";
|
|
END MOVE;
|
|
PROCEDURE TYPE;
|
|
BEGIN
|
|
INTEGER STREAM PROCEDURE NCH(A);
|
|
BEGIN
|
|
SI~A; SI~SI+50; SI~SI+21;
|
|
63(IF SC!" " THEN JUMP OUT; TALLY~TALLY+1; SI~SI-1);
|
|
NCH~TALLY;
|
|
END NCH;
|
|
STREAM PROCEDURE MOVE1(F,T,N,ND);
|
|
VALUE N;
|
|
BEGIN
|
|
SI~F; DI~T; SI~SI+50; SI~SI+22;DS~8 CHR;SI~F;
|
|
DS~N CHR;
|
|
SI~ND; SI~SI+5; DS~3 CHR;
|
|
END MOVE1;
|
|
STREAM PROCEDURE MOVE2(F,T,N,ND,SKP);
|
|
VALUE N,SKP;
|
|
BEGIN
|
|
SI~F; SI~SI+SKP;
|
|
DI~T; DS~N CHR; SI~ND; SI~SI+5; DS~ 3 CHR;
|
|
END MOVE2;
|
|
INTEGER I;
|
|
I~NCH(DATA);
|
|
IF I>26 THEN
|
|
BEGIN
|
|
MOVE1(DATA,A[1],72-I,ND1);
|
|
WRITE(TOUT(STA),8,A[*]);
|
|
END ELSE IF I>9 THEN
|
|
BEGIN
|
|
MOVE1(DATA,A[1],32,ND2);
|
|
WRITE(TOUT(STA),7,A[*]);
|
|
MOVE2(DATA[4],A[1],40-I,ND1,0);
|
|
WRITE(TOUT(STA),6,A[*]);
|
|
END ELSE
|
|
BEGIN
|
|
MOVE1(DATA,A[1],32,ND2);
|
|
WRITE(TOUT(STA),7,A[*]);
|
|
MOVE2(DATA[4],A[1],30,ND1,0);
|
|
WRITE(TOUT(STA),6,A[*]);
|
|
MOVE2(DATA[7],A[1],10-I,ND1,6);
|
|
WRITE(TOUT(STA),4,A[*]);
|
|
END;
|
|
END TYPE;
|
|
INTEGER STREAM PROCEDURE FINDGP(A);
|
|
BEGIN
|
|
LABEL FOUND;
|
|
SI~A; 56(IF SC ="~" THEN JUMP OUT 1 TO FOUND; SI~SI+1;
|
|
TALLY~TALLY+1);
|
|
FOUND: FINDGP~TALLY;
|
|
END FINDGP;
|
|
INTEGER STREAM PROCEDURE FINDOP(S,D);
|
|
BEGIN
|
|
LABEL HERE;
|
|
LOCAL ST1;
|
|
SI~S; SI~SI+1; ST1~SI; DI~D;
|
|
ERROP(TALLY~TALLY+1; IF 2 SC=DC THEN JUMP OUT 1 TO HERE;
|
|
SI~ST1;);
|
|
HERE: FINDOP~TALLY;
|
|
END FINDOP;
|
|
BOOLEAN STREAM PROCEDURE PCT (A,N);
|
|
VALUE N;
|
|
BEGIN
|
|
SI~A; SI~SI+N; TALLY~0; SI~SI-1;
|
|
IF SC = "%" THEN TALLY~1;
|
|
PCT~TALLY;
|
|
END PCT;
|
|
PROCEDURE TEACH;
|
|
BEGIN
|
|
SWITCH FORMAT CF2~
|
|
(X8,"OPERATION CODES ARE:{!~"),
|
|
(X8,"*GO - STARTS PROGRAM.{!~"),
|
|
(X8,"*ST - STOPS PROGRAM - FILE IS ALREADY SAVED.{!~"),
|
|
(X8,"*PL X OR *PL X,Y - PRINTS LINES X THRU Y.{!~"),
|
|
(X8,"*IL X - INSERTS A LINE NUMBER X.{!~"),
|
|
(X8,"*DL X OR *DL X,Y - DELETES LINES X THRU Y.{!~"),
|
|
(X8,"*RL X - RECALLS LINE X, LISTS, REPEATS NUMBER.{!~"),
|
|
(X8,"*OK - RE-STORES LINE UNCHANGED.{!~"),
|
|
(X8,"*CS Y - RE-STORES WITH SEQ. NO. CHANGED TO Y.{!~"),
|
|
(X8,"*RS - SORTS AND RESEQUENCES BY 100.{!~"),
|
|
(X8,"*TC - LISTS COMMANDS AVAILABLE.{!~"),
|
|
(X8," DO YOU NEED MORE HELP. TYPE YES OR *GO.{!~");
|
|
SWITCH FORMAT CF2A~
|
|
(X8,"THIS PROGRAM CREATES OR CHANGES A CARD-IMAGE DISK{!~"),
|
|
(X8,"FILE. IT ASKS YOU FOR FILE NAME. FILE MAY BE UP TO{!~"),
|
|
(X8,"300 LINES. SEQUENCE NUMBERS ARE IN COLS 73-80 BUT{!~"),
|
|
(X8,"PRINT AT LEFT.{!~"),
|
|
(X8,"THE PROGRAM NORMALLY SUPPLIES THE NEXT SEQUENCE{!~"),
|
|
(X8,"NUMBER AND YOU MAY TYPE THE DATA TO BE STORED AT{!~"),
|
|
(X8,"THAT NUMBER. YOU MAY INSERT A LINE WITH THE *IL{!~"),
|
|
(X8,"COMMAND OR DELETE A LINE OR SEQUENCE OF LINES WITH{!~"),
|
|
(X8,"*DL. *PL LETS YOU PRINT A LINE OR SEQUENCE OF{!~"),
|
|
(X8,"LINES, OR IF X & Y ARE NOT SUPPLIED IT PRINTS THE{!~"),
|
|
(X8,"ENTIRE FILE.{!~"),
|
|
(X8,"WITH *RL YOU MAY RECALL A LINE FOR CHANGING. *OK{!~"),
|
|
(X8,"WILL RE-STORE IT UNCHANGED, & *CS Y WILL RE-STORE{!~"),
|
|
(X8,"IT WITH SEQUENCE NUMBER CHANGED TO Y.{!~"),
|
|
(X8,"A % IMMEDIATELY BEFORE THE LEFT ARROW ERASES A LINE{!~"),
|
|
(X8,"AND LETS YOU START IT OVER.{!~"),
|
|
(X8,"IF YOU WISH A FILE CREATED BY YOU TO BE SAVED AFTER{!~"),
|
|
(X8,"5 PM, YOU MUST FILE A LIBRARY MAINTENANCE FORM{!~"),
|
|
(X8,"IN THE COMPUTING CENTER{!!~");
|
|
INTEGER I;
|
|
LABEL THRU,MH,TC1;
|
|
FOR J~0 STEP 1 UNTIL 11 DO WRITE(TOUT(STA),CF2[J]);
|
|
TC1: READSTA;
|
|
I~FINDOP(READIN[1],DIC);
|
|
IF I=2 THEN GO TO THRU ELSE IF I=5 THEN GO TO MH;
|
|
WRITE(TOUT(STA),FNO);
|
|
WRITE(TOUT(STA),CF2[11]);
|
|
GO TO TC1;
|
|
MH: FOR J~0 STEP 1 UNTIL 18 DO WRITE(TOUT(STA),CF2A[J]);
|
|
THRU: END TEACH;
|
|
PROCEDURE PROGSTART;
|
|
BEGIN
|
|
STREAM PROCEDURE FILLTHE(DICT);
|
|
BEGIN
|
|
DI~DICT;
|
|
DS~2 LIT "TC"; % LISTS COMMANDS
|
|
DS~2 LIT "RL"; % RECALLS A LINE
|
|
DS~2 LIT "PL"; % PRINTS LINES
|
|
DS~2 LIT "OK"; % RESTORES LINE
|
|
DS~2 LIT "CS"; % RESTORES LINE, NEW SEQUENCE
|
|
DS~2 LIT "RS"; % SORTS AND RESEQUENCES BY 100
|
|
DS~2 LIT "IL"; % INSERTS NEW LINE NUMBER
|
|
DS~2 LIT "DL"; % DELETES LINES
|
|
DS~2 LIT "GO"; % STARTS PROGRAM
|
|
DS~2 LIT "ST"; % STOPS PROGRAM
|
|
END OF FILLTHEDICT;
|
|
STREAM PROCEDURE FILLITTLE(DIC);
|
|
BEGIN
|
|
DI~DIC;
|
|
DS~2 LIT "TC"; % LISTS COMMANDS
|
|
DS~2 LIT "GO"; % STARTS PROGRAM
|
|
DS~2 LIT "EW"; % NEW FILE
|
|
DS~2 LIT "LD"; % OLD FILE
|
|
DS~2 LIT "ES"; % MORE HELP
|
|
DS~2 LIT "ST"; %STOP
|
|
END FILLITTLEDIC;
|
|
BOOLEAN STREAM PROCEDURE ALF(A);
|
|
BEGIN
|
|
COMMENT THIS IS SUPPOSED TO RETURN TRUE IF EITHER OF THE
|
|
FIRST TWO CHARACTERS IS ALPHABETIC;
|
|
SI~A;
|
|
2(IF SB THEN TALLY~1; SKIP 1 SB);
|
|
SKIP 4 SB;
|
|
2(IF SB THEN TALLY~1; SKIP 1 SB);
|
|
ALF~TALLY;
|
|
END ALF;
|
|
STREAM PROCEDURE MVID(F,T,N);
|
|
VALUE N;
|
|
BEGIN
|
|
SI~F;DI~T;DI~DI+1;
|
|
DS~N CHR;
|
|
END MVID;
|
|
FORMAT CF0(X8,"{!YOU ARE USING CREATE/FILE, VERSION 2A{!~"),
|
|
CF1(X8,"IF YOU NEED HELP TYPE *TC ELSE TYPE *GO{!~"),
|
|
CF3(X8,"{!NEW OR OLD.{!~"),
|
|
CF4(X8,"{!FIRST NAME OF FILE: ~"),
|
|
CF5(X8,"{!SECOND NAME OF FILE: ~"),
|
|
CF6(X8,"{!FILE ",A1,A6,"/",A1,A6," FOUND.LAST LINE:{!~"),
|
|
CF7(X8,"{!FILE ",A1,A6,"/",A1,A6," BEING CREATED AND SAVE
|
|
D{!~"), CF8(X8,"{!FILE ",A1,A6,"/",A1,A6," NOT ON DISK{!~"),
|
|
CF9(X8,"{!FILE ",A1,A6,"/",A1,A6," ALREADY ON DISK{!~"),
|
|
CF10(X8,"PLEASE SUPPLY A NEW NAME{!~");
|
|
LABEL PS1,TC,LGO,LGO1,OLDF,NEWF,READY;
|
|
FILLITTLE(DIC);
|
|
ALFASEQ~SRTFG~FALSE;
|
|
STA~STATUS(READIN[*]);
|
|
STA~0&READIN[0][9:9:9];
|
|
FILLTHE(DICT);
|
|
ND1~"{!~";
|
|
ND2~"~ ";
|
|
WRITE(TOUT(STA),CF0);
|
|
PS1: WRITE(TOUT(STA),CF1);
|
|
READSTA;
|
|
I~FINDOP(READIN[1],DIC);
|
|
IF I=2 THEN GO TO LGO;
|
|
IF I=1 THEN GO TO TC;
|
|
IF I=6 THEN GO TO DONE;
|
|
WRITE(TOUT(STA),FNO);
|
|
GO TO PS1;
|
|
TC: TEACH;
|
|
LGO:
|
|
ID1~ID2~" ";
|
|
WRITE(TOUT(STA),CF4);
|
|
READSTA;
|
|
I~FINDGP(READIN[1]); IF I>7 THEN I~7;
|
|
MVID(READIN[1],ID1,I);
|
|
WRITE(TOUT(STA),CF5); READSTA; I~FINDGP(READIN[1]);
|
|
IF I>7 THEN I~7;
|
|
MVID(READIN[1],ID2,I);
|
|
LGO1: WRITE(TOUT(STA),CF3);
|
|
READSTA;
|
|
I~FINDOP(READIN[1],DIC);
|
|
IF I=3 THEN GO TO NEWF;
|
|
IF I=4 THEN GO TO OLDF;
|
|
IF I=6 THEN GO TO DONE;
|
|
WRITE(TOUT(STA),FNO);
|
|
GO TO LGO1;
|
|
OLDF: F~0;
|
|
FILL DF1 WITH ID1,ID2;
|
|
SEARCH(DF1,A[*]);
|
|
IF A[0]=-1 OR A[0] = 0 THEN BEGIN
|
|
WRITE(TOUT(STA),CF8,ID1.[6:6],ID1,ID2.[6:6],ID2);
|
|
WRITE(TOUT(STA),CF10);
|
|
GO TO LGO;
|
|
END;
|
|
WRITE(TOUT(STA),CF6,ID1.[6:6],ID1,ID2.[6:6],ID2);
|
|
N~A[5];
|
|
READ(DF[F][N],10,DATA[*]);
|
|
TYPE;
|
|
ALFASEQ~ALF(DATA[9]);
|
|
IF ALFASEQ THEN GO TO RS;
|
|
BCV(DATA[9],I);
|
|
I~I+100;
|
|
GO TO READY;
|
|
NEWF: F~1;
|
|
FILL DF2 WITH ID1,ID2;
|
|
SEARCH(DF2,A[*]);
|
|
IF A[0]! -1 THEN BEGIN
|
|
WRITE(TOUT(STA),CF9,ID1.[6:6],ID1,ID2.[6:6],ID2);
|
|
WRITE(TOUT(STA),CF10);
|
|
GO TO LGO;
|
|
END;
|
|
I~100;
|
|
OCV(I,A[9]);
|
|
WRITE(DF[F][0],10,A[*]);
|
|
LOCK(DF2,RELEASE);
|
|
FILL DF1 WITH ID1,ID2;
|
|
F~0;
|
|
N~-1;
|
|
WRITE(TOUT(STA),CF7,ID1.[6:6],ID1,ID2.[6:6],ID2);
|
|
READY: END PROGSTART;
|
|
PROGSTART;
|
|
OCV(I,A[9]);
|
|
REED: OK: GA: WRITESEQ(I);
|
|
ILFG~RLFG~FALSE;
|
|
REED1: READ(TTIN(STA),8,READIN[*]);
|
|
IF CMD(READIN[1]) THEN
|
|
BEGIN
|
|
WRITE(TOUT(STA),FCR);
|
|
P~FINDOP(READIN[1],DICT);
|
|
GO TO SW[P];
|
|
PL: K~L~0;
|
|
MOVE(READIN[1],FREE,FINDGP(READIN[1])-3);
|
|
READ(FREE[*],/,K,L);
|
|
IF L=0 THEN L~K;
|
|
IF L=0 THEN L~399999999999;
|
|
FOR J~0 STEP 1 UNTIL N DO
|
|
BEGIN
|
|
READ(DF[F] [J],10,DATA[*]);
|
|
IF DATA[9]!400000000000 THEN
|
|
BEGIN
|
|
BCV(DATA[9],M);
|
|
IF M}K AND M{L THEN
|
|
BEGIN
|
|
TYPE;
|
|
PLFG~TRUE;
|
|
END;
|
|
END;
|
|
END;
|
|
IF NOT PLFG THEN WRITE(TOUT(STA),NOPL);
|
|
PLFG~FALSE;
|
|
GO TO REED;
|
|
ERR: WRITE(TOUT(STA),ILL);
|
|
GO TO REED;
|
|
RL:
|
|
BEGIN
|
|
LABEL NOTFND,FNDL;
|
|
MOVE(READIN[1],FREE,FINDGP(READIN[1])-3);
|
|
READ(FREE[*],/,K);
|
|
J~0;
|
|
WHILE TRUE DO
|
|
BEGIN
|
|
READ(DF[F][J],10,DATA[*])[NOTFND];
|
|
BCV(DATA[9],L);
|
|
IF L=K THEN GO TO FNDL;
|
|
J~J+1;
|
|
END;
|
|
NOTFND: WRITE(TOUT(STA),NTFND,K);
|
|
GO TO REED;
|
|
FNDL: TYPE;
|
|
RLFG~TRUE;
|
|
R~J;
|
|
WRITESEQ(K);
|
|
END;
|
|
GO TO REED1;
|
|
CS: IF NOT RLFG THEN
|
|
BEGIN WRITE(TOUT(STA),FCF4);
|
|
GO TO REED; END;
|
|
MOVE(READIN[1],FREE,FINDGP(READIN[1])-3);
|
|
READ(FREE[*],/,K);
|
|
SRTFG~TRUE;
|
|
OCV(K,DATA[9]);
|
|
WRITE(DF[F][J],10,DATA[*]);
|
|
WRITE(TOUT(STA),FDONE);
|
|
GO TO REED;
|
|
IL:
|
|
MOVE(READIN[1],FREE,FINDGP(READIN[1])-3);
|
|
READ(FREE[*],/,K);
|
|
FOR J~0 STEP 1 UNTIL N DO
|
|
BEGIN
|
|
READ(DF[F][J],10,DATA[*]);
|
|
BCV(DATA[9],L);
|
|
IF L=K THEN BEGIN
|
|
TYPE;
|
|
GO TO REED; END;
|
|
END;
|
|
ILFG~TRUE;
|
|
WRITESEQ(K);
|
|
SRTFG~TRUE;
|
|
OCV(K,A[9]);
|
|
GO TO REED1;
|
|
TC: TEACH;
|
|
GO TO REED;
|
|
DL:
|
|
BEGIN
|
|
LABEL DUMMY;
|
|
K~L~0;
|
|
MOVE(READIN[1],FREE,FINDGP(READIN[1])-3);
|
|
READ(FREE[*],/,K,L);
|
|
IF L=0 THEN L~K;
|
|
FOR J~0 STEP 1 UNTIL N DO
|
|
BEGIN
|
|
READ(DF[F][J],10,DATA[*]);
|
|
BCV(DATA[9],M);
|
|
IF M}K AND M{L THEN
|
|
BEGIN DATA[9]~400000000000;
|
|
WRITE(DF[F][J],10,DATA[*]); END;
|
|
END;
|
|
SRTFG~TRUE;
|
|
WRITE(TOUT(STA),FDONE);
|
|
END;
|
|
GO TO REED;
|
|
RS: BEGIN
|
|
PROCEDURE HV(A);
|
|
ARRAY A[0];
|
|
A[9]~500000000000;
|
|
BOOLEAN PROCEDURE CMPR(A,B);
|
|
ARRAY A,B[0];
|
|
CMPR~IF A[9]{B[9] THEN TRUE ELSE FALSE;
|
|
BOOLEAN PROCEDURE IP(A);
|
|
ARRAY A[0];
|
|
BEGIN
|
|
LABEL EOF,THRU,LA;
|
|
LA: READ(DF[F][J],10,A[*])[EOF];
|
|
J~J+1;
|
|
IF NOT ALFASEQ THEN
|
|
IF A[9]=400000000000 THEN GO TO LA;
|
|
GO TO THRU;
|
|
EOF: IP~TRUE;
|
|
CLOSE(DF[F],PURGE);
|
|
FILL DF2 WITH ID1,ID2;
|
|
F~1;
|
|
J~0;
|
|
THRU: END IP;
|
|
PROCEDURE OP(B,A);
|
|
VALUE B;
|
|
BOOLEAN B;
|
|
ARRAY A[0];
|
|
IF B THEN
|
|
BEGIN
|
|
LOCK(DF2,RELEASE);
|
|
FILL DF1 WITH ID1,ID2;
|
|
F~0;
|
|
END ELSE
|
|
BEGIN
|
|
WRITE(DF2[J],10,A[*]);
|
|
J~J+1;
|
|
END;
|
|
J~0;
|
|
WRITE(TOUT(STA),FSRT);
|
|
SORT(OP,IP,0,HV,CMPR,10,1000,20000);
|
|
N~J-1;
|
|
I~100;
|
|
FOR J~0 STEP 1 UNTIL N DO
|
|
BEGIN
|
|
READ(DF[F][J],10,DATA[*]);
|
|
OCV(I,DATA[9]);
|
|
WRITE(DF[F][J],10,DATA[*]);
|
|
I~I+100;
|
|
END;
|
|
CLOSE(DF[F]);
|
|
ALFASEQ~SRTFG~FALSE;
|
|
WRITE(TOUT(STA),FDONE);
|
|
END OF SORT BLOCK;
|
|
IF THRFG THEN GO TO DONE;
|
|
OCV(I,A[9]);
|
|
GO TO REED;
|
|
END OF COMMAND BLOCK;
|
|
J~FINDGP(READIN[1]);
|
|
JJ~0;
|
|
KK~72-J;
|
|
IF J=56 THEN BEGIN
|
|
MOV(READIN[1],A,56,0);
|
|
READ(TTIN(STA),8,READIN[*]);
|
|
J~FINDGP(READIN[1]);
|
|
IF J>16 THEN J~16;
|
|
JJ~7;
|
|
KK~16-J; END;
|
|
WRITE(TOUT(STA),FCR);
|
|
IF PCT (READIN[1],J) THEN
|
|
BEGIN IF ILFG OR RLFG THEN BEGIN
|
|
WRITESEQ(K);
|
|
GO TO REED1 END ELSE GO TO REED END;
|
|
IF KK{63 THEN
|
|
MOV (READIN[1],A[JJ],J,KK)
|
|
ELSE BEGIN
|
|
MOV(READIN[1],A,J,KK-16);
|
|
MOV(READIN[1],A[7],0,16); END;
|
|
IF RLFG THEN
|
|
BEGIN
|
|
A[9]~DATA[9];
|
|
WRITE(DF[F][R],10,A[*]);
|
|
END ELSE
|
|
BEGIN
|
|
N~N+1;
|
|
WRITE(DF[F][N],10,A[*]);
|
|
CLOSE(DF[F]);
|
|
IF NOT ILFG THEN I~I+100;
|
|
END;
|
|
OCV(I,A[9]);
|
|
GO TO REED;
|
|
THRU: ST: THRFG~TRUE;
|
|
IF SRTFG THEN GO TO RS;
|
|
DONE:
|
|
WRITE(TOUT(STA),FST);
|
|
END.
|