Browse Source

+ allow writing 6502 assembler file with -sr (imaginary instructions) and indirect indexed addressing mode instructions

Nikolay Nikolov 1 month ago
parent
commit
dd726b8d58
1 changed files with 5 additions and 2 deletions
  1. 5 2
      compiler/mos6502/agsdas6500.pas

+ 5 - 2
compiler/mos6502/agsdas6500.pas

@@ -441,14 +441,17 @@ unit agsdas6500;
                         writer.AsmWrite(']');
                         writer.AsmWrite(']');
                     end;
                     end;
                 end
                 end
-              else if is_6502_zero_page_register(o.ref^.base) and (o.ref^.index=NR_Y) then
+              else if o.ref^.index=NR_Y then
                 begin
                 begin
                   if assigned(o.ref^.symbol) then
                   if assigned(o.ref^.symbol) then
                     internalerror(2025102305);
                     internalerror(2025102305);
                   if o.ref^.offset<>0 then
                   if o.ref^.offset<>0 then
                     internalerror(2025102306);
                     internalerror(2025102306);
                   writer.AsmWrite('[');
                   writer.AsmWrite('[');
-                  writer.AsmWrite(tostr(get_6502_zero_page_register_address(o.ref^.base)));
+                  if is_6502_zero_page_register(o.ref^.base) then
+                    writer.AsmWrite(tostr(get_6502_zero_page_register_address(o.ref^.base)))
+                  else
+                    writer.AsmWrite(std_regname(o.ref^.base));
                   writer.AsmWrite('],y');
                   writer.AsmWrite('],y');
                 end
                 end
               else
               else