mirror of
https://github.com/PDP-10/its.git
synced 2026-03-02 09:56:20 +00:00
1092 lines
14 KiB
Plaintext
Executable File
1092 lines
14 KiB
Plaintext
Executable File
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
|
||
|
||
|
||
|