Jump to content

Photo

IntyBASIC compiler v1.2.9: The good things are now better!

Intellivision IntyBASIC

265 replies to this topic

#251 dragonHunter OFFLINE  

dragonHunter

    Combat Commando

  • 2 posts

Posted Wed Aug 23, 2017 7:57 AM

 

Check your generated .cfg file, and check it doesn't exceed the areas indicated in the 42k example.

 

Most crashes are related to it.

 

Well, I hate to admit it, but the crashes were cause by me forgetting to put "PROCEDURE" after the label of a subroutine. INTYBasic didn't complain ... not sure if I should or not.... :) jk
 
Anyway, thanks for the reply. Good to know about the .cfg file. And thanks for an easy way to get assembler quality stuff onto a classic system!


#252 nanochess ONLINE  

nanochess

    River Patroller

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

Posted Wed Aug 23, 2017 12:08 PM

 

 

Well, I hate to admit it, but the crashes were cause by me forgetting to put "PROCEDURE" after the label of a subroutine. INTYBasic didn't complain ... not sure if I should or not.... :) jk
 
Anyway, thanks for the reply. Good to know about the .cfg file. And thanks for an easy way to get assembler quality stuff onto a classic system!

 

 

I'm glad you could solve your problem. :) And yes, IntyBASIC generates code reasonably good :) still not satisfied with arrays, but for other operations is almost as efficient as assembler.



#253 Kiwi OFFLINE  

Kiwi

    Stargunner

  • 1,410 posts

Posted Wed Aug 23, 2017 5:48 PM

 

 

Well, I hate to admit it, but the crashes were cause by me forgetting to put "PROCEDURE" after the label of a subroutine. INTYBasic didn't complain ... not sure if I should or not.... :) jk
 
Anyway, thanks for the reply. Good to know about the .cfg file. And thanks for an easy way to get assembler quality stuff onto a classic system!

 

Don't feel bad.  I misspelled procedure, and spent 10 minutes figuring out why my game not compiling correctly.  You can open up .lst.  Go directly to the bottom of the list and see if errors are found.  And you can jump to the error by using the find feature of the notepad and it'll take you to the line of your code that error were found.



#254 nanochess ONLINE  

nanochess

    River Patroller

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

Posted Tue Nov 7, 2017 6:35 PM

Just released version 1.2.9, download at first post.
 

New in version 1.2.9:

  • Moved screen clearing at the very start of program to avoid brief title screen in Sears Intellivision.
  • Added missing C7 note in internal tables.
  • Solved MUSIC.PLAYING failing with MUSIC JUMP.
  • More optimization saving flags state across instructions.
  • Solved bug in PEEK optimization when source address was incremented between two PEEKs.
  • More indications in manual, including documenting CONT3 and CONT4.
  • VOICE.AVAILABLE for checking Intellivoice available.
  • VOICE.PLAYING for checking Intellivoice playing.
  • Solved several bugs in IntyColor and added some new features (replacement of color, generation of cards without checking duplicates, and process of images in chunks of 16 pixel high for MOB generation)


#255 First Spear OFFLINE  

First Spear

    Stargunner

  • 1,125 posts
  • Location:Somewhere in Uptown

Posted Sun Nov 12, 2017 9:04 PM

The best keeps getting better! Thank you!

 

 

 

Just released version 1.2.9, download at first post.
 

New in version 1.2.9:

  • Moved screen clearing at the very start of program to avoid brief title screen in Sears Intellivision.
  • Added missing C7 note in internal tables.
  • Solved MUSIC.PLAYING failing with MUSIC JUMP.
  • More optimization saving flags state across instructions.
  • Solved bug in PEEK optimization when source address was incremented between two PEEKs.
  • More indications in manual, including documenting CONT3 and CONT4.
  • VOICE.AVAILABLE for checking Intellivoice available.
  • VOICE.PLAYING for checking Intellivoice playing.
  • Solved several bugs in IntyColor and added some new features (replacement of color, generation of cards without checking duplicates, and process of images in chunks of 16 pixel high for MOB generation)

 



#256 carlsson OFFLINE  

carlsson

    Metagalactic Mule

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

Posted Fri Nov 17, 2017 7:52 AM

It seems to me that you forgot to update the version number in the verbose output, so it is a little hard to determine if you're really running 1.2.9 or somehow have an older 1.2.8 in your path that takes precedence. I renamed the new binary to make sure it is the latest version. You might want to re-release it with new version number.



#257 nanochess ONLINE  

nanochess

    River Patroller

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

Posted Sat Nov 18, 2017 11:19 AM

It seems to me that you forgot to update the version number in the verbose output, so it is a little hard to determine if you're really running 1.2.9 or somehow have an older 1.2.8 in your path that takes precedence. I renamed the new binary to make sure it is the latest version. You might want to re-release it with new version number.

 

I'll check it. Thanks!



#258 intvnut OFFLINE  

intvnut

    River Patroller

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

Posted Mon Nov 20, 2017 2:19 AM

BTW, one other thing to check:  Make sure any variables you allocate in JLP RAM space ($8040 - $9F7F) are marked "-RWBN", just like the variables in Scratch RAM and System RAM.  If someone assembles their game in Intellicart .ROM format, it could cause trouble if that address range isn't marked "-RWBN", as the emulated Intellicart/CC3 will interfere with JLP.

 

Why?  Because jzIntv actually emulates the Intellicart/CC3 when it sees a .ROM file.  So, if that .ROM asks for RAM at $8040 and asks for JLP support, both will conflict with each other.

 

I've updated jzIntv and AS1600 to correctly carry through the "jlp = whatever" setting for both BIN and ROM file formats.  I've also added warnings to the assembler and jzIntv when you ask for readable memory in the range $8000 - $9FFF and ask for JLP support, if you're using ROM format.  (For BIN format, I have a bit more subtle check, as it's not tied to a specific peripheral like the Intellicart.)



#259 nanochess ONLINE  

nanochess

    River Patroller

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

Posted Wed Nov 22, 2017 10:29 PM

It seems to me that you forgot to update the version number in the verbose output, so it is a little hard to determine if you're really running 1.2.9 or somehow have an older 1.2.8 in your path that takes precedence. I renamed the new binary to make sure it is the latest version. You might want to re-release it with new version number.

 
Updated in first post! so the PC version didn't had the extra syntax because I missed updating main source file (^^)!
 

BTW, one other thing to check:  Make sure any variables you allocate in JLP RAM space ($8040 - $9F7F) are marked "-RWBN", just like the variables in Scratch RAM and System RAM.  If someone assembles their game in Intellicart .ROM format, it could cause trouble if that address range isn't marked "-RWBN", as the emulated Intellicart/CC3 will interfere with JLP.
 
Why?  Because jzIntv actually emulates the Intellicart/CC3 when it sees a .ROM file.  So, if that .ROM asks for RAM at $8040 and asks for JLP support, both will conflict with each other.
 
I've updated jzIntv and AS1600 to correctly carry through the "jlp = whatever" setting for both BIN and ROM file formats.  I've also added warnings to the assembler and jzIntv when you ask for readable memory in the range $8000 - $9FFF and ask for JLP support, if you're using ROM format.  (For BIN format, I have a bit more subtle check, as it's not tied to a specific peripheral like the Intellicart.)


Updated! I hope I didn't broke something! (^^)!

#260 freewheel OFFLINE  

freewheel

    River Patroller

  • 2,946 posts

Posted Tue Dec 5, 2017 9:52 PM

Oscar,

 

If you're going to add Intellivoice checking, maybe add ECS checking as well? This is the code I've been using:

 

check_ecs:    PROCEDURE
    ecs_on = 0 'default off, to be safe
    i = PEEK($F0)
    POKE $F0, i+1
    IF PEEK($F0) = i+1 THEN ecs_on = 1
    END

 

We talked about this over a year ago, so I don't know if there's a better method. This has been working just fine for me so far.



#261 cmart604 OFFLINE  

cmart604

    Intellivision Hoarder

  • 11,449 posts
  • But Atari Rules!
  • Location:Vancouver

Posted Tue Dec 5, 2017 10:39 PM

Oscar,
 
If you're going to add Intellivoice checking, maybe add ECS checking as well? This is the code I've been using:
 
check_ecs:    PROCEDURE
    ecs_on = 0 'default off, to be safe
    i = PEEK($F0)
    POKE $F0, i+1
    IF PEEK($F0) = i+1 THEN ecs_on = 1
    END
 
We talked about this over a year ago, so I don't know if there's a better method. This has been working just fine for me so far.


PRGE 2018 is in just over ten months. Just sayin. 😎

#262 freewheel OFFLINE  

freewheel

    River Patroller

  • 2,946 posts

Posted Fri Dec 8, 2017 8:47 PM

PRGE 2018 is in just over ten months. Just sayin.

 

I'm busy checking for the presence of the Intellivoice and ECS. Just sayin. ;)



#263 cmart604 OFFLINE  

cmart604

    Intellivision Hoarder

  • 11,449 posts
  • But Atari Rules!
  • Location:Vancouver

Posted Fri Dec 8, 2017 9:18 PM

 
I'm busy checking for the presence of the Intellivoice and ECS. Just sayin. ;)


Excellent news. 😎

#264 nanochess ONLINE  

nanochess

    River Patroller

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

Posted Fri Dec 8, 2017 9:49 PM

Oscar,

 

If you're going to add Intellivoice checking, maybe add ECS checking as well? This is the code I've been using:

 

check_ecs:    PROCEDURE
    ecs_on = 0 'default off, to be safe
    i = PEEK($F0)
    POKE $F0, i+1
    IF PEEK($F0) = i+1 THEN ecs_on = 1
    END

 

We talked about this over a year ago, so I don't know if there's a better method. This has been working just fine for me so far.

 

Just noted the bit "over a year ago", sorry but apparently I'm running in extended time and it looks like Yesterday for me :dunce:

But I still have plans for ECS. ;)



#265 DZ-Jay ONLINE  

DZ-Jay

    Quadrunner

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

Posted Sat Dec 9, 2017 5:40 AM

Just noted the bit "over a year ago", sorry but apparently I'm running in extended time and it looks like Yesterday for me :dunce:
But I still have plans for ECS. ;)

 
For what it's worth, here's the code I use in P-Machinery.  It is based on old discussions on this topic.  Perhaps it can be implemented during initialization of IntyBASIC to set an internal flag (that's what P-Machinery does):
;; ======================================================================== ;;
.BOOT.ECS_CHECK PROC
_b.ecs_byte     QEQU    MEMMAP.EcsRam8bit               ; Chosen arbitrarily (any address in ECS RAM will do)

                ; --------------------------------------
                ; Attempt to detect ECS
                ; --------------------------------------
                MVII    #_b.ecs_byte,           R1      ; \_ Pick an ECS RAM address and read what's there
                MVI@    R1,     R0                      ; /
                COMR    R0                              ; \_ Complement it, including upper byte,
                MVO@    R0,     R1                      ; /     and store it back.
                XOR@    R1,     R0                      ; XOR the stored value with original inverted one
                CMPI    #PM.MSB_MASK,           R0      ; Make sure only the lower-byte is cancelled

            IF (.DEV.ReqEcs = PM.TRUE)
                BNEQ    .BOOT.ECS_FAIL                  ;   No?  halt boot sequence with an error message
            ELSE
                BNEQ    @@__done
                FLAG.Set(.PM.SYSINFO.Status, SYSINFO.HasEcs)
            ENDI
 
@@__done:       JR      R5                              ;   Yes? continue with main program
                ENDP
Legend:
  • MEMMAP.EcsRam8bit is the start of ECS extended Scratch RAM
  • PM.MSB_MASK is a mask on the Most Significant Byte of a word ($FF00)
  • .DEV.ReqEcs is an assembler directive stating whether the program requires the ECS (fail if it is not available), or merely wants it (just set a flag of availability).
  • .BOOT.ECS_FAIL is a routine that prints an error message on the screen and halts the program with an infinite loop.
  • FLAG.Set() is a macro that sets a flag bit in the P-Machinery System Information (SYSINFO) status word.


#266 nanochess ONLINE  

nanochess

    River Patroller

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

Posted Sat Dec 9, 2017 8:24 AM

Wow! Thanks :)





Also tagged with one or more of these keywords: Intellivision, IntyBASIC

0 user(s) are browsing this forum

0 members, 0 guests, 0 anonymous users