Trailing-Edge
-
PDP-10 Archives
-
decuslib20-04
-
decus/20-0109/adres.ovh
There are 2 other files named adres.ovh in the archive. Click here to see a list.
1STRUKTURERAD PR0GRAMMERING
+__________________________
(VAD JAG MENAR MED DET)
UPPDELNING I SM$ ENHETER
MED V#L-DEFINIERAT INTERFACE
T0P-D0WN STRUKTUR: ENHETER
P$ H@GRE NIV$ ANV#NDER
BEGREPP DEFINIERADE P$
L#GRE NIV$
PR0GRAMMETS STRUKTUR
KVAR #VEN N#R PR0GRAMMET
#R KLART
L#SLIG PR0GRAMK0D
ERS#TTER K0MMENTARER
1ADRESS-PR0GRAMMET
+_________________
F0RMATTERA ADRESS-
REGISTER TILL ETIKETT-
ARK
SELEKTERA 0CH S0RTERA
ADRESSREGISTER
K0MMAND0STYRT,
HJ#LPFACILITET
1F0A.LAB=F0A.ADR/SELECT/PRES0RT
SWITCH DEFAULT IN 0UT
+________________________
/N0LABEL LABEL .ADR .LAB
/LIST N0 .ADR .LST
/FILE N0 .ADR .ADR
/PRES0RT N0 .ADR .USR
/AS0RT N0 .SRT .ADR
/0UT1 N0 .ADR ?
/SELECT N0 .ADR ?
/N0CASESHIFT CASESHIFT
/LINES:N 5
/LABELS:N 3
/LEFT:N 6
/WIDTH:N 34
/TAB:N 36
/LINE1:N 300
/LINE2:N 80
/N0TABS TABS
/SINGLE N0
1INITIALIZE_C0NSTANTS; <==
WHILE TRUE D0
+_____ ____ __
BEGIN
+_____
==> READ_INPUT_C0MMAND;
==> 0PEN_FILES;
==> CREATE_LABELS;
RESUME(FIRST_LABEL);
==> CL0SE_FILES;
==> MESSAGE_END_0F_PR0CESSING;
END 0F INPUT_C0MMAND_L00P;
+___
1BEGIN REF (LABEL_DATA) FIRST_LABEL;
+_____ ___
PR0CEDURE INITIALIZE_C0NSTANTS;
+ _________
BEGIN END;
+ _____ ___
PR0CEDURE READ_INPUT_C0MMAND;
+ _________
BEGIN INIMAGE; END;
+ _____ ___
PR0CEDURE 0PEN_FILES;
+ _________
BEGIN END;
+ _____ ___
CLASS LABEL_DATA;
+ _____
BEGIN DETACH; END;
+ _____ ___
PR0CEDURE CREATE_LABELS;
+ _________
BEGIN FIRST_LABEL:- NEW LABEL_DATA; END;
+ _____ ___ ___
PR0CEDURE CL0SE_FILES;
+ _________
BEGIN END;
+ _____ ___
PR0CEDURE MESSAGE_END_0F_PR0CESSING;
+ _________
BEGIN END;
+ _____ ___
1BEGIN REF (LABEL_DATA) FIRST_LABEL;
+_____ ___
PR0CEDURE INITIALIZE_C0NSTANTS;
+ _________
BEGIN END;
+ _____ ___
PR0CEDURE READ_INPUT_C0MMAND;
+ _________
BEGIN INIMAGE; END;
+ _____ ___
PR0CEDURE 0PEN_FILES;
+ _________
BEGIN END;
+ _____ ___
CLASS LABEL_DATA;
+ _____
BEGIN DETACH; END;
+ _____ ___
PR0CEDURE CREATE_LABELS;
+ _________
BEGIN FIRST_LABEL:- NEW LABEL_DATA; END;
+ _____ ___ ___
PR0CEDURE CL0SE_FILES;
+ _________
BEGIN END;
+ _____ ___
PR0CEDURE MESSAGE_END_0F_PR0CESSING;
+ _________
BEGIN END;
+ _____ ___
INITIALIZE_C0NSTANTS;
WHILE TRUE D0
+ _____ ____ __
BEGIN
+ _____
READ_INPUT_C0MMAND;
0PEN_FILES;
CREATE_LABELS;
RESUME (FIRST_LABEL);
CL0SE_FILES;
MESSAGE_END_0F_PR0CESSING;
END 0F INPUT_C0MMAND_L00P;
+ ___
END 0F THE WH0LE PR0GRAM;
+___
1PR0CEDURE MESSAGE_END_0F_PR0CESSING;
+_________
BEGIN
+_____
D0TYPE0UT(SYS0UT); 0UTIMAGE;
==> 0UTLINE("(ADRES PR0CESSING IS READY.)");
+ _____
==> C0UNTPRINT("LABELS IN: ",C0UNT_0F_INPUT);
+ ______ __
==> C0UNTPRINT(" LABELS 0UT: ",C0UNT_0F_0UTPUT);
+ ______ ___
IF C0UNT_0F_ERR0R > 0 THEN
+ __ ____
BEGIN
+ _____
==> C0UNTPRINT(
" UNACCEPTABLE LABELS IN: "
+ ____________ ______ __
,C0UNT_0F_ERR0R);
END;
+ ___
.............
LABELS IN: 123 LABELS 0UT: 112
1PR0CEDURE SET_TAB_SETTINGS_0N_THE_TERMINAL;
+_________
INSPECT 0UTFILEREF D0
+_______ __
BEGIN
+_____
0UTTEXT(M0T0R0N); 0UTTEXT(REM0VETABS); 0UTIMAGE;
SETP0S(P0S+LEFT_MARGIN); 0UTTEXT(SETTAB);
F0R I:= 2 STEP 1 UNTIL LABELS_PER_WIDTH D0
+ ___ ____ _____ __
BEGIN
+ _____
SETP0S(P0S+LABEL_SPACING); 0UTTEXT(SETTAB);
END;
+ ___
END;
+___
1PR0CEDURE CREATE_LABELS;
+_________
BEGIN
+_____
INTEGER LABEL_N0;
+ _______
FIRST_LABEL:- N0NE;
+ ____
F0R LABEL_N0:= 1 STEP 1
+ ___ ____
UNTIL LABELS_PER_WIDTH D0
+ _____ __
IF FILE_0UTPUT THEN
+ __ ____
==> NEW FILE_ADDRESS ELSE
+ ___ ____
IF PRES0RT_0UTPUT THEN
+ __ ____
==> NEW PRES0RT_ADDRESS ELSE
+ ___ ____
IF AS0RT_0UTPUT THEN
+ __ ____
==> NEW AS0RT_ADDRESS ELSE
+ ___ ____
==> NEW LABEL_ADDRESS;
+ ___
END 0F CREATE_LABELS;
+___
1CLASS LABEL_DATA;
+_____
BEGIN
+_____
REF (LABEL_DATA) NEXT;
+ ___
TEXT LINE_BUFFER, S0RT_BUFFER;
+ ____
TEXT ARRAY LINE(1:LINE_DIMENSI0N),
+ ____ _____
STRIPLINE(1:LINE_DIMENSI0N);
IF FIRST_LABEL == N0NE
+ __ ____
THEN FIRST_LABEL:- THIS LABEL_DATA
+ ____ ____
ELSE LAST_LABEL.NEXT:- THIS LABEL_DATA;
+ ____ ____
NEXT:- FIRST_LABEL;
LAST_LABEL:- THIS LABEL_DATA;
+ ____
LINE_BUFFER:-
.........
END 0F LABEL_DATA;
+___
1CLASS LABEL_DATA;
+_____
LABEL_DATA CLASS LABEL_0PERATI0NS;
+ _____
LABEL_0PERATI0NS CLASS LABEL_ADDRESS;
+ _____
LABEL_0PERATI0NS CLASS FILE_ADDRESS;
+ _____
LABEL_0PERATI0NS CLASS AS0RT_ADDRESS;
+ _____
LABEL_0PERATI0NS CLASS PRES0RT_ADDRESS;
+ _____
1LABEL_0PERATI0NS CLASS LABEL_ADDRESS;
+ _____
BEGIN
+_____
DETACH; WHILE TRUE D0
+ _____ ____ __
BEGIN
+ _____
==> NEXTIN: READ_AN_ADDRESS;
==> IF N0T CAN_BE_REF0RMATTED AND
+ __ ___ ___
N0T END_0F_FILE THEN G0T0 NEXTIN;
+ ___ ____ ____
IF THIS LABEL_ADDRESS == FIRST_LABEL
+ __ ____
AND END_0F_FILE THEN DETACH
+ ___ ____
ELSE IF LABELS_PER_WIDTH > 1
+ ____ __
--> THEN RESUME(NEXT);
+ ____
==> IF N0T ERASED_ADDRESS THEN 0UTPUT_C0UNT;
+ __ ___ ____
F0R LINE_NUMBER:= 2 STEP 1
+ ___ ____
UNTIL LASTLINEP1 D0
+ _____ __
BEGIN
+ _____
==> WRITE_LINE(IF LINE_NUMBER
+ __
NUMBER_0F_LINES THEN
+ ____
==> STRIPLINE(LINE_NUMBER) ELSE N0TEXT);
+ ____ ______
IF LABELS_PER_WIDTH > 1
+ __
--> THEN RESUME(NEXT);
+ ____
END 0F F0R L00P;
+ ___
END 0F WHILE L00P;
+ ___
END 0F LABEL_ADDRESS;
+___
1PR0CEDURE READ_AN_ADDRESS;
+_________
INSPECT INFILEREF D0
+_______ __
BEGIN
+_____
T0P: NUMBER_0F_LINES:=
IF LINE1_0UTPUT THEN 2 ELSE 1;
+ __ ____ ____
IF FAULTY_ADDRESS THEN
+ __ ____
C0UNT_0F_ERR0R:= C0UNT_0F_ERR0R+1;
ERASED_ADDRESS:=
FAULTY_ADDRESS:= FALSE;
+ _____
IF ENDFILE THEN
+ __ ____
BEGIN
+ _____
END_0F_FILE:= TRUE;
+ ____
==> ERASE_ADDRESS;
END ELSE
+ ___ ____
1BEGIN
+_____
C0UNT_INPUT; <==
AGAIN:
WHILE N0T ENDFILE AND NUMBER_0F_LINES <= IN_DIMENSI0N D0
+ _____ ___ ___ __
BEGIN
+ _____
IMAGE:- LINE(NUMBER_0F_LINES);
INIMAGE; IF ENDFILE THEN IMAGE:= N0TEXT;
+ __ ____ ______
STRIPLINE(NUMBER_0F_LINES):- LINE(NUMBER_0F_LINES).STRIP;
IF STRIPLINE(NUMBER_0F_LINES) == N0TEXT AND
+ __ ______ ___
NUMBER_0F_LINES
> 1 THEN G0T0 AGAIN;
+ ____ ____
STRIPLINE(NUMBER_0F_LINES).SETP0S(STRIPLINE(
NUMBER_0F_LINES
).LENGTH);
IF NUMBER_0F_LINES > 1 THEN
+ __ ____
WHILE STRIPLINE(NUMBER_0F_LINES).LENGTH >
+ _____
==> LABEL_WIDTH D0 DIVIDE_LINE;
+ __
IF (IF STRIPLINE(NUMBER_0F_LINES) = N0TEXT THEN ' ' ELSE
+ __ __ ______ ____ ____
STRIPLINE(NUMBER_0F_LINES).GETCHAR) = F0RMFEED THEN
+ ____
BEGIN C0MMENT END 0F ADDRESS;
+ _____ _______
STRIPLINE(NUMBER_0F_LINES):-
STRIPLINE(NUMBER_0F_LINES).SUB(1,
STRIPLINE(NUMBER_0F_LINES).LENGTH-1);
IF STRIPLINE(NUMBER_0F_LINES) = N0TEXT THEN
+ __ ______ ____
NUMBER_0F_LINES:= NUMBER_0F_LINES-1;
G0T0 0UT;
+ ____
END;
+ ___
NUMBER_0F_LINES:= NUMBER_0F_LINES+1;
END;
+ ___
1 IF ENDFILE THEN NUMBER_0F_LINES:=
+ __ ____
NUMBER_0F_LINES-1;
IF NUMBER_0F_LINES > IN_DIMENSI0N THEN
+ __ ____
==> BEGIN T00_MANY_LINES; G0T0 T0P;
+ _____ ____
END;
+ ___
0UT: IF NUMBER_0F_LINES <= 1 THEN
+ __ ____
BEGIN IF ENDFILE 0R C0UNT_0F_INPUT = 1 THEN
+ _____ __ ____
C0UNT_0F_INPUT:= C0UNT_0F_INPUT-1 ELSE
+ ____
BEGIN NUMBER_0F_LINES:= 10;
+ _____
==> ERR0R(
"N0 TEXT IN ADDRESS AFTER 0R AT:");
+ _
END;
+ ___
G0T0 T0P;
+ ____
END;
+ ___
IF SELECT_0UTPUT THEN
+ __ ____
==> BEGIN IF N0T SELECT_THIS_ADDRESS
+ _____ __ ___
THEN G0T0 T0P;
+ ____ ____
END; END;
+ ___ ___
END 0F READ_AN_ADDRESS;
+___
1B00LEAN PR0CEDURE SELECT_THIS_ADDRESS;
+_______ _________
BEGIN
+_____
B00LEAN SELECT;
+ _______
==> IF LINE_SCAN
+ __
(LINE1_C0NDITI0N,STRIPLINE(1)) THEN
+ ____
BEGIN
+ _____
==> IF ARRAY_SCAN(LINE2_C0NDITI0N,
+ __
STRIPLINE,2,NUMBER_0F_LINES)
THEN
+ ____
SELECT:= TRUE;
+ ____
END;
+ ___
IF N0T SELECT THEN
+ __ ___ ____
C0UNT_0F_REJECTED:=
C0UNT_0F_REJECTED+1;
SELECT_THIS_ADDRESS:= SELECT;
END;
+___
1B00LEAN PR0CEDURE CAN_BE_REF0RMATTED;
+_______ _________
BEGIN
+_____
==> IF REF0RMAT_FIRST_ALG0RITHM THEN
+ __ ____
CAN_BE_REF0RMATTED:= TRUE ELSE
+ ____ ____
==> IF REF0RMAT_SEC0ND_ALG0RITHM THEN
+ __ ____
CAN_BE_REF0RMATTED:= TRUE ELSE
+ ____ ____
==> ERR0R(
"T00 MUCH TEXT IN THIS ADDRESS");
+ _
END 0F CAN_BE_REF0RMATTED;
+___
1B00LEAN PR0CEDURE REF0RMAT_FIRST_ALG0RITHM;
+_______ _________
BEGIN
+_____
INTEGER FIRSTN0, SEC0NDN0;
+ _______
REF0RMAT_FIRST_ALG0RITHM:= TRUE;
+ ____
WHILE NUMBER_0F_LINES > LASTLINE D0
+ _____ __
BEGIN
+ _____
FIRSTN0:= 2; SEC0NDN0:= 3;
F0R LINE_NUMBER:= 3 STEP 1 UNTIL NUMBER_0F_LINES D0
+ ___ ____ _____ __
BEGIN
+ _____
WHILE STRIPLINE(SEC0NDN0) == N0TEXT D0
+ ______ __
SEC0NDN0:= SEC0NDN0+1;
IF STRIPLINE(FIRSTN0).LENGTH +
+ __
STRIPLINE(SEC0NDN0).LENGTH + 2 < LABEL_WIDTH THEN
+ ____
BEGIN
+ _____
MAINLINE:- LINE(FIRSTN0);
MAINLINE.SETP0S(STRIPLINE(FIRSTN0).LENGTH+1);
PUTTEXT(MAINLINE,", ");
PUTTEXT(MAINLINE,STRIPLINE(SEC0NDN0));
STRIPLINE(FIRSTN0):- MAINLINE.STRIP;
STRIPLINE(SEC0NDN0):- N0TEXT;
+ ______
NUMBER_0F_LINES:= NUMBER_0F_LINES-1;
G0T0 C0MPRESSM0RE;
+ ____
END;
+ ___
FIRSTN0:= SEC0NDN0; SEC0NDN0:= FIRSTN0+1;
END;
+ ___
REF0RMAT_FIRST_ALG0RITHM:= FALSE; G0T0 0UT;
+ _____ ____
C0MPRESSM0RE:
END;
+ ___
0UT: SEC0NDN0:= 3;
F0R LINE_NUMBER:= 3 STEP 1 UNTIL NUMBER_0F_LINES D0
+ ___ ____ _____ __
BEGIN
+ _____
WHILE STRIPLINE(SEC0NDN0) == N0TEXT
+ _____ ______
D0 SEC0NDN0:= SEC0NDN0+1;
+ __
STRIPLINE(LINE_NUMBER):- STRIPLINE(SEC0NDN0);
SEC0NDN0:= SEC0NDN0+1;
END;
+ ___
END;
+___
1PR0CEDURE READ_INPUT_C0MMAND;
+_________
BEGIN CHARACTER C;
+_____ _________
PR0MPT:
DISPLAYDEFAULT:= FALSE;
+ _____
REQUEST("*",N0DEFAULT, <==
TEXTINPUT(C0MMAND,
INTERPRET_LEGAL_C0MMAND), <==
N0TEXT,ADRES_HELP("")); <==
+ ______
SET_DEPENDENT_PARAMETERS; <==
END 0F READ_INPUT_C0MMAND;
+___
1B00LEAN PR0CEDURE INTERPRET_LEGAL_C0MMAND;
+_______ _________
BEGIN
+_____
==> IF N0T DECC0M(UPCASE(C0MMAND),
+ __ ___
0UTFILENAME,INFILENAME)
THEN G0T0 0UT;
+ ____ ____
DISPLAYDEFAULT:= TRUE;
+ ____
==> INTERPRET_INTEGER_SWITCHES;
==> INTERPRET_B00LEAN_SWITCHES;
IF SELECT_0UTPUT THEN
+ __ ____
==> REQUEST_SELECT0RS ELSE
+ ____
LINE1_C0NDITI0N:- LINE2_C0NDITI0N:- N0NE;
+ ____
==> IF N0T ILLEGALSWITCH(
+ __ ___
"UNINTERPRETABLE 0R DUPLICATE SWITCH: /"
+ _
==> ,ADRES_HELP(""))
THEN INTERPRET_LEGAL_C0MMAND:=
+ ____
==> FILES_CAN_BE_CREATED;
0UT:
END;
+___
1PR0CEDURE INTERPRET_INTEGER_SWITCHES;
+_________
BEGIN
+_____
==> INTSWITCH("LINES","5",
+ _____
MAX_NUMBER_0F_LINES,
MAX_NUMBER_0F_LINES > 0 AND
+ ___
MAX_NUMBER_0F_LINES < 11,
"MUST BE BETWEEN 0 AND 11",
+ _
==> ADRES_HELP(" /LINES"));
+ _____
.............
==> INTSWITCH("WIDTH","34",
+ _____
LABEL_WIDTH,LABEL_WIDTH > 5
AND LABEL_WIDTH <
+ ___
(132-LEFT_MARGIN)/
+ /LABELS_PER_WIDTH,
"T00 LARGE 0R < 6",
+ _
==> ADRES_HELP(" /WIDTH"));
+ _____
..............
1B00LEAN PR0CEDURE ADRES_HELP(SELECT0R);
+_______ _________
VALUE SELECT0R; TEXT SELECT0R;
+_____ ____
BEGIN
+_____
IF SELECT0R == N0TEXT AND
+ __ ______ ___
SYSIN.IMAGE =/= N0TEXT THEN
+ ______ ____
BEGIN
+ _____
C0MMAND:- SYSIN.IMAGE.STRIP;
C0MMAND.SETP0S(1);
IF C0MMAND.GETCHAR = '?' THEN
+ __ ____
SELECT0R:-
C0MMAND.SUB(2,C0MMAND.LENGTH-1);
END;
+ ___
==> SQHELP("ADRES",SELECT0R,19,72);
+ _____
END;
+___
1- - - - - - - - - - - - - - - - - PAGE 3 SELECT.SIM (105,120) 2-MAR-1976 0:00
+ ____ ______ ___ ___
21
22 PR0CEDURE SET_0PERAT0R_CHARACTERS(T);
+ _________
23 VALUE T; TEXT T;
+ _____ ____
B2 24 BEGIN
+_ _____
25 0P_CHARS:- T;
26 AND_CHAR:= T.GETCHAR;
27 0R_CHAR:= T.GETCHAR;
28 N0T_CHAR:= T.GETCHAR;
29 LEFT_PARENTHESIS:= T.GETCHAR;
30 RIGHT_PARENTHESIS:= T.GETCHAR;
E2 31 END;
+_ ___
- - - - - - - - - - - - - - - - - PAGE 4 SELECT.SIM (105,120) 2-MAR-1976 0:00
+ ____ ______ ___ ___
32
33
34 CLASS 0PERAT0R(W0RD);
+ _____
35 VALUE W0RD; TEXT W0RD;
+ _____ ____
B3 36 BEGIN
+_ _____
37 B00LEAN F0UND, CASESHIFT;
+ _______
38 L00P:
39 DETACH; INNER;
+ _____
40 G0T0 L00P;
+ ____
E3 41 END;
+_ ___
- - - - - - - - - - - - - - - - - PAGE 5 SELECT.SIM (105,120) 2-MAR-1976 0:00
+ ____ ______ ___ ___
42
43
44 0PERAT0R CLASS SEARCH_0PERAT0R;
+ _____
B4 45 BEGIN
+_ _____
46 IF ARRAY_SEARCH THEN
+ __ ____
B5 47 BEGIN
+_ _____
48 F0UND:= FALSE;
+ _____
49 F0R LA_INDEX:= 1 STEP 1 UNTIL LA_MAX D0
+ ___ ____ _____ __
B6 50 BEGIN
+_ _____
51 LINE:- LINE_ARRAY(LA_INDEX); LINE.SETP0S(1);
52 IF SEARCH(LINE,W0RD) <
+ __
53 LINE.LENGTH THEN G0T0 G00D;
+ ____ ____
E6 54 END;
+_ ___
55 IF FALSE THEN G00D: F0UND:= TRUE;
+ __ _____ ____ ____
E5 56 END ELSE
+_ ___ ____
B7 57 BEGIN
+_ _____
58 LINE.SETP0S(1);
59 F0UND:= SEARCH(LINE,W0RD) < LINE.LENGTH;
E7 60 END;
+_ ___
E4 61 END;
+_ ___
- - - - - - - - - - - - - - - - - PAGE 6 SELECT.SIM (105,120) 2-MAR-1976 0:00
+ ____ ______ ___ ___