|
DataMuseum.dkPresents historical artifacts from the history of: CP/M |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CP/M Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 171392 (0x29d80) Types: TextFile Names: »D55«
└─⟦1e8064b49⟧ Bits:30005867/disk07.imd Dokumenter (RCSL m.m.) └─⟦this⟧ »D55«
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»