00000            dijk        START   0    
                  . zacetna inicializacija, d=0
00000  010000                LDA     #0    
00003  0721BD                LDX     ZAC    
00006  0FA184                STA     D,X    
00009  0FA19C                STA     PROV,X    
                  . neskoncna while zanka
0000C  6F2178    WHILE       LDS     minus_ena    . S = -1, hrani vozlisce ki imam min razdaljo v okolici
0000F  050000                LDX     #0    . stevec = 0
00012  AC10      FOR1        RMO     X,A    
00014  0F216A                STA     old_X    . shrani vrednost X-a
00017  03A18E                LDA     PROV,X    . nalozi potencialno razdaljo sosednjega vozlisca v okolici
0001A  2B216A                COMP    minus_ena    
0001D  332025                JEQ     NEXT    . ce ze obiskano=-2 ali neobiskano=-1 preskoci vozlisce
00020  2B2167                COMP    minus_dva    
00023  33201F                JEQ     NEXT    
00026  AC40                  RMO     S,A    . sicer S v A
00028  2B215C                COMP    minus_ena    . ce S se ni nastavljen ga nastavi prvic
0002B  332015                JEQ     SET    . sicer poglej ali ima trenutno vozl. manjso pot. razdaljo prov[X] < prov[S]
0002E  03A177                LDA     PROV,X    . nalozi p. razdaljo tren. vozl.
00031  AC05                  RMO     A,T    . shrani jo v T reg.
00033  AC41                  RMO     S,X    . premakni trenutni ix min. vozl. v X za ix naslavljanje
00035  03A170                LDA     PROV,X    . nalozi trenutno min razdaljo
00038  072146                LDX     old_X    . obnovi X, vrednost stevca zanke FOR1
0003B  A050                  COMPR   T,A    . primerjaj vrednosti tj. ce razdalja ni krajsa preskoci, sicer SET
0003D  332005                JEQ     NEXT    
00040  372002                JGT     NEXT    
00043  AC14      SET         RMO     X,S    . S nastavi na ix vozlisca - trenutna iteracija
00045  AC10      NEXT        RMO     X,A    
00047  190003                ADD     #3    
0004A  AC01                  RMO     A,X    
0004C  29001B                COMP    #table_len    
0004F  3B2FC0                JLT     FOR1    
                  
                  . ce ni vec vozlisc v okolici koncaj
00052  AC40                  RMO     S,A    
00054  2B2130                COMP    minus_ena    
00057  33208E                JEQ     HALT    
                  . sicer p. razdaljo shrani kot dejansko in oznaci vozlisce kot obiskano
0005A  AC41                  RMO     S,X    
0005C  03A149                LDA     PROV,X    
0005F  0FA12B                STA     D,X    
00062  032125                LDA     minus_dva    
00065  0FA140                STA     PROV,X    
                  
                  . nato dodaj vozlisca v okolico oz. posodobi razdalje obstojecih vozlisc v okolici
00068  050000                LDX     #0    . stevec na 0
0006B  AC10      FOR2        RMO     X,A    
0006D  0F2111                STA     old_X    
00070  03A07E                LDA     INPUT_X,X    . preveri ali je to povezava ki izvira v vozl. S
00073  210003                MUL     #3    . pomnozi s 3 da lahko primerjamo s S, ki steje ix WORDa
00076  A004                  COMPR   A,S    
00078  37205D                JGT     NEXT2    . ce ni preskoci
0007B  3B205A                JLT     NEXT2    
                  . sicer preveri ali je sosednje vozlisce ze obiskano
0007E  03A0A0                LDA     INPUT_Y,X    . nalozi ix soseda
00081  210003                MUL     #3    
00084  AC01                  RMO     A,X    . premakni v X
00086  03A11F                LDA     PROV,X    . nalozi sosedovo potencialno razdaljo
00089  0720F5                LDX     old_X    . obnovi X
0008C  2B20FB                COMP    minus_dva    . poglej ce je ze obiskan
0008F  332046                JEQ     NEXT2    
00092  2B20F2                COMP    minus_ena    . ce se ni obiskan, nastavi vrednost p. razdalje
00095  332023                JEQ     SET2    
                  . sicer preveri da je nova p. razdalja manjsa od trenutne
                  . D[S] + w < PROV[Y]
00098  AC41                  RMO     S,X    
0009A  03A0F0                LDA     D,X    
0009D  0720E1                LDX     old_X    
000A0  1BA0AE                ADD     INPUT_W,X    
000A3  AC05                  RMO     A,T    
000A5  03A079                LDA     INPUT_Y,X    
000A8  210003                MUL     #3    
000AB  AC01                  RMO     A,X    
000AD  03A0F8                LDA     PROV,X    
000B0  0720CE                LDX     old_X    
000B3  A005                  COMPR   A,T    
000B5  332020                JEQ     NEXT2    
000B8  3B201D                JLT     NEXT2    
                  
000BB  AC41      SET2        RMO     S,X    
000BD  03A0CD                LDA     D,X    
000C0  0720BE                LDX     old_X    
000C3  1BA08B                ADD     INPUT_W,X    
000C6  AC05                  RMO     A,T    
000C8  03A056                LDA     INPUT_Y,X    
000CB  210003                MUL     #3    
000CE  AC01                  RMO     A,X    
000D0  AC50                  RMO     T,A    
000D2  0FA0D3                STA     PROV,X    
000D5  0720A9                LDX     old_X    
000D8  AC10      NEXT2       RMO     X,A    
000DA  190003                ADD     #3    
000DD  AC01                  RMO     A,X    
000DF  290030                COMP    #table_len2    
000E2  3B2F86                JLT     FOR2    
                  
000E5  3F2F24                J       WHILE    
                  
000E8  3F2FFD    HALT        J       HALT    
000EB                        END     dijk    
                  
                  
                  . vhodni parametri
000EB  000009    INPUT_V     WORD    9    
000EE  000010    INPUT_E     WORD    16    
000F1  000000    INPUT_X     WORD    0    
000F4  000000                WORD    0    
000F7  000001                WORD    1    
000FA  000001                WORD    1    
000FD  000002                WORD    2    
00100  000002                WORD    2    
00103  000003                WORD    3    
00106  000003                WORD    3    
00109  000003                WORD    3    
0010C  000003                WORD    3    
0010F  000003                WORD    3    
00112  000004                WORD    4    
00115  000004                WORD    4    
00118  000005                WORD    5    
0011B  000006                WORD    6    
0011E  000007                WORD    7    
00121  000001    INPUT_Y     WORD    1    
00124  000002                WORD    2    
00127  000002                WORD    2    
0012A  000003                WORD    3    
0012D  000006                WORD    6    
00130  000003                WORD    3    
00133  000006                WORD    6    
00136  000008                WORD    8    
00139  000007                WORD    7    
0013C  000005                WORD    5    
0013F  000004                WORD    4    
00142  000001                WORD    1    
00145  000005                WORD    5    
00148  000007                WORD    7    
0014B  000008                WORD    8    
0014E  000008                WORD    8    
00151  000008    INPUT_W     WORD    8    
00154  00000C                WORD    12    
00157  00000D                WORD    13    
0015A  000019                WORD    25    
0015D  000015                WORD    21    
00160  00000E                WORD    14    
00163  00000C                WORD    12    
00166  000010                WORD    16    
00169  00000C                WORD    12    
0016C  000008                WORD    8    
0016F  000014                WORD    20    
00172  000009                WORD    9    
00175  000013                WORD    19    
00178  00000B                WORD    11    
0017B  00000B                WORD    11    
0017E  000009                WORD    9    
00181            last        EQU     *    
                  
                  . pomozne spremenljivke
00181  000000    old_X       RESW    1    
00184  000000    old_S       RESW    1    
00187  FFFFFF    minus_ena   WORD    X'FFFFFF'    
0018A  FFFFFE    minus_dva   WORD    X'FFFFFE'    
                  . najkrajse razdalje
0018D  FFFFFF    D           WORD    -1    
00190  FFFFFF                WORD    -1    
00193  FFFFFF                WORD    -1    
00196  FFFFFF                WORD    -1    
00199  FFFFFF                WORD    -1    
0019C  FFFFFF                WORD    -1    
0019F  FFFFFF                WORD    -1    
001A2  FFFFFF                WORD    -1    
001A5  FFFFFF                WORD    -1    
                  . provisional razdalje (okolica), -2 = done, -1 neobiskan
001A8  FFFFFF    PROV        WORD    -1    
001AB  FFFFFF                WORD    -1    
001AE  FFFFFF                WORD    -1    
001B1  FFFFFF                WORD    -1    
001B4  FFFFFF                WORD    -1    
001B7  FFFFFF                WORD    -1    
001BA  FFFFFF                WORD    -1    
001BD  FFFFFF                WORD    -1    
001C0  FFFFFF                WORD    -1    
001C3            last_in     EQU     *    
001C3            table_len   EQU     last_in-PROV    
001C3            table_len2  EQU     last-INPUT_W    
                  . indeks zacetnega vozlisca * 3
001C3  000000    ZAC         WORD    0    
