Je fais des expérimentations sur VG5000 (mame) avec le proc graphique.
Voici un prog simple que j'ai pu trouver sur le forum qui permet de bien comprendre le fonctionnement de l'ef9345. Il fonctionne mais lors du retour à l'éditeur basic, je ne retrouve pas le magnifique fond cyan et les caractères noir. De plus il arrive que les caractères soient brouillés.
Question : Comment faire en sorte de revenir à l'état précédant le call &"7000". Faut-il remettre le TGS,PAT,MAT à l'état initial du VG5000 ?
D'avance merci pour votre aide.
Code : Tout sélectionner
org $7000
main:
DI
PUSH HL
PUSH IX
; TGS + PAT definissent 000 = 40 car commandes longues
; TGS = 01 -> 0000 0001
; PAT = 47 -> 0100 0111
; PAT7=0; TGS7=0; TGS6=0 -> 000 = 40 car commandes longues
LD D, $21 ; Dans R1
LD E, $01 ; 0000 0001
CALL EF9345
LD D, $28 ; R0 exec
LD E, $81 ; Commande indirection r=1-> TGS Write
CALL EF9345; ecrire dans le registre TGS (commandes longues)
LD D, $21 ; Dans R1
LD E, $47 ; 0100 0111
CALL EF9345
LD D, $28 ; R0 exec
LD E, $83 ; Commande indirection r=3 -> PAT Write
CALL EF9345; ecrire dans le registre PAT
LD D, $21 ; Dans R1
LD E, $04 ; Bleu
CALL EF9345
LD D, $28 ; R0 exec avec valeur de E ligne suivante
LD E, $82 ; Commande indirection (1000 0 010) r=2 -> MAT Write
CALL EF9345; ecrire dans le registre MAT
; A
LD D, $22 ; R2
LD E, $01 ; Attributs jeu de car / att video
CALL EF9345
LD D, $23 ; R3
LD E, $71 ; Blanc/Rouge dans R3 01110001 -> Bits de poids fort = 7
CALL EF9345
LD D, $21; R1 = car
LD E, 65; car 65
CALL EF9345
LD D, $26 ; R6 = ligne (0 pour 0 et n+7 pour [1 <= n <= 24])
LD E, 00
CALL EF9345
LD D, $27 ; R7 = colonne entre 0 et 39
LD E, 00
CALL EF9345
LD D, $28 ; D=40 (Registre R0 + 8 pour l'execution) avec commande ligne suivante
LD E, $00 ; et E=0 KRF dit a l'ef9345 d'executer les registres definis plus tot
CALL EF9345
;~ boucle_sans_fin:
;~ JP boucle_sans_fin
; retour basic -> Pas top
POP IX
POP HL
EI
RET
EF9345:
CALL $0286; teste si EF935 est pret
CALL $0D7C; ecrit dans EF9345 (D=numero du registre, E=valeur du registre)
RET