Un kit autour du EF6809P

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

siliconal
Messages : 88
Inscription : 24 oct. 2014 20:59

Re: Un kit autour du EF6809P

Message par siliconal »

A titre indicatif, voici le source du programme d'identification du disque dur IDE que j'ai conçu.
(Très basique: lecture des données d'identification et mémorisation dans un buffer et affichage sur afficheur 7 Segments en utilisant la routine du moniteur, LCD et transmission sur PC, sans aucune analyse mais une gestion d'erreur et de message d'état de l'IDE avec time out aussi basique):

Code : Tout sélectionner

	ORG	$0200
GWAIT	EQU $F800	;Routine temporisation
	
BUFF	EQU	$0400	;Buffer for data transfer
BSYMK	EQU	$80	;BSY bit mask(of IDE Status Register)	
RDYMK	EQU	$40	;RDY bit mask (of IDE Status Register)
DRQMK	EQU	$08	;DRQ bit mask (of IDE Status Register)
ERRMK	EQU	$01	;Error bit mask (of IDE Status Register)

IDFCD	EQU	$EC	;Identify IDE Hard disk Command

DATAR	EQU	$1C00	;IDE DATA I/O Register
HDVSR	EQU	$1C06	;IDE Head and Device Select Register
CMMDR	EQU	$1C07	;IDE Command Register
STUSR	EQU	$1C07	;IDE Status Register

LCDCD	EQU	$1800	;LCD Registre de commande
LCDDT	EQU	$1801	;LCD Registre de données

;Initialisation LCD
	LDA	#$01	;1ms
	JSR	GWAIT	;Temporisation
		
	LDA	#$38
	STA	LCDCD
	
	LDA	#$01	;1ms
	JSR	GWAIT	;Temporisation
		
	LDA	#$0C
	STA	LCDCD
		
	LDA	#$01	;1ms
	JSR	GWAIT	;Temporisation
	
	LDA	#$06
	STA	LCDCD
	
	LDA	#$01	;1ms
	JSR	GWAIT	;Temporisation
	
	LDA	#$02
	STA	LCDCD
		
	LDA	#$01	;1ms
	JSR	GWAIT	;Temporisation
	
	LDA	#$01	;Code effacement
	STA	LCDCD	;Effacement LCD
	
;Sélectionner Master Hard disk
	LDA	#$B0	;Pattern to select Slave
	STA	HDVSR	;To Head and Device Select Register
	
;Test état BUSY
	LDX	#$0000
BSYSOK	LEAX	1,X
	CMPX	#$FFFF
	BEQ	BSYTO
	LDA	STUSR
	ANDA	#BSYMK
	CMPA	#BSYMK
	BEQ	BSYSOK

;Test état READY
	LDX	#$0000
RDYNOK	LEAX	1,X
	CMPX	#$FFFF
	LBEQ	RDYTO
	LDA	STUSR
	ANDA	#RDYMK
	CMPA	#RDYMK
	BNE	RDYNOK

;Envoi Commande Identification
	LDA	#IDFCD	;Identify Command
	STA	CMMDR	;To Command Register
	
;Test Erreur de commande	
	LDA	STUSR
	ANDA	#ERRMK
	CMPA	#ERRMK
	LBEQ	TRERR	;Go to Error treatment

;Test disponibilité donnée
	LDX	#$0000
DRQNOK	LEAX	1,X
	CMPX	#$FFFF
	LBEQ	DRQTO
	LDA	STUSR
	ANDA	#DRQMK
	CMPA	#DRQMK
	BNE	DRQNOK
	
	LDX	#BUFF
LECTDT	LDA	DATAR	;Lire registre données IDE

	TFR	A,B	;B sera utilisé pour S_TXD
	
	PSHS	A,B	;Sauve A
	
	JSR	$FC20	;Saut vers routine S_TXD (Envoie donnée par port série)
	JSR	$F406	;Saut vers routine DIS_MEM (Affiche adresse et donnée envoyée)
	
	LDA	#$01	;01ms
	JSR	GWAIT	;Temporisation
	
	PULS	A,B
	
	STA	,X
	STA	LCDDT	;Afficher donnée sur LCD
	
	LEAX	1,X	;Incrémenter compteur (Index) X
	;CMPX	$1F,X
	CMPX	#$041F
		
	BNE	LECTDT

	RTS
	
;Traitement Erreur BSY Time Out
BSYTO	LDA	#$01
	JSR	GWAIT	;Temporisation
	
	LDA	#$42	;ASCII "B"
	STA	LCDDT
	
	LDA	#$01
	JSR	GWAIT	;Temporisation
		
	LDA	#$55	;ASCII "U"
	STA	LCDDT
		
	LDA	#$01
	JSR	GWAIT	;Temporisation
	
	LDA	#$53	;ASCII "S"
	STA	LCDDT	
	
	LDA	#$01
	JSR	GWAIT	;Temporisation
	
	LDA	#$59	;ASCII "Y"
	STA	LCDDT

	LDA	#$01
	JSR	GWAIT	;Temporisation
	
	LDA	#$20	;ASCII " "
	STA	LCDDT
	
	LDA	#$01
	JSR	GWAIT	;Temporisation
		
	LDA	#$45	;ASCII "E"
	STA	LCDDT
	
	LDA	#$01
	JSR	GWAIT	;Temporisation
	
	LDA	#$52	;ASCII "R"
	STA	LCDDT
	
	LDA	#$01
	JSR	GWAIT	;Temporisation
	
	LDA	#$52	;ASCII "R"
	STA	LCDDT
	
	RTS
	
;Traitement Erreur RDY Time Out
RDYTO	LDA	#$01
	JSR	GWAIT	;Temporisation
	
	LDA	#$52	;ASCII "R"
	STA	LCDDT
	
	LDA	#$01
	JSR	GWAIT	;Temporisation
		
	LDA	#$45	;ASCII "E"
	STA	LCDDT
		
	LDA	#$01
	JSR	GWAIT	;Temporisation
	
	LDA	#$41	;ASCII "A"
	STA	LCDDT	
	
	LDA	#$01
	JSR	GWAIT	;Temporisation
	
	LDA	#$44	;ASCII "D"
	STA	LCDDT

	LDA	#$01
	JSR	GWAIT	;Temporisation
	
	LDA	#$59	;ASCII "Y"
	STA	LCDDT
	
	LDA	#$01
	JSR	GWAIT	;Temporisation
	
	LDA	#$20	;ASCII " "
	STA	LCDDT
	
	LDA	#$01
	JSR	GWAIT	;Temporisation
		
	LDA	#$45	;ASCII "E"
	STA	LCDDT
	
	LDA	#$01
	JSR	GWAIT	;Temporisation
	
	LDA	#$52	;ASCII "R"
	STA	LCDDT
	
	LDA	#$01
	JSR	GWAIT	;Temporisation
	
	LDA	#$52	;ASCII "R"
	STA	LCDDT
	
	RTS
	
;Traitement Erreur DRQ Time Out
DRQTO	LDA	#$01
	JSR	GWAIT	;Temporisation
	
	LDA	#$44	;ASCII "D"
	STA	LCDDT
	
	LDA	#$01
	JSR	GWAIT	;Temporisation
	
	LDA	#$52	;ASCII "R"
	STA	LCDDT
	
	LDA	#$01
	JSR	GWAIT	;Temporisation
	
	LDA	#$51	;ASCII "Q"
	STA	LCDDT
	
	LDA	#$01
	JSR	GWAIT	;Temporisation
	
	LDA	#$20	;ASCII " "
	STA	LCDDT
	
	LDA	#$01
	JSR	GWAIT	;Temporisation
		
	LDA	#$45	;ASCII "E"
	STA	LCDDT
	
	LDA	#$01
	JSR	GWAIT	;Temporisation
	
	LDA	#$52	;ASCII "R"
	STA	LCDDT
	
	LDA	#$01
	JSR	GWAIT	;Temporisation
	
	LDA	#$52	;ASCII "R"
	STA	LCDDT
	
	RTS

;Traitement erreur
TRERR	LDA	#$01
	JSR	GWAIT	;Temporisation
	
	LDA	#$45	;ASCII "E"
	STA	LCDDT
	
	LDA	#$01
	JSR	GWAIT	;Temporisation
	
	LDA	#$52	;ASCII "R"
	STA	LCDDT
	
	LDA	#$01
	JSR	GWAIT	;Temporisation
	
	LDA	#$52	;ASCII "R"
	STA	LCDDT
	
	LDA	#$01
	JSR	GWAIT	;Temporisation
	
	LDA	#$4F	;ASCII "O"
	STA	LCDDT	
	
	LDA	#$01
	JSR	GWAIT	;Temporisation
	
	LDA	#$52	;ASCII "R"
	STA	LCDDT
	
	LDA	#$01
	JSR	GWAIT	;Temporisation
	
	LDA	#$20	;ASCII " "
	STA	LCDDT
	
	LDA	#$01
	JSR	GWAIT	;Temporisation
	
	LDA	#$43	;ASCII "C"
	STA	LCDDT
	
	LDA	#$01
	JSR	GWAIT	;Temporisation
	
	LDA	#$4F	;ASCII "O"
	STA	LCDDT	
		
	LDA	#$01
	JSR	GWAIT	;Temporisation
	
	LDA	#$4D	;ASCII "M"
	STA	LCDDT
	
	LDA	#$01
	JSR	GWAIT	;Temporisation
	
	LDA	#$4D	;ASCII "M"
	STA	LCDDT
	
	LDA	#$01
	JSR	GWAIT	;Temporisation
	
	LDA	#$41	;ASCII "A"
	STA	LCDDT	
	
	LDA	#$01
	JSR	GWAIT	;Temporisation
	
	LDA	#$4E	;ASCII "N"
	STA	LCDDT
	
	LDA	#$01
	JSR	GWAIT	;Temporisation
	
	LDA	#$44	;ASCII "D"
	STA	LCDDT
	
	RTS
Marcopolo

Re: Un kit autour du EF6809P

Message par Marcopolo »

Pour les composants :

Quartz 4,9151 Mhz pour l'oscillateur de l'ACIA 6850 : Disponible
J'ai des MC6850 de récupération, tu en veux ?

EEPROM 28C16 ou 32 ou 64 K ( 2, 4 ou 8 Ko) : ATMEL 29C256 Flash 32K x 8 70ns
Tu peux mettre les bits d'adresse en trop à la masse si tu veux mais le brochage va peut être t'embêter ?

Circuit TTL 74259 (8-bit adressable latch)
Je n'ai pas :( Au cas où, j'ai de CD4724 (CMOS)

MC1488 et MC1489 : disponibles
Tu ne veux pas un MAX232 pour éviter d'avoir une alimentation +/- 12V ?

Marc
siliconal
Messages : 88
Inscription : 24 oct. 2014 20:59

Re: Un kit autour du EF6809P

Message par siliconal »

Merci beaucoup,
Marcopolo a écrit :Pour les composants :

Quartz 4,9151 Mhz pour l'oscillateur de l'ACIA 6850 : Disponible
J'ai des MC6850 de récupération, tu en veux ?
Pour le quartz, c'est une très bonne chose que tu l'ais, car je cherchais cette fréquence exacte partout, mais elle est rare.

Pour les MC6850, j'en ai quelques unes, mais ça ne fait rien d'en avoir une ou 2 en plus pour les prochaines cartes améliorées, car j'ai décidé de ne pas toucher les composants sur les matrices tant qu'elle marche avant de compléter le câblage la carte époxy perforées et qu'elle soit fonctionnelle car je fais encore des essai sur les matrices.
Marcopolo a écrit :EEPROM 28C16 ou 32 ou 64 K ( 2, 4 ou 8 Ko) : ATMEL 29C256 Flash 32K x 8 70ns
Tu peux mettre les bits d'adresse en trop à la masse si tu veux mais le brochage va peut être t'embêter ?
Je vais voir le datasheet, et c'est que tu m'ait prévenu avant de compléter le câblages des supports des RAM et EPROM, comme ça je peut anticiper les changement et essayer de faire un câblage au maximum compatible avec 6116, 2732 et 29C256.

Marcopolo a écrit :Circuit TTL 74259 (8-bit adressable latch)
Je n'ai pas :( Au cas où, j'ai de CD4724 (CMOS)
Pour 74259, je crois que peux trouver ici sinon j'utiliserai ceux de la matrice.
Je vais voir les datasheet de CD4724 et te répondre.

MC1488 et MC1489 : disponibles
Tu ne veux pas un MAX232 pour éviter d'avoir une alimentation +/- 12V ?

Marc[/quote]

Je vais voir cette solution alternative, c'est juste le problème de support et de câblage, mais pour cette partie aussi, je ne l'ai pas encore fait. donc ça peut se faire.

Donc si tu peux me les envoyer par poste ou par quelqu'un qui viendrai au Maroc ces jours-ci ce serait parfait.

Et encore merci pour ton support, je crois que avec votre support on peut faire évoluer les choses.
Marcopolo

Re: Un kit autour du EF6809P

Message par Marcopolo »

Pour les quartz, la fréquence exacte est 4.9152 Mhz

Euh non, je n'ai pas d'amis qui passe dans le coin ces jours ci (en gros à 1500-2000 km de chez moi)

Mais je te mettrai les composants à la poste, ça ne va pas me ruiner :D
siliconal
Messages : 88
Inscription : 24 oct. 2014 20:59

Re: Un kit autour du EF6809P

Message par siliconal »

Marcopolo a écrit :Pour les quartz, la fréquence exacte est 4.9152 Mhz
Je ne sais pas si les 100Hz de différence affecteront la fiabilité de la transmission, à voir
Marcopolo a écrit :Euh non, je n'ai pas d'amis qui passe dans le coin ces jours ci (en gros à 1500-2000 km de chez moi)

Mais je te mettrai les composants à la poste, ça ne va pas me ruiner :D
Ok, je te donnerai les détails de l'envoi en privé, je ne sais si c'est autorisé de donner les infos personnelles en public sur le forum?

Qu'en penses-tu Fabien?
Marcopolo a écrit :Pour les composants :

Quartz 4,9151 Mhz pour l'oscillateur de l'ACIA 6850 : Disponible
J'ai des MC6850 de récupération, tu en veux ?

EEPROM 28C16 ou 32 ou 64 K ( 2, 4 ou 8 Ko) : ATMEL 29C256 Flash 32K x 8 70ns
Tu peux mettre les bits d'adresse en trop à la masse si tu veux mais le brochage va peut être t'embêter ?
Je n'ai pas besoin de l'ACIA pour le moment, j'en ai quelques unes.

Par contre, si ce n'est pas trop demandé, j'aurai besoin aussi d'un ou deux 6809 (Motorola, Thomson ou compatible) si disponible, je veux garder celui de la matrice en place jusqu'à ce que je termine la carte époxy perforée (question de garder ce qui est déjà fonctionnel pour les essais)

Pour la EEPROM, j'ai vu son datasheet, il parait qu'il y a une ou deux lignes d'adresse à changer pour éviter qu'elle soit câblés sur Vcc.. Donc c'est ok pour la 29C256
Marcopolo a écrit :Circuit TTL 74259 (8-bit adressable latch)
Je n'ai pas :( Au cas où, j'ai de CD4724 (CMOS)
C'est compatible à 100% avec 74259 au niveau brochage et ils disent sut leur datasheet qu'il est aussi compatible aux niveaux TTL bas (je ne sais pas ce que ça veut dire exactement mais c'est une garantie de plus)
Marcopolo a écrit :MC1488 et MC1489 : disponibles
Tu ne veux pas un MAX232 pour éviter d'avoir une alimentation +/- 12V ?

Marc
Je ne l'ai jamais essayé, mais ça doit être plus simple que la paire 1488/1489 et en plus ça évite une tension 12V. Donc c'est Ok pour le MAX232.

Et encore merci.
Marcopolo

Re: Un kit autour du EF6809P

Message par Marcopolo »

Pour les quartz : 9600 bauds x 16 = 153600 hz nécessaires pour l'horloge du 6850
4.9152 Mhz / 32 = 153600 hz
4.9152 Mhz est la fréquence adaptée à ton usage.

Pour les CD4724, attention au courant maximum disponible sur les sorties (IOL IOH).

Je te trouverai 2 MC6809.

On ne donne jamais d'info privée sur le forum, on utilise la fonction Mail Privé (MP)

Ok pour 29C256 + MC1488 + MC1489 + MAX232

A bientôt,
Marc
siliconal
Messages : 88
Inscription : 24 oct. 2014 20:59

Re: Un kit autour du EF6809P

Message par siliconal »

Concernant la communication avec disque dur IDE, maintenant ça fonctionne à merveille.

J'ai essayé deux disques durs et j'ai enfin pu lire des secteurs au hasard sur lesquels j'ai trouvé des noms de fichiers et répertoires en clair, donc je suis sûr que ça marche.

Maintenant je suis en train de lire les premiers secteurs et essayer de les analyser pour identifier le MBR les secteurs de boots et les types et détails des partitions installées afin de comprendre en détails la structure des systèmes de fichiers FAT, NTFS et Linux.

ça pourrait être une piste pour la récupération et la lecture des fichiers JPEG, BMP, text ( et autres types de fichiers dont j'aurais déchiffré la structure) en dur sur les disques dur défectueux ou dont le système de fichiers est abîmé.

ça pourrait aussi aboutir à un mini système de fichiers pour les applications industrielles pour la gestion de la sauvegarde des données acquise sous forme de fichiers qui seront structurés dans un système simple et qui garantirait leur intégrité au lieu de mettre les données sur les disques durs en RAW.

Ci-joint le Source du code de lecture d'un ou plusieurs secteurs ( toujours sans aucune analyse) et contient aussi en plus une amélioration de l'affichage du LCD en gérant le passage à la ligne inférieure ou supérieure pour un LCD 2 x 16 lignes qui n'est pas géré par le contrôleur du LCD :

Code : Tout sélectionner


	ORG	$0200
GWAIT	EQU $F800	;Routine temporisation
	
BUFF	EQU	$0800	;Buffer for data transfer
BSYMK	EQU	$80	;BSY bit mask(of IDE Status Register)	
RDYMK	EQU	$40	;RDY bit mask (of IDE Status Register)
DRQMK	EQU	$08	;DRQ bit mask (of IDE Status Register)
ERRMK	EQU	$01	;Error bit mask (of IDE Status Register)
BT8MK	EQU	$01	;8 bits data I/O format bit mask

RSRCD	EQU	$20	;Read with retry IDE Hard disk Command

DATAR	EQU	$1C00	;IDE DATA I/O Register
FEACD	EQU	$EF	;Feature Command
FEATR	EQU	$1C01	;Feature Register
SCNTR	EQU	$1C02	;Sector Counter Register
STSCR	EQU	$1C03	;Start Sector Register
CYLOR	EQU	$1C04	;Cylinder Number (Low Byte)
CYHIR	EQU	$1C05	;Cylinder Number (2 Bits of High Byte)
HDVSR	EQU	$1C06	;IDE Head and Device Select Register
CMMDR	EQU	$1C07	;IDE Command Register
STUSR	EQU	$1C07	;IDE Status Register

LCDCD	EQU	$1800	;LCD Registre de commande
LCDDT	EQU	$1801	;LCD Registre de données

LCDAC	EQU	$07FF	;Adresse LCD caractère à afficher

;Initialisation ACIA
	JSR $FC00	;Saut vers routine S_INI (Initialisation port série)
	
;Initialisation LCD
	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
		
	LDA	#$38	;Set Function: Interface 8 Bits, 2 Lignes d'affichage, Matrice 5 x 8 points
	STA	LCDCD
	
	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
		
	LDA	#$0F	;Marche/Arrêt, Affichage curseur: Affichage visible, curseur visible
	STA	LCDCD
		
	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
	
	LDA	#$06	;Entry mode set: Déplacement curseur à droite, l'affichage n'est pas décalé
	STA	LCDCD
	
	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
	
	LDA	#$01	;Efface ecran et Place curseur en position d'origine
	STA	LCDCD	;Effacement LCD
	
;Sélectionner Master Hard disk
	LDA	#$B0	;Pattern to select Slave
	STA	HDVSR	;To Head and Device Select Register
	
;Test état BUSY
	LDX	#$0000
BSYSOK	LEAX	1,X
	CMPX	#$FFFF
	LBEQ	BSYTO
	LDA	STUSR
	ANDA	#BSYMK
	CMPA	#BSYMK
	BEQ	BSYSOK

;Test état READY
	LDX	#$0000
RDYNOK	LEAX	1,X
	CMPX	#$FFFF
	LBEQ	RDYTO
	LDA	STUSR
	ANDA	#RDYMK
	CMPA	#RDYMK
	BNE	RDYNOK

;Configuration format de transfert 8 bits
	;A vérifier!
	;LDA	#BT8MK	;8 bits parameter mask
	;ORA	FEATR	;Activate 8 bits parameter
	;STA	FEATR	;Store to Feature Register
	;fin A vérifier

;Envoi commande format de transfert 8 bits	
	;LDA	#FEACD	;Load Feature Command
	;STA	CMMDR	;To IDE Command Register
	
;Test Erreur de commande format de transfert 8 bits	
	;LDA	STUSR
	;ANDA	#ERRMK
	;CMPA	#ERRMK
	;LBEQ	TRER8	;Go to Error treatment 8 Bits format
	
;Envoi du nombre et adresse du secteurs à lire
	LDA	#$01	;#$08
	STA	SCNTR
	LDA	#$01	;#$03
	STA	STSCR
	LDA	#$00	;#$03
	STA	CYLOR
	LDA	#$00
	STA	CYHIR

;Envoi Commande de lecture de secteur
	LDA	#RSRCD	;Read with Retry Command
	STA	CMMDR	;To Command Register
	
;Test Erreur de commande de lecture 	
	LDA	STUSR
	ANDA	#ERRMK
	CMPA	#ERRMK
	LBEQ	TRERR	;Go to Error treatment

;Test disponibilité donnée
	LDX	#$0000
DRQNOK	LEAX	1,X
	CMPX	#$FFFF
	LBEQ	DRQTO
	LDA	STUSR
	ANDA	#DRQMK
	CMPA	#DRQMK
	BNE	DRQNOK
	
;Lecture des secteur, transfert vers Buffer, affichage sur LCD et envoi vers RS232
	LDY	#$00
	
BOUCLE	LDX	#BUFF

	LDA	#$00	;Initialisation variable	
	STA	LCDAC	;Adresse octets LCD affiché

LECTDT	LDA	DATAR	;Lire registre données IDE

	TFR	A,B	;B sera utilisé pour S_TXD
	
	PSHS	A,B	;Sauve A
	
	JSR	$FC20	;Saut vers routine S_TXD (Envoie donnée par port série)
	JSR	$F406	;Saut vers routine DIS_MEM (Affiche adresse et donnée envoyée)
		
	;Test adresse LCD caractère a afficher pour gestion changement de ligne LCD
	;Test adresse LCD caractère a afficher = 17
	LDA	LCDAC
	CMPA	#$10
	BNE	TST50	;Aller vers test adresse LCD caractère 47
	
	LDA	#$C0	;Envoyer adresse LCD caractère à afficher $40
	STA	LCDCD	;à LCDCD
	
	LDA	#$40	;Initialiser à 40 (décimal)
	STA	LCDAC	;la varaible adresse LCD caractère à afficher
		
	BRA	AFFLCD	;Afficher l'octet
	
TST50	;Test adresse LCD caractère a afficher = 47
	LDA	LCDAC
	CMPA	#$50
	BNE	AFFLCD	;Afficher l'octet
	
	LDA	#$80	;Envoyer adresse LCD caractère à afficher $00
	STA	LCDCD	;à LCDCD
	
	LDA	#$00	;Initialiser à 0
	STA	LCDAC	;la varaible adresse LCD caractère à afficher
	
	;Fin Test adresse LCD caractère à afficher pour gestion changement de ligne LCD
	
AFFLCD	LDA	#$01	;01ms
	JSR	GWAIT	;Temporisation pour LCD
	
	PULS	A,B
	
	STA	,X
	STA	LCDDT	;Afficher donnée sur LCD
	INC	LCDAC	;Incrementer Adresse LCD caractère à afficher
	
	LEAX	1,X	;Incrémenter compteur (Index) X
	;CMPX	$1F,X
	CMPX	#$0A00	;512 Octets à lire
	
	BNE	LECTDT	;Reboucler vers lecteur nouvel octet
	
	
	LEAY	1,Y
	
	CMPY	#$01	;#$08 Si nombre de secteur à lire non encore atteint	
	
	BNE	BOUCLE	;Reboucler vers lecture nouveau secteur

	RTS
	
;Traitement Erreur BSY Time Out
BSYTO	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
	
	LDA	#$42	;ASCII "B"
	STA	LCDDT
	
	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
		
	LDA	#$55	;ASCII "U"
	STA	LCDDT
		
	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
	
	LDA	#$53	;ASCII "S"
	STA	LCDDT	
	
	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
	
	LDA	#$59	;ASCII "Y"
	STA	LCDDT

	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
	
	LDA	#$20	;ASCII " "
	STA	LCDDT
	
	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
		
	LDA	#$45	;ASCII "E"
	STA	LCDDT
	
	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
	
	LDA	#$52	;ASCII "R"
	STA	LCDDT
	
	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
	
	LDA	#$52	;ASCII "R"
	STA	LCDDT
	
	RTS
	
;Traitement Erreur RDY Time Out
RDYTO	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
	
	LDA	#$52	;ASCII "R"
	STA	LCDDT
	
	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
		
	LDA	#$45	;ASCII "E"
	STA	LCDDT
		
	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
	
	LDA	#$41	;ASCII "A"
	STA	LCDDT	
	
	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
	
	LDA	#$44	;ASCII "D"
	STA	LCDDT

	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
	
	LDA	#$59	;ASCII "Y"
	STA	LCDDT
	
	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
	
	LDA	#$20	;ASCII " "
	STA	LCDDT
	
	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
		
	LDA	#$45	;ASCII "E"
	STA	LCDDT
	
	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
	
	LDA	#$52	;ASCII "R"
	STA	LCDDT
	
	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
	
	LDA	#$52	;ASCII "R"
	STA	LCDDT
	
	RTS
	
;Traitement Erreur DRQ Time Out
DRQTO	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
	
	LDA	#$44	;ASCII "D"
	STA	LCDDT
	
	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
	
	LDA	#$52	;ASCII "R"
	STA	LCDDT
	
	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
	
	LDA	#$51	;ASCII "Q"
	STA	LCDDT
	
	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
	
	LDA	#$20	;ASCII " "
	STA	LCDDT
	
	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
		
	LDA	#$45	;ASCII "E"
	STA	LCDDT
	
	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
	
	LDA	#$52	;ASCII "R"
	STA	LCDDT
	
	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
	
	LDA	#$52	;ASCII "R"
	STA	LCDDT
	
	RTS

;Traitement Erreur Commande globale
TRERR	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
	
	LDA	#$45	;ASCII "E"
	STA	LCDDT
	
	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
	
	LDA	#$52	;ASCII "R"
	STA	LCDDT
	
	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
	
	LDA	#$52	;ASCII "R"
	STA	LCDDT
	
	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
	
	LDA	#$4F	;ASCII "O"
	STA	LCDDT	
	
	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
	
	LDA	#$52	;ASCII "R"
	STA	LCDDT
	
	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
	
	LDA	#$20	;ASCII " "
	STA	LCDDT
	
	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
	
	LDA	#$43	;ASCII "C"
	STA	LCDDT
	
	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
	
	LDA	#$4F	;ASCII "O"
	STA	LCDDT	
		
	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
	
	LDA	#$4D	;ASCII "M"
	STA	LCDDT
	
	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
	
	LDA	#$4D	;ASCII "M"
	STA	LCDDT
	
	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
	
	LDA	#$41	;ASCII "A"
	STA	LCDDT	
	
	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
	
	LDA	#$4E	;ASCII "N"
	STA	LCDDT
	
	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
	
	LDA	#$44	;ASCII "D"
	STA	LCDDT
	
	RTS
	
;Traitement Erreur Commande 8 Bits
TRER8	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
	
	LDA	#$45	;ASCII "E"
	STA	LCDDT
	
	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
	
	LDA	#$52	;ASCII "R"
	STA	LCDDT
	
	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
	
	LDA	#$52	;ASCII "R"
	STA	LCDDT
	
	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
	
	LDA	#$20	;ASCII " "
	STA	LCDDT
	
	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
	
	LDA	#$43	;ASCII "C"
	STA	LCDDT
	
	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
	
	LDA	#$4D	;ASCII "M"
	STA	LCDDT
	
	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
	
	LDA	#$44	;ASCII "D"
	STA	LCDDT
	
	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
	
	LDA	#$20	;ASCII " "
	STA	LCDDT
	
	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
	
	LDA	#$38	;ASCII "8"
	STA	LCDDT	
	
	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
	
	LDA	#$20	;ASCII " "
	STA	LCDDT
	
	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
	
	LDA	#$42	;ASCII "B"
	STA	LCDDT
	
	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
	
	LDA	#$49	;ASCII "I"
	STA	LCDDT
	
	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
	
	LDA	#$54	;ASCII "T"
	STA	LCDDT
	
	LDA	#$02	;2ms
	JSR	GWAIT	;Temporisation
	
	LDA	#$53	;ASCII "S"
	STA	LCDDT
	
	RTS
siliconal
Messages : 88
Inscription : 24 oct. 2014 20:59

Re: Un kit autour du EF6809P

Message par siliconal »

Marcopolo a écrit :Pour les quartz : 9600 bauds x 16 = 153600 hz nécessaires pour l'horloge du 6850
4.9152 Mhz / 32 = 153600 hz
4.9152 Mhz est la fréquence adaptée à ton usage.
Ton calcul est exact, la valeur qui était utilisé n'est pas très exacte.
Marcopolo a écrit :Pour les CD4724, attention au courant maximum disponible sur les sorties (IOL IOH).
Je vais comparer avec le courant de sortie vers les afficheurs 7 segments pour éviter de les griller, ça m'est déjà arrivé avec des circuits CMOS.
Marcopolo

Re: Un kit autour du EF6809P

Message par Marcopolo »

Super tu avances bien :)

Tu devrais peut être joindre un petit schéma montrant comment est connecté le disque IDE.
Marcopolo

Re: Un kit autour du EF6809P

Message par Marcopolo »

@siliconal, je t'ai posté ce matin de quoi bricoler un peu :)
siliconal
Messages : 88
Inscription : 24 oct. 2014 20:59

Re: Un kit autour du EF6809P

Message par siliconal »

Merci Marcopolo,

Je te tiendrai au courant une fois reçu.

Pour les schémas et photos et peut être vidéo, je vais essayer de transférer ça sur PC et puis les envoyer quand j'aurai un peu de temps pour ça, ces jours-ci je suis un peu absorbé par mon travail et par des déplacements.

Je dois aussi installer les logiciels nécessaires pour le CAO et Circuits imprimés car ça fait longtemps que je n'ai pas travaillé avec ça (depuis l'ère DOS et ORCAD et les imprimantes matricielles).

Et si quelqu'un connait des logiciels libres pour la conception électronique, merci de me donner les liens, j'en aurai besoin très prochainement.
Marcopolo

Re: Un kit autour du EF6809P

Message par Marcopolo »

Pas libre : la version gratuite d'Eagle ?
siliconal
Messages : 88
Inscription : 24 oct. 2014 20:59

Re: Un kit autour du EF6809P

Message par siliconal »

Voici le schéma de brochage du disque IDE que j'ai fait:

Avant tout, pour le brochage IDE il faut faire attention à ce que la numérotation est faite en zigzag (numéros paires d'un coté et numéros impaires de l'autre, la broche 20 n'est pas utilisé et son pin n'existe pas (vide à la place) elle est dans le coté opposé au détrompeur.

J'ai branché le connecteur IDE directement sur le bus du 6809 sans aucune interface. La seule broche modifiée est la broche /RD(/OE selon terminologie IDE) de l'IDE qui est R/(/W) du microprocesseur inversée. Donc toutes les lignes décrites font référence directement aux entrées/sortie du microprocesseur.

La description du brochage est donnée selon l'ordre suivant:

A gauche: numéro de pins IDE, à droite: les broches du 6809

1->/RESET, donc le RESET du micrprocesseur initialise aussi le disque IDE. (C'est un choix, pour ne pas l'utiliser il suffit de ne pas la brancher.
2->GND (dans certain tutoriaux j'ai lu que le GND doit être connecté avec 22, 24, 26, 30 et 40, mais je ne l'ai pas fait puisque j'ai trouvé que ces broches sont déjaà interconnecté au sein même du disque dur (en tout cas ceux que j'ai essayé).

Broches impaires à partir de 3 (contiguës) D0 à D7 comme suit:
3->D0
5->D1
7->D2
9->D3
11->D4
13->D5
15->D6
17->D7

Broches paires à partir de 4 (contiguës) D8 à D15 comme suit (mais je ne les ai pas utilisé, donc en l'air, puisque j'ai choisi de communiquer seulement en 8 bits au lieu de 16 bits, pour ne pas utiliser de port parallèle ou de latch):
4->D8
6->D9
8->D10
10->D11
12->D12
14->D13
16->D14
18->D15

Les adresses utilisées pour adresser les registres internes sont A0, A1 et A2 (suffisant pour adresser les 8 registres importants et nécessaires pour une communication simple) connecté comme suit:
35->A0
33->A1
36->A2

Reste la sélection de l'IDE qui est faite normalement par 2 Chip Select (qui permettent avec les lignes d'adresses d'adresser tous les registres de l'IDE) mais je n'en ai utilisé qu'un seul (/CS0) qui permet de sélectionner l'IDE sans entrer dans l'adressage de ses registres qui est effectué par A0 à A2, dans ce cas /CS1 est alors connecté à Vcc, ce qui limite l'adressage aux 8 premiers registres de l'IDE, /CS0 et /CS1 (ou CE1 respectivement CE2 selon selon terminologie de l'IDE) sont connectés comme suit:
37(CE1)->/CS0
38(CE2)->Vcc

La dernière broche connectée est l'indicateur d'état de l'IDE, sur lequel j'ai branché une LED à travers une résistante de protection. Cette ligne /ACT renseigne normalement sur l'activité du disque IDE, mais d'après mes test elle ne corresponds pas exactement à l'état BUSY du bits du registre d'état (STATUS REGISTER) mais ça reste un indicateur beaucoup plus pour la forme que pour le diagnostic, elle est connectée comme suit:
39->LED état activité IDE

Les autres broches IDE n'ont pas été utilisés car je n'en ai pas besoin pour le moment (ex: IRQ, IOREADY..)

Concernant les photos du prototype, j'ai essayé de les uploader mais je n'ai pas réussi. Pourriez-vous me dire comment faire?
__sam__
Messages : 7981
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Un kit autour du EF6809P

Message par __sam__ »

Question d'un novice. Tu nous parles de D8 à D15, que tu n'utilises pas, mais si tu devais les utiliser, ils correspondraient à quoi sur le 6809?
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
Marcopolo

Re: Un kit autour du EF6809P

Message par Marcopolo »

Je ne suis pas sûr que l'on puisse se passer des 8 bits de poids fort.
L'IDE est une interface 16-Bit, comment fais tu pour demander au disque de n'utiliser que les 8 bit de poids faibles ?
Répondre