Commit Graph

85 Commits

Author SHA1 Message Date
Andrew Tonner
831e7a2268 Merge fixes to SheepShaver 2020-02-12 21:29:44 -08:00
kanjitalk755
10de3e7239 static link (BII/SS Windows) 2019-01-20 19:11:43 +09:00
kanjitalk755
03a92c7815 append pref item cpuclock 2019-01-16 19:44:09 +09:00
kanjitalk755
e760d289b2 SS adjust minimum ramsize 2018-07-09 19:24:52 +09:00
kanjitalk755
e690b631da BII enable --config argument
SS delete dead links
2018-07-06 19:33:30 +09:00
kanjitalk755
700b57d758 added pref item "hotkey"
added MB notation pref item "ramsize"
2018-06-27 19:13:30 +09:00
kanjitalk755
52fe2290fe Linux: change configure defaults to SDL2
MinGW: change SDL1 to SDL2
2018-06-26 21:00:52 +09:00
kanjitalk755
d8290af331 Merge branch 'mingw32' 2018-06-20 19:34:06 +09:00
kanjitalk755
226f667b36 mingw32 JIT build (but crashes) 2018-06-20 10:26:37 +09:00
kanjitalk755
1cd716ee8e Merge commit 'da46a07b7c25996aeda2cf8b49d3b9bf2e08c46f' into mingw32 2018-06-19 10:33:33 +09:00
kanjitalk755
e01129b748 Merge commit '01f63e605a68856718dd16e07835cd2d61ba6727' into DavidLudwig_and_jvernet 2018-06-14 17:33:25 +09:00
Alexei Svitkine
1e4e7179d4 more changes needed to move STR_WINDOW_TITLE_GRABBED cross-platform code 2017-12-10 11:27:03 -05:00
David Ludwig
8940880794 make build scripts reference both video_sdl.cpp and video_sdl2.cpp 2017-09-04 12:44:34 -04:00
Andrew Tonner
3a742ae3f2 python build script: symlink m4 dir before autogen that requires it 2017-01-22 23:26:36 -08:00
Andrew Tonner
2e7771a4ae python build script: put showing environment after the GTK install so we can double check the paths 2017-01-22 23:01:08 -08:00
Andrew Tonner
2f8c7f441c python build script: set ACLOCAL_PATH for gtk 2017-01-22 22:15:29 -08:00
Andrew Tonner
519276d788 python build script: added gtk donwload/install 2017-01-22 21:11:01 -08:00
Andrew Tonner
fcfa19ca27 python build scripts: URLs cleanup 2017-01-22 21:10:22 -08:00
Andrew Tonner
b8b7b96a1c put build tools first in the path rather than last 2017-01-22 21:10:07 -08:00
Andrew Tonner
c4c61cec64 python build script: adding sed and grep I'm using from msys to packages list 2017-01-22 18:48:39 -08:00
Andrew Tonner
f2238fe3e7 python build script: option to use a specific mingw path 2017-01-22 17:48:56 -08:00
Andrew Tonner
e3fe441709 python build script: build arg for passing --build to configure scripts 2017-01-22 16:49:23 -08:00
Andrew Tonner
8548644595 don't show "Will install to" output if that is disabled 2017-01-22 16:28:32 -08:00
Andrew Tonner
7c01c27e02 python build script: option to add an additional PATH entry with highest priority for building 2017-01-22 16:08:03 -08:00
Andrew Tonner
bab9a35ff2 python build script: fix for top Makefile changes 2017-01-22 15:25:02 -08:00
Andrew Tonner
4326182b02 python build script: fix for fresh install 2017-01-22 15:08:33 -08:00
Andrew Tonner
fa9b425541 python build script: remove old config.status before rebuilding 2017-01-20 13:27:25 -08:00
Andrew Tonner
bdd2ee1190 python build script: do make clean if we reconfigured 2017-01-19 21:38:37 -08:00
Andrew Tonner
69a3c31fff Add configure option to disable VOSF; add it to python build script 2017-01-19 21:38:21 -08:00
Andrew Tonner
1229eb0ea9 if the originals for any symlinked dirs (which are just copies under msys/mingw) have been updated, delete the copies and make links again 2017-01-19 21:14:46 -08:00
Andrew Tonner
d8f5d43a9c python build script: when getting modified time for a directory, also check contents' times 2017-01-19 05:13:01 -08:00
Andrew Tonner
21a6d39d4b python build script: jit option 2017-01-19 05:12:03 -08:00
Andrew Tonner
dae89116e7 python build script: option to copy the supplied precompiled dyngen output files instead of running dyngen 2017-01-18 21:11:21 -08:00
Andrew Tonner
1af0c4685a python build script: give a better error message when there is a syntax error in the JSON cache file 2017-01-18 19:57:34 -08:00
Andrew Tonner
9efd46d396 build script pep-8 2017-01-18 19:31:27 -08:00
Andrew Tonner
bd3fecc780 build script cleanup & renames & updating TODOs; cleanup gitignore 2017-01-18 19:29:13 -08:00
Andrew Tonner
ffd6294943 build script comments & todos & cleanup 2017-01-18 19:01:49 -08:00
Andrew Tonner
7ef9f10712 don't undef __STRICT_ANSI__ since it's not necessary with gnu++11 2017-01-18 19:00:42 -08:00
Andrew Tonner
aabd23408d option to run a shell command 2017-01-18 15:02:20 -08:00
Andrew Tonner
17b977b6ad fix silly name of inline bswap 16 2017-01-18 14:48:02 -08:00
Andrew Tonner
e0783e5c20 add option to copy sheepshaver exe after build 2017-01-18 14:47:21 -08:00
Andrew Tonner
fa8c87acff add LDFLAGS for static libgcc and stdc++ so we don't need dlls for those 2017-01-18 14:46:55 -08:00
Andrew Tonner
0ffa196f29 remove PASCAL undef 2017-01-18 14:44:33 -08:00
Andrew Tonner
b74ae092c9 builds on mingw32 without jit, still untested 2017-01-18 04:41:40 -08:00
Christian Bauer
ca96911c07 add SheepShaver -> BasiliskII symlinks 2012-06-18 20:02:42 +02:00
asvitkine
6566ae16fa Dump PPC disassembly on crash 2012-06-16 02:16:40 +00:00
asvitkine
3856561935 Fix builds on platforms that may have gotten broken due to my vmdir changes. 2009-09-21 03:34:14 +00:00
asvitkine
868bb283d2 [Michael Schmitt]
Attached is a patch to SheepShaver, to fix a problem where the ROM file can only be found on the first boot.

When a user creates a new SheepShaver machine, there is no preference file, so there is not ROM path preference. SheepShaver has logic so that in this case, it will look for a ROM file named "ROM" or "Mac OS ROM" in the current directory.

The user starts SheepShaver in order to get to the built-in Preferences Editor, and changes various settings (such as creation of a hard disk). Then the user reboots.

If the user forgot to set the ROM path at this time, then SheepShaver can no longer boot. The only recourse is for the user to find and delete the preferences file, or use an external preferences editor to set the ROM path.

The fix is to change SheepShaver to use the default ROM names when either the rom path is null (no preference) OR an empty string (preference exists with no rom path).
2009-08-26 00:11:56 +00:00
asvitkine
b3b5db5456 [Michael Schmitt]
Attached is a patch to SheepShaver to fix memory allocation problems when OS X 10.5 is the host. It also relaxes the 512 MB RAM limit on OS X hosts.


Problem
-------
Some users have been unable to run SheepShaver on OS X 10.5 (Leopard) hosts. The symptom is error "ERROR: Cannot map RAM: File already exists".

SheepShaver allocates RAM at fixed addresses. If it is running in "Real" addressing mode, and can't allocate at address 0, then it was hard-coded to allocate the RAM area at 0x20000000. The ROM area as allocated at 0x40800000.

The normal configuration is for SheepShaver to run under SDL, which is a Cocoa wrapper. By the time SheepShaver does its memory allocations, the Cocoa application has already started. The result is the SheepShaver memory address space already contains libraries, fonts, Input Managers, and IOKit areas.

On Leopard hosts these areas can land on the same addresses SheepShaver needs, so SheepShaver's memory allocation fails.


Solution
--------
The approach is to change SheepShaver (on Unix & OS X hosts) to allocate the RAM area anywhere it can find the space, rather than at a fixed address.

This could result in the RAM allocated higher than the ROM area, which causes a crash. To prevent this from occurring, the RAM and ROM areas are allocated contiguously.

Previously the ROM starting address was a constant ROM_BASE, which was used throughout the source files. The ROM start address is now a variable ROMBase. ROMBase is allocated and set by main_*.cpp just like RAMBase.

A side-effect of this change is that it lifts the 512 MB RAM limit for OS X hosts. The limit was because the fixed RAM and ROM addresses were such that the RAM could only be 512 MB before it overlapped the ROM area.


Impact
------
The change to make ROMBase a variable is throughout all hosts & addressing modes.

The RAM and ROM areas will only shift when run on Unix & OS X hosts, otherwise the same fixed allocation address is used as before.

This change is limited to "Real" addressing mode. Unlike Basilisk II, SheepShaver *pre-calculates* the offset for "Direct" addressing mode; the offset is compiled into the program. If the RAM address were allowed to shift, it could result in the RAM area wrapping around address 0.


Changes to main_unix.cpp
------------------------
1. Real addressing mode no longer defines a RAM_BASE constant.

2. The base address of the Mac ROM (ROMBase) is defined and exported by this program.

3. Memory management helper vm_mac_acquire is renamed to vm_mac_acquire_fixed. Added a new memory management helper vm_mac_acquire, which allocates memory at any address.

4. Changed and rearranged the allocation of RAM and ROM areas.

Before it worked like this:

  - Allocate ROM area
  - If can, attempt to allocate RAM at address zero
  - If RAM not allocated at 0, allocate at fixed address

We still want to try allocating the RAM at zero, and if using DIRECT addressing we're still going to use the fixed addresses. So we don't know where the ROM should be until after we do the RAM. The new logic is:

  - If can, attempt to allocate RAM at address zero
  - If RAM not allocated at 0
      if REAL addressing
         allocate RAM and ROM together. The ROM address is aligned to a 1 MB boundary
      else (direct addressing)
         allocate RAM at fixed address
  - If ROM hasn't been allocated yet, allocate at fixed address

5. Calculate ROMBase and ROMBaseHost based on where the ROM was loaded.

6. There is a crash if the RAM is allocated too high. To try and catch this, check if it was allocated higher than the kernel data address.

7. Change subsequent code from using constant ROM_BASE to variable ROMBase.


Changes to Other Programs
-------------------------
emul_op.cpp, main.cpp, name_registery.cpp, rom_patches.cpp, rsrc_patches.cpp, emul_ppc.cpp, sheepshaver_glue.cpp, ppc-translate-cpp:
Change from constant ROM_BASE to variable ROMBase.

ppc_asm.S: It was setting register to a hard-coded literal address: 0x40b0d000. Changed to set it to ROMBase + 0x30d000.

ppc_asm.tmpl: It defined a macro ASM_LO16 but it assumed that the macro would always be used with operands that included a register specification. This is not true. Moved the register specification from the macro to the macro invocations.

main_beos.cpp, main_windows.cpp: Since the subprograms are all expecting a variable ROMBase, all the main_*.cpp pgrams have to define and export it. The ROM_BASE constant is moved here for consistency. The mains for beos and windows just allocate the ROM at the same fixed address as before, set ROMBaseHost and ROMBase to that address, and then use ROMBase for the subsequent code.

cpu_emulation.h: removed ROM_BASE constant. This value is moved to the main_*.cpp modules, to be consistent with RAM_BASE.

user_strings_unix.cpp, user_strings_unix.h: Added new error messages related to errors that occur when the RAM and ROM are allocated anywhere.
2009-08-18 18:26:11 +00:00
asvitkine
5b958defa7 support for .sheepvm bundles on macosx, containing "prefs" and "nvram" files 2009-07-23 19:12:51 +00:00