|
Konu Başlığı: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: Simon (Özay Turay) üzerinde Kasım 25, 2016, 19:53:59 ÖS Üzerinde çalıştığım AmigaOS MultiBoot projesinde karşılaştığım bir problem var. Şöyle ki konfigürasyonu kolay olsun diye hardcoded değerler yerine script'in en başında ortam değişkenleri kullanıyorum multiboot için hazırladığım Startup-Sequence scriptinde. 2.05, 3.0 ve 3.1 ROM ile boot ettiğimde sorun yok ancak 1.3 ROM ile boot ettiğimde
Unknown command Set şeklinde bir hata alıyorum. Sorum su: AmigaOS 1.3'de set komutu yok mu? :o Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: WildLord üzerinde Kasım 25, 2016, 21:27:53 ÖS Amiga Dos 1.3 komutları, içerisinde set yok.
Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: Simon (Özay Turay) üzerinde Kasım 25, 2016, 21:31:01 ÖS Set komutu normalde diğer sürümlerde de C: çekmecesinde bulunmuyor ama çalışıyor. Sanırım DOS'taki internal komutlar gibi bir komut.
Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: Alpyre üzerinde Kasım 25, 2016, 21:31:55 ÖS Set ve Get yerel ortam değişkeni (yani sadece mevcut shell'de geçerli) oluşturur. Bu özellik 2.0 ile gelmişti (C:'de bulunmazlar, internal komutlardır).
1.3'te ortam değişkeni oluşturmak için SetEnv/GetEnv ikilisini kullanman gerek. Bu genel ortam değişkeni oluşturur o yüzden özgün değişken adları kullanman da gerekecek tabi. Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: Simon (Özay Turay) üzerinde Kasım 25, 2016, 21:44:44 ÖS 1.3'te ortam değişkeni oluşturmak için SetEnv/UnsetEnv ikilisini kullanman gerek. Bu genel ortam değişkeni oluşturur o yüzden özgün değişken adları kullanman da gerekecek tabi. Onu da denedim ama örneğin: Set BootDrv DH0 Set KS13OS "Workbench1.3" Set KS20OS "Workbench2.1" Set KS30OS "Workbench3.0" Set KS31OS "Workbench3.1" ile atadığım değişkenleri Echo "** Preparing $KS13OS" Assign >NIL: SYS: $BootDrv:$KS13OS şeklinde kolayca kullanamıyorum. Tabi bir de minimum sayıda dosya ve kodla yapmak istediğim iş için C: altına SetEnv ve GetEnv komutlarını L: altına Ram-Handler dosyasını kopyalamak ve RAM: altında ENV: assign'ı oluşturmak gerektirmesi de cabası. Bana GetEnv'in Echo ve Assign ile nasıl kullanıldığına dair bir örnek gösterebilir misin? Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: Simon (Özay Turay) üzerinde Kasım 25, 2016, 22:41:50 ÖS Bana GetEnv'in Echo ve Assign ile nasıl kullanıldığına dair bir örnek gösterebilir misin? Kendi sorumu kendim cevaplayayım yukarıdaki örnekte Set komutlarını SetEnv ile değiştirince sorunsuz çalışıyormuş $ ile bağlayan değişken ismini ister yazdırabiliyormuşuz istersek de herhangi bir komuta parametre yapabiliyormuşuz. ::) Coming Soon: Amiga MultiBoot (for kickstart switchers) ;) Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: Alpyre üzerinde Kasım 25, 2016, 22:51:58 ÖS Bana GetEnv'in Echo ve Assign ile nasıl kullanıldığına dair bir örnek gösterebilir misin? Kendi sorumu kendim cevaplayayım yukarıdaki örnekte Set komutlarını SetEnv ile değiştirince sorunsuz çalışıyormuş $ ile bağlayan değişken ismini ister yazdırabiliyormuşuz istersek de herhangi bir komuta parametre yapabiliyormuşuz. ::) Coming Soon: Amiga MultiBoot (for kickstart switchers) ;) Tebrikler. NOT: SetENV ile oluşturduğun ortam değişkenlerini, script'ten çıkmadan önce (varsa UnSetENV ile, yoksa) Delete ile silmeyi unutma. ;) Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: WildLord üzerinde Kasım 25, 2016, 23:06:29 ÖS Echo ile olmuyor, degiskenin kendi adi donuyor denedin mi simon?
Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: Simon (Özay Turay) üzerinde Kasım 25, 2016, 23:08:42 ÖS Echo ile olmuyor, degiskenin kendi adi donuyor denedin mi simon? Evet 1.3'de yine olmuyor. Erken konuşmuşum. :(Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: WildLord üzerinde Kasım 25, 2016, 23:16:58 ÖS Anladığım kadarıyla SETENV ile belirlenen değişken IF komutuyla okutarak istediğimiz işi gerçekleştirebiliyoruz.
Örn: Setenv nick "wildlord" IF $nick EQ "wildlord" echo "isim wildlord" ... ... ENDIF IF $nick EQ "simon" echo "isim simon" ... ... ENDIF Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: Simon (Özay Turay) üzerinde Kasım 25, 2016, 23:23:16 ÖS Benim Assign komutuna parametre yapmam gerekiyor değişkenin içerdiği değeri ve 1.3'te $'lı notasyon çalışmıyor maalesef.
Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: Alpyre üzerinde Kasım 25, 2016, 23:39:43 ÖS ` ile zincirleme çalışıyor mu?
Çalışıyorsa: Assign >NIL: SYS: `GetENV KS13OS_DIR` ...şeklinde deneyebilirsin belki. Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: WildLord üzerinde Kasım 25, 2016, 23:45:05 ÖS Assign komutuna parametreyi bir değişkene atamak yerine ilgili if içerisinde direk değer girerek yapılsa olmaz mı?
Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: Simon (Özay Turay) üzerinde Kasım 25, 2016, 23:53:48 ÖS ` ile zincirleme çalışıyor mu? Çalışıyorsa: Assign >NIL: SYS: `GetENV KS13OS_DIR` ...şeklinde deneyebilirsin belki. Please insert volume `GetEnv BootDrive` in any drive. :D Assign komutuna parametreyi bir değişkene atamak yerine ilgili if içerisinde direk değer girerek yapılsa olmaz mı? Kulağı tersten göstermiş oluruz. Onu yapacağımıza değerleri hardcoded olarak kullanmamız daha basit olur. Burada amaç scriptin en başında işletim sistemlerinin tutulacağı çekmeceleri tanımlayıp gerektiğinde kolayca değiştirebilmek, misal 3.1 ROM ile boot ettiğimde ClassicWB-LITE açılırken tek bir değişken içeriğini değiştirerek bir süre ClassicWB-ADVSP ile takılmak gibi.Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: Alpyre üzerinde Kasım 26, 2016, 08:05:22 ÖÖ Hmm. Biraz manual karıştırdım. ` (BackTick) kullanımı da 2.0 ile gelmiş.
WinUAE'ye OS1.3 kurup biraz deneme de yaptım. WildLord (http://www.commodore.gen.tr/forum/index.php?action=profile;u=9493)'un dediği gibi $ ibaresi sadece IF ile çalışıyor. ...ya kısaca onun önerdiği gibi uygulayacaksın... ...ya da C ile ENV:'den ilgili ortam değişkenlerini okuyup gerekli Assign'ı oluşturacak yeni bir komut geliştirip onu kullanacaksın. :) Gördüğüm kadarıyla başka çare yok gibi. Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: Simon (Özay Turay) üzerinde Kasım 26, 2016, 14:32:34 ÖS ...ya da C ile ENV:'den ilgili ortam değişkenlerini okuyup gerekli Assign'ı oluşturacak yeni bir komut geliştirip onu kullanacaksın. :) Bu dediğini yaptım. 8)Ama hadi Echo satırları için de yaptık diyelim, IF EXISTS için nasıl yaparız. MyExists diye bir komut mu yazmak gerekecek. :D Kodun değişkensiz hardcoded hali: C:Version >NIL: exec.library 35 ;Kickstart 1.3 IF WARN IF EXISTS SYS:Workbench1.3 Echo "** Preparing Workbench1.3" Assign >NIL: SYS: SYS:Workbench1.3 Skip SetAssigns Else Echo "Error: SYS:Workbench1.3 Drawer Not Present" Echo "" Skip Done EndIF EndIF Değişkenli hali (temsili): C:Version >NIL: exec.library 35 ;Kickstart 1.3 IF WARN IF EXISTS SYS:Workbench1.3 MyEcho "** Preparing" KS13OSLabel MyAssign SYS: KS13OSDrawer Skip SetAssigns Else MyEcho "Error:" KS13OSDrawer "Drawer Not Present" Echo "" Skip Done EndIF EndIF Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: Alpyre üzerinde Kasım 26, 2016, 14:46:39 ÖS EXISTS, IF'in keyword'ü olduğu için belki halihazırda ortam değişkenlerini destekliyordur.
Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: Simon (Özay Turay) üzerinde Kasım 26, 2016, 15:42:40 ÖS Maalesef desteklemiyormuş. ???
MakeDir >NIL: RAM:ENV Assign >NIL: ENV: RAM:ENV SetEnv OSDrive SYS SetEnv KS13OSDrawer Workbench1.3 IF EXISTS $OSDrive:$KS13OSDrawer Echo "OK" EndIF Alıntı Please insert volume $OSDrive in any drive Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: Alpyre üzerinde Kasım 26, 2016, 16:35:56 ÖS O zaman MyExists diye bir komut yazacaksın mecbur. :)
Tereciye tere satmak gibi olacak ama nasıl yazacağına dair bir iki tüyo verebilirim. MyAssign'da yaptığın gibi argc'den argümanı al ve ENV:'deki ortam değişkenlerini okuyup dosya adını oluşturmasını sağla. dosya adı örneğin fileName olsun: Kod: STPTR fileName; Sonra Lock() ile bu dosyaya DOS kilidi almaya çalış. Kod: lock = Lock( fileName, ACCESS_READ ); Sonra kilit alıp alamadığını kontrol et: Kod: if (lock) ...şeklinde programdan çıkmasını sağla (tabi allocation falan yaptıysan onları temizle ve kütüphaneleri kapat). Şimdi script'tinde IF WARN (veya IF NOT WARN) kullanarak dosyanın varlığını sorgulayabilirsin. Haydi kolay gelsin. :) Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: Simon (Özay Turay) üzerinde Kasım 28, 2016, 00:50:21 ÖÖ Hepsini yaptım. myAssign, myEcho ve myExists komutlarını içeren MultiBoot isminde bir program yazdım. Şöyle kullanılıyor:
SetEnv KS13OSDrawer DH0:Workbench1.3 SetEnv KS13OSLabel "Workbench 1.3" C:Version >NIL: exec.library 35 ;Kickstart 1.3 IF WARN MultiBoot Exists KS13OSDrawer IF NOT WARN MultiBoot Echo "** Preparing" KS13OSLabel "" MultiBoot Assign SYS: KS13OSDrawer Skip SetAssigns Else MultiBoot Echo "Error: " KS13OSDrawer "Drawer Not Present" Echo "" Skip Done EndIF EndIF Lakin ufak bir sorun var. Program Kickstart 1.3 ile çalışmıyor. :D Hata mesajı: "Need version 37 of dos.library" halbuki: Kod: int main(int argc, char* argv[]) şeklinde dos.library 33 ve yukarısında çalışması gerektiğini tanımlamışım. 33 yerine 0 da denedim o da olmuyor. MultiBoot 2.05, 3.0, 3.1 kickstartlarda sorunsuz çalışıyor. Bir el atıverin şuna da hatayı bulalım. ::) ADE ile derledim. Kaynak kodu ve derlenmiş hali: MultiBootSource.zip (https://dl.dropboxusercontent.com/u/18575245/AmigaMultiBoot/MultiBootSource.zip) Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: Alpyre üzerinde Kasım 28, 2016, 05:54:00 ÖÖ Tahminimce -noixemul ile derliyorsun. Bu kodunu libnix ile linkleyerek derler. ADE'deki libnix de muhtemelen kendi ihtiyacı olan dos.library'yi açmak istiyordur.
Bu uygulamayı sadece shell'den çalıştıracağını hesaba katarsak -nostdlib ile derleyerek bu sorunu çözebileceğini düşünüyorum (tabi kodunda standart kütüphaneden hiçbir fonksiyon kullanmamış olman gerekiyor - mobil'deyim koda bakamıyorum). Ya da OS1.3'e uygun legacy bir derleyici bulup onunla derlemek de çözüm olabilir. Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: Simon (Özay Turay) üzerinde Kasım 28, 2016, 14:30:07 ÖS Akşam bir de Linux'ta derleyeyim bakalım ne olacak. :)
Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: Alpyre üzerinde Kasım 28, 2016, 14:52:31 ÖS Hastaneden şimdi eve gelebildim sonunda.
Kodunu inceledim biraz. Hep standart kütüphaneden yardırmışsın... :D Neyse... Kodunda bir kaç ufak değişiklik yaptım. SAS/C ile ve Amiga.lib ile linkleyerek derledim. OS1.3'de denedim çalıştı. Hem de dosya daha küçük oldu. NOT: Çalışan executable dosyan bin/sas-c-classic çekmecesinin içinde. NOT2: Kodunda debug amaçlı yazdığını tahmin ettiğim bazı printf()'leri devre dışı bıraktım. NOT3: Dosya aslında LHA dosyası. Foruma LHA yüklenmediği için uzantısını ZIP yaptım. Buna rağmen WinRAR ve Amiga'daki UnArc çok akıllı olduğu için adını değiştirmeden de sorunsuz açılabiliyor.... fakat neden biz foruma LHA yükleyemiyoruz? Buna bir el atın yönetici olarak lütfen. Amiga'cılar olarak çok hoşnutsuzuz bu durumdan. ;) Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: Simon (Özay Turay) üzerinde Kasım 28, 2016, 15:17:26 ÖS Eline sağlık. Akşam deniyorum hemen. Kaynak kodunu da ekleseydin de biz de birşeyler öğrenseydik inceleyerek. :D
@LW3D: lha dosyaları konusunda top sende. ;) Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: Alpyre üzerinde Kasım 28, 2016, 15:41:48 ÖS ...Kaynak kodunu da ekleseydin de biz de birşeyler öğrenseydik inceleyerek. :D Kaynak kodu da içinde... :)Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: LW3D üzerinde Kasım 28, 2016, 15:52:35 ÖS .lha desteklenmez olur mu hiç...Lütfen ::)
Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: Simon (Özay Turay) üzerinde Kasım 28, 2016, 16:01:32 ÖS ...Kaynak kodunu da ekleseydin de biz de birşeyler öğrenseydik inceleyerek. :D Kaynak kodu da içinde... :)Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: Alpyre üzerinde Kasım 28, 2016, 16:10:54 ÖS .lha desteklenmez olur mu hiç...Lütfen ::) Wouuw! Ne çabuk? :DKonu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: Simon (Özay Turay) üzerinde Kasım 28, 2016, 19:26:38 ÖS OS1.3'de denedim çalıştı. Şimdi denedim ve dediğin gibi çalışıyor. Bir tek Assign komutunu debug amaçlı Echo Assign yapmıştım onu düzeltmek için yeniden derlemem lazım. SAS/C'yi buradan (http://oscomp.hu/?lang/en*details/SAS%2FC_6.58_Amiga_840) indirsek işimizi görür mü?Edit: Şimdi farkettim MultiBoot Assign SYS: KS13OSDrawer komutu 1.3 ROM'da ekrana Assign SYS: DH0:Workbench1.3 (Assign yerine Echo Assign yüzünden) yazdırması gerekirken hiçbir şey yazdırmıyor. Diğer ROM'lar ile beklendiği gibi çalışıyor. Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: witchdoktor üzerinde Kasım 28, 2016, 19:57:32 ÖS Ben tuttum bu ikiliyi! Başka konularda da açılımlar, zihin jimnastiği uygulamaları bekliyoruz ;)
Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: Simon (Özay Turay) üzerinde Kasım 28, 2016, 20:07:49 ÖS Ben tuttum bu ikiliyi! Başka konularda da açılımlar, zihin jimnastiği uygulamaları bekliyoruz ;) Alper'le bizim ikili beyin cimnastiğimiz taaaaa benim forumdaki ilk mesajıma (http://www.commodore.gen.tr/forum/index.php?topic=2385.msg26721#msg26721) kadar uzanır, lacileri çekmeden çok daha öncesine. ::)Bu arada emarti'yi de unutmayalım, sesi çıkmasa da o da meraklı Amiga için program yazmaya. ;) Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: Alpyre üzerinde Kasım 28, 2016, 20:25:22 ÖS OS1.3'de denedim çalıştı. Şimdi denedim ve dediğin gibi çalışıyor. Bir tek Assign komutunu debug amaçlı Echo Assign yapmıştım onu düzeltmek için yeniden derlemem lazım. SAS/C'yi buradan (http://oscomp.hu/?lang/en*details/SAS%2FC_6.58_Amiga_840) indirsek işimizi görür mü?Ben zamanında çok aramıştım da herbirinde bir sorun olmuştu. En son bir yerlerden bulduğum disketlerden güncellemerini teker teker yapa yapa oluşturmuştum 6.58 sürümünü. O sürüm de Amithlon CD'lerinde mevcut. Bu linkteki çalışmazsa oradan kopyalayıver (user-startup'ta da gerekli Assign'ler olacak, onları da al). ;) Alper'le bizim ikili beyin cimnastiğimiz taaaaa benim forumdaki ilk mesajıma (http://www.commodore.gen.tr/forum/index.php?topic=2385.msg26721#msg26721) kadar uzanır, lacileri çekmeden çok daha öncesine. ::) O senin forumdaki ilk mesajın mıydı? :oHızır gibi yetişmişsin öyleyse. Foruma gelmeseydin ben o CD'yi sittin sene hazırlayamazdım. :) Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: emarti üzerinde Kasım 28, 2016, 20:47:02 ÖS Ben tuttum bu ikiliyi! Başka konularda da açılımlar, zihin jimnastiği uygulamaları bekliyoruz ;) Alper'le bizim ikili beyin cimnastiğimiz taaaaa benim forumdaki ilk mesajıma (http://www.commodore.gen.tr/forum/index.php?topic=2385.msg26721#msg26721) kadar uzanır, lacileri çekmeden çok daha öncesine. ::)Bu arada emarti'yi de unutmayalım, sesi çıkmasa da o da meraklı Amiga için program yazmaya. ;) Takip edemedim haklısın @simon. Kırkından sonra felsefeye merak sarınca açık öğretim sınavından çıktım hafta sonu. İlk etapta biraz takip edebildim. Baştan sona bir okuyayım topiği tekrar... Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: Simon (Özay Turay) üzerinde Kasım 28, 2016, 21:16:00 ÖS Bu vesile ile Oldschool computer sitesini de keşfetmiş olduk. :D
http://oscomp.hu/?lang/en (http://oscomp.hu/?lang/en)*details/ Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: Simon (Özay Turay) üzerinde Kasım 28, 2016, 22:57:51 ÖS Bu kod olmayan bir dosyayı okumaya çalıştığımda o isimde boş bir dosya oluşturuyor. Sebep ne olabilir?
Kod: void getEnvVar(char *envVar, char* fileName) Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: emarti üzerinde Kasım 28, 2016, 23:37:30 ÖS Bu kod olmayan bir dosyayı okumaya çalıştığımda o isimde boş bir dosya oluşturuyor. Sebep ne olabilir? Kod: void getEnvVar(char *envVar, char* fileName) Sebebi MODE_READWRITE parametresi. MODE_READ olarak kodlanırsa sadece okuma yapacak ama exist yaptığı dosya için yani dosyayı yaratmayacaktır. MODE_READWRITE modunda dosya sağlanmaz (exist) ise boş bir dosya oluşturur. Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: Simon (Özay Turay) üzerinde Kasım 29, 2016, 00:02:15 ÖÖ Benim de ilk aklıma gelen oydu ama maalesef öyle bir constant tanımlanmamış diyordum ki MODE_OLDFILE, MODE_NEWFILE ve MODE_READWRITE değerlerinin kullanılabildiğini öğrendim.
http://www.pjhutchison.org/tutorial/file_io.html (http://www.pjhutchison.org/tutorial/file_io.html) Yani biz MODE_OLDFILE kullanıcaz. :D Öğrenicez bakalım inşallah. :) Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: emarti üzerinde Kasım 29, 2016, 00:33:40 ÖÖ Benim de ilk aklıma gelen oydu ama maalesef öyle bir constant tanımlanmamış diyordum ki MODE_OLDFILE, MODE_NEWFILE ve MODE_READWRITE değerlerinin kullanılabildiğini öğrendim. http://www.pjhutchison.org/tutorial/file_io.html (http://www.pjhutchison.org/tutorial/file_io.html) Yani biz MODE_OLDFILE kullanıcaz. :D Öğrenicez bakalım inşallah. :) gcc ile derlerken Kod: FILE *dosya; gibi kullanıyorum. C'de birlik yok :) Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: Alpyre üzerinde Kasım 29, 2016, 07:25:19 ÖÖ Kod: FILE *dosya; Amiga'da program yazarken fopen(), malloc() vs. vs. gibi standart kütüphane fonksiyonlarından kaçınmalıyız arkadaşlar. Bu programımızı ya ixemul.library bağımlı kılar veya derlerken libnix ile linklenmek zorunda bırakır (dosya boyutu büyür). Mümkün olduğunca (ki pek çok şey mümkün) AmigaOS API'sindeki fonksiyonları kullanmalıyız. Bu fonksiyonlar ve kullanımları için aşağıdaki kitaptan: Amiga ROM Kernel Reference Manual : Libraries (https://archive.org/details/1990-beats-steve-amiga-rom-kernel-ref-3rd) ...ya da çevrimiçi referans tercih ediyorak şu siteden: http://amigadev.elowar.com/ (http://amigadev.elowar.com/) ...faydalanabiliriz. Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: emarti üzerinde Kasım 29, 2016, 08:27:24 ÖÖ Kod: FILE *dosya; Amiga'da program yazarken fopen(), malloc() vs. vs. gibi standart kütüphane fonksiyonlarından kaçınmalıyız arkadaşlar. Bu programımızı ya ixemul.library bağımlı kılar veya derlerken libnix ile linklenmek zorunda bırakır (dosya boyutu büyür). Mümkün olduğunca (ki pek çok şey mümkün) AmigaOS API'sindeki fonksiyonları kullanmalıyız. Bu fonksiyonlar ve kullanımları için aşağıdaki kitaptan: Amiga ROM Kernel Reference Manual : Libraries (https://archive.org/details/1990-beats-steve-amiga-rom-kernel-ref-3rd) ...ya da çevrimiçi referans tercih ediyorak şu siteden: http://amigadev.elowar.com/ (http://amigadev.elowar.com/) ...faydalanabiliriz. @Alpyre abi ADE kullanarak fopen, fputs gibi fonksiyonları hatta derlemede -noixemul kullanmıştım. Programın çalışmasında bir sıkıntı olmamıştı. Boyutsal büyüklük dışında bir sıkıntı yaratma ihtimali var mıdır? Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: Alpyre üzerinde Kasım 29, 2016, 09:30:06 ÖÖ Kod: FILE *dosya; Bu programımızı ya ixemul.library bağımlı kılar veya derlerken libnix ile linklenmek zorunda bırakır (dosya boyutu büyür). Mümkün olduğunca (ki pek çok şey mümkün) AmigaOS API'sindeki fonksiyonları kullanmalıyız. Bu fonksiyonlar ve kullanımları için aşağıdaki kitaptan: Amiga ROM Kernel Reference Manual : Libraries (https://archive.org/details/1990-beats-steve-amiga-rom-kernel-ref-3rd) ...ya da çevrimiçi referans tercih ediyorak şu siteden: http://amigadev.elowar.com/ (http://amigadev.elowar.com/) ...faydalanabiliriz. Sıkıntı ihtimallerinden birini Özay yaşadı işte. Os1.3'te çalışmadı. Çünkü ADE'deki libnix daha yüksek dos.library bağımlı. Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: Simon (Özay Turay) üzerinde Kasım 29, 2016, 11:11:15 ÖÖ Son durum:
* indirdiğim SASC paketi çalışıyor ancak makefile'da belirttiğim isim yerine main isimli bir executable oluşturuyor, çok da sorun değil. * PCH uzantılı Y2K patch'i varmış nasıl uygulayacağımı bulamadım. * Ufak bir hileyle printf dahil stdlib komutlarından kurtuldum ve executable boyutunu 4K altına indirdim. Şöyle ki printf komutu ile yazdırdığım metinleri Execute() ile Echo komutunu haricen kullanarak hallediyorum. Bir tek "Unable to open dos.library" mesajını iptal ettim, Execute() komutu dos.library'e bağımlı mı bilmiyorum gerçi ama garantiye aldım işi. :D Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: emarti üzerinde Kasım 29, 2016, 11:30:12 ÖÖ Kod: FILE *dosya; Bu programımızı ya ixemul.library bağımlı kılar veya derlerken libnix ile linklenmek zorunda bırakır (dosya boyutu büyür). Mümkün olduğunca (ki pek çok şey mümkün) AmigaOS API'sindeki fonksiyonları kullanmalıyız. Bu fonksiyonlar ve kullanımları için aşağıdaki kitaptan: Amiga ROM Kernel Reference Manual : Libraries (https://archive.org/details/1990-beats-steve-amiga-rom-kernel-ref-3rd) ...ya da çevrimiçi referans tercih ediyorak şu siteden: http://amigadev.elowar.com/ (http://amigadev.elowar.com/) ...faydalanabiliriz. Sıkıntı ihtimallerinden birini Özay yaşadı işte. Os1.3'te çalışmadı. Çünkü ADE'deki libnix daha yüksek dos.library bağımlı. ADE mimari olarak 3.1 ve yukarısını istiyor haklısın Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: Simon (Özay Turay) üzerinde Kasım 29, 2016, 11:54:15 ÖÖ OS1.3'de denedim çalıştı. Şimdi denedim ve dediğin gibi çalışıyor. Bir tek Assign komutunu debug amaçlı Echo Assign yapmıştım onu düzeltmek için yeniden derlemem lazım. SAS/C'yi buradan (http://oscomp.hu/?lang/en*details/SAS%2FC_6.58_Amiga_840) indirsek işimizi görür mü?Edit: Şimdi farkettim MultiBoot Assign SYS: KS13OSDrawer komutu 1.3 ROM'da ekrana Assign SYS: DH0:Workbench1.3 (Assign yerine Echo Assign yüzünden) yazdırması gerekirken hiçbir şey yazdırmıyor. Diğer ROM'lar ile beklendiği gibi çalışıyor. Kod: MultiBoot Echo "** Preparing" KS13OSLabel "" Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: Alpyre üzerinde Kasım 29, 2016, 12:03:35 ÖS * indirdiğim SASC paketi çalışıyor ancak makefile'da belirttiğim isim yerine main isimli bir executable oluşturuyor, çok da sorun değil. ADE'de kullandığın makefile'ı kullanırsan öyle olur tabi. Gönderdiğim arşivde SAS/C için uygun makefile vardı oysa ki. :) * PCH uzantılı Y2K patch'i varmış nasıl uygulayacağımı bulamadım. Yanlış hatırlamıyorsam SAS/C yamaları için (sc/c içinde) spatch diye bir komut olacak. Y2K yamasını şu satırla yapabilirsin diye umut ediyorum: Kod: spatch -o sc:libs/sc1.library -p sc1.library.pch * Ufak bir hileyle printf dahil stdlib komutlarından kurtuldum ve executable boyutunu 4K altına indirdim. Şöyle ki printf komutu ile yazdırdığım metinleri Execute() ile Echo komutunu haricen kullanarak hallediyorum. Bir tek "Unable to open dos.library" mesajını iptal ettim, Execute() komutu dos.library'e bağımlı mı bilmiyorum gerçi ama garantiye aldım işi. :D Execute() fonksiyonu tabii ki de dos.library'ye bağımlı. ;)Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: Simon (Özay Turay) üzerinde Kasım 29, 2016, 12:18:12 ÖS ADE'de kullandığın makefile'ı kullanırsan öyle olur tabi. yok senin makefile'ı kullandım ama alt klasör mantığını anlamadığımdan dolayı öyle derleyemedim.Gönderdiğim arşivde SAS/C için uygun makefile vardı oysa ki. :) Multiboot/makefiles/sas-c-classic çekmecesinden smake komutu verdiğimde main.c bulunamıyor Multiboot çekmecesinden smake komutu verdiğimde de makefile bulunamıyor Ben de makefile'ı main.c yanına taşıyarak denedim o da lnk dosyasıyla ilgili bir hata verdi. makefile içeriğini biraz düzenleyerek derlemeyi başardım ama bu sefer de EXE değişkeninin içeriğini umursamıyor ve main isminde executable oluşturuyor Son hali aklımda yanlış kalmadıysa şöyle birşey: Kod: EXE = MultiBoot Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: Alpyre üzerinde Kasım 29, 2016, 12:35:29 ÖS Edit: Şimdi farkettim MultiBoot Assign SYS: KS13OSDrawer komutu 1.3 ROM'da ekrana Assign SYS: DH0:Workbench1.3 (Assign yerine Echo Assign yüzünden) yazdırması gerekirken hiçbir şey yazdırmıyor. Diğer ROM'lar ile beklendiği gibi çalışıyor. Bu konuda yorum alabilir miyim? Execute komutunda sorun yok çünküKod: MultiBoot Echo "** Preparing" KS13OSLabel "" Kodunun detaylarını incelememiştim ama şimdi bakıyorum da senin myAssign() fonksiyonun bana doğru gelmedi: Kod: char* assignCommand = "Echo Assign"; Bu satırdaki "Echo Assign" bence doğru değil. Orada sadece "Assign" yazması gerekiyor bence. Tahminimce ilgili Assign da oluşmuyordur. Kod: Execute("Echo Assign SYS: DH0:Workbench1.3");EDIT: Hayır hayır. Tekrar düşündüm de... koduna bilgilendirme satırı eklememelisin. İstediğin bilgilendirmeyi Script'te Multiboot Echo ile yapmalısın. Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: Simon (Özay Turay) üzerinde Kasım 29, 2016, 14:33:32 ÖS Echo Assign debug amaçlı yazmıştım unutmuştum farkındayım ama 1.3 ile Echo komutu da işe yaramıyor, diğer KS versiyonlarında ekrana geliyor Echo'dan sonrası. Yani Assign'a çevirince de çalışmıyor haliyle.
Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: Alpyre üzerinde Kasım 29, 2016, 15:37:36 ÖS Kodun son halini görmediğim için sorun tam olarak nerede bilemiyorum ancak bendeki printf()'li hali gayet iyi çalışıyor:
Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: Simon (Özay Turay) üzerinde Kasım 29, 2016, 16:38:41 ÖS Kodun senin düzenlediğin halinde Echo Assign ifadesini sadece Assign yapıp derlermisin sana zahmet.
Kod: SetEnv KS13OSDrawer DH0:Workbench1.3 şeklinde test ettiğinde assign atanıyor mu 1.3'te? Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: Alpyre üzerinde Kasım 29, 2016, 16:45:07 ÖS Kodun senin düzenlediğin halinde Echo Assign ifadesini sadece Assign yapıp derlermisin sana zahmet. Ekran görüntüsündeki örneği o şekilde derledim zaten. Yoksa Assign atamazdı zaten, ekrana "Assing bla bla" yazardı. Kod: SetEnv KS13OSDrawer DH0:Workbench1.3 Teorik olarak ataması lazım. Şu an işyerine geçtim deneyemiyorum. Eve dönünce onu da denerim, ancak %99 eminim ki atayacaktır. Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: Simon (Özay Turay) üzerinde Kasım 29, 2016, 19:46:47 ÖS Evet sorunun benim sistemi full 1.3 disketinden değil de minimal komut ve dosya içeren bir ortamdan başlatmam olduğunu farketmiş bulunuyorum. 1.3'de Assign komutu Run komutu olmayınca (en azından benim MultiBoot komutu içinden çağrılınca) düzgün çalışmıyor, bunu da öğrenmiş olduk. Minimal C: çekmeceme Run komutunu da koyunca düzeldi. Tümden gelim tek tek dosyaları bir alt çekmeceye taşıyarak sorunu buldum. :D
Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: Alpyre üzerinde Kasım 29, 2016, 20:31:45 ÖS E gözün aydın o zaman. Sevindim.
Yabancı forumlarda böyle durumlarda, konu başlığının sonuna [SOLVED] ekliyorlar. :) Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: Simon (Özay Turay) üzerinde Aralık 02, 2016, 20:58:35 ÖS Son durum: printf'lerden kurtulduğum yenine myEcho() fonksiyonunda harici Echo komutunu çağırdığım kod da çalışıyor fakat * işaretini bastıramıyorum bir türlü MultiBoot Echo ile.
Bu durumda ya printf'lere geri döneceğim ya da birileri Amiga stili ekrana birşeyler hangi fonksiyonla yazdırılır onu öğretecek. :D makefile Kod: EXE = MultiBoot MultiBoot.c Kod: #include <exec/memory.h> Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: Alpyre üzerinde Aralık 02, 2016, 21:13:13 ÖS printf()'lere dönmende bir sakınca görmüyorum. Lakin SAS/C ile derlerken kodun kendi printf() implementasyonunu içeren amiga.lib ile linkleniyor ki standart kütüphaneden bir sembol kullanmana rağmen standart kütüphane kullanılmamış oluyor.
Hatta kodunun printf()'li hali, Execute("Echo ...")'lu haline göre çok daha optimize çalışacaktır diye düşünüyorum. Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: Alpyre üzerinde Aralık 02, 2016, 21:18:34 ÖS ...ve hatta bana sorarsan Execute("Assign ...") kullanmak yerine dos.library fonksiyonu AssignPath()'i kullansan daha daha da optimize olacaktır. ;)
Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: Simon (Özay Turay) üzerinde Aralık 02, 2016, 21:39:51 ÖS ...ve hatta bana sorarsan Execute("Assign ...") kullanmak yerine dos.library fonksiyonu AssignPath()'i kullansan daha daha da optimize olacaktır. ;) Bana bunlarla gel abicim. :)http://amigadev.elowar.com/read/ADCD_2.1/Includes_and_Autodocs_3._guide/node0142.html (http://amigadev.elowar.com/read/ADCD_2.1/Includes_and_Autodocs_3._guide/node0142.html) Bu (V36) ibaresi bu fonksiyonun Kickstart 2.0 ile geldiğini göstermyor değil mi? Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: Alpyre üzerinde Aralık 02, 2016, 22:28:58 ÖS Bu (V36) ibaresi bu fonksiyonun Kickstart 2.0 ile geldiğini göstermyor değil mi? Ooops! Evet gösteriyor. :o O zaman sadece printf()... :D Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: emarti üzerinde Aralık 06, 2016, 20:34:02 ÖS @Simon abi şu multiboot kullanımını biraz açar mısın? Nasıl kullanacağız?
Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: Simon (Özay Turay) üzerinde Aralık 06, 2016, 23:27:19 ÖS @Simon abi şu multiboot kullanımını biraz açar mısın? Nasıl kullanacağız? MultiBoot sadece bir şekilde Amiga'sında ROM Switcher olanların işine yarayacak. Şöyle ki, eğer sistemi 1.3 ROM ile açarsam Workbench 1.3 yüklensin, 3.0 ROM ile açarsam Workbench 3.1 yüklensin, 3.1 ROM ile açarsam ClassicWB LITE yüklensin, üstelik bunu yapmak için sadece bir tane bootable partition yeterli olsun gibi. :) Tabi buna paralel bir de 4 adet ROM arasında geçiş yapabilen, CTRL+Amiga+Amiga tuşlarına 5 saniyeden uzun basınca bir sonraki ROM'a geçiş yapabileceğimiz, böylece kasayı delip switch falan takmamız gerekmeyecek bir ROM Switcher projesi de olacak. 8) Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: Alpyre üzerinde Aralık 07, 2016, 09:48:04 ÖÖ Tabi buna paralel bir de 4 adet ROM arasında geçiş yapabilen, CTRL+Amiga+Amiga tuşlarına 5 saniyeden uzun basınca bir sonraki ROM'a geçiş yapabileceğimiz, böylece kasayı delip switch falan takmamız gerekmeyecek bir ROM Switcher projesi de olacak. 8) Bunu nasıl yapacaksın hiç bilmiyorum ama "CTRL+Amiga+Amiga tuşlarına 5 saniyeden uzun basmak" yerine (eğer mümkünse) 'CTRL+Amiga+{1|2|3|4}' gibi bir tuş kombinasyonu ile doğrudan ilgili ROM'a geçiş yapılabilse daha kullanışlı olmaz mı? Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: emarti üzerinde Aralık 07, 2016, 12:12:42 ÖS @Simon abi şu multiboot kullanımını biraz açar mısın? Nasıl kullanacağız? MultiBoot sadece bir şekilde Amiga'sında ROM Switcher olanların işine yarayacak. Şöyle ki, eğer sistemi 1.3 ROM ile açarsam Workbench 1.3 yüklensin, 3.0 ROM ile açarsam Workbench 3.1 yüklensin, 3.1 ROM ile açarsam ClassicWB LITE yüklensin, üstelik bunu yapmak için sadece bir tane bootable partition yeterli olsun gibi. :) Tabi buna paralel bir de 4 adet ROM arasında geçiş yapabilen, CTRL+Amiga+Amiga tuşlarına 5 saniyeden uzun basınca bir sonraki ROM'a geçiş yapabileceğimiz, böylece kasayı delip switch falan takmamız gerekmeyecek bir ROM Switcher projesi de olacak. 8) Abi bu proje ne zaman dağıtıma çıkacak? Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: Simon (Özay Turay) üzerinde Aralık 07, 2016, 15:35:01 ÖS Bunu nasıl yapacaksın hiç bilmiyorum ama "CTRL+Amiga+Amiga tuşlarına 5 saniyeden uzun basmak" yerine (eğer mümkünse) 'CTRL+Amiga+{1|2|3|4}' gibi bir tuş kombinasyonu ile doğrudan ilgili ROM'a geçiş yapılabilse daha kullanışlı olmaz mı? Maalesef kolayca yapılabileceğini sanmıyorum, ama _KBReset sinyalinden çekilecek tek bir hat ile uzun reset (kaç saniye olacağını kararlaştırırız) kolayca tespit edilebilir MCU içinden. 8)Abi bu proje ne zaman dağıtıma çıkacak? O konuda net bir zaman veremiyorum ne yazık ki. ::)Konu Başlığı: Ynt: AmigaOS 1.3 Ortam Değişkenleri Problemi Gönderen: emarti üzerinde Aralık 07, 2016, 17:03:19 ÖS @Simon abi şu net verememek retro camiasına 6-0 gibi bir durum.
|