CMD file (CP/M)

Source: Wikipedia, the free encyclopedia.

In

CMD.EXE in OS/2 and Windows for batch files
.

Binary format

A CMD file has a 128-byte header, followed by 1–8 groups of code or data.

The start of the header lists the groups present in the file, and their types. Each type can be used at most once. They are:

  1. Code
  2. Data
  3. Extra
  4. Stack
  5. User 1
  6. User 2
  7. User 3
  8. User 4
  9. Shared Code (Code and Shared Code cannot be present in the same file).[3][2]

The first 256 bytes of the data group must be zero. They will be populated by CP/M-86 with the zero page (comparable to the Program Segment Prefix in DOS). If there is no data group, then the first 256 bytes of the code group will be used instead.[3]

Name conflict

Under

CMD.EXE. Since binary code will not be executed this way, attempting to run CP/M-86 CMD files under the CMD command processor will not work, but typically only cause mild inconvenience to users. The executable loader and relocator in CP/M-86 and related operating systems can test the first byte in the file, which happens to be the type byte of the first table entry in a CP/M CMD file, to have a value of 1 to 9 before accepting it as a valid CP/M CMD file.[2]
ASCII values smaller than 10 are rarely or never used in batch scripts, so that this scheme gives reasonably good protection.

See also

References

  1. ^ a b c Kurth, Rüdiger; Groß, Martin; Hunger, Henry (2019-01-03). "Betriebssystem SCP". www.robotrontechnik.de (in German). Archived from the original on 2019-04-27. Retrieved 2019-04-27.
  2. ^ a b c d Elliott, John C. "CP/M-86 executables (.CMD)". Seasip.info. Archived from the original on 2016-11-14. Retrieved 2016-08-29.
  3. ^ a b "3.4 Command (CMD) File Format". CP/M-86 Operating System - System Guide (PDF) (2nd printing, 1st ed.). Pacific Grove, California, USA: Digital Research. June 1981. pp. 20–21. Archived (PDF) from the original on 2020-02-28. Retrieved 2020-02-28. (17 pages)