commodore.gen.tr

Commodore => Commodore Yazılım => Konuyu başlatan: EMREZ üzerinde Ekim 28, 2006, 12:41:39 ÖS



Konu Başlığı: c64 te load edilen programı nasıl list ederiz?
Gönderen: EMREZ üzerinde Ekim 28, 2006, 12:41:39 ÖS
c64 te load edilen programı nasıl list ederiz arkadaşlar genelde yüklemeden sonra oyunlar ve programlarda yüklenen programı listeleyemiyorduk bunun bir yolu varmı?


Konu Başlığı: Ynt: c64 te load edilen programı nasıl list ederiz?
Gönderen: kaplan135 üzerinde Ekim 28, 2006, 22:44:34 ÖS
gerek yok
list etsen sadece 1 satır sys 2060 vaya neyse
sys 2060 yazıyon başlıyon bu kadan bi işe yaramıyo list etsende basic bilgine gerek var artı bazı proğramlar korumalıdır makina dilinde kotlamaayı biliorsan ki bu imkansızdır oyunu çalıştıramazsın bi işe yaramaz load etsin yükle oyna


Konu Başlığı: Ynt: c64 te load edilen programı nasıl list ederiz?
Gönderen: LW3D üzerinde Ekim 28, 2006, 22:58:06 ÖS
C64'de yüklenen oyunlar makina dilinde ya da başka bir değişle assembler ile yazılmış oyunlardır. Bu nedenle sadece bir satırdan oluşan bir liste ile karşılaşılır. Oyunun kendisi hafızadadır ve başlangıç adresinin tetiklenmesi gerekmektedir. O tetik işleminide LIST dediğimizde görünen ve genelde "10 SYS 2xxx" vb. satır başarır. Anlamı decimal olarak 2xxx adresindeki kodu çalıştırdır ve oyun çalışır.

Kısacası LIST komutuyla liste göremeyiz, çünkü ortada Basic dilinde yazılmış bir program yoktur. Basic dilinde olan sadece tetiklemeyi yapan satırdır. Makina dilinde ya da assemblerda yazılan kodları incelemek için ise dissassembler programları ya da monitor programları sağlar.

Benim bilgilerim bu şekilde. Belki yanlış eksik yerler vardır. Diğer arkadaşlar düzeltirse sevinirim..

Not: Peek, Poke komutlarıyla hafızayı okumak ve anlamlı sonuçlar üretmekte mümkün. Mesela oyundaki ingilizce bölümleri Türkçeye çevirmek gibi :) O zamanlar az hava atmamıştık. Bir ara bu konuya bir değiniriz..



Konu Başlığı: Ynt: c64 te load edilen programı nasıl list ederiz?
Gönderen: vigo üzerinde Ekim 29, 2006, 01:59:17 ÖÖ
basic haricindeki hiç bişeyi LIST edemezsin...
0 SYS 49152

gibi bişi görürsen bu $C000 adresine git anlamına gelir.
kartuş'un var ise ve assembler biliyorsan, program run edildikten sonra, reset atarak hafızaya dalabilirsin. tabi o run ettiin program RESET VECTOR'ü kullanıp buna engel olmuyorsa...


Konu Başlığı: Ynt: c64 te load edilen programı nasıl list ederiz?
Gönderen: zombi üzerinde Mayıs 01, 2007, 16:10:47 ÖS
Ben bilmiyor olabileceğini düşünerek temel bir bilgi vereyim.

C64'de datasettlen yüklediğin programlar otomatik run edilir. Eğer ilgili interput kapatılmadıysa stop tuşuyla çalışmayı durdurabilirsin. List çekebilirsin ama arkadaşların dediği gibi bir satırlık bir BASIC kodu ancak görürsün.

Küçüklüğümde her oyunu durdurmaya çalışırdım. Stop'la durup da list edince basic kodu veren sadece iki oyuna rastlamıştım.

Eğer oyunları disketten yüklersen otomatik run etmez. Ama değişen birşey yok yine basic kodu yoktur.


Konu Başlığı: Ynt: c64 te load edilen programı nasıl list ederiz?
Gönderen: Arda üzerinde Mayıs 02, 2007, 14:07:38 ÖS
Eğer oyunları disketten yüklersen otomatik run etmez. Ama değişen birşey yok yine basic kodu yoktur.

Bunu da dün öğrendim, disketten yüklenen programı otomatik run etmenin hiçbir yolu yok mu peki?

Mesela, programı sistem değişkenlerinin üzerine yükleyerek bilgisayarın işleteceği bir sonraki instructionı programın başladığı yere yöneltmek mümkün değil mi?


Konu Başlığı: Ynt: c64 te load edilen programı nasıl list ederiz?
Gönderen: LW3D üzerinde Mayıs 02, 2007, 14:13:23 ÖS
bende ne numaralar vardı yahu :) ama hepsini unuttum. Oyunları göya kırardım..kopyalardım..

Arda: yükleme komutunun sonuna :RUN gibi bir ek koyarsan otomatik çalışması lazım :) Hiç disket sürücüm olmadı , senin sorduğunda bu değildir ama olsun :D


Konu Başlığı: Ynt: c64 te load edilen programı nasıl list ederiz?
Gönderen: zombi üzerinde Mayıs 02, 2007, 16:03:53 ÖS
Şöyle bir trik düşünebiliriz. Programı veya oyunu kendimize özel bir algoritma ile crunch edersek, decruncher'ı da programın kodundan ayırıp bir loader ile birleştirsek.

Program direkt yüklenirse çalışmaz. Loader yüklenip run edildikten sonra programı yükler, decrunch eder sonra da çalıştırır. Nasıl?

Sallıyorum! Yanlışım varsa, forumdaki scenerlar düzeltsin...


Konu Başlığı: Ynt: c64 te load edilen programı nasıl list ederiz?
Gönderen: Arda üzerinde Mayıs 02, 2007, 19:48:05 ÖS
yok, C64 Basic'in sonraki statement'ı takip eden bir sistem değişkeni ya da program counter'ı falan var ise, diskette kayıtlı bilgi de sonraki statement'ı düzenleyen bir data ise, ve dolayısıyla yükleme bitince sıradaki komuta atlanacağı için otomatik olarak programın başladığı noktaya yönlendirilse, olmaz mı acaba?


Konu Başlığı: Ynt: c64 te load edilen programı nasıl list ederiz?
Gönderen: murmuro üzerinde Mayıs 02, 2007, 20:45:22 ÖS
disketten yüklenen oyunun otomatikman run olması için komutun sonuna ",1" gibi bişey yazılıyodu galiba yanlış hatırlamıyorsam eğer.


Konu Başlığı: Ynt: c64 te load edilen programı nasıl list ederiz?
Gönderen: nightlord üzerinde Mayıs 02, 2007, 21:46:53 ÖS
yok, C64 Basic'in sonraki statement'ı takip eden bir sistem değişkeni ya da program counter'ı falan var ise, diskette kayıtlı bilgi de sonraki statement'ı düzenleyen bir data ise, ve dolayısıyla yükleme bitince sıradaki komuta atlanacağı için otomatik olarak programın başladığı noktaya yönlendirilse, olmaz mı acaba?

GEOS bunu yapabiliyordu diye hatirliyorum. yani disketten GEOS yuklemeye baslardiniz ve kendisi direk calisirdi


Konu Başlığı: Ynt: c64 te load edilen programı nasıl list ederiz?
Gönderen: AmigAmigA üzerinde Mayıs 02, 2007, 22:01:03 ÖS
load"xxx",8,1
Buradaki 1 run komutu yerine geçiyor bende öyle biliyorum
1'i yazmazsanız program yüklendikten sonra 'Ready.'de bekliyor.



Konu Başlığı: Ynt: c64 te load edilen programı nasıl list ederiz?
Gönderen: zombi üzerinde Mayıs 03, 2007, 07:56:48 ÖÖ
Benim bildiğim 1 dosyayı okuma amaçlı açtığınızı gösteriyor. Basic kitabı olsa idi elimde ne iyi olurdu.

1 okuma(read), 2 yazma(write), 3 ekleme yapmak(modify) olarak kalmış aklımda. 


Konu Başlığı: Ynt: c64 te load edilen programı nasıl list ederiz?
Gönderen: Skate üzerinde Mayıs 04, 2007, 00:47:29 ÖÖ
load"xxx",8,1

programı yükler ancak run etmez, yine basic'den "run" yazmak gerekir. autorun için bu satırın sonunda return'e basmak yerine shift+runstop'a basmanız gerekir. böylece yükleme bittikten sonra program otomatik run edecektir.


Konu Başlığı: Ynt: c64 te load edilen programı nasıl list ederiz?
Gönderen: Silencer üzerinde Mayıs 04, 2007, 22:36:23 ÖS
Alıntı
shift+runstop

Bu trick ile oyun yüklemeyi bilmeyen commodore'cu da sanırım yoktur ;)


Konu Başlığı: Ynt: c64 te load edilen programı nasıl list ederiz?
Gönderen: MagicAmiga üzerinde Mayıs 04, 2007, 23:18:54 ÖS
vallahi ben vardım :D :D heheheh


Konu Başlığı: Ynt: c64 te load edilen programı nasıl list ederiz?
Gönderen: Silencer üzerinde Mayıs 04, 2007, 23:19:49 ÖS
 :D :D


Konu Başlığı: Ynt: c64 te load edilen programı nasıl list ederiz?
Gönderen: zombi üzerinde Mayıs 04, 2007, 23:37:52 ÖS
eee itiraf ediyorum, ben sol ayağımın baş parmağı ile once shift-lock'a sonra run'a basar sonra shift-lock'u açardım.

Ama ne yapayım oturduğum yerden uzanmak zor geliyordu ve tembel bir çocuktum :-[


Konu Başlığı: Ynt: c64 te load edilen programı nasıl list ederiz?
Gönderen: Arda üzerinde Mayıs 05, 2007, 00:47:53 ÖÖ
load"xxx",8,1

programı yükler ancak run etmez, yine basic'den "run" yazmak gerekir. autorun için bu satırın sonunda return'e basmak yerine shift+runstop'a basmanız gerekir. böylece yükleme bittikten sonra program otomatik run edecektir.

Hah tamam sen deyince hatırladım bak :P


Konu Başlığı: Ynt: c64 te load edilen programı nasıl list ederiz?
Gönderen: witchdoktor üzerinde Mayıs 05, 2007, 02:05:39 ÖÖ
load"xxx",8,1

programı yükler ancak run etmez, yine basic'den "run" yazmak gerekir. autorun için bu satırın sonunda return'e basmak yerine shift+runstop'a basmanız gerekir. böylece yükleme bittikten sonra program otomatik run edecektir.

Hah tamam sen deyince hatırladım bak :P

Yaw, şu anda detayları tam hatırlayamıyorum, hatırlayabilen bir arkadaş varsa açıklamasını dinlemekten memnuniyet duyarım.

Datasette'den yüklenen programların hemen hepsi SHIFT+RUNSTOP (yani LOAD sonrasında otomatik olarak verilen RUN komutu) kullanılmasa bile autorun ediyordu (ki çoğu tape turbo kullanmaktaydı). Sanırım ilgili vektörlerin üzerine yükleniyordu ve bu şekilde autorun yapıyordu. Detayları bilen?

Disket sürücüden yüklenen programların %99'unda autorun yoktu. Neden kasetten yüklenen oyunlarda olduğu gibi autorun kullanılmıyordu? GEOS gibi bazı nadir programlar autorun edebiliyordu, demek ki bu mümkündü. Bu konuda açıklaması olan?

NOT: Autorun ile otomatik boot'u kastetmiyorum (C128'de, floppy boot sektöründe CBM80 kodu ile otomatik açılış yapılması vb bir durum değil yani). Yükleme komutu verilen bir programın otomatik olarak çalışmasını kastediyorum.


Konu Başlığı: Ynt: c64 te load edilen programı nasıl list ederiz?
Gönderen: LW3D üzerinde Mayıs 05, 2007, 11:18:26 ÖÖ
Datasette'den yüklenen programların hemen hepsi SHIFT+RUNSTOP (yani LOAD sonrasında otomatik olarak verilen RUN komutu) kullanılmasa bile autorun ediyordu (ki çoğu tape turbo kullanmaktaydı). Sanırım ilgili vektörlerin üzerine yükleniyordu ve bu şekilde autorun yapıyordu. Detayları bilen?

Datasetten yuklerken Turbolu oyunların eğer kendinden turboluysa dediğin gibi otomatik olarak çalışıyordu. LockyJR, ya da LuckyJr adında bir program vardı. kasete atarken bunla atılır ve bunla atılan oyunlar renkli şeritler çıkararak yükler ve otomatik çalışırdı. Sonra ben :) unlokyjr diye bişey bulmuştum. Onunla bu oyunları otmatik run etmeden durdurabiliyordum.

Birde turbosu kasetin başında olanlar vardı. hani <-L komutuyla yüklediğimiz (umarım yanlış hatırlamıyorum. Kasetin başında turbo yüklerdik, sonra oyuna gidip bu komutla yükleme yapardık sanırım :) Yaşlanmışız hakikaten. Onlarda ise otomatik RUN olmazdı. Dediğim gibi komutun sonuna ben :RUN yazardım.. Otomatik çalışırdı.

Bunun dışında turbosuz kaset oyunları ya da açık oyunlar LOAD yazılıp, Return tuşlarına basılarak yüklenirse ayrıca RUN yazmak gerekirdi. Ama Shift+Runstop ile yüklenirse aynı oyun otomatik çalışırdı.


Konu Başlığı: Ynt: c64 te load edilen programı nasıl list ederiz?
Gönderen: juda üzerinde Mayıs 05, 2007, 11:53:37 ÖÖ
istek üzerine olaya son noktayı koymaya geldim :)
oyunların çok küçük bir orandaki istisnalar haricinde hepsi assembly dilinde yazıldığı için basic list komutu işe yaramaz, kaldı ki ben basic ile yazılan programlarda bile list komutu verdiğimde nadiren de olsa ekrana garip karakterler basıldığına şahit olmuşluğum vardır.
bu iş için tek bir yol izlenebilir: uygun bir kartuş ile (multi ice, freeze frame, action replay vb.) makineyi freeze edip assembly kodlarını listelemen. başka pratik bir yolu yoktur, olmadı, olmayacak.
load "$",8 komutunun açıklaması:
bu komut 8. sürücü (8 9 10 ve 11 disket sürücüye ayrılmıştır) içindeki disketin directory yapısını ram'e yükler ve "list" komutu ile onu listeler. içinden seçeceğimiz herhangi bir programı yüklememizin en kolay yoludur.
load "blabla*",8,1 komutunun açıklaması:
8. numaralı sürücüdeki disketin içindeki blabla ile başlayan ilk programı yükler sonra "run" komutunu girerek çalıştırırsınız.
burada neden ",1" yazılma ihtiyacı var hiç bilmiyorum ama ,1 yazmadan hiç denemediğimi de söylemek isterim. isteyen deneyebilir.
load "blabla",1 komutunun açıklaması:
kaset sürücüdeki kasetin içindeki blabla adlı programı yükler ve çalıştırır. "run" komutu girmenize gerek yoktur.

load":",8,1
8 numaralı sürücüdeki disketin ilk dosyasını yükler.

http://www.geocities.com/ResearchTriangle/Lab/1767/64/basref.html

bu adreste geniş bir basic referans bilgisi bulunabilir.

Ayrıca Load ile kullanılabilecek sürücülerin arasında printer load "bilmemne",4 gibi), monitör (tam hatırlamıyorum ama 2 olmalı) gibi cihazlar da var ama nedense onlarla ilgili kimse bir bilgi paylaşmamış. benim de aklımda fazla birşey kalmadı onunla ilgili.

başka sorusu olan? :)


Konu Başlığı: Ynt: c64 te load edilen programı nasıl list ederiz?
Gönderen: juda üzerinde Mayıs 05, 2007, 12:00:17 ÖS
ayrıca bir İlker Fıçıcılar adında C64 gurusu var, İlker'in sitesinin adresi
http://cbm.ficicilar.name.tr/

kendisiyle irtibata geçerek gerekli ve doğru bilgiyi alabilirsiniz.


Konu Başlığı: Ynt: c64 te load edilen programı nasıl list ederiz?
Gönderen: murmuro üzerinde Mayıs 05, 2007, 12:47:36 ÖS
sadece 8 ile de load ediliyor ve run ile oynanıyor. yani bu sonuna yazdığımız 1 in bir anlamı yok mu o zaman?


Konu Başlığı: Ynt: c64 te load edilen programı nasıl list ederiz?
Gönderen: juda üzerinde Mayıs 05, 2007, 12:48:33 ÖS
aslında var.. ama biraz araştırma ;)


Konu Başlığı: Ynt: c64 te load edilen programı nasıl list ederiz?
Gönderen: Arda üzerinde Mayıs 05, 2007, 14:24:07 ÖS
zombinin dediği gibi 1read 2write 3append falan olsa baştaki LOAD komutuyla çelişiyor gibi geldi bana. Ama comodor bu, olur olur.

Spectrumda kayıt ederken save "xyz" line 1  şeklinde kaydettiğiniz programları load ile yüklediğinizde otomatik olarak 1.satırdan run edilir. burdaki 8,1 de bende ilk o düşünceyi uyandırmıştı. load "x",8,1 yazınca 8 diskten x'i yükle, 1 satırdan başlat gibi. Ama değil imiş. Ankarada bir arkadaşımda c64 oynarken Runstop ile yüklediğimizi hatırlıyorum ama. Ne güzeldi evde kasetlerle boğuştuktan sonra disketten oyun yüklemek... Neredeyse kaset kadar yavaştı ama olsundu :)


Konu Başlığı: Ynt: c64 te load edilen programı nasıl list ederiz?
Gönderen: witchdoktor üzerinde Mayıs 05, 2007, 16:38:04 ÖS
istek üzerine olaya son noktayı koymaya geldim :)
...
başka sorusu olan? :)

Heyy, benim sorularımı kaynatma bakalım :)
Onları da yanıtlayın da son noktayı koyalım :)

Özetle:
1) Teypten yüklenen oyunlarda kullanılan autorun mekanizması
2) Floppy'den yüklenen oyunlarda neden bu mekanizmanın kullanılmadığı


Konu Başlığı: Ynt: c64 te load edilen programı nasıl list ederiz?
Gönderen: Skate üzerinde Mayıs 05, 2007, 19:39:02 ÖS
",8,1" deki ilk parametre device number. 8 9 10 11.. şeklinde o anda kullanılan disk drive'ı gösteriyor. sondaki "1" parametresi ise yanlış hatırlamıyorsam dosya yüklerken open close komutlarında kullanılan dosya numarasıdır. 255'e kadar herhangi bir değer verebilirsiniz, sonuç değişmeyecektir. ancak "Iron Lord" gibi bazı oyunların orjinallerinde ,8,1 ile yükleme yapılamıyordu. ,8,2 ile yüklenebiliyordu oyun ancak. bunu da orjinal oyun kitapçığında yazıyorlardı ki basit de olsa bir kopya koruması olsun, ,8,1 deneyen dumur olsun diye.


Konu Başlığı: Ynt: c64 te load edilen programı nasıl list ederiz?
Gönderen: LW3D üzerinde Mayıs 05, 2007, 20:10:56 ÖS
hmm...ben ikinci rakkam makina kodu ya da basic ile alakalı diye hatırlıyorum. Basic olan dosyalarda yazmaya gerek yok, makina kodu 1 eklemek gerekiyor gibi. Hatta sanki yüklenecek kodun başlangıç adresini bile, bir şekilde belirtmek mümkündü (Dediğim gibi hiç disk sürücüm olmamıştı, sanki böyle kalmış aklımda)


Konu Başlığı: Ynt: c64 te load edilen programı nasıl list ederiz?
Gönderen: AmigAmigA üzerinde Mayıs 05, 2007, 20:56:15 ÖS
Bende zamanında 1987-1990 arasında c64'ümün teybiyle uğraşır dururdum.Kafa ayarı olayına kendimce çözüm bulmuştum,her kasetin üstüne tornavida devir sayısını yazmıştım,mesela yarım sol,2 sağ gibi.Sonra daha geçen sene ilk disk sürücüm oldu,şimdide mmc64'üm var.Disk sürücü bile eziyet gibi geliyor artık.Ama işler kolaylaştıkça alınan keyifde azalıyor gibi geliyor bana.Konu biraz alakasız oldu ama kusura bakmayın,yine nostaljim tuttu.


Konu Başlığı: Ynt: c64 te load edilen programı nasıl list ederiz?
Gönderen: Skate üzerinde Mayıs 05, 2007, 22:32:05 ÖS
olay şöyle ki yalnızca ,8 diyecek olursanız yükleme adresi otomatik olarak basic başlangıcı, yani $0801 (2049) olur. kısacası dosyanın ilk iki byteını oluşturan yükleme adresi bilgisi önemsenmeden basic adresinden yükleme yapılır. ,8,x şeklinde yüklediğinizde ise dosyanın orjinal adresi neyse ordan yüklenir. örneği bir dosya $0900 adresinden itibaren kaydedilmişse ilk iki byte'ı 00 09 şeklindedir. bu durumda load"hede",8 bu dosyayı $0801'den yükleyecektir ki basic'de saçma sapan bir liste görürüz ve dosya çalışmaz. eğer ,8,1 ile yüklersek dosya $0900'den yüklenir. run komutu da işe yaramaz. ama örneğin $0900 aynı zamanda programın başlangıç adresiyse sys 2304 diyerek ($0900=2304) programı çalıştırabiliriz.

eğer program zaten basic'den run denince çalışabilecek durumda yükleme adresi $0801 olan bir programsa ,8 ve ,8,x fark etmeyecektir.

son bir durum ise programın yükleme adresinin $0400 gibi adreslerde olduğu durumdur. bu durumda yine ,8 ile yanlış adresten ($0801) yükleyecek ve run ile çalışmayacaktır. ama ,8,x kullandığınız taktirde program $0400'den yani ekran adreslerinden yükleyecek, ekrana da istenilen bir mesajı yükleme esnasında yazabilecektir. daha sonra "run" ile çalıştırmak da hala mümkün olacaktır.

isterseniz daha da detaya girebilirim. örneğin basic'in hafıza'da ne tür bir yapıya sahip olduğu, basic'in başlangıç adresinin varsayılan $0801 harici nasıl kullanılabileceği v.b. konular var. ama inanın hiç de ilginç şeyler değildir. assemblerdan şaşmayın, bu tür şeylere kafayı takmayın derim :)


Konu Başlığı: Ynt: c64 te load edilen programı nasıl list ederiz?
Gönderen: juda üzerinde Mayıs 06, 2007, 01:23:55 ÖÖ
istek üzerine olaya son noktayı koymaya geldim :)
...
başka sorusu olan? :)

Heyy, benim sorularımı kaynatma bakalım :)
Onları da yanıtlayın da son noktayı koyalım :)

Özetle:
1) Teypten yüklenen oyunlarda kullanılan autorun mekanizması
2) Floppy'den yüklenen oyunlarda neden bu mekanizmanın kullanılmadığı

Adamlar böyle yapmışlar işte :p
peki benim sana iki sorum olacak:
load "blabla",4 ne işe yarar?
4 numarali cihaz nedir?
load komutu ile birlikte 1, 8, 9, 10, 11 dışında hangi cihazları hangi numaralarla kullanabiliriz?
:)