minimacplus/via.c

100 lines
1.6 KiB
C

#include <stdio.h>
#include <stdint.h>
#include "via.h"
#include "m68k.h"
void viaCbPortAWrite(unsigned int val);
void viaCbPortBWrite(unsigned int val);
typedef struct {
uint8_t ddra;
uint8_t ddrb;
} Via;
static Via via;
void viaWrite(unsigned int addr, unsigned int val) {
if (addr==0x0) {
//ORB
} else if (addr==0x1) {
//ORA
viaCbPortAWrite(val);
} else if (addr==0x2) {
//DDRB
via.ddrb=val;
} else if (addr==0x3) {
//DDRA
via.ddra=val;
} else if (addr==0x4) {
//T1L-L
} else if (addr==0x5) {
//T1C-H
} else if (addr==0x6) {
//T1L-L
} else if (addr==0x7) {
//T1L-H
} else if (addr==0x8) {
//T2L-l
} else if (addr==0x9) {
//T2C-H
} else if (addr==0xa) {
//SR
} else if (addr==0xb) {
//ACR
} else if (addr==0xc) {
//PCR
} else if (addr==0xd) {
//IFR
} else if (addr==0xe) {
//IER
} else if (addr==0xf) {
//ORA
}
printf("VIA write %x val %x\n", addr, val);
}
unsigned int viaRead(unsigned int addr) {
unsigned int pc=m68k_get_reg(NULL, M68K_REG_PC);
unsigned int val=0;
if (addr==0x0) {
//ORB
} else if (addr==0x1) {
//ORA
} else if (addr==0x2) {
//DDRB
val=via.ddrb;
} else if (addr==0x3) {
//DDRA
val=via.ddra;
} else if (addr==0x4) {
//T1L-L
} else if (addr==0x5) {
//T1C-H
} else if (addr==0x6) {
//T1L-L
} else if (addr==0x7) {
//T1L-H
} else if (addr==0x8) {
//T2L-l
} else if (addr==0x9) {
//T2C-H
} else if (addr==0xa) {
//SR
} else if (addr==0xb) {
//ACR
} else if (addr==0xc) {
//PCR
} else if (addr==0xd) {
//IFR
} else if (addr==0xe) {
//IER
} else if (addr==0xf) {
//ORA
}
printf("PC %x VIA read %x val %x\n", pc, addr, val);
return val;
}