Gönderen Konu: Donanım Penceresinden NewSchool  (Okunma sayısı 614 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı Skate

  • RAAT
  • Retroman
  • *
  • İleti: 57
Ynt: Donanım Penceresinden NewSchool
« Yanıtla #15 : 13 Mart 2020, 23:58:54 »
eins ile netleştiremediğimiz ama netleştirmek için çok da acelemizin olmadığı, zamanı gelince karar veririz dediğimiz konulardan biri de donanım sürücüleri gibi şeylerin ne kadarının FPGA, ne kadarının 65C02 üzerinde halledileceği konusu oldu. Örneğin klavyeden girdileri okumamız lazım. Klavye USB interface'ine sahip. Klavye'den byte byte okumayı yapacak taraf FPGA mi olacak yoksa 65C02 mi? İşi 65C02'ye devredersek kernel daha fazla kod içeriyor ancak kullanıcıya kernel'i devre dışı bırakıp, kendi alternatif iletişim rutinlerini yazmak için de güzel bir açık kapı bırakmış oluyoruz. Diğer türlü kernel'i bu tür şeylerden izole edip, FPGA doğrudan keyboard buffer'ı memory'e yazıp bir hardware registerdan statü sinyali de verebilir. Bunlar hala üzerinde çalışılan ve "duruma göre" FPGA ya da 65C02 tarafına çekebileceğimiz şeyler. Ancak ben olabildiğince her şey 65C02 tarafında olacakmış gibi düşünerek bir deneme yaptım.

eins bana örnek USB driver kodları göndermişti. Bunları 6502 tabanlı olarak kodlamak gerekiyordu. Evet, kodlaması zor değil. Ancak sıfırdan kodlamaya ya da C kodlarını port etmeye gerek var mıydı? Kernel için zaten KickAssembler kullanıyorduk. Ama benim son zamanlar haşır neşir olduğum ve yakından takip ettiğim bir diğer proje KickC projesi idi. KickC, tıpkı Nightlord'un seneler evvel yazığı 6502 için tasarlanmış harika bir C/C++ compilerı projesi olan C=++ projesine benzer şekilde C kodlarını Assembly source codeları şeklinde derliyordu. C=++ ACME source code çıktısı verirken KickC adından da anlaşılabileceği gibi KickAssembler çıktısı veriyor. Bu nedenle KickC'yi bir denemeye karar verdim.

C'den yazılmış bir USB driver kodunu (çekirdek bölümünü diyelim) KickC ile derlenebilecek hale getirmem yalnızca bir iki saat vaktimi aldı. KickC'nin çıktısı ideal değil. KickC henüz yeterince olgunlaşmış bir proje de değil. Kodu patern olarak algılayıp ilgili fragmentlarla KickAssembler source'una çeviriyor. Binlerce, onbinlerce fragment hazırlamak gerekiyor. Projeyi geliştiren arkadaş bunları elinden geldiğince hazırlamış. Ancak bir senaryo çıkıyor ki "ilgili fragment'ı bulamadım" diyor compiler, hata veriyor. Bu durumda genel olarak ticket açıp "şu fragment eksik" diyorsunuz ve update gelmesini bekliyorsunuz. Ama KickC'nin fragment yapısı çok basit modellenmiş, anlaşılması çok kolay. Dolayısıyla kendi fragmentlarımı oluşturup pull request atmaya başladım ve bu sayede proje benim açımdan çok daha kullanışlı hale geldi. Yani bir noktada takılmıyor, kendi ihtiyaçlarımı karşılayacak kısımları kendim yazıp, aynı zamanda KickC projesinin gelişmesine de katkıda bulunabiliyorum.

Şu anda kernel açısından hala sıfır noktasına yakınız. Ama yapmış olduğum başlangıç seviyesi hazırlıklar ve araştırmalar bu şekilde. Hardcore coding pek yakında başlayacak. O zaman benim de eins gibi sizlere anlatacak daha güzel hikayelerim olacak.

Çevrimdışı C64Esref

  • Retromanik
  • *****
  • İleti: 16
    • portfolyo sitem
Ynt: Donanım Penceresinden NewSchool
« Yanıtla #16 : 15 Mart 2020, 02:26:12 »
eins abiden gene müthiş bir proje. Emeğinize sağlık bende takipteyim.
AMIGA 500 | GOTEK | 1 MB RAM | 1.3 ROM | HDMI-520
AMIGA 1200 | 8GB CF  | 3.1 ROM | 8 MB RAM | HDMI-520
COMMODORE 64 | IRQHack64 | KissCart64 | Pi1541 | 64K CUPCAKE-CART | 1084 S

Çevrimdışı Fero

  • RAAT
  • Retroman
  • *
  • İleti: 33
  • guy.brush
    • Ferhat Tanman
Ynt: Donanım Penceresinden NewSchool
« Yanıtla #17 : 19 Mart 2020, 23:17:42 »
Elinize sağlık. Şu aşamada sadece heyecanlanmakla yetinebiliyoruz. Beklemedeyiz :)
"Never pay more than 20 bucks for a computer game."