--- BasiliskII/src/main.cpp 1999/10/19 17:41:17 1.1 +++ BasiliskII/src/main.cpp 2001/06/30 17:21:51 1.9 @@ -1,7 +1,7 @@ /* * main.cpp - Startup/shutdown code * - * Basilisk II (C) 1997-1999 Christian Bauer + * Basilisk II (C) 1997-2001 Christian Bauer * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -41,6 +41,20 @@ #define DEBUG 0 #include "debug.h" +#if ENABLE_MON +#include "mon.h" + +static uint32 mon_read_byte_b2(uint32 adr) +{ + return ReadMacInt8(adr); +} + +static void mon_write_byte_b2(uint32 adr, uint32 b) +{ + WriteMacInt8(adr, b); +} +#endif + /* * Initialize everything, returns false on error @@ -50,7 +64,7 @@ bool InitAll(void) { // Check ROM version if (!CheckROM()) { - ErrorAlert(GetString(STR_UNSUPPORTED_ROM_TYPE_ERR)); + ErrorAlert(STR_UNSUPPORTED_ROM_TYPE_ERR); return false; } @@ -65,13 +79,19 @@ bool InitAll(void) TwentyFourBitAddressing = true; break; case ROM_VERSION_II: - CPUType = 2; + CPUType = PrefsFindInt32("cpu"); + if (CPUType < 2) CPUType = 2; + if (CPUType > 4) CPUType = 4; FPUType = PrefsFindBool("fpu") ? 1 : 0; + if (CPUType == 4) FPUType = 1; // 68040 always with FPU TwentyFourBitAddressing = true; break; case ROM_VERSION_32: - CPUType = 3; + CPUType = PrefsFindInt32("cpu"); + if (CPUType < 2) CPUType = 2; + if (CPUType > 4) CPUType = 4; FPUType = PrefsFindBool("fpu") ? 1 : 0; + if (CPUType == 4) FPUType = 1; // 68040 always with FPU TwentyFourBitAddressing = false; break; } @@ -82,10 +102,10 @@ bool InitAll(void) XPRAMInit(); // Set boot volume - int16 i16 = PrefsFindInt16("bootdrive"); + int16 i16 = PrefsFindInt32("bootdrive"); XPRAM[0x78] = i16 >> 8; XPRAM[0x79] = i16 & 0xff; - i16 = PrefsFindInt16("bootdriver"); + i16 = PrefsFindInt32("bootdriver"); XPRAM[0x7a] = i16 >> 8; XPRAM[0x7b] = i16 & 0xff; @@ -95,8 +115,10 @@ bool InitAll(void) CDROMInit(); SCSIInit(); +#if SUPPORTS_EXTFS // Init external file system ExtFSInit(); +#endif // Init serial ports SerialInit(); @@ -117,6 +139,12 @@ bool InitAll(void) if (!VideoInit(ROMVersion == ROM_VERSION_64K || ROMVersion == ROM_VERSION_PLUS || ROMVersion == ROM_VERSION_CLASSIC)) return false; + // Set default video mode + XPRAM[0x56] = 0x42; // 'B' + XPRAM[0x57] = 0x32; // '2' + XPRAM[0x58] = DepthToAppleMode(VideoMonitor.mode.depth); + XPRAM[0x59] = 0; + #if EMULATED_68K // Init 680x0 emulation (this also activates the memory system which is needed for PatchROM()) if (!Init680x0()) @@ -125,9 +153,17 @@ bool InitAll(void) // Install ROM patches if (!PatchROM()) { - ErrorAlert(GetString(STR_UNSUPPORTED_ROM_TYPE_ERR)); + ErrorAlert(STR_UNSUPPORTED_ROM_TYPE_ERR); return false; } + +#if ENABLE_MON + // Initialize mon + mon_init(); + mon_read_byte = mon_read_byte_b2; + mon_write_byte = mon_write_byte_b2; +#endif + return true; } @@ -138,6 +174,11 @@ bool InitAll(void) void ExitAll(void) { +#if ENABLE_MON + // Deinitialize mon + mon_exit(); +#endif + // Save XPRAM XPRAMExit(); @@ -159,8 +200,10 @@ void ExitAll(void) // Exit network EtherExit(); +#if SUPPORTS_EXTFS // Exit external file system ExtFSExit(); +#endif // Exit drivers SCSIExit(); @@ -168,3 +211,18 @@ void ExitAll(void) DiskExit(); SonyExit(); } + + +/* + * Display error/warning alert given the message string ID + */ + +void ErrorAlert(int string_id) +{ + ErrorAlert(GetString(string_id)); +} + +void WarningAlert(int string_id) +{ + WarningAlert(GetString(string_id)); +}