main.CPUClock=2MHz
main.Caption="Eureka"
main.ff.speed=20
main.ff.keymask[3]=1

CPU : K580wm80a {
  debug=cas
  mem=mm
  pc=F800
  port.maptomem=1
}

mem1 : Memory {
  size=C000
}

bios : Memory {
  rom="Specialist\eureka\eureka.rom"
}

romdisk : Memory {
  rom="Specialist\eureka\romdisk.bin"
  lsb=sys.portA
  msb=sys.portC[0-6]
}

ext : Memory {
  rom="Specialist\bios.rom"
}

reg1 : Register {
  read[0]=cas.playback
  read[1]=kbd.shift
  read[2-7]=kbd.col
  write[2-7]=kbd.col
}

romkbd : MemMap2 {
  map[00]=reg1
  map[01]=romdisk.data
}

sys : K580ww55 {
  portA=kbd.row
  portB=romkbd
  portC[0-3]=kbd.row2
  portC[6]=vid.mode2bpp
  portC[7]=cas.record
  portC[7]=romkbd.offset
}

mm : MemMap {
  map[0][0000-8FFF]=mem1[0000]
  map[0][9000-BFFF]=vid.mem
  map[0][C000-F7FF].ro=ext
  map[0][F800-F9FF].ro=bios[0000]
  map[0][FF00-FFFF]=sys.data
}

kbd : Specialist-Keyboard {
  layout="Specialist\layout.kbd"
}

vid : Specialist-Video {
}

beep : beep {
  input=sys.portC[5]
}

cas : tape-recorder {
  biproc[8AC7-89B8]=rk
  boproc[8558-89B8]=rk
  biproc[C377-C3C8]=rk
  boproc[C3D0-C3F4]=sp
  biproc[F8A3-F8D4]=rk
}
