Jump to content
IGNORED

7800basic beta, the release thread


RevEng

Recommended Posts

12 hours ago, RevEng said:

Have a look to see if your AV has quarantined it. 7800basic is made from open source tools that AV vendors routinely false positive on.

Thanks. I only run Malwarebytes and Windows Defender. Neither have anything int quarantine.

 

I executed "7800preprocessWindows.exe" by itself, just to check. It gave the regular windows warning, and  I chose 'Run Anyway'. It appears to be fine.

 

So, everything is fine, except for "7800Preprocess" is not an internal or external command.

Link to comment
Share on other sites

I figured out the issue. The batch file referenced 7800basicpreprocess, 7800basic, etc.

 

The programs I downloaded have "Windows" appended to the end of the file names. I altered the batch file to match the naming. It compiled. I haven't tested the a78 yet, because I need to start work. It seems hopeful though.

 

Thanks for all of the suggestions. I hope this helps somebody else.

 

image.png.cd37fa3c815b9fea77a70e7e789a5df7.png image.thumb.png.c116411dc0250a8575c6b5eb5eb53b90.png

  • Like 2
Link to comment
Share on other sites

  • 3 weeks later...

I was pleased to discover that 7800basic has pointer support. The example in the manual doesn't show how to set the constant for the high byte, however:

 

   dim mempointer=a
   dim mempointerhi=b
   dim memindex=c
   rem ** each data statement you wish to point at should have a similar
   rem ** const statement.
   const mydataplo=#mydata
   rem ** set the memory pointer to point to "mydata"
   mempointer=mydataplo
   mempointerhi=mydataphi
   rem ** an example of indirect variable array access
   if mempointer[[memindex]]=0 then goto drawelephant
   data mydata
   0,3,5,8
end

If you use #mydata to set the constant for the low byte, how do you set it for the high byte?

 

Edit, based on bB syntax, I would expect this to work for setting the constants, but in a test program it did not:

 

   const mydataplo=<mydata
   const mydataphi=>mydata

 

  • Like 1
Link to comment
Share on other sites

9 minutes ago, Karl G said:

If you use #mydata to set the constant for the low byte, how do you set it for the high byte?

Oops. Looks like a documentation bug I'll need to fix. The setting of the two constants should look like this...

 

const mydataplo=#<mydata

const mydataphi=#>mydata

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

I spent a while chasing a weird bug with setting the pointer - it would only work if I used letter variables for the pointer variable. I'm guessing it works for those and not the varXX variables because the former are zeropage? The generated assembly below does not look correct:

 

	LDA #mydataplo
	STA mempointer
.L09 ;;  mempointerhi = mydataphi

	LDA #mydataphi
	STA mempointerhi

 

The attached example works if mempointer and mempointerhi are set to letter variables, but not if they are set to varXX variables.

 

pointertest.78b

Link to comment
Share on other sites

One more comment/suggestion about this for now, and then I'll shut up for a while. :P

 

I think it would be handy when data statements are defined if the compiler would generate tablename_lo and tablename_hi symbols automatically for those data tables in the same way that it already generates tablename_length symbols.

  • Like 1
Link to comment
Share on other sites

5 hours ago, RevEng said:

Actually, it looks right in the pdf version of the docs. It's just wrong in the web docs. @Random Terrain could you have a look?

 

I see what the problem is. The less than and greater than symbols are messing things up. I'll have to replace them with &lt; and &gt; in the code. I better check the whole page and the bB page too. I'll post when I'm done.

  • Like 1
Link to comment
Share on other sites

Seems to be fixed:

 

randomterrain.com/7800basic.html#indirect_variable_arrays

 

Since the HTML tags use less than/greater than symbols, I couldn't search the HTML code for them. I had to search the PDF for a less than symbol, copy nearby text, search for that text on the HTML page, replace < with &lt;, then repeat the process with > and &gt;. Thanks to the PDF version, I was able to find all less than/greater than symbols without running into HTML tags.

 

I can't do that for the bB page. I could search the WYSIWYG version of the bB page to ignore any HTML tags, but if any less than/greater than symbols are causing some text to be missing, the symbols would be missing in the WYSIWYG version.

  • Like 1
Link to comment
Share on other sites

7800basic v0.11 is now available at the github release page.

 

Whats new, compared to v0.10:

  • Support for paddle controls
  • data statements now automatically create NAME_lo and NAME_hi constants
  • Minor efficiency improvements to plotsprite
  • Refinements to driving wheel and mouse drivers
  • Added "canary" stack protection

There's been a fair bit of time invested into making the rotation controls (paddle, mice, driving wheel) all behave similarly, with only minimal glue code required to support all of these in your game. See the "rotationalcontrols" sample for an example. To use non-joystick controls in the A7800 emulator, you need to switch the controller in the "controller selection" menu, and if your rom is running, hit the "reset" choice in the same menu.

 

If anybody wants to pickup a cheap mouse option, searching ebay for "atari st mouse ps2" or "amiga mouse ps2". This should bring up inexpensive ps/2 mouse adapters that are compatible with the 7800. In fact, testing seems to indicate that these adapters are more likely to work with various 7800 consoles than legacy mice are. If you're handy with a soldering iron, these adapters can be had in kit form for $15 USD shipped.

 

The Arkanoid WIP supports all of the 7800basic rotational controllers, including mice. I have a side project planned that will hopefully give users another good reason to buy/use these adapters, or legacy mice. I think these are a viable option for 7800 rotational paddle games, for target based lightgun-type games, for trackball type games, and more.

 

[end transmission]

  • Like 8
  • Thanks 2
Link to comment
Share on other sites

Great update Mike ??? 

 

Mike has been working so hard on the controller changes the past couple of months encountering a number of challenges getting them to work so amazingly well for our 7800basic community.

 

I cannot thank you enough for your continued commitment to the language and the ongoing support you provide me personally and to the wider community. You can see with the increased number of games being created for the 7800 that 7800basic is driving this uptake and making your blood, sweat and tears so very much worth it. Thank you Mike ?

  • Like 5
  • Thanks 1
Link to comment
Share on other sites

Are there any examples that switch charactersets, to e.g. display graphics background, then text? I seem to be missing something when I try. I display my screen successfully, but when I try to switch to the atascii characterset and do plotchars, the characters displayed are offset by the number of tiles in my other characterset. I thought that putting the atascii graphic in its own block by preceding it with a "newblock" command would fix the numbering, but it did not.

Link to comment
Share on other sites

If I'm understanding you correctly, you're trying to display more than one character set on the screen at once? If so, that's not possible normally, outside of a mid-screen change. That would leave one character set active above the mid-screen change, and another character set active below the change. 

 

To accomplish that, it would be similar to the splitmode demo, except you'd add the character set changes you want in the topscreenroutine. (in pretty much the same place the demo has 320A to 160A mode changes.)

  • Thanks 1
Link to comment
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.
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...