24 Ağustos 2016 Çarşamba

25 Temmuz 2016 Pazartesi

30 Kasım 2014 Pazar

c64çe Nothing else matters!

Yeni sid çalışmamdır. Her türlü eleştiriye açığım. 3 kanal ses olunca bu kadar oluyor...

http://csdb.dk/release/index.php?id=135025

8 Kasım 2014 Cumartesi

CBM Prg Studio 3.2.0 (Better support for Turkish language)

CBM Prg Studio'nun 3.2.0 sürümü Türkçe dil desteğini alacak şekilde düzeltildi. Örneğin SEI komutunu küçük harf olarak yazdığınızda sei olmalı ama bu op kodu tanımıyordu. seı olarak yazılırsa derleme başarılıydı. Neyse ki sorun uzun mail trafiği sayesinde çözüldü. Artık i-ı kargaşası bitti.

Programın Option menüsünden çıkan pencereden General sekmesine gelip "Use Current Culture"  yazılı checkboxa ait çentiği kaldırın, boş bırakın. Bu sayede Türkçe desteği için sıkıntı çekmeyeceksiniz.

14 Eylül 2014 Pazar

My First One File Demo at CSDb


C64 üzerinde yaptığım demolardan birini CSDb'de yayınladım. Kaynak kodlarını inceleyerek blogta öğrendiklerinizin bir kısmını bulabilirsiniz.

http://csdb.dk/release/index.php?id=132995 adresinden ilgili demonun d64 image dosyasını indirerek çalıştırabilirsiniz.


11 Eylül 2014 Perşembe

IRQ interrupt raster? ....

IRQ interrupt & raster?

Teknik ayrıntısı aslında kısaca şöyle anlatılabilir. C64'ü açtığınızda 'READY.' altında cursor yanıp söner zavallım. Zavallı yanıp söne dursun, arkaplanda her bilgisayar gibi sizin farkında olmadığınız bir sürü iş yapıla durur :). Saman altından su yürütülür. Siz de saman altından su yürütmek istediğiniz de bir anlık bir kesinti yaratıp bu anda şu programı çalıştır sonra hemen çık, nerede kaldıysan oradan devam et demelisiniz. Bunu yaparken zamanlama bazen çok önemlidir.

Nasıl yani? Evet, herşeyde olduğu gibi burada da zamanlama çok önemli olabiliyor.
Benim bildiğim en küçük zamanlama birimi cycle.

Cycle Nedir?
Benim bildiğim tanım şu şekilde (ilk öğrendiğimde kandırmadılar ise), CRT monitör yada eski TVlerde bir elektron tüm ekranı gezer, bizim anlamamız için pixel pixel yol alır. Göz bunu farketmez. Hatta anlamak için bu tip monitör yada TV'lere yandan bak falan derlerdi. Titreşim olurdu az çok yinede anlamazdık. Bizim bu elektron 8 piksel yol aldığında 1 cycle zaman geçer teoride, hala teoride sanırım. 

Elektronun C64 yazılabilir ekranında en sol üst köşesindeki pikselden, en sağ üst köşesindeki piksele kadar kaç cycle geçer hesap edelim. 40 kolon var 1 satırda. Her karakter 8x8 matrixten oluşmuş, yani her karakter 8 piksel genişliğinde. 40x8=320 piksel. Bunu da 8'e bölersek 40 cycle eder. 20 adet NOP komutu ardarda çalıştığında geçen süre kadar. Aslında bu hesapların şimdi çok bir önemi yok.

Aşağıdaki program $D012 deki raster $00 olana kadar programın kalanını çalıştırmaz. Olduğunda ise en üst satıra birşeyler yazar ve bunu hep sabit tutar. Diyelim ki program dökümünüzü LIST ettiniz, listeniz aşağı aka dursun hala üst satır sabit kalır. $D019 kullanımı ve basic'e dön ($EA31) açıklamalarına kullanımına dikkat ediniz.

; 10 SYS49152

*=$801

        BYTE    $0B, $08, $0A, $00, $9E, $34, $39, $31, $35, $32, $00, $00, $00



*=$C000
        jsr $e544       ; ekranı sil
        lda #$0d        ; cursora satır atlatır
        jsr $ffd2

        sei             
        lda #$7f        ; CIA kontrol registerlerini ayarla
        sta $dc0d
        lda #$00
        sta $dc0e

        lda #$01
        sta $d01a       ; IRQ çalış (önleme) 

        ldx #$00        ; rasteri $00'a ayarla
        stx $d012

        lda #$<kes      ; IRQ interrupt vektörünü ayarla
        sta $0314       
        lda #$>kes
        sta $0315

        cli 
        rts

kes     lda #$00        ; raster 0 olana kadar bekle
X       cmp $d012
        bne X

        ldx #$00        ; üst satır yazdır
l1      lda toptxt,x
        clc
        adc #$80
        sta $0400,x
        inx
        cpx #$28
        bne l1

        lsr $d019       ; VIC kesinti bayrağı registeri
        jmp $ea31       ; basic'e dön

toptxt  BYTE    $20,$03,$36,$34,$20,$15,$13,$05,$12,$20,$20,$20,$20,$20
        BYTE    $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$30,$39,$2F,$31
        BYTE    $31,$2F,$31,$34,$20,$20,$30,$39,$3A,$32,$35,$20