Jump to content
luckybuck

TURBO-BASIC XL-Source Code now in PD and online! :-)))

Recommended Posts

@vitoco:

You are right, got it from here:

http://atariage.com/forums/topic/265490-turbo-basic-xl-source-code-the-chase-is-over-i-failed/?do=findComment&comment=3762560

Same result here, the exe is empty, but the text files are fine.

Thank you! :-)

 

Hmm,

 

my "AtariAmpelDecoder.EXE" file is not completely empty, but it does not start under WIN XP, it gives a german error message instead: "Die Komponente COMDLG32.OCX oder eine ihrer Abhängigkeiten ist nicht richtig registriert: Eine Datei fehlt oder ist ungültig." If you think Google translate is bad, my translation of this german text is even worse: "The component COMDLG32.OCX or one of its dependencies is not registered correctly: A file is missing or invalid."

 

Do you get the same (or a similar) Error message when you try to start the EXE file ? I also tried it under the WIN XP command prompt, but I got the same Error message... this is an *.EXE file, strip/remove the ZIP extender from the filename (upload of EXE did not work, so I added .ZIP, but the file is NOT zipped). On the other hand, you rarely find PC *.EXE files with a length of just 18Kbytes nowadays, so I would not be surprised if something is missing here...

AtariAmpelDecoder.exe.zip

Edited by CharlieChaplin

Share this post


Link to post
Share on other sites

Didn't try so far, but what excatly does that program? Reverse engineering of the object code?

Too many things to do, especially the coming HATZ...

Share this post


Link to post
Share on other sites

 

my "AtariAmpelDecoder.EXE" file is not completely empty, but it does not start under WIN XP, it gives a german error message instead: "Die Komponente COMDLG32.OCX oder eine ihrer Abhängigkeiten ist nicht richtig registriert: Eine Datei fehlt oder ist ungültig." If you think Google translate is bad, my translation of this german text is even worse: "The component COMDLG32.OCX or one of its dependencies is not registered correctly: A file is missing or invalid."

 

Do you get the same (or a similar) Error message when you try to start the EXE file ? I also tried it under the WIN XP command prompt, but I got the same Error message... this is an *.EXE file, strip/remove the ZIP extender from the filename (upload of EXE did not work, so I added .ZIP, but the file is NOT zipped). On the other hand, you rarely find PC *.EXE files with a length of just 18Kbytes nowadays, so I would not be surprised if something is missing here...

 

I called both from CMD prompt in Win7. Mine says "Error in EXE file", but your runs OK. I could extract the binary file from TurboBasicXL.txt.

 

BTW, I'm comparing all TurboBASIC XL 1.5 versions I got from anywhere against this extracted one, since I noticed diferences in some cases. I'll post the results.

Share this post


Link to post
Share on other sites

Well,

 

here are the TB XL versions I have (versions 1.4, 1.5, 1.6, 2.0, 2.1, 3.2q)

 

There were several patcher / modifier programs for TB XL 1.5, that changed small parts (a few bytes) of it, e.g.:

 

- a patcher/modifier program included with Turbo-DOS, that will patch TB XL so that it works with the Turbo 1050 enhancement and makes the turbo-driver reset-proof under TB XL

 

- a patcher/modifier program to change the (loading) colour of TB XL, changed my version to a blue loading colour ($70)

 

- a patcher/modifier program to make it work with an ST-mouse (from the Multi-Mouse diskette)

 

- a patcher/modifier program to make it work with 80 columns

 

- a patcher/modifier program for NTSC/60hz timing

 

- a patcher/modifier program to change the title (e.g. instead of the Happy-Computer logo and Turbo-Basic XL 1.5 it displayed Warp-Speed Basic or something else to make naive users think this is not TB XL - since TB XL was copyrighted by Happy Computer / Markt & Technik in the 80s)

 

and many others. I did not keep all of these patcher programs (think I still have the patcher programs from Turbo-DOs and the Multi-Mouse diskette, the patcher program for 80 columns is somewhere in the Abbuc PD library, the patcher programs to change the title/logo and/or the loading colour are not so important I think, the patched 60hz version of TB XL is quite common, etc.).

 

See also here: http://atariage.com/forums/topic/114168-turbo-basic-xl-versions/

and here: http://atariage.com/forums/topic/237969-turbo-basic-xl-hacks-or-improvements/page-3?do=findComment&comment=3233750

TBXL_Versions.zip

Edited by CharlieChaplin
  • Like 2

Share this post


Link to post
Share on other sites

 

Hmm,

 

my "AtariAmpelDecoder.EXE" file is not completely empty, but it does not start under WIN XP, it gives a german error message instead: "Die Komponente COMDLG32.OCX oder eine ihrer Abhängigkeiten ist nicht richtig registriert: Eine Datei fehlt oder ist ungültig." If you think Google translate is bad, my translation of this german text is even worse: "The component COMDLG32.OCX or one of its dependencies is not registered correctly: A file is missing or invalid."

 

Do you get the same (or a similar) Error message when you try to start the EXE file ? I also tried it under the WIN XP command prompt, but I got the same Error message... this is an *.EXE file, strip/remove the ZIP extender from the filename (upload of EXE did not work, so I added .ZIP, but the file is NOT zipped). On the other hand, you rarely find PC *.EXE files with a length of just 18Kbytes nowadays, so I would not be surprised if something is missing here...

You need the Visual Basic 6 Runtime Files for this to run.

http://download.cnet.com/Visual-Basic-6-0-Run-time-Files/3000-2070_4-10730950.html

Share this post


Link to post
Share on other sites

 

here are the TB XL versions I have (versions 1.4, 1.5, 1.6, 2.0, 2.1, 3.2q)

 

- a patcher/modifier program for NTSC/60hz timing

 

I wonder if this VON 2.0 version is the one with the NTSC fix. Honestly I do not use Time$ that often, but all one need to do is check where Time$ routine is and modify it. I might even go a step further and add in a check the PAL register and divide whatever by 50 or 60.

Share this post


Link to post
Share on other sites

I just found the cause of this FOR-NEXT issue. There is a BCC that is suppose to go to a RTS instruction. I first narrowed it down to an issue when the final call to POP_1 occurs inside the final call to NEXT_CMD routine. It is attempting to do an extra POP from the Basic stack after the for-next has been completed invoking the error.

         JSR L0265
         BCS ?L3
         JSR L0625
         PLA
         JSR Y1098
         BCC ?L2  ;< ---- In TB 1.5 this branches to a RTS instruction 
         LDA #$11
         JSR Y1112
         LDA #$08
         JMP Y1043
?L3      JMP ERROR_11

What I did in the following Y1098 module, right before the final RTS was to add a label "Y1098_RET" and change that BCC ?L2 to BCC Y1098_RET.

Edited by peteym5
  • Like 2

Share this post


Link to post
Share on other sites

Here is what I had done with TurboBasic XL so far. It is almost the same. It has the FOR-NEXT fix, and my slight optimization to the indent listing sections. I also noticed that 2.0 does not go back into DOS. Maybe next thing we need to fix.

 

tb20-mads_pm.zip

  • Like 1

Share this post


Link to post
Share on other sites

We are not sure if that 2.0 is the same as "VON 2.0" as I am attempting to put the GO TO AtariDOS/MYDOS back into it. I guarantee my version is different now.

 

I noticed this basic is starting at $2080, but there is a lot of empty space before that. Maybe have room for the DUP.SYS. or different versions of DOS.

Share this post


Link to post
Share on other sites

Could you compare your binary with post #55 binary regarding 2.0?

 

2.0 from this source is completely different to the one from post #55. The one that CharlieChaplin posted is a modified version of 1.5, but I haven't disassembled it yet to know what are the changes for, but they are different from other changes I saw. Also, the file structure changes a bit and it has extra code inside.

Share this post


Link to post
Share on other sites

Thanks, in 1985 Frank has used the DOS 2.0 with TB. That is why the DIR command is included in TB. So, extracting it, would result in the use of other DOSs, but maybe difficult in the use of TB itself.

Share this post


Link to post
Share on other sites

I already started translating and renaming stuff as I discover what stuff does. I am trying to determine what that extra byte does inside the token table. It must be necessary, something not present in other Atari Basics token tables. I am wondering if 2.0 is the fixed version that allows the timer to work properly on NTSC machines. Not sure if it checks the PAL register ($D014) to check the frame rate.

The "extra byte" is the starting state of the parsing state-machine, this gives the instructions to parse the given statement.

 

For example, you have, for "COLOR" statement, the byte $91. This is the index 17 in the parsing table, pointing to address $EF04 (note that the disassembly in this thread is not correctly done, so the pointer is labeled to $EF03 instead).

The code at $EF04 is "8C 90 03", this means:

- $8C = parse using table 12 (like a subroutine call), this is "parse EXPR", then

- $90 = parse using table 16 (this is "parse EOS"), then

- $03 = return (parsed ok).

 

If you go to table 16, at address $EF3D, the code is "14 02 16 03", that means:

- $14 = accept token ":" (from OPTABLE)

- $02 = or...

- $16 = accept token EOL

- $03 = return.

 

And so on.

 

Possibly it would be better to decompile original 1.5 and use labels and comments from 2.0? Anyway, looks like a solid piece of rewarding work!

I have a disassembly of the original TBXL15, with english labels and correctly decoded parsing tables, I started this disassembly years ago to understand the workings and find the bugs. I now have translated the sources to MADS, and assembly produced a bit-exact copy of the original (posted here) binary.

 

I was reluctant to post the code, as I'm not sure of the copyright, but I will try to cleanup a little and post over the weekend.

  • Like 10

Share this post


Link to post
Share on other sites

Here is what I had done with TurboBasic XL so far. It is almost the same. It has the FOR-NEXT fix, and my slight optimization to the indent listing sections. I also noticed that 2.0 does not go back into DOS. Maybe next thing we need to fix.

 

 

Instead of fixing this 2.0 source files, I'd prefer to know what was the original idea in this version/branch of the code. The DOS statement was disabled replacing few instructions (that could be recovered from 1.5), but the question is "why?". I've seen other variations of Turbo BASIC in the form of DOS.SYS, i.e. integrated with some DOS. Is there where this source was going to?

Share this post


Link to post
Share on other sites

I was reluctant to post the code, as I'm not sure of the copyright, but I will try to cleanup a little and post over the weekend.

 

If the family is already posting 2.0 in PD, and the original was freeware they may not pursue anyone legally.

 

It is Basic XE, Basic XL, that may be concerned. I am not sure what became of ICD and OSS.

Share this post


Link to post
Share on other sites

Thank you very much peteym5! Regarding your post #67: AtrariWiki has a go from OSS and ICD. Further, we have contacted Mike H. directly, whether we can or can not publish the FTe stuff. At least he didn't say no. Frank has left us in 2011, but his brother gave us a go for publishing. The family didn't have the source code anymore, but the rights on TB. All are very glad, that the spirit of these bright people can go on forever, live through us further and will be further develeoped. I really would like to focus on creating Ultimate Basic for Atari on a 64KB cartridge with compiler and runtime, including all the good sources we already have.

Edited by luckybuck
  • Like 3

Share this post


Link to post
Share on other sites

Just by looking at the source code and attempting to debug it, and figure out what does what, I spotted one optimization already. I am trying to do it in areas that will not sacrifice any speed. I posted somewhere else that MYDOS leaves some room before $2080. I thought about backing up the start address a few pages and see if we can have a special MYDOS version with extra RAM.

 

64K cartridge Ultimate basic is possible. I know where I can have 64K Williams Cartridges burned and sold. Use the ability to turn the ROM area off and use the RAM underneath also. Williams uses close to the same Bank Switching scheme as AtariMax, except a different byte is written to turn off the ROM area. Would have to figure out how to make it backward compatible with both Basic XE and Turbo Basic XL. Would have to be token compatible with one. Would need to list your program to disk with one basic and use "enter" to load it into this new Ultimate Basic.

Share this post


Link to post
Share on other sites

Hi peteym5,

 

please don't misunderstand me, the Ultimate Basic is just an crazy idea I have. But many of them came true... ;-)

 

First, I want to save all programs with magnetic layers, put them in the Wiki, then the 2nd edition of my PhD thesis and so on. So, that would be a long, long way to go still. I deeply concerned about box CX401, because I know of just 2 users who have the box and it is really time to make a backup after > 35 years...

 

Further, I prefer MADS for development...

Share this post


Link to post
Share on other sites

Don't drop the start address below $2000. This is the lowest safe load address guaranteed to work on most systems. TBXL likely raised this by 128 bytes to accommodate extra DOS buffers.

  • Like 1

Share this post


Link to post
Share on other sites

I moved the Turbo Basic 2.0 to $2080, the same as 1.5. Leaves about 34,000 bytes available for programming. I got a little tied up with other projects and may get back to this Turbo Basic optimization sometime in the near future. I could not find a whole lot of of things I can optimize without sacrificing speed or function so far.

Share this post


Link to post
Share on other sites

Thanks peteym5,

 

Yes, same here. ;-)

 

But it is good to know, that the TB source code is now in the best hands. :-)))

Share this post


Link to post
Share on other sites

 

Hmm,

 

my "AtariAmpelDecoder.EXE" file is not completely empty, but it does not start under WIN XP, it gives a german error message instead: "Die Komponente COMDLG32.OCX oder eine ihrer Abhängigkeiten ist nicht richtig registriert: Eine Datei fehlt oder ist ungültig." If you think Google translate is bad, my translation of this german text is even worse: "The component COMDLG32.OCX or one of its dependencies is not registered correctly: A file is missing or invalid."

 

Do you get the same (or a similar) Error message when you try to start the EXE file ? I also tried it under the WIN XP command prompt, but I got the same Error message... this is an *.EXE file, strip/remove the ZIP extender from the filename (upload of EXE did not work, so I added .ZIP, but the file is NOT zipped). On the other hand, you rarely find PC *.EXE files with a length of just 18Kbytes nowadays, so I would not be surprised if something is missing here...

 

it works fine in my pc, I can see it translates some kind of file... thus, what is ampel ?

Share this post


Link to post
Share on other sites

Ampel was/is a program to type in hex code from program listings published in magazines in the golden age. It makes checksums, whether the type in was right or wrong, so the program can be executed the right way.

  • Like 1

Share this post


Link to post
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.

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