commodore.gen.tr

Amiga => Amiga Yazılım => Konuyu başlatan: Simon (Özay Turay) üzerinde Kasım 25, 2016, 19:53:59 ÖS



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;
BPTR lock;
BOOL exists = FALSE;

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)
{
  UnLock (lock);
  exists = TRUE;
}

if (exists)
  exit (RETURN_OK);
else
  exit (RETURN_WARN);

...ş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[])
{
  int returnCode = RETURN_OK;
  struct Library *DOSBase = NULL;
  if (DOSBase = OpenLibrary(DOSNAME, 33))
  {
   
    // Program Kodları Burada
   
    CloseLibrary(DOSBase);
  }
  else
  {
    printf("Unable to open dos.library\n");
    returnCode = RETURN_ERROR;
  }
  exit(returnCode);
}

ş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... :)
Ha ha ha, ben alt klasörlere odaklanmışım koskoca main.c dosyasını görmemişim. :D


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? :D


Konu 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ü?
Hmm. Bu linki bulduğun iyi olmuş. Umarım çalışır.

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ı? :o
Hı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)
{
  char buffer[BUFSIZE] = {0};
  BPTR envFile = Open(fileName, MODE_READWRITE);
  if (envFile)
  {
    Read(envFile, buffer, BUFSIZE);
    Close(envFile);
    removeSpecial(envVar, buffer);
  }
}


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)
{
  char buffer[BUFSIZE] = {0};
  BPTR envFile = Open(fileName, MODE_READWRITE);
  if (envFile)
  {
    Read(envFile, buffer, BUFSIZE);
    Close(envFile);
    removeSpecial(envVar, buffer);
  }
}

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;
dosya = fopen("dosyaismi","r");

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;
dosya = fopen("dosyaismi","r");
gibi kullanıyorum. C'de birlik yok :)

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;
dosya = fopen("dosyaismi","r");
gibi kullanıyorum. C'de birlik yok :)

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;
dosya = fopen("dosyaismi","r");
gibi kullanıyorum. C'de birlik yok :)
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?

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;
dosya = fopen("dosyaismi","r");
gibi kullanıyorum. C'de birlik yok :)
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?

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.
Bu konuda yorum alabilir miyim? Execute komutunda sorun yok çünkü
Kod:
MultiBoot Echo "** Preparing" KS13OSLabel ""
sorunsuz çalışıyor. En sonunda hardcoded scripte döneceğim galiba. :(


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.
Gönderdiğim arşivde SAS/C için uygun makefile vardı oysa ki. :)
yok senin makefile'ı kullandım ama alt klasör mantığını anlamadığımdan dolayı öyle derleyemedim.

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

CC = sc:c/sc
LD = sc:c/sc

all : $(EXE)

main.o : main.c
$(CC) nolink main.c

OBJS = main.o

$(EXE) : $(OBJS)
$(LD) link $(OBJS)

clean:
-delete $(EXE)
-delete $(EXE).lnk
-delete $(EXE).info
-delete $(OBJS)


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 ""
sorunsuz çalışıyor. En sonunda hardcoded scripte döneceğim galiba. :(

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.

Ekrana "Assign SYS: DH0:Workbench1.3" şeklinde bilgilendirme yapmak istiyorsan:
Kod:
Execute("Echo Assign SYS: DH0:Workbench1.3");
...satırı eklemelisin.

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
MultiBoot Assign SYS: KS13OSDrawer

ş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
MultiBoot Assign SYS: KS13OSDrawer
şeklinde test ettiğinde assign atanıyor mu 1.3'te?

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

CC = SC
LD = SC

all : $(EXE)

MultiBoot.o : MultiBoot.c
   $(CC) nolink MultiBoot.c

OBJS = MultiBoot.o

$(EXE) : $(OBJS)
   $(LD) link $(OBJS)

clean:
   -delete $(EXE)
   -delete $(EXE).info
   -delete $(EXE).lnk
   -delete $(OBJS)

MultiBoot.c
Kod:
#include <exec/memory.h>
#include <proto/exec.h>
#include <proto/dos.h>
#include <string.h>

#define BUFSIZE 108  // AmigaDOS Maximum Path Length + 1

const char __ver[40] = "$VER: MultiBoot 1.0 (27.11.2016)";

extern void exit(int);

void removeSpecial(char* outStr, char* inStr)
{
  int count = 0;
  while (inStr[count] != 0)
  {
    if ((inStr[count] >= 32) && (inStr[count] <= 127)) outStr[count] = inStr[count];
    count++;
  }
  outStr[count] = 0;
}

void getEnvVar(char *envVar, char* fileName)
{
  char buffer[BUFSIZE] = {0};
  BPTR envFile = Open(fileName, MODE_OLDFILE);
  if (envFile)
  {
    Read(envFile, buffer, BUFSIZE);
    Close(envFile);
    removeSpecial(envVar, buffer);
  }
}

void myEcho(char* echoText1, char* echoText2, char* echoText3)
{
  char* echoCommand = "Echo";
  char* commandLine = (char*) AllocMem(strlen(echoCommand) + strlen(echoText1) + strlen(echoText2) + strlen(echoText3) + 6, MEMF_PUBLIC | MEMF_CLEAR);
  strcat(commandLine, echoCommand);
  strcat(commandLine, " \"");
  strcat(commandLine, echoText1);
  strcat(commandLine, " ");
  strcat(commandLine, echoText2);
  strcat(commandLine, " ");
  strcat(commandLine, echoText3);
  strcat(commandLine, "\"");
  Execute(commandLine, NULL, NULL);
  FreeMem(commandLine, strlen(commandLine));
}

void myAssign(char* assignName, char* assignDrawer)
{
  char* assignCommand = "Assign";
  char* commandLine = (char*) AllocMem(strlen(assignCommand) + strlen(assignName) + strlen(assignDrawer) + 5, MEMF_PUBLIC | MEMF_CLEAR);
  strcat(commandLine, assignCommand);
  strcat(commandLine, " ");
  strcat(commandLine, assignName);
  strcat(commandLine, " \"");
  strcat(commandLine, assignDrawer);
  strcat(commandLine, "\"");
  Execute(commandLine, NULL, NULL);
  FreeMem(commandLine, strlen(commandLine));
}

int myExists(char* existsDrawer)
{
  BPTR lock = Lock(existsDrawer, ACCESS_READ);
  if (lock)
  {
    UnLock (lock);
    return(RETURN_OK);
  }
  return(RETURN_WARN);
}

int main(int argc, char* argv[])
{
  int returnCode = RETURN_OK;
  struct Library *DOSBase = NULL;
  if (DOSBase = OpenLibrary(DOSNAME, 33))
  {
    if (argc > 1)
    {
      if (stricmp(argv[1], "Assign") == 0)
      {
        if (argc > 3)
        {
          char assignDrawer[BUFSIZE];
          char* envPrefix = "ENV:";
          char* envFile = (char*) AllocMem(strlen(envPrefix) + strlen(argv[3]) + 1, MEMF_PUBLIC | MEMF_CLEAR);
          strcat(envFile, envPrefix);
          strcat(envFile, argv[3]);
          getEnvVar(assignDrawer, envFile);
          FreeMem(envFile, strlen(envFile));
          if (strlen(assignDrawer) > 0) myAssign(argv[2], assignDrawer);
        }
        else
        {
          myEcho("Usage:", argv[0], "Assign Name Drawer");
        }
      }
      else if (stricmp(argv[1], "Echo") == 0)
      {
        if (argc > 4)
        {
          char echoText[BUFSIZE];
          char* envPrefix = "ENV:";
          char* envFile = (char*) AllocMem(strlen(envPrefix) + strlen(argv[3]) + 1, MEMF_PUBLIC | MEMF_CLEAR);
          strcat(envFile, envPrefix);
          strcat(envFile, argv[3]);
          getEnvVar(echoText, envFile);
          FreeMem(envFile, strlen(envFile));
          if (strlen(echoText) > 0) myEcho(argv[2], echoText, argv[4]);
        }
        else
        {
          myEcho("Usage:", argv[0], "Echo Text1 Text2 Text3");
        }
      }
      else if (stricmp(argv[1], "Exists") == 0)
      {
        if (argc > 2)
        {
          char existsDrawer[BUFSIZE];
          char* envPrefix = "ENV:";
          char* envFile = (char*) AllocMem(strlen(envPrefix) + strlen(argv[2]) + 1, MEMF_PUBLIC | MEMF_CLEAR);
          strcat(envFile, envPrefix);
          strcat(envFile, argv[2]);
          getEnvVar(existsDrawer, envFile);
          FreeMem(envFile, strlen(envFile));
          if (strlen(existsDrawer) > 0) returnCode = myExists(existsDrawer);
        }
        else
        {
          myEcho("Usage:", argv[0], "Exists DrawerName");
        }
      }
      else
      {
        myEcho("Usage:", argv[0], "[Assign/Echo/Exists] Parameters");
      }
    }
    else
    {
      myEcho("Usage:", argv[0], "[Assign/Echo/Exists] Parameters");
    }
    CloseLibrary(DOSBase);
  }
  else
  {
    // myEcho("Unable to open dos.library", "", "");
    returnCode = RETURN_ERROR;
  }
  exit(returnCode);
}


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.