(Link to details in Firmware Guide chapter 9, page 4.) |
PulkoMandy (Talk | contribs) m |
||
(9 intermediate revisions by 6 users not shown) | |||
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: |
− | + | {| class="wikitable" | |
− | + | |- | |
− | + | ! Offset !! Size !! Name !! Notes | |
− | + | |- | |
− | + | | 0 || BYTE || User number || 0-15, or #E5 for deleted entries | |
− | + | |- | |
− | + | | 1 || 8 BYTES || Filename || Unused characters are filled with space | |
− | + | |- | |
− | + | | 9 || 3 BYTES || Extension || Unused characters are filled with space | |
− | + | |- | |
− | + | | C || DWORD || Zero || Contains all zeroes | |
+ | |- | ||
+ | | 10 || BYTE || Block number || Tape only | ||
+ | |- | ||
+ | | 11 || BYTE || Last block || Tape only | ||
+ | |- | ||
+ | | 12 || BYTE || File type || 0:BASIC 1:Protected 2:Binary (ASCII files don't have headers but a fake header is built in memory with the file type #16, "Unprotected ASCII v1") | ||
+ | |- | ||
+ | | 13 || WORD || Data location || Address of the 2KB buffer | ||
+ | |- | ||
+ | | 15 || WORD ||Load address || | ||
+ | |- | ||
+ | | 17 || BYTE || First block || Set to #FF, only used for output files | ||
+ | |- | ||
+ | | 18 || WORD ||style="white-space: nowrap;"| Logical length || Actual file length is here | ||
+ | |- | ||
+ | | 1A || WORD || Entry address || | ||
+ | |- | ||
+ | | 1C || 36 BYTES || Unused || | ||
+ | |- | ||
+ | | 40 || 3 BYTES || Real length || 24-bit number. Just a copy, not used! | ||
+ | |- | ||
+ | | 43 || WORD || Checksum || Unsigned sum of all bytes until this field | ||
+ | |- | ||
+ | | 45 || 59 BYTES || Unused || 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: | + | [[Category:Disc Operating System]] |
+ | [[Category:Programming]] |
Latest revision as of 15:49, 7 November 2023
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:
Offset | Size | Name | Notes |
---|---|---|---|
0 | BYTE | User number | 0-15, or #E5 for deleted entries |
1 | 8 BYTES | Filename | Unused characters are filled with space |
9 | 3 BYTES | Extension | Unused characters are filled with space |
C | DWORD | Zero | Contains all zeroes |
10 | BYTE | Block number | Tape only |
11 | BYTE | Last block | Tape only |
12 | BYTE | File type | 0:BASIC 1:Protected 2:Binary (ASCII files don't have headers but a fake header is built in memory with the file type #16, "Unprotected ASCII v1") |
13 | WORD | Data location | Address of the 2KB buffer |
15 | WORD | Load address | |
17 | BYTE | First block | Set to #FF, only used for output files |
18 | WORD | Logical length | Actual file length is here |
1A | WORD | Entry address | |
1C | 36 BYTES | Unused | |
40 | 3 BYTES | Real length | 24-bit number. Just a copy, not used! |
43 | WORD | Checksum | Unsigned sum of all bytes until this field |
45 | 59 BYTES | Unused | 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.