dijk START 0 .zacetna inicializacija, d=0 LDA #0 LDX START STA D, X STA PROV, X .zacetno vozlisce nima predhodnika LDA minus_ena STA PREV, X .neskoncna while zanka WHILE LDS minus_ena . S = -1, hrani vozlisce ki imam min razdaljo v okolici LDX #0 . stevec = 0 FOR1 LDA PROV, X . nalozi potencialno razdaljo sosednjega vozlisca v okolici COMP minus_ena JEQ NEXT . ce ze obiskano=-2 ali neobiskano=-1 preskoci vozlisce COMP minus_dva JEQ NEXT RMO S, A . sicer S v A COMP minus_ena . ce S se ni nastavljen ga nastavi prvic JEQ SET STA old_X . sicer poglej ali ima trenutno vozl. manjso pot. razdaljo prov[X] < prov[S] LDA PROV, X . nalozi p. razdaljo tren. vozl. RMO A, T . shrani jo v T reg. RMO S, X . premakni trenutni ix min. vozl. v X za ix naslavljanje LDA PROV, X . nalozi trenutno min razdaljo LDX old_X . obnovi X, vrednost stevca zanke FOR1 COMPR T, A . primerjaj vrednosti tj. ce razdalja ni krajsa preskoci, sicer SET JEQ NEXT JGT NEXT SET RMO X, S . S nastavi na ix vozlisca - trenutna iteracija NEXT RMO X, A COMP table_len ADD #3 RMO A, X JLT FOR1 . ce ni vec vozlisc v okolici koncaj RMO S, A COMP minus_ena JEQ HALT .sicer p. razdaljo shrani kot dejansko in oznaci vozlisce kot obiskano RMO S, X LDA PROV, X STA D, X LDA minus_dva STA PROV, X .nato dodaj vozlisca v okolico oz. posodobi razdalje obstojecih vozlisc v okolici LDX #0 . stevec na 0 FOR2 LDA INPUT_X, X . preveri ali je to povezava ki izvira v vozl. S COMPR A, S JGT NEXT2 . ce ni preskoci JLT NEXT2 .sicer preveri ali je vozlisce ze obiskano LDA PROV, X COMP minus_dva JEQ NEXT2 COMP minus_ena .se se ni obiskano, nastavi vrednost p. razdalje JEQ SET2 RMO X, A 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 LDA D, X RMO A, T LDX old_X LDA INPUT_W, X ADDR T, A STA PROV, X RMO X, A STA PREV, X NEXT2 RMO A, X COMP table_len ADD #3 JLT FOR2 J WHILE HALT J HALT END dijk .vhodni parametri INPUT_V WORD 9 INPUT_E WORD 16 INPUT_X WORD 0 WORD 0 WORD 1 WORD 1 WORD 2 WORD 2 WORD 3 WORD 3 WORD 3 WORD 3 WORD 3 WORD 4 WORD 4 WORD 5 WORD 6 WORD 7 INPUT_Y WORD 1 WORD 2 WORD 2 WORD 3 WORD 6 WORD 3 WORD 6 WORD 8 WORD 7 WORD 5 WORD 4 WORD 1 WORD 5 WORD 7 WORD 8 WORD 8 INPUT_W WORD 8 WORD 12 WORD 13 WORD 25 WORD 21 WORD 14 WORD 12 WORD 16 WORD 12 WORD 8 WORD 20 WORD 9 WORD 19 WORD 11 WORD 11 WORD 9 .pomozne spremenljivke old_X RESW 1 minus_ena WORD X'FFFFFF' minus_dva WORD X'FFFFFE' .najkrajse razdalje D WORD -1 WORD -1 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 PROV WORD -1 WORD -1 WORD -1 WORD -1 WORD -1 WORD -1 WORD -1 WORD -1 WORD -1 last_in EQU * table_len EQU last_in - PROV .indeks zacetnega vozlisca START WORD 0