26

?? U mnie reset nie zawiesza kompa. Czy to przypadłość sparty? (Uwaga! Nie traktuję tego jako błąd, tylko jako czysta ciekawość)?

Sikor umarł...

27

Moim zdaniem jest to nie tyle "przypadłość", co zupełnie prawidłowa reakcja na ustawiony w krzaki, ważny wektor. Zostaw tak wektor VBL-a ustawiony w obszar, gdzie MyDOS ładuje DUP.SYS, po wyjściu z programu będzie zwis: nazwiesz to "przypadłością MyDOS-a"?

Oczywiście, nie ma większego problemu ze zresetowaniem DOSINI przez DOS po wyjściu z programu, tylko dlaczego nie robi tego sam program (skoro i tak zapamiętuje poprzednią wartość wektora)?

KMK
? HEX$(6670358)

28

No, ja używam MyDOSa i nie zauważyłem problemów. Nieważne - skoro są źródła, to można by było poprawić.

Sikor umarł...

29 Ostatnio edytowany przez Pin (2013-03-20 19:49:42)

... linker jest w postaci niekompilowanej, zobaczę tam. Jeśli nie dojdę do tego co i jak to podeślę. Może tak być?

wektor DOSINI to stała wartość, cze ew. gdzieś tego konkretnie szukać? (pytam, nie znam się, ja tu służbowo na statek jestem. Kapitanie Pikard ;) )

Sikor. To, że używasz MyDOS'a nie oznacza, że problem nie istnieje ;)-

Kontakt: pin@usdk.pl

30

pin: https://www.google.pl/search?q=atari+memory+map+dosini

The UNIX Guru`s view of Sex:
unzip; strip; touch; finger; mount; fsck; more; yes; umount; sleep

31

Program, o który chodzi, jest w liniach data. Z nich w linii trzeciej od końca, sześć cyferek przed jej końcem, się to zaczyna:

A90085

a w następnej:

09A50CA40D8D7E208C7F20A97DA020850C840DA9FE8D01D3 ... itd.

Wyboldowana część to zapis do DOSINI.

KMK
? HEX$(6670358)

32

> Linker robi jedno fopa: dodany przez niego kod, oprócz różnych bez wątpienia pożytecznych rzeczy, przestawia też wektor DOSINI ($0c/d) tak żeby wskazywał adres $207D (początek skompilowanego programu). Po pierwsze: po co?

pod tym adresem na 100% znajduje sie skok pod adres ktory znajdowal sie w dosini PRZED uruchomieniem programu czyli po prostu programista zazyczyl sobie po resecie wykonanie oprocz niewatpliwie wazneych rzeczy ustawionych przez dos takze jego procedury - bardzo czesty zabieg bardzo czesto opisywany...


> Po drugie: wartość tego wektora nie jest przywracana po zakończeniu programu, skutkiem czego wciśnięcie RESET zawiesza komp.

jesli autor po reset zyczy sobie autostart programu i nie przewiduje "zakonczenia programu" innego niz power off to jest to zwiecha nastapi tylko przy niektorych dos i to nie jest wina programu...


> 09A50CA40D8D7E208C7F20A97DA020850C840DA9FE8D01D3 ... itd.

a pare bajtow wczesniej ustawia skok pod stary wektor dosini przy resecie (pogrubione) przed wykonaniem procedury usera.

http://atari.pl/hsc/ad.php?i=1.

33

xxl, po pierwsze: to jest kod LINKERA, który linkuje z biblioteką programy skompilowane w TBXL. Więc autor (linkera) nie może sobie "nie życzyć zakończenia programu", poniewaz nie jest w stanie przewidzieć, czy kompilowany program się nie kończy.

Po drugie, nawet gdybym tego nie sprawdził, sama logika nakazuje przypuszczać, że inicjalizacja po resecie jest przedłużona pod "zapamiętany" (jak napisałem wyżej) adres DOSINI, gdyż inaczej każdy reset kasowałby z pamięci DOS.

Po trzecie, nie zaśmiecaj wątku.

KMK
? HEX$(6670358)

34

Dobra. "Zanopowałem" ciąg "850C840D" w linkerze. Po linkowaniu do EXE wszystko jest ok. Problem częściowo rozwiązany a częściowo, bo teraz linker gubi informację na temat D: i trzeba mu wskazać, na którym dysku jest RUNTIME2.EXE :)

Kontakt: pin@usdk.pl

35

Ale gubienie "informacji na temat D" nie jest chyba związane z DOSINI w żaden sposób.

KMK
? HEX$(6670358)

36

Nie, więc w chwili wolnej sprawdzę dlaczego tak się dzieje. To już kwestia kodu linkera w TBXL. Przynajmniej tak mi się wydaje.

Kontakt: pin@usdk.pl

37

Hmmm, artek z Happy Computer: http://www.tmeyer.de/atari/hc_turbo-basic_compiler.pdf - jest tam runtime, ale ja jestem za głupi, aby go przerobić... Jakby wyrzucić kilka nieprzydatnych funkcji i deko poprawić...
http://www.tmeyer.de/atari/hc_turbo-bas … r_info.pdf - artek o kompilatorze

Sikor umarł...