started up asm

This commit is contained in:
aljazbrodar. 2025-12-18 13:49:58 +01:00
parent ef273790b8
commit acce30cea1
45 changed files with 1167 additions and 728 deletions

View file

@ -1,186 +0,0 @@
dijk START 0
.zacetna inicializacija, d=0
LDA #0
LDX ZAC
STA D, X
STA PROV, X
.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_len2
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
last EQU *
.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
table_len2 EQU last - INPUT_W
.indeks zacetnega vozlisca * 3
ZAC WORD 0

36
ass1/bonus/dijkstra.log Normal file
View file

@ -0,0 +1,36 @@
***** Section <default> *****
Stats: size=454 blocks=454 symbols=25 literals=0 relocations=0
Blocks
name start size #ins #dir #sto
<default> 00000 001C6 86 77 2
Symbols
name hex dec scope kind type description
D 00018D 397 local relative data label
FOR1 000012 18 local relative code label
FOR2 00006B 107 local relative code label
HALT 0000E8 232 local relative code label
INPUT_E 0000EE 238 local relative data label
INPUT_V 0000EB 235 local relative data label
INPUT_W 000151 337 local relative data label
INPUT_X 0000F1 241 local relative data label
INPUT_Y 000121 289 local relative data label
NEXT 000045 69 local relative code label
NEXT2 0000D8 216 local relative code label
PROV 0001A8 424 local relative data label
SET 000043 67 local relative code label
SET2 0000BB 187 local relative code label
WHILE 00000C 12 local relative code label
ZAC 0001C3 451 local relative data label
dijk 000000 0 exported relative code label
last 000181 385 local absolute notlabel *
last_in 0001C3 451 local absolute notlabel *
minus_dva 00018A 394 local relative data label
minus_ena 000187 391 local relative data label
old_S 000184 388 local relative data label
old_X 000181 385 local relative data label
table_len 00001B 27 local absolute notlabel last_in-PROV
table_len2 000030 48 local absolute notlabel last-INPUT_W
Literals
label definition
Relocations
address length flag symbol

186
ass1/bonus/dijkstra.lst Normal file
View file

@ -0,0 +1,186 @@
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

18
ass1/bonus/dijkstra.obj Normal file
View file

@ -0,0 +1,18 @@
Hdijk 0000000001C6
T0000001E0100000721BD0FA1840FA19C6F2178050000AC100F216A03A18E2B216A33
T00001E1E20252B216733201FAC402B215C33201503A177AC05AC4103A170072146A0
T00003C1E50332005372002AC14AC10190003AC0129001B3B2FC0AC402B213033208E
T00005A1EAC4103A1490FA12B0321250FA140050000AC100F211103A07E210003A004
T0000781E37205D3B205A03A0A0210003AC0103A11F0720F52B20FB3320462B20F233
T0000961E2023AC4103A0F00720E11BA0AEAC0503A079210003AC0103A0F80720CEA0
T0000B41E053320203B201DAC4103A0CD0720BE1BA08BAC0503A056210003AC01AC50
T0000D21E0FA0D30720A9AC10190003AC012900303B2F863F2F243F2FFD0000090000
T0000F01E100000000000000000010000010000020000020000030000030000030000
T00010E1E030000030000040000040000050000060000070000010000020000020000
T00012C1E030000060000030000060000080000070000050000040000010000050000
T00014A1E0700000800000800000800000C00000D00001900001500000E00000C0000
T000168191000000C00000800001400000900001300000B00000B000009
T0001871EFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
T0001A51EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
T0001C303000000
E000000