home *** CD-ROM | disk | FTP | other *** search
-
- * Maxon C++ Library:
- * Modul "istream_byte"
- * Jens Gelhar 16.04.92, 08.04.94
-
- xdef op__rightshift__istream__TRSc,op__rightshift__istream__TRUc
-
- xref fgetc_P06stream,ungetc__iP06stream,strtol__PCcPPci
- xref _errno,_fgetlong
-
- op__rightshift__istream__TRSc: ; (istream&, signed char&)
- move.l 4(a7),a0
- move.l (a0),a0
- move.l (a0),-(a7)
- jsr _fgetlong
- addq.l #4,a7
- move.l 8(a7),a0
- tst.l d1
- beq.b ciniPlus
- addq.l #1,d1
- beq.b ciniMinus
- tst.l d1
- bmi.b ciniMinInt
- bra.b ciniMaxInt
- ciniPlus:
- cmp.l #$7F,d0
- bls.b ciniOk
- ciniMaxInt:
- moveq #$7F,d0
- bra.b ciniErr
- ciniMinus:
- cmp.l #$FFFFFF80,d0
- bge.b ciniOk
- ciniMinInt:
- move.w #$80,d0
- ciniErr:
- move.l #1000,_errno ; ERANGE
- ciniOk: move.b d0,(a0)
- move.l 4(a7),d0
- rts
-
- op__rightshift__istream__TRUc: ; (istream*, unsigned char&)
- move.l 4(a7),a0
- move.l (a0),a0
- move.l (a0),-(a7)
- jsr _fgetlong
- addq.l #4,a7
- move.l 8(a7),a0
- tst.l d1
- bne.b cinuErr
- cmp.l #$FF,d0
- bls.b cinuOK
- cinuErr:
- moveq #-1,d0
- move.l #1000,_errno ; ERANGE
- cinuOK: move.b d0,(a0)
- move.l 4(a7),d0
- rts
-
- end
-