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!

Re: H4TH und Zeddynet

Verfasst: 30.04.2019, 21:00
von ZX-Heinz
Nur der Vollständigkeit auch in diesem Thread: Es gibt einen16k H4TH ROM (Editor: bokje) , der die Zeddynet-karte unterstützt und chats ermöglicht.

Re: H4TH und Zeddynet

Verfasst: 30.04.2019, 21:01
von ZX-Heinz
Nur der Vollständigkeit auch in diesem Thread: Es gibt einen16k H4TH ROM (Editor: bokje) , der die Zeddynet-karte unterstützt und chats ermöglicht.

B>>>>F<<<

Verfasst: 01.05.2019, 20:36
von bokje
H4TH kann hier gut angewendet werden weil die Worte neu definiert werden können, obwohl es dann mit "ERROR R" warnt. "[" definieren war eine ganz gute BF ;) Mit diese Lösung sind " " benötigt. Mit einem Demo passt es auf einem Schirm, nur am Ende with "," benutzt ;)

Sehe auch http://forum.tlienhard.com/phpBB3/viewt ... fuck#p1586

Code: Alles auswählen

0 VARIABLE BF 10 ALLOT
BF 2 + BF !
: BF@ BF @ ;
: ++ + ;
: -- - ;
: DOT . ;
: > BF@ 1 + BF ! ;
: < BF@ 1 - BF ! ;
: , BF@ C! ;
: . BF@ C@ EMIT ;
: + BF@ C@ 1 ++ , ;
: - BF@ C@ 1 -- , ;
: [[ BF@ C@ 0= ;
' [[ INTEGER A[[
: ]] IMM A[[ CODE D1 E1 E1 D7 CD D3 07 C3 E9 17 ;C ;
' ]] INTEGER A]]
: [ IMM A]] HERE CODE D7 E5 D7 CD 92 08 ;C ;
: ] IMM CODE C3 05 18 ;C ;
: H4TH + + + + + + + + + [ - > > + < + + + + + + + + < ] > . > [ - < < + > - - > ] < - - . < [ - > > + < + + + < ] > + + + + + . 48 , . ;
bf.png
bf.png (9.78 KiB) 1211 mal betrachtet

Re: H4TH Applications

Verfasst: 09.05.2019, 12:59
von Joachim
Bitte seid gnädig, ich bin Forth-Neuling.
Ich habe die H4TH-Anleitung durchgemacht und dabei erfahren, dass H4TH an einem Header bzw. Identifier erkennt, ob ein EPROM mit einem Wörterbuch oder ein RAM ab Adresse 8192 vorhanden ist. Wenn ich das im Hexeditor richtig sehe, dann ist das so beim 16K-langen H4TH. Ich verwende das H4TH, das 8KB lang ist und das VDRIVE ansprechen kann. Wäre es möglich, dass man ein Wort in den Kern implementiert, das ein Dictionary ab Adresse 8192 speichern und laden kann? Sozusagen eine Erweiterung für VLOAD und VSTORE.

Re: H4TH Applications

Verfasst: 09.05.2019, 19:19
von bokje
Das ist eine gute Frage! Und es ist im Prinzip auch möglich eine Art "image load" zu implementieren. Vielleicht wird es schwer die Erweiterungen neben die normalen VLOAD und VSTORE im 8K kern zu haben.

Re: H4TH Applications

Verfasst: 09.05.2019, 20:48
von ZX-Heinz
Joachim hat geschrieben:
09.05.2019, 12:59
Wäre es möglich, dass man ein Wort in den Kern implementiert, das ein Dictionary ab Adresse 8192 speichern und laden kann? Sozusagen eine Erweiterung für VLOAD und VSTORE.
Hallo Joachim,
mit jedem Programm kann man neue Prozeduren mit einem Namen erzeugen. Diese Namen sind gleichberechtigt mit dem im ROM liegenden alten Vokabular. Nur, dass Du diese Programme als flüchtige Programme erst wieder zuladen musst. Das ist mit dem Vdrive aber kein Problem. Diese Programme liegen dann ab Adr #4000. Wo genau ist eigentlich unwichtig. Du könntest Dir das aber über
' NAME U. (Apostroph mit Shift&D)
anzeigen lassen.

Re: H4TH Applications - Zeddynet

Verfasst: 17.08.2019, 10:36
von ZX-Heinz
bokje hat vor einiger Zeit eine H4TH-16k-Erweiterung geschrieben, die zur Ansteuerung der Zeddynet-Karte dient und chats im Zeddynet mittels H4TH ermöglicht. Das Programm arbeitet inzwischen sehr stabil. Da die Porgramme ja im H4TH-Quelltext zugeladen werden, ist eine Änderung des User-Namens oder eine Änderung der Platform (z.B. freenode.net statt irc.zxq.de o.a.) sehr leicht möglich. Das ist ein gewisser Vorteil gegenüber dem chat-Programm für der ZX81. Letzteres wiederum bringt eine 64Zeichenausgabe mit, die dem H4TH noch fehlt.

Damit gibt es inzwischen DREI mögliche Zugänge mittels Zeddy in das Netz:
1. siggis "chat" mit Zeddynet-LAN-Karte und ZX81/NU
2. bokjes 16k-H4TH-ROM und Programme für ZX81 und Zeddynet-LAN-Karte
3. holmatics PiZero-huckepack auf der UART-Karte als WLAN-Variante