Jump to content
IGNORED

TurboBasicXL problem


bob1200xl

Recommended Posts

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 by russg
Link to comment
Share on other sites

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!

Link to comment
Share on other sites

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 by Rybags
Link to comment
Share on other sites

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 by rdea6
Link to comment
Share on other sites

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 by russg
Link to comment
Share on other sites

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 by Rybags
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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 ;-)

 

post-17404-0-44263900-1329583770_thumb.png

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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 by flashjazzcat
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

>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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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???

Link to comment
Share on other sites

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. ;)

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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)

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...