On verra si le "juste" était un peu juste.__sam__ a écrit : ↑15 oct. 2023 20:55 En particulier la gestion des registres d'E/S: https://sourceforge.net/p/teoemulator/c ... hardware.c
Ceci dit, dans l'ensemble ça me semble logique - à part ce truc qui me laisse perplexe :
Code : Tout sélectionner
case 0xE7C9:
mc6821_WriteData(&pia_int.portb, val);
/* écriture sur le port donnée de l'imprimante */
printer_WriteData(0x01, mc6821_ReadPort(&pia_int.portb));
/* écriture sur le STROBE de l'imprimante */
printer_SetStrobe(mc6821_ReadPort(&pia_int.portb)&0x02);
switch (mc6821_ReadPort(&pia_int.portb)&0xF8)
{
case 0xF0: /* DDRB 0x0F */
mempager.data.pia_page=2;
break;
case 0xE8: /* DDRB 0x17 */
mempager.data.pia_page=3;
break;
case 0x18: /* DDRB 0xE7 */
mempager.data.pia_page=4;
break;
case 0x58: /* DDRB 0xA7 */
mempager.data.pia_page=5;
break;
case 0x98: /* DDRB 0x67 */
mempager.data.pia_page=6;
break;
case 0xD8: /* DDRB 0x27 */
mempager.data.pia_page=7;
break;
Je trouve ça perturbant de modifier la page de PIA après l'envoi d'un octet sur un port parallèle. Je suppose qu'il faut je regarde l'explication dans le manuel.