Trailing-Edge
-
PDP-10 Archives
-
bb-bt99g-bb
-
srtflt.c05
There are 2 other files named srtflt.c05 in the archive. Click here to see a list.
REP 2/1 ;05C1
SUBTTL S.L. COVITZ 4-Jun-81
WIT
SUBTTL S.L. COVITZ/DMN 27-Oct-82
REP 8/1 ;05C2
;COPYRIGHT (C) 1979, 1981 BY DIGITAL EQUIPMENT CORPORATION
WIT
;COPYRIGHT (C) 1979, 1982 BY DIGITAL EQUIPMENT CORPORATION
INS 53/3 ;05C3
;**;[511] @LOCFLG - 1 line, Replace 1 line with 3. DMN 27-Oct-82
UNSFLG==100 ;[511] WANT UNSIGNED RESULT.
BNFLG==200 ;[511] TREATE BLANK AS NULL, NOT ZERO (BN FORMAT)
REP 57/3 ;05C4
CRTYP==1 ;CARRIAGE RETURN
WIT
NULTYP==1 ;[511] NULL
REP 23/4 ;05C5
SKIPGE 4(L) ;[OK] IS IT DOUBLE PRECISION?
TXO F,DPFLG ;YES. SET FLAG
WIT
;**;[511] @FLIRT: + 14L, Replace 1 line with 5. DMN 27-Oct-82
SKIPGE T2,4(L) ;[511] IS IT DOUBLE PRECISION?
TXO F,DPFLG ;YES. SET FLAG
TXNE T2,KY%FUN ;[511] UNSIGNED RESULT WANTED?
TXO F,UNSFLG ;[511] YES, SET FLAG.
TXNE T2,KY%FBN ;[511] BN FORMAT SPECIFIED?
TXO F,BNFLG ;[511] YES, COPY FLAG.
REP 39/4 ;05C6
GETCH2: CAIL T1,"0" ;CHECK FOR NUMBER
WIT
;**;[511] @GETCH2: Replace 1 line. DMN 27-Oct-82
GETCH2: JUMPE T1,GOTNUL ;[511] GO SET NULL FLAG FOR NULL
CAIL T1,"0" ;CHECK FOR NUMBER
REP 1/5 ;05C7
XCTTAB: JRST ILLCH ; (00) ILLEGAL CHAR
JRST BLNKIN ; (01) CR-LF
WIT
;**;[511] @XCTTAB: Replace 1 line with 3. DMN 27-Oct-82
GOTNUL: IORI P2,NULTYP ;[511] FLAG GOT NULL.
JRST GOTST ;[511] BACK FOR DISPATCH.
XCTTAB: JRST ILLCH ; (00) ILLEGAL CHAR
JRST NULLIN ;[511] (01) CR-LF
REP 29/5 ;05C8
JRST NOTEXP ;NO
GOTEXP: IORI P2,EXPTYP ;SET STATUS FOR EXPONENT
NOTEXP: SKIPG P7 ;END OF LINE SET
TRC P2,SPCTYP!CRTYP ;SET UP A BLANK
WIT
;**;[511] @GOTEXP: - 1L, Change several lines. DMN 27-Oct-82
JRST GOTST ;[511] NO
GOTEXP: IORI P2,EXPTYP ;SET STATUS FOR EXPONENT
REP 4/7 ;05C9
JRST ERROR1 ;THROW AWAY REST AND RESULT=0
WIT
;**;[511] @DELCK: + 2L, Change several lines. DMN 27-Oct-82
$ERROR (%,IFC,<Illegal floating point character found.>) ;[511]
JRST ERROR1 ;THROW AWAY REST AND RESULT=0
;[511] NULL IS A LEGAL CHARACTER, TREATED AS IF IT WERE A BLANK WITH
;[511] BLANK='NULL' SPECIFIED.
NULLIN: JUMPL T0,ENDF ;[511] DONE IF FREE FORMAT.
SOJA T0,GETNXT ;[511] OTHERWISE, SKIP IT.
;[511] THE STATE IS NOT DISTURBED BY BLANKS, THUS IF BZ IS ON (BLANK=ZERO)
;[511] WE CAN MIMIC THE CODE AT GETNXT (MOVING THE STATE TO BITS 30-32) AND
;[511] JUMP TO THE PLACE WHERE A DIGIT WOULD HAVE GONE.
REP 8/7 ;05C10
; TXNN DF,D%BZ ;BZ FORMAT ON?
; SOJA T0,GETNXT ;NO. SKIP THE SPACE
LSH P2,-^D30 ;YES. PUT STATE IN BITS 30-32
JRST GOT1 ;AND USE IT
WIT
TXNE F,BNFLG ;[511] BN (BLANK='NULL') FORMAT ON?
SOJA T0,GETNXT ;[511] YES, SKIP THE SPACE.
LSH P2,-^D30 ;[511] NO, DEFAULT TO BLANK='ZERO'.
JRST GOT1 ;[511] PUT STATE IN BITS 30-32
REP 78/8 ;05C11
RETFLT: TXNE F,MINFR ;RESULT NEGATIVE?
.DMOVN T0,T0 ;YES. SO NEGATE RESULT
MOVE T3,5(L) ;[C20] GET VARIABLE BYTE POINTER
WIT
;**;[511] @RETFLT: Change several lines. DMN 27-Oct-82
RETFLT: TXNE F,UNSFLG ;[511] WANT UNSIGNED RESULT?
JRST RETFL1 ;[511] YES, IGNORE SIGN TEST.
TXNE F,MINFR ;RESULT NEGATIVE?
.DMOVN T0,T0 ;YES. SO NEGATE RESULT
RETFL1: MOVE T3,5(L) ;[511][C20] GET VARIABLE BYTE POINTER
SUM 88602