1
0
mirror of https://github.com/PDP-10/its.git synced 2026-03-02 09:56:20 +00:00
Files
PDP-10.its/src/syseng/axplot.48
2018-12-27 15:18:30 +01:00

1092 lines
14 KiB
Plaintext
Executable File
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
U=F+1
AX=U+1
AY=AX+1
AZ=AY+1 ;UNUSED
UUOGEN PIT
APIT: SKIPN AXPLIF
JRST AIN
MOVE A,UUOA
.IOT USRC,@40
JRST 2,@UUOH
UUOGEN IN
AIN: MOVE A,UUOA
HRROS 40
.IOT 40
SKIPL 40
JRST 2,@UUOH
UEOF: MOVE C,[ASCII \EOF?\] ;END OF FILE?
JRST LUZ
AXUSRO: HLRZ T,C
MOVEM T,AXPLIF'
JUMPE T,POPJ1
.OPEN USRC,USRO
POPJ P,
TLO Z,AXPLTF
.ACCESS USRC,T
AOS (P)
POPJ P,
AXPLOT: MOVEM XYP,XYPM
PUSH SP,SC
MOVEM SP,SPM
PUSHJ P,PUSHC
MOVEM CP,CPM
MOVEM DP,DPM
AXPL1: TRNE C,40
JRST AXPLT1 ;PLOT A SINGLE AXIS, ETC.
PUSHJ P,AXUSRO ;PLOT COORDINATE SYSTEM
JRST AXDONE
LDB F,[140300,,C]
MOVE F,AXPLTC(F)
HRRM F,XYCORD
MOVEM F,AXF'
.PIT A
FMPRI A,(200.0)
MOVEM A,ORGX
.PIT A
FMPRI A,(200.0)
MOVEM A,ORGY
.PIT ORGU
.PIT ORGV
TLO Z,AXCF
LDB F,[250300,,F]
PUSHJ P,AXINIT
PUSHJ P,APL
LDB F,[220300,,AXF]
PUSHJ P,AXINIT
PUSHJ P,APL
JRST AXDONE
AXPLT1: LDB F,[60300,,C]
JRST @AXPLT(F)
AXPLTA: TLZ Z,AXCF
SETZM ORGX
SETZM ORGY
AXPLTB: PUSHJ P,AXUSRO
JRST AXDONE
LDB F,[170300,,C] ;AXIS CODE
PUSHJ P,AXINIT
PUSHJ P,APL
AXDONE: MOVE DP,DPM
MOVE CP,CPM
MOVE SP,SPM
MOVE XYP,XYPM
.CLOSE USRC,
TLZ Z,AXPLTF
POP SP,SC
JRST POPC
XYPM: 0
SPM: 0
CPM: 0
DPM: 0
AXPLT: AXPLTA ;TABLE OF COMMANDS
AXPLTB
COPLTI
COPLOT
PLTFPT
AXDONE
AXDONE
AXDONE
AXINIT: .PIT A
TRNE A,77
LDB SC,[600,,A]
TRNN A,100
TLZA Z,AXSYMF
TLO Z,AXSYMF
SETZM HCLOCK
TRNE A,200
AOS HCLOCK
TRNE A,400
MOVNS HCLOCK
SETZM LABEL
TRNN A,1000
JRST @AXINT(F)
AOS LABEL
TRNE A,2000
MOVNS B,LABEL
IMULM B,HCLOCK
TRNN A,4000
TLZA Z,AXEF
TLO Z,AXEF
LDB B,[140400,,A]
HRRM B,NDECPL
JRST @AXINT(F)
AXPLTC: 02,,XYC
03,,XLYC
12,,LXYC
13,,LXLYC
46,,RTHC
56,,LRTHC
77,,CPOPJ
77,,CPOPJ
AXINT: AXINX
AXINLX
AXINY
AXINLY
AXINR
AXINLR
AXINTH
POPJ1
AXIN: .PIT A
MOVEM A,UMIN
.PIT B
MOVEM B,UMAX
.PIT C ;DU
.PIT D ;LENGTH (IN INCHES) / DU
FMPRI D,(200.0)
POPJ P,
AXINXY: PUSHJ P,AXIN
FDVR D,C
FDVRI C,(10.0)
MOVEM C,DU
MOVE E,[DDVTBL,,DIVTBL]
BLT E,DIVTBL+3
JRST APLD
AXINL: PUSHJ P,AXIN
MOVEM C,LDU
MOVSI E,-9
AXINLL: MOVE U,LOGF2(E)
FMPR U,D
SETZM LAXIT(E)
CAML U,[80.0]
AOSA LAXIT(E)
CAML U,[40.0]
AOSA LAXIT(E)
CAML U,[20.0]
AOSA LAXIT(E)
CAML U,[8.0]
AOS LAXIT(E)
AOBJN E,AXINLL
PUSHJ P,LOG10
MULI A,400
TSC A,A
ASH B,-21-200(A)
AOS B ;ROUND
HLLZ U,B
FSC U,211 ;CHARACTERISTIC
HRRZ A,B
FSC A,211 ;MANTISSA
PUSHJ P,TENEXP
MULI A,400
ASH B,-243(A) ;1 THRU 9
MOVE C,LAXIT-1(B)
MOVE F,LAXIT
MOVEI E,1
MOVEM E,DIVTBL
MOVE E,@ILDVTP(F)
MOVE F,ILDVTE(F)
BLT E,DIVTBL(F)
SETOM DIVTBL+1(F)
MOVE E,[DIVTBL,,DVTBL]
BLT E,DVTBL+1(F)
MOVEM B,LGINT
CAIE B,1
SKIPN LDU
AOS F
MOVE A,U
PUSHJ P,TENEXP
MOVEM A,LGPTEN
FSC B,233
FMPR B,A
MOVEM B,UMIN
FADR B,A
FDVR A,IDUT(C)
MOVEM A,DU
FSC A,-1
FSBR B,A
MOVEM B,UMAX2
MOVE A,UMIN
POPJ P,
IFN 0,[
LOGF1: 0.0
0.3010299957
0.4771212547
0.6020599913
0.6989700043
0.7781512504
0.8450980400
0.9030899870
0.9542425094
LOGF10: 1.0000000000
]
LOGF2: 0.3010299957
0.1760912591
0.1249387366
0.0969100130
0.0791812460
0.0669467896
0.0579919470
0.0511525224
0.0457574906
LAXIT: BLOCK 9
IDUT: 1.0 ;INVERSE DU TABLE
2.0
5.0
10.0
20.0
LDVT00:LDVT10:LDVT42: 1
LDVT22:LDVT32: 5
LDVT43: 1
LDVT33: 5
LDVT11: 2
LDVT20:LDVT30:LDVT40: 1
LDVT41: 1
LDVT21:LDVT31: 1
LDVT44: 2
5
2
ILDVTE: 0
1
2
2
3
ILDVTP: ILDVT0(C)
ILDVT1(C)
ILDVT2(C)
ILDVT3(C)
ILDVT4(C)
ILDVT0: LDVT00,,DIVTBL+1
ILDVT1: LDVT10,,DIVTBL+1
LDVT11,,DIVTBL+1
ILDVT2: LDVT20,,DIVTBL+1
LDVT21,,DIVTBL+1
LDVT22,,DIVTBL+1
ILDVT3: LDVT30,,DIVTBL+1
LDVT31,,DIVTBL+1
LDVT32,,DIVTBL+1
LDVT33,,DIVTBL+1
ILDVT4: LDVT40,,DIVTBL+1
LDVT41,,DIVTBL+1
LDVT42,,DIVTBL+1
LDVT43,,DIVTBL+1
LDVT44,,DIVTBL+1
AXINX: PUSHJ P,AXINXY
TLNN Z,AXCF
JRST AXINX1
MOVN A,ORGX
FDVR A,D
FADR A,ORGU
AXINX1: MOVEM A,X0
MOVEM D,XUNITL
MOVEI E,XAXCU
HRRM E,UCORD
POPJ P,
AXINY: PUSHJ P,AXINXY
TLNN Z,AXCF
JRST AXINY1
MOVN A,ORGY
FDVR A,D
FADR A,ORGV
AXINY1: MOVEM A,Y0
MOVEM D,YUNITL
MOVEI E,YAXCU
HRRM E,UCORD
POPJ P,
AXINLX: PUSHJ P,AXINL
TLNN Z,AXCF
JRST AXILX1
MOVE A,ORGU
PUSHJ P,LOG10
MOVE E,ORGX
FDVR E,D
FSBR A,E
AXILX1: MOVEM A,X0
MOVEM D,XUNITL
MOVEI E,XLGCU
HRRM E,UCORD
POPJ P,
AXINLY: PUSHJ P,AXINL
TLNN Z,AXCF
JRST AXILY1
MOVE A,ORGV
PUSHJ P,LOG10
MOVE E,ORGY
FDVR E,D
FSBR A,E
AXILY1: MOVEM A,Y0
MOVEM D,YUNITL
MOVEI E,YLGCU
HRRM E,UCORD
POPJ P,
AXINR: PUSHJ P,AXINXY
TLNE Z,AXCF
MOVE A,ORGU
AXINR1: MOVEM A,R0
MOVEI E,RAXCU
AXINR2: HRRM E,UCORD
MOVEM D,RUNITL
.PIT A
MOVE C,A
PUSHJ P,COS
FMPR A,D
MOVEM A,RUNITX
MOVE A,C
PUSHJ P,SIN
FMPR A,D
MOVEM A,RUNITY
POPJ P,
AXINLR: PUSHJ P,AXINL
MOVE E,A
TLNN Z,AXCF
JRST AXILR1
MOVE A,ORGU
PUSHJ P,LOG10
FSBR E,A
FMPR E,D
FADR E,ORGX
AXILR1: MOVEM E,X0
MOVEI E,RLGCU
JRST AXINR2
AXINTH: .PIT UMIN
.PIT UMAX
.PIT A
TLNN Z,AXCF
JRST AXINT1
HRRZ B,XYCORD
CAIN B,LRTHC
PUSHJ P,LOG10
FSBR A,R0
FMPR A,RUNITL
TRNA
AXINT1: FMPRI A,(200.0)
MOVEM A,RAD
TLZ A,600777
MULI A,120
JUMPE A,POPJ1
MOVN B,A
HRLI B,THDVTBL+3(B)
HRRI B,DIVTBL+1
BLT B,DIVTBL+2(A)
MOVEI B,1
MOVEM B,DIVTBL
MOVE C,DTH-1(A)
MOVEM C,DU
MOVEI E,THCORD
HRRM E,UCORD
JRST APLD
COPLLF==AXSYME ;1==>PLOT A LINE ALSO WHEN PLOTTING CHARACTERS
COPLPF==AXSYMF ;1==>LEAVE PEN IN A POSITION TO CONTINUE
PLTFPT: PUSHJ P,AXUSRO ;PRINT A FLOATING POINT NUMBER
JRST AXDONE
LDB A,[140400,,C]
HRRM A,NDECPL
TRNN C,200000
TLZA Z,AXEF
TLO Z,AXEF
.PIT U
MOVE F,[700,,UCHARS-1]
PUSHJ P,UCVT
MOVE F,[700,,UCHARS-1]
PUSHJ P,STPLOT
JRST AXDONE
PLTCH: 0 ;PLOTTING CHARACTER
PLTCHX: 0
PLTCHY: 0
COPLOT: PUSHJ P,AXUSRO ;PLOT LOTS OF POINTS
JRST AXDONE
PUSHJ P,COPLI
.PIT NPTS'
.PIT A
HLRZM A,DXPTS'
HRRZM A,XPTS'
.PIT A
HLRZM A,DYPTS'
HRRZM A,YPTS'
SKIPLE NPTS
.OPEN USRC,USRO
JRST AXDONE
TLO Z,AXPLTF
COPLT1: .ACCESS USRC,XPTS
.IOT USRC,AX
.ACCESS USRC,YPTS
.IOT USRC,AY
PUSHJ P,COPLT
MOVE A,DXPTS
ADDM A,XPTS
MOVE A,DYPTS
ADDM A,YPTS
SOSE NPTS
JRST COPLT1
TLNN Z,COPLPF
PUSHJ P,PENUP
JRST AXDONE
COPLTI: HLRZM C,NPTS
PUSHJ P,COPLI
COPLII: MOVE A,[-2,,AX]
.IOT A
JUMPL A,UEOF
PUSHJ P,COPLT
SOSLE NPTS
JRST COPLII
PUSHJ P,PENUP
JRST AXDONE
COPLT: PUSHJ P,XYCORD
PUSHJ P,XYFIX
SKIPE PLTCH
JRST PPLTCH
PUSHJ P,GOXY
JRST PENDN
COPLI: TRNN C,200000 ;INITIALIZE FOR PLOTTING POINTS
TLZA Z,COPLLF
TLO Z,COPLLF
TRNN C,400000
TLZA Z,COPLPF
TLO Z,COPLPF
LDB B,[110700,,C]
MOVEM B,PLTCH
JUMPE B,CPOPJ
PUSH P,X
PUSH P,Y
TLO Z,LNGF
SETZB X,Y
PUSHJ P,CPLOT
TLZ Z,LNGF
JUMPE X,COPLI1
JUMPN Y,COPLI1
SUB X,SC
SUB X,SC
MOVE Y,SC
IMULI Y,6
COPLI1: ASH X,-1
MOVEM X,PLTCHX
ASH Y,-1
MOVEM Y,PLTCHY
POP P,Y
POP P,X
POPJ P,
PPLTCH: TLNN Z,COPLLF ;PLOT PLOTTING CHARACTER
JRST PPLCH1
PUSHJ P,GOXY
PUSHJ P,PENUP
MOVE XYP,XYPM
PUSHJ P,PUSHXY
MOVN C,PLTCHX
MOVN D,PLTCHY
PUSHJ P,VECTXY
SKIPE B,PLTCH
PUSHJ P,CPLOT
PUSHJ P,POPXY
JRST PENDN
PPLCH1: PUSHJ P,PENUP ;NO LINE
SUB C,PLTCHX
SUB D,PLTCHY
PUSHJ P,GOXY
MOVE B,PLTCH
JRST CPLOT
APLD: MOVEI F,0 ;SET UP DIVISION TABLE FOR HASH MARKS
APLD1: MOVE A,DIVTBL(F)
MOVEM A,DVTBL(F)
JUMPL A,CPOPJ
AOJA F,APLD1
APL: MOVE A,SC
FSC A,233
MOVEM A,SCALE
APLA: PUSHJ P,PENUP
MOVE U,UMIN
FSB U,DU
PUSHJ P,UCORD
MOVEM AX,XM'
MOVEM AY,YM'
MOVE U,UMIN
PUSHJ P,UCORD ;GET X(U),Y(U)
PUSHJ P,VPLOT ;GO THERE
PUSHJ P,PENDN
APL0: PUSH P,AX
PUSH P,AY
MOVEM U,UM'
FAD U,DU
PUSHJ P,UCORD
JUMPE F,GTINC ;F=O => NO HASH MARKS NOW
PUSH P,AX ;CALCULATE DERIVATIVES (SLOPE, CURVATURE) FOR HASH MARKS
PUSH P,AY
FSBR AX,XM
FSBR AY,YM
SKIPLE HCLOCK
MOVNS AX
SKIPGE HCLOCK
MOVNS AY
PUSH P,AX
PUSH P,AY
SKIPE HCLOCK
JRST GSQ
MOVN AX,-5(P)
FADRM AX,XM
FADR AX,-3(P)
MOVN AY,-4(P)
FADRM AY,YM
FADR AY,-2(P)
FMPR AX,YM
FMPR AY,XM
CAML AX,AY
MOVNS -1(P)
CAMGE AX,AY
MOVNS (P)
CAMN AX,AY
TLOA Z,AXSYME
TLZ Z,AXSYME
MOVE AX,-1(P)
MOVE AY,(P)
GSQ: FMPR AX,AX
FMPR AY,AY
FADRB AX,AY
SQ1: MOVE A,AY
FDVRM AX,AY
FADR AY,A
FSC AY,-1
CAME AY,A
JRST SQ1
POP P,AX
POP P,AY
SKIPGE DVTBL(F)
SETOM LBLFLG'
FSC F,235
FDVR F,A
FMPR F,SCALE
FMPR AX,F
FMPR AY,F
PUSHJ P,VIPLT2
TLNE Z,AXSYME+AXSYMF
PUSHJ P,VIPLT2
POP P,AY
POP P,AX
GTINC: POP P,YM
POP P,XM
CAMLE U,UMAX
JRST PENUP ;DONE
PUSHJ P,VPLOT
MOVEI F,0
APL1: SOSE DVTBL(F) ;CHECK HASH MARKING
JRST APL0
MOVE A,DIVTBL(F)
MOVEM A,DVTBL(F)
AOJA F,APL1
VPLOT: PUSHJ P,XYFIX
JRST GOXY
VIPLT2: PUSHJ P,VIPLOT
SKIPLE LABEL
PUSHJ P,LBL
MOVNS AX
MOVNS AY
PUSHJ P,VIPLOT
SKIPGE LABEL
JRST LBL
POPJ P,
VIPLOT: PUSHJ P,XYFIX
JRST VECTXY
XYFIX: MOVE B,AX
MOVE C,AY
FAD B,[0.5]
FAD C,[0.5]
MULI C,400
TSC C,C
ASH D,-243(C)
MULI B,400
TSC B,B
ASH C,-243(B)
POPJ P,
LBL: AOSE LBLFLG
POPJ P,
PUSHJ P,PENUP
MOVE F,[700,,UCHARS-1]
PUSHJ P,UCVT
MOVEI B,0
IDPB B,F
PUSH P,AX
PUSH P,AY
PUSH P,U
MOVE SP,SPM
PUSHJ P,STRLNG
MOVEM A,LNGTH'
MOVE C,-2(P)
MOVE D,-1(P)
MOVEI A,0
CAMGE C,D
ADDI A,RL
MOVNS D
CAMGE C,D
ADDI A,2*RL
MOVE F,[700,,UCHARS-1]
PUSHJ P,L0(A)
POP P,U
POP P,AY
POP P,AX
POPJ P,
STRLNG: PUSH P,X
PUSH P,Y
TLO Z,LNGF
MOVE F,[700,,UCHARS-1]
PUSHJ P,STPLOT
MOVE A,X
MOVE B,Y
POP P,Y
POP P,X
TLZ Z,LNGF
SUB A,X
SUB B,Y
POPJ P,
STP1: PUSHJ P,CPLOT
STPLOT: ILDB B,F
JUMPN B,STP1
POPJ P,
AXUSUP: POP SP,SC ;UNSUPERSCRIPT
JRST SUBSCR
AXSUP: PUSHJ P,SUPSCR ;SUPERSCRIPT
PUSH SP,SC
ASH SC,1
ADDI SC,1
IDIVI SC,3
POPJ P,
RL==13
L0: MOVEI C,2
MOVNI D,3
PUSHJ P,VSCXY
PUSHJ P,STPLOT
MOVN C,SC
IMULI C,2
SUB C,LNGTH
MOVE D,SC
IMULI D,3
PUSHJ P,VECTXY
JRST PENDN
LOC L0+RL
L1: PUSHJ P,L12
MOVE D,SC
IMULI D,2
PUSHJ P,L21
MOVN D,SC
IMULI D,2
PUSHJ P,VECTXY
JRST PENDN
DTH: 0.261799388 ;DO NOT MOVE
0.0872664626 ;THIS
0.0174532925 ;CODE
LOC L1+RL
L2: PUSHJ P,L12
MOVN D,SC
IMULI D,10
PUSHJ P,L21
MOVE D,SC
IMULI D,10
PUSHJ P,VECTXY
JRST PENDN
LOC L2+RL
L3: MOVN C,LNGTH
MOVN D,SC
IMULI D,3
PUSHJ P,VECTXY
PUSHJ P,STPLOT
MOVEI C,0
MOVEI D,3
PUSHJ P,VSCXY
JRST PENDN
L12: MOVE C,LNGTH
ASH C,-1 ;1/2+-1
SUBM SC,C
POPJ P,
L21: PUSHJ P,VECTXY
PUSHJ P,STPLOT
MOVN C,LNGTH
ASH C,-1 ;1/2-+1
SUB C,SC
POPJ P,
UCVT: MOVEI A,AXC
HRRM A,CPLOT
MOVE C,UM
JUMPG C,FP1
JUMPE C,FP1A
MOVNS C
MOVEI B,"-
IDPB B,F
FP1: MOVEI B,3 ;NULL CHARACTER
IDPB B,F
TLNE Z,AXEF
JRST FP4
FP1A: MOVEI E,0
FP3: MULI C,400
ASHC D,-243(C)
MOVE C,D
PUSHJ P,FP7
NDECPL: MOVNI C,. ;(RH)=# DECIMAL PLACES
JUMPE C,FP3B
MOVEI B,".
IDPB B,F
FP3A: MOVE D,E
MULI D,10.
PUSHJ P,FP7B
AOJL C,FP3A
FP3B: TLNN E,200000
POPJ P,
FROUND: MOVE A,F
FRND1: LDB B,F
CAIN B,".
JRST FRND2
CAIN B,3 ;NULL CHARACTER
MOVEI B,"0
CAIE B,"9
AOJA B,FRNDED
MOVEI B,"0
DPB B,F
FRND2: IBP F
IBP F
IBP F
IBP F
SOJA F,FRND1
FRNDED: DPB B,F
MOVE F,A
POPJ P,
FP4: MOVEM F,UCVTD
CAMGE C,FT
TDZA D,D
MOVEI D,1
MOVNI A,6
MOVEI E,0
FP4A: ADDI E,1(E)
XCT FCP(D)
SOSA E
FDVR C,@FCP(D)
FP4B: AOJN A,FP4A
JUMPN D,FP4B1
MOVNS E
FMPRI C,(10.0)
CAMGE C,FT1
SOJA E,FP4B1
FDVRI C,(10.0)
FP4B1: PUSH P,E
PUSHJ P,FP3
POP P,C
LDB B,UCVTD
CAIE B,3
AOJA C,FP4D
FP4C: MOVEI B,"*
IDPB B,F
MOVEI B,"1
IDPB B,F
MOVEI B,"0
IDPB B,F
MOVEI B,4 ;SUPERSCRIPT
IDPB B,F
PUSHJ P,FP7S
MOVEI D,2 ;UNSUPERSCRIPT
JRST FP7C
FP4D: MOVEI B,". ;ROUNDED UP TO EXTRA DIGIT IN E MODE
IDPB B,UCVTD
MOVEI B,"0
IDPB B,UCVTD
IBP F
IBP F
IBP F
IBP F
SOJA F,FP4C
FP7S: JUMPGE C,FP7
MOVNS C
MOVEI D,"-
IDPB D,F
FP7: IDIVI C,10.
HRLM D,(P)
JUMPE C,FP7A
PUSHJ P,FP7
FP7A: HLRZ D,(P)
FP7B: TRO D,"0
FP7C: IDPB D,F
POPJ P,
1.0^40
1.0^20
1.0^10
1.0^4
1.0^2
FT1: 1.0^1
FT: 1.0^0
1.0^-40
1.0^-20
1.0^-10
1.0^-4
1.0^-2
1.0^-1
FT0:
FCP: CAMLE C,FT0(A)
CAMGE C,FT(A)
UCVTD: 0 ;SAVED BYTE POINTER POINTING TO NULL CHARACTER (3)
SCALE: 1.0
HCLOCK: 0 ;1==>HASH MARKS CLOCKWISE, -1==>HASH MARKS COUNTERCLOCKWISE
LABEL: 0 ;-1 OR 1=>LABELED AXES, - FOR OPPOSITE HASH MARKS
DDVTBL: 1
5
2
-1
THDVTB: 5
3
3
2
-1
DIVTBL: BLOCK 10
DVTBL: BLOCK 10
UCHARS: BLOCK 5
ORGX: 0 ;PLOTTER X COORDINATE OF ORIGIN
ORGY: 0 ;PLOTTER Y COORDINATE OF ORIGIN
ORGU: 0 ;U COORDINATE OF ORIGIN
ORGV: 0 ;V COORDINATE OF ORIGIN
UMIN: 0 ;INITIAL U
UMAX: 0 ;FINAL U
DU: 0 ;DELTA U
XYCORD: JRST CPOPJ
UCORD: JRST CPOPJ
XYC: FSBR AX,X0
FSBR AY,Y0
FMPR AX,XUNITL
FMPR AY,YUNITL
POPJ P,
LXYC: MOVE A,AX
PUSHJ P,LOG10
MOVE AX,A
JRST XYC
XLYC: MOVE A,AY
PUSHJ P,LOG10
MOVE AY,A
JRST XYC
LXLYC: MOVE A,AY
PUSHJ P,LOG10
MOVE AY,A
JRST LXYC
LRTHC: MOVE A,AX
PUSHJ P,LOG10
MOVE AX,A
JRST RTHC
RTHC: FSBR AX,R0
FMPR AX,RUNITL
RTHC1: MOVE A,AY
PUSHJ P,SIN
FMPR A,AX
EXCH A,AY
PUSHJ P,COS
FMPR AX,A
FADR AX,ORGX
FADR AY,ORGY
POPJ P,
XLGCU: PUSHJ P,LGCU
SKIPA AX,A
XAXCU: MOVE AX,U
XAXCU1: FSBR AX,X0
FMPR AX,XUNITL
MOVE AY,ORGY
POPJ P,
X0: 0 ;X COORDINATE AT PLOTTER X=0
XUNITL: 0 ;PLOTTER LENGTH (IN STEPS) OF ONE X UNIT
YLGCU: PUSHJ P,LGCU
SKIPA AY,A
YAXCU: MOVE AY,U
YAXCU1: FSBR AY,Y0
FMPR AY,YUNITL
MOVE AX,ORGX
POPJ P,
Y0: 0
YUNITL: 0
RLGCU: MOVE A,U
PUSHJ P,LOG10
SKIPA AX,A
RAXCU: MOVE AX,U
FSBR AX,R0
MOVE AY,AX
FMPR AX,RUNITX
FMPR AY,RUNITY
FADR AX,ORGX
FADR AY,ORGY
POPJ P,
R0: 0
RUNITL: 0
RUNITX: 0
RUNITY: 0
THCORD: MOVE AX,RAD
MOVE AY,U
JRST RTHC1
RAD: 0 ;RADIUS OF THETA AXIS
LGCU: MOVE A,U
CAMGE U,UMAX2
JRST LOG10
AOS B,LGINT
CAIG B,9
JRST LGCU1
MOVEI B,1
MOVEM B,LGINT
MOVSI T,(10.0)
FMPRM T,LGPTEN
LGCU1: MOVE C,LAXIT-1(B)
MOVE D,LAXIT
MOVEI E,1
MOVEM E,DIVTBL
MOVE E,@ILDVTP(D)
MOVE D,ILDVTE(D)
BLT E,DIVTBL(D)
SETOM DIVTBL+1(D)
MOVE E,[DVTBL,,DVTBL+1]
BLT E,DVTBL+1(D)
AOS DVTBL+1(D)
CAIE B,1
SKIPN LDU
SETOM DVTBL+1(D)
MOVE T,LGPTEN
FSC B,233
FMPR B,T
FADR B,T
FDVR T,IDUT(C)
MOVEM T,DU
FSC T,-1
FSBR B,T
MOVEM B,UMAX2
JRST LOG10
UMAX2: 0 ;NEXT PLACE TO SWITCH DIVTBL
LDU: 0 ;DU FROM USER. 0==> LABEL EVERY INTEGER
LGINT: 0 ;CURRENT INTEGER
LGPTEN: 0 ;CURRENT POWER OF TEN
LOG: JUMPE A,LOGOF0 ;LOG BASE 2
MOVEM B,LOGT1'
ASHC A,-33
FSC A,233
FSBRI A,(128.5)
MOVEM A,LOGT2'
ASH B,-10
TLC B,200000
MOVE A,B
FADR A,[0.707106781187] ;SQRT 2
FSBR B,[0.707106781187]
FDVR B,A
MOVEM B,LOGT3'
FMPR B,B
MOVE A,[0.5989786496]
FMPR A,B
FADR A,[0.9614706323]
FMPR A,B
FADR A,[2.8853912903]
FMPR A,LOGT3
FADR A,LOGT2
SKIPA B,LOGT1
LOGOF0: MOVSI A,400000
POPJ P,
LOG10: PUSHJ P,LOG
FMPR A,[0.3010299957] ;LOG10 2
POPJ P,
LN: PUSHJ P,LOG
FMPR A,[0.69314718056] ;LN 2
POPJ P,
TENEXP: FMPR A,[2.302585093]
EXP: PUSHJ P,EXPM1
FADRI A,(1.0)
POPJ P,
EXPM1: MOVM T,A
CAMG T,[154400,,]
POPJ P,
FSC A,-1
PUSHJ P,EXPM1
MOVE T,A
FADRI T,(2.0)
FMPR A,T
POPJ P,
COS: FADR A,[1.57079632679] ;PI/2
SIN: MOVM T,A ;ARG IN A
CAMG T,[.00017]
POPJ P, ;SIN X = X, WITHIN 27 BITS
FDVRI A,(-3.0)
PUSHJ P,SIN ;SIN -X/3
FMPR T,T
FSC T,2
FADRI T,(-3.0)
FMPRB A,T ;SIN X = 4(SIN -X/3)^3-3(SIN -X/3)
POPJ P, ;SIN IN A, SIN OR ABS(SIN) IN T