H4TH Applications

ZX-Team Forum
funkheld
User
Beiträge: 194
Registriert: 16.11.2010, 18:20

Re: H4TH Applications

Beitrag von funkheld » 25.12.2017, 16:23

Na,da macht ihr eine frimelei mit dem Forth. Ist fast eine Vergewaltigung vom Forth.
Ihr solltet mehr in den innerern Aufbau schauen vom Forth, dann geht es einfacher.
Umständlicher geht es nimmer mit dem Code.

Es gibt schöne PDF für Anfänger in Forth.

Gruss

bokje
User
Beiträge: 87
Registriert: 02.05.2015, 15:38

Re: H4TH Applications

Beitrag von bokje » 28.12.2017, 12:56

Also ein wenig Thinking Forth (danke mrtinb!) gelesen und probiert (Seite 134):

Code: Alles auswählen

: STRING <BUILDS DUP HERE SWAP 1 + ALLOT W! DOES> ;
" IVXLCDM" STRING ROMANS
0 VARIABLE COLUMN# : ONES 1 COLUMN# ! ; : TENS 3 COLUMN# ! ; : HUNDREDS 5 COLUMN# ! ; : THOUSANDS 7 COLUMN# ! ;
: COLUMN ROMANS COLUMN# @ + ;
: .SYMBOL COLUMN + C@ EMIT ;
: ONER 0 .SYMBOL ; : FIVER 1 .SYMBOL ; : TENER 2 .SYMBOL ;
: ONERS ?DUP IF 0 DO ONER LOOP THEN ;
: ALMOST ONER IF TENER ELSE FIVER THEN ;

Code: Alles auswählen

: /MODS /MOD SWAP ;
: DIGIT 5 /MODS OVER 4 = IF ALMOST DROP ELSE IF FIVER THEN ONERS THEN ;
: ROMAN 1000 /MODS THOUSANDS DIGIT 100 /MODS HUNDREDS DIGIT 10 /MODS TENS DIGIT ONES DIGIT ;

Code: Alles auswählen

2018 ROMAN

Benutzeravatar
ZX-Heinz
User
Beiträge: 1456
Registriert: 05.12.2011, 14:45

Re: H4TH Applications

Beitrag von ZX-Heinz » 28.12.2017, 19:32

Funktioniert perfekt bis 3999 ROMAN. Aber 4000 ROMAN nicht mehr.

Zeichen I V _ X _ L _ C _ D _ M _ ↁ _ ↂ
Wert__ 1 5 10 50 100 500 1000 5000 10.000

bokje
User
Beiträge: 87
Registriert: 02.05.2015, 15:38

Re: H4TH Applications

Beitrag von bokje » 28.12.2017, 20:01

Das ist nicht so einfach mit ASCII zu lösen...? :roll: Vielleicht wir nutzen nur Bytes und N bis CCLV...!

Code: Alles auswählen

: NTOSTACK CODE XXXIII N N CCVII ;C ;
;)

Benutzeravatar
ZX-Heinz
User
Beiträge: 1456
Registriert: 05.12.2011, 14:45

Re: H4TH Applications

Beitrag von ZX-Heinz » 29.12.2017, 10:22

Die NULL wird in ROMAN das Problem werden, fürchte ich. :?

christoph
User
Beiträge: 399
Registriert: 26.08.2012, 18:16
Wohnort: Oschersleben
Kontaktdaten:

Re: H4TH Applications

Beitrag von christoph » 01.01.2018, 02:21

funkheld hat geschrieben:
25.12.2017, 16:23
Na,da macht ihr eine frimelei mit dem Forth. Ist fast eine Vergewaltigung vom Forth.
Ihr solltet mehr in den innerern Aufbau schauen vom Forth, dann geht es einfacher.
Wie wärs, wenn du uns deine Version vorstellst? Dann hab ich eine Grundlage, das so zu verstehen, wie es richtig ist.
Klug ist, wer nur die Hälfte von dem glaubt, was er hört, weise ist derjenige, der die richtige Hälfte wählt.

Benutzeravatar
Paul
User
Beiträge: 2752
Registriert: 10.03.2010, 12:01
Wohnort: Germanys west end

Re: H4TH Applications

Beitrag von Paul » 01.01.2018, 11:49

christoph hat geschrieben:
01.01.2018, 02:21
funkheld hat geschrieben:
25.12.2017, 16:23
Na,da macht ihr eine frimelei mit dem Forth. Ist fast eine Vergewaltigung vom Forth.
Ihr solltet mehr in den innerern Aufbau schauen vom Forth, dann geht es einfacher.
Wie wärs, wenn du uns deine Version vorstellst? Dann hab ich eine Grundlage, das so zu verstehen, wie es richtig ist.
Sehr gut gekontert Christoph
Theoretisch ist zwischen Theorie und Praxis kein Unterschied.
Praktisch allerdings wohl.

Benutzeravatar
ZX-Heinz
User
Beiträge: 1456
Registriert: 05.12.2011, 14:45

Re: H4TH Applications - MrZ SP0256-AL2

Beitrag von ZX-Heinz » 03.01.2018, 16:08

Inzwischen habe ein H4TH-Programm zur Generierung von Allophonen für den Plapperchip SP0256-AL2 in Echtzeit geschrieben. Notwendige Hardware: Zeddy mit H4TH-ROM und externem Vdrive, sowie MrX&MrZ.
Man kann Texte einschreiben oder mittels CLOAD auch lange Textdateien zum Vorlesen laden. Das Gesamtprogramm zur Textanalyse umfasst allerdings etwa 2500 Bytes (ca. eine A4 Seite). Demo erfolgt in Mahlerts 2018. :D

5.1.18: Korrigierte Programmdatei, jetzt selbstladend:
Dateianhänge
SPEECH4.rtf
(3.8 KiB) 47-mal heruntergeladen

Benutzeravatar
ZX-Heinz
User
Beiträge: 1456
Registriert: 05.12.2011, 14:45

Re: H4TH Applications

Beitrag von ZX-Heinz » 25.04.2018, 10:02

Für alle, die H4TH auf dem ZX81NU probieren wollen, gibt es ein neues ZX81NU-ROM: viewtopic.php?f=2&t=1029&p=36233#p36233

Benutzeravatar
Paul
User
Beiträge: 2752
Registriert: 10.03.2010, 12:01
Wohnort: Germanys west end

Re: H4TH Applications

Beitrag von Paul » 25.04.2018, 13:20

Was muss man am Peter RAM modifizieren damit das 4th funktioniert?
Liebe Grüße Paul
Theoretisch ist zwischen Theorie und Praxis kein Unterschied.
Praktisch allerdings wohl.

Benutzeravatar
tokabln
User
Beiträge: 1356
Registriert: 10.11.2013, 00:24
Wohnort: D, Berlin (Mariendorf)

Re: H4TH Applications

Beitrag von tokabln » 25.04.2018, 13:49

Hallo Paul, wenn Du mit dem Peter RAM das kleine 32kB Platinchen meinst, dann schau mal in meine aktualisierte Doku zu der Platine:

viewtopic.php?f=7&t=2735#p36114

Da habe ich beschrieben wie diese Platine auch unter H4TH funktioniert. Dort dann "nur" mit 16K.

Zu Deiner NU Frage:
2k - 16K RAM sollten es auch mit dem NU sein... allerdings meine ich nicht das Platinchen sondern den NU Speicher. Ob allerdings das NU Forth ROM auch im ZX81 funktioniert, muß Heinz beantworten. Aber für den ZX81 gibt es ja eine VDrive ROM Version (ich meine mich zu erinnern auch mit dem Bokje Patch).
Lieben Gruß Torsten
BMZ MFA, ZX80Core, AX81, ZX81, ZX81NU, Spectrum+, Harlequin, VG8010, Amstrad NC100, Cambridge Z88, C64, C128D, Amiga 500 & 1200, Atari Portfolio, HP200LX, IBM PC5155, TP755c, T41, PS/2 (Model 40SX), PS/2E, Accura 101, Apple //e

Benutzeravatar
Paul
User
Beiträge: 2752
Registriert: 10.03.2010, 12:01
Wohnort: Germanys west end

Re: H4TH Applications

Beitrag von Paul » 25.04.2018, 14:08

tokabln hat geschrieben:
25.04.2018, 13:49
Hallo Paul, wenn Du mit dem Peter RAM das kleine 32kB Platinchen meinst, dann schau mal in meine aktualisierte Doku zu der Platine:

viewtopic.php?f=7&t=2735#p36114

Da habe ich beschrieben wie diese Platine auch unter H4TH funktioniert. Dort dann "nur" mit 16K.
Danke Thorsten, genau das meinte ich.
Theoretisch ist zwischen Theorie und Praxis kein Unterschied.
Praktisch allerdings wohl.

Benutzeravatar
ZX-Heinz
User
Beiträge: 1456
Registriert: 05.12.2011, 14:45

Re: H4TH Applications: How to use math fcts from ZX81-ROM?

Beitrag von ZX-Heinz » 24.05.2018, 11:41

Für diejenigen, die H4TH auf dem ZX81NU fahren, hat bokje einen Weg gefunden, die mathematischen Funktionen des ZX81-ROMs für H4TH zugänglich zu machen. Das wurde schon in viewtopic.php?f=2&t=2766#p36416 diskutiert, ist inzwischen aber auf einem wirklich praktikablen Stand. Daher gehört dies Thema auch in diesen Thread. Der Reihe nach:

Zuerst wird der NU wie im H4TH-Modus gestartet. Dann lädt man das Programm " NU", es enthält die Befehlszeilen

: H4TH CODE 1 5F 8C 0ED 78 C7 ;C ;
: ZX81 ( BACK H4TH: USR 8215 ) CODE 21 0 60 22 4 40 1 5F 4C 0ED 78 C3 E5 3 ;C ;


Nach dem Compilieren erfolgen die Aufrufe:
H4TH <CR> und ZX81 <CR>.
Im Ergebnis befindet man sich jetzt im ZX81 Modus ("K"-cursor). MIt
RAND USR 8215
zurück nach H4TH. Von nun an sind die Funktionen nutzbar. Als Beispiel diene die Quadratwurzel:

: SQRT CODE D7 1 5F 4C 0ED 78 44 4D CD 20 15 EF 25 34 CD 8A 15 60 69 1 5F 8C 0ED 78 CF ;C ;

Nach Compilieren liefert die Befehlszeile
DECIMAL 49 SQRT U.
das Ergebnis 7. Der gößtmögliche Radikand ist 65335 (=#FFFF). Kenner des ZX81-ROMs werden in den Kommandos CD 20 15 (=CALL #1520) die Stack-BC-Routine erkennen, und in CD 8A 15 die Rückgabe FP-to-BC. Nach diesem Vorbild können SIN u.a. abgerufen werden.

Edit (13:27): EF 25 ist RST #28 DEFB #25, also der ZX81-Aufruf für SQRT.
Zuletzt geändert von ZX-Heinz am 24.05.2018, 13:28, insgesamt 1-mal geändert.

Benutzeravatar
tokabln
User
Beiträge: 1356
Registriert: 10.11.2013, 00:24
Wohnort: D, Berlin (Mariendorf)

Re: H4TH Applications

Beitrag von tokabln » 24.05.2018, 12:02

Hallo Heinz,

danke für dieses Update... aber etwas verstehe ich gerade nicht.

Heisst das, das sowohl das NU ROM als auch das ZX81 ROM gleichzeitig auf dem NU laufen?
Kannst Du bitte das Ganze bitte etwas genauer beschreiben? Ich habe gerade einen Knoten im Gehirn.

Lieben Dank
Lieben Gruß Torsten
BMZ MFA, ZX80Core, AX81, ZX81, ZX81NU, Spectrum+, Harlequin, VG8010, Amstrad NC100, Cambridge Z88, C64, C128D, Amiga 500 & 1200, Atari Portfolio, HP200LX, IBM PC5155, TP755c, T41, PS/2 (Model 40SX), PS/2E, Accura 101, Apple //e

Benutzeravatar
ZX-Heinz
User
Beiträge: 1456
Registriert: 05.12.2011, 14:45

Re: H4TH Applications

Beitrag von ZX-Heinz » 24.05.2018, 12:47

tokabln hat geschrieben:
24.05.2018, 12:02
Heisst das, das sowohl das NU ROM als auch das ZX81 ROM gleichzeitig auf dem NU laufen?
Hallo Torsten,
nicht gleichzeitig, sondern abwechselnd! Das kann m.W. kein Emulator! Genauer: Auf holmatics ROM gibt es 4x8k Bänke (1-4). Auf Bank2 liegt das ZX81-ROM, auf Bank3 das H4TH-ROM. Durch Ansteuerung der Hardware kann man zwischen diesen Bänken hin- und herschalten und zum Glück werden dabei die Systemvariablen wechselseitig nicht zerstört, da in verschiedenen Bereichen liegend. Mit den Eingangsbefehlen H4TH und ZX81 wird das ZX81-System einmalig initialisiert. Dann geht man mit RAND USR 8215 zurück zu H4TH. Falls nun num. Fkten aus dem ZX81-ROM gebraucht werden, wird kurz dahin geschaltet, das Ergebnis auf BC gelegt, und schließlich über HL auf den H4TH-Stack.
Gruß, Heinz

Benutzeravatar
ZX-Heinz
User
Beiträge: 1456
Registriert: 05.12.2011, 14:45

Re: H4TH Applications - SINUS

Beitrag von ZX-Heinz » 25.05.2018, 11:54

Hier ist der Sinus,abgeholt vom ZX81-ROM. Eingegeben wird x im Gradmass zwischen 0 und 180°. Der Ausgabewert ist dann 10000*sin(x).
Beispiel:
30 SIN <CR>, die Ausgabe ist 5012 (entspricht 0,5000 mit Fehler von 2 promille). Hier ist das Programm:

: SIN (DEGREE) DECIMAL 175 * (Xrad*10^4 on stack)
CODE D7 1 5F 4C 0ED 78 E5 1 10 27 CD 20 15 C1 CD 20 15 1 10 27 CD 20 15 EF 01 05 1C 04 34 CD 8A 15 C5 E1 1 5F 8C 0ED 78 CF ;C ;

Benutzeravatar
ZX-Heinz
User
Beiträge: 1456
Registriert: 05.12.2011, 14:45

Re: H4TH Applications - SINUS2

Beitrag von ZX-Heinz » 29.05.2018, 16:00

Hier ist ein verbesserter Sinus, abgeholt vom ZX81-ROM. Eingegeben wird x im Gradmass zwischen 0 und 180°. Der Ausgabewert ist dann 10000*sin(x).
Der Unterschied zum vorherigen Programm besteht darin, dass die Multiplikation mit Pi/180 im ZX81-Calculator ausgeführt wwird. Da man hier 10 stellige Genauigkeit hat, entfällt der 2 promille Fehler! Alle vier ausgegeben Stellen sind jetzt richtig. Diese Verbesserung hatte bokje vorgeschlagen, von ihm stammt auch der 5-byte-Wert für Pi/180. Hier ist der Quelltext in Assembler:

rst 10h; get stack value in HL
push iy; store stack address
ld bc,0x4c5f; switch to ZX81 ROM
in a,(c)
PUSH HL
LD BC,#2710 (=10000dec)
call 0x1520; stack-bc
POP BC
call 0x1520; stack-bc ; im Stack: Alpha|10000
rst 28h; use calculator
defb #30 read next 5 bytes onto stack
defb #EB, #0E, #FA, #35, #12 (=Pi/180); im Stack: Pi/180|Alpha|10000
defb #04 (multiply, gives radiant on stack)
defb #1C (SIN (DEFB #1C))
defb #04 (multiply by 10000 from stack)
defb #34 (#34 = end-calc)
call 0x158a; fp-to-bc
push BC
pop HL
ld bc,0x8c5f
in a,(c)
pop iy; restore stack address
rst 08h; put the result (HL) on stack

Als H4TH-Pgm sieht das wie folgt aus:

: SIN (DEGREE)
CODE D7 FD E5 01 5F 4C 0ED 78 E5 01 10 27 CD 20 15 C1 CD 20 15
EF 30 EB 0E FA 35 12 04 1C 04 34 CD 8A 15 C5 E1
01 5F 8C 0ED 78 FD E1 CF ;C DECIMAL U. ;


Ein 45 SIN <CR> sollte 7071 liefern, 90 SIN entsprechend 10000.

Vor der Verwendung nicht die einmalige Aktivierung H4TH-ZX81 und RAND USR 8215 vergessen! Siehe posting.php?mode=reply&f=2&t=2338#pr36520
Zuletzt geändert von ZX-Heinz am 31.05.2018, 10:21, insgesamt 2-mal geändert.

Benutzeravatar
Joachim
User
Beiträge: 985
Registriert: 06.11.2004, 20:21

Re: H4TH Applications

Beitrag von Joachim » 30.05.2018, 15:01

Ihr seid echte Cracks! Super!
Viele Grüße!
Joachim


ZX80, ZX81, ZX-Spectrum, ZX96, ZX2000, ZXmore, ZX81NU, Blauer Engel, AX81

Antworten