home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / alib / d1xx / d186 / a68k.lha / A68k / A68kdef.h < prev    next >
C/C++ Source or Header  |  1989-02-26  |  8KB  |  234 lines

  1. /*------------------------------------------------------------------*/
  2. /*                                    */
  3. /*              MC68000 Cross Assembler                */
  4. /*                                    */
  5. /*           Copyright (c) 1985 by Brian R. Anderson            */
  6. /*                                    */
  7. /*        #define    statements - January 6,    1989            */
  8. /*                                    */
  9. /*   This program may be copied    for personal, non-commercial use    */
  10. /*   only, provided that the above copyright notice is included        */
  11. /*   on    all copies of the source code.    Copying    for any    other use   */
  12. /*   without the consent of the    author is prohibited.            */
  13. /*                                    */
  14. /*------------------------------------------------------------------*/
  15. /*                                    */
  16. /*        Originally published (in Modula-2) in            */
  17. /*        Dr.    Dobb's Journal, April, May, and June 1986.          */
  18. /*                                    */
  19. /*     AmigaDOS conversion copyright 1989 by Charlie Gibbs.        */
  20. /*                                    */
  21. /*------------------------------------------------------------------*/
  22.  
  23. #ifdef AZTEC_C
  24. #include <ctype.h>
  25. #endif
  26. extern char *malloc();
  27. extern int  open(), creat(), read(), write(), close(), unlink();
  28. extern long lseek();
  29.  
  30. #define    TRUE  1
  31. #define    FALSE 0
  32. #define    NODEF 32767    /* High    line number for    undefined symbols */
  33.  
  34. /* Assembler configuration parameters */
  35. #define    MAXLINE      128    /* Longest source line */
  36. #define    MAXFN      41    /* Maximum length of file name */
  37. #define    MAXSREC      16    /* Maximum S-record data length    */
  38. #define    MAXREF      4    /* Number of line numbers in reference entry */
  39. #define    DEFHASH      2047    /* Default number of elements in hash table */
  40. #define    DEFHEAP2  1024    /* Default size    for secondary heap */
  41. #define    INCSKSIZ  2048    /* Size    of INCLUDE skip    table */
  42. #ifdef MSDOS
  43. #define    CHUNKSIZE 2048    /* Memory chunks for Itty Bitty    Memories */
  44. #else
  45. #define    CHUNKSIZE 8192    /* Size    of memory chunks allocated for tables */
  46. #endif
  47. #define    BUFFSIZE  2048    /* File    buffer size */
  48. #define    ObjMAX      32    /* Max.    hex object code    digits in listing */
  49.  
  50. /* Hunk    number definitions */
  51. #define    HunkNone 0    /* Not in a hunk */
  52. #define    HunkUnit 999
  53. #define    HunkName 1000
  54. #define    HunkCode 1001
  55. #define    HunkData 1002
  56. #define    HunkBSS     1003
  57. #define    HunkR32     1004
  58. #define    HunkR16     1005
  59. #define    HunkR8     1006
  60. #define    HunkExt     1007
  61. #define    HunkSym     1008
  62. #define    HunkDbg     1009
  63. #define    HunkEnd     1010
  64.  
  65. #define    MEMF_FAST 0x80000000L    /* Hunk    must load in FAST memory */
  66. #define    MEMF_CHIP 0x40000000L    /* Hunk    must load in CHIP memory */
  67.  
  68. /* Hunk    numbers    denoting special symbol    attributes */
  69. #define    ABSHUNK    32767    /* Absolute */
  70.  
  71. /* Addressing mode flag    values */
  72. #define    DReg   1   /* Data Register */
  73. #define    ARDir  2   /* Address Register Direct */
  74. #define    ARInd  3   /* Address Register Indirect    */
  75. #define    ARPost 4   /* Address Register with Post-Increment */
  76. #define    ARPre  5   /* Address Register with Pre-Decrement */
  77. #define    ARDisp 6   /* Address Register with Displacement */
  78. #define    ARDisX 7   /* Address Register with Disp. & Index */
  79. #define    AbsW   8   /* Absolute Short (16-bit Address) */
  80. #define    AbsL   9   /* Absolute Long (32-bit Address) */
  81. #define    PCDisp 10  /* Program Counter Relative,    with Displacement */
  82. #define    PCDisX 11  /* Program Counter Relative,    with Disp. & Index */
  83. #define    Imm    12  /* Immediate    */
  84. #define    MultiM 13  /* Multiple Register    Move */
  85. #define    SR     14  /* Status Register */
  86. #define    CCR    15  /* Condition    Code Register */
  87. #define    USP    16  /* User's Stack Pointer */
  88. #define    Null   0   /* Error Condition, or Operand missing */
  89.  
  90. #define    X0   0       /* Register types */
  91. #define    Dreg 1
  92. #define    Areg 2
  93.  
  94. #define    S0   0       /* Size types */
  95. #define    Byte 1
  96. #define    Word 2
  97. #define    S3   3
  98. #define    Long 4
  99.  
  100. #define    CMPM  0xB108
  101. #define    JMP   0x4EC0
  102. #define    JSR   0x4E80
  103. #define    LEA   0x41C0
  104. #define    LINK  0x4E50
  105. #define    NOP   0x4E71
  106. #define    PEA   0x4840
  107. #define    STOP  0x4E72
  108. #define    SWAP  0x4840
  109. #define    UNLK  0x4E58
  110.  
  111. #define    None     0    /* Assembler directives    */
  112. #define    Org     1
  113. #define    DC     2
  114. #define    DS     3
  115. #define    Even     4
  116. #define    End     5
  117. #define    Cnop     6
  118. #define    Section     7
  119. #define    CSeg     8
  120. #define    DSeg     9
  121. #define    BSS    10
  122. #define    Idnt    11
  123. #define    DCB    12
  124. #define    Near    13
  125. #define    Far    14
  126. #define    BadMac    15
  127. #define    SkipDir    16    /* Skippable INCLUDE directives    start here */
  128. #define    Equ    16
  129. #define    Public    17
  130. #define    Xdef    18
  131. #define    Xref    19
  132. #define    Page    20
  133. #define    DoList    21
  134. #define    NoList    22
  135. #define    Space    23
  136. #define    Title    24
  137. #define    Include    25
  138. #define    Set    26
  139. #define    Macro    27
  140. #define    IfEQ    28
  141. #define    IfNE    29
  142. #define    IfGT    30
  143. #define    IfGE    31
  144. #define    IfLT    32
  145. #define    IfLE    33
  146. #define    IfC    34
  147. #define    IfNC    35
  148. #define    IfD    36
  149. #define    IfND    37
  150. #define    EndC    38
  151. #define    Equr    39
  152. #define    Reg    40
  153. #define    MacCall    41
  154.  
  155. /* BITSETs of the modes    MISSING    from effective address modes  */
  156. #define     ea 0x0000   /*    Effective addressing - all modes */
  157. #define    dea 0x0002   /*    Data effective addressing     */
  158. #define    mea 0x0003   /*    Memory effective addressing     */
  159. #define    cea 0x081B   /*    Control    effective addressing     */
  160. #define    aea 0x0E00   /*    Alterable effective addressing     */
  161. #define    xxx 0xE000   /*    extra modes: CCR/SR/USP         */
  162.  
  163. #define    IN &        /* Simulated BITSET test */
  164.  
  165. /* AdrModeA bit    definitions */
  166. #define    RegMem3    0x0001    /* 0 = register, 1 = memory */
  167. #define    Ry02    0x0002    /* Register Rx - bits 0-2 */
  168. #define    Rx911    0x0004    /* Register Ry - bits 9-11 */
  169. #define    Data911    0x0008    /* Immediate data - bits 9-11 */
  170. #define    CntR911    0x0010    /* Count register or immediate data */
  171. #define    Brnch    0x0020    /* Relative branch */
  172. #define    DecBr    0x0040    /* Decrement and branch    */
  173. #define    Data03    0x0080    /* TRAP    vector in 0-3 */
  174. #define    Data07    0x0100    /* Data    in 0-7 (MOVEQ) */
  175. #define    OpM68D    0x0200    /* Data    register in 6-8    */
  176. #define    OpM68A    0x0400    /* Address register in 6-8 (ADDA/CMPA/SUBA) */
  177. #define    OpM68C    0x0800    /* CMP (Compare) */
  178. #define    OpM68X    0x1000    /* EOR (Exclusive or) */
  179. #define    OpM68S    0x2000    /* EXT (Sign extension)    */
  180. #define    OpM68R    0x4000    /* MOVEP (Register/memory) */
  181. #define    OpM37    0x8000    /* EXG (Exchange registers) */
  182. #define    TwoOpsA    0xDF4D    /* Two operands    are required */
  183.  
  184. /* AdrModeB bit    definitions */
  185. #define    Bit811    0x0001    /* Bit operations - bits 8-11 as switch    */
  186. #define    Size67    0x0002    /* 00 =    byte, 01 = word, 10 = long */
  187. #define    Size6    0x0004    /* 0 = word, 1 = long */
  188. #define    Sz1213A    0x0008    /* 01 =    byte, 11 = word, 10 = long */
  189. #define    Sz1213    0x0010    /* 11 =    word, 10 = long    */
  190. #define    Exten    0x0020    /* Opcode extension is required    */
  191. #define    EA05a    0x0040    /* Effective address - all */
  192. #define    EA05b    0x0080    /* All except ARDir */
  193. #define    EA05c    0x0100    /* All except ARDIR and    Imm */
  194. #define    EA05d    0x0200    /* All except PCDisp, PCDisx, and Imm */
  195. #define    EA05e    0x0400    /* All except ARDir, PCDisp, PCDisx, and Imm */
  196. #define    EA05f    0x0800    /* All except Dreg, ARDir, ARPost, ARPre, Imm */
  197. #define    EA05x    0x1000    /* Dual    mode - AND/OR */
  198. #define    EA05y    0x2000    /* Dual    mode - ADD/SUB */
  199. #define    EA05z    0x4000    /* Dual    mode - MOVEM */
  200. #define    EA611    0x8000    /* Eff.    Adr. in    6-11 (used only    by MOVE) */
  201. #define    TwoOpsB    0xF3DD    /* Two operands    are required */
  202. #define    ImmMode    0x0422    /* Immediate instructions */
  203. #define    SrcPC    0xF8C0    /* Source operand may be PCDisp    */
  204.  
  205. #define    Dummy     0    /* Error codes */
  206. #define    AlignErr 1
  207. #define    NoCode     2
  208. #define    SymDup     3
  209. #define    Undef     4
  210. #define    ModeErr     5
  211. #define    OperErr     6
  212. #define    BraErr     7
  213. #define    AddrErr     8
  214. #define    SizeErr     9
  215. #define    EndErr     10
  216. #define    AbsReq     11
  217. #define    RelErr     12
  218. #define    NoIncl     13
  219. #define    FwdRef     14
  220. #define    NotSFmt     15
  221. #define    NeedLab     16
  222. #define    Phase     17
  223. #define    NoENDM     18
  224. #define    NoENDC     19
  225. #define    ManyENDC 20
  226. #define    DCOflo     21
  227. #define    ManySect 22
  228. #define    DupMac     23
  229. #define    MultLab     24
  230. #define    NoStrEnd 25
  231. #define    BccSDsp0 26
  232.  
  233. #define    ERRMAX 10    /* Size    of error message table */
  234.