64-bit Version?

About BasiliskII, a 68k Mac emulator for Windows, MacOSX, and Linux that can run System 7.x through MacOS 8.1.

Moderators: Cat_7, Ronald P. Regensburg

Post Reply
pheriwinkle
Space Cadet
Posts: 3
Joined: Tue Jun 12, 2018 12:50 am

64-bit Version?

Post by pheriwinkle »

Since it looks like Mac OS X will soon be ending support for 32-bit apps, I was wondering if anyone has the expertise and kindness to make a 64-bit version of Basilisk II?
uyjulian
Apple Corer
Posts: 244
Joined: Fri Aug 27, 2010 1:02 am

Re: 64-bit Version?

Post by uyjulian »

I'm currently working on a 64-bit port.
emendelson
Forum All-Star
Posts: 1706
Joined: Tue Oct 14, 2008 12:12 am

Re: 64-bit Version?

Post by emendelson »

David Ludwig also has a 64-bit version, but the Unix folder feature doesn't work. Search the forum for David Ludwig and you'll find it.
User avatar
rickyzhang
Apple Corer
Posts: 205
Joined: Mon Sep 15, 2014 7:59 pm

Re: 64-bit Version?

Post by rickyzhang »

pheriwinkle wrote:Since it looks like Mac OS X will soon be ending support for 32-bit apps, I was wondering if anyone has the expertise and kindness to make a 64-bit version of Basilisk II?
Kencu makes BII into macport. You can build a 64 bit version in your Mac by yourself with a simple command like

Code: Select all

sudo port install basiliskii
There is an App for that!
https://github.com/rickyzhang82
User avatar
adespoton
Forum All-Star
Posts: 4226
Joined: Fri Nov 27, 2009 5:11 am
Location: Emaculation.com
Contact:

Re: 64-bit Version?

Post by adespoton »

rickyzhang wrote:
pheriwinkle wrote:Since it looks like Mac OS X will soon be ending support for 32-bit apps, I was wondering if anyone has the expertise and kindness to make a 64-bit version of Basilisk II?
Kencu makes BII into macport. You can build a 64 bit version in your Mac by yourself with a simple command like

Code: Select all

sudo port install basiliskii
Is there a homebrew cask for this? I generally avoid macports these days.

Interesting that we've essentially got three forks of 64-bit BII going now. I hope we can merge them all back to the master in the near future.
User avatar
rickyzhang
Apple Corer
Posts: 205
Joined: Mon Sep 15, 2014 7:59 pm

Re: 64-bit Version?

Post by rickyzhang »

This is not a fork. But different packaging. It is a common practice in Linux that you get tons of distributor where all source from the same kernel or package.

If you check macport build file of BII. Nothing special is done there. It just setup basic dependency like GTK and SDLV1.

PS: I love macports because it still support Power PC. That's how I build git in my PowerBook G4.
There is an App for that!
https://github.com/rickyzhang82
emendelson
Forum All-Star
Posts: 1706
Joined: Tue Oct 14, 2008 12:12 am

Re: 64-bit Version?

Post by emendelson »

rickyzhang wrote:Kencu makes BII into macport. You can build a 64 bit version in your Mac by yourself with a simple command like

Code: Select all

sudo port install basiliskii
This page says the architecture is i386, not 64-bit:

https://github.com/macports/macports-po ... i/Portfile
platform darwin i386 {
supported_archs i386
Does that really build a 64-bit BasiliskII executable??
User avatar
rickyzhang
Apple Corer
Posts: 205
Joined: Mon Sep 15, 2014 7:59 pm

Re: 64-bit Version?

Post by rickyzhang »

Well, you have keen eyes. I did an install myself. I have never done that before because I always build from source code in development.

It is 32 bit:

Code: Select all

Ricky@imac:~/repo/github/CuraEngine$ sudo port contents basiliskii
Port basiliskii contains:
  /Applications/MacPorts/BasiliskII/BasiliskII.app/Contents/Info.plist
  /Applications/MacPorts/BasiliskII/BasiliskII.app/Contents/MacOS/BasiliskII
  /Applications/MacPorts/BasiliskII/BasiliskII.app/Contents/PkgInfo
  /Applications/MacPorts/BasiliskII/BasiliskII.app/Contents/Resources/BasiliskII.icns
  /Applications/MacPorts/BasiliskII/BasiliskII.app/Contents/Resources/Credits.html
  /Applications/MacPorts/BasiliskII/BasiliskII.app/Contents/Resources/English.lproj/InfoPlist.strings
  /Applications/MacPorts/BasiliskII/BasiliskII.app/Contents/Resources/English.lproj/MainMenu.nib/Collapsed.tiff
  /Applications/MacPorts/BasiliskII/BasiliskII.app/Contents/Resources/English.lproj/MainMenu.nib/Expanded.tiff
  /Applications/MacPorts/BasiliskII/BasiliskII.app/Contents/Resources/English.lproj/MainMenu.nib/classes.nib
  /Applications/MacPorts/BasiliskII/BasiliskII.app/Contents/Resources/English.lproj/MainMenu.nib/info.nib
  /Applications/MacPorts/BasiliskII/BasiliskII.app/Contents/Resources/English.lproj/MainMenu.nib/objects.nib
  /Applications/MacPorts/BasiliskII/BasiliskII.app/Contents/Resources/English.lproj/MainMenu.nib/resetH.tiff
  /Applications/MacPorts/BasiliskII/BasiliskII.app/Contents/Resources/English.lproj/MainMenu.nib/resetN.tiff
  /Applications/MacPorts/BasiliskII/BasiliskII.app/Contents/Resources/English.lproj/MainMenu.nib/shutdownH.tiff
  /Applications/MacPorts/BasiliskII/BasiliskII.app/Contents/Resources/English.lproj/MainMenu.nib/shutdownN.tiff
  /Applications/MacPorts/BasiliskII/BasiliskII.app/Contents/Resources/HowTo.html
  /Applications/MacPorts/BasiliskII/BasiliskII.app/Contents/Resources/README.txt
  /Applications/MacPorts/BasiliskII/BasiliskII.app/Contents/Resources/ToDo.html
  /Applications/MacPorts/BasiliskII/BasiliskII.app/Contents/Resources/Versions.html
  /Applications/MacPorts/BasiliskII/BasiliskII_idiosyncracies.txt
  /opt/local/bin/BasiliskII
  /opt/local/share/BasiliskII/fbdevices
  /opt/local/share/BasiliskII/keycodes
  /opt/local/share/BasiliskII/tunconfig
  /opt/local/share/man/man1/BasiliskII.1.gz

Ricky@imac:~/repo/github/CuraEngine$ file /opt/local/bin/BasiliskII
/opt/local/bin/BasiliskII: Mach-O executable i386
Let me shoot an email to kencu to change this. There is no reason to use 32bit at all. Because I build BII in 64 bit all the time.

Thanks for finding this!
There is an App for that!
https://github.com/rickyzhang82
User avatar
rickyzhang
Apple Corer
Posts: 205
Joined: Mon Sep 15, 2014 7:59 pm

Re: 64-bit Version?

Post by rickyzhang »

A ticket is filed :https://trac.macports.org/ticket/56656#ticket

I believe Kencu the maintainer of macport will come up a solution very quick.
There is an App for that!
https://github.com/rickyzhang82
User avatar
rickyzhang
Apple Corer
Posts: 205
Joined: Mon Sep 15, 2014 7:59 pm

Re: 64-bit Version?

Post by rickyzhang »

If you get SDL and GTK from macport, you can follow the build instruction in https://github.com/cebix/macemu/wiki/Ba ... tion-Guide:

Code: Select all

...
g++ -o BasiliskII  	obj/main.o obj/prefs.o obj/prefs_items.o obj/sys_unix.o obj/rom_patches.o obj/slot_rom.o obj/rsrc_patches.o obj/emul_op.o obj/macos_util.o obj/xpram.o obj/xpram_unix.o obj/timer.o obj/timer_unix.o obj/adb.o obj/serial.o obj/ether.o obj/sony.o obj/disk.o obj/cdrom.o obj/scsi.o obj/video.o obj/audio.o obj/extfs.o obj/disk_sparsebundle.o obj/tinyxml2.o obj/user_strings.o obj/user_strings_unix.o obj/sshpty.o obj/strlcpy.o obj/rpc_unix.o obj/vm_alloc.o obj/sigsegv.o obj/video_blit.o obj/video_sdl.o obj/extfs_macosx.o obj/serial_unix.o obj/ether_unix.o obj/scsi_dummy.o obj/audio_sdl.o obj/prefs_editor_gtk.o obj/mon.o obj/mon_6502.o obj/mon_z80.o obj/mon_cmd.o obj/mon_disass.o obj/mon_ppc.o obj/mon_lowmem.o obj/floatformat.o obj/i386-dis.o obj/m68k-dis.o obj/m68k-opc.o obj/sys_darwin.o obj/main_unix.o obj/prefs_unix.o obj/clip_macosx64.o obj/pict.o obj/utils_macosx.o obj/basilisk_glue.o obj/memory.o obj/newcpu.o obj/readcpu.o obj/fpu_ieee.o obj/cpustbl.o obj/cpudefs.o obj/cpuemu1.o obj/cpuemu2.o obj/cpuemu3.o obj/cpuemu4.o obj/cpuemu5.o obj/cpuemu6.o obj/cpuemu7.o obj/cpuemu8.o obj/bootp.o obj/ip_output.o obj/tcp_input.o obj/cksum.o obj/mbuf.o obj/tcp_output.o obj/debug.o obj/misc.o obj/tcp_subr.o obj/if.o obj/sbuf.o obj/tcp_timer.o obj/ip_icmp.o obj/slirp.o obj/tftp.o obj/ip_input.o obj/socket.o obj/udp.o -lm -lreadline -lncurses  -L/opt/local/lib -lSDLmain -Wl,-framework,AppKit -lSDL -Wl,-framework,Cocoa -lstdc++ -framework AppKit -framework Carbon -framework IOKit -framework CoreFoundation -L/opt/local/lib -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -lgio-2.0 -lXrender -lXinerama -lXi -lXrandr -lXcursor -lXcomposite -lXdamage -lXfixes -lX11 -lXext -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lfribidi -lglib-2.0 -lintl -Wl,-framework -Wl,CoreFoundation -lfontconfig -lfreetype
/usr/bin/true BasiliskII

Ricky@imac:~/repo/github/macemu/BasiliskII/src/Unix$ file BasiliskII
BasiliskII: Mach-O 64-bit executable x86_64
There is an App for that!
https://github.com/rickyzhang82
emendelson
Forum All-Star
Posts: 1706
Joined: Tue Oct 14, 2008 12:12 am

Re: 64-bit Version?

Post by emendelson »

rickyzhang, is there any chance you would be willing to share your 64-bit build (if it is a static build that can be used on other systems)?
kencu
Space Cadet
Posts: 2
Joined: Wed Jun 13, 2018 3:28 am

Re: 64-bit Version?

Post by kencu »

Hello, all. The MacPorts build Portfile is very malleable. The reason I prefer MacPorts over homebrew and Fink is the power of the TCL language for building things. You can easily do almost anything in TCL.

There are downsides to the 64bit build of BasiliskII -- no networking, no JIT -- and when I last dove into it deeply, there were also serious screen glitches in the full-screen use of basiliskii (I usually use it full screen). These occurred in the Menu Bar region of the screen.

FYI, you can very easily modify the Portfile to your liking, and modify the build as you wish! IMHO this is much easier than building outside MacPorts, or building with Xcode.

First of all, a command like

bbedit `port file basiliskii-devel`

will bring up the Portfile for editing. If you comment out the line with the "supported_archs" in it, then you will be able to build it with the native arch, which is almost always x86_64 these days. You can build it "fat binary" as well.

You can very easily try adding or removing configure options or build settings by tweaking the Portfile.

I will put together a "variant" that has 64 bit build features (no JIT, no networking). But honestly, I have to wonder, why? It seems to me to work much more poorly on macOS at present. I can see no advantage in either speed or functionality. So for now, the 32bit build will remain the default on macOS, I think.

One day (two, three, four years from now?) 32bit software will no longer function on macOS. Hopefully by then the slirp networking and JIT will be all 64 bit and we won't even talk about 32bit any longer!

If there is anything else you desire in the basiliskii build on MacPorts, just ask! It's very easily added, or you can do it yourself!
User avatar
rickyzhang
Apple Corer
Posts: 205
Joined: Mon Sep 15, 2014 7:59 pm

Re: 64-bit Version?

Post by rickyzhang »

@emendelson, my build didn't link dependency library file as static library. That will require me some serious hacking.

@kencu, you got a rocket speed tech support! You must love macport to contribute this detailed steps. I myself like macports as well. One simple reason is that macport deploy it in /opt/local, instead of /usr/local. That alone help me resolve the conflict between my home build library (which is in /usr/local) and macport.

In any case, I replied you in macport ticket. I don't think we need JIT in beefy modern Intel CPU. But we do need a 64 bit clean slirp. If you are interested in fixing it, we can do it either in your github repo or mine together.
There is an App for that!
https://github.com/rickyzhang82
User avatar
adespoton
Forum All-Star
Posts: 4226
Joined: Fri Nov 27, 2009 5:11 am
Location: Emaculation.com
Contact:

Re: 64-bit Version?

Post by adespoton »

kencu wrote:One day (two, three, four years from now?) 32bit software will no longer function on macOS. Hopefully by then the slirp networking and JIT will be all 64 bit and we won't even talk about 32bit any longer!
According to this year's WWDC, some 32-bit interfaces to system-level functions are going away this fall. 32-bit support for MachO binaries is supposed to be gone fall of 2019.

Of course, this doesn't mean everything will stop working; likely it will just begin with Apple no longer providing build support in XCode, and new APIs will not include 32-bit code. But I'd guess that yes, by three or four years from now, 32-bit x86 code will no longer run natively on OS X. We may need an OS X version of WINE or some sort of a dynarec shim to run 32-bit code under 10.17.

It makes sense to me for the 32-bit to stay the default build under MacPorts until it no longer works, as there's still work being done to get everything functional in 64-bit land.

But I'm not as bleak on this front as I was a year ago; SheepShaver has come a long way and now runs with almost perfect feature parity in 64-bit; this means that we still have the knowledge and skill to make the same changes to BII, if we also have the desire.
kencu
Space Cadet
Posts: 2
Joined: Wed Jun 13, 2018 3:28 am

Re: 64-bit Version?

Post by kencu »

OK. There is now a 64bit variant easily available.

Note: the JIT doesn't work. Networking will crash unless "none" is selected in the network interface. And finally, there is still a non-functional menu bar in full screen mode, at least on all my tests. It seems to only work in windowed mode.

Hopefully having the 64bit variant easily available might lead to these things getting fixes!

To install it, do this:

"sudo port -v install basiliskii-devel +SixtyFour"

Good luck!
pheriwinkle
Space Cadet
Posts: 3
Joined: Tue Jun 12, 2018 12:50 am

Re: 64-bit Version?

Post by pheriwinkle »

Wonderful news!
kanjitalk755
Apple Corer
Posts: 239
Joined: Thu Nov 09, 2017 12:06 pm

Re: 64-bit Version?

Post by kanjitalk755 »

I have merged jvernet/macemu repo (including DavidLudwig/macemu), and fixed some bugs.

https://github.com/kanjitalk755/macemu/ ... nd_jvernet

features:
  • 64-bit
    SDL2
    file sharing (HFS+/APFS)
    networking
    no JIT
To build, open BasiliskII/src/MacOSX/BasiliskII.xcodeproj.
pheriwinkle
Space Cadet
Posts: 3
Joined: Tue Jun 12, 2018 12:50 am

Re: 64-bit Version?

Post by pheriwinkle »

This is totally awesome to hear. I looked on github and didn't see binaries. Will someone post binaries of a stable, official release? I wouldn't know how to make them myself.
Thanks,
Kevin
uyjulian
Apple Corer
Posts: 244
Joined: Fri Aug 27, 2010 1:02 am

Re: 64-bit Version?

Post by uyjulian »

To build kanjitalk755's branch, you need to put SDL2.framework (from https://www.libsdl.org/release/SDL2-2.0.8.dmg ) in /Library/Frameworks

Also, after git cloning kanjitalk755's repo + checking out DavidLudwig_and_jvernet branch, you can just change directory to (repo)/BasiliskII/src/MacOSX and run xcodebuild to build. Binaries are output in (repo)/BasiliskII/src/MacOSX/build/Release . If you want to make the output application self contained, make the directory (repo)/BasiliskII/src/MacOSX/build/Release/BasiliskII.app/Contents/Frameworks, then move SDL2.framework in the created directory. You may need to codesign again (if you did that) after moving SDL2.framework.

I hope to get my JIT branch in a mergeable state so that we can have both 64-bit m68k JIT and 64-bit PPC JIT with SDL2 :-)
User avatar
rickyzhang
Apple Corer
Posts: 205
Joined: Mon Sep 15, 2014 7:59 pm

Re: 64-bit Version?

Post by rickyzhang »

XCodebuild, SDL2 and even JIT doesn't really interest me. I'm happy with Makefile, SDL1 and fast enough CPU without JIT.

What really missing is 64bit clean Slipr in Mac OS X. Why nobody cares?
There is an App for that!
https://github.com/rickyzhang82
User avatar
adespoton
Forum All-Star
Posts: 4226
Joined: Fri Nov 27, 2009 5:11 am
Location: Emaculation.com
Contact:

Re: 64-bit Version?

Post by adespoton »

If 64-bit clean SLIrP is missing, what exactly is present as far as networking?
kanjitalk755
Apple Corer
Posts: 239
Joined: Thu Nov 09, 2017 12:06 pm

Re: 64-bit Version?

Post by kanjitalk755 »

64-bit clean slirp was imported by https://github.com/jvernet/macemu.
User avatar
rickyzhang
Apple Corer
Posts: 205
Joined: Mon Sep 15, 2014 7:59 pm

Re: 64-bit Version?

Post by rickyzhang »

kanjitalk755 wrote:64-bit clean slirp was imported by https://github.com/jvernet/macemu.
Well, hacker style commit history. Is he willing to send a PR for 64bit clean slirp?
There is an App for that!
https://github.com/rickyzhang82
User avatar
rickyzhang
Apple Corer
Posts: 205
Joined: Mon Sep 15, 2014 7:59 pm

Re: 64-bit Version?

Post by rickyzhang »

adespoton wrote:If 64-bit clean SLIrP is missing, what exactly is present as far as networking?
None in Mac OS X if you are in 64bit build.

But you can networking in Linux by using sheep_net
There is an App for that!
https://github.com/rickyzhang82
Post Reply