Browse Source

+ support [reg+Y] addressing in the 6502 assembler writer

Nikolay Nikolov 1 month ago
parent
commit
a28e8b3dfa
1 changed files with 10 additions and 0 deletions
  1. 10 0
      compiler/mos6502/agsdas6500.pas

+ 10 - 0
compiler/mos6502/agsdas6500.pas

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