atarionline.pl szukam programow do przetestowania symulatora 65816 - Forum Atarum

    Jeśli chcesz wziąć udział w dyskusjach na forum - zaloguj się. Jeżeli nie masz loginu - poproś o członkostwo.

    • :
    • :

    Vanilla 1.1.4 jest produktem Lussumo. Więcej informacji: Dokumentacja, Forum.

      • 1: CommentAuthorgregor2
      • CommentTime5 Oct 2024 20:30
       
      Wiem, że temat nie do końca związany z Atari, ale jest tu z pewnością kilka osób, które spotkały się z procesorem 65816, więc pozwolę sobie zapytać.
      Napisałem symulator tego procesora. Piszę "symulator", bo choć docelowo jest (lub przynajmniej taki jest cel) programowo zgodny z 65816 (symuluje też błędy tego procesora), to nie jest zgodny jeśli chodzi o zgodność cykli. Ale do rzeczy. Układ działa na STM32H750, takim jak ten:
      ->link<-
      .
      A teraz w związku z testami poszukuję odpowiedniego oprogramowania, które pozwoliłoby wykryć ewentualne błędy. Chodzi też o programy, dzięki którym mógłbym określić jaką wydajność ma ten symulator.
      Na razie sprawdziłem ten w wersji full z dodatkowymi testami arytmetyki BCD:
      ->link<-
      Układ przechodzi cały, nie wykrywając błędów symulacji.
      Jeśli ktoś zna podobne testy, to proszę o info.
      • 2: CommentAuthorgregor2
      • CommentTime5 Nov 2024 12:07
       
      Układ wciąż jest rozwijany, w tej chwili może współpracować ze wszystkim, co obsługuje konsolę VT-100 (czyli w praktyce port szeregowy, ekran i klawiaturę). Aktualnie pracuję nad dodaniem emulacji i8080 (z80) oraz systemem dla wykonywania programów w kodzie natywnym ARM-Cortex, a kolejnym etapem będzie dołączenie współpracy z magistralami komputerów 8-bit.
      Jeśli ktoś jest zainteresowany, to więcej info tutaj:
      ->link<-
      • 3:
         
        CommentAuthorpancio
      • CommentTime7 Nov 2024 06:53
       
      Jestem zainteresowany wynikami.Sam robię podobny projekcik ale na RISC-V. Oczywiście na miarę wolnego czasu. Publikujesz gdzieś swoje rozwiązanie?
      • 4: CommentAuthorgregor2
      • CommentTime7 Nov 2024 14:41 zmieniony
       
      Na razie jeszcze nie publikuję. W sumie rozwijam to, aby dla mojego Apple II i chcę zrobić coś w rodzaju akceleratora mogącego wykonywać kod 65816, i8080 (choć pewnie rozszerzę go na z80) i oczywiście natywny ARM Cortex7. Chcę, aby każdy emulowany core miał bezpośredni dostęp do hardwaru, ale też aby drive'y nie wykorzystywały RAM, tak że cały RAM jest dostępny dla emulowanych procesorów i widziany przez nie w taki identyczny sposób jak w oryginale, czyli RAM zaczyna się od $0000 i kończy zależnie od banku np. w stm32h750 na $7FFFF. Jeśli pojawi się np. układ z większym RAM lub np. z zewnętrznym, to będzie można go też uruchomić z dostępem do większej ilości RAM. W tej chwili zrobiłem już emulację 65816 i w zasadzie jestem na etapie jej testowania. I mam ok. 50% emulacji i8080. Z hardware mam sterowniki do obsługi portów szeregowych, w razie potrzeby można ich dodać nawet kilka, taktowania CPU i portów równoległych. W dalszej kolejności chcę ukończyć i8080 i uruchomić RTC. A potem być może USB. Myślałem też o uruchomieniu na innych platformach niż Apple. Wczoraj udało mi się uruchomić monitor systemowy dla 65816, miałem z nim trochę problemów, bo okazało się, że w kodzie źródłowym (nie moim) był błąd. W każdym razie udało się go zlokalizować i teraz już działa.
      • 5:
         
        CommentAuthorCyprian
      • CommentTime7 Nov 2024 16:13
       
      Fajny projekt.
      Czy skoro będzie można włożyć do Apple to może też do Atari też da radę?
      • 6: CommentAuthorgregor2
      • CommentTime7 Nov 2024 19:26
       
      Pewnie by się dało, tyle że w przypadku Apple, czy nawet C64, istnieje możliwość odłączenia CPU i przejęcia magistrali co daje bezposredni dostep do pamieci i I/O. Dodatkowo istnieje jeden standard gniazd do tego, gdzie w Atari byłby problem. W każdym razie na pewno można by podłączyć się przez port szeregowy, czy nawet joysticka, gdzie Atari działałoby jako terminal. No chyba że od razu Atari 2600 ;)
      W każdym razie temat mógłby być ciekawy ;)
      • 7: CommentAuthorgregor2
      • CommentTime9 Apr 2026 21:55 zmieniony
       
      Troche to trwalo ;)
      Zalaczam nagranie z testu w BBC Basic2.
      Wedlug tej tabelki na 65C816 16MHz ten sam test wykonyje sie w 60,91 sek. u mnie nieco wiecej niz 2 min.
      benchmark
      • 8: CommentAuthorzbyti
      • CommentTime18 Apr 2026 09:56
       
      dzięki! obadam materiały :)
      • 9: CommentAuthorgregor2
      • CommentTime18 Apr 2026 11:06
       
      Moge sie podzielic, problem w tym ze nie ja jestem autorem, a jedynie zglaszalem autorowi poprawki do uzupelnienia testow. O ile chodzi o kod glowny to wiem ze byl opublikowany, ale nie wiem jaki jest status tego uzupelnianego.
      W kazdym razie mam zrodla i kod wynikowy i moge Ci go przeslac do wykozystnia ale wolalbym go nie upubliczniac jesli podasz mi jakis namiar to moge sie podzielic.
      W kazdym razie wersja bez poprawek jest dostepna tutaj,ta wersja nie sprawdza instrukcji BCD
      https://github.com/gilyon/snes-tests/tree/main/cputest

      A co do bledow to jeszcze jest jeden dotyczacy adresowania w instrukcji lda ($F7,X).
      • 10: CommentAuthorgregor2
      • CommentTime18 Apr 2026 14:50 zmieniony
       
      To nie jest tak, że ja się martwię tym, czy ty to udostępnisz, czy nie.
      Zwracam tylko uwagę, że jest to kod, który może posłużyć do wygenerowania kodu ROM dla SNES, a to już Nintendo i wiadomo.;)
      Zauważ, że osoba udostępniająca na Githubie też nie dodała pliku licencji ;)
      Ja używałem kodu wygenerowanego dla i dzialajacego na
      ->Kowalski Symulator<- https://sbc.rictor.org/download/6502%20v1.4.1.0.zip [/]
      W jednym z trybow moj emulator jest zgodny z Kowalski Symulator.
      Tak wiec wszystko co na nim dziala powinno dac sie uruchomic i na moim.

      Swoją drogą Kowalski Symulator po tym, jak "wymusiłem" poprawki, przynajmniej na dzień dzisiejszy emuluje 65c816 poprawnie.
      Możesz w ostatniej wersji używać go do porównań.
      • 11: CommentAuthorzbyti
      • CommentTime18 Apr 2026 15:08
       
      dziękuję za materiały @gregor2 spożytkuję ja na platformie X65 :]
      • 12: CommentAuthorgregor2
      • CommentTime18 Apr 2026 15:27
       
      Dobrym testem jest uruchomić EhBasic, jest on napisany dla 65c02, a dokładnie w wersji 2.22 bez przeróbek.
      Długo myślano, że nie działa na emulatorach 65c816. O dziwo u mnie zadziałało i okazało się to dobrym argumentem do nakłonienia osoby zajmującej się Kowalski Symulator do jego aktualizacji.
      W każdym razie działa, daje Ci link do kodu źródłowego
      https://6502.org/users/mycorner/6502/ehbasic/index.html
      Ale nie próbuj kontaktować się z autorem, bo niestety zmarł kilka lat temu.

      To może przybliż nieco ten X65.
      • 13: CommentAuthorzbyti
      • CommentTime18 Apr 2026 15:55
       
      @gregor2 cokolwiek chcesz wiedzieć "na start" znajdziesz na ->link<-

      z ciekawszych rzeczy to po próbie użycia układu Yamaha z najbardziej chyb zaawansowanym OPL powstał układ na bazie autorskiego tSU (autor Furnace zrobił swój fantasy układ dźwiękowy) a Smoku wziął go na warsztat i zrobił z tego SGU-1. jeszcze nie wiadomo jak to okiełznać ale wydaje się potężnym (w sensie unowocześnionym) SID z 9 kanałami gdzie masz również opcję użycia ficzerów z OPL.

      "great minds think alike" dlatego świetny K65 od KK/Altari znalazł swoją kontynuację jako K816 w całości pisanego przez AI w Rust.

      a z rzeczy osobliwych zegar w X65 nie jest synchroniczny ;)

      dla Atarowców to w X65 jest układ graficzny wzorowany na ANTIC, obsługuje displaylist, ale ma więcej (a może sensowniejszych) trybów a także możesz ustawić go tak, że będzie działał jak C64 z mapą kolorów, dla zboczeńców jest coś jak HAM z Amigi ale też jeden tryb działający jak w SNES.

      jak lubisz ciekawe współczesne rozwiązania to polecam się przyjrzeć.
      • 14: CommentAuthorgregor2
      • CommentTime18 Apr 2026 17:17 zmieniony
       
      Przeciez tam jest 65c816 wiec po co sprawdzac jego kompatybilnosc z samym soba ?
      Na tym schemacie brakuje kilku sygnalow np. SIO2 i SIO3 ;)
      https://x65.zone/news/2024/03/12/breadboard-schematic.html
      Rozumiem ze 65c816 z pamiecia laczy sie przez RP2040 i stad tak niska wydajnosc ¬1.84MHz , czy jest jeszcze jakis inny powod ?
      • 15: CommentAuthorzbyti
      • CommentTime18 Apr 2026 17:37 zmieniony
       
      chcę wiedzieć czy emulator działa tak jak prawdziwy 65c816.

      tak, to jest powód, że procesor nie pójdzie na 20MHz bo musi czekać, ale ~1,84 to chyba stare dane, wydaje się, że udało się osiągnąć minimum w okolicach ~4MHz ale jak się wie co kiedy robi procesor to on potrafi działać szybciej w pewnych scenariuszach i można to wyzyskać, ale to trzeba poczekać aż wyjdzie kolejna wersja prototypu w naturze.

      zaleta jest taka, że te 16MB jest tanie.
      • 16: CommentAuthorgregor2
      • CommentTime18 Apr 2026 18:59 zmieniony
       
      patrząc na przebiegi, wiedząc, że każda instrukcja potrzebuje co najmniej 28 us na dostęp do pamięci, a każda wymaga co najmniej jednego dostępu, to mi raczej wychodzi bliżej 35 kHz niż 1.84 MHz ;)

      https://x65.zone/news/2024/03/07/VAB-memory-optimization.html

      A co z oprogramowaniem?
      Jakbyście odpalili np. IntegerBASIC z AppleI lub II (appleII ma bardzo regolarny zegar bez hamowania wiec to dobry wzorzec dla okreslenia szybkosci) albo BBC Basic, to można by porównać i określić faktyczną szybkość.

      W tablelce wyzej sa wyniki dla prawdziwego 65c816 z 16MHz, w razie czego sluze tymi testami ;)
      • 17: CommentAuthorzbyti
      • CommentTime18 Apr 2026 19:56 zmieniony
       
      @gregor2 spokojnie, prototyp 1 powstał już z ponad pół roku temu i działało na nim wszystko co masz tutaj ->link<- a prędkość pracy emulatora była brana z natury ;)

      komputer był prezentowany na jakimś zlocie, i dzieciaki grały na nim w mój port Sokobana.

      w nowej wersji ma być szybciej bo "coś" tam, już nie pamiętam ;)

      będę pamiętam o Tobie i testach :]
      • 18: CommentAuthorgregor2
      • CommentTime18 Apr 2026 23:07
       
      Zastanawiam się co ten procesor tak naprawdę tam robi ?
      Czyżby tylko marnował energię, a naprawdę wszystko robiło raspberry ?
      • 19: CommentAuthorzbyti
      • CommentTime18 Apr 2026 23:24
       
      mam mocne podejrzenie, że wykonuje ten kod: ->link<- ;)
      • 20: CommentAuthorzbyti
      • CommentTime20 Apr 2026 14:24
       
      gregor2 był update dokumentacji więc możesz doczytać więcej szczegółów ->link<-
      • 21: CommentAuthorgregor2
      • CommentTime20 Apr 2026 19:30
       
      Dzięki za link.
      Mam pytanie, dlaczego 65816 nie działa w trybie emulacji, jak twierdzi strona, którą podlinkowałeś?
      Czy w takim razie w trybie natywnym działają rozkazy z 8-bitowymi danymi, np. lda #$01?
      Kolejne pytanie: jak określaliście szybkość procesora?
      A i takie techniczne: czy stosowaliście pamięci ESP-PRAM64, a jeśli tak, to z jaką taktujecie je częstotliwością?
      Mam złe doświadczenia z chińską "elektroniką", więc zapytam, czy rzeczywiście działają one z częstotliwością 84/133 MHz bez przekraczania banków 1k, jak twierdzą w dokumentacji?
      • 22: CommentAuthorzbyti
      • CommentTime20 Apr 2026 19:34 zmieniony
       
      @gregor wpadnij tutaj: ->link<- i zadaj te pytanie autorowi, chętnie odpowiada, chyba już nadwyrężamy gościnność AOL ;)

      albo wpadnij do Poznania w sobotę i pogadać w 4 oczy, Smoku będzie miał prelekcję o SGU-1 ->link<-
      • 23: CommentAuthorgregor2
      • CommentTime22 Apr 2026 12:09 (6 dni temu)
       
      Do Poznania mam jakies 1500 km wiec raczej byloby trudno ;)
      A co do mojego projektu to jak najbardziej mozna go dolaczyc do wszystkiego co ma klawiature i ekran wiec tez do kazdego Atari i nie tylko. ;)
      Co ciekawe to wystarczy do pisania programow, w tej chwili emuluje 3 procesory (kilka dodatkowych jest w planie) tj., 65c816,65c02,i8080 no i oczywiscie natywnie ARM.
      W tej konfiguracji mozna tworzyc, debugowac, uruchamiac oprogramowanie dla tych CPU.
      • 24: CommentAuthorzbyti
      • CommentTime22 Apr 2026 15:44 (6 dni temu) zmieniony
       
      @gregor2 na AOL był chyba jakiś gość (a może na Area?) co nawet miał pomysł włożyć 6809 do ataryny ;) ale to chyba nie byłeś ty, ale mnie na starość już się kićka ;)

      ps. moje sieć halucynuje, że to jednak była Area, ale na pomyśle się skończyło
      • 25: CommentAuthorgregor2
      • CommentTime22 Apr 2026 20:28 (6 dni temu) zmieniony
       
      Swego czasu wstawianie 6809 do komputerow mialo sens. Istanialo sporo oprogramowania glownie w kregach nauki , ale i przemyslowego dla tego procesora. Byl on np, dostepny jako dodatkowy second processor dla komputerow Acorna. Byl tez po Z80 chyba najczesciej wstawianym jako karta AppleII. Nawet Commodore probowalo zrobic z nim PET-a.
      Zreszta powstalo sporo ciekawych komputerow na bazie tego CPU. W kazdym razie byl szybszy nawet od 6502. Po gniotach w rodzaju 6800 i 68000 Motorola wreszcie sie spiela i zrobila calkiem dobry procesor ;)
      W sumie mam w planach dolaczyc jego emulacje do mojego zestawu, tyle ze wciaz nie moge sie zdecydowac od ktorego zaczac czy 65c832, 68000 czy 8086 ;)
      Dolaczam filmik z porownaiem mojego emulowanego rdzenia 65c816 z prawdziwym 65c816 wedlug autora 16MHz.

      https://youtu.be/bwUecbPB7TI?list=PLRZiv0jfww-STdKPR8fo_CJEwB99vBdFF

      Ostatnio robilem benchmark na emulacji 8080 wyszlo ze program wykonujacy sie na ZXspectrum ponad 3 godziny wykonal sie w nieco ponad 6 min ;)
      Wydaj mi sie ze calkiem niezle jak na uklad w cenie kawy w Londynie ;)
      • 26:
         
        CommentAuthorjhusak
      • CommentTime23 Apr 2026 20:46 (5 dni temu)
       
      Rozkazy Z80 robią więcej na raz, ale za to dłużej. Więc zysk będzie większy, niż emulacja 6502, który młóci co kilka cykli nową instrukcję.
      • 27: CommentAuthorgregor2
      • CommentTime24 Apr 2026 00:19 (4 dni temu) zmieniony
       
      Wiecej na raz czego ?
      Chyba ze chodzi o te 4 cykle potrzebne do dostepu do RAM zamiast 1 a wlasciwie nawet 1/2 cykla w 6502 co wykozystano np. w AppleII,c64 czy komputerach BBC aby w tym samym cyklu zapewnic dostep do pamieci CPU i kontrolera grafiki.
      • 28:
         
        CommentAuthorjhusak
      • CommentTime24 Apr 2026 06:06 (4 dni temu)
       
      Średnio rozkaz z80 wykonuje się kilkanaście do dwudziestu kilku cykli, a w 6502 średnio 3-4.
      • 29: CommentAuthorgregor2
      • CommentTime24 Apr 2026 11:14 (4 dni temu) zmieniony
       
      I tu byl pies pogrzebany, Z80 wymagal ok 3.5 - 4 razy szybszego taktowania aby dociagnac do 6502 co wymagalo drozszego i trudniejszego procesu produkcji i w zasadzie nigdy nie mogl dogonic 6502.

      Inna sprawa ze 6502 tak naprawde byl blokowany glownie przez pamieci RAM ich wysokich cen niskich czasow dostepu a nawet niskiej jakosci przynajmniej w poczatkach komputeryzacji.
      • 30: CommentAuthorzbyti
      • CommentTime25 Apr 2026 12:09 (3 dni temu) zmieniony
       
      @gregor2 komputer wydaje się działać w Poznaniu ;)

      edit: nie wiem dlaczego piszę o Poznaniu jak to w Łodzi ;)