★ APPLICATIONS ★ PROGRAMMATION ★ CALL 0 (SCHNEIDER AKTIV SPECIAL) ★ |
Call 0 (Schneider Aktiv Special) | Applications Programmation |
Maschinensprachenprogrammierer werden's wissen: Wenn man sich z.B. bei dieser Zeile 40 CALL HIMEM vertippt und statt einem ‘M‘ versehentlich ein ‘N‘ eingibt, ist das Dilemme groß, denn der Computer springt dann nicht wie gewünscht die höchste von Basic belegbare Adresse an, sondern Speicherzelle 0, da er ‘HINEM‘ (oder ‘HIMEN‘) als Variable ansieht, die aber den Wert 0 hat, falls sie vorher noch nicht gebraucht wurde. Und was bei einem CALL 0 passiert, weiß ja wohl jeder — nämlich ein System-Reset, was eventuell verheerende Folgen haben kann. Stellen Sie sich mal vor, Sie geben ein Programm ein, sind fast fertig, vertippen sich, ohne es zu merken, und auf einmal ist nach dem Starten des Programms alles verschwunden und der CPC befindet sich im Einschaltzustand! Das dreiteilige Programm “CALL 0“ verhindert dieses. Geben Sie zunächst korrekt Listing 1 (abspeichern mit “CALL0.BAS“) oder, falls Sie einen Assembler besitzen sollten, Listing 2 ein (SAVEn mit “CALL0.ASM“ und Opcod e mit “CALL0.BIN“). Danach Listing 3 eintippen und mit “CALL0.L0A“ auf Disk/Kassette bringen. Starten Sie Listing 1 im Falle, daß es statt Listing 2 eingegeben wurde. Es erstellt den MC-Code ab Speicherzelle &AF00 im RAM des CPC. Das hat folgende Vorteile:
Danach Listing 3 starten. Dieses Programm lädt nicht nur den MC-Teil. Es POKEt auch in Zeile 50 die Zellen 0,1,2 mit neuen Werten, so daß der CPC bei einem versehentlichen CALL 0 sofort die MC-Routine anspringt; wobei ich abschließend hoffe, daß sie auch für Maschinensprache-Anfänger durch die großzügigen Kommentare in Listing 2 zu verstehen ist, die hinter den Semicolons der einzelnen Zeilen stehen, jedoch nicht eingegeben werden müssen. Variablenliste: adr Anfangsadresse der MC-Routine Strukturierung der Programme: a) Listing 1: 10-1 50 Copyright-Vermerk b) Listing 2: 40-100 RAM-Einsprünge und Startadresse setzen c) Listing 3 ist nicht unterteilbar (ein Block)!
|