home *** CD-ROM | disk | FTP | other *** search
/ Crawly Crypt Collection 1 / crawlyvol1.bin / program / compiler / m2posx14 / src / portab.dpp < prev    next >
Encoding:
Modula Definition  |  1994-04-19  |  12.5 KB  |  542 lines

  1. DEFINITION MODULE PORTAB;
  2. __DEF_SWITCHES__
  3.  
  4. (*
  5. Yet another system-dependent Module.
  6.  
  7. UK __DATE__ __TIME__
  8. modified by hk
  9. *)
  10.  
  11.  
  12. #ifdef FTLM2
  13. FROM SYSTEM IMPORT BYTE,WORD,LONGWORD,ADDRESS;
  14. #else
  15. IMPORT SYSTEM;
  16. #endif
  17.  
  18.  
  19. (* fixed Types *)
  20.  
  21. TYPE WORDSETRANGE = [0..15];
  22.  
  23. #if (defined LPRM2)
  24. CONST MINUNSIGNED = MIN(LONGCARD);
  25.       MAXUNSIGNED = MAX(LONGCARD);
  26.  
  27.       MINSIGNED = MIN(LONGINT);
  28.       MAXSIGNED = MAX(LONGINT);
  29.  
  30.       MINUNSIGNEDWORD = MIN(CARDINAL);
  31.       MAXUNSIGNEDWORD = MAX(CARDINAL);
  32.  
  33.       MINSIGNEDWORD = MIN(INTEGER);
  34.       MAXSIGNEDWORD = MAX(INTEGER);
  35.  
  36.       MINUNSIGNEDLONG = MIN(LONGCARD);
  37.       MAXUNSIGNEDLONG = MAX(LONGCARD);
  38.  
  39.       MINSIGNEDLONG = MIN(LONGINT);
  40.       MAXSIGNEDLONG = MAX(LONGINT);
  41.  
  42.       MINCARD = MIN(CARDINAL);
  43.       MAXCARD = MAX(CARDINAL);
  44.  
  45.       MININT = MIN(INTEGER);
  46.       MAXINT = MAX(INTEGER);
  47.  
  48.       MINCHAR = MIN(CHAR);
  49.       MAXCHAR = MAX(CHAR);
  50.  
  51. TYPE UNSIGNED = LONGCARD;
  52.      SIGNED   = LONGINT;
  53.  
  54.      UNSIGNEDBYTE = SYSTEM.BYTE;
  55.      SIGNEDBYTE   = SYSTEM.BYTE;
  56.      ANYBYTE      = SYSTEM.BYTE;
  57.  
  58.      UNSIGNEDWORD = CARDINAL;
  59.      SIGNEDWORD   = INTEGER;
  60.      ANYWORD      = SYSTEM.WORD;
  61.  
  62.      UNSIGNEDLONG = LONGCARD;
  63.      SIGNEDLONG   = LONGINT;
  64.      ANYLONG      = LONGINT;
  65.  
  66.      BYTESET = SYSTEM.BYTE;
  67.      WORDSET = SET OF WORDSETRANGE;
  68.      LONGSET = ANYLONG;
  69. #elif (defined SPCM2)
  70. CONST MINUNSIGNED = MIN(LONGCARD);
  71.       MAXUNSIGNED = MAX(LONGCARD);
  72.  
  73.       MINSIGNED = MIN(LONGINT);
  74.       MAXSIGNED = MAX(LONGINT);
  75.  
  76.       MINUNSIGNEDWORD = MIN(CARDINAL);
  77.       MAXUNSIGNEDWORD = MAX(CARDINAL);
  78.  
  79.       MINSIGNEDWORD = MIN(INTEGER);
  80.       MAXSIGNEDWORD = MAX(INTEGER);
  81.  
  82.       MINUNSIGNEDLONG = MIN(LONGCARD);
  83.       MAXUNSIGNEDLONG = MAX(LONGCARD);
  84.  
  85.       MINSIGNEDLONG = MIN(LONGINT);
  86.       MAXSIGNEDLONG = MAX(LONGINT);
  87.  
  88.       MINCARD = MIN(CARDINAL);
  89.       MAXCARD = MAX(CARDINAL);
  90.  
  91.       MININT = MIN(INTEGER);
  92.       MAXINT = MAX(INTEGER);
  93.  
  94.       MINCHAR = MIN(CHAR);
  95.       MAXCHAR = MAX(CHAR);
  96.  
  97. TYPE UNSIGNED = LONGCARD;
  98.      SIGNED   = LONGINT;
  99.  
  100.      UNSIGNEDBYTE = SYSTEM.BYTE;
  101.      SIGNEDBYTE   = SYSTEM.BYTE;
  102.      ANYBYTE      = SYSTEM.BYTE;
  103.  
  104.      UNSIGNEDWORD = CARDINAL;
  105.      SIGNEDWORD   = INTEGER;
  106.      ANYWORD      = SYSTEM.WORD;
  107.  
  108.      UNSIGNEDLONG = LONGCARD;
  109.      SIGNEDLONG   = LONGINT;
  110.      ANYLONG      = LONGINT;
  111.  
  112.      BYTESET = SYSTEM.BYTE;
  113.      WORDSET = SET OF WORDSETRANGE;
  114.      LONGSET = SET OF [0..31];
  115. #elif (defined HM2) || (defined XHM2)
  116. CONST MINUNSIGNED = MIN(LONGCARD);
  117.       MAXUNSIGNED = MAX(LONGCARD);
  118.  
  119.       MINSIGNED = MIN(LONGINT);
  120.       MAXSIGNED = MAX(LONGINT);
  121.  
  122.       MINUNSIGNEDWORD = MIN(SHORTCARD);
  123.       MAXUNSIGNEDWORD = MAX(SHORTCARD);
  124.  
  125.       MINSIGNEDWORD = MIN(SHORTINT);
  126.       MAXSIGNEDWORD = MAX(SHORTINT);
  127.  
  128.       MINUNSIGNEDLONG = MIN(LONGCARD);
  129.       MAXUNSIGNEDLONG = MAX(LONGCARD);
  130.  
  131.       MINSIGNEDLONG = MIN(LONGINT);
  132.       MAXSIGNEDLONG = MAX(LONGINT);
  133.  
  134.       MINCARD = MIN(CARDINAL);
  135.       MAXCARD = MAX(CARDINAL);
  136.  
  137.       MININT = MIN(INTEGER);
  138.       MAXINT = MAX(INTEGER);
  139.  
  140.       MINCHAR = MIN(CHAR);
  141.       MAXCHAR = MAX(CHAR);
  142.  
  143. TYPE UNSIGNED = LONGCARD;
  144.      SIGNED   = LONGINT;
  145.  
  146.      UNSIGNEDBYTE = [0..255];
  147.      SIGNEDBYTE   = [-128..127];
  148.      ANYBYTE      = SYSTEM.BYTE;
  149.  
  150.      UNSIGNEDWORD = SHORTCARD;
  151.      SIGNEDWORD   = SHORTINT;
  152.      ANYWORD      = SYSTEM.WORD;
  153.  
  154.      UNSIGNEDLONG = LONGCARD;
  155.      SIGNEDLONG   = LONGINT;
  156.      ANYLONG      = SYSTEM.LONG;
  157.  
  158.      BYTESET = PACKEDSET OF [0..7];
  159.      WORDSET = PACKEDSET OF WORDSETRANGE;
  160.      LONGSET = PACKEDSET OF [0..31];
  161. #elif (defined MM2)
  162. CONST MINUNSIGNED = MIN(LONGCARD);
  163.       MAXUNSIGNED = MAX(LONGCARD);
  164.  
  165.       MINSIGNED = MIN(LONGINT);
  166.       MAXSIGNED = MAX(LONGINT);
  167.  
  168.       MINUNSIGNEDWORD = MIN(SHORTCARD);
  169.       MAXUNSIGNEDWORD = MAX(SHORTCARD);
  170.  
  171.       MINSIGNEDWORD = MIN(SHORTINT);
  172.       MAXSIGNEDWORD = MAX(SHORTINT);
  173.  
  174.       MINUNSIGNEDLONG = MIN(LONGCARD);
  175.       MAXUNSIGNEDLONG = MAX(LONGCARD);
  176.  
  177.       MINSIGNEDLONG = MIN(LONGINT);
  178.       MAXSIGNEDLONG = MAX(LONGINT);
  179.  
  180.       MINCARD = MIN(CARDINAL);
  181.       MAXCARD = MAX(CARDINAL);
  182.  
  183.       MININT = MIN(INTEGER);
  184.       MAXINT = MAX(INTEGER);
  185.  
  186.       MINCHAR = MIN(CHAR);
  187.       MAXCHAR = MAX(CHAR);
  188.  
  189. TYPE UNSIGNED = LONGCARD;
  190.      SIGNED   = LONGINT;
  191.  
  192.      UNSIGNEDBYTE = SYSTEM.BYTE;
  193.      SIGNEDBYTE   = SYSTEM.BYTE;
  194.      ANYBYTE      = SYSTEM.BYTE;
  195.  
  196.      UNSIGNEDWORD = SHORTCARD;
  197.      SIGNEDWORD   = SHORTINT;
  198.      ANYWORD      = SYSTEM.WORD;
  199.  
  200.      UNSIGNEDLONG = LONGCARD;
  201.      SIGNEDLONG   = LONGINT;
  202.      ANYLONG      = SYSTEM.LONGWORD;
  203.  
  204.      BYTESET = SET OF SYSTEM.BITNUM[0..7];
  205.      WORDSET = SET OF SYSTEM.BITNUM[0..15];
  206.      LONGSET = SET OF SYSTEM.BITNUM[0..31];
  207. #elif (defined MSM2)
  208. CONST MINUNSIGNED = MIN(LONGCARD);
  209.       MAXUNSIGNED = MAX(LONGCARD);
  210.  
  211.       MINSIGNED = MIN(LONGINT);
  212.       MAXSIGNED = MAX(LONGINT);
  213.  
  214.       MINUNSIGNEDWORD = MIN(CARDINAL);
  215.       MAXUNSIGNEDWORD = MAX(CARDINAL);
  216.  
  217.       MINSIGNEDWORD = MIN(INTEGER);
  218.       MAXSIGNEDWORD = MAX(INTEGER);
  219.  
  220.       MINUNSIGNEDLONG = MIN(LONGCARD);
  221.       MAXUNSIGNEDLONG = MAX(LONGCARD);
  222.  
  223.       MINSIGNEDLONG = MIN(LONGINT);
  224.       MAXSIGNEDLONG = MAX(LONGINT);
  225.  
  226.       MINCARD = MIN(CARDINAL);
  227.       MAXCARD = MAX(CARDINAL);
  228.  
  229.       MININT = MIN(INTEGER);
  230.       MAXINT = MAX(INTEGER);
  231.  
  232.       MINCHAR = MIN(CHAR);
  233.       MAXCHAR = MAX(CHAR);
  234.  
  235. TYPE UNSIGNED = LONGCARD;
  236.      SIGNED   = LONGINT;
  237.  
  238.      (*
  239.      UNSIGNEDBYTE = CHAR;
  240.      SIGNEDBYTE   = CHAR;
  241.      ANYBYTE      = CHAR;
  242.  
  243.      UNSIGNEDWORD = CARDINAL;
  244.      SIGNEDWORD   = INTEGER;
  245.      ANYWORD      = WORD;
  246.  
  247.      UNSIGNEDLONG = LONGCARD;
  248.      SIGNEDLONG   = LONGINT;
  249.      ANYLONG      = LONG;
  250.  
  251.      BYTESET = CHAR;
  252.      *)
  253.      WORDSET = SET OF WORDSETRANGE;
  254.      LONGSET = SET OF [0..31];
  255. #elif (defined FSTM2)
  256. CONST MINUNSIGNED = MIN(LONGCARD);
  257.       MAXUNSIGNED = MAX(LONGCARD);
  258.  
  259.       MINSIGNED = MIN(LONGINT);
  260.       MAXSIGNED = MAX(LONGINT);
  261.  
  262. TYPE UNSIGNED = LONGCARD;
  263.      SIGNED   = LONGINT;
  264.  
  265.      UNSIGNEDBYTE = SYSTEM.BYTE;
  266.      SIGNEDBYTE   = SYSTEM.BYTE;
  267.      ANYBYTE      = SYSTEM.BYTE;
  268.  
  269.      UNSIGNEDWORD = CARDINAL;
  270.      SIGNEDWORD   = INTEGER;
  271.      ANYWORD      = SYSTEM.WORD;
  272.  
  273.      UNSIGNEDLONG = LONGCARD;
  274.      SIGNEDLONG   = LONGINT;
  275.      ANYLONG      = LONGINT;
  276.  
  277.      BYTESET = SYSTEM.BYTE;
  278.      WORDSET = SET OF WORDSETRANGE;
  279.      LONGSET = SET OF [0..31];
  280. #elif (defined SDSM2)
  281. (*
  282. CONST MINUNSIGNED = MIN(LONGCARD);
  283.       MAXUNSIGNED = MAX(LONGCARD);
  284.  
  285.       MINSIGNED = MIN(LONGINT);
  286.       MAXSIGNED = MAX(LONGINT);
  287. *)
  288. TYPE UNSIGNED = LONGCARD;
  289.      SIGNED   = LONGINT;
  290.  
  291.      UNSIGNEDBYTE = SYSTEM.BYTE;
  292.      SIGNEDBYTE   = SYSTEM.BYTE;
  293.      ANYBYTE      = SYSTEM.BYTE;
  294.  
  295.      UNSIGNEDWORD = CARDINAL;
  296.      SIGNEDWORD   = INTEGER;
  297.      ANYWORD      = SYSTEM.WORD;
  298.  
  299.      UNSIGNEDLONG = LONGINT; (* no LONGCARD *)
  300.      SIGNEDLONG   = LONGINT;
  301.      ANYLONG      = LONGINT;
  302.  
  303.      BYTESET = SYSTEM.BYTE;
  304.      WORDSET = SET OF [0..15];
  305.      LONGSET = ANYLONG;
  306. #elif (defined ANAM2) || (defined XAM2)
  307. CONST MINUNSIGNED = MIN(CARDINAL);
  308.       MAXUNSIGNED = MAX(CARDINAL);
  309.  
  310.       MINSIGNED = MIN(INTEGER);
  311.       MAXSIGNED = MAX(INTEGER);
  312.  
  313. TYPE UNSIGNED = CARDINAL;
  314.      SIGNED   = INTEGER;
  315.  
  316.      UNSIGNEDBYTE = SYSTEM.BYTE;
  317.      SIGNEDBYTE   = SYSTEM.BYTE;
  318.      ANYBYTE      = SYSTEM.BYTE;
  319.  
  320.      UNSIGNEDWORD = SYSTEM.SHORTWORD;
  321.      SIGNEDWORD   = SYSTEM.SHORTWORD;
  322.      ANYWORD      = SYSTEM.SHORTWORD;
  323.  
  324.      UNSIGNEDLONG = CARDINAL;
  325.      SIGNEDLONG   = INTEGER;
  326.      ANYLONG      = SYSTEM.WORD;
  327.  
  328.      BYTESET = SET OF [0..7];
  329.      WORDSET = SET OF WORDSETRANGE;
  330.      LONGSET = SET OF [0..31];
  331. #elif (defined TDIM2)
  332. CONST MINUNSIGNED = MIN(LONGCARD);
  333.       MAXUNSIGNED = MAX(LONGCARD);
  334.  
  335.       MINSIGNED = MIN(LONGINT);
  336.       MAXSIGNED = MAX(LONGINT);
  337.  
  338.       MINUNSIGNEDWORD = MIN(CARDINAL);
  339.       MAXUNSIGNEDWORD = MAX(CARDINAL);
  340.  
  341.       MINSIGNEDWORD = MIN(INTEGER);
  342.       MAXSIGNEDWORD = MAX(INTEGER);
  343.  
  344.       MINUNSIGNEDLONG = MIN(LONGCARD);
  345.       MAXUNSIGNEDLONG = MAX(LONGCARD);
  346.  
  347.       MINSIGNEDLONG = MIN(LONGINT);
  348.       MAXSIGNEDLONG = MAX(LONGINT);
  349.  
  350.       MINCARD = MIN(CARDINAL);
  351.       MAXCARD = MAX(CARDINAL);
  352.  
  353.       MININT = MIN(INTEGER);
  354.       MAXINT = MAX(INTEGER);
  355.  
  356.       MINCHAR = MIN(CHAR);
  357.       MAXCHAR = MAX(CHAR);
  358.  
  359. TYPE UNSIGNED = LONGCARD;
  360.      SIGNED   = LONGINT;
  361.  
  362.      UNSIGNEDBYTE = SYSTEM.BYTE;
  363.      SIGNEDBYTE   = SYSTEM.BYTE;
  364.      ANYBYTE      = SYSTEM.BYTE;
  365.  
  366.      UNSIGNEDWORD = CARDINAL;
  367.      SIGNEDWORD   = INTEGER;
  368.      ANYWORD      = SYSTEM.WORD;
  369.  
  370.      UNSIGNEDLONG = LONGCARD;
  371.      SIGNEDLONG   = LONGINT;
  372.      ANYLONG      = SYSTEM.LONGWORD;
  373.  
  374.      BYTESET = SET OF [0..7];
  375.      WORDSET = SET OF WORDSETRANGE;
  376.      LONGSET = SET OF [0..31];
  377. #elif (defined FTLM2)
  378. CONST MINUNSIGNED = MIN(LONGCARD);
  379.       MAXUNSIGNED = MAX(LONGCARD);
  380.  
  381.       MINSIGNED = MIN(LONGINT);
  382.       MAXSIGNED = MAX(LONGINT);
  383.  
  384.       MINUNSIGNEDWORD = MIN(CARDINAL);
  385.       MAXUNSIGNEDWORD = MAX(CARDINAL);
  386.  
  387.       MINSIGNEDWORD = MIN(INTEGER);
  388.       MAXSIGNEDWORD = MAX(INTEGER);
  389.  
  390.       MINUNSIGNEDLONG = MIN(LONGCARD);
  391.       MAXUNSIGNEDLONG = MAX(LONGCARD);
  392.  
  393.       MINSIGNEDLONG = MIN(LONGINT);
  394.       MAXSIGNEDLONG = MAX(LONGINT);
  395.  
  396.       MINCARD = MIN(CARDINAL);
  397.       MAXCARD = MAX(CARDINAL);
  398.  
  399.       MININT = MIN(INTEGER);
  400.       MAXINT = MAX(INTEGER);
  401.  
  402.       MINCHAR = MIN(CHAR);
  403.       MAXCHAR = MAX(CHAR);
  404.  
  405. TYPE UNSIGNED = LONGCARD;
  406.      SIGNED   = LONGINT;
  407.  
  408.      UNSIGNEDBYTE = BYTE;
  409.      SIGNEDBYTE   = BYTE;
  410.      ANYBYTE      = BYTE;
  411.  
  412.      UNSIGNEDWORD = CARDINAL;
  413.      SIGNEDWORD   = INTEGER;
  414.      ANYWORD      = WORD;
  415.  
  416.      UNSIGNEDLONG = LONGCARD;
  417.      SIGNEDLONG   = LONGINT;
  418.      ANYLONG      = LONGWORD;
  419.  
  420.      BYTESET = SET OF [0..7];
  421.      WORDSET = SET OF WORDSETRANGE;
  422.      LONGSET = SET OF [0..31];
  423. #elif (defined LM2)
  424. CONST MINUNSIGNED = MIN(LONGCARD);
  425.       MAXUNSIGNED = MAX(LONGCARD);
  426.  
  427.       MINSIGNED = MIN(LONGINT);
  428.       MAXSIGNED = MAX(LONGINT);
  429.  
  430. TYPE UNSIGNED = LONGCARD;
  431.      SIGNED   = LONGINT;
  432.  
  433.      UNSIGNEDBYTE = SYSTEM.BYTE;
  434.      SIGNEDBYTE   = SYSTEM.BYTE;
  435.      ANYBYTE      = SYSTEM.BYTE;
  436.  
  437.      UNSIGNEDWORD = CARDINAL;
  438.      SIGNEDWORD   = INTEGER;
  439.      ANYWORD      = SYSTEM.WORD;
  440.  
  441.      UNSIGNEDLONG = LONGINT;
  442.      SIGNEDLONG   = LONGINT; (* no LONGCARD *)
  443.      ANYLONG      = LONGINT;
  444.  
  445.      BYTESET = SET OF [0..7];
  446.      WORDSET = SET OF WORDSETRANGE;
  447.      LONGSET = SET OF [0..31];
  448. #elif (defined TSM2_1) || (defined TSM2_2)
  449. CONST MINUNSIGNED = MIN(LONGCARD);
  450.       MAXUNSIGNED = MAX(LONGCARD);
  451.  
  452.       MINSIGNED = MIN(LONGINT);
  453.       MAXSIGNED = MAX(LONGINT);
  454.  
  455. TYPE UNSIGNED = LONGCARD;
  456.      SIGNED   = LONGINT;
  457.  
  458.      UNSIGNEDBYTE = SHORTCARD;
  459.      SIGNEDBYTE   = SHORTINT;
  460.      ANYBYTE      = SYSTEM.BYTE;
  461.  
  462.      UNSIGNEDWORD = CARDINAL;
  463.      SIGNEDWORD   = INTEGER;
  464.      ANYWORD      = SYSTEM.WORD;
  465.  
  466.      UNSIGNEDLONG = LONGCARD;
  467.      SIGNEDLONG   = LONGINT;
  468.      ANYLONG      = SYSTEM.LONGWORD;
  469.  
  470.      BYTESET = SET OF [SHORTCARD(0)..SHORTCARD(7)];
  471.      WORDSET = SET OF WORDSETRANGE;
  472.      LONGSET = SET OF [0..31];
  473. #elif (defined GPM2)
  474. CONST MINUNSIGNED = MIN(CARDINAL);
  475.       MAXUNSIGNED = MAX(CARDINAL);
  476.  
  477.       MINSIGNED = MIN(INTEGER);
  478.       MAXSIGNED = MAX(INTEGER);
  479.  
  480. TYPE UNSIGNED = CARDINAL;
  481.      SIGNED   = INTEGER;
  482.  
  483.      UNSIGNEDBYTE = [0..255];
  484.      SIGNEDBYTE   = [-128..127];
  485.      ANYBYTE      = SYSTEM.BYTE;
  486.  
  487.      UNSIGNEDWORD = [0..65535];
  488.      SIGNEDWORD   = [-32768..32767];
  489.      ANYWORD      = SIGNEDWORD;
  490.  
  491.      UNSIGNEDLONG = CARDINAL;
  492.      SIGNEDLONG   = INTEGER;
  493.      ANYLONG      = SYSTEM.WORD;
  494.  
  495.      BYTESET = SET OF ANYBYTE;
  496.      WORDSET = SET OF ANYWORD;
  497.      LONGSET = SET OF [0..31];
  498. #endif
  499.  
  500. (* for open Arrays *)
  501.  
  502. #if (defined FSTM2)  || (defined ANAM2) || (defined LPRM2)  || \
  503.     (defined SPCM2)  || (defined HM2)   || (defined TSM2_1) || \
  504.     (defined TSM2_2) || (defined LM2)   || (defined TDIM2)  || \
  505.     (defined GPM2)
  506. TYPE ANYTYPE = SYSTEM.BYTE;
  507. #elif (defined FTLM2)
  508. TYPE ANYTYPE = BYTE;
  509. #elif (defined ISOM2) || (defined MM2)
  510. TYPE ANYTYPE = SYSTEM.LOC;
  511. #else
  512. TYPE ANYTYPE = SYSTEM.WORD;
  513. #endif
  514.  
  515. (* avoiding SYSTEM.ADDRESS *)
  516.  
  517. #ifdef FTLM2
  518. TYPE ANYPOINTER = ADDRESS;
  519. #else
  520. TYPE ANYPOINTER = SYSTEM.ADDRESS;
  521. #endif
  522.  
  523. (* all Purpose Procedure Type *)
  524.  
  525. TYPE ANYPROC = PROCEDURE(ANYPOINTER);
  526.  
  527. (* C-compatible NIL *)
  528.  
  529. #if (defined TDIM2)
  530. CONST NULL = SYSTEM.NULL;
  531. #elif (defined LM2)
  532. CONST NULL = 0H:0H;
  533. #elif (defined FTLM2)
  534. CONST NULL = ADDRESS(LONGCARD(0));
  535. #elif (defined FSTM2)
  536. VAR NULL: ANYPOINTER;
  537. #else
  538. CONST NULL = NIL;
  539. #endif
  540.  
  541. END PORTAB.
  542.