|
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: 126848 (0x1ef80) Types: TextFile Names: »D159«
└─⟦ae2411776⟧ Bits:30008864 Diskette med tekster der formodes at være 31-D-152…161 └─⟦this⟧ »D159«
\f *des80user sysdok. des80sys section.1 vers.13 des80cat.des80test list.yes, password.old start des80 user cat.upd, v1 10.10.1979 10.21.59 des80user sysdok.des80sys section.1 vers.13 des80cat.des80test, list.yes password.old startsysdok: des80sys now aut.vers.13 (last vers.19) section1. user-file line 160 warning: previous operator no longer active end des80 user cat.upd, v1 10.10.1979 10.22.13 cpu: 2 end 154 *finis end 11 sec job ilm2 log flej date 1979.10.10 10.22.17 Figure 58. B_._3_ _ _ _ _ _ _ _E_r_r_o_r_-_m_e_s_s_a_g_e_s_ B.3 The general structure underlying the error-messages and warning print outs is shown below: Error: Line <line _no.' <text' Warning: When errors occur the processing of the program will be terminated, and no user description file will be created. The processing is not affected by warnings. All error-messages and warnings are converted on correct out. \f The error-messages and warnings which may appear have been compiled in a list below: Error. The number of users is larger than the maximum number of users allowed. Increase the maximum number of users. Error. The number of operators is larger than the maximum number of operators allowed. Increase the maximum number of operators. Error. The physical operator No is already in use The operator number has already been used by an operator operating under the same user or another user. Error. Operator No exceeds userupdat>s demension. DES80 can only handle users with 25 operators. Error. The maximum number of operators exceeds 99, which is the current maximum the sy- stem can process. DES80 can only handle a total of 99 operators. Error. Syntax error in a catalog line. Re syntax see p. Error. Syntax error in a user line Re syntax see p. \f Error. Syntax error in a cat-baseline Re syntax see p. Error. Syntax error in a user-baseline Re syntax see p. Error. Syntax error in an operator line Re syntax see p. Warning. A number contains too many digits The number of digits must be less than or equal 12. Warning. A text string is too long The number of characters in a text must not exceed 10. Warning. A section part is too long. See Ref. 5. Warning. Too many levels in a section. See Ref. 5. Warning. The maximum number of users has been decreased Check whether the change was intentional. Warning. The maximum number of operators has been decreased. \f Check whether the change was intentional. Warning. Previous operator identification has been deleted. When a new and an old operator identification attached to an operator number differ, the old identification is deleted. Warning. Previous operator is no longer active. The number of operators has been decreased. \f F_ C_._1_ _ _ _ _ _ _ _D_E_S_8_0_U_P_D_A_T_E_ C.1 P_r_o_g_r_a_m_ _e_x_e_c_u_t_i_o_n_ Call of DES80UPDATE is used as a frame around the running program system - i.e. before and after each run with DES80ONLINE a run with DES80UPDATE is executed. The syntax and semantics for calling the program are descreibed below. des80update base.<low'.<up' init run. finis 1 des80cat. <user _file _name' 0 1 virtual. <file _name' 0 1 log. <log _name' 0 yes 1 list. no 0 1 listout. <list _name' 0 des80update is the name of the program \f base is the standard base for the DES80 systems private files. These comprise the user description file, the virtual file, and the programs of the system. Please notice that DES80UPDATE must run with a standard base, comprising A. This base and all the user bases. See fig. C.1 12879 user No 3>s base 12875 execution of user No. 2>s base DES80UPDATE on 12870 this base user No 1>s base 12865 DES80>s private base 12860 12860 Figure 59. <low' states the lower limit for the base of the DES80 system and is stated as an integer. <up' is the corresponding upper limit of the base. run There are two run types: init is an initialization run, where the users, whose ld-description has been altered since the last run, are initialized. finis is a termination run, in which the information from DES80ONLINE is transferred to the user file. des80cat. This item refers to the user description file. <user _file _ Standard is: des80cat.des80cat. name' \f virtual. The name of the virtual file is stated as shown in <file _name' the box on p. Standard is: virtual.des80data. log. This item states the name of the file, in which <log _name' the input transactions from the terminals are written. Standard is: log.des80log. listout. The transaction log contains all the lines, which <listout _ have been typed between an initialization and a name' terminating run. This parameter states the name of the file where the transaction log is written. Standard is: listout.listout. list This item states whether the transaction log is to be printed in a terminating run. Standard is: list.no. \f Example Fig. 60 shows an example of a jobfile by means of which an initialization run can be started. job des8 282932 time 3 0 size 50000 perm dk280928 100 1 mode list.yes des80update base.12860.12864, run.init, des80cat.des80test, virtual.des80data finis Figure 60. Fig. 61, shows an example of a transaction log. DES80 30.12.1979 10.59.40 DES80UPDATE', 25.5.79 TRANSACTION LOG PAGE 7 USER: 3 TERMINAL: 1 - 166 173 AM1 12341 23 59 23 30 174 * 195 4710 120 - 196 198 4710 100 199 BS 205 AM1 15551 0 0 0 0 221 BS 222 226 AM1 15551 1 59 1 59 227 230 4710 231 BS * 240 AS 0 0 0 0 - 241 Figure 61. \f C_._2_ _ _ _ _ _ _ _L_o_g_-_p_r_i_n_t_o_u_t_s_ C.2 For identification, documentation, and control purposes log-in-information on the run with DES- 80UPDATE is printed on out. The first page contains general information about the run. See fig. 62. A page is printed for each user, the contents of which being determined by the type of run. By ini- tialization runs the contents will be as shown in fig. 65. By termination runs one line pr. user is printed as shown in fig. 64. Fig. 65 shows examples of printouts of log in- formation from an initialization run by DES80UP- DATE. des80cat: user _name sysdok: user _sysdok section: No. name version: No created: date hour virtual file: file max: users operators number number Figure 62. \f user: user _identification descrip _file: descrip _name section _number insterted changed unchanged ld _name: local _data _name created: date hour by: initials * db files: db _file _name 0 Figure 63. \f F_ (figure 65)\f C_._3_ _ _ _ _ _ _ _E_r_r_o_r_-_m_e_s_s_a_g_e_s_ C.3 In the following section a distinction is made between errors and warnings. Errors affect DES80UPDATE as a whole and terminate the processing. Warnings are user specific. A user who has received a warning is excluded from further use of DES80, without this affecting the rest of the users. The error messages, which may appear, have been descreibed below: *** VIRTUAL FILE DOES NOT EXIST: name RESULT FROM MONITOR 42 LOOKUP ENTRY = <res' The virtual file, in which the information on status is stored, does not exists. *** VIRTUAL FILE CANNOT BE INITIALIZED: name RESULT FROM MONITOR 44 CHJANGE ENTRY = <res' The catalog tail of the virtual file cannot be altered by an initialization run. *** VIRTUAL FILE HAS NOT BEEN INITIALIZED: name \f The catalog tail (contant) of the virtual file is not correct. The error message may occur both du- ring an initialization run and a termination run. Content ought to be 9. *** SET CATBASE ERROR RESULT FROM MONITOR 72 SET CATBASE = <res' DES80UPDATE is not allowed to set the catalog base in question. Ownbase must be included in userbase, and the content equal or be contained in stdbase. ILLEGAL BASES The user base of the system does not comprise own base, i.e. the base in which the private files of the system are located. *** ERROR IN LOOKUP OF THE LOGFILE RESULT FROM MONITOR 42 LOOKUP ENTRY = <res' The error is either caused by a catalog io-error, or because the file does not exist, or because the format of the name is illegal. *** SORTPROCESS HARD ERROR: <cause of hard error' Parameter errors or hard errors from sortprocbs. *** AN ERROR IN THE SORTING OF THE LOG FILE Please contact the maintenance department *** A RECORD TYPE ERROR ON THE LOG FILE \f Please contact the maintenance department. *** OPEN OUT AREA HARD ERROR: <listout _name' <error _text' An error has been made when opening the area stated by the parameter: listout. The error text will be one from the list below: no area catalog i/o error monitor trouble no resources catalog base not standard name format illegal catalog inconsistent file in use. *** TOO MANY DATABASE FILES The maximum number of databases have been excee- ded. Above error causes that the ok.no bit is set at exit from DES80UPDATE. Below two errors only causes the warning.yes bit to be set. *** NO TERMINATION RUN HAS BEEN EXECUTED Initialization cannot be executed after initialization. The program exists. *** NO INITIALIZATION HAS BEEN EXECUTED \f Termination run cannot be executed after termina- tion run. The program exists. Below error is only to be considered as a message. *** LOG AREA NAME IS NOT UPDATED BY A TERMINA- TION RUN The parameter LOG should only be used at initia- lization. The parameter is neglegted. *** LD FILE IS NOT PRESENT IN DESCRIPFILE The chapter containing the local data description does not exist in the description file. *** THE SECTION TYPE OF THE LD FILE IS NOT IN SODA The ld-file has not been compiled with soda-ld. *** THE COMPILATION OF THE LD FILE IS ATTACHED WITH ERRORS. *** THE CONTROL RECORD FOR THE LD-FILE CANNOT BE LOCATED An error in the ld-file. Please contact the person in charge of maintenance. *** THE VERSION OF THE LD-FILE IS NOT THE ONE REQUESTED Please contact the person in charge of maintenan- ce. *** THE LD DESCRIPTION CONTAINS SEVERAL FILES \f Only one file is allowed. *** THE BLOCKLENGTH OF THE TRANSACTION FILE EXCEEDS THE ALLOWED NUMER OF SEGMENTS: <number' In DES80 <number' must be 1. The error can either be caused by an omission to use the parameter >block> in DATABASE80 (see Ref.1) or because the parameter was used incorrectly. *** DESCRIPTION FILE DOES NOT EXIST Please contact the person in charge of maintenance. *** THE FILE IS DEFECT The error mesaage can either mean that the file does not exist, or that the file is not a cf-file. *** THE TRANSACTION LOG ON <list _name' HAS NOT BEEN CONVERTED. The file <listout _name' is permanent and can be converted at one>s discretion. *** CONVERT <listout _name'<error _text' An error in connection with the conversion of the transaction log. The errortext will be one from the list below: cbuf exceeded. file not found logik scope temp resources exceeded file in use \f *** THE FILE CONTAINING THE SORTED RECORDS <log _name' HAS NOT BEEN REMOVED RESULT FROM MONITOR 48 REMOVE ENTRY = <res' The file <log _name' should be removed normally *** TOO MANY PERMANET VARIABLES: <number1' HALFWORDS USED <number2' HALFWORDS AT DISPOSAL <number1' states the illegal number of half words used by the permanent variables of the ld-de- scription, and <number2' states the legal number of half words. \f F_ D_._ _ _ _ _ _ _ _ _D_E_S_8_0_O_N_L_I_N_E_ D. Call of pro- The syntax and semantics for the call of program gram are descreibed below: des80online base. <low'.<up' input. <input _name' 1 virtual. <file _name' 0 1 duetp. <duet _file _name' 0 yes 1 withlog. no 0 1 maxinst. <number' 0 des80online is the name of the program base is the standard base for the private files of the DES80 system, se fig. 59. <low' is the lower limit for base of the DES80 system, and is stated as an integer. <up' is the corresponding upper limite for the base. input. This parameter may be used in two different ways: <input _name' \f When the system is operating, input to the program comes from the terminals via a process normally called DES80COM. Ref. 6 descreibes how this pro- cess is started. The name of the process is stated as <input _name'. When the system is being implemented to the cu- stomer and is in the debugging phase it is expe- dient to simulate input by means of data on a disc store. In that case the name of this file is stated as <input _name' virtual This is the name of the virtual file. <file _name' Standard is: des80data. duetp. This parameter states the name of the file in <duet _file _ which the compiled duet program is stored. name' Standard is: des80duet. withlog If the parameter specifies >yes> log information will be created on the disc store. If the para- meter specifies >no> no log will be created. If nothing has been specified a log will be created. The file name is specified.by the parameter log in the initialization run by DES80UPDATE maxinst. <number' states the maximum number of instructions <number' pr. data line. This prevents infinite loops in duet program. Standard value for <number' is 500. \f Example Fig. 66 shows an example of a job file starting DES80ONLINE. job des8 282932 time 2 0 size 90000 temp disc 2000 30, perm dk280928 100 1 mode list.yes des80online base.12860.12864, input.des80test, duetp.des80duet, virtual.des80data, withlog.yes finis Figure 66. \f F_ E_._ _ _ _ _ _ _ _ _T_R_A_N_S_F_O_R_M_E_R_ E. Purpose The program TRANSFORMER has been developed to cope with error situations (program, data, and system errors). By means of this program a bundle is transformed from the internal format to a text file, which can be used when running off-line. Background A bundle corresponds to up to three files in DES80>s private bases. The names of these files all begin with the letters WRK which are followed by 6 digits. One of the files contains the transactions gene- rated, and the two remaining files contain the originally typed lines with the status informa- tion. When typing data only one of the latter files are used, whereas when data are corrected both the latter files are used. File names To gain knowledge of the file names for a bundle the operator must log in as a priviledged operator for the user, to whom the bundle belongs. The in- formation converning the bundle is obtained by using the command @TEST1 as floows: @TEST1 bundle _name The system reacts with a print out of the type shown below: BUNDLE: TIMESHEET TRANSACTION FILE WRK000522 STATE: 0 0 0 0 0 TEXT: WRK 000523 VOUCHER: 10 LINE: 47 POSITION: 13355 \f In this example wrk000523 is to be used as the text status file. If the bundle is being corrected information about the old text file will be added. The following paragraphs give the syntax and se- mantics for calling the program TRANSFORMER. TRANSFORMER IN. <text _status _file' OUT. <result _file' YES 1 LIST. NO 0 1 LISTOUT. <listout _name' 0 transformer is the name of the program. in. this item states the name of the background area <text _status _ which is to be processed. file' out. this item states the name of the background area <result _file' in which the output, which will form the input for a later off-line run, is to be saved. list if >yes> is stated a listing will be created in an area of the backing store. If >no> is stated no such listing will be created. Error messages, if any, are always printed on current cat. Standard is: list.no. \f listout. This item states the name of the background area <listout _name' in which the listing is to be written. If the area does not exist already it will be created as a temporary file, which is automatically converted on the local printer. If the area has been created previously the operator in charge of the proces- sing must see to it himself that the area is con- verted. Standard is listout. listout. The listing comprises general information about the bundle and information about each line. Example An example with an error in a bundle is shown below. The bundle is transformed to a text file, which is corrected, and an off-line run is exe- cuted with the bundle as input. 1_._ _R_u_n_ _w_i_t_h_ _D_E_S_8_0_ @ ID JOHN @ SPECIAL @ OPENDB ALL THE DATABASE FILE EMPLOYEE FILE OPENED THE DATABASE FILE CASE FILE OPENED @ GET BUNDLE1 BUNDLE1 1120 17.09.1979 13.13.49 OPEN PRIVATE INPUT NOT FINISHED INPUT START ADM 619 30 79 HRS 200 40 SUM 40 ADM 020 30 79 *** EMPLNO. HAS ILLEGAL VALUE: 20 *** RECORD WITH KEY STATED DOES NOT EXIST IN SET 3 ***** EMPLOYEE DOES NOT EXIST: 0 ADM 020 30 79 \f @ OK *** EMPLNO. HAS ILLEGAL VALUE: 20 *** RECORD WITH KEY STATED DOES NOT EXIST IN SET 3 ***** EMPLOYEE DOES NOT EXIST: 0 LINE ACCEPTED HRS 200 40 SUM 40 @ SAVE BUNDLE1 1120 17.09.1979 13.19.44 SAVED PRIVATE INPUT FINISHED @ BYE THNAKS FOR TODAY Figure 67. 2_._ _R_u_n_ _w_i_t_h_ _D_E_S_8_0_ In fig. 68 the operator assigns himself privi- ledged status and uses the @ TEST1 command to learn the name of the text status file. @ ID JOHN @ SPECIAL @ TEST1 BUNDLE1 BUNDLE: BUNDLE1 TRANSACTION FILE: WRK 000253 STATE: 0 0 0 0 0 TEXT: WRK 000254 VOUCHER: 2 LINE: 6 POSITION: 10 390 @ BYE THNAKS FOR TODAY Figure 68. \f F_ (3. Run (with BOSS))\f F_ (CONTENTS OF LIST FILE:)\f (Executed under BOSS are:)\f Subsequently the following run will be executed under BOSS: 20/id/id john 70/020/620 save trans1 disc1 clear scope user trans1 get des80offl (correct input name when calling DES80ONLINE to: trans1) run F_._2_ _ _ _ _ _ _ _D_a_t_a_ _e_r_r_o_r_s_ F.2 Fig. 70 shows a list of error texts which are caused by data errors. The errors associated with texts 1 to 12 and 14 cause the typed line to be rejected but allow the typing of data to continue. The error associated with 13 is more serious and prevents the operator from typing further data till the error has been corrected. N_o_._ _ _E_R_R_O_R_T_E_X_T_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1 SYNTAX ERROR IN FIELD AFTER <name' 2 <name' HAS NOT BEEN TYPED 3 <name' HAS DECIMALS MISSING AFTER POINT 4 <name' HAS TOO MANY DECIMALS 5 <name' IS A TEXT WHICH HAS NOT BEEN FINIESHED 6 <name' IS A TOO LONG TEXT 7 LINE AFTER <name' HAS NOT BEEN TYPED 8 LINE MUST BE FINISHED AFTER <name' 9 SYNTAX ERROR IN FIELD AFTER <name' \f 10 <name' HAS ILLEGAL VALUE 11 RECORD WITH KEY SPECIFIED DOES NOT EXIST IN SET <no' 12 RECORD WITH KEY SPECIFIED ALREADY EXISTS <no' 13 LINE TYPE CAUSES SYTEM/PROGRAM ERROR 14 <name' HAS ILLEGAL VALUE Figure 70. For a more detailed description, please see Ref. 3. F_._3_ _ _ _ _ _ _C_o_m_m_a_n_d_ _E_r_r_o_r_s_._ F.3 Fig. 71 gives a survey of the error messages which are caused by command errors. For a more detailled description, please see Ref. 9, chapter 3. COMMAND NAME DOES NOT EXIST SYNTAX ERROR NAME OF BUNDLE IS TOO LONG OPERATOR HAS NOT BEEN ACCEPTED WRONG IDENTIFICATION THERE IS A PRINTLEDGED OPERATOR COMMAND CAUSES SYSTEM/PROGRAM ERROR NON-PRIVILEDGED OPERATOR TRANSACTION FILE EMPTY PREVIOUS TRANSACTION FILE NOT USED NO BUNDLES AVAILABLE BUNDLE IN USE BUNDLE PRIVATE BUNDLE NON-EXISTENT ERROR IN USE OF BUNDLE OPERATOR HAS NOT COMMENCED TYPING INPUT \f BUNDLE ALREADY EXISTING BUNDLE CONTAINING FORCED LINES EDIT/REPLACEMENT OPERATION FOR BUNDLE NOT FINISHED BUNDLE CONTAINING NON FINISHED VOUCHERS OPERATOR ATTACHED TO OTHER BUNDLE BUNDLE NOT FINISHED SENDING BUNDLE CAUSES A SYSTEM ERROR TEXT NON-EXISTENT NO INPUT OF DATA DURING POSITIONING NO REPLACEMENT/EDITING DURING POSITIONING NO POSITIONING DURING INPUT OR CORRECTION TOO MANY VOUCHERS AT FORWARD POSITIONING TOO MANY VOUCHERS AT REVERSING TOO MANY LINES AT FORWARD POSITIONING TOO MANY LINES AT REVERSING NO LINES TO FORCE USE INSTEAD @ POS NO DELETION DURING POSITIONING @ BREAK CAN ONLY BE EXECUTED WHEN CORRECTING @ START CANNOT BE EXECUTED RUING INPUT OR REPLACEMENT/EDITING INPUT CANNOT BE TYPED DURING EDITING/REPLACEMENT NO REPLACEMENT DURING INSERTION DURING INSERTION NO REVERSE TOO BIG REVERSAL DURING INSERTION NO PRINTING AFTER REVERSING VOUCHERS CANNOT BE DELETED TOO MANY LINES NO DELETION DURING INSERTION ONLY ONE LINE CAN BE DELETED THE SPECIFIED NUMBER CANNOT BE DELETED INSERTION IS STARTED EARLIER INSERTION HAS NOT BEEN STARTED NEW LINE TOO LONG END OF BUNDLE DURING INPUT VOUCHERS CANNOT BE DELETED \f AFTER REVERSING NO VOUCHERS CAN BE LISTED THE LINE CANNOT BE EDITED/REPLACED IN THIS RUNTHROUGH THE LINE CANNOT BE DELETED IN THIS RUNTHROUGH THERE IS NO READ-IN PROGRAM FOR THIS USER <name' LOCAL DATA DESCRIPTION INCORRECT FOR THIS USER <name' Figure 71. F_._4_ _ _ _ _ _ _ _P_r_o_g_r_a_m_ _E_r_r_o_r_s_ F.4 The various program errors have been descreibed in detail in Ref.3. The error numbers and error texts have been listed in fig. 72. Error number 12 is supplemented with an error text as is shown in fig. 73. E_r_r_o_r_ _N_o_ _ _E_r_r_o_r_ _t_e_x_t_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1 ILLEGAL BLOCKNO OR BLOCK MISSING <block _no' 2 ILLEGAL BLOCKREF, USER CONFLICT <block _no'<user _no' 3 ILLEGAL ENTRYPOINT <entry _no' 4 PRINT CHANNEL NOT SELECTED 5 ILLEGAL VARIABLE NUMBER <var _no' 6 INDEX <var _no'<index _value' 7 ILLEGAL CHANNEL NUMBER <channel _no' 8 INST.COUNT EXCEEDED <inst _count<'max _inst' 9 ILLEGAL SET NUMBER <set _no' 10 USAGE CONFLICT <set _no' 11 RECORD STATE ILLEGAL FOR THIS OPERATION <set _no' <record _state' 12 MOVE ERROR "set _no'<text'<adr'<value' 13 SET CLOSED FOR SEQ.CCESS BY NEWSET ON ANOTHER SET <set _no' 14 DAUGHTER RECORDS ASSOCIATED WITH CURRENT RECORD 16 CURRENT RECORD REMOVED FROM DB <set _no' \f 17 MOTHER RECORD MISSING IN SIDE CHAIN <set _no' 18 MOTHER RECORD REMOVED FROM DB <set _no' 19 ILLEGAL STATE FOR MOTHER SET <set _no<record _stated' 20 ILLEGAL CURRENT RECORD TYPE IN MOTHER SET <set _no' 21 RECORD TYPE ILLEGAL IN SET <set _no'<record _type' 22 PRINTVALUE EXCEEDS FIELD RANGE <channel'<value' 23 ILLEGAL PRINT POSITION <start _pos' 24 PRINT FIELD EXCEEDS LINE BUFFER <start _pos'<amount' 25 ILLEGAL BS.OPERATION, POSITION AF EOF <set _no' 26 ILLEGAL DELETE POSITION <set _no' 27 SET NOT OPEN FOR SEQUENTIAL ACCESS <set _no' 28 ILLEGAL SPECIAL ACTION <algol _no' 29 ILLEGAL NUMBER OF PARAMETERS <algol _no'<no' 30 ILLEGAL TYPE OF PARAMETER <algol _no'<param _no' 31 ILLEGAL ZERO DIVISION Figure 72. N_o_ _ _ _ _ _ _ _ _E_r_r_o_r_ _t_e_x_t_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1 ILLEGAL ENTRYADDR IN >FLYTTETAB> 2 ILLEGAL MOVEINSTRUCTION: TYPE, ADDR: 3 SPILL DURING TRANSFER FROM VAR: ADR, VALUE: 4 INDEX: ADDR OF INDEXVAR, VALUE: 5 ILLEGAL NUMBER OF REPET. IN RPG: VARADDR, VALUE: 6_ _ _ _ _ _ _ _ _ _F_I_E_L_D_A_D_D_R_ _O_U_T_S_I_D_E_ _Z_O_N_E_R_E_C_:_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Figure 73. If the read-in program or the ld-description are defekt the following messages will be printed: ***** USER <user _no.'<operator _no.'<error _text' where the <error _text' is either: READ IN PROGRAM IS NOT OK or: LD-DESCRIPTION IS NOT OK \f F_._5_ _ _ _ _ _ _ _S_y_s_t_e_m_ _E_r_r_o_r_s_ F.5 The format of the system errors is identical to that of the program errors. For a more detailled description, phase see Ref.3. Fig. 74 shows a survey of the error numbers and the error texts for the duet system. N_o_ _ _ _ _E_r_r_o_r_ _t_e_x_t_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1 Duetrel <duetrel'<duetstop' 2 Bit 23 = 0 3 >Duetnavn' 4 Value of >udtryk> <val'<duetstop' 5 Bit 23 = 1 <duetstop' 6 Ld-tables <set _no' 7 Checksum <set _no' 8 Recordlength <set _no' 9 Connect missing in side chain <set _no' 10 File expansion impossible <result cf' 11 Record creation too expensive <result cf' 12 Deletion of last record in file 13 Skipword 14 Over/underflow <stack _stop' 15 Error in block transfer <block _no<error _text' 16 Move error 1_7_ _ _ _ _I_l_l_e_g_a_l_ _t_y_p_e_ _o_f_ _v_a_l_u_e_ _e_l_e_m_e_n_t_ _<_t_y_p_e_'_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Figure 74. \f F_ G_._ _ _ _ _ _ _ _ _S_P_E_C_I_A_L_ _A_C_T_I_O_N_S_ _ G. G_._1_ _ _ _ _ _ _ _G_e_n_e_r_a_l_ G.1 Purpose There are a number of operations in the DES809 sy- stem, which are to be executed in the user>s read-in program, which it either is inexpdient or impossible to implement in the Duet language. These actions are programmet in ALGOL and are cal- led as procedures from the read-in program. It is the group in charge of developing the DES80 system which decides the number, and functions, of the special actions and maintains them. DES80 operates with special actions centering on the following problems: 1. transactions to a text file 2. wage code problems 3. repeat line 4. check of date These special actions will be descreibed in accordance with the following general format: \f 1 C_a_l_l_ algol <no.' (<param 1',...,<param 7') 0 <no.' : the number of the special action <param 1': (call/return/type) . . . <param 7', as a special action can have front 1 to 7 parameters. D_e_s_c_r_i_p_t_i_o_n_ _o_f_ _t_h_e_ _f_u_n_c_t_i_o_n_ E_r_r_o_r_ _r_e_a_c_t_i_o_n_s_ E_x_a_m_p_l_e_ The section below first deal with the general error reactions which may occur (program errors). Then follows a description of the various problem complexes. G_._2_ _ _ _ _ _ _ _G_e_n_e_r_a_l_ _E_r_r_o_r_ _R_e_a_c_t_i_o_n_s_ G.2 When the special actions are used incorrectly the following program error reactions will occur: 28 ***** PROGRAM ERROR 29: CALL FROM : BLOCK INSTR OPT (ADR PIL ART) 30 duet - - algol - - - <error _text' \f <error _text' can be one of the following: Illegal special action Reference has been made to a non-defined special action. illegal no. of parameters <amount' The special action called does not comply with the conventions governing the number of parameters. The illegal number of parameters are specified. illegal type of parameter <no' The special action called is referenced with an illegal parameter type. The number of the illegal parameter is specified. G_._3_ _ _ _ _ _ _ _T_r_a_n_s_a_c_t_i_o_n_s_ _t_o_ _a_ _T_e_x_t_ _F_i_l_e_ G.3 There are two special actions which are oriented towards this purpose: Algol 1 which constructs a (or only part of a) line - it can be compared with create - and algol 2 which terminates the current line - it can be compared with put. 7 C_a_l_l_ algol 1 ( <parameter i', ) i=1 <parameter i': call type: word long text \f F_u_n_c_t_i_o_n_ The special action generates a part of a line, which has the following textual representation: <parameter 1'<terminator'<parameter 2'...<'<...n' Where <terminator' is a character, the ISO value of which is the value of the basis ld-variable >terminator>. E_x_m_a_p_l_e_ When the terminator = 44 (the ISO value for a comma) and the item nuberm = 4711: algol 1 (><22>, 4, item _no.) will have the line <22, 4, 4711 as its result. algol 2 C_a_l_l_ algol 2 F_u_n_c_t_i_o_n_ The special action terminates a line, which is being generated by one or several repeated calls of algol 1, using the value of the bases ld-variable >Line-end> as end of line symbol. \f E_x_a_m_p_l_e_ when terminator = 44 (,) line-end = 10 (NL) item number = 4711 item name = >penol 1300> ' algol 1 (><22>, 4, item _no.) ' algol 1 (127, item _name) ' algol 2 will have the line <22, 4, 4711, 127, penol 1300 <NL' as their result. G_._4_ _ _ _ _ _ _ _W_a_g_e_ _C_o_d_e_s_ G.4 Special action: algol 3, not implemented. G_._5_ _ _ _ _ _ _ _R_e_p_e_a_t_ _L_i_n_e_ G.5 As the references, requests, to the database are coded in DUET, an algol special action has been introduced to return the pointer to the first field of the input line. This special action makes it possible to read a line of the type ? it (re- quest to the itemfile), at any level while data are being typed, and have the answer displayed on the terminal, without disturbing the bundle in progress. \f C_a_l_l_ algol 4 F_u_n_c_t_i_o_n_ After algol 4 has been called in the Duet program it will continue to return the pointer to the field of the current line, untill the special action is returned. E_x_a_m_p_l_e_ The following example fig. 75 shows how the database references have been coded in the "SKANTEKMODEL>s" Duet-program: ; To determine whether the ; line is a question the ; line code is checked at ; the start of the line. ; If not a question the ; pointer is returned to ; its pre-check position, ; and the line is pro- ; cessed as an ordinary ; line. d4: read c33 line code, t3 text, u3 number; central(ised) reading 'if read-spec = 1 then d5 else d8. d5: action line code of; a character field has been read. .?it. :d401 ; request to the item file .?os. :d402 ; request to theopera- tional file. .?od. :d403 ; request to the word file else d8 ; the line did not begin with a request, \f ; reading is reassumed at ; start of line, and the ; line is processed as a ; bundle line. d8: algol 4 ; returned 'execute d10 s d10: ; bundle line processing. Figure 75. \f F_ H_._ _ _ _ _ _ _ _ _C_H_E_C_K_I_N_G_ _T_H_E_ _D_A_T_E_ H. This algol action checks whether the date lies within a specified format. Call: algol 5 (date, date type, result) word date (call, date) long The date used word date type (call, date) long The specified format for date result (return, word) 0 indicates that the date meets the requirements set up under Function. <' 0 indicates that the date does not meet the requirements F_u_n_c_t_i_o_n_ date type=1: date=ddmmyy (day-month-year) date type=2: date=(yy) yymmdd (year-month-day) in connection with date types 1 and 2 the algolaction checks that 1<=mm<=12 29 1<=dd<=30 (depending on mm) 31 \f date type=3: date=(yy) yymm (year-week-no) The algol action checks that 1<=mm<=52 date type=4: date=(yy) yydd (year - no of day) The algol action checks that 1<=dd<=366 When date types 2, 3, and 4 are used year may be stated either as e.g. 79 or 1979. Date type 1 only operates with two digits to denote the year. The year is not checked. \f F_ I_._ _ _ _ _ _ _ _ _C_H_E_C_K_ _D_I_G_I_T_ _C_H_E_C_K_I_N_G_ I. Fig. 76 shows an example of how a procedure with the purpose of checking a number with a check digit can be constructed in DUET. \f F_ (figure 76)\f (figure 76)\f J_._ _ _ _ _ _ _ _ _O_F_F_L_I_N_E_ _D_E_B_U_G_G_I_N_G_ J. On the installations where DES80 has been implemented, DES80OFFL, a skeleton job, will be part of the software package. This job is shown on the skeleton job contains a detailed description of how to run with it. Figure 78 shows an example of a user adaption. All modifications are shown in boxes. The comments to the input lines for the user up-dating program have been removed - this has been marked with NB!>s. \f F_ (figure 77)\f F_ (figure 77)\f F_ (figure 77)\f F_ (figure 77)\f F_ (figure 78)\f F_ (figure 78)\f F_ figure 78 \f F_ figure 78 \f The testmaterial and its construction is descrei- bed in section 5.9 figure 79 shows a small examp- le (TEST12) 01, @ LOGIN 01, @ ID DES80OP 01, @ GET TEST 01, ADM 100 22 78 01, HRS 110 20 01, HRS 120 20 01, SUM 40 01, ADM 200 22 78 01, HRS 220 10 01, SUM 40 01, @ SAVE FINISH 01, @ SPECIAL 01, @ SEND TEST 01, @ LOGOUT Figure 79. Input from and answers to the terminal are sup- plied on DESUAR001. Figure 80 shows a part of the latter. * TEST START TRANSACTION: 1 @ LOGIN * TEST FINISHED TRANSACTION: 1 * TEST START TRANSACTION: 2 @ ID DES80OP * TEST FINISHED TRANSACTION: 2 * TEST START TRANSACTION: 3 @ GET TEST TEST 1 3.10.1078 15.12.17 OPEN PRIVATE INPUT UNFINISHED \f INPUT START * TEST FINIESHED TRANSACTION: 3 * TEST START TRANSACTION: 4 ADM 100 22 78 * TEST FINISHED TRANSACTION: 4 * TEST START TRANSACTION: 5 HRS 110 20 * TEST FINISHED TRANSACTION: 5 * TEST START TRANSACTION: 6 HRS 120 20 * TEST FINISHED TRANSACTION: 6 * TEST START TRANSACTION: 7 SUM 40 * TEST FINISHED TRANSACTION: 7 Figure 80. Fig. 81 shows the record which is created by transaction no. 5. Finally fig. 82 shows the primary output resulting from the run. \f F_ (figure 81)\f F_ (figure 82)\f F_ (figure 82)\f F_ (figure 82)\f F_ (figure 82)\f F_ (figure 82)\f i T_A_B_L_E_ _O_F_ _C_O_N_T_E_N_T_S_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _P_A_G_E_ 1. NATIONAL VERSIONS ...................................... 1 2. FORM LENGTH ............................................ 2 \f ii \f 1_._ _ _ _ _ _ _ _ _N_A_T_I_O_N_A_L_ _V_E_R_S_I_O_N_S_ 1. RC862 and RC867 are supplied containing a number of national versions. This is done only by setting a number of switches. The switches are placed on the Operation Panel Circuit Board as shown in fig. 1. To Operate these switches the upper cover of the printer has to be removed. switch: 8 ON M_M_ 7 ON not to be changed P_P_ 6 OFF 5 ON Figure 1: Operation panel board. Switch positions are shown in fig. 2. s_w_i_t_c_h_ _1_ _s_w_i_t_c_h_ _2_ _s_w_i_t_c_h_ _3_ _s_w_t_i_c_h_ _4_ _v_e_r_s_i_o_n_:_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _O_N_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _U_K_ _A_S_C_I_I_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _O_N_ _ _ _ _ _ _ _O_N_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _G_E_R_M_A_N_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _O_N_ _ _ _ _ _ _ _ _ _ _ _ _ _ _U_S_ _A_S_C_I_I_/_F_R_E_N_C_H_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _O_N_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _O_N_ _ _ _ _ _ _ _ _ _ _ _ _ _ _S_W_E_D_I_S_H_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _O_N_ _ _ _ _ _ _ _O_N_ _ _ _ _ _ _ _ _ _ _ _ _ _ _D_A_N_I_S_H_/_N_O_R_W_E_G_I_A_N_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _O_N_ _ _ _ _ _ _ _O_N_ _ _ _ _ _ _ _O_N_ _ _ _ _ _ _ _ _ _ _ _ _ _ _D_A_N_I_S_H_ _O_F_F_S_._ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Figure 2: Position of switches. \f F_ 2_._ _ _ _ _ _ _ _ _F_O_R_M_ _L_E_N_G_T_H_ 2. If the printer is equipped with the latest version of PROM's, the Form Length rotary switch has the following settings: Switch position Form Length (inches) 0 3 1 3,5 2 4 3 5,5 4 6 5 7 6 8 7 8,5 8 11 9 12 \f F_ \f F_ \f user: user _identification terminated Figure 64 des80cat: des80test sysdok: des80sys section: 1. user _file version: 13 created: 12.09.1979 13.55.00. virtual file: des80data max: users operators. 10 5 user: desa descrip _file: dsadescr 51. inserted ld _name: created: 2.09.1979 11.53.30 by: desb user: desc descrip _file: descr 51. inserted ld _name: created: 18.07.1979 15.55.11 by: sjc Figure 65. \f 3_._ _R_u_n_ _(_w_i_t_h_ _B_O_S_S_)_ 10 transformer in.wrk000254 out.trans1, j_o_b_ _f_i_l_e_ 20 list.yes listout.listfile 30 finis START TRANSFORMER, V1, 19.09.1979 29.09.1979 14.30.29 TRANSFORMER IN.WRK00259 OUT.TRANS1 LIST.YES LISTOUT.LISTFILE DES80 DATE: 20.09.1979 14.30.39 TRANSFORMER, V1, 19.09.1979 PAGE: 1 BUNDLE NAME: BUNDLE1 TEXT STATUS FILES NAME: WRK000254 TRANSACTION FILES NAME: WRK000253 OLD TEXT STATUS FILES NAME: NUMBER OF LINES: 6 NUMBER OF VOUCHERS: 2 NUMBER OF FORCED ITEMS: 1 END TRANSFORMER, V1, 19.09.1979 20.09.1979 14.30.31 CPU: O END 69 \f C_O_N_T_E_N_T_S_ _O_F_ _L_I_S_T_ _F_I_L_E_ START TRANSFORMER, V1, 19.09.1979 29.09.1979 13.59.24 DES80 DATE: 20.09.1979 13.59.24 TRANSFORMER, V1, 19.09.1979 PAGE 1 BUNDLE NAME: BUNDLE1 TEXT STATUS FILES NAME: WRK000254 TRANSACTION FILES NAME: WRK000253 OLD TEXT STATUS FILES NAME: NUMBER OF LINES: 6 NUMBER OF VOUCHERS: 2 NUMBER OF FORCED ITEMS: 1 DES80 DATE: 20.09.1979 13.59.24 TRANSFORMER, V1, 19.09.1979 PAGE: 2 LINE VOUCHER NUMBER OF LINE TYPED FORCED ITEMS 1 1 0 ADM 619 30 79 2 1 0 HRS 200 40 3 1 0 SUM 40 4 2 0 ADM 020 30 79 5 2 1 HRS 200 40 6 2 1 SUM 40 END TRANSFORMER, V1, 19.09.79 20.09.1979 13.59.25 CPU: 0 \f Executed under BOSS are: get trans1 list 10 01, @ LOGIN'* OFFLINE INPUT IN TRANS1*' 20 01, @ ID 30 01, @ GET BUNDLE 40 01, ADM 019 30 79 50 01, HRS 200 40 60 01, SUM 40 70 01, ADM 020 30 79 80 01, HRS 200 40 90 01, SUM 40 100 01, @ SAVE FINISH 110 01, @ SPECIAL 120 01, @ SEND BUNDLE1 130 01, @ LOGOUT \f d10: modify sum: = 0 ; The two auxillary variables, sum and counter, counter: = 0 ; are initialized first. Number is the figure on figure: = number ; which the check digit is to be cheked. s ' while figure ' 0 do d20 ; The operation runs throught all digits in the figure. ' execute d30 ; The actual check is performed in d30. s d20: modify counter: +1 ; counter specifies the number of the digit, counter ; from the right hand side, which is to be processed. digit: = figure mod 10 ; After the counter has been increased the digit is selected, ; and figure is intergerdivided by 10, enabling us figure: = figure 11 10 ; to select the next digit s 'assign weight: = counter of 1: 0 ; This construction assigns the individual digits 2: 2 ; weights. The box shows an example of a 3: 1 ; wight system. These can be modified to 4: 2 ; suit individual needs. Please notice that the check 5: 1 ; digit, which in the example/box is the first digit, 6: 2 ; has been assigned 0, and that the remaining digits 7: 1 ; have been assigned weights different from 0. 8: 2 ; The example can handle a 10 digit figure. 9: 1 10: 2 else d31 ; error reaction to a figure which is too large 'compute product: = wieht + digit ; weight computed. s 'modify x: = digits (2,2) of product ; The contents of the box is only used when y: = digits (1,1) of product ; operating with a weighted sideways sum s ; If the ordinary sum of the digits method is used 'if x'0 then d21 ; the weighted sideways sum is not used. x is the digit ; to the left in product, and y the digit to the right \f 'modify sum: + product ; summation of weighted digits. s d21: compute product: = x+y ; The contents of the box is only used when operating s ; with the weighted sideways sum method. d30: modify control: = digits ( 1,1 ) of number ; The controldigit is selected. In the example check: = sum mod 10 ; the first digit to the right is selected. The s ; box specifies the module figure as 10. ; This figure can be exchanged with others ; (9, 11, etc). 'compute check: = 10-check ; This construction computes the immediately s ; higher multiple of the module figure instead of 'modify check: = check mod 10 ; a modulo figure s ; (might be omitted) ' if control <' check then d32 ; the actual check d31: print <l1 t20': >***** too large a figure ; The error messages ought d32: print <l1 t20': >***** illegal figure> ; to reflect the current problems. ; The incorrect field should also be ; identified in the message. Figure 76. \f JOB NN X JJJJJJ TIME 8 0 size 90000 perm kit1 500 5, ; *** 1) and 10) TEMP KIT2 5000 20 AREA 14 BUF 14 ; *** 10) MODE LIST.YES ; THE FOLLOWING JOB EXECUTES A RUN, OF THE DES80 SYSTEM FOB OFF-LINE DEBUGGING OF READ-IN PROGRAMS. ; ; INFORMATION, WHICH MUST BE STATED OR MIGHT BE MODIFIED, WILL BE LISTED BELOW. THE VARIOUS CALL OF PROGRAM ; WILL, AS A RULE, USE THE CURRENT STANDARD NAMES. THE LINES, WHICH ARE TO BE MODIFIED, HAVE BEEN MARKED ; WITH THREE ASTERISKS AND A REFERENCE TO THE LIST BELOW. ; ; 1) THE JOB LINE: INITIALS (NN), INDEX (X), AND THE PROJECT NUMBER (JJJJJJ). ; 2) BASES: LLLLLL AND UUUUUU ARE THE LOWER RESPECTIVELY THE UPPER BASES FOR THE TEMPORARY FILES. ; ; BASES ARE FOUND BY MEANS OF THE FOLLOWING OPERATION: ; PIP=SET 1 ; LOOKUP PIP ; -' PIP=SET 1 ......; TEMP ; -'; 1802 302 0 17500 17501 ; THIS GIVES: LLLLLL = 17500 AND UUUUUU = 175001 ; THE OPERATION MUST BE EXECUTED ON A TERMINAL, WHICH HAS BEEN LOGGED IN UNDER THE SAME ; INDEX (X) AS USED IN THE JOB LINE. ; 3) USERFILE: WITH INITIALS CORRESPONDING TO THOSE OF THE JOB LINE. ; 4) USERFILE: MAX USER: USER NO. - E.G. MAX USER: 3 (USER NO. 3). ; 5) USERFILE: THE NAME OF THE DESCRIPTION FILE - E.G. DESADESCR. ; 6) USERFILE: LOCAL DATA DESCRIPTION IN: SECTION 3.1. ; 7) DES80ONLINE: THE NAME OF THE AREA, IN WHICH THE TEST MATERIAL HAS BEEN PLACED, MUST BE SPECIFIED BY ; MEANS OF THE PARAMETER INPUT. ; 8) SPLIT80: THE NAME OF THE DESCRIPTION FILE: DESADESCR. ; THE NAME OF THE TRANSACTION FILE FROM DES80: DES80IN. ; THE NAME OF THE TRANSACTION FILE AFTER SPLIT: DES80OUT. ; THE FILE NUMBERS IN THE TRANSACTION FILE AFTER SPLIT MUST BE STATED. ; ; 9) PRINT80: THE STANDARD IS USED FOR ALL PARAMETERS. ; ADAPTIONS MUST BE MADE. ;10) KIT NAME: THE NAMES KIT1 AND KIT2 MUST BE EXCHANGED WITH THE NAMES OF THE KITS HANDLING THE ; PERMANENT AND TEMPORARY RESOURCES. ; \f LISTOUT=COPY 0 ; ; FIRST OF ALL A USER FILE WITH 1 USER AND 1 TERMINAL IS CREATED ; USERSYS=SET 1 SYSDOK RUN.INIT SYSDOK.USERSYS. 1 DES80 2 DES80SYSTEM 3 LAUTRUPBJERG 1 4 2750 BALLERUP 5 DES80USERSYSTEM 6 123/46 7 123456 END IF OK.NO FINIS SYSDOK SYSDOK.USERSYS LOGIN UPDAT NN DES80 VERS.0 ;*** 3) NEW GAP. 10 /1. USER CATALOG CATALOG: CATBASE: LLLLLL UUUUUU ;*** 2) MAXUSER: B MAXOP: 1 ;*** 4) USER: B DES80USER DESCRIPFILE 3.1 ;*** 4), 5), AND 6). USERBASE: LLLLLL UUUUUU ;*** 2) OP: 1 1 DES80OP / END IF OK.NO FINIS CLEAR TEMP LISTOUT USERFILE=SET 10 DES80USER SYSDOK.USERSYS SECTION.1 USERFILE.USERFILE.NEW IF OK.NO FINIS ; \f ; ; AT THIS STAGE THE DESCRIPTIONS ARE INITIALIZED ; DES80DATA=SET 1 DES80UPDATE BASE.LLLLLL.UUUUUU RUN.INIT LOG.DES80LOG ;*** 2) IF OK.NO FINIS ; FINALLY A RUN WITH DES80ONLINE USING DATA FROM THE AREA <INPUT' IS EXECUTED DES80LOG=SET 1 KIT1 ;*** 10) SCOPE USER DES80LOG JOURNAL=SET 1 KIT1 ;*** 10) DES80ONLINE BASE.LLLLLL.UUUUUU INPUT.INPUT TEST.2.19 ;*** 2) AND 7) IF OK.NO SKIP Q.7 ; ; THE FOLLOWING CONCLUDING RUN PRODUCES A LOG CONTAINING THE TRANSACTIONS READ IN ; DES80UPDATE.LLLLLL.UUUUUU RUN.FINIS LIST.YES LISTOUT.JOURNAL ;*** 2) IF OK.NO FINIS ; ; FINALLY ALL TRANSACTIONS GENERATED ARE DOCUMENTED THROUGH A CONVERSION OF THE POSTING JOURNAL: JOURNAL AND ; REPLY AREA: DESVAR001 PLUS BY OUTPUT FROM SPLIT80 AND PRINT80. CONVERT JOURNAL STD CONVERT DESVAR001 STD ;*** 8) LOOKUP DES80IN IF OK.NO SKIP Q.5 DES80OUT=SET 1 KIT1 0 0 0 20.1 0 ;*** 8) AND 10) TEXT=COPY 0 DESCRIPFILE=DESCRIP.DESCRIPFILE OUT.DES80OUT.II GVS.TEXT, ;*** 8) IF OK.NO SKIP Q.4 CONVERT TEXT STD DESCRIPFILE=PRINT80 ;*** 9) ; ADAPTION INSERTED HERE \f IF OK.NO SKIO Q.3 ; QQQ CLEAR USER DES80LOG CLEAR USER JOURNAL FINIS Figure 77. \f JOB DESB 0 292932 TIME 8 0 SIZE 90000 PERM DISC1 500 5, ; *** 1) AND 10) TEMP DISC 5000 20 AREA 14 BUF 14 ; *** 10) MODE LIST.YES ; THE FOLLOWING JOB EXECUTES A RUN, OF THE DES80 SYSTEM FOB OFF-LINE DEBUGGING OF READ-IN PROGRAMS. ; ; INFORMATION, WHICH MUST BE STATED OR MIGHT BE MODIFIED, WILL BE LISTED BELOW. THE VARIOUS CALL OF PROGRAM ; WILL, AS A RULE, USE THE CURRENT STANDARD NAMES. THE LINES, WHICH ARE TO BE MODIFIED, HAVE BEEN MARKED ; WITH THREE ASTERISKS AND A REFERENCE TO THE LIST BELOW. ; ; 1) THE JOB LINE: INITIALS (NN), INDEX (X), AND THE PROJECT NUMBER (JJJJJJ). ; 2) BASES: LLLLLL AND UUUUUU ARE THE LOWER RESPECTIVELY THE UPPER BASES FOR THE TEMPORARY FILES. ; ; BASES ARE FOUND BY MEANS OF THE FOLLOWING OPERATION: ; PIP=SET 1 ; LOOKUP PIP ; -' PIP=SET 1 ......; TEMP ; -'; 1802 302 0 17500 17501 ; THIS GIVES: LLLLLL = 17500 AND UUUUUU = 175001 ; THE OPERATION MUST BE EXECUTED ON A TERMINAL, WHICH HAS BEEN LOGGED IN UNDER THE SAME ; INDEX (X) AS USED IN THE JOB LINE. ; 3) USERFILE: WITH INITIALS CORRESPONDING TO THOSE OF THE JOB LINE. ; 4) USERFILE: MAX USER: USER NO. - E.G. MAX USER: 3 (USER NO. 3). ; 5) USERFILE: THE NAME OF THE DESCRIPTION FILE - E.G. DESADESCR. ; 6) USERFILE: LOCAL DATA DESCRIPTION IN: SECTION 3.1. ; 7) DES80ONLINE: THE NAME OF THE AREA, IN WHICH THE TEST MATERIAL HAS BEEN PLACED, MUST BE SPECIFIED BY ; MEANS OF THE PARAMETER INPUT. ; 8) SPLIT80: THE NAME OF THE DESCRIPTION FILE: DESADESCR. ; THE NAME OF THE TRANSACTION FILE FROM DES80: DES80IN. ; THE NAME OF THE TRANSACTION FILE AFTER SPLIT: DES80OUT. ; THE FILE NUMBERS IN THE TRANSACTION FILE AFTER SPLIT MUST BE STATED. ; ; 9) PRINT80: THE STANDARD IS USED FOR ALL PARAMETERS. ; ADAPTIONS MUST BE MADE. ;10) KIT NAME: THE NAMES KIT1 AND KIT2 MUST BE EXCHANGED WITH THE NAMES OF THE KITS HANDLING THE ; PERMANENT AND TEMPORARY RESOURCES. ; \f LISTOUT=COPY 0 ; ; FIRST OF ALL A USER FILE WITH 1 USER AND 1 TERMINAL IS CREATED ; USERSYS=SET 1 SYSDOK RUN.INIT SYSDOK.USERSYS. 1 DES80 2 DES80SYSTEM 3 LAUTRUPBJERG 1 4 2750 BALLERUP 5 DES80USERSYSTEM 6 123/46 7 123456 END IF OK.NO FINIS SYSDOK SYSDOK.USERSYS LOGIN UPDAT DESB DES80 VERS.0 ;*** 3) NEW GAP. 10 /1. USER CATALOG CATALOG: CATBASE: 11090 11090 NB MAXUSER: 2 MAXOP: 1 NB USER: 2 DES80USER ISCBEST 51 NB USERBASE: 11090 11090 NB OP: 1 1 DES80OP / END IF OK.NO FINIS CLEAR TEMP LISTOUT USERFILE=SET 10 DES80USER SYSDOK.USERSYS SECTION.1 USERFILE.USERFILE.NEW IF OK.NO FINIS ; \f ; ; AT THIS STAGE THE DESCRIPTIONS ARE INITIALIZED ; DES80DATA=SET 1 DES80UPDATE BASE.11090.11090 RUN.INIT LOG.DES80.LOG ;*** 2) IF OK.NO FINIS ; FINALLY A RUN WITH DES80ONLINE USING DATA FROM THE AREA <INPUT' IS EXECUTED DES80LOG=SET 1 DISC1 ;*** 10) SCOPE USER DES80LOG JOURNAL=SET 1 DISC1 ;*** 10) DES80ONLINE BASE.11090.11090 INPUT.TEST12 TEST.2.19 ;*** 2) AND 7) IF OK.NO SKIP Q.7 ; ; THE FOLLOWING CONCLUDING RUN PRODUCES A LOG CONTAINING THE TRANSACTIONS READ IN ; DES80UPDATE.11090.11090 RUN.FINIS LIST.YES LISTOUT.JOURNAL ;*** 2) IF OK.NO FINIS ; ; FINALLY ALL TRANSACTIONS GENERATED ARE DOCUMENTED THROUGH A CONVERSION OF THE POSTING JOURNAL: JOURNAL AND ; REPLY AREA: DESVAR001 PLUS BY OUTPUT FROM SPLIT80 AND PRINT80. CONVERT JOURNAL STD CONVERT DESVAR001 STD ;*** 8) LOOKUP TRANSFILE IF OK.NO SKIP Q.5 INPUT12=SET 1 DISC1 0 0 0 20.1 0 ;*** 8) AND 10) DESBDESCR=SPLIT80 IN.TRANSFILE OUT.INPUT12.12 OUT.GENIUSFILE.20, ;*** 8) DESCRIP.DESBDESCR IF OK.NO SKIP Q.4 DESBDESCR=PRINT80 FUNKTION.2 PAPER.2 DESCRIP.DESBDESCR ;*** 9) A20 GENIUSFILE \f R20 OUTFORM.3 ; ALL OF THE RECORD * ; ALL RECORD TYPES / IF OK.NO SKIP Q.3 ; QQQ CLEAR USER DES80LOG CLEAR USER JOURNAL FINIS Figure 78 \f PRINT8Ø, EDITED FORM, DATE: Ø3.1Ø.79, TIME: 15.23.18 PAGE: 1 CONTENTS TYPE ADR ENQ. R_E_C_O_R_D_:_ _ _ _ _ _ _2_ _B_S_F_I_L_E_ _R_E_C_O_R_D_ _ U2Ø._RECLONG 28 2 2 1 U2Ø._CHECKSUM -163 2 4 2 U2Ø._RECTYPE_ 2 2 6 3 U2Ø._CHANGE.DATE Ø 2 8 4 U2Ø._GENIU_SER Ø 2 1Ø 5 U2Ø._CASE.KEY 7 1Ø 6 U2Ø._CASENO. 11Ø 2 12 7 U2Ø._CASETYPE Ø 2 14 8 U2Ø._TYPE _ Ø 2 16 9 U2Ø._EMPL.KEY 7 16 2Ø U2Ø._EMPLOYEENO. Ø 3 2Ø 21 U2Ø._WEEKNO. Ø 2 22 22 U2Ø._HOURS 2Ø 2 24 23 U2Ø.MANHOURS Ø 3 28 24 Ø='0 (NUL) NIC. Figure 81. \f * LISTOUT=COPY 0 CUR.INPUT SEGM. 0 0/0 * USERSYS=SET 1 * SYSDOK RUN.INIT SYSDOK.USERSYS START SYSDOK, V5B 03.10.1979 15.19.46 0 SYSDOK RUN.INIT SYSDOK.USERSYS. SYSDOKFILE CREATED AND INITIALIZED 03.10.1979 15.19 FILE _NAME : USERSYS PASSWORD : DES80 NAME : DES80SYSTEM ADDRESS1 : LAUTRUPBJERG 1 ADDRESS2 : 2750 BALLERUP HEADING : DES80USERSYSTEM CASE _ : 123/456 PROJECT _. : 123456 TRANSFILE _NAME : LANGUAGE : 00 OUTFORMAT : MAX.INPOS : 100/65 START VERSION : 1 END SYSDOK, V5B 03.10.1979 15.19.51 CPU:1 END 1Ø2 *IF OK.NO * SYSDOK SYSDOK.USERSYS START SYSDOK, V5B 3.10.1979 15.19.53 Ø SYSDOK SYSDOK.USERSYS 1Ø NEW GAP. 10 12Ø END UPDATING BEGIN UPDATING END, VERS.1 END SYSDOK, V5B 03.10.1979 15.20.00 CPU:1 END 149 * IF OK.NO * CLEAR TEMP LISTOUT \f * USERFILE=SET 10 * DES80USER SYSDOK.USERSYS SECTION.1 USERFILE.USERFILE.NEW START DES80 USER CAT.UPD, V 03.10.1979 15.20.02 DES80USER SYSDOK.USERSYS SECTION.1 USERFILE.USERFILE.NEW STARTSYSDOK: USERSYS NOT AUT. VERS.1 SECTION 1. USERCATALOG *** CONVERT LISTOUT FILE NOT FOUND END DES80 USER.CAT.UPD, V4 03.10.1979 15.10.05 CPU:1 END 107 * IF OK.NO * DES80DATA=SET 1 * DES80DATA=SET 1 * DES80UPDATE BASE. 11090.11090 RUN.INIT LOG.DES80LOG START DES80UPDATE V4, 11.09.78 3.10.1079 15.20.07 DES80UPDATE BASE. 11090. 11090 RUN.INIT LOG.DES80LOG USERFILE: USERFILE SYSDOK: USERSYS SECTION: 1. USERCATALOG VERSION: 1 CREATED: 3.10.1979 15.20.02 DES80 CONTEXT: DES80DATA MAX: USERS OPERATORS. 2 1 USER: DES8ØUSER DESCRIPFILE: DESBDESCR51 CHANGED LD NAME: CREATED: 2.1Ø.1978 15.3646 BY:DESB END DES80UPDATE, V4, 11.09.79 03.10.1979 15.21.09 CPU:3 END 204 * IF OK.NO * DES80LOG=SET 1 DISC1 * SCOPE USER JOURNAL * DES80RETURN=SET 1 * DES80ONLINE BASE. 11090.11090 INPUT TEST12 TEST.2.19 START DES80ONLINE, V4, 04.10.1979 03.10.1979 15.21.12 \f DES80ONLINE BASE. 11090.11090 INPUT.TEST12, TEST.2.19 BASES: CAT STD USER MAX 11090 11090 11090 11090 11090 11090 11090 11090 INPUT: TEST12 OFFLINE VIRTUAL FILE: DES80DATA LOGGING ON: DES80LOG MAX USERS: 2 MAX OPERATORS: 1 STATUS: 296 MAX D-ARRAY: 228 LINE LENGTH: 36 MAX LINE STACK: 20 MAX BUNDLES: 10 DUETSYSTEM: VERSION : 72 EAH 29.09.78 ACTIVATED : 03.10.78 - 15.21 DUETFILE: IDENT : 1 TESTUSER AREA : DES80DUET VERSION : 5 DESB 2.10.79 - 15.38 USER ID LOW UP 2 DES80 USER 11090 11090 OK DUETSTART: 20 DESVAR001 CREATED ON DISC USER: 2 BUNDLE: TEST HAS BEEN SENT END DES80ONLINE, V4, 04.10.79 03.10.1979 15.21.56 CPU:7 END 1090 * IF OK.NO * DES80UPDATE BASE. 11090.11090 RUN.FINIS LIST.YES LISTOUT.JOURNAL START DES80UPDATE, V4, 11.09.79 03.10.1979 15.21.58 DES80UPDATE BASE. 11090.11090 RUN.FINISH LIST.YES LISTOUT.JOURNAL USER FILE: USERFILE \f SYSDOK: USERSYS SECTION: 1. USER CATALOG VERSION: 1 CREATED: 03.10.1979 15.20.02 DES80 CONTEXT: DES80DATA MAX: USERS OPERATORS. 2 1 USER: DES80USER FINISHED TRANSACTION LOG: DES80LOG NUMBER OF RECORDS: 28 SORTING OK: WRK001744 NUMBER OF RECORDS: 28 TRANSACTION JOURNAL ON JOURNAL HAS NOT BEEN CONVERTED END DES80UPDATE, V4, 11.09.79 03.10.1979 15.22.06 CPU:1 END 100 * IF OK.NO * CONVERT JOURNAL STD * CONVERT DESVAR001 STD * LOOKUP TRANSFILE TRANSFILE =SET 1 DISC D.680101.0003 0 112 20.1.0 ; TEMP ; 334 167 0 11090 11090 *IF OK.NO * INPUT12=SET 1 DISC1 0 0 0 20.1 0 * DESBDESCR+ SPLIT80 IN.TRANSFILE OUT.INPUT12.12 OUT.GENIUSFILE.20, DESCRIP.DESBDESCR START SPLIT80, V6 03.10.1979 15.22.13 DESBDESCR=SPLIT80 IN.TRANSFILE OUT.INPUT12.12 OUT.GENIUSFILE.20, DESCRIP.DESBDESCR FILE NAME NO. OF RECORDS READ WRITTEN TRANSFILE 4 INPUT/2 0 GENIUSFILE _ _ _ _ _ _ _4_ _ _ TOTAL: 4 END SPLIT80, V6 03.10.1979 15.22.25 CPU:2 END 122 *IF NOK.NO * LISTOUT=COPY 0 \f CUR.INPUT SEGM. 0 0/0 * DESBDESC=PRINT80 FUNKTION.2 PAPER.2 DESCRIP.DESBDESCR START PRINT80, V6 03.10.1979 15.22.27 DESBDESCR=PRINT80 FUNCTION.2 PAPER.2 DESCRIP.DESBDESCR END PRINT80, V6 03.10.1979 15.23.45 CPU:2 END 194 *IF OK.NO * CLEAR USER DES80LOG * CLEAR USER JOURNAL * FINIS Figure 82. \f i F_O_R_E_W_O_R_D_ First edition: RCSL No 31-D604. RC850 Asynchronous V.24 Line Drivers, RC850 Serial Printer Driver, Reference Manual. Second edition: RCSL No 31-D655. PI-1 Machine Asynchronous V.24 Line Driver, Reference Manual. The information given in RCSL No 31-D604 is no longer valid. The manual is therefore replaced by RCSL No 31-D655. Ejvind Lynning A/S REGNECENTRALEN af 1979, November 1981 \f ii \f iii T_A_B_L_E_ _O_F_ _C_O_N_T_E_N_T_S_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _P_A_G_E_ 1. INTRODUCTION .......................................... 1 2. TAsync DRIVER ......................................... 2 2.1 General Description .............................. 2 2.2 Driver Messages and Answers ...................... 2 2.2.1 Initiate Request .......................... 2 2.2.2 Special Initiate Request .................. 5 2.2.3 Transmit Request .......................... 5 2.2.4 Terminate Communication Request ........... 6 2.2.5 Illegal Requests .......................... 6 3. RAsync DRIVER ......................................... 7 3.1 General Description .............................. 7 3.2 Driver Messages and Answers ...................... 8 3.2.1 Receive Request ........................... 8 3.2.2 Illegal Requests .......................... 8 A_P_P_E_N_D_I_X_: A. REFERENCES ............................................ 9 \f iv \f F_ 1_._ _ _ _ _ _ _ _ _I_N_T_R_O_D_U_C_T_I_O_N_ 1. The driver described in this manual runs on the PI-1 machine (ref. 1) implemented on a Z80 microprocessor as part of an RC700 microcomputer or an RC850 terminal. The asynchronous V.24 line driver supports character-oriented full duplex communication with a remote computer through a communication line attached to the PI-1 machine via the V.24 LINE interface, possibly through a modem. The driver uses a Z80-SIO interface chip. The driver is coded in Z80 assembler language and must be included in a PASCAL80 system as part of its basic system. As a matter of fact, in order to provide full duplex communica- tion, i.e. simultaneous and independent transmit and receive functions, t_w_o_ drivers service the SIO chip, the T_(ransmit)- A_s_y_n_c_(hronous) driver and the R_(eceive)A_s_y_n_c_(hronous) driver. Both drivers enter the c_o_m_m_u_n_i_c_a_t_i_o_n_ _p_h_a_s_e_ following an 'Initiate' request issued to the TAsync driver, and similarly both leave the communication phase following a 'Terminate Com- munication' request which is also issued to the TAsync driver. In the 'Initiate' request a number of parameters are given to de- termine details of the mode of communication, including transmis- sion speed, number of bits per character, etc. In the communication phase the two drivers operate independently. When the drivers are not in the communication phase they are said to be in the idle phase. The driver interfaces are specified in accordance with the gen- eral conventions for driver interfaces in PASCAL80 systems (ref. 2). Note that the TAsync and RAsync drivers each have their own request semaphore. \f F_ 2_._ _ _ _ _ _ _ _ _T_A_s_y_n_c_ _D_R_I_V_E_R_ 2. 2_._1_ _ _ _ _ _ _ _G_e_n_e_r_a_l_ _D_e_s_c_r_i_p_t_i_o_n_ 2.1 The TAsync driver supports transmission of characters either in single byte or block mode. It also handles initiation and termin- ation of the communication phase of the operation of the asyn- chronous line driver pair. Regardless of the number of bits per transmitted character, each character is taken from one byte of the data buffer, right jus- tified, i.e. from the least significant bit positions, as many as needed. In the communication phase the TAsync driver always maintains RTS (RequestToSend)=1 on the V.24 interface, and therefore expects CTS (ClearToSend)=1. When CTS=0 occurs, transmission of charac- ters stops immediately, and if the condition is persistent (lon- ger than a time-out period specified in the 'Initiate' request) during the processing of a 'Transmit' request, the request is aborted, i.e. returned with a result indicating 'CTS time-out'. 2_._2_ _ _ _ _ _ _ _D_r_i_v_e_r_ _M_e_s_s_a_g_e_s_ _a_n_d_ _A_n_s_w_e_r_s_ 2.2 2_._2_._1_ _ _ _ _ _I_n_i_t_i_a_t_e_ _R_e_q_u_e_s_t_ 2.2.1 An 'Initiate' request causes the TAsync driver to - program the write registers of the relevant channel of the SIO; this includes setting DTR=1 and RTS=1, - wait for an indication of connection, either CTS=1 or DCD (DataCarrierDetected)=1 is acceptable, - start the RAsync driver. After successful processing of an 'Initiate' request the driver pair is in the communication phase, i.e. ready to process trans- mit and receive requests. \f c_o_d_i_n_g_: u1 = 1 x 4 + 0 Parameters determining the communication mode are contained in the data buffer which is locked to the type: comm _mode _type= RECORD char _format: byte; (* nobc: 0..3; (* bits 6-7 *) unused: 0..3; (* bits 4-5 *) nosbc: 1..3; (* bits 2-3 *) parity: (odd, even); (* bit 1 *) parity _enable: BOOLEAN (* bit 0 *) *) CTS _timeout: 0..255; transmission _speed: 0..6 END; The effect of the communication mode parameters is described in the following paragraphs: c_h_a_r_a_c_t_e_r_ _f_o_r_m_a_t_ (char _format field) The value of nosbc determines the number of stop bits added to each transmitted character as follows: 1 1 stop bit/character 2 1 1/2 stop bit/character 3 2 stop bits/character At least one stop bit is always excepted in received characters. If parity is enabled (parity _enable is TRUE), received characters are checked for correct parity and a parity bit is added to each transmitted character (odd or even parity as indicated by the parity field). Otherwise received characters are assumed to be followed immediately by a stop bit, and no parity bit is added to transmitted characters. The value of nobc determines the number of bits per received or transmitted character, excluding start, stop, and parity bits: 0 5 bits/character 1 7 bits/character NB 2 6 bits/character NB 3 8 bits/character \f C_T_S_ _t_i_m_e_-_o_u_t_ _h_a_n_d_l_i_n_g_ (CTS _timeout field) The value of CTS _timeout determines the reaction of the TAsync driver to the condition CTS=0 during the processing of a 'Transmit' request. If CTS _timeout=0 this condition will cause the driver to wait (indefinitely) for CTS=1 before transmitting another character. Otherwise CTS _timeout indicates the CTS time-out period, measured in basic delay time units (20 msec.). t_r_a_n_s_m_i_s_s_i_o_n_ _s_p_e_e_d_ (transmission _speed field) The same speed is used for the receive and transmit functions. The speed is determined by the value of transmission _speed as follows: 0 110 bits/sec. 1 300 bits/sec. 2 600 bits/sec. 3 1200 bits/sec. 4 2400 bits/sec. 5 4800 bits/sec. 6 9600 bits/sec. p_o_s_s_i_b_l_e_ _a_n_s_w_e_r_s_ successful: u2 = 0 After this result is returned the drivers are in the communica- tion phase. Initiate timeout : u2 = 3 This result occurs if no indication of connection (CTS=1 or DCD=1) is received within one second after the driver sets DTR=1. After this answer the drivers are still in the idle phase. \f 2_._2_._2_ _ _ _ _ _S_p_e_c_i_a_l_ _I_n_i_t_i_a_t_e_ _R_e_q_u_e_s_t_ (with RTS=0) 2.2.2 This request has the same effect as a normal 'Initiate' request with the following modification: After initialization of the SIO chip the driver normally sets DTR=1 and RTS=1 on the V.24 interface simultaneously. When the 'Special Initiate' request is processed the driver first sets DTR=1 and RTS=0, and only after an indication of connection does the driver set RTS=1. This use of the V.24 signals is intended for control of the LIS 701 line selector box, see ref. 3. c_o_d_i_n_g_: u1 = 3 x 4 + 0 The parameters are the same as for the normal 'Initiate' request. p_o_s_s_i_b_l_e_ _a_n_s_w_e_r_s_ As for the normal 'Initiate' request. 2_._2_._3_ _ _ _ _ _T_r_a_n_s_m_i_t_ _R_e_q_u_e_s_t_ 2.2.3 The characters contained in the driver message are transmitted, cf. the general description of the TAsync driver. c_o_d_i_n_g_: u1 = sbm x 8 + 2 (sbm = single byte mode) If sbm = 1, the contents of u3 are transmitted. If sbm = 0, the bytes to be transmitted are taken from the data buffer in the standard way, see ref. 2. p_o_s_s_i_b_l_e_ _a_n_s_w_e_r_s_ successful : u2 = 0 CTS time-out : u2 = 3 \f 2_._2_._4_ _ _ _ _ _T_e_r_m_i_n_a_t_e_ _C_o_m_m_u_n_i_c_a_t_i_o_n_ _R_e_q_u_e_s_t_ 2.2.4 This request is only legal in the communication phase. It causes the TAsync driver to disable the SIO functions and both drivers to enter the idle phase. To resume communication an 'Initiate' request must be issued to the TAsync driver. c_o_d_i_n_g_: u1 = 2 x 4 + 0 a_n_s_w_e_r_: u2 = 0 2_._2_._5_ _ _ _ _ _I_l_l_e_g_a_l_ _R_e_q_u_e_s_t_s_ 2.2.5 If an unintelligible driver message is received, the TAsync driver responds with u2 = 4. A request which is illegal in the present phase, i.e. - an 'Initiate' request in the communication phase, or - a transmit, receive, or 'Terminate Communication' request in the idle phase is answered with u2 = 1 x 8 + 4. \f F_ 3_._ _ _ _ _ _ _ _ _R_A_s_y_n_c_ _D_R_I_V_E_R_ 3. 3_._1_ _ _ _ _ _ _ _G_e_n_e_r_a_l_ _D_e_s_c_r_i_p_t_i_o_n_ 3.1 The RAsync driver is controlled by the TAsync driver with respect to entering and leaving the communication phase. In the communication phase the RAsync driver receives all char- acters arriving on the asynchronous communication line. When DCD=0 (no carrier signal) on the V.24 interface characters are not received. Received characters are obtained from the driver by issuing 'Re- ceive' requests. 'Receive' requests are processed, i.e. used as receive buffers, in the order they arrive. The driver does not return a non-full buffer until an additional buffer has been re- ceived. Therefore double buffering should be used to avoid loss of incoming characters as well as unnecessary waiting when char- acters are already available. Each 'Receive' request is answered as soon as one of the following conditions hold: - at least one character has been received into the buffer, and at least one more 'Receive' request has been received; - the buffer is full and an additional character has been recei- ved. This character and any subsequent characters arriving be- fore the next 'Receive' request are lost; Each received character is placed in one byte of the data buffer, right justified. If parity is enabled and the number of bits per character is less than 8 the parity bit is included in each char- acter byte. If the number of bits per character including parity is less than 8, the unused high order bits of each byte will be 1. A character received with parity or framing error is replaced by the value 128. \f 3_._2_ _ _ _ _ _ _ _D_r_i_v_e_r_ _M_e_s_s_a_g_e_ _a_n_d_ _A_n_s_w_e_r_s_ 3.2 3_._2_._1_ _ _ _ _ _R_e_c_e_i_v_e_ _R_e_q_u_e_s_t_ 3.2.1 c_o_d_i_n_g_: u1 = 1 The data buffer is used according to convention, see ref. 2. p_o_s_s_i_b_l_e_ _a_n_s_w_e_r_s_: successful: u2 = 0 The message contains one or more received characters as indicated by next, see ref. 2. not processed : u2 = 1 This answer is used for requests which are queued when the driver leaves the communication phase. The contents of the data message are undefined. overrun : u2 = 2 The message is full of received characters, i.e. next=last+1. At least one character has been lost. hard overrun: u2 = 2 x 8 + 2 An overrun occured in the SIO. Normally this will not be possible. 3_._2_._2_ _ _ _ _ _I_l_l_e_g_a_l_ _R_e_q_u_e_s_t_s_ 3.2.2 If an unintelligible driver message is received, the RAsync driver answers with u2 = 4. \f F_ A_._ _ _ _ _ _ _ _ _R_E_F_E_R_E_N_C_E_S_ A. 1 RCSL 31-D615: The PI-1 Machine, Reference Manual 2 RCSL 31-D617: PASCAL80 Driver Conventions 3 RCSL 31-D619: LIS 701, V.24 Line Selector \f 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. DRIVER MESSAGES AND ANSWERS ............................ 2 2.1 Initiate Request .................................. 2 2.2 Transmit Request .................................. 4 2.3 Wait Ready Request ................................ 4 2.4 Illegal Requests .................................. 5 A_P_P_E_N_D_I_X_: A. REFERENCES ............................................. 7 \f ii \f 1_._ _ _ _ _ _ _ _ _I_N_T_R_O_D_U_C_T_I_O_N_ 1. This manual describes the PI-1 machine (ref. 1) printer driver which is intended for use on RC700 and RC850. The printer driver supports a serial printer connected to the RC700 or RC850 via the V.24 PRINTER interface using asynchronous transmission at speeds ranging from 110 to 9600 bps. The interface is handled by means of the Z80-SIO chip. The printer driver incorporates RC standard use of V.24 signals as follows: DCD indicates printer online/offline (1/0) CTS indicates printer busy/not busy (0/1). A number of parameters determining details of the mode of commu- nication are given in an 'Initiate' request, including transmis- sion speed, number of bits per character etc. Characters are transmitted either in single byte or buffer mode. The driver is transparent with respect to character codes; in particular it gives no special treatment to CR, LF and FF. Re- gardless of the number of bits per character, each transmit character is taken from one byte of the data buffer (or single byte), right justified, i.e. using the least significant bit positions. The driver supports timeout on the printer busy condition, accor- ding to a timeout parameter supplied in the 'Initiate' request. The printer driver is coded in Z80 assembly language and must be included in a PASCAL80 system as part of its basic system. The driver interface is specified in accordance with the general conventions for driver interfaces in PASCAL80 systems (ref. 2). \f F_ 2_._ _ _ _ _ _ _ _ _D_R_I_V_E_R_ _M_E_S_S_A_G_E_S_ _A_N_D_ _A_N_S_W_E_R_S_ 2. 2_._1_ _ _ _ _ _ _ _I_n_i_t_i_a_t_e_ _R_e_q_u_e_s_t_ 2.1 The 'Initiate' request is used to specify communication mode parameters. It must be issued as the first request to the driver and may subsequently be re-issued any time if the parameters must be changed. c_o_d_i_n_g_: u1 = 1x4+0 Parameters are coded in the data buffer which is locked to the type: comm _mode _type= RECORD char _format: byte; (* nobc: 0..3; (* bits 6-7 *) unused: 0..3; (* bits 4-5 *) nosbc: 1..3; (* bits 2-3 *) parity: (odd, even); (* bit 1 *) parity _enable: BOOLEAN (* bit 0 *) *) CTS _timeout: byte; transmission _speed: 0..6 END; The effect of the communication mode parameters is described in the following paragraphs: c_h_a_r_a_c_t_e_r_ _f_o_r_m_a_t_ (char _format field) The value of nosbc determines the number of stop bits added to each transmitted character as follows: 1 1 stop bit/character 2 1 1/2 stop bit/character 3 2 stop bits/character At least one stop bit is always expected in received characters. \f If parity is enabled (parity _enable is TRUE) a parity bit is added to each transmitted character (odd or even parity as indi- cated by the parity field). Otherwise no parity bit is added. The value of nobc determines the number of bits per received or transmitted character, excluding start, stop and parity bits: 0 5 bits/character 1 7 bits/character NB 2 6 bits/character NB 3 8 bits/character The normal value of char _format for RC printers (7 bits/charac- ter, even parity) is 79. C_T_S_ _t_i_m_e_-_o_u_t_ _h_a_n_d_l_i_n_g_ (CTS _timeout field) The value of CTS _timeout determines the reaction of the printer driver to the condition CTS=0 (printer busy) during the process- ing of a 'Transmit' request. If CTS _timeout=0 this condition will cause the driver to wait (indefinitely) for CTS=1 before transmitting another character. Otherwise CTS _timeout indicates the CTS time-out period, measured in seconds. t_r_a_n_s_m_i_s_s_i_o_n_ _s_p_e_e_d_ (transmission _speed field) The speed is determined by the value of transmission _speed as follows: 0 110 bits/sec. 1 300 bits/sec. 2 600 bits/sec. 3 1200 bits/sec. 4 2400 bits/sec. 5 4800 bits/sec. 6 9600 bits/sec. p_o_s_s_i_b_l_e_ _a_n_s_w_e_r_: u2 = 0 \f 2_._2_ _ _ _ _ _ _ _T_r_a_n_s_m_i_t_ _R_e_q_u_e_s_t_ 2.2 The characters contained in the driver message are transmitted, cf. the general description given in chapter 1. c_o_d_i_n_g_: u1 = 8*sbm+2 (sbm means single byte mode) If sbm=1 the contents of u3 are transmitted as one character. If sbm=0 (buffer mode) the characters to be transmitted are taken from the data buffer in the standard way (ref. 2). p_o_s_s_i_b_l_e_ _a_n_s_w_e_r_s_ successful: u2 = 0 busy timeout: u2 = 0*8+3 offline: u2 = 1*8+3 If a 'Transmit' request is aborted because of timeout or printer offline, next (ref. 2) will indicate how many characters were transmitted before the abort. 2_._3_ _ _ _ _ _ _ _W_a_i_t_ _R_e_a_d_y_ _R_e_q_u_e_s_t_ 2.3 This request may be issued to wait for the printer to get ready after a 'Transmit' request abort. c_o_d_i_n_g_: u1 = 0 u3 = max. waiting time in seconds, 0 means indefinite p_o_s_s_i_b_l_e_ _a_n_s_w_e_r_s_ successful: u2 = 0 (DCD=1, CTS=1) busy timeout: u2 = 0*8+3 (DCD=1, CTS=0) offline timeout: u2 = 1*8+3 (DCD=0, CTS=0) \f 2_._4_ _ _ _ _ _ _ _I_l_l_e_g_a_l_ _R_e_q_u_e_s_t_s_ 2.4 If an unintelligible driver message is received the printer driver answers with u2=4. \f F_ \f F_ A_._ _ _ _ _ _ _ _ _R_E_F_E_R_E_N_C_E_S_ A. 1 RCSL No 31-D615: The PI-1 Machine, Reference Manual 2 RCSL No 31-D617: PASCAL80 Driver Conventions \f F_ \f «eof»