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] 30   Aşağı git
Yazdır
Gönderen Konu: C64 BASIC Kısa Kod Yarışması - irqHack64 Ödüllü  (Okunma Sayısı 233774 defa)
0 Üye ve 1 Ziyaretçi konuyu incelemekte.
eins
Uzman
*****
Mesaj Sayısı: 1.816


A.K.A. deliMawi


Üyelik Bilgileri
« Yanıtla #420 : Haziran 11, 2017, 23:05:46 ÖS »

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

Doberman ♦ megaOne ♦ HDMI-64 ♦ HDMI-520 ♦ NewSchool
Skate
Uzman
*****
Mesaj Sayısı: 1.479


A Sinner Scener


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

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.479


A Sinner Scener


Üyelik Bilgileri WWW
« Yanıtla #422 : Haziran 13, 2017, 04: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: 1623 kez.)

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

* fp_math_3.png (2.03 KB, 384x272 - Görüntüleme: 1624 kez.)
Logged
maverick
Deneyimli
*****
Mesaj Sayısı: 764



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

Mükemmel bir kapışmaydı, heyecan ile izledik. Tebrik ediyorum.
« Son Düzenleme: Haziran 13, 2017, 16:52:55 ÖS Gönderen: maverick » Logged

| Amiga 1200 | C= 64 | PS1 | PSone | Commodore Dergileri |
wizofwor
Genel Yönetici
*****
Mesaj Sayısı: 4.785


Gosub ile gidilen yerden goto ile dönen adam


Üyelik Bilgileri WWW
« Yanıtla #424 : Ağustos 18, 2017, 17: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
Genel Yönetici
*****
Mesaj Sayısı: 5.627


love is where you find it.


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

Tebrikler
Logged

AMIGA 500 | GOTEK | 1 MB RAM | 1.3 ROM | Pi Zero HDMI
AMIGA 1200 | 8GB CF | 3.2 ROM | TF1230 Turbo Kart | HDMI-520
COMMODORE 64 | IRQHack64 | KissCart64 | 64K CUPCAKE-CART | Pi 1541 | 1084 S
'Cause I'm CRT., I'm retro | CRT, and I'll win the fight | CRT, I'm a power load | CRT, watch me shine
wizofwor
Genel Yönetici
*****
Mesaj Sayısı: 4.785


Gosub ile gidilen yerden goto ile dönen adam


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

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

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



Üyelik Bilgileri
« Yanıtla #427 : Aralık 12, 2017, 15: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ı: 4.785


Gosub ile gidilen yerden goto ile dönen adam


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

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

Logged

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


A Sinner Scener


Üyelik Bilgileri WWW
« Yanıtla #429 : Eylül 16, 2022, 06:21:36 ÖÖ »

Aradan geçen yaklaşık 5 senenin sonunda Facebook'ta ekteki görsele denk geldim. Bunun üzerine hemen 5 sene önce yaptığımız basic yarışmalarını hatırladım ve "olmaz öyle 3 sayfa kod, abartmayın" diyerek şunu yazıp gönderdim.

Kod:
0w=320:b=12184:r=50:pO53265,59:pO53272,24:fOi=8e3to17e3:pOi,0:nE:fOa=0to9stE1/r
1?:x=b+r*cos(a):u=9-xaN7:y=r*sI(a):p=int(y/8)*w+(yaN7)+x+u:pOp,pE(p)or2^u:nE

Doğrudan Vice'a copy&paste edince çalışıyor ama PRG'yi de ekliyorum.


* c64_vs_speccy.jpg (110.97 KB, 1080x1397 - Görüntüleme: 325 kez.)
* circle.prg (0.14 KB - Yükleme: 148 kez.)
Logged
phoenix
Yönetici
*****
Mesaj Sayısı: 1.692



Üyelik Bilgileri
« Yanıtla #430 : Eylül 16, 2022, 11:07:19 ÖÖ »

Ödülü görünce bir heyecan oldu, ama kod yazamadığım aklıma gelince kaderimin akışına bıraktım kendimi Şu satırların da böyle güzel sonuçlar ortaya çıkartması çok mutluluk verici.
Logged
LW3D
Yönetici
*****
Mesaj Sayısı: 11.418


Günü Kurtaran Avam Hiooargggh :)


Üyelik Bilgileri WWW
« Yanıtla #431 : Eylül 17, 2022, 13:57:36 ÖS »

80'li yıllarda Almanyadan amcam geldiğinde, 64'er dergisi getirmesi için ısrar eder, dergi gelince herkesin yaptığı gibi, en ufak resmine, resimdeki bilgisayar ekranında yazana kadar okumaya çalışırdım...

Hiç unutmam 64'er bir sayısında oldukça karmaşık sanırım sinuslerden oluşan bir grafik vardı. Sinclair Spectrum'da bir kaç satırla yapılan işi 15-20 satırla yapıyordu ama denemeye karar verdim...Yazıp çalıştırdım...Ekran  silindi... Sonrasında bir şey olmadı Almancam da olmadığı için, bir şeyleri yanlış yaptım herhalde dedim... O sırada annem yemeğe çağırdı... Makina açık gittim... Geri geldiğimde grafiğin belki de 1/10'u ekrandaydı (belki daha azı) Program çalıştığı için sevinmiş, C64'de grafik çizmenin ağarlığıyla üzülmüştüm... Hakikaten Sinclair Basic'te yer alan komutlarla bir çember çizmek bu kadar kolayken, C64'de çizmenin bu kadar zor olması çok can sıkıcıydı. Neyse ki Simon's Basic çıkınca çember çizmek kolaylaştı - sanki çok işe yaramış gibi...

Bu nedenle paylaştığın kodu denedim skate. eline sağlık. Çok kısa bir kodla, çember çizdirmişsin. Ama C64'ün ağırlığına yapacak bir şey yok

https://c64emulator.111mb.de/index.php  Buradaki javascript emulatorde denenebilir.
 
Logged

emarti
Uzman
*****
Mesaj Sayısı: 2.590


Only Amiga Makes It Possible █


Üyelik Bilgileri WWW
« Yanıtla #432 : Eylül 17, 2022, 21:50:05 ÖS »

Evet Commodore 64'de oldukça zor ve karmaşıktı, basit bir şekil çizmek.

Lise başlarında idi bilgisayarcıda oyun listelerine ait dosyayı karıştırırken, biri çocuğu için ders disketi var mı diye sordu? Ben şaşkın halde "lise için matematik, fizik var mı dedim". Kopyalattım. İsmini hatırlamıyorum ama konu anlatımı ve soru içeriyordu.

Şaşkınlığım soru ekrana basılıp; şekiller hızlı şekilde çiziliyordu. O vakte kadar BASIC ile uğraşmış biri için süperdi. Daha da garibi RUNSTOP/RESTORE ile BASIC ekranına düşülüyor ama Spectrum'daki gibi bir karakter seti ile. LIST komutu ile de C64'te olmayan başka komutlar ile karşılaşmak daha da sürpriz oldu. COLOR, BORDER, CIRCLE, LINE, PLOT vb.

Birkaç deneme uygulama yaptığımı hatırlıyorum. Eksi yanı hali ile önce bu dersi yükleyip sonra bu komutları içeren uygulamayı da sonradan yüklemek gerekiyordu. Farklı bir deneyimdi. Sonraları Commodore dergisinin döküm eklerinden BASIC'e komut eklemek falan öğrensek de hız açısından Assembler > BASIC olduğundan pek önemi kalmamıştı.
Logged

https://github.com/emartisoft My GitHUB | http://csdb.dk/scener/?id=26786 My CSDB | https://c64kernal.com Genesis

READY.
SYS(64767): EMARTI
fort_apocalypse
Uzman
*****
Mesaj Sayısı: 4.054



Üyelik Bilgileri WWW
« Yanıtla #433 : Eylül 17, 2022, 22:09:09 ÖS »

Aslında oyun grafiklerini karşılaştırınca commodore64 spectrumdan uzak ara önde.
Commodore 64, kendi döneminde, BASIC dilinde zayıf olsa da makina dilinde rakipsiz bir cihaz.
Logged

Voltron
Uzman
*****
Mesaj Sayısı: 2.202



Üyelik Bilgileri
« Yanıtla #434 : Eylül 17, 2022, 23:48:48 ÖS »

C128 Basic 7.0 da CIRCLE, DRAW vb. var.

C64'e port edilmiş bir C128 BASIC 7.0 rom denediğimi hatırlıyorum. Ama bulamadım tekrar. Hatırladığım kadarı ile sadece BASIC düzgün çalışıyordu. disk drive ve/veya dataset'i kullanamıyordu o rom ile, ayrıca renk paleti ile ilgili bazı problemler de vardı galiba.
Logged

Metal grupları çok bağırıyor. haklıyken haksız duruma düşüyorlar...
Sayfa: 1 ... 27 28 [29] 30   Yukarı git
Yazdır
Gitmek istediğiniz yer: