Conversion cassettes MO5 en disquettes et fichiers .sd

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 : Papy.G, fneck, Carl

Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: Conversion cassettes MO5 en disquettes et fichiers .sd

Message par Daniel »

Nouvelle conversion sur disquette :
Arkanoïd : http://dcmoto.free.fr/programmes/arkanoid/index.html

Image

Toujours le même scénario, avec écrasement du DOS.
Daniel
L'obstacle augmente mon ardeur.
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: Conversion cassettes MO5 en disquettes et fichiers .sd

Message par Daniel »

Nouvelle conversion sur disquette :
Game Over : http://dcmoto.free.fr/programmes/game-over/index.html

Image Image

Conversion un peu plus compliquée car le jeu est en deux parties. Il nécessite deux loaders différents en mémoire vidéo pour charger chacune des parties à partir des secteurs physiques de la disquette, en écrasant le DOS.
Daniel
L'obstacle augmente mon ardeur.
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: Conversion cassettes MO5 en disquettes et fichiers .sd

Message par Daniel »

Nouvelle conversion sur disquette :
Labyrinthe : http://dcmoto.free.fr/programmes/labyrinthe/index.html

Image Image

Labyrinthe est un programme en Basic, ce n'est pas une conversion mais une simple copie. La version originale en blanc sur fond gris n'est pas assez contrastée avec un téléviseur LCD, j'en ai fait une autre en noir sur fond gris. Le Basic est très lent, soyez indulgent pour le programmeur :wink:
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
6502man
Messages : 12286
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: Conversion cassettes MO5 en disquettes et fichiers .sd

Message par 6502man »

Ce matin je me suis amusé a essayer de convertir ATOMIK en version disquette, et la solution de Daniel reste certainement la plus simple à cause du manque de place en RAM avec le DOS, pour la compression ca n'a pas était concluant !!!

Par contre je me suis aperçu de 2 choses en essayant d’écrire directement dans des secteurs:

1) les docs techniques (clefs pour MO5 et assembleur des périphériques) sont bourrés d'erreurs ou omissions et des erreur dans la typographie des adresses .... :( :x


2) Au départ je voulais utiliser l'utilitaire de Daniel DCFDutils pour stocker le binaire en temps que fichiers dans un .fd vide et fraichement formaté, et en ayant l'espoir que le fichier serait crée défragmenté sur des secteurs contigües.
L'utilitaire crée bien un fichier sur des secteurs contigües mais dans un ordre décroissant :( et de plus avec le système de fichiers et de bloc de demi piste ce n'est pas possible de le relire :( :?
Par contre si je fait un SAVEM"" sous DCMOTO de la zone mémoire concerné sur une disquette vierge j'obtiens un fichier sur des secteurs contigües dans un ordre croissant :?
Mais par contre impossible de le relire 'brut' par secteur évidemment :?

Finalement pour intégrer mon binaire "brut" dans le .fd j'ai opté pour cette solution :
- créer une nouvelle disquette formaté avec le DOS
- sous DCMOTO SAVEM"TOTO",&H3200,&HAFFF,&H3200 (uniquement pour créer un fichier et allouer les blocs du système de fichier, avec de la marge en plus, aucune importance du contenu, puisque impossible de charger le binaire complet avec le DOS) :wink:
- sous DCMOTO reboot avec le DOS ;)
- dans l'outil mise au point injecter le binaire "brut" à partir de $3200
- injecter en $1000 un petit outil en ASM que j'ai créer pour copier les données dans les secteurs réservé précédemment par le SAVEM :roll:
- ne surtout pas retourner dans l'emu mais modifier au préalable l'adresse PC par $1000.
- retourner dans l'emu et la il écrit le binaire dans les secteurs
- une fois terminé le jeu démarre, on peut rebooter et finir en écrivant le loader binaire sur le .fd. :lol: :roll:

Le plus compliqué c'est de trouver les secteurs occupés par le fichier crée par SAVEM, il faut obligatoirement utiliser un éditeur hexadécimal, et bien décortiquer la FAT :roll: :(

J'ai rencontré un problème lors du chargement en RAM en utilisant les chargement de secteurs par le moniteur, dès que j'écrit dans le zone RAM en $9E00-$9FFF, je pense à un problème de pile (le registre S est dans cette zone en Basic) mais je ne connais pas assez le MO5 pour affirmer et contourner ce problème :roll: :(

Merci Daniel, grâce à toi Je me suis bien amusé et programmé un nouveau truc :D :D


Voici mon modeste outil pour écrire directement dans les secteurs :

Code : Tout sélectionner

;FDD
;-------------------
REGISTER	EQU	$2048
EXECUTE		EQU	$26
DRIVE		EQU	$2049
PISTE		EQU	$204A		;( 16 bits)
SECTEUR		EQU	$204C
BUFFER		EQU	$204F		;(16 bits)
STATE		EQU	$204E

INIT	EQU $01
READ	EQU $02
WRITE	EQU $08

	.ORG    $1000

;	ECRITURE DANS DES SECTEURS D'UN BINAIRE

	PSHS A,B,X,Y

		LDX #$3200			;	7E 32 D6 7E 32 58
		LDY #$22
PISTEADD2
		LDB #$01
		
WRITESECTOR
	STX BUFFER
	STY PISTE
	STB SECTEUR
	LDA #$00
	STA DRIVE
	LDA #WRITE
	STA REGISTER

		PSHS X,B,Y

	SWI 
	FCB $26
	
		PULS Y,B,X
		
		TBA
		LDB #$FF
		ABX
		INX
			CPX #$9E00
			BHS GO
		TAB
		INCB
		CMPB #17
		BNE WRITESECTOR
	INY
	JMP PISTEADD2
	
GO
	PULS Y,X,B,A
	JMP $8350

Voici mon modeste code pour lire directement les secteurs :

Code : Tout sélectionner

;FDD
;-------------------
REGISTER	EQU	$2048
EXECUTE		EQU	$26
DRIVE		EQU	$2049
PISTE		EQU	$204A		;( 16 bits)
SECTEUR		EQU	$204C
BUFFER		EQU	$204F		;(16 bits)
STATE		EQU	$204E

INIT	EQU $01
READ	EQU $02
WRITE	EQU $08

	.ORG    $1000

	LDX #$3200			;	7E 32 D6 7E 32 58
		LDY #$0022
PISTEADD
	LDB #$01

READSECTOR
	STX BUFFER
	STY PISTE
	STB SECTEUR
	LDA #$00
	STA DRIVE
	LDA #READ
	STA REGISTER

		PSHS X,B

	SWI 
	FCB $26
	
		PULS B,X
		
		TBA
		LDB #$FF
		ABX
		INX
		CPX #$9E00
		BHS GO
		TAB
		INCB
		CMPB #17
		BNE READSECTOR
	INY
	JMP PISTEADD
GO	
	JMP $8350
ATOMIK.zip
(39.92 Kio) Téléchargé 189 fois
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: Conversion cassettes MO5 en disquettes et fichiers .sd

Message par Daniel »

L'allocation des clusters de disquette ne se fait pas dans l'ordre physique. Le système privilégie les clusters proches de la piste 20, pour optimiser les déplacements de têtes. On ne peut pas prédire facilement l'ordre, il vaut mieux écrire soi-même les secteurs, et surtout ne pas oublier de les marquer "occupés" dans la FAT, sinon ils seront écrasés par les prochaines allocations.

Dans toutes les opérations de chargement direct en ram, il faut faire très attention de ne pas écraser des zones utilisées par le système, en particulier les variables du moniteur, les variables du Basic, et surtout la pile système. Ecraser le DOS n'est pas un problème si on ne l'utilise plus. Ecraser les variables du Basic est possible si on travaille uniquement en langage machine. Ecraser les variables du moniteur est possible si on n'appelle aucune fonction système. Ecraser la pile système est toujours fatal. Il faut la placer dans une plage de mémoire non impactée.
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
6502man
Messages : 12286
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: Conversion cassettes MO5 en disquettes et fichiers .sd

Message par 6502man »

Pour finir la semaine j'ai fait un petit programme pour gérer la FAT des disquettes (40 pistes), ca me permet de "réserver" les pistes pour le chargement directement des secteurs :D
Je l'ai fait en basic et ca fonctionne bien et c'est très pratique, on peut faire mieux et l'améliorer :wink:

Code : Tout sélectionner

0 REM GESTION DE LA FAT DES DISQUETTES 40 PISTES
1 REM ------------------------------------------
2 REM    (c) 2015   6502MAN
3 REM ------------------------------------------
5 CLEAR 2000
8 DIM PISTE(40,2)
10 FAT$=DSKI$(0,20,2)
100 B=2:FOR A=1 TO 40
110 PISTE(A,1)=ASC(MID$(FAT$,B,1)):B=B+1
120 PISTE(A,2)=ASC(MID$(FAT$,B,1)):B=B+1
150 NEXT
190 SCREEN 7,0,0:CLS:LOCATE 5,0:PRINT"PISTE 0 à 39":PRINT
200 FOR A=1 TO 20
205 IF A<11 THEN TB$=" " ELSE TB$=""
210 P=A:B=1:GOSUB 1000:COLOR 7:PRINT TB$;A-1;" ";:COLOR COUL:PRINT BLOC$;
212 P=A:B=2:GOSUB 1000:PRINT " ";:COLOR COUL:PRINT BLOC$;
214 P=A+20:B=1:GOSUB 1000:PRINT "     ";:COLOR COUL:PRINT BLOC$;
216 P=A+20:B=2:GOSUB 1000:PRINT " ";:COLOR COUL:PRINT BLOC$;"  ";:COLOR 7:PRINT A+19
220 NEXT
300 LOCATE 23,05:COLOR 1:PRINT"X";:COLOR 7:PRINT " BLOC RESERVE" 
310 LOCATE 23,06:COLOR 3:PRINT"F";:COLOR 7:PRINT " BLOC OCCUPE"
320 LOCATE 23,07:COLOR 2:PRINT"O";:COLOR 7:PRINT " BLOC LIBRE"
330 LOCATE 22,15:PRINT"X=RESERVER PISTE":LOCATE 22,16:PRINT "F=OCCUPER PISTE":LOCATE 22,17:PRINT"T=SAUVEGARDER FAT"
335 LOCATE 0,23:PRINT "COMMANDE : ";
340 K$=INKEY$:IF K$="" THEN 340
350 IF K$="X" THEN INPUT"RESERVER PISTE :",X:GOTO 2000
360 IF K$="F" THEN INPUT"OCCUPER PISTE :",X:GOTO 3000
370 IF K$="T" THEN 4000
380 GOTO 335
999 END
1000 IF PISTE(P,B)=254 THEN BLOC$="X":COUL=1	:	REM reservé
1010 IF PISTE(P,B)=255 THEN BLOC$="O":COUL=2	:	REM libre
1020 IF PISTE(P,B)<254 THEN BLOC$="F":COUL=3	:	REM occupé
1030 RETURN
2000 Y=X+1
2005 PISTE(Y,1)=254:PISTE(Y,2)=254
2020 GOTO 190
3000 Y=X+1
3005 PISTE(Y,1)=Y*2:PISTE(Y,2)=(Y*2)+1
3020 GOTO 190
4000 FAT2$=CHR$(0)
4005 B=2:FOR A=1 TO 40
4010 FAT2$=FAT2$+CHR$(PISTE(A,1)):B=B+1
4020 FAT2$=FAT2$+CHR$(PISTE(A,2)):B=B+1
4030 NEXT
4040 FAT2$=FAT2$+LEFT$(FAT$,LEN(FAT$)-((b)))
4050 DSKO$ 0,20,2,FAT2$:GOTO 190
Du coup j'ai aussi converti F15 STRIKE EAGLE en disquette, cette fois ci je n'ai pas écrit de fichier pour le binaire mais réservé avec mon programme les secteurs (30 à 39) :wink:
F15.png
F15.png (2.59 Kio) Consulté 6038 fois
F15.zip
(35.08 Kio) Téléchargé 181 fois
Daniel si tu pense qu'il y a une erreur quelque part ou que ma méthode n'est pas correcte n'hésite pas à le signaler :wink:

Je vais essayer de faire la conversion de DAKAR 4x4 ....
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
Avatar de l’utilisateur
6502man
Messages : 12286
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: Conversion cassettes MO5 en disquettes et fichiers .sd

Message par 6502man »

Ca me parait trop facile je viens de convertir DAKAR 4x4 en disquette :roll: :roll: :roll:

J'ai un gros doute sur la zone RAM $9E00 - $9FFF ????
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Conversion cassettes MO5 en disquettes et fichiers .sd

Message par __sam__ »

Hey, tu deviens un expert des FATs et de la structure DISK thomson. Bravo! :D
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Avatar de l’utilisateur
6502man
Messages : 12286
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: Conversion cassettes MO5 en disquettes et fichiers .sd

Message par 6502man »

SAM: merci :D :oops:

Je viens de vérifier DAKAR 4x4 et il n'y pas de donnée stocké en $9E00-$9FFF donc c'est tout bon :lol:

Image
DAKAR_4x4.zip
(32.35 Kio) Téléchargé 184 fois
Daniel tu peux les rajouter sur ton site bien entendu :wink:
je vais essayer de faire FBI ...
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
Avatar de l’utilisateur
6502man
Messages : 12286
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: Conversion cassettes MO5 en disquettes et fichiers .sd

Message par 6502man »

Ca y est j'ai réussi à convertir FBI :wink:

la difficulté pour celui la était qu'il y avait un mécanisme d’exécution du binaire pas classique, les adresses $223F-$2240 ne comporté pas la bonne adresse d’exécution et le jeu planté :(
Après réflexion il m'a fallu mettre un point d’arrêt dans le debugger et faire du pas à pas pour trouver l'adresse d’exécution :lol:

Un de plus :D


Image
FBI.zip
(17.94 Kio) Téléchargé 181 fois
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: Conversion cassettes MO5 en disquettes et fichiers .sd

Message par Daniel »

Les conversions se succèdent à un tel rythme que j'ai du mal à suivre :D
Ce matin j'ai ajouté les trois dernières disquettes créées au site dcmoto, ainsi que les versions .sd pour les contrôleurs CS91-28x.
http://dcmoto.free.fr/programmes/_html/ ... mo_sd.html
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
6502man
Messages : 12286
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: Conversion cassettes MO5 en disquettes et fichiers .sd

Message par 6502man »

Aujourd'hui 3 nouvelles conversions, comme le disait Daniel ca devient plus facile à chaque conversion :wink:
J'ai peaufiné mon loader de secteurs, avec le positionnement de la pile si besoin ;)
J'utilise toujours les pistes 30-39 c'est plus qu'ils n'en faut :wink:

Image
formule1.zip
(26.76 Kio) Téléchargé 187 fois
Image
wizball.zip
(40.07 Kio) Téléchargé 178 fois
Image
Crocky2.zip
(18.73 Kio) Téléchargé 181 fois
Pour Crocky je n'ai fait que de copier directement les fichiers sur la disquette, le jeux était compatible avec le DOS :wink:
oui c'était un peu trop facile :lol:

J'en laisse pour les autres, j'ai d'autres projets encours ... :wink:
Dernière modification par 6502man le 07 déc. 2015 16:49, modifié 1 fois.
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Conversion cassettes MO5 en disquettes et fichiers .sd

Message par __sam__ »

10 secteurs d'utilisés? C'est peut pour une diskette. Ca vaudrait presque le coup de faire des "compils" avec 15 jeux k7 par D7 pour rentabiliser la place.

Pour wizzball, la version du splahscreen faite par pulkomandy est mieux que l'originale je trouve:
Image
(http://www.logicielsmoto.com/phpBB/view ... 4008#p4008)
Dernière modification par __sam__ le 07 déc. 2015 15:45, modifié 1 fois.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: Conversion cassettes MO5 en disquettes et fichiers .sd

Message par Daniel »

C'est sûr, il y a des jeux plus facile à convertir que d'autres, ça repose après les cas difficiles :wink:
Les trois nouveaux sont ajoutés au site dcmoto. Merci à 6502man !

Le DOS prend beaucoup trop de place en ram, c'est là le principal problème. Pour convertir un jeu sur cassette, 90% du DOS est inutile, on utilise seulement deux commandes : LOAD et LOADM. J'ai eu l'idée de créer un DOS réduit, avec ces deux seules commandes, mais je n'ai pas su le faire. Il faudrait chercher davantage, ce serait une excellente application, très utile dans le cas des conversions.
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
6502man
Messages : 12286
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: Conversion cassettes MO5 en disquettes et fichiers .sd

Message par 6502man »

J'ai regardé 2/3 autres jeux par curiosité et certains utilise un programme BASIC avec des appels à des routines ASM, ils occupent beaucoup de mémoire en RAM, avec le DOS ca va être compliqué :(

SAM: j'ai écrit une bêtise :oops: c'est pas 10 secteurs mais 10 pistes que je réserve pour stocker le binaire, je rectifie mon message.
En faite j'ai pris beaucoup de marge ( 10 * 16 * 256 = 40960 octets ) , on pourrais ce contenter du stricte nécessaire pour faire une compil (au plus 7 pistes pour les plus gros jeux) ?
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
Répondre