	.TITLE	.COMCV
/
/  18 APR 73 (PDH) ADD 'DREAL','DIMAG','DCMPLX'
/  10 APR 73 - (PDH) CHANGE ERROR ROUTE
/
/ THIS SECTION CONTAINS REAL, AIMAG, CMPLX,DREAL,DIMAG,DCMPLX
/
/ INTERNAL GLOBLS
	.GLOBL	REAL,AIMAG,CMPLX
	.GLOBL	DREAL,DIMAG,DCMPLX
/
/ EXTERNAL GLOBLS
	.GLOBL	.MODEA,.A3,.A4,.AI3,.AI4
	.GLOBL	.SWPIT,.FETCH,.PSHBA,.FLOAT,.SWPBI,.SWPUS,.SPBIA
	.GLOBL	.GRAB,.ILMDE
/
/
/
/ REAL PART OF COMPLEX TO ACC A
REAL    XX
	JMS*	.GRAB
	JMS	.REAL
	JMP*	REAL
DREAL=REAL
/
.REAL	XX
	SMA!RAL		/ MODEA IN AC
	JMP*	.ILMDE		/REAL MODE, ERROR
        SPA!RAR
	JMP*	.ILMDE		/LOGICAL, CHARACTER
        XOR     (600000 /NEW MODE=SINGLE OR DOUBLE
        DAC*     .MODEA
        JMP*    .REAL
/
/ IMAGINARY PART OF COMPLEX TO ACC A
AIMAG	XX
	JMS*	.GRAB
	JMS	.AIMAG
	JMP*	AIMAG
DIMAG=AIMAG
/
.AIMAG	XX
        JMS     .REAL    /SET UP MODE
        JMS*    .SWPIT  /AI TO A
        JMP*    .AIMAG
/
/ FUNCTION TO CREATE A COMPLEX NUMBER FROM TWO NON-COMPLEX ARGUMENTS
/
CMPLX	XX
	JMS	.CMPLX
	JMP*	CMPLX
DCMPLX=CMPLX
/
.CMPLX	XX
        DZM*    .A3      /ZERO OUT EXTENSIONS
        DZM*    .A4
        DZM*    .AI3
        DZM*    .AI4
	JMS*	.FETCH
        JMS*    .PSHBA  /REAL PART TO A
        JMS*    .FLOAT   /PROCESS MODE
        LMQ             /REAL MODE TO MQ
        JMS*    .SWPBI  /A TO BI
	JMS*	.FETCH
        JMS*    .PSHBA  /IMAGINARY PART TO A
        JMS*    .FLOAT   /PROCESS MODE
        OMQ             /INCLUSIVE OR THE MODES
        XOR     (600000 /SET TO COMPLEX
        DAC*    .MODEA
        JMS*    .SWPUS  /A TO AI,BI TO A
        JMS*    .SPBIA
        JMP*    .CMPLX
	.END
