/ 4-WORD P?S/8 FOCAL OVERLAY / LAST EDIT: 28-DEC-1986 03:00:00 CJL / MUST BE ASSEMBLED WITH '/J' SET. / MODIFICATIONS TO P?S/8 FOCAL TO USE 4-WORD ACCURATE FLOATING POINT. / MUST BE LOADED BEFORE OTHER BINARY PATCHES (OTHER THAN 8K) TO FOCAL. / IT IS RECOMMENDED THAT THE 8K OVERLAY (IF USED) BE LOADED FIRST. / DEFINITIONS FROM FOCAL, 1969 (ORIGINAL PAPER-TAPE VERSION). AC1H= 0041 /HIGH-ORDER OPERAND AC1L= 0042 /LOW-ORDER OPERAND CFRS= 0133 /POINTER TO DUMMY LINE DATUM= 7102 /DATA AREA IN FPP DCOUNT= 6143 /OUTPUT DIGIT COUNTER DMDONE= 7063 /MULTIPLE PRECISION MULTIPLY ADDRESS DMULT4= 7036 /MULTIPLE PRECISION MULTIPLY ADDRESS DNORM= 7335 /NORMALIZE ROUTINE DV3= 7267 /DIVIDE ROUTINE ADDRESS FISW= 0052 /FLOATING POINT FORMAT SWITCH FPNT= 6400 /FLOATING POINT INTERPRETER GINC= 0070 /VARIABLE UPDATE FACTOR HORD= 0045 /HIGH-ORDER FLAC LORD= 0046 /LOW-ORDER FLAC MD= 5526 /-(DIGITS) STORED HERE MFLT= 0117 /FLOATING LENGTH FACTOR MIF= 7260 /DIVIDE SHIFT COUNTER MP1= 7254 /QUOTIENT WORD MP2= 7256 /MULTIPLICAND WORD MP4= 7200 /MULTIPLY ROUTINE MP5= 7253 /QUOTIENT WORD MULDIV= 7101 /COMMON MULTIPLY/DIVIDE ROUTINE OVER1= 0043 /EXTRA OPERAND WORD OVER2= 0047 /EXTRA FLAC WORD PI= 5312 /PI CONSTANT FOR SINE ROUTINE PIOT= 5316 /PI/2 CONSTANT FOR SINE ROUTINE PTEN= 6275 /CONSTANT .1000000000 P7600= 0104 /CONSTANT 7600 RND2= 5527 /(DIGITS+1) STORED HERE TEST2= 6736 /ALIGNMENT CONSTANT HERE TWOPI= 5306 /PI*2 CONSTANT FOR SINE ROUTINE XDELETE=2062 /DELETE ROUTINE ADDRESS ZERO= 6520 /INTERPRETIVE POWER ADDRESS / DEFINITIONS FROM P?S/8 FOCAL OVERLAY. BEOFZAP=7505 /BINARY LOADER ZAP WORD BONCE= 3600 /OVERLAY ONCE-ONLY ADDRESS NFRST= 3305 /NEW DUMMY LINE ADDRESS NPI2= 5173 /NEW PI/2 CONSTANT FOR ARCTANGENT REVISIO="D&77 /REVISION OF FOCPQS SWAL= 7604 /PASSED SWITCHES: A-L VERSION=12 /VERSION OF FOCPQS / MISCELLANEOUS DEFINITIONS. DIGITS= 12 /10 DIGIT VERSION WORDS= 4 /FOUR WORD VERSION / DIRECT PATCHES TO THE RUNNING P?S/8 (4K OR 8K) FOCAL. FIELD 0 /ENSURE FIELD ZERO *FISW /OVER FORMAT SWITCH FISW, 0 /USE FLOATING OUTPUT FORMAT BY DEFAULT *GINC /OVER VARIABLE INCREMENT GINC, WORDS+2 /WE USE LONGER VARIABLES *MFLT /OVER FLOATING LENGTH FACTOR MFLT, -WORDS /INDICATE -(FOUR) WORDS / NEW FOUR-WORD (4K) DUMMY LINE. *NFRST /OVER EXISTING DUMMY LINE NFRST, 0000 /POINTER TO END OF LIST 0000 /00.00 LINE NUMBER TEXT "C " /C "P^100+"?-240 /P? TEXT "S/8 4WORD " /MORE TEXT VERSION%12+2660 /V VERSION%12^66+VERSION^100+REVISION+6000 / 7715 / / CHANGE DIGITS-ORIENTED CONSTANTS. *MD /OVER -(DIGITS) MD, -DIGITS /SET NEW AMOUNT RND2, DIGITS+1 /SET NEW ROUNDING CONSTANT *DCOUNT /OVER OUTPUT DIGIT COUNT -DIGITS-1 /USE 10 DIGIT VALUE / CORRECT FLOATING CONSTANT. *PTEN+2 /OVER CONSTANT .100000000 3146 /USE FOUR WORD VALUE / CHANGES TO THE FLOATING POINT PACKAGE (FPP). *FPNT+2 /OVER DCA OVER2 SKP /DON'T CLEAR OVERFLOW WORDS *ZERO+20 /OVER DCA OVER1 NOP /DON'T CLEAR OVERFLOW WORD *TEST2 /OVER 0027 TEST2, 0043 /USE FOUR WORD CONSTANT INSTEAD *DMULT4 /OVER JMP DMDONE DMULT4, DCA DATUM-5 /STORE RESULT WORD *DMDONE+7 /OVER DCA OVER2 NOP /DON'T CLEAR OVERFLOW WORD *MULDIV+4 /OVER ISZ OVER2 NOP /DON'T ROUND IN FOUR-WORD VERSION *MIF /OVER DIVIDE SHIFT COUNTER MIF, -43 /USE FOUR WORD SHIFT VALUE *DV3+2 /OVER DIVIDE ROUTINE TAD OVER1 /GET THE TAD OVER2 /OVERFLOW WORDS DCA MP5 /SAVE RESULT RAL /GET CARRY TAD AC1L /ADD ON LOW-ORDER TAD LORD /WORDS DCA MP2 /SAVE RESULT RAL /GET CARRY TAD HORD /ADD ON HIGH-ORDER TAD AC1H /WORDS SNL /CARRY? JMP .+6 /NO DCA HORD /YES, UPDATE THE FLAC TAD MP5 /GET OVERFLOW DCA OVER2 /UPDATE IT TAD MP2 /GET LOW-ORDER DCA LORD /UPDATE IT CLA /CLEAN UP TAD MP1 /GET QUOTIENT RAL /MOVE UP DCA MP1 /STORE BACK TAD MP4 /GET NEXT RAL /MOVE UP DCA MP4 /STORE BACK TAD DNORM /GET LOWEST / THE FOUR-WORD OVERLAY GAINS CONTROL AND STARTS HERE. *BONCE /OVER ONCE-ONLY AREA WORD4, TAD I (SWAL) /GET /A-/L SWITCHES AND (1000) /JUST /C SWITCH SNA CLA /SKIP IF SET JMP TESTA /JUMP IF NOT TAD (3755) /GET CORRECTIVE VALUE DCA I (TWOPI+2) /STORE OVER CONSTANT TAD (3755) /GET CORRECTIVE VALUE DCA I (PI+2) /STORE OVER CONSTANT TAD (3755) /GET CORRECTIVE VALUE DCA I (PIOT+2) /STORE OVER CONSTANT TESTA, TAD I (SWAL) /GET /A-/L SWITCHES SMA CLA /SKIP IF /A SET JMP TEST8K /JUMP IF NOT TAD I (SWAL) /GET /A-/L SWITCHES AND (1000) /JUST /C SWITCH SZA CLA /SKIP IF /C NOT SET TAD P7600/[-200] /ELSE ADD ON BACKUP FACTOR TAD (NPI2+2+200) /ASSUME RELOCATED CONSTANT ADDRESS DCA CONPTR /STORE CORRECTED ADDRESS TAD (3755) /GET CORRECTIVE VALUE DCA I CONPTR /STORE OVER RELOCATED CONSTANT TEST8K, TAD I (XDELETE+23) /GET CDF TXTFLD INSTRUCTION AND (70) /JUST FIELD BITS SNA /SKIP IF 8K IN USE JMP MOVEND /JUMP IF NOT TAD (CDF) /TURN INTO TEXT CDF INSTRUCTION DCA CONPTR /STORE IN-LINE TAD CFRS/[LINE0] /GET DUMMY LINE POINTER DCA WORD4 /STASH THE POINTER CONPTR, .-. /WILL BE CDF TEXT FIELD MOVLUP, TAD NLINE0 /GET A WORD ISZ MOVLUP /BUMP TO NEXT CMA /INVERT FOR TESTING SNA /SKIP IF NOT AT END JMP MOVEND /JUMP IF AT END CMA /INVERT BACK DCA I WORD4 /STORE IN 8K DUMMY LINE ISZ WORD4 /BUMP TO NEXT JMP MOVLUP /KEEP GOING MOVEND, CDF 00 /BACK TO OUR FIELD DCA I (BEOFZAP) /RESTORE BINARY LOADER JMP I (BEOFZAP) /CONTINUE IN LOADER / DUMMY LINE FOR 8K FOUR WORD VERSION. NLINE0, 0 /FORWARD POINTER 0 /LINE 00.00 TEXT "C 8K P" /TEXT BLURB "?-40^100+"S-300 /?S TEXT "/8 4WORD V" /MORE TEXT VERSION%12^66+VERSION+6060 / REVISION^100+" -200 / 7715 / -1 /THIS ENDS THE LIST PAGE / THE FOLLOWING PATCH ZAPS THE LOADER TO COME TO OUR ONCE-ONLY CODE. *BEOFZAP /OVER LOADER 0000 SKP /MAKE IT COME TO US $ /THAT'S ALL FOLK!