-- FOpTable.mesa
-- last edited by Sweet, January 11, 1980  2:57 PM
-- last edited by Satterthwaite, May 31, 1982 12:23 pm

DIRECTORY
  P5: TYPE USING [];

FOpTable: PROGRAM EXPORTS P5 =
  BEGIN

  -- generated by OpDefsGenerator 31-May-82 12:19

  Q: TYPE = PRIVATE RECORD [
    push: [0..3], pop: [0..7], length: [0..3], mark: BOOLEAN];
  T: BOOLEAN = TRUE; F: BOOLEAN = FALSE;

  OpParms: PRIVATE ARRAY [0..256) OF Q = [
--        NOOP           LG           SG           LL   000-003
    Q[0,0,0,F],  Q[1,0,1,F],  Q[0,1,1,F],  Q[1,0,1,F],
--          SL           LI          LCO          LGD   004-007
    Q[0,1,1,F],  Q[1,0,1,F],  Q[1,0,1,F],  Q[2,0,1,F],
--         SGD          LLD          SLD            R   010-013
    Q[0,2,1,F],  Q[2,0,1,F],  Q[0,2,1,F],  Q[1,1,1,F],
--           W           RF           WF           RD   014-017
    Q[0,2,1,F],  Q[1,1,2,F],  Q[0,2,2,F],  Q[2,1,1,F],
--          WD         RSTR         WSTR          RXL   020-023
    Q[0,3,1,F],  Q[1,2,1,F],  Q[0,3,1,F],  Q[1,1,2,F],
--         WXL          RXG          WXG          RIG   024-027
    Q[0,2,2,F],  Q[1,1,2,F],  Q[0,2,2,F],  Q[1,0,2,F],
--         RIL           WS          WSF          WSD   030-033
    Q[1,0,2,F],  Q[0,2,1,F],  Q[0,2,2,F],  Q[0,3,1,F],
--        RILF          WIG          WIL          RII   034-037
    Q[1,0,3,F],  Q[0,1,2,F],  Q[0,1,2,F],  Q[1,1,2,F],
--        RIIL           PS          PSD          PSF   040-043
    Q[1,1,2,F],  Q[1,2,1,F],  Q[1,3,1,F],  Q[1,2,2,F],
--          PL          ADD          SUB          MUL   044-047
    Q[1,1,1,F],  Q[1,2,0,F],  Q[1,2,0,F],  Q[1,2,0,F],
--        AMUL          DIV         LDIV         SDIV   050-053
    Q[1,2,0,F],  Q[1,2,0,F],  Q[1,3,0,F],  Q[1,2,0,F],
--         NEG          AND           OR          XOR   054-057
    Q[1,1,0,F],  Q[1,2,0,F],  Q[1,2,0,F],  Q[1,2,0,F],
--       SHIFT         PUSH          POP         EXCH   060-063
    Q[1,2,0,F],  Q[1,0,0,F],  Q[0,1,0,F],  Q[2,2,0,F],
--       CATCH          EFC          LFC          SFC   064-067
    Q[0,0,1,F],  Q[0,0,1,F],  Q[0,0,1,F],  Q[0,1,0,F],
--         RET        PORTO        PORTI         KFCB   070-073
    Q[0,0,0,F],  Q[0,1,0,F],  Q[0,0,0,F],  Q[0,0,1,F],
--         BLT         BLTC        ALLOC         FREE   074-077
    Q[0,3,0,T],  Q[0,3,0,T],  Q[1,1,0,F],  Q[0,1,0,F],
--        STOP          LLK       BITBLT      STARTIO   100-103
    Q[0,0,0,F],  Q[1,0,1,F],  Q[0,1,0,T],  Q[0,1,0,F],
--         DST          LST         LSTF           WR   104-107
    Q[0,0,1,F],  Q[0,0,1,F],  Q[0,0,1,F],  Q[0,1,1,F],
--          RR          BRK         BLTR        LINKB   110-113
    Q[1,0,1,F],  Q[0,0,0,F],  Q[0,3,0,T],  Q[0,1,1,F],
--       DESCB       DESCBS      FDESCBS          MAX   114-117
    Q[1,0,1,F],  Q[1,1,1,F],  Q[0,1,1,F],  Q[1,2,0,F],
--         MIN         UMAX         UMIN       STFORB   120-123
    Q[1,2,0,F],  Q[1,2,0,F],  Q[1,2,0,F],  Q[0,2,1,F],
--      STFORW       ENDFOR      UENDFOR        GADRB   124-127
    Q[0,2,1,F],  Q[0,0,0,F],  Q[0,0,0,F],  Q[1,0,1,F],
--       LADRB          DEC          INC          DUP   130-133
    Q[1,0,1,F],  Q[1,1,0,F],  Q[1,1,0,F],  Q[2,1,0,F],
--           J        JDREL         JREL         ADD2   134-137
    Q[0,0,0,F],  Q[0,4,0,T],  Q[0,2,0,T],  Q[1,1,0,F],
--       ADDSB          DBL         DADD         DSUB   140-143
    Q[1,1,1,F],  Q[1,1,0,F],  Q[2,4,0,T],  Q[2,4,0,T],
--       DCOMP       DUCOMP         DMUL         DDIV   144-147
    Q[1,4,0,T],  Q[1,4,0,T],  Q[2,4,0,T],  Q[2,4,0,T],
--       DUDIV         DMOD        DUMOD         IWDC   150-153
    Q[2,4,0,T],  Q[2,4,0,T],  Q[2,4,0,T],  Q[0,0,0,F],
--        DWDC          RFC          RFS          WFS   154-157
    Q[0,0,0,F],  Q[1,1,2,F],  Q[1,2,0,F],  Q[0,3,0,F],
--       NILCK       NILCKL        BNDCK         LINT   160-163
    Q[1,1,0,F],  Q[2,2,0,F],  Q[1,2,0,F],  Q[2,1,0,F],
--          ME          MRE          MXW          MXD   164-167
    Q[1,1,0,T],  Q[1,2,0,T],  Q[0,3,0,T],  Q[0,1,0,T],
--      NOTIFY        BCAST      REQUEUE          MEL   170-173
    Q[0,1,0,T],  Q[0,1,0,T],  Q[0,3,0,T],  Q[1,2,0,T],
--        MREL         MXWL         MXDL      NOTIFYL   174-177
    Q[1,4,0,T],  Q[0,5,0,T],  Q[0,2,0,T],  Q[0,2,0,T],
--      BCASTL     REQUEUEL           RL           WL   200-203
    Q[0,2,0,T],  Q[0,5,0,T],  Q[1,2,1,F],  Q[0,3,1,F],
--         RDL          WDL         RXLL         WXLL   204-207
    Q[2,2,1,F],  Q[0,4,1,F],  Q[1,1,2,F],  Q[0,2,2,F],
--        RXGL         WXGL         RILL         WILL   210-213
    Q[1,1,2,F],  Q[0,2,2,F],  Q[1,0,2,F],  Q[0,1,2,F],
--        RIGL         WIGL        RSTRL        WSTRL   214-217
    Q[1,0,2,F],  Q[0,1,2,F],  Q[1,3,1,F],  Q[0,4,1,F],
--         RFL          WFL         BLTL        BLTCL   220-223
    Q[1,2,2,F],  Q[0,3,2,F],  Q[0,5,0,T],  Q[0,4,0,T],
--        RFSL         WFSL           LP         FADD   224-227
    Q[1,3,0,F],  Q[0,4,0,F],  Q[2,1,0,F],  Q[2,4,0,T],
--        FSUB         FMUL         FDIV        FCOMP   230-233
    Q[2,4,0,T],  Q[2,4,0,T],  Q[2,4,0,T],  Q[1,4,0,T],
--         FSC          FIX        FLOAT         ICDL   234-237
    Q[2,3,0,T],  Q[2,2,0,T],  Q[2,2,0,T],  Q[0,4,1,F],
--        WCDL         GCRT         BLZL                240-243
    Q[0,4,1,F],  Q[1,2,0,F],  Q[2,3,0,F],  Q[0,0,0,F],
--                                                      244-247
    Q[0,0,0,F],  Q[0,0,0,F],  Q[0,0,0,F],  Q[0,0,0,F],
--                                                      250-253
    Q[0,0,0,F],  Q[0,0,0,F],  Q[0,0,0,F],  Q[0,0,0,F],
--                                                      254-257
    Q[0,0,0,F],  Q[0,0,0,F],  Q[0,0,0,F],  Q[0,0,0,F],
--                                                      260-263
    Q[0,0,0,F],  Q[0,0,0,F],  Q[0,0,0,F],  Q[0,0,0,F],
--                                                      264-267
    Q[0,0,0,F],  Q[0,0,0,F],  Q[0,0,0,F],  Q[0,0,0,F],
--                                                      270-273
    Q[0,0,0,F],  Q[0,0,0,F],  Q[0,0,0,F],  Q[0,0,0,F],
--                                                      274-277
    Q[0,0,0,F],  Q[0,0,0,F],  Q[0,0,0,F],  Q[0,0,0,F],
--                                                      300-303
    Q[0,0,0,F],  Q[0,0,0,F],  Q[0,0,0,F],  Q[0,0,0,F],
--                                                      304-307
    Q[0,0,0,F],  Q[0,0,0,F],  Q[0,0,0,F],  Q[0,0,0,F],
--                                                      310-313
    Q[0,0,0,F],  Q[0,0,0,F],  Q[0,0,0,F],  Q[0,0,0,F],
--                                                      314-317
    Q[0,0,0,F],  Q[0,0,0,F],  Q[0,0,0,F],  Q[0,0,0,F],
--                                                      320-323
    Q[0,0,0,F],  Q[0,0,0,F],  Q[0,0,0,F],  Q[0,0,0,F],
--                                                      324-327
    Q[0,0,0,F],  Q[0,0,0,F],  Q[0,0,0,F],  Q[0,0,0,F],
--                                                      330-333
    Q[0,0,0,F],  Q[0,0,0,F],  Q[0,0,0,F],  Q[0,0,0,F],
--                                                      334-337
    Q[0,0,0,F],  Q[0,0,0,F],  Q[0,0,0,F],  Q[0,0,0,F],
--                                                      340-343
    Q[0,0,0,F],  Q[0,0,0,F],  Q[0,0,0,F],  Q[0,0,0,F],
--                                                      344-347
    Q[0,0,0,F],  Q[0,0,0,F],  Q[0,0,0,F],  Q[0,0,0,F],
--                                                      350-353
    Q[0,0,0,F],  Q[0,0,0,F],  Q[0,0,0,F],  Q[0,0,0,F],
--                                                      354-357
    Q[0,0,0,F],  Q[0,0,0,F],  Q[0,0,0,F],  Q[0,0,0,F],
--                                                      360-363
    Q[0,0,0,F],  Q[0,0,0,F],  Q[0,0,0,F],  Q[0,0,0,F],
--                                                      364-367
    Q[0,0,0,F],  Q[0,0,0,F],  Q[0,0,0,F],  Q[0,0,0,F],
--                                                      370-373
    Q[0,0,0,F],  Q[0,0,0,F],  Q[0,0,0,F],  Q[0,0,0,F],
--                                                      374-377
    Q[0,0,0,F],  Q[0,0,0,F],  Q[0,0,0,F],  Q[0,0,0,F]];


  PushEffect: PUBLIC PROC [b: [0..256)] RETURNS [[0..3]] =
    BEGIN
    RETURN [OpParms[b].push]
    END;

  PopEffect: PUBLIC PROC [b: [0..256)] RETURNS [[0..7]] =
    BEGIN
    RETURN [OpParms[b].pop]
    END;


  NumberOfParams: PUBLIC PROC [b: [0..256)] RETURNS [[0..3]] =
    BEGIN
    RETURN [OpParms[b].length]
    END;

  MinimalStack: PUBLIC PROC [b: [0..256)] RETURNS [BOOLEAN] =
    BEGIN
    RETURN [OpParms[b].mark]
    END;

  END.