| |
Flavioweb
Registered: Nov 2011 Posts: 463 |
Drive code: 1541/81 code conversion.
I have a simple question (for you experts).
This is a drivecode for 1541:
DRV_5BYTELOOP
BVC DRV_5BYTELOOP ; Wait for data from the R/W head
CLV
LDA $1C01
STA (BUFLO),Y
INY
CPY #$05 ; Read 5 GCR bytes
BNE DRV_5BYTELOOP
RTS
How can i translate it to work on a 1581? |
|
| |
Krill
Registered: Apr 2002 Posts: 2980 |
You don't. The 1581 can store an entire track in RAM and is fast enough to discourage from going low-level as on 1541.
Simply use job codes and implement your custom serial protocol only.
(And to answer your question: GCR is not used on the 1581. It accesses disk data using a WD1770 controller, so you'd read and write its registers in drive code. Obviously, this works entirely different than on the 5.25" drives.) |
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
its also not really worth optimizing, since all the "slow stuff" happens in hardware :) |
| |
Krill
Registered: Apr 2002 Posts: 2980 |
Oh, i'm pretty sure there is ample room for optimisation, e.g. by interleaving disk controller and serial bus access. But as i said, the drive is so fast it really isn't worth the effort. |
| |
Flavioweb
Registered: Nov 2011 Posts: 463 |
Excluding AAY there are other texts with low level infos on 1581? |
| |
MagerValp
Registered: Dec 2001 Posts: 1078 |
http://cadaver.homeftp.net/rants.htm
Read rants #5, #7, #12, and #13. You can also look at the source for ULoad Model 3 release 1. |
| |
Krill
Registered: Apr 2002 Posts: 2980 |
Firmware including source code: http://www.zimmers.net/anonftp/pub/cbm/firmware/drives/new/1581/
Schematics: http://www.zimmers.net/anonftp/pub/cbm/schematics/drives/new/15..
WD1770 info: http://www.cloud9.co.uk/james/BBCMicro/Documentation/wd1770.html
WD1770/2 datasheet: http://dev-docs.atariforge.org/files/WD1772.pdf
Some general info: http://vice-emu.sourceforge.net/plain/drive_info.txt
A 1581 clone: http://www.students.tut.fi/~leinone3/dcn2692/index.html
And lastly, check the VICE source code: http://sourceforge.net/projects/vice-emu/ |
| |
Krill
Registered: Apr 2002 Posts: 2980 |
Oh, and what do you want to do? Write an IRQ loader with 1581 support? Then yes, see MagerValp's post, and Krill's Loader, repository version 146 has 1581 support, too. |
| |
Flavioweb
Registered: Nov 2011 Posts: 463 |
I have to learn a lot of things...
So thanks for all the infos.
I'm just courius to see if i can imagine how to write an iffl loader that works on 41/71/81 autodetecting the device.
For 41/71 there are no problems.
They comes with 1581.
Should be great if i add a "decrunch on the fly" for level exomized files... |
| |
TNT Account closed
Registered: Oct 2004 Posts: 189 |
AFAIK the only program using WD177x inside 1581 directly is MMC64 D81 Writer. |
| |
MagerValp
Registered: Dec 2001 Posts: 1078 |
Lasse's rants give you all the information you need to write an IFFL loader that supports 1541/70/71/81/CMD FD/HD - that's how I learned :) |
| |
cadaver
Registered: Feb 2002 Posts: 1160 |
Don't remember if I've asked this, but do you do anything special to speed up IFFL scanning on 1581/FD/HD? I never got around to that, as didn't use IFFL in an actual production so far, and only built the 1541 proof-of-concept routine. |
| |
Flavioweb
Registered: Nov 2011 Posts: 463 |
I don't know how much time is needed by 81/Fd/HD to complete the seek process... maybe fast enough...
But i have no code to test now.
Maybe MagerValp tried something about this... |
| |
Krill
Registered: Apr 2002 Posts: 2980 |
Is there a need to speed up scanning on 1581? Loading a random block, the entire track it is located on is read in a revolution or two, then the links can be walked in no time. Repeat for the rest of the file's tracks.
That said, one can always implement scanning on demand, such that a seek is only performed when loading. |
| |
MagerValp
Registered: Dec 2001 Posts: 1078 |
Quote: Don't remember if I've asked this, but do you do anything special to speed up IFFL scanning on 1581/FD/HD? I never got around to that, as didn't use IFFL in an actual production so far, and only built the 1541 proof-of-concept routine.
On 1581 I buffer a track in the drive and then read all 40 t/s links from ram in one sweep. On CMD FD/HD the C64 requests sectors from the drive but only transfer the first two bytes. The 1581 version is a lot faster. |