Thursday, March 17, 2016

Down to last few tests for virtual 1403 printer

Sidenote - it may seem that after retirement, I would get more done per day than before and have plenty of idle time. That was my expectation. There are a daunting number of tasks that must be handled to convert to a retired lifestyle, however, which are demanding big chunks of time even two weeks after I stopped working.


Implementing virtual 1403 printer

I ran a test to display the first 8 bits of the virtual carriage control tape buffer at the current line. That began as line 1, which had only a punch in channel 1. It displayed correctly as x80 upon testing. Next, I set up the display to show the latched up channel seek list from an XIO Control - this should be non-zero after I issue the Skip to Channel operation (XIO Control).

The next test latched up the code I put in memory and referenced with the XIO Control - skip to channel 4 - which should have matched a number of lines in the buffer. In spite of seeing some good values in the buffer, I might not have a full and faithful copy of the carriage tape words I pushed down from the PC.

It occurred to me that my problem may be byte order differences resulting in swapping of the bytes from what I planned for in the carriage tape and what arrives to the FPGA and makes its way to the buffer memory. I had some diagnostic LEDs set to show me the high bits of the current buffer and with the print line set to 1, it displayed 0b10000 when I should have seen 0b10111 if it was correctly stored.

 Finally, I caught the problem in my process that loads the carriage control tape image into a buffer memory. I made a change and now the carriage is not running away. I have a minor problem left with synchronizing - what line the fpga thinks we stopped at versus the Python code - but I already know at least one fix.

I spotted flaws in the Python code related to the mismatch of line numbers I was seeing. Partly it is a matter of the pernicious 'off by one' problem - people think of line numbers starting at 1 but the array holding the carriage tape values is origin 0. I had to adjust the line number at the appropriate times.

It appears my skipping works right, but I need to do some careful tests that verify the line we should reach for various sequences of space and channel skips. This will take a bit of design work, to be sure I have a good test and can definitively mark the virtual 1403 as done.

1 comment:

  1. This retirement stuff ain't easy - it takes a good year or two before you get it right and about then people start calling you and saying things like,"You're not too busy, right, so maybe ...".