engine.s → xa → c64_crunched.bin → gcc → aambundle
Linus distributed all three of engine.s, c64_crunched.bin, and aambundle, and he set up the build process so that running xa is fully optional—it’s not part of the normal Makefile. But when I was first working with this, I found it so unintuitive I’d even call it a trap for users. By default, rebuilding aambundle will not incorporate any changes to engine.s, since rebuilding c64_crunched.bin is an entirely separate process.
So when I was setting up the community version, I didn’t include c64_crunched.bin in the distribution. In my opinion, if you’re building from source, that should include assembling engine.s as part of the process; and if you’re not building from source, you’ll just use the included aambundle executable.
The upshot is, if you want homebrew to build aambundle from source, it’ll either need xa65 as a dependency, or you’ll need to provide the .bin files in the distribution. But the official release also includes aambundle binaries for Windows, Mac, and Linux, so on most configurations I think those should be fine.
For this, afraid not. Dialog 1b/01 specifically emits Å-machine 1.0 bytecode, with some opcodes added, some removed, and some changed from 0.5. The 0.5 interpreters won’t run it.
I’ll look into the formula, if the .zip file contains pre-built binaries, then I can adjust the formula instead of running a make; I didn’t write the initial formula.
Looks like the aamachine tools don’t run on OS X Intel.
However, the dialog tools (dialogc, dgdebug) do run on Intel even though they are packaged into a macos-arm64 directory. I suspect there’s some optional cross-compilation flag that could perhaps be used when building aamachine binaries?
Hmmm. For aamrun specifically, I needed to choose “macos-arm64” or “macos-x86” when compiling, and I took a stab in the dark there; I can also do it the other way. (That one’s cross-compiled on a Linux machine.) For aambundle and aamshow, though, they’re built on a Mac via Github actions, exactly the same as dialogc and dgdebug are. I don’t know why those don’t work if dialogc and dgdebug do.
I guess the difference is that dgdebug makes intermediate .o files first and then links them together, while aamshow doesn’t? I don’t know how that would affect this, though…
Probably could have kept the old Formula working with a local build by adding a Homebrew dependency on the xa tool … but just extracting pre-built universal binaries is better for everyone.
Yeah, aamrun is going to be much bigger than the rest just by its nature, but it’s also not needed for much of anything except working on the Dialog compiler. The rest are all written in pure C.
You should have enough permissions to make a release; just add a note to readme.txt, update the version numbers everywhere (version_numbers.txt says where to look for that), then make a new release tagged release-1.0.1 on Github.
(I can also do it if you prefer, but I’m trying to get the bus number for this project as high as possible.)
I’d recommend making it a PR for the version number updates, so people can chime in if they object to the release, but I don’t foresee any real problems here (it’s nothing compatibility-breaking) so we’ll approve it right away.