Good news about HoneyCrisp v1.3. Thought you guys would like this more than the Reddit folks.

3 posts / 0 new
Last post
landonsmith's picture
Offline
Last seen: 5 days 34 min ago
Joined: Dec 17 2025 - 14:24
Posts: 26
Good news about HoneyCrisp v1.3. Thought you guys would like this more than the Reddit folks.

 Hi everyone.

 Recently had some (decently) groundbreaking developments with my JavaScript APPLE-1 emulator, The HoneyCrisp Emulator.

 v1.3.0 is set to release next month in April, and with the release I wanted something nice to go along with some bug fixes and improvements made to emulation accuracy.

 That biggest improvement has been this: HoneyCrisp v1.3 will have a fully implemented ACI emulator alongside 60+ programs in the built-in program library.

 Since October, I've been doing much research on the Apple Cassette Interface and how it was constructed, as well as asked around here, and other fourm sites for any possible information as to how I could go about converted audio to data that can be read from, and finally, in the end it has paid off! Yesterday afternoon I had finished up a working prototype  JavaScript feature for HoneyCrisp that allows a user to select an audio file (MONO/STEREO, WAV or AIFF) that contains APPLE-1 program data and then load it into the emulator's memory by converting the audio data into machine code the emulator can interpert. After it does this, it will auto-start (if program autostart is enabled) the program by injecting keystrokes for whatever the starting address is (e.g., 0300R).... For now, you can only enter one explicit starting address for the audio cassette program. I know this won't work for most substantial APPLE-1 programs (especially those written for Integer BASIC), so I'm looking into improving this immensely. For now it's just a proof-of-concept, I guess you could say. All machine code APPLE-1 programs that do not have data stored at multiple address sets (e.g., $0000-$0FFF) work just fine, as it's just one general area of memory to load into. However, programs that use multiple ranges (e.g., $004A-$00FF and then $0300-$0FFF) do not work, as the feature will (currently) only detect $004A-$00FF and load the program into that address range and shove whatever is left into subsequent locations. Obviously not right, but that's going to be fixed before release. :-)

 Anyway, I hope you all find this interesting. I don't know if this is a huge accomplishment, as I'm sure it's been done many times before, but since it was my first attempt at 

 implementing it into HoneyCrisp, I feel sort of pround. Ha! A video of the prototype in action is on my YouTube page here: https://www.youtube.com/watch?v=yRFkid1nGcs&lc=UgzQsscLieMISqVG3XB4AaABAg

 

 Cheers,

 Landon

Offline
Last seen: 1 day 23 hours ago
Joined: Apr 1 2020 - 16:46
Posts: 1354
Nice work ! But you might want to add something !

In post #1, 'landonsmith' wrote:

 

" All machine code APPLE-1 programs that do not have data stored at multiple address sets (e.g., $0000-$0FFF) work just fine, as it's just one general area of memory to load into. However, programs that use multiple ranges (e.g., $004A-$00FF and then $0300-$0FFF) do not work, as the feature will (currently) only detect $004A-$00FF and load the program into that address range and shove whatever is left into subsequent locations."

 

Uncle Bernie comments:

 

If you mean the above not working in the ACI emulation, then here is a hint from me: the original ACI does not support such multi address range loads in a user friendly way. Sure, you can specify multiple load commands (i.e. 004A.00FFR 0300.0FFFR for your example above), but this is not user friendly, as the user needs to type in these addresses without fault, and then also remember the start address. And a bug in the ACI command line parser requires the user to always type all four hex digits for every address in every command (not sure if this is a 'bug' or a 'feature' - there is no space left in the PROM to properly clear the address accumulator).

 

In my kits I furnished an 'extended format' PROM with a 2nd page: when started with C100R, the ACI would use the original Woz ACI code. When started with C500R, you get the extended format functions which come in two flavors, the R and W commands add the Apple II style checksum byte and the RX and WX commands produce records with headers containing load addresses and start addresses. Much more user friendly and full Apple II forward and backward compatibility is gained.

 

If you want to implement this extended format page in your emulator, just send me a PM.

 

- Uncle Bernie

landonsmith's picture
Offline
Last seen: 5 days 34 min ago
Joined: Dec 17 2025 - 14:24
Posts: 26
 Noted, thanks. Will consider

 Noted, thanks. Will consider it! :-)

Log in or register to post comments