Gönderen Konu: 6502 makine diline meraklı olan?  (Okunma sayısı 29624 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı wizofwor

  • RAAT
  • Tedavideki Retromanik
  • *
  • İleti: 398
Ynt: 6502 makine diline meraklı olan?
« Yanıtla #15 : 13 Ocak 2014, 17:19:52 »
Oric'in grafik modlarını araştırdıkça yavaş yavaş Tramiel'e hayran olmaya başlıyorum galiba. 1K bellek kazanmak için grafik yeteneği feci budamışlar.
Gosub ile gidilen yerden goto ile dönen adam

Çevrimdışı Skate

  • RAAT
  • Retro Meraklısı
  • *
  • İleti: 175
Ynt: 6502 makine diline meraklı olan?
« Yanıtla #16 : 13 Ocak 2014, 20:51:03 »
Oric'de VIA timerları var iki tane. Yani CIA'nın birebir karşılığı olan şekilde yok ancak timer elbette ki var ve bunlar kullanılarak interrupt yazabiliyorsunuz. Timerlar iki tane olduğu için de hem IRQ, hem NMI C64'deki gibi simüle edilebilir.

Bu Oric nedir, ne değildir araştırdığım seneler öncesinden kalan teorik bir bilgi. Tek satır kod execute etmişliğim yoktur. Yarı güvenilir bir bilgi olarak alabilirsiniz.

Çevrimdışı Ref

  • Yönetici
  • Özgür Retrocu
  • *
  • İleti: 2882
  • Advanced User Simulator
    • ae unutmadan
Ynt: 6502 makine diline meraklı olan?
« Yanıtla #17 : 13 Ocak 2014, 23:19:51 »
Dehşet içinde farkettim ki Oric'te Raster IRQ yokmuş!

O c64 ve amstradcılara özel bir treat dostum :)

Çevrimdışı wizofwor

  • RAAT
  • Tedavideki Retromanik
  • *
  • İleti: 398
Ynt: 6502 makine diline meraklı olan?
« Yanıtla #18 : 13 Ocak 2014, 23:39:27 »
Kaç saattir google'ın altını üstüne getirdim. Oric'te raster satırı nasıl yakalanır hiç bir bilgi bulamadım. Tek öğrenebildiğim grafik işlerinin cpu ile paralel yürüdüğü ve bu sayede sekron tutrmanın fazla sorun olmadığı(?) Devamını birileri bulup paylaşır diye bekliyorum artık.

Oric için iki satır kod bulamadım ama bu araştırma "Computer Graphics during the 8-bit Computer Game Era" adında çok şık bir dökümanla karşılaşmama vesile oldu. Aşağıda linkini veriyorum. Oric ararken buldum ama malesef Oric'ten hiç bahsemiyor.
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.152.2465&rep=rep1&type=pdf

@ref: Anlamadım sizde de mi yok raster IRQ?? Ben bunun çok standart bir özellik olduğunu zannediyordum halbuki.
Gosub ile gidilen yerden goto ile dönen adam

Çevrimdışı CapedCrusader

  • Retromanik
  • *****
  • İleti: 7
Ynt: 6502 makine diline meraklı olan?
« Yanıtla #19 : 14 Ocak 2014, 17:27:57 »
Slm. Burada biraz bilgi var Oric grafikleri ve raster hakkinda. Sayanin altinda raster kaynak kodu da var.
http://www.defence-force.org/computing/oric/coding/part_7/index.htm

Çevrimdışı Skate

  • RAAT
  • Retro Meraklısı
  • *
  • İleti: 175
Ynt: 6502 makine diline meraklı olan?
« Yanıtla #20 : 14 Ocak 2014, 20:41:22 »
Slm. Burada biraz bilgi var Oric grafikleri ve raster hakkinda. Sayanin altinda raster kaynak kodu da var.
http://www.defence-force.org/computing/oric/coding/part_7/index.htm

O source code yalnızca $a000'dan itibaren 200 tane renk değeri set ediyor. Eğer bunlar doğrudan raster color olarak map ediliyorsa 8 bit döneminden Atari 800 ailesinin display list'ine benzer bir desteği var demektir. Atari coding'e aşina olmayan ve display listleri bilmeyenler için Amiga'nın copper'ı dersem herhalde daha fazla kişi anlayacaktır. Kısacası donanımsal olarak her raster satırı başında zamanlamayı otomatik yakalıyor ve dilediğimiz değişikliği otomatik yapabiliyor demektir. Bu değişiklik normalde foreground/background'u rengi değiştirmenin yanı sıra grafik modu, point eden grafik adresi gibi şeyleri de içerir. Oric'de ya böyle bir destek var (ben bilmiyordum olduğunu) ya da o kod olayın tamamını ifade etmiyor.

Edit: Biraz daha inceledim, sıralı olarak yazmıyormuş değerleri. Sanırım Oric'de her karakter satırının başında color ve graphic mode ifade eden 2 byte var, onları set ediyor.

Çevrimdışı Pe@ceR

  • RAAT
  • Tedavideki Retromanik
  • *
  • İleti: 321
Ynt: 6502 makine diline meraklı olan?
« Yanıtla #21 : 14 Ocak 2014, 21:47:22 »
Cıks o raster o raster değil kafanız karışmasın :)

Defence force'das verilen kod, text modu ile hires modunu karıştırarak text ekranında iken hires grafikleri gösterme ile ilgili bir trick sadece. Denildiği üzere ekranda gösterilen byte'ın text mode mu grafik modu mu olarak gösterildiğine dair verileri değiştiriyor sadece. Karakter satırının başı değil de tıpkı renk ve zemin rengini satır içerisinde herhangi bir yerde değiştirilmesi esasına dayanıyor.

Oric'de KESİNLİKLE piksel başına renk kodlaması ya da buna ayrılmış ekstra bir renk haritalaması belleği yok.

Senkronizasyonla ilgili olarak olay tamamen interruptla ilgili. Ekran yenilenme hızı ile işlemci hızının senkron edilmesi üzerine denemeler var. Örneğin şurada ekranda aynı adrese kırmızı ve sarı rengi hızlıca koyup oric'de normalde olmayan portakal rengi'ni elde etmek üzerine bir çalışma var. renk değişimini yanıp sönme değil de gözün algılayabileceği sabit bir hıza getirmek için de cycle arası hesaplamalar yapılıyor. Detayını ben de çok bilmiyorum ama oric'in teyp çıkışından yapılan bir işlemle "vsync" deniyor bu konuya.
http://forum.defence-force.org/viewtopic.php?f=4&t=944

"19968 = 64*312 is the precise number of cycles of the screen raster.
However, to get an interrupt every 19968 cycles, you must program the VIA timer with a value of 19966, because the VIA adds two cycles to each count (19966, 19965, 19964,.... , 2, 1, 0, -1, 19966, 19965, 19964,...). "


Yeni geliştirilmekte olan şu oyunda da mesela girişte bu senkronizasyonla ilgili bir ayar (vertical retrace senkronizasyonu) yaptırılıyor. Teyp çıkışına ait donanımsal bir vsync hack kullanılmadan yazılımsal bir senkronizasyon yapılıyor
More tests, now with (preliminary) sfx and more


Çevrimdışı Alco

  • Yönetici
  • Özgür Retrocu
  • *
  • İleti: 2133
  • "Kahraman olmak, dürüst olmaktan kolaydır" Luigi P
    • Sizin Amstrad
Ynt: 6502 makine diline meraklı olan?
« Yanıtla #22 : 14 Ocak 2014, 21:55:46 »
Detayını ben de çok bilmiyorum ama oric'in teyp çıkışından yapılan bir işlemle "vsync" deniyor bu konuya.
http://forum.defence-force.org/viewtopic.php?f=4&t=944

"19968 = 64*312 is the precise number of cycles of the screen raster.
However, to get an interrupt every 19968 cycles, you must program the VIA timer with a value of 19966, because the VIA adds two cycles to each count (19966, 19965, 19964,.... , 2, 1, 0, -1, 19966, 19965, 19964,...). "

RAAT #01'de bu konuşuldu ama tam olarak nelerden bahsedildi veya kimler muhabbete dahil oldu bilmiyorum. Gecenin bir yarısı elde kırmızılar, sanki garden party'de borsa veya sosyete dedikodusu yapılır türden bir görüntü var gözümün önünde. Belki Ref hatırlar tam olarak konuşan ve konuşulanları...

Çevrimdışı Ref

  • Yönetici
  • Özgür Retrocu
  • *
  • İleti: 2882
  • Advanced User Simulator
    • ae unutmadan
Ynt: 6502 makine diline meraklı olan?
« Yanıtla #23 : 14 Ocak 2014, 22:11:19 »
RAAT'da oric'de hiçbir interrupt mekanizmasının bulunmaması konuşuldu. Elbette elinizde sadece "timer" bulunan bir makinede sizin aldığınız tüm zamanlamalar bilgisayarı açtığınız analog zaman birimiyle ölçülebilir ve bu zaman birimi televizyonunuzu açtığınız zaman birimi ile örtüşmeyecektir. Dolayısı ile TV'nizin ne zaman vertical retrace aşamasını girdiğini bilemeyeceksiniz, bu ortamda da dikey senkron problemdir. Bu sebepten tüm demo ve oyunlarda, görüntüde yırtılmalar *olabilir* (ya da şanslı iseniz olmayadabilir).

Yanlız bu retrace gibi saniyenin 50'de birinde gerçekleşen bir olayı el-göz koordinasyonu ile tespit edebilecek bir sistem buldularsa bu sorunu çözülmüş sayabiliriz. Her durumda şimdiden kafamın alamayacağı kadar karmaşık, cycle sayma, timer kontrol etme gibi çılgın programcılık pratiklerinin uygulanması şart olacaktır.

Eh ama retro'nun en güzel yönü bu değil mi? Yokluklar içinde birşeyler üretmek, o yoklukları yok etmek? Bu arada multiplayer'a Oric de götürmüştüm ama amigadan başka birşeyi çalıştırmaya fırsat bulamadık. Eğer bir program daha yapacak olursak oric'den de bahsedeceğimden emin olabilirsiniz.

Çevrimdışı Alco

  • Yönetici
  • Özgür Retrocu
  • *
  • İleti: 2133
  • "Kahraman olmak, dürüst olmaktan kolaydır" Luigi P
    • Sizin Amstrad
Ynt: 6502 makine diline meraklı olan?
« Yanıtla #24 : 14 Ocak 2014, 22:18:56 »
RAAT'da oric'de hiçbir interrupt mekanizmasının bulunmaması konuşuldu.
Tolga'ydı bahseden sanırım.

Çevrimdışı nightlord

  • RAAT
  • Tedavideki Retromanik
  • *
  • İleti: 389
    • Night Network
Ynt: 6502 makine diline meraklı olan?
« Yanıtla #25 : 14 Ocak 2014, 23:27:05 »
Enteresan bir konu ben o forumda okuduklarımdan anladıklarım ve önceden bildiklerimle iki yorum yapayım.

RAAT'da oric'de hiçbir interrupt mekanizmasının bulunmaması konuşuldu. Elbette elinizde sadece "timer" bulunan bir makinede sizin aldığınız tüm zamanlamalar bilgisayarı açtığınız analog zaman birimiyle ölçülebilir ve bu zaman birimi televizyonunuzu açtığınız zaman birimi ile örtüşmeyecektir. Dolayısı ile TV'nizin ne zaman vertical retrace aşamasını girdiğini bilemeyeceksiniz, bu ortamda da dikey senkron problemdir. Bu sebepten tüm demo ve oyunlarda, görüntüde yırtılmalar *olabilir* (ya da şanslı iseniz olmayadabilir).

Buraya ufak bir düzeltme: aslında televizyonun ne zaman v-sync yaptığını biliyoruz. Çünkü TV v-sync işlemini gelen video sinyalinden ötürü yapar. Yani burada bilgisayar ne zaman derse TV o zaman v-sync yapar. Oricteki problem sanırım şu. Eğer timerlar reset anından itibaren saymaya başlasaydı ve siz programınızı run ettiğinizde de saymaya devam ediyor olsaydı o zaman programda timer değerini okuyup rasterin nerede olduğunu kestirebilirdiniz. Sanırım bu durum yok ve timer siz set ederseniz başlıyor çalışmaya. Bunun olabileceği en erken nokta da program run etmeye başladıktan sonra. Programın ne zaman run edeceği ise belirsiz (program adını yazıyor kullanıcı falan). Bu yüzden bir ekranda toplam kac cycle var ise o kadar cycle'da bir çalışan ve diyelim ki ekran rengini değiştiren bir rutin yazarsanız ekranda her defasında aynı yere denk gelen bir efekt elde edebilirsiniz ama vsync olmadan bunun ekranın "neresine" geleceği muamma olacak. Bu da bizi bir sonraki noktaya getiriyor.

Alıntı
Yanlız bu retrace gibi saniyenin 50'de birinde gerçekleşen bir olayı el-göz koordinasyonu ile tespit edebilecek bir sistem buldularsa bu sorunu çözülmüş sayabiliriz. Her durumda şimdiden kafamın alamayacağı kadar karmaşık, cycle sayma, timer kontrol etme gibi çılgın programcılık pratiklerinin uygulanması şart olacaktır.
Bu sanıldığı kadar el göz koordinasyonu gerektirmeyecek. daha çok bir knob'ı çevirmek gibi olacak. sonuçta software ekranda nereye geldiğini bilemediği ama sabit bir şekil sunacak ve diyecek ki "bu şekli hede tuşu ile aşağı, hödö tuşu ile yukarı kaydırabilirsiniz. Şimdi ekranın en altına getirin. Sonra enter'a basın" böylece açılıştaki belirsizliği elimine edip ekranda ne nerede onu anlamış olacak.


Çevrimdışı Ref

  • Yönetici
  • Özgür Retrocu
  • *
  • İleti: 2882
  • Advanced User Simulator
    • ae unutmadan
Ynt: 6502 makine diline meraklı olan?
« Yanıtla #26 : 15 Ocak 2014, 01:43:59 »
aslında televizyonun ne zaman v-sync yaptığını biliyoruz. Çünkü TV v-sync işlemini gelen video sinyalinden ötürü yapar. Yani burada bilgisayar ne zaman derse TV o zaman v-sync yapar.

evet evet, elbette. Tabii bu asamada yine oric"in kendi donaniminin ne zaman vsync istedigini bilmiyoruz. Aslinda boyle onemli bir konu neden atlanir (hele ki bir kablo ile eklenebiliyor iken)... Biraz sinclairde 32 renk desteklemek yerine 8 renk+flash attribute'unu tercih etmelerine benziyor. Sadece aptalca bir karar.

Çevrimdışı Pe@ceR

  • RAAT
  • Tedavideki Retromanik
  • *
  • İleti: 321
Ynt: 6502 makine diline meraklı olan?
« Yanıtla #27 : 15 Ocak 2014, 02:05:18 »
My beloved Oric'imden bahsediyorsunuz ama ben anlamıyoğ . Yine de hoşuma gidiyoğ :)


Çevrimdışı Ref

  • Yönetici
  • Özgür Retrocu
  • *
  • İleti: 2882
  • Advanced User Simulator
    • ae unutmadan
Ynt: 6502 makine diline meraklı olan?
« Yanıtla #28 : 15 Ocak 2014, 09:45:28 »
My beloved Oric'imden bahsediyorsunuz ama ben anlamıyoğ . Yine de hoşuma gidiyoğ :)

nightlord'un mis gibi açıkladığı gibi, aslında o kadar da zor bir iş değilmiş.

1.Yazılım ekranı istediği zaman çizmeye başlıyor.

2. Sonra sana bir "ayar düğmesi" gösteriyor, bu ayar düğmesi sayesinde çizimi ayar kadar geciktirerek biraz geç çizmeye başlıyor.

3. Sen o düğmeyi, yırtılma ekranın dışına çıkana kadar çeviriyorsun. Sonra zamanlama tutturulmuş oluyor ve timer resetleniyor.

4. Oyunun belli aşamalarında timer kontrol edilerek oric'in hangi aşamada olunduğunun kontrol edilmesi, gerekirse beklenmesi ve ya da çizimin başlatılması gerçekleşiyor.

Çevrimdışı Pe@ceR

  • RAAT
  • Tedavideki Retromanik
  • *
  • İleti: 321
Ynt: 6502 makine diline meraklı olan?
« Yanıtla #29 : 15 Ocak 2014, 10:32:54 »
Onu anladım bir nebze. Ama teyp çıkıından donanımsal vsync hack nasıl işliyor aklım almıyor.