*20 /// FLOAT-S /SOFTWARE FLOATING POINT INTERPRETER /FOR THE PDP-12, SIGSYS-12 SYSTEM. / / / / / /-------------------- / /FLOATIN POINT INTERPRETER / /COPYRIGHT 1969 /AGRIPPA-ORD CORP. / /-------------------- / / / /USED IN NON FFP SIGSYS /STORED AT BLOCKS 4-7 /RUNS IN BANK 1 /UNDER EXEC CONTROL / / / / EJECT / / /AC=USER PC /USRMB AND USDMB PRESET / / / SEGMNT 1 / / *20 / / USRMB=JMP . / LDF JMP 0 / USDMB=JMP . / LDF JMP 0 / / *24 NOP INTERP, STC 6 ADD 0 STC GO+4 SKP / NXT, XSK I 6 NOP USRMB LDA 6 SCR I 5 SAE I 17 JMP GO QAC SCR 6 ADA I OPRTAB STA 2 ADA I -OPRTAB-25 APO I JMP RRET LDA 2 STC GETARG+2 / /TEST FOR FAC TSTIND, STC INCR LDA I 6 AZE JMP .+3 ADD FACP JMP SETARG / /TEST FOR INDIRECT ROL I 1 SCR 5 APO JMP NOINDR AZE JMP NOINDR GETREG LZE I JMP .+3 STA I INCR, 0 SKP / NOINDR, LDA 6 ROL I 2 LZE USDMB ROR I 2 STA I H, 0 BSE I C2000, 2000 SETARG, STC GETARG+1 CLR / GETARG, JMP ARGET TEMSIN, 0 0 JMP RET33 / GO, CLR ADD 6 USDMB LIF 0 JMP . EJECT RET33, ADD ONE RET22, ADD ONE RET11, ADD ONE RET, STC TEM ADD INCR AZE I JMP NXT USRMB GETREG ADD TEM STA 3 JMP NXT / GETREG=JMP . / LDA 6 BCL I 7760 ADD C2000 STC 3 LDA 3 JMP 0 EJECT OPRTAB, JMP RRET JMP FSUB JMP FMUL JMP FDIV JMP FLOAD JMP FSTORE JMP SETWRD JMP INPUT JMP OUTPUT JMP ISTOR1 JMP SQRT JMP DFLOAT JMP SFLOAT JMP DFIX JMP FADD JMP ISTOR2 JMP RRET JMP FCOMP JMP ZERF JMP FAPO JMP FAZE JMP RECIP FLAG, 0 EJECT ARGET, SET 17 0 JMP PSET SET 15 16 LDA 15 STC ARG LDA I 15 STC ARG+1 LDA I 15 STC ARG+2 XSK I 17 JMP 17 / RECIP, JMP LOAD FLTONE JMP FDIV JMP RET33 / / / / / COMP, CLR ADD FAC+1 COM STC FAC+1 ADD FAC+2 COM STC FAC+2 JMP 0 / / ARGFAC, CLR ADD ARG STC FAC ADD ARG+1 STC FAC+1 ADD ARG+2 STC FAC+2 JMP 0 / / FACARG, CLR ADD FAC STC ARG ADD FAC+1 STC ARG+1 ADD FAC+2 STC ARG+2 JMP 0 / / / / DFIX, JMP ARGFAC JMP FIX CLR JMP RET33 / FIX, SET 17 0 JMP SETFAC LDA I M27, -27 ADD FAC JMP F7M+2 ADD FAC+2 JMP 17 / / SFLOAT, ADD ARG SCR 14 STC FAC+1 ADD ARG STC FAC+2 JMP FLOAT JMP RET11 / DFLOAT, ADD ARG+1 STC FAC+1 ADD ARG STC FAC+2 JMP FLOAT JMP RET22 / FLOAT, SET 17 0 LDA I P27, 27 STC FAC JMP F6C+5 JMP SETFAC JMP F6G ADD FAC+1 APO JMP .+3 JMP NORMRO JMP 17 JMP COMP JMP NORMRO JMP COMP JMP 17 / / / / / FLOAD, JMP ARGFAC JMP RET33 / LOAD, SET 17 0 JMP PSET LDA 16 STC FAC LDA I 16 STC FAC+1 LDA I 16 STC FAC+2 DX, XSK I 17 JMP 17 / / / STORE, SET 17 0 JMP PSET JMP FSTORE JMP DX / FSTORE, ADD FAC STA 16 LDA FAC+1 STA I 16 LDA FAC+2 STA I 16 CX, CLR JMP 0 / ISTOR1, ADD FAC+2 STA 16 CLR JMP RET11 / ISTOR2, ADD FAC+2 STA 16 LDA FAC+1 STA I 16 CLR JMP RET22 / / PSET, LDA 17 BCL I 6000 STC 16 LDA 16 STC 16 JMP 0 / / SETWRD, ADD H STC ARG2 JMP NXT / / / / SQRT, ADD ARG STA NUMBER SCR 1 STC ARG ADD ARG+1 AZE I JMP RET33 APO JMP RET33 STC NUMBER+1 ADD ARG+2 STC NUMBER+2 JMP ARGFAC SET I 11 -20 SQRT2, JMP FACARG JMP LOAD NUMBER JMP FDIV JMP FADD ADD MONE ADM FACP, FAC XSK I 11 JMP SQRT2 CLR JMP RET33 / FCOMP, JMP COMP RRET, CLR JMP NXT+1 / ZERF, JMP FZER JMP RRET / FAPO, ADD FAC+1 APO I XSK I 6 JMP RRET / FAZE, ADD FAC+1 AZE I XSK I 6 JMP RRET /FINI INTERPRETER EJECT / /INOUT /INPUT OUTPUT /ARG1 CONTAINS POINTER /TO INPUT BUFFER / INPUT, ADD H ADD M4000 BSE I 2000 STC 7 STC MFLAG STC NFLAG STC PFLAG STC FRCNT JMP FZER LOOP1, JMP STORE NUMBER JMP ARGET TEN LDH I 7 SHD I 4500 /CR JMP ENDSCN SHD I 5500 /- JMP MINUS SHD I 5600 /. JMP PERIOD ADA I -57 APO JMP CHKFLG ADA I -12 APO I JMP CHKFLG GOTONE, ADD CX AZE I COM STC TEMSIN JMP FMUL JMP STORE NUMBER ADD TEMSIN STC FAC+2 STC FAC+1 JMP FLOAT JMP ARGET NUMBER JMP FADD ADD ONE STC NFLAG ADD PFLAG AZE I JMP LOOP1 ADM FRCNT JMP LOOP1 MINUS, LDA NFLAG AZE JMP ENDSCN ADD ONE STC MFLAG JMP LOOP1 CHKFLG, LDA I NFLAG, 0 AZE JMP ENDSCN JMP LOOP1 PERIOD, LDA I PFLAG, 0 AZE JMP ENDSCN ADD MONE STC PFLAG JMP LOOP1 / ENDSCN, LDA I FRCNT, 0 AZE I JMP .+5 STC 10 JMP FDIV XSK I 10 JMP .-2 LDA I MFLAG, 0 AZE JMP COMP JMP NXT / /FINI INPUT EJECT / /OUTPUT /ARG1 CONTAINS POINTER /TO BUFFER /ARG2 CONTAINS CONTROL WORD /NUMBER IS IN FAC / /SAVE NUMBER OUTPUT, ADD H BSE I 2000 STC 11 STC TEMSIN ADD FAC+1 APO JMP COMPLI O1, JMP STORE NUMBER /INITIALIZE OUTPUT BUFFER /WITH BLANKS / ADD ARG2 ROL 6 BCL I SPCC, 7740 AZE I JMP RET COM STA I LNG, 0 STC 10 / /BLANK FILL / ADD SPCC SKP STH I 11 STH 11 XSK I 10 JMP .-3 / /SET BUFFER POINTER SET I 10 4\BUFFER-1 /ROUNDOFF ROUND, LDA I ARG2, 0 /SETWRD VALUE BCL I 7770 C17, COM STA FLNGTH MUL I 3 ADA I FLTONE STC GETNUM+1 ADD ARG2 ROL 6 APO I JMP SEPNUM JMP LOAD ONEHAF GETNUM, JMP ARGET 0 JMP FDIV JMP ARGET NUMBER JMP FADD /SEPARATE NUMBER /INTO INTEGER AND FRACTION SEPNUM, SET I 12 -2 JMP INTGIZ SET I 7 ILNGTH, -7 LDA I TABLE STC SUBN / LOOP6, SET I 13 M17, -17 JMP ARGET SUBN, TABLE JMP FSUB ADD FAC+1 APO JMP .+3 XSK I 13 JMP .-7 JMP FSUB ADD 13 ADD C17 ADD SIXTY STH I 10 LDA I 3 ADM SUBN XSK I 7 JMP LOOP6 LDA FLNGTH AZE I JMP EBT LDH I 10 /SPIN PAST 56 JMP LOAD FRAC SET I 7 FLNGTH, 0 JMP LOOP4+2 LOOP4, JMP LOAD FRAC JMP ARGET TEN JMP FMUL JMP INTGIZ FIXADR, JMP FIX ADD SIXTY STH I 10 XSK I 7 JMP LOOP4 /INTERNAL BUFFER /TO EXTERNAL BUFFER /TRANSFER EBT, SET 16 LNG SET I 12 4\BUFFER-1 LOOP7, LDH I 12 SHD I 6000 JMP FILSEV SHD I 5600 SKP JMP LOOP2 LDA I SIXTY, 60 STH 1 LOOP2, LDH 10 SHD I 5000 JMP CHKSIN STH 11 XSK I 16 SKP JMP CHKSIN LDA I M4000, 3777 ADD 10 STC 10 ADD M4000 ADM 11 JMP LOOP2 / COMPLI, JMP COMP LDA I 55 STC TEMSIN JMP O1 / FILSEV, LDA I 50 STH 12 SET 1 12 JMP LOOP7 / INTGIZ, SET 14 0 JMP STORE ARG JMP FIX JMP FLOAT JMP STORE INTGER JMP FSUB JMP COMP JMP STORE FRAC JMP LOAD INTGER C14, JMP 14 / CHKSIN, JMP LOAD NUMBER ADD TEMSIN AZE I JMP NXT STH 11 JMP COMP JMP NXT / / /CONSTANTS / 5050 BUFFER, 0 0 0 0056 0 0 0 0 / TABLE, 24 3641 1000 / 21 3032 4000 / 16 2342 0000 / 12 3720 0000 / 7 3100 0000 / TEN, 4 2400 0000 / ONE, FLTONE, 1 2000 ONEHAF, 0 2000 0 INTGER, 0 0 0 FRAC, 0 0 0 NUMBER, 0 0 0 EJECT / /FLOATING POINT SUBROUTINES / / /ADD FADD, CLR ADD 0 STC RET3 JMP TRAARG ADD FAC COM ADD ARG 454 JMP .+4 SCR 14 BCO I 7737 SCR I 1 ROL I 1 LZE I COM STC F7M+1 ADD ARG LZE I STC FAC /LARGER EXPONENT INTO FAC LZE JMP SETTEM LZE I JMP SETFAC /SET 6G+1 TO FAC JMP F7M JMP SETFAC SET I 1 TEM JMP F7H JMP F7I-2 LDA FAC+1 JMP F6C+4 JMP ONEFAC STC 2 JMP F6D JMP NORMRO RET3, JMP / /SUBTRACT / FSUB, CLR ADD 0 STC RET3 ADD ARG+1 COM STC ARG+1 ADD ARG+2 COM STC ARG+2 JMP FADD+3 EJECT /MULTIPLY / FMUL, CLR ADD 0 STC RET4 JMP SETFAC ADD ARG JMP OVRADD STC F7Y STC 2 JMP F6C JMP TRARG2 SET I 1 TEM2 JMP F6D JMP ONEFAC JMP F6D STC 0 ADD TEM2+2 ROR 1 STC TEM2+2 JMP SETTEM JMP F6G ADD FAC+1 MUL 4\TEM2+1 STA 3 QAC STA I 3 LDA FAC+2 ROR 1 MUL 4\TEM2+2 ROL 1 STA I 3 LDA FAC+1 MUL 4\TEM2+2 JMP F5F F5D, LDA FAC+2 ROR 1 MUL 4\TEM2+1 JMP F5F LDA TEM+2 ROL I 1 LDA TEM+1 ROL I 1 STC FAC+2 ADD TEM STC FAC+1 ADD F7Y STC FAC JMP SETFAC JMP NORMRO RET4, JMP / F5F, STC FAC QAC ROL 1 QLZ ADD F7K STC FAC+1 SET I 1 FAC-1 JMP F7H SET I 2 -0 JMP F7I SRO I 2525 JMP F5D JMP F5D+6 / EJECT / /DIVIDE / FDIV, CLR ADD 0 STC RET5 ADD F7K STC F5J+1 STC 2 ADD ARG+1 AZE I JMP RET5 JMP SETFAC JMP F6C JMP ONEFAC JMP F6D JMP TRARG2 SET I 1 TEM2 JMP F6D LDA FAC+1 AZE I JMP RET5 STC TEM+1 ADD FAC+2 STC TEM+2 ADD ARG COM JMP OVRADD JMP SETTEM JMP F6G ADD TEM2+1 COM STC FAC+1 ADD TEM2+2 COM STC FAC+2 STC F7X STC F7Y SET I 2 F7X-1 F5H, JMP ONEFAC JMP .+3 F5I, SET I 1 TEM2 JMP F7H F5J, SRO I 0001 JMP F5M SET I 5 -0 JMP F6G LDA I 3 AZE JMP F5K-3 LDA I 3 AZE I JMP F5K+2 CLR JMP F6G LDA I 3 F5K, APO JMP F5L LDA 2 BSE F5J+1 STA 2 XSK I 5 F5L, SET 1 F6G+1 JMP F6G JMP F7H XSK 5 JMP F5H JMP F5I F5M, XSK I 2 SRO I 3333 JMP F5J+3 CLR ADD F7X STC FAC+1 ADD F7Y STC FAC+2 JMP SETFAC JMP NORMRO RET5, JMP EJECT / /COM SETUP / F6C, LDA FAC+1 BCO ARG+1 ROL I 1 LDA I NOP LZE ADD .+3 STC F7S JMP 0 JMP F6D-20 / SET I 2 -0 / /COM\ABS 1 / F6D, LDA I 1 SCR I 1 ROL I 1 XSK 2 LZE COM STA 1 LDA I 1 XSK 2 LZE COM STA 1 JMP 0 / /OVF CHECK / OVRADD, SET 15 0 JMP F6G ADA 3 AZE I CLR STA 3 JMP 15 /SET 3 F6G, SET I 3 0 JMP 0 / ONEFAC, SET I 1 FAC JMP 0 / ONEARG, SET I 1 ARG JMP 0 / TRAARG, LDA ARG STC TEM ADD ARG+1 STC TEM+1 ADD ARG+2 STC TEM+2 JMP 0 / TRARG2, LDA ARG STC TEM2 ADD ARG+1 STC TEM2+1 ADD ARG+2 STC TEM2+2 JMP 0 / SETFAC, LDA I FAC STC F6G+1 JMP 0 / SETTEM, LDA I TEM STC F6G+1 JMP 0 /ADD 1 TO 3 F7H, SET 4 0 CLR JMP F6G LDA I 1 STC F7J LDA I 3 STC F7J+2 LDA 1 LAM 3 LDA I 1 LAM I 3 JMP F6G STC 0 LAM I 3 STC 0 LAM I 3 JMP 4 / EJECT / SET I 2 0 /CHECK FOR /ADD OVERFLOW F7I, SET 1 0 JMP F6G LDA I F7J, 0 BCO I 0 APO JMP 1 LDA I 3 BCO F7J APO I JMP 1 LDA I F7K, 1 JMP OVRADD LDA I MONE, F7L, -1 XSK 2 JMP F7M+2 JMP F6G LDA I 3 BCO I 4000 STA 3 JMP 1 / /SCR N 3 / F7M, LDA I 0 SET 2 0 AZE I JMP 2 STC 5 SET I 4 -30 F7O, CLR JMP F6G LDA I 3 SCR I 1 STA 3 LDA I 3 ROR I 1 STA 3 XSK I 4 JMP .+2 JMP .+3 XSK I 5 JMP F7O CLR JMP 2 EJECT / /NORMALIZE / NORMRO, CLR STC 1 ADD 0 STC RET6 ADD FAC+1 SAE FAC+2 JMP .+5 AZE JMP .+3 JMP FZER JMP RET6 / LDA FAC+1 APO JMP F7U ROL 1 APO I JMP SHIFTL / F7R, LDA FAC+2 ROR I 1 STC 0 LAM FAC+2 STC 0 LAM FAC+1 APO JMP F7V CLR ADD 1 COM JMP OVRADD JMP ONEFAC F7S, NOP CLR RET6, JMP / SHIFTL, LDA FAC+2 ROL I 1 STC FAC+2 ADD FAC+1 ROL I 1 STA FAC+1 XSK I 1 JMP F7R-3 / F7U, JMP F7V JMP F7R / F7V, CLR ADD 0 STC F7X ADD MONE JMP F7M+2 ADD MONE ADD 1 STC 1 ADD FAC+1 BCL I 4000 STC FAC+1 F7X, 0 F7Y, 0 / /FORCE ZERO AC / FZER, LDA I 4000 STC FAC STC FAC+1 STC FAC+2 JMP 0 / TEM, 0 0 0 TEM2, 0 0 0 A, / *1772 ARG, 0 0 0 FAC, 0 0 0 / /FLOAT-S /AUG 73