651

(192 odpowiedzi, napisanych Fabryka - 8bit)

Dely: Sprawdzanie jest i u mnie działa, tak na SIO2IDE jak i na emulcach. Na KMK (jesli używa standardowych procedur i w odpowiednich komórkach jest to, co trzeba) też działać powinno.

Kod jest następujący:

LDA DDEVIC
CLC 
ADC DUNIT
SEC
SBC #$01
AND #$0F
STA BootDrive

Czyli tak jak robi to OS.

drac030: Myślałem nad tym żeby zostawić jeden bufor (dwusektorowy), zapamiętać na stałe adres sektora trzymającego mapę obecnego katalogu i pozwolić tylko na DIR, OPEN, GET i GET BLOCK, CLOSE. Miało by to szansę na działanie w zastanym folderze. Z tym, że albo DIR, albo OPEN i tylko jeden plik jednocześnie. MEMLO by już nie było tak niskie, więc Sparta X w trybie Banked mogłaby mieć zbliżone.
Więc - sensu nie ma. Lepiej jest tak pisać programy, żeby działały z DOSem :)

652

(192 odpowiedzi, napisanych Fabryka - 8bit)

Na naszej wspólnej.
Oczywiście, że możemy źródła przekazać, z tym, że znaczna część kodu pochodzi z dekompilacji oryginalnego MSDOSa, a kawałki odpowiadające za czytanie katalogu i pliku długich nazw nie są pokomentowane (są opisane w stopniu potrzebnym do pracy nad poprawkami, ale zrozumienie ich działania i tak wymaga kolejnego przeanalizowania - ja i Pirx po latach jeszcze raz musieliśmy to sobie przypominać),
Sam MSDOS, z powodu konieczności ograniczenia jego objętości jest napisany dość karkołomnie i często niezrozumiale.
Nie wiem czy nie łatwiej byłoby wyciąć tylko procedurę odczytu pliku i wokół niej napisać taki loader. Tylko po co? Wyjdzie z tego coś co będzie zajmowało tyle RAM co Sparta X .....

653

(100 odpowiedzi, napisanych Fabryka - 8bit)

Nie no ja wiem jak te turba działają :)
Ale np. TopDrive nie da się kulturalnie rozpoznać, trzeba wysłać jakiś rozkaz w tym standardzie i sprawdzić czy zadziała (co stwarza problemy z MyIDE np. - tak na atari age pisali). Dlatego zrezygnowałem z tego badziewnego turba.

654

(100 odpowiedzi, napisanych Fabryka - 8bit)

To ja jeszcze z jedną uwagą :)
Nawet jeśli zmienisz nazwę, to pozostaw na początku ROMu napis QMEG :)
Nie tylko MSDOS używa go do wykrycia że QMEG jest włączony (widziałem już kilka innych programów które to robią), a potrzebne jest to po to by wiedzieć że nie ma sensu samodzielnie obsługiwać turba dyskowego, bo zajmuje się tym QMEG.

Co do przyspieszaczy, to moge przetestować jedynie tryb Ultra Speed, bo mam tylko SIO2IDE pod ręką.
A tak ogólnie to jakie obsługujesz i co najważniejsze jak je rozpoznajesz, bo pisząc MSDOSa z obsługą 4rech przyspieszaczy, pojawił się problem jednoznacznego i szybkiego rozpoznawania ich na starcie. W efekcie pozostał tylko tryb US/Happy - czyli właściwie jedyny, który da się kulturalnie i bez tricków rozpoznać (no dobra jest jeszcze HDI, ale czy u nas ktoś widział coś co działa w tym trybie??).

655

(100 odpowiedzi, napisanych Fabryka - 8bit)

Wiesz, co ... jak tak patrze procedurę zimnego startu Atari OS, to ona sprawdza tylko zawartość 3 magicznych komórek w RAM, a potem od razu sprawdza obecność carta diagnostycznego.

656

(100 odpowiedzi, napisanych Fabryka - 8bit)

Oj tam..... kszanisz :)
W końcu, kto pisze tego OSa ???? :) :)
Myślę, że spokojnie można dać wykrycie i skok do carta diagnostycznego na samym starcie zimnego startu i z bańki.

I to naprawdę będzie fajna sprawa.
Przydałby się cart diagnostyczny z przyzwoitymi testami. Mialem kiedyś ten oryginalny - badziew straszny ;)

657

(192 odpowiedzi, napisanych Fabryka - 8bit)

U mnie Sparta wyświetla literki :) (taki mam ustawiony prompt w konfigu).
Dlatego też proponuje dwie równoległe wersje, ja zostaje przy 4.3 (i Ty tez :) ), a Dely i jeszcze te 3 pozostałe osoby na świecie niech mają 4.4 :)

658

(100 odpowiedzi, napisanych Fabryka - 8bit)

pajero: Cart diagnostyczny to najzwyklejszy cart. Od zwykłego różni się tylko tym, że ma ustawioną odpowiednią flagę w nagłówku. Flagę tę sprawdza OS w czasie procedury zimnego startu (no po co ja to pisze, przerabiasz QMEGa więc to wiesz....) i skacze do programu na tym carcie jeszcze przed testowaniem sprzętu.
Wsad zrobisz w 3 minuty. Skompiluj Twoje procedury testowe pod adres w który wpina sie cart, dodaj odpowiedni nagłówek i masz wsad diagnostyczny z Twoimi testami.
A dostępność.... Taka sama jak Twojego QMEGa :) , jak ktoś sobie wypali to ma :)

659

(192 odpowiedzi, napisanych Fabryka - 8bit)

Nazwa MicroSpartaDOS to nawiązanie do (w swoim czasie) najpopularniejszego loadera do dysków w formacie Atari DOS, czyli MicroDOS. Może faktycznie mniej myląca byłaby nazwa "MicroDOS for Sparta". Ale na zachodnich forach nazwa MicroDOS przyjęła się nawet jako synonim loadera dyskowego.

No chłopaki.... kuna za szybko numerki zmieniam. Ale to już na pewno ostatnia wersja :)
Ale zanim wrzucę, to zapytam czy akceptujecie.
W wersji 4.4 nie wyświetla się NUMER napędu tylko jego LITERA (w sumie tak jak w Sparcie X), na początku chciałem zachować "dualizm" czyli klawisze 1-8 wybierają napęd i wtedy wyświetla się Dn: (gdzie n to numer), a klawisze Ctrl-A do Ctrl-O wybierają napęd od 1 do 15 i wtedy wyświetla się litera np. E:.
Stwierdziłem jednak, że za bardzo pogmatwa to procedury.

Jest więc tak:
- działają klawisze 1-8 - jak jak poprzednio (mogłem dodać 9 i 0 ale stwierdziłem że nie ma potrzeby)
- działają równolegle Ctrl+litera
- ZAWSZE wyświetla się symbol w postaci litery ( A: B: C: itd.)
Czyli wciśnięcie 5 powoduje pojawienie się symbolu E: i wczytanie katalogu z napędu nr.5 - tak samo zadziała Ctrl-E.

Jest gotowe, skompilowane.... może tak być??

660

(100 odpowiedzi, napisanych Fabryka - 8bit)

nosty napisał/a:

...testy faktycznie moga sie przydac...

Jeśli atarka jest uszkodzona tak, ze dochodzi do procedury testu w QMEGu (czyli nie są linie danych czy adresowe gdzieś przywarte, a procesor i ROM są sprawne), to odpali też carta diagnostycznego i to w nim powinny być takie testy, a nie zajmować miejsce na procedury przydatne w codziennym użytkowaniu. Mam problem, zajmuję się naprawami itp. - wtykam cart diagnostyczny.... nie mam problemów - nie potrzebuję testów.

Co do MLM, to nie dalej jak tydzień temu, tylko dzięki niemu zlokalizowałem błąd w kodzie. Jakoś na emulcu mi się nie objawił, więc te wszystkie wspaniałe pecetowe narzędzia na gwizdek mi były.

Kombinacja QMEG 4.04 i Sparta X faktycznie powoduje nieodpalenie się Sparty, ale po czasie uznaję to za zaletę a nie wadę. Na każdym dysku (w zasadzie to raptem dwie partycje po 16MB, bo na pozostałych jest MicroSparta DOS i Sparta X jest zbędna), na którym mam aplikacje działające pod SDX jest wrzucony pliczek INIDOS.SYS, który przywraca Spartę X w czasie bootowania i wszystko działa wtedy normalnie.

Dzieki czemu nie musze pstrykać przełącznikiem od SpartyX jesli jej nie potrzebuję :)

661

(100 odpowiedzi, napisanych Fabryka - 8bit)

Ja tu widzę przy okazji poprawiania za dużo psucia.
Siłą QMEGa, poza ramdyskami i obsługą przyspieszaczy, był podręczny i wygodny monitor MLM, zawsze można było na szybko sprawdzić co się dzieje w pamięci, wylistować kod, czy zrobić drobne poprawki.
Do tego brak obsługi drukarki to jakiś żart chyba. Większość analiz kodu itp. zrobiłem przy pomocy drukarki - kiedyś fizycznie podpiętej do atari, a potem przez przechwytywanie wydruku do pliku z APE. Gdyby to jakoś szczególnie pamięć zabierało to rozumiem, ale jak widzę dodaną kupę testów, z których i tak nikt korzystał nie będzie (no raz czy dwa po instalacji QMEGa, żeby zobaczyć jak to wygląda)  to trochę się dziwię,

Dla mnie wystarczyłyby poprawki dla procesorów 16bit i omijanie banków zajętych przez Spartę X (choć nie mam takiego procka i jak odpalam Spartę X to używam tylko jej ramdysku). Tylko te poprawki mają jakiś głębszy sens poprostu (no i jeszcze te dotyczące bardziej zaawansowanej obsługi ramdysków).

Czyli - podkreślam z mojego punktu widzenia - więcej popsute niż poprawione.

662

(192 odpowiedzi, napisanych Fabryka - 8bit)

Nie.
MSDOS to standardowy loader. Jego zadaniem jest załadowanie i uruchomienie programu, przy jak najmniejszej zajętości pamięci. I tyle.
Procedurę wczytywania pliku z dysku w formacie Sparty, możnaby wyciągnąć i stosować w innych programach, ale nie bardzo widzę sens takiego działania. Procedura ta musiałaby zostać obudowana kodem, który jest w MSDOS zamazywany w czasie ładowania. Do tego musiałaby mieć dwa bufory, czyli nie byłaby już taka niewielka. W związku z tym nie stanowiłaby konkurencji dla odpalonej z carta Sparty X.

663

(192 odpowiedzi, napisanych Fabryka - 8bit)

Dely: Bardzo dobry pomysł!!!
Oczywiście równolegle ze standardową metodą (od 1 do 10 klawiszami 1 - 0, czyli dodatkowo dwa napędy wybierane numerycznie).
Kuna - no nie pomyślałem jakoś wcześniej, że tak można ;)
A przeliczać nic nie trzeba - bedzie tablica w programie i już. Zresztą już wcześniej była taka tablica, bo w wersji 3.3 działały kombinacje cyfra+Shift (wyłączanie turbo przy przechodzeniu na inny napęd), ale że nie miało to sensownego zastosowania - wyrzuciłem.

Sikor: Literki powodują załadowanie odpowiadającego im programu z dysku - tego nie chciałbym zmieniać. Myślałem o wskazywaniu wybranej pozycji belką w Inversie, no ale to wymagałoby przepisania kawału programu na nowo, a do tego Bernasek robił wszystko do bólu systemowo, więc tutaj też trzebaby odrysowywać ekran w ten sposób - nie byłoby to zbyt ładne i szybkie. Bo idea ma pozostać - wszystko kulturalnie przez SIO i CIO.

664

(192 odpowiedzi, napisanych Fabryka - 8bit)

W zasadzie racja... ale Shift robi co innego (co prawda przy zmianie napędu nie jest sprawdzany)...
No jakoś mi to nie pasi :)

Z Pirxem myśleliśmy o dodatkowym klawiszu np. "Tab" po wciśnięciu którego możnaby wybrać w jakiś sposób napęd.

665

(192 odpowiedzi, napisanych Fabryka - 8bit)

A może ktoś wymyśli jak sensownie "oklawiszować" napędy o numerach 9-15 (właściwie to 9 i 10 da się łatwo zrobić, ale 11-15....)??
Ale tak, żeby nie zmieniać obecnej klawiszologii i żeby dało się klawisze sprawdzać systemowo (standardowe CIO na urządzeniu "K:")....

666

(8 odpowiedzi, napisanych Zloty)

Zasadzniczo to tez moge być....

667

(192 odpowiedzi, napisanych Fabryka - 8bit)

A i jedna uwaga. Obiecywałem, że w wersji końcowej MEMLO będzie jeszcze niższe a nie jest.... po prostu po konsultacjach z drac030 stwierdziłem, że i tak jest baaardzo niskie, a przeniesienie części kodo do bufora magnetofonu, może spowodować wywalanie się niektórych gier na intrach (bo bywa, ze piszą po tym obszarze).
W tej chwili loader zajmuje (wraz z buforami) obszar od $0700 do MEMLO (tego wyświetlonego na ekranie), oraz komórki na stronie zerowej: $24-$29 oraz $3D i $3E (wiec takie, które raczej nie powinny być użyte w intrach).
Ciekaw jestem, jak szybkie jest ładowanie programów na szybkich dyskach. Procedury ładujące są tutaj dość szybkie, więc to nie one powinny być słabym punktem.

No i jeszcze Pirx mi dziś raportował, że czasem są problemy z bootowaniem. To znaczy z wczytaniem MSDOS.COM z dysku zainicjowanego rozkazem BOOT. Wcześniej też miałem taki przypadek.
Pewne jest to, ze nie jest ten problem związany z MSDOS.COM, raczej trafiamy na jakieś ograniczenie bootloadera Sparty. Podesłałem kolegom Spartowcom jakiś czas temu takiego ATRa, może coś odkryją.

668

(192 odpowiedzi, napisanych Fabryka - 8bit)

No to skończyliśmy chyba.
To znaczy wszystkie dotychczasowe testy nowa wersja przeszła bez kłopotów - nosi numer 4.3.
Plik wykonywalny jest tutaj: http://pecus.pigwa.net/pliki/Atari/msdos43.obx (i w załączniku postu).
Będzie też plik ATR z wszystkimi głównymi wersjami, opisem oraz programami do tworzenia pliku z długimi nazwami, ale to jak Pirx skończy pisać.

A co oficjalnie w tej wersji:
1. Nowa metoda wczytywania pliku z dysku w formacie SpartaDOS - oszczędność jednego bufora na sektor mapy pliku.
2. Wyrzucona obsługa przyspieszaczy poza Happy/UltraSpeed (czyli najpopularniejszym) - wbudowana b. szybka procedura podnosi MEMLO o $0100 i może być wyłączona klawiszem Shift w czasie wyboru programu do załadowania (w czasie BOOTowania Shift wyłącza obsługę turbo całkowicie).
3. Dodana obsługa sektorów większych niż 256b (procedura loadera obsługuje dowolną długość sektora, jednak podręczny bufor stosowany w trakcie odczytu listy plików jest ustawiony na 512b - oczywiście jeśli kiedyś będzie taka potrzeba, bufor ten można zwiększyć jednym ruchem - ale w tej chwili to i tak opcja dla kilku osób na świecie ;) a dodatkowe wyliczanie i stosowanie potem wyliczonej dlugosci bufora wymagałoby zbyt wielu modyfikacji kodu).
4. Dynamiczne MEMLO loadera (w zależności od wielkości sektora minimalne MEMLO to: dla SD to $08D3, dla DD - $0953, a dla QD - $0A53).
5. Informacja na ekranie o stanie QMEGa, BASICa, turbo i wielkości sektora. Informacja o MEMLO przed załadowaniem wybranego programu.

669

(192 odpowiedzi, napisanych Fabryka - 8bit)

O.K.
Puściłem Ci maila.....

670

(192 odpowiedzi, napisanych Fabryka - 8bit)

No niech mi sie zgłosi ktoś, kto ma dysk z sektorami 512b :)
Program czeka na przetestowanie, a ja nie mam jak.
Gotowa jest uniwersalna procedura loadera, majaca obslugiwac dowolne dlugosci sektorow. Ze 128 i 256b dziala jak trzeba.... testera potrzebuje!!! :)

671

(11 odpowiedzi, napisanych Software, Gry - 8bit)

Ja zaznaczyłem pierwszą opcję !!! :)

672

(192 odpowiedzi, napisanych Fabryka - 8bit)

Oj tam kombinujecie :)
Sprawdziłem i jedno i drugie i chyba duże litery bez inversu ładniejsze trochę.
Ale mi chodziło o koncepcje w stylu: "może by tak przesunąć napis MSDOS w prawo i zmniejszyć cośtam..." oczywiście w obrębie linii statusowej. Można życzyć sobie zmiany prezentacji info o QMEGu itp ;)

Aaaaa i proszę nie przyzwyczajać się do numeracji. 4.x to wszystko wersje testowe są.
Za wcześnie cyferki zaczęliśmy dodawać. Finalna wersja to będzie 4.0 po prostu !!!

A i jeszcze uwaga. Wersje testowe mogą mieć wyłączoną funkcje powrotu po błędzie na stacje z której startowały - mogą wracać na D1:. Po prostu blokuję to do testowania pod emulcem i czasem zapomnę prze kompilacja przywrócić :)

673

(192 odpowiedzi, napisanych Fabryka - 8bit)

Będzie ostateczna jak skończę :) . Ta wersja to ostatnia obsługująca tylko sektory 128 i 256b. Właśnie teraz pracuję nad dokończeniem obsługi większych i nie jest źle.
Tyle tylko ze sam loader się trochę wydłuży (dotychczas liczniki chodziły na 1 bajcie, a konkretnie tylko na rej. X, który w czasie pracy loadera spełnia tylko tę funkcje, a teraz trzeba dodatkowy bajt zwiększać i sprawdzać).
Wersja finalna, ma przerzucać część loadera do bufora magnetofonu i zyskiwać dodatkowe około 100 bajtów w ten sposób. Ale to już jest pikuś...

Format SD już przetestowałem... MEMLO jest wtedy oczywiście 128b niżej ;) i działa. Dodałem też informację o wielkości sektora na ekranie... na razie to jeden znak i to tak dziwnie zrobiony.... Jakieś propozycje jak może to wyglądać i gdzie to info zmieścić ?? Ten znaczek w moim pomyśle jest na pasku statusu przed Dn: i jest to dla sektora:
128b - znak Ctrl-N
256b - znak Ctrl-U
512b - spacja w inverse (czyli pełny kwadrat)
Symbolizuje mi to pojemność sektora, ale to tak na szybko potrzebowałem wiec tak zrobiłem - inne pomysły mile widziane....
Wracam do kodowania.

674

(192 odpowiedzi, napisanych Fabryka - 8bit)

Zrezygnowałem po prostu ze stosowania wbudowanych procedur jesli jest QMEG - bo w końcu on ma swoje i każdy może je włączyć lub wyłączyć jeśli chce. Tak wiec wbudowane procedury turbo aktywują się tylko jeśli nie ma QMEGa i tylko wtedy ma sens wciskanie Shifta ;)
A wyświetlanie MEMLO zostanie, bo w nowej procedurze ładującej zależy ono od sposobu ułożenia ładowanego pliku na dysku oraz wielkości sektora (hm w pojedynczej gęstości nie testowałem jeszcze ciekawe..... no i tu błąd w kodzie... :) .... już poprawiony, plik w poprzednim poście podmieniony) i może być różne w różnych sytuacjach - a wtedy warto wiedzieć czy nie jest za wysoko (choć raczej nie będzie ;) ).

675

(192 odpowiedzi, napisanych Fabryka - 8bit)

O.K.
Znalazlem błąd powodujący zwisy..... niestety MADS nie uznaje konstrukcji (.adr blok.etykieta) jako parametru w makrorozkazie ..... skompilowalo sie z adresem $00. No i tak się składało ze jak w komórce $0000 było $00 to dzialalo, a jak inna wartość (ale nie z kazda sie objawial blad) to byla sieczka na ekranie.... a QMEG przy restarcie zostawia zawartość komórki $0000 niezmieniona, wiec jak juz sie popsulo, to nic sie nie wczytywało....
No ale teraz już adres jest prawidlowy.... jeszcze tylko trzeba sprawdzić dlaczego Bootloader Sparty zle to wczytyje, podobno jak sie najnowsza sparta zainicjuje - jest O.K.

Podmieniłem plik - drobiazg powodował złą obsługę sektorów 128b..... teraz już wszystko jest O.K.
Za parę dni można liczyć na wersję finalną z obsługą sektorów 512b i większych ...