Files
pdp7-unix/src/cmd/st2.s
T
Mohamed AkramandGitHub 61951f20b1 Annotate st (#235)
* Annotate st

* Fix consistency

* Add missing comments
2023-01-27 10:52:28 -05:00

223 lines
3.5 KiB
ArmAsm

"** 12-92-119.pdf page 6
" space travel 2
absv: 0
dzm absx
dzm absx+1
dzm absx+2
dzm absy
dzm absy+1
dzm absy+2
1:
dac absi " absi = AC
sna
jmp i absv " while (absi) {
tad fppar
dac 9f+t
jms invert " invert(absi) -> ftmp1 = px[absi], ftmp2 = py[absi]
fld; ftmp1
fng
fad; absx
fst; absx " absx -= ftmp1
fld; ftmp2
fng
fad; absy
fst; absy " absy -= ftmp2
jms invert " invert(absi) -> ftmp1 = px[absi], ftmp2 = py[absi]
fld; ftmp1
fad; absx
fst; absx " absx += ftmp1
fld; ftmp2
fad; absy
fst; absy " absy += ftmp2
lac absi
tad ppar
dac 9f+t
lac i 9f+t " absi = ppar[absi]
jmp 1b " }
invert: 0
lac i 9f+t
dac fcplan
tad pww
dac 1f
dac 2f
lac fcplan
tad px
dac 3f
lac fcplan
tad py
dac 4f
fld; 1:..
fng
fst; 2:.. " pww[par] = -pww[par]
jms updpln " updpln()
fld; 3:..
fst; ftmp1 " ftmp1 = px[par]
fld; 4:..
fst; ftmp2 " ftmp2 = py[par]
jmp i invert
t = t+1
updpln: 0
"** 12-92-119.pdf page 7
lac fcplan
lmq
tad px
dac 1f
dac 5f
lacq
tad py
dac 3f
dac 6f
dac 0f
lacq
tad pw
dac 2f
dac 7f
lacq
tad pww
dac 4f
dac 8f
fld; 1:..
fst; ftmp1 " ftmp1 = px[fcplan]
fmp; 2:..
fst; ftmp2 " ftmp2 = ftmp1 * pw[fcplan]
fld; 3:..
fmp; 4:..
fng
fad; ftmp2
fst; 5:.. " px[fcplan] = - (py[fcplan] * pww[fcplan]) + ftmp2
fld; 6:..
fmp; 7:..
fst; ftmp2 " ftmp2 = py[fcplan] * pw[fcplan]
fld; ftmp1
fmp; 8:..
fad; ftmp2
fst; 0:.. " py[fcplan] = ftmp1 * pww[fcplan] + ftmp2
jmp updpln i
updacc: 0 " update acceleration
lac cplan
sad par
jmp upda2 " if (cplan != par) {
jms absxy " absxy(cplan)
fld; absx
fad; shipx " FAC = absx + shipx
jmp 1f " } else {
upda2:
fld; x
fng " FAC = -x
1: " }
fst; absx " absx = FAC
fmp; absx
fst; ftmp1 " ftmp1 = absx * absx
lac cplan
sad par
jmp 1f " if (cplan != par)
fld; absy
fad; shipy " FAC = absy + shipy
jmp 2f
1:
fld; y
fng " else FAC = -y
"** 12-92-119.pdf page 8
2:
fst; absy
fmp; absy
fad; ftmp1
fst; dtmp1 " dtmp1 = absy * absy + ftmp1
sqrt
fst; dpar " dpar = sqrt(dtmp1)
lac cplan
sad par
skp
jmp upda5 " if (cplan == par) {
fld; ox
fng
fad; x
fst; ftmp1 " ftmp1 = -ox + x
fmp; y
fst; horizv " horizv = ftmp1 * y
fld; y
fng
fad; oy
fst; ftmp2 " ftmp2 = -y + oy
fmp; x
fad; horizv
fdv; dpar
fst; horizv " horizv = (ftmp2 * x + horizv) / dpar
fld; dpar
fcp; rpar
sma
jmp upda5 " if (dpar < rpar) {
lac lanflg
spa
jmp upda5 " if (!lanflg) {
fld; ftmp1
fmp; ftmp1
fst; ftmp1 " ftmp1 *= ftmp1
fld; ftmp2
fmp; ftmp2
fad; ftmp1
fcp; crash
spa
jmp 1f " if (ftmp2 * ftmp2 + ftmp1 > crash) {
lac dhalt
dac goflg " goflg = true
dac crflg " crflg = true
1: " }
lac dhalt
dac lanflg " lanflg = true
fld; rpar
fdv; dpar
fst; ftmp1 " ftmp1 = rpar / dpar
fmp; x
fst; x " x *= ftmp1
fst; ox " ox = x
fld; ftmp1
fmp; y
fst; y " y *= ftmp1
fst; oy " oy = y
lac par
jms absxy " absxy(par)
jms shipxy " shipxy()
jmp upda2 " } } }
"** 12-92-119.pdf page 9
upda5:
fcp; fardst
spa
jmp 1f " if (dpar > fardst) {
lac cplan
sna
jmp 1f " if (cplan) {
lac dhalt
dac grvflg " grvflg = true
jmp i updacc " return
1: " } }
dzm grvflg " grvflg = false
lac fcplan
tad accl
dac 1f
fld; 1:..
fdv; dtmp1
fcp; maxa
spa
jmp 2f " if (accl[fcplan] / dtmp1 > maxa) {
fst; maxa " maxa = accl[fcplan] / dtmp1
lac cplan
dac maxj " maxj = cplan
2: " }
fdv; dpar
fst; ftmp1 " ftmp1 = (accl[fcplan] / dtmp1) / dpar
fmp; absx
fad; ax
fst; ax " ax += ftmp1 * absx
fld; ftmp1
fmp; absy
fad; ay
fst; ay " ay += ftmp1 * absy
jmp i updacc