Skip to content

Commit

Permalink
C65: autoload 4 C65 too, common now mostly /w M65
Browse files Browse the repository at this point in the history
  • Loading branch information
lgblgblgb committed Jul 27, 2018
1 parent 37fd3cc commit 11494ee
Show file tree
Hide file tree
Showing 6 changed files with 59 additions and 25 deletions.
17 changes: 17 additions & 0 deletions targets/c65/commodore_65.c
Expand Up @@ -191,6 +191,10 @@ void clear_emu_events ( void )

static Uint8 cia1_in_b ( void )
{
#ifdef FAKE_TYPING_SUPPORT
if (XEMU_UNLIKELY(c64_fake_typing_enabled) && (((cia1.PRA | (~cia1.DDRA)) & 0xFF) != 0xFF) && (((cia1.PRB | (~cia1.DDRB)) & 0xFF) == 0xFF))
c64_handle_fake_typing_internals(cia1.PRA | (~cia1.DDRA));
#endif
return c64_keyboard_read_on_CIA1_B(
cia1.PRA | (~cia1.DDRA),
cia1.PRB | (~cia1.DDRB),
Expand Down Expand Up @@ -804,6 +808,10 @@ int main ( int argc, char **argv )
xemucfg_define_str_option("hostfsdir", NULL, "Path of the directory to be used as Host-FS base");
//xemucfg_define_switch_option("noaudio", "Disable audio");
xemucfg_define_str_option("rom", "#c65-system.rom", "Override system ROM path to be loaded");
#ifdef FAKE_TYPING_SUPPORT
xemucfg_define_switch_option("go64", "Go into C64 mode after start");
xemucfg_define_switch_option("autoload", "Load and start the first program from disk");
#endif
#ifdef XEMU_SNAPSHOT_SUPPORT
xemucfg_define_str_option("snapload", NULL, "Load a snapshot from the given file");
xemucfg_define_str_option("snapsave", NULL, "Save a snapshot into the given file before Xemu would exit");
Expand Down Expand Up @@ -835,6 +843,15 @@ int main ( int argc, char **argv )
);
osd_init_with_defaults();
// Start!!
#ifdef FAKE_TYPING_SUPPORT
if (xemucfg_get_bool("go64")) {
if (xemucfg_get_bool("autoload"))
c64_register_fake_typing(fake_typing_for_load64);
else
c64_register_fake_typing(fake_typing_for_go64);
} else if (xemucfg_get_bool("autoload"))
c64_register_fake_typing(fake_typing_for_load65);
#endif
cycles = 0;
if (audio)
SDL_PauseAudioDevice(audio, 0);
Expand Down
3 changes: 3 additions & 0 deletions targets/c65/xemu-target.h
Expand Up @@ -14,3 +14,6 @@
#define DMA_TARGET_IOWRITER_FUNC io_write
#define DMA_TARGET_MEMWRITER_FUNC write_phys_mem_for_dma
#define DMA_LIST_READER_FUNC read_phys_mem_for_dma

#define FAKE_TYPING_SUPPORT
#define C65_FAKE_TYPING_LOAD_SEQS
25 changes: 0 additions & 25 deletions targets/mega65/mega65.c
Expand Up @@ -62,31 +62,6 @@ static int cpu_cycles_per_step = 100; // some init value, will be overriden, bu



#ifdef FAKE_TYPING_SUPPORT
static const Uint8 fake_typing_for_go64[] = {
0x32,0x46,0x23,0x13,0x01,0x31,0x01, 0xFF // GO64 <RETURN> Y <RETURN> <END_MARKER>
};
static const Uint8 fake_typing_for_load64[] = {
0x32,0x46,0x23,0x13,0x01,0x31,0x01, // GO64 <RETURN> Y <RETURN>
0x51,0xFE,0x46,0xFE,0x43,0x57,0x23,0x20,0x01,0x01, // P <TOGGLE_SHIFT> O <TOGGGLE_SHIFT> 0,65 <RETURN>
0x52,0xFE,0x46,0x73,0xFE,0x61,0xFE,0x73,0xFE,0x01, // L <TOGGLE_SHIFT> O 2 <TOGGLE_SHIFT> * <TOGGLE_SHIFT> 2 <RETURN>
0x51,0xFE,0x46,0xFE,0x43,0x57,0x23,0x13,0x01,0x01, // P <TOGGLE_SHIFT> O <TOGGGLE_SHIFT> 0,64 <RETURN>
0x21,0x36,0x47,0x01, // RUN <RETURN>
0xFF // <END_MARKER>
};
static const Uint8 fake_typing_for_load65[] = {
//0x21,0x36,0x47,0xFE,0x73,0xFE,0x61,0xFE,0x73,0xFE,0x01, // RUN"*"
//0xFF
0x51,0x46,0x45,0x16,0x43,0x57,0x23,0x20,0x01,0x01, // POKE 0,65 <RETURN>
0x52,0xFE,0x46,0x73,0xFE,0x61,0xFE,0x73,0xFE,0x01, // L <TOGGLE_SHIFT> O 2 <TOGGLE_SHIFT> * <TOGGLE_SHIFT> 2 <RETURN>
0x51,0x46,0x45,0x16,0x43,0x57,0x23,0x13,0x01,0x01, // POKE 0,64 <RETURN>
0x21,0x36,0x47,0x01, // RUN <RETURN>
0xFF // <END_MARKER>
};
#endif



void cpu65_illegal_opcode_callback ( void )
{
// FIXME: implement this, it won't be ever seen now, as not even switch to 6502 NMOS persona is done yet ...
Expand Down
1 change: 1 addition & 0 deletions targets/mega65/xemu-target.h
Expand Up @@ -46,3 +46,4 @@
#define DMA_LIST_READER_FUNC memory_dma_list_reader

#define FAKE_TYPING_SUPPORT
#define C65_FAKE_TYPING_LOAD_SEQS
30 changes: 30 additions & 0 deletions xemu/c64_kbd_mapping.c
Expand Up @@ -131,6 +131,36 @@ Uint8 c64_get_joy_state ( void )

#ifdef FAKE_TYPING_SUPPORT

#ifdef C65_FAKE_TYPING_LOAD_SEQS
const Uint8 fake_typing_for_go64[] = {
0x32,0x46,0x23,0x13,0x01,0x31,0x01, 0xFF // GO64 <RETURN> Y <RETURN> <END_MARKER>
};
const Uint8 fake_typing_for_load64[] = {
0x32,0x46,0x23,0x13,0x01,0x31,0x01, // GO64 <RETURN> Y <RETURN>
#ifdef MEGA65
0x51,0xFE,0x46,0xFE,0x43,0x57,0x23,0x20,0x01,0x01, // P <TOGGLE_SHIFT> O <TOGGGLE_SHIFT> 0,65 <RETURN>
#endif
0x52,0xFE,0x46,0x73,0xFE,0x61,0xFE,0x73,0xFE,0x01, // L <TOGGLE_SHIFT> O 2 <TOGGLE_SHIFT> * <TOGGLE_SHIFT> 2 <RETURN>
#ifdef MEGA65
0x51,0xFE,0x46,0xFE,0x43,0x57,0x23,0x13,0x01,0x01, // P <TOGGLE_SHIFT> O <TOGGGLE_SHIFT> 0,64 <RETURN>
#endif
0x21,0x36,0x47,0x01, // RUN <RETURN>
0xFF // <END_MARKER>
};
const Uint8 fake_typing_for_load65[] = {
//0x21,0x36,0x47,0xFE,0x73,0xFE,0x61,0xFE,0x73,0xFE,0x01, // RUN"*"
//0xFF
#ifdef MEGA65
0x51,0x46,0x45,0x16,0x43,0x57,0x23,0x20,0x01,0x01, // POKE 0,65 <RETURN>
#endif
0x52,0xFE,0x46,0x73,0xFE,0x61,0xFE,0x73,0xFE,0x01, // L <TOGGLE_SHIFT> O 2 <TOGGLE_SHIFT> * <TOGGLE_SHIFT> 2 <RETURN>
#ifdef MEGA65
0x51,0x46,0x45,0x16,0x43,0x57,0x23,0x13,0x01,0x01, // POKE 0,64 <RETURN>
#endif
0x21,0x36,0x47,0x01, // RUN <RETURN>
0xFF // <END_MARKER>
};
#endif

static struct {
int attention;
Expand Down
8 changes: 8 additions & 0 deletions xemu/c64_kbd_mapping.h
Expand Up @@ -84,11 +84,19 @@ static XEMU_INLINE Uint8 c64_keyboard_read_on_CIA1_A ( Uint8 kbsel_b, Uint8 effe
}

#ifdef FAKE_TYPING_SUPPORT

#ifdef C65_FAKE_TYPING_LOAD_SEQS
extern const Uint8 fake_typing_for_go64[];
extern const Uint8 fake_typing_for_load64[];
extern const Uint8 fake_typing_for_load65[];
#endif

extern void c64_register_fake_typing ( const Uint8 *keys );
extern void c64_stop_fake_typing ( void );
extern void c64_handle_fake_typing_internals ( Uint8 keysel );

extern int c64_fake_typing_enabled;

#endif

#endif

0 comments on commit 11494ee

Please sign in to comment.