ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/BasiliskII/src/main.cpp
(Generate patch)

Comparing BasiliskII/src/main.cpp (file contents):
Revision 1.2 by cebix, 1999-10-21T22:39:53Z vs.
Revision 1.12 by cebix, 2002-03-19T14:25:50Z

# Line 1 | Line 1
1   /*
2   *  main.cpp - Startup/shutdown code
3   *
4 < *  Basilisk II (C) 1997-1999 Christian Bauer
4 > *  Basilisk II (C) 1997-2002 Christian Bauer
5   *
6   *  This program is free software; you can redistribute it and/or modify
7   *  it under the terms of the GNU General Public License as published by
# Line 33 | Line 33
33   #include "serial.h"
34   #include "ether.h"
35   #include "clip.h"
36 + #include "adb.h"
37   #include "rom_patches.h"
38   #include "user_strings.h"
39   #include "prefs.h"
# Line 41 | Line 42
42   #define DEBUG 0
43   #include "debug.h"
44  
45 + #if ENABLE_MON
46 + #include "mon.h"
47 +
48 + static uint32 mon_read_byte_b2(uint32 adr)
49 + {
50 +        return ReadMacInt8(adr);
51 + }
52 +
53 + static void mon_write_byte_b2(uint32 adr, uint32 b)
54 + {
55 +        WriteMacInt8(adr, b);
56 + }
57 + #endif
58 +
59  
60   /*
61   *  Initialize everything, returns false on error
# Line 50 | Line 65 | bool InitAll(void)
65   {
66          // Check ROM version
67          if (!CheckROM()) {
68 <                ErrorAlert(GetString(STR_UNSUPPORTED_ROM_TYPE_ERR));
68 >                ErrorAlert(STR_UNSUPPORTED_ROM_TYPE_ERR);
69                  return false;
70          }
71  
# Line 65 | Line 80 | bool InitAll(void)
80                          TwentyFourBitAddressing = true;
81                          break;
82                  case ROM_VERSION_II:
83 <                        CPUType = 2;
83 >                        CPUType = PrefsFindInt32("cpu");
84 >                        if (CPUType < 2) CPUType = 2;
85 >                        if (CPUType > 4) CPUType = 4;
86                          FPUType = PrefsFindBool("fpu") ? 1 : 0;
87 +                        if (CPUType == 4) FPUType = 1;  // 68040 always with FPU
88                          TwentyFourBitAddressing = true;
89                          break;
90                  case ROM_VERSION_32:
91 <                        CPUType = 3;
91 >                        CPUType = PrefsFindInt32("cpu");
92 >                        if (CPUType < 2) CPUType = 2;
93 >                        if (CPUType > 4) CPUType = 4;
94                          FPUType = PrefsFindBool("fpu") ? 1 : 0;
95 +                        if (CPUType == 4) FPUType = 1;  // 68040 always with FPU
96                          TwentyFourBitAddressing = false;
97                          break;
98          }
# Line 81 | Line 102 | bool InitAll(void)
102          // Load XPRAM
103          XPRAMInit();
104  
105 +        // Load XPRAM default values if signature not found
106 +        if (XPRAM[0x0c] != 0x4e || XPRAM[0x0d] != 0x75
107 +         || XPRAM[0x0e] != 0x4d || XPRAM[0x0f] != 0x63) {
108 +                D(bug("Loading XPRAM default values\n"));
109 +                memset(XPRAM, 0, 0x100);
110 +                XPRAM[0x0c] = 0x4e;     // "NuMc" signature
111 +                XPRAM[0x0d] = 0x75;
112 +                XPRAM[0x0e] = 0x4d;
113 +                XPRAM[0x0f] = 0x63;
114 +                XPRAM[0x01] = 0x80;     // InternalWaitFlags = DynWait (don't wait for SCSI devices upon bootup)
115 +                XPRAM[0x10] = 0xa8;     // Standard PRAM values
116 +                XPRAM[0x11] = 0x00;
117 +                XPRAM[0x12] = 0x00;
118 +                XPRAM[0x13] = 0x22;
119 +                XPRAM[0x14] = 0xcc;
120 +                XPRAM[0x15] = 0x0a;
121 +                XPRAM[0x16] = 0xcc;
122 +                XPRAM[0x17] = 0x0a;
123 +                XPRAM[0x1c] = 0x00;
124 +                XPRAM[0x1d] = 0x02;
125 +                XPRAM[0x1e] = 0x63;
126 +                XPRAM[0x1f] = 0x00;
127 +                XPRAM[0x08] = 0x13;
128 +                XPRAM[0x09] = 0x88;
129 +                XPRAM[0x0a] = 0x00;
130 +                XPRAM[0x0b] = 0xcc;
131 +                XPRAM[0x76] = 0x00;     // OSDefault = MacOS
132 +                XPRAM[0x77] = 0x01;
133 +        }
134 +
135          // Set boot volume
136 <        int16 i16 = PrefsFindInt16("bootdrive");
136 >        int16 i16 = PrefsFindInt32("bootdrive");
137          XPRAM[0x78] = i16 >> 8;
138          XPRAM[0x79] = i16 & 0xff;
139 <        i16 = PrefsFindInt16("bootdriver");
139 >        i16 = PrefsFindInt32("bootdriver");
140          XPRAM[0x7a] = i16 >> 8;
141          XPRAM[0x7b] = i16 & 0xff;
142  
# Line 112 | Line 163 | bool InitAll(void)
163          // Init clipboard
164          ClipInit();
165  
166 +        // Init ADB
167 +        ADBInit();
168 +
169          // Init audio
170          AudioInit();
171  
# Line 119 | Line 173 | bool InitAll(void)
173          if (!VideoInit(ROMVersion == ROM_VERSION_64K || ROMVersion == ROM_VERSION_PLUS || ROMVersion == ROM_VERSION_CLASSIC))
174                  return false;
175  
176 +        // Set default video mode in XPRAM
177 +        XPRAM[0x56] = 0x42;     // 'B'
178 +        XPRAM[0x57] = 0x32;     // '2'
179 +        XPRAM[0x58] = DepthToAppleMode(VideoMonitor.mode.depth);
180 +        XPRAM[0x59] = 0;
181 +
182   #if EMULATED_68K
183          // Init 680x0 emulation (this also activates the memory system which is needed for PatchROM())
184          if (!Init680x0())
# Line 127 | Line 187 | bool InitAll(void)
187  
188          // Install ROM patches
189          if (!PatchROM()) {
190 <                ErrorAlert(GetString(STR_UNSUPPORTED_ROM_TYPE_ERR));
190 >                ErrorAlert(STR_UNSUPPORTED_ROM_TYPE_ERR);
191                  return false;
192          }
193 +
194 + #if ENABLE_MON
195 +        // Initialize mon
196 +        mon_init();
197 +        mon_read_byte = mon_read_byte_b2;
198 +        mon_write_byte = mon_write_byte_b2;
199 + #endif
200 +
201          return true;
202   }
203  
# Line 140 | Line 208 | bool InitAll(void)
208  
209   void ExitAll(void)
210   {
211 + #if ENABLE_MON
212 +        // Deinitialize mon
213 +        mon_exit();
214 + #endif
215 +
216          // Save XPRAM
217          XPRAMExit();
218  
# Line 149 | Line 222 | void ExitAll(void)
222          // Exit audio
223          AudioExit();
224  
225 +        // Exit ADB
226 +        ADBExit();
227 +
228          // Exit clipboard
229          ClipExit();
230  
# Line 172 | Line 248 | void ExitAll(void)
248          DiskExit();
249          SonyExit();
250   }
251 +
252 +
253 + /*
254 + *  Display error/warning alert given the message string ID
255 + */
256 +
257 + void ErrorAlert(int string_id)
258 + {
259 +        ErrorAlert(GetString(string_id));
260 + }
261 +
262 + void WarningAlert(int string_id)
263 + {
264 +        WarningAlert(GetString(string_id));
265 + }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines