# Sortowanie
# Autor : Marcin Jdrzejewski

DUP	# potrzebne sa dwa liczniki
PUSH 1
SUB
DUP 2	# w posortowanych danych N musi stac na wierzcholku stosu
PUSH 1
SUB

@start_sort

#
DUP
IF @kontynuuj1
POP    # zdejmij zero ze stosu
PUSH 1
SUB
DUP    # sprawdz czy zewnetrzna petla sie skonczyla
IF @kont2
# zewnetrzna petla sie skonczyla
POP # zdejmij ze stosu zero
GOTO @the_end
@kont2
DUP 2    # wewnetrzna petla z powrotem rowna N
PUSH 1 
SUB
@kontynuuj1

# pobierz dwie liczby do posortownania
# 1 5 2 4' 4' 4' 1 3 3 1
DUP
PUSH 4
ADD
VDUP

DUP 2
PUSH 4
ADD
VDUP

DUP 2
DUP 2

# porownaj je i w zaleznosci od rezultatu zamien miejscami
SUB
IF @zmien_kolejnosc
POP
POP
GOTO @no_change
@zmien_kolejnosc
DUP 3
PUSH 5
ADD
VSTORE

DUP 2
PUSH 3
ADD
VSTORE

@no_change

PUSH 1
SUB

GOTO @start_sort
@the_end
