MCUME/MCUME_teensy41/teensy800/pia.c

72 wiersze
1.1 KiB
C

#include <stdio.h>
#include "atari.h"
#include "cpu.h"
#include "pia.h"
UBYTE PACTL;
UBYTE PBCTL;
UBYTE PORTA;
UBYTE PORTB;
static UBYTE PORTA_mask = 0xff;
static UBYTE PORTB_mask = 0xff;
void PIA_Initialise(void)
{
PORTA = 0xff;
PORTB = 0xff;
}
UBYTE PIA_GetByte(UWORD addr)
{
UBYTE byte;
addr &= 0x03;
switch (addr) {
case _PACTL:
byte = PACTL;
break;
case _PBCTL:
byte = PBCTL;
break;
case _PORTA:
byte = Atari_PORT(0);
byte &= PORTA_mask;
break;
case _PORTB:
byte = Atari_PORT(1);
byte &= PORTB_mask;
break;
}
return byte;
}
int PIA_PutByte(UWORD addr, UBYTE byte)
{
addr &= 0xff03;
switch (addr) {
case _PACTL:
PACTL = byte;
break;
case _PBCTL:
PBCTL = byte;
break;
case _PORTA:
if (!(PACTL & 0x04))
PORTA_mask = ~byte;
break;
case _PORTB:
// if ((byte == 0) && (machine == AtariXL || machine == AtariXE))
// break; /* special hack for old Atari800 games like is Tapper, for example */
if (!(PBCTL & 0x04))
PORTB_mask = ~byte;
break;
}
return FALSE;
}