Jump to content
IGNORED

I have a project I want to do, but I need some information first.


Recommended Posts

I have an idea for an E/A 5 program I'd like to make for myself, but not knowing how to write in assembly language, and not having the time or inclination to learn it either, I'm thinking I may be able to cheat by writing it in extended BASIC and then use a BASIC compiler to finish the job.

 

Now I know there are different compilers out there, and I really don't have the time to check the features and capabilities of each and every one just to see which one will do what I need, so I figured I'd ask the experts (you guys here on Atari Age). :) What would be the best package to get and use.

 

My requirements:

 

I'd like it to compile EXTENDED BASIC, not just TI-BASIC, because I'll need to use DISPLAY AT, ACCEPT AT with the VALIDATE and SIZE features if I'm going to be forced to use normal display mode.

 

Now the big question, and probably killer.. I'd really like to do this in at least 40 column mode with white characters on blue background... so is there a package that has extra display routines that can be used and compiled into a finished E/A 5 program?

 

Thanks.

 

<snip>

It's a simple matter to do white-on-blue characters; but, including the XB routines you mentioned into a compiled version may be difficult.

<snip>

 

...lee

Edited by Lee Stewart

If you're going to write it in XB, do you absolutely need to have it in EA5 format? Or is that the format that the loader you are using for it supports?

 

If the XB cart is going to be present (I'm assuming the XB v2.7 Suite cart since you have one) you can have an XB program load from EA5 format (examples Bert&Ernie and Decimal to Hex). Senior Falcon's code for doing so is here in the forum somewhere, he posted it while I was trying to get XB programs to run from ROM.

 

Gazoo

I don't know of any compiler for XB that will support the 40 column mode. There are 40 column extensions that will work with XB; all these require custom assembly routines for both displaying text and inputting, and so validate and size may not be included. As Gazoo says, if XB is fast enough there is a way to make an EA5 program out of it. My XB compiler can save programs in EA5 format; those programs do not require the XB cartridge once compiled. But you only get a 32 column screen.

If you're going to write it in XB, do you absolutely need to have it in EA5 format? Or is that the format that the loader you are using for it supports?

 

If the XB cart is going to be present (I'm assuming the XB v2.7 Suite cart since you have one) you can have an XB program load from EA5 format (examples Bert&Ernie and Decimal to Hex). Senior Falcon's code for doing so is here in the forum somewhere, he posted it while I was trying to get XB programs to run from ROM.

 

Gazoo

XB programs running from ROM, eh? I need to find that thread. :)

Falcon's XB compiler is wicked... Pretty sure it supports all of what you mentioned... Not 100% sure on the EA5... Been a while since I used it. :)

 

What's it called? Do you have a link? The simple program I want to convert would be a nice way to get my feet wet.

 

If you're going to write it in XB, do you absolutely need to have it in EA5 format? Or is that the format that the loader you are using for it supports?

 

If the XB cart is going to be present (I'm assuming the XB v2.7 Suite cart since you have one) you can have an XB program load from EA5 format (examples Bert&Ernie and Decimal to Hex). Senior Falcon's code for doing so is here in the forum somewhere, he posted it while I was trying to get XB programs to run from ROM.

 

Gazoo

 

Need? No. Want? Yes. :)

It would be nice to be able to run it from 4A/DOS. Right now after the program does it's thing, it executes DSK1.LOAD which I have set to bring up BOOT. It works, but it's slow.

 

I'd like to convert the small program in << THIS MESSAGE >>

 

I don't know of any compiler for XB that will support the 40 column mode. There are 40 column extensions that will work with XB; all these require custom assembly routines for both displaying text and inputting, and so validate and size may not be included.

 

I was afraid of that. Thanks. IIRC TML has some 40 col extensions, but I doubted they would compile. I guess if I do locate a program to do the job, I'll have to stick with the 32 column mode. It works, just does not look as nice.

Forgive me... I seemed to have missed your 40 col need. :)

 

I think I did a YouTube video on how to use the old compiler... A more recent, updated version has been created since falcon joined us on here.

 

The steps should be similar, but I cannot remember for sure.

Hi Omega, if it helps, I'm using XB256 with it's 256 compiler at the moment to experiment with, I'm doing lots of small programs and learning how to do this and that, so that my horse racing project can look as good as I can get it.

 

XB256 allows for lots of things previously not possible without assembly, here is a quick and dirty video I just made to show how to save out in EA5 format from the 256 compiler

 

 

https://www.youtube.com/watch?v=nkhT34EGQDo&feature=youtu.be

 

You might want to skip past the waiting period for the Assembler. the point to the vid is near the end :)

Edited by Retrospect
  • Like 1

Hi Omega, if it helps, I'm using XB256 with it's 256 compiler at the moment to experiment with

 

Thanks for posting this. I'll try to find some time next week to play with it. Yesterday was my day to fart around, today it's going to be all kinds of mowing, edging, blowing the endless supply of fir needles off the blacktop, straightening up the tool shed and *IF* I have any time after that, I'll want to play with the new secondary monitor for the PC that is supposed to arrive today. Tomorrow it's back to the grind.

 

You know I really am amazed that NO ONE has written an JAVA script program to compile TI programs yet. All you would have to do is upload the Extended BASIC program and seconds later download the compiled version. I think it would encourage more lower level programmers and introduce them to another lever of programming... and the community might have more goodies as a result.

  • Like 2

Before I head out the door, I have one more question born of ignorance...

Assuming I can get this the attached program compiled, how would I "END" the program? I obviously would no longer need the current last line, so do I just replace that with the END statement and expect the compiler to do the rest?

 

SETCLOCK XB.zip

Hi Omega, if it helps, I'm using XB256 with it's 256 compiler at the moment to experiment with, I'm doing lots of small programs and learning how to do this and that, so that my horse racing project can look as good as I can get it.

 

XB256 allows for lots of things previously not possible without assembly, here is a quick and dirty video I just made to show how to save out in EA5 format from the 256 compiler

 

https://www.youtube.com/watch?v=nkhT34EGQDo&feature=youtu.be

 

You might want to skip past the waiting period for the Assembler. the point to the vid is near the end :)

You have saved the program as an EA5 program called TESTER/O. (You would probably be better off if you saved it as TESTER/A so you don't confuse it with the object code.) However the program you are running is still running in the XB environment. You should put in the EA cartridge and then run TESTER/O (or better yet, TESTER/A)as an EA5 program to show that it actually is running as an EA5 program.

Your demo acts like you have used the option to speed up XB. This might be the reason there is not that much speed difference between the XB and compiled version. Another reason could be that much of the time you are in the scroll routine which is in assembly both in XB256 and when compiled.

  • Like 2

Yeah - that'd be ideal (for me, not that I'm coding anything lately) because it would drastically increase the development cycle in emulation... The entire flow could be scripted (and fast):

 

Write code in TIdBiT, push output to compiler, then run from emulator.

 

But, I suspect that it's just not in the cards.

 

You know I really am amazed that NO ONE has written an JAVA script program to compile TI programs yet. All you would have to do is upload the Extended BASIC program and seconds later download the compiled version. I think it would encourage more lower level programmers and introduce them to another lever of programming... and the community might have more goodies as a result.

Thanks senior-falcon, yep you are right - it should be called something else. did you notice the pause as I was confused about the filename :)

 

Really the only point to the video was to show that it can easily save out to EA5

Omega - I had looked around for a compiler that has file processing, but if I recall correctly, none of them do. I hate to say it, but like me, you're probably just going to have to learn assembly ;-)

Edited by RobertLM78

Omega - I had looked around for a compiler that has file processing, but if I recall correctly, none of them do. I hate to say it, but like me, you're probably just going to have to learn assembly ;-)

 

Or consider Forth. Much easier to learn than assembly and much faster than XB.

  • Like 1

Omega - I had looked around for a compiler that has file processing, but if I recall correctly, none of them do. I hate to say it, but like me, you're probably just going to have to learn assembly ;-)

 

Thanks for looking Robert. You know, it's a bummer too, because I figured there was no program that could be have been more simple to use as a first attempt than that one.

 

Honestly, I'm just not that interested at this stage of my life in learning assembly, or the time investment it would take for that matter. If only I could go back to my teenage years with all the time in the world to spend on idle pursuits it might be different.

 

 

 

Or consider Forth. Much easier to learn than assembly and much faster than XB.

 

Probably true, but I guess I'll just have to live with it in XB.

 

...and you know there is a fair amount of Forth help here! :P

 

 

Very true! Oh well, maybe someday I might change my mind, thanks.

 

Honestly, I'm just not that interested at this stage of my life in learning assembly, or the time investment it would take for that matter. If only I could go back to my teenage years with all the time in the world to spend on idle pursuits it might be different.

 

 

You know what, it might not be that difficult to put together the assembly code to do the things you do in your Extended Basic program.There are example snippets of code all over the place to do the various things you need done. And it might not take that long to do it.

 

For instance, you want to load BOOT after you set the clock. Well, I posted the assembly code to load GROMCFG to get some help with the BASIC loader for it. GROMCFG is a 2 segment program that loads (I think) at the same addresses that BOOT does. It would take minimal changes in that code to load BOOT from whatever device you had it on. So a good start might be to alter that code to load BOOT on your device of choice, assemble it, and convert it to an EA5 program with RAG Linker (as easy as entering the object and EA5 filenames) to see if it works.

 

How about trying that, and if it works, then look for some code to put text on the screen. Add that to what you have, and you'll get a screen with the text you want on it that loads BOOT. Keep going until you have everything working as you want it to. There's probably enough code examples out there to paste together to make your whole program.

 

If you run into trouble, post your code here and we'll help you fix it. That's what I do when I get stuck, and someone generally jumps in to help. I've written some quite ugly code and posted it (and still do!), so there's nothing to be embarrassed about.

 

Gazoo

Here's some info on loading BOOT.

 

The first program segment, BOOT, loads >1782 bytes at address >2006.

The second program segment, BOOU, loads >17F4 bytes at address >C006.

Program execution starts at address >2006, where the first program segment is loaded.

 

This is good news, because any code you create is most likely going to load to a default address of >A000, so you won't have to worry about the loader code being overwritten by BOOT.

 

The chips are falling in your direction already, all you need to do is make a little effort. :)

 

Gazoo

^^Come to think of it, I've posted alot of sh** code on here--- and there have always been guys out there who (without telling me it is sh** code) came to help me imorove it.

 

:)

 

I bet you can have a running program in a few days.

 

What could it hurt?

I've got you a good head start here.

 

Omega source.txt

 

This code sets up the EA environment with your colors, loads a character set, and loads BOOT from DSK1.

It's pretty well commented.

 

To change the device that BOOT loads from, just alter the text 'DSK1' to suit your needs.

 

The place to add the code for the clock routine is indicated in the file.

 

Maybe someone will jump in and add to it, or you could try yourself.

 

 

Gazoo

 

 

Edited by Gazoo
  • Like 2

OMEGA.dsk

 

If this doesn't inspire you to finish the program, nothing will. :)

 

Everything is there except actually setting the clock.

 

Your screen is displayed until you press a key, then BOOT is loaded. The keypress code can be removed once the clock setting code is added, it's just there so you can see your screen before BOOT is loaded.

 

Gazoo

 

 

 

  • Like 1

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