text: [CSDb] - User Forums - Advice for fastest 1541 compatible fastloader
  You are not logged in DidiRegistered: Nov 2011Posts: 68
  Advice for fastest 1541 compatible fastloaderI need advice for a very fast non-IRQ fastloader for 1541 compatible drives which is freely available. I've been away for some years, maybe there has been some new developments the past 10 years.
  ... 17 posts hidden. Click here to view all posts.... 2012-08-26 23:25ZazRegistered: Mar 2004Posts: 26
  Quote: Quoting ZazSo did anyone ever do a (non-GCR) loader that can read a track in one revolution on a stock c64+1541? It should be possible...
  Only if that format stores less than 2k on that track, because otherwise you cannot buffer it in 1541 RAM :)Of course it would have to stream to C64 while reading.
  I actually designed the critical parts of such a loader but didn't complete it because I couldn't think of anything to use it for :)
  2012-08-27 08:33KrillRegistered: Apr 2002Posts: 531
  For plain GCR, Mafiosino's loader should be fastest (around 20x), but it requires a lot of memory to buffer a raw track.
  Fastloaders without track buffers (like the loaders written to disk by AR and other cartridges) are around 12x-15x.
  If custom encoding with less than 256 bytes per block is an option, Heureka-Sprint is the fastest i know (around 25x, $e0 bytes per block), and it works with plain d64 and standard GCR disk copiers.
  As groepaz said, i am currently working on a 50x fastloader (reading, transferring and checksumming a track in one revolution) with a custom encoding that yields $c0 bytes per block, also with d64/standard GCR compatibility.
  2012-08-27 08:50KrillRegistered: Apr 2002Posts: 531
  Quote: Of course it would have to stream to C64 while reading.
  I actually designed the critical parts of such a loader but didn't complete it because I couldn't think of anything to use it for :)Do you still have those bits? I'd like to have a look at that and compare with my ideas for a one-revolution serial fastloader. :)
  2012-09-09 09:33ZazRegistered: Mar 2004Posts: 26
  Sounds like you're aiming higher than me with the compatibility and all, but PM me your e-mail and I'll give you an outline. If there's anything new or useful in my design, I'll share whatever I have.
  So far it's my own design notes and a spreadsheet of code/cycle timings...
  2012-09-09 21:54ChristopherJamRegistered: Aug 2004Posts: 140
  I did create a format that had only one sync per track back in the day; I can't remember whether it took one or two passes to read it, but the only way I managed to write was using a drive that a friend had added a parallel port to (soldered a cable from an IO port on a drive chip to a c64 user port connector).
  At the time I was thinking it would be a great way to copy protect a game I was working on. Not so good for demo distribution, mind.
  2012-09-10 00:07KrillRegistered: Apr 2002Posts: 531
  That sounds very much like what the V-MAX! guys did, see http://markus.brenner.de/mnib/vmaxtech.txt. (And as stated there, the later Vorpal doesn't need any hardware syncs at all on a track.)
  The hardware sync is not necessarily a sector-starting sync, as they proved, so yeah, your format might have been readable in more than 1 revolution with a vanilla 1541.
  What was your aim when coming up with this idea? :)
  2012-11-12 21:08zaphod77Registered: Jun 2012Posts: 1
  If you are willing to use your own GCR, the fastest non irq loader is Vorpal V1 (25x speedup) or one of it's MANY MANY clones (Warp*25,Laser Load, Heureka Sprint, etc) every one of these was shamelessly ripped from Vorpal, and grants a 25x speedup. The tradeoff is more disk space used, because a less efficient gcr format is used so it can be decoded fast enough to handle an interleave of TWO.
  You cannot fastcopy these with a single drive, but ANY NIBBLER, even the simplest and fastest, will copy the disk. This includes those 25 second dual drive copiers, which are actually incredibly basic (and fast) nibblers.
  Mafiosino's loader seems to be the fastest screen blanker that uses standard GCR.
  The fastest IRQ loader that uses standard GCR is krill's loader. Using non standard GCR, v-max is probably the fastest irq loader.
  Note that the vorpal utility kit has been dumped, so you CAN use the original. Heuerka Sprint is also available. With a bit of ASM hackery, it's doable.
  Kinda crazy that vorpal v1 is still state of the art in non irq loaders. :)
  2012-11-13 00:59KabutoRegistered: Sep 2004Posts: 23
  This thread reminds me to an idea I had recently albeit it's slightly OT since it won't be the fastest fastloader:
  It uses a custom GCR encoding that can fit 7 bits into 8 raw bits. It assumes that any encoding is permitted that does not have 3 "0" bits or 9 "1" bits in a row. That's close to the theoretical limit (about 7.01 bits per 8 raw bits IIRC).
  Instead of ridiculously long GCR intervals it uses a kind of arithmetical entropy encoder since different raw bytes have different internal "expressiveness" values - e.g. after a byte ending with bits 00 there can't be a byte starting with 0 while the next bytes after a byte ending with bits 01 won't be limited as much (everything goes as long as it's not 9 1's in a row - within GCR limits of course).
  I did a quick pen & paper writeup of a sample decoder - it's possible to decode bytes as they come in from the electronics at realtime into drive memory, however, due to the data rate being so high (about 1 byte every 30 cycles), it will be impossible to transmit the sector just read during the next sector so every track will take like 3 revolutions.
  2012-11-13 13:23KrillRegistered: Apr 2002Posts: 531
  Zaphod77: The Heureka-Sprint format is encoded on top of plain GCR, so it can be stored on d64 and be copied with standard disk backup software just fine.
  Kabuto: Your idea reminds me of one i wrote up on paper (and with a test encoder/decoder), but i didn't come anywhere close to your format/data ratio - in the end i could encode about 270 bytes per block (so slightly more than 80% density, which is better than GCR still), however with the big benefit of fully decoding and checksumming the data on the fly while reading. Can you tell me a bit more about your approach?