NKC Forum
Register | FAQ | Search | Who is online? | Member list | Today's posts | Calendar | Login



Author Topic: Umfrage: Welches Spiel für den 68K NKC als nächstes?
andi
Kennt sich schon aus
**
ID # 213


  Posted on October 29, 2022 04:30 PM (#21)  |  Quote Quote   PM PM   E-mail E-mail
Nettes Projekt. Gefällt mir gut :)
Muss ich gleich nach weiteren .vgm files suchen.
PS. Für den Fall dass es dir noch nicht aufgefallen ist in der Funktion "extractuint32_t" hast du noch einen Bug.

Posts: 88 | Member since: May 2021 | IP address: not saved
tuti
Kennt sich schon aus
**
ID # 225


  Posted on October 29, 2022 06:48 PM (#22)  |  Quote Quote   PM PM   E-mail E-mail
Ich geb's zu. Ist ein wenig mit heißer Nadel entstanden. Ich schau noch mal. Da muss einiges noch runder. Siehe auch die ganzen auskommentierten Code-Stückchen.

Insbesondere: Was ich gar nicht hinbekommen habe ist die Verwendung deiner Delay-Funktion. Die mit der Schleife bis eine gewisse Anzahl von ms vergangen ist. Als Differenz von Zeitstempeln. Eben diese Funktion zur Ermittlung der Zeitstempel liefert bei mir immer 0. Hängt das Ding womöglich von der GDP-FPGA ab, die ich nicht habe?

-----------------------
Definitiv sind Frösche und Himbeeren am besten!

Posts: 116 | Member since: July 2022 | IP address: not saved
andi
Kennt sich schon aus
**
ID # 213


  Posted on October 29, 2022 06:59 PM (#23)  |  Quote Quote   PM PM   E-mail E-mail
Hallo,
Ja die Delay Funktion braucht den Timer der in der GDP-FPGA ist. Dieser wird im startup initialisiert und generiert alle 5ms einen Interrupt. In der Irq-Routine wird im wesentlichen eine globale Variable hochgezählt die ich zur Zeitmessung benutze. Diese hat auch einen "hook" in dem man eigene Funktionen einhängen kann und damit Dinge im Hintergrund machen kann. Dies benutze ich z.B. bei der neuesten Version von Tetris um im Hintergrund eine Melodie zu spielen.

Posts: 88 | Member since: May 2021 | IP address: not saved
andi
Kennt sich schon aus
**
ID # 213


  Posted on October 29, 2022 07:12 PM (#24)  |  Quote Quote   PM PM   E-mail E-mail
Früher, vor der GDP-FPGA, hatte ich eine (selbst gebaute) 6522 Karte in meinem NKC und hab mit einem seiner Timer den 5ms Interrupt generiert. Ein Timer ist auf jeden fall m.A. nach ein absolutes "must-have" um vernünftig delays erzeugen zu können.

Posts: 88 | Member since: May 2021 | IP address: not saved
tuti
Kennt sich schon aus
**
ID # 225


  Posted on October 29, 2022 07:20 PM (#25)  |  Quote Quote   PM PM   E-mail E-mail
Das hatte ich befürchtet. Habe ja jetzt das GDP-SYNC missbraucht. Und die Loops empirisch ermittelt.

"empirisch", wie hochgestochen... Geraten... Ausprobiert habe ich das... :)

-----------------------
Definitiv sind Frösche und Himbeeren am besten!

Posts: 116 | Member since: July 2022 | IP address: not saved
andi
Kennt sich schon aus
**
ID # 213


  Posted on October 29, 2022 07:38 PM (#26)  |  Quote Quote   PM PM   E-mail E-mail
Und eine GDP-FPGA bauen?
Schaut schwieriger aus als es letztendlich ist. Hab auch schon mehrere gebaut :D

Posts: 88 | Member since: May 2021 | IP address: not saved
andi
Kennt sich schon aus
**
ID # 213


  Posted on January 06, 2023 04:31 PM (#27)  |  Quote Quote   PM PM   E-mail E-mail
zum Thema ein neues Spiel für den NKC hab ich wieder mal was einfaches programmiert (mein erstes C++ Projekt).
Minesweeper! Das spielt man mit der Maus.
Links clicken - Stein umdrehen
Rechts clicken - Mine markieren
https://github.com/Creep69/NKC/tree/master/SW/68k/c/Minesweeper
Wenn jemand daran interessiert ist kann ich gern den Source hochladen.


Posts: 88 | Member since: May 2021 | IP address: not saved
andi
Kennt sich schon aus
**
ID # 213


  Posted on January 18, 2023 03:38 PM (#28)  |  Quote Quote   PM PM   E-mail E-mail
hat Minesweeper schon jemand ausprobiert?
Würd mich über Feedback freuen.
btw. Hab da kürzlich 3D Effekte hinzugefügt :D
Es gibt den Beginner-Mode (9x9, 10 Mienen) und den Intermediate Mode (16x16, 40 Mienen siehe Screenshot oben) -> starten mit commandline Parameter -i
Wenn man auf ein bereits aufgedecktes Feld clickt werden die umliegenden Felder grün markiert (als kleine Hilfe).

Posts: 88 | Member since: May 2021 | IP address: not saved
m.haardt
Fühlt sich wie zu Hause
***
ID # 93


  Posted on January 18, 2023 07:04 PM (#29)  |  Quote Quote   PM PM   E-mail E-mail
Wie hast Du die 6522 Karte gebaut? Ich schaute mir das mal an und es ist im Grunde nicht schwer - abgesehen davon, den Takt für die Timer zu generieren.

Michael

Posts: 475 | Member since: April 2008 | IP address: not saved
andi
Kennt sich schon aus
**
ID # 213


  Posted on January 18, 2023 07:30 PM (#30)  |  Quote Quote   PM PM   E-mail E-mail
Uh. Muss mal schauen ob ich den Schaltplan noch zusammen bekomme. Hab den 6522 jedenfalls synchron (E,VPA, VMA) an den 68000 angeschlossen. Aber aktuell unterstützt meine C-Library den 6522 nicht mehr. Den hab ich durch den FPGA-Timer ersetzt. Für Minesweeper brauchst du jedenfalls eine GDP-FPGA!

Posts: 88 | Member since: May 2021 | IP address: not saved
m.haardt
Fühlt sich wie zu Hause
***
ID # 93


  Posted on January 19, 2023 01:43 PM (#31)  |  Quote Quote   PM PM   E-mail E-mail
Mich interessiert das auch nur prinzipiell, wie Du es geschafft hast, den 6522 mit Timerfunktion anzuschliessen. Synchron heisst, Du bist nicht über den NKC-Bus gegangen?

Phi2 ist gleichzeitig Taktinput und IORQ. Beim 6502 ist das auch richtig so, aber beim Z80 gibt es keine solche Busphase und darum funktioniert auf diese simple Weise alles bis auf den Timer.

Michael

Posts: 475 | Member since: April 2008 | IP address: not saved
andi
Kennt sich schon aus
**
ID # 213


  Posted on January 19, 2023 02:10 PM (#32)  |  Quote Quote   PM PM   E-mail E-mail
Der 68000 hat extra besondere Leitungen zum Anschluss von alter 65xx Peripherie.
Die dazu notwendigen Leitungen sind E (Takt = 1/10 des CPU-Taks), VPA (Valid Peripheral Adress, Input), VMA (Valid Peripheral Memory Address, Output zum 65XX).
Wenn unter einer Adresse ein 65xx I/O Baustein angesprochen werden soll so wird dies dem 680xx via VPA angezeigt.
Dieser initiiert dann einen zu E (Takt für 65XX) synchronen Buszugriff und zeigt dies via VMA an.
Ich hab damals die CPU-Karte ein wenig gepatcht (wegen VPA) und VPA,VMA+E auf freie Signale vom Bus gelegt und VPA via OpenCollector von der 6522 Karte getrieben - damit ein Zugriff darauf synchron erfolgt.
Die Umschaltung normaler / synchroner Zugriff macht dann die CPU selber.
Da brauchst nichts dafür.

Posts: 88 | Member since: May 2021 | IP address: not saved
m.haardt
Fühlt sich wie zu Hause
***
ID # 93


  Posted on January 19, 2023 04:02 PM (#33)  |  Quote Quote   PM PM   E-mail E-mail
Das wusste ich nie, tolles Feature! Aber damit funktioniert ein 6522 dann leider nur am 68000. Danke für die Erklärung!

Michael

Posts: 475 | Member since: April 2008 | IP address: not saved
andi
Kennt sich schon aus
**
ID # 213


  Posted on January 19, 2023 04:50 PM (#34)  |  Quote Quote   PM PM   E-mail E-mail
Nein das Feature hat auch der 68008.
Es gibt lediglich ein kleines problem. Der VMA-Pin ist dem Sparstift zum Opfer gefallen (zu wenig Pins im DIL-48 Gehäuse). Aber den kann man mittels eines 74LS73 recovern. Die Schaltung dazu hab ich wo rumliegen. Such ich raus und poste sie hier wenn du willst

Posts: 88 | Member since: May 2021 | IP address: not saved
m.haardt
Fühlt sich wie zu Hause
***
ID # 93


  Posted on January 19, 2023 07:42 PM (#35)  |  Quote Quote   PM PM   E-mail E-mail
Ich dachte an ganz andere CPUs als 68k. Das Schöne am NKC ist ja, dass die Peripheriekarten mit jeder CPU funktionieren, von der SER mal abgesehen. Irgendwas Wichtiges steht bei dem UART nicht im Datenblatt.

Der 6522 ist ein wirklich netter Chip, aber der Timer lebt halt von Phi2.

Michael

Posts: 475 | Member since: April 2008 | IP address: not saved
andi
Kennt sich schon aus
**
ID # 213


  Posted on January 19, 2023 08:21 PM (#36)  |  Quote Quote   PM PM   E-mail E-mail
Hmm ja stimmt. Der 6522 ist toll. Hab auch schon mal einen mit einem 4MHz Z80 betrieben (Phi2 = 4MHz). Hat auch problemlos funktioniert. Das ist auch das tolle am FPGA. Der ist maximal flexibel beim Businterface und ein 6522 ist leicht nachgebaut.

Posts: 88 | Member since: May 2021 | IP address: not saved
m.haardt
Fühlt sich wie zu Hause
***
ID # 93


  Posted on January 20, 2023 09:19 AM (#37)  |  Quote Quote   PM PM   E-mail E-mail
Moment. Wie hast Du das gemacht? Der Z80 hat ein paar Takte pro IO-Zyklus und Phi2 ist ja nicht nur Timer, sondern eben auch Strobe für IO-Zyklen.

Michael

Posts: 475 | Member since: April 2008 | IP address: not saved
andi
Kennt sich schon aus
**
ID # 213


  Posted on January 20, 2023 10:21 AM (#38)  |  Quote Quote   PM PM   E-mail E-mail
Puh das ist 30 Jahre her. Aber soweit ich mich erinnere war da nichts besonderes im Spiel. Normale Addressdecodierung beim Z80 (IORQ, ...) -> an CS von 6522, Phi2 an Takt von Z80. R/W von 6522 and WR (z80). Der 6522 ist da relativ robust.
Ich hatte da den 6522A. Der ist für 2MHz ausgelegt, hat aber an 4MHz problemlos funktioniert

Posts: 88 | Member since: May 2021 | IP address: not saved
m.haardt
Fühlt sich wie zu Hause
***
ID # 93


  Posted on January 20, 2023 12:46 PM (#39)  |  Quote Quote   PM PM   E-mail E-mail
Das sollte eigentlich dann mehrere reads und writes pro Zugriff auslösen.

Das macht viel Funktionalität kaputt, aber wenn man die nicht braucht, löst es das Problem mit dem Timer. Ich hätte nicht gedacht, dass man den 6522A so schnell betreiben kann.

Michael

Posts: 475 | Member since: April 2008 | IP address: not saved
andi
Kennt sich schon aus
**
ID # 213


  Posted on January 20, 2023 03:37 PM (#40)  |  Quote Quote   PM PM   E-mail E-mail
Was macht es denn kaputt?
I/O Ports, Timer, Interrupts gehen. Was fehlt denn noch?

Posts: 88 | Member since: May 2021 | IP address: not saved



| https://hschuetz.selfhost.eu | Board rules | Privacy policy


Tritanium Bulletin Board 1.8
© 2010–2021 Tritanium Scripts


Site created in 0.054815 seconds
Processed 16 files
gzip compression enabled
863.76 KiB memory usage