Robotrontechnik-Forum

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

Robotrontechnik-Forum » Technische Diskussionen » Zugriff auf Portadressen unter MicroDOS Assembler KC85 » Themenansicht

Autor Thread - Seiten: -1-
000
26.12.2024, 18:23 Uhr
mwd



Hallo,
wie kann ich unter MicroDOS (ML-DOS) am geschicktesten auf z.B. die Module M001 und M010 zugreifen? Im Grundgerät nutze ich die Assemblerbefehle IN und OUT bzw. in BASIC die Anweisungen INP und OUT. Wie das für Druckertreiber unter MicroDOS funktioniert steht im Handbuch für den Programmierer. Ich könnte also im Grundgerät (D001) kleine Unterprogramme mit den IN und OUT Anweisungen ablegen und über den Koppel-RAM kommunizieren. Aber wie geht das genau? Wie spreche ich diese kleinen Routinen aus MicroDos in eigenem Assemblercode an? Direkt kann ich ja die Kanaladressen (z.B. 4 bis 7 für M001) aus MicroDos nicht ansprechen, oder?
Das Modulschalten geht über ESC Funktion 0x63. Kann ich vlt. mittels ESC Funktion auch von Kanaladressen lesen und schreiben?
Vielen Dank für eure Hilfe und viele Grüße,
Matthias.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
001
26.12.2024, 22:49 Uhr
susowa




Zitat:
mwd schrieb
Ich könnte also im Grundgerät (D001) kleine Unterprogramme mit den IN und OUT Anweisungen ablegen und über den Koppel-RAM kommunizieren. Aber wie geht das genau?



Da gibt es keine "Standardbeschreibung". Ab ZAS 1.3 wird der RAM im D001 von ZAS verwaltet:

https://web.archive.org/web/20220815063818fw_/https://www.iee.et.tu-dresden.de/~kc-club/02/KCN97-04/KCN97-04-16.HTML

Man kann freie (temporäre) Speicherpage(s) beantragen, dort seinen Code ablegen und am Programmende wieder freigeben (ESC m / ESC T / ESC l).


Zitat:
mwd schrieb
Wie spreche ich diese kleinen Routinen aus MicroDos in eigenem Assemblercode an?



Mit ESC U, wobei die zurückgegebene Pageadresse von ESC m zu verwenden ist.


Zitat:
mwd schrieb
Direkt kann ich ja die Kanaladressen (z.B. 4 bis 7 für M001) aus MicroDos nicht ansprechen, oder?



Nein.


Zitat:
mwd schrieb
Kann ich vlt. mittels ESC Funktion auch von Kanaladressen lesen und schreiben?



Nein.

Ich hatte Dich hier in Beitrag 03 bereits auf ein Programm / einen Quelltext verwiesen, wo diese Vorgehensweise benutzt wird:

https://www.robotrontechnik.de/html/forum/thwb/showtopic.php?threadid=15187

aktueller Link:

http://kc85.info/index.php/download.html?view=download&id=192:picgen20&catid=6


MfG susowa

Dieser Beitrag wurde am 27.12.2024 um 17:22 Uhr von susowa editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
002
27.12.2024, 16:10 Uhr
mwd



Danke! Muß ich wohl etwas probieren. Ganz klar ist mir das noch nicht. Wo finde ich übrigens HELP-Dateien zu ZAS? Dort sollte man eine komplette Übersicht aller Steuercodes und ESC-Funktionen finden.

Viele Grüße.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
003
27.12.2024, 17:12 Uhr
susowa




Zitat:
mwd schrieb
Wo finde ich übrigens HELP-Dateien zu ZAS



Das ist das letzte vollständige Archiv mit ZAS 1.6 :

http://kc85.info/index.php/download.html?view=download&id=214:zasv16&catid=35

Die beiden Hilfedateien gelten aber auch für ZAS 1.7.

Das, was Du suchst ist in zasmem.hlp beschrieben, kann u.a. mit dem KC-Commander angeschaut werden.


Zitat:
mwd schrieb
Ganz klar ist mir das noch nicht.



So habe ich auch angefangen :-). Du hast aber einen Vorteil mit einer vorhandenen Quelle zum "verstehen" - das geht nur, wenn man damit selbst etwas macht.


Ich hatte noch ein wichtiges Detail "weggelassen". Der Code im Grundgerät muss verschieblich bleiben, da ZAS bestimmt, wohin er geladen wird. Das steht zwar auch in der HLP aber nicht in rot !

Bei Aufruf von eigenen Unterprogrammen CALL mit F00FH benutzen (Relativer Unterprogrammaufruf für verschiebliche Programme mit UP-Abstand unmittelbar nach Aufruf) und JP ... nicht verwenden. Die absoluten Lade/Speicher-Befehle auf Adressen innerhalb des eigenen Codes sind auch mehr oder weniger tabu, dafür besser den Koppel-RAM verwenden.

MfG susowa

Dieser Beitrag wurde am 27.12.2024 um 19:29 Uhr von susowa editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
004
27.12.2024, 20:14 Uhr
maleuma



Besser hätte ich das auch nicht erklären können

Vom D004-Prozessor hast Du keinen direkten Zugriff auf Portadressen des Grundgerätes. Du brauchst immer ein Hilfsprogramm im Grundgerät, welches das übernimmt. Und genau für solche Fälle haben wir uns damals das Treibersystem von ZAS ausgedacht.
ZAS bestimmt dabei, auf welcher Adresse im Grundgerät der Treiber läuft. Deshalb muss das verschieblich sein. Und als Programmierer vom D004 greifst Du dann über ESC-Befehle auf die Treiberfunktionen zu.

Bei Fragen, einfach noch einmal hier melden.
--
Mario.
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