|
DataMuseum.dkPresents historical artifacts from the history of: CP/M |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CP/M 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»