Log inRegister an accountBrowse CSDbHelp & documentationFacts & StatisticsThe forumsAvailable RSS-feeds on CSDbSupport CSDb Commodore 64 Scene Database
 Welcome to our latest new user maak ! (Registered 2024-04-18) 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: 154
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
 
... 14 posts hidden. Click here to view all posts....
 
2022-11-03 17:29
Krill

Registered: Apr 2002
Posts: 2822
What do you actually want to achieve?

Why does there need to be a distinction between file not found and no disk inserted?
2022-11-03 18:50
Comos

Registered: May 2004
Posts: 71
@Bacchus,

the test device routine you have is serial dependant, if you want to have it universal, it can be rewritten in kernal aswell.
2022-11-04 09:52
Bacchus

Registered: Jan 2002
Posts: 154
@krill I want to load and save stuff to disk as part of a program, and that program needs to handle the situations where there is a save problem. Formally no need to differentiate between the two cases, but if you select a device you might want to capture that this is a device not available and I am also keen to capture no disk in the drive before I start the actual save.

@cosmos The use case is serial with a drive. No need to generalize it beyond the actual use case.

I did a test program where I implemented the above, but there is still issues when the same code is implemented in the program. :-P

/Bacchus
2022-11-04 11:04
Krill

Registered: Apr 2002
Posts: 2822
Quoting Bacchus
if you select a device you might want to capture that this is a device not available and I am also keen to capture no disk in the drive before I start the actual save.
What would be the difference between erroring out after an init command before saving vs. attempting to save and then erroring out?
2022-11-04 17:57
Bacchus

Registered: Jan 2002
Posts: 154
Gunnar, you come from a different perspective.

You do your thing and put the loader out for others to use. I am retrofitting stuff, meaning I need to wedge in my stuff as smoothly as possible. I might also not control what happens after a certain point unless I open up more patching with potential side effects.

So I prefer to do my stuff and secure things are as good as I can make them, and then I release the thing, not being sure I can regain control if it bugs out at a later stage.

Not sure that argument holds water, but also there is an inner loop loading five different files. Letting them all fail will take a long time. Wedging in stuff there is tricky so I prefer to do it this way this time ...

The things with that piece of code I have done is that it tells "device not present" from "disk not present", and that *looks* nice :-)

/Bacchus
2022-11-04 22:21
Comos

Registered: May 2004
Posts: 71
Quoting Bacchus

I did a test program where I implemented the above, but there is still issues when the same code is implemented in the program. :-P


What kind of a issue?
2022-11-05 12:12
Krill

Registered: Apr 2002
Posts: 2822
Quoting Bacchus
there is an inner loop loading five different files. Letting them all fail will take a long time. Wedging in stuff there is tricky so I prefer to do it this way this time ...
Retrofitting or not, what i was saying is that i see no advantage of checking for disk-not-present prior to saving, as saving itself does that check implicitly, too.
This is also independent from any inner loops handling multiple files.
2022-11-05 15:10
Bacchus

Registered: Jan 2002
Posts: 154
Quote: Quoting Bacchus

I did a test program where I implemented the above, but there is still issues when the same code is implemented in the program. :-P


What kind of a issue?


@Cosmos Can't really describe it perfectly but it feels like the commands aren't concluded properly, and the drive isn't ready to accept new commands. The detect disk command works arbitrarily. Sometimes it does and sometimes not (possibly depending on what happened before). Trying to send an "I" commands after my detection routines, I simply get an error. In VICE I can switch to DEV 8: and do M 0200 to see the status message, and sometimes that is Syntax error. That could sometimes happen if I send commands in the wrong case (common issue I have when messing with drive code).

@Krill I fully sympathize with this point of view and I will onboard it when considering the task ahead. Would be stupid not to :-)

Can be agree that if $98 is $00, then I have closed all files I have opened, right?

/Bacchus
2022-11-05 15:20
Krill

Registered: Apr 2002
Posts: 2822
Quoting Bacchus
Can't really describe it perfectly but it feels like the commands aren't concluded properly, and the drive isn't ready to accept new commands. The detect disk command works arbitrarily. Sometimes it does and sometimes not (possibly depending on what happened before).
I think it's important to error out at the earliest possible chance. So i'd check $90 after every command that might fail, plus OPEN returns an error flag via the C flag. On error, of course, need to properly clean up, too.
2022-11-05 21:24
Comos

Registered: May 2004
Posts: 71
Quoting Krill
I think it's important to error out at the earliest possible chance. So i'd check $90 after every command that might fail, plus OPEN returns an error flag via the C flag. On error, of course, need to properly clean up, too.


Besides $90 it's possible to readout accu for error code aswell in certain calls.
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
heavymett
fidel
Oswald/Resource
Acidchild/Padua
Max/Flat3
Retroluzzer/Quantum
Apollyon/ALD
csio/monarchy c+4
kbs/Pht/Lxt
Guests online: 122
Top Demos
1 Next Level  (9.8)
2 Mojo  (9.7)
3 Coma Light 13  (9.7)
4 Edge of Disgrace  (9.6)
5 Comaland 100%  (9.6)
6 No Bounds  (9.6)
7 Uncensored  (9.6)
8 Wonderland XIV  (9.6)
9 The Ghost  (9.6)
10 Bromance  (9.6)
Top onefile Demos
1 It's More Fun to Com..  (9.9)
2 Party Elk 2  (9.7)
3 Cubic Dream  (9.6)
4 Copper Booze  (9.5)
5 Rainbow Connection  (9.5)
6 TRSAC, Gabber & Pebe..  (9.5)
7 Onscreen 5k  (9.5)
8 Dawnfall V1.1  (9.5)
9 Quadrants  (9.5)
10 Daah, Those Acid Pil..  (9.5)
Top Groups
1 Oxyron  (9.3)
2 Nostalgia  (9.3)
3 Booze Design  (9.3)
4 Censor Design  (9.3)
5 Crest  (9.3)
Top Logo Graphicians
1 Sander  (10)
2 Facet  (9.7)
3 Mermaid  (9.4)
4 Pal  (9.4)
5 Shine  (9.3)

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