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.
196 lines
15 KiB
Plaintext
196 lines
15 KiB
Plaintext
REAL ESPDISK; % FOR TSS MCP IN CASE CALLED AS A VERB %T1110138000
|
|
DEFINE MAX = 0 #; % SINGLE-USER %T1110139000
|
|
DEFINE STATUS(STATUS1,STATUS2) = STATUS1#; % %T1110140000
|
|
$ VOIDT 10147001 %T1110141000
|
|
REAL DUSERID; DEFINE USERID[USERID1] = DUSERID #; COMMENT % %T1110164000
|
|
ARRAY DINFO[0:INFMAX]; DEFINE INFO[INFO1,INFO2] = DINFO[INFO2] #; %T1110170000
|
|
COMMENT % %T1110170500
|
|
ARRAY DIDENTIFIERS[0:IDENTIFIERSARRAYSIZE]; % %T1110290000
|
|
DEFINE IDENTIFIERS[IDENTIFIERS1,IDENTIFIERS2] = % %T1110290400
|
|
DIDENTIFIERS[IDENTIFIERS2] #; COMMENT % %T1110290600
|
|
REAL DRUNNER; DEFINE RUNNER[RUNNER1] = DRUNNER #; COMMENT % %T1110324000
|
|
FILE IN ERRF DISK RANDOM "WIPLS" "ERRORS"(1,10,30); % %T1110507100
|
|
PROCEDURE STARTUPMSG(TF); VALUE TF; BOOLEAN TF; FORWARD; % %T1110513100
|
|
BOOLEAN BRAAAAAK; SAVE ARRAY XXXXX[0:9]; % %T1120079005
|
|
PROCEDURE TWXOUTX(A,N,T); VALUE N,T; REAL A,N,T; %T1120079010
|
|
BEGIN COMMUNICATE(-11); BRAAAAAK:=BOOLEAN(T); END; %T1120079015
|
|
BOOLEAN PROCEDURE TWXOUT(A,N,T); VALUE N,T; REAL A,N,T; %T1120079020
|
|
BEGIN INTEGER I,B,E; DEFINE X = XXXXX#; %T1120079025
|
|
STREAM PROCEDURE SC(A,X,B,E); %T1120079026
|
|
BEGIN LOCAL G; %T1120079027
|
|
DI:=X; DS:=8 LIT " "; SI:=X; DS:=9 WDS; %T1120079028
|
|
DI:=X; SI:=A; %T1120079029
|
|
Y: 8(IF SC="!" THEN BEGIN SI:=SI+1; TALLY:=TALLY+1; END ELSE %T1120079030
|
|
IF SC="{" THEN BEGIN SI:=SI+1; TALLY:=TALLY+16; END ELSE %T1120079031
|
|
IF SC="~" THEN JUMP OUT TO XX ELSE JUMP OUT); %T1120079032
|
|
G(JUMP OUT TO XX); G:=TALLY; A:=SI; X:=DI; SI:=LOC G; DI:=B; %T1120079033
|
|
DS:=WDS; SI:=A; DI:=X; TALLY:=1; G:=TALLY; TALLY:=0; %T1120079034
|
|
2(36(IF SC="~" THEN JUMP OUT 2 TO XX ELSE %T1120079035
|
|
IF SC="!" THEN JUMP OUT 2 TO Y ELSE %T1120079036
|
|
IF SC="{" THEN JUMP OUT 2 TO Y ELSE DS:=CHR)); %T1120079037
|
|
XX: DS:=LIT "~"; G:=TALLY; SI:=LOC G; DI:=E; DS:=WDS; END; %T1120079038
|
|
SC(A,X,B,E); %T1120079040
|
|
IF B!0 THEN TWXOUTX(A,0,(B.[44:4]+32768|REAL(B.[40:4]=0))); %T1120079041
|
|
TWXOUTX(X[0],72,T); %T1120079042
|
|
IF E!0 THEN TWXOUTX(A,0,(E.[44:4]+32768|REAL(E.[40:4]=0))); %T1120079043
|
|
TWXOUT:=BRAAAAAK; BRAAAAAK:=FALSE; END; %T1120079044
|
|
PROCEDURE TWXIN(T,N,A); VALUE N; REAL T,N,A; COMMUNICATE(18); %T1120079045
|
|
BOOLEAN PROCEDURE INTERRUPTED; %T1120079046
|
|
BEGIN REAL G; TWXIN(G,9,INFO[U,0]); INTERRUPTED:=BOOLEAN(G); END; %T1120079050
|
|
STREAM PROCEDURE PUTINFILETYPE(FIIL,TYPE); VALUE TYPE; % %T0120079060
|
|
BEGIN LOCAL SV; % %T0120079062
|
|
SI:=FIIL; SI:=SI-24; DI:=LOC FIIL; DS:=WDS; % %T0120079064
|
|
SI:=FIIL;14(SI:=SI+8); DI:=LOC FIIL; DS:=WDS; % %T0120079066
|
|
DI:=FIIL; DI:=DI+32; DI:=DI+6; % %T0120079068
|
|
SI:=LOC TYPE; SI:=SI+7; DS:=CHR; % %T0120079070
|
|
END; % %T0120079072
|
|
FILL LOADFILE WITH INFO [LOADLINK],USERID[USER]; % %T0140043000
|
|
SYNTAX[14] := 0; % % IN CASE NOT UNDER GT MCP %T0140044000
|
|
SEARCH(LOADFILE,SYNTAX[*]); IF SYNTAX[0] LEQ 0 THEN BEGIN %T0140044500
|
|
FILL LOADFILE WITH "REMOTE ",INFO[LOADLINK]; % %T0140044600
|
|
END; % %T0140046000
|
|
IF IF SYNTAX[0] LEQ 0 THEN TRUE ELSE % %T0140047000
|
|
SYNTAX[14].[9:2] = 3 OR 0NEQ SYNTAX[14].[36:6]NEQ 30 THEN %T0140048000
|
|
INFO[FILELIMITS] .[1:1] := REAL(SYNTAX[0] GTR 0); % %T0140052000
|
|
FILE IN HELP DISK SERIAL(2,10,30); % %T1140117100
|
|
DEFINE TEMPDISKBUF = DISKBUF#; % %T1140119000
|
|
FILL HELP WITH "WIPLS ", "HELPFIL"; % %T0140201000
|
|
STARTUPMSG(TRUE); % % %T1140209100
|
|
DEFINE STUP = 21#; % %T1150045000
|
|
GENCODE(STUP,0); % %T1152155000
|
|
IF HELPTABLE[0] = 0 THEN BEGIN % %T1153573100
|
|
HELPLOADER; % %T1153573200
|
|
END; % %T1153581100
|
|
WHILE (T:=SYNTAX[I:=I+1]).CLASSFIELD NEQ ENDR AND T.CLASSFIELD %T0153636000
|
|
NEQ IDLETTER DO; IF T.CLASSFIELD NEQ IDLETTER THEN BEGIN %- %T0153637000
|
|
FILL SAVER WITH T1, USERID[USER]; % %T0153649000
|
|
IF T1 = 0 OR T1.[42:6] NEQ " " THEN % %T0153721000
|
|
BEGIN SYNTAX[TEMPCODE]:= STUP|64; OK := TRUE; END; %T1153883000
|
|
IF ABS(STACK[S]) GTR 549755813887 THEN GO INTERR ELSE % %T1171076000
|
|
IF ABS(STACK[S]) GTR 549755813887 THEN GO INTERR ELSE % %T1171078000
|
|
IF ABS(STACK[S]) GTR 549755813887 THEN GO INTERR ELSE % %T1171080000
|
|
INTEGER STREAM PROCEDURE SBK(L); % %T1071408000
|
|
BEGIN SI ~ L; SI ~ SI + 23; TALLY ~ 24; % %T1071408100
|
|
24(IF SC ! " " THEN JUMP OUT; SI ~ SI - 1; TALLY ~ TALLY +63);%T1071408200
|
|
SBK ~ TALLY; % %T1071408400
|
|
END SBK; % %T1071408500
|
|
$VOIDT 71446000 %T1071412000
|
|
WRITE(LINE[*],//,STACK[(S:=S-1)+1]); %T1071444000
|
|
T3 ~ 0; T2 ~ SBK(LINE); % %T1071445000
|
|
% %T1180039000
|
|
% %T1180041000
|
|
FILE IN REMIN REMOTE (2,9); % %T1180049000
|
|
$ VOIDT 80077001 %T1180051000
|
|
OWN ARRAY DSTACK[0:STACKARRAYSIZE]; % %T1180099400
|
|
DEFINE STACK[STACK1,STACK2] = DSTACK[STACK2] #; % %T1180099500
|
|
OWN ARRAY DCODE[0:CODEMAXSIZE],DUSERARRAY[0:USERARRAYMAXSIZE]; % %T1180100000
|
|
DEFINE CODE[CODE1,CODE2] =DCODE[CODE2] #, % %T1180100400
|
|
USERARRAY[USERARRAY1,USERARRAY2] = DUSERARRAY[USERARRAY2] #; %T1180100500
|
|
COMMENT % %T1180100600
|
|
$VOID 80145000 %T1180127000
|
|
; % %T1180145000
|
|
$ VOIDT 80608001 %T1180163500
|
|
LABEL BREAK,CWRITE; % %T1180164000
|
|
BOOLEAN STREAM PROCEDURE PILA(A,B); % %T1180165000
|
|
BEGIN LOCAL C; %T1180167000
|
|
SI := A; IF SC GTR "9" THEN TALLY := 1; 2(SI := SI + 36); % %T1180169000
|
|
2(36(SI := SI - 1; IF SC NEQ " " THEN JUMP OUT 2 TO OK)); % %T1180171000
|
|
OK: PILA := TALLY; % %T1180173000
|
|
C := SI; DI := C; DI := DI + 1; DS := LIT "~"; % %T1180175000
|
|
SI := A; DI := B; DS := 09 WDS; % %T1180177000
|
|
END PILA; % %T1180179000
|
|
DATACOM: % %T1180317000
|
|
IF BOOLEAN(RUNNER[U].[1:1]) THEN BEGIN % %T1180319000
|
|
WNEXT: % %T1180321000
|
|
IF TWXOUT(INFO[U,0],72,32768) THEN GO TO BREAK; %T1180323000
|
|
CWRITE: % %T1180325000
|
|
RUNNER[U] := ABS(RUNNER[U]); % %T1180327000
|
|
EVENTS := EVENTS + 1; % %T1180329000
|
|
IF RUNNER[U].[36:12] NEQ 0 THEN IDLE := TRUE AND NOT ACTIVE := TRUE;%T1180331000
|
|
GO TO RESTORE; % %T1180333000
|
|
BREAK: % %T1180335000
|
|
IF RUNNER[U].[36:12] = "I" THEN BEGIN % SPECIAL ACTION ON LOADING %T1180337000
|
|
CLOSE(LOADFILE); LOADINTERLOCK := -1; INFO[U,LOADLIST] := 0; % %T1180339000
|
|
END; % %T1180341000
|
|
RUNNER[U] := 0; % %T1180343000
|
|
EVENTS := EVENTS + 1; % %T1180345000
|
|
% %T1180347000
|
|
END; % %T1180359000
|
|
RESTORE: % %T1180411000
|
|
IF RUNNER[U].[36:12] NEQ 0 THEN IF % %T1180413050
|
|
IF REAL(BOOLEAN(EVENTS) AND BOOLEAN(7)) = 0 THEN % %T1180413051
|
|
INTERRUPTED ELSE FALSE THEN GO BREAK ELSE % %T1180413052
|
|
GO XIT; % %T1180413060
|
|
DO READ(REMIN,9,INFO[U,*]) UNTIL NOT % %T1180415000
|
|
PILA(INFO[U,*],SYNTAX[*]); % %T1180427000
|
|
DCIO := TRUE AND NOT IDLE := ACTIVE := FALSE; % %T1180429000
|
|
EVENTS := EVENTS + 1; % %T1180431000
|
|
GO TO XIT; % %T1180433000
|
|
IF SC = "O" THEN DS ~ 24 LIT "NOT LOADED(INVALID TYPE)"; %T0180642000
|
|
IF SC = "B" THEN DS ~ 52 LIT % %T1180645000
|
|
"TYPE HELP IF YOU HAVE QUESTIONS (WIPL VERSION 1.5)~"; %%T1180647000
|
|
% %T1180663000
|
|
$ VOIDT 80693001 %T1180687000
|
|
STREAM PROCEDURE PUBLICSAVE(D,N,M); VALUE N,M; % %T0180709000
|
|
DI~D; DS~09LIT"CC PUBLIC"; SI~LOC N; SI~SI+1; DS~7CHR; %T0180713000
|
|
DS~LIT"/"; SI~SI+1 ; DS ~ 7 CHR ; DS ~ 6 LIT ";END.~" ; % %T0180715000
|
|
% %T1180739000
|
|
LABEL OK,EOF; % %T1180741000
|
|
STREAM PROCEDURE FORMATERRORS(S,S1,D); % %T1180741001
|
|
BEGIN LOCAL T; % %T1180741002
|
|
SI ~ S1; SI ~ SI -1; % %T1180741003
|
|
63(IF SC ! " " THEN JUMP OUT ELSE SI ~ SI -1); % %T1180741004
|
|
SI ~ SI +1; T ~ SI; DI ~ T; DS ~ LIT "~"; % %T1180741005
|
|
SI ~ S; 15(IF SC = "M" THEN JUMP OUT ELSE SI ~ SI +1); % %T1180741006
|
|
SI ~ SI +2; DI ~ D; DS ~ 63 CHR; % %T1180741007
|
|
END FORMATTING ERRORS; % %T1180741008
|
|
READ(ERRF[ERRNUMBER],10,LISTBUF[*])[EOF:EOF]; % %T1180742000
|
|
FORMATERRORS(LISTBUF[0],LISTBUF[9],INFO[USER,IOBUF]); % %T1180743000
|
|
GO OK; % %T1180744000
|
|
EOF: CLOSE(ERRF); % %T1180745000
|
|
INFO[USER,IOBUF] ~ "ERROR.~"; % %T1180746000
|
|
OK: % %T1180747000
|
|
DEFINE CHARGETHEUSER = #; % %T1180753000
|
|
% %T1180921000
|
|
IF DEBUG THEN WRITE(PR[DBL],*,RUNNER[0]); % %T1180927000
|
|
% %T1180929000
|
|
IF INFO[USER,FILELIMITS]=0 THEN MSG( % %T0181093000
|
|
INFO[USER,FILELIMITS].[1:1] + "N", % %T0181094000
|
|
$ VOIDT 81115001 %T1181107000
|
|
FILL SAVER WITH INFO[USER,FILENAME],USERID[USER];%T0181231000
|
|
PUTINFILETYPE(SAVER,30); % WIPLS TYPE %T0181268000
|
|
FILENAME],USERID[USER]); % %T0181279000
|
|
$ VOIDT 81307001 %T1181295000
|
|
% %T1181312500
|
|
RUNNER[USER] := USERID[USER] := 0; % %T1181312700
|
|
ACTIVE := FALSE; % %T1181312900
|
|
$ VOIDT 81341001 %T1181313000
|
|
% %T1181351000
|
|
% %T1181353000
|
|
WRITER: CARRIAGE(INFO[USER,IOBUF],0); % %T1181369000
|
|
ENDLOOP: % %T1181377000
|
|
% %T1181379000
|
|
$ VOIDT 90013000 %T1190002000
|
|
LABEL BREAK; ARRAY REMOT[0:9]; % %T1190016000
|
|
IF TF THEN % %T1190017000
|
|
WRITE(REMOT[* ],<"PLEASE WAIT.{!~">) ELSE %T1190019000
|
|
WRITE(REMOT[* ],<"SOMEONE ELSE IS USING WIPL UNDER YOUR USER-CODE"%T1190021000
|
|
".{!~">); %T1190023000
|
|
IF TWXOUT(REMOT[0],72,0) THEN BREAK:; % %T1190024000
|
|
MONITOR EXPOVR,INTOVR,ZERO,INDEX ~ INDX,FLAG ~ FLG; % %T1190053100
|
|
LABEL OOPS; % %T1190053200
|
|
EXPOVR~INTOVR~INDX~FLG ~ZERO~OOPS; % %T1190063100
|
|
FILL DSK WITH "WIPLSAV", USERID[0] := TIME(-1),*,*,*,10; % %T1190333000
|
|
IF INFO[0,6] GEQ 1 OR INFO[0,0] = 0 THEN BEGIN % %T1190337000
|
|
$ VOIDT 90349001 %T1190341000
|
|
OOPS: % %T1190353100
|
|
$ VOIDT 90379001 %T1190365000
|
|
FILL MAKER WITH "WIPLSAV",USERID[0],*,*,*,10; % %T1190383000
|
|
PUTINFILETYPE(MAKER,30); %T1190418000
|
|
$ VOIDT 90465001 %T1190421000
|
|
FILL LOADFILE WITH "WIPLS ","ERRORS "; % %T0190433000
|
|
$VOIDT 90487001 %T1190473000
|
|
RUNNER[USER] := "B"; %T1190581100
|
|
ACTIVE := TRUE; % %T1190581200
|
|
IDLE := FALSE; % %T1190581300
|