[mehr]
 

Einführung

Die Standard-Variablen stehen bei der C-Control bekanntlich im User-RAM (ab Adresse $a1 bis $b8). Wenn der CCBASIC-Compiler für DOS (CCBAS.EXE) oder Windows (CCBAS32.DLL) wie unten beschrieben gepatcht wird, dann kann auch der Speicher hinter dem User-RAM ganz normal über Variablen angesprochen werden. Allerdings wird der Speicherbereich meist auch vom Betriebssystem benutzt und es gibt deshalb bestimmte Dinge zu beachten, wenn die Extra-Variablen verwendet werden. Es ist aber in (fast) jedem Anwendungsfall möglich, rund 12 Byte- oder 6 Wordvariablen zusätzlich "herauszuholen".

[mehr]

Die benutzbaren Variablen

In der folgenden Tabelle ist aufgeführt, unter welchen Umständen die diversen neuen Byte- und Wordvariablen benutzt werden dürfen. Hierbei gibt BYTE- und WORDINDEX die Zahl an, die beim DEFINE-Befehl als Index angegeben wurde (z.B. "DEFINE var BYTE [60]" oder "DEFINE var WORD [35]").
 
BYTEINDEX WORDINDEX ZU BEACHTEN
1 bis 24 1 bis 12 diese Variablen stehen im ganz normalen User-RAM; es gibt nichts zu beachten
25 bis 28 13 bis 14 es kann keine IRQ-BASIC-Interruptroutine benutzt werden; der IRQ-Pin des Prozessors darf nicht verwendet werden, sondern muß immer auf festem Potential liegen!; die Variablen sind gut verwendbar, denn eine Interruptroutine ist ohnehin nur bei der M-Unit benutzbar - und auch dort nur mit Tricks
29 bis 31 15  es darf kein SYS-Befehl benutzt werden - bzw. wenn BYTE [29] nicht verändert wird, dann überschreibt ein SYS die Variablen auf BYTE [30] und BYTE [31]
32 bis 39 17 bis 19 diese Variablen liegen im GOSUB-Stack und sind deshalb nicht verwendbar
40 bis 45 21 bis 22 die Datendatei im seriellen EEPROM darf nicht benutzt werden
46 bis 52 24 bis 26 viele Betriebssystemroutinen benutzen diesen Speicherbereich zur temporären Datenspeicherung; siehe ROM-Listing
53 bis 54 27  es darf nicht in die Datendatei (mittels PRINT#) geschrieben werden 
55 bis 56 28  wird von der RS232 überschrieben; darf nur benutzt werden, wenn RXD auf  festem Potential liegt
57 bis 58 29  viele Betriebssystemroutinen benutzen diesen Speicherbereich zur temporären Datenspeicherung; siehe ROM-Listing
59  wird von der SQR-Funktion benutzt
60  dieses Byte wird offenbar nicht vom Betriebssystem benutzt
61 bis 64  31 bis 32 Code zur Erweiterung der Adressmodi (Pseudo-Adressierungsmodi); nicht verwendbar
65 letztes ueber den I2C-Bus uebertragenes Byte; nicht verwendbar
66 bis 68  34 wird für Zeitberechnungen benutzt; nicht verwendbar
69 bis 76 35 bis 38 hier liegt der Hardwarestack; sehr gut verwendbar wenn keine Assemblerprogramme mittels SYS aufgerufen werden; nur teilweise verwendbar, wenn im Assemblerprogramm mehr als zwei Unterprogrammverschachtelungen auftauchen
77 bis 95  39 bis 47  dieser Teil des Hardwarestacks wird vom Betriebssystem auf jeden Fall benötigt, es sei denn, man schaltet einige Interrupts aus; nicht verwendbar
96 - Options register (OPTR); nicht verwendbar
97 bis 256 49 bis 128 Teil des internen EEPROMs (Adresse $101 bis $1a0); kann nur ausgelesen werden; evt. könnte man hier Parameter speichern, die ein BASIC-Programm nur lesen muß oder die nur selten geändert werden
.
Speziell der Bereich des Hardwarestacks (BYTE [69] bis BYTE [76], bzw. WORD [35] bis WORD [38]) kann sehr gut benutzt werden, um zusätzliche Variablen zu speichern. Wenn allerdings vom SYS-Befehl Gebrauch gemacht wird, dann sollte aufgepaßt werden. Zu beachten ist schließlich noch, daß die Extra-Variablen vom Betriebssystem nach einem Reset unter Umständen nicht initialisiert (d.h. auf Null gesetzt) werden. Das muß im BASIC-Programm geschehen. Außerdem ist aus obenstehender Tabelle ersichtlich, daß ein Schreiben in die falsche Variable das C-Control-System zum Absturz bringen kann. Das Lesen ist aber in jedem Fall erlaubt.

[mehr]

Quelle: Dietmar Harlos, http://ccintern.dharlos.de/mehrvars2.zip, zuletzt abgerufen am 23.Mai 2015

Link: http://ccintern.dharlos.de/forum/lesen.php?eintrag=16318