almost done

This commit is contained in:
aljazbrodar. 2025-11-15 11:52:25 +01:00
parent d03cb64ac0
commit 325f63e78a

View file

@ -6,33 +6,32 @@ dijk START 0
STA PROV, X STA PROV, X
.zacetno vozlisce nima predhodnika .zacetno vozlisce nima predhodnika
LDA minus_ena LDA minus_ena
STA PREV, X
.neskoncna while zanka .neskoncna while zanka
WHILE LDS minus_ena . S = -1, hrani vozlisce ki imam min razdaljo v okolici WHILE LDS minus_ena . S = -1, hrani vozlisce ki imam min razdaljo v okolici
LDX #0 . stevec = 0 LDX #0 . stevec = 0
FOR1 RMO X, A
FOR1 LDA PROV, X . nalozi potencialno razdaljo sosednjega vozlisca v okolici STA old_X
LDA PROV, X . nalozi potencialno razdaljo sosednjega vozlisca v okolici
COMP minus_ena COMP minus_ena
JEQ NEXT . ce ze obiskano=-2 ali neobiskano=-1 preskoci vozlisce JEQ NEXT . ce ze obiskano=-2 ali neobiskano=-1 preskoci vozlisce
COMP minus_dva COMP minus_dva
JEQ NEXT JEQ NEXT
RMO S, A . sicer S v A RMO S, A . sicer S v A
COMP minus_ena . ce S se ni nastavljen ga nastavi prvic COMP minus_ena . ce S se ni nastavljen ga nastavi prvic
JEQ SET JEQ SET . sicer poglej ali ima trenutno vozl. manjso pot. razdaljo prov[X] < prov[S]
STA old_X . sicer poglej ali ima trenutno vozl. manjso pot. razdaljo prov[X] < prov[S] LDA PROV, X . nalozi p. razdaljo tren. vozl.
LDA PROV, X . nalozi p. razdaljo tren. vozl. RMO A, T . shrani jo v T reg.
RMO A, T . shrani jo v T reg. RMO S, X . premakni trenutni ix min. vozl. v X za ix naslavljanje
RMO S, X . premakni trenutni ix min. vozl. v X za ix naslavljanje LDA PROV, X . nalozi trenutno min razdaljo
LDA PROV, X . nalozi trenutno min razdaljo LDX old_X . obnovi X, vrednost stevca zanke FOR1
LDX old_X . obnovi X, vrednost stevca zanke FOR1 COMPR T, A . primerjaj vrednosti tj. ce razdalja ni krajsa preskoci, sicer SET
COMPR T, A . primerjaj vrednosti tj. ce razdalja ni krajsa preskoci, sicer SET JEQ NEXT
JEQ NEXT
JGT NEXT JGT NEXT
SET RMO X, S . S nastavi na ix vozlisca - trenutna iteracija SET RMO X, S . S nastavi na ix vozlisca - trenutna iteracija
NEXT RMO X, A NEXT RMO X, A
COMP table_len
ADD #3 ADD #3
RMO A, X RMO A, X
COMP #table_len
JLT FOR1 JLT FOR1
. ce ni vec vozlisc v okolici koncaj . ce ni vec vozlisc v okolici koncaj
@ -48,44 +47,54 @@ NEXT RMO X, A
.nato dodaj vozlisca v okolico oz. posodobi razdalje obstojecih vozlisc v okolici .nato dodaj vozlisca v okolico oz. posodobi razdalje obstojecih vozlisc v okolici
LDX #0 . stevec na 0 LDX #0 . stevec na 0
FOR2 LDA INPUT_X, X . preveri ali je to povezava ki izvira v vozl. S FOR2 RMO X, A
STA old_X
LDA INPUT_X, X . preveri ali je to povezava ki izvira v vozl. S
MUL #3 . pomnozi s 3 da lahko primerjamo s S, ki steje ix WORDa
COMPR A, S COMPR A, S
JGT NEXT2 . ce ni preskoci JGT NEXT2 . ce ni preskoci
JLT NEXT2 JLT NEXT2
.sicer preveri ali je vozlisce ze obiskano .sicer preveri ali je sosednje vozlisce ze obiskano
LDA PROV, X LDA INPUT_Y, X . nalozi ix soseda
COMP minus_dva MUL #3
JEQ NEXT2 RMO A, X . premakni v X
COMP minus_ena .se se ni obiskano, nastavi vrednost p. razdalje LDA PROV, X . nalozi sosedovo potencialno razdaljo
LDX old_X . obnovi X
COMP minus_dva . poglej ce je ze obiskan
JEQ NEXT2
COMP minus_ena .ce se ni obiskan, nastavi vrednost p. razdalje
JEQ SET2 JEQ SET2
.sicer preveri da je nova p. razdalja manjsa od trenutne
RMO X, A . D[S] + w < PROV[Y]
STA old_X . zacasno zamenjaj vrednost X
RMO S, X
LDA D, X . D[S] -> A
RMO A, T . zacasno shrani v T
LDX old_X
LDA INPUT_W, X
ADDR T, A . D[S] + w
RMO A, T . zacasno shrani v T
LDA PROV, X
COMPR A, T
JEQ NEXT2
JGT NEXT2
SET2 RMO X, A
STA old_X
RMO S, X RMO S, X
LDA D, X LDA D, X
RMO A, T
LDX old_X LDX old_X
LDA INPUT_W, X ADD INPUT_W, X
ADDR T, A RMO A, T
LDA INPUT_Y, X
MUL #3
RMO A, X
LDA PROV, X
LDX old_X
COMPR A, T
JEQ NEXT2
JLT NEXT2
SET2 RMO S, X
LDA D, X
LDX old_X
ADD INPUT_W, X
RMO A, T
LDA INPUT_Y, X
MUL #3
RMO A, X
RMO T, A
STA PROV, X STA PROV, X
RMO X, A LDX old_X
STA PREV, X NEXT2 RMO X, A
NEXT2 RMO A, X
COMP table_len
ADD #3 ADD #3
RMO A, X
COMP #table_len
JLT FOR2 JLT FOR2
J WHILE J WHILE
@ -148,6 +157,7 @@ INPUT_W WORD 8
.pomozne spremenljivke .pomozne spremenljivke
old_X RESW 1 old_X RESW 1
old_S RESW 1
minus_ena WORD X'FFFFFF' minus_ena WORD X'FFFFFF'
minus_dva WORD X'FFFFFE' minus_dva WORD X'FFFFFE'
.najkrajse razdalje .najkrajse razdalje
@ -160,16 +170,6 @@ D WORD -1
WORD -1 WORD -1
WORD -1 WORD -1
WORD -1 WORD -1
.prejsnje vozlisce
PREV WORD -1
WORD -1
WORD -1
WORD -1
WORD -1
WORD -1
WORD -1
WORD -1
WORD -1
.provisional razdalje (okolica), -2 = done, -1 neobiskan .provisional razdalje (okolica), -2 = done, -1 neobiskan
PROV WORD -1 PROV WORD -1
WORD -1 WORD -1