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