DataMuseum.dk

Presents historical artifacts from the history of:

CP/M

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about CP/M

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦8ec3b7fc5⟧ TextFile

    Length: 171392 (0x29d80)
    Types: TextFile
    Names: »D55«

Derivation

└─⟦1e8064b49⟧ Bits:30005867/disk07.imd Dokumenter (RCSL m.m.)
    └─⟦this⟧ »D55« 

TextFile

  A         E_R_R_O_R_ _M_E_S_S_A_G_E_S_ 
   
A.1       I_n_t_r_o_d_u_c_t_i_o_n_ 
 
The errors that can occur during use of the RC BASIC system fall
into three categories. 
 
1) E_r_r_o_r_s_ _d_e_t_e_c_t_e_d_ _d_u_r_i_n_g_ _p_r_o_g_r_a_m_ _e_n_t_r_y_ _o_r_ _c_o_m_m_a_n_d_ _e_x_e_c_u_t_i_o_n_  
 
If an error is detected when an RC BASIC statement is entered or
when a command is executed, an error message will be output in
the following form: 
 
    ERR : xxxx'
    text'
 
          xxxx': a decimal error code less than 0100. 
 
          text': a brief description of the error. 
 
If an error is detected while a program is being read from a
file, RC BASIC will output the erroneous statement followed by
the above error message on the current output device. 
 
2) E_r_r_o_r_s_ _d_e_t_e_c_t_e_d_ _d_u_r_i_n_g_ _p_r_o_g_r_a_m_ _e_x_e_c_u_t_i_o_n_ 
 
If an error is detected during the execution of a program, an
error message will be output in the following form: 
 
    AT yyyy' : 
    ERR : xxxx'
    text'
 
          yyyy': the line number of the erroneous statement. 
 
          xxxx': a decimal error code less than 0100. 
 
          text': a brief description of the error. 
 
3) E_r_r_o_r_s_ _d_e_t_e_c_t_e_d_ _d_u_r_i_n_g_ _f_i_l_e_ _o_p_e_r_a_t_i_o_n_s_ 
 
If an error is detected during an input/output operation, an
error message will be output in a form similar to that of the
messages output for errors of the first or second category;
however, the text IOERR will replace the text ERR and the\f

decimal error code, xxxx', will be greater than or equal to
0100. 
 
E_r_r_o_r_ _m_e_s_s_a_g_e_s_,_ i.e. messages for errors detected during program
entry or command execution as well as those detected during
program execution, are listed and explained in numerical order
in Section A.2 and A.4. 
 
I_/_O_ _e_r_r_o_r_ _m_e_s_s_a_g_e_s_,_ i.e. messages for errors detected during
file operations, are listed and explained in numerical order in
Section A.3. 
 
 
T_A.2       E_r_r_o_r_ _m_e_s_s_a_g_e_s_ 
 
 
0000:     FORBIDDEN, THE INSTALLATION IS LOCKED 
&_Login and the commands CON/CONL, RUN/RUNL is forbid-
          den when the LOCK command is active. 
 
                  0001:     CHARACTER UNKNOWN 
 
          A character not used in RC BASIC was input. This  
          message may appear as the result of a transmission  
          error. 
 
0002:     SYNTAX ERROR 
 
          The structure of an RC BASIC statement is incorrect. 
 
0003:     NO CORE 
 
          No core memory is available for additional terminals
          at the moment. 
 
0004:     Not used. 
 
 
                  0005:     ILLEGAL STATEMENT NUMBER            

A statement number must be in the inverval 1,9999.  
An illegal statement number may occur as the result of 
an overflow when the AUTO command is used. \f

0006:     TOO MANY NAMES 
 
          Too many names (variables and procedures) have been
          declared. The maximum number allowed is 93. The number
          of names can be reduced by means of the following
          commands: 
           
          * LIST filename'
          * NEW 
          * ENTER filename'
           
0007:     COMMAND NOT EXECUTABLE FROM DEVICE 
           
          This error will occur, for example, if an ENTER file
          contains a command or if the attempt was made to
          execute BYE (and certain other commands) in batch
          mode. 
           
0008:     ILLEGAL PAGE/TAB VALUE 
           
          The following rule applies to the two commands PAGE=
          expr1' and TAB=expr2': 
           
          0 = expr1' = 132 and 1 = expr2' = expr1'
           
0009:     LINE TOO LONG 
           
          A program line (when translated to internal form) is
          too long. 
           
0010:     TIME LIMIT EXCEEDED 
           
          The time limit specified for a batch job has been
          exceeded. 
           
0011:     NAME TOO LONG 
           
          A name (variable or procedure name) may not exceed a
          length of 8 characters. 
           
0012:     ILLEGAL COMMAND 
           
          Attempt to use an RC BASIC statement as a command, but
          the statement is meaningful only within the context of
          a program. \f

0013:     LINE NUMBER DOES NOT EXIST 
 
          A line number that was referenced, e.g. by LIST or
          RUN, does not exist in the program. 
           
0014:     PROGRAM TOO LARGE 
           
          Available core memory is insufficient for the program
          (statements). Program size may be reduced by deleting
          REM statements and other nonessentials. 
           
0015:     ILLEGAL DIGITS/PRINTEPS VALUE 
 
The following rule applies to digits: 1=digits=11 
          The following rule applies to printeps: E-100=prin-
teps=1 
           
0016:     ARITHMETIC ERROR 
           
          Either division by 0 or overflow. 
           
0017:     UNDEFINED VARIABLE 
           
          Attempt to use a variable in an expression, but the
          variable has not been defined, e.g. by LET or DIM. 
           
0018:     ILLEGAL FILENAME 
           
          The specified name is not a legal file name. 
 
0019:     RETURN WITHOUT GOSUB 
           
          A RETURN or ENDPROC statement was encountered without
          the previous execution of a GOSUB or EXEC statement. 
           
0020:     STACK OVERFLOW 
           
          Stack overflow may occur due to nesting of IF-ENDIF,
          FOR-NEXT etc. or due to EXEC/GOSUB nesting. The stack-
          size is limited by core only. 
 
0021:     FOR WITHOUT NEXT 
           
          Every FOR statement must have a corresponding NEXT
statement.\f

0022:     NEXT WITHOUT FOR 
 
          A NEXT statement was encountered without the previous
          execution of the corresponding FOR statement. 
           
0023:     NO MORE ROOM FOR VARIABLES 
           
          No more core memory is available to assign space for
          variables. Program size may be reduced by deleting REM
          statements and other nonessentials. 
           
0024:     Not used. 
           
0025:     NOT IMPLEMENTED 
           
          This message will appear, for example, if the user
          attempts to execute a BATCH command and the system has
          no card reader. 
           
0026:     ONLY ALLOWED FROM MASTER TERMINAL 
           
          KILL, LOCK, and UNLOCK commands can only be given from
          the master terminal by the user: operator.
           
0027:     ILLEGAL FILE NUMBER 
           
          A user file number must be in the interval 0,7. 
           
0028:     ORIGINAL DIMENSIONING EXCEEDED 
           
          Attempt to dimension an array previously dimensioned
          to a smaller number of elements. 
           
0029:     EXPRESSION TOO COMPLEX 
           
An expression contains too many parentheses.
 
0030:     Not used. 
           
0031:     SUBSCRIPT ERROR 
           
          A subscript of a dimensioned variable exceeds the
          upper bound of the dimension for the array or is less
          than 1. 
           
 
 
 
 \f

0032:     UNDEFINED FUNCTION 
                             
                            A user function, i.e. FNa(d), has not been defined in a
                            DEF statement. 
 
0033:     Not used. 
           
0034:     ILLEGAL FUNCTION ARGUMENT 
           
          A function containing an illegal argument was called. 
           
0035:     Not used. 
           
0036:     Not used. 
           
0037:     DETERMINANT IS ZERO 
           
          A matrix cannot be inverted if its determinant is
          equal to zero. 
           
0038:     VARIABLE NOT DIMENSIONED 
           
          A variable which has not been declared was used in the
          form name'(subscript'). 
           
0039:     SAME MATRIX ON BOTH SIDES OF EQUAL SIGN 
           
          Certain matrix operations, such as multiplication,
          cannot be performed if the same matrix appears on both
          sides of the equal sign. 
           
0040:     DIMENSIONAL ERROR IN MATRIX OPERATION 
           
          a) In matrix addition or subtraction, the two matrices
             on the right-hand side of the equal sign must have
             the same dimensions. 
           
          b) In matrix multiplication, the rules set forth in  
             Chapter 6, Section 5, must be respected. 
           
          c) The total number of elements in the matrix on the  
             left-hand side of the equal sign must not be less
             than the number of elements in the matrix which is
             the result of the matrix operation on the right-
             hand side of the equal sign. 
 
 \f

0041:     MATRIX NOT SQUARE 
 
                            Only square matrices can be inverted/solved. 
 
0042:     Not used. 
 
0043:     Not used. 
 
0044:     Not used. 
 
0045:     PROC WITHOUT ENDPROC 
           
          A procedure (which is introduced by a PROC statement)
          does not end with an ENDPROC statement. 
           
0046:     PROCEDURE DOES NOT EXIST 
           
          A procedure which was called by means of an EXEC
statement does not exist in the program.
0047:     Not used. 
           
0048:     NOT A SAVE FILE 
           
          A LOAD command was given specifying the name of a file
          that does not contain a SAVEd program. 
           
0049:     Not used. 
           
0050:     Not used. 
           
0051:     ELSE WITHOUT IF 
           
          An ELSE statement was encountered without the previous
          execution of an IF statement. 
           
0052:     IF/ELSE WITHOUT ENDIF 
           
          An IF/ELSE statement must have a corresponding ENDIF
          statement. 
           
0053:     WHILE WITHOUT ENDWHILE 
           
          Every WHILE statement must have a corresponding
          ENDWHILE statement. 
           
0054:     Not used. \f

0055:     ENDWHILE WITHOUT WHILE 
           
          An ENDWHILE statement was encountered without thepre- 
         vious execution of the corresponding WHILE statement. 
           
0056:     ENDIF WITHOUT IF 
           
          An ENDIF statement was encountered without the
previous execution of an IF statement.

0057:     Not used. 
           
0058:     UNTIL WITHOUT REPEAT 
           
          An UNTIL statement was encountered without the
          previous execution of the corresponding REPEAT
          statement. 
           
0059:     CASE WITHOUT WHEN, CASE ERROR 
           
          A CASE expr' OF statement must either be matched by at
          least one WHEN expr' statement or, if no match is
          found between the expression in the CASE statement and
          an expression in a WHEN statement, be followed
          immediately by one or more statements. 
           
0060:     CASE WITHOUT ENDCASE 
           
          A CASE statement must have a corresponding ENDCASE
          statement. 
           
0061:     ENDCASE WITHOUT CASE 
           
          An ENDCASE statement was encountered without the
          previous execution of a CASE statement. 
           
0062:     WHEN WITHOUT CASE 
           
          A WHEN statement was encountered without the previous
          execution of a CASE statement. 
           
0063:     Not used. 
           
0064:     NOT A DIMENSIONED VARIABLE 
           
A simple variable has been used in the form name' 
(subscript').\f

                  0065:     ILLEGAL TYPE 
           
          An expression is of the wrong type. 
           
0066:     TYPE CONFLICT 
           
          A variable is not of the same type as that with which
          the user attempted to equate it. 
           
                  0067:     USER ALREADY LOGGED IN 
                             
                            The user is already logged in. 
                             
                  0068:     ILLEGAL USER IDENTIFICATION 
                             
                            The usercat does not contain a user with specified
                            name and project number. 
                             
                  0069:     ILLEGAL DISC KIT NAME IN USERCAT 
                             
                            The usercat specifies a standard disc kit, which is
                            not known by the monitor. 
                             
                  0070:     ILLEGAL REVISION OF LOAD FILE 
                             
                            The program file in a LOAD command is saved by a
                            higher revision of BASIC/COMAL. 
                             
                             
        A.3       I/O and File related error messages 
                             
                  0100:     CATALOG ERROR 
                             
                            A legal catalog operation was unsuccesful. 
                            The cause may be hard error, software error or
                            overbooked catalog. 
                             
                  0101:     CREATE, ILLEGAL SIZE 
                             
                            The size must be greater than 0. 
                             
                  0102:     CREATE, ILLEGAL RECLENGTH 
                             
Reclength must be: 0reclength=512.\f

                  0103:     CREATE, NO ENTRIES 
                             
                            No entry claim available. 
                             
                  0104:     CREATE, NO SLICES 
                             
                            Insufficient slice claims available. 
                             
                  0105:     CREATE, FILE EXISTS 
                             
                            The specified file name already exists. 
                             
                  0106:     CREATE, ILLEGAL FILENAME 
                             
                            The specified file name is not a legal file name. 
                             
                  0107:     CREATE, ILLEGAL DISCNAME 
           
          The specified disc name is not a legal disc name. 
           
0108:     CHANGESIZE, ILLEGAL SIZE 
           
          The size must be greater than 0. 
           
0109:     CHANGESIZE, FILE UNKNOWN 
           
          The specified file does not exist. 
           
0110:     CHANGESIZE, NO SLICES 
           
Insufficient slice claims available for extension. 
           
0111:     RENAME, OLDNAME UNKNOWN 
           
          The specified file does not exist. 
           
0112:     RENAME, NEWNAME EXISTS 
           
          The new name already exists. 
           
0113:     RENAME, NEWNAME ILLEGAL 
           
          The new name is not a legal filename. \f

0114:     DELETE, FILE UNKNOWN 
           
          The specified file does not exist. 
           
0115:     COPY, NO ENTRIES 
           
          No entry claims available for creation of output file.
           
0116:     COPY, NO SLICES 
           
          Insufficient slice claims for creation/extension 
          of output file. 
           
                  0117:     COPY, FROMFILE UNKNOWN 
           
          The source file does not exist. 
           
0118:     COPY, NEWNAME ILLEGAL 
           
          The specified output file does not have a legal name. 
           
0119:     OPEN, ILLEGAL FILENO 
           
          File must be: -1= file=max file 
           
0120:     OPEN, ILLEGAL MODE 
           
          Legal modes: 0, 1, 2, 3, 4, 9, 11. 
           
0121:     OPEN, ALREADY OPEN 
           
          The specified file is already open. 
           
               0122:     OPEN, OPENS EXCEEDED 
 
          The total number of files which the total number of
                            user>s can have opened at the same time is exceeded. 
                            This number is a system parameter initializedat
                            upstart. 
          One or more files must be closed before the file in
                            question can be opened. 
         
0123:     OPEN, FILE UNKNOWN 
         
          The specified file does not exist. \f

0124:   OPEN, WORK AREA FOR INPUT EXCEEDED 
         
        The max size of a work area for input from a device is a
        system parameter initialized at upstart. 
         
0125:   OPEN, INPUT DEVICE ERROR 
         
        Hard error at input device. 
         
0126:   OPEN, NO ENTRY FOR OUTPUT 
         
        No entry claim for creation of output file. 
         
0127:   OPEN, NO SLICES FOR OUTPUT 
         
        Insufficient slice claims for creation of output file. 
         
0128:   OPEN, DEVICE AREA EXISTS 
         
        A file with the device name already exists. 
        It must be closed or deleted before the file in question 
        can be opened. 
         
0129:   Not used. 
         
0130:   I/O, NOT OPENED IN REQUIRED MODE 
         
        The mode in the open call and the i/o type does not match.
         
0131:   FORMAT ERROR IN PRINT USING 
         
        The format of a PRINT USING statement is incorrect.

0132:   READ/WRITE, RECORD TOO LONG 
 
        Attempt to read or write a record (from or to a random
        access file) which was longer than the record length
        specified for the file. 
         
0133:   PRINT ELEMENT TOO LONG 
         
        A print element contains more characters than the print
        line can hold. (The length of the print line can be set by
        means of the PAGE command). 
         \f

0134:   PRINT/WRITE, TOO FEW SLICES FOR OUTPUT 
         
        Insufficient slices for output. 
         
0135:   Not used. 
         
0136:   READ/WRITE, ILLEGAL RECORDNO 
         
        The number of a record to be read from or written to a
        random access file is less than 1. Or the number of a
        record to be read from a random access file is larger than
        the total number of records. 
         
0137:   NO MORE DATA FOR READ 
         
        The last element in the last DATA statement has been read,
        but the system attempted to execute READ once more. 
         
0138:   Not used. 
         
0139:   READ/INPUT, END OF FILE 
         
        Attempt to read outside a file. 
         
0140:   I/O, FILE RESERVED 
         
        Another file used the specified file name for output. 
         
0141:   I/O, HARD ERROR ON BACKING STORAGE 
         
        Hard error on disc kit. 
         
            0142:   READER MALFUNCTION 
 
        Hard error on reader. 
         
0143:   CARD READER MALFUNCTION 
         
        Hard error on card reader. 
         
0144:   LINE PRINTER MALFUNCTION 
         
        Hard error on line printer. 
         
0145:   PUNCH MALFUNCTION 
 
Hard error on punch.\f

0146:   MALFUNCTION ON CURRENT OUTPUT 
         
        Hard error on current output device. 
         
0147:   ILLEGAL NAME 
         
        Command followed by illegal file name. 
         
0148:   DEVICE AREA ALREADY EXISTS 
         
        A file with the device name already exists. 
        It must be CLOSED or DELETED before the command in
        question can be executed. 
 
            0149:   INPUT AREA DOES NOT EXIST 
 
        The commands ENTER/LOAD/CHAIN is followed by the name of a
        file which does not exist. 
         
0150:   NO ENTRIES FOR OUTPUT 
         
        Commands LIST/SAVE is followed by file name and there is
        no entry claim for creation. 
         
0151:   NO SLICES FOR OUTPUT 
         
        Commands LIST/SAVE is followed by file name and there is
        no slice for creation. 
         
0152:   NO FILES AVAILABLE 
         
        A file is needed, but the total number of files which the
        total number of user>s can have opened at the same time is
        exceeded. See error 0122. 
         
0153:   HARD ERROR ON INPUT DEVICE 
         
        Hard error on input device. 
         
0154:   WORK AREA FOR INPUT TOO SMALL 
         
        The max size of a work area for input from a device is a
        system parameter initialized at upstart. 
         \f

  A.4               Error messages from scope and newclaim. 
         
 
0200:   SCOPE, ILLEGAL IDENTIFICATION 
         
        The specified user identification is not found in the user
        catalog. 
         
0201:   SCOPE, COMMAND NOT ALLOWED 
         
        The command can only be used by the MATER. 
         
0202:   SCOPE, FILE UNKNOWN 
         
        The specified file does not exist on the old scope. 
         
0203:   SCOPE, NO ENTRY 
         
        On the new scope no entry claim is available. 
         
0204:   SCOPE, SLICES EXCEEDED 
         
        On the new scope too few slices are available.
         
0205:   SCOPE, FILE ALREADY ON NEW SCOPE 
         
        A file with the specified name already exists on the new
        scope. 
 
            0206:   NEWCLAIM, COMMAND NOT ALLOWED 
         
        The command can only be used by the MATER. 
         
0207:   NEWCLAIM, ILLEGAL IDENTIFICATION 
         
        The specified user identification is not found in the user
        catalog. 
 
0208:   NEWCLAIM, USER ENTRIES EXCEEDED 
         
        MATER attemps to take more than user>s entries away. 
         
0209:   NEWCLAIM, USER SLICES EXCEEDED 
         
        Mater attempts to take more than user>s free slices away. 
         \f

0210:   NEWCLAIM, DISCNAME UNKNOWN 
 
        The specified disc kit does not exist. 
         
0211:   NEWCLAIM, MATER ENTRIES EXCEEDED 
         
        Mater attempts to give more than MATER>S free entries
        away. 
         
0212:   NEWCLAIM, MATER SLICES EXCEEDED 
         
        MATER attempts to give more than MATER>S free slices away.\f

F_BB_A_T_C_H_ _M_O_D_E_ _A_N_D_ _P_R_O_G_R_A_M_M_I_N_G_ _O_N_ _M_A_R_K_-_S_E_N_S_E_ _C_A_R_D_S_ 
 
 
B.1B_a_t_c_h_ _j_o_b_s_ 
 
The batch mode of operation permits the user to enter and run
one or more complete jobs from the mark-sense card reader (when
present). 
 
RC BASIC source programs, written on mark-sense cards, are
placed in the reader; when the BATCH/BATCH "<LPT" command is
given from a terminal, the system starts reading the cards. 
 
The cards, t_h_e_ _c_o_n_t_e_n_t_s_ _o_f_ _w_h_i_c_h_ _a_r_e_ _i_n_t_e_r_p_r_e_t_e_d_ _e_x_a_c_t_l_y_ _a_s_ _i_f_
t_h_e_y_ _h_a_d_ _b_e_e_n_ _e_n_t_e_r_e_d_ _f_r_o_m_ _a_ _t_e_r_m_i_n_a_l_, can contain all of the RC
BASIC statements and commands with few exceptions. 
 
A stack of cards for batch entry is typically divided into
several jobs. 
 
Each job is initiated by a card containing a SCRATCH command
(see Sect. B.5) and terminated by a card containing the EOJ
command (see Sect. B.4). 
 
Between the SCRATCH command and the EOJ command there can be an
RC BASIC source program on cards, each of which contains one
statement, and following the program there can be one or more
cards containing one command each, e.g. LIST and RUN. 
 
A RUN command may be followed by cards containing data for the
program, which is read by means of INPUT statements (see Ch. 3)
in the program. Such data cards are marked only in the FORMULA
section of the card (see Sect. B.2). 
 
The figure below shows a card stack containing two batch jobs. 
 \f

F___ _________________________________________
                           _ _ _ _E_O_J_ _____________________________________
  ____R_U_N_ _____________________________________
____L_I_S_T_ ____________________________________
_______________________________p_r_o_g_r_a_m_ _c_a_r_d_s_ 
___5_ _R_E_M_ _P_R_O_G_R_A_M_ _F_I_N_D_S_ _1_0_0_ _P_R_I_M_E_ _N_U_M_B_E_R_S_ ___
___S_C_R_A_T_C_H_ _ _W_I_L_K_I_N_S_ _M_I_C_A_W_B_E_R_ _ _7_ _C_ __________
___E_O_J_ _____________________________________
__________________________________d_a_t_a_ _c_a_r_d_s_
___4_,_ _-_5_,_ _7_ ________________________________
___R_U_N__ ____________________________________
____L_I_S_T_ ____________________________________
________________________________p_r_o_g_r_a_m_ _c_a_r_d_s_ 
____1_0_ _R_E_M_ _P_R_O_G_R_A_M_ _F_O_R_ _2_N_D_ _D_E_G_R_E_E_ _E_Q_U_A_T_I_O_N_ ___
SCRATCH  EMMA MICAWBER  7 C 
   









________________________________________________\f

F_      B.2M_a_r_k_-_s_e_n_s_e_ _c_a_r_d_s_ 
 
The cards used for batch jobs are 37 column mark-sense  
programming cards. The RC BASIC mark-sense card looks like this: 
 
 
                                                     S_T_A_T_E_M_E_N_T_ _2_ 
 
 
 
 
 
 
 
 
 
 
 
 
                                                     F_O_R_M_U_L_A_ 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
                                                     S_T_A_T_E_M_E_N_T_ _1_ 
 
 
 
 
                                                    S_T_A_T_E_M_E_N_T_ _N_U_M_B_E_R_ 
   \f

F_                The mark-sense card is not punched; instead, information is
                  written on it simply by marking one or more fields with a_ _s_o_f_t_
                  p_e_n_c_i_l_, e.g. No. 2. 
                   
                  As may be seen from the figure on the preceding page, the
                  RC BASIC mark-sense card is divided into four sections, from
                  left to right: 
                   
                  STATEMENT NUMBER  section (columns 1-4) 
                   
                  STATEMENT 1       section (columns 5-7) 
                   
                  FORMULA           section (columns 8-36) 
                   
                  STATEMENT 2       section (column 37) 
                   
   b_   B.2.1     S_T_A_T_E_M_E_N_T_ _N_U_M_B_E_R_e_
                  The STATEMENT NUMBER section (columns 1-4) is used for statement
                  numbers.   
                   
                  An RC BASIC program consists of statements, each of which begins
                  with a statement number in the range 1 to 9999. A statement
                  number is written by making at the most one mark in each of the
                  columns 1 to 4. 
                   \f

F_                E_x_a_m_p_l_e_s_ 
                   
                   
                   
                   
                  10 :                           1987: 
                   
                   
                   
                   
                   
                   
                   
                   
                   
                   
                   
                   
                   
                   

   b_   B.2.2     S_T_A_T_E_M_E_N_T_ _1_ e_
The STATEMENT 1 section (columns 5-7) permits the user to write
          one or more RC BASIC words simply by marking one field for each
          word. 
   
          None of the three columns in this section may contain more than
          one mark. Some of the RC BASIC words are commands, e.g. LIST or
          RUN, and may not be preceded by a line number. Other words, e.g.
          ENTER or CLOSE, may be used with or without a line number, i.e.
          either as statements or commands. Still other words can be used
          only with a line number, e.g. PROC or ENDPROC. 
           
          Whether a word must have, may have, or may not have a line
number can be seen from the statement and command descriptions
found in Chapters 3, 6, 7, 8, and 9. 
           \f

F_          E_x_a_m_p_l_e_s_ 
           
          10 OPEN FILE :                 LIST : 
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
             
           
  b_B.2.3S_T_A_T_E_M_E_N_T_ _2_e_
                  The STATEMENT 2 section (column 37) is used as follows: 
             
          The C_O_N_T_ _f_i_e_l_d_ should be marked whenever an RC BASIC statement
          fills more than one card. The system will then continue reading
          from the next card, s_k_i_p_p_i_n_g_ _t_h_e_ _S_T_A_T_E_M_E_N_T_ _N_U_M_B_E_R_ _s_e_c_t_i_o_n_ _o_f_
          t_h_a_t_ _c_a_r_d_._ A statement can theoreticallybe continued on any
number of cards.
 
                  When the E_O_J_ _f_i_e_l_d_ is marked, the system will terminate the job.
                  No other fields on the card should be marked. 
                   
                  The T_H_E_N_,_ _O_F_,_ _a_n_d_ _D_O_ _f_i_e_l_d_s_ are used in conjunction with the
                  words IF, CASE, and WHILE, respectively. 
                   
                  E_N_D_P_R_O_C_,_ _R_E_T_U_R_N_,_ _S_T_O_P_,_ _E_N_D_,_ _a_n_d_ _R_A_N_D_O_M_I_Z_E_ are normal RC BASIC
                  statements. 
                   \f

F_                The STATEMENT 2
                  section looks 
                  like this: 
                   
                   
                   
                   
                   
                   
                   
                   
                   
                   
                   
                   
                   
                   
                   
     b_ B.2.4     F_O_R_M_U_L_A_ e_
                  The FORMULA section (columns 8-36) is used for that part of an
                  RC BASIC statement which cannot be written in the STATEMENT 1
                  and STATEMENT 2 sections. 
                   
                  Each of the columns 8 to 36 contains twelve vertical fields.
                  The first field from the top is field number 12, the second
                  field from the top is field number 11, and the remaining fields
                  are numbered 0 to 9. 
                   
        B.2.4.1   E_v_e_n_ _n_u_m_b_e_r_e_d_ _c_o_l_u_m_n_s_._ Columns with even numbers (i.e. 8, 10,
                  ..., 36) are used for the letters A to Z, the digits 0 to 9, and
                  the following special characters: 
 
            =    (field 12) 
                   
                      ,    (field 11) 
                     
                      .    (field 9) 
                   
  B.2.4.2O_d_d_ _n_u_m_b_e_r_e_d_ _c_o_l_u_m_n_s_._ Columns with odd numbers (i.e. 9, 11,  
..., 35) are used for the digits 0 to 9 and the following 
characters:\f

F_               (             (field 12) 
                
               )             (field 11) 
                
               +  -  *       (field 1) 
                
               /     ;       (field 2) 
                
                 '  #       (field 3) 
                
               "  :  <       (field 4) 
             
               ?  %  Æ       (field 5) 
                
               &  !  SP      (field 6) 
                
               @  Ø  Å       (field 7) 
                
               CR "          (field 8)
 
               =  ,  .       (field 9) 
                
          N_o_t_e_: SP is the space character. CR outputs positioning to the
leftmost character position on the print line a_n_d_ _a_ _l_i_n_e_ _f_e_e_d_
(see App. D). @, Ø, and Å are letters of the Danish alphabet. 
                  
        B.2.4.3   W_r_i_t_i_n_g_ _c_h_a_r_a_c_t_e_r_s_._ The following characters are (or may be)
written by marking only one field:   
 
               =             (field 12, even numbered columns) 
           
               (             (field 12, odd numbered columns) 
           
               ,             (field 11, even numbered columns) 
           
     )             (field 11, odd numbered columns) 
           
                 0 to 9        (fields 0 to 9, respectively)

                All other characters are written by marking two fields: 
           
          The f_i_r_s_t_ _f_i_e_l_d_ to be marked is the field in which the
character itself appears on the card. 
 \f

F_          The s_e_c_o_n_d_ _f_i_e_l_d_ to be marked is field 12, 11, or 0. 
           
          Which second field to mark is determined by the position of
          the character in the first field, for example:
  _______
     A
B   1
_C______ 
             
          The characters A, B, and C all appear in field 1. 
           
          Since the character A has the t_o_p_ _p_o_s_i_t_i_o_n_ in field 1, it is
          written by marking field 1 a_n_d_ _f_i_e_l_d_ _1_2_. 
           
          Since the character B has the m_i_d_d_l_e_ _p_o_s_i_t_i_o_n_ in field 1, it
          is written by marking field 1 a_n_d_ _f_i_e_l_d_ _1_1_. 
           
          Since the character C has the b_o_t_t_o_m_ _p_o_s_i_t_i_o_n_ in field 1, it
          is written by marking field 1 a_n_d_ _f_i_e_l_d_ _0_. 
           \f

F_      E_x_a_m_p_l_e_ 
                  
The statement 
 
    105 PRINT A,B,NAME< 
 
is written by marking a card as follows: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
                                                   - < (4 + 0) 
                                                   - E (2 + 11)  
                                                    
                                                   - M (5 + 12) 
 
                                                   - A (1 + 12) 
 
                                                   - N (5 + 11) 
 
                                                   - , (11) 
 
                                                   - B (1 + 11) 
 
                                                   - , (11) 
 
                                                   - A (1 + 12) 
 
               - PRINT 
 
                                                   - 5 
                                                   - 0 
- 1\f

F_N_o_t_e_ 
 
1. Blank spaces must be marked explicitly (the character SP).
   Columns having no marks whatsoever will be skipped by the
   card reader. 
 
2. If a column contains more than the legal number of marks, the
   column will be skipped. (This can be utilized to skip a
   column containing an incorrectly marked field). Columns 1-7
   may contain only one mark. Columns 8-36 may contain two
   marks. Column 37 may contain a mark in the CONT field and one
   other mark. 
 
3. RC BASIC words not found in the STATEMENT sections can be
   written using the FORMULA section. 
 
 
  B.3B_a_t_c_h_ _m_o_d_e_ 
 
  B.3.1B_A_T_C_H_/_B_A_T_C_H_ _"_L_P_T_"_ _c_o_m_m_a_n_d_e  
A terminal can be placed in batch mode by giving the command
  BATCH or BATCH "LPT". Before the command is given, the cards
should be placed in the card reader and the reader should be
ready, as the system will start reading cards at once. 
         
If the BATCH form of the command is used, all output from the
jobs executed, i.e. listings, output from PRINT statements (see
Ch. 3), and error messages, will appear on the terminal. 
        
If the BATCH "LPT" form of the command is used, job output will
be directed to the line printer. 
         
  b_B.3.2I_l_l_e_g_a_l_ _s_t_a_t_e_m_e_n_t_s_ _a_n_d_ _c_o_m_m_a_n_d_s_e
  As stated in Section B.1, there are a few RC BASIC statements
and commands which cannot be used in batch mode. They are:

          AUTO 
 
                    BATCH/BATCH "LPT" 
 
                    BYE \f

F_ b_B.3.3T_i_m_e_ _l_i_m_i_t_ _o_n_ _j_o_b_s_e
A time limit can be placed on a job, so that when the job has
run for a specified number of seconds, it will be interrupted. 
           
                  The error message 0010: TIME LIMIT EXCEEDED will then be output
                  and the next job started. 
                   
                  The next job is assumed to begin with a SCRATCH command. 
                   
                  When a job is started, the time limit is set by default to
                  60 seconds. This time limit can be changed by means of the TIME
                  command (see Sect. B.6). 
                   
  b_    B.3.4     E_S_C_a_p_e_ _k_e_y_ e
The ESCape key has a special function when the terminal is in
                  batch mode. 
                   
                  When the ESCape key is pressed, the system will interrupt all
                  current activity and output the following message on the
                  terminal: 
                   
                      NEXT JOB(1), END OF BATCH(2), CONTINUE(3): 
                   
                  Here, the user should respond by typing one of the numbers
                  (i.e. 1, 2, or 3) and pressing the RETURN key. 
                   
                  All according to the user>s response, the following will now
                  occur: 
                   
                      1             Cards will be read and skipped until 
                                    a SCRATCH command is encountered or the 
                                    reader is empty. 
                   
                      2             The terminal will be placed in
                                    interactive mode. 

3             The next card will be read and its 
                  contents interpreted. 
 
b_B.3.5     R_e_t_u_r_n_ _t_o_ _i_n_t_e_r_a_c_t_i_v_e_ _m_o_d_e_e 
When the BATCH/BATCH "LPT" command has been given, theterminal
will remain in batch mode until one of the following occurs: 
 \f

F_                    1. The card reader becomes empty. 
                   
                      2. The user presses the ESCape key and then 
                         types the number 2. 
                   
                      3. An I/O error on the card reader is detected. 
 
                   
  B.4       E_O_J_ _c_o_m_m_a_n_d_ 
                   
        F_o_r_m_a_t_ 
                   
      EOJ 
 
U_s_e_ 
 
As a command to terminate a job. 
 
R_e_m_a_r_k_s_ 
 
1. The EOJ command executes an implicit NEW command (see Ch. 9). 
 
2. Any logical disc that was connected by the job will be  
           RELEASEd (see Ch. 7).
     
3. A card containing the EOJ command should always be the last  
           card in a job. 
 
 
  B.5       S_C_R_A_T_C_H_ _c_o_m_m_a_n_d_ 
 
F_o_r_m_a_t_ 
 
SCRATCH text'
 
       text': a text, i.e. a number of characters, which will  
                       be output as a heading. 
     
U_s_e_ 
 
As a command to initiate a new job. 
 
R_e_m_a_r_k_s_ 
 
1. If the command BATCH (see Sect. B.3) has been given, the\f

F_   SCRATCH command will clear the display screen on the RC 822
   or RC 823 terminal; if the command BATCH "<LPT" has been
   given, SCRATCH will cause the output of a form feed (see App.
   D) on the line printer. 
    
2. If text' is specified, text' will be output as the first
   line displayed on the terminal or the first line on the new
   line printer page. 
    
        3. The job time limit is set to 60 seconds. This time limit can 
   be changed by means of the TIME command (see Sect. B.6). 
    
4. An implicit NEW command is executed (see Ch. 9). 
    
5. Any logical disc that was connected by the previous job is 
   RELEASEd (see Ch. 7). 
    
6. A card containing a SCRATCH command should always be the  
   first card in a job. 
    

        B.6T_I_M_E_ _c_o_m_m_a_n_d_ 
    
F_o_r_m_a_t_ 
 
TIME=val'  
 
       val': a numeric constant (expressing seconds).  
    
U_s_e_ 
 
As a command to specify how many seconds a job may run. 
 
R_e_m_a_r_k_s_ 
 
1. If the TIME command is not used, the system will interrupt  
   the job in 60 seconds, starting from the execution of the 
   SCRATCH command (see Sect. B.5). 
    
2. The maximum specifiable time limit is 3600 seconds (1 hour). 
    
3. The time allotted to a job is real time, i.e. the amount of  
   central processing unit time which the job actually receives 
   will depend on how many programs are being run at the same 
   time from terminals in interactive mode. \f

F_      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

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

F_      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 0129: I/O, 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. 
 \f

F_      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

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           LOG               RND 
AND               ENDIF             LOOKUP            RUN 
ATN               ENDPROC           LOWBOUND          RUNL 
AUTO              ENDWHILE 
                  ENTER              
                  EOF               MATSAVE 
        BATCHEOJMATERSCANCLAIM 
BYEERRMESSAGESCOPE 
ESCMODSCRATCH 
EXECSEARCH 
CALL EXPSGN 
CASENEWSIN 
CHAINNEWCLAIMSIZE 
CHANGESIZEFALSENEXTSOLVE 
CHRFILENOTSQR 
CLAIMFNA ... FNÅSTEP 
CLOSEFOROF STOP 
CONONSYS 
CONLOPEN 
COPYGOSUBOR 
COSGOTOORDTAB 
CREATETAN 
THEN 
       IDNPAGETIME 
DATAIFPRINTTO 
DEFINITPRINTDATETRN 
DELAYINPUTPRINTEPSTRUE 
DELETEINTPROC 
DETINVPUNCH 
DIGITS       UNLOCK 
DISPLAYRANDOMIZEUNTIL 
DIMKILLREADUSER 
DIVREMUSING 
DORENAME 
LENRENUMBER 
LETREPEATWHEN 
ELSELISTRESTOREWHILE 
ENDLOAD RETURN WRITE 
 LOCK 
  ZER

N_o_t_e_: FNA ... FNÅ represents the 29reserved 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

F_DELAY = expr'                             3.6
 
       Interrupts program execution for a            STATEMENT 
        specified number of seconds. 
 
               DIGITS = expr'                                              3.7
 
Specifies the number of digitsSTATEMENT 
       output by a PRINT statement.                  or COMMAND 



      svar'(l')      svar'(l')                    3.8
 DIM  sarray' (n',l')      sarray' (n',l')
      array'(m')         array'(m')
      array' (row',col')    array' (row',col') 
 
        Defines the size of string variables,       STATEMENT 
        string arrays or numeric arrays.            or COMMAND 

END comment'                                              3.9 

        Terminates execution of the program.        STATEMENT 
  
  EXEC name'                                                 3.11
  
        Executes a procedure defined by             STATEMENT 
        PROC-ENDPROC. 

FOR control var' = expr1' TO expr2' STEP expr3'       3.12
 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.13
 .
 .
  .
statements'    
RETURN comment'  \f

T_        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. 
&_ 
T_GOTO lineno.'                                              3.14

        Transfers control unconditionally to aSTATEMENT 
       statement not in normal sequential order.
&_ 
T_      IF expr' THEN statement'                                 3.15
 
        Executes a single statement depending on    STATEMENT 
        whether an expression is true or false.     or COMMAND 
&_ 
T_IF expr' THEN DO                                        3.16
  statements'
ENDIF comment'
 
        Executes a block of statements depending on STATEMENT 
        whether an expression is true or false. 
&_ 
T_IF expr' THEN DO                                        3.17
statements-1'
ELSE comment'
  statements-2'
ENDIF comment'
 
        Executes statements-1 if an expression is   STATEMENT
  true, otherwise statements-2. 
&_ 
T_ var',var'3.18
INPUT slit-0', svar'  ,slit-n' ,svar'   ...
 
        Assigns values entered from the user>s      STATEMENT 
        terminal to numeric or string variables.    or COMMAND 
&_ 
T_var'var'3.19
LET svar'  = expr'  ; svar'  = expr'  ...   
 
        Assigns the value of an expression to a       STATEMENT 
        variable.                                   or COMMAND 
&_ \f

T_      LOWBOUND = expr'                                            3.20 
 
         Sets the lower bounds of arrays.              STATEMENT 
or COMMAND 
&_ 
T_ON ERR THEN statement'                                      3.22
 
        Enables the programmer to take special      STATEMENT 
        action, if an error occurs during program 
        execution. 
&_ 
T_ON ESC THEN statement'                                      3.23
 
        Enables the programmer to take special      STATEMENT 
        action, if the ESCape key is pressed 
        during program execution. 
&_ 
T_GOTO                                  3.24
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. 
&_ 
T_PAGE = expr'                                                3.25 
 
         Sets the right-hand margin of the terminal    STATEMENT 
or COMMAND 
&_ 
T_      expr'     expr'                                  3.26
;slit'  ,  slit'          ,
 PRINT    svar'  ;  svar'   ...    ;
 
        Prints specified items on the user>s        STATEMENT
        terminal.                                   or COMMAND 
&_ 
T_expr'      expr'                     3.27
PRINT USING format', slit'   ,  slit'   ...   ,
svar'   ;  svar'; 
 
        Outputs the values of items in the          STATEMENT 
        argument list using a specified format.
&_ \f

T_,3.28 
PRINTDATE expr',expr',expr'   
; 
Prints the two first items withSTATEMENT 
a date layout specified by the third.or COMMAND 
&_ 
T_ PRINTEPS = expr'                                            3.29 
 
         Specifies the smallest number which is not    STATEMENT 
         printed as zero.                              or COMMAND 
&_ 
T_PROC name'                                                  3.30
  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. 
&_ 
T_RANDOMIZE                                                    3.31
 
        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). 
&_ 
T_      var'    ,var'                                        3.32
READ  svar'   ,svar'   ...
 
        Reads in values from DATA statements and    STATEMENT 
        assigns the values to the variables listed  or COMMAND 
         in the statement. 
&_ 
T_REM comment'                                              3.33
 
        Inserts explanatory comments within a       STATEMENT 
        program. 
&_ \f

T_REPEAT comment'                                           3.34
  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.  
&_ 
T_RESTORE lineno.'                                          3.35
 
        Resets the data element pointer to the      STATEMENT 
        beginning of the data list or to a         or COMMAND 
        particular DATA statement.
&_ 
T_STOP comment'                                             3.37
 
        Terminates execution of the current         STATEMENT
program. 
&_ 
T_TAB = expr'                                                 3.38 
 
         Sets the zone spacing between                 STATEMENT 
         the print elements output byor COMMAND
PRINT statements.
&_ 
T_TAB(expr')                                                  3.39
 
        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. 
&_ 
T_WHILE expr' THEN DO                                       3.40
  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_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

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 executed.   
         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. 
 16   Line number of basic run time error. 
        17   Current date. 
        18   Current time. 
        19   Weekday. 
                20   Week number. 
        21   Digits.
 
TAN(expr')                                                  4.14
 
        Calculates the tangent of an angle which    FUNCTION
        is expressed in radians. 
 \f

T_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. 
&_ 
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. 
&_ 
T_svar'                        5.3
LEN( slit' )

        Returns the current number of characters    FUNCTION 
        in a string. 
&_ 
T_svar'                      5.4
ORD( slit' )
                   
        Returns the decimal number of the first     FUNCTION 
        character of a string. 
   
&_ 
T_      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 
 
&_ 
T_MAT mvar1' = mvar2' UUU+DDD mvar 3'                  6.4
                      UUUU-DDDD
        Performs the scalar addition or             STATEMENT 
        subtraction of two matrices.                or COMMAND 
 
&_ \f

T_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. 
&_ 
T_MAT mvar' = CON 6.7
 
        Initializes a matrix such that all          STATEMENT 
        elements are set to one.or COMMAND
&_ 
T_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. 
&_ 
T_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. 
&_ 
T_MAT mvar1' = INV(mvar2')                                   6.10
 
        Inverts a matrix and assigns the resultant  STATEMENT 
        element values to another matrix.           or COMMAND 
&_ 
T_;
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 
&_ 
T_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. 
&_ \f

T_MAT SOLVE mvar1'*mvar2'=mvar3'6.13 
 
        Decomposes mvar1' and solves the system      STATEMENT 
        with the right-hand sides mvar3'. The        or COMMAND 
        solutions are assigned to mvar2'. 
&_ 
T_MAT mvar1' = TRN(mvar2')                                   6.14

        Transposes a matrix and assigns the         STATEMENT 
        resultant element values to another         or COMMAND 
        matrix. 
&_ 
T_MAT mvar' = ZER                                             6.15
 
        Initializes a matrix such that all          STATEMENT 
        elements are set to zero.                   or COMMAND
 
&_ 
T_      F.5F_i_l_e_n_a_m_e_s_,_ _D_i_s_c_ _R_e_s_o_u_r_c_e_s_ _a_n_d_ _R_e_l_a_t_e_d_ _C_o_m_m_a_n_d_s_ _(_C_h_a_p_t_e_r_ _7_)_ 
           
          CLAIM "LPT" 7.2
           
                  Returns a listing of used and free disc     COMMANDor 
                  resources, similar to the terminating lines  STATEMENT 
                  in SEARCH. 
&_           
T_          LOOKUP filename'                                            7.3
           
                  Returns a listing of the specified disc       COMMAND or 
                  file.                                         STATEMENT 
&_                   
T_          NEWCLAIM username' ,disc name' slice' entries'       7.4
           
                  Changes the claim of a user.                  COMMAND or 
                                                                STATEMENT 
&_           
T_          SCANCLAIM 7.5
           
                 Returns a listing of the current claims       COMMANDS or 
                  in the usercat.                               STATEMENT 
&_           \f

T_          MATER
          SCOPE  USER   username', filename'                         7.8 
                COMMAND or 
                  Moves a file to/from a user from/to the  STATEMENT 
&_                  MATER.
T_           
          SEARCH                                                     7.9 
           
                  Returns a listing of a user>s file.           COMMAND or 
                                                 STATEMENT 
&_           
T_          
F.6F_i_l_e_ _s_t_a_t_e_m_e_n_t_s_ _(_C_h_a_p_t_e_r_ _8_)_  
           
CHANGESIZE filename',newsize'                          8.2
           
            Changes the size of a file     STATEMENT 
&_                                                           or COMMAND 
T_           
 CLOSE FILE(file')                                     8.3 

        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.
T_           
          COPY fromfile', tofile'8.4 
           
                  Copies a file.STATEMENT 
&_          or COMMAND 
T_ 
CREATE filename'discname',size',recl'                 8.5
 
Creates a file in the logical disc to       STATEMENT 
&_        which the user>s terminal is connected.or COMMAND 
T_ 
DELETE filename'                                        8.6
 
        Deletes a file in the logical disc to which STATEMENT 
&_        the user>s terminal is connected.        or COMMAND 
T_ 
DIGITS FILE (file)=var'                                8.7 
           
                  Specifies the number of digits to be output   STATEMENT  
&_                  by a PRINT FILE command.                 or COMMAND 
 \f

T_EOF(file')                                                   8.8
 
        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. 
&_ 
T_var'var'
INPUT FILE(file') ,  svar'  , svar'   ...                8.9
 
        Reads data in ASCII format from a           STATEMENT 
        sequential access file for the variables    or COMMAND 
        in the argument list. 
&_ 
T_MAT INPUT FILE(file') , mvar' ,mvar' ...               8.10
 
        Reads data in ASCII format from a           STATEMENT 
        sequential access file for the matrix       or COMMAND 
        variables in the argument list. 
&_ 
T_MAT PRINT FILE(file') , mvar' ,mvar' ...               8.11
 
        Writes matrix data in ASCII format to a     STATEMENT 
        sequential access file.                     or COMMAND 
&_ 
T_      MAT READ FILE(file',recno') , mvar' ,mvar' ...      8.12
 
        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. 
&_ 
T_MAT WRITE FILE(file',recno') , mvar' ,mvar' ...    8.13
 
        Writes matrix data in binary format to a    STATEMENT 
        sequential access file or record of a       or COMMAND 
        random access file. 
&_ \f

T_OPEN FILE(file',mode') , filename'                      8.14
 
        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. 
&_ 
T_PAGE FILE (file')=var'                                     8.15 
 
        Sets the right-hand margin of an output file  STATEMENT 
or COMMAND 
&_ 
T_expr'   ,  expr'         ,
PRINT FILE(file') ,  slit'   ;  slit'   ...   ;         8.16
svar'      svar'
&_ 
T_        Writes data in ASCII format to a            STATEMENT 
        sequential access file.                     or COMMAND 
 
expr'    expr'
PRINT FILE(file') , USING format', slit'  , slit'   ...  ,
svar'  ; svar'        ; 
&_ 
T_8.17
Writes data in ASCII format to a            STATEMENT 
        sequential access file, using a specified
        output format.
&_ 
T_, 
PRINTDATE FILE (file'),var',var',var' 8.18 
; 
 
        Prints the 2 first variables with a dateSTATEMENT 
        format specified by the last variable.or COMMAND 
&_ 
T_var'var'
READ FILE(file',recno') ,  svar'  , svar'   ...      8.19
 
        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

T_RENAME filename1',filename2'8.20
 
        Renames a file in the logical disc to       STATEMENT 
        which the user>s terminal is connected.     or COMMAND 
&_ 
T_TAB FILE (file')=var'                                      8.21 
 
                  Sets the zone spacing between the print       STATEMENT 
                  elements output by a PRINT FILE command.      or COMMAND 
&_           
T_expr'    expr'
WRITE FILE(file',recno') , slit'  , slit'   ...      8.22
svar'    svar'
   
                Writes data in binary format to a           STATEMENT 
        sequential access file or record of a       or COMMAND 
                random access file. 
   
&_ 
T_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. 
 
&_ 
T_       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.
&_ \f

T_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. 
&_ 
T_BYE                                                           9.5
 
        Logs the terminal off the system.           COMMANDor 
                                                      STATEMENT 
&_ 
T_ 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. 
&_ 
T_DISPLAY                                             9.7 
  
         Returns a listing of all users logged in.     COMMAND
&_  
T_ENTER filename'                                              9.8
 
        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.10
TO
LIST    ,  line n2'            filename'
TO
line n1' ,  line n2'
&_ \f

T_        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.
&_ 
T_LOAD filename'                                              9.11
 
        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. 
&_ 
T_MESSAGE username',project',news'                        9.12 
 
         Sends a message to another terminal.          COMMAND 
&_ 
T_NEW                                                          9.13
 
        Clears all currently stored program state-  COMMAND or 
        ments and variables from core memory and    STATEMENT 
        closes any open files. 
&_ 
T_  line n1'                                          9.14 
           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). 
&_ 
T_          line n1'                                         9.15
        STEP
RENUMBER    ,    line n2'
STEP 
           line n1' ,    line n2'
 
        Renumbers the statements in the current     COMMAND 
        program. 
&_ \f

T_ RUN     line no.'                                          9.16
 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.
&_ 
T_SAVE filename'                                              9.17
 
        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. 
&_ 
T_SIZE                                                         9.19
 
        Returns the number of bytes used by the     COMMAND 
current program and the numbers of bytes
left.
&_ 
T_ 
 
        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 
&_ 
T_        Terminates a job.                           COMMAND 
 
SCRATCH text'                                             B.5 
&_ 
T_        Initiates a job.                            COMMAND 
 
TIME=val'                                                   B.6 
 
        Specifies how many seconds a job may run.   COMMAND 
&_  \f

F_      G         OPERATION AND INSTALLATION 
                   
                   
        G.1       Start of basic 
                   
                  att s 
                  job tem job filerouter 
                  ready 

                  to filerouter 
                  frprog 
                  att s 
                  all basic run 
                   
                  to basic 
                  comal = move xcomal 
                   comal fpparameters' 
                   
                  The standard initialization is as follows: 
                  BASICERROR:BASICERROR 
                            USERCAT:       USERCAT 
                            FILEROUTER:    FILEROUTER 
                            STDKIT:        disc 
                            WRKSIZE:       168 
                            USERS:         30 
                            FILES:         8 
                            ZONES:         32 
                            STORE:         7000 
                   
                  which means that: 
                  1)   the error message are found in the file basicerror. 
                  2)   the usercat, which specifies the user>s disc claims, is found
                       in the file usercat. 
                  3)   the filerouter process, which transports the user>s messages
                       to/from the hardware, is called filerouter. 
                  4)   the disc kit where all files are created unless otherwise
                       specified, is called disc. 
                  5)   The worksize for input from devices is 168 segments. 
                  6)   The maximum number of users running at the same time is 30. 
                  7)   The maximum number of files a user may open at the same time
                       is 8 (i.e. 0 to 7). 
                  8)   The maximum number of opened files for all users is 32. 
                  9)   The storelength is 7000 halfwords. 
                        
                  This may be changed at upstart by fpparameters in the call of the
                  program. One or more of above words are specified as keywords
                  followed by the new value, e.g. files.9 \f

T_                Besides above keywords, another keyword is allowed: 
                  data.filename' : The program expects to find all above 
                                    information (without keywords) in the
  file filename'.
&_ 
                  If any parameter is specified, the table of values will be listed.
                   
                  The parameter testbit.0 will further cause output of the process
                  claim, e.g. 
                   
T_                           VERSION 0.0 D.781201.1100 

                  BASICERROR:BASICERROR 
                             USERCAT:     USERCAT 
                             FILEROUTER:  FILEROUTER 
                             STDKIT:      DISC 
                             WRKSIZE:     168 
                             USERS:       30 
                             FILES:       7 
                             ZONES:       32 
                             STORE:       7000 
                              
                             SIZE:        80000 
                             BUF:         40 
                             AREA:        40 
                             CAT BASE:    1000   9999 
                             STD BASE:    1000   9999 
                             MAX BASE:    1000   9999 
                   
                             DISC:  21 SEGM/SLICE 
                               TEMP:  63609 SEGM  1112 ENTR 
                               PERM   63609 SEGM  1112 ENTR 
                   
                             DISC1:  42 SEGM/SLICE NO RESOURCES
&_ 
T_      G.2       OPERATORS COMMANDS 
                   
                   
        G.2.1     KILL 
                   
                  F_o_r_m_a_t_ 
                  KILL IDENT'PROJECTNUMBER' 
&_                 
                  U_s_e_ 
                  To kill a user. \f

                  R_e_m_a_r_k_s_ 
                  Should not be done without previous messages asking for log out. 
                  The information corresponding to BYE will be output on the user>s
                  terminal. 
                   
        G.2.2     LOCK 
                   
                  F_o_r_m_a_t_ 
                  LOCK 
                   
                  U_s_e_ 
                  Prohibits login and execution of RUN, RUNL, CON and CONL. 
                   
        G.2.3     UNLOCK 
                   
                  F_o_r_m_a_t_ 
                  UNLOCK 
                   
                  U_s_e_ 
                  Returns to situation before the LOCK command. 
 
T_      G.3       CLOSE OF BASIC 
                   
                   
                  When the LOCK command is active and the operator is the only user
                  logged in, the basic program will terminate when the last user 
                  gives the command BYE. 
                   
                  After the normal BYE information the following will be listed 
                  at the main console: 
                   
                  BASIC/COMAL STARTED AT d.781117.1014 
                  BASIC/COMAL EXIT AT    d.781117.1516 
                  TIME USED, CPU 00.58.14  REAL: 05.02.10
&_ 
T_      G.4       FILEROUTER OPERATING GUIDE 
                   
                   
                  The basic system consists of three internal processes called
                  basic, filerouter and tem. 
                   
&_                The program running in the basic process contains action for
                  building, translating, executing and debugging of programs written
                  in the comal language. This program also performs the operations
                  upon files on backing storage. \f

                  The program running in the tem process performs a transformation
                  of the multiple data streams to displays and from keyboards into a
                  single stream of data from and to the basic process. 
                   
                  The program running in the filerouter process performs the
                  following operations: 
                   
T_                a)   Printing of text; data produced by comal programs upon the
                       line printer. 
                  b)   Punching of text data produced by comal programs upon the
                       paper tape punch. 
                  c)   Reading of text files residing on paper tape from the paper
                       tape reader or from paper tape reader on tty consoles. 
                  d)   Reading of text data from the cardreader. 
                  e)   Copying of data from an input device to an output device or
                       to and from backing storage text files. 
&_                 
                  To do this the filerouter operates the local devices known in the
                  RC 8000 system as printer punch, reader and cardreader. 
                   
                  In the following the communication between the operator and the
                  filerouter due to change of paper, loading of data files etc. is
                  described. 
                   
                  The filerouter uses the operator console i.e. the console from
                  which the filerouter process was created for this communication. 
                   
                  P_r_i_n_t_e_r_ 
                  The filerouter knows the device as device number 1. 
                   
                  Whenever the printer is needed and out of paper, in remote state,
                  power off or disconnected the following message appears on the
                  operator console: 
                   
                  basic filerouter printer out of paper answer no. 1 
                   
                  The operator is now assumed to correct the error and then notify
                  the filerouter by pressing the escape key (att) and type 
                   
                  att filerouter 
                  **answer 1 
                   
                  P_u_n_c_h_ 
                  The filerouter knows the devices as device number 2. \f

                  Whenever the punch is needed, the following message appears on the
                  operator console: 
                   
                  basic filerouter punch clear for user' projectnumber' answer no.
                  2 
                   
                  The operator is now assumed to convince himself that the punch is
                  ready and then notify the filerouter by pressing the escape key
                  and type: 
                   
                  att filerouter 
                  **answer 2 
                   
                  The punch may run out of paper. The procedure is as follows: 
                   
                  basic filerouter punch out of paper answer no. 2 
                   
                  Place new paper tape in the punch and type: 
                   
                  att filerouter 
                  **answer 2 
                   
                  R_e_a_d_e_r_ 
                  The filerouter knows the device as device number 3. 
                   
                  Whenever the reader is needed, the following message appears on
                  the operator console: 
                   
                  basic filerouter reader load for user' projectnumber' 
                   
                  The operator is now assumed to place the paper tape marked user'
                  projectnumber' in the paper tape reader and press the reset
                  button. 
                   
                  C_a_r_d_r_e_a_d_e_r_ 
                  The filerouter knows the devices as device number 4. 
                   
                  Whenever the cardreader is needed, the following message
                  appears on the operator console. 
                   
                  basic filerouter cardreader load for user' projectnumber' 
                   
                  The operator is now assumed to place the card deck marked user' 
                  projectnumber' in the cardreader. If the carddeck is composed of\f

                  marked sense cards the switches on the back at the cardreader must
                  be in positions opt mark and clock, otherwise positions punch and
                  non-clock are choosen.  
                   
                  Then press the reset button. 
                   
                  T_t_y_ _p_a_p_e_r_ _t_a_p_e_ _r_e_a_d_e_r_ _(_t_r_a_n_s_m_i_t_)_ 
                  The filerouter knows the device as device number 5. 
                   
                  Whenever a comal user requests reading of a paper tape from the
                  paper tape reader on his console, the following message appears on
                  this console: 
                   
                  basic filerouter start transmit 
                   
                  Now the comal user is supposed to place a paper tape in the reader
                  and press the start button. If this is not done within about 30
                  seconds the console returns to interactive mode. 
                   
                  A_u_x_i_l_i_a_r_y_ _c_o_m_m_a_n_d_s_ 
                  Besides the answer commands, the following commands may be used by
                  the operator of the filerouter. 
                   
T_                Display device number' 
                   
                  Clean   device number' 
                   
                  Start   device number' 
&_                 
                  where the value of device number range from one to five indicating
                  printer, punch, reader, cardreader and transmit. 
                   
T_                D_i_s_p_l_a_y_ 
                  If the device is not used nothing is answered otherwise the queue
                  of pending requests are displayed to the operator e.g. 
                   
                                    queues of 
                                    printer 
                   
                  number of requests: 3 
                  number of requests for which answer has not been sent: 0
&_ \f

T_                user   project   bsareaname   lowerbase   upperbase 
                   ta       4         fut          1420        1429 
                   kc       4         comal        1410        1419 
                   pas      4         frtesttxt    1400        1407 
&_                 
                  the requests listed by user name, projectnumber etc. are those
                  originating from the comal users use of the copy command. Number
                  of requests for which answer has not been sent originates from the
                  comal users use of the open and close statements. The requests are
                  not listed only the number of them are shown. 
                   
T_                C_l_e_a_n_ 
                  The queue of pending requests to the device is displayed to the
                  operator e.g. 
                   
                  att filerouter 
                  **clean 1 
                   
                  produce 
                                                 queues of 
                                                 printer 
&_                 
                  number of requests: 3 
                  number of requests for which answer has not been sent: 0 
                   
T_                user   project   bsareaname   lowerbase   upperbase 
                   ta       4         fut          1420        1429 
                   kc       4         comal        1410        1419 
                   pas      4         frtesttxt    1400        1409 
                                                 current transaction 
&_                 
T_                user   project   bsareaname   lowerbase   upperbase 
                  mater     4      characters      1400        1499 
&_                 
                  Then all requests are removed from the queues of the device and
                  the device is placed in skip mode, i.e. future requests are
                  rejected. 
                   
                  The requests originates from copy commands (ta, kc, pas) are
                  hereby removed without notifying the user, which the operator is
                  supposed to do. This should be done for the current transaction
                  too, as the operator cannot know whether this user is notified by
                  the system or not. 
                   \f

S_t_a_r_t_ 
                  A device which has been placed in the skip mode may be restarted
                  in the sense that requests are no longer rejected by use of the
                  start command e.g. 
 
                  att filerouter 
                  **start 1 
                   
T_                S_u_m_m_a_r_y_ _o_f_ _c_o_m_m_a_n_d_s_ 
                  The syntax of commands to the filerouter is: 
                   
                  filerouter command'::=keyword'space'device number' 
                  keyword'::=answ clea disp star 
                  device number'::=1 2 3 4 5 
                   
                  Command input i.e. response to the ** which is not a filerouter
                  command is ignored by the filerouter.
&_ 
T_      G.5       INSTALLATION 
                   
                   
                  The following files must be present: 
                   
                  1)   tem        ; an operating system 
                  2)   frprog     ; the filerouter program 
                  3)   xcomal     ; the basic interpreter 
                  4)   usercat    ; a catalog defining the users disc claim. 
&_                5)   basicerror ;a file containing the error message. 
 
                  To define the user claims, the BOSS program CATUPDATE (see BOSS
                  Installation and Maintenance) is used. 
                  A project with a user named operator must exist. 
                   
T_                For each project: 
                   
                  1)   Record type 10: Project width'= number of users 
                  2)   If a special standard kit is desired for this project, 
                       then specify a record type 4, specifying 0 slides, 0 entries 
                  3)   For each user in the project. 
                   
                       1)   Record type 11: job width and user indices should be 1
                            (not a demand), except for the MATER who has a job width
                            embracing all users. 
                       2)   For each desired kit is specified a record type 9 or 4. 
                       3)   Record type 0 for end of user 
&_                 
                  Other record types are allowed but will not be used by COMAL. \f

                  It will be possible to use this usercat from BOSS. 
                   
T_                E_x_a_m_p_l_e_ 
                  10, 0, 0, 0, 0, 0, 100 
                  0 
                  11, operator, 0, 0, 1, 1, 100 
                  9, 10, 10 
                  0 
                  10, 4, 0, 0, 0, 200, 299 
                  0 
                  11, knud, 4, 0, 1, 1, 200 
                  9, 100, 20 
                  0 
                  11, palle, 4, 0, 1, 1, 201 
                  9, 100, 20 
                  0 
                  11, tove, 4, 0, 1, 1, 202 
                  9, 100, 20 
                  0 
                  11, mater, 4, 0, 100, 1, 200 
                  9, 300, 100 
                  -1
&_ \f

                  I_N_D_E_X_ 
 
 
 , 1.4 
  , 1.5 
, 1.5 
..., 1.5 
+, 2.5.2 
-, 2.5.2 
 , 2.5.2 
*, 2.5.2 
/, 2.5.2 
, 2.5.6 
=, 2.5.6
         =, 2.5.6 
'=, 2.5.6 
', 2.5.6 
', 2.5.6 
;, 3.24 
", 5.1.1 
<, 5.1.2 
 
 
ABS(X), 4.2 
Access to programs, unauthorized, prevention of, 9.13 
AND. See Operators, Boolean 
Appending data to data written previously to  
  a file (mode 2), 8.1.5, 8.1.7, 8.14 
Arctangent of X in radians, function to return, 4.3 
Arithmetic, RC BASIC, 2 
Arrays, 2.4, 3.8 
- dimensioning, 2.4.2, 3.8 
- elements, 2.4.1, 2.4.2, 3.8  
- manipulation as matrices, 6 
ASCII characters, D.1 
- decimal and octal values, D.1 
ATN(X), 4.3 
AUTO, 9.3 
 
Batch jobs, B.1 
Batch mode, 1.1, 1.3, 9.4, B, B.3 
- illegal statements and commands, B.3.2 
- return to interactive mode, B.3.5 
- time limit on jobs, B.3.3 
- use of ESCape key, B.3.4\f

BATCH "LPT", 9.4, B.1, B.3.1 
Boolean arguments. See Operators, Boolean 
Branching, conditional, 3.2, 3.15, 3.16, 3.17, 3.24 
- unconditional, 3.14 
BYE, 9.5 
 
 
CASE, 3.2 
CASE-WHEN-ENDCASE, 3.2 
CHAIN, 3.3, 8.1.5 
CHANGESIZE 8.2 
Character corresponding to specified number, function to  
  return, 5.2
CHR(X), 5.2 
CLAIM 7.2 
Clearing programs from core memory, 9.13 
CLOSE FILE, 8.1.5, 8.1.7, 8.3 
Commands, 1.2 
- derived from RC BASIC statements, C.1 
- desk calculator functions, C.2 
- file input/output, C.4 
- program debugging, C.3 
- program development and execution, 9, 9.1 
Comments, explanatory, within program, 3.29 
CON/CONL, 9.6, C.3 
Control structures, 3.2, 3.12, 3.14, 3.15, 3.16, 3.17, 3.24,  
  3.33, 3.36
COPY, 8.4 
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.5 
 
DATA, 3.4, 3.34 
Data element pointer, resetting of. See RESTORE 
Debugging, program, C.1, C.3 
DEF, 3.5 
DELAY, 3.6 
DELETE, 8.6 
Deletion, files, 8.5 
- program statements, 1.2, 9.2, 9.8 
Descriptions of statements, commands, and functions, 1.4 
Desk calculator functions, C.1, C.2 
DET(X), 6.6 
device', 1.5 \f

Devices, 8.1.1 
- reserved names, 8.1.2 
DIGITS, 3.7 
DIGITS FILE, 8.7
DIM, 3.7, 5.1.3, 6.2 
Dimensioning, matrices, 6.2 
- numeric arrays, 2.4.2, 3.8 
- string variables, 5.1.3 
DISC resources, 7 
DISPLAY, 9.7 
DIV. See Operators, arithmetic 
DO, 3.16, 3.17, 3.39 
 
ELSE, 3.17 
END, 3.8 
ENDCASE, 3.2 
ENDIF, 3.16, 3.17 
ENDPROC, 3.11, 3.29 
ENDWHILE, 3.39 
ENTER, 8.1.5, 9.7 
Entering data for program from terminal. See INPUT 
EOF(X), 8.8 
EOJ, B.1, B.4 
ERR, 3.22 
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.23 
ESCape key, 1.2, 1.3, 3.23, 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.11, 3.29 
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
Facilities, RC BASIC, 1.1 
                  file', 1.5 \f

filename', 1.5 
Filenames, 8.1.1, 8.1.4 
Filerouter Operating Guide, G.4 
Files, 8.1. See also Random access files, 
  Sequential access files 
- closing, 8.3 
- end of file condition, function to detect, 8.8 
- input/output, commands for, C.4 
- modes, 8.1.5, 8.14 
- opening, 8.14 
- sizes, 8.1.4 
- uses, 8.1.5 
Floating-point numbers. See Numbers in RC BASIC 
FNa(d), 3.5 
FOR, 3.12 
Formats (syntax) of statements, commands, and functions, 1.4 
FOR-NEXT, 3.12 
Functions, arithmetic, 4.2, 4.5, 4.7, 4.8, 4.9, 4.10, 4.12 
- file, 8.5 
- matrix, 6.6 
- printing, 3.38 
- 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.13, 3.24 
GOTO, 3.3, 3.13, 3.14, 3.24 
 
Halfwords left and halfwords used, command to return, 9.16 
 
Idle mode. See Modes, terminal operation 
IF, 3.15, 3.16, 3.17 
IF-THEN, 3.15 
IF-THEN-ELSE-ENDIF, 3.17 
IF-THEN-ENDIF, 3.16 
INPUT, 3.18, 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 
Installation, G.5 
INT(X), 4.7\f

KILL, G.2 
 
 
Length of specified string, function to return, 5.3  
LEN(X<), 5.3 
LET, 3.19, 5.1.2, 5.1.5, 5.1.6, C.2, C.3 
line no.', 1.5 
LIST, 9.10 
- LISTing versus SAVEing, 9.17 
LOAD, 8.1.5, 9.11 
Loading, SAVEd program in binary from disc file or device into 
  program storage area, 9.11 
LOCK, G.2 
Logarithm of X, natural, function to return, 4.8 
Logging off. See Terminal 
LOG(X), 4.8 
LOOKUP, 7.3 
Loops, program, 3.11, 3.30, 3.36 
LOWBOUND, 2.4, 3.7, 3.20, 5.1, 6.2 
 
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.10 
MAT INV, 6.10
MAT PRINT, 6.11 
MAT PRINT FILE, 8.11 
MAT READ, 6.12 
MAT READ FILE, 8.12 
Matrices, addition, 6.4 
- assignment (copying), 6.3 
- decompose, 6.13 
- determinants, 6.6, 6.10; determinant of last matrix inverted,  
  function to return, 6.6 
- dimensioning, 6.2 
- initialization, 6.7, 6.8, 6.15 
- inversion, 6.10 
- multiplication, 6.5 \f

- operations, 6.1 
- solve, 6.13
- subtraction, 6.4 
- transposition, 6.14 
MAT SOLVE, 6.13 
MAT TRN, 6.14 
MAT WRITE FILE, 8.13 
MAT ZER, 6.14 
MATER, 7, 7.6 
Merging, program statements from disc file or device into program
  storage area, 9.8 
MESSAGE, 9.11 
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.9, 3.36, 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.12, 3.13, 3.16, 3.17, 3.29, 3.33, 3.39 
NEW, 1.2, 9.7, 9.11, 9.13, B.4, B.5 
NEWCLAIM, 7.4 
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.15 
- printing, 2.1, 3.26 
OF, 3.2 
ON, 3.22, 3.23, 3.24 
ON-ERR, 3.22, 9.13 
ON-ESC, 3.23, 9.13 
ON-GOTO/GOSUB, 3.24 
OPEN FILE, 8.1.6, 8.1.7, 8.14 
Operating Guide, G 
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 \f

- 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.14; in binary to disc 
  file or device, 9.17 
 
PAGE, 3.25 
PAGE FILE, 8.15
PRINT, 3.25, 3.26, C.2, C.3 
PRINT FILE, 8.16 
PRINT FILE USING, 8.17 
PRINTDATE, 3.28 
PRINTDATE FILE, 8.18 
PRINTEPS, 3.24 
PRINTEPS FILE, 8.19 
Printing, blank lines, 3.26 
- compact spacing, 3.26 
- data at terminal, 3.26, 3.27, 3.38 
- length of print line (page width), command to set, 3.25, 8.15 
- non-printing characters, 5.1.1, D.2 
- numbers, 2.1, 3.26 
- spacing to next line, 3.26 
- tabulation of printing position, function for, 3.38 
- using specified format, 3.27 
- zone spacing, 3.26; command to set, 3.36, 8.21 
PRINT USING, 3.27 
Priorities of operators during program execution. See Operators 
PROC, 3.30 
Procedures, 3.5, 3.11, 3.29 
- calling, 3.11 
- defining, 3.29 
PROC-ENDPROC, 3.30 
Program execution, 3.3, 9.16 
- interruption of, 1.3, 3.3, 3.6, 3.22, 3.23 
- resumption of, 1.3, 9.6 
- termination of, 3.9, 3.36 
Programming on mark-sense cards, B.1 
Programs, RC BASIC, 1.2 
PUNCH, 9.14 
 
Random access files, 8.1.6. See also Files 
- reading data in binary from record of, 8.19 
- reading matrix data in binary from record of, 8.12 \f

- writing data in binary to record of, 8.22 
- writing matrix data in binary to record of, 8.13 
RANDOMIZE, 3.31 
- different starting points in sequence of random numbers
  generated, 3.31 
Random number between 0 and 1, function to return, 4.9 
Range of numbers. See Numbers in RC BASIC 
READ, 3.32, 5.1.2, 5.1.5, C.2 
READ FILE, 8.20 
recl', 8.5 
recno', 8.12, 8.13, 8.19, 8.23 
REM, 3.32 
RENAME, 8.21 
RENUMBER, 9.15 
Renumbering, program statement lines, 9.15 
REPEAT, 3.34 
REPEAT-UNTIL, 3.34 
Reserved names, devices. See Devices 
Reserved words in RC BASIC, E 
RESTORE, 3.32, 3.36 
- resetting data element pointer, 3.32 
Resumption, program execution. See Program execution 
RETURN, 3.11, 3.13, 3.30 
RETURN key, 1.2, C.1 
RND(X), 3.31, 4.9 
RUBOUT key, 1.2 
RUN/RUNL, 1.2, 8.1.5, 9.15, C.3 
 
SAVE, 8.1.5, 9.15 
- conserving space on SAVE device, 9.17 
- SAVEing versus LISTing, 9.17 
SCANCLAIM, 7.5 
SCOPE, 7.6 
SCRATCH, B.1, B.5 
SEARCH, 7.7 
Sequential access files, 8.1.7. See also Files 
- reading data in ASCII from, 8.9; in binary from, 8.19 
- reading matrix data in ASCII from, 8.10; in binary from, 8.12 
- writing data in ASCII to, 8.16; using specified format, 8.17; 
  in binary to, 8.22 
- writing matrix data in ASCII to, 8.11; in binary to, 8.13 
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 \f

size', 8.5 
SIZE, 9.17, 9.19 
slit', 1.5 
Special action, if error occurs, 3.22 
- if ESCape key is pressed, 3.23 
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.12, 9.3, 9.13 
STOP, 3.13, 3.37 
Strings, 5.1 
- arrays, 3.7, 3, 5.1 
- comparison, 5.1.7 
- concatenation, 5.1.6 
- constants, 5.1.1 
- literals, 3.27, 5.1.1 
- variables, 5.1.2; dimensioning, 5.1.3 
- substrings, 5.1.4 
Subroutines, 3.5, 3.13 
- calling, 3.13 
- entry into, inadvertent, avoidance of, 3.13 
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, 3.38 
TAB(X), 3.39 
Tangent of X, where X is in radians, function to return, 4.14 
TAN(X), 4.14
Terminal, log-off from system, 9.5 
Termination, program execution. See Program execution 
THEN, 3.3, 3.15, 3.16, 3.17, 3.22, 3.23, 3.24, 3.39 
TO, 3.11, 9.9, 9.13 
TIME, B.5 
 
UNLOCK, G.2 
UNTIL, 3.30 \f

User functions, defining, 3.5 
USER, 7.6 
USING, 3.25, 8.17 
 
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.18, 3.19, 3.31, 5.1.2,
  5.1.5,6.9, 6.12, 8.9, 8.10, 8.12, 8.19; provision of values 
  for, 3.4 
- numeric, 2.3 
- string, 2.3 
 
WHEN, 3.2 
WHILE, 3.39 
WHILE-ENDWHILE, 3.40 
WRITE FILE, 8.23 \f

                    
           \f

                                                 i 
           
          T_A_B_L_E_ _O_F_ _C_O_N_T_E_N_T_S_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _P_A_G_E_ 
           
          1.  GENERAL DESCRIPTION ....................................   1 
              1.1  Environmental Specification .......................   1 
           
          2.  SERIAL INTERFACE .......................................   2 
           
          3.  PARALLEL INTERFACE .....................................   3 
           
          4.  INPUT/OUTPUT CONNECTOR .................................   4 
           
          5.  BELL/CLICK CONNECTOR ...................................   5 
           
          6.  SERIAL COMMUNICATION ...................................   7 
              6.1  Initializing the Keyboard .........................   7 
              6.2  Serial Output from the Keyboard ...................   8 
              6.3  Keyboards LED's etc ...............................   8 
              6.4  Auto-Repeat Function ..............................  10 
               
          7.  PARALLEL COMMUNICATION .................................  13 
              7.1  Internal ASCII Table ..............................  13 
              7.2  External ASCII Table ..............................  13 
               
          8.  KEYBOARD LAYOUTS .......................................  15 
           
          9.  MECHANICAL OUTLINE .....................................  20 
           
           
          A_P_P_E_N_D_I_X_: 
           
          A.  KEYBOARD IDENTIFICATION ................................  23 
           
           \f

                                                 ii 
           \f

F_       1_._ _ _ _ _ _ _ _ _G_E_N_E_R_A_L_ _D_E_S_C_R_I_P_T_I_O_N_    1.
           
          The keyboard used with RC700 and RC850 is a selfcontained unit
          supplied from +5 Volt through the interconnection cable. 
           
          When used with RC850 the interface is a serial interface and when
          used with RC700 it is a parallel interface. The output from the
          keyboard may be a position code or an ASCII code. The ASCII code
          may be defined in the keyboard program or it may be specified by
          a separate custom PROM. ASCII code is normally used together with
          parallel interface. 
           
          Switches or straps on the board select the different modes for
          interface and code. 
           
           
    1_._1_ _ _ _ _ _ _ _E_n_v_i_r_o_n_m_e_n_t_a_l_ _S_p_e_c_i_f_i_c_a_t_i_o_n_    1.1
           
          Power: 
             Voltage                    4.75 to 5.25 Volt 
             Current                    700 mA max. 
          Operating temperature         0-50C 
          Storage temperature           -20-70C 
          Humidity                      0-95%, non condensing 
           
           \f

F_       2_._ _ _ _ _ _ _ _ _S_E_R_I_A_L_ _I_N_T_E_R_F_A_C_E_    2.
           
          When serial interface is selected, data are transferred to and
          from keyboard in the following format: 
           
          Number of start bits                         1 
          Number of stop bits                          1 to 
          Number of data bits                          8 
          Number of parity bits                        1 (even parity) 
          Bit rate                                     300 bps 
          Full duplex mode 
          No control signals 
          Signal levels                                Low power shottky *)
          Logical one                                  2.5 to 5.0 V 
          Logical zero                                 0.0 to 0.4 V 
           
M_                           start                                     stop 
P_                L_o_g_i_c_a_l_ _o_n_e_ _ _      _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
          Logical zero  _ _ _ _ _ _b_0_ _ _b_1_ _ _b_2_ _ _b_3_ _ _b_4_ _ _b_5_ _ _b_6_ _ _b_7_ _ _ _ _ 
           
                                               Even parity 
           
              *) Low power schottky mentioned in this manual is specified the
             following way: 
              
             Input 
               High-level input voltage                2.0  Volt min. 
               Low-level  -     -                      0.8  -    max. 
               High-level -     current                20   A   - 
               Low-level  -     -                      -0.4 mA   - 
             Output 
               High-level output voltage               2.4  Volt min. 
               Low-level  -      -                     0.5  -    max. 
               High-level -      current               -0.4 mA   max. 
               Low-level  -      -                     8    -    min. 
           
           \f

F_       3_._ _ _ _ _ _ _ _ _P_A_R_A_L_L_E_L_ _I_N_T_E_R_F_A_C_E_    3.
           
          When parallel interface is selected, data are transferred from
          the keyboard in the following format: 
           
          Number of output lines                       8 
          Number of output strobes                     1 
          Signal levels                                Low power shottky 
          Logical one                                  2.5 to 5.0 V 
          Logical zero                                 0.0 to 0.4 V 
          Data lines                                   Positive logic 
          Strobe                                       Negative logic 
           
           
           
           
           
           
           
           
           \f

F_       4_._ _ _ _ _ _ _ _ _I_N_P_U_T_/_O_U_T_P_U_T_ _C_O_N_N_E_C_T_O_R_    4.
           
          The input/output connector is a 2 x 13 pin connector with 0.1
          inch spacing between the pins and 0.1 inch spacing between the
          two rows. 
           
          The connector may be of the following type: 
           
               AMP type     102162-6   or 
               3M  -        3493-1003 
           
           
           
           
           
           
           
          Pin No             Signal 
M_           1                 Parallel out 0 
           2                 -            1 
           3                 -            2 
           4                 -            3 
           5                 -            4 
           6                 -            5 
           7                 -            6 
           8                 -            7 
           9                 0 Volt 
          10                 No connection 
          11                 -  - 
          12                 -  - 
          13                 -  - 
          14                 -  - 
          15                 -  - 
          16                 -  - 
          17                 -  - 
          18                 0 Volt 
          19                 No connection 
          20                 +5 Volt 
          21                 -,Strobe/Serial out *) 
                   22                 +5 Volt 
          23                 Serial in 
          24                 No connection 
          25                 -  - 
P_          26                 -  - 
                  
          *) The signal is: 
             -,Strobe in parallel mode and 
             Serial out in serial mode 
           
           \f

F_       5_._ _ _ _ _ _ _ _ _B_E_L_L_/_C_L_I_C_K_ _C_O_N_N_E_C_T_O_R_    5.
           
          The keyboard is supplied with a bell/click connector which con-
          nects the keyboard to a switch, a potentiometer and a loud-
          speaker. The circuit diagram for the circuits on the keyboard and
          the components supplied to the connector are shown in fig. 1. 
           
           
           
           
           
           
           
           
          The connector may be of the following type: 
           
               AMP type 102162-1 
               3M  -    3491-1003 
           
          When control A is high, a signal at approx. 2.2 kHz is sent to
          the loudspeaker. This is the bell function. 
           
          When control B is high, a signal at approx. 1.6 kHz is sent to
          the loudspeaker if the switch is on. 
           
          This makes the click function. This is activated in approx. 3.5
          msec. 
           
          The potentiometer controls the signal amplitude for both func-
          tions. 
           
           \f

F_                  
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
          Figure 1: Bell and click function. 
           \f

F_       6_._ _ _ _ _ _ _ _ _S_E_R_I_A_L_ _C_O_M_M_U_N_I_C_A_T_I_O_N_    6.
           
          Chapter 1 shows the format used when communicating between the
          keyboard and the host, when serial communication is selected. 
           
           
6_._1_ _ _ _ _ _ _ _I_n_i_t_i_a_l_i_z_i_n_g_ _t_h_e_ _K_e_y_b_o_a_r_d_    6.1
           
          In serial mode the keyboard may be initialized. For each keyposi-
          tion on the keyboard, the key will deliver a predefined binary
          code when pressed. For keys like shift and lock it may be wanted
          to get an output signal too, when the key is released. This out-
          put code must be initialized. The maximum number of keys with
          such a double code is 15. 
           
          Before initializing the double code keys, the double key pointer
          internally in the keyboard must be reset. This is done by sending
          the following sequence to the keyboard: 
           
               byte 1        D5 Hex 
               -    2        C0 - 
               -    3        FF - 
               -    4        FF - 
           
          Then it is possible to initialize 1 to 15 double keys using the
          following sequence for each key: 
           
               byte 1        C0 Hex 
               -    2        Key position number 
               -    3        Release code from key 
           
          E_x_a_m_p_l_e_: 
           
          The keyboard receives the following sequence: 
           
               byte 1        C0 Hex 
               -    2        A0 - 
               -    3        B3 - 
           \f

                   The result is that the key with the key code number A0 (see fig.
          2) is initialized to be a double code key with the release value
          B3 Hex. Input codes not mentioned here or in the appendices
          should be ignored. 
           
           
     6_._2_ _ _ _ _ _ _ _S_e_r_i_a_l_ _O_u_t_p_u_t_ _f_r_o_m_ _t_h_e_ _K_e_y_b_o_a_r_d_    6.2
           
          Fig. 2 shows the output code for keys when pressed. Adding on the
          release code does not change the output code for the key when
          pressed. 
           
                    
         6_._3_ _ _ _ _ _ _ _K_e_y_b_o_a_r_d_s_ _L_E_D_'_s_ _e_t_c_    6.3
           
              The keyboard may be supplied with a number of LED's (light emit-
          ting diodes) which may be turned on and off using one of the
          following commands. The audio circuit (bell function) is used the
          same way. 
           
M_                      b_7_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _b_0_ 
P_          command 1    _0_ _ _0_ _ _5_ _ _4_ _ _3_ _ _2_ _ _1_ _ _0_ _ 
           
                      byte code  LED number 
           
M_                             b_7_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _b_0_ 
P_          command 2    _0_ _ _1_ _1_1_ _1_0_ _ _9_ _ _8_ _ _7_ _ _6_ _ 
           
                             byte code  LED number 
           
M_                      b_7_ _ _ _ _ _ _ _ _ _ _ _b_3_ _ _ _ _ _ _ _b_0_ 
P_          command 3    _1_ _ _0_ _ _Ø_ _ _Ø_ _ _A_ _ _Ø_ _1_3_ _1_2_ _ 
                  
                      byte code         LED number 
                          audio circuit 
           
              A logical one in the LED number position shown, turns an LED
          mounted in that position on. A logical zero turns it off. 
           \f

F_                  
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
          Figure 2: Output code serial mode. 
           \f

F_                 Audio is controlled by command 3 bit 3. Setting bit 3 to one
          turns control A (bell) on as described in chapter 5 and shown in
          fig. 1. 
           
          The different lamp positions are shown in fig. 3. A lamp may be
          placed hardware-wise in any of the number positions shown. Only
          one lamp may be used for each number. 
           
          E_x_a_m_p_l_e_: 
           
          The byte 81 Hex selects command 3 and sets LED number 12 to
          light. When this byte is sent, an LED in the position marked 12
          in fig. 3 is lighting. The byte 80 Hex turns it off again. 
           
           
     6_._4_ _ _ _ _ _ _ _A_u_t_o_-_R_e_p_e_a_t_ _F_u_n_c_t_i_o_n_    6.4
           
          When a key is pressed, a character containing the output code is
          sent as shown in section 6.2. If a key is pressed for more than
          0.7 sec. the auto-repeat function starts. This function is shown
          in fig. 4. 
           
          The auto-repeat function is not wanted for all the keys. The keys
          with output code 60 Hex, 80 Hex, 81 Hex, A0 Hex, C6 Hex, C0 Hex,
          C1 Hex, CB Hex and C4 Hex are normally made without auto-repeat.
          As the keyboard is made using a microprocessor, it is possible to
          change the program in the keyboard and remove the auto-repeat
          from other keys. 
           
          Whenever a character is sent, the control A (click) is on for
          approx. 3.5 msec. Using the circuit shown in fig. 1, an acoustic
          signal is generated whenever the a key is activated on the key-
          board. 
           \f

F_                  
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
          Figure 3: LED positions layout. 
           \f

F_                  
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
          Figure 4: Auto-repeat function. 
           \f

F_7_._ _ _ _ _ _ _ _ _P_A_R_A_L_L_E_L_ _C_O_M_M_U_N_I_C_A_T_I_O_N_    7.
           
          Chapter 3 shows the output signals when parallel communication is
          selected. 
           
           
7_._1_ _ _ _ _ _ _ _I_n_t_e_r_n_a_l_ _A_S_C_I_I_ _T_a_b_l_e_    7.1
           
          Fig. 5 shows the output from the different keys. The two hexa-
          decimal numbers show the value when shift is not pressed (normal)
          and when pressed (shift). 
           
          The alphalock key is supplied with a red light showing when the
          keyboard is in alphalock mode. In this mode the shift value is
          selected for those keys which in the figure are marked with an X.
          The other keys are not effected by the alphalock key. 
           
          When the CTRL key is pressed and another key is pressed too, the
          output from this key is between 00 Hex and 1F Hex. This means
          that the 3 most significant bits are set to zero. 
           
           
7_._2_ _ _ _ _ _ _ _E_x_t_e_r_n_a_l_ _A_S_C_I_I_ _T_a_b_l_e_    7.2
           
          The keyboard is supplied with socket for an extra PROM (2716),
          which may contain another ASCII table, than the one shown in fig.
          5. A strap selects this PROM which the user has to program. 
           
           \f

F_                  
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
          Figure 5: ASCII output. 
           \f

F_       8_._ _ _ _ _ _ _ _ _K_E_Y_B_O_A_R_D_ _L_A_Y_O_U_T_S_    8.
           
          The keyboard is supplied in many layouts and in many national-
          ities. 
           
          The following 3 figures show some of the more often used ver-
          sions. 
           
          In some situations it is wanted to change the nationality of the
          keyboard simply by changing a number of keytops. 
           
          The keyboard may also be supplied in a short version (without
          numeric block). This is shown in fig. 9. 
           \f

F_                  
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
          Figure 6: RC700 Keyboard, Danish. 
           \f

F_                  
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
          Figure 7: RC855 Keyboard, Danish. 
           \f

F_                  
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
          Figure 8: RC855 Keyboard, ITT3297, UK-ASCII. 
           \f

F_                  
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
          Figure 9: RC700 Keyboard, Danish, short version. 
           \f

F_       9_._ _ _ _ _ _ _ _ _M_E_C_H_A_N_I_C_A_L_ _O_U_T_L_I_N_E_    9.
           
          Figs. 10 and 11 show the main mechanical outline for the key-
          boards. 
           \f

F_                  
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
          Figure 10: Mechanical outline, long version. 
           \f

F_                  
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
          Figure 11: Mechanical outline, short version. 
           \f

F_       A_._ _ _ _ _ _ _ _ _K_E_Y_B_O_A_R_D_ _I_D_E_N_T_I_F_I_C_A_T_I_O_N_    A.
           
          The following identification function (ID function) is not imple-
          mented on the keyboard first delivered to RC Computer. The func-
          tion is to be used only when serial mode of operation is select-
          ed. The ID function works the following way: 
           
          The Keyboard is equipped with 8 dip switches, the setting of
          which the host computer is able to read. The switches may carry
          information about the nationality of the keyboard layout etc. 
           
          The switches may be read sending a READ SWITCHES command to the
          keyboard. Then the keyboard returns the switchsetting. To be sure
          that the switchsetting is read, and not an operator pressing a
          key, the program ignores the keys for a time period when the
          switches are read. See fig. 12. 
           
          The READ SWITCHES command is: E0 Hex 
           
          The replay is: 
           
M_                _ _7_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _0_ _ 
P_                _S_7_ _ _S_6_ _ _S_5_ _ _S_4_ _ _S_3_ _ _S_2_ _ _S_1_ _ _S_0_ _ 
                  
          Bit 0 = logical one when switch 0 (SO) is on and logical zero
          when switch 0 is off, etc. 
           
           \f

F_                  
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
                   Figure 12: Timing requirements for READ SWITCHES command. 
           \f

                                                 i 
           
          F_O_R_E_W_O_R_D_ 
           
          Second edition: RCSL No 42-i1634. 
          The present paper is a revised edition of RCSL No 42-i1583
          (December 1980, Erik Jeppesen) and is updated on several points
          according to the physical diskette formats used.  
           
          Furthermore revised and more detailed procedures concerning
          diskette copying and formatting programs are given. 
           
          Knud Henningsen 
          A/S REGNECENTRALEN af 1979, February 1981 
           \f

                                                ii 
           \f

                                                 iii 
           
          T_A_B_L_E_ _O_F_ _C_O_N_T_E_N_T_S_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _P_A_G_E_ 
           
          1.  INTRODUCTION ...........................................  1 
           
          2.  SYSTEM SAVE/SYSTEM LOAD ................................  2 
              2.1  System Save .......................................  2 
              2.2  System Load .......................................  3 
           
          3.  RECONFIGURING THE PASCAL INTERPRETER ...................  4 
           
          4.  DISKETTE FORMATS .......................................  5 
              4.1  Loader Diskettes ..................................  5 
              4.2  System Diskettes ..................................  5 
           
          5.  SYSTEM UTILITIES .......................................  7 
              5.1  Utilities on the Loader Disk ......................  7 
              5.2  BACKUP Utility ....................................  7 
           
          6.  CONTROL KEYS ...........................................  9 
           
          7.  CONTENTS OF DISKETTES .................................. 10 
           
           
          A_P_P_E_N_D_I_C_E_S_: 
           
          A.  REFERENCES .............................................  13 
           
                   B.  LOADER DISKETTE COPY PROCEDURE (MAXI/MINI) .............. 14 
           
          C.  SYSTEM DISKETTE COPY PROCEDURE (MAXI) ................... 16 
           
          D.  SYSTEM DISKETTE COPY PROCEDURE (MINI) ................... 19 
           
          E.  SYSTEM CONFIGURATION PROCEDURE (MAXI/MINI) .............. 22 
           
          F.  DISKETTE PREFORMATTING PROCEDURE (MINI) ................. 24 
           \f

                                                 iv 
           \f

F_       1_._ _ _ _ _ _ _ _ _I_N_T_R_O_D_U_C_T_I_O_N_ 1.
           
          This document is intended as an introduction to the UCSD PASCAL
          system running on the RC700 microcomputer. 
           
          Only details specific to the RC700 implementation of UCSD PASCAL
          is covered. 
           
          For detailed information about the UCSD Pascal system and the
          PASCAL language please refer to the references in appendix A. 
           
          The system delivered from A/S Regnecentralen af 1979, is a CP/M
          adaptable UCSD PASCAL system from SofTech Microsystems configured
          to run on the RC700 microcomputer. 
           
          The distribution system is configurated for one drive and has no
          floating point facilities. The configuration may be changed by
          the user in choosing a suitable interpreter module, see chapter
          3. 
           
          The distribution system is too configurated for use with a Danish
                   keyboard. The user has to specify the conversion table corre-
          sponding to the actual keyboard used, which may be done when pro-
          ducing a copy of the distribution system, see chapter 2. 
           
          You are kindly advised to produce a copy of your distribution
          system as the very first thing to do.  
           
          If you have any problems with the system please contact your
          RC700 Support Center. 
           \f

F_       2_._ _ _ _ _ _ _ _ _S_Y_S_T_E_M_ _S_A_V_E_/_S_Y_S_T_E_M_ _L_O_A_D_                                          2.
           
         2_._1_ _ _ _ _ _ _ _S_y_s_t_e_m_ _S_a_v_e_ 2.1
           
          A save copy of your system may be generated in several ways. In
          this section a description is given of how to make a one to one
          copy (except for the keyboard-conversion-table) of the distribu-
          tion set delivered. When created the copy-set should be used as
          work-set and the distribution set (your master set) should be
          saved. 
           
          The MAXI-distribution set consists of two diskettes, the loader
          diskette and the system diskette. The loader diskette is a type 1
          diskette and the system diskette is a type 2 diskette (see chap-
          ter 4).  
           
          The MINI-distribution set consists of four diskettes, one loader
          diskette and three system diskettes. The system diskettes are
          configurated with different catalogs (named SYS:, SYS1: and
          SYS2:) and labelled 1 of 3, 2 of 3 and 3 of 3. 
           
          In app. B, C and D a detailed description is given of how to
          generate a copy of your system.  
           
          In a MAXI-system use the 'loader diskette copy procedure' of
          app.B (Keyboard-conversion-table generation included) and then
          the 'system diskette copy procedure' of app. C. 
           
          In a MINI-system you have to preformat your new (scratch-)disket-
          tes before used. For that reason start with the 'formatting pro-
          cedure' of app. F. Continue with the 'loader diskette copy
          procedure' of app. B and finish with the 'system diskette copy
          procedure' of app. D. 
           \f

         2_._2_ _ _ _ _ _ _ _S_y_s_t_e_m_ _L_o_a_d_                                                         2.2
           
          The UCSD PASCAL system is loaded in the following way: 
           
          1) Insert the diskette marked 'PASCAL LOADER' into drive 1 and
             press the 'RESET'-button.  
              
             The following text will be printed: 
              
                RC700 PASCAL LOADER vers. XX 
                INSERT PASCAL DISK - TYPE <RETURN> 
              
          2) Insert the PASCAL system load disk (SYS:) into drive 1, and
             type <return>. After several disk accesses, the PASCAL prompt
             line will appear, and the system is ready for use. 
              
             NOTE: The system needs 64 k bytes of memory! 
              
          The PASCAL disk to be bootstrapped must contain a secondary
          bootstrap on track zero and the following files: 
           
                SYSTEM.PASCAL   (the operating system) 
                SYSTEM.INTERP   (the PASCAL interpreter) 
                SYSTEM.MISCINFO (information about terminal handling) 
           
        The available PASCAL-programs - to example the compiler - may
          require some additional files to exist on SYS:, see chapter 7. 
           
          Please notice that your present RC700 PASCAL does not support
          neither the 'serial line input/output' nor the 'additional disk
          drives', see ref 1, p8. 
           \f

F_       3_._ _ _ _ _ _ _ _ _R_E_C_O_N_F_I_G_U_R_I_N_G_ _T_H_E_ _P_A_S_C_A_L_ _I_N_T_E_R_P_R_E_T_E_R_ 3.
           
          The initial configuration of the PASCAL interpreter (the file
          SYSTEM.INTERP) is able to handle 1 floppy disk drive and has no
          floating point capabilities. 
           
          Three more interpreter module files exist: 
             CMP2.INTERP 
                2 drives supported -  
                no floating point capabilities. 
             CPM1.FP.INTERP 
                1 drive supported 
                floating point included 
             CPM2.FP.INTERP 
                2 drives supported 
                floating point included 
           
          The INTERP modules occupies much less memory space than the
          FP.INTERP modules. 
           
          To install a new interpreter, enter the F)iler by typing F, and
          R)emove the file SYSTEM.INTERP. Then T)ransfer the appropriate
          interpreter file to the system disk, naming it SYSTEM.INTERP. The
          system may now be re-booted, thus including the new interpreter
          module. 
           
          A detailed description of the reconfiguration procedure is given
          in app. E. 
           
          NOTE: if a two disk version is generated and a system load is
          performed, a diskette must be in both drives in order to prevent
          the system from hanging on a read to the second drive.\f

F_       4_._ _ _ _ _ _ _ _ _D_I_S_K_E_T_T_E_ _F_O_R_M_A_T_S_ 4.
           
          MAXI-diskettes are delivered as preformatted diskettes. A number
          of various formats are used. In the PASCAL-system you deal with
          two types as explained below. 
           
          MINI-diskettes are delivered as non-preformatted diskettes. Thus
          they must be preformatted before use. In app. F a detailed
          description is given of how to format the diskettes. Only one
          format is used. 
           
           
4_._1_ _ _ _ _ _ _ _L_o_a_d_e_r_ _D_i_s_k_e_t_t_e_s_ 4.1
           
          Format description (one cylinder = two opposite tracks for double
          sided diskettes): 
           
          The MINI-diskette (5 1/4" floppy): 
          Single density, double sided, 128 bytes per sector, 16 sectors
          per track, 36 cylinders. 
           
          The MAXI-diskette (8" floppy): 
          Single density, single sided, 128 bytes per sector, 26 sectors
          per track, 77 cylinders. 
           
          This MAXI-diskette is referred to as a type 1 diskette. 
           
           
4_._2_ _ _ _ _ _ _ _S_y_s_t_e_m_ _D_i_s_k_e_t_t_e_s_ 4.2
           
          Format description (one cylinder = two opposite tracks for double
          sided diskettes): 
           
          The MINI-diskette: 
          Single density, double sided, 128 bytes per sector, 16 sectors
          per track, 36 cylinders. Thus it can hold 280 PASCAL blocks (512
          bytes per block).  
           \f

          The diskette is formatted with 2 to 1 interleaved sectors and
          zero track to track skew, and the first PASCAL track is track
          one.  
           
          The MAXI-diskette: 
          Dual density, double sided, 512 bytes per sector, 15 sectors per
          track, 62 cylinders. Thus it can hold 1830 PASCAL blocks (512
          bytes per block). This MAXI-diskette is referred to as a type 2
          diskette  
           
          The diskette is formatted with 2 to 1 interleaved sectors and
          zero track to track skew, and the first PASCAL track is track
          one. 
           
          Diskettes not having the proper interleaving ratio and track to
          track skew must be reformatted using the DISKCHANGE program (see
          ref. 1) before used by the system. 
           
           \f

F_       5_._ _ _ _ _ _ _ _ _S_Y_S_T_E_M_ _U_T_I_L_I_T_I_E_S_ 5.
           
          The RC700 PASCAL system is supplied with some utility programs,
          which are not part of the standard UCSD PASCAL system. They are
          described in this section.  
           
           
5_._1_ _ _ _ _ _ _ _U_t_i_l_i_t_i_e_s_ _o_n_ _t_h_e_ _L_o_a_d_e_r_ _D_i_s_k_ 5.1
           
          If you in response to the prompt 'INSERT PASCAL DISK - TYPE
          <RETURN>' type <esc> instead of <return>, the system will reply
          with the prompt 'PROGRAM?'. 
           
          You have three choises to answer this question: 
           
          1) 'PASCAL' returns to the PASCAL Loader. 
           
          2) 'FORMAT' prompts you with 'INSERT DISK - TYPE <RETURN>'. The
             disk inserted is formatted according to the format given in
             chapter 4. 
           
          NOTE: This is only relevant for MINI-diskettes. MAXI-diskettes
          cannot be formatted in this way.  
           
          3) 'SYSTEM' generates a new load disk. It can also be generated
             by copying the disk, but this is a faster way. Just insert a
             disk, when the prompt 'INSERT DISK - TYPE <RETURN>' appears. 
           
          NOTE: A_ _P_a_s_c_a_l_ _S_y_s_t_e_m_ _d_i_s_k_ _c_a_n_n_o_t_ _b_e_ _g_e_n_e_r_a_t_e_d_ _i_n_ _t_h_i_s_ _w_a_y_. 
           
           
5_._2_ _ _ _ _ _ _ _B_A_C_K_U_P_ _U_t_i_l_i_t_y_ 5.2
           
          The backup program BACKUP.CODE copies a whole disk. It asks for
          the source and destination unitnumbers for the transfer. The
          program will work on both one and two drive systems.  
           \f

          In dual drive systems the drives are named '#4' (drive 1) and
          '#5' (drive 2), ref. 1, p8. 
           
          On a one drive system it is a little more tedious, as you have to
          interchange the source and destination disks a number of times
          (refer to app. D).  
           
                   To execute the backup program, type X and BACKUP at the Command
          level (the disk containing BACKUP.CODE must be on-line, refer to
          chapter 7). 
           \f

F_       6_._ _ _ _ _ _ _ _ _C_O_N_T_R_O_L_ _K_E_Y_S_ 6.
           
          This chapter describes the control keys used in the RC700
          implementation of UCSD PASCAL.  
           
          For details about the function of the keys please refer to ref.
          1. 
           
                                RC702              RC701 
          EDITOR ACCEPT KEY:    CTRL-E or          CTRL-E 
          EDITOR ESCAPE KEY:    ESC                CTRL-Æ 
          CURSOR DOWN:                             CTRL-J 
          CURSOR LEFT: 
          CURSOR RIGHT:                            CTRL-X 
          CURSOR UP:                               CTRL-Z 
          KEY TO DELETE CHAR: 
          KEY FOR FLUSH:        CTRL-F             CTRL-F 
          KEY FOR STOP:         CTRL-S             CTRL-S 
          KEY FOR BREAK:        CTRL-B             CTRL-B 
          TAB:                                     CTRL-I 
           \f

F_       7_._ _ _ _ _ _ _ _ _C_O_N_T_E_N_T_S_ _O_F_ _D_I_S_K_E_T_T_E_S_ 7.
           
          The system is distributed on two MAXI-diskettes or four
          MINI-diskettes. The MAXI distribution set consists of one Pascal
          loader diskette and one Pascal System diskette (volume id: SYS:).
          The MINI distribution set consists of one Pascal loader diskette
          and three Pascal System diskettes (volume id: SYS:, SYS1: and
          SYS2:). The Pascal System load diskette (see chapter 2) is the
          one marked SYS:. 
           
          The following is a list of the files on the distribution
          diskettes with references to the appropriate documentation. The
          files listed under volume id SYS1:, SYS2: are incorporated in
          SYS: on the MAXI-diskette. 
           
          SYS: 
          SYSTEM.PASCAL         User's Manual (ref. 1) p.5 
          SYSTEM.INTERP         This document, chapter 3 
          SYSTEM.MISCINFO       User's Manual p.259 
          SYSTEM.FILER          -             p.7 
          SYSTEM.EDITOR         -             p.31 
          SYSTEM.COMPILER       -             p.69 
          SYSTEM.SYNTAX         -             p.70 
          DISKCHANGE.CODE       -             p.I-9, I-15 
          DISKSIZE.CODE         -             p.I-11 
          BOOTER.CODE           -             p.293 
           
          SYS1:(MINI)
          YALOE.CODE            User's Manual p.57 
          SYSTEM.LINKER         -             p.77 
          SYSTEM.LIBRARY                      p.78 
          SYSTEM.ASSEMBLER      -             p.129 
          Z80.OPCODES           -             p.129 
          Z80.ERRORS            -             p.129 
          8080.ASSEMBLER        -             p.129 
          8080.OPCODES          -             p.129 
          8080.ERRORS           -             p.129 
          LIBRARY.CODE          -             p.249 
          LIBMAP.CODE           -             p.309 \f

          PATCH.CODE            See next file 
          PATCH.DOC.TEXT        Replaces section 4.4 in User's Manual. 
          BACKUP.CODE           This document, section 5.2. 
           
                   SYS2: MINI 
          CPM1.INTERP 
M_m_m_          CPM2.INTERP 
                                This document, chapter 3 
P_p_p_             CPM1.FP.INTERP 
          CPM2.FP.INTERP 
M_m_m_          MARKDUPDIR.CODE 
                                User's Manual p.301 
P_p_p_             COPYDUPDIR.CODE 
M_m_m_             DISASM.II.CODE 
                                User's Manual p.303 
P_p_p_             OPCODES.II.0 
          RELOC.CODE            See RELOC.DOC.TEXT 
                   RELOC.DOC.TEXT 
M_m_m_             FLIPCODE.CODE 
                                See FLIP.DOC.TEXT 
P_p_p_             FLIPDIR.CODE 
          FLIP.DOC.TEXT 
           
          Notes: 
          Running the PASCAL compiler in a floating point configurated
          system requires the existence of the following two files on SYS: 
           
             SYSTEM.LIBRARY and SYSTEM.LINKER 
           
          These files should be tranferred from SYS1: in case a
          MINI-diskette system is used. In case a single drive system is
          used, the user disk-space is approximately 18 blocks. 
           
                    
           \f

F_                  
           \f

F_       A_._ _ _ _ _ _ _ _ _R_E_F_E_R_E_N_C_E_S_ A.
           
          1  UCSD PASCAL 
               User's Manual 
               SofTech Microsystems/RC Computer, 1980. 
           
          2  Beginner's Manual for the UCSD PASCAL System  
               Kenneth L. Bowles 
               Byte Books (McGraw-Hill), 1979. 
           
          3  PASCAL User Manual and Report 
               Kathleen Jensen and Niklaus Wirth 
               Springer-Verlag, New York, 1975. 
           \f

F_       B_._ _ _ _ _ _ _ _ _L_O_A_D_E_R_ _D_I_S_K_E_T_T_E_ _C_O_P_Y_ _P_R_O_C_E_D_U_R_E_ _(_M_A_X_I_/_M_I_N_I_)_ B.
           
          Please notice that in a MINI-diskette system, the diskettes to
          use must be preformatted using the formatting procedure described
          in app. F.  
              
          The execution time listed in '()' is that for MINI-diskette
          systems. 
              
          1) Insert your Master Loader Diskette in drive 1 (1 of 2) and
             press the RESET-button. 
              
             Text displayed within appr. 8 (10) secs: 
             'INSERT PASCAL DISK - TYPE <RETURN>' 
              
          2) Push the 'ESC'-key. 
              
             Text displayed immediately (the u_t_i_l_i_t_y_-_p_r_o_m_p_t_-_l_i_n_e_)_: 
             'RC700 utility: F(ormat, S(ystem, C(onversion, Q(uit?' 
              
          3) Type 'C'. 
              
             Text displayed immediately: 
             '1: Danish 
              2: Swedish 
              . 
              . 
              . 
              Conversion table number ?' 
              
          4) Type 'number' (1, 2, ...). 
              
             Text displayed immediately: the u_t_i_l_i_t_y_-_p_r_o_m_p_t_-_l_i_n_e_.  
              
          5) Type 'S'. 
              
             Text displayed immediately: 
             'INSERT DISK - TYPE <RETURN>' 
              \f

          6) Remove the diskette inserted in drive 1. In a MAXI-diskette
             system insert an empty (scratch-) diskette of type 1 in drive
             1. In a MINI-diskette system insert a preformatted diskette in
             drive 1. Push the 'RETURN'-key (<-). 
              
             Text displayed with appr. 15 (10) secs: The u_t_i_l_i_t_y_-_p_r_o_m_p_t_-
             l_i_n_e_. 
              
                   7) A new Loader Diskette configurated for use with your
             National-Character-Set has been generated. Save your master
             diskette and use this copy from now. Continue from 5) if you
             want to generate additional copies. 
              \f

F_       C_._ _ _ _ _ _ _ _ _S_Y_S_T_E_M_ _D_I_S_K_E_T_T_E_ _C_O_P_Y_ _P_R_O_C_E_D_U_R_E_ _(_M_A_X_I_)_                            C.
           
          1) Insert your Loader Diskette (your own copy) in drive 1 (1 of
             2) and press the RESET-button. 
              
             Text displayed within appr. 8 secs.: 
             'INSERT PASCAL DISK - TYPE <RETURN>' 
              
          2) Remove your Loader Diskette and insert your Master System
             Diskette in drive 1. Push the 'RETURN'-key (<-). 
              
             Text displayed within appr. 2 secs.: 
             'READING SECONDARY BOOTSTRAP' 
              
             Text displayed within appr. 10 secs. (the c_o_m_m_a_n_d_-_p_r_o_m_p_t_-_
             l_i_n_e_): 
             'Command: E(dit, R(un, F(ile, C(omp, L(ink, X(ecute, ...' 
              
          3) Type 'x' (ref. 1, p3) 
              
             Text displayed immediately: 
             'Execute what file?' 
              
          4) Type 'backup' and push the 'RETURN'-key 
              
             Text displayed immediately: 
             'RC700 Backup program .... 
             Source drive (4,5)?' 
              
          5) Type '4' and push the 'RETURN'-key. 
              
             Text displayed immediately: 
             'Destination drive (4,5)?' 
              
          6) Type '4' and push the 'RETURN'-key. 
              
             Text displayed immediately: 
             'Insert source disk-type <RETURN>' 
              \f

                   7) Your Master System Diskette is already inserted.  
             Push the 'RETURN'-key. 
              
             Text displayed within appr. 3 secs.: 
             'Insert destination disk-type <RETURN>' 
              
          8) Remove your source diskette from drive 1 and insert an empty
             (scratch-)diskette of type 2 in drive 1 and push the
             'RETURN'-key. 
              
             Text displayed within appr. 3 secs.: 
             'Insert source disk - type <RETURN>' 
              
                   9) From now just follow the commands given by the program
             (textpart 7 and 8). A copy of your System Diskette is then
             generated within appr. 30 passes. When finished the program
             asks you to insert your system diskette (your own copy as
             well) and type <RETURN>. 
              
             Text displayed: 
             'Insert system disk-type <return>' 
              
         10) Push the <RETURN>-key. 
              
             Text displayed within appr. 2 secs.: The c_o_m_m_a_n_d_-_p_r_o_m_p_t_-_ 
             l_i_n_e_. 
              
         11) At this point you may decide to start using the system
             diskette or you may ask for a check-read of your diskette. In
             the latter case proceed with the following steps. 
              
         12) Type 'F'. (ref 1, p3) 
              
             Text displayed within 2 secs. (f_i_l_e_r_-_p_r_o_m_p_t_-_l_i_n_e_ (1)): 
             'Filer: G(et, S(ave, W(hat, ...' 
              \f

         13) Type '?'. (ref. 1, p2) 
              
             Text displayed immediately (f_i_l_e_r_-_p_r_o_m_p_t_-_l_i_n_e_ (2)): 
             'Filer: B(ad-blks, E(xt-dir, K(runch, ...' 
              
                  14) Type 'B'. (ref. 1, p25) 
              
             Text displayed immediately: 
             'Bad block scan of what vol?' 
              
         15) Type '#4' or 'Sys:' and push the 'RETURN'-key. 
              
             Text displayed immediately: 
             'scan for 1830 blocks? (Y/N)' 
              
         16) Type 'y'. A Bad-Block-Scan is now executed. 
              
             Text displayed within 1 min.: 
             '0 bad blocks' 
              
         17) Now the execution has finished and you enter the
             f_i_l_e_r_-_p_r_o_m_p_t_-_l_i_n_e_ (1) again. To return to the Command-level
             type 'Q' (the c_o_m_m_a_n_d_-_p_r_o_m_p_t_-_l_i_n_e_ is displayed). Save your
             master diskette and start to use the PASCAL-System on your new
             system diskette. 
              \f

F_       D_._ _ _ _ _ _ _ _ _S_Y_S_T_E_M_ _D_I_S_K_E_T_T_E_ _C_O_P_Y_ _P_R_O_C_E_D_U_R_E_ _(_M_I_N_I_)_                               D.
           
          Please notice that in a MINI-diskette system, the diskettes to
          use must be preformatted using the formatting procedure described
          in app. F. 
              
          1) Insert your Loader Diskette (your own copy) in drive 1 (1 of
             2) and press the RESET-button. 
              
             Text displayed within appr. 10 secs.: 
             'INSERT PASCAL DISK - TYPE <RETURN>' 
              
         2a) Remove your Loader Diskette and insert your Master System
             Diskette labelled 1 of 3 in drive 1. Push the 'RETURN'-key
             (<-). 
              
             Text displayed within appr. 2 secs.: 
             'READING SECONDARY BOOTSTRAP' 
              
             Text displayed within appr. 15 secs. (the c_o_m_m_a_n_d_-_p_r_o_m_p_t_-_
             l_i_n_e_): 
             'Command: E(dit, R(un, F(ile, C(omp, L(ink, X(ecute, ...' 
              
         2b) Remove the diskette inserted in drive 1 and insert your Master
             System Diskette labelled 2 of 3. 
              
          3) Type 'x' (ref. 1, p3) 
              
             Text displayed immediately: 
             'Execute what file?' 
              
          4) Type 'SYS1:backup' and push the 'RETURN'-key 
              
             Text displayed immediately: 
             'RC700 Backup program .... 
             Source drive number' 
              \f

          5) Type '4' and push the 'RETURN'-key. 
              
             Text displayed immediately: 
             'Destination drive number' 
              
          6) Type '4' and push the 'RETURN'-key. 
              
             Text displayed immediately: 
             'Insert source disk-type <RETURN>' 
              
                   7) Remove your diskette inserted in drive 1 and insert the one
             you want to copy (1 of 3, 2 of 3 or 3 of 3) 
             Push the 'RETURN'-key. 
              
             Text displayed within appr. 5 secs.: 
             'Insert destination disk-type <RETURN>' 
              
          8) Remove your source diskette from drive 1 and insert an
             preformatted diskette in drive 1. Push the 'RETURN'-key. 
              
             Text displayed within appr. 3 secs.: 
             'Insert source disk - type <RETURN>' 
              
                   9) From now just follow the commands given by the program
             (textpart 7 and 8). A copy of your System Diskette is then
             generated within appr. 5 passes. When finished the program
             asks you to insert your system diskette 'SYS:', that is 1 of 3
             (your own copy 1 of 3 as well) and type <RETURN>. 
              
             Text displayed: 
             'Insert system disk-type <return>' 
              
         10) Insert the diskette labelled 1 of 3 in drive 1 and push the
             <RETURN>-key. 
              
             Text displayed within appr. 2 secs.: The c_o_m_m_a_n_d_-_p_r_o_m_p_t_-_ 
             l_i_n_e_. 
              \f

         11) At this point you may decide to start using the system
             diskette or you may ask for a check-read of your diskette. In
             the latter case proceed with the following steps. 
              
         12) Type 'F'. (ref 1, p3) 
              
             Text displayed within 2 secs. (f_i_l_e_r_-_p_r_o_m_p_t_-_l_i_n_e_ (1)): 
             'Filer: G(et, S(ave, W(hat, ...' 
              
         13) Type '?'. (ref. 1, p2) 
              
             Text displayed immediately (f_i_l_e_r_-_p_r_o_m_p_t_-_l_i_n_e_ (2)): 
             'Filer: B(ad-blks, E(xt-dir, K(runch, ...' 
              
                  14) Type 'B'. (ref. 1, p25) 
              
             Text displayed immediately: 
             'Bad block scan of what vol?' 
              
         15) Type '#4' or 'SYS:' and push the 'RETURN'-key. 
              
             Text displayed immediately: 
             'scan for 280 blocks? (Y/N)' 
              
         16) Type 'y'. A Bad-Block-Scan is now executed. 
              
             Text displayed within 35 secs.: 
             '0 bad blocks' 
              
         17) Now the execution has finished and you enter the
             f_i_l_e_r_-_p_r_o_m_p_t_-_l_i_n_e_ (1) again. To return to the Command-level
             type 'Q' (the c_o_m_m_a_n_d_-_p_r_o_m_p_t_-_l_i_n_e_ is displayed). Save your
             master diskette. From now repeat the procedure starting with
             point 2b) until you have generated all three copies (1 of 3, 2
             of 3 and 3 of 3). Hereafter you may start to use the
             PASCAL-system on your new diskettes. 
              \f

F_       E_._ _ _ _ _ _ _ _ _S_Y_S_T_E_M_ _C_O_N_F_I_G_U_R_A_T_I_O_N_ _P_R_O_C_E_D_U_R_E_ _(_M_A_X_I_/_M_I_N_I_)_ E.
           
          The execution time listed in '()' is that for MINI-diskette
          systems. 
           
           1) Insert your Loader Diskette in drive 1 (1 of 2) and type
             <RETURN>. 
              
             Text displayed within appr. 8 (10) secs.: 
             'INSERT PASCAL DISK - TYPE <RETURN>' 
              
          2) Remove your Loader Diskette and insert your System Diskette
             (in MINI-diskette systems the diskette labelled 1 of 3) in
             drive 1. Type <RETURN>. 
              
             Text displayed within appr. 2 secs.: 
             'READING SECONDARY BOOTSTRAP' 
              
             Text displayed within appr. 10 (15) secs. (the c_o_m_m_a_n_d_-_p_r_o_m_p_t_-
             l_i_n_e_)_ 'Command: E(dit, R(un, F(ile, C(omp, L(ink, X(ecute, ...' 
              
          3) Type 'F' (ref 1, p3) 
              
             Text displayed within 2 secs. (the f_i_l_e_r_-_p_r_o_m_p_t_-_l_i_n_e_ (1)): 
             Filer: G(et, S)ave, W(hat, N(ew, L(dir, R(em, C(hng, T(rans, ...' 
              
          4) Type 'T' (ref 1, p21) 
              
             Text displayed immediately: 
             'Transfer what file?' 
              
          5) In MAXI-diskette systems type 'parameter' (refer to chapter  ),
             for instance: 'cpm2.fp.INTERP'. type <RETURN>. 
              
             In MINI-diskette systems remove system diskette 1 of 3 and
             insert system diskette 3 of 3. Type 'parameter', for instance:
             'SYS2:cpm2.fp.INTERP'. Type <RETURN>.  
              \f

             Text displayed immediately: 
             'To where?' 
              
         6a) Type 'SYSTEM.INTERP' and <RETURN>. 
              
             In MINI-diskette systems the following text and action 6b are
             added: 
              
             Text displayed within appr. 5 secs.: 
             'Put in SYS: 
             Type <space> to continue' 
              
         6b) Remove the diskette inserted in drive 1 and insert the
             diskette 1 of 3 in drive 1. Type <space>. 
              
             Text displayed within 3 secs.: 
             'Remove old SYS:SYSTEM.INTERP?' 
              
                  7a) Type 'y'. 
              
             In MINI-diskette systems the following 2 text-parts and action
             7b are added:  
              
             Text displayed within appr. 5 secs.: 
             'Put SYS2: in unit # 4 
             Type <space> to continue' 
              
         7b) Insert the diskette labelled 3 of 3 in drive 1. Type <space> 
              
             Text displayed within 1 sec.: 
             'Put SYS: in unit # 4 
             Type <space> to continue' 
              
             Text displayed within 3 secs.: 
             'SYS:CPM2.FP.INTERP   - -> SYS:SYSTEM.INTERP' 
              
          8) Your new system is now configurated and ready for use when
             autoloaded (step 1 and 2 above). 
              \f

F_       F_._ _ _ _ _ _ _ _ _D_I_S_K_E_T_T_E_ _P_R_E_F_O_R_M_A_T_T_I_N_G_ _P_R_O_C_E_D_U_R_E_ _(_M_I_N_I_)_ F.
           
          1) Insert your Master Loader Diskette in drive 1 (1 of 2) and
             press the RESET-button. 
              
             Text displayed within appr. 10 secs: 
             'INSERT PASCAL DISK - TYPE <RETURN>' 
              
          2) Push the 'ESC'-key. 
              
             Text displayed immediately (the u_t_i_l_i_t_y_-_p_r_o_m_p_t_-_l_i_n_e_)_: 
             'RC700 utility: F(ormat, S(ystem, C(onversion, Q(uit?' 
              
          3) Type 'F'. 
              
             Text displayed immediately: 
             'INSERT DISK - TYPE <RETURN>' 
              
          4) Remove the diskette inserted in drive 1. and insert an empty
             (scratch-)diskette in drive 1. Push the 'RETURN'-key (<-). 
              
             Text displayed with appr. 35 secs: The u_t_i_l_i_t_y_-_p_r_o_m_p_t_-_l_i_n_e_. 
              
                   5) A preformatted Diskette has been generated. Continue from 3)
             until a whole set (4 diskettes) has been generated. 
              \f

«eof»