.program prebere iz spomina seznam števil dolžine len
.in jih uredi z insertion sortom
.pustimo prvi element paddan, da lažje rečunamo premike
prog 	START 0
	LDX #6

loop	LDB #len
	COMPR X, B .i < len
	JEQ halt .zaključi

	LDA arr, X .A = arr[i]
	RMO X, S .S <- i
	LDT #3 .T <- 3
	SUBR T, X .X <- j= i - 1

loop2	LDT #3
	COMPR X, T .j  >= 1
	JLT insert .ko je j = 0 skoči
	J next .skoči na preverjanje naslednjega pogoja

	.shranimo S nazaj v X in ga zmanjšamo za ena
	.nato skočimo nazaj v loop
exit2	RMO S, X .X <- i
	LDT #3
	ADDR T, X .X <- i + 1
	J loop      
	
next	LDB arr, X 
	COMPR B, A .arr[j] > arr[i]
	JGT swap
	J insert .če pogoj ni izpolnjen

	.sicer zamenjamo elementa
swap	LDT #3
	ADDR T, X .X <- j + 1
	STB arr, X. arr[j+1] = arr[j]

	LDT #6
	SUBR T, X .x <- x-1
	J loop2	

insert 	LDT #3
	ADDR T, X .j = j+1
	STA arr, X .arr[j+1] = arr[i]
	SUBR T, X .j = j
	J exit2

halt 	J halt

arr	WORD 0
	WORD 5
	WORD 3
	WORD 8
	WORD 1
	WORD 4
	WORD 7
	WORD 2
	WORD 9
arrEnd	WORD 6

len 	EQU arrEnd - arr + 3




	END prog