Tajemnice ATARI

Ludzie listy piszą...

    Andrzej Zacharewicz z Polkowic

   List ten jest adresowany szczególnie do autora TOS-u, Witolda Ściuka. Kiedy przeczytałem opis systemu operacyjnego stworzonego przez pana Witolda byłem wielce uradowany. Niestety po wpisaniu programu handler T: nie czytał poprawnie (na końcu pierwszego rekordu zawsze występował błąd nr 200, tzn. błąd transmisji szeregowej). Jestem jednym z tych użytkowników ATARI, którzy bardzo poważnie traktują ten komputer, i kiedy pomyślałem, że w tym systemie np. QA wczytuje się tylko 14 rekordów to bylo to dla mnie sensacją. Niestety, jak już wcześniej pisałem, program nie chodził (błędne podłączenie interfejsu nie wchodziło w grę gdyż system wypróbowałem na kilku magnetofonach).

   Zaopatrzyłem się w kilkanaście godzin wolnego czasu, wczytałem TOS, wczytałem Bug Huntera i zabrałem się do szukania błędów. Po 28 godzinnym maratonie znalazłem aż 3 "błędy" w programie. Okazało się że TOS przy odczycie rekordu po 1024 bajtach dławi się, bo nagle napotyka puste miejsce na taśmie. Jeżeli na samym końcu rekordu wyślemy jeszcze jeden bajt (np. #00) to ten błąd wyeliminujemy. "Piszemy" krótki program:

$ODB4 JMP $OB64

$OB64 LDA #0
$OB66 JSR $0D02
$OB69 JMP $OF7E

   Aby zmianę tę wprowadzić do TOS-u najlepiej zmienić dane w listingu programu zamieszczonym w TA 4/92. I tak jeśli chodzi o poprawkę pierwszą to zmieniamy linie 1100 oraz 1550.

1100 DATA 9ba90020020d4c7e0f54ba0000
1550: zmieniamy z 7e0f na 640b

   Po tej zmianie okazale się że na końcu każdego rekordu pojawiał się błąd nr. 143. Po zamianie liczby (jednostek odczytu) z $11 na $14 odczyt jest już możliwy (na różnych egzemplarzach magetofonów ta wartość może być inna)

1610: liczbę drugą od końca zamieniamy z $11 na $14


   Zauważyłem jeszcze, iż po odczycie programu w turbo TOS nie odłączał turbo w magnetofonie (LDA #$3C, STA $D303) robi coś znacznie gorszego, zapisuje $3c w $0603 co jest ewidentną pomyłką. Poprawiamy:

1250: liczbę drugą od końca zamieniamy z $06 na $d3

   Po tych poprawkach system pracuje prawidłowo. W imieniu tych, którzy boleją nad nieprawidłowo pracującym TOS-em (wiem co to znaczy) proszę o wydrukowanie tych poprawek (całych lini DATA). TOS Jest wspaniałym systemem z rozsądnie i mądrze opracowanym systemem Turbo, jest bardzo wielką pomocą dla wszystkich posiadaczy magnetofonów i szkoda byłoby, aby leżał gdzieś na zakurzonej kasecie nigdy nie używany z powodu paru błędów.

   Istnieje możliwość dwukrotnego przyspieszenia transmisji. Oczywiście należy stosować taśmy dobrej jakości i kategorycznie nie zmieniać skosu głowicy (nie tylko w tym przypadku). Nie zagłębiając się w szczegóły podam zmienione bajty.

linia 1300: zmieniamy $5d na $28
linia 1310: zmieniamy $24 na $11
linia 1600: zmieniamy $33 na $19 i $09 na $04
linia 1610: zmieniamy $19 na $0b i $11 na $0c
   Tak przerobiony system pracuje u mnie już przez miesiąc i nie stwarza żadnych kłopotów. Jeśliby nawet od czasu do czasu jakiś rekord się nie wczytał to autor tego programu zaopatrzył go w bardzo pożyteczne ładowanie ostatniego rekordu, a nie całego pliku od początku.

Od redakcji

   Prezentujemy ten list z dużą przyjemnością, świadczy on bowiem o pomysłowości i dociekliwości naszych Czytelników. System TOS, o którym mowa, wyróżnia się spośród innych programów tego typu również sposobem komunikacji z użytkownikiem opartej o "interpreter komend", co zbliża go do standardów (znanych z większych komputerów) takich jak UNIX czy MS-DOS, a zdecydowanie różni od amatorszczyzny typu TURBO 2000.

   Dla uniknięcia pomyłki przy wprowadzaniu "łat" przedstawiamy kompletne wiersze listingu TOS-a, którymi należy zastąpić dotychczasowe linie o tych numerach. Pierwsza grupa zawiera poprawki błędów:

1100 DATA 9ba90020020d4c7e0f54ba0000
1250 DATA 0bd0f248a93c8d02d38d03d3ad
1550 DATA d0f3e619c63610ed4c640b6810
1610 DATA c634d0cce434a919b002a9l485

Druga natomiast - proponowaną zmianę prędkości.

1300 DATA 3ad0e4608aa2dbd0088aa228d0
1310 DATA 038aa211cad0fdaa608540a200
1600 DATA 199006243070c6501fe004b004
1610 DATA c634d0cce4340bl9b002a90c85


Wojciech Tylkowski z Bełchatowa

W numerze 9/92 Waszego pisma uwagę przykuwa tekst opisujący poprawkę plików Panthera tak, aby działały w systemie Blizzard. Stanąłem sam przed podobym problemem i rozwiązałem go, poprawiając procedury obsługi transmisji. Poprawka jest tak prosta, że postanowiłem podzielić się nią z Państwem w nadziei, że zostanie wydrukowana.

   Zmiany dotyczą systemu Turbo K.O.S. 1.0. Występuje on zarówno w postaci pliku, jak i na cartridge'ach. Jego wyróżniki to czarne tło po wejściu do menu oraz możliwość restartu komputera klawiszami CONTROL/=. Poprawka polega na zmianie zawartości komórek pamięci:

  • $OEC7(3783) z 1 na 2,
  • $OECB(3787) z $32(50) na S3A(58),
  • $OF36(3895) z $2A(42) na $5E(94).

       Przy pracy w BASIC-u można dokonywać tego instrukcjami POKE. Aby trwale poprawić plik systemowy, korzystamy jednak z programu Patcher. Do Patchera dopisujemy następujące linie:

    1000 DATA 1004,1,2
    1010 DATA 1008,50,58
    1020 DATA 1116,42,94
    

       Użytkownicy cartridge'ów z programami systemowymi mogą nagrać tak przerobiony K.O.S. w Turbo i uruchamiać go przy pomocy dowolnego Microloadera.

       Poprawka umożliwia odwoływanie się zarówno do "T1:", jak i "T:", czy "T2:". Wyświetlenie nazwy pliku uzyskujemy, podając zamiast nazwy pliku znaczek "^", a nie "*".

    Od redakcji

    Program "Patcher" wydrukowany w TA 7/91 zawiera błąd, który może spowodować niepoprawne działanie programu. Poniżej prezentujemy ulepszoną wersję (zmianie ulegają wiersze 20 i 30). Nie ma to jak łaciaty łactarz, czyż nie?
    1 REM ............................
    2 REM |        'PATCHER'         |
    3 REM |    Autor: Marek Pasek    |
    4 REM | (c) 1991 Tajemnice Atari |
    5 REM ............................
    6 REM 
    10 DIM IO$(7),F$(15):IO$="hhh*LVd"
    20 L=FRE(0):IF L>33791 THEN L=33791
    30 L=L-1024:DIM P$(L):P=ADR(P$)
    40 MSB=INT(P/256):SLEN=INT(L/256)
    50 MLEN=L-256*SLEN:LSB=P-256*MSB
    60 ? "Plik do odczytu ":INPUT F$
    70 OPEN #2,4,128,F$:POKE 866,7
    80 POKE 868,LSB:POKE 869,MSB
    90 POKE 872,MLEN:POKE 873,SLEN
    100 X=USR(ADR(IO$),32)
    110 IF PEEK(867)<>1 THEN 130
    120 ? "Zbyt wielki plik!":END 
    130 IF PEEK(867)=136 THEN 150
    140 ? "Niepoprawna transmisja!":END 
    150 CLOSE #2:TRAP 210
    160 MLEN=PEEK(872):SLEN=PEEK(873)
    170 READ AD,OBT,BT
    180 IF PEEK(P+AD)=OBT THEN 200
    190 ? "To nie jest ten plik!":END 
    200 POKE P+AD,BT:GOTO 170
    210 ? "Plik do zapisu ":INPUT F$
    220 OPEN #2,8,128,F$:POKE 866,11
    230 POKE 872,MLEN:POKE 873,SLEN
    240 POKE 868,LSB:POKE 869,MSB
    250 X=USR(ADR(IO$),32)
    260 ? "Gotowe.":END
    

       Wojciech Rawdanik odpowiada na pytanie zadane w TA 4/92:

       W programie TRACE z TA 4/92 najprostszym sposobem uzyskania wydruku także 1 linii jesi uruchomienie programu poprzez:

    CLR
    GOTO <numer_początkowej_linii_programu>
    

  • Powrót na start | Powrót do spisu treści | Powrót na stronę główną

    Pixel 2001