mirror of
https://github.com/PDP-10/its.git
synced 2026-03-31 03:32:04 +00:00
PDP-10 implementation of https://twitter.com/yuruyurau/status/1226846058728177665 https://oldbytes.space/@zxdunny/109342959566427298
178 lines
2.4 KiB
Plaintext
178 lines
2.4 KiB
Plaintext
TITLE BUBBLE UNIVERSE
|
|
|
|
;Source:
|
|
;https://oldbytes.space/@zxdunny/109342959566427298
|
|
;https://twitter.com/yuruyurau/status/1226846058728177665
|
|
|
|
A=1
|
|
B=A+1
|
|
C=3
|
|
I=4
|
|
J=5
|
|
U=6
|
|
V=7
|
|
X=10
|
|
RI=11
|
|
T=12
|
|
DOT=13
|
|
RED=14
|
|
GREEN=15
|
|
P=17
|
|
|
|
DIS==130
|
|
CSCOPE==420
|
|
340P==0
|
|
|
|
PDLLEN=20
|
|
TABSIZ=8192.
|
|
|
|
N=200.
|
|
IJSTEP=1304. ;TABSIZ/2PI
|
|
RISTEP=35. ;2PI/235*IJSTEP
|
|
TSTEP=33. ;0.025*IJSTEP
|
|
RSTEP=<170000/N>+1
|
|
GSTEP=<1700/N>+1
|
|
|
|
LOC 41
|
|
JRST NTS
|
|
|
|
LOC 100
|
|
|
|
GO: SETO A,
|
|
.IOTLSR A,
|
|
NTS:
|
|
IFN 340P,[
|
|
CONO DIS,100
|
|
CONSO DIS,200
|
|
JRST .-1
|
|
DATAO DIS,[020016]
|
|
MOVE DOT,[220000,,022000]
|
|
]
|
|
MOVE P,[-PDLLEN,,PDL]
|
|
PUSHJ P,MAKTAB
|
|
|
|
MOVEI U,0
|
|
MOVEI V,0
|
|
MOVEI X,0
|
|
MOVEI T,0
|
|
|
|
TLOOP: MOVEI I,0
|
|
MOVEI RI,0
|
|
IFE 340P,MOVEI RED,0
|
|
ILOOP: MOVEI J,0
|
|
IFE 340P,MOVEI GREEN,0
|
|
JLOOP: MOVE A,I
|
|
ADD A,V ;i+v
|
|
ANDI A,TABSIZ-1
|
|
MOVE U,SINTAB(A) ;u = sin(i+v)
|
|
ADDI A,TABSIZ/4
|
|
MOVE V,SINTAB(A) ;v = cos(i+v)
|
|
MOVE A,RI
|
|
ADD A,X ;r*i+x
|
|
ANDI A,TABSIZ-1
|
|
ADD U,SINTAB(A) ;u += sin(r*i+x)
|
|
ADDI A,TABSIZ/4
|
|
ADD V,SINTAB(A) ;v += cos(r*i+x)
|
|
MOVE X,U
|
|
ADD X,T ;x = u+t
|
|
|
|
IFN 340P,[
|
|
MOVE A,U
|
|
IDIVI A,6 ;Divide by 6 to scale to +-512.
|
|
ADDI A,512.
|
|
DPB A,[001200,,DOT]
|
|
MOVE A,V
|
|
IDIVI A,6.
|
|
ADDI A,512.
|
|
DPB A,[221200,,DOT]
|
|
CONSO DIS,200
|
|
JRST .-1
|
|
DATAO DIS,DOT ;Draw a point.
|
|
]
|
|
.ELSE [
|
|
MOVE A,U
|
|
IDIVI A,11. ;Divide by 11 to scale to +-256.
|
|
ADDI A,256.
|
|
LSH A,9
|
|
MOVE B,V
|
|
IDIVI B,11.
|
|
ADDI B,256.
|
|
ADD A,B
|
|
MOVE C,RED
|
|
ANDI C,170000
|
|
MOVE B,GREEN
|
|
ANDI B,1700
|
|
IOR C,B
|
|
CONO CSCOPE,202030(C) ;Set color.
|
|
DATAO CSCOPE,A ;Draw a point.
|
|
]
|
|
ADDI J,IJSTEP
|
|
IFE 340P,ADDI GREEN,GSTEP
|
|
CAMGE J,[N*IJSTEP]
|
|
JRST JLOOP
|
|
ADDI I,IJSTEP
|
|
IFE 340P,ADDI RED,RSTEP
|
|
ADDI RI,RISTEP
|
|
CAMGE I,[N*IJSTEP]
|
|
JRST ILOOP
|
|
ADDI T,TSTEP
|
|
JRST TLOOP
|
|
|
|
MAKTAB: MOVE C,[-TABSIZ-TABSIZ/4,,SINTAB]
|
|
MOVE A,[0.0]
|
|
MAKT0: PUSH P,A
|
|
PUSHJ P,SIN
|
|
FMPR A,[1303.7972938088067] ;TABSIZ/2PI
|
|
MULI A,400
|
|
TSC A,A
|
|
ASH B,-243(A)
|
|
MOVEM B,(C)
|
|
POP P,A
|
|
FADR A,[0.0007669903939428206] ;2PI/TABSIZ
|
|
AOBJN C,MAKT0
|
|
POPJ P,
|
|
|
|
PDL: BLOCK PDLLEN
|
|
SINTAB: BLOCK TABSIZ+TABSIZ/4
|
|
|
|
;This is copied from Spacewar.
|
|
SIN: CAMG A,SC9
|
|
CAMGE A,[-.000211431983]
|
|
JRST .+2
|
|
POPJ P,
|
|
FDVR A,SC1
|
|
PUSH P,A
|
|
PUSH P,B
|
|
MULI A,400
|
|
TSC A,A
|
|
ASH B,-243(A)
|
|
MOVNS A,B
|
|
ANDCMI A,1
|
|
TLC A,232000
|
|
FAD A,A
|
|
FADRB A,-1(P)
|
|
TRNE B,2
|
|
MOVNS A,-1(P)
|
|
FMP A,A
|
|
MOVE B,SC9
|
|
FMP B,A
|
|
FAD B,SC7
|
|
FMP B,A
|
|
FAD B,SC5
|
|
FMP B,A
|
|
FAD B,SC3
|
|
FMP A,B
|
|
FADR A,SC1
|
|
FMPRM A,-1(P)
|
|
POP P,B
|
|
POP P,A
|
|
POPJ P,
|
|
|
|
SC1: 1.5707963267
|
|
SC3: -0.64596371106
|
|
SC5: 0.07968967928
|
|
SC7: -0.00467376557
|
|
SC9: 0.00015148419
|
|
|
|
END GO
|