DataMuseum.dk

Presents historical artifacts from the history of:

Philips Data Systems

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Philips Data Systems

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦7b14bf61f⟧

    Length: 4486 (0x1186)
    Notes: pts_type(SC)
    Names: »DIVMOD.SC«

Derivation

└─⟦245262b9f⟧ Bits:30009679 Philips computer tape "600220"
    └─⟦this⟧ »M:92NA/DIVMOD.SC« 
    └─⟦this⟧ »M:92SP/DIVMOD.SC« 
└─⟦38a30a456⟧ Bits:30009662 Philips computer tape "600104"
    └─⟦this⟧ »M:92OD/DIVMOD.SC« 
└─⟦3a2bec7de⟧ Bits:30009687 Philips computer tape "600313"
    └─⟦this⟧ »M:821/DIVMOD.SC« 
└─⟦470bcbfc6⟧ Bits:30009709 Philips computer tape "M_92LP"
    └─⟦this⟧ »M:92LP/DIVMOD.SC« 
└─⟦6349b94c6⟧ Bits:30009684 Philips computer tape "600308"
    └─⟦this⟧ »M:92D1/DIVMOD.SC« 
└─⟦726a6c4ca⟧ Bits:30009685 Philips computer tape "600309"
    └─⟦this⟧ »M:92D2/DIVMOD.SC« 
└─⟦9ad21746d⟧ Bits:30009682 Philips computer tape "600304"
    └─⟦this⟧ »M:92NA/DIVMOD.SC« 
└─⟦9af60a727⟧ Bits:30009707 Philips computer tape "M_173"
    └─⟦this⟧ »M:173/DIVMOD.SC« 
    └─⟦this⟧ »M:173/DIVMOD.SC« 
└─⟦a25d6defe⟧ Bits:30009676 Philips computer tape "600210"
    └─⟦this⟧ »M:92NA/DIVMOD.SC« 
    └─⟦this⟧ »M:92SP/DIVMOD.SC« 
└─⟦dab19bdd7⟧ Bits:30009677 Philips computer tape "600218"
    └─⟦this⟧ »M:261/DIVMOD.SC« 

PTS(SC)

	IDENT DIVMOD 	REL 9.2 79-11-16  870105040920 

*			=1 RET COND 
* 
****************************************************
* 
*   PHILIPS TERMINAL SYSTEM  PTS
* 
*   TOSS DATA MANAGEMENT
* 
* 
* 
****************************************************
* THIS ROUTINE EXECUTES THE DIVIDE INSTRUCTION ON THE ALPHA COMPUTER
* CALLING SEQUENCE
*                 A1-A2= DIVIDEND 
*                 A6   = DIVISOR
*        CF       A14,DIVMOD
*RETURN*          RESUT IN A1-A2 ;  A1= REMAINDER;A2= QUOTIENT
* CAUTION : REGISTERS A3,A4,A6,A7,A8  ARE CRUSHED.
         ENTRY    DIVMOD
* 
* 
***************************************** 
* 
*	CONDITIONAL ASSEMBLY
* 
***************************************** 
* 
*	A PROGRAM VERSION USING THE EXTENDED INSTRUCTION
*	SET IS OBTAINED BY SETTING CPU852 EQU 0.
* 
CPU852	EQU	0
* 
	EJECT
DIVMOD	EQU	*
	LDK	A3,0		=1 
	IFF	CPU852=1 
	DVR	A6 
	XIF
	IFT	CPU852=1 
         LDR      A8,A1       SAVE DIVIDEND SIGN
*				=1 
         ADK      A6,0
         RF(0)    END3        * IF DIVISOR IS NULL, OVREFLOW
         ADK      A1,0
         RF(4)    SIGNE 
         ANK.L    A2,/7FFF
         RF(0)    END0        * IF DIVIDEND IS NULL, CR = 0 
* THIS SEQUENCE GIVES THE OPERAND  A POSITIVE VALUE 
SIGNE    LDK      A7,0
         LDK      A4,16 
         ADK      A1,0        *SIGN OF DIVIDEND 
         RF(6)    DIVENP
         ADK      A3,1        * DIVIDEND IS NEGATIVE
         C1R      A1,A1 
         C1R      A2,A2 
         ANK.L    A2,X'7FFF'
         ADK      A2,1
         RF(1)    DIVENP
         ADK      A1,1
         RF(5)    END3
DIVENP   ADK      A6,0        *SIGN OF DIVISOR
         RF(6)    DIVORP
         SUK      A3,1        *NEGATIVE DIVISOR 
         C1R      A6,A6 
         ADK      A6,1
         ADK      A6,0                 RESET IF OVERFLOW
         RF(5)    CASSPE
DIVORP   CWR      A1,A6 
         RF(1)    END3
         RF(0)    CASSP1
SHIFT    SUK      A4,1        *A1 LESS THAN A6
         RF(0)    END 
         SLL      A1,1
         SLL      A7,1
         SLL      A2,1
         RF(6)    *+4 
         ADK      A1,1
         ADK      A1,0
         RF(2)    CASSP1
         CWR      A1,A6 
         RB(2)    SHIFT 
CASSP1   SUR      A1,A6 
         ADK      A7,1
         RB(7)    SHIFT 
*THIS SEQUENCE RESTORES THE SIGN OF THE RESULTS 
END      LDR      A2,A7 
         ADK      A3,0
         RF(0)    NOSIGN
         RF(2)    AA          DIVIDEND +. DIVISOR + 
         C1R      A1,A1       *REMAINDER
         ADK      A1,1
AA       C1R      A2,A2       * QUOTIENT
         ADK      A2,1
*CAUTION THE NEXT INSTRUCTION IS ABSOLUTELY NECESSARY TO SET CR 
* WHEN THE ADK A2,1 SET AN OVERFLOW CR EX (QUOTIENT=8000) 
         ADK      A2,0
	XIF			=1 
	IFT	CPU852=0	6813	=1 
	RF(1)	END1		=1 
	XIF			=1 
         RF(2)    END2
         RF(0)    END0
END3     ADK      A3,/81
END2     ADK      A3,/81
END1     ADK      A3,/81
END0     SLL      A3,1      **********************************
         ANK.L    A3,/0300
         LDK.L    A4,/FCFF
         AN.S     A4,2,A14
         OR.S     A3,2,A14    UPDATE CR IN PSW CALLING PROGRAM
*				=1 
         RTN      A14 
	IFT	CPU852=1 
NOSIGN   ADK.L    A8,0        TEST OF DIVIDEND SIGN 
         RF(6)    BB
         C1R      A1,A1       DIVIDEND- .DIVISOR -
         ADK      A1,1        REMAINDER - 
BB       ADK      A2,0
         RB(0)    END0
         RB(2)    END2
         RB(7)    END1
CASSPE   LDR      A7,A1 
         LDR      A1,A2 
         CWK      A1,/8000
         RB(4)    END 
         LDK A1,0 
         RB(7)    END 
	XIF
         END

Full view