it regularly difficult to spot, aside from maybe by a genuine Rolex replica history specialist, in light of the fact that the best phony Rolex are 95% made by Rolex. If you want to know how often you should optimally be winding your rolex replica watch, Click Here.

Lecteur / enregistr...
 
Notifications
Retirer tout

Lecteur / enregistreur carte sd sur port cassette

20 Posts
4 Utilisateurs
2 Reactions
192 Vu
Atmosphere
(@atmosphere)
Active Member
Inscription: Il y a 4 semaines
Posts: 12
Début du sujet  

Bonjour à tous,

Sur l'invitation de Didier_v je viens découvrir ce fabuleux forum, je ne pensais pas qu'il y avait encore autant d'activité autour de cette petite machine, ça fait plaisir. Je m'appelle Claire, j'ai eu mon premier Oric à 15 ans et 40 ans plus tard je viens d'en acheter un nouveau par nostalgie et le premier étant malheureusement perdu à jamais... Depuis janvier je me suis dit que ça serait sympa de me faire un petit lecteur de carte SD. Alors je sais bien qu'il existe plusieurs modèles, j'ai d'ailleurs acheté un Erebus que je trouve incroyablement rapide, j'avais jamais vu ça à l'époque, je n'avais pas les moyens de m'acheter un lecteur de disquettes alors je faisais avec le bon vieux magnétophone à cassette. J'avais envie de faire quelque chose qui se rapproche de l'expérience que j'avais vécu avec l'Oric mais en plus moderne et surtout qui puisse enregistrer des programmes.

Mon projet est bien avancé, il fonctionne, on peut lire les fichiers TAP et aussi sauvegarder les programmes toujours au format TAP avec seulement les instructions CLOAD et CSAVE. Il se connecte sur le port cassette, il a une prise USB C pour l'alimentation et tiendra dans un petit boitier de environ 3*7 cm. L'utilisation est simple on tape CLOAD" et on obtient le directory de la carte SD, on peut changer de répertoire et on peut théoriquement lire toutes sortes de carte sd en fat 16 ou 32. on peut sélectionner un fichier manuellement avant de faire cload, il suffit de taper la commande ? suivie du nom du programme ex: CSAVE"?TEST" (faire new avant sinon on envoie tout le prg en mémoire ou alors utiliser la fonction STORE) cette fonction va indiquer à la carte qu'on veut lire le fichier TEST.TAP, il suffit ensuite de taper CLOAD"" et l'Oric va lire le programme TEST.TAP

Pour sauvegarder on tape simplement CSAVE"TEST" et le programme sera transféré sur la carte SD avec le nom TEST.TAP

J'ai encore des fonctions que je souhaite ajouter comme la possibilité d'envoyer des données par le port série de l'esp32 ou d'autres petites choses. On pourrait imaginer aussi une option comme l'excellent projet Novalight qui permettrait d'accélérer les transferts mais bon là ça se complique.

Pour faire ce projet j'ai utilisé un esp32 que j'ai programmé en C++, tout cela était nouveau pour moi et j'ai dû aussi décrypter le protocole de communication de l'Oric sur le port cassette avec ses petites subtilités, d'ailleurs je n'ai pas encore compris pourquoi certains jeux comme Driver par exemple provoquent des erreurs, j'ai vu que les anciens éditeurs de jeux utilisaient des astuces contre le piratage, on verra ça plus tard.

J'essaie de vous mettre quelques photos.

A bientôt !

1744807467-IMG_20250416_132035.jpg

   
Dany reacted
Citation
Atmosphere
(@atmosphere)
Active Member
Inscription: Il y a 4 semaines
Posts: 12
Début du sujet  

Le directory ne faites pas attention à ce qui est affiché à l'écran c'est juste pour les tests

1744815448-IMG_20250416_131650.jpg
Ce message a été modifié Il y a 3 semaines 2 fois parAtmosphere

   
RépondreCitation
Atmosphere
(@atmosphere)
Active Member
Inscription: Il y a 4 semaines
Posts: 12
Début du sujet  

La lecture d'un prg...

1744808097-IMG_20250416_133128.jpg

   
RépondreCitation
didier_v
(@didier_v)
Membre Admin
Inscription: Il y a 6 ans
Posts: 523
 

Bonjour Claire et bienvenue

Bravo pour ce premier post décrivant ta création. Comme je crois qu'il y a des experts en ESP32 sur le forum, tu devrais trouver des amis

Didier


   
RépondreCitation
Atmosphere
(@atmosphere)
Active Member
Inscription: Il y a 4 semaines
Posts: 12
Début du sujet  

Merci Didier 😉 ,si quelqu'un sait comment on utilise les routines décrites dans la doc de l'atmos pour envoyer des octets sur le port cassette, ça m'intéresse.


   
RépondreCitation
assinie
(@assinie)
Membre
Inscription: Il y a 5 ans
Posts: 65
 

@atmosphere

Bonjour, post et projet intéressants.

Il y a en gros quatre routines pour écrire un fichier sur une K7 (en plus de CSAVE qui les encapsule):

  • une pour l'écriture de l'entête du fichier
  • une pour l'écriture d'un bloc mémoire
  • une pour l'écriture d'un seul octet
  • une pour l'écriture d'un bit

À celà s'ajoute la routine d'initialisation du VIA et sa remise en état.

Il peut y avoir des différences entre l'Oric-1 et l'Atmos.

Est-ce que tu veux les détails de chacune ou seulement de certaines?
Peux-tu me dire à quelle doc tu fais référence?


   
RépondreCitation
Atmosphere
(@atmosphere)
Active Member
Inscription: Il y a 4 semaines
Posts: 12
Début du sujet  

Bonjour Assinie, en fait j'aurais besoin dans un premier temps d'envoyer des octets, on va dire une série de 15 octets environ pour envoyer une commande à l'esp32. Actuellement je me sers de la fonction csave en basic pour faire ça mais ça impose d'envoyer déjà les 256 bytes de synchro puis l'entête du fichier ce qui ralenti la communication alors que j'ai besoin juste d'une quinzaine d'octets.

Il faut aussi que le petit programme que j'envoie lors de l'affichage du directory soit le plus court possible pour diminuer le temps de chargement. Ce petit programme permet de dialoguer avec l'Oric pour afficher le DIR et de sélectionner le programme à charger. L'appel de la routine qui sert à communiquer avec l'esp32 doit donc être facile à mettre en oeuvre sinon on augmente le temps de chargement et ça devient pas intéressant.

Le seul document auquel je fais référence c'est le bouquin fourni avec l'Oric, il mentionne ces 4 routines mais ils n'expliquent pas comment s'en servir.

Par la suite j'ai envie de faire une sorte de terminal série qui utiliserait la sortie série de l'esp32, j'aimerais aussi permettre d'autres connexions avec le monde extérieur.


   
RépondreCitation
didier_v
(@didier_v)
Membre Admin
Inscription: Il y a 6 ans
Posts: 523
 

Mon humble avis, mais je suis nul en hardware donc je n'ai pas d'idée de la faisabilité

J'aurais rendu le périphérique indépendant de l'oric, donc esp32 + boutons + écran (ou écran tactile)

l'esp se conporterai comme le magnétophone. je sélectionne le fichier sur l'esp32, je fais play et des que l'oric lance cload, c'est parti

idem dans l'autre sens : je fais rec, je fais csave "nom" et voila. pas sur que cela soit judicieux de faire des échanges pour faire la sélection à l'écran


   
RépondreCitation
Atmosphere
(@atmosphere)
Active Member
Inscription: Il y a 4 semaines
Posts: 12
Début du sujet  

Posté par: @didier_v

Mon humble avis, mais je suis nul en hardware donc je n'ai pas d'idée de la faisabilité

J'aurais rendu le périphérique indépendant de l'oric, donc esp32 + boutons + écran (ou écran tactile)

l'esp se conporterai comme le magnétophone. je sélectionne le fichier sur l'esp32, je fais play et des que l'oric lance cload, c'est parti

idem dans l'autre sens : je fais rec, je fais csave "nom" et voila. pas sur que cela soit judicieux de faire des échanges pour faire la sélection à l'écran

En fait c'est ce que je comptais faire au début du projet mais j'ai trouvé bien plus intéressant de rendre le port cassette communicant avec l'esp car je trouve que ça sort de l'ordinaire, ça rend le port cassette intelligent et c'est un peu un défi de vouloir le détourner de ce pour quoi il était fait au départ. 

Ca marche déjà bien, l'esp n'a pas besoin d'être activé par l'opérateur comme avec un magnétophone, tout se fait depuis l'oric, on tape cload et obtient le dir sans toucher à l'esp, de même pour csave, on peut si on veut intégrer un petit esp dans l'oric, pas besoin de l'écran dans l'absolu et ça laisse les autres ports libres. 

 


   
RépondreCitation
f4goh
(@f4goh)
Trusted Member Adhérent
Inscription: Il y a 2 ans
Posts: 56
 

Bonjour Claire,

J'ai fait également un émulateur K7. L'article devrait sortir dans le prochain CEO-MAG.
En attendant tu peux regarder les sources ici :
K7 EMULATOR

Mais j'ai choisi un encodeur rotatif pour sélectionner les fichiers dans la mémoire spiffs de l'esp32

il n'y a pas de carte mSD externe afin de diminuer les couts.

La MAJ de la mémoire spiffs se fait par WiFi via FTP.

J'ai ajouté une Liaison série avec passerelle TELNET pour étendre la connectivité. (mais il faut un 6551)

j'ai également mis cet émulateur de K7 dans mon Oric Maison

Si le domaine des E/S t'intéresse tu trouvera ma 1ere carte E/S ORIC (il me reste 1 ou deux PCB)

J'ai aussi transformé l'EREBUS en bus I2C pour le fun.

Tous les projets ont été expliqués dans les CEO-MAG.

tu peux tester facilement le projet K7 EMU car il y a le web flasher

la programmation se fait sans compilation.

Bonnes bricoles

Amicalement,

F4GOH


   
RépondreCitation
Atmosphere
(@atmosphere)
Active Member
Inscription: Il y a 4 semaines
Posts: 12
Début du sujet  

Bonjour F4GOH, 

Très intéressant ton travail, malgré mes recherches que j'avais faites je n'avais pas découvert ton projet c'est clair que si je l'avais connu avant de commencer le mien j'aurais avancé bien plus vite.

J'avais pensé ajouter la possibilité de transférer les fichiers via wifi, je compte toujours y parvenir mais dernièrement j'ai fait des tests en Bluetooth et ça me génère des problèmes de communication. Je vois que tu as des connaissances en électronique et programmation qui sont certainement plus sérieuses que moi, je bidouille à ma façon mais j'arrive malgré tout à un résultat 🙂

C'est drôle j'avais pensé aussi à un encodeur rotatif mais j'ai laissé tomber car je voulais que tout soit contrôlé depuis l'oric, ça me complique la tâche mais c'est surtout pour le fun. J'ai aussi pensé à inclure une option pour lire des images au format bmp, je vois que tu as déjà pensé à un système similaire. 

Bref je ne manque pas d'idées, c'est surtout les connaissances dans certains domaines qui me manquent...

Merci pour ton post, je vais continuer à consulter tes travaux 😉

Claire 


   
RépondreCitation
assinie
(@assinie)
Membre
Inscription: Il y a 5 ans
Posts: 65
 

Les étapes pour lire ou écrire un octet depuis ou vers le port K7:

  • initialiser le VIA
  • indiquer la vitesse de transfert (lente ou rapide)
  • lire / écrire les octets un par un
  • restaurer la configuration du VIA

Exemple:

; Configuration du VIA pour les transferts K7
jsr	SetupVIA

; Indiquer la vitesse de transfert: 0-> rapide, autre->lent
lda	#$00
sta	TSPEED

; Envoyer un ocet vers le port K7: mettre le caractère dans A et faire un saut en OUTBYT
: Ici on écrit le caractère 'C'
lda	#'C'
jsr	OUTBYT

; Recevoir un octet depuis le port K7:
jsr	RDBYTE
; Ici A= caractère reçu, on le copie vers le permier caractère de la ligne de statut de l'écran
sta	$BB80

; Restaurer la configuration du VIA
jsr	ResetVIA

Il est également possible d'envoyer toute une zone mémoire vers le port K7 ou de lire plusieurs octets et de les copier vers une zone mémoire.

Attention: il faut connaitre à l'avance le nombre d'octets à transférer de façon à calculer l'adresse de fin du tampon  parce que ces routines ne s'arrêtent que lorsque l'adresse de fin du tampon est atteinte.

Exemple pour envoyer une copie d'écran (sans la ligne de statut)

; Configuration du VIA pour les transferts K7
jsr	SetupVIA

; Indiquer la vitesse de transfert: 0-> rapide, autre->lent
lda	#$00
sta	TSPEED

; Envoyer plusieurs octets vers le port K7
; Adresse de début des ocets à envoyer: $BBA8
lda	#<$BBA8
sta	TSTART
lda	#>$BBA8
sta	TSTART+1

; Adresse de fin des ocets à envoyer: $BFDF
lda	#<$BFDF
sta	TEND
lda	#>$BFDF
sta	TEND+1

jsr	OUTBYTES

; Restaurer la configuration du VIA
jsr	ResetVIA

Exemple pour lire une copie d'écran (sans la ligne de statut):

; Configuration du VIA pour les transferts K7
jsr	SetupVIA

; Indiquer la vitesse de transfert: 0-> rapide, autre->lent
lda	#$00
sta	TSPEED

; Recevoir plusieurs octets depuis le port K7
; Adresse de début pour la réception des octets: $BBA8
lda	#<$BBA8
sta	TSTART
lda	#>$BBA8
sta	TSTART+1

; Adresse de fin pour la recpetion des octets: $BFDF
lda	#<$BFDF
sta	TEND
lda	#>$BFDF
sta	TEND+1

jsr	RDBYTES

; Restaurer la configuration du VIA
jsr	ResetVIA

Pour un transfert de ce type, tu peux décider que le nombre d'octets envoyé est fixe (256 par exmple) ou envoyer d'abord la taille du bloc qui sera échangé de façon à ce que l'esp32 ou l'Oric s'adapte si cette taille est variable.

Adresses poour un Atmos:

INTTMP = $33		; 2 octets ($33-$34)
TSPEED = $024D		; 0->rapide, autre->lent ('S')
TSTART = $02A9		; 2 octets ($02A9-$02AA)
TEND = $02AB		; 2 octets ($02AB-$02AC)

SetupVIA = $E76A		
ResetVIA = $E93D

OUTBYT = $E65E		; octet à envoyer dans A, conserve X et Y, utilise $2F
OUTBYTES = $E62E	; Adresse de début en $02A9-02AA, fin en $02AB-$02AC, utilise INTTMP

RDBYTE = $E6C9		; Octet reçu dans A, conserve X et Y, utilise $2F
RDBYTES = $E4E0		; Adresse de début en $02A9-$02AA, fin en $02AB-$02AC, utilise INTTMP

Adresses pour un Oric-1:

INTTMP = $33		; 2 octets ($33-$34)
TSTART = $5F		; 2 octets ($5F-$60)
TEND = $61		; 2 octets ($61-$62)
TSPEED = $67		; 0->rapide, autre->lent (3)

SetupVIA = $E6CA		
ResetVIA = $E804

OUTBYT = $E5C6		; octet à envoyer dans A, conserve X et Y, utilise $2F
OUTBYTES = $E5A7	; Adresse de début en $5F-$60, fin en $61-$62, utilise INTTMP

RDBYTE = $E630		; Octet reçu dans A, conserve X et Y, utilise $2F
RDBYTES = $E4EB		; Adresse de début en $5F-$60, fin $61-$62, utilise INTTMP

 

En espérant que ça puisse t'aider.


   
didier_v reacted
RépondreCitation
Atmosphere
(@atmosphere)
Active Member
Inscription: Il y a 4 semaines
Posts: 12
Début du sujet  

Merci beaucoup Assinie, ça va bien m'aider. J'ai de quoi m'amuser 😊


   
RépondreCitation
Atmosphere
(@atmosphere)
Active Member
Inscription: Il y a 4 semaines
Posts: 12
Début du sujet  

Peux tu me donner les adresses des routines ? Je n'arrive pas à trouver de documents à ce sujet... 


   
RépondreCitation
didier_v
(@didier_v)
Membre Admin
Inscription: Il y a 6 ans
Posts: 523
 

 @atmosphere : Je crois que les fichiers d'Assinie sont complets, les lignes de code sont autonomes avec les adresses listées notamment dans le dernier listing


   
RépondreCitation
Page 1 / 2
Share: