home *** CD-ROM | disk | FTP | other *** search
/ The CDPD Public Domain Collection for CDTV 4 / CDPD_IV.bin / fish / 911-930 / ff919a / bbbf / unpacklib / sources / example2.s < prev    next >
Text File  |  1994-05-04  |  3KB  |  128 lines

  1. ; Unpack.library Example #2: How To Make A Scan Routine
  2. ;
  3.  
  4.     INCDIR    "Includes1.3:Include1.3/"
  5.     INCLUDE    "Own/Unpack.i"
  6.     INCLUDE    "Libraries/Dos_lib.i"
  7.     INCLUDE    "Exec/Exec_lib.i"
  8.  
  9.  
  10. START    move.l    4.w,a6
  11.     moveq    #0,d0
  12.     lea    dosname(pc),a1
  13.     jsr    _LVOOpenLibrary(a6)    ;Open Dos.library
  14.     move.l    d0,dosbase
  15.     beq    doserr
  16.  
  17.     moveq    #34,d0
  18.     lea    unpname(pc),a1
  19.     jsr    _LVOOpenLibrary(a6)    ;Open Unpack.library V34+
  20.     move.l    d0,unpbase
  21.     bne    unpok
  22.  
  23. ; Error While Opening The Unpack.library
  24.  
  25. UNPFAIL    move.l    dosbase(pc),a6
  26.     jsr    _LVOOutPut(a6)        ;Get The CLI Window File Handler
  27.  
  28.     move.l    d0,d1            ;File Handler
  29.     move.l    #unperrt,d2        ;Pointer To Error Text
  30.     moveq    #36,d3            ;Length Of Text
  31.     jsr    _LVOWrite(a6)        ;Write Text In Window
  32.     bra    unperr
  33.  
  34. ; Test Revision Number
  35.  
  36. UNPOK    move.l    d0,a6
  37.     jsr    UnpackNum(a6)        ;Get Version Etc.
  38.     cmp.w    #20,d1            ;Revision < 20
  39.     blt    unpfail            ;Yop!
  40.  
  41. ; Every Thing Are OK!
  42.  
  43.     bsr    main            ;Jump To Main Routine
  44.  
  45.     move.l    4.w,a6
  46.     move.l    unpbase(pc),a1
  47.     jsr    _LVOCloseLibrary(a6)    ;Close Unpack.library
  48.  
  49. UNPERR    move.l    4.w,a6
  50.     move.l    dosbase(pc),a1
  51.     jsr    _LVOCloseLibrary(a6)    ;Close Dos.library
  52.  
  53. DOSERR    moveq    #0,d0
  54.     rts
  55. ;------------------------------------------------------------------------------
  56. ; Main Routine
  57. ;
  58. ; Returns the error number in D0 or 0
  59. ;
  60.  
  61. MAIN    move.l    unpbase(pc),a6
  62.     jsr    AllocCInfo(a6)        ;Allocate Cruncher Info Structure
  63.     move.l    d0,cinfo
  64.     beq    cinferr
  65.  
  66. ; Initialize Structure
  67.  
  68.     move.l    d0,a0
  69.     move.l    #arcpath,UI_Path(a0)
  70.     move.l    #scan,UI_Jump(a0)
  71.     move.b    #UFN_Delete,UI_Flag(a0)    ;NOTE: The Delete Flag Are Set
  72.  
  73.     lea    filnam(pc),a1        ;Pointer To A Filename
  74.     jsr    DetermineFile(a6)
  75.     beq    deterr            ;A Error!!!
  76.  
  77.     moveq    #0,d0
  78.     jsr    Unpack(a6)        ;Unpack The File
  79.     bne    unpacok
  80.  
  81. LOADERR
  82. DETERR1    move.w    UI_ErrorNum(a0),d0    ;Get Error Number
  83.  
  84. UNPACOK    move.l    cinfo(pc),a0
  85.     jsr    FreeCInfo(a6)        ;Free Cruncher Info Structure
  86. CINFERR    rts
  87.  
  88. ; Error Handling Routine For Determine
  89.  
  90. DETERR    cmp.w    #ERR_Determine,UI_ErrorNum(a0)
  91.     bne    deterr1
  92.  
  93.     jsr    LoadFile(a6)        ;Load The File
  94.     beq    loaderr
  95.     bsr    scan            ;Call Your Scan Routine
  96.     jsr    FreeFile(a6)        ;Free The File From Memory
  97.     moveq    #0,d0
  98.     bra    unpacok
  99. ;------------------------------------------------------------------------------
  100. ; The Scan Routine
  101. ;
  102.  
  103. SCAN    move.l    cinfo(pc),a0
  104.     move.l    UI_DecrunchAdr(a0),a1    ;Start Address Of Decrunched File
  105.     move.l    UI_DecrunchLen(a0),d0    ;Length Of Decrunched File
  106.     move.l    UI_CruncherName(a0),a2    ;Cruncher Name
  107.  
  108.     move.w    #$8000,d7
  109. SCAN1    move.w    d7,d6
  110.     and.w    #$0fff,d6
  111.     move.w    d6,$dff180
  112.     dbra    d7,scan1
  113.     rts
  114. ;------------------------------------------------------------------------------
  115. DOSBASE    dc.l    0
  116. UNPBASE    dc.l    0
  117. CINFO    dc.l    0
  118. ;------------------------------------------------------------------------------
  119. DOSNAME    dc.b    "dos.library",0
  120. UNPNAME    dc.b    "unpack.library",0
  121. ;-----------------------------------------------------------------------------
  122. UNPERRT    dc.b    "You need the unpack.library V34.20+",10
  123. ARCPATH    dc.b    "RAM:",0        ;Enter Archive Path Here!!!
  124. FILNAM    dc.b    "DF0:CrunchedFile",0    ;Enter Filename Here!!!
  125.     even
  126. ;------------------------------------------------------------------------------
  127. SLUT
  128.