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/05/31 09:13] (aktuell) – [Download] 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[zeile, | ||
| + | bzw. OSETRR[%5B, | ||
| + | (Achtung: in der ersten Version sind bei AT die Parameter vertauscht!) | ||
| + | |||
| + | 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[B, | ||
| + | 230 PROC AT[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/16 + 10, C $MOD 16 + 12] | ||
| + | 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[19, | ||
| + | 430 PROC AT[20, | ||
| + | 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 | ||
| + | |||
| + | {{: | ||