home *** CD-ROM | disk | FTP | other *** search
/ Fish 'n' More 2 / fishmore-publicdomainlibraryvol.ii1991xetec.iso / dirs / ilbmlib_393.lzh / ILBMlib / ILBMInterface.asm < prev    next >
Assembly Source File  |  1990-10-28  |  17KB  |  729 lines

  1. ; 1). Set your editor's TAB width to 3 in order to correctly view this file.
  2. ; 2). Delete the following 2 directives if not using MANX. If using LATTICE,
  3. ;        make sure that you assemble this module with large CODE and DATA
  4. ;     model.
  5.  
  6.   far code  ;for Manx only, it means large code, large data (int = 32 bits)
  7.   far data  ;this module must be assembled expecting passed ints as 32 bits
  8.  
  9. ; 3). Copy the file "IFF.i" to the current directory.
  10. ; 4). Assemble this module and link it with your C application modules.
  11. ;
  12. ;As an additional savings in size, you may wish to clip out the interface code
  13. ;for any routines that you do not wish to use. For example, if you don't plan
  14. ;on using "GetIFFPMsg", delete the 7 lines starting at XDEF _GetIFFPMsg.
  15.  
  16.     SECTION    ilbmcode,CODE
  17.  
  18.     INCLUDE    "IFF.i"    ;supplies the LVO offsets
  19.  
  20.     XREF    _ILBMBase    ;ilbm.library opened from C code, and base stored there
  21.  
  22.     XDEF    _GetIFFPMsg
  23.     XDEF    __GetIFFPMsg
  24. _GetIFFPMsg:
  25.     movea.l    _ILBMBase,a6
  26. __GetIFFPMsg:
  27.     move.l    4(sp),d0
  28.     jmp        _LVOGetIFFPMsg(a6)
  29.  
  30.     XDEF    _BlankPointer
  31.     XDEF    __BlankPointer
  32. _BlankPointer:
  33.     movea.l    _ILBMBase,a6
  34. __BlankPointer:
  35.     movea.l    4(sp),a0
  36.     jmp        _LVOBlankPointer(a6)
  37.  
  38.  
  39. ;######################## IFF READER ROUTINES ##########################
  40.  
  41. ;***********************************************************************
  42. ;BOOL = LoadIFFToWindow(fileName, ILBMFrame)
  43. ; d0                                d1                a1
  44.  
  45.     XDEF    _LoadIFFToWindow,__LoadIFFToWindow
  46. _LoadIFFToWindow:
  47.     movea.l    _ILBMBase,a6
  48. __LoadIFFToWindow:
  49.     move.l    4(sp),d1
  50.     movea.l    8(sp),a1
  51.     jmp        _LVOLoadIFFToWindow(a6)
  52.  
  53.  
  54. ;**************************** LoadIFF() *********************************
  55. ; IFFP = LoadIFF(fileHandle, Vectors, masterFrame)
  56. ;  d0                        d1            a0                a1
  57.  
  58.     XDEF    _LoadIFF,__LoadIFF
  59. _LoadIFF:
  60.     movea.l    _ILBMBase,a6
  61. __LoadIFF:
  62.     movem.l    4(sp),d1/a0/a1
  63.     bsr.s        SetVectors
  64.     jmp        _LVOLoadIFF(a6)
  65.  
  66.  
  67. ;**************************** ScaleImage() *********************************
  68. ;BOOL ScaleImage(dest_rectangle,source_rectangle,dest_rport,source_bitmap)
  69. ;                            a0                    a1                        a2                a4
  70.  
  71.  
  72.     XDEF    _ScaleImage,__ScaleImage
  73. _ScaleImage:
  74.     movea.l    _ILBMBase,a6
  75. __ScaleImage:
  76.     movem.l    a2/a4,-(sp)
  77.     movem.l    12(sp),a0/a1/a2/a4
  78.     jsr        _LVOScaleImage(a6)
  79.     movem.l    (sp)+,a2/a4
  80.     rts
  81.  
  82. ;**************************** SetupBitmap() *********************************
  83. ; SetupBitmap(raster, Bitmap, BMHD)
  84. ;                    d0            a0        a1
  85.  
  86.  
  87.     XDEF    _SetupBitmap,__SetupBitmap
  88. _SetupBitmap:
  89.     movea.l    _ILBMBase,a6
  90. __SetupBitmap:
  91.     movem.l    4(sp),d0/a0/a1
  92.     jmp        _LVOSetupBitmap(a6)
  93.  
  94.  
  95. ;**************************** DecompBODY() *********************************
  96. ; DecompBODY(BODY, BMHD, Bitmap)
  97. ;                    a0        a1        a2
  98. ; Decompresses the BODY chunk into the passed BitMap's planes based on the
  99. ; passed BMHD's w, h, numPlanes, and pageWidth. This is used for the first
  100. ; frame of the ANIM (ANHD's opmode = 0). BODY is the address of the loaded
  101. ; BODY chunk of the first frame of the ANIM file (minus the 8 byte header).
  102.  
  103.  
  104.     XDEF    _DecompBODY,__DecompBODY
  105. _DecompBODY:
  106.     movea.l    _ILBMBase,a6
  107. __DecompBODY:
  108.     move.l    a2,-(sp)
  109.     movem.l    8(sp),a0/a1/a2
  110.     jsr        _LVODecompBODY(a6)
  111.     movea.l    (sp)+,a2
  112.     rts
  113.  
  114. ;**************************** LoadILBM() *********************************
  115. ; IFFP = LoadILBM(fileHandle, Vectors, ILBMFrame)
  116. ;  d0                        d1            a0                a1
  117.  
  118.  
  119.     XDEF    _LoadILBM,__LoadILBM
  120. _LoadILBM:
  121.     movea.l    _ILBMBase,a6
  122. __LoadILBM:
  123.     movem.l    4(sp),d1/a0/a1
  124.     bsr.s        SetVectors
  125.     jmp        _LVOLoadILBM(a6)
  126.  
  127.  
  128. SetVectors:
  129.     movem.l    a0/a2/a3,-(sp)
  130.     ;---Setup CInterface to PROP handler
  131.     lea        PROPVector,a3
  132.     move.l    (a0)+,(a3)+
  133.     beq.s        noPROP
  134.     lea        PropHandler,a2
  135.     move.l    a2,-4(a0)
  136. noPROP:
  137.     ;---Setup CInterface to FORM handler
  138.     move.l    (a0)+,(a3)+
  139.     beq.s        noFORM
  140.     lea        FormHandler,a2
  141.     move.l    a2,-4(a0)
  142. noFORM:
  143.     ;---Setup CInterface to Chunk handler
  144.     move.l    (a0)+,(a3)+
  145.     beq.s        noChunk
  146.     lea        ChunkHandler,a2
  147.     move.l    a2,-4(a0)
  148. noChunk:
  149.     ;---Setup CInterface to Non-ILBM FORM handler
  150.     move.l    (a0),(a3)
  151.     beq.s        noNon
  152.     lea        NONILBM,a2
  153.     move.l    a2,(a0)
  154. noNon:
  155.     movem.l    (sp)+,a0/a2/a3
  156.     rts
  157.  
  158. ; Calls C PROP routine as follows:
  159. ; IFFP = PropRoutine(chunkID,PropID,Context,Vectors,Frame,PROPList)
  160. PropHandler:
  161.     movem.l    d0/d2/a0/a2/a3/a4,-(sp)
  162.     movea.l    PROPVector,a1
  163.     jsr        (a1)
  164.     movem.l    (sp)+,d1/d2/a0/a2/a3/a4
  165.     rts
  166.  
  167. ; Calls C FORM routine as follows:
  168. ; IFFP = FormRoutine(chunkID,Context,Vectors,Frame,PROPList)
  169. FormHandler:
  170.     movea.l    FORMVector,a1
  171. do_hand:
  172.     movem.l    d0/a0/a2/a3/a4,-(sp)
  173.     jsr        (a1)
  174.     movem.l    (sp)+,d1/a0/a2/a3/a4
  175.     rts
  176.  
  177.  ; An Unknown chunk in an ILBM (i.e. DLTA, ANHD, DEST, GRAB...)
  178. ChunkHandler:
  179.     movea.l    ChunkVector,a1
  180.     bra.s        do_hand
  181.  
  182.  ; A Non-ILBM FORM
  183. NONILBM:
  184.     movea.l    NonILBMVector,a1
  185.     bra.s        do_hand
  186.  
  187. ;*************************** GetPROPStruct() *****************************
  188. ; PropStruct = GetPROPStruct(size, PropID, PROPList)
  189. ;        d0                                d0        d1            a1
  190.  
  191.  
  192.     XDEF _GetPROPStruct,__GetPROPStruct
  193. _GetPROPStruct:
  194.     movea.l    _ILBMBase,a6
  195. __GetPROPStruct:
  196.     movem.l    4(sp),d0/d1/a1
  197.     jmp        _LVOGetPROPStruct(a6)
  198.  
  199.  
  200. ;*************************** SearchPROP() *****************************
  201. ; PropStruct = SearchPROP(PropID, PROPList)
  202. ;        d0                            d0            a1
  203.  
  204.  
  205.     XDEF _SearchPROP,__SearchPROP
  206. _SearchPROP:
  207.     movea.l    _ILBMBase,a6
  208. __SearchPROP:
  209.     movem.l    4(sp),d0/a1
  210.     jmp        _LVOSearchPROP(a6)
  211.  
  212.  
  213. ;*************************** CopyILBMProp() *****************************
  214. ; CopyILBMProp(FromFrame, ToFrame)
  215. ;                        d0            a1
  216.  
  217.  
  218.     XDEF _CopyILBMProp,__CopyILBMProp
  219. _CopyILBMProp:
  220.     movea.l    _ILBMBase,a6
  221. __CopyILBMProp:
  222.     movem.l    4(sp),d0/a1
  223.     jmp        _LVOCopyILBMProp(a6)
  224.  
  225. ;*************************** FreePROPStruct() *****************************
  226. ; FreePROPStruct(PROPList)
  227. ;                        a1
  228.  
  229.  
  230.     XDEF _FreePROPStruct,__FreePROPStruct
  231. _FreePROPStruct:
  232.     movea.l    _ILBMBase,a6
  233. __FreePROPStruct:
  234.     movea.l    4(sp),a1
  235.     jmp        _LVOFreePROPStruct(a6)
  236.  
  237.  
  238. ;*************************** HandleCAMG() *******************************
  239. ; HandleCAMG(Context,ILBMFrame)
  240. ;                    a0            a1
  241.  
  242.  
  243.     XDEF _HandleCAMG,__HandleCAMG
  244. _HandleCAMG:
  245.         movea.l    _ILBMBase,a6
  246. __HandleCAMG:
  247.         movem.l    4(sp),a0/a1
  248.         jmp        _LVOHandleCAMG(a6)
  249.  
  250.  
  251. ;*************************** HandleCRNG() *******************************
  252. ; HandleCRNG(Context,ILBMFrame)
  253. ;                    a0            a1
  254.  
  255.     XDEF _HandleCRNG,__HandleCRNG
  256. _HandleCRNG:
  257.         movea.l    _ILBMBase,a6
  258. __HandleCRNG:
  259.         movem.l    4(sp),a0/a1
  260.         jmp        _LVOHandleCRNG(a6)
  261.  
  262.  
  263. ;*************************** HandleCCRT() *******************************
  264. ; HandleCCRT(Context,ILBMFrame)
  265. ;                    a0            a1
  266.  
  267.     XDEF _HandleCCRT,__HandleCCRT
  268. _HandleCCRT:
  269.         movea.l    _ILBMBase,a6
  270. __HandleCCRT:
  271.         movem.l    4(sp),a0/a1
  272.         jmp        _LVOHandleCCRT(a6)
  273.  
  274.  
  275. ;**************************** OpenRIFF() *******************************
  276. ; IFFP = OpenRIFF(fileHandle, newContext, Frame)
  277. ;  d0                        d1                a0            a1
  278.  
  279.     XDEF    _OpenRIFF,__OpenRIFF
  280. _OpenRIFF:
  281.     movea.l    _ILBMBase,a6
  282. __OpenRIFF:
  283.     movem.l    4(sp),d1/a0/a1
  284.     jmp        _LVOOpenRIFF(a6)
  285.  
  286.  
  287. ;**************************** FileLength() *****************************
  288. ;FileSize = FileLength(fileHandle)
  289. ;    d0                                d1
  290.  
  291.     XDEF    _FileLength,__FileLength
  292. _FileLength:
  293.     movea.l    _ILBMBase,a6
  294. __FileLength:
  295.     move.l    4(sp),d1
  296.     move.l    a6,-(sp)
  297.     jsr        _LVOFileLength(a6)
  298.     movea.l    (sp)+,a6
  299.     rts
  300.  
  301.  
  302. ;********************** OpenRGroup() *****************************
  303. ; IFFP = OpenRGroup(parent, new)   passed 2 Context structures
  304. ;  d0                        a0         a1
  305.  
  306.  
  307.     XDEF    _OpenRGroup,__OpenRGroup
  308. _OpenRGroup:
  309.     movea.l    _ILBMBase,a6
  310. __OpenRGroup:
  311.     movea.l    4(sp),a0
  312.     movea.l    8(sp),a1
  313.     jmp        _LVOOpenRGroup(a6)
  314.  
  315.  
  316. ;***************************** CloseRGroup ******************************
  317. ; IFFP = CloseRGroup(context)
  318. ;  d0                            a0
  319.  
  320.     XDEF    _CloseRGroup,__CloseRGroup
  321. _CloseRGroup:
  322.     movea.l    _ILBMBase,a6
  323. __CloseRGroup:
  324.     movea.l    4(sp),a0
  325.     jmp        _LVOCloseRGroup(a6)
  326.  
  327.  
  328. ;*************************** SkipFwd() **********************************
  329. ; IFFP = SkipFwd(context, bytes)
  330. ;  d0              a0       d1
  331.  
  332.  
  333.     XDEF    _SkipFwd,__SkipFwd
  334. _SkipFwd:
  335.     movea.l    _ILBMBase,a6
  336. __SkipFwd:
  337.     movea.l    4(sp),a0
  338.     move.l    8(sp),d1
  339.     jmp        _LVOSkipFwd(a6)
  340.  
  341.  
  342. ;*************************** GetChunkHdr *******************************
  343. ; ID = GetChunkHdr(context)
  344. ; d0                        a0
  345.  
  346.  
  347.     XDEF    _GetChunkHdr,__GetChunkHdr
  348. _GetChunkHdr:
  349.     movea.l    _ILBMBase,a6
  350. __GetChunkHdr:
  351.     movea.l    4(sp),a0
  352.     jmp        _LVOGetChunkHdr(a6)
  353.  
  354.  
  355. ;************************** IFFReadBytes ********************************
  356. ; IFFP = IFFReadBytes(nBytes, context, buffer)
  357. ;  d0                            d0            a0            a1
  358.  
  359.  
  360.     XDEF    _IFFReadBytes,__IFFReadBytes
  361. _IFFReadBytes:
  362.     movea.l    _ILBMBase,a6
  363. __IFFReadBytes:
  364.     movem.l    4(sp),d0/a0/a1
  365.     jmp        _LVOIFFReadBytes(a6)
  366.  
  367.  
  368. ;************************* GetFChunkHdr() ******************************
  369. ; ID = GetFChunkHdr(context)
  370. ; d0                        a0
  371.  
  372.     XDEF    _GetFChunkHdr,__GetFChunkHdr
  373. _GetFChunkHdr:
  374.     movea.l _ILBMBase,a6
  375. __GetFChunkHdr:
  376.     movea.l    4(sp),a0
  377.     jmp        _LVOGetFChunkHdr(a6)
  378.  
  379.  
  380. ;************************* GetF1ChunkHdr() ******************************
  381. ; ID = GetF1ChunkHdr(context)
  382. ; d0                            a0
  383.  
  384.  
  385.     XDEF    _GetF1ChunkHdr,__GetF1ChunkHdr
  386. _GetF1ChunkHdr:
  387.     movea.l    _ILBMBase,a6
  388. __GetF1ChunkHdr:
  389.     movea.l    4(sp),a0
  390.     jmp        _LVOGetF1ChunkHdr(a6)
  391.  
  392.  
  393. ;**************************** GetPChunkHdr ****************************
  394. ; ID = GetPChunkHdr(context)
  395. ; d0                  a0
  396.  
  397.  
  398.     XDEF    _GetPChunkHdr,__GetPChunkHdr
  399. _GetPChunkHdr:
  400.     movea.l    _ILBMBase,a6
  401. __GetPChunkHdr:
  402.     movea.l    4(sp),a0
  403.     jmp        _LVOGetPChunkHdr(a6)
  404.  
  405.  
  406. ;**************************** GetCMAP() *******************************
  407. ; IFFP = GetCMAP(Context, colorMap, pNColorRegs)
  408. ;  d0                        d0            a0            a1
  409.  
  410.     XDEF    _GetCMAP,__GetCMAP
  411. _GetCMAP:
  412.     movea.l    _ILBMBase,a6
  413. __GetCMAP:
  414.     movem.l    4(sp),d0/a0/a1
  415.     jmp        _LVOGetCMAP(a6)
  416.  
  417.  
  418. ;****************************** GetBODY() *******************************
  419. ; IFFP = GetBODY(bitmap, mask, context, BMHD)
  420. ;  d0                    d0            d1        a0            a1
  421.  
  422.     XDEF    _GetBODY,__GetBODY
  423. _GetBODY:
  424.     movea.l    _ILBMBase,a6
  425. __GetBODY:
  426.     movem.l    4(sp),d0/d1/a0/a1
  427.     jmp        _LVOGetBODY(a6)
  428.  
  429. ;*********************************************************************
  430. ;BOOL = UnPackRow(dstBytes0, srcBytes0, Source, Dest)
  431. ; d0                        d1                d3            a2        a3
  432.  
  433.     XDEF    _UnPackRow,__UnPackRow
  434. _UnPackRow:
  435.     movea.l    _ILBMBase,a6
  436. __UnPackRow:
  437.     movem.l    d3/a2/a3,-(sp)
  438.     movem.l    16(sp),d1/d3/a2/a3
  439.     jsr        _LVOUnPackRow(a6)
  440.     movem.l    (sp)+,d3/a2/a3
  441.     rts
  442.  
  443. ;****************************** DecompDLTA() *******************************
  444. ; DecompDLTA(DLTA,bitmap)
  445. ;                  a0        a2
  446.  
  447.     XDEF    _DecompDLTA,__DecompDLTA
  448. _DecompDLTA:
  449.     movea.l    _ILBMBase,a6
  450. __DecompDLTA:
  451.     move.l    a2,-(sp)
  452.     movem.l    8(sp),a0/a2
  453.     jsr        _LVODecompDLTA(a6)
  454.     movea.l    (sp)+,a2
  455.     rts
  456.  
  457. ;****************************** DecodeVKPlane() *******************************
  458. ; DecodeVKPlane(linebytes, ytable, in, out)
  459. ;                         d0                d1        a0     a1
  460.  
  461.     XDEF    _DecodeVKPlane,__DecodeVKPlane
  462. _DecodeVKPlane:
  463.     movea.l    _ILBMBase,a6
  464. __DecodeVKPlane:
  465.     movem.l    4(sp),d0/d1/a0/a1
  466.     jmp        _LVODecodeVKPlane(a6)
  467.  
  468. ;****************************** MakeYTable() *******************************
  469. ; MakeYTable(width, height, table)
  470. ;                  d0        d1            a0
  471.  
  472.     XDEF    _MakeYTable,__MakeYTable
  473. _MakeYTable:
  474.     movea.l    _ILBMBase,a6
  475. __MakeYTable:
  476.     movem.l    4(sp),d0/d1/a0
  477.     jmp        _LVOMakeYTable(a6)
  478.  
  479.  
  480. ;######################## IFF WRITER ROUTINES #########################
  481.  
  482. ;*************************************************************************
  483. ; IFFP = SaveWindowToIFF(fileName, window)
  484. ;  d0                       d1       a0
  485.  
  486.    XDEF   _SaveWindowToIFF,__SaveWindowToIFF
  487. _SaveWindowToIFF:
  488.     movea.l _ILBMBase,a6
  489. __SaveWindowToIFF:
  490.     movem.l 4(sp),d1/a0
  491.     jmp     _LVOSaveWindowToIFF(a6)
  492.  
  493. ;******************************* SaveILBM() ******************************
  494. ;IFFP = SaveILBM(ViewModes,Compress,fhandle,Mask,CTable,BitMap,xyPnt,Handler)
  495. ; d0                 d0       d1       d2    d3    a0      a1    a2     a3
  496.  
  497.    XDEF _SaveILBM,__SaveILBM
  498. _SaveILBM:
  499.     movea.l _ILBMBase,a6
  500. __SaveILBM:
  501.     movem.l d2/d3/a2/a3,-(sp)
  502.     movem.l 20(sp),d0/d1/d2/d3/a2/a3
  503.     move.l  a3,C_Vector1
  504.     beq.s   noCHand
  505.     lea     C_Handler1,a3
  506. noCHand:
  507.     jsr     _LVOSaveILBM(a6)
  508.     movem.l (sp)+,d2/d3/a2/a3
  509.     rts
  510.  
  511. C_Handler1:
  512.     move.l    a0,-(sp)        ;pass Context to C routine
  513.     movea.l    C_Vector1,a1
  514.     jsr        (a1)
  515.     movea.l    (sp)+,a0
  516.     rts
  517.  
  518.  
  519. ;******************************* SaveANIM() ******************************
  520. ;IFFP = SaveANIM(Modes,Compress,fhandle,Mask,CTable,BitMap,xyPnt,Handler,ANHD)
  521. ; d0              d0      d1       d2    d3    a0      a1    a2     a3    a4
  522.  
  523.    XDEF _SaveANIM,__SaveANIM
  524. _SaveANIM:
  525.     movea.l _ILBMBase,a6
  526. __SaveANIM:
  527.     movem.l d2/d3/a2/a3/a4,-(sp)
  528.     movem.l 24(sp),d0/d1/d2/d3/a2/a3/a4
  529.     move.l  a3,C_Vector2
  530.     beq.s   noCHand2
  531.     lea     C_Handler2,a3
  532. noCHand2:
  533.     jsr     _LVOSaveANIM(a6)
  534.     movem.l (sp)+,d2/d3/a2/a3/a4
  535.     rts
  536.  
  537. C_Handler2:
  538.     movem.l    a0/a1,-(sp)        ;pass Context and Parent to C routine
  539.     movea.l    C_Vector2,a1
  540.     jsr        (a1)
  541.     movem.l    (sp)+,a0/a1
  542.     rts
  543.  
  544.  
  545. ;**************************** OpenWIFF() *****************************
  546. ;IFFP = OpenWIFF(limit, fileHandle, newContext)
  547. ; d0                    d0            d1                a0
  548.  
  549.     XDEF    _OpenWIFF,__OpenWIFF
  550. _OpenWIFF:
  551.     movea.l    _ILBMBase,a6
  552. __OpenWIFF:
  553.     movem.l    4(sp),d0/d1/a0
  554.     jmp        _LVOOpenWIFF(a6)
  555.  
  556.  
  557. ;*************************** StartWGroup() ********************************
  558. ;IFFP = StartWGroup(groupType, groupSize, subtype, parent, new)
  559. ; d0                            d0                d1            d2            a0        a1
  560.  
  561.     XDEF    _StartWGroup,__StartWGroup
  562. _StartWGroup:
  563.     movea.l _ILBMBase,a6
  564. __StartWGroup:
  565.     move.l   d2,-(sp)
  566.     movem.l  8(sp),d0/d1/d2/a0/a1
  567.     jsr     _LVOStartWGroup(a6)
  568.     move.l  (sp)+,d2
  569.     rts
  570.  
  571.  
  572. ;*************************** OpenWGroup() *******************************
  573. ;IFFP = OpenWGroup(parent, new)
  574. ; d0                 a0    a1
  575.  
  576.    XDEF _OpenWGroup,__OpenWGroup
  577. _OpenWGroup:
  578.     movea.l _ILBMBase,a6
  579. __OpenWGroup:
  580.     movea.l 4(sp),a0
  581.     movea.l 8(sp),a1
  582.     jmp     _LVOOpenWGroup(a6)
  583.  
  584.  
  585. ;***************************** EndWGroup() ********************************
  586. ;IFFP = EndWGroup(old)
  587. ; d0               a0
  588.  
  589.    XDEF _EndWGroup,__EndWGroup
  590. _EndWGroup:
  591.     movea.l _ILBMBase,a6
  592. __EndWGroup:
  593.     movea.l 4(sp),a0
  594.     jmp     _LVOEndWGroup(a6)
  595.  
  596.  
  597. ;************************ CloseWGroup *********************************
  598. ;IFFP = CloseWGroup(old)
  599. ; d0                a0
  600.  
  601.    XDEF _CloseWGroup,__CloseWGroup
  602. _CloseWGroup:
  603.     movea.l _ILBMBase,a6
  604. __CloseWGroup:
  605.     movea.l 4(sp),a0
  606.     jmp     _LVOCloseWGroup(a6)
  607.  
  608.  
  609. ;******************************* PutCk **********************************
  610. ;IFFP = PutCk(ckID, ckSize, context, data)
  611. ; d0           d0     d1      a0      a1
  612.  
  613.    XDEF   _PutCk,__PutCk
  614. _PutCk:
  615.     movea.l _ILBMBase,a6
  616. __PutCk:
  617.     movem.l  4(sp),d0/d1/a0/a1
  618.     jmp     _LVOPutCk(a6)
  619.  
  620.  
  621. ;******************************* PutCkHdr() ****************************
  622. ;IFFPreturn = PutCkHdr(chunkID, chunkSize, context)
  623. ;                        d0        d1        a0
  624.  
  625.    XDEF   _PutCkHdr,__PutCkHdr
  626. _PutCkHdr:
  627.     movea.l _ILBMBase,a6
  628. __PutCkHdr:
  629.     movem.l  4(sp),d0/d1/a0
  630.     jmp     _LVOPutCkHdr(a6)
  631.  
  632.  
  633. ;*************************** IFFWriteBytes() ***************************
  634. ;IFFP IFFWriteBytes(nBytes, context, data)
  635. ;                     d0       a0     a1
  636.  
  637.    XDEF   _IFFWriteBytes,__IFFWriteBytes
  638. _IFFWriteBytes:
  639.     movea.l _ILBMBase,a6
  640. __IFFWriteBytes:
  641.     movem.l  4(sp),d0/a0/a1
  642.     jmp     _LVOIFFWriteBytes(a6)
  643.  
  644.  
  645. ;****************************** PutCkEnd() ******************************
  646. ;IFFP = PutCkEnd(context)
  647. ; d0               a0
  648.  
  649.    XDEF   _PutCkEnd,__PutCkEnd
  650. _PutCkEnd:
  651.     movea.l _ILBMBase,a6
  652. __PutCkEnd:
  653.     move.l  4(sp),a0
  654.     jmp     _LVOPutCkEnd(a6)
  655.  
  656.  
  657. ;*************************** InitBMHdr() ********************************
  658. ;IFFP InitBMHdr(masking, compression, transparentColor,
  659. ;                 d0          d1              d2
  660. ;               pageWidth, pageHeight, BMHD, bitmap)
  661. ;                   d3         d4       a0     a1
  662.  
  663.    XDEF   _InitBMHdr,__InitBMHdr
  664. _InitBMHdr:
  665.     movea.l _ILBMBase,a6
  666. __InitBMHdr:
  667.     movem.l  d2/d3/d4,-(sp)
  668.     movem.l  16(sp),d0/d1/d2/d3/d4/a0/a1
  669.     jsr      _LVOInitBMHdr(a6)
  670.     movem.l  (sp)+,d2/d3/d4
  671.     rts
  672.  
  673. ;**************************** PutCMAP() *********************************
  674. ;IFFP PutCMAP(depth, context, colorTable)
  675. ;               d0     a0        a1
  676.  
  677.    XDEF _PutCMAP,__PutCMAP
  678. _PutCMAP:
  679.     movea.l _ILBMBase,a6
  680. __PutCMAP:
  681.     movem.l  4(sp),d0/a0/a1
  682.     jmp     _LVOPutCMAP(a6)
  683.  
  684.  
  685. ;******************************** PutBODY() ******************************
  686. ;IFFP = PutBODY(mask, context, bmHdr, bitmap)
  687. ; d0             d0     d1       a0     a1
  688.  
  689.    XDEF _PutBODY,__PutBODY
  690. _PutBODY:
  691.     movea.l _ILBMBase,a6
  692. __PutBODY:
  693.     movem.l  4(sp),d0/d1/a0/a1
  694.     jmp     _LVOPutBODY(a6)
  695.  
  696. ;============================ PackRow ===========================
  697. ;bytes = PackRow(rowSize, pSource, pDest)
  698. ; d0               d0       a0      a1
  699.  
  700.    XDEF _PackRow,__PackRow
  701. _PackRow:
  702.     movea.l _ILBMBase,a6
  703. __PackRow:
  704.     movem.l  4(sp),d0/a0/a1
  705.     jsr     _LVOPackRow(a6)
  706.     move.l  a6,d1
  707.     lea     _sourceptr,a6
  708.     move.l  a0,(a6)+
  709.     move.l  a1,(a6)
  710.     movea.l d1,a6
  711.     rts
  712.  
  713.   SECTION  ilbmdata,DATA
  714.  
  715. C_Vector2    dc.l 0
  716.  
  717. C_Vector1    dc.l 0
  718.  
  719.   XDEF _sourceptr,_destptr
  720. _sourceptr: dc.l 0
  721. _destptr    dc.l 0
  722.  
  723. PROPVector        dc.l 0
  724. FORMVector        dc.l 0
  725. ChunkVector        dc.l 0
  726. NonILBMVector    dc.l 0
  727.  
  728.     END
  729.