1
0
mirror of https://github.com/retro-software/B5500-software.git synced 2026-01-14 15:34:44 +00:00

Commit DCMCP transcription as of 2012-07-05; commit initial

corrections by matching ALGOL and ESPOL sources; rename ALGOLXEM to 
remove date from name.
This commit is contained in:
Paul Kimpel 2012-07-05 16:25:24 +00:00
parent 535a52c7a2
commit 5644eae26b

View File

@ -5743,3 +5743,85 @@ END DIRSRH; 06463820
DKSGROW:=M[SH INX 8]; 06463996
CODES:=SPACE(30); 06464000
ROWS:=(M[SH INX 9] AND 31)-1; 06464050
FOR ROW:=0 STEP 1 UNTIL ROWS DO 06464100
BEGIN IF (DKADR:=M[SH INX 10+ROW])=0 THEN 06464200
NOTFOUND: BEGIN TYPE := 0; 06464300
FORGETSPACE(CODES); FORGETSPACE(SH);GO TO EXYT; 06464400
END; 06464500
ROWSZ := DKADR + DKSGROW; 06464600
WHILE DKADR < ROWSZ DO 06464700
BEGIN DISKIO(C,1-CODES,30,DKADR); 06464800
SLEEP([C],IOMASK); 06464900
FOR C:=0 STEP 1 UNTIL 29 DO 06465000
BEGIN IF((USER:=NFLAG(M[CODES INX C]))EQV @114= 06465100
NOT 0 THEN GO TO NOTFOUND; 06465200
IF (USER EQV @14)! NOT 0 THEN 06465210
IF USER.[3:3]=0 THEN 06465220
BEGIN 06465230
IF (USERID EQV ABS(USER))=NOT 0 THEN 06465300
BEGIN TYPE := 06465400
IF USER < 0 THEN 2 ELSE 3; 06465500
GO TO FORGET; 06465600
END; 06465700
END ELSE 06465800
BEGIN 06465805
IF P1MIX ! 0 THEN 06465810
IF (ABS)JAR[P1MIX,0])EQV 06465820
USER.[6:42])= NOT 0 THEN 06465830
IF((IF JAR[P1MIX,0]<0 THEN "DISK "ELSE JAR[P1MIX,1])EQV 06465840
M[CODES INX C+1].[6:42])= NOT 0 06465850
THEN 06465860
BEGIN 06465870
TYPE := USER.[3:3]; 06465880
GO TO FORGET; 06465900
END; C:=C+1; 06465910
END; 06465920
END; % 30 USERS 06466000
DKADR := DKADR + 1; 06466100
END; % ROW 06466200
END; % ROWS 06466300
GO TO NOTFOUND; 06466310
END; % NO SECURITY BLOCK FILE 06466400
TYPE :=0; 06466500
EXYT: 06466600
IF HEADER LSS 512 THEN 06466610
IF HEADER GEQ 0 THEN HEADER:=FH ELSE FORGETSPACE(FH); 06466620
SECURITYCHECK :=TYPE; 06466700
END SECURITYCHECK; 06467500
$ SET OMIT = NOT(DATACOM ) 06499999
% * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *%JS06845900
$ SET OMIT = NOT(DCLOG AND DATACOM ) 06845999
DEFINE KLULMP=@174#; @173 IS RESERVED FOR THE DISK ADDRESS 07000000
COMMENT LASTCDNUM, FIRSTDECK, AND LASTDECK ARE STORED IN THE 07000010
FIRST THREE WORDS OF THE DISK SEGMENT LOCATED AT DIRECTORYTOP 07000015
+3. IN A NON SHARED DISK SYSTEM, THEY ARE WRITTEN OUT EACH 07000020
TIME ONE OF THEM IS CHANGED SO THAT THEY WILL BE PRESERVED 07000025
IF A HALT/LOAD OCCURS. N A SHARED DISK SYSTEM, THEY ARE 07000030
READ INTO THE PRT WITH A READ-LOCK COMMAND EACH TIME THEY ARE 07000035
USED. THIS PROVIDES CONTROL DECK INTERLOCKING BETWEEN SYSTEMS 07000040
IN ADDITION TO PASSING THE INFORMATION BETWEEN SYSTEMS. 07000045
END COMMENT; 07000050
INTEGER LASTCDNUM=@174; 07000100
REAL FIRSTDECK=@175; 07000200
REAL LASTDECK=@176; 07000300
DEFINE LOCKCONTROLDECKS=BEGIN SLEEP([TOGLE],CDMASK); LOCKTOG(CDMASK); 07001000
$ SET OMIT = NOT(SHAREDISK) 07001099
END#, 07001200
UNLOCK(CONTROLDECKS=BEGIN 07001300
$ SET OMIT = NOT(SHAREDISK) 07001399
UNLOCKTOG(CDMASK) END#; 07001500
REAL PROCEDURE NEXTCDNUM(UPDATE); VALUE UPDATE; BOOLEAN UPDATE; 07001600
BEGIN 07001620
LOCKCONTROLDECKS; 07001640
LASTCDNUM := (LASTCDNUM MOD 9999) + 1; 07001660
STREAM(CDNUM:=0; LNUM:=LASTCDNUM); 07001680
BEGIN 07001700
SI:=LOC LNUM; DI:=LOC CDNUM; DS:=8 DEC; 07001720
END; 07001740
NEXTCDNUM := P; 07001760
IF UPDATE THEN 07001780
BEGIN 07001800
DISKWAIT(KLUMP,-3,DIRECTORYTOP+3); 07001820
UNLOCKTOG(CDMASK); 07001840
END; 07001860
END; 07001880