Skip to main content

A PDP-10 Implementation

Although the following can be implemented as either a set of user routines or imbedded in the monitor as UUO's (our first implementation will be the former), the latter version will be used for descriptive purposes. The UUO's would be:

UUOOperandsDescription
PUTFCH, EPut flag
PUTDCH, EPut data
PUTCH, EPut record
GETFDCH, EGet flag or data
GETCH, EGet record

In the above, "CH" is the logical channel number. The customary OPEN or INIT UUO is used to open the channel. Standard format user buffers are assigned. However, the ring and buffer headers will be used in a nonstandard way, so that data mode 12 is assigned for use with Network buffering and file status bit 31 must be on for input. (Any of the devices DSK, DTA, MTA, or IMP can be used in this mode.)

In the Harvard NCP and HOST-HOST protocol implementation, user buffers do not correspond directly to messages. On output, each user buffer will be formatted into a message; on input, a message may become one or two user buffer loads (128 word buffers are used in order to make maximum use of the facilities of the disk service routines).

PUTF UUO​

This UUO places a flag into the output buffer. The effective address is the location of a word:

         XWD operation, count

In the case of block flags, the count is ignored, since it will be computed from the number of bytes actually placed in the buffer before the next use of PUTF. PUTF and PUTD will insert EOM flags automatically as each buffer becomes full; if data bytes are currently being placed in the buffer by PUTD, it will also insert an EOM flag after computing the count for the previous block flag in the buffer and place a new block flag of the same type at the beginning of the next buffer, after inserting a SIZE flag stating the then current byte size.

PUTD UUO​

This UUO places data into the output buffer. The effective address is the location of the data byte (if the byte size is less than 36) or of the next 36 bit word of data to be placed in the buffer. In the first case, the byte is assumed to be in the low order part of the word addresses. In the second case, the data word containing the final bits of the byte contains them in the high order part of the word, and the next data byte starts a new word in PDP-10 storage. Thus, for a byte size of 64, two entries to PUTD would be used per byte transmitted, the first containing 36 bits and the second containing 28 bits, left-justified. This strategy allows maximum use of the PDP-10 byte handling instructions.

PUT UUO​

This UUO places a whole logical record in the output buffer(s). The effective address is that of a word:

         IOWD count, location

A PUTF UUO must have been used to output the proper SIZE flag. Thereafter, each use of PUT will output a BLOCK flag, [3] simulate a number of calls to PUTD using the IOWD to discover the location and size of the user data area, and then output a RS flag to indicate end of record.

In the case of byte size of less than 36 bits, PUT will use the ILDB instruction to pick up bytes to be output by PUTD. Hence, the standard PDP-10 byte handling format is used, and the count part of the IOWD is the total byte count, not word count.

The above UUO'S have both an error return and a normal return.

GETFD UUO​

The calling sequence for this UUO is:

         GETFD CH, E
error return
whyte flag return
block flag return
data return

The effective address is the location at which the flag or data will be returned. The flag is returned in the same format as for PUTF and the data in the same format as for PUTD. Certain flags (NUL, IGNORE, and EOM) will be handled entirely within the UUO and will not be reported to the user. SYS should eventually be handled this way, but initially will be handled by the user.

GET UUO​

The calling sequence for this UUO is:

         GET CH, E
error return
end of file return
end of group return
normal return

GET transmits the next logical record to the user, using GETFD together with an IOWD in the same format as for PUT. If the IOWD count runs out before end of record, the remainder of the record will be skipped. In any case, the updated IOWD will be returned at the effective address of the UUO in order to inform the user how much data was transmitted or skipped.