Robotrontechnik-Forum

Registrieren || Einloggen || Hilfe/FAQ || Suche || Mitglieder || Home || Statistik || Kalender || Admins Willkommen Gast! RSS

Robotrontechnik-Forum » Technische Diskussionen » Sinus und Kosinus mit KC Forth 3.1 berechnen » Themenansicht

Autor Thread - Seiten: -1-
000
03.06.2017, 15:33 Uhr
_lars

Avatar von _lars

Außer Pseudozufallszahlen kann man auch hin und wieder den Sinus (bzw. Kosinus) eines Winkels gut für irgendwelche Berechnungen brauchen. Ich habe also mal nach Sinus für Forth gesucht und das hier gefunden:

https://wiki.forth-ev.de/doku.php/words:sinus

und weil es so schön ist angepasst auf KC Forth portiert:


Quellcode:

0000 VARIABLE sinuslookup
0349 ,  0698 ,  1045 ,
1392 ,  1736 ,  2079 ,  2419 ,
2756 ,  3090 ,  3420 ,  3746 ,
4067 ,  4384 ,  4695 ,  5000 ,
5299 ,  5592 ,  5878 ,  6157 ,
6428 ,  6691 ,  6947 ,  7193 ,
7431 ,  7660 ,  7880 ,  8090 ,
8290 ,  8480 ,  8660 ,  8829 ,
8988 ,  9135 ,  9272 ,  9397 ,
9511 ,  9613 ,  9703 ,  9781 ,
9848 ,  9903 ,  9945 ,  9976 ,
9994 ,  10000 ,

-1 CONSTANT TRUE
0 CONSTANT FALSE
: NEGATE -1 * ;
: SINUS@ 2 * sinuslookup + @ ;
: SIN ( GRAD -- SINUS )
  DUP 0< >R ABS
  360 MOD  
  DUP 180 >
  IF 180 - TRUE >R
  ELSE FALSE >R ENDIF
  DUP  90 >
  IF 180 SWAP - ENDIF
  2 / SINUS@  
  R> IF NEGATE ENDIF
  R> IF NEGATE ENDIF ;
: COS 90 + SIN ;



Diese Version hat aus Gründen der begrenzten Größe der Screens in KC Forth nur 45 Tabellenwerte (statt 90 wie im Original) und deshalb auch die unschöne Division durch zwei vor dem Lookup. Aber was soll’s, es funktioniert hinreichend gut.

Hier noch mal der Code zum direkten Einfügen (rechte Maustaste im JKCEMU) des Codes nach dem Starten von Forth:


Quellcode:

1 SCR !
EDITOR
0 P  0000 VARIABLE sinuslookup
1 P  0349 ,  0698 ,  1045 ,
2 P  1392 ,  1736 ,  2079 ,  2419 ,
3 P  2756 ,  3090 ,  3420 ,  3746 ,
4 P  4067 ,  4384 ,  4695 ,  5000 ,
5 P  5299 ,  5592 ,  5878 ,  6157 ,
6 P  6428 ,  6691 ,  6947 ,  7193 ,
7 P  7431 ,  7660 ,  7880 ,  8090 ,
8 P  8290 ,  8480 ,  8660 ,  8829 ,
9 P  8988 ,  9135 ,  9272 ,  9397 ,
10 P 9511 ,  9613 ,  9703 ,  9781 ,
11 P 9848 ,  9903 ,  9945 ,  9976 ,
12 P 9994 ,  10000 ,
FORTH
1 LOAD

2 SCR !
EDITOR
0 P  -1 CONSTANT TRUE
1 P  0 CONSTANT FALSE
2 P  : NEGATE -1 * ;
3 P  : SINUS@ 2 * sinuslookup + @ ;
4 P  : SIN ( GRAD -- SINUS )
5 P    DUP 0< >R ABS
6 P    360 MOD  
7 P    DUP 180 >
8 P    IF 180 - TRUE >R
9 P    ELSE FALSE >R ENDIF
10 P   DUP  90 >
11 P   IF 180 SWAP - ENDIF
12 P   2 / SINUS@  
13 P   R> IF NEGATE ENDIF
14 P   R> IF NEGATE ENDIF ;
15 P : COS 90 + SIN ;
FORTH
2 LOAD

3 SCR !
EDITOR
0 P : SINCURVE
1 P   12 EMIT 7 INKP
2 P   320 0 DO ?TERMINAL
3 P     IF LEAVE ENDIF
4 P     1 I
5 P     I 360 320 */ SIN
6 P     128 10000 */ 128 +
7 P     PIX
8 P   LOOP ;
FORTH
3 LOAD

SINCURVE

Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
001
03.06.2017, 16:35 Uhr
volkerp
Default Group and Edit
Avatar von volkerp

Hallo Lars,

schön, dass sich mal wieder jemand mit FORTH beschäftigt. In den 80ern und Anfang der 90er war das die Sprache meiner Wahl.

Den Quellcode zum FORTH und mehr findest du bei mir unter

http://hc-ddr.hucki.net/wiki/doku.php/forth:kc85-figforth
--
VolkerP

http://hc-ddr.hucki.net
(Z9001, Z1013, LC-80, ...)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
002
03.06.2017, 16:45 Uhr
karsten
Default Group and Edit
Avatar von karsten

Ich habe in den späten 80ern in einem Pseudo-Forth ohne Interpreter und auf Assembler-Ebene eine komplette Arithmetik geschrieben.
Das war bei Modulen höherer Ebene für eine Funktion nur noch eine Auflistung von CALL Befehl. Da waren sehr viele solcher (s.o.) Funktionen bei.

Karsten
--
1. Grundgesetz der Messtechnik? Wer misst misst Mist!
(fast) alle DDR-Schaltkreise und viele Transistoren
Elektronikarchäologie, MC80, K1520
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
003
03.06.2017, 17:40 Uhr
_lars

Avatar von _lars

Hier noch ein bisschen Effektspielerei:


Quellcode:

1 SCR !
EDITOR
0 P  0000 VARIABLE sinuslookup
1 P  0349 ,  0698 ,  1045 ,
2 P  1392 ,  1736 ,  2079 ,  2419 ,
3 P  2756 ,  3090 ,  3420 ,  3746 ,
4 P  4067 ,  4384 ,  4695 ,  5000 ,
5 P  5299 ,  5592 ,  5878 ,  6157 ,
6 P  6428 ,  6691 ,  6947 ,  7193 ,
7 P  7431 ,  7660 ,  7880 ,  8090 ,
8 P  8290 ,  8480 ,  8660 ,  8829 ,
9 P  8988 ,  9135 ,  9272 ,  9397 ,
10 P 9511 ,  9613 ,  9703 ,  9781 ,
11 P 9848 ,  9903 ,  9945 ,  9976 ,
12 P 9994 ,  10000 ,
FORTH
1 LOAD

2 SCR !
EDITOR
0 P  -1 CONSTANT TRUE
1 P  0 CONSTANT FALSE
2 P  : NEGATE -1 * ;
3 P  : SINUS@ 2 * sinuslookup + @ ;
4 P  : SIN ( GRAD -- SINUS )
5 P    DUP 0< >R ABS
6 P    360 MOD  
7 P    DUP 180 >
8 P    IF 180 - TRUE >R
9 P    ELSE FALSE >R ENDIF
10 P   DUP  90 >
11 P   IF 180 SWAP - ENDIF
12 P   2 / SINUS@  
13 P   R> IF NEGATE ENDIF
14 P   R> IF NEGATE ENDIF ;
15 P : COS 90 + SIN ;
FORTH
2 LOAD

3 SCR !
EDITOR
0 P : SINRAY
1 P   12 EMIT 7 INKP
2 P   320 0 DO ?TERMINAL
3 P     IF LEAVE ENDIF
4 P     2DUP I 2 MOD
5 P     ROT ROT
6 P     I SWAP >R SWAP DUP ROT ROT -
7 P     R> DUP I 360 320 */
8 P     SIN 128 10000 */ 128 +
9 P     SWAP -
10 P    >R SWAP R>
11 P    PLOT
12 P    DROP DROP DROP
13 P  LOOP
14 P  DROP DROP ;
FORTH
3 LOAD

160 128 SINRAY

Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
004
03.06.2017, 17:43 Uhr
_lars

Avatar von _lars


Zitat:
volkerp schrieb
Hallo Lars,

schön, dass sich mal wieder jemand mit FORTH beschäftigt. In den 80ern und Anfang der 90er war das die Sprache meiner Wahl.

Den Quellcode zum FORTH und mehr findest du bei mir unter

http://hc-ddr.hucki.net/wiki/doku.php/forth:kc85-figforth



Vielen Dank!

Wo bekommt man eigentlich dieses FORTHEX her? Gibt's das irgendwo als KCC Datei?

Viele Grüße,

_lars
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
005
04.06.2017, 14:32 Uhr
volkerp
Default Group and Edit
Avatar von volkerp

z.b. hier:

https://www.iee.et.tu-dresden.de/~kc-club/09/RUBRIK01.HTM
--
VolkerP

http://hc-ddr.hucki.net
(Z9001, Z1013, LC-80, ...)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
006
05.06.2017, 00:20 Uhr
_lars

Avatar von _lars


Zitat:
volkerp schrieb
z.b. hier:

https://www.iee.et.tu-dresden.de/~kc-club/09/RUBRIK01.HTM



Danke für den Link, da gibt es ja richtig viel Software!

Viele Grüße,

_lars
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
Seiten: -1-     [ Technische Diskussionen ]  



Robotrontechnik-Forum

powered by ThWboard 3 Beta 2.84-php5
© by Paul Baecher & Felix Gonschorek