Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
forth:fgforth:debug [2025/07/09 11:22] – [Beschreibung] volkerp | forth:fgforth:debug [2025/07/21 08:55] (aktuell) – [internes] volkerp | ||
---|---|---|---|
Zeile 19: | Zeile 19: | ||
<Q> bricht die Bearbeitung des Wortes ab und stellt dessen Standartabarbeitung wieder ein | <Q> bricht die Bearbeitung des Wortes ab und stellt dessen Standartabarbeitung wieder ein | ||
- | Hinweis: | + | Hinweis: |
===== GLOSSAR ===== | ===== GLOSSAR ===== | ||
Zeile 136: | Zeile 136: | ||
(Michael Scholz) | (Michael Scholz) | ||
+ | |||
+ | ===== internes ===== | ||
+ | |||
+ | BC ist der instruction pointer (IP) und IY der return stack pointer (RP). | ||
+ | |||
+ | BUG: Das Vokabular, das die Trace-Wörter auf höherer Ebene enthält.\\ | ||
+ | FNEXT: Eine Maschinensprachen-Subroutine, | ||
+ | DNEXT: Eine Kopie von next, die anstelle der normalen ausgeführt wird.\\ | ||
+ | DEBNEXT: Die Debugger-Version von next.\\ | ||
+ | Wenn die IP zwischen <IP und IP> liegt, wird der Inhalt der Ausführungsvariable 'DEBUG ausgeführt. | ||
+ | Zuerst wird die IP auf den Parameterstapel gelegt. Das Wort, auf das 'DEBUG zeigt, kann ein beliebiges Wort auf höherer oder niedriger Ebene sein, solange die zuvor abgelegte IP verworfen wird. Es muss durch den Aufruf von PNEXT beendet werden, um next erneut zu patchen und so die Trace-Funktion weiter auszuführen.\\ | ||
+ | PNEXT patcht Forth' | ||
+ | |||
+ | < | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | FNEXT: (restauriert orig. NEXT) | ||
+ | 5541 21 22 04 | ||
+ | 5544 36 0A LD (HL),0AH | ||
+ | 5546 23 | ||
+ | 5547 36 03 LD (HL),03H | ||
+ | 5549 23 | ||
+ | 554A 36 6F LD (HL),6FH | ||
+ | 554C C9 RET | ||
+ | ---- orig. >NEXT beginnt mit folgenden drei Bytes | ||
+ | 0422 0A | ||
+ | 0423 03 | ||
+ | 0424 6F | ||
+ | |||
+ | DNEXT: | ||
+ | 5557 0A | ||
+ | 5558 03 | ||
+ | 5559 6F | ||
+ | 555A 0A | ||
+ | 555B 03 | ||
+ | 555C 67 | ||
+ | 555D 5E | ||
+ | 555E 23 | ||
+ | 555F 56 | ||
+ | 5560 EB | ||
+ | 5561 E9 | ||
+ | |||
+ | DEBNEXT: | ||
+ | 556E 2A 21 55 | ||
+ | 5571 B7 | ||
+ | 5572 ED 42 SBC HL,BC | ||
+ | 5574 30 23 JR NC,5599H | ||
+ | 5576 2A 2B 55 | ||
+ | 5579 B7 | ||
+ | 557A ED 42 SBC HL,BC | ||
+ | 557C 38 1B JR C,5599H | ||
+ | 557E 3A 35 55 | ||
+ | 5581 3C | ||
+ | 5582 32 35 55 | ||
+ | 5585 FE 02 CP 02H | ||
+ | 5587 20 10 JR NZ,5599H | ||
+ | 5589 97 | ||
+ | 558A 32 35 55 | ||
+ | 558D CD 41 55 | ||
+ | 5590 C5 | ||
+ | 5591 2A 17 55 | ||
+ | 5594 5E | ||
+ | 5595 23 | ||
+ | 5596 56 | ||
+ | 5597 EB | ||
+ | 5598 E9 | ||
+ | 5599 C3 57 55 | ||
+ | |||
+ | PNEXT is | ||
+ | 55A6: LD HL,>NEXT | ||
+ | 55A9: LD DE,DEBNEXT | ||
+ | 55AC: LD (HL),C3 | ||
+ | 55AE: INC HL | ||
+ | 55AF: LD (HL),E | ||
+ | 55B0: INC HL | ||
+ | 55B1: LD (HL),D | ||
+ | 55B2: JP > | ||
+ | 55B5: END | ||
+ | |||
+ | UNBUG is | ||
+ | 55BF: CALL FNEXT | ||
+ | 55C2: JP > | ||
+ | 55C5: END | ||
+ | </ | ||
+ |