Jump to content
IGNORED

Wordmark ROMDOS Manual


Curt Vendel

Recommended Posts

4 minutes ago, ivop said:

It's about what you expect if you leverage 4kB of spare ROM space in an 800 :)   I don't think it was that much effort. Just reassemble most functions of DOS.SYS to $C000 and load an initializer and/or wrapper stubs in lower RAM.

 

But a cool product it was. Never heard of it before.

Here's something interesting I found. The disk from bob1200xl is a single density disk with DOS.SYS, DUP.SYS, DUPR.SYS and AUTORUN.SYS.  I formatted a double density disk and wrote the DOS files to it and all it has on it is DUPR.SYS.  When I boot the disk, it reads sectors 1-3 and 361 then goes to the READY prompt.  When I type DOS, DUPR is loaded as expected from sectors 4-26. I'm not quite sure how that boot process is working.

  • Like 1
Link to comment
Share on other sites

3 minutes ago, tep392 said:

Here's something interesting I found. The disk from bob1200xl is a single density disk with DOS.SYS, DUP.SYS, DUPR.SYS and AUTORUN.SYS.  I formatted a double density disk and wrote the DOS files to it and all it has on it is DUPR.SYS.  When I boot the disk, it reads sectors 1-3 and 361 then goes to the READY prompt.  When I type DOS, DUPR is loaded as expected from sectors 4-26. I'm not quite sure how that boot process is working.

Interesting indeed. This implies that the code in sectors 1-3 is enough to bootstrap the D: driver in ROM, otherwise you wouldn't have D: in BASIC and it wouldn't be able to load DUPR.SYS from disk.

Link to comment
Share on other sites

Just now, ivop said:

Interesting indeed. This implies that the code in sectors 1-3 is enough to bootstrap the D: driver in ROM, otherwise you wouldn't have 😧 in BASIC and it wouldn't be able to load DUPR.SYS from disk.

I checked DOSINI and DOSVEC and they are $CD38 and $CCB0 respectively.  Maybe that is what it get's from the boot sectors.  I don't know much about the DOS boot process.  So it seems an added benefit to ROMDOS is some extra space on a boot disk.

 

Link to comment
Share on other sites

6 minutes ago, tep392 said:

I checked DOSINI and DOSVEC and they are $CD38 and $CCB0 respectively.  Maybe that is what it get's from the boot sectors.  I don't know much about the DOS boot process.  So it seems an added benefit to ROMDOS is some extra space on a boot disk.

Do you run this on emulation? And if so, how?

 

I was thinking it might be a nice (or dumb) idea to prepend the ROMDOS ROM to the 800 OS and create a 16kB ROM. Then use that on an (emulated) Atari 800XL. Boot the disk, et cetera...  If that works, you might even run Turbo Basic because now you can disable the OS, which is needed for TB. The same might work with an Incognito card. Does Turbo Basic run on the 800 OS? I don't know :)

Edited by ivop
Link to comment
Share on other sites

17 minutes ago, tep392 said:

Maybe that is what it get's from the boot sectors.  I don't know much about the DOS boot process.

Which code actually sets these vectors is not known yet. Could be boot sector code, could be ROM code that was called from the boot sector code.

 

The boot process is basically: you turn on the Atari, it runs some code from ROM, then it tries to read three sectors (1-3) from disk to memory locations $0700 and beyond by means of the SIO routines in the OS ROM. I say try, because if there's no drive you hear the farting sound of it trying. If it succeeds, it runs that code located at the location that $0704/$0705 points to. That's it.

 

When booting a DOS.SYS from disk, that code starts loading DOS.SYS and runs it.

 

In this case, DOS.SYS is in ROM, so it doesn't need to load it anymore. Where the vectors are set has to be investigated. But only three sectors are needed to bootstrap ROMDOS and register the D: driver with the OS (HATABS, Handler Address Table).

Edited by ivop
  • Like 1
Link to comment
Share on other sites

I've only run this on a real 800 so far.  The drive is emulated with SIO2USB for the moment because I haven't had a chance to put it on real floppies.  It looks like Larry has got this running on an XL machine HERE. It should be pretty easy to trace the boot process with an emulator. I'll take a look at it later. LOMEM is set to $0e04 with ROMDOS loaded. I took a brief look at the area from $700-$e04 and there are just a few bits of code with mostly empty space for the buffer I would guess. 

Link to comment
Share on other sites

Interesting stuff. I concatenated the ROMDOS ROM with 2kB of zeroes and REV B NTSC OS. Here are the results.

 

romdos.zip

 

rdos_v0-1_crc-5c72e.bin is the ROMDOS ROM

twokay.dat is just 2kB of zeroes (this is where the selftest resides on an XL/XE machine)

revbntsc.rom is what the name says.

 

This is how I run it:

atari800 -nopatch -nopatchall -ntsc -xl -xlxe_rom sixteenkay.rom -xl-rev custom -cart basicrevc.bin -cart-type 1 romdos.atr blank.atr

 

Disabling OS patching was necessary, otherwise it would crash writing DOS files to drive 2.

 

romdos.atr is the aforementioned boot disk. blank.atr is a copy which was formatted :) and then had DOS files written to it with the H command.

 

Observations with BASIC Rev.C:

 

? FRE(0)

 

Booting romdos.atr without ROMDOS ROM: 31035

Booting romdos.atr: 34668

Booting blank.atr: 36106

 

Booting romdos.atr takes a bit longer and seems to load DOS.SYS (partly?) from disk. Once you have formatted a new disk and only written DUPR.SYS to it plus a customized boot sector, you get more bytes free, but you have to have the ROMDOS ROM available to boot such a disk (unlike romdos.atr). The init address at $0704/$0705 in the boot sector is then pointing to ROM directly. No loaded boot code is executed :)

 

Edit:

 

This is really three boot sectors and reading the directory (sector 361) to see if it has to autorun something:

 

atari800 -nopatch -nopatchall -ntsc -xl -xlxe_rom sixteenkay.rom -xl-rev custom -cart basicrevc.bin -cart-type 1 blank.atr

 

That would really have been a time saver back in the day!

 

 

Edited by ivop
elaborated
  • Like 3
Link to comment
Share on other sites

22 minutes ago, tep392 said:

I didn’t try it without the ROM but figured that is what the DOS and DUP files were for. Do you know what Autorun does?

Not yet. I made a mistake in my post above. Both romdos.atr and blank.atr have their boot sector init vector pointing to ROM ($CCB0), and the boot continuation vector to $0733, which is loaded boot code. It seems it tries to load DOS.SYS from disk, but if it's not there, it tries ROM, and if that fails, there is no DOS ;) Have to check on the order which the OS calls certain vectors. Jumping to $CCB0 with no ROMOS present would fail on an 800, so it probably runs the boot continuation code first? Phaeron's manual will probably tell me :)

 

Edit: I'll disassemble the boot code. But not today. I'm tired.

Edited by ivop
  • Like 1
Link to comment
Share on other sites

Yes, more than one version.  The version that I used was for OSS Supercartridges.  I previously tested it with an expanded  XL, Basic XL, and a translator.  Today, I tried it with my 800, and it worked exactly the same.  Now the bad news.  It is a really early, limited version of MyDos.  As far as I can tell, when you need Dup, it must load from your drive. No ramdisk swap support.  (However, if your 800 had a hard drive...)   But you do gain about 4K usable memory, and you don't need a Ramrod board -- just an OSS cart.

Link to comment
Share on other sites

15 hours ago, Larry said:

Yes, more than one version.  The version that I used was for OSS Supercartridges.  I previously tested it with an expanded  XL, Basic XL, and a translator.  Today, I tried it with my 800, and it worked exactly the same.  Now the bad news.  It is a really early, limited version of MyDos.  As far as I can tell, when you need Dup, it must load from your drive. No ramdisk swap support.  (However, if your 800 had a hard drive...)   But you do gain about 4K usable memory, and you don't need a Ramrod board -- just an OSS cart.

The lack of Ramdisk support is a big down side to this early version of MyDOS. My preferred DOS is SDX which when used on the 800 makes an extra 3K available in Atari BASIC compared to DOS2.0 with Axlon Ramdisk driver.

Link to comment
Share on other sites

This is a what-if question...  If you have a 52K  400/800, or XL/XE, is there a way to run this out of ram at $C000-CFFF? 

 

I tried, but failed.  I thought that perhaps the $C000-CFFF area would not be cleared on a regular cold start, but it is on my 800.  My idea was to BLOAD the Romdos code then do a cold start to boot the disk.  Any other ideas?

 

OTOH, I read that Romdos can be run from an Omnimon board, but I don't know if other changes were required.  Called Omnidos.  Anyone remember having it?

 

Link to comment
Share on other sites

14 minutes ago, Larry said:

This is a what-if question...  If you have a 52K  400/800, or XL/XE, is there a way to run this out of ram at $C000-CFFF? 

 

I tried, but failed.  I thought that perhaps the $C000-CFFF area would not be cleared on a regular cold start, but it is on my 800.  My idea was to BLOAD the Romdos code then do a cold start to boot the disk.  Any other ideas?

 

OTOH, I read that Romdos can be run from an Omnimon board, but I don't know if other changes were required.  Called Omnidos.  Anyone remember having it?

 

Maybe you could get it to run out of RAM if you manually called the DOS init routines instead of doing a cold start.  Some custom boot code could be written to read the binary into ram and initialize it. Regarding the Omnimon board, I have one so could   try out romdos on it. I don't see why it wouldn't work.

  • Like 1
Link to comment
Share on other sites

10 minutes ago, Larry said:

@ivop

FWIW, I'm interested in your 800 OS + Rdos, if you get some time to look into it further.  I flashed it into my Antonia 4MB, so it's very easy to test.

-Larry 

And did that work? Can you boot the romdos.atr blank.atr disk with 4 sector reads and end up in BASIC?

 

The reason I used a Rev.C cartridge in emulation was because it didn't work with just atari800 -basic with the proper Rev.C BASIC ROM enabled. The cartridge is actually the XL/XE BASIC ROM :)  I guess this is because the 800 OS is not aware of builtin BASIC as it is slightly different than an inserted cartridge.

Edited by ivop
fixed blank.atr!
Link to comment
Share on other sites

On 10/18/2022 at 12:20 AM, Mathy said:

Not sure if it will help you, but Charles Marslett once told me about different versions of R(OM)DOS.  You can find a copy of the letter right below the picture of the MyDOS menu on my MyDOS page.  Number 1 is the one you might want to read.

Almost forgot about this, but very interesting stuff!

 

Just read the first letter and it implies that his XL/XE version is basically the 800OS with ROMDOS prepended (as I did, too :)). But version 1.4 should work with built-in BASIC. And it was even adapted to run under the BASIC ROM, so with the XL OS instead of OS-B.

 

"RDOS rapidly went from version 0.0 to 1.0, 1.1, 1.2 and ended its history as 1.4". I assume these were all different ROM + bootdisk versions.

 

EDIT: and we have 0.1 right now :)

Edited by ivop
Link to comment
Share on other sites

I did not try the blank atr.  I used the original Rdos + a Basic cartridge.  It did not work properly.  It booted a few sectors, making a garbled SIO sound then jumped to Basic.  It could load DUP.SYS.  I'll try it some more, including the blank.

  • Thanks 1
Link to comment
Share on other sites

51 minutes ago, Larry said:

I used the original Rdos + a Basic cartridge.

What do you mean by this? Do you have an original RDOS floppy? And if so, which version is it? :)

 

BASIC Cartridge is good, because ROMDOS/RDOS does not detect built-in BASIC in version 0.1. It only checks the hardware cartridge signals, which are not asserted with built-in BASIC. It was the solution for me to not getting to the READY prompt and do ? FRE(0) :)

 

Edit: booting romdos.atr should also work. Without it, you cannot create a disk similar to 'blank.atr'. Only use a little less free space in BASIC. Not sure why yet.

Edited by ivop
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...