Changes
QuickCMD
,/* History */
== History ==
*'''too big for what it does ''': most of the program was written in C language. While being more productive that way, the program actually took too much memory.
*'''a ROM that isn't a ROM ''': the program was stored in a ROM. When executed, the content of the ROM was actually copied into RAM to make use of dynamic memory (it's impossible to write into a ROM). That was pretty bad, as the program was launched from BANK &C7 as also some parts of memory from fixed &8000 location.
*'''poor implementation ''': the program performed poorly. Most of disc operations were based on CAS CATALOG (the CAT command), that is slow and requires a 2Kb memory buffer.
*'''custom charset ''': the program made use of a custom integrated charset. Char output routine was efficient but took lots of memory space.
*'''and more... ''': many little details that were also polluting the code base.
Instead of maintaining a program with lots of lacks, decision has been took to completely rewrite the program with a different approach. Here are the most interesting points;:
*'''asm including C ''': instead of writing a C program with some assembly code inside, it has been more efficient to write the whole application using assembly code and implementing some high-level parts in C programming language. One of the best example for such a usage is the sector parsing part, that use a C's struct to iterate through the file entries.
*'''a ROM that is a ROM ''': writing a real ROM forced to use dynamic memory management. While this technic was interesting to implement, the most interesting part to point out is that QuickCMD's memory management got actually optimized to the maximum. The list of dynamic variables has to be kept as small as possible.
*'''and more... ''': many little details that, when written a second time, get suddenly clearer and much more maintainable.