Robotrontechnik-Forum

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

Robotrontechnik-Forum » Technische Diskussionen » Arbeitsspeicher im KC85/3 und KC85/4 » Themenansicht

Autor Thread - Seiten: -1-
000
28.01.2011, 09:31 Uhr
Gast: Schnulli



Welchen Speicherbereich verwendet HC-BASIC?

Welche Bereiche sollte man nach Möglichkeit für eigene Anwendungen meiden (Konflikte mit anderen Programmen)?

Kann ich über 200H bis 7FFFH tatsächlich frei verfügen oder gibt es etwas zu beachten?
Seitenanfang Seitenende
(Gast) Zitatantwort || Editieren || Löschen
001
28.01.2011, 15:25 Uhr
susowa




Zitat:
schnulli schrieb
Kann ich über 200H bis 7FFFH tatsächlich frei verfügen oder gibt es etwas zu beachten?

Beim /2,3 geht es ohne Speichererweiterung nur bis 3FFFH, mit 16k Modul auf 4000H bis 7FFFH, mit 64 kB Modul bis BFFFH.
Ab /4 aufwärts geht es immer bis BFFFH im Grundzustand nach dem Einschalten.

Wenn BASIC aktiv ist, stehen diese Bereiche auch immer zur Verfügung, da der IRM (8000H bis BFFFH) bei Notwendigkeit automatisch aktiviert und nach Zugriff deaktiviert wird, er ist also aus Sicht von BASIC-Programmen (und auch von dort aufgerufenen MC-Programmen) immer aus.

Ist CAOS aktiv (gilt demzufolge auch für MC-Programme, welche per CAOS-Befehl gestartet werden), dann ist der IRM im Gegensatz zu BASIC in der Regel an (steuerbar per Epilogbyte). Man muss also für RAM-Zugriffe auf IRM-Adressen diesen selbst aus- und danach wieder einschalten und sollte CAOS-UP's während des Zugriffes nicht benutzen, die überprüfen in der Regel nicht, ob der IRM aktiv ist, dann landen Zugriffe auf IRM-Adressen im RAM.

Der RAM ist komplett frei ohne Einschränkungen, wenn man natürlich eigene Treiber für umgebogene CAOS-Funktionen mitlaufen lassen will, dürfen sich Programm und Treiber nicht "berühren". Treiber o.ä. nutzen meist BA00H bis BFFFH der ersten IRM-Ebene. Mit Vorsicht kann man auch noch 0000H bis 0100H dafür nehmen - wenn man aber beispielsweise ein D004 per JUMP FC startet, kopiert das EPROM-Starteprogramm FLOAD ab Adresse 0 aufwärts ...

MfG Ralf
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
002
28.01.2011, 18:01 Uhr
Gast: Schnulli



Wobei wir gleich beim nächsten Thema wären.

Wie setze ich sowas (Z8)

Quellcode:
...
ld r15,#low    Tabelle
ld r14,#high Tabelle
ldc r13,@rr14
...
Tabelle:
.ascii "0123456789ABCDEF"

in EDAS bzw. für den Z80 um?

Anderes Thema. Ist es normal das EDAS im KC85/4 "JR Marke" als Fehler kennzeichnet? In der M027-Doku steht, daß unbedingte relative Sprünge erlaubt sind. "JP Marke" funktioniert jedoch.

Dieser Beitrag wurde am 28.01.2011 um 18:02 Uhr von schnulli editiert.
Seitenanfang Seitenende
(Gast) Zitatantwort || Editieren || Löschen
003
28.01.2011, 18:43 Uhr
lux-O-mat



Hallo,

>Wie setze ich sowas (Z8)
>in EDAS bzw. für den Z80 um?

Ich nehme mal an, nach "ldc r13,@rr14" soll "0" in R13 stehen?

Versuch es mal so:

Quellcode:
LD HL,Tab
    LD A, (HL)

Tab:
    DEFM '012345'

*edit* Grad getestet...ich kriege auch einen Fehler mit JR ... bei EDAS, scheint also "normal" zu sein...

Gruß, Jan

Dieser Beitrag wurde am 28.01.2011 um 18:57 Uhr von lux-O-mat editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
004
28.01.2011, 19:42 Uhr
susowa




Zitat:
... ich kriege auch einen Fehler mit JR ... bei EDAS, scheint also "normal" zu sein...

Wenn ein Fehler kommt, gibt es auch eine Fehlernummer, welche im HB (3.4.2. Fehlermitteilungen) erklärt wird.

Die Beschreibung zu EDAS enthält keine solchen groben Fehler, sprich JR MARKE geht definitiv, wie auch alle anderen Z80 Befehle - selbst jahrelang damit programmiert.

MfG Ralf
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
005
28.01.2011, 21:21 Uhr
lux-O-mat



OK...grad nochmal probiert und festgestellt es liegt (bei mir) am M001
Ist das gesteckt passiert folgendes:

Quellcode:
START:   LD A,1
         JR START

Eingabe von ASM ohne Optionen liefert:


Quellcode:
END PASS 1
   ?>=<;:9876543210/.-,+*)( <usw.>
ERRORS: 0001

Ziehe ich das, geht das Ganze...ich weis ja nicht, welchen Fehler schnulli kriegt?
Ich verstehe bloß nicht, warum der Fehler bei gestecktem M001 kommt?

Gruß, Jan.

Dieser Beitrag wurde am 28.01.2011 um 21:22 Uhr von lux-O-mat editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
006
28.01.2011, 22:05 Uhr
susowa




Zitat:
lux-O-mat schrieb
Ich verstehe bloß nicht, warum der Fehler bei gestecktem M001 kommt?

Genau das Gleiche probiert - funktioniert wie erwartet (CAOS 4.4 mit eingebautem EDAS 1.6).

Wenn man was sehen will, kann man nach ASM + ENTER als Optionen LB angeben. Dein Error sieht nach Müll im Quelltextspeicher aus.

MfG Ralf
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
007
29.01.2011, 09:45 Uhr
Gast: Schnulli



Irgendetwas scheint nicht richtig zu funktionieren



zweizeiliges Programm, Speicher vorher gelöscht

Dieser Beitrag wurde am 29.01.2011 um 09:49 Uhr von schnulli editiert.
Seitenanfang Seitenende
(Gast) Zitatantwort || Editieren || Löschen
008
29.01.2011, 16:01 Uhr
maleuma



Das ist ein Fehler in EDAS 1.4: Die Marke nach JP oder JR sollte nicht mit "M" beginnen.
Ändere also mal M2 in X2 und es funktioniert.

Oder verwende EDAS 1.6, da habe ich den Fehler korrigiert.
--
Mario.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
009
21.10.2011, 02:48 Uhr
Lötspitze



Hallo,

könnte mir bitte jemand bestätigen, daß man im KC85/4 die Adresse 8000H dezimal mit -32768 anspricht (im Basic mit Peek); 8001H mit -32767 usw.
Mich macht stutzig, daß ich beim Auslesen des Speichers genau zwischen 7FFF und 8000 2x hintereinander FF angezeigt bekomme, obwohl das sonst immer schön zwischen 00 und FF wechselt.


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
010
21.10.2011, 06:47 Uhr
Mobby5




Zitat:
Lötspitze schrieb
könnte mir bitte jemand bestätigen, daß man im KC85/4 die Adresse 8000H dezimal mit -32768 anspricht (im Basic mit Peek); 8001H mit -32767 usw.

Bestätigt! Und nicht nur beim KC85/4.


Zitat:
Lötspitze schrieb
Mich macht stutzig, daß ich beim Auslesen des Speichers genau zwischen 7FFF und 8000 2x hintereinander FF angezeigt bekomme, obwohl das sonst immer schön zwischen 00 und FF wechselt.
Matthias

Auf diesen 00/FF-Wechsel nach dem Einschalten solltest Du dich nicht unbedingt verlassen, da das eigentlich eher zufällig bzw. durch Einschaltvorgänge, Herstellungsprozesse und Toleranzen bedingt und kein absichtliches Ergebnis ist.
--
und ausserdem muss in Zeile 20 der Doppelpunkt durch ein Semikolon ersetzt werden
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
011
22.10.2011, 18:00 Uhr
Lötspitze



Danke Mobby5. Ich werde noch einmal versuchen, den Bereich ab 8000H zu beschreiben und dann wieder gegenzulesen. Wenn ich mit "MODIFY" schreibe, erwische ich da den RAM oder den IRM? Bei "System" hat der KC RAM 0 ON angezeigt. Beim letzten Mal hatte es nämlich nicht übereingestimmt.

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

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

Dieser Beitrag wurde am 22.10.2011 um 18:08 Uhr von Lötspitze editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
012
22.10.2011, 19:36 Uhr
Mobby5



Mit MODIFY "erwischst" Du den IRM.
--
und ausserdem muss in Zeile 20 der Doppelpunkt durch ein Semikolon ersetzt werden
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
013
22.10.2011, 20:53 Uhr
Lötspitze



Na dann brauch ich mich nicht zu wundern. Mit welchem Befehl kann man denn den RAM ab 8000H ändern?

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

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

Dieser Beitrag wurde am 22.10.2011 um 22:08 Uhr von Lötspitze editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
014
22.10.2011, 22:25 Uhr
Mobby5



Am einfachsten geht das nur, wie Du schon versucht hast, mit Peek und Poke in BASIC. Ansonsten bräuchstest Du ein kleines Maschinencodeprogramm welches beim Lesen und Schreiben der gewünschten Speicherbereiche den IRM deaktiviert, den dortigen RAM aktiviert und danach den RAM deaktiviert sowie den IRM wieder aktiviert.
--
und ausserdem muss in Zeile 20 der Doppelpunkt durch ein Semikolon ersetzt werden
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
015
23.10.2011, 21:43 Uhr
maleuma



Also falls Du einen KC85/5 mit CAOS 4.3 oder neuer verwendest, dann kannst Du den IRM auch abschalten und mit MODIFY oder DISPLAY auf den RAM8 zugreifen. Das geht dann so:
%SWITCH 1 0
%MODIFY 8000
Aber aufgepasst! Der RAM8 hat beim KC85/5 14 Ebenen, die Du mit %SWITCH 3 .. auswählen kannst.
--
Mario.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
016
24.10.2011, 18:04 Uhr
Mobby5



@maleuma
Wird der IRM dann dort für Ein- und Ausgaben zwischenzeitlich wieder automatisch eingeblendet?
--
und ausserdem muss in Zeile 20 der Doppelpunkt durch ein Semikolon ersetzt werden
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
017
25.10.2011, 21:04 Uhr
maleuma



Ja so ähnlich: Der IRM wird eigentlich nur während der Schreib- und Leseoperationen kurz ausgeblendet.
--
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