Here's an idea for the Apple II emulator authors: why don't we have
emulators with an integrated assembler? The assembler would produce object code copied directly in the RAM of the emulated machine. Or the object code would be copied to a ProDOS or DOS 3.3 disk image.
Furthermore, why not integrate a C compiler or some other high-level language? Output options would be the same: the object could would be
written directly to the emulated RAM, ready for execution. Or it could be copied to a disk image.
I think that these features would speed up cross-development considerably.
It would be a lot easier to interchange source files with the host environment, across the Internet, and in version control systems.
D Finnigan wrote:
Here's an idea for the Apple II emulator authors: why don't we have
emulators with an integrated assembler? The assembler would produce object code copied directly in the RAM of the emulated machine. Or the object code would be copied to a ProDOS or DOS 3.3 disk image.
Furthermore, why not integrate a C compiler or some other high-level language? Output options would be the same: the object could would be
written directly to the emulated RAM, ready for execution. Or it could be copied to a disk image.
I think that these features would speed up cross-development considerably.
It would be a lot easier to interchange source files with the host environment, across the Internet, and in version control systems.
--
]DF$
The New Apple II User's Guide:
https://macgui.com/newa2guide/
On Tue, 7 Oct 2025, D Finnigan wrote:
Here's an idea for the Apple II emulator authors: why don't we have
emulators with an integrated assembler? The assembler would produce object >> code copied directly in the RAM of the emulated machine. Or the object code >> would be copied to a ProDOS or DOS 3.3 disk image.
Furthermore, why not integrate a C compiler or some other high-level
language? Output options would be the same: the object could would be
written directly to the emulated RAM, ready for execution. Or it could be
copied to a disk image.
I think that these features would speed up cross-development considerably. >> It would be a lot easier to interchange source files with the host
environment, across the Internet, and in version control systems.
One of my abandoned projects, which was written by me and Holger Picker, >actually did have an integrated assembler and even used it to roll the
slot ROMs on the fly. I thought of rewriting the code so it wasn't just a >binary blob, but never got around to it.
Now that I have other content, like Gameware, and most of FPBASIC is fair >game, this could be extended even further.
-uso.
You've basically described the dream workflow for a lot of retro developers. Having the edit-assemble-test loop all happen in one environment without swapping files around is a huge time saver.
It's awesome that "uso" actually built that functionality in the past with the integrated assembler and dynamic ROM generation. That proves the concept is not just possible, but genuinely useful. The fact they're thinking about extending it now with other content like Gameware and FPBASIC is really promising. It sounds like the groundwork is already there for someone to pick
up and run with.
The real power, like you said, is in bridging the old and new. Being able to use modern tools like Git for version control on your source files, then seamlessly compiling and injecting the code directly into the emulator's memory or a disk image, is the best of both worlds. It keeps the classic feel
of the machine but removes all the friction of the original development process.
I hope "uso" or someone else inspired by this picks up the torch. This is exactly the kind of feature that could become a standard for the next generation of emulators.
This is a response to the post seen at: http://www.jlaforums.com/viewtopic.php?p=697217128#697217128
You've basically described the dream workflow for a lot of retro developers. Having the edit-assemble-test loop all happen in one environment without swapping files around is a huge time saver.
You've basically described the dream workflow for a lot of retro
developers. Having the edit-assemble-test loop all happen in one
environment without swapping files around is a huge time saver.
I have never found that to be a problem. I write the code files in
BBEdit on the Mac that Sweet16 is running on, then have a Favourite
entry in SAFE2 on the emulated IIgs pointing to tthe folder on the
Mac where the source files are saved.
It then takes seconds to copy the file or files over, and start the
assembly in ORCA/M.
I donƒ??t of course need to run BBEdit on the same Mac. As long as
the computer I am writing the source files on can be reached by FTP,
that sequence works just the same...
Cheers - Speccie
I find BBEdit more than sufficient for my needs, as I've set up a 'droplet' to take the source and produce the binary to transfer to the emulator.
I suppose we all have our own procedures.
You've basically described the dream workflow for a lot of retro
developers. Having the edit-assemble-test loop all happen in one
environment without swapping files around is a huge time saver.
Most emulators allow easy loading of external files into memory, and
this can be scripted. So you build on your host machine, then load
the binary into the emulator.
KEGS allows mounting a directory on your computer as a ProDOS
volume, where it is just a plain ProDOS volume to any emulated
code. I called it DynaPro. You need to restart emulation if you
change a file, to make sure it sees the change. As best as I can
tell, no one uses it.
On 10/8/2025 2:38 PM, Kent Dickey wrote:
KEGS allows mounting a directory on your computer as a ProDOS
volume, where it is just a plain ProDOS volume to any emulated
code. I called it DynaPro. You need to restart emulation if you
change a file, to make sure it sees the change. As best as I can
tell, no one uses it.
Kent,
I've got a DynaPro folder for KEGS on my MacOS install.
The main reason I use it infrequently (whether to put files into KEGS or
get files out of KEGS) is due to the loss of ProDOS file type attributes >(file type / aux type).
I think at one time we may have discussed your adding attribute
preservation, and that it would require KEGS implementing xattrs or
named streams (or MacOS metadata), and that you didn't see that demand
for that particular feature justifying the time required to implement
it, which I can certainly understand.
Hugh Hood
In article <alpine.DEB.2.21.2510080804400.25129@sd-119843.dedibox.fr>,
Steve Nickolas <usotsuki@buric.co> wrote:
On Tue, 7 Oct 2025, D Finnigan wrote:
Here's an idea for the Apple II emulator authors: why don't we have
emulators with an integrated assembler? The assembler would produce object >> code copied directly in the RAM of the emulated machine. Or the object code
would be copied to a ProDOS or DOS 3.3 disk image.
Furthermore, why not integrate a C compiler or some other high-level
language? Output options would be the same: the object could would be
written directly to the emulated RAM, ready for execution. Or it could be >> copied to a disk image.
I think that these features would speed up cross-development considerably. >> It would be a lot easier to interchange source files with the host
environment, across the Internet, and in version control systems.
One of my abandoned projects, which was written by me and Holger Picker, >actually did have an integrated assembler and even used it to roll the >slot ROMs on the fly. I thought of rewriting the code so it wasn't just a >binary blob, but never got around to it.
Now that I have other content, like Gameware, and most of FPBASIC is fair >game, this could be extended even further.
-uso.
There are other ways to get into and out of emulators. You can use
Ethernet to mount an SMB volume, and dynamically change files from your
host computer. This is https://github.com/sheumann/smbfst, but is IIgs
only. I'm not sure what else is there, if you can take the time to set
up a Netatalk server, using Ethernet emulation can let you mount APFS
file servers (this seems to be tricky to setup, though).
Most emulators allow easy loading of external files into memory, and
this can be scripted. So you build on your host machine, then load
the binary into the emulator.
Tools like CiderPress2 https://github.com/fadden/CiderPress2 and
Cadius https://brutaldeluxe.fr/products/crossdevtools/cadius/index.html
allow easy creation of ProDOS volumes of files from your host system.
KEGS allows mounting a directory on your computer as a ProDOS volume, where it is just a plain ProDOS volume to any emulated code. I called it
DynaPro. You need to restart emulation if you change a file, to make sure
it sees the change. As best as I can tell, no one uses it.
Kent
| Sysop: | Jacob Catayoc |
|---|---|
| Location: | Pasay City, Metro Manila, Philippines |
| Users: | 5 |
| Nodes: | 4 (0 / 4) |
| Uptime: | 22:29:08 |
| Calls: | 117 |
| Calls today: | 117 |
| Files: | 367 |
| D/L today: |
560 files (257M bytes) |
| Messages: | 70,898 |
| Posted today: | 26 |