home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / C / OTL-MC6.DMS / in.adf / libsrc.lha / LIBSRC / readwrite.asm < prev    next >
Encoding:
Assembly Source File  |  1994-12-15  |  1.0 KB  |  52 lines

  1.  
  2. * Maxon/Himpelsoft C++ Projekt
  3. * Library-Modul "readwrite"
  4. * Jens Gelhar 05.10.92, 15.04.94, 15.12.94
  5.  
  6.     xdef    _fwrite,fwrite__PCvUiUiP06stream
  7.     xdef    _fread,fread__PvUiUiP06stream
  8.  
  9.     xref    __Readfile,__Writefile,uintmult,uintdiv
  10.  
  11. _fwrite:
  12. fwrite__PCvUiUiP06stream:
  13.     movem.l    d1-d3/a0/a1/a6,-(a7)
  14.     movem.l    6*4+4+4(a7),d0/d1; Größe und Anzahl der Objekte
  15.     bsr.b    realsize
  16.     move.l    6*4+4+12(a7),a0        ; stream
  17.     move.l    6*4+4(a7),d2
  18.     jsr    __Writefile
  19.     move.l    d0,d1
  20.     move.l    6*4+4+8(a7),d0        ; Anzahl
  21.     tst.l    d1
  22.     beq.b    .end
  23.     moveq    #0,d0
  24. .end    movem.l    (a7)+,d1-d3/a0/a1/a6
  25.     rts
  26.  
  27. _fread:
  28. fread__PvUiUiP06stream:
  29.     movem.l    d2/d3/a6,-(a7)
  30.     movem.l    3*4+4+4(a7),d0/d1; Größe und Anzahl der Objekte
  31.     bsr.b    realsize
  32.     move.l    3*4+4+12(a7),a0        ; stream
  33.     move.l    3*4+4(a7),d2
  34.     jsr    __Readfile
  35.     move.l    3*4+4+4(a7),d1        ; Größe
  36.     bsr.b    whichsize
  37.     movem.l    (a7)+,d2/d3/a6
  38.     rts
  39.  
  40. realsize:    ; aus Größe d0 und Anzahl d1 Vektorgröße (nach d3) berechnen
  41.     jsr    uintmult
  42.     move.l    d0,d3
  43.     rts
  44.  
  45. whichsize:    ; Anzahl d0, Größe d1: Vektoranzahl (nach d0) berechnen
  46.     tst.l    d1
  47.     beq.b    .0
  48.     jsr    uintdiv
  49. .0    rts
  50.  
  51.     end
  52.