[xds-sigma-comp] Re: Any Sigma gurus still hanging around on this list?

  • From: "Jim Allen" <jallen@xxxxxxxxxxxxxx>
  • To: <xds-sigma-comp@xxxxxxxxxxxxx>
  • Date: Sun, 10 Mar 2024 19:55:31 -0500

Hi Steve,

 

Here’s the answer (sort of) from the Ref Manual for a Read operation …

 

“The read order causes the device controller to initiate an input operation.  
Bytes are stores in core memory, in an ascending sequence, beginning at the 
location specified by the memory byte address field of the command doubleword.  
The Input operation continues until the device signals a channel end – or – 
until the byte count is reduced to 0 and no further data chaining is specified. 
 Channel end occurs when the device has transmitted all information associated 
with the input operation and no longer requires the use of IOP facilities for 
the operation.”

 

So … in your example, if data chaining was not specified (DC flag bit set) and 
suppress incorrect length was permitted (SIL flag bit set) the I/O operation 
would have been completed after 100 bytes were passed.  

 

“If [the SIL flag] is 1, an incorrect length indication is not considered as an 
error by the IOP, althout the IOP retains the incorrect length indication and 
provides an indicator (bit 8 of the status response for SIO, HIO and TIO) to 
the program.  If the SIL flag is 0, an incorrect length is considered an error 
and the IOP performs as specified by the HTE and IUE flags.  Incorrect length 
is caused by a channel end condition occurring before the device controller has 
received a count-done signal from the IOP [a “shorter” physical record] or is 
caused by the device controller receiving a count-done signal before end of 
record; e.g., count-done before 80 columns have been read from a card.”

 

So … the latter situation described in the paragraph above seems to describe 
your situation – ask for 100 bytes of input but the physical record is 200 
bytes.  It sounds like the 100 bytes would be transferred properly and the rest 
of that physical record would be unavailable unless data chaining had been 
indicated in the original READ command.

 

I think to actually read the entire physical record, you would have to issue a 
“backspace record” (available to tape devices), increase the acceptable record 
length and issue another read command.   No wonder it’s easier to generate and 
incorrect record length message and issue an abend!  

 

I didn’t have to get into this level of detail on a Sigma as I had the benefit 
of the operating system’s somewhat higher level CAL1 commands.   Hopefully 
someone who has dealt at the diagnostic level can chime in!!

 

I’ve attached a copy of the relevant pages from the ’73 edition of the 
reference manual.

 

*       Jim

 

From: xds-sigma-comp-bounce@xxxxxxxxxxxxx <xds-sigma-comp-bounce@xxxxxxxxxxxxx> 
On Behalf Of Steve Martin
Sent: Sunday, March 10, 2024 8:59 AM
To: xds-sigma-comp@xxxxxxxxxxxxx
Subject: [xds-sigma-comp] Any Sigma gurus still hanging around on this list?

 

Got a question regaring Sigma I/O. (I'm churning through a long-time project of 
writing a simulator for Sigma 7 under Linux.)

 

Say the CPU issues an SIO for input from a tape. The SIO specifies 100 bytes be 
read, but the next record to be read on the tape is 200 bytes long. I know that 
this could cause a length mismatch status back to the CPU, but what happens to 
the extra 100 bytes in the record? Do they get thrown out? Does the IOP or the 
CPU buffer them and use them for the next read? Or something else?

 

Thanks to any who might have the answer.

 

Attachment: IO Ops.pdf
Description: Adobe PDF document

Other related posts: