|
PROGRAMMER’S NOTE This is not an important document and you can safely skip it without missing a thing. It has NO information about the operation of MuzicManiac and included here for the insatiably curious only. MuzicManiac (mZm) is an accretion, a patchwork of code sections built and tested in isolation. When each section functioned error free, the stable (but still Alpha) code was incorporated into the main body of program code, re tested and re worked until the whole main body was stable. Size constraint was always the number one problem. This led to some very tricky coding practices that made the final machine language routines static - impossible to relocate without a map. The code itself is un-commented (comments take space - and leave holes in the code after they are removed) which further complicates moving code around. The code maps are program printouts that are hand commented - draft to draft; a laborious but necessary evil when limited to 64k of RAM. The mZm program is made up of two main sections: (1) a program code section. (2) a large note buffer. The two parts were kept about equal in size. There was another primary concern; that of overbuilding the program code section, and transgressing on the note buffer space leaving little or no room left over at the program’s completion to hold a music score. Because MuzicManiac builds each note (screen graphics and sound) on the fly from variable length data strings, it was difficult to estimate how many notes would fit into a predefined tract of RAM, so half of the useable RAM was jealously guarded for the note buffer. mZm’s program design never employed flowcharts, as might be expected when a sizable machine language project is sketched out; but rather, it evolved from a long laundry list of features. When one feature was built and incorporated into the program, it was crossed off the list, and on to the next feature. The load, save and print routines, the envelope sampler, transposition, repeats, dal segno, da capo, triplets and grace notes, all came late in development. In fact, all these were still up in the air when programming hit the wall - the end of usable space was reached. This precipitated a complete redrafting and code codification to free up some space. Into this new-found space went the load, save and print routines. Before the program had the ability to load and save music scores, a simple piece of test music was hard coded into the note buffer area and loaded with the program. Using the load and save feature, a test music score was scripted to measure the program’s limitations; MuzicManiac holds more then 500 measures of music for all three voices - gross overkill. Another redrafting and consolidation could reclaim a chunk of the note buffers. There’s enough space to fit all the new features, however, before redrafting this collection of features, which are presently scattered throughout several modules, the routines must be stable and ready for incorporation. Almost the entire laundry list has been encoded into four modules (4 in all) using the load, save and print RAM as work space (which means, the modules have stable new features, but no load, save and print capabilities; these routines yielded their space.) MuzicManiac is a little bit like Humpty Dumpty, all the pieces need to be put together again, redrafting and consolidating. At this point, work stopped; and the program entered The Twilight Zone, a state of limbo frozen in time. When can we expect this long overdue Final Draft and MuzicManiac’s completely complete completion? Well, programming a Commodore 64 in machine language is a lot like writing your next novel in Latin. It may be a red hot page-turner, but don’t expect to see your work on the bestseller list. Although. . . the venerable writer, Edward Gibbon tells how he taught himself the writer’s craft; first he translated a Latin text into Ancient Greek, then translated the Ancient Greek text into English, then translated the English text back into Latin and compared it to the original with which he started. After noting why the original was usually much better then his painstaking translation, he began the process again and again with other manuscripts. Some people, not many - mostly the chronically overeducated - still read the great historians in the original Latin idiom. But, the rest of us, read Edward Gibbon in English, the man who learned by trial and error, and sold millions upon millions of books . . . and I’ll stop right here. –joseph tiraco September 14th 2005
|
| copyright 2005 joseph tiraco |