Uutiset:

Genetic PET BBS Powered by Commodore 64
g-pet.tunk.org port:1025

Main Menu

Bare metal Raspberry Pi C64 emulaattori -projekti

Aloittaja Syypori6510, syyskuu 14, 2013, 15:16

« edellinen - seuraava »

Syypori6510

Minulla on sorvissa otsikon mukainen projekti, eli C64 emulaattori Raspberry Piissä ilman käyttöjärjestelmää. Ei ole ihan alkumetreillä enää, mutta ei ole vielä likimainkaan käyttökelpoinenkaan. Mm. CIA piiri(t) ei ole valmis joten ei ole näppistä eikä vilkkuvaa kursoria, mutta prosessori on melko OK ja VICkiä on sen verran, että boottitekstit saadaan näkyville (ja näkyykin melkein oikein "Katso kuvat!") ;)
Nopeudessakin on toivomisen varaa, ei toimi vielä reaaliajassa, mutta tähän on lääkettä kiikarissa.

Voisin laitaa koodit jakoon tässä kohta jos jotakuta sattuu kiinnostamaan.

Syypori6510

#1
Projekti nyt jaossa täällä: https://github.com/sampopeltonen/Pi64

Syypori6510

Sain vihdoin väännettyä prossun data cachen päälle ja sillä olikin jopa odotettua suurempi vaikutus emulaattorin nopeuteen. Nyt toimii reaaliaikaa joutuisammin, noin 125% vauhdilla. Ennen kuin prossun instruction cache ja data cache oli kytketty päälle, vauhti oli 9% luokkaa ja fiilikset vähän epätoivoiset.  :)

Nyt tässä voi siis palata varsinaisen pihvin pariin, eli miettimään miksi vapaan muistin määrä tulostuu alkuteksteissä liukulukuna. Kellään hyviä arvauksia?

Syypori6510

#3
Noni, nyt tulostuu kaikki aloitusviestit vapaata muistin määrää myöten oikein. Bugeja löytyi useampikin prosessorin koodista: ROR:issa ja SBC:ssä hölmöt lapsukset, sekä lisäksi ADC:ssä ja SBC:ssa (plus ja miinus laskuissa) prosessorin V flagin eli overflow flagin tilan päättely oli päin honkia.

Kyseinen V lippu osoittautuikin melko kinkkiseksi logiikaltaan. Olin alunperin vain noudattanut käsissäni olevan kirjallisuuden ylimalkaista kuvausta asiasta vaikka totuus onkin paljon monimutkaisempi. Anssi Laakkosen ja Mika Huovisen kirja "Commodore 64 Ohjelmoinnin opas - Konekieli" sanoo V lipusta vain tämän: "V-lippu eli ylivuodon ilmaisin asettuu, kun laskennassa saatua tulosta ei voida esittää seitsemällä bitillä". Eikä mitään muuta. Onneksi löytyi blogi jossa asiaan on todella paneuduttu: http://www.righto.com/2012/12/the-6502-overflow-flag-explained.html. Ymmärtääkseni V lippu on melko tärkeä jos meinaa laskea etumerkillisiä, isompia kuin tavun kokoisia, lukuja yhteen ja sen laskentaan täytyy käyttää sekä syötteiden, että laskennan tuloksen arvoja.

Ehkä seuraavaksi CIA piirin pariin. Olisi kiva saada kursori vilkkumaan.


Syypori6510

Noni, emulaattori kykenee nyt ajamaan basic ohjelmia. CIA piiritkin toimii sen verran, että timerit toimii, irq:t toimii ja näppäinpainalluksia pystyy syöttämään sisään. Näppäimistö on kylläkin täysin ohjelmallinen testitoteutus joka syöttää vain sisään ennalta ohjelmoidut plörinät, niinkuin vaikka tuon kuvan basic ohjelman.

virgo

vaikuttavaa pitänee kokeilla heti kun raspi löytyy omalta pöydältä
Genetic-PET C64 BBS:
g-point.tunk.org port 1025

Genetic-point Amiga BBS:
g-point.tunk.org port 500

Syypori6510

Lainaus käyttäjältä: virgo - syyskuu 29, 2013, 22:55
vaikuttavaa pitänee kokeilla heti kun raspi löytyy omalta pöydältä

Kerroppa heti jos jotain murheita kääntämisen tai ajamisen kanssa. Ja tämä myös muille mahdollisille testaajille. Viimeisin valmis binääri löytyykin tuolta versionhallinnasta joten ihan pakko ei ole kääntää mitään.

Menetin ainakin toistaiseksi toivoni USB ajurin suhteen joten ajattelin koittaa pultata C64:n näppäimistön suoraan raspin GPIO pinneihin kiinni. Koska käytettävissä olevia pinnejä vaan ei ole tarpeeksi niin tarvitaan hieman elektroniikkaa väliin. Postissa odottaa noutoa 74595 ja 74165 piirit joilla olisi tarkoitus tehdä serial-parallel ja parallel-serial muunnokset. Mun elektroniikkaosaaminen ei kuitenkaan ole kovin kummoista joten hyvät neuvot voi tulla tarpeeseen. Jos joku heti osaa sanoa mahtaako temppu noilla piireillä onnistua, tai mitä kannattaa ottaa huomioon jne. tai niin olen kuulolla.

virgo

eipä ole paljoa noista seriaali ja sifti piireistä kokemusta mutta kuulostaisi siltä että tuo serial versio saattaisi olla helpoiten koodattavissa
seriaali piirin ulos tulo taisi olla standardien mukainen noista Sifteistä en tiedä noudattavatko ne mitään standardia

mulla on myös tuollaisia sifti piirejä hirveet läjät tosin ne on mos piirejä pitäs koittaa keksiä niillekin jotain käyttöä
joku vekkuli C64 paralleri-> serial adapteri vois olla kova tulis C64 seriaali liikenteeseen kummasti potkua lisää

4014 4015
http://www.cmos4000.com/media/cmos/ic-cmos-4014.pdf
http://www.cmos4000.com/media/cmos/ic-cmos-4015.pdf

sitten joitain isompiakin 6510 lutikan kokosia mallia en nyt muista
saatto olla ihan Motorolla omia IO piirejäkin
Genetic-PET C64 BBS:
g-point.tunk.org port 1025

Genetic-point Amiga BBS:
g-point.tunk.org port 500

Syypori6510

Kuusnepan näppäimistön liittäminen raspiin ja emulaattoriin onnistui erinomaisesti. Näppis toimii just eikä jetsulleen niinkuin pitääkin ja vie voltti- ja maapinnin lisäksi raspista vain 4 datapinniä. Hittolainen, aina sitä oppii kunhan viitsii yrittää, vaikka meni tuohon tämän viikon kaikki arki-illat 100%. Lisään kytkentäkaavion projektisaitille kunhan saan sen piirustettua.

Syypori6510

Pikku päivitystä tämän projektin äärestä.

CPU emulaatio on nyt hyvässä kuosissa, C64 Testsuiten op-code testit menevät läpi (myös illegaalit op-codet) yhtä pikku hikkaa lukuunottamatta joka on SBC komennon overflow-flagi desimaalimoodissa (jolla ei tosin ole p********n väliä koska tuolle flagille ei ole käyttöä desimaalimoodissa). En tajua kuinka tuo pitäisi toteuttaa, apu tervetullutta. Myös Testsuiten cputiming -testi menee läpi, eli oletettavasti komennot vievät oikean määrän cyclejä kussakin addressing modessa.

Grafiikan eli VIC-piirin puolelta seuraavaa: värit toimii, reunukset toimii lähestulkoon oikein, X/Y scrolling toimii, rasterline interruptit toimii ja kaikki 5 validia grafiikkamoodia toimii. Sanottakoon tosin, että testaus näiden osalta on ollut melko ylimalkaista koska se on ollut hieman hankalaa.

Edelleen mennään reaaliaikaa hieman nopeammin, mutta ei yhtään liikaa. Saas nähdä vieläkö onnistuu kun spritejä pitäisi alkaa tukemaan, homma joka taitaakin olla seuraavana työlistalla.

virgo

isoa peukkua projektillesi  :thumbup:

hienoa että projekti etenee
täällä jumittaa kaikki projektit eikä mikään etene  :bang:
kunhan tuon yhden saisin pois käsistä niin helpottaisi
mutta pakki on ihan tyhjä sen kanssa nyt...
iso vika ei voi olla mutta järki ei ilmeisesti riitä xD
Genetic-PET C64 BBS:
g-point.tunk.org port 1025

Genetic-point Amiga BBS:
g-point.tunk.org port 500