home *** CD-ROM | disk | FTP | other *** search
/ Amiga Developer CD v1.2 / amidev_cd_12.iso / inc&ad2.0 / includes / exec / initializers.i < prev    next >
Text File  |  1992-09-01  |  1KB  |  73 lines

  1.     IFND    EXEC_INITIALIZERS_I
  2. EXEC_INITIALIZERS_I    SET    1
  3. **
  4. **    $Filename: exec/initializers.i $
  5. **    $Release: 2.04 Includes, V37.4 $
  6. **    $Revision: 36.5 $
  7. **    $Date: 90/05/10 $
  8. **
  9. **    Macros for creating InitStruct() tables
  10. **
  11. **    (C) Copyright 1985-1991 Commodore-Amiga, Inc.
  12. **        All Rights Reserved
  13. **
  14.  
  15. INITBYTE    MACRO    ; &offset,&value
  16.         IFLE    (\1)-255    ;If offset <=255
  17.         DC.B    $a0,\1        ;use byte offset
  18.         DC.B    \2,0
  19.         MEXIT            ;exit early
  20.         ENDC
  21.         DC.B    $e0,0
  22.         DC.W    \1
  23.         DC.B    \2,0
  24.         ENDM
  25.  
  26. INITWORD    MACRO    ; &offset,&value
  27.         IFLE    (\1)-255    ;If offset <=255
  28.         DC.B    $90,\1        ;use byte offset
  29.         DC.W    \2
  30.         MEXIT            ;exit early
  31.         ENDC
  32.         DC.B    $d0,0
  33.         DC.W    \1
  34.         DC.W    \2
  35.         ENDM
  36.  
  37. INITLONG    MACRO    ; &offset,&value
  38.         IFLE    (\1)-255    ;If offset <=255
  39.         DC.B    $80,\1        ;use byte offset
  40.         DC.L    \2
  41.         MEXIT            ;exit early
  42.         ENDC
  43.         DC.B    $c0,0
  44.         DC.W    \1
  45.         DC.L    \2
  46.         ENDM
  47.  
  48. ;size=source size 0=long, 1=word, 2=byte, 3=illegal.
  49. ;offset=offset from memory base to put data
  50. ;value=unused
  51. ;count=number of source items to copy, minus one
  52. ;follow this macro with the proper sized data (dc.b,dc.w,dc.l,etc.)
  53. INITSTRUCT    MACRO    ; &size,&offset,&value,&count
  54.         DS.W    0
  55.         IFC    '\4',''
  56. COUNT\@    SET    0
  57.         ENDC
  58.         IFNC    '\4',''
  59. COUNT\@    SET    \4
  60.         ENDC
  61. CMD\@        SET    (((\1)<<4)!COUNT\@)
  62.         IFLE    (\2)-255    ;byte offset large enough?
  63.         DC.B    (CMD\@)!$80
  64.         DC.B    \2
  65.         MEXIT
  66.         ENDC
  67.         DC.B    CMD\@!$0C0    ;byte too small, use 24-bit offset.
  68.         DC.B    (((\2)>>16)&$0FF)
  69.         DC.W    ((\2)&$0FFFF)
  70.         ENDM
  71.  
  72.     ENDC    ; EXEC_INITIALIZERS_I
  73.