Re: [stella] DASM 'upgrade' in progress

Subject: Re: [stella] DASM 'upgrade' in progress
From: Christopher Tumber <christophertumber@xxxxxxxxxx>
Date: Thu, 20 Mar 2003 23:35:37 -0500
Andrew wrote:

>OK, I understand that request.  Essentially you want a local-variable scope.  I'll have a think about how this could/should be done.  Perhaps there's a good way to do it with existing code, anyway (for eg: defining the sections in separate files, and only exporting symbols which should be global).

There are a couple ways you could do this, for example require local variables to start with a certain string (ie: LOCAL_variable1 EQU $80) or replace EQU with something similar which does the same thing (ie: variable1 EQU.LOCAL $80) and then keep that association until it's changed later. However, it could become dificult for programmers to keep track of the current status of local variables (ie: If a subroutine is called that happens to be outside the local area, what happens? Are you sure you haven't redifined the variable recently?)

So I would suggest borrowing from C and use {}. This has the advantage that just about everyone's familiar with C or something similar which also uses {} and it's visually pretty easy to pick out.

Any variables defined within {} are local variables. Any variable defined outside {} are global variables.

Subroutine1:
{
 variable0 EQU $80
 variable1 EQU $81
 variable2 EQU $82

 ;code
 ;code
 ;code
 rts
}

Subroutine2:
{
 variable0 EQU $90
 variable1 EQU $91
 variable2 EQU $92

 ;code
 ;code
 ;code
 rts
}


Outside the {} a local variable is undefined (unless redifined) so if there's a branch to outside the {} then the variable must be redefined or an error will be generated.

Of course, you'd probably want to allow nesting as well...


Chris...

----------------------------------------------------------------------------------------------
Archives (includes files) at http://www.biglist.com/lists/stella/archives/
Unsub & more at http://www.biglist.com/lists/stella/


Current Thread