[k7][VG5000] Comment autobooter un binaire?

Cette catégorie traite de développements récents pour nos vieilles machines, applications, jeux ou démos... Amis programmeurs, c'est ici que vous pourrez enfin devenir célèbres!

Modérateurs : Carl, Papy.G, fneck

Répondre
Linzino
Messages : 23
Enregistré le : 26 août 2017 02:40

[k7][VG5000] Comment autobooter un binaire?

Message par Linzino » 14 févr. 2018 10:05

Salut tout le monde!

J'aimerais rendre mon jeu CROSS CHASE bootable. Je sais produire un binaire raw ou un k7 qui ne boote pas automatiquement.

Pour le rendre bootable (comme sugeré par Sergio Max) je peux le sauvegarder avec une ligne de BASIC avec la commande CALL avec CSAVEM.

Moi, j'aimerais faire tout cela automatiquement (sans passer par le BASIC et sans faire des manips manuelles)
en rajoutent le bon header au binaire raw.

Par exemple, je vois que la structure du format .k7 est:
D3 D3 D3 D3 D3 D3 D3 D3 D3 D3 4D 58 43 48 41 53 45 00 31 30 00 00 00 00 00 00 D4 49 E0 2E 0A FB D6 D6 D6 D6 D6 D6 D6 D6 D6 D6
suivi par le binaire raw et où E0 2E = $2EE0 = taille du binaire raw.

Je ne comprend pas les deux octets qui suivent: 0A FB? C'est une checksum? Comment les calculer?

Fabrizio

Avatar du membre
Mokona
Messages : 366
Enregistré le : 17 déc. 2016 22:01
Localisation : Nord Est des Yvelines
Contact :

Re: [k7][VG5000] Comment autobooter un binaire?

Message par Mokona » 14 févr. 2018 11:40

Hello,

oui c'est un checksum

D'après la documentation

00 - File Type
01-06 - Filename
07 - Version number
08-12 - Start line number in ASCII
13 - "Protection" flag
14-15 - Position de calcul du checksum (?)
16-17 - Start address
18-19 - Data length
20-21 - Checksum

Je n'ai pas vu dans la doc comment calculer la somme de contrôle. Si personne n'a la réponse, je pourrai aller fouiller dans la ROM.

Markerror
Messages : 1340
Enregistré le : 31 oct. 2011 19:21
Localisation : Orléans
Contact :

Re: [k7][VG5000] Comment autobooter un binaire?

Message par Markerror » 14 févr. 2018 21:02

Bonsoir,

J'ai fait il y a quelques années un petit article sur le sujet, disponible sur http://vg5000bazar.free.fr.

Le checksum, c'est une "simple" somme des octets de données du fichiers (sans tenir compte du header de 42 octets ni des 10 octets de fin (qui de toute façon sont à 0 :-) ).

Linzino
Messages : 23
Enregistré le : 26 août 2017 02:40

Re: [k7][VG5000] Comment autobooter un binaire?

Message par Linzino » 15 févr. 2018 10:15

@Markerror, somme mais modulo $10000?

Linzino
Messages : 23
Enregistré le : 26 août 2017 02:40

Re: [k7][VG5000] Comment autobooter un binaire?

Message par Linzino » 15 févr. 2018 10:16

@all

Le BASIC du VG-5000 commence exactement à partir de 18941? Je ne trouve pas cette info...

Fabrizio

Avatar du membre
Carl
Modérateur
Messages : 10217
Enregistré le : 08 avr. 2007 13:21
Localisation : http://www.doledujura.fr
Contact :

Re: [k7][VG5000] Comment autobooter un binaire?

Message par Carl » 15 févr. 2018 11:26

memVG5000.jpg
memVG5000.jpg (73.24 Kio) Vu 481 fois
Hervé a écrit ceci "La plupart des jeux commerciaux du VG5000 sont en assembleur mais sont lancés par le BASIC avec une commande CALL. Je suppose que cette technique est censée pallier le fait qu'il n'y a pas dans le header d'adresse d'exécution pour un fichier binaire."

source : http://vg5000bazar.free.fr/

Carl

Linzino
Messages : 23
Enregistré le : 26 août 2017 02:40

Re: [k7][VG5000] Comment autobooter un binaire?

Message par Linzino » 15 févr. 2018 14:03

Oui, j'avais vu cette image qui ne repond pas à ma question...

Moi, j'ai besoin de connaitre l'addresse du debut du BASIC.

txttab on le calcule comment?

Avatar du membre
Mokona
Messages : 366
Enregistré le : 17 déc. 2016 22:01
Localisation : Nord Est des Yvelines
Contact :

Re: [k7][VG5000] Comment autobooter un binaire?

Message par Mokona » 15 févr. 2018 15:46

Tu peux trouver la valeur de txttab en $488E (sur deux octets)

Linzino
Messages : 23
Enregistré le : 26 août 2017 02:40

Re: [k7][VG5000] Comment autobooter un binaire?

Message par Linzino » 23 févr. 2018 11:47

Donc $488e donne 18940 comme valeur (small endian).

Quand est-ce que cette valeur change?

Répondre