   1               /FCOM FUNCTION FOR U/W-FOCAL:  JVZ
   2               
   3               /THIS FUNCTION PROVIDES STORAGE AND RETRIEVAL OF VARIABLES
   4               /IN FIELD 2 AND HENCE REQUIRES A 12K MACHINE.  THIS VER-
   5               /SION DOES NOT PERFORM ANY ERROR CHECKING AND PRESUMES
   6               /THAT THE ENTIRE FIELD IS AVAILABLE.  VARIABLES MAY BE
   7               /STORED EITHER AS 4-WORD FLOATING POINT VALUES OR 2-WORD
   8               /INTEGERS.  INTEGER STORAGE IS COMPATIBLE WITH THE KE-8E
   9               /DOUBLE PRECISION EAE INSTRUCTIONS.
  10               
  11               /TYPICAL CALLS:  S X=FCOM(N); S X=FCOM(N,Y); X FCOM(N,Z)
  12               /RECURSIVE CALLS ARE ALLOWED: X FCOM(FCOM(-1,FCOM(-1)+1),Z)
  13               
  14               /THE FIRST ARGUMENT IS THE INDEX (SUBSCRIPT) AND DETERMINES
  15               /THE TYPE AND LOCATION OF STORAGE.  ONLY THE INTEGER PART
  16               /OF THE INDEX WILL BE USED.  POSITIVE INDEX VALUES: 0,1,2..
  17               /INDICATE FLOATING POINT (4-WORD) STORAGE, AND NEGATIVE
  18               /VALUES SPECIFY INTEGER FORMAT (24-BIT).  CONVERSION FROM
  19               /ONE TYPE TO THE OTHER IS AUTOMATIC.  WHEN ONLY THE
  20               /INDEX IS GIVEN, 'FCOM' RETURNS THE VALUE OF THAT VARIABLE.
  21               /IF A SECOND ARGUMENT IS GIVEN ITS VALUE WILL BE STORED
  22               /AT THAT LOCATION & ALSO RETURNED AS THE FUNCTION VALUE.
  23               
  24               /PROVIDING NO INTERVENING PROGRAMS USE FIELD 2, COMMON
  25               /VARIABLES MAY BE STORED BY ONE FOCAL PROGRAM AND THEN USED
  26               /LATER BY ANOTHER.  ADDITIONALLY THE APPROPRIATE AREA MAY
  27               /BE SAVED VIA THE MONITOR 'SAVE' COMMAND AND LATER RELOADED
  28               /WITH 'GET' BEFORE CALLING IN FOCAL.
  29               
  30               /FOCAL SYMBOLS:
  31               
  32                       FIELD 1
  33               
  34                       AUTO=11
  35                       EXP=44
  36                       HORD=45
  37                       LORD=46
  38                       OVER2=47
  39                       CHAR=66
  40                       MCOM=72
  41                       END=134
  42                       EVAL=1613
  43                       FNTABF=355
  44                       FNEW=3224
  45                       FIXIT=4453
  46                       PUSHA=4542
  47                       PUSHJ=4540
  48                       POPA=4537
  49                       RETURN=5536
  50               
  51                       *END
  52 010134  3302          STVAR           /SYMBOL TABLE ORIGIN
  53               
  54                       *FNTABF
  55 010355  3224          FCOM            /FUNCTION ENTRY POINT
  56                      *FNEW           /ALSO FITS IN EAE HOLE AT 7250
  57               
  58 013224  4453  FCOM,   FIXIT           /FIX INDEX AND SET EXP, OVER2
  59 013225  4542          PUSHA           /SAVE INDEX ON THE STACK
  60 013226  1066          TAD CHAR
  61 013227  1072          TAD MCOM
  62 013230  7640          SZA CLA         /CHECK FOR A SECOND ARGUMENT
  63 013231  5251          JMP FETCH
  64 013232  4540          PUSHJ           /BRING ARGUMENT INTO FLAC
  65 013233  1612              EVAL-1      /(MAY BE AN EXPRESSION)
  66 013234  4265          JMS INDEX       /COMPUTE INDEX
  67 013235  5244          JMP .+7         /NEGATIVE INDEX
  68               
  69 013236  1044  STORE,  TAD EXP         /FLOATING STORAGE
  70 013237  3411          DCA I AUTO
  71 013240  1047          TAD OVER2
  72 013241  3411          DCA I AUTO
  73 013242  1046          TAD LORD
  74 013243  7410          SKP
  75 013244  4453          FIXIT           /INTEGER STORAGE
  76 013245  3411          DCA I AUTO
  77 013246  1045          TAD HORD
  78 013247  3411          DCA I AUTO
  79 013250  5263          JMP INDEX-2     /FUNCTION RETURN
  80               
  81 013251  4265  FETCH,  JMS INDEX       /COMPUTE INDEX
  82 013252  5257          JMP .+5         /NOTE: EXP=27, OVER2=0
  83 013253  1411          TAD I AUTO      /FLOATING RETRIEVAL
  84 013254  3044          DCA EXP
  85 013255  1411          TAD I AUTO
  86 013256  3047          DCA OVER2
  87 013257  1411          TAD I AUTO      /INTEGER RETRIEVAL
  88 013260  3046          DCA LORD
  89 013261  1411          TAD I AUTO
  90 013262  3045          DCA HORD
  91 013263  6211          CDF 10
  92 013264  5536          RETURN          /RETURN FLOATS INTEGERS
  93               
  94 013265  0000  INDEX,  0               /COMPUTE INDEX AND BRANCH
  95 013266  4537          POPA            /EXAMINE ARGUMENT
  96 013267  7510          SPA             /FLOATING
  97 013270  5274          JMP .+4         /INTEGER
  98 013271  2265          ISZ INDEX       /SET POSITIVE RETURN
  99 013272  7106          CLL RTL         /MULTIPLY INDEX BY FOUR
 100 013273  7410          SKP
 101 013274  7144          CMA CLL RAL     /-(I+1)*2 FOR INTEGERS
 102 013275  7041          CIA             /SUBTRACT
 103 013276  7040          CMA             /ONE
 104 013277  3011          DCA AUTO        /LOAD INDEX REGISTER
 105 013300  6221          CDF 20          /COMMON STORAGE IN FIELD 2
 106 013301  5665          JMP I INDEX
 107               STVAR=.
 108                       $

AUTO    0011
CHAR    0066
END     0134
EVAL    1613
EXP     0044
FCOM    3224
FETCH   3251
FIXIT   4453
FNEW    3224
FNTABF  0355
HORD    0045
INDEX   3265
LORD    0046
MCOM    0072
OVER2   0047
POPA    4537
PUSHA   4542
PUSHJ   4540
RETURN  5536
STORE   3236 unreferenced
STVAR   3302
