Unlike most other DOSes, which are loaded from disk into the computer's own RAM and executed there, CBM DOS is executed internally in the drive: the DOS resides in ROM chips inside the drive, and is run there by one or more dedicated MOS 6502 family CPUs.
Many game developers, warez group members, and demoscene hackers used some more clever custom directory entries as well.
[3] A null byte embedded in a file name will interrupt the listing after loading by BASIC.
The DOS Wedge and various third-party cartridges and extenders such as Epyx Fast Load, Action Replay, and The Final Cartridge III allow viewing of the disk directory using special commands that load the directory into screen memory without destroying the current BASIC program.
Some versions of Commodore BASIC include a DIRECTORY or CATALOG command that performs the same function.
*DEL is a special type written into the on-disk directory entry of files that have been deleted.
DEL files are commonly used to insert banners or comment sections into a directory listing.
There is no Commodore DOS command that can explicitly set or clear this status, but many third-party utilities were written to allow this to be done.
These utilities generally read the directory using direct-access commands, perform the necessary modifications to the raw data, and then write the changes back to the disk.
The kernal ROM in the computer contains the necessary primitive routines needed to access files, and the BASIC ROM contains a higher level abstraction for file access using BASIC syntax.
Load relocation was first introduced on the VIC-20 because this machine could start BASIC RAM in several different locations, depending on the memory expansion that was installed.
Since the PET cannot relocate files, BASIC programs written on later Commodore machines must be modified by using a sector editor to change the header bytes.
It is also possible to use the PET's built-in machine language monitor to change the link address for the BASIC program after loading it.
This is one of the most popular load commands of the platforms, the method to start majority of commercial software, for example.
[5] That year various authors independently published articles[4][6][7][8] proving that the Save-with-Replace bug was real and including methods by which it could be triggered.
This created a "phantom drive 1:" on single-drive systems, resulting in the allocation of an unnecessary buffer under some conditions.
In September 1986, Philip A. Slaymaker published an article[10] describing in great detail the cause of the bug and providing patches to the 1541 drive ROMs; readers with an EPROM burner could produce their own patched ROMs which could be swapped into the drive.
Commodore BASIC versions 4.0 and later provide a pseudo-variable referred to as DS$ that may be used to retrieve drive status in lieu of the above code.
This reserved variable is not available on earlier versions of BASIC, so the command channel must be manually read as demonstrated above.