Re: [stella] BAStella Language Reference V0.000000001

Subject: Re: [stella] BAStella Language Reference V0.000000001
From: "Roger Williams" <mer02@xxxxxxxxxxxxx>
Date: Fri, 23 Nov 2001 16:03:10 -0800
From: <erik@xxxxxxxxxx>

> I mean, you don't even have to write a new kernel.  Just provide the
> option for the default kernel to be called for a programmer-specified
> number of scanlines.  Which I think you have to do anyway to allow
> the programmer to set up a screen that uses one of the status/score
> type.  The programmer can decide to call the default kernel for say,
> ten scanlines, then do his own repositioning, and call it again.

What I am thinking of now is a "kernal type" which takes a line or two
to do some pre-arranged repositioning.  You could do a major subset
of vertical repositions in one scanline, and one horizontal reposition
per 'nother scanline.  Meanwhile any other objects set up to display
by the previous kernal chunk would flow through, so it could be a
pretty transparent effect.

> I'd just generate an .asm file and rely on an assembler to generate the
> object code.  If you can distribute a DASM with it, it's all transparent
> the user.

I thought of this, but it's really a pain if you are scripting back and
nonexistent to crappy error reporting.

OTOH I'm already thinking of having BAStella output a .bin that
displays an error message when an error occurs for this reason...
I could just have it output a compilable source (hell, it could be
composed of .byte statements.  Hmmmmm.)

> Nah, any good language allows inline declarations.  Although I prefer the
> declarations to operate at procedural level (VB style) instead of the
> narrowest-enclosing-scope C style.

Yep.  I really like heading up my files with a big chunk o' global
documentation, where I describe the file formats, lay out the databases,
explain all the public types, and so on.  Of course this is how you get
when you learn assembly language first...

> >> >* Wonk question: Where's the math stack?
> >>
> >> *Wonk question 1A: How in the world are you going to multiply and
> >
> >Library subroutines.  I didn't say it would be efficient.
> You're talking something like 100-150 cycles for a general-purpose
> multiplication routine, using shifts and adds.  Although ISTR someone
> posting a good such routine to this list several years ago...?

Yes, but that's why you're using a high-level language.  I have done a
lot of programming in recent years in truly crappily slow automated
controller languages.  That's one reason the code runs asynchronously;
you can slip two or three frames on an infrequent operation, then
catch up and the slip is hardly visible.  (It's hard to believe how well
this works unless you've seen it.)  That's much harder to do with
synchronized code.

There's no getting around the fact that BAStella would be slower
and less efficient than raw .asm, but the idea is for it to be fast and
capable enough to do interesting things which would encourage
people to learn about Stella and whet their appetite for more
powerful techniques.  How many people progressed from BASIC
to assembler in the early '80's in just this way?

> >sprite.p0.setXY(10, 100);
> >sprite.p1.setXY(100, 100);
> >
> >Maybe call it StellaScript.  :-)
> Grr.  Give me the BASIC straightforward syntax over "what kind of brace
> do I use here?" syntax any day.  And whoever came up with that dumb
> semicolon should be beaten.  Line breaks are infinitely more natural to
> humans to represent "end of thought".

Whoever came up with "the program is just a stream of characters"
should be tied to an ant hill.

--Roger Williams

Archives (includes files) at
Unsub & more at

Current Thread