Wednesday, 4 April 2012

In Which We Recap On Progress So Far


There's a slight hiatus in progress for the moment, whilst I grapple with the dark complexities of the mechanics involved in having screen updates run at an acceptable rate without hammering the CPU and incurring IRQ-skipping - there IS progress, but it's mostly of the 'try-this-and-see-how-it-looks' variety as I play around with different configurations of the logic. In the next couple of days or so I expect to be able to present a finished, working solution that satisfies both the requirement and my own aesthetic judgement for what comprises 'good' code - and there's no point in me posting and talking-about the various incarnations of the routines I'm working on whilst everything is in flux, because I'm not even certain yet which ideas will turn out to be the ones that gel into the final product.

So in the meantime, I thought it might be fun to have a quick recap on where we are, and progress so far. It may interest you to know that I have spent roughly 80 hours on the project to date, which includes both 'offline' thinking-time as well as active coding and testing - and that also includes a good few hours messing-around with applications like LCE, Excel, XVI32 and of course Blogger, for tasks such as character-set construction, infrastructure design, and (obviously) telling you what I'm up to. In those 80 hours I have:

  • written 43KB of ROM source code and assembly scripts
  • created 574KB of data in Excel
  • assembled the code and data into 2977 bytes of ROM image (2224 data, 753 code)
  • read the 6561 and 6522 datasheets repeatedly
  • read Programming The VIC (twice)
  • read The VIC Revealed (for maybe the 100th time since 1982)
  • written 22 functional subroutines
  • written 7 partially-completed subroutines for later use
  • written 5 subroutines which have sucked so badly I junked them
  • found 1 bug in XVIC (the monitor 'IO' command labelling)
  • written 19 blog entries here

When you look at the list, those 80 hours seem to have been reasonably well-spent! Functionally, we have a chunk of software which:

  • initialises the 6502 (trivial)
  • tests and initialises ALL memory
  • records where all the expansion RAM is
  • invokes a cartridge at $A000 if there's one present
  • initialises the 6561 and 6522 (for either PAL or NTSC display modes)
  • initialises IRQ and BRK processing
  • updates a countdown clock
  • sets-up a 40-column by 24-row hi-res screen
  • sets-up an additional stable-raster-driven 25th hi-res screen line
  • sets-up data and control buffers for screen updates
  • has the beginnings of the full-screen editor (in progress)

OK, we're a lot closer to the beginning than the end, but it's a start. :)

No comments:

Post a Comment