                                                                                                                          /
/            TRIPLE PRECISION ARITHMETIC PACKAGE
/
/            BY . . .
/            JOSEPH A. RODNITE
/            INFORMATION CONTROL SYSTEMS INC
/            ANN ARBOR, MICHIGAN
/
/   ASSUME A 36 BIT ACCUMULATOR REGISTER IN 
/   CORE LOCATIONS 40, 41, 42.
/   ASSUME A 36 BIT MULTIPLIER QUOTIENT REGISTER
/   IN CORE LOCATIONS 43, 44, 45.
/
/   THE SUBROUTINE PACKAGE CONSISTS OF SUBROUTINES
/   TO MANIPULATE 36 BIT NUMBERS.  EACH SUBROUTINE
/   OPERATES ON THE ACCUMULATOR OR MULTIPLIER 
/   QUOTIENT REGISTER OR BOTH.  
/
/   THE GENERAL CALL IS . . .
/
/                     JMS I XXXX
/                     ADDRESS OF OPERAND
/
/   WHERE XXXX IS THE LOCATION OF ONE OF THE SUBROUTINES
/   INDIRECT TRANSFER LOCATIONS.  THE ADDRESS SPECIFIED
/   SHOULD BE OF THE HIGH ORDER PART OF THE WORD.  
/
/   LOCATIONS 46-52 AND 10 AND 11 ARE USED BY THE 
/   ROUTINES.  
/
/
/
/   MULTIPLY (LOC 53)
/
/   MULTIPLY THE 36 BIT 2'S COMPLEMENT INTEGER
/   IN THE MQ REGISTER BY THE ARGUEMENT.
/   THE 72 BIT PRODUCT IS FOUND IN THE AC-MQ.
/   THE HIGHER ORDER PART IS IN THE AC.
/
/
/   DIVIDE (LOC 54)
/
/   DIVIDE THE 72 BIT 2'S COMPLEMENT INTEGER IN
/   THE AC-MQ REGISTER BY THE ARGUEMENT.  
/   THE QUOTIENT APPEARS IN THE MQ AND THE
/   REMAINDER APPEARS IN THE AC.
/   IF THE QUOTIENT WOULD BE GREATER THAN 
/   35 BITS THE RESULTS PRODUCED ARE MEANINGLESS.
/   THE SIGN OF THE REMAINDER IS ALWAYS POSITIVE.
/
/
/   ADD (LOC 55)
/
/   ADD THE ARGUEMENT TO THE ACCUMULATOR.  
/   THE RESULT APPEARS IN THE ACCUMULATOR.
/
/
/   SUB (LOC 56)
/
/   SUBTRACT THE ARGUEMENT FROM THE ACCUMULATOR.
/   THE RESULT APPEARS IN THE ACCUMULATOR.
/
/
/   OUTPUT CONVERSION (LOC 57)
/
/   CONVERT TO DECIMAL AND TYPE THE 11 DECIMAL
/   DIGIT NUMBER FOUND IN THE ARGUEMENT.
/   WARNING: THE AC AND MQ ARE ALTERED.
/
/
/   INPUT CONVERSION (LOC 60)
/
/   ACCEPT A SIGNED DECIMAL NUMBER FROM
/   THE KEYBOARD OF THE ASR33.  THE BINARY
/   NUMBER PRODUCED WILL APPEAR IN THE 
/   ACCUMULATOR UPON RETURN.  THE MQ IS
/   NOT ALTERED.  THE FIRST NON-NUMERIC
/   CHARACTER TERMINATES THE READING.  
/   THE TYPING OF A SIGN (+,-) ALWAYS
/   STARTS THE CONVERSION PROCESS OVER
/   AGAIN.  HENCE AN ERROR MAY BE 
/   CORRECTED BY TYPING A SIGN AND
/   STARTING OVER AGAIN.  
/
/
/
/   THE TOTAL SUBROUTINE PACKAGE REQUIRES
/   4 PAGES OF CORE STORAGE (1000 OCTAL LOC).
/   THE BINARY TAPE FURNISHED OCCUPIES
/   LOCS 6600-7600.
/
                                                             /
/   TRIPLE PRECISION MULTIPLY ROUTINE
/
/   DEFINE HARDWARE 36 BIT ACCUMULATOR
/
ORG=6600
ACL=42
ACM=41
ACH=40
MQL=45
MQM=44
MQH=43
SRL=52
SRM=51
SRH=50
ERAS=47
IR0=10
IR1=11
/
/
*ORG
TMPY, 0
     CLA CLL
     DCA ACL    /ZERO 36 BIT ACCUMULATOR
     DCA ACM
     DCA ACH
     DCA SIGN   /SET SIGN OF RESULT SWITCH
     TAD I TMPY /ADDRESS OF MULTIPLIER
     DCA ERAS
     TAD I ERAS /HIGH ORDER MULTIPLIER
     DCA SRH
     ISZ ERAS
     TAD I ERAS /MED ORDER MULTIPLIER
     DCA SRM
     ISZ ERAS
     TAD I ERAS /LOW ORDER MULTIPLIER
     DCA SRL
     TAD MQH    /HIGH ORDER MQ
     SMA        /IS IT NEGATIVE
     JMP .+4    /NO
     ISZ SIGN   /YES ... SET SIGN SWITCH
     JMS COMP   /COMPLEMENT MQ
     MQH
     CLA CLL
     TAD SRH    /HIGH ORDER SR
     SMA        /IS IT NEGATIVE
     JMP .+4    /NO
     ISZ SIGN   /YES ... SET SIGN SWITCH
     JMS COMP   /COMPLEMENT SR
     SRH
     CLA CLL
     TAD M36    /-36
     DCA SHCT   /TO SHIFT COUNTER
/
/   THIS IS THE MULTIPLICATION LOOP
/
MLP, CLA CLL
     TAD MQL    /LOW ORDER MQ
     RAR        /OBTAIN RIGHTMOST BIT
     SNL        /WAS IT A 1
     JMP SHFT   /NO ... JUST SHIFT
     CLA CLL    /YES ... ADD SR TO AC
     TAD ACL    /LOW ORDER
     TAD SRL
     DCA ACL
     GLK        /OVERFLOW BIT
     TAD ACM    /MED ORDER
     TAD SRM
     DCA ACM
     GLK        /OVERFLOW BIT
     TAD ACH    /HIGH ORDER
     TAD SRH
     DCA ACH
/
/   NOW SHIFT AC AND MQ RIGHT ONE PLACE
/   AS A 72 BIT REGISTER
/
SHFT, CLA CLL
     DCA ERAS   /ZERO SHIFTED BIT LOC
     TAD AACH   /ADDRESS OF HIGH ORDER AC-1
     DCA IR0    /TO AUTO-INDEX REGISTER 0
     TAD AACH
     DCA IR1    /ALSO TO AUTO INDEX REGISTER 1
     TAD M6     /-6
     DCA ERAS-1 /TO AN INDEX LOCATION
     TAD I IR0  /WORD
     RAR        /SHIFT RIGHT 1
     TAD ERAS   /+ BIT SHIFTED OUT OF LAST WORD
     DCA I IR1  /TO SAME WORD
     RAR        /LINK TO HIGH ORDER AC
     DCA ERAS   /TO BIT LOST LOC
     ISZ ERAS-1 /INDEX ON NO OF WORDS IN AC-MQ (6)
     JMP .-7    /RETURN FOR MORE
     ISZ SHCT   /INDEX ON SHIFT COUNTER
     JMP MLP     /RETURN FOR MORE
/
/   OVER WITH MULTIPLICATION
/   NOW SET SIGN OF RESULT
/
     CLA CLL
     TAD SIGN   /SIGN INDEX LOC
     RAR        /SHIFT RIGHT ONE
     SNL        /WAS IT AN ODD NO
     JMP I TMPY /NO ... RETURN WITH POSITIVE NO IN AC-MQ
     JMS C72    /YES ... COMPLEMENT 72 BIT PRODUCT
     JMP I TMPY /RETURN WITH COMPLEMENTED PRODUCT IN AC-MQ
/
/   SUBROUTINE TO COMPLEMENT AC AND MQ
/   AS 1 72 BIT REGISTER
/
C72, 0
     CLA CLL
     TAD M6     /-6
     DCA ERAS   /TO AN INDEX LOC
     TAD AMQL   /ADDRESS OF LOW ORDER MQ
     DCA ERAS-1 /TO ADDRESS INDEX
     TAD MQL    /LOW ORDER MQ
     CIA        /COM+1
     JMP .+7    /ENTER LOOP IN MIDDLE
/
     CLA CMA CLL CML
     TAD ERAS-1 /-1+ADDRESS OF CUR REGISTER
     DCA ERAS-1 /NEW ADDRESS
     TAD I ERAS-1 /CONTENTS OF CUR REGISTER
     CMA        /COMPLEMENT IT
     TAD SIGN   /+OVERFLOW BIT
     DCA I ERAS-1 /BACK TO REGISTER
     GLK        /OVERFLOW BIT
     DCA SIGN   /TO A CORE LOC
     ISZ ERAS   /INDEX ON NO OF REGISTERS
     JMP .-12   /RETURN FOR MORE
     JMP I C72  /RETURN WITH COMPLEMENTED NO IN AC-MQ
/
/   SUBROUTINE TO COMPLEMENT A 36 BIT REGISTER
/
COMP, 0
     CLA IAC    /1
     TAD I COMP /+HIGH ORDER ADDRESS
     DCA ERAS-1 /GIVES MED ORDER ADDRESS
     CLA CLL IAC /1
     TAD ERAS-1 /+MED ORDER ADDRESS
     DCA ERAS   /GIVES LOW ORDER ADDRESS
     TAD I ERAS /LOW ORDER WORD
     CIA        /COM+1
     DCA I ERAS /NEW LOW ORDER WORD
     GLK        /OVERFLOW BIT
     DCA ERAS
     TAD I ERAS-1 /MED ORDER WORD
     CMA        /COMPLEMENT IT
     TAD ERAS   /+OVERFLOW BIT
     DCA I ERAS-1 /NEW MED ORDER
     GLK        /OVERFLOW BIT
     DCA ERAS
     TAD I COMP /HIGH ORDER ADDRESS
     DCA ERAS-1
     TAD I ERAS-1 /HIGH ORDER WORD
     CMA        /COMPLEMENT IT
     TAD ERAS   /+OVERFLOW BIT
     DCA I ERAS-1 /NEW HGIH ORDER
     ISZ COMP   /INDEX OVER ADDRESS
     JMP I COMP /RETURN
/
/   LOCAL CONSTANTS
/
M6,  0-6
M36, 0-44
AACH, ACH-1
AMQL, MQL
SHCT, 0
SIGN, 0
                                                             /
/   TRIPLE PRECISION DIVIDE
/
*ORG+200
TDIV, 0
     CLA CLL
     DCA DSGN     /SET SIGN OF RESULT SWITCH
     TAD DM3      /-3
     DCA ERAS-1   /TO AN INDEX LOC
     TAD I TDIV   /ADDRESS OF DIVISOR
     ISZ TDIV     /INDEX FOR EXIT
     DCA ERAS
     TAD I ERAS   /HIGH ORDER DIVISOR
     SNA
     ISZ ERAS-1
     DCA SRH
     ISZ ERAS
     TAD I ERAS   /MED ORDER DIVISOR
     SNA
     ISZ ERAS-1
     DCA SRM
     ISZ ERS
     TAD I ERAS   /LOW ORDER DIVISOR
     SZA
     JMP .+4
     ISZ ERAS-1
     JMP .+2
     HLT          /HALT ON AN ATTEMPT TO DIVIDE BY 0
     DCA SRL
/
/   NOW CHECK SIGNS OF EVERYTHING
/
     TAD ACH      /HIGH ORDER AC
     SMA          /IS IT NEGATIVE
     JMP .+3      /NO
     ISZ DSGN     /YES ... SET SIGN SWITCH
     JMS I IC72   /COMPLEMENT 72 BIT AC-MQ
     CLA CLL
     TAD SRH      /COPY SR TO -SR (MSR)
     DCA MSRH
     TAD SRM
     DCA MSRM
     TAD SRL
     DCA MSRL
     TAD SRH      /HIGH ORDER SR
     SMA          /IS IT NEGATIVE
     JMP .+5      /NO ... COMPLEMENT -SR
     ISZ DSGN     /YES ... SET SIGN SWITCH
     JMS I ICOM   /COMPLEMENT SR
     SRH
     JMP .+3
     JMS I ICOM   /COMPLEMENT MSR IF POSITIVE
     MSRH
     TAD DM36     /-36
     DCA DSHC     /TO SHIFT COUNTER
/
/   THIS BEGINS THE ACTUAL DIVIDE
/
/   FIRST SHIFT AC-MQ LEFT ONE PLACE
/
DLP, CLA CLL CML
     TAD DM6      /-6
     DCA ERAS     /TO INDEX LOC
     TAD AMQLD    /ADDRESS OF LOW ORDER MQ
     DCA ERAS-1   /TO ADDRESS INDEX LOC
/
     CLA CML
     TAD I ERAS-1 /WORD FROM 72 BIT REGISTER
     RAL          /SHIFT LEFT ONE
     DCA I ERAS-1 /NEW WORD
     CLA CMA      /-1
     TAD ERAS-1   /+ADDRESS
     DCA ERAS-1   /NEW ADDRESS
     ISZ ERAS     /INDEX ON NO OF WORDS
     JMP .-10     /MORE
/
/   CHECK TO SEE IF AC >= SR
/
     CLA CLL
     TAD SRH      /-HIGH ORDER SR
     CIA
     TAD ACH      /+HIGH ORDER AC
     SNA
     JMP .+4      /MORE TESTS IF HIGH ORDER EQUAL
     SMA          /IS AC >= SR
     JMP SBTC     /YES ... GO TO SUBTRACT
     JMP INDX     /NO ... GO TO INDEX SHIFT COUNTER
     TAD SRM      /-MED ORDER SR
     CIA
     TAD ACM      /+MED ORDER AC
     SNA
     JMP .+4
     SMA
     JMP SBTC
     JMP INDX
     TAD SRL      /-LOW ORDER SR
     CIA
     TAD ACL      /+LOW ORDER AC
     SNA
     JMP .+3
     SPA
     JMP INDX
/
/   NOW SUBTRACT SR FROM AC
/
SBTC, CLA CLL
     TAD ACL      /LOW ORDER
     TAD MSRL
     DCA ACL  
     GLK          /OVERFLOW BIT
     TAD ACM      /MED ORDER
     TAD MSRM
     DCA ACM  
     GLK          /OVERFLOW BIT
     TAD ACH      /HIGH ORDER
     TAD MSRH
     DCA ACH
     ISZ MQL      /INDEX LOW ORDER MQ TO ACCOUNT FOR DIVISION
INDX, ISZ DSHC    /INDEX ON SHIFT COUNTER
     JMP DLP
/
/   DIVISION COMPLETE
/   CHECK SIGN OF RESULT
/
     CLA CLL
     TAD DSGN      /SIGN SWITCH
     RAR           /IS IT ODD
     SNL
     JMP I TDIV    /NO ... RESULT + ... EXIT
     JMS I ICOM    /YES ... COMPLEMENT RESULT
     MQH
     JMP I TDIV    /EXIT
/
/   LOCAL CONSTANTS
/
DM6, 0-6
DM3, 0-3
DM36, 0-44
AMQLD, MQL
ICOM, COMP
IC72, C72
DSHC, 0
MSRH, 0
MSRM, 0
MSRL, 0
DSGN, 0
                                                             /
/   TRIPLE PRECISION OUTPUT
/
*ORG+400
TOUT, 0
     CLA CLL
     TAD I TOUT  /ADDRESS OF OUTPUT NUMBER
     DCA ERAS
     TAD I ERAS  /HIGH ORDER
     DCA SRH
     ISZ ERAS
     TAD I ERAS  /MED ORDER
     DCA SRM
     ISZ ERAS
     TAD I ERAS  /LOW ORDER
     DCA SRL
     DCA ZRSW    /SET ZERO SUPPRESSION SWITCH
     TAD SRH     /HIGH ORDER WORD
     SMA CLA     /IS IT NEGATIVE
     JMP .+6     /NO
     JMS I TCOM  /YES ... COMPLEMENT NUMBER
     SRH
     TAD MINS
     JMS PRNT    /PRINT A MINUS SIGN
     JMP .+3
     TAD BLNK
     JMS PRNT    /PRINT A BLANK IF PLUS
     TAD TCNT    /-12 (DECIMAL DIGIT COUNT-1)
     DCA ERAS    /TO AN INDEX LOCATION
     TAD ACON    /ADDRESS ON CONSTANT STRING-1
     DCA IR0     /TO AUTO INDEX REGISTER 0
/
/   THE FOLLOWING DOES ALL THE WORK
/
TCLP, CLA CLL
     DCA DIGT    /SET DECIMAL DIGIT TO ZERO
     TAD I IR0   /HIGH ORDER SUBTRACTOR
     DCA MQH
     TAD I IR0   /MED ORDER
     DCA MQM
     TAD I IR0   /LOW ORDER
     DCA MQL
/
/   MOVE CURRENT NUMBER TO ACCUMULATOR
/
TLP1, CLA CLL
     TAD SRH     /HIGH ORDER
     DCA ACH
     TAD SRM     /MED ORDER
     DCA ACM
     TAD SRL     /LOW ORDER
     DCA ACL
/
/   SUBTRACT CURRENT SUBTRACTOR
/
     TAD ACL     /LOW ORDER
     TAD MQL
     DCA ACL
     GLK
     TAD ACM     /MED ORDER
     TAD MQM
     DCA ACM
     GLK
     TAD ACH     /HIGH ORDER
     TAD MQH
     DCA ACH
/
/   CHECK FOR AN OVERFLOW BIT
/
     SNL         /WAS THERE AN OVERFLOW
     JMP .+11    /NO ... OVER WITH CURRENT DECIMAL DIGIT
     TAD ACH     /YES ... COPY RESULT TO CUR
     DCA SRH
     TAD ACM
     DCA SRM
     TAD ACL
     DCA SRL
     ISZ DIGT    /INCREMENT DECIMAL DIGIT
     JMP TLP1    /RETURN FOR ANOTHER TRY
/
/   WE NOW HAVE THE NEXT HIGHEST DECIMAL DIGIT IN DIGT
/
     TAD DIGT    /DIGIT
     SZA         /IS IT A 0
     JMP .+6     /NO ... JUST PRINT IT
     TAD ZRSW    /YES ... IS LEADING ZERO SWITCH ON
     SZA
     JMP .+3     /YES...PRINT THE 0
     TAD BLNK    /NO ... PRINT A BLANK
     JMP .+4
     DCA ZRSW    /SET OR RESET LEADING ZERO SW
     TAD DIGT    /DIGIT
     TAD BCD     /+BCD BITS
     JMS PRNT    /PRINT IT
     ISZ ERAS    /INDEX ON NO OF DECIMAL DIGITS
     JMP TCLP    /RETURN FOR MORE
     TAD SRL     /LAST DECIMAL DIGIT
     TAD BCD     /+BCD BITS
     JMS PRNT    /ALWAYS PRINT LAST DIGIT
     ISZ TOUT    /INDEX OVER ADDRESS
     JMP I TOUT  /R E T U R N
/
/   CONVERSION CONSTANTS
/
CCON, 6653       /-10 000 000 000
     7501
     6000
     7704        /-1 000 000 000
     3123
     3000
     7772        /-100 000 000
     0241
     7400
     7777        /-10 000 000
     3166
     4600
     7777        /-1 000 000
     7413
     6700
     7777        /-100 000
     7747
     4540
     7777        /-10 000
     7775
     4360
     7777        /-1 000
     7777
     6030
     7777        /-100
     7777
     7634
     7777        /-10
     7777
     7766
TCNT, 0-12
ACON, CCON-1
ZRSW, 0
TCOM, COMP
DIGT, 0
BLNK, 240
MINS, 255
BCD,  260
/
/
PRNT, 0
     TSF         /WAIT ON FLAG
     JMP .-1
     TLS         /SELECT
     CLA CLL
     JMP I PRNT 
                                                             /
/   TRIPLE PRECISION INPUT
/
*ORG+600
TIN, 0
     CLA CLL
     DCA ERAS-1  /SET SIGN SWITCH
     DCA SRH     /ZERO ACCUMULATED NUMBER
     DCA SRM
     DCA SRL
/
INLP, JMS OBTN   /OBTAIN A CHAR FROM KEYBOARD
     TAD ERAS    /CHAR
     TAD CHK1    /-260
     SPA CLA     /IS IT TOO SMALL FOR A DIGIT
     JMP INOT    /YES ... OVER OR A SIGN
     TAD ERAS    /CHAR
     TAD CHK2    /-272
     SMA CLA     /IS IT TOO LARGE FOR A DIGIT
     JMP INOT    /YES ... OVER OR A SIGN
/
/   NOW MULTIPLY ACCUMULATED NO BY 10
/
     DCA ACL     /ZERO ACCUMULATOR
     DCA ACM
     DCA ACH
     JMS SHL1    /SHIFT SR LEFT 1
     JMS ADDS    /ADD SR TO AC
     JMS SHL1    /SHIFT SR LEFT 2
     JMS SHL1
     JMS ADDS    /ADD SR TO AC
     CLA CLL CML
     TAD ERAS    /CHAR
     TAD CHK1    /-260 ... GIVES DIGIT
     TAD ACL     /+LOW ORDER AC
     DCA SRL     /NEW LOR ORDER
     GLK
     TAD ACM     /MED ORDER
     DCA SRM     
     GLK
     TAD ACH     /HIGH ORDER
     DCA SRH
     JMP INLP
/
/   A NON-NUMERIC CHARACTER HAS BEEN TYPED
/
INOT, TAD ERAS  /CHAR
     TAD NEGS    /-MINUS SIGN
     SZA CLA     /WAS CHAR A - SIGN
     JMP .+3     /NO ... MORE TESTS REQD
     ISZ ERAS-1  /YES ... SET SIGN SWITCH
     JMP TIN+3   /RETURN FOR NUMBER
     TAD ERAS    /CHAR
     TAD MPLS    /- PLUS SIGN
     SNA CLA     /WAS CHAR A + SIGN
     JMP TIN+1   /ESSENTIALLY IGNORE A + SIGN
/
/   CHAR WAS NOT A SIGN HENCE CONVERSION OVER
/
     TAD SRL     /MOVE NO TO AC
     DCA ACL
     TAD SRM
     DCA ACM
     TAD SRH
     DCA ACH
     TAD ERAS-1  /SIGN SWITCH
     SNA CLA     /IT IT ZERO
     JMP I TIN   /YES ... RETURN
     JMS I TICM  /NO ... COMPLEMENT AC
     ACH
     JMP I TIN   /RETURN
/
/   SUBROUTINE TO SHIFT SR LEFT ONE PLACE
/
SHL1, 0
     CLA CLL
     TAD SRL     /LOW ORDER
     RAL
     DCA SRL
     TAD SRM     /MED ORDER
     RAL
     DCA SRM
     TAD SRH     /HIGH ORDER
     RAL
     DCA SRH
     JMP I SHL1  /RETURN
/
/   SUBROUTINE TO ADD SR TO AC
/
ADDS, 0
     CLA CLL
     TAD ACL     /LOW ORDER
     TAD SRL
     DCA ACL
     GLK
     TAD ACM     /MED ORDER
     TAD SRM
     DCA ACM
     GLK
     TAD ACH     /HIGH ORDER
     TAD SRH
     DCA ACH
     JMP I ADDS  /RETURN
/
/   TRIPLE PRECISION ADDITION
/
TADD, 0
     CLA CLL
     TAD I TADD  /ADDRESS OF ADDEND
     DCA ERAS
     JMS GET     /MOVE ADDEND TO SR
     JMS ADDS    /ADD SR TO AC
     ISZ TADD    /INDEX OVER ADDRESS
     JMP I TADD  /RETURN
/
/   TRIPLE PRECISION SUBTRACTION
/
TSUB, 0
     CLA CLL
     TAD I TSUB  /ADDRESS OF SUBTRAHEND
     DCA ERAS
     JMS GET     /MOVE TO SR
     JMS I TICM  /COMPLEMENT SR
     SRH
     JMS ADDS    /ADD SR TO AC
     ISZ TSUB    /INDEX OVER ADDRESS
     JMP I TSUB  /RETURN
/
/   SUBROUTINE TO MOVE A NO TO SR
/
GET, 0
     TAD I ERAS  /HIGH ORDER
     DCA SRH
     ISZ ERAS
     TAD I ERAS  /MED ORDER
     DCA SRM
     ISZ ERAS
     TAD I ERAS  /LOW ORDER
     DCA SRL
     JMP I GET   /RETURN
/
/   SUBROUTINE TO OBTAIN A CHAR FROM THE KEYBOARD
/
OBTN, 0
     KSF         /WAIT ON FLAG
     JMP .-1
     KRB         /READ KEYBOARD
     TLS         /PRINT CHAR
     DCA ERAS    /HOLD CHAR
     JMP I OBTN  /RETURN
/
/   LOCAL CONSTANTS
/
CHK1, 0-260
CHK2, 0-272
NEGS, 0-255
MPLS, 0-253
TICM, COMP
                                                             /
/
/
*53
TMPY
TDIV
TADD
TSUB
TOUT
TIN
$
                                                                                                                          *U*4