Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
tiny:software:baserw40 [2022/08/04 06:39] – gelöscht - Externe Bearbeitung (Unknown date) 127.0.0.1 | tiny:software:baserw40 [2024/02/02 14:08] (aktuell) – [Beispiele] volkerp | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== Basic-Erweiterung ====== | ||
+ | |||
+ | Das [[elektronik: | ||
+ | 2021 habe ich mich mit dieser Thematik beschäftigt und eine erste Erweiterung für das ES4.0 geschrieben: | ||
+ | |||
+ | ===== Download ===== | ||
+ | |||
+ | * {{ : | ||
+ | |||
+ | ===== ES 4.0 ===== | ||
+ | |||
+ | Die Erweiterung liegt als Binärdatei vor und muss vorab in den Speicher geladen werden ( nach 8000h ) | ||
+ | |||
+ | Mit | ||
+ | 1 PROC SETRR[8, | ||
+ | werden die neuen Prozeduren dem BASIC bekannt gemacht. Danach können die neuen Befehle genutzt werden.((Im Emulator JTCEMU ist die Nutzung der neuen Befehle im Texteditor erst ab Version 2.1 möglich.)) | ||
+ | |||
+ | **Hinweis**: | ||
+ | |||
+ | |||
+ | Durch die neuen Befehle werden die Programme auch leichter lesbar (z.B. DRAW statt CALL%, CLS, AT, ...) | ||
+ | |||
+ | < | ||
+ | Grafik-Befehle | ||
+ | -------------- | ||
+ | |||
+ | PROC PLOT[X, | ||
+ | F=PTEST[X, | ||
+ | PROC DRAW[X1, | ||
+ | PROC CIRCLE[X, | ||
+ | |||
+ | Achtung: es werden die Variablen X,Y,Z und V,W (draw) mitgenutzt! | ||
+ | s. ES4.0-Beschreibung. Diese dürfen im eigenen Programm daher nicht genutzt werden! | ||
+ | |||
+ | Text-Befehle | ||
+ | ------------ | ||
+ | |||
+ | PROC CLS Bildschirm löschen | ||
+ | PROC COLOR[FG, | ||
+ | PROC AT[X, | ||
+ | bzw. OSETRR[%5B, | ||
+ | |||
+ | 10 PROC CLS | ||
+ | 20 PROC COLOR[15,0] | ||
+ | 30 PROC AT[13, | ||
+ | |||
+ | DATA-Befehle | ||
+ | ------------ | ||
+ | |||
+ | Anstelle Schlüsselwort DATA wird REM genutzt. | ||
+ | Die Daten sind in REM-Zeilen abzulegen, ohne Leerzeichen. | ||
+ | 10 REM 11,22,33 | ||
+ | |||
+ | RESTORE[10] setzt den Daten-Zeiger auf Zeile 10 | ||
+ | der Zeiger wird nicht automatisch auf die nächste Zeile gesetzt, | ||
+ | es muss wieder RESTORE erfolgen | ||
+ | Y=READ Funktion, | ||
+ | gesetzt ist und setzt den Daten-Zeiger auf den folgenden Wert. | ||
+ | |||
+ | </ | ||
+ | |||
+ | ===== Beispiele ===== | ||
+ | |||
+ | < | ||
+ | |||
+ | Beispiel Punkte setzen/ | ||
+ | |||
+ | 1 PROC SETRR[8, | ||
+ | 10 PROC CLS | ||
+ | 20 PROC PLOT[200, | ||
+ | 30 PROC PLOT[100, | ||
+ | 40 PRINT PTEST[100, | ||
+ | |||
+ | |||
+ | Farb- und Programmbeispiel JU+TE 07/1990, Seiten 84 | ||
+ | |||
+ | 10 PROC PTC[12] | ||
+ | 20 LET A=0, | ||
+ | 30 LET V=A, | ||
+ | 40 LET V=C,W=D; CALL %17F7 | ||
+ | 50 LET X=A,Y=D; CALL %17F7 | ||
+ | 60 LET V=A,W=B; CALL %17F7 | ||
+ | 70 LET A=A+2, | ||
+ | 80 IF A<160 THEN GOTO 30 | ||
+ | 90 END | ||
+ | |||
+ | neu (besser lesbar) | ||
+ | |||
+ | 1 PROC SETRR[8, | ||
+ | 10 PROC CLS | ||
+ | 20 LET A=0, | ||
+ | 30 LET F=E/3 | ||
+ | 35 PROC DRAW[A, | ||
+ | 40 PROC DRAW[C, | ||
+ | 50 PROC DRAW[C, | ||
+ | 60 PROC DRAW[A, | ||
+ | 70 LET A=A+2, | ||
+ | 80 IF A<160 THEN GOTO 30 | ||
+ | 90 END | ||
+ | |||
+ | Beispiel Testbild (analog zu R. Weidlich' | ||
+ | |||
+ | 1 PROC SETRR[8, | ||
+ | 10 PROC COLOR[2, | ||
+ | 15 REM GITTERNETZ | ||
+ | 20 LET I=1 | ||
+ | 30 PROC DRAW[16*I, | ||
+ | 40 LET I=I+1; IF I<=19 THEN GOTO 30 | ||
+ | 50 LET I=1 | ||
+ | 60 PROC DRAW[0, | ||
+ | 70 LET I=I+1; IF I<=15 THEN GOTO 60 | ||
+ | 100 REM KREISE | ||
+ | 110 PROC CIRCLE[160, | ||
+ | 120 PROC CIRCLE[24, | ||
+ | 130 PROC CIRCLE[296, | ||
+ | 140 PROC CIRCLE[24, | ||
+ | 150 PROC CIRCLE[296, | ||
+ | 200 REM Farbfelder | ||
+ | 210 LET C=0, | ||
+ | 215 PROC COLOR[0,C] | ||
+ | 220 PROC AT[A, B]; | ||
+ | 230 PROC AT[A, B+1]; | ||
+ | 240 LET C=C+15, | ||
+ | 250 IF I=8 THEN LET B=7,A=12 | ||
+ | 260 IF I<16 THEN GOTO 215 | ||
+ | 300 REM Zeichensatz | ||
+ | 310 PROC COLOR[15,0] | ||
+ | 330 LET C=0 | ||
+ | 340 PROC AT[C $MOD 16 + 12, C/16 + 10] | ||
+ | 345 IF C<32 THEN PROC PTC[14];REM VORAB ESC | ||
+ | 350 PROC PTC[C] | ||
+ | 360 C=C+1;IF C<128 THEN GOTO 340 | ||
+ | 400 REM TEXT | ||
+ | 410 PROC COLOR[0,15] | ||
+ | 420 PROC AT[13, | ||
+ | 430 PROC AT[18, | ||
+ | 9999 PROC AT[0, | ||
+ | |||
+ | |||
+ | Beispiel Data | ||
+ | |||
+ | Datas in REM-Zeilen ablegen, ohne Leerzeichen | ||
+ | |||
+ | 1 PROC SETRR[8, | ||
+ | 5 PROC RESTORE[10] | ||
+ | 10 REM 11,22,33 | ||
+ | 20 PRINT READ,READ | ||
+ | 30 LET Y=READ; | ||
+ | |||
+ | R | ||
+ | 00011 00022 | ||
+ | | ||
+ | </ | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ===== ES 2k ===== | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Die Erweiterung **baserw2k** liegt als Binärdatei vor und muss vorab in den Speicher geladen werden ( nach 8000h ) | ||
+ | |||
+ | Mit | ||
+ | 1 PROC SETRR[8, | ||
+ | werden die neuen Prozeduren dem BASIC bekannt gemacht. Danach können die neuen Befehle genutzt werden. | ||
+ | |||
+ | Durch die neuen Befehle werden die Programme leichter lesbar | ||
+ | |||
+ | < | ||
+ | PSET[X, | ||
+ | PRES[X, | ||
+ | PTEST[X, | ||
+ | T=INKEY aktuell gedrückte Taste | ||
+ | CLS Bildschirm löschen | ||
+ | AT[X, | ||
+ | RESTORE[Zeile] Datenzeile festlegen | ||
+ | Y=READ Daten aus REM-Zeilen lesen | ||
+ | |||
+ | Übersetzung vorhandenen Codes | ||
+ | ----------------------------- | ||
+ | |||
+ | LET X=.., | ||
+ | LET X=.., | ||
+ | LET X=.., | ||
+ | |||
+ | CALL %C56;LET A=GETR[%6D]$A%7F; | ||
+ | |||
+ | CALL %8DD PROC CLS | ||
+ | PROC SETR[%5B, | ||
+ | </ | ||
+ | |||
+ | ===== Beispiele ===== | ||
+ | |||
+ | < | ||
+ | |||
+ | 64x64 Bildpunkte, (0,0) ist links unten | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | x -> | ||
+ | |||
+ | |||
+ | Test Grafik | ||
+ | |||
+ | 1 PROC SETRR[8, | ||
+ | 10 PROC CLS | ||
+ | 20 PROC PSET[10,10] | ||
+ | 30 PROC PSET[0,0] | ||
+ | 40 PROC PSET[63,63] | ||
+ | 100 PRINT PTEST[10, | ||
+ | 110 PROC PRES[10,10] | ||
+ | 120 PRINT PTEST[10, | ||
+ | 9999 END | ||
+ | |||
+ | Test INKEY | ||
+ | |||
+ | 1 PROC SETRR[8, | ||
+ | 10 PROC CLS | ||
+ | 20 X=INKEY; | ||
+ | 30 GOTO20 | ||
+ | 9999 END | ||
+ | |||
+ | Test AT | ||
+ | |||
+ | 1 PROC SETRR[8, | ||
+ | 10 PROC CLS | ||
+ | 20 PROC AT[0, | ||
+ | 30 PROC AT[1, | ||
+ | 40 PROC AT[2, | ||
+ | 9999 END | ||
+ | |||
+ | + | ||
+ | 00 | ||
+ | 11 | ||
+ | 24 | ||
+ | END 9999 | ||
+ | |||
+ | Test Data s.o. | ||
+ | |||
+ | -- Quadrat-Spirale | ||
+ | |||
+ | 1 PROC SETRR[8, | ||
+ | 5 REM SPIRALE | ||
+ | 10 PROC CLS | ||
+ | 15 REM A=X LINKS, B=X RECHTS, C=Y UNTEN, D=Y OBEN | ||
+ | 20 LET A=0, | ||
+ | 25 REM OBEN (0,63) -> (63,63), X=A->B | ||
+ | 30 LET X=A,A=A+2 | ||
+ | 40 PROC PSET[X,D] | ||
+ | 50 LET X=X+1; IF X<=B THEN GOTO 40 | ||
+ | 55 REM RECHTS (63,63) -> (63,0), Y=D->C | ||
+ | 60 LET Y=D,D=D-2 | ||
+ | 70 PROC PSET[B,Y] | ||
+ | 80 LET Y=Y-1; IF Y>=C THEN GOTO 70 | ||
+ | 85 REM UNTEN (63,0) -> (0,0), X= B->A | ||
+ | 90 LET I=B,B=B-2 | ||
+ | 100 PROC PSET[X,C] | ||
+ | 110 LET X=X-1; IF X>=A THEN GOTO 100 | ||
+ | 115 REM LINKS (0,0) -> (0,63), Y= C->D | ||
+ | 120 LET Y=C,C=C+2 | ||
+ | 130 PROC PSET[A,Y] | ||
+ | 140 LET Y=Y+1; IF Y<=D THEN GOTO 130 | ||
+ | 150 IF A<B THEN IF C<D THEN GOTO 30 | ||
+ | 9998 X=GTC | ||
+ | 9999 END | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== ES 2.3 ===== | ||
+ | |||
+ | Im ES2.3 lässt sich die baserw4.0 direkt bzw. mit kleinen Abstrichen direkt nutzen. Beispiel: Testbild | ||
+ | |||
+ | {{: | ||