Quote:
A good test might be the game of life.
Yeah, that would be a good test. I need to get the hardware working a little bit better first.
Little by little things improve.
Not sure what I did, but the checkboard pattern for filled rectangles is fixed. I think it had to do with the data input latching. The input data latch buffer was not wide enough, a holdover from the 32-bit data version of the core.
In theory the blitter destination channel may now be used to zero out memory (any constant may be set).
Figured out a couple of reasons why loops were not being honored. The first one was loading the loop count register using too large of a number to fit in the immediate field of the instruction. There was a ‘loadi %r5,$25000’ the 25000 is treated as a negative number because the immediate field is only 15 bits. Another reason loop counts were off was in the state machine for the decrement-and-jump instruction. The register was updated twice, once in the branch state, and a second time in a writeback state. This caused the register to be decremented by two.
Found one issue with the triangle draw code. The divider load signal was stuck active causing the divider not to work.
Eight of the thirty-two hardware cursors now appear on the screen. IDK why the other 24 do not appear. They could be transparently colored (colors being chosen randomly). Greatly reduced the number of clock cycles consumed fetching cursor data. Done by assuming that cursor data is available within two clock cycles, so the normal data latching state is not used. Also, the fetch machine was revised so that it only fetches data for cursors that are displayed. With 32 cursors displayed it takes about 70 CPU clocks during the horizontal sync period. This works out to about 28 video clocks.
Text blitted characters show up on the screen, but the location seems somewhat random. The issue with location has me a bit mystified as the character box looks correct, the correct width and height. The width and height are included in the address calculation so it is at least partially working. Also, the character display is not correct. It would be nice to be able to dump messages to the screen.