Directory of image this file is from
This file as a plain text file
[PAGE 1, RUN PROCESSOR $20 UMB 9Y [P2,FP WORK AREA 0 [JMP FP PKG 0 [ARG1 ADDR 0 [ARG2 ADDR 0 [ARG3 ADDR JMP 9O+4 [ERROR RETURN LMB 9W [P0 JMP [RETURN #9O LDA 0 STC 9O-1 JMP 9O-10 LMB 9W [P0 JMP 6K [ARITH ERROR [ [ [DECIMAL FLOATING POINT ROUTINES [ AFTER MIKE MCDONALD"S FLOPSY FOR THE PC [INITIALIZATION #7A ADAi -6001 STC 5A [ARG PTR SETi5G 7I [RESULT BUFFER SETi5H -9N [#DIGITS STA 5G [CLEAR 7I LDAi5A BSEi 4000 STC 5B [ARG1 LDAi5A BSEi 4000 STC 5C [ARG2 LDA 5B ROL 1 SCR 1 STC 5R [EXP1 LDA 5C [ARG2 JMP 0 [#ADD ENTRY #8A CLR ADD 0 JMP 7A ROLi1 [SAVE SIGN2 SCR 1 STAi #5Q 0 COM ADD 5R STAi 0 APOi COM STC 5F [-|DIFF| RORi1 STAi #5S [SIGN2 BCO 5B SCR 13 STC 5D [XOR SIGNS ADD 5Q+4 XSK 5D [SKIP SIGNS NOT = JMP p+3 AZEi JMP 8I [EXPS = APO JMP 8C [ ARG1>ARG2 #8B LDA 5B SET 5B 5C STC 5C LDA 5C BCL i 3777 [ISOLATE SIGN1 STC 5S [RESULT SIGN JMP 8D [ [ SHIFT SMALLER #8H LDHi5C [LARGER STAi5G [RESULT XSKi5F APO [SKIP JMP 8F [SHIFTED ENOUGH XSKi5H JMP 8H JMP 7J [EXIT [ [ FIND LARGER MANTISSA FOR MINUEND #8I SETi5E -9N [#DIGITS SET 5I 5B SET 5J 5C #8J LDHi5I [ARG1 STC 0 LDHi5J [ARG2 COM ADD 0 [ARG1-ARG2 AZE JMP 8B-2 XSKi5E JMP 8J [ [ ARG2>ARG1 #8C LDA 5Q [EXP2 STC 5R [RESULT EXP #8D ADD 5Q+1 [=COM XSK 5D [SKIP SIGNS NOT = ADD 5V [=-1 MAKES LINC NOP STC 8E+3 [ 5G=7I, 5H=-9N XSK 5F JMP 8H #8E LDHi5C [LARGER STC 0 LDHi5B [SMALLER NOP [OR COM ADD 0 STAi5G [SUM #8F XSKi5H JMP 8E [PROPAGATE CARRIES IN RESULT BUFFER #8K SETi5H -9N [ 5G POINTS TO RIGHT END RESULT #8L LDA 5G AZEi JMP 8N [ZERO DIGIT APO JMP 8P [NEG DIGIT ADAi -11 APOi JMP 8O [DIGIT >9 LDAi #5V -1 ADM 5G #8M XSKi5H JMP 8L [NEXT DIGIT TO LEFT JMP 7J [EXIT [ [ ZERO DIGIT #8N CLR STA 5G JMP 8M-4 [ [ DIGIT >9 #8O ADD 5V [=-1 AZEi CLR STA 5G LDAi -1 ADD 5G STC 5G ADD 5W [=1 ADM 5G JMP 8M [ XSKi5H [NOSKIP #8P ADD 5Y [=TEN AZEi CLR STA 5G LDAi -1 ADM 5G LDA 5G ADD 5V [=-1 AZEi CLR APO JMP 8P-1 STA 5G JMP 8M [ [#SUBTRACT ENTRY #8Q CLR ADD 0 JMP 7A [INIT BCOi 4000 [INVERT SIGN JMP 8A+3 [ [#MULTIPLY ENTRY #8R CLR ADD 0 JMP 7A ROLi1 SCR 1 ADD 5V [=-1 ADD 5R [EXP1 STC 5R [RESULT EXP RORi1 BCO 5B BCLi 3777 STC 5S STAi5G STAi5G STAi5G [CLEAR RESULT XSKi5H JMP p-2 COM STC 8Z-2 [PRESET SETi5H -9N SETi5G 7I SETi5E -9N #8S SET 5I 5E SET 5F 5C [ARG2 PTR SET 5J 5G [RESULT PTR LDHi5B [MULTIPLIER DIGIT AZEi JMP 8Z-3 [ZERO MULTIPLIER STC 5U #8T LDHi5F MULi #5U 0 ADMi5J XSKi5I JMP 8T SROi 0 JMP 8W [FOR GUARD DIGITS #8Z XSKi5E [NS XSKi5G [NS XSKi5H JMP 8S [NEXT MULTIPLIER DIGIT [ PROPAGATE CARRIES [ AC=RIGHTMOST DIGIT SETi5G 7I+9N+2 SETi5H -9N-2 [#DIGITS+2 GUARD #8U SETi5F 0 [CLEAR CARRY BUFFER [ HUNDREDS ADAi -144 AZEi CLR APO JMP 8X-2 STC 5U ADD 5Y [=TEN ADD 5F STC 5F [CARRY ADD 5U JMP 8U+2 [MORE HUNDREDS [ [ FOR 2 GUARD DIGITS #8W SROi 3333 JMP 8Z+1 CLR STC 8Z-2 JMP 8Z+1 [ ADAi 144 [ TENS #8X ADAi #5Z -12 AZEi CLR APO JMP 8Y XSKi5F [+1 JMP 8X [ #8Y ADD 5Y [TEN AZEi CLR STA 5G LDAi -1 ADM 5G LDA 5G ADD 5F [CARRY XSKi5H JMP 8U [NEXT DIGIT TO LEFT STA 5G [EXIT #7J LDAi5A BSEi 4000 STC 5C SETi5G 7I SETi5H -9N SETi5I -9M LDA 5G AZEi JMP 7L LDAi #5W 1 ADM 5R [RESULT EXP LDA 5G AZEi [SKIP [FIND FIRST NONZERO DIGIT #7L LDAi5G AZE JMP 7N ADD 5V [=-1 ADM 5R [RESULT EXP XSKi5H JMP 7L [ZERO RESULT #7M LDAi 2000 STA 5C CLR STAi5C XSKi5I JMP p-2 #7R XSKi5A LDAi 6001 ADD 5A STC p+1 RETURN [ #7N LDAi #5R 0 [RESULT EXP SCR 12 AZEi JMP 7O APOi [OVERFLOW JMP JMP 7R+1 [ERROR RETURN [UNDERFLOW PROCESSING LDA i [CAUSE ERROR RETURN AFTER 0 RESULT -1 ADM 5A JMP 7M [ZERO RESULT [ #7O ADD 5R [RESULT EXP AZEi CLR BCLi 4000 ADD 5S [RESULT SIGN STA 5C LDA 5G AZEi [SKIP #7P LDAi5G STHi5C XSKi5H APO JMP 7Q LDAi5G STHi5C XSKi5H APO [SKIP JMP 7Q+2 XSKi5I JMP 7P [NEXT 2 DIGITS JMP 7R [RETURN #7Q CLR STHi5C XSKi5I JMP 7M+3 JMP 7R [RETURN [ [#DIVIDE ENTRY #9A CLR ADD 0 JMP 7A ROLi1 SCR 1 COM ADD 5R [EXP1 STC 5R [RESULT EXP RORi1 BCO 5B [XOR SIGNS BCLi 3777 STC 5S [ DIVIDEND TO BUFFER LDHi5B [DIVIDEND STAi5G XSKi5H JMP p-3 CLR STAi5G [CLEAR GUARD STAi5G [ DIVISOR TO BUFFER SETi5H -9N LDHi5C [DIVISOR STAi5G XSKi5H JMP p-3 CLR STAi5G [CLEAR GUARD STAi5G [ 1ST DIGIT #9L LDA 7H AZEi JMP 9K [ZERO DIVISOR ADAi -4 APO JMP 9P COM ADA i 5 AZEi JMP 9S [2ND DIGIT SHDi 400 ADD 9R [=2 SHDi 300 ADD 5W [=1 STC 9G+2 JMP 9Q SETi5H -9N #9T COM STC 9S+1 [SETUP RESTORE FLAG LDAi JMP 9L STC 9J+2 JMP 9D+3 #9R 2 [CONSTANT [ DOUBLE #9P LDAi APO [SKIP STA 9E+1 STC 9G+1 SETi5H -9N-1 JMP 9T [ RESTORE FOR MULTIPLY #9Q LDAi MUL STC 9E+1 ADD 8T+1 [=MULi STC 9G+1 LDAi JMP 9B STC 9J+2 STC 9S+1 [RESET F|F JMP 0 #9S SROi 0 JMP 9Q #9B SETi5B 7H-1 [DENOM SETi5H -9N [ FIND DIGIT NOT=9 #9C LDAi5B SAEi 11 JMP 9D XSKi5H JMP 9C CLR SAE 7I ADD p+4 [=6HUNDRED ADAi 74 [SIXTY JMP 8U-4 [CARRIES AND EXIT 1130 [6HUNDRED [ #9D COM ADD 9C+2 [=11 STC 9G+2 ADD 5V [=-1 ADM 5H COM ADD 9B+1 [=7H-1 STA 5B ADAi 7I-7H+1 STC 5C SETi5F 7H+9N+1 SETi5G 7I+9N+2 STC 5I [DENOM CARRY STC 5J [NUMER CARRY #9E LDA 5B MUL 9G+2 [D[I] ADD 5I [CARRY ADA 5F SETi5I 0 [CLEAR CARRY #9F STA 5F ADD 5Z [=-10 AZEi CLR APO JMP 9G XSKi5I [CARRY JMP 9F [ #9G LDA 5C MULi 0 [D[I] ADD 5J [CARRY ADA 5G SETi5J 0 #9H STA 5G ADD 5Z [=-TEN AZEi CLR APO JMP 9I XSKi5J [CARRY JMP 9H [ #9I LDAi -1 ADD 5G STC 5G XSK 5H AZE [SKIP JMP 9J ADD 5V [=-1 ADM 5B ADD 9E-10 [=7I-7H+1 STC 5C ADD 5V [=-1 ADD 5F STC 5F XSKi5H JMP 9E ADD 5I ADM 5F JMP 9G [ONCE MORE FOR NUMERATOR [ [ HIGH QUOTIENT DIGIT #9J ADD 5J [CARRY ADM 5G JMP 9B [ [ ERROR: DIVIDE BY ZERO #9K ADD 7J+2 [=4000 STA 7I+1 [FORCE ERROR FOR 0|0 STC 5R [FORCE EXP OVERFLOW JMP 7J [EXIT ROUTINE [ [BOOKKEEPING #5Y 12 9N=10 9M=4 7I=3300 7H=7I+9N+3 7Z=7H+9N+1 5A=6 5B=5A+1 5C=5A+2 5D=5A+3 5E=5A+4 5F=5A+5 5G=5A+6 5H=5A+7 5I=5A+10 5J=5A+11 [FLOP3|3 [1Q ASSUMES FP# IS NOT 0 [1R PTS TO FP # [1R HAS B11=1 [ACC=#L|O ZEROES [1R IS NOT DISTURBED #1Q LDA 0 STC p+23 UMB 9W [P0 LDA 2F+2000 [LEN FP # ADD p+5 [=-4000 ADD 1R STC 3R STC 4R [0->COUNT [SCAN LOOP LDA i -4000 ADM 3R LDH 3R [LOAD A DIGIT AZE JMP p+3 XSK i 4R [COUNT 0 JMP p-10 [LOAD RESULT LDA 4R JMP [RETURN [1R,3R,4R [1R PTS TO FP# [[0] RETURN: NO MORE OUTPUT [[0]+1 NORMAL RETURN [ [EXIT SUBROUTINE SET i 0 [RIG LINKAGE TO JMP 1T [INITIAL STATE LDA i -1 ADM 1V #1U STC 1V-2 ADD 0 STC 1V+5 [LOCAL LINKAGE LDA i 0 LMB 9W [P0 #1V JMP [EXIT [ENTRY TO PRINT ROUTINE XSK i 0 [ASSUME NORMAL EXIT LDA 0 STC 1V JMP 1T [RETURN [ [ #3V SET 4R 0 [SAVE LINKAGE LDA i 14 [SPACE JMP 1U [OUTPUT SPACE JMP 4R [RETURN [ #4V SET 4R 0 APO JMP p+4 LDA i 14 [SPACE JMP p+3 LDA i "0-; JMP 1U [OUTPUT SIGN JMP 4R [RETURN #1T SET 3R 1R LDA i 3R AZE JMP p+5 [FP#=0 JMP 3V [OUTPUT SPACE JMP 1U [OUTPUT JMP 3V [OUTPUT SPACE JMP 1U-6 [TERMINAL RETURN [NON-ZERO FP # JMP 1Q [COUNT RIGHTMOST 0 COM STC 3Q [OUTPUT SIGN LDA 1R [S|EXP JMP 4V LDA 1R [S|EXP ROL 1 SCR 1 APO i AZE i [JMP=>E=<0 JMP 3U [E>0 ADA i -10 [=-8 APO [JMP=>E=<8 JMP 4U [E>8 [FULL CONVERT #4Q SET 3R 1R LDH i 3R [DIGIT 1 JMP 1U LDA i "0.; [DP JMP 1U [OUTPUT DP JMP 3W [RETURNS # DIGITS|FP# ADA i #3Q 0 [-# RIGHT 0 COM STC 4R JMP p+3 LDH i 3R [DIGIT JMP 1U [OUTPUT XSK i 4R JMP p-3 JMP 3V [OUTPUT SPACE [GENERATE EXPONENT LDA i "0E; JMP 1U [OUTPUT E [SIGN OF EXP LDA 1R [S|EXP ROL 1 [SIGN OF EXP JMP 4V [OUTPUT SIGN OF EXP [GENERATE EXP DIGITS LDA 1R [EXP ROL 1 APO i JMP p+4 COM ADA i 4 [COMPENSATE FOR MINUS SCR 1 [ACC=|EXP| ADA i -1 [FOR DIGIT LEFT OF DP STA i #3S 0 [RESIDUE SET i 3R 4S [TABLE OF OCTAL EQUIVS CLR STC 3T [0=>H|O 0 NOT SIG SET i 4R 0 [0->DIGIT [LOOP TO CALC DIGITS LDA 3S [RESIDUE ADA 3R AZE i COM APO JMP p+5 XSK i 4R STA 3S [UPDATE RESIDUE JMP p-10 LDA 4R [CURRENT DIGIT AZE JMP 4T [OUT,SET SIG FLAG SRO i #3T 0 [7777=>SIGNIFICANT JMP 4T XSK i 3R SRO i 3333 [DEC DIGIT COUNTER JMP 3S+5 LDA 3S [RESIDUE JMP 1T+6 [OUTPUT DIGIT #4T JMP 1U CLR COM STC 3T JMP 4T-7 [E=<0 #3U ADA i 5 [MAX 4 ZERO [BETWEEN DP AND H|O DIGIT APO JMP 4Q [FULL CONVERT LDA i "0.; JMP 1U [OUTPUT DP LDA 1R [S|EXP ROL 1 SCR 1 AZE i JMP p+5 STC 4R JMP 1U [OUTPUT 0 XSK i 4R JMP p-2 JMP 3W [#DIG|FP# ADD 3Q COM STC 4R SET 3R 1R LDH i 3R JMP 1U [OUTPUT DIG XSK i 4R JMP p-3 JMP 1T+7 [SPACE,TERMINATE [ [E=<8 #4U ADA i 10 [=8B10 [ACC=E COM STA 4R ADD 3Q STC p+11 SET 3R 1R [OUTPUT E DIGITS LDH i 3R JMP 1U XSK i 4R JMP p-3 JMP 3W [#DIG|FP# ADA i 0 [ACC=#DIG-E-#0 APO [JMP=>INTEGER JMP 1T+7 [SPACE,TERMINATE COM STC 4R LDA i "0.; JMP 1U [OUTPUT DP [OUTPUT DIGITS TO RIGHT OF DP JMP 4U-5 [CALC # DIG|FP# #3W LDA i -1 [EXP NOT COUNTED UMB 9W [P0 ADA 2F+2000 [LEN FP # ROL 1 [TIMES 2 JMP 0 [RETURN [ [ [TABLE OF COMPLEMENT OF OCTAL EQUIVALENTS [FOR DECIMAL POSITIONS #4S -1750 [=-1000[B10 -144 [=-100[B10 -12 [=-10[B10 [ [ [END OF FP# GENERATOR 1R=11 3R=16 4R=17 [END OF PRINT ROUTINES 2F=1777 6K=1740 9W=0 9X=1 9Y=2 9Z=3 [END OF GLOBAL DEF