Friday, January 31, 2014

Final Lap

The end of the month is here, and with it the end of the Retrochallenge Winter Warmup for 2014.  Despite a few setbacks and unresolved issues, this has been a good one for me!  But before I declare my contest entry complete, I should at least get some code running on this thing... :-)

The Micro Chroma 68 Expressing Enthusiasm
Some Assembly Required

The TVBug monitor on the Micro Chroma 68 board only provides for loading machine language programs.  So, the first step is to find an assembler for the Motorola 6800 family of processors that runs under my Linux development environment.  There are a number of options for this, although it seems that not all assemblers are created equalWe must be cautious...

In the days of yore, Motorola operated a "freeware" BBS.  This BBS was originally available by modem, and later over the Internet as an FTP site.  Some of the files there included source code for assemblers targeting the full range of Motorola's CPUs, including the 6800.  Alas, the site is no more and it is now difficult to find even an old archive of it.  If anyone knows of such an archive, please leave that info as a comment on this blog -- that site needs to be preserved!

Fortunately, others found those tools useful as well.  While the unadulterated sources are difficult to find, a variety of slightly modified versions are available from a number of places.  So for now, I will be using the as0 assembler from the "masm" package.  It is a simple tool, but it more then fills the need at hand.

Manual Code Entry In TVBug
Hands-On Programming

The Micro Chroma 68 is already limited in its accessibility for loading programs, providing only an audio cassette interface and the video/keyboard console.  Since I still have not received those magic capacitors for the audio interface, I am limited to just the console for loading programs.  The keyboard adapter I am using has a provision for input through a serial port instead of the PS/2 keyboard.  But with the continuing "repeated characters" problem, manual intervention is still required.

Undaunted, I wrote a small program to put a message on the screen and assembled it with the assembler mentioned above.  The assembler outputs an S-record file by default, but I also had it generate a listing file.  That file had the hexadecimal values for all of the opcodes and data for my program, allowing me to enter them into the TVBug monitor manually.  The process was a bit tedious, but it was manageable for the small program in question.

Flash In The Pan

The original program merely cleared the display and wrote a new message to the screen.  At the end of the program, I simply inserted a busy loop to keep my display on the screen rather than returning to TVBug.  This worked fine, but didn't have quite enough sizzle for the end of the project.  I checked the schematics and found that the video timing signals from the VDG are available for the CPU to read on the Micro Chroma 68.  So, I changed the end of the program to spin in a loop that counted those timing signals and periodically changed the display's color set between the green and orange options -- exciting! ;-)

While changing the end of the program, I was faced with a problem.  I had structured the code such that adding new code at the end would force me to reenter a significant amount of data in memory.  My inherent laziness kicked-in and found another option -- I just jumped over the data and added new code at the end.  Maybe this sheds some light on why "spaghetti code" was so prevalent and accepted back in the early days of computing?  Or, maybe I am just a horrible coder...

Thus ends my entry for the Retrochallenge Winter Warmup 2014 event.  I hope that all of you have enjoyed reading about it as much as I have enjoyed doing it!  A few problems remain, and ultimately I would like to do something a bit more useful (or at least something more interesting) with the Micro Chroma 68 in the future.  I can't help but think that it would look right at home mounted inside of an arcade cabinet...hmmm...

Well, anyway...if you want to find-out what happens in the future then you'll just have to stay tuned!

No comments:

Post a Comment