Robotrontechnik-Forum

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

Robotrontechnik-Forum » Technische Diskussionen » AC1-, BCS3, KC- und Z1013-Emulator » Themenansicht

Autor Thread - Seiten: -1-
000
16.01.2009, 21:55 Uhr
jmueller



Es gibt eine neue Version von JKCEMU,
Die Hauptneuerungen sind:
- BCS3 wird nun emuliert
- KC85/2..4 wird nun emuliert
- AC1-Emulation berichtigt und erweitert (SCCH-Monitor, RAM-Floppy)
- Z1013-Emulation erweitert (Peters-Platine, RAM-Floppies)

Das ganze wie immer zu finden unter:
www.jens-mueller.org/jkcemu

MfG
Jens

Dieser Beitrag wurde am 16.01.2009 um 21:56 Uhr von jmueller editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
001
17.01.2009, 15:20 Uhr
Wusel_1



Hallo Jens,

ist ja super. Habe gleich mal getestet. Unter AC1 - wenn ein Programm hängt, geht kein Reset. Wenn ich den Monitor 8.0 nachlade (Rombereich) geht der auch nicht richtig und mit Reset oder NMI kommt man auch nicht wieder zum Start ab #0000.

Die Ansicht ist aber klasse - jetzt sieht es aus wie AC1 - mit der Schrift.

Danke Andreas
--
Beste Grüße Andreas
______________________________________
DL9UNF ex Y22MF es Y35ZF
JO42VP - DOK: Y43 - LDK: CE

*** wer glaubt, hört auf zu denken ***
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
002
17.01.2009, 15:53 Uhr
Deff



Das war doch auch bloss eine BETA-Version.
--
Die Politik ist ein Versuch der Politiker, zusammen mit dem Volk mit den Problemen fertig zu werden, die das Volk ohne die Politiker niemals gehabt hätte. (Dieter Hildebrandt)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
003
17.01.2009, 17:38 Uhr
jmueller



Hallo,

@Deff: Danke, dass du meine Software qualitativ höher einstufst als ich selbst.
Eine Version 0.2 ist ja eigentlich eher im Alpha-Bereich angesiedel. :-)

@Wusel_1: Tritt das bei dir oft oder gar immer auf?
Ich weiß, dass unter Windows so ein Hänger,
der einfach durch nichts zu unterbrechen ist,
in seltenen Fällen auftritt.
Ich habe aber noch keine Ahnung, warum.
Unter Linux, womit ich entwickle, habe ich das noch nicht beobachtet.
Deshalb meine Frage: was hast du für ein Betriebssystem?

Monitor 8: Leider habe ich den nicht.
Vielleicht könnte mir jemand den mal zumailen.
Was geht da nicht richtig?

Ansonsten wird nun eine RAM-Floppy (Floppy A) und das Abschalten
des Speichers auf der Grundplatine unterstützt.
Damit sollte auch CP/M gehen.

Gruß
Jens
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
004
17.01.2009, 18:04 Uhr
Deff



@jmueller

Zugegeben, ich bin ein Opfer Deiner unerwarteten Tiefstapelei geworden.
Trotzdem viel Erfolg beim Bereinigen des Bugs!
--
Die Politik ist ein Versuch der Politiker, zusammen mit dem Volk mit den Problemen fertig zu werden, die das Volk ohne die Politiker niemals gehabt hätte. (Dieter Hildebrandt)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
005
17.01.2009, 18:11 Uhr
Wusel_1



Hallo Jens,

habe dir eine Mail geschickt mit Monitor V8.0 - ich hoffe, dass es dir weiterhilft.
Im Monitor sind beide Laderoutinen AC1 und Turbo verankert, deshalb wird er eigentlich bevorzugt.
MfG Andreas
--
Beste Grüße Andreas
______________________________________
DL9UNF ex Y22MF es Y35ZF
JO42VP - DOK: Y43 - LDK: CE

*** wer glaubt, hört auf zu denken ***

Dieser Beitrag wurde am 17.01.2009 um 18:13 Uhr von Wusel_1 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
006
18.01.2009, 20:07 Uhr
jmueller



Bei mir läuft das CP/M im Emulator.

Das Problem liegt vermutlich daran,
dass du den Monitor 8 eingebunden hast.
Extern eingebundene ROM-Images überdecken den standardmäßigen Speicher.
CP/M schaltet den Speicher auf der Grundplatine aus, weil dort RAM sein muss.
Allerdings liegt das eingebundene ROM-Image trotzdem dort
(weil ja eingebunden),
und die CP/M-Systemzellen zeigen ins Gemüsefeld.

Speichere dir einfach ein zweites Profil ohne ein extern eingebundenes
Monitorprogramm und schon geht es.

Gruß
Jens
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
007
18.01.2009, 20:22 Uhr
jmueller



Noch ein Nachtrag:
In der nächsten JKCEMU-Version wird auch der SCCH-Monitor 8 enthalten sein.
Damit schließen sich dann Monitor 8 und CP/M nicht mehr gegenseitig aus.

Jens
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
008
20.01.2009, 11:45 Uhr
marwe



Aha, dafür die Experimente am KC85
Beim BCS3(SE2.4), so musste ich gerade feststellen, werden die Unterlängen der Kleinbuchstaben nach oben geklappt, dies ist doch sicher nicht so gewollt?


MfG Marcus

Edit:
beim SE3.1 gibt es auch einen Fehler in der Darstellung, und die Speichergröße wird bei beiden nicht richtig erkannt:

--
Mit nur einer Hand läßt sich kein Knoten knüpfen

Dieser Beitrag wurde am 20.01.2009 um 12:35 Uhr von marwe editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
009
20.01.2009, 12:49 Uhr
volkerp
Default Group and Edit
Avatar von volkerp

Hinweis an Jens: Der BCS-Zeichensatz enthält zuerst die unterste Zeichen-Zeile 8, dann die Zeilen 1-7.
--
VolkerP

http://hc-ddr.hucki.net
(Z9001, Z1013, LC-80, ...)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
010
20.01.2009, 22:08 Uhr
jmueller



@volkerp:
Das muss man erstmal wissen.
Aber zugegeben, ich hätte es auch erkennen können,
wenn ich mir die kleinen Buchstaben genauer angeschaut hätte.

@marwe:

> Aha, dafür die Experimente am KC85
Genau, und ich habe in Kürze wieder so einen Anschlag vor.
Vielleicht hilft du mir dann auch wieder.

Wie ist denn dein Name im realen Leben?

> beim SE3.1 gibt es auch einen Fehler in der Darstellung,
Wie hast du das erzeugt?

> und die Speichergröße wird bei beiden nicht richtig erkannt:
Hast du einen BCS3?
Wenn das "1 B" falsch ist, was muss da stehen?
BASIC-Programmzeilen kann man jedenfalls eingeben.

BASIC-SE 3.1 wirkt auf mich irgendwie instabil, 2.4 dagegen nicht so.

Gruß
Jens

Dieser Beitrag wurde am 20.01.2009 um 22:12 Uhr von jmueller editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
011
21.01.2009, 00:41 Uhr
tp




Zitat:
jmueller schrieb

> und die Speichergröße wird bei beiden nicht richtig erkannt:
Hast du einen BCS3?
Wenn das "1 B" falsch ist, was muss da stehen?
BASIC-Programmzeilen kann man jedenfalls eingeben.

Da gehört eigentlich der freie RAM hin.

Beim 2.4 funktioniert das zumindest. Der wird sogar automatisch an den verfügbaren RAM angepasst. Sprich bei 1k RAM kommt 600B, wenn ab 4000h z.b. noch 8k RAM liegen, sagt er 8792B. Besonders krass ist, dass das bei jedem LIST neu berechnet wird. Wenn die 8k RAM aus dem Adressbereich der CPU verschwinden, kommt beim nächsten LIST direkt wieder 600B (Ähm, nicht mit echter Hardware versuchen ).

Mit dem 3.1 kommt bei mir auch immer 1B.
--
Die Zeit ist auch nicht mehr, was sie mal war! (Albert Einstein)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
012
21.01.2009, 14:44 Uhr
marwe



@Jens
Oben ist das Beispiel "Ausgabe Zeichenvorrat" aus dem RFE-Beitrag.
Einen BCS3 hatte ich damals auch gebaut, aber der existiert leider nicht mehr. Ich hatte das auch so in Erinnerung, dass da am Ende des Listings der aktuell verfügbare Speicher angezeigt wurde.

MfG Marcus
--
Mit nur einer Hand läßt sich kein Knoten knüpfen
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
013
21.01.2009, 22:54 Uhr
tp




Zitat:
jmueller schrieb
Wenn das "1 B" falsch ist, was muss da stehen?

Also ich behaupte jetzt mal, das 1B entsteht durch die Kombination von einem "Fehler" im ROM und nicht korrekter Emulation von Speicherbereichen die nicht dekodiert werden (ich gehe mal davon aus, dass die Anzeige beim echten BCS3 funktioniert).

- Die Routine im ROM geht schief, wenn nicht dekodierte Bereiche ffh liefern. Ich kann zwar auf dem Schaltplan nirgendwo Pull-Down Widerstände entdecken, aber scheinbar klappt es mit der echten Hardware, sonst wäre das sicher aufgefallen. Die Anzeige kommt ja bei jedem LIST.

- Konkret darf bei RAM bis 3fffh die Adresse 4000h nicht ffh liefern, sonst gibt's eben 1B. Auch wenn man auf die Idee kommen sollte, ab Adresse 4000h einen ROM zu schalten, der als 1. Byte ffh liefert, gibt's keine korrekte Anzeige des freien Speichers mehr.
--
Die Zeit ist auch nicht mehr, was sie mal war! (Albert Einstein)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
014
22.01.2009, 17:36 Uhr
jmueller



> ...nicht korrekter Emulation von Speicherbereichen die nicht dekodiert werden
Und was wird deiner Meinung nach vom Datenbus gelesen,
wenn kein Schaltkreis ein Signal liefert und sonst auch keine
Pull-Up/Down-Widerstände da sind?

Also ein Fehler ist in der Emulation drin:
Die in den Einstellungen angegebene RAM-Größe (17 und 33 KByte)
wird ignoriert, d.h., beim BCS3 wird der RAM nur bis 3FFF emuliert.
Das ist aber für das Anzeigeproblem erstmal unerheblich.

Ich habe nun einfach mal den Emulator so umprogrammiert,
dass nicht belegte Speicherbereiche statt FF das Byte 00 liefern.
Und schon geht die Anzeige bei SE 3.1, aber nicht mehr die von SE 2.4!
Konkret erscheint bei jedem LIST "-16984B",
und man kann auch keine BASIC-Zeilen mehr eingeben!

Daraufhin habe ich nun durchgebuggt und einen Fehler im SE3.1-ROM gefunden:
An 0200 wird der Speicher getestet,
und zwar wird ab 3FDE jede Speicherzelle zuerst mit FF beschrieben
und verglichen und anschließend das Gleiche mit 00.
Wenn einer der beiden Vergleiche fehlschlägt, bricht die Schleife
ab und merkt sich in 3C04 den aktuellen Wert, d.h. "RAM-Ende + 1".
Wenn nun aber diese Speicherzelle zufällig FF liefert
(so wie in JKCEMU V 0.2),
schlägt der erste Vergleich nicht fehlt, sondern erst der zweite.
In dem Fall wird aber der Adresszeiger (HL) vor dem Schleifenabbruch
nocheinmal inkrementiert, d.h., in 3C04 wird "RAM-Ende + 2" hineingeschrieben.

Für die Anzeige/Berechnung der freien Bytes wird dann mit der Routine
auf 03A9 von "<Wert in 3C04> - 1" abwärts die Null-Bytes gezählt,
und fängt dann statt bei RAM-Ende bei RAM-Ende + 1 an.
Da dieses Byte aber FF und nicht 00 hat, kommt nur 1 Byte als frei zustande.

Beim BASIC-SE 2.4 wird mit der Routine ab 031D das RAM-Ende ermittelt
und in 3C00 eingetragen. Hier ist kein Bug drin.
Für die Anzeige der freien Bytes beim LIST zählt das Unterprogramm
ab 02FE die Anzahl der 00-Bytes hinter dem BASIC-Programm.
Wenn nun der nicht belegte Speicherbereich hinter dem RAM
zufällig 00 liefert, wird das mitgezählt.
Die negative Zahl kommt dann durch einen Überlauf zustande
(mehr als 32767 freie Bytes).

Insoweit gesehen, sind sowohl BASIC-SE 2.4 als auch 3.1 fehlerhaft.
Mich würde nun interessieren, welches Byte der Original-BCS3
von unbelegten Speicherbereichen liest.
00 und FF können es jedenfalls nicht sein,
denn sonst würde ja jeweils eine BASIC-Version nicht richtig funktionieren.
Und Pull-Up- oder Pull-Down-Widerstände kann ich auf dem Schaltplan
nicht finden.

Ich lasse jetzt in der BCS3-Emulation von nicht belegten Speicherbereichen
einfach 0x0F lesen und schon geht es mit SE 2.4 und SE 3.1.
Des weiteren werde ich auch die Einstellmöglichkeit für 33K RAM
entfernen, da bei dieser nämlich bei beiden BASIC-Varianten
ein Überlauf auftritt und die Eingabe von BASIC-Zeilen nicht möglich ist.

Gruß
Jens
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
015
22.01.2009, 20:04 Uhr
tp




Zitat:
jmueller schrieb
> ...nicht korrekter Emulation von Speicherbereichen die nicht dekodiert werden
Und was wird deiner Meinung nach vom Datenbus gelesen,
wenn kein Schaltkreis ein Signal liefert und sonst auch keine
Pull-Up/Down-Widerstände da sind?

Genau das ist die Frage. Theoretisch ja was zufälliges, aber ganz so ist es ja meist in der Realität nicht.


Zitat:
jmueller schrieb
Daraufhin habe ich nun durchgebuggt und einen Fehler im SE3.1-ROM gefunden:
An 0200 wird der Speicher getestet,
und zwar wird ab 3FDE jede Speicherzelle zuerst mit FF beschrieben
und verglichen und anschließend das Gleiche mit 00.
Wenn einer der beiden Vergleiche fehlschlägt, bricht die Schleife
ab und merkt sich in 3C04 den aktuellen Wert, d.h. "RAM-Ende + 1".
Wenn nun aber diese Speicherzelle zufällig FF liefert
(so wie in JKCEMU V 0.2),
schlägt der erste Vergleich nicht fehlt, sondern erst der zweite.
In dem Fall wird aber der Adresszeiger (HL) vor dem Schleifenabbruch
nocheinmal inkrementiert, d.h., in 3C04 wird "RAM-Ende + 2" hineingeschrieben.

Yep. Genau das meinte ich.


Zitat:
jmueller schrieb
Insoweit gesehen, sind sowohl BASIC-SE 2.4 als auch 3.1 fehlerhaft.

Ja, auf jeden Fall, wenn man eine mögliche Erweiterung des Speichers mit einrechnet.
--
Die Zeit ist auch nicht mehr, was sie mal war! (Albert Einstein)
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