init
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
; PURSUE -- point the engine at the nearest asteroid and burn.
|
||||
; Crude: it makes no attempt to match velocity, so it will fly straight past.
|
||||
;
|
||||
.equ P_THROTTLE 0x20
|
||||
.equ P_AZIMUTH 0x21
|
||||
.equ P_PITCH 0x22
|
||||
.equ P_SELECT 0x30
|
||||
.equ P_NEAREST 0x31
|
||||
.equ P_RELX 0x32
|
||||
.equ P_RELY 0x33
|
||||
.equ P_RELZ 0x34
|
||||
.equ P_MATHX 0x80
|
||||
.equ P_MATHY 0x81
|
||||
.equ P_ATAN2 0x83
|
||||
.equ P_HYPOT 0x84
|
||||
|
||||
in r1, P_NEAREST ; id of the nearest asteroid
|
||||
out P_SELECT, r1 ; track it
|
||||
ldi r7, 1000
|
||||
out P_THROTTLE, r7 ; full power
|
||||
|
||||
aim: in r1, P_RELX ; where is it?
|
||||
in r2, P_RELY
|
||||
in r3, P_RELZ
|
||||
out P_MATHX, r1
|
||||
out P_MATHY, r2
|
||||
in r4, P_ATAN2 ; azimuth = atan2(dy, dx)
|
||||
out P_AZIMUTH, r4
|
||||
in r5, P_HYPOT ; horizontal range = hypot(dx, dy)
|
||||
out P_MATHX, r5
|
||||
out P_MATHY, r3
|
||||
in r6, P_ATAN2 ; elevation = atan2(dz, range)
|
||||
out P_PITCH, r6
|
||||
yield
|
||||
jmp aim
|
||||
Reference in New Issue
Block a user