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

  1. unit IFFParse;
  2.  
  3. INTERFACE
  4. uses Exec, Clipboard, Utility;
  5.  
  6.  
  7. type
  8.     pLocalContextItem = ^tLocalContextItem;
  9.     tLocalContextItem = record
  10.         lci_Node: tMinNode;
  11.         lci_ID: long;
  12.         lci_Type: long;
  13.         lci_Ident: long;
  14.         end;
  15.  
  16.     pContextNode = ^tContextNode;
  17.     tContextNode = record
  18.         cn_Node: tMinNode;
  19.         cn_ID: longint;
  20.         cn_Type: longint;
  21.         cn_Size: longint;
  22.         cn_Scan: longint;
  23.         end;
  24.  
  25.     pCollectionItem = ^tCollectionItem;
  26.     tCollectionItem = record
  27.         ci_Next: pCollectionItem;
  28.         ci_Size: longint;
  29.         ci_Data: pbyte;
  30.         end;
  31.  
  32.     pStoredProperty = ^tStoredProperty;
  33.     tStoredProperty = record
  34.         sp_Size: longint;
  35.         sp_Data: pbyte;
  36.         end;
  37.  
  38.     pClipboardHandle = ^tClipboardHandle;
  39.     tClipboardHandle = record
  40.         cbh_Req: tIOClipReq;
  41.         cbh_CBport: tMsgPort;
  42.         cbh_SatisfyPort: tMsgPort;
  43.         end;
  44.  
  45.     pIFFHandle = ^tIFFHandle;
  46.     tIFFHandle = record
  47.         iff_Stream: long;
  48.         iff_Flags: long;
  49.         iff_Depth: longint;
  50.         end;
  51.  
  52.     pIFFStreamCmd = ^tIFFStreamCmd;
  53.     tIFFStreamCmd = record
  54.         sc_Command: longint;
  55.         sc_Buf: pointer;
  56.         sc_NBytes: longint;
  57.         end;
  58.  
  59.  
  60.  
  61. var
  62.     IFFParseBase: pLibrary;
  63.  
  64.  
  65. const
  66.     IFFSCC_READ = 2;
  67.     IFFCMD_WRITE = 3;
  68.     IFFCMD_SEEK = 4;
  69.     IFFSCC_WRITE = 3;
  70.     IFFERR_NOMEM = $FFFFFFFC;
  71.     IFFCMD_PURGELCI = 7;
  72.     IFFCMD_ENTRY = 5;
  73.     IFFSCC_SEEK = 4;
  74.     IFFERR_READ = $FFFFFFFB;
  75.     IFFERR_SYNTAX = $FFFFFFF7;
  76.     IFFCMD_INIT = 0;
  77.     IFFLCI_ENTRYHANDLER = $656E6864;
  78.     IFFPARSE_RAWSTEP = 2;
  79.     IFFSCC_INIT = 0;
  80.     IFFCMD_EXIT = 6;
  81.     IFFERR_WRITE = $FFFFFFFA;
  82.     IFFERR_SEEK = $FFFFFFF9;
  83.     IFFCMD_CLEANUP = 1;
  84.     IFFLCI_EXITHANDLER = $65786864;
  85.     IFFERR_MANGLED = $FFFFFFF8;
  86.     IFFSCC_CLEANUP = 1;
  87.     IFFLCI_PROP = $70726F70;
  88.     IFFF_FSEEK = 2;
  89.     ID_FORM = $464F524D;
  90.     IFFF_RWBITS = 1;
  91.     ID_NULL = $20202020;
  92.     ID_LIST = $4C495354;
  93.     ID_CAT = $43415420;
  94.     IFFF_RSEEK = 4;
  95.     IFFERR_EOC = $FFFFFFFE;
  96.     ID_PROP = $50524F50;
  97.     IFFERR_EOF = $FFFFFFFF;
  98.     IFFSLI_PROP = 3;
  99.     IFFF_READ = 0;
  100.     IFFSLI_ROOT = 1;
  101.     IFFLCI_COLLECTION = $636F6C6C;
  102.     IFFF_WRITE = 1;
  103.     IFFERR_NOSCOPE = $FFFFFFFD;
  104.     IFFPARSE_SCAN = 0;
  105.     IFFSIZE_UNKNOWN = $FFFFFFFF;
  106.     IFF_RETURN2CLIENT = $FFFFFFF4;
  107.     IFFSLI_TOP = 2;
  108.     IFFF_RESERVED = $FFFF0000;
  109.     IFFERR_NOTIFF = $FFFFFFF6;
  110.     IFFERR_NOHOOK = $FFFFFFF5;
  111.     IFFPARSE_STEP = 1;
  112.     IFFCMD_READ = 2;
  113.  
  114.  
  115. function AllocIFF: pIFFHandle;
  116. function OpenIFF
  117.         (iff: pIFFHandle;
  118.         rwMode: longint): longint;
  119.  
  120. function ParseIFF
  121.         (iff: pIFFHandle;
  122.         control: longint): longint;
  123.  
  124. procedure CloseIFF (iff: pIFFHandle);
  125. procedure FreeIFF (iff: pIFFHandle);
  126. function ReadChunkBytes
  127.         (iff: pIFFHandle;
  128.         buf: pointer;
  129.         size: longint): longint;
  130.  
  131. function WriteChunkBytes
  132.         (iff: pIFFHandle;
  133.         buf: pointer;
  134.         size: longint): longint;
  135.  
  136. function ReadChunkRecords
  137.         (iff: pIFFHandle;
  138.         buf: pointer;
  139.         bytesPerRecord: longint;
  140.         nRecords: longint): longint;
  141.  
  142. function WriteChunkRecords
  143.         (iff: pIFFHandle;
  144.         buf: pointer;
  145.         bytesPerRecord: longint;
  146.         nRecords: longint): longint;
  147.  
  148. function PushChunk
  149.         (iff: pIFFHandle;
  150.         type_: longint;
  151.         id: longint;
  152.         size: longint): longint;
  153.  
  154. function PopChunk (iff: pIFFHandle): longint;
  155. function EntryHandler
  156.         (iff: pIFFHandle;
  157.         type_: longint;
  158.         id: longint;
  159.         position: longint;
  160.         handler: pHook;
  161.         object: pointer): longint;
  162.  
  163. function ExitHandler
  164.         (iff: pIFFHandle;
  165.         type_: longint;
  166.         id: longint;
  167.         position: longint;
  168.         handler: pHook;
  169.         object: pointer): longint;
  170.  
  171. function PropChunk
  172.         (iff: pIFFHandle;
  173.         type_: longint;
  174.         id: longint): longint;
  175.  
  176. function PropChunks
  177.         (iff: pIFFHandle;
  178.         propArray: plongint;
  179.         nProps: longint): longint;
  180.  
  181. function StopChunk
  182.         (iff: pIFFHandle;
  183.         type_: longint;
  184.         id: longint): longint;
  185.  
  186. function StopChunks
  187.         (iff: pIFFHandle;
  188.         propArray: plongint;
  189.         nProps: longint): longint;
  190.  
  191. function CollectionChunk
  192.         (iff: pIFFHandle;
  193.         type_: longint;
  194.         id: longint): longint;
  195.  
  196. function CollectionChunks
  197.         (iff: pIFFHandle;
  198.         propArray: plongint;
  199.         nProps: longint): longint;
  200.  
  201. function StopOnExit
  202.         (iff: pIFFHandle;
  203.         type_: longint;
  204.         id: longint): longint;
  205.  
  206. function FindProp
  207.         (iff: pIFFHandle;
  208.         type_: longint;
  209.         id: longint): pStoredProperty;
  210.  
  211. function FindCollection
  212.         (iff: pIFFHandle;
  213.         type_: longint;
  214.         id: longint): pCollectionItem;
  215.  
  216. function FindPropContext (iff: pIFFHandle): pContextNode;
  217. function CurrentChunk (iff: pIFFHandle): pContextNode;
  218. function ParentChunk (contextNode: pContextNode): pContextNode;
  219. function AllocLocalItem
  220.         (type_: longint;
  221.         id: longint;
  222.         ident: longint;
  223.         dataSize: longint): pLocalContextItem;
  224.  
  225. function LocalItemData (localItem: pLocalContextItem): pointer;
  226. procedure SetLocalItemPurge
  227.         (localItem: pLocalContextItem;
  228.         purgeHook: pHook);
  229.  
  230. procedure FreeLocalItem (localItem: pLocalContextItem);
  231. function FindLocalItem
  232.         (iff: pIFFHandle;
  233.         type_: longint;
  234.         id: longint;
  235.         ident: longint): pLocalContextItem;
  236.  
  237. function StoreLocalItem
  238.         (iff: pIFFHandle;
  239.         localItem: pLocalContextItem;
  240.         position: longint): longint;
  241.  
  242. procedure StoreItemInContext
  243.         (iff: pIFFHandle;
  244.         localItem: pLocalContextItem;
  245.         contextNode: pContextNode);
  246.  
  247. procedure InitIFF
  248.         (iff: pIFFHandle;
  249.         flags: longint;
  250.         streamHook: pHook);
  251.  
  252. procedure InitIFFasDOS (iff: pIFFHandle);
  253. procedure InitIFFasClip (iff: pIFFHandle);
  254. function OpenClipboard (unitNum: longint): pClipboardHandle;
  255. procedure CloseClipboard (clipboard: pClipboardHandle);
  256. function GoodID (id: longint): longint;
  257. function GoodType (type_: longint): longint;
  258. function IDtoStr
  259.         (id: longint;
  260.         buf: STRPTR): STRPTR;
  261.  
  262.  
  263.  
  264. IMPLEMENTATION
  265. function AllocIFF; xassembler;
  266. asm
  267.     move.l    a6,-(sp)
  268.     move.l    IFFParseBase,a6
  269.     jsr        -$1E(a6)
  270.     move.l    d0,8(sp)
  271.     move.l    (sp)+,a6
  272. end;
  273.  
  274. function OpenIFF; xassembler;
  275. asm
  276.     move.l    a6,-(sp)
  277.     movem.l    8(sp),d0/a0
  278.     move.l    IFFParseBase,a6
  279.     jsr        -$24(a6)
  280.     move.l    d0,$10(sp)
  281.     move.l    (sp)+,a6
  282. end;
  283.  
  284. function ParseIFF; xassembler;
  285. asm
  286.     move.l    a6,-(sp)
  287.     movem.l    8(sp),d0/a0
  288.     move.l    IFFParseBase,a6
  289.     jsr        -$2A(a6)
  290.     move.l    d0,$10(sp)
  291.     move.l    (sp)+,a6
  292. end;
  293.  
  294. procedure CloseIFF; xassembler;
  295. asm
  296.     move.l    a6,-(sp)
  297.     move.l    8(sp),a0
  298.     move.l    IFFParseBase,a6
  299.     jsr        -$30(a6)
  300.     move.l    (sp)+,a6
  301. end;
  302.  
  303. procedure FreeIFF; xassembler;
  304. asm
  305.     move.l    a6,-(sp)
  306.     move.l    8(sp),a0
  307.     move.l    IFFParseBase,a6
  308.     jsr        -$36(a6)
  309.     move.l    (sp)+,a6
  310. end;
  311.  
  312. function ReadChunkBytes; xassembler;
  313. asm
  314.     move.l    a6,-(sp)
  315.     lea        8(sp),a6
  316.     move.l    (a6)+,d0
  317.     move.l    (a6)+,a1
  318.     move.l    (a6)+,a0
  319.     move.l    IFFParseBase,a6
  320.     jsr        -$3C(a6)
  321.     move.l    d0,$14(sp)
  322.     move.l    (sp)+,a6
  323. end;
  324.  
  325. function WriteChunkBytes; xassembler;
  326. asm
  327.     move.l    a6,-(sp)
  328.     lea        8(sp),a6
  329.     move.l    (a6)+,d0
  330.     move.l    (a6)+,a1
  331.     move.l    (a6)+,a0
  332.     move.l    IFFParseBase,a6
  333.     jsr        -$42(a6)
  334.     move.l    d0,$14(sp)
  335.     move.l    (sp)+,a6
  336. end;
  337.  
  338. function ReadChunkRecords; xassembler;
  339. asm
  340.     move.l    a6,-(sp)
  341.     lea        8(sp),a6
  342.     move.l    (a6)+,d1
  343.     move.l    (a6)+,d0
  344.     move.l    (a6)+,a1
  345.     move.l    (a6)+,a0
  346.     move.l    IFFParseBase,a6
  347.     jsr        -$48(a6)
  348.     move.l    d0,$18(sp)
  349.     move.l    (sp)+,a6
  350. end;
  351.  
  352. function WriteChunkRecords; xassembler;
  353. asm
  354.     move.l    a6,-(sp)
  355.     lea        8(sp),a6
  356.     move.l    (a6)+,d1
  357.     move.l    (a6)+,d0
  358.     move.l    (a6)+,a1
  359.     move.l    (a6)+,a0
  360.     move.l    IFFParseBase,a6
  361.     jsr        -$4E(a6)
  362.     move.l    d0,$18(sp)
  363.     move.l    (sp)+,a6
  364. end;
  365.  
  366. function PushChunk; xassembler;
  367. asm
  368.     move.l    a6,-(sp)
  369.     lea        8(sp),a6
  370.     move.l    (a6)+,d2
  371.     move.l    (a6)+,d1
  372.     move.l    (a6)+,d0
  373.     move.l    (a6)+,a0
  374.     move.l    IFFParseBase,a6
  375.     jsr        -$54(a6)
  376.     move.l    d0,$18(sp)
  377.     move.l    (sp)+,a6
  378. end;
  379.  
  380. function PopChunk; xassembler;
  381. asm
  382.     move.l    a6,-(sp)
  383.     move.l    8(sp),a0
  384.     move.l    IFFParseBase,a6
  385.     jsr        -$5A(a6)
  386.     move.l    d0,$C(sp)
  387.     move.l    (sp)+,a6
  388. end;
  389.  
  390. function EntryHandler; xassembler;
  391. asm
  392.     movem.l    a2/a6,-(sp)
  393.     lea        $C(sp),a6
  394.     move.l    (a6)+,a2
  395.     move.l    (a6)+,a1
  396.     move.l    (a6)+,d2
  397.     move.l    (a6)+,d1
  398.     move.l    (a6)+,d0
  399.     move.l    (a6)+,a0
  400.     move.l    IFFParseBase,a6
  401.     jsr        -$66(a6)
  402.     move.l    d0,$24(sp)
  403.     movem.l    (sp)+,a2/a6
  404. end;
  405.  
  406. function ExitHandler; xassembler;
  407. asm
  408.     movem.l    a2/a6,-(sp)
  409.     lea        $C(sp),a6
  410.     move.l    (a6)+,a2
  411.     move.l    (a6)+,a1
  412.     move.l    (a6)+,d2
  413.     move.l    (a6)+,d1
  414.     move.l    (a6)+,d0
  415.     move.l    (a6)+,a0
  416.     move.l    IFFParseBase,a6
  417.     jsr        -$6C(a6)
  418.     move.l    d0,$24(sp)
  419.     movem.l    (sp)+,a2/a6
  420. end;
  421.  
  422. function PropChunk; xassembler;
  423. asm
  424.     move.l    a6,-(sp)
  425.     lea        8(sp),a6
  426.     move.l    (a6)+,d1
  427.     move.l    (a6)+,d0
  428.     move.l    (a6)+,a0
  429.     move.l    IFFParseBase,a6
  430.     jsr        -$72(a6)
  431.     move.l    d0,$14(sp)
  432.     move.l    (sp)+,a6
  433. end;
  434.  
  435. function PropChunks; xassembler;
  436. asm
  437.     move.l    a6,-(sp)
  438.     lea        8(sp),a6
  439.     move.l    (a6)+,d0
  440.     move.l    (a6)+,a1
  441.     move.l    (a6)+,a0
  442.     move.l    IFFParseBase,a6
  443.     jsr        -$78(a6)
  444.     move.l    d0,$14(sp)
  445.     move.l    (sp)+,a6
  446. end;
  447.  
  448. function StopChunk; xassembler;
  449. asm
  450.     move.l    a6,-(sp)
  451.     lea        8(sp),a6
  452.     move.l    (a6)+,d1
  453.     move.l    (a6)+,d0
  454.     move.l    (a6)+,a0
  455.     move.l    IFFParseBase,a6
  456.     jsr        -$7E(a6)
  457.     move.l    d0,$14(sp)
  458.     move.l    (sp)+,a6
  459. end;
  460.  
  461. function StopChunks; xassembler;
  462. asm
  463.     move.l    a6,-(sp)
  464.     lea        8(sp),a6
  465.     move.l    (a6)+,d0
  466.     move.l    (a6)+,a1
  467.     move.l    (a6)+,a0
  468.     move.l    IFFParseBase,a6
  469.     jsr        -$84(a6)
  470.     move.l    d0,$14(sp)
  471.     move.l    (sp)+,a6
  472. end;
  473.  
  474. function CollectionChunk; xassembler;
  475. asm
  476.     move.l    a6,-(sp)
  477.     lea        8(sp),a6
  478.     move.l    (a6)+,d1
  479.     move.l    (a6)+,d0
  480.     move.l    (a6)+,a0
  481.     move.l    IFFParseBase,a6
  482.     jsr        -$8A(a6)
  483.     move.l    d0,$14(sp)
  484.     move.l    (sp)+,a6
  485. end;
  486.  
  487. function CollectionChunks; xassembler;
  488. asm
  489.     move.l    a6,-(sp)
  490.     lea        8(sp),a6
  491.     move.l    (a6)+,d0
  492.     move.l    (a6)+,a1
  493.     move.l    (a6)+,a0
  494.     move.l    IFFParseBase,a6
  495.     jsr        -$90(a6)
  496.     move.l    d0,$14(sp)
  497.     move.l    (sp)+,a6
  498. end;
  499.  
  500. function StopOnExit; xassembler;
  501. asm
  502.     move.l    a6,-(sp)
  503.     lea        8(sp),a6
  504.     move.l    (a6)+,d1
  505.     move.l    (a6)+,d0
  506.     move.l    (a6)+,a0
  507.     move.l    IFFParseBase,a6
  508.     jsr        -$96(a6)
  509.     move.l    d0,$14(sp)
  510.     move.l    (sp)+,a6
  511. end;
  512.  
  513. function FindProp; xassembler;
  514. asm
  515.     move.l    a6,-(sp)
  516.     lea        8(sp),a6
  517.     move.l    (a6)+,d1
  518.     move.l    (a6)+,d0
  519.     move.l    (a6)+,a0
  520.     move.l    IFFParseBase,a6
  521.     jsr        -$9C(a6)
  522.     move.l    d0,$14(sp)
  523.     move.l    (sp)+,a6
  524. end;
  525.  
  526. function FindCollection; xassembler;
  527. asm
  528.     move.l    a6,-(sp)
  529.     lea        8(sp),a6
  530.     move.l    (a6)+,d1
  531.     move.l    (a6)+,d0
  532.     move.l    (a6)+,a0
  533.     move.l    IFFParseBase,a6
  534.     jsr        -$A2(a6)
  535.     move.l    d0,$14(sp)
  536.     move.l    (sp)+,a6
  537. end;
  538.  
  539. function FindPropContext; xassembler;
  540. asm
  541.     move.l    a6,-(sp)
  542.     move.l    8(sp),a0
  543.     move.l    IFFParseBase,a6
  544.     jsr        -$A8(a6)
  545.     move.l    d0,$C(sp)
  546.     move.l    (sp)+,a6
  547. end;
  548.  
  549. function CurrentChunk; xassembler;
  550. asm
  551.     move.l    a6,-(sp)
  552.     move.l    8(sp),a0
  553.     move.l    IFFParseBase,a6
  554.     jsr        -$AE(a6)
  555.     move.l    d0,$C(sp)
  556.     move.l    (sp)+,a6
  557. end;
  558.  
  559. function ParentChunk; xassembler;
  560. asm
  561.     move.l    a6,-(sp)
  562.     move.l    8(sp),a0
  563.     move.l    IFFParseBase,a6
  564.     jsr        -$B4(a6)
  565.     move.l    d0,$C(sp)
  566.     move.l    (sp)+,a6
  567. end;
  568.  
  569. function AllocLocalItem; xassembler;
  570. asm
  571.     movem.l    d3/a6,-(sp)
  572.     lea        $C(sp),a6
  573.     move.l    (a6)+,d3
  574.     move.l    (a6)+,d2
  575.     move.l    (a6)+,d1
  576.     move.l    (a6)+,d0
  577.     move.l    IFFParseBase,a6
  578.     jsr        -$BA(a6)
  579.     move.l    d0,$1C(sp)
  580.     movem.l    (sp)+,d3/a6
  581. end;
  582.  
  583. function LocalItemData; xassembler;
  584. asm
  585.     move.l    a6,-(sp)
  586.     move.l    8(sp),a0
  587.     move.l    IFFParseBase,a6
  588.     jsr        -$C0(a6)
  589.     move.l    d0,$C(sp)
  590.     move.l    (sp)+,a6
  591. end;
  592.  
  593. procedure SetLocalItemPurge; xassembler;
  594. asm
  595.     move.l    a6,-(sp)
  596.     lea        8(sp),a6
  597.     move.l    (a6)+,a1
  598.     move.l    (a6)+,a0
  599.     move.l    IFFParseBase,a6
  600.     jsr        -$C6(a6)
  601.     move.l    (sp)+,a6
  602. end;
  603.  
  604. procedure FreeLocalItem; xassembler;
  605. asm
  606.     move.l    a6,-(sp)
  607.     move.l    8(sp),a0
  608.     move.l    IFFParseBase,a6
  609.     jsr        -$CC(a6)
  610.     move.l    (sp)+,a6
  611. end;
  612.  
  613. function FindLocalItem; xassembler;
  614. asm
  615.     move.l    a6,-(sp)
  616.     lea        8(sp),a6
  617.     move.l    (a6)+,d2
  618.     move.l    (a6)+,d1
  619.     move.l    (a6)+,d0
  620.     move.l    (a6)+,a0
  621.     move.l    IFFParseBase,a6
  622.     jsr        -$D2(a6)
  623.     move.l    d0,$18(sp)
  624.     move.l    (sp)+,a6
  625. end;
  626.  
  627. function StoreLocalItem; xassembler;
  628. asm
  629.     move.l    a6,-(sp)
  630.     lea        8(sp),a6
  631.     move.l    (a6)+,d0
  632.     move.l    (a6)+,a1
  633.     move.l    (a6)+,a0
  634.     move.l    IFFParseBase,a6
  635.     jsr        -$D8(a6)
  636.     move.l    d0,$14(sp)
  637.     move.l    (sp)+,a6
  638. end;
  639.  
  640. procedure StoreItemInContext; xassembler;
  641. asm
  642.     movem.l    a2/a6,-(sp)
  643.     lea        $C(sp),a6
  644.     move.l    (a6)+,a2
  645.     move.l    (a6)+,a1
  646.     move.l    (a6)+,a0
  647.     move.l    IFFParseBase,a6
  648.     jsr        -$DE(a6)
  649.     movem.l    (sp)+,a2/a6
  650. end;
  651.  
  652. procedure InitIFF; xassembler;
  653. asm
  654.     move.l    a6,-(sp)
  655.     lea        8(sp),a6
  656.     move.l    (a6)+,a1
  657.     move.l    (a6)+,d0
  658.     move.l    (a6)+,a0
  659.     move.l    IFFParseBase,a6
  660.     jsr        -$E4(a6)
  661.     move.l    (sp)+,a6
  662. end;
  663.  
  664. procedure InitIFFasDOS; xassembler;
  665. asm
  666.     move.l    a6,-(sp)
  667.     move.l    8(sp),a0
  668.     move.l    IFFParseBase,a6
  669.     jsr        -$EA(a6)
  670.     move.l    (sp)+,a6
  671. end;
  672.  
  673. procedure InitIFFasClip; xassembler;
  674. asm
  675.     move.l    a6,-(sp)
  676.     move.l    8(sp),a0
  677.     move.l    IFFParseBase,a6
  678.     jsr        -$F0(a6)
  679.     move.l    (sp)+,a6
  680. end;
  681.  
  682. function OpenClipboard; xassembler;
  683. asm
  684.     move.l    a6,-(sp)
  685.     move.l    8(sp),d0
  686.     move.l    IFFParseBase,a6
  687.     jsr        -$F6(a6)
  688.     move.l    d0,$C(sp)
  689.     move.l    (sp)+,a6
  690. end;
  691.  
  692. procedure CloseClipboard; xassembler;
  693. asm
  694.     move.l    a6,-(sp)
  695.     move.l    8(sp),a0
  696.     move.l    IFFParseBase,a6
  697.     jsr        -$FC(a6)
  698.     move.l    (sp)+,a6
  699. end;
  700.  
  701. function GoodID; xassembler;
  702. asm
  703.     move.l    a6,-(sp)
  704.     move.l    8(sp),d0
  705.     move.l    IFFParseBase,a6
  706.     jsr        -$102(a6)
  707.     move.l    d0,$C(sp)
  708.     move.l    (sp)+,a6
  709. end;
  710.  
  711. function GoodType; xassembler;
  712. asm
  713.     move.l    a6,-(sp)
  714.     move.l    8(sp),d0
  715.     move.l    IFFParseBase,a6
  716.     jsr        -$108(a6)
  717.     move.l    d0,$C(sp)
  718.     move.l    (sp)+,a6
  719. end;
  720.  
  721. function IDtoStr; xassembler;
  722. asm
  723.     move.l    a6,-(sp)
  724.     lea        8(sp),a6
  725.     move.l    (a6)+,a0
  726.     move.l    (a6)+,d0
  727.     move.l    IFFParseBase,a6
  728.     jsr        -$10E(a6)
  729.     move.l    d0,$10(sp)
  730.     move.l    (sp)+,a6
  731. end;
  732.  
  733. end.
  734.