;*************************************************
;*                                               *
;*        HAM-Picture Loader  IFF-Format         *
;*              by Holger Gehrmann               *
;*                                               *
;*************************************************

jmp init

;#### exec/exec_lib.i ####

anex=-24

Supervisor      =anex-6
ExitIntr        =anex-12
Schedule        =anex-18
Eeschedule      =anex-24
Switch          =anex-30
Dispatch        =anex-36
Exception       =anex-42
InitCode        =anex-48
InitStruct      =anex-54
MakeLibrary     =anex-60
MakeFunctions   =anex-66
FindResident    =anex-72
InitResident    =anex-78
Alert           =anex-84
Debug           =anex-90
Disable         =anex-96
Enable          =anex-102
Forbid          =anex-108
Permit          =anex-114
SetSR           =anex-120
SuperState      =anex-126
UserState       =anex-132
SetIntVector    =anex-138
AddIntServer    =anex-144
RemIntServer    =anex-150
Cause           =anex-156
Allocate        =anex-162
Deallocate      =anex-168
AllocMem        =anex-174
AllocAbs        =anex-180
FreeMem         =anex-186
AvailMem        =anex-192
AllocEntry      =anex-198
FreeEntry       =anex-204
Insert          =anex-210
AddHead         =anex-216
AddTail         =anex-222
Remove          =anex-228
RemHead         =anex-234
RemTail         =anex-240
Enqueue         =anex-246
FindName        =anex-252
AddTask         =anex-258
RemTask         =anex-264
FindTask        =anex-270
SetTaskPri      =anex-276
SetSignal       =anex-282
SetExcept       =anex-288
Wait            =anex-294
Signal          =anex-300
AllocSignal     =anex-306
FreeSignal      =anex-312
AllocTrap       =anex-318
FreeTrap        =anex-324
AddPort         =anex-330
RemPort         =anex-336
PutMsg          =anex-342
GetMsg          =anex-348
ReplyMsg        =anex-354
WaitPort        =anex-360
FindPort        =anex-366
AddLibrary      =anex-372
RemLibrary      =anex-378
OldOpenLibrary  =anex-384
CloseLibrary    =anex-390
SetFunction     =anex-396
SumLibrary      =anex-402
AddDevice       =anex-408
RemDevice       =anex-414
Opendevice      =anex-420
CloseDevice     =anex-426
DoIO            =anex-432
SendIO          =anex-438
CheckIO         =anex-444
WaitIO          =anex-450
AbortIO         =anex-456
AddResource     =anex-462
RemResource     =anex-468
OpenResource    =anex-474
RawIOInit       =anex-480
RawMayGetChar   =anex-486
RawPutChar      =anex-492
RawDoFmt        =anex-498
GetCC           =anex-504
TypeOfMem       =anex-510
Procure         =anex-516
Vacate          =anex-522
OpenLibrary     =anex-528

;#### dos_lib.i ####

ando  =-24

Open          =ando-6
Close         =ando-12
Read          =ando-18
Write         =ando-24
Input         =ando-30
Output        =ando-36
Seek          =ando-42
DeleteFile    =ando-48
Rename        =ando-54
Lock          =ando-60
UnLock        =ando-66
DupLock       =ando-72
Examine       =ando-78
ExNext        =ando-84
Info          =ando-90
CreateDir     =ando-96
CurrentDir    =ando-102
IoErr         =ando-108
CreateProc    =ando-114
Exit          =ando-120
LoadSeg       =ando-126
UnLoadSeg     =ando-132
GetPacket     =ando-138
QueuePacket   =ando-144
DeviceProc    =ando-150
SetComment    =ando-156
SetProtection =ando-162
DateStamp     =ando-168
Delay         =ando-174
WaitForChar   =ando-180
ParentDir     =ando-186
IsInteractive =ando-192
Execute       =ando-198

lname:  dc.b "df0:golden",0,0,0
        dc.b "df0:sylvia1a",0
        dc.b "df0:sylvia2a",0
        dc.b "df0:sylvia3b",0
        dc.b "df0:denise1a",0
        dc.b "df0:denise2a",0
        dc.b "df0:denise3a",0
        dc.b "df0:stef1a",0,0,0
        dc.b "df0:stef2a",0,0,0
        dc.b "df0:stef3a",0,0,0
        dc.b "df0:stef2",0,0,0,0
        dc.b "df0:stef3b",0,0,0
        dc.b $ff,$ff

nados:  dc.b "dos.library",0
handle: dc.l 0
curname:dc.l lname

coptab: dc.w $0100,$4000,$3001,$ff00,$0100,$6800,$00e0,$0006,$00e4
        dc.w $0006,$00e8,$0006,$00ec,$0006,$00f0,$0006,$00f4,$0006
        dc.w $00e2,$00a4,$00e6,$00cc,$00ea,$00f4,$00ee,$011c,$00f2
        dc.w $0144,$00f6,$016c,$0108,$00c4,$010a,$00c4
        dc.w $0120,$0000,$0122,$0,$0124,$0,$0126,$0,$0128,$0,$012a
        dc.w $0,$012c,$0,$012e,$0,$0130,$0,$0132,$0,$0134,$0,$0136
        dc.w $0,$0138,$0,$013a,$0,$013c,$0,$013e,$0  
        dc.w $f701,$ff00,$0100,$4000,$ff01,$ff00,$0088,$ffff


init:   move.l #coptab,$dff080
        move.l #$dff180,a0
        move.b #32,d7
i1:     clr.l (a0)
        addq.l #4,a0
        subq.b #2,d7
        tst.b d7
        bne i1
        move.w #$0020,$dff002
        
        move.l $4,a5
        move.l #nados,a1
        move.l #0,d0
        jsr OpenLibrary(a5)
        move.l d0,a5

ju2:    move.l curname,d1
        move.w #1005,d2
        jsr Open(a5)
        move.l d0,handle
        add.l #13,curname
        move.l curname,a0
        cmp.b #$ff,(a0)
        bne ju1
        move.l #lname,curname
ju1:    move.l d0,d1
        move.l #$70000,d2
        move.w #48164,d3
        jsr Read(a5)
        move.l handle,d1
        move.l d1,d2
        jsr Close(a5)
        move.l #$70000,a0
        move.l #$60000,a1
        move.l #48100,d7
ju3:    move.l (a0),(a1)
        addq.l #4,a0
        addq.l #4,a1
        subq.l #4,d7
        tst.l d7
        bpl ju3
        jmp ju2
b1:     nop
        rts
 
