A simple effect I remember seeing in many intros & demos was what I always called a “Widescreen” effect. This is where the top and bottom borders extended all the way to the edge of the screen. It gives the impression of parts of the side border being removed. There are methods for actually removing both the top and bottom borders, but that’s more complicated and something I will look at in the future. For now, I will look at using the raster bar to toggle the screen and border colours at specific scan lines to give the impression of a wide screen display.
While browsing through the C64 memory map, I noticed a kernal routine specifically for clearing the screen. While I prefer the later methods I outlined in my earlier post (here), it’s a quick one liner to get the job done, and I will be making use of it in coming examples to keep the code length down.
The routine is found at $e544.
I love finding little things like this as I explore the memory map. Sometimes it useful routines, other time it’s blocks of memory or registers designed to do something I’ve been thinking about in my head. It’s a shame they don’t make systems like this to develop for anymore.
Having settled on the use of the win2c64 compiler for now, I wanted to push ahead and continue getting my hands dirty with the 6502/6510 instruction set. I decided to write a simple routine that would clear the screen.
The first step I figured would be to write the basic version. It’s quite a straight forward routine. The default screen memory location starts at $0400 (or 1024 in decimal) and is 1024 bytes long. The first 1000 bytes is allocated for the screen characters (40×25) and these are the bytes I need to modify when clearing the screen.
For this routine, I figured I’d simply populate the screen with spaces to “clear” it. All the routine needs to do is poke the decimal value for space (32) into each screen character location.
With the site up and running, I figured I’d next look at some sort of development environment to work with. My initial thoughts were to fire up my C64 and program directly on that. After some consideration I decided that this would not be the best approach. Having the C64 hooked up all the time at my desk would take up a lot of space. Plus I’d need to source a TV and find room for that too. Then there is the whole dealing with disks and typing on the C64 keyboard. While it would be the more authentic way to develop on it (and how I used to do it), it would be too counter productive. It’s a shame, I was looking forward to using my Action Replay cart again.