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

⟦fc1ca6440⟧

    Length: 7622 (0x1dc6)
    Notes: pts_type(SC)
    Names: »WSMCAL.SC«

Derivation

└─⟦f45ea3bc3⟧ Bits:30009713 Philips computer tape "WSM"
    └─⟦this⟧ »WSM:UTIL/WSMCAL.SC« 

PTS(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

Full view