H4TH für den ZXmore

ZX-Team Forum
Antworten
bokje
User
Beiträge: 65
Registriert: 02.05.2015, 15:38

H4TH für den ZXmore

Beitrag von bokje » 20.10.2016, 23:25

h.png
h.png (36.97 KiB) 4138 mal betrachtet
Unter z.B. Inst 2 ZX81 3.2MHz 08-64k CtrlOff

LOAD und STORE mit USB :)
Dateianhänge
h4thmore.zip
(6.18 KiB) 62-mal heruntergeladen

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

Re: H4TH für den ZXmore

Beitrag von tokabln » 21.10.2016, 09:32

Dankeschön...

das muß ich dann demnächst mal ausprobieren.
Lieben Gruß Torsten
BMZ MFA, ZX80Core, AX81, ZX81, ZX81NU, Spectrum+, Harlequin, Amstrad NC100, Cambridge Z88, C64, C128D, Amiga 500, Amiga 1200, Atari Portfolio, HP200LX, IBM PC 5155, TP755c, T41, PS/2 (Model 40SX), PS/2E, Accura 101, Apple //e

Benutzeravatar
msch
User
Beiträge: 3350
Registriert: 05.02.2013, 15:42
Wohnort: Hessen, Rhein-Main-Gebiet

Re: H4TH für den ZXmore

Beitrag von msch » 21.10.2016, 10:36

Cool, vielen Dank!
manche meinen lechts und rinks kann man nicht velwechsern.
werch ein illtum! (lichtung, Ernst Jandl)

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

Re: H4TH für den ZXmore

Beitrag von ZX-Heinz » 22.10.2016, 12:23

Läuft auch im EightyOne - Emulator ganz gut, nur STORE/LOAD natürlich nicht!

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

Re: H4TH für den ZXmore

Beitrag von Joachim » 04.11.2016, 13:13

Der Eintrag vom 4.11./8:11 ist leider verschwunden. Wäre interessant gewesen - auch der Dateianhang. Leider hatte ich ihn noch nicht heruntergeladen.

Bei dieser Gelegenheit: ich bin absoluter Forth-Neuling, aber dennoch interessiert. Bisher scheiterten Forth-Einstiege am komfortablen bzw. sicheren Laden und Speichern. Mit dem ZXmore wäre das jetzt anders. Darum würde ich mich freuen, wenn ich eine kleine Anleitung bekommen würde, wie ich das Husband-Forth auf den ZXmore bekomme. Wenn dann noch ein paar Forth-Worte nach und nach in diesem Thread dazukommen würden, sodass man in die Programmierung einsteigen könnte, würde ich mich richtig freuen. Ich denke, da bin ich nicht der einzige.
Viele Grüße!
Joachim


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

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

Re: H4TH für den ZXmore

Beitrag von bokje » 04.11.2016, 18:37

Danke Joachim,

Hier ist der Eintrag wieder; er war verschwunden weil ich leider noch einen Fehler entdeckte mit TASK.

H4th initialisierung kontroliert ob es einen extension ROM oder RAM gibt ab $2000. Also da koennen z.B. floating point Woerter sitzen (basiert auf dem ZX81 calculator; ZXmore Einstellung RAM ab 16K):
hmfp.png
hmfp.png (75.88 KiB) 3924 mal betrachtet
ZXmore Configuration: T<ools>, L<oad>: HMFP.ROM:0:2# speichert es z.B. im Flash ROM, Instanz 2.

Demnaechst: <E>dit: "2 ZX81 3.2MHz 16-64k CtrlOff" <Q>uit, <W>rite

Die Husband Forth Anleitung gibt es hier: http://www.dibsco.co.uk/forth/skywave/zx81-forth

Also zuerst mal "1 ." was bedeutet: 1 push und pop to console :)

Viele Gruesse!
Dateianhänge
hmfp.zip
(8.68 KiB) 56-mal heruntergeladen
Zuletzt geändert von bokje am 08.11.2016, 08:26, insgesamt 2-mal geändert.

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

Re: H4TH für den ZXmore

Beitrag von ZX-Heinz » 04.11.2016, 19:31

Hallo bokje,
kannst Du das bitte etwas kommentieren? Was ist z.B. audf den zweiten 8k in hmfp im Vergleich zu h4thmore drauf? Vielleicht könnte man Deine Routinen auch auf dem NU nutzen? Welche Änderungen im Code hast Du denn vorgenommen?
Gruß, Heinz

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

Re: H4TH für den ZXmore

Beitrag von bokje » 05.11.2016, 07:51

Ja gerne: Hmfp ist h4thmore (8k) + fp routines + empty space bis $4000. Routinen ab $2000 funktionieren wie extension ROM. H4thmore braucht 16k RAM ab $4000, und hat einem D_FILE (FORTH BLK) ab $7c00 (792 bytes mit HALTs) statt $fd00 (768 bytes). RAM ab FSP@ ist floating point stack, also originaler H4th + fp extension wird nicht gehen. LOAD und STORE beobachten PAGE und bearbeiten 528 (statt 512) bytes ab BLK wie eine Art Load/Save Memory Block. Ich habe keinen NU, aber Hmfp wird glaube ich auch darauf laufen, aber LOAD und STORE brauchen also spezielle memory block routinen. Schönes Wochenende!

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

Re: H4TH für den ZXmore

Beitrag von bokje » 07.11.2016, 20:07

Tasks mit floating point Wörtern können jetzt (neue Zip oben) semi-parellel rechnen mit einem Semaphor (FP Kritischer Abschnitt FV):

Code: Alles auswählen

: F1 FP 2 F FLN  F. FV ;
: F2 FP 2 F FSQR F. FV ;
TASK T1 F1
TASK T2 F2
Die Alternative wäre separate FP stacks und mem-0-5...

Benutzeravatar
PokeMon
User
Beiträge: 4490
Registriert: 31.08.2011, 23:41

Re: H4TH für den ZXmore

Beitrag von PokeMon » 07.12.2016, 21:45

Ich experimentiere gerade ein wenig mit Husband Forth und diversen Systemen, insbesondere in Zusammenhang mit dem ZXblast. Prinzipiell läuft das Standard H4TH mit ZXblast auf einem Standard ZX81 aber leider ist der Zeichensatz anders, so dass nur unlesbarer Buchstabensalat zu sehen ist. Funktionieren würde es ansonsten mit einigen Anpassungen. Allerdings sitzt der Zeichensatzgenerator tief verwurzelt mit den bekannten Widerständen zwischen ROM und CPU um die Adressen zu manipulieren während der Bildausgabe.

Mit dem ZX81NU läuft das Standard ROM gar nicht, wohl aber das von Bokje modifizierte ROM wenn man es extern anstöpselt z.B. über das ZXblast mit aber exakt den gleichen Problemen. Der Grund warum das Standard ROM nicht funktioniert, sind die fehlenden HALT Zeichen am Ende einer Bildzeile. Dadurch kommen viele nachgebaute Video Logik wie ZX81NU oder ZXmore hier aus dem Tritt. Bokje hat das ROM wohl so modifiziert, dass diese HALT Zeichen eingefügt werden (glaube ich jedenfalls).

Wenn man diese H4TH Version in einen ZX81NU direkt einsetzt, funktioniert es übrigens einwandfrei. Man hat dann halt nicht mehr die Auswahl was man starten möchte - obwohl auch das wahrscheinlich möglich wäre, wenn Olli oder ein anderer Freiwilliger das Master ROM überarbeitet. Dann hätte man wahrscheinlich auch die Auswahlmöglichkeit zwischen ZX81 und Husband Forth im Startmenü mit entsprechender Anpassung. Wer also um die Weihnachtstage Zeit und Lust hat, wäre bestimmt eine coole Sache. Man müsste halt auch LOAD und SAVE noch umbiegen, damit es auf das VDRIVE oder RAMDISK geht. Keine Ahnung wie aufwändig das ist.

Vermutlich wäre diese Version mit Anpassungen auch auf dem ZXmore mit Umschaltmöglichkeit (CTRLON) und LOAD/SAVE möglich, zumindest wenn man komplette Instanzen sichert. Das steht jetzt aber bei mir nicht ganz oben auf der Agenda. Erstmal will ich das ZXblast rausbringen und habe aktuell auch noch ein Timingproblem gefunden, dass nur unter ganz bestimmten Umständen auftrat aber mittlerweile auch sauber läuft. Es steht jetzt noch weiteres Testen und ein paar kleinere Anpassungen an.

Ich werde in Kürze das GO für das ZXblast geben. Leider vorerst nicht mit H4TH Unterstützung aus den o.g. Gründen. Aber durchaus das Potential für LOAD/SAVE wäre aus meiner Sicht da auf mittelfristige Sicht wenn man das ROM tauscht (ZX81 oder ZX81NU).
Wer seinen Computer ehrt, lebt nicht verkehrt.

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

Re: H4TH für den ZXmore

Beitrag von bokje » 08.12.2016, 17:53

Es können da zwei weitere Gründen sein wodurch das standard H4TH ROM nicht gut auf dem ZXmore läuft. Mit dem ZX81 ROM wird zwei mal HALT begegnet im Routinen NMI-CONT ($6F), aber nur einmal mit dem H4tH ROM. Und IM 1 wird nicht gewählt vom H4TH, also mit IM 0 (nach Reset ohne ZXmaster) und INT wird den Datenbus gelesen - auf dem ZX81 wird dann $FF, also RST 38 (INTERRUPT) gelesen; auf dem ZXmore vielleicht $00, also NOP ;-)

Benutzeravatar
PokeMon
User
Beiträge: 4490
Registriert: 31.08.2011, 23:41

Re: H4TH für den ZXmore

Beitrag von PokeMon » 08.12.2016, 18:05

bokje hat geschrieben:Mit dem ZX81 ROM wird zwei mal HALT begegnet im Routinen NMI-CONT ($6F), aber nur einmal mit dem H4tH ROM.
Das habe ich jetzt ehrlich gesagt nicht verstanden. Bei NMI-CONT gibt es auch beim ZX81 nur 1x HALT.
bokje hat geschrieben:Und IM 1 wird nicht gewählt vom H4TH, also mit IM 0 (nach Reset ohne ZXmaster) und INT wird den Datenbus gelesen - auf dem ZX81 wird dann $FF, also RST 38 (INTERRUPT) gelesen; auf dem ZXmore vielleicht $00, also NOP ;-)
Das ist mir neu, aber so tief bin ich in das ROM ja auch nicht eingestiegen. Interessant würde Spock jetzt sagen. 8)
Wer seinen Computer ehrt, lebt nicht verkehrt.

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

Re: H4TH für den ZXmore

Beitrag von Paul » 08.12.2016, 18:18

PokeMon hat geschrieben:Interessant würde Spock jetzt sagen. 8)
Wohl eher "Faszinierend" :mrgreen:
Theoretisch ist zwischen Theorie und Praxis kein Unterschied.
Praktisch allerdings wohl.

Benutzeravatar
PokeMon
User
Beiträge: 4490
Registriert: 31.08.2011, 23:41

Re: H4TH für den ZXmore

Beitrag von PokeMon » 09.12.2016, 00:33

Faszinierend. :mrgreen:
Wer seinen Computer ehrt, lebt nicht verkehrt.

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

Re: H4TH für den ZXmore

Beitrag von bokje » 09.12.2016, 18:45

Jedes Frame hat zwei Margins mit NMIs beendet mit ZX81 Routine NMI-CONT. HALT ist da für Pixel synchronisierung, aber ist nur notwendig bevor DISPLAY-5. Standard H4TH hat so einen HALT bevor Display, aber keinen HALT nach Display. Der ZXmore generierte darum keinen VSYNCs, denn mit einem HALT extra ist es OK :) Vielleicht ist das interessant, faszinierend, und logisch? ;)

Benutzeravatar
PokeMon
User
Beiträge: 4490
Registriert: 31.08.2011, 23:41

Re: H4TH für den ZXmore

Beitrag von PokeMon » 09.12.2016, 20:00

Das ist etwas komplizierter. Vsync wird erzeugt durch Keyboard read und beendet mit OUT $FF,A. Allerdings gibt es einen zusätzlichen Schaltkreis, der erkennt, ob ein Video Modus erkannt wird und verhindert im Nicht-Video Modus den Vsync (also vor oder nach der Bildausgabe). Dafür gibt es verschiedene Regeln, die ich aber mal durch ein Hardware Update angepasst habe:

VIDON = INTACK ^ HALT ^ NMIOFF
VIDOFF = NMION

Eine der 3 Bedingungen muss eintreten, damit das Video ON Signal intern gesetzt wird. Video ON wird sowohl während der Bildausgabe gesetzt als auch bei Vsync/Keyboard Read Phase. Nur wenn der NMI läuft, wird VIDON abgeschaltet. Insofern muss das Vsync möglich sein, sobald der NMI Generator abgeschaltet wird, egal ob INTACK oder HALT auftritt. Ich habe da aber mal was geändert, kann durchaus sein, dass es in den ersten Versionen nicht funktioniert. Durch diese Änderung wird auch bei LOAD und SAVE das typische Streifenmuster bei einem Röhrenfernseher angezeigt. Das wäre ein einfacher Test, ob das CPLD auf dem aktuellen Stand ist. 8)
Wer seinen Computer ehrt, lebt nicht verkehrt.

Benutzeravatar
PokeMon
User
Beiträge: 4490
Registriert: 31.08.2011, 23:41

Re: H4TH für den ZXmore

Beitrag von PokeMon » 10.12.2016, 23:09

Noch ein paar letzte Ergebnisse zu H4TH und ZXblast resp. ZXmore. Die geänderte Version läuft gut, erfordert aber für den Betrieb noch leicht unterschiedliche Anpassungen. Eine wichtige wäre die Anpassung der NMI Routinen in dem geänderten H4TH, weil die NMI Zähler beim ZX81 aufwärts und bei H4TH abwärts zählen. Es wäre gut, diese H4TH Version so anzugleichen, dass sie auch aufwärts zählt weil ansonsten der Scanline counter nicht bei 0 anfängt wenn man CTRLon haben möchte (was für LOAD/SAVE bei ZXmore wünschenswert ist). Erfordert natürlich auch im ZXmore Code Anpassungen aber generell lauffähig.

Beim ZXblast gilt im Grunde das Gleiche, jedoch ist hier noch die Besonderheit, dass der Zeichensatzgenerator fest verdrahtet ist mit dem internen ROM. Wenn man das gegen H4TH tauscht beim ZX81NU, dann zeigt das ZXblast nur Kauderwelsch an. Hier müsste man entweder eine Zeichensatzkonvertierung einbauen oder gleich einen HRG Text Treiber verwenden. Was günstiger ist, kann ich derzeit nicht abschätzen aber im ersten Rutsch werde ich das daher nicht vorsehen. Das ist jetzt einfach zu aufwändig. Generell dürfte es aber gehen.
Wer seinen Computer ehrt, lebt nicht verkehrt.

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

Re: H4TH für den ZXmore

Beitrag von bokje » 26.02.2017, 09:20

H4TH extension demo mit PLOT und UNPLOT:

EightyOne:
Hardware, Advanced Settings, ROM File: hp.rom; Protect ROM from Writes, do not enable RAM in 8k-16k;
Interfaces, Chr$ generator: CHR$16

H4thmore:
syssct: equ 07b00h
ld de,0x21 statt 0x20 (in plot und unplot)

Demo:
ZFNT (8 chars)
CLS
43 0 DO I I PLOT LOOP
HFNT
plot.png
plot.png (6.8 KiB) 1866 mal betrachtet
Dateianhänge
hp.zip
(7.51 KiB) 36-mal heruntergeladen

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

Re: H4TH für den ZXmore

Beitrag von ZX-Heinz » 26.02.2017, 11:57

Hallo Bokje,
besten Dank für die Grafikerweiterung! PLOT/UNPLOT laufen bestens :D auf dem EightyOne, und das ASM-Pgm ist gut zu verstehen. Liegt ab 02000h.
Schönen Sonntag, Heinz

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

Re: H4TH für den ZXmore

Beitrag von bokje » 28.10.2017, 16:08

skorp.png
skorp.png (46.15 KiB) 390 mal betrachtet

Code: Alles auswählen

40960 DUP 4 BLOAD INTEGER PH
: GW PH DUP @ SWAP 2 + TO PH ;
GW INTEGER N GW INTEGER XMAX GW INTEGER YMAX PH 9 + TO PH
XMAX 256 / YMAX 192 / MAX 1 + INTEGER FS
0 INTEGER X 0 INTEGER Y
: GB PH DUP C@ SWAP 1 + TO PH ;
: GF GW FS / ; : GX GF DUP TO X ; : GY 191 GF - DUP TO Y ;
: TR GB 45 = IF GX GY 2DROP ELSE X Y GX GY DRAW THEN ;
: GO EOFF CLS N BEGIN TR 1 - DUP 0= UNTIL DROP ;
julia.png
julia.png (70.4 KiB) 390 mal betrachtet

Code: Alles auswählen

0 INTEGER ITER
: JI 16 DUP TO ITER 0 DO DUP DUP * ROT DUP DUP * ROT DUP 0< 3 PICK 0< OR IF I TO ITER 2DROP LEAVE ELSE - 100 / 75 - ROT ROT * 50 / 11 + THEN LOOP 2DROP ;
: PJ OVER 128 - OVER 96 - JI ITER 1 AND IF 2DROP ELSE OVER OVER PLOT2 MINUS 191 + SWAP MINUS 255 + SWAP PLOT2 THEN ;
: YL 96 0 DO DUP I PJ 2 +LOOP ;
: GO EOFF CLS 256 0 DO I YL 2 +LOOP DROP ;
Diese Version arbeitet immer im hires Modus (Bild ab hex 8800), und hat folgenden neuen Wörter:

Code: Alles auswählen

x y PIX@ (returns pixel address)
x y PLOT, UNPLOT, PLOT2, PLOT4
x y DRAWTO, UNDRAWTO
x0 y0 x1 y1 DRAW, UNDRAW
addr SELECT, SHOW (UDG character set)
xy chr DCHAR (xy is one integer)
xy POP
xy UP, DOWN, RIGHT, LEFT
dir xy PUSH (dir=0,1,2,3 -> UP, DOWN, RIGHT, LEFT)
addr n BLOAD, addr len n BSTORE (binary load&store, file nnnnn.bin)
n ILOAD, ISTORE (Forth image load&store, autostart file 00000.bin)
n TLOAD, TSTORE (original tape routines, not tested, with --> , <--)
INKEY (returns last key code)
Dateianhänge
hmfh.zip
(10.16 KiB) 6-mal heruntergeladen
Zuletzt geändert von bokje am 01.11.2017, 20:56, insgesamt 3-mal geändert.

Benutzeravatar
PokeMon
User
Beiträge: 4490
Registriert: 31.08.2011, 23:41

Re: H4TH für den ZXmore

Beitrag von PokeMon » 28.10.2017, 17:54

:shock: Unglaublich. Aber geil. 8)
Wer seinen Computer ehrt, lebt nicht verkehrt.

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

Re: H4TH für den ZXmore

Beitrag von bokje » 28.10.2017, 23:00

Danke Pokemon! Funktioniert der hires Treiber vielleicht auch auf dem ZXblast?

Benutzeravatar
PokeMon
User
Beiträge: 4490
Registriert: 31.08.2011, 23:41

Re: H4TH für den ZXmore

Beitrag von PokeMon » 29.10.2017, 10:41

Ich werde ab November wieder Zeit haben für Programmieraktivitäten.
ZXblast und ZXmore sind dann wieder dran.
Teste ich gerne.
Aber beeindruckend die Grafik. Wie lange braucht H4TH dafür ?
Wer seinen Computer ehrt, lebt nicht verkehrt.

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

Re: H4TH für den ZXmore

Beitrag von bokje » 29.10.2017, 11:24

Skorp (mit hpgl Datei) 35 Sekunden; Julia (durch JI) 25 Minuten :)

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

Re: H4TH für den ZXmore

Beitrag von bokje » 01.11.2017, 21:07

ROM hmfh (oben aktualisiert) hatte leider einen Fehler, wodurch es abstürzte ohne autostart Datei (00000.bin). Das kann z.B. sein

Code: Alles auswählen

: BOOT " BOOT COMPLETED" .CN CR ;
0 ISTORE
Dateianhänge
00000.zip
(202 Bytes) 5-mal heruntergeladen

Antworten