.LP .ce .B ZBOOT - Ring boot server .sp .ce Steve Binns .sp .ce Revised Nov 1983 .sp .R .SH Introduction .PP A task has been implemented for the EMAS front end processor (FEP) to load (or 'boot') systems on the ring. The system was designed for Z80 based devices but it could be used for any machine. The load is performed using the byte stream protocol to give maximum reliability, although the Z80 load program does not guarantee to implement the full protocol because of space constaints in the PROM. .PP The load process consists in reading 'records' made up of 16 bit words from a .I load file .R and sending each record in a byte stream protocol DATA block to the requesting station. Only one system may be loaded at a time. There is a facility for the operator to specify alternative load files for specifically named ring stations. The loader also includes a timer mechanism which will abort a load operation if the data is not being sent faster than one record every few seconds. .PP The loader is implemented as a DEIMOS task with name ZBT, the object file name is ZBOOT. .PP A load is initiated by a device on the ring looking up the name ZTCPBOOT on the name server. An OPEN command should be sent to the specified port on the station quoting the function code obtained from the name server. If the loader is busy an OPENACK with result code 16 will be returned - the OPEN should be repeated after a short interval. If the loader is not available an OPENACK with result code 19 will be sent. If ZBOOT is available an OPENACK with zero result code will be sent and loading will commmence using the newly created byte stream. .SH Setting up ZBOOT .PP ZBOOT is available automatically at UKC during normal running on the EMAS FEP system. ZBOOT may be loaded on any DEIMOS machine by first loading the necessary ring software:- .DS LOGON 15 LOAD TSTEST .DE wait till the message SYSTEM LOADED is output then type .sp 1 .in 10 .I esc .R ZBOOT control-file .in -10 .PP The name server table will also have to be changed to the new station address. The port number and function code should stay the same. .PP ZBOOT monitors the load actions requested onto the control console in the form .sp .ti 10 ZBOOT:LOAD load-file TO destination .PP Messages from ZBOOT should be self explanatory except for .sp .ti 10 ***ZBOOT DATA ERROR n AFTER r RECORDS .sp This message indicates an error in the format of the load file, n=1 implies that a record length is too big (>120 words) and n=2 that the end of file has been found prematurely. .SH Operator commands to ZBOOT .PP The following INT characters are recognised by ZBOOT, they are set by typing:- .in 10 .sp .I esc .R INT char ZBT .sp .in -10 on the console. .in +.5i .sp char .sp .IP ? This causes ZBOOT to output what it's doing as shown below:- .DS ZBOOT: STATE=nnn RECORDS SENT=nnn .DE Followed by a list of destination names and corresponding load files. .sp .DS The values of STATE are:- 0 => idle 1 => loading 2 => aborting 3 => closing at end of load .DE 2 and 3 are transient states not likely to be seen in practice. RECORDS SENT refers to the latest load, not to the sum of all loads. .sp 2 .IP A Causes ZBOOT to stop at the end of the current load (if any), the command normally takes a few seconds to take effect. .sp 2 .IP R Requests ZBOOT to reread the control file specified on the original load of the program. .in -.5i .SH Control file format .PP The control file contains a list of machine names together with their corresponding load file names. The file should consist of pairs of names, one pair to a line. The first item on each line is a machine name 'pattern', the second is the corresponding Deimos file name. When ZBOOT receives a load request it attempts to match the name of the machine requesting the load against the machine name patterns in turn. Patterns consist of literal characters which match with themselves and the meta-characters [ | ] *. * will match with any sequence of characters including the null sequence. The brackets [ and ] are used to enclose a set of alternatives with | being used to separate the alternatives. The control file should be terminated with the string END. .PP An example of a typical control file is:- .DS TCP[A|B|C] ZTST(30) TCP* ZTCP * ZLOAD END .DE .PP The information in the control file is stored and scanned in the order in which it is read. So that, as in the example, the more specific the name the earlier it should occur in the control file. In the example above, a choice of three load files is available, one to TCPA, TCPB and TCPC a second to any machine called TCPsomething and a default to anything else. The * can be used anywhere in the name to create more complex possibilities. In general * will match the longest possible sequence of characters so that A*B will match AXXBXXB. The brackets can be nested and the alternatives may contain *s. .SH Load file format .PP The file consists of a series of records to be transmitted along the byte stream; preceding each record in the load file is a one byte count n followed by 2n+2 bytes of data. The length byte should be less than 120. Each record excluding the count byte is sent as a single DATA block. For the Z80 the first pair of bytes is a load address and the remainder of the record the contents of store. The byte ordering is as specified in TSBSP i.e. the first of each pair of bytes in a record is sent as the most significant byte within a ring mini-packet. The file is terminated with a record count byte of zero.