/ TRIPLE PRECISION DIVIDE / *ORG+200 TDIV, 0 CLA CLL DCA DSGN /SET SIGN OF RESULT SWITCH TAD DM3 /-3 DCA ERAS-1 /TO AN INDEX LOC TAD I TDIV /ADDRESS OF DIVISOR ISZ TDIV /INDEX FOR EXIT DCA ERAS TAD I ERAS /HIGH ORDER DIVISOR SNA ISZ ERAS-1 DCA SRH ISZ ERAS TAD I ERAS /MED ORDER DIVISOR SNA ISZ ERAS-1 DCA SRM ISZ ERS TAD I ERAS /LOW ORDER DIVISOR SZA JMP .+4 ISZ ERAS-1 JMP .+2 HLT /HALT ON AN ATTEMPT TO DIVIDE BY 0 DCA SRL / / NOW CHECK SIGNS OF EVERYTHING / TAD ACH /HIGH ORDER AC SMA /IS IT NEGATIVE JMP .+3 /NO ISZ DSGN /YES ... SET SIGN SWITCH JMS I IC72 /COMPLEMENT 72 BIT AC-MQ CLA CLL TAD SRH /COPY SR TO -SR (MSR) DCA MSRH TAD SRM DCA MSRM TAD SRL DCA MSRL TAD SRH /HIGH ORDER SR SMA /IS IT NEGATIVE JMP .+5 /NO ... COMPLEMENT -SR ISZ DSGN /YES ... SET SIGN SWITCH JMS I ICOM /COMPLEMENT SR SRH JMP .+3 JMS I ICOM /COMPLEMENT MSR IF POSITIVE MSRH TAD DM36 /-36 DCA DSHC /TO SHIFT COUNTER / / THIS BEGINS THE ACTUAL DIVIDE / / FIRST SHIFT AC-MQ LEFT ONE PLACE / DLP, CLA CLL CML TAD DM6 /-6 DCA ERAS /TO INDEX LOC TAD AMQLD /ADDRESS OF LOW ORDER MQ DCA ERAS-1 /TO ADDRESS INDEX LOC / CLA CML TAD I ERAS-1 /WORD FROM 72 BIT REGISTER RAL /SHIFT LEFT ONE DCA I ERAS-1 /NEW WORD CLA CMA /-1 TAD ERAS-1 /+ADDRESS DCA ERAS-1 /NEW ADDRESS ISZ ERAS /INDEX ON NO OF WORDS JMP .-10 /MORE / / CHECK TO SEE IF AC >= SR / CLA CLL TAD SRH /-HIGH ORDER SR CIA TAD ACH /+HIGH ORDER AC SNA JMP .+4 /MORE TESTS IF HIGH ORDER EQUAL SMA /IS AC>SR JMP SBTC /YES ... GO TO SUBTRACT JMP INDX /NO ... GO TO INDEX SHIFT COUNTER CLA CLL TAD SRM /-MED ORDER SR CMA CML IAC /USE LINK TO FORM 13 BIT AC TAD ACM /+MED ORDER AC SNA JMP .+4 /MORE TESTS IF HIGH AND MED ORDER EQUAL SNL /LINK IS NOW SIGN BIT ... IS AC>SR JMP SBTC /YES ... GO TO SUBTRACT JMP INDX /NO ... GO TO INDEX SHIFT COUNTER CLA CLL TAD SRL /-LOW ORDER SR CMA CML IAC /USE LINK TO FORM 13 BIT AC TAD ACL /+LOW ORDER AC SZL /LINK IS SIGN BIT ... IS AC>=SR JMP INDX /NO ... INDEX SHIFT COUNTER / / NOW SUBTRACT SR FROM AC / SBTC, CLA CLL TAD ACL /LOW ORDER TAD MSRL DCA ACL GLK /OVERFLOW BIT TAD ACM /MED ORDER TAD MSRM DCA ACM GLK /OVERFLOW BIT TAD ACH /HIGH ORDER TAD MSRH DCA ACH ISZ MQL /INDEX LOW ORDER MQ TO ACCOUNT FOR DIVISION INDX, ISZ DSHC /INDEX ON SHIFT COUNTER JMP DLP / / DIVISION COMPLETE / CHECK SIGN OF RESULT / CLA CLL TAD DSGN /SIGN SWITCH RAR /IS IT ODD SNL JMP I TDIV /NO ... RESULT + ... EXIT JMS I ICOM /YES ... COMPLEMENT RESULT MQH JMP I TDIV /EXIT / / LOCAL CONSTANTS / DM6, 0-6 DM3, 0-3 DM36, 0-44 AMQLD, MQL ICOM, COMP IC72, C72 DSHC, 0 MSRH, 0 MSRM, 0 MSRL, 0 DSGN, 0 PAUSE