|
|
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»