Forget BASICODE. That was for BASIC only.
Many targets, ideally all those which in our wiki are declared capable of 1bit sound output can now save in MSX BLOAD and ZX LOAD "" CODE formats (they still can't load, only a subset was tested, etc..).
The TAPE library is another story, the functions differ slightly between the targets, I did my best to provide the same syntax for tape_save_block() and tape_load_block(). They're very minimal (no file name, just a single byte to discriminate the "block types") and probably used only in adv_a.c at the moment. In this case the tape format is target specific, but a certain number of target share the ZX Spectrum style modulation (Jupiter ACE, TS2068, Spectrum). Soon It will also be the case of the Mattel Aquarius, because its original routines were crap
Cassette tape based file options?
Re: Cassette tape based file options?
You do not have the required permissions to view the files attached to this post.
Re: Cassette tape based file options?
I try to list the targets able to SAVE and LOAD back data (mostly in a native format )
Aquarius (soon)
ZX80
ZX81
Spectrum (and ZX Next)
J.ACE
TS2068
Enterprise
MSX
Sharp MZ
S-OS (tape version)..
S-OS is a sort of simple operating system invented in Japan to provide a common platform to run text only machine code programs on z80 computers. The ideal program for such platform was a text adventure game, so the simpler version was baptized "Mace", the disk capable one: "Sword".
S-OS can be run on a certain number of different computer models, so I can't predict the results easily.
The ZX81 and Aquarius had a bad cassette modulation format, so I decided to provide an alternative one. The ZX81 now has a fairly powerful encoding system, it is able to auto tune the loading speed depending on the way the data block was saved. I think that MSX does the same, in a different way.
Aquarius (soon)
ZX80
ZX81
Spectrum (and ZX Next)
J.ACE
TS2068
Enterprise
MSX
Sharp MZ
S-OS (tape version)..
S-OS is a sort of simple operating system invented in Japan to provide a common platform to run text only machine code programs on z80 computers. The ideal program for such platform was a text adventure game, so the simpler version was baptized "Mace", the disk capable one: "Sword".
S-OS can be run on a certain number of different computer models, so I can't predict the results easily.
The ZX81 and Aquarius had a bad cassette modulation format, so I decided to provide an alternative one. The ZX81 now has a fairly powerful encoding system, it is able to auto tune the loading speed depending on the way the data block was saved. I think that MSX does the same, in a different way.
Re: Cassette tape based file options?
I set up a generic variant of the loader, to have both bit_load_block_zx and bit_save_block_zx.
I checked it on the ZX Spectrum, probably it is pointless but now it is possible to load and save data without the border effects
It should work also on the Mattel Aquarius but the MSX version, even if catches the leading tone and the sync key, seems to get wrong data.
I checked it on the ZX Spectrum, probably it is pointless but now it is possible to load and save data without the border effects
It should work also on the Mattel Aquarius but the MSX version, even if catches the leading tone and the sync key, seems to get wrong data.
Re: Cassette tape based file options?
+Sorcerer Exidy, I got the trick on how invoke the MONITOR from an ancient 1982 library for the BDS C.
Time to add the credits and pull the code in.
Time to add the credits and pull the code in.
You do not have the required permissions to view the files attached to this post.
Re: Cassette tape based file options?
I think @pjshumphreys and @Wysardry will like this one.
bit_load_block_zx() will READ the data from a ZX Spectrum tape on a Sharp MZ machine.
It first probes the MONITOR to understand if it is an MZ700 or MZ800 model (thus, 3,5 Mhz) or it is on an older 2Mhz model, then it does auto tuning.
If you are a lucky bastard and have the MZ800, you'll even see the border stripes while loading
EDIT: the "pull" includes a custom routine to drive the tape motor silently, unlike the standard MONITOR, which prompts the user.
bit_load_block_zx() will READ the data from a ZX Spectrum tape on a Sharp MZ machine.
It first probes the MONITOR to understand if it is an MZ700 or MZ800 model (thus, 3,5 Mhz) or it is on an older 2Mhz model, then it does auto tuning.
If you are a lucky bastard and have the MZ800, you'll even see the border stripes while loading
EDIT: the "pull" includes a custom routine to drive the tape motor silently, unlike the standard MONITOR, which prompts the user.
You do not have the required permissions to view the files attached to this post.
-
- Member
- Posts: 66
- Joined: Sat Feb 06, 2021 2:32 pm
Re: Cassette tape based file options?
You're right. I do really like that
Re: Cassette tape based file options?
Thank you
I'm adding the SAVE option, same syntax.
On many targets it was already available by the generic version based on the 1bit the sound output, but here we have different CPU speeds, different audio hardware and the tape motor commands to deal with.
The resulting code is not as clean as the LOAD part but it worked with the tests I could do on the emulators.
A check on the real hardware would be really appreciated.
I'm adding the SAVE option, same syntax.
On many targets it was already available by the generic version based on the 1bit the sound output, but here we have different CPU speeds, different audio hardware and the tape motor commands to deal with.
The resulting code is not as clean as the LOAD part but it worked with the tests I could do on the emulators.
A check on the real hardware would be really appreciated.