|
|
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: 7622 (0x1dc6)
Notes: pts_type(SC)
Names: »WSMCAL.SC«
└─⟦f45ea3bc3⟧ Bits:30009713 Philips computer tape "WSM"
└─⟦this⟧ »WSM:UTIL/WSMCAL.SC«
IDENT WSMCAL W,REL=2.3,841201,870155940230 ******************************************************************* * * W S M C A L * = = = = = = * * THIS ROUTINE IS USED TO CALCULATE MULTIPLICATIONS, DIVISIONS * AND SHIFTS TO AVOID THE USE OF THE SLOW CREDIT INSTRUCTIONS * MUL AND DIV. * * THE ROUTINES FOR THIS ARE: * * * W X M U L MULTIPLY TWO BINARIES * * W X D I V DIVIDE TWO BINARIES * * W X S L R SHIFT BIN LOGICAL RIGHT * * W X S L L SHIFT BIN LOGICAL LEFT * * W X C 1 R ONES COMPLEMENTE ON A BINARY * ******************************************************************* EJECT ENTRY WXMUL ENTRY WXSLR ENTRY WXSLL ENTRY WXDIV ENTRY WXC1R EXTRN I:EVA0 EXTRN I:RT1 EJECT ************************************************************* * * W X M U L * * MULTIPLY TWO BINARIES * * CALL INTERFACE: * * CALL WXMUL,<OPER1>,<OPER2>,<RESULT> * * WHERE * * <OPER1> = OPERAND 1 * <OPER2> = OPERAND 2 * <RESULT> = RESULT = OPER1 * OPER2 * ***************************************************************** EJECT * * GET THE PARAMETERS * WXMUL EQU * CF A14,PARMS * * PERFORM THE MULTIPLICATION * * A4 = OPERAND 1 * A6 = OPERAND 2 * A9 = ADDRESS TO RESULT * SUR A1,A1 LDR A2,A4 MUR A6 SLL A1,15 GET THE MOST SIGNIFICANT BIT ORR A2,A1 INSERT INTO RESULT STR A2,A9 RETURN EQU * ABL I:RT1 EJECT ************************************************************* * * W X D I V * * DIVIDE TWO BINARIES * * CALL INTERFACE: * * CALL WXDIV,<DIVIDEND>,<DIVISOR>,<RESULT> * * WHERE * * <DIVIDEND> = DIVIDEND * <DIVISOR> = DIVISOR * <RESULT> = RESULT = DIVIDEND / DIVISOR * **************************************************************** EJECT * * GET THE PARAMETERS * WXDIV EQU * CF A14,PARMS * * PERFORM THE DIVISION * * A4 = DIVIDEND * A6 = DIVISOR * A9 = ADDRESS TO RESULT * LDR A1,A4 SRL A1,15 MOST SIGNIFICANT BIT LDR A2,A4 ANKL A2,/7FFF CLEAR MOST SIGNIFICANT BIT DVR A6 STR A2,A9 RB RETURN EJECT ************************************************************* * * W X S L R * * SHIFT A BIN LOGICAL RIGHT * * CALL INTERFACE: * * CALL WXSLR,<BIN1>,<BIN2>,<RESULT> * * WHERE * * <BIN1> = BINARY YOU WISH TO SHIFT RIGHT * <BIN2> = NO. OF SHIFT RIGHT 1-15 * <RESULT>= RESULT AFTER SLR EXECUTED * **************************************************************** EJECT * * SHIFT LOGICAL RIGHT * SRLINS SRL A4,0 * * GET THE PARAMETERS * WXSLR EQU * CF A14,PARMS * * PERFORM THE SHIFT * * A4 = BIN1 * A6 = BIN2 * A9 = ADDRESS TO RESULT * ANK A6,/F A6:=0-15 LD A2,SRLINS A2= INSTRUCTION TO PATCH ORR A2,A6 CREATE INSTRUCTION ST A2,INS1 EXK 0 INS1 EQU *-2 STR A4,A9 RB RETURN EJECT ************************************************************* * * W X S L L * * SHIFT A BIN LOGICAL LEFT * * CALL INTERFACE: * * CALL WXSLL,<BIN1>,<BIN2>,<RESULT> * * WHERE * * <BIN1> = BINARY YOU WISH TO SHIFT LEFT * <BIN2> = NO. OF SHIFT LEFT 1-15 * <RESULT>= RESULT AFTER SLL EXECUTED * **************************************************************** EJECT * * SHIFT LOGICAL LEFT * SLLINS SLL A4,0 * * GET THE PARAMETERS * WXSLL EQU * CF A14,PARMS * * PERFORM THE SHIFT * * A4 = BIN1 * A6 = BIN2 * A9 = ADDRESS TO RESULT * ANK A6,/F A6:=0-15 LD A2,SLLINS A2= INSTRUCTION TO PATCH ORR A2,A6 CREATE INSTRUCTION ST A2,INS2 EXK 0 INS2 EQU *-2 STR A4,A9 RB RETURN EJECT ************************************************************* * * W X C 1 R * * ONES COMPLEMENT ON A BINARY * * CALL INTERFACE: * * CALL WXC1R,<BIN> * * WHERE * * <BIN> = BINARY YOU WISH TO ONES-COMPLEMENT * ************************************************************* WXC1R EQU * CF A14,I:EVA0 GET PARAM. C1RS A9 ONES COMPLEMENTE RB RETURN EJECT * * GET THE PARAMETERS * PARMS EQU * CF A14,I:EVA0 GET PARM1 LDR* A4,A9 CF A14,I:EVA0 GET PARM2 LDR* A6,A9 CF A14,I:EVA0 GET PARM3 RTN A14 END