mirror of
https://github.com/aaru-dps/docs.git
synced 2025-12-16 19:24:38 +00:00
Added information about commodore formats
This commit is contained in:
137
Commodore/CVT.TXT
Normal file
137
Commodore/CVT.TXT
Normal file
@@ -0,0 +1,137 @@
|
||||
|
||||
*** CVT (ConVerT containers)
|
||||
*** Document revision: 1.3
|
||||
*** Last updated: Oct 1, 2007
|
||||
*** Compiler/Editor: Peter Schepers
|
||||
*** Contributors/sources: Joe Forster/STA
|
||||
|
||||
These are sequential representations of GEOS files, both sequential and
|
||||
VLIR. In order to be transmitted and up/downloaded, they must be converted
|
||||
to this intermediate format because the file's INFO block (and record block
|
||||
for a VLIR) must be included. Note that the track/sector references at the
|
||||
beginning of each sector are not included here, making the block size 254
|
||||
bytes. Also, any values in track/sector references are invalid, since the
|
||||
value is sure to change once the file is converted back from CVT to a GEOS
|
||||
format.
|
||||
|
||||
I will not include much of the GEOS file layout details here, as you can
|
||||
read the GEOS.TXT document to get the information.
|
||||
|
||||
With CVT's that contain VLIR files, there are four distinct sections:
|
||||
signature, info, record and data. CVT's that contain non-VLIR files (i.e.
|
||||
standard GEOS sequential) do not include the record block.
|
||||
|
||||
The first part, which exists in both CVT types, is the signature block.
|
||||
It contains the complete directory entry and CVT file signature.
|
||||
|
||||
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
|
||||
----------------------------------------------- ----------------
|
||||
0000: 83 00 00 44 45 53 4B 20 54 4F 50 A0 A0 A0 A0 A0 <20><><EFBFBD>DESK<53>TOP<4F><50><EFBFBD><EFBFBD><EFBFBD>
|
||||
0010: A0 A0 A0 00 00 01 04 58 08 13 0D 23 78 00 50 52 <20><><EFBFBD><EFBFBD><EFBFBD>..X...#x<>PR
|
||||
0020: 47 20 66 6F 72 6D 61 74 74 65 64 20 47 45 4F 53 G<>formatted<65>GEOS
|
||||
0030: 20 66 69 6C 65 20 56 31 2E 30 00 00 00 00 00 00 <20>file<6C>V1.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
0040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
0050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
0060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
0070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
0080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
0090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
00A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
00B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
00C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
00D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
00E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
00F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .. .. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>..
|
||||
|
||||
Byte:$00-1D: Complete directory entry. Note that the first two bytes of
|
||||
*any* directory entry are never used, and thus are not
|
||||
incuded here either.
|
||||
1E-39: File signature. It can contain "PRG formatted..." or "SEQ
|
||||
formatted...". Here we can check that the CVT is really
|
||||
what it claims.
|
||||
3A-FD: Usually $00
|
||||
|
||||
What follows the signature block is the complete GEOS file INFO block.
|
||||
|
||||
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
|
||||
----------------------------------------------- ----------------
|
||||
00F0: .. .. .. .. .. .. .. .. .. .. .. .. .. .. 03 15 ................
|
||||
0100: BF FF FF FF 92 49 01 FF FF 01 80 00 1D BF FF DD <20><><EFBFBD><EFBFBD><EFBFBD>I.<2E><>.<2E><>.<2E><><EFBFBD>
|
||||
0110: A0 00 5D BF FF C1 A0 00 5D A1 C6 55 A0 29 5D A0 <20><>]<5D><><EFBFBD><EFBFBD><EFBFBD>]<5D><>U<EFBFBD>)]<5D>
|
||||
0120: C9 41 A1 09 41 B9 D6 41 A8 00 41 BF FF C1 80 00 <20>A<EFBFBD>.A<><41>A<EFBFBD><41>A<EFBFBD><41><EFBFBD><EFBFBD><EFBFBD>
|
||||
0130: 1D 9C 00 15 9C 00 15 80 00 1D 80 00 01 FF FF FF .<2E><>.<2E><>.<2E><>.<2E><>.<2E><><EFBFBD>
|
||||
0140: 83 04 01 56 19 55 19 75 51 64 65 73 6B 54 6F 70 <20>..V.U.uQdeskTop
|
||||
0150: 20 41 4D 20 20 56 32 2E 30 00 00 00 00 42 72 69 <20>AM<41><4D>V2.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Bri
|
||||
0160: 61 6E 20 44 6F 75 67 68 65 72 74 79 00 00 00 00 an<61>Dougherty<74><79><EFBFBD><EFBFBD>
|
||||
0170: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
0180: 00 00 00 00 00 4C 2A 5B 4C 59 5D 4C A7 61 4C 3A <20><><EFBFBD><EFBFBD><EFBFBD>L*[LY]L<>aL:
|
||||
0190: 62 AD 8A 84 D0 01 60 20 7E 23 20 9C 55 73 65 20 b<><62><EFBFBD><EFBFBD>.`<60>~#<23><>Use<73>
|
||||
01A0: 74 68 65 20 64 65 73 6B 54 6F 70 20 74 6F 20 6D the<68>deskTop<6F>to<74>m
|
||||
01B0: 61 6E 61 67 65 20 61 6E 64 20 6D 61 6E 69 70 75 anage<67>and<6E>manipu
|
||||
01C0: 6C 61 74 65 20 79 6F 75 72 20 66 69 6C 65 73 2E late<74>your<75>files.
|
||||
01D0: 00 03 20 E3 5C 68 85 FB 20 4F 61 20 13 61 20 32 <20>.<2E><>\h<><68><EFBFBD>Oa<4F>.a<>2
|
||||
01E0: 61 20 F2 5C A9 0C 20 CC 49 A9 2E 85 13 A9 F9 85 a<><61>\<5C>.<2E><>I<EFBFBD>.<2E>.<2E><><EFBFBD>
|
||||
01F0: 12 A9 2F 85 15 A9 01 85 14 A9 84 85 .. .. .. .. .<2E>/<2F>.<2E>.<2E>.<2E><><EFBFBD>....
|
||||
|
||||
The third block is the RECORD block. In the sequential version of the
|
||||
CVT, this block won't exist. The way to tell if the file is VLIR or
|
||||
sequential is to look at byte position 23 of the directory entry (from
|
||||
above, it's value is $01). If it's a $00, the file is sequential, if it's
|
||||
$01 it's VLIR.
|
||||
|
||||
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
|
||||
----------------------------------------------- ----------------
|
||||
01F0: .. .. .. .. .. .. .. .. .. .. .. .. 43 41 0A 0B ............CA..
|
||||
0200: 0B F4 0A 8C 0B A1 09 70 00 00 00 00 00 00 00 00 .<2E><><EFBFBD>.<2E><>p<EFBFBD><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
0210: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
0220: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
0230: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
0240: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
0250: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
0260: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
0270: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
0280: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
0290: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
02A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
02B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
02C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
02D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
02E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
02F0: 00 00 00 00 00 00 00 00 00 00 .. .. .. .. .. .. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>......
|
||||
|
||||
Note that the RECORD block is modified from the original GEOS entry.
|
||||
Instead of containing the track and sector references, we now have the
|
||||
sector count and the size of the last sector in the chain. Looking over the
|
||||
block above, we get the following usage chart:
|
||||
|
||||
Count Size Comment
|
||||
----- ---- --------------------------------------
|
||||
43 41 Sector count=67, last sector index=$41
|
||||
0A 0B Sector count=10, last sector index=$0B
|
||||
0B F4 Sector count=11, last sector index=$F4
|
||||
0A 8C Sector count=10, last sector index=$8C
|
||||
0B A1 Sector count=11, last sector index=$A1
|
||||
09 70 Sector count=9, last sector index=$70
|
||||
00 00 No more records.
|
||||
|
||||
Two things of interest can be noted from the record block...
|
||||
|
||||
1. When a 00/00 is encountered, the record block is done.
|
||||
2. When a 00/FF is encountered, the record does not exist (see the
|
||||
GEOS.TXT format for more info on invalid records), but the entry must
|
||||
still be made in the re-created RECORD block.
|
||||
|
||||
From here on we have the actual data, all of the record chains strung
|
||||
together to form one long file. All of this data must be broken apart to
|
||||
form the original records that GEOS expects.
|
||||
|
||||
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
|
||||
----------------------------------------------- ----------------
|
||||
02F0: .. .. .. .. .. .. .. .. .. .. A9 00 8D EE 04 A4 ..........<2E><><EFBFBD><EFBFBD>.<2E>
|
||||
0300: FE B9 86 84 30 06 29 0F C9 02 D0 12 A4 70 B9 86 <20><><EFBFBD><EFBFBD>0.).<2E>.<2E>.<2E>p<EFBFBD><70>
|
||||
0310: 84 30 06 29 0F C9 02 D0 05 A9 07 8D A0 1D 20 1E <20>0.).<2E>.<2E>.<2E>.<2E><>.<2E>.
|
||||
0320: 23 20 04 1A 8A D0 20 20 12 1A 18 A9 00 6D F4 03 #<23>..<2E><><EFBFBD><EFBFBD>...<2E><>m<EFBFBD>.
|
||||
0330: 8D F4 03 A9 03 6D F5 03 8D F5 03 20 C5 22 20 7C <20><>.<2E>.m<>.<2E><>.<2E><>"<22>|
|
||||
0340: 1B 20 04 1A 20 6B 1A A9 08 8D A0 1D B8 50 53 8D .<2E>..<2E>k.<2E>.<2E><>.<2E>PS<50>
|
||||
0350: EE 04 20 12 1A A2 00 A4 70 20 3F 24 C9 04 B0 3F <20>.<2E>..<2E><><EFBFBD>p<EFBFBD>?$<24>.<2E>?
|
||||
|
||||
Reference in New Issue
Block a user