#include "kernel.h"
#include "bbc.h"

#include "general.h"
#include "Externals.h"

/*  Softswitches materiels de l'Apple //e */
extern BOOL RdC3ROM, RdCxROM, Rd80store, RdPage2, RdHires, RdRAMRd, RdRAMWrt;
extern BOOL RdAltChar, Rd80vid, RdLCRAM, RdBNK2, RdAltZP;
extern BOOL RdText, RdMixed;
extern BOOL WrLCRAM;

extern u_char Vkbd;

extern u_char ReadKbd(u_char *p);
extern void RegleLCSW(u_char a);

extern void SRdPage2True(void), SRdPage2False(void);
extern void SRdHiresTrue(void), SRdHiresFalse(void);
extern void SRdTextTrue(void), SRdTextFalse(void);
extern void SRdMixedTrue(void), SRdMixedFalse(void);

u_char EmuReadCx(u_char fsa1)
{

switch(fsa1 & 0xff)
{
case 0x13:
	return(RdRAMRd ? 0x80 : 0);
case 0x14:
	return(RdRAMWrt ? 0x80 : 0);
case 0x00:
	return(ReadKbd(&Vkbd));
case 0x11:
	return(RdBNK2 ? 0x80 : 0);
case 0x12:
	return(RdLCRAM ? 0x80 : 0);
	break;
case 0x16:
	return(RdAltZP ? 0x80 : 0);
case 0x55:
	if(!RdPage2) SRdPage2True();
	break;
case 0x54:
	if(RdPage2) SRdPage2False();
	break;
case 0x57:
	if(!RdHires) SRdHiresTrue();
	break;
case 0x56:
	if(RdHires) SRdHiresFalse();
	break;
case 0x51:
	if(!RdText) SRdTextTrue();
	break;
case 0x50:
	if(RdText) SRdTextFalse();
	break;
case 0x53:
	if(!RdMixed) SRdMixedTrue();
	break;
case 0x52:
	if(RdMixed) SRdMixedFalse();
	break;                             
case 0x80:
case 0x81:
case 0x82:
case 0x83:
case 0x88:
case 0x89:
case 0x8a:
case 0x8b:
	RegleLCSW(fsa1 & 0x0f);
	break;
case 0x10:
	Vkbd &= 0x7f;
	return(0);
case 0x15:
	return(RdCxROM ? 0x80 : 0);
case 0x17:
	return(RdC3ROM ? 0x80 : 0);
case 0x18:
	return(Rd80store ? 0x80 : 0);
case 0x1f:
	return(Rd80vid ? 0x80 : 0);
	break;
case 0x1c:
	return(RdPage2 ? 0x80 : 0);
case 0x1d:
	return(RdHires ? 0x80 : 0);
case 0x1e:
	return(RdAltChar ? 0x80 : 0);
	break;
case 0x1a:
	return(RdText ? 0x80 : 0);
case 0x1b:
	return(RdMixed ? 0x80 : 0);
case 0x61: /* OA key */
	return((_kernel_osbyte(121,5 ^ 0x80,0) & 0xff) ? 0x80 : 0);
case 0x62: /* SA key */
	return((_kernel_osbyte(121,8 ^ 0x80,0) & 0xff) ? 0x80 : 0);
}
return(bgv1);
}

