Main Menu
Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Messages - crcasey

#1
Quote from: Vectrex32 on November 15, 2016, 10:23:19 PM
Quote from: crcasey on November 15, 2016, 10:09:13 PM
The other section(near the end of the language doc) acts like the basic will be an .EXE on the host system. 

I wrote GSBASIC to be embeddable in any system or to run stand-alone on a PC, so that's why the GSBASIC manual sometimes mentions a host system. Currently, Vectrex32 is the only place I've used GSBASIC.

- Bob

Just people reading the Vec32 manual seeing references to a win exe they have never seen may make the manual read a bit off.

I tried to read the manual as a newby on one side, and a techy on the other, that was why I split the qusetions up.

=Cecil
#2
On the bright side for you I have asked the questions I wanted to ask for now.

Thank you so much for taking the time to answer me.

-Cecil
#3
Quote from: Vectrex32 on November 15, 2016, 10:41:34 PM
In some frames, you might draw a lot of lines. In other frames, you might draw only a few. And yet it's important that the frame rate be constant (otherwise the apparent brightness of the lines would vary). So even if I could look at a drawing list and figure out how long the 6809 will take to draw it (which would be a very difficult thing to do) it would not be a good idea to adjust the frame rate based on that.

- Bob

When you are in a break is there a way to inspect or decompile the  6809 state?  Like getting a load level reading on the Vectrex?
That way you could see how heavy you are stressing the shared memory or vector drawing?  Maybe having the option of interleaving the 6809 display processing?

-Cecil



#4
I am making some assumptions here since I have not seen this in the documentation.

You are loading some functions as standard into the 2K of shared ram that allow the 6809 and Vectrex hardware to act as a display list processor.

You turn the basic display into an optimized instruction list that call on board ROM calls in the 8K space the internal Rom has to do the drawing, and read controller status into the shared ram per hardware frame.

You can change these shared ram updates dependent on how fast the 6809 can do the draw commands.  And you idle the 6909 the rest of the time.

Is there a rule of thumb of how many vectors you can fit into the 2K and still make them run in one frame?  That would seem to be the way to run it, and the calculate the frame rate and the music rates back from that.

Does that make sense? 

-Cecil
#5
I have gotten through the manual, and have talked with you for most of my questions.

You understand a language when you can read a program and run it in your head.  I know a couple.

The language is quite clear so that is in it's favor.
Stream or file objects will make it better.
But you could use the load .. reastart to do something like that.

In parts of the middle of the docuemnet some ways that you would be seeing the basic are not clear.
Example, one section refers to connecting to the card with a serial terminal (hardware manual).  The other section(near the end of the language doc) acts like the basic will be an .EXE on the host system. 

Maybe a bit of rework in that area to note that the whole basic system is on the card, not a system, so is totally portable.

That's what I got in the first read.
-Cecil

#6
General Discussion / Re: Basic Interpreter
November 15, 2016, 09:53:46 PM
Do you have to use AppendArrays to combine arrays or can use the + as a concatenation operator?  Can it be overloaded?

-Cecil
#7
General Discussion / Re: Basic Interpreter
November 15, 2016, 09:47:54 PM
Quote from: Vectrex32 on November 15, 2016, 09:45:13 PM
It gives you an error, that the function call has the wrong number of arguments.

- Bob

Same function def.
A more strange case, but likely follows string cat rules.

a="A number is "
b=3.33333

print myfunction(a,b)

-C
#8
General Discussion / Re: Basic Interpreter
November 15, 2016, 09:44:17 PM
Function handling question...

If you define:

FUNCTION MyFunction(a, b)
RETURN a + b
ENDFUNCTION


What happens if you call it...

a=MyFunction(1)
print a

Of if you call it...

a=Myfunction(1,2,3)
print a

Just wondering how that error was handled.

-Cecil
#9
Good to know, Thanks.  I was wondering how much underlying OS you had to roll in.

I found another manual error.  Section 4.9 on functions.  No final output of the command in the example.

Assuming debug mode.

-Cecil
#10
General Discussion / Re: Basic Interpreter
November 15, 2016, 09:27:32 PM
I don't think I have run into a basic version that normally can use a float type in the FOR ... STEP  <Float> format before.

Is this carried over from a Basic I have not used?  I can totally see where this will be great for camera moves and sprite translations.

-Cecil
#11
Quote from: Vectrex32 on November 15, 2016, 08:27:59 PM
Arrays that are no longer referenced by any variable or sprite are deallocated - the memory is freed.

- Bob

Are you actively managing memory fragmentation? 
Are there times when garbage collection will cause a slowdown in processing?  Assume something stupid like a stereo 16 bit, 1024 bin FFT running as part of the 32 bit side main loop.
Would those slowdowns ever show on the vectrex side as duplicate frames or stuttering?

-Cecil
#12
General Discussion / Re: Basic Interpreter
November 15, 2016, 08:34:29 PM
Thanks, Sorry to keep up the basic (ha) questions.

-C
#13
General Discussion / Re: Basic Interpreter
November 15, 2016, 08:29:23 PM
Also a quick question on assignment and pointers...

a=10
b=a
b=b+10

is a = 10 or is a=20 now?

How about with more complex types like arrays?

-Cecil
#14
General Discussion / Re: Basic Interpreter
November 15, 2016, 08:27:27 PM
Another question along this line...

Why keep = as both assignment and as an expression?

I find the C way of = being assignment and == being compare expression makes the code read more clearly.

-Cecil
#15
If I am reading the manual correctly the initializer returns a handle(pointer) to the array, which can either then be stored in a variable as a handle, or be used directly as a function argument.  In the second case what happens to the array when the function ends?

Does each handle keep a record of objects tied to it so that garbage collection happens?

Or another case say you store the array handle in the variable asdf. 
Then you do asdf=nul.
What happens to the array data?

I guess I wonder how much program memory there is and what you have done for garbage collection?

-Cecil