Gönderen Konu: Zx Spectrum IDE Basinc Güncellemesi  (Okunma sayısı 49818 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı Ref

  • Yönetici
  • Özgür Retrocu
  • *
  • İleti: 2882
  • Advanced User Simulator
    • ae unutmadan
Zx Spectrum IDE Basinc Güncellemesi
« : 03 Temmuz 2014, 03:22:12 »
bilmiyorum kaç kişi zx spectrum programlama ile uğraşıyor ama 2011'den beri üzerinde çalıştığım Basınç'in yeni sürümünü bugün çıkarttım. Aslında 1 yıldır klasörümde duruyordu ama anladım ki daha fazla vakit ayırmam mümkün olmayacak. Neyse, içerdiği yeniliklerin başlıcaları şunlar:

Kod hizalama
UlaPlus çipi desteği
Kozmetik düzenlemeler
Bazı ayrıştırma hataları
Kolayca kaset kaydı için dosya menüsüne export tap seçeneği
ulaplus renk paleti düzenleyici
8 örnek basic program
İngilizce ve Türkçe'nin yanında yeni İspanyolca dil desteği
onlarca minik hata








Download (3.8MB Zip)


Çevrimdışı wizofwor

  • RAAT
  • Tedavideki Retromanik
  • *
  • İleti: 398
Ynt: BasinC 1.69 çıktı!
« Yanıtla #1 : 03 Temmuz 2014, 10:43:27 »
Biraz geri bildirim yapayım:

-Program AMD ilemcili 64bit Win8 bilgisayarımda ilk çalıştığında çakıldı. Sonrasında sorunsuz çalıştı.
-Example klasöründen 3D Field.BAS'ı açtığımda acayip bir uyarı verdi. Spectrum özürlü biri olarak "Sucsessfull completion or jump to a line number bigger than existing." diye devam eden bu mesaj iyi bir şey mi, kötü bir şey mi, onu bile anlamadım. Mesajlar biraz daha açıklayıcı olsa daha iyi olur. Mesela önce bold olarak ayrı bir satırda Sucsessfull completion yazsa diğer açıklamar alt satırda olsa.
- Speccy fontlarıyla çalışmak hoşuma gitmedi. Font değiştirmek istedim ama menü biraz karışık olmuş. Sadece kendi fontları TTF desteği de yok galiba.

Örnek kodlar da sana mı ait? Hepsine bakmadım ama 3B labirent oyunu hoşuma gitti.

bilmiyorum kaç kişi zx spectrum programlama ile uğraşıyor ama ...

Network programlama konusundaki bilgim sıfırın altında sayılır ama programın başlangıcına bir ufak bir kod yerleştirerek her program her açıldığında kendini pinglesen? Her çalıştığında tarih-saat ve ip bilgisini loga yazan basit bir php betiğiyle bu sorunun cevabını öğrenebilirsin. Ama cevap hoşuna gitmeyebilir. Ignorance is bliss!
Gosub ile gidilen yerden goto ile dönen adam

Çevrimdışı Ref

  • Yönetici
  • Özgür Retrocu
  • *
  • İleti: 2882
  • Advanced User Simulator
    • ae unutmadan
Ynt: BasinC 1.69 çıktı!
« Yanıtla #2 : 03 Temmuz 2014, 14:28:29 »
Example klasöründen 3D Field.BAS'ı açtığımda acayip bir uyarı verdi. Spectrum özürlü biri olarak "Sucsessfull completion or jump to a line number bigger than existing." diye devam eden bu mesaj iyi bir şey mi, kötü bir şey mi, onu bile anlamadım. Mesajlar biraz daha açıklayıcı olsa daha iyi olur.

Mesela önce bold olarak ayrı bir satırda Sucsessfull completion yazsa diğer açıklamar alt satırda olsa

Aslında o pencerede hiçbir hata yok, ama iyi tasarlanmamış olabilir evet. Bunu bir düşüneceğim.

Sinclair Basic'de 38 adet bildirim var, bunlar 0..9,A..R harfleri ile kodlanmış durumda. O kodlardan ilki:
Yani sıfırıncısı, "O.K." -- Yani sorun yok, program hatasız tamamlandı anlamına gelen 0: OK kodu.
Bu kodun kullanım kılavuzundaki karşılığı ise:
"Successful completion, or jump to a line number bigger than any existing. This report does not change the line and statement jumped to by CONTINUE."
yani
"Başarıyla sona ulaşma, ya da var olan en büyük satır numarasından daha ileriye zıplama." Yani verdiğin komut başarı ile işletildi diyor. Ama hangi komut? LOAD "" komutu. Bu da nerden çıktı? File > Open... yaptın ve bir BAS dosyası seçtin. Ama unutma ki Basinç bir emülatör. Düşün ki c64 vice'ı almışsın, üzerine bir frontend geçirmişsin. Böylece normalde klavyeden yapman gereken şeyleri mouse ile yaptıran, teyp ile yapman gereken şeyleri dosya sistemine uyarlayan bir frontend. Basınç'ın altında Zx Spin isminde bir emülatör yatıyor aslında.

Sen bir bas dosyası seçtiğinde, o dosya Basınç tarafından önce tokenize ediliyor. Sonra bir teyp (tap) dosyası haline getiriliyor. Sonra sanki biri klavyeden LOAD"" yazıp enter'a basmış gibi bir simülasyon yapılıyor. Sonra zx spectrum ROM'u teypten yükleme yapmaya başlıyor. Basınç bu ROM alanını trap'leyerek normalde mic girişinden bir ses dosyası giriyormuş gibi hazırladığı tap dosyasını akıtıyor. Spectrum teypten yükleme yaptığını sanıyor. (Bu durumu daha iyi anlamak için şu programı basinç'a yaz ve çalıştır: 10 LOAD ""  Program başladığında ROM'daki LOAD rutinleri basınç tarafından traplenerek dosya açma penceresi gösterilecek.) Sonunda basic programı zx spectrum'a yüklenmiş oluyor. Ve rom'daki LOAD komutu başarı ile sona eriyor. Ve işte bu anda sinclair basic, büyük bir gururla 0: OK, 0:1  (0= mesaj kodu, "OK"=mesaj açıklaması, 0:1= sıfırıncı satırın birinci komutu) göstermeye kalkışıyor. Bu sırada Basınç yine bu alanı trapliyor, o mesaj gösterilmeden önce bir pencere oluşturuyor, pencerenin başlığı yukarıdaki mesaj. Pencere içeriği kullanma kılavuzundaki bilgiyle dolduruluyor. "Situation", kullanıcıya yardımcı ekstra bilgiler sunuyor. Eğer bu bir hata kodu olsaydı daha çok bilgi alacaktın. Altta bir "notify this error" seçeneği var, bunu temizlersen birdaha "0" kodlu mesajlar traplenmez. Yardım butonu detaylı bilgi sunuyor. Ok ile pencereyi kapatabilirsin.

Ama bu sende bir probleme yol açtıysa, sanırım tape yüklemesinden sonra OK mesajının görünmemesi için bir ince ayar geçmeliyim. Sanki programla ilgili bir sorun var gibi algılanmış, halbuki bu bir "tamam, sorun yok" mesajıydı.

Alıntı
Sadece kendi fontları TTF desteği de yok galiba.

Evet ttf desteği yok. Bu mecburi bir tercih, çünkü bu bilgisayarların 'basic'leri acaip karakterler basabiliyor, c64'de kupa, maça vs. gibi acaip karakterler vardı, c64'de onlar düzenleyebiliyormusunuz bilmiyorum ama, sinclairde de 21 adet düzenlenebilir UDG, 10 adet ROM grafik blok mevcut. Bunları string olarak sık sık kullanmak gerekiyor, özellikle sadece basic kullanarak birşeyler yapmanız gerektiğinde.



Sadece bu sebepten TT font kullanmak bir dez avantaj oluyor. Evet ben de sık sık düşünüyorum, bu grafik işini başka bir şekilde halletmeye çalışıp tt editör mü yazsam diye ama, belki başka bir hayatta olabilir :D

Alıntı
programın başlangıcına bir ufak bir kod yerleştirerek her program her açıldığında kendini pinglesen?
güzel fikir ama kimse takip edilmek istemiyor. :) Kullanıcıya sormadan böyle birşey yapmak illegal. O zaman herkes opt-out edeceği için uğraştığıma değmez :D



Bu arada, senin c64 asm kullandığını bildiğim için söylüyorum, basınç' dahilinde bir asm editörü ve derleyicisi mevcut. Bazı fonksiyonları eksik olsa da, tamamen çalışır durumda. Ufak rutinleri yazmak için kullanılabilir. Örneğin hızlı ekran sildirme vs gibi. Direk hafızaya derleyip emülatörün infinite loop'a düşme tehlikesi olmadan kullanılabilir. Basınç'da başka emülatörlerde olmayan "Force BREAK" özelliği var, bu menü seçeneği CPU'yu yaptığı işten alı koyup, basic alanına sağ sağlim geri dönmesini sağlıyor (tabii basic'i corrupt etmediyseniz)

Çevrimdışı wizofwor

  • RAAT
  • Tedavideki Retromanik
  • *
  • İleti: 398
Ynt: BasinC 1.69 çıktı!
« Yanıtla #3 : 03 Temmuz 2014, 16:13:10 »
Uyarı mesajındaki durumun acayipliğinden işin içinde başka bir şeyler olduğunu sezmiştim zaten. Kullanım kılavuzundaki açıklamayı orada tutmak iyi bir fikir. Yine de önerim uyarı mesajına "Loading OK" tarzında bir açıklama ekleyebilirsin. Tabi gerçek bir Spectrum kullanıcısı olsaydım belki de bunları hiç yadırgamayacaktım, alışık olacaktım bilemiyorum. Sadece 0 kodu için mesaj göstermemek de pratik bir çözüm olabilir.

Aslında yapmakta olduğun iş için oldukça garip bir yol seçmişsin. c64 dünyasında bu iş biraz farklı yapılıyor. BASIC programı txt girdiyi C64 Basic formatında 'tokenize' eden petcat aracıyla prg haline getiriliyor. Prg esasında başlangıç adresini belirten iki byte eklenmiş bir raw bir dosya olduğu için, bu dosyayı yükleyince Basic programı hafızaya yerleşmiş oluyor. Yani programı hafızaya yükleme işini doğal yollarla değil bir nevi ters sezeryanla yapıyoruz.

Alıntı
c64'de kupa, maça vs. gibi acaip karakterler vardı, c64'de onları düzenleyebiliyormusunuz bilmiyorum ama, sinclairde de 21 adet düzenlenebilir UDG, 10 adet ROM grafik blok mevcut. Bunları string olarak sık sık kullanmak gerekiyor, özellikle sadece basic kullanarak birşeyler yapmanız gerektiğinde.

C64'de tüm ROM alanları kapanabilir olduğu, için yeniden düzenlenemeyen hiç bir şey yok gibi. Font konusunda print komutuyla beraber kullanılan özel karakterler sorun çıkartıyor. Bunun da çözümünü tag sisteminde bulmuşlar. Petcat ile kullanılan tagleri aşağı kopyaladım.

Kod: [Seç]
<wht> <dish> <ensh> <swlc> <down> <rvon> <home> <del> <esc>
<red>  <rght>  <grn>  <blu> <orng> <F1> <F3> <F5> <F7> <F2>
<F4> <F6> <F8> <sret> <swuc> <blk> <up> <rvof> <clr> <inst>
<brn>  <lred>  <gry1>  <gry2>  <lgrn>  <lblu>  <gry3> <pur>
<left> <yel> <cyn>

Tabi bu patcat, tag sistemi falan çapraz geliştirme ortamının getirdiği olgular. Sen en başta sistemini çok daha özgün bir şekilde spectrum basic benzetimi yapmak üzerine kurduğun için çok daha farklı bir noktaya ulaşmışsın. 

Alıntı
programın başlangıcına bir ufak bir kod yerleştirerek her program her açıldığında kendini pinglesen?
güzel fikir ama kimse takip edilmek istemiyor. :) Kullanıcıya sormadan böyle birşey yapmak illegal. O zaman herkes opt-out edeceği için uğraştığıma değmez :D

Eğer niyeti bozduysan 'Bir güncelleme var mı diye bakıp, hemen çıkacağım abi.' bahanesinin arkasına saklanabilirsin. Bu numarayla servis kuran adamlar var. (bkz: google updater service)

Son olarak bir not: İlk başta atlamış olduğum formatted listing özelliği çok sevdim. Keşke vBasic'te de böyle bir şey olsa.
Gosub ile gidilen yerden goto ile dönen adam

Çevrimdışı Ref

  • Yönetici
  • Özgür Retrocu
  • *
  • İleti: 2882
  • Advanced User Simulator
    • ae unutmadan
Ynt: BasinC 1.69 çıktı!
« Yanıtla #4 : 04 Temmuz 2014, 12:48:34 »
BASIC programı txt girdiyi C64 Basic formatında 'tokenize' eden petcat aracıyla prg haline getiriliyor. Prg esasında başlangıç adresini belirten iki byte eklenmiş bir raw bir dosya olduğu için, bu dosyayı yükleyince Basic programı hafızaya yerleşmiş oluyor.

Aaah, ama basinc bir tokenizer'dan çak fazlasını yapmak için yazıldı :D Debugger, profiler falan var içinde. Programı step step takip edebiliyorsun mesela. Yani doğal emülasyon üzerinde bayağı kontrollü programlama yapabiliyorsun. Tüm hafıza elinin altında, yani çok rahat bir çalışma ortamı.


Profiler



Çevrimdışı wizofwor

  • RAAT
  • Tedavideki Retromanik
  • *
  • İleti: 398
Ynt: BasinC 1.69 çıktı!
« Yanıtla #5 : 04 Temmuz 2014, 13:38:53 »
Yanlış anlaşma olmasın Petcat'i örnek vermekteki amacım yoğurt yiyişini eleştirmek değil. Hatta veriyi rom rutinine teypten geliyormuşçasına akıtma fikri çok hoşuma gitti. Profiler özelliğinden haberim yoktu ama bunu arka planda emulatör çalıştırmadan yapmanın yolları da var. Hem biz komodorcular Basic'le yazılmış şeyleri pek fazla optimize etmeyiz. Sonuçta Basic ASM öğrenene kadar idare etmesi için konulan bir şeydir.
Gosub ile gidilen yerden goto ile dönen adam

Çevrimdışı Ref

  • Yönetici
  • Özgür Retrocu
  • *
  • İleti: 2882
  • Advanced User Simulator
    • ae unutmadan
Ynt: BasinC 1.69 çıktı!
« Yanıtla #6 : 04 Temmuz 2014, 15:00:33 »
Yanlış anlaşma olmasın Petcat'i örnek vermekteki amacım yoğurt yiyişini eleştirmek değil.

Yok zaten, o konuda bir problem yok, kaldı ki spectrum için ilk yapılmış programlardan biri basToBin ve basToTap idi. Yani zaten bu seçenekler mevcut. Hatta zamanında tommygun basic highligher falan desteği de sunuyordu. Ama bu sistemlerin hiçbiri basinç kadar elastik değil. Basinç bir isviçre çakısı, sinclair basic programlama için kullanılacak en süper çözüm. Sadece basic yapıyorsanız basinç bir mercedes konforu yaşatır adama :D Ama halen bir sinclair kullanıyor oluyorsunuz.

Zaten amaç pc ortamında geliştirme yapmaksa, Boriel's Basic diye bir compiler var, yazdığınız programları direk asm yapıyor ve çok optimize, ustalıkla yazılmış bir PY tabanlı compiler. Ona da bir bakın, sinclair'den anlamanıza gerek yok, jenerik bir dil. http://www.boriel.com/en/software/the-zx-basic-compiler/

Çevrimdışı wizofwor

  • RAAT
  • Tedavideki Retromanik
  • *
  • İleti: 398
Ynt: BasinC 1.69 çıktı!
« Yanıtla #7 : 04 Temmuz 2014, 16:11:50 »
Bu spectrum camiasındaki programların isimleri de pek bir hoşmuş canım. BasınC'ı istisnai bir harf oyunu olarak düşünmüştüm ama basToBin ve basToTap'da fonetik açıdan oldukça eğlenceli isimlermiş. Sanıyorum Spectrumcuların neşeli tipler olmasından kaynaklanıyor. Aslında BasınC'in İngilizce nasıl telaffuz edileceğinden de emin değilim. How to pronounce BasinC diye video hazırlayım youtube'a yüklemeyi düşünmez miydin?

Bir de şurada taş atmıştım ama denk getiremedim sanırım:

Sonuçta Basic ASM öğrenene kadar idare etmesi için konulan bir şeydir.
Gosub ile gidilen yerden goto ile dönen adam

Çevrimdışı Ref

  • Yönetici
  • Özgür Retrocu
  • *
  • İleti: 2882
  • Advanced User Simulator
    • ae unutmadan
Ynt: BasinC 1.69 çıktı!
« Yanıtla #8 : 04 Temmuz 2014, 17:36:03 »
Sonuçta Basic ASM öğrenene kadar idare etmesi için konulan bir şeydir.
HAhaah, Eskiden evet, ama artık basic is for leisure diyorum ben :D

Çevrimdışı gibraltar

  • Retro Meraklısı
  • ***
  • İleti: 158
Ynt: BasinC 1.69 çıktı!
« Yanıtla #9 : 10 Temmuz 2014, 03:36:19 »
Sonuçta Basic ASM öğrenene kadar idare etmesi için konulan bir şeydir.
HAhaah, Eskiden evet, ama artık basic is for leisure diyorum ben :D

Konuyla pek alakalı değil ama aşağıdaki eleman qbasic'le 2014 model NES emulatoru yazmış.
Gerçi kanalında paylaştığı video gösterilerine bakınca pek normal bir arkadaşımız olmadığı hemen anlaşılıyor...

https://www.youtube.com/watch?v=ZXwARLpA5aA
Bilgehan Korkmaz

Çevrimdışı wizofwor

  • RAAT
  • Tedavideki Retromanik
  • *
  • İleti: 398
Ynt: BasinC 1.69 çıktı!
« Yanıtla #10 : 10 Temmuz 2014, 11:03:05 »
Yapılabileceğini göstermek için yazmış ama performans yerlerde sürünüyor. Hoplaya zıplaya çalışıyor emulatör. Aynı adamın C++ ile yazdığı NES emülatör videosuyla karşılaştırırsan fark görülüyor zaten.

Basic bizim zamanımızda bilgisayar öğrenmek için müthiş bir araçtı. Bilgisayar okur yazarlığı kavramının içinden programlama çıktıktan sonra BASIC'de boşa çıkmış oldu. Visual Basic for Applications'ı kullanıyorum ve power user'lar için güzel bir araç olduğunu düşünüyorum. Biraz iddialı olacak ama VB ile performans öncelikli bir iş bence yapılmamalı. İşi daha az adam/saat harcayarak kotarmak için tercih edilebilecek bir araç olarak düşünüyorum. Yanlışsam kafama vurabilirsiniz.
Gosub ile gidilen yerden goto ile dönen adam

Çevrimdışı Ref

  • Yönetici
  • Özgür Retrocu
  • *
  • İleti: 2882
  • Advanced User Simulator
    • ae unutmadan
Ynt: BasinC 1.69 çıktı!
« Yanıtla #11 : 11 Temmuz 2014, 10:29:51 »
https://www.youtube.com/watch?v=_mH2wYwm-ks

Sinclair basic ile yazılmış bir space invaders emülatörü.

Simülatör değil, emülatör.


Çevrimdışı witchdoktor

  • RAAT
  • Normalleşmiş Retroman
  • *
  • İleti: 757
Ynt: BasinC 1.69 çıktı!
« Yanıtla #12 : 11 Temmuz 2014, 14:55:55 »
BASIC ile yapılabilecek en güzel programlama deneyimi, bir BASIC Compiler yazıp kendisini derlemektir herhalde. Bir şeyleri BASIC ile yapabilmek de ciddi bir 'challenge' olduğundan, yapabildiğinizde farklı bir keyif alıyorsunuz. Günümüzde insanların BASIC ile haşır neşir olamamaları büyük kayıp bence. RasPi gibi cihazların bir 'nerd' cihazı olmaktan öteye gidememesi, başlangıçta ortaya atılan hedefleri de sorgulatıyor aslında. RasPi gibi cihazların BASIC gibi basit ve standart bir programlama aracı ile sunulmaları güzel olurdu.

Çevrimdışı wizofwor

  • RAAT
  • Tedavideki Retromanik
  • *
  • İleti: 398
Ynt: BasinC 1.69 çıktı!
« Yanıtla #13 : 11 Temmuz 2014, 18:22:30 »
Sorun işin içine gui girince basit diye bir şey kalmaması bence. Guiyle beraber mecburen olaylar ve nesneler de giriyor ve iş karışıyor. Bu konuda Small Basic bence güzel bir adımdı ama tutmadı nedense.
Gosub ile gidilen yerden goto ile dönen adam

Çevrimdışı CapedCrusader

  • Retromanik
  • *****
  • İleti: 7
Ynt: BasinC 1.69 çıktı!
« Yanıtla #14 : 03 Ağustos 2014, 07:47:45 »
Tebrikler. Guzel bir program.