dragonHunter Posted August 23, 2017 Share Posted August 23, 2017 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! 1 Quote Link to comment Share on other sites More sharing options...
+nanochess Posted August 23, 2017 Author Share Posted August 23, 2017 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. Quote Link to comment Share on other sites More sharing options...
Kiwi Posted August 23, 2017 Share Posted August 23, 2017 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. Quote Link to comment Share on other sites More sharing options...
+nanochess Posted November 8, 2017 Author Share Posted November 8, 2017 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) 5 Quote Link to comment Share on other sites More sharing options...
First Spear Posted November 13, 2017 Share Posted November 13, 2017 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) Quote Link to comment Share on other sites More sharing options...
carlsson Posted November 17, 2017 Share Posted November 17, 2017 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. Quote Link to comment Share on other sites More sharing options...
+nanochess Posted November 18, 2017 Author Share Posted November 18, 2017 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! 1 Quote Link to comment Share on other sites More sharing options...
intvnut Posted November 20, 2017 Share Posted November 20, 2017 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.) 1 Quote Link to comment Share on other sites More sharing options...
+nanochess Posted November 23, 2017 Author Share Posted November 23, 2017 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! (^^)! 2 Quote Link to comment Share on other sites More sharing options...
freewheel Posted December 6, 2017 Share Posted December 6, 2017 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. 2 Quote Link to comment Share on other sites More sharing options...
+cmart604 Posted December 6, 2017 Share Posted December 6, 2017 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. ? Quote Link to comment Share on other sites More sharing options...
freewheel Posted December 9, 2017 Share Posted December 9, 2017 PRGE 2018 is in just over ten months. Just sayin. I'm busy checking for the presence of the Intellivoice and ECS. Just sayin. 1 Quote Link to comment Share on other sites More sharing options...
+cmart604 Posted December 9, 2017 Share Posted December 9, 2017 I'm busy checking for the presence of the Intellivoice and ECS. Just sayin. Excellent news. ? Quote Link to comment Share on other sites More sharing options...
+nanochess Posted December 9, 2017 Author Share Posted December 9, 2017 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 But I still have plans for ECS. Quote Link to comment Share on other sites More sharing options...
+DZ-Jay Posted December 9, 2017 Share Posted December 9, 2017 Just noted the bit "over a year ago", sorry but apparently I'm running in extended time and it looks like Yesterday for me 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. 2 Quote Link to comment Share on other sites More sharing options...
+nanochess Posted December 9, 2017 Author Share Posted December 9, 2017 Wow! Thanks Quote Link to comment Share on other sites More sharing options...
intvnut Posted December 28, 2017 Share Posted December 28, 2017 BTW, you can communicate "Want" vs. "Need" for ECS and Intellivoice to jzIntv and other tools now, through CFGVARs in AS1600. I'm adding a section of docs in the AS1600 documentation on how that works. The short, short version: ECS: CFGVAR "ecs_compat" = 0 ; incompatible with ECS CFGVAR "ecs_compat" = 1 ; don't care about ECS CFGVAR "ecs_compat" = 2 ; Enhanced by ECS, but not required CFGVAR "ecs_compat" = 3 ; Requires ECS Intellivoice: CFGVAR "voice_compat" = 0 ; incompatible with Intellivoice CFGVAR "voice_compat" = 1 ; don't care about Intellivoice CFGVAR "voice_compat" = 2 ; Enhanced by Intellivoice CFGVAR "voice_compat" = 3 ; Requires Intellivoice So, if your IntyBASIC game requires Intellivoice and ECS: ASM CFGVAR "ecs_compat" = 3 ASM CFGVAR "voice_compat" = 3 Then jzIntv and friends will automatically enable Intellivoice and ECS based on the variables in the CFG file (assuming BIN+CFG). If you're using AS1600 and jzIntv posted in the last month or so, that'll also work for ROM files. It'd be great if IntyBASIC had a way to say "Wants ECS" or "Requires ECS", and output these CFGVARs automagically. 4 Quote Link to comment Share on other sites More sharing options...
carlsson Posted December 28, 2017 Share Posted December 28, 2017 (edited) If I didn't have more important things to do, I would probably look into making a cover of "Money for Nothing" right now. ... I want my ECS ... ... I want my Intellivoice ... ... maybe get a blister on your little finger ... ... maybe get a blister on your thumb ... ... money for nothing and your carts for free ... Edited December 28, 2017 by carlsson 2 Quote Link to comment Share on other sites More sharing options...
+DZ-Jay Posted December 28, 2017 Share Posted December 28, 2017 It'd be great if IntyBASIC had a way to say "Wants ECS" or "Requires ECS", and output these CFGVARs automagically. I have a similar feature in P-Machinery. There is a "Require ECS" directive and a "Detect ECS" directive. The former detects the ECS and fails if it is not there; while the latter detects it and sets all necessary system flags and data structures to enable its use. I've already adapted it to support CFGVARs. -dZ. 1 Quote Link to comment Share on other sites More sharing options...
First Spear Posted January 3, 2018 Share Posted January 3, 2018 "Enhanced by ECS" I am thinking that the most practical use of this is to use (or not use) the extra AY chip. Otherwise, I can't think of an IF...THEN statement where a program might be able to use the additional 2K. Am I not being creative enough? BTW, you can communicate "Want" vs. "Need" for ECS and Intellivoice to jzIntv and other tools now, through CFGVARs in AS1600. I'm adding a section of docs in the AS1600 documentation on how that works. The short, short version: ECS: CFGVAR "ecs_compat" = 0 ; incompatible with ECS CFGVAR "ecs_compat" = 1 ; don't care about ECS CFGVAR "ecs_compat" = 2 ; Enhanced by ECS, but not required CFGVAR "ecs_compat" = 3 ; Requires ECS Intellivoice: CFGVAR "voice_compat" = 0 ; incompatible with Intellivoice CFGVAR "voice_compat" = 1 ; don't care about Intellivoice CFGVAR "voice_compat" = 2 ; Enhanced by Intellivoice CFGVAR "voice_compat" = 3 ; Requires Intellivoice So, if your IntyBASIC game requires Intellivoice and ECS: ASM CFGVAR "ecs_compat" = 3 ASM CFGVAR "voice_compat" = 3 Then jzIntv and friends will automatically enable Intellivoice and ECS based on the variables in the CFG file (assuming BIN+CFG). If you're using AS1600 and jzIntv posted in the last month or so, that'll also work for ROM files. It'd be great if IntyBASIC had a way to say "Wants ECS" or "Requires ECS", and output these CFGVARs automagically. Quote Link to comment Share on other sites More sharing options...
intvnut Posted January 3, 2018 Share Posted January 3, 2018 "Enhanced by ECS" I am thinking that the most practical use of this is to use (or not use) the extra AY chip. Otherwise, I can't think of an IF...THEN statement where a program might be able to use the additional 2K. Am I not being creative enough? World Cup Soccer offers a 4-player mode if the ECS is attached. Games that ordinarily use keypad input might offer ECS keyboard input as an alternative input method. For example, on LTO Flash's menus, if you press a letter on the keyboard, it will cycle through all titles in the menu that start with that letter. Mostly, though, it's the 6ch music. 1 Quote Link to comment Share on other sites More sharing options...
+Tarzilla Posted January 3, 2018 Share Posted January 3, 2018 World Cup Soccer offers a 4-player mode if the ECS is attached. Games that ordinarily use keypad input might offer ECS keyboard input as an alternative input method. For example, on LTO Flash's menus, if you press a letter on the keyboard, it will cycle through all titles in the menu that start with that letter. Mostly, though, it's the 6ch music. Or Ultimate Pong which has a four player version if the ECS is plugged in. As for 2k, using it optionally would be a challenge since you need to make the game work without the 2k, maybe if you had a random maze rogue-like you could build bigger levels if an ECS was plugged in. 1 Quote Link to comment Share on other sites More sharing options...
intvnut Posted January 3, 2018 Share Posted January 3, 2018 As for 2k, using it optionally would be a challenge since you need to make the game work without the 2k, maybe if you had a random maze rogue-like you could build bigger levels if an ECS was plugged in. Or, perhaps a level editor like Scooby Doo had. That 2K would definitely need to be reserved for a feature that only activated when the ECS was attached. Quote Link to comment Share on other sites More sharing options...
First Spear Posted January 3, 2018 Share Posted January 3, 2018 Yeah, I think there are no good practical options for "optional RAM" in any game that might come out these days... It's not like expanded GRAM to enhance runtime experience, or expanded ROM for larger games. I think the best hardware use is to have an ECS for the second AY and do it on the JLP architecture for expansiveness. Or, perhaps a level editor like Scooby Doo had. That 2K would definitely need to be reserved for a feature that only activated when the ECS was attached. Quote Link to comment Share on other sites More sharing options...
+Tarzilla Posted January 3, 2018 Share Posted January 3, 2018 Yeah, I think there are no good practical options for "optional RAM" in any game that might come out these days... It's not like expanded GRAM to enhance runtime experience, or expanded ROM for larger games. I think the best hardware use is to have an ECS for the second AY and do it on the JLP architecture for expansiveness. If you are using JLP then you get the 2k without the ECS Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.