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
z9001:programmieren [2016/04/21 10:13] – [Der OS-Rahmen] volkerpz9001:programmieren [2020/09/09 11:17] (aktuell) – [Der OS-Rahmen] volkerp
Zeile 66: Zeile 66:
 ==== Der OS-Rahmen ==== ==== Der OS-Rahmen ====
  
-Damit eigene Programme vom OS aus gestartet werden können, wird ein spezieller Code benötigt, der sogenannte OS-Rahmen. Damit erscheinen Programme als transiente Kommandos im OS und können über den Programmnamen aufgerufen werden. Außerdem können Parameter übergeben werden (s. z.B. Code von OS-SAVE).+Damit eigene Programme vom OS aus gestartet werden können, wird ein spezieller Code benötigt, der sogenannte OS-Rahmen. Damit erscheinen Programme als transiente Kommandos im OS und können über den Kommandoname aufgerufen werden. Außerdem können Parameter übergeben werden (s. z.B. Code von OS-SAVE).
  
 Ein OS-Rahmen muss auf einer integralen 100H-Grenze (300h ... 0BF00h) beginnen. Es können beliebig viele Kommandos in einem OS-Rahmen angegeben werden.  Ein OS-Rahmen muss auf einer integralen 100H-Grenze (300h ... 0BF00h) beginnen. Es können beliebig viele Kommandos in einem OS-Rahmen angegeben werden. 
Zeile 86: Zeile 86:
 **Kommandozeile** **Kommandozeile**
  
-Die eingegebene Kommandozeile wird in CONBU abgelegt, am Ende wird ein Nullbyte angefügt. Mit GVAL werden die einzelnen Parameter nacheinander geholt, d.h. nach INTLN kopiert und in CONBU wird der Parameter durch Leerzeichen ersetzt. Nach Start des Programms ist der Programmname bereits nicht mehr in CONBU lesbar.+Die eingegebene Kommandozeile wird im Puffer CONBU abgelegt, am Ende wird ein Nullbyte angefügt. Mit GVAL werden die einzelnen Parameter nacheinander geholt, d.h. nach INTLN kopiert und in CONBU wird der Parameter durch Leerzeichen ersetzt. Nach Start des Programms ist der Programmname bereits nicht mehr in CONBU lesbar. 
 + 
 +**erneuter Aufruf**
  
 Ein Warmstart kann erkannt werden, indem beim Einsprung HL auf den Einsprungswert verglichen wird (AUSF, AUSF2,..). Ist er gleich, wurde das Programm nicht von Kassette geladen (oder vom Megamodul), sondern ist bereits im Speicher abgelegt und wurde von dort gestartet (mittels Routine CPROM). Ein Warmstart kann erkannt werden, indem beim Einsprung HL auf den Einsprungswert verglichen wird (AUSF, AUSF2,..). Ist er gleich, wurde das Programm nicht von Kassette geladen (oder vom Megamodul), sondern ist bereits im Speicher abgelegt und wurde von dort gestartet (mittels Routine CPROM).
Zeile 178: Zeile 180:
 </file> </file>
  
-Testprogramm für Parameterübergabe+Beispiel 3: Testprogramm für Parameterübergabe TESTPARA 
 + 
 +Es werden Parametertyp, Parameterwert, eventuelle Fehler sowie der Inhalt des Buffers CONBU nach jedem Holen des nächsten Parameters mit GVAL angezeigt.
  
 <file z80> <file z80>
Zeile 199: Zeile 203:
  
  jp para   jp para
-; db "TESTPARA", 0 + db "TESTPARA", 0
- db "      ", 0+
  db 0  db 0
  
Zeile 321: Zeile 324:
  
 Bei großen Programmen ist es leichter diese am PC zu schreiben und zu assemblieren. Ich nutze dafür den  Bei großen Programmen ist es leichter diese am PC zu schreiben und zu assemblieren. Ich nutze dafür den 
-[[:sonstiges:assembler#arnold-assembler]]. Kleine in Perl geschriebene Hilfstools unterstützen den Prozess und erzeugen z.B. gleich tap-Dateien, die im Emulator geladen werden können oder mit KCSAVE {{:z9001:kcsave.rar|}} als Audiosignal am realen KC geladen werden können.+[[:sonstiges:assembler#arnold-assembler]]. Kleine in Perl geschriebene Hilfstools unterstützen den Prozess und erzeugen z.B. gleich tap-Dateien, die im Emulator geladen werden können oder mit KCSAVE {{:programme:kcsave.rar|}} als Audiosignal am realen KC geladen werden können.
  
 {{:sonstiges:emulat4.gif}} {{:sonstiges:emulat4.gif}}
  • z9001/programmieren.1461233596.txt.gz
  • Zuletzt geändert: 2016/04/21 10:13
  • von volkerp