[Thomson] Extension mémoire 512K pour MO5

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

Répondre
Daniel
Messages : 13391
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

[Thomson] Extension mémoire 512K pour MO5

Message par Daniel »

Parallèlement à nos essais de construction d'une extension mémoire 64K (voir https://forum.system-cfg.com/viewtopic.php?f=1&t=5171 ),
un autre amateur de MO5 a conçu une extension mémoire 512K. En enlevant les jumpers elle est compatible avec l'extension 64K.

Mo512k.jpg
Mo512k.jpg (165.83 Kio) Consulté 393 fois

Lien Github : https://github.com/6502addict/mo5-512k
Circuit imprimé : https://oshpark.com/shared_projects/e0GleW5L

La commutation des banques de 4K est toujours assurée par le registre $A7CB.
Le numéro de banque est donné par les bits 6, 5, 4, 1, 0
Les bits 2 et 3 ont le même rôle que dans l'extension 64K : Autorisation écriture et masquage de la ROM BASIC

Je prépare une nouvelle version de mon programme de test pour contrôler les 512K.
Daniel
L'obstacle augmente mon ardeur.
sebastus
Messages : 259
Inscription : 21 janv. 2019 14:36

Re: [Thomson] Extension mémoire 512K pour MO5

Message par sebastus »

Pas mal ! ,du coup on a pas le fil sur celle ci ! :wink:
Daniel
Messages : 13391
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] Extension mémoire 512K pour MO5

Message par Daniel »

Le décodage d'adresse pour sélectionner l'adresse $A7CB est effectué directement à partir du bus d'adresses, sans utiliser le signal /$A7Cx.
Le fil extérieur n'est plus nécessaire.
Daniel
L'obstacle augmente mon ardeur.
sebastus
Messages : 259
Inscription : 21 janv. 2019 14:36

Re: [Thomson] Extension mémoire 512K pour MO5

Message par sebastus »

Ca a un intérêt 512 k sur un mo5 ?
Daniel
Messages : 13391
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] Extension mémoire 512K pour MO5

Message par Daniel »

Avec l'extension 512K le MO5 devient la machine Thomson la plus puissante : 560K de RAM contre 512K pour le TO9+
Cette extension permet de développer des jeux et des démonstrations beaucoup plus riches.
D'ores et déjà elle peut être utilisée pour faire tourner la version d'OS/9 portée sur MO5 par jb_jb_fr.
Daniel
L'obstacle augmente mon ardeur.
sebastus
Messages : 259
Inscription : 21 janv. 2019 14:36

Re: [Thomson] Extension mémoire 512K pour MO5

Message par sebastus »

Rien que ça ! ,hum ça se laisse tenter quand mème du coup ! ,on pourrait faire pareil sur to8 ? Genre 1 MO ?
Daniel
Messages : 13391
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] Extension mémoire 512K pour MO5

Message par Daniel »

Tout est possible, mais ça ne sert à rien si personne ne l'exploite.
Avec SDTREAM on peut déjà mettre 32 Go de mémoire séquentielle sur MO5.
C'est 64 000 000 fois plus que le TO9+, mais les utilisateurs sont encore peu nombreux.
Daniel
L'obstacle augmente mon ardeur.
sebastus
Messages : 259
Inscription : 21 janv. 2019 14:36

Re: [Thomson] Extension mémoire 512K pour MO5

Message par sebastus »

C'est pour ça que je disais pour l'utilisateur lambda ça n'a pas un grand intérêt même 512 ko. Peut-être que des développeurs vont nous sortir un jeux type "mission lift off" pour MO5 !
:D :D :D :mrgreen:
__sam__
Messages : 5595
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [Thomson] Extension mémoire 512K pour MO5

Message par __sam__ »

Oh tu sais la ram fait pas tout. Les modes graphiques manquants, la palette absente, l'absence de DAC font que c'est très difficile, mais va savoir ce que l'avenir nous réserve...
Image
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 : 13391
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] Extension mémoire 512K pour MO5

Message par Daniel »

Mon MO5 n'en croit pas ses oreilles !

Il est vrai que l'image est moins précise que sur TO8.
Par contre il y a un son d'enfer et la synthèse vocale à la fin.
Ça ne tiendra pas dans 512K de RAM, il faudra concevoir une extension mémoire de 4Mo...

Chaque nouvelle démo de __sam__ est une bonne surprise 8)
Daniel
L'obstacle augmente mon ardeur.
__sam__
Messages : 5595
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [Thomson] Extension mémoire 512K pour MO5

Message par __sam__ »

Cela dit, vouloir utiliser un logiciel utilisant les 512ko de ram sur un MO5 c'est se montrer patient. En effet cela représente 4 millions de bits environ, or le lecteur de cassette (réel ou simulée par SDLep) charge à la louche 1100 bits utiles/secondes (on simplifie les bits de start/stop/checksum tout ca). Il faudra donc pas loin de 3600 secondes, soit 1h pour charger toute la ram depuis le lecteur de masse standard du MO5.

Je disais patient, très patient, mais surtout très téméraire celui qui espère dérouler une face de cassette 120mins non-stop sans rencontrer d'I/O error....et tout ca pour jouer à peine 50 secondes de son mono à 10khz :? Autant utiliser la cassette pour metre dessus 120mins de bonne musique hifi et stéréo. :roll:
Dernière modification par __sam__ le 15 janv. 2021 08:14, 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
Brochiman
Messages : 591
Inscription : 02 juin 2019 11:26

Re: [Thomson] Extension mémoire 512K pour MO5

Message par Brochiman »

mais on est patient depuis notre enfance vu qu'on avait des TO7/70 a cassette à la maison, tu mettais un jeu a chargé et tu avais le temps d'aller te doucher et t'habiller et quand tu revenais voir au bout de 30 mins pensant jouer du joystick tu avais un joli LOAD ERROR 🤣🤣🤣🤣 et te voilà repartit pour 30 mins
Daniel
Messages : 13391
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] Extension mémoire 512K pour MO5

Message par Daniel »

Pour tester l'extension mémoire 512K j'ai fait un nouveau programme.
Il peut aussi tester l'extension 64K, le choix 64K/512K est possible avant de lancer le test.
http://dcmoto.free.fr/programmes/test51 ... index.html

01.png
01.png (580 octets) Consulté 176 fois
test512k_mo5.jpg
test512k_mo5.jpg (166.87 Kio) Consulté 176 fois

Code : Tout sélectionner

 SETLI 132
;**************************************************;
;           T E S T 5 1 2 K - M O 5                ; 
;           (c) 2021 - Daniel Coulom               ;  
;           http://dcmoto.free.fr/                 ;
;--------------------------------------------------;
; Ce code est distribue gratuitement dans l'espoir ;
; qu'il sera utile, mais sans aucune  garantie  et ;
; sans  engager  la  responsabilité  de  l'auteur. ;
; Vous  pouvez  l' utiliser,  le  modifier  et  le ;
; diffuser librement, en conservant cette  licence ;
; et les références de l'auteur dans   toutes  les ;
; copies. L'exploitation commerciale est interdite.;
;**************************************************;

; Ce programme teste l'extension memoire du MO5.
; La taille (64K ou 512K) peut être choisie.
; 1) Tester tous les bits (valeurs 0 et 1)
; 2) Ecrire des sequences de 255 octets différents 
; 3) Verifier que les memes sequences sont relues 

;**************************************************;
;                Version 2021.01.15                ;
;**************************************************;
; Historique
; 2021.01.15 Correction anomalie affichage $A7CB
; 2021.01.14 Selection de 64K ou 512K
; 2021.01.13 Premiere version operationnelle

;---------------------------------
;Initialisations
;---------------------------------
  ORG   $9000
  PSHS  U,Y,X,DP,B,A,CC  ; empilage des registres                  
  ORCC  #$50           ; desactive les interruptions 
  CLRA                 ; A=0 (64K)
  STA   OPTION         ; option 64K par defaut

;---------------------------------
;Selection de 64K ou 512K
;---------------------------------
SEL
  LDY    #TITRE        ; message de titre
  LBSR   WSTR          ; affichage message
  LDY    #T64K         ; message extension 64K
SEL1
  SWI                  ; appel fonction
  FCB    $0A           ; lecture clavier
  CMPB   #$30          ; test'0'
  BEQ    TESTB0        ; selection 64K 
  CMPB   #$31          ; test'1'
  BNE    SEL1          ; recommencer
  LDA    #$01          ; A=1 (512K)
  STA    OPTION        ; option 512K
  LDY    #T512K        ; message extension 512K

;---------------------------------
;Test de chaque bit
;---------------------------------
TESTB0
  LBSR   WSTR          ; affichage message
  LDY    #TESTB        ; message "Test des bits"
  LBSR   WSTR          ; affichage message
  LDA    #$0C          ; initialisation A 
TESTB1
  LDY    #POINT        ; point
  LBSR   WSTR          ; affichage message
  STA    $A7CB         ; selection de la banque
  BSR    TBITS         ; test des bits de la banque
  BNE    ERBITS        ; erreur detectee
  INCA                 ; banque suivante
  BITA   #$0F          ; test des quatre bits de poids faible
  BNE    TESTB1        ; passage a la banque suivante
  TST    OPTION        ; test de l'option 64K/512K
  BEQ    TESTB2        ; arret du test pour 64K
  ORA    #$0C          ; restauration des bits 2 et 3 
  BPL    TESTB1        ; passage a la banque suivante
TESTB2
  LDY    #NOERR        ; message "Aucune erreur"
  LBSR   WSTR          ; affichage message
  BRA    TESTA0        ; test des adresses

;---------------------------------
;Erreur detectee sur les bits
;---------------------------------
ERBITS
  LDY    #ERR1         ; message "Erreur sur les bits"
  LBSR   WSTR          ; affichage message
  BRA    RETOUR        ; abandon du programme
  
;---------------------------------------
;Test des bits d'une banque memoire
;---------------------------------------
TBITS
  LDX    #$B000        ; adresse de debut de la banque
  LDB    #$55          ; valeur a ecrire en RAM
TBIT1
  COMB                 ; inversion des bits
  STB    ,X            ; ecriture
  CMPB   ,X            ; lecture
  BNE    TBIT2         ; valeur lue incorrecte
  COMB                 ; inversion des bits
  STB    ,X            ; ecriture
  CMPB   ,X            ; lecture
  BNE    TBIT2         ; valeur lue incorrecte
  CMPX   #$EFFF        ; adresse de fin de la banque
  BEQ    TBIT2         ; fin du controle
  LEAX   1,X           ; adresse suivante
  BRA    TBIT1         ; controle adresse suivante
TBIT2
  RTS       

;---------------------------------
;Test de toutes les adresses
;---------------------------------
TESTA0
  LDD    #$0C00        ; initialisation A et B 
  LDY    #WSEQU        ; message "Ecriture sequence"
  BSR    WSTR          ; affichage message
TESTA1
  LDY    #POINT        ; point
  BSR    WSTR          ; affichage message
  STA    $A7CB         ; selection de la banque
  BSR    WRITE         ; ecriture des sequences dans la banque
  INCA                 ; banque suivante
  BITA   #$0F          ; test des quatre bits de poids faible
  BNE    TESTA1        ; passage a la banque suivante
  TST    OPTION        ; test de l'option 64K/512K
  BEQ    TESTA2        ; arret du test pour 64K
  ORA    #$0C          ; restauration des bits 2 et 3 
  BPL    TESTA1        ; passage a la banque suivante
TESTA2
  LDD    #$0C00        ; initialisation A et B 
  LDY    #RSEQU        ; message "Lecture sequence"
  BSR    WSTR          ; affichage message
TESTA3
  LDY    #POINT        ; point
  BSR    WSTR          ; affichage message
  STA    $A7CB         ; selection de la banque
  BSR    CTRL          ; controle des sequences dans la banque
  BNE    ERADD         ; erreur detectee
  INCA                 ; banque suivante
  BITA   #$0F          ; test des quatre bits de poids faible
  BNE    TESTA3        ; passage a la banque suivante
  TST    OPTION        ; test de l'option 64K/512K
  BEQ    TESTA4        ; arret du test pour 64K
  ORA    #$0C          ; restauration des bits 2 et 3 
  BPL    TESTA3        ; passage a la banque suivante
  LDA    #$80          ; pour obtenir $7F apres DECA     
TESTA4
  DECA                 ; derniere valeur $A7CB
  LDY    #NOERR        ; message "Aucune erreur"
  BSR    WSTR          ; affichage message
  BRA    RETOUR        ; retour         

;---------------------------------
;Erreur adresses
;---------------------------------
ERADD
  LDY    #ERR2         ; message "Erreur adresses"
  BSR    WSTR          ; affichage message

;---------------------------------
;Retour au BASIC
;---------------------------------
RETOUR 
  PSHS   A             ; sauvegarde valeur $A7CB
  LDY    #ADDRESS      ; message "Adresse: "
  BSR    WSTR          ; affichage message
  BSR    HEXVX         ; affichage valeur hexa de X
  LDY    #BANK         ; message "  $A7CB= "
  BSR    WSTR          ; affichage message
  PULS   A             ; valeur de $A7CB  
  BSR    HEXVA         ; affichage valeur hexa de A
  LDY    #FINTEST      ; message "Fin du test"
  BSR    WSTR          ; affichage message
  CLR    $A7CB         ; selection rom Basic
  PULS   CC,A,B,DP,X,Y,U,PC ; retour

;------------------------------------------------------
; AFFICHAGE CHAINE TERMINEE PAR ZERO (Adresse dans Y)
;------------------------------------------------------
WSTR
  PSHS  X,B,A          ; sauvegarde registres
WSTR1  
  LDB   ,Y+            ; caractere a ecrire
  BEQ   WSTR9          ; fin de la chainee
  SWI                  ; appel fonction
  FCB   $02            ; $02 = envoi caractere
  BRA   WSTR1          ; caractere suivant
WSTR9
  PULS  A,B,X,PC       ; retour

;-----------------------------------------------
;Ecriture des sequences dans une banque memoire
;-----------------------------------------------
WRITE
  LDX    #$B000        ; adresse de debut de la banque
WRITE1
  INCB                 ; valeur suivante de $01 a $FE 
  CMPB   #$FF          ; fin de sequence
  BNE    WRITE2        ; ecrire la valeur
  CLRB                 ; recommencer a zero
WRITE2
  STB    ,X+           ; ecriture
  CMPX   #$F000        ; adresse de fin de la banque
  BNE    WRITE1        ; ecriture adresse suivante
WRITE3
  RTS

;-----------------------------------------------
;Controle des sequences dans une banque memoire
;-----------------------------------------------
CTRL
  LDX    #$B000        ; adresse de debut de la banque
CTRL1
  INCB                 ; valeur suivante de $01 a $FE 
  CMPB   #$FF          ; fin de sequence
  BNE    CTRL2         ; controler la valeur
  CLRB                 ; recommencer a zero
CTRL2
  CMPB   ,X            ; comparaison
  BNE    CTRL3         ; valeur lue incorrecte
  CMPX   #$EFFF        ; adresse de fin de la banque
  BEQ    CTRL3         ; controle adresse suivante
  LEAX   1,X           ; adresse suivante
  BRA    CTRL1         ; controle adresse suivante
CTRL3
  RTS       

;------------------------------------------------------
; Affichage valeur hexadecimale
;------------------------------------------------------
DISPLAYHEXA
  LDY   #HEXA          ; valeur hexa
  BSR    WSTR          ; affichage valeur hexa
  RTS                  ; retour

;------------------------------------------------------
; CALCUL VALEUR HEXADECIMALE DE X
;------------------------------------------------------
HEXVX
  TFR   X,D            ; transfert dans D   
  LSRA                 ; decalage droite
  LSRA                 ; decalage droite
  LSRA                 ; decalage droite
  LSRA                 ; decalage droite
  BSR   HCAR           ; calcul caractere
  STA   HEXA+1         ; stockage premier caractere
  LSRB                 ; decalage droite
  LSRB                 ; decalage droite
  LSRB                 ; decalage droite
  LSRB                 ; decalage droite
  TFR   B,A            ; transfert dans A
  BSR   HCAR           ; calcul caractere
  STA   HEXA+3         ; stockage troisieme caractere
  TFR   X,D            ; transfert dans D   
  ANDA  #$0F           ; isole 4 bits poids faible   
  ANDB  #$0F           ; isole 4 bits poids faible   
  BSR   HCAR           ; calcul caractere
  STA   HEXA+2         ; stockage deuxieme caractere
  TFR   B,A            ; transfert dans A
  BSR   HCAR           ; calcul caractere
  STA   HEXA+4         ; stockage quatrieme caractere
  BRA   DISPLAYHEXA    ; affichage de la valeur hexadecimale

;------------------------------------------------------
; CALCUL VALEUR HEXADECIMALE DE A
;------------------------------------------------------
HEXVA
  PSHS  A              ; sauvegarde de A              
  LSRA                 ; decalage droite
  LSRA                 ; decalage droite
  LSRA                 ; decalage droite
  LSRA                 ; decalage droite
  BSR   HCAR           ; calcul caractere
  STA   HEXA+1         ; stockage premier caractere
  PULS  A              ; restauration de A
  ANDA  #$0F           ; isole 4 bits poids faible   
  BSR   HCAR           ; calcul caractere
  STA   HEXA+2         ; stockage deuxieme caractere
  LDA   #$20           ; espace
  STA   HEXA+3         ; stockage troisieme caractere
  STA   HEXA+4         ; stockage quatrieme caractere
  BRA   DISPLAYHEXA    ; affichage de la valeur hexadecimale

;------------------------------------------------------
; CALCUL CARACTERE HEXADECIMAL (A)
;------------------------------------------------------
HCAR
  CMPA  #$0A           ; test lettre
  BLT   HCAR1          ; chiffre
  ADDA  #$07           ; ajout de 7 pour les lettres
HCAR1
  ADDA  #$30           ; ajout de $30 pour valeur ASCII
  RTS                  ; retour
          
;------------------------------------------------------
; Messages a afficher
;------------------------------------------------------
TITRE
  FCB   $0C            ; effacement ecran   
  FCB   $1B,$20,$40    ; couleur noir
  FCB   $1B,$20,$57    ; fond blanc
  FCB   $1B,$67        ; bordure blanche
  FCC   " -------------------------------"
  FCB   $0D,$0A
  FCC   "| Test extension memoire du MO5 |"
  FCB   $0D,$0A
  FCC   " -------------------------------"
  FCB   $0D,$0A,$0A
  FCC   "Tapez 0 (64K) ou 1 (512K)"
  FCB   $00
T64K
  FCB   $0D
  FCC   "Test de l'extension 64K  "
  FCB   $00
T512K
  FCB   $0D
  FCC   "Test de l'extension 512K "
  FCB   $00
TESTB
  FCB   $0D,$0A,$0A
  FCC   "1) Test de chaque bit (0 et 1)"
  FCB   $0D,$0A,$00
WSEQU
  FCB   $0D,$0A,$0A
  FCC   "2) Ecriture sequence pour test adresses"
  FCB   $0D,$0A,$00
RSEQU
  FCB   $0D,$0A,$0A,$0A
  FCC   "3) Verification de la sequence ecrite"
  FCB   $0D,$0A,$00
ERR1  
  FCB   $0D,$0A,$0A
  FCC   "ERREUR DETECTEE SUR LES BITS"
  FCB   $0D,$0A,$00
ERR2  
  FCB   $0D,$0A
  FCC   "ERREUR DETECTEE SUR LES ADRESSES"
  FCB   $0D,$0A,$00
NOERR  
  FCB   $0D,$0A
  FCC   "AUCUNE ERREUR DETECTEE"
  FCB   $0D,$0A,$00
FINTEST  
  FCB   $0D,$0A,$0A
  FCC   "Fin du test"
  FCB   $0D,$0A,$0A,$00
ADDRESS
  FCC   "Adresse="
  FCB   $00
BANK
  FCC   " - $A7CB="
  FCB   $00
HEXA
  FCB   $24,$30,$30,$30,$30,$00
POINT
  FCB   $2E,$00  
OPTION
  FCB   $00
Daniel
L'obstacle augmente mon ardeur.
Daniel
Messages : 13391
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] Extension mémoire 512K pour MO5

Message par Daniel »

sebastus a écrit : 14 janv. 2021 16:15 C'est pour ça que je disais pour l'utilisateur lambda ça n'a pas un grand intérêt même 512 ko.
Les 512K sont un bonus. Cette extension mémoire peut être utilisée uniquement en 64K, et alors elle remplace celle du nanoréseau.
Elle est aussi utilisable pour simuler toutes les cartouches MEMO5, ce qui évite d'avoir 20 cartouches différentes et de programmer leurs EPROMS.

01.png
01.png (2.06 Kio) Consulté 167 fois
Daniel
L'obstacle augmente mon ardeur.
Répondre