Yeah. I think this is the method I'm going to go with...

I'm working on a laserdisc-based adventure game engine, highly inspired by
Kevin Savetz' rediscovery of David Lubar's "Rollercoaster"/"Adventures in
Videoland" game for the Apple II.  I plan on demoing it at the Rochester
Maker Faire this upcoming weekend... Tandy 200 + Pioneer LD player + "The
Mind's Eye" LaserDisc.

I'm trying to make the code as easily portable and modular as possible.  I
have the serial interface code written for the T200, and part of the game
engine, but I'm focusing right now on having all of the game data stored in
one chunk of program space, like a BIOS.  The game engine in another chunk
of program space and the game data in another.  It was originally going to
be purely DATA statements, but changing to "scene 300" via the above method
is not a possibility. ;)  So I'll have the ON X GOTO a,b,c... part of the
game data area.   ie the game data is stored in lines 500-1000... and to
setup RESTORE for room 2:
  100 RM=2 : GOTO 510
or for item 1,
  110 IT=1 : GOTO 520
then in the beginning of the data chunk...
500 REM Game Data
510 ON RM GOTO 550, 560, 570
520 ON IT GOTO 580, 590, 600
...
550 RESTORE 551 : RETURN
551 DATA ...
560 RESTORE 561 : RETURN
561 DATA ...

I know it's not efficient with respect to the BASIC interpreter, but i can
optimize later. :)

My outdated github link here: https://github.com/BleuLlama/LlamaLlaser

-s

On Tue, Nov 13, 2018 at 12:08 AM Ken Pettit <[email protected]> wrote:

> Hi Scott,
>
> The ROM only accepts immediate literal values.  You would need to do
> something like:
>
> 10 V = 2
> 20 ON V GOSUB 80, 90
> 30 READ X$
> 40 PRINT X$
> 50 END
> 80 RESTORE 100:RETURN
> 90 RESTORE 200:RETURN
> 100 DATA "One hundred"
> 200 DATA "Two hundred"
>
> Ken
>
> On 11/12/18 8:47 PM, Scott Lawrence wrote:
>
>
> The "RESTORE" command... can it only take an immediate value, or is there
> a way to pass it a variable?
>
> I want to do something like this:
>
> 10 V = 200
> 20 RESTORE V
> 30 READ X$
> 40 PRINT X$
> 50 END
> 100 DATA "One hundred"
> 200 DATA "Two hundred"
>
> And i expect the output of:
>
>     Two hundred
>
> Instead I get:
>
> UL Error in 20
>
>
> Or am I asking too much from BASIC? ;D
>
> -s
>
> --
> Scott Lawrence
> [email protected]
>
>
>

-- 
Scott Lawrence
[email protected]

Reply via email to