VOGONS


First post, by DoomWarrior

User metadata
Rank Newbie
Rank
Newbie

hi

i want to install Pinball 3D/VCR but the installer claim there is not enough disk space. First i thought it could be the wrong size of my diskdrive (programm overflow after 2GB or so)
so i set this to 100MB. But without success.
So i recompile with debug stuff and start debugging (my asm-skills aren't the best)
after poking around a little bit it got THE funny thing
INT 21 (AH 1C)
the return value seems to be ok, the programm now checks
against 00F8 but the value is F8F8
i found some note in the internet

check_FAT: Unusual media descriptor (0xf0!=0xF8)

so the game find out it isn't a valid drive, if i understand the code correct, and skip C:\ (my drive)
so i Set register to 00F8 and now the installer work...

is this a 'bug' or did i miss some configuration ?

Bye

Reply 1 of 16, by DoomWarrior

User metadata
Rank Newbie
Rank
Newbie

so i would like to look after this issue, but i need a starting point, where is the Dos Interrupt handling stuff, i couldn't find anything yet 😖

i added some code for debugging. I was wondering why it isn't possible to set AH for example. So i added that stuff. imho it's quiet usefull. 😀

Attachments

  • Filename
    debug.cpp.DIFF
    File size
    1.46 KiB
    Downloads
    298 downloads
    File comment
    8bit register manipulation (AH,AL...DL)
    File license
    Fair use/fair dealing exception

Reply 3 of 16, by Qbix

User metadata
Rank DOSBox Author
Rank
DOSBox Author

f8f8 would indicate a mounted C and D drive ? I assume you talk about
the DS:BX pointer.

(as dosbox points to the table where these are stored.... maybe they need to be copied to a location and then point to it. Dunno.)
They are stored for all drives in onetable.

Water flows down the stream
How to ask questions the smart way!

Reply 4 of 16, by DoomWarrior

User metadata
Rank Newbie
Rank
Newbie

yeah true DS:BX sorry!
if i mount my cdrom to E:\ it works to! 🤣
after int21:1C there is 02 in BL
then he mov BX, [BX]
then he got F8F8 (with C:\, D:\) and 00F8 (with C:\ E:\)
if there is a floppy in D:\ -> F0F8

so i think your are right. Increasing the media to 16bit ?

edit: i think i have the sucker

Boot Sector (since DOS 2.0) […]
Show full quote

Boot Sector (since DOS 2.0)

Offset Size Description
...
13 word number of total sectors (0 if partition > 32Mb)
15 byte media descriptor byte

the silly question is this cmp a bug or a feature 😉
so the game is only installable on partitions bigger then 32MB.
But the game only need 8MB 😵

Reply 5 of 16, by Qbix

User metadata
Rank DOSBox Author
Rank
DOSBox Author

hmm. I don't know.
I'm not sure if that is the actual byte used by that call. (as that isn't the bootsector the call inquiries about.)

I think wd knows it, as the location of the dos tables was determined by him to get windows runinng.

Water flows down the stream
How to ask questions the smart way!

Reply 6 of 16, by wd

User metadata
Rank DOSBox Author
Rank
DOSBox Author

I think the returned id-byte is part of the dpb (which
is not present in dosbox, just the byte itself) so
the assumption that the id-byte is followed by a zero
might be correct, it's something like "drive accessed".

Reply 7 of 16, by Qbix

User metadata
Rank DOSBox Author
Rank
DOSBox Author

sounds familiar. Isn't that the byte people can use to see if the floppy got changed as well ? as the dpb needs to reread from disk in that case.

Water flows down the stream
How to ask questions the smart way!

Reply 9 of 16, by Qbix

User metadata
Rank DOSBox Author
Rank
DOSBox Author

dpbMedia db ? ; Media descriptor
dpbFirstAccess db ? ; 0FFh = medium in drive not accessed

yeps those 2
The first is your number.
the second can be 0. (better said if FF then medium not accessed. Some way to detect a diskchange)

Water flows down the stream
How to ask questions the smart way!

Reply 11 of 16, by Qbix

User metadata
Rank DOSBox Author
Rank
DOSBox Author

for fixed disks it does indeed make little sense, however for floppies... (I might be confused with a different Call, but I remember having read somethink like this once.)

Water flows down the stream
How to ask questions the smart way!

Reply 12 of 16, by wd

User metadata
Rank DOSBox Author
Rank
DOSBox Author

I don't think it serves too well to detect floppy changes,
as it (should?) report disk/floppy access only, not the
changes.
But either way, reserving words for the id-byte with the
high part set to zero might work well.

Reply 13 of 16, by DoomWarrior

User metadata
Rank Newbie
Rank
Newbie

now a stupid question, wouldn't it be better to implement the hole dpb thing? because i think there are some other calls point to it ?

Reply 15 of 16, by DoomWarrior

User metadata
Rank Newbie
Rank
Newbie

ok here a fix for it...

Attachments

  • Filename
    dos_files.cpp.diff
    File size
    707 Bytes
    Downloads
    293 downloads
    File comment
    diff for Pinball 3D Installer fix
    File license
    Fair use/fair dealing exception

Reply 16 of 16, by Qbix

User metadata
Rank DOSBox Author
Rank
DOSBox Author

I don't think that will always go allright. As you essentially change what's on ds:bx.

Water flows down the stream
How to ask questions the smart way!