== History ==
This is version 2===v2.0 of 1===*Correctly handles missing disc in drive for all commands*PUTROM command now checks for BINARY file-type/correct size and displays information about the softwarefile to be put on RAMCARD*DELROM command added to clear a ROM location*DIR (and derivatives) now correctly reports file sizes for double-sided formats (Parados 80, etc) - thank you Richard!*RSX command now accepts integer values (decimal and hexadecimal)*RSX command now accepts quote " " for string-typed values (this allows to get space characters in strings by example)*Internal code refactoring for smaller memory footprint===v2. 0===This version is a complete rewrite of version 1.0 . While the initial version was featuring the interesting concepts featured back in version 2.0, it also pointed out some negative points;:
*'''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.