Log inRegister an accountBrowse CSDbHelp & documentationFacts & StatisticsThe forumsAvailable RSS-feeds on CSDbSupport CSDb Commodore 64 Scene Database
 Welcome to our latest new user jmi ! (Registered 2024-09-15) You are not logged in - nap
CSDb User Forums


Forums > C64 Coding > Drive code: Detect missing disk...
2022-11-01 19:50
Bacchus

Registered: Jan 2002
Posts: 155
Drive code: Detect missing disk...

I have detecting missing *device* covered. This logics work really well:https://codebase64.org/doku.php?id=base:reading_the_error_chann..

Also, checking if a file exists, one would expect that a plain Open would do the job, but you basically need to read the first byte and checking the Status. But then you have established that.

But what is the easiest way to detect if the device contains a disk? Let's say we have established that there is a disk in the drive. I can start reading a file, but then I don't know if the error will tell me if the file or the entire disk is missing.

Should I do a block read, start reading the directory or what is the general suggestion?

/Bacchus
2022-11-01 21:27
Comos

Registered: May 2004
Posts: 73
If you rely on the kernal calls, then using a directory routine and to read a valid byte and check $90 might do the trick.
2022-11-01 23:35
Krill

Registered: Apr 2002
Posts: 2940
When using KERNAL calls only, reading the device's error channel is the only way to reliably tell the kind of error.

This is something else than "drive code", though. :)
2022-11-02 16:53
chatGPZ

Registered: Dec 2001
Posts: 11290
Turn on the motor and wait for a sync (with timeout) - should be easy enough :)
2022-11-02 19:55
Count Zero

Registered: Jan 2003
Posts: 1878
Quote: Turn on the motor and wait for a sync (with timeout) - should be easy enough :)

Zibri approves! *SCNR*
2022-11-02 19:58
Bacchus

Registered: Jan 2002
Posts: 155
Quote: If you rely on the kernal calls, then using a directory routine and to read a valid byte and check $90 might do the trick.

So basically a getbyte from the filename "$", and one could tell already from the first byte if there was a byte or not?

I do know how to drivecode, but I want to select the route of the least resistance here.

/Bacchus
2022-11-02 22:24
Comos

Registered: May 2004
Posts: 73
Quote: So basically a getbyte from the filename "$", and one could tell already from the first byte if there was a byte or not?

I do know how to drivecode, but I want to select the route of the least resistance here.

/Bacchus


Read just one byte and check bit 1 of $90, 1 = Timeout on read, which in simple would mean there is no disk inserted since we are accessing the lower level - the directory.
If you do this check on a file, then you won't be able to determinate, if the file is simply not present or there is no disk inserted,since in both cases you'll get the same bit set.
Ofcourse this method is not perfect for some detailed error handling.
If you would like to go the way to read out the error channel, then you have to do something in advance like running the init "I" command and then read out the error channel.
2022-11-02 23:02
Count Zero

Registered: Jan 2003
Posts: 1878
Quoting Bacchus
So basically a getbyte from the filename "$", and one could tell already from the first byte if there was a byte or not?


A drive such as a SD2IEC could easily fool for an inserted disc in such a case - so it likely depends on the used loader/saver compatibility in the end unless you determine the drivetype as well or stick to plain kernal routines. hm?
2022-11-02 23:54
Krill

Registered: Apr 2002
Posts: 2940
The clean way is still to read the error channel.

Why is this not an option? :)
2022-11-03 09:55
Mason

Registered: Dec 2001
Posts: 461
Sorry for my vague memory, but it's many years ago I did it

I reckon you can load a byte from a file or the directory. If it doesn't work I reckon $90 is set as a status
2022-11-03 13:38
chatGPZ

Registered: Dec 2001
Posts: 11290
Quote:
Why is this not an option?

head bump?
 
... 14 posts hidden. Click here to view all posts....
 
Previous - 1 | 2 | 3 - 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
Scooby/G★P/Light
Matt
Higgie/Kraze/Slackers
-trb-
icon/The Silents, Sp..
Pajda/Faith Design
lucommodore
Brush/Elysium
Avalanche/Atlantis
Da Snake
REBEL 1/HF
Courage
bugjam
Sychamis
E$G/HF ⭐ 7
WVL/Xenon
Guests online: 147
Top Demos
1 Next Level  (9.7)
2 13:37  (9.7)
3 Coma Light 13  (9.7)
4 Edge of Disgrace  (9.6)
5 Mojo  (9.6)
6 Uncensored  (9.6)
7 Wonderland XIV  (9.6)
8 Comaland 100%  (9.6)
9 No Bounds  (9.6)
10 Unboxed  (9.6)
Top onefile Demos
1 Layers  (9.6)
2 Party Elk 2  (9.6)
3 Cubic Dream  (9.6)
4 Copper Booze  (9.6)
5 Rainbow Connection  (9.5)
6 It's More Fun to Com..  (9.5)
7 Dawnfall V1.1  (9.5)
8 Onscreen 5k  (9.5)
9 Daah, Those Acid Pil..  (9.5)
10 Morph  (9.5)
Top Groups
1 Booze Design  (9.3)
2 Oxyron  (9.3)
3 Nostalgia  (9.3)
4 Censor Design  (9.3)
5 Triad  (9.2)
Top Webmasters
1 Slaygon  (9.6)
2 Perff  (9.6)
3 Morpheus  (9.5)
4 Sabbi  (9.5)
5 CreaMD  (9.1)

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