Jump to content
IGNORED

Action! Language technical questions(2)


a8isa1

Recommended Posts

I don't remember if the following program was supplied with Action!'s runtime or a different distribution.

; Here is the BIGST.ACT which is used
; symbols you can have.  To actually i
; symbol table you need to set $495 to
; in BIGST.ACT describe this.

; -------------------------- BIGST.ACT

;      BIGST.ACT

; copyright (c) 1984
; by Action Computer Services
; All Rights Reserved

; This program will create a big
; global symbol table (max 510
; entries, normally 255) when run.
; It will boot the cartridge as well,
; so you must not have anything in
; the Editor that you want.  It does
; not increase the space used to
; store variable names.  If you want
; to increase this as well, you will
; have to 'SET $495 = #' in the

; monitor after running this program.
; # is the number of pages you want
; to be used for name storage (each
; page is 256 bytes, default is 8).

; You must use the correct version of
; Cold below:

; version 3.0 ACTION! ROM
;PROC Cold=$A323()[]

; version s 3.1 to 3.6 ACTION! ROMs
PROC Cold=$A326()[]


PROC BigSymbolTable()
CHAR bigST=$4C4
BYTE EBank=$D503

Zero($480, 255)

; following statement causes all
; variables starting with uppercase

; letters to go into one half of the
; global symbol table and variables
; starting with lowercase letters to
; go into other half (255 entries in
; each half).  If you use mostly
; uppercase variable (this includes
; PROC/FUNC names) use 'M.  If you
; use mostly lowercase variables then
; use 'm.

bigST = 'a

; boot cartridge with big S.T.
; Will not return.

EBank = 0
Cold()
RETURN

The first question is what is the program actually doing to increase the number of symbols.

 

The second question concerns the following line from the program:

 

PROC Cold=$A326()[] 

 

I remember the address is the location of the PROC. The empty parentheses means there are no parameters passed.  The location of the empty paratheses are where they are to satisfy the compiler's parser.  What do the empty square brackets mean?

 

Square brackets usually signify a code block.  

 

Thanks.

 

-SteveS

Edited by a8isa1
Link to comment
Share on other sites

BIGST was supplied with the ToolKit and the PAD diskettes. What it does is add a second global hash table for the symbol table. I believe by default it splits at the letter lower case m ('m) so variables whose hash value is less than 'm go in one table and those which are higher go in the second table. You can set the split point in case you only use uppercase characters.

 

That's an odd construct, not normally used. I would say the square brackets mark an empty code block, just to give the procedure a body, which the parser will insist it has.

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...