|
|
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: 153216 (0x25680)
Types: TextFile
Names: »D48«
└─⟦2294a1cd1⟧ Bits:30005867/disk06.imd Dokumenter (RCSL m.m.)
└─⟦this⟧ »D48«
i
T_A_B_L_E_ _O_F_ _C_O_N_T_E_N_T_S_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _P_A_G_E_
1. GENERAL DESCRIPTION .................................... 1
2. LOGIC INTERCONNECTION .................................. 2
3. PROGRAMMING THE DMA-CHANNEL ............................ 3
4. PROGRAMMING THE Z80A-CTC ............................... 5
5. PROGRAMMING OF THE WDC701 .............................. 6
5.1 Task Files Basics ................................. 6
5.2 Register Array .................................... 6
5.3 Register Definitions .............................. 6
5.3.1 Command Register ........................... 6
5.3.2 Status Register ............................ 6
5.3.3 SDH Register ............................... 7
5.3.4 Cylinder Number ............................ 8
5.3.5 Sector Number .............................. 8
5.3.6 Sector Count ............................... 8
5.3.7 Error Register ............................. 8
5.3.8 Write Precomp .............................. 9
5.3.9 Data Register .............................. 9
5.4 Status Registers .................................. 9
5.5 Status Register Bits .............................. 10
5.5.1 Error ...................................... 10
5.5.2 Data Request ............................... 10
5.5.3 Seek Complete .............................. 10
5.5.4 Write Fault ................................ 10
5.5.5 Ready ...................................... 10
5.5.6 Busy ....................................... 11
5.6 Error Register Bits ............................... 11
5.6.1 DAM Not Found .............................. 11
5.6.2 TR000 Error ................................ 11
5.6.3 Aborted Command ............................ 11
5.6.4 ID Not Found ............................... 11
5.6.5 CRC Error ID ............................... 12
5.6.6 CRC Error Data ............................. 12
5.6.7 Bad Block Detect ........................... 12
\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_
6. COMMANDS ............................................... 13
6.1 Command Summary ................................... 13
6.1.1 Stepping Rates ............................. 14
6.1.2 DMA Read ................................... 14
6.2 Type I Commands ................................... 14
6.2.1 Restore .................................... 14
6.2.2 Seek ....................................... 15
6.3 Type II Commands .................................. 15
6.3.1 Read Sector ................................ 16
6.3.1.1 Implied Seek ...................... 16
6.3.1.2 Retries ........................... 16
6.3.1.3 Auto Restore ...................... 16
6.3.1.4 Hard Errors ....................... 17
6.3.1.5 Error Severity Levels ............. 17
6.3.1.6 Normal Completion ................. 18
6.4 Type III Commands ................................. 18
6.4.1 Write Sector ............................... 18
6.4.1.1 Implied Seek ...................... 18
6.4.1.2 Retries ........................... 19
6.4.1.3 Auto Restore ...................... 19
6.4.1.4 Hard Errors ....................... 19
6.4.2 Format Track ............................... 19
6.4.2.1 Implied Seek ...................... 20
6.4.2.2 Track Format ...................... 21
7. FORMATTING ............................................. 22
7.1 Formatting a Track ................................ 22
7.2 Interleaving ...................................... 22 \f
F_ 1_._ _ _ _ _ _ _ _ _G_E_N_E_R_A_L_ _D_E_S_C_R_I_P_T_I_O_N_ 1.
This manual is a description of the Winchester Disk Controller
WDC701 connected to the RC702 microcomputer system. The control-
ler WDC701 is based on the WD1000 Winchester disk controller from
WESTERN DIGITAL CORPORATION. The interconnection to RC702 is made
using WCT701 Winchester Controller Terminals and WCA701 Winches-
ter Controller Adapter. WCA701 is housed in RC702 and contains
the interconnection cable and WDC701. WCT701 is housed in the
same chassis as the first Winchester Disk Drive. The interconnec-
tion is shown in fig. 1.
\f
F_ 2_._ _ _ _ _ _ _ _ _L_O_G_I_C_ _I_N_T_E_R_C_O_N_N_E_C_T_I_O_N_ 2.
Information to and from the controller is made using the 8 regis-
ters in the WDC701. The addresses used are 60 (Hex) to 67 (Hex).
Data transfer between the controller and the memory is done using
the DMA channel No 0. An interrupt from the controller is in the
WCA701 supplied to a Z80A-CTC integrated circuit, which converts
the interrupt, so it fits the Z80A-CPU.
Programming is divided into three parts:
1) Programming the DMA-channel No 0
2) Programming the Z80A-CTC to the interrupt circuit
3) Programming the five commands to the WDC701
\f
F_ 3_._ _ _ _ _ _ _ _ _P_R_O_G_R_A_M_M_I_N_G_ _T_H_E_ _D_M_A_-_C_H_A_N_N_E_L_ 3.
WDC701 uses channel No 0 of the DMA-circuit. The device number is
F0 to FF. The DMA in RC702 is based on Am9517A from Advanced
Micro Devices or 8237A from Intel. Programming information may be
supplied from one of the two companies.
\f
F_
Figure 1: Interconnection RC702 to Winchester.
\f
F_ 4_._ _ _ _ _ _ _ _ _P_R_O_G_R_A_M_M_I_N_G_ _T_H_E_ _Z_8_0_A_-_C_T_C_ 4.
The Z80A-CTC circuit is only used to change the interrupt from
the controller to fit the Z80A system. The Z80A-CTC contains four
channels and only channel No. 0 is used. The device numbers are
44 (Hex) to 47 (Hex). The Z80A-CTC is supplied from Zilog and
programming information may be supplied from this company.
\f
F_ 5_._ _ _ _ _ _ _ _ _P_R_O_G_R_A_M_M_I_N_G_ _O_F_ _T_H_E_ _W_D_C_7_0_1_ 5.
5_._1_ _ _ _ _ _ _ _T_a_s_k_ _F_i_l_e_s_ _B_a_s_i_c_s_ 5.1
The WDC701 performs all disk functions through a set of registers
called the Task File. These registers are loaded with parameters
such as Sector Number, Cylinder Number etc. prior to issuing a
command.
The registers are selected the following way.
5_._2_ _ _ _ _ _ _ _R_e_g_i_s_t_e_r_ _A_r_r_a_y_ 5.2
M_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_D_e_v_i_c_e_ _A_d_d_r_e_s_s_ _(_H_e_x_)_ _ _ _ _ _ _ _I_n_p_u_t_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _O_u_t_p_u_t_ _ _ _ _ _ _ _ _ _ _ _
60 Data Register Data Register
61 Error Register Write Precomp
62 Sector Count Sector Count
63 Sector Number Sector Number
64 Cylinder Low Cylinder Low
65 Cylinder High Cylinder High
66 Size/Drive/Head Size/Drive/Head
P_ _6_7_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _S_t_a_t_u_s_ _R_e_g_i_s_t_e_r_ _ _ _ _ _C_o_m_m_a_n_d_ _R_e_g_i_s_t_e_r_ _
5_._3_ _ _ _ _ _ _ _R_e_g_i_s_t_e_r_ _D_e_f_i_n_i_t_i_o_n_s_ 5.3
5_._3_._1_ _ _ _ _ _C_o_m_m_a_n_d_ _R_e_g_i_s_t_e_r_ 5.3.1
All commands are loaded into this register after the task regis-
ters have been set. T_h_e_ _C_o_m_m_a_n_d_ _R_e_g_i_s_t_e_r_ _i_s_ _a_ _w_r_i_t_e_-_o_n_l_y_ _r_e_g_i_s_-_
t_e_r_.
5_._3_._2_ _ _ _ _ _S_t_a_t_u_s_ _R_e_g_i_s_t_e_r_ 5.3.2
After execution of a command, the Status Register is internally\f
loaded with status information pertaining to the command ex-
ecuted. The Host must read this register to determine successful
execution of the command. The Status Register is a read-only re-
gister; it cannot be written to by the host. If the busy bit is
set, no other bits in this register are valid.
5_._3_._3_ _ _ _ _ _S_D_H_ _R_e_g_i_s_t_e_r_ 5.3.3
This register contains the sector Size, Drive select and Head
select bits. The SDH register is a R/W register organized as
follows:
M_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Bit _ _7_ _ _ _ _6_ _ _ _ _5_ _ _ _ _4_ _ _ _ _3_ _ _ _ _2_ _ _ _ _1_ _ _ _ _0_ _ _
Function 0 Sec. Drive Head
P_ _ _ _ _ _ _ _ _S_i_z_e_ _ _ _ _ _ _S_e_l_e_c_t_ _ _ _ _ _ _S_e_l_e_c_t_ _ _ _ _
M_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Bit Bit Sector Size
_ _ _6_ _ _ _ _ _ _5_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
0 0 256 Bytes
0 1 512 -
P_ _ _ _1_ _ _ _ _ _ _1_ _ _ _ _ _ _ _ _ _1_2_8_ _-_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
M_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Bit Bit Drive Selected
_ _ _4_ _ _ _ _ _ _3_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
0 0 Drive Sel 0
0 1 - - 1
1 0 - - 2
P_ _ _ _1_ _ _ _ _ _ _1_ _ _ _ _ _ _ _ _ _-_ _ _ _ _ _-_ _ _ _3_ _ _ _ _ _ _ _ _ _
M_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Bit Bit Bit Head Selected
_ _ _2_ _ _ _ _ _ _1_ _ _ _ _ _ _0_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
0 0 0 Head 0
0 0 1 - 1
0 1 0 - 2
0 1 1 - 3
1 0 0 - 4
1 0 1 - 5
1 1 0 - 6
P_ _ _ _1_ _ _ _ _ _ _1_ _ _ _ _ _ _1_ _ _-_ _ _ _ _7_ _ _ _ _ _ _ _ _ _ _ _ _ _ _
\f
5_._3_._4_ _ _ _ _ _C_y_l_i_n_d_e_r_ _N_u_m_b_e_r_ 5.3.4
These two registers form the cylinder number where the head is to
be positioned on a Seek, Read or Write command. Internally, a se-
parate set of Cylinder register values is maintained for each
drive. The two least significant bits of the Cylinder High regis-
ter form the most significant bits of the cylinder number as il-
lustrated below.
C_y_l_i_n_d_e_r_ _H_i_g_h_ C_y_l_i_n_d_e_r_ _L_o_w_
M_ Register bits: 76543210 76543210
P_ Cylinder bits: A9 76543210
5_._3_._5_ _ _ _ _ _S_e_c_t_o_r_ _N_u_m_b_e_r_ 5.3.5
This register is loaded with the desired sector number prior to a
Read or Write command. The Sector Number register is a R/W regis-
ter and may be read or written to by the host.
5_._3_._6_ _ _ _ _ _S_e_c_t_o_r_ _C_o_u_n_t_ 5.3.6
This register is loaded with the number of sectors to be format-
ted during a Format command. During the Format command, this re-
gister is decremented to zero and must be re-loaded for each for-
mat operation.
5_._3_._7_ _ _ _ _ _E_r_r_o_r_ _R_e_g_i_s_t_e_r_ 5.3.7
This register contains specific fault information pertaining to
the last command executed. This register is valid only if the
Error bit in the Status register is set. The Error Register is
read only.
\f
5_._3_._8_ _ _ _ _ _W_r_i_t_e_ _P_r_e_c_o_m_p_ 5.3.8
The Write Precompensation Register holds the cylinder number
where the RWC line will be asserted and Write Precompensation
logic is to be turned on. This write-only register is loaded with
the cylinder number divided by 4 to achieve a range of 1024
cylinders. E.g. if write precompensation is desired for cylinder
128 (80 Hex) and higher, this register must be loaded with 32 (20
Hex). The Write Precompensation delay is fixed at 10 nanoseconds
from nomimal.
Write Precompensation must start at cylinder xx (yy Hex).
5_._3_._9_ _ _ _ _ _D_a_t_a_ _R_e_g_i_s_t_e_r_ 5.3.9
This register is via the DMA-Controller connected to the main
memory, and should not be read from or written to directly from
the CPU.
5_._4_ _ _ _ _ _ _ _S_t_a_t_u_s_ _R_e_g_i_s_t_e_r_s_ 5.4
There are two registers in the WDC701 that are used to monitor
the execution of commands. They are the Status Register and the
Error Register. Each bit of these registers is used to define a
particular type of status or eror condition:
M_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_B_i_t_ _ _ _ _ _ _ _ _S_t_a_t_u_s_ _R_e_g_i_s_t_e_r_ _ _ _ _ _ _ _ _ _ _ _ _ _E_r_r_o_r_ _R_e_g_i_s_t_e_r_ _ _ _ _ _ _ _ _ _ _ _
7 Busy Bad Block Detect
6 Ready CRC Error - Data Field
5 Write Fault CRC Error - ID Field
4 Seek Complete ID Not Found
3 Data Request - - -
2 - - Aborted Command
1 - - TR000 Error
P_ _0_ _ _ _ _ _ _ _ _ _ _E_r_r_o_r_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _D_A_M_ _N_o_t_ _F_o_u_n_d_ _ _ _ _ _ _ _ _ _ _ _ _
\f
5_._5_ _ _ _ _ _ _ _S_t_a_t_u_s_ _R_e_g_i_s_t_e_r_ _B_i_t_s_ 5.5
5_._5_._1_ _ _ _ _ _E_r_r_o_r_ 5.5.1
Indicates, when set that one or more bits are set in the Error
Register. It provides an efficient means of checking for an error
condition by the host. This bit is reset on receipt of a new com-
mand.
5_._5_._2_ _ _ _ _ _D_a_t_a_ _R_e_q_u_e_s_t_ 5.5.2
Functions identically to the DRQ line. When set, it indicates
that the sector buffer is ready to accept data or contains data
to be read out by the host. The data request bit is reset when
the sector buffer has been fully read from or written to. Normal-
ly, the host need not consult this bit to determine if a byte
should be transferred.
5_._5_._3_ _ _ _ _ _S_e_e_k_ _C_o_m_p_l_e_t_e_ 5.5.3
Indicates the condition of the seek complete line on the selected
drive.
5_._5_._4_ _ _ _ _ _W_r_i_t_e_ _F_a_u_l_t_ 5.5.4
Indicates the condition of the Write Fault Line on a selected
drive. The WD1000 will not execute any command if this bit is
set.
5_._5_._5_ _ _ _ _ _R_e_a_d_y_ 5.5.5
Indicates the condition of the Ready line of the selected drive.
The WDC701 will not execute any commands unless the ready bit is
set.
\f
5_._5_._6_ _ _ _ _ _B_u_s_y_ 5.5.6
After issuing a command, this bit will be set indicating that the
DWC701 is busy executing a command. No other bits or registers
are valid when this bit is set.
5_._6_ _ _ _ _ _ _ _E_r_r_o_r_ _R_e_g_i_s_t_e_r_ _B_i_t_s_ 5.6
5_._6_._1_ _ _ _ _ _D_A_M_ _N_o_t_ _F_o_u_n_d_ 5.6.1
Will be set during a Read Sector command if, after successfully
identifying the ID field, the Data Address mark was not detected
within 16 bytes of ID field.
5_._6_._2_ _ _ _ _ _T_R_0_0_0_ _E_r_r_o_r_ 5.6.2
Will be set during a Restore command if, after issuing 1023 step-
ping pulses, TRACK 000 line was not asserted by the drive.
5_._6_._3_ _ _ _ _ _A_b_o_r_t_e_d_ _C_o_m_m_a_n_d_ 5.6.3
Indicates that a valid command has been received that cannot be
executed based on status information from the drive. E.g. if a
write sector command has been issued while the Write Fault line
is set, the Aborted command bit will be set. Interrogation of the
Status and/or Error Registers by the host must be performed to
determine the cause of failure.
5_._6_._4_ _ _ _ _ _I_D_ _N_o_t_ _F_o_u_n_d_ 5.6.4
When set, this bit indicates that an ID field containing a spec-
ified cylinder, head, sector number or sector size was not found.
\f
5_._6_._5_ _ _ _ _ _C_R_C_ _E_r_r_o_r_ _I_D_ 5.6.5
Indicates that a CRC error was encountered in an ID field.
5_._6_._6_ _ _ _ _ _C_R_C_ _E_r_r_o_r_ _D_a_t_a_ 5.6.6
Indicates that a CRC error was encountered in a data field during
a Read Sector Command.
5_._6_._7_ _ _ _ _ _B_a_d_ _B_l_o_c_k_ _D_e_t_e_c_t_ 5.6.7
Indicates that a Bad Block mark has been detected in the spec-
ified ID field. If the command issued was a write sector command,
no writing will be performed. If generated from a read sector
command, the data field will not be read. Note that bad block
will not be detected if the flaw is in the ID field.
\f
F_ 6_._ _ _ _ _ _ _ _ _C_O_M_M_A_N_D_S_ 6.
The WDC701 executes five easy-to-use macro commands. Most com-
mands feature automatic 'implied' seek, which means that the host
system need not tell the WDC701 where the R/W heads of each drive
are or when to move them. The controller automatically performs
all needed retries on all errors encountered including data CRC
errors. If the R/W head mis-positions, the WDC701 will automati-
cally perform a restore and a re-seek. If the error is completely
unrecoverable, the WDC701 will simulate a normal completion to
simplify the host system's software.
Commands are executed by loading the command byte into the Com-
mand Register while the controller is not busy (controller will
not be busy if it has completed the previous command). The task
file must be loaded prior to issuing a command. No command will
execute if the Seek Complete or Ready lines are false or if the
Write Fault line is true. Normally it is not necessary to poll
these signals before issuing a command. If the WDC701 receives a
command that is not defined in the following table, undefined re-
sults will occur.
6_._1_ _ _ _ _ _ _ _C_o_m_m_a_n_d_ _S_u_m_m_a_r_y_ 6.1
For ease of discussion, commands are divided into three types
which are summarized in the following table:
M_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Bits
_T_y_p_e_ _ _ _ _C_o_m_m_a_n_d_ _ _ _ _ _ _ _ _ _ _ _7_ _ _ _6_ _ _ _5_ _ _ _4_ _ _ _3_ _ _ _2_ _ _ _1_ _ _ _0_ _ _ _
_I_ _ _ _ _ _ _ _R_e_s_t_o_r_e_ _ _ _ _ _ _ _ _ _ _ _0_ _ _ _0_ _ _ _0_ _ _ _1_ _ _ _r_3_ _ _r_2_ _ _r_1_ _ _r_0_ _ _
_I_ _ _ _ _ _ _ _S_e_e_k_ _ _ _ _ _ _ _ _ _ _ _ _ _ _0_ _ _ _1_ _ _ _1_ _ _ _1_ _ _ _r_3_ _ _r_2_ _ _r_1_ _ _r_0_ _ _
_I_I_ _ _ _ _ _ _R_e_a_d_ _S_e_c_t_o_r_ _ _ _ _ _ _ _0_ _ _ _0_ _ _ _1_ _ _ _0_ _ _ _D_ _ _ _0_ _ _ _0_ _ _ _0_ _ _ _
_I_I_I_ _ _ _ _ _W_r_i_t_e_ _S_e_c_t_o_r_ _ _ _ _ _ _0_ _ _ _0_ _ _ _1_ _ _ _1_ _ _ _0_ _ _ _0_ _ _ _0_ _ _ _0_ _ _ _
P_ _I_I_I_ _ _ _ _ _F_o_r_m_a_t_ _T_r_a_c_k_ _ _ _ _ _ _0_ _ _ _1_ _ _ _0_ _ _ _1_ _ _ _0_ _ _ _0_ _ _ _0_ _ _ _0_ _ _ _
\f
6_._1_._1_ _ _ _ _ _S_t_e_p_p_i_n_g_ _R_a_t_e_s_ 6.1.1
M_ _ _ _ _ _ _ _ _ _ _ _ _r_3_-_r_0_ _-_ _S_t_e_p_p_i_n_g_ _R_a_t_e_ _ _ _ _ _ _ _ _
0000 = 10 S 1000 = 4.0 mS
0001 = 0.5 mS 1001 = 4.5 mS
0010 = 1.0 mS 1010 = 5.0 mS
0011 = 1.5 mS 1011 = 5.5 mS
0100 = 2.0 mS 1100 = 6.0 mS
0101 = 2.5 mS 1101 = 6.5 mS
0110 = 3.0 mS 1110 = 7.0 mS
P_ _0_1_1_1_ _=_ _3_._5_ _m_S_ _ _ _ _ _ _ _ _ _ _ _ _ _1_1_1_1_ _=_ _7_._5_ _m_S_ _
Stepping rate of ms is used:
6_._1_._2_ _ _ _ _ _D_M_A_ _R_e_a_d_ 6.1.2
D = 1 for DMA Mode which is used here.
6_._2_ _ _ _ _ _ _ _T_y_p_e_ _I_ _C_o_m_m_a_n_d_s_ 6.2
These commands simply position the R/W heads of the selected
drive. Both commands have explicit stepping rate fields. The
lower four bits of these commands form the stepping rate.
6_._2_._1_ _ _ _ _ _R_e_s_t_o_r_e_ 6.2.1
The Restore command is used to calibrate the position of the R/W
head on each drive by stepping the head outward until the TR000
line goes true. Upon receipt of the Restore command, the Busy bit
in the Status Register is set. Cylinder High and Cylinder Low
Registers are cleared. The lower four bits of the command byte
are stored in the stepping rate register for subsequent implied
seeks. The state of Seek Complete, Ready and Write Fault are
sampled, and if an error condition exists, the Aborted command
bit in the Error Register is set, the Error bit in the Status
Register is set, an interrupt is generated and the Busy bit is
reset.
\f
If no errors are encountered thus far, the internal head position
register for the selected drive is cleared. The TR000 line is
sampled. If TR000 is true, an interrupt is generated and the Busy
bit is reset. If TR000 is not true, stepping pulses at a rate de-
termined by the stepping rate field are issued until the TR000
line is activated. When TR000 is activated, the Busy bit is reset
and an interrupt is issued. If the TR000 line is not activated
within 1023 stepping pulses, the TR000 Error bit in the Error Re-
gister and the Error bit in the Status Register are set, the Busy
bit is reset and an interrupt is issued.
6_._2_._2_ _ _ _ _ _S_e_e_k_ 6.2.2
The Seek command positions the R/W head to a certain cylinder. It
is primarily used to start two or more concurrent seeks on drives
that support buffered stepping. Upon receipt of the Seek command,
the Busy bit in the Status Register is set. The lower four bits
of the command byte are stored in the stepping rate register for
subsequent implied seeks. The state of Seek Complete, Ready and
Write Fault are sampled, and if an error condition exists, the
Aborted command bit in the Error Register is set, the Error bit
in the Status Register is set, an interrupt is generated and the
Busy bit is reset.
If no errors are encountered thus far, the internal head position
register for the selected drive is updated, the direction line is
set to the proper direction and a step pulse is issued for each
cylinder to be stepped. When all stepping pulses have been is-
sued, the Busy bit is reset and an interrupt is issued. Note that
the Seek Complete line is not sampled after the Seek command, al-
lowing seek operations to be started using drives with buffered
seek capability.
6_._3_ _ _ _ _ _ _ _T_y_p_e_ _I_I_ _C_o_m_m_a_n_d_s_ 6.3
This type of command is characterized by a transfer of a block of
data from the WDC701 buffer to the host. This command has an im-
plicit stepping rate as set by the last Restore or Seek command.
\f
6_._3_._1_ _ _ _ _ _R_e_a_d_ _S_e_c_t_o_r_ 6.3.1
The Read Sector command is used to read a sector of data from the
disk to the host computer. Upon receipt of the Read command, the
Busy bit in the Status Register is set. The state of Seek Com-
plete, Ready and Write Fault are sampled, and if an error condi-
tion exists, the Aborted Command bit in the Error Register is
set, the Error bit in the Status Register is set and a normal
completion is simulated.
6_._3_._1_._1_ _ _ _I_m_p_l_i_e_d_ _S_e_e_k_ 6.3.1.1
If no errors are encountered so far, a Seek command is executed.
The Seek Complete line is sampled. If the Seek Complete line does
not go true witnin 128 Index pulses, then the Aborted command bit
in the Error Register is set, the Error bit in the Status Regis-
ter is set and a normal completion is simulated.
6_._3_._1_._2_ _ _ _R_e_t_r_i_e_s_ 6.3.1.2
Once the head has settled over the desired cylinder, the WDC701
will attempt to read the sector. The WDC701 performs all retries
necessary to recover the data during the read command. The con-
troller attempts to read the desired sector up to 16 times. It
will attempt a retry if it does not find an ID, if the ID of that
sector has a bad CRC, if the Data Address Mark (DAM) could not be
found or even if the data was actually read from the disk but in-
curred a data CRC error.
6_._3_._1_._3_ _ _ _A_u_t_o_ _R_e_s_t_o_r_e_ 6.3.1.3 .
Every time the controller encounters an error, it records the
occurance of that error in an internal register. If, after 16
retries, the controller was not able to get a match on the ID
field, it assumes that the head was possibly mis-positioned and
executes an auto-restore. During the auto-restore, the stepping\f
rate is implied to be equal to the Seek Complete period. After
the auto-restore has been successfully completed, the controller
re-seeks and attempts to read the sector once again. An auto-re-
store will be performed only once per read or write sector com-
mand.
6_._3_._1_._4_ _ _ _H_a_r_d_ _E_r_r_o_r_s_ 6.3.1.4
If the controller encounters a non-recoverable error, the con-
troller examines its internal error history register. It then
sets the bit in the Error Register of the highest severity in-
curred. If the Data CRC Error bit is set, the data that last pro-
duced that error will be available in the sector buffer. The Er-
ror bit in the Status Register is set and a normal completion is
simulated.
6_._3_._1_._5_ _ _ _E_r_r_o_r_ _S_e_v_e_r_i_t_y_ _L_e_v_e_l_s_ 6.3.1.5
Although the WDC701 might encounter any number of errors in the
course of executing a command, it only reports the most severe
error. Errors are ranked from most severe to least severe as fol-
lows:
1) Aborted Command
2) TR000 Error
3) Bad Block*
4) Data CRC Error
5) Data Address Mark Not Found
6) ID CRC Error
7) ID Not Found
* Bad Block will only be detected if there is no ID CRC
Error or ID Not Found Error.
\f
6_._3_._1_._6_ _ _ _N_o_r_m_a_l_ _C_o_m_p_l_e_t_i_o_n_ 6.3.1.6
If the WDC701 encountered no errors, it is considered a normal
completion. The busy bit is reset. The status of the DMA bit in
the command byte is examined. After all the data have been moved
from the buffer, the DMA bit in the command byte is consulted. If
this bit is set (D = 1; DMA mode) then an interrupt will be is-
sued.
6_._4_ _ _ _ _ _ _ _T_y_p_e_ _I_I_I_ _C_o_m_m_a_n_d_s_ 6.4
This type of command is characterized by a transfer of a block of
data from the host to the WDC701 buffer. These commands have im-
plicit stepping rates as set by the last Restore or Seek command.
6_._4_._1_ _ _ _ _ _W_r_i_t_e_ _S_e_c_t_o_r_ 6.4.1
The Write Sector command is used to write a sector of data from
the host computer to the disk. Upon receipt of the Write command,
the controller generates DRQ's for each byte to be written to the
buffer.
After all data have been sent to the sector buffer, the Busy bit
in the Status Register is set. The state of Seek Complete, Ready
and Write Fault are sampled, and if an error condition exists,
the Aborted command bit in the Error Register is set, the Error
bit in the Status Register is set, an interrupt is generated and
the Busy bit is reset.
6_._4_._1_._1_ _ _ _I_m_p_l_i_e_d_ _S_e_e_k_ 6.4.1.1
If no errors are encountered so far, a Seek command is executed.
The Seek Complete line is sampled. If the Seek Complete line does
not go true within 128 Index pulses, then the Aborted command bit
in the Error Register is set, the Error bit in the Status Regis-
ter is set, an Interrupt is generated and the Busy bit is reset.
\f
6_._4_._1_._2_ _ _ _R_e_t_r_i_e_s_ 6.4.1.2
Once the head has settled over the desired cylinder, it will at-
tempt to read the ID of the sector. The WDC701 performs all re-
tries necessary to recover the ID during the write command. The
controller attempts to read the ID of the desired sector up to 16
times. It will attempt a retry if it does not find an ID or if
the ID of that sector has a bad CRC.
6_._4_._1_._3_ _ _ _A_u_t_o_ _R_e_s_t_o_r_e_ 6.4.1.3
Every time the controller encounters an error, it records the
occurrence of that error in an internal register. If, after 16
retries, the controller was not able to get a match on the ID
field, it assumes that the head was possibly mis-positioned and
executes an auto-restore. During the auto-restore, the stepping
rate is implied to be equal to the Seek Complete period. After
the auto-restore has been successfully completed, the controller
re-seeks and attempts to write the sector once again.
6_._4_._1_._4_ _ _ _H_a_r_d_ _E_r_r_o_r_s_ 6.4.1.4
If the controller encounters a non-recoverable error, the con-
troller examines its internal error history register. It then
sets the bit in the Error Register of the highest severity error
incurred. The Error bit in the Status Register is set, an Inter-
rupt is generated and the Busy bit is reset.
If the proper sector is located, the sector buffer is written to
the disk, an interrupt is generated and the Busy bit is reset.
6_._4_._2_ _ _ _ _ _F_o_r_m_a_t_ _T_r_a_c_k_ 6.4.2
The Format command is used for initializing the ID and data
fields on a particular disk. Upon receipt of the Format command,
the controller generates DRQ's for each byte of the interleave\f
table to be written to the buffer. Information on setting up an
interleave table can be found in chapter 7. In all cases, the
number of bytes transferred to the buffer must correspond to the
current sector size.
After all data have been sent to the buffer, the Busy bit in the
Status Register is set. The state of Seek Complete, Ready and
Write Fault lines are sampled. If an error condition exists, the
Aborted command bit in the Error Register is set, the Error bit
in the Status Register is set, an interrupt is generated and the
Busy bit is reset.
6_._4_._2_._1_ _ _ _I_m_p_l_i_e_d_ _S_e_e_k_ 6.4.2.1
If no errors are encountered so far, a Seek command is executed.
No verification of track positioning accuracy is performed be-
cause the track may not have any ID fields present. After the
Seek operation has been performed, the Seek Complete line is
sampled. If the Seek Complete line is not asserted within 128
Index pulses, the Aborted command bit in the Error Register is
set, the Error bit in the Status Register is set, an Interrupt is
generated and the Busy bit is reset.
Once the head has settled over the desired cylinder, the control-
ler starts writing a pattern of 4E's until the index is en-
countered. Once the index is found, a number of ID fields and
nulled data fields are written to the disk. The number of sectors
written to the contents of the Sector Count Register. As each
sector is written, the Sector Count Register is decremented and,
consequently, must be updated before each format operation.
After the last sector is written, the controller back-fills the
track with 4E's. When the next Index pulse after the last sector
is written is encountered, the format operation is terminated, an
Interrupt is generated and the Busy bit is reset.
\f
6_._4_._2_._2_ _ _ _T_r_a_c_k_ _F_o_r_m_a_t_ 6.4.2.2
The Format command formats the track as shown in fig. 2.
Figure 2: Format pattern.
\f
F_ 7_._ _ _ _ _ _ _ _ _F_O_R_M_A_T_T_I_N_G_ 7.
7_._1_ _ _ _ _ _ _ _F_o_r_m_a_t_t_i_n_g_ _a_ _T_r_a_c_k_ 7.1
The format command is very similar to the write command, except
that instead of filling the sector buffer with user data, it is
filled with interleave and bad block information. Two bytes will
be written to the buffer for each sector to be formatted.
The first byte will be either a 00 or an 80 in Hex. If the first
byte is a 00, the sector is marked as good. If the first byte is
an 80, the sector will set the Bad Block bit in the Status Regis-
ter if there is any attempt to read or write to this.
The second byte is the logical sector number of the next sector
to be formatted. This number will be recorded on the disk.
On a 32 sectors per track disk, 32 pairs of formatting informa-
tion must be supplied to the drive during each format operation.
To start the format operation, the buffer must be completely fil-
led even if the sector table is not as long as the buffer. On a
32 sectors per track disk, 64 bytes of formatting information are
supplied. If the sector size of the disk is 256 bytes, then 192
bytes of garbage must be passed to the controller to start the
format operation.
Since the contents of the sector buffer do not imply how many
sectors are to be formatted, a dedicated register is provided.
This Sector Count Register must be loaded with the number of sec-
tors to be formatted before each and every format operation.
7_._2_ _ _ _ _ _ _ _I_n_t_e_r_l_e_a_v_i_n_g_ 7.2.
If we try to read sequential sectors on the disk, there is not
enough time for us to set up to read or write the next sector be-
fore it has been passed by the R/W head. This means that the disk
will have to make a complete rotation to pick up the next sector.\f
If we were to read all 32 sectors on a particular track, it would
take us 32 rotations, or about half a second per 8 K bytes. This
performance can be tremendously improved by allowing the system
to read or write more than one sector per rotation. This can be
accomplished with interleaving.
Suppose our system takes less than three sector times (3/32 rota-
tional period) to digest the data it has read and to set up the
next read operation. This means that if we can arrange to have
the second logical sector placed physically only four sectors
away from the first one, the controller will be able to read it
without much delay. This four to one interleave factor will allow
us to potentially read the entire track in only four rotations.
In our particular example, this will increase the throughput by a
factor of eight.
The simplest way to determine the optimum interleave for any par-
ticular system is through experimentation. If the system main-
tains its directories in a certain place on the disk, it some-
times makes sense to have t_w_o_ interleaves. One could be used for
regular disk operations and the other for directory functions.
To simplify driver software, the WDC701 will automatically map
logical to physical sectors to achieve interleave. This logical
to physical map is returned on each track of the disk in the ID
fields of the sectors. This map is recorded on the disk during
format operations. Here is an example of an interleave table for
a 32 sector track with 4:1 interleave and no bad blocks:
Interleave table with 32 sectors and 4:1 interleave.
M_ 00 00 00 08 00 10 00 18 00 01 00 09 00 11 00 19
00 02 00 0A 00 12 00 1A 00 03 00 0B 00 13 00 1B
00 04 00 0C 00 14 00 1C 00 05 00 0D 00 15 00 1D
P_ 00 06 00 0E 00 16 00 1E 00 07 00 0F 00 17 00 1F
Remember that the balance of the buffer must be filled with some-
thing to start the format operation.
\f
The first byte in each byte pair in the preceding example is set
to 00. This marks each block as a 'good' block. The second byte
of each byte pair is the logical sector number. The first byte
pair above represents the first logical sector of the track. The
byte pair in brackets represents the second logical sector.
\f
i
F_O_R_E_W_O_R_D_
First edition: RCSL No 31-D455.
The major changes, compared to the version described in "RCSL No
31-D300: MONITOR3", are the introduction of a usercatalog (pro-
cesses may be created by the JOB-command with prespecified
claims) the initializing commands and the lock/unlock facility to
prevent/reestablish the use of ALL and NEW commands, from other
consoles than the mainconsole or privileged consoles.
Palle Andersson
A/S Regnecentralen, January 1979
Second edition: RCSL No 31-D595.
The major changes in this manual compared to RCSL No 31-D 455 are
the inclusion of the corrections described in RC Information Note
NCJ 790715 "Corrections to s Reference Manual", and some correc-
tions in the examples in use of usercat.
Further the prio command has been changed:
The priority is now a parameter in the console buffer, and the
prio command merely sets this parameter. The create command will
then set the priority when the process is created. It is also
possible to set the priority in the jobspecification in Susercat.
The remarks about the priority are valid from monitor release
6.0. In previous releases the prio command works as described in
the RC Information Note NJC 790715, "Corrections to s Reference
Manual".
Henrik Sierslev
A/S REGNECENTRALEN af 1979, May 1980
\f
ii
Third edition: RCSL No 31-D643.
The major changes in this manual are the introduction of five new
commands to s and the two parent messages finis and replace.
These changes are valid from monitor release 7.0.
It is now possible to let s read commands from a bs area instead
of the console, and it is possible to set primary input in an in-
ternal process causing FP to start immediately reading commands.
Henrik Sierslev
A/S REGNECENTRALEN af 1979, May 1981
\f
iii
T_A_B_L_E_ _O_F_ _C_O_N_T_E_N_T_S_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _P_A_G_E_
1. BASIC OPERATING SYSTEM FUNCTIONS ....................... 1
1.1 Introduction ...................................... 1
1.2 Handling of Consoles .............................. 1
1.3 Console Description ............................... 2
1.3.1 Explanation of Command Mask ................ 3
1.4 Some Important Commands ........................... 4
1.5 The Command Language .............................. 4
1.6 Alfabetic List of the Commands for Handling of
Internal Processes ................................ 6
2. MESSAGES FROM s ........................................ 51
2.1 Console Messages .................................. 51
2.2 Child Messages .................................... 53
3. ALFABETIC LIST OF COMMANDS FOR INITIALIZATION OF THE
CATALOG SYSTEM ......................................... 55
3.1 Introduction ...................................... 55
3.2 Description of the Commands ....................... 55
3.3 Examples of Using the Initializing Commands ....... 70
3.3.1 Initializing of a New System from Magtape .. 70
3.3.2 Normal (Daily) Start with a New Specific
Maincatsize ................................ 71
3.3.3 Normal Start, but Maincatalog is not on the
'First' Oldcatdevice ....................... 72
4. PROGRAM SCATOP (S-CATALOG _OPERATION) ................... 73
A_P_P_E_N_D_I_C_E_S_:
A. REFERENCES ............................................. 85
B. BACKING STORAGE ........................................ 86
B.1 Representation of Scope ........................... 87
C. LOGICAL STATUS BITS .................................... 90
\f
iv
\f
F_ 1_._ _ _ _ _ _ _ _ _B_A_S_I_C_ _O_P_E_R_A_T_I_N_G_ _S_Y_S_T_E_M_ _F_U_N_C_T_I_O_N_S_ 1.
The functions of the basic operating system, s, which can initia-
te and control the execution of parallel programs on request from
terminals/consoles (in the following called consoles), are de-
scribed.
1_._1_ _ _ _ _ _ _ _I_n_t_r_o_d_u_c_t_i_o_n_ 1.1
After initial system loading, the internal store contains the
monitor and the basic operating system s, enabling operators to
initiate and control internal processes from consoles.
In addition, s can name peripherals as for instance magnetic
tape.
s may be the "pater familias" of a family tree of internal pro-
cesses. Initially s owns all system resources, such as core sto-
rage, backing storage, peripherals, message buffers, process de-
scription tables etc. Apart from being the initial process in the
system, s has no special status, and it is treated as any other
internal process. It is possible to replace s with another opera-
ting system.
1_._2_ _ _ _ _ _ _ _H_a_n_d_l_i_n_g_ _o_f_ _C_o_n_s_o_l_e_s_ 1.2
Commands to s from a console are served sequentially in the order
of their arrival. The processing of a line of commands is termi-
nated by a short reply printed on the console.
The monitor permits simultaneous input of messages from all con-
soles. The operating system, however, can only respond to a limi-
ted number of messages. The maximum number of simultaneous conso-
le actions within s is an option defined in the assembly of the
monitor with s.
A line of commands to s is processed from left to right, one com-
mand at a time. If syntax errors or other errors are detected du-\f
ring the processing of a line, an alarm is issued and a possible
unprocessed rest of the line is dropped.
For every command-line you perform:
@att -> s
->command-line
1_._3_ _ _ _ _ _ _ _C_o_n_s_o_l_e_ _D_e_s_c_r_i_p_t_i_o_n_ 1.3
For each console communicating with the operating system, s main-
tains a description defining the parameters to be used in the
creation of an internal process with the console as primary input
and primary output (see ref. 1). This is done by means of a com-
mon consolebuffer pool. The size of this pool is an option to the
monitor.
A console description is initiated by means of commands to s.
The parameters referred in this paper are listed below together
with their type. The type describes what may be stored in each
field. The meaning of type are: string max 11 characters; inte-
ger -8388608 <= number < 8388607; integer pair 2 integers;
short integer 0 <= number <= 4095.
P_ parameter name: type:
M_ process name string
first address integer
top address integer
buffer claim short integer
area claim short integer
internal claim short integer
function mask short integer
max interval integer pair
standard interval integer pair
user interval integer pair
process size integer
program name string
priority short integer
\f
1_._3_._1_ _ _ _ _ _E_x_p_l_a_n_a_t_i_o_n_ _o_f_ _C_o_m_m_a_n_d_ _M_a_s_k_ 1.3.1
The command mask is a bit mask in the console buffer. It consists
of two parts. A part defining the allowed s command from this
console type (i.e. predefined or consolepool), and a part, used
for signalling between commands, the command bits.
Format of command mask:
1 1 shift 10 ; command bit : all bs resources.
2 1 shift 9 ; mode, modify, print, date.
3 1 shift 8 ; job, start, stop, break, dump, list, max,
remove, proc, prog, load, I, O, get, unstack.
4 1 shift 7 ; include, exclude.
5 1 shift 6 ; size, login, user, project, prio, base.
6 1 shift 5 ; addr, function, buf, area, internal, bs, temp,
perm, all, call.
7 1 shift 4 ; new, create, run, init.
8 1 shift 3 ; privileged console.
9 1 shift 2 ; command bit : mode = 0
10 1 shift 1 ; command bit : absolute address.
bit 2 - 8 are generated as options to the system and cannot be
altered.
bit 1, 9 and 10 can be used in connection with a job in
susercat.
For each possible bs-device, we have:
temp segments <bs device> integer
temp entries <bs device> integer
perm segments <bs device> integer
perm entries <bs device> integer
\f
1_._4_ _ _ _ _ _ _ _S_o_m_e_ _I_m_p_o_r_t_a_n_t_ _C_o_m_m_a_n_d_s_ 1.4
Three commands to s, initializing the whole set of console para-
meters, exist:
The n_e_w_ command using some standard values, the a_l_l_ command,
searching and using the maximum available resources, and the j_o_b_
command, searching a file named "susercat" in order to find suit-
able values to insert into. The job command will also create,
load and start an internal process according to the parameters
found. These three commands are followed by a string to be used
as process name.
The r_u_n_ command will create, load and start an internal process
according to the console description.
The s_t_o_p_ command will stop a running process without removing it.
The process may be restarted by means of the start command.
The s_t_a_r_t_ command will restart a stopped process. The process may
either have been stopped by means of the stop command or by "it-
self", for instance after having requested a magnetic tape.
The r_e_m_o_v_e_ command will stop and remove an internal process.
All commands are described in section 1.6 below.
1_._5_ _ _ _ _ _ _ _T_h_e_ _C_o_m_m_a_n_d_ _L_a_n_g_u_a_g_e_ 1.5
A command line to s is one line which can be empty or contain a
number of commands. A line is either terminated by a new line
character or by semicolon followed by a comment consisting of any
string of characters terminated by a new line character. The com-
mands in a message may consist of one or more of the following
syntactical elements:
<separator>::= <SP> .,/=<separator><SP>
<unsigned number>::= <digit><unsigned number><digit>
<radix>::= <unsigned number>
<radix number>::= <radix>:<unsigned number>
<number>::= <unsigned number>- <unsigned number><radixnumber> \f
M_m_m_ <letter> 10
<name>::= <letter>
P_p_p_ <digit> 0
<parameter>::= <number><name>
<command word>::= addrallareabreakbsbufcall
createdatedumpexcludefunctiongeti
includeinitinternaljoblistloadlock
loginmaxmodemodifynewopermprio
printprocprogprojectreadremove
replacerunsizestartstoptempunlockuser
A command consists of a command word possibly followed by one or
more parameters.
Command words and parameters are separated from each other by a
separator. In the syntactical definition of the commands in sec-
tion 1.6 below, separators are not shown explicitly. It must be
understood that a definition like the following
temp <devicename><segment><entries>
strictly speaking means
temp <separator><devicename><separator><segments><separator><entries>
\f
1_._6_ _ _ _ _ _ _ _A_l_f_a_b_e_t_i_c_ _L_i_s_t_ _o_f_ _t_h_e_ _C_o_m_m_a_n_d_s_ _f_o_r_ _H_a_n_d_l_i_n_g_ _o_f_ _I_n_t_e_r_n_a_l_ _P_r_o_c_e_s_s_e_s_1.6
A_d_d_r_ _C_o_m_m_a_n_d_
Syntax: addr <first storage address>
<first storage address>::= <unsigned number>
The console parameter first address is defined and used in a pos-
sible subsequent creation of an internal process. An odd number
is decreased by one.
Example: addr 16320
\f
A_l_l_ _C_o_m_m_a_n_d_
Syntax: all <process name>
<process name>::= <name>
First the console parameter process name is defined by the para-
meter to the all command. Next all the other console parameters
are initiated by setting the name "fp" into the console parameter
program name, and the maximum of s's rest claims into the remain-
ing parameters. The core size used is the greatest free consecu-
tive core area found. Notice that the values may be redefined
(diminished) by means of commands defining only a few parameters.
The bases (max, standard, user) are set to the standard base of
s.
Example: all us
\f
A_r_e_a_ _C_o_m_m_a_n_d_
Syntax: area <area claim>
<area claim>::= <unsigned number>
The console parameter area claim is defined. This defines the
number of available area processes.
Example: area 20
If the job wants to communicate with 20 backing storage files at
the same time, it will need 20 area processes.
\f
B_a_s_e_ _C_o_m_m_a_n_d_
Syntax: base <number><number>
Assigns the number pair to the console parameters max interval,
standard interval and user interval.
Example: base -100 200
\f
B_r_e_a_k_ _C_o_m_m_a_n_d_
Syntax: break
Stops the execution of the internal process, defined by the con-
sole parameter process name, stores its registers and the inter-
rupt cause 8 at the head of its internal interrupt procedure
("break sequence"), and restarts the process in its interrupt
procedure (see ref. 1).
Example: break
\f
B_s_ _C_o_m_m_a_n_d_
Syntax: bs <bs device name> <segments> <entries>
<bs device name>::= <name>
<segments>::= <number>
<entries>::= <number>
The claims of the (already created and possibly running) process
defined by the console parameter process name are increased by
the (possibly negative) amount given by entries and segments for
all keys on the backing storage given by bs device name.
Example: bs disc2 1500 20
The claims on disc2 will be increased with 20 entries and 1500
segments for all perm keys.
\f
B_u_f_ _C_o_m_m_a_n_d_
Syntax: buf <buffer claim>
<bufferclaim>::= <unsigned number>
The console parameter buffer claim is defined. This defines the
number of available message buffers.
Example: buf 14
If the job has 14 data transfers (or other I/O operations) going
on simultaneously, it will need 14 message buffers.
\f
C_a_l_l_ _C_o_m_m_a_n_d_
M_m_m_ *
Syntax: call <device number> <device name>
P_p_p_ 1
<device number>::= <unsigned number>
<device name>::= <name>
Assigns names to a sequence of peripheral devices. The devices
must not be reserved by internal processes.
Example: call 0=reader 10=magtape 5 printer
\f
C_r_e_a_t_e_ _C_o_m_m_a_n_d_
Syntax: create
Creates an internal process as described by the console parame-
ters.
If the addr command has been used, the availability of the stora-
ge area is checked. Otherwise s scans the store from the low
address end and chooses the first available core area of suffi-
cient size.
If mode=0 has been used the write limits in the process descrip-
tion is set to maximum, allowing the process to write in the who-
le storage, else the write limits will equal the storage area
found above.
The ability of s to supply the specified claims is checked. After
the creation s includes the process as a user of a standard con-
figuration of peripherals, assigns the backing storage claims
listed, and sets the priority of the process.
The registers of the process are initialized as required by ref.
2.
The catalog base of the process is the standard (login) base.
Example: create
\f
D_a_t_e_ _C_o_m_m_a_n_d_
Syntax: date <year><month><day><hour><min><sec>
<year>::= <digit> <digit>
<month>::= <digit><digit> <digit>
<day>::= <digit><digit> <digit>
<hour>::= <digit><digit> <digit>
<min>::= <digit><digit> <digit>
<sec>::= <digit><digit> <digit>
Sets the internal clock of the monitor to the value given in the
call.
If the main catalog has not yet been defined, s will continue
with the "oldcat" command.
Example: date 81.05.10 9.30.0
\f
D_u_m_p_ _C_o_m_m_a_n_d_
Syntax: dump <dump area>
<dump area>::= <name>
The process defined by the console parameter process name is
stopped (if not already stopped) and its core area is copied to
the dump area. If the size of the dump area is not sufficient,
only the first part of the core area is copied. The dump area
must be visible from the catalog base of the internal process.
Example: dump image
\f
E_x_c_l_u_d_e_ _C_o_m_m_a_n_d_
M_m_m_ *
Syntax: exclude <device number>
P_p_p_ 1
<device number>::= <unsigned number>
The (already created and possibly running) process, defined by
the console parameter process name is excluded as a user of a
sequence of peripheral devices.
Example: exclude 5
\f
F_u_n_c_t_i_o_n_ _C_o_m_m_a_n_d_
M_m_m_ *
Syntax: function <bit number>
P_p_p_ 1
<bit number>::= <unsigned number>
The console parameter function mask is set to contain ones in the
selected bits. The rest is set to contain zeroes.
Example: function 4 5 6
\f
G_e_t_ _C_o_m_m_a_n_d_
Syntax: get <process name>
<process name>::= <name>
Searches the systemfile "susercat" for an entry with the given
processname and initializes the console description according to
the entry, but unlike the job command, no process is created.
Example:
get student run,
will be the same as
job student
As the I and O commands are not implemented in susercat, you may
instead use
get student I 4 input run
\f
I_ _C_o_m_m_a_n_d_
Syntax: I <kind> <name>
<kind>::= <short integer>
Sets the console parameter primin to the parameters given in the
call. At load time the registers of the created internal process
are set as required by ref. 2, causing FP to select the given
name as primary input.
Example: new job1 I 4. input run
FP will select the area (kind=4) "input" as primary input.
If FP is reinitialized, maybe because of a syntax error, FP will
start reading from the beginning of the input file. The private
modebits, however, will not be changed, so the following commands
will prevent FP from looping:
if mode.1 yes
finis
mode.1 yes
\f
I_n_c_l_u_d_e_ _C_o_m_m_a_n_d_
M_m_m_ *
Syntax: include <device number>
P_p_p_ 1
<device number>::= <unsigned number>
Includes the (already created and possibly running) process,
defined by the console parameter process name, as a user of a
sequence of peripheral devices.
Example: include 6 7
\f
I_n_i_t_ _C_o_m_m_a_n_d_
Syntax: init
This command has the same effect as a create command followed by
a load command.
Example: init
\f
I_n_t_e_r_n_a_l_ _C_o_m_m_a_n_d_
Syntax: internal <internal claim>
<internal claim>::= <unsigned number>
Assigns a number to the console parameter internal claim.
Example: internal 2
A job will only need internal processes if it acts as an
operating system.
\f
J_o_b_ _C_o_m_m_a_n_d_
Syntax: job <process name>
<process name>::= <name>
Searches the system file "susercat" for an entry with the process
name given. If the entry is found, the console description is
initialized according to the entry, and a process is started by
means of the functions implementing the create, the load and the
start commands in the order mentioned.
Example: job student
\f
L_i_s_t_ _C_o_m_m_a_n_d_
Syntax: list
Prints a list of all internal processes having a parent.
Each process is described on one line with the format:
<process name><first storage address><size of storage area>
<stop-count><state><parent name>
Example: list
\f
L_o_a_d_ _C_o_m_m_a_n_d_
Syntax: load
Loads the program defined by the console parameter program name
into the beginning of the internal process defined by the console
parameter process name.
The program must be located on the backing store, and be descri-
bed as a catalog entry with a positive size and content key (see
ref. 1) must be 3 or 8.
A possible area process for the entry must not be reserved. The
number of halfwords to load and the relative entry point of the
program must not exceed the size of the internal process. The
program must be visible from the catalog base of the internal
process.
After loading, the registers are set as required by ref. 2, and
the instruction counter is set to the absolute address corre-
sponding to the relative entry point. The catalog base of the in-
ternal process is set to the user base, given in the console
description.
Example: load
\f
L_o_c_k_ _C_o_m_m_a_n_d_
Syntax: lock
(privileged console only)
When this command has been used, it is only possible to use fol-
lowing commands from a non privileged console:
break
dump
job
list
load
max
proc
prog
remove
start
stop
Example: lock
\f
L_o_g_i_n_ _C_o_m_m_a_n_d_
Syntax: login <ll standard base> <ul standard base>
<ll standard base>::= <number>
<ul standard base>::= <number>
Assigns the number pair to the console parameter standard inter-
val. This usually defines the temp scope in the sense of "File
Processor".
Example: login 1025 1025
\f
M_a_x_ _C_o_m_m_a_n_d_
Syntax: max
Prints the maximum of certain available resources with the
format:
max <max storage area><buf claim><area claim><internal claim>
Example: max
\f
M_o_d_e_ _C_o_m_m_a_n_d_
Syntax: mode <integer>
If integer = 0 the internal process is allowed to write in the
whole primary storage. If integer <> 0, the process can only
write in it's own storage area.
Default is mode <> 0
Example: mode 0
- : mode 1
\f
M_o_d_i_f_y_ _C_o_m_m_a_n_d_
Syntax: modify <address><old contents><new contents>
(privileged console only)
This command changes the word with address <address> to <new
contents> if <old contents> is the present contents of the word.
Example: modify 29276 30 34
Example: modify 29314 8:24700014 8:24300014
This command changes word 29314 from rl.w3 8:14 to rl.w1 8:14.
\f
N_e_w_ _C_o_m_m_a_n_d_
Syntax: new <process name>
<process name>::= <name>
First the console parameter process name is defined by the para-
meter to the new command. Then all the other console parameters
are initiated by setting the name fp into the console parameter
program, and some standard values into the remaining parameters.
Example: new me
The most common used standard values are:
priority 0
no. of message buffers 7
no. of area processes 6
no. of internal processes 0
function mask (octal value) 7440
core size 12800
perm entries on work device 20
perm segments on work device 800
standard work device <:disc:>
all base values 8388605
\f
O_ _C_o_m_m_a_n_d_
Syntax: O <kind> <name>
<kind>::= <short integer>
Sets the console parameter primout to the parameters given in the
call.
At load time the registers of the created internal process are
set as required by ref. 2, causing FP to select the given name
as primary output.
Example: new job1 O 8 sub010 run
The terminal "sub010" is selected for output.
\f
P_e_r_m_ _C_o_m_m_a_n_d_
Syntax: perm <bs device name><segments><entries>
<bs device name>::= <name>
<segments>::= <unsigned number>
<entries>::= <unsigned number>
Searches the monitor for a backing storage device with the stated
name. Then the console parameters for permanent claims for that
device are defined. The stated values are added to the temp
claims for the device.
Example: perm disc1 1500 20
\f
P_r_i_n_t_ _C_o_m_m_a_n_d_
Syntax: print <first storage><last storage>
<first storage>::= <unsigned number>
<last storage>::= <unsigned number>
Reserves the device named printer and prints the contents of the
core storage starting with <first storage>. The printing ends
when last storage has been passed after printing at least one
word, or the current word is outside core store, or the printer
could not be used properly (e.g. because of endpaper or because
the printer was reserved). Then the printer is released.
The format of the printing is:
<address decimal><word decimal><halfword 1 decimal><halfword 2 decimal>
<word octal><word text>
Example: print 10246 10700
\f
P_r_i_o_ _C_o_m_m_a_n_d_
Syntax: prio <short integer>
The console parameter priority is set to the value given in the
call.
Normally a process will be created with priority 0, which is the
highest possible priority of an internal process.
\f
P_r_o_c_ _C_o_m_m_a_n_d_
Syntax: proc <process name>
<process name>::= <name>
Assigns a name to the console parameter process name. It may for
instance be used as a preample to commands like include, exclude,
start etc.
Example: proc him start proc me
This sequence may for instance be used by the main operator (sit-
ting at a privileged console) after having mounted and called a
magnetic tape. After having started the waiting process, the ope-
rator reinserts the name of his own process in the console de-
scription.
\f
P_r_o_g_ _C_o_m_m_a_n_d_
Syntax: prog <program name>
<program name>::= <name>
Assigns a name to the console parameter program name.
Example: prog batchsystem
\f
P_r_o_j_e_c_t_ _C_o_m_m_a_n_d_
Syntax: project <ll maxbase><ul maxbase>
<ll maxbase>::= <number>
<ul maxbase>::= <number>
Assigns the number pair to the console parameter max interval.
This defines the scope project in the sense of the "File Proces-
sor".
Example: project 0 2000
\f
R_e_m_o_v_e_ _C_o_m_m_a_n_d_
Syntax: remove
Stops and removes an internal process defined by the console pa-
rameter process name. The console must be either the console from
which the process was created or a privileged console. Note that
the console parameters are unchanged. If the process is created
by means of the job-command, the description of the permanent bs-
claims in "susercat" belonging to the process is adjusted.
\f
R_e_a_d_ _C_o_m_m_a_n_d_
Syntax: read <area name>
<area name>::= <name>
Causes s to stack the current input pointer and start reading
commands from the bs area. The last command must be "unstack"
which will cause s to restore the previous input pointer and
continue the command reading from there.
The area must be visible from the catalog base of s.
The stack depth is an option to s. Default is stack depth = 2,
i.e. it is allowed to have one read command in an area.
Example: read pip
where pip contains
all fut run unstack,
will be the same as the command line
all fut run
\f
R_e_p_l_a_c_e_ _C_o_m_m_a_n_d_
Syntax: replace <area name>
<area name>::= <name>
(privileged consoles only)
The area must contain an independent program (contents key = 8).
This program is loaded replacing the code of s (see ref. 1).
\f
R_u_n_ _C_o_m_m_a_n_d_
Syntax: run
The run command has the same effect as a create command followed
by a load command and a start command.
Example: run
\f
S_i_z_e_ _C_o_m_m_a_n_d_
Syntax: size <size of storage area in halfwords>
<size of storage area in halfwords>::= <unsigned number>
Assigns a number to the console parameter size of storage area.
An odd number is decreased by one.
Example: size 20000
\f
S_t_a_r_t_ _C_o_m_m_a_n_d_
Syntax: start
Starts the execution of an internal process defined by the conso-
le parameter process name.
The console must be either the console from which the process was
created or a privileged console.
Example: start
\f
S_t_o_p_ _C_o_m_m_a_n_d_
Syntax: stop
Stops the execution of an internal process defined by the console
parameter process name. The console must be either the console
from which the process was created or a privileged console.
Example: stop
\f
T_e_m_p_ _C_o_m_m_a_n_d_
Syntax: temp <bs devicename><segments><entries>
<bs devicename>::= <name>
<segments> ::= <unsigned number>
<entries> ::= <unsigned number>
Searches the monitor for a backing storage device with the given
name. Then the console parameters for temporary segments and
entries for that device are defined.
Example: temp disc2 1500 3
\f
U_n_l_o_c_k_ _C_o_m_m_a_n_d_
Syntax: unlock
(privileged console only)
Will establish the use of the commands excluded by the lock
command.
Example: unlock
\f
U_n_s_t_a_c_k_ _C_o_m_m_a_n_d_
Syntax: unstack
Causes s to continue reading commands from a previous stacked
input source. If no input source is stacked, the command will be
blind.
Input will be stacked by the read command.
The stack depth is an option to s. Default is 2.
\f
U_s_e_r_ _C_o_m_m_a_n_d_
Syntax: user <ll userbase> <ul userbase>
<ll userbase>::= <number>
<ul userbase>::= <number>
Assigns the number pair to the console parameter user interval.
This usually defines the user scope in the sense of "File Proces-
sor".
Example: user 1025 1035
\f
2_._ _ _ _ _ _ _ _ _M_E_S_S_A_G_E_S_ _F_R_O_M_ _s_ 2.
2_._1_ _ _ _ _ _ _ _C_o_n_s_o_l_e_ _M_e_s_s_a_g_e_s_ 2.1
When the operating system has successfully processed a line of
commands, it prints the reply:
ready
If an error is detected during processing of a command in a line
then an error message is displayed, the rest of the command line
is ignored and the console returns to the ready situation.
The following is a list of error messages printed by the opera-
ting systems:
P_ error message: meaning:
M_ area error input/output error during area loading or
the print-command is trying to print a
word outside corestore
area reserved area reserved by another process
area unknown area not described correctly in catalog
or area name incorrect
base illegal incorrect use of the bases
remedy: examine your use of the project,
user, login- and base-command
bs claims exceeded bs claims not available; the process is
removed
remedy: create the process with "smaller"
claims
bs device unknown device name does not exist
remedy: examine your use of the bs-com-
mand
\f
catalog error input/output error during catalog lookup
or catalog system not initialized
device reserved device reserved by another process
remedy: wait until the device is not
reserved
device unknown device number does not exist
remedy: use the correct device-number
input aborted the buffer from the console has been
received with an abnormal status
remedy: send the command line to s once
more
name unknown name does not exist in "susercat"
remedy: create an entrance in "susercat"
with the given name
no areas area process description not available
remedy: use the area-command
no buffers messages buffers not available
remedy: use the buf-command
no core storage area not available
remedy: use the size-command
no entries in maincat the number of temporary entry claims are
not available in the main catalog
remedy: create the process with less
temporary entries
no internals internal process descriptions not
available
remedy: use the internal-command
not allowed command forbidden from this console, sys-
tem under initialization or state of pro-
cess does not permit this command
\f
not implemented optional command not assembled
process unknown process does not exist
remedy: use the proc-command
prog name unknown the program name is not visible from the
catalog base of the internal process
remedy: examine your use of the user-and
base-commands
program too big program size or entry point exceeds
primary storage area
remedy: use the size-command
syntax error illegal command syntax (or e.g. timeout)
2_._2_ _ _ _ _ _ _ _C_h_i_l_d_ _M_e_s_s_a_g_e_s_ 2.2
When the operating systems receives a message from one of its
child processes, the following is done:
a) If the waiting bit is equal to one (bit No 23 in the first
word of the message) then the child process is stopped, an
answer is sent to the process and a message is printed on the
console from which the process was created:
pause <processname><text>
The operator can now start, break, or remove the process
depending on the function in the message.
b) If the waiting bit is equal to zero, then an answer is sent
to the process, and a message is printed on the console from
which the process was created:
message <processname><text>
\f
The format of a message is following:
+0: function shift 12 + Pattern shift 5 + wait
+2: integer or text portion
+4: integer or text portion
until +14
Function If function is "finis", and wait is one, s will remove
the process.
If function is "replace", and wait is one, s will
remove the process and start reading from the bs-area
specified (see the read command).
Pattern Specifies how the message is to be displayed to the
operator. The pattern contains seven bits, one to each
of the words in +2 to +14 of the message.
A bit being one means that the corresponding word
should be printed as an integer, otherwise the word is
printed as a text portion of 3 characters.
Thus 1<11 means that the word in +2 is an integer.
Wait May be zero or one.
\f
3_._ _ _ _ _ _ _ _ _A_L_F_A_B_E_T_I_C_ _L_I_S_T_ _O_F_ _C_O_M_M_A_N_D_S_ _F_O_R_ _I_N_I_T_I_A_L_I_Z_A_T_I_O_N_ _O_F_ _T_H_E_ _C_A_T_A_L_O_G_ 3.
S_Y_S_T_E_M_
The functions of the initializing commands, which can initiate
the backing storage, are described.
3_._1_ _ _ _ _ _ _ _I_n_t_r_o_d_u_c_t_i_o_n_ 3.1
If you want to overrule the automatic oldcat action, change the
maincatsize or name, initialize a new system, change the kitlabel
etc., you may use the following commands to the operating system
s. These commands can only be used until the first process is
created.
The commands may be typed as described in section 1.5, but in
contrast to the reaction on 'normal' error messages, see section
2.1, the rest of the command line will not be skipped in case of
errors.
3_._2_ _ _ _ _ _ _ _D_e_s_c_r_i_p_t_i_o_n_ _o_f_ _t_h_e_ _C_o_m_m_a_n_d_s_ 3.2
A_U_X_C_L_E_A_R_ _C_o_m_m_a_n_d_
M_m_m_ 1
m_m_ fast
Syntax: auxclear <devno> <lowerbase>
p_p_ slow
P_p_p_ 0
M_m_m_ *
<upperbase> <entryname>
P_p_p_ 0
<devno>::= <unsigned integer>
<lowerbase>::= <number>
<upperbase>::= <number>
<entryname>::= <name> \f
This command includes temporarily, the stated device in the bs-
system with anonymous auxcatname and documentname, and possibly
with changed device kind (fast/slow).
All the stated catalog-entries will be removed from auxcatalog.
The discdrive will be excluded from the bs-system.
Example:
auxclear slow 6 8: 40000001 8388606 catalog
auxclear slow 6 -8388607 8388606 catalog
Both of these commands delete the catalog entry with the name
<:catalog:> and the interval -8388607, 8388606 from auxcat on
device 6.
E_r_r_o_r_t_e_x_t_s_
a) syntax error
b) as the KIT-command a.-e.
c) remove aux entry <entryname> result <integer>
<integer> is explained in the description of the monitor
procedure 'remove aux entry' (see ref. 4)
d) as the NOKIT-command
\f
B_I_N_I_N_ _C_o_m_m_a_n_d_
M_ bs
M_m_ mto *
Syntax: binin <docname> <position>
P_p_ nrz 1
P_ tro
<docname>::= <name>
<position>::= <unsigned number>
This command reads from the stated device (cf. BININ RCSL
31-D234).
If the reading is performed from bs/mto/nrz you must as the very
first name the device by using the CALL-command.
If tro the paper tape must be ready in the paper tape reader.
<position> indicates:
On disc it is the number of the first segment in the BININ-file.
On magnetic tape it is the filenumber.
On papertape it is irrelevant.
Example:
call 10 systemtape
binin mto systemtape 2 3 4 5 6 7 8 9
These commands will name the magnetic tape station and read 8
files from the tape.
\f
P_ Errortexts/Messages Meaning:
M_ a) modekind illegal the first parameter is not
bs/mto/nrz/tro
b) <docname> status <logical status bitpattern after input
status-bitpattern> (see appendix C)
c) input sum error sum error in SLANG-segment
d) input size error command segment > 256 words
e) <command name> syntax illegal command in command
error segment
f) create <entry name> result create entry <> 0
<integer>
g) change <entry name> result change entry <> 0
<integer>
h) rename <entryname> result rename entry <> 0
<integer>
i) remove <entryname> result remove entry <> 0
<integer>
j) perman <entryname> result permanent entry <> 0
<integer>
k) load <entryname> result create area process <> 0
<integer>
l) <entry name> status status bitpattern after area
<logical status bitpattern> output (see appendix B)
<integer> is the resultvalue described in the matching monitor
procedure (see ref. 4).
\f
C_l_e_a_r_c_a_t_ _C_o_m_m_a_n_d_
Syntax: clearcat
This command releases all discdrives/chaintables/catalogs.
Errortexts:
a) delete bs <docname> result <integer>
<integer> is explained in the description of the monitor
procedure 'delete backing storage'.
b) delete entries <docname> result <integer>
<integer> is explained in the description of the monitor
procedure 'delete entries'.
\f
K_I_T_
M_M_m_ 1
1
fast
Syntax: kit <new docname> <new auxcat name>
slow
0
P_P_p_ 0
<device number>
<new docname>::= <name>
<new auxcat name>::= <name>
<device number>::= <unsigned number>
This command includes device <device number> in the bs-system
with the documentname <new docname> and possibly with changed
auxcatname <new auxcatname> and device kind (slow is used in
connection with discdrives).
The document name and name of auxiliary catalog will be changed
in the kitlabel (i.e. the chainhead).
If the disc drive is switched off, this command is blind.
Example: kit privkit catprivkit slow 8
When the first kit is included in the bs-system, the correspon-
ding auxcat is searched for an entry describing a maincatalog
with the name <maincatname> (see the MAINCAT command). If the
entry exists, but has an incorrect size, it will be removed from
the auxcat. If the entry does not exist, it will be created with
the size specified by the maincat-command. This entry will be
connected as the main catalog.
To indicate inclusion in the bs-system the following text is
printed:
<docname> mounted on <devicenumber>
\f
Errortexts:
a) create peripheral process wrkname on <devno> result
<integer>
<integer> is explained in the description of the monitor
procedure 'create peripheral process'.
b) reserve process wrkname on <devno> result <integer>
<integer> is explained in the description of the monitor
procedure 'reserve process'.
c) create peripheral process documentname on <devno> result
<integer>
<integer> is explained in the description of the monitor
procedure 'create peripheral process'.
d) prepare bs on <devno> result <integer>
<integer> is explained in the description of the monitor
procedure 'prepare backing storage'.
e) on <devno> status <logical status bit pattern>
I/O - error. <logical status bit pattern> is explained in
appendix B.
f) <auxcatname> status <logical status bit pattern>
I/O - error. <logical status bit pattern> is explained in the
Binin-command.
g) <auxcat-name> status <logical status bit pattern> repair not
possible
I/O - error. <logical status bit pattern> is explained in the
Binin-command.
\f
h) <auxcat-name> status <logical status bit pattern>
update of entry count not possible
I/O - error. <logical status bit pattern> is explained in the
Binin command.
i) insert entry <entryname> result <integer>
<integer> is explained in the description of the monitor
procedure 'insert entry'.
j) auxcat to be repaired
k) auxcat to be repaired
update of entry count not possible.
l) main catalog not defined
no maincat connected
catalog error
use the MAINCAT-command or the KIT-command with the devices
in the right order, to remove this errortext.
m) connect main catalog <maincatname> result <integer>
no maincat connected
catalog error
<integer> is explained in the description of the monitor
procedure 'connect main catalog'.
n) remove aux entry <maincatname> result <integer>
no maincat connected
catalog error
<integer> is explained in the description of the monitor
procedure 'remove aux entry'.
o) create aux entry <maincatname> result <integer>
no maincat connected
catalog error \f
<integer> is explained in the description of the monitor
procedure 'create aux entry'.
p) (as the NOKIT-command)
no maincat connected
catalog error.
q) (errortext a-k)
no maincat connected
catalog error.
\f
K_I_T_
M_m_m_ *
Syntax: kit <devicenumber>
P_p_p_ 1
<devicenumber>::= <unsigned number>
This command functions like the former command, with the excepti-
on that no fields of the kitlabel (i.e. the chainhead) are
changed.
Errortexts:
see the former command
\f
K_I_T_L_A_B_E_L_
Syntax: kitlabel <devicenumber> <docname> <auxcatname>
M_M_ slow
<catsize> <slice length> <no. of slices>
P_P_ fast
<catsize>::= <unsigned number>
<slice length>::= <unsigned number>
<no. of slices>::= <unsigned number>
At present: <no. of slices> must be less than or equal to 2047
<catsize> must be less than or equal to 273
This command causes the writing of a chaintablehead and an empty
auxcatalog on the device stated.
The device will be partially included in the bs-system to prevent
unintentional use of the disc-kit.
If you want to use the disckit at once, then use the
NOKIT-command followed by the KIT-command.
Errortexts:
intervention on <devno> (i.e. the discdrive was switched off)
and
see KIT
\f
M_A_I_N_C_A_T_
Syntax: maincat <name of catalog> <size of catalog>
<name of catalog>::= <name>
<size of maincatalog>::= <unsigned number>-1
At present: <size of catalog> must be less than or equal to 273.
This command defines the name and size in segments of the
maincatalog.
Standard is:
<name of catalog> = catalog
<size of catalog> = -1
The size -1 indicates that the MAINCAT-command has not been used
yet.
Errortexts:
None
\f
N_O_K_I_T_
Syntax: nokit <devicenumber>
<devicenumber>:: <unsigned number>
This command releases discdrive/chaintable/auxcatalog from device
<devicenumber>.
Errortexts:
See CLEARCAT
\f
O_L_D_C_A_T_
Syntax: oldcat
This command uses a table from monitor-options with the
bs-devicenumbers, to generate a call of the KIT-command.
Example:
If the monitor is generated with bs-device 6, 7 and 8 (in this
sequence), the OLDCAT-command is exactly the same as the command
KIT 6 7 8.
Errortexts:
see KIT
\f
R_E_P_A_I_R_
Syntax: repair
This command has to be performed before a call of the
KIT-commands. By doing this it is possible to suppress o_n_e_
errortext of the type j and k (see KIT). It is permitted to
repair one catalog-segment.
\f
3_._3_ _ _ _ _ _ _ _E_x_a_m_p_l_e_s_ _o_f_ _U_s_i_n_g_ _t_h_e_ _I_n_i_t_i_a_l_i_z_i_n_g_ _C_o_m_m_a_n_d_s_ 3.3
It is common to the succeeding examples that the monitor is
loaded, and s asks for the date/time but before date/time is
written on the keyboard.
3_._3_._1_ _ _ _ _ _I_n_i_t_i_a_l_i_z_i_n_g_ _o_f_ _a_ _N_e_w_ _S_y_s_t_e_m_ _f_r_o_m_ _M_a_g_t_a_p_e_ 3.3.1
1. Switch off all the dicsdrives. This will make the automatic
OLDCAT-action completely blind.
2. Type date/time on the keyboard. Now the system is ready for
KITLABEL etc.
3. Mount relevant disckits and switch on all discdrives.
Write a label on the disckits
e.g.
kitlabel 6 disc catdisc slow 50 21 2045
kitlabel 7 disc 1 catdisc1 slow 50 21 2045
kitlabel 22 diablo1 catdiablo1 slow 20 2 1212
4. Perform the cleaning after KITLABEL and include the disckits
in the system by giving the commands
clearcat
maincat catalog 73 (or another size if wanted)
oldcat
5. Transfer the standardprograms from systemtape e.g.
call 10 systemtape
binin mto systemtape 2 3 4 5 6 7 8 9
Now the system is ready for creation of process etc.
\f
3_._3_._2_ _ _ _ _ _N_o_r_m_a_l_ _(_D_a_i_l_y_)_ _S_t_a_r_t_ _w_i_t_h_ _a_ _N_e_w_ _S_p_e_c_i_f_i_c_ _M_a_i_n_c_a_t_s_i_z_e_ 3.3.2
This can be done in several ways.
E_i_t_h_e_r_:
1. Mount all relevant disckits and apply power to the disc-
drives.
2. Type in date/time on the keyboard. (Now an automatic oldcat-
action is performed).
3. Give the commands:
clearcat
maincat catalog 83
oldcat
O_r_:
1. Switch off all the discdrives.
2. Type in date/time on the keyboard. (Notice: all discdrives
are switched off, therefore the automatic oldcat-action is
blind).
3. Mount all relevant disckits and apply power to the disc-
drives.
4. Give the commands:
maincat catalog 83
oldcat
Now the system is ready for creation of processes etc.
\f
3_._3_._3_ _ _ _ _ _N_o_r_m_a_l_ _S_t_a_r_t_,_ _b_u_t_ _M_a_i_n_c_a_t_a_l_o_g_ _i_s_ _n_o_t_ _o_n_ _t_h_e_ _'_F_i_r_s_t_'_ _O_l_d_c_a_t_d_e_v_i_c_e_ 3.3.3
1. Switch off all discdrives.
2. Type in date/time on the keyboard (notice: an automatic
oldcat-action will be blind).
3. Mount all relevant disckits on and apply power to the disc-
drives.
4. If necessary define the size of the maincatalog and include
the disckits in the wanted order.
e.g.
maincat catalog 59 (if necessary)
kit 7 6 22
\f
F_ 4_._ _ _ _ _ _ _ _ _P_R_O_G_R_A_M_ _S_C_A_T_O_P_ (S-CATALOG _OPERATION) 4.
The program is intended for use on operators level for s-user-
catalog managing purposes, i.e. initializing the catalog,
creating/changing/deleting entries or printing out contents of
single entries.
The s-user-catalog is supposed to be placed on an area, named
<:susercat:>, and should be present before using the scatop-
program.
The program is called with a number of parameters, of which the
first determines the action/subprograms to be performed. This
first parameter should be one of the following names:
newcat a new s-user-catalog will be created
insert creation of an entry is attempted
change changing of an entry is attempted
delete deletion of an entry is attempted
print an entry is attempted printed out
printcat the usernames in susercat are printed out.
The newcat and printcat action will unconditionally be executed.
If the parameter following the action is a name the action will
act upon the hereby named entry (gives no meaning for newcat and
printcat). If the parameter is not a name the action will act
upon the "entry0" (the catalog-describing entry).
A parameter to any action must be one of the following types:
<integer> determines the value of one word
<integer1>.<integer2> determines the value of one word,
is interpreted as integer1 shift 12 +
integer2.
<name> determines the value of 4 words.
max 11 characters, which are placed to the
left in the 4 words, unused place is padded
up with (binary) zeroes.
\f
F_u_l_l_ _S_y_n_t_a_x_
M_m_m_ 1
P_p_p_ newcat *
insert <integer>
M_m_m_ change 1
scatop <username> <integer1>.<integer2>
P_p_p_ delete 0
print <name>
M_m_m_ printcat 0
P_p_p_ 1
All actions have in common:
-- word 0 in an entry, the hashvalue, cannot directly be set or
changed, but is managed due to the built in hashfunction.
-- superfluous parameters are blind.
-- too few parameters, will be padded up with zero parameters,
before the action is executed.
\f
Referring to the format of susercat (see page 73), the detailed
interpretation of the parameters in each action will be:
newcat the whole catalog is deleted.
The parameters are interpreted strictly sequen-
tially and laid out as entry0 in the catalog
from word (+2) and up.
insert the entry named is created and placed in the ca-
talog. The parameters are interpreted and laid
out sequentially from word (+2) and up, only the
entryname and the succeeding parameter are in-
terchanged to fit the entryformat (see page 74
and example 2).
change changes parts or all of an entry.
Every second parameter (after an eventual entry-
name) indicates a word (= relative halfword
address//2) to be changed. The following para-
meter determines the new value to be placed in
this word, and succeeding words in case of a
name.
delete the indicated entry will be (marked as) deleted.
Parameters given after the entryname has no
influence at all.
Note that entry0 (fortunately) cannot be deleted
by this command.
print each word in the indicated entry will be printed
as one integer word, 2 integer halfwords and 3
characters. Blind, illegal and control characters
are printed out as an '*'. Parameters given after
the entryname have no influence at all.
printcat each username included in susercat will be
printed out, unsorted.
Parameters given after printcat have no influence
at all.
\f
Calculation of entry length and 'last used of entry 0'
<last used of entry 0>: as entry 0 has the same length as a job
describing entry only a part of the entry may carry information
about the devices. 'last used of entry 0' is the last halfword
carrying information in entry 0. It can be calculated as
6 + 12 x (no. of devices in susercat)
<entry length>: The length of an entry in susercat. If no. of
devices is less than 10 the entry length is calculated as
44 + 8 x (no. of devices)
else <entry length> equals <last used of entry 0>
To avoid mistakes see to that an area named <:susercat:> is pre-
sent at all before using the commands. Even before using the new-
cat command an area of this name (no matter the size) should be
present.
Some examples (see formats of susercat page 74)
1) scatop newcat 68 42 10 disc 0 0 disc1 0 0 disc2 0 0
creates a new susercat with
+2: <entrylength> = 68 halfwords
+4: <last used> = 42 (halfwordaddress)
+6: <catsize> = 10 segments
+8: <name of device 0> = 'disc', padded with zeroes, take up
4 words.
+16: <slicelength device 0>
+18: <reference> the given values unimpor-
tant, the proper values
will be computed and
inserted.
.
.
.
and so on, until the para-
meter list stops, the rest
of the entry will be filled
with zeroes.
\f
2) scatop insert japroc 0.0 0 0 6.7 0.1056 0.0 100 200 100 100
20000 FP 100 110 20 1000 20 1000
(Observe that the two first parameters are interchanged, see page
74, hw +2 and hw +4).
An entry named "japroc" is inserted in the catalog. Most values
defined by parameters are following the standard claims for a
process by "new" command, but three exceptions:
a) The three bases (std, user and max base) are located to a
private interval. (HW +22, +24, +26, +28, +40, +42).
b) Hw +30 <size> is expanded from normally 12800 to 20000
halfwords.
c) The bs-claims are somewhat extended as well. (hw +44, +46,
+48, +50).
3) scatop change japroc 8 4.7 15 15000 16 myprog
will change the entry "japroc" by following:
word 8 (+16) <buf> changed to 4, <area> left unchanged
word 15 (+30) <size> changed to 15000.
word 16 (+32) and succeeding three words
now contain the name "myprog",
left justified, padded with binary zeroes.
4) scatop change 8 42 10 disc2
As no name is indicated as first parameter to change the
action is executed upon entry0 (the susercat describing)
word 8 (+16) is changed to 42, i.e.
<slice length, device 0> is changed to 42 (there is
hardly a reason for making this change)
word 10-13 (+20-26) are changed to contain 'disc2', i.e. the
name of device 1 will now be 'disc2'. Note that the
<slice length> and <reference> in word 14-15 will not be
changed!
\f
5) scatop delete japroc
The entry with <user name> = 'japroc' is (marked) deleted.
6) scatop delete
Will actually be executed, but has no effect at all.
7) scatop print japroc
The entry with <user name> = japroc will be printed out
8) scatop print
The catalog describing entry0 (no name indicated)
will be printed out.
9) scatop printcat
All usernames in susercat will be printed out.
10) a job with claims as a "new" process
Scatop insert name 0.0 0 0 7.6 0.1056,
0.0 8388605 8388605 8388605 8388605,
12800 FP 8388605 8388605 0 0 20 800
will correspond to new name run
11) a job with all available b_s_ claims
Scatop insert haps 0.1_0_2_4_ 0 0 5.5 0.1056,
0.0 10 20 10 20 10000 FP 10 20
12) Change the job in ex 10 to a job with start adr 60000
Scatop change name 1 0.2 6 60000
\f
Possible errormessages:
P_a_r_a_m_e_t_e_r_ _E_r_r_o_r_s_
Preceded by '***scatop: param no <no>:'
Succeded by one of the following:
'action missing' scatop has been called without
indication of an action.
'action unknown' the parameter following scatop
is not one of the known
actionnames.
'unknown delimiter' the parameter has a wrong
format.
'too many parameters' the parameterlist is too long.
(the following occur only when using the change command)
'<integer> index expected' an integer was supposed as next
parameter, should indicate an
index.
'index outside entrybounds' the parameter contains an index
greater than or equal to the
number of words in an entry.
'forbidden field, must not be
changed' the indicated word cannot be
changed by the change command.
Try delete followed by insert
or create a new susercat.
'one more parameter expected' after the last index given, a
new value to be inserted should
follow.
\f
F_o_r_m_a_t_ _o_f_ _s_u_s_e_r_c_a_t_
Entry 0 All other entries
+ 0 not used + 0 <hash value>
+ 2 <entry length> + 2 <prio> <command mask>
+ 4 <last used of entry 0> + 4 <process name>
6 <size of catalog> 6 -
8 <name device 0> 8 -
10 - 10 -
12 dev.0 - 12 <first address>
14 - 14 <work>.<work>
16 <slice length device 0 16 <buf> <area>
18 <reference> 18 <internal> <function>
20 <name device 1> 20 working location
22 - 22 <max ll>
24 dev.1 - 24 <max ul>
26 - 26 <std. ll>
28 <slice length device 1> 28 <std. ul>
30 <reference> 30 <size>
32 . 32 <prog>
34 . 34 -
36 . 36 -
38 dev.2 . 38 -
40 . 40 <user ll>
42 . 42 <user ul>
44 . 44 <entries temp>
46 . 46 <segments temp> device 0
48 dev.3 . 48 <entries perm>
50 . 50 <segments perm>
52 52 .
54 54 . device 1
56 56
hashvalue = -1 empty entry
hashvalue = -2 deleted entry
<reference> points to the start of the claim list for the device in
consolebuffer relative to the start of the console buffer
Number of devices in susercat is installation dependent; standard
is all devices.
\f
E_x_p_l_a_n_a_t_i_o_n_ _o_f_ _a_ _s_u_s_e_r_c_a_t_ _e_n_t_r_y_
<hash value> Inserted automatically.
See page 71, example 2.
<prio> Insert the priority of the
process.
Corresponds to the prio command.
<command mask> Only the three bits mentioned
under 1, 2 and 3 are used so the
standard value of the command
mask can be 0.
1_. if <first address> is set <>
0 add 2 to the command mask
2_. if you want mode=0 add 4 to
the command mask
3_. if you want "all" bs-resour-
ces add 1024 to the command
mask
<first address> Insert the value 0 except you
want the process to start in a
specific address. Remember to
change the command mask.
Corresponds to the addr-command.
<buf> Insert the no. of message
buffers.
Corresponds to the buf-command.
<area> Insert the no. of area processes.
Corresponds to the area-command.
<internal> Insert the no. of internal pro-
cesses.
Corresponds to the internal-
command.
\f
<function> Insert the standard value 1056.
Corresponds to the function-
command.
<max ll> Lower limit of the max base.
<max ul> Upper limit of the max base.
Corresponds to the project-
command.
<std.ll> Lower limit of the standard base.
<std.ul> Upper limit of the standard base.
Corresponds to the login-command.
<size> Insert the process size in half-
words.
Corresponds to the size-command.
<prog> Insert the name fp except you
want another program to replace
fp.
Corresponds to the progcommand.
<user ll> Lower limit of the user base.
<user ul> Upper limit of the user base.
Corresponds to the user-command.
<entries temp> Temporary entries.
<segments temp> Temporary segments.
Corresponds to the temp-command.
<entries perm> Permanent entries.
<segments perm> Permanent segments.
Corresponds to the perm-command.
\f
O_t_h_e_r_ _M_e_s_s_a_g_e_s_
Preceded by '***scatop: ', followed by one of the following:
'entry does not exist' or
'entry exists already' Occurs when the desired action
cannot be performed due to one
of the given reasons, see the
survey in chapter 1.
'devi<no> not found in nametabel' During execution of newcat the
devicename indicated for device
no <no> was not found/known by
the system.
'catalog full, name not found' Occurs e.g. when the catalog is
filled up, and it is attempted
to insert a new entry. Delete
some entries and insert again,
refuse the insertion or create
a bigger susercat (and insert
all the entries again). Could
also occur when e.g. the whole
catalog has been searched for
an unknown entry. In any case,
the operator is warned that the
catalog is full (and the name
was not found).
'catalog error, hashvalue' This is a hard system error,
save a hardcopy of the run and
consult the RC support depart-
ment.
\f
A possible configuration of susercat could be:
Entry 0 Console buffer
. .
. .
. .
+8 .
.
dev.0 +50 entries/segments
on first device
+18 <reference> +56 in chain table
+20 +58 entries/segments
on second device
dev.1 +64 in chain table
+66 entries/segments
+30 on second device
+32 +72 in chain table
dev.2
+42 <reference>
entries/segments
on n'th device
in chain table
In the consolebuffer there are four words for every possible
device in chaintable, containing information about permanent/
temporary segments and entries.
\f
F_ A_._ _ _ _ _ _ _ _ _R_E_F_E_R_E_N_C_E_S_ A.
1 RCSL No 31-D364:
SYSTEM 3 UTILITY PROGRAMS, Part One
2 RCSL No 31-D379:
SYSTEM 3 UTILITY PROGRAMS, Part Three
3 RCSL No 55-D1:
RC4000 REFERENCE MANUAL
4 RCSL No 31-D477:
RC8000 MONITOR, Part Two
5 RCSL No 31-D476:
RC8000 MONITOR, Part One
\f
F_ B_._ _ _ _ _ _ _ _ _B_A_C_K_I_N_G_ _S_T_O_R_A_G_E_ B.
Backing storage files are created explicitly by means of the pro-
gram 'set', but they may also be created implicitly in case an
FP-command like 'p=algol' or >p=edit q> is executed and p does
not exist already (or is protected against writing).
A backing store file occupies two kinds of resources: a number of
b_a_c_k_i_n_g_ _s_t_o_r_e_ _s_e_g_m_e_n_t_s_ and one c_a_t_a_l_o_g_ _e_n_t_r_y_. A file may change
length after its creation, thereby occupying more or less seg-
ments.
1_._ _S_c_o_p_e_
Some files live as long as the user wants, others are cancelled.
Some files are only 'visible' to one user, others are visible to
all users. Altogether, we distinguish between the following kinds
of scope:
T_e_m_p_o_r_a_r_y_ _F_i_l_e_
A temporary file is cancelled on request of the user, of the au-
toload function, of the start up of BOSS and in some cases BOSS
will cancel a temporary file not in use. A temporary file is vi-
sible from all processes with the same login base.
L_o_g_i_n_ _F_i_l_e_s_
A login file is cancelled on request of the user or by start up
of BOSS. A login file is visible from all processes with the same
login base.
U_s_e_r_ _F_i_l_e_
A user file is only cancelled on the request of the user. A user
file is 'visible' from all processes created with the same job-
name (user base) as when he created the file.
P_r_o_j_e_c_t_ _F_i_l_e_
A project file is only cancelled on the request of a user under
the same project base. A project file is visible from all proces-
ses with the same project base as when the file was created.
\f
S_y_s_t_e_m_ _F_i_l_e_
A system file may only be created and modified by the maintenance
staff. The file is visible from all projects enabling program-
ming.
User, project and system files are named in common as p_e_r_m_a_n_e_n_t_
f_i_l_e_s_, because they are never cancelled automatically. When a
file is born, it will always start out as a temporary file. La-
ter, the scope of the file may be changed by means of the scope
command, which is available as an FP-command.
A login file or a temporary file may be created with the name p
even if you already have a user file with that name. When you la-
ter refer to p, the login file will be used. If the login file is
cleared, the user file will reappear. In the same way, a user fi-
le may be created even if a project file with the same name al-
ready exists. And finally a project file may be created with the
same name as a system file.
B_._1_ _ _ _ _ _ _ _R_e_p_r_e_s_e_n_t_a_t_i_o_n_ _o_f_ _S_c_o_p_e_ B.1
Each file in the system is described by an entry in the common
file catalog (which itself is a system file). The entry associa-
tes a permkey and an interval (the so-called entry base) with the
file. The catalog key may be 0, 2 or 3 and defines the 'life
time' of the entry. The entry base defines an interval of inte-
gers from which the file is visible. Together the permkey and the
base define the scope.
A process searching for a file in the catalog will have a c_a_t_a_l_o_g_
b_a_s_e_ (an interval) from which it looks for visible entries. The
result of the lookup will be the file with the name wanted and
with the smallest entry base surrounding the catalog base (or e-
qual to the catalog base).
Within certain limits the job may change its catalog base and the
entry base of files. To each job is associated 3 limiting inter-\f
vals specified in the user catalog and defining the access rights
of the job. Typically they appear like this:
Max base
User base
Std base
Possible non-standard positions
of catalog base.
The max base, the std base and the catalog base are parts of the
process description in the monitor, which maintains these rules:
The job may change its catalog base to any interval which is con-
tained in (or equals to) the max base and which contains the std
base (or equal it). The catalog base may also be contained in the
std base. The job may cancel or modify a file if the job could
change its own catalog base to the entry base of the file. Thus
files with an entry base outside the max base or adjacent to the
std base are protected against the job. Files adjacent to the std
base cannot even be read by the job.
Relative to the process, the scopes of files may now be described
in this way:
t_e_m_p_ _f_i_l_e_s_: permkey 0, entry base equals (or is contained
in) the std base.
l_o_g_i_n_ _f_i_l_e_s_: permkey 2, entry base as for temp files.
u_s_e_r_ _f_i_l_e_s_: permkey 3, entry base equals user base.
p_r_o_j_e_c_t_ _f_i_l_e_s_: permkey 3, entry base equals max base.
s_y_s_t_e_m_ _f_i_l_e_s_: entry base sorrounds the max base.
\f
Files with permkey 0 or 2 (non-permanent files) cannot be genera-
ted with an entry base surrounding the std base, as this would
prevent s from distinguishing processes temporary files from
other processes. Thus the std bases may never overlap, not even
the std base of the maintenance project (which has the largest
possible interval as its max base).
A full description of the file system is found in ref. 5.
\f
C_._ _ _ _ _ _ _ _ _L_O_G_I_C_A_L_ _S_T_A_T_U_S_ _B_I_T_S_ C.
The meaning of the logical status bits is:
1 shift 23: I_n_t_e_r_v_e_n_t_i_o_n_. The device was set in local mode
during the operation.
1 shift 22: P_a_r_i_t_y_ _e_r_r_o_r_. A parity error was detected during
the block transfer.
1 shift 21: T_i_m_e_r_. The operation was not completed within a
certain time defined in the hardware.
1 shift 20: D_a_t_a_ _o_v_e_r_r_u_n_. The data channel was overloaded and
could not transfer the data.
1 shift 19: B_l_o_c_k_ _l_e_n_g_t_h_. A block input from magnetic tape was
longer than the buffer area allowed for it.
1 shift 18: E_n_d_ _o_f_ _d_o_c_u_m_e_n_t_. Means various things, for
instance: Reading or writing outside the backing
storage area was attempted, the paper tape reader
was empty, the end of tape was sensed on magnetic
tape. For further details see the description of
External processes (see RCSL 31-D478: External
Processes).
1 shift 17: L_o_a_d_ _p_o_i_n_t_. The load point was sensed after an
operation on the magnetic tape.
1 shift 16: T_a_p_e_ _m_a_r_k_. A tape mark was sensed or written on the
magnetic tape.
1 shift 15: W_r_i_t_e_-_e_n_a_b_l_e_. A write-enable ring is mounted on the
magnetic tape.
1 shift 14: M_o_d_e_ _e_r_r_o_r_. It is attempted to handle a magnetic
tape in a wrong mode (NRZ or PE).
\f
1 shift 13: R_e_a_d_ _e_r_r_o_r_. Occurs on card reader. See the descrip-
tion of 'External processes'.
1 shift 12: C_a_r_d_ _r_e_j_e_c_t_ _o_r_ _d_i_s_c_ _e_r_r_o_r_. Occurs on card reader or
disc. See the description of 'External processes'.
1 shift 8: S_t_o_p_p_e_d_. Less than wanted was output to a file of
any kind or zero bytes were input from a backing
storage area.
1 shift 5: P_r_o_c_e_s_s_ _d_o_e_s_ _n_o_t_ _e_x_i_s_t_. The document is unknown to
the monitor.
1 shift 4: D_i_s_c_o_n_n_e_c_t_e_d_. The power is switched off on the
device.
1 shift 3: U_n_i_n_t_e_l_l_i_g_i_b_l_e_. The operation attempted is illegal
on that device, e.g. input from a printer.
1 shift 2: R_e_j_e_c_t_e_d_. The program may not use the document, or
it should be reserved first.
1 shift 1: N_o_r_m_a_l_ _a_n_s_w_e_r_. The device has attempted to execute
the operation, i.e. '1 shift 5' to '1 shift 2' are
not set.
\f
F_
\f
\f
«eof»