--- BasiliskII/src/main.cpp 2000/04/10 18:52:25 1.5 +++ BasiliskII/src/main.cpp 2002/04/25 11:00:30 1.13 @@ -1,7 +1,7 @@ /* * main.cpp - Startup/shutdown code * - * Basilisk II (C) 1997-2000 Christian Bauer + * Basilisk II (C) 1997-2002 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 @@ -33,6 +33,7 @@ #include "serial.h" #include "ether.h" #include "clip.h" +#include "adb.h" #include "rom_patches.h" #include "user_strings.h" #include "prefs.h" @@ -64,7 +65,7 @@ bool InitAll(void) { // Check ROM version if (!CheckROM()) { - ErrorAlert(GetString(STR_UNSUPPORTED_ROM_TYPE_ERR)); + ErrorAlert(STR_UNSUPPORTED_ROM_TYPE_ERR); return false; } @@ -101,11 +102,41 @@ bool InitAll(void) // Load XPRAM XPRAMInit(); + // Load XPRAM default values if signature not found + if (XPRAM[0x0c] != 0x4e || XPRAM[0x0d] != 0x75 + || XPRAM[0x0e] != 0x4d || XPRAM[0x0f] != 0x63) { + D(bug("Loading XPRAM default values\n")); + memset(XPRAM, 0, 0x100); + XPRAM[0x0c] = 0x4e; // "NuMc" signature + XPRAM[0x0d] = 0x75; + XPRAM[0x0e] = 0x4d; + XPRAM[0x0f] = 0x63; + XPRAM[0x01] = 0x80; // InternalWaitFlags = DynWait (don't wait for SCSI devices upon bootup) + XPRAM[0x10] = 0xa8; // Standard PRAM values + XPRAM[0x11] = 0x00; + XPRAM[0x12] = 0x00; + XPRAM[0x13] = 0x22; + XPRAM[0x14] = 0xcc; + XPRAM[0x15] = 0x0a; + XPRAM[0x16] = 0xcc; + XPRAM[0x17] = 0x0a; + XPRAM[0x1c] = 0x00; + XPRAM[0x1d] = 0x02; + XPRAM[0x1e] = 0x63; + XPRAM[0x1f] = 0x00; + XPRAM[0x08] = 0x13; + XPRAM[0x09] = 0x88; + XPRAM[0x0a] = 0x00; + XPRAM[0x0b] = 0xcc; + XPRAM[0x76] = 0x00; // OSDefault = MacOS + XPRAM[0x77] = 0x01; + } + // 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; @@ -132,6 +163,9 @@ bool InitAll(void) // Init clipboard ClipInit(); + // Init ADB + ADBInit(); + // Init audio AudioInit(); @@ -139,6 +173,13 @@ bool InitAll(void) if (!VideoInit(ROMVersion == ROM_VERSION_64K || ROMVersion == ROM_VERSION_PLUS || ROMVersion == ROM_VERSION_CLASSIC)) return false; + // Set default video mode in XPRAM + XPRAM[0x56] = 0x42; // 'B' + XPRAM[0x57] = 0x32; // '2' + const monitor_desc &main_monitor = *VideoMonitors[0]; + XPRAM[0x58] = main_monitor.depth_to_apple_mode(main_monitor.get_current_mode().depth); + XPRAM[0x59] = 0; + #if EMULATED_68K // Init 680x0 emulation (this also activates the memory system which is needed for PatchROM()) if (!Init680x0()) @@ -147,7 +188,7 @@ bool InitAll(void) // Install ROM patches if (!PatchROM()) { - ErrorAlert(GetString(STR_UNSUPPORTED_ROM_TYPE_ERR)); + ErrorAlert(STR_UNSUPPORTED_ROM_TYPE_ERR); return false; } @@ -182,6 +223,9 @@ void ExitAll(void) // Exit audio AudioExit(); + // Exit ADB + ADBExit(); + // Exit clipboard ClipExit(); @@ -205,3 +249,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)); +}