mirror of
https://github.com/retro-software/B5500-software.git
synced 2026-03-02 17:44:40 +00:00
1. Commit library tape images, directories, and extracted text files. 2. Commit additional utilities under Unisys-Emode-Tools.
111 lines
8.7 KiB
Plaintext
111 lines
8.7 KiB
Plaintext
BEGIN %
|
|
REAL COM ; % NUMBER OF RECORDS IN ERROR FILE.
|
|
SAVE ARRAY A [0:9], B [0:50] ; %
|
|
FILE OUT PRINT 16 (2,15) ; %
|
|
INTEGER I,N,P,Y,Z ; %
|
|
IF COM = 0 THEN COM := 999; %
|
|
BEGIN % CREATE FILE
|
|
FILE IN CARD DISK SERIAL "ERROR""INPUT" (2,10,150); %
|
|
FILE OUT CREATE DISK SERIAL [20: %
|
|
(19+COM)DIV 20 + 20] "ALGOL""ERRORS" (2,15,30,SAVE 365) ; %
|
|
BOOLEAN STREAM PROCEDURE CMPR(A,B) ; %
|
|
BEGIN SI~A;DI~B;IF 4SC{DC THEN TALLY~1;CMPR~TALLY;END;%
|
|
BOOLEAN PROCEDURE CMP(A,B);ARRAY A,B[0];CMP~CMPR(A,B);%
|
|
PROCEDURE HV(A);ARRAY A[0];A[0]~REAL(<1414141414141414>);%
|
|
FILE OUT FIL DISK SERIAL [20:COM]"TEMPFIL"" "(2,10,30,SAVE 2) ; %
|
|
FILL B[*] WITH "SYNTAX E","RROR. PL","EASE TAK","E TO PRO","GRAMMING",
|
|
" ASSISTA","NT. "," "," "," ",
|
|
" "," "," "," "," ";
|
|
FOR I := 0 STEP 1 UNTIL COM DO WRITE(CREATE,15,B[*]) ; %
|
|
LOCK (CREATE) ; %
|
|
SORT (FIL,CARD,3,HV,CMP,10,6000,120000) ; %
|
|
END ; % CREATE
|
|
BEGIN % FIX FILE
|
|
FILE IN CARD DISK SERIAL "TEMPFIL"" "(2,10,30) ; %
|
|
FILE OUT ERRMDF DISK RANDOM "ALGOL""ERRORS" (1,15,30) ; %
|
|
LABEL L,X,DEL ; %
|
|
REAL STREAM PROCEDURE ADRS (A) ; %
|
|
BEGIN %
|
|
SI ~ A ; %
|
|
ADRS ~ SI ; %
|
|
END ADRS ; %
|
|
STREAM PROCEDURE EDIT (A,V,N) ; %
|
|
VALUE V ; %
|
|
BEGIN %
|
|
LABEL X ; %
|
|
LOCAL L; %
|
|
SI ~ A ; %
|
|
SI ~ SI + 29 ; %
|
|
DI ~ V ; %
|
|
TALLY ~ 51; %
|
|
50(IF SC = " " THEN BEGIN SI ~ SI + 1; TALLY ~ TALLY + 63 END ELSE %
|
|
JUMP OUT); %
|
|
L := TALLY; %
|
|
DS := L CHR; %
|
|
V ~ DI ; % %
|
|
SI ~ V ; %
|
|
DI ~ DI - 8 ; %
|
|
X : %
|
|
IF SC = " " THEN BEGIN %
|
|
SI ~ SI - 1 ; %
|
|
GO X ; %
|
|
END ; %
|
|
SI ~ SI + 2 ; %
|
|
V ~ SI ; %
|
|
SI ~ LOC V ; %
|
|
DI ~ N ; %
|
|
DS ~ WDS ; %
|
|
END EDIT ; %
|
|
STREAM PROCEDURE FINS (V) ; %
|
|
VALUE V ; %
|
|
BEGIN %
|
|
DI ~ V ; %
|
|
SI~V ;SI~SI-2;
|
|
IF SC="." THEN ELSE BEGIN DI~DI-1 ; DS~LIT "." END;
|
|
END FINS ; %
|
|
FORMAT ERR("ERROR NUMBER"I5" IS:");
|
|
STREAM PROCEDURE CLER (V) ; %
|
|
VALUE V ; %
|
|
BEGIN %
|
|
DI ~ V ; %
|
|
DI ~ DI + 48 ; %
|
|
V ~ DI ; %
|
|
SI ~ V ; %
|
|
DS ~ 8 LIT " " ; %
|
|
DS ~ 8 WDS ; %
|
|
END CLER ; %
|
|
BOOLEAN STREAM PROCEDURE ONEP (A,Z) ; %
|
|
BEGIN %
|
|
SI ~ A ; %
|
|
SI ~ SI + 3 ; %
|
|
IF SC = "1" THEN BEGIN %
|
|
TALLY ~ 1 ; %
|
|
ONEP ~ TALLY ; %
|
|
SI ~ SI - 3 ; %
|
|
DI ~ Z ; %
|
|
DS ~ 3 OCT ; %
|
|
END ; %
|
|
END ONEP ; %
|
|
N ~ ADRS (B) ; %
|
|
READ (CARD,10,A[*])[L] ; %
|
|
IF ONEP (A,Z) THEN ; %
|
|
FOR I := 0 STEP 1 UNTIL COM DO BEGIN %
|
|
Y ~ Z ; %
|
|
P ~ N ; %
|
|
CLER (N) ; %
|
|
DO BEGIN %
|
|
EDIT (A,P,P) ; %
|
|
READ (CARD,10,A[*])[L] ; %
|
|
END UNTIL ONEP (A,Z) ; %
|
|
IF FALSE THEN L: I ~ COM + 1 ; %
|
|
FINS (P) ; %
|
|
WRITE (PRINT,ERR,Y) ; %
|
|
WRITE (ERRMDF[Y],15,B[*]) ; %
|
|
WRITE(PRINT[DBL],15,B[*]) ; %
|
|
END ; %
|
|
CLOSE (CARD,PURGE) ; %
|
|
LOCK (ERRMDF) ; %
|
|
DEL: %
|
|
END ; % FIXING FILE
|
|
END .
|