Log inRegister an accountBrowse CSDbHelp & documentationFacts & StatisticsThe forumsAvailable RSS-feeds on CSDbSupport CSDb Commodore 64 Scene Database
You are not logged in - nap
CSDb User Forums


Forums > C64 Coding > Job codes'n buffers
2003-04-27 13:05
Cybernator

Registered: Jun 2002
Posts: 154
Job codes'n buffers

Ok dudez! Need some help here.
Does the "seek" FDC job use the buffer? I mean to move the head, the drive needs to read the header block in order to find out where the head is positioned. I'm not sure though, if this data is stored in the buffer or somewhere at zero-page.

Anyone?
 
... 10 posts hidden. Click here to view all posts....
 
2003-05-18 14:04
Cybernator

Registered: Jun 2002
Posts: 154
Oops! Seems that I've totally forgotten $0200. I kept saying: "They should have given the drive at least 256 bytes more", and seems that they did. ;)
The problem was that the drivecode could not be written at $0200 using M-W... No idea why. However, I could use this place for one of the buffers, and as I said, I forgot about it. :)
Ok, the loader doesn't use _any_ ROM routines now. (except for the GCR conversion tables, which are not routines :).

The protocol works (thanks Lasse!), and the program is loading into memory. However, seems that every 12th byte is corrupted. After some debugging, seems that the problem is the GCR reader, not the transfer, so I can't blame Lasse. ;-D

Strange thing is: why _every 12th_ byte? ... :/

Still, I'll have to check the routines you mentioned. I have to use some of them, and free some memory. Otherwise, there will be no place for the turn-disk checker (or whatever you call it).

Regarding the GCR reader, only one thing crosses my mind: maybe the GCR decoder takes too much time. The GCR data is partially decoded on the fly (I mean while reading the disk surface). 5 GCR bytes are _partially_ decoded at each iteration (which gives 4 binary bytes. 12 is perfectly dividable by 4. :-) Which means that a byte is corrupted each 3rd iteration).
So I have to ask one more thing. ;)

- What is the average time that needs to pass untill new data is available at $1C01 ?
2003-05-18 17:20
Graham
Account closed

Registered: Dec 2002
Posts: 990
the time available for a GCR byte is ofcourse different for different speedzones. in theory you have 32, 30, 28 or 26 cycles for every byte.

BUT this only applies for writing! on reading this is way more difficult because it depends on the drive motor used to write the disk and the drive motor used to read the disk. for example, on a standard 1541 you have about 300 rpm while a 1571 often has more than 320 rpm. this means that you have even less cycles time to be safe. you cant do much more than reading a byte from $1C01 and storing it into memory (the loop above already uses 18 cycles).

2003-05-20 17:12
Cybernator

Registered: Jun 2002
Posts: 154
Graham wrote:

> on reading this is way more difficult
> because it depends on the drive motor
> used to write the disk and the drive
> motor used to read the disk.

Is this the reason why +H2K only works on 1541-II ?
What's the real difference between these drives anyway? (apart from the ROM).
2003-05-20 18:08
Graham
Account closed

Registered: Dec 2002
Posts: 990
possible differences:

1. different maximum head speed
2. different rotation speed
3. different rotation acceleration
4. different mhz for cpu in c64 and 1541


incompabilities due to no.1 happen quite often due to people using too fast head movements which only work on a few drives.

no.4 is due to different clocks for c64 and 1541 cpu. there are small differences from quartz to quartz and very tight timing in IEC transfer routines may fail due to these.

no.2 only is a problem when you use disks formatted on other drives...
2003-05-28 07:05
Cybernator

Registered: Jun 2002
Posts: 154
You guys rule! ;-D
Yups! It's working. My very first disk loader! ;-D

It's still needs some finalizing before I release it for beta testing. However, I experienced the first problems:

- I tried it with a 1541 (old) that sometimes has reading/writing problems... It worked. ;-)
- Then I tried another 1541 (old) in much better condition. Worked aswell.
- The 1541-II test: The first time I ran it, it said file not found. :-( I tried it a few more times, and worked well.
- Also works in CCS (and I believe VICE too).

I guess the first time it didn't read the directory as supposed. Maybe I move the head too fast, so it eventually ended on a half track.
I hate this kinda bugs. They are really hard to fix. (unless you know exactly what the problem is).

Btw, a turn disk checker is not yet implemented, 'cause I have used all the available RAM. (not counting zero, and first page).
Previous - 1 | 2 - Next
RefreshSubscribe to this thread:

You need to be logged in to post in the forum.

Search the forum:
Search   for   in  
All times are CET.
Search CSDb
Advanced
Users Online
megasoftargentina
Kakka/Extend, Damone..
Francois Prijt/Audia..
Alakran_64
Rub_0201
TheRyk/MYD!
wil
Laddh
tlr
psenough
Peacemaker/CENSOR/Hi..
Mike
Guests online: 94
Top Demos
1 Next Level  (9.7)
2 13:37  (9.7)
3 Mojo  (9.7)
4 Coma Light 13  (9.6)
5 Edge of Disgrace  (9.6)
6 What Is The Matrix 2  (9.6)
7 The Demo Coder  (9.6)
8 Uncensored  (9.6)
9 Comaland 100%  (9.6)
10 Wonderland XIV  (9.6)
Top onefile Demos
1 No Listen  (9.6)
2 Layers  (9.6)
3 Cubic Dream  (9.6)
4 Party Elk 2  (9.6)
5 Copper Booze  (9.6)
6 Dawnfall V1.1  (9.5)
7 Rainbow Connection  (9.5)
8 Onscreen 5k  (9.5)
9 Morph  (9.5)
10 Libertongo  (9.5)
Top Groups
1 Performers  (9.3)
2 Booze Design  (9.3)
3 Oxyron  (9.3)
4 Censor Design  (9.3)
5 Triad  (9.3)
Top Original Suppliers
1 Derbyshire Ram  (9.7)
2 Fungus  (9.3)
3 Black Beard  (9.2)
4 Baracuda  (9.2)
5 hedning  (9.1)

Home - Disclaimer
Copyright © No Name 2001-2024
Page generated in: 0.036 sec.