Robotrontechnik-Forum

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

Robotrontechnik-Forum » Technische Diskussionen » HiSoftPascal disassemblier » Themenansicht

Autor Thread - Seiten: -1-
000
05.01.2025, 17:48 Uhr
Hobi



Eigentlich wollte ich nur herausfinden, wie man externen Speicher von Pascal aus nutzen kann. Das Speichern und Laden von Kassette ist nun wirklich nicht mehr zeitgemäß und dient nur noch Retrozwecken.

Herausgekommen ist ein teilweise dokumentiertes Assemblerlisting.

Es ist nicht 100% korrekt disassembliert, da einige Stellen aktiv den Disassembler verwirren sollen. Stellen wie:

scf
jr nc,<bloedsinn>

pop af
jr nc,<bloedsinn>

sollten wohl Verwirrung stiften. Leider waren nicht alle Stellen einfach zu erkennen, pop af braucht dann schon einen Debugger.

HiSoftPascal4 Assembler Listing

mit Adressinformationen
--
-------------------------------------------
Corontäne
-------------------------------------------

Dieser Beitrag wurde am 05.01.2025 um 17:48 Uhr von Hobi editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
001
05.01.2025, 19:13 Uhr
u-held



Sehr schön. Ich bin schon seit ein paar Wochen dabei, KC-Pascal 5.1 zu disassemblieren. Bis jetzt haben knapp 2/3 der Marken einen Namen bekommen, mit dem man etwas anfangen kann. Dann werde ich mal bei Dir spicken, wenn ich nicht mehr weiterkomme.

In welchen Bereichen stecken die Nebelkerzen mit "jr nc..."? Mir sind bisher keine solchen Stellen aufgefallen. Vielleicht hat die aber Albrecht Mugler schon aussortiert.

VG, Dietmar
--
Kompetenz simulieren
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
002
05.01.2025, 20:33 Uhr
maleuma



Hallo Dietmar,
das kling gut. Dann kannst Du ja das KC-Pascal an die DEVICE-Schnittstelle von CAOS 4.8 anpassen
--
Mario.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
003
05.01.2025, 20:33 Uhr
Hobi



ich habe es mit never_xxx markiert. Wobei ich nicht 100% weiss, ob es wirklich never bedeutet. Dann noch die Prefixe .dw 0xfd vor inc oder call.
--
-------------------------------------------
Corontäne
-------------------------------------------
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
004
06.01.2025, 08:09 Uhr
u-held




Zitat:
maleuma schrieb
Hallo Dietmar,
das kling gut. Dann kannst Du ja das KC-Pascal an die DEVICE-Schnittstelle von CAOS 4.8 anpassen



Oha. Na das kann dauern. Aber warum nicht? Man soll sich ja Ziele setzen im neuen Jahr.
--
Kompetenz simulieren
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
005
06.01.2025, 08:20 Uhr
u-held



Hallo Hobi,
m_2134 ist Teil des Code-Generators. Diese Prozedur schreibt das Byte, das hinter "call m_2134" steht, an die Zieladresse. Die Zieladresse des Code-Generators steht im Schattenregister HL'. Ich finde, das ist in m_2134 sehr elegant gelöst.
Beim Disassemblieren muss das Byte nach jedem "call m_2134" als Data betrachtet werden. Dann sehen die weiteren Bytes nach dem Call nicht mehr so sinnlos aus.

VG, Dietmar
--
Kompetenz simulieren
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
006
07.01.2025, 11:17 Uhr
ralle



Ich dächte, auch den Quelltext zu Pascex.kcc gefunden zu haben. Also der Diskettenerweiterung.
--
Gruß Ralle

Wenn Sie dazu neigen, Bedienungsanleitungen zusammen mit dem Verpackungsmaterial wegzuwerfen, sehen Sie bitte von einem derart drastischen Schritt ab!...
... Nachdem Sie das Gerät eine Weile ausprobiert haben, machen Sie es sich am besten mit dieser Anleitung und ihrem Lieblingsgetränk ein oder zwei Stunden lang in Ihrem Sessel bequem. Dieser Zeitaufwand wird Sie dann später belohnen...

aus KENWOOD-Bedienungsanleitung TM-D700
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
007
08.01.2025, 13:26 Uhr
u-held



Mein Arbeitsstand liegt im GitHub: https://github.com/duhlig/KC85_software/tree/main/kcpascal51_dasm.

Hallo Ralle, der Quelltext zu PasEx liegt u.a. im KC-Labor unter Download / Programmiersprachen / KC-Pascal.

VG, Dietmar
--
Kompetenz simulieren
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
008
08.01.2025, 13:33 Uhr
ralle



Aha. Weil 2000 wurde eine CD verteilt , mit reichlich viel Software und dem Video von ZDF.
--
Gruß Ralle

Wenn Sie dazu neigen, Bedienungsanleitungen zusammen mit dem Verpackungsmaterial wegzuwerfen, sehen Sie bitte von einem derart drastischen Schritt ab!...
... Nachdem Sie das Gerät eine Weile ausprobiert haben, machen Sie es sich am besten mit dieser Anleitung und ihrem Lieblingsgetränk ein oder zwei Stunden lang in Ihrem Sessel bequem. Dieser Zeitaufwand wird Sie dann später belohnen...

aus KENWOOD-Bedienungsanleitung TM-D700
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
009
08.01.2025, 13:59 Uhr
Hobi



Kommt das aus der gleichen Quelle, wie der Hisoft pascal Compiler ?
--
-------------------------------------------
Corontäne
-------------------------------------------
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
010
17.01.2025, 08:20 Uhr
u-held



Ich brauche mal etwas Nachhilfe in Z80-Programmierung. Das folgende Codeschnipsel ist ein Auszug aus PasEx und könnte auch in BasEx oder DevEx vorkommen. Ich weiß nicht, wie viel KC85-mit-D004-Spezifik darin steckt.


Quellcode:

ISRO:
    ld (ix+002h),000h        ;Blocknr.
    ld l,(ix+005h)        ;IO-Puffer
    ld h,(ix+006h)    
    ld bc,083f3h        ;C=Port, B=???
    ld e,00bh        ;Zähler f. Dateiname
SendName:
    outi        ;implizit: dec b
    inc b
    inc b
    dec e
    jr nz,SendName
    ld d,00bh        ;wird später gebraucht
NxtBlock:
    inc (ix+002h)        ;Blocknr.
    ld h,(ix+006h)
    ld l,(ix+005h)
    ld bc,081f2h        ;B wird überschrieben!
    ld e,080h        ;der neueZähler
SendBlock:
    outi
    inc b
    inc b
    dec e
    jr nz,SendBlock    



Mir geht es um die Verwendung von Register B. OUTI nutzt das ja als Zähler, der wie üblich bei jedem Aufruf um eins verringert wird. In beiden Schleifen wird B durch das doppelte INC pro Schleifendurchlauf um eins erhöht. Aber wozu? Nach der ersten Schleife, im vierten Befehl nach der Marke NxtBlock wird B überschrieben, ohne vorher benutzt worden zu sein.
--
Kompetenz simulieren
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
011
17.01.2025, 11:30 Uhr
kaiOr

Avatar von kaiOr

OUTI wird hier leicht zweckentfremdet genutzt, die Lösung ist sehr D004-spezifisch.

Der Koppelram im D004 wird vom Grundgerät nur über /IORQ angesprochen und das mittels 16Bit Adressierung (B-> A15...A8 und C -> A7...A0).
Die erlaubten Registerwerte:
B -> 0...FFh
C -> F0h...F3h
Damit haben wir 4 Seiten a 256Byte, also 1kByte.

Will man etwas vorwärts im Koppelram ablegen braucht man bei OUTI also doppeltes INC B.
Deshalb wurde in deinem Beispiel der eigentliche Zähler gleich nach E verfrachtet. Es gibt je nach Einsatzzweck aber schnellere Schleifen.
Noch wichtig (häufig falsch dokumentiert):
OUTI macht Pre-Dekrement mit B vor der Portausgabe!

Grüße,
Kai

Dieser Beitrag wurde am 17.01.2025 um 11:32 Uhr von kaiOr editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
012
17.01.2025, 15:03 Uhr
u-held



Danke Kai, wieder was gelernt.

VG, Dietmar
--
Kompetenz simulieren
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
013
17.01.2025, 17:26 Uhr
u-held



Dumme Frage: Könnte man den Block schneller hochladen, wenn man OUTDR nimmt und HL zu Beginn auf das Blockende setzt?
--
Kompetenz simulieren
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
014
17.01.2025, 18:36 Uhr
Hobi



eventuell kann man diesen Teil der Diskussion in einen neuen Thread verschieben.
--
-------------------------------------------
Corontäne
-------------------------------------------
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
015
17.01.2025, 21:06 Uhr
Dresdenboy



@u-held:
Edit (war erst auf dem falschen Dampfer): So ist es jetzt OTIR und B++ mit 2x INC und HL++. Dann wäre es mit OTDR auch gleichgerichtet B-- und HL--. Sollte also gehen.

@Hobi:
Ich glaube, das lohnt sich nicht.

VG,
Matthias
--
___________________________________
Produktionen im Rahmen der "The Computer Art Community" (Demoszene): https://demozoo.org/sceners/64936/, YT-Kanal: https://www.youtube.com/@4lpha0ne/videos
Programmierung seit '86 in BASIC: KC85/3, C64, A1200, PC | ASM: LC-80, C64, KC87, A1200, NeoGeo, PC, Mega 65, µC | Turbo Pascal: BIC, PC | C: RS/6000, Alpha, PC, µC | C++, Java, Javascript, Rust, Lua, Perl, PHP u.a. auf PC
HW: LC-80, BIC A5105 komplett, KC87, KC85/2-4, KCC, C64s, C16, Plus/4s, A500s, A1200, Mega 65, ESP32s, RasPis, PCs, Laptops, MR 610, ...

Dieser Beitrag wurde am 17.01.2025 um 21:22 Uhr von Dresdenboy editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
016
18.01.2025, 16:53 Uhr
Rüdiger
Administrator
Avatar von Rüdiger


Zitat:
Hobi schrieb
eventuell kann man diesen Teil der Diskussion in einen neuen Thread verschieben.



Man kann nicht Teile einer Diskussion verschieben.
--
Kernel panic: Out of swap space.
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