Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
forth:fgforth:multitasking [2020/11/18 09:39] – [Funktionsweise] volkerp | forth:fgforth:multitasking [2025/07/09 11:21] (aktuell) – [Funktionsweise] volkerp | ||
---|---|---|---|
Zeile 48: | Zeile 48: | ||
Weiterschalten zum nächsten Task.\\ | Weiterschalten zum nächsten Task.\\ | ||
Damit kooperatives Multitasking überhaupt funktioniert, | Damit kooperatives Multitasking überhaupt funktioniert, | ||
- | In allen I/O-Worten ist PAUSE bereits enthalten (KEY), (CR), (PRINT), (EMIT), so dann man in interkativen | + | In allen Basis-I/O-Worten ist PAUSE bereits enthalten |
Bei Tasks ohne I/O muss dagegen PAUSE in den Taskschleifen explizit stehen. | Bei Tasks ohne I/O muss dagegen PAUSE in den Taskschleifen explizit stehen. | ||
Zeile 85: | Zeile 85: | ||
* return stack pointer ist Register IY | * return stack pointer ist Register IY | ||
- | Das F83 ist bereits von vornherein auf Multitasking vorbereitet. Ein kooperatives Multitasking muss beim Taskwechsel so nur 4 Register sichern/ | + | Das F83 ist bereits von vornherein auf Multitasking vorbereitet. Ein kooperatives Multitasking muss beim Taskwechsel so nur 4 Register sichern/ |
Jeder Task hat seinen eigenen User-Variablen-Bereich. Mit den User-Variablen ENTRY und LINK wird eine geschlossene Taskkette (round-robin-Task list) aufgebaut. | Jeder Task hat seinen eigenen User-Variablen-Bereich. Mit den User-Variablen ENTRY und LINK wird eine geschlossene Taskkette (round-robin-Task list) aufgebaut. | ||
Zeile 91: | Zeile 91: | ||
{{: | {{: | ||
+ | |||
+ | Hinweis: der Code ist adress-unabhängig! | ||