home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / C / MAXONC3_6OF8.DMS / in.adf / LIBSRC.LHA / LIBSRC / istream_line.asm < prev    next >
Encoding:
Assembly Source File  |  1994-04-15  |  1.2 KB  |  53 lines

  1.  
  2. * Maxon C++:
  3. * Library-Modul "istream_line"
  4. * Jens Gelhar 24.04.92, 15.04.94
  5.  
  6.     xdef    getline__istream__TPcic,read__istream__TPci
  7.     xdef    getline__istream__TPUcic,read__istream__TPUci
  8.  
  9.     xref    get__istream__T,fread__PvUiUiP06stream
  10.  
  11. getline__istream__TPcic:    ;  Parameter: istream&, char*, int max, char delim
  12. getline__istream__TPUcic:    ; Parameter: istream&, char*, int max, char delim
  13.     move.l    a2,-(a7)
  14.     move.l    4+4+0(a7),-(a7)    ; istream&
  15.     move.l    8+4+4(a7),a2    ; String
  16.     move.l    8+4+8(a7),d1    ; max
  17.     subq.l    #1,d1
  18.     blt.b    .end
  19.     beq.b    .ende1
  20. .loop    jsr    get__istream__T
  21.     cmp.l    #-1,d0            ; EOF?
  22.     beq.b    .ende1
  23.     cmp.b    8+4+12(a7),d0
  24.     beq.b    .ende1
  25.     move.b    d0,(a2)+
  26.     subq.l    #1,d1
  27.     bne.b    .loop
  28. .ende1    clr.b    (a2)
  29. .end    addq.l    #4,a7
  30.     move.l    (a7)+,a2
  31.     move.l    4(a7),d0
  32.     rts
  33.  
  34. read__istream__TPci:
  35. read__istream__TPUci:    ; Parameter: istream&, char*, int
  36.     move.l    4+8(a7),d0    ; Anzahl
  37.     beq.b    .brk1
  38.     bmi.b    .brk1
  39.     move.l    a0,-(a7)
  40.     move.l    4+4(a7),a0       ; istream
  41.     move.l    (a0),a0          ; ios
  42.     move.l    (a0),-(a7)       ; FILE
  43.     move.l    d0,-(a7)         ; num
  44.     pea    1.w                 ; size = Byte
  45.     move.l    12+4+4+4(a7),-(a7)
  46.     jsr    fread__PvUiUiP06stream
  47.     lea    16(a7),a7
  48.     move.l    (a7)+,a0
  49. .brk1    move.l    4(a7),d0
  50.     rts
  51.  
  52.     end
  53.