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 00000100
|
|
COMMENT PROGRAM - CARDIN, 00000200
|
|
CUBE LIBRARY NUMBER IS I900001. 00000300
|
|
THIS VERSION DATED 6/20/67; 00000400
|
|
COMMENT 00000500
|
|
"CARDIN" 00000600
|
|
00000700
|
|
DISCLAIMER 00000800
|
|
DISCLAIMER: THE AUTHORS OF THIS PROGRAM, THE CUBE ORGANIZATION, 00000900
|
|
AND THE BURROUGHS CORPORATION, BELIEVE THIS PROGRAM MATERIAL 00001000
|
|
TO BE CORRECT, HOWEVER, THEY BEAR NO RESPONSIBILITY, 00001100
|
|
FINANCIAL OR OTHERWISE, FOR ERROR RESULTING FROM ITS USE, NOR 00001200
|
|
ACCEPT ANY RESPONSIBILITY FOR ITS MAINTENANCE. 00001300
|
|
00001400
|
|
AUTHOR 00001500
|
|
MORAG D. BATSON UNIVERSITY OF VIRGINIA 00001600
|
|
00001700
|
|
ABSTRACT 00001800
|
|
THIS PRODEDURE FACILITATES THE READING OF OVERPUNCHED CARDS. 00001900
|
|
00002000
|
|
SYSTEM 00002100
|
|
MINIMUM B5000. 00002200
|
|
00002300
|
|
00002400
|
|
CARDIN 00002500
|
|
00002600
|
|
"CARDIN" IS AN TYPE INTEGER PROCEDURE DESIGNED TO FACILITATE THE 00002700
|
|
READING OF OVERPUNCHED CARDS. IT EVALUATES A NUMERIC FIELD FROM 1 TO 8 00002800
|
|
COLUMNS IN WIDTH, WITH THE PROCEDURE ITSELF YIELDING THE VALUE AS A 00002900
|
|
<FUNCTIONAL DESIGNATOR>. ITS USE IS ILLUSTRATED BY THE FOLLOWING 00003000
|
|
EXAMPLE: 00003100
|
|
00003200
|
|
A~CARDIN(B,C,D); 00003300
|
|
COMMENT 00003400
|
|
00003500
|
|
WHERE A IS A <VARIABLE>, 00003600
|
|
B IS A <FILE IDENTIFIER>, 00003700
|
|
C AND D ARE <ARITHMETIC EXPRESSION>S SUCH THAT D{8, 00003800
|
|
C{80, AND C+D{81. 00003900
|
|
00004000
|
|
THE IDENTIFIER B IS ASSUMED TO NAME A FILE WHOSE ASSOCIATED 00004100
|
|
BUFFER(S) CONTAIN CARD IMAGE(S). THE EXPRESSIONS C AND D ARE EVALUATED 00004200
|
|
TO YIELD INTEGERS. THE VALUE OF C DESIGNATES THE COLUMN OF THE BEGINNING00004300
|
|
OF THE CARD IMAGE FIELD. THE VALUE OF D DESIGNATES THE WIDTH OF THE 00004400
|
|
FIELD, IN COLUMNS. EACH COLUMN MUST CONTAIN EITHER A NUMBER OR A SPACE,00004500
|
|
WITH THE EXCEPTION OF THE FIRST COLUMN. 00004600
|
|
00004700
|
|
IF THE FIRST COLUMN CONTAINS THE CHARACTER "-" OR AN OVERPUNCHED 00004800
|
|
ELEVEN, THE NUMERIC VALUE OF THE FIELD IS TAKEN AS NEGATIVE. IF THE 00004900
|
|
FIRST COLUMN CONTAINS ANYTHING ELSE (IN PARTICULAR AN OVERPUNCHED "+") 00005000
|
|
THE FIELD IS TAKEN AS POSITIVE. A SPACE IN ANY COLUMN IS INTERPRETED AS 00005100
|
|
A ZERO. 00005200
|
|
00005300
|
|
THE USER MUST HANDLE THE FILLING AND RELEASING OF FILES AT THE 00005400
|
|
PROPER TIME, SINCE "CARDIN" PERFORMS ONLY THE EDITING AND NOT THE INPUT 00005500
|
|
FUNCTION. 00005600
|
|
ADDITIONAL DOCUMENTATION. 00005700
|
|
1. THE LESS-THAN-OR-OR-EQUAL-TO CHARACTER IN THE THE FIRST 00005800
|
|
COLUMN OF A FIELD IS INTERPRETED AS OVERPUNCHED NEGATIVE. 00005900
|
|
THIS IS BECAUSE OF THE THE VIRGINIA-STANFORD CARD CODE 00006000
|
|
FOR THAT CHARACTER, WHICH IS AN 11-0 PUNCH. 00006100
|
|
2. IF A LETTER OCCURS IN ANY COLUMN BUT THE FIRST OF 00006200
|
|
A FIELD, ITS ZONE BITS WILL BE STRIPPED OFF, LEAVING THE 00006300
|
|
UNDERPUNCHED NUMERIC VALUE. 00006400
|
|
00006500
|
|
************************************************************************00006600
|
|
;00006700
|
|
FILE OUT LP 1(1,15); FILE IN CR(1,10); 00006800
|
|
INTEGER I,J,X; 00006900
|
|
FORMAT FOUT(I11); 00007000
|
|
INTEGER PROCEDURE CARDIN(FYLE,COL,WIDTH); 00007100
|
|
VALUE COL,WIDTH ; 00007200
|
|
FILE FYLE ; 00007300
|
|
INTEGER COL,WIDTH ; 00007400
|
|
BEGIN 00007500
|
|
COMMENT LIMITATIONS OF INPUT PARAMETERS ARE: COL{8 & COL + WIDTH { 81 ; 00007600
|
|
STREAM PROCEDURE XXX(WORD,CHAR,WIDTH,OU ); 00007700
|
|
VALUE CHAR,WIDTH ; 00007800
|
|
BEGIN 00007900
|
|
LOCAL COPY ; 00008000
|
|
SI ~ WORD ; 00008100
|
|
SI ~ SI + CHAR ; 00008200
|
|
IF SC=">" THEN BEGIN DI~WORD;DI~DI+CHAR;DS~ 1 LIT "|" END; 00008300
|
|
DI ~ LOC COPY ; 00008400
|
|
DS ~ WIDTH CHR ; 00008500
|
|
SI ~ SI - WIDTH ; 00008600
|
|
DI ~ DI - 1 ; 00008700
|
|
DS ~ 1 ZON ; 00008800
|
|
SI ~ SI - 1 ; 00008900
|
|
DI ~ DI - WIDTH ; 00009000
|
|
WIDTH(IF SC = ALPHA THEN DI ~ DI+1 ELSE DS ~ 6 RESET;SI~SI+1);00009100
|
|
SI ~ LOC COPY ; 00009200
|
|
DI ~ OU ; 00009300
|
|
DS ~ WIDTH OCT ; 00009400
|
|
END ; 00009500
|
|
INTEGER TEMP , INDEX1 , INDEX2 ; 00009600
|
|
INDEX1 ~ ( COL - 1 ) DIV 8 ; 00009700
|
|
INDEX2 ~ ( COL - 1 ) MOD 8 ; 00009800
|
|
XXX(FYLE(INDEX1),INDEX2,WIDTH,TEMP); 00009900
|
|
CARDIN ~ TEMP ; 00010000
|
|
END OF PROCEDURE CARDIN ; 00010100
|
|
FOR I~1,2 DO 00010200
|
|
BEGIN 00010300
|
|
FOR J~1 STEP 8 UNTIL 73 DO 00010400
|
|
BEGIN 00010500
|
|
X~CARDIN(CR,J, 8); 00010600
|
|
WRITE(LP,FOUT,X); 00010700
|
|
END; 00010800
|
|
RELEASE (CR); END; 00010900
|
|
END. 00011000
|