I am in the process of sorting out a few things to improve the site.
Firstly is the logo, which I hope will be sorted out sometime next week. Next up is a proper facebook page where I’ll be posting updates also, along with becoming active on twitter. I am also getting github sorted out so I can commit my source code and make all the routines I post about here available.
My main focus will remain on the coding, but I’d like to try and clean up a few things around here before progressing too much further. I want to be able to look back in 12 months and be amazed at how far I’ve come and what I achieved.
I should have two new routines to put up in the next day or so as well!
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.
One of the very last purchases I made for my C64 before moving onto the PC was an Assembly Language book.
I first read about it in issue #40 of Commodore Format (January 1994) and decided to order a copy at the time. Around the same time Commodore Format ran a small assembly language series, which I will dig out from my collection and revisit over the coming week also. At some point in time I removed the binding from the book and put it into a protective sleeve binder to ensure the pages did not bend or rip over time as I moved my C64 gear around. I found it yesterday with a number of programming notes I had made so long ago, and this should come in handy as a physical reference and something to read while on the train.