SAC INTERFACE FOR ADDING PERIPHERALS TO THE 1130
Virtual 1442 design
The restructured design for the 1442 card reader/punch is esthetically satisfying. The device moves cards through a sequence of stations, from the input hopper to pre-read, through the read station to pre-punch, then out to one of the two stackers. Cards advance one step on each read, punch or feed operation.
The programmer issues an XIO Control with a code to drive a feed cycle with or without a read or punch operation. Any of them will move the cards one step. If it is a read, then the card moving through the read station will generate 80 interrupts on IL0, one per card column. If a punch, then the card moving through the punch station will generate up to 80 interrupts on IL0, one per column until it sees bit 12 on which terminates punching for the remaining columns
For reading, the programmer must respond to each interrupt on level 0, issuing an XIO Read to pick up a word with a bit for each of the 12 rows that has a hole punched in it. Once the card exits the read station, the reader raises an interrupt on level 4 to signal end of the read operation.
For writing,the programmer responds to each interrupt on level 0 with an XIO Write to send a word that determines which punches are fired for the current column. Once the card exist the punch station the reader raises IL4 to signal end of the operation.
A pure feed operation receives an interrupt on IL4 once the cards have moved their one step ahead. No interrupts on level 0. A read or write could be considered to have a feed operation at the end of it.
To model this, I will have two eighty word buffers, one for the pre-read station and one for the pre-punch station. Records in the PC input file are the 'hopper' and on each feed operation the PC will push down the 80 column card from the file and put it into the pre-read buffer. As each feed occurs, the card in the pre-punch buffer (updated if a punch took place) is pulled up by the PC program and added to the output file.
Thus, the PC side is going to see the read, punch or feed request as an XIO Control and it will push the next input card down to the preread station. If no file is open, but a punch is requested, then blank cards will be delivered. Once the feed operation occurs if there was a read or punch, the PC side sees a false XIO - I chose XIO Init Read - which tells it to pull the card from the pre-punch buffer and stick it into the output file.
If the stacker select bit is on for the XIO Control that starts a read, punch or feed, it is delivered as word 12 with the poll transaction. The PC program can optionally open two output files, using stacker select to determine which gets the card image, otherwise the stacker select is ignored and they all go into the one file. If no output file is opened, then the data is not fetched from the pre-punch buffer and any punching operations are ignored.
Virtual 1403 printer design
The design of the virtual 1403 printer is simpler, as it does not have input and output in the same device. The 1403 uses cycle steal (XIO Init Write prints the line) to fetch the 132 columns of data, thus this will work much the same as the 2310 and 2501. A virtual carriage control tape of 10 bits per line is created in the FPGA and contains 1 where-ever a hole would be punched in a real tape.
The FPGA will directly handle all the line space and tape skip operations, setting the DSW with any carriage control tape holes encountered. When any line is printed with the XIO Init Write, word 12 of the poll delivers the line number for the line. The PC program can insert blank lines to the output file to reflect any skip and space operations which had taken place.
Physical device interfaces
I have several physical devices to interface
If the stacker select bit is on for the XIO Control that starts a read, punch or feed, it is delivered as word 12 with the poll transaction. The PC program can optionally open two output files, using stacker select to determine which gets the card image, otherwise the stacker select is ignored and they all go into the one file. If no output file is opened, then the data is not fetched from the pre-punch buffer and any punching operations are ignored.
Virtual 1403 printer design
The design of the virtual 1403 printer is simpler, as it does not have input and output in the same device. The 1403 uses cycle steal (XIO Init Write prints the line) to fetch the 132 columns of data, thus this will work much the same as the 2310 and 2501. A virtual carriage control tape of 10 bits per line is created in the FPGA and contains 1 where-ever a hole would be punched in a real tape.
The FPGA will directly handle all the line space and tape skip operations, setting the DSW with any carriage control tape holes encountered. When any line is printed with the XIO Init Write, word 12 of the poll delivers the line number for the line. The PC program can insert blank lines to the output file to reflect any skip and space operations which had taken place.
Physical device interfaces
I have several physical devices to interface
- paper tape reader and punch
- plotter
- 2 9 track tape drives
- 3 RK05 cartridge disk drives (similar to 2310)
- 3 top load cartridge disk drives
- HP line printer (to act as 1403)
- Documation 1000 cpm card reader (to act as 2501)
- IO Selectric typewriter (to act as 2741 terminal for APL/1130)