                include     "requester/FileIO.i"
                include     "intuition/intuition.i"
                include     "graphics/view.i"
                include     "exec/libraries.i"


NULL            EQU         $0

                XDEF        saveiff


                XREF        _AbsExecBase
                XREF        _LVOOpenWindow
                XREF        _LVOWaitPort
                XREF        _LVOGetMsg
                XREF        _LVOReplyMsg
                XREF        _LVOOpen
                XREF        _LVOWrite
                XREF        _LVORead
                XREF        _LVOClose
                XREF        _LVOCloseWindow
                XREF        _LVOOpenScreen
                XREF        _LVOCloseScreen
                XREF        intuitionbase
                XREF        dosbase
                XREF        gfxbase
                XREF        Main
                XREF        tempscr2
                XREF        tempscr
                XREF        ScreenBack
                XREF        bp1
                XREF        bp2
                XREF        bp3
                XREF        bp4
                XREF        _LVOMoveScreen
                XREF        MyScreen

                XREF        requesterbase
                XREF        FileIO

                XREF        _LVOSetDrMd
                XREF        _LVOSetAPen
                XREF        _LVOSetBPen

                XDEF        IFFFormLen
                XDEF        PicSize
                XDEF        PageSize
                XDEF        BodyLen
                XDEF        PicSizeSV
                XDEF        PicWSV
                XDEF        PicHSV



saveiff:
                move.l      #9,d2
MoveCPlp:
                move.l      MyScreen,a0
                move.l      #0,d0
                move.l      #-20,d1
                move.l      intuitionbase,a6
                jsr         _LVOMoveScreen(a6)
                dbra        d2,MoveCPlp

                tst.l       FileIO
                beq         Quit

                move.l      FileIO,a0
                move.l      #Title,FILEIO_TITLE(a0)
                move.l      MyScreen,a1
                move.l      requesterbase,a6
                jsr         _LVODoFileIOWindow(a6)

                move.l      d0,NameBuffer
                move.l      d0,Return
                beq         Quit
                cmpi.l      #-1,d0
                beq         Quit


                move.l      requesterbase,a6
                move.l      #FileName,a1
                move.l      FileIO,a0
                jsr         _LVOGetFullPathname(a6)
                move.l      d0,NameBuffer

savesamp:
                move.l      dosbase,a6
                move.l      NameBuffer,d1
                move.l      #1006,d2
                jsr         _LVOOpen(a6)

                move.l      d0,Return
                move.l      d0,FileHand
                beq         QuitSave




            move.l      FileHand,d1
            move.l      #IffForm,d2
            move.l      #FormLen,d3
            LINKLIB     _LVOWrite,dosbase

            move.l      tempscr,a0
            move.l      bp1,a1
            move.l      bp2,a2
            move.l      bp3,a3
            move.l      bp4,a4

            move.l      PicHSV,d1
Linemov:
            move.l      PicWSV,d0
mov1:
            move.b      (a1)+,(a0)+
            dbra        d0,mov1

            move.l      PicWSV,d0
mov2:
            move.b      (a2)+,(a0)+
            dbra        d0,mov2

            move.l      PicWSV,d0
mov3:
            move.b      (a3)+,(a0)+
            dbra        d0,mov3

            move.l      PicWSV,d0
mov4:
            move.b      (a4)+,(a0)+
            dbra        d0,mov4

            dbra        d1,Linemov

            move.l      FileHand,d1
            move.l      tempscr,d2
            move.l      PicSizeSV,d3
            LINKLIB     _LVOWrite,dosbase


QuitSave:
                move.l      dosbase,a6
                move.l      FileHand,d1
                jsr         _LVOClose(a6)
Quit:
                move.l      #6,d2
MoveCPlp2:
                move.l      MyScreen,a0
                move.l      #0,d0
                move.l      #20,d1
                move.l      intuitionbase,a6
                jsr         _LVOMoveScreen(a6)
                dbra        d2,MoveCPlp2

Abort:
                move.l      _AbsExecBase,a6
                clr.l       d0
                jmp         Main

FileHand      dc.l        0
Return          dc.l        0



Buffer:
            dcb.b           250,0

NameBuffer:
            dc.l            0

FileName:
            dcb.b           250,0

IffForm:
                dc.b        'FORM'
IFFFormLen:
                dc.l        $0001f460
                dc.b        'ILBMBMHD'
                dc.l        $00000014
PicSize:
                dc.w        $0280,$0190
                dc.w        $0000,$0000
                dc.b        $04
                dc.b        $00
                dc.b        $00
                dc.b        $00
                dc.w        $0000
                dc.b        $0a,$0b
PageSize:
                dc.w        $0280,$0190
                dc.b        'CMAP'
                dc.l        $00000030
IFFColMap:
                dc.b        $00,$00,$00
                dc.b        $10,$10,$10
                dc.b        $20,$20,$20
                dc.b        $30,$30,$30
                dc.b        $40,$40,$40
                dc.b        $50,$50,$50
                dc.b        $60,$60,$60
                dc.b        $70,$70,$70
                dc.b        $80,$80,$80
                dc.b        $90,$90,$90
                dc.b        $a0,$a0,$a0
                dc.b        $b0,$b0,$b0
                dc.b        $c0,$c0,$c0
                dc.b        $d0,$d0,$d0
                dc.b        $e0,$e0,$e0
                dc.b        $f0,$f0,$f0

                dc.b        'BODY'
BodyLen:
                dc.l        $0001f400

FormLen         EQU         *-IffForm
                cnop        0,2

PicSizeSV   ds.l        1
PicWSV      ds.l        1
PicHSV      ds.l        1


Title:
            dc.b        '         = SAVE IFF =         ',0
            cnop        0,2

