home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / Pascal / HISOFTPASCAL2,0-3.DMS / in.adf / Units / Utility.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1992-05-20  |  6.3 KB  |  413 lines

  1. unit Utility;
  2.  
  3. INTERFACE
  4. uses Exec;
  5.  
  6.  
  7. type
  8.     Tag = long;
  9.     pClockData = ^tClockData;
  10.     tClockData = record
  11.         sec: word;
  12.         min: word;
  13.         hour: word;
  14.         mday: word;
  15.         month: word;
  16.         year: word;
  17.         wday: word;
  18.         end;
  19.  
  20.     pTagItem = ^tTagItem;
  21.     tTagItem = record
  22.         ti_Tag: Tag;
  23.         ti_Data: long;
  24.         end;
  25.  
  26.     pHook = ^tHook;
  27.     tHook = record
  28.         h_MinNode: tMinNode;
  29.         h_Entry: pointer;
  30.         h_SubEntry: pointer;
  31.         h_Data: pointer;
  32.         end;
  33.  
  34.     pTag = ^Tag;
  35.     ppTagItem = ^pTagItem;
  36.  
  37.  
  38. var
  39.     UtilityBase: pLibrary;
  40.  
  41.  
  42. const
  43.     TAGFILTER_NOT = 1;
  44.     TAG_DONE = 0;
  45.     TAG_MORE = 2;
  46.     TAG_SKIP = 3;
  47.     TAG_END = 0;
  48.     TAG_USER = $80000000;
  49.     TAG_IGNORE = 1;
  50.     TAGFILTER_AND = 0;
  51.  
  52.  
  53. function FindTagItem
  54.         (tagVal: Tag;
  55.         tagList: pTagItem): pTagItem;
  56.  
  57. function GetTagData
  58.         (tagVal: Tag;
  59.         defaultVal: long;
  60.         tagList: pTagItem): long;
  61.  
  62. function PackBoolTags
  63.         (initialFlags: long;
  64.         tagList: pTagItem;
  65.         boolMap: pTagItem): long;
  66.  
  67. function NextTagItem (tagListPtr: ppTagItem): pTagItem;
  68. procedure FilterTagChanges
  69.         (newTagList: pTagItem;
  70.         oldTagList: pTagItem;
  71.         apply: longint);
  72.  
  73. procedure MapTags
  74.         (tagList: pTagItem;
  75.         mapList: pTagItem;
  76.         includeMiss: longint);
  77.  
  78. function AllocateTagItems (numItems: long): pTagItem;
  79. function CloneTagItems (tagList: pTagItem): pTagItem;
  80. procedure FreeTagItems (tagList: pTagItem);
  81. procedure RefreshTagItemClones
  82.         (cloneList: pTagItem;
  83.         origList: pTagItem);
  84.  
  85. function TagInArray
  86.         (tagVal: Tag;
  87.         tagArray: pTag): boolean;
  88.  
  89. function FilterTagItems
  90.         (tagList: pTagItem;
  91.         filterArray: pTag;
  92.         logic: longint): long;
  93.  
  94. function CallHookPkt
  95.         (hook: pHook;
  96.         object: pointer;
  97.         paramPacket: pointer): long;
  98.  
  99. procedure Amiga2Date
  100.         (amigaTime: long;
  101.         date: pClockData);
  102.  
  103. function Date2Amiga (date: pClockData): long;
  104. function CheckDate (date: pClockData): long;
  105. function SMult32
  106.         (factor1: longint;
  107.         factor2: longint): longint;
  108.  
  109. function UMult32
  110.         (factor1: long;
  111.         factor2: long): long;
  112.  
  113. function SDivMod32
  114.         (dividend: longint;
  115.         divisor: longint): longint;
  116.  
  117. function UDivMod32
  118.         (dividend: long;
  119.         divisor: long): long;
  120.  
  121. function Stricmp
  122.         (string1: STRPTR;
  123.         string2: STRPTR): longint;
  124.  
  125. function Strnicmp
  126.         (string1: STRPTR;
  127.         string2: STRPTR;
  128.         length: longint): longint;
  129.  
  130. function ToUpper (character: byte): byte;
  131. function ToLower (character: byte): byte;
  132.  
  133.  
  134. IMPLEMENTATION
  135. function FindTagItem; xassembler;
  136. asm
  137.     move.l    a6,-(sp)
  138.     lea        8(sp),a6
  139.     move.l    (a6)+,a0
  140.     move.l    (a6)+,d0
  141.     move.l    UtilityBase,a6
  142.     jsr        -$1E(a6)
  143.     move.l    d0,$10(sp)
  144.     move.l    (sp)+,a6
  145. end;
  146.  
  147. function GetTagData; xassembler;
  148. asm
  149.     move.l    a6,-(sp)
  150.     lea        8(sp),a6
  151.     move.l    (a6)+,a0
  152.     move.l    (a6)+,d1
  153.     move.l    (a6)+,d0
  154.     move.l    UtilityBase,a6
  155.     jsr        -$24(a6)
  156.     move.l    d0,$14(sp)
  157.     move.l    (sp)+,a6
  158. end;
  159.  
  160. function PackBoolTags; xassembler;
  161. asm
  162.     move.l    a6,-(sp)
  163.     lea        8(sp),a6
  164.     move.l    (a6)+,a1
  165.     move.l    (a6)+,a0
  166.     move.l    (a6)+,d0
  167.     move.l    UtilityBase,a6
  168.     jsr        -$2A(a6)
  169.     move.l    d0,$14(sp)
  170.     move.l    (sp)+,a6
  171. end;
  172.  
  173. function NextTagItem; xassembler;
  174. asm
  175.     move.l    a6,-(sp)
  176.     move.l    8(sp),a0
  177.     move.l    UtilityBase,a6
  178.     jsr        -$30(a6)
  179.     move.l    d0,$C(sp)
  180.     move.l    (sp)+,a6
  181. end;
  182.  
  183. procedure FilterTagChanges; xassembler;
  184. asm
  185.     move.l    a6,-(sp)
  186.     lea        8(sp),a6
  187.     move.l    (a6)+,d0
  188.     move.l    (a6)+,a1
  189.     move.l    (a6)+,a0
  190.     move.l    UtilityBase,a6
  191.     jsr        -$36(a6)
  192.     move.l    (sp)+,a6
  193. end;
  194.  
  195. procedure MapTags; xassembler;
  196. asm
  197.     move.l    a6,-(sp)
  198.     lea        8(sp),a6
  199.     move.l    (a6)+,d0
  200.     move.l    (a6)+,a1
  201.     move.l    (a6)+,a0
  202.     move.l    UtilityBase,a6
  203.     jsr        -$3C(a6)
  204.     move.l    (sp)+,a6
  205. end;
  206.  
  207. function AllocateTagItems; xassembler;
  208. asm
  209.     move.l    a6,-(sp)
  210.     move.l    8(sp),d0
  211.     move.l    UtilityBase,a6
  212.     jsr        -$42(a6)
  213.     move.l    d0,$C(sp)
  214.     move.l    (sp)+,a6
  215. end;
  216.  
  217. function CloneTagItems; xassembler;
  218. asm
  219.     move.l    a6,-(sp)
  220.     move.l    8(sp),a0
  221.     move.l    UtilityBase,a6
  222.     jsr        -$48(a6)
  223.     move.l    d0,$C(sp)
  224.     move.l    (sp)+,a6
  225. end;
  226.  
  227. procedure FreeTagItems; xassembler;
  228. asm
  229.     move.l    a6,-(sp)
  230.     move.l    8(sp),a0
  231.     move.l    UtilityBase,a6
  232.     jsr        -$4E(a6)
  233.     move.l    (sp)+,a6
  234. end;
  235.  
  236. procedure RefreshTagItemClones; xassembler;
  237. asm
  238.     move.l    a6,-(sp)
  239.     lea        8(sp),a6
  240.     move.l    (a6)+,a1
  241.     move.l    (a6)+,a0
  242.     move.l    UtilityBase,a6
  243.     jsr        -$54(a6)
  244.     move.l    (sp)+,a6
  245. end;
  246.  
  247. function TagInArray; xassembler;
  248. asm
  249.     move.l    a6,-(sp)
  250.     lea        8(sp),a6
  251.     move.l    (a6)+,a0
  252.     move.l    (a6)+,d0
  253.     move.l    UtilityBase,a6
  254.     jsr        -$5A(a6)
  255.     tst.l    d0
  256.     sne        d0
  257.     neg.b    d0
  258.     move.b    d0,$10(sp)
  259.     move.l    (sp)+,a6
  260. end;
  261.  
  262. function FilterTagItems; xassembler;
  263. asm
  264.     move.l    a6,-(sp)
  265.     lea        8(sp),a6
  266.     move.l    (a6)+,d0
  267.     move.l    (a6)+,a1
  268.     move.l    (a6)+,a0
  269.     move.l    UtilityBase,a6
  270.     jsr        -$60(a6)
  271.     move.l    d0,$14(sp)
  272.     move.l    (sp)+,a6
  273. end;
  274.  
  275. function CallHookPkt; xassembler;
  276. asm
  277.     movem.l    a2/a6,-(sp)
  278.     lea        $C(sp),a6
  279.     move.l    (a6)+,a1
  280.     move.l    (a6)+,a2
  281.     move.l    (a6)+,a0
  282.     move.l    UtilityBase,a6
  283.     jsr        -$66(a6)
  284.     move.l    d0,$18(sp)
  285.     movem.l    (sp)+,a2/a6
  286. end;
  287.  
  288. procedure Amiga2Date; xassembler;
  289. asm
  290.     move.l    a6,-(sp)
  291.     lea        8(sp),a6
  292.     move.l    (a6)+,a0
  293.     move.l    (a6)+,d0
  294.     move.l    UtilityBase,a6
  295.     jsr        -$78(a6)
  296.     move.l    (sp)+,a6
  297. end;
  298.  
  299. function Date2Amiga; xassembler;
  300. asm
  301.     move.l    a6,-(sp)
  302.     move.l    8(sp),a0
  303.     move.l    UtilityBase,a6
  304.     jsr        -$7E(a6)
  305.     move.l    d0,$C(sp)
  306.     move.l    (sp)+,a6
  307. end;
  308.  
  309. function CheckDate; xassembler;
  310. asm
  311.     move.l    a6,-(sp)
  312.     move.l    8(sp),a0
  313.     move.l    UtilityBase,a6
  314.     jsr        -$84(a6)
  315.     move.l    d0,$C(sp)
  316.     move.l    (sp)+,a6
  317. end;
  318.  
  319. function SMult32; xassembler;
  320. asm
  321.     move.l    a6,-(sp)
  322.     lea        8(sp),a6
  323.     move.l    (a6)+,d1
  324.     move.l    (a6)+,d0
  325.     move.l    UtilityBase,a6
  326.     jsr        -$8A(a6)
  327.     move.l    d0,$10(sp)
  328.     move.l    (sp)+,a6
  329. end;
  330.  
  331. function UMult32; xassembler;
  332. asm
  333.     move.l    a6,-(sp)
  334.     lea        8(sp),a6
  335.     move.l    (a6)+,d1
  336.     move.l    (a6)+,d0
  337.     move.l    UtilityBase,a6
  338.     jsr        -$90(a6)
  339.     move.l    d0,$10(sp)
  340.     move.l    (sp)+,a6
  341. end;
  342.  
  343. function SDivMod32; xassembler;
  344. asm
  345.     move.l    a6,-(sp)
  346.     lea        8(sp),a6
  347.     move.l    (a6)+,d1
  348.     move.l    (a6)+,d0
  349.     move.l    UtilityBase,a6
  350.     jsr        -$96(a6)
  351.     move.l    d0,$10(sp)
  352.     move.l    (sp)+,a6
  353. end;
  354.  
  355. function UDivMod32; xassembler;
  356. asm
  357.     move.l    a6,-(sp)
  358.     lea        8(sp),a6
  359.     move.l    (a6)+,d1
  360.     move.l    (a6)+,d0
  361.     move.l    UtilityBase,a6
  362.     jsr        -$9C(a6)
  363.     move.l    d0,$10(sp)
  364.     move.l    (sp)+,a6
  365. end;
  366.  
  367. function Stricmp; xassembler;
  368. asm
  369.     move.l    a6,-(sp)
  370.     lea        8(sp),a6
  371.     move.l    (a6)+,a1
  372.     move.l    (a6)+,a0
  373.     move.l    UtilityBase,a6
  374.     jsr        -$A2(a6)
  375.     move.l    d0,$10(sp)
  376.     move.l    (sp)+,a6
  377. end;
  378.  
  379. function Strnicmp; xassembler;
  380. asm
  381.     move.l    a6,-(sp)
  382.     lea        8(sp),a6
  383.     move.l    (a6)+,d0
  384.     move.l    (a6)+,a1
  385.     move.l    (a6)+,a0
  386.     move.l    UtilityBase,a6
  387.     jsr        -$A8(a6)
  388.     move.l    d0,$14(sp)
  389.     move.l    (sp)+,a6
  390. end;
  391.  
  392. function ToUpper; xassembler;
  393. asm
  394.     move.l    a6,-(sp)
  395.     move.b    8(sp),d0
  396.     move.l    UtilityBase,a6
  397.     jsr        -$AE(a6)
  398.     move.b    d0,$A(sp)
  399.     move.l    (sp)+,a6
  400. end;
  401.  
  402. function ToLower; xassembler;
  403. asm
  404.     move.l    a6,-(sp)
  405.     move.b    8(sp),d0
  406.     move.l    UtilityBase,a6
  407.     jsr        -$B4(a6)
  408.     move.b    d0,$A(sp)
  409.     move.l    (sp)+,a6
  410. end;
  411.  
  412. end.
  413.