HRG und H4TH

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

HRG und H4TH

Beitrag von ZX-Heinz » 02.11.2017, 16:48

Ich möchte gern HRG zum Zeichnen unter H4TH auf dem NU verwenden, habe aber keine Ahnung von HRG. Meine Konfiguration:

1. H4TH sitzt dort im NU-ROM, wo sonst ZX80 liegt, und hat wie dieser auch 8k.
2. Es ist ein 32k-RAM gesteckt, das von 8192=#2000 bis 8192+32767=40959=#9FFF reicht. Weiter oben liegen nur Spiegelbereiche.

a) Welches HRG File muss ich wohin laden.
b) Welche CALLs zum Setzen eines Puinktes? Welche Register werden dazu verwendet? Gibt es einen line oder circle Befehl?

Alle Infos sind hilfreich.
Ich habe z.B. lisshrg8.p im EightyOne probiert (32k bzw. 48k RAM, RAM 8-16k), lief nicht.
Gruß, Heinz
Nachtrag 3.11.: lisshrg8.p läuft jetzt, HighRes war im EightyOne nicht aktiviert.
Zuletzt geändert von ZX-Heinz am 03.11.2017, 10:03, insgesamt 1-mal geändert.

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

Re: HRG und H4TH

Beitrag von bokje » 02.11.2017, 18:49

Hallo Heinz, vielleicht kann das :) Ein paar Ideen:

Code: Alles auswählen

HEX
32 +ORG U. ( POINTER TO VIDRFS )
32 +ORG @ U. ( VIDRFS )
VIDRFS ist:

Code: Alles auswählen

l0071:  ld      a,4ah
        ex      af,af'
        push    af
        push    bc
        push    de
        ld      bc,1809h
        ld      hl,l0098
        ld      (vidg0),hl
        ld      hl,(dspbuf)
        ld      a,0eah
        halt    
        out     (0fdh),a
        call    l0092
        out     (0feh),a
        pop     de
        pop     bc
        pop     af
        pop     hl
        ret     
Statt l0092 wird eine WRX16K Routine angerufen: http://www.user.dccnet.com/wrigter/inde ... torial.htm
Und z.B.:

Code: Alles auswählen

: WRX CODE ... ;C ;
' WRX 32 +ORG @ ! 

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

Re: HRG und H4TH

Beitrag von ZX-Heinz » 02.11.2017, 20:42

Hallo bokje,
vielen Dank für Deinen sehr gut verständlichen Vorschlag. Ich habe Dich so verstanden:
Im H4TH-ROM auf Adresse #0088 den CALL #0092 ersetzen durch die Adresse von WRX.

Für einen 16k ROM, bei dem WRX auf fester Adresse in der zweiten 8k-Bank eingetragen wird, ist das eine optimale Variante. Das werde ich einmal mit einem 16k-ROM auf dem EightyOne probieren.

Bei einem 8k-ROM, wie er im NU verwendet wird, sehe ich ein kleines Problem: WRX muss als Programm zugeladen werden. Dann ist die Adresse von WRX aber immer eine andere, falls WRX nicht stets als ERSTES Programm geladen wird. Das müsste natürlich beachtet werden. Lässt sich aber einrichten.

Bleibt noch der WRX16k-Code. Dein link führt zu W. Rigters Seite, und dort steht der Quelltext. Vielleicht gibt es aber auch ein fertiges BIN- oder besser HEX-Programm ? Falls nicht, so muss ich es in einen Assembler einladen.
Nachtrag: Ich habe mir den Quellcode angesehen. Da werden ein paar Routinen aus dem ZX81 ROM gerufen (z.B. BREAK). Dies müsste natürlich durch H4TH-Routinen ersetzt werden. Und WRX muss im RAM liegen, zumindest LBUF als virtueller Bildspeicher.

Die Anwendung ist mir noch nicht klar, da ich auch HRG nicht kenne. Wie setze (PLOT) ich einen Punkt? Wie muss ich die Koordinaten an WRX übergeben? Welche Register? (Ich habe mir den Quelltext bisher nicht angesehen) Sieht so aus, als würden die Punktkoordinaten durch HL übergeben.

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

Re: HRG und H4TH

Beitrag von bokje » 02.11.2017, 21:56

Ja, HL ist tatsächlich der Start einer 6K Bitmap, 32 (pro Linie) x 192 Bytes; 32 x 8 = 256 Bits => Pixels pro Linie. Die ZX81 Routinen sind nicht notwendig.

funkheld
User
Beiträge: 164
Registriert: 16.11.2010, 18:20

Re: HRG und H4TH

Beitrag von funkheld » 02.11.2017, 22:02

Habe vor zig Jahren hier mal die HRG angesprochen mit dem z88dk.
EightyOne auf 48Kb eingestellt und die hrg-64k.p geladen.

hrg-seite, da gibt es die Doku in deutsch.
http://www.swatosch.de/zx81/

HRG_Bank 00h
HRG_Unpoly 10h
HRG_On 01h
HRG_Xpoly 11h
HRG_Off 02h
HRG_Clr 12h
HRG_Pix 03h
HRG_Text 13h
HRG_UnPix 04h
HRG_Invert 14h
HRG_XPix 05h
HRG_HCopy 15h
HRG_Line 06h
HRG_UnText 16h
HRG_Unline 07h
HRG_XText 17h
HRG_Xline 08h
HRG_OverText 18h
HRG_Lineto 09h
HRG_Circle 19h
HRG_Unlineto 0ah
HRG_Uncircle 1ah
HRG_Xlineto 0bh
HRG_Xcircle 1bh
HRG_Box 0ch
HRG_UDGnew 1ch
HRG_Unbox 0dh
HRG_UDGset 1dh
HRG_Xbox 0eh
HRG_Poly 0fh


Beispiel :

Code: Alles auswählen

void hrg_on(){
#asm
	ld a,1
	call 0x7fe3
	ret
#endasm
}

void hrg_off(){
#asm
	ld a,2
	call 0x7fe3
	ret
#endasm
}

void hrg_clr(){
#asm
	ld a,0x12
	call 0x7fe3
	ret
#endasm
}

void hrg_linie(){
#asm
	ld a,0x06     //hrg_line
	ld bc,0x0000  //start(b)x=0,  (c)y=0
	ld de,0xffbf  //end  (d)x=255,(e)y=191
	call 0x7fe3
	ret
#endasm
}

void hrg_poly(){
#asm
	ld a,0x0f
	ld bc,0xffff
	push bc
	ld bc,0x0000
	push bc
	ld bc,0x0a64
	push bc
	ld bc,0x1432
	push bc
	call 0x7fe3
	ret
#endasm
}
Gruss

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

Re: HRG und H4TH

Beitrag von ZX-Heinz » 04.11.2017, 15:32

@bokje: WRX16K habe ich jetzt im Griff. Deine Idee wird also funktionieren. Danke für die Anleitung! :D

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

Re: HRG und H4TH

Beitrag von bokje » 05.11.2017, 14:07

Keine Ursache :)

funkheld
User
Beiträge: 164
Registriert: 16.11.2010, 18:20

Re: HRG und H4TH

Beitrag von funkheld » 07.11.2017, 09:09

Sieht so aus, als würden die Punktkoordinaten durch HL übergeben.
Nein, sondern durch BC.

Gruss

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

Re: HRG und H4TH

Beitrag von ZX-Heinz » 12.11.2017, 11:16

Hallo bokje,
ich brauche Hilfe. Das HighRes Programm WRX16K ruft einige ZX81-Routinen auf, für die ich H4TH-Ersatz brauche, denn ich will die zugehörigen Codes nicht aus dem ZX81-ROM kopieren. Dabei geht es um Folgendes:

CALL #0292: DISPLAY_3 im ZX81-ROM disassembly
CALL #0220: DISPLAY_1 im ZX81-ROM disassembly

Da dies die Bildentstehung und sSynchronisation betrifft, müssen in H4TH dazu äquivalente Routinen existieren. Hast Du die technischen Möglichkeiten, das H4TH-ROM nach den "GENE-Sequenzen" dieser beiden CALLs zu durchsuchen?
Schönen Sonntag und Gruß,
Heinz

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

Re: HRG und H4TH

Beitrag von bokje » 12.11.2017, 12:02

Hallo Heinz,

Diese Routinen sind nicht notwendig; Synchronisation ist schon da. "call wrx" statt "call l0092" ist ausreichend, mit:

Code: Alles auswählen

wrx:	ld b,7		; delay
	...
	jp nz,wrx_loop	; next line
        ret
Schönen Sonntag :)

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

Re: HRG und H4TH

Beitrag von ZX-Heinz » 12.11.2017, 12:39

@bokje: WRX16k beginnt mit
START LD IX,HR
RET
LBUF ...
...
HR LD B,7 ; delay
...
CALL LBUF+#8000
... JP NZ, HR1
...

Meinst Du wirklich, WRX erst ab HR als Code einzutragen? In LBUF wird der HFILE-vector in das refresh reg IR eingetragen. Das wird man doch unter H4TH-ROM auch brauchen, da ULA gesteuert?
Gruß, Heinz

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

Re: HRG und H4TH

Beitrag von bokje » 12.11.2017, 12:47

Ja, LBUF ist tatsächlich auch notwendig; die START Routine nicht.

Antworten