Jump to content
Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

AMSDOS Header: Difference between revisions

From CPCWiki - THE Amstrad CPC encyclopedia!
Roudoudou (talk | contribs)
moar info
Arnoldemu (talk | contribs)
No edit summary
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 is consists of 128 bytes and contains the following data:
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:


<pre>
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 bis 11: Extension (fill unused char with spaces)
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 (0: basic 1:protected 2:binary)
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 programs LSB first
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 00 to byte 66 LSB first
Byte 69 to 127: undefined content, free to use
Byte 69 to 127: undefined content, free to use
</pre>


To calculate the checksum, just add byte 00 to byte 66 to each other.
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 21: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.