Aktualizacja:
4 II 2024




== ELSA ==
* Opis
* Lista zmian
* Pliki
== 65C816 XL OS ==
* Opis
* Lista zmian
* Lista zgodności
* Pliki
== Poprawki ==
* Pliki
== IDE Plus ==
* Opis
* Pliki
== Rozmaitości ==
* Pliki
== Karty CPU ==
* Opis
* Pliki
== SysInfo ==
* Opis
* Pliki
== Let's Emu! ==
* Opis
* Pliki
== U-BASIC ==
* Opis
* Pliki
== CP/Emu ==
* Opis
* Pliki
== MultiBASIC ==
* Opis
* Lista zmian
* Pliki

















 

Lista zmian w OS-ie

17 I 2024, rev. 2.45

  • klawiatura: poprawiona obsługa noclik $02db (zgodnie z odp. dyskusją na AAge)
  • obsługa COP #$00: gdy stos został przeniesiony poza stronę 1, ustawiamy wskaźnik stosu na $01FF przed przełączeniem w tryb emulacji 6502 (i, oczywiście, przywracamy przed powrotem)
  • obsługa COP #$00: poprawiony błąd skutkujący w pewnych warunkach wywołaniem zadanej procedury z nieprawidłową wartością rejestru znaczników procesora.

24 V 2023, rev. 2.44

  • start systemu: poprawka w procedurze liczącej banki pamięci, brakowało jednego rozkazu (?).
  • obsługa COP #$00: usunięto nadmiarowy rozkaz SEP #$30 po powrocie z trybu emulacji (użytkownicy emulatorów: to będzie powodowało wywałki pod Altirrą, proszę ją sobie uaktualnić do wersji, w której poprawiono ten błąd).
  • SIO: daux1/2 ustawiamy teraz na $0003 przy pytaniu stacji o szybkość transmisji turbo.
  • SIO: wyciszamy wszystkie kanały dźwiękowe po transmisji (jak w Atari OS), ale tylko wtedy, gdy iosnden<>0.
  • SIO: iosnden $41 będzie teraz ustawiany na $08 oraz OR-owany z $A0 celem uzyskania wartości dla AUDC4 sterującej przydźwiękiem SIO. A zatem, ustawianie tego bajtu pozwoli teraz na programową regulację głośności tego przydźwięku.

6 IX 2021, rev. 2.43

  • kmem: bloki pamięci RAM z ustawionym atrybutem KM_RPR, ale z KM_RES skasowanym nie powinny być łączone.
  • kmem: dodano kmalloc(-2) = zwróć rozmiar największego wolnego bloku pamięci.
  • dodano kmscan.com do archiwum.
  • kmem: podczas inicjowania tablicy alokacji pamięci było założenie, że całkowity rozmiar pamięci RAM jest równy numerowi najwyższego segmentu odjąć 1 - co może nie być prawdą, jeśli wysoka pamięć zaczyna się np. od adresu $020000.

11 III 2021, rev. 2.42

  • niewielkie optymalizacje na wielkość kodu.
  • start systemu: jeśli Rapidus BIOS jest obecny, zostanie odpytany o wielkość wysokiej pamięci, OS nie będzie tego sprawdzał własnymi procedurami.
  • obsługa COP #$xx (podziękowania dla Andy'ego Wernera za zwrócenie na to uwagi): redukcja liczby zapisów do pamięci, ponadto żadne dane nie będą już trzymane w zmiennych statycznych przy wywołaniach funkcji systemowych.
  • obsługa COP #$00: przy powrocie bity I oraz D rejestru statusu CPU zostaną przechowane.
  • większość wywołań systemowych kasuje teraz bit D rejestru statusu.
  • podsystem kmem: dodano funkcję nr 3, kmgetblk(), która przyjmuje na stosie numer bloku, a zwraca jego rozmiar w A oraz atrybuty w X. To pozwala zewnętrznemu sterownikowi pamięci na przejęcie informacji o stanie RAM-u przed zainstalowaniem własnej obsługi.
  • kmalloc(): poprawka, system zwracał błąd, kiedy przy ustawionym atrybucie KM_EXE zażądano alokacji bloku większego niż 64k.
  • kmalloc(): dodano atrybut KM_TOP ($0010), pozwalający na alokację pod szczytem wolnej pamięci.
  • kmalloc(): kod wykonujący KM_CLR nie używa już zmiennych statycznych.
  • kmalloc()/kfree(): dodano "zbieracz śmieci" wywoływany po każdym kmalloc() i kfree() w celu łączenia sąsiednich bloków spełniających odpowiednie kryteria (wolne z wolnymi, rezydentne z rezydentnymi itp.)
  • podsystem kmem: ogólne porządki.
  • start systemu: ekran pokazujący się, kiedy nie ma do czego oddać sterowania po zainicjowaniu systemu, będzie teraz wyświetlał objaśnienie powodu swojego pojawienia się
  • start systemu: także, kiedy nie ma czego zabootować, system spróbuje uaktywnić wewnętrzny BASIC i oddać mu sterowanie, jeśli istnieje, nawet wtedy, kiedy użytkownik "nie kazał".

31 I 2020, rev. 2.41

  • drobna optymalizacja w kmalloc(): dwa rozkazy AND #$xx zastąpiono przez BIT #$xx celem uniknięcia późniejszego odtwarzania akumulatora.
  • różni ludzie flaszują ten OS do slotów U1MB, a potem zapominają, że on jest tylko dla 65C816 i są zdziwieni czarnym ekranem po przełączeniu w tryb 6502 - zatem teraz będzie się w takiej sytuacji ukazywał na ekranie stosowny komunikat.
  • NEWCOL $02EE/$02EF i cały kod z tym związany został usunięty: to jest bezużyteczne i tylko spowalnia procedury obsługi ekranu. Dla ekranów o szerokości 32/48/80 kolumn proszę używać zewnętrznych sterowników. W wyniku tej zmiany procedury obsługi ekranu 40-kolumnowego (plot/print/scroll) stały się średnio 6% szybsze.
  • SIO $E459 teraz ciut szybciej wybiera i wywołuje urządzenia PBI.
  • po JMP $E474 wszystkie rejestry CPU zostaną od razu ustawione na rozmiar 8 bitów.
  • bez podłączonej zewnętrznej pamięci masowej nie dało się uruchomić BASIC-a, poprawiono.
  • poprawki do procedury BOOT i do SIO mające na celu zwiększenie zgodności wstecz; SpartaDOS 3.3 już się uruchamia.

3 V 2019, wer. 2.40

  • Kiedy podczas ciepłego resetu nie udaje się otworzyć GR.0, żeby system nie wpadał w nieskończoną pętlę, zostanie wymuszony zimny start.
  • Poprawiono błąd w kmalloc(), który skutkował uszkodzeniem tablicy alokacji pamięci przy alokowaniu bloków z wyrównaniem do granicy 64k.

7 VIII 2017, wer. 2.39

  • Test pamięci bankowanej nie będzie teraz nadpisywał obszaru $0400-$04FF.
  • kmalloc() nie będzie już wymagać, żeby blok z atrybutem "odporny na reset" miał jednocześnie atrybut "rezydentny".
  • Na Rapidusie, kiedy strona zerowa jest sprzętowo powielona pod adresami $010000-$0100FF, przy zimnym starcie system automatycznie zajmie ten obszar jako pamięć systemową (atrybuty "odporny na reset" i "rezydentny").

16 VII 2016, wer. 2.38

  • Tablica kolorów dla ekranu została oddzielona od innych danych, w wyniku czego można ją teraz dowolnie zmieniać przez modyfikowanie pliku binarnego ROM (co wymaga poprawienia sumy kontrolnej programem CKSFIX).
  • Do archiwum dodano plik CKSFIX.TXT.
  • CKSFIX.COM będzie teraz sprawdzał, czy załadowny plik to faktycznie obraz OS ROM. Domyślną nazwę pliku tegoż zmieniono na XLOS816.ROM.

10 V 2016, wer. 2.37

  • Poczas zimnego startu, w obecności Rapidus BIOS-u pod $f00000 będzie wywoływana jego funkcja inicjowania pamięci w celu poprawienia informacji w tablicy alokacji pamięci.
  • W obecności Rapidus BIOS-u zostanie on użyty do wyświetlenia logo na "ekranie śmierci" w przypadku błędu krytycznego.
  • Uproszczenia w boot-selektorze: jako że transmisja szeregowa może być obsługiwana przez urządzenia PBI, stara metoda sprawdzania, czy dane urządzenie pamięci masowej jest szeregowe czy nie, nie jest już użyteczna (i została usunięta).
  • Poprawka w procedurach drukarki: brak jednego rozkazu powodował zawieszanie się systemu podczas zamykania urządzenia P:.
  • Poprawka w procedurze reset: naciśnięcie Reset podczas pracy w Atari BASIC wyłączało interpreter.

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