1 Ostatnio edytowany przez ArchieIl (2008-04-15 19:07:09)

Co myślicie o OS-ie, który potrafiłby:

* ładować wszystkie programy tak jak do tej pory ale z wracaniem do OS po ich zakończeniu bez konieczności startu z nośnika. (również dla gier)
* posiadałby własny format aplikacji natywnych
* aplikacje te mogłby używać bibliotek zewnętrznych dynamicznie dołączanych
* OS zarządzałby pamięcią, pamięcią ekranową, stroną 0, stosem oraz pamięcią rozszrzoną w tym tą pod ROM
* pozwalał na multitasking z wywłaszczaniem, wielookienkowość i oddzielne procedury obsługi przerwań w poszczególnych aplikacjach oraz zarządzał TRS-ami, a nie tylko je ignorował.
* realizował szybkimi procedurami synchronicznymi oraz asynchronicznymi operacje I/O co odzależniłoby aplikacje od tego z jakiego I/O chciałby korzystać użytkownik.
* posiadał zarządzenie pamięcią blokami po 256bajtów
* pozwalał na komunikację międzyprocesową zarówno buforowaną jak i nie buforowaną

i realizował wiele innych rzeczy, które normalny OS powinien realizować.

Za to najważniejsza cecha:
działałby na gołym Atari z minimum 48K RAM i 16K ROM lub RAM używanym przez ów OS. Oczywiście
pełne możliwości byłyby widoczne dopiero na bardziej rozbudowanej maszynie ;)

Najgorsza cecha:
na dziś mam tylko rozpisane na papierze mechanizmy i nie sprawdzone zarządzanie przerwaniami, reset, nmi itp. tzn. część związaną z przerwaniami z pamięci generowałem i może się okazać trudniejsza do wykonania niż w tej chwili wygląda (m.in. dotyczy to asynchronicznych procedur I/O).

P.S. Nie śmiejcie się za bardzo. Czekam raczej na coś merytorycznego... Po lecie (październik) powinienem z tego zrobić co najmniej jeden fragment związany z zarządzaniem programami bez konieczności ciągłego odczytu systemu z dysku. tzn. najbardziej mnie w Atari wkurzał brak wracania do DOS/BASIC z większości programów i tyle chciałbym zrobić przy braku zainteresowania drugą częścią projektu.

--
1985? - DA'Fuzz, 1987? - Meritum, 1989? - Atari 130XE, 1992 - PC/AT, 2008 - Atari 130XE + Meritum

2

Trochę z tego zrealizowane jest już pod SDX, oraz w DracOS http://drac030.krap.pl/ np.

ArchieIl napisał/a:

* ładować wszystkie programy tak jak do tej pory ale z wracaniem do OS po ich zakończeniu bez konieczności startu z nośnika. (również dla gier)
* aplikacje te mogłby używać bibliotek zewnętrznych dynamicznie dołączanych
* OS zarządzałby pamięcią, pamięcią ekranową, stroną 0, stosem oraz pamięcią rozszrzoną w tym tą pod ROM
* ........zarządzał TRS-ami.....
* realizował szybkimi procedurami synchronicznymi oraz asynchronicznymi operacje I/O co odzależniłoby aplikacje od tego z jakiego I/O chciałby korzystać użytkownik.

3

Nie znalazłem opisu i tego jak to funkcjonuje.

Z rzeczy "marzeniowych" dla mnie jest komunikacja międzyprocesowa (rzeczy typu: dir | more lub type text.txt | convert pl atascii | more) oraz biblioteki dynamiczne (tyle, że tutaj trzeba też kompilatory modyfikować :-( ).

A jak są zrobione dynamiczne biblioteki w DracOS? Ten OS tylko dla 16bit procesora jest? Czy też mówimy o czym innym?

--
1985? - DA'Fuzz, 1987? - Meritum, 1989? - Atari 130XE, 1992 - PC/AT, 2008 - Atari 130XE + Meritum

4

jak również w nakładce graficznej na tegoż:

http://atariki.krap.pl/index.php/TRS_Desktop

ArchieIl napisał/a:

Nie znalazłem opisu i tego jak to funkcjonuje.

Lekturę polecam zacząć o stąd.

I Ty zostaniesz big endianem...

5

Brak wracania do DOS-a po zakończeniu też mnie kiedyś wkurzał... ale odkąd mam HDD via KMK/JZ IDE i DOS i po boot w sekundę mam załadowanego MyDOS-a, a kombinacja zimnego startu z Q-Megiem działa zawsze, to "powrót do DOS-a" przestał być dla mnie problemem :P
Btw. chyba ktoś jest nieco "nie w temacie" skoro pisze o powrocie do "BASIC-a" - Atari to nie C64/Spectrum, tutaj Basic nie pełnił nigdy poważnej namiastki OS-a :P

6

;-)

Programy w BASIC potrafią nie wrócić do tegoż pomimo różnych dobrych chęci.

Właśnie oglądam page6 i atr-y, które były do niego dołączane.

Swoją drogą jest to naprawdę ciekawa lektura. Tylko trzeba pamiętać o braku łatwo dostępnej dokumentacji ponad instrukcja BASIC-a do Atari na początku istnienia tego pisma.

Wracając do tematu. Nie widzę sensu podłączać twardy dysk tylko po to żeby mi szybciej od zera się podnosił komputer po zawieszce.
Mam nadzieję na jakieś konkretniejsze informacje albo źródła tych informacji zarówno względem DracOS jak i owej nakładki. Nakładka wygląda, że ma sens dopiero po dodaniu 16bit procka działającego z co najmniej 4MHz.

--
1985? - DA'Fuzz, 1987? - Meritum, 1989? - Atari 130XE, 1992 - PC/AT, 2008 - Atari 130XE + Meritum

7 Ostatnio edytowany przez Pin (2008-04-15 20:14:30)

z całym szacunkiem dla projektu, ale nie ma sensu. Jest to działanie bez_celowe mając na względzie istnienie KMK/JŻ, oraz IDE'a w połączeniu ze Sparta DOS X np. 4.41 + DracOS na ten przykład. Wielość standardów oznacza ich brak, a problematyczność niektórych powyższych założeń przekracza zdrowy rozsądek. Jest to moje osobiste zdanie :)

Jak wyobrażasz sobie start programu, z wymuszeniem wyjścia przez co - przez SELECT + RESET jak w Qumeg'u?? :) - a jeśli program zapragnie danych z dysku, to jak - opracowanie nowego dosa, filesystemu pod osa, czy jak? - jakikolwiek pomysł na nowy filesystem o możliwościach co najmniej takich jakie posiada SDX, oraz dodanie funkcjonalności powyższych rozwiązań powoduje, iż na całość potrzeba by zapewne "nieco" więcej niż 16kB :) - dodatkowo otrzymując OS w którym wdrażając nowe rozwiązania należało by zaniechać niektórych istniejących rozwiązań. Można pozbyć się selftestu, można skrócić kod zachowując przy okazji tablicę skoków - ale i tak część programów skaczących w OS "na pałę" :) nie będzie działać prawidłowo. Co zresztą tyczy się DracOS'a, lecz niestety nie jest to problem samego osa, tyle co niewłaściwie napisanych programów.

a tak przy okazji niejako - dla programów nie posiadających normalnie możliwości wyjścia do dosa i namolnie po resecie powracających jak zły omen :) - pod SDX wymyślono "ctrl+alt+del" (Lizard/DLT) - sterowniczek dla Sparty umożliwiający wymuszenie wyjścia do dosa ustaloną w config.sys dziwną kombinacją klawiszy :) - np. ctrl+shift+inverse :)

Kontakt: pin@usdk.pl

8

Więc sugerujesz, że dysk twardy jest tylko po to, żeby po zawieszce szybciej startować ? Chyba sobie to dodam do fortunek ;)

9

nie wiem Mac - ale mi SDX po resecie wstaje około 3 sekundy ładując masę masy wszystkiego, co dobre :)

Kontakt: pin@usdk.pl

10

miker napisał/a:
ArchieIl napisał/a:

Nie znalazłem opisu i tego jak to funkcjonuje.

Lekturę polecam zacząć o stąd.

Znalazłem:
http://trub.atari8.info/sdx_files/4.41/ … amming.pdf.

Co do wgłębiania się w sens mojej realizacji to nie chce mi się.

Z chęcią jednak zobaczę co z tego co chciałbym mieć zostało zrobione. Ja spartę widziałem ostatni raz w wersji 3.x o ile nie wczesniej i bardziej na obrazku niż w rzeczywistym użyciu.

Jeśli do SDX znajdę źródła i dokładną dokumentację, a nie tylko pobieżny opis to możliwe, że włożę do niej tyle ile się da z tego co chciałbym żeby było zrobione ;-) zamiast kombinować z zastąpieniem OS-a w całości.

Tyle powiem, że nie widzę sensu zachowania zgodności z oryginalnym OS Atari w żadnym aspekcie. Wystarczy, że mam pomysł na loader, który pozwoli uruchomić dowolny stary program.

--
1985? - DA'Fuzz, 1987? - Meritum, 1989? - Atari 130XE, 1992 - PC/AT, 2008 - Atari 130XE + Meritum

11

"Wystarczy, że mam pomysł na loader, który pozwoli uruchomić dowolny stary program."

... jestem za, jeśli może być to jedyna modyfikacja OS - tylko z jakiego nośnika i na jakiej zasadzie chcesz to odpalić?

Kontakt: pin@usdk.pl

12

Pin napisał/a:

... jestem za, jeśli może być to jedyna modyfikacja OS - tylko z jakiego nośnika i na jakiej zasadzie chcesz to odpalić?

Ja na dziś startuję ze 130XE, magnetofonem na potrzeby testów różnorakich i SIO2PC.

Jeśli coś z tego wyjdzie to moim celem jest wygodny w użyciu system w konfiguracji: Atari ze stacją dysków przy założeniu, że OS jest w ROM lub 800XL (64KB RAM) ze stacją i system w RAM.

Docelowo na dziś za wcześnie żeby teoretyzować do czego coś takiego wkładać i w jaki sposób. Raczej gdybałbym jednak za ROM-em z bankowaniem podmieniającym i zawierającym również standardowy niż za kartem lub pracą całkowicie z dysku.

Wersja podstawowa pewnych rzeczy na pewno mieć nie będzie. np. swapowania pamięci na dysk na potrzeby uruchamiania niektórych "toporniej" pisanych programów ze względu na nikła pojemność dyskietek i wolny transfer.

--
1985? - DA'Fuzz, 1987? - Meritum, 1989? - Atari 130XE, 1992 - PC/AT, 2008 - Atari 130XE + Meritum

13 Ostatnio edytowany przez ArchieIl (2008-04-15 21:21:00)

Podsumuję to co przeczytałem o SDX:

* SpartaDOS nie posiada komunikacji międzyprocesowej
* brak jest zarządzania pamięcią nie licząc podstawowej relokacji programów i tego co jest od zawsze w ROM/MEMLO/MEMHI
* relokacja jest pełna/2bajty, a według mnie w zupełności wystarczy połowiczna, a co za tym idzie łatwiej, prościej, kompatybilniej.
* rzeczywiście biblioteki są dynamicznie ładowane ale jest to dosyć ograniczone i to program bibliotekę dodaje, a nie biblioteka jest ładowana do systemu. mnie interesuje załadowanie biblioteki, a nie sklejenie jej z programem, który ją używa. Nie jestem również pewny czy biblioteka może używać JMP. Wydaje mi się, że może ona jedynie poruszać się w obrębie swoim oraz wywołań systemowych.

W tej chwili tyle wyczytałem z tej dokumentacji SDX. Jeśli się mylę zapraszam.

Jedno pytanie dodam.
Czy pod 6502 istnieje jakiś assembler, który posiada opcje optymalizacyjne?
tzn. kilka rzeczy mam na myśli ale taka dosyć oczywista to automatyczny inline dla JSR-ów jeśli JSR jest wywoływany w programie tylko raz.

--
1985? - DA'Fuzz, 1987? - Meritum, 1989? - Atari 130XE, 1992 - PC/AT, 2008 - Atari 130XE + Meritum

14

ArchieIl napisał/a:

Jedno pytanie dodam.
Czy pod 6502 istnieje jakiś assembler, który posiada opcje optymalizacyjne?
tzn. kilka rzeczy mam na myśli ale taka dosyć oczywista to automatyczny inline dla JSR-ów jeśli JSR jest wywoływany w programie tylko raz.

mógłbyś przytoczyć jakiś przykładowy listing i sposób zachowania assemblera dla takiego przykładu, ogólnie to assemblery nie wyręczają programisty bez jego zgody, makra albo makro rozkazy generują dodatkowy kod z woli programisty

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

15 Ostatnio edytowany przez jellonek (2008-04-16 09:09:45)

ArchieIl: ciekawe kiedy ci przejdzie... jesli jednak nie tylko na checiach sie skonczy, a moze cos i zakodujesz - to polecam przyjrzec sie zrodlom contiki - masz tam i zarzadzanie pamiecia (ztcp z dokladnoscia do strony, albo do 16tu bajtow) i obsluge graficznych aplikacji, multitasking, stos tcp/ip, obsluge SLIP
z podobnych rzeczy - lunix - tez multitasking, tez zarzadzanie pamiecia...
btw. jak chcesz cos co bedzie optymalizowalo kod assemblerowy - jedyne takie narzedzie jakie znam pod 6502 - to opt65 z pakietu cc65.
o zrodlach SDX - zapomnij...

tebe: pewnie misiowi chodzi o przeniesienie procki wykonywanej przez jsr (z jego jednoczesnym wywaleniem), jesli przed labelem tej procki znajduje sie rts - cos jak "faktoryzacja" (refaktoryzacja tylko od dupy strony :P ) kodu.

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

16 Ostatnio edytowany przez ArchieIl (2008-04-16 09:58:18)

jellonek napisał/a:

ArchieIl: ciekawe kiedy ci przejdzie... jesli jednak nie tylko na checiach sie skonczy, a moze cos i zakodujesz - to polecam przyjrzec sie zrodlom contiki - masz tam i zarzadzanie pamiecia (ztcp z dokladnoscia do strony, albo do 16tu bajtow) i obsluge graficznych aplikacji, multitasking, stos tcp/ip, obsluge SLIP
z podobnych rzeczy - lunix - tez multitasking, tez zarzadzanie pamiecia...

Znam.

Znajomy nawet w tym grzebał tyle, że on jest od c-64, a nie od Atari.

Jak ktoś lubi udowadniać, że łopatą można przeprowadzać operację serca to już jego problem (LUnix z opisu jest rozsądniejszy tyle, że jeśli jest pod C-128 to wątpię w jego sens dla 6502 bez podmiany RAM dla strony 0).

Acz w wolnej chwili spojrzę do źródeł. Możliwe, że opisy nie oddają "sensu" tego projektu.

jellonek napisał/a:

btw. jak chcesz cos co bedzie optymalizowalo kod assemblerowy - jedyne takie narzedzie jakie znam pod 6502 - to opt65 z pakietu cc65.

cc65 mam z page6. Spojrzę do opisu. Może tam jest coś z interesujących mnie rzeczy.
Kiedyś miałem tylko to coś oficjalnego i podobno niezłego tyle, że nie miałem do tego opisu i QuickAssemblera, który podobno jest dla amatorów bo jest zintegrowany z edytorem ;-).

P.S. Ktoś tutaj ma jakieś wykształcenie informatyczne? Czy same złote rączki?

--
1985? - DA'Fuzz, 1987? - Meritum, 1989? - Atari 130XE, 1992 - PC/AT, 2008 - Atari 130XE + Meritum

17

Archiell, co do "rurki" (pipeline), to nie trzeba tego robić za pomocą komunikacji międzyprocesowej a'la Unix. Wystarczy to zrobić tak jak kiedyś było rozwiązane w MS-DOS: proces zwraca wartość (treść STDOUT albo chociaż kod powrotu), a DOS uruchamia następny proces z podanym parametrem na wejściu.
W ten sposób jest do rozwiązania tylko kwestia tego bufora, za pomocą którego procesy będą przekazywać sobie dane.

800 XE + CA 2001; Portfolio; 1040 STfm; Lynx II
Psion Organiser II XP, LZ64; Series 3a, 3c, 5mx; Siena; Workabout; HP 95LX, 200LX, 620LX; Amiga 1200; Amstrad NC100, NC200; Game Boy Color
http://palmtop.cosi.com.pl -- nie tylko o Atari Portfolio

18

Ja nic(*) nie robię a'la UNIX. a'la UNIX robią spece od contiki i LUnixa wraz z C jako podstawą systemu ;-).

W DOS komunikacja międzyprocesowa odbywała się z użyciem plików zewnętrznych, a nie zostawianiem stdout w pamięci.

Jeśli robić system wielozadaniowy nie widzę sensu w bawienie się wymianą danych z użyciem plików.

*) ideowo komunikacja międzyprocesowa... praktycznie zależy mi na szybkości, a nie robieniu czegoś a'la coś działającego na procku z 8 (i więcej) rejestrami

--
1985? - DA'Fuzz, 1987? - Meritum, 1989? - Atari 130XE, 1992 - PC/AT, 2008 - Atari 130XE + Meritum

19 Ostatnio edytowany przez jellonek (2008-04-16 10:12:33)

znasz co? contiki (mialo kiedys nawet atarowski port)? luniksa? cc65?

"on jest od c-64" - kto? znajomy? czy moze o ktorys z tych projektow ci chodzi? (wszystkie tycza sie procesorac 6502, jak i maja jakotakie rozgraniczenie miedzy sprzetem, a core systemu)

edited: taka wymiana w stylu msdosowej "rurki" w przypadku sdx jest mozliwa polowicznie mozliwa, bo umozliwia on przekierowanie stdout (CON:) do pliku.
ty nie widzisz sensu - co nie oznacza ze inni go nie widza. taka konstrukcja sporo upraszczala - bo msdos nie ma wewnetrzenych mechanizmow do komunikacji miedzyprocesowej (z zasady byl stworzony jako jednoprocesowy), ale dalo sie to w ten sposob zrealizowac na poziomie programowym - czyli interpretera polecen (command.com).

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

20

Archiell: ja zaproponowałem rozwiązanie najprostsze, do zaimplementowania nawet w SDX. Przechowywanie STDOUT w plikach dyskowych mija się trochę z celem, no chyba że wykorzystać do tego ramdysk/SD/hdd.

800 XE + CA 2001; Portfolio; 1040 STfm; Lynx II
Psion Organiser II XP, LZ64; Series 3a, 3c, 5mx; Siena; Workabout; HP 95LX, 200LX, 620LX; Amiga 1200; Amstrad NC100, NC200; Game Boy Color
http://palmtop.cosi.com.pl -- nie tylko o Atari Portfolio

21

jellonek napisał/a:

znasz co? contiki (mialo kiedys nawet atarowski port)? luniksa? cc65?

Znam contiki i luniksa od dosyć dawna tak jak ELKS-a jeszcze z czasów gdy zaczynał powstawać (zresztą w tej chwili chyba ELKS nie jest dalej rozwijany).
Znajomy pisał o ile dobrze pamiętam pod LUniksa jakieś aplikacje. To było z 4-5 lat temu gdy mi pokazywał swoje wypociny więc nie pomnę dokładniej ale pewnikiem jest ujęty w Copyrightach.

jellonek napisał/a:

edited: taka wymiana w stylu msdosowej "rurki" w przypadku sdx jest mozliwa polowicznie mozliwa, bo umozliwia on przekierowanie stdout (CON:) do pliku.

I?

tzn. mam projektować system wielozadaniowy z "|" po plikach bo w SDX jest tak wygodnie?

W DOS też było w miarę z tym wygodnie co nie zmienia tego, że DOS-a ani SDX-a drugiego na Atari robić nie planuję.

LUniksa obejrzę dokadniej bo ma największe szanse posiadać w kernelu (szczególnie Atarowskim) niektóre interesujące mnie rozwiązania zrobione w sposób akceptowalny.

Z <, > i 2> jeszcze się zastanowię co zrobić. tzn. jako podstawę chciałbym mieć aplikacje pełnoekranowe zmultitaskowane (akurat na Atari powinno to ślicznie hulać) ale na potrzeby "|" jakieś strumienie też będę musieć zrobić acz jeszcze dokładniej nie mam tego fragmentu opracowanego.

--
1985? - DA'Fuzz, 1987? - Meritum, 1989? - Atari 130XE, 1992 - PC/AT, 2008 - Atari 130XE + Meritum

22

nie pisalem jak masz cokolwiek robic - pisalem jak to jest gdzie indziej realizowane i dlaczego...
tak, czy inaczej - fantazje jak widac masz - pytanie czy cos poza nia...

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

23

ArchieIl napisał/a:

P.S. Ktoś tutaj ma jakieś wykształcenie informatyczne? Czy same złote rączki?

Nie wiem w czym może pomóc wykształcenie informatyczne przy Twoich problemach. Samo pytanie o optymalizującego asemblera (który z definicji nie powinien robić nic ponad to co każe mu programista) nie motywuje do zabierania udziału w dyskusji :)

24

laoo: takich motywatorow jest tu kilka, nie liczac sposobu wypowiadania sie ;)

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

25 Ostatnio edytowany przez ArchieIl (2008-04-16 11:50:01)

laoo/ng napisał/a:
ArchieIl napisał/a:

P.S. Ktoś tutaj ma jakieś wykształcenie informatyczne? Czy same złote rączki?

Nie wiem w czym może pomóc wykształcenie informatyczne przy Twoich problemach. Samo pytanie o optymalizującego asemblera (który z definicji nie powinien robić nic ponad to co każe mu programista) nie motywuje do zabierania udziału w dyskusji :)

google twoim przyjacielem.

Optymalizujące assemblery znam z lat 93-94 (opisy w jakichś gazetach, część kompilatorów końcową optymalizację robi w assemblerze lub oddzielnym narzędziu optymalizującym kod maszynowy np. na potrzeby pipeliningu w procesorach).

Z nie optymalizujących (w moim znaczeniu tego słowa) ale ingerujących w wynikowy kod opcji np. as86 (man as86):

 -j  replace  all  short  jumps  with similar 16 or 32 bit jumps, the 16 bit conditional branches
     are encoded as a short conditional and a long unconditional branch.
 -O  this causes the assembler to add extra passes to try to use forward  references  to  reduce 
     the bytes needed for some instructions.  If the labels move on the last pass the assembler will
     keep adding passes until the labels all stabilise (to a maximum of 30 passes)  It's  probably  not
      a good  idea to use this with hand written assembler use the explicit br bmi bcc style opcodes
     for 8086 code or the jmp near style for conditional i386 instructions and make  sure
     all  variables are defined before they are used.

Prosiłbym jednak o odzywanie się ludzi mających jakąś wiedzę i rozumiejących temat, a nie chcących się douczać.

--
1985? - DA'Fuzz, 1987? - Meritum, 1989? - Atari 130XE, 1992 - PC/AT, 2008 - Atari 130XE + Meritum