Bug EF9345 sur VG5000?
Modérateurs : Papy.G, fneck, Carl
Bug EF9345 sur VG5000?
Bonjour,
essayant de corriger le problème de caractères manquants sur mon jeu Tetris pour VG5000, je me suis rendu compte qu'ils étaient bien présents mais cachés.
Explication: la couleur de l’écran est noir. Mes caractères sont noirs sur un fond blanc (permis en mode 40 colonnes). Mais l'EF9345 ne prend pas en compte le fond blanc. Du coup je me retrouve avec des caractères noirs sur fond noir (le fond d'ecran).
J'ai testé ma théorie sur cet exemple minimal: marge bleue, ecran noir, affichage d'un A blanc sur fond rouge
WRITE "essai.bin"
org &5000
main:
DI
PUSH HL
PUSH IX
LD D, &21
LD E, &01
CALL EF9345
LD D, &28
LD E, &81
CALL EF9345; ecrire dans le registre TGS (commandes longues)
LD D, &21
LD E, &47
CALL EF9345
LD D, &28
LD E, &83
CALL EF9345; ecrire dans le registre PAT
LD D, &21
LD E, &04
CALL EF9345
LD D, &28
LD E, &82
CALL EF9345; ecrire dans le registre MAT
LD D, &22
LD E, &01
CALL EF9345
LD D, &23
LD E, &71
CALL EF9345
LD D, &21
LD E, 65
CALL EF9345
LD D, &26
LD E, 10
CALL EF9345
LD D, &27
LD E, 10
CALL EF9345
LD D, &28
LD E, &00
CALL EF9345
boucle_sans_fin:
JP boucle_sans_fin
POP IX
POP HL
EI
EF9345:
CALL &0286; teste si EF935 est pret
CALL &0D7C; ecrit dans EF9345
RET
Sur l'émulateur DCVG5K, on a bien ce que l'on espérait. Sur ma vraie machine, j'obtiens la marge bleue, le fond d'écran noir, le A blanc mais pas le fond rouge du A.
Quelqu'un peut-il confirmer sur une vraie machine? Mieux encore si quelqu'un pouvait adapter ce programme sur une vraie machine Alice.
Ou alors quelqu'un voit-il une erreur dans mon programme qui empeche l'affichage du fond rouge?
essayant de corriger le problème de caractères manquants sur mon jeu Tetris pour VG5000, je me suis rendu compte qu'ils étaient bien présents mais cachés.
Explication: la couleur de l’écran est noir. Mes caractères sont noirs sur un fond blanc (permis en mode 40 colonnes). Mais l'EF9345 ne prend pas en compte le fond blanc. Du coup je me retrouve avec des caractères noirs sur fond noir (le fond d'ecran).
J'ai testé ma théorie sur cet exemple minimal: marge bleue, ecran noir, affichage d'un A blanc sur fond rouge
WRITE "essai.bin"
org &5000
main:
DI
PUSH HL
PUSH IX
LD D, &21
LD E, &01
CALL EF9345
LD D, &28
LD E, &81
CALL EF9345; ecrire dans le registre TGS (commandes longues)
LD D, &21
LD E, &47
CALL EF9345
LD D, &28
LD E, &83
CALL EF9345; ecrire dans le registre PAT
LD D, &21
LD E, &04
CALL EF9345
LD D, &28
LD E, &82
CALL EF9345; ecrire dans le registre MAT
LD D, &22
LD E, &01
CALL EF9345
LD D, &23
LD E, &71
CALL EF9345
LD D, &21
LD E, 65
CALL EF9345
LD D, &26
LD E, 10
CALL EF9345
LD D, &27
LD E, 10
CALL EF9345
LD D, &28
LD E, &00
CALL EF9345
boucle_sans_fin:
JP boucle_sans_fin
POP IX
POP HL
EI
EF9345:
CALL &0286; teste si EF935 est pret
CALL &0D7C; ecrit dans EF9345
RET
Sur l'émulateur DCVG5K, on a bien ce que l'on espérait. Sur ma vraie machine, j'obtiens la marge bleue, le fond d'écran noir, le A blanc mais pas le fond rouge du A.
Quelqu'un peut-il confirmer sur une vraie machine? Mieux encore si quelqu'un pouvait adapter ce programme sur une vraie machine Alice.
Ou alors quelqu'un voit-il une erreur dans mon programme qui empeche l'affichage du fond rouge?
Dernière modification par joaopa le 20 déc. 2013 18:42, modifié 3 fois.
Re: Bug EF9345 sur VG5000?
Bonsoir,
J'avoue que l'EF9345 reste un grand mystère pour moi. A chaque fois que je regarde un source, je n'y comprend rien . Je veux bien tester sur une vraie machine mais je ne vois pas pourquoi cela fonctionnerait mieux que sur ton VG5000 (à ce propos, ta machine est dans le recensement des numéros de série de VG5000 ?) Si ce n'est pas le cas, je suis preneur de cette info.
Pour ton exemple, ça serait peut-être pas mal d'expliquer chaque paramètre. Ca permettrait peut-être de mettre le doigt sur le problème.
Markerror
J'avoue que l'EF9345 reste un grand mystère pour moi. A chaque fois que je regarde un source, je n'y comprend rien . Je veux bien tester sur une vraie machine mais je ne vois pas pourquoi cela fonctionnerait mieux que sur ton VG5000 (à ce propos, ta machine est dans le recensement des numéros de série de VG5000 ?) Si ce n'est pas le cas, je suis preneur de cette info.
Pour ton exemple, ça serait peut-être pas mal d'expliquer chaque paramètre. Ca permettrait peut-être de mettre le doigt sur le problème.
Markerror
Re: Bug EF9345 sur VG5000?
Même après l'avoir émulé deux fois (Alice 32/90 et VG5000), je ne maîtrise toujours pas parfaitement l'EF9345.
C'est pourquoi je peux dire qu'en cas de différence entre dcvg5k et le VG5000, ce n'est pas dans ce dernier qu'il faut chercher le bug
Sauf si c'est une panne matérielle. On doit pouvoir tester le bon fonctionnement de la couleur de fond avec quelques lignes de Basic.
C'est pourquoi je peux dire qu'en cas de différence entre dcvg5k et le VG5000, ce n'est pas dans ce dernier qu'il faut chercher le bug
Sauf si c'est une panne matérielle. On doit pouvoir tester le bon fonctionnement de la couleur de fond avec quelques lignes de Basic.
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
Re: Bug EF9345 sur VG5000?
Bon, j'ai fixé le problème. Il est dans le registre PAT. Il faut mettre &67 au lieu de &47. L'inconvénient c'est que je ne sais toujours pas pourquoi. La doc de l'EF9345 est incompréhensible sur ce sujet.
Toujours est-il que l'émulateur s'en contente très bien.
Autrement, en passant, je suis content. JPar pur hasard, j'ai réussi à corriger l'image sur une télé 60Hz. C'est dans le registre TGS que cela se passe. Ca serait cool si j'arrivais a trouver la routine a modifier pour pouvoir utiliser mon VG5000 sur cette télé.
Toujours est-il que l'émulateur s'en contente très bien.
Autrement, en passant, je suis content. JPar pur hasard, j'ai réussi à corriger l'image sur une télé 60Hz. C'est dans le registre TGS que cela se passe. Ca serait cool si j'arrivais a trouver la routine a modifier pour pouvoir utiliser mon VG5000 sur cette télé.
Re: Bug EF9345 sur VG5000?
Bon, je sais pas si cela peut t'aider, mais dans Glouton, on trouve ça. Ca ressemble à une séquence d'initialisation de l'EF9345 non ?
;751E: LD C,&CF
;7520: LD A,&20
;7522: OUT (&8F),A
;7524: IN A,(C)
;7526: JP M,&7524
;7529: LD A,&21
;752B: OUT (&8F),A
;752D: LD C,&CF
;752F: OUT (C),D
;7531: LD A,E
;7532: OR &80
;7534: LD E,A
;7535: CALL &750C
;7538: RET
; Envoi d'une chaine de datas a l'EF9345, a valider.
;7573: LD HL,&7582
;7676: LD B,&5
go_51_01:
;7578: LD E,(HL)
;7579: INC HL
;757A: LD D,(HL)
;757B: CALL &751E
;757E: INC HL
;757F: DJNZ go_51_01
;7581: RET
;7582: DB &01,&00,&02,&10,&03,&F6,&04,&13,&07,&08
;751E: LD C,&CF
;7520: LD A,&20
;7522: OUT (&8F),A
;7524: IN A,(C)
;7526: JP M,&7524
;7529: LD A,&21
;752B: OUT (&8F),A
;752D: LD C,&CF
;752F: OUT (C),D
;7531: LD A,E
;7532: OR &80
;7534: LD E,A
;7535: CALL &750C
;7538: RET
; Envoi d'une chaine de datas a l'EF9345, a valider.
;7573: LD HL,&7582
;7676: LD B,&5
go_51_01:
;7578: LD E,(HL)
;7579: INC HL
;757A: LD D,(HL)
;757B: CALL &751E
;757E: INC HL
;757F: DJNZ go_51_01
;7581: RET
;7582: DB &01,&00,&02,&10,&03,&F6,&04,&13,&07,&08
Re: Bug EF9345 sur VG5000?
C'est très facile : la routine d'initialisation de l'EF9345 est en 1052h. Elle envoie la chaine de commandes qui se trouve à l'adresse 1179h sur une longueur 1Ah. Il suffit de modifier cette chaîne. Après, je ne sais pas si la ROM est sur support et si on peut la remplacer par une EPROM (tous mes VG5000 sont bien rangés et pas facilement accessibles). Mais les spécialistes vont nous le direjoaopa a écrit :Ca serait cool si j'arrivais a trouver la routine a modifier pour pouvoir utiliser mon VG5000 sur cette télé.
Code : Tout sélectionner
104f 217911 ld hl,1179h sequence de commandes EF9345 (long=1A)
1052 cdef02 call 02efh envoi commandes EF9345
Code : Tout sélectionner
1170 4f 34 43 4f 33 47 45 43 22 1a 28 81 29 00 20 82 O4CO3GEC".(.). .
1180 29 6e 20 83 29 f7 20 84 29 13 20 87 29 08 26 08 )n .). .). .).&.
1190 27 00 28 02 c3 3f 11 c3 67 25 d6 00 6f 7c de 00 '.(..?..g%..o|..
11a0 67 78 de 00 47 3e 00 c9 00 00 00 35 4a ca 99 39 gx..G>.....5J..9
11b0 1c 76 98 22 95 b3 98 0a dd 47 98 53 d1 99 99 0a .v.".....G.S....
11c0 1a 9f 98 65 bc cd 98 d6 77 3e 98 52 c7 4f 80 db ...e....w>.R.O..
11d0 00 c9 00 00 00 00 00 00 00 00 d3 11 45 18 17 18 ............E...
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
- Carl
- Modérateur
- Messages : 13253
- Inscription : 08 avr. 2007 13:21
- Localisation : http://www.doledujura.fr
- Contact :
Re: Bug EF9345 sur VG5000?
sur sur les miens, il y a un support...
Re: Bug EF9345 sur VG5000?
Ah la la, vous n'allez pas sur mon site ou quoi .
Les 800 premiers VG5000 produits avaient une EPROM contenant le système et le Basic.
Carte mère Basic 1.0
EPROM 16ko : Intel D27128 L4263649S
puce vidéo : Thomson EFX9345P
En jetant un oeil rapide sur E-bay, j'avais même retrouvé ce modèle. Seul test que je n'ai pas fait, c'est mettre cette eprom sur une carte mère 1.1, mais je ne vois pas pourquoi cela ne fonctionnerait pas. Le plus dur, ça va être de trouver un programmateur d'eprom, mais mon petit doigt me dit qu'il y a pas mal de gars ici qui en ont .
Les 800 premiers VG5000 produits avaient une EPROM contenant le système et le Basic.
Carte mère Basic 1.0
EPROM 16ko : Intel D27128 L4263649S
puce vidéo : Thomson EFX9345P
En jetant un oeil rapide sur E-bay, j'avais même retrouvé ce modèle. Seul test que je n'ai pas fait, c'est mettre cette eprom sur une carte mère 1.1, mais je ne vois pas pourquoi cela ne fonctionnerait pas. Le plus dur, ça va être de trouver un programmateur d'eprom, mais mon petit doigt me dit qu'il y a pas mal de gars ici qui en ont .
- fneck
- Site Admin
- Messages : 17424
- Inscription : 01 avr. 2007 12:03
- Localisation : Drôme Provençale (26)
- Contact :
Re: Bug EF9345 sur VG5000?
Et s'il s'agit de faire avancer la science, on est toujours prêt à participer
Fabien https://www.system-cfg.com
Les bonnes pratiques de l'utilisateur du forum viewtopic.php?f=14&t=3
Les bonnes pratiques de l'utilisateur du forum viewtopic.php?f=14&t=3
- Carl
- Modérateur
- Messages : 13253
- Inscription : 08 avr. 2007 13:21
- Localisation : http://www.doledujura.fr
- Contact :
Re: Bug EF9345 sur VG5000?
Surtout la science du VG5000
Carl
Carl
Re: Bug EF9345 sur VG5000?
J'ai bien une EPROM et un programmateur, mais pas de téléviseur 60Hz pour tester
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
Re: Bug EF9345 sur VG5000?
Markerror, quel desassembleur utilises-tu? Il a l'air de reconnaitre l'entrée de données.
;757F: DJNZ go_51_01
;7581: RET
;7582: DB &01,&00,&02,&10,&03,&F6,&04,&13,&07,&08
Le mien ne sait pas le faire. Pour analyser le code c'est lourdingue....
;757F: DJNZ go_51_01
;7581: RET
;7582: DB &01,&00,&02,&10,&03,&F6,&04,&13,&07,&08
Le mien ne sait pas le faire. Pour analyser le code c'est lourdingue....
Re: Bug EF9345 sur VG5000?
Hum, J'ai dû faire ça avec avec Winape, mais je n'en suis pas sûr. Il permet de définir des zones de données, mais
je ne crois pas que c'est super pratique en fait.
J'avais retapé sérieusement le source de toute façon, ça ne te donnera probablement pas quelque chose de propre.
Lorsque j'avais fait des désassemblages de quelques jeux VG5000, je n'avais pas trouvé LE désassembleur parfait...
je ne crois pas que c'est super pratique en fait.
J'avais retapé sérieusement le source de toute façon, ça ne te donnera probablement pas quelque chose de propre.
Lorsque j'avais fait des désassemblages de quelques jeux VG5000, je n'avais pas trouvé LE désassembleur parfait...
Re: Bug EF9345 sur VG5000?
Pour le Forth du VG5000 on pouvait choisir les scripts de cette façon :
Les adresses copie_R2 et _R3 étaient utilisées par la routine d'impression car l'un représentait la couleur du caractère et l'autre sa couleur de fond. Dans ton cas tu n'en as pas besoin et tu peux éliminer de 0131 à 0140
Code : Tout sélectionner
0061 5287 script_40col_copie:
0062 5287 1E db 1Eh ; 'Longueur Script'
0063 5288 28 81 29 db $28, $81, $29
0064 528B data_tgs40:
0065 528B 00 db $00,
0066 528C 20 82 29 db $20, $82, $29
0067 528F data_mat40:
0068 528F 2E db $2E,
0069 5290 20 83 29 db $20, $83, $29
0070 5293 data_pat40:
0071 5293 77 db $77
0072 5294 20 84 29 db $20, $84, $29
0073 5297 data_dor40:
0074 5297 13 db $13,
0075 5298 20 87 29 db $20, $87, $29
0076 529B data_ror40:
0077 529B 08 db $08
0078 529C 22 db $22
0079 529D data_r240:
0080 529D 01 db $01
0081 529E 23 db $23
0082 529F data_r340:
0083 529F 06 db $06
0084 52A0 26 db $26
0085 52A1 data_r640:
0086 52A1 08 db $08
0087 52A2 27 db $27
0088 52A3 data_r740:
0089 52A3 00 db $00
0090 52A4 28 db $28
0091 52A5 data_krf40:
0092 52A5 00 db $00
0093 52A6
0094 52A6 script_80col_copie:
0095 52A6 1E db 1Eh ; 'Longueur Script'
0096 52A7 28 81 29 db $28, $81, $29
0097 52AA data_tgs80:
0098 52AA C0 db $c0,
0099 52AB 20 82 29 db $20, $82, $29
0100 52AE data_mat80:
0101 52AE 2E db $2E,
0102 52AF 20 83 29 db $20, $83, $29
0103 52B2 data_pat80:
0104 52B2 77 db $77
0105 52B3 20 84 29 db $20, $84, $29
0106 52B6 data_dor80:
0107 52B6 FA db $FA,
0108 52B7 20 87 29 db $20, $87, $29
0109 52BA data_ror80:
0110 52BA 08 db $08
0111 52BB 22 db $22
0112 52BC data_r280:
0113 52BC 01 db $01
0114 52BD 23 db $23
0115 52BE data_r380:
0116 52BE 06 db $06
0117 52BF 26 db $26
0118 52C0 data_r680:
0119 52C0 08 db $08
0120 52C1 27 db $27
0121 52C2 data_r780:
0122 52C2 00 db $00
0123 52C3 28 db $28
0124 52C4 data_krf80:
0125 52C4 00 db $00
0126 52C5
0127 52C5
0128 52C5
0129 52C5 lire_script: ; Adresse dans HL
0130 52C5
0131 52C5 E5 push hl
0132 52C6 11 16 00 ld de, $0016
0133 52C9 19 add hl, de
0134 52CA 7E ld a,(hl)
0135 52CB 32 32 52 ld (copie_R2),a
0136 52CE 11 02 00 ld de,$0002
0137 52D1 19 add hl,de
0138 52D2 7E ld a,(hl)
0139 52D3 32 33 52 ld (copie_R3),a
0140 52D6 E1 pop hl
0141 52D7 C5 PUSH BC
0142 52D8 CD EF 02 CALL $02ef
0143 52DB C1 POP BC
0144 52DC C9 RET