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 [2024/12/02 12:31] – [Der OS-Rahmen] volkerpz9001:programmieren [2025/12/16 13:44] (aktuell) – [Der OS-Rahmen] volkerp
Zeile 77: Zeile 77:
  ;8 Zeichen, ggf. mit Leerzeichen auffüllen, Null-Byte  ;8 Zeichen, ggf. mit Leerzeichen auffüllen, Null-Byte
  JP AUSF2 ;Sprung zur Kommandoausführung2  JP AUSF2 ;Sprung zur Kommandoausführung2
- DB 'NAME2    ',0 ;Kommandoname2 (im OS-Mode einzugeben)+ DB 'NAME2   ',0 ;Kommandoname2 (im OS-Mode einzugeben)
  ...  ...
  DB 0 ;Kennzeichen OS-Rahmen Ende  DB 0 ;Kennzeichen OS-Rahmen Ende
Zeile 92: Zeile 92:
 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).
  
 +**Programmende**
  
 +Bei Programmende wird im Fehlerfall ein gesetztes Carry-Bit und in Register A ein Fehlercode <> 0 erwartet. Das OS gibt dann eine entsprechende Fehlermeldung aus (s. Doku OS, 2.2.3. Fehlerbehandlung, Tabelle der Fehlercodes). Deswegen sollte ein Programm stets mit 
 +  XOR A ; Cy=0, A=0
 +  RET
 +enden, wenn keine Fehlermeldung erfolgen soll.
 +
 +Alternativen sind
 +  JP 0 (WBOOT)
 +  JP 0F000 (INIT)
 +  LD C,0 & CALL 5 (INIT)
 + 
 ==== Beispiele ==== ==== Beispiele ====
  
Zeile 321: Zeile 332:
 </file> </file>
  
 +
 +==== KCC-Header ====
 +
 +Beispiel 4: KCC-Datei erstellen
 +
 +Das KCC-Datei-Format (-> [[kassettenformate|]]) wird von Emulatoren und und auch beim [[.:software:disk_os|]] genutzt((hier mit Endung COM o.a. statt KCC)). Es gibt einen 128-Byte-Kopfblock, gefolgt vom Speicherabzug.
 +
 +Man kann diesen Kopfblock mit Zusatzprogrammen wie bin2kcc.pl erzeugen oder man macht das gleich im Assembler mit und spart sich so den extra Programmaufruf.
 +
 +<file z80>
 + ifdef kccheader ; KCC-Vorblock gleich mit erzeugen
 +
 + org anfang-80h
 +
 + db 'BOMBER',0,0 ; 8 Zeichen mit 00 auffüllen
 + db 'COM' ; 3 Zeichen mit 00 auffüllen
 + ds 5
 + db 3 ; 3 Parameter (KC85/3+JKCEMU-kompatibel)
 + dw anfang ; Anfangsadresse im Speicher
 + dw ende ; Endadresse im Speicher
 + dw start ; Autostartadresse des Programms (oder 0FFFFh)
 +
 + endif
 +
 + org xxx
 +anfang:
 + ...
 +start:
 + ...
 +
 +ende: equ $
 +
 + end start
 +</file>
 +
 +Die erzeugte Bin-Datei erhält die Endung .KCC und kann dann per Drag&Drop in den Emulator JKCEMU geladen werden oder auf Speichermedien wie USB, SD-Karte, Diskette abgelegt werden (hier ggf. Endung von .KCC in .COM o.ä. ändern, siehe jeweilige Beschreibungen).
 ===== Programmerstellung am PC ===== ===== Programmerstellung am PC =====
  
  • z9001/programmieren.1733142678.txt.gz
  • Zuletzt geändert: 2024/12/02 12:31
  • von volkerp