1
0
mirror of https://github.com/retro-software/B5500-software.git synced 2026-03-02 17:44:40 +00:00
Files
Paul Kimpel 2c72f7fd1d Commit CUBE Library version 13 of February 1972.
1. Commit library tape images, directories, and extracted text files.
2. Commit additional utilities under Unisys-Emode-Tools.
2018-05-27 11:24:23 -07:00

142 lines
11 KiB
Plaintext

BEGIN 00000100
COMMENT CUBE LIBRARY NUMBER IS J400004. THE PROGRAM NAME IS 00000200
"PD/LIST". THIS VERSION DATED 5/8/68; 00000300
COMMENT LIST AND PUNCH THE DISK DIRECTORY ; 00000400
BOOLEAN PUNCHTOG ; 00000500
FILE DIRECTORY DISK "DIRCTRY" "DISK" (1,30) ; 00000600
FILE OUT LINE 4(2,15) ; 00000700
FILE OUT PUNCH 0(2,10) ; 00000800
DEFINE DIR = DIRECTORY # ; 00000900
BOOLEAN DEBUG ; 00001000
INTEGER D,E,F; 00001100
INTEGER SEQ ; 00001200
INTEGER WI,RI ; 00001300
INTEGER C,I,J,K,L,M,N; 00001400
LABEL EXIT,PICK,SKIPP; 00001500
ARRAY NA,H[0:29]; 00001600
LABEL EOF ; 00001700
ARRAY B[0:300,0:16] ; 00001800
ARRAY A[0:29] ; 00001900
ARRAY HEADER[0:29] ; 00002000
LIST LP(A[I].[6:6],A[I],A[I+1].[6:6],A[I+1],SEQ) ; 00002100
LIST LB(B[WI,0],B[WI,1].[6:6],B[WI,1],B[WI,2].[6:6],B[WI,2], 00002200
FOR RI ~ 3 STEP 1 UNTIL 16 DO B[WI,RI]) ; 00002300
FORMAT FFHEAD("LEGEND FOR COLUMNS BELOW"/ 00002400
"COL DESCRIPTION"// 00002500
" SEQUENCE NUMBER IN PUNCHED DECK (IF ANY)"/ 00002600
"2,3 FILE IDENTIFIERS"/ 00002700
"4 RECORD LENGTH"/ 00002800
"5 BLOCK LENGTH"/ 00002900
"6 SAVE FACTOR"/ 00003000
"7 CREATION DAYE"/ 00003100
"8 DATE OF LAST ACCESS"/ 00003200
"9 NUMBER OF RECORDS"/ 00003300
"10 DISK SEGMENTS PER ROW"/ 00003400
"11 MAXIMUM NUMBER OF ROWS"/ 00003500
"12 NUMBER OF WORDS ACTUALLY USED " / 00003600
"13 NUMBER OF WORDS ALLOCATED"/ 00003700
"14 NUMBER OF WORDS WASTED"/ 00003800
"15 NUMBER OF AREAS USED"/ 00003900
"16 NUMBER OF WORDS IN AREAS USED"/ 00004000
"17 UNUSED WORDS IN AREAS USED"// 00004100
" SEQ FILE ", 00004200
" 4 5 6 7 8",X8,"9 10", 00004300
" 11 12 13 14 15 16", 00004400
" 17"/) ; 00004500
FORMAT FB(I4,X1,A1,A6,"/",A1,A6,3I5,2(X1,A5),I9,I7,I3,7I7) ; 00004600
FORMAT F1("FILE ",A1,A6,"/",A1,A6, 00004700
": RECORD LENGTH=",I4, 00004800
"; BLOCK LENGTH=",I4, 00004900
"; SAVE FACTOR=",I3, 00005000
"; CREATION DATE=",A5,";"/ 00005100
" DATA OF LAST ACCESS=",A5, 00005200
"; NUMBER OF RECORDS=",I8, 00005300
"; DISK SEGMENTS/ROW=",I6, 00005400
"; MAXIMUM NUMBER OF ROWS=",I2,";"/ 00005500
" NUMBER OF WORDS ACTUALLY USED=",I6, 00005600
"; TOTAL NUMBER OF WORDS ALLOCATED=",I6,";"/ 00005700
" NUMBER OF WORDS WASTED=",I6,/ 00005800
"NUMBER OF AREAS USED= ",I6,";", 00005900
" TOTAL NUMER OF WORDS IN AREAS USED= ",I6, 00006000
/," UNUSED WORDS IN USED AREAS= ",I6,//); 00006100
FORMAT F2(" ACCUMULATIVE NUMBER OF DISK WORDS USED= ",I8); 00006200
DEFINE NI=IF NA[I] #,PICKUP=THEN GO TO PICK#; 00006300
FORMAT FHEAD(A1," LOAD FROM SYSTEM -"/ 00006400
A1," DUMP TO SYSTEM -"/ 00006500
A1," REMOVE -") , 00006600
FEND("LAZY/GUY ; END .") , 00006700
FP(A1,A6,"/",A1,A6,",-",X55,I8) , 00006800
FL(A1,A6,"/",A1,A6,",-",I9) ; 00006900
DEBUG ~ TRUE ; 00007000
DEBUG ~ FALSE ; 00007100
WRITE(LINE[DBL],FHEAD,12,12,12) ; 00007200
IF PUNCHTOG THEN 00007300
WRITE(PUNCH,FHEAD,12,12,12) ; 00007400
SEQ ~ 0 ; 00007500
FOR J ~ 15 STEP 16 WHILE TRUE DO 00007600
BEGIN 00007700
READ(DIRECTORY[J],30,A[*]) ; 00007800
FOR I ~ 28 STEP -2 UNTIL 0 DO 00007900
BEGIN 00008000
IF A[I] = 76 THEN GO TO EOF ; 00008100
IF A[I] ! 12 THEN 00008200
BEGIN 00008300
IF A[I+1].[42:6] ! 12 THEN 00008400
BEGIN 00008500
SEQ ~ SEQ + 1 ; 00008600
WRITE(LINE[DBL],FL,LP) ; 00008700
IF PUNCHTOG THEN 00008800
WRITE(PUNCH,FP,LP) ; 00008900
END ; 00009000
READ(DIR[J-(30-I) DIV 2],30,H[*]); 00009100
IF H[0].[1:14]=0 OR H[0].[15:12]=0 THEN GO TO SKIPP; 00009200
L~ H[7] | H[0].[1:14]; 00009300
M~ ((H[0].[15:15] DIV 30)+ 00009400
(IF H[0].[15:15] MOD 30!0 THEN 1 ELSE 0))| 00009500
(((H[0].[1:14] | H[7]) DIV H[0].[15:15])+ 00009600
(IF((H[7] | H[0].[1:14]) MOD H[0].[15:15])!0 THEN 00009700
1 ELSE 0)) | 30; 00009800
N~ M-L; 00009900
E~(M DIV (H[8] | 30))+(IF(M MOD (H[8]|30))!0 THEN 00010000
1 ELSE 0); 00010100
D~H[8] | 30 | E; 00010200
C~D-L; 00010300
F~F +D; 00010400
PICK: BEGIN 00010500
IF DEBUG THEN 00010600
WRITE(LINE,F1,NA[I].[6:6],NA[I],NA[I+1].[6:6], 00010700
NA[I+1],H[0].[1:14],H[0].[15:15],H[3].[1:17], 00010800
H[3],H[4].[12:30],H[7],H[8],H[9],L,M,N,E,D,C); 00010900
B[SEQ,0] ~ SEQ ; B[SEQ,1] ~ A[I] ; B[SEQ,2] ~ A[I+1] ; 00011000
B[SEQ,3 ] ~ H[0].[1:14] ; % RECORD LENGTH 00011100
B[SEQ,4] ~ H[0].[15:15] ; % BLOCKLENGTH 00011200
B[SEQ,5] ~ H[3].[1:17] ; % SAVE FACTOR 00011300
B[SEQ,6] ~ H[3] ; % CREATION DATE 00011400
B[SEQ,7] ~ H[4].[12:30] ; % DATE OF LAST ACCESS 00011500
B[SEQ,8] ~ H[7] ; % NUMBER OF RECORDS 00011600
B[SEQ,9] ~ H[8] ; % DISK SEGMENTS PER ROW 00011700
B[SEQ,10] ~ H[9] ; % MAXIMUM ROWS 00011800
B[SEQ,11] ~ L ; % NUMBER OF WORDS ACTUALLY USED 00011900
B[SEQ,12] ~ M ; % NUMBER OF WORDS ALLOCATED 00012000
B[SEQ,13] ~ N ; % NUMBER OF WORDS WASTED 00012100
B[SEQ,14] ~ E ; % NUMBER OF AREAS USED 00012200
B[SEQ,15] ~ D ; % NUMBER OF WORDS IN AREAS USED 00012300
B[SEQ,16] ~ C ; % UNUSED WORDS IN AREAS USED 00012400
WI ~ SEQ ; 00012500
IF DEBUG THEN 00012600
WRITE(LINE,FB,LB) ; 00012700
END ; 00012800
SKIPP: END ; 00012900
END ; 00013000
END ; 00013100
EXIT: 00013200
EOF: WRITE(LINE[DBL],FEND) ; 00013300
IF PUNCHTOG THEN 00013400
WRITE(PUNCH,FEND) ; 00013500
WRITE(LINE[PAGE]) ; 00013600
WRITE(LINE,FFHEAD) ; 00013700
FOR WI ~ 1 STEP 1 UNTIL SEQ DO 00013800
WRITE(LINE,FB,LB) ; 00013900
WRITE(LINE,F2,F); 00014000
END . 00014100