top - download
⟦4eb8685dd⟧ Wang Wps File
Length: 73115 (0x11d9b)
Types: Wang Wps File
Notes: CPS/SDS/029
Names: »1825A «
Derivation
└─⟦35f7ff388⟧ Bits:30006086 8" Wang WCS floppy, CR 0132A
└─ ⟦this⟧ »1825A «
WangText
I…07…H…0a…H…0d…H…0e…H…02…H…06…G…09…G…0d…G…00…G
G…06…F…08…F…0b…F…0d…F…00…F
F…06…E…09…E…0c…E…0f…E D…08…D…0a…D…0e…D…02…D D…07…C…0a…C…0e…C…01…C
C…05…B…09…B…0c…B…00…B B…06…A…08…A…0b…A…0e…A…01…A…05…@…09…@…0e…@…01…@ ?…08…?…86…1
…02…
…02…
…02…
…02…CPS/SDS/029
…02…820514
…02……02…
SYSTEM
STATUS
AND CONTROL
DETAILED
DESIGN
SPECIFICATION
CAMPS
4.2.9.6 C̲o̲m̲m̲o̲n̲ ̲C̲F̲H̲ ̲p̲r̲o̲c̲e̲d̲u̲r̲e̲s̲
The CFH common procedures are divided into 7 categories
of procedures:
a) T̲D̲X̲ ̲S̲Y̲S̲T̲E̲M̲ ̲P̲R̲O̲C̲E̲D̲U̲R̲E̲S̲
1: BSM ̲X ̲HANDLE
2: BSM ̲X ̲LTUX ̲CONTROL
3: LTUX ̲HANDLE
4: SET ̲CHAIN ̲STATUS
5: LTUX ̲LINE ̲HANDLE
6: CHAIN ̲CONF ̲DISP
7: CREATE ̲LTUX
8: DELETE ̲LTUX
b) L̲T̲U̲ ̲P̲R̲O̲C̲E̲D̲U̲R̲E̲S̲
9: LTU ̲HANDLE
10: SET ̲LTU ̲CHAIN ̲STATUS
11: LTU ̲LINE ̲HANDLE
12: LTU ̲CHAIN ̲CONF ̲DISP
13: CREATE ̲LTU
14: DELETE ̲LTU
15: LOAD ̲LTU ̲FW
c) C̲O̲M̲M̲O̲N̲ ̲T̲D̲X̲ ̲L̲T̲U̲ ̲P̲R̲O̲C̲E̲D̲U̲R̲E̲S̲
16: GET ̲PROFILE
17: CHECK ̲PROFILE
d) L̲O̲W̲ ̲L̲E̲V̲E̲L̲ ̲D̲I̲S̲K̲ ̲P̲R̲O̲C̲E̲D̲U̲R̲E̲S̲
18: MOUNT ̲DISK
19: DISMOUNT ̲DISK
20: ASSIGN ̲DISK
21: DEASSIGN ̲DISK
22: INCLUDE ̲A ̲MIRRORED ̲DISK
23: EXCLUDE ̲A ̲MIRRORED ̲DISK
24: GET ̲DISK ̲DATA
e) H̲I̲G̲H̲ ̲L̲E̲V̲E̲L̲ ̲D̲I̲S̲K̲ ̲P̲R̲O̲C̲E̲D̲U̲R̲E̲S̲
25: GET ̲ROOT ̲MOV
26: GET ̲ROOT ̲FIX
27: READ ̲FM ̲FILE
28: WRITE ̲TO ̲FILE
29: LOOK ̲UP
30: DIS ̲MANTLE
31: COPY ̲FILES
32: COPY ̲MODIFIED ̲SOFTWARE
33: FIND ̲DIR ̲FILES
34: SET ̲SOFTWARE ̲VERSIONS
35: PRINT ̲SW ̲VERSIONS ̲OP ̲CMD
f) W̲A̲T̲C̲H̲D̲O̲G̲ ̲P̲R̲O̲C̲E̲D̲U̲R̲E̲S̲
36: WDP ̲CONTROL
g) C̲O̲R̲O̲U̲T̲I̲N̲E̲ ̲P̲R̲O̲C̲E̲D̲U̲R̲E̲S̲
37: NOTIFY ̲LONG
38: NOTIFY ̲CMD
39: NOTIFY ̲LINE ̲COROUTINE
40: COMMON ̲NOTIFY ̲LINE ̲COROUTINES
41: COUNT
4.2.9.6.1 B̲S̲M̲ ̲X̲ ̲H̲A̲N̲D̲L̲E̲
4.6.9.6.1.1 F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
The procedure switches a BSM ̲X as indicated in the
"status" field. Also, the BSM ̲X table is updated.
4.2.9.6.1.2 I̲n̲t̲e̲r̲f̲a̲c̲e̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) BSM ̲X ̲HANDLE(NEW ̲REC: BSMX ̲REC)(CC:INTEGER)
b) BSM ̲X ̲HANDLE(R0, R7, R6)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲n̲t̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 pointer to NEW ̲REC
R6 link
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R7 CC
4.2.9.6.1.3 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
a1) T̲y̲p̲e̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
BSM ̲X ̲REC DBD
BSM ̲X ̲SWITCH,
ACTIVE ̲BUS, NONE ̲BUS, OTHER ̲BUS SSC.IF
a2) D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
CONFIG ̲TABLE SSC SOMMON
BSM ̲X ̲TABLE DBD
NEW ̲REC I/F DATA
KEY ̲BUF CFH.VARIOUS
SEND ̲BUF CFH.VARIOUS
a3) C̲o̲n̲s̲t̲a̲n̲t̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
WDP ̲CCB ̲FAILED : SSC.COMMON
b) E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲
NEW ̲REC.NO
NEW ̲REC.STATUS (m)
KEY ̲BUF.KEY (m)
c) L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲
VAR BSM ̲X ̲INDIC: INTEGER
4.2.9.6.1.4 D̲e̲s̲i̲g̲n̲
Flowgram. See fig. 4.2.9.6.1.4-1
PROCEDURE
BSM ̲X ̲HANDLE(NEW ̲REC: BSM ̲X ̲REC)(CC: INTEGER)
VAR BSM ̲X ̲INDIC: INTEGER
BEGIN
BSM ̲X ̲INDIC.BIT(NEW ̲REC. NO -1) = 1
CASE NEW ̲REC. STATUS OF
ACTIVE? WDP ̲CONTROL ( BSM ̲X ̲SWITCH, ACTIVE
̲BUS,
BSM ̲X ̲INDIC)(CC)
OUT ̲OF ̲SERVICE? WDP ̲CONTROL (BSM ̲X ̲SWITCH,
NONE ̲BUS,
BSM ̲X ̲INDIC)(CC)
OFF LINE? WDP ̲CONTROL(BSM ̲X ̲SWITCH, OTHER ̲BUS,
BSM ̲X ̲INDIC)(CC)
END CASE
…06…1 …02… …02… …02… …02… …02… …02…
CC NE 0?
CC = WDP ̲CCB
̲FAILED
NEW ̲REC. STATUS
= ERROR
KEY ̲BUF.KEY = NEW ̲REC. NO
UPDATE ̲ENTRY(BSM ̲X ̲TABLE, SEND ̲BUF, KEY ̲BUF, ALL
̲MASK,NEW ̲REC)
CONFIG ̲TABLE.BSM ̲X(NEW ̲REC.NO) = NEW ̲REC.STATUS
END ̲BSM ̲X ̲HANDLE
Fig. 4.2.9.6.1.4-1
4.2.9.6.2 B̲S̲M̲ ̲X̲ ̲L̲T̲U̲X̲ ̲C̲O̲N̲T̲R̲O̲L̲
4.2.9.6.2.1 F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
The procedure is invoked, when a status change at a
BSM ̲X has occurred. If a BSM ̲X is to be taken out of
service, it is examined if the LTUXs in the BSM ̲X chain
are in service. If so, they are dismantled.
If a BSM ̲X is to be set active and the chain LTUXs
are defined in-service, then the LTUXs are created.
Also, the "chain status" for the chain LTUX ̲lines are
updated.
4.2.9.6.2.2 I̲n̲t̲e̲r̲f̲a̲c̲e̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) BSM ̲X ̲LTUX ̲CONTROL(OLD ̲REC, NEW ̲REC: BSMX ̲REC)
(CC: INTEGER)
BSMX ̲REC see DBD
b) BSM ̲X ̲LTUX CONTROL(R0, R1, R7, R6)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲n̲t̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 pointer to NEW ̲REC
R1 pointer to OLD ̲REC
R6 link
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R7 CC
4.2.9.6.2.3 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
a1) T̲y̲p̲e̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
B̲S̲M̲ ̲X̲ ̲R̲E̲C̲ DBD
a2) D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
LTUX ̲TABLE:(DBD)
NEW ̲REC,
OLD ̲REC :(I/F data)
KEY ̲BUF,
SEND ̲BUF : CFH VARIOUS
a3) C̲o̲n̲s̲t̲a̲n̲t̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲r̲
HW ̲ERROR : SSC.COMMON
b) E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲
LTUX ̲TABLE (m)
NEW ̲REC.NO
NEW ̲REC.STATUS
OLD ̲REC.STATUS
KEY ̲BUF.KEY (m)
c) L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲
VAR LTUX ̲REC ̲D: LTUX ̲REC (DBD)
I,CI: INTEGER
4.2.9.6.2.4 D̲e̲s̲i̲g̲n̲
F̲l̲o̲w̲g̲r̲a̲m̲. See fig. 4.2.9.6.2.4-1
PROCEDURE BSM ̲X ̲LTUX ̲CONTROL(OLD ̲REC, NEW ̲REC: BSM
̲X
̲REC)(CC:INTEGER)
VAR LTUX ̲REC ̲D: LTUX ̲REC
VAR I,CI: INTEGER
BEGIN
CC = 0
CASE NEW ̲REC. STATUS OF
ACTIVE? OLD ̲REC. STATUS EQ ACTIVE?
I = 1
LOOP
I = I + 1
KEY ̲BUF.KEY = 2 * NEW ̲REC.NO +
I
SEARCH ̲ENTRY(LTUX ̲TABLE,RC4 ̲BUF,ALL
̲MASK,SEND ̲BUF)
(LTUX
̲REC
̲D)
LTUX ̲REC ̲D.STATUS NE IN ̲SERVICE?
CREATE ̲LTUX(LTUX ̲REC ̲D)(CI)
CI EQ 0?
CC = HW ̲ERROR
LTUX ̲REC ̲D.STATUS = ERROR
KEY ̲BUF.KEY = LTUX ̲REC ̲D.NO
UPDATE ̲ENTRY(LTUX ̲TABLE,SEND ̲BUF,KEY
̲BUF,ALL ̲MASK,
LTUX
̲REC
̲D)
SET ̲CHAIN ̲STATUS(LTUX ̲REC ̲D, NEW
̲REC. STATUS)
I EQ 2? EXIT
END ̲LOOP
continues
OUT ̲SERVICE, OFFLINE, ERROR?
OLD ̲REC. STATUS NE ACTIVE
I = 1
LOOP
I=I + 1
KEY ̲BUF.KEY = 2 x NEW ̲REC. NO + I
SEARCH ̲ENTRY(LTUX ̲TABLE,KEY ̲BUF,ALL
̲MASK,SEND ̲BUF)
(LTUX
̲REC
̲D)
LTUX ̲REC ̲D. STATUS NE IN ̲SERVICE
DELETE ̲LTUX(LTUX ̲REC ̲D. NO)
SET ̲CHAIN ̲STATUS(LTUX ̲REC ̲D, NEW ̲REC.
STATUS)
I EQ 2? EXIT
END ̲LOOP
END ̲CASE
END ̲BSM ̲X ̲LTUX ̲CONTROL
Fig. 4.2.9.6.2.4-1
4.2.9.6.3 L̲T̲U̲X̲ ̲H̲A̲N̲D̲L̲E̲
4.2.9.6.3.1 F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
The procedure is invoked, when a status
change at a LTUX has occurred.
The BSM ̲X chain consisting of
- a BSM ̲X
- a LTUX
- 4 LTUX lines
is handled.
The LTUX is created, if
- the BSM ̲X status and
- the new BSM ̲X status are
active/in-service respectively.
The LTUX is deleted (dismantled),
if
- the old LTUX status was in-service
The LTUX table is updated and the
chain-status for the appropriate LTUX
is requested set.
4.2.9.6.3.2 I̲n̲t̲e̲r̲f̲a̲c̲e̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) LTUX ̲HANDLE(OLD ̲REC, NEW ̲REC: LTUX
̲REC)(CC: INTEGER)
LTUX
̲REC (DBD)
b) LTUX ̲HANDLE (R0, R1, R7, R6)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲n̲t̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 pointer to NEW ̲REC
R1 pointer to OLD ̲REC
R6 link
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R7 CC
4.2.9.6.3.3. D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
a1) T̲y̲p̲e̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
LTUX ̲REC: DBD
a2) D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
BSMX ̲TABLE,
LTUX ̲TABLE (m): DBD
OLD ̲REC,
NEW ̲REC: (I/F-data)
KEY ̲BUF,
SEND ̲BUF: CFH
̲VARIOUS
a3) C̲o̲n̲s̲t̲a̲n̲t̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
EXEC ̲OK,
HW ̲ERROR: SSC.COMMON
b) E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲
NEW ̲REC.NO
NEW ̲REC.STATUS
OLD ̲REC.STATUS
KEY ̲BUF.KEY (m)
c) L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲
VAR BSM ̲X ̲STATUS: HW ̲STATUS DBD
CONST BSM ̲X.STATUS ̲MASK = 2
4.2.9.6.3.4 D̲e̲s̲i̲g̲n̲
Flowgram. See fig. 4.2.9.6.3.4-1
PROCEDURE LTUX ̲HANDLE(OLD ̲REC, NEW ̲REC: LTUX ̲REC)(CC:
INTEGER)
VAR BSM ̲X ̲STATUS: HW ̲STATUS
CONST BSM ̲X ̲STATUS ̲MASK = 2
BEGIN
CC = EXEC ̲OK
CASE NEW ̲REC. STATUS OF
IN ̲SERVICE? KEY ̲BUF.KEY = (NEW ̲REC. NO + 1)/2
SEARCH ̲ENTRY(BSMX ̲TABLE, KEY ̲BUF,BSM
̲X ̲STATUS ̲MASK,
SEND
̲BUF)(BSM
̲X
̲STATUS)
BSM ̲X ̲STATUS NE ACTIVE?
OLD ̲REC. STATUS NE IN ̲SERVICE?
DELETE ̲LTUX (NEW ̲REC. NO)
CREATE ̲LTUX(NEW ̲REC)(CC)
CC EQ ? 0
CC = HW ̲ERROR
NEW ̲REC. STATUS = ERROR
OTHER? OLD ̲REC. STATUS NE IN ̲SERVICE?
DELETE ̲LTUX (NEW ̲REC. NO)
BSM ̲X ̲STATUS = NIL
END ̲CASE
continues
KEY ̲BUF. KEY = NEW ̲REC. NEW ̲REC ̲NO
UPDATE ̲ENTRY(LTUX ̲TABLE; SEND ̲BUF, KEY ̲BUF, ALL
̲MASK, NEW ̲REC)
NEW ̲REC. STATUS EQ IN ̲SERVICE AND OR
OLD ̲REC. STATUS NE IN ̲SERVICE
NEW ̲REC. STATUS NE IN ̲SERVICE AND
OLD ̲REC. STATUS EQ IN ̲SERVICE
SET
̲CHAIN
̲STATUS(NEW
̲REC,
BSM
̲X ̲STATUS)
END ̲LTUX ̲HANDLE
Fig. 4.2.9.6.3.4-1
4.2.9.6.4.1 S̲E̲T̲ ̲C̲H̲A̲I̲N̲ ̲S̲T̲A̲T̲U̲S̲
The procedure searches for a given LTUX
the appropriate LTUX-line table entries
and invokes the CHAIN ̲CONF ̲DISP procedure
per line.
The procedure is invoked by
- BSM ̲X ̲HANDLE
- LTUX ̲HANDLE
4.2.9.6.4.2 I̲n̲t̲e̲r̲f̲a̲c̲e̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) SET ̲CHAIN ̲STATUS(LTUX ̲REC ̲D:LTUX ̲REC,BSM
̲X ̲STATUS:
HW
̲STATUS)
LTUX ̲REC see DBD
b) SET ̲CHAIN ̲STATUS(R3, R4, R6)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲n̲t̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R3 pointer to LTUX ̲REC ̲D
R4 BSM ̲X ̲STATUS
R6 link
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
4.2.9.6.4.3 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
a) T̲y̲p̲e̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
LTUX ̲REC,
HW ̲STATUS: DBD
a2) D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
LTUX ̲REC ̲D,
BSM ̲X ̲STATUS: I/F-data
LTUX ̲LINE ̲TABLE: DBD
KEY ̲BUF,
SEND ̲BUF: CFH.VARIOUS
b) E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲
LTUX ̲LINE ̲TABLE
LTUX ̲REC ̲D.NO
LTUX ̲REC ̲D.STATUS
BSM ̲X ̲STATUS
KEY ̲BUF.KEY (m)
c) L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲
VAR I: INTEGER
VAR LINE ̲REC: LTUX ̲LINE ̲REC
4.2.9.6.4.4 D̲e̲s̲i̲g̲n̲
Flowgram. See fig. 4.2.9.6.4.4-1
PROCEDURE SET ̲CHAIN ̲STATUS(LTUX ̲REC ̲D: LTUX ̲REC,BSM
̲X ̲STATUS:HW ̲STATUS)
VAR I:INTEGER
VAR LINE ̲REC: LTUX ̲LINE ̲REC
BEGIN
I = 0
LOOP
I = I + 1
KEY ̲BUF.KEY = (LTUX ̲REC ̲D.NO ̲1) * 4 + I
SEARCH ̲ENTRY(LTUX ̲LINE ̲TABLE,KEY ̲BUF,ALL ̲MASK,SEND
̲BUF)(LINE ̲REC)
CHAIN ̲CONF ̲DISP(LINE ̲REC,LINE ̲REC,LTUX ̲REC
̲D.STATUS,BSM ̲X ̲STATUS)
I EQ 4? EXIT
END ̲LOOP
END ̲SET ̲CHAIN ̲STATUS
Fig. 4.2.9.6.4.4-1
4.2.9.6.5 L̲T̲U̲X̲ ̲L̲I̲N̲E̲ ̲H̲A̲N̲D̲L̲E̲
4.2.9.6.5.1 F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
The procedure is invoked when a LTUX-line
status change has occurred due to either
- an error
- or an operator command
The procedure searches the
- BSM ̲X status
- LTUX status
for the corresponding chain and invokes
the CHAIN ̲CONF ̲DISP procedure.
4.2.9.6.5.2 I̲n̲t̲e̲r̲f̲a̲c̲e̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) LTUX ̲LINE ̲HANDLE(OLD ̲REC,NEW ̲REC:
LTUX ̲LINE ̲REC)
LTUX
̲LINE
̲REC
see
DBD
b) LTUX ̲LINE ̲HANDLE (R0, R1, R6)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲n̲t̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 pointer to NEW ̲REC
R1 pointer to OLD ̲REC
R6 link
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
4.2.9.6.5.3 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
a1) T̲y̲p̲e̲ ̲r̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
LTUX ̲LINE ̲REC : DBD
a2) D̲a̲t̲a̲ ̲r̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
OLD ̲REC
NEW ̲REC : I/F
data
BSM ̲X ̲TABLE,
LTUX ̲TABLE: DBD
KEY ̲BUF (m),
SEND ̲BUF: CFH.VARIOUS
b) E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲
NEW ̲REC.STATUS
OLD ̲REC, NO
c) L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲
VAR BSM ̲X ̲STATUS, LTUX ̲STATUS : HW
̲STATUS (DBD)
CONST BSM ̲X ̲STATUS ̲MASK = 2
4.2.9.6.5.4 D̲e̲s̲i̲g̲n̲
Flowgram. See fig. 4.2.9.6.5.4-1
PROCEDURE LTUX ̲LINE ̲HANDLE(OLD ̲REC, NEW ̲REC: LTUX
̲LINE ̲REC)
VAR LTUX ̲STATUS, BSM ̲X ̲STATUS: HW ̲STATUS
CONST BSM ̲X ̲STATUS ̲MASK = 2
BEGIN
CASE NEW ̲REC.STATUS OF
IN ̲SERVICE? KEY ̲BUF.KEY = (OLD ̲REC.NO + 7)/8
SEARCH ̲FIELD(BSMX ̲TABLE,KEY
̲BUF,BSM ̲X ̲STATUS ̲MASK,
SEND
̲BUF)(BSM
̲X ̲STATUS)
KEY ̲BUF.KEY = (OLD
̲REC.NO +3)/4
SEARCH ̲FIELD(LTUX ̲TABLE,KEY
̲BUF,LTUX ̲STATUS ̲MASK,
SEND
̲BUF)(LTUX
̲STATUS)
CHAIN ̲CONF ̲DISP(OLD
̲REC,NEW ̲REC,
LTUX
̲STATUS,BSM
̲X ̲STATUS)
OTHER? CHAIN ̲CONF ̲DISP(OLD
̲REC, NEW ̲REC,NIL, NIL)
END CASE
END
Fig. 4.2.9.6.5.4-1
4.2.9.6.6 C̲H̲A̲I̲N̲ ̲C̲O̲N̲F̲ ̲D̲I̲S̲P̲
4.2.9.6.6.1 F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
The procedure updates the "chain-status"
for a BSM ̲X, LTUX, LTUX ̲line chain.
The configuration display is updated if
a "chain-status" change has occurred.
If the chain-status is changed from in-service
to out-of-service and an error has occurred
in the chain a TEMCO, DEMCO, CEMCO coroutine
is notified.
In the operator only mode (OPERATOR ̲PHASE
= TRUE) the time coroutine is not notifed.
In supervisor only mode (SUPERVISOR ̲PHASE
= FALSE)
- THE PU is shut down if an error occurs
in
- one of the supervisor VDUs
- one of the supervisor printers
- the line coroutines are not notified
If a supervisor VDU chain-status is set
in-service then the associated supervisor
coroutine is notified.
4.2.9.6.6.2 I̲n̲t̲e̲r̲f̲a̲c̲e̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) CHAIN ̲CONF ̲DISP(OLD ̲REC,NEW ̲REC:LTUX
̲LINE REC,
NEW ̲LTUX ̲STATUS,NEW
̲BSM ̲X ̲STATUS:HW STATUS)
LTUX ̲LINE ̲REC, HW ̲STATUS see DBD.OP
b) CHAIN ̲CONF ̲DISP(R0, R1, R2,R3, R6)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲n̲t̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 NEW ̲REC
R1 OLD ̲REC
R2 NEW ̲LTUX ̲STATUS
R3 NEW ̲BSM ̲X ̲STATUS
R6 link
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
4.2.9.6.6.3 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
a1) T̲y̲p̲e̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
INSERT ̲SUPERVISOR,LINE ̲ERROR : SSC.COMMON
LTUX ̲LINE ̲REC,
HW ̲STATUS: DBD
a2) D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
OLD ̲REC,
NEW ̲REC,
NEW ̲LTUX ̲STATUS,
NEW ̲BSM ̲X ̲STATUS: I/F
data
LTUX ̲LINE ̲TABLE: DBD
KEY ̲BUF,
SEND ̲BUF, SUPV ̲ROPS,
SUPERVISOR ̲ONLY ̲PHASE, OPERATOR ̲ONLY
̲PHASE: CFH.VARIOUS
b) E̲x̲t̲e̲r̲n̲a̲l̲
OLD ̲REC. CHAIN ̲STATUS
NEW ̲REC. CHAIN ̲STATUS (m)
NEW ̲REC.NO
KEY ̲BUF.KEY (m)
c) L̲o̲c̲a̲l̲
VAR OLD ̲CS, NEW ̲CS: HW ̲STATUS DBD
VAR DIRECTION: CONF ̲CMD SSC.COMMON
VAR PROFILE: PROFILE TYPE SSC.COMMON
VAR PROFILE ̲ARC: PROFILE ̲OUT CFH.VARIOUS
VAR FOUND: BOOLEAN
4.2.9.6.6.4 D̲e̲s̲i̲g̲n̲
Flowgram. See 4.2.9.6.6.4-1
PROCEDURE
CHAIN ̲CONF ̲DISP(OLD ̲REC, NEW ̲REC: LTUX ̲LINE ̲REC,
NEW ̲LTUX ̲STATUS,NEW ̲BSM ̲X ̲STATUS:
HW ̲STATUS)
VAR OLD ̲CS,NEW ̲CS: HW ̲STATUS
DIRECTION: CONF ̲CMD
BEGIN
OLD ̲CS = OLD ̲REC. CHAIN ̲STATUS
NEW ̲REC. STATUS EQ ? NEW CS =
IN ̲SERVICE
NEW ̲LTUX ̲STATUS EQ
NEW ̲BSM ̲X ̲STATUS EQ IN ̲SERVICE
NEW ̲CS = OUT ̲OF ̲SERVICE
NEW ̲REC. CHAIN ̲STATUS = NEW ̲CS
KEY ̲OUT.KEY = NEW ̲REC.NO
UPDATE ̲ENTRY(LTUX ̲LINE ̲TABLE, KEY ̲BUF, ALL ̲MASK,
NEW ̲REC)
NEW ̲SC EQ OLD ̲CS?
NEW ̲CS EQ IN ̲SERVICE? DIRECTION = UP
DIRECTION = DOWN
CONF ̲DISPLAY(DIRECTION, NEW ̲REC. TYPE ̲DEV, NIL)
DIRECTION EQ DOWN AND
NEW ̲REC. STATUS EQ ERROR OR ?
NEW ̲LTUX ̲STATUS EQ ERROR OR
NEW ̲BSM ̲X ̲STATUS EQ ERROR
HANDLE
̲ONLY
̲MODES
DIRECTION EQ UP? HANDLE ̲SUPV ̲VDUS
END ̲CHAIN ̲CONF ̲DISP
Fig. 4.2.9.6.6.4-1 (1/3)
PROCEDURE
HANDLE ̲ONLY ̲MODES
VAR PROFILE = PROFILE ̲TYPE
FOUND: BOOLEAN
PROFILE ̲REC: PROFILE ̲OUT
BEGIN
GET ̲PROFILE(NEW ̲REC. TYPE ̲DEV)(PROFILE, PROFILE
̲REC, FOUND)
PROFILE ̲REC. CONNECTED EQ FALSE OR
FOUND EQ FALSE ?
OPERATOR ̲ONLY ̲PHASE EQ TRUE?
SUPERVISOR ̲ONLY ̲PHASE EQ TRUE?
CASE PROFILE OF
TERMINAL ̲P? PROFILE ̲REC.NO EQ 1 OR
PROFILE ̲REC.NO
EQ 2
REPORT
̲ERROR(SUPV
̲ONLY
̲E, NIL)
PU ̲DOWN(SUPV
̲ONLY
̲E, NIL)
DEVICE ̲P?
I = 0
LOOP
I = I + 1
PROFILE ̲REC. NO EQ
SUPV ̲ROPS (I) ?
REPORT
̲ERROR(SUPV
̲ONLY
̲E, NIL)
PU
̲DOWN(SUPV
̲ONLY
̲E, NIL)
I EQ 4? EXIT
END ̲LOOP
END CASE
NOTIFY ̲LINE ̲COROUTINE(PROFILE; PROFILE:REC. NO;
LINE ̲ERROR, 0)
END ̲HANDLE ̲ONLY ̲MODES
Fig. 4.2.9.6.6.4-1 (2/3)
PROCEDURE
HANDLE ̲SUPV ̲VDUS
VAR PROFILE : PROFILE ̲TYPE
FOUND : BOOLEAN
PROFILE ̲REC: PROFILE ̲OUT
BEGIN
GET ̲PROFILE (NEW ̲REC.TYPE ̲DEV)(PROFILE,PROFILE
̲REC,FOUND)
FOUND EQ TRUE AND
PROFILE EQ TERMINAL ̲P AND
PROFILE ̲REC. NO EQ 1 OR
PROFILE ̲REC. NO EQ 2
NOTIFY ̲LINE ̲COROUTINE(PROFILE,
PROFILE ̲REC.NO,INSERT
̲SUPERVISOR,0)
END
Fig. 4.2.9.6.6.4-1 (3/3)
4.2.9.6.7 C̲r̲e̲a̲t̲e̲ ̲L̲T̲U̲X̲
4.2.9.6.7.1 F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
Creates a LTUX as a "subdevice" to the
TIA.
Asynchroneous error reports related to
the LTUX are to be sent to DEVICE ̲SE and
are identified via U ̲SDID.
An errorreport is generated if a hardware
completion code is received during the
creation.
4.2.9.6.7.2 I̲n̲t̲e̲r̲f̲a̲c̲e̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) CREATE ̲LTUX(LTUX ̲REC ̲D: LTUX ̲REC)(CC:
INTEGER)
b) CREATE ̲LTUX(R3, R7, R6)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲n̲t̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R3 pointer to LTUX ̲REC ̲D
R6 link
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R7 CC
R0- R6 destr.
4.2.9.6.7.3 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
a1) T̲y̲p̲e̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
LTUX ̲REC: DBD
a2) D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
LTUX ̲CC;REC ̲D I/F data
TIA ̲CON,
DEVICE ̲REC: CFH.VARIOUS
LTUX ̲PARAMS ̲D;
LTUX ̲CON (m): SSC.COMMON
b) E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲
DEVICE ̲REC.SDA (m)
DEVICE ̲REC.V ̲SDID.PROFILE ̲TYPE (m)
DEVICE ̲REC.V ̲SDID.LOGICAL ̲NO (m)
DEVICE ̲REC.PROTOCOL ̲ID (m)
DEVICE ̲REC.SD ̲TYPE (m)
DEVICE ̲REC.ACCESS ̲LEVEL (m)
DEVICE ̲REC.SELECT ̲By ̲TMS (m)
DEVICE ̲REC.PARAMS (m)
c) L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲
VAR NO: INTEGER
4.2.9.6.7.4 D̲e̲s̲i̲g̲n̲
Flowgram. See fig. 4.2.9.6.7.4-1
PROCEDURE CREATE ̲LTUX (LTUX ̲REC ̲D: LTUX ̲REC)(CC:
INTEGER)
VAR BSM ̲X ̲NO, NO: INTEGER
BEGIN
BSM ̲X ̲NO = (LTUX ̲REC ̲D.NO + 1) /2
LTUX ̲REC ̲D.NO LOG AND 1 EQ 1? NO = 1
NO = 2
DEVICE ̲REC. SDA = BSM ̲X ̲NO SHIFT 4 + NO
DEVICE ̲REC. U ̲SDID. PROFILE = LTUX ̲P
DEVICE ̲REC. U ̲SDID. PORT ̲NO = LTUX ̲REC ̲D. NO
DEVICE ̲REC. PROTOCOL ̲ID = LTUX ̲M ̲PROTOCOL
DEVICE ̲REC. SD ̲TYPE = CONTROLLER
DEVICE ̲REC. ACCESS ̲LEVEL = NIL
DEVICE ̲REC. SELECT ̲BY ̲TMS = NIL
DEVICE ̲REC. PARAMS = LTUX ̲PARAMS ̲D
CASE CREATE ̲SUBDEVICE(TIA ̲CON, DEVICE ̲REC, DEVICE
̲SE)
(LTUX ̲CON(LTUX ̲REC
̲D.NO), CC) OF
ERROR? CASE ANALYZE ̲ERROR(CC, 1,): (HW) OF
HW? REPORT ̲ERROR(LTUX ̲CC, DEVICE ̲REC)
END ̲CASE
END ̲CASE
END ̲CREATE ̲LTUX
Fig. 4.2.9.6.7.4-1
4.2.9.6.8 D̲e̲l̲e̲t̲e̲ ̲L̲T̲U̲X̲
4.2.9.6.8.1 F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
Dismantles a LTUX user connection.
The dismantling is signalled to TEMCO,
DEMCO, CEMCO by setting LTUX ̲CON( ) =
- 1.
4.2.9.6.8.2 I̲n̲t̲e̲r̲f̲a̲c̲e̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) DELETE ̲LTUX(LTUX ̲NO: 1..MAX ̲LTUXs)
MAX ̲LTUXs see DBD.
global
b) DELETE ̲LTUX(R0, R7
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲n̲t̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 LTUX ̲NO
R6 link
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 - R7 destr.
4.2.9.6.8.3 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
a1) C̲o̲n̲s̲t̲a̲n̲t̲s̲
MAX ̲LTUXS: DBD
a2) D̲a̲t̲a̲
LTUX ̲CON SSC.COMMON
b) E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲
c) L̲o̲c̲a̲l̲
VAR CC: INTEGER
VAR CONN: USER ̲CONNECTION ̲TYPE DBD
4.2.9.6.8.4 D̲e̲s̲i̲g̲n̲
Flowgram. See fig. 4.2.9.6.8.4-1
PROCEDURE
DELETE ̲LTUX(LTUX ̲NO: 1..MAX ̲LTUXs)
VAR CONN: USER ̲CONNECTION ̲TYPE
VAR CC: INTEGER
BEGIN
CONN = LTUX ̲CON(LTUX ̲NO)
LTUX ̲CON(LTUX ̲NO) = -1
CASE DISMANTLE (CONN)(CC) OF
ERROR? ANALYZE ̲ERROR(CC, 0)
END ̲CASE
END ̲DELETE ̲LTUX
Fig. 4.2.9.6.8.4-1
4.2.9.6.9 L̲T̲U̲ ̲H̲A̲N̲D̲L̲E̲
4.2.9.6.7.1 F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
The procedure is invoked, when a LTU status
change has occurred due to the
- occurrence of an error
- execution of an operator command
The LTU is created and loaded, if the
new status is active.
The LTU is dismantled if the new status
is non-active.
The LTU table is updated and the LTU-line
table entry field "chain status" is updated.
4.2.9.6.9.2 I̲n̲t̲e̲r̲f̲a̲c̲e̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) LTU ̲HANDLE(OLD ̲REC, NEW ̲REC: LTU ̲REC)(CC:INTEGER)
LTU ̲REC see DBD.
b) LTU ̲HANDLE8R0, R1, R7, R6)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲n̲t̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 pointer to NEW ̲REC
R1 pointer to OLD ̲REC
R6 link
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R7 CC
4.2.9.6.9.3 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
a1) T̲y̲p̲e̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
LTU ̲REC DBD
a2) D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
OLD ̲REC,
NEW ̲REC :I/F
data
LTU ̲TABLE :DBD
KEY ̲BUF,
SEND ̲BUF: CFH.VARIOUS
a3) C̲o̲n̲s̲t̲a̲n̲t̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
LTU ̲LOAD ̲ERROR,
HW ̲ERROR : SSC.COMMON
b) E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲
OLD ̲REC.STATUS
NEW ̲REC
NEW ̲REC.NO
NEW ̲REC.STATUS
KEY ̲BUF.KEY (m)
c) L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲
4.2.9.6.9.4 D̲e̲s̲i̲g̲n̲
Flowgram See fig. 4.2.9.6.9.4-1
PROCEDURE
LTU ̲HANDLE(OLD ̲REC, NEW ̲REC:): LTU ̲REC)(CC:INTEGER)
BEGIN
CC = 0
CASE NEW ̲REC. STATUS OF
IN ̲SERVICE? OLD ̲REC.STATUS NE IN ̲SERVICE?
DELETE ̲LTU(NEW ̲REC.NO)
CREATE ̲LTU(NEW ̲REC)(CC)
CC EQ 0? LOAD
̲LTU
̲FW(NEW
̲REC)(CC)
CC EQ
0?
CC =
LTU
̲LOAD
̲ERROR
NEW
̲REC.STATUS
= ERROR
CC = HW ̲ERROR
NEW ̲REC. STATUS = ERROR
OTHER? OLD ̲REC. STATUS NE
IN ̲SERVICE
DELETE ̲LTU(NEW ̲REC.NO)
END ̲CASE
KEY ̲BUF.KEY = NEW ̲REC.NO
UPDATE ̲ENTRY(LTU ̲TABLE,KEY ̲BUF,ALL ̲MASK, SEND
̲BUF, NEW ̲REC)
NEW ̲REC. STATUS EQ IN ̲SERVICE AND
OLD ̲REC. STATUS NE IN ̲SERVICE or
NEW ̲REC. STATUS NE IN ̲SERVICE AND
OLD ̲REC. STATUS EQ IN ̲SERVICE
SET ̲LTU ̲CHAIN ̲STATUS
(NEW ̲REC)
END ̲LTU ̲HANDLE
fig. 4.2.9.6.9.4-1
4.2.9.6.10 S̲E̲T̲ ̲L̲T̲U̲ ̲C̲H̲A̲I̲N̲ ̲S̲T̲A̲T̲U̲S̲
4.2.9.6.10.1 F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
The procedure searches for the specified
LTU the entries for the corresponding
LTU-lines and invokes the LTU ̲CHAIN ̲CONF
̲DISP procedure.
4.2.9.6.10.2 I̲n̲t̲e̲r̲f̲a̲c̲e̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) SET ̲LTU ̲CHAIN ̲STATUS(LTU ̲REC ̲I): LTU
̲REC)
LTU ̲REC ̲D see DBD
b) SET ̲LTU ̲CHAIN ̲STATUS(R3, R6)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲n̲t̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R3 pointer to LTU ̲REC ̲D
R6 link
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
4.2.9.6.10.3 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
a1) T̲y̲p̲e̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
LTU ̲REC (DBD)
a2) D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
LTU ̲REC ̲D :I/F data
LTU ̲LINE ̲TABLE DBD
KEY ̲BUF
SEND ̲BUF :CFH.VARIOUS
b) E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲
LTU ̲REC ̲D.NO
LTU ̲REC ̲D.STATUS
KEY ̲BUF.KEY (m)
c) L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲
VAR I: INTEGER
VAR LINE ̲REC: LTU ̲LINE ̲REC (DBD)
4.2.9.6.10.4 D̲e̲s̲i̲g̲n̲
Flowgram. See fig. 4.2.9.6.4-1.
PROCEDURE SET ̲LTU ̲CHAIN ̲STATUS(LTU ̲REC ̲D: LTU
̲REC)
VAR I: INTEGER
VAR LINE ̲REC: LTU ̲LINE ̲REC
BEGIN
I = 0
LOOP
I = I + 1
KEY ̲BUF.KEY = (LTU ̲REC ̲D.NO-1)/2 + I
SEARCH ̲ENTRY(LTU ̲LINE ̲TABLE,KEY ̲BUF, ALL ̲MASK,SEND
̲BUF)(LINE ̲REC)
LTU ̲CHAIN ̲CONF ̲DISP(LINE ̲REC, LINE ̲REC, LTU
̲REC ̲D.STATUS)
I EQ 2? EXIT
END ̲LOOP
END ̲SET ̲LTU ̲CHAIN ̲STATUS
Fig. 4.2.9.6.10.4-1
4.2.9.6.11 L̲T̲U̲ ̲L̲I̲N̲E̲ ̲H̲A̲N̲D̲L̲E̲
4.2.9.6.11.1 F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲ ̲
The procedure is invoked, when
- an error has occurred
- an operator command is executed.
The corresponding LTU status is looked
up and the LTU ̲CHAIN ̲CONF ̲DISP procedure
called.
4.2.9.6.11.2 I̲n̲t̲e̲r̲f̲a̲c̲e̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) LTU ̲LINE ̲HANDLE(OCD ̲REC, NEW ̲REC:
LTU ̲LINE ̲REC)
LTU ̲LINE ̲REC see DBD)
b) LTU ̲LINE ̲HANDLE (R0, R1, R6)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲n̲t̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 pointer to NEW ̲REC
R1 pointer to OLD ̲REC
R6 link
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
4.2.9.6.11.3 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
a1) T̲y̲p̲e̲ ̲r̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
LTU ̲LINE ̲REC: DBD
a2) D̲a̲t̲a̲ ̲r̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
OLD ̲REC,
NEW ̲REC : I/F
data
LTU ̲TABLE: DBD
KEY ̲BUF,
SEND ̲BUF: CFH.VARIOUS
b) E̲x̲t̲e̲r̲n̲a̲l̲ ̲d̲a̲t̲a̲
NEW ̲REC.STATUS
OLD ̲REC.NO
KEY ̲BUF.KEY (m)
c) L̲o̲c̲a̲l̲ ̲d̲a̲t̲a̲
VAR LTU ̲STATUS: HW ̲STATUS(DBD
CONST LTU ̲STATUS ̲MASK = 4
4.2.9.6.11.4 D̲e̲s̲i̲g̲n̲
Flowgram. See fig. 4.2.9.6.11.4-1
PROCEDURE LTU ̲LINE ̲HANDLE(OLD ̲REC, NEW ̲REC: LTU
̲LINE ̲REC)
VAR LTU ̲STATUS: HW.STATUS
CONST LTU ̲STATUS ̲MASK = 4
BEGIN
CASE NEW ̲REC.STATUS OF
IN ̲SERVICE? KEY ̲BUF.KEY = (OLD ̲REC.NO + 1)
/2
SEARCH (LTU
̲TABLE,
KEY
̲BUF,
LTU
̲STATUS
̲MASK,
SEND
̲BUF)(LTU
̲STATUS)
LTU ̲CHAIN ̲CONF ̲DISP (OLD
̲REC,NEW
̲REC,
LTU
̲STATUS)
OTHER? LTU ̲CHAIN ̲CONF ̲DISP (OLD ̲REC, NEW
̲REC, NIL)
END ̲CASE
END LTU ̲LINE ̲HANDLE
Fig. 4.2.9.6.11.4-1
4.2.9.6.12 L̲T̲U̲ ̲C̲H̲A̲I̲N̲ ̲C̲O̲N̲F̲ ̲D̲I̲S̲P̲.̲
4.2.9.6.12.1 F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
The procedure updates the "chain-status"
for a LTU, LTU-line chain.
The configuration display is updated,
if a "chain-status" change has occurred.
If the chain status is changed from in-service
to out of service and an error has occurred
in the chain a CEMCO coroutine is notified.
In the
- operator-only-phase
- supervisor-only-phase
the CEMCO coroutines are not notifed.
4.2.9.6.12.2 I̲n̲t̲e̲r̲f̲a̲c̲e̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) LTU ̲CHAIN ̲CONF ̲DISP(OLD ̲REC,NEW ̲REC:
LTU ̲LINE ̲REC,
NEW
̲LTU
̲STATUS:
HW ̲STATUS)
LTU ̲LINE ̲REC; HW ̲STATUS, see DBD
b) LTU ̲CHAIN ̲CONF ̲DISP(R0, R1, R2, R6)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲n̲t̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 pointer to NEW ̲REC
R1 pointer to OLD ̲REC
R2 NEW ̲LTU ̲STATUS
R6 link
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
4.2.9.6.12.3 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
a1) T̲y̲p̲e̲ ̲r̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
LTU ̲LINE ̲REC,
HW ̲STATUS (DBD)
a2) D̲a̲t̲a̲ ̲r̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
OLD ̲REC,
NEW ̲REC,
NEW ̲LTU ̲STATUS: I/F
DATA
LTU ̲LINE ̲TABLE: DBD
KEY ̲BUF,
SEND ̲BUF
OPERATOR ̲ONLY ̲PHASE,
SUPERVISOR ̲ONLY ̲PHASE: CFH.VARIOUS
b) E̲x̲t̲e̲r̲n̲a̲l̲
OLD ̲REC.CHAIN ̲STATUS
NEW, REC.CHAIN ̲STATUS (m)
NEW ̲REC.STATUS
NEW ̲REC.TYPE ̲DEV
NEW ̲REC.NO
KEY ̲BUF .KEY (m)
c) L̲o̲c̲a̲l̲
VAR OLD ̲CS, NEW ̲CS: HW ̲STATUS
(DBD)
VAR DIRECTION: CONF ̲CMD (SSC.COMMON)
VAR PROFILE: PROFILE ̲TYPE (SSC.COMMON)
VAR PROFILE ̲REC: PROFILE ̲OUT (CFH.VARIOUS)
VAR FOUND: BOOLEAN
4.2.9.6.12.4 D̲e̲s̲i̲g̲n̲
Flowgram. See fig. 4.2.9.6.12.4-1.
PROCEDURE
LTU ̲CHAIN ̲CONF ̲DISP(OLD ̲REC, NEW ̲REC: LTU ̲LINE ̲REC,
NEW ̲LTU ̲STATUS: HW
̲STATUS)
VAR OLD ̲CS, NEW ̲CS: HW ̲STATUS
DIRECTION: CONF ̲CMD
PROFILE: PROFILE ̲TYPE
FOUND: BOOLEAN
BEGIN
OLD ̲CS = OLD ̲REC. CHAIN ̲STATUS
NEW ̲REC. STATUS EQ IN ̲SERVICE AND
NEW ̲LTU ̲STATUS EQ IN ̲SERVICE ? NEW
̲CS =
IN ̲SERVICE
NEW ̲CS = OUT ̲OF ̲SERVICE
NEW ̲REC. CHAIN ̲STATUS = NEW ̲CS
KEY ̲BUF.KEY = NEW ̲REC. NO
UPDATE ̲ENTRY(LTU ̲LINE ̲TABLE,KEY ̲BUF, ALL ̲MASK,SEND
̲BUF,NEW ̲REC)
NEW ̲CS EQ OLD ̲CS?
NEW ̲CS EQ IN ̲SERVICE? DIRECTION = UP
DIRECTION = DOWN
CONF ̲DISPLAY(DIRECTION, NEW ̲REC.TYPE ̲DEV,
NIL)
DIRECTION EQ DOWN AND
NEW ̲REC. STATUS EQ ERROR OR ?
NEW ̲LTU ̲STATUS EQ ERROR OR
GET ̲PROFILE (NEW ̲REC:TYPE ̲DEV, NEW ̲REC.NO)(PROFILE,PROFILE
̲REC
OPERATOR ̲ONLY ̲PHASE EQ TRUE OR
SUPERVISOR ̲ONLY ̲PHASE EQ TRUE OR
PROFILE ̲REC. CONNECTED EQ FALSE OR
?
FOUND EQ FALSE
NOTIFY ̲LINE ̲COROUTINE(PROFILE,PROFILE
̲REC.NO,LINE ̲ERROR,0)
END ̲LTU ̲CHAIN ̲CONF ̲DISP
Fig. 4.2.9.6.12.4-1
4.2.9.6.13 C̲r̲e̲a̲t̲e̲ ̲L̲T̲U̲
4.2.9.6.13.1 F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲a̲c̲a̲t̲i̲o̲n̲
Assigns a LTU as a TMS "device". Asynchronous
errorreports related to the LTU are sent
to DEVICE ̲SE and are identified via U
̲SDID.
An errorreport is generated, if a hardware
completion code is received during the
creation.
4.2.9.6.13.2 I̲n̲t̲e̲r̲f̲a̲c̲e̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲f̲i̲c̲a̲t̲i̲o̲n̲
a) CREATE ̲LTU(LTU ̲REC ̲D): LTU ̲REC)(CC:
INTEGER)
LTU ̲REC see DBD.OP
b) CREATE ̲LTU(R0, R7, R6)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲n̲t̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 pointer to LTU ̲REC ̲D
R6 link
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R7 CC
4.2.9.6.13.3 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
a1) T̲y̲p̲e̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
LTU ̲REC :DBD
NEW ̲TMS ̲DEVICE :DAMOS.IOS.TMS
a2) D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
LTU ̲REC ̲D,
ASSIGN ̲REC: I/F data
NICS ̲TARE ̲LOCAL ̲LTU ̲PARAMS ̲D,
NICS ̲TARE ̲REMOTE ̲LTU ̲PARAMS ̲D,
SCARS ̲CCIS ̲LTU ̲PARAMS ̲D,
LTU ̲P,
DEVICE ̲SE,
LTU ̲CON (m): SSC.COMMON
TMS ̲ID: DBD
b) E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲
ASSIGN ̲REC.TYPE ̲DEV
ASSIGN ̲REC ̲PARAMS (m)
ASSIGN ̲REC ̲LDN (m)
ASSIGN ̲REC.U ̲SDID. PROFILE ̲TYPE (m)
ASSIGN ̲REC.U ̲SAID.LOGICAL ̲NO (m)
ASSIGN ̲REC. SEC ̲PROF (m)
c) L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲
4.2.9.6.13.4 D̲e̲s̲i̲g̲n̲
Flowgram. See fig. 4.2.9.6.13.4-1
PROCEDURE
CREATE ̲LTU(LTU ̲REC ̲D = LTU ̲REC)(CC: INTEGER)
BEGIN
CASE ASSIGN ̲REC.TYPE ̲DEV OF
NICS ̲TARE ̲LOCAL? ASSIGN ̲REC.PARAMS =
NICS
̲TARE
̲LOCAL
̲LTU
̲PARAMS
̲D
NICS ̲TARE ̲REMOTE? ASSIGN ̲REC.PARAMS =
NICS
̲TARE
̲REMOTE
̲LTU
̲PARAMS
̲D
SCARS ̲CCIS? ASSIGN ̲REC.PARAMS =
SCARS
̲CCIS
̲LTU
̲PARAMS
̲D
END ̲CASE
ASSIGN ̲REC. LDN = LTU ̲ADDRESSES(LTU ̲REC ̲0.NO)
ASSIGN ̲REC. U ̲SDID. PROFILE ̲TYPE = LTU ̲P
ASSIGN ̲REC. U ̲SDID. PROF ̲NO = LTU ̲REC. NO
ASSIGN ̲REC. SEC ̲PROF = O
CASE ASSIGN ̲TMS ̲DEVICE(TMS ̲ID, ASSIGN ̲REC, DEVICE
̲SE)
(LTU ̲CON(LTU ̲REC ̲D.NO),
CC)
ERROR? CASE ANALYZE ̲ERROR(CC, HW, 1)
HW? REPORT ̲ERROR(LTU ̲CC, ASSIGN ̲REC)
END ̲CASE
END ̲CASE
END ̲ASSIGN ̲LTU
Fig. 4.2.9.6.13.4-1
4.2.9.6.14 D̲e̲l̲e̲t̲e̲ ̲L̲T̲U̲
4.2.9.6.14.1 F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
Dismantles a LTU user connection. The
dismantling is signalled to CEMCO by setting.
LTU ̲CON( ) = -1.
4.2.9.6.14.2 I̲n̲t̲e̲r̲f̲a̲c̲e̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) DELETE ̲LTU(LTU ̲NO: 1..MAX ̲LTUS)
b) DELETE ̲LTU(R0, R6)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲n̲t̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 LTU ̲NO
R6 link
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 - R7 dest.
4.2.9.6.14.3 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
a) C̲o̲n̲s̲t̲a̲n̲t̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
MAX ̲LTUS: DBD
a2) D̲a̲t̲a̲ ̲r̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
LTU ̲NO: I/F
data
LTU ̲CONN: SSC.COMMON
b) E̲x̲t̲e̲r̲n̲a̲l̲ ̲d̲a̲t̲a̲
LTU ̲CONN(LTU ̲NO) (m)
c) L̲o̲c̲a̲l̲ ̲d̲a̲t̲a̲
VAR CONN: USER ̲CONNECTION ̲TYPE (SSC.COMMON)
"keep the information of the line
to be dismantle.
VAR CC: INTEGER
used as completion code
4.2.9.6.14.4 D̲e̲s̲i̲g̲n̲
Flowgram. See fig. 4.2.9.6.14.4-1
PROCEDURE
DELETE ̲LTU(LTU ̲NO: 1.. MAX ̲LTUS)
VAR CC: INTEGER
VAR CONN: USER ̲CONNECTION ̲TYPE
BEGIN
CONN = LTU ̲CON(LTU ̲NO)
LTU ̲CON(LTU ̲NO) = -1
CASE DISMANTLE (CONN)(CC)
ERROR? ANALYZE ̲ERROR (CC, 0)
END ̲CASE
END ̲DELETE ̲LTU
Fig. 4.2.9.6.14.4-1
4.2.9.6.15 L̲o̲a̲d̲ ̲L̲T̲U̲ ̲F̲W̲
4.2.9.6.15.1 F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
The procedure copies a LTU firmware file
to a LTU memory.
The LTU is specified by a type
- NICS TARE LOCAL
- NICS TARE REMOTE
- SCARS CCIS
and a part number in the LTUX ̲REC ̲D input
parameter.
4.2.9.6.15.2 I̲n̲t̲e̲r̲f̲a̲c̲e̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) LOAD ̲LTU ̲FW(LTU ̲REC ̲D: LTU ̲REC)(CC:
INTEGER)
LTU ̲REC: DBD
b) LOAD ̲LTU ̲FW(R0, R6, R7)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲n̲t̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 pointer LTU ̲REC ̲D
R6 link
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R7 CC
4.2.9.6.15.3 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
a1) T̲y̲p̲e̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
FDCB ̲INDEX,
FILE ̲ADDRESS;
BUFFER ̲LIST ̲ELEMENT: DAMOS.IOS
LTU ̲REC : DBD
a2) C̲o̲n̲s̲t̲a̲n̲t̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
BNLOCALLOWER : DAMOS.IOS
MIR ̲MOVING,
LTU ̲FW ̲MEM ̲SIZE : DBD
a3) D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
WRK,
LTU ̲CON : SSC
̲COMMON
a4) T̲a̲b̲l̲e̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲ : SSC
̲COMMON
LTU ̲FW ̲NAME ̲LIST : CFH.LOAD
b) E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲
c) L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲
VAR F ̲SPEC: FILE
̲ADDRESS
BLE : BUFFER
̲LIST
̲ELEMENT
ROOT ̲DIR, OWN ̲DIR, FILE ̲OBJ: FDCB
̲INDEX
NO ̲OF ̲XFERS, XFER, F ̲ADDR: INTEGER
4.2.9.6.15.4 D̲e̲s̲i̲g̲n̲
The LOAD ̲LTU ̲FW is described via 2 flowgrams
in figure 4.2.9.6.15.4-1.
PROCEDURE
LOAD ̲LTU ̲FW(LTU ̲REC ̲D: LTU ̲REC)(CC: INTEGER)
VAR ROOT ̲DIR, OWN ̲DIR, FILE ̲OBJ: FDCB ̲INDEX
NO ̲OF ̲XFERS, XFER, F ̲ADDR: INTEGER
BEGIN
GET ̲ROOT ̲MOV(MIR ̲MOVING)(ROOT ̲DIR)
LOOK ̲UP(ROOT ̲DIR, SSC ̲DIR)(OWN ̲DIR)
LOOK ̲UP(OWN ̲DIR, LTU ̲FW ̲NAME ̲LIST(LTU ̲REC ̲D.TYPE
̲DEV)(FILE ̲OBJ)
NO ̲OF ̲XFERS = LTU ̲FW ̲MEM ̲SIZE * 1024/SIZE(WRK)
F ̲ADDR = 0
XFER = 0
LOOP
XFER = XFER + 1
READ ̲FM ̲FILE(WRK, F ̲ADDR, SIZE(WRK), FILE
̲OBJ)(CC)
CC NE 0? EXIT
WRITE ̲TO ̲LTU(WRK, F ̲ADDR, SIZE(WRK), LTU ̲CON(LTU
̲REC ̲D.NO))(CC)
CC NE 0? EXIT
F ̲ADDR = F ̲ADDR + SIZE(WRK)
XFER EQ NO ̲OF ̲XFERS? EXIT
END ̲LOOP
END ̲LOAD ̲LTU ̲FW
Fig. 4.2.9.6.15.4-1 (1 of 2)
PROCEDURE
WRITE ̲TO ̲LTU(MEM ̲ADDR: INTEGER, F ̲ADDR: INTEGER,
F ̲SIZE: INTEGER,
FILE ̲OBJ: FDCB ̲INDEX)(CC: INTEGER)
VAR F ̲SPEC: FILE ̲ADDRESS
BLE: BUFFER ̲LIST ̲ELEMENT
INIT BLE.KIND = BN LOCALLOWER
BLE.LINK = NIL
BEGIN
F ̲SPEC.FIRST ̲BYTE = F ̲ADDR
F ̲SPEC.BYTE ̲COUNT = F ̲SITE
BLE ̲ADDR = MEM ̲ADDR
BLE. SIZE = F ̲SIZE/2
CASE APPEND ̲CONTROL(FILE ̲OBJ, F ̲SPEC, BLE)(F
̲SPEC, CC) OF
ERROR? CASE ANALYZE ̲ERROR(CC, HW, EOF, 2)
EOF,
HW?
END ̲CASE
END ̲CASE
F ̲SPEC. TRANSFERRED ̲BYTES NE BLE. SIZE ?
F ̲SIZE
= F
̲SPEC.TRANSFERRED
̲BYTES
END ̲WRITE ̲TD ̲LTU
Fig. 4.2.9.6.15.4-1 (2 of 2)
4.2.9.6.16 G̲E̲T̲ ̲P̲R̲O̲F̲I̲L̲E̲
4.2.9.6.16.1 F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲ ̲
The procedure searches in the
- terminal table
- device table
- channel table
for a given port of a given type and returns
the
- logical terminal no or
- logical device no or
- logical channel no
and the connected boolean for the profile,
which contains the port.
4.2.9.6.16.2 I̲n̲t̲e̲r̲f̲a̲c̲e̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) GET ̲PROFILE(PORT ̲TYPE:PERIPHERAL ̲TYPE,PORT
̲NO: INTEGER)
(PROFILE:PROFILE ̲TYPE,PROFILE ̲REC:PROFILE
̲OUT,
FOUND:BOOLEAN)
b) GET ̲PROFILE(R0, R1, R2, R3, R4, R6)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲n̲t̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 PORT ̲TYPE (kept)
R1 PORT ̲NO (kept)
R3 pointer to PROFILE ̲REC (kept)
R6 link
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R2 PROFILE
R4 FOUND
R5 - R7 (destr)
4.2.9.6.16.3 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
a1) T̲y̲p̲e̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
PERIPHERAL ̲TYPE :DBD
PROFILE ̲TYPE :SSC.COMMON
PROFILE ̲OUT :CFH.VARIOUS
a2) D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
PORT ̲TYPE,
PORT ̲NO,
PROFILE,
PROFILE ̲REC,
FOUND :I/F
data
TERMINAL ̲TABLE,
DEVICE ̲TABLE,
CHANNEL ̲TABLE :DBD
KEY ̲BUF,
SEND ̲BUF :CFH.VARIOUS
d) E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲
PROFILE (m)
FOUND (m)
PROFILE ̲REC.CONNECTED
KEY ̲BUF.KEY (m)
c) L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲
VAR PORT: PORT ̲ID DBD
CONST CP ̲PORT = 16
"indicates the field PORT ̲ID in CHANNEL
̲PROFILE used for searching in CHANNEL
̲TABLE
CONST CP ̲OUT = 9
"indicates the fields LC ̲NO and CONNECTED
in CHANNEL ̲PROFILE, used for searching
in CHANNEL ̲TABLE
CONST DP ̲PORT = 64
"indicates the field PORT ̲ID in DEVICE
̲PROFILE used for searching in DEVICE
̲TABLE
CONST DP ̲OUT = 33
"indicates the fields LD ̲NO and CONNECTED
in DEVICE ̲PROFILE used for searching
in DEVICE ̲TABLE.
CONST TP ̲PORT = 1024
"indicates the field PORT ̲ID in TERMINAL
̲PROFILE used for searching in TERMINAL
̲TABLE.
CONST TP ̲OUT = 257
"indicates the fields LT ̲NO and BLOCKED
in TERMINAL ̲PROFILE used for searching
in TERMINAL ̲TABLE.
4.2.9.6.16.6 D̲e̲s̲i̲g̲n̲
Flowgram. See 4.2.9.6.16.4-1
PROCEDURE
GET ̲PROFILE(PORT ̲TYPE: PERIPHERAL ̲TYPE,PORT ̲NO:
INTEGER)
(PROFILE:PROFILE ̲TYPE,PROFILE ̲REC:PROFILE
̲OUT,FOUND:BOOLEAN)
VAR PORT: PORT ̲ID
CONST CP ̲PORT = 16, CP ̲OUT = 9
DP ̲PORT = 64, DP ̲OUT = 33
TP ̲PORT = 1024,TP ̲OUT = 257
BEGIN
PORT.NO = PORT ̲NO
PORT.TABLE ̲ID = LTUX ̲LINE ̲TABLE
CASE PORT ̲TYPE OF
VDU? PROFILE = TERMINAL ̲P
PORT.TABLE ̲ID = LTUX ̲LINE ̲TABLE
KEY ̲BUF.KEY = PORT
SEARCH ̲ONE ̲SECONDARY(TERMINAL ̲TABLE,
SEND ̲BUF,KEY ̲BUF,
TP ̲PORT;
TP ̲OUT)(FOUND,PROFILE
̲REC)
PROFILE
̲REC.CONNECTED
= INVERSE
PROFILE
̲REC.CONNECTED
PTR,PTP, OCR, MTP ̲ROP,LTP?
PROFILE = DEVICE ̲P
PORT.TABLE ̲ID = LTUX ̲LINE ̲TABLE
KEY ̲BUF.KEY = PORT
SEARCH ̲ONE ̲SECONDARY(DEVICE ̲TABLE,SEND
̲BUF,KEY ̲BUF,
DP ̲PORT,
DP ̲OUT)(FOUND,PROFILE
̲REC)
OTHER? PROFILE = CHANNEL ̲P
PORT ̲TYPE EQ TRC ̲PTOP? PORT.TABLE
̲ID = LTUX ̲LINE ̲TABLE
PORT.TABLE ̲ID = LTU ̲LINE ̲TABLE
KEY ̲BUF. KEY = PORT
SEARCH ̲ONE ̲SECONDARY(CHANNEL ̲TABLE,
SEND ̲BUF, KEY ̲BUF,
CP ̲PORT,
CP ̲OUT)(FOUND,
PROFILE
̲REC)
END ̲CASE
END ̲GET ̲PROFILE
Fig. 4.2.9.6.16.4-1
4.2.9.6.17 C̲H̲E̲C̲K̲ ̲P̲R̲O̲F̲I̲L̲E̲
4.2.9.6.17.1 F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
The procedure checks, if any of the lines
in the interval:
- first ̲no till first ̲no + no ̲of ̲entries
in a specified table
- either the LTUX ̲LINES ̲table or
- the LTU ̲LINE table
are used in an
- unblocked terminal profile or
- connected device, channel profile.
The return parameter is
true = no lines connected/unblocked
false: at least one line connected/unblocked
4.2.9.6.17.2 I̲n̲t̲e̲r̲f̲a̲c̲e̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) CHECK ̲PROFILE(TABLE: TABLE ̲ID ̲TYPE,
FIRST ̲NO: INTEGER, NO ̲OF ̲ENTRIES:
1..8)
(CHECK ̲OK: BOOLEAN)
b) CHECK ̲PROFILE(R0, R1, R2, R3, R6)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲n̲t̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 TABLE (kept)
R1 FIRST ̲NO (kept)
R2 NO ̲OF ̲ENTRIES (kept)
R6 link
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R3 CHECK ̲OK
R4 - R7 (destr.)
4.2.9.6.17.3 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
a1) T̲y̲p̲e̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
TABLE ̲ID ̲TYPE DBD
a2) D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
TABLE,
FIRST ̲NO,
NO ̲OF ̲ENTRIES,
CHECK ̲OK: I/F data
LTUX ̲LINE ̲TABLE: DBD
KEY ̲BUF,
SEND ̲BUF: CFH.VARIOUS
b) E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲
KEY ̲BUF.KEY
c) L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲
VAR LINE ̲REC ̲X: LTUX
̲LINE
̲REC
(DBD)
use to keep the information of a LTUX
VAR LINE ̲REC ̲U: LTU ̲LINE ̲REC (DBD)
use to keep the information of a LTU
VAR CHAIN ̲STATUS: HW ̲STATUS (DBD)
"indicates the status of a line
VAR LINE ̲TYPE: PERIPHERAL ̲TYPE (DBD)
"indicates the DEV ̲TYPE of a line
VAR I: INTEGER
"use as counter in a loop"
VAR PROFILE: PROFILE ̲TYPE (SSC.COMMON)
VAR PROFILE ̲REC: PROFILE ̲OUT (CFH.VARIOUS)
VAR FOUND: BOOLEAN
4.2.9.6.17.4 D̲e̲s̲i̲g̲n̲
Flowgram. See fig. 4.2.9.6.17.4-1
PROCEDURE CHECK ̲PROFILE(TABLE: TABLE ̲ID ̲TYPE,
FIRST
̲NO:
INTEGER
NO ̲OF
̲ENTRIES:
1..8)(CHECK
̲OK:BOOLEAN)
VAR LINE ̲REC ̲X: LTUX ̲LINE ̲REC
LINE ̲REC ̲J: LTU ̲LINE ̲REC
CHAIN ̲STATUS: HW ̲STATUS
LINE ̲TYPE: PERIPHERAL ̲TYPE
I : INTEGER
PROFILE: PROFILE ̲TYPE
PROFILE ̲REC: PROFILE ̲OUT
FOUND: BOOLEAN
BEGIN
CHECK ̲OK = TRUE
I = FIRST ̲NO - 1
LOOP
I = I + 1
KEY ̲BUF.KEY = I
TABLE EQ LTUX ̲LINE ̲TABLE?
SEARCH ̲ENTRY(TABLE, KEY ̲BUF, ALL ̲MASK, SEND
̲BUF)
(LINE ̲REC ̲U)
SEARCH ̲ENTRY(TABLE,KEY ̲BUF,ALL
̲MASK,SEND ̲BUF)
(LINE
̲REC
̲X)
CHAIN ̲STATUS = LINE ̲REC ̲X.CHAIN
̲STATUS
LINE ̲TYPE = LINE ̲REC ̲X. DEV ̲TYPE
CHAIN ̲STATUS = LINE ̲REC ̲U.CHAIN ̲STATUS
LINE ̲TYPE = LINK ̲REC ̲U. DEV ̲TYPE
CHAIN ̲STATUS NE IN ̲SERVICE?
GET ̲PROFILE(LINE ̲TYPE, I)(PROFILE, PROFILE
̲REC, FOUND)
FOUND EQ TRUE AND
PROFILE ̲REC. CONNECTED = EQ TRUE ?
CHECK
̲OK =
FALSE,
EXIT
I EQ NO ̲OF ̲ENTRIES + FIRST ̲NO? EXIT
END ̲LOOP
END ̲CHECK ̲PROFILE Fig.
4.2.9.6.17.4-1
4.2.9.6.18 M̲O̲U̲N̲T̲ ̲D̲I̲S̲K̲
4.2.9.6.18.1 F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
The procedure mounts a volume(specified
via a volume-name) on either
- the floppy disk or
- the offline disk
4.2.9.6.18.2 I̲n̲t̲e̲r̲f̲a̲c̲e̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) MOUNT ̲DISK(DISK: FLOPPY
̲DISK..OFFLINE
̲DISK,
VOL: VOLUME
̲NAME)(CC:
INTEGER)
b) MOUNT ̲DISK(R0, R1, R6, R7)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲n̲t̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 DISK
R1 printer to VOL
R6 LINK
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0..R6 (destr.)
R7 CC
4.2.9.6.18.3 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
a1) T̲y̲p̲e̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
FLOPPY ̲DISK..OFFLINE ̲DISK :SSC
COMMON
VOLUME ̲NAME
SINGLE ̲VOL :DAMOS.IOS
a2) D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
DISK, VDU (I/F
DATA)
a3) C̲o̲n̲s̲t̲a̲n̲t̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
IN ̲DISK,
IN ̲VOLUME,
WRONG ̲VOLUME ̲NAME,
VOLUME ̲NAME ̲IS ̲USED : DAMOS
b) E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲
c) L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲
VAR FMS: FILE ̲SYSTEM ̲NAME (DAMOS.IOS)
DEVICE: DEVICE ̲NAME (DAMOS.IOS)
4.2.9.6.18.4 D̲e̲s̲i̲g̲n̲
Refer to figure 4.2.9.6.18.4 for a flowgram.
PROCEDURE MOUNT ̲DISK(DISK: FLOPPY ̲DISK..OFFLINE
̲DISK,VOL:VOLUME ̲NAME)
(CC:
INTEGER)
VAR FMS: FILE ̲SYSTEM ̲NAME
DEVICE: DEVICE ̲NAME
BEGIN
GET ̲DISK ̲DATA(DISK)(FMS, DEVICE, NIL)
CASE MOUNT (FMS, DEVICE,VOL,SINGLE ̲VOL) OF
ERROR? CASE ANALYZE ̲ERROR(CC,4,IN ̲DISK,
IN
̲VOLUME
VOLUME
̲NAME
̲IS ̲USED,
WRONG
̲VOLUME
̲NAME)
OF
WRONG ̲VOLUME ̲NAME,
VOLUME ̲NAME ̲ISE ̲USED,
IN ̲DISK, IN ̲VOLUME
?
END ̲CASE
END ̲CASE
END ̲MOUNT ̲DISK
Fig. 4.2.9.6.18.4-1
4.2.9.6.19 D̲I̲S̲M̲O̲U̲N̲T̲ ̲D̲I̲S̲K̲
4.2.9.6.19.1 F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
The procedure dismounts a volume (specified
via a volume-name) on either
- the floppy disk or
- the offline disk
4.2.9.6.19.2 I̲n̲t̲e̲r̲f̲a̲c̲e̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) DISMOUNT ̲DISK(DISK: FLOPPY ̲DISK..OFFLINE
̲DISK,
VOL: VOLUME
̲NAME)(CC: INTEGER)
b) DISMOUNT ̲DISK (R0, R1, R6, R7)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲n̲t̲i̲o̲n̲
C̲A̲L̲L̲ ̲R̲E̲G̲I̲S̲T̲E̲R̲S̲
R0 DISK
R1 printer to VOL
R6 LINK
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0..R6 (destr.)
R7 CC
4.2.9.6.19.3 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
a1) T̲y̲p̲e̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
FLOPPY ̲DISK,OFFLINE ̲DISK: DBD
VOLUME ̲NAME, DAMOS.IOS
a2) D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
DISK, VOL: I/F
DATA
a3) C̲o̲n̲s̲t̲a̲n̲t̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
IN ̲DISK,
IN ̲VOLUME,
NON ̲EXISTING ̲VOLUME :DAMOS
b) E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲
c) L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲
VAR FMS: FILE ̲SYSTEM ̲NAME (DAMOS
̲IOS)
4.2.9.6.19.4 D̲e̲s̲i̲g̲n̲
Refer to figure 4.2.9.6.19.4-1 for a flowgram.
PROCEDURE DISMOUNT ̲DISK(DISK:FLOPPY ̲DISK..OFFLINE
̲DISK,VOL:VOLUME ̲NAME)
VAR FMS: FILE ̲SYSTEM ̲NAME (CC:
INTEGER)
BEGIN
GET ̲DISK ̲DATA (DISK)(FMS, NIL, NIL)
CASE DISMOUNT(FMS, VOL)(CC) OF
ERROR? CASE ANALYZE ̲ERROR(CC,2, IN ̲DISK,
IN ̲VOLUME,NON ̲
EXISTING
̲VOLUME)
OF
NON ̲EXISTING ̲VOLUME,
IN ̲DISK, IN ̲VOLUME?
END ̲CASE
END ̲CASE
END ̲DISMOUNT ̲DISK
Fig. 4.2.9.6.19.4-1
4.2.9.6.20 A̲S̲S̲I̲G̲N̲ ̲D̲I̲S̲K̲
4.2.9.6.20.1 F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
The procedure assigns a
- floppy disk or an
- offline disk
towards FMS ̲MOVING
Asynchronous reports are sent to the DEVICE
̲SE synchronization element.
4.2.9.6.20.2 I̲n̲t̲e̲r̲f̲a̲c̲e̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) ASSIGN ̲DISK(DISK: FLOPPY ̲DISK..OFFLINE
̲DISK)(CC:INTEGER
b) ASSIGN ̲DISK (R0, R6, R7)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲n̲t̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 DISK
R6 LINK
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0..R6 (destr.)
R7 CC
4.2.9.6.20.3 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
a1) T̲y̲p̲e̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
FLOPPY ̲DISK..OFFLINE ̲DISK :DBD
a2) D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
DISK :I/F
DATA
DEVICE ̲SE :SSC.COMMON
a3) C̲o̲n̲s̲t̲a̲n̲t̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
VOLUME ̲MOUNTED :DAMOS
b) E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲
c) L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲
VAR FMS: FILE ̲SYSTEM ̲NAME,
DEVICE: DEVICE ̲NAME,
ATTR: NEW ̲LOGICAL ̲DEVICE DAMOS.IOS
4.2.9.6.20.4 D̲e̲s̲i̲g̲n̲
Refer to figure 4.2.9.6.20.4-1 overleaf
for a flowgram.
PROCEDURE ASSIGN ̲DISK(DISK: FLOPPY ̲DISK ..OFFLINE
̲DISK)(CC:INTEGER)
VAR FMS: FILE ̲SYSTEM ̲NAME
DEVICE: DEVICE ̲NAME
ATTR: NEW ̲LOGICAL ̲DEVICE
BEGIN
GET ̲DISK ̲DATA (DISK)(FMS, DEVICE, ATTR)
CASE ASSIGN ̲DEVICE(FMS, ATTR, DEVICE, DEVICE
̲SE)(CC) OF
ERROR? DISK NE OFFLINE ̲DISK? ANALYZE ̲ERROR(CC,0)
CASE ANALYZE ̲ERROR(CC,1,DEVICE ̲NAME
̲IN ̲USE)OF
DEVICE ̲NAME ̲IN ̲USE?
CASE DEASSIGN(FMS,DEVICE)(CC)
OF
ERROR? CASE ANALYZE
̲ERROR(CC,1,VOLUME ̲MOUNTED)
OF
VOLUME ̲MOUNTED?
END ̲CASE ̲ANALYZE
OK? CASE ASSIGN ̲DEVICE(FMS,ATTR,DEVICE,DEVICE
̲
SE)(CC)OF
ERROR? ANALYZE
̲ERROR(CC,0)
END ̲CASE ̲ASSIGN
END ̲CASE ̲DEASSIGN
END ̲CASE ̲ANALYSE
END ̲CASE ̲ASSIGN
END ̲ASSIGN ̲DISK
Fig. 4.2.9.6.20.4-1
4.2.9.6.21 D̲E̲A̲S̲S̲I̲G̲N̲ ̲D̲I̲S̲K̲
4.2.9.6.21.1 F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
The procedure deassigns (in FMS sense)
- a floppy disk
- an offline disk
- the fixed head and the moving head
mirrored disks.
4.2.9.6.21.2 I̲n̲t̲e̲r̲f̲a̲c̲e̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) DEASSIGN ̲DISK(DISK: OPERATOR ̲DISKS)(CC:
INTEGER)
b) DEASSIGN ̲DISK(R0, R6, R7)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲n̲t̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 DISK
R6 LINK
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲ ̲
R0..R6 (destr.)
R7 CC
4.2.9.6.21.3 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
a1) T̲y̲p̲e̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
OPERATOR ̲DISKS,
MIR1 ̲FIXED,
MIR1 ̲MOVING :DBD
a2) D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
DISK :I/F
DATA
a3) C̲o̲n̲s̲t̲a̲n̲t̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
VOLUME ̲MOUNTED : DAMOS
b) E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲
c) L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲
VAR FMS: FILE ̲SYSTEM ̲NAME
DEVICE: DEVICE ̲NAME
ATTR: NEW ̲LOGICAL ̲DEVICE
CC: INTEGER
4.2.9.6.21.4 D̲e̲s̲i̲g̲n̲
Refer to figure 4.2.9.6.21.4-1 for a flowgram.
PROCEDURE DEASSIGN ̲DISK(DISK: OPERATOR ̲DISKS)(CC
: INTEGER)
VAR FMS: FILE ̲SYSTEM ̲NAME
DEVICE: DEVICE ̲NAME
ATTR: NEW ̲LOGICAL ̲DEVICE
BEGIN
(DISK EQ MIRRORED 1 or
DISK EQ MIRRORED 2) ?
GET ̲DISK ̲DATA(DISK)(FMS, DEVICE, ATTR)
CASE DEASSIGN(FMS, DEVICE)(CC) OF
ERROR? DISK NE OFFLINE ̲DISK? ANALYZE ̲ERRROR(CC,0)
CASE ANALYZE ̲ERROR(CC,1VOLUME ̲MOUNTED)
OF
VOLUME ̲MOUNTED?
END ̲CASE
END ̲CASE
GET ̲DISK ̲DATA(MIR1 ̲FIXED)(FMS,DEVICE,ATTR)
CASE DEASSING(FMS,DEVICE)(CC) OF
ERROR? ANALYZE ̲ERROR(CC,0)
END ̲CASE
GET ̲DISK ̲DATA(MIR1 ̲MOVING)(FMS, DEVICE,
ATTR)
CASE DEASSIGN(FMS, DEVICE)(CC) of
ERROR? ANALYZE ̲ERROR(CC, 0)
END ̲CASE
END ̲DEASSIGN ̲DISK
Fig. 4.2.9.6.21.4-1
4.2.9.6.22 I̲N̲C̲L̲U̲D̲E̲ ̲A̲ ̲M̲I̲R̲R̲O̲R̲E̲D̲ ̲D̲I̲S̲K̲
4.2.9.6.22.1 F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
Takes a
- fixed head and a corresponding
- moving head
mirrored disk into mirrored operation.
4.2.9.6.22.2 I̲n̲t̲e̲r̲f̲a̲c̲e̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) INCLUDE ̲A ̲MIRRORED ̲DISK(DISK: MIRRORED1..MIRRORED2)
(CC:
INTEGER)
b) INCLUDE ̲A ̲MIRRORED ̲DISK(R0, R6, R7)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲n̲t̲i̲o̲n̲
R0 DISK
R6 LINK
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0..R6 (destr.)
R7 CC
4.2.9.6.22.3 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
a1) T̲y̲p̲e̲ ̲r̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
MIRRORED1..MIRRORED2 :DBD
SECTION ̲ADDRESS :DAMOS.IDS
a2) C̲o̲n̲s̲t̲a̲n̲t̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
MAX ̲MIRRORED ̲FIXED ̲SECTORS,
MAX ̲MIRRORED ̲MOVING ̲SECTORS,
FMS ̲MOVING, FMS ̲FIXED,
MIRM, MIRF. : DBD
MIR ̲MOVING ̲ATTR(1..2),
MIR ̲FIXED ̲ATTR(1..2) :SSC.COMMON
a3) D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
DISK, CC :I/F
DATA
b) E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲
c) L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲
VAR SECTOR ̲SPEC: SECTOR ̲ADDRESS (DAMOS)
CI: INTEGER
DISK ̲NO: 1..2
4.2.9.6.22.4 D̲e̲s̲i̲g̲n̲
Refer to the flowgram in figure 4.2.9.6.22.4-1.
PROCEDURE INCLUDE ̲A ̲MIRRORED ̲DISK(DISK:MIRRORED1..MIRRORED2)
(CC:INTEGER)
VAR SECTOR ̲SPEC : SECTOR ̲ADDRESS
CI: INTEGER, DISK ̲NO: 1..2
BEGIN
CASE DISK OF
MIRRORED1? DISK ̲NO = 1
MIRRORED2? DISK ̲NO = 2
END ̲CASE
CC = 0
CASE START ̲DUALISE(FMS ̲MOVING, MIR ̲MOVING ̲ATTR(DISK
̲NO),
MIRM)(CI)
OF
ERROR? ANALYZE ̲ERROR(CI,0)
END ̲CASE
SECTOR ̲SPEC. FIRST ̲SECTOR = 0
SECTOR ̲SPEC. SECTOR ̲COUNT = MAX ̲MIRRORED ̲MOVING
̲SECTORS
CASE DUALISE ̲SECTORS(FMS ̲MOVING,SECTOR ̲SPEC,MIRM)(SECTOR
̲SPEC,CI) OF
ERROR? CASE ANALYZE ̲ERROR(CI, 1, HW) OF
HW? CC = CI
END ̲CASE
END ̲CASE
CASE FINISH ̲DUALISE(FMS ̲MOVING, MIRM)(CI) OF
ERROR? ANALYZE ̲ERROR(CI, 0)
END ̲CASE
CASE ̲START ̲DUALIZE(FMS ̲FIXED,MIR ̲FIXED ̲ATTR(DISK
̲NO),MIRF)(CI) OF
ERROR? ANALYZE ̲ERROR(CI, 0)
END ̲CASE
continues…86…1…02… …02… …02… …02… …02… …02… …02… …02…
…02…
continued
SECTOR ̲SPEC.FIRST ̲SECTOR = 0
SECTOR ̲SPEC.SECTOR ̲COUNT = MAX ̲MIRRORED ̲FIXED
̲SECTORS
CASE DUALIZE ̲SECTORS(FMS ̲FIXED, SECTOR ̲SPEC,
MIRF)(SECTOR ̲SAVE, CI) OF
ERROR? CASE ANALYZE ̲ERROR(CI, 1, HW) OF
HW? CC = CI
END ̲CASE
END ̲CASE
CASE FINISH ̲DUALISE(FMS ̲FIXED, MIRF)(CI) OF
ERROR? ANALYZE ̲ERROR(CI, 0)
END ̲CASE
END ̲INCLUDE ̲A ̲MIRRORED ̲DISK
4.2.9.6.23 E̲X̲C̲L̲U̲D̲E̲ ̲A̲ ̲M̲I̲R̲R̲O̲R̲E̲D̲ ̲D̲I̲S̲K̲
4.2.9.6.23.1 F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
Takes a single
- fixed head and a corresponding
- moving head
mirrored disk out of mirrored service.
4.2.9.6.23.2 I̲n̲t̲e̲r̲f̲a̲c̲e̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) EXCLUDE ̲A ̲MIRRORED ̲DISK(DISK: MIRRORED1..MIRRORED2)
b) EXCLUDE ̲A ̲MIRRORED ̲DISK(R0, R6)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲n̲t̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0: DISK
R6: LINK
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0..R7 (destr)
4.2.9.6.23.3 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
a1) T̲y̲p̲e̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
MIRRORED1..MIRRORED2 DBD
a2) C̲o̲n̲s̲t̲a̲n̲t̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
FMS ̲MOVING,
FMS ̲FIXED,
MIRM,
MIRF DBD
MIR ̲MOVING ̲ATTR,
MIR ̲FIXED ̲ATTR SSC.COMMON
a3) D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
DISK I/F
DATA
b) E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲
c) L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲
VAR DISK ̲NO: 1..2
CI: INTEGER
4.2.9.6.23.4 D̲e̲s̲i̲g̲n̲
Refer to figure 4.2.9.6.23.4-1 overleaf
for a flowgram.
PROCEDURE EXCLUDE ̲A ̲MIRRORED ̲DISK(DISK:MIRRORED1..MIRRORED2)
VAR DISK ̲NO:INTEGER
BEGIN
CASE DISK OF
MIRRORED1? DISK ̲NO = 1
MIRRORED2 DISK ̲NO = 2
END ̲CASE
CASE DISCARD(FMS ̲MOVING,MIRM,MIR ̲MOVING ̲ATTR(DISK
̲NO)(CI)OF
ERROR? ANALYZE ̲ERROR(CC, 0)
END ̲CASE
CASE DISCARD(FMS ̲FIXED, MIRF, MIR ̲FIXED ̲ATTR(DISK
̲NO)(CI)OF
ERROR? ANALYZE ̲ERROR CC, 0)
END CASE
END ̲EXCLUDE ̲A ̲MIRRORED ̲DISK
Fig. 4.2.9.4.23.4-1
4.2.9.6.24 G̲E̲T̲ ̲D̲I̲S̲K̲ ̲D̲A̲T̲A̲
4.2.9.6.24.1 F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲f̲i̲c̲a̲t̲i̲o̲n̲
Determines depending on the disk type:
- the file system name
- the device name
- the attributes to be used during assign
of a disk
4.2.9.6.24.2 I̲n̲t̲e̲r̲f̲a̲c̲e̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) GET ̲DISK ̲DATA(DISK: DISK ̲TYPE)
(FMS: FILE ̲SYSTEM ̲NAME,
DEVICE: DEVICE ̲NAME,
ATTR: NEW ̲LOGICAL ̲DEVICE)
b) GET DISK DATA (R0, R4, R5, R6, R7)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲n̲t̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 DISK
R6 LINK
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R4 pointer to FMS
R5 pointer to DEVICE
R7 pointer to ATTR
4.2.9.6.24.3 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
a1) T̲y̲p̲e̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
FILE ̲SYSTEM ̲NAME,
DEVICE ̲NAME,
NEW ̲LOGICAL ̲DEVICE :DAMOS
̲IOS
DISK ̲TYPE :DBD
a2) C̲o̲n̲s̲t̲a̲n̲t̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
FMS ̲MOVING,
FLOP, OFFL, MIRF, MIRM :DBD
a3) D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
DISK :I/F
DATA
FLOPPY ̲DISK ̲ATTRIBUTES,
OFFLINE ̲DISK ̲ATTRIBUTES,
MIR ̲FIXED ̲ATTRIBUTES(1..2),
MIR ̲MOVING ̲ATTRIBUTES(1..2) :SSC.COMMON
b) E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲
c) L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲
4.2.9.6.24.4 D̲e̲s̲i̲g̲n̲
Refer to the flowgram in figure 4.2.9.6.24.2-1
PROCEDURE GET ̲DISK ̲DATA(DISK: DISK ̲TYPE)(FMS: FILE
̲SYSTEM NAME,
DEVICE:
DEVICE
̲NAME,
ATTR:
NEW
̲LOGICAL
̲DEVICE
BEGIN
CASE DISK ̲OF
FLOPPY ̲DISK? - FMS = FMS
̲MOVING
DEVICE =FLOP
ATTR = FLOPPY
̲DISK
̲ATTRIBUTES
OFFLINE ̲DISK? FMS = FMS
̲MOVING
DEVICE = OFFL
ATTR = OFFLINE
̲DISK
̲ATTRIBUTES
MIR1 - FIXED? FMS = FMS
̲FIXED
DEVICE = MIRF
ATTR = MIR ̲FIXED
̲ATTRIBUTES(1)
MIR1-MOVING? FMS = FMS
̲MOVING
DEVICE = MIRM
ATTR = MIR ̲MOVING ̲ATTRIBUTES(1)
MIR2-FIXED? FMS
= FMS
̲FIXED
DEVICE = MIRF
ATTR = MIR ̲FIXED ̲ATTRIBUTES(2)
MIR2-MOVING? FMS = FMS ̲MOVING
DEVICE = MIRM
ATTR = MIR ̲MOVING ̲ATTRIBUTES(2)
END ̲CASE
END
Fig. 4.2.9.6.24.4-1
4.2.9.6.25 G̲E̲T̲ ̲R̲O̲O̲T̲ ̲M̲O̲V̲
4.2.9.6.25.1 F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
Fetches a FDCB ̲INDEX for the root-directory
on the volume specified from the FMS ̲MOVING
file system.
4.2.9.6.25.2 I̲n̲t̲e̲r̲f̲a̲c̲e̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) GET ̲ROOT ̲MOV(NAME:VOLUME ̲NAME)(DIR:
FDCB ̲INDEX)(CC:INTEGER)
b) GET ̲ROOT ̲MOV(R0, R5, R6, R7)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲n̲t̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 pointer to NAME
R6 LINK
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 - R6 (destr)
R5 DIR
R7 CC
4.2.9.6.25.3 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
a1) T̲y̲p̲e̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
VOLUME ̲NAME,
FDCB ̲INDEX: DAMOS.IOS
a2) D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
NAME, DIR : I/F
DATA
a3) C̲o̲n̲s̲t̲a̲n̲t̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
FMS ̲MOVING : DBD
NON ̲EXISTING ̲VOLUME : DAMOS
b) E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲
c) L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲
4.2.9.6.25.4 D̲e̲s̲i̲g̲n̲
Refer to the flowgrams in figure 4.2.9.6.25.4-1
PROCEDURE
GET ̲ROOT ̲MOV(NAME: VOLUME ̲NAME)(DIR: FDCB ̲INDEX,CC
: INTEGER)
BEGIN
CASE GET ̲ROOT(FMS ̲MOVING, NAME)(DIR, CC) OF
ERROR? ANALYZE ̲ERROR(CC, 1, NON ̲EXISTING ̲VOLUME)
END ̲CASE
END ̲GET ̲ROOT ̲MOV
Fig. 4.2.9.6.25.4-1
4.2.9.6.26 G̲E̲T̲ ̲R̲O̲O̲T̲ ̲F̲I̲X̲
4.2.9.6.26.1 F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
Fetches a FDCB ̲INDEX for the root-directory
on the volume specified from the FMS ̲FIXED
filesystem.
4.2.9.6.26.2 I̲n̲t̲e̲r̲f̲a̲c̲e̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) GET ̲ROOT ̲FIX(NAME: VOLUME ̲NAME)(DIR:
FDCB ̲INDEX)
b) GET ̲ROOT ̲FIX(R0, R6, R7)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲n̲t̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 pointer to NAME
R6 LINK
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0..R6 (destr)
R7 DIR
4.2.9.6.26.3 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
a1) T̲y̲p̲e̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
VOLUME ̲NAME,
FDCB ̲INDEX: :DAMOS.IOS
a2) D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
NAME, DIR: :I/F
DATA
a3) C̲o̲n̲s̲t̲a̲n̲t̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
FMS ̲FIXED :DBD
b) E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲
c) L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲
4.2.9.4.26.4 D̲e̲s̲i̲g̲n̲
Refer to the flowgram in figure 4.2.9.6.26.4-1
PROCEDURE
GET ̲ROOT ̲FIX(NAME: VOLUME ̲NAME)(DIR: FDCB ̲INDEX)
BEGIN
CASE GET ̲ROOT(FMS ̲FIXED, NAME)(DIR, CC) OF
ERROR? ANALYZE ̲ERROR(CC, 0)
END ̲CASE
END ̲GET ̲ROOT ̲FIX
Fig. 4.2.9.6.26.4-1…86…1…02… …02… …02… …02… …02… …02… …02… …02… …02… …02…
4.2.9.6.27 R̲E̲A̲D̲ ̲F̲M̲ ̲F̲I̲L̲E̲
4.2.9.6.27.1 F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
Copies a disk area from an open file to
a contiguous memory area.
The disk area and memory areas are specified
via a
- start address
- size
4.2.9.6.27.2 I̲n̲t̲e̲r̲f̲a̲c̲e̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) READ ̲FM ̲FILE(MEM ̲ADDR: INTEGER,
F ̲ADDR: INTEGER,
F ̲SIZE: INTEGER,
FILE ̲OS): FDCB
̲INDEX)
(CC:INTEGER)
b) READ ̲FM ̲FILE(R0, R1, R2, R3, R6, R7)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲n̲t̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 MEM ̲ADDR
R1 F ̲ADDR
R2 F ̲SIZE
R3 FILE ̲OBJ
R6 LINK
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R2 F ̲SIZE (NO of transferred bytes)
R7 CC
R7..R6 (destr.)
4.2.9.6.27.3 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
a1) T̲y̲p̲e̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
END ̲OF ̲FILE, HW,
FDCB ̲INDEX,
FILE ̲ADDRESS,
BUFFER ̲LIST ̲ELEMENT :DAMOS.IOS
a2) C̲o̲n̲s̲t̲a̲n̲t̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
BNLOCALLOWER :DAMOS.IOS
b) E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲
c) L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲
VAR F ̲SPEC :FILE
̲ADDRESS
BLE :BUFFER
̲LIST
̲ELEMENT
4.2.9.6.27.4 D̲e̲s̲i̲g̲n̲
Refer figure 4.2.9.6.27.4-1
PROCEDURE
READ ̲FM ̲FILE(MEM ̲ADDR: INTEGER, F ̲ADDR:INTEGER,
F ̲SIZE: INTEGER,
FILE
̲OBJ:
FDCB
̲INDEX)(CC:INTEGER)
VAR F ̲SPEC: FILE ̲ADDRESS
VAR BLE: BUFFER ̲LIST ̲ELEMENT
INIT BLE.KIND = BN LOCAL LOWER
BLE.LINK = NIL
BEGIN
F ̲SPEC.FIRST ̲BYTE = F ̲ADDR
F ̲SPEC.BYTE ̲COUNT = F ̲SIZE
BLE.ADDR = MEM ̲ADDR
BLE ̲SIZE = F ̲SPEC. BYTE ̲COUNT/2
CASE READ ̲BYTES(FILE ̲OBJ, F ̲SPEC, BLE)
(F ̲SPEC, CC) OF
ERROR? CASE ANALYZE ̲ERROR(CC, HW, END
̲OF ̲FILE, 2)
HW, END ̲OF ̲FILE?
END ̲CASE
F ̲SPEC. TRANSFERRED ̲BYTES NE BLE. SIZE) AND
CC EQ END ̲OF ̲FILE
?
F ̲SIZE = F ̲SPEC. TRANSFERRED
̲BYTES
END ̲READ ̲FM ̲FILE
Fig. 4.2.9.6.27.4-1
4.2.9.6.28 W̲R̲I̲T̲E̲ ̲T̲O̲ ̲F̲I̲L̲E̲
4.2.9.6.28.1 F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
Copies a contiguous memory area to an
open file.
The memory area is specified via
- a start address
- a size
The disk area is specified via
- a start address
- a size
4.2.9.6.28.2 I̲n̲t̲e̲r̲f̲a̲c̲e̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) WRITE ̲TO ̲FILE(NEW ̲ADDR: INTEGER,
F ̲ADDR: INTEGER,
F ̲SIZE: INTEGER, FILE
̲OBJ: INTEGER)
(CC: INTEGER)
b) WRITE ̲TO ̲FILE(R0, R1, R2, R3, R6,
R7)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲n̲t̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 MEM ̲ADDR
R1 F ̲ADDR
R2 F ̲SIZE
R3 FILE ̲OBJ
F6 LINK
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R7 CC
R0..R6 (destr.)
4.2.9.6.28.3 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
a1) T̲y̲p̲e̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
END ̲OF ̲FILE, HW,
FDCB ̲INDEX,
FILE ̲ADDRESS,
BUFFER ̲LIST ̲ELEMENT :DAMOS.IOS
a2) C̲o̲n̲s̲t̲a̲n̲t̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
BN LOCAL LOWER DAMOS.IOS
b) E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲
c) L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲
VAR F ̲SPEC: FILE ̲ADDRESS
BLE: BUFFER
̲LIST
̲ELEMENT
4.2.9.6.28.4 D̲e̲s̲i̲g̲n̲
Refer the flowgram in figure 4.2.9.6.28.4-1.
PROCEDURE
WRITE ̲TO ̲FILE(MEM ̲ADDR: INTEGER, F ̲ADDR: INTEGER,
F ̲SIZE: INTEGER,
FILE ̲OBJ: FDCB ̲INDEX)(CC:
INTEGER)
VAR F ̲SPEC: FILE ̲ADDRESS
VAR BLE: BUFFER ̲LIST ̲ELEMENT
INIT BLE.KIND = BNLOCALLOWER
BLE.LINK = NIL
BEGIN
F ̲SPEC.FIRST ̲BYTE = F ̲ADDR
F ̲SPEC.BYTE ̲COUNT = F ̲SIZE
BLE. ADDR = MEM ̲ADDR
BLE.SIZE = F ̲SIZE/2
CASE MODIFY ̲BYTES(FILE ̲OBJ, F ̲SPEC, BLE)(F ̲SPEC,
CC) OF
ERROR? CASE ANALYZE ERROR(CC, HW, END ̲OF ̲FILE,
2) OF
HW, END ̲OF ̲FILE?
END ̲CASE
END ̲CASE
F ̲SPEC.TRANSFERRED ̲BYTES NE BLE.SIZE AND ?
CC EQ END ̲OF ̲FILE
F ̲SIZE
= F
̲SPEC.TRANSFERRED
̲BYTES
END ̲WRITE ̲TD ̲FILE
Fig. 4.2.9.6.28.4-1
4.2.9.6.29 L̲O̲O̲K̲ ̲U̲P̲
4.2.9.6.29.1 F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
Looks up a specified file in a specified
directory and returns a FDCB-INDEX of
the file looked up.
4.2.9.6.29.2 I̲n̲t̲e̲r̲f̲a̲c̲e̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) LOOK ̲UP(DIR:FDCB ̲INDEX, FILE: FILE
̲NAME)(CC:INTEGER)
(REF: FDCB ̲INDEX)
b) LOOK ̲UP(R0, R1, R5 R6, R7)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲n̲t̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 DIR
R1 pointer to FILE
R6 LINK
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R5 REF
R7 CC
4.2.9.6.29.3 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
a1) T̲y̲p̲e̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
FDCB ̲INDEX,
FILE ̲NAME: DAMOS.IOS
a2) D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
DIR, FILE, REF I/F DATA
a3) C̲o̲n̲s̲t̲a̲n̲t̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
NON ̲EXISTING ̲NAME :DAMOS
b) E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲
c) L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲
4.2.9.6.29.4 D̲e̲s̲i̲g̲n̲
Refer to the flowgram in figure 4.2.9.6.29.4-1
overleaf
PROCEDURE LOOK ̲UP(DIR: FDCB ̲INDEX, FILE: FILE ̲NAME)
(REF: FDCB ̲INDEX, CC
: INTEGER)
BEGIN
CASE LOOKUP(DIR, FILE)(REF) OF
ERROR? ANALYZE ̲ERROR(CC, 1, NON ̲EXISTING ̲NAME)
END ̲CASE
END
Fig. 4.2.9.6.29.4-1
4.2.9.6.30 D̲I̲S̲ ̲M̲A̲N̲T̲L̲E̲
4.2.9.6.30.1 F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
Dismantles an object/FDCB ̲INDEX.
4.2.9.6.30.2 I̲n̲t̲e̲r̲f̲a̲c̲e̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) DIS ̲MANTLE (REF)
b) DIS ̲MANTLE (R0, R6)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲n̲t̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 REF
R6 LINK
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0..R7 destr.
4.2.9.6.30.3 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
a1) T̲y̲p̲e̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
FDCB ̲INDEX :DAMOS.IOS
a2) D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
REF :I/F
DATA
b) L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲
CC: INTEGER
4.2.9.6.30.4 D̲e̲s̲i̲g̲n̲
Refer the flowgram in figure 4.2.9.6.30.4-1
PROCEDURE DIS ̲MANTLE(REF: FDCB ̲INDEX)
VAR CC = INTEGER
BEGIN
CASE DISMANTLE(REF) OF
ERROR? ANALYZE ̲ERROR(CC, 0)
END ̲CASE
END
Fig. 4.2.9.6.30.4-1
4.2.9.6.31 C̲O̲P̲Y̲ ̲F̲I̲L̲E̲S̲
4.2.9.6.31.1 F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
Copies a number of files(specified in
a file name list) from a specified directory
(FM ̲DIR) to a specified directory (TO
̲DIR).
4.2.9.6.31.2 I̲n̲t̲e̲r̲f̲a̲c̲e̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) COPY ̲FILES(FILE ̲LIST: FILE ̲NAME ̲LIST,
NO ̲OF ̲FILES: INTEGER,
FM ̲DIR: FDCB ̲INDEX,
TO ̲DIR: FDCB ̲INDEX)(COPY
̲INF: COPY ̲INF ̲TYPE)
b) COPY ̲FILES (R0, R1, R2, R3, R6, R7)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲n̲t̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 pointer to FILE ̲LIST
R1 NO ̲OF ̲FILES
R2 FM ̲DIR
R3 TO ̲DIR
R6 LINK
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 - R6 destr.
R7 pointer COPY ̲INF
4.2.9.6.31.3 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
a1) T̲y̲p̲e̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
COPY ̲INF ̲TYPE: CFH.VARIOUS
FILE ̲NAME,
FDCB ̲INDEX,
END ̲OF ̲FILE, HW: DAMOS.IOS
a2) D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
WRK: CFH.VARIOUS
FILE ̲LIST,
NO ̲OF ̲FILES,
FM ̲DIR,
TO ̲DIR: I/F
DATA
b) E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲
c) L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲
VAR I: INTEGER
EOF ̲REACHED: BOOLEAN
F ̲ADDR: INTEGER
F ̲SIZE: INTEGER
4.2.9.6.31.4 D̲e̲s̲i̲g̲n̲
Refer to the flowgram in figure 4.2.9.6.31.4-1
PROCEDURE COPY ̲FILES(FILE ̲LIST: FILE ̲NAME ̲LIST,
NO ̲OF ̲FILES: INTEGER, FM ̲DIR:
FDCB ̲INDEX,
TO ̲DIR: FDCB ̲INDEX)(INF: COPY
̲INF ̲TYPE)
VAR I: INTEGER
EOF ̲REACHED: BOOLEAN
F ̲ADDR: INTEGER
F ̲SIZE: INTEGER
"TYPE FILE ̲NAME ̲LIST = ARRAY (1..NO ̲OF ̲FILES) OF
FILE ̲NAME
BEGIN
I = 0
LOOP
I = I + 1
LOOK ̲UP(FM ̲DIR, FILE ̲LIST(I)(FM ̲FILE,CC
CC NE 0? INF.CC = CC)
INF.FM ̲TO = FM
INF.FILE = FILE ̲LIST (I)
EXIT
LOOK ̲UP(TO ̲DIR, FILE ̲LIST(I))(TO ̲FILE, CC)
CC NE 0? INF.CC = CC
INF.FM ̲TO = TO
INF.FILE = FILE ̲LIST(I)
DISMANTLE (FM ̲FILE)
EXIT
EOF ̲REACHED = FALSE
F ̲ADDR = 0
F ̲SIZE = SIZE (WRK)
LOOP
READ ̲FM ̲FILE(WRK, F ̲ADDR, F ̲SIZE, FM ̲FILE)(F
̲SIZE, CC)
CC EQ HW? EXIT; INF.FM ̲TO = FM
CC EQ END ̲OF ̲FILE? EOF ̲REACHED = TRUE
WRITE ̲TO ̲FILE(WRK, F ̲ADDR, F ̲SIZE, TO
̲FILE)(CC)
CC EQ HW? INF.FM ̲TO = TO EXIT
EOF ̲REACHED EQ TRUE? EXIT
F ̲ADDR = F ̲ADDR + SIZE(WRK)
END ̲LOOP
I EQ NO ̲OF ̲FILES? EXIT
INF.CC
=
CC
INF.FILE
=
FILE
̲LIST(I)
END ̲LOOP ̲I
DIS ̲MANTLE (FM ̲FILE)
DIS ̲MANTLE (TO ̲FILE)
END ̲COPY ̲FILES
Fig. 4.2.9.6.31.4-1
4.2.9.6.32 C̲O̲P̲Y̲ ̲M̲O̲D̲I̲F̲I̲E̲D̲ ̲S̲W̲
4.2.9.6.32.1 F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
The procedure copies
- the boot file (system software) or
- the COPSY and child process load files
(application software) or
- the garble file or
- a patch file
from one disk to another as indicated
in the FROM ̲TO field in the input parameter
SW ̲TO ̲BE ̲LOADED ̲REC. The source directory
(FM ̲DIR) and destination directory (TO
̲DIR) into which the above files are placed
are found. Via the FIND ̲DIR ̲FILES procedure
also the first file to be copied and the
number of files to be copied are determined.
If an error occurs then the
- erronous file
- erronous disk
- CC
is returned.
4.2.9.6.32.2 I̲n̲t̲e̲r̲f̲a̲c̲e̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) COPY ̲MODIFIED ̲SOFTWARE(SW ̲TO ̲BE ̲LOADED
̲REC:SW ̲TO ̲BE ̲LOADED
(COPY ̲INF: MODIFY ̲INF)
b) COPY ̲MODIFIED ̲SOFTWARE (R0, R6, R7)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲n̲t̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 pointer to SW ̲TO ̲BE ̲LOADED ̲REC
R6 link
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 - R6 destr.
R7 printer to COPY ̲INF
4.2.9.6.32.3 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
a1) T̲y̲p̲e̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
FLOPPY ̲DISK, OFFLINE ̲DISK, MIRRORED:
DBD
SW ̲TO ̲BE ̲LOADED
:
SSC.COMMON
FDCB ̲INDEX,
FILE ̲NAMES
:DAMOS.IOS
MODIFY ̲INF, COPY ̲INF ̲TYPE :CFH.VARIOUS
a2) D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
SW ̲TO ̲BE ̲LOADED ̲REC, CC I/F
DATA
READ ̲MASK, KEY ̲BUF,SEND ̲BUF :CFH.VARIOUS
a3) C̲o̲n̲s̲t̲a̲n̲t̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
NON ̲EXISTING ̲TO ̲DIRECTORY,
NON ̲EXISTING ̲PROM ̲DIRECTORY,
NON ̲EXISTING ̲TO ̲VOLUME,
NON ̲EXISTING ̲FROM ̲VOLUME : SSC.COMMON
SYS ̲GEN, MIR ̲MOVING : DBD
NON ̲EXISTING ̲VOLUME : DAMOS
a4) T̲a̲b̲l̲e̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
DISK ̲TABLE
:
DBD
b) E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲
DISK ̲TABLE(FLOPPY ̲DISK).VOLUME
c) L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲
VAR FLOPPY ̲VOL :VOLUME ̲NAME
FM ̲DIR,TO ̲DIR, FM ̲ROOT ̲DIR, TO ̲ROOT
̲DIR: FDCB ̲INDEX
DIR, FIRST ̲FILE: FILE ̲NAME
NO ̲OF ̲FILES: INTEGER
4.2.9.6.32.4 D̲e̲s̲i̲g̲n̲
Refer to figure 4.2.9.6.32.4-1 for a flowgram.
PROCEDURE
COPY ̲MODIFIED ̲SOFTWARE(SW ̲TO ̲BE ̲LOADED ̲REC: SW ̲TO
̲BE ̲LOADED)
(COPY
̲INF:MODIFY
̲INF)
VAR FLOPPY ̲VOL: VOLUME ̲NAME
FM ̲DIR, TO ̲DIR, FM ̲ROOT ̲DIR, TO ̲ROOT ̲DIR:
FDCB ̲INDEX
DIR, FIRST ̲FILE: FILE ̲NAME
NO ̲OF ̲FILES = INTEGER
BEGIN
KEY ̲BUF. KEY = FLOPPY ̲DISK
READ ̲MASK = 4 "VOLUME
SEARCH ̲ENTRY(DISK ̲TABLE,KEY ̲BUF,READ.MASK,
SEND ̲BUF)(FLOPPY ̲VOL)
CASE SW ̲TO ̲BE ̲LOADED ̲REC.FROM ̲TO OF
FLOP ̲OFFL?
GET ̲ROOT ̲MOV(FLOPPY ̲VOL)(FM ̲ROOT ̲DIR)(CC)
CC EQ NON ̲EXISTING ̲VOLUME?
CC=NON ̲EXISTING ̲TO ̲VOLUME
DISMANTLE (FM ̲ROOT ̲DIR)
GET ̲ROOT ̲MOV(SYS ̲GEN)(TO ̲ROOT ̲DIR)(CC)
CC EQ NON ̲EXISTING ̲VOLUME?
CC = NON ̲EXISTING ̲FROM ̲VOLUME
FLOP ̲MIRR?
GET ̲ROOT ̲MOV(FLOPPY ̲VOL)(FM ̲ROOT ̲DIR)(CC)
CC EQ NON ̲EXISTING ̲VOLUME?
CC=NON ̲EXISTING ̲TO
̲VOLUME
DISMANTLE (FM ̲ROOT
̲DIR)
GET ̲ROOT ̲DIR(MIR ̲MOVING)(TO ̲ROOT ̲DIR)(CC)
CC NE 0?
ANALYZE ̲ERROR(CC,0)
OFFL ̲MIRR?
GET ̲ROOT ̲MOV(SYS ̲GEN)(FM ̲ROOT ̲DIR)(CC)
CC EQ NON ̲EXISTING ̲VOLUME?
CC=NON ̲EXISTING ̲TO ̲VOLUME
DISMANTLE (FM ̲ROOT ̲DIR)
GET ̲ROOT ̲MOV(MIR ̲MOVING)(TO ̲ROOT ̲DIR,CC)
CC NE 0 ?
ANALYZE ̲ERROR (CC,0)
continued...…86…1…02… …02… …02… …02… …02… …02… …02… …02… …02…
…02…
continued..
MIRR ̲OFFL?
G̲E̲T̲ ̲R̲O̲O̲T̲ ̲M̲O̲V̲(MIR ̲MOVING)(FM ̲ROOT ̲DIR)(CC)
CC NE 0?
A̲N̲A̲L̲Y̲Z̲E̲ ̲E̲R̲R̲O̲R̲ (CC,0)
G̲E̲T̲ ̲R̲O̲O̲T̲ ̲M̲O̲V̲(SYS ̲GEN)(TO ̲ROOT
̲DIR,CC)
CC EQ NON ̲EXISTING ̲VOLUME?
CC = NON ̲EXISTING
̲FROM ̲VOLUME
MIRR ̲FLOP?
G̲E̲T̲ ̲R̲O̲O̲T̲ ̲M̲O̲V̲(MIR ̲MOVING)(FM ̲ROOT ̲DIR)(CC)
CC NE 0?
ANALYZE ̲ERROR (CC,0)
G̲E̲T̲ ̲R̲O̲O̲T̲ ̲M̲O̲V̲(FLOPPY ̲VOL)(TO ̲ROOT ̲DIR)(CC)
CC EQ NON ̲EXISTING ̲VOLUME?
CC = NON ̲EXISTING ̲FROM ̲VOLUME
END ̲CASE
CC NE 0? COPY ̲INF.CC = CC
F̲I̲N̲D̲ ̲D̲I̲R̲ ̲F̲I̲L̲E̲S̲(SW ̲TO ̲BE ̲LOADED)(DIR, FIRST ̲FILE,
NO ̲OF ̲FILES)
L̲O̲O̲K̲ ̲U̲P̲(FM ̲ROOT ̲DIR, DIR((FM ̲DIR,CC)
DISMANTLE (FM ̲ROOT ̲DIR)
CC NE 0? COPY ̲INF.CC = NON ̲EXISTING ̲FROM ̲DIRECTORY
L̲O̲O̲K̲ ̲U̲P̲(TO ̲ROOT ̲DIR, DIR)(TO ̲DIR,CC)
DISMANTLE (TO ̲ROOT ̲DIR)
CC NE 0? COPY ̲INF.CC = NON ̲EXISTING ̲TO ̲DIRECTORY
DIS ̲MANTLE(FM ̲DIR)
C̲O̲P̲Y̲ ̲F̲I̲L̲E̲S̲(FIRST ̲FILE, NO ̲OF ̲FILES, FM ̲DIR, TO
̲DIR)(COPY ̲INF)
COPY ̲INF.CC NE 0? F̲I̲N̲D̲ ̲E̲R̲R̲O̲R̲ ̲D̲I̲S̲K̲(COPY ̲INF, SW
̲TO ̲BE ̲LOADED)
(COPY
̲INF)
DISMANTLE(FM ̲DIR)
DISMANTLE(TO ̲DIR)
END ̲COPY ̲MODIFIED ̲SOFTWARE
Fig. 4.2.9.6.32.4-1
PROCEDURE
FIND ̲ERROR ̲DISK(COPY ̲INF: COPY ̲INF ̲TYPE, SW ̲REC:
SW ̲TO ̲BE ̲LOADED ̲REC)
(COPY
̲INF:
MODIFY
̲INF)
BEGIN
CASE SW ̲REC.FROM ̲TO OF
FLOP ̲OFFL? COPY ̲INF. FM ̲TO EQ FM?
COPY
̲INF.DISK
= FLOPPY
̲DISK
COPY ̲INF.DISK = OFFLINE ̲DISK
FLOP ̲MIRR? COPY ̲INF.FM ̲TO EQ FM?
COPY
̲INF.DISK
= FLOPPY
̲DISK
COPY ̲INF.DISK = MIRRORED1
OFFL ̲MIRR? COPY ̲INF.FM ̲TO EQ FM?
COPY
̲INF.DISK
= OFFLINE
̲DISK
COPY ̲INF.DISK = MIRRORED1
MIRR ̲OFFL? COPY ̲INF.FM ̲TO EQ FM?
COPY
̲INF.DISK
= MIRRORED1
COPY ̲INF. DISK = OFFLINE ̲DISK
MIRR ̲FLOP? COPY ̲INF.FM ̲TO EQ DM?
COPY
̲INF.
DISK
= MIRRORED1
COPY ̲INF.DISK = FLOPPY ̲DISK
END ̲CASE
END ̲FIND ̲ERROR ̲DISK
4.2.9.6.33 F̲I̲N̲D̲ ̲D̲I̲R̲ ̲F̲I̲L̲E̲S̲
4.2.9.6.33.1 F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
Depending on the type of software to be
loaded, the name of the directory and
the list of file to be loaded are found.
4.2.9.6.33.2 I̲n̲t̲e̲r̲f̲a̲c̲e̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) FIND ̲DIR ̲FILES (SW ̲TO ̲BE ̲LOADED ̲REC:
SW ̲TO ̲BE ̲LOADED)
(DIR: FILE ̲NONE, FIRST
̲FILE: FILE ̲NAME,
NO ̲OF ̲FILES: INTEGER)
b) FIND ̲DIR ̲FILES (R0, R1, R2, R3, R6)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲n̲t̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 pointer to SW ̲TO ̲BE ̲LOADED ̲REC
R link
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0, R4, R5, R7
R1 DIR
R2 FIRST ̲FILE
R3 NO ̲OF ̲FILES
R6 (DESTR)