atarionline.pl BRUN - TBXL - newbe question - Forum Atarum

    Jeśli chcesz wziąć udział w dyskusjach na forum - zaloguj się. Jeżeli nie masz loginu - poproś o członkostwo.

    • :
    • :

    Vanilla 1.1.4 jest produktem Lussumo. Więcej informacji: Dokumentacja, Forum.

      • 1:
         
        CommentAuthorxeen
      • CommentTime25 Aug 2010 22:08 zmieniony
       
      absolutnie banalne (chyba) pytanie,

      mam dowolny program o nazwie X w tbxl, może być
      np. 10 ? "sdfsdf"
      kompiluję go kompilatorem, linkuję linkerem z runtimem i jako wynikowy program mam X.COM. jeżeli uruchamiam go z pod DOS'a wszytsko jest ok. jeżeli uruchamiam go za pomocą komendy BRUN w dowolnym programie w TBXL mam "zawieszkę". Dla programików nie powstałych jako kompilacja+linkowanie z runtime'em tbxl komenda działa. Dlaczego?
      z góry dziękuję za pomoc.
      • 2:
         
        CommentAuthorPecus
      • CommentTime26 Aug 2010 00:08
       
      Prawdopodobnie biblioteki, które linkujesz ze skompilowanym programem zajmują w pamięci RAM to samo miejsce co interpreter Turbo Basica XL. W związku z tym zamazują w czasie ładowania kod interpretera i stąd zawsze w takiej sytuacji będziesz miał zwis.
      • 3:
         
        CommentAuthorxeen
      • CommentTime26 Aug 2010 07:08
       
      dzięki
      ale ja wywołuje skompilowany i zlinkowany program X, z inego skompilowanego i zlinkowanego programu - nie potrzebuję zatem interpretera w pamięci. przypuścimy że linkuję obiekt CTB tylko z runtime.com - nie ma żadnych innych bibliotek. Dostaje wtedy strasznie dziwny błąd - ERROR 130 in ZEILE 65536 (?!) - taki TBXLOWY klimat - tylko skąd ten błąd w takiej dziwnej linii. Co więcej ponowienie (czyli komenda RUN) właściwie działa poprawnie i zgodnie z oczekiwaniami.
      Tak jakby program wywoływany się zawieszał, a nie program z którego coś wołam.
      • 4:
         
        CommentAuthorlarek
      • CommentTime26 Aug 2010 09:08
       
      1.Bibliotekę wczytujesz tylko raz, z pierwszym uruchamianym programem. Kolejne programy w TBXL wystarczy tylko skompilować. Nie trzeba i wręcz nie można ich znów łączyć z bibioteką RUNTIME! Bo po co? Wystarczy, że raz została wczytana.
      2.Kolejne skompilowane programy wczytujemy instrukcją RUN"D:nazwa.CTB", a nie BRUN! Ta ostatnia służy do wczytania i uruchomienia pliku dosowego, a plik CTB takim nie jest!
      3.Nie ma potrzeby w ogóle łączyć biblioteki z programem. Plik RUNTIME.COM ma wbudowany mechanizm automatycznego odczytu skompilowanego programu CTB! Wystarczy, że nasz program nazwiesz "AUTORUN.CTB". Biblioteka też może byc uruchomiona automatyczne (w DOS 2.5 trzeba zmienić nazwę na AUTORUN.SYS, w DOS II wykonać polecenie JOB RUNTIME.COM, a w MyDOS zmienić rozszerzenie na *.AR0) i wtedy wszystko ładnie się po kolei uruchamia. Linkowanie programu z biblioteką ma sens, gdy chcemy mieć program w jednym pliku. Gdy i tak całość się doczytuje, to linkowanie biblioteki traci sens.
      • 5:
         
        CommentAuthorxeen
      • CommentTime26 Aug 2010 10:08
       
      dzięki, larek

      tak, oczywiście masz rację - linkowanie kolejnych części to strata np. miejsca na dysku i mija się z celem,
      ale w ogólności sytuacja może być inna.
      niekoniecznie zawsze możesz mieć CTB, możesz mieć od innego dostawcy zlinkowany program i z powodu x chcesz po porstu użyć BRUN. nie rozumiem właśnie dlaczego wręcz nie można tego robić i powoduje to tecnicznie problemy.