LOC Data_Segment
GREG @
NUMS OCTA 3,2,1,4,5,6,3,2,1,6,7
LOC #100
:Main LDA $3,NUMS
SET $4,11
PUSHJ $2,:insertSort
TRAP 0,Halt,0
// a is a0, n is the number of octas,
// a is sorted.
PREFIX :insertSort:
t IS $255
a IS $0
n IS $1
jj IS $2
ii IS $3
key IS $4
ai IS $5
:insertSort SET jj,8
SL n,n,3
0H LDO key,a,jj
SUB ii,jj,8
BN ii,1F // i < 0
3H LDO ai,a,ii
CMP t,ai,key
BNP t,1F
ADD ii,ii,8
STO ai,a,ii
SUB ii,ii,16
BN ii,1F
JMP 3B
1H ADD ii,ii,8 // store key
STO key,a,ii
ADDU jj,jj,8
CMPU t,jj,n
PBNZ t,0B
POP 0,0
PREFIX :