File: SDIVIS.MA of Tape: Various/Decus/decus-2
(Source file text) 

.TITLE	L I N K - L I B R A R Y
.SBTTL	SDIVIS:DIVISION  24/12 BIT


.INCLUDE SYS:MACLIB.MA

/****SDIVIS****
/04.09.81  VHE/20.6.83  VH
/(L,AC)=?,?
/CIF	SDIVIS
/JMS	SDIVIS
/FELD	DIVIDEND
/ADR.	DIVIDEND
/FELD	DIVISOR
/ADR.	DIVISOR
/(L,AC)=?,QUOTIENT; REST IN MQ
/**************


/DAS UNTERPROGRAMM SDIVIS WIRD VOM MACRO DIVIDE VERWENDET


/DIVISION VON 24 BIT / 12 BIT MIT VORZEICHEN
/PARAMETER (HINTER DEM AUFRUF)
/1. FELD DES DIVIDENDEN
/2. ADRESSE DES   "
/3. FELD DES DIVISOR
/4. ADRESSE DES DIVISOR
/DER DIVIDEND-LOW MUSS IN DER ZELLE HINTER DEM DIVIDENDEN-HIGH STEHEN
/BEIM RUECKSPRUNG STEHT DER QUOTIENT IM AKKU UND DER REST IM MQ-REGISTER

OPEN	"SDIVIS","F"


.ENTRY	SDIVIS
DEFMER HDIVN$,LDIVN$,DIVSO$,ADR1$,ADR2$,TEMP1$

SDIVIS,	OPNSUB RT:EXIT$,UM1$,ADR1$,UM2$,ADR2$

UM1$:	V
	TAD I ADR1$	/DIVIDEND-HIGH HOLEN
	DCA HDIVN$

	INC ADR1$
	TAD I ADR1$	/DIVIDEND-LOW HOLEN
	DCA LDIVN$

UM2$:	V
	TAD I ADR2$	/DIVISOR HOLEN
	DCA DIVSO$
	CDF .FLD

	TAD HDIVN$
	CLL
	SPA		/DIVIDEND<0?
	CMA CML
	DCA HDIVN$
	SNL
	CMA
	DCA SDVND$	/VORZEICHEN DIVIDEND MERKEN
	TAD LDIVN$
	SZL
	CMA CLL IAC	/KOMPLEMENTIEREN
	DCA LDIVN$
	SZL		/CARRY
	ISZ HDIVN$
	TAD DIVSO$
	CLL
	SMA
	CMA CML IAC
	DCA DIVSO$
	SNL		/KLEINER 0 ?
	CMA		/JA: AC:=-1
	TAD SDVND$
	DCA SNSWE$	/MERKEN
	TAD DIVSO$
	AND (3777)
	SNA CLA		/TEST OB DIVISOR = 0
	JMP DZER0$
	TAD HDIVN$	/UEBERLAUF?
	SZA CLA
	JMP CONT$
	CLL
	TAD DIVSO$
	TAD LDIVN$
	SNL CLA
	JMP DFRAC$	/DIVIDEND < DIVISOR = REST
CONT$:	CLL
	TAD DIVSO$	/VERGLEICHE DIVISOR
	TAD HDIVN$	/MIT DIVIDENDEN
	SZL CLA		/UEBERLAUF ?
	JMP DI1$
	TAD HDIVN$	/TEST AUF UEBERLAUF
	TAD DIVSO$
	SMA SZA CLA
	JMP DOVER$	/HIGH ORDER DIVIDEND > DIVISOR

	DCAADD DIVCN$,(-13.)	/13 MAL SCHIEBEN
	JMP DV2$

/DIVISIONS-SCHLEIFE
DV3$:	TAD HDIVN$
	RAL
	DCA HDIVN$	/DIVIDEND LINKS SCHIEBEN
	TAD HDIVN$
	TAD DIVSO$	/VERGLEICHE DIVISOR MIT DIVIDEND
	SZL
	DCA HDIVN$	/REST NACH SUBTRAKTION
	CLA
DV2$:	TAD LDIVN$	/QUOTIENT BITS
	RAL		/HIER VERARBEITEN
	DCA LDIVN$
	ISZ DIVCN$	/12 MAL GEMACHT
	JMP DV3$		/NEIN; WEITER
	TAD HDIVN$	/REST
	ISZ SDVND$	/DIVIDEND < 0
	CMA IAC		/JA
	DCA HDIVN$
	TAD LDIVN$	/QUOTIENT
	SPA
	JMP QOVER$
	ISZ SNSWE$	/ANSWER < 0
	CMA IAC		/JA; KOMPLEMENTIEREN
	CLL
DI1$:	DCA TEMP1$
	TAD HDIVN$
	MQL
	TAD TEMP1$

EXIT$:	V
	JMP I SDIVIS	/RUECKSPRUNG

DZER0$:	CLA CMA		/DIVISOR=0 -->AKKU:=7777
DOVER$:	STL
	JMP DI1$

DFRAC$:	CLA
	TAD LDIVN$
	DCA HDIVN$
	JMP DOVER$
QOVER$:	CLA
	JMP DOVER$

SDVND$:	0
SNSWE$:	0
DIVCN$:	0

CLOSE	"SDIVIS"

	ENDPR