Jump to content

Photo

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


38 replies to this topic

#1 nanochess ONLINE  

nanochess

    River Patroller

  • 4,971 posts
  • Coding something good
  • Location:Mexico City

Posted Mon Jul 13, 2015 6:55 PM

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/...-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...ails.aspx?id=29

 

Enjoy it! :grin:

Attached Files



#2 intvnut OFFLINE  

intvnut

    River Patroller

  • 2,824 posts
  • Location:@R6 (top of stack)

Posted Mon Jul 13, 2015 7:14 PM

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



#3 nanochess ONLINE  

nanochess

    River Patroller

  • Topic Starter
  • 4,971 posts
  • Coding something good
  • Location:Mexico City

Posted Mon Jul 13, 2015 7:15 PM

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

 

None! :lol:



#4 5-11under ONLINE  

5-11under

    River Patroller

  • 3,262 posts
  • Location:Ontario, Canada

Posted Mon Jul 13, 2015 7:43 PM

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!



#5 nanochess ONLINE  

nanochess

    River Patroller

  • Topic Starter
  • 4,971 posts
  • Coding something good
  • Location:Mexico City

Posted Mon Jul 13, 2015 7:46 PM

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



#6 Tarzilla OFFLINE  

Tarzilla

    Stargunner

  • 1,916 posts
  • Huh?
  • Location:Alberta, Canada

Posted Mon Jul 13, 2015 7:46 PM

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



#7 intvnut OFFLINE  

intvnut

    River Patroller

  • 2,824 posts
  • Location:@R6 (top of stack)

Posted Mon Jul 13, 2015 7:46 PM

What's everyone's morbid fascination with DRM?

 

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



#8 Tarzilla OFFLINE  

Tarzilla

    Stargunner

  • 1,916 posts
  • Huh?
  • Location:Alberta, Canada

Posted Mon Jul 13, 2015 7:48 PM

 

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



#9 5-11under ONLINE  

5-11under

    River Patroller

  • 3,262 posts
  • Location:Ontario, Canada

Posted Mon Jul 13, 2015 7:52 PM

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.



#10 Tarzilla OFFLINE  

Tarzilla

    Stargunner

  • 1,916 posts
  • Huh?
  • Location:Alberta, Canada

Posted Mon Jul 13, 2015 7:56 PM

 

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



#11 intvnut OFFLINE  

intvnut

    River Patroller

  • 2,824 posts
  • Location:@R6 (top of stack)

Posted Mon Jul 13, 2015 8:20 PM

 

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....-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, Mon Jul 13, 2015 8:44 PM.


#12 Tarzilla OFFLINE  

Tarzilla

    Stargunner

  • 1,916 posts
  • Huh?
  • Location:Alberta, Canada

Posted Mon Jul 13, 2015 9:12 PM

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



#13 Kiwi OFFLINE  

Kiwi

    Stargunner

  • 1,410 posts

Posted Mon Jul 13, 2015 9:19 PM

Can't wait to compile my Generic Shoot'em Up Game with IntyBASIC 1.1 :D



#14 carlsson ONLINE  

carlsson

    Metagalactic Mule

  • 5,238 posts
  • Location:Västerås, Sweden

Posted Tue Jul 14, 2015 12:46 AM

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.



#15 DZ-Jay OFFLINE  

DZ-Jay

    Quadrunner

  • 9,969 posts
  • Triple-Stripe Mo' Bro
  • Location:NC, USA

Posted Tue Jul 14, 2015 4:14 AM

I'm ready when you are, Mr. nanochess! :)

 

       -dZ.



#16 nanochess ONLINE  

nanochess

    River Patroller

  • Topic Starter
  • 4,971 posts
  • Coding something good
  • Location:Mexico City

Posted Tue Jul 14, 2015 7:15 AM

I'm ready when you are, Mr. nanochess! :)

 

       -dZ.

 

I'm ready Mr. dZ! ;)



#17 nanochess ONLINE  

nanochess

    River Patroller

  • Topic Starter
  • 4,971 posts
  • Coding something good
  • Location:Mexico City

Posted Tue Jul 14, 2015 4:22 PM

By the way, the new features make IntyBASIC even less dependent from assembly language and that's a good thing because you have more power for the IntyBASIC programming contest ;)

 

http://atariage.com/...g-contest-2015/



#18 freewheel OFFLINE  

freewheel

    River Patroller

  • 2,947 posts

Posted Tue Jul 14, 2015 10:45 PM

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



#19 intvnut OFFLINE  

intvnut

    River Patroller

  • 2,824 posts
  • Location:@R6 (top of stack)

Posted Tue Jul 14, 2015 10:49 PM

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.



#20 freewheel OFFLINE  

freewheel

    River Patroller

  • 2,947 posts

Posted Tue Jul 14, 2015 11:02 PM

 

-q for quiet.

 

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

 

:blushing emoticon:

Thanks!



#21 DZ-Jay OFFLINE  

DZ-Jay

    Quadrunner

  • 9,969 posts
  • Triple-Stripe Mo' Bro
  • Location:NC, USA

Posted Wed Jul 15, 2015 3:15 AM

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.



#22 DZ-Jay OFFLINE  

DZ-Jay

    Quadrunner

  • 9,969 posts
  • Triple-Stripe Mo' Bro
  • Location:NC, USA

Posted Wed Jul 15, 2015 3:20 AM

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.



#23 nanochess ONLINE  

nanochess

    River Patroller

  • Topic Starter
  • 4,971 posts
  • Coding something good
  • Location:Mexico City

Posted Wed Jul 15, 2015 5:46 PM

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

#24 freewheel OFFLINE  

freewheel

    River Patroller

  • 2,947 posts

Posted Wed Jul 15, 2015 6:19 PM

 

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.



#25 DZ-Jay OFFLINE  

DZ-Jay

    Quadrunner

  • 9,969 posts
  • Triple-Stripe Mo' Bro
  • Location:NC, USA

Posted Wed Jul 15, 2015 7:38 PM

 

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.






0 user(s) are browsing this forum

0 members, 0 guests, 0 anonymous users