Seite 1 von 1

H4TH für den ZXmore

Verfasst: 20.10.2016, 23:25
von bokje
h.png
h.png (36.97 KiB) 10991 mal betrachtet
Unter z.B. Inst 2 ZX81 3.2MHz 08-64k CtrlOff

LOAD und STORE mit USB :)

Re: H4TH für den ZXmore

Verfasst: 21.10.2016, 09:32
von tokabln
Dankeschön...

das muß ich dann demnächst mal ausprobieren.

Re: H4TH für den ZXmore

Verfasst: 21.10.2016, 10:36
von msch
Cool, vielen Dank!

Re: H4TH für den ZXmore

Verfasst: 22.10.2016, 12:23
von ZX-Heinz
Läuft auch im EightyOne - Emulator ganz gut, nur STORE/LOAD natürlich nicht!

Re: H4TH für den ZXmore

Verfasst: 04.11.2016, 13:13
von Joachim
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.

Re: H4TH für den ZXmore

Verfasst: 04.11.2016, 18:37
von bokje
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) 10777 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!

Re: H4TH für den ZXmore

Verfasst: 04.11.2016, 19:31
von ZX-Heinz
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

Re: H4TH für den ZXmore

Verfasst: 05.11.2016, 07:51
von bokje
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!

Re: H4TH für den ZXmore

Verfasst: 07.11.2016, 20:07
von bokje
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...

Re: H4TH für den ZXmore

Verfasst: 07.12.2016, 21:45
von PokeMon
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).

Re: H4TH für den ZXmore

Verfasst: 08.12.2016, 17:53
von bokje
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 ;-)

Re: H4TH für den ZXmore

Verfasst: 08.12.2016, 18:05
von PokeMon
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)

Re: H4TH für den ZXmore

Verfasst: 08.12.2016, 18:18
von Paul
PokeMon hat geschrieben:Interessant würde Spock jetzt sagen. 8)
Wohl eher "Faszinierend" :mrgreen:

Re: H4TH für den ZXmore

Verfasst: 09.12.2016, 00:33
von PokeMon
Faszinierend. :mrgreen:

Re: H4TH für den ZXmore

Verfasst: 09.12.2016, 18:45
von bokje
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? ;)

Re: H4TH für den ZXmore

Verfasst: 09.12.2016, 20:00
von PokeMon
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)

Re: H4TH für den ZXmore

Verfasst: 10.12.2016, 23:09
von PokeMon
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.

Re: H4TH für den ZXmore

Verfasst: 26.02.2017, 09:20
von bokje
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) 8719 mal betrachtet

Re: H4TH für den ZXmore

Verfasst: 26.02.2017, 11:57
von ZX-Heinz
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

Re: H4TH für den ZXmore

Verfasst: 28.10.2017, 16:08
von bokje
skorp.png
skorp.png (46.15 KiB) 7243 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) 7243 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)

Re: H4TH für den ZXmore

Verfasst: 28.10.2017, 17:54
von PokeMon
:shock: Unglaublich. Aber geil. 8)

Re: H4TH für den ZXmore

Verfasst: 28.10.2017, 23:00
von bokje
Danke Pokemon! Funktioniert der hires Treiber vielleicht auch auf dem ZXblast?

Re: H4TH für den ZXmore

Verfasst: 29.10.2017, 10:41
von PokeMon
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 ?

Re: H4TH für den ZXmore

Verfasst: 29.10.2017, 11:24
von bokje
Skorp (mit hpgl Datei) 35 Sekunden; Julia (durch JI) 25 Minuten :)

Re: H4TH für den ZXmore

Verfasst: 01.11.2017, 21:07
von bokje
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