Cram Basic in 768 Bytes


Für diejenigen, die das Glück hatten, Ende der achtziger Jahre ihr erstes BASIC-Programm zu schreiben, scheint der 16-Kilobyte-Dolmetscher-Band ganz natürlich zu sein. Dies war nicht immer der Fall, Dolmetscher mit einem Volumen von 8 und 4 Kilobyte sind natürlich mit einem bescheideneren Funktionsumfang bekannt. Aber diesmal schien das Unmögliche möglich zu sein - der Interpreter ist auf 722 Bytes komprimiert. Dies ist weniger als 768, was bedeutet, dass es nicht in vier, sondern in drei 256-Byte-ROM-Chips platziert werden kann. Ja, da waren einige!

Und 768 Bytes sind übrigens 21 (3) mal weniger als 16384.

Der Interpreter ist für den Prozessor 8008 geschrieben, der bei Retrocomputern nicht sehr beliebt ist. Dafür gibt es bereits einen BASIC-Interpreter - SCELBAL, aber er ist 8 Kilobyte groß. Das 8008-Befehlssystem ähnelt dem 8080-Befehlssystem ohne die Hälfte der Befehle. Oder das Z80-Befehlssystem ohne 90% der Anweisungen.

Die erste Version des Interpreters, in der bereits die Wörter GOTO, INPUT, PRINT sowie eine Standardmethode zum Bearbeiten von BASIC-Interpreten enthalten waren, benötigte 570 Byte. Dann wurde die Liste der Wörter auf Folgendes erweitert: FETCH, GOTO, IF, LET, NEW, OUT, PRINT, STOP, VIEW und XECUTE.

Einige von ihnen werden Ihnen seltsam erscheinen. Und die Sache ist, dass dieser Dolmetscher Wörter am ersten Buchstaben erkennt. Daher musste INPUT in FETCH, LIST in VIEW und RUN in XECUTE umgewandelt werden. Aber GOSUB und RETURN sollten überhaupt nicht vorgesehen sein - dann müssten wir über das geplante Volumen hinausgehen.

Der Autor versteht die Benutzer des ebenfalls auf 8008 ausgeführten MCM / 70-Laptops, der mit einem Doppelkassettenspieler ausgestattet und mit seinen Ein-Buchstaben-Befehlen in APL-Sprache programmiert ist.

Das Projekt zusammen mit dem Emulator ist hier unter der MIT-Lizenz verfügbar. Der Autor hat bei 8008 kein echtes Eisen. Sie können die Assembler-Quelle und das Kompilierungsergebnis auch separat mit Kommentaren herunterladen.

Der einfachste Weg, ein ganzes Projekt mit GitHub zu erstellen, ist die Verwendung von NETBEANS 8.2. Sie benötigen außerdem SDL2. Zum Zusammenstellen eines Assemblers ist ein AS-Makro- Assembler erforderlich.

Source: https://habr.com/ru/post/de450632/


All Articles