@@ -18,19 +18,22 @@ procedure WordPokeSymbol(Symbol: String; Value: Word); |
| 18 |
function PeekSymbol(Symbol: String): Integer; |
18 |
function PeekSymbol(Symbol: String): Integer; |
| 19 |
procedure PokeSymbol(Symbol: String; Value: Byte); |
19 |
procedure PokeSymbol(Symbol: String; Value: Byte); |
| 20 |
|
20 |
|
| 21 |
function ParseSymFile(F: String): TSymbolMap; |
21 |
procedure ParseSymFile(F: String); |
| 22 |
|
22 |
|
| 23 |
implementation |
23 |
implementation |
| 24 |
|
24 |
|
| 25 |
uses machine; |
25 |
uses machine; |
| 26 |
|
26 |
|
| 27 |
function ParseSymFile(F: String): TSymbolMap; |
27 |
procedure ParseSymFile(F: String); |
| 28 |
var |
28 |
var |
| 29 |
SL: TStringList; |
29 |
SL: TStringList; |
| 30 |
SA: TStringArray; |
30 |
SA: TStringArray; |
| 31 |
S: String; |
31 |
S: String; |
| 32 |
begin |
32 |
begin |
| 33 |
Result := TSymbolMap.Create; |
33 |
if Assigned(SymbolTable) then |
|
|
34 |
SymbolTable.Free; |
|
|
35 |
|
|
|
36 |
SymbolTable := TSymbolMap.Create; |
| 34 |
SL := TStringList.Create; |
37 |
SL := TStringList.Create; |
| 35 |
try |
38 |
try |
| 36 |
SL.LoadFromFile(F); |
39 |
SL.LoadFromFile(F); |
@@ -41,7 +44,7 @@ begin |
| 41 |
|
44 |
|
| 42 |
for S in SL do begin |
45 |
for S in SL do begin |
| 43 |
SA := S.Split(' '); |
46 |
SA := S.Split(' '); |
| 44 |
Result.Add(SA[1], StrToInt('x'+SA[0].Substring(3))); |
47 |
SymbolTable.Add(SA[1], StrToInt('x'+SA[0].Substring(3))); |
| 45 |
end; |
48 |
end; |
| 46 |
finally |
49 |
finally |
| 47 |
SL.Free; |
50 |
SL.Free; |