Aktualizacja:
8 I 2017




== Rozszerzenia ==
* Opis
* Pliki
== U-BASIC ==
* Opis
* Pliki
== IDE Plus ==
* Opis
* Pliki
== 65C816 XL OS ==
* Opis
* Lista zmian
* Lista zgodności
* Pliki
== MultiBASIC ==
* Opis
* Lista zmian
* Pliki
== SysInfo ==
* Opis
* Pliki
== Rozmaitości ==
* Pliki
== Poprawki ==
* Pliki
== SpartaDOS X ==
* Opis
* Pliki
== VBXE ==
* Opis
* Pliki














 

Lista zmian OS-ie

27.V.2015.

  • Usunięto większość odwołań do rejestrów sprzętowych F7 i Rapidusa: inicjowanie weźmie na siebie dedykowane urządzenie PBI. Tylko rejestr MCR (Memory Configuration Register) jest ustawiany stosownie do tego, czy podczas testowania pierwszych 64k pamięci RAM zostanie wykryty kartridż.
  • Niewielka poprawka w procedurze testu banków pamięci RAM.
  • Usunięto poszukiwanie dysku startowego, kiedy dysk domyślny nie odpowiada.
  • Usunięto wskaźniki hibot i hitop na stronie 2 pamięci RAM. Nowa zmienna LOSEGM $024d zawiera trzeci bajt adresu najniżej położonego segmentu Fast RAM-u.
  • ATRMSK ma teraz wartość $FF.
  • Dodano sprawdzenie poprawności tablicy alokacji wysokiej pamięci, na wypadek, gdyby coś ją uszkodziło, albo gdyby wysoka pamięć nie działała prawidłowo: nieprawidłowa zawartość tablicy powodowała problemy po RESET.
  • "Ekrany śmierci" przeniesiono do pamięci RAM (Rapidus Fast ROM nie jest dostępny dla ANTIC-a).
  • Wciśnięcie Ctrl/F2 zamienia teraz miejscami zawartość DMACTLS i DMASAV (= gasi i zapala ekran).

20.III.2007.

  • Test rozmiaru pamięci RAM w obszarze pierwszych 64k zatrzymuje się teraz na adresie $C000. Zapobiega to zamazaniu zawartości pamięci flash, jeśli przypadkiem jest niezabezpieczona przed zapisem.

3.III.2007.

  • Poprawki do SIO: błędy CRC czasem występujące przy transmisji turbo już się nie powinny zdarzać.

28.II.2007.

  • Poprawka w procedurach testowania pamięci.
  • Dalsze poprawki w procedurze ustalania szybkości stacji dysków (tym razem problemy były tylko ze stacją LDW).
  • Wersja 2.22 do wzięcia.

26.II.2007.

  • Drobne poprawki w procedurach inicjowania pierwszych 64k RAM-u.
  • Do procedury badającej wielkość fast RAM-u (w Warpie i F7) dodano poszukiwanie jego początku, gdyż w F7 fast RAM nie musi się zaczynać od adresu $010000.
  • Procedura RESET konfiguruje teraz kartę F7 tak, że może ona startować w trybie "Fast" i jednocześnie zachować zgodność z modułami ROM, w rodzaju SpartaDOS X albo Atari BASIC. Resetowane jest też HPU (jeśli istnieje).
  • Poprawki w procedurze automatycznego wybierania szybkości pracy ze stacją dysków (stacje LDW i CA-2001 bez Synchromesha miały problemy).
  • Usunięto kfreeall().
  • Test pamięci fast RAM pomija ostatnie 64k (w kartach F7 i HyperSpeed są tam rejestry I/O), wobec tego na karcie Warp, nawet jeśli ma pełne 16 MB RAM-u, ostatnie 64k pozostanie "niewidoczne" dla systemu.
  • Do tablicy skoków dodano zapomniany przez programistów Atari skok JMP LOADER pod adresem $E483. Udostępnia to programom wewnętrzny loader i relokator XL OS (pomysł truba).

5.VI.2006.

29-30.V.2006.

  • Poprawki w procedurze inicjowania wysokiej pamięci.
  • Usunięcie "problemu ostatniego slotu" w procedurze kmalloc(): zajęcie ostatniego wolnego slotu tablicy alokacji powodowało utratę informacji o rozmiarze pozostałej pamięci, w związku z czym po zwolnieniu wszystkiego OS "widział" tylko tyle wysokiej pamięci, ile było poprzednio zaalokowane.
  • Usunięcie podobnego problemu w procedurze kfree(): zwolnienie bloku pamięci, do którego był przypisany ostatni slot tablicy alokacji, powodowało wpisanie do niego przypadkowych danych zamiast zer, przez co dane o pamięci traciły spójność.
  • Poprawka w procedurze wyświetlającej komunikat błędu w wyniku stwierdzenia niezgodności sumy kontrolnej ROM-u.
  • Poprawka w kodzie inicjującym wektory pamięci: wektor hibot ($0296-$0298) nie był poprawnie inicjowany w czasie ciepłego resetu.
  • Zmiana formatu tablicy alokacji pamięci, co przy tym samym rozmiarze tablicy zwiększyło ilość slotów do 64.
  • Przeniesienie tablicy pod szczyt pamięci (na ostatnią stronę RAM-u wykrytego powyżej pierwszych 64k).

13.V.2006.

  • Wersja 2.10 do wzięcia razem z MultiBASIC-em v.0.3 (beta).

2.III.2006.

  • Zmieniono wewnętrzne działanie 24-bitowego rozszerzenia SIO, dzięki czemu zaczął działać DOS 2.0 i oparte na nim oprogramowanie całodyskowe (np. gra "Crusade in Europe").
  • Procedura SETVBLV zmieniona na bardziej konserwatywną (nie przełącza się w tryb natywny).

12.II.2006.

  • Przywrócono pierwotną (no, prawie) wersję procedury czyszczenia ekranu CLRSCR. PAINT 256 znowu działa.

29.I.2006.

  • Zdefiniowane dwa dodatkowe kody błedów: -74 (nie mozna zaalokować więcej bloków pamięci przez kmalloc) i -75 (kfree wywołane z adresem bloku nie zaalokowanego przez kmalloc).

21.XII.2005.

  • Urządzenie "N:" (null) akceptuje wszystkie kody XIO.

1.XII.2005.

  • drobne poprawki w procedurach RESET i SYSVBL
  • nieużywana procedura znajdująca się w ROM-ie Self-Testu została usunięta
  • JMP JTESTROM (JMP $E471) przełącza CPU w tryb emulacji
  • kształty trzech ostatnich znaków w Charset 2 (ASCII 125, 126, 127) zmienione na odpowiednio: tyldę, lewą klamrę i prawą klamrę.

25.IX.2005.

  • drobna poprawka w pakiecie matematycznym (zamiana przeoczonej sekwencji JSR/RTS na JMP)
  • poprawka w kodzie SIO: komenda dyskowa '?' wysłana przez program użytkownika jest zawsze przesyłana w normalu (tj. na 19200)

8.IV.2005.

  • wersja do wzięcia.

6.IV.2005.

  • bootmenu pozwala na ręczne wyłączenie automatycznie włączonego trybu szybkiej transmisji.

27.III.2005.

  • pętla odczytu danych z klawiatury, zamiast wykonywać się na pusto dziesiątki tysięcy razy w oczekiwaniu na naciśnięcie klawisza, zatrzymuje na ten czas mikroprocesor; ta modyfikacja powstała w efekcie przeprowadzonej na #atari8 dyskusji o poborze mocy przez Atari i możliwościach zasilania go z baterii.
  • to samo w pętli czekającej na naciśnięcie klawiszy Ctrl/1

12.III.2005.

  • poprawki w kodzie edytora ekranowego: wystąpienie błędu podczas otwarcia ekranu powoduje ustawienie marginesów w pozycje początkowe.
  • próba włączenia trybu graficznego w trybie 32- i 48-kolumnowym powoduje automatyczne przestawienie ekranu na 40 kolumn (a nie błąd, jak dotąd).
  • sterownik dyskowy rozpoznaje dodatkowe komendy: odczyt/zapis PERCOM, oraz IDENTIFY DRIVE.

10.III.2005.

  • wersja do wzięcia.

8.III.2005.

  • rozszerzenie SIO o możliwość bezpośredniego odczytu i zapisu danych do i z pamięci znajdującej się powyżej adresu $00FFFF (poza pierwszym segmentem 64k).

7.III.2005.

  • eksperymentalnie zaimplementowany tryb skanowania klawiatury
  • zmieniona definicja funkcji XIO dla klawiatury - obecna definicja jest już zapewne ostateczna;

6.III.2005.

  • poprawki w procedurach zarządzania pamięcią
  • poprawki w edytorze ekranowym

4.III.2005.

  • wsparcie dla ładowanego z zewnątrz sterownika magnetofonu: funkcje tablicy skoków JCASOPIN i JCASRDBL przekształcane są odpowiednio na XIO 16 i XIO 17 dla urządzenia "C:".
  • do większości procedur ujętych w tablicy skoków dodano krótki kod wstępny, który zachowuje na stosie rejestry B i D przed wywołaniem procedury, a przywraca ich wartość po.

1.III.2005.

  • SIO i CIO przechowuje na stosie wartość rejestru D zerując go na własny użytek;
  • przy okazji poprawiono błąd Atari polegający na tym, że procedura PRPLNK była wywoływana z CIO przez JSR, ale powrót następował przez JMP - co z kolei skutkowało dwukrotnym wywołaniem CIORET przy powrocie z CIO, zupełnie bez sensu.
  • wywołanie procedury RESET przez tablicę skoków przełącza procesor w tryb emulacji;

20.II.2005.

  • próbne rozszerzenie szybkiego SIO o obsługę protokołów XF-551/CA-2001 oraz IndusGT/LDW 2000 Super
  • rozszerzenie procedury BOOT: jeśli napęd ma sektory o rozmiarze powyżej 256 bajtów, to przyjmuje się, że wielkość bootsektora jest taka sama, jak wszystkich sektorów dysku. W przeciwnym wypadku - tradycyjnie, bootsektory zawsze 128 bajtów.
  • procedury szeregowe ustawiają na początku i zerują na końcu tylko rejestry AUDF3/4 i AUDC3/4 (para rejestrów 3/4 służy jako generator częstotliwości dla transmisji szeregowej), a AUDF1/2 i AUDC1/2 pozostawiają bez zmian.

17.II.2005.

  • wersja do wzięcia.

7.II.2005.

  • dorzucony test na obecność dodatkowych banków pamięci 130XE, liczba banków zapisywana jest w komórce pod adresem $00029F.
  • zależnie od zawartości tej komórki procedura przerwania klawiatury inaczej traktuje rejestr PORTB: na komputerach nierozszerzonych ($00029F = 0) zakłada się, że rejestr PORTB steruje lampkami konsoli jak w 1200XL, wobec czego procedura przerwania klawiatury zmienia jego zawartość w zależności od tego, którą lampkę trzeba zapalić. Na komputerach rozszerzonych ($00029F != 0) rejestr PORTB służy do przełączania banków pamięci, wobec czego nie jest przez przerwanie klawiatury zmieniany. Takie rozwiązanie pozwala mieć zarówno klawisze funkcyjne F1-F4 razem z przypisanymi do nich przez system funkcjami, jak i rozszerzenie pamięci bez ryzyka konfliktu.

6.II.2005.

  • menu wyboru dysku, z którego komputer ma startować, pozwala teraz na wybór dysku klawiszami kursora ("-" w górę, "=" w dół), a poza tym nie jest za każdym razem odrysowywane od nowa (ale wciąż korzysta tylko z urządzenia E:);

5.II.2005.

  • jeśli "domyślna" stacja dysków jest niedostępna przy zimnym starcie, wtedy system próbuje znaleźć takową, a rezygnuje dopiero po sprawdzeniu wszystkich możliwości;

31.I.2005.

  • nawet jeśli nie ma kodu obsługującego magnetofon, stan wektora inicjowania programu wczytanego z kasety musi być brany pod uwagę podczas resetu, bo niektóre programy się uruchamiają w ten sposób;

29.I.2005.

26.I.2005.

  • menu wyświetla informację, czy wybrana stacja obsługuje szybką transmisję
  • poprawiona wersja do wzięcia.

24.I.2005.

  • poprawka w procedurach szybkiej transmisji szeregowej, teraz bootowanie ze stacji dysków powinno zawsze się udawać.

21.I.2005.

  • poprawiona wersja do wzięcia

19.I.2005.

  • menu wyboru dysku, z którego komputer ma wystartować, otwiera się przed inicjowaniem kartridży

11.I.2005.

  • zrobiony podczas optymalizacji procedur ekranowych błąd skutkujący niewłaściwym obliczaniem linii logicznej został usunięty;
  • szybkie SIO aktywowane także dla napędów 5-8, a nie tylko 1-4;
  • próba poprawki błędu Atari: chociaż podczas operacji otwarcia pliku sterownik urządzenia zgłasza błąd, to system operacyjny przekazuje wprawdzie kod tego błędu do programu, ale kanał I/O zostaje mimo wszystko otwarty. Poprawka polega na tym, że w takiej sytuacji procedura otwarcia pliku przekazuje bezpośrednio sterowanie do procedury jego zamknięcia, ale z zachowaniem statusu poprzedniej operacji (nawet jeśli programy biorą to pod uwagę i zamykają kanał po każdym błędnym OPEN, to zamknięcie zamkniętego kanału przecież nie szkodzi).
  • porządki w procedurach specjalnych klawiatury i sterowniku "@:"

10.I.2005.

  • usunięto błąd powodujący, że menu wyboru dysków wyświetlało "DRIVE DOES NOT RESPOND" dla każdego dysku (w tym istniejących);
  • usunięto błąd powodujący, że nowa funkcja CIO - wyszukiwanie wolnego kanału - była niemożliwa do wywołania;
  • wykryto i usunięto odnoszący się do pakietu matematycznego problem z edytorem MAC-a/65;

7.I.2005.

  • Tymczasowo wycofane niektóre zmiany importowane z 1450XLD, tj. obsługa rejestrów $D1CF i NEWINI.
  • do wzięcia

15.XII.2004.

  • dalsze prace nad procedurami alokacji pamięci: zaimplementowana możliwość alokacji od najbliższej granicy 64k (nie testowane);

13.XII.2004.

  • dodano menu wyboru dysku, z którego komputer ma startować;
  • próbna implementacja szybkiego SIO w trybie US Doubler

12.XII.2004.

  • SELF TEST usunięty; sporo wolnego miejsca pod program testowania i konfiguracji OS-u;
  • wyciągnięcie albo włożenie kartridża podczas pracy powoduje wyświetlenie stosownego komunikatu (żeby nie było, że system od tego mimowolnie pada, jak gdzieś przeczytałem).
  • dodane urządzenie "@:" (handler napisany i przetestowany oddzielnie);
  • bufor drukarki przeniesiony na miejsce dawnego bufora magnetofonu; to zwalnia 40 bajtów miejsca na stronie 3;

11.XII.2004.

  • poprawka błędu Atari: po podaniu do CIO niewłaściwego numeru kanału IOCB system wraca z kodem błędu przez procedurę CIORET, a ta sieje zniszczenie w obszarze od $0340 do $043F (w zależności od podanego numeru kanału). Poprawka polega na zastąpieniu skoku do CIORET przez zwykłe RTS.
  • dodanie do CIO funkcji wyszukującej pierwszy wolny kanał IOCB; patrz specyfikacja

8.XII.2004.

  • numer wersji zmieniony na BB 02.04 (bo zostały importowane zmiany wprowadzone do ROM-u oznaczonego przez Atari jako BB 02.03);
  • kod rozpoznania źrodła przerwania dla nowego urządzenia, importowany wczoraj z ROM-u 1450XLD, został nieco udoskonalony (teraz to są 3 rozkazy zamiast sześciu i nie angażują bajtu na stronie zerowej);
  • drobne skrócenia tu i ówdzie;
  • usunięty handler magnetofonu (zarówno urządzenie "C:" CIO jak i urządzenie "$60" SIO); zwalnia to sporo ROM-u oraz ok. 20 bajtów w pamięci RAM;
  • wektory handlera "C:" w pamięci ROM (pod adresem $E440) zastąpione wektorami urządzenia "N:" dla kompatybilności ;-)

7.XII.2004.

  • dodano urządzenie "N:" działające podobnie jak /dev/null, /dev/zero i /dev/random pod Unixem;

Uzgodnienie niektórych procedur z wersją BB 02.03 XL OS-u (jest to ROM od Atari 1450XLD datowany na 21.VI.1984., a podesłany mi przez Voya). Wprowadzone zmiany:

  • procedura rozpoznania źrodła przerwania IRQ uwzględnia możliwość zgłoszenia przerwania przez nowe urządzenie także w rejestrze $D1CF (a nie tylko w $D1FF);
  • przeniesienie niektórych wewnętrznych zmiennych handlera COP w inne miejsca w związku z tym;
  • definicja nowego adresu w pamięci RAM NEWINI $03ED, gdzie przewidziano miejsce na początek procedury inicjowania "na ciepło" procedury załadowanej z nowego urządzenia przy ostatnim zimnym starcie;
  • procedura RESET inicjuje ten adres;
  • a procedura IOPORTINI z tego korzysta;
  • taż IOPORTINI resetuje rejestr wyboru nowych urządzeń PDVREG, czego poprzednio nie czyniła (wywołanie procedury RESET z wnętrza handlera nowego urządzenia powodowało błąd przy obliczaniu sumy kontrolnej ROM-u i uruchomienie SELF TEST);
  • testowanie rozmiaru pamięci zaczyna się od 16kB (poprzednio od 10);
  • komunikat błędu odczytu wstępnego z dysku został zmieniony z "BOOT ERROR" na "Boot Error" ;-)
  • CIO powinno teraz akceptować numery urządzeń z zakresu 0-9 (np. "D0:" do "D9:") zamiast 1-9.
  • tablica handlerów CIO (HATABS) skrócona z 12 do 11 wpisów;

6.XII.2004.

  • procedura wstawiania linii edytora ekranowego (INSLIN) została jeszcze nieco przyspieszona;
  • spolszczenie dalszej porcji tekstu specyfikacji

4.XII.2004.

  • numer wersji zmieniony na BB 01.93;
  • porządki w procedurze obsługi przewania COP, kod uproszczony i skrócony;
  • poprawka w kodzie Atari: ustawianie CRITIC na 1 w procedurze SIO jest zbędne, znacznik ten jest wcześniej ustawiany przez procedurę SIOINT;

3.XII.2004.

  • do wzięcia

30.XI.2004.

  • dodane procedury alokacji pamięci (napisane i przetestowane oddzielnie);
  • zmiany w specyfikacji;

29.XI.2004.

  • usunięte przeoczone poprzednio ustawianie DUNIT na 1 w procedurze wywoływanej z BOOT;
  • usunięta możliwość ładowania systemu (bootowania) z magnetofonu; reszta handlera magnetofonu na razie zostaje;
  • wstawianie linii w edytorze ekranowym powinno być cokolwiek szybsze;

27.XI.2004.

  • spolszczenie dalszego kawałka specyfikacji;
  • usunięty prawdopodobny błąd w procedurze rozpoznania źrodła przerwania IRQ dla trybu emulacji;
  • obszary pamęci i $03EF-$03F4 oraz $03F9 muszą pozostać wolne, są zarezerwowane do użycia przez procedury nowych urządzeń; w związku z tym wektory HIBOT i HITOP zmieniają adres na odpowiednio $0296-$0298, $0299-$029b, a zmienna CASFLG przechodzi na $029F.

26.XI.2004.

  • częściowe spolszczenie specyfikacji;
  • wyciskanie wolnego miejsca w ROM-ie;

25.XI.2004.

  • tłumaczenie listy zmian na polski

23.XI.2004.

  • wczorajsze zmiany w COMLOG wycofane;

22.XI.2004.

  • suma kontrolna ROM-u znajdująca się pod $FFDE została usunięta, dla całego ROM-u obowiązuje teraz jedna suma kontrolna pod $C000;
  • formalne zmiany w COMLOG (użycie zmiennej na stosie zamiast na stronie zerowej);

20.XI.2004.

  • numer wersji zmieniony na BB 01.92;
  • wywołanie kodu wskazywanego przez wektor VCOP0 następuje teraz w trybie natywnym, przełączenie następuje później;

19.XI.2004.

  • do wzięcia

18.XI.2004.

  • wektory przerwań zostały przedefiniowane na nowo, dotychczasowe informacje na ich temat stają się nieaktualne; patrz szczegóły
  • handler instrukcji COP #$00 ma kasować bit I (o ile nie był on ustawiony przed wykonaniem instrukcji) zanim wykona skok do systemu;

17.XI.2004.

  • wolne bajty w ROM-ie zostały zgromadzone w jednym miejscu; oznacza to przesunięcie większości procedur systemu, w związku z czym nielegalne skoki do ROM-u przestają działać;
  • SELECT/RESET wymusza zimny start;
  • procedury przerwań zostały przepisane jeszcze raz od nowa;
  • zdefiniowane zostały dwa nowe wektory, VNMIN i VIRQN, dzięki którym można przejąć oba przerwania zanim zajmie się nimi system;

16.XI.2004.

  • dwa nowe wskaźniki pamięci: HIBOT $03EF i HITOP $03F2 (oba 24-bitowe);
  • zmienna INTIM1 (wewnętrzna zmienna procedur magnetofonu) przeniesiona z $030C-$030D na $022D-$022E;
  • CASFLG $030F (wewnętrzna zmienna procedur magnetofonu) przeniesiona do $03F9; jedno i drugie celem zwolnienia miejsca na nowe zmienne bloku DCB;
  • kilka procedur używanych przez E: i S: (mianowicie COMADR, CLRSCR i CONVRT) zostało napisanych na nowo z użyciem 16-bitowych rozkazów, co zarówno je przyspiesza, jak i skraca;

15.XI.2004.

  • poprawa szybkości działania procedury OUTPLT;
  • optymalizacje (na wielkość) w procedurach SIO i CIO przy użyciu nowych rozkazów i trybów adresowania;
  • handler rozkazu COP #$00 przełącza się w tryb emulacji przed wywołaniem systemu;
  • rozkazy TSX/TXS wylatują z SIO, wchodzą TSC/TCS na to miejsce; to jakby komuś przyszło do głowy wywołać SIO w trybie natywnym;

14.XI.2004.

  • małe ulepszenie w OUTCH;

13.XI.2004.

  • numer wersji OS-u zmieniony na BB 01.91;
  • poprawka w handlerze przerwania COP;
  • procedury obsługi przerwań przeniesione trochę bliżej adresu $C000 (komasacja wolnego miejsca);
  • wyciągnięcie albo włożenie kartridża powoduje zatrzymanie procesora instrukcją STP zamiast wejścia w nieskończoną pętlę (JMP *-3);
  • SETVBLV napisane na nowo z użyciem 16-bitowych rozkazów; wewnętrzna zmienna INTEMP $022D-$022E zrobiła się zbędna;

12.XI.2004.

  • małe ulepszenia w procedurach FMUL/FDIV;
  • pierwsza wersja ROM-u gotowa do wypuszczenia;
  • do wzięcia

11.XI.2004.

  • numer wersji ROM-u zmieniony na BB 01.90;
  • handler COP ukończony (nie całkiem, jak się okazało później);
  • poprawka błędu Atari w procedurze NMIENBL, NMI nie powinno być włączane przed ustawieniem GINTLK ($03FA);
  • numer stacji dysków, z której system ma się zabootować, jest teraz ustalany w procedurze DISKINIT (przed zainicjowaniem nowych urządzeń), a nie w procedurze BOOT (po);
  • niewielkie optymalizacje w procedurach VBL-a (ok. 32 cykli zysku);
  • nowe wektory przerwań ABORT i COP są już inicjowane przez reset;
  • niewielkie optymalizacje na wielkość kodu tu i ówdzie;
  • dokumentacja;
  • dodana procedura, która testuje komputer na okoliczność istnienia dodatkowej pamięci liniowej; procedurka wzięta z SysInfo, z niewielkimi zmianami;
  • wywołanie jej wrzucone do SYSINIT;
  • dalsze optymalizacje w procedurach przerwań;
  • ulepszenia w procedurze OUTPLT;
  • optymalizacje na wielkość w handlerze magnetofonu;

10.XI.2004.

  • procedury obsługi drukarki (P:) skrócone przy użyciu nowych rozkazów i trybów adresowania, wektory przerwań 65C816 powinny się teraz tam spokojnie zmieścić; numer seryjny itd. też wywaliłem w tym celu;
  • wstępne handlery dla NMI i IRQ w trybie natywnym;
  • poprawka w SYSVBL (dostęp do stosu za pomocą rozkazów adresownaia stosu);
  • napisana duża część handlera COP;
  • dokumentacja

http://drac030.atari8.info © KMK
free counters