#include <assert.h>
#include "baudtab16.h"
#include "canctl.h"
#include "peekpoke.h"

static volatile unsigned short *canregs;

static void busnop(void) {
}

static unsigned int prosoft_can_peek8(int adr) {
  canregs[0] = adr;
  return (canregs[1] & 0xFF);
}
static void prosoft_can_poke8(int adr, unsigned int dat) {
  canregs[0] = adr;
  canregs[1] = dat;
}
static void prosoft_can_peekstream(int adr, unsigned char *buf, int n) {
  while (n--) {
    *buf++ = can_peek8(adr++);
  }
}
static void prosoft_can_pokestream(int adr, unsigned char *buf, int n) {
  while (n--) {
    can_poke8(adr++,*buf++);
  }
}


void init_prosoft() {
  int devmem=-1;
  canregs  = map_phys(0x600ff0e0,&devmem);
  assert(devmem != -1);

  buslock = busnop;
  busunlock = busnop;
  buspreempt = busnop;
  can_peek8 = prosoft_can_peek8;
  can_poke8 = prosoft_can_poke8;
  can_peekstream = prosoft_can_peekstream;
  can_pokestream = prosoft_can_pokestream;

  irq_num = 33;
  baudparms = baudparms16;
}
