russg Posted February 18, 2012 Share Posted February 18, 2012 (edited) Nice display, thanks! Yes, it loads the OS into RAM and then overlays its own code on top of it. You can actually switch to the RAM OS after it tries to load. I have the feeling that if you branched to the RUN address, all would work - but, 73088 is outside the range of possible addresses. How did you get that number in your program? A two-byte register won't display a number that large... I'll have to spend some time with your program. Bob I have a PBI-based HD that loads TBXL ver.1.5 just fine from DOS2.0S, but will not load under MyDOS 4.5 (or earlier versions, like 3.08). This happens whether I am using the HD or SIO. The same files/DOS works fine on a stock 1200XL. TBXL seems to be loading fine, but it reverts to DUP at the end. (??) Does anyone know or have information on how TBXL loads? Thanks... Bob It loads in 11 sections, including RAM under the OS at $C000-$Cbf7, $D800-DFF9, $E400-$FFF1. It inits at $2100 and $6000 along the way. Here's a BASIC program to see how it loads. My program says it runs at 73088 at the end, which ain't right. The inits turn on RAM under the OS and do something to load and run. I dunno. Just run it and give the filespec to analyze... eg. D4:TB.COM I verified that $2080 is the start address, a USR call to it returns the READY. $2080 is in DOSINI after TB loads. I've wondered how the OS knows where to go to when there is no RUNAD at the end of the file. I thought maybe it pulls the address off the stack, but I don't think that is it. There's surely a ERROR 136 (EOF, end of file) at the end of the load, so the OS knows it is at the end of the file, but then where does it go? SpartaDOS doesn't need the RUNAD, but DOS 2/2.5 MyDOS I thought did. Edited February 18, 2012 by russg Quote Link to comment Share on other sites More sharing options...
+bob1200xl Posted February 18, 2012 Author Share Posted February 18, 2012 What could be happening to require a MyDOS change on one system and not the other? Bob Hello Bob You can try to set the amount of file buffers to three. MyDOS never uses more then three. If that doesn't solve the problem, try to "remove drives". You don't need to have all the available drives set up in MyDOS. I usually only have a few (the lower ones) set up in MyDOS, although I use everything from D1: to D9: Mathy PS why the heck did I use "Tschüß" in my previous message??? Silly me! Quote Link to comment Share on other sites More sharing options...
Rybags Posted February 18, 2012 Share Posted February 18, 2012 (edited) I don't see how that binary file could work at all. You can't load segments direct to RAM under the OS with any Dos I'm aware of. You can of course copy the OS to RAM, switch that in and load segments to OSRam, but that's asking for trouble. You could try putting the run address onto that file. In normal basic: OPEN #1,9,0,"D:TBXL.XEX" (or whatever the file is called) PUT #1,224 : PUT #1,2 PUT #1,225 : PUT #1,2 PUT #1,128 : PUT #1,32 : REM RUN @ $2080 CLOSE #1 I could be wrong, but my thought was that Dos jumps thru Dosvec ($0A) when loading a binary file that doesn't specify a Run address. Edited February 18, 2012 by Rybags Quote Link to comment Share on other sites More sharing options...
Mathy Posted February 18, 2012 Share Posted February 18, 2012 Hello Bob Sorry, I forgot that it worked on one system but not the other. Forget what I said. Let's blame it on the cold I caught. Mathy Quote Link to comment Share on other sites More sharing options...
Roydea6 Posted February 18, 2012 Share Posted February 18, 2012 (edited) MYDOST20.ATR Try this one. It has Turbo basic substituted for DUP.SYS and will alway boot to DUP.sys. If you don't need the MENu for anything.. A quick edit:: Have you tried Frostbasic version 1.4 it runs during the DOS load and is part of the dos loading. If you don't need the dup menu for anything. Edited February 18, 2012 by rdea6 Quote Link to comment Share on other sites More sharing options...
russg Posted February 18, 2012 Share Posted February 18, 2012 (edited) I don't see how that binary file could work at all. You can't load segments direct to RAM under the OS with any Dos I'm aware of. You can of course copy the OS to RAM, switch that in and load segments to OSRam, but that's asking for trouble. You could try putting the run address onto that file. In normal basic: OPEN #1,9,0,"D:TBXL.XEX" (or whatever the file is called) PUT #1,224 : PUT #1,2 PUT #1,225 : PUT #1,2 PUT #1,128 : PUT #1,32 : REM RUN @ $2080 CLOSE #1 I could be wrong, but my thought was that Dos jumps thru Dosvec ($0A) when loading a binary file that doesn't specify a Run address. That works (append RUNAD $2080). The INIT that occurs at $6000 puts $80 $20 in DOSINI. So, I think the OS goes thru DOSINI at the EOF if RUNAD doesn't occur. I think DOSINI specifies where to JMP to on RESET. edit: I don't think DOSINI specifies JMP on RESET I do know DOSVEC (10, 11, $A, $B) specifies where to go on a DOS command in BASIC. I'm pretty sure DOSINI ($C, $D) is where to go if no RUNAD (DOS not OS, right). Edited February 18, 2012 by russg Quote Link to comment Share on other sites More sharing options...
Rybags Posted February 18, 2012 Share Posted February 18, 2012 (edited) The OS wouldn't do anything - it doesn't know about binary files or have any part beyond the CIO processing. It's up to Dos to do when a binary load hits EOF without a Run address present. Are you sure it's going thru DOSINI ($0C) ? It'd be totally valid to go through the DOS vector ($0A) - a binary load can potentially overwrite part of DUP, so a DOS callback would allow all the MEM.SAV and DUP processing/reloading to take place. Another (probably unlikely) possibility is that the Dos does an OS Warmstart if it hits EOF, in that case then DOSINI would be called. You could try it in Altirra with a couple of traps set. e.g. BA R A BA R C Another thought - DOSINI processing really only has to establish the D: entry in the device table, and set the MEMLO pointer. So maybe it is the normal operation for some Doses after a binload EOF. Edited February 18, 2012 by Rybags Quote Link to comment Share on other sites More sharing options...
+Larry Posted February 18, 2012 Share Posted February 18, 2012 In the ATR with DUP.SYS replaced by TBXL -- wouldn't that be exactly like using TBXL as the Autorun.SYS. (Not rhetorical -- I don't know the answer.) -Larry MYDOST20.ATR Try this one. It has Turbo basic substituted for DUP.SYS and will alway boot to DUP.sys. If you don't need the MENu for anything.. A quick edit:: Have you tried Frostbasic version 1.4 it runs during the DOS load and is part of the dos loading. If you don't need the dup menu for anything. Quote Link to comment Share on other sites More sharing options...
+JAC! Posted February 18, 2012 Share Posted February 18, 2012 (edited) The INIT routine at 6000 "captures" the IOCB #$10 to loaded the rest of the file by itself, that's why there is no RUNADR - it never returns to DOS Edited February 18, 2012 by JAC! Quote Link to comment Share on other sites More sharing options...
+bob1200xl Posted February 18, 2012 Author Share Posted February 18, 2012 Very nice - exactly what I needed. This code in $6000 is what overlays the OS that was moved into RAM by the code in $2100. (I think) Now, to find where the systems diverge. Thanks!! Bob The INIT routine at 6000 "captures" the IOCB #$10 to loaded the rest of the file by itself, that's why there is no RUNADR - it never returns to DOS Quote Link to comment Share on other sites More sharing options...
+JAC! Posted February 19, 2012 Share Posted February 19, 2012 Does it have something to do with the MyDOS version? I just copied Trubobasic 1.5 on my standard MyDOS disk and it works just fine. Who can provide and image which fails. Turbo.atr Quote Link to comment Share on other sites More sharing options...
+bob1200xl Posted February 19, 2012 Author Share Posted February 19, 2012 MyDOS 4.5 and TBXL 1.5 only fail to load on my hardware. I am building a PBI-based HDD system and it will not load 4.5/1.5 although it will load TBXL 1.5 with DOS 2.0S (and 2.5). TBXL just returns to MyDOS when you try to load it from the HDD, APE or SIO. The CPU is a 65816 but TBXL/MyDOS works OK on other 65816 systems. This is a very specific, consistent failure. The HDD reads and writes hundreds of thousands of sectors with no errors. It fails on two identical HDD systems. I'm running an Omnimon OS at the moment, but it fails on the 1200XL OS, US+, and 800XL OS as well. I'm trying to track it down, but I can't see how TBXL loads... It doesn't even look like $6000 executes! Anyway, thanks for the help! Bob Does it have something to do with the MyDOS version? I just copied Trubobasic 1.5 on my standard MyDOS disk and it works just fine. Who can provide and image which fails. Quote Link to comment Share on other sites More sharing options...
flashjazzcat Posted February 19, 2012 Share Posted February 19, 2012 (edited) Probably unrelated, but when I was trying to get the Atari Macro Assembler to work with MyDOS many years ago, I discovered that MyDOS returns an extra error code via the CIO on completing a binary load. I seem to recall it returning a special EOF value in the status when the last byte of a file had been read (I'm not talking about an overrun read), and this happened to upset AMAC until I patched it. I see that TB's $6000 loader code craps out to DOS if it encounters a CIO error when reading in the segments which go under the OS. I just wondered if MyDOS is returning some kind of rogue value which is being branched on at $614C??? Edited February 19, 2012 by flashjazzcat Quote Link to comment Share on other sites More sharing options...
russg Posted February 19, 2012 Share Posted February 19, 2012 Probably unrelated, but when I was trying to get the Atari Macro Assembler to work with MyDOS many years ago, I discovered that MyDOS returns an extra error code via the CIO on completing a binary load. I seem to recall it returning a special EOF value in the status when the last byte of a file had been read (I'm not talking about an overrun read), and this happened to upset AMAC until I patched it. I see that TB's $6000 loader code craps out to DOS if it encounters a CIO error when reading in the segments which go under the OS. I just wondered if MyDOS is returning some kind of rogue value which is being branched on at $614C??? ?? $614C. $6000 only loads 390 bytes to $6185, there isn't anything at $614C. Quote Link to comment Share on other sites More sharing options...
+JAC! Posted February 19, 2012 Share Posted February 19, 2012 >This is a very specific, consistent failure. The HDD reads and writes hundreds of thousands of sectors with no errors. It fails on two identical HDD systems. I'm running an Omnimon OS at the moment, but it fails on the 1200XL OS, US+, and 800XL OS as well. Now I see. I'll create a version which traces the CIO calls + registers on the screen, so you can run on the real machine. Quote Link to comment Share on other sites More sharing options...
flashjazzcat Posted February 19, 2012 Share Posted February 19, 2012 (edited) ?? $614C. $6000 only loads 390 bytes to $6185, there isn't anything at $614C. There is something at $614C: the BMI instruction which immediately follows JSR CIOV. Edited February 19, 2012 by flashjazzcat Quote Link to comment Share on other sites More sharing options...
+bob1200xl Posted February 19, 2012 Author Share Posted February 19, 2012 Sure there is... are you counting correctly? Bob Probably unrelated, but when I was trying to get the Atari Macro Assembler to work with MyDOS many years ago, I discovered that MyDOS returns an extra error code via the CIO on completing a binary load. I seem to recall it returning a special EOF value in the status when the last byte of a file had been read (I'm not talking about an overrun read), and this happened to upset AMAC until I patched it. I see that TB's $6000 loader code craps out to DOS if it encounters a CIO error when reading in the segments which go under the OS. I just wondered if MyDOS is returning some kind of rogue value which is being branched on at $614C??? ?? $614C. $6000 only loads 390 bytes to $6185, there isn't anything at $614C. Quote Link to comment Share on other sites More sharing options...
+bob1200xl Posted February 19, 2012 Author Share Posted February 19, 2012 It is my understanding that if you are running the OmniMon OS and the system executes a BREAK command, it will drop into the monitor. I wrote $00 into $6178 and $6179 (the target of the BMI at $614C). The load did not change - went back to DUP. If MyDOS does return a special value, why does it work on a stock 1200XL and not my new hardware? Anyway, it does not seem to execute the branch at $614C. I tried writing $00 to $6000 - doesn't seem to execute that, either? I'm not sure OmniMon works as advertised... I'll try it on a different 1200XL. Thanks! Bob Probably unrelated, but when I was trying to get the Atari Macro Assembler to work with MyDOS many years ago, I discovered that MyDOS returns an extra error code via the CIO on completing a binary load. I seem to recall it returning a special EOF value in the status when the last byte of a file had been read (I'm not talking about an overrun read), and this happened to upset AMAC until I patched it. I see that TB's $6000 loader code craps out to DOS if it encounters a CIO error when reading in the segments which go under the OS. I just wondered if MyDOS is returning some kind of rogue value which is being branched on at $614C??? Quote Link to comment Share on other sites More sharing options...
flashjazzcat Posted February 19, 2012 Share Posted February 19, 2012 The more I think about this "last byte" issue, it may actually be something which AtariDOS and MyDOS were doing, but which SpartaDOS X wasn't. Recollections are very hazy. I know I eventually got AMAC to work with MyDOS, but never with SDX. Sorry my ramblings weren't more helpful in this case. Quote Link to comment Share on other sites More sharing options...
russg Posted February 19, 2012 Share Posted February 19, 2012 Sure there is... are you counting correctly? Bob Probably unrelated, but when I was trying to get the Atari Macro Assembler to work with MyDOS many years ago, I discovered that MyDOS returns an extra error code via the CIO on completing a binary load. I seem to recall it returning a special EOF value in the status when the last byte of a file had been read (I'm not talking about an overrun read), and this happened to upset AMAC until I patched it. I see that TB's $6000 loader code craps out to DOS if it encounters a CIO error when reading in the segments which go under the OS. I just wondered if MyDOS is returning some kind of rogue value which is being branched on at $614C??? ?? $614C. $6000 only loads 390 bytes to $6185, there isn't anything at $614C. Nope, I'm not counting correctly. 4C is less than 85. Quote Link to comment Share on other sites More sharing options...
Roydea6 Posted February 19, 2012 Share Posted February 19, 2012 MyDOS 4.5 and TBXL 1.5 only fail to load on my hardware. I am building a PBI-based HDD system and it will not load 4.5/1.5 although it will load TBXL 1.5 with DOS 2.0S (and 2.5). TBXL just returns to MyDOS when you try to load it from the HDD, APE or SIO. The CPU is a 65816 but TBXL/MyDOS works OK on other 65816 systems. This is a very specific, consistent failure. The HDD reads and writes hundreds of thousands of sectors with no errors. It fails on two identical HDD systems. I'm running an Omnimon OS at the moment, but it fails on the 1200XL OS, US+, and 800XL OS as well. I'm trying to track it down, but I can't see how TBXL loads... It doesn't even look like $6000 executes! Anyway, thanks for the help! Bob Bob, Have you tried using the 'M' option to run the address at $2080? After the load returns to DUP.SYS. Quote Link to comment Share on other sites More sharing options...
+bob1200xl Posted February 20, 2012 Author Share Posted February 20, 2012 The system hangs if I do that... Bob MyDOS 4.5 and TBXL 1.5 only fail to load on my hardware. I am building a PBI-based HDD system and it will not load 4.5/1.5 although it will load TBXL 1.5 with DOS 2.0S (and 2.5). TBXL just returns to MyDOS when you try to load it from the HDD, APE or SIO. The CPU is a 65816 but TBXL/MyDOS works OK on other 65816 systems. This is a very specific, consistent failure. The HDD reads and writes hundreds of thousands of sectors with no errors. It fails on two identical HDD systems. I'm running an Omnimon OS at the moment, but it fails on the 1200XL OS, US+, and 800XL OS as well. I'm trying to track it down, but I can't see how TBXL loads... It doesn't even look like $6000 executes! Anyway, thanks for the help! Bob Bob, Have you tried using the 'M' option to run the address at $2080? After the load returns to DUP.SYS. Quote Link to comment Share on other sites More sharing options...
+Larry Posted February 20, 2012 Share Posted February 20, 2012 FWIW- In the MyDos 4.50 Technical Manual (page 9), section VIII shows the MyDos memory map. It occupies $700 to 1EE9 at all times, and when DUP.SYS is active it occupies $294A to $4331. And in addition, the space between is used for work space -- disk buffers, etc. Compared to that, the 3.07 memory map is $700 to $1B00 and DUP.SYS at $1B00 to $2E00. In addition, both versions use the floating point work space and makes calls to the FP rom entry points. It also mentions that Atari Dos 2.0 does not use the FP workspace. As for $2080, I have never been able to get TBXL re-initialize with the disk version and MyDos 4.50. The cartridge version will re-initialize at $2080. -Larry Quote Link to comment Share on other sites More sharing options...
russg Posted February 20, 2012 Share Posted February 20, 2012 FWIW- In the MyDos 4.50 Technical Manual (page 9), section VIII shows the MyDos memory map. It occupies $700 to 1EE9 at all times, and when DUP.SYS is active it occupies $294A to $4331. And in addition, the space between is used for work space -- disk buffers, etc. Compared to that, the 3.07 memory map is $700 to $1B00 and DUP.SYS at $1B00 to $2E00. In addition, both versions use the floating point work space and makes calls to the FP rom entry points. It also mentions that Atari Dos 2.0 does not use the FP workspace. As for $2080, I have never been able to get TBXL re-initialize with the disk version and MyDos 4.50. The cartridge version will re-initialize at $2080. -Larry MyDOS 4.53 DUP.SYS loads $2949-$4376, stepping on TB 1.5, so you can't go back to TB after DUP.SYS (TB has a section that loads $233A to $3628, and another section loads $5E00 to $5E87) Quote Link to comment Share on other sites More sharing options...
Marius Posted February 20, 2012 Share Posted February 20, 2012 I have a patched DOS 2.5 somewhere that replaced the RUN CARTRIDGE with TURBOBASIC. Anyone interested in that? It might give you anymore ideas about what is happening .... Let me know! 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.