Seite 2 von 5
Re: HP-GL Interpreter
Verfasst: 13.11.2019, 22:41
von kurt
Moin Bernd,
versuchs mal hier:
https://retrobrewcomputers.org/doku.php ... lerk:start
Unten auf der Seite sind die Download-Links
Gleitkomma-Rechnung:
An soetwas wie "Bruch-Rechnung" hatte ich gedacht. Da fallen mir gleich meine Sünden aus der Grundschule ein...,man war das schwer
Ich will die Hoffnung nicht gleich aufgeben, den sobald Bezug auf Gleitpunktrechnung genomen wird, bauen die Compiler immer gleich alles mögliche aus ihren Bibliotheken in den Code mit ein. Was meist im Ergebnis ein dickes Runtime-Modul und damit ein großes Programm bedeutet. Der von mir verwendete C-Compiler ist recht gut im einbinden von Assembler-Code. Vielleicht kann ich auf dem Wege die Sache klein halten. Das sehe ich aber erst, wenn ich mir dein Programm genauer ansehe. Da ich mein aktuelleas Hardware-Projekt soweit abgeschlossen habe, ist wieder Zeit für was anderes...
Gruß
Kurt
Re: HP-GL Interpreter
Verfasst: 14.11.2019, 13:53
von kurt
Moin,
ich habe mir den PASCAL-Code einmal genauer angesehen. Es werden global nur 2 Variablen als REAL benutzt. An anderer Stelle kommen noch welche als locale REAL's vor. Vom Zahlenwert her wird sicherlich nie +/-2^31 ueberschritten. Wenn dem so ist, wuerden 32-Bit Variablen ausreichen. Ich vermute einmal (ich habe nicht nachgesehen), dass das verwendetet Pascal keine 32-bit INTEGER kennt, deshalb die REAL's. Fuer die Portierung sind also nur einige zusaetzliche Math-Funktionen zu schreiben, welche die 4 Grundrechenarten in 32-Bit ausfuehren koennen plus convertieren 16-Bit <--> 32-Bit. Den entsprechenden Code habe ich bereits in meiner xgraph-Bibliotek vorliegen - die Elipse geht nur mit 32-Bit Rechnung. Das reduziert alles auf Fleißarbeit plus Copy-und-Paste. Eingedenk der Tatsache, das die Ueberraschung meist im Detail liegt, denke ich, das es machbar ist.
Gruß
Kurt
HP-GL Interpreter V2.4
Verfasst: 16.11.2019, 16:59
von bbock
Die Version 2.4 kommt mit folgenden Änderungen:
- Schreiben einer Konfigurationsdatei mit den Daten des ersten Durchlaufs, damit der erste Durchlauf bei erneutem Aufruf derselben Datei übersprungen werden kann. Die Konfigurationsdatei hat denselben Namen wie die HP-GL-Datei, nur mit der Endung ".cfg", also z.B. GIRL2.PLT -> GIRL2.CFG
Fehlt die Konfigurationsdatei, dann erfolgt ein normaler erster Durchlauf und die Datei wird erstellt.
- Schöneres Layout mit Rahmen
- Bessere Fehlerbehandlung, u.a. eigene Eingaberoutine für den Dateinamen
- Mehr Sourcecode-Kommentierung
- HPGL24_com.zip
- Ausführbare COM-Datei
- (10.16 KiB) 1027-mal heruntergeladen
Re: HP-GL Interpreter
Verfasst: 16.11.2019, 17:06
von bbock
kurt hat geschrieben: ↑14.11.2019, 13:53
...Vom Zahlenwert her wird sicherlich nie +/-2^31 ueberschritten. Wenn dem so ist, wuerden 32-Bit Variablen ausreichen. Ich vermute einmal (ich habe nicht nachgesehen), dass das verwendetet Pascal keine 32-bit INTEGER kennt, deshalb die REAL's. Fuer die Portierung sind also nur einige zusaetzliche Math-Funktionen zu schreiben, welche die 4 Grundrechenarten in 32-Bit ausfuehren koennen plus convertieren 16-Bit <--> 32-Bit. Den entsprechenden Code habe ich bereits in meiner xgraph-Bibliotek vorliegen - die Elipse geht nur mit 32-Bit Rechnung. Das reduziert alles auf Fleißarbeit plus Copy-und-Paste. Eingedenk der Tatsache, das die Ueberraschung meist im Detail liegt, denke ich, das es machbar ist.
...
Mit 32 Bit müsste man auskommen, ja. Die HP-GL-Parameter liegen normalerweise zwischen -10.000 und +10.000; ich habe noch nicht gesehen, dass sie 16 Bit überschreiten. Turbo Pascal auf der Joyce kennt tatsächlich keine 32-Bit-Integer; allerdings ist die Verwendung von Real-Werten wegen für die Berechnung der Skalierung bzw. Koordinatentransformation naheliegend. Für die Optimierung via Ganzzahlarithmetik gibt es verschiedene Ansätze. Ich erinnere mich noch an das Programm "Fractint" aus DOS-Zeiten, das mit Ganzzahlarithmetik sehr schnell Apfelmännchen berechnen konnte. Ich bin mal gespannt auf deine Lösung!
Grüße
Bernd
Re: HP-GL Interpreter
Verfasst: 21.11.2019, 20:05
von kurt
Moin,
32-bit Integer wird genuegen - also lag ich mit meiner Vermutung richtig. Das erleichtert mir die Arbeit. Ich bearbeite gerade den MCode-Block am Anfang von KERNEL.INC. Dast Du den Assembler-Code zur Hand ? Anhand des Hex-Codes die Befehle zu suchen ist doch etwas frickelig...
Wie mir aufgefallen ist, ist der Code "leicht" selbst modifizierend. Ich hoffe das vermeiden zu koennen, da der C-Compiler eventuelle Variablennamen im Assembler-Code akzeptiert und ungekehrt der Assembler diese richtig aufloest. Diese speziellen Klimmzuege waeren also nicht notwendig.
Gruß
Kurt
Re: HP-GL Interpreter
Verfasst: 03.12.2019, 17:55
von bbock
Hallo Kurt,
auf joyce.de habe ich den Sourcecode der Plot-Routine gefunden; ich glaube, das müsste die sein, die auch in KERNEL.INC als Hex-Werte enthalten ist:
http://joyce.de/software/turbo/trubo-06/GRAFINC-MAC.txt
Code: Alles auswählen
;************************
; PLOT / SYMBOL - MCode
; Turbo Pascal Version
; 1987 by M.A. & E. W.
; Vers. 10/8/87
; (incl. DotColor)
; (incl. Scr_Access)
;************************
;
.Z80
ASEG
ORG 100h
;
START EQU 0F400h
XBIOS EQU 0FC5Ah
RUN_SCR EQU 00E9h
;
.PHASE START
;
_PLOT:
;
LD DE,(_X)
LD HL,(_YM)
;
LD BC,PLOT
CALL XBIOS
DW RUN_SCR
RET
;
;
_X: DS 2
_YM: DS 2
;
;
PLOT:
LD A,03
AND D
LD D,A
PUSH HL
LD H,00
ADD HL,HL
LD BC,0B600h
ADD HL,BC
LD C,(HL)
INC HL
LD B,(HL)
LD A,C
AND 0F8h
LD L,A
LD H,B
ADD HL,HL
ADD HL,DE
LD A,L
AND 0F8h
LD L,A
LD A,C
AND 07
OR L
LD L,A
LD A,E
AND 07
INC A
LD B,A
XOR A
SCF
LOOP:
RRA
DJNZ LOOP
POP BC
LD C,A
LD A,B
CP 00
JR NZ,CLEAR
LD A,C
OR (HL)
LD (HL),A
RET
CLEAR:
CP 01
JR NZ,REVERSE
LD A,C
CPL
AND (HL)
LD (HL),A
RET
REVERSE:
CP 02
JR NZ,STATUS
LD A,C
XOR (HL)
LD (HL),A
RET
STATUS:
CP 03
RET NZ
LD A,C
AND (HL)
LD (_YM+1),A
RET
;
;
_SYMB:
;
LD BC,SYMBOL
CALL XBIOS
DW RUN_SCR
RET
;
SYMBOL:
LD HL,_TABLE
LD BC,0008H
LD DE,0000H
LDIR
RET
;
_TABLE: DS 8
;
;
_GET:
;
LD BC,GETMAT
CALL XBIOS
DW RUN_SCR
RET
;
GETMAT:
LD HL,0000H
LD BC,0008H
LD DE,_TABLE
LDIR
RET
;
;
_SCRACC:
LD BC,ACCESS
CALL XBIOS
DW RUN_SCR
RET
;
ACCESS:
LD E,0 ; (<- Column)
LD A,0 ; (<- Row)
LD D,0
RLCA
RLA
RLA
RLA
LD L,A
LD A,D
ADC A,0B6H
LD H,A
LD A,(HL)
INC HL
LD H,(HL)
LD L,A
EX DE,HL
ADD HL,HL
ADD HL,HL
ADD HL,DE
ADD HL,HL
LD BC,0008H
LD A,0 ; (<- Access Mode)
CP 0 ; ( = READ?)
JR NZ,WRITE
LD DE,_TABLE
LDIR
RET
WRITE:
EX DE,HL
LD HL,_TABLE
LDIR
RET
;
.DEPHASE
END
HP-GL Interpreter 3.0
Verfasst: 19.04.2020, 09:49
von bbock
Die neue Version 3.0 des HP-GL Interpreters kann die erzeugte Grafik als PBM-Datei speichern, wenn man einen entsprechenden Dateinamen eingibt:
Wenn man keinen Dateienamen bei "Enter PBM output filename" angibt, dann wird auch keine PBM-Datei erzeugt. Die Dateiendung ".pbm" muss mit eingegeben werden; sie wird nicht automatisch angehängt.
Die beiden ZIP-Dateien enthalten den Source Code bzw. die ausführbare COM-Datei.
- HPGL30_src.zip
- HP-GL Interpreter V3.0 Source Code
- (11.46 KiB) 948-mal heruntergeladen
- HPGL30_com.zip
- HP-GL Interpreter V3.0 COM-Datei
- (10.79 KiB) 897-mal heruntergeladen
Das nächste kleine Projekt ist auch bereits geplant: Ein Programm zum Anzeigen von PBM-Dateien auf der Joyce.
Re: HP-GL Interpreter
Verfasst: 19.04.2020, 10:26
von kurt
Moin Bernd,
Du bringst mich in Zugzwang bezüglich des HPGL-Interpreters. Die Treiber für die seriellen Schnittstellen & den I2C-Bus (am Multicomp) samt Doku haben mich bis vor einer Woche reichlich beschäftigt. Dafür kann ich aber jetzt diese Punkte als "benutzbar" abhaken. Insbesondere die Sache mit der (I2c-) RT-Clock war mir so wichtig, dass ich das Interpreter-Projekt als Nachfolgeprojekt zurückgestelt habe. Mein Plan ist, den Interpreter zum "Bitte 8-Bit"-Treffen (wenn es denn hoffentlich stattfinden kann) fertig portiert zu haben. Mir fehlt einfach Software, mit der ich die Pixelgrafik beschäftigen kann, unter CPM gibt es nichts gescheites...
Schau'n mer mal..
Kurt
Re: HP-GL Interpreter
Verfasst: 19.04.2020, 10:46
von kurt
Ich antworte mir mal selbst, hab' zu schnell auf 'Senden' gedrückt.
Da die Sache auf Deiner Seite immer umfangreicher wird, erscheint es mir sinnvoll, mein ursprüngliches Konzept dahingehend abzuändern, dass ich versuche die C Header-Dateien als Pascal INC-Dateien zu verfassen und damit loslege. So weit daneben liegen meine Grafik-Calls verglichen zum Joyce nun doch nicht. Das könnte vorerst sinnvoller sein, außerdem ergibt so ein 2tes Standbein. Mal sehen, auf was für Probleme ich stoße, wenn ich Turbo-Pascal installiere, von der Benutzung ganz zu schweigen
Gruß
Kurt
PBM Reader
Verfasst: 20.04.2020, 17:59
von bbock
Weil die neue Version des HP-GL Interpreters jetzt auch die Grafiken als PBM-Dateien speichern kann, ist ein Programm zum Anzeigen ebendieser Dateien natürlich recht nützlich. Mein Programm pbmread kann interaktiv oder über die Kommandozeile benutzt werden:
- Für den interaktiven Betrieb startet man das Programm einfach mit pbmread ohne weitere Parameter. Es wird ein Dialog zur Eingabe des PBM-Dateinamens angezeigt; nach Eingabe des Dateinamens wird die Datei gelesen und angezeigt.
- Man kann die anzuzeigende PBM-Datei auch direkt auf der Kommandozeile angeben, z.B. pbmread girl2.pbm
- pbmread_src.zip
- Source Code von pbmread V1.0
- (8.54 KiB) 898-mal heruntergeladen