je fais face à un problème étrange avec dcvg5k.
Le même programme suivant que je le place en ROM à 0000H ou en Ram (à 4A20H) ne donne pas le même résultat. Avec le programme placé en Ram, j'obtiens le résultat souhaité.
Est-ce un problème de dcvg5k. 6802Man, peux-tu le tester sur une vraie rom dans un VG5000? Merci d'avance
programme pour ROM
Code : Tout sélectionner
ORG 0H
LD SP,4100H
DI
LD HL,config_ef9345
CALL seq_ef
JP efface_ecran
seq_ef:
LD B,(HL)
INC HL
seq1:
CALL EFRDY
LD C,8FH
OUTI
LD C,0CFH
OUTI
JR NZ,seq1
RET
ef9345:
PUSH BC
PUSH AF
LD C,8FH
OUT (C),D
LD C,0CFH
OUT (C),E
CALL EFRDY
POP AF
POP BC
RET
EFRDY:
PUSH AF
LD A,20H
OUT (8FH),A
EFRD1:
IN A,(0CFH)
OR A
JP M,EFRD1
POP AF
RET
config_ef9345:
DB 20, 33,0,40,129, 33,127,40,131, 33,0,40,130, 33,35,40,132, 35,0, 34,1
compteur: DB "0", 0FFH, "8", 0FFH, "9", 0FFH, "1", "0", 0FFH, "1", "1", 0FFH, "1", "2", 0FFH
DB "1", "3", 0FFH, "1", "4", 0FFH, "1", "5", 0FFH, "1", "6", 0FFH,
DB "1", "7", 0FFH, "1", "8", 0FFH, "1", "9", 0FFH
DB "2", "0", 0FFH, "2", "1", 0FFH, "2", "2", 0FFH, "2", "3", 0FFH,
DB "2", "4", 0FFH, "2", "5", 0FFH, "2", "6", 0FFH
DB "2", "7", 0FFH, "2", "8", 0FFH, "2", "9", 0FFH, "3", "0", 0FFH, "3", "1", 0FFH
efface_ligne:
LD B,40
LD D,38
LD E,H
CALL ef9345
LD C,0
boucle_efface_ligne:
CALL ef9345
LD D,40
LD E,1
CALL ef9345
INC C
DJNZ boucle_efface_ligne
RET
efface_ecran:
LD H,0
CALL efface_ligne
LD H,1
boucle_ligne:
CALL efface_ligne
INC H
LD B,H
LD A,32
CP B
JP NZ,boucle_ligne
LD D,22H
LD E,1
CALL ef9345
LD D,23H
LD E,30H
CALL ef9345
LD B,0
LD HL,compteur-1
bcle:
LD A,B
OR A
JR Z,affiche
CP 8
JP M,non_affiche
affiche:
LD D,26H
LD E,A
CALL ef9345
LD D,27H
LD E,0
CALL ef9345
blce1:
INC HL
LD A,(HL)
CP 0FFH
JR Z,non_affiche
LD D,21H
LD E,A
CALL ef9345
LD D,28H
LD E,1
CALL ef9345
JR blce1
non_affiche:
INC B
LD A,B
CP 32
JR NZ,bcle
pipi: jp pipi
Code : Tout sélectionner
ORG 4A20H
LD SP,4100H
DI
LD HL,config_ef9345
CALL seq_ef
JP efface_ecran
seq_ef:
LD B,(HL)
INC HL
seq1:
CALL EFRDY
LD C,8FH
OUTI
LD C,0CFH
OUTI
JR NZ,seq1
RET
ef9345:
PUSH BC
PUSH AF
LD C,8FH
OUT (C),D
LD C,0CFH
OUT (C),E
CALL EFRDY
POP AF
POP BC
RET
EFRDY:
PUSH AF
LD A,20H
OUT (8FH),A
EFRD1:
IN A,(0CFH)
OR A
JP M,EFRD1
POP AF
RET
config_ef9345:
DB 20, 33,0,40,129, 33,127,40,131, 33,0,40,130, 33,35,40,132, 35,0, 34,1
compteur: DB "0", 0FFH, "8", 0FFH, "9", 0FFH, "1", "0", 0FFH, "1", "1", 0FFH, "1", "2", 0FFH
DB "1", "3", 0FFH, "1", "4", 0FFH, "1", "5", 0FFH, "1", "6", 0FFH,
DB "1", "7", 0FFH, "1", "8", 0FFH, "1", "9", 0FFH
DB "2", "0", 0FFH, "2", "1", 0FFH, "2", "2", 0FFH, "2", "3", 0FFH,
DB "2", "4", 0FFH, "2", "5", 0FFH, "2", "6", 0FFH
DB "2", "7", 0FFH, "2", "8", 0FFH, "2", "9", 0FFH, "3", "0", 0FFH, "3", "1", 0FFH
efface_ligne:
LD B,40
LD D,38
LD E,H
CALL ef9345
LD C,0
boucle_efface_ligne:
CALL ef9345
LD D,40
LD E,1
CALL ef9345
INC C
DJNZ boucle_efface_ligne
RET
efface_ecran:
LD H,0
CALL efface_ligne
LD H,1
boucle_ligne:
CALL efface_ligne
INC H
LD B,H
LD A,32
CP B
JP NZ,boucle_ligne
LD D,22H
LD E,1
CALL ef9345
LD D,23H
LD E,30H
CALL ef9345
LD B,0
LD HL,compteur-1
bcle:
LD A,B
OR A
JR Z,affiche
CP 8
JP M,non_affiche
affiche:
LD D,26H
LD E,A
CALL ef9345
LD D,27H
LD E,0
CALL ef9345
blce1:
INC HL
LD A,(HL)
CP 0FFH
JR Z,non_affiche
LD D,21H
LD E,A
CALL ef9345
LD D,28H
LD E,1
CALL ef9345
JR blce1
non_affiche:
INC B
LD A,B
CP 32
JR NZ,bcle
pipi: jp pipi