home *** CD-ROM | disk | FTP | other *** search
-
- * Maxon C++ Library:
- * Modul "istream_short"
- * Jens Gelhar 16.04.92, 15.04.95
-
- xdef op__rightshift__istream__TRs,op__rightshift__istream__TRUs
-
- xref fgetc__P06stream,ungetc__iP06stream,strtol__PCcPPci
- xref _errno,_fgetlong
-
- op__rightshift__istream__TRs: ; (istream&, short&)
- 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 .Plus
- addq.l #1,d1
- beq.b .Minus
- tst.l d1
- bmi.b .MinInt
- bra.b .MaxInt
- .Plus
- cmp.l #$7FFF,d0
- bls.b .Ok
- .MaxInt
- move.w #$7FFF,d0
- bra.b .Err
- .Minus
- cmp.l #$FFFF8000,d0
- bge.b .Ok
- .MinInt
- move.w #$8000,d0
- .Err move.l #1000,_errno ; ERANGE
- .Ok move.w d0,(a0)
- move.l 4(a7),d0
- rts
-
- op__rightshift__istream__TRUs: ; (istream*, unsigned short&)
- 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 .Err
- cmp.l #$FFFF,d0
- bls.b .OK
- .Err moveq #-1,d0
- move.l #1000,_errno ; ERANGE
- .OK move.w d0,(a0)
- move.l 4(a7),d0
- rts
-
- end
-
-