|
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: 150656 (0x24c80) Types: TextFile Names: »D57«
└─⟦6966c2393⟧ Bits:30005867/disk08.imd Dokumenter (RCSL m.m.) └─⟦this⟧ »D57«
i F_O_R_E_W_O_R_D_ This manual describes the logic functioning of the VDC201 con- troller. However, as the VDC291 is functionally equivalent to the VDC201 please read VDC201/VDC291 wherever VDC201 is mentioned. Jens Peter Jakobsen A/S Regnecentralen af 1979, June 1980 \f ii \f iii T_A_B_L_E_ _O_F_ _C_O_N_T_E_N_T_S_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _P_A_G_E_ 1. MAIN CHARACTERISTICS ................................. 1 1.1 Short Description ............................... 1 1.2 Data Formats .................................... 3 1.3 Applicable Documents ............................ 3 2. PERFORMANCE CHARACTERISTICS .......................... 4 3. LOGIC SPECIFICATION .................................. 5 3.1 Logic Survey .................................... 5 3.2 Controller Registers ............................ 6 3.2.1 Subdevice Registers ...................... 8 3.2.2 Low Level Registers ...................... 12 3.2.3 High Level Registers ..................... 13 3.2.4 Internal Registers ....................... 14 3.3 Low Level Commands .............................. 14 3.3.1 Start/Stop Scan .......................... 14 3.3.2 Set Retry count/Timeout .................. 15 3.3.3 Reset Subdevice .......................... 16 3.3.4 Set TX-State ............................. 16 3.3.5 Set Read Buffer .......................... 17 3.3.6 Write Buffer ............................. 18 3.3.7 Secondary Write .......................... 19 3.3.8 Secondary Read ........................... 20 3.3.9 Read Controller Register ................. 21 3.3.10 Controller Reset ......................... 21 3.4 High Level Status/Events ........................ 22 \f iv \f 1_._ _ _ _ _ _ _ _ _M_A_I_N_ _C_H_A_R_A_C_T_E_R_I_S_T_I_C_S_ 1. 1_._1_ _ _ _ _ _ _ _S_h_o_r_t_ _D_e_s_c_r_i_p_t_i_o_n_ 1.1 The VDC201 is a data communication controller intended for data transportation between the RC3503/RC3502 computer and up to 8 - RC850 data terminals connected to a common twisted pair. A minimum configuration is shown in fig. 1.1. The VDC201 contains a microprogrammed controller which executes most of the functions in connection with polling the terminals, retransmission of unacknowledged data blocks, and DMA-transfer of data between memory and controller. The two-wire communication line operates in a high speed (250 K BAUD) half duplex polling mode as defined in the Reference manual for the VDC201 line protocol. \f Figure 1.1: Minimum configuration. \f 1_._2_ _ _ _ _ _ _ _D_a_t_a_ _F_o_r_m_a_t_s_ 1.2 The VDC201 transfers data blocks between CPU - memory and a device connected to the high speed serial line. The correspondance between data placement in memory and order of transmission is as indicated in fig. 1.2.1. MEMORY LINE Figure 1.2.1 The line format is further described in the "CIRCUIT Protocol, Reference Manual". The memory is always read and written (by VDC201) one full word at a time therefore the buffer start address must be an even address. 1_._3_ _ _ _ _ _ _ _A_p_p_l_i_c_a_b_l_e_ _D_o_c_u_m_e_n_t_s_ 1.3 PHILIPS/SIGNETICS, MULTI-PROTOCOL COMMUNICATIONS CONTROLLER (MPCC) 2652/2652-1 RCSL No 31-D 598: Circuit Protocol, Reference Manual. \f 2_._ _ _ _ _ _ _ _ _P_E_R_F_O_R_M_A_N_C_E_ _C_H_A_R_A_C_T_E_R_I_S_T_I_C_S_ 2. The number of terminals connected to a single controller can be up to 8 dependant on cable length and response time requirements. Transmission speed: 250 k baud Data rate: 26-31 k bytes/sec dependant on data (automatic zero insertion). Poll-response exchange time/terminal: 0,5 mS + Terminal response time + Data transfer time \f 3_._ _ _ _ _ _ _ _ _L_O_G_I_C_ _S_P_E_C_I_F_I_C_A_T_I_O_N_ 3. 3_._1_ _ _ _ _ _ _ _L_o_g_i_c_ _S_u_r_v_e_y_ 3.1 The VDC201 is operated from the host CPU (RC3502 or RC3503) by the normal I/O Instructions Read Status, Write Control, R/W Word, and R/W Block of Words. VDC occupies two of the 128 device numbers in the CPU selected by switches on the VDC201 circuit board. In the following the two interrupt levels (interrupt level = device number) will be referred to as LEVEL LOW and LEVEL HIGH corresponding to level 2*P+0 and 2*P+1 where P is 0,1,2...,63. Each level consists of four 16 bit registers of which only the read registers are used on the high level. 0 15 MSB LSB WCC WRITE COMMAND RSC READ STATUS WWC/WBW WRITE DATA RWC/RBW READ DATA The registers are used for communicating between controller and driver program. The LOW LEVEL registers are used to receive commands from the driver and to deliver controller information that is subdevice independent such as the contents of controller work registers. The LOW LEVEL interrupt is set by the controller when it has accepted a command or part of a command. To prevent loosing interrupts, the controller will not try to set an interrupted level before it has been cleared by the CPU. The HIGH LEVEL is used to signal controller events such as data buffer received or errors to the driver program. The controller writes an event/error code in the high level status register and\f then sets the high level interrupt. Until this level has been cleared by the driver no further events can be signalled. Internally the controller contains a state and receive buffer description for each of the eight possible subdevices (terminals, secondary stations). By scanning these descriptions the controller services each sub- device in succession. The operation performed on a subdevice de- pends on its state variable and will be one of the following: 1. I_F_ _i_n_a_c_t_i_v_e_ then go on to next subdevice. 2. I_F_ _r_e_s_e_t_ then send a reset frame to the terminal which should answer within a timeout time if it is active. 3. I_F_ _a_c_t_i_v_e_ then perform a Poll-Response exchange i.e. send frame, change line direction, wait, and receive answer frame. Before the controller goes on to the next subdevice, it executes any command that may have been received while servicing the last subdevice. Most commands will only indirectly change the controller opera- tions by modifying subdevice state descriptions. 3_._2_ _ _ _ _ _ _ _C_o_n_t_r_o_l_l_e_r_ _R_e_g_i_s_t_e_r_s_ 3.2 The controller contains a register file of 64 words (16 bits). 32 of these are used for saving the state and buffer description of up to eight subdevices (see fig. 3.2.1). Each subdevice has four registers, one state register and 3 buffer description registers. The last 32 registers are used as work area by the controller and are normally not of interest to the driver program. Of these the registers 56 to 63 serve as data exchange registers for the host I/O-instructions. \f Figure 3.2.1: Controller registers. \f 3_._2_._1_ _ _ _ _ _S_u_b_d_e_v_i_c_e_ _R_e_g_i_s_t_e_r_s_ 3.2.1 The state register has the following layout: R_E_G_I_S_T_E_R_ _N_U_M_B_E_R_: SUBDEV * 4 + 0 B_i_t_ _0_-_4_:_ _T_X_-_S_T_A_T_E_ These bits will be transmitted as C-field next time the control- ler starts to operate on the subdevice. R_R_ _(_B_i_t_ _0_)_ _R_e_c_e_i_v_e_ _R_e_a_d_y_ 0 : Controller is unable to receive data. 1 : Controller has a valid receive buffer and will accept data. RR is initially reset, it is set when the controller receives a Set Read Buffer command. It is reset again when the buffer con- tains data from an error free transfer. S_R_ _(_B_i_t_ _1_)_ _S_e_n_d_ _R_e_a_d_y_ 0 : Controller has no transmit data (buffer) 1 : Transmit data buffer exists and will be sent if RRDdTUu (Rx-state bit 8) is set. SR in initially reset, it is thereafter set or reset by the dri- ver using the commands Set Tx-state or Write Buffer. \f S_N_ _(_B_i_t_ _2_)_ _S_e_q_u_e_n_c_e_ _N_u_m_b_e_r_ Reset to 0 at power up and when a reset subdevice is issued. It is updated by the controller each time an error free answer is received from the terminal. SN is then set to the opposite of the M_M_m_ SN (bit 11) received from the terminal. P_P_p_ T U_ _a_n_d_ _X_ _(_B_i_t_ _3_ _a_n_d_ _4_)_ _U_s_e_r_ _B_i_t_s_ These bits are not used by the controller and do not affect its operation. They are exclusively controlled by driver software using a write TX-state or write buffer command. D_5_ _(_B_i_t_ _5_)_ _D_a_t_a_ _S_e_n_t_ Indicates wether information has been transmitted, but not ac- knowledged. It is reset by a write TX-state, write buffer, or reset subdevice command. R_ _(_B_i_t_ _6_)_ _T_r_y_ _R_e_s_e_t_ If A = 1 R has no effect. 1 : After power up, normal state. 0 : The controller will issue a reset to the subdevice (termi- nal) in each 8>th scanning round until the terminal responds. When this happens R is reset and High Level is interrupted. The error/event code tells wether the subdevice responded correctly (Answer reset) or not. A_ _(_B_i_t_ _7_)_ _A_c_t_i_v_e_ 0 : Subdevice is inactive and will not be polled, but may try reset if R = 0 1 : Subdevice will be polled and data transferred if allowed by M_M_m_ RR and RR state bits. P_P_p_ T A is reset by any event causing interrupt at the high level. \f B_i_t_ _8_-_1_2_:_ _R_X_-_S_T_A_T_E_ These bits hold the five most significant bits of the C-field in the last received error free frame. They reflect the data buffer flags in the subdevice (terminal) R_R_ _ _(_B_i_t_ _8_)_ _R_e_c_e_i_v_e_ _R_e_a_d_y_ _(_T_e_r_m_i_n_a_l_)_ 0 : Terminal is unable to receive data, i.e. Data Field in next frame out must be empty. 1 : Terminal has a data buffer ready to accept data. S_R_ _ _(_B_i_t_ _9_)_ _S_e_n_d_ _R_e_a_d_y_ _(_T_e_r_m_i_n_a_l_)_ 0 : Terminal has no data. 1 : Terminal has input data but the controller RR (bit 0) must be set before data can be transferred. S_N_ _ _(_B_i_t_ _1_0_)_ _S_e_q_u_e_n_c_e_ _N_u_m_b_e_r_ _(_T_e_r_m_i_n_a_l_)_ Received Sequence number must be equal to the transmitted sequence number (bit 3), else the frame will be rejected. U_ _a_n_d_ _X_ _(_b_i_t_s_ _1_1_ _a_n_d_ _1_2_)_ _U_s_e_r_ _b_i_t_s_ _f_r_o_m_ _t_e_r_m_i_n_a_l_ Equivalent to bits 3 and 4: B_i_t_ _1_3_-_1_5_ _N_o_t_ _d_e_f_i_n_e_d_ Used internally by the controller. Read buffer description consists of the following 3 registers. \f B_i_t_ _0_-_1_0_ _a_n_d_ _1_5_ are not defined. B_u_f_f_e_r_ _S_e_g_m_e_n_t_ _(_b_i_t_ _1_1_-_1_4_)_ Buffer segment (= 64 K byte) is the four most significant bits of the buffer address. - The first and last addresses of a buffer must be within the same memory segment. - NOT changed by the controller. 0_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _1_5_ _ _ _ _ _ _ _ _B_U_F_F_E_R_ _S_T_A_R_T_ _ _ _ _ _ _ _ _ _ _ _0_ Reg No = SUBDEV * 4 + 2 BUFFER START ADDRESS (bit 0-15) - Must be an even address - NOT changed by the controller 0_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _1_5_ _ _ _ _ _ _ _ _B_U_F_F_E_R_ _S_I_Z_E_ _ _ _ _ _ _ _ _ _ _ _ _ _ Reg No = SUBDEV * 4 + 3 Buffer Size is the maximum number of bytes the controller may place in memory from Buffer Start address and up. Buffer size must be an even number of bytes (bit 15 = 0) as the controller will not access less than one word (16 bit) at a time. Memory module, Buffer Start address and Buffer Size can be changed by a Set Read Buffer command. \f 3_._2_._2_ _ _ _ _ _L_o_w_ _L_e_v_e_l_ _R_e_g_i_s_t_e_r_s_ 3.2.2 The internal registers 56 to 59 can be accessed directly both from the controller and from low level I/O-instructions. They are used for delivering commands to the controller and for passing the associated data as determined by the command. The registers have the following general layout: WRITE CONTROL REGISTER The control register commands are described in section 3.3. The status register shows in bit 12-15 which subdevice is being serviced by the controller at the time it is read. Bit 8, scan on allows the controller to service subdevices. If it is 0 then the controller will only receive commands. Bit 0 and 4-7 are used during a write buffer command to restore the scan sequence after the Write command is completed. \f 3_._2_._3_ _ _ _ _ _H_i_g_h_ _L_e_v_e_l_ _R_e_g_i_s_t_e_r_s_ 3.2.3 Like the low level registers these registers can be accessed both from the controller and from high level I/O-instructions. The two read registers are used as follows: READ STATUS REGISTER READ WORD REGISTER The controller will only update these registers when a value of all ones has been written in Write Control Register. After updat- ing the registers the high level interrupt is set. Following this interrupt the Write Control Register should be set to all ones as soon as the register information has been used otherwise the controller will be delayed in its operation. Read status Register contents are described in section 3.4. Read Word Register normally contains the last (in time) command which need not concern the interrupting subdevice. Only in case of an illegal command will the correspondance be certain. If a a new interrupt situation occurs before the last interrupt has been acknowledged then the controller will be halted (unable to receive commands) until high level is released. If a valid data block has been received from a subdevice then bit 6, RXDAT in the status register will be set and the read word re- gister will contain the number of unused bytes in the buffer. The Write Data Register is not used. \f 3_._2_._4_ _ _ _ _ _I_n_t_e_r_n_a_l_ _R_e_g_i_s_t_e_r_s_ 3.2.4 Registers No 32 to 55 are reserved for internal use by the con- troller as workspace. Some of them are modified by commands from low level (TX-buffer, Retry, and Timeout). They can be read by a Read Controller Register command, but are normally not of interest to the driver. 3_._3_ _ _ _ _ _ _ _L_o_w_ _L_e_v_e_l_ _C_o_m_m_a_n_d_s_ 3.3 The WCC commands have the following layout: 0_ _ _ _ _ _ _ _ _ _ _ _ _ _7_ _8_ _ _ _ _ _ _ _ _ _ _ _ _ _ _1_5_ WCC _ _ _P_A_R_A_M_E_T_E_R_ _ _ _ _C_O_M_M_A_N_D_ _ _ _S_U_B_D_E_V_._ Reg No = 59 Depending on the command this may be followed by a write- or read block of words. 3_._3_._1_ _ _ _ _ _S_t_a_r_t_/_S_t_o_p_ _S_c_a_n_ 3.3.1 FORMAT: S_ _=_ _0_ : Stops scanning when current subdevice terminates its operation (which may or may not interrupt High Level). Low Level is interrupted when scanning has been stopped. Subdevice registers can now be read by a Read Controller Register command. \f Controller does nothing until a new command is received. Scan is stopped after power up. S_ _=_ _1_ _:_ _S_t_a_r_t_ _s_c_a_n_: Scanning starts at the point it was last stopped. Low Level is interrupted when scan has started. 3_._3_._2_ _ _ _ _ _S_e_t_ _R_e_t_r_y_ _c_o_u_n_t_/_T_i_m_e_o_u_t_ 3.3.2 FORMAT: T_ _(_b_i_t_ _1_3_)_ _=_ _0_,_ _S_e_t_ _R_e_t_r_y_ _C_o_u_n_t_ : Sets the number of times an erroneous transaction should be repeated before an error interrupt is given. Does not start or stop scanning. Interrupts Low Level when count is set. All subdevices use the same retry count. Default value = 0 i.e. no errors allowed. T_ _=_ _1_,_ _S_e_t_ _t_i_m_e_o_u_t_: Sets the timeout variable (in milliseconds * 0.5) which deter- mines maximum response time of the terminals. Does not start or stop scanning. Interrupts Low Level when TIME is set. All subdevices use the same timeout time. Timeout can be between 0.5 ms and 126 ms, default: 10 ms. \f 3_._3_._3_ _ _ _ _ _R_e_s_e_t_ _S_u_b_d_e_v_i_c_e_ 3.3.3 FORMAT: Function: The specified subdevice state register will be prepared for reset (R, bit 6 = 0) Low Level is interrupted. Next time the scanning services this subdevice it will try to reset it. If the terminal responds to reset then High Level is interrupted else the controller will try a reset later. Does not start or stop scanning. 3_._3_._4_ _ _ _ _ _S_e_t_ _T_X_-_S_t_a_t_e_ 3.3.4 FORMAT: Function: TX-state register (bit 0-7) of the specified subdevice is loaded with bit 0-7 of the command word except the sequence bit SN, bit 2 which is determined by the controller itself. Low Level is interrupted after state has been changed. Does not start or stop scanning. \f 3_._3_._5_ _ _ _ _ _S_e_t_ _R_e_a_d_ _B_u_f_f_e_r_ 3.3.5 FORMAT: Function: Loads a new buffer description to the specified subdevice and sets RR in TX-state. Low level is interrupted after each word in the command. Afterwards scanning is resumed. \f 3_._3_._6_ _ _ _ _ _W_r_i_t_e_ _B_u_f_f_e_r_ 3.3.6 FORMAT: Function: TX-State is set according to bit 0-7 in command. Scanning is suspended (if not already stopped). The contents of the buffer is immediately transmitted. When completed or if anything goes wrong an interrupt will be set at the high level. Scanning is then resumed from where it was suspended (if not stopped). \f 3_._3_._7_ _ _ _ _ _S_e_c_o_n_d_a_r_y_ _W_r_i_t_e_ 3.3.7 FORMAT: Function: A frame is immediately sent with subdevice number as address and TX-state from the specified subdevice. The I-field will contain the TX-buffer data if any. When the closing flag has been sent the carrier will be removed. High level is not interrupted. Bit 0-7 of the command word are transmitted directly as C-field. \f 3_._3_._8_ _ _ _ _ _S_e_c_o_n_d_a_r_y_ _R_e_a_d_ 3.3.8 Function: Sets a Read buffer at the specified subdevice description and immediately starts searching for a valid frame. If device No <_ 7 then only a frame with this address will be read. If bit 12-15 = 1,0,0,0 then any valid frame will be read. High level will be interrupted when a valid frame has been received. RX - change is always set. Writing a new command at the Low Level will abort the read operation if the controller has not detected the start of a frame. \f 3_._3_._9_ _ _ _ _ _R_e_a_d_ _C_o_n_t_r_o_l_l_e_r_ _R_e_g_i_s_t_e_r_ 3.3.9 0_ _ _ _2_ _ _ _ _ _ _ _ _ _ _ _7_ _8_ _ _ _ _1_1_ _ _ _ _ _ _1_5_ WCC X_ _X_ _ _R_e_g_i_s_t_e_r_ _N_O_ _ _0_ _1_ _0_ _0_ _X_ _X_ _X_ _X_ RWC Register Contents. Function: The Controller transfers the contents of the specified internal register to the Low Level Read data register and then sets the Low level interrupt. 3_._3_._1_0_ _ _ _ _C_o_n_t_r_o_l_l_e_r_ _R_e_s_e_t_ 3.3.10 FORMAT: Function: The controller is reset as after power up. Scan is started but all devices are inactive. All subdevice registers are zeroed and the internal variables reinitialized. When completed low level is interrupted. \f 3_._4_ _ _ _ _ _ _ _H_i_g_h_ _L_e_v_e_l_ _S_t_a_t_u_s_/_E_v_e_n_t_s_ 3.4 As long as high level is set by an interrupt from the controller the read status register contains information on the reason for interrupt. Interrupts are caused by errors or events that cannot be handled by the controller itself. The status register has the following layout: Bit 0-4: Rx-state (c-field) of the last error free frame received. Bit 5 : Rx-state change. Set by a 0 to 1 transition of RRDdTUu M_m_m_ or SR . P_p_p_ T Bit 6 : Rx-Data. Set when a frame with a non empty I-field is received, and Rx-buffer contains data. Bit 7 : Tx-Data. Set when Tx-buffer has been (or should have been) transmitted, indicates completion of a write buffer or secondary write command. Bit 8-11: Error/Event - code. \f CODE DESCRIPTION (DECIMAL) 0 No error, one of the bits 5 to 7 must indicate the cause of interrupt. 1 An "Answer Reset" C-field was received. 2 A "Reset" C-field was received. 4 Illegal command was presented at the low level. The command word can be read from low level Read Word register if a new command has not already been received. *) 8 Timeout. Subdevice did not answer within the time set by the timeout variable. *) 9 Frame error. A CRC check error or an abort was detected. *) 10 Hardware Underrun. Controller was unable to get bus access and read data in time for transmission. *) 11 Hardware Overrun. Like error 10 except when receiving. *) Error 8 to 11 will not be issued until the controller has at- tempted to repeat the poll - response exchange and exhausted the retry counter. If retry ' 0 then only the last error type will be indicated. 12 No Receive buffer. Data was received but not stored. 13 Receive buffer overrun. The received I-field con- tained more data than receive buffer size allowed. M_M_m_ 14 Sequence number error. Received SN was different P_P_p_ T from transmitted SN . \f 15 Hard error. Controller was unable to get access to the line for transmission within 1 second, i.e. a carrier signal was detected during 1 second. Bit 12-15: Interrupting subdevice. This subdevice is inactivated (A = 0) by the interrupt. \f \f i T_A_B_L_E_ _O_F_ _C_O_N_T_E_N_T_S_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _P_A_G_E_ 1. INTRODUCTION ........................................... 1 2. COMPONENTS OF THE CONSOLE DRIVER ....................... 2 2.1 Display Buffer .................................... 2 2.2 Display Position (DP) ............................. 2 2.3 Cursor Mode ....................................... 2 2.4 Last Key .......................................... 3 2.5 Input-conversion Table ............................ 3 2.6 Output-conversion Table ........................... 3 3. FUNCTIONS SUPPORTED BY THE DRIVER ...................... 4 3.1 Input Line ........................................ 4 3.2 Input Field ....................................... 5 3.3 Input Character ................................... 8 3.4 Output ............................................ 8 3.5 Input/Output Display Buffer ....................... 9 3.6 Input/Output Display Buffer - No Conversion ....... 9 3.7 Set/Read Display Position (DP) .................... 9 3.8 Set Cursor Mode ................................... 10 3.9 Sense Keyboard .................................... 10 3.10 Attention Request ................................. 10 3.11 Provoke Attention ................................. 11 3.12 Set input Conversion .............................. 11 3.13 Set Output Conversion ............................. 11 4. THE OUTPUT CHARACTER SET ............................... 12 4.1 Control Characters ................................ 12 4.2 Field Attribute Characters ........................ 15 4.2.1 Field Attribute Character Format ........... 16 4.3 Displayable Characters ............................ 16 5. CONVERSION TABLES ...................................... 20 5.1 Reverse Output Conversion ......................... 21 6. INITIALIZATION OF DRIVER ............................... 22 \f ii T_A_B_L_E_ _O_F_ _C_O_N_T_E_N_T_S_ _(_c_o_n_t_i_n_u_e_d_)_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _P_A_G_E_ 7. DRIVER INTERFACE ....................................... 23 7.1 Input Line ........................................ 24 7.2 Input Field ....................................... 24 7.3 Input Character ................................... 24 7.4 Output ............................................ 24 7.5 Input Display Buffer .............................. 24 7.6 Output Display Buffer ............................. 25 7.7 Input Display Buffer - No Conversion .............. 25 7.8 Read Display Position ............................. 25 7.9 Read Display Position ............................. 25 7.10 Set Display Position .............................. 25 7.11 Set Cursor Mode ................................... 26 7.12 Sense Keyboard .................................... 26 7.13 Attention Request ................................. 26 7.14 Provoke Attention ................................. 26 7.15 Set Input Conversion .............................. 26 7.16 Set Output Conversion ............................. 27 8. DECLARATION OF CONSOLE DRIVER PROCESS .................. 28 A_P_P_E_N_D_I_C_E_S_: A. REFERENCES ............................................. 29 B. INITIALIZATION OF ASSOCIATED DEVICE CONTROLLER ......... 30 B.1 CRT Controller .................................... 30 B.2 Parallel I/O (PTO) Interface Controller ........... 31 B.3 Direct Memory Access (DMA) Controller ............. 31 \f F_ 1_._ _ _ _ _ _ _ _ _I_N_T_R_O_D_U_C_T_I_O_N_ 1. The Console Driver will operate the RC721 Keyboard and RC752 CRT-Display. The driver is implemented in Z80 assembly code, to run on the PI-1 Machine 1. The implementation adheres to the driver conventions defined by 2. The driver can be used immediately by a single process. If several processes wish to communicate with the console, a scheduling process should probably be inserted in front of the Console Driver, administering the queue of input and/or output requests. \f F_ 2_._ _ _ _ _ _ _ _ _C_O_M_P_O_N_E_N_T_S_ _O_F_ _T_H_E_ _C_O_N_S_O_L_E_ _D_R_I_V_E_R_ 2. The Console Driver contains the following central data structures, which may be accessed and/or manipulated by request messages to the driver: - Display Buffer - Cursor Position (CP) - Cursor Mode - Last Key - Input-conversion Table - Output-conversion Table 2_._1_ _ _ _ _ _ _ _D_i_s_p_l_a_y_ _B_u_f_f_e_r_ 2.1 This buffer holds the picture shown on the CRT. The picture contains 25 x 80 = 2000 characters/bytes. 2_._2_ _ _ _ _ _ _ _D_i_s_p_l_a_y_ _P_o_s_i_t_i_o_n_ _(_D_P_)_ 2.2 The DP contains the line and column number of the location in which the next displayable character is placed. During input, the cursor is displayed at the DP. 2_._3_ _ _ _ _ _ _ _C_u_r_s_o_r_ _M_o_d_e_ 2.3 The Cursor Mode defines the appearance of the cursor on the display as: 1: a blinking underline 2: a blinking reverse video block 3: a non-blinking underline 4: a non-blinking reverse video block. The cursor is displayed only during input mode. \f 2_._4_ _ _ _ _ _ _ _L_a_s_t_ _K_e_y_ 2.4 The Last Key contains the value of the last typed character from the keyboard, regardless of whether the console performs input or output. 2_._5_ _ _ _ _ _ _ _I_n_p_u_t_-_c_o_n_v_e_r_s_i_o_n_ _T_a_b_l_e_ 2.5 The Input-conversion Table is used for converting character values delivered by the keyboard hardware into "internal" character values. The use of an Input-conversion Table is optional. No core storage is allocated if no table is used. 2_._6_ _ _ _ _ _ _ _O_u_t_p_u_t_-_c_o_n_v_e_r_s_i_o_n_ _T_a_b_l_e_ 2.6 The Output-conversion Table is used to convert "internal" character values before placing them in the Display Buffer. The use of an Output-conversion Table is optional. No core storage is allocated if no table is used. \f F_ 3_._ _ _ _ _ _ _ _ _F_U_N_C_T_I_O_N_S_ _S_U_P_P_O_R_T_E_D_ _B_Y_ _T_H_E_ _D_R_I_V_E_R_ 3. The Console Driver performs the following functions: - Input Line - Input Field - Input Character - Output - Input or Output Display Buffer - Input or Output Display Buffer - no conversion - Set or Read Display Position (DP) - Set Cursor Mode - Sense Keyboard - Attention Request. - Provoke Attention 3_._1_ _ _ _ _ _ _ _I_n_p_u_t_ _L_i_n_e_ 3.1 An application may request one line of input (80 characters) by sending an Input Line message to the Console Driver. During "lineinput" characters typed on the keyboard are echoed on the display. The cursor is displayed at the DP. Lineinput is terminated when: (1) the ENTER key is pressed (normal termination), (2) the ESC key is pressed (attention). Data for the input message buffer is taken from that line of the display which the cursor currently points out. The characters thus retrieved are converted ("reverse" output-conversion, cf. section 5.1) before they are placed in the message buffer. The following control characters have special effects during\f lineinput (the ISO-value of the character is stated in parentheses): CR (13) E_n_t_e_r_. Terminates input. The input message buffer is returned to the requesting appli- cation with the contents of the line currently pointed out by the cursor. CR is not echoed. ESC (27) E_s_c_a_p_e_. If an "attention request" message is available at the console driver this message will be returned to the requesting application. Furthermore the input will be terminated and the input message returned empty to the sender with an attention status. RUBOUT (127) R_u_b_o_u_t_. The DP is moved one position to the left (if possible), and a space is inserted in the character position pointed out. A RUBOUT- character has no effect if the DP is located at the leftmost position of the display. All other characters are echoed as described in chapter 4. 3_._2_ _ _ _ _ _ _ _I_n_p_u_t_ _F_i_e_l_d_ 3.2 An application may input a specified field of the display by sending an Input Field message to the Console Driver. When processing such a request, the display should be regarded as one continuous line of 2000 characters (starting at the upper left corner of the display, and ending at the lower right). A field consists of a part of this 2000 character line. The field start is defined by the current DP (at the time of reception of the request). The field length is defined in the request. The maximum field length is 80 characters. Consequently, a field may very well exceed the physical end of a display line and continue at the start of the next display line. \f The data area of a received Input Field request buffer defines the length of the input field. The first action of the driver is to output this data area on the display (without affecting the DP). The data area may be filled with prompt characters (or whatever). Now the user may edit the content of the input field by overwriting with new characters. It is not possible to type any character outside the input field. This means that whenever it is attempted to move the cursor outside the input field, the DP will not be moved (but a "bell"-character is output). There is one exception to this rule: if the cursor is positioned at the end of the input field and a character is typed, then a BEL-character is output and the cursor is moved one position to the right (i.e. to the position immediately following the input field). The character in this position remains unaffected. In this situation all keys but RUBOUT , <- or ENTER (ISO-values 127, 8 and 13 respectively) are echoed by a BEL-character. The Input Field request is terminated when: (1) the ENTER key is pressed (normal termination) (2) the ESC key is pressed (attention) At termination the data area of the Input Field request is filled with the current characters of the input field of the display (possibly after "reverse" output-conversion cf. section 5.1). The following control characters have special effects during processing of an Input Field request (the ISO-value of the character is stated in parentheses): N_o_t_e_: The input field should always be regarded as one unbroken sequence of characters, no matter if it spans part of two physical display lines. ENQ(5) D_e_l_e_t_e_ _i_n_ _l_i_n_e_. The character pointed out by the DP is deleted and all characters in the input field "to the right" of this position are moved one position "to the\f left" (so that the gap is filled up) and a space is inserted in the last position of the field. BS(8) D_i_s_p_l_a_y_ _P_o_s_i_t_i_o_n_ _l_e_f_t_. The DP is moved one position "to the left". If the DP is located at the first position of the input field, a BS-character will simply be echoed as a BEL-character. HT(9) I_n_s_e_r_t_ _i_n_ _l_i_n_e_. All characters of the input field to the right of the DP, including the character pointed out by the DP, are moved one position "to the right". A space is inserted at the empty position. The character in the last position of the field is lost. CR(13) E_n_t_e_r_. Terminates input. The input message buffer is returned to the requesting application with the current contents of the input field. CR is not echoed. CAN(24) D_i_s_p_l_a_y_ _P_o_s_i_t_i_o_n_ _r_i_g_h_t_. The DP is moved one position "to the right". If the DP is located at the last position of the input field, a CAN-character will simply be echoed as a BEL-character. ESC(27) E_s_c_a_p_e_. If an "attention request" message is available at the console driver this message will be returned to the requesting application. Furthermore the input will be terminated and the input message returned empty to the sender with an attention status. RUBOUT(127) R_u_b_o_u_t_. The DP is moved one position "to the left" and a space is inserted in the character position pointed out. A RUBOUT-character has no effect (but echo of a BEL-character) if the DP is located at the first position of the input field. All other control characters are regarded as illegal during an Input Field request and are consequently echoed as a BEL-character. Displayable characters are echoed as described in chapter 4. \f 3_._3_ _ _ _ _ _ _ _I_n_p_u_t_ _C_h_a_r_a_c_t_e_r_ 3.3 An Input Character message simply returns the next (converted) character typed on the keyboard. The character is n_o_t_ echoed. The cursor is displayed at the DP. 3_._4_ _ _ _ _ _ _ _O_u_t_p_u_t_ 3.4 An application may display a buffer of data by sending an "output" message to the Console Driver. The buffer may contain control characters. Immediately before the characters are put in the Display Buffer they will be converted, according to the Output-conversion Table (cf. chapter 5). The cursor is not displayed during output. The following character has special effect during output (the decimal ISO-value of the character is stated in parentheses): LF (10) N_e_w_ _L_i_n_e_. The DP is moved to the leftmost position of the line below the current (possibly involving a "roll" of the Display). All other characters are treated as described in chapter 4. The output is terminated immediately if an "attention" occurs (that is: if the ESC key is pressed). If an Attention Request message is available at the Console Driver, this message will be returned to the requesting application. The output message will be returned with an attention status, and the number of output characters defined. \f 3_._5_ _ _ _ _ _ _ _I_n_p_u_t_/_O_u_t_p_u_t_ _D_i_s_p_l_a_y_ _B_u_f_f_e_r_ 3.5 The whole display buffer may be read or written in a single operation. A message containing a buffer of (exactly) 2000 characters may be sent to the console driver. Depending upon the function specification of the message, the whole buffer will be copied into the display buffer (after output-conversion), or alternatively, the display buffer copied into the message (after reverse output-conversion). DP remains unchanged. A field of characters (cf. section 4.2) is designated by a field attribute character before the field. The coding of this character is as described in section 4.2.1. 3_._6_ _ _ _ _ _ _ _I_n_p_u_t_/_O_u_t_p_u_t_ _D_i_s_p_l_a_y_ _B_u_f_f_e_r_ _-_ _N_o_ _C_o_n_v_e_r_s_i_o_n_ 3.6 These functions have the same effects as the functions of the previous section, Input Display Buffer and Output Display Buffer, but for one thing: no conversion is performed. That is: Input Display Buffer - No Conversion and Output Display Buffer - No Conversion retrieves, respectively updates, the whole of the Display Buffer as it is, without any output-conversion or reverse output-conversion. Tables 4.1 and 4.2 show the character values of the unconverted (Danish ASCII) character set. 3_._7_ _ _ _ _ _ _ _S_e_t_/_R_e_a_d_ _D_i_s_p_l_a_y_ _P_o_s_i_t_i_o_n_ _(_D_P_)_ 3.7 The DP may be changed or read by means of a message to the console driver. Note that the DP may be changed by means of control characters during ordinary output, too (cf. section 4.1). \f 3_._8_ _ _ _ _ _ _ _S_e_t_ _C_u_r_s_o_r_ _M_o_d_e_ 3.8 The Cursor Mode -- as described in section 2.4 -- may be changed by means of a message to the console driver. The display will otherwise remain unchanged. N_o_t_e_: The screen-image may be unstable for a short period of time (1-2 seconds), after a Set Cursor Mode message has been processed by the console driver. 3_._9_ _ _ _ _ _ _ _S_e_n_s_e_ _K_e_y_b_o_a_r_d_ 3.9 A Sense Keyboard message is always returned immediately to the sender, containing the last typed character on the keyboard, (after conversion). Please notice that processing of this type of message never involves waiting. Thus, an application may "access" the keyboard, even during a stream of output messages. The read-operation of a Sense Keyboard message is "destructive", that is: If no character has been typed at the keyboard between two subsequent calls of Sense Keyboard, the last call will be returned empty (i.e. with a NUL-character and a "rejected" status). This ensures that a given character will be read only once (at most). A Sense Keyboard message does not affect the status-variables of the console driver. 3_._1_0_ _ _ _ _ _ _A_t_t_e_n_t_i_o_n_ _R_e_q_u_e_s_t_ 3.10 An Attention Request message is returned to the sender when an attention occurs, that is: when the ESC-key is pressed. There is one exception: an attention does not affect the Attention Request message during processing of an Input Character message. The ESC-character is simply returned normally in the Input Character message. \f At most one Attention Request at a time, may be pending at the console driver. If an additional Attention Request is sent to the console driver it will be returned with a "rejected" status. 3_._1_1_ _ _ _ _ _ _P_r_o_v_o_k_e_ _A_t_t_e_n_t_i_o_n_ 3.11 An operator generated attention (hitting the ESC-key of the key- board) may be simulated by sending a Provoke Attention message to the driver. 3_._1_2_ _ _ _ _ _ _S_e_t_ _I_n_p_u_t_ _C_o_n_v_e_r_s_i_o_n_ 3.12 An input-conversion table (cf. chapter 5) may be attached to the driver by sending a Set Input Conversion message to it. The data buffer of the message must contain the conversion table (the exact format is described in section 7.14). 3_._1_3_ _ _ _ _ _ _S_e_t_ _O_u_t_p_u_t_ _C_o_n_v_e_r_s_i_o_n_ 3.13 An output-conversion table (cf. chapter 5) may be attached to the driver by sending a Set Output Conversion message to it. The data buffer of the message must contain the conversion table (the exact format is described in section 7.15). \f F_ 4_._ _ _ _ _ _ _ _ _T_H_E_ _O_U_T_P_U_T_ _C_H_A_R_A_C_T_E_R_ _S_E_T_ 4. Characters may be output either by an explicit output message, or by echoing of input characters. This chapter defines the effects of different characters, when output. The definition adheres to the standards of the RC822 Display Terminal 3 whenever possible. Characters with ISO value in the range 0 to 31 are considered c_o_n_t_r_o_l_ _c_h_a_r_a_c_t_e_r_s_. Some of these control characters cause a change of status in the console driver (moving of DP, deleting or inserting, etc.). Control characters are not displayed as single visible characters. Characters which may be included in the Display Buffer are d_i_s_p_l_a_y_a_b_l_e_ _c_h_a_r_a_c_t_e_r_s_. Each displayable character occupies a single display position. A f_i_e_l_d_ _a_t_t_r_i_b_u_t_e_ _c_h_a_r_a_c_t_e_r_ is not a control character, because it does occupy one display position. Field attribute characters are, however, not visual characters either (they are displayed as blanks): they affect the visual characteristics of the following characters. Notice that both input- as well as output-conversion may take place, cf. chapter 5. 4_._1_ _ _ _ _ _ _ _C_o_n_t_r_o_l_ _C_h_a_r_a_c_t_e_r_s_ 4.1 Characters with value in the range 0 to 31 are by definition control characters. Control characters do not occupy any display buffer positions; their functions are restricted to display buffer r_e_o_r_g_a_n_i_z_a_t_i_o_n_. This means that these characters are not included in an Input Line message buffer. \f Some control characters may cause a single "roll" of the display. A "roll" means that all characters are moved one line up. The characters of the uppermost line are lost. The bottom line is filled with spaces. The following control characters have special effects: ENQ (5) D_e_l_e_t_e_ _i_n_ _l_i_n_e_. The character pointed out by the DP is deleted and all characters to the right of this position on the line are moved one position to the left (so that the gap is filled up) and a space is inserted in the last position of the line. (Not RC822 compatible). ACK (6) C_h_a_n_g_e_ _D_i_s_p_l_a_y_ _P_o_s_i_t_i_o_n_. This character -- to- gether with the two characters immediately fol- lowing it -- changes the DP arbitrarily. The two characters following the ACK-characters determine the column and line position (respec- tively) of the new DP, according to following: x = first ISO value, y = second ISO value. column = i_f_ 95 < x a_n_d_ x < 128 t_h_e_n_ x - 95 e_l_s_e_ i_f_ 63 < x t_h_e_n_ x - 31 e_l_s_e_ i_f_ 31 < x a_n_d_ x < 48 t_h_e_n_ x + 33. e_l_s_e_ 1. line = i_f_ 95 < y a_n_d_ y < 121 t_h_e_n_ y - 95 e_l_s_e_ 1 \f No actual display buffer position is occupied by any of the three characters in a "Change DP" sequence. BEL (7) B_e_l_l_. Activates an audible signal. BS (8) D_i_s_p_l_a_y_ _P_o_s_i_t_i_o_n_ _l_e_f_t_. The DP is moved one po- sition to the left. If the DP is located at the leftmost position of the display, a BS-charac- ter will move it to the rightmost position of the previous line. A BS-character has no effect if the DP is located at the leftmost position of the uppermost line. HT (9) I_n_s_e_r_t_ _i_n_ _l_i_n_e_. All characters to the right of the DP, including the character pointed out by the DP, are moved one position to the right, and a space is inserted at the empty position. The character in the rightmost position of the line will be lost. (Not RC822 compatible). LF (10) L_i_n_e_ _f_e_e_d_. Moves the DP one line down. If the DP is at the bottom line of the display, a LF- character will cause a single "roll" of the display. FF (12) C_l_e_a_r_. Moves the DP to the leftmost position of the uppermost line and replaces all characters of the Display by spaces. CR (13) C_a_r_r_i_a_g_e_ _r_e_t_u_r_n_. Moves the DP to the leftmost position of the current line. CAN (24) D_i_s_p_l_a_y_ _P_o_s_i_t_i_o_n_ _r_i_g_h_t_. The DP is moved one position to the right. If the DP is located at the righ- tmost position of the display, a CAN-character will move it to the leftmost position of the line below. A CAN-character has no effect if DP\f is located at the rightmost position of the bottom line of the display. SUB (26) D_i_s_p_l_a_y_ _P_o_s_i_t_i_o_n_ _u_p_. The DP is moved one line up. A SUB-character has no effect if the DP is located at the uppermost line of the display. GS (29) H_o_m_e_. The DP is moved to the leftmost position of the uppermost line. RS (30) D_e_l_e_t_e_ _t_o_ _e_n_d_ _o_f_ _l_i_n_e_. All characters to the right of the DP, including the character pointed out by the DP, are replaced by spaces. US (31) D_e_l_e_t_e_ _t_o_ _e_n_d_ _o_f_ _D_i_s_p_l_a_y_. All characters from the DP to the end of the Display, including the character pointed out by the DP, are replaced by spaces. 4_._2_ _ _ _ _ _ _ _F_i_e_l_d_ _A_t_t_r_i_b_u_t_e_ _C_h_a_r_a_c_t_e_r_s_ 4.2 A field attribute character marks the beginning of a field of characters. A field of characters may have special visual characteristics, such as graphic representation, reverse video, blinking or underlining. A field consists of all characters between two subsequent field attribute characters, i.e. the characters following the field attribute character, up to -- and including -- the character preceding the next field attribute character. A character is recognized as a field attribute character if its value lies in the interval from 128 to 191. The exact format is shown in the next subsection. \f 4_._2_._1_ _ _ _ _ _F_i_e_l_d_ _A_t_t_r_i_b_u_t_e_ _C_h_a_r_a_c_t_e_r_ _F_o_r_m_a_t_ 4.2.1 The attributes are coded by individual bits of the field attribute character (bit 0 is the least significant). Bits 6 must be cleared and bit 7 must be set to discriminate from non-field attribute characters. bit 0 = 1: highlight bit 1 = 1: blink bit 2 = 1: semigraphic representations bit 3: not used bit 4 = 1: reverse video bit 5 = 1: underline bit 6 = 0: m_u_s_t_ be cleared. bit 7 = 1: m_u_s_t_ be set. E_x_a_m_p_l_e_: Code = 'R' +128 specifies: 'R' +128 = 10010010 blinking reverse video 4_._3_ _ _ _ _ _ _ _D_i_s_p_l_a_y_a_b_l_e_ _C_h_a_r_a_c_t_e_r_s_ 4.3 The (unconverted) displayable characters are shown in the tables 4.1 and 4.2. These are the characters and associated values, as defined in the hardware character generator PROM. Obviously, tables 4.1 and 4.2 are not valid if an output-conver- sion table is attached to the Console Driver. Please refer to the specific reference manuals for the relevant conversion tables. As seen in the table even the control character values have as- sociated displayable images. That is: if the value of a control character is put into a position of the display buffer, an actual image w_i_l_l_ be shown. \f The Console Driver may be forced to output the actual value of a control character by adding 192 to the value. Characters in the interval 192 to 223 are not skipped: 192 is subtracted and the resulting value inserted into the display buffer. These remarks are valid for both non-graphic and graphic char- acter fields. \f F_ Table 4.1: Alfanumeric characters, Danish ASCII - ROA 327 (no outputconversion). \f F_ Table 4.2: Semigraphic characters, Danish ASCII - ROA 327 (not outputconversion). \f F_ 5_._ _ _ _ _ _ _ _ _C_O_N_V_E_R_S_I_O_N_ _T_A_B_L_E_S_ 5. In order to support differing nationalities' character sets, the console driver may perform input- as well as output-conversion of characters. Input-conversion is effected i_m_m_e_d_i_a_t_e_l_y_ _a_f_t_e_r_ receiving a char- acter typed at the keyboard. It is thus the converted charact which may be treated as a possible control character during input described in the previous chapters. Output-conversion is effected i_m_m_e_d_i_a_t_e_l_y_ _b_e_f_o_r_e_ placing a char- acter in the Display Buffer. It is thus the character value be- fore output-conversion, which is regarded as a possible control character during output. In general, it is the character values after input-conversion, but before output-conversion -- the so-called internal values -- which the users of the software recognize and manipulate. At the present time, conversion tables to support following nationalities' character sets, exist: - Denmark - Sweden - United Kingdom (UK-ASCII) - United States (US-ASCII) - Germany - France For details, please refer to seperate reference manuals for these. The use of conversion tables is optional -- for input as well as output. If no conversion table (input or output) is present at the Console Driver, danish ASCII character set -- as described in tables 4.1 and 4.2 -- is assumed. \f A conversion table is attached to the driver by using the Console Driver functions: - Set Input Conversion - Set Output Conversion. 5_._1_ _ _ _ _ _ _ _R_e_v_e_r_s_e_ _O_u_t_p_u_t_ _C_o_n_v_e_r_s_i_o_n_ 5.1 The presence of the input functions Input Line and Read Display Buffer (cf. section 3.2 and 3.5), gives rise to some special pro- blems. The Input Line, Input Field and Input Display Buffer functions take data from the Display Buffer. The data of the Display Buffer has been converted through the output-conversion table (if pre- sent). Since the user obviously wants "internal" character values in response from the Input Line request, the output-converted characters of the Display Buffer must be converted "back". Consequently reverse output-conversion must be possible. Unambiguous reverse conversion is possible if and only if the conversion mapping is b_i_j_e_c_t_i_v_e_, that is: the conversion table may map no two character values into identical values. When an output-conversion table is received at the Console Dri- ver, a "reverse" conversion table is initialized according to the following algorithm (in Pascal-like notation): (* conv: output-conversion table (0..127) *) (* reverse: "reverse" output-conversion table (0..127) *) f_o_r_ i : = 0 t_o_ 127 d_o_ reverse( conv(i)) : = i; \f F_ 6_._ _ _ _ _ _ _ _ _I_N_I_T_I_A_L_I_Z_A_T_I_O_N_ _O_F_ _D_R_I_V_E_R_ 6. The central datastructures (cf. chapter 2) of the console driver are initialized as follows: D_i_s_p_l_a_y_ _b_u_f_f_e_r_: Space characters (byte value 32) in all positions. D_i_s_p_l_a_y_ _P_o_s_i_t_i_o_n_: Leftmost position of uppermost line. C_u_r_s_o_r_ _m_o_d_e_: Blinking reverse video block (2). L_a_s_t_ _k_e_y_: Null character (byte value 0). I_n_p_u_t_-_c_o_n_v_e_r_s_i_o_n_ _T_a_b_l_e_: Empty (i.e. danish ASCII). O_u_t_p_u_t_-_c_o_n_v_e_r_s_i_o_n_ _T_a_b_l_e_: Empty (i.e. danish ASCII). \f F_ 7_._ _ _ _ _ _ _ _ _D_R_I_V_E_R_ _I_N_T_E_R_F_A_C_E_ 7. Below are listed the exact formats for function requests and answers. The formats are in agreement with the conventions for PASCAL80 drivers 1. A message will always be of the following form: M_ _ _ _ _ _ _ R_e_q_u_e_s_t_ A_n_s_w_e_r_ _ _ _ _ _ _ Header _ _u_1_ _ _ function (unchanged) _ _u_2_ _ _ - result _ _u_3_ _ _ (data byte) (data byte) _ _u_4_ _ _ _ _ _ _ _ _ M_ 0 Data first (unchanged) P_ _ _ _1_ _ _ M_ buffer 2 last (unchanged) P_ _ _ _3_ _ _ M_ 4 - next P_ _ _ _5_ _ _ P_ i/o data i/o data Results are coded as follows: 0: Processed succesfully 2: Timeout 4: Illegal function, i.e. unintelligible driver message 10: Attention 14: Rejected The data buffer declaration may look like this in PASCAL80: buffer80-type = RECORD first, last, next: integer; data: ARRAY (6..data _length+5) OF byte END \f 7_._1_ _ _ _ _ _ _ _I_n_p_u_t_ _L_i_n_e_ 7.1 Function: 5 (read + 1 * 4) Possible results: 0, 4, 10 Data _length of the data buffer must be equal to 80. 7_._2_ _ _ _ _ _ _ _I_n_p_u_t_ _F_i_e_l_d_ 7.2 Function: 37 (read + 9 * 4) Possible results: 0, 4, 10 The bytes from first to next are output. Data _length of the data buffer must be equal to 80. 7_._3_ _ _ _ _ _ _ _I_n_p_u_t_ _C_h_a_r_a_c_t_e_r_ 7.3 Function: 9 (read + 2 * 4) Possible results: 0 No data buffer necessary. u3 will hold the character value upon return. 7_._4_ _ _ _ _ _ _ _O_u_t_p_u_t_ 7.4 Function: 2 (write + 0 * 4) Possible results: 0, 4, 10. Data _length of the data buffer must be equal to 80. Output is taken from 'data(.first..last.). 7_._5_ _ _ _ _ _ _ _I_n_p_u_t_ _D_i_s_p_l_a_y_ _B_u_f_f_e_r_ 7.5 Function: 13 (read + 3 * 4) Possible results: 0, 4 Data _length of the data buffer must be equal to 2000. \f 7_._6_ _ _ _ _ _ _ _O_u_t_p_u_t_ _D_i_s_p_l_a_y_ _B_u_f_f_e_r_ 7.6 Function: 14 (write + 3 * 4) Possible results: 0, 4 Data _length of the data buffer must be equal to 2000. 7_._7_ _ _ _ _ _ _ _I_n_p_u_t_ _D_i_s_p_l_a_y_ _B_u_f_f_e_r_ _-_ _N_o_ _C_o_n_v_e_r_s_i_o_n_ 7.7 Function: 29 (read + 7 * 4) Possible results: 0, 4 Data _length of the data buffer must be equal to 2000. 7_._8_ _ _ _ _ _ _ _O_u_t_p_u_t_ _D_i_s_p_l_a_y_ _B_u_f_f_e_r_ _-_ _N_o_ _C_o_n_v_e_r_s_i_o_n_ 7.8 Function: 30 (write + 7 * 4) Possible results: 0, 4. Data _length of the data buffer must be equal to 2000. 7_._9_ _ _ _ _ _ _ _R_e_a_d_ _D_i_s_p_l_a_y_ _P_o_s_i_t_i_o_n_ 7.9 Function: 17 (read + 4 * 4) Possible results: 0, 4. The data buffer holds the line and column number of the DP (in bytes 6 and 7, respectively), upon return. 7_._1_0_ _ _ _ _ _ _S_e_t_ _D_i_s_p_l_a_y_ _P_o_s_i_t_i_o_n_ 7.10 Function: 18 (write + 4 * 4) Possible results: 0, 4 The data buffer should hold the line and column number of the DP in bytes 6 and 7, respectively. \f 7_._1_1_ _ _ _ _ _ _S_e_t_ _C_u_r_s_o_r_ _M_o_d_e_ 7.11 Function: 0 (control + 0 * 4) Possible results: 0, 4 No data buffer is necessary. The cursor mode (cf. section 2.4) is held in u3 of the message header. 7_._1_2_ _ _ _ _ _ _S_e_n_s_e_ _K_e_y_b_o_a_r_d_ 7.12 Function: 25 (read + 6 * 4) Possible results: 0, 14 No data buffer is necessary. u3 will hold the value of Last Key upon return. 7_._1_3_ _ _ _ _ _ _A_t_t_e_n_t_i_o_n_ _R_e_q_u_e_s_t_ 7.13 Function: 4 (control + 1 * 4) Possible results: 0, 14 No data buffer is necessary. Result 14 (rejected) is given if an attention request message is already present at the driver. 7_._1_4_ _ _ _ _ _ _P_r_o_v_o_k_e_ _A_t_t_e_n_t_i_o_n_ 7.14 Function: 16 (control + 4*4) Possible results: 10 No data buffer is necessary. 7_._1_5_ _ _ _ _ _ _S_e_t_ _I_n_p_u_t_ _C_o_n_v_e_r_s_i_o_n_ 7.15 Function: 8 (control + 2 * 4) Possible results: 0, 4 The data part of the data-buffer must contain a table of 256 bytes, such that data(i) is equal to the "internal" character value associated with the keyboard value i. \f 7_._1_6_ _ _ _ _ _ _S_e_t_ _O_u_t_p_u_t_ _C_o_n_v_e_r_s_i_o_n_ 7.16 Function: 12 (control + 3 * 4) Possible results: 0, 4 The data part of the data-buffer must contain a table of 128 bytes, such that data(i) (i in 0..127) is equal to the value which should be output for the "internal" value i. \f F_ 8_._ _ _ _ _ _ _ _ _D_E_C_L_A_R_A_T_I_O_N_ _O_F_ _C_O_N_S_O_L_E_ _D_R_I_V_E_R_ _P_R_O_C_E_S_S_ 8. The parent of the Console Driver process is a progenitor process, created by the Eve process (cf. 7). The PASCAL80 process heading of the Console Driver is defined as follows: PROCESS console-driver (VAR console _sem: semaphore; key _int _vector: channel _number; keyboard _priority: 1..254) where - console _sem is the request semaphore of the Console Driver, - key _int _vector is the interrupt vector of the Keyboard Driver (which is a child process of the Console Driver). - keyboard _priority is the time-slicing priority for the Keyboard Driver. \f F_ A_._ _ _ _ _ _ _ _ _R_E_F_E_R_E_N_C_E_S_ A. 1 RCSL No 31-D615: The PI-1 Maschine, Reference Manual 2 RCSL No 31-D617: PASCAL80 Driver Conventions 3 Datamedia Corporation: Datamedia Elite 1521A Video Terminal, Operator's Handbook, April 1978 4 Intel Component Data Catalog, 1979. Santa Clara 1979 5 Zilog Z80 Component Book, Zilog 1977 6 Advanced Microdevices: The Designer's Guide '80, 1980 7 RCSL No 31-D618: PI-1 PASCAL80, Reference Manual \f F_ B_._ _ _ _ _ _ _ _ _I_N_I_T_I_A_L_I_Z_A_T_I_O_N_ _O_F_ _A_S_S_O_C_I_A_T_E_D_ _D_E_V_I_C_E_ _C_O_N_T_R_O_L_L_E_R_S_ B. The Console Driver initializes following controllers: - CRT Controller - one channel of the Parallel I/O (PIO) Interface Controller (for the keyboard) - one channel of the Direct memory Access (DMA) Controller. The initialization of each of these is shortly described beneath. B_._1_ _ _ _ _ _ _ _C_R_T_ _C_o_n_t_r_o_l_l_e_r_ B.1 The Intel8275 Programmable CRT Controller 4 is used. The controller is initialized with the following options: - normal (non-spaced) rows - 80 horizontal characters per row - 2 row counts per vertical retrace - 25 rows per frame - underline placed in line number 8 - 10 lines per character row - non-offset line counter mode - non-transparent field attribute mode - cursor format is optional. Blinking reverse video block is default - 28 character counts per horizontal retrace. The controller is started with the following options: - no character clocks between DMA requests - 8 DMA cycles per burst. \f B_._2_ _ _ _ _ _ _ _P_a_r_a_l_l_e_l_ _I_/_O_ _(_P_I_O_)_ _I_n_t_e_r_f_a_c_e_ _C_o_n_t_r_o_l_l_e_r_ B.2 The Z80A PIO 5 is used. Only one channel (channel a) of the controller's two channels is used for keyboard input. The mode of this channel is initialized to "input". B_._3_ _ _ _ _ _ _ _D_i_r_e_c_t_ _M_e_m_o_r_y_ _A_c_c_e_s_s_ _(_D_M_A_)_ _C_o_n_t_r_o_l_l_e_r_ B.3 The Am9517 Multimode Direct Memory Access Controller 6 is used. This controller has four individual channels. The Console Driver utilizes channel 4 for transfer of the Display Buffer to the CRT-controller. The following options are output to the Command Register: - memory-to-memory disable - master enable - normal timing - fixed priority - extended write selection - DREQ sense active high - DACK sense active low. The following options are output to the Mode Register: - read transfer - autoinitialize enable - address increment select - single mode select. Observe that the DMA-controller is put into autoinitialize mode. This means that the address and size of the Display Buffer is output only once -- by initialization. Thus, no display interrupt routine is needed. \f F_ \f i I_N_D_H_O_L_D_S_F_O_R_T_E_G_N_E_L_S_E_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _S_I_D_E_ 1. INTRODUKTION ........................................... 1 2. PROGRAMSTRUKTUR ........................................ 2 2.1 Hjælpeprogramsystem ............................... 2 2.2 Hjælpeprogram ..................................... 5 2.3 Hjælpeprogramfunktion ............................. 7 2.3.1 Standard funktionsparametre ................ 10 2.3.2 Funktionsafbrydelser og repetition ......... 11 3. DISKETTE FUNKTIONSPROGRAM .............................. 12 3.1 Formattering ...................................... 12 3.2 Checklæsning ...................................... 13 3.3 Kopiering ......................................... 15 4. KATALOG FUNKTIONSPROGRAM ............................... 17 4.1 Initialisering .................................... 17 4.2 Listning .......................................... 19 B_I_L_A_G_: A. REFERENCER ............................................. 21 B. SIKKERHEDSKOPIERING .................................... 22 C. MAXI-DISKETTE BESKRIVELSE .............................. 27 D. MINI-DISKETTE BESKRIVELSE .............................. 29 E. KONFIGURERING - STANDARDKONFIGURATION .................. 31 F. AUTOLOAD PROCEDURE ..................................... 33 G. SPECIALTEGN ............................................ 34 H. FEJLSITUATIONER - FEJLKODETABEL ........................ 35 \f ii \f F_ 1_._ _ _ _ _ _ _ _ _I_N_T_R_O_D_U_K_T_I_O_N_ 1. Hjælpeprogrampakken til RC700 er udviklet til understøttelse af COMAL80-systemer og indeholder funktioner til generering af sys- tem og katalogdisketter samt systemkonfigurering. Konfigurering omhandler valg af konverteringstabel, definition af transmissionshastighed (Baud rate) på kommunikationslinien og hermed ligestillede funktioner samt fastlæggelse af systemprogram (dvs. COMAL80, hjælpeprogramsystem eller andet). Systemkonfigurering er omtalt nærmere i bilag E, der endvidere beskriver den standardkonfigurering, der anvendes af RC ved di- stibution af hjælpeprogrampakken. I COMAL80-systemer anvendes samme standardkonfiguration - med undtagelse af systemprogramvalg (COMAL80). Hjælpeprogrampakken leveres på en hjælpeprogramdiskette, der an- vendes som autoload diskette. Autoload proceduren er beskrevet i bilag F. Det anbefales, at brugeren som det første producerer en sikker- hedskopi af distibutionsdisketten. Fremgangsmåden er specielt be- skrevet i bilag B, der kan benyttes som et eksempel på anvendelse af programfunktionerne. Det tilrådes at anvende samme beskrivelse ved generering af nye systemer - såvel COMAL80-systemer som hjæl- peprogramsystemer - indtil der opnåes fortrolighed med anvendelse af programfunktionerne. Hjælpeprogrampakken indeholder ud over hjælpefunktioner til COMAL80 også selvstændige programmer - som f.eks. en terminal- emulator. Indholdsfortegnelsen kan benyttes som index til funkti- onerne. N_æ_r_v_æ_r_e_n_d_e_ _u_d_g_a_v_e_ _a_f_ _m_a_n_u_a_l_e_n_ _b_e_s_k_r_i_v_e_r_ _f_ø_r_s_t_e_ _u_d_g_a_v_e_ _a_f_ _s_y_s_t_e_- m_e_t_,_ _d_e_r_ _a_l_e_n_e_ _i_n_d_e_h_o_l_d_e_r_ _f_u_n_k_t_i_o_n_e_r_n_e_ _t_i_l_ _d_i_s_k_e_t_t_e_-_ _o_g_ _k_a_t_a_l_o_g_- i_n_i_t_i_a_l_i_s_e_r_i_n_g_,_ _l_i_g_e_s_o_m_ _s_y_s_t_e_m_g_e_n_e_r_e_r_i_n_g_ _s_k_a_l_ _u_d_f_ø_r_e_s_ _s_o_m_ _e_n_ _s_i_k_- k_e_r_h_e_d_s_k_o_p_i_e_r_i_n_g_,_ _s_e_ _b_i_l_a_g_ _B_._ _U_d_s_k_r_i_v_n_i_n_g_ _a_f_ _'_d_e_f_a_u_l_t_'_-_p_a_r_a_m_e_t_r_e_ u_n_d_e_r_s_t_ø_t_t_e_s_ _h_e_l_l_e_r_ _i_k_k_e_ _i_ _f_ø_r_s_t_e_ _u_d_g_a_v_e_. \f F_ 2_._ _ _ _ _ _ _ _ _P_R_O_G_R_A_M_S_T_R_U_K_T_U_R_ 2. 2_._1_ _ _ _ _ _ _ _H_j_æ_l_p_e_p_r_o_g_r_a_m_s_y_s_t_e_m_ 2.1 Hjælpeprogrampakken er opdelt i en række hjælpeprogrammer, der hver især omfatter beslægtede programfunktioner, hvorfor program- systemet får den på fig. 1 viste overordnede struktur. Der findes for øjeblikket følgende hjælpeprogrammer: 1) Diskette Maintenance Utility 2) Directory Maintenance Utility 3) System Maintenance Utility 4) System Configuration Utility 5) Terminal Emulator Utility Efter autoload af hjælpeprogramdisketten, vil skærmbilledet give information om de mulige valg af hjælpeprogrammer i form af en udskrift - en men - som vist i fig. 2. Det ønskede program udvælges ved indtastning af det tilhørende nummer i 'Function number'-feltet, dvs. på markørpositionen, efterfulgt af et 'return', altså '<-'. De enkelte hjælpeprogrammer findes omtalt i de følgende kapitler, hvor de tilhørende programfunktioner omtales nærmere. I det føl- gende afsnit omtales den generelle struktur på programniveau. I bilag G er der angivet en liste over specialtegn, der understøt- tes i brugerkommunikationen. \f F_ Programsystem _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Program- men _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Program Program _ _ _ _ _ _ _ _ _ _ _ _ Funktions- men _ _ _ _ _ _ _ _ _ _ _ _ Funktion Funktion _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Funktions dialog (parametervalg) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Figur 1: Programsystem, overordnet struktur. \f F_ RC700 UTILITY SYSTEM vers.xx.yy -------------------- Select function: 1. Diskettes Maintenance Utility 2. Directory Maintenance Utility 3. End Function number: / Figur 2: Skærmbillede Programmen. \f F_2_._2_ _ _ _ _ _ _ _H_j_æ_l_p_e_p_r_o_g_r_a_m_ 2.2 Efter valg af hjælpeprogram udskrives en funktions-men, hvor de enkelte programfunktioner hørende til hjælpeprogrammet listes, se eksemplet i fig. 3. Det bemærkes, at der er angivet en speciel funktion 'END'. Indtastes det hertil hørende nummer i 'Function number'-feltet, efterfulgt af 'return', vil det valgte program blive afsluttet, dvs. kontrollen overgives til programsystemet. På denne måde kan man aktivere flere hjælpeprogrammer efter hin- anden. Efter valg af programfunktion, vil der blive udskrevet en række forespørgsler, som skal besvares, førend funktionen kan udføres. Når funktionen er udført, vil den enkelte programfunktion over- give kontrollen til hjælpeprogrammet, hvorefter den tidligere listede funktions-men gentages. Samtidig vil funktionsresultatet blive anført i kontrolfeltet - det tomme felt i fig. 3. Angående parameterdialog henvises til de enkelte beskrivelser for en detaljeret gennemgang af de specifikke parametre, hvorimod der i det følgende omtales en række generelle problemstillinger angå- ende parameterformat, valg af defaultværdier, fejlindtastning, funktionsafbrydelse og fejlsituationer, hvorfor der senere vil blive henvist hertil. \f F_ DISKETTES MAINTENANCE UTILITY vers.xx.yy ----------------------------- _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Select function: 1. Diskette Format 2. Diskette Verify 3. Diskette Copy 4. End Function number: / Figur 3: Skærmbillede. Eksempel på funktionsmen. Den tomme ramme udfyldes efter funktionskald med information om resultatet. \f F_ 2_._3_ _ _ _ _ _ _ _H_j_æ_l_p_e_p_r_o_g_r_a_m_f_u_n_k_t_i_o_n_ 2.3 Efter udvælgelse af en programfunktion overgives kontrollen her- til, hvorefter funktionsparametrene kan defineres. Dialogen er enkel, idet funktionen udskriver en forespørgsel og afventer svar herpå i form af en enkelt parameterværdi (en streng eller et hel- tal) efterfulgt af 'return'. Herefter udskriver programfunktionen næste forespørgsel og afventer svar. Således fortsættes, indtil alle parametre er blevet defineret. I fig. 4 er vist et eksempel på en sådan parameterdialog. De enkelte parametre er tildelt en defaultværdi, der udskrives sammen med parameterforespørgslen. Såfremt brugeren nu vælger blot at taste 'return', vil den angivne defaultværdi blive an- vendt. Til de enkelte forespørgsler svarer et værdiområde for parame- tren, f.eks. to tegn eller et tcifret heltal, se eksemplet i fig. 4. Der er således tilknyttet et inddatafelt til hver para- meter. Enhver indtastning, der sker til et område uden for feltet afvises, og fejlen indikeres ved et advarselssignal (BELL). Dog vil indtastning af 'venstre pil' blive accepteret, således at re- digering i en allerede indtastet tekst er tilladt. Det bør bemær- kes at brug af markørtegn (venstre pil, højre pil) intet ændrer ved feltindholdet. Et indtastet tegn slettes således ved markør- positionering og efterfølgende indtastning af et nyt tegn, se iøvrigt bilag G. Inddatafelterne er i denne beskrivelse markeret efter anvendelse således: aa.. : små bogstaver forventes. AaAa.. : tegnfølgen defineres frit af brugeren. xx../yy..: et heltal forventes. Herudover er der i fig. 4 markeret en række tomme felter. Det første angiver markørposition, når funktionen er i udførelsesfa- sen. De to næste felter indeholder navnet på hjælpeprogrammet. \f Det næstsidste felt benyttes til fejlstatus. Det angivne fejlnum- mer benyttes som index i fejlkodetabellen i bilag H. Det sidste felt benyttes som parameterfelt i forbindelse med fejl. Her kan angives om operationen ønskes gentaget eller om funktionen ønskes afbrudt, se iøvrigt underafsnit 2.3.2. De her beskrevne felter er for overskuelighedens skyld udeladt i de enkelte figurer. \f F_ / DISKETTES MAINTENANCE UTILITY vers.xx.yy ----------------------------- Function: Diskette Format Mini/maxi (mi/ma): aa Drive number (1..2): x Single/double density (sd/dd): aa Single/double sided (ss/ds): aa Sectorlength (128/256/512): xxx Insert diskette, type 'return': Format active on cylinder xxx _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Figur 4: Skærmbillede. Eksempel på funktionsdialog. I fejlsituationer udfyldes de tomme rammer med fejlstatusinformation. \f F_ 2_._3_._1_ _ _ _ _ _S_t_a_n_d_a_r_d_ _f_u_n_k_t_i_o_n_s_p_a_r_a_m_e_t_r_e_ 2.3.1 Som antydet i de forrige afsnit følger der med gennemgangen af den enkelte programfunktion en detaljeret beskrivelse af det mu- lige parametersæt. Imidlertid indeholder de enkelte funktioner en række fælles para- metre, som f.eks. angivelse af en diskettestations nummer. Disse fælles funktionsparametre er beskrevet i dette underafsnit. Her- udover findes en enkelt fælles forespørgsel 'Function number', som udskrives på henholdsvis system- og programniveau. Endelig indeholder systemet en række kommandolinier, som anvendes ved programkontrol af disketteskift. Disse er medtaget nedenfor. I_n_s_e_r_t_ _d_i_s_k_e_t_t_e_,_ _t_y_p_e_ _'_r_e_t_u_r_n_'_: Generelt skal brugeren sikre sig, at en passende diskette nu sættes i den eller de valgte diskettestation(er). Såfremt den ønskede diskette allerede sidder i, tastes blot 'return'. Et specialtilfælde optræder ved kopiering fra en diskette til en anden i et enkeltdrive system. Man må her skifte diskette under programkontrol, dvs. 'Insert source ...' henholdsvis 'Insert destination ...' kommandoerne aktiveres. I_n_s_e_r_t_ _s_o_u_r_c_e_ _d_i_s_k_e_t_t_e_,_ _t_y_p_e_ _'_r_e_t_u_r_n_'_: Source diskette: den diskette, hvorfra data hentes. Kommentar, se ovenfor. I_n_s_e_r_t_ _d_e_s_t_i_n_a_t_i_o_n_ _d_i_s_k_e_t_t_e_,_ _t_y_p_e_ _'_r_e_t_u_r_n_'_: Destination diskette: den diskette, hvortil data skrives. Kommentar, se ovenfor. M_i_n_i_/_m_a_x_i_ _(_m_i_/_m_a_)_: Den angivne tekst 'mi' eller 'ma' definerer, hvorvidt den på- gældende installation er et MINI- eller MAXI-system. S_e_l_e_c_t_ _d_r_i_v_e_ _n_u_m_b_e_r_ _(_1_._._2_)_: Det angivne nummer referer direkte til diskettestationens num- merangivelse. Tilladte værdier er 1 og 2. Defaultværdien er 1. \f S_o_u_r_c_e_ _d_r_i_v_e_ _n_u_m_b_e_r_ _(_1_._._2_)_: Kommentar som ovenfor. Default-værdien er 1. D_e_s_t_i_n_a_t_i_o_n_ _d_r_i_v_e_ _n_u_m_b_e_r_ _(_1_._._2_)_: Kommentar som ovenfor. Defaultværdien er 2. Generelt anføres at valg af 'source'='destination' medfører, at programfunktionen efter hver transport beder brugeren om et disketteskift. 2_._3_._2_ _ _ _ _ _F_u_n_k_t_i_o_n_s_a_f_b_r_y_d_e_l_s_e_r_ _o_g_ _r_e_p_e_t_i_t_i_o_n_ 2.3.2 Såfremt der indtastes en uønsket parameterværdi, eller såfremt funktionskaldet af andre årsager ønskes afsluttet, benyttes 'escape'-tasten. Den igangværende parameterforespørgsel afbrydes og kontrol overgives til hjælpeprogrammet. En afbrydelse under funktionsudførelse er ikke tilladt. Såfremt der under afvikling af funktionen optræder fejl på de ydre enhe- der (f.eks. diskettestation offline, diskette skrivebeskyttet), eller der på anden vis optræder systemfejl, vil udførelsen blive afbrudt, og en fejlmeddelelse udskrives sammen med en forespørg- sel, om funktionen ønskes genoptaget. I fig. 5 er vist et eksem- pel på en fejlsituation. Såfremt man vælger at stoppe afvikling- en, overgives kontrollen til hjælpeprogrammet. I de enkelte drivprogrammoduler til de ydre enheder (f.eks. di- skettedrivprogrammet) findes indbygget automatiske repetitions- mekanismer for fejl af temporær art. Bad cylinder number: xxx ERROR yyy Repeat (y/n): / Figur 5: Eksempel på funktionsfejldialog. \f F_3_._ _ _ _ _ _ _ _ _D_I_S_K_E_T_T_E_ _F_U_N_K_T_I_O_N_S_P_R_O_G_R_A_M_ 3. De nødvendige funktioner til formattering, checklæsning og kopi- ering af disketter er indeholdt i dette program og gennemgåes i de følgende afsnit. De understøttede funktioner er listet i fig. 6. DISKETTES MAINTENANCE UTILITY vers.xx.yy ----------------------------- Select function: 1. Diskette Format 2. Diskette Verify 3. Diskette Copy 4. End Function number: / Figur 6: Men for diskette funktionsprogram 3_._1_ _ _ _ _ _ _ _F_o_r_m_a_t_t_e_r_i_n_g_ 3.1 Programfunktionen til formattering af disketter kan anvendes til generering af en række forskellige formater. En kort beskrivelse af standardformater er givet i bilagene C og D, der generelt om- handler MAXI- og MINI-disketter. Funktionen stiller en række spørgsmål som vist samlet i fig. 8. Nedenfor er angivet på tabelform de mulige parameterkombinationer samt et standard ('default') sæt. Det bemærkes, at MINI-disketter skal formatteres før brug, mens MAXI-disketter leveres formatterede. Det anbefales, at man kon- trollerer sine MAXI-disketter for korrekt format som beskrevet i bilag C. Er resultatet negativt, kan disketten reformatteres. \f _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _P_a_r_a_m_e_t_r_e_ _ _ _ _ _S_t_a_n_d_a_r_d_ _ _ _ _ _ _ _ _ _ _ _V_æ_r_d_i_-_o_m_r_å_d_e_ _ _ _ _ _ _ _ _ _ _ _ (mi/ma) Som diskette- Mini (mi), Maxi (ma) station 1 Drive number Diskettestation 1 Diskettestation 1 og 2 Density Dobbelt density Enkelt/dobbelt tæthed Side Dobbeltsidet Enkelt/dobbelt sidet _S_e_c_t_o_r_l_e_n_g_t_h_ _ _5_1_2_ _b_y_t_e_s_ _ _ _ _ _ _ _ _ _ _1_2_8_*_,_ _2_5_6_,_ _5_1_2_ _ _ _ _ _ _ _ _ _ * 128 bytes må ikke anvendes i dobbelt density systemer. Figur 7: Parametertabel for funktionen 'format'. Function: Diskette Format Mini/maxi (mi/ma): aa Drive number (1..2): x Single/double density (sd/dd): aa Single/double sided (ss/ds): aa Sectorlength (128/256/512): xxx Insert diskette, type 'return': Format active on cylinder xxx Figur 8: Parameterdialog for funktionen 'format'. 3_._2_ _ _ _ _ _ _ _C_h_e_c_k_l_æ_s_n_i_n_g_ 3.2 Programfunktionen kan benyttes til såvel formatkontrol som til datakontrol. Parameterdialogen er vist i fig. 10. Vælges para- metren 'rc' udføres formatchecklæsning. Vælges parametren 'wr' udskrives et testdatamønster og herefter checklæses disse testda- ta. \f Formatchecklæsning anvendes dels til kontrol af preformatterede disketter (MAXI-disketter) dels til kontrol af programfunktionen 'format'. Normalt skal en checklæsning kunne udføres på hele dis- ketten uden fejl. Fejler en checklæsning inden for det anbefalede brugsområde (se bilagene C og D), må disketten kasseres. Datachecklæsning anvendes til generel medie- og systemtest. En datachecklæsning vil ofte ikke kunne gennemføres for hele disket- ten uden fejl. Dette gælder specielt for MAXI-disketternes ved- kommende. Fejler en læsning inden for det anbefalede brugsområde, kan man enten kassere disketten eller anvende den med det reduce- rede område. I sidstnævnte tilfælde s_k_a_l_ man anvende den fundne maksimale sidestørrelse som parameter til kataloginitialiserings- funktionen i stedet for standardværdien. Funktionen stiller en række forespørgsler som vist samlet i fig. 10. I bilagene C og D er anført en række sammenhørende størrelser for diskettetype, -format og det maksimale antal sider 512 by- tes, brugeren har rådighed over. De øvrige parameterværdier frem- går af fig. 9. _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _P_a_r_a_m_e_t_r_e_ _ _ _ _ _S_t_a_n_d_a_r_d_ _ _ _ _ _ _ _ _ _ _ _V_æ_r_d_i_-_o_m_r_å_d_e_ _ _ _ _ _ _ _ _ _ _ _ (rc/wr) wr rc (format-check) og wr (data-check) (mi/ma) Som diskette- Mini (mi), maxi (ma) station 1 Drive number Diskettestation 1 Diskettestation 1 og 2 First page 400/1200* Fra 1 til last page Last page 540/1830* Fra 1 til max* Cylinder zero Nej (n) Y (medtages) og _(_y_/_n_)_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _n_ _(_u_d_e_l_a_d_e_s_)_*_*_ _ _ _ _ _ _ _ _ _ * Se fig. 19 og 20 i bilagene C og D. Ovenfor er anført værdier- ne svarende til standardformattering. B_e_m_æ_r_k_: der checklæses ikke på den yderste del af disketten. ** First/last påvirkes ikke af, hvorvidt cylinder 0 medtages eller ej. Figur 9: Parametertabel for funktionen 'verify'. \f Function: Diskette Verify Read crc or write and read (rc/wr): aa Mini/maxi (mi/ma): aa Drive number (1..2): x First page (pagesize 512): xxx Last page (pagesize 512): xxx Include cylinder zero (y/n): a Insert diskette, type 'return': Verify active on page xxx Figur 10: Parameterdialog for funktionen 'verify'. 3_._3_ _ _ _ _ _ _ _K_o_p_i_e_r_i_n_g_ 3.3 Denne programfunktion benyttes til kopiering af data fra en dis- kette til en anden. Som standardparameter anvendes diskettesta- tion nummer 1 til originaldisketten og diskettestation nummer 2 til kopidisketten. Man kan naturligvis frit vælge diskettestation til henholdsvis original og kopi - også samme diskettestation - om det måtte ønskes. Parameterdialogen er vist i fig. 12. Specielt bemærkes, at kopiering af en systemdiskette skal inclu- dere cylinder 0. Kopiering iøvrigt sker fra første side og frem til 'antal sider' ('amount of pages'). Kopiering bør principielt omfatte hele brugerområdet som defineret i bilagene C og D. Pa- rameterværdierne fremgår af fig. 11. \f _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _P_a_r_a_m_e_t_r_e_ _ _ _ _ _S_t_a_n_d_a_r_d_ _ _ _ _ _ _ _ _ _ _ _V_æ_r_d_i_-_o_m_r_å_d_e_ _ _ _ _ _ _ _ _ _ _ _ _ (mi/ma) Som diskette- Mini (mi), maxi (ma) station 1 Source Diskettestation 1 Diskettestation 1 og 2 Destination Diskettestation 2 Diskettestation 1 og 2 Amount of 540/1830* Fra 1 til max* pages Cylinder zero Nej (n) Y (medtages) og _(_y_/_n_)_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _n_ _(_u_d_e_l_a_d_e_s_)_ _ _ _ _ _ _ _ _ _ _ _ _ * Se fig. 19 og 20 i bilagene C og D. Ovenfor er anført værdierne svarende til standardformattering. Figur 11: Parametertabel for funktionen 'copy'. Function: Diskette Copy Mini/maxi (mi/ma): aa Source drive (1..2): x Destination drive (1..2): x Amount of pages: xxx Include cylinder zero (y/n): a _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Insert _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ diskette, type 'return': Copy active on page xxx Figur 12: Parameterdialog for funktionen 'copy'. \f F_ 4_._ _ _ _ _ _ _ _ _K_A_T_A_L_O_G_ _F_U_N_K_T_I_O_N_S_P_R_O_G_R_A_M_ 4. De nødvendige funktioner til initialisering af katalogdisketter og listning af katalogindhold er indeholdt i dette program og gennemgåes i de følgende afsnit. De understøttede funktioner er listet i fig. 13. DIRECTORY MAINTENANCE UTILITY vers. x. y ----------------------------- Select function: 1. Generate Directory System (initialise volume) 2. List Directory 3. End Function number / Figur 13: Men for katalog funktionsprogram. 4_._1_ _ _ _ _ _ _ _I_n_i_t_i_a_l_i_s_e_r_i_n_g_ 4.1 Programfunktionen til initialisering af katalogdisketter skriver et nyt katalog på disketten. Det samme filsystem anvendes af hjælpeprogramsystemet og COMAL80, og funktionen kan derfor benyt- tes generelt for disse systemer. Funktionen stiller en række forespørgsler som vist samlet i fig. 15. De enkelte parametre er indbyrdes uafhængige. Bindenavnet ("volume name") kan vælges frit. Antallet af sider, som filsyste- met råder over, må vælges inden for det anbefalede brugerområde, se bilagene C og D. Det bemærkes, at der ikke kan oprettes mere end et katalog pr. diskette. \f Parametren 'slice-size' definerer den enhed, som filsystemet ar- bejder med, når der tildeles sider til filen. En fil indeholder altid et helt antal 'slices'. Parametren har betydning specielt i forbindelse med store filsystemer, men kan her vælges frit inden for intervallet. Endelig angives det maksimale antal filer, systemet kan oprette. De mulige parameterværdier er angivet i fig. 14. _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _P_a_r_a_m_e_t_r_e_ _ _ _ _ _S_t_a_n_d_a_r_d_*_ _ _ _ _ _ _ _ _ _ _V_æ_r_d_i_-_o_m_r_å_d_e_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Name SYS 16 alfanumeriske tegn Number of 540/1830** 1 til max** pages Slice size 1 1 til max Number of 40 1 til (max div 'slice size') _f_i_l_e_s_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ * Standard refererer til de værdier, der er valgt for hjælpe- programsystemets filsystem. ** Se bilagene C og D. Ovenfor er anført værdierne svarende til standard disketteformattering. Figur 14: Parametertabel for funktionen 'initialise volume'. Function: Initialise Volume Name of volume: aAaAaAaAaAaAaAaA Number of pages on volume: xxxx Slice size (in pages): xx Maximum number of files on volume: xxx Drive number (1..2): Insert diskette, type 'return': Initialisation in progress Figur 15: Parameterdialog for funktionen 'initialise volume'. \f 4_._2_ _ _ _ _ _ _ _L_i_s_t_n_i_n_g_ 4.2 Denne programfunktion benyttes til listning af katalogindhold. Funktionen kræves kun med en parameterangivelse: diskettestation nummer, se fig. 17. De mulige parameterværdier er angivet på tabelform i fig. 16. Det bemærkes, at formatet for listningen kan blive ændret. Listningen er selvforklarende (se fig. 18). _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _P_a_r_a_m_e_t_e_r_ _ _ _ _ _S_t_a_n_d_a_r_d_ _ _ _ _ _ _ _ _ _ _ _V_æ_r_d_i_o_m_r_å_d_e_ _ _ _ _ _ _ _ _ _ _ _ _ _D_r_i_v_e_ _n_u_m_b_e_r_ _ _D_i_s_k_e_t_t_e_s_t_a_t_i_o_n_ _1_ _ _D_i_s_k_e_t_t_e_s_t_a_t_i_o_n_ _1_ _o_g_ _2_ _ Figur 16: Parametertabel for funktionen 'list directory'. Function: List Directory Drive number (1..2): Insert diskette, type 'return': Listing in progress Figur 17: Parameterdialog for funktionen 'list directory'. \f list of Volumedirectory, unit x --NAME-- --TYPE--- ------------------ voldescr file . directory M_ . . . P_ . * End of list * Type 'return' to continue: / Figure 18: Format for kataloglistning. \f F_ A_._ _ _ _ _ _ _ _ _R_E_F_E_R_E_N_C_E_R_ A. \f F_ B_._ _ _ _ _ _ _ _ _S_I_K_K_E_R_H_E_D_S_K_O_P_I_E_R_I_N_G_ B. Som omtalt i indledningen, indeholder dette bilag en detaljeret beskrivelse af en procedure til anvendelse ved kopiering af dis- ketter og hermed systemer. I proceduren beskrives følgende hoved- funktioner: 1) autoload 2) valg af diskette funktionsprogram 3) valg af funktionen 'format' 4) valg af funktionen 'copy' For disketterne anvendes følgende betegnelser: 1) systemdisketten: hjælpeprogramdisketten 2) originaldisketten: den diskette, der ønskes kopieret 3) kopidisketten: den diskette, der kopieres til (ny/tom) Ved at anvende systemdisketter (f.eks. hjælpeprogramdisketten eller COMAL80-disketten) fås en sikkerhedskopi, der kan auto- loades. 1.1 Indsæt systemdisketten i diskettestation 1 og tryk 'reset'. Udskrift efter ca. 5 sekunder: 'RC700 UTILITY SYSTEM vers.xx.yy' M_ . . (se fig. 2, kapitel 2) P_ . 'Function number:' 2.1 Tast '1' og herefter '<-'. Udskrift med det samme: 'DISKETTES MAINTENANCE UTILITY vers.xx.yy' M_ . . (se fig. 6, kapitel 3) P_ . 'Function number:' \f Hvis minidisketter anvendes, fortsættes med 3.1. I modsat fald kan man gå direkte til punkt 4.1. Udføres punkt 3 også for maxi- disketter, anvendes de i parentes anførte parametre. 3.1 Tast '1' og herefter '<-'. Udskrift med det samme: 'Function: Diskette Format' 'Mini/maxi (mi/ma):' Kommunikationen er vist i fig. 7, kapitel 3. 3.2 Tast 'mi' og herefter '<-'. (Tast 'ma' og herefter '<-') Udskrift med det samme: 'Drive number (1..2):' 3.3 Tast '1' samt '<-'. Udskrift med det samme: 'Single/double density (sd/dd):' 3.4 Tast 'dd' samt '<-'. Udskrift med det samme: 'Single/double sided (ss/ds):' 3.5 Tast 'ds' samt '<-'. Udskrift med det samme: 'Sectorlength (128/256/512):' 3.6 Tast '512' samt '<-'. Udskrift med det samme: 'Insert diskette, type <return':' 3.7 Udtag systemdisketten og indsæt kopidisketten af type 0 i diskettestation 1. Tast '<-'. Typen er defineret i bilag D. \f (Udtag systemdisketten og indsæt kopidisketten af type 2 i diskettestation 1. Tast '<-'. Typen er defineret i bilag C). Udskrift med det samme: 'Format active on cylinder xxx' 3.8 Vent indtil funktionen er afsluttet. Udskrift efter ca. 30 sekunder: (Udskrift efter ca. 60 sekunder:) 'DISKETTES MAINTENANCE UTILITY vers.xx.yy' '* function completed *' M_ . . (se fig. 6, kapitel 3) P_ . 'Function number:' 4.1 Tast '3' samt '<-'. Udskrift med det samme: 'Function: Diskette Copy' 'Mini/maxi (mi/ma):' Kommunikationen er vist i fig. 12, kapitel 3. 4.2 Tast 'mi' samt '<-'. (Tast 'ma' samt '<-') Udskrift med det samme: 'Source drive (1..2):' 4.3 Tast '1' samt '<-'. Udskrift med det samme: 'Destination drive (1..2)' 4.4 Tast '1' samt '<-' eller '2' samt '<-', hvis der er to dis- kettestationer til rådighed. Udskrift med det samme: 'Amount of pages:' \f 4.5 Tast '540' samt '<-'. (Tast '1830' samt '<-') Udskrift med det samme: 'Include cylinder zero (y/n):' 4.6 Tast 'y' samt '<-'. Udskrift med det samme: 'Insert source diskette, type 'return':' 4.7 Indsæt originaldiskette i diskettestation 1. Tast '<-'. Såfremt 'destination' er forskellig fra 'source', vil syste- met bede om 'destination'-disketten - punkt 4.4. I modsat fald læses fra 'source' disketten og dernæst skal 'destination'-disketten sættes i diskettestation 1, hvoref- ter systemet automatisk beder om disketteskift, indtil kopi- ering er tilendebragt. Den videre sekvens ser da således ud, idet situationen med 1 diskettestation benævnes a). a Udskrift efter ca. 5 sekunder: 'Insert destination diskette, type 'return':' 4.8a Udtag originaldisketten og sæt kopidisketten i diskettesta- tion 1. Udskrift efter ca. 5 sekunder: 'Insert source diskette, type 'return':' 4.9a Udtag kopidisketten og sæt originaldisketten i diskettesta- tion 1. \f Således fortsættes indtil funktionen er afsluttet. Herefter fås udskriften: 'DISKETTES MAINTENANCE UTILITY vers.xx.yy' '* function completed *' Fortsæt med punkt 5. b Udskrift med det samme: 'Insert destination diskette, type 'return':' 4.8b Indsæt kopidisketten i diskettestation 2. 4.9b Vent indtil funktionen er afsluttet. Herefter fås udskriften: 'DISKETTES MAINTENANCE UTILITY vers.xx.yy' '* function completed *' Fortsæt med punkt 5. 5. Den nye diskette (kopidisketten) er nu genereret. Udfør autoload med kopidisketten i diskettestation 1. Alternativt kan man vælge at fortsætte genereringen. I så fald fortsættes med punkt 3. \f F_ C_._ _ _ _ _ _ _ _ _M_A_X_I_-_D_I_S_K_E_T_T_E_ _B_E_S_K_R_I_V_E_L_S_E_ C. En 8" diskette benævnes en 'MAXI'-diskette. Der findes forskelli- ge typer såvel enkelt som dobbelt sidede og enkelt henholdsvis dobbelt density formatterede (med forskellig sektorlængde). Ne- denfor er listet en række forskellige disketter, der er godkendt af RC. 1) 3M 743-0-512 2) VERBATIM ('DATALIFE'), DD34-4015 (-18664) Disse disketter (eller hermed kompatible) kan bestilles gennem RC. Typebetegnelsen er 'Type 2', der dækker over dobbelt density, dobbelt sidede, 512 bytes pr. sektor disketter. Som det fremgår af ovenstående leveres MAXI-disketter som preformatterede disket- ter, dvs. sektormærker og cylindermærker er skrevet på disketten. Det står brugeren frit at formattere disketten under anvendelse af funktionen 'format'. Det vil dog altid være hensigtsmæssigt at checklæse disketten før brugen (funktionen 'verify'), idet leve- randørkvaliteten er lidt svingende, ligesom der er konstateret direkte formatfejl på enkelte disketter. Såfremt en checklæsning afslører fejl, vil en formattering kunne udføres med parametre som antydet i fig. 19, der iøvrigt beskri- ver sammenhængen mellem fysiske disketteparametre og brugerværdi- er (dvs. kapacitet i antal sider 512 bytes samt sektorlængde i bytes), som refereret i beskrivelsen af de enkelte programfunkti- oner. Det anbefales at anvende 512 bytes/sektor formatet, som er opti- malt i COMAL80-systemer, hvor der anvendes en sidestørrelse i ka- taloget på 512 bytes. Som det fremgår af fig. 19 udnyttes diskettens fulde kapacitet ikke p.t. Dette forhold skyldes dels reservering af cylinder 0 til systemformål dels den kendsgerning, at dobbelt density forma- tet stiller store krav til mediet. For at undgå problemer med for lille levetid af lagrede data og/eller medieselektering, anvendes de sidste 15 cylindre ikke. \f _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Dobbelt density, dobbelt sidet MAXI-diskette _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Diskette Sektorlængde Antal sektorer Cylindre Kapacitet i (bytes) pr. cylinder (max 76) sider 512 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _b_y_t_e_s_ _ _ _ _ _ _ _ _ _ 256 2*26 1-61 1586 (793 Kb) _R_C_ _s_t_a_n_d_a_r_d_ _ _5_1_2_ _ _ _ _ _ _ _ _ _ _ _2_*_1_5_ _ _ _ _ _ _ _ _ _ _ _ _1_-_6_1_ _ _ _ _ _ _1_8_3_0_ _(_9_1_5_ _K_b_)_ _ Figure 19: MAXI-diskette, fysisk og logisk beskrivelse. \f F_ D_._ _ _ _ _ _ _ _ _M_I_N_I_-_D_I_S_K_E_T_T_E_ _B_E_S_K_R_I_V_E_L_S_E_ D. En 5 1/4" diskette benævnes en 'MINI'-diskette. Der findes for- skellige typer såvel enkelt som dobbeltsidede af forskellig kva- litet. Det anbefales at benytte den bedste kvalitet med henblik på dobbelt-density anvendelse. Nedenfor er listet en række for- skellige disketter der er godkendt af RC. 1) MEMOREX 3201-3421 2) VERBATIM ('DATALIFE'), MD550-01 (-18191) Disse disketter (eller hermed kompatible) kan bestilles gennem RC. Typebetegnelsen er 'Type 0', der dækker over dobbelt density, dobbelt sidede MINI-disketter. MINI-disketter leveres altid uformatterede, dvs. der skal skrives sektormærker og cylindermærker før anvendelse. Denne funktion skal udføres af brugeren før enhver anvendelse af disketterne ved brug af funktionen 'format'. Det står brugeren frit at vælge mellem en række forskellige for- mater som antydet i fig. 20, der iøvrigt beskriver sammenhængen mellem fysiske disketteparametre og brugerværdier som refereret i beskrivelsen af de enkelte funktioner. Det anbefales at anvende 512 bytes/sektor formatet, som er opti- malt i COMAL80-systemer, hvor der anvendes en sidestørrelse i kataloget på 512 bytes. Som det fremgår af fig. 20 udnyttes diskettens fulde kapacitet ikke p.t. Dette forhold skyldes dels reservering af cylinder 0 til systemformål dels den kendsgerning, at dobbelt density for- matet stiller store krav til mediet. For at undgå problemer med for lille levetid af lagrede data og/eller medieselektering, an- vendes de sidste 5 cylindre ikke. \f _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Dobbelt density, dobbeltsidet MINI-diskette (TYPE 0) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Diskette Sektorlængde Antal sektorer Cylindre Kapacitet i (bytes) pr. cylinder (max 35) sider 512 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _b_y_t_e_s_ _ _ _ _ _ _ _ _ _ 256 2*16 1-30 480 (=240 Kb) _R_C_ _s_t_a_n_d_a_r_d_ _ _5_1_2_ _ _ _ _ _ _ _ _ _ _ _2_*_9_ _ _ _ _ _ _ _ _ _ _ _ _ _1_-_3_0_ _ _ _ _ _ _5_4_0_ _(_=_2_7_0_ _K_b_)_ _ Figure 20: MINI-diskette, fysisk og logisk beskrivelse. \f F_ E_._ _ _ _ _ _ _ _ _K_O_N_F_I_G_U_R_E_R_I_N_G_ _-_ _S_T_A_N_D_A_R_D_K_O_N_F_I_G_U_R_A_T_I_O_N_ E. Hjælpeprogrampakken er konfigureret fra RC med konverteringstabel svarende til dansk standardtastatur. Herudover anvendes standard konfigurering for de ydre enheder som vist i fig. 21, der beskri- ver filen 'SYSCONFI'. Under autoloadproceduren læses filen og de angivne filnavne opsøges i kataloget. I den gældende udgave af hjælpeprogramsystemet er 'SYSCONFI' fast defineret. Det er således ikke muligt at ændre på de angivne pa- rametre. Det samme forhold gør sig gældende for COMAL80-systemer. Hjælpeprogramsystemet kan derfor p.t. ikke anvendes til rekonfi- gurering af hverken COMAL80-systemer eller hjælpeprogramsystemet selv. I fig. 22 er der givet en beskrivelse af de mulige konfigure- ringsværdier, der tænkes supporteret. _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _F_i_l_n_a_v_n_ _ _ _ _ _ _F_u_n_k_t_i_o_n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _B_e_m_æ_r_k_n_i_n_g_e_r_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ SYSSA Basissystem Indeholder drivprogrammer for de ydre enheder SYSCDKS Konverteringstabel Understøtter standard dansk tastatur SYSUTSYS Systemprogram Hjælpeprogramsystem PRINTER Device-descriptor Indeholder parametre for linie-skriver således: 1200 Baud, 2 stopbits lige paritet, 7 databits INLINE Device-descriptor Indeholder indparametre for kommunikationslinien således: 1200 Baud, 2 stopbits lige paritet, 7 databits OUTLINE Device-descriptor Indeholder udparametre for kommunikationslinien som _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _o_v_e_n_f_o_r_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Figur 21: 'SYSCONFI' format og indhold ifølge RC standard. \f _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _F_u_n_k_t_i_o_n_ _ _ _ _ _ _ _ _ _ _B_e_m_æ_r_k_n_i_n_g_e_r_ _ _ _ _ _K_o_n_f_i_g_u_r_a_t_i_o_n_s_l_i_s_t_e_ _(_=_ _f_i_l_n_a_v_n_e_)_ _ _ _ _ Basissystem SYSSA: et 'stand-alone' system (SA) SYSMA: et 'master' system (MA) SYSSL: et 'slave' system (SL) Konverterings- SYSCDKS: Dansk standard tabel SYSCDKB: Dansk bibliotek SYSCUK: UK-ascii SYSCUS: US-ascii SYSCS: Svensk SYSCD: Tysk Systemprogram SYSUTSYS: Hjælpeprogramsystem SYSCOMAL: COMAL80 Device-descriptor PRINTER aAaA...: alle mulige kombinationer af BR, DL, P, S Device-descriptor INLINE bBbB...: alle mulige kombinationer af BR, DL, P, S Device-descriptor OUTLINE cCcC...: alle mulige kombinationer af _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _B_R_,_ _D_L_,_ _P_,_ _S_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ BR - transmissionshastighed: 50, 75, 110, 300, 600, 1200, 2400, 4800 eller 9600 bps. DL - tegnlængde (antal bits/tegn): 5, 6, 7 eller 8 bits pr. tegn P - paritet: ingen, lige eller ulige paritet S - stopbits: 1, 1 1/2 eller 2 stopbits/tegn Figur 22: 'SYSCONFI' - parametertabel. \f F_ F_._ _ _ _ _ _ _ _ _A_U_T_O_L_O_A_D_ _P_R_O_C_E_D_U_R_E_ F. Tænd for strømmen (tryk på den røde 'POWER' afbryder). Indsæt systemdisketten i diskettestation 1 (1 af 2). Tryk på 'RESET'-switchen. Kommentar: Systemet autoloades og nedenfor stående tekst skrives på skærmen: 'RC700 UTILITY SYSTEM vers.xx.yy' M_ . . P_ . 'Function number: /' Herefter vælges funktion som beskrevet i kapitel 3 og fremefter. \f F_ G_._ _ _ _ _ _ _ _ _S_P_E_C_I_A_L_T_E_G_N_ G. I forbindelse med programafviklingen anvendes en række kontrol- tegn med overordnet betydning for kommunikationen. 1. Carriage-return eller blot return (vognretur): '<-' Indtastning af dette tegn markerer afslutning af indtastet linie. 2. Cursor-positionering (markørflytning): '<-' eller '->' Indtastning af disse tegn henholdsvis venstrepil eller højre- pil er lovlig, såfremt resultatet er en markørposition inden for det aktive inddatafelt, se fig. 23. Markørposition Linie: '......': Udskrift Inddatafelt I denne situation er '->' lovlig mens '<-' er ulovlig. Figur 23: Inddatafelt, eksempel med 3 positioner. 3. Afbrydelse (escape): 'ESC' Aktivering af denne tast medfører afbrydelse af aktiv dialog. Funktionstasten har derfor alene speciel betydning under pa- rameterindtastning til en aktiv funktion. Funktionen afbrydes og kontrollen overgives til det aktive program. Teksten '* function aborted *' udskrives, og herefter listes som sæd- vanligt en funktionsmen. Det bemærkes, at der p.t. ikke gives mulighed for afbrydelse af en aktiv funktion. I forbindelse med fysiske operationer på en diskettestation er det dog muligt at stoppe udførelsen ved simpelthen at fjerne disketten. \f F_ H_._ _ _ _ _ _ _ _ _F_E_J_L_S_I_T_U_A_T_I_O_N_E_R_ _-_ _F_E_J_L_K_O_D_E_T_A_B_E_L_ Fejlindtastninger til hjælpeprogram systemet besvares generelt ved 'BELL', dvs. brugeren informeres ved et hørbart fejlsignal. Konsekvensen af en fejlindtastning er generelt beskrevet i kapitel 2. Herudover kan der optræde konfigurationsfejl, dvs. den valgte funktion kan ikke udføres med det aktuelle parametersæt på den givne fysiske konfiguration. Eksempel: kopiering fra diskettesta- tion 1 til diskettestation 2 i et system med 1 diskettestation. Endvidere kan der opstå funktionsfejl, dvs. fejl på de ydre en- heder eller mediefejl af enten temporær eller blivende karakter. Eksempel: CRC-fejl på diskette (temporær) eller skrivning på skrivebeskyttet diskette (blivende - også kaldet 'hård' fejl). Endelig kan der optræde systemfejl med en af følgende 2 fejlsitu- ationer til følge: 1) systemet er låst 2) en systemfejl udskrives Funktions- og konfigureringsfejl udskrives af funktionen i fejl- kode (se kapitel 2). Betydningen fremgår af fig. 24. \f _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Fejl Fejl Bemærkninger kategori kode _ _ _ _ _ _ _ _ _ _ _ _ _ _n_r_._ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Systemfejl 1) Låst system: ingen information 2) Systemfejltekst: '*** EXCEPTION: xxxx yyyy ***' 1) og 2) søges afhjulpet ved kontrol af alle ledningsforbindelser og genstart med skrivebeskyttet sikkerhedskopi. Af- hjælpes fejlen ikke, rapporteres fejlen med angivelse af såvel 'xxxx' og 'yyyy' i_ _t_i_l_f_æ_l_d_e_ _2_._ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Konfigure- ringsfejl 211 Timeout: Ingen diskettestation, ingen diskette FD:* 203 Hård fejl: Som 11, inklusiv kabelfejl _ _ _ _ _ _ _ _ _ _ _ _ _ _2_0_1_ _ _ _ _ _ _ _ _R_e_p_e_t_i_t_i_o_n_s_f_e_j_l_:_ _F_e_j_l_e_n_ _i_k_k_e_ _a_f_h_j_u_l_p_e_t_ _ _ Funktions- fejl 227 Diskettefejl. Formatet er fejlbehæftet FD: 219 Diskettefejl. Skrivebeskyttet _ _ _ _ _ _ _ _ _ _ _ _ _ _2_0_2_ _ _ _ _ _ _ _ _D_i_s_k_e_t_t_e_f_e_j_l_._ _C_R_C_-_f_e_j_l_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ * FD: diskettedrivprogram. Figur 24: Fejlkodetabel. \f «eof»