tep392 Posted October 17, 2022 Share Posted October 17, 2022 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. 1 Quote Link to comment Share on other sites More sharing options...
ivop Posted October 17, 2022 Share Posted October 17, 2022 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. Quote Link to comment Share on other sites More sharing options...
tep392 Posted October 17, 2022 Share Posted October 17, 2022 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. Quote Link to comment Share on other sites More sharing options...
ivop Posted October 17, 2022 Share Posted October 17, 2022 (edited) 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 October 17, 2022 by ivop Quote Link to comment Share on other sites More sharing options...
ivop Posted October 17, 2022 Share Posted October 17, 2022 (edited) 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 October 17, 2022 by ivop 1 Quote Link to comment Share on other sites More sharing options...
tep392 Posted October 17, 2022 Share Posted October 17, 2022 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. Quote Link to comment Share on other sites More sharing options...
ivop Posted October 17, 2022 Share Posted October 17, 2022 (edited) 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 October 17, 2022 by ivop elaborated 3 Quote Link to comment Share on other sites More sharing options...
tep392 Posted October 17, 2022 Share Posted October 17, 2022 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? Quote Link to comment Share on other sites More sharing options...
ivop Posted October 17, 2022 Share Posted October 17, 2022 (edited) 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 October 17, 2022 by ivop 1 Quote Link to comment Share on other sites More sharing options...
Mathy Posted October 17, 2022 Share Posted October 17, 2022 Helllo guys 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. Sincerely Mathy 1 Quote Link to comment Share on other sites More sharing options...
+Larry Posted October 17, 2022 Share Posted October 17, 2022 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. Quote Link to comment Share on other sites More sharing options...
tep392 Posted October 18, 2022 Share Posted October 18, 2022 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. Quote Link to comment Share on other sites More sharing options...
+Larry Posted October 18, 2022 Share Posted October 18, 2022 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? Quote Link to comment Share on other sites More sharing options...
tep392 Posted October 18, 2022 Share Posted October 18, 2022 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. 1 Quote Link to comment Share on other sites More sharing options...
+Larry Posted October 18, 2022 Share Posted October 18, 2022 Hopefully, your Omnimon is already in your 800, so you would just need to swap the eproms? I've got a new 800 Omnimon, but haven't installed it since I got my 800 last summer. Anyway, good luck. Quote Link to comment Share on other sites More sharing options...
tep392 Posted October 18, 2022 Share Posted October 18, 2022 It works. 1 Quote Link to comment Share on other sites More sharing options...
+Larry Posted October 18, 2022 Share Posted October 18, 2022 Outstanding! And here are a couple of pics: 1 1 Quote Link to comment Share on other sites More sharing options...
tep392 Posted October 18, 2022 Share Posted October 18, 2022 I should add that the switch needs to be in the center position which disables the interrupts for SELECT and OPTION/RESET. Otherwise the computer locks when booting. Quote Link to comment Share on other sites More sharing options...
+Larry Posted October 19, 2022 Share Posted October 19, 2022 @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 Quote Link to comment Share on other sites More sharing options...
ivop Posted October 19, 2022 Share Posted October 19, 2022 (edited) 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 October 19, 2022 by ivop fixed blank.atr! Quote Link to comment Share on other sites More sharing options...
ivop Posted October 19, 2022 Share Posted October 19, 2022 (edited) 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 October 19, 2022 by ivop Quote Link to comment Share on other sites More sharing options...
+Larry Posted October 19, 2022 Share Posted October 19, 2022 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. 1 Quote Link to comment Share on other sites More sharing options...
ivop Posted October 19, 2022 Share Posted October 19, 2022 (edited) 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 October 19, 2022 by ivop Quote Link to comment Share on other sites More sharing options...
+Larry Posted October 19, 2022 Share Posted October 19, 2022 It is 0.1 -- same as shown on the screen shot near the bottom of page one of this thread. I'm getting ready to start testing again. Nap is over 😴 Quote Link to comment Share on other sites More sharing options...
ivop Posted October 19, 2022 Share Posted October 19, 2022 I just noticed that with the OSS screenshots, you apparently used the OSS SuperCart version (which hides under the cartridge in RAM), and it is RDOS v0.0 ? I might be daft, but I can't find those files 😕 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.