Monday, 27 January 2014

CPU now passes complete suite of 6502 official opcode tests

The title says it all really.  The CPU now passes all official opcode stress tests from Marko Makela's suite.  It currently runs at 96MHz, but a wait state on most memory accesses the effective speed is more like 48x original.  A previous quick and dirty test with a FOR loop in BASIC suggests 42x, assuming that the CIA timers are running at the correct rate.

As a result, the C64 ROMs start up correctly as can be seen in the image below.  The display is shifted two characters to the right, due to a bug in the VIC-IV that I am trying to fix at the moment.

Of course the above image is rather boring, being just a 40x25 display like on a normal C64.  So the following two images show the same with the horizontal and vertical scalers set to 1x instead of 5x, yielding a 200x125 character display.  As mentioned in a previous post, the repetition of the C64 character rows is because the virtual row length is still set to 40 columns, so while it reads 200 bytes to display, on the next row, it goes back to the previous row + 40.  In other words, screen lines start at $0400, $0428 etc, but with overlapping spans.

A detail of the top left corner of the screen showing that all the issues with not displaying characters properly and repeating character data for multiple rows have been resolved.


  1. Do you have any more info please on Marko Mäkelä’s test suite? I'd like to add it to

    1. Hello,
      I am traveling at the moment, so I can't lay my hands on the test suite with confidence at the moment.