Difference between revisions of "AMSDOS Header"
From CPCWiki - THE Amstrad CPC encyclopedia!
(moar info) |
|||
Line 1: | Line 1: | ||
− | In [[AMSDOS]] it is possible to store files in two ways: headerless and with a header. Headerless files are often files which were created with [[OPENOUT]] and ''SAVE"filename",a''. Programs normally have a file header, which | + | In [[AMSDOS]] it is possible to store files in two ways: headerless and with a header. Headerless files are often files which were created with [[OPENOUT]] and ''SAVE"filename",a''. Programs normally have a file header, which consist of 128 bytes and contain the following data: |
− | + | Byte 00: User number (value from 0 to 15 or #E5 for deleted entries) | |
− | Byte 00: User number (value from 0 to 15 or #E5 for deleted entries) | + | Byte 01 to 08: filename (fill unused char with spaces) |
− | Byte 01 to 08: filename (fill unused char with spaces) | + | Byte 09 to 11: Extension (fill unused char with spaces) |
− | Byte 09 | + | Byte 16: first block (tape only) |
− | Byte 16: first block (tape only) | + | Byte 17: first block (tape only) |
− | Byte 17: first block (tape only) | + | Byte 18: file type (0:basic 1:protected 2:binary) |
− | Byte 18: type | + | Byte 21 and 22: loading address LSB first |
− | Byte 21 and 22: loading address LSB first | + | Byte 23: first block (tape only?) |
− | Byte 23: first block (tape only?) | + | Byte 24 and 25: file length LSB first |
− | Byte 24 and 25: file length LSB first | + | Byte 26 and 27: execution address for machine code program LSB first |
− | Byte 26 and 27: execution address for machine code | + | Byte 64 and 66: 24 bits file length LSB first |
− | Byte 64 and 66: 24 bits file length LSB first | + | Byte 67 and 68: checksum for bytes 00-66 stored LSB first |
− | Byte 67 and 68: checksum for | + | Byte 69 to 127: undefined content, free to use |
− | Byte 69 to 127: undefined content, free to use | + | |
− | + | ||
− | To calculate the checksum | + | To calculate the checksum just add all bytes from 00 up to and including byte 66 together. |
This is only a summary. All details are in [[Firmware Guide]] chapter 9, page 4. | This is only a summary. All details are in [[Firmware Guide]] chapter 9, page 4. | ||
[[Category:Programming]] [[Category:Disc Operating System]] | [[Category:Programming]] [[Category:Disc Operating System]] |
Revision as of 16:11, 14 December 2017
In AMSDOS it is possible to store files in two ways: headerless and with a header. Headerless files are often files which were created with OPENOUT and SAVE"filename",a. Programs normally have a file header, which consist of 128 bytes and contain the following data:
Byte 00: User number (value from 0 to 15 or #E5 for deleted entries) Byte 01 to 08: filename (fill unused char with spaces) Byte 09 to 11: Extension (fill unused char with spaces) Byte 16: first block (tape only) Byte 17: first block (tape only) Byte 18: file type (0:basic 1:protected 2:binary) Byte 21 and 22: loading address LSB first Byte 23: first block (tape only?) Byte 24 and 25: file length LSB first Byte 26 and 27: execution address for machine code program LSB first Byte 64 and 66: 24 bits file length LSB first Byte 67 and 68: checksum for bytes 00-66 stored LSB first Byte 69 to 127: undefined content, free to use
To calculate the checksum just add all bytes from 00 up to and including byte 66 together.
This is only a summary. All details are in Firmware Guide chapter 9, page 4.