--
You received this message because you are subscribed to the Google Groups "IBM1130" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ibm1130+u...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
At DNA we used tape drives. My emulator also supports tape. It is available on this forum. I'll look for the doc.
On Nov 5, 2015 8:08 PM, "rbsteup" <rbs...@gmail.com> wrote:
>
> We had an 1130 system at Manassas, VA that had a dual 2415 tape drive - a 7 and 9 track combo. I don't remember any of the details. I remember writing an assembler package of subroutines that was callable from Fortran to do IO on the drives. It was pretty straight forward and took me only a day or two to get it operational.
>
> It was used by the IPF System, a graphical FET Integrated circuit chip design system
>
I have always wondered about ‘chaining’. What happens if I add a link to a previous command block JUST as the command is completing? It seems to me that the new command block would never get executed.
So, disable interrupts to prevent the previous command from completing, check to see that it isn’t complete and then add the link. Fine! But the 1130 doesn’t have a facility for disabling interrupts. At least not in the hardware as I understand it.
If the tape drive doesn’t already include a FIFO, I would certainly add one.
From: ibm...@googlegroups.com [mailto:ibm...@googlegroups.com] On Behalf Of Carl Claunch
Sent: Saturday, November 07, 2015 7:59 AM
To: IBM1130
Subject: Re: [IBM1130] Re: Anyone have any documentation or information about the RPQ to use 2415 tape drives with an 1130 system
Hi John
Yes, it uses cycle steal for data transfers.
The selector channel only implements four types of XIO.
XIO Sense ILSW during an interrupt level 4 returns 0x0000000000001000 to mark the selector channel as the interrupt source
XIO Control with the data address in the IOCC pointing at a CCW in core acts as a Halt IO, stopping the IO activity
XIO Write with the data address in the first word of IOCC pointing at a CCW in core is the Start IO, telling the channel to fetch the CCW and begin IO to the device whose number is in the end of word two of the IOCC
The CCW acts somewhat like the WCA for the 'normal' 1130 instructions XIO Init Read or XIO Init Write.
The selector channel fetches the CCW, which has three words. First is the count to transfer, second is options and the command code, third is the core address for the data to be read/written. In a WCA, the first word is a count for the transfer but then the data is in the WCA in the succeeding core locations. The CCW scheme has commands like Read Backwards, Control, Test IO and Transfer in Channel, which is a branch to a new CCW. The options can tell the channel to read the next three words as a follow on CCW once the current CCW is complete (command chaining), it can tell the channel to transfer the IO count from the current CCW then fetch another CCW in the following three words, using the new CCW to continue the IO operation moving an additional count of data to a new core location (data chaining), and other options.
The selector channel fetches the CCWs, begins the actual IO operation on the control unit and then uses the count and data addresses from the CCWs to move the data in or out of core via the cycle stealing mechanism in the 1133 Multiplexor box.
Therefore no direct one word IO (e.g. no XIO Read and the XIO Write is repurposed to be the Start IO to the channel.
Flat out, an 1130 could only transfer 277,777 words per second on a 3.6us machine, 454454 words per second on the faster 2.2us models, at which rates no instructions would execute and no other IO could take place.
The fastest 2400 series drive at 1600 bpi and 112.5 ips transfers at 180000 bytes per second, which is 90000 words per second - impactful in the same way as disk IO but not out of the question. Usually 2415 models were installed which ran at 18.5 ips and only required cycle steal rates of 15000 words per second while transferring data.
You make a good point about reasonable block sizes given core memory. A 4K block size would require 2048 words of core, attainable on a 32K machine but impractical on 4K or 8K systems.
Carl
.
The S/360 CCW has a Command Chaining or Data Chaining bit that would be interpreted as it was fetched – thus it would be too late to try to append by flipping the bit while the command was in operation or completed. On the other hand, you can definitely change the contents of the next CCW while the current one is in process. Plenty of dynamic channel programs existed in telecommunications and for optimized disk operations.
Disabling interrupts does nothing to stop the channel from completing. Think about the Program Controlled Interrupt flag, which allowed a channel program to cause an interrupt when a particular CCW was fetched, possibly even to allow dynamic modification of CCWs somewhere further down the CCW chain. If you don’t accept the interrupt, that didn’t stop the channel from fetching away and executing further CCWs – if you missed the window, too bad.
The third word of a CSW in the 1130 implementation is the CCW address but it is always +3 from the address of the one executing. That also shows that the channel fetches the entire CCW and its flags before executing and doesn’t ‘look back’. I have to assume that the 360 channel CSW also presents the address of the next sequential CCW beyond the one in execution now, but haven’t look at 360 PrincOps yet to confirm this. IBM has fairly lazy in doing RPQs that involved borrowing hardware from one system to put on another. Thus, the 1133 would have had essentially all of the Selector Channel hardware from a real 2860 channel box, plus glue logic to respond to XIO commands, do cycle steal for data fetches and present interrupts. However the 2860 worked is highly likely to be how the Attachment Channel RPQ worked on the 1130.
The drives I own are ‘streaming’ drives that support start-stop IO but use a large FIFO to try to keep the tape moving steadily. Without vacuum columns, those drives would have terribly slow start and stop times, but would attain a decent IPS rate once moving. I still haven’t decided exactly how I will attach my tape drives to the 1130. If I use a PC and a SCSI card, then the PC memory would be the buffer to ensure speed matching between the 1130 and the drive. If I can find some hardware to make the fpga the host driving the SCSI cable, then I would indeed do some kind of speed matching FIFO as you suggested, even though the drive itself has an internal FIFO.
SPECULATIVE MODE ON
The 1130 doesn’t disable interrupts, while the 1800 supported that. I imagine you could do the equivalent on systems without a 1442 installed, by creating a pseudo device that interrupted on level 0 and just BSC I back from the interrupt routine leaving level 0 active. No lower level interrupt would take place until you cleared the interrupt at a later time by issuing some kind of BOSC command, but you wouldn’t stay in the interrupt routine for zero, you would go back to other code. Thus, somehow trigger the interrupt level by an XIO to your special area code, then do an XIO Sense Device with reset to turn off the request. Your user code that wanted to disable interrupts would XIO to set interrupts, then XIO DSW Reset and BOSC to itself to clear L0. Otherwise, it could do whatever you wanted. You could even nest the concept – put the XIO to disable inside some other interrupt handler, forcing the branch to our L0 handler and back then ensuring other ‘higher’ interrupt levels would not occur until we had reset L0 with a BOSC, then eventually get control back in our original int handler to BOSC to clear our own level.
SPECULATIVE MODE OFF