Robotrontechnik-Forum

Registrieren || Einloggen || Hilfe/FAQ || Suche || Mitglieder || Home || Statistik || Kalender || Admins Willkommen Gast! RSS

Robotrontechnik-Forum » Technische Diskussionen » "Vollgrafikerweiterung nach KRT 11 und FA 7/91" auf den Z1013 » Themenansicht

Autor Thread - Seiten: -1-
000
22.04.2013, 19:57 Uhr
funkheld



Hallo, guten Abend.
Ich habe mal ein bitte an die vergangenen produktiven Zeiten.

Es gibt doch hier bestimmt noch lebende Produzenten von der "Vollgrafikerweiterung nach KRT 11 und FA 7/91" auf den Z1013 ?

Irgendwo müssen doch noch verstaubte Unterlagen liegen, wie man diese Grafik über bestimmte Adressen im Kern anspricht und auf den Screen darstellt ? Die mühe mit der Entwicklung kann ja eigentlich nicht in der Versenkung verschwunden sein.
Wurden doch bestimmt nachgebaut und auch ausprobiert auf einem Z1013.

Wer kann hier weiterhelfen , mit dem Programmierwissen ?

Hallo Jens, du hast doch diesen Kern in deinem wunderbaren JKcemu reingesetzt, hast du da auch evtl den Source-code parat ? In welchen Java-Teil ist der nachzulesen oder kannst du bitte darüber mal etwas schreiben ?

Ich finde es spannned den Z1013 mal mit Grafik zu sehen.


Danke.


Gruss
peter

Dieser Beitrag wurde am 22.04.2013 um 20:03 Uhr von funkheld editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
001
22.04.2013, 20:17 Uhr
HONI



Schau mal auf Volker Pohlers Seite, da liegen alle Unterlagen. Ulrich hat auch schon zwei funktionierende Labormuster gebaut.

MfG HONI!!
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
002
22.04.2013, 21:34 Uhr
jmueller



@funkheld:

Den JKCEMU-Source-Code gibt es auf meiner Homepage zum Download.
In der ZIP-Datei ist es dann die Datei src/jkcemu/emusys/Z1013.java
und darin dann die Methode getColorIndex( int x, int y )

Die Quelldateien haben Unix/Linux-Zeilenendezeichen,
kann man sie also mit dem Windows-Textpad nicht gescheit öffnen.
Es geht aber z.B. mit dem JKCEMU-Texteditor.
Mit dem kann man auch ins Windows-Format konvertieren (Speichern unter...).

Aber ehrlich gesagt, denke auch ich, du solltest dir die Veröffentlichungen
in KRT 11 und FA 7/91 ansehen (siehe Volkers Homepage).
Mehr hatte ich nämlich auch nicht zur Verfügung.

Jens
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
003
22.04.2013, 21:55 Uhr
funkheld



Danke.
Das habe ich noch auf der Homepage gefunden:
----------------------------------------------------------------------
In der Folge erscheinen 2 zusätzliche Beiträge im Funkamateur, die eine Leiterplattenvorlage und erste Software und im zweiten Artikel einen Zusatz für das HCBASIC+ beschreiben, mit dem vom BASIC aus komfortabel die Grafik genutzt werden kann.

■fa-91-7, S.384ff. A. KÖHLER: Punkt für Punkt - Vollgrafikroutinen für den Z1013
■fa-92-8, S.561ff. V. Göritz: KC-BASIC+ mit Vollgrafik
--------------------------------------------------------------------------

Wo findet man diese Beschreibung für den Z1013 ? Auf Volkers Seite sind die beiden nur aufgelistet, man kann diese nicht öffnen .

Hier ist ein Basicprogramm (unten) :
http://hc-ddr.hucki.net/wiki/doku.php/z1013:literatur:practic-88-2-1

Wenn ich aber das Basic und die Vollwertgrafik einschalte im JKcemu , läuft das Programm nicht. Vielleicht ist das eingebaute Basic nicht richtig dazu, weil man schreibt : .....10k-Basicinterpreter erzeugtes 'Seepferdchental'.....


Danke.

Gruss
peter

Dieser Beitrag wurde am 22.04.2013 um 22:24 Uhr von funkheld editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
004
22.04.2013, 23:11 Uhr
Lötspitze



Hallo Peter,

die practic-Vollgrafik, zu der das Basicprogramm gehört, ist nicht kompatibel mit der FA-Grafik. Das vorliegende Programm beschreibt direkt den Bildspeicher ab 4000h.
Bei der FA-Grafik brauchst Du wahrscheinlich das Programm vom FA Seite 385ff. Ich kenne das Programm allerdings nicht bzw. habe es auch nicht als Datei.

Gruß Matthias
--
___________________
...geboren, um zu löten.

Wer rennen soll, muß auch mal stolpern dürfen.

Dieser Beitrag wurde am 22.04.2013 um 23:17 Uhr von Lötspitze editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
005
23.04.2013, 07:33 Uhr
volkerp
Default Group and Edit
Avatar von volkerp

@Peter: Du hast Mail.
--
VolkerP

http://hc-ddr.hucki.net
(Z9001, Z1013, LC-80, ...)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
006
23.04.2013, 13:42 Uhr
funkheld



Hallo, danke für die Unterlagen, die sind wundarbar.
Kann jetzt die Grafik einschalten , Screen löschen und einen Punkt setzen aus deiner Programmsammlung in ASM.

Die Grafik mit dem Z1013 ist Superinteressant.


Gruss
peter

Dieser Beitrag wurde am 24.04.2013 um 09:23 Uhr von funkheld editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
007
24.04.2013, 09:23 Uhr
funkheld



Hallo, guten Tag.
Ich find es Toll wie ihr das mit der Grafik gemacht habt.

Für die fa91.bin wird diese Aussage gemacht :
-------------------------------------------------
Der Aufruf erfolgt nach abgeschlossener
Parameterübergabe durch ein CALL auf
folgende Adressen:

Punkt setzen: POINT DA20H
Grafik ein: EIN DA6CH
Grafik aus: AUS DA6FH
Grafik löschen: CLS DA72H
Linie ziehen: DRAW DA9BH
-------------------------------------------------
Wird der Call von Basic aus gemacht oder ist das ein Call-Aufruf zu dieser Routine aus einem ASM-programm raus?



-----------------------------------------
Nutzung aus KC-BASIC+ der grafik.bin "kc-grafikzusatz FA 92"
Der Interpreter muß mit einer Endadresse von maximal 53247 initialisiert sein,
damit der Standort oberhalb des BASIC-Speichers liegt. Eventuell ist bei zuvor
schon erfolgter Initialisierung mit CLEAR das Speicherende festzulegen. Dann
kann man das Grafikprogramm durch CALL*D000 aktivieren. Hierdurch werden im
BASIC neue Worte definiert.
------------------------------------------
Ich habe mehrere Basic-Varianten. Welche ist es bitte ?
Wo muss das Basic hingeladen werden damit mit dem Call*D000 die neuen Basicroutinen aktiv werden?
Bei C000 geht ja kein Basic , weil es ca 10Kb gross ist und dann in den D000-Bereich reingeht.

PS: Gibt es Source-Code für die grafik.bin , die im Ordner "kc-grafikzusatz FA 92" liegt ?

Danke.

Gruss
peter

Dieser Beitrag wurde am 24.04.2013 um 09:27 Uhr von funkheld editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
008
24.04.2013, 11:32 Uhr
volkerp
Default Group and Edit
Avatar von volkerp

Du brauchst genau das genannte Basic KC-BASIC+ von V.Lühne/IG-HC TU Dresden in der RAM-Version.
--
VolkerP

http://hc-ddr.hucki.net
(Z9001, Z1013, LC-80, ...)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
009
24.04.2013, 12:08 Uhr
funkheld



Jup, danke.

http://hc-ddr.hucki.net/wiki/doku.php/z1013:software:hc-basic
Das finde ich in der Basicsammlung-Zip nicht.

Wo steckt das Ding ?


Gruss
peter

Dieser Beitrag wurde am 24.04.2013 um 13:26 Uhr von funkheld editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
010
24.04.2013, 14:18 Uhr
funkheld




Zitat:
In der Folge erscheinen 2 zusätzliche Beiträge im Funkamateur, die eine Leiterplattenvorlage und erste Software und im zweiten Artikel einen Zusatz für das HCBASIC+ beschreiben, mit dem vom BASIC aus komfortabel die Grafik genutzt werden kann.

■fa-91-7, S.384ff. A. KÖHLER: Punkt für Punkt - Vollgrafikroutinen für den Z1013
■fa-92-8, S.561ff. V. Göritz: KC-BASIC+ mit Vollgrafik

Irgendwie bin ich jetzt ein wenig durcheinander ...konfuses.
Im Text wird vom HCBASIC+ geschrieben und im Artikel darunter (fa-92-8) vom KC-BASIC+ ???

Danke.

Gruss
peter
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
011
24.04.2013, 16:27 Uhr
volkerp
Default Group and Edit
Avatar von volkerp

HCBASIC+ ist das KC-BASIC+. Auch KC-BASIC+m und KC-BASIC+m1 funktionieren mit der Vollgrafik.

Beachte, dass der Treiber noch gepatcht werden muss, sonst stürzt BASIC nach CALL*D000 nur ab. " Ab D0FEH wird ein JMP zum Einschalten, und ab D0EF ein CALL zum Ausschalten eingetragen." hier muss RET bzw. 3x NOP rein.
--
VolkerP

http://hc-ddr.hucki.net
(Z9001, Z1013, LC-80, ...)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
012
24.04.2013, 16:52 Uhr
funkheld



Jup danke.

Kannst du mir bitte den Treiber(Binärdaten) einmal patchen ? Du verstehst den Inhalt der binären Datei viel besser wie ich.

Danke.

Gruss
peter

Dieser Beitrag wurde am 24.04.2013 um 16:57 Uhr von funkheld editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
013
25.04.2013, 09:48 Uhr
funkheld



Hallo Volker, vielen dank für deine ausführliche Hilfe bei der Grafikherstellung.

Das Basicprogramm funktioniert mit KC-BASIC+ m1.Z80 und dem hc-basic+.z80. Beim Z1013 ist die X-Achse und Y-Achse vertauscht gegenüber der Mathematik , daran muss man sich erst gewöhnen.

Alle Grafikbefehle sind sehr schnell.
Damit lässt sich auch in Basic eine schöne Spielerei produzieren.
Toll finde ich, wenn man sich im Textmodus befindet , das man auch unsichtbar im Hintergrund weiterzeichnen kann und sich wieder draufschalten kann ohne das der Grafikscreen gelöscht ist, welches sich durch die vielfältigen PEN 0-3 Befehle realisieren lässt.

Ich kann hier nur ermuntern, diese Grafik im Z1013 mal auszuprobieren.
Auch der Jkcemu-Z1013 kann dem echten Z1013 das Wasser reichen, wer keinen Z1013 besitzt mit einer Grafikerweiterung um die Grafikroutinen zu testen.



Danke.

Gruss
peter

Dieser Beitrag wurde am 25.04.2013 um 15:03 Uhr von funkheld editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
014
25.04.2013, 13:38 Uhr
funkheld



Hallo, guten Tag.

Auch in ASM funktioniert die Grafik wunderbar.


Quellcode:
CPU Z80

    ORG   100H

PEN0  EQU 0D0F5H
PEN1  EQU 0D0E1H
PEN2  EQU 0D0E5H
PEN3  EQU 0D0D4H
PSET  EQU 0D1AAH ; /L/H
LINE  EQU 0D1B2H ; /E/D/L/H/
LINETO EQU 0D1BBH ; /L/H

START:
    CALL PEN1
    CALL PEN0

    LD L,50
    LD H,50
    CALL PSET

    LD L,100
    LD H,90
    CALL LINETO

    LD E,10
    LD D,10
    LD L,40
    LD H,240
    CALL LINE

    LD L,128
    LD H,128
    CALL PSET

KREISE:
    JP KREISE
    RET

    END

Danke.

Gruss
peter

Dieser Beitrag wurde am 25.04.2013 um 13:39 Uhr von funkheld editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
015
25.04.2013, 13:41 Uhr
funkheld



Grafikbefehle in das FORTH einbauen.

Wie kann man bitte die Grafikbefehle in das FORTH-ASM einbauen ohne den FORTH-Assembler zu bemühen ? So das man beim Compilieren des FORTH gleich die Befehle mit drin hat. Funktioniert das überhaupt ?


Quellcode:
; File Name   :    c:\user\hobby\hobby0\f83 fg forth\z1013\f83 1.3    bcb2.rom
; Format      :    Binary file
; Base Address:    0000h Range: 0200h - 2A20h Loaded length: 2820h

; F83 Version V1.3 Th. Beierlein 1988
; Anpassung Z1013 A.2 Andreas Driesel 1988
; reass. VPohlers 11/2010

        cpu    Z80

        org     200h

start:        ld    a, 0C3h        ; jp
        ld    (18h), a
        ld    a, 40h ; '@'    ; lo(rst18)
        ld    (19h), a
        ld    a, 2        ; hi(rst18)
        ld    (1Ah), a
        jp    start1

;
        db    0
        db    0
        db    0
............................
............................

Danke.

Gruss
peter

Dieser Beitrag wurde am 25.04.2013 um 13:44 Uhr von funkheld editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
016
25.04.2013, 14:33 Uhr
volkerp
Default Group and Edit
Avatar von volkerp

so schnell ist das nicht gemacht. lowlevel-Worte setzen einiges Wissen über Forth voraus. Die Primitiven für Grafig ein/aus/Punkt setzen/löschen sollten in (FORTH-)Assembler programmiert werden. Hinweise dazu und auch weiterführende Forth-Worte zum Aufbau eines Grafik-Vokabulars findest Du z.B. in R. Zech, Forth83.
--
VolkerP

http://hc-ddr.hucki.net
(Z9001, Z1013, LC-80, ...)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
017
25.04.2013, 16:08 Uhr
funkheld



Hallo, Volker.

Damit kann ich die Grafik in Forth einschalten und es wird auch eine Linie gezeichnet. Wenn ich im Grafikscreen die Taste drücke , kommen Bytes im Grafikformat auf den Screen. Ich verwende dieses Forth : f83 64k v2.z80 welches den Assembler schon drin hat.

1. Wie ist die Speichernutzung von diesem Forth ?
2. Wo ist die Obergrenze von diesem Forth ?
3. Wo gibt es den Sourcecode für dieses Forth ?

Dieses steht auf den Screen wenn das Forth startet :
Z80 FORTH 1.3 (Z1013)
AG FORTH
Th. Beierlein / A. Driesel

Ich glaube , du könntest bitte mal in dein Programmschatzkiste schauen ?


Quellcode:
HEX
D0F5 CONSTANT PEN0
D0E1 CONSTANT PEN1
D0E5 CONSTANT PEN2
D0D4 CONSTANT PEN3
D1AA CONSTANT PSET
D1B2 CONSTANT LINE
D1BB CONSTANT LINETO

CODE LINIE
   PEN0 #) CALL,
   PEN1 #) CALL,

   64 # L LD,
   64 # H LD,
   PSET #) CALL,

   10 # L LD,
   90 # H LD,
   LINETO #) CALL,
NEXT END-CODE

CODE GRAFOFF
   PEN3 #) CALL,
NEXT END-CODE

DECIMAL

Danke.

Gruss
peter

Dieser Beitrag wurde am 25.04.2013 um 16:38 Uhr von funkheld editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
018
25.04.2013, 16:30 Uhr
volkerp
Default Group and Edit
Avatar von volkerp

Das ist schon nicht schlecht. Du musst Register BC sichern (BC PUSH, ...Code... BC POP,). BC ist der Instructions Pointer für Forth und darf nicht verändert werden. Gleiches gibt für IY (Return Stack Pointer).
Daten werden über den normalen Stack übergeben (16 Bit), mit POP holen bzw. mit PUSH ablegen.
--
VolkerP

http://hc-ddr.hucki.net
(Z9001, Z1013, LC-80, ...)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
019
25.04.2013, 16:42 Uhr
funkheld



Hallo Volker, mich würden die Punkte 1-3 auch nochmal interessieren auch ausserhalb dieser Grafikgeschichte.
Wenn ich jetzt Punkte ausserhalb des Grafikscreens setze, spielt dann eigentlich das Grafikprogramm ab D000 verrückt ?

Habe jetzt die beiden Register gesichert.
Wenn der Textcursor nicht im Grafikscreen Bytes-Linien setzen soll , dann muss das ASM-Programm im Kreis laufen. Hast du dafür eine andere Forth-Lösung parat, das der Textcursor nicht als Byte erscheint ?

Ansonsten auch hier einen Schritt voran gekommen.


Quellcode:
HEX
D0F5 CONSTANT PEN0
D0E1 CONSTANT PEN1
D0E5 CONSTANT PEN2
D0D4 CONSTANT PEN3
D1AA CONSTANT PSET
D1B2 CONSTANT LINE
D1BB CONSTANT LINETO
DECIMAL

CODE LINIE
BC PUSH,
IY PUSH,
PEN0 #) CALL,
PEN1 #) CALL,

164 # L LD,
164 # H LD,
PSET #) CALL,

10 # L LD,
190 # H LD,
LINETO #) CALL,

164 # L LD,
160 # H LD,
PSET #) CALL,

IY POP,
BC POP,
NEXT END-CODE

CODE GRAFOFF
   BC PUSH,
   IY PUSH,
   PEN3 #) CALL,
   IY POP,
   BC POP,
NEXT END-CODE

Danke.

Gruss
peter

Dieser Beitrag wurde am 25.04.2013 um 17:01 Uhr von funkheld editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
020
25.04.2013, 17:06 Uhr
volkerp
Default Group and Edit
Avatar von volkerp

1 und 2 kann man der install.txt entnehmen:

"... Es gilt folgende Aufteilung:

ORIGIN (=320h) +
00H NOP
JMP COLD
04H NOP
JMP WARM
08H JMP CI ;warte auf Tastaturbetaetigung
0BH JMP CO ;Zeichenausgabe auf Console
0EH JMP CSTS ;True (-1), wenn Taste gedrueckt, kein Warten
11h JMP LO ;Zeichenausgabe auf Drucker
14H JMP BYE ;Sprung zum Betriebssytem
17H DW TOP ;oberste vom FORTH nutzbare Adresse
19H DW SOD ;erste Adresse, die die RAM-Disk belegen kann
1BH DW EOD ;letzte Adresse, die die RAM-Disk belegen kann

... Die Groesse der
RAM-Disk wird vom FORTH selbststaendig aus dem im Boot-Area
enthaltenen Werten errechnet. Eine Aenderung von Konstanten im
FORTH ist nach einer Aenderung der Boot-Area unnoetig. Es
sind die Bloecke 1 bis MAX# (Diskgroesse / B/BUF)
verfuegbar. "

ggf. sind also die Werte auf den Adressen 0337, 0339, 033B (TOP, SOD, EOD)anzupassen, damit der Grafiktreiber nicht überschrieben wird. Der Bereich von HERE bis (TOP) steht für FORTH-Worte zur Verfügung.


zu 3: ein Quellcode ist nicht verfügbar.
--
VolkerP

http://hc-ddr.hucki.net
(Z9001, Z1013, LC-80, ...)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
021
25.04.2013, 17:09 Uhr
funkheld



Hallo Volker, es gibt doch einen Befehl, wo ich die höchste Speicherobergenze in Forth setzen kann. Der Stack SP@ geht komischerweise bei der Abfrage nur bis 32056Kb und HERE liegt bei 21754Kb. Dann habe ich ja nur ca 10KB frei für die zusätzlichen Forthworte. Obwohl ich 64KB habe. Zumindest könnte der Stack doch locker bei ca 50000Kb liegen.

Darum wollte ich auch mal den Sourcecode anschauen.
Vielleicht ergibt sich ja noch etwas ?


Danke.

Gruss
peter

Dieser Beitrag wurde am 25.04.2013 um 17:20 Uhr von funkheld editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
022
25.04.2013, 17:28 Uhr
volkerp
Default Group and Edit
Avatar von volkerp

Schau ml auf die Adresse 0337, was hier hinterlegt ist.

HEX 337 @ .

Nach dem Forth-Bereich folgt der Speicher für die Screens (die sogenannte RAM-Disk). Die müssen ja auch irgendwo abgelegt werden. Du kannst über die 3 Speicherzellen den Platz für Forth und Screens nach Deinen Wünschen anpassen.
10K freier Forth-Speicher ist für kompilierte Forthworte seeeehr viel.
--
VolkerP

http://hc-ddr.hucki.net
(Z9001, Z1013, LC-80, ...)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
023
25.04.2013, 17:48 Uhr
funkheld



Hallo Volker. Danke für die Info.

Gruss
peter

Dieser Beitrag wurde am 26.04.2013 um 15:31 Uhr von funkheld editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
024
25.04.2013, 23:49 Uhr
funkheld



Hallo Volker, jetzt funktioniert die Grafik in Forth mit Variablen.
Ich habe jetzt aber nur BC gepusht.

GCLS > Screen einschalten und Pen1 zum schreiben setzen
GPSET > ein Punkt setzen
GLINETO > Linie vom letzten Punkt zum neuen Punkt
GLINE > Linie X0,Y0 nach X1 Y1
GOFF > in den Forth-Textmodus

PS : Das mit den Vertauschen der X und Y-Werte lag an der Verwechslung
vom Register H,L und D, E.


Quellcode:
HEX
D0F5 CONSTANT PEN0
D0E1 CONSTANT PEN1
D0E5 CONSTANT PEN2
D0D4 CONSTANT PEN3
D1AA CONSTANT PSET
D1B2 CONSTANT LINE
D1BB CONSTANT LINETO
DECIMAL

VARIABLE X0
VARIABLE Y0
VARIABLE X1
VARIABLE Y1

CODE GCLS
BC PUSH,
PEN0 #) CALL,
PEN1 #) CALL,
BC POP,
NEXT END-CODE

CODE GPSET
BC PUSH,
X0 #) A LD,
A H LD,
Y0 #) A LD,
A L LD,
PSET #) CALL,
BC POP,
NEXT END-CODE

CODE GLINETO
BC PUSH,
X1 #) A LD,
A H LD,
Y1 #) A LD,
A L LD,
LINETO #) CALL,
BC POP,
NEXT END-CODE

CODE GLINE
BC PUSH,
X0 #) A LD,
A D LD,
Y0 #) A LD,
A E LD,
X1 #) A LD,
A H LD,
Y1 #) A LD,
A L LD,
LINE #) CALL,
BC POP,
NEXT END-CODE

CODE GOFF
BC PUSH,
PEN3 #) CALL,
BC POP,
NEXT END-CODE

: GTEST
  GCLS

  128 X0 !
  128 Y0 !
  GPSET

  150 X1 !
  10 Y1 !
  GLINETO

  15 X0 !
  5 Y0 !
  15 X1 !
  240 Y1 !
  GLINE

  28 X0 !
  28 Y0 !
  GPSET

  0 X0 !
  0 Y0 !
  255 X1 !
  128 Y1 !
  GLINE

  KEY
  DROP
  GOFF
;

Gruss
peter

Dieser Beitrag wurde am 26.04.2013 um 09:28 Uhr von funkheld editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
025
26.04.2013, 15:33 Uhr
funkheld



Hallo, guten Tag.

Wo kann ich hier bitte die 3 Adressen finden ( 0337, 0339, 033B > TOP, SOD, EOD) : f83 64k v2.z80
Durch den Header ist alles verschoben.


Danke.

Gruss
peter

Dieser Beitrag wurde am 26.04.2013 um 17:34 Uhr von funkheld editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
026
27.04.2013, 10:35 Uhr
volkerp
Default Group and Edit
Avatar von volkerp

Das Programm beginnt ab Adresse 200h. Also ist die Dateiposition eigentlich 337h-200h=137h. Hinzu kommen noch 20h Bytes für den Header, macht final die Dateiposition 157h.

Normalerweise ändert man das direkt in FORTH. Dann erspart man sich das Umhergerechne und Patchen.

HEX 6000 337 ! 6000 339 ! SAVE-SYSTEM
--
VolkerP

http://hc-ddr.hucki.net
(Z9001, Z1013, LC-80, ...)

Dieser Beitrag wurde am 27.04.2013 um 10:37 Uhr von volkerp editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
027
27.04.2013, 10:42 Uhr
volkerp
Default Group and Edit
Avatar von volkerp

Statt Variablen solltest Du Forth-üblich den Stack nutzen, z.B.


Quellcode:
CODE GPSET
DE POP,
HL POP,
E H LD,
BC PUSH,
PSET #) CALL,
BC POP,
NEXT END-CODE

Dann kannst Du direkt mit "28 37 GPSET" Punkte setzen.
--
VolkerP

http://hc-ddr.hucki.net
(Z9001, Z1013, LC-80, ...)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
028
27.04.2013, 13:46 Uhr
funkheld



Hallo, guten Tag.


Quellcode:

DE POP,
HL POP,
E H LD,
BC PUSH,
PSET #) CALL,
BC POP,
NEXT END-CODE

Die Variablen nehme ich dann später noch für andere Zwecke, evtl wenn ich dann zb 300 Daten in den Forth-Speicher vom USB-Stick lese und dann damit die Grafik zeichne.

Wie werden dann die 4 Daten für eine Linie eingelesen : D E H L
10 10 200 34 GLINIE

Danke.

Gruss
peter

Dieser Beitrag wurde am 27.04.2013 um 14:11 Uhr von funkheld editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
029
27.04.2013, 14:37 Uhr
volkerp
Default Group and Edit
Avatar von volkerp


Zitat:
funkheld schrieb
Wie werden dann die 4 Daten für eine Linie eingelesen : D E H L
10 10 200 34 GLINIE

Das kannst Du analog umsetzen, durch passendes Registerjonglieren. Zahlen liegen immer als 16-Bit-Wert auf dem Stack und werden durch POP DE/HL/.. vom Stack geholt.
--
VolkerP

http://hc-ddr.hucki.net
(Z9001, Z1013, LC-80, ...)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
030
27.04.2013, 16:54 Uhr
funkheld



Habe es mal so gemacht für die Linie:

Quellcode:
CODE GLINE
DE POP,
HL POP,
E H LD,
DE POP,
E A LD,
DE POP,
E D LD,
A E LD,
BC PUSH,
LINE #) CALL,
BC POP,
NEXT END-CODE

Und mit diesem Aufruf werden die 2 Linien und der Punkt gesetzt.

Quellcode:
: GTEST
  GCLS
  1 1 255 255 GLINE
  128 200 GPSET
  1 255 GLINETO
  124 196 GPSET
  KEY
  DROP
  GOFF
;

Danke.

Jup, dann funktioniert jetzt schon mit deinem Forth zusammen einwandfrei der USB-Stick : SAVE-SYSTEM, GET , PUT und die Grafik(fa92) ohne das gegenseitige Störungen auftreten. Da ich den Speicher nach oben hin begrenzt habe , bei A000 liegt die USB-Routine und bei D000 die Grafik, ist der der Screenbereich für die Forth-Screen kleiner und ich kann zb kein Programm mit 20 Screens in einem Stück reinschieben sondern stückle das ein bisschen.
Das habt ihr ja auch schon mit dem Assembler gemacht mit Teilen 1-5. Geht auch wunderbar.

Gruss
peter

Dieser Beitrag wurde am 27.04.2013 um 17:35 Uhr von funkheld editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
031
28.04.2013, 10:56 Uhr
Lötspitze




Zitat:
Das kannst Du analog umsetzen, durch passendes Registerjonglieren. Zahlen liegen immer als 16-Bit-Wert auf dem Stack und werden durch POP DE/HL/.. vom Stack geholt.

Hallo Volker,

die Frage paßt vielleicht hier gleich rein: wenn im CP/M aus BASIC heraus mit einem "CALL (V,W,X,Y,Z)" Parameter übergeben werden, in welcher Reihenfolge liegen die dann auf dem Stack? Ist "Z" dann das oberste, d.h. die müssen dann rückwärts wieder geholt werden? Wenn die Werte kleiner/gleich FFh sind, wird das höherwertige Register beim BASIC-Call dann automatisch mit 00h beschrieben?

Gruß Matthias
--
___________________
...geboren, um zu löten.

Wer rennen soll, muß auch mal stolpern dürfen.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
032
28.04.2013, 11:07 Uhr
volkerp
Default Group and Edit
Avatar von volkerp

Welches BASIC meinst Du denn? Beim BASG/ZBASIC können keine Parameter übergeben werden. Hier solltest Du an einfachsten die Parameter auf festen Adressen übergeben, d.h. mit POKE/PEEK arbeiten.
Bei anderen BASICs musst Du die Handbücher bemühen...
--
VolkerP

http://hc-ddr.hucki.net
(Z9001, Z1013, LC-80, ...)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
033
28.04.2013, 15:01 Uhr
Lötspitze



BASI war gemeint. Aus dessen Beschreibung konnte ich das für >3 Parameter nicht genau herauslesen. Muß ich mir das bei den anderen mal anschauen.

Matthias
--
___________________
...geboren, um zu löten.

Wer rennen soll, muß auch mal stolpern dürfen.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
Seiten: -1-     [ Technische Diskussionen ]  



Robotrontechnik-Forum

powered by ThWboard 3 Beta 2.84-php5
© by Paul Baecher & Felix Gonschorek