|
|
DataMuseum.dkPresents historical artifacts from the history of: RegneCentralen RC850 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RegneCentralen RC850 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 179840 (0x2be80)
Types: TextFile
Names: »D105«
└─⟦2520239fd⟧ Bits:30005867/disk13.imd Dokumenter (RCSL m.m.)
└─⟦this⟧ »D105«
i
T_A_B_L_E_ _O_F_ _C_O_N_T_E_N_T_S_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _P_A_G_E_
1. INTRODUCTION ................................................... 1
2. THE LOAD MODULE ................................................ 2
3. LOADER ......................................................... 3
3.1 Loader Activation ......................................... 3
3.2 Load Module Processing .................................... 3
3.2.1 User Labels ........................................ 4
3.2.2 Module Header ...................................... 4
3.2.3 Date Label ......................................... 4
3.2.4 Revision Label ..................................... 4
3.2.5 Fp Program Label ................................... 4
3.2.6 Pagefile Label ..................................... 5
3.2.7 Section Header ..................................... 5
3.2.8 Relocatable Code Record ............................ 7
3.2.9 Module Terminus .................................... 8
3.3 Layout of the Job Process Area ............................ 8
3.4 Program Start ............................................. 10
3.5 Error Handling ............................................ 11
4. PAGING SYSTEM .................................................. 12
4.1 Addressing Modes .......................................... 12
4.1.1 Relative Adressing Mode ............................ 13
4.1.2 Resident Addressing Mode ........................... 14
4.1.3 Virtual Addressing Mode ............................ 14
4.1.4 Comment on Indirect Addressing ..................... 15
4.2 Paging System Central Logic ............................... 16
4.3 Paging System Procedures .................................. 18
4.3.1 How to Call a Procedure ............................ 19
4.3.2 Procedure Get Address .............................. 21
4.3.3 Procedure Get Point ................................ 22
4.3.4 Procedure Get Addresses ............................ 23
4.3.5 Procedure Reserve Area ............................. 25
4.3.6 Procedure Release Area ............................. 27
4.3.7 Procedure Extension Claim .......................... 28
4.3.8 Procedure Change Rewrite ........................... 29
4.3.9 Procedure Change Size .............................. 30
4.3.10 Procedure Change Fixed Place ....................... 32
\f
ii
T_A_B_L_E_ _O_F_ _C_O_N_T_E_N_T_S_ _(_c_o_n_t_i_n_u_e_d_)_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _P_A_G_E_
4.3.11 Procedure Write Section ............................ 34
4.3.12 Procedure Lock Section ............................. 35
4.3.13 Procedure Unlock Section ........................... 39
4.3.14 Procedure Create Section ........................... 40
4.3.15 Procedure Define User Procedures ................... 42
4.3.16 Procedure Get Paper Address ........................ 44
4.3.17 Procedure Remove Pagefile .......................... 45
4.4 Statistics ................................................ 46
4.5 Error Handling ............................................ 47
5. PROGRAM TERMINATION ............................................ 50
6. REQUIREMENTS ................................................... 51
A_P_P_E_N_D_I_C_E_S_:
A. REFERENCES ..................................................... 53
B. ERROR MESSAGES FROM LOADER ..................................... 54
C. SEGMENTTABLE ................................................... 57
D. FRAMETABLE ..................................................... 59
E. PAGING SYSTEM VARIABLES ........................................ 61
\f
1_._ _ _ _ _ _ _ _ _I_N_T_R_O_D_U_C_T_I_O_N_ 1.
The RC8000 Loader/Paging System is a system capable of loading
relocatable programs for execution and of assisting the programs
during their execution in maintaining the contents of the job
process area. The system makes it possible to run large programs
in a limited amount of primary memory.
The Loader/Paging System can be used for execution of programs
being load modules produced by the RC8000 Linker - and for execu-
tion of programs residing in a format compatible with that of a
load module.
This manual describes the Loader/Paging System called SYSLDR000.
The manual is primarily directed to users writing their programs
in the Macro Assembly Language, but may also be used to get a
more detailed knowledge of the Loader/Paging System than that
provided in reference manuals for programming languages which may
produce relocatable programs to run under control of the
Loader/Paging System.
\f
2_._ _ _ _ _ _ _ _ _T_H_E_ _L_O_A_D_ _M_O_D_U_L_E_ 2.
A relocatable program to be loaded by the Loader/Paging System is
contained in a backing storage file. The file consists of vari-
able length records defining the code and data of the program to-
gether with relocation information. The file is said to contain a
l_o_a_d_ _m_o_d_u_l_e_.
Usually, a load module has been produced by the RC8000 Linker.
However, a l_i_n_k_ _m_o_d_u_l_e_ (which is normally intended as input modu-
le to the linker) may be used directly as a load module provided
it contains neither external definitions nor external references
and provided it contains information about program start address.
For further information, and for details about the syntax of a
load module as well as the format of its records, see ref. 7.
All code and data of a program is grouped into s_e_c_t_i_o_n_s_, the
grouping being defined in the load module. The Loader/Paging
System named SYSLDR000 allows the following types of sections:
- The r_e_s_i_d_e_n_t_ _s_e_c_t_i_o_n_ contains code and data to be relocated in
the job process.
- The v_i_r_t_u_a_l_ _s_e_c_t_i_o_n_s_ which contain code and data to reside in
a v_i_r_t_u_a_l_ _m_e_m_o_r_y_. Each virtual section will be placed on one
or more segments of a backing storage file and transports be-
tween virtual memory and the job process area are at execution
time handled by the Paging System. Throughout this manual the
term >(virtual) p_a_g_e_> is often used synonymously to virtual
section.
- The i_n_i_t_ _s_e_c_t_i_o_n_ containing code to be executed once at the
beginning of program execution. The section is relocated in
that part of the job process area which is later to be used as
workspace for virtual memory.
For details about the generation of code and data, see descrip-
tions of relevant compilers and assemblers, e.g. ref. 6.
\f
3_._ _ _ _ _ _ _ _ _L_O_A_D_E_R_ 3.
This chapter describes how to activate the Loader-Paging System
in order to load and execute a relocatable program and how the
load module is processed by the Loader. Furthermore, the situa-
tion is described, as it is just before execution of the loaded
program.
3_._1_ _ _ _ _ _ _ _L_o_a_d_e_r_ _A_c_t_i_v_a_t_i_o_n_ 3.1
The Loader/Paging System is a utility program to be loaded by the
File Processor, fp, and then in its turn perform the loading of
the program wanted.
When the name of the backing storage file holding the loadmodule
is used as programname in an fp command, and when the catalog
entry tail of that name contains:
- a contents key of 15 in the left half of word 9, and
- a zero in the right half of the same word,
then fp will load the contents of the backing storage file named
>sysldr000> into the job process area.
The name of the load module is found by the Loader as the program
name in current command in the fp-command stack.
For further details, see ref. 3 and ref. 4.
3_._2_ _ _ _ _ _ _ _L_o_a_d_ _M_o_d_u_l_e_ _P_r_o_c_e_s_s_i_n_g_ 3.2
This section lists the load module records recognized by
SYSLDR000 and describes the processing involved when read by the
loader. The processing of the load module starts at the first
record contained in the load module file.
\f
3_._2_._1_ _ _ _ _ _U_s_e_r_ _L_a_b_e_l_s_ _(_R_e_c_o_r_d_t_y_p_e_ _2_0_-_2_9_)_ 3.2.1
The user label records may be placed anywhere in the load module
and are ignored by the Loader.
3_._2_._2_ _ _ _ _ _M_o_d_u_l_e_ _H_e_a_d_e_r_ _(_R_e_c_o_r_d_t_y_p_e_ _2_)_ 3.2.2
The module name is picked up from the record and stored. During
program execution it may be accessed through the Paging System.
The record may be placed anywhere in the load module. If more
than one record of this type occurs, then the latest record read
will be valid.
3_._2_._3_ _ _ _ _ _D_a_t_e_ _L_a_b_e_l_ _(_R_e_c_o_r_d_t_y_p_e_ _1_0_)_ 3.2.3
The date is picked up from the record and stored. Otherwise as
Module Header.
3_._2_._4_ _ _ _ _ _R_e_v_i_s_i_o_n_ _L_a_b_e_l_ _(_R_e_c_o_r_d_t_y_p_e_ _1_1_)_ 3.2.4
The revision information is picked up from the record and stored.
Otherwise as Module Header.
3_._2_._5_ _ _ _ _ _F_p_ _P_r_o_g_r_a_m_ _L_a_b_e_l_ _(_R_e_c_o_r_d_t_y_p_e_ _1_7_)_ 3.2.5
This record signifies that the program uses the File Processor,
i.e. nothing must be relocated to that area of the job process
which contains the resident part of fp, and buffers for current
input and output as well as the command stack must be preserved.
The record may occur only once in the load module and always
before the records described in the rest of this section.
\f
3_._2_._6_ _ _ _ _ _P_a_g_e_f_i_l_e_ _L_a_b_e_l_ _(_R_e_c_o_r_d_t_y_p_e_ _1_8_)_ 3.2.6
This record signifies that the program uses virtual memory and it
secures that the Paging System is included in the final module.
The pagefile name, i.e. the name of the backing storage area to
hold virtual code and data, is picked up from the module and
stored. If the first word of the name is zero then a workname is
generated and stored as pagefile name. During execution the name
may be accessed through the Paging System.
If the pagefile name is not found in the catalog or if the pro-
cess is not allowed to write in an existing backing storage area
with that name, then a temporary backing storage area is created.
The name is looked up, and the entry tail is stored, available
during execution through the Paging System.
Finally an empty segmenttable is established in the job process
area. The segmenttable is used for describing the contents of the
pagefile (see app. C).
The pagefile record may occur only once in the load module and
always before the records described in the rest of this section.
3_._2_._7_ _ _ _ _ _S_e_c_t_i_o_n_ _H_e_a_d_e_r_ _(_R_e_c_o_r_d_t_y_p_e_ _4_)_ 3.2.7
The relocation information of the load address contained in the
record determines the sectiontype:
The section header for an a_b_s_o_l_u_t_e_ _s_e_c_t_i_o_n_ is ignored.
The section header for r_e_s_i_d_e_n_t_ _s_e_c_t_i_o_n_ is used for setting room
aside in the job process area for resident code and data. The
loadaddress must be equal to zero, meaning that resident section
start equals start of job process area.
\f
The section header for i_n_i_t_ _s_e_c_t_i_o_n_ is used for setting room
aside in the job process area for init code and data. The load
address is irrelevant - the section will be placed somewhere in
the part of the job process area intended as workspace for vir-
tual memory.
A section header for a v_i_r_t_u_a_l_ _s_e_c_t_i_o_n_ defines a virtual page.
Its position in virtual memory is given by the load address,
which must be greater than or equal to zero and divisible by 512
halfwords. Its size, which will be rounded up to the first number
divisible by 512 halfwords (if necessary), implies the number of
(consecutive) backing storage segments transferred to/from memory
when needed during program execution. Any virtual section is thus
placed on an integral number of backing storage segments, and the
virtual sections may be of unequal size - greatest possible size
is 1048064 halfwords corresponding to 2047 backing storage seg-
ments. The processing of a virtual section header involves a pos-
sible extension of the pagefile and the initialization of seg-
menttable entries, one per backing storage segment occupied by
the section.
The rewrite and overlay base information contained in the record
is relevant only for virtual sections. If the rewrite field is 1,
then the section is born as a section which should be rewritten
onto the pagefile whenever the section is removed from the job
process area during execution. If the rewrite field is zero, it
signals to the Paging System that no rewrite is wanted.
If the overlay base is non-zero, then it must be a resident relo-
catable address denoting that the section, which is then called
on overlay section or overlay page, is always to be brought into
the job process area at the same position (i.e. to the area
starting at overlay base) during execution. If an fp-label is
present in the load module, then the overlay base must not be
within the part of resident section containing the File Processor
code and tables. The rewrite information and the overlay base are
stored in the segmenttable, if a non-zero overlay base is present
then a zero rewrite field is stored.
\f
The section name contained in a section header record is not used
by the Loader.
A section header specifying a section of size zero, is ignored.
The loadmodule is allowed to contain at most one resident section
header and at most one init section header, neither of which may
occur after the first virtual section header. The virtual section
headers need not be ordered in ascending loadaddress - the load
module may contain none or, theoretically, an infinite number of
virtual section headers.
3_._2_._8_ _ _ _ _ _R_e_l_o_c_a_t_a_b_l_e_ _C_o_d_e_ _R_e_c_o_r_d_ _(_R_e_c_o_r_d_t_y_p_e_ _1_)_ 3.2.8
A relocatable code record holds the initial contents of a conti-
nous block of words within an address space previously defined by
a section header record. Records containing code for different
sections may be mixed, and the records need not be ordered ascen-
dingly with respect to loadaddress.
Depending on the relocation modifier attached to it, the load-
address contained in the record is the first address of the block
relatively to resident-, init-, or virtual memory start (load-
address '_ 0). Records containing a non-relocatable (i.e. an
absolute) load address are skipped.
The record may contain none (in which case the record is ignored)
or up to 15 loadvalues. Before storing a loadvalue, it is adjus-
ted according to its relocation modifier (not mentioned modifiers
are treated as illegal modifiers):
Loadvalues with >absolute> modifier or >page displacement> modi-
fier are stored directly.
To loadvalues with >resident> modifier are added first address of
resident section.
\f
The leftmost bit is set to 1 in loadvalues with >virtual> modi-
fier thus giving a negative value. However, if the loadvalue ta-
ken as an address in virtual memory is an address within an over-
lay section, and if the loadvalue itself is to be stored within
that same section, then the loadvalue will be converted to an ab-
solute address once and for all in accordance with overlay base
of the section.
If the modifier is >pagetable address> then the loadvalue is ta-
ken as an address in virtual memory and the value stored will
then equal the address of that segmenttable entry describing the
backing storage segment holding the word addressed.
Loadvalues to be relocated in the part of resident section nor-
mally occupied by File Processor code and tables are temporarily
stored somewhere in the part of the job process area intended as
workspace for virtual memory and are moved to their final positi-
on just before execution (unless the load module contains an fp
program label in which case no value can be relocated to the fp
area).
3_._2_._9_ _ _ _ _ _M_o_d_u_l_e_ _T_e_r_m_i_n_u_s_ _(_R_e_c_o_r_d_t_y_p_e_ _3_)_ 3.2.9
This record signifies that the end of the load module has been
reached. The start address, which must be a resident or virtual
address, is picked up from the record and stored. It may later,
e.g. during initcode execution, be accessed through the Paging
System.
The record must be present in the load module.
3_._3_ _ _ _ _ _ _ _L_a_y_o_u_t_ _o_f_ _t_h_e_ _J_o_b_ _P_r_o_c_e_s_s_ _A_r_e_a_ 3.3
Upon loading, and before initcode- and program execution, the job
process area is organized as described in figure 1. The frametab-
le mentioned in the figure is used by the Paging System in the
administration of workspace in virtual memory (see app. D).
\f
M_ first offp code and
job process tables 1536 halfw. size as specified
area RESIDENT in load module
SECTION
SEGMENTTABLE (no. of virtual bs-segments) * 6 halfw.
UNUSED n-(n//(512+6)*(512+6))halfw.
WORKSPACE
FOR VIRTUAL
MEMORY
n halfw. n//(512+6)*(512+6)halfw.
P_ FRAMETABLE
PAGING SYSTEM
CODE AND VARIABLES appr. 3200 halfw.
FP COMMANDSTACK variable size
M_ BUFFER FOR CURRENT 512 halfw.
P_ last of INPUT
job process BUFFER FOR CURRENT 512 halfw.
area OUTPUT
F_i_g_u_r_e_ _1_: Layout of the job process area for a program using both
the File Processor and virtual memory. The init code is
placed somewhere in the area called workspace for vir-
tual memory.
The segmenttable is placed in continuation of resident section,
however, if a program which uses the File Processor does not con-
tain a resident section or contains a resident section of less
than 1536 halfwords (i.e. fp size), then the table is placed in
continuation of fp codes and tables.
If the program uses virtual memory, but has not assigned any ini-
tial code to it (no virtual section header present in the load
module) then the segmenttable will be empty. Still, the frame
table and the Paging System will be included in the final module
and a pagefile will exist.
If the program does not use virtual memory then the Paging\f
System, the segmenttable, and the frametable will not be included
in the final module.
If the program does not use the File Processor then the area for
fp code and tables (i.e. the first part of the job process area),
m_a_y_ have been overwritten by resident code, init code, and/or
segmenttable entries - if virtual memory is used then the frame-
table and the Paging System code and variables will be allocated
to the last part of the process area thus overwriting the fp com-
mandstack and the buffers for current input and output.
For further details, especially concerning the organization of fp
and the fp commandstack, see ref. 3 and ref. 4.
3_._4_ _ _ _ _ _ _ _P_r_o_g_r_a_m_ _S_t_a_r_t_ 3.4
When the program is entered from the Loader, the situation is as
follows:
- Integer and floating point overflow/underflow interrupts are
masked off.
- Full precision of floating point operation is selected.
- If the program uses neither the File Processor nor virtual me-
mory, then the interrupt address is zero. Otherwise, if the
program uses virtual memory then the address is within the Pag-
ing System, or, if the program does not use virtual memory,
then equal to the interrupt address of fp.
- The address of the routine to be entered when exceptions occur,
which during execution cannot be handled by the Paging System,
will equal the interrupt address of fp, if the program uses the
File Processor, or will otherwise be zero.
- The use of the file containing the load module has been termi-
nated. The termination includes current program zone of fp.
- The buffer for current output has been emptied if the program
does not use fp.
If the program contains initcode, then the init section is ente-
red at its first word with working register w1 containing the
absolute address of job process area start (which is also fp
start).
\f
For obvious reasons, the initcode must n_o_t_ refer virtual memory
nor activate any paging system procedure which may cause innova-
tions in workspace for virtual memory.
Return from initcode is performed by executing the first instruc-
tion following the init code. The contents of the working regis-
ters is irrelevant.
The program is entered at its startaddress with the following
contents in the working registers:
w1 : Absolute address of job process area start (which is also fp
start).
w2 : Absolute address of the first item of current command in the
fp commandstack, i.e. absolute address of command stack top
(see ref. 4).
w3 : Absolute address of the item in the command stack which con-
tains the program name (see ref. 4).
3_._5_ _ _ _ _ _ _ _E_r_r_o_r_ _H_a_n_d_l_i_n_g_ 3.5
If an error occurs, during program loading, e.g. if the job pro-
cess area is to small to load the program, if i/o troubles occur,
or if the load module contains spurious information, an errortext
is printed on current output and the fp program termination rou-
tine is entered (with >ok> = no and >warning> = yes) instead of
the program.
If a pagefile has been created using a workname to identify it,
then the file will be removed from the catalog.
Appendix B contains the list of error messages. \f
F_4_._ _ _ _ _ _ _ _ _P_A_G_I_N_G_ _S_Y_S_T_E_M_ 4.
This chapter describes the Paging System, i.e. the tools
available to a program using virtual memory.
The chapter describes the addressing modes for resident and
virtual objects, the central logic of the Paging System as well
as the set of Paging System procedures available to the program.
Finally, collection of statistics and the handling of errors are
described.
Throughout the chapter, the Macro Assembly Language (see ref. 6)
is used, when needed, to support the descriptions.
4_._1_ _ _ _ _ _ _ _A_d_d_r_e_s_s_i_n_g_ _M_o_d_e_s_ 4.1
Programs using virtual memory must be coded according to some
rules which makes it possible for the Paging System to trap
addressing of virtual objects and possibly transfer a virtual
page to the job process area. The addressing modes given in this
section secure that resident and virtual objects may be addressed
uniformly.
First some basic definitions:
The resident memory addresses (RM) are represented by:
the non negative integers,
while the virtual memory addresses (VM) are represented by:
2**23 + the non negative integers.
The virtual addresses may also be expressed:
2**23 + bs segment * 2**9 + relative.
The set of program points (or shortly: p_o_i_n_t_s_), PP, can thus be
defined as:
PP = RM VM
The segmenttable (T) built by the Loader contains one entry per\f
backing storage segment (s) in VM. During execution, the first
word (0) each entry in T is used as follows:
first (absolute) address of s, if s is in
workspace for virtual memory.
T(s,0)=
first virtual address of s, if s is not in
workspace for virtual memory.
0 <_ s <_ number of bs segments in virtual memory - 1
From this definition follows that T(s,0) always contains the vir-
tual address of s, if s belongs to an overlay page (overlay pages
are always loaded into fixed areas outside workspace for virtual
memory).
Finally, regardless of the contents of T(s,0), the following is
valid if s and s+1 belong to the same virtual page:
T(s+1,0)= T(s,0)+ number of halfwords per bs segment.
When addressing code or data within a running program, different
addressing modes may be used: the relative addressing mode, the
resident addressing mode, or the virtual addressing mode.
4_._1_._1_ _ _ _ _ _R_e_l_a_t_i_v_e_ _A_d_d_r_e_s_s_i_n_g_ _M_o_d_e_ 4.1.1
The relative addressing mode is used, when addressing objects
within the same section (resident or virtual). A jump to a label
LAB may be coded:
JL LAB ; GOTO LAB;
or
M_ AM *=LAB-2-. ; GOTO LAB;
P_ JL . ;
depending on, whether the distance to LAB can be held in the
displacement field of the instruction or not.
\f
In the relative addressing mode, the effective address will
always be non-negative, thus never involving the Paging System.
4_._1_._2_ _ _ _ _ _R_e_s_i_d_e_n_t_ _A_d_d_r_e_s_s_i_n_g_ _M_o_d_e_ 4.1.2
The resident addressing mode which uses a program point as effec-
tive address is often used when addressing resident objects, and
it can be used when addressing virtual objects. A jump to a label
LAB may be loaded:
JL *=LAB ; GOTO LAB;
When addressing resident objects, or when virtual objects placed
on an overlay page are addressed from the very same page by refe-
rences relocated by the Loader (see section 3.2.8), then the ef-
fective address will be non-negative, and the Paging System will
not be involved.
Otherwise, when addressing virtual objects, the effective address
will be negative, an interrupt will occur (even if the referenced
page is already in the job process area), and the Paging System
will be entered. The instruction causing the interrupt will be
re-executed, this time with a correct effective address corre-
sponding to the actual position of the page - possibly, or if an
overlay page is referenced, always after loading the referenced
page.
4_._1_._3_ _ _ _ _ _V_i_r_t_u_a_l_ _A_d_d_r_e_s_s_i_n_g_ _M_o_d_e_ 4.1.3
The virtual addressing mode should be used when addressing virtu-
al objects (in particular those placed on non-overlay pages), and
it can be used when addressing resident objects. The addressing
mode may be illustrated by the following sequence of instructi-
ons, executing jump to a label LAB:
AM *=P(LAB) ; GOTO LAB;
AM *0 ;
JL D(LAB) ;
\f
At execution time, the contents of the word holding P(LAB) must
be:
- the (absolute) address of a word containing the (absolute)
address of LAB, if LAB is resident, in which case the instruc-
tion displacement of the instruction (D(LAB)) must be zero.
Or:
- the (absolute) address of a segmenttable entry if LAB is virtu-
al. If LAB belongs to a non-overlay page already in workspace
for virtual memory then the first word of the segmenttable en-
try addressed will contain an (absolute) address, P>(LAB), so
that P>(LAB) + D(LAB) is the (absolute) address of LAB - other-
wise an interrupt will occur (as the address contained in the
segmenttable is negative), and the Paging System will transfer
the section to the job process area, set P>(LAB) properly and
re-execute the instruction causing the interrupt (the third
instruction in above sequence) with a correct effective
address.
The advantage of this addressing mode is that addressing of vir-
tual memory only causes interrupt and Paging System assistance
when the referenced page is not in the job process area. However,
this advantage can not be utilized in connection with objects
reading on overlay pages as segmenttable entries describing an
overlay page always contain negative addresses.
4_._1_._4_ _ _ _ _ _C_o_m_m_e_n_t_ _o_n_ _I_n_d_i_r_e_c_t_ _A_d_d_r_e_s_s_i_n_g_ 4.1.4
Indirect addressing of objects by means of a virtual (i.e. nega-
tive) address for pointing out the indirect address can not be
used as the system will not be able to see whether an interrupt
is caused by the primary address or the indirect one.
\f
For this reason, constructions like:
AM *=LABREF
JL *0
or:
AM *=P(LABREF)
AM *0
JL *D(LABREF)
are n_o_t_ _r_e_c_o_m_m_e_n_d_a_b_l_e_, unless you are certain of the relocation
of the word containing the indirect address.
4_._2_ _ _ _ _ _ _ _P_a_g_i_n_g_ _S_y_s_t_e_m_ _C_e_n_t_r_a_l_ _L_o_g_i_c_ 4.2
As mentioned in section 3.4, the interrupt address of the process
will be within the Paging System, meaning that any internal in-
terrupt will be trapped by this system.
Interrupts which are neither caused by virtual memory addressing
nor by Paging System procedure calls (section 4.3), are handed
over to the interrupt routine of the program (see section 4.5) -
this includes interrupts caused by execution of an illegal in-
struction thus allowing for utilization of the File Processor
testoutput facility (see ref. 4).
When an interrupt is caused by virtual memory addressing (i.e.
when the execution of an instruction causes instruction violation
due to the use of a negative effective address), then the Paging
System will load all the segments of the relevant page into con-
secutive locations within the job process area, (unless the page
is a non-overlay page already present in workspace for virtual
memory), calculate a correct (i.e. non-negative) address, and re-
execute the interrupt-causing instruction with the calculated
address as effective address using return-escape facility for
skipping address calculation at re-execution (see ref. 1).
\f
If the interrupt is caused by the execution of an instruction be-
longing to a non-overlay page, then it is guaranteed that the
page in question will not be removed from workspace for virtual
memory during the servicing of the interrupt. However, the page
may be moved to another position in the workspace in order to
make room for the one to be loaded - if the page is moved, then
the instruction counter, ic, will be adjusted before the re-exe-
cution of the interrupt-causing instruction, according to the new
position of the page. This means that subroutine jumps may be
coded without knowledge of where the subroutine is actually plac-
ed.
The workspace for virtual memory is regarded as an integral num-
ber of 512 halfword frames - each frame able to hold one backing
storage segment from virtual memory, and each frame described by
an entry in the frametable.
A search for room in workspace for virtual memory is performed as
a search in the frametable. A Paging System variable, >victim>,
points to the frametable entry where to start the search - when a
(non-overlay) page has been loaded, then this variable is set to
point to the frame following the one holding the last segment of
the page loaded.
The search is performed cyclically - if the entire workspace has
been searched unsuccessfully, i.e. if it does not contain a ne-
cessary number of consecutive frames being empty and/or only hol-
ding pages which are neither locked (section 4.3.12) nor contai-
ning the interrupt-causing instruction, then the following is
performed:
The workspace for virtual memory is searched from its low end for
an area of consecutive frames placed between two pages which are
as well non-removable as non-moveable (see below) to find an area
which can room as well the page to be loaded as those pages which
are present in the area and which must not be removed from work-
space for virtual memory but which may be moved to another posi-
tion. The limits of the workspace serve in this context as non-
(re)moveable pages.
\f
If a suitable area is found, then the moveable pages contained in
it are pushed together towards the low end of workspace, to the
extent necessary for making room for the page to be loaded.
Pages which can neither be removed from virtual memory nor can be
moved to another place are:
- pages hardlocked by procedure Lock Section (section 4.3.12), and
- fixed place pages (section 4.3.10) (hard- or soft)locked also
by procedure Lock Section, and
- a fixed place page containing the interrupt-causing instruction.
The loading of a fixed place page (see section 4.3.10) does not
involve the above described search for room - if the frames in-
tended to hold the page contains pages which must not be removed
from workspace for virtual memory, but which may be moved to a-
nother place, then the Paging System will attempt to make room
for the page to be loaded by pushing the other pages away from
the frames in question (towards one or either end of the work-
space) - the pushing will not be able to cross a non-moveable
page.
The loading of overlay pages always takes place into fixed
addresses and will cause no changes in the frametable.
The removal of a page from virtual memory may involve the rewri-
ting of it onto the pagefile. Overlay pages are never rewritten
automatically.
If a page cannot be loaded, then the Paging System will assume
that workspace for virtual memory does not contain sufficient
room, and the reaction will be as described in section 4.5.
4_._3_ _ _ _ _ _ _ _P_a_g_i_n_g_ _S_y_s_t_e_m_ _P_r_o_c_e_d_u_r_e_s_ 4.3
The Paging System contains a set of procedures available to the
program during execution.
\f
The procedures include facilities for explicit page demanding,
space reservation for private use in workspace for virtual memory,
page creation, control of page rewriting, pagesize alteration,
page allocation to fixed places in workspace for virtual memory
and page locking, statistics- and interrupt procedure definition,
and pagefile removal.
4_._3_._1_ _ _ _ _ _H_o_w_ _t_o_ _C_a_l_l_ _a_ _P_r_o_c_e_d_u_r_e_ 4.3.1
Having loaded the working registers with appropriate information,
a procedure is entered by executing an illegal instruction with
the following format:
0 5 6 7 8 9 10 11 12 23
1 1 0 0 1 1 0 0 0 1 0 0 P
The displacement of the instruction, P, is the two>s complement
of the procedure number to be entered. The instruction, when exe-
cuted, will cause an interrupt, the interrupt will be trapped by
the Paging System, and the procedure wanted will be executed.
An instruction, intended for calling procedure number one, may be
written as follows in the Macro Assembly Language:
KS *-1
Return from a procedure takes place to the instruction following
the interrupt-causing instruction.
The following example shows the notation used for defining the
call of a procedure:
change fixed place (point, fixed place, result)
w0 : result(return)
w1 : point(call)
w2 : fixed place(call)
procno: 15
\f
The procedure change fixed place, procedure number 15, is called
with working register w1 containing a point (resident or virtual
memory address) and w2 containing another parameter for the pro-
cedure. Upon return from the procedure, register w0 contains a
result while the other registers are unchanged.
The examples in the rest of this chapter use the macros defined
in SYSMACLIB (see ref. 6) for Paging System procedure calls.
\f
4_._3_._2_ _ _ _ _ _P_r_o_c_e_d_u_r_e_ _G_e_t_ _A_d_d_r_e_s_s_ 4.3.2
C_a_l_l_:
One of four procedures may be selected depending on which working
register is wanted for call and return information:
get address(point, address)
w0 : / w1 : / w2 : / w3 : point(call), address(return)
procno:1/ procno:2 / procno:3 / procno: 4
F_u_n_c_t_i_o_n_:
The procedure computes the (absolute) address of the point. For
non-negative points, the address returned equals the point.
The procedure may cause innovations in workspace for virtual
memory. However, a non-overlay page calling the procedure will
remain in memory, but way at return time have been moved to
another position.
A point specifying the (negative) address of an overlay object
will always cause a page to be loaded.
E_x_a_m_p_l_e_:
; COMMENT: W2 = PROGRAM POINT;
SH W2, -1 ; IF W2 VIRTUAL
GETADDR W2 ; THEN W2:= ABS ADDR(W2);
; COMMENT: W0, W1, W3 UNCHANGED.
(see also section 4.3.4)
\f
4_._3_._3_ _ _ _ _ _P_r_o_c_e_d_u_r_e_ _G_e_t_ _P_o_i_n_t_ 4.3.3
C_a_l_l_:
One of four procedures may be selected depending on which working
register is wanted for call and return information:
get point(address, point)
w0: /w1 : / w2 : / w3 : address(call), point (return)
procno:5 / procno:6 / procno:7 / procno: 8
F_u_n_c_t_i_o_n_:
Computes the point corresponding to the address. If the address
refers to a location within workspace for virtual memory contai-
ning a word from a page, then the point corresponding to the vir-
tual address of that word is returned. Otherwise the address is
returned.
E_x_a_m_p_l_e_:
Subroutine which may cause innovations in workspace for virtual
memory:
SUBR: GETPOINT W3
RS W3, X2+RETURN
.
.
.
JL *X2+RETURN
A call of the subroutine may be coded:
JL W3, *=SUBR\f
4_._3_._4_ _ _ _ _ _P_r_o_c_e_d_u_r_e_ _G_e_t_ _A_d_d_r_e_s_s_e_s_ 4.3.4
C_a_l_l_:
get addresses (tableaddress, result)
w0 : result (return)
w1 : tableaddress (call)
procno: 9
tableaddress: First (absolute) address of a table containing con-
secutive entries holding parameters to the proce-
dure, each entry consisting of two words:
+0: point (call)
+2: address (return)
The last table entry must be followed by a word
containing -1. If the table is empty, then table-
address points to this word.
F_u_n_c_t_i_o_n_:
The procedure will perform the same, as if procedure Get Address
(procno 1, 2, 3, or 4) were called a number of times, one per en-
try in the table.
The procedure may cause innovations in workspace for virtual me-
mory. However, a non-overlay page calling the procedure will re-
main in memory, but may at return time have been moved to another
position. This also counts for that page holding the parameter
table if the table is situated in workspace for virtual memory at
call time.
The procedure does not check whether the table contains points
belonging to different overlay pages with overlapping overlay
base, nor is checked, if the parameter table might be over-
written by the loading of an overlay page if the table itself
belongs to a such page.
\f
Result 0: All addresses calculated - it is guaranteed that all
pages involved are present in the job process area.
2: One or more addresses have not been calculated (due to
insufficient room in workspace for virtual memory) and
-1 is stored for the missing address(es).
E_x_a_m_p_l_e_:
Compared to the example in 4.3.2, the following example catches a
case of insufficient room directly, but at the cost of loss of
register contents:
AL W1, PARAM ; COMMENT: W2 = PROGRAM POINT;
RS W2, X1+0 ; PARAM(0):= POINT;
GETADDRS ; GET ADDRESSES(PARAM, RESULT)
SE W0, 0 ; IF RESULT <' 0
JL ... ; THEN JUMP AWAY;
RL W2, X1+2 ; W2:= PARAM (2);
.
.
.
PARAM: BLK. 2
DATA. -1 \f
4_._3_._5_ _ _ _ _ _P_r_o_c_e_d_u_r_e_ _R_e_s_e_r_v_e_ _A_r_e_a_ 4.3.5
C_a_l_l_:
reserve area (position, size, result, new top)
w0 : result (return)
w1 : position (call)
w2 : size (call)
w3 : new top, or, if result 0_=/5_ 0, destroyed (return)
procno: 10
F_u_n_c_t_i_o_n_:
The procedure attempts to reserve an area of the specified size
(a number of halfwords, must be even and non-negative) for priva-
te use by the program in workspace for virtual memory.
If position equals 0, then the area will be situated adjacently
to the low limit of workspace for virtual memory, otherwise, if
position equals 1, adjacently to high limit, or, in either case,
in continuation of already reserved areas in low or high end of
workspace, respectively.
To make space for the reservation, the procedure may cause inno-
vations in workspace for virtual memory. However, a page calling
the procedure will remain in memory, but may at return time have
been moved to another position.
\f
m_The following figure shows a situation where areas have been
reserved in either end of workspace for virtual memory:
+ 0
reserved areas (pos. 0)
+ 512
new top
+ 1024 workspace
available for
for virtual
pages memory
+ n -1024
+ n -512 new top
reserved areas (pos. 1)
The value returned as new top is the (absolute) address of the
left halfword of the word following (pos. 0) or preceding (pos.
1) the reserved areas.
It is the user>s responsibility to use the reservation facility
properly.
Result 0: The area has been reserved.
2: The area has not been reserved due to insufficient room
in workspace for virtual memory. The result also covers
the situation where the area to be reserved contains a
page which must neither be removed from workspace for
virtual memory nor be moved to another position.
E_x_a_m_p_l_e_:
The following piece of code reserves SIZE halfwords in low end of
workspace and stores the size in the last of the reserved words.
AL W1, 0 ;
AL W2, SIZE ;
RESERVEAREA ; RESERVE AREA(0,SIZE,RESULT,NEWTOP);
SE W0, 0 ; IF RESULT <' 0
JL ... ; THEN JUMP AWAY
RS W2, X3-2 ; STORE SIZE IN NEWTOP - 2;
(See also section 4.3.6)
p_ \f
4_._3_._6_ _ _ _ _ _P_r_o_c_e_d_u_r_e_ _R_e_l_e_a_s_e_ _A_r_e_a_ 4.3.6
C_a_l_l_:
release area (position, size, new top)
w1 : position (call)
w2 : size (call)
w3 : new top (call)
procno: 11
F_u_n_c_t_i_o_n_:
The procedure is used for releasing areas reserved through calls
of procedure Reserve Area.
The size-parameter specifies the number of halfwords (which must
be even and non-negative) to be cut off of the end of the
reserved areas nearest to the workspace area part available for
pages. If position equals 0, then the release takes place from
the reserved areas situated in low end of workspace for virtual
memory, otherwise, if position equals 1, from the reserved areas
in high end.
The value returned as new top equals the previous top of reserved
areas minus (pos. 0) or plus (pos. 1) the size parameter. A full
release of the reserved areas in the specified position may be
obtained by specifying a size greater than what has been
reserved. The area released is returned to the Paging System and
may be included in the workspace area used for pages.
E_x_a_m_p_l_e_:
If executed after the example in section 4.3.5 (with register w3
unchanged), the following piece of code will release what was re-
served:
AL W1, 0 ; COMMENT: W3 = TOP OF RESERVED;
RL W2, X3-2 ; FETCH SIZE FROM TOP - 2;
RELEASEAREA ; RELEASE AREA (0, SIZE, NEW TOP)
\f
4_._3_._7_ _ _ _ _ _P_r_o_c_e_d_u_r_e_ _E_x_t_e_n_s_i_o_n_ _C_l_a_i_m_ 4.3.7
C_a_l_l_:
extension claim (entries, result)
w0 : result (return)
w1 : entries (call)
procno: 12
F_u_n_c_t_i_o_n_:
The procedure is intended for use by a program, which, at a later
point in time, extends virtual memory through calls of procedures
Change Size and Create Section.
When the procedure has been called and given result 0, then it is
guaranteed that the segmenttable later can be extended by the
number of entries specified in the call.
Using this procedure prevents:
- reserved areas in low end of workspace for virtual memory, and
- pages, which can neither be removed from the workspace nor can
be moved to another position,
from making a segmenttable extension impossible.
The procedure may cause innovations in workspace for virtual
memory. However, a page calling the procedure will remain in
memory, but may at return time have been moved to another
position.
Result 0: ok (see above)
2: Insufficient room in workspace for virtual memory. The
result also covers the situation where areas have been
reserved in low end of workspace or where a
non-removable page is present in the beginning of work-
space.
\f
4_._3_._8_ _ _ _ _ _P_r_o_c_e_d_u_r_e_ _C_h_a_n_g_e_ _R_e_w_r_i_t_e_ 4.3.8
C_a_l_l_:
change rewrite (point, rewrite)
w1 : point (call)
w2 : rewrite (call)
procno: 13
F_u_n_c_t_i_o_n_:
If point is a resident (i.e. non-negative) address or is the
point of an overlay object, then the procedure performs nothing.
Otherwise, the rewrite parameter is inserted in the segmenttable
entries of the page specified by the point - a rewrite parameter
of 1 signifies that the page, whenever removed from workspace of
virtual memory, is to be rewritten onto the pagefile, while a re-
write parameter equal to zero means that no rewrite is wanted. \f
4_._3_._9_ _ _ _ _ _P_r_o_c_e_d_u_r_e_ _C_h_a_n_g_e_ _S_i_z_e_ 4.3.9
C_a_l_l_:
change size (point, size, result)
w0 : result (return)
w1 : point (call)
w2 : size (call)
procno : 14
F_u_n_c_t_i_o_n_:
The procedure may be used for re-defining the size of a virtual
section - the section being the one holding the object addressed
by parameter point. If point is a resident (i.e. non-negative)
address, then the procedure performs nothing but returning with a
result of zero.
The new size is specified in the call as a number of halfwords,
and will, if necessary, be rounded up to the first number divisi-
ble by 512. The new size must be non-negative, and must not ex-
ceed 1048064 halfwords corresponding to 2047 backing storage
segments.
A new size smaller than the old one will cause the system to
>cut> off the last segment(s) of the section thus introducing a
>hole> in virtual memory. Any reference to this >hole> (as well
implicitly by the effective address of an instruction or expli-
citly by a parameter in a procedure call) will be treated as an
error (see section 4.5). A new size equal to zero means that the
>hole> will include the entire section.
If the new size is greater than the old one then the system will
try to extend the section by the necessary number of segments. If
the section is situated as the last section of virtual memory,
then the extension may include extension of the segmenttable and
the pagefile.
\f
If not situated as the last section, an extension is only possi-
ble if the section precedes a >hole> in virtual memory (created
by a previous call of change size or existing because the load-
module did not contain virtual section headers covering the en-
tire virtual memory). For an overlay section it is checked that
the section is still able to be roomed within resident section.
It is not possible to change the size of a virtual section locked
in wordspace memory by procedure lock, nor is a non-overlay sec-
tion allowed to change its own size.
The procedure may cause innovations in workspase for virtual me-
mory including removal of the section specified by point if pre-
sent in the workspace. However, a page calling the procedure will
remain in memory, but may at return time have been moved to an-
other position in workspace for virtual memory.
The new size of the section specifies the amount of backing
storage segments later to be transferred, whenever necessary,
between the page file and the job process area.
Result 0 : The size of the specified virtual section has been
changed.
2 : Insufficient room in workspace for virtual memory to
extend the segmenttable (or areas reserved in low end
of workspace or a non-removable page present in low
end of workspace).
4 : The new size is too large for a section which is not
the last section of virtual memory.
6 : The section specified is locked in workspace for vir-
tual memory or is the same section that has called the
procedure.
\f
4_._3_._1_0_ _ _ _ _P_r_o_c_e_d_u_r_e_ _C_h_a_n_g_e_ _F_i_x_e_d_ _P_l_a_c_e_ 4.3.10
C_a_l_l_:
change fixed place (point, fixed place, result)
w0 : result (return)
w1 : point (call)
w2 : fixed place (call)
procno : 15
F_u_n_c_t_i_o_n_:
This procedure may be used when it is desired that a non-overlay
page is always to be brought into a fixed place in workspace for
virtual memory whenever the page is loaded (parameter fixed place
= 1) and it may be used to cancel this attribute again (parameter
fixed place = 0).
The page concerned is the one holding the object addressed by pa-
rameter point - if point is a resident (i.e. non-negative)
address or is the point of an overlay, then the procedure
performs nothing but returning with a result of zero.
If the procedure is called with parameter fixed place equal to 1,
then the specified page must be present at call time in workspace
for virtual memory, and its actual place will then be the one to
use whenever the page is needed in the job process area.
It is the user>s responsibility to use the fixed place facility
properly.
Result 0 : OK (this result is always returned if parameter fixed
place = 0).
8 : The specified page is not present in workspace for
virtual memory (parameter fixed place = 1).
\f
E_x_a_m_p_l_e_:
It is desired that a given page (addressed by contents of POINT)
is always to be loaded into the third frame (and following fra-
mes) of workspace for virtual memory. It is assumed that no areas
have been reserved in low end of workspace for virtual memory and
that no hardlocked section prevents the following:
AL W1, 0 ; COMMENT: RESERVE TWO FRAMES;
AL W2, 2*512 ;
RESERVEAREA ; RESERVE AREA(0,2*512,RESULT,NEWTOP);
SE W0, 0 ; IF RESULT <' 0
JL ... ; THEN JUMP AWAY;
RL W1, POINT ; COMMENT: FORCE PAGE INTO
AL W2, 0 ; THIRD FRAME;
AL W3, 1 ;
LOCKSECTION ; LOCK SECTION(POINT,0,1,RESULT);
SE W0, 0 ; IF RESULT <' 0
JL ... ; THEN JUMP AWAY;
AL W2, 1 ;
CHANGEFIXEDPLACE ; CHANGE FIXED PLACE(POINT,1,RESULT);
UNLOCKSECTION ; UNLOCK SECTION(POINT);
AL W1, 0 ;
AL W2, 2*512 ;
RELEASEAREA ; RELEASE AREA(0,2*512);
\f
4_._3_._1_1_ _ _ _ _P_r_o_c_e_d_u_r_e_ _W_r_i_t_e_ _S_e_c_t_i_o_n_ 4.3.11
C_a_l_l_:
write section (point, mode)
w1 : point (call)
w2 : mode (call)
procno : 16
F_u_n_c_t_i_o_n_:
A call of this procedure causes a virtual page, if present in the
job process area at call time, to be rewritten into the pagefile.
The page is given by the point specified in the call - if point
is a resident (i.e. non-negative) address or if it is a point
within a non-overlay page which at call time is not present in
workspace for virtual memory, then the procedure returns
immediately.
Otherwise, for non-overlay pages, the mode parameter is used as
follows:
Mode 0 : The page is rewritten immediately. If the page is a re-
write-page, then it will be rewritten also when it, at
a later point in time, is removed from workspace for
virtual memory.
1 : The page is rewritten immediately. If the page is a re-
write-page, then it will not be rewritten the first time
it is to be removed from workspace for virtual memory.
2 : The page is rewritten the first time it is to be removed
from workspace for virtual memory.
For overlay pages, the mode parameter is not used (yet must be
valid) - the part of the job process area, which holds the page
(or which will hold the page when present) is immediately and
unconditionally rewritten onto the pagefile.
\f
4_._3_._1_2_ _ _ _ _P_r_o_c_e_d_u_r_e_ _L_o_c_k_ _S_e_c_t_i_o_n_ 4.3.12
C_a_l_l_:
lock section (point, position, mode, result, address)
w0 : result (return)
w1 : point (call)
w2 : position (call)
w3 : mode (call), address (return)
procno : 17
F_u_n_c_t_i_o_n_:
If the section specified by the point is a non-overlay page, then
a call of this procedure will secure that the page at return time
will be present in workspace for virtual memory and that it will,
whatever happens, not be removed from the workspace until after
having been unlocked by procedure Unlock Section.
If the point is a resident (i.e. non-negative) address or is the
point of an overlay object, then a call of this procedure will
equivalate a call of procedure Get Address, i.e. the procedure
will return the (absolute) address corresponding to the point,
and a result of zero. The parameters position and mode will in
this case be irrelevant, yet they must be valid.
Otherwise, the parameters position and mode are used as follows:
Position 0 : The section will be placed as near as possible to
the low end of workspace for virtual memory.
1 : The section will be placed as near as possible to
the high end of workspace for virtual memory.
2 : The section may be placed anywhere in workspace for
virtual memory (if the section is already present,
then it will remain in the actual place).
\f
mode 0 : The section will be >softlocked>, meaning that it
will remain in workspace for virtual memory until
unlocked, but that the Paging System is free to move
it to another place at a later point in time, if
needed.
1 : The section will be >hardlocked>, meaning that it
will remain in workspace for virtual memory at the
very place where it resides when the procedure
returns.
A page to be hardlocked with position equal to 0 or 1 will always
by the procedure be attempted placed nearer to the specified end
of workspace for virtual memory than any existing softlocked page
(see the example below) through using a technique where
softlocked pages are pushed towards the opposite end of the
workspace. This pushing can not cross over a hardlocked page.
If the page to be locked is a fixed place page, then the position
parameter is irrelevant (yet must be valid), as the section will
be locked into that place which has been chosen in an earlier
point in time by a call of procedure Change Fixed Place. Please
note, that softlocking a fixed place section is equivalent to
hardlocking it.
The procedure may cause innovations in workspace for virtual me-
mory. However, a page calling the procedure will remain in memory
(unless it locks itself in which case it may be removed and re-
loaded, see below), but may at return time have been moved to
another position in workspace for virtual memory.
Please note, that if a section, present in workspace for virtual
memory at call-time, is to be locked with position equal to 0 or
1, then that section may be removed (possibly after a rewrite
action) and reloaded from virtual memory, even if the section is
already locked.
\f
The address given as return parameter will be the (absolute) ad-
dress of the point.
It is the user>s responsibility to use the lock facility proper-
ly.
Result 0 : OK, the address of the point has been calculated.
2 : Insufficient room in workspace for virtual memory to
load the page when not present at call time.
E_x_a_m_p_l_e_:
Assume that the points A, B, C, D, and E are placed on separate
non-overlay, non-fixed place pages and that these pages are of
equal size except for the page holding D, which is assumed to be
of greater size than the other ones.
Below is listed a sequence of Paging System procedure calls
together with layouts of the workspace for virtual memory after
each call (the low end of workspace is to the left). It is
assumed, that no pages have been locked previously.
\f
lock section (A,0,0, result, addr); _ _A_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
soft
lock section (B,0,1, result, addr); _ _B_ _ _ _ _A_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
hard soft
lock section (C,0,1, result, addr); _ _B_ _ _ _ _C_ _ _ _ _A_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
hard hard soft
lock section (A,0,1, result, addr); _ _B_ _ _ _ _C_ _ _ _ _A_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
hard hard hard
unlock section (C) _ _B_ _ _ _ _C_ _ _ _ _A_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
hard hard
lock section (D,0,1, result, addr); _ _B_ _ _ _ _C_ _ _ _ _A_ _ _ _ _D_ _ _ _ _ _ _ _ _ _ _
hard hard hard
lock section (E,0,0, result, addr); _ _B_ _ _ _ _E_ _ _ _ _A_ _ _ _ _D_ _ _ _ _ _ _ _ _ _ _
hard soft hard hard
lock section (A,0,1, result, addr); _ _B_ _ _ _ _E_ _ _ _ _A_ _ _ _ _D_ _ _ _ _ _ _ _ _ _ _
hard soft hard hard
unlock section (E) _ _B_ _ _ _ _E_ _ _ _ _A_ _ _ _ _D_ _ _ _ _ _ _ _ _ _ _
hard hard hard
lock section (A,0,1, result, addr); _ _B_ _ _ _ _A_ _ _ _ _ _ _ _ _ _D_ _ _ _ _ _ _ _ _ _ _
hard hard hard
\f
F_4_._3_._1_3_ _ _ _ _P_r_o_c_e_d_u_r_e_ _U_n_l_o_c_k_ _S_e_c_t_i_o_n_ 4.3.13
C_a_l_l_:
unlock section (point)
w1 : point (call)
procno : 18
F_u_n_c_t_i_o_n_:
If the section specified by the point is a non-overlay page which
has been locked into workspace for virtual memory by procedure
Lock Section, then the page will be unlocked, i.e. it may, if
relevant at a later point in time, be removed from the workspace.
Otherwise, the procedure performs nothing.
E_x_a_m_p_l_e_:
See section 4.3.12.
\f
F_ 4_._3_._1_4_ _ _ _ _P_r_o_c_e_d_u_r_e_ _C_r_e_a_t_e_ _S_e_c_t_i_o_n_ 4.3.14
C_a_l_l_:
create section (size, rewrite, overlay base, result, point)
w0 : size (call), result (return)
w1 : rewrite (call), point (return)
w2 : overlay base (call)
procno : 19
F_u_n_c_t_i_o_n_:
The procedure may be used for extending virtual memory by crea-
ting a page which will be placed as the last section in virtual
memory - if virtual memory ends by a >hole> introduced by proce-
dure Change Size, then the new section will be placed after that
>hole>. The point of the first halfword of the new section is gi-
ven as return parameter.
The size of the new section is specified in the call as a number
of halfwords, and will, if necessary, be rounded up to the first
number divisible by 512. The size must be a positive number and
must not exceed 1048064 halfwords corresponding to 2047 backing
storage segments.
If the rewrite parameter is 1, then the section will be created
as a section which should be rewritten into the page file when-
ever the section is removed from workspace for virtual memory. If
the rewrite parameter is zero, it signals to the Paging System
that no rewrite is wanted.
If the overlay base is non-zero, then it must be an absolute
address within the resident section of the program denoting that
the section is an overlay page always to be brought into the job
process area at the same position (i.e. to the area starting at
overlay base) - it is checked that the section, if loaded, will
not exceed resident section. If overlay base is non-zero, then
the rewrite parameter is irrelevant.
The procedure may cause innovations in workspace for virtual me-
mory. However, a page calling the procedure may at return time\f
have been moved to another position in workspace for virtual
memory.
Result 0 : The section has been created, and the point of the
first location of the section is returned.
2 : Insufficient room in workspace for virtual memory to
extend the segmenttable (or areas reserved in low end
of workspace or a non-removable page present in low
end of workspace).
E_x_a_m_p_l_e_:
The following piece of code creates a new non-overlay page with-
out rewrite attribute and fills some code and data into it:
RL W0, SIZE ;
AL W1, 0 ;
AL W2, 0 ;
CREATESECTION ; CREATE SECTION (SIZE,1,0, RE-
; SULT, POINT);
SE W0, 0 ; IF RESULT <' 0
JL ... ; THEN JUMP AWAY;
RS W1, POINT ; STORE POINT;
GETADDR W1 ; GETADDRESS (POINT, ADDRESS);
. ; COMMENT: NOW FILL SOMETHING
. ; INTO THE AREA POINTED
. ; TO BY ADDRESS;
RL W1, POINT ;
AL W2, 1 ; MODE:= WRITE IMMEDIATELY;
WRITESECTION ; WRITE SECTION (POINT, MODE);
\f
F_4_._3_._1_5_ _ _ _ _P_r_o_c_e_d_u_r_e_ _D_e_f_i_n_e_ _U_s_e_r_ _P_r_o_c_e_d_u_r_e_ 4.3.15
C_a_l_l_:
define user procedures (interrupt mask, interrupt addr, statproc
addr).
w0 : interrupt mask (call)
w1 : interrupt addr (call)
w2 : statproc addr (call)
procno : 20
F_u_n_c_t_i_o_n_:
If a non-zero interrupt address is specified in the call, then
this address must be an a_b_s_o_l_u_t_e_ address pointing to a routine to
be entered when exceptions occur, which cannot be handled by the
Paging System (see section 4.5).
If an interrupt address of zero is specified, then the handling
of exceptions will be limited to what is performed by the Paging
System (see also section 4.5).
The interrupt mask bits of the process, concerning integer and
floating-point overflow, are set according to the specified in-
terrupt mask, provided the interupt address parameter is non-zero
(see ref. 2).
If a non-zero statproc address is specified in the call, then
this address must be the a_b_o_s_o_l_u_t_e_ address of a statistics proce-
dure to be called each time a page is transferred to or from vir-
tual memory, and each time a page is moved from one place in
workspace for virtual memory to another. A statproc address of
zero signifies that the program does not contain a procedure for
statistics. For further information, see section 4.4.
\f
E_x_a_m_p_l_e_:
A program, which uses the File Processor, wants to define a
procedure for statistics, but also wants to keep the interrupt
routine of fp for exception-handling. This can be achieved as
follows (it is supposed that Define User Procedures has not been
called before or that it has only been called from the following
code):
AL W0, 12 ; INF: = INTERRUPT INF;
GETPAGERADDR ; GET PAGER ADDR (INF, ADDRESS);
DL W1, X1 + 2 ; PICK UP INTERR MASK AND ADDR;
RL W2, = STATPROC;
DEFINEUSERPROCS; DEFINE USERPROCS (MASK, ADDR,
; STATPROC);
\f
F_ 4_._3_._1_6_ _ _ _ _P_r_o_c_e_d_u_r_e_ _G_e_t_ _P_a_g_e_r_ _A_d_d_r_e_s_s_ 4.3.16
C_a_l_l_:
get pager address
w0 : information code (call)
w1 : address (return)
procno : 21
F_u_n_c_t_i_o_n_:
The procedure delivers the (absolute) address of a variable (or
the first address of a sequence of variables) placed within the
Paging System. The variable, of which the address is wanted, is
given by the contents of the information code parameter.
The possible values of information code, together with descrip-
tions of what is pointed to by the address returned, may be found
in app. E.
E_x_a_m_p_l_e_:
The following sequence of instructions forces the Paging System
to start looking for room from the beginning of the available
workspace for virtual memory next time a page is to be loaded
(see also app. D and E):
AL W0, 3 ; INFCODE: = FRAMETABLE INF;
GETPAGERADDR ; GET PAGER ADDR (INFCODE, ADDRESS);
RL W2, X1 + 10 ; FETCH AVAILABLE FRAMETABLE FIRST;
AL W0, 14 ; INFCODE: = VICTIM INF;
GETPAGERADDR ; GET PAGER ADDR (INFCODE, ADDRESS);
RS W2, X1 + 0 ; STORE AVAILABLE FRAMETABLE FIRST
; IN VICTIM;
\f
F_ 4_._3_._1_7_ _ _ _ _P_r_o_c_e_d_u_r_e_ _R_e_m_o_v_e_ _P_a_g_e_f_i_l_e_ 4.3.17
C_a_l_l_:
remove pagefile
procno : 22
F_u_n_c_t_i_o_n_:
The name of the pagefile is removed from the catalog.
The Paging System variables >no. of segments> and >pagefile name>
are zeroized thus prohibiting future references to virtual
memory.
If the pagefile has already been removed, then the procedure
performs nothing.
\f
F_4_._4_ _ _ _ _ _ _ _S_t_a_t_i_s_t_i_c_s_ 4.4
Each time a page is read from virtual memory, is written onto
virtual memory, or is moved from one place to another within
workspace for virtual memory then the Paging System increments
one of three counters by 1. How to access these counters may be
seen in section 4.3.16 and app. E.
If the program contains a procedure for collection of statistics
(see section 4.3.15) then the procedure will be entered at its
first address each time a page is read, written or moved, the
working registers containing the following:
w0: cause * 4096 + size
w1: address
w2: link
w3: segment number
The left half of working register w0 specifies the c_a_u_s_e_ of why
the procedure has been called: 1 = move, 3 = read, 5 = write.
The section is identified by its first s_e_g_m_e_n_t_ _n_u_m_b_e_r_ within vir-
tual memory (0 <_ segment number <_ number of backing storage
segments in virtual memory -1), and the s_i_z_e_ of the section is
given as the number of backing storage segments occupied by it.
The (absolute) a_d_d_r_e_s_s_ of the first location to receive the sec-
tion (cause 1 or 3) or of where the section is presently placed
(cause 5) is supplied in working register w3.
The procedure is entered before the section is read, written, or
moved, but after the updating of above mentioned counters.
The procedure should not cause any internal interrupt to avoid
inconsistency in the Paging System variables.
Return from the procedure is performed by executing a jump to the
address contained in register w2 - the contents of the registers
is irrelevant at return.
\f
F_4_._5_ _ _ _ _ _ _ _E_r_r_o_r_ _H_a_n_d_l_i_n_g_ 4.5
If the Paging System runs into a serious error then the interrupt
routine of the program (see section 4.3.15) will be entered - if
a program using the File Processer has not called Define User
Procedures then the interrupt routine will be the interrupt
routine of fp.
The Paging System will copy the contents of the register dump,
originating from the activation of the Paging System interrupt
routine, to the interrupt routine of the program and will con-
tinue within that routine:
interrupt address + 0: w0
+ 2: w1
+ 4: w2
+ 6: w3
+ 8: status
+ 10: ic
+ 12: cause
+ 14: addr
+ 16: first instruction to be executed
The routine is entered with working register w0 containing a re-
sult (see below, only relevant for causes 102, 104, and 106) -
the contents of the other working registers is indefined.
\f
T_ The cause specifies the reason for activating the routine:
0 protection violation, illegal virtual address (including
references to >holes> in virtual memory introduced by
procedure Change Size or existing because the load module
did not cover the entire virtual memory with virtual sec-
tion headers).
2 integer overflow.
4 floating point overflow/underflow.
6 parameter error in monitor call.
8 breakpoint forced by parent.
10 zone stack error.
100 insufficient room in workspace for virtual memory (inclu-
ding the situation where a fixed place section cannot be
loaded due to reservation of areas or the presence of a
non-removable page).
102 discerror, w0 contains a logical statusword packed as
described in ref. 5.
104 pagefile extension error, w0 contains a result from moni-
tor procedure Change Entry (see ref. 2 ).
106 pagefile removal error, w0 contains a result from
monitor procedure Remove Entry (see ref. 2 ).
108 parameter error in Paging System procedure call.
110 illegal overlay base specified as parameter to procedure
Create Section or procedure Change Size.
112 interrupt address or statproc address not a resident
(i.e. positive) address in a call of procedure Define
User Procedures.
114 bufferclaim exceeded.
The causes 100 through 114 are generated by the Paging System. A
situation leading to an error giving cause 100 may posibly be re-
paired by releasing reserved areas, or unlocking locked pages or
suspending fixed place attributes on pages.
The instruction causing activation of the Paging System interrupt
routine is the one preceding the word pointed to by the dumped
value of ic.
\f
If the program has specified that it does not contain an inter-
rupt routine - or if a program not using the File processor has
not called Define User Procedures, then a serious error will be
handled as follows:
The pagefile will be removed if it had been created with a work-
name to identify it. The registerdump of the Paging System inter-
rupt routine will be copied to the second word of the job process
area and foreward, and the result (which is only relevant for
causes 102, 104, and 106) will be stored in the tenth word of the
job process area (i.e. after the dumped addr register). Finally a
break-message, containing the text >break> is sent to parent and
an endless loop is entered by the Paging System.
For further information, see ref. 1 and ref. 2.
\f
F_ 5_._ _ _ _ _ _ _ _ _P_R_O_G_R_A_M_ _T_E_R_M_I_N_A_T_I_O_N_ 5.
The Loader/Paging system does not contain facilities for termina-
ting the execution of a program, once started.
This means, that it is entirely up to the program how to
terminate the run (possibly except in connection with certain
errors, see section 4.5). A proper action for a program using the
File Processor would be to enter the fp program termination
routine, see ref. 4.
A program using virtual memory may, prior to termination, remove
the pagefile through calling a Paging System procedure.
\f
F_6_._ _ _ _ _ _ _ _ _R_E_Q_U_I_R_E_M_E_N_T_S_ 6.
For the File Processor, fp, to load SYSLDR000, the process size
must be at least appr. 8250 halwords.
In a process of this size:
- can only be loaded programs which do not use virtual memory,
- and at most appr. 3400 halfwords of code and data may be re-
located into the job process area (if the program does not use
fp, then a resident section of 1536 + 3400 halfwords may be
specified, but nothing can be relocated to the first 1536
halfwords to protect the resident part of fp).
The process size must be at least appr. 8350 halfwords to load a
program, which uses as well fp as virtual memory. When the pro-
gram is started, the workspace for virtual memory will always
contain at least 4 frames.
To load a program which does not use fp, but which uses virtual
memory, a process size of at least appr. 9850 halfwords must be
used. When the program is started, the workspace for virtual
memory will always contain at least 9 frames (not including
possible frames within the first 1536 halfwords of the process -
workspace for virtual memory may start in that area if the length
of the resident code and data together with the length of the
segmenttable does not exceed 1536 halfwords).
At least 2 message buffers and 3 area processes must be avail-
able.
\f
\f
F_A_._ _ _ _ _ _ _ _ _R_E_F_E_R_E_N_C_E_S_ A.
1. RCSL No 42-i 1235
RC8000 Computer Family, Reference Manual
2. RCSL No 31-D477
RC8000 Monitor, Part 2 Reference Manual
3. RCSL No 31-D364
System 3 Utility Programs, Part One
4. RCSL No 31-D379
System 3 Utility Programs, Part Three
5. RCSL No 42-i 0781
Algol 7, User>s Manual, Part One
6. RCSL No 31-D566
RC8000 Macro Assembler, Reference Manual
7. RCSL No 31-D567
RC8000 Linker, Reference Manual
\f
F_ B_._ _ _ _ _ _ _ _ _E_R_R_O_R_ _M_E_S_S_A_G_E_S_ _F_R_O_M_ _L_O_A_D_E_R_ B.
A hard error on the file containing the load module or on the
page-file causes an error message in the format:
*** device status <filename' <statusword'
Where the statusbits are given as text lines. The statusbit
>checksum error> in connection with the load module file indica-
tes that a record in the load module contains a checksum error -
this statusbit is likely to occur if the file does not contain a
load module, but something else.
Other error messages from the loader have the format:
*** sysldr error: <errortext'
Messages given in a format varying from this one, will originate
from the File Processor and concern the loading of SYSLDR000 (see
ref. 3).
Below is found an alphabetical list of errortexts. Some error-
texts include a <recordno.' part giving the record mumber of the
load module record causing the errormessage (the first record in
the load module has record number 1).
connect <result'
The file containing the load module could not be connected
due to the specified result:
1: No resources
2: Document malfunction
3: Not user, entry not found
4: Convention error (modekind trouble, too many entry le-
vels)
5: Document reserved
6: Name format illegal
\f
F_ fp area <recordno.'
The presence of an fp program label in the load module prohi-
bits relocation of code to the fp-area of the process.
illegal <recordno.'
A number of cases may cause this error text:
- Illegal recordtype or -length of a loadmodule record.
- Illegal relocation modifier of load address in a section
header record or of loadvalue in a relocatable code record.
- Illegal sectionsize (size < 0 or size of a virtual section
' 1048064 halfwords).
- Illegal rewrite field in a (virtual) section header (must
be 0 or 1).
loadaddr <recordno.'
A number of cases may cause this error text:
- The load address in the section header record for resident
section differs from zero, or is not divisible by 512 in
the section header for a virtual section.
- The load address in a relocatable code record is an address
which has not been defined by any previous section header.
- Unknown relocation modifier of load address in a relo-
catable code record.
overlay <recordno.'
The overlay base in a (virtual) section header is not resi-
dent relocatable, overlay base or overlay base + size of
section - 2 is an address outside resident section, or the
presence of an fp program label in the load module pro-
hibits an overlay base within the fp-area of the process.
overwrite <recordno.'
The load module contains more than one section header for
resident section, init section, or a given address space in
virtual memory.
\f
F_ pagefile err <result'
An error, which is specified by result, has occurred during
generation of the pagefile:
2: Document malfunction
3: Entry not found
4: Entry protected
5: Area process reserved
6: Claims exceeded; name format or new size (at file
extension) illegal
7: Maincat not present
pfl missing
The load module does not contain a page file label although
containing virtual code.
sequence <recordno.'
The load module contains an illegal record sequencing, i.e.
an fp program label occurs later than pagefile label of sec-
tion headers, a pagefile label occurs later than section
headers, or the section header for resident or virtual sec-
tion occurs later than virtual section headers.
size <recordno.'
The job process area is too small to load the program.
startaddr <recordno.'
Startaddress is neither resident nor virtual relocatable, or
startaddress is outside resident or virtual address space.
\f
F_C_._ _ _ _ _ _ _ _ _S_E_G_M_E_N_T_T_A_B_L_E_ C.
Each segmenttable entry consists of 6 halfwords describing a
segment in virtual memory.
+0 : address
+2 : rank, +3: attributes
+4 : loadaddress
A negative a_d_d_r_e_s_s_ is the first virtual address of the segment,
a non-negative one is an (absolute) address of the first halfword
of the segment when present in workspace for virtual memory, see
section 4.1.
A r_a_n_k_ of zero denotes an empty segmenttable entry, i.e. the en-
try decribes a >hole> in workspace for virtual memory. A hole may
exist if the load module does not contain virtual section headers
covering the entire virtual memory - and holes may be introduced
by Paging System procedure Change Size. Otherwise rank contains:
1 + number of preceding entries belonging to the same page,
i.e. the first entry of a page has rank equal to 1.
The a_t_t_r_i_b_u_t_e_s_ contain:
kind*4 + last*2 + rewrite,
where k_i_n_d_ 2 denotes that the segment belongs to an overlay page
and kind 1 that it belongs to a non-overlay page to be brought
into a fixed place in workspace for virtual memory. Otherwise
kind is zero. If l_a_s_t_ equals 1, then the segment is the last
segment within the section. If r_e_w_r_i_t_e_ equals 1, then the segment
belongs to a section which is rewritten onto the pagefile when it
is to be removed from workspace of virtual memory (unless the
rewrite attribute has been overridden by a call of Paging System
procedure Write Section).
\f
F_ If the segment belongs to an overlay page (kind 2) then
l_o_a_d_a_d_d_r_e_s_s_ is the (absolute) address where to load the segment.
If the segment belongs to a non-overlay page to be loaded into a
fixed place in workspace for virtual memory (kind 1) then load-
address is the (absolute) address the frametable entry describing
the frame where to load the segment. Otherwise loadaddress is
irrelevant.
The first word in the segmenttable is pointed to by the Paging
System variable >segmenttable first>, and the word following the
table is pointed to by >segmenttable top>. Number of entries in
the table is contained in the variable >no. of segments>. If vir-
tual memory is empty, then >no. of segments> equals zero, and
>segmenttable top> equals >segmenttable first>.
\f
F_D_._ _ _ _ _ _ _ _ _F_R_A_M_E_T_A_B_L_E_ D.
Each frametable entry consists of 6 halfwords decribing a frame
(which is a block of 512 halfwords) in workspace for virtual me-
mory:
+0 : contents
+2 : rank _a, +3 : rank _b
+4 : attributes, + 5 : priority
If the frame contains a segment from virtual memory, then the
c_o_n_t_e_n_t_s_ field is the (absolute) address of the segmenttable en-
try decribing the segment. Otherwise contents is zero, i.e. the
entry decribes a frame which is currently empty.
If contents is zero, then r_a_n_k_ _a_ and r_a_n_k_ _b_ are both 1. otherwi-
se, rank _a contains:
1 + number of preceding entries belonging to the same page,
and rank _b contains:
1 + number of following entries belonging to the same page,
i.e. the frametable entries of a page residing in workspace for
virtual memory have rank _a equal to the ranks of the segment-
table entries. The last frametable entry of the page has rank _b
equal to 1.
The a_t_t_r_i_b_u_t_e_s_ contain:
lock*16 + demanded*8 + kind*4 + irrel*1 + rewrite.
If the page is softlocked then l_o_c_k_ equals 1, if it is hardlocked
then lock equals 2, otherwise lock is zero. The d_e_m_a_n_d_e_d_ - field
is used by the Paging System during the processing of an inter-
rupt (including procedure execution) - the field equals 1 for
pages which must not be removed from workspace for virtual memory
during the processing (e.g. used in connection with interrupts
caused by execution of an instruction situated in workspace for
virtual memory). The k_i_n_d_ field is 1 if the page is not allowed
to reside in other frame(s) than the actual one(s), the contents\f
of the i_r_r_e_l_ field is irrelevant, and a r_e_w_r_i_t_e_ field of 1 sig-
nals that the page must be rewritten onto the pagefile when it is
removed from virtual memory.
The entry has p_r_i_o_r_i_t_y_ 0 if:
contents = 0 (contents 0=/5 0 demanded = 0 lock = 0),
meaning that the corresponding frame is empty or may be emptied
(together with possible neighbouring frames of the same page) by
removing the page from workspace for virtual memory (possibly
after rewriting it). The entry has priority 2 if:
contents 0=/5 0 ((kind = 1 (demanded = 1 lock = 1)) lock = 2)
meaning that the frame cannot be made empty at the moment. Other-
wise priority is 1, and the frame (together with possible neigh-
bouring frames) may be made empty by moving the page to another
position in workspace for virtual memory.
The Paging System variable >frametable base> points to a ficti-
tious entry preceding the first table entry, which is pointed to
by >frametable first>. The last entry in the table is pointed to
by >frametable last> and the word following the table by
>frametable top>. If the job process does not contain room for
even a single frame then >frametable top> equals >frametable
first>; >frametable base> and >frametable last> will equal this
value less the entrylength.
Furthermore a set of pointers exists for that part of workspace
for virtual memory which is available for pages (i.e. the part not
reserved by procedure Reserve Area) so that:
>available frametable base> '_ >frametable base>,
>available frametable first> '_ >frametable first>,
>available frametable last> <_ >frametable last>, and
>available frametable top> <_ >frametable top>.
The variable >victim> points to the frametable entry from where
the Paging System will start searching for room when a page of
kind 0 (see app. C) is to be loaded. The following must be ful-
filled:
>available frametable first> <_ >victim> <_ >available top>, and
frametable (>victim>, rank _a) = 1
(>victim> equal to >available frametable top> will cause the
search to start at >available frametable first>).
\f
F_E_._ _ _ _ _ _ _ _ _P_A_G_I_N_G_ _S_Y_S_T_E_M_ _V_A_R_I_A_B_L_E_S_ E.
Below are listed the Paging System information codes (see section
4.3.16) and what is contained in the area pointed to by the
addresses corresponding to the codes. Each Paging System
variable is contained in one word.
C_o_d_e_ a_d_d_r_e_s_s_
1 +0 : resident first (abs.addr of job process area
first).
+2 : size of resident section (from load module).
+4 : init first (abs.addr of init section first).
+6 : size of init section (from load module).
2 +0 : abs.addr of first of workspace for virtual
memory.
+2 : abs.addr of top of workspace for virtual memory.
3 +0 : frametable base,see app. D.
+2 : frametable first, - - -
+4 : frametable last,- - -
+6 : frametable top,- - -
+8 : available frametable base,- - -
+10: available frametable first,- - -
+12: available frametable last,- - -
+14: available frametable top,- - -
4 +0 : segmenttable first, see app. C
+2 : segmenttable top, - - -
+4 : no. of segments, - - -. This word is also
the first word of the entrytail of the pagefile.
The entrytail consists of 10 words.
5 +0 : abs.addr of the halfword following reserved areas
in low end of workspace for virtual memory.
+2 : abs.addr of the left half of the word preceding\f
reserved areas in high end of workspace for
virtual memory.
6 +0 : module title (4 words, from the load module).
7 +0 : module date (from the load module).
8 +0 : module revision (from the load module).
9 +0 : contains 1 if an fp program label was present in
the load module - is zero otherwise.
10 +0 : module start address (from the load module, but
has been relocated).
11 +0 : pagefile name (4 words).
+8 : name table address of pagefile name.
+10: contains 0 if the pagefile has a workname, is
otherwise different from zero.
12 +0 : interrupt mask (initially zero).
+2 : interrupt address for interrupts not handled by
the Paging System (intially zero or equal to
interrupt address of the File Processor).
+4 : address of statistics procedure (intially zero).
13 +0 : number of pages read.
+2 : number of pages written.
+6 : number of pages moved.
14 +0 : victim, see app. D.
15 Paging System interrupt routine,
+0 : register dump area.
+16: interrupt routine entry point.
\f
i
I_N_D_H_O_L_D_S_F_O_R_T_E_G_N_E_L_S_E_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _S_I_D_E_
1. INTRODUKTION ........................................... 1
2. BEJTENING .............................................. 2
2.1 Betjeningspanel ................................... 2
2.2 Papirfremføring ................................... 4
2.3 Indstillinger vedrørende udskrift ................. 5
2.4 Vertikal formatstyring (VFU) ...................... 7
2.5 Farvebånd ......................................... 7
3. BETJENINGSVEJLEDNING ................................... 8
3.1 Start/Stop ........................................ 8
3.2 Isætning af VFU strimmel .......................... 8
3.3 Isætning af papir ................................. 9
4. SUPPLERENDE INFORMATION ................................ 12
4.1 Fremstilling af VFU strimmel ...................... 12
4.2 Skift af farvebånd ................................ 13
4.3 Vedligeholdelse ................................... 15
\f
ii
\f
1_._ _ _ _ _ _ _ _ _I_N_T_R_O_D_U_K_T_I_O_N_ 1.
Figur 1: Linieskriver.
Linieskriveren skal altid tændes/slukkes med hovedafbryderen, der
er placeret på forsiden af understellet (se figuren). Bemærk, at
linieskriveren altid skal tændes e_f_t_e_r_ at selve datamatsystemet
er tændt (på grund af startstrøm).
Der er direkte adgang til betjeningspanelet, hvorimod linieskri-
verens topdæksel og tromlelågen skal åbnes for at isætte papir,
foretage indstillinger vedrørende udskrivninger, etc. A_d_v_a_r_s_e_l_:
Når tromlelågen åbnes, vil der være fri adgang til roterende
dele; vent derfor indtil disse dele har stoppet deres rotation,
før egentlige betjeningsforløb påbegyndes.
\f
F_ 2_._ _ _ _ _ _ _ _ _B_E_T_J_E_N_I_N_G_ 2.
2_._1_ _ _ _ _ _ _ _B_e_t_j_e_n_i_n_g_s_p_a_n_e_l_ 2.1
Figur 2: Betjeningspanel.
1) POWER ON - lyser, når der er tændt for linie-
indikator skriveren med hovedafbryderen (se
fig. 1). Linieskriveren skal altid
tændes/slukkes særskilt.
2) ALARM - lyser, når der indtræffer en fejl-
indikator tilstand. Linieskriveren kobles
derved off-line.
3) CLEAR - når kontakten trykkes ned, slettes
kontakt en eventuel ALARM indikation.
\f
4) READY - lyser, når linieskriveren er klar
indikator til at blive koblet on-line.
5) ON/OFF LINE - med denne kontakt kobles linieskri-
kontakt/indikator veren on-/off-line. Når kontakten
trykkes ned og den indbyggede in-
dikator derved tændes, kobles li-
nieskriveren on-line - og vice
versa. Umiddelbart når linieskri-
veren startes, vil indikatoren være
slukket.
6) TOP-OF-FORM - når kontakten trykkes ned, føres
kontakt papiret frem til begyndelsen af ny
side. Denne funktion kan kun benyt-
tes, når linieskriveren er off-
line.
7) PAPER STEP - når kontakten trykkes ned, føres
kontakt papiret frem til ny linie. Denne
funktion kan kun benyttes, når
linieskriveren er off-line.
8) FORMS RESET - med kontakten i nederste stilling
kontakt kan VERTIKAL INDSTILLING (GROV)
benyttes til trinvis indstilling af
papirpositionen. Linieskriveren
skal være tændt.
9) 6 LPI / 8 LPI - med kontakten vælges linietætheden
kontakt til henholdsvis 6 eller 8 linier
pr. tomme.
10) Fejlindikatorer - når en af fejlindikatorerne lyser,
er der indtruffet en af følgende
fejlsituationer:
\f
HAMMER - fejl vedrørende hammer;
FORMAT - fejl vedrørende formatstyring - kan
anulleres med FORMS RESET (8);
RIBBON - fejl vedrørende farvebånd
(fremføring/farvebånd itu);
GATE - lågen til skrivetromlen ikke
ordentligt lukket;
PAPER - fejl vedrørende papir (mangler
papir/papir itu);
TAPE (option) - fejl vedrørende VFU.
2_._2_ _ _ _ _ _ _ _P_a_p_i_r_f_r_e_m_f_ø_r_i_n_g_ 2.2
Figur 3: Papirfremføring (højre side).
Papiret føres fra linieskriverens forside under tromlelågen op
til papirfremføringen og forlader linieskriveren bagtil.
\f
Papiret sættes i fremføringsenhederne, idet modholderpladerne
åbnes, papiret sættes på fremføringsbælterne og modholderpladerne
lukkes ned over papiret.
Fremføringsenhederne kan flyttes sideværts, når drejelåsen åbnes.
Små ændringer i indstillingen, især med henblik på justering af
den tværgående papirstramning, kan udføres med fingerhjulet på
siden af fremføringsenheden. Korrekt papirstramning medfører, at
fremføringshullerne deformeres let.
2_._3_ _ _ _ _ _ _ _I_n_d_s_t_i_l_l_i_n_g_e_r_ _v_e_d_r_ø_r_e_n_d_e_ _u_d_s_k_r_i_f_t_ 2.3
Figur 4: Indstilling af papirposition.
Papiret kan indstilles, således at udskriften placeres i forud-
valgte positioner. Indstillingen sker ved at flytte papiret ver-
tikalt og horisontalt ved hjælp af de håndhjul, der beskrives i
det følgende (håndhjulene er placeret til højre for betjenings-
panelet som vist i fig. 4):
\f
VERTIAL INDSTILLING - tillader trinvis grovindstilling.
(GROV) FORMS RESET kontakt skal trykkes
håndhjul ned medens indstillingen foretages.
VERTIKAL INDSTILLING - tillader finindstilling indenfor de
(FIN) trinvise indstillinger, der kan
håndhjul opnås ved grovindstillingen. FORMS
RESET kontakten skal være i øverste
stilling, når indstillingen fore-
tages.
HORISONTAL INDSTILLING - tillader finindstilling i sideværts
håndhjul retning (grovindstillinger skal
foretages ved at flytte fremfø-
ringsenhederne direkte).
Desuden findes følgende indstillingsmuligheder:
PAPIRTYKKELSE - placeret neden under håndhjulet til
håndhjul VERTIKAL INDSTILLING (GROV) - se
fig. 4. Benyttes til at regulere
afstanden mellem skrivetromlen og
konsollen med anslagshamrene, hvor-
imellem papiret føres under ud-
skrivningen. Denne regulering er
nødvendig for at kompensere for
tykkelsesforskelle, når der f.eks.
benyttes flerlags formularer. Antal
(MULTI-COPY) af lag (kopier) indikeres på MULTI-
skala COPY skalaen.
FASE INDSTILLING - placeret ovenpå styreskab (se fig.
drejeknap 5). Tillader indstilling af ham-
meranslag, således at både øverste
og nederste del af tegnene udskri-
ves ensartet kraftigt.
\f
Figur 5: Indstilling af hammeranslag.
2_._4_ _ _ _ _ _ _ _V_e_r_t_i_k_a_l_ _f_o_r_m_a_t_s_t_y_r_i_n_g_ _(_V_F_U_)_ 2.4
Se 4.1: Fremstilling af VFU strimmel og 3.2: Isætning af VFU
strimmel.
2_._5_ _ _ _ _ _ _ _F_a_r_v_e_b_å_n_d_ 2.5
Se 4.2: Skift af farvebånd.
\f
F_ 3_._ _ _ _ _ _ _ _ _B_E_T_J_E_N_I_N_G_S_V_E_J_L_E_D_N_I_N_G_ 3.
3_._1_ _ _ _ _ _ _ _S_t_a_r_t_/_S_t_o_p_ 3.1
Linieskriveren tændes/slukkes med hovedafbryderen og når den er
tændt, lyser POWER ON indikatoren på betjeningspanelet.
Bemærk: Linieskriveren tændes altid e_f_t_e_r_, at selve systemet er
blevet tændt. For at bibeholde denne rækkefølge slukkes
linieskriveren, f_ø_r_ selve systemet slukkes.
Hvis farvebånd, VFU strimmel og papir er isat i linieskriveren,
kobles denne on-line med ON/OFF LINE kontakten.
3_._2_ _ _ _ _ _ _ _I_s_æ_t_n_i_n_g_ _a_f_ _V_F_U_ _s_t_r_i_m_m_e_l_ 3.2
VFU strimlen fremstilles som anført i 4.1. Strimlen sættes i VFU
læseren som følger:
1. Linieskriveren kobles off-line med ON/OFF LINE kontakten.
2. Linieskriverens topdæksel åbnes. Modholdet på VFU strim-
mellæseren åbnes, således at fremføringshjulet er frit.
3. VFU strimlen sættes i læseren, således at k_a_n_a_l_ _1_ på strimlen
vender mod linieskriverens frontside, (se fig. 6). Sørg for,
at fremføringshullerne fanger tænderne på fremføringshjulet.
4. Luk modholdet ned over strimlen.
5. Tryk på TAPE START kontakten. VFU strimlen bliver derefter
indlæst.
6. Sørg for, at papir og farvebånd er klar til drift.
7. Luk topdækslet. Linieskriveren er nu klar til drift.
\f
B_e_m_æ_r_k_:
Hvis der ikke isættes en VFU strimmel, opfattes dette af
linieskriveren, som om der var isat en strimmel med alle huller
udstandset i alle spor.
Figur 6: Isætning af VFU strimmel.
3_._3_ _ _ _ _ _ _ _I_s_æ_t_n_i_n_g_ _a_f_ _p_a_p_i_r_ 3.3
1. Tænd for linieskriveren, men lad den forblive off-line.
2. Tryk på TOP-OF-FORM kontakten (hvorved fremføringsenhederne
drejes frem til en position svarende til positionen for ny
side).
3. Åben topdækslet og tromlelågen (låsearmen til tromlelågen ses
på fig. 4).
A_D_V_A_R_S_E_L_:
Vent indtil skrivetromlen har stoppet sin rotation, før næste
trin påbegyndes.
4. Modholderpladerne på fremføringsenhederne åbnes.
\f
5. Papiret isættes i fremføringsenhederne og modholderpladerne
lukkes ned over papiret. Om nødvendigt løsnes drejelåsene til
fremføringsenhederne og der foretages justeringer med hensyn
til papirbredde og med hensyn til grovindstilling af papirets
position i sideværts retning. Herefter låses fremføringsenhe-
derne igen. Til slut justeres papirstramningen i tværgående
retning (fremføringshuller let deformerede) ved brug af
fingerhjulene.
6. Papiret indstilles med afrivningslinien i ny side position,
idet FORMS RESET kontakten holdes nedtrykket og papiret
flyttes ved at dreje på VERTIKAL INDSTILLING (GROV) håndhju-
let.
7. Finindstilling af papiret foretages med VERTIKAL INDSTILLING
(FIN) og HORISONTAL INDSTILLING håndhjulene. Til støtte ved
indstillingen findes indeksmærker for udskriftsliniens place-
ring og en skala ved venstre margen (jævnfør fig. 7).
Figur 7: Papirindstilling; indeksmærke, skala.
\f
8. Kontrollr ligeledes om PAPIRTYKKELSE håndhjulet er indstillet
svarende til den formulartykkelse, der er i brug. Indstillin-
gen indikeres på MULTI-COPY skalaen.
9. Luk tromlelågen og topdækslet.
10. READY indikatoren skulle nu være tændt og linieskriveren er
klar til at blive koblet on-line.
\f
F_ 4_._ _ _ _ _ _ _ _ _S_U_P_P_L_E_R_E_N_D_E_ _I_N_F_O_R_M_A_T_I_O_N_ 4.
4_._1_ _ _ _ _ _ _ _F_r_e_m_s_t_i_l_l_i_n_g_ _a_f_ _V_F_U_ _s_t_r_i_m_m_e_l_ 4.1
Linieskriveren benytter en 12-kanal hulstrimmel. Strimlen kan
programmeres som følger ved hjælp af et håndhulleudstyr:
1. Længden af VFU strimlen beregnes efter følgende formel:
a) antal huller i VFU strimmel = 6 x længden af formularen i
tommer, hvis der skal arbejdes med 6 linier pr. tomme,
eller
b) antal huller i VFU strimmel = 8 x længden af formularen,
hvis der skal arbejdes med 8 linier pr. tomme.
2. Strimlen placeres i håndhulleudstyret og der hulles et hul i
k_a_n_a_l_ _1_ svarende til ny side position.
Figur 8: Håndhulleudstyr.
\f
3. Skal der arbejdes med vertikal tabulering, tælles frem til det
sted, hvortil tabuleringen skal ske, og der hulles et hul i en
af kanalerne u_n_d_t_a_g_e_n_ i kanal 1. Hvilken kanal, der skal be-
nyttes, afhænger af det aktuelle udskriftsprogram.
4. Gentag trin 3 for eventuelle yderligere vertikale tabulerin-
ger.
B_e_m_æ_r_k_:
En VFU strimmel bør være mindst 10 tommer i omkreds. Medfører
den aktuelle formular en korte VFU strimmel, skal der laves en
strimmel svarende til 2 eller 3 formularer i forlængelse af
hinanden. VFU strimlen skal danne en sløjfe stor nok til at
kunne beværes uhindret i strimmellæseren.
Strimlen kan herefter splejses på følgende måde:
5. Strimlens to ender placeres over hinanden, så perforeringshul-
lerne falder sammen og strimmelenderne ligger korrekt i for-
længelse af hinanden.
6. Lim enderne sammen, eller brug tape til splejsningen - undgå
at huller tildækkes.
VFU strimlen sættes i læseren som beskrevet i 3.2.
4_._2_ _ _ _ _ _ _ _S_k_i_f_t_ _a_f_ _f_a_r_v_e_b_å_n_d_ 4.2
Gå frem som følger:
1. Åben topdækslet og tromlelågen. Sving tromlelågen helt ud til
siden.
A_D_V_A_R_S_E_L_: Vent indtil skrivetromlen har stoppet sin rotation,
før næste trin påbegyndes.
\f
2. Papirstrammeren (se fig. 9) holdes med den ene hånd og udlø-
serknappen trækkes ud med den anden, hvorefter papirstrammer-
bjælken kan fjernes.
N_B_:
Sammen med farvebåndet leveres et par plastikhandsker - det skal
kraftigt tilrådes at bruge disse, nårsomhelst man arbejder med
farvebåndet.
3. Farvebåndsrullerne frigøres nu, idet den enkelte rulle skubbes
mod venstre som angivet på figuren. Den fjederbelastede holder
flyttes derved og rullen kan løftes fri af den fastmonterede
holder. Begge ruller fjernes på denne måde.
Figur 9: Skift af farvebånd.
4. De to nye ruller tages frem og holdes således, at det nye
farvebånd afrulles fra overkanten af den øverste rulle.
5. Den nye båndrulle isættes øverst, idet enden af båndrullen
skubbes mod den fjederbelastede holder, hvorved den modsatte
ende kan placeres i den fastmonterede holder. Man skal sikre
sig, at medbringerstiften i holderen fanger i udfræsningen i
enden af båndrullen.
\f
6. Der afrulles nu så meget farvebånd, at den nederste båndrulle
kan isættes. Det afrullede farvebånd trækkes ned over skrive-
tromlen via farvebåndsføringerne. Selve båndrullen sættes i
som anvist i trin 5.
7. Papirstrammerbjælken sættes i igen; først sættes den på plads
i konsolenden, derefter skubbes den ind i føringen i modsatte
side. Udløserknappen trækkes ud, mens bjælken sættes ind i
føringen. Når papirstrammeren er isat, kan den indstilles ved
hjælp af indekseringshakkene i føringsskinnen.
8. Er der papir i linieskriveren, lukkes og låses tromlelågen og
topdækslet lukkes. Hvis der er tændt for linieskriveren,
trykkes på CLEAR kontakt.
4_._3_ _ _ _ _ _ _ _V_e_d_l_i_g_e_h_o_l_d_e_l_s_e_ 4.3
1_ _g_a_n_g_ _h_v_e_r_ _u_g_e_ _(_h_v_e_r_ _4_0_ _d_r_i_f_t_s_t_i_m_e_r_)_
Papirfremføringsmekanisme m.m. rengøres med støvsuger.
Printtromlen rengøres med en børste vædet i isopropyl alkohol, og
aftørres med en fnugfri klud.
Brug ikke for megen rensevæske, da denne kan trænge ind i lejerne
og ødelægge disse.
Farvebåndsstyret rengøres med isopropyl alkohol på en klud.
\f
F_
\f
F_ Figurtekst 42-i1529
1) Inspektionsrude PAPIRTYK-
KELSE
Betjeningspanel
5) FASE
INDSTILLING
Tromlelåge
Hovedafbryder 6) TAPE START
3) Lås 7) Indeksmærke,
udskrivnings-
Fingerhjul linie
4) MULTI- Indeksskala,
COPY venstre margin
HORISONTAL 9) Udløserknap
INDSTILLING
Tromlelåge- Papirstram-
låsearm merbjælke
VERTIKAL Konsol
INDSTILLING
(FIN)
VERTIKAL Skubberetning
INDSTILLING ved skift af
(GROV) båndrulle
\f
\f
i
T_A_B_L_E_ _O_F_ _C_O_N_T_E_N_T_S_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _P_A_G_E_
1. INTRODUCTION ........................................... 1
2. OPERATING CONTROLS ..................................... 2
2.1 Control Panel ..................................... 2
2.2 Paper Transport Unit .............................. 4
2.3 Printing Adjustment Controls ...................... 5
2.4 Vertical Format Unit .............................. 7
2.5 Colour Ribbon ..................................... 7
3. OPERATING PROCEDURES ................................... 8
3.1 Power On/Off ...................................... 8
3.2 Loading the VFU Tape .............................. 8
3.3 Loading the Paper Form ............................ 9
4. SUPPLEMENTARY INFORMATION .............................. 12
4.1 VFU Tape Programming .............................. 12
4.2 Colour Ribbon Replacement ......................... 13
4.3 Maintenance ....................................... 15
\f
ii
\f
1_._ _ _ _ _ _ _ _ _I_N_T_R_O_D_U_C_T_I_O_N_ 1.
Figure 1: The line printer.
The mains power is switched on/off by means of the mains power
circuit breaker located as shown. Note that the power-on
switching always must be manually performed a_f_t_e_r_ having switched
power on to the computer system (due to start peak currency).
The control panel can be attended directly whereas the top cover
and the drum gate have to be opened in order to load paper, to
adjust print position, etc. C_a_u_t_i_o_n_: Opening the drum gate will
expose rotating parts; wait for the rotation to stop before
entering any operating procedures.
\f
F_ 2_._ _ _ _ _ _ _ _ _O_P_E_R_A_T_I_N_G_ _C_O_N_T_R_O_L_S_ 2.
2_._1_ _ _ _ _ _ _ _C_o_n_t_r_o_l_ _P_a_n_e_l_ 2.1
Figure 2: Control panel.
1) POWER ON - lights when power is applied to
indicator printer. Power must always be
manually switched on/off with the
mains power circuit breaker (see
fig. 1).
2) ALARM - when lit indicates that a fault
indicator condition exists. A fault condition
takes the printer off-line.
3) CLEAR - pressing the CLEAR switch will
switch master clear the printer logic.
\f
4) READY - when lit indicates that no fault
indicator condition exists and that the
printer is ready to be placed
on-line.
5) ON/OFF LINE - switches the printer on-line or
push-button/indicator off-line. The printer is on-line
when the switch is illuminated. At
initial power up the indicator will
be off.
6) TOP-OF-FORM - pressing the TOP-OF-FORM push-
push-button button advances the paper to the
top of the next form. This control
functions only when the printer is
off-line.
7) PAPER STEP - pressing the PAPER STEP switch
push-button advances the paper to the next
line. This control only functions
when the printer is off-line.
8) FORMS RESET - when held in the down position
switch allows the paper to be repositioned
with the VERTICAL ADJUSTMENT
(COARSE) control when power is on.
9) 6 LPI / 8 LPI - for selecting vertical spacing of
selector switch six lines per inch or eight lines
per inch.
10) Fault indicators - when lit the fault conditions
indicated are as follows:
\f
HAMMER - fault in the hammer circuitry;
FORMAT - fault condition in the format
controller - to reset use the FORMS
RESET switch (8);
RIBBON - fault in ribbon motor or torn
ribbon;
GATE - drum gate is unlacthed;
PAPER - paper is out or paper is torn;
TAPE (optional) - fault in VFU (Vertical Format
Unit).
2_._2_ _ _ _ _ _ _ _P_a_p_e_r_ _T_r_a_n_s_p_o_r_t_ _U_n_i_t_ 2.2
Figure 3: Paper transport; right-hand tractor.
\f
The supply of print forms is positioned at the printer front
below the drum gate. During printing the paper is advanced
through the printer by means of the tractors and the print-outs
leave the printer to the rear.
Paper is loaded to the sprocket belts of the tractors by opening
the pressure plates, inserting the paper, and closing the
pressure plates.
The tractors can be moved laterally when unlocking the tractor
locks. Small corrections of the tractor positions, especially to
achieve correct horizontal paper tension, can be accomplished
using the tension adjustment wheels. Correct paper tension will
cause the sprocket holes to be slightly deformed.
2_._3_ _ _ _ _ _ _ _P_r_i_n_t_i_n_g_ _A_d_j_u_s_t_m_e_n_t_ _C_o_n_t_r_o_l_s_ 2.3
Figure 4: Printing adjustment knobs.
\f
The position of the print form can be adjusted to obtain printing
at precisely predetermined positions. The print form can be moved
vertically and horizontally by means of the following adjustment
knobs (located to the right of the control panel as shown in fig.
4):
VERTICAL ADJUSTMENT - allows the operator to position the
(COARSE) form in predetermined increments.
handwheel To make a coarse adjustment, the
FORMS RESET switch must be held in
the down position.
VERTICAL ADJUSTMENT - permits adjustment between the
(FINE) increments of the coarse adjust-
handwheel ment. To make a fine adjustment,
the FORMS RESET must be in the up
position.
HORIZONTAL ADJUSTMENT - permits fine adjustments of the
handwheel horizontal position of the form
(coarse adjustments should be
obtained by moving the tractors).
Controls are further provided for the following adjustments:
FORMS THICKNESS - located below the VERTICAL ADJUST-
handwheel MENT (COARSE) handwheel (see fig.
4). Used to adjust the spacing
between the character drum and the
hammer bank between which the paper
moves. This adjustment is used to
compensate for the thickness of
(MULTI-COPY) multipart forms. Position is indi-
scale cated by MULTI-COPY indicator.
\f
PHASE ADJUSTMENT - located above the logic enclosure
(see fig. 5). Allows the operator
to adjust the hammer firing to
maintain equal print density at the
top and bottom of the character.
Figure 5: Phase adjustment.
2_._4_ _ _ _ _ _ _ _V_e_r_t_i_c_a_l_ _F_o_r_m_a_t_ _U_n_i_t_ 2.4
See 4.1: VFU Tape Programming, and 3.2: Loading the VFU Tape.
2_._5_ _ _ _ _ _ _ _C_o_l_o_u_r_ _R_i_b_b_o_n_ 2.5
See 4.2: Colour Ribbon Replacement.
\f
F_ 3_._ _ _ _ _ _ _ _ _O_P_E_R_A_T_I_N_G_ _P_R_O_C_E_D_U_R_E_S_ 3.
3_._1_ _ _ _ _ _ _ _P_o_w_e_r_ _O_n_/_O_f_f_ 3.1
Power on/off is controlled with the mains power circuit breaker
and is indicated at the control panel by the POWER ON indicator.
Note: Power to the printer must always be switched on a_f_t_e_r_
having switched on power to the computer sytem. To maintain
this succession, power should be switched off at the
printer b_e_f_o_r_e_ switching off the system.
If the colour ribbon, the VFU tape and the paper forms are ready
for operation, the printer is taken on-line using the ON/OFF LINE
push-button.
3_._2_ _ _ _ _ _ _ _L_o_a_d_i_n_g_ _t_h_e_ _V_F_U_ _T_a_p_e_ 3.2
Having programmed the VFU tape as outlined in 4.1, the tape is
loaded as follows:
1. Using the ON/OFF LINE push-button, the printer is taken
off-line.
2. Open the printer top cover. Lift the tape loop reader handle
until the drive sprocket shoe clears the drive sprocket teeth.
3. Place the tape loop over the tape loop reader capstan and fit
the tape drive holes over the drive sprocket teeth with
channel 1 towards the front of the printer (see fig. 6).
4. Close the tape loop reader and ensure that the tape remains
properly attached to the drive sprocket while the drive
sprocket shoe clamps it in place.
5. Press the TAPE START switch, and the tape will load.
\f
6. Ensure that paper and ribbon are properly installed.
7. After the cover is secured and the door closed, the printer is
ready to operate.
N_o_t_e_: With no tape loop installed, tape loop instructions will
behave as if all holes are punched in all channels.
Figure 6: Loading the VFU tape.
3_._3_ _ _ _ _ _ _ _L_o_a_d_i_n_g_ _t_h_e_ _P_a_p_e_r_ _F_o_r_m_ 3.3
1. Switch power on, but let the printer stay in the off-line
mode.
2. Press and release the TOP-OF-FORM push-button (whereby the
tractors are advanced to the top of form position).
3. Lift the printer cover and open the drum gate (for position of
drum gate latch, see fig. 4).
C_A_U_T_I_O_N_: Wait for character drum to stop rotation before
proceeding to the next step.
4. Open the spring-loaded pressure plates on the tractors.
\f
5. Place the paper in the tractors and close the pressure plates.
If necessary, loosen the tractor locks and move the tractors
laterally to adjust for correct paper width and for coarse
horizontal positioning of paper form. Thighten the tractor
locks. Adjust for correct lateral paper tension (sprocket
holes slightly deformed) using thumbwheels.
6. Align the paper perforation to the top of form position by
depressing FORMS RESET switch and rotating the tractor shaft
using the VERTICAL ADJUSTMENT (COARSE) handwheel.
7. Fine adjustments of the paper form can be accomplished using
the VERTICAL ADJUSTMENT (FINE) and the HORIZONTAL ADJUSTMENT
handwheels. To support the adjustments the print line index
and the left margin index are provided as indicated in fig. 7.
Figure 7: Adjustment indexes.
8. Also check that the FORMS THICKNESS control as indicated by
the MULTI-COPY scale (see fig. 4) is set correctly for the
form being used.
\f
9. Close the drum gate and lower the printer cover.
10. The READY indicator should now light and the printer is ready
to be taken on-line.
\f
F_ 4_._ _ _ _ _ _ _ _ _S_U_P_P_L_E_M_E_N_T_A_R_Y_ _I_N_F_O_R_M_A_T_I_O_N_ 4.
4_._1_ _ _ _ _ _ _ _V_F_U_ _T_a_p_e_ _P_r_o_g_r_a_m_m_i_n_g_ 4.1
The printer applies a 12-channel tape in the vertical format unit
(VFU). The VFU tape can be programmed as follows using a hand
punch device:
1. Calculate the length of the VFU tape using the following:
a) number of holes in VFU tape = 6 x length of the form in
inches for forms requiring 6 lines per inch,
or
b) number of holes in VFU tape = 8 x length of the form in
inches for forms requiring 8 lines per inch.
2. Place the VFU tape in the hand punch device and punch a hole
in c_h_a_n_n_e_l_ _1_ corresponding to top of form.
Figure 8: Hand punch device.
\f
3. If vertical tab hole(s) are required then count forward to the
desired point and punch a hole in any other channel except
channel 1. The actual channel used depends on the print-out
program.
4. Count forward to the next vertical tab position, if more are
required, and punch a hole in another channel.
N_o_t_e_: The VFU tape loop should be a minimum of 10 inches in
circumference. If the form is too short, make the VFU tape
loop two or three form lengths long to permit the tape loop
to ride freely on the tape loop reader.
Having programmed the tape, it is spliced the following way:
5. Overlap the two ends of the tape so that the sprocket holes
coincide to properly align the two ends. Take care to ensure
that the length of the tape (in number of holes) is equal to
(or a multiple of, in the case of two or more forms on one VFU
tape) the form length in lines.
6. Glue the ends of the tape together or secure with adhesive
splicing tape.
The VFU tape can then be loaded as described in 3.2.
4_._2_ _ _ _ _ _ _ _C_o_l_o_u_r_ _R_i_b_b_o_n_ _R_e_p_l_a_c_e_m_e_n_t_ 4.2
To remove the old ribbon and load a new one, proceed as follows:
1. Lift the printer cover, and swing the drum gate fully open.
C_A_U_T_I_O_N_: Wait for the character drum to stop rotating before
proceeding to the next step.
2. Holding the paper tensioner with one hand (see fig. 9), pull
the paper tensioner plunger knob, and remove the paper
tensioner from drum gate.
\f
3. Using the gloves provided, remove the old ribbon by pushing
the upper ribbon core against the ribbon core spring. Repeat
for lower ribbon core.
Figure 9: Drum and ribbon assembly.
4. Still using the gloves provided, hold the ribbon cores
together and remove the new ribbon from the box.
N_o_t_e_: The ribbon is installed so that it unwinds from top of
core.
5. Place the fully wound ribbon core over the top floating ribbon
holder.
6. Push the ribbon core against the floating ribbon holder spring
and place the opposite ribbon core end over the top fixed
ribbon holder. Ensure that the holder guide pin slips into the
slot on the core end.
7. Unwind the second ribbon core and bring the ribbon down over
the character drum and the ribbon guide bars. Once in
position, install the ribbon core on bottom ribbon holders as
outlined for the upper ribbon core.
\f
8. Install the paper tensioner by inserting the paper tensioner
block into position and pushing the tensioner against the
tensioner knob indexing slot while pulling the knob to allow
slot engagement. Once engaged, release knob.
9. If printer paper is installed, close and latch drum gate;
lower printer cover. If power is on, press the CLEAR switch.
4_._3_ _ _ _ _ _ _ _M_a_i_n_t_e_n_a_n_c_e_ 4.3
1_ _t_i_m_e_ _p_e_r_ _w_e_e_k_ _(_p_e_r_ _4_0_ _r_u_n_n_i_n_g_ _h_o_u_r_s_)_
The paper transport mechanism and the area around it is cleaned
using a vacuum-cleaner.
The print drum is cleaned using a brush damped with isopropyl
alcohol. Afterwards the drum is wiped with a lintfree cloth.
Do not use too much fluid; the excessive fluid may easily
penetrate the bearings and damage these.
The colour ribbon guides are cleaned using a cloth damped with
isopropyl alcohol.
\f
F_
\f
F_ figurtekst 42-i1528:
1) Window MULTI-COPY
Control Drum Gate
Panel Latch
Drum Gate
Mains Power 5) PHASE
Circuit Breaker ADJUSTMENT
3) Tractor Lock 6) TAPE START
Tension 7) Print Line
Adjustment Index
4) VERTICAL Left Margin
ADJUSTMENT Index
(COARSE)
VERTICAL 9) Tensioner
ADJUSTMENT Plunger
(FINE) Knob
HORIZONTAL Paper
ADJUSTMENT Tensioner
Block
FORMS Paper
THICKNESS Tensioner
To remove
or replace
ribbon core
- push as
shown.
\f
i
T_A_B_L_E_ _O_F_ _C_O_N_T_E_N_T_S_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _P_A_G_E_
1. CONTROL PANEL .......................................... 1
2. OPERATING PROCEDURES ................................... 2
2.1 Paper Tape Loading ................................ 2
2.2 Paper Tape Unloading .............................. 3
3. SUPPLEMENTARY INFORMATION .............................. 5
3.1 Paper Tapes ....................................... 5
3.2 Maintenance ....................................... 6
\f
ii
\f
1_._ _ _ _ _ _ _ _ _C_O_N_T_R_O_L_ _P_A_N_E_L_ 1.
Figure 1: Control panel.
Power On/Off - power is automatically switched
(no operator control) on/off as the system is switched
on/off.
1) RESET - when pressed down, clears the paper
push-button tape reader buffer and reads the
first characters of the paper tape
into the reader buffer. Then the
reader waits for a system command
before continuing to read.
2) READ - when pressed down, reads the first
push-button characters of the paper tape into
the buffer without clearing the
buffer first. This enables
additional tapes to be read in di-
rect continuation of the first
without loss of information.
3) SKIP - when pressed down, the tape runs
push-button out at full speed without any
characters being read.
4) UP - when pressed down, raises the
push-button pressure lid.
\f
F_2_._ _ _ _ _ _ _ _ _O_P_E_R_A_T_I_N_G_ _P_R_O_C_E_D_U_R_E_S_ 2.
2_._1_ _ _ _ _ _ _ _P_a_p_e_r_ _T_a_p_e_ _L_o_a_d_i_n_g_ 2.1
Figure 2: Tape loading.
To load a paper tape preceed as follows:
1. Push the TAPE DOOR BUTTON. This opens TAPE DOOR and PRESSURE
LID simultaneously.
2. Before loading the tape, adjust the two TAPE GUIDE SELECTOR
knobs to the width of the tape to be read (refer to fig. 3).
Make sure that both knobs are set to the same SELECTOR index.
The SELECTOR settings '8', '7', '5', or 'OL', respectively,
correspond to tape widths of 1, 7/8, 11/16 inches, or Olivetti
Tape (see 3.1: Paper Tapes).
\f
3. Insert the roll of paper tape into the TAPE ROLL ROOM, pull
the free tape end over the ROLLER and close the TAPE DOOR.
4. Now position the paper tape between PRESSURE LID and TAPE
GUIDE and carefully close the PRESSURE LID.
The paper tape must be loaded with the reference edge facing
the operator (see 3.1: Paper Tapes).
Figure 3: Tape guide; reading facility.
5. Depends on the circumstances, either:
a) when reading a paper tape independent of other tapes:
Push the RESET button. Thereby characters are read into the
buffer and the reader will wait for a command from the
system before continuing to read, or
b) when reading a paper tape in direct continuation of a
previously read tape: Push the READ butten. The reader will
proceed reading according to system commands.
2_._2_ _ _ _ _ _ _ _P_a_p_e_r_ _T_a_p_e_ _U_n_l_o_a_d_i_n_g_ 2.2
In normal operation the tape will be ejected on its own when
reading comes to the tape end.
\f
If the tape reading otherwise has to be terminated and the tape
removed from the reader, then press the SKIP button. The tape not
read so far will then run out at full speed without being read.
Should tape breakage occur, then open the TAPE DOOR by pressing
the TAPE DOOR BUTTON and remove the remainder of the tape from
the reader.
\f
F_ 3_._ _ _ _ _ _ _ _ _S_U_P_P_L_E_M_E_N_T_A_R_Y_ _I_N_F_O_R_M_A_T_I_O_N_ 3.
3_._1_ _ _ _ _ _ _ _P_a_p_e_r_ _T_a_p_e_s_ 3.1
The paper tapes to be used with the reader are shown below
including some specifications regarding TAPE GUIDE SELECTOR
settings (refer to fig. 3).
Reference edge
Nominal width: 25.4 mm
Width of tape guide: 25.5 + 0.05/-0.00 mm
Figure 5: 1-inch tape, 8 tracks.
Reference edge
Nominal width:22.2 mm
Width of tape guide: 22.3 + 0.05/-0.00 mm
Figure 6: 7/8-inch tape, 7 tracks.
Reference edge
Nominal width:17.5 mm
Width of tape guide: 17.6 + 0.05/-0.00 mm
Figure 7: 11/16-inch tape, 5 tracks. \f
Reference edge
Nominal width:20.5 mm
Width of tape guide:20.6 + 0.00/-0.05 mm
Longitudinal spacing: 3 mm minimum between characters
Figure 8: Olivetti tape, rectangular holes, 6 tracks
3_._2_ _ _ _ _ _ _ _M_a_i_n_t_e_n_a_n_c_e_ 3.2
1_ _t_i_m_e_ _p_e_r_ _w_e_e_k_ _(_p_e_r_ _4_0_ _r_u_n_n_i_n_g_ _h_o_u_r_s_)_
Clean the tape roll room, the tape guide, and the read-head using
a soft brush and a vacuum-cleaner. The paper guide and the read
head is further wiped with a soft lint free cloth damped with
isopropyl alcohol.
\f
F_ Figurtekst til 42-i1768
2) Deflection 3) PRESSURE
Post LID
Roller SELECTOR
TAPE DOOR SELECTOR
BUTTON
Opening for
Strips of Tape
TAPE CORRIDOR
TAPE DOOR
Tape Roll Room
TAPE
GUIDE
PRESSURE
LID
\f
i
T_A_B_L_E_ _O_F_ _C_O_N_T_E_N_T_S_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _P_A_G_E_
1. CONTROLS ............................................... 1
2. OPERATING PROCEDURE .................................... 3
3. SUPPLEMENTARY INFORMATION .............................. 4
3.1 Maintenance ....................................... 4
\f
ii
\f
1_._ _ _ _ _ _ _ _ _C_O_N_T_R_O_L_S_ 1.
Figure 1: Control panel.
1) POWER - lights when the reader is switched
indicator on, which automatically takes pla-
ce when the system is switched on.
Note: The power switch on the rear
side of the reader should be
switched ON at first time of ope-
ration. It should then be used for
servicing purposes only.
2) LOAD/RUN - for raising and lowering the tape
lever guide when inserting or removing
paper tape.
\f
3) RESET - clears the reader buffer and
push-button reads the first characters of the
paper tape into the reader buffer.
The reader then waits for a system
command to continue reading.
4) READ - reads characters into the cha-
push-button racter buffer without clearing
the buffer first. This enables
additional tapes to be read in
direct continuation of the first
without loss of information.
\f
F_ 2_._ _ _ _ _ _ _ _ _O_P_E_R_A_T_I_N_G_ _P_R_O_C_E_D_U_R_E_ 2.
The tape is loaded as follows:
1. Select the LOAD/RUN lever to LOAD.
2. Place the tape roll in the tape roll box. The tape must
unwind from bottom of tape roll. The reference edge of the
tape must be facing the front of the reader. Inser the tape
(8-track tapes only) into the tape guide.
Figure 2: Paper tape, 8-track.
3. Select the LOAD/RUN lever to RUN.
4. Depress the RESET or the READ push-button depending on the
circumstances (refer to the description of these two control
functions).
The paper tape reader is now controlled by the system and
will await system commands before reading further characters.
\f
F_ 3_._ _ _ _ _ _ _ _ _S_U_P_P_L_E_M_E_N_T_A_R_Y_ _I_N_F_O_R_M_A_T_I_O_N_ 3.
3_._1_ _ _ _ _ _ _ _M_a_i_n_t_e_n_a_n_c_e_ 3.1
1_ _t_i_m_e_ _p_e_r_ _w_e_e_k_ _(_p_e_r_ _4_0_ _r_u_n_n_i_n_g_ _h_o_u_r_s_)_
Clean the tape roll box, the tape guide and the read-head using
a soft brush and a vacuum-cleaner. Further the read-head is
cleaned by damping a piece of paper tape with isopropyl alcohol
and moving it through the reading mechanism a couple of times.
\f
i
I_N_D_H_O_L_D_S_F_O_R_T_E_G_N_E_L_S_E_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _S_I_D_E_
1. BETJENINGSPANEL ........................................ 1
2. BETJENINGSVEJLEDNING ................................... 3
3. SUPPLERENDE INFORMATION ................................ 4
3.1 Vedligeholdelse ................................... 4
\f
ii
\f
1_._ _ _ _ _ _ _ _ _B_E_T_J_E_N_I_N_G_S_P_A_N_E_L_ 1.
Figur 1: Betjeningspanel.
1) POWER - lyser, når læseren er tændt, hvil-
indikator ket sker automatisk, når systemet
tændes.
Bemærk: På bagsiden af læseren fin-
des en afbryder; denne bør stilles
på ON første gang læseren betjenes
og herefter kun bruges i service
øjemed.
2) LOAD/RUN - vippearmen bruges til at sænke/hæve
vippearm føringsskinnen til hulstrimlen un-
der ilægning/udtagning af strim-
len.
\f
3) RESET - når der trykkes på denne knap, bli-
trykknap ver læserens buffer nulstillet og
indlæsning påbegyndes. På denne
måde startes læsning af en ny
strimmel uden sammenhæng med en
tidligere indlæst strimmel.
4) READ - når der trykkes på denne knap,
trykknap fortsættes indlæsning i direkte
forlængelse af en tidligere indlæst
strimmel.
\f
F_ 2_._ _ _ _ _ _ _ _ _B_E_T_J_E_N_I_N_G_S_V_E_J_L_E_D_N_I_N_G_ 2.
En hulstrimmel lægges i læseren på følgende måde:
1. LOAD/RUN vippearmen stilles på LOAD.
2. Strimmelrullen placeres i plastboxen. Strimlen skal afrulles
fra bunden af strimmelrullen. Strimlens reference kant skal
vende ind mod læserens frontpanel. Strimlen føres gennem
strimmelføringen. Bemærk: Der kan kun anvendes strimler med 8
spor.
Figur 2: Hulstrimmel, 8 spor.
3. LOAD/RUN vippearmen stilles på RUN.
4. Tryk på RESET eller RUN trykknappen afhængig af situationen
(jævnfør beskrivelsen af disse to betjeningsfunktioner).
Strimmellæseren er nu styret af systemet og afventer system-
ordre, før der indlæses flere tegn.
\f
F_ 3_._ _ _ _ _ _ _ _ _S_U_P_P_L_E_R_E_N_D_E_ _I_N_F_O_R_M_A_T_I_O_N_ 3.
3_._1_ _ _ _ _ _ _ _V_e_d_l_i_g_e_h_o_l_d_e_l_s_e_ 3.1
U_G_E_N_T_L_I_G_T_ _(_h_v_e_r_ _4_0_ _d_r_i_f_t_s_t_i_m_e_r_)_
Papirkammer, papirstyr og læsehoved rengøres med en blød pensel
og støvsuger. Desuden renses læsehovedet ved at føre et stykke af
en hulstrimmel fugtet med isopropyl alkohol nogle gange frem og
tilbage gennem læsemekanismen.
\f
F_ Figurtekst 42-i1770
2) REFERENCE KANT
FREMLØBSRETNING
SPOR 1
SPOR 2
SPOR 3
FREMFØRINGSHULLER
SPOR 4
SPOR 5
SPOR 6
SPOR 7
SPOR 8
\f
«eof»