Magic Disk 64

home to index to html: MD9309-UTILITIES-MINI_TASK-SYSTEM.html
            Mini-Task-System            
       Interrupts - leichtgemacht       
----------------------------------------
Bei  dem  Mini-Task-System (im Folgenden
"MTS"), handelt es sich um  eine  kleine
Basic-Erweiterung, mit der Sie bis zu 84
kleine  Assemblerprogramme  gleichzeitig
ablaufen lassen können.                 
Das Programm  liegt  auf  der  Rückseite
dieser  MD  in  zwei  Versionen vor: Das
File "MINI-TASK-SYSTEM" kann normal  mit
",8" geladen und mittels 'RUN' gestartet
werden.    Hieraufhin   ist   die   MTS-
Basicerweitung aktiv. Das  zweite  File,
namens  "MINI-TASK-SYS.$9" wird absolut,
also  mit  ",8,1"  geladen.  Die  Basic-
Erweiterung  wird  hierbei  mit SYS36864
($9000) gestartet. Egal welche der  bei-
den  Versionen Sie benutzen - nach Akti-
vierung stehen Ihnen die vier  folgenden
Basic-Befehle zusätzlich zur Verfügung: 
1) "<TASK,X,Y,ADR"                      
Hiermit  installieren  Sie  einen  neuen
Task.  Der  Parameter "X" gibt dabei die
Nummer des Tasks an, den  Sie  verwenden
möchten.  Hier sind Werte zwischen 0 und
83 erlaubt. "Y" steht für  die  Art  des
Tasks. Da das MTS die einzelnen Program-
me per Interrupt aufruft,  steht  dieser
Wert  für  den  Interrupt, der für diese
Routine  benutzt  werden  soll.  Folgede
Werte sind erlaubt:                     
0: Task  abschalten. Die Adresse ist da-
   bei  unwichtig  (muß  aber  angegeben
   werden).                             
1: Task soll im IRQ laufen. Hierbei wird
   er in den  normalen  Systeminterrupt,
   der  ca. 60 Mal in der Sekunde aufge-
   rufen  wird,  'eingeklinkt'.  Ein  so
   eingebundender  Task läuft dann immer
   zyklisch, also in  regelmäßigen  Zei-
   tabständen, ab.                      
2: Task  soll im NMI laufen. Der NMI ist
   ein besonderer Interrupt,  der  immer
   ausgelöst  wird,  wenn die 'RESTORE'-
   Taste gedrückt wird.  Sie  können  so
   ganz  einfach  z.B.  eine  Hilfsseite
   anzeigen  lassen,  wenn  diese  Taste
   gedrückt  wird (die Abfrage der Taste
   entfällt).                           
3: Task  ist  ein BRK-Interrupt. Er wird
   immer dann ausgelöst, wenn der Assem-
   blerbefehl "BRK" ausgeführt wird. Auf
   diese  Weise können Sie sich auf ein-
   fache Weise einen  Assembler-Debugger
   schreiben.                           
Der Wert "ADR" des Task-Befehls muß  die
Startadresse  des  Programms  enthalten,
das aufgerufen werden soll. Demnach kön-
nen  Sie  lediglich  Assembler-Programme
als Tasks einbinden (oder  evtl.  kompi-
lierte BASIC-Programme).                
2) "<TIMER,X"                           
Dieser  Befehl  ändert das High-Byte des
Timer-Werts, der den  IRQ  steuert.  Sie
können dadurch die Geschwindigkeit aller
Tasks,  die  vom  Typ  1  sind,  ändern.
Zulässig sind Werte zwischen 0 und  255.
Je kleiner der Wert, desto schneller die
IRQ-Tasks, aber auch desto langsamer das
Hauptprogramm.  Desweiteren  sollten Sie
keine zu kleinen Werte benutzen, da  Ih-
nen  sonst  der  Rechner abstürzen kann.
Wie klein der Wert  nicht  werden  darf,
hängt von der Anzahl und Dauer der Tasks
ab,  die  aufgerufen  werden sollen. Als
Richtwert sollte  der  Wert  jedoch  nie
kleinerals  10  sein.  Um den Normalwert
wiederherzustellen, müssen Sie  für  "X"
den Wert 64 angeben.                    
3) "<LIST"                              
Dieser  Befehl  listet  alle vorhandenen
Tasks auf dem  Bildschirm  auf.  Hierbei
wird  pro Zeile zunächst die Tasknummer,
der TYP (IRQ,NMI,BRK), sowie die Starta-
dresse des dazugehörigen Programms ange-
zeigt.                                  
4) "<KILL"                              
Dieser   Befehl   schaltet   die    MTS-
Basicerweiterung  ab.  Nach Deaktivieren
der Erweiterung, können Sie  sie  jeder-
zeit mit "SYS36864" wieder reaktivieren.
HINWEISE                                
* Sie  können  generell  beliebig  viele
  Tasks des gleichen Typs verwenden (so-
  fern  es  insgesamt  nicht mehr als 84
  sind). In dem  Fall,  daß  es  mehrere
  Tasks  gleichen  Typs  gibt, so werden
  Sie der Reihe nach hintereinander auf-
  gerufen.  Haben  Sie also die Tasks 1,
  10 und 20 als IRQ-Tasks definiert,  so
  werden  Sie in dieser Reihenfolge auch
  ausgeführt.  Möchten  Sie  einen   nun
  vierten  IRQ-Task nach Task 10 und vor
  Task 20 aufrufen  lassen,  so  sollten
  Sie  ihn  mit einer Nummer zwischen 11
  und 19 versehen.                      
* Leider  hat  der  "<LIST"-Befehl einen
  kleinen Fehler: Wird das  MTS  nämlich
  zum  ersten  Mal gestartet, so kann es
  passieren,  daß,  durch   Speichermüll
  eine  Reihe  von unsinigen Tasks ange-
  zeigt wird (selbst wenn Sie nicht aus-
  geführt  werden).  War  das MTS vorher
  schon einmal aktiv, wurde es aber zwi-
  schenzeitig ab- und wieder eingeschal-
  tet, so zeigt der "<LIST"-Befehl immer
  noch die zuvor installierten Tasks  an
  (obwohl  sie unter Umständen ebenfalls
  nicht  mehr  ausgeführt  werden).  Zur
  Sicherheit  sollten Sie jedesmal, wenn
  Sie das MTS aktivieren  die  Taskliste
  mittels folgender Schleife löschen:   
  10 FOR I=0 TO 83                      
  20 <TASK,I,0,0                        
  30 NEXT                               
* Auch  der  "<KILL"-Befehl  ist  leider
  fehlerhaft.  Wird  er  aufgerufen,  so
  wird die BASIC-Erweiterung  zwar  ent-
  fernt  (die  Befehle werden dann nicht
  mehr erkannt), jedoch sind die initia-
  lisierten  Tasks  immer noch aktiv und
  laufen weiterhin. Wer dann sichergehen
  möchte und sie  abschalten  will,  der
  sollte das Programm "MTS-OFF" von die-
  ser MD laden (absolut, mit ",8,1") und
  mittels  SYS37888  (für  Assemblerpro-
  grammierer  "JSR  $9400") aufrufen. Es
  setzt  die  Interrupt-Vektoren,  sowie
  die Timerwerte wieder in den Normalzu-
  stand zurück und schaltet die  laufen-
  den  Tasks  somit  gänzlich ab. Anders
  geht es auch, indem man die oben schon
  erwähnte  Schleife  zum  Löschen   der
  Task-Liste  verwendet,  und den Timer-
  wert  ggf.  mit  Hilfe  des  "<TIMER"-
  Befehls auf 64 zurücksetzt.           
* Zuletzt  noch ein paar technische Wor-
  te: das MTS  wurde  mit  dem  Programm
  "B-E-E"  (="Basic-Erweiterung-Editor")
  von der Magic-Disk, Ausgabe 5/92,  er-
  stellt,  und  kann mit diesem Programm
  auch  noch  erweitert  werden  (hierzu
  bitte  die  Version "MINI-TASK-SYS.$9"
  verwenden.  Desweiteren  sollte  ange-
  merkt  werden, daß bei der Aktivierung
  das  Ende  des  BASIC-Speichers   nach
  $8FFF (dez. 36863) verschoben wird, so
  daß  für  Basic-Programme  4KB weniger
  zur Verfügung stehen. Die  Erweiterung
  sollte  deshalb  IMMER ganz am Anfang,
  bzw.  noch  vor  Start,   des   BASIC-
  Programms  aufgerufen werden, da durch
  die Verschiebung alle bisher definier-
  ten Variablen gelöscht werden!        
* Die  Speicherbelegung des MTS ist wie-
  folgt:                                
  $9000-$93FF  MTS                      
  $9400-$9423  MTS-OFF   (wenn  geladen,
               sonst unbenutzt)         
  $9424-$9EFF  unbenutzt                
  $9F00-$9FFF  Speicher für Task-Liste  
                                    (ub)



Valid HTML 4.0 Transitional Valid CSS!