dijk START 0 .zacetna inicializacija, d=0 LDA #0 LDX START STA D, X STA PROV, X .zacetno vozlisce nima predhodnika LDA minus_ena .neskoncna while zanka WHILE LDS minus_ena . S = -1, hrani vozlisce ki imam min razdaljo v okolici LDX #0 . stevec = 0 FOR1 RMO X, A STA old_X 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 . 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 ADD #3 RMO A, X COMP #table_len 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 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 JGT NEXT2 . ce ni preskoci JLT NEXT2 .sicer preveri ali je sosednje vozlisce ze obiskano LDA INPUT_Y, X . nalozi ix soseda MUL #3 RMO A, X . premakni v X 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 .sicer preveri da je nova p. razdalja manjsa od trenutne . D[S] + w < PROV[Y] 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 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 LDX old_X NEXT2 RMO X, A ADD #3 RMO A, X COMP #table_len 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 old_S 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 .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