Merhaba, Ziyaretçi. Lütfen giriş yapın veya üye olun.

Kullanıcı adınızı, parolanızı ve aktif kalma süresini giriniz

  Gelişmiş Arama
insanın içinde varsa, commodore.gen.tr açığa çıkarır bunu.. bir nevi retro olaylarının dolunayıyız.(Arda)
commodore.gen.trCommodoreCommodore YazılımC64 BASIC Kısa Kod Yarışması - irqHack64 Ödüllü
Sayfa: 1 ... 27 28 [29]   Aşağı git
Yazdır
Gönderen Konu: C64 BASIC Kısa Kod Yarışması - irqHack64 Ödüllü  (Okunma Sayısı 21989 defa)
0 Üye ve 1 Ziyaretçi konuyu incelemekte.
delimawi
Uzman
*****
Mesaj Sayısı: 1.561



Üyelik Bilgileri
« Yanıtla #420 : Haziran 12, 2017, 00:05:46 ÖÖ »

Aynı anda yazmışız...
Logged

Skate
Uzman
*****
Mesaj Sayısı: 1.446


A Sinner Scener


Üyelik Bilgileri WWW
« Yanıtla #421 : Haziran 12, 2017, 00:35:23 ÖÖ »

Eve gelebilmiş olsam ben de daha uzun yazacaktım da gün boyu dışarıdaydım. Şimdi klavye başına oturdum.

Bu yarışma benim açımdan da son derece faydalı oldu. Herkes gibi ben de bir çok şey öğrendim. Özellikle 20-25 senedir kullanmadığım CBM Basic'e yeniden, hem de advanced seviyeden el atmak çok keyifli oldu.

Scene'in güzel tarafı bu zaten. Bu yarışma ruhuna sürekli sahip oluyorsunuz. Öyle bir şey ki başka birinin yarışma düzenlemesi ya da size meydan okuması da gerekmiyor. Bazen bir demo izlerken, bazen arabada cama vuran yağmurda gözünüz bir pattern belirlediği anda bilgisayar başına geçip bir demo efekti kodlayasınız geliyor. Hele ki siz efekti yaptıktan sonra biri o efekte cevaben bir kademe öteye taşırsa olayı o noktada eğlence başlıyor.

Son yıllarda scene'de aktivitem yerlerde sürünüyor. Ama ruh aynen durduğu için sürekli alttan alttan bir şeyler yapıyorum. Bu yarışma devam edecek olursa da her daim katılımım devam eder. Ama cbm basic de maşallah abaküsden hallice, uyuz etmiyor dersem yalan olur. Kahkaha
Logged
Skate
Uzman
*****
Mesaj Sayısı: 1.446


A Sinner Scener


Üyelik Bilgileri WWW
« Yanıtla #422 : Haziran 13, 2017, 05:17:51 ÖÖ »

Bu yarışma sayesinde basic'in bazı buglarını da bulmuş oldum. Onları da tecrübe olarak paylaşmak isterim.

Bir çok dilde floating point math problemleri klasiktir. Örneğin 0.1 ile 0.2'yi topladığınızda 0.3 elde edemezsiniz. Bunun yerine 0.30000000000000004 gibi bir şey elde edersiniz. Bu bug değil "by design" olarak açıklanabilecek bir durumdur. CBM basic değişkenleri daha düşük bit kapasitesinde tuttuğu için bu tür bazı problemler daha bile az görülebiliyor. Örneğin CBM basic'de .1+.2 tam olarak .3 olarak ekrana yansıyor. Ama arkaplanda daha ciddi problemler var.

Aşağıdaki javascript örneğini ele alalım.

https://jsfiddle.net/v2syq3ev/

Kod:
0.1=0.1
0.2=0.2
0.1+0.2=0.30000000000000004
cos(0)=1
int(cos(0))=1

Görüldüğü gibi 0.1 ve 0.2 ayrı ayrı düzgün yazılırken toplamlarında küsürat hatası oluşuyor. Ama cos(0) gibi sonucun 1 olması gerektiğini bildiğimiz değerler 1 olarak yazılıyorlar ki değeri integer'a cast ettiğimizde de sonuç olması gerektiği gibi 1 çıkıyor.

CBM basic'de ise sonuçlar aşağıdaki screenshotlardaki gibi.

Özetle CBM basic'de küsürat hassasiyeti düşüklüğünden dolayı .1+.2 tam olarak .3 olarak ekrana yazılırken ekrana normalde sonucu 1 olarak yansıyan cos(0) ya da sin(PI/2) gibi değerler integer'a cast edildiklerinde değerleri 0 oluyor. Yani aslında ekrana yazdırılan değerler ile floating point olarak hafızada tutulan bit değerleri tam örtüşmüyor. int() fonksiyonu hatalı kodlanmış olsa bile 0 ile orladığımız takdirde bit tabanlı işlemden sonucun 1 çıkması gerekirdi.

Bir diğer sorun goto, gosub gibi komutların değişken parametre alamaması. Zamanında Simon's Basic'i incelediğimde "cgoto" komutunu görüp anlam verememiş, farkını anlamamıştım. Meğer o baştaki "c" "calculated"den geliyormuş. Basic dilinin normal goto komutuna bu özelliği kazandıran bir program buldum.

Kod:
10 for x=0 to 94:read a:poke 832+x,a:c=c+a:next
20 if c<>10356 then print "bad checksum":end
30 sys832
40 data 169,75,162,3,141,8,3,142,9,3,96,32,115,0,201,137,240
50 data 10,201,141,240,18,32,121,0,76,231,167,32,142,3,169,167,72
60 data 169,174,72,76,163,168,169,167,72,169,174,72,169,3,32,251,163
70 data 165,123,72,165,122,72,165,58,72,165,57,72,169,141,72,32,121
80 data 0,32,142,3,32,163,168,76,174,167,32,115,0,32,138,173,32
90 data 247,183,201,250,176,1,96,76,8,175

Bu program goto'nun hesaplanmış parametre alabilmesini sağlıyor. Aşağıdaki programı bir commodore'u ilk açtığınız gibi, bir de yukarıdaki programı çalıştırdıktan sonra deneyin.

Kod:
10 print"cgoto test":a=40:b=4
20 gotoa/b

Bu yarışma boyunca bir diğer karşımıza çıkan problem ASC("") komutunun 0 yerine ?illegal quantity error vermesiydi. Bu böyle mi olmalı derseniz hayır, diğer basiclerde böyle bir hata vermiyor, 0 döndürüyor. Peki bunu nasıl fixleyebiliriz. ROM'u fixleyemediğimiz için basic ROM'unu RAM'a aktarıp, sonra bu durumu fixlemek mümkün. Aşağıdaki tek satırlık kod bu işi yapıyor.

Kod:
0 fori=40960to49151:pokei,peek(i):next:poke1,54:poke46991,5

Bu kodu çalıştırmadan önce ve çalıştırdıktan sonra aşağıdaki satırı çalıştırmayı deneyin.

Kod:
printasc("")

Zaten bu tür buglar, eksikler biliniyor, sonraki CBM basic versiyonlarında bir kısmı fixlenmiş durumda. C64 için de basic'deki çeşitli bugları fixleyen patchler mevcut. Ben bu örnekleri bu yarışma süresince gözüme çarpan basic buglarından birkaçı olarak burada paylaşıyorum.


* fp_math_1.png (1.5 KB, 384x272 - Görüntüleme: 81 kez.)

* fp_math_2.png (2.45 KB, 384x272 - Görüntüleme: 78 kez.)

* fp_math_3.png (2.03 KB, 384x272 - Görüntüleme: 82 kez.)
Logged
maverick
Üye3
***
Mesaj Sayısı: 401



Üyelik Bilgileri
« Yanıtla #423 : Haziran 13, 2017, 07:55:16 ÖÖ »

Mükemmel bir kapışmaydı, heyecan ile izledik. Tebrik ediyorum.
« Son Düzenleme: Haziran 13, 2017, 17:52:55 ÖS Gönderen: maverick » Logged
wizofwor
Genel Yönetici
*****
Mesaj Sayısı: 3.673


Gosub ile gidilen yerden goto ile dönen adam


Üyelik Bilgileri WWW
« Yanıtla #424 : Ağustos 18, 2017, 18:35:52 ÖS »

@Skate ve delimawi:

Kazananı belirlemek için bir soru daha sormam gerekiyor ama vakit ayıramıyorum malesef. Elimde de ödül olarak verecek karttan iki adet var. İkinizinde acayip başarılı olduğunu ve bizlerin keyifle takip ettiği çözümler ürettiğinizi de göz önünde bulundurarak bu yarışmanın da iki galibi olsun diyorum. PM'den adreslerini gönderirseniz kartları göndereyim.
Logged

AmigaEsref
Üye4
***
Mesaj Sayısı: 2.026


love is better than


Üyelik Bilgileri WWW
« Yanıtla #425 : Ağustos 18, 2017, 19:08:23 ÖS »

Tebrikler
Logged

AMIGA 500 | GOTEK | 2.5 MB RAM | 1.3 ROM
AMIGA 1200 | 8GB HDD  | 3.1 ROM
wizofwor
Genel Yönetici
*****
Mesaj Sayısı: 3.673


Gosub ile gidilen yerden goto ile dönen adam


Üyelik Bilgileri WWW
« Yanıtla #426 : Aralık 12, 2017, 16:11:01 ÖS »

delimawi ve Skate: irqHack64'leriniz adres bilgisi bekliyor.
Logged

witchdoktor
Uzman
*****
Mesaj Sayısı: 3.978



Üyelik Bilgileri
« Yanıtla #427 : Aralık 12, 2017, 16:16:25 ÖS »

delimawi ve Skate: irqHack64'leriniz adres bilgisi bekliyor.

Sesin soluğun kesildi son aylarda...
Logged
wizofwor
Genel Yönetici
*****
Mesaj Sayısı: 3.673


Gosub ile gidilen yerden goto ile dönen adam


Üyelik Bilgileri WWW
« Yanıtla #428 : Aralık 12, 2017, 16:49:48 ÖS »

Çocuklu hayata adaptasyon süreci, iş yoğunluğu, evin eksikleri, vakitsizlik vb. üst üste gelince böyle oldu.

Logged

Sayfa: 1 ... 27 28 [29]   Yukarı git
Yazdır
Gitmek istediğiniz yer: