TAVERNIER 6809

C'est la catégorie reine de l'ordinophile, 8 bits et pas un de plus!
Single board ou bus S-100 acceptés.

Modérateurs : Papy.G, fneck, Carl

Avatar de l’utilisateur
michel guyot
Messages : 612
Inscription : 20 mars 2016 16:01
Localisation : Pyrénées orientales

Re: TAVERNIER 6809

Message par michel guyot »

Bonjour jb_jb_fr

J'ai réussi a écrire les deux routines Receiver (Transfert PC vers TAVERNIER) et Sender (Transfert TAVERNIER vers PC)

Pour l'instant, le code est un peu brut de fonderie.
Je vais supprimer les bouts de codes inutiles et peut-être améliorer l'ergonomie.
Je le mettrais en ligne une fois cela fait.

Bien sur si quelqu'un s'est livré au même exercice, cela m'intéresse de pouvoir comparer....

Je n'ai pas recherché la performance, j'essaie de coller au protocole XMODEM de base (simple Check-Sum) et j'utilise sur mon PC l' HyperTerminal en 1200 bauds

J'ai fait quelques recherches sur le web, je n'ai trouvé qu'un exemple de code XMODEM/CRC écrit pour un 65C02.
Pourtant, il doit bien exister d'autre exemple en code 6809
Une question me trotte dans la tête: combien de personnes dispose aujourd'hui d'un TAVERNIER ? :?: :?: :?:

Michel
Avatar de l’utilisateur
jb_jb_fr
Messages : 391
Inscription : 29 mars 2010 10:36
Localisation : Essonne (91)
Contact :

Re: TAVERNIER 6809

Message par jb_jb_fr »

Bonjour Michel

Voila un petit aperçu de mon code 6809 pour recevoir en XModem:

En esperant que cela puisse t'aider :wink:

Jacques

Code : Tout sélectionner

Xmdm.Fsn  rmb 1
Xmdm.Cnt  rmb 1
Xmdm.Crc  rmb 1
Xmdm.Flag rmb 1



          ldb  #$01
          stb  >Xmdm.Fsn             ; Initialize the XModem FSN to 1
          ldx  #CartridgeBase        ; Initialize the Receive Data pointer on start of Memory
Wait_on_char:
          ldy  #$0001
Wait_1:   lda  <(MC6551+StatReg)     ; Wait Character from Sender
          anda #Stat.RxF
          bne  CharPresent           ; There is a character => treat it
          leay -1,y                  ; No character : Decrease the Time Out counter
          bne  Wait_1                ; Counter != 0 =>Wait a new character
CRC_KO:   lda  #C$NACK               ; Counter  = 0 => Send a NACK response
CRC_OK:   sta  <(MC6551+DataReg)
          bra  Wait_1
CharPresent:
          lda  <(MC6551+DataReg)     ; Read Data
          cmpa #C$EOT                ; Is it EOT (End Of Transmission)
          beq  XModemEnd             ;  Yes => The transfert is finished
          cmpa #C$SOH                ; Is it a SOH Char (Start Of Header)
          bne  Wait_on_char          ;  No-> go in NACK Loop
ReadFsn:
          lda  <(MC6551+StatReg)     ; Wait the FSN Character (Frame Sequence Number)
          anda #Stat.RxF
          beq  ReadFsn
          lda  <(MC6551+DataReg)     ; Read Data
          tst  >Xmdm.Flag            ; Read the FSN Flag
          beq  Fsn_OK                ; If 0, it is the first transmition frame, the FSN is not verified
          cmpa >Xmdm.Fsn             ; Is it the Correct FSN (Frame Sequence Number)
          beq  Fsn_Ok                ;  Yes => OK, continue the treatment
          deca                       ;  No => Compare with FSN-1 to see if it is a rettransmission
          cmpa >Xmdm.Fsn             ; Is it Previous FSN (Frame Sequence Number)
          bne  Wait_on_char          ;  No-> go in NACK Loop
          leax -128,x                ;  Yes-> Rewind the DataPointer to receive the same block
Fsn_Ok:
          inca                       ; Increase the FSN
          sta  >Xmdm.Fsn             ; Store it in memory
          ldb  #128                  ; XModem Payload Size (128 bytes)
          stb  >Xmdm.Cnt
          stb  >Xmdm.Flag            ; Set the FSN Flag to verify the FSN value
ReadNFsn:
          lda  <(MC6551+StatReg)     ; Wait the ~(FSN) and ignore it
          anda #Stat.RxF
          beq  ReadNFsn
          lda  <(MC6551+DataReg)
          clrb                       ; Clear the Payload CRC
ReadPayload:
          lda  <(MC6551+StatReg)     ; Wait Payload data
          anda #Stat.RxF
          beq  ReadPayload
          lda  <(MC6551+DataReg)     ; Read Payload data
          sta  ,x                    ; Store data in memory
          addb ,x+                   ; Calc CRC and increase data counter
          dec  >Xmdm.Cnt             ; decrease Xmodem counter
          bne  ReadPayload           ; Not finished
          stb  >Xmdm.Crc             ; Save Payload CRC
ReadCrc:
          lda  <(MC6551+StatReg)     ; Wait Payload CRC
          anda #Stat.RxF
          beq  ReadCrc
          ldb  <(MC6551+DataReg)     ; Read Payload CRC
          lda  #C$ACK                ; Initialize the response to ACK
          ldy  #$0000                ; Initialize the Wait counter
          cmpb >Xmdm.Crc             ; Compare received CRC to Calculated CRC
          beq  CRC_OK                ; CRC equal ==> Send ACK response and wait the next frame
          leax -128,x                ; CRC different, rewind tha data pointer
          dec  >Xmdm.Fsn             ; Decrease FSN Number
          bra  CRC_KO                ; Send NACK response, and wait the new frame
XModemEnd:
          lda  <(MC6551+StatReg)     ; Wait Character from Sender
          anda #Stat.TxE
          beq  XModemEnd
          lda  #C$ACK                ; End of Transmission: Send ACK to the Emitter
          sta  <(MC6551+DataReg)

Avatar de l’utilisateur
michel guyot
Messages : 612
Inscription : 20 mars 2016 16:01
Localisation : Pyrénées orientales

Re: TAVERNIER 6809

Message par michel guyot »

Bonjour,

Comme promis voici à quoi ressemblent les deux routines qui me permettent de transférer un fichiers de mon PC vers mon TAVERNIER et vice versa.

Pour infos
La liaison RS232 fonctionne en 1200 bauds

Après lancement d'une des routine, j'utilise suivant le cas le menu "Transfert/Envoyer un fichier" ou Transfert/Recevoir un fichier" de l' HyperTerminal mode XMODEM

La routine XMRCV25A stocke le fichier reçu en page 2 ce qui me permet de recevoir en un seul fichier de taille suffisante pour afficher sur ma carte graphique VM9938, une image.bmp 256x212 256couleurs 8bits.
P127-XMRCV25A-Listing.zip
(3.13 Kio) Téléchargé 131 fois
La routine XMSEN20A elle utilise (pour l'instant) la page 1 pour stocker le fichier à transmettre au PC
P126-XMSEN20A-Listing.zip
(3.39 Kio) Téléchargé 141 fois
Michel
Avatar de l’utilisateur
michel guyot
Messages : 612
Inscription : 20 mars 2016 16:01
Localisation : Pyrénées orientales

Re: TAVERNIER 6809

Message par michel guyot »

Bonjour à tous

Ci-dessous, un exemple de transfert d'une image .bmp du PC vers ma carte graphique VM9938 sur TAVERNIER

La première mouture de logiciel transférait l'image avec quelques erreurs (cf image du Canigou diffusée précédemment)
Ma dernière mouture plus conforme au protocole XMODEM avec CS évite les erreurs de transmission

Michel

Image récupérée sur la carte graphique du TAVERNIER:
Image tranférée au  TAVERNIER.JPG
Image tranférée au TAVERNIER.JPG (98.38 Kio) Consulté 6703 fois


Image d'origine:
Image origine.jpg
Image origine.jpg (39.82 Kio) Consulté 6703 fois
Avatar de l’utilisateur
6502man
Messages : 12286
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: TAVERNIER 6809

Message par 6502man »

Excellent :)

Il faut vraiment que je trouve la place pour ressortir le Tavernier ...
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
Avatar de l’utilisateur
michel guyot
Messages : 612
Inscription : 20 mars 2016 16:01
Localisation : Pyrénées orientales

Re: TAVERNIER 6809

Message par michel guyot »

Bonjour à tous

Ci-dessous le listing de ma dernière mouture
Ce code me permet de transférer un fichier du PC vers mon Tavernier et vice-versa

Sauf erreur de ma part il respecte le protocole XMODEM-CRC

TAVERNIER piloté par l'Hyperterminal via la liaison RS232 de la carte CPU09

Envoi de fichier PC vers TAVERNIER
Lancement routine XMRCV et envoi du fichier par le menu "Transfert/Envoyer un fichier" sur Hyperterminal

Envoi de fichier TAVERNIER vers PC
Lancement routine XMSEND et reception de fichier par le menu "Transfert/Recevoir un fichier" sur Hyperterminal

Dans chaque cas le stockage du fichier sur TAVERNIER est effectué en page 2
P135-XMODEMCRC24-Listing.zip
(5.2 Kio) Téléchargé 132 fois
Cordialement
Michel
Avatar de l’utilisateur
michel guyot
Messages : 612
Inscription : 20 mars 2016 16:01
Localisation : Pyrénées orientales

Re: TAVERNIER 6809

Message par michel guyot »

Bonjour à tous,

Ci-dessous le listing des deux routines qui fonctionnent ensembles et qui me permette de :
- transférer une image .bmp de mon PC vers le TAVERNIER
- de la traiter pour l'afficher sur la carte graphique de mon TAVERNIER
P135-XMODEMCRC24-Listing.zip
(5.2 Kio) Téléchargé 123 fois
P136-STOCK15-Listing.zip
(4.77 Kio) Téléchargé 129 fois
Pour exemple

Image .bmp d'origine
Papillon - WINDOWS 256x212 -256c.jpg
Papillon - WINDOWS 256x212 -256c.jpg (12.03 Kio) Consulté 6529 fois
image obtenue sur TAVERNIER
Papillon.JPG
Papillon.JPG (1.4 Mio) Consulté 6529 fois
Avatar de l’utilisateur
6502man
Messages : 12286
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: TAVERNIER 6809

Message par 6502man »

Le résultat est magnifique :D :wink:
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
Avatar de l’utilisateur
michel guyot
Messages : 612
Inscription : 20 mars 2016 16:01
Localisation : Pyrénées orientales

Re: TAVERNIER 6809

Message par michel guyot »

Bonjour 6502man

Bonne Année à tous

Une nouvelle image transférée au TAVERNIER pour l'occasion...
Bonne Année.JPG
Bonne Année.JPG (228.05 Kio) Consulté 6416 fois
Avatar de l’utilisateur
6502man
Messages : 12286
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: TAVERNIER 6809

Message par 6502man »

Cette image donne un moins bon résultat certainement du au ton trop sombre.
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
Avatar de l’utilisateur
michel guyot
Messages : 612
Inscription : 20 mars 2016 16:01
Localisation : Pyrénées orientales

Re: TAVERNIER 6809

Message par michel guyot »

Bonjour 6502man

La composante couleur bleue pour le VM9938 est codée sur 2 bits ce qui offre seulement 4 niveaux....Pour certaines images avec des aplats le rendu est donc moins bon....

Comme je vois que les foules se passionnent pour les jeux du Comodore C64, une question me traverse l'esprit :

Serait-il envisageable de faire tourner un de ces jeux sur mon TAVERNIER équipé de la carte graphique couleur VM9938 ?
Le C64 tourne avec un processeur 6510 proche du 6502, une taille de RAM de 64Ko...

Est-ce une idée farfelue ? :?:

Michel
Avatar de l’utilisateur
michel guyot
Messages : 612
Inscription : 20 mars 2016 16:01
Localisation : Pyrénées orientales

Re: TAVERNIER 6809

Message par michel guyot »

Bonjour à tous

Une autre image...
Celle obtenue
Mandel10-Tavernier.JPG
Mandel10-Tavernier.JPG (275.48 Kio) Consulté 6358 fois

Celle d'origine
mandel10 -Windows.jpg
mandel10 -Windows.jpg (37.47 Kio) Consulté 6358 fois
JagV12
Messages : 16
Inscription : 03 déc. 2018 01:57

Re: TAVERNIER 6809

Message par JagV12 »

Farfelue ? Peut-être un peu quand même car le C64 tourne avec un processeur proche du 6502 et vous avez un 6809... :? :roll:
Alors pourquoi pas regarder du côté des Dragon, TOMO et autres Coco... :)
Avatar de l’utilisateur
michel guyot
Messages : 612
Inscription : 20 mars 2016 16:01
Localisation : Pyrénées orientales

Re: TAVERNIER 6809

Message par michel guyot »

Bonjour 6502man

je suis à la recherche d'un ou plusieurs exemples de jeux qu'il me serait possible en les adaptant, de les faire tourner sur mon TAVERNIER...
J'ai trouvé quelques infos sur le site concernant le micro ALICE basé sur le 6809 il y a quelques années, et pour lequel il devait exister des exemples
assez simples pour tenter l'exercice.
Aurais-tu gardé en mémoire des pistes qui pourraient m'aider à trouver de petits exemples....

Cordialement
Michel Guyot
Avatar de l’utilisateur
6502man
Messages : 12286
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: TAVERNIER 6809

Message par 6502man »

Bonsoir, Michel,

Sur Alice il n'y à qu'un seul jeu qui en vaille la peine c'est Crocky, sinon les autres jeux Loriciels.

Après il y à une énorme différence entre le Tavernier 6809 et l'Alice => son CPU 6803 et son VDP EF-9345 (minitel) .

Mais tu peux toujours tenter l'exercice, j'avais publié des projets abandonné pour Alice dont un jeu (avec les sources) sur le forum il me semble, mais ca date de quelques années, au pires je devrais pouvoir les retrouver dans mes archives ...
Phil.

www.6502man.com

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