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