home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 13 / AACD13.ISO / CDTools / IDer / Routines / GetFileData.s < prev    next >
Text File  |  1997-02-18  |  1KB  |  57 lines

  1.     Move.W    #FILEOPENERR,_ErrorCode
  2.  
  3.     Move.L    _FileName(PC),D1
  4.     Move.L    #MODE_OLDFILE,D2
  5.     CALL    Open,DOS        ;make sure the file actually exists
  6.     Move.L    D0,_FileHandle
  7.     Beq    LaunchDone
  8.  
  9.     Move.W    #FILEREADERR,_ErrorCode
  10.     Move.L    _FileHandle(PC),D1
  11.     Move.L    _FileData(PC),D2
  12.     Move.L    #IDData,D3        ;read in 2k of the file for Id'ing
  13.     CALL    Read
  14.     Tst.L    D0
  15.     Beq    LaunchDone
  16.  
  17.     Move.L    _FileHandle(PC),D1
  18.     Moveq    #0,D2
  19.     Moveq    #OFFSET_BEGINNING,D3
  20.     CALL    Seek
  21.  
  22. ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  23.     Tst.B    _Crunched
  24.     Bne.S    .LoadedOk
  25.  
  26.     Move.L    FileData,D0
  27.     Cmp.L    #'PP20',D0
  28.     Beq.S    .IsCrunched
  29.     Cmp.L    #'XPKF',D0
  30.     Bne.S    .LoadedOk
  31. .IsCrunched
  32. ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  33.     Tst.L    _XPKBase
  34.     Bne.S    .GotXPKLib
  35.  
  36.     Lea    XPKLibrary(PC),A1
  37.     Moveq    #0,D0
  38.     CALL    OpenLibrary,EXEC
  39.     Move.L    D0,_XPKBase
  40.     Beq.S    .LoadedOk
  41.  
  42. .GotXPKLib    Move.L    _FileHandle(PC),_XPKTags+4    ;for crunched files
  43.  
  44.     Move.W    #XPKERROR,_ErrorCode
  45.     Lea    _XPKTags(PC),A0
  46.     CALL    XpkUnpack,XPK
  47.     Tst.L    D0
  48.     Bne    LaunchDone
  49.  
  50.     Move.L    _OutputBuffer(PC),_FileData
  51.  
  52. ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  53. .LoadedOk    Move.L    _FileHandle(PC),D1
  54.     CALL    Close,DOS
  55.     Clr.L    _FileHandle        ;cleanup
  56.     Clr.W    _ErrorCode
  57.