#include <stdio.h> #include "system.h" #include "cpu.h" #include "atom.h" #include "screen.h" UBYTE memory[65536], attrib[65536]; void init_memory () { int i; for (i=0;i<65536;i++) { memory[i] = 0; attrib[i] = RAM; } } void SetMemory (int addr1, int addr2, int kind) { int i; for (i=addr1;i<=addr2;i++) { attrib[i] = kind; } } static UBYTE video_val = 0; bool Atom_PutByte (UWORD addr, UBYTE byte) { /* Always in hardware */ if (attrib[addr] == VIDEO) { /* printf("Video %x = %x\n", addr, byte); */ update_video(addr, byte); } else { if (addr == 0xb000) { UBYTE video = byte & 0xf0; /* printf("Hardware %4x %2x\n", addr, byte); */ set_keyboard(byte & 0x0f); if (video != video_val) { printf("Video mode %x %x\n", byte, byte >> 5); set_mode(byte & 0x10, byte >> 5); video_val = video; } } memory[addr] = byte; } return FALSE; } UBYTE Atom_GetByte (UWORD addr) { /*** if (addr == 0xb001) printf(" Read from %x = %x\n", addr, memory[addr]); ***/ return memory[addr]; }