Tak z ciekawości :) ... Jakieś poprawki do 1.02 są bodajże w niewydanych OS-ach dla 1450XLD i 1400XL (taki sam numer wersji - BB 2.03, tylko datą się różnią 8) )
No, fertig. Po dwóch nocach analizy ROM-u od 1450XLD (wziąłem ten nowszy) muszę stwierdzić, że numer wersji 2.03 - w porównaniu do 1.02 tego co jest w 800XL - to jest gruba przesada. Są drobne poprawki, owszem, ale to przeważnie kosmetyka. :?
[ Dodano: 12.12.2004 06:39:42 ]
Wywoływanie funkcji OSa przez XIO jest fajne. Z literką może być problem, więc może jakiś dodatkowy wyróżnik, np. wirtualny numer IOCB np. 8 ? :D
Tak sobie myślę: wirtualne kanały I/O raczej odpadają - bez możliwości ustawienia jakichkolwiek zmiennych trudno byłoby tego używać - ale fakt jest faktem, że numery od 8 do 15 się marnują. Waham się pomiędzy kilkoma koncepcjami i nie wiem, co wybrać:
1) można zlikwidować bufor drukarki, to znaczy przenieść go na miejsce bufora magnetofonu (handler magnetofonu już poleciał, więc to chyba nie szkodzi). To zwalnia 40 bajtów za IOCB #7, czyli można byłoby przypisać to miejsce do IOCB #8 i IOCB #9 powiększając w prosty sposób liczbę kanałów do 10.
Jest to dość proste do zakodowania i nowe kanały byłyby też proste do użycia, bo dokładnie tak samo, jak stare.
2) zdefiniować osiem oddzielnych kanałów IOCB w dodatkowej pamięci: stare byłyby pod $000340 a nowe powiedzmy od $010100-$01018F. Oczywiście byłyby dostępne tylko wtedy, kiedy ta pamięć istniałaby, ale za to łączna liczba kanałów wzrosłaby do 16.
Jest to dość proste do zakodowania, ale byłoby to średnio wygodne w użytkowaniu, bo trzeba byłoby pamiętać o odejmowaniu 128 od adresu wewnątrz IOCB o numerze powyżej 7, no i w ogóle o tym, że bazą nie jest w tym wypadku $0340, tylko jakiś inny adres ... no i jeszcze trzeba byłoby sprawdzać czy dodatkowa pamięć istnieje, zanim się w niej zacznie grzebać. Ale to chyba jest najmniejszy problem.
3) spróbować tak zmodyfikować CIO, żeby kanały z zakresu 8-15 mogły być umieszczone w dowolnym miejscu w pamięci, albo nigdzie. Problemy z adresowaniem ich j/w (to znaczy: to nie jest trudne, ale to jest pole do łatwego zrobienia trudnych do znalezienia błędów). Ciężka sprawa, jeśli chodzi o API, pewnie trzeba byłoby dorobić dwie nowe funkcje CIO, jedna do zainicjowania ich, druga do skasowania (a trzecia do odczytywania ich adresu bazowego ...)
No i tak w ogóle to CIO jest 16-bitowe, a przydałoby się, żeby co najmniej adres i długość bufora (albo przynajmniej sam adres) były 24-bitowe.
Ma ktoś jakieś pomysły?
KMK
? HEX$(6670358)