home *** CD-ROM | disk | FTP | other *** search
/ Enigma Amiga Life 109 / EnigmaAmiga109CD.iso / software / testi / corsoasm / sorgenti7 / lezione11o1.s < prev    next >
Text File  |  1995-09-29  |  2KB  |  86 lines

  1.  
  2. ; Lezione11o1.s   Caricamento di un file dati usando la dos.library
  3.  
  4.     Section DosLoad,code
  5.  
  6. ;    Include    "DaWorkBench.s"    ; togliere il ; prima di salvare con "WO"
  7.  
  8. Maincode:
  9.     movem.l    d0-d7/a0-a6,-(SP)    ; Salva i registri nello stack
  10.     move.l    4.w,a6            ; ExecBase in a6
  11.     LEA    DosName(PC),A1        ; Dos.library
  12.     JSR    -$198(A6)        ; OldOpenlib
  13.     MOVE.L    D0,DosBase
  14.     BEQ.s    EXIT            ; Se zero, esci! Errore!
  15.  
  16. Mouse:
  17.     btst.b    #6,$bfe001    ; ciaapra - tasto sin. del mouse
  18.     bne.s    Mouse
  19.  
  20.     bsr.s    CaricaFile    ; Carica un file con la dos.library
  21.  
  22.     MOVE.L    DosBase(PC),A1    ; DosBase in A1 per chiudere la libreria
  23.     move.l    4.w,a6        ; ExecBase in A6
  24.     jsr    -$19E(a6)    ; CloseLibrary - dos.library CHIUSA
  25. EXIT:
  26.     movem.l    (SP)+,d0-d7/a0-a6 ; Riprendi i vecchi valori dei registri
  27.     RTS              ; Torna all'ASMONE o al Dos/WorkBench
  28.  
  29.  
  30. DosName:
  31.     dc.b    "dos.library",0
  32.     even
  33.  
  34. DosBase:        ; Puntatore alla Base della Dos Library
  35.     dc.l    0
  36.  
  37. *****************************************************************************
  38. ; Routine che carica un file di una lunghezza specificata e con un nome
  39. ; specificato. Occorre mettere l'intero path, se questo esiste!
  40. *****************************************************************************
  41.  
  42. CaricaFile:
  43.     move.l    #filename,d1    ; indirizzo con stringa "file name + path"
  44.     MOVE.L    #$3ED,D2    ; AccessMode: MODE_OLDFILE - File che esiste
  45.                 ; gia', e che quindi potremo leggere.
  46.     MOVE.L    DosBase(PC),A6
  47.     JSR    -$1E(A6)    ; LVOOpen - "Apri" il file
  48.     MOVE.L    D0,FileHandle    ; Salva il suo handle
  49.     BEQ.S    ErrorOpen    ; Se d0 = 0 allora c'e' un errore!
  50.  
  51.     MOVE.L    D0,D1        ; FileHandle in d1 per il Read
  52.     MOVE.L    #buffer,D2    ; Indirizzo Destinazione in d2
  53.     MOVE.L    #42240,D3    ; Lunghezza del file (ESATTA!)
  54.     MOVE.L    DosBase(PC),A6
  55.     JSR    -$2A(A6)    ; LVORead - leggi il file e copialo nel buffer
  56.  
  57.     MOVE.L    FileHandle(pc),D1 ; FileHandle in d1
  58.     MOVE.L    DosBase(PC),A6
  59.     JSR    -$24(A6)    ; LVOClose - chiudi il file.
  60. ErrorOpen:
  61.     rts
  62.  
  63.  
  64. FileHandle:
  65.     dc.l    0
  66.  
  67. ; Stringa di testo, da terminare con uno 0, a cui dovra' puntare d1 prima di
  68. ; fare l'OPEN della dos.lib. Conviene mettere l'intero path.
  69.  
  70. Filename:
  71.     dc.b    "assembler2:sorgenti7/amiet.raw",0    ; path+nomefile
  72.     even
  73.  
  74. ******************************************************************************
  75. ; Buffer dove viene caricata l'immagine da disco (o hard disk) tramite doslib
  76. ******************************************************************************
  77.  
  78.     section    mioplanaccio,bss
  79.  
  80. buffer:
  81. LOGO:
  82.     ds.b    6*40*176    ; 6 bitplanes * 176 lines * 40 bytes (HAM)
  83.  
  84.     end
  85.  
  86.