NOTES ON PARSER 'EOS' HANDLING OF ASAP FUNCTIONS AND COMMANDS ------------------------------------------------------------- COMMANDS: -------- CURRENTLY ON THE 85/86 THERE IS 1 TYPE OF COMMAND IN THE EOS HIERARCHY SYSTEM, 'EOSCMD'. THIS EOS VALUE OVERLAPS THE DISPLAY CONVERSION TOKENS NOW WITH NO PROBLEMS. I NEED TO CREATE 3 NEW 'EOSCMD' TYPES, 1 FOR EACH ASAP THAT COULD BE LOADED. I PLAN TO GIVE THEM VALUES AFTER 'EOSCMD' AND JUST OVERLAY A FEW MORE OF THE DISPLAY CONVERSIONS. EOSCMD EQU 1 EOSCMD_ASAP1 EQU 2 EOSCMD_ASAP2 EQU 3 EOSCMD_ASAP3 EQU 4 WHEN THE PARSER COMES ACROSS AN ASAP TOKEN AND DETERMINES THAT IT IS A COMMAND, THEN PUSH ONE OF THE ASAP CMD TOKENS DEPENDING ON WHERE THE ASAP IS LOADED - WHICH CANNOT CHANGE DURING PARSING, AND ALSO THE ASAP TOKEN #. FUNCTIONS: --------- ASAP FUNCTIONS ARE A BIT MORE INVOLVED FOR A FEW REASONS, 1) EOS SYSTEM HANDLES ALL FUNCTIONS WITH 1 BYTE 2) FUNCTIONS HAVE DIFFERENT PRECENDCES I AM GOING TO CREATE 3 NEW EOS FUNCTION SPOTS IN THE EOSLOOP FOR EACH TYPE OF 'EOS ITEM' THAT GOES THROUGH 'EOSLOOP' ASAP1_IMUN ASAP1_UNARY EOSCMD_ASAP1 ASAP1_BINARY ASAP2_IMUN ASAP2_UNARY EOSCMD_ASAP2 ASAP2_BINARY ASAP3_IMUN ASAP3_UNARY EOSCMD_ASAP3 ASAP3_BINARY A SENCOND BYTE, THE ASAP TOKEN NUMBER, IS GOING TO HAVE TO BE HANDLED IN CONNECTION WITH THESE EOS FUNCTIONS. THAT MEANS MODIFYING 'EOSLOOP' AND OTHER PIECES OF THE PARSER TO CATCH THIS CONDITION. WHEN THE PARSER NEEDS TO KNOW ANY OF THE FOLLOWING INFO ABOUT AN ASAP FUNCTION, A LOOK UP INTO THE INSTALL AREA IS GOING TO HAVE TO BE DONE TO RETIREV IT. 1) ADDRESS TO EXECUTE FUNCTION (PTR INTO ASAP) 2) TYPE OF FUNCTION : BINARY,IMMEDIATE,UNARY,IMMED UNARY,VALUE 3) POSSIBLE HIERACHY OF FUNCTION ASAP EOS TABLE: -------------- THE ASAP EOS TABLE WILL HAVE AN ENTRY FOR EACH FUNCTION/COMMAND INSTALLED FOR A PARTICCULAR ASAP. THE TABLE WILL BE SORTED BY TOKEN NUMBER, 1 to N. EACH ENTRY WILL BE THE SAME # BYTES. FIELDS IN EACH ENTRY ARE : DW EXEC_ADDRESS DB EOS TYPE DB HIERCHRCY (IF APPLIES) EXEC_ADDRESS : ADDRESS IN ASAP TO EXECUTE FUNCTION/CMD. IF A COMMAND THEN THE PARSER WILL SET/RESET A FLAG TO SIGNAL IF COMMAND TOK EN JUST PARSER OR IF COMMAND NEEDS TO BE EXECUTED. EX_ASAP_CMD,(IY+ASAP_CMD_FLG) = 0 FOR FOUND ASAP CMD EX_ASAP_CMD,(IY+ASAP_CMD_FLG) = 1 FOR EXECUTE AAP CMD EOS_TYPE : WHAT IS THIS EOS ENTRY ? 1 = COMMAND 2 = UNARY 3 = IMMEDIATE UNARY (mlty arg) 4 = function no arg OR mlty arg, LOOK AT TOK FOLLOWING 5 = FUNCTION NO ARG, LIKE PI,RAND OR GETKEY 6 = BINARY note : type 4 is used to handle cases like the TVM functions on the 83 that are valid with or without args. note : type four can only be treated as a NO ARG function when the parser first finds the token. During the EOS loop it should be treated as an IMMED UNARY. note : type 4 when used as a 'noarg' doesn't look for an implied multiply precceding the function. fix : The asm program that will execute the 'nosarg' function has to check for 1- no arg function 2- if bitnumop1 is set, # is in op1/2 in asm then save value on FPS execute the 'noarg' function then use BINOPEXEC1 to execute the multiply