--- uae/src/expansion.c 2018/04/24 16:42:04 1.1.1.4 +++ uae/src/expansion.c 2018/04/24 16:52:55 1.1.1.6 @@ -234,7 +234,7 @@ static void REGPARAM2 expamem_wput (uaec (*card_map[ecard]) (); write_log (" Card %d (Zorro%s) done.\n", ecard + 1, expamem_type() == 0xc0 ? "II" : "III"); ++ecard; - if (ecard <= MAX_EXPANSION_BOARDS) + if (ecard < MAX_EXPANSION_BOARDS) (*card_init[ecard]) (); else expamem_init_clear (); @@ -260,7 +260,7 @@ static void REGPARAM2 expamem_bput (uaec (*card_map[ecard]) (); write_log (" Card %d (Zorro%s) done.\n", ecard + 1, expamem_type() == 0xc0 ? "II" : "III"); ++ecard; - if (ecard <= MAX_EXPANSION_BOARDS) + if (ecard < MAX_EXPANSION_BOARDS) (*card_init[ecard]) (); else expamem_init_clear (); @@ -276,7 +276,7 @@ static void REGPARAM2 expamem_bput (uaec case 0x4c: write_log (" Card %d (Zorro %s) had no success.\n", ecard + 1, expamem_type() == 0xc0 ? "II" : "III"); ++ecard; - if (ecard <= MAX_EXPANSION_BOARDS) + if (ecard < MAX_EXPANSION_BOARDS) (*card_init[ecard]) (); else expamem_init_clear (); @@ -590,7 +590,7 @@ static void expamem_map_filesys (void) filesys_start = ((expamem_hi | (expamem_lo >> 4)) << 16); map_banks (&filesys_bank, filesys_start >> 16, 1); - write_log ("Filesystem: mapped memory.\n"); + write_log ("Filesystem: mapped memory @$%lx.\n", filesys_start); /* 68k code needs to know this. */ a = here (); org (0xF0FFFC); @@ -600,7 +600,12 @@ static void expamem_map_filesys (void) static void expamem_init_filesys (void) { - uae_u8 diagarea[] = { 0x90, 0x00, 0x01, 0x0C, 0x01, 0x00, 0x01, 0x06 }; + /* struct DiagArea - the size has to be large enough to store several device ROMTags */ + uae_u8 diagarea[] = { 0x90, 0x00, /* da_Config, da_Flags */ + 0x02, 0x00, /* da_Size */ + 0x01, 0x00, /* da_DiagPoint */ + 0x01, 0x06 /* da_BootPoint */ + }; expamem_init_clear(); expamem_write (0x00, Z2_MEM_64KB | rom_card | zorroII); @@ -616,6 +621,7 @@ static void expamem_init_filesys (void) expamem_write (0x20, 0x00); /* ser.no. Byte 2 */ expamem_write (0x24, 0x01); /* ser.no. Byte 3 */ + /* er_InitDiagVec */ expamem_write (0x28, 0x10); /* Rom-Offset hi */ expamem_write (0x2c, 0x00); /* ROM-Offset lo */