This page (revision-41) was last changed on 28-Jan-2024 11:14 by Andreas Tartz 

This page was created on 25-Apr-2022 12:15 by Andreas Tartz

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Page revision history

Version Date Modified Size Author Changes ... Change note
41 28-Jan-2024 11:14 8 KB Andreas Tartz to previous

Page References

Incoming links Outgoing links

Version management

Difference between version and

At line 3 changed one line
Ein Esperanto für Computer.
… ein Esperanto für Computer.
At line 5 changed one line
BASICODE wurde von niederländischen Computerspezialisten um 1979 entwickelt, um einen einheitlichen Sprachstandard für die Programmiersprache [BASIC|http://en.wikipedia.org/wiki/BASIC] festzulegen.
Es wurde von niederländischen Computerspezialisten um 1979 entwickelt, um einen einheitlichen Sprachstandard für die Programmiersprache [BASIC|http://en.wikipedia.org/wiki/BASIC] festzulegen.
At line 9 changed one line
Die bis zum Jahre 1991 in den Niederlanden bestehende Stiftung "BASICODE" unter dem Vorsitz von Klaas Robert hat dem Rundfunk der DDR die Rechte zur Anwendung übertragen.
Die bis zum Jahre 1991 in den Niederlanden bestehende Stiftung (NOS) unter dem Vorsitz von Klaas Robert hat dem Rundfunk der DDR die Rechte zur Anwendung übertragen.
At line 16 changed 3 lines
!!Der Atari-Bascoder V1.1 für ATARI 800XL/XE 600XL 130XE
von Andreas Graf,
!!Der Atari-Bascoder
V1.1 von Andreas Graf,
At line 23 changed one line
!!Anleitung für Atari:
!!Bascoder für ATARI 800XL/XE 600XL 130XE
At line 25 changed one line
* [atari_basicode.pdf] ; aus:"BASICODE mit Programmen auf Schallplatte für Heimcomputer", Prof. Völz, 1990, 208 S. & 1 Datenplatte
!Allgemeines
Da bislang für die ATARI-Rechner kein Bascoder zur Verfügung stand, waren bei der Entwicklung zwei Aspekte wesentlich:
Erstens sollte das Programm schnell entwickelt werden, um möglichst bald den ATARI-Nutzern die Mitarbeit bei BASICODE zu ermöglichen und den Software- und Datenbestand von BASICODE zugänglich zu machen.
Zweitens sollte die verwendete Hardware so einfach wie möglich und die Änderungen an Geräten so gering wie möglich sein.
Unter diesen Prioritäten hat an einigen Stellen die "Schönheit" des Programms etwas gelitten. An der Zuverlässigkeit und Portabilität wurden jedoch keine Abstriche gemacht.
Auf zwei Variablen der Hardware-Änderung wird am Ende eingegangen.
At line 31 added 5 lines
!Software
Für den ATARI-Rechner stehen vor allem das ATARI-BASIC und das [Turbo-BASIC XL] zur Verfügung. Beide BASIC-Dialekte weichen in mehreren Punkten stark von den üblichen MICROSOFT-BASIC und allen daraus abgeleiteten Varianten ab. Das Grundprinzip dieser Interpreter liegt jedoch der Struktur von BASICODE zugrunde. Deshalb kamen die o.g. ATARI-BASIC nicht für BASICODE in Betracht. Nun gibt es zwar für den ATARI auch ein MICROSOFT-BASIC, aber dieses ist so groß, so schwerfällig und teilweise fehlerbehaftet, dass sich das BASICODE-Testprogramm (17K) nicht mal mehr laden, geschweige denn abarbeiten ließ. Deshalb wurde für den ATARI ein bei anderen Rechnern unüblicher Weg beschritten.
Es wurde insgesamt für BASICODE ein spezieller BASIC-Interpreter geschrieben, der zugleich die Arbeitsweise von BASICODE(Lesen und Schreiben von BASICODE-Programmen, Bearbeiten von BASICODE-Datenbeständen usw.) als seinen normalen Standart ansieht.
Dieser Interpreter bearbeitet alle in BASICODE zugelassenen BASIC-Befehle und -Funktionen.
Er kann aber auch als neuer BASIC-Interpreter selbständig benutzt werden. Dabei gibt es die folgenden Besonderheiten:
At line 28 changed 2 lines
!ATR-Images
* [xdos_basicode v11.atr] ; Atari-Bascoder V1.1 von Andreas Graf
!AND; NOT; OR
Die Operationen werden bitweise ausgeführt.
At line 31 removed 58 lines
! Ladeanweisung:
Bitte die Diskette mit OPTION booten. Danach LOAD"D:ROOT:BC3" eingeben. Nach dem READY ist BASICODE betriebsbereit. Nun kann mit LOAD"D:*.BC3 ein BASICODE-3 Programm geladen und mit RUN gestartet werden. Um wieder ins DOS zu gelangen bitte POKE 9,1 eigeben und RESET drücken. Einen DOS-Befehl gibt es leider nicht. Um sich das Directory einer Diskette anzusehen, ist etwas Programmcode erforderlich. Einfach Zeile 15 mit folgendem Code hinzufügen:
15 O. "D:*.*",6,0:FORI=1TO36:D$=R.(0):PRINTD$;" ";:NEXTI\\
Diese kann dann mit Goto 15 angesprungen werden und stört den weiteren BASICODE-Betrieb nicht.\\
!Referenz
* [Wikipedia: BASICODE (deutsch)|https://de.wikipedia.org/wiki/BASICODE?oldformat=true]
* [Wikipedia: BASICODE (englisch)|https://en.wikipedia.org/wiki/BASICODE?oldformat=true]
* [BASICODE auf www.joyce.de (deutsch)|https://www.joyce.de/basicode/index.htm]
!!Images
[{Image src='screen.jpg' width=640 height=380 }]
ATARI-BASICODE startscreen\\
\\
!!In BASICODE gültige Befehle
\\
| ABS | AND | ASC | ATN | CHR$ | COS\\
| DATA | DIM | EXP | FOR | GOSUB | GOTO\\
| IF | INPUT | INT | LEFT$ | LEN | LET\\
| LOG | MID$ | NEXT | NOT | ON | OR\\
| PRINT | READ | REM | RESTORE | RETURN | RIGT$ \\
| SGN | SIN | SQR | STEP | TAB | TAN \\
| THEN | TO | VAL\\
| + | - | * | / | ^ | = \\
| < | > | <= | >= | <> | \\
In begrenztem Umfang ist DEF FN möglich.
\\
!!Abweichungen bei den erlaubten BASIC-Befehlen
!AND
Es darf nur auf logische Ausdrücke (Vergleiche) bezogen werden. Die zugehörigen Ausdrücke sollten immer geklammert werden. Also z.B. (X>45) AND (X<70). Zuweisungen von logischen Ergebnissen an eine Variable sind zur besseren Übersicht und Verkürzung zulässig. Also z.B.:
Q=(A=5)AND(B=0):IF Q THEN...
!ASC
Nicht alle Computer liefern in allen Fällen exakt den gleichen Wert. Das ist jedoch für die Buchstaben weitgehend erfüllt. Die Nutzung der Funktion sollte daher mit Umsicht und für nur ein Zeichen erfolgen (Besonderheiten des Coomodore beachten!).
!CHR$
Bei Werten, die kleiner als 32 sind (Steuerzeichen), empfiehlt sich Vorsicht. Die Besonderheiten des Commodore sind zu berücksichtigen.
!DEF FN NAME
Nur in der einfachen Form mit einer Variablen anwendbar.
!DIM
Hat immer vor der Nutzung von Feldern zu erfolgen. In BASICODE sind maximal 2 Dimensionen, also z.B. DIM A(3,15), zugelassen. Das Feld beginnt stets mit dem nullten Element, also A(0,0).
!FOR...TO...STEP...NEXT
Die Schleife wird mindestens einmal durchlaufen. STEP und der Wert danach dürfen weggelassen werden, dann beträgt die Schrittweise 1. Nach NEXT muss immer die zugehörige Variable stehen. Zu einem FOR ist auch nur ein NEXT zulässig. Das Heißt, die Schleife kann nur an einer einzigen Stelle verlassen werden. Aus der Schleife darf nicht herausgesprungen werden. Vorzeitiges Verlassen über eine Bedingung erfolgt durch Setzen des Laufparameters auf seinen Endwert und Sprung zum NEXT.
!GOSUB
Es muss eine Zahl und keine Variable als Zeilennummer folgen. Eine nicht existierende Zeilenzahl darf nicht verwendet werden. IF...GOSUB ist nicht zulässig, richtig ist IF...THEN GOSUB.
!Goto
Wie GOSUB, mit Ausnahme von 20 und 950. Auch wenn bei den meisten Rechnern IF...THEN GOTO <Zeilennummer> bzw. IF...GOTO <Zeilennummer> funktioniert, soll konsequenterweise IF...THEN <Zeilennummer> benutzt werden.
At line 90 changed one line
Kann nur eine Variable übernehmen. INPUT A,B ist nicht zugelassen.
Der Befehl darf nur im Programm benutzt werden, im Direktmodus ist die Zuweisung zu benutzen. INPUT lässt(erweitert gegenüber BASICODE-3) mehrere Variablen, die mit Komma getrennt sind, zu.
At line 92 changed 2 lines
!LOG
Bezieht sich auf die Basis e. Es ist zu beachten, dass in einigen Rechnern hierfür auch LN existiert, was nicht verwendet werden darf. Bei solchen Rechnern kann sich LOG fälschlicherweise auf den dekadischen Logarithmus beziehen. Die Bascoder sorgen für die richtige Umkodierung.
!RESTORE
Ebenfalls über BASICODE-3 hinaus, ist hinter RESTORE auch eine Zeilennummer zulässig.
Weiterhin seien alle Funktionen und Kommandos vom neuen ATARI-Interpreter, die zusätzlich zu dem in diesem Abschnitt beschriebenen BASICODE-3-Befehlsvorrat aufgenommen wurden oder abweichendes Verhalten zeigen, alphabetisch aufgeführt:
At line 95 changed 2 lines
!MID$
Erfordert drei oder zwei Werte. MID$(A$,5) ist erlaubt.
!C.
!C.(I)
Funktion zum Schließen einer Datei. Sie nimmt einen logischen Wert an, =0 falls o.k., <>0 im Fehlerfall. I ist die logische Kanalnummer des Files (s. O.Befehl).
At line 98 changed 2 lines
!NEXT
Verlangt die Laufvariable, siehe FOR.
!CL.
Laden von BASICODE. Hier wird bei den folgendenKommandos der Punkt Pflicht. Dieses Kommando führt folgende Schritte durch:
1. Das Programm ab Zeile 1000 wird gelöscht
2. Die Datasette wird eingeschaltet. Bei Ertönen des BASICODE-Vorlauftons ist eine Taste zu drücken, danach wird das Programm eingelesen. Während dieser Zeit ist der Bildschirm abgeschaltet. Soll der Lesevorgang abgebrochen werden, ist START zu drücken.
3. Nach Beendigung des Lesens wird der Recorder vom Rechner angehalten, das Bild erscheint wieder. Jetzt setzt der Interpreter das eingelesene Programm in seine interne Darstellung um, dies kann bei langen Programmen schon einige -zig Sekunden dauern. Mit READY wird das Ende der Aktion angezeigt. Ein eventuell aufgetretener Prüfsummenfehler wird erst jetzt gemeldet. Dies gilt für den Normalfall, also sofern der Lesefehler nicht so folgenschwer war, dass die Grundstruktur des Programms zerstört wurde.
At line 101 changed 2 lines
!NOT
Verlangt Klammern, siehe AND.
!CLR
Alle numerischen Variablen werden auf Null und die Zeichenketten auf leer gestellt. Reservierter Speicher wird freigegeben.
At line 104 changed 2 lines
!ON
Nach ON darf die Variable nur die zulässigen Werte annehmen, also von 1 bis zur Anzahl der nach GOTO bzw. GOSUB stehenden Adressen.
!CONT
Die Programmführung wird fortgesetzt, sofern die Unterbrechung zuvor durch die BREAK-Taste oder eine STOP- bzw. END-Anweisung ausgelöst wurde. Sie wird an dem Punkt wieder aufgenommen, an dem die Unterbrechung erfolgt ist. Nach einem Fehler mit Halt kann ebenfalls die Bearbeitung fortgesetzt werden.
At line 107 changed 2 lines
!OR
Siehe Bemerkungen unter AND.
!CS.
Das vorhandene Programm wird ab Zeile 1000 im BASICODE-Format auf Kassette gespeichert.
At line 110 changed 2 lines
!PRINT
Zur Formatierung existieren nur das Komma, Semikolon und TAB. Mehrere Druckaufträge hinter PRINT müssen generell durch ein Semikolon getrennt werden. Es wird empfohlen, TAB oder Komma durch GOSUB 110 zu ersetzen.
!D.
!D.I,J,K
Zeichnet im grafischen Betrieb eine Linie der Farbe K vom Punkt des letzten P.-Befehls oder dem Endpunkt des letzten D.-Befehls zum angegebenen Punkt I,J,K. Zur Bedeutung von I,J und K siehe den Befehl P.
At line 113 changed 2 lines
!REM
Es gibt nur REM und keine alternativen Zeichen, wie ! oder `. In einer REM-Zeile sollte kein Doppelpunkt verwendet werden.
!End
Die Programmführung wird beendet, alle Dateien werden geschlossen und zum Befehlsniveau zurückgekehrt.
At line 116 changed 2 lines
!RESTORE
Existiert nur ohne Zeilenzahl.
!F
!F.(X)
Bringt die Anzahl von Bytes zurück, die nicht vom Programm genutzt werden. F.(X) verdichtet den Speicher mit der garbage collection, dies kann aber bis zu einer Minute dauern!
At line 119 changed 2 lines
!TAB
TAB(0) ist nicht erlaubt. Vorsicht! Es gibt einige Computer, die mit 1 zu zählen beginnen. Für die meisten ist die erste Position 0. Subroutine GOSUB 110 befreit von dieser Unsicherheit.
!G
!G.
Schaltet Grafikbetrieb ein. In ATARI-BASICODE wird nur ein Grafikmodus verwendet. Er entspricht Modus 24 in ATARI-BASIC. Es werden 192 Zeilen je 320 Bildpunkte dargestellt. Der Hintergrund ist weiß, der Vordergrund schwarz.
At line 122 changed 3 lines
!VAL
Nimmt bei nicht rein numerischen Argumenten in verschiedenen Rechnern unterschiedliche Werte an.
\\
.
.
.
At line 126 removed one line
!!Kurze Übersicht der BASICODE-GOSUB-Routinen
At line 128 changed one line
Die rechts stehenden BASIC-Befehle zeigen Ähnlichkeiten auf und sollen den Überblick erleichtern. Sie wurden in erster Linie aus dem KC-BASIC gewählt.
!ATR-Images
* [xdos_basicode v11.atr] ; Atari-Bascoder V1.1 von Andreas Graf
At line 130 changed 29 lines
| 20 Programmstart, System_Reset, Variable löschen usw.| CLEAR\\
|100 Text-Modus einschalten und Bildschirm löschen| CLS\\
|110 Cursor auf die Position HO,VE| LOCATE\\
|120 Cursor-Position in HO,VE zurückholen| VGET, POS\\
|150 Auffälliges Anzeigen von SR$; rechts und links 3 Spaces| kein\\
|200 Daten einer eventuell gedrückten Taste in IN$ und IN| INKEY$\\
|210 wie 200, jedoch mit Warten auf Tastendruck| kein\\
|220 Holen des Zeichens aus Schirmposition HO,VE auf IN| VGET$\\
|250 Erzeugen eines kurzen Aufmerksamkeitstones| BEEP\\
|260 Zufallsvariable in RV mit 0<=RV<1| RND\\
|270 Ausführen von garbage collection und Speicherplatz in FR| FRE(X)
|280 Aus- bzw. Einschalten der STOP/BRK-Taste FR=0 bzw. 1| kein\\
|300 SR wird ohne Space in SR$ gewandelt| STR$\\
|310 wie 300, jedoch als Zahl mit CT und CN formatiert| USING\\
|330 Alle Kleinbuchstaben in SR$ in Großbuchstaben wandeln| kein\\
|350 Übergabe von SR$ an den Drucker| PRINT#2\\
|360 In neue Zeile mit Drucker (CRLF)| kein\\
|400 Erzeugung eines Tons gemäß SV,SD und SP| SOUND\\
|450 Warten von maximal SD*0.1s auf einen Tastendruck| PAUSE\\
|500 Eröffnen eines File mit Namen NF$ gemäß NF| OPEN\\
|540 Aus dem File wird ein String an IN$ übergeben| LOAD*\\
|560 SR$ wird in das File geschrieben| SAVE*
|580 man schließe den Bestand mit Code NF ab| CLOSE\\
|600 Graphischen Betrieb und Bildschirm löschen| SREEN\\
|620 Setzen eines Punktes in die Position HO,VE mit Farbe CN| PSET\\
|630 Zeichnen einer Linie zum Punkt HO,VE in Farbe CN| LINE\\
|650 SR$ an der Position HO,VE anzeigen(Grafik-Mode)| kein\\
|950 Beenden des BASICODE-Mode| END\\
\\
! Ladeanweisung:
At line 160 changed 5 lines
!!In BASICODE verbotene Variablen
* 1. Alle Variablen, die mit dem Buchstaben O beginnen
* 2. AS,AT,DI,DI$,D$$,EI,EI$,EL,ER,FN,GO,GR,IF,LN,SQ,SQ$,ST,TI,TI$ und TO.
* 3. PI, enthält aber nicht den Zahlenwert 3.14159.
\\
Bitte die Diskette mit OPTION booten. Danach LOAD"D:ROOT:BC3" eingeben. Nach dem READY ist BASICODE betriebsbereit. Nun kann mit LOAD"D:*.BC3 ein BASICODE-3 Programm geladen und mit RUN gestartet werden. Um wieder ins DOS zu gelangen bitte POKE 9,1 eigeben und RESET drücken. Einen DOS-Befehl gibt es leider nicht.
At line 166 removed one line
!!Im Bascoder verwendete Variablen mit besonderer Bedeutung
At line 168 removed one line
* A,CN,CT,FR,HG,HO,IN,IN$,NF,NF$,RV,SD,SP,SR,SR$,SV,VE und VG.
At line 172 removed 6 lines