Soru gayet açıktı. Ben @hades'in basic kodlarının durduğu bölgeyi görüp, oradaki duplicate junk datayı da görüp kafasının karışması, @matahari'nin de basic kodlarının olduğu bölgeyle ilgili yaptığı detaylı açıklamalara istinaden paylaştım bunu. Bu "al böyle de yaparsın" şeklinde paylaşılmış bir şey değil. Ben dün bunu yaparken de basic kodlarının durduğu bölgeyi inceledim, aynı şeye denk geldim. Ben bunu paylaşmadan sorun çözülmüştü zaten.
Ekşi sözlük kuralıdır. Bir enrty'de düzgün açıklama geldikten sonra muhabbet serbesttir.
Muhabbet değil ya, o bilgi de önemli, bir eleştiri değildi, laf lafı açıyor şeklinde gitsin muhabbet. Fakat sen böyle diyince asıl soruyu hiç yanıtlamadığımızı gördüm.
Asıl soru şuydu:
"2022 RANDOMIZE USR ADRES" + kod
şeklindeki bir programda adres en düşük ne olabilir?
Hades başka birşey kast ediyordu ama yine de soruyu olduğu gibi cevaplamaya çalışalım.
Bunu şöyle düşünüyorum, oradaki ADRES makine kodumuzu koyabileceğimiz güvenli bir adres olmalı, makine kodumuz basic'in çalışmasına engel olmamalı (kod uygulandıktan ve tamamlandıktan sonra basic'e dönebilmeliyiz diyelim)
Basic'in başlangıcı 23755 olduğunu var sayalım (bazen ileri geri oynuyor takılan donanıma göre).
Şimdi burada birkaç düzeltme yapalım, randomize usr <adres> yerine randomize usr val "<adres>" yapalım 3 byte kazanalım (15 byte).
şu anda basic cursor'u 23770'e geldi.
bu durumda VARS vb ekleyelim, NXTLIN 23794'e geldi, girilecek satırla birlikte 35 byte diyelim, aslında eğer basic'i kasetten yükleyeceksek edeceksek buna gerek yok çünkü rom loader yükleme tamamlanınca otomatik basic'i çalıştırabiliyor ama geri döndüğümüzde halen bir satır ram olsa iyi olur.
eğer asm kodumuzu sihirli değneğimizle yerleştirebilirsek, bu durumda 23805 güvenlidir diyebiliriz.
eğer onu da kasetten yüklememiz gerekiyorsa LOAD "" CODE : komutu eklememiz gerek o da 5 byte tutuyor, dolayısıyla 23810 sanırım teorik güvenli en küçük adres olacaktır.
Ama burada tek yüklemede işlem hallolmuyor, fakat basic'in dayandığı dip burası olacaktır. Ekteki dosyada loader ve 36 byte'lık makine kodu bloğu var. Bunu 23810'a yerleştirdim ve ekranı ters çevirip (hades sanırım bu senin kodundu) tekrar basic'e dönüyor. Sorun yok. Basic umrumda değil diyorsan 23795 (NXTLIN) ya da olmazsa 23796 işi çözecektir.
yetmedi, bir ihtimal daha var
sadece CODE bloğu vermek. Bunun için genelde tüm basic sistem değişkenlerini de dahil eden bir kayıt yapıyorsun ve yükleyecek kişiye, mesela 48k modunda load""code ile yüklemelisin diyorsun. SAVE "demo" code 22528, 1500
şeklinde kaydedip, yükleyenin konfigürasyonu ile senin konfigin tutması için dua ediyorsun
hatta istersen biraz daha önden başlayıp ekrana grafik de yükleyebilirsin bu arada
Ekte örnek veriyorum ship of the line oyunu...