|
|
DataMuseum.dkPresents historical artifacts from the history of: Philips Data Systems |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Philips Data Systems Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 4486 (0x1186)
Notes: pts_type(SC)
Names: »DIVMOD.SC«
└─⟦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«
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