[ hardtv @ 04.12.2015. 06:53 ] @
Moj prvi računar je bio Galaksija 8k-6k.
Na PC-u emuliraju ga "Galaxy" za DOS i Windows Miodraga Jevremovića, i MESS (MAME).

"Galaxy" ima neke bagove vezane za generisanje Galaksija slike, koje omogućavaju
razne efekte koje prava Galaksija ne može da postigne. Dos verzija i Windows verzija
imaju različite snapšot formate ali obe snimaju samo 6k RAM-a.

MESS emulira Galaksiju na nivou hardvera, ali isto ima bag u generisanju slike:
- ne uzima u obzir brojač za vertikalno pomeranje slike (brojač &2BB0 i flag &2BB1),
pa priloženi "SideText_new.grz" za galaksiju ne radi u MESS-u.
- čita snapšotove "Galaxy" emulatora i "gtp" ili "wav" kasete, ali samo originalnom
brzinom (učitavanje 5k traje cca 3 minuta).

Zbog gore navedenih razloga ni jedan od ovih emulatora ne koristim baš mnogo.
Čisto iz radoznalosti, da li sam mogu da napravim emulator Galaksije, počeo sam
da tražim Z80 emulatore na netu, koje nije teško koristiti, i na kraju našao RAZE.
Autor je Richard Mitton, ali je ceo projekat davno obustavio, pa nije lako naći
download link (http://caesar.logiqx.com/php/library.php?id=raze).
Pomoću DLL verzije počeo sam pisati emulator u PureBasic-u. Još nije gotov, i verovatno
nikad neće ni biti, ali već radi pristojno na 3GHz 32bit WindowsXP mašini.

Da biste isprobali, potrebno je PureBasic demo verziju 5.11 (ili full) skinuti i instalirati,
a zatim naći Raze verziju 1.06 sa "raze.dll"-om i otpakovati u folder gde je emulator.
Napravite "exe" bez debagera, i imaćete emulator Galaksije Minus sa 10k Rom-om
i 54k RAM-om i virtuelnim štampačem (štampa u fajl).

Na žalost kompajliran emulator (ili bilo šta što se da izvršiti) ne mogu postaviti
zbog zaraženog Windowsa, ali verujem da koga zanima, to neće obeshrabriti.

Funkcije radne verzije Galaksija Minus emulatora, koje rade 98%:
- tastatura (BRK-Esc,REPT-RCtrl,LEVO-Left ili Backspace,DEL-Delete,LIST/STOP-PageDown ...)
- ubačen Monitor od &F800 ( startuje se sa "PRINT USR(&F800)"
- čita (Load) DOS i Windows 6k ".gal" snapshote, ".gtp" MESS kasete i sopstveni ".grz" format
- snima (Save) za sada samo grz
- Reset procesora i NMI (reset galaksije, RST &66)
- Razvlačenje slike (prozora) do celog ekrana
- Lažni zvuk tokom SAVE (!?)
- preusmeravanje print komandi u PC fajl (LPRINT, LLIST, LDUMP, OPT 7 u asembleru
i *LD &xxx itd. u monitoru)
- IN i OUT naredbe rade (samo ne znam kako da emuliram AY čip ili latch bitove)

Kontrola primer programa "SideText_new.grz":
- 1,2,3 vertikalni sinus modovi
- 0 inverz mod
- BRK zatvaranje trake i izlaz
- REPT zaustavljanje sinusa
- STOP/LIST zaustavljanje teksta

Sugestije, opaske, predloge ili svoje verzije (samo PB) u vezi ovog emulator programa
napišite ovde ili na moju mejl adresu (ionako je već "public").
[ jablan @ 04.12.2015. 06:57 ] @
Zar nije bilo jednostavnije da ispraviš bug u MAME emulatoru?
[ hardtv @ 04.12.2015. 07:12 ] @
Da znam C, x86 asm ili bilo koji napredni programski jezik, bili bi jednostavnije,
ali ne znam.
[ jablan @ 04.12.2015. 11:57 ] @
Ne mogu da otvorim 7z pa ne mogu da znam šta si radio u tom Basicu, ali ako se zaista baviš emulacijom, prosto nema logike da ne naučiš makar C. U pitanju je jednostavan jezik i ako već poznaješ način rada računara, neće ti biti teško da pohvataš i "napredne" koncepte, tipa pointera, dinamičke alokacije memorije itd.

Drugo, kačenje arhiva i binarija po forumima nema smisla. Otvori nalog na githubu i kači svoj sors tamo, i napiši kratko uputstvo kako ga kompajlirati i pokrenuti.

Nikad nije kasno da naučiš nešto novo, mislim da će i tebi lično prijati.

Svako dobro!
[ hardtv @ 05.12.2015. 06:59 ] @
1. 7z arhiva je napravljena u Linux Mint-u, otvara se i u WinXP. Zašto ga ne možeš otvoriti na Mac-u, to ne znam. Ne poznajem ni OSX.
7Z zato što na netu kruži neki virus koji može da zarazi čak i Zipovane fajlove, a Mint je tipa Live, i nema RAR arhiver.
2. PureBasic isto ima pointere, data tipove itd., samo drugačije se koriste od onih u C-u. Što se tiče "bavljenja" emulatorima:
Bavim se ja svime i svačime, a ne samo emulatorima, i nije PB jedini BASIC jezik koji koristim. Od C-a sam odustao još prije 20
godina.
3. Github i ostali sajtovi su za prave zagrižene programere, koji uz programski jezik (ne basic, kao što si i rekao) znaju ponešto i o
pravima objavljivanja i programskom bontonu. Ja sam samo hobista, koji povremeno ima neku suludu ideju da je sposoban napraviti
nešto, što je možda korisno i drugima, pa ga pukne na prvo pristupačno mesto na netu. Ne mora to da se sviđa svakom.

Zbog sumnje, da sam nešto s***o sa 7Z arhivom, prepakovao sam ga u ZIP zajedno sa novom, dorađenom verzijom.

Zaboravio sam dodati fokus na nevidljivi 8.-mi gadget za ostale,
pa posle klika na neku od ostalih, svaki pritisak na Space ili Return
izazvalo bi ponavljanje poslednje korištenog gadet-a. Popravljeno.

Usput sam dodao funkciju snimanja u ".gtp" formatu. Radi sa F3, Load dugme
ili iz Galaksija basic-a (običan SAVE i Enter)!
(Nisam probao snimljeni gtp u MESS-u, pa ne znam, da li je crc na kraju snimka
dobro izračunat ili nije. To još moram proveriti i eventualno popraviti.)
Još par sitnih stvari je dodato ili promenjeno. Sve je u "Fix.7z" fajlu.

Tek sada mi je sinulo, da je ovako koncipiran emulator dobar i za razvoj
softvera za Galaksiju na PC-u (mada sumnjam da će to nekome zatrebati):
- ima ugradjen asembler, monitor (disasembler, debuger)
- ima 48k slobodan RAM (treba još dodati RAM banking)
- može preneti iz emulatora u PC tekstualni sadržaj print funkcijom
(treba dodati obrnutu funkciju: tekst iz PC fajla u Galaksija basic/asm program)
- treba dodati snimanje u Wav strim za testiranje na pravoj Galaksiji

[ amaama @ 06.12.2015. 20:06 ] @
Čestitam ti na entuzijazmu, volji i rezultatu. Savremenoj mlađariji verovatno ništa nije jasno u vezi ovog što si radio i uradio, ni kako, ni zašto, ni čemu. I ne treba da bude, nije to za njih. Od nas (pre)ostalih - "Svaka čast!".
[ JankoNIS @ 06.12.2015. 21:04 ] @
Takodje cestitke i od mene. Bravo za trud!
[ hardtv @ 07.12.2015. 02:08 ] @
Hvala na podršci "amaama" i "JankoNIS" !

Proverio sam ".gtp" snimljen emulatorom u MESS.u i ispostavilo se da sam bio u zabludi.
Naime, Galaksija pravi čeksum od svih snimljenih bajtova, i onog &A5 na početku i junk-a na kraju.
A GTP ne snima na kraju junk, nego ispisuje CRC u world formatu (2 bajta), pa je ipak snimljen
taj jedan dodatni bajt, koji je kod C verzije random, a kod mog emulatora uvek 0. Takodje za razliku
od prave Galaksije, između &A5 i stvarnog data bloka je dodato 4 bajta (2 x word) koji se takođe
uračunaju u GTP CRC.
Da sve ovo shvatim, trebalo je anlizirati izvorni C kod za snimanje/konverziju GTP formata
Tomaž Šolc-a, i disasemblirani ROM1 od istog autora.

Sada je već moguće u emulator učitati sva tri (dva) postojeća formata, i snimati ih u 100% gtp format.
Na žalost, ni dalje nije moguće ni učitati, ni snimiti multi blok gtp kasete, pa igre kao "Inspektor Spiridon" i
"Super Šah" ne rade. Rešenja još nema na vidiku.

Usput sam dodao još i relocirano upisivanje za GTP, da bi omogućio analizu autostart koda na tim GTP
kasetama. Radi samo iz Galaksija komandnog moda:
"OLD" i "OLD?" će da učita sve blokove ne-relocirano na stvarne adrese ("OLD?" inače služi za proveru
snimka, ali u emulatoru nema smisla)
"OLD 1000" ili "OLD &400", odnosno ako je iza "OLD" zadat negativan ili pozitivan broj, bilo u decimalnom
ili u hexa formatu, učitaće sve blokove relocirano za zadatu vrednost. Taj broj može da bude u rasponu od
-32767 do 32767, jer galaksija tretira sve 16bitne brojeve sa predznakom.
Na isti način ću dodati još SAVE rutini mogućnost snimanja dela memorije, a i za "*S" i "*H" komande u
monitoru.

Nov PB sors sa ovim izmenama ću postaviti tu, kada završim uputstvo za kompajliranje i upotrebu
emulatora itd.
[ hardtv @ 21.12.2015. 04:48 ] @
Proveravajući prethodno date download adrese, nisam našao PureBasic 5.11, pa sam
sa sajta skinuo trenutno aktuelnu 5.40 Demo verziju. Izvorni kod je pisan u ovoj
verziji PureBasic-a, i ne radi u ranijim verzijama.
Priloženi "Raster_Debug.zip" arhiva sadrži i debag verziju emulatora za analiziranje,
i treba da se raspakuje na isto mesto, gde je i prethodna verzija. Ovom emulatoru je
potreban "midas11.dll" koji nije u arhivi. Morate ga naći i skinuti ga, da bi emulator
radio, ili izbrisati linije od 262 do 283, i deo linije 261 od "And Open..." do kraja.
Emulator je još uvek daleko od zadovoljavajućeg. Nova verzija više ne crta karaktere
iz BMP fajla, nego direktno iz CHRGEN rom-a. Pokušao sam dodati zvuk, ali se baš ne
razumem u korišćenju bafera i pravljenju RAW zvuka. Izabrani "midas11.dll" bi, po
mom mišljenju, mogao da emulira čak i AY8190 čip, koji je bio ugradjen u Galaksiju+.
Druga stvar je precizno crtanje slike raster-po-raster, da bi radili programi, kao
što je "Highres.gtp" itd. Na žalost, ovaj program koristi istu onu &2038 latch adresu,
koju OS koristi kao izlaz na kasetofon kod SAVE. U priloženom "Highres.grz" snapšotu
promenjena ova adresa u standardnu &207f, koju koristi i OS, da bi mogao testirati
sa debag verzijom (u MESS-u radi i ovako, a za pravu Galaksiju ne znam, jer ga nemam).
Razlika izmedju obične i debag verzije je u tome, da se Z80 emulacija zaustavja svaki
put kad se nešto piše u &207F radi provere izvršenih broja ciklusa, upisanog broja i
adrese koju sadrže I i R registar (pošto je R registar 7-bitni, dodat je invertovan
8. bit broja koji se upisuje u latch, kako bi adresa bila korektna).

Ko želi, može da proba debag verziju ovako:
- Učitati "galemu540_d.pb" u PureBasic 5.40 Demo
- Uključiti debager funkciju kompajlera iz menija
- Pokrenuti i odmah smanjiti prozor emulatora da ne bi prekrio debager
- Prvo izvšiti u emulatoru "BYTE&2BA8,8" za horizontalni pomak
- Zatim izvršiti "BYTE&2BB0,56" za vertikalni pomak
- Zatim sa "Load" dugmetom učitati "Highres.grz" i pokrenuti ga sa RUN
- Pauzirati izvršenje programa iz menija, da bi mogli analizirati vrednosti u debug
prozoru ("Kill" funkcija ili "Quit" zatvara i debag prozor).
Svaki red u debag prozoru sadrži redom:
- korigovanu heksadecimalnu adresu iz IR registra (adresa reda na ekranu)
- decimalnu vrednost koji se upisuje u latch ( broj linije u karakter generatoru)
- broj izvšenih ciklusa od poslednjeg upisa u latch

Veza između tih vrednosti je ključ za crtanje slike raster-po-raster, ali još ne
znam kako.

"galemu540_2.pb" je vrzija bez debag opcije. Ako nema "midas11.dll"-a, potrebne su
iste modifikacije kao kod debug verzije ( midas dll se može naći i u ranijim
verzijama MAME distribucije, ili u nekim igricama, pa nije potrebno skidati sa neta)
Za kompajliranje "raze.dll"-a potreban je NASM asembler i ALINK linker u istoimenim
mapama (linkovi za skidanje su date), i treba pokrenuti "Make.bat" iz mape
"raze106dll". (PureBasic instalira za svoje potrebe FASM i ALINK. ALINK verovatno
odgovara i za raze, ali za FASM nisam siguran)
[ hardtv @ 19.02.2016. 06:17 ] @
Emulator još nije gotov, ali već ima grafiku "visoke" rezolucije (kao u MESS-u, pošto pravu galaksiju nemam).
U toku je pisanje pozamašnog help fajla i dodavanje nekih funkcija koja će pojednostaviti pisanje novog softvera za galaksiju na samom emulatoru (uglavnom za unos ASM i Basic listinga odnosno binarnih podataka iz klipboard-a direktno u memoriju galaksije, i konverziju srpskih slova kod štampanja u fajl).
Kao odmor od emulatora, napisao sam dva demoa za galaksiju. Oba rade i u mom emulatoru, i u MESS-u.
Monitor program za galaksiju koji se može skinuti sa sajta retrospec.sgn.net ima grešku, pa sam ispravljenu verziju isto postavio ovde.



Bilo bi dobro znati, da li Sidetext2Demo (6k) radi na pravoj galaksiji. Treba samo učitati u MESS i ponovo ga snimiti u wav, da bi posle bilo moguće učitati u pravu galaksiju (moj emulator još uvek nema nikakav zvuk).

[Ovu poruku je menjao hardtv dana 19.02.2016. u 07:38 GMT+1]