700/800 - are custom taperoutines common?

Jo Even
Site Admin
Posts: 133
Joined: Wed Jan 17, 2018 9:28 pm

700/800 - are custom taperoutines common?

Post by Jo Even » Wed Apr 15, 2020 11:58 am

As the title says - are custom tape routines common on 700/800 software, or does most software just use the monitor taperoutines?

User avatar
HajdaM
Posts: 5
Joined: Sun Apr 05, 2020 11:29 am

Re: 700/800 - are custom taperoutines common?

Post by HajdaM » Thu Apr 16, 2020 9:26 am

As I had MZ-800 without any floppy drive, I would say, that while most of the tape recordings were monitor compatible, there were also various alternatives used, at least in Czech Republic:
  • While 1Z016 basic produced monitor compatible recordings, it was at slightly different pitch, so I assume routines there were basic-specific. There was also support for double speed (2400 bd) mode with FLOAD/FSAVE and segmented mode via ROPEN/WOPEN
  • Tape version of CP/M used incompatible method (except for first loader, likely same across other platforms supported by CP/M)
  • There were many ZX-Spectrum ported games which used custom loaders for: flicker screen border / show loader counter / draw screen as data was loaded / play music during loading
  • Copier programs I used were TurboCopy - which supported faster custom loaders and InterCopy which also supported IPL mode, where loader was stored directly in the file header and also supported CPM and Spectrum recordings
  • Some games used custom tape routines for copy protection

hlide
Posts: 373
Joined: Thu Jan 25, 2018 9:31 pm

Re: 700/800 - are custom taperoutines common?

Post by hlide » Thu Apr 16, 2020 9:44 am

The question is interesting because I was tweaking a 12 minutes WAVE file into 3 minutes but without using a custom tape routine. I may plan to embed a tape routine to get the original 60KB wave file into a 1 minute loading by attempting 2400 baud or more. The original file uses a tape routine from Monitor ROM but it is an internal one so it may not work with a Japanese monitor.

User avatar
HajdaM
Posts: 5
Joined: Sun Apr 05, 2020 11:29 am

Re: 700/800 - are custom taperoutines common?

Post by HajdaM » Thu Apr 16, 2020 10:05 am

hlide wrote:
Thu Apr 16, 2020 9:44 am
The question is interesting because I was tweaking a 12 minutes WAVE file into 3 minutes but without using a custom tape routine. I may plan to embed a tape routine to get the original 60KB wave file into a 1 minute loading by attempting 2400 baud or more. The original file uses a tape routine from Monitor ROM but it is an internal one so it may not work with a Japanese monitor.
Well, if you provide a MZF file, I can try to generate wav files via Intercopy. Not sure if it will work on MZ-700 thou, but tape handling might be on the same port. But speeds faster than 2400 bd were prone to error after time as tape in cassettes I used skew or wobble a bit over the time, so it's probably useful only if wav will be transferred digitally...

Or you can try it yourself or in emulator, of course ;)

Jo Even
Site Admin
Posts: 133
Joined: Wed Jan 17, 2018 9:28 pm

Re: 700/800 - are custom taperoutines common?

Post by Jo Even » Thu Apr 16, 2020 11:26 am

I ask because it would be rather trivial to modify the monitor tape routines to just read/write bytes through a port instead of bit-banging the tape port. It would require some custom hardware (tape emulator connected to the expansion port) but would also be super fast. But not much point in doing this unless the monitor tape routines are used.

User avatar
HajdaM
Posts: 5
Joined: Sun Apr 05, 2020 11:29 am

Re: 700/800 - are custom taperoutines common?

Post by HajdaM » Thu Apr 16, 2020 12:06 pm

Not sure what you mean there to emulate - you probably want to make something else than I thought.

Anyway, just for testing purposes I created two test wav files of MZ-700 S-Basic in 3200bd. Fast/IPL method uses loader in file header while turbo loader uses small app. Both work on MZ-800 in emulator, but I have no idea if it will work on MZ-700, if anyone want/could test that.
https://hajdam.zdechov.net/download/?sh ... d_fipl.wav
https://hajdam.zdechov.net/download/?sh ... _turbo.wav

Jo Even
Site Admin
Posts: 133
Joined: Wed Jan 17, 2018 9:28 pm

Re: 700/800 - are custom taperoutines common?

Post by Jo Even » Thu Apr 16, 2020 12:38 pm

The point is to avoid the current bit-banged serial tapeport, and transfer data directly on the databus to a microcontroller-based tape-emulator connected to the expansion port. This should allow almost instant loading and saving to "tape".

hlide
Posts: 373
Joined: Thu Jan 25, 2018 9:31 pm

Re: 700/800 - are custom taperoutines common?

Post by hlide » Thu Apr 16, 2020 12:46 pm

Oh I see what you mean. So do want you to patch the tape routines of the monitor (through a patched copy in DRAM) and make them to use the expansion port to read/write a header/data blocks? Virtual Instantaneous Tape? I want to do something like that for my IPL512 project where I could store virtual tape and that without the need of using the expansion port. But that idea won't work with the 1Z13B BASIC because it has his own monitor and routines so you will need to patch the BASIC as well :/.

hlide
Posts: 373
Joined: Thu Jan 25, 2018 9:31 pm

Re: 700/800 - are custom taperoutines common?

Post by hlide » Thu Apr 16, 2020 12:56 pm

HajdaM wrote:
Thu Apr 16, 2020 10:05 am
Well, if you provide a MZF file, I can try to generate wav files via Intercopy. Not sure if it will work on MZ-700 thou, but tape handling might be on the same port. But speeds faster than 2400 bd were prone to error after time as tape in cassettes I used skew or wobble a bit over the time, so it's probably useful only if wav will be transferred digitally...
No need :) I can make my own tools to do that. The original WAV file was not readable on an emulator and has 9 blocks (1 header + 8 data) which is supposing to load over 12 minutes. Not only I built an artificial WAV with clean and optimized signals which loads in 6 minutes but it works with my usual emulator. And compressing each block with my mz7c tool, I have a WAV with clean and optimized signals AND compressed blocks which loads in less than 3 minutes.

Now the next step is merging the first three blocks into one and compress it as well, it will also act as a loader of the remaining 6 compressed blocks using a tape routine reading 2400 baud instead of the common 1200 baud and probably removing the ninth bit of a byte when reading. That would be great if I can then reach 1 minute.

That's just an experiment to toy with.
Beyond-new-WAV.jpg
Beyond-new-WAV-compressed.jpg

Jo Even
Site Admin
Posts: 133
Joined: Wed Jan 17, 2018 9:28 pm

Re: 700/800 - are custom taperoutines common?

Post by Jo Even » Thu Apr 16, 2020 2:10 pm

hlide wrote:
Thu Apr 16, 2020 12:46 pm
Oh I see what you mean. So do want you to patch the tape routines of the monitor (through a patched copy in DRAM) and make them to use the expansion port to read/write a header/data blocks? Virtual Instantaneous Tape?
Yes, something like that. I'm aware of the BASIC monitor, that one would have to be patched too. Or not, and fall back to the normal tape port. A tape emulator could (should!) support both.

Post Reply