a8isa1 Posted November 6, 2019 Share Posted November 6, 2019 (edited) 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 November 6, 2019 by a8isa1 Quote Link to comment Share on other sites More sharing options...
Alfred Posted November 6, 2019 Share Posted November 6, 2019 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. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.