home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 112.lha / ArpFileRequest / FileRequest.asm < prev    next >
Encoding:
Assembly Source File  |  1986-11-20  |  2.6 KB  |  113 lines

  1. *
  2. *   FileRequest.asm     13-Jan-88  
  3. *                   Copyright © 1988 by David Czaya  (PLink -Dave-)
  4. *            
  5. *   This is a relatively close translation of the C language demo
  6. *   'FileRequest.c' in 'Transactor for the Amiga' magazine [Vol. 1/Issue 1].
  7. *
  8. *   Above noted C version is Copyright © 1987, Scott Ballantyne
  9. *
  10. *   The arp.library (vers. 31 or higher) MUST be present for
  11. *   this program to function! 
  12. *
  13. *   This source and any resulting object and load files are public domain
  14. *   material.
  15. *
  16.  
  17.     INCLUDE 'libraries/arpbase.i'
  18.  
  19. _LVOOpenLibrary        EQU -$0228
  20. _LVOCloseLibrary      EQU -$019e
  21.  
  22. MAXPATH     EQU    ((FCHARS*10)+DSIZE+1)    ; size of a pathname
  23.  
  24. AbsExecBase     EQU    $4
  25. Version        EQU    31        ; do NOT use V32.01 because of a
  26.                     ; possible bug in FileRequest()
  27. ArpLib        EQUR    d7
  28.  
  29.  
  30. Print    MACRO
  31.     lea    \1,a0            ; string goes here
  32.     lea    Args,a1            ; args go here
  33.     LINKDOS    Printf
  34.     ENDM
  35.  
  36.  
  37. Init:
  38.         move.l    AbsExecBase,a6        
  39.         lea    ArpName,a1          ; open the arp library
  40.         moveq   #Version,d0             ; version number
  41.         LINKDOS OpenLibrary
  42.         move.l  d0,ArpLib
  43.         beq     FailToOpenArp
  44.  
  45.     exg    ArpLib,a6
  46.  
  47.         move.l  Default,Directory    ; default directory
  48.     lea     FR,a0            
  49.     clr.l    d0
  50.     LINKDOS FileRequest        ; open the file requester
  51.  
  52. Select    beq    SayCancel        ; user pressed cancel
  53.      cmp.b    #0,Filename
  54.      beq    NoFile            ; no file selected
  55.      move.l    #Filename,Args        
  56.      Print    FileStr            ; print filename
  57.      bra    SayDir
  58.  
  59. NoFile    move.l    #'',Args        
  60.      Print    NoFileStr        ; print 'no file selected'
  61.  
  62. SayDir    move.l    #Directory,Args        
  63.      Print    DirStr            ; print directory
  64.      bra    Quit    
  65.  
  66. SayCancel:    
  67.      move.l    #'',Args
  68.      Print    CancelStr        ; print 'pressed cancel'
  69.  
  70. Quit    exg    ArpLib,a6
  71.     move.l    ArpLib,a1
  72.     LINKDOS    CloseLibrary
  73.     moveq    #0,d0
  74.     rts                 ; Exit the program
  75.  
  76. FailToOpenArp:
  77.     move.l    #20,d0            ; return code 20
  78.     rts
  79.  
  80.  
  81.     SECTION DATA
  82.     CNOP  0,2
  83. Default        dc.b    'DF0:',0
  84. Greetings    dc.b    'Greetings! Click on stuff!',0
  85.  
  86. FileStr        dc.b    'Filename =  %s ',$0A,0
  87. DirStr        dc.b    'Directory = %s ',$0A,0
  88.  
  89. CancelStr    dc.b    'User cancelled requester!',$0A,0
  90. NoFileStr    dc.b    'No filename selected!',$0A,0
  91.  
  92. ArpName        ArpName
  93.  
  94. FR    dc.l    Greetings        ;  hailing text
  95.         dc.l    Filename                ;  filename array
  96.         dc.l    Directory               ;  directory array
  97.         dc.l    0                       ;  window, NULL = workbench
  98.         dc.w    0                       ;  flags, not used in this release
  99.         dc.l    0                       ;  wildfunc,  "        "
  100.         dc.l    0            ;  msgfunc,   "        "    
  101.  
  102.  
  103.     SECTION BSS
  104.     CNOP  0,2
  105.  
  106. Args        ds.l    1
  107.  
  108. Directory    ds.b    MAXPATH
  109. Filename    ds.b    FCHARS+1    ;  be careful to align properly
  110.         ds.w    0        ;  or stick at end!
  111.  end
  112.  
  113.