/MATH PREFIX FILE / MODIFIED BY: / / 024 KMD 23-Sep-85 Dutch Xlations / 023 KMD 13-Sep-85 V30 Swedish & norwegen defs / 022 KMD 06-Sep-85 Spanish specific changes / 021 RCME 07-Aug-85 Add LEXASC locations (pp. KMD) / 020 KMD 01-Aug-85 CHANGE RADIX SYMBOL FOR ITALS / 019 RCME 11-Jun-85 Add loadout for MATH hole block / /------------------ All below refer to V2.0 and earlier --------------------- / / 018 WCE 01-JUN-83 EXPANDED SYMBOL TABLE BY REMOVING MTBL / 017 DAO 25-OCT-81 ADDED RADIX CONSTANT (=".-200) / ADDED CURENCY CONSTANT (="$-200) / 016 DAO 16-OCT-81 Changed write out code for BCDASC / 015 DRH 15-OCT-81 LOCKED "MTHWRK" IN AT LOC 176,"MTHTOT" / AT 175, & "MTHTYP" AT 174 / 014 DRH 30-SEP-81 LOCKED "MTHSND" IN AT LOC 177 / 013 DRH 23-SEP-81 ADDED EDIT BEGIN/END WORK AREA FLAG / MATH CTRL BLOCK SECOND LINE FLAGS / 012 DA0 14-SEP-81 CHANGED NUMBER DEFAULT DESIGNATION / 011 DRH 14-SEP-81 ADDED EDITOR VS LP MATH MODE FLAG / 010 GDH 2-Sep-81 Changed write-out code to component pieces. / 009 JRF 11-AUG-81 Added LNEBIC definition / 008 JRF 04-AUG-81 Added symbol definition for percent character. / 007 JRF 28-JUL-81 Added CIFMNU equate / 006 DAO/DRH 23-JUL-81 ADDED ERROR FOR FORMAT ALREADY GIVEN / TO RESULT VAR. IN CTRL BLOCK / 005 JRF 23-JUL-81 Moved error equates to WPF1.PA / 004 DRH 17-JUL-81 ADDED ERROR - FORMULA FORMAT WRONG / 003 DAO 14-JUL-81 /CHANGED WRITE-OUT CODE TO WRITE OUT / /BCDASC FROM FIELD 3 / 002 DAO 14-JUN-81 /MERGED BUFFER STUFF FROM EMATH.PA / 001 DAO 14-JUN-81 /MERGED IN JOES PAGE 0 LOCATIONS FOR / /LEXIC,ASCBCD,AND RDLNBF IFNDEF DECDEV < FIELD 2 / ASSEMBLE IN FIELD 2 BECAUSE EMULATOR CAN'T > / HANDLE MORE THAN 20K IFDEF DECDEV < FIELD 5 / ASSEMBLE IN FIELD 2 BECAUSE EMULATOR CAN'T > / HANDLE MORE THAN 20K *100 /VALUES USED IN CONTROL BLOCK EVALUATION CODE LNEPTR, 0 /POINTER TO INPUT LINE BUFFER TRUNC, 0 /"TRUNCATE" FLAG /VALUES USED IN TRANSLATOR CODE OPDNXT, 0 /"OPERAND EXPECTED NEXT" FLG, IF TRUE THAN = 0,IF FALSE THAN = - NXTPRS, 0 /"NEXT INPUT PROCESSED" FLAG, IF TRUE THAN = 0,IF FALSE THAN = - NMEPTR, 0 /POINTER TO START OF INPUT OPERAND VARIABLE NAME /A001 /VLEPTR,0 / " " " " " " " VALUE /A001 /D018 MTHPTR, 0 / " " SYMBOL POINTER TABLE OUTPTR, 0 / " " OUTPUT LIST SYMPTR, 0 / " " SYMBOL TABLE RESPTR, 0 / " " RESULTS POINTER TABLE /A001 POSTSP, 0 / " " OPERATOR HANDLING STACK SYMVAR, 0 / " " "OVRAGN" FOR VARIABLE NAME IN SYM TBL TMPTR1=T3 / " " HOLD TEMPORARY POINTER TMPTR2=T2 / " " HOLD A SECOND TEMPORARY POINTER FDCLRT, / For usage, see LEXASC /a021 TKVLBP, 0 / For usage, see LEXASC /a021 NUMCC, / For usage, see LEXASC /a021 FNCHCD, / For usage, see LEXASC /a021 FUSLCT, 0 / For usage, see LEXASC /a021 TMPCTR, 0 / " " HOLD A TEMPORARY COUNTER TOKEN, 0 /USED TO STORE TOKEN PASSED FROM LEXIC RTN (SCANNER) / VALUES USED IN MATH FORMULA EXECUTION OUTEXT, EXEOUT /HOLDS THE RETURN ADDRESS OF 'OUTLST' MUST BE ON PAGE /ZERO BECAUSE THE RETURN FROM 'OUTLST' MAY BE ON A /DIFFERENT PAGE THAN THE ENTRY POINT. OUTENT, 0 /ENTRY POINT USED TO INDIRECT THRU WHEN INVOKING /FORMULA EXECUTION CODE. CONTAINS EITHER START OF /OUTPUT LIST IF CONTROL WORD = "FORMULA" OR STARTING /LOC IN OUTPUT LIST FROM WHICH TO EXECUTE FORMULA IN /A "SET" CONTROL WORD LINE. NOTE - ONCE SET LINE /FORMULA HAS BEEN EXECUTED, "OUTENT" IS DYNAMICALLY /REINITIALIZED TO CONTAIN THE START OF THE OUTPUT /LIST AGAIN. TMP1, 0 TMP2, 0 TMP3, 0 / POINTER TO SA, LA, RA, SB, LB OR RB TMP4, 0 TMP5, 0 TMP6, 0 TMP7, 0 TMP8, 0 FDCLTR, /For usage, see LEXASC /a021 FNCHRC, /For usage, see LEXASC /a021 TMP9, 0 TMP10, 0 PA, A / POINTER TO INPUT OPERAND PB, B / POINTER TO OTHER INPUT OPERAND LC, 0 / CALCULATED NUMBER OF DIGITS TO LEFT OF RESULT IF DIVISION CARRY, 0 B1, 0 / RIGHT END OF SAC B2, 0 / ADDRESS OF RIGHT END OF B B3, 0 / WIDTH OF B B4, 0 / WIDTH OF C A1, 0 / ADS (ADD DIGIT ROUTINE) OR SBS (SUBTRACT DIGIT ROUTINE) A2, 0 / POINTER TO C A3, 0 / POINTER TO B A4, 0 / COUNTER FOR B A5, 0 / COUNTER FOR C /NOTE: THE FOLLOWING 6 WORDS /MUST BE CONTIGUOUS. SA, 0 / SIGN OF A (1=NEGATIVE, 0=POSITIVE) LA, 0 / NUMBER OF DIGITS TO LEFT OF DECIMAL POINT FOR A RA, 0 / NUMBER OF DIGITS TO RIGHT OF DECIMAL POINT FOR A SB, 0 / SIGN OF B (1=NEGATIVE, 0=POSITIVE) LB, 0 / NUMBER OF DIGITS TO LEFT OF DECIMAL POINT FOR B RB, 0 / NUMBER OF DIGITS TO RIGHT OF DECIMAL POINT FOR B GOBACK, 0 / RETURN ADDRESS FOR THE MATH ROUTINES TOP, 0 / POINTER TO TOP STACK ELEMENT INIT=JMS I . / INSTRUCTION TO INITIALIZE PSUEDO-STACK MACHINE PINIT / ADDRESS OF INIT ROUTINE ADD=JMS I . / INSTRUCTION TO JMS TO ADD ROUTINE PADD / ADDRESS OF ADD ROUTINE SUB=JMS I . / INSTRUCTION TO JMS TO SUBTRACT ROUTINE PSUB / ADDRESS OF SUBTRACT ROUTINE DIV=JMS I . / INSTRUCTION TO JMS TO DIVIDE ROUTINE PDIV / ADDRESS OF DIVIDE ROUTINE MUL=JMS I . / INSTRUCTION TO JMS TO MULTIPLY ROUTINE PMUL / ADDRESS OF MULTIPLY ROUTINE MINUS=JMS I . / INSTRUCTION TO JMS TO MINUS ROUTINE PMINUS / ADDRESS OF ROUTINE TO NEGATE TOP STACKE ELEMENT EQUATE=JMS I . / INSTRUCTION TO JMS TO EQUATE ROUTINE PEQUAT / ADDRESS OF ROUTINE TO EQUATE TOP OF STACK TO PUSH=JMS I . / INSTRUCTION TO PUSH A VALUE ONTO THE STACK PPUSH / ADDRESS OF ROUTINE TO PUSH A VALUE ONTO THE STACK /THE FOLLOWING PSEUDO-OP WOULD BE NICE HERE IF COULD FIND THE SPACE ON PAGE 0 /RIGHT NOW IT IS PACKED. / GOTFLD=JMS I . / INSTRUCTION TO RTN TO MAKE CROSS FIELD CALLS /A018 GETFLD / ADDRESS OF RTN TO SAVE CALLING FIELD FOR RETURN TO CALLER / / SYMBOL DEFINITIONS FOR LEXIC AND ASCBCD ROUTINE KWHOLE= 15 / max # of char expected LEFT of radix point KFRACTION= 06 / max # of char expected RIGHT of radix point / MINUSF= 4000 / MINUS_Flag '-' PLUSF= 2000 / PLUS_Flag '+' LPMSF= 1000 / Left_Parenthesis_Minus_Sign_Flag '(' PERCEF= 200 / PERCEnt_Flag '%' /A008 QUOTEF= 100 / QUOTE_Flag '"' ASTERF= 40 / ASTERisk_Flag '*' SEPARF= 20 / SEPARator_Flag ',' DIGITF= 10 / DIGIT_Flag '#' RPAREF= 4 / Right_PAREn_Flag ')' CSYMF= 2 / Currency_SYMbol_Flag '$' RSYMF= 1 / Radix_SYMbol_Flag '.' / /FOR LEXIC AND ASCBCD routines FRMCHR, 0 / FoRMula_CHaRacter read during LEXIC routine /A001 NUMFLG, ZBLOCK 1 / - + ( X X " * , D ) $ . / NUMber_FLaGs / 1='ok to read', 0='not ok to read' / LSTCHR, ZBLOCK 1 / - + ( X X " * , D ) $ . / LaST_CHaracter_Read / 1 = 'last character type read' / SUMCHR, ZBLOCK 1 / - + ( X X " * , D ) $ . / SUMmary_of_CHARacters_read / 1 = 'this char. type has been read' / /D005 / / SYMBOL DEFINITIONS FOR THE FORMULA EXECUTION ROUTINES / LNEBIC=-MAXLNE-1 / LiNE_Buffer_Initialization_Count = -MAX_size_- /A009 / of_control_block_input_LiNE_buffer - 1 /A009 MAX=20 / NUMBER OF SIGNIFICANT DIGITS BCDRAD=17 / BCD_RADix character representation VALSIZ=6 / NUMBER OF WORDS NEEDED TO STORE A BCD NUMBER VALUE, / AT 3 BCD DIGITS TO A WORD. (see ASCBCD routine) EQUAL="=-200 /VALUE USED AS DELIMITER OF OPERATOR HANDLING STACK DFAULT=0000 /DEFAULT VALUE OF FORMAT STATEMENT OF OPERAND VARIABLE / LEADING ZERO, 11 WHOLE, 2 DECIMAL NMDFLT=0017 /DEFAULT BIT SETTING FOR OPERAND VAR NUM VALUE../M012 /..PLACED IN SYMBOL TABLE - GOES IN 1ST LOC OF NUMBER /UNINITIALIZED BIT SET /NOTE - THIS INITIALIZES THE NUMBER TO 0.0 /A012 MAXASC=23 /MAX # CHAR GENERATED BY BCD TO ASCII CONVERTOR + 2 /FOR FIELD NAME ANGLE BRACKETS IFDEF ENGLSH < RADIX=".-200 /RADIX CHARACTER, CAN BE CHANGED FOR DIFFERENT /A017 /LANGUAGES /A017 > IFDEF DUTCH < RADIX=",-200 /RADIX CHARACTER, CAN BE CHANGED FOR DIFFERENT /A024 /LANGUAGES /A024 > IFDEF ITALIAN < RADIX=",-200 /RADIX CHARACTER, CAN BE CHANGED FOR DIFFERENT /A020 /LANGUAGES /A020 > IFDEF SPANISH < RADIX=",-200 /RADIX CHARACTER, CAN BE CHANGED FOR DIFFERENT /A022 /LANGUAGES /A022 > IFDEF V30NOR < RADIX=",-200 /RADIX CHARACTER, CAN BE CHANGED FOR DIFFERENT /A023 /LANGUAGES /A023 > IFDEF V30SWE < RADIX=",-200 /RADIX CHARACTER, CAN BE CHANGED FOR DIFFERENT /A023 /LANGUAGES /A023 > IFDEF ENGLSH < CURENC="$-200 /CURENCY SYMBOL, CAN BE CHANGED FOR DIFFERENT /A017 /LANGUAGES /A017 > IFDEF DUTCH < CURENC="F-200 /CURENCY SYMBOL, CAN BE CHANGED FOR DIFFERENT /A024 /LANGUAGES /A024 > IFDEF ITALIAN < CURENC="# /CURENCY SYMBOL, CAN BE CHANGED FOR DIFFERENT /A017 /LANGUAGES /A017 > IFDEF SPANISH < CURENC="P-200 /START OF CURENCY SYMBOL, CHANGED FOR DIFFERENT /A022 /LANGUAGE /A022 CUREN2="T-200 /REST OF CURRENCY SYMBOL USED IN BCDASC /A022 CUREN3="S-200 / " /A022 > IFDEF V30NOR < CURENC="N-200 /START OF CURENCY SYMBOL, CHANGED FOR DIFFERENT /A023 /LANGUAGE /A023 CUREN2="O-200 /REST OF CURRENCY SYMBOL USED IN BCDASC /A023 CUREN3="K-200 / " /A023 > IFDEF V30SWE < CURENC="S-200 /START OF CURENCY SYMBOL, CHANGED FOR DIFFERENT /A023 /LANGUAGE /A023 CUREN2="E-200 /REST OF CURRENCY SYMBOL USED IN BCDASC /A023 CUREN3="K-200 / " /A023 > *174 /***** WARNING ***** DO NOT MOVE "MTHTYP" WITHOUT /A015 /CHANGING "WPF1.PA" ALSO - NEEDED FOR EDITOR MATH CODE /A015 MTHTYP, 0 /THIS FLAG HAS BEEN ADDED TO SERVE AS AN INDICATOR OF /A011 /TYPE OF MATH THAT IS BEING USED AT ANY PARTICULAR TIME /A011 /IF IN LP MATH THEN "MTHTYP" = 0, IF IN EDITOR MATH = 1 /A011 /THIS FLAG MUST STAY ON PAGE ZERO, IF THERE ARE ANY /A011 /QUESTIONS ABOUT IT SEE THE "TMATH" MODULE UNDER "A017" /A011 *175 /***** WARNING ***** DO NOT MOVE "MTHTOT" WITHOUT /A015 /CHANGING "WPF1.PA" ALSO - NEEDED FOR EDITOR MATH CODE /A015 MTHTOT, 0 /THE "EDITOR MATH TOTAL" FLAG. = 0 IF TOTAL NOT REQUIRED/A013 /AND = 1 IF TOTAL REQUIRED. /A013 *176 /***** WARNING ***** DO NOT MOVE "MTHWRK" WITHOUT /A015 /CHANGING "WPF1.PA" ALSO - NEEDED FOR "GO-TO-PAGE" CODE /A015 MTHWRK, 0 /"NOT IN EDIT MATH WORK AREA" FLAG,= 1 IF TRUE,= 0 IF IN/A013 /EDIT MATH WORK AREA, IT IS SET TO 0 WHEN "BEGIN" /A013 /CTRL WORD IS ENCOUNTERED, AND 1 WHEN "END" CTRL IS /A013 /FOUND, IT IS INIT TO 1 BEFORE USING MATH /A013 *177 /***** WARNING ***** DO NOT MOVE "MTHSND" WITHOUT /A014 /CHANGING "WPF1.PA" ALSO - NEEDED FOR EDITOR MATH CODE /A014 MTHSND, 0 /"NOT EDITOR MATH SECOND LINE" FLAG: THIS IS SET UP AS A/A013 /TRI-STATE FLAG. THIS FLAG = 1 IF NOT PROCESSING SECOND /A013 /LINE OF MATH CTRL BLOCK; IT = -1 IF HAVE JUST FINISHED /A013 /PROCESSING "END" CTRL WORD, AND IT = 0 IF ARE /A013 /PROCESSING SECOND LINE OF CONTROL BLOCK. IT IS USED IN /A013 /CONJUNCTION WITH THE "BEGIN" & "END" CONTROL WORDS TO /A013 /BE SURE THEY ARE IN THE RIGHT PLACE IN THE BLOCK /A013 /THE -1 SETTING IS TO CHECK THAT THERE ARE NO MORE LINES/A013 /IN THE EDITOR MATH CTRL BLOCK AFTER THE "END" CTRL WORD/A013 /IS FOUND. THEREFORE IT MUST BE SET FROM THE EDITOR MATH/A014 /WHEN THE END OF THE MATH CTRL BLOCK IS FOUND AND IS /A014 /ACCORDINGLY DEFINED IN WPF1.PA AS AT LOC 177 /A014 CDFMYF=CDFMTH MNUFLD=20 /A007 CIFMNU=CIF MNUFLD /A007 / / / FIELD 0 *200 / START WRITE OUT CODE AT 200 IN FIELD 0 JMP I .+2 JMP I .+2 RXLOAD 7600 *RXLDLS RXEWT;0;RXQBLK . IFNDEF DECDEV < DLMATH;100;CDF 20;-DSMATH/WRITE OUT MATH ROUTINES /M003 > IFDEF DECDEV < DLMATH;100;CDF 50;-DSMATH/WRITE OUT MATH ROUTINES /M003 > DLMBCD /WRITE OUT BCDASC START AT THIS DISK BLOCK /A003 BCDASC / BCDASC STARTING ADDRESS /A003/M016 CDF 30 / BCDASC ASSEMBLES IN THIS FIELD (RUNS IN 5) /A003 -DSMBCD / NUMBER OF BLOCKS TO WRITE OUT /A003 DLMTHL / Write out MATH holes. Start at this block /a019 200 / MATH hole starting address /a019 CDF 60 / MATH holes assemble in this field /a019 -DSMTHL / Number of blocks to write out /a019 0 /FIELD MTHFLD%10 / ASSEMBLE IN MATH FIELD IFNDEF DECDEV < FIELD 2 / ASSEMBLE IN FIELD 2 BECAULE EMULATOR CAN'T > / HANDLE MORE THAN 20K IFDEF DECDEV < FIELD 5 / ASSEMBLE IN FIELD 2 BECAULE EMULATOR CAN'T > / HANDLE MORE THAN 20K *100 PAGE / AT LOCATION 200 / /