Robotrontechnik-Forum

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

Robotrontechnik-Forum » Technische Diskussionen » emulation pc1715 mit mame » Themenansicht

Autor Thread - Seiten: -1-
000
02.08.2025, 11:47 Uhr
bandu



Hallo an alle,

ich habe mich heute hier registriert, weil ich hilfe brauche.
In habe mir den emulator mame unter linux kompiliert, und versuche den pc1715 zum laufen zu bekommen.
Dazu werden ROM's benötigt:

Datei Größe CRC SHA1 Region Status
s500.a25.3 2048?B — — ipl ? NO_DUMP
s501.a25.3 2048?B — — ipl ? NO_DUMP
s502.a25.3 2048?B 7b6302e1 e8f61763ff8841078a1939aa5e85a17f2af42163 ipl ? GOOD
s643.a25.2 2048?B ea37f0e6 357760974d944b9782734504b9820771e7e37645 gfx ? GOOD
s605.a25.1 2048?B 38062024 798f62d4adeb7098b7dcbfe6caf28302853ee97d gfx ? GOOD
s642.ic8 2048?B — — keyboard ? NO_DUMP
068.a8.2 1024?B 5306d57b a12d025717b039a8a760eb9961365402f1f501f5 floppy ? GOOD
069.a8.1 1024?B 319fa72c 5f26af1e36339a934760a63e5975e9db09abeaaf floppy ? GOOD

mir fehlen die image der 3 mit rotem kreuz (ohne sha1) gekennzeichneten roms. offensichtlich startet mame nicht ohne sie. kann mir jemand mit den images behilflich sein ??

mit Dank im vorraus
bandu

Dieser Beitrag wurde am 02.08.2025 um 11:49 Uhr von bandu editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
001
02.08.2025, 14:28 Uhr
Dresdenboy



Hier gibt es Erklärungen zu den ROM-Dateien: http://oldpc.su/articles/de_roms/DE_ROMs.html
Wenn also 500 und 501 nur ältere Versionen sind, sollte 502 reichen.

Die Frage ist, ob die fehlenden wirklich nötig sind. Evtl. liegt das Problem woanders? Denn die vorhandenen sind auch das, was in den ganzen MAME-ROM-Paketen zu finden ist. Evtl. reicht es?

Ich kann ja auch nochmal testen, was da geht.

Ansonsten gibt es noch ein paar ältere Threads zu PC 1715 Emulation, z.B.:
https://www.robotrontechnik.de/html/forum/thwb/showtopic.php?threadid=10219
https://www.robotrontechnik.de/html/forum/thwb/showtopic.php?threadid=20036

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 02.08.2025 um 14:29 Uhr von Dresdenboy editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
002
02.08.2025, 15:09 Uhr
bandu



Hallo Mathias,

Danke für Deine Antwort.

Ich will mal gleich voranschicken, daß ich mich mit Elektronik nicht beschäftige, ich kenne keine Quellen, und zusammenhänge muß ich mir erarbeiten.

Der Hinweis, das s500 und s500 nur alte Versionen sind (?) ist gut. Wenn ich das mit dem Quelltext vergleiche:
ROM_START( rt1715 )
ROM_REGION(0x0800, "ipl", 0)
ROM_LOAD("s500.a25.3", 0x0000, 0x0800, NO_DUMP) // CCITT 90e7
ROM_LOAD("s501.a25.3", 0x0000, 0x0800, NO_DUMP) // CCITT 68da
ROM_LOAD("s502.a25.3", 0x0000, 0x0800, CRC(7b6302e1) SHA1(e8f61763ff8841078a1939aa5e85a17f2af42163))

ROM_REGION(0x1000, "gfx", 0)
ROM_LOAD("s619.a25.2", 0x0000, 0x0800, CRC(98647763) SHA1(93fba51ed26392ec3eff1037886576fa12443fe5))
ROM_LOAD("s602.a25.1", 0x0800, 0x0800, NO_DUMP) // CCITT fd67

ROM_REGION(0x0800, "keyboard", 0)
ROM_LOAD("s600.ic8", 0x0000, 0x0800, CRC(b7070122) SHA1(687056b822086ef0eee1e9b27e5b031bdbcade61))

ROM_REGION(0x0800, "floppy", 0)
ROM_LOAD("068.a8.2", 0x0000, 0x0400, CRC(5306d57b) SHA1(a12d025717b039a8a760eb9961365402f1f501f5)) // "read rom"
// ROM_LOAD("069.a8.1", 0x0400, 0x0400, CRC(319fa72c) SHA1(5f26af1e36339a934760a63e5975e9db09abeaaf)) // "write rom"
ROM_LOAD("069.a8.1", 0x0400, 0x0400, CRC(c4bb0652) SHA1(1be573516f54f5b77e95e4fdc129b643318b9488)) // "write rom"

ROM_END

könnte man sagen, die 3 rom's wurden ABSICHTLICH AUSGELASSEN. Das würde darauf hindeuten, daß der Fehler woanders zu suchen ist. Aber das war erst einmal die NÄCHSTE Stelle, und mußte zuerst geklärt werden.

Die beiden von dir genannten Quellen kannte ich, den Windows-Emulator hatte ich erst einmal ausgelassen, der braucht bestimmt ein älteres Windows und das darf dann wahrscheinlich nicht in dosbox-x oder so laufen. Wenn alle Stricke reißen, kann ich sowas ja auch noch mal prüfen.

Ich hätte gern den mame am Laufen.

Hier die Fehlermeldung :

There are known problems with this system:
This system has no sound hardware, MAME will produce no sounds, this is expected behavior.
THIS SYSTEM DOESN'T WORK. The emulation for this system is not yet complete. There is nothing you
can do to fix this problem except wait for the developers to improve the emulation.

Press any key to continue

Da kann ich nicht viel finden.
Mal sehen, ob ich den Ausgangspunkt für die Meldung lokalisieren kann. Da wüßte ich
exakter, warum sie kommt.

Nochmals Dank
bandu
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
003
02.08.2025, 15:41 Uhr
Dresdenboy



Achso, dieser Text. Den kenne ich vom BIC A5105 auch. Der kommt durch die Zeile

Quellcode:
COMP( 1986, rt1715,   0,      0,      rt1715,  k7658,   rt1715_state, empty_init, "Robotron", "Robotron PC-1715",                  MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW )


wo für nicht vollständig emulierte (und damit auch gut getestete) Emulatoren eine Standardmeldung kommt. An sich sollte es also gehen. Die Meldung ist mehr eine Absicherung, damit man nicht zuviel erwartet.

Oder kommt nichtmal ein Bootscreen?
--
___________________________________
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 02.08.2025 um 15:44 Uhr von Dresdenboy editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
004
02.08.2025, 15:44 Uhr
bandu



Nein, nach der Meldung ist Schluß, der Emulator hängt, nur Fenster Schließen hilft dann noch.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
005
02.08.2025, 17:24 Uhr
Dresdenboy



Ich habe mal bisschen mit einem normalen MAME Release experimentiert.

Hinterlegt sind die Maschinen rt1715, rt1715lc, rt1715w.

Bei
Quellcode:
mame rt1715w -listdevices

sehe ich auch Floppy Laufwerke, bei den anderen Maschinen nicht.

Mit
Quellcode:
mame rt1715w -flop1 SCP3.CQM -uimodekey F12

(F12 geht für mich besser, um z.B. den Emulator mit anderen Tasten zu beschleunigen) fährt das System in SCP 3 hoch. Sieht gut aus. Ich habe ein Prompt.

Also fehlt bei rt1715 und rt1715lc die Floppy-Unterstützung noch, die ja lt. Thread 20036 oben wohl auch nicht so leicht mit den Roms implementiert und zum Laufen zu bekommen sein könnte.
--
___________________________________
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 02.08.2025 um 17:25 Uhr von Dresdenboy editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
006
02.08.2025, 19:02 Uhr
DL
Default Group and Edit


Wenn du weiter als bis dahin kommst gib Bescheid:




Kann ja sein, dass es inzwischen etwas weiter ist, ich kenne nur dies:

Dieser Beitrag wurde am 02.08.2025 um 19:28 Uhr von DL editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
007
03.08.2025, 02:03 Uhr
Dresdenboy



Bei mir klappt es so:
Entweder Start von MAME auf Konsole (s. o.) oder mit Menü. Wg. Laptop habe ich per -uimodekey F12 statt Scroll Lock zur Aktivierung des MAME Menüs (über Tab).

Wenn PC1715W läuft, schalte ich per F12 (Scroll Lock sonst) das Menü ein. Dann TAB -> File Manager -> Floppy Disk 1 -> dort wähle ich das SCP3.CQM-Image aus (oder alles per Kommandozeile wie oben) und resette den PC1715W. Läuft.

Der PC1715W geht (auch wenn nicht weiß, ist er auswählbar). Die ROMs habe ich in rt1715, und rt1715w liegen.
--
___________________________________
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, ...
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
008
03.08.2025, 06:50 Uhr
bandu



Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
009
03.08.2025, 06:54 Uhr
bandu



Zu Info vorsichtshalber noch ein paar Details:

mame rt1715w -listdevices

Driver rt1715w (Robotron PC-1715W):
<root> Robotron PC-1715W
ctc0 Z80 CTC @ 3.99 MHz
ch0 Z80 CTC Channel
ch1 Z80 CTC Channel
ch2 Z80 CTC Channel
ch3 Z80 CTC Channel
ctc2 Z80 CTC @ 3.99 MHz
ch0 Z80 CTC Channel
ch1 Z80 CTC Channel
ch2 Z80 CTC Channel
ch3 Z80 CTC Channel
gfxdecode gfxdecode
i8272 Intel 8272A FDC @ 2.00 MHz
0 Floppy drive connector abstraction
525qd 5.25" quad density floppy drive
floppysound Floppy sound @ 44.10 kHz
flopsndout Speaker
1 Floppy drive connector abstraction
525qd 5.25" quad density floppy drive
floppysound Floppy sound @ 44.10 kHz
flopsndout Speaker
i8275 Intel 8275 CRTC @ 1.72 MHz
keyboard Zilog Z80 @ 683.00 kHz
maincpu Zilog Z80 @ 3.99 MHz
palette palette
printer RS-232 Port
printer Serial Printer
printer Printer
ram RAM
rs232 RS-232 Port
null_modem RS-232 Null Modem
stream Bitbanger
screen Video Screen @ 13.82 MHz
sio0 Z80 SIO @ 2.45 MHz
cha Z80 SIO channel
chb Z80 SIO channel
videoram RAM
z80dma Z80 DMA Controller @ 3.99 MHz

mame -?
MAME v0.278 (mame0278-dirty)
Copyright MAMEdev and contributors

ls roms
dir.txt rt1715w.zip rt1715.zip

------- rt1715 ----------------------------

/mnt/ramdisk/tt$ shasum *
a12d025717b039a8a760eb9961365402f1f501f5 068.a8.2
5f26af1e36339a934760a63e5975e9db09abeaaf 069.a8.1
73615d7de1fb2e495dbf2aca22d68e48b88cae85 rt1715.zip
e8f61763ff8841078a1939aa5e85a17f2af42163 s502.a25.3
687056b822086ef0eee1e9b27e5b031bdbcade61 s600.ic8
93fba51ed26392ec3eff1037886576fa12443fe5 s619.a25.2

/mnt/ramdisk/tt$ crc32 *
5306d57b 068.a8.2
319fa72c 069.a8.1
738c1266 rt1715.zip
7b6302e1 s502.a25.3
b7070122 s600.ic8
98647763 s619.a25.2

/mnt/ramdisk/tt$ ls -la
1024 Dez 24 1996 068.a8.2
1024 Dez 24 1996 069.a8.1
3827 Aug 2 11:19 rt1715.zip
2048 Dez 24 1996 s502.a25.3
2048 Dez 24 1996 s600.ic8
2048 Dez 24 1996 s619.a25.2

------- rt1715w ----------------------------

shasum *
d262a8c3cf2d284c67f23b853e0d59ae5cc1d4c8 287.bin
bc7ed7cf531dd400345df510897381c484ba4b61 rt1715w.zip
4d9ad5b877353d91ba355044d2847e1d621e2b01 s550.bin
687056b822086ef0eee1e9b27e5b031bdbcade61 s600.ic8

crc32 *
8508360c 287.bin
8ad57e68 rt1715w.zip
0a96c754 s550.bin
b7070122 s600.ic8

ls -la
256 Dez 24 1996 287.bin
3153 Aug 3 03:25 rt1715w.zip
2048 Dez 24 1996 s550.bin
2048 Nov 2 2011 s600.ic8
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
010
03.08.2025, 09:29 Uhr
DL
Default Group and Edit


Hab mal den 1715W probiert, das funktioniert:


aber beim 1715 fehlt nach wie vor das Floppy im Filemanager, also wird sich da nix weiter tun...


Edit:

Zitat:
bandu schrieb
...In habe mir den emulator mame unter linux kompiliert...


ich hab den snap installiert

Dieser Beitrag wurde am 03.08.2025 um 10:43 Uhr von DL editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
011
03.08.2025, 11:11 Uhr
bandu



Ha, Ha.

Bei mir HAT der Emulator SCHON IMMER GEBOOTET,

ICH HABE ES BLOS NICHT BEMERKT !!! --- weil es so lange dauert.

Das hatte ich nicht erwartet.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
012
03.08.2025, 11:16 Uhr
bandu



So geht es jetzt schneller:


mame rt1715w -flop1 IMAGE.CQM -window -resolution 1024x768 -nothrottle
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
013
03.08.2025, 12:14 Uhr
Dresdenboy



Achso, gar nicht erwähnt: Das SCP3-Image hatte ich mir von Jörg aus dem Forum gezogen:
http://felgentreu.spdns.org/dokuwiki/doku.php?id=robotron:geraete:pc1715w

Ich hatte noch ein paar andere Seiten gesammelt, wo man dies und das findet:
https://oldcomputer.info/8bit/robo1715/index.htm
https://oldcomputer.info/keep/c/museum/8bit/robotron_1715
https://www.sax.de/~zander/pc1715/pc_sw.html
https://bashkiria-2m.narod.ru/index/fajly/0-11 -> r1715fdd.rar

Evtl. kann man im MAME-Code ja einfach die i8272-Einbindung vom emulierten PC1715W auf die anderen 1715-Modelle übertragen? MAME ist ja recht modular.

@bandu:
Du kannst die Geschwindigkeit auch über das MAME-Menü während der Emulation hoch u. runter modulieren. UI-Taste im laufenden Emulator und dann F10 (throttle aus/an). F8 u. F9 ändern Frameskip bei mir. Aber das müsste auch über das UI-Menü selbst (Tab) änderbar sein.

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 03.08.2025 um 12:17 Uhr von Dresdenboy editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
014
03.08.2025, 13:04 Uhr
bandu



Diese Seite gibt es doch gar nicht mehr:
http://felgentreu.spdns.org/dokuwiki/doku.php?id=robotron:geraete:pc1715w

Ich habe mal am Code von :

~/compile/mame0278-mkl/src/mame/robotron/rt1715.cpp

versucht, in:
void rt1715_state::rt1715(machine_config &config)

ein Laufwerk hinzubekommen.


Das Lw ist jetzt auch da, man kann ein image zuordnen,
aber es bootet nicht (cpu Vollast).
Für rt1715 braucht es doch andere Images als für rt1715w, oder sehe ich das falsch ???
Die Frage ist jetzt: ist das Image falsch, oder meine Code-Änderung noch unvollständig ?

Wenn ich ein MIT SICHERHEIT auf einem 1715 (ohne w) bootendes Image hätte, könnte ich das leicht entscheiden.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
015
03.08.2025, 13:22 Uhr
DL
Default Group and Edit


Dann müsstest du aber auch den BootROM und den Bios-Floppytreiber anpassen, damit diese einen 8272 Floppy Controller bedienen und dann ein neues Diskettenimage dafür generieren
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
016
03.08.2025, 13:35 Uhr
bandu



Das klingt plausibel.

Aber , wie schon gesagt, Hardware -- da kenne ich mich nicht aus.

Der Source-Code von mame weist für den rt1715 folgendes aus:

ROM_REGION(0x0800, "ipl", 0)
ROM_LOAD("s502.a25.3", 0x0000, 0x0800, CRC(7b6302e1) SHA1(e8f61763ff8841078a1939aa5e85a17f2af42163))

ROM_REGION(0x1000, "gfx", 0)
ROM_LOAD("s619.a25.2", 0x0000, 0x0800, CRC(98647763) SHA1(93fba51ed26392ec3eff1037886576fa12443fe5))

ROM_REGION(0x0800, "keyboard", 0)
ROM_LOAD("s600.ic8", 0x0000, 0x0800, CRC(b7070122) SHA1(687056b822086ef0eee1e9b27e5b031bdbcade61))

ROM_REGION(0x0800, "floppy", 0)
ROM_LOAD("068.a8.2", 0x0000, 0x0400, CRC(5306d57b) SHA1(a12d025717b039a8a760eb9961365402f1f501f5)) // "read rom"
ROM_LOAD("069.a8.1", 0x0400, 0x0400, CRC(319fa72c) SHA1(5f26af1e36339a934760a63e5975e9db09abeaaf)) // "write rom"

Da müßte das doch abgedeckt sein ??? (Ich kann sowas nicht erkennen)

Für das Floppy habe ich 068_2716.BIN 069_2716.BIN
und 068.BIN 069.BIN

zur Auswahl.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
017
03.08.2025, 13:43 Uhr
bandu



Ach so, noch ein Nachtrag:

Ich dachte immer, der rt1715 hat gar keinen 8272, nur der rt1715w hat einen ?
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
018
03.08.2025, 13:50 Uhr
DL
Default Group and Edit


ja eben, DU hast ja versucht dem 1715 den 8272 vom 1715w über zu stülpen und wolltest ein Image, welches damit funktioniert - oder !?? ...

Für mich ist das Thema gegessen, es hat anscheinend noch keiner einen Treiber für den Floppy Controller vom 1715 geschrieben, damit wird das nix

Dieser Beitrag wurde am 03.08.2025 um 13:53 Uhr von DL editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
019
03.08.2025, 13:52 Uhr
bandu



Nein, ich denke das gerade habe ich nicht getan.

"ja eben, DU hast ja versucht dem 1715 den 8272 vom 1715w über zu stülpen und wolltest ein Image, welches damit funktioniert !?? ...
"
Der code für den rt1715w bezüglich floppy sieht ganz anders aus.
Un die beiden haben ja auch unterschiedliche roms, die geladen werden.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
020
03.08.2025, 13:54 Uhr
bandu



das ist der rt1715w:

// operates in polled mode
I8272A(config, m_fdc, 8'000'000 / 4, false);
m_fdc->drq_wr_callback().set(m_dma, FUNC(z80dma_device::rdy_w)).invert();
FLOPPY_CONNECTOR(config, "i8272:0", rt1715w_floppies, "525qd", floppy_image_device::default_mfm_floppy_formats);
FLOPPY_CONNECTOR(config, "i8272:1", rt1715w_floppies, "525qd", floppy_image_device::default_mfm_floppy_formats);



und das ist der rt1715:
/* floppy controller and logic */
Z80PIO(config, "a71", 9.832_MHz_XTAL / 4).out_pb_callback().set(FUNC(rt1715_state::a71_portb_w));
Z80PIO(config, "a72", 9.832_MHz_XTAL / 4);

FLOPPY_CONNECTOR(config, "floppy0", rt1715_floppies, "525qd", rt1715_formats);

(Das zweite laufwerk ist noch nicht )

void rt1715_state::a71_portb_w(uint8_t data)
{
if (m_floppy[0])
{
floppy_image_device *floppy = m_floppy[0]->get_device();
if (floppy)
{
floppy->mon_w(BIT(data, 0)); // Motorsteuerung ein/aus
floppy->dir_w(BIT(data, 1)); // Richtung: 0 = vorwärts, 1 = rückwärts
floppy->stp_w(BIT(data, 2)); // Schrittimpuls
}
}
}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
021
03.08.2025, 14:45 Uhr
Dresdenboy



Wir reden ja immer noch von einer Emulation. Und hier steht sicherlich im Fokus, Software für die entspr. Systeme zum Laufen zu bekommen. Und leider bilden rt1715 u. rt1715lc eben noch nicht alles ab. Das muss auf irgendeine Weise ergänzt werden - möglichst nah an der originalen Hardware - auf jeden Fall aber in für die Software transparenter Weise.

Wenn es dann gut funktioniert, kann das sogar per Pull Request dem MAME-Projekt bereitgestellt werden.
--
___________________________________
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, ...
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
022
03.08.2025, 14:51 Uhr
DL
Default Group and Edit



Zitat:
bandu schrieb
Nein, ich denke das gerade habe ich nicht getan.

"ja eben, DU hast ja versucht dem 1715 den 8272 vom 1715w über zu stülpen und wolltest ein Image, welches damit funktioniert !?? ...
"
.



Ok, war nur eine Vermutung...
Angefangen scheint ja schon mal jemand zu haben, aber da es im FileManager nicht auftaucht ist es wohl immer noch nicht fertig. Vor paar Jahren waren wir schon mal so weit, irgendwo gibt es glaub auch einen Thread hier darüber
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
023
03.08.2025, 15:55 Uhr
bandu



Für mich sieht es so aus, als ob die Disketten I/O am 1715 über die PIO geht.
Diese sendet / empfängt Kommandos und Daten von einer dikreten Logik, die ihrerseits wieder auf Kommandofolgen und Codes [eigentliche Laufwerksteuerung] zurückgreift, die im ROM 068
und 069 gespeichert sind und mit denen die diskrete Logik das Laufwerk bedient.

Wenn ich das richtig sehe, bestünde die Programmier-Aufgabe also darin, das vollständige I/O Verhalten der diskreten Logik nachzubilden, die die ROM-Routinen dann ablaufen läßt ?

Dazu benötigte man eine vollständige Dokumentation der Kommandos, die an die diskrete Logik gesendet werden und der Statusinformationen, die zurückkommen.

Das klingt seht komplex.
Sehe ich das richtig und gibt es so eine Dokumentation ?
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
024
03.08.2025, 16:04 Uhr
bandu



und ... @Dresdenboy , ja erst ging es darum , die Emulation meines diskimage zum Laufen zu bringen. Dadurch habe ich eigentlich erst in den Code geschaut.
Jetzt läuft rt1715w bei mir auch.

Aber ich war zuerst auf rt1715 gestoßen, und dieser code funktioniert offensichtlich noch nicht so ganz.
Vielleicht sind ja alle Informationen bei der Hand, und man kann dem Abhelfen.

mfg
bandu
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
025
04.08.2025, 09:41 Uhr
DL
Default Group and Edit


Unter https://www.tiffe.de/Robotron/PC1715/ gibt es viele Informationen zum 1715 und im Image in der CPA1715.zip in der biopdskt.mac genaueres zum physischen Disketten-Transfer



Dieser Beitrag wurde am 04.08.2025 um 10:48 Uhr von DL editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
026
05.08.2025, 11:09 Uhr
bandu



Ich habe jetzt noch folgende Probleme:

Da ich keine Hardware habe, ist mein einziges BootImage IMAGE.CQM.
Davon bootet rt1715w, aber die Disk ist NICHT ÄNDERBAR.
Offensichtlich legt MAME eine Schattendisk an, ich kann Kopieren, wieder Löschen,
nach dem Neustart ist alles weg.
Beim Umbenennen klappt es gar nicht, ERROR: File Readonly, was nicht stimmt.

Das ist wahrscheinlich der Tatsache geschuldet, daß IMAGE.CQM ein CopyQm-Image ist, also komprimiert.

Die Lösung wäre eine zweite Disk, in einem Format, daß beschreibbar ist.
Offensichtlich akzeptiert MAME aber keine .raw-Formate:


>> Starte Befehl: mame rt1715w -flop1 IMAGE.CQM -flop2 ./software/rt1715w/IMAGE.dsk -window -resolution 1024x768 -nothrottle -uimodekey F12
Fatal error: Device 5.25" quad density floppy drive load failed: Unable to identify image file format

>> Starte Befehl: mame rt1715w -flop1 IMAGE.CQM -flop2 ./software/rt1715w/IMAGE.img -window -resolution 1024x768 -nothrottle -uimodekey F12
Fatal error: Device 5.25" quad density floppy drive load failed: Unable to identify image file format

>> Starte Befehl: mame rt1715w -flop1 IMAGE.CQM -flop2 ./software/rt1715w/scp3.cpm -window -resolution 1024x768 -nothrottle -uimodekey F12
Fatal error: Device 5.25" quad density floppy drive load failed: Unable to identify image file format

>> Starte Befehl: mame rt1715w -flop1 IMAGE.CQM -flop2 ./software/rt1715w/scp3.dsk -window -resolution 1024x768 -nothrottle -uimodekey F12
Fatal error: Device 5.25" quad density floppy drive load failed: Unable to identify image file format

>> Starte Befehl: mame rt1715w -flop1 IMAGE.CQM -flop2 ./software/rt1715w/SYSTEM_ZfK.dsk -window -resolution 1024x768 -nothrottle -uimodekey F12
Average speed: 3258.04% (499 seconds)

>> Starte Befehl: mame rt1715w -flop1 IMAGE.CQM -flop2 ./software/rt1715w/SYSTEM_ZfK.img -window -resolution 1024x768 -nothrottle -uimodekey F12
Fatal error: Device 5.25" quad density floppy drive load failed: Unable to identify image file format


Das einzige Format, daß überraschend startete: `mame rt1715w -flop1 IMAGE.CQM -flop2 ./software/rt1715w/SYSTEM_ZfK.dsk ...`
zeigt aber nach B: "No Files", was nicht stimmt.

mame-run-System.dsk.jpg


Ich habe dann mal in den Quellen nachgesehen, MEME kann kein .raw Format verarbeiten.
MAME kann nur diese Formate:

mame_floppy-formate.jpg:



Davon kämen nur DSK, MFI und PC infrage. PC noch nicht überprüft.

Richtige DSK-Formate kann mam mit den cpmtools wohl nicht erzeugen, die sehen alle nach .raw aus, lassen sich
(siehe ober) auch nicht lesen. Nur SYSTEM_ZfK.dsk ist ein echtes .DSK-Format, aber da kam MAME ja auch nicht zurecht.
Dann habe ich mit Floptool
floptool flopconvert auto mfi scp3.cpm scp.mfi
ein .raw Format nach .MFI konvertiert.
Das ließ sich als Laufwerk B: zuordnen, alle Dateien sichtbar.
ABER, nach dem Kopieren einer Datei und ihrem anschließenden Löschen war das Disk-Image beschädigt.

Wenn mir jetzt Niemand sagt, was ich alles falsch gemacht habe, sieht MAME nicht sehr brauchbar aus.
Bei den ganzen Zuweisungen war ich ja noch nicht bis zum rt1715w vorgedrungen, das macht alles noch
Basissoftware von MAME.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
027
05.08.2025, 11:57 Uhr
DL
Default Group and Edit




Beim öffnen des Files im FileManager hast du die Auswahl read only oder read this image and write to another image.
Dann vergibst du einen neuen Namen für das andere und gehst auf create und kannst dann ein Format wählen.
Wenn du im FileManager das File dann auswählst erscheint im Zugriffsmode read-write und du kannst dann auch dauerhaft schreiben.
Allerdings kann der HxcFloppyemu mit dem erzeugten hxc-mfm Format nix anfangen, d.h. ausserhalb von mame unbrauchbar...
mfi hab ich nicht getestet

Dieser Beitrag wurde am 05.08.2025 um 12:00 Uhr von DL editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
028
05.08.2025, 12:21 Uhr
bandu



Ja, so rum hatte ich das auch versucht,
wenn ich dann das zweite Lw im Filemanager habe und Starte
kommt nach B: die Fehlermeldung:



Ist auch egal, das macht eh auch bloß ein .mfi oder mfm File und wie Du
schon sagtest, die kann man nicht zurückkonvertieren.

Mit -flop2 xxx.mfi geht es für mich besser, aber nützt halt nix. Aber da konnte ich
wie gesagt auf B: umschalten
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
029
05.08.2025, 12:25 Uhr
bandu



Als nächtes probiere ich das PC-File. Das klingt nach MSDOs, da habe ich Hoffnung,
(wenn es ordentlich schreibt), das es rückkonvertierbar ist.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
030
05.08.2025, 13:15 Uhr
bandu



Ich habe jetzt mal so ein pc file format erzeugt:

floptool flopconvert auto pc scp3.cpm scp3.img

Klappt auch, aber ist intern scheinbar ähnlich einem raw-format
und wird demzufolge von mame nicht akzeptiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
031
05.08.2025, 14:01 Uhr
DL
Default Group and Edit


Ja, daraus ist ja kein Diskettenformat mehr erkenntlich

Floptool scheint im snap nicht enthalten.
Hab mal mit mfi probiert, das kann der HxcFloppyemu lesen und umwandeln zum bearbeiten. Leider kann er es nur lesen, aber nicht neu schreiben.
Also geht es nur umständlich z.B. über jkcemu daraus ein neues cqm, imd oder dsk Image erzeugen und in mame in mfi umwandeln.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
032
05.08.2025, 14:27 Uhr
bandu



mit floptool kann man ein raw cpm in .mfi konvertieren:

floptool flopconvert auto mfi scp3.cpm scp.mfi

das liest mame dann auch.

floptool muß beim kompiloieren estra angegeben werden. Im Makefile den Kommentar #
vor TOOLS = 1 entfernen ind mit make TOOLS=1 kompilieren, dann enstehen die Tools:

mkleiner@hp7:/mnt/ramdisk/ttt$ ls
castool chdman floptool imgtool jedutil ldresample ldverify nltool nlwav split srcclean testkeys unidasm

Aber ich habe so meine Zweifel an der Qualität, imgtool hat schon 2x speicherabzug gebracht.


Das Hauptprobelm ist nach wie vor der Rückweg. Ich habe überlegt, ob man ein hdd-format probieren sollte, ist ja schließlich egal, wenn man sowieso nicht ums Konvertieren herumkommt.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
033
06.08.2025, 14:40 Uhr
bandu



Nach einigem Probieren habe ich einen Weg gefunden !!

Gebootet wird mit IMAGE.CQM, die ein SCP3 System enthält.

Für das zweite Laufwerk wird eine Datendiskette vorbereitet, so daß
man auch schreiben kann:

~/compile/mame0278$ cpmls -f 17153 -d z9001.cpm
CCP COM : SCP3 SYS : SUBMIT COM : TPDRUCK OVR
TPI05 TXT : TPI1-2 TXT : TPKOM TXT : TPOVLY0 OVR
PROFILE SUB : DEVICE COM : SC619 ZGF : TPINSTD COM
TPIDAISY TXT : DISK BAK : DISK TEX : TPHT OVR
TPSM COM : SET COM : COPYSYS COM : TPARCHIV COM
SDIR COM : TPG COM : DATE COM : HELP COM
DIR COM : SHOW COM : INITDIR COM : POWER2 COM
BRUN COM : STAT COM : MODCS COM : PIP COM
SETDEF COM : CLS COM : SCHRIFT COM : SCOPY COM
CEVICE COM : SCRIFT COM : STAMP SUB : SM SUB
NEWDISK SUB : DELE SUB : SC644 ZGF : NSWEEP COM
PROFILE BAK : INIT $$$ : HELP HLP : ERASE COM


Umwandeln in das .mfi - Format, weil MAME nur .mfi oder .mfm images SCHREIBEN kann:

<b>floptool flopconvert a5105 mfi z9001.cpm z9001.mfi</b>

!!!! wichtig: Das Format muß A5105 sein für diskdefs=17153 !!

xxd z9001.mfi | head -10
00000000: 4d41 4d45 464c 4f50 5059 494d 4147 4500 MAMEFLOPPYIMAGE.
00000010: 5000 0000 0200 0000 3532 3520 4453 5144 P.......525 DSQD
00000020: 200a 0000 be19 0000 b887 0200 e803 0000 ...............
00000030: de23 0000 f517 0000 f093 0200 e803 0000 .#..............
00000040: d33b 0000 b71d 0000 7068 0200 e803 0000 .;......ph......
00000050: 8a59 0000 7612 0000 24ae 0200 e803 0000 .Y..v...$.......
00000060: 006c 0000 7d11 0000 0472 0200 e803 0000 .l..}....r......
00000070: 7d7d 0000 8f21 0000 7c6e 0200 e803 0000 }}...!..|n......
00000080: 0c9f 0000 161b 0000 bc8c 0200 e803 0000 ................
00000090: 22ba 0000 2c21 0000 0067 0200 e803 0000 "...,!...g......

Test ob schreibbar und dach Neustart alle geänderten Dateien erhalten sind:

<b>mame rt1715w -flop1 IMAGE.CQM -flop2 z9001.mfi -window -resolution 1024x768 -nothrottle -uimodekey F12 </b>

Kopieren nach B:, umbenennen und Löschen funktionieren, Daten Bleiben nach dem
Beenden von MAME mit F12 ESC erhalten.


Der Ruuckweg in das Format 17153 gelingt mit diesem Befehl:

<b>floptool flopconvert mfi dos z9001.mfi z9001-neu.dos </b>


cpmls -f 17153 -d z9001-neu.dos
CCP COM : SCP3 SYS : SUBMIT COM : TPDRUCK OVR
TPI05 TXT : TPI1-2 TXT : TPKOM TXT : TPOVLY0 OVR
PROFILE SUB : DEVICE COM : SC619 ZGF : TPINSTD COM
TPIDAISY TXT : DISK BAK : DISK TEX : TPHT OVR
TPSM COM : SET COM : COPYSYS COM : TPARCHIV COM
SDIR COM : TPG COM : DATE COM : HELP COM
DIR COM : SHOW COM : INITDIR COM : POWER2 COM
BRUN COM : STAT COM : MODCS COM : PIP COM
SETDEF COM : CLS COM : SCHRIFT COM : SCOPY COM
CEVICE COM : SCRIFT COM : STAMP SUB : SM SUB
NEWDISK SUB : DELE SUB : SC644 ZGF : NSWEEP COM
PROFILE BAK : INIT $$$ : HELP HLP : ERASE COM
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
034
06.08.2025, 15:04 Uhr
bandu



Hier noch die undokumentierten Formate von floptool:

floptool flopconvert auto mfi z9001.dos z9001.mfi
Ambiguous source format. Possible formats:
4 - a5105 A5105 disk image
4 - apple_gcr Apple GCR 400/800K raw sector image
4 - applix Applix disk image
4 - camplynx Camputers Lynx disk image
4 - d81 Commodore 1581 disk image
4 - esq16 Ensoniq VFX-SD/SD-1/EPS-16 floppy disk image
4 - excali64 Excalibur 64 disk image
4 - fl1 FloppyOne floppy disk image
4 - juku Juku disk image
4 - kc85 KC85 disk image
4 - mgt Sam Coupe MGT image format
4 - ms0515 MS 0515 disk image
4 - nabupc NABU PC CP/M Disk Image
4 - nanos NANOS disk image
4 - pk8020 PK-8020 disk image
4 - ql Sinclair QL disk image
4 - smx Specialist MX/Orion/B2M disk image
4 - st Atari ST floppy disk image
4 - tiki100 TIKI 100 disk image
4 - tim011 TIM 011 disk image
4 - vector06 Vector 06 disk image
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
035
06.08.2025, 16:12 Uhr
DL
Default Group and Edit


Ok, das verkürzt meinen Weg aus 031 ja um einiges...

konvertieren mit
floptool flopconvert mfi dos scp3.mfi scp3.img
bearbeiten mit dem CIFE( https://github.com/ProgrammingHobby/Cife/releases ):

und zurück konvertieren mit
floptool flopconvert a5105 mfi scp3.img scp3.mfi

Dieser Beitrag wurde am 07.08.2025 um 15:00 Uhr von DL editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
036
07.08.2025, 05:01 Uhr
bandu



Aus einnem .CQM Image ein neues Bootimage erstellen


1, Originales Bootimage ist IMAGE.CQM

xxd IMAGE.CQM | head -12

00000000: 4351 1400 0400 0000 0000 005a 0000 0000 CQ.........Z....
00000010: 0500 0200 0000 0000 0000 0000 3830 304b ............800K
00000020: 2044 6f75 626c 652d 5369 6465 6400 0000 Double-Sided...
00000030: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000040: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000050: 0000 0000 0000 0000 0100 5050 ed65 7c58 ..........PP.e|X
00000060: 2a2a 204e 4f4e 4520 2a2a 009c 9d3b 2829 ** NONE **...;()
00000070: 0000 0000 0100 0200 0000 0000 0000 0000 ................
00000080: 0000 0000 d849 6d61 6765 2066 696c 6520 .....Image file
00000090: 6372 6561 7465 6420 6279 2075 6e72 6567 created by unreg
000000a0: 6973 7465 7265 6420 436f 7079 514d 0500 istered CopyQM..
000000b0: 03f0 0000 01fb ff00 0700 4000 0040 4f00 ..........@..@O.


2. In das Austauschformat .mfi konvertieren

floptool flopconvert a5105 mfi IMAGE.img bootimage.mfi

xxd bootimage.mfi | head -8

00000000: 4d41 4d45 464c 4f50 5059 494d 4147 4500 MAMEFLOPPYIMAGE.
00000010: 5000 0000 0200 0000 3532 3520 4453 5144 P.......525 DSQD
00000020: 200a 0000 df19 0000 1088 0200 e803 0000 ...............
00000030: ff23 0000 1c18 0000 4894 0200 e803 0000 .#......H.......
00000040: 1b3c 0000 e01d 0000 c868 0200 e803 0000 .<.......h......
00000050: fb59 0000 9612 0000 7cae 0200 e803 0000 .Y......|.......
00000060: 916c 0000 7a0d 0000 f073 0200 e803 0000 .l..z....s......
00000070: 0b7a 0000 9119 0000 ec93 0200 e803 0000 .z..............

3. GGf. über Konvertierung in `dos`-Format das Image ändern und dann zurück konvertieren in `mfi`

4. Booten von .mfi

mame rt1715w -flop1 bootimage.mfi -window -resolution 1024x768 -nothrottle -uimodekey F12

--- funktioniert ---

Damit kann man sich paßgenaue R/W Bootimages erstellen und Laufwerk B: völlig frei verwenden.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
037
07.08.2025, 11:21 Uhr
DL
Default Group and Edit



Zitat:
bandu schrieb
So geht es jetzt schneller:
....
-nothrottle



da wird einem bei Ladder ja schwindelig
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
038
07.08.2025, 11:32 Uhr
bandu



Der Aufrufparameter

-nothrottle

scheint Nebenwirkungen zu haben.
Die Wiederholtasten
-
=
Leertaste

machen bei mir immer mehrere Zeichen, was störend ist.
Subtiler läßt sich die Geschwindigkeit mit

-speed 4.0 (Werte anpaßbar)

steuern.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
039
07.08.2025, 13:29 Uhr
bandu



Bearbeiten eines Images mit Linux-Bordmitteln
=============================================

1. Gegeben ist z9001.dos, eine .raw image

cpmls -f 17153 -d z9001.dos
CCP COM : SCP3 SYS : SUBMIT COM : TPDRUCK OVR
...
NEWDISK SUB : DELE SUB : SC644 ZGF : NSWEEP COM
PROFILE BAK : INIT $$$ : HELP HLP : ERASE COM

2. Kopieren Datei IMAGE --> HOST

cpmcp -f 17153 z9001.dos 0ELE.SUB .
$ ls
dele.sub z9001.dos

3. Kopieren Datei HOST --> IMAGE

#Neue Datei erzeugen
cp dele.sub dele.bak

cpmcp -f 17153 z9001.dos dele.bak 0:
mkleiner@hp7:/mnt/ramdisk/zz$ cpmls -f 17153 -d z9001.dos
CCP COM : SCP3 SYS : SUBMIT COM : TPDRUCK OVR
...
NEWDISK SUB : DELE SUB : SC644 ZGF : NSWEEP COM
PROFILE BAK : INIT $$$ : HELP HLP : ERASE COM
DELE BAK

4. Image ins .msi - Format konvertieren, um es in MAME nutzen zu können

~/compile/mame0278/floptool flopconvert a5105 mfi z9001.dos z9001-neu.mfi

5. In MAME rt1715w Überprüfen

mame rt1715w -flop1 bootimage.mfi -flop2 z9001-neu.mfi -resolution 1024x768 -speed 5.0 -uimodekey F12
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
040
08.08.2025, 06:42 Uhr
bandu



Konvertierung Raw-Image nach CQM und zurück mit Linux-Bordmitteln
=================================================================

Viele Images liegen im .cqm CopyQm-Format vor.
Unter Linux kann man es mit:

floptool flopconvert cqm a5105 "$1" "$2"

in ein .raw-Format umkopieren:

floptool flopconvert cqm a5105 IMAGE.CQM IMAGE.IMG

cpmls -f 17153 -d IMAGE.IMG
SCP3 SYS : CCP COM : PIP COM : TYPE COM
...
SC635 ZGF : SC644 ZGF : SC641 ZGF : SC643 ZGF
SC602 ZGF : SC605 ZGF



Der Rückweg vom .raw-Format geht so NICHT so:

floptool flopconvert a5105 cqm IMAGE.IMG IMG-NEU.CQM
Error: Saving to format 'cqm' unsupported


Mit diesem Befehl klappt es dann aber:

dsktrans -itype raw -otype qm -format r17153 IMAGE.IMG IMG-NEU.CQM

MAME bootet von IMG-NEU.CQM !!

Leider gibt es `-format r17153` NICHT in der Originalversion von libdsk-1.4.2
die ich installiert habe.
Ich habe einen DIRTY HACK gemacht, und in

~/compile/libdsk-1.4.2/lib/dsksgeom.c

die Zeile:

{"ampro200", { SIDES_ALT, 40, 1, 10, 1, 512, RATE_SD, 0x0C, 0x17, 0, 0 }, "Ampro 40 track single-sided" },

durch

{"r17153", { SIDES_ALT, 80, 2, 5, 1, 1024, RATE_SD, 0x0C, 0x17, 0, 0 }, "17153 800k" },

ersetze und neu kompiliert. Dann kann ich -format r17153 verwenden !
AUF DIESE WEISE KANN MAN MIT BOSRDMITTELN VON LINUX

***VON*** und ***NACH***

.CQM-Format KONVERTIEREN !!!
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
041
08.08.2025, 10:42 Uhr
DL
Default Group and Edit


in der aktuellen libdsk gibt es dafür -format SCP800

Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
042
09.08.2025, 05:46 Uhr
bandu



Bei mir sind diverse Tasten falsch belegt:

Taste eingegebenes zeichen
= _
? =
ß -
' ^
` Strich oben
ü [
Ü {
+ ]
* }
ö ;
Ö +
ä :
Ä *
# \
' |
; <
: >
- /
_ ?
y z
Y Z
z y
Z Z
^ @
° `

Das liegt wohl daran, daß s600.ic8 ein kyrillische Tastaturlayout beinhaltet.

Gibt es ein rom-Image für 1715w mit deutschem Layout ?
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
043
09.08.2025, 05:59 Uhr
bandu



Kann auch sein, daß diese Definitionen die Ursache sind:

static INPUT_PORTS_START( k7658 )
PORT_START("row_00")
// D04 A54 E04 B54 B04 C04 D54 C54
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_R) PORT_CHAR('r') PORT_CHAR('R')
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Keypad S *1")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$')
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Keypad S *3")
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('V')
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F) PORT_CHAR('f') PORT_CHAR('F')
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Keypad CE") PORT_CODE(KEYCODE_PLUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(PLUS_PAD))
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Keypad -") PORT_CODE(KEYCODE_MINUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(MINUS_PAD))

PORT_START("row_10")
// D03 A53 E03 B53 B03 C03 D53 C53
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E')
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL_PAD) PORT_CHAR(UCHAR_MAMEKEY(DEL_PAD))
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#')
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Keypad 3") PORT_CODE(KEYCODE_3_PAD) PORT_CHAR(UCHAR_MAMEKEY(3_PAD))
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_C) PORT_CHAR('c') PORT_CHAR('C')
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_D) PORT_CHAR('d') PORT_CHAR('D')
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Keypad 9") PORT_CODE(KEYCODE_9_PAD) PORT_CHAR(UCHAR_MAMEKEY(9_PAD))
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Keypad 6") PORT_CODE(KEYCODE_6_PAD) PORT_CHAR(UCHAR_MAMEKEY(6_PAD))

PORT_START("row_20")
// D02 A52 E02 B52 B02 C02 D52 C52
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W')
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Keypad 00") PORT_CODE(KEYCODE_ASTERISK)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('@')
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Keypad 2") PORT_CODE(KEYCODE_2_PAD) PORT_CHAR(UCHAR_MAMEKEY(2_PAD))
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X')
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_S) PORT_CHAR('s') PORT_CHAR('S')
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Keypad 8") PORT_CODE(KEYCODE_8_PAD) PORT_CHAR(UCHAR_MAMEKEY(8_PAD))
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Keypad 5") PORT_CODE(KEYCODE_5_PAD) PORT_CHAR(UCHAR_MAMEKEY(5_PAD))

PORT_START("row_30")
// D11 --- E11 A15 A10 C11 --- A16
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_TILDE) PORT_CHAR('@') PORT_CHAR('`')
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_CHAR('_')
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Keypad New-Line") PORT_CHAR(UCHAR_MAMEKEY(ENTER_PAD)) PORT_CODE(KEYCODE_ENTER_PAD)
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ENTER) PORT_CHAR('\r')
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_QUOTE) PORT_CHAR('\'') PORT_CHAR('"')
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN))

PORT_START("row_40")
// D10 --- E10 --- B10 C10 E52 E51
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P')
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_CHAR(')')
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?')
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR(':')
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F2) PORT_CHAR(UCHAR_MAMEKEY(F2))
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F1) PORT_CHAR(UCHAR_MAMEKEY(F1))

PORT_START("row_50")
// D12 --- E12 B16 B01 C12 D16 C16
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('[') PORT_CHAR('{')
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('^') PORT_CHAR('~')
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_HOME) PORT_CHAR(UCHAR_MAMEKEY(HOME))
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z')
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR(']') PORT_CHAR('}')
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_INSERT) PORT_CHAR(UCHAR_MAMEKEY(INSERT))
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_TAB) PORT_CHAR('\t')

PORT_START("row_60")
// D07 A17 E07 B17 B07 C07 D17 C17
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_U) PORT_CHAR('u') PORT_CHAR('U')
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("A17 8E")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('&')
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT))
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_M) PORT_CHAR('m') PORT_CHAR('M')
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J')
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8)
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("rechter Rand") PORT_CODE(KEYCODE_END) PORT_CHAR(UCHAR_MAMEKEY(END))

PORT_START("row_70")
// D01 A51 E01 B51 B00 C01 D51 C51
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q')
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Keypad 0") PORT_CODE(KEYCODE_0_PAD) PORT_CHAR(UCHAR_MAMEKEY(0_PAD))
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!')
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Keypad 1") PORT_CODE(KEYCODE_1_PAD) PORT_CHAR(UCHAR_MAMEKEY(1_PAD))
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('\\') PORT_CHAR('|')
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_A) PORT_CHAR('a') PORT_CHAR('A')
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Keypad 7") PORT_CODE(KEYCODE_7_PAD) PORT_CHAR(UCHAR_MAMEKEY(7_PAD))
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Keypad 4") PORT_CODE(KEYCODE_4_PAD) PORT_CHAR(UCHAR_MAMEKEY(4_PAD))

PORT_START("row_08")
// D00 B99 E00 --- B11 C00 E15 E16
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LCONTROL) PORT_CHAR(UCHAR_SHIFT_2)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Left Shift") PORT_CODE(KEYCODE_LSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ESC) PORT_CHAR(UCHAR_MAMEKEY(ESC))
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Right Shift") PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_CAPSLOCK) PORT_CHAR(UCHAR_MAMEKEY(CAPSLOCK))
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LALT) PORT_CHAR(UCHAR_MAMEKEY(LALT))
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("SI/SO") PORT_CODE(KEYCODE_RALT) PORT_CHAR(UCHAR_MAMEKEY(RALT))

PORT_START("row_18")
// D08 A56 E08 B56 B08 C08 D56 C56
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_I) PORT_CHAR('i') PORT_CHAR('I')
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Keypad SQ (F14)")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('*')
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Keypad PS (F13)")
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<')
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_K) PORT_CHAR('k') PORT_CHAR('K')
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F11) PORT_CHAR(UCHAR_MAMEKEY(F11))
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F12) PORT_CHAR(UCHAR_MAMEKEY(F12))

PORT_START("row_28")
// D09 E53 E09 E54 B09 C09 E55 E56
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O')
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F3) PORT_CHAR(UCHAR_MAMEKEY(F3))
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR('(')
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F4) PORT_CHAR(UCHAR_MAMEKEY(F4))
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>')
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L')
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F5) PORT_CHAR(UCHAR_MAMEKEY(F5))
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F10) PORT_CHAR(UCHAR_MAMEKEY(F10))

PORT_START("row_38")
// D05 A55 E05 B55 B05 C05 D55 C55
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_T) PORT_CHAR('t') PORT_CHAR('T')
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F9) PORT_CHAR(UCHAR_MAMEKEY(F9))
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%')
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F8) PORT_CHAR(UCHAR_MAMEKEY(F8))
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_B) PORT_CHAR('b') PORT_CHAR('B')
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_G) PORT_CHAR('g') PORT_CHAR('G')
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F6) PORT_CHAR(UCHAR_MAMEKEY(F6))
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F7) PORT_CHAR(UCHAR_MAMEKEY(F7))

PORT_START("row_48")
// D06 A05 E06 B15 B06 C06 D15 C15
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('Y')
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ')
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('^')
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT))
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_N) PORT_CHAR('n') PORT_CHAR('N')
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_H) PORT_CHAR('h') PORT_CHAR('H')
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP))
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("linker Rand")
INPUT_PORTS_END
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
044
09.08.2025, 11:17 Uhr
MarioG77

Avatar von MarioG77

Interessant, was ihr so treibt.
Muss leider was posten, um das Thema zu abonieren...
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy, D008], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x A5120 und hin und wieder was von oben
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
045
09.08.2025, 13:32 Uhr
bandu



Ich kann die Fragestellung wieder einschränken.

Diese Definitionen :

static INPUT_PORTS_START( k7658 )
PORT_START("row_00")
// D04 A54 E04 B54 B04 C04 D54 C54
PORT_BIT( 0x01, IP_ACTIVE
...

werden nur für den Game-Driver benötigt, um Spezialtasten (Münz-Einwurf u.ä) zu definieren.
Für die Notmale Keyboard-Ausgabe haben die offensichtlich keine Wirkung.

Bleibt die Frage nach dem Image für eine deutschen ROM.
Andere Frage: gibt es ein Reassembler-Listing von s600.ic8 ???
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
046
09.08.2025, 15:33 Uhr
bandu



Ha, Ha,
die Lösung ist viel einfacher.
Nachdem die ROMS s602 und s618 keine Änderung gegenüber s600.ic8
gebracht hatten, habe ich ein keymap-file dazugeschaltet.
Damit verbesset sich das Tastaturverhalten, wenn es auch noch nicht ganz schön ist:

Taste eingegebenes zeichen

? +
ß Strich oben
' *
` `
ü ?
Ü ^
+ #
* '
ö |
Ö \
ä {
Ä [
# <
' >
; ;
: :
- -
_ _
y y
Y Y
z z
Z Z
^ }
° ]

Das keymap-file sieht so aus:

# license:CC0-1.0
[SDL2]
# MAME/MESS keymap for German QWERTZ 105-keys keyboard (Linux)
#
# Row 1
#
ITEM_ID_TILDE SDL_SCANCODE_GRAVE ^
ITEM_ID_MINUS SDL_SCANCODE_MINUS ß
ITEM_ID_EQUALS SDL_SCANCODE_EQUALS ´
#
# Row 2
#
ITEM_ID_Y SDL_SCANCODE_Z Y
ITEM_ID_OPENBRACE SDL_SCANCODE_LEFTBRACKET Ü
ITEM_ID_CLOSEBRACE SDL_SCANCODE_RIGHTBRACKET +
#
# Row 3
#
ITEM_ID_COLON SDL_SCANCODE_SEMICOLON Ö
ITEM_ID_QUOTE SDL_SCANCODE_APOSTROPHE Ä
ITEM_ID_BACKSLASH SDL_SCANCODE_BACKSLASH #
#
# Row 4
#
ITEM_ID_BACKSLASH2 SDL_SCANCODE_NONUSBACKSLASH <
ITEM_ID_Z SDL_SCANCODE_Y Z
ITEM_ID_SLASH SDL_SCANCODE_SLASH -
#
# Row 5
#
ITEM_ID_RALT SDL_SCANCODE_RALT ALTGR


Eventuell läßt es sich ja weiter verbessern. Ich werde drüber nachdenken.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
047
09.08.2025, 15:34 Uhr
bandu



Ach so, der modifizierte Starbefehl:

mame rt1715w -flop1 IMAGE.CQM -window -resolution 1024x768 -speed 5.0 -uimodekey F12 \
-keymap -keymap_file ./keymaps/km_de_LINUX.map
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
048
10.08.2025, 11:33 Uhr
DL
Default Group and Edit


Die Charakter ROMs s602 und s618 gehören ja auch zum 1715 (ohne W) und haben mit der Tastatur nix zu tun
Schaltet man im Menü bei den Eingabeeinstellungen die Tastaturauswahl von "emuliert" auf "natürlich" kommt man auch vom Layout der K7658 Tastatur zum Layout einer PC-Tastatur.
Allerdings sind beide leider ein wenig fehlerhaft in der Belegung.

Edit:Ok. betreffs S618 muss ich mich revidieren, das ist vom Inhalt her auch ein Tastatur ROM

Dieser Beitrag wurde am 10.08.2025 um 12:17 Uhr von DL editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
049
10.08.2025, 12:00 Uhr
bandu



Ja, ich hatte ja schon gesagt, daß ich kein Elektroniker bin und war von den Bezeichnungen in http://oldpc.su/articles/de_roms/DE_ROMs.html ausgegangen.
Ist ja auch inzwischen überlebt.

Inzwischen sehe ich etwas klarer:
Dei von mir vorstehend geposteten Tastaturdefinitionen
static INPUT_PORTS_START( k7658 )
PORT_START("row_00")
// D04 A54 E04 B54 B04 C04 D54 C54
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_R) PORT_CHAR('R') PORT_CHAR('r')
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Keypad S *1")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$')
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Keypad S *3")
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('V')
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F) PORT_CHAR('f') PORT_CHAR('F')
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Keypad CE") PORT_CODE(KEYCODE_PLUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(PLUS_PAD))
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Keypad -") PORT_CODE(KEYCODE_MINUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(MINUS_PAD))

PORT_START("row_10")
// D03 A53 E03 B53 B03 C03 D53 C53
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E')
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL_PAD) PORT_CHAR(UCHAR_MAMEKEY(DEL_PAD))
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#')
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Keypad 3") PORT_CODE(KEYCODE_3_PAD) PORT_CHAR(UCHAR_MAMEKEY(3_PAD))
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_C) PORT_CHAR('c') PORT_CHAR('C')
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_D) PORT_CHAR('d') PORT_CHAR('D')
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Keypad 9") PORT_CODE(KEYCODE_9_PAD) PORT_CHAR(UCHAR_MAMEKEY(9_PAD))
PORT_BIT( 0x80, IP_ACTIVE_HIG

usw ....

korrespondieren mit dem Keyboard-Menü in MAME.
Änderungen auf dieser Ebene werden aber nach meinen Erkenntnissen vom SCP ignoriert.

Das die Zuordnung des Mapping-Files einen Teileffekt zeigte, liegt wohl daran, daß intern für einige Tasten implizit andere Keycodes gesendet werden. Wenn man dieses Definitionefile leer zuordnet, hat man den gleichen Effekt, d.h. die darin explizit aufgeführten Definitionen sind auch nur für MAME selbst wirksam, so wie das Menü auch. Implizit werden aber für einige Tasten andere Scancodes gesendet, deshalb der teilerfolg.

Der Zustand ist wohl der: Die in Mame emulierte Tastatur ist keine 7658, oder nur unvollständig.

Da gibt es drei Möglichkeiten:
1. man hilft der Tastatur in MEME auf die Sprünge, oder
2 der 1715 muß einen rom für eine ANDERE TASTATUR erhalten oder
3. mit #ifdef (das wird auch jetzt schon im mame-code verwendet) müssen eine handvoll scancodes
"umgebogen" werden

Für alle 3 Fälle müßte man die Codes der 7658 VOLLSTÄNDIG kennen, im Manual pc1715w sind sie nicht vollständig.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
050
10.08.2025, 12:08 Uhr
DL
Default Group and Edit



Zitat:
bandu schrieb
Für alle 3 Fälle müßte man die Codes der 7658 VOLLSTÄNDIG kennen, im Manual pc1715w sind sie nicht vollständig.



Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
051
10.08.2025, 13:01 Uhr
bandu



der s600.ic8 beginn mit ziemlichen Aufwand:

gezielte Initialisierung beider Registersets des Z80

AF ; XOR A ? setzt A = 0
67 ; LD H,A ? H = 0
6F ; LD L,A ? L = 0
47 ; LD B,A ? B = 0
4F ; LD C,A ? C = 0
57 ; LD D,A ? D = 0
5F ; LD E,A ? E = 0
D9 ; EXX ? tauscht BC, DE, HL ? BC', DE', HL'
67 ; LD H,A ? H' = 0
6F ; LD L,A ? L' = 0
47 ; LD B,A ? B' = 0
4F ; LD C,A ? C' = 0
57 ; LD D,A ? D' = 0
...

Das sieht mir nicht so aus, als ob das ständig im Zuge von Eingaben aufgerufen würde.
Eher wie einmalig beim booten zur Initialisierung der Tastatur.
Also keine Codeumsetzung.

Dann müßte man ja bei Codewechsel die Tastatur tauschen.
Ich habe keine Ahnung wie das damals war.
Aber das halte ich für den wahrscheinslichsten Fall.

Das ist schlecht, weil ein rom-Patch die eleganteste Lösung gewesen wäre.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
052
10.08.2025, 15:18 Uhr
bandu



Da sollten wir zuerst zu anzupassenden Scancodes festlegen und DOPPELT PRÜFEN !!



79-59 SDL_SCANCODE_Y = 28,
78-58 SDL_SCANCODE_Z = 29,

KEYDOWN ? Scancode: 36 (7), Keycode: 55 (7)
TEXTINPUT ? Zeichen: '{' <== 7B

KEYDOWN ? Scancode: 37 (8), Keycode: 56 (8)
TEXTINPUT ? Zeichen: '[' <== 5B

KEYDOWN ? Scancode: 38 (9), Keycode: 57 (9)
TEXTINPUT ? Zeichen: ']' <== 5D

KEYDOWN ? Scancode: 39 (0), Keycode: 48 (0)
TEXTINPUT ? Zeichen: '}' <== 7D

KEYDOWN ? Scancode: 45 (-), Keycode: 223 (ß)
TEXTINPUT ? Zeichen: '\' <== 2F

KEYDOWN ? Scancode: 48 (]), Keycode: 43 (+)
TEXTINPUT ? Zeichen: '+' <== 2B

KEYDOWN ? Scancode: 229 (Right Shift), Keycode: 1073742053 (Right Shift)
KEYDOWN ? Scancode: 48 (]), Keycode: 43 (+)
TEXTINPUT ? Zeichen: '*' <== 2A

KEYDOWN ? Scancode: 230 (Right Alt), Keycode: 1073742054 (Right Alt)
KEYDOWN ? Scancode: 48 (]), Keycode: 43 (+)
TEXTINPUT ? Zeichen: '~' <== ???????????

KEYDOWN ? Scancode: 49 (\), Keycode: 35 (#)
TEXTINPUT ? Zeichen: '#' <== 23

KEYDOWN ? Scancode: 229 (Right Shift), Keycode: 1073742053 (Right Shift)
KEYDOWN ? Scancode: 49 (\), <== 5C

TEXTINPUT ? Zeichen: '''
KEYDOWN ? Scancode: 100 (), Keycode: 60 (<
TEXTINPUT ? Zeichen: '<'i <== 3C

KEYDOWN ? Scancode: 229 (Right Shift), Keycode: 1073742053 (Right Shift)
KEYDOWN ? Scancode: 100 (), Keycode: 60 (<
TEXTINPUT ? Zeichen: '>' <== 3E

KEYDOWN ? Scancode: 230 (Right Alt), Keycode: 1073742054 (Right Alt)
KEYDOWN ? Scancode: 100 (), Keycode: 60 (<
TEXTINPUT ? Zeichen: '|' <== ??????????


Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
053
11.08.2025, 10:45 Uhr
DL
Default Group and Edit


???
Ja,ok das Bild in 050 ist etwas unscharf.
Links neben der Repeat-Taste ist oben Tilde unten Zirkumflex und links neben dem Z unten Backslash und oben der senkrechte Strich.
Links neben dem INS macht ein TAB nach rechts?
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
054
11.08.2025, 10:47 Uhr
bandu



Konnte alles Lesen. Der stillschweigenden Dank war auch dabei.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
055
11.08.2025, 11:52 Uhr
bandu



Ich habe meinen Erkenntnisstand ein bischen erweitert:


A. Es gibt keinen eigenständigen Treiber rt1715w_kbd.cpp oder so.
Die Emulation der Tastatur erfolgt mit im Maschine-Modul rt1715w.cpp
mit INPUT_PORTS_START(k7658).


B. Tastaturmappings

1. Der Emulator hat eine US-Tastatur.

2. Wenn -keymap definiert ist (und nur dann) wird sozusagen ein deutscher tastaturtreiber drübergelgt, konkreter
wohl derjeniger der Landesspraches des Hostsystems.

3. Bei -keymap können OPTIONAL in der map-Datei Tasten umdefiniert werden. Diese Umdefinition
ändert die Ausgangslage der MAME-Tabelle.

4. In Abhänigkeit von "natural keyboard" oder "emuliertes Keybors" (siehe Memü) Kann die Mametabelle
Ab- oder Zugeschaltet werden.

5. Die in der Mame-Tabelle ENTHALTENEN ZEICHEN (und das sind nicht alle) knnen im Menü umdefiniert werden.
Alte Spielautomaten-Spiele nutzen häufig diese Möglichkeit.
rt1715w braucht das nicht.

6. In der Maschinendefinition des zu emulierenden Systems kann die Tastenbelegung ebenfalls umdefiniert werden.
(PORT_START, PORT_BIT ...)

Für Z/Y hat ein freundlicher, wohlmeinender Entwichler dies getan:

PORT_START("row_50")
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z')

PORT_START("row_48")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('Y')

Und hat dabei übersehen daß der pc1715 genau wie US-Rechner die Tasten Z und Y angeordnet hat.
Da muß ich also die bewußte und gut gemeinte vVertauschung (vorstehend) wieder zurücktauschen.

7. Jetzt erst erhält der Tastatur-U880 die Zeichen. Er benutzt seinen ROM um sie ggf. umzudefinieren
(Matrix-Zuordnungstabelle).
Der Tastaturprozessor erhält aber NUR DIE CODES der Stufe 4.) oder 6.) , die Ändeungen 5.) spielen für ihn
keine Rolle.



Damit ist der Ansatzpunkt für die Korrektur des rt1715w der Punkt 6.) oder der ROM von Punkt 7.)



C. Die Tastatur ist ein eigener U880-Prozessor, der in der Emulation als separates Gerät läuft.
Die Kommunikation zwischen Tastatur-U880 und Haupt-U880 läuft über serielle Leitungen,
z.?B. über das SIO-Interface (Z80SIO)

Innerhalb des rt1715w ist die Tastatur als Matrix aufgebaut:

Zeilen AKTIVIEREN: "row_28", "row_29", "row_2A", ... "row_80" (8 Zeilen)
Spalten LESEN: Bits innerhalb der Zeile (0x01, 0x02, 0x04, ... 0x80) (8 Spalten)

Die konkreten Nummern sind hardwareseitig im Zusammenhang mit ihrer Funktion
(aktivieren/lesen) fest 1715-spezifisch definiert.
Die MAME-Maschine rt1715w definiert die Matrix fpr den Tastatur-U880.
Diese Definitionen sind ausschließlich für den Tastatur-U880 relevant — und zwar innerhalb der Emulation

static INPUT_PORTS_START( k7658 )
PORT_START("row_00")
// D04 A54 E04 B54 B04 C04 D54 C54
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_R) PORT_CHAR('R') PORT_CHAR('r')
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Keypad S *1")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$')
...
INPUT_PORTS_END


Der Tastatur-U880 führt den gesamten Matrix-Scan selbstständig durch:
- Aktiviert intern die Matrixzeilen (z.?B. über eigene PIO)
- Liest die Spalten
- Wandelt die Zeile+Spalte in einen ASCII-Code oder Tastencode um
- Legt den Code in einen Puffer oder sendet ihn direkt an den Haupt-Z80

Das Leseprinzip:
Zeile aktivieren
Spalten lesen
Nächste Zeile aktivieren
...

C. Entgegen meiner früheren Vermutung ist der ROM s600 doch in die laufende Eingabe integriert.

Im Zuge des Bootvorganges wird dier Code in diesem ROM vom Tastatur-U880 abgearbeitet.
Der Code enthält (vermutlich) eine zentrale Endlosschleife, in der der Tastatur-U880 entsprechend der vorstehend
erläuterten Matrixdefinition STÄNDIG die Keys der Tastatur abfragt unf ihren Status speichert.
Ein Reassemblieren des ROM könnte das Funktionsprinzip zweifelsfrei offenlegen.
Der ROM enthält eine Tabelle, in der für die Zeilen und Spalten der vorstehend erläuterten Matrix die zurück-
zuliefernden Codes definiert sind.

D. Der Hauptprozessot U880 hat 2 Funktionen (r + w), um mit dem Tastaturprozessor zu kommunizieren:

void rt1715_state::memory_write_byte(offs_t offset, uint8_t data)
Die Funktion rt1715_state::memory_write_byte(...) wird hier missbraucht (im positiven Sinne ?)
als Debug-Hook, um Tastaturzustände zu beobachten, nicht um echte Speicherzugriffe zu simulieren.


uint8_t rt1715_state::memory_read_byte(offs_t offset)
Die Eigentliche tastatur-Lesefunktion

Beispiel: Lesen eines Zeichens von der Tastatur
- Taste R wird gedrückt
- Der Tastatur-U880 (Z80 in der Tastatur) scannt die Matrix ständig
Er aktiviert nacheinander alle Matrixzeilen
Liest die Spalten
Erkennt, dass R gedrückt wurde (Änderung gegen dem gespeicherten letzten Zustand)
Er wandelt die Zeile+Spalte in den ASCII-Code 0x52 (für 'R') Codetabelle !!
Dieser Code wird in einen Ausgabepuffer geschrieben
Der Puffer liegt nicht im ROM, sondern in einem I/O-Register oder RAM-Bereich, der über einen Port erreichbar ist

- Der Haupt-U880 fragt über einen I/O-Port ab, ob ein Zeichen bereitsteht
-- Entweder durch Polling oder Interrupt --
Es gibt oft ein Statusregister, das z.?B. ein „Zeichen bereit“-Bit enthält
Genaueres könnte das Disassemblieren des ROM erbringen

- Wenn ein Zeichen bereit ist, liest der Haupt-U880 ein Byte vom entsprechenden I/O-Port
Das gelesene Byte ist 0x52

- Der Hauptprozessor verarbeitet es weiter
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
056
12.08.2025, 16:35 Uhr
bandu



@DL

Ich kann doch eine Taste nicht lesen 3D 2D und was sind das für Zeichen ?

Meine schöne große Tastatur hat dort wohl einen Fehler, weil das zwei gleiche
Tasten ausgewiesen sind.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
057
12.08.2025, 17:35 Uhr
DL
Default Group and Edit


Das sind wie auf der Tastatur in 052 richtig dargestellt = und -
Das Bild stimmt schon, bis auf die korrigierten Tasten in 053
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
058
12.08.2025, 17:53 Uhr
bandu



Ach, wenn ich mich recht erinnere , waren auf den beiden Tasten = ~ ^ und Strich oben ??

in 052 sind doch zwei gleiche tasten dargestellt ?
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
059
12.08.2025, 17:55 Uhr
bandu



Hier habe ich sogar noch ein bild, wo man sieht, das die Tasten unterschiedlich sind:

Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
060
12.08.2025, 18:11 Uhr
DL
Default Group and Edit


Daher hatte ich es ja in 053 korrigiert!
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
061
12.08.2025, 18:15 Uhr
bandu



@DL ok, das habe ich zwar gelesen, aber war wieder raus nach zwei tagen
quelltextanalyse.
Dann ist das nun klar.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
062
12.08.2025, 18:18 Uhr
bandu



Es gibt eine positive und eine negative Nachricht:

--- MAME-Änderung wird nichts, zu tiefer Eingriff, zu viel Aufwand
+++ Patch des ROM hat für ein erstes Zeichen schon mal funktioniert, der Weg ist offen !!!
Ein Reassemblieren ist nicht nötig, aber mit dem Hexeditor etwas friemelig.


Hintergrund zur negativen Nachricht:
Versuch der Tastendefinition durch KEYMAPFILE -- ./keymap/km_de_LINUX.map
---------------------------------------------------------------------

- In der MAME-Dokumentation gibt es nichts weiter dazu
- einzig der Inhalt des vorhandenen Keymap-Files `km_de_LINUX.map` wird abgedruckt

Die Definitionen wurden vor einiger Zeit auf die SDL2- Library umgestellt.

Das bedeutet:
MAME erhält vom Linux-Betriebssystem keine klassischen Tastencodes mehr als Eingabe,
sondern sogenannte SDL-Codes. Dabei handelt es sich um Zeichenketten (Strings),
die die jeweilige Taste eindeutig definieren.

Im Linux-Teil von MAME werden keine Tastencodes mehr verwendet, sondern nur die
Key-Strings bzw. Key-Identifier !

====================================================================
DAS MACHT EINE EINFACHE UMDEFINITION VON TASTATURCODES UNMÖGLICH !!!
====================================================================

Umdefiniert werden kann nur über Identifier (wie in keymap).

Final `wandert` der Tastendruck über diverse Mappings in ein Key-Array,
auf das dann auch die emulierte Maschine Zugriff hat.
Sie betrachtet dieses Array als ihre TASTATUR, d.h. dort sind die Tasten abgebildet,
ob sie gedrückt sind, ob Shift oder Ctrl oder Alt / AltGr zusätzlich gedrückt sind,
wie in einer echten Kardware-Tastatur auch.
Dieses Array wird von der emulierten Maschine, genauer von deren Tastatusprozessor ständig gepollt,
damit die virtuelle Tastatur über Tastendrücke Bescheid weiß.
Da die interne Arbeit des Tastatur-U800 vom echten, digitalisierten ROM gesteuert wird,
muß das Hardware-Konzept der Tastenmatrix aus k7658 also auch abgebildet werden.
Die Tastatur-U880 mit seinem ROM erkennt nur die Matrixposition, nicht den Keycode.
Die Erkennung machen die Quellcode-Definitionen zwischen PORT_SART / PORT-END in rt1715.cpp.

Leider ist auf der Ebene der Key-Strings (SDL) und der Key-Matrix (emulierte Maschine)
keine einfache Änderung des Tastaturcodes durch Neuzuweisung möglich.

Erst das SCP materialisiert die Key-Matrix-Informationen wieder zu einem Tastencode auf
der Basis der vom Tastatur-U880 gelieferten Informatioenn (aus dem ROM).


Damit wäre es eigentlich wünschenswert gewesen,
die beabsichtigte Tastencodeänderung z.B. über das keymap-File zu realisieren.


Für Testzwecke habe ich ./keymap/km_de_LINUX.map nach km_rt1715w.map kopiert

---------------------------------------------------------------
# license:CC0-1.0
[SDL2]
# MAME/MESS keymap for German QWERTZ 105-keys keyboard (Linux)
#
# Row 1
#
ITEM_ID_TILDE SDL_SCANCODE_GRAVE ^
ITEM_ID_MINUS SDL_SCANCODE_MINUS ß
ITEM_ID_EQUALS SDL_SCANCODE_EQUALS ´
#
# Row 2
#
ITEM_ID_Y SDL_SCANCODE_Z Y
ITEM_ID_OPENBRACE SDL_SCANCODE_LEFTBRACKET Ü
ITEM_ID_CLOSEBRACE SDL_SCANCODE_RIGHTBRACKET +
#
# Row 3
#
ITEM_ID_COLON SDL_SCANCODE_SEMICOLON Ö
ITEM_ID_QUOTE SDL_SCANCODE_APOSTROPHE Ä
ITEM_ID_BACKSLASH SDL_SCANCODE_BACKSLASH #
#
# Row 4
#
ITEM_ID_BACKSLASH2 SDL_SCANCODE_NONUSBACKSLASH <
ITEM_ID_Z SDL_SCANCODE_Y Z
ITEM_ID_SLASH SDL_SCANCODE_SLASH -
#
# Row 5
#
ITEM_ID_RALT SDL_SCANCODE_RALT ALTGR
---------------------------------------------------------------


Da es nicht weiter in der Dokumentation erläutert ist, meine Analyse des Aufbaus:

-- 1 -- -- 2 -- -- 3 --
MAME-Identifier SDL_SCANCODE Beschreibung

ITEM_ID_Z SDL_SCANCODE_Y Z
ITEM_ID_BACKSLASH2 SDL_SCANCODE_NONUSBACKSLASH <

...
Die Lesart ist: Das Zeichen ITEM_ID_Z wird angezeigt, wenn die Taste SDL_SCANCODE_Y
(entsprechend der Mnemonik der erweiterten US-Tastenbelegung) gedrückt wird.

Eine Schwierigkeit ist noch, daß der mnemonische Bezeichner der ITEM_ID... von der Taste
abgeleitet wird, die an der Position der gedrückten Taste der DE-Tastatur zu stehen kommt.
Beispiel DE-Taste # -- US-Taste / -- ITEM: ITEM_ID_BACKSLASH bezeichent #-Taste.
Der Tastenname leitet sich dann von der normalen Taste (NICHT SHIFT) ab.


SDL_Scancodes
=============

https://wiki.libsdl.org/SDL3/SDL_Scancode


MAME-Identifier
===============

Die Item-Tabelle von MAME aus dem Programmcode
( ./src/emu/inputdev.h )
extrahiert.
Die vom Linux gelieferten SDL_SCANCODES werden auf diese Bezeichner abgebildet.
Intern arbeitet MAME dann mit diesen Bezeichnern.

================================================================================
Nach meinen Beobachtungen wirkt die Definition aus dem Keymapfile NUR TEILWEISE,
bzw. FEHLERHAFT und ist daher für den angedachten Zweck nicht zu gebrauchen.
================================================================================
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
063
12.08.2025, 18:52 Uhr
Dresdenboy



Interessante Erkenntnisse! Die werden mir vmtl. auch bei der A5105-Emulation helfen, wo ich auch Probleme mit der vorh. Tastenzuordnung habe und die versch. Ebenen im MAME noch nicht so gut kenne.

P.S.: Größere Anpassungen im ROM direkt könnten gut per Python-Script o.ä. erledigt werden.
--
___________________________________
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, ...
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
064
13.08.2025, 03:55 Uhr
bandu



Ich mache einen "Prommer" als Bash-Script, Python muß immer erst
installiert werden, habe zwar viele, aber "Bash" in unabhängiger.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
065
13.08.2025, 06:17 Uhr
bandu



Jetzt wird's verwirrend !

Mein Ziel ist, Daß die Zeichen, die auf einer deutschen Tastatur aufgedruckt sind,
beim Betätigen auch so auf der emulierten k7658 angezeigt werden.

Ich habe Folgendes gamacht, um die erforderlichen Patches zu ermitteln:


Als Bildgrundlage habe ich das Layout einer k7658 gewählt.

Die dargestellten schwarzen Tasten, die relevant sind, liegen positionsgetreu
zu einer deutschen QWERZ-Tastatur, mit Ausnahme ^- Taste.

Die Vertauschung von Y -- Z wird über das keymap-File realisiert.

Solide rote Flächen sind Zeichen, die auf der K7658 nicht existieren.

Wenn eine schwarze, deutsche Taste KEINE farbigen Ergänzungen enthält,
kommt sie original durch, kein Patch erforderlich.

Solide rote Flächen sind Zeichen, die auf der K7658 nicht existieren.
Die Zeichen ß ä ö ü der deutschen Tastatur sind auch nicht darstellbar,
müßen aber ABWEICHEND VON MEINEM ZIEL benutzt werden, um die ALT-Keycodes
realisieren zu können, auf die reagiert die k7658 nicht.

Dabei wird von mir willkürlich festgelegt:
ß --> \
ä --> ` @
ö --> [ {
ü --> ] }

Die restlichen Patches ergeben sich aus dem Bild nach folgender Lesart:

"wenn die schwarze, deutsch Taste gedrückt wird"
--> "und sie keine farblichen Ergänzungen hat, wird das schwarze zeichen dargestellt, KEIN PATCH"
--> "und farbliche Ergänzungen vorhanden sind, dann"
"wird ungepatcht das rote Zeichen angezeigt."
"nach dem Patch das grüne Zeichen"

Ich hoffe, daß ich alles richtig zugeordnet habe und nichts vergessen ist.

Ich bitte um KRITISCHE Prüfung oder ggf. Anmerkungen !

Hinweis: - statt $ kommt das DDR-Währungssymbol.
- Das § -Zeichen über der 3 ist nicht darstellbar und bleibt bei #

Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
066
13.08.2025, 10:50 Uhr
DL
Default Group and Edit


Mich hatten mal die vielen Zeichensätze auf der einen Diskette vom PC1715W interessiert


Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
067
13.08.2025, 11:18 Uhr
bandu



Ja, der Hinweis ist gut.

Ich habe natürlich jetzt nur MEINEN ROM im Auge, aber die Sache
könnte vielfältiger sein, was ich ignoriere.

Aus meinem Rom
00000460 72 D0 34 D0 76 66 CE BD 00 00 1B 00 00 00 00 00 65 AC 33 B3 63 64 B9 B6 69 CD 38 C2 2C 6B C1 C0

ersehe ich jetzt ohne Mühe den Zeichensatz nicht.

Auch weiß ich noch nicht, warum die Zeichen 2x (in 2 Blöcken angeordnet) vorkommen.
Ich hatte die 2 Testzeichen einfach an beiden Positionen ersetzt.

Wenn man den ROM interpretieren will, muß man sich wohl doch die Mühemachen, und durch Reassemblierung die Matrixstruktur genauer ermitteln.
Die Anordnung im ROM scheint mir jedenfalls nicht so aufgezählt, wie die 12. Zeichensätze.
Wahrscheinlich ist neben der grafischen Darstellung der Zeichen länderspezifisch (Tastaturspezifisch) auch die Einordnung in die Matrix dufferierend.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
068
13.08.2025, 11:35 Uhr
bandu



Als Kennung finde ich SC60x 60x 0x0270 --> 70 02 jedenfalls
auf Anhieb nicht im ROM. Höchstens bei 7? 02 könnte sie sich verstecken,
das was mir jetzt zuviel des Guten.
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