top - download
⟦c07ebd851⟧ Wang Wps File
Length: 39804 (0x9b7c)
Types: Wang Wps File
Notes: CPS/SDS/028
Names: »2013A «
Derivation
└─⟦6ff65156a⟧ Bits:30006101 8" Wang WCS floppy, CR 0160A
└─ ⟦this⟧ »2013A «
WangText
…05……00……00……00……00…C…02……00……00…C
B…09…B…0d…B…0e…B…0f…7…00…7…01…7…02…7
…1c……00……1c……01……1c……02……1c…
…1c……07……1b……08……1b……09……1b……0b……1b……0c……1b……00……1b……01……1b……86…1 …02… …02… …02…
…02…CPS/SDS/028
…02…850301…02……02…
I/O CONTROL
DETAILED DESIGN SPECIFICATION …02…ISSUE 1…02…CAMPS
4.2.1 F̲o̲r̲m̲a̲t̲ ̲H̲a̲n̲d̲l̲e̲r̲ ̲S̲u̲b̲p̲a̲c̲k̲a̲g̲e̲
The Format Handler Subpackage consist of a set of monitor
procedures called via the System Call Monitor. It performs
input and output to a number of VDU splits via the
VDU handler.
4.2.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̲
4.2.1.1.1 F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲B̲r̲e̲a̲k̲d̲o̲w̲n̲
The Format Handler implements the application use of
VDU formatted splits. The Format Handler is responsible
for the formatting within the split.
The Format Handler is functional divided in five groups:
- Initialization
- Format File Functions
- Format I/O Functions
- Split Control Functions
- Line Group Functions
The functions for each group are described in the following
sections and shown in figure 4.2.1.1.1-1 to 6.
4.2.1.1.1.1 I̲n̲i̲t̲i̲a̲l̲i̲z̲a̲t̲i̲o̲n̲
The overall initialization is performed by initializing
the Format Handler administered, process resident data
area to support up to the defined number of VDU split
interfaces, each with an interface control area, an
area for storage of format tables and a work buffer.
4.2.1.1.1.2 F̲o̲r̲m̲a̲t̲ ̲F̲i̲l̲e̲ ̲F̲u̲n̲c̲t̲i̲o̲n̲s̲
The following functions are performed in this group:
- Load and initialize the split oriented control
data and format tables from the format file
- Accept connection to a split
- Remove connection to a split
4.2.1.1.1.3 F̲o̲r̲m̲a̲t̲ ̲I̲/̲O̲ ̲F̲u̲n̲c̲t̲i̲o̲n̲s̲
The following functions are performed in this group:
- Send the loaded format data file to the specified
split
- Output host and user fields data
- Request user fields data from the specified split
- Save the field data in the application buffer and
the description of the received fields in the application
field descriptor buffer
4.2.1.1.1.4 S̲p̲l̲i̲t̲ ̲C̲o̲n̲t̲r̲o̲l̲ ̲F̲u̲n̲c̲t̲i̲o̲n̲s̲
The following functions are performed in this group:
- set cursor position
- get cursor position
- get cursor group position
- send control ; ring the bell and clear split
- receive control
- enable datakeys
- change field attributes
- build ADAT P3 table
4.2.1.1.1.5 L̲i̲n̲e̲ ̲G̲r̲o̲u̲p̲ ̲F̲u̲n̲c̲t̲i̲o̲n̲s̲
The following functions are performed in this group:
- insert lines
- delete lines
- insert line group
- delete line group
- control of the VDU memory consumption
- update format description.
FIGURE 4.2.1.1.1-1
FUNCTIONAL BREAKDOWN
FIGURE 4.2.1.1.1-2
FUNCTIONAL BREAKDOWN
FIGURE 4.2.1.1.1-3
FUNCTIONAL BREAKDOWN
FIGURE 4.2.1.1.1-4
FUNCTIONAL BREAKDOWN
FIGURE 4.2.1.1.1-5
FUNCTIONAL BREAKDOWN
FIGURE 4.2.1.1.1-6
FUNCTIONAL BREAKDOWN
4.2.1.2 S̲o̲f̲t̲w̲a̲r̲e̲ ̲S̲t̲r̲u̲c̲t̲u̲r̲e̲
The Format Handler consists of a set of monitor procedures,
called from the application via the System Call Monitor,
and is divided in the following five modules:
- Main Entry Module; performing the functions described
in section 4.2.1.1.1.1 including selection of functions.
- Format Initialize Module; performing the functions
described in section 4.2.1.1.1.2.
- Format I/O Module; performing the functions described
in section 4.2.1.1.1.3
- Split Control Module; performing the functions
described in section 4.2.1.1.1.4
- Line Group Module; performing the functions described
in section 4.2.1.1.1.5.
The software structure is shown in figure 4.2.1.2-1.
The four entry points required by the System Call Monitor
are all resident in the Main Entry Module
- Init
- Answer Received
- Complete
- Cancel
In figure 4.2.1.2-2 is shown the hierarchy of functions
(calls) within the Format Handler Subpackage.
The waiting point routines Return Pending and Return
Done are shown as Waiting Point Routines in figure
4.2.1.2-3. They are called from practically all of
function routines.
FIGURE 4.2.1.2-1
SOFTWARE STRUCTURE
FIGURE 4.2.1.2-2
HIERARCHY OF FUNCTIONS (CALLS)
FIGURE 4.2.1.2-3
WAITING POINT ROUTINES
4.2.1.3 D̲a̲t̲a̲ ̲F̲l̲o̲w̲ ̲a̲n̲d̲ ̲C̲o̲n̲t̲r̲o̲l̲ ̲L̲o̲g̲i̲c̲
4.2.1.3.1 O̲v̲e̲r̲v̲i̲e̲w̲
The FORMAT HANDLER transfers data from the applications
buffers to the VDU and receives data from the VDU for
the applications buffer. To control this, it loads
a format file.
For one process the FORMAT HANDLER handles a set of
interfaces, each controlled by an interface control
block (IFCB).
Interfaces are defined by numbers 1 through N. They
work independently of each other except that the format
area definition reserves memory from one common consecutive
section of memory. Figure 4.2.1.3.1-1 presents the
interface concept.
The FORMAT HANDLER is accessed via the SYSTEM CALL
MONITOR as shown in figure 4.2.1.3.1-2.
FIGURE 4.2.1.3.1-1
THE CONCEPT OF INTERFACES
FIGURE 4.2.1.3.1-2
CONTROL AND DATA INTERFACE
The FORMAT HANDLER accesses the I/O system for transfers
of data to/from a terminal (split)
The split is accessed via two connections, one for
data transfer (fields) and one for function key transfer.
Fig. 4.2.1.3.1-3 shows the interface to IOS.
The data transfer connection is used for all transfers
except the reads within the RECIEVE CONTROL, which
are performed on the control connection.…86…1 …02…
…02… …02… …02…
FIGURE 4.2.1.3.1-3
IOS INTERFACE
4.2.1.3.2 I̲n̲t̲e̲r̲n̲a̲l̲ ̲C̲o̲n̲t̲r̲o̲l̲ ̲a̲n̲d̲ ̲D̲a̲t̲a̲ ̲F̲l̲o̲w̲
The four entry points of the FORMAT HANDLER are all
resident in the main module where it is determined
what is to be done. The action can be :
- select function to be performed
- continue already initiated function
- return to requestor, illegal function selected.
A function procedure may be one of two categories :
- function is performed at once
- the function contains one or more waiting
points.
When a function procedure has a waiting point, it returns
in the procedure RETURN PENDING : This procedure saves
the current state and returns to the System Call Monitor.
When ANSWER RECIEVED is entered, the function procedure
is resumed as if return from the RETURN PENDING was
performed.
Fig. 4.2.1.3.2-1 illistrates the approach.
The concept presented is the same for waiting points
where the function is DONE.
FIGURE 4.2.1.3.2-1
FUNCTION PROCEDURE SCHEDULING
4.2.1.4 M̲o̲d̲u̲l̲e̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲s̲
The following software modules are identified in the
Format Handler Subpackage (refer section 4.2.1.2):
- Main Entry Module
- Format Initialize Module
- Format I/O Module
- Split Control Module
- Line Group Module
Each module is described in separate sections.
4.2.1.4.1 M̲a̲i̲n̲ ̲M̲o̲d̲u̲l̲e̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
4.2.1.4.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 main entry module performs the format handler data
initialization and selects the split functions.The
format handler data initialization includes setting
up the format handler header with the number of splits
and with pointers to the split work data area. The
selection of split function is performed by identifying
the system call and activate the proper procedures
in the "work" modules.
4.2.1.4.1.2 M̲o̲d̲u̲l̲e̲ ̲I̲n̲t̲e̲r̲f̲a̲c̲e̲.̲
The Main Entry module interfaces to the System Call
Monitor through the following procedures:
a) I̲O̲C̲ ̲I̲n̲i̲t̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
1) IOC ̲Init
(Function: FH ̲Func,
SOCB : Pointer,
CC : Completion Code)
2) IOC ̲Init (R3, R5, R6)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲r̲s̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R3 Function
R5 Pointer to SOCB
R6 Link
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R3 Exit number
R5 Completion Code
F̲a̲t̲a̲l̲ ̲E̲r̲r̲o̲r̲s̲
CSP ̲Error
b) I̲O̲C̲ ̲A̲n̲s̲w̲e̲r̲ ̲R̲e̲c̲e̲i̲v̲e̲d̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
1) IOC ̲Answer-Received
(Count : Integer,
IOS Operation Ref: Integer,
SOCB : Pointer)
2) IOC ̲Anser ̲Received (R2, R3, R5, R6)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲r̲s̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R3 IOS Operation Ref
R5 Pointer to SOCB
R6 Link
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R2 Done Count
R0,R1,R4,R7 Destroyed
F̲a̲t̲a̲l̲ ̲E̲r̲r̲o̲r̲s̲
CSP ̲Error
FH ̲Stack ̲Error
c) I̲O̲C̲ ̲C̲o̲m̲p̲l̲e̲t̲e̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
1) IOC ̲Complete
(SOCB : Pointer)
2) IOC ̲Complete (R5, R6)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲r̲s̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R5 Pointer to SOCB
R6 Link
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
None
R0-R5, R7 Destroyed
F̲a̲t̲a̲l̲ ̲E̲r̲r̲o̲r̲s̲
CSP ̲Error
FH ̲Stack ̲Error
d) I̲O̲C̲ ̲C̲a̲n̲c̲e̲l̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
1) IOC ̲Cancel
(SOCB : Pointer)
2) IOC ̲Cancel (R5, R6)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲r̲s̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R5 Pointer to SOCB
R6 Link
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
None
R0-R4, R7 Destroyed
F̲a̲t̲a̲l̲ ̲E̲r̲r̲o̲r̲s̲
CSP ̲Error
FH ̲Stack ̲Error
4.2.1.4.1.3 M̲o̲d̲u̲l̲e̲ ̲C̲o̲m̲p̲o̲n̲e̲n̲t̲s̲
a) I̲O̲C̲ ̲I̲n̲i̲t̲
This procedure is the entry point for the format
handler.
The request registers are loaded to the SOCB and
a pointer to the format handler header data is
obtained. Depending on the function specified in
the call the proper procedure is called. If the
function differ from Initformat an operation is
obtained for use throughout the handling of the
request. If the function differ from Initformat
and Define Formatarea a pointer to the actual split
data is obtained. After ended handling of the request
the obtained operation, if any, is returned to
the queue and a ultimate return is made to System
Call Monitor.
b) I̲O̲C̲ ̲A̲n̲s̲w̲e̲r̲ ̲R̲e̲c̲e̲i̲v̲e̲d̲
The procedure is called when an IOS answer has
been received. If all pending IO's for the call
of Return ̲Pending are completed the return is to
the caller of Return ̲Pending else a return is made
to System Call Monitor with no action.
c) I̲O̲C̲ ̲C̲o̲m̲p̲l̲e̲t̲e̲
This procedure is called, when handling of the
request has been completed identified by call of
Return ̲Done, just to load return registers.
d) I̲O̲C̲ ̲C̲a̲n̲c̲e̲l̲
This procedure cancels all outstanding IO requests
in a split.
e) F̲H̲ ̲I̲n̲i̲t̲f̲o̲r̲m̲a̲t̲
This procedure is called by IOC ̲Init and initializes
the format handler data by allocate memory for
the specified number of splits and the number of
operations per split and initializes the format
header. Further an FDCB index is obtained via TMS
by using one of the initialized operations. The
operation is returned to the queue when the FDCB
index is obtained.
f) F̲H̲ ̲D̲e̲f̲i̲n̲e̲ ̲F̲o̲r̲m̲a̲t̲a̲r̲e̲a̲
This procedure is called by IOC ̲Init and builts
up and initalizes format area for the specified
split by allocate memory for table and buffers,
initalizes split header, initializes split control
interface, initializes split format interface and
setup work buffers.
g) G̲e̲t̲ ̲R̲e̲q̲u̲e̲s̲t̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
This procedure is called by IOC ̲Init and loads
the request registers from the context stack into
the SOCB.
h) F̲H̲ ̲P̲o̲i̲n̲t̲ ̲S̲p̲l̲i̲t̲
This procedure is called by IOC ̲Init and sets up
R4 (interface no. identifying a split) as general
pointer to the actual split. If the interface no
is out of range FH ̲Kill ̲Requestor is called.
i) I̲n̲i̲t̲i̲a̲l̲i̲z̲e̲ ̲S̲p̲l̲i̲t̲ ̲C̲o̲n̲t̲r̲o̲l̲ ̲I̲f̲
This procedure is called by FH ̲Defineformat ̲area
and initializes the split control record.
j) I̲n̲i̲t̲i̲a̲l̲i̲z̲e̲ ̲S̲p̲l̲i̲t̲ ̲F̲o̲r̲m̲a̲t̲ ̲I̲f̲
This procedure is called by FH ̲Defineformat ̲area
and initializes the split format state.
4.2.1.4.1.4 M̲a̲i̲n̲ ̲E̲n̲t̲r̲y̲ ̲M̲o̲d̲u̲l̲e̲ ̲D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
The data used by the Main Entry Module are all common
data described in section 4.2.1.5.
4.2.1.4.1.5 M̲a̲i̲n̲ ̲M̲o̲d̲u̲l̲e̲ ̲D̲e̲s̲i̲g̲n̲
Refer source code Main ̲Entry.s
4.2.1.4.2 F̲o̲r̲m̲a̲t̲ ̲I̲n̲i̲t̲i̲a̲l̲i̲z̲e̲ ̲M̲o̲d̲u̲l̲e̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
4.2.1.4.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̲
This module handles the connection/disconnection of
VDU splits. It accepts the connection via TMS for the
specified split. The split can be removed (e.g. for
a redefinition). Further the module load, from the
format file, and initializes the control data and format
table, to be used for the specified split.
4.2.1.4.2.2 M̲o̲d̲u̲l̲e̲ ̲I̲n̲t̲e̲r̲f̲a̲c̲e̲
The Format Initialize Module interfaces to the Main
Entry module through the following procedures:
a) F̲H̲ ̲I̲n̲i̲t̲t̲e̲r̲m̲i̲n̲a̲l̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
1) FH ̲Initterminal
(CC: Completion Code)
2) FH ̲Initterminal (R1, R6)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲r̲s̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R4 Pointer to split (general
pointer not specified
in the call)
R6 Link
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R1 Completion Code
R0, R2, R3,
R5-R7 Destroyed
F̲a̲t̲a̲l̲ ̲E̲r̲r̲o̲r̲s̲
FH ̲Stack ̲Error
FH ̲IOS ̲Retire
b) F̲H̲ ̲R̲e̲m̲o̲v̲e̲t̲e̲r̲m̲i̲n̲a̲l̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
1) FH ̲Removeterminal
(CC: Completion Code)
2) FH ̲Removeterminal (R1, R6)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲r̲s̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R4 Pointer to split (general
pointer not specified
in the call)
R6 Link
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R1 Completion Code
R0,R2,R3,
R5-R7 Destroyed
F̲a̲t̲a̲l̲ ̲E̲r̲r̲o̲r̲s̲
FH ̲Stack ̲Error
FH ̲IOS ̲Retire
c) F̲H̲ ̲G̲e̲t̲f̲o̲r̲m̲a̲t̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
1) FH ̲Getformat
(CC: Completion Code)
2) FH ̲Getformat (R1, R6)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲r̲s̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R4 Pointer to split (general
pointer not specified
in the call)
R6 Link
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R1 Completion Code
R0, R2, R3,
R5-R7 Destroyed
F̲a̲t̲a̲l̲ ̲E̲r̲r̲o̲r̲s̲
FH ̲Stack ̲Error
FH ̲Format ̲Not ̲Found
FH ̲Too ̲Small ̲Table ̲Size
FH ̲VDU ̲Memory ̲Exceeded
d) F̲H̲ ̲S̲e̲t̲ ̲W̲o̲r̲k̲ ̲B̲u̲f̲f̲e̲r̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
1) FH ̲Set ̲Work ̲Buffer
(Buffer Distribution: Work ̲Buffer ̲Distribution)
2) FH ̲Set ̲Work ̲Buffer (R0, R6)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲r̲s̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 Buffer Distribution
R6 Link
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
None
R0-R7 Kept
F̲a̲t̲a̲l̲ ̲E̲r̲r̲o̲r̲s̲
e) F̲H̲ ̲P̲o̲i̲n̲t̲ ̲F̲o̲r̲m̲a̲t̲f̲i̲l̲e̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
1) FH ̲Point ̲Formatfile
(Offset: Long,
Size: Integer,
Byte no.: Integer)
2) FH ̲Point ̲Formatfile (R01, R2, R6)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲r̲s̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R01 Offset in bytes
R2 Size
R6 Link
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R2 Byte no. in Buffer
R0, R1,
R3-R7 Kept
F̲a̲t̲a̲l̲ ̲E̲r̲r̲o̲r̲s̲
4.2.1.4.2.3 M̲o̲d̲u̲l̲e̲ ̲C̲o̲m̲p̲o̲n̲e̲n̲t̲s̲
a) F̲H̲ ̲I̲n̲i̲t̲t̲e̲r̲m̲i̲n̲a̲l̲
This procedure accepts a control and data connection
via TMS for the specified split.
b) F̲H̲ ̲R̲e̲m̲o̲v̲e̲t̲e̲r̲m̲i̲n̲a̲l̲
This procedure removes via TMS the accepted control
and data connections to the specified split.
c) F̲H̲ ̲G̲e̲t̲f̲o̲r̲m̲a̲t̲
This procedure sets up work buffer for format load
and if necessary loads the file containing format
descriptor. Search through the file and points
out the specified format descriptor. When the format
descriptor is found the split ̲format is updated
and the format table is loaded. Then the split
format control blocks are initialized. The VDU
memory consumption is calculated and if exceeded
FH ̲Kill ̲Requestor is called. If the VDU memory
consumption was not exceeded the work buffers are
set for normal use.
d) F̲H̲ ̲S̲e̲t̲ ̲W̲o̲r̲k̲ ̲B̲u̲f̲f̲e̲r̲
This procedure creates work 1 and work 2 buffer
as defined by work buffer distribution.
e) F̲H̲ ̲P̲o̲i̲n̲t̲ ̲F̲o̲r̲m̲a̲t̲f̲i̲l̲e̲
This procedure inspects the content of work 1 buffer.
A load or reload of the file (or part of) containing
format description is performed if no file is loaded,
or the requested offset is less than the offset
for the work 1 buffer, or the requested area (size
of format descriptor) is not available.
f) R̲e̲a̲d̲ ̲F̲o̲r̲m̲a̲t̲ ̲F̲i̲l̲e̲
This procedure reads a format file based on work
1 file address and buffer list element.
4.2.1.4.2.4 M̲o̲d̲u̲l̲e̲ ̲D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
The data used by the Format Initialize Module are all
common data described in section 4.2.1.5
4.2.1.4.2.5 M̲o̲d̲u̲l̲e̲ ̲D̲e̲s̲i̲g̲n̲
Refer source code Format ̲Init.s
4.2.1.4.3 F̲o̲r̲m̲a̲t̲ ̲I̲/̲O̲ ̲M̲o̲d̲u̲l̲e̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
4.2.1.4.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̲
This module performs output of specified formats and
fields output and input.
- The already specified format is transmitted to
the specified split.
- Field data are transfered from the application
buffers to the specified split. Fields are taken
as specified in the field list, assuming that the
fields are sequenced in the field buffer as defined
in the field list.
- Field data are transferred to the application buffers
from the specified split. The contents of the defined
fields is put into the application field buffer
and a matching field list is constructed and put
into the application field list buffer.
4.2.1.4.3.2 M̲o̲d̲u̲l̲e̲ ̲I̲n̲t̲e̲r̲f̲a̲c̲e̲
The Format I/O Module interfaces to the Main Entry
module through the following procedures:
a) F̲H̲ ̲O̲u̲t̲p̲u̲t̲f̲o̲r̲m̲a̲t̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
1) FH ̲Outputformat
(CC: Completion Code)
2) FH ̲Outputformat (R1, R6)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲r̲s̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R4 Pointer to Split (general
pointer not specified in
the call)
R6 Link
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R1 Completion Code
R0, R2, R3, R5-R7 Destroyed
F̲a̲t̲a̲l̲ ̲E̲r̲r̲o̲r̲s̲
FH ̲Stack ̲Error
FH ̲No ̲Format ̲Loaded
b) F̲H̲ ̲F̲i̲e̲l̲d̲s̲o̲u̲t̲p̲u̲t̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
1) FH ̲Fieldsoutput
(High Priority: : Boolean,
Same Split : Boolean,
CC : Completion Code)
2) FH ̲Fieldsoutput (R0, R1, R2, R6)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲r̲s̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 High Priority
R2 Same Split
R4 Pointer to Split (general pointer not
specified in the call)
R6 Link
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R1 Completion Code
R0, R2, R3,
R5-R7 Destroyed
F̲a̲t̲a̲l̲ ̲E̲r̲r̲o̲r̲s̲
FH ̲Stack ̲Error
FH ̲Line ̲Out ̲Range
FH ̲Array ̲Error
c) F̲H̲ ̲F̲i̲e̲l̲d̲s̲i̲n̲p̲u̲t̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
1) FH ̲Fieldsinput
(CC: Completion Code)
2) FH ̲Fieldsinput (R1, R6)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲r̲s̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R4 Pointer to split (general pointer not
specified in the call)
R6 Link
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R1 Completion Code
R0, R2-R7 Destroyed
F̲a̲t̲a̲l̲ ̲E̲r̲r̲o̲r̲s̲
FH ̲Stack ̲Error
FH ̲Access ̲Right ̲Violation
FH ̲Incarnation ̲Out ̲Ranges
FH ̲Array ̲Error
FH ̲Field ̲Out ̲Range
FH ̲Field ̲Not ̲User ̲Field
FH ̲SW ̲Error
4.2.1.4.3.3 M̲o̲d̲u̲l̲e̲ ̲C̲o̲m̲p̲o̲n̲e̲n̲t̲s̲
a) F̲H̲ ̲O̲u̲t̲p̲u̲t̲f̲o̲r̲m̲a̲t̲
This procedure outputs an already specified format
to the specified split by set up work buffers for
format output, lock the VDU reset key, leave format
mode, clear the split and output the format. When
the format is output the first part of the format
is displayed (put first line displayed) and format
mode is entered.
b) F̲H̲ ̲F̲i̲e̲l̲d̲s̲o̲u̲t̲p̲u̲t̲
This procedure outputs fields specified by requestors
field list.
The format state is tested and a check of the read
access to the data contained in the chain of buffer
list element is performed. Then the VDU keyboard
is locked, the inhibit cursor is restored and format
mode is left. The fields are output one by one
by calculating the line incarnation offset, put
first line display if necessary, put cursor position
and verify the IOC header and field size. The data
are (if valid) transferred from work 1 to work
2 buffer and transmitted the the VDU when work
2 buffer is full. If bad data is found in the IOC
header or no more fields are to be output, the
cursor is restored, the keyboard is unlocked, the
memory compressed and format mode entered.
c) F̲H̲ ̲F̲i̲e̲l̲d̲i̲n̲p̲u̲t̲
This procedure reads specified fields from the
split and transfers them to the application defined
buffer.
The format state is tested and the write capability
to the data buffer and field list is checked. The
field parameters are checked by testing the number
of field to be within the number available in the
format. Then the fields are read by first calculate
the maximum used buffer size, which might reduce
the number of fields to receive, and then set the
fileaddress for the receive buffer (work 2) and
set up the input request to the VDU (arm command)
in work 2 buffer. The input request is transmitted
and when data are received the field list is generated.
d) D̲e̲c̲o̲d̲e̲ ̲U̲s̲e̲r̲ ̲F̲i̲e̲l̲d̲ ̲N̲o̲
This procedure is called by FH ̲Fieldsinput and
calculates the line, incarnation and field numbers
for a given user field 1..N (screen numbering of
unprotected fields).
e) P̲o̲i̲n̲t̲ ̲E̲l̲e̲m̲e̲n̲t̲ ̲W̲i̲t̲h̲ ̲U̲s̲e̲r̲ ̲F̲i̲e̲l̲d̲
This procedure is called by Decode ̲User ̲Field ̲No
and is recursive. In a hierarchy of groups the
elements wherein the field no. (user field) is
located are searched. For a given group the procedure
scan all children until a line or group which contains
the given field is located.
After recursive calls the work parameters of all
involved groups will be updated so that they point
in a chain backwards from the group defined by
the returned link to group 0.
f) N̲e̲x̲t̲ ̲B̲l̲e̲ ̲C̲h̲a̲r̲
This procedure is called by FH ̲Fieldsoutput and
obtains the next byte in a chain of buffer list
elements.
4.2.1.4.3.4 M̲o̲d̲u̲l̲e̲ ̲D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
The data used by the Format I/O Module are all common
data described in section 4.2.1.5
4.2.1.4.3.5 M̲o̲d̲u̲l̲e̲ ̲D̲e̲s̲i̲g̲n̲
Refer source code Format ̲IO.s
4.2.1.4.4 S̲p̲l̲i̲t̲ ̲C̲o̲n̲t̲r̲o̲l̲ ̲I̲/̲O̲ ̲M̲o̲d̲u̲l̲e̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
4.2.1.4.4.1 F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
This module performs the split control functions such
as:
a) Change a specified field to a specified video attribute.
b) Request the cursor position for the specified split.
c) Change the cursor position for the specified split.
d) Request the cursor group position for the specified
split.
e) Activate the bell on the VDU or clear the specified
split.
f) Receive split function keys from the specified
split and return to the application keys.
g) Enable the specified split data keys.
h) Return to the application a table describing the
layout of an ADAT-P3 format.
4.2.1.4.4.2 M̲o̲d̲u̲l̲e̲ ̲I̲n̲t̲e̲r̲f̲a̲c̲e̲
The Split Control Module interfaces to the Main Entry
Module through the following procedures:
a) F̲H̲ ̲C̲h̲a̲n̲g̲e̲f̲i̲e̲l̲d̲a̲t̲t̲r̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
1) FH ̲Changefieldattr
(CC: Completion Code)
2) FH ̲Changefieldattr (R1, R6)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲r̲s̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R4 Pointer to Split (general
pointer not specified in
the call)
R6 Link
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R1 Completion Code
R0, R2, R3, R5-R7 Destroyed
F̲a̲t̲a̲l̲ ̲E̲r̲r̲o̲r̲s̲
FH ̲Stack ̲Error
FH ̲Number ̲Out ̲Range
FH ̲Array ̲Error
FH ̲Field ̲Out ̲Range
b) F̲H̲ ̲G̲e̲t̲c̲u̲r̲s̲o̲r̲p̲o̲s̲i̲t̲i̲o̲n̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
1) FH ̲Getcursorposition
CC : Completion Code)
2) FH ̲Getcursorposition (R1, R6)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲r̲s̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R4 Pointer to Split (general pointer not
specified in the call)
R6 Link
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R1 Completion Code
R0, R2, R3,
R5-R7 Destroyed
F̲a̲t̲a̲l̲ ̲E̲r̲r̲o̲r̲s̲
FH ̲Stack ̲Error
FH ̲Array ̲Error
c) F̲H̲ ̲S̲e̲t̲c̲u̲r̲s̲o̲r̲p̲o̲s̲i̲t̲i̲o̲n̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
1) FH ̲Setcursorposition
(CC: Completion Code)
2) FH ̲Setcursorposition (R1, R6)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲r̲s̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R4 Pointer to Split (general pointer not
specified in the call)
R6 Link
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R1 Completion Code
R0, R2, R3,
R5-R7 Destroyed
F̲a̲t̲a̲l̲ ̲E̲r̲r̲o̲r̲s̲
FH ̲Stack ̲Error
FH ̲Array ̲Error
FH ̲Field ̲Out ̲Range
d) F̲H̲ ̲S̲e̲n̲d̲c̲o̲n̲t̲r̲o̲l̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
1) FH ̲Sendcontrol
(CC: Completion Code)
2) FH ̲Sendcontrol (R1, R6)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲r̲s̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R4 Pointer to Split (general pointer not
specified in the call)
R6 Link
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R1 Completion Code
R0, R2, R3,
R5-R7 Destroyed
F̲a̲t̲a̲l̲ ̲E̲r̲r̲o̲r̲s̲
FH ̲Stack ̲Error
FH ̲Unknown ̲Send ̲Control
e) F̲H̲ ̲R̲e̲c̲e̲i̲v̲e̲c̲o̲n̲t̲r̲o̲l̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
1) FH ̲Receivecontrol
(CC: Completion Code)
2) FH ̲Receivecontrol (R1, R6)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲r̲s̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R4 Pointer to Split (general pointer not
specified in the call)
R6 Link
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R1 Completion Code
R0, R2, R3,
R5-R7 Destroyed
F̲a̲t̲a̲l̲ ̲E̲r̲r̲o̲r̲s̲
FH ̲Stack ̲Error
FH ̲FK ̲Req ̲Already ̲Active
FH ̲IOS ̲Retire
f) F̲H̲ ̲E̲n̲a̲b̲l̲e̲d̲a̲t̲a̲k̲e̲y̲s̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
1) FH ̲Enabledatakeys
(CC: Completion Code)
2) FH ̲Enabledatakeys (R1, R6)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲r̲s̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R4 Pointer to Split (general pointer not
specified in the call)
R6 Link
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R1 Completion Code
R0, R2, R3,
R5-R7 Destroyed
F̲a̲t̲a̲l̲ ̲E̲r̲r̲o̲r̲s̲
FH ̲Stack ̲Error
FH ̲Control ̲Out ̲Active
FH ̲IOS ̲Retire
g) F̲H̲ ̲G̲e̲t̲c̲u̲r̲s̲o̲r̲g̲r̲o̲u̲p̲p̲o̲s̲i̲t̲i̲o̲n̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
1) FH ̲Getcursorgroupposition
(CC: Completion Code)
2) FH ̲Getcursorgroupposition (R1, R6)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲r̲s̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R4 Pointer to Split (general pointer not
specified in the call)
R6 Link
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R1 Completion Code
R0, R2, R3,
R5-R7 Destroyed
F̲a̲t̲a̲l̲ ̲E̲r̲r̲o̲r̲s̲
FH ̲Stack ̲Error
FH ̲Array ̲Error
h) F̲H̲ ̲B̲u̲i̲l̲d̲a̲d̲a̲t̲p̲3̲t̲a̲b̲l̲e̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
1) FH ̲Buildadatp3table
(CC: Completion Code)
2) FH ̲Buildadatp3table (R1, R3)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲r̲s̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R4 Pointer to Split (general pointer not
specified in the call)
R6 Link
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R1 Completion Code
R0, R2, R3,
R5-R7 Destroyed
F̲a̲t̲a̲l̲ ̲E̲r̲r̲o̲r̲s̲
FH ̲Stack ̲Error
FH ̲Array ̲Error
FH ̲Bad ̲Format ̲State
4.2.1.4.4.3 M̲o̲d̲u̲l̲e̲ ̲C̲o̲m̲p̲o̲n̲e̲n̲t̲s̲
a) F̲H̲ ̲C̲h̲a̲n̲g̲e̲f̲i̲e̲l̲d̲a̲t̲t̲r̲
This procedure changes a specified field to a specified
video attribute.
The format state is tested and the line incarnation
offset is obtained. Then the page is calculated
and the column and line no. is obtained. The keyboard
is locked, format mode left and the non-video attribute
is output at the end of the field. The VDU codes
for the video attribute are generated and output.
Then the format mode is entered and the keyboard
is unlocked.
b) F̲H̲ ̲G̲e̲t̲c̲u̲r̲s̲o̲r̲p̲o̲s̲i̲t̲i̲o̲n̲
This procedure obtaines the cursor position from
the VDU.
The format state is tested and the cursor position
is requested from the VDU by use of arm command.
The returned screen line number is decoded and
it is checked that the cursor is in a field.
c) F̲H̲ ̲S̲e̲t̲c̲u̲r̲s̲o̲r̲p̲o̲s̲i̲t̲i̲o̲n̲
This procedure sets the cursor in the split to
the first position of field and with the specified
number of lines above by testing the format state,
obtain the line incarnation offset, point out the
line and output the cursor position to the VDU.
d) F̲H̲ ̲S̲e̲n̲d̲c̲o̲n̲t̲r̲o̲l̲
This procedure outputs a bell command to the VDU
or clears the specified split by leaving the format
mode and output a clear split command.
e) F̲H̲ ̲R̲e̲c̲e̲i̲v̲e̲c̲o̲n̲t̲r̲o̲l̲
This procedure awaits function key activation by
issuing a init read and a wait read command.
f) F̲H̲ ̲E̲n̲a̲b̲l̲e̲d̲a̲t̲a̲k̲e̲y̲s̲
This procedure requests the VDU handler to enable
datakeys for this split. (Datakeys are disabled
after depression of a valid function key).
g) F̲H̲ ̲G̲e̲t̲c̲u̲r̲s̲o̲r̲g̲r̲o̲u̲p̲p̲o̲s̲i̲t̲i̲o̲n̲
This procedure returns the group and the incarnation
of the first (lowest) group in the hierarchy of
linegroups where insert-/delete line is allowed.
The format state is tested and the cursor position
is obtained from the VDU. The memory line is pointed
out and the group hierarchy from root to bottom
is scanned. If a non-group mode or a repeated mode
is pointed the search is stopped and the lowest
group, which can be repeated, is returned.
h) F̲H̲ ̲B̲u̲i̲l̲d̲a̲d̲a̲t̲p̲3̲t̲a̲b̲l̲e̲
This procedure builds up a table describing the
layout of the specified Adat-P3 format.
i) D̲e̲c̲o̲d̲e̲ ̲M̲e̲m̲ ̲L̲i̲n̲e̲ ̲P̲o̲s̲
This procedure is called by FH ̲Getcursorposition
and calculates the line and incarnation for a given
memory line 1..N (screen numbering of lines).
j) P̲o̲i̲n̲t̲ ̲E̲l̲e̲m̲e̲n̲t̲ ̲W̲i̲t̲h̲ ̲M̲e̲m̲ ̲L̲i̲n̲e̲
This procedure is called by FH ̲Getcursorgroupposi-
tion and Decode ̲Mem ̲Line ̲Pos and is recursive.
In a hierarchy of groups the elements wherein the
line is located are searched. After recursive call
the work parameters of all involved groups will
be updated so that they point in a chain backwards
from the group defined by the returned link to
group 0.
4.2.1.4.4.4 M̲o̲d̲u̲l̲e̲ ̲D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
The data used by Split Control Module are all common
data described in section 4.2.1.5.
4.2.1.4.4.5 M̲o̲d̲u̲l̲e̲ ̲D̲e̲s̲i̲g̲n̲
Refer source code Split ̲Control.s
4.2.1.4.5 L̲i̲n̲e̲ ̲G̲r̲o̲u̲p̲ ̲M̲o̲d̲u̲l̲e̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
4.2.1.4.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̲
This module performs the insertion and deletion of
lines or linegroups. It is checked that the line or
line group is repeatable. The last incarnation of the
line or linegroup cannot be deleted. Further the modue
performs the control of the VDU memory consumption.
4.2.1.4.5.2 M̲o̲d̲u̲l̲e̲ ̲I̲n̲t̲e̲r̲f̲a̲c̲e̲
The Line Group Module interfaces to the Main Entry
Module through the following procedures:
a) F̲H̲ ̲I̲n̲s̲e̲r̲t̲l̲i̲n̲e̲s̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
1) FH ̲Insertlines
(CC: Completion Code)
2) FH ̲Insertlines (R1, R6)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲r̲s̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R4 Pointer to Split (general pointer not
specified in the call)
R6 Link
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R1 Completion Code
R0, R2, R3,
R5-R7 Destroyed
F̲a̲t̲a̲l̲ ̲E̲r̲r̲o̲r̲s̲
FH ̲Stack ̲Error
FH ̲Array ̲Error
FH ̲Incarnation ̲Out ̲Range
FH ̲Number ̲Out ̲Range
FH ̲Bad ̲Format ̲State
b) F̲H̲ ̲D̲e̲l̲e̲t̲e̲l̲i̲n̲e̲s̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
1) FH ̲Deletelines
(CC: Completion Code)
2) FH ̲Deletelines (R1, R6)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲r̲s̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R4 Pointer to Split (general pointer not
specified in the call)
R6 Link
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R1 Completion Code
R0, R2, R3,
R5-R7 Destroyed
F̲a̲t̲a̲l̲ ̲E̲r̲r̲o̲r̲s̲
FH ̲Stack ̲Error
FH ̲Array ̲Error
FH ̲Incarnation ̲Out ̲Range
FH ̲Number ̲Out ̲Range
FH ̲Bad ̲Format ̲State
c) F̲H̲ ̲I̲n̲s̲e̲r̲t̲l̲i̲n̲e̲g̲r̲o̲u̲p̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
1) FH ̲Insertlinegroup
(CC: Completion Code)
2) FH ̲Insertlinegroup (R1, R6)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲r̲s̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R4 Pointer to Split (general pointer not
specified in the call)
R6 Link
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R1 Completion Code
R0, R2, R3,
R5-R7 Destroyed
F̲a̲t̲a̲l̲ ̲E̲r̲r̲o̲r̲s̲
FH ̲Stack ̲Error
FH ̲Array ̲Error
FH ̲Incarnation ̲Out ̲Range
FH ̲Bad ̲Format ̲State
d) F̲H̲ ̲D̲e̲l̲e̲t̲e̲l̲i̲n̲e̲g̲r̲o̲u̲p̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
1) FH ̲Deletelinegroup
(CC: Completion Code)
2) FH ̲Deletelinegroup (R1, R6)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲r̲s̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R4 Pointer to Split (general pointer not
specified in the call)
R6 Link
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R1 Completion Code
R0, R2-R7 Destroyed
F̲a̲t̲a̲l̲ ̲E̲r̲r̲o̲r̲s̲
FH ̲Stack ̲Error
FH ̲Array ̲Error
FH ̲Incarnation ̲Out ̲Range
FH ̲Bad ̲Format ̲State
e) F̲H̲ ̲M̲e̲m̲o̲r̲y̲ ̲C̲N̲T̲L̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
1) FH ̲Memory CNTL
(Request: Memory ̲Request ̲Type,
CC : Completion Code)
2) FH ̲Memory CNTL (R0, R1, R6)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲r̲s̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 Memory Request Type
R4 Pointer to Split (general pointer not
specified in the call)
R6 Link
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R1 Completion Code
R0, R2, R3,
R5-R7 Destroyed
F̲a̲t̲a̲l̲ ̲E̲r̲r̲o̲r̲s̲
FH ̲Stack ̲Error
FH ̲Array ̲Error
FH ̲Bad ̲Format ̲State
4.2.1.4.5.3 M̲o̲d̲u̲l̲e̲ ̲C̲o̲m̲p̲o̲n̲e̲n̲t̲s̲
a) F̲H̲ ̲I̲n̲s̲e̲r̲t̲l̲i̲n̲e̲s̲
This procedure inserts the specified number of
lines below the given incarnatiuon number. To insert
above incarnation number 1 the incarnation number
must be set to 0. If the format has not been output
the incarnation count for the line is just incremented.
The line is pointed out and checked for repeatability.
Then the memory consumption, the incarnation number
and repetition number is tested and the group size
is updated (number of user fields and number of
physical lines in all group levels).
The cursor is set to the first position of the
specified line and format mode is left. Then the
specified number of lines are inserted and format
mode is entered.
b) F̲H̲ ̲D̲e̲l̲e̲t̲e̲l̲i̲n̲e̲s̲
This procedure deletes the specified number of
lines below the given incarnation number. If the
specified number of lines is 0 or too big all incarnations
below the given are deleted. If the format has
not been output the incarnation count is just decremented.
The line is pointed out and checked for repeatability.
Then the incarnation number and the repetition
number are tested. The VDU memory and the group
size (number of user fields and number of physical
lines in all group levels) are updated. The cursor
is set to the first position of the specified line
and the specified number of lines are deleted.
c) F̲H̲ ̲I̲n̲s̲e̲r̲t̲l̲i̲n̲e̲g̲r̲o̲u̲p̲
This procedure inserts a copy of the linegroup
after the specified incarnation of the linegroup.
The incarnation number 0 means insertion in front
of the already existing incarnation of the linegroup.
The insertion can only be performed if no repetition
has been performed on linegroups containing this
linegroup. If the format has not been output the
incarnation count for the specified linegroup is
just incremented.
The linegroup is pointed out and checked for repeatability.
Then the memory consumption and the incarnation
number are tested and the group size is updated
(number of user fields and number of physical lines
in all group levels). The group incarnation offset,
the final VDU memory line and the page is calculated,
the cursor is set to the calculated position and
format mode is left. The linegroup is inserted,
the VDU memory compressed and format mode entered.
d) F̲H̲ ̲D̲e̲l̲e̲t̲e̲l̲i̲n̲e̲g̲r̲o̲u̲p̲
This procedure deletes the specified incarnation
of a linegroup. The deletion is only allowed if
no repetition has been performed on the linegroup
containing this linegroup. If the format has not
been output the incarnation count is just descremented.
The linegroup is pointed out and checked for repeatability.
The VDU memory and group size (number of user fields
and number of physical lines) are updated. The
group incarnation offset, the final VDU memory
line and the page is calculated, the cursor is
set to the calculated position. The linegroup is
then deleted.
e) F̲H̲ ̲M̲e̲m̲o̲r̲y̲ ̲C̲N̲T̲L̲
This procedure calculates and returns the size
of VDU memory consumption for a line or a group.
Further the size of free VDU memory can be returned.
f) S̲e̲t̲ ̲P̲o̲s̲i̲t̲i̲o̲n̲
This procedure is called by FH ̲Insertlines and
FH ̲Deletelines and positions the cursor on the
first position of the specified line. Further is
paging performed.
The line incarnation offset and paging is calculated.
Then the cursor is positions to the calculated
memory line and column.
g) P̲u̲t̲ ̲I̲n̲s̲e̲r̲t̲ ̲L̲i̲n̲e̲s̲
This procedure is called by FH ̲Insertlines and
FH ̲Insertlinegroup and outputs to the VDU line
insertion codes for the specified number of lines.
h) P̲u̲t̲ ̲D̲e̲l̲e̲t̲e̲ ̲L̲i̲n̲e̲s̲
This procedure is called by FH ̲Deletelines and
FH ̲Deletelinegroup and outputs to the VDU line
deletion codes for the specified number of lines.
The format mode is left before line deletion codes
are outputted. When all lines are deleted format
mode is entered.
i) C̲h̲e̲c̲k̲ ̲L̲i̲n̲e̲ ̲R̲e̲p̲e̲a̲t̲a̲b̲i̲l̲i̲t̲y̲
This procedure is called by FH ̲Insertlines and
FH ̲Deletelines and checks if a line may be repeated.
I.e. that no group above the group in which the
line is contained has been either deleted or repeated.
j) C̲h̲e̲c̲k̲ ̲G̲r̲o̲u̲p̲ ̲R̲e̲p̲e̲a̲t̲a̲b̲i̲l̲i̲t̲y̲
This procedure is called by FH ̲Insertlinegroup,
FH ̲Deletelinegroup and Check ̲Line ̲Repeatability
and checks if a group may be repeated. I.e. if
none of the groups above the group in the hierarchy
has been either deleted or repeated.
k) U̲p̲d̲a̲t̲e̲ ̲G̲r̲o̲u̲p̲ ̲S̲i̲z̲e̲s̲
This procedure is called by FH ̲Insertlines, FH
̲Deletelines, FH ̲Insertlinegroup and FH ̲Deletelinegroup
and updates the group size for all groups by pointing
out the group and calling the Update ̲Group ̲Size
procedure.
l) U̲p̲d̲a̲t̲e̲ ̲G̲r̲o̲u̲p̲ ̲S̲i̲z̲e̲
This procedure is called by Update ̲Group ̲Sizes
and updates the number of user fields and number
of physical links in all group levels.
4.2.1.4.5.4 M̲o̲d̲u̲l̲e̲ ̲D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
The data used by the Line Group Module are all common
data described in section 4.2.1.5.
4.2.1.4.5.5 M̲o̲d̲u̲l̲e̲ ̲D̲e̲s̲i̲g̲n̲
Refer source code Line ̲Group.s