Home  Articles  Programs 

Pratik C64 ROM Rutinleri

Commodore 64 BASIC ve KERNAL yordamlarından sık kullanılanlar ve kullanımları.

AEFD: Virgül al.

B79E: 8 bitlik tamsayı al, X'e koy.

B08B: ($7A)'nın gösterdiği değişkeni yaratıp, içinin başlangıç adresini AY'ye koyar.

AD8A: Tip denetimi yapıp, ASCII'yi FAC'a koyar (sayısal tip).

B7F1: AEFD + B79E

B7F7: ASCII sayıyı alıp $14, $15'e koyar.

B1AA: ASCII sayıyı alıp Y,A'ya koyar.

B7EB: B7F7+AEFD+B79E

BBD4: FAC -> (XY)

BC3C: A -> FAC

AD9E: Dizi ya da sayı al.

AD8F: Tip denetimi yap (yazısal tip).

B6A6: Yazısal tip verilerin yerini X,Y ile, uzunluğunu A ile bildirir.

B37D: Free (Garbage collection).

E1D4: Dosya ve disk adı al ve bunları $00B7...'ye koy.

0073: CHRGET: BASIC'te sıradaki byte'ı okur.

0079: CHRGOT: BASIC'te en son okunan byte'ı getirir.

BDCD: INTOUT: X,A'daki işaretsiz tamsayıyı ekrana basar.

BC3C: INTFLOAT1S: A'daki işaretli bir byte sayıyı kesirli olarak FAC'a koyar. (işaretsiz bir sayı EOR#$FF CLC ADC#$01 ile işaretli biçime getirilir. Böyle bir sayı -128 ila +127 arasındadır. $80=-128, $FF=-1, $7F=127'dir).

B3A2: INTFLOAT1: Y'deki işaretsiz bir byte sayıyı kesirli olarak FAC'a koyar.

B395: INTFLOAT2S: Y,A'daki işaretli iki byte sayıyı kesirli biçimde FAC'a koyar (7FFF=+32767,$FFFF=-1, $8000=-32768)

BCF3: ASCFLOAT: $7A,$7B'nin işaret ettiği yerdeki ASCII bir sayıyı FAC'a koyar. Kullanırken önce CHRGOT çağrılır.

BC1B: ROUND: FAC'deki bir sayıyı yuvarlayıp gene FAC'e saklar.

BDDD: FLOATASC: FAC'deki bir sayıyı $0100 ve devaına ASCII olarak yazar ve sonuna $00 ekler.

AB1E: STROUT: A,Y'de yeri belirtilen adresten başlayıp $00 ile biten ve 256 harften küçük yazılar ekrana basar.

FAC: $61-$65 ARG: $69-$6D

FAC ARG Anlamı
----- ----- ---------
$61  $69  Üs
$62  $6A  Mantisa1
$63  $6B  Mantisa2
$64  $6C  Mantisa3
$65  $6D  Mantisa4
$66  $6E  İşaret
$70          Yuvarlama
$6F          İşaret karşılaştırma

Örnek: String okuma:

JSR$AEFD
JSR$AD9E
JSR$BBA3

sonuç: X,Y= yeri, A=uzunluğu

Bunlar, özellikle GOS'un komutlarında da kullanılmış olduğundan GOS komutlarını anlamada pratik bir referans niteliğinde.

Kendi makine dili fonksiyonlarımızda da kullanırken yararlı oluyorlar. Örneğin 16384 adresine bir kod yerleştirdik ve bu kod parametre olarak iki sayı istiyor diyelim. Aşağıdaki referanslara bakarak, kodumuzun başında virgül, sayı, virgül, sayı al rutinlerini çağırdığımızda sys16384,s1,s2 diyerek bu makine dili kodumuza parametre aktarabiliyoruz.

İlker Fıçıcılar
29.07.2014

Keywords: Commodore 64, Yazılım, ROM


C64 Projects Twitter Page

İlker Fıçıcılar's CBM Page