|
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: 172416 (0x2a180) Types: TextFile Names: »D7«
└─⟦e61e7d03c⟧ Bits:30005867/disk01.imd Dokumenter (RCSL m.m.) └─⟦this⟧ »D7«
CO_T_H_E_R_ _I_N_T_E_R_A_C_T_I_V_E_ _U_S_E_S_ _O_F_ _R_C_ _B_A_S_I_C_ C.1C_o_m_m_a_n_d_s_ _d_e_r_i_v_e_d_ _f_r_o_m_ _R_C_ _B_A_S_I_C_ _s_t_a_t_e_m_e_n_t_s_ The interactive use of RC BASIC for source program maintenance is described in Chapter 9. This appendix describes other interactive uses of RC BASIC. Many RC BASIC statements (see Chs. 3, 6, and 8) can be used as keyboard commands. When a statement is used as a command, it is entered without a preceding line number and terminated by pres- sing the RETURN key; the system then executes it immediately. This facility is useful for: Performing desk calculator functions, e.g. PRINT EXP(2.13) Debugging programs dynamically Performing file input/output, e.g. OPEN FILE(6,9) "<PTR" Certain RC BASIC statements, which are meaningful only within the context of a program, cannot be used as keyboard commands. These statements are: CASE-WHEN-ENDCASE ELSE DATA ON-ERR DEF ON-ESC DELAY ON-GOTO/GOSUB END PRINT USING EXEC PROC-ENDPROC FOR-NEXT REM GOSUB and RETURN REPEAT-UNTIL GOTO STOP ENDIF WHILE-ENDWHILE \f C.2D_e_s_k_ _c_a_l_c_u_l_a_t_o_r_ _f_u_n_c_t_i_o_n_s_ Calculations can be performed using the PRINT command. A semicolon (;) may be used instead of the word PRINT. The items in the argument list may be numeric or relational expressions, string literals, or string variables. Values can be assigned to variables by means of the LET, INPUT, or READ command, or the current values of variables in a loaded program can be used. T_E_x_a_m_p_l_e_ C_o_m_m_e_n_t_s_ * TAB=10 * K=SYS(14)/180 K is the factor used when * ;SIN(45*K),COS(45*K);TAN(45*K) converting radians to .707107 .707107 1 degrees. * ;SQR(169);SQR(27.45) 13 5.23927 * ;"12'" This PRINT command will clear the display screen on * the RC 822 or RC 823 terminal. &_ T_ C.3P_r_o_g_r_a_m_ _d_e_b_u_g_g_i_n_g_ The use of RC BASIC statements as keyboard commands permits programs to be debugged dynamically. &_ If, for example, a running program is producing the wrong output, it can be interrupted (ESCape key); the current values of the variables can then be examined (PRINT command) and changed (LET command) as required, before program execution is continued (see the CON or RUN line no.' command, Ch. 9). \f T_ E_x_a_m_p_l_e_ C_o_m_m_e_n_t_s_ 0010 LET K=180/SYS(14) 0020 FOR I=0 TO 45 STEP 5 0030 PRINT USING "### #.####",I,SIN(K*I), 0040 NEXT I * RUN 0 0.0000 5 0.5597 10 0.9277 The results indi- 15 0 cate that the STOP value of K is AT 0030wrong. * K=SYS(14)/180 * RUN 20 The user presses 0 0.0000 5 0.0872 10 0.1736 the ESCape key, 15 0.2588 20 0.3420 25 0.4226 assigns the right 30 0.5000 35 0.5736 40 0.6428 value to K, and 45 0.7071 resumes program END execution from AT 0040line 20. * C.4F_i_l_e_ _i_n_p_u_t_/_o_u_t_p_u_t_ With the exception of PRINT FILE USING, the file input/output statements described in Chapter 8 can be used as keyboard commands to create a file, open a file, write data to a file, and so on. If, for example, the error message 0044: FILE NOT OPENED is output, the user can open the file by means of the command OPEN FILE(file',mode') filename' and program execution can then continue. Use of the RELEASE command (see Ch. 7) may cause the error message 0115: OPEN FILES ON LD to appear, in which case the user should first give the command CLOSE and then RELEASE. F_ \f T_ DA_S_C_I_I_ _C_H_A_R_A_C_T_E_R_ _S_E_T_ D.1A_S_C_I_I_ _c_h_a_r_a_c_t_e_r_s_ _w_i_t_h_ _t_h_e_i_r_ _d_e_c_i_m_a_l_ _a_n_d_ _o_c_t_a_l_ _v_a_l_u_e_s_ D_E_C_ O_C_T_ C_H_A_R_ D_E_C_ O_C_T_ C_H_A_R_ D_E_C_ O_C_T_ C_H_A_R_ D_E_C_ O_C_T_ C_H_A_R_ 0 000 NUL 32 040 SP 64 100 Æ 96 140 1 001 SOH 33 041 " 65 101 A 97 141 a 2 002 STX 34 042 " 66 102 B 98 142 b 3 003 ETX 35 043 # 67 103 C 99 143 c 4 004 EOT 36 044 < 68 104 D 100 144 d 5 005 ENQ 37 045 % 69 105 E 101 145 e 6 006 ACK 38 046 & 70 106 F 102 146 f 7 007 BEL 39 047 ! 71 107 G 103 147 g 8 010 BS 40 050 ( 72 110 H 104 150 h 9 011 HT 41 051 ) 73 111 I 105 151 i 10 012 LF 42 052 * 74 112 J 106 152 j 11 013 VT 43 053 + 75 113 K 107 153 k 12 014 FF 44 054 , 76 114 L 108 154 l 13 015 CR 45 055 - 77 115 M 109 155 m 14 016 SO 46 056 . 78 116 N 110 156 n 15 017 SI 47 057 / 79 117 O 111 157 o 16 020 DLE 48 060 0 80 120 P 112 160 p 17 021 DC1 49 061 1 81 121 Q 113 161 q 18 022 DC2 50 062 2 82 122 R 114 162 r 19 023 DC3 51 063 3 83 123 S 115 163 s 20 024 DC4 52 064 4 84 124 T 116 164 t 21 025 NAK 53 065 5 85 125 U 117 165 u 22 026 SYN 54 066 6 86 126 V 118 166 v 23 027 ETB 55 067 7 87 127 W 119 167 w 24 030 CAN 56 070 8 88 130 X 120 170 x 25 031 EM 57 071 9 89 131 Y 121 171 y 26 032 SUB 58 072 : 90 132 Z 122 172 z 27 033 ESC 59 073 ; 91 133 (@) 123 173 (æ) 28 034 FS 60 074 92 134 (Ø) 124 174 (ø) 29 035 GS 61 075 = 93 135 (Å) 125 175 (å) 30 036 RS 62 076 ' 94 136 () 126 176 &_ 31 037 US 63 077 ? 95 137 (_) 127 177 DEL \f N_o_t_e_: Decimal values 91 through 93 and 123 through 125 can be used for Danish or other national characters. D.2O_u_t_p_u_t_ _o_f_ _n_o_n_-_p_r_i_n_t_i_n_g_ _c_h_a_r_a_c_t_e_r_s_ Non-printing characters, i.e. characters which do not appear as keys on the terminal keyboard, can be output by means of the following sequence: PRINT "x'" where x is the decimal value of the character to be output. Only a few of the non-printing characters are used ordinarily, e.g. to move the paper on the line printer or to position the cursor on a video terminal. The non-printing characters that occur most frequently are: 12 FF Form Feed. On the line printer, feeds the form to the top of the next page and positions to the leftmost character position on the print line. 13 CR Carriage Return. On the terminal, positions to . the leftmost character position on the print line. 10 LF Line Feed. On the terminal, feeds one line vertically. N_o_t_e_: To output positioning to the leftmost character position on the print line a_n_d_ a line feed, the sequence PRINT "13'10'" must be used. 7 BEL Bell. On the terminal, causes the bell to ring once. The characters used to position the cursor on a video terminal will depend on the terminal in question and may be found in the operating guide for the terminal. F_ \f E R_E_S_E_R_V_E_D_ _W_O_R_D_S_ This appendix contains an alphabetical list of the reserved words in the RC BASIC language. These words have special meanings and may not be used as variables. ABS ENDCASE LOCK RND AND ENDIF LOG RUN ATN ENDPROC LOOKUP RUNL AUTO ENDWHILE ENTER EOF MATSAVE BATCHEOJMODSCRATCH BYEERRSGN ESCSIN EXECNEWSIZE CALL EXPNEXTSQR CASENOTSTEP CHAINSTOP CHRFALSESYS CLOSEFILEOF CONFNA ... FNÅON CONLFOROPENTAB CONNECTORTAN COPYORDTHEN COSGOSUBTIME CREATEGOTOTINPUT PAGETO PRINTTRN DATAIDNPROCTRUE DEFIFPUNCH DELAYINIT DELETEINPUTUNTIL DETINTRANDOMIZEUSERS DIMINVREADUSING DIVRELEASE DOREM RENAMEWHEN LENRENUMBERWHILE LETREPEATWRITE ELSELISTRESTORE ENDLOADRETURNZER N_o_t_e_: FNA ... FNÅ represents the 29 reserved words FNA, FNB, ..., FNZ, FN@, FNØ, and FNÅ. F_\f F S_U_M_M_A_R_Y_ _O_F_ _S_T_A_T_E_M_E_N_T_S_,_ _C_O_M_M_A_N_D_S_,_ _A_N_D_ _F_U_N_C_T_I_O_N_S_ F.1R_C_ _B_A_S_I_C_ _s_t_a_t_e_m_e_n_t_s_ _(_C_h_a_p_t_e_r_ _3_)_ F_o_r_m_a_t_/_D_e_s_c_r_i_p_t_i_o_n_ S_e_c_t_i_o_n_/_U_s_e_ CASE expr' OF 3.2 statements-0' WHEN expr' ,expr' ... statements-1' . . . WHEN expr' ,expr' ... statements-n' ENDCASE comment' The expression following CASE is evaluated STATEMENT and compared with the expressions following WHEN. If there is a match in the ith WHEN statement, statements-i is executed. If no match is found, statements-0 is executed. Control is then transferred to the first statement following ENDCASE. CHAIN filename' THEN GOTO lineno.' 3.3 Runs the SAVEd program referred to by a STATEMENT filename when the statement is encountered or COMMAND in the user"s program. When used as a command, CHAIN will LOAD, but not execute, the SAVEd program. val' ,val'3.4 DATA slit' ,slit' ... Provides values to be read into variables STATEMENT appearing in READ or MAT READ statements. DEF FNa'(d') = expr' 3.5 Used with the f_u_n_c_t_i_o_n_ FNa(d) to define a STATEMENT user function. \f DELAY = expr' 3.6 Interrupts program execution for a STATEMENT specified number of seconds. svar'(m') svar'(m') 3.7 DIM array'(m') ,array'(m') ... array'(row',col')array'(row',col') Defines the size of string variables or STATEMENT numeric variable arrays. or COMMAND END comment' 3.8 Terminates execution of the program. STATEMENT EXEC name' 3.10 Executes a procedure defined by STATEMENT PROC-ENDPROC. FOR control var' = expr1' TO expr2' STEP expr3' 3.11 statements' NEXT control var' FOR begins a FOR-NEXT loop and defines the STATEMENT number of times a block of statements is to be executed. NEXT is the last statement in the loop and changes the value of the control variable. GOSUB lineno.' 3.12 . . . statements' RETURN comment' GOSUB transfers control to the first state- STATEMENT ment of a subroutine. RETURN is the last statement in a subroutine and returns control to the first statement following the GOSUB statement that called the sub- routine. GOTO lineno.' 3.13 Transfers control unconditionally to aSTATEMENT statement not in normal sequential order.\f IF expr' THEN statement' 3.14 Executes a single statement depending on STATEMENT whether an expression is true or false. or COMMAND IF expr' THEN DO 3.15 statements' ENDIF comment' Executes a block of statements depending on STATEMENT whether an expression is true or false. IF expr' THEN DO 3.16 statements-1' ELSE comment' statements-2' ENDIF comment' Executes statements-1 if an expression is STATEMENT true, otherwise statements-2. var',var'3.17 INPUT slit-0', svar' ,slit-n' ,svar' ... Assigns values entered from the user"s STATEMENT terminal to numeric or string variables. or COMMAND var'var'3.18 LET svar' = expr' ; svar' = expr' ... Assigns the value of an expression to a STATEMENT variable. or COMMAND ON ERR THEN statement' 3.20 Enables the programmer to take special STATEMENT action, if an error occurs during program execution. ON ESC THEN statement' 3.21 Enables the programmer to take special STATEMENT action, if the ESCape key is pressed during program execution. \f GOTO 3.22 ON expr' THEN GOSUB lineno.' ,lineno.' ... Transfers control to one of several lines STATEMENT in a program depending on the computed value of an expression when the statement is executed. expr' expr' 3.24 ;slit' , slit' , PRINT svar' ; svar' ... ; Prints specified items on the user"s STATEMENT terminal. or COMMAND expr' expr' 3.25 PRINT USING format', slit' , slit' ... , svar' ; svar'; Outputs the values of items in the STATEMENT argument list using a specified format. PROC name' 3.26 statements' ENDPROC comment' Defines a procedure. When the procedure is STATEMENT called by EXEC, control is transferred to the first statement following PROC. ENDPROC is the last statement in a procedure and returns control to the first statement fol- lowing the EXEC statement that called the procedure. RANDOMIZE 3.27 Causes the random number generator to start STATEMENT at a different point in the sequence of or COMMAND random numbers generated by the f_u_n_c_t_i_o_n_ RND(X). var' ,var' 3.28 READ svar' ,svar' ... Reads in values from DATA statements and STATEMENT assigns the values to the variables listed or COMMAND \f in the statement. REM comment' 3.29 Inserts explanatory comments within a STATEMENT program. REPEAT comment' 3.30 statements' UNTIL expr' Executes a block of statements repetitively STATEMENT until an expression is true. The block of statements is always executed at least once. RESTORE lineno.' 3.31 Resets the data element pointer to the STATEMENT beginning of the data list or to a or COMMAND particular DATA statement. STOP comment' 3.33 Terminates execution of the current STATEMENT program. TAB(expr') 3.35 Used in PRINT statements to tabulate the F_U_N_C_T_I_O_N_ printing position to the column number evaluated from an expression. WHILE expr' THEN DO 3.36 statements' ENDWHILE comment' Executes a block of statements repetitively STATEMENT while an expression is true. If the expres- sion is false the first time WHILE is en- countered, the block of statements is not executed even once. \f F.2 R_C_ _B_A_S_I_C_ _f_u_n_c_t_i_o_n_s_ _(_C_h_a_p_t_e_r_ _4_)_ ABS(expr') 4.2 Returns the absolute (positive) value of FUNCTION an expression. ATN(expr') 4.3 Calculates the angle, in radians, whose FUNCTION tangent is an expression. COS(expr') 4.4 Calculates the cosine of an angle which is FUNCTION expressed in radians. EXP(expr') 4.5 Calculates the value of e (2.71828) to the FUNCTION power of an expression. FNa'(d') 4.6 A user function which is defined by DEF FUNCTION (see Sect. F.1) and returns a numeric value. INT(expr') 4.7 Returns the value of the nearest integer FUNCTION not greater than an expression. LOG(expr') 4.8 Calculates the n_a_t_u_r_a_l_ logarithm of an FUNCTION expression. RND(expr') 4.9 Produces a pseudo random number between FUNCTION 0 and 1. SGN(expr') 4.10 Returns the algebraic sign of an FUNCTION expression.\f SIN(expr')4.11 Calculates the sine of an angle which is FUNCTION expressed in radians. SQR(expr') 4.12 Computes the square root of an expression. FUNCTION SYS(expr') 4.13 Returns system information, based on an FUNCTION expression which is evaluated to an integer, as follows: 0 Time of day. 1 Day. 2 Month. 3 Year. 4 Terminal port number. 5 Time used since terminal was logged on. 6 Number of file I/O statements execu ted. 7 Error code of last run-time error. 8 File number of last file referenced . 9 Page size. 10 Tab size. 11 Hour. 12 Minutes past last hour. 13 Seconds past last minute. 14 Constant . 15 Constant e. TAN(expr') 4.14 Calculates the tangent of an angle which FUNCTION is expressed in radians. The following functions are described in other sections: the printing function TAB(X) in F.1; the string functions CHR(X), LEN(X<), and ORD(X<) in F.3; the matrix function DET(X) in F.4; and the function EOF(X) in F.6. \f T_ F.3S_t_r_i_n_g_ _f_u_n_c_t_i_o_n_s_ _(_C_h_a_p_t_e_r_ _5_)_ CHR(expr') 5.2 Returns the character corresponding to FUNCTION the number found as an expression modulo 128. &_ svar' 5.3 LEN( slit' ) Returns the current number of characters FUNCTION in a string. svar' 5.4 ORD( slit' ) Returns the decimal number of the first FUNCTION character of a string. F.4M_a_t_r_i_x_ _s_t_a_t_e_m_e_n_t_s_ _(_C_h_a_p_t_e_r_ _6_)_ MAT mvar1' = mvar2' 6.3 Copies the elements of one matrix to STATEMENT another matrix. or COMMAND MAT mvar1' = mvar2' UUU+DDD mvar 3' 6.4 UUUU-DDDD Performs the scalar addition or STATEMENT subtraction of two matrices. or COMMAND MAT mvar1' = UUUmvar2'DDD * mvar3' 6.5 UUUU(expr')DDDD Performs the multiplication of one STATEMENT matrix by another matrix or by a scalar.or COMMAND var' = DET(expr') 6.6 Returns the determinant of the last F_U_N_C_T_I_O_N_ matrix inverted by a MAT INV statement. \f MAT mvar' = CON 6.7 Initializes a matrix such that all STATEMENT elements are set to one.or COMMAND MAT mvar' = IDN 6.8 Initializes a matrix such that all STATEMENT elements (i,i) are set to one and the or COMMAND remaining elements are set to zero. MAT INPUT mvar1' ,mvar2', ... ,mvar-n' 6.9 Assigns numeric values entered from the STATEMENT user"s terminal to the elements of one or COMMAND or more matrices. MAT mvar1' = INV(mvar2') 6.10 Inverts a matrix and assigns the resultant STATEMENT element values to another matrix. or COMMAND ; MAT PRINT mvar' , mvar' ... ; 6.11 Outputs the values of the elements of one STATEMENT or more matrices on the user"s terminal. or COMMAND MAT READ mvar' ,mvar' ... 6.12 Reads in numeric values from DATA state- STATEMENT ments and assigns the values to the or COMMAND elements of one or more matrices. MAT mvar1' = TRN(mvar2') 6.13 Transposes a matrix and assigns the STATEMENT resultant element values to another or COMMAND matrix. MAT mvar' = ZER 6.14 Initializes a matrix such that all STATEMENT elements are set to zero. or COMMAND \f T_ F.5L_o_g_i_c_a_l_ _d_i_s_c_ _c_o_m_m_a_n_d_s_ _(_C_h_a_p_t_e_r_ _7_)_ CONNECT ldname' ,expr' 7.2 Connects the user"s terminal to a logical COMMANDor disc for reading or, if the protection key STATEMENT is correctly specified, for both reading and writing. &_ COPY "ldname':filename1'","filename2'" 7.3 Copies a file (filename1') from any COMMAND logical disc (ldname') to a file (filename2') in the logical disc to which the terminal is connected. INIT device' 7.4 Initializes the main catalog in a device COMMAND containing logical discs. LOCK device' 7.5 Locks a device, when changing discs or COMMAND closing down the system, so that no user can connect his terminal to a logical disc in that device. LOOKUP "<LPT" 7.6 Returns a listing of the files in the COMMAND logical disc to which the terminal is connected. RELEASE 7.7 Disconnects the user"s terminal from the COMMANDor logical disc to which it is connected.STATEMENT USERS device' 7.8 Returns the number of users whose COMMAND terminals are connected to any logical disc in a device. \f F.6F_i_l_e_ _s_t_a_t_e_m_e_n_t_s_ _(_C_h_a_p_t_e_r_ _8_)_ CLOSE FILE(file') 8.2 Dissociates a filename and a user file STATEMENT number (see OPEN FILE) so that the file or COMMAND no longer can be referenced. The CLOSE form of the statement closes all open files. CREATE filename',size',recl' 8.3 Creates a file in the logical disc to STATEMENT which the user"s terminal is connected. or COMMAND DELETE filename' 8.4 Deletes a file in the logical disc to which STATEMENT the user"s terminal is connected. or COMMAND EOF(file') 8.5 Returns a value of +1, if an end of file F_U_N_C_T_I_O_N_ condition was detected in the last INPUT FILE or READ FILE statement; otherwise, a value of 0 is returned. var'var' INPUT FILE(file') , svar' , svar' ... 8.6 Reads data in ASCII format from a STATEMENT sequential access file for the variables or COMMAND in the argument list. MAT INPUT FILE(file') , mvar' ,mvar' ... 8.7 Reads data in ASCII format from a STATEMENT sequential access file for the matrix or COMMAND variables in the argument list. MAT PRINT FILE(file') , mvar' ,mvar' ... 8.8 Writes matrix data in ASCII format to a STATEMENT sequential access file. or COMMAND \f MAT READ FILE(file',recno') , mvar' ,mvar' ... 8.9 Reads data in binary format from a STATEMENT sequential access file or record of a or COMMAND random access file for the matrix variables in the argument list. MAT WRITE FILE(file',recno') , mvar' ,mvar' ... 8.10 Writes matrix data in binary format to a STATEMENT sequential access file or record of a or COMMAND random access file. OPEN FILE(file',mode') , filename' 8.11 Associates a filename, i.e. a disc file or STATEMENT a device, with a user file number so that or COMMAND the file can be referenced in other file I/O statements; also specifies how the file is to be used. expr' , expr' , PRINT FILE(file') , slit' ; slit' ... ; 8.12 svar' svar' Writes data in ASCII format to a STATEMENT sequential access file. or COMMAND expr' expr' PRINT FILE(file') , USING format', slit' , slit' ... , svar' ; svar' ; 8.13 Writes data in ASCII format to a STATEMENT sequential access file, using a specified output format. var'var' READ FILE(file',recno') , svar' , svar' ... 8.14 Reads data in binary format from a STATEMENT sequential access file or record of aor COMMAND random access file for the variables in the argument list. \f RENAME filename1',filename2'8.15 Renames a file in the logical disc to STATEMENT which the user"s terminal is connected. or COMMAND expr' expr' WRITE FILE(file',recno') , slit' , slit' ... 8.16 svar' svar' Writes data in binary format to a STATEMENT sequential access file or record of a or COMMAND random access file. F.7S_y_s_t_e_m_ _c_o_m_m_a_n_d_s_ _(_C_h_a_p_t_e_r_ _9_)_ line n1',line n2' 9.2 line n1' line n1', ,line n2' Deletes one or more statements in a COMMAND program. line n1' 9.3 STEP AUTO , line n2' STEP line n1' , line n2' Provides automatic line numbers in a COMMAND program, thereby making it easier to enter programs from a terminal. BATCH "<LPT" 9.4 Places the terminal in batch mode and COMMAND causes the system to start reading cards from the mark-sense card reader. Job out- put will appear on the terminal or, if the BATCH "<LPT" form of the command is used, on the line printer. \f T_BYE 9.5 Logs the terminal off the system. COMMANDor STATEMENT &_ CON 9.6 CONL Continues execution of the current program COMMAND after the execution of a STOP statement in the program, after the ESCape key has been pressed, or after an error has occurred. Output from PRINT statements will appear on the terminal or, if the CONL form of the command is used, on the line printer. ENTER filename' 9.7 Merges the statement lines from the disc COMMAND or file or the device specified by a filename STATEMENT into the current program storage area. line n1' 9.9 TO LIST , line n2' filename' TO line n1' , line n2' Outputs part or all of the currently COMMAND loaded program in ASCII format to the disc file or the device specified by a filename or, if no filename is specified, to the terminal. LOAD filename' 9.10 Loads a previously SAVEd program in binary COMMAND format from the disc file or the device specified by a filename into the user"s program storage area. NEW 9.11 Clears all currently stored program state- COMMAND or ments and variables from core memory and STATEMENT closes any open files. \f PAGE=expr' 9.12 Sets the right-hand margin of the terminal. COMMAND or STATEMENT line n1' 9.13 TO PUNCH , line n2' TO line n1' , line n2' Outputs part or all of the currently loaded COMMAND program in ASCII format to the terminal punch (when present). line n1' 9.14 STEP RENUMBER , line n2' STEP line n1' , line n2' Renumbers the statements in the current COMMAND program. RUN line no.' 9.15 RUNL filename' Executes the current program, either from COMMAND the lowest numbered statement or from a specified line number, or loads and executes a previously SAVEd program as the current program. Output from PRINT statements will appear on the terminal or, if the RUNL form of the command is used, on the line printer. SAVE filename' 9.16 Writes the currently loaded program, COMMAND or including the current values of all STATEMENT variables and parameters, in binary format to the disc file or the device specified by a filename. SIZE 9.18 Returns the number of bytes used by the COMMAND current program and the numbers of bytes left.\f TAB=expr' 9.19 Sets the zone spacing between the print COMMAND or elements output by PRINT statements. STATEMENT F.8B_a_t_c_h_ _m_o_d_e_ _c_o_m_m_a_n_d_s_ _(_A_p_p_e_n_d_i_x_ _B_)_ EOJ B.4 Terminates a job. COMMAND SCRATCH text' B.5 Initiates a job. COMMAND TIME=val' B.6 Specifies how many seconds a job may run. COMMAND F_ \f R_E_S_E_R_V_E_D_ _W_O_R_D_S_ _I_N_ _T_H_E_ _R_C_ _B_A_S_I_C_ _L_A_N_G_U_A_G_E_ The use of the words is denoted by the following abbreviations: AO (arithmetic operator), C (command), F (function), LO (logical operator), NI (not implemented), and S (statement). The section (chapter) number indicates where the sole, first, or principal explanation of the word will be found. W_o_r_d_ U_s_e_ S_e_c_t_i_o_n_ W_o_r_d_ U_s_e_ S_e_c_t_i_o_n_ W_o_r_d_ U_s_e_ S_e_c_t_i_o_n_ ABS F 4.2 FALSE NI RANDOMIZE S,C 3.27 AND LO 2 FILE S,C 8 READ S,C 3.28 ATN F 4.3 FNA - FNÅ F 3.5 RELEASE C,S 7.7 AUTO C 9.3 FOR S 3.11 REM S 3.29 RENAME S,C 8.15 BATCH C 9.4 GOSUB S 3.12 RENUMBER C 9.14 BYE C,S 9.5 GOTO S 3.13 REPEAT S 3.30 RESTORE S,C 3.31 CALL NI RETURN S 3.12 CASE S 3.2 IDN S,C 6.8 RND F 4.9 CHAIN S,C 3.3 IF S,C 3.14 RUN C 9.15 CHR F 5.2 INIT C 7.4 RUNL C 9.15 CLOSE S,C 8.2 INPUT S,C 3.17 CON S,C 6.7 INT F 4.7 CON C 9.6 INV S,C 6.10 SAVE C,S 9.16 CONL C 9.6 SCRATCH C B.5 CONNECT C,S 7.2 SGN F 4.10 COPY C 7.3 LEN F 5.3 SIN F 4.11 COS F 4.4 LET S,C 3.18 SIZE C 9.18 CREATE S,C 8.3 LIST C 9.9 SQR F 4.12 LOAD C 9.10 STEP S 3.11 DATA S 3.4 LOCK C 7.5 STOP S 3.33 DEF S 3.5 LOG F 4.8 SYS F 4.13 DELAY S 3.6 LOOKUP C 7.6 DELETE S,C 8.4 DET F 6.6 TAB C,S 9.19 DIM S,C 3.7 MAT S,C 6 TAN F 4.14 DIV AO 2 MOD AO 2 THEN S,C 3.14 DO S 3.36 TIME C B.6 NEW C,S 9.11 TINPUT NI ELSE S 3.16 NEXT S 3.11 TO S 3.11 END S 3.8 NOT LO 2 TRN S,C 6.13 ENDCASE S 3.2 TRUE NI ENDIF S 3.15 OF S 3.2 ENDPROC S 3.26 ON S 3.22 UNTIL S 3.30 ENDWHILE S 3.36 OPEN S,C 8.11 USERS C 7.8 ENTER C,S 9.7 OR LO 2 USING S 3.25 EOF F 8.5 ORD F 5.4 EOJ C B.4 WHEN S 3.2 ERR S 3.20 PAGE C,S 9.12 WHILE S 3.36 ESC S 3.21 PRINT S,C 3.24 WRITE S,C 8.16 EXEC S 3.10 PROC S 3.26 EXP F 4.5 PUNCH C 9.13 ZER S,C 6.14 \f GA_D_V_A_N_C_E_D_ _P_R_O_G_R_A_M_M_I_N_G_ _E_X_A_M_P_L_E_S_ In course of preparation.\f H C_A_L_L_I_N_G_ _A_N_ _A_S_S_E_M_B_L_Y_ _L_A_N_G_U_A_G_E_ _S_U_B_R_O_U_T_I_N_E_ _F_R_O_M_ _R_C_ _B_A_S_I_C_ In course of preparation.\f Diskette 007 80.10.07 1 CONTENTS.0 33 BASIC9.10 65 INDEX.9 19 10388.15 2 CONTENTS.1 34 BASIC9.11 20 10388.16 3 CONTENTS.2 35 BASIC9.12 1 HEAD.0 21 10388.17 4 CONTENTS.3 36 BASIC9.13 22 10388.18 5 CONTENTS.4 37 BASIC9.14 1 1378.1 23 10388.19 6 BASIC6.0 38 BASIC9.15 2 1378.2 24 10388.20 7 BASIC6.1 39 BASIC9.16 3 1378.3 25 10388.21 8 BASIC6.2 40 BASIC9.17 4 1378.4 26 10388.22 9 BASIC6.3 41 BASIC9.18 5 1378.5 27 10388.23 10 BASIC6.4 42 BASIC9.19 6 1378.6 28 10388.24 11 BASIC6.5 43 BASIC9.20 7 1378.7 29 10388.25 12 BASIC6.6 44 BASIC9.21 8 1378.8 30 10388.26 13 BASIC6.7 45 BASIC9.22 9 1378.9 31 10388.27 14 BASIC6.8 46 BASIC9.23 32 10388.28 15 BASIC6.9 47 BASICC.0 1 SIDE21.0 16 BASIC6.10 48 BASICC.1 2 SIDE22.0 1 CONT.1 17 BASIC6.11 49 BASICC.2 3 SIDE23.0 2 CONT.2 18 BASIC6.12 50 BASICD.0 4 SIDE26.0 3 617.1 19 BASIC6.13 51 BASICD.1 5 10388.1 4 617.2 20 BASIC6.14 52 BASICE.0 6 10388.2 5 617.3 21 BASIC6.15 53 RESERV-WORDS.0 7 10388.3 6 617.4 22 BASIC6.16 54 BASIC-G.0 8 10388.4 7 617.5 23 BASIC9.0 55 BASIC-H.0 9 10388.5 8 617.6 24 BASIC9.1 56 INDEX.0 10 10388.6 9 617.7 25 BASIC9.2 57 INDEX.1 11 10388.7 10 617.8 26 BASIC9.3 58 INDEX.2 12 10388.8 11 617.9 27 BASIC9.4 59 INDEX.3 13 10388.9 12 617.10 28 BASIC9.5 60 INDEX.4 14 10388.10 29 BASIC9.6 61 INDEX.5 15 10388.11 30 BASIC9.7 62 INDEX.6 16 10388.12 31 BASIC9.8 63 INDEX.7 17 10388.13 32 BASIC9.9 64 INDEX.8 18 10388.14\f - time limit on jobs, B.3.3 - use of ESCape key, B.3.4 BATCH "<LPT", 9.4, B.1, B.3.1 Block sizes. See Devices Boolean arguments. See Operators, Boolean Branching, conditional, 3.2, 3.14, 3.15, 3.16, 3.22 - unconditional, 3.13 BYE, 9.5 Bytes used and bytes left, command to return, 9.18 CASE, 3.2 CASE-WHEN-ENDCASE, 3.2 Catalog, main, 7.1, 7.4; initialization of, 7.4 - structure, 7.1 - subcatalog, 7.1 CHAIN, 3.3, 8.1.5 Character corresponding to specified number, function to return, 5.2 CHR(X), 5.2 Clearing programs from core memory, 9.11 CLOSE FILE, 8.1.5, 8.1.7, 8.2 Commands, 1.2 - derived from RC BASIC statements, C.1 - desk calculator functions, C.2 - file input/output, C.4 - logical discs, 7 - program debugging, C.3 - program development and execution, 9, 9.1 Comments, explanatory, within program, 3.29 CON/CONL, 9.6, C.3 CONNECT, 7.1, 7.2, 8.1.6, 8.1.8, 8.3, 8.4, 8.15 Control structures, 3.2, 3.11, 3.13, 3.14, 3.15, 3.16, 3.22, 3.30, 3.33 COPY, 7.3 Corrections, program statements, 1.2 Cosine of X, where X is in radians, function to return, 4.4 COS(X), 4.4 CREATE, 8.1.4, 8.3 DATA, 3.4, 3.31 Data element pointer, resetting of. See RESTORE Debugging, program, C.1, C.3 DEF, 3.5 DELAY, 3.6 DELETE, 8.4 \f Deletion, files, 8.4 - program statements, 1.2, 9.2, 9.7 Descriptions of statements, commands, and functions, 1.4 Desk calculator functions, C.1, C.2 DET(X), 6.6 device', 1.5 Devices, 7.1, 8.1.1 - block sizes, 8.1.3 - reserved names, 8.1.2 DIM, 3.7, 5.1.3, 6.2 Dimensioning, matrices, 6.2 - numeric arrays, 2.4.2, 3.7 - string variables, 5.1.3 DIV. See Operators, arithmetic DO, 3.15, 3.16, 3.36 ELSE, 3.16 END, 3.8 ENDCASE, 3.2 ENDIF, 3.15, 3.16 ENDPROC, 3.10, 3.26 ENDWHILE, 3.36 ENTER, 8.1.5, 9.7 Entering data for program from terminal. See INPUT EOF(X), 8.5 EOJ, B.1, B.4 ERR, 3.20 Error messages, during command execution, A.1, A.2 - during file (input/output) operations, A.1, A.3 - during program entry, A.1, A.2 - during program execution, A.1, A.2 - during reading of program from file, A.1, A.2 ESC, 3.21 ESCape key, 1.2, 1.3, 3.21, 9.3, 9.5, B.3.4, C.3 E-type notation. See Numbers in RC BASIC Examples of statements, commands, and functions, 1.4 EXEC, 3.10, 3.26 Execution, program. See Program execution Exponential form. See Numbers in RC BASIC expr', 1.5 Expressions, 2.5. See also Operators - numeric, 2.5.1; evaluation of, 2.5.3 - relational, 2.5.5 - relational string, 5.1.7 - string, 2.5.8 EXP(X), 4.5\f Facilities, RC BASIC, 1.1 file', 1.5 filename', 1.5 Filenames, 8.1.1, 8.1.4 Files, 8.1. See also Logical disc files, Random access files, Sequential access files - closing, 8.2 - end of file condition, function to detect, 8.5 - input/output, commands for, C.4 - modes, 8.1.5, 8.11 - opening, 8.11 - sizes, 8.1.4 - uses, 8.1.5 Floating-point numbers. See Numbers in RC BASIC FNa(d), 3.5 FOR, 3.11 Formats (syntax) of statements, commands, and functions, 1.4 FOR-NEXT, 3.11 Functions, arithmetic, 4.2, 4.5, 4.7, 4.8, 4.9, 4.10, 4.12 - file, 8.5 - matrix, 6.6 - printing, 3.35 - RC BASIC, 4 - string, 5.2, 5.3, 5.4 - system, 4.13 - trigonometric, 4.3, 4.4, 4.11, 4.14 - user-defined, 3.5 GOSUB, 3.12, 3.22 GOTO, 3.3, 3.12, 3.13, 3.22 Idle mode. See Modes, terminal operation IF, 3.14, 3.15, 3.16 IF-THEN, 3.14 IF-THEN-ELSE-ENDIF, 3.16 IF-THEN-ENDIF, 3.15 INIT, 7.4, 8.1.2 Initialization of main catalog. See Catalog, main INPUT, 3.17, 5.1.2, 5.1.5, C.2 INPUT FILE, 8.6 Integer division, 2.5.2.1 Integers. See Numbers in RC BASIC Interactive mode. See Modes, terminal operation Interactive uses of RC BASIC, 9, 9.1, C Interruption, program execution. See Program execution INT(X), 4.7\f ldname', 1.5 Length of specified string, function to return, 5.3 LEN(X<), 5.3 LET, 3.18, 5.1.2, 5.1.5, 5.1.6, C.2, C.3 line no.', 1.5 LIST, 9.9 - LISTing versus SAVEing, 9.16 LOAD, 8.1.5, 9.10 Loading, SAVEd program in binary from disc file or device into program storage area, 9.10 LOCK, 7.5, 8.1.2 Logarithm of X, natural, function to return, 4.8 Logging off. See Terminal Logical disc files, 7.1, 8.1.1. See also Files - copying, 7.3 - creating, 8.3 - deleting, 8.4 - listing, 7.6 - renaming, 8.15 Logical discs, 7.1 - commands, 7 - connection of terminal, 7.2 - exclusive users, 7.1, 7.2 - formatting program, 7.1 - read access, 7.1, 7.2 - release of terminal, 7.7 - removal of device containing logical discs from drive unit, 7.5, 7.8 - write protection, 8.1.8 LOG(X), 4.8 LOOKUP "<LPT", 7.6 Loops, program, 3.11, 3.30, 3.36 Maintenance, source programs, 9.1 Mark-sense cards, B.2 - FORMULA section, B.1, B.2.4 - STATEMENT NUMBER section, B.2.1 - STATEMENT 1 section, B.2.2 - STATEMENT 2 section, B.2.3 Master terminal. See Terminal MAT CON, 6.7 MAT IDN, 6.8 MAT INPUT, 6.9 MAT INPUT FILE, 8.7 MAT INV, 6.10\f MAT PRINT, 6.11 MAT PRINT FILE, 8.8 MAT READ, 6.12 MAT READ FILE, 8.9 Matrices, addition, 6.4 - assignment (copying), 6.3 - determinants, 6.6, 6.10; determinant of last matrix inverted, function to return, 6.6 - dimensioning, 6.2 - initialization, 6.7, 6.8, 6.14 - inversion, 6.10 - multiplication, 6.5 - operations, 6.1 - subtraction, 6.4 - transposition, 6.13 MAT TRN, 6.13 MAT WRITE FILE, 8.10 MAT ZER, 6.14 Merging, program statements from disc file or device into program storage area, 9.7 MOD. See Operators, arithmetic Modes, file usage. See Files Modes, terminal operation, batch, 1.1, 1.3, 9.4, B, B.3. See also Batch mode - idle, 1.3, 9.5 - interactive, 1.1, 1.3, 3.8, 3.33, B.3.5 Modulus calculation, 2.5.2.2 mvar', 1.5 Names, arrays, 2.4 - numeric variables, 2.3 - string variables, 5.1.2 Nesting, 3.2, 3.5, 3.11, 3.12, 3.15, 3.16, 3.26, 3.30, 3.36 NEW, 1.2, 9.7, 9.10, 9.11, B.4, B.5 NEXT, 3.11 NOT. See Operators, Boolean Numbering, program statements, automatic, 9.3 Number of first character in specified string, function to return, 5.4 Numbers in RC BASIC, 2.1 - internal representation, 2.2, 3.14 - printing, 2.1, 3.24 \f OF, 3.2 ON, 3.20, 3.21, 3.22 ON-ERR, 3.20, 9.11 ON-ESC, 3.21, 9.11 ON-GOTO/GOSUB, 3.22 OPEN FILE, 8.1.6, 8.1.7, 8.11 Operating systems, 1.1, A.3 Operators, arithmetic, 2.5.2; DIV, 2.5.2.1; MOD, 2.5.2.2 - Boolean, 2.5.4 - priorities, arithmetic operators, 2.5.3; arithmetic, Boolean, and relational operators, 2.5.7 - relational, 2.5.6 OR. See Operators, Boolean ORD(X<), 5.4 Output, current program in ASCII to disc file, device, or terminal, 9.3; to terminal punch, 9.12; in binary to disc file or device, 9.16 PAGE, 9.12 PRINT, 3.24, 3.25, C.2, C.3 PRINT FILE, 8.12 PRINT FILE USING, 8.13 Printing, blank lines, 3.24 - compact spacing, 3.24 - data at terminal, 3.24, 3.25, 3.35, 9.12, 9.19 - length of print line (page width), command to set, 9.12 - non-printing characters, 5.1.1, D.2 - numbers, 2.1, 3.24 - spacing to next line, 3.24 - tabulation of printing position, function for, 3.35 - using specified format, 3.25 - zone spacing, 3.24; command to set, 9.19 PRINT USING, 3.25 Priorities of operators during program execution. See Operators PROC, 3.26 Procedures, 3.5, 3.10, 3.26 - calling, 3.10 - defining, 3.26 PROC-ENDPROC, 3.26 Program execution, 3.3, 9.15 - interruption of, 1.3, 3.3, 3.6, 3.20, 3.21 - resumption of, 1.3, 9.6 - termination of, 3.8, 3.33 Programming examples, advanced, G Programming on mark-sense cards, B.1 \f Programs, RC BASIC, 1.2 Protection key, 7.1, 7.2, 7.3 PUNCH, 9.13 Random access files, 8.1.6. See also Files - reading data in binary from record of, 8.14 - reading matrix data in binary from record of, 8.9 - writing data in binary to record of, 8.16 - writing matrix data in binary to record of, 8.10 RANDOMIZE, 3.27 - different starting points in sequence of random numbers generated, 3.27 Random number between 0 and 1, function to return, 4.9 Range of numbers. See Numbers in RC BASIC READ, 3.28, 5.1.2, 5.1.5, C.2 READ FILE, 8.14 recl', 8.3 recno', 8.9, 8.10, 8.14, 8.16 RELEASE, 7.7 REM, 3.29 Removal of device containing logical discs from drive unit. See Logical discs RENAME, 8.15 RENUMBER, 9.14 Renumbering, program statement lines, 9.14 REPEAT, 3.30 REPEAT-UNTIL, 3.30 Reserved names, devices. See Devices Reserved words in RC BASIC, E RESTORE, 3.28, 3.31 - resetting data element pointer, 3.31 Resumption, program execution. See Program execution RETURN, 3.10, 3.12, 3.26 RETURN key, 1.2, C.1 RND(X), 3.27, 4.9 RUBOUT key, 1.2 RUN/RUNL, 1.2, 8.1.5, 9.15, C.3 SAVE, 8.1.5, 9.16 - conserving space on SAVE device, 9.16 - SAVEing versus LISTing, 9.16 SCRATCH, B.1, B.5 Sequential access files, 8.1.7. See also Files - reading data in ASCII from, 8.6; in binary from, 8.14 - reading matrix data in ASCII from, 8.7; in binary from, 8.9\f - writing data in ASCII to, 8.12; using specified format, 8.13; in binary to, 8.16 - writing matrix data in ASCII to, 8.8; in binary to, 8.10 SGN(X), 4.10 Sign of X, algebraic, function to return, 4.10 SIN(X), 4.11 Sine of X, where X is in radians, function to return, 4.11 size', 8.3 SIZE, 9.16, 9.18 slit', 1.5 Special action, if error occurs, 3.20 - if ESCape key is pressed, 3.21 Square root of X, function to return, 4.12 SQR(X), 4.12 statements', 1.5 Statements, 1.2 - file input/output, 8 - matrix, 6 - RC BASIC, 3 - sequential execution of, 1.2 - which cannot be used as commands, C.1 STEP, 3.11, 9.3, 9.14 STOP, 3.12, 3.33 Strings, 5.1 - comparison, 5.1.7 - concatenation, 5.1.6 - constants, 5.1.1 - literals, 3.25, 5.1.1 - variables, 5.1.2; dimensioning, 5.1.3 - substrings, 5.1.4 Subcatalog. See Catalog Subroutines, 3.5, 3.12 - calling, 3.12 - calling an assembly language subroutine from RC BASIC, H - entry into, inadvertent, avoidance of, 3.12 Subscripts. See Arrays Summary of statements, commands, and functions, F svar', 1.5 System information, functions to return, 4.13 SYS(X), 4.13 TAB, 9.19 TAB(X), 3.35 Tangent of X, where X is in radians, function to return, 4.14 TAN(X), 4.14\f Terminal, connection to logical disc, 7.2 - log-off from system, 9.5 - master, 7.4, 7.5 - release from logical disc, 7.7 Termination, program execution. See Program execution THEN, 3.3, 3.14, 3.15, 3.16, 3.20, 3.21, 3.22, 3.36 TO, 3.11, 9.9, 9.13 TIME, B.5 UNTIL, 3.30 User functions, defining, 3.5 USERS, 7.8, 8.1.2 USING, 3.25, 8.13 val', 1.5 Value of e to the power of X, function to return, 4.5 Value of X, absolute, function to return, 4.2 Value of X, integer, function to return, 4.7 var', 1.5 Variables, assignment of values to, 3.17, 3.18, 3.28, 5.1.2, 5.1.5,6.9, 6.12, 8.6, 8.7, 8.9, 8.14; provision of values for, 3.4 - numeric, 2.3 - string, 2.3 WHEN, 3.2 WHILE, 3.36 WHILE-ENDWHILE, 3.36 WRITE FILE, 8.16 \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. INSTALLATION ........................................... 2 A_P_P_E_N_D_I_C_E_S_: A. REFERENCES ............................................. 3 B. FUNCTION KEYS .......................................... 4 \f ii \f 1_._ _ _ _ _ _ _ _ _I_N_T_R_O_D_U_C_T_I_O_N_ 1. CalcStar runs under the control of CP/M, which is assumed to be installed on your ITT 3290 Intelligent Terminal Work Station. The CalcStar package you have received contains the following: - this manual "CalcStar for the ITT 3290 Intelligent Terminal Work Station, Installation Guide". - MicroPro documentation of CalcStar: "CalcStar User's Guide" - One 8" diskette containing the CalcStar system. Do not write on your distribution diskette as it is your master copy, and serves as a last resort backup in case of grave errors. \f 2_._ _ _ _ _ _ _ _ _I_N_S_T_A_L_L_A_T_I_O_N_ 2. Start by making a copy of the original CalcStar distribution diskette, see ref. 1, backup, and continue in the following way: 1) Transfer all CalcStar files to your CP/M diskette by means of either PIP or TRANSFER NOTE: The help menu 'cursor movements' is misleading, because the the control commands are replaced by corresponding function keys. Function keys are implemented as shown in appendix B. \f A_._ _ _ _ _ _ _ _ _R_E_F_E_R_E_N_C_E_S_ A. 1 RCSL No 42-i2134: ITT 3290 Intelligent Terminal Work Station CP/M Operating System, User's Guide \f B_._ _ _ _ _ _ _ _ _F_U_N_C_T_I_O_N_ _K_E_Y_S_ B. K_E_Y_: F_U_N_C_T_I_O_N_: C_O_M_M_A_N_D_: -> GOTO @G <- NEXT ROW, FIRST COL @Z DEL CHAR DELETE CHAR LEFT DEL @ CURSOR UP @E CURSOR DOWN @X <- CURSOR LEFT @S -> CURSOR RIGHT @D Note: The control commands are substituted by the function keys. \f F_ i F_O_R_E_W_O_R_D_ This manual describes how to use release 1.2 of the program NCPSIZE. Release 1.2 differs from release 1.1 as follows: Constants related to NCP have been changed to fit with NCP release 5.0. The possibility to get an estimate of coredemands in systems supporting IBM3270 compatible terminals has been added. Karsten Dindorp A/S Regnecentralen af 1979, November 1980 \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. INPUT ................................................. 2 2.1 Interface Specifications ......................... 2 2.2 Aministrative Commands ........................... 10 3. ERROR MESSAGES ........................................ 12 A_P_P_E_N_D_I_C_E_S_: A. REFERENCES ............................................ 15 B. EXAMPLES .............................................. 16 C. SURVEY OF PARAMETER GROUPS ............................ 25 \f iv \f F_ 1_._ _ _ _ _ _ _ _ _I_N_T_R_O_D_U_C_T_I_O_N_ 1. NCPSIZE is an ALGOL program (in RC8000), which can give an ap- proximate estimate of the storage demand in a device controller for the basic system, the NCP and the drivers for a number of job host interfaces, devices, RCLC lines, and ROUTER connections in a frontend or a concentrator. The storage demand for the NCP is computed according to the rules described in >NCP revision 4 lagerstørrelser> (ref. 1, Danish edition). The storage demand for drivers is computed by a simplified algo- rithm: For each type of device the driver size is computed as prim _driver (devtype) + (n-1) * sec _driver (devtype) where n = number of devices of this type prim _driver (devtype) = size of the first driver for a device of this type sec _driver (devtype) = size of the greatest driver needed for the following devices of the same type. All storage demands are printed as a number of decimal bytes. \f F_ 2_._ _ _ _ _ _ _ _ _I_N_P_U_T_ 2. All input for the NCPSIZE program is specified as fp-parameters organized in groups. The different parameter groups must be sepa- rated by one or more space-characters, while the parameters in- side a group must be separated by a point. If the parameter spe- cification uses more than one line, all lines except the last one must end with a comma. Each parameter group is either a specification of a device, or an administrative command. The parameter groups can be specified in any sequence, but no group may appear more than once in the para- meter list. A parametergroup contains a keyword, possibly followed by some more parameters. The program will only check the six first cha- racters of a keyword, but up to 11 characters may be used. Only small letters and digits may appear in the parameters. During the interpretation of the fp-parameters the program writes these on current output together with possible error messages. If any errors are found in the parameter list, the program is termi- nated before the computation. Section 2.1 describes in details the parameters for specifying interfaces, whereas section 2.2 defines the administrative com- mands. Appendix C contains an alphabetical ordered survey of all parameter groups. 2_._1_ _ _ _ _ _ _ _I_n_t_e_r_f_a_c_e_ _S_p_e_c_i_f_i_c_a_t_i_o_n_s_2.1 This section describes the parameter groups to be used for speci- fying the devices and other interfaces connected to the device controller. \f The parameter keywords are, as far as possible, the same as the macro calls used in the NCP option text (ref. 2), and the des- cription of the parameter groups is organized in the same se- quence as these macro calls (though they may be specified in any order). All parameter groups containing a parameter denoted <no _of _dev' can be left out, meaning <no _of _dev' = 0. When the keyword of the parameter group is specified <no _of _dev' can be suppressed, mean- ning <no _of _dev' = 1. So these two default values are not men- tioned explicitly in the following description of the parameter groups. The description of some of the parameter groups mentiones a name for <no _of _dev', e.g. M8 for number of printers. These names re- fer to the computation formulas in ref. 1. The following parameter groups can be used: frontend This parameter is used when the device controller is a front- end. It must not appear together with the parameter >concen- trat>. If neither >frontend> nor >concentrat> are used, the default value is frontend. concentrat This parameter is used when the device is a concentrator. (The name >concentrator> would be too long for a parameter keyword). See also the description of the parameter >front- end>. tapeload This parameter is used when autoload of the system shall be performed from magnetic tape instead of from disc. M_M_ 1 1 rc4000 .<no _of _dev' . <testbuffer' P_P_ 0 0 This parameter group is used when the device controller is connected to one or more RC4000 job hosts. \f <no _of _dev' indicates the number of SCC connections (MSC1) from the device controller to the RC4000 job host(s). Max 2. <testbuffer' indicates the length in words of a testoutput buffer for each SCC connection. Default value is 1000. M_M_ 1 1 rc8000 .<no _of _dev' .<testbuffer' P_P_ 0 0 This parameter group is used when the device controller is connected to one or more RC8000 job hosts. <no _of _dev' indicates the number of fpa connections (MFPA) from the device controller to the RC8000 job host(s). Max 4. <testbuffer' indicates the length in words of a testoutput buffer for each fpa connection. Default value is 1000. tester This parameter is used if the device controller shall contain the NCPTESTER. M_M_ 1 host .<no _of _dev' P_P_ 0 This parameter group indicates the number of entries (N) in the job host name table. M_M_ 1 console .<no _of _dev' P_P_ 0 This parameter group indicates the number of terminals con- nected via TTY interface (M0). Max 2. \f term .<no _term' This parameter group indicates the number of terminals con- nected via an AMX or a TMX controller (M1). One AMX control- ler can contain 8 terminals and/or printers. M_M_ 1 telex .<no _of _dev' P_P_ 0 This parameter group indicates the number of telex lines con- nected via a TMX controller (M3). M_M_ 1 1 cardreader .no _of _dev' .ms. <no _of _ms' P_P_ 0 0 This parameter group is specified when the device controller contains one or more cardreaders. <no _of _dev' indicates the total number of cardreaders (M7). Max. 2. If some of these read marke-sence cards, this must be specified by ms.<no _of _ms'. Default value is 0. DDD4UUU .amx.<no _lpamx' M_m_m_ .lpt.<no _lpt' printer .<no _pr' P_p_p_ .cpt.<no _cpt' .sp.<no _sp' UUU1DDD This parameter group is specified, if the system contains one or more printers. <no _pr' is the total number of printers in the system (M8). amx.<no _lpamx' indicates the number of printers connected via an AMX controller. \f lpt.<no _lpt' indicates the number of directly connected line printers. cpt.<no _cpt' indicates the number of directly connected cha- raband printers. sp.<no _sp' indicates the number of directly connected serial printers. The program checks that <no _amx' + <no _lpt' + <no _cpt' + <no _sp' = <no _pr'. All number of printers have the default value 0. M_M_ 1 reader .<no _of _dev' P_P_ 0 This parameter group indicates the number of paper tape readers (M9). Max 1. M_M_ 1 punch .<no _of _dev' P_P_ 0 This parameter group indicates the number of paper tape punches (M10). Max 2. M_M_ 1 1 tapes .<no _of _dev'. <segments' .tr7. <no _of _7 _track' P_P_ 0 0 This parameter group is specified if the system contains one or more magnetic tape stations. <no _of _dev' is the total number of tape stations (M11). Max 8. <segments' indicates the maximum blocklength in segments of 768 characters. Max 10, default value is 4. \f tr 7.<no _of _7 _track' indicates the number of 7-track stations. Default value is 0. M_M_ 1 diablo .<no _of _dev' P_P_ 0 This parameter group indicates the number of Diablo disc drives (M12). Max 2. M_M_ 1 cassette .<no _of _dev' P_P_ 0 This parameter group indicates the number of cassette tape stations (M15). Max 2. M_M_ 1 plotter .<no _of _dev' P_P_ 0 This parameter group indicates the number of plotters (M16). Max 1. M_M_ 1 hdlc.<no _hdlc'.<no _chan'.<ntqb'.<stqb'.<nrqb'.<srqb' .<inhdlcmax' P_P_ 0 This parameter group is used when the system contains one or more hdlc controllers. <no _hdlc' indicates the number of HDLC controllers. Max 4. <no _chan' indicates the total number of HDLC channels (M18). Max 4 * <no _hdlc'. <ntqb' = number of transmission queue buffers. <stqb' = size-- - - <nrqb' = number of receive queue buffers. <srqb' = size- - - - \f <inhdlcmax' indicates the number of buffers in the input buf- fer pool, which can be reserved by the HDLC driver at any time. Default value = 2. M_M_ rc36501 floppy. .no _of _dev' P_P_ rc3751 0 This parameter group indicates the number of flexible disc drives (M19). The maximum value depends on the type of flexible disc: for rc3650 max <no _of _dev' is 1, and for rc3751 max <no _of _dev' is 4. M_M_ .bsc. <no_bsc' 2 rclc. <no _rclc' P_P_ .smx. <no _smx' 1 This parameter group is used if the device controller is a concentrator, or if it is a frontend connected to one or more concentrators. <no _rclc' indicates the total number of RCLC connections (MRTCO) <no _bsc' indicates the number of BSC devices, max 2 of 1 line. <no _smx' indicates the number of SMX devices, max 2 of 4 lines. M_M_ 1 rcrouter.<nrout'.<nrub1' .<srub1' P_P_ 0 This parameter group is used if NCP has an interface to ROUTER. \f <nrout' indicates the number of output coroutines. <nrub1' indicates the number of input coroutines and buffers. <srub1' indicates the size of the input buffers. Default value is 258. M_M_ 1 amx .no _of _dev' P_P_ 0 This parameter group indicates the number of AMX controllers, max 4. M_M_ 1 cx .<no _of _dev' P_P_ 0 This parameter group indicates the number of AMX controllers with RC800/20 concentrators, max 4. tmx.<no _of _lines' This parameter group is used if the system contains a TMX controller to indicate the number of lines in the TMX. <no _of _lines' must be one of the values 8, 12, 16, 20, or 32. M_M_ 1 1 1 .smx.<dev' .<dev' .<dev' .<dev' P_P_M_ 0 0 0 format M_M_P_ 1 .bsc.<dev' .<dev' P_P_ 0 M_M_ 8 <dev'::= P_P_ 16 This parameter group is used if the system contains IBM3270 compatible terminals. <dev' indicates the number of terminals on controlunit 1, 2, 3, and 4. <dev' must be specified in descending orders. Ex.: format.smx.16.8.8 \f 2_._2_ _ _ _ _ _ _ _A_d_m_i_n_i_s_t_r_a_t_i_v_e_ _C_o_m_m_a_n_d_s_2.2 This section describes the parameter groups to be used for speci- fying output. M_M_ yes list. P_P_ no This parameter group defines how much output should be prin- ted. list.no means that only the total number of bytes used in the device controller is printed, as shown in example 1 in ap- pendix B. list.yes means that a survey of contributions from all inter- faces, devices, and drivers is printed. See example 2 in ap- pendix B. Default value of this parameter group is list.yes listout .<area _name' This parameter group can be used to specify a disc area on which the output 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 exist already, the user himself must provide for the conver- ting. If this parameter group is not specified, the output will be written on current output. \f M_m_m_ <boss _paper _format' paper. P_p_p_ <lines _pr _page'.<dummy _no' This parameter group can be used for specifying the output format. If one number is specified in the paper parameter group, it denotes a Boss paper type: 0 = monitor paper (62 lines pr. page) 1 = A4 upright (62 - - - ) 2 = A4 across (40 - - - ) If two numbers are specified, the first one indicates the wanted number of lines pr. page, while the other one is dummy. Default value of this parameter group is paper.2 \f F_ 3_._ _ _ _ _ _ _ _ _E_R_R_O_R_ _M_E_S_S_A_G_E_S_ 3. Syntactical errors in the input parameters are printed on current output in the form of: <*< if a new parameter group appears as an illegal termina- tion of the previous parametergroup, or <*' if an error is found in a keyword or in a parameter inside a parameter group. When a semantical error in a parameter group is detected, a further explanation of the error is given: * double specified interface the parameter group appears more than once in the parameter list. * frontend and concentrator specified together only one of the parameters >frontend> and >concentrat> must appear in the parameter list. * illegal no. of devices on cu no. of devices on a cu must be 8 or 16. * illegal no. of lines in tmx the parameter group is specified with a number of lines <' 8, 12, 16, 20, or 32. * illegal no. of printers in the parameter group printer. ... the sum of printers of each type is not equal to the total number of printers. * illegal no. of rclc either no bsc and/or smx devices are specified, or too many devices compared to the total number of RCLC connections. \f * too many of this device a <no _of _dev' parameter has been stated with a too large value. See section 2.1 for definition of maximum values. * too many segments in mt-buffer max 8 segments allowed. * unknown floppy type floppy type must be >rc3650> or >rc3751>. * unknown printer type printer type must be >amx>, >lpt>, >cpt>, or >sp>. * unknown rclc type rclc type must be >bsc> or >smx>. When an error is found in a parametergroup, the following parame- ters in the group are not checked, and after reading of all para- meter groups the run is terminated by the following message: ***fp-parameter error: xx errors detected ***alarm and the ok-bit is set to false. \f F_ \f F_ A_._ _ _ _ _ _ _ _ _R_E_F_E_R_E_N_C_E_S_ A. Ref. 1: NCP revision 4 Lagerstørrelser RCSL No 43-GL 8954 Ref. 2: NCP revision 4, Generering af NCP og selektering af binære NCP moduler RCSL No 43-GL 8952 \f F_ B_._ _ _ _ _ _ _ _ _E_X_A_M_P_L_E_S_ B. The following five examples show the call of the NCPSIZE program and the output generated from each call. E_x_a_m_p_l_e_ _1_ The call: ncpsize, list.yes paper.1, frontend rc8000.1 console.1 term.7, amx.1 reader.1 punch.1 printer.3.lpt.1.sp.1.amx.1, tapes.1.4 floppy.rc3751 gives the following output: START NCP-SIZE, REL.1.2, 01.10.80 01.10.1980 - 16.55 NCPSIZE LIST.YES PAPER.1 FRONTEND RC8000.1 CONSOLE.1 TERM.7 , AMX.1 READER.1 PUNCH.1 PRINTER.3.LPT.1.SP.1.AMX.1 TAPES.1. , 4 FLOPPY.RC3751 \f F_ NCP-SIZE 01.10.1980 - 16.55 PAGE 1 FIXED CONTRIBUTIONS: BASISSYSTEM 9996 FRONTEND 8249 INTERFACES: NUMBER OTHER PARAMETERS RC8000 1 1000 3888 DRIVER 972 CONSOLE 1 4013 TERM 7 1743 PRINTER 3 AMX.1.LPT.1.SP.1 956 DRIVER 1868 READER 1928 DRIVER 460 PUNCH 1 158 DRIVER 198 TAPES 1 4 1462 DRIVER 1174 FLOPPY 1 RC3751 738 DRIVER 6432 AMX DRIVER 1 2258 BUFFER POOLS MESS.POOL 0 120 ANSW.POOL 0 72 MESS.POOL 1 684 ANSW.POOL 1 220 MESS.POOL 2 1430 ANSW.POOL 2 282 MESS.POOL 3 1208 ANSW.POOL 3 1200 MESS.POOL 4 798 MESS.POOL 5 3120 NET POOL 0 RTCI POOL 0 T_O_T_A_L_ _N_O_._ _O_F_ _B_Y_T_E_S_5_5_6_2_7_ MAX STORAGE IN ONE DEVICE CONTROLLER 65000 END NCP-SIZE, REL.1.2, 01.10.80 01.10.1980 - 16.55 CPU: 1 END 64 \f F_ E_x_a_m_p_l_e_ _2_ The call: ncpsize, list.no, frontend rc8000.1 tapeload, console reader cardreader, term.26 cx.2 printer.6.lpt.1.amx.5, tapes.2.4 gives the following output: START NCP-SIZE, REL.1.2, 01.10.80 01.10.1980 - 16.59 NCPSIZE LIST.NO FRONTEND RC8000.1 TAPELOAD CONSOLE READER CARDREADER , TERM.26 CX.2 PRINTER.6.LPT.1.AMX.5 TAPES.2.4 T_O_T_A_L_ _N_O_._ _O_F_ _B_Y_T_E_S_ 6_8_0_2_0_ MAX STORAGE IN ONE DEVICE CONTROLLER 65000 END NCP-SIZE, REL.1.2, 01.10.80 01.10.80 - 16.59 CPU: 0 END 51 Note that the device controller is too small for this configura- tion. \f F_ E_x_a_m_p_l_e_ _3_: This example shows the configuration of a concentrator: ncpsize, list.yes, concentrat host.2, console reader cardreader, term.8 amx.1 printer.1.lpt.1, rclc.1.bsc.1 Output: START NCP-SIZE, REL.1.2, 01.10.80 01.10.1980 - 17.02 NCPSIZE LIST.YES CONCENTRAT HOST.2 CONSOLE READER CARDREADER , TERM.8 AMX.1 PRINTER.1.LPT.1 RCLC.1.BSC.1 \f F_ PAGE 1 FIXED CONTRIBUTIONS: BASISSYSTEM 9996 CONCENTRATOR 8415 INTERFACES: NUMBER OTHER PARAMETERS HOST 2 32 CONSOLE 1 4013 TERM 8 1992 CARDREADER 1 956 DRIVER 1346 PRINTER 1 LPT.1 732 DRIVER 880 READER 1928 DRIVER 460 RCLC 1 BSC.1 1422 DRIVER 11130 AMX DRIVER 1 2258 BUFFER POOLS RCTI POOL 1932 ANSW.POOL 0 80 ANSW.POOL 1 252 ANSW.POOL 2 596 ANSW.POOL 3 0 MESS.POOL 4 0 MESS.POOL 5 0 T_O_T_A_L_ _N_O_._ _O_F_ _B_Y_T_E_S_ 4_8_4_2_0_ MAX STORAGE IN ONE DEVICE CONTROLLER 65000 END NCP-SIZE, REL.1.2, 01.10.80 01.10.1980 - 17.02 CPU: 0 END 62 \f F_ E_x_a_m_p_l_e_ _4_ The call: ncpsize, list.yes, frontend rc8000.1 host.1, console reader, format.bsc.8.8 gives the following output: START NCP-SIZE, REL.1.2, 01.10.80 01.10.1980 - 10.52 NCPSIZE LIST.YES FRONTEND RC8000.1 HOST.1 CONSOLE READER FORMAT. , BSC.8.8 \f F_ NCP-SIZE 01.10.1980 - 10.51 PAGE 1 FIXED CONTRIBUTIONS: BASISSYSTEM 9996 FRONTEND 8249 INTERFACES: NUMBER OTHER PARAMETERS RC8000 1 1000 3888 DRIVER 972 HOST 1 16 CONSOLE 1 4013 READER 1928 DRIVER 460 FORMAT TERM 16 CU: 2, CONTROLLER: BSC 26046 DRIVER 2904 BUFFER POOLS MESS.POOL 0 48 ANSW.POOL 0 48 MESS.POOL 1 228 ANSW.POOL 1 220 MESS.POOL 2 1144 ANSW.POOL 2 282 MESS.POOL 3 0 ANSW.POOL 3 0 MESS.POOL 4 0 MESS.POOL 5 0 NET POOL 0 RTCI POOL 0 T_O_T_A_L_ _N_O_._ _O_F_ _B_Y_T_E_S_6_0_4_4_2_ MAX STORAGE IN ONE DEVICE CONTROLLER 65000 END NCP-SIZE, REL.1.2, 01.10.80 01.10.1980 - 10.52 CPU: 0 END 57 \f F_ E_x_a_m_p_l_e_ _5_ The call: ncpsize, list.yes, frontend rc8000.1 host.1, console format.smx.8.8.8.8 gives the following output: START NCP-SIZE, REL.1.2, 01.10.80 01.10.1980 - 10.47 NCPSIZE LIST.YES FRONTEND RC8000.1 HOST.1 CONSOLE FORMAT.SMX.8, 8.8.8 \f F_ NCP-SIZE 01.10.1980 - 10.47 PAGE 1 FIXED CONTRIBUTIONS: BASISSYSTEM 9996 FRONTEND 8249 INTERFACES: NUMBER OTHER PARAMETERS RC8000 1 0 3888 DRIVER 972 HOST 1 16 CONSOLE 1 4013 FORMAT TERM 32 CU: 4, CONTROLLER: SMX 32160 DRIVER 3144 BUFFER POOLS MESS.POOL 0 24 ANSW.POOL 0 48 MESS.POOL 1 228 ANSW.POOL 1 220 MESS.POOL 2 1144 ANSW.POOL 2 0 MESS.POOL 3 0 ANSW.POOL 3 0 MESS.POOL 4 0 MESS.POOL 5 0 NET POOL 0 RTCI POOL 0 T_O_T_A_L_ _N_O_._ _O_F_ _B_Y_T_E_S_6_4_1_0_2_ MAX STORAGE IN ONE DEVICE CONTROLLER 65000 END NCP-SIZE, REL.1.2, 01.10.80 01.10.1980 - 10.47 CPU: 0 END 57 \f F_ C_._ _ _ _ _ _ _ _ _S_U_R_V_E_Y_ _O_F_ _P_A_R_A_M_E_T_E_R_ _G_R_O_U_P_S_ C. M_M_ 1 amx .<no _of _dev' P_P_ 0 M_M_ 1 1 cardreader .<no _of _dev' .ms.<no _of _ms' P_P_ 00 M_M_ 1 cassette .<no _of _dev' P_P_ 0 concentrat M_M_ 1 console .<no _of _dev' P_P_ 0 M_M_ 1 cx .<no _of _dev' P_P_ 0 M_M_ 1 diablo .<no _of _dev' P_P_ 0 M_M_ rc36501 floppy. .<no _of _dev' P_P_ rc3751 0 fronted M_M_ 1 hdlc. <no _hdlc'.<no _chan'.<ntqb'.<stqb'.<nrqb'.<srqb' .<inhdlcmax' P_P_ 0 M_M_ 1 host .<no _of _dev' P_P_ 0 M_M_ yes list. P_P_ no listout. <area _name' M_m_m_ <boss _paper _format' paper. P_p_p_ <lines _pr _page'.<dummy _no' M_M_ 1 plotter .<no _of _dev' P_P_ 0 \f DDD4UUU .amx. <no _lpamx M_m_m_ .lpt. <no _lpt' printer.<no _pr' P_p_p_ .cpt. <no _cpt' .sp. <no _sp' UUU1DDD M_M_ 1 punch .<no _of _dev' P_P_ 0 M_M_ 1 1 rc4000 .<no _of _dev' .<testbuffer' P_P_ 0 0 M_M_ 11 rc8000 .<no _of _dev' .<testbuffer' P_P_ 0 0 M_M_ .bsc.<no _bsc'2 rclc.<no _rclc' P_P_ .smx.<no _smx'1 M_M_ 1 rcrouter.<nrout'.<nrub1' .<srub1' P_P_ 0 M_M_ 1 reader .<no _of _dev' P_P_ 0 tapeload M_M_ 1 1 tapes .<no _of _dev'.<segments' .tr7.<no _of _7 _track' P_P_ 00 M_M_ 1 telex .<no _of _dev' P_P_ 0 M_M_ 1 term .<no _of _dev' P_P_ 0 tester tmx. <no _of _lines' \f M_M_ 1 1 1 .smx.<dev' .<dev' .<dev' .<dev' P_P_M_ 0 0 0 format M_M_P_ 1 .bsc.<dev' .<dev' P_P_ 0 M_M_ 8 <dev'::= P_P_ 16 \f IBM 3M MEMOREX VERBATIM (Nashua) RC RC RC701 RC702 Preformatted ODP 3650 3751 (uPD (uPD M_A_X_I_-_d_i_s_k_e_t_t_e_s_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _7_6_5_)_ _ _ _ _7_6_5_)_ Single density Diskette I Markette 1S Single sided IBM3740 (fm) data entry 26, 128 @2_3_0_5_8_3_0_ @740-0 32013060 @FD-34-9000 FD-1(2200) @ @ @ @ (Flippy 26, 128) @740/2-0 3201/729 FF-34-2000 FD-2(2200-22) @ @ @ @ 15, 256 X @ _ _ _ _ _ _ _8_,_ _5_1_2_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _X_ _ _ _ _ _ _ _ _ _ _ _ _ _@_ _ _ _ _ Single density Diskette 2 Markette 2S Dual sided IBM serie 1 (fm) 26, 128 None None FD10-4026 None @ @ 15, 256 @2_7_3_6_7_0_0_ @742-0 @32013106 @FD10-4015 None @ @ _ _ _ _ _ _ _8_,_ _5_1_2_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _N_o_n_e_ _ _ _ _ _ _ _ _N_o_n_e_ _ _ _ _ _ _ _ _ _F_D_1_0_-_4_0_0_8_ _ _ _N_o_n_e_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _X_ _ _ _ _ _ _ _ _ _ _ _ _ _@_@_ _ _ _ Dual density Diskette 2D Markette 2D Dual sided (mfm) 26, 256 @1766872 @743-0-256 @32013103 @DD34-4026 @ 15, 512 @1669044 @743-0-512 None @DD34-4015 FD-2D @@ _ _ _ _ _ _ _8_,_ _1_0_2_4_ _ _ _ _ _1_6_6_9_0_4_5_ _ _ _ _ _ _7_4_3_-_0_-_1_0_2_4_ _ _3_2_0_1_3_1_0_4_ _ _ _ _ _D_D_3_4_-_4_0_0_8_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _X_ _ _ _ _ X: Driver and controller capability. @: System support available, refer to table C.2. @@: Recommended format (Flippy 26, 128): This diskette is a reversible, single sided diskette, refer to appendix E. Table C.1: MAXI-diskette guide. \f IBM 3M MEMOREX VERBATIM (Nashua) RC RC RC701 RC702 MAXI-diskettes ODP 3650 3751 (uPD (uPD _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _7_6_5_)_ _ _ _ _7_6_5_)_ Markette 1D Non-pre- Dual density formatted Single sided None 741-0 32013090 FD34-8000 FD-1D (mfm) 26, 256 None None None None None @ Prefor- matted 15, 512 None None None None None @ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _8_,_ _1_0_2_4_ _ _ _ _N_o_n_e_ _ _ _ _ _ _ _ _ _N_o_n_e_ _ _ _ _ _ _ _ _N_o_n_e_ _ _ _ _ _ _ _ _ _N_o_n_e_ _ _ _ _ _ _ _ _N_o_n_e_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _X_ _ _ _ _ Note: In the original scheme of table C.1 no attention is paid to non-preformatted diskettes. Never the less such diskette-types do exist for dual density, single sided applications as indicated here. Table C.1: MAXI-diskette guide cont. \f Preformatted IBM RC3600 RC8000 RC3600 BASIC/ ID COMAL 3740 MUS APP DOMUS COMAL COMAL 80 M_A_X_I_-_d_i_s_k_e_t_t_e_s_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _G_E_N_+_A_P_P_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _(_R_C_3_6_0_0_/_7_0_0_0_)_ _ _R_C_7_0_1_/_7_0_2_ _ _ _ _(_R_C_7_0_2_)_ Single density Single sided 26, 128 RC3650/3751 RC3650/3751 RC3650/3751 RC3650/3751 uPD765 uPD765 15, 256 uPD765 8, 512 uPD765 IBM, 3M, MEMOREX, V_E_R_B_A_T_I_M_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ (Flippy 26, 128) 3M RC3650/3751 RC3650/3751 RC3650/3751 RC3650/3751 uPD765 uPD765 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Single density Dual sided 26, 128 RC3751 1) uPD765 15, 256 RC3751 uPD765 8, 512 uPD765 IBM, 3M, MEMOREX, V_E_R_B_A_T_I_M_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Dual density Dual sided 26, 128 uPD765 15, 512 uPD765 8, 1024 IBM, 3M, MEMOREX, V_E_R_B_A_T_I_M_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Notes are given on the following page. Table C.2: System application scheme. \f IBM RC3600 RC8000 RC3600 BASIC/ 3740 MUS Appl. DOMUS COMAL GEN, S, MUSIL/ Title Process- _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _E_D_I_T_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ block name FD205, FD304, - X X X FL003, FL003 + FL100 *FD200 FD0 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ *FD300 FD1 MT-emulator: FD205 FD0 *FD200, FD300 (RC3650) X X X XFD304FD1 *FD205+KIT(RC3650) X X X FD205+FM002(RC3650) X X FL003 FD0 FL003+FM002(RC3751) X X X FL100 FD1 FL003+FM101(RC3751) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _FM002 FD5 FM101FD6 FL003 X *KIT KIT _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ * Older versions, system support is no longer available. FD200/FD300: MT-e.driver for RC3650-systems, device 0/1 FD205/FD304: General driver for RC3650-systems, device 0/1. Deleted sector support FL003 : General driver for RC3751-systems, device 0, unit 0-3. Deleted sector support FL100 : General driver for RC3751-systems, device 1, unit 0-3. Deleted sector support FM002/KIT : MT-e.predriver for RC3650 systems, device 0 FM002/FM101: MT-e.predriver for RC3751-systems, device 0, unit 0/1 Table D.2: Driver application scheme. \f IBM 3M MEMOREX VERBATIM (Nashua) RC RC RC701 RC702 RC-formatted ODP 3650 3751 (uPD (uPD _M_I_N_I_-_d_i_s_k_e_t_t_e_s_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _7_6_5_)_ _ _ _ _7_6_5_)_ Single density Single sided None 744-0 32013401 MD 525-01 (fm) 26, 128 X 9, 256 X-_ _ _ _ _ _ _ _5_,_ _5_1_2_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _X_ _ _ _ _ Single density None None @32013421 @MD 550-01 @OPD-5-2D-S00 Single sided (fm) 16, 128 @ 9, 256 @@ _ _ _ _ _ _ _ _5_,_ _5_1_2_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _@_ _ _ _ _ Dual density None None 32013421 @MD 550-01 OPD-5-2D-S00 Single sided (mfm) 16, 256 @ 9, 512 @@ _ _ _ _ _ _ _ _5_,_ _1_0_2_4_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _X_ _ _ _ _ X: Driver and controller capability. @: System support available, refer to table C.2 @@: Recommended format. Table G.1: MINI-diskettes guide. \f IDCOMAL RC-formatted COMAL 80 M_I_N_I_-_d_i_s_k_e_t_t_e_s_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _R_C_7_0_1_/_7_0_2_ _ _ _ _(_R_C_7_0_2_)_ Single density Single sided 16, 128 9, 256 5, 512 3_M_,_ _M_E_M_O_R_E_X_,_ _V_E_R_B_A_T_I_M_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Single density Dual sided 16, 128 uPD765 uPD765 9, 256 uPD765 5, 512 uPD765 M_E_M_O_R_E_X_,_ _V_E_R_B_A_T_I_M_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Dual density Dual sided 16, 256 uPD765 9, 512 uPD765 5, 1024 M_E_M_O_R_E_X_,_ _V_E_R_B_A_T_I_M_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Table G.2: System application scheme. \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. DISKETTES - FORMATS OF ................................ 2 2.1 Formats Used in RC3650/3751-Systems .............. 3 2.2 Formats Used in RC701/702-Systems ................ 4 3. RC3650/3751-SYSTEMS ................................... 5 3.1 The MT-emulator Format ........................... 5 3.1.1 MUS-System Application and Generation ..... 8 3.1.2 RC8000-System Application and Generation .. 9 3.2 The Catalog Diskette ............................. 10 3.2.1 DOMUS System Application .................. 10 3.2.2 BASIC/COMAL-System Application and Generation ................................ 10 4. RC701/702-SYSTEMS ..................................... 12 A_P_P_E_N_D_I_C_E_S_: A. REFERENCES ............................................ 13 B. PHYSICAL TRACKIMAGE (MAXI-DISKETTES) .................. 16 C. MAXI-DISKETTE GUIDE ................................... 18 D. RC3650/3751 SYSTEM DRIVERS ............................ 23 E. DISKETTE IDENTIFICATION ............................... 25 E.1 Diskette Types ................................... 25 F. PHYSICAL TRACKIMAGE (MINI-DISKETTES) .................. 27 G. MINI-DISKETTE GUIDE ................................... 31 H. FM/MFM-DATA REPRESENTATION ............................ 34 \f ii \f F_ 1_._ _ _ _ _ _ _ _ _I_N_T_R_O_D_U_C_T_I_O_N_ 1. In the past a great number of diskette applications have been introduced in RC-systems (the RC3600- and the RC8000-system), and in the future the development of the RC700/RC850 - micro-compu- ters calls for new system-applications. For this reason a short description is given of the various standards and diskettes available on the market compared to the demands made by RC-equipment and -systems. This paper should inform the system programmers as well as the system consultants about the overall structure in this area. Besides this goal great efforts have been carried out to present the material in a schematical form to improve the readability for other groups. This is the reason why the different tables and figures are grouped in appendices. \f F_ 2_._ _ _ _ _ _ _ _ _D_I_S_K_E_T_T_E_S_ _-_ _F_O_R_M_A_T_S_ _O_F_ 2. The overall accepted standard for MAXI-diskettes (8"-diskettes) talking about physical dataformats is given according to ECMA- standards and known as the physical IBM-format, see ref. 1 and 2. This format involves the use of physical sector, head, and cylin- der identifiers and specifies gab-layout-areas before, after, and between the data- and address marks etc. as indicated in appendix B. The standard applies to softsectored MAXI-diskettes, and we will not deal with the hardsectored diskettes here (one physical hole per sector), as this field is not covered by the RC-equip- ment at all. The international standards define three data formats for use with the single density application (FM encoding of data) as shown on table form in appendix B for both single and dual sided diskettes. Traditionally the 128 bytes per sector diskette is the most widely used and forms the base for the RC diskette-systems. A detailed description of the various systems together with a positive list for those diskettes available on the market is given in appendix C. The dual density application - in the following known as the MFM encoding of data - is shown schematically too, but not commented upon, as the application is not supported by the RC3650/3751- controller system. The MINI-diskette (5 1/4"-diskettes) used for RC702-systems are commented upon in appendix F. Details concerning the standard formatting of the MINI-diskette is not yet fully agreed upon because of which the diskettes on today>s market are non-prefor- matted ones. A preformatting program is included in RC702-system software, and the resulting physical layout of the diskette is chosen according to the drive-manufacturer>s specifications as schematically shown. \f 2_._1_ _ _ _ _ _ _ _F_o_r_m_a_t_s_ _U_s_e_d_ _i_n_ _R_C_3_6_5_0_/_3_7_5_1_-_S_y_s_t_e_m_s_ 2.1 The RC3650-system does not include formatting programs. The RC3751-system offers to the user the possibility of applying any standard single density format onto a single or double sided MAXI-diskette. A number of formatting programs are available running different systems, but a common generalized all purpose program is given in ref. 8. The formatting program is capable of introducing a screwed format too talking about the physical sectors. In this case the sector identifiers are not written in a sequential manner as was the case with the standard format. In a screwed format consecutive ID-fields are given non-consecutive sector-address, please refer to fig. B.1. This format is called >hard-screwed>. In this way the system-applications running on the diskette may be speeded up being aware of the fact, that the gap-space between adjacent sectors is too small to allow for continously accessing sector after sector without loosing a whole revolution of the diskette in between. For multisector-transfers, the number of sectors asked for in one transport are supplied at max. data- transfer-rate on non-screwed diskettes. It should be mentioned here that a third form of access strategy is used for the MT-emulator application, the >soft-screwed>-ap- plication, which has nothing at all to do with the physical lay- out of the diskette. In softscrewed applications the logical block number input to the diskette driver is screwed according to the description given in chapter 3 using random access strategy. Please notice that a >hard-screwed>-strategy allows you to handle non-screwed diskettes too but at a lower data-transfer rate. This is not the case with >soft-screwed>-applications. \f 2_._2_ _ _ _ _ _ _ _F_o_r_m_a_t_s_ _U_s_e_d_ _i_n_ _R_C_7_0_1_/_7_0_2_-_S_y_s_t_e_m_s_ 2.2 The RC701-system does not include formatting programs. In the RC702-systems a formatting program will be available to the user, as the MINI- diskettes are delivered non-preformatted. This program may be used for the MAXI-diskette too to select a suitable recordlength of 512 bytes. At present it is not possible to give any reliable information about which kind of diskette to use for the MINI-drive apart from the fact that a dual sided, dual density diskette should be used. The formatting program is capable of introducing a screwed format too talking about the physical sectors. In this case the sector identifiers are not written in a sequential manner as was the case with the standard format. In a screwed format consecutive ID-fields are given non-consecutive sector-address, please refer to fig. B.1. This format is called >hard-screwed>. In this way the system-applications running on the diskette may be speeded up being aware of the fact, that the gap-space between adjacent sectors is too small to allow for continously accessing sector after sector without loosing a whole revolution of the diskette in between. For multisector-transfers, the number of sectors asked for in one transport are supplied at max. data- transfer-rate on non-screwed diskettes. At present no >soft-screwed>-application is planned. Please notice that a >hard-screwed>-strategy allows you to handle non-screwed diskettes too but at a lower data-transfer rate. This is not the case with >soft-screwed>-applications. \f F_ 3_._ _ _ _ _ _ _ _ _R_C_3_6_5_0_/_3_7_5_1_-_S_Y_S_T_E_M_S_ 3. The RC3751 is a (new) flexible disc controller capable of dealing with any single density diskette available single or dual sided. The controller deals with the standard IBM-format, ref. 1 and 2 for recognizing data or address marks and cylinder side or sector-identifiers and so on. The controller is capable of formatting a diskette according to this format description as shown in appendix B. The user interface to RC3751 is described in the >Driver Reference Manual> for the FL-driver, ref. 4. The FL-driver communicates by means of a logical blocknumber (sectornumber) as was the case with the old RC3650 system driver FD. The FD-driver is only capable of dealing with the single density, single sided 128 bytes/sector diskette, whereas the FL-driver automatically recognizes the actual diskette format in use. Traditionally the diskette was looked upon as a new >magtape media> and because of that a so-called magtape-emulator-format was introduced for the RC3650 via the FD200-driver, see fig. 1. The MT-emulator format is at present defined using predriver- processes for FD/FL and in this combination constitutes the MUS-system diskette format. The FL-driver then serves as a general purpose diskette driver and constitutes the system driver for the RC3600 CAT file handler and the BASIC/COMAL-system, please refer to appendices C and D for further details. 3_._1_ _ _ _ _ _ _ _T_h_e_ _M_T_-_e_m_u_l_a_t_o_r_ _F_o_r_m_a_t_ 3.1 The emulator format is described and commented upon in fig. 1 and fig. 2 following. \f Figure 1a: An RC3751 MT-e. diskette. Figure 1b: An RC3650 MT-e. diskette. \f File No 1 +26 26 26 2 -26 131 131 3 -26 154 154 4 -26 300 300 5 -26 304 304 6 -26 -304 360 7 -26 -304 372 8 -26 -304 400 9 -26 -304 602 61 -26 -304 1730 62 -26 -304 1820 63 -26 -304 1930 -26 -304 2002 a b c File index table. a) Initialized file table (no files written). b) Partly used disc. Files 1 to 4 are written. c) Full disc. All files are written. Figure 2: Format of indexblocks. \f The file index table entries are logically increasing block-num- bers counting from zero with blocksize = physical sectorlength. The emulator strategy involves a mapping of logical blocks into a screwed blocknumber transferred to the actual system-driver as follows: B_l_o_c_k_m_a_p_p_i_n_g_: Blocknumber, input to the emulator process: BU. Filenumber, input to the emulator process: FU. Internal emulator blocknumber: BI:=Index(FU)+(BU-1) Internal screwed blocknumber: B B:=BI/cylsize * cylsize + sector; sector:= (BI*n +1) modulus cylsize. If sector evaluates to zero, then sector:= cylsize. The parameter n takes on different values according to the actual diskette format used as specified below for both single and dual sided diskette: 128/26 : n=7 256/15 : n=4 512/8 : n=3 ; n = screwing factor The internal screwed blocknumber B is used for communication with the systemdriver one block at a time with block length equal to physical sector length. The user blocksize (bytecount) may call for multiple sector transfer in which case the emulator processes one sector a time. 3_._1_._1_ _ _ _ _ _M_U_S_-_S_y_s_t_e_m_ _A_p_p_l_i_c_a_t_i_o_n_ _a_n_d_ _G_e_n_e_r_a_t_i_o_n_ 3.1.1 The MT-emulator format is used for system generation purposes using the flexible disc as installation media. The MT-emulator format is used too for system applications using the MUS-operating system whereas the DOMUS Operation System uses the normal backing storage disc format, please refer to section 3.2. \f The generation program is capable of handling all single density, single sided diskette types (128,256, 512 bytes/sector). For system purposes (bootstrap load, system load) the available number of different diskette formats reduces to: The single sided, single density, 128 bytes per sector diskette; The emulator-catalog is automatically initialized before use and regardless of the more sophisticated RC3751 system possibilities, the RC3650/3751 system and application programs are restricted for use with this very diskette. The diskette is automatically given a softscrewed format, in that the FM-preprocess is used for generation, see section 3.1. If hardscrewed diskettes are used (which is not recommended as the softscrewed format ensures maximum system throughout), cylinder no zero must be left untouched. This cylinder must be readable to older prom-autoload-programs. 3_._1_._2_ _ _ _ _ _R_C_8_0_0_0_-_S_y_s_t_e_m_ _A_p_p_l_i_c_a_t_i_o_n_ _a_n_d_ _G_e_n_e_r_a_t_i_o_n_ 3.1.2 FM: The RC8000 installation procedure is based on a number of installation-diskettes readable to the MT-emulator process FM. The i_n_s_t_a_l_l_a_t_i_o_n_-_d_i_s_k_e_t_t_e_s_ are generated using the RC3600 GEN-program. The available diskette formats are restricted to those accessible for the MUS-system i.e. the single sided, single density, 128 bytes per sector disket- te. APFX: The RC8000 utilities FDload, FDsave, FDinit, and FDsurvey are based on the APFX-process capable of handling all dis- kette formats for s_i_n_g_l_e_ _d_e_n_s_i_t_y_ _d_i_s_k_e_t_t_e_s_ including hard- screwed diskettes. The FDinit procedure initializes the diskettes according to the IBM-soft-format used for Cata- log access. The APFX-process does not support softscrewed- diskettes. \f The APFX-process makes use of a local buffer to speed up the non-hardscrewed-diskette access in minimizing the num- ber of access to the FL-driver for a given transfer sequence of read/write-operations. For further information please refer to ref. 10, 11, 12, and 13. Figure 3: Diskette access in an RC8000-system. 3_._2_ _ _ _ _ _ _ _T_h_e_ _C_a_t_a_l_o_g_ _D_i_s_k_e_t_t_e_ 3.2 In this field the diskette drivers FD/FL are used directly as system drivers in random mode with no support of deleted sectors. Before use the catalog must be initialized as usual. The applica- tion is non-screwed. 3_._2_._1_ _ _ _ _ _D_O_M_U_S_ _S_y_s_t_e_m_ _A_p_p_l_i_c_a_t_i_o_n_ 3.2.1 The normal RC3600 DOMUS Operating and Utility System is available with the RC3751-system as the catalog device. The system supports the non-screwed single density, double sided 256 bytes per sector diskette with the FL-driver running up to four units. Single density, double sided 128/512 bytes per sector diskettes may be\f generated too, but the restriction to the 256 bytes per sector diskette is made because of the bootstrap loader. The FLOPPY-COPY program could be used for generating a system diskette using an already existing system diskette. The GEN-program >GENOD> may be used too, please refer to ref. 14 a + b. 3_._2_._2_ _ _ _ _ _B_A_S_I_C_/_C_O_M_A_L_-_S_y_s_t_e_m_ _A_p_p_l_i_c_a_t_i_o_n_ _a_n_d_ _G_e_n_e_r_a_t_i_o_n_3.2.2 The BASIC/COMAL-system may be delivered with an RC3650/3751 flex- ible disc system as the catalog device. The system supports the single density single sided 128 bytes per sector diskette. With the RC3751-system the single density, double sided 128 bytes per sector diskette is supported too, and any double sided diskette should be reformatted according hereto, when initialized as a catalog diskette. A special formatting program is available for this purpose introducing a general non-screwed format. \f F_ 4_._ _ _ _ _ _ _ _ _R_C_7_0_1_/_7_0_2_-_S_Y_S_T_E_M_S_ 4. In the future the RC701/702-systems will contribute with a number of diskette-applications for different diskette-types. The diskette-controller (the uPD765) is capable of handling all kinds of diskettes ranging from the single sided, single density application to the dual density, dual sided application for both MAXI- and MINI-diskettes. At present the existing system diskette driver for the RC701-sys- tem is restricted to run the MAXI-diskette only. The diskette must be preformatted as single sided (possibly reversible - the flippy-diskette) in the (26, 128)-format, please refer to appendix B. The new RC702-system will be introduced with a more generalized catalog system, and the diskette system driver will therefore be capable of handling all diskette-formats available today. To ensure maximum system throughput, the RC702-system will however be recommended for use with a dual density, dual sided MAXI- or MINI-diskette (depending on the actual drive used) with a record- length of 512 bytes or lower. \f F_ A_._ _ _ _ _ _ _ _ _R_E_F_E_R_E_N_C_E_S_ A. 1. The IBM Diskette, General Information Manual. IBM document GA21-9182-2 2. IBM Two-sided Diskette Original Equipment, Manufactures Information. IBM document GA21-9257-1 3. RCSL No 44-RT1664: FDC705 Flexible Disc Controller, Programmer>s Reference Manual. 4. RCSL No 43-GL8537: RC3751 Floppy Disc Driver, Rev. 2, which must be updated according to: KDH 79.04.01, Bulletin No 17. 5. RCSL No 43-GL7420: Flexible Disc MT-Emulator, Reference Manual, which must be updated according to: EJ 79.02.16, Bulletin No 16. KDH 79.02.21, Bulletin No 16. 6. RCSL No 43-GL7778: FDBOT, Flexible Disc Bootstrap Loader. 7. RCSL No 43-GL7894: Diskette Formatting Program, User>s Guide. 8. RCSL No 43-GL7940: Diskette Formatting System RC8000/RC3600, Operator>s Guide. 9. RCSL No 43-GL9588: FLOCO, User>s Guide. 10. RCSL No 31-D517: RC8000 BASIC Software Installation Using Diskettes. \f 11. RCSL No 31-D543: Flexible Disc Process. 12. RCSL No 31-D515: FDSAVE, FDLOAD, FDINIT, FDSURVEY, Utility Programs for Flexible Disc Handling, which must be updated according to: RCSL No 31-D545. 13. RCSL No 31-D459: Flexible Disc Handling within the ALGOL System, User>s Manual, which must be updated according to: RCSL No 31-D531. 14a. RCSL No 43-GL7805: RC3600 System Generation with DOMUS GEN, User>s Guide. 14b. RCSL No 43-GL10401: RC3600 DOMUS System Generation on Flexible Disc. 15. Standard ECMA-54. 16. Standard ECMA-58. 17. Standard ECMA-59. N_o_t_e_ _1_: Ref. 15 corresponds to ref. 1 and describes the physical diskette layout - the so-called physical IBM-format for single sided, single density 128 bytes per sector diskettes (IBM 3740). In additional ref. 1 describes single sided, single density diskettes with variable sectorlength. N_o_t_e_ _2_: Ref. 16 corresponds to ref. 1 and describes the logical diskette layout on file level according to IBM 3740. \f N_o_t_e_ _3_: Ref. 17 corresponds to ref. 15 concerning dual sided, single density 128 bytes per sector diskettes. N_o_t_e_ _4_: The overall agreed upon physical formatting of dual sided, single/dual density MAXI-diskettes with variable sectorlength is given in ref. 2. \f F_ B_._ _ _ _ _ _ _ _ _P_H_Y_S_I_C_A_L_ _T_R_A_C_K_I_M_A_G_E_ _(_M_A_X_I_-_D_I_S_K_E_T_T_E_S_)_B. Figure B.1: MAXI-diskette data structure (RC3751). \f F_ All table entries display actual cylindersize and sectorlength given in (sectors per cylinder) and (bytes per sector). S_i_n_g_l_e_ _d_e_n_s_i_t_y_ _f_o_r_m_a_t_t_i_n_g_: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _S_i_n_g_l_e_-_s_i_d_e_d_ _d_i_s_k_e_t_t_e_s_ _ _ _ _ _ _ _ _D_o_u_b_l_e_-_s_i_d_e_d_ _d_i_s_k_e_t_t_e_s_ _ _ _ _ _ _ _ _ _ _ Cyl. 1-76 (Cyl. 0) Cyl. 1-76 (Cyl. 0) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ * 26, 128 (26, 128) 2 x 26, 128 (2 x 26, 128) 15, 256 (26, 128) 2 x 15, 256 (2 x 26, 128) 8, 512 (26, 128) 2 x 8, 512 (2 x 26, 128) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ D_u_a_l_ _d_e_n_s_i_t_y_ _f_o_r_m_a_t_t_i_n_g_: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _S_i_n_g_l_e_-_s_i_d_e_d_ _d_i_s_k_e_t_t_e_s_ _ _ _ _ _ _ _ _D_o_u_b_l_e_-_s_i_d_e_d_ _d_i_s_k_e_t_t_e_s_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Cyl. 1-76 (Cyl. 0, Cyl. 1-76 (Cyl. 0) s. dens.) (head 0 head 1) (s. dens. d. dens) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 26, 256 (26, 128) * 2 x 26, 256 (26, 128 26, 256) 15, 512 (26, 128) 2 x 15, 512 (26, 128 26, 256) 8, 1024 (26, 128) 2 x 8, 1024 (26, 128 26, 256) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ * The IBM system standard diskette. s./d. dens: single/dual density Table B.2: MAXI-diskette data formats. \f F_ C_._ _ _ _ _ _ _ _ _M_A_X_I_-_D_I_S_K_E_T_T_E_ _G_U_I_D_E_ C. In this section a detailed description is given of the various diskette formats available according to the physical IBM-standard as compared to the identification used by the distributors. All listed materials apply to preformatted diskettes. In table C.1 those diskette types used in system support today are marked out. As is seen from the scheme some constraints are made upon formats and vendors too, according to some problems concerning diskette reliability and controller tolerances. In the following table C.2 the actual RC79 System application is listed according to the diskette format used. As indicated here the system complexity is reduced in dealing with the same disket- te for different applications. The standard IBM-application dis- kette is followed in single as well as dual sided systems. Table C.2 should inform about the existing application-possibili- ties. In this field it is very important to realize the fact, that regardless of the existence of some manufacturers diskette preformatted the right way, you may often prefer to buy a reli- able non-matching diskette thereafter running a formatting pro- gram yourself. E.g. this the case with the BASIC/COMAL system application on RC3751 concerning the dual sided (128, 26)- diskette. \f F_ \f F_ \f F_ \f F_ 1) Please notice that this diskette format is not covered amongst those diskettes recommended for RC-systems. The formatting program must be used on a single density, dual sided diskette, e.g. the >3M, 742-0>. Any user of RC3600/7000 BASIC/COMAL systems will have this program known as "Logical Disc Format- ting Program". \f F_ D_._ _ _ _ _ _ _ _ _R_C_3_6_5_0_/_3_7_5_1_ _S_Y_S_T_E_M_ _D_R_I_V_E_R_S_ D. In this chapter a review of old and new system drives concerning the MT-emulator format as well as the general diskette appli- cation is given. This comparison should be used together with the detailed diskette/system survey of appendix C to form a deeper understanding of the system support given. If a strictly sequential access method is used by the actual dis- kette application, the user should pay attention to the so-called >deleted sector>-feature. As was pointed out in appendix B, the standard diskette format defines a deleted data field address mark. Usage of this identification when writing data onto the diskette causes the sector to be skipped in a following read-skip transfer. (The sector is regarded as a bad sector). This feature is supported by the FD/FL-drivers but not often used. The application may use the >write with read check>-mode to create a bad sector, if the read check fails after writing a sector on to the diskette. The MUS-system then offers automatic error-recovery in giving an >erase>-message which is used to redefine the actual sector as a deleted sector then followed by the earlier aborted write transfer. Actually the MT-emulator does not use this error recovery feature and the catalog systems application runs in random access mode. Consequently any preformatted diskette with deleted sectors on it must not be used for any RC-system application. \f F_ \f F_ E_._ _ _ _ _ _ _ _ _D_I_S_K_E_T_T_E_ _I_D_E_N_T_I_F_I_C_A_T_I_O_N_ E. At present 3 types of MAXI-diskettes are generally available for use with the RC3751 Flexible Disc Drive. The RC3650 Flexible Disc Drive is capable of handling diskette types 1 and 3 defined below. The MINI-diskettes, the single sided (type 1) and the dual sided diskette (type 2), do not differ in physical layout of the index holes. E_._1_ _ _ _ _ _ _ _D_i_s_k_e_t_t_e_ _T_y_p_e_s_ 1. The single-sided diskette which has 1 recording surface con- stituting 1 logical disc storage area. It is identified by a small hole in its cover positioned approximately 5 degrees right when holding the diskette vertically. 2. The dual head, double-sided diskette which has 2 recording surfaces, one on each side, constituting 1 logical disc storage area with twice the capacity of the single-sided diskette. It is identified by a small hole in its cover positioned approximately 1 o>clock when holding the diskette vertically. 3. The single head, double-sided diskette which has got 2 recording surfaces, one on each side, constituting 2 logical disc storage areas. The diskette has to be flipped over to use the second recording surface. It is identified by 2 small holes in its cover which are at positions of approximately 15 degrees left and 15 degrees right when holding the diskette vertically. The manufacturers> labels on the diskettes may then identify the actual kind of diskette used according to the scheme given in appendix C. The user>s label may be used for system/application notes. In fig. E.1 the diskette is graphically described. \f F_ Figure E.1: MAXI-diskette identification. \f F_ F_._ _ _ _ _ _ _ _ _P_H_Y_S_I_C_A_L_ _T_R_A_C_K_I_M_A_G_E_ _(_M_I_N_I_-_D_I_S_K_E_T_T_E_S_) F. FM: MFM: The formats are identical to the MAXI-IBM format with the number of bytes of G1 and G4 modified and the index mark omitted. Notes on the following page. Table F.1: MINI-diskette data structure (YD-274, YE data). \f Notes: 1 ID Address Mark A1.A1.A1.FE 2 Cylinder No. (Track No.) Head No., Record No. (Sector No.), Record Length M_M_m_ 16 12 5 P_P_p_ 3 Generated by CRC Generator (G(x) = X + X + X + 1) 4 A1.A1.A1.FB for Data Field or A1.A1.A1.F8 for Deleted Data Field. 5 User Data . Missing Clock Pattern 1 0 1 0 0 0 0 1 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ D D C C D Missing Clock 6 Formatting parameter for UPD765 (GPL 2 ), includes >WG-OFF>. \f F_ All table entries display actual cylindersize and sectorlength given in (sectors per cylinder) and (bytes per sector). S_i_n_g_l_e_ _d_e_n_s_i_t_y_ _f_o_r_m_a_t_t_i_n_g_: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _S_i_n_g_l_e_-_s_i_d_e_d_ _d_i_s_k_e_t_t_e_s_ _ _ _ _ _ _ _ _D_o_u_b_l_e_-_s_i_d_e_d_ _d_i_s_k_e_t_t_e_s_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Cyl. 1-35 (Cyl. 0) Cyl. 1-35 (Cyl. 0) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ * 16, 128 (16, 128) 2 x 16, 128 (2 x 16, 128) 9, 256 (16, 128) 2 x 9, 256 (2 x 16, 128) 5, 512 (16, 128) 2 x 5, 512 (2 x 16, 128) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ D_u_a_l_ _d_e_n_s_i_t_y_ _f_o_r_m_a_t_t_i_n_g_: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _S_i_n_g_l_e_-_s_i_d_e_d_ _d_i_s_k_e_t_t_e_s_ _ _ _ _ _ _ _ _D_o_u_b_l_e_-_s_i_d_e_d_ _d_i_s_k_e_t_t_e_s_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Cyl. 1-35 (Cyl. 0) Cyl. 1-35 (Cyl. 0) s. dens. (head 0 head 1) (s. dens. d. dens) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 16, 256 (16, 128) * 2 x 16, 256 (16, 128 16, 256) 9, 512 (26, 128) 2 x 9, 512 (16, 128 16, 256) 5, 1024 (26, 128) 2 x 5, 1024 (16, 128 16, 256) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ The MINI-diskette formats are not yet agreed upon as standard formats, because of which preformatting is done by the distributor. Table F.1: MINI-diskette data formats. \f The available number of cylinders on the MINI-diskette differ according to the actual drive-manufacturer chosen. The standard drive includes 36 or 40 cylinders with the same track-density, that is: the 40-cyl-versions are in fact the 36-cyl-versions augmented with 4 cylinders. Available too is the so-called quadrouble-density diskette drive, which is designed with a doubled-up track-density. The capacity is then increased from 36 to 70 cylinders per diskette, and the distance between adjacent cylinders is reduced with a factor 2. The quadrouble-density diskette for use with such drives differ from the normal one used in the quality of the surface coating which too is tested more critically. \f G_._ _ _ _ _ _ _ _ _M_I_N_I_-_D_I_S_K_E_T_T_E_ _G_U_I_D_E_ G. In this section a detailed description is given of the various diskette formats available according to the physical IBM-MAXI- standard converted to MINI-diskettes. In table G.1 those diskette types used in system support today are marked out. As is seen from the scheme some constraints are made upon formats and vendors too, according to some problems concerning diskette reliability and controller tolerances. In the following table G.2 the actual RC79 System application is listed according to the diskette format used. As indicated here the system complexity is reduced in dealing with the same diskette for different applications. Table G.2 should inform about the existing application-possi- bilities. In this field it is very important to realize the fact, that the diskettes available today are all non-preformatted ones. \f \f \f F_ H_._ _ _ _ _ _ _ _ _F_M_/_M_F_M_-_D_A_T_A_ _R_E_P_R_E_S_E_N_T_A_T_I_O_N_H. FM, MFM and MuU2dDFM CODE COMPARISONS FM = Single density encoding. MFM = Standard dual density encoding. MuU2dDFM = Available dual density encoding. Please notice that the MuU2dDFM-format is not supported by RC-equipment. Figure H.1: Data encoding. \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. PROCEDURES ............................................ 2 3. FORMATS ............................................... 3 3.1 Header Message ................................... 4 3.1.1 Driver Message ............................ 4 3.1.2 Answer .................................... 6 3.2 Data Buffer ...................................... 7 4. DRIVER MANUALS ........................................ 10 \f ii \f F_1_._ _ _ _ _ _ _ _ _I_N_T_R_O_D_U_C_T_I_O_N_ 1. This note deals with the procedures and formats used for communi- cation between a driver and one or more process incarnations in a PASCAL80 system which use(s) the driver to provide i/o functions. The standard described in this note applies to drivers written in PASCAL80 as described in the P_A_S_C_A_L_8_0_ _R_e_p_o_r_t_ (RCSL No 52-AA964) as it stands at the present date. Future revisions of the PASCAL80 language will most likely entail revisions of the driver conventions as well. The conventions described here apply not only when the driver process and the process(es) using the driver are programmed com- pletely in PASCAL80, but also when one or more of the processes are programmed in machine code, as long as they communicate by using the PASCAL80 message exchange mechanisms (signal, wait, etc.). By definition a PASCAL80 driver is (an incarnation of) a process containing a CHANNEL statement. This definition indicates that a driver performs i/o functions, but it does not characterise the amount of processing, such as e.g. error correction or data structuring, which is performed. The functions related to i/o may therefore in different cases be distributed differently between the driver and the process incarnation(s) which make use of the driver. In order that the present conventions should not intro- duce undesirable restrictions on this functional distribution they have been kept fairly minimal. Procedures and formats which need not be adhered to in all cases, but which should be followed whenever they are appropriate, are included as recommendations. The note also contains some hints on the structure and contents of driver manuals. \f F_2_._ _ _ _ _ _ _ _ _P_R_O_C_E_D_U_R_E_S_ 2. By convention each driver incarnation has a unique request sema- phore. A request to the driver is made in the form of a message, called a d_r_i_v_e_r_ _m_e_s_s_a_g_e_, signalled to this semaphore. When a driver has processed a request the message is returned (i.e. signalled to its answer semaphore). When returned, the message is referred to as an a_n_s_w_e_r_. If a driver does not process and answer requests in the same order as the driver messages are received this should be explained in the driver manual. When a driver maintains internal request (buffer) queues it shall in general be possible to recall the pending requests by means of a "regret" request. \f F_3_._ _ _ _ _ _ _ _ _F_O_R_M_A_T_S_ 3. In the following we use the term i/o-data to mean data which is actually transferred to or from an input or output device (notice that a communication line is also considered an i/o device). The term "data buffer" is used with the same meaning as "message data" in the PASCAL80 Report. The "user" bytes u1, u2, and u3 of the header of a driver mes- sage/answer are used to specify the function requested from a driver and after processing of a request to provide result information. When u1-u3 are not sufficient to hold the request/- result information, part of this information may also be placed in the data buffer. I/o data, including address information to indicate the precise amount of data, are held in the data buffer of the driver buffer/answer. The general format is illustrated below: d_r_i_v_e_r_ _m_e_s_s_a_g_e_ a_n_s_w_e_r_ message header message header u1 function unchanged u2 no standard use result u3 device address or data byte data byte if needed if needed data buffer with output data data buffer with input data byte 0-1 first unchanged byte 2-3 last unchanged byte 4-5 (lastw) next (from function or address information result/status information) (byte 6 not held in u1-u3 not held in u1-u3) ) remaining bytes output data input data \f 3_._1_ _ _ _ _ _ _ _H_e_a_d_e_r_ _M_e_s_s_a_g_e_ 3.1 The "user" bytes u1-u4 are used in driver messages and answers as described in this section. 3_._1_._1_ _ _ _ _ _D_r_i_v_e_r_ _M_e_s_s_a_g_e_ 3.1.1 u_1_:_ _f_u_n_c_t_i_o_n_ The byte u1 is used to specify the f_u_n_c_t_i_o_n_ to be performed by the driver as shown below (bit 7 is most significant, bit 0 least significant), i.e. u1=basic function+4*function modification. bit 7 2 1 0 function modification basic function The basic function is coded as follows: v_a_l_u_e_ m_e_a_n_i_n_g_ 0 control operation, i.e. any operation that does not involve an actual transfer of data, 1 read (receive) data operation, 2 write (transmit) data operation, 3 write and read data operation, i.e. write followed by read using the same buffer. There is no standard for the coding of the f_u_n_c_t_i_o_n_ _m_o_d_i_f_i_c_a_t_i_o_n_. When necessary, this field is used in a driver dependent way to distinguish between different function requests with the same basic function code. The following coding is recommended (bf=basic function, fm=function modification): bf=0, fm=0: get device status, bf=0, fm=1: initiate/connect/open device, bf=0, fm=2: terminate/disconnect/close device, bf=0, fm=3: regret request, bf=0, fm=5: pause (release channel to test program), bf<'0,fm=0: block transfer of binary data to/from data buffer. \f u_2_:_ _n_o_t_ _u_s_e_d_ Normally u2 is not used to hold information t_o_ a driver. u_3_:_ _d_e_v_i_c_e_ _a_d_d_r_e_s_s_ _o_r_ _s_i_n_g_l_e_ _b_y_t_e_ _i_/_o_ _d_a_t_a_ There are two alternative uses of the u3 byte. When a driver services more than one device, u3 is used to hold device address information. When data is transferred in single byte mode, i.e. a driver request causes the transfer of only one byte, u3 is used to hold this byte, so that a header message (message without data buffer) may be used. u_4_:_ _n_o_t_ _u_s_e_d_ The byte u4 must not be used in driver messages. N_o_t_e_s_ These conventions do not rule out the use of u3 for other purposes than described, nor the use of u2, in a driver message. However, such use is not standardised. When the bytes u1-u3 are not sufficient to hold a driver request, additional information may be placed in the data buffer. In the case of a data transfer request, i.e. when the data message is used for i/o data, such information should start in byte 6, otherwise there are no restrictions. Using the PASCAL80 LOCK statement such information can freely be given a suitable type-definition (as opposed to u1-u3 which are restricted to the type 0..255 by the language definition). \f 3_._1_._2_ _ _ _ _ _A_n_s_w_e_r_ 3.1.2 u_1_:_ _u_n_c_h_a_n_g_e_d_ When a driver message is returned as an answer u1 is unchanged. u_2_:_ _r_e_s_u_l_t_ The byte u2 is used to give r_e_s_u_l_t_ information from a driver to the requesting incarnation (actually the incarnation to which the request message is returned) as shown below, i.e. u2=result+8*result modification: bit 7 3 2 0 result modification result The result is coded as follows: v_a_l_u_e_ m_e_a_n_i_n_g_ 0 processed succesfully, 1 not processed because of a previous error not yet repaired (used with multi-buffering), 2 transient error, i.e. error which may be corrected by the driver; accompanying data may contain errors, e.g. parity errors. 3 persistent error, i.e. error which must be corrected by operator intervention and/or a suitable driver request to reset the device, 4 illegal function, i.e. unintelligible driver message, 5-6 reserved, not used presently. 7 not used; this value may be used to indicate that a message does not contain an answer from a driver. The result modification is used in a driver dependent way to provide additional information needed to distinguish different results, e.g. different kinds of transient error requiring different repair. As a general recommendation, only distinctions which will be useful for the requesting process incarnation should be provided. \f u_3_:_ _u_n_c_h_a_n_g_e_d_ _i_f_ _d_e_v_i_c_e_ _a_d_d_r_e_s_s_ _o_r_ _s_i_n_g_l_e_ _b_y_t_e_ _i_/_o_ _d_a_t_a_ When u3 is used in a driver message to hold a device address it should not be changed by the driver. If data is transferred in single byte mode u3 is used to hold data read from a device. Other uses of u3 are not ruled out, but they are not standardised. u_4_:_ _n_o_t_ _u_s_e_d_ The byte u4 must not be changed by a driver. This allows the user of a driver to use u4 for purposes other than communication with the driver. N_o_t_e_ Result information which cannot be placed in u1-u3 may be held in the data buffer of an answer in the same way as request information in the data buffer of a driver message. 3_._2_ _ _ _ _ _ _ _D_a_t_a_ _B_u_f_f_e_r_ 3.2 The format of the data buffer is standardised for block data transfer requests, i.e. when the buffer is used to hold i/o data. Other uses of the data buffer, e.g. for device status information are not standardised. \f When all request/result information needed in a driver message/answer can be held in u1-u3 the data buffer (of size n bytes) is treated by a driver as a record of the type: data _buffer=RECORD first: INTEGER; last: INTEGER; lastw/next: INTEGER; (* when necessary, additional request/result *) (* information is placed here *) data: ARRAY(6..n-1) OF byte (* i/o data *) END(*RECORD*); The locations ("sub-array") data(first..last) is called the data area of the buffer. The output data for a write/transmit operation are taken from the data area. Note that in the case of a write and read data oper- ation lastw (not last) is used as the index of the last data byte to be written. If the write operation completes normally, next=last+1 (or lastw+1) afterwards. Similarly the input data of a read/receive operation are placed in the data area. If this area is not sufficient for the received data, buffer overrun will occur. If the read/receive operation completes normally, next, in the answer, will be the index of the location following the last received byte. Thus next indicates the length of the block that was actually received into memory. A driver must not change first or last. Some drivers may accept a data buffer stack. As a general rule each data buffer in the stack is formatted as described above, and the concatenation of the data areas of the buffers, from top to bottom, is considered one logical i/o data record. Only the top message header is interpreted according to the conventions spelled out in section 3.1. When a driver supports stacked data buffers it should be explicitly mentioned in the driver manual. \f When request/result information in addition to what can be held in u1-u3 is needed, such information should be placed between lastw/next and the data array; the min bound of this array (6) should be incremented accordingly. The formatting of such request/result information is not standardised. \f F_ 4_._ _ _ _ _ _ _ _ _D_R_I_V_E_R_ _M_A_N_U_A_L_S_ 4. The following contents are suggested for driver manuals. Section 1: Introduction Section 2: Functions Supported by the xxx Driver This section contains a thorough description of the functions provided by the driver. Section 3: Driver Interface This section contains explicit specifications of all formats and codes used in driver messages as well as the answers that may occur for each type of request. The actions caused by a particular request need not be explained in detail, but references to section 2 should be given whenever appropriate. The material in this note need not be repeated in all driver manuals, a reference is sufficient. Section 4: Parent Process Responsibilities This section contains information on how to declare, link, create, and start the driver. Specifically all process parameters of the drivers should be decribed. Suggested values of the storage and priority parameters needed for create and start should also be given. \f «eof»