--- uae/src/uaelib.c 2018/04/24 16:38:39 1.1.1.1 +++ uae/src/uaelib.c 2018/04/24 16:39:14 1.1.1.2 @@ -53,8 +53,10 @@ #include "config.h" #include "options.h" + #include "memory.h" #include "custom.h" +#include "readcpu.h" #include "newcpu.h" #include "xwin.h" #include "autoconf.h" @@ -172,12 +174,12 @@ static ULONG emulib_DisableJoystick(void */ static ULONG emulib_SetFrameRate(void) { - if (regs.d[0] == 0) + if (m68k_dreg(regs, 0) == 0) return 0; - else if (regs.d[0] > 20) + else if (m68k_dreg(regs, 0) > 20) return 0; else { - framerate = regs.d[0]; + framerate = m68k_dreg(regs, 0); return 1; } } @@ -187,10 +189,10 @@ static ULONG emulib_SetFrameRate(void) */ static ULONG emulib_ChangeLanguage(void) { - if (regs.d[0] > 5) + if (m68k_dreg(regs, 0) > 5) return 0; else { - switch( regs.d[0] ) { + switch( m68k_dreg(regs, 0) ) { case 0: keyboard_lang = KBD_LANG_US; break; @@ -206,6 +208,9 @@ static ULONG emulib_ChangeLanguage(void) case 4: keyboard_lang = KBD_LANG_IT; break; + case 5: + keyboard_lang = KBD_LANG_ES; + break; default: break; } @@ -221,14 +226,14 @@ static ULONG emulib_ChangeLanguage(void) */ static ULONG emulib_ChgCMemSize(void) { - ULONG memsize = regs.d[0]; + ULONG memsize = m68k_dreg(regs, 0); if (memsize != 0x80000 && memsize != 0x100000 && memsize != 0x200000) { memsize = 0x200000; fprintf(stderr, "Unsupported chipmem size!\n"); } - regs.d[0] = 0; + m68k_dreg(regs, 0) = 0; chipmem_size = memsize; m68k_reset(); @@ -243,7 +248,7 @@ static ULONG emulib_ChgCMemSize(void) */ static ULONG emulib_ChgSMemSize(void) { - ULONG memsize = regs.d[0]; + ULONG memsize = m68k_dreg(regs, 0); if (memsize != 0x80000 && memsize != 0x100000 && memsize != 0x180000 && memsize != 0x1C0000) { @@ -251,7 +256,7 @@ static ULONG emulib_ChgSMemSize(void) fprintf(stderr, "Unsupported bogomem size!\n"); } - regs.d[0] = 0; + m68k_dreg(regs, 0) = 0; bogomem_size = memsize; m68k_reset(); return 1; @@ -265,14 +270,14 @@ static ULONG emulib_ChgSMemSize(void) */ static ULONG emulib_ChgFMemSize(void) { - ULONG memsize = regs.d[0]; + ULONG memsize = m68k_dreg(regs, 0); if (memsize != 0x100000 && memsize != 0x200000 && memsize != 0x400000 && memsize != 0x800000) { memsize = 0; fprintf(stderr, "Unsupported fastmem size!\n"); } - regs.d[0] = 0; + m68k_dreg(regs, 0) = 0; fastmem_size = memsize; m68k_reset(); return 0; @@ -283,7 +288,7 @@ static ULONG emulib_ChgFMemSize(void) */ static ULONG emulib_EjectDisk(void) { - ULONG drive = regs.d[0]; + ULONG drive = m68k_dreg(regs, 0); if (drive > 3) return 0; @@ -300,8 +305,8 @@ static ULONG emulib_InsertDisk(void) int quit = 0,i=0,j; char real_name[256]; UBYTE abyte; - ULONG drive = regs.d[0]; - CPTR name = regs.a[0]; + ULONG drive = m68k_dreg(regs, 0); + CPTR name = m68k_areg(regs, 0); FILE *file; if (drive > 3) @@ -350,7 +355,7 @@ static ULONG emulib_ExitEmu(void) static ULONG emulib_GetUaeConfig(void) { int i,j; - CPTR place = regs.a[0]; + CPTR place = m68k_areg(regs, 0); put_long(place , version); put_long(place + 4, chipmem_size); @@ -402,28 +407,28 @@ static ULONG emulib_SetUaeConfig(void) static ULONG emulib_GetDisk(void) { int i; - if (regs.d[0] > 3) + if (m68k_dreg(regs, 0) > 3) return 0; - switch( regs.d[0] ) { + switch( m68k_dreg(regs, 0) ) { case 0: for(i=0;i<256;i++) { - put_byte( regs.a[0] + i, df0[i] ); + put_byte( m68k_areg(regs, 0) + i, df0[i] ); } break; case 1: for(i=0;i<256;i++) { - put_byte( regs.a[0] + i, df1[i] ); + put_byte( m68k_areg(regs, 0) + i, df1[i] ); } break; case 2: for(i=0;i<256;i++) { - put_byte( regs.a[0] + i, df2[i] ); + put_byte( m68k_areg(regs, 0) + i, df2[i] ); } break; case 3: for(i=0;i<256;i++) { - put_byte( regs.a[0] + i, df3[i] ); + put_byte( m68k_areg(regs, 0) + i, df3[i] ); } break; default: @@ -444,8 +449,8 @@ static ULONG emulib_Debug(void) static ULONG emulib_FakeInit(void) { - segList = regs.a[0]; - return regs.d[0]; + segList = m68k_areg(regs, 0); + return m68k_dreg(regs, 0); } /* @@ -460,26 +465,26 @@ static ULONG emulib_Init(void) if (LibBase != 0) return 0; - regs.a[0] = functable; - regs.a[1] = datatable; - regs.a[2] = FakeInit; - regs.d[0] = 1024; - regs.d[1] = 0; - tmp1 = CallLib(regs.a[6], -0x54); + m68k_areg(regs, 0) = functable; + m68k_areg(regs, 1) = datatable; + m68k_areg(regs, 2) = FakeInit; + m68k_dreg(regs, 0) = 1024; + m68k_dreg(regs, 1) = 0; + tmp1 = CallLib(m68k_areg(regs, 6), -0x54); if (tmp1 == 0) { fprintf(stderr, "Cannot create UAE.library! "); return 0; } - regs.a[1] = tmp1; - CallLib(regs.a[6], -0x18c); + m68k_areg(regs, 1) = tmp1; + CallLib(m68k_areg(regs, 6), -0x18c); LibBase = tmp1; #if 0 - regs.a[1] = ds("dos.library"); - regs.d[0] = 0; - dosbase = CallLib(regs.a[6], -552); + m68k_areg(regs, 1) = ds("dos.library"); + m68k_dreg(regs, 0) = 0; + dosbase = CallLib(m68k_areg(regs, 6), -552); printf("%08lx\n", dosbase); #endif - regs.d[0] = 1; + m68k_dreg(regs, 0) = 1; return 0; }