mirror of
https://github.com/PDP-10/its.git
synced 2026-04-14 16:05:00 +00:00
151 lines
1.9 KiB
Plaintext
151 lines
1.9 KiB
Plaintext
title 3DCUBE - Rotating 3D cube.
|
|
a
|
|
a=1
|
|
b=2
|
|
c=3
|
|
d=4
|
|
e=5
|
|
t=6
|
|
ptr=7
|
|
x1=10
|
|
y1=11
|
|
x2=12
|
|
y2=13
|
|
p=17
|
|
|
|
dstop==003000
|
|
point==020000
|
|
vecto==100000
|
|
verti==200000
|
|
|
|
define ssfix a,b
|
|
muli a,400
|
|
tsc a,a
|
|
ash a+1,-243+19.!b(a)
|
|
termin
|
|
|
|
define ifix a
|
|
push p,a+1
|
|
ssfix a,-19.
|
|
move a,a+1
|
|
pop p,a+1
|
|
termin
|
|
|
|
loc 42
|
|
;tsint
|
|
|
|
loc 100
|
|
|
|
start: move p,[-pdllen,,pdl-1]
|
|
|
|
;Get the 340 started.
|
|
hrlzi a,dstop
|
|
movem a,dlist
|
|
.dstart [-dlen,,dlist-1]
|
|
.lose
|
|
|
|
loop: movei a,3
|
|
.sleep a,
|
|
pushj p,draw
|
|
jrst loop
|
|
|
|
draw:
|
|
move ptr,[442200,,dlist]
|
|
movei a,point+17 ;Set intentity and scale, go to point mode.
|
|
idpb a,ptr
|
|
|
|
movei x1,512.
|
|
movei y1,512.
|
|
|
|
move a,[0.01]
|
|
fadrb a,angle
|
|
pushj p,cos
|
|
fmpr a,[500.0]
|
|
ifix a
|
|
movei x2,512.(a)
|
|
|
|
move a,angle
|
|
pushj p,sin
|
|
fmpr a,[300.0]
|
|
ifix a
|
|
movei y2,512.(a)
|
|
pushj p,line
|
|
|
|
movei a,400000
|
|
idpb a,ptr
|
|
movei a,dstop
|
|
idpb a,ptr
|
|
popj p,
|
|
|
|
;Draw line from x1,y1 to x2,y2.
|
|
;Expect point mode. Clobber x1,x2,y1,y2.
|
|
line: sub x2,x1
|
|
sub y2,y1
|
|
|
|
caige x2,200
|
|
camg x2,[-200]
|
|
jrst divide
|
|
caige y2,200
|
|
camg y2,[-200]
|
|
jrst divide
|
|
|
|
tro x1,point ;Stay in point mode.
|
|
idpb x1,ptr ;Point mode, horizontal.
|
|
tro y1,verti+vecto
|
|
idpb y1,ptr ;Point mode, vertical. Go to vector.
|
|
jumpge x2,line1
|
|
movns x2
|
|
tro x2,200 ;Negate bit.
|
|
line1: jumpge y2,line2
|
|
movns y2
|
|
tro y2,200 ;Negate bit.
|
|
line2: lsh y2,8.
|
|
ior x2,y2
|
|
tro x2,600000 ;Escape bit, Intensify bit.
|
|
idpb x2,ptr
|
|
movei a,point
|
|
idpb a,ptr
|
|
popj p,
|
|
|
|
divide: push p,x1
|
|
push p,x2
|
|
push p,y1
|
|
push p,y2
|
|
ash x2,-1
|
|
ash y2,-1
|
|
addm x2,-3(p)
|
|
addm y2,-1(p)
|
|
subm x2,-2(p)
|
|
movns -2(p)
|
|
subm y2,(p)
|
|
movns (p)
|
|
add x2,x1
|
|
add y2,y1
|
|
pushj p,line
|
|
pop p,y2
|
|
pop p,y1
|
|
pop p,x2
|
|
pop p,x1
|
|
add x2,x1
|
|
add y2,y1
|
|
jrst line
|
|
|
|
COS: FADR A,[1.57079632679]
|
|
SIN: MOVM T,A
|
|
CAMG T,[.00017]
|
|
POPJ P,
|
|
FDVRI A,(-3.0)
|
|
PUSHJ P,SIN
|
|
FMPR T,T
|
|
FSC T,2
|
|
FADRI T,(-3.0)
|
|
FMPRB A,T
|
|
POPJ P,
|
|
|
|
angle: 0.0
|
|
|
|
.vector pdl(pdllen==1000)
|
|
.vector dlist(dlen==4000) ;Display list.
|
|
|
|
end start
|