CPC Rulez
https://cpcrulez.fr/forum/

AMSDOS HEADER
https://cpcrulez.fr/forum/viewtopic.php?f=4&t=5647
Page 1 sur 1

Auteur :  Giants [ 04 Jan 2016, 11:31 ]
Sujet du message :  AMSDOS HEADER

On est pas dans le Code mais dans le header Amsdos
du coup, j'ai un doute sur le bon endroit pour ce post...
mais bon, on verra bien.

Je prends pour référence les infos que j'ai pu trouver sur un CDT d'un jeux, en l’occurrence RENEGADE III (voir image jointe)
Ainsi que les infos données que l'on trouve dans la section 'SOFT 968 Section 9 (AMSDOS)' de Kevin Thacker
et aussi la section 8 : SOFT 968 Section 8 (The Cassette Manager)

a savoir :
Code :
Bytes 0..15     Filename Padded to 16 bytes with nulls.
Byte 16         Block number The first block is normally block 1 and block
                numbers increase by 1 on successive blocks.
Byte 17         Last block A non-zero value means that this is the last block of a file.
Byte 18         File type A value recording the type of the file (seebelow).
Bytes 19..20    Data length The number of data bytes in the data record.
Bytes 21..22    Data location Where the data was written from originally.
Byte 23         First block A non-zero value means that this is the first block of a file.


Pièce jointe :
AMSDOS_Header.png

Dans l'image jointe je me retrouve bon sur le FILENAME et son EXT
mais par la suite tout est décalé d'1 Byte.

Exemple, je ne trouve pas le 'DATA LENGTH' en Byte 19...20 mais en 20..21
'DATA Location' normalement en Byte 21...22 là, se trouve en 22...23
etc...

Je pense j'ai loupé un truc, clair !

Auteur :  hERMOL [ 04 Jan 2016, 11:54 ]
Sujet du message :  Re: AMSDOS HEADER

c'est quoi ce "&2C" a l'offet 0 ??? y'a pas d'user sur cassette ... Il vient pas de la ton décalage ?

Auteur :  Giants [ 04 Jan 2016, 12:21 ]
Sujet du message :  Re: AMSDOS HEADER

Je ne pense pas car, regarde :

et si on prends (plus en détail donc) la doc ==>
Code :
Byte 00: User number       ==> $2C
Byte 01 to 08: filename    ==> R E N E G A D E (ca fait 8)
Byte 09 bis 11: Extension
Byte 18: type-byte
Byte 21 and 22: loading address
Byte 24 and 25: file length
Byte 26 and 27: execution address for machine code programs
Byte 64 and 65: (file length)
Byte 67 and 68: checksum for byte 00 to byte 66


De plus le $2C, c'est que j'obtiens quand je décode le CDT
alors on pourrais penser à une erreur sur mon code mais
Si on regarde sur le site de cpc-p0wer, on trouve la meme chose
http://cpc-p0wer.com/CdtView.php?fiche= ... g=0#block1

A moins que l'on est faux tout les deux (possible ceci dit).
Apres... a quoi correspond ce $2C... alors la...
Mais peu importe la doc que l'on prends, on parle bien d'une donnée en Bytes0
(user number dans la 1er donc) et (Filename Padded to 16 ... dans l'autre)
Sauf que... 2C comme debut de nom de fichier... ca le fait pas.
Le nom de fichier de ce DCT est a coup sur RENEGADE (ca commence par un R pas $2C)
Ca met donc bien le 'filename' en Byte1 et pas Byte0

Je pense y'a une bourde de mon coté mais où...

Auteur :  Xavier [ 05 Jan 2016, 20:38 ]
Sujet du message :  Re: AMSDOS HEADER

C'est quoi la question?
:)

sources CpcToken:

Citer :
' Header beep.
' 257 bytes
Type Cass_BEEP1
SYCHRO1(255) As Byte 'FFh
SYCHRO2 As Byte 'FEh
Cass_BTypeTag As Byte ' ID: 2Ch=header block, 16h=data block
End Type


Donc, ton fichier n'est pas un fichier DATA!

Et après, dans la foulée, t'as ça...
Citer :
' 260 bytes
'Format of CPC Header blocks
Type CassHeader

' [00-0F] Filename (unused bytes zero filled)
Cass_Name(15) As Byte

' [10] Block-number (01..NN)
Cass_BlocID As Byte

' [11] Last block flag (FFh=last block, 00h=other block)
Cass_FFend As Byte

' [12] Filetype:
' 00h basic program
' 01h encrypted basic program
' 02h Binary(program Or Data)
' 16h ascii data
Cass_FTypeTag As Byte

' [13-14] Block length (1..2048)
Cass_LENGHT As Uint ' (800 -> next Bloc (B15=1) else bloc lenght.

' [15-16] Block loadaddress (destination address in RAM)
Cass_LDadd As Uint ' first=&0100 sd=+&0800... n+&0800

' [17] First block flag (FFh=first block, 00h=other block)
Cass_FFStart As Byte

' [18-19] Total file length (length of all blocks) (zero for ascii files)
Cass_gLENGHT As Uint ' Global lenght.
'(Remember, the size of 64 bytes is rounded up to 256 bytes)

' [1A-1B] Startaddress (for binary programs)
Cass_BinAdd As Uint

' [1C-3F] Unused
Cass_Spacer(227) As Byte

Cass_CRC As Uint ' ????
Cass_ENDtag As Byte ' =3
End Type

Auteur :  Giants [ 05 Jan 2016, 23:10 ]
Sujet du message :  Re: AMSDOS HEADER

Heuuu, soit tu explique vraiment tres mal, soit ca reponds pas a la question...

la, je sais pas de quoi tu parles, relie mon message.

J'ai pas demandé un decodage du cdt ou je ne sais quoi.
mais une expliquation sur le header dispo du block1 qui est un fichier.

Auteur :  Lone [ 05 Jan 2016, 23:57 ]
Sujet du message :  Re: AMSDOS HEADER

L'explication est correcte : en fait sur ne cassette, derrière pilote & sync, tu as ce byte qui indique quel type de bloc est utilisé : ici, 2c = Header.
Derrière, on a les 16 octets de nom, le numéro de bloc, etc.

Le 2c indique ce qui suit, sans en faire partie ( d'où ton décalage de 1)

Auteur :  breiztiger [ 06 Jan 2016, 07:56 ]
Sujet du message :  Re: AMSDOS HEADER

Simplement ce que te donne les docs Amstrad sont l'implementation sur la cassette physique; et dans le cdt, il y a ce fameux octet qui détermine le type de bloc, ici 2c qui correspond a un header.

L'explication donnée est bonne simplement vous n'etes pas au même niveau d'abstraction :winner:

Auteur :  Giants [ 06 Jan 2016, 08:44 ]
Sujet du message :  Re: AMSDOS HEADER

ah merci.
Voila, avec vos deux completement d'informations c'est clair.

En faite, vous m'avez tous toutes les brides pour mieux comprendre.
Hermol, en effet pas de User sur la bande donc on commence 1 Byte plus comme tu l'avais dit d'ailleurs.

Les Derrière, on a les 16 octets de nom, m'ont orienté plus vers la seconde doc (ou ils disent exactement la même chose)
que la 1er que j'ai sité plus haut, merci donc Lone

Et ce qui à été beaucoup plus clair pour moi, ce sont tes explications breiztiger, a savoir : ...docs Amstrad sont l'implementation sur la cassette physique

Sans oublier bien sur Xavier, qui malgré une explication pas clair POUR MOI (c'est pas une critique hein ;) )
Permis par la suite (grâce aux info des deux autres), de mieux comprendre et de me servir de la description que tu as donnée.


Thks à tous, à plus qu'a finir mon p'tit scripts d'analyse CDT :)

Auteur :  Xavier [ 07 Jan 2016, 07:50 ]
Sujet du message :  Re: AMSDOS HEADER

:mdr:
Oui, Pardon, c'était du Visual Basic...
J'aurais du le traduire en C# !

C'est ton "un BIT" qui me trouble...
Citer :
SYCHRO2 As Byte 'FEh


Bon, effectivement ça fait 1 Bit... "11111110" au lieu des "11111111" que l'on a avant!
Et la lecture s'accroche sur le bit mou, en quittant les BITs durs.
Puis, c'est la lecture du type de bloc...
Enfin..... ton "BIT" me trouble...
:kissed:

Auteur :  Giants [ 07 Jan 2016, 09:08 ]
Sujet du message :  Re: AMSDOS HEADER

Mon 'BIT' ou plutot MA, à tjs troublé tout le monde :=)
Arff

Page 1 sur 1 Le fuseau horaire est UTC+1 heure
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/