[Apple 2] Faire un disque virtuel sur PC ?

Placez ici vos trucs et astuces, étalez sans retenue votre savoir-faire et votre science qui va nous permettre de redonner une apparence neuve et fonctionnelle à nos bouzes.

Modérateurs : Carl, Papy.G, fneck

hlide
Messages : 480
Enregistré le : 29 nov. 2017 10:23

Re: [Apple 2] Faire un disque virtuel sur PC ?

Message par hlide » 22 mai 2018 22:07

Utiliser un convertisseur usb <-> parallèle (genre : https://fr.aliexpress.com/item/High-Qua ... 06076.html) si le parallèle est absolument nécessaire ? c'est nécessaire le PC ?

Parce que ça peut se faire avec un Arduino. J'ai débuté avec grâce au SDLEP-READER de Daniel mais avec un UNO ou un MEGA, ce devrait être possible de faire la même chose pour faire un disque virtuel (aucune idée de la difficulté toutefois). Au pire, on peut toujours le brancher sur un PC pour des transferts etc.

Enfin, je dis ça... je trouve que vous vous compliquez la vie avec les vielles techno (parallèle, vieux PC, vieux OS et j'en passe). On dit que l'Arduino c'est pour les artistes - c'est vrai, la programmation est assez surprenamment facile même si c'est du C++ à la base.

Avatar du membre
6502man
Messages : 9118
Enregistré le : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: [Apple 2] Faire un disque virtuel sur PC ?

Message par 6502man » 22 mai 2018 22:31

@Eagle Protect II : Content que cela puisse t'aider :)
Ah et précision importante : dans le source j'ai crée 2 fonctions lire et écrire sur le port parallèle (important de bien configurer le sens avant de lire ou écrire sur le port) , il est aussi possible d'interroger le status du port imprimante si tu comptes utiliser les signaux "paper out", "busy" ,..
Si tu as besoin ?

@hlide: "Utiliser un convertisseur usb <-> parallèle"
Oui mais la aussi il faudra trouver le bon driver et faire le programme qui sera compatible avec tous les convertisseurs ???

Pour l'Arduino j'y ai pensé et je connais pour avoir fait quelques trucs avec ;) , mais la demande initial de EagleProtect était de faire un disque virtuel sur PC :wink:

Edit: les annonces pour les convertisseur USB parallèles indiquent :
ce câble est " USB Support D'impression " port et pas Parallèle " LPT Imprimante Port "
????
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.

hlide
Messages : 480
Enregistré le : 29 nov. 2017 10:23

Re: [Apple 2] Faire un disque virtuel sur PC ?

Message par hlide » 23 mai 2018 00:33

Ca change quelque chose ? je croyais que l'on parlait du bon vieux port parallèle DB25 que l'on utilisait aussi pour brancher une imprimante. Bon, ok, tu crains que du côté de l'USB, il ne reconnait que des périphériques imprimantes parallèles. Ma foi, je ne saurais le dire mais avec le recul tu as probablement raison. Oublions cette connerie alors.

Daniel
Messages : 10828
Enregistré le : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Apple 2] Faire un disque virtuel sur PC ?

Message par Daniel » 23 mai 2018 11:02

Effectivement, la majorité (et peut-être la totalité) des convertisseurs USB/Parallèle fonctionnent en écriture mais pas en lecture.
Daniel
L'obstacle augmente mon ardeur.

Avatar du membre
Eagle Protect II
Messages : 251
Enregistré le : 22 nov. 2017 22:17

Re: [Apple 2] Faire un disque virtuel sur PC ?

Message par Eagle Protect II » 23 mai 2018 11:48

hlide a écrit :
22 mai 2018 22:07

Enfin, je dis ça... je trouve que vous vous compliquez la vie avec les vielles techno (parallèle, vieux PC, vieux OS et j'en passe).
Tu n'as pas tort, mais l'idée de base est de faire "avec les moyens du bord", zéro investissement, zéro bricolage. C'est impossible bien sûr, puisqu'il y aura toujours une nappe à bricoler, des connecteurs, un câble 25 broches et forcément quelques soudures à faire. Mais pour le reste, si le programme développé en Turbo C fonctionne sous fenêtre DOS de XP (sans DosBox, donc), et avec le port LPT de ma carte mère, ce sera déjà pas mal. Pour quelqu'un qui n'a pas de port LPT, il y a des cartes PCI ou des connecteurs USB / LPT ; dans les deux cas il faut qu'on puisse y accéder en lecture et écriture, de manière analogue (adresse 378 ou quelque chose comme ça). On verra cela plus tard.

Petite question : pour faire du "real-time clock" en C, y a-t-il quelque chose que je doive absolument savoir avant d'y perdre 2 nuits ?

Merci !

Avatar du membre
6502man
Messages : 9118
Enregistré le : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: [Apple 2] Faire un disque virtuel sur PC ?

Message par 6502man » 23 mai 2018 15:38

"real-time clock" en C
Tout dépend ce que tu veux faire ?
- Cadencé les échanges avec le Apple 2
- Réaliser un délai
- Gérer l'heure, minutes, secondes ..

De mémoire il y a un Timer accessible sous DOS, et il me semble qu'il faut passer par les Interuptions, mais la c'est vraiment loin :roll:

Si c'est que pour gérer l'heure, etc la fonction TIME() suffit. et pour réaliser un delai il y a la fonction delay(), pour le reste il faut rechercher ..
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.

Avatar du membre
6502man
Messages : 9118
Enregistré le : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: [Apple 2] Faire un disque virtuel sur PC ?

Message par 6502man » 23 mai 2018 15:47

J'ai trouvé le timer c'est PIT qui s'en charge :wink:

Voila un lien qui explique avec du code C en exemple : PIT

Par contre pas sur que ca fonctionne sous XP avec les interruption :roll:
Modifié en dernier par 6502man le 23 mai 2018 16:28, modifié 1 fois.
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.

hlide
Messages : 480
Enregistré le : 29 nov. 2017 10:23

Re: [Apple 2] Faire un disque virtuel sur PC ?

Message par hlide » 23 mai 2018 16:04

Si on parle du RTC - pour récupérer l'heure système, il ne devrait pas y avoir de problème car ce n'est pas ce qui manque en fonction sous Windows.

Concernant le PIT, il est à mon avis pas vraiment disponible sous Windows, surtout qu'il peut s'en servir pour certaines de ces fonctions.

En fait, quel en serait l'usage de ce timer "temps-réel" ?

Avatar du membre
Eagle Protect II
Messages : 251
Enregistré le : 22 nov. 2017 22:17

Re: [Apple 2] Faire un disque virtuel sur PC ?

Message par Eagle Protect II » 23 mai 2018 16:22

Hé bien, le but est de lire le port LPT, d'attendre 4 µs et de le relire (et pareil pour l'écriture).

Donc genre :

Code : Tout sélectionner

{
h1 = quelleheurestil();
jefaismonboulot
while quelleheurestil() < (h1 + mes4µs)
{ rien }
et j'y retourne !
}
Par contre là il n'est pas question de compter les cycles d'horloge, il faut que ça marche quelle que soit la vitesse du CPU.

Dans certains langages évolués, il y a une fonction "horloge rapide" en plus de la fonction "horloge pour calendrier et réveil matin"...

Avatar du membre
6502man
Messages : 9118
Enregistré le : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: [Apple 2] Faire un disque virtuel sur PC ?

Message par 6502man » 23 mai 2018 16:42

A oui 4 µs ça fait très court, le Timer ne convient pas à mon avis.

Pourquoi ces 4 µs ?


Quel est le temps d’exécution d'une instruction avec un pentium-3 à 800 Mhz ???

edit :
800.000.000 cycles par seconde pour un processeur cadencé à 800Mhz et selon les instructions X86 plusieurs cycles pour une instruction .
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.

Avatar du membre
Eagle Protect II
Messages : 251
Enregistré le : 22 nov. 2017 22:17

Re: [Apple 2] Faire un disque virtuel sur PC ?

Message par Eagle Protect II » 23 mai 2018 17:35

Béh, sur le Disk II, les bits sont transférés au rythme de 4µs. D'où les routines RWTS dans lesquelles le code en langage machine est optimisé pour envoyer un octet tous les 32 cycles CPU (ils on mis des instructions inutiles pour remplir, avec, de mémoire, des NOP qui font 2 cycles, et un JSR qui en fait 3 pour que ça tombe pile poil).

En fait, le 6502 de l'Apple II est cadencé à 1 MHz, mais ils "trichent" en envoyant un octet à la fois, donc toutes les 32 µs. Ensuite c'est le contrôleur qui "démultiplexe" l'octet et l'envoie à raison d'un bit / 4µs à la carte analogique du Disk II.

Donc de mon côté, je veux intercepter ce bit au moment où il passe dans la nappe, donc entre le contrôleur et la carte ana. La broche étant connectée à une entrée du port LPT, il faut que je lise le port LPT toutes les 4 µs (ou dans l'autre sens, que j'écrive sur le port LPT toutes les 4 µs pour faire croire au contrôleur que je suis un Disk II).

J'ai un AMD à 2,7 GHz je crois, donc 2700 fois plus rapide que l'Apple, mais je lis chaque bit et non un octet entier, donc c'est 8 fois plus lent. Ma machine est donc 340 x plus rapide que l'Apple. Mon programme sera plus complexe qu'une routine RWTS optimisée pour faire des lots de 32 cycles, mais j'ose espérer qu'il sera suffisamment rapide pour être prêt à envoyer / recevoir 1 bit toutes les 4 µs.

C'est le premier test que je vais faire en C. Mais vu que j'étais à 10µs en PERL, je suis confiant !

Avatar du membre
6502man
Messages : 9118
Enregistré le : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: [Apple 2] Faire un disque virtuel sur PC ?

Message par 6502man » 23 mai 2018 18:01

Okay l'Apple 2 envoie/reçois les octets en série au Disk 2 (à travers la carte contrôleur) .

La il va falloir réfléchir à la meilleur solution disponible en C sous DOS, mais c'est faisable à mon avis .
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.

hlide
Messages : 480
Enregistré le : 29 nov. 2017 10:23

Re: [Apple 2] Faire un disque virtuel sur PC ?

Message par hlide » 23 mai 2018 18:40

Un simple "delay" sous Windows en µs - impossible - du moins avec les APIs que je connais. On est plutôt de l'ordre de 25 ms, bien qu'il soit possible de faire passer à une résolution de 1 ms (voir 0,5 ms par un API kernel "moins" documenté).

Il va falloir faire du polling actif pour arriver à faire du 4µs en passant par un API qui retourne des ticks traduisibles en nanosecondes. Ou un appel direct à l'instruction RDTSC s'il est implémenté dans ton AMD.

Avatar du membre
6502man
Messages : 9118
Enregistré le : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: [Apple 2] Faire un disque virtuel sur PC ?

Message par 6502man » 23 mai 2018 19:26

Justement de mémoire il me semble que l'on pouvait interroger les "ticks" mais je me rappelle absolument pas comment :oops:

Je cherche depuis tout à l'heure mais pas trouvé :roll:

Je verrai demain après midi si la mémoire me revient ...
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.

Avatar du membre
6502man
Messages : 9118
Enregistré le : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: [Apple 2] Faire un disque virtuel sur PC ?

Message par 6502man » 28 mai 2018 20:42

Après plusieurs recherches je ne trouve pas de fonction permettant d'avoir un delai de l'ordre des µs au mieux en ms mais du coup c'est trop lent.

Donc il te reste 3 alternatives (c'est ce qui me vient à l'esprit) :

1) connecter un NE555 sur ton cablage et le regler pour avoir des impulsions de 4 µs .

2) Connecter un oscillateur à la fréquence de 4 µs => 0.25 MHZ ?

3) calculer les instructions nécessaires pour obtenir un delai de 4µs .


Dans le premier cas il te faut réservé un bit soit de contrôle soit de lecture pour lire les impulsions du NE555, l'avantage c'est que ce composant à des pins de "contrôles" qui te permettrons de démarrer la séquence d'impulsions au rythme de 4µs .
Les temps de monté et descente des fronts sont de l'ordre de 100 ns soit 0.1 µs et de plus il existe des montages tout prêt reglable : NE555
le Datasheet : NE555


Je ne suis pas assez expérimenté pour te certifier que cette solution est l'idéale, mais je suis sur que les électroniciens du forum pourront confirmer ou non cette solution :?:

Et peut être existe t'il une solution avec d'autres circuits logiques :idea:
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.

Répondre