[Thomson] SDDRIVE

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

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

Re: [Thomson] SDDRIVE

Message par Daniel »

SDDRIVE simule un contrôleur de disquette Thomson. Les disquettes sont remplacées par des fichiers .sd
SDDRIVE ne simule ni les cartouches MEMO7, ni les cassettes. Par contre on peut convertir sur disquette les logiciels sur cartouche ou sur cassette, il y a un sujet dédié dans le forum : viewtopic.php?f=25&t=6920

Pour la simulation des cassettes, il y a un autre projet, SDLEP-READER TFT : http://dcmoto.free.fr/bricolage/sdlep-tft/index.html

Pour remplacer les cartouches MEMO7 il y a plusieurs projets différents :
- La MEMO7 de 6502man : viewtopic.php?f=10&t=7086
- Ma MEMO7 universelle : viewtopic.php?f=18&t=12766
- La MEGAROM T.2 : viewtopic.php?f=25&t=9508
Daniel
L'obstacle augmente mon ardeur.
Daniel
Messages : 17286
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] SDDRIVE

Message par Daniel »

Nouvelle version du programme de sélection du fichier .sd (sddrive.sel)
Nouveautés de la version 2022.04.06
- Les fichiers dont l'extension n'est pas .sd ne sont plus affichés.
- La touche STOP permet de sortir du programme sans sélectionner un fichier.

Cette version de sddrive.sel peut être utilisée avec toutes les versions
récentes du contrôleur SDDRIVE, à partir de 2019.
sddrive.sel_20220406.png
sddrive.sel_20220406.png (9.43 Kio) Consulté 2192 fois

Disponible à la page officielle de sddrive : http://dcmoto.free.fr/bricolage/sddrive/index.html
Daniel
L'obstacle augmente mon ardeur.
__sam__
Messages : 7909
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [Thomson] SDDRIVE

Message par __sam__ »

Le nom sur la capture me dit quelque-chose....
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 : 17286
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] SDDRIVE

Message par Daniel »

Et la mention tout en bas à gauche de l'image doit te surprendre :wink:
Daniel
L'obstacle augmente mon ardeur.
__sam__
Messages : 7909
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [Thomson] SDDRIVE

Message par __sam__ »

Ah oui en effet ;) J'imagine que c'est ta machine de test privilégiée.
Dernière modification par __sam__ le 06 avr. 2022 21:15, 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
Bernouilli92
Messages : 1245
Inscription : 24 déc. 2021 09:46
Localisation : Région parisienne

Re: [Thomson] SDDRIVE

Message par Bernouilli92 »

Merci pour cette nouvelle version.
Sur la page de Sddrive. Il manque la dernière version là où c'est écrit :
Version officielle actuelle : sddrive_20211122.zip
Daniel
Messages : 17286
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] SDDRIVE

Message par Daniel »

La dernière version de l'EPROM du contrôleur SDDRIVE, sddrive_rom.bin, est bien 20211112, il n'y en a pas de plus récente.
La mise à jour d'aujourd'hui concerne uniquement le programme de sélection sddrive.sel, à copier sur la carte SD.
Dans la page officielle de SDDRIVE, ce nouveau programme sddrive.sel est quelques lignes plus bas :
Le programme sddrive.sel a été amélioré le 06/04/2022 : sddrive.sel_20220406

Il est compatible avec la version 20211112 du contrôleur, mais aussi avec les précédentes jusqu'en 2019. Je ne les ai pas toutes testées, mais il suffit d'essayer, et s'il y a une incompatibilité revenir à la version qui fonctionnait.

Si ça intéresse quelqu'un voici le programme source :

Code : Tout sélectionner

 PRAGMA 6809,operandsizewarning
 OPT c
;**************************************************;
;             S D D R I V E _ S E L                ; 
;           (c) 2022 - Daniel Coulom               ;  
;           http://dcmoto.free.fr/                 ;
;           http://forum.system-cfg.com/           ;
;--------------------------------------------------;
; 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 permet de selectionner un fichier .sd 
; dans une liste deroulante et de monter l'image.
; Cette version est compatible avec les cartes SD
; et SDHC sur MO et sur TO
; Restrictions :
; - 364 fichiers maxi dans le repertoire principal
; - En FAT32 limitation supplementaire en fonction
;   de la taille de l'unite d'allocation et de la
;   taille des noms longs :
;   4096 = environ 32 fichiers de 39 caracteres  
;   8192 = environ 64 fichiers de 39 caracteres
;   16Ko = environ 128 fichiers de 39 caracteres
;   32Ko = environ 256 fichiers de 39 caracteres
;
; Occupation memoire :
; - programme en $9000-$9CFF
; - buffer lecture secteur en $9D00-$9EFF
; - pile systeme deplacee en $9F00-$9FFF 
; - table des noms en $5000-$8FFF (MO)
;                  ou $A000-$DFFF (TO)
; Pour appeler le programme SDDRIVE_SEL en BASIC
; faire CLEAR,&H4FFF (MO) ou CLEAR,&H8FFF (TO)
;
; Nota :
; La pile systeme est deplacee en $9CFF pour eviter 
; que la routine d'affichage d'un caractere (WCHAR) 
; ecrase la zone de travail du controleur SDDRIVE
; (SD_CMD et SD_LBA)    
    
;**************************************************;
;                Version 2022.04.06                ;
;**************************************************;
; Historique
; 2022.04.06 Correction d'erreurs d'affichage mineures
; 2022.04.05 Touche STOP pour sortir sans selection
; 2022.04.05 Message si aucun fichier .sd dans la carte
; 2022.04.05 Au retour selection video couleur si MO
; 2022.04.05 Les fichiers .sd sont les seuls affiches
; 2021.11.22 retablissement couleur bleu/cyan au retour
; 2021.11.21 copie de SD_LB0 et SD_SEL en pile systeme
; 2021.11.12 $55 ajoute a SD_SEL si selection OK
; 2021.11.08 Test SD_SEL: BMI remplace BNE
; 2021.07.16 Optimisation d'un branchement long
; 2021.06.13 Utilise l'adresse LBA de SDDRIVE
; 2021.06.12 Suppression des messages d'aide
; 2021.06.12 Zones de travail en $20D5/$60D5 (abandonne)
; 2020.09.18 Corrige bug fleche droite en fin de table
; 2019.06.04 Initialisation banque TO7/70 en BASIC 128
; 2019.05.21 Utilisation des quatre fleches + ENTREE
; 2019.02.12 Adresse du buffer dans Y pour RS512
; 2018.11.09 Annulation de la modification 2018.11.08
; 2018.11.08 LBA et type carte stockes dans secteur 1
; 2018.07.02 Deplacement SD_TYP, SD_LB0, SD_LBA
; 2018.05.24 Selection video couleur MO avant retour
; 2018.01.04 $HE02E/$HA02E devient $HE025/$HA025
; 2017.12.18 Effacement ecran apres selection
; 2017.12.17 Test TO/MO par la valeur en $FFF2
; 2017.12.15 Affichage de messages d'aide MO et TO
; 2017.12.14 Deplacement de la pile systeme en $9CFF
; 2017.12.14 Deplacement table des noms MO en $5000 
; 2017.12.14 Deplacement buffer de lecture en $9D00 
; 2017.12.10 Deplacement de la pile systeme en $9FFF
; 2017.12.08 Version initiale issue de SDSEL

;------------------------------------------------------
; DEFINITION DES ZONES DE TRAVAIL EN RAM
;------------------------------------------------------
SD_LB0  EQU $51        ; adresse du LBA du fichier .sd 
SD_SEL  EQU $57        ; type de carte SD=0x00 SDHC=0x80
SAVLB0  EQU $95        ; copie de SD_LB0 en pile systeme
SAVSEL  EQU $99        ; copie de SD_SEL en pile systeme

;------------------------------------------------------
; INITIALISATIONS EN FONCTION DE L'ORDINATEUR
; Lors de l'appel du programme la commande CMD17 vient
; d'être executee. Le regitre U pointe juste apres le
; code retour. Le LBA est six octets avant.
;------------------------------------------------------
  ORG   $9000 
INIT
  STS   SAVES          ; sauvegarde du registre S
  LDS   #$9CFF         ; nouvelle valeur du registre S            
  LEAU  -6,U           ; adresse du LBA pour CMD17
  STU   SD_LBA         ; stocke l'adresse du LBA
  ORCC  #$50           ; desactive les interruptions 
  LDA   #$60           ; valeur initialisation DP pour TO
  LDB   >$FFF2         ; poids fort du vecteur SWI3
  BPL   INIT0          ; positif --> TO 

;------------------------------------------------------
; Initialisations speciales pour MO
;------------------------------------------------------
  LDD   #$A02B         ; adresse fonction RS512
  STD   RS512          ; stockage adresse
  LDD   #$5000         ; adresse de la table des noms
  STD   TDEB           ; adresse debut de table
  STD   TFIN           ; adresse fin de table
  STD   TTOP           ; adresse nom en haut de l'ecran
  STD   TSEL           ; adresse nom selectionne
  LDD   #$9000         ; adresse table des noms + $4000
  STD   TMAX           ; adresse haute de la table des noms
  LDD   #$3F82         ; affichage caractere MO = SWI #$82
  STD   WCHAR          ; modification routine affichage
  LDB   #$8A           ; lecture clavier MO = SWI #$8A
  STD   RCHAR          ; modification routine lecture
  LDB   #$7B           ; code inversion video pour MO
  STB   INVER1+1       ; modification code inversion video
  LDA   #$20           ; valeur initialisation DP pour MO
  BRA   INIT1          ; initialisation de l'ecran 

;------------------------------------------------------
; Initialisation banque memoire TO7/70 en BASIC 128
;------------------------------------------------------
INIT0
  LDB   #$38           ; caractere 8
  CMPB  >$0009         ; test du 8 de BASIC 128
  BNE   INIT1          ; ce n'est pas le BASIC 128 
  LDB   $E7CB          ; charger DDRB
  ANDB  #$FB           ; RAZ bit 2
  STB   $E7CB          ; modifier DDRB
  LDB   #$0F           ; valeur pour premiere banque RAM
  STB   $E7C9          ; stocker dans PORTB 
  LDB   $E7CB          ; charger DDRB
  ORB   #$04           ; positionner bit 2
  STB   $E7CB          ; modifier DDRB
  
;------------------------------------------------------
; Initialisation de l'ecran
;------------------------------------------------------
INIT1
  TFR   A,DP           ; DP = $20(MO) ou $60(TO)
  SUBA  #$20           ; adresse ecran poids fort
  CLRB                 ; adresse ecran poids faible   
  TFR   D,X            ; debut ecran
  ADDD  #$0500         ; taille du logo
  PSHS  B,A            ; empilage adresse fin logo
  LDY   #ECRAN         ; adresse chaine initialisation ecran
  LBSR  WSTR           ; affichage d'une chaine 

;------------------------------------------------------
; Affichage du logo SDDRIVE
;------------------------------------------------------
LOGO
  LDY   #SDLOGO        ; index donnees
LOGO1
  LDB   #$01           ; nombre octets identiques 
  LDA   ,Y+            ; lecture octet donnee
  BEQ   LOGO9          ; fin des donnees
  CMPA  #$20           ; nombre maxi repetitions
  BHI   LOGO2          ; ce n'est pas une repetition  
  TFR   A,B            ; nombre de repetitions
  LDA   ,Y+            ; lecture octet donnee
LOGO2
  ADDA  #$41           ; ajouter 65
LOGO3
  STA   ,X             ; afficher l'octet donnee
  LEAX  $28,X          ; passage ligne suivante  
  CMPX  ,S             ; fin du logo dans l'ecran
  BLO   LOGO4          ; fin non encore atteinte
  LEAX  -$4FF,X        ; debut colonne suivante
LOGO4  
  DECB                 ; decrementation compteur
  BNE   LOGO3          ; nouvelle repetition
  BRA   LOGO1          ; sequence suivante
LOGO9
  PULS  A,B            ; depilage D 
  
;------------------------------------------------------
; LECTURE DU PREMIER SECTEUR DE LA CARTE (MBR ou BOOT)
; Table des partitions en $1BE-$1FD
; Premiere partition en $1BE-$1CD
; - $1BE = Boot Indicator ($00=inactif, $80=actif)
; - $1BF-$1C1 = Starting CHS values
; - $1C2 = Partition type descriptor
;          04: FAT16 size less than 32 MB
;          06: FAT16 size greater or equal 32 MB
;          0B: FAT32
; - $1C3-$1C5 = Ending CHS values
; - $1C6-$1C9 = Starting sector
; - $1CA-$1CD = Partition size in sectors
; Signature en $1FE-$1FF = $55AA
;------------------------------------------------------
  LBSR  LINIT          ; raz ligne 
  LDU   SD_LBA         ; adresse du LBA
  LDD   #$0000         ; numero du secteur a lire
  STD   ,U             ; adresse physique (poids fort)
  STD   2,U            ; adresse physique (poids faible)
  LDY   >BUFFER        ; adresse du buffer
  JSR   [RS512]        ; lecture secteur 512 octets
  LDX   >BUFFER        ; adresse du buffer
  LDD   #$55AA         ; Signature secteur
  CMPD  $1FE,X         ; Test signature
  LBNE  ERROR          ; Signature incorrecte
; astuce pour differencier un MBR d'un Boot Sector
; le MBR a toujours $80 ou $00 en $1BE (pas certain)   
  LSL   $1BE,X         ; Boot indicator 
  BNE   ABOOT1         ; Pas de MBR, donc boot record
; seule la premiere partition est exploree,
; son numero de secteur doit tenir dans deux octets
  LDA   $1C7,X         ; LBA partition pds fort    
  LDB   $1C6,X         ; LBA partition pds faible  
  STD   PSECT          ; stockage secteur debut partition
  
;------------------------------------------------------
; Lecture du Boot Record
; Premier secteur au debut de la partition
; Registre D = numero secteur de debut de partition
;------------------------------------------------------
RBOOT
  LDU   SD_LBA         ; adresse du LBA
  STD   2,U            ; stockage pour CMD17 si carte SDHC
  TST   <SD_SEL        ; test du type de carte
  BMI   RBOOT1         ; carte SDHC, sinon calcul pour SD
  ASLB                 ; multiplie par 2 (poids faible)  
  ROLA                 ; multiplie par 2 (poids fort)
  STD   1,U            ; adresse = numero secteur * $200  
  CLRB                 ; raz registre A
  STB   3,U            ; raz dernier octet adresse
RBOOT1 
  LDY   >BUFFER        ; adresse du buffer
  JSR   [RS512]        ; lecture du secteur de 512 octets

;------------------------------------------------------
; Analyse du Boot Sector
; $1FE-$1FF: $55AA (signature)
; $00B-$00C: nombre d'octets par secteur (512)
; $00D: nombre de secteurs par cluster
; $00E-$00F: nombre de secteurs reserves
; $010: nombre de FATs
; $011-$012: nombre entrees directory (FAT16 seulement)
; $016-$017: nombre secteurs FAT (FAT16 seulement)
; $024-$027: nombre secteurs FAT (FAT32 seulement)
; $02C-$02D: numero cluster directory (FAT32)
; Attention: le debut des donnees commence au cluster 2
; - En FAT16: apres la directory
; - En FAT32: apres les FATs
; Pour faciliter les calculs, on retranche 2 fois le
; nombre de secteurs par cluster au debut des donnees.
; 
; Calcul du secteur physique du repertoire principal
; = numero du secteur de debut de partition
; + nombre de secteurs reserves
; + nombre de secteurs FAT * nombre de FAT
;
; Calcul du secteur physique du cluster zero
; = numero du secteur du debut du repertoire principal
; + nombre d'entrees repertoire / 16 (0 en FAT32)
; - nombre de secteurs par cluster * 2
;
;------------------------------------------------------
ABOOT
  LDX   >BUFFER        ; adresse du buffer
  LDD   #$55AA         ; Signature secteur
  CMPD  $1FE,X         ; Test signature
  LBNE  ERROR          ; Signature incorrecte
ABOOT1
  CLRA                
  LDB   $0D,X          ; Nombre de secteurs par cluster
  STD   CSIZ2          ; Stockage nbre secteurs par cluster
  LDA   $0F,X          ; Blocs reserves pds fort   ex: $00
  LDB   $0E,X          ; Blocs reserves pds faible ex: $04
  STD   RSECT          ; stockage nbre secteurs reserves
; taille FAT (en FAT16) dans D  
  LDA   $17,X          ; Fat16 size pds fort       ex: $00
  LDB   $16,X          ; Fat16 size pds faible     ex: $F2
  STD   $16,X          ; stockage taille FAT16
  BNE   ABOOT2         ; FAT16 si different de zero  
; taille FAT (en FAT32) dans D  
; 2 octets poids fort ignores (simplification abusive ?)
  LDA   $25,X          ; Fat32 size pds fort       ex: $03
  LDB   $24,X          ; Fat32 size pds faible     ex: $AB
; taille totale fonction du nombre de FATs
ABOOT2
  DEC   $10,X          ; Nombre de FAT             ex: $02
  BEQ   ABOOT3         ; Une seule FAT
  ASLB                 ; FAT size multiplie par 2  ex: $E4 
  ROLA                 ; FAT size multiplie par 2  ex: $01
; Le registre D contient le nombre de secteurs des FATs
; Les calculs suivants sont faux si le premier numero de
; secteur des donnees ne tient pas dans deux octets 
ABOOT3   
  ADDD  RSECT          ; ajout nombre de secteurs reserves
  ADDD  PSECT          ; ajout secteur de debut de partition
  STD   DSECT          ; stockage secteur debut repertoire
  LDA   $12,X          ; nbre entrees repertoire (poids fort)
  LDB   $11,X          ; nbre entrees repertoire (poids faible)
  LSRA                 ; division par 16
  RORB                 ; pour obtenir
  LSRA                 ; le nombre de secteurs
  RORB                 ; du repertoire
  LSRA                 ; En FAT32 le nombre d'entrees  
  RORB                 ; du repertoire est nul
  LSRA                 ; Le debut des donnees (cluster 2)
  RORB                 ; commence apres les FATs 
  ADDD  DSECT          ; ajout secteur debut directory
  SUBD  CSIZ2          ; retrancher le nbre secteurs/cluster 
  SUBD  CSIZ2          ; retrancher le nbre secteurs/cluster 
  STD   FSECT          ; stockage numero secteur du cluster 0
  LDD   DSECT          ; secteur de debut du repertoire

;------------------------------------------------------
; LECTURE D'UN SECTEUR DU REPERTOIRE
; D contient le numero du secteur a lire
;------------------------------------------------------
RDSECT
  LDU   SD_LBA         ; adresse du LBA
  STD   2,U            ; stockage pour la commande 17
  TST   <SD_SEL        ; type de carte 0=SD 1=SDHC
  BMI   RDSEC1         ; carte SDHC
  ASLB                 ; LBA multiplie par 2 
  ROLA                 ; LBA multiplie par 2
  STD   1,U            ; LBA multiplie par $100
  CLRB
  STB   3,U            ; octet de poids faible a zero
RDSEC1
  LDY   >BUFFER        ; adresse du buffer
  JSR   [RS512]        ; Lecture du secteur 
  LDX   >BUFFER        ; Adresse du buffer

;------------------------------------------------------
; LECTURE DES ENTREES D'UN SECTEUR DU REPERTOIRE
; Le registre X pointe sur l'entree en cours 
;------------------------------------------------------

; analyse d'une entree du repertoire
RDIR1  
  LDB   ,X             ; lecture premier octet
  BEQ   AFFIC          ; $00 = fin de repertoire
  CMPB  #$E5           ; $E5 = entree annulee
  BEQ   RDIR9          ; entree suivante
  LDB   11,X           ; lecture attribut
  ANDB  #$0F           ; selection demi-octet droit 
  CMPB  #$0F           ; attribut #$0F ?
  BNE   RDIR2          ; entree pour nom court
  LBSR  LNAME          ; entree pour nom long
  BRA   RDIR9          ; entree suivante       

; traitement d'un nom court
RDIR2
  CLR   EXTSD          ; raz flag extension .sd 
  LDA   8,X            ; 1er caractere extension
  ANDA  #$DF           ; passage en majuscules
  CMPA  #$53           ; test 'S' de SD           
  BNE   RDIR3          ; ce n'est pas un fichier .sd
  LDA   9,X            ; 2e caractere extension
  ANDA  #$DF           ; passage en majuscules
  CMPA  #$44           ; test 'D' de SD           
  BEQ   RDIR4          ; c'est un fichier .sd
RDIR3
  INC   EXTSD          ; ce n'est pas un fichier .sd
RDIR4
  LBSR  GETLBA         ; recherche du LBA
  LDB   [TFIN]         ; premier caractere du nom
  CMPB  #$20           ; test espace
  BNE   RDIR7          ; non : il y a un nom long
  LBSR  SNAME          ; oui : decodage nom court 

; ajout d'une ligne dans la table des noms de fichiers
RDIR7
  LDY   TFIN           ; adresse ligne courante
  TST   EXTSD          ; test extension .sd
  BNE   RDIR8          ; sinon ignorer le fichier  
  LEAY  45,Y           ; adresse ligne suivante
  CMPY  TMAX           ; test taille de la table
  BHI   AFFIC          ; table pleine
  STY   TFIN           ; stockage adresse
RDIR8
  LBSR  LINIT          ; raz ligne suivante

; passage a l'entree suivante
RDIR9
  LEAX  32,X           ; Adresse entree suivante
  CMPX  FINBUF         ; Fin du buffer
  BNE   RDIR1          ; Traitement entree suivante

; lecture secteur suivant
  LDD   DSECT          ; secteur debut directory 
  ADDD  #$0001         ; secteur suivant  
  STD   DSECT          ; nouveau debut directory 
  LBRA  RDSECT         ; lecture secteur directory

;------------------------------------------------------
; TABLE VIDE (PAS DE FICHIER .SD DANS LA CARTE)
;------------------------------------------------------
TVIDE
  LDY   #NOFILE        ; adresse message d'erreur
  LBSR  WSTR           ; affichage d'une chaine 
  BSR   RCHAR          ; lecture du clavier
  TSTB                 ; test de la touche
  BEQ   TVIDE          ; pas de touche enfoncee
  LBRA  RETOUR         ; retour au Basic

;------------------------------------------------------
; AFFICHAGE D'UNE LISTE DE 16 NOMS
;------------------------------------------------------
AFFIC
  LDY   TTOP           ; adresse premier nom
  CMPY  TFIN           ; test fin de table
  BEQ   TVIDE          ; table vide 
  LBSR  LOCAT6         ; positionnement ligne 6
  LDB   #$10           ; compteur de boucles
  PSHS  B              ; empilage compteur
AFFIC1
  CMPY  TFIN           ; test fin de table
  BLS   AFFIC2         ; fin de table non depassee
  LEAY  -45,Y          ; rester en fin de table
AFFIC2
  LBSR  DISP           ; affichage d'une ligne 
  DEC   ,S             ; decrementation compteur
  BNE   AFFIC1         ; ligne suivante
  PULS  B              ; depilage compteur   

;------------------------------------------------------
; TEST DU CLAVIER
;------------------------------------------------------
CLAV
  BSR   RCHAR          ; lecture du clavier
  CMPB  #$0D           ; ENTREE
  LBEQ  SETLBA         ; changement image disquette
  CMPB  #$0A           ; fleche bas
  BEQ   BAS            ; ligne suivante 
  CMPB  #$0B           ; fleche haut
  BEQ   HAUT           ; ligne precedente 
  CMPB  #$09           ; fleche droite
  BEQ   DROITE         ; ecran suivant 
  CMPB  #$08           ; fleche gauche
  BEQ   GAUCHE         ; ecran precedent 
  CMPB  #$02           ; touche STOP
  LBEQ  STOP           ; sortie sans selection 
  BRA   CLAV           ; nouveau test

;------------------------------------------------------
; LECTURE DU CLAVIER (RETOUR DANS LE REGISTRE B)
; Version pour TO remplacee par SWI #$8A pour MO
;------------------------------------------------------
RCHAR
  JMP   $E806          ; lecture du clavier

;------------------------------------------------------
; TRAITEMENT FLECHE DROITE
;------------------------------------------------------
DROITE  
  LDY   TTOP           ; adresse haut ecran
  LEAY  720,Y          ; adresse haut ecran suivant
  CMPY  TFIN           ; test fin de table 
  BHS   CLAV           ; ne rien faire en fin de table
; changement d'ecran
  STY   TTOP           ; haut de l'ecran precedent
  STY   TSEL           ; stockage nouvelle adresse
  BRA   AFFIC          ; nouvel affichage ecran complet 

;------------------------------------------------------
; TRAITEMENT FLECHE GAUCHE
;------------------------------------------------------
GAUCHE  
  LDY   TTOP           ; adresse haut ecran
  LEAY  -720,Y         ; adresse haut ecran precedent
  CMPY  TDEB           ; test debut de table 
  BCS   CLAV           ; ne rien faire si plus petit
; changement d'ecran
  STY   TTOP           ; haut de l'ecran precedent
  STY   TSEL           ; stockage nouvelle adresse
  BRA   AFFIC          ; nouvel affichage ecran complet 

;------------------------------------------------------
; TRAITEMENT FLECHE VERS LE BAS
;------------------------------------------------------
BAS  
  LDY   TSEL           ; adresse ligne selectionnee
  LEAY  45,Y           ; adresse ligne suivante
  CMPY  TFIN           ; test fin de table 
  BEQ   CLAV           ; ne rien faire en fin de table
  STY   TSEL           ; stockage nouvelle adresse
; test de depassement bas ecran
  LDY   TTOP           ; adresse haut ecran
  LEAY  720,Y          ; adresse haut ecran suivant
  CMPY  TSEL           ; comparaison ligne selectionnee 
  BNE   BAS1           ; pas de changement d'ecran
; changement d'ecran
  STY   TTOP           ; haut de l'ecran suivant
  LBRA  AFFIC          ; nouvel affichage ecran complet 
; pas de changement d'ecran
BAS1  
  LDY   TSEL           ; adresse ligne selectionnee
  LEAY  -45,Y          ; adresse ligne precedente
  LBSR  LOCATY         ; positionnement sur la ligne
  LBSR  DISP           ; affichage ligne precedente
  LBSR  DISP           ; affichage ligne selectionnee
  LBRA  CLAV           ; retour au test du clavier 

;------------------------------------------------------
; TRAITEMENT FLECHE VERS LE HAUT
;------------------------------------------------------
HAUT  
  LDY   TSEL           ; adresse ligne selectionnee
  CMPY  TDEB           ; test debut de table 
  LBEQ  CLAV           ; ne rien faire en debut de table
  LEAY  -45,Y          ; adresse ligne precedente
  STY   TSEL           ; stockage nouvelle adresse
; test de depassement haut ecran
  LDY   TTOP           ; adresse haut ecran
  LEAY  -45,Y          ; adresse ligne precedente
  CMPY  TSEL           ; comparaison ligne selectionnee 
  BNE   HAUT1          ; pas de changement d'ecran
; changement d'ecran
  LEAY  -675,Y         ; adresse page precedente
  STY   TTOP           ; haut de l'ecran precedent
  LBRA  AFFIC          ; nouvel affichage ecran complet 
; pas de changement d'ecran
HAUT1  
  LDY   TSEL           ; adresse ligne selectionnee
  LBSR  LOCATY         ; positionnement sur la ligne
  LBSR  DISP           ; affichage ligne selectionnee
  LBSR  DISP           ; affichage ligne suivante
  LBRA  CLAV           ; retour au test du clavier 

;------------------------------------------------------
; INITIALISATION LBA POUR CHANGEMENT IMAGE DISQUETTE
;------------------------------------------------------
SETLBA
  LDY   TSEL           ; adresse ligne selectionnee
  LDA   CSIZE          ; nombre de secteurs par cluster
; multiplication par le nombre de secteurs/cluster  
SETLB1
  LSRA                 ; divise par 2 
  BEQ   SETLB2
  LSL   44,Y           ; decalage octet 4
  ROL   43,Y           ; decalage octet 3
  ROL   42,Y           ; decalage octet 2
  ROL   41,Y           ; decalage octet 1
  BRA   SETLB1         ; nouvelle boucle
; ajout du secteur du cluster zero 
SETLB2
  LDD   FSECT          ; numero secteur cluster zero
  ADDB  44,Y           ; ajout octet 4 
  ADCA  43,Y           ; ajout octet 3 + retenue
  STD   43,Y           ; stockage octets 3 et 4
  LDD   41,Y           ; octets 1 et 2
  ADCB  #0             ; ajout retenue 
  ADCA  #0             ; ajout retenue
  STD   41,Y           ; stockage octets 1 et 2
  TST   <SD_SEL        ; test du type de carte
  BMI   SETLB4         ; carte SDHC, sinon calcul pour SD
; initialisation LBA du fichier pour carte SD
SETLB3
  CLRB                 ; zero  
  STB   <SD_LB0+3      ; octet 4 a zero
  LDB   42,Y           ; octet de poids fort
  LSLB                 ; multiplie par 2
  STB   <SD_LB0        ; octet 1 (sans retenue)
  LDD   43,Y           ; octets 2 et 3
  LSLB                 ; multiplication par 2
  ROLA                 ; multiplication par 2
  STD   <SD_LB0+1      ; stockage octets 2 et 3
  BCC   RET_OK         ; stockage LBA dans la carte 
  INC   <SD_LB0        ; ajout retenue
  BRA   RET_OK         ; stockage LBA dans la carte
; initialisation LBA du fichier pour carte SDHC
SETLB4
  LDD   41,Y           ; deux octets de poids fort
  STD   <SD_LB0        ; stockage
  LDD   43,Y           ; deux octets de poids faible
  STD   <SD_LB0+2      ; stockage

;------------------------------------------------------
; RETOUR APRES SELECTION REUSSIE
;------------------------------------------------------
; SD_LB0 contient le LBA de debut du fichier .sd
; SD_SEL contient le type de carte (bit 7)
; SD_SEL est complete par $55 (indicateur de selection)
; SD_LB0 est copié dans SAVLB0 (en pile systeme)
; SD_SEL est copié dans SAVSEL (en pile systeme)
; En cas de reset à chaud de l'ordinateur,
; SD_LB0 et SD_SEL seront effaces. SAVLB0 et SAVSEL
; permettront au controleur SDDRIVE de les restaurer.
;------------------------------------------------------
RET_OK
; Positionnement de l'indicateur de selection
  LDA   <SD_SEL        ; indicateur selection et type
  ANDA  #$80           ; garde le type
  ORA   #$55           ; ajoute l'indicateur de selection
; Copie de sauvegarde des parametres en pile systeme  
  STA   <SD_SEL        ; stockage indicateur et type
  STA   <SAVSEL        ; copie en pile systeme
  LDD   <SD_LB0        ; octets 1 et 2 de LB0
  STD   <SAVLB0        ; copie en pile systeme
  LDD   <SD_LB0+2      ; octets 3 et 4 de LB0
  STD   <SAVLB0+2      ; copie en pile systeme
STOP
; Effacement de l'écran et selection couleurs  
  LDY   #EFFACE        ; efface et retablit bleu/cyan
  BSR   WSTR           ; affichage d'une chaine 
  BSR   VIDEOC         ; selection video couleur MO
  
;------------------------------------------------------
; RESTAURATION POINTEUR DE PILE ET RETOUR
;------------------------------------------------------
RETOUR
  ANDCC #$AF           ; active les interruptions 
  LDS   SAVES          ; restauration du registre S
  RTS

;------------------------------------------------------
; RETOUR EN ERREUR
;------------------------------------------------------
ERROR
  LDY   #ERREUR
  BSR   WSTR
  BRA   RETOUR

;------------------------------------------------------
; SELECTION PAGE VIDEO COULEUR POUR MO UNIQUEMENT
; Pour les MO l'adresse de démarrage est stockee en
; memoire video couleur. On doit voir a l'ecran un
; segment rose et magenta ($E935 en $001E).
; Si la memoire video forme est selectionnee on voit
; des points bleus/cyan, ce n'est pas correct.
;------------------------------------------------------
VIDEOC  
  LDB   >$FFF2         ; poids fort du vecteur SWI3
  BPL   VIDEO9         ; positif --> TO 
  LDA   $A7C0          ; chargement PA du PIA systeme
  ANDA  #$FE           ; raz b0 (page video couleur) 
  STA   $A7C0          ; selection video couleur
VIDEO9
  RTS
  
;------------------------------------------------------
; LECTURE ET STOCKAGE DU CLUSTER DU FICHIER
;------------------------------------------------------
GETLBA
  LDY   TFIN           ; Y pointe sur la zone du nom
  LDA   21,X           ; cluster octet 1
  STA   41,Y           ; LBA octet 1
  LDA   20,X           ; cluster octet 2
  STA   42,Y           ; LBA octet 2
  LDA   27,X           ; cluster octet 3
  STA   43,Y           ; LBA octet 3
  LDA   26,X           ; cluster octet 4
  STA   44,Y           ; LBA octet 4
  RTS

;------------------------------------------------------
; AFFICHAGE CHAINE TERMINEE PAR ZERO (Adresse dans Y)
;------------------------------------------------------
WSTR
  LDB   ,Y+            ; caractere a ecrire
  BEQ   WSTR9          ; fin de la chainee
  BSR   WCHAR          ; envoi caractere
  BRA   WSTR           ; caractere suivant
WSTR9
  RTS

;------------------------------------------------------
; AFFICHAGE CARACTERE (CARACTERE DANS REGISTRE B)
; Version TO remplacee par SWI #$82 pour MO
;------------------------------------------------------
WCHAR
  JMP   $E803          ; envoi caractere

;------------------------------------------------------
; AFFICHAGE D'UNE LIGNE POINTEE PAR Y
; AU RETOUR Y POINTE SUR LA LIGNE SUIVANTE
;------------------------------------------------------
DISP
  CMPY  TSEL           ; test ligne selectionnee
  BNE   DISP1          ; ligne normale 
  BSR   INVERS         ; inversion video
DISP1
  LDA   #$29           ; nombre de caracteres 41
DISP2
  LDB   ,Y+            ; caractere a ecrire
  BSR   WCHAR          ; envoi caractere
  DECA                 ; decrementation compteur
  BNE   DISP2          ; caractere suivant
  LEAY  -41,Y 
  CMPY  TSEL           ; test ligne selectionnee
  BNE   DISP9          ; ligne normale 
  BSR   INVERS         ; retablir video normale
DISP9  
  LEAY  45,Y           ; adresse ligne suivante
  RTS

;------------------------------------------------------
; INVERSION VIDEO
;------------------------------------------------------
INVERS
  LDB   #$1B           ; sequence d'echappement
  BSR   WCHAR          ; envoi caractere
INVER1
  LDB   #$5C           ; inverse video pour TO
                       ; remplace par #$7B pour MO
  BSR   WCHAR          ; envoi caractere
  RTS

;------------------------------------------------------
; POSITIONNEMENT SUR LA LIGNE 6
;------------------------------------------------------
LOCAT6
  LDB   #$1F           ; code de positionnement
  BSR   WCHAR          ; envoi caractere
  LDB   #$46           ; ligne 6
  BSR   WCHAR          ; envoi caractere
  LDB   #$41           ; colonne 1
  BSR   WCHAR          ; envoi caractere
  RTS

;------------------------------------------------------
; POSITIONNEMENT SUR LA LIGNE POINTEE PAR Y
;------------------------------------------------------
LOCATY
  PSHS  Y              ; sauvegarde Y
  LDB   #$1F           ; code de positionnement
  BSR   WCHAR          ; envoi caractere
  LDB   #$46           ; code pour pointer ligne 6 
LOC1  
  CMPY  TTOP           ; comparaison a la premiere ligne
  BEQ   LOC2           ; positionnement ligne B
  INCB                 ; numero ligne suivante
  LEAY  -45,Y          ; adresse ligne precedente
  BRA   LOC1           ; nouvelle boucle
LOC2
  BSR   WCHAR          ; envoi caractere
  LDB   #$41           ; colonne 1
  BSR   WCHAR          ; envoi caractere
  PULS  Y,PC           ; retour

;------------------------------------------------------
; INITIALISATION NOUVELLE LIGNE DE 45 CARACTERES
; NOM(39 OCTETS) + CR + LF + ADRESSE(4 OCTETS)
;------------------------------------------------------
LINIT
  LDY   TFIN
  LDD   #$202D         ; espace et 45 boucles
LINIT1  
  STA   ,Y+            ; octet initialise a espace
  DECB                 ; decrementation compteur
  BNE   LINIT1         ; octet suivant
  LDD   #$0D0A         ; CR+LF
  STD   -6,Y           ; ajout CR+LF
  RTS

;------------------------------------------------------
; EXTRACTION DES CARACTERES DU NOM COURT
;------------------------------------------------------
SNAME
  LDY   TFIN           ; Y pointe sur la zone du nom
  CLRB                 ; compteur de caracteres
SNAME1  
  LDA   B,X            ; lecture caractere
  CMPA  #$20           ; test espace
  BEQ   SNAME3         ; ignorer les espaces
  CMPA  #$41           ; caractere A  
  BLO   SNAME2         ; copier si < A 
  CMPA  #$5A           ; caractere Z
  BHI   SNAME2         ; copier si > Z
  ORA   #$20           ; passer en minuscules 
SNAME2  
  STA   ,Y+            ; stockage caractere
SNAME3
  INCB                 ; caractere suivant
  CMPB  #$08           ; huitieme caractere
  BNE   SNAME4         ; sinon rien de plus
  LDA   #$2E           ; ajouter un point
  STA   ,Y+            ; stockage point
SNAME4  
  CMPB  #$0B           ; onzieme caractere
  BNE   SNAME1         ; caractere suivant
  RTS

;------------------------------------------------------
; EXTRACTION DES CARACTERES DU NOM LONG
; Chaque entree de repertoire contient 13 caracteres
; On lit uniquement les trois premieres entrees (1-3)
; pour retenir les 39 premiers caracteres du nom
;------------------------------------------------------
LNAME
  LDY   TFIN           ; Y pointe sur la zone du nom
  LDA   #$0D           ; nbre de caracteres par entree
  LDB   ,X             ; sequence number
  ANDB  #$BF           ; slot number
  CMPB  #$03           ; comparaison avec 3
  BHI   LNAME9         ; Si superieur ne pas traiter
  MUL                  ; multiplier par 13
  SUBD  #$0D           ; moins 13 --> position 1er caractere
  LEAY  B,Y            ; Y pointe sur 1er caractere
  LDA   1,X            ; 1er caractere
  STA   ,Y+            ; stockage
  LDA   3,X            ; 2eme caractere
  STA   ,Y+            ; stockage
  LDA   5,X            ; 3eme caractere
  STA   ,Y+            ; stockage
  LDA   7,X            ; 4eme caractere
  STA   ,Y+            ; stockage
  LDA   9,X            ; 5eme caractere
  STA   ,Y+            ; stockage
  LDA   14,X           ; 6eme caractere
  STA   ,Y+            ; stockage
  LDA   16,X           ; 7eme caractere
  STA   ,Y+            ; stockage
  LDA   18,X           ; 8eme caractere
  STA   ,Y+            ; stockage
  LDA   20,X           ; 9eme caractere
  STA   ,Y+            ; stockage
  LDA   22,X           ; 10eme caractere
  STA   ,Y+            ; stockage
  LDA   24,X           ; 11eme caractere
  STA   ,Y+            ; stockage
  LDA   28,X           ; 12eme caractere
  STA   ,Y+            ; stockage
  LDA   30,X           ; 13eme caractere
  STA   ,Y+            ; stockage
  LDB   #$0D           ; compteur pour 13 boucles
LNAME2
  LDA   ,-Y            ; caractere du nom
  BEQ   LNAME3         ; test $00
  INCA                 ; transforme $FF en $00
  BNE   LNAME4         ; test $FF
LNAME3
  LDA   #$20           ; blanc remplace $00 et $FF        
  STA   ,Y             ; stockage dans le nom
LNAME4  
  DECB                 ; decrementation compteur
  BNE   LNAME2         ; boucle suivante 
LNAME9  
  RTS

;------------------------------------------------------
; Initialisation ecran
;------------------------------------------------------
ECRAN
  FCB   $0C            ; effacement ecran   
  FCB   $1B,$20,$40    ; couleur noire
  FCB   $1B,$20,$57    ; fond blanc
  FCB   $1B,$67        ; bordure blanche
  FCB   $1B,$46        ; ecriture cyan
  FCB   $1F,$46,$41    ; locate 1,6
  FCC   "Recherche des fichiers sd, patientez..."
  FCB   $1F,$57,$41    ; locate 1,23
  FCC   "Quatre fl"
  FCB   $16,$41,$65    ; è
  FCC   "ches puis ENTREE pour choisir"
  FCB   $1F,$58,$41    ; locate 1,24
  FCC   "STOP pour abandonner sans s"
  FCB   $16,$42,$65    ; é
  FCC   "lectionner."
  FCB   $1F,$45,$41    ; locate 1,5
  FCB   $1B,$40,$00    ; ecriture noire 

;------------------------------------------------------
; Effacement ecran
;------------------------------------------------------
EFFACE
  FCB   $0C            ; effacement ecran   
  FCB   $1B,$20,$44    ; couleur bleu
  FCB   $1B,$20,$56    ; fond cyan
  FCB   $1B,$66        ; bordure cyan
  FCB   $00            ; fin de chaine 

;------------------------------------------------------
; Messages d'erreur
;------------------------------------------------------
ERREUR
  FCB   $0C
  FCC   "  Format de la carte SD non reconnu"
  FCB   $0D,$0A,$0D,$0A,$00
NOFILE
  FCB   $1B,$46        ; ecriture cyan
  FCB   $1F,$46,$41    ; locate 1,6
  FCC   "Aucun fichier .sd trouv"
  FCB   $16,$42,$65    ; é
  FCC   " dans la carte"
  FCB   $00            ; fin de chaine

;------------------------------------------------------
; Logo SDDRIVE avec compactage
; La chaine de caractere est terminee par un octet $00
; Si un octet est inferieur a $20, c'est le nombre de
; repetitions de l'octet suivant. Les octets utiles
; doivent être augmentes de $41.
; L'affichage se fait par colonne de gauche a droite
; et de haut en bas. 
;------------------------------------------------------
SDLOGO
  FDB   $15BF,$02DE,$02FE,$033E,$03BE,$FE02,$BFC2,$02CE
  FDB   $DE04,$FE02,$DECE,$C6C0,$07BF,$0ABE,$C23E,$04BE
  FDB   $02BB,$BD07,$BEDE,$C204,$BF0F,$BE7F,$03BF,$3FAF
  FDB   $BD06,$BE3E,$DE02,$CE0F,$BE07,$BF9F,$BB10,$BEBB
  FDB   $3F05,$BE0A,$BF3F,$9F02,$AF05,$B702,$AF02,$9F7F
  FDB   $02BF,$C003,$AF02,$9F0E,$BF03,$DE03,$FE03,$3E04
  FDB   $BE02,$FE03,$3EC6,$0BBF,$C23E,$0CBE,$3F03,$BEBB
  FDB   $B79F,$BFC6,$06BF,$C2C6,$FE0D,$BE9F,$BF9F,$3FBF
  FDB   $C0CE,$FEB7,$7FCE,$13BE,$BB7F,$04BF,$3BBB,$9FBF
  FDB   $CE12,$BEBD,$AF7F,$09BF,$BBBD,$0EBE,$BBB7,$9F3F
  FDB   $0FBF,$3F7F,$079F,$7F3F,$0DBF,$3E1E,$FF3E,$BE07
  FDB   $BFFE,$0EDF,$FE07,$BF02,$BE07,$BFBE,$0EBF,$BE07
  FDB   $BF02,$BE07,$BFBE,$0EBF,$BE07,$BF02,$BE07,$BFAF
  FDB   $C70C,$C3C7,$AF07,$BFBE,$7FEF,$C702,$C316,$C102
  FDB   $C3C7,$EF7F,$DE1E,$CFDE,$BE07,$BFCE,$06C7,$CE07
  FDB   $BFCE,$07C7,$B7BE,$07BF,$BE06,$BFBE,$07BF,$BE08
  FDB   $BFBE,$07BF,$BE06,$BFBE,$07BF,$BBC1,$C006,$BFBE
  FDB   $07BF,$BBC1,$04C0,$C1BB,$0ABF,$3FFF,$DFCF,$C7C6
  FDB   $AFCB,$C102,$C00E,$BF02,$C0C1,$CBAF,$FFDF,$CFC7
  FDB   $C3C1,$C0BE,$C604,$C30E,$430C,$C346,$BD1E,$C1BD
  FDB   $DECF,$C702,$C3C1,$02C0,$18BF,$BDC1,$C005,$BF3F
  FDB   $02FF,$DF02,$CFC7,$02C3,$C102,$C00F,$BF02,$3FFF
  FDB   $02DF,$CF02,$C7C3,$02C1,$C005,$BF3F,$02FF,$DF02
  FDB   $CFC7,$02C3,$C102,$C00F,$BF02,$3FFF,$02DF,$D002
  FDB   $C9C3,$07BF,$BE08,$BFC0,$02C1,$C302,$C7CF,$02DF
  FDB   $FF02,$3F04,$BF02,$C0C1,$02C3,$C7CF,$AFCE,$C7CF
  FDB   $02DF,$FF02,$3F04,$BF02,$C0C1,$02C3,$C702,$CFDF
  FDB   $02FF,$3F08,$BFBE,$C0C1,$02C3,$C702,$CFDF,$02FF
  FDB   $3F14,$BFCE,$1EC7,$CEBE,$07BF,$C603,$C3C6,$06BF
  FDB   $C603,$C3C6,$07BF,$02BE,$07BF,$BE03,$BFBE,$06BF
  FDB   $BE03,$BFBE,$07BF,$02BE,$07BF,$BE03,$BFBE,$06BF
  FDB   $BE03,$BFBE,$07BF,$02BE,$07BF,$BE03,$BFB7,$06C7
  FDB   $B703,$BFBE,$07BF,$02BE,$07C0,$BE0E,$BFBE,$07C0
  FDB   $BE00

;------------------------------------------------------
; Zones de TRAVAIL
;------------------------------------------------------
EXTSD
  FCB   $00            ; extension .sd (0=oui, 1=non)
RS512
  FDB   $E02B          ; fonction de lecture secteur (TO)
CSIZ2
  FCB   $00            ; nombre de secteurs par cluster (sur 2 octets)
CSIZE
  FCB   $00            ; nombre de secteurs par cluster (sur 1 octet)
RSECT
  FDB   $0000          ; nombre de secteurs reserves
PSECT
  FDB   $0000          ; numero secteur debut partition
DSECT
  FDB   $0000          ; numero secteur debut directory
FSECT
  FDB   $0000          ; numero secteur de data cluster 0    
BUFFER
  FDB   $9D00          ; adresse buffer de lecture carte SD 
FINBUF
  FDB   $9F00          ; adresse de fin du buffer de lecture 
TDEB
  FDB   $A000          ; adresse debut table des noms (TO)
TFIN
  FDB   $A000          ; adresse fin table des noms
TTOP
  FDB   $A000          ; adresse nom en haut d'ecran (TO)
TSEL
  FDB   $A000          ; adresse nom selectionne (TO)
TMAX
  FDB   $E000          ; limite haute de la table des noms (TO)
SAVES
  FDB   $0000          ; sauvegarde du registre S
SD_LBA
  FDB   $0000          ; adresse LBA pour CMD17
  
  END
Daniel
L'obstacle augmente mon ardeur.
Daniel
Messages : 17286
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] SDDRIVE

Message par Daniel »

__sam__ a écrit : 06 avr. 2022 21:14 Ah oui en effet ;) J'imagine que c'est ta machine de test privilégiée.
Il ne faut pas rêver, je n'ai pas porté sonic2 sur MO5, il ne fonctionne que sur TO8/TO8D/TO9+
C'était juste pour voir si quelqu'un remarquerait l'anomalie :lol:
Daniel
L'obstacle augmente mon ardeur.
Bernouilli92
Messages : 1245
Inscription : 24 déc. 2021 09:46
Localisation : Région parisienne

Re: [Thomson] SDDRIVE

Message par Bernouilli92 »

Autant pour moi, je n'ai pas fait très attention.
acdan
Messages : 56
Inscription : 14 avr. 2022 12:39

Re: [Thomson] SDDRIVE

Message par acdan »

Bonjour,
je voudrais en commander un pour mon MO5 , cela permet t'il d'enregistrer nos programmes? merci de votre réponse.
Cordialement.
Daniel
Messages : 17286
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] SDDRIVE

Message par Daniel »

Bonjour acdan, et bienvenue dans le forum !

SDDRIVE simule deux lecteurs de disquettes, en écriture comme en lecture, et permet donc de sauver des programmes et d'écrire des fichiers pour les réutiliser ensuite. Pour un développeur c'est l'outil idéal, car il permet de programmer directement avec l'ordinateur Thomson, mais aussi de créer les applications sur PC avec des outils modernes et de les transférer par carte SD vers l'ordinateur Thomson pour les tester.

La plupart des démonstrations récentes de musique et de vidéo, ainsi que quelques jeux (en particulier kandykrush et sudoku) ont été développés en utilisant SDDRIVE. Les développeurs actifs sur Thomson ont presque tous (sauf un réfractaire :wink: ) un contrôleur SDDRIVE. Le seul argument du réfractaire est que SDDRIVE n'existait pas dans les années 1980, et il veut utiliser uniquement du matériel d'époque.

Pour le MO5, SDDRIVE est un très bon choix. En complément il est conseillé de lui adjoindre une extension musique et jeux pour bénéficier du son des démonstrations de vidéo et de musique, et aussi de la synthèse vocale et de la musique de certains jeux (Karaté, SuperTennis, etc.).
Daniel
L'obstacle augmente mon ardeur.
acdan
Messages : 56
Inscription : 14 avr. 2022 12:39

Re: [Thomson] SDDRIVE

Message par acdan »

Merci de votre réponse, je découvre le MO5, j'ai toujours été sur C64, je dois recevoir d'ici peu mon MO5 mais sans lecteur cassette et franchement si je peu m'en passer c'est mieux ainsi, comment faire pour commander le SDDRIVE et le payer?
Je vois que vous avez aussi pas mal de documentation pour la programmation sur MO5, c'est vraiment bien et cela sera très utile.
Daniel
Messages : 17286
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] SDDRIVE

Message par Daniel »

Bienvenue dans l'univers Thomson. Le MO5 n'est pas l'ordinateur le plus puissant de la gamme, mais il est très attachant. C'était mon premier ordinateur personnel et il reste mon favori. En complément de la documentation du site dcmoto, le forum system-cfg est le meilleur moyen pour obtenir de l'aide.

Le lecteur de cassette peut intéresser les collectionneurs pour reconstituer une configuration "d'époque", mais franchement il vaut mieux ne pas s'en servir. C'est une perte de temps incroyable par sa lenteur, son manque de fiabilité, la difficulté pour lire et écrire des cassettes avec un PC.

Pour commander SDDRIVE c'est ici : viewtopic.php?f=10&t=9196
Il suffit de poster un message dans le fil de discussion. Après accord sur la configuration exacte et le paiement par transfert paypal, l'expédition du matériel est immédiate.
Daniel
L'obstacle augmente mon ardeur.
acdan
Messages : 56
Inscription : 14 avr. 2022 12:39

Re: [Thomson] SDDRIVE

Message par acdan »

Merci beaucoup
Daniel
Messages : 17286
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] SDDRIVE

Message par Daniel »

acdan a écrit : 21 avr. 2022 15:09 juste une petite question, comment retrouver nos programmes qu'on sauvegarde ? pour pouvoir les partager.
Les programmes sont sauvegardés dans une image de disquette au format .sd de la carte microSD.
La liste des fichiers de la disquette est donnée par la commande DIR.
Pour les communiquer à un autre utilisateur, il suffit de lui transmettre le fichier .sd, en le copiant avec un PC à partir de la carte.

Si cet autre utilisateur possède SDDRIVE, il peut copier le fichier .sd sur sa carte microSD et accéder aux programmes avec l'ordinateur Thomson.

Sinon, avec un PC, il peut ouvrir le fichier .sd avec l'émulateur dcmoto pour exécuter les programmes, les copier, les modifier, les lister, les imprimer, etc.
Daniel
L'obstacle augmente mon ardeur.
Répondre