1 FIXMRI FADD=1000 2 FIXMRI FSUB=2000 3 FIXMRI FMPY=3000 4 FIXMRI FDIV=4000 5 FIXMRI FGET=5000 6 FIXMRI FPUT=6000 7 FNOR=7000 8 FEXT=0000 9 FIXTAB 10 /23-BIT EXTENDED FUNCTIONS 11 12 /1-31-72 R BEAN 13 14 /COPYRIGHT 1972 DIGITAL EQUIPMENT CORPORATION,MAYNARD, MASS. 01754 15 16 /DEC-08-NFPPA-A VERSION 1 17 18 EXP=44 19 HORD=45 20 LORD=46 21 22 FIXFLT=5500 23 *FIXFLT 24 25 /******FIX****** 26 /ROUTINE TO FIX ANY FLOATING NUMBER IN FAC BETWEEN -2047 AND +2047 TO 27 /A TWELVE BIT INTEGER AND LEAVE RESULT IN EXP (LOC 44) 28 29 005500 0000 FFIX, 0 30 005501 7200 CLA 31 005502 1044 TAD EXP /FETCH EXPONENT 32 005503 7540 SZA SMA /IS NUMBER <1? 33 005504 5307 JMP .+3 /NO-CONTINUE ON 34 005505 7200 FTRPRT, CLA 35 005506 5326 JMP FIXDNE+1 /YES-FIX IT TO ZERO 36 005507 1330 TAD M13 /SET BINARY POINT AT 11 37 005510 7450 SNA /PLACES TO RIGHT OF CURRENT POINT? 38 005511 5325 JMP FIXDNE /NO-NUMBER IS ALREADY FIXED THEN. 39 005512 7500 SMA /YES-IS NUMBER TOO LARGE TO FIX? 40 005513 5732 JMP I OTRAPA /YES-TAKE OVERFLOW TRAP 41 005514 3044 DCA EXP /NO-SET SCALE COUNT 42 005515 7100 FIXLP, CLL /0 IN LINK 43 005516 1045 TAD HORD /GET HIGH MANTISSA 44 005517 7510 SPA /IS IT <0? 45 005520 7020 CML /YES-PUT A 1 IN LINK 46 005521 7010 RAR /SCALE RIGHT 47 005522 3045 DCA HORD /SAVE 48 005523 2044 ISZ EXP /DONE YET? 49 005524 5315 JMP FIXLP /NO 50 005525 1045 FIXDNE, TAD HORD /YES-ANSWER IN AC 51 005526 3044 DCA EXP /RETURN WITH ANSWER IN 44 52 005527 5700 JMP I FFIX /RETURN 53 54 005530 7765 M13, -13 /-11 DECIMAL 55 005531 0013 C13, 13 /11 DECIMAL 56 005532 7570 OTRAPA, FTRP1 /ADDRESS OF VECTOR FOR OVERFLOW TRAP 57 58 /******FLOAT****** 59 /ROUTINE TO FLOAT ANY INTEGER IN EXP (LOC 44) INTO FAC 60 61 005533 0000 FFLOAT, 0 62 005534 1044 TAD EXP 63 005535 3045 DCA HORD /PUT NUMBER IN HI MANTISSA 64 005536 3046 DCA LORD /CLEAR LOW MANTISSA 65 005537 1331 TAD C13 /11(10) INTO EXPONENT 66 005540 3044 DCA EXP 67 005541 4743 JMS I FNORL /NORMALIZE 68 005542 5733 JMP I FFLOAT /RETURN 69 005543 7265 FNORL, FFNOR /LINK TO NORMALIZE ROUTINE 70 *5000 71 72 /******SINE****** 73 74 005000 0000 SIN, 0 75 005001 4320 JMS NHNDLE /IF X<0,NEGATE X AND SET NFLAG 76 005002 4662 JMS I FMPYL /X*2/PI 77 005003 5175 TOVPI 78 005004 4306 JMS FRACT /SAVE X IN TEMP1,THE INTEGER PART OF X IN NUM,AND GET FRACTIONAL PART IN FAC 79 005005 1330 TAD NUM /GET INTEGER PART OF (2/PI)*X 80 005006 0274 AND C3 /ISOLATE BITS 10,11 81 005007 1212 TAD JMPI 82 005010 3211 DCA .+1 /MAKE JUMP TO ARGUMENT REDUCING ROUTINE 83 005011 5211 JMP . /AND ADJUST ARG ACCORDING TO QUADRANT OF X 84 005012 5613 JMPI, JMP I .+1 85 005013 5026 POLYSN /X IN QUAD1,SIN(X)=SIN(X) 86 005014 5017 QUAD2 /X IN QUAD2,SIN(X)=SIN(1-X) 87 005015 5022 QUAD3 /X IN QUAD3,SIN(X)=SIN(-X) 88 005016 5024 QUAD4 /X IN QUAD4,SIN(X)=SIN(X-1) 89 90 005017 4665 QUAD2, JMS I FSUB1L /1-X 91 005020 5103 ONE 92 005021 5226 JMP POLYSN /CALCULATE SIN(1-X) 93 005022 4666 QUAD3, JMS I FNEGL /-X 94 005023 5226 JMP POLYSN /CALCULATE SIN(-X) 95 005024 4667 QUAD4, JMS I FSUBL /X-1 96 005025 5103 ONE 97 005026 4663 POLYSN, JMS I FPUTL /SAVE X 98 005027 5075 TEMP1 99 005030 4670 JMS I FSQRL /U=X**2 100 005031 4663 JMS I FPUTL /SAVE U 101 005032 5100 TEMP2 102 005033 4662 JMS I FMPYL /A7*U 103 005034 5402 SINA7 104 005035 4661 JMS I FADDL /A5+A7*U 105 005036 5377 SINA5 106 005037 4662 JMS I FMPYL /A5*U+A7*U**2 107 005040 5100 TEMP2 108 005041 4661 JMS I FADDL /A3+A5(U)+A7(U**2) 109 005042 5374 SINA3 110 005043 4662 JMS I FMPYL /A3(U)+A5(U**2)+A7(U**3) 111 005044 5100 TEMP2 112 005045 4661 JMS I FADDL /A1+A3(U)+A5(U**2)+A7(U**3) 113 005046 5371 SINA1 114 005047 4662 JMS I FMPYL /A1(X)+A3(X**3)+A5(X**5)+A7(X**7) 115 005050 5075 TEMP1 116 005051 4330 JMS NCHK /IF NFLAG IS SET,SET SIN(X)=-SIN(X) 117 005052 5600 JMP I SIN /FAC=SIN(X) 118 119 120 /******COSINE****** 121 /USES SIN ROUTINE TO CALCULATE COS(X) 122 123 005053 0000 COS, 0 124 005054 4661 JMS I FADDL /COS(X)=SIN(PI/2+X) 125 005055 5405 PIOV2 126 005056 4200 JMS SIN 127 005057 5653 JMP I COS /RETURN 128 129 005060 7306 FGETL, FFGET 130 005061 7000 FADDL, FFADD 131 005062 6600 FMPYL, FFMPY 132 005063 7322 FPUTL, FFPUT 133 005064 6722 FDIVL, FFDIV 134 005065 6400 FSUB1L, FFSUB1 135 005066 7135 FNEGL, FFNEG 136 005067 7117 FSUBL, FFSUB 137 005070 7564 FSQRL, FFSQ 138 005071 5500 FIXL, FFIX 139 005072 5533 FLOATL, FFLOAT 140 005073 6412 FDIV1L, FFDIV1 141 005074 0003 C3, 3 142 005075 0000 TEMP1, 0 143 005076 0000 0 144 005077 0000 0 145 005100 0000 TEMP2, 0 /TWO TEMP STORAGE BLOCKS FOR FUNCTIONS 146 005101 0000 0 147 005102 0000 0 148 005103 0001 ONE, 1 /1 149 005104 2000 2000 150 005105 0000 0 151 152 /ROUTINE TO SEPERATE THE INTEGER AND FRACTIONAL PARTS OF FAC 153 /ORIGINAL FAC IS SAVED IN TEMP1,THE INTEGER PORTION OF FAC IS 154 /SAVED AT NUM,AND THE FRACTIONAL FORTION OF THE FAC IS LEFT IN THE FAC 155 156 005106 0000 FRACT, 0 157 005107 4663 JMS I FPUTL /SAVE X 158 005110 5075 TEMP1 159 005111 4671 JMS I FIXL /INTEGER PORTION OF X 160 005112 1044 TAD EXP 161 005113 3330 DCA NUM /SAVE FIXED FORTION OF X 162 005114 4672 JMS I FLOATL /FAC=FLOAT(FIX(X)) 163 005115 4665 JMS I FSUB1L /FAC=X-INT(X)=FRACTION (X) 164 005116 5075 TEMP1 165 005117 5706 JMP I FRACT /RETURN 166 167 /ROUTINE TO CHECK IF FAC<0; IF IT IS,FAC IS NEGATED AND NFLAG IS 168 /SET TO 1 169 170 005120 0000 NHNDLE, 0 171 005121 1045 TAD HORD /FETCH HIGH ORDER MANTISSA 172 005122 7700 SMA CLA /IS IT <0? 173 005123 5326 JMP NFLGST /NO-CLEAR NFLAG 174 005124 4666 JMS I FNEGL /YES-NEGATE FAC 175 005125 7001 IAC /AND SET NFLAG 176 005126 3335 NFLGST, DCA NFLAG 177 005127 5720 JMP I NHNDLE 178 179 /ROUTINE TO NEGATE FAC IF NFLAG IS NOT =0 180 181 005130 0000 NCHK, 0 /LOC ALSO USED FOR TEMP STORAGE 182 005131 1335 TAD NFLAG 183 005132 7640 SZA CLA /IS NFLAG=0? 184 005133 4666 JMS I FNEGL /NO-NEGATE FAC 185 005134 5730 JMP I NCHK /YES-RETURN 186 187 NUM=NCHK 188 189 /******EXPONENTIAL****** 190 191 005135 0000 EXPON, 0 /LOC USED FOR TEMP STORAGE BY SIN,ARCTAN 192 005136 4662 JMS I FMPYL /Y=XLOG2(E) 193 005137 5410 LOG2E 194 005140 4306 JMS FRACT /GET FRACTIONAL PART OF Y 195 005141 4662 JMS I FMPYL /(FRACTION(Y))*(LN2/2) 196 005142 5413 LN2OV2 197 005143 4663 JMS I FPUTL /SAVE Y 198 005144 5075 TEMP1 199 005145 4670 JMS I FSQRL /Y**2 200 005146 4661 JMS I FADDL /B1+Y**2 201 005147 5416 EXPB1 202 005150 4673 JMS I FDIV1L /A1/(B1+Y**2) 203 005151 5421 EXPA1 204 005152 4661 JMS I FADDL /A0+A1/(B1+Y**2) 205 005153 5424 EXPA0 206 005154 4667 JMS I FSUBL /A0-Y+A1/(B1+Y**2) 207 005155 5075 TEMP1 208 005156 4663 JMS I FPUTL /SAVE 209 005157 5100 TEMP2 210 005160 4660 JMS I FGETL /GET Y 211 005161 5075 TEMP1 212 005162 2044 ISZ EXP /MULT. BY 2=2Y 213 005163 7000 NOP 214 005164 4664 JMS I FDIVL /2Y/(A0-Y+A1/(B1+Y**2)) 215 005165 5100 TEMP2 216 005166 4661 JMS I FADDL /1+2Y/(AO-Y+A1/(B1+Y**2)) 217 005167 5103 ONE 218 005170 4670 JMS I FSQRL /[1+2Y/(A0-Y+A1/(B1+Y**2))]**2=EXP(Y) 219 005171 1330 TAD NUM 220 005172 1044 TAD EXP /EXP(X)=(2**N)(EXPY) 221 005173 3044 DCA EXP 222 005174 5735 JMP I EXPON /FAC=EXPON(X) 223 224 NFLAG=EXPON 225 226 /CONSTANT THAT WOULDN'T FIT ELSEWHERE 227 005175 0000 TOVPI, 0 /.6366198 228 005176 2427 2427 229 005177 6302 6302 230 *SIN+200 231 232 /******ARC TANGENT****** 233 234 005200 0000 ATAN, 0 235 005201 4661 JMS I NHNDLL /IF X<0,SET NFLAG AND NEGATE 236 005202 4756 JMS I FPUTM /SAVE X 237 005203 5075 TEMP1 238 005204 4763 JMS I FSUBM /X-1 239 005205 5103 ONE 240 005206 1045 TAD HORD /GET HI MANTISSA 241 005207 7710 SPA CLA /WAS X>1? 242 005210 5220 JMP ARGPOL /NO-CLEAR GT1FLG 243 005211 4767 JMS I FGETM /YES-ATAN(X)=PI/2-ATAN(1/X) 244 005212 5103 ONE 245 005213 4761 JMS I FDIVM /1/X 246 005214 5075 TEMP1 247 005215 4756 JMS I FPUTM 248 005216 5075 TEMP1 249 005217 7001 IAC /SET GT1FLG 250 005220 3263 ARGPOL, DCA GT1FLG 251 005221 4767 JMS I FGETM /GET X OR 1/X 252 005222 5075 TEMP1 253 005223 4765 JMS I FSQRM /Y**2 254 005224 4756 JMS I FPUTM /SAVE 255 005225 5100 TEMP2 256 005226 4760 JMS I FADDM /Y**2+B3 257 005227 5451 ATANB3 258 005230 4762 JMS I FDIV1M /A3/(Y**2+B3) 259 005231 5446 ATANA3 260 005232 4760 JMS I FADDM /B2+A3/(Y**2+B3) 261 005233 5443 ATANB2 262 005234 4760 JMS I FADDM /Y**2+B2+A3/(Y**2+B3) 263 005235 5100 TEMP2 264 005236 4762 JMS I FDIV1M /A2/(Y**2+B2+A3/(Y**2+B3)) 265 005237 5440 ATANA2 266 005240 4760 JMS I FADDM /B1+A2/(Y**2+B2+A3/(Y**2+B3)) 267 005241 5435 ATANB1 268 005242 4760 JMS I FADDM /Y**2+B1+A2/(Y**2+B2+A3/(Y**2+B3)) 269 005243 5100 TEMP2 270 005244 4762 JMS I FDIV1M /A1/(Y**2+B1+A2/(Y**2+B2+A3/(Y**2+B3))) 271 005245 5432 ATANA1 272 005246 4760 JMS I FADDM /B0+A1/(Y**2+B1+A2/(Y**2+B2+A3/(Y**2+B3))) 273 005247 5427 ATANB0 274 005250 4757 JMS I FMPYM /ATAN(Y)=X*(B0+A1/(Y**2+B1+A2/(Y**2+B2+A3/(Y**2+B3)))) 275 005251 5075 TEMP1 276 005252 1263 TAD GT1FLG /WAS X>1? 277 005253 7650 SNA CLA 278 005254 5257 JMP NGT /NO-TEST IF X<0? 279 005255 4764 JMS I FSUB1M /ATAN(X)=PI/2-ATAN(1/X) 280 005256 5405 PIOV2 281 005257 4662 NGT, JMS I NCHKL /IF NFLAG SET,NEGATE FAC 282 005260 5600 JMP I ATAN /FAC=ATAN(X) 283 005261 5120 NHNDLL, NHNDLE 284 005262 5130 NCHKL, NCHK 285 286 /******NAPERIAN LOGARITHM****** 287 288 GTFLG=ATAN 289 290 005263 0000 LOG, 0 291 005264 1045 TAD HORD 292 005265 7550 SPA SNA /X<0 OR X=0? 293 005266 5770 JMP I ARTRAP /YES-TAKE ILLEGAL ARGUMENT TRAP 294 005267 7106 CLL RTL 295 005270 7450 SNA /NO-HORD=2000? 296 005271 1044 TAD EXP /YES-EXP=1? 297 005272 7041 CMA IAC 298 005273 7001 IAC 299 005274 7450 SNA 300 005275 1046 TAD LORD /YES-LORD=0? 301 005276 7640 SZA CLA 302 005277 5304 JMP POLYNL /NO-ARG IS LEGAL AND NOT 1 303 005300 3044 DCA EXP 304 005301 3046 DCA LORD 305 005302 3045 LTRPRT, DCA HORD 306 005303 5663 JMP I LOG /YES-LOG(1)=0 307 005304 1044 POLYNL, TAD EXP 308 005305 3200 DCA GTFLG /SAVE EXPONENT FOR LATER 309 005306 3044 DCA EXP /ISOLATE MANTISSA IN FAC 310 005307 4756 JMS I FPUTM /SAVE F 311 005310 5075 TEMP1 312 005311 4760 JMS I FADDM /F+SQR(.5) 313 005312 5454 SQRP5 314 005313 4756 JMS I FPUTM /SAVE 315 005314 5100 TEMP2 316 005315 4767 JMS I FGETM 317 005316 5075 TEMP1 318 005317 4763 JMS I FSUBM /F-SQR(.5) 319 005320 5454 SQRP5 320 005321 4761 JMS I FDIVM /Z=F+SQR(.5)/F-SQR(.5) 321 005322 5100 TEMP2 322 005323 4756 JMS I FPUTM 323 005324 5075 TEMP1 324 005325 4765 JMS I FSQRM /Z**2 325 005326 4756 JMS I FPUTM 326 005327 5100 TEMP2 327 005330 4757 JMS I FMPYM /C5(Z**2) 328 005331 5465 LOGC5 329 005332 4760 JMS I FADDM /C3+C5(Z**2) 330 005333 5462 LOGC3 331 005334 4757 JMS I FMPYM /C3(Z**2)+C5(Z**4) 332 005335 5100 TEMP2 333 005336 4760 JMS I FADDM /C1+C3(Z**2)+C5(Z**4) 334 005337 5457 LOGC1 335 005340 4757 JMS I FMPYM /C1(Z)+C3(Z**3)+C5(Z**5) 336 005341 5075 TEMP1 337 005342 4763 JMS I FSUBM /C1(Z)+C3(Z**3)+C5(Z**5)-1/2=LOG2(F) 338 005343 5470 ONEHAF 339 005344 4756 JMS I FPUTM /SAVE LOG2(F) 340 005345 5100 TEMP2 341 005346 1200 TAD GTFLG /I 342 005347 3044 DCA EXP /SET UP FLOAT 343 005350 4766 JMS I FLOATM 344 005351 4760 JMS I FADDM /I+LOG2(F) 345 005352 5100 TEMP2 346 005353 4757 JMS I FMPYM /[I+LOG2(F)]*LOGE(2)=LOGE(X) 347 005354 5473 LN2 348 005355 5663 JMP I LOG /FAC=LN(X) 349 350 GT1FLG=LOG 351 005356 7322 FPUTM, FFPUT 352 005357 6600 FMPYM, FFMPY 353 005360 7000 FADDM, FFADD 354 005361 6722 FDIVM, FFDIV 355 005362 6412 FDIV1M, FFDIV1 356 005363 7117 FSUBM, FFSUB 357 005364 6400 FSUB1M, FFSUB1 358 005365 7564 FSQRM, FFSQ 359 005366 5533 FLOATM, FFLOAT 360 005367 7306 FGETM, FFGET 361 005370 7572 ARTRAP, FTRP3 362 363 /CONSTANTS USED BY VARIOUS FUNCTIONS 364 365 005371 0001 SINA1, 1 /1.5707949 366 005372 3110 3110 367 005373 3747 3747 368 005374 0000 SINA3, 0 /-.64592098 369 005375 5325 5325 370 005376 1167 1167 371 005377 7775 SINA5, 7775 /.07948766 372 005400 2426 2426 373 005401 2466 2466 374 005402 7771 SINA7, 7771 /-.004362476 375 005403 5610 5610 376 005404 3164 3164 377 005405 0001 PIOV2, 1 /1.5707963 378 005406 3110 3110 379 005407 3756 3756 380 005410 0001 LOG2E, 1 /1.442695 381 005411 2705 2705 382 005412 2434 2434 383 005413 7777 LN2OV2, 7777 /.34657359 384 005414 2613 2613 385 005415 4415 4415 386 005416 0006 EXPB1, 6 /60.090191 387 005417 3602 3602 388 005420 7054 7054 389 005421 0012 EXPA1, 12 /-601.80427 390 005422 5514 5514 391 005423 3104 3104 392 005424 0004 EXPA0, 4 /12.015017 393 005425 3001 3001 394 005426 7301 7301 395 005427 7776 ATANB0, 7776 /.17465544 396 005430 2626 2626 397 005431 6157 6157 398 005432 0002 ATANA1, 2 /3.7092563 399 005433 3553 3553 400 005434 1071 1071 401 005435 0003 ATANB1, 3 /6.762139 402 005436 3303 3303 403 005437 0670 670 404 005440 0003 ATANA2, 3 /-7.10676 405 005441 4344 4344 406 005442 5267 5267 407 005443 0002 ATANB2, 2 /3.3163354 408 005444 3241 3241 409 005445 7554 7554 410 005446 7777 ATANA3, 7777 /-.26476862 411 005447 5703 5703 412 005450 4040 4040 413 005451 0001 ATANB3, 1 /1.44863154 414 005452 2713 2713 415 005453 3140 3140 416 005454 0000 SQRP5, 0 /.7071068 417 005455 2650 2650 418 005456 1170 1170 419 005457 0002 LOGC1, 2 /2.8853913 420 005460 2705 2705 421 005461 2440 2440 422 005462 0000 LOGC3, 0 /.9614706 423 005463 3661 3661 424 005464 0566 566 425 005465 0000 LOGC5, 0 /.59897865 426 005466 2312 2312 427 005467 5525 5525 428 005470 0000 ONEHAF, 0 /.5 429 005471 2000 2000 430 005472 0000 0 431 005473 0000 LN2, 0 /.6931472 432 005474 2613 2613 433 005475 4415 4415 434 435 FFSIN=SIN 436 FFCOS=COS 437 FFATN=ATAN 438 FFLOG=LOG 439 FFEXP=EXPON 440 441 442 PAUSE 443 444 /23-BIT FLOATING PT INTERPRETER 445 /DEC-08-NFPPA-A VERSION 1 446 /COPYRIGHT 1972 BY DIGITAL EQUIPMENT CORPORATION 447 /MAYNARD, MASSACHUSETTS. 01754 448 / 449 /W.J. CLOGHER 450 / 451 / 452 /DEFINITION FOR ORIGIN OF PACKAGE 453 / 454 FLPT=7400 455 456 / 457 /PAGE ZERO LOCATIONS USED 458 / 459 *7 460 000007 7400 FPP, FPT /IF THIS IS MOVED, FIX LOC. K7 461 *40 462 000040 0000 AC0, 0 463 000041 0000 AC1, 0 464 000042 0000 AC2, 0 465 000043 6201 TM, CDF 0 /ONLY NEEDED ONCE (FIRST CALL TO CDFCUR) 466 000044 0000 ACX, 0 /FLOATING ACCUMULATOR-EXPONENT 467 000045 0000 ACH, 0 / " " -HIGH ORDER MANTISSA 468 000046 0000 ACLO, 0 / " " -LOW ORDER MANTISSA 469 000047 0000 OPX, 0 /STORAGE FOR OPERAND 470 000050 0000 OPH, 0 471 000051 0000 OPL, 0 472 000052 0000 DSWIT, 0 /SWITCH SHOWING IF ANY INPUT CONV. WAS DONE 473 000053 0000 CHAR, 0 /LOCATION HOLDING TERMINATOR OF LAST INPUT. 474 000054 7777 SWIT1, 7777 /=0 IF NO LINE FEED AFTER CAR.RET. ON INPUT 475 000055 7777 SWIT2, 7777 /=0 IF NO CR/LF AFTER OUTPUT 476 / 477 /IF EFLG = 0, 6 IS DEPOSITED INTO DADP, AND 16 (8) INTO FLDW 478 / 479 000056 0000 EFLG, 0 /=0 IF E FORMAT OUT 480 000057 0000 FLDW, 0 /FIELD WIDTH ON OUTPUT 481 000060 0000 DADP, 0 /=# OF PLACES AFTER DEC. PT. 482 000061 7413 FPNXT, FPNEXT /(DON'T USE FPNEXT AS A TEM!! E.G. IN I/O 483 /SINCE OS/8 BASIC MAY BE THERE INSTEAD!!!) 484 485 *FLPT-2600 486 / 487 /PARTS OF INTERPRETER DISPATCH ROUTINES 488 / 489 /TABLE FOR JUMPS-OP CODE 7 490 / 491 004600 5601 JMPI3, JMP I TABLE3 492 004601 7546 TABLE3, FFSKP /SKIP ON CONDITION OF FAC 493 004602 7560 FFCDF /CHANGE FLTG. DATA FIELD 494 004603 7405 FFSW0 /FLOATING SWITCH 0 495 004604 4617 FFSW1 /FLOATING SWITCH 1 496 004605 7130 FFHLT /FLOATING HALT-DISPLAY PC 497 004606 7413 FPNEXT /NOP-FOR FUTURE EXPANSION 498 004607 7413 FPNEXT / " 499 004610 7413 FPNEXT / " 500 / 501 /ROUTINE FOR DECODING SPECIAL FJMS'S-OP CODE 7 502 / 503 004611 1050 JSKP, TAD OPH /GET EFF. ADDR. 504 004612 0216 AND P7 /MASK OFF BITS 9-11 505 004613 1200 TAD JMPI3 /MAKE A JUMP THROUGH TABLE 506 004614 3215 DCA .+1 /STORE IT 507 004615 0000 0 /EXECUTE IT 508 004616 0007 P7, 7 509 / 510 /FLOATING SWITCH 1 511 / 512 004617 4733 FFSW1, JMS I CDFCRK /MUST BE CURRENT DATA FIELD 513 004620 1225 TAD FFSB1 /CHANGE INTERPRETATION OF SUB, DIV 514 004621 3627 DCA I TSUBP /SO THAT FAC IS SUBTRACTED 515 004622 1226 TAD FFDV1 /FROM OR DIVIDED INTO OPERAND 516 004623 3630 DCA I TDIVP 517 004624 5461 JMP I FPNXT /DONE 518 004625 6400 FFSB1, FFSUB1 519 004626 6412 FFDV1, FFDIV1 520 004627 7457 TSUBP, TSUB 521 004630 7461 TDIVP, TDIV 522 523 *FLPT-2500 524 / 525 /THIS STUFF MUST BE HERE CAUSE OS/8 BASIC EXPECTS IT 526 /TO BE HERE 527 / 528 /MDSET-SETS UP SIGNS FOR MULTIPLY AND DIVIDE 529 /ALSO SHIFTS OPERAND ONE BIT TO THE LEFT. 530 /EXIT WITH EXPONENT OF OPERAND IN AC FOR EXPONENT 531 /CALCULATION-CALLED WITH ADDRESS OF OPERAND IN AC AND 532 /DATA FIELD SET PROPERLY FOR OPERAND. 533 / 534 004700 0000 MDSET, 0 535 004701 4734 JMS I ARGETK /GET ARGUMENT 536 004702 4733 MD1, JMS I CDFCRK /CHANGE TO DF OF PACKAGE 537 004703 7344 CLA CLL CMA RAL /SET SIGN CHECK TO -2 538 004704 3043 DCA TM 539 004705 1050 TAD OPH /IS OPERAND NEGATIVE? 540 004706 7700 SMA CLA 541 004707 5312 JMP .+3 /NO 542 004710 4732 JMS I OPNEGP /YES-NEGATE IT 543 004711 2043 ISZ TM /BUMP SIGN CHECK 544 004712 1051 TAD OPL /AND SHIFT OPERAND LEFT ONE BIT 545 004713 7104 CLL RAL 546 004714 3051 DCA OPL 547 004715 1050 TAD OPH 548 004716 7004 RAL 549 004717 3050 DCA OPH 550 004720 3041 DCA AC1 /CLR. OVERFLOW WORF OF FAC 551 004721 1045 TAD ACH /IS FAC NEGATIVE 552 004722 7700 SMA CLA 553 004723 5327 JMP LEV /NO-GO ON 554 004724 4731 JMS I FFNEGK /YES-NEGATE IT 555 004725 2043 ISZ TM /BUMP SIGN CHECK 556 004726 7000 NOP /MAY SKIP 557 004727 1047 LEV, TAD OPX /EXIT WITH OPERAND EXPONENT IN AC 558 004730 5700 JMP I MDSET 559 560 004731 7135 FFNEGK, FFNEG 561 004732 7146 OPNEGP, OPNEG 562 004733 7356 CDFCRK, CDFCUR 563 004734 7251 ARGETK, ARGET 564 / 565 /CONTINUATION OF FLOATING DIVIDE ROUTINE 566 / 567 004735 1042 FD1, TAD AC2 /NEGATE HI ORDER PRODUCT 568 004736 7141 CLL CMA IAC 569 004737 1045 TAD ACH /COMPARE WITH REMAINDER OF FIRST DIV. 570 004740 7420 SNL /WELL? 571 004741 5764 JMP I DVOPSP /GREATER THAN REM.-ADJUST QUOT OF 1ST DIV. 572 004742 7100 CLL /OK-DO (REM-(Q*OPL))/OPH 573 004743 3045 DCA ACH /FIRST STORE ADJUSTED PRODUCT 574 004744 4763 JMS I DV24P /DIVIDE BY OPH (HI ORDER OPERAND) 575 004745 1041 DVL1, TAD AC1 /GET QUOT. OF FIRST DIV. 576 004746 7500 SMA /IF HI ORDER BIT SET-MUST SHIFT 1 RIGHT 577 004747 5360 JMP FD /NO-ITS NORMALIZED-DONE 578 004750 7110 CLL RAR /MUST SHIFT RIGHT 1 579 004751 3045 DCA ACH /STORE IN FAC 580 004752 1046 TAD ACLO /SHIFT LOW ORDER RIGHT 581 004753 7010 RAR 582 004754 3046 DCA ACLO /STORE BACK 583 004755 2044 ISZ ACX /BUMP EXPONENT 584 004756 7000 NOP 585 004757 1045 TAD ACH 586 004760 3045 FD, DCA ACH /STORE HIGH ORDER RESULT 587 004761 5762 JMP I FDDONP /GO LEAVE DIVIDE 588 589 004762 6742 FDDONP, FDDON /END OF FLTG. DIV. ROUTINE 590 004763 6745 DV24P, DV24 /ROUTINE TO DO A 24X12BIT DIVIDE 591 004764 7340 DVOPSP, DVOPS /ROUTINE TO ADJUST QUOT OF FIRST DIV. 592 / 593 /CONTINUATION OF ROUTINE TO ADJUST QUOT. OF FIRST DIV. 594 /DBAD1 IS ONLY EXECUTED ON DIVIDE OVERFLOW-OTHERWISE THE 595 /ROUTINE STARTS AT DVOP2 596 / 597 004765 3044 DBAD1, DCA ACX /DIVIDE OVERFLO-ZERO ALL 598 004766 7450 DVOP2, SNA /IS IT ZERO? 599 004767 3046 DCA ACLO /YES-MAKE WHOLE THING ZERO 600 004770 3045 DCA ACH 601 004771 4763 JMS I DV24P /DIVIDE EXTENDED REM. BY HI DIVISOR 602 004772 1046 TAD ACLO /NEGATE THE RESULT 603 004773 7141 CLL CMA IAC 604 004774 3046 DCA ACLO 605 004775 7420 SNL /IF QUOT. IS NON-ZERO, SUBTRACT 606 004776 7040 CMA /ONE FROM HIGH ORDER QUOT. 607 004777 5345 JMP DVL1 /GO TO IT 608 *FLPT-1600 609 610 / 611 /FLOATING OUTPUT ROUTINE 612 / 613 005600 0000 FFOUT, 0 614 005601 7344 CLA CLL CMA RAL /MAKE A MINUS TWO 615 005602 3740 DCA I FFNGP /AND STORE IN SIGN WORD 616 005603 3341 DCA KNT /CLEAR COUNT WORD 617 005604 1056 TAD EFLG /IS THIS E FORMAT? 618 005605 7640 SZA CLA 619 005606 5213 JMP FFMT /NO-F FORMAT 620 005607 1342 TAD K6 /YES-GET A 6 621 005610 3060 DCA DADP /STORE AS # OF DIGITS AFT DEC PT 622 005611 1321 TAD K16 /SET FIELD WIDTH TO 14 ( DECIMAL) 623 005612 3057 DCA FLDW 624 005613 4722 FFMT, JMS I CDFCRB /CHANGE TO FIELD OF PACKAGE 625 005614 1333 TAD KM7 /SET # OF SIGNF. DIGITS 626 005615 3727 DCA I DCNTP /TO 6 (DON'T PRINT 7TH) 627 005616 1045 TAD ACH /DETERMINE IF #=0 628 005617 7450 SNA 629 005620 5274 JMP FOUT3 /YES-SKIP DOWN 630 005621 7700 SMA CLA /NO-IS IT NEGATIVE? 631 005622 5225 JMP .+3 /POSITIVE 632 005623 4740 JMS I FFNGP /NEGATE # 633 005624 3740 DCA I FFNGP /NEGATIVE-SET FLAG 634 005625 1044 FOUT1, TAD ACX /GET # INTO RANGE .1<=N<1 635 005626 7740 SMA SZA CLA /IS EXP. NEG.? 636 005627 5234 JMP FOUT2 /NO-GO ON 637 005630 4737 JMS I FFMPP /YES-MAKE # GREATER THAN 1 638 005631 6315 TEN /BY MULTIPLYING BY TEN (DEC.) 639 005632 2341 ISZ KNT /COUNT THE MULTIPLIES 640 005633 5225 JMP FOUT1 /SEE IF >1 YET 641 005634 4306 FOUT2, JMS SE /# IS >1-MAKE IT LESS THAN 1 642 005635 4736 JMS I FFPUTP /STORE IN A TEMPORARY 643 005636 6160 TM3 644 005637 3044 DCA ACX /SET FAC TO .5 645 005640 7132 CLL CML RTR 646 005641 3045 DCA ACH 647 005642 3046 DCA ACLO 648 005643 1056 TAD EFLG /IS THIS E FORMAT? 649 005644 7640 SZA CLA 650 005645 1341 TAD KNT /NO-GET COUNT OF MULTIPLIES 651 005646 7041 CMA IAC /NEGATE IT 652 005647 1060 TAD DADP /AND ADD # OF DIGITS AFT. DC. PT. 653 005650 7500 SMA /MUST BE NEGATIVE 654 005651 7040 CMA 655 005652 1331 TAD KK7 /LIMIT # OF DIVS TO 7 656 005653 7510 SPA 657 005654 7200 CLA 658 005655 1333 TAD KM7 /RESTORE 659 005656 3306 DCA SE /STORE AS COUNTER 660 005657 5262 JMP .+3 661 005660 4735 JMS I FFDVP /DIVIDE .5 BY TEN THAT # OF TIMES 662 005661 6315 TEN 663 005662 2306 ISZ SE /DONE? 664 005663 5260 JMP .-3 /NO-GO ON 665 005664 4734 JMS I FFADP /YES-ADD IN ORIG.#-THIS IS ROUNDING 666 005665 6160 TM3 667 005666 4306 JMS SE /INSURE THAT IT IS IN RANGE 668 005667 1044 FOUT4, TAD ACX /SHIFT MANTISSA ACCORDING TO EXP 669 005670 7041 CMA IAC /0=1 LEFT; 1=NO SHIFT;2=1 RIGHT,... 670 005671 4704 JMS I ACSRPT /SHIFT RIGHT (ACX+1) PLACES 671 005672 4705 JMS I AL1PT /SHIFT LEFT 2 TO CORRECT 672 005673 4705 JMS I AL1PT /(WE ARE LOSING BITS!!) 673 005674 1341 FOUT3, TAD KNT /DONE-GET COUNT OF MULS. 674 005675 3047 DCA OPX /PRESERVE IT 675 005676 1056 TAD EFLG /IS THIS E FORMAT OUT? 676 005677 7640 SZA CLA 677 005700 5343 JMP NOTE /NO 678 005701 3341 DCA KNT /YES-ZERO COUNT 679 005702 1333 TAD KM7 /GET MINUS 7-FOR 2 SIGNS,PT,+EXP 680 005703 5347 JMP ADFW /GO ADD FIELD WIDTH 681 005704 7072 ACSRPT, ACSR 682 005705 7057 AL1PT, AL1 683 / 684 /ROUTINE TO GET FAC<1 685 / 686 005706 0000 SE, 0 687 005707 1044 SE1, TAD ACX 688 005710 7750 SPA SNA CLA /#>1? 689 005711 5706 JMP I SE /NO-RETN. 690 005712 4735 JMS I FFDVP /YES-DIV. BY TEN 691 005713 6315 TEN 692 005714 7040 CMA 693 005715 1341 TAD KNT /REDUCE KNT BY 1 694 005716 3341 DCA KNT 695 005717 5307 JMP SE1 696 /CONSTANTS AND POINTERS 697 005720 6153 OUTDGP, OUTDG 698 005721 0016 K16, 16 699 005722 7356 CDFCRB, CDFCUR 700 005723 5600 FLINK, JMP I FFOUT 701 005724 6163 PRNTXP, PRNTX 702 005725 6175 PRZROP, PRZRO 703 005726 6076 DGTYPP, DGTYP 704 005727 6137 DCNTP, DCNT 705 005730 7777 M1, 7777 706 005731 0007 KK7, 7 707 005732 7760 KM20, -20 708 005733 7771 KM7, -7 709 005734 7000 FFADP, FFADD 710 005735 6722 FFDVP, FFDIV 711 005736 7322 FFPUTP, FFPUT 712 005737 6600 FFMPP, FFMPY 713 005740 7135 FFNGP, FFNEG 714 005741 0000 KNT, 0 715 005742 0006 K6, 6 716 /CONTINUATION OF OUTPUT MAINLINE 717 005743 1341 NOTE, TAD KNT /GET COUNT OF MULTIPLIES 718 005744 7500 SMA /IF NOT NEG-MAKE = -2 719 005745 7240 CLA CMA 720 005746 1330 TAD M1 /MINUS 1 FOR DEC.PT 721 005747 1057 ADFW, TAD FLDW /GET THE FIELD WIDTH 722 005750 7041 CMA IAC /NEGATE IT 723 005751 3735 DCA I FFDVP /STORE WHILE WE CHECK DADP 724 005752 1060 TAD DADP /GET DIGITS AFTER DEC. PT 725 005753 7450 SNA /DID HE SAY NO DEC. PLACES? 726 005754 7040 CMA /YES-TAKE AWAY 1 SINCE NO DEC. PT. 727 005755 1735 TAD I FFDVP /ADD IN REST 728 005756 7500 SMA /NEG? 729 005757 5724 JMP I PRNTXP /NO-PRINT XS-NOT ENUFF ROOM 730 005760 3306 DCA SE /STORE AS CNT OF SPACES 731 005761 5364 JMP .+3 732 005762 1332 TAD KM20 733 005763 4720 JMS I OUTDGP /PRINT A SPACE 734 005764 2306 ISZ SE /DONE? 735 005765 5362 JMP .-3 /NO-GO ON 736 005766 7346 CLA CLL CMA RTL /MAKE A MINUS 3 737 005767 1740 TAD I FFNGP /YES-GET SIGN(=-2 OR 0) 738 005770 4720 JMS I OUTDGP /FOR PLUS OR MINUS-PRINT SIGN 739 005771 1341 TAD KNT /GET MUL COUNT 740 005772 7500 SMA 741 005773 5725 JMP I PRZROP /PRINT LEADING ZERO 742 005774 7041 CMA IAC 743 005775 4726 JMS I DGTYPP /OUTPUT 'KNT' DIGITS 744 005776 1060 PRDCP, TAD DADP /CHECK DADP FOR 0 745 005777 7650 SNA CLA /DON'T PRINT '.' IF DADP=0 746 /************************************* 747 /FALL THROUGH PAGE BOUNDARY!!! 748 /'SNA CLA' MUST BE LAST LOC. ON PAGE!!! 749 /(CURSE YOU B.C.) 750 /************************************* 751 *FLPT-1400 752 /*******FALL THROUGH PAGE BOUNDARY TO HERE******* 753 006000 5203 JMP GKNT /MUST BE FIRST LOC. OF PAGE!!******* 754 006001 7344 PDP, CLA CLL CMA RAL 755 006002 4353 JMS OUTDG /PRINT DEC. PT. 756 006003 1757 GKNT, TAD I KNTP /GET COUNT AGAIN 757 006004 7750 SPA SNA CLA 758 006005 5225 JMP GD 759 006006 1757 TAD I KNTP /GET COUNT 760 006007 7040 CMA /NEGATE 761 006010 3276 DCA DGTYP /STORE AS COUNTER 762 006011 1060 TAD DADP 763 006012 7040 CMA /SAME FOR DADP 764 006013 3362 DCA SEP 765 006014 5216 JMP PR /GO ON 766 006015 4353 PZR, JMS OUTDG /PRINT A ZERO 767 006016 2276 PR, ISZ DGTYP 768 006017 7410 SKP 769 006020 5223 JMP PS 770 006021 2362 ISZ SEP 771 006022 5215 JMP PZR 772 006023 1757 PS, TAD I KNTP 773 006024 7041 CMA IAC 774 006025 1060 GD, TAD DADP 775 006026 7540 SMA SZA 776 006027 4276 JMS DGTYP 777 006030 7200 CLA 778 006031 1056 TAD EFLG 779 006032 7640 SZA CLA 780 006033 5266 JMP DONEF /DONE 781 006034 4344 JMS OUT 782 006035 0305 305 /PRINT 'E' 783 006036 1047 TAD OPX /GET PRESERVED COUNT OF MULS 784 006037 7740 SMA SZA CLA /DETERMINE SIGN 785 006040 7326 CLA CLL CML RTL /MAKE A 2 786 006041 4344 JMS OUT 787 006042 0253 253 /PRINT MINUS OR PLUS SIGN 788 006043 1334 TAD KM144 /SET TO DIV BY 100 789 006044 3050 DCA OPH 790 006045 7344 CLA CLL CMA RAL /SET LOOP COUNTER 791 006046 3276 DCA DGTYP 792 006047 1047 TAD OPX /GET THE COUNT 793 006050 7510 SPA 794 006051 7041 CMA IAC /NEGATE IF NEGATIVE 795 006052 3046 LOOP, DCA ACLO /STORE FOR DIV. ROUTINE 796 006053 3045 DCA ACH /HI ORD. MUST BE ZERO 797 006054 7100 CLL /PREVENT DIVIDE OVERFLOW!! 798 006055 4736 JMS I DV24PT /DIVIDE BY 100 799 006056 1046 TAD ACLO /GET THE QUOTIENT 800 006057 4353 JMS OUTDG /OUTPUT HUNDREDS PLACE 801 006060 1335 TAD KM12 /NOW DIV. BY 10 802 006061 3050 DCA OPH 803 006062 1045 TAD ACH /DIV. REM. BY 10 804 006063 2276 ISZ DGTYP /DONE? 805 006064 5252 JMP LOOP /NO-GO DO CALCULATE , PRINT TENS PLACE 806 006065 4353 JMS OUTDG /YES-REM(ONES PLACE)IS IN AC-PRINTIT 807 006066 1055 DONEF, TAD SWIT2 /SHOULD WE PRINT CR/LF? 808 006067 7650 SNA CLA 809 006070 5742 JMP I FLING /NO 810 006071 4344 JMS OUT 811 006072 0215 215 812 006073 4344 JMS OUT 813 006074 0212 212 814 006075 5742 JMP I FLING 815 / 816 /OUTPUT DIGITS OF FAC BY MULTIPLYING BY TEN 817 /THE HIGH ORDER OVERFLOW IS THE DIGIT 818 006076 0000 DGTYP, 0 819 006077 7041 CMA IAC 820 006100 3362 DCA SEP /STORE COUNT PASSED 821 006101 1045 DT1, TAD ACH /GET FAC AND STORE FOR LATER 822 006102 3050 DCA OPH 823 006103 1046 TAD ACLO 824 006104 3051 DCA OPL 825 006105 4740 JMS I AL1PP /SHIFT FAC LEFT 1 = FAC*2 826 006106 7004 RAL /OVERFLOW TO TM3 827 006107 3360 DCA TM3 828 006110 4740 JMS I AL1PP /SHIFT LEFT AGAIN = FAC*4 829 006111 1360 TAD TM3 /SHIFT OUT OVERFLOW 830 006112 7004 RAL 831 006113 3360 DCA TM3 832 006114 3042 DCA AC2 /MUST BE 0 FOR OADD 833 006115 4741 JMS I OADDP /ADD ORIG FAC = FAC*5 834 006116 7004 RAL /ADD OVERFLOW TO TM3 835 006117 1360 TAD TM3 836 006120 3360 DCA TM3 837 006121 4740 JMS I AL1PP /SHIFT FAC 1 LEFT = FAC*10!! 838 006122 1360 TAD TM3 /OVERFLOW IN TM3 IS FIRST DIGIT 839 006123 7004 RAL 840 006124 2337 ISZ DCNT /DONE ALL SIGNIF. DIGS.? 841 006125 5330 JMP .+3 /NO-GO ON 842 006126 7240 CLA CMA /YES-PRINT ZEROS 843 006127 3337 DCA DCNT /FROM NOW ON 844 006130 4353 JMS OUTDG /PRINT DIGIT (HI ORD. OVRFLOW) 845 006131 2362 ISZ SEP /DONE REQUIRED? 846 006132 5301 JMP DT1 /NOPE 847 006133 5676 JMP I DGTYP /YUP 848 006134 7634 KM144, -144 849 006135 7766 KM12, -12 850 006136 6745 DV24PT, DV24 851 006137 0000 DCNT, 0 /COUNT OF SIGNF. DIGITS 852 006140 7057 AL1PP, AL1 853 006141 7157 OADDP, OADD 854 006142 5723 FLING, FLINK 855 006143 5776 PRDCPP, PRDCP 856 /NEEDED FOR OS/8 BASIC 857 *FLPT-1234 858 / 859 /OUTPUT ROUTINE 860 / 861 006144 0000 OUT, 0 862 006145 1744 TAD I OUT /GET THE CHAR. 863 006146 6041 TSF 864 006147 5346 JMP .-1 865 006150 6046 TLS 866 006151 7300 CLA CLL /USE AN 'AND..' INSTEAD??? 867 006152 5744 JMP I OUT 868 869 / 870 /OUTPUT DIGIT 871 / 872 006153 0000 OUTDG, 0 873 006154 4344 JMS OUT 874 006155 0260 260 875 006156 5753 JMP I OUTDG /RETN 876 877 006157 5741 KNTP, KNT 878 006160 0000 TM3, 0 879 006161 0000 0 880 006162 0000 SEP, 0 881 006163 7200 PRNTX, CLA 882 006164 1057 TAD FLDW /GET FIELD WIDTH 883 006165 7040 CMA /MUST BE NEGATIVE 884 006166 3362 DCA SEP /USE AS COUNTER 885 006167 2362 PRNTX1, ISZ SEP /DONE ALL? 886 006170 7410 SKP /NO-GO ON 887 006171 5266 JMP DONEF /YES-RETN. 888 006172 4344 JMS OUT /PRINT ASTERISK 889 006173 0252 252 /ASTERISK 890 006174 5367 JMP PRNTX1 891 / 892 /PRINT A LEADING ZERO 893 / 894 006175 7200 PRZRO, CLA 895 006176 4353 JMS OUTDG 896 006177 5743 JMP I PRDCPP 897 898 / 899 /FLOATING POINT INPUT ROUTINE 900 / 901 *FLPT-1200 902 006200 0000 FFIN, 0 903 006201 7240 CLA CMA 904 006202 3707 DCA I FDVPT /INITIALIZE PERIOD SWITCH TO -1 905 006203 7040 CMA /SET SIGN SWITCH TO -1 906 006204 3276 DCA SIGNF 907 006205 4710 JMS I CDFCRA /CHANGE TO DF OF PACKAGE 908 006206 3052 DCA DSWIT /ZERO CONVERSION SWITCH 909 006207 3044 DECONV, DCA ACX /ZERO OUT THE FAC! 910 006210 3046 DCA ACLO 911 006211 0200 P200, 200 912 006212 3045 DCA ACH 913 006213 3303 DECNV, DCA DNUMBR /ZERO # OF DIGITS SINCE DEC. PT. 914 006214 4320 DECON, JMS GCHR /GET A CHAR.FROM TTY. 915 006215 5230 JMP FFIN1 /TERMINATOR- 916 006216 2052 ISZ DSWIT /DIGIT-BUMP CONVERSION SWITCH 917 006217 2303 ISZ DNUMBR /BUMP # OF DIGITS-# IS STORED IN 918 006220 4407 JMS I FPP /FORM EASILY FLOATIBLE-ENTER INTERP. 919 006221 3315 FMPY TEN /MULTIPLY # BY TEN 920 006222 6702 FPUT I TM3PT /STORE IT AWAY 921 006223 5312 FGET TP /GET NEW DIGIT 922 006224 7000 FNOR /FLOAT IT 923 006225 1702 FADD I TM3PT /ADD IT TO ACCUMULATED # 924 006226 0000 FEXT /DONE 925 006227 5214 JMP DECON /GO ON 926 006230 2707 FFIN1, ISZ I FDVPT /HAVE WE HAD A PERIOD YET? 927 006231 5237 JMP FIGO2 /YES-GO ON 928 006232 2313 ISZ TP1 /NO-IS THIS A PERIOD? 929 006233 2313 ISZ TP1 930 006234 7610 SKP CLA 931 006235 5213 JMP DECNV /YES-ZERO DIG. COUNT AFTER DEC. PT. 932 /AND GO CONVERT REST 933 006236 3303 DCA DNUMBR /NO-TERMINATOR-ZERO COUNT OF 934 /DIGITS AFTER DECIMAL POINT. 935 006237 2276 FIGO2, ISZ SIGNF /IS # NEGATIVE?(DID WE GET - SIGN?) 936 006240 4701 JMS I FFNEGP /YES-NEGATE IT 937 006241 7240 CLA CMA /RESET SIGN SWITCH FOR EXP. 938 006242 3276 DCA SIGNF 939 006243 1053 TAD CHAR /NO-WAS THE TERMINATOR AN 'E'? 940 006244 1304 TAD KME 941 006245 7650 SNA CLA 942 006246 4320 GETE, JMS GCHR /YES-GET A CHAR. OF EXPONENT 943 006247 5256 JMP EDON /END OF EXPONENT 944 006250 1043 TAD TM /GOT DIG. OF EXP-STORED IN TP1 945 006251 7106 CLL RTL /MULT. ACCUMULATED EXP BY 10 946 006252 1043 TAD TM 947 006253 7104 CLL RAL 948 006254 1313 TAD TP1 /ADD DIGIT 949 006255 5246 JMP GETE /CONTINUE 950 006256 1043 EDON, TAD TM /GET EXPONENT 951 006257 2276 ISZ SIGNF /WAS EXPONENT NEGATIVE? 952 006260 7041 CMA IAC /YES-NEGATE IT 953 006261 7041 CMA IAC /AND CALC. DNUMBR - EXPON. 954 006262 1303 TAD DNUMBR /GET # TIMES TO DIV MANTISSA BY TEN 955 006263 7141 CLL CMA IAC 956 006264 7510 SPA /RESULT POSITIVE? 957 006265 7161 CLL CMA CML IAC /NO-MAKE POS. AND SET LINK 958 006266 7040 CMA /NEGATE FOR COUNTER 959 006267 3303 DCA DNUMBR /AND STORE 960 006270 7004 RAL /LINK=1-DIV;=0-MUL. # BY TEN 961 006271 1305 TAD MDV /FORM CORRECT INSTRUCTION 962 006272 3276 DCA SIGNF /AND STORE FOR EXECUTION 963 006273 2303 FCNT, ISZ DNUMBR /DONE ALL OPERATIONS? 964 006274 5276 JMP SIGNF /NO 965 006275 5600 JMP I FFIN /YES-RETURN 966 006276 0000 SIGNF, 0 /NO- MUL OR DIV. MANTISSA 967 006277 6315 TEN /BY TEN 968 006300 5273 JMP FCNT /GO ON 969 006301 7135 FFNEGP, FFNEG 970 006302 6160 TM3PT, TM3 971 006303 0000 DNUMBR, 0 972 006304 7473 KME, -305 973 006305 4706 MDV, JMS I .+1 /THESE 3 WDS. MUST BE IN THIS ORDER 974 006306 6600 FFMPY 975 006307 6722 FDVPT, FFDIV /!!!!!!!!!!!!!!!!! 976 977 006310 7356 CDFCRA, CDFCUR 978 006311 0012 KK12, 12 979 006312 0013 TP, 13 980 006313 0000 TP1, 0 981 006314 0000 0 982 006315 0004 TEN, 4 983 006316 2400 2400 984 006317 0000 0 985 /ROUTINE TO GET A CHAR FROM THE TTY AND SEE IF IT IS DIGIT 986 /OR A TERMINATOR. 987 /RETURN TO CALL + 1 IF TERMINATOR, TO CALL + 2 IF DIGIT 988 /THIS ROUTINE MUST NOT MODIFY THE MQ!! 989 006320 0000 GCHR, 0 990 006321 3043 DCA TM /STORE ACCUMULATED EXPONENT (MAYBE) 991 006322 4345 JMS INPUT /GET A CHAR FROM TTY. 992 006323 1053 TAD CHAR /PICK IT UP 993 006324 1376 TAD PLUS /WAS IT PLUS SIGN? 994 006325 7450 SNA 995 006326 5333 JMP DECON1 /YES-GET ANOTHER CHAR. 996 006327 1377 TAD MINUS /NO WAS IT MINUS SIGN? 997 006330 7640 SZA CLA 998 006331 5334 JMP .+3 999 006332 3276 DCA SIGNF /YES-FLIP SWITCH 1000 006333 4345 DECON1, JMS INPUT /GET A CHAR. 1001 006334 1053 TAD CHAR 1002 006335 1344 TAD K7506 /SEE IF ITS A DIGIT 1003 006336 7100 CLL 1004 006337 1311 TAD KK12 1005 006340 3313 DCA TP1 /STORE FOR LATER 1006 006341 7430 SZL /DIGIT? 1007 006342 2320 ISZ GCHR /YES-RETN. TO CALL+2 1008 006343 5720 JMP I GCHR /NO-RETN. TO CALL+1 1009 006344 7506 K7506, 7506 1010 / 1011 /INPUT ROUTINE-CHECKS FOR RUBOUT AND CARRIAGE RETURN 1012 / 1013 006345 0000 INPUT, 0 1014 006346 6031 KSF 1015 006347 5346 JMP .-1 1016 006350 6032 KCC 1017 006351 1211 TAD P200 /FORCE CHANNEL 8 1018 006352 6034 KRS /READ CHAR. 1019 006353 3053 DCA CHAR /STORE CHAR. 1020 006354 1053 LP, TAD CHAR 1021 006355 3357 DCA TMIN /STORE IT AGAIN 1022 006356 4773 JMS I OUTPP /PRINT IT 1023 006357 0000 TMIN, 0 1024 006360 1053 TAD CHAR 1025 006361 1375 TAD MRUBOT /IS IT RUBOUT? 1026 006362 7450 SNA 1027 006363 5201 JMP FFIN+1 /YES-RESTART INPUT 1028 006364 1374 TAD MCR /NO-IS IT CARRIAGE RETN.? 1029 006365 7650 SNA CLA 1030 006366 1054 TAD SWIT1 /YES-SHOULD WE ECHO LINE FEED? 1031 006367 7640 SZA CLA 1032 006370 4773 JMS I OUTPP /YES-DO IT 1033 006371 0212 212 /LINE FEED 1034 006372 5745 JMP I INPUT /RETURN 1035 006373 6144 OUTPP, OUT 1036 006374 0162 MCR, 377-215 1037 006375 7401 MRUBOT, -377 1038 006376 7525 PLUS, -253 1039 006377 7776 MINUS, 253-255 1040 1041 *FLPT-1000 1042 / 1043 /INVERSE FLOATING SUBTRACT-USES FLOATING ADD 1044 /!!FSW1!!-THIS IS OP-FAC 1045 / 1046 006400 0000 FFSUB1, 0 1047 006401 7450 SNA /WHICH MODE? 1048 006402 1600 TAD I FFSUB1 /CALLED BY USER-GET ADDR. OF OP. 1049 006403 4644 JMS I ARGETL /GO PICK UP OPERAND 1050 006404 4607 JMS I FFNEGA /NEGATE FAC 1051 006405 1200 TAD FFSUB1 /AND GO ADD 1052 006406 5610 JMP I SUB0P 1053 006407 7135 FFNEGA, FFNEG 1054 006410 7125 SUB0P, SUB0 1055 006411 7752 KM22, -26 1056 / 1057 /INVERSE FLOATING DIVIDE 1058 /FSWITCH=1 1059 /THIS IS OP/FAC 1060 / 1061 006412 0000 FFDIV1, 0 1062 006413 7450 SNA /WHICH MODE OF CALL? 1063 006414 1612 TAD I FFDIV1 /CALLED BY USER-GET ADDR. 1064 006415 4644 JMS I ARGETL /PICK UP OPERAND 1065 006416 1046 TAD ACLO /SWAP THE FAC AND OPERAND 1066 006417 3051 DCA OPL /THERE IS A POINTER TO OPL 1067 006420 1442 TAD I AC2 /IN AC2 LEFT FROM ARGET SUBR. 1068 006421 3046 DCA ACLO 1069 006422 1044 TAD ACX /MIGHT AS WELL SUBTRACT THE 1070 006423 7141 CLL CMA IAC /EXPONENTS HERE (SAVES A WORD) 1071 006424 1047 TAD OPX /THEN ZERO OPX SO WILL NOT 1072 006425 3044 DCA ACX /MESS UP WHEN ITS DONE AGAIN 1073 006426 3047 DCA OPX /LATER (SEE DIV. ROUTINE) 1074 006427 1045 TAD ACH 1075 006430 3042 DCA AC2 /NOW SWAP HIGH ORDER MANTISSAS 1076 006431 1050 TAD OPH 1077 006432 3045 DCA ACH 1078 006433 1042 TAD AC2 1079 006434 3050 DCA OPH 1080 006435 4645 JMS I CDFCRL /CHANGE DF TO CURRENT 1081 006436 1212 TAD FFDIV1 /NOW KLUDGE UP SUBROUTINE LINKAGE 1082 006437 3647 DCA I FFDP 1083 006440 1250 TAD KFD1 1084 006441 3646 DCA I MDSETP 1085 006442 5643 JMP I MD1P /GO SET UP AND DIVIDE 1086 1087 006443 4702 MD1P, MD1 1088 006444 7251 ARGETL, ARGET 1089 006445 7356 CDFCRL, CDFCUR 1090 006446 4700 MDSETP, MDSET 1091 006447 6722 FFDP, FFDIV 1092 006450 6726 KFD1, FFD1 1093 AN1=FFSUB1 1094 AN2=FFDIV1 1095 /FLOATING SQUARE ROOT 1096 /USES A HARDWARE TYPE ALGORITHM FOR BINARY SQUARE ROOTS 1097 /REF: THE LOGIC OF COMPUTER ARITHMETIC-IVAN FLORES-P 409 1098 / 1099 006451 0000 FROOT, 0 1100 006452 7332 CLA CLL CML RTR /SET RESULT TO 2000;0000 1101 006453 3200 DCA AN1 1102 006454 3212 DCA AN2 1103 006455 4645 JMS I CDFCRL /CHANGE TO DATA FIELD OF PACKAGE 1104 006456 1211 TAD KM22 /SET COUNTER FOR DEVELOPING 22 BITS OF ERESULT 1105 006457 3042 DCA AC2 /ALREADY HAVE 1 1106 006460 1045 TAD ACH 1107 006461 7450 SNA 1108 006462 5651 JMP I FROOT /ZERO FAC-NORMALIZED!-RETN. SAME 1109 006463 7710 SPA CLA 1110 006464 4607 JMS I FFNEGA /TAKE ROOT OF ABSOL VALUE 1111 006465 1044 TAD ACX /GET EXPONENT OF FAC 1112 006466 7510 SPA /IF NEGATIVE-MUST PROPAGATE SIGN 1113 006467 7020 CML 1114 006470 7010 RAR /DIVIDE EXP. BY 2 1115 006471 3044 DCA ACX /STORE IT BACK 1116 006472 7430 SZL /INCREMENT EXP. IF ORIGINAL EXP 1117 006473 2044 ISZ ACX /WAS ODD 1118 006474 7000 NOP 1119 006475 7420 SNL /DO A PRE-SHIFT FOR EVEN EXPONENTS 1120 006476 4777 JMS I AL1K /SO FIRST BIT PAIR IS 10 NOT 01 1121 006477 7344 CLA CLL CMA RAL /SET COUNTER FOR DETECTING A 1122 006500 3376 DCA ZCNT /ZERO REMAINDER 1123 006501 7332 CLA CLL CML RTR /SET UP POSITION OF TRIAL BIT 1124 006502 7012 RTR /FOR FIRST PASS THRU LOOP 1125 006503 3050 DCA OPH 1126 006504 3051 DCA OPL 1127 006505 1375 TAD K6000 /GET A FAST FIRST BIT-WE KNOW 1128 006506 1045 TAD ACH /THIS WILL WORK SINCE # IS NORMALIZED 1129 006507 3045 DCA ACH /IF # IS A POWER OF TWO, AND A PERFECT 1130 006510 1045 TAD ACH /SQUARE-WE ARE DONE HERE! 1131 006511 7450 SNA /WELL IS IT? 1132 006512 1046 TAD ACLO /COULD BE-CHECK LOW ORDER 1133 006513 7650 SNA CLA 1134 006514 5370 JMP DONE /WHOOPPEE-WE WIN BIG. 1135 006515 5325 JMP LOP01 /NOPE-LOOP DON'T SHIFT FIRST TIME 1136 006516 1050 SLOOP, TAD OPH /SHIFT TRIAL BIT 1 PLACE 1137 006517 7110 CLL RAR /TO THE RIGHT 1138 006520 3050 DCA OPH /AND STORE BACK 1139 006521 1051 TAD OPL 1140 006522 7010 RAR 1141 006523 3051 DCA OPL 1142 006524 4777 JMS I AL1K /SHIFT FAC LEFT 1 PLACE 1143 006525 1051 LOP01, TAD OPL /ADD TRIAL BIT TO`ANSWER 1144 006526 1212 TAD AN2 /SO FAR 1145 006527 7141 CLL CMA IAC /NEGATE IT 1146 006530 1046 TAD ACLO /AND ADD TO FAC (REMAINDER SO FAR) 1147 006531 7450 SNA /IS RESULT ZERO? 1148 006532 2376 ISZ ZCNT /YES-INCREMENT COUNTER 1149 006533 3043 DCA TM /STORE RESULT IN TEMPORARY 1150 1151 006534 7024 CML RAL /ADD CARRY TO HIGH ORDER FOR SUBTRACT 1152 006535 1050 TAD OPH /ADD TRIAL BIT 1153 006536 1200 TAD AN1 /ADD RESULT SO FAR (HI ORDER) 1154 006537 7141 CLL CMA IAC /AND SUBTRACT FROM HI ORDER FAC 1155 006540 1045 TAD ACH 1156 006541 7420 SNL /RESULT NEGATIVE? 1157 006542 5364 JMP GON /YES-NEXT RESULT BIT IS 0 1158 006543 7440 SZA /NO-IS HI ORDER RESULT=0? 1159 006544 5351 JMP LOP02 /NO-GO ON 1160 006545 2376 ISZ ZCNT /YES-WAS LOW ORDER =0? 1161 006546 5351 JMP .+3 /NO-GO ON 1162 006547 7040 CMA /YES-REM.=0-SET COUNTER SO 1163 006550 3042 DCA AC2 /LOOKS LIKE WE'RE DONE 1164 006551 3045 LOP02, DCA ACH /STORE HIGH ORDER REM. IN FAC 1165 006552 1043 TAD TM /STORE LO ORDER REM. IN FAC 1166 006553 3046 DCA ACLO 1167 006554 1051 TAD OPL /TRIAL BIT SHIFTED LEFT 1 IS 1168 006555 7104 CLL RAL /RESULT BIT-ADD IT TO ROOT DEVELOPED 1169 006556 1212 TAD AN2 /SO FAR 1170 006557 3212 DCA AN2 1171 006560 1050 TAD OPH 1172 006561 7004 RAL 1173 006562 1200 TAD AN1 1174 006563 3200 DCA AN1 1175 006564 7344 GON, CLA CLL CMA RAL /RESET COUNTER FOR ZERO REM. 1176 006565 3376 DCA ZCNT 1177 006566 2042 ISZ AC2 /DONE ALL 23 RESULT BITS? 1178 006567 5316 JMP SLOOP /NO-GO ON 1179 006570 1200 DONE, TAD AN1 /YES-STORE ANSWER IN FAC 1180 006571 3045 DCA ACH /ITS NORMALIZED ALREADY 1181 006572 1212 TAD AN2 1182 006573 3046 DCA ACLO 1183 006574 5651 JMP I FROOT /AND RETURN 1184 1185 006575 6000 K6000, 6000 1186 006576 0000 ZCNT, 0 1187 006577 7057 AL1K, AL1 1188 PAUSE 1189 /23-BIT FLOATING PT INTERPRETER 1190 *FLPT-600 1191 /FLOATING MULTIPLY-DOES 2 24X12 BIT MULTIPLIES 1192 006600 0000 FFMPY, 0 1193 006601 7450 SNA /WHICH MODE OF CALL? 1194 006602 1600 TAD I FFMPY /CALLED BY USER-GET OPERAND ADDR. 1195 006603 4774 JMS I MDSETK /SET UP FOR MPY-OPX IN AC ON RETN. 1196 006604 1044 TAD ACX /DO EXPONENT ADDITION 1197 006605 3044 DCA ACX /STORE FINAL EXPONENT 1198 006606 3345 DCA DV24 /ZERO TEM STORAGE FOR MPY ROUTINE 1199 006607 3042 DCA AC2 1200 006610 1045 TAD ACH /IS FAC=0? 1201 006611 7650 SNA CLA 1202 006612 3044 DCA ACX /YES-ZERO EXPONENT 1203 006613 4243 JMS MP24 /NO-MULTIPLY FAC BY LOW ORDER OPR. 1204 006614 1050 TAD OPH /NOW MULTIPLY FAC BY HI ORDER MULTIPLIER 1205 006615 3051 DCA OPL 1206 006616 4243 JMS MP24 1207 006617 1042 TAD AC2 /STORE RESULT BACK IN FAC 1208 006620 3046 RTZRO, DCA ACLO /LOW ORDER 1209 006621 1345 TAD DV24 /HIGH ORDER 1210 006622 3045 DCA ACH 1211 006623 1045 TAD ACH /DO WE NEED TO NORMALIZE? 1212 006624 7004 RAL 1213 006625 7700 SMA CLA 1214 006626 5235 JMP SHLFT /YES-DO IT FAST 1215 006627 3041 MDONE, DCA AC1 /NO-ZERO OVERFLOW WD(DO I NEED THIS???) 1216 006630 2200 ISZ FFMPY /BUMP RETURN POINTER 1217 006631 2043 ISZ TM /SHOULD RESULT BE NEGATIVE? 1218 006632 5600 JMP I FFMPY /NOPE-RETN. 1219 006633 4773 JMS I FFNEGR /YES-NEGATE IT 1220 006634 5600 JMP I FFMPY /RETURN 1221 006635 7040 SHLFT, CMA /SUBTRACT 1 FROM EXP. 1222 006636 1044 TAD ACX 1223 006637 3044 DCA ACX 1224 006640 4642 JMS I AL1PTR /SHIFT FAC LEFT 1 BIT 1225 006641 5230 JMP MDONE+1 /DONE. 1226 006642 7057 AL1PTR, AL1 1227 / 1228 /24 BIT BY 12 BIT MULTIPLY. MULTIPLIER IS IN OPL 1229 /MULTIPLICAND IS IN ACH AND ACLO 1230 /RESULT LEFT IN DV24,AC2, AND AC1 1231 006643 0000 MP24, 0 1232 006644 1375 TAD KKM12 /SET UP 12 BIT COUNTER 1233 006645 3047 DCA OPX 1234 006646 1051 TAD OPL /IS MULTIPLIER=0? 1235 006647 7440 SZA 1236 006650 5254 JMP MPLP1 /NO-GO ON 1237 006651 3041 DCA AC1 /YES-INSURE RESULT=0 1238 006652 5643 JMP I MP24 /RETURN 1239 006653 1051 MPLP, TAD OPL /SHIFT A BIT OUT OF LOW ORDER 1240 006654 7010 MPLP1, RAR /OF MULTIPLIER AND INTO LINK 1241 006655 3051 DCA OPL 1242 006656 7420 SNL /WAS IT A 1? 1243 006657 5266 JMP MPLP2 /NO-0-JUST SHIFT PARTIAL PRODUCT 1244 006660 7100 CLL /YES-ADD MULTIPLICAND TO PARTIAL PRODUCT 1245 006661 1042 TAD AC2 1246 006662 1046 TAD ACLO /LOW ORDER 1247 006663 3042 DCA AC2 1248 006664 7004 RAL /PROPAGATE CARRY 1249 006665 1045 TAD ACH /HI ORDER 1250 006666 1345 MPLP2, TAD DV24 1251 006667 7010 RAR /NOW SHIFT PARTIAL PROD. RIGHT 1 BIT 1252 006670 3345 DCA DV24 1253 006671 1042 TAD AC2 1254 006672 7010 RAR 1255 006673 3042 DCA AC2 1256 006674 7010 RAR /1 BIT OF OVERFLOW TO AC1 1257 006675 3041 DCA AC1 1258 006676 2047 ISZ OPX /DONE ALL 12 MULTIPLIER BITS? 1259 006677 5253 JMP MPLP /NO-GO ON 1260 006700 5643 JMP I MP24 /YES-RETURN 1261 / 1262 /PART OF DIVIDE ROUTINE-FFDIV MUST BE AT LOC. 6722 1263 006701 3051 MP12L, DCA OPL /STORE BACK MULTIPLIET 1264 006702 1042 TAD AC2 /GET PRODUCT SO FAR 1265 006703 7420 SNL /WAS MULTIPLIER BIT A 1? 1266 006704 5307 JMP .+3 /NO-JUST SHIFT THE PARTIAL PRODUCT 1267 006705 7100 CLL /YES-CLEAR LINK AND ADD MULTIPLICAND 1268 006706 1046 TAD ACLO /TO PARTIAL PRODUCT 1269 006707 7010 RAR /SHIFT PARTIAL PRODUCT-THIS IS HI ORDER 1270 006710 3042 DCA AC2 /RESULT-STORE BACK 1271 006711 1051 DVLP1, TAD OPL /SHIFT A BIT OUT OF MULTIPLIER 1272 006712 7010 RAR /AND A BIT OR RESLT. INTO IT (LO ORD. PROD.) 1273 006713 2200 ISZ FFMPY /DONE ALL BITS? 1274 006714 5301 JMP MP12L /NO-LOOP BACK 1275 006715 7141 CLL CMA IAC /YES-LOW ORDER PROD. OF QUOT. X OPL IN AC 1276 006716 3046 DCA ACLO /NEGATE AND STORE 1277 006717 7024 CML RAL /PROPAGATE CARRY 1278 006720 5721 JMP I FD1P /GO ON 1279 006721 4735 FD1P, FD1 /POINTER TO REST OF DIVIDE ROUTINE 1280 / 1281 /FLOATING DIVIDE ROUTINE 1282 /USES THE METHOD OF TRIAL DIVISION BY HI ORDER 1283 006722 0000 FFDIV, 0 /(USED AS A TEM. BY I/O ROUTINES) 1284 006723 7450 SNA /WHICH MODE OF CALL? 1285 006724 1722 TAD I FFDIV /CALLED BY USER-GET ARG. ADDR. 1286 006725 4774 JMS I MDSETK /GO SET UP FOR DIVIDE-OPX IN AC ON RETN. 1287 006726 7041 FFD1, CMA IAC /NEGATE EXP. OF OPERAND 1288 006727 1044 TAD ACX /ADD EXP OF FAC 1289 006730 3044 DCA ACX /STORE AS FINAL EXPONENT 1290 006731 1050 TAD OPH /NEGATE HI ORDER OP. FOR USE 1291 006732 7141 CLL CMA IAC /AS DIVISOR 1292 006733 3050 DCA OPH 1293 006734 4345 JMS DV24 /CALL DIV.--(ACH+ACLO)/OPH 1294 006735 1046 TAD ACLO /SAVE QUOT. FOR LATER 1295 006736 3041 DCA AC1 1296 006737 1376 TAD KM13 /SET COUNTER FOR 12 BIT MULTIPLY 1297 006740 3200 DCA FFMPY /TO MULTIPLY QUOT. OF DIV. BY 1298 006741 5311 JMP DVLP1 /LOW ORDER OF OPERAND (OPL) 1299 / 1300 /END OF FLOATING DIVIDE-FUDGE SOME 1301 /STUFF THEN JUMP INTO MULTIPLY 1302 / 1303 006742 1322 FDDON, TAD FFDIV /STORE RETN. ADDR. IN MULT ROUTINE 1304 006743 3200 DCA FFMPY 1305 006744 5227 JMP MDONE /GO CLEAN UP 1306 / 1307 /DIVIDE ROUTINE--24 BITS IN ACH,ACLO ARE DIVIDED BY 12 BITS 1308 /IN OPH. OPH IS ASSUMEN NEGATIVE AND .GT. ACH IN ABSOLUTE VALUE 1309 /ELSE-DIVIDE OVERFLOW--WE RETURN NORMALLY WITH QUOTIENT 1310 /IN ACLO AND REM. IN ACH. (AC2=0 ON RETN.) 1311 / 1312 006745 0000 DV24, 0 1313 006746 1045 TAD ACH /CHECK THAT DIVISOR IS .GT. DIVIDEND 1314 006747 1050 TAD OPH /DIVISOR IN OPH (NEGATIVE) 1315 006750 7630 SZL CLA /IS IT? 1316 006751 5777 JMP I DVOVR /NO-DIVIDE OVERFLOW 1317 006752 1376 TAD KM13 /YES-SET UP 12 BIT LOOP 1318 006753 3042 DCA AC2 1319 006754 5365 JMP DV1 /GO BEGIN DIVIDE 1320 006755 1045 DV2, TAD ACH /CONTINUE SHIFT OF FAC LEFT 1321 006756 7004 RAL 1322 006757 3045 DCA ACH /RESTORE HI ORDER 1323 006760 1045 TAD ACH /NOW SUBTRACT DIVISOR FROM HI ORDER 1324 006761 1050 TAD OPH /DIVIDEND 1325 006762 7430 SZL /GOOD SUBTRACT? 1326 006763 3045 DCA ACH /YES-RESTORE HI DIVIDEND 1327 006764 7200 CLA /NO-DON'T RESTORE--OPH.GT.ACH 1328 006765 1046 DV1, TAD ACLO /SHIFT FAC LEFT 1 BIT-ALSO SHIFT 1329 006766 7004 RAL /1 BIT OF QUOT. INTO LOW ORD OF ACLO 1330 006767 3046 DCA ACLO 1331 006770 2042 ISZ AC2 /DONE 12 BITS OF QUOT? 1332 006771 5355 JMP DV2 /NO-GO ON 1333 006772 5745 JMP I DV24 /YES-RETN W/AC2=0 1334 006773 7135 FFNEGR, FFNEG 1335 006774 4700 MDSETK, MDSET 1336 006775 7764 KKM12, -14 1337 006776 7763 KM13, -15 1338 006777 7571 DVOVR, FTRP2 1339 1340 *FLPT-400 1341 / 1342 /FLOATING ADD 1343 / 1344 007000 0000 FFADD, 0 1345 007001 7450 SNA /WHICH MODE FO CALL? 1346 007002 1600 TAD I FFADD /CALLED BY USER-GET ADDR. OF OPR. 1347 007003 4727 JMS I ARGETP /PICK UP OPERAND 1348 007004 4776 FAD1, JMS I CDFCRP /CHANGE TO FIELD OF PACKAGE 1349 007005 1050 TAD OPH /IS OPERAND = 0 1350 007006 7650 SNA CLA 1351 007007 5227 JMP DONA /YES-DONE 1352 007010 1045 TAD ACH /NO-IS FAC=0? 1353 007011 7650 SNA CLA 1354 007012 5223 JMP DOADD /YES-DO ADD 1355 007013 1044 TAD ACX /NO-DO EXPONENT CALCULATION 1356 007014 7141 CLL CMA IAC 1357 007015 1047 TAD OPX 1358 007016 7540 SMA SZA /WHICH EXP. GREATER? 1359 007017 5231 JMP FACR /OPERANDS-SHIFT FAC 1360 007020 7041 CMA IAC /FAC'S-SHIFT OPERAND=DIFFRNCE+1 1361 007021 4234 JMS OPSR 1362 007022 4272 JMS ACSR /SHIFT FAC ONE PLACE RIGHT 1363 007023 1047 DOADD, TAD OPX /SET EXPONENT OF RESULT 1364 007024 3044 DCA ACX 1365 007025 4357 JMS OADD /DO THE ADDITION 1366 007026 4777 JMS I FNORP /NORMALIZE RESULT 1367 007027 2200 DONA, ISZ FFADD /BUMP RETURN 1368 007030 5600 JMP I FFADD /RETURN 1369 007031 4272 FACR, JMS ACSR /SHIFT FAC = DIFF.+1 1370 007032 4234 JMS OPSR /SHIFT OPR. 1 PLACE 1371 007033 5223 JMP DOADD /DO ADDITION 1372 / 1373 /OPERAND SHIFT RIGHT-ENTER WITH POSITIVE COUNT-1 1374 /IN AC 1375 007034 0000 OPSR, 0 1376 007035 7040 CMA /- (COUNT+1) TO SHIFT COUNTER 1377 007036 3040 DCA AC0 1378 007037 1050 LOP2, TAD OPH /GET SIGN BIT 1379 007040 7004 RAL /TO LINK 1380 007041 7200 CLA 1381 007042 1050 TAD OPH /GET HI MANTISSA 1382 007043 7010 RAR /SHIFT IT RIGHT, PROPAGATING SIGN 1383 007044 3050 DCA OPH /STORE BACK 1384 007045 1051 TAD OPL 1385 007046 7010 RAR 1386 007047 3051 DCA OPL /STORE LO ORDER BACK 1387 007050 7010 RAR /SAVE 1 BIT OF OVERFLOW 1388 007051 3042 DCA AC2 /IN AC2 1389 007052 2047 ISZ OPX /INCREMENT EXPONENT 1390 007053 7000 NOP2, NOP 1391 007054 2040 ISZ AC0 /DONE ALL SHIFTS? 1392 007055 5237 JMP LOP2 /NO-LOOP 1393 007056 5634 JMP I OPSR /YES-RETN. 1394 / 1395 /SHIFT FAC LEFT 1 BIT 1396 / 1397 007057 0000 AL1, 0 1398 007060 1041 TAD AC1 /GET OVERFLOW BIT 1399 007061 7104 CLL RAL /SHIFT LEFT 1400 007062 3041 DCA AC1 /STORE BACK 1401 007063 1046 TAD ACLO /GET LOW ORDER MANTISSA 1402 007064 7004 RAL /SHIFT LEFT 1403 007065 3046 DCA ACLO /STORE BACK 1404 007066 1045 TAD ACH /GET HI ORDER 1405 007067 7004 RAL 1406 007070 3045 DCA ACH /STORE BACK 1407 007071 5657 JMP I AL1 /RETN. 1408 / 1409 /SHIFT FAC RIGHT-ENTER WITH COUNT-1 IN AC (POSITIVE) 1410 / 1411 007072 0000 ACSR, 0 1412 007073 7040 CMA /AC CONTAINS COUNT-1 1413 007074 3040 DCA AC0 /STORE COUNT 1414 007075 1045 LOP1, TAD ACH /GET SIGN BIT OF MANTISSA 1415 007076 7004 RAL /SET UP SIGN PROPAGATION 1416 007077 7200 CLA 1417 007100 1045 TAD ACH /GET HIGH ORDER MANTISSA 1418 007101 7010 RAR /SHIFT RIGHT`1, PROPAGATING SIGN 1419 007102 3045 DCA ACH /STORE BACK 1420 007103 1046 TAD ACLO /GET LOW ORDER 1421 007104 7010 RAR /SHIFT IT 1422 007105 3046 DCA ACLO /STORE BACK 1423 007106 7010 RAR 1424 007107 3041 DCA AC1 /SAVE 1 BIT OF OVERFLOW 1425 007110 2044 ISZ ACX /INCREMENT EXPONENT 1426 007111 7000 NOP1, NOP 1427 007112 2040 ISZ AC0 /DONE? 1428 007113 5275 JMP LOP1 /NO-LOOP 1429 007114 5672 JMP I ACSR /YES-RETN-AC=L=0 1430 / 1431 /DIVIDE OVERFLOW-ZERO ACX,ACH,ACLO 1432 / 1433 007115 7300 DBAD, CLA CLL /NECESSARY SO WE DON'T GET OVRFLO AGAIN 1434 007116 5775 JMP I DBAD1P /GO ZERO ALL 1435 / 1436 /FLOATING SUBTRACT 1437 / 1438 007117 0000 FFSUB, 0 1439 007120 7450 SNA /WHICH MODE OF CALL? 1440 007121 1717 TAD I FFSUB /CALLED BY USER-GET ADDR. OF OP 1441 007122 4727 JMS I ARGETP /PICK UO THE OP. 1442 007123 4346 JMS OPNEG /NEGATE OPERAND 1443 007124 1317 TAD FFSUB /JMP INTO FLTG. ADD 1444 007125 3200 SUB0, DCA FFADD /AFTER SETTING UP RETURN 1445 007126 5204 JMP FAD1 1446 007127 7251 ARGETP, ARGET 1447 1448 / 1449 /FLOATING HALT-DISPLAY FLOATING P.C. 1450 / 1451 007130 4776 FFHLT, JMS I CDFCRP /MUST BE DATA FIELD OF PACKAGE 1452 007131 1407 TAD I FPP /GET THE P.C. 1453 007132 7402 HLT 1454 007133 7200 CLA /CLR IT OUT 1455 007134 5461 JMP I FPNXT /DONE-GET NEXT INSTR. 1456 / 1457 /FLOATING NEGATE 1458 / 1459 007135 0000 FFNEG, 0 /(USED AS A TEM. BY OUTPUT ROUTINE) 1460 007136 1046 TAD ACLO /GET LOW ORDER FAC 1461 007137 7141 CLL CMA IAC /NEGATE IT 1462 007140 3046 DCA ACLO /STORE BACK 1463 007141 7024 CML RAL /ADJUST OVERFLOW BIT AND 1464 007142 1045 TAD ACH /PROPAGATE CARRY-GET HI ORD 1465 007143 7141 CLL CMA IAC /NEGATE IT 1466 007144 3045 DCA ACH /STORE BACK 1467 007145 5735 JMP I FFNEG 1468 / 1469 /NEGATE OPERAND 1470 / 1471 007146 0000 OPNEG, 0 1472 007147 1051 TAD OPL /GET LOW ORDER 1473 007150 7141 CLL CMA IAC /NEGATE AND STORE BACK 1474 007151 3051 DCA OPL 1475 007152 7024 CML RAL /PROPAGATE CARRY 1476 007153 1050 TAD OPH /GET HI ORDER 1477 007154 7141 CLL CMA IAC /NEGATE AND STORE BACK 1478 007155 3050 DCA OPH 1479 007156 5746 JMP I OPNEG 1480 / 1481 /ADD OPERAND TO FAC 1482 / 1483 007157 0000 OADD, 0 1484 007160 7100 CLL 1485 007161 1042 TAD AC2 /ADD OVERFLOW WORDS 1486 007162 1041 TAD AC1 1487 007163 3041 DCA AC1 1488 007164 7004 RAL /ROTATE CARRY 1489 007165 1051 TAD OPL /ADD LOW ORDER MANTISSAS 1490 007166 1046 TAD ACLO 1491 007167 3046 DCA ACLO 1492 007170 7004 RAL 1493 007171 1050 TAD OPH /ADD HI ORDER MANTISSAS 1494 007172 1045 TAD ACH 1495 007173 3045 DCA ACH 1496 007174 5757 JMP I OADD /RETN. 1497 007175 4765 DBAD1P, DBAD1 1498 007176 7356 CDFCRP, CDFCUR 1499 007177 7265 FNORP, FFNOR 1500 *FLPT-200 1501 / 1502 /ROUTINE TO CALL EXTENDED FUNCTIONS 1503 /THIS IS AN EXTENSION OF OP CODE 0 1504 / 1505 007200 1050 FCALL, TAD OPH /FCALL-GET FUNCTION # (=ADDR SINCE 1506 007201 1231 TAD JMSI2 /PAGE ZERO)-MAKE A JMS THRU TABLE 1507 007202 3212 DCA DCOD1 /STORE IT 1508 007203 4356 JMS CDFCUR /D.F. MUST BE FIELD OF PACKAGE 1509 007204 1407 TAD I FPP /GET AND SAVE FLTG. P.C. 1510 007205 3367 DCA FT1 1511 007206 1630 TAD I DFCDFP /GET AND SAVE FLTG. D.F. AND I.F. 1512 007207 3365 DCA FT2 1513 007210 1461 TAD I FPNXT 1514 007211 3366 DCA FT3 1515 007212 0000 DCOD1, 0 /CALL THE SUBROUTINE 1516 007213 7200 CLA 1517 007214 4356 JMS CDFCUR /CHANGE TO D.F. OF PACKAGE 1518 007215 1366 TAD FT3 /RESTORE FLTG. PC,IF,DF 1519 007216 3461 DCA I FPNXT 1520 007217 1365 TAD FT2 1521 007220 3630 DCA I DFCDFP 1522 007221 1367 TAD FT1 1523 007222 3407 FJUMP1, DCA I FPP 1524 007223 5461 JMP I FPNXT /GET NEXT INSTR. 1525 / 1526 /CONTINUATION OF NORMALIZE ROUTINE 1527 / 1528 007224 3041 FFNORR, DCA AC1 /DONE W/NORMALIZE-CLEAR AC1 1529 007225 5665 JMP I FFNOR /RETURN 1530 007226 7057 AL1P, AL1 1531 007227 5756 JMPIC, JMP I CDFCUR 1532 007230 7450 DFCDFP, DFCDF 1533 007231 4631 JMSI2, JMS I TABLE2-1 1534 007232 7564 TABLE2, FFSQ /SQUARE=1 1535 007233 6451 FROOT /SQUARE ROOT=2 1536 007234 5000 FFSIN /SIN=3 1537 007235 5053 FFCOS /COS=4 1538 007236 5200 FFATN /ARCTANGENT=5 1539 007237 5135 FFEXP /EXPONENTIAL=6 1540 007240 5263 FFLOG /LOGARITHM=7 1541 007241 7135 FFNEG /NEGATE=10 1542 007242 6200 FFIN /INPUT=11 1543 007243 5600 FFOUT /OUTPUT=12 1544 007244 5500 FFIX /FIX=13 1545 007245 5533 FFLOAT /FLOAT=14 1546 007246 7212 DCOD1 /NOP=15 1547 007247 7212 DCOD1 /NOP=16 1548 007250 7212 DCOD1 /NOP=17 1549 1550 / 1551 /ARGUMENT PICK UP ROUTINE-ENTER WITH DATA FIELD SET TO EITHER 1552 /FLTG. DATA FIELD OR FLTG. INSTR. FIELD. 1553 /ADDRESS OF OPERAND IS IN THE AC ON ENTRY. 1554 /ON RETURN, THE`AC IS CLEAR 1555 / 1556 007251 0000 ARGET, 0 1557 007252 3042 DCA AC2 /STORE ADDRESS OF OPERAND 1558 007253 1442 TAD I AC2 /PICK UP EXPONENT 1559 007254 3047 DCA OPX 1560 007255 2042 ISZ AC2 /MOVE POINTER TO HI MANTISSA WD 1561 007256 1442 TAD I AC2 /PICK IT UP 1562 007257 3050 DCA OPH /STORE 1563 007260 2042 ISZ AC2 /MOVE PTR. TO LO MANTISSA WD. 1564 007261 1442 TAD I AC2 /PICK IT UP 1565 007262 3051 DCA OPL /STORE IT 1566 007263 5651 JMP I ARGET /RETURN 1567 007264 4766 DVOP2P, DVOP2 1568 / 1569 /ROUTINE TO NORMALIZE THE FAC 1570 / 1571 007265 0000 FFNOR, 0 1572 007266 1045 TAD ACH /GET THE HI ORDER MANTISSA 1573 007267 7450 SNA /ZERO? 1574 007270 1046 TAD ACLO /YES-HOW ABOUT LOW? 1575 007271 7450 SNA 1576 007272 1041 TAD AC1 /LOW=0, IS OVRFLO BIT ON? 1577 007273 7650 SNA CLA 1578 007274 5376 JMP ZEXP /#=0-ZERO EXPONENT 1579 007275 7332 NORMLP, CLA CLL CML RTR /NOT 0-MAKE A 2000 IN AC 1580 007276 1045 TAD ACH /ADD HI ORDER MANTISSA 1581 007277 7440 SZA /HI ORDER = 6000 1582 007300 5303 JMP .+3 /NO-CHECK LEFT MOST DIGIT 1583 007301 1046 TAD ACLO /YES-6000 OK IF LOW=0 1584 007302 7640 SZA CLA 1585 007303 7710 SPA CLA /2,3,4,5,ARE LEGAL LEFT MOST DIGS. 1586 007304 5224 JMP FFNORR /FOR NORMALIZED #-(+2000=4,5,6,7) 1587 007305 5371 JMP FNLP /JUMP SO FFGET AND PUT ARE ORGED RIGHT 1588 / 1589 /FLOATING GET 1590 / 1591 007306 0000 FFGET, 0 1592 007307 7450 SNA /WHICH MODE OF CALL 1593 007310 1706 TAD I FFGET /CALLED BY USER-GET ADDR. OF OP 1594 007311 4251 JMS ARGET /PICK UP OPERAND 1595 007312 1047 TAD OPX 1596 007313 3044 DCA ACX /LOAD THE OPERAND INTO FAC 1597 007314 1051 TAD OPL 1598 007315 3046 DCA ACLO 1599 007316 1050 TAD OPH 1600 007317 3045 DCA ACH 1601 007320 2306 ISZ FFGET 1602 007321 5706 JMP I FFGET /RETN. TO CALL +2 1603 / 1604 /FLOATING PUT 1605 / 1606 007322 0000 FFPUT, 0 1607 007323 7450 SNA /WHICH MODE OF CALL? 1608 007324 1722 TAD I FFPUT /CALLED BY USER-GET OPR. ADDR 1609 007325 3306 DCA FFGET /STORE IN A TEMP 1610 007326 1044 TAD ACX /GET FAC AND STORE IT 1611 007327 3706 DCA I FFGET /AT SPECIFIED ADDRESS 1612 007330 2306 ISZ FFGET 1613 007331 1045 TAD ACH 1614 007332 3706 DCA I FFGET 1615 007333 2306 ISZ FFGET 1616 007334 1046 TAD ACLO 1617 007335 3706 DCA I FFGET 1618 007336 2322 ISZ FFPUT /BUMP RETN. 1619 007337 5722 JMP I FFPUT /RETN. TO CALL+2 1620 / 1621 /ROUTINE TO ADJUST QUOTINET OF FIRST DIVIDE (MAYBE) WHEN THE 1622 /REMAINDER OF THE FIRST`DIVIDE IS LESS THAN QUOT*OPL 1623 /USED BY FLTG. DIVIDE ROUTINE 1624 / 1625 007340 7041 DVOPS, CMA IAC /NEGATE AND STORE REVISED REMAINDER 1626 007341 3045 DCA ACH 1627 007342 7100 CLL 1628 007343 1050 TAD OPH 1629 007344 1045 TAD ACH /WATCH FOR OVERFLOW 1630 007345 7420 SNL 1631 007346 5353 JMP DVOP1 /OVERFLOW-DON'T ADJUST QUOT. OF 1ST DIV. 1632 007347 3045 DCA ACH /NO OVERFLOW-STORE NEW REM. 1633 007350 7040 CMA /SUBTRACT 1 FROM QUOT OF 1634 007351 1041 TAD AC1 /FIRST DIVIDE 1635 007352 3041 DCA AC1 1636 007353 7300 DVOP1, CLA CLL 1637 007354 1045 TAD ACH /GET HI ORD OF REMAINDER 1638 007355 5664 JMP I DVOP2P /GO ON 1639 1640 / 1641 /CHANGE TO DATA FIELD OF FLTG. PT. PKG. 1642 /AFTER FIRST TIME THRU, ROUTINE LOOKS LIKE 1643 / 1644 / CDFCUR, 0 1645 / CDF N /N IS FLD OF PKG. 1646 / JMP I CDFCUR 1647 / (NEXT 8 LOCS. FREE FOR TEMPS) 1648 / 1649 007356 0000 CDFCUR, 0 1650 007357 6224 CCUR1, RIF /READ INST. FIELD 1651 007360 1043 CCUR2, TAD TM /ADD A CDF 0 INST 1652 007361 3357 DCA CCUR1 /STORE IT, MODIFYING SUBR. 1653 007362 1227 TAD JMPIC /STORE A SUBR. RETN 1654 007363 3360 DCA CCUR2 /ALL DONE 1655 / 1656 /NECESSARY CONSTANTS 1657 / 1658 007364 7100 7100 1659 007365 7076 FT2, 7076 1660 007366 7650 FT3, 7650 1661 007367 2262 FT1, 2262 1662 007370 5357 5357 1663 1664 007371 7160 FNLP, CLL CML CMA /-1 1665 007372 1044 TAD ACX /SUBTR. 1 FROM EXPONENT 1666 007373 3044 DCA ACX 1667 007374 4626 JMS I AL1P /SHIFT FAC LEFT 1 1668 007375 5275 JMP NORMLP /GO BACK AND SEE IF NORMALIZED 1669 007376 3044 ZEXP, DCA ACX 1670 007377 5224 JMP FFNORR 1671 / 1672 /BEGINNING OF INTERPRETER 1673 / 1674 *FLPT 1675 007400 0000 FPT, 0 1676 007401 7600 L7600, 7600 /CLA 1677 007402 6214 RDF /READ DATA FIELD-THIS WILL BE 1678 007403 1267 TAD KCDF0 /INITIAL FLTG. DATA AND INSTR. FLD 1679 007404 3213 DCA FPNEXT /STORE CDF TO FLTG. INST. FLD 1680 007405 1342 FFSW0, TAD FFSB0 /INLINE IN INTERPRETER--SET FLOATING SWITCH 1681 007406 3257 DCA TSUB /TO 0 1682 007407 1341 TAD FFDV0 1683 007410 3261 DCA TDIV 1684 007411 1213 TAD FPNEXT 1685 007412 3250 SFDF, DCA DFCDF 1686 007413 0000 FPNEXT, 0 /BECOMES CDF TO FLTG. INST FLD. 1687 007414 1600 TAD I FPT /GET NEXT FLTG. PT. INSTR. 1688 007415 3047 DCA OPX /STORE IN A TEMPORARY 1689 007416 1047 TAD OPX /GET IT BACK AND PICK OFF 1690 007417 0265 AND K177 /THE ADDRESS 1691 007420 3050 DCA OPH /STORE THAT AWAY 1692 007421 1047 TAD OPX /PICK OFF THE PAGE BIT 1693 007422 0224 AND K200 /AND MAKE A 7600 IF CURRENT PAGE 1694 007423 7041 CMA IAC /OR 0 IF PAGE ZERO 1695 007424 0200 K200, AND FPT /THIS SETS UP HI ORDER 5 BITS OF ADDR. 1696 007425 2200 ISZ FPT /INCREMENT FLTG. P.C. 1697 007426 1050 TAD OPH /ADD IN LOW ORDER 7 BITS OF ADDR 1698 007427 3050 DCA OPH /THIS IS FINAL ADDR UNLESS INDIRECT. 1699 007430 1047 TAD OPX /NOW DECODE THE OP CODE 1700 007431 7106 CLL RTL 1701 007432 7006 RTL 1702 007433 0344 AND K7 /PICK OFF OP CODE BITS 1703 007434 1254 TAD JMSI /AND MAKE A JMS THRU TABLE 1704 007435 3251 DCA DCOD /STORE IT FOR LATET 1705 007436 1050 TAD OPH /GET ADDRESS INTO AC 1706 007437 7420 SNL /INDIRECT BIT IN LINK-IS IT ON? 1707 007440 5251 JMP DCOD /NO-CALL THE PROPER ROUTINE 1708 007441 0270 AND K7770 /YES-IS ADDR AN AUTO INDEX REG.? 1709 007442 1270 TAD K7770 1710 007443 7650 SNA CLA 1711 007444 1343 TAD K3 /YES-ADD 3 TO XREG. BEFORE USING 1712 007445 1450 TAD I OPH /THE ADDR. 1713 007446 3450 DCA I OPH 1714 007447 1450 TAD I OPH /GET EFF. ADDR.INTO AC FOR CALL 1715 007450 0000 DFCDF, 0 /CHANGE TO FLTG. D.F.-INDIREDT ADDRESSING 1716 007451 0000 DCOD, 0 /CALL SUBRS. WITH ADDR IN AC-D.F.IS 1717 /SET TO FLTG. D.F. OR I.F.-RETN. IS 1718 /TO CALL+2 1719 007452 4671 FNRM, JMS I FFNORP /NORMALIZE ROUTINE-CALL NORM SUBR. 1720 007453 5213 JMP FPNEXT /GO GET NEXT INSTR. 1721 / 1722 /TABLE FOR JUMPS 1723 / 1724 007454 4655 JMSI, JMS I TABLE 1725 007455 7472 TABLE, FFJMP /FLOATING JMP OP CODE 0 1726 007456 7000 FFADD / " ADD " 1 1727 007457 7117 TSUB, FFSUB / " SUBTRACT 2 1728 007460 6600 TMPY, FFMPY / " MULTIPLY 3 1729 007461 6722 TDIV, FFDIV / " DIVIDE 4 1730 007462 7306 FFGET / " GET " 5 1731 007463 7322 FFPUT / " PUT " 6 1732 007464 7520 FFJMS / " JMS " 7 1733 / 1734 /CONSTANTS AND POINTERS 1735 / 1736 007465 0177 K177, 177 1737 007466 7200 FCALLP, FCALL 1738 007467 6201 KCDF0, CDF 0 1739 007470 7770 K7770, 7770 1740 007471 7265 FFNORP, FFNOR 1741 / 1742 /FLOATING JUMP-CHECK FOR FCALL OR FISZ 1743 / 1744 007472 0000 FFJMP, 0 1745 007473 7450 SNA /IS IT FEXT? 1746 007474 5313 JMP EXIT /YES-LEAVE INTERPRETER 1747 007475 3050 DCA OPH /NO-STORE ADDR. 1748 007476 1047 TAD OPX /ARE INDIRECT AND PAGE BITS=0 1749 007477 0201 AND L7600 /(WORKS SINCE OP`CODE=0) 1750 007500 7640 SZA CLA 1751 007501 5355 JMP FJUMP /NO-IT IS FJUMP-EFF. ADR. IN OPH 1752 007502 1047 TAD OPX /YES-ARE BITS 5-7=0? 1753 007503 0312 AND K160 /(ANY ON=FISZ) 1754 007504 7650 SNA CLA 1755 007505 5666 JMP I FCALLP /FLOATING CALL-DO IT 1756 007506 2447 FFISZ, ISZ I OPX /FISZ-ISZ THAT ADDR (DF=FLTG. IF) 1757 007507 5213 JMP FPNEXT /NO-SKIP-GO GET NEXT INST. 1758 007510 2200 FISZ1, ISZ FPT /SKIP-INCREMENT FLTG. P.C. 1759 007511 5213 JMP FPNEXT /GO ON 1760 007512 0160 K160, 160 1761 / 1762 /FEXT-LEAVE INTERPRETER 1763 / 1764 007513 7326 EXIT, CLA CLL CML RTL /MAKE A CDF CIF TO FLTG. INST FLD. 1765 007514 1213 TAD FPNEXT 1766 007515 3316 DCA .+1 /STORE IT 1767 007516 0000 0 1768 007517 5600 JMP I FPT /GO BACK TO USER,AC=L=0 1769 / 1770 /FLOATING JMS-IF BITS 3-11=0 = NORMALIZE FAC (FNOR) 1771 / " 3-4 =0 = DECODE FURTHER BY BITS 9-11 1772 / " 9-11=0 = SKIP ON CONDITION OF FAC 1773 / " =1 = FCDF (BITS 6-8=NEW FLTG. D.F.) 1774 / " =2 = FSW0 1775 / " =3 = FSW1 1776 / " =4 = FHLT-DISPLAY FLTG. PC 1777 / " =5-7 NOP 1778 / 1779 007520 0000 FFJMS, 0 1780 007521 7450 SNA /IS IT NORMALIZE? 1781 007522 5252 JMP FNRM /YEAH-DO IT 1782 007523 3050 DCA OPH /NO-STORE EFF ADDR. 1783 007524 1047 TAD OPX /GET THE INSTR. 1784 007525 0345 AND K600 /INDIRECT AND PAGE BITS=0? 1785 007526 7650 SNA CLA 1786 007527 5740 JMP I JSKPP /YES-GO DECODE FURTHER 1787 007530 1213 TAD FPNEXT /NO-ITS JMS-GET CDF TO FLTG. I.F. 1788 007531 3332 DCA .+1 /STORE IT 1789 007532 0000 IFCDF, 0 /EXECUTE IT 1790 007533 1200 TAD FPT /GET THE FLTG. P.C. 1791 007534 3450 DCA I OPH /STORE IT AT THE EFF.ADDR. 1792 007535 1050 TAD OPH /GET THE EFF. ADDR. 1793 007536 3200 DCA FPT /STORE IN`FLTG. PC. 1794 007537 5310 JMP FISZ1 /GO INCREMENT FLTG. PC 1795 007540 4611 JSKPP, JSKP 1796 007541 6722 FFDV0, FFDIV 1797 007542 7117 FFSB0, FFSUB 1798 007543 0003 K3, 3 1799 007544 0007 K7, 7 1800 007545 0600 K600, 600 1801 / 1802 /FLOATING SKIP-ADD 600 TO THE INSTRUCTION TO MAKE IT 1803 /A SKIP WITH CLA--THE SKIP PRODUCED IS THE REVERSE OF 1804 /WHAT IS EXPECTED (SNA NOT SZA) TO FACILITATE THE 1805 /DECODING 1806 / 1807 007546 1345 FFSKP, TAD K600 /ADD 600 TO MAKE A SKP WITH CLA 1808 007547 1047 TAD OPX /ADD IN ORIG INSTR 1809 007550 3352 DCA .+2 1810 007551 1045 TAD ACH /GET HI ORDER MANTISSA IN FAC FOR SENSING 1811 007552 0000 0 /EXECUTE THE SKIP WE MADE 1812 007553 2200 ISZ FPT /NO SKIP=SKIP-BUMP FLTG.PC 1813 007554 5213 JMP FPNEXT /SKIP=NO SKIP-LEAVE PC ALONE-GO ON 1814 1815 / 1816 /FLOATING JUMP-STORE EFF. ADDR IN FLTG.PC 1817 / 1818 007555 1050 FJUMP, TAD OPH /GET EFF ADDR OF JUMP 1819 007556 3200 DCA FPT /STORE IN FLTG. PC 1820 007557 5213 JMP FPNEXT /GO ON 1821 / 1822 /FCDF-BITS 6-8 ARE NEW FLTG. DATA FIELD 1823 / 1824 007560 7240 FFCDF, CLA CMA /SUBTRACT 1 FROM EFF. ADDR. 1825 007561 1050 TAD OPH /ADD IN FIELD BITS 1826 007562 1267 TAD KCDF0 /ADD IN CDF INSTR. 1827 007563 5212 JMP SFDF /GO SOTER CDF TO FLTG DF. 1828 1829 *FPT+164 1830 / 1831 /FSQUARE-SQUARE FAC-CALLS MULTIPLY TO MUL. FAC BY ITSELF 1832 / 1833 007564 0000 FFSQ, 0 1834 007565 4660 JMS I TMPY /CALL MULTIPLY TO MULTIPLY 1835 007566 0044 ACX /FAC BY ITSELF 1836 007567 5764 JMP I FFSQ /DONE 1837 / 1838 /FLOATING TRAPS TO USER-INITIALLY SET TO NOPS 1839 / 1840 007570 5774 FTRP1, JMP I FTRAP1 /OVERFLOW 1841 007571 5775 FTRP2, JMP I FTRAP2 /DIV. ERR. 1842 007572 5776 FTRP3, JMP I FTRAP3 /ILL. FUNCT. ARG. 1843 007573 5777 FTRP4, JMP I FTRAP4 /UNDERFLOW 1844 007574 5505 FTRAP1, FTRPRT 1845 007575 7115 FTRAP2, DBAD 1846 007576 5302 FTRAP3, LTRPRT 1847 007577 7213 FTRAP4, DCOD1+1 1848 $ AC0 0040 AC1 0041 AC2 0042 ACH 0045 ACLO 0046 ACSR 7072 ACSRPT 5704 ACX 0044 ADFW 5747 AL1 7057 AL1K 6577 AL1P 7226 AL1PP 6140 AL1PT 5705 AL1PTR 6642 AN1 6400 AN2 6412 ARGET 7251 ARGETK 4734 ARGETL 6444 ARGETP 7127 ARGPOL 5220 ARTRAP 5370 ATAN 5200 ATANA1 5432 ATANA2 5440 ATANA3 5446 ATANB0 5427 ATANB1 5435 ATANB2 5443 ATANB3 5451 C13 5531 C3 5074 CCUR1 7357 CCUR2 7360 CDFCRA 6310 CDFCRB 5722 CDFCRK 4733 CDFCRL 6445 CDFCRP 7176 CDFCUR 7356 CHAR 0053 COS 5053 DADP 0060 DBAD 7115 DBAD1 4765 DBAD1P 7175 DCNT 6137 DCNTP 5727 DCOD 7451 DCOD1 7212 DECNV 6213 DECON 6214 DECON1 6333 DECONV 6207 unreferenced DFCDF 7450 DFCDFP 7230 DGTYP 6076 DGTYPP 5726 DNUMBR 6303 DOADD 7023 DONA 7027 DONE 6570 DONEF 6066 DSWIT 0052 DT1 6101 DV1 6765 DV2 6755 DV24 6745 DV24P 4763 DV24PT 6136 DVL1 4745 DVLP1 6711 DVOP1 7353 DVOP2 4766 DVOP2P 7264 DVOPS 7340 DVOPSP 4764 DVOVR 6777 EDON 6256 EFLG 0056 EXIT 7513 EXP 0044 EXPA0 5424 EXPA1 5421 EXPB1 5416 EXPON 5135 FACR 7031 FAD1 7004 FADD 1000 FADDL 5061 FADDM 5360 FCALL 7200 FCALLP 7466 FCNT 6273 FD 4760 FD1 4735 FD1P 6721 FDDON 6742 FDDONP 4762 FDIV 4000 unreferenced FDIV1L 5073 FDIV1M 5362 FDIVL 5064 FDIVM 5361 FDVPT 6307 FEXT 0000 FFADD 7000 FFADP 5734 FFATN 5200 FFCDF 7560 FFCOS 5053 FFD1 6726 FFDIV 6722 FFDIV1 6412 FFDP 6447 FFDV0 7541 FFDV1 4626 FFDVP 5735 FFEXP 5135 FFGET 7306 FFHLT 7130 FFIN 6200 FFIN1 6230 FFISZ 7506 unreferenced FFIX 5500 FFJMP 7472 FFJMS 7520 FFLOAT 5533 FFLOG 5263 FFMPP 5737 FFMPY 6600 FFMT 5613 FFNEG 7135 FFNEGA 6407 FFNEGK 4731 FFNEGP 6301 FFNEGR 6773 FFNGP 5740 FFNOR 7265 FFNORP 7471 FFNORR 7224 FFOUT 5600 FFPUT 7322 FFPUTP 5736 FFSB0 7542 FFSB1 4625 FFSIN 5000 FFSKP 7546 FFSQ 7564 FFSUB 7117 FFSUB1 6400 FFSW0 7405 FFSW1 4617 FGET 5000 FGETL 5060 FGETM 5367 FIGO2 6237 FISZ1 7510 FIXDNE 5525 FIXFLT 5500 FIXL 5071 FIXLP 5515 FJUMP 7555 FJUMP1 7222 unreferenced FLDW 0057 FLING 6142 FLINK 5723 FLOATL 5072 FLOATM 5366 FLPT 7400 FMPY 3000 FMPYL 5062 FMPYM 5357 FNEGL 5066 FNLP 7371 FNOR 7000 FNORL 5543 FNORP 7177 FNRM 7452 FOUT1 5625 FOUT2 5634 FOUT3 5674 FOUT4 5667 unreferenced FPNEXT 7413 FPNXT 0061 FPP 0007 FPT 7400 FPUT 6000 FPUTL 5063 FPUTM 5356 FRACT 5106 FROOT 6451 FSQRL 5070 FSQRM 5365 FSUB 2000 unreferenced FSUB1L 5065 FSUB1M 5364 FSUBL 5067 FSUBM 5363 FT1 7367 FT2 7365 FT3 7366 FTRAP1 7574 FTRAP2 7575 FTRAP3 7576 FTRAP4 7577 FTRP1 7570 FTRP2 7571 FTRP3 7572 FTRP4 7573 unreferenced FTRPRT 5505 GCHR 6320 GD 6025 GETE 6246 GKNT 6003 GON 6564 GT1FLG 5263 GTFLG 5200 HORD 0045 IFCDF 7532 unreferenced INPUT 6345 JMPI 5012 JMPI3 4600 JMPIC 7227 JMSI 7454 JMSI2 7231 JSKP 4611 JSKPP 7540 K16 5721 K160 7512 K177 7465 K200 7424 K3 7543 K6 5742 K600 7545 K6000 6575 K7 7544 K7506 6344 K7770 7470 KCDF0 7467 KFD1 6450 KK12 6311 KK7 5731 KKM12 6775 KM12 6135 KM13 6776 KM144 6134 KM20 5732 KM22 6411 KM7 5733 KME 6304 KNT 5741 KNTP 6157 L7600 7401 LEV 4727 LN2 5473 LN2OV2 5413 LOG 5263 LOG2E 5410 LOGC1 5457 LOGC3 5462 LOGC5 5465 LOOP 6052 LOP01 6525 LOP02 6551 LOP1 7075 LOP2 7037 LORD 0046 LP 6354 unreferenced LTRPRT 5302 M1 5730 M13 5530 MCR 6374 MD1 4702 MD1P 6443 MDONE 6627 MDSET 4700 MDSETK 6774 MDSETP 6446 MDV 6305 MINUS 6377 MP12L 6701 MP24 6643 MPLP 6653 MPLP1 6654 MPLP2 6666 MRUBOT 6375 NCHK 5130 NCHKL 5262 NFLAG 5135 NFLGST 5126 NGT 5257 NHNDLE 5120 NHNDLL 5261 NOP1 7111 unreferenced NOP2 7053 unreferenced NORMLP 7275 NOTE 5743 NUM 5130 OADD 7157 OADDP 6141 ONE 5103 ONEHAF 5470 OPH 0050 OPL 0051 OPNEG 7146 OPNEGP 4732 OPSR 7034 OPX 0047 OTRAPA 5532 OUT 6144 OUTDG 6153 OUTDGP 5720 OUTPP 6373 P200 6211 P7 4616 PDP 6001 unreferenced PIOV2 5405 PLUS 6376 POLYNL 5304 POLYSN 5026 PR 6016 PRDCP 5776 PRDCPP 6143 PRNTX 6163 PRNTX1 6167 PRNTXP 5724 PRZRO 6175 PRZROP 5725 PS 6023 PZR 6015 QUAD2 5017 QUAD3 5022 QUAD4 5024 RTZRO 6620 unreferenced SE 5706 SE1 5707 SEP 6162 SFDF 7412 SHLFT 6635 SIGNF 6276 SIN 5000 SINA1 5371 SINA3 5374 SINA5 5377 SINA7 5402 SLOOP 6516 SQRP5 5454 SUB0 7125 SUB0P 6410 SWIT1 0054 SWIT2 0055 TABLE 7455 TABLE2 7232 TABLE3 4601 TDIV 7461 TDIVP 4630 TEMP1 5075 TEMP2 5100 TEN 6315 TM 0043 TM3 6160 TM3PT 6302 TMIN 6357 TMPY 7460 TOVPI 5175 TP 6312 TP1 6313 TSUB 7457 TSUBP 4627 ZCNT 6576 ZEXP 7376