CCBASBIG.EXE beta - Version 0.2000.0525.0714 - freeware
Autor: Dietmar Harlos (dharlos@web.de)

Mit diesem MS-DOS-Programm ist es mglich, BASIC-Programme
fr den C-Control-Mikrokontroller bis zu einer Gre von maximal
32000 Byte zu kompilieren. (Der Original-Kompiler von Conrad-
Electronic untersttzt nur Programme bis zu einer Gre von
maximal 8100 Byte.)

Sinn macht das fr all' die Leute, die das Standard-24C65-EEPROM
durch ein greres ersetzt haben und nun an der Grenbeschrnkung
des BASIC-Kompilers scheitern.

Das Programm kann statt des Originalkompilers CCBAS.EXE auch
innerhalb der DOS-IDE (CCE.EXE) benutzt werden.

Ich bernehme keinerlei Garantie, da das Programm CCBASBIG.EXE
wirklich fehlerfrei funktioniert. Da ich nur ein normales EEPROM
auf meiner C-Control-Unit habe, konnte ich das Programm bisher
kaum testen.

Auerdem ist zu beachten, da das Programm in relativ kurzer
Zeit (also "Quick'N'Dirty") entstanden ist. Wer auf detaillierte
Fehlermeldungen wie "Diskette voll", "Pfad existiert nicht" und
dergleichen Wert legt sollte das Programm besser nicht benutzen!

Es sollte beachtet werden, da die TEMP-Environment-Variable den
Namen eines existierenden Verzeichnis enthlt. Auerdem enthlt
das Programm einen Overlay - dieser darf nicht entfernt werden.


Etwas ber die technischen Hintergrnde:
========================================

Wie bereits erwhnt, untersttzt der Original-Kompiler nur die
Kompilierung von BASIC-Programmen bis zu einer maximalen Gre
von 8100 Byte. 

Whrend des Kompilierens speichert der Kompiler die erzeugten
BASIC-Token in einem internen Buffer. Wenn dieser Buffer voll
ist, d.h. das kompilierte BASIC-Programm grer als 8100 Byte
ist, wird die Kompilierung mit der Fehlermeldung "Programm zu lang"
abgebrochen.

Man knnte nun hingehen und einfach die Grenabfrage wegpatchen,
doch dadurch wrde jedes BASIC-Programm, das grer als der Buffer
ist, die hinter dem Buffer stehenden Datenstrukturen berschreiben.
Aus diesem Grund ist diese einfache Lsung leider nicht zu gebrauchen.

Ich bin beim vorliegenden Programm einen anderen Weg gegangen.

Ich habe jede Stelle, an der der Kompiler auf seinen Buffer zu-
greift so verndert, da nun nicht mehr auf den internen Buffer,
sondern auf einen anderen, greren, der auerhalb des eigentlichen
Kompilers liegt, zugegriffen wird. Insgesamt muten sechs
Modifikationen (Patches) durchgefhrt werden. Da der fr die
Vernderungen zur Verfgung stehende Platz leider sehr begrenzt
war, muten zustzliche Subroutinen - auerhalb des Kompilers - die
Aufgabe bernehmen, in den Buffer zu schreiben und aus diesem
zu lesen. Da sich die Lage der Subroutinen und des Buffers bei
jedem Programmstart ndert, mssen auch die Modifikationen
bei jedem Programmstart neu durchgefhrt werden.

CCBASBIG.EXE speichert zunchst eine Original-CCBAS.EXE-Kopie
im Verzeichnis, da durch die TEMP-Environment-Variable (in der
AUTOEXEC.BAT) festgelegt wurde. Falls keine TEMP-Variable existiert
wird in das Root-Verzeichnis des Laufwerkes C: gespeichert.
Anschliessend wird diese Kopie so modifiziert, da der grere
Buffer beim Kompilieren benutzt wird. Dannach wird die gepatchte
CCBAS.EXE-Kopie gestartet und das gewnschte BASIC-Programm
kompiliert. Nach getaner Arbeit wird die gepatchte CCBAS.EXE-Kopie
sofort gelscht (ein Aufruf dieser Kopie wrde vermutlich den
Rechner abstrzen lassen, da Subroutinen aufgerufen werden, die
nicht mehr im Speicher existieren).

brigens ist es nicht erforderlich, da dieses Programm im
gleichen Verzeichnis wie CCBAS.EXE steht. CCBASBIG.EXE enthlt
diese Programmdatei bereits in einem Overlay.


Viel Spa beim C-Controllern!

Dietmar Harlos.









