651

(192 odpowiedzi, napisanych Fabryka - 8bit)

Wiem oczywiscie, ze tak jest... Wynika to trochę z tego, że program napisany jest systemowo.
Na poczatku (także przy zmianie katalogu czy dysku) robi kulturalne GR. 0, co powoduje przywrocenie kolorow systemowych, wiec natychmiast zmienia je na swoje oryginalne. A nie wie wtedy jakie mają być kolory, bo dopiero teraz czyta katalog i jak znajdzie w nim MSDOS.DAT, przechodzi do jego odczytu. Dopiero jak odczyta go w calosci, przechodzi do analizy i wyswietlania i dla oszczędności kodu to tu jest procedura wczytania parametrów.

Metody poprawienia tego widzę, nawet 3.
- zlikwidowanie kolorów domyslnych MSDOSA i pozostawienie systemowych (jakoś mi się to nie podoba)
- bezpośrednio po GR.0 (skoro mamy mignięcie na czarno) wyłączenie ekranu i włączenie go dopiero po wyswietleniu listy plików (też jakoś nie podoba mi się),
- robienie GR. 0 tylko raz na początku programu (bo i tak zawsze przy przerysowaniu jest wysyłany na ekran kod czyszczenia), przy okazji procedurę robiącą GR.0 możnaby przerzucić do bufora na dane - bo potrzebna będzie tylko raz i może potem zostać zamazana - to mi się podoba najbardziej, bo optymalizuje kod, a jak będzie wyglądało??? kto wie. Odpadną mrugnięcia, zmiany kolorów na systemowe, więc i konieczność odtwarzania kolorów MSDOSowych....

Obaczę co się da zrobić :)

652

(15 odpowiedzi, napisanych Fabryka - 8bit)

Moja koncepcja takiego fileselektora jest taka:
- kod calkowicie niezalezny od reszt programu z wlasna pamiecia obrazu i DL.
- jeden parametr (sciezka z nazwa pliku) przekazywany w obie strony
... i to wszystko, w dzialaniu cos jak rozkaz "FORMAT" w Sparcie X.
Przekazujemy tej procedurze adres sciezki zakonczonej bajtem 155 (np. ostatnio wybierany plik...), robimy JSR i w tym samym miejscu dostajemy wybor uzytkownika.

Bylby to niesamowicie uniwersalny modul, no i ile wiecej programow mialoby wygodny wybor pliku jak kazdy moglby ten sam modul wkladac :).
Oczywiscie zakladam, ze ten fileselector dzialalby tak jak na 16-to bitowcach - wyswietlajac liste plikow do wyboru lub umozliwiajac wpisanie nazwy recznie (czyli dodatkowy parametr odczyt/zapis), a moze i maska....

653

(192 odpowiedzi, napisanych Fabryka - 8bit)

Napisz precyzyjniej jak o sie objawia.... bo co jak co, ale edycja tych parametrow powinna dzialac zawsze. Jest poprostu niezalezna od reszty programu. A to pod emulcem czy real Atari?? Bo na real Atari to trzeba Ctrl+szczalka wciskac :) (tak pisze, bo Pirx mial przez chwile ten problem ;) )

A i sciagnij jeszcze raz paczke z poprzedniej strony. Wymienilem tam MSINI3 na wersje widzaca do 256 plikow.
Ze wzgledu na pewne ograniczenia MMG Basic Compilera w trybie Ineger (a tak jest kompilowany MSINI3), w przypadku ilosci plikow wiekszej niz 128 moglo nastapic zamazanie czesci danych i faktycznie dziwne objawy, w poprawce staralem sie to wyeliminowac.

Ale tak naprawde jak bedzie wersja w assemblerze to bedzie najlepiej :)

654

(192 odpowiedzi, napisanych Fabryka - 8bit)

Ech... Msini3 to tak naprawde prosty programik w basicu... Zdaje sie ze jest tam ograniczenie do 128 plikow.. taka zmienna tekstowa.... sorry.
Zobacze ile wolnego RAMu sie da jeszcze wyciagnac.

Ale zasadniczo bede przepisywal MSINI na assembler, bo w BASICu sie dosc trudno pisze (a szczegolnie poprawia jak numerow linii brakuje).

655

(192 odpowiedzi, napisanych Fabryka - 8bit)

Gotowe.
W załączniku zip z atrami zawierającymi nowy Micro SpartaDOS 4.5 , a także nową wersję MSINI3.
Ta wersja umożliwia wybór spośród predefiniowanych schematów kolorów lub ustawienie kolorów własnych (oczywiście kolorystyka zmienia się tylko w tym katalogu, w którym edytujemy plik DAT i może być różna w różnych katalogach) i obsługę znacznika blokady wbudowanych procedur Ultra Speed.
MSINI3 warto umieścić w katalogu wskazywanym przez PATH by mieć możliwość szybkiego uruchomienia w katalogu, w którym chcemy tworzyć/edytować plik MSDOS.DAT.
Plik DAT mimo dodania nowych funkcji jest zgodny w każdą stronę z każdą wersją MSDOS.
Wszystko jest i tak opisane w załączonych plikach tekstowych - przeczytajcie sobie.

Edit: Podmieniłem paczkę, jedyny drobiazg to zwiększenie ze 128 do 256 liczby plików widzianych przez MSINI3.

656

(192 odpowiedzi, napisanych Fabryka - 8bit)

Jesli jest to naped od 1 do 8 to wyswietla sie D1: - D8: a jesli 9 do 15 to oczywiscie I: - O:.
Milosnicy literek chwilowo moga zobaczyc cyferke ;).
Ale jak nie lubisz ogladac D2: zawsze mozesz nacisnac ctrl+B ...

657

(192 odpowiedzi, napisanych Fabryka - 8bit)

Coś cisza jakaś na forum.....
Zabrałem się do roboty, bo Pirx stwierdził, że nie lubimy forków i że powinna być jedna wersja, no i zaimplementowałem ten "dualizm". Jak sie wciska cyfrę 1-8 to wyświetla się D1: - D8:, a jak Ctrl+A-O , to wyświetla się A: - O:
A do tego dołożyłem możliwośc konfigurowania pewnych parametrów w zależności od folderu, który przeglądamy - są te parametry zapisywane w pliku .DAT. Zapisywane są jako jedna z długuch nazw, bez jakichś znaków specjalnych, więc nie zmieniaja struktury pliku DAT. Nowy DAT bedzie doskonale działał z innymi wersjami, a stary DAT z nową wersja... nic nie zmieni.
Na poczatek dodane 4 parametry:
- 3 kolory (literki, tlo, ramka)
- wymuszenie wylaczenia turbo przy wczytywaniu plików z danego katalogu.

Tak więc, można będzie mieć różną kolorystykę w poszczególnych katalogach (wiem ze malo przydatne, ale kodu niewiele, a fajne), a blokowanie tubo moze sie przydać jeśli macie gry, które maja problemy z działaniem z właczonym turbo (wymagaja b. niskiego MEMLO, albo gryza sie z szybką transmisją). Wystarczy wrzucić te gry do odrębnego katalogu i w pliku DAT w tym katalogu włączyć opcję blokady - i nie trzeba pametać o Shift.

Opublikujemy jak tylko powstanie MSINI3 - obsługujący te dodatki :) czyli .... jutro ??? :)

658

(192 odpowiedzi, napisanych Fabryka - 8bit)

Eee po jednym pliku można tylko :)

659

(192 odpowiedzi, napisanych Fabryka - 8bit)

Poprawione wersje 4.3b i 4.4b :)

Przy okazji małe usprawnienie współpracy z urządzeniami PBI (dzięki Drac030).

Prawdopodobnie, jeśli macie dyski z grami nagrane przez skopiowanie wszystkiego na czysty nośnik nigdy by się Wam ten błąd nie objawił. Wczytywanie wywalało się jeśli ładowany plik miał w ciągu zajmowanych przez siebie sektorów "dziurę" o długości większej niż 127 a mniejszej niż 254 sektory. Co mogłoby się przytrafić  w przypadku kasowania i ponownego nagrywania plików na dysku (fragmentacja).

Readme i gotowa paczka później :) , na razie pliki wykonywalne:

660

(192 odpowiedzi, napisanych Fabryka - 8bit)

tebe: Może łatwiej zastosować BW-DOS ?

No chłopaki... mały problem. Otóż w obu opublikowanych wersjach jest błąd. Większości z Was nigdy się zapewne nie objawi, bo może się przytrafić wyłącznie na mocno pofragmentowanym pliku, a i to w specyficznym przypadku. Błąd zidentyfikowany już i łatwy do poprawienia. Poprawki jutro, bo nie mam dostępu do kompa, a pisanie na klawiaturze wirtualnej tabletu nie jest zbyt wygodne.
Ale co z numeracją ? :)

Drac030 ... dzięki za porypaną mapę pliku :)

661

(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 :)

662

(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 .....

663

(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.

664

(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??).

665

(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.

666

(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 ;)

667

(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 :)

668

(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 :)

669

(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ć??

670

(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ę :)

671

(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.

672

(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.

673

(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.

674

(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.

675

(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:")....