NKC Forum
Registrieren | FAQ | Suche | Wer ist online? | Mitgliederliste | Heutige Beiträge | Kalender | Einloggen



Autor Thema: NKC Emulator für 68008
andi
Kennt sich schon aus
**
ID # 213


  Erstellt am 11. Februar 2024 21:53 (#21)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Hallo Martin,

hab die eine PN geschickt. Hoffentlich funktioniert das schon (hat eine ganze Weile hier nicht funktioniert).

PS. Ich fürchte ich hab einen weiteren Bug entdeckt. Der 4x4 Block wird nicht richtig gezeichnet.
Schau ich mir demnächst an :-)

LG,
Andreas

Beiträge: 132 | Mitglied seit: Mai 2021 | IP-Adresse: nicht gespeichert
b377
Lernt noch alles kennen
*
ID # 234


  Erstellt am 13. Februar 2024 14:49 (#22)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Hallo Andi,

hat leider mit der PN nicht geklappt. Kannst mir aber gerne eine E-Mail schreiben (siehe Profil).

-----------------------
Gruß Martin

Beiträge: 14 | Mitglied seit: Dezember 2023 | IP-Adresse: nicht gespeichert
b377
Lernt noch alles kennen
*
ID # 234


  Erstellt am 17. Februar 2024 19:31 (#23)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Hallo smed,

Space Invaders bleibt beim Warten auf den Firebutton hängen. Hier scheint die Logik im C Code invertiert (aktive low) bei der Simulation und bei meinem echten NKC ist dies jedoch aktive high. D.h.: Kein Joystick Input ist 0x00 und Fire ist 0x10.
Ich habe gesehen, das man auch die Tastatur benutzen kann, aber hier scheint das Strobe Signal auch invertiert.
Mit deinem Code:


key = readKey();
key = readKey();
key = key - 128;
if (key == ' ') {joystick = JOYSTICK_FIRE;}

wird der Vergleich bei normalen Strobe nie funktionieren. readKey() liefert bei der Leertaste den Wert 32 (Hex 0x20, Charachter ' '). Durch die Subtraktion von 128 wird dies jedoch hex 0xA0, was beim Vergleich mit ' ' nie identisch wird.

Konnte leider bisher keine angepasste Version Compilieren. Erhalte den Fehler:


a-file.o: in function `DebugPrint.constprop.0':
file.c:(.text+0xb1c): relocation truncated to fit: R_68K_PC16 against `.bss'
file.c:(.text+0xb42): relocation truncated to fit: R_68K_PC16 against `.bss'
a-file.o: in function `DebugPrint.constprop.1':
file.c:(.text+0xb88): relocation truncated to fit: R_68K_PC16 against `.bss'
file.c:(.text+0xc08): relocation truncated to fit: R_68K_PC16 against `.bss'
a-file.o: in function `DebugPrint':
file.c:(.text+0xc66): relocation truncated to fit: R_68K_PC16 against `.bss'
file.c:(.text+0xcee): relocation truncated to fit: R_68K_PC16 against `.bss'
a-file.o: in function `DebugPrintPos':
file.c:(.text+0xd66): relocation truncated to fit: R_68K_PC16 against `.bss'
file.c:(.text+0xd8e): relocation truncated to fit: R_68K_PC16 against `.bss'
a-file.o: in function `initObj':
file.c:(.text+0x182a): relocation truncated to fit: R_68K_PC16 against `.bss'
collect2.exe: error: ld returned 1 exit status


Muss wohl besser verstehen wie der Cross-Compiler funktioniert.

Martin

-----------------------
Gruß Martin

Beiträge: 14 | Mitglied seit: Dezember 2023 | IP-Adresse: nicht gespeichert
smed
Stammgast
**
ID # 114


  Erstellt am 19. Februar 2024 00:03 (#24)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Hallo Martin,
danke fuer die Rueckmeldung. Zum Joystick hatte ich mal diesen Beitrag geschrieben: https://nkc-schuetz.de/forumdrc/index.php?mode=viewthread&forum_id=1&thread=158

Dort im screenshot ist zu sehen das bei meinem NKC/IOE+Atari Joystick tatsächlich die Logik active low ist...

Den compiler error kenne ich, hat mit der Entfernung des Sprungziels zu tun und ließe sich bisher, bei meiner gcc Version, durch verschieben der betreffenden Funktion beheben. Genau deshalb sind auch einige include statements mitten im Quellcode und nicht wie üblich alle am Anfang.

Bei den gcc Versionen von Andi habe ich auch viele dieser Fehler bekommen, soweit ich mich erinnere hat Andi allerdings SpaceInvaders bei sich kompilieren können. Ich werde mal meinen kompletten gcc in Github stellen.

Schau mal ob der Weihnachtsguss von 2018 läuft: https://nkc-schuetz.de/forumdrc/index.php?mode=viewthread&forum_id=4&thread=51&z=1#post1 am Ende des Threads sind der C Quelltext und link zur benutzten gcc version.

Gruss aus München
smed

-----------------------
NKC'ler seit 1984 (Pause zw. 1988-2017)
CPU68k,CPU68000,4xROA64,6xIOE,6xGDP,GDPHS,8xSBC2/3,HEXIO,6xKEY,UHR3,PROMER,CENT,SER,SOUND,CAS,6xBUS2,4xBUS3,3xPOW5V,2xTAST..und einen ArduinoMEGA mit auf dem BUS, und eine selbstgebastelte MEM960k.

NKC - OpenSource since 1983

Beiträge: 182 | Mitglied seit: Januar 2011 | IP-Adresse: nicht gespeichert
andi
Kennt sich schon aus
**
ID # 213


  Erstellt am 19. Februar 2024 13:59 (#25)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Hallo,

ich hab SpaceInvaders mal vor einigen Jahren an mein GCC framework angepasst und auch einige updates gemacht damit er auf meinem NKC läuft. Das ganze ist hier eingecheckt: https://github.com/smedde/SpaceInvaders/tree/Changes_Andi

LG,
Andi

Beiträge: 132 | Mitglied seit: Mai 2021 | IP-Adresse: nicht gespeichert
andi
Kennt sich schon aus
**
ID # 213


  Erstellt am 19. Februar 2024 15:32 (#26)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Hallo,

um meine GCC Programme am Emulator einfach testen zu können bin ich auf der Suche nach einer Möglichkeit diese in den Speicher des emulierten NKCs zu schreiben (z.B. direkt ins Jados Disk Image). Kennt da jemand ein Tool dafür?
Derzeit transferiere ich dieses immer via RS232 (oder TFTP) zu meinem "echten NKC" kopiere es dort auf den Gotek Emulator, zieh dann den USB-Stick von dort ab und kopier mir das Disk-Image von dort dann runter und verwende es für den Emulator. Ist alles ein wenig umständlich...
LG,
Andi

Beiträge: 132 | Mitglied seit: Mai 2021 | IP-Adresse: nicht gespeichert
b377
Lernt noch alles kennen
*
ID # 234


  Erstellt am 19. Februar 2024 21:19 (#27)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Hallo Andi,

es gibt im Emulator viele Möglichkeiten Dateien zu importieren.

1.) Du konfigurierst deine Binärdatei als ein ROM in der Config.yaml. Du musst dann die genaue Größe der Binärdatei als ROM Größe eintragen (Ich glaube dies ist auch egal, solange die angegebene Größe >= der waren Dateigröße ist). Du solltest auch darauf achten, das die in Nachfolgenden ROM Slots nicht den Speicher deines "ROMs" überschreibst. Ist dein Programm relokativ und hat es einen Bibliotheksheader, (wie bei der Version von smed der Fall), kannst Du es dann direkt im Grundprogramm ausführen. (Bibliotheksfunktion oder auch Starten, wenn Du die Adresse kennst). Möchtest Du die Datei gerne auf einem JADOS Diskettenimage haben, kannst Du dies mit dem Jados Befehl DSAVE erledigen.

2.) Du benutzt CP/M68K und die cpmtools unter Linux. (https://github.com/lipro-cpm4l/cpmtools oder http://www.moria.de/~michael/cpmtools/). Die benötigten Diskdefs für das NKC Format findest Du unter resources/disks.
In dem Verzeichnis mit den Diskdefs kannst Du dann mit folgendem Befehl beliebige Dateien von einem Host Computer auf ein CPM-Image kopieren.
cpmcp --f nkc-68k <DISK_IMAGE> <FILE> 0:.
Von CP/M68K kannst Du dann mit dem Programm LADE.68K die Datei in beliebigen Speicherbereich laden.

3.) Du wartest bis ich meine JADOS-Tools veröffentliche die dann eine ähnliche Funktionalität wie die cpmtools für das JADOS-Format haben. ;) (Kann aber noch etwas dauern).


Habe auch deine Branch der SpaceInvaders gesehen. Kann ihn aber leider nicht kompilieren, da einige Header-Dateien fehlen:


#include "../../nkc_common/nkc/nkc.h"
#include <ndrcomp/target.h>


-----------------------
Gruß Martin

Beiträge: 14 | Mitglied seit: Dezember 2023 | IP-Adresse: nicht gespeichert
andi
Kennt sich schon aus
**
ID # 213


  Erstellt am 19. Februar 2024 22:56 (#28)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Hallo Martin,

danke für die Infos.
Das mit dem ROM-File ist eine gute Idee.
Hab Spaceinvaders bei mir compiliert und am Emulator mal gestartet.

Spielen konnte ich es nicht weil ich am PC keinen Joystic habe.
Die fehlenden .h files kommen von meinem GCC-framework.
Irgendwo muss ich eine Anleitung zum Aufsetzen rum fliegen haben. Die schick ich dir mal zu wenn du willst.
Ich hab ein (bootfähiges) Jados-Diskimage auf github eingecheckt wo Spaceinvaders (spacei08.68k) sowie ein Minesweeper (mine_m08.68k), welches ich in C++ geschrieben hab, drauf ist. Weiters ist auch der XT (Xtree Clone) drauf. Leider stimmt bei dem die Tastatusbelegung am Emulator nicht ganz. Muss ich mir mal anschauen.
https://github.com/avg67/nkc/blob/main/SW/Disks/jadossys.raw

LG,
Andi

Beiträge: 132 | Mitglied seit: Mai 2021 | IP-Adresse: nicht gespeichert
b377
Lernt noch alles kennen
*
ID # 234


  Erstellt am 20. Februar 2024 08:03 (#29)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Kleiner Hinweis,

in der Emulation kannst Du auch die Pfeiltasten des Cursorblocks und die Enter-Taste des Nummernblocks als Joystick verwenden. Oder auch ALT-1 ... Alt-8. Jedoch ist das alles in regulärer positiven Logik (High=1=gedrückt, Low=0=keine Eingabe).

Werden an beide IO Port der IO gesendet, kannst also beliebigen Port verwenden, nur nicht beide auf einmal.

-----------------------
Gruß Martin

Beiträge: 14 | Mitglied seit: Dezember 2023 | IP-Adresse: nicht gespeichert
andi
Kennt sich schon aus
**
ID # 213


  Erstellt am 21. Februar 2024 22:15 (#30)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Ah danke für den Hinweis. Hab es geschafft Spaceinvaders am Emulator zu spielen.
Kämpfe allerdings ein wenig mit der Geschwindigkeit. Ohne Turbo ist es zu langsam, mit hingegen viel zu schnell.

Beiträge: 132 | Mitglied seit: Mai 2021 | IP-Adresse: nicht gespeichert
b377
Lernt noch alles kennen
*
ID # 234


  Erstellt am 24. Februar 2024 18:33 (#31)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Hallo Andi,

Du kannst gerne auch die nicht "Turbo" Geschwindigkeit in der Config einstellen.

- CPUSpeed: 8
- NumWaitStates: 3

Dies bedeuted 8MHz und 3 Wait-States bei jedem Zugriff (Defaulteinstellung auf der 68K Karte, kann aber meistens mit nur einem Wait betrieben werden). In der Simulation geht natürlich alles. Du solltest auch unter Linux oder bei einem Debug-build angezeigt bekommen wie schnell das System wirklich läuft. Ein gewisses Problem ist, dass aktuell sowohl SDL als auch die 68K Emulation im selben Thread laufen, und dadurch die Geschwindigkeit abhängig ist wie viel Zeit beim Update des Bildschirms bei jedem SYNC draufgeht. Es ist auch so, dass ca. 1000 Assemblerbefehle (10000 Taktzyklen) mit maximaler Geschwindigkeit ausgeführt werden und danach die Zeitdifferenz gewartet wird um auf die Zielwerte der CPU zu kommen. Bei einer langsamen Host-CPU führt all dies zu Ruckeln und zu langsamer Simulation.

-----------------------
Gruß Martin

Beiträge: 14 | Mitglied seit: Dezember 2023 | IP-Adresse: nicht gespeichert



| https://hschuetz.selfhost.eu | Boardregeln | Datenschutzerklärung


Tritanium Bulletin Board 1.8
© 2010–2021 Tritanium Scripts


Seite in 0,027383 Sekunden erstellt
17 Dateien verarbeitet
gzip Komprimierung eingeschaltet
1676,55 KiB Speichernutzung