| |
King Durin Account closed
Registered: Oct 2007 Posts: 85 |
Block-Level Fast-Loader
I'm looking for a fast loader for 1541/1571/1581/CMD-HD that does block-level fast access for both reads and writes. Does anyone know of a good fast loader that does this?
King Durin aka plbyrd
http://cbmcommand.codeplex.com
http://www.paytonbyrd.com |
|
| |
cadaver
Registered: Feb 2002 Posts: 1160 |
MagerValp's ULoad3 should be quite close.
http://www.paradroid.net/uload/
However you may have to tweak the code a bit, as by default it reads & writes sector chains (files starting from specified track & sector) instead of individual sectors. |
| |
MagerValp
Registered: Dec 2001 Posts: 1078 |
Yeah, I'm not aware of any available fast routines to read and write raw tracks. I did write my own as part of a d64 transfer system, which iirc writes a disk in about 60 seconds. I didn't finish it though, and it's hard to tell what state the code is in... |
| |
Frantic
Registered: Mar 2003 Posts: 1648 |
Depends a bit on your requirements. I am really not much into drive coding, but if I remember correctly, it makes quite a bit of difference if you replace the kernal routines for communication with the drive, but still use the built in functions in the drive ROM for reading/writing blocks. So, perhaps that might be an option if you don't need the fastest stuff around, but still a quite great speedup with simpler means. |
| |
King Durin Account closed
Registered: Oct 2007 Posts: 85 |
The purpose of the speeder will be to improve performance of CBM-Command V3. This will include file read/writes as well as block-level read/writes (for making/writing disk images and copying disks). |
| |
MagerValp
Registered: Dec 2001 Posts: 1078 |
Here's a snapshot from my old CVS repository:
http://dl.dropbox.com/u/839742/fastd64-20060922.zip
It looks like it takes a D64 and splits it into four parts, which can then be sent over e.g. with codenet. Each part writes itself to disk, laying down tracks. Performance is decent, looks like it can write a D64 in about 1:20 which makes it about 6 x kernal speed. Works on both PAL and NTSC, and on 1541/1541-II/1570/1571. Demonstration:
http://dl.dropbox.com/u/839742/fastd64.d64
This uses the same protocol as ULoad, which handshakes every byte, so there's plenty of space for improvement. There's a dev version here with a block transfer mode, where 16 bytes are sent between each handshake, which brings the interleave down from 10 to 6:
; PAL: 8 byte pairs * (44 + 43) cycles at 985248 Hz = 706.4211 ms
; NTSC: 16 bytes * 45 cycles at 1022727 Hz = 704.0002 ms
; drive: 16 bytes * 44 cycles at 1000000 Hz = 704 ms
There's a failed CVS merge in the dir though, and all I get when running it is a CPU JAM in the drive. The project is probably beyond rescue, but here are the low level routines in case anyone wants to play with it:
http://dl.dropbox.com/u/839742/blockxfer.s
http://dl.dropbox.com/u/839742/block_drv_xfer_1mhz.i |