home *** CD-ROM | disk | FTP | other *** search
- SECTION code
- XDEF _fread
- ;
- ; Line 8: {
- ;
- _fread:
- LINK A6,#$0
- MOVEM.L D3/D4/D5/D6/D7/A2/A3,-(A7)
- MOVEA.L ($14,A6),A2
- MOVE.L ($C,A6),D5
- MOVE.L ($10,A6),D6
- ;
- ; Line 10: int len = count * size,i;
- ;
- MOVE.L D6,-(A7)
- MOVE.L D5,-(A7)
- BSR __mulu
- ADDQ.W #$8,A7
- MOVE.L D0,D7
- ;
- ; Line 11: char *lbuf = buf;
- ;
- MOVEA.L ($8,A6),A3
- ;
- ; Line 12: if (stream->token != 0x444c)
- ;
- CMPI.W #$444C,($1C,A2)
- BEQ L_0
- ;
- ; Line 13: return 0;
- ;
- MOVEQ #$0,D0
- BRA L_2
- L_0:
- ;
- ; Line 14: if (!(stream->flags & 0x0001 )) {
- ;
- MOVE.L ($4,A2),D0
- ANDI.L #$1,D0
- TST.L D0
- BNE L_3
- ;
- ; Line 15: stream->flags |= 0x0010 ;
- ;
- ORI.L #$10,($4,A2)
- ;
- ; Line 16: return 0;
- ;
- MOVEQ #$0,D0
- BRA L_2
- L_3:
- MOVEQ #$0,D3
- BRA L_7
- L_5:
- ;
- ; Line 19: rv = _basegetc(stream);
- ;
- MOVE.L A2,-(A7)
- BSR __basegetc
- ADDQ.W #$4,A7
- MOVE.L D0,D4
- ;
- ; Line 20: if (rv == (-1) )
- ;
- CMPI.L #$FFFFFFFF,D4
- BNE L_8
- ;
- ; Line 21: return i / size;
- ;
- MOVE.L D3,-(A7)
- MOVE.L D5,-(A7)
- BSR __divu
- ADDQ.W #$8,A7
- BRA L_2
- L_8:
- ;
- ; Line 22: *lbuf++ = (char) rv;
- ;
- MOVEA.L A3,A0
- ADDQ.W #$1,A3
- MOVE.B D4,(A0)
- ;
- ; Line 23: }
- ;
- ADDQ.L #$1,D3
- L_7:
- ;
- ; Line 18: for (i=0; i < len; i++) {
- ;
- CMP.L D7,D3
- BLT L_5
- L_6:
- ;
- ; Line 24: return count;
- ;
- MOVE.L D6,D0
- L_2:
- MOVEM.L (A7)+,D3/D4/D5/D6/D7/A2/A3
- UNLK A6
- RTS
- SECTION data
- SECTION bss
- XREF __divu
- XREF __basegetc
- XREF __mulu
-