Jump to content
nanochess

IntyBASIC compiler v1.1: The Director's Cut ;)

Recommended Posts

Hi everyone :)

I've some months working in a new code generator backend for IntyBASIC, and after so much struggling finally it's working with a new optimizer that speeds up your programs without any hassle. As always Windows, Mac and Linux versions are included.

 

Also included some nice features requested by developers, some are performance enhancements (multiplication operation) and others are very powerful, like the new inline functions (macro-style)

 

intvnut helped me to find also some nasty bugs that have been solved and gave me great ideas for optimization. Freewheel provided help testing the multiplication code.

Also tarzilla, catsfolly, DZ-Jay and GroovyBee have made great suggestions and they surprised me contributing to put together an IntyBASIC Development Kit for Windows, it can be downloaded from here http://atariage.com/forums/topic/240526-introducing-the-intybasic-sdk/ with my official seal of approval :grin:

 

Here are the main new features:

  • New RANDOM() function that increases automatically the seed (no more WAIT)
  • New DEF FN statement that allows for macro expressions (like inline functions)
  • Experimental CONT3 and CONT4 support, no keypad decoding (ECS)
  • INCLUDE now allows quotes and searches also in library path.
  • New constants.bas file with useful constants and macros to ease programming.
  • Generates warnings for assigned but non-read variables and also for read but non-assigned variables. (atari2600land needed it to find a bug)
  • Multiplication algorithm speed up (no more successive addition that could take 2 seconds)
  • New #MOBSHADOW array.
  • New fast division/remainder algorithm if you use only variables as arguments.
  • Now optimizes multiplication by constants $0200, $0400 and $0800.
  • More optimization at code generation when the right operand is the most complex.
  • More optimization for FOR..TO
  • Advanced peephole optimizer.
    • Avoids reloading register with constant if still available
    • Avoids reading memory in register if just written
    • Combines pairs of instructions in more optimum ways.
    • Array reading array(const) is more optimum
    • Common subexpression removal for simple index into array.
    • Optimization for multiple substraction.
    • Optimization for comparisons.
    • Optimization for IF expr THEN GOTO.
  • New contributions: keypad (GroovyBee), intro (Tarzilla) and Hello (DZ-Jay)

Bugs solved:

  • Multiplication by zero could take a long time.
  • ECS code was always included.
  • Some divisions were signed.
  • FOR with TO 0 or 255 with 8-bit variable.

IntyColor also got some enhancements:

  • Support for generating PRINT statements instead of SCREEN (useful for fast animation of small images)
  • Processing small images had a bug of an extra comma in output. (reported by atari2600land)
  • Support for 256 color BMP files. (requested by GroovyBee and Tarzilla)
  • Adds command usage, date and version in output file. (suggested by GroovyBee)
  • Solves bug in initial card offset argument. (reported by Tarzilla)

BTW, some people has old versions of Windows XP (no service pack) these require the Visual C++ 2008 runtime, available from here http://www.microsoft.com/es-mx/download/details.aspx?id=29

 

Enjoy it! :grin:

intybasic_compiler_v1.1.zip

  • Like 8

Share this post


Link to post
Share on other sites

So none of those awful voiceovers they forced Harrison to do for the theatrical release?

  • Like 1

Share this post


Link to post
Share on other sites

So none of those awful voiceovers they forced Harrison to do for the theatrical release?

 

None! :lol:

  • Like 1

Share this post


Link to post
Share on other sites

What are the features? DRM? Catches IP infringement? For homebrewers only? Comes with a box? Is this a pre-order only?

 

Anyway, I'm looking forward to it, and thanks for all of your excellent work!

  • Like 4

Share this post


Link to post
Share on other sites

What are the features? DRM? Catches IP infringement? For homebrewers only? Comes with a box? Is this a pre-order only?

 

Anyway, I'm looking forward to it, and thanks for all of your excellent work!

 

I could publish it right away but a team of Fantastic Four has a surprise :) and needs time to build it.

 

And of course the enhancements to IntyBASIC are really worth the v1.1 ;)

  • Like 2

Share this post


Link to post
Share on other sites

It for sure features annoying mascots and product logos, produced via a multinational effort not seen since the formation of the United Nations...

  • Like 3

Share this post


Link to post
Share on other sites

What's everyone's morbid fascination with DRM?

 

In any case... if IntyBASIC isn't for homebrewers, who is it for?

  • Like 1

Share this post


Link to post
Share on other sites

 

I could publish it right away but a team of Fantastic Four has a surprise :) and needs time to build it.

I do NOT want to see that Fantastic Four in costume ;-)

  • Like 3

Share this post


Link to post
Share on other sites

What's everyone's morbid fascination with DRM?

 

In any case... if IntyBASIC isn't for homebrewers, who is it for?

 

I'm just poking fun at some of the Intellivision threads/posts over the last day or so.

Share this post


Link to post
Share on other sites

 

I'm just poking fun at some of the Intellivision threads/posts over the last day or so.

Yep, this thread in particular:

http://atariage.com/forums/topic/239553-boulder-dash-rom-will-not-be-released/page-6

 

Kidding aside, not every game needs a CIB treatment, I'm actually looking forward to trying at least one LTO encrypted ROM release as an experiment...

Share this post


Link to post
Share on other sites

 

I'm just poking fun at some of the Intellivision threads/posts over the last day or so.

 

Ah. I don't really follow all the Dutch Rudder Madness and mutual gratification that arises whenever that acronym pops up in a thread.

 

 

Kidding aside, not every game needs a CIB treatment, I'm actually looking forward to trying at least one LTO encrypted ROM release as an experiment...

 

Meh. It seemed like an interesting idea when we started. But it rolled out like a lead f'ing balloon. It's certainly not a defining feature for LTO Flash! despite folks attempts to make it so.

 

EDIT: Oy. I went into that thread you linked, and all I saw was this: https://www.youtube.com/watch?feature=player_detailpage&v=evA-R9OS-Vo#t=1320

 

(That should start at 22 minutes in...)

 

Anyway... so far as I know, this is all unrelated to the imminent IntyBASIC release. Let's not threadjack, eh?

 

From what few tidbits I know about 1.1, it'll be a solid step forward. icon_smile.gif

Edited by intvnut
  • Like 1

Share this post


Link to post
Share on other sites

Looks like I should pick up an ECS and some more controllers, maybe time for some more 4 player games...

  • Like 3

Share this post


Link to post
Share on other sites

Is there any demand for multilingual manuals, or would just about everyone capable of using IntyBASIC read English well enough to understand the original docs? I saw nanochess includes documentation in Spanish, which I assume is his mother tongue, but perhaps that covers most users.

Share this post


Link to post
Share on other sites

I can't remember if I asked this - can the warnings be turned off via command line parameter? I can see it making sense to have them enabled by default, especially as an aid for beginners, but I'm finding too much in my scroll buffer now.

 

Or mayhap a better question - can I suppress the jzintv output? All those lines of memory addresses that don't often change...

Share this post


Link to post
Share on other sites

Or mayhap a better question - can I suppress the jzintv output? All those lines of memory addresses that don't often change...

 

-q for quiet.

 

Also, jzintv --help lists most of the other generally useful flags.

Share this post


Link to post
Share on other sites

I can't remember if I asked this - can the warnings be turned off via command line parameter? I can see it making sense to have them enabled by default, especially as an aid for beginners, but I'm finding too much in my scroll buffer now.

 

 

Or... just fix the offending lines of code. ;)

 

In my previous life as a software developer, I used to hate when other colleagues would just leave crap all over the code, causing myriad warnings during compilation. I always had to go through it and clean it up. I felt like the maid, "can you guys just wipe your feet and mind the floor? I just mopped it not five minutes ago! sheesh!" :lol:

 

-dZ.

Share this post


Link to post
Share on other sites

By the way, I just wanted to remind everyone that IntyBASIC comes now in two flavours: It's standard distribution, what Oscar calls The Director's Cut (which you can download right at the top of this thread); and the Software Development Kit (SDK).

 

We believe the SDK includes many tools that streamline development for newcomers and power-users alike, and encourage anyone to get it. However, the choice is yours, of course. :)

 

-dZ.

Share this post


Link to post
Share on other sites

I can't remember if I asked this - can the warnings be turned off via command line parameter? I can see it making sense to have them enabled by default, especially as an aid for beginners, but I'm finding too much in my scroll buffer now.

 

Or mayhap a better question - can I suppress the jzintv output? All those lines of memory addresses that don't often change...

I don't want to make IntyBASIC a heavy application of several megabytes, but putting a -Wall and -Wnone switchs would make me feel very GCCappy, err, happy :)

 

I've took note ;)

Share this post


Link to post
Share on other sites

 

Or... just fix the offending lines of code. ;)

 

There is nothing syntactically nor semantically wrong with declaring a variable and not using it. Some of us don't need handholding and are quite capable of keeping track of a few dozen variables in our heads ;)

 

It drives me nuts to comment out a single line while testing, which happens to be the only line that references variable X, and then suddenly get a bunch of "errors" from my compiler. Thanks, Mom.

 

But that's why I said I'd like it as an option, with warnings enabled by default. Newcomers and the average person benefit from these things.

  • Like 1

Share this post


Link to post
Share on other sites

 

There is nothing syntactically nor semantically wrong with declaring a variable and not using it. Some of us don't need handholding and are quite capable of keeping track of a few dozen variables in our heads ;)

 

It drives me nuts to comment out a single line while testing, which happens to be the only line that references variable X, and then suddenly get a bunch of "errors" from my compiler. Thanks, Mom.

 

But that's why I said I'd like it as an option, with warnings enabled by default. Newcomers and the average person benefit from these things.

 

They are not errors but warnings. You can ignore them as easily as you can keep a few dozen unused variables in your head. ;)

 

Personally, I find options to suppress warnings to be bad form since ignoring warnings leads to sloppy code, but to each his own. I guess making it an option would be an acceptable compromise.

 

-dZ.

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