From 6ca3671d0ed210d5d158fc4e43e2d57aac6329ad Mon Sep 17 00:00:00 2001 From: Neil Webber Date: Fri, 15 Sep 2023 14:43:32 -0400 Subject: [PATCH] jump/embed --- pdpasmhelper.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/pdpasmhelper.py b/pdpasmhelper.py index f4e370a..2be6af9 100644 --- a/pdpasmhelper.py +++ b/pdpasmhelper.py @@ -350,6 +350,23 @@ class InstructionBlock(PDP11InstructionAssembler, AbstractContextManager): def instructions(self): return self._instblock + # this is a convenience that allows a list of words (usually instructions) + # to be "embedded" into an InstructionBlock with a leading jmp .+N + # to jump over it. + def jump_over_and_embed(self, words, /, *, name=None): + """Embed words with leading 'jumpover'; returns offset of words + + If optional name given, creates a label for the words + """ + if name is None: + # an internal label name is generated instead + name = f"__{id(object)}" + + self.jmp(f"{len(words)*2}.(pc)") + words_offs = self.label(name) + for w in words: + self.literal(w) + return words_offs if __name__ == "__main__": import unittest