Seite 3 von 3

Re: H4TH Applications

Verfasst: 25.12.2017, 16:23
von funkheld
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

Re: H4TH Applications

Verfasst: 28.12.2017, 12:56
von bokje
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

Re: H4TH Applications

Verfasst: 28.12.2017, 19:32
von ZX-Heinz
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

Re: H4TH Applications

Verfasst: 28.12.2017, 20:01
von bokje
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 ;
;)

Re: H4TH Applications

Verfasst: 29.12.2017, 10:22
von ZX-Heinz
Die NULL wird in ROMAN das Problem werden, fürchte ich. :?

Re: H4TH Applications

Verfasst: 01.01.2018, 02:21
von christoph
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.

Re: H4TH Applications

Verfasst: 01.01.2018, 11:49
von Paul
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

Re: H4TH Applications - MrZ SP0256-AL2

Verfasst: 03.01.2018, 16:08
von ZX-Heinz
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:

Re: H4TH Applications

Verfasst: 25.04.2018, 10:02
von ZX-Heinz
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

Re: H4TH Applications

Verfasst: 25.04.2018, 13:20
von Paul
Was muss man am Peter RAM modifizieren damit das 4th funktioniert?
Liebe Grüße Paul

Re: H4TH Applications

Verfasst: 25.04.2018, 13:49
von tokabln
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).

Re: H4TH Applications

Verfasst: 25.04.2018, 14:08
von Paul
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.

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

Verfasst: 24.05.2018, 11:41
von ZX-Heinz
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.

Re: H4TH Applications

Verfasst: 24.05.2018, 12:02
von tokabln
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

Re: H4TH Applications

Verfasst: 24.05.2018, 12:47
von ZX-Heinz
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

Re: H4TH Applications - SINUS

Verfasst: 25.05.2018, 11:54
von ZX-Heinz
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 ;

Re: H4TH Applications - SINUS2

Verfasst: 29.05.2018, 16:00
von ZX-Heinz
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

Re: H4TH Applications

Verfasst: 30.05.2018, 15:01
von Joachim
Ihr seid echte Cracks! Super!