1

1. Oki, najkrótszy możliwy powrót z programu do DOSa (dowolnego) w assemblerze? (samo RTS ani jmp $e474 nie działa - przynajmniej pod emulcem - siedzę w pracy)?
2. Czy Init muszę ustawić na $2E0 (ewentualnie wyżej)?
Sorry za badziewne pytania, ale nie znam assemblera, a zależy mi na czasie...

Sikor umarł...

2

1. jmp ($0a)

2. E?

KMK
? HEX$(6670358)

3 Ostatnio edytowany przez Pecus (2006-04-24 13:42:57)

RTS powinien zadzialac jesli nie grzebiesz w zmiennych systemowych a DOSa w szczegolnosci, a jesli Ci nie dziala skok pod wektor reset, to musiales cos popsuc w samym DOSie lub w wektorach wlasnie.

Oczywiscie przedpiszca podal najkulturalniejsza metode :)

Co do drugiego pytania to nie rozumiem??? Na co chcesz ustawiac INIT i po co?
$2e0 to jest RUN a nie INIT, podajesz tam adres startu programu, a INIT nie dotykasz poprostu.

Bla bla bla bla, bla bla bla. Bla bla bla - bla - bla. Blabla bleee.

4

do init tez mozna wpisac conieco. podczas ladowania po wpisaniu czegokolwik do init program wystartuje. rtsem konczysz init a zaczynasz dalsza czesc ladowania. initow podczas wczytywania moze byc wiecej. run tylko jeden. init jest ok.

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

5

Zalezy, co się chce uzyskać. Init ($02e2) słuzy do uruchamiania części programu przed załadowaniem całości, po RTS loader próbuje ładować dalsze części pliku. Dlatego do uruchamiania normalnego programu lepiej jest używac wektora RUN $02E0, a init tylko wtedy kiedy chcesz mieć np. czołówkę widoczną podczas wczytywania albo co tam innego uruchomionego zanim cały program się wczyta. Taki ficzer.

KMK
? HEX$(6670358)

6

Oki. Dzięki za info.
Z tego wniosek - że jest coś zwalone w emulatorze albo w assemblerze, którego testowo używam pod emulatorem (QA). Próba wyjścia do DOS-u przez RTS i przez wektor $0a kończy sie u mnie zwisem emulatora (DOS 2.5 z CP i bez CP, DOS II+/D  wersja 6.4. Może coś zwaliłem, ale pętle testujące działają bezproblemowo z poziomu QA, a po wygenerowaniu .obj program (he, he...) działa, a po próbie wyjścia do dosu wiesza się emulator.
Zrobię zaraz próbę pod jakimś cross-assemblerem, choć i tak zamierzam coś napisać w domu - tu nie ma warunków, chciałem tylko coś sprawdzić...

Sikor umarł...

7 Ostatnio edytowany przez drac030 (2006-04-24 13:57:36)

Nie chciałbym cię zniechęcać, ale przyczyną takich numerów jest w 99,999% błąd w programie, a nie w procesorze, systemie ani emulatorze. RTS wróci do DOS-u tylko wtedy, jeśli nie skaszanisz zawartości stosu i nie wywołasz tego rozkazu z podprogramu ...

KMK
? HEX$(6670358)

8

Dokladnie tak.
Dobrze napisany program pod DOSa musi wrocic do niego po ostatnim RTS, jesli nie wraca to wina programu.

Bla bla bla bla, bla bla bla. Bla bla bla - bla - bla. Blabla bleee.

9

drac030 napisał/a:

jeśli nie skaszanisz zawartości stosu i nie wywołasz tego rozkazu z podprogramu ...

Z podprogramu tez moze, musi tylko zadbac o stos (PLA PLA RTS?)

10 Ostatnio edytowany przez Pecus (2006-04-24 14:19:37)

Albo na starcie programu dac

TSX
STX stos

a na koncu:

LDX stos
TXS
RTS

i podprogramy nie straszne :)

Bla bla bla bla, bla bla bla. Bla bla bla - bla - bla. Blabla bleee.

11

Chyba jednak jmp ($0a) zajmuje mniej miejsca i powoduje mniej zachodu.

KMK
? HEX$(6670358)

12

o.k. - poszło tym razem Konradowe jmp. Dzięki wielkie ;)

Sikor umarł...

13

Ale tak, czy inaczej sprawdz dokladnie ten program, bo cos miesza, skoro wychodzi tylko przez bezposredni skok do DOSa.

Bla bla bla bla, bla bla bla. Bla bla bla - bla - bla. Blabla bleee.

14

Pecuś: na pewno miesza, ale to praktycznie rzecz biorąc raczkowanie w asmie jest. Praktycznie to nawet nie jest program, ale ważne że póki co coś mi działa...

Sikor umarł...

15

Sikor: nie przejmuj się... każdy tak zaczynał... jak już coś działa to jest największa satysfakcja ;) krok po kroku... coraz bardziej rozbudowane procedurki... i tak za jakiś czas jaki miker wyskoczy ze swoim "Napisz demo!" tylko ziewniesz i odpowiesz od niechcenia: "no skoro nalegasz..." ;)

16

ph34r! Ratowanie kompo nabierze nowych, niespotykanych do tej pory wymiarów :P

Czy możecie wyjaśnić, Stirlitz, dlaczego wasz służbowy adres stirlitz@rsha.gov.de ma aliasa justas@gru.su?
Nie czytam PM. Proszę używać e-mail.

17 Ostatnio edytowany przez Sikor (2006-04-24 19:09:56)

Oki, problem jest taki: procedurka wraca RTS-em, wszystko jest niby o.k. pod Q.A. - pierwsze kroki poczynione. Tylko, jak staram się uruchomić spod DOSa lub Qmega - to się wiesza... ORG startowe ustawione w QA na $8000, MemHi na $9000 i $A000 próbowałem - efekt ten sam. Jakiś głupi błąd muszę robić... Może mnie ktoś nakierować na przyczynę...?
Jak piszę: spod QA wszystko działa jak ta lala...

Jakby co: opt %0110110
Start programu spod $8000

Sikor umarł...

18

Moze poka zrodlo to cos wymyslimy.

19

A masz w SETup ustawiony adres startu taki jak w ORG

20 Ostatnio edytowany przez Sikor (2006-04-24 20:45:01)

Zenon: mam
Dobra, połowicznie poszło - idzie i wraca do DOS-u. Jeszcze muszę zadbać (jak napisali przedmówcy) o stos ;)
Lewis: nie ma się czym chwalić... To praktycznie moje pierwsze wypociny, więc...
------------------------------------
O.K. -> Mam buga ;) Dzięx za pomoc - pewnie się jeszcze nie raz będę zgłaszał ;)
Działa ;)

Sikor umarł...

21

bo kto nie zagłosuje prawidłowo na najbliższym kompo - na prace napisane w assemblerze rzecz jasna - zostanie spalony na STOSIE :P

Kontakt: pin@usdk.pl

22

a co? na turbo beja mam glosowac? :P

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

23

sikor jak nie pokazesz kodu to nikt ci nie pomoze bo i niby jak?
Kod moze byc slaby :) przeciez wiemy ze deopiero zaczynasz. nie ma sie co wstydzic :)

24

Mikey: wiem, ale udało mi się go poprawić samodzielnie. Powiedzmy, że tego na razie nawet nie mogę nazwać kodem ;( W każdym razie - Wasze uwagi bardzo wiele pomogły w rozwiązaniu problemu, więc na razie wielkie dzięki ;) Na pewno jeszcze będę zadawał wiele "trudnych" pytań, ale jak znajdę chwilkę, aby usiąść i zagłębić się mocniej w assemblera. Po prostu nie chcę kompilować pod TB rzeczy, która może zajmować jakieś 2-3 kilo (linker zrobi z tego 17-18), a rzecz jest zbyt banalna, aby ją omawiać.

Sikor umarł...

25

w 3-4 kilach to mozna zmiescic ze hoho

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