Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
forth:fgforth:multitasking [2020/11/18 09:39] – [Funktionsweise] volkerpforth: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, muss in jedem Task regelmäßig PAUSE aufgerufen werden. Mit PAUSE wird der nächste Task aktiv. Damit kooperatives Multitasking überhaupt funktioniert, muss in jedem Task regelmäßig PAUSE aufgerufen werden. Mit PAUSE wird der nächste Task aktiv.
-In allen I/O-Worten ist PAUSE bereits enthalten (KEY), (CR), (PRINT), (EMIT), so dann man in interkativen Tasks PAUSE nicht direkt einfügen muss.+In allen Basis-I/O-Worten ist PAUSE bereits enthalten (KEY), (CONSOLE), (PRINT), BUFFER, BLOCK ) und damit indirekt in (EMIT), (CR), "." etc., so dann man in interaktiven Tasks PAUSE nicht direkt einfügen muss.
 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/restaurieren: SP (parameter stack pinter), RP (return stack pointer), IP (interpreter pointer) und UP (user area pointer). Das erledigen die Worte PAUSE und RESTART.+Das F83 ist bereits von vornherein auf Multitasking vorbereitet. Ein kooperatives Multitasking muss beim Taskwechsel so nur 4 Register sichern/restaurieren: SP (parameter stack pointer), RP (return stack pointer), IP (interpreter pointer) und UP (user area pointer). Das erledigen die Worte PAUSE und RESTART.
  
 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:
  
 {{:forth:fgforth:mtask_fgforth.jpg?400|}}\\ Bild nach „Inside F83“, leicht modifiziert {{:forth:fgforth:mtask_fgforth.jpg?400|}}\\ Bild nach „Inside F83“, leicht modifiziert
 +
 +Hinweis: der Code ist adress-unabhängig!
  
  • forth/fgforth/multitasking.1605692394.txt.gz
  • Zuletzt geändert: 2020/11/18 09:39
  • von volkerp