Da li je nova Galaksija 100% kompatibilna sa starom i sa svim njenim postojećim softverom ?
Ovakvo je stanje na G40:
29c3dem.gtp - radi, ali ne klizi glatko
Benchmark_run.gtp - ne radi, krešuje prilikom testa
hardware.gtp - radi, daje Fake Galaksija ili emulated
highres.gtp - radi bez problema (kao i ostale), potrebno je pomeriti samo sliku. Ovde se koristi IM 2
PhoneSpy.gtp - Ne radi
SHOWDemo_run.gtp - Ne radi
Sidetex2.gtp - Ne radi
Sidetex3.gtp - Ne radi
Year30v2.gtp - Ne radi
Zbog čega ne rade, to ne znam. Moje iskustvo i u kontaktu s drugima koju se je pravili, je da i nove G40 se razlikuju među sobom. Ja sam imao problem tajminga između EEPROMa sa karakterima, nand kola (u7) i nekih Z80, tzv. problem 7. i 8. piksela, dok neki ih nisu imali.
Što se IM2 i G40, po mom mišljenju bi morao da radi, ako radi hires rutina.
Ponavljam, istina je da se registar I koristi za indeksiranje karaktera i da na databus-u može biti bilo šta (&00 - &FF), ali to Tomaž rešava tako što praktično isključi interapte potpuno (DI), pa onda u &2800 - &28FF upisuje seriju bajtova &29 (ako učitate hires.gtp i uradite WORD &2C5A,&0000, videćete na ekranu ")))))))))))))))))...", jer upravo 29hex odgovara tom ASCII karakteru). Zatim u registar I učitava &28 (gornji bajt adresse), dok donji (pročitan sa databus-a) može biti bilo šta &00-&FF, ali nije važno, jer Z80 će uvek čitati &2929 i otići na tu adresu. Preostaje samo da na &2929 upiše JP na novu adresu drajvera, što je kod njega &2D19 i omdah uradi uključi dalje interapte (EI).
Zašto ne radi Year30, treba videti šta upisuje &2800 - &28FF i da li radi JP, kao prva stvar. Znamo takođe, da taj demo kombinuje highres i lowres drajver.
Kod:
call sub_2c89h ;2C3A poziv pripremne rutine (učitavanje ISR koda/slike)
di ;2C3D zabrana prekida
ld hl,02800h ;2C3E HL pokazuje na početak IM2 vektorske tabele (2800h)
ld d,029h ;2C41 D = 29h (koristi se kao vektorska niska vrednost)
l2c43h:
ld (hl),d ;2C43 upisuje 29h u memoriju
inc hl ;2C44 povećaj HL
ld a,h ;2C45 uzmi visoki bajt
and 001h ;2C46 proveri bit 0
jr z,l2c43h ;2C48 ako je nula → nastavi punjenje (sve dok H = 28h)
ld (hl),d ;2C4A poslednji upis (2900h) = 29h
ld hl,02929h ;2C4B HL = 2929h
ld (hl),0c3h ;2C4E (2929h) = C3h → opcode za JP nn
inc hl
ld (hl),019h ;2C51 (292Ah) = 19h → low byte od adrese skoka
inc hl
ld (hl),02dh ;2C54 (292Bh) = 2Dh → high byte od adrese skoka
; dakle na 2929h stoji: JP 2D19h
ld a,028h ;2C56 A = 28h
ld i,a ;2C58 I = 28h (gornji bajt IM2 vektora)
im 2 ;2C5A uključi Interrupt Mode 2
ei ;2C5C dozvoli prekide
; ----------------------------
; Pripremna rutina
; ----------------------------
sub_2c89h:
ld hl,l2ca1h ;2C89 HL = adresa koda/podataka na 2CA1h
ld (02c36h),hl ;2C8C upis pointera na 2C36h
ld hl,l2cb0h ;2C8F HL = 2CB0h
ld (02c38h),hl ;2C92 upis pointera na 2C38h
ld hl,03720h ;2C95 HL = 3720h (početak binarne slike u ROM/RAM)
ld de,03fffh ;2C98 DE = 3FFFh (krajnja adresa u RAM-u)
ld bc,00800h ;2C9B BC = 0800h = 2048 bajtova (2 KB)
lddr ;2C9E kopiraj 2 KB naniže, od HL ka DE
ret ;2CA0 povratak