
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                               Atari800Win
             Emulator Atari 800/800XL/130XL/5200 dla Win32

     Oryginalny kod Atari800: David Firth (david@signus.demon.co.uk)
     Oryginalna wersja dla Win32: Richard Lawrence (rich@kesmai.com)

  06.05.2000                                                        v2.6
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  Jest to nieoficjalna wersja emulatora Atari800Win oparta na zrodlach
  Atari800 0.9.9i z pozniejszymi poprawkami Piotra Fusika.

  Powazniejsze zmiany w kodzie dla Windows:

  Dodano:
  1) Mozliwosc definiowania wlasnych zestawow klawiszy uzywanych do
     emulacji joysticka (okno dialogowe "Joystick Options").
  2) Opcje menu "Graphics/Save Screenshot" umozliwiajaca zapisywanie
     zawartosci ekranu emulowanej Atarynki.
  3) Okno dialogowe "Palette Options" pozwalajace na uzywanie
     zewnetrznych palet zdefiniowanych w plikach .ACT.
  4) Opcje menu "File/Turn disk" do automatycznej zmiany obrazow
     dyskietek w stacji dyskow nr 1.
  5) Zaawansowane ustawienia DirectDraw w oknie dialogowym "Graphics
     Options".
  6) Wiele nowych skrotow klawiaturowych ulatwiajacych obsluge.

  Poprawiono:
  1) Uklad kilku okien dialogowych oraz wiekszosci opcji menu, ktore
     zostaly niemal calkowicie przebudowane w celu zwiekszenia spojnosci
     i ulatwienia obslugi emulatora.
  2) Wyjscie z okna monitora komenda CONT nie wymaga restartu emulowanej
     Atarynki, nawet jesli wywolanie monitora zostalo spowodowane jej
     zawieszeniem.
  3) Nazwy plikow uzyte podczas zapisywania stanu emulatora oraz dzwieku
     sa zapamietywane podczas danej sesji.
  4) Znaczenie klawiszy funkcyjnych:
     F7 - przelaczanie pomiedzy zwykla a maksymalna predkoscia emulacji,
     F8 - wywolanie monitora.
  5) Wiele pomniejszych rozwiazan i bledow.

  Dokladniejszy komentarz odnosnie poczynionych zmian:

  1. Zaawansowane ustawienia wyswietlania obrazu

  Przejscie do okna dialogowego "Advanced Graphics Options" nastepuje po
  uzyciu przycisku "Advanced settings..." w oknie "Graphics Options".
  Nowoscia jest mozliwosc wyboru trybu wyswietlania obrazu, w ktorym
  wykorzystywane sa dwa przelaczane bufory. W tym celu nalezy wybrac
  opcje "Use two flipped buffers for full screen modes without menu".
  Metoda ta zapewnia zachowanie synchronizacji wyswietlanego obrazu
  z czestotliwoscia pionowa, z jaka pracuje monitor. Jest przy tym nieco
  mniej wymagajaca od dotychczasowej, nadal dostepnej poprzez wybor
  opcji "Always blit directly from display memory to the primary buffer"
  i uaktywnienie przelacznika "Synchronize blits with the vertical-blank
  interval". Metoda podwojnego buforowania moze byc aktualnie uzywana
  jedynie dla trybow pelnoekranowych bez widocznego menu.

  Warto w tym miejscu przypomniec, iz uaktywnienie opcji emulatora
  zapewniajacej synchronizacje wyswietlanego obrazu z czestotliwoscia
  pionowa pracy monitora nie oznacza, iz grafika bedzie automatycznie
  idealnie plynna. Aby osiagnac doskonala jakosc przewijania obrazu
  nalezy bowiem spelnic kilka warunkow, ktore zostaly opisane wczesniej
  w tym dokumencie.
  W przypadku niektorych kart graficznych konieczne moze sie ponadto
  okazac odpowiednie ustawienie dodatkowych parametrow. Przykladowo
  karty Matrox Millennium G400 wymagaja uzycia programu "Matrox Tweak
  Utility" i uaktywnienia opcji "FlipOnVBlank", aby przelaczanie buforow
  dla metody "Use two flipped buffers..." odbywalo sie podczas
  przerwania synchronizacji pionowej.

  Opcja "Synchronize with VSYNC" wystepujaca w poprzednich wersjach
  Atari800Win zostala przemianowana na "Wait until the blit can be set
  up (synchronous blits)" zgodnie z jej faktycznym przeznaczeniem.

  2. Definiowanie wlasnych zestawow klawiszy

  Wprowadzenie opcji definiowania wlasnych zestawow klawiszy powinno
  ulatwic zabawe emulatorem w przypadku braku joysticka. Program
  pozwala na zdefiniowanie dwoch takich zestawow. W tym celu nalezy
  posluzyc sie przyciskami "Keyset A" oraz "Keyset B" w oknie dialogowym
  "Joystick Options". Podczas definiowania zestawow nalezy zwrocic
  szczegolna uwage na nastepujace kwestie:

   klawisze uzyte do emulacji joysticka sa wylaczane z pozostalych
    funkcji. Jesli wiec przykladowo klawisz 'A' zostanie w danym
    zestawie klawiszy uzyty jako ekwiwalent joystickowego kierunku
    'w lewo', a klawisz 'L' - 'w prawo', nie bedzie mozliwe napisanie
    slowa 'Ala', jesli tylko zdefiniowany w ten sposob zestaw zostanie
    uaktywniony (tj. przypisany do dowolnego portu joysticka).
   program sprawdza, czy klawisze przypisane okreslonym kierunkom/
    akcjom nie powtarzaja sie, robi to jednak jedynie w obrebie danego
    zestawu. Mozliwe jest zdefiniowanie dwoch zestawow z tymi samymi
    klawiszami, nalezy jednak pamietac, iz dzialac beda tylko te
    nalezace do zestawu przypisanego do portu joysticka o nizszym
    numerze.
   nie jest konieczne definiowanie klawiszy dla kierunkow "skosnych",
    tj. 'w lewo-przod', 'w prawo-tyl' etc. Jednoczesne nacisniecie dwoch
    klawiszy przypisanych kierunkom podstawowym da bowiem ten sam efekt.
    Przykladowo, jesli strzalki kursora w lewo i do przodu przypisane sa
    adekwatnym kierunkom joysticka, jednoczesne nacisniecie obydwu tych
    klawiszy spowoduje uzyskanie kierunku 'w lewo-przod'.

  Emulator udostepnia rowniez predefiniowane zestawy klawiszy: blok
  klawiszy numerycznych ('Numpad') oraz strzalki kursora i prawy klawisz
  Ctrl jako 'fire' ('Arrows + RCtrl as fire'). Uzycie w tym celu lewego
  klawisza Ctrl mogloby sie wydawac rozwiazaniem wygodniejszym,
  prowadziloby jednak do sytuacji, w ktorej jednoczesne wykorzystanie
  czterech zestawow klawiszy przez czterech graczy (np. podczas gry
  w 'M.U.L.E') byloby bardzo utrudnione. Najlepiej jest wiec zdefiniowac
  sobie wlasny zestaw, zostanie on zapamietany i bedzie zawsze gotowy do
  uzycia po uruchomieniu emulatora.
  
  3. Automatyczna zmiana dyskow

  Atari800Win 2.6 pozwala w pewnym stopniu zautomatyzowac zmiane dyskow
  w emulowanej stacji nr 1. Aby moc korzystac z tej funkcji, nalezy
  zadbac o nadanie odpowiednich nazw obrazom wykorzystywanych dyskietek.

  Zmiana dyskietek realizowana jest w ten sposob, ze ostatnia litera/
  cyfra nazwy obrazu dyskietki (bez rozszerzenia) jest zwiekszana
  o jeden (np. w przypadku liter z 'a' na 'b', cyfr '1' na '2'). Jesli
  plik o tak zmodyfikowanej nazwie istnieje w aktualnym katalogu,
  zostanie on automatycznie przypisany stacji nr 1. jesli nie,
  zwiekszanie ostatniego znaku jest kontynuowane az do momentu
  osiagniecia maksymalnej wartosci ('z', '9'). Wowczas poszukiwanie
  rozpoczynane jest od wartosci minimalnej ('a', '1').

  Przykladowo, jesli wykorzystywane sa dwie dyskietki:
  Serious 6a.atr
  Serious 6b.atr
  i aktualnie przypisana stacji nr 1 jest Serious 6a.atr, to w celu jej
  wymiany na Serious 6b.atr wystarczy uzyc opcji menu "File/Turn disk"
  lub posluzyc sie skrotem klawiaturowym Alt-N. Kolejne uzycie Alt-N
  przypisze ponownie dyskietke Serious 6a.atr.

  4. Zapisywanie zawartosci ekranu
  
  Opcja menu "Graphics/Save Screenshot" umozliwia zapisywanie zawartosci
  ekranu (w tym 'interlace') emulowanej Atarynki do plikow w formacie
  .PCX. Funkcje te mozna rowniez wywolac poslugujac sie klawiszem F10
  (z Shift dla ekranow 'interlace').
  Nazwy dla zapisywanych plikow .PCX sa automatycznie generowane przez
  emulator dopoty, dopoki uzytkownik nie wprowadzi wlasnej.

  5. Mozliwosc uaktywnienia emulowanej, zawieszonej Atarynki komenda
     CONT monitora
  
  Poprawka ta pozwala m.in. na uzywanie komend CIM przydatnych podczas
  uruchamiania i testowania programow dla Atari. Poprzednia wersja
  emulatora nie pozwalala na taka 'reanimacje', co utrudnialo skuteczne
  wykorzystanie monitora.

  6. Skroty klawiaturowe i klawisze funkcyjne

  Oto kompletna lista skrotow klawiaturowych rozpoznawanych przez
  emulator:

  Alt-1     - przypisuje obraz dyskietki stacji dyskow nr 1
  Alt-2     - przypisuje obraz dyskietki stacji dyskow nr 2
  Alt-3     - przypisuje obraz dyskietki stacji dyskow nr 3
  Alt-4     - przypisuje obraz dyskietki stacji dyskow nr 4
  Alt-5     - przypisuje obraz dyskietki stacji dyskow nr 5
  Alt-6     - przypisuje obraz dyskietki stacji dyskow nr 6
  Alt-7     - przypisuje obraz dyskietki stacji dyskow nr 7
  Alt-8     - przypisuje obraz dyskietki stacji dyskow nr 8
  Alt-A     - przelacza pomiedzy kolejnymi trybami "artifactingu"
  Alt-C     - przypisuje obraz cartridge'u
  Alt-D     - wywoluje okno dialogowe "Drive Selections"
  Alt-E     - wlacza/wylacza emulacje dwoch procesorow Pokey
  Alt-G     - wywoluje okno dialogowe "Graphics Options"
  Alt-H     - wywoluje okno dialogowe "Pick Virtual Hard Disk Dirs"
  Alt-J     - wywoluje okno dialogowe "Joystick Options"
  Alt-K     - wywoluje okno dialogowe "Keyboard Templates"
  Alt-L     - uruchamia atarynkowy plik wykonywalny
  Alt-M     - przelacza pomiedzy roznymi typami emulowanych modeli Atari
  Alt-N     - probuje przypisac kolejny obraz dyskietki w stacji nr 1
  Alt-O     - odczytuje zapisany wczesniej stan emulowanego Atari
  Alt-P     - wywoluje okno dialogowe "Palette Options"
  Alt-R     - wywoluje okno dialogowe "ROM image selections"
  Alt-S     - wywoluje okno dialogowe "Sound Options"
  Alt-T     - wywoluje okno dialogowe "Atari Settings"
  Alt-U     - wlacza/wylacza odtwarzanie dzwieku
  Alt-V     - przelacza pomiedzy systemami wizji PAL/NTSC
  Alt-Z     - zapisuje do pliku aktualny stan emulowanego Atari
  Alt-Enter - przelacza pomiedzy ostatnio uzywanym trybem okienkowym
              i pelnoekranowym

  Lista wykorzystywanych klawiszy funkcyjnych:

  F2        - klawisz OPTION
  F3        - klawisz SELECT
  F4        - klawisz START
  F5        - klawisz RESET (warm reset)
  Shift-F5  - symuluje wylaczenie i ponowne wlaczenie Atari (cold reset)
  F7        - przelacza pomiedzy zwykla a maksymalna predkoscia emulacji
  F8        - wywoluje okno monitora
  F9        - wlacza/wylacza pauze
  F10       - zapisuje do pliku .PCX aktualnie wyswietlany obraz
  Shift-F10 - zapisuje do pliku .PCX aktualnie wyswietlany obraz
              w trybie 'interlace'
  F11       - wlacza/wylacza szybki dotep do dyskow (jesli uaktywniono
              opcje "Allow ROM patches" w oknie "Atari Settings")


  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  01.04.2000                                                       v2.5e
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  Jest to nieoficjalna wersja emulatora Atari800Win oparta na zrodlach
  Atari800 0.9.9g.

  Powazniejsze zmiany w kodzie dla Windows:

  Dodano:
  1) Opcje "Enable stereo" w oknie dialogowym "Sound Options".
     Uzywanie tego rozszerzenia ma sens jedynie przy uruchamianiu
     wykorzystujacego je oprogramowania (glownie nowe programy
     demonstracyjne). Wsparcie dla dzwieku stereo wprowadzono w wersji
     0.9.9g emulatora Atari800.
  2) Opcje "Use digitized effects" w oknie dialogowym "Sound Options".
     Pozwala ona na uaktywnienie metody generowania dzwieku zwanej
     "volume only".
  3) Prosta konsole monitora oparta na oknie DOS. Aby ja wywolac, nalezy
     wybrac opcje menu "Misc/Monitor" lub nacisnac klawisz F7.
  4) Skroty klawiaturowe do wywolywania okna dialogowego "Pick Virtual
     Hard Disk Directories" (Alt+V) oraz akcji zapisu (Alt+Z) i odczytu
     (Alt+O) stanu emulatora.

  Poprawiono:
  1) Nieobecna w poprzedniej wersji emulacje dzwiekow klawiatury. Aby ja
     uaktywnic, nalezy posluzyc sie opcja "Use digitized effects"
     w oknie dialogowym "Sound Options".
  2) Problemy z oknem dialogowym "Sound Options".
  3) Obsluge bledow generowanych przez DirectX.
  4) Wygode obslugi okna dialogowego "Error Log", ktorego rozmiary mozna
     teraz zmieniac w zaleznosci od potrzeb.
  5) Ustawienia projektu emulatora (Visual C++).
  6) Kilka pomniejszych bledow.


  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  29.02.2000                                                       v2.5d
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  Jest to nieoficjalna wersja emulatora Atari800Win oparta na zrodlach
  Atari800 0.9.9f.

  Podstawowym celem przy opracowywaniu tej wersji bylo uaktualnienie
  emulatora. Wprowadzono jednak rowniez kilka zmian w kodzie dla
  Windows:

  Dodano:
  1) Opcje "Use new binary load method" w oknie dialogowym "Hardware
     Settings". Przy jej uzyciu mozna wybrac alternatywna metode
     ladowania plikow wykonywalnych, wprowadzona w wersji 0.9.9d
     emulatora Atari800.
  2) Opcje "File Associations" w menu "Misc". Sluzy ona do rejestrowania
     plikow rozpoznawanych przez emulator, co pozwala na ich
     bezposrednie uruchamianie z poziomu Eksploratora Windows.
  3) Dwie nowe ikonki (dotychczasowe sa nadal dostepne).
  4) Alternatywna metode synchronizacji wyswietlania obrazu przez
     emulator z czestotliwoscia odswiezania pionowego, z jaka pracuje
     monitor (eksperymentalnie, szczegoly opisano nizej).

  Poprawiono:
  1) Problemy z wymiarowaniem okna glownego w trybach "okienkowych".
  2) Problemy z zapisem informacji w rejestrach pod kontrola Windows NT.
  3) Problemy z oknami dialogowymi "Cartridge Management", "Hardware
     Options" oraz "Graphics Options".

  Rozpoczeto rowniez reorganizacje kodow dla Windows, m.in. dodano pliki
  naglowkowe.
  
  Wiecej o nowej metodzie synchronizacji:

  Ujmujac rzecz najprosciej, modyfikacje polegaja na dolaczeniu
  alternatywnej metody uzyskania plynnej grafiki. Na czym polega
  problem?

  Otoz uzyskanie DOSKONALE plynnej grafiki (tj. DOKLADNIE takiej, jak na
  oryginalnej Atarynce) przy uzyciu emulatora Atari800Win czasem nie
  jest mozliwe. Czesto wynika to z ograniczen sprzetu (w pelni
  satysfakcjonujaca emulacje zapewnia dopiero PC ~300MHz), ale nie
  tylko... Oto lista krokow, jakie nalezy wykonac, aby cieszyc sie
  plynnym przewijaniem obrazu:

  1. Skonfigurowac odpowiednio parametry wyswietlania obrazu w uzywanym
     przez emulator trybie graficznym. Nalezy do tego celu wykorzystac
     oprogramowanie producenta karty graficznej lub jakiekolwiek inne,
     mogace posluzyc do tego celu (np. TweakHZ, Power Strip).
     Podstawowym parametrem, jaki nalezy zmodyfikowac, jest
     czestotliwosc odswiezania pionowego (vertical refresh rate). Jesli
     emulator ma byc uzywany w trybie PAL, nalezy dazyc do uzyskania
     wyswietlania obrazu z czestotliwoscia 50Hz, dla NTSC czestotliwosc
     ta wynosic powinna 60Hz.

  Przykladowo, sterowniki kart graficznych firmy Matrox pozwalaja na
  ustawienie niemal dowolnej czestotliwosci odswiezania obrazu pod
  kontola Wingrozy (oczywiscie w dostepnym dla tych kart zakresie).
  Dzieki temu mozna uzyskac 50Hz i to praktycznie w dowolnej
  rozdzielczosci. Ograniczeniem jest dopuszczalna, minimalna wartosc
  czestotliwosci odswiezania poziomego (horizontal refresh rate)
  monitorow VGA, zazwyczaj wynoszaca 31kHz. W przypadku Millennium G400
  mozliwosci ustawienia parametrow wyswietlanego obrazu sa jednak na
  tyle duze, ze 50Hz uzyskac mozna nawet w rozdzielczosci 320x240.

  2. Skonfigurowac emulator. W przypadku Atari800Win nalezy wywolac okno
     dialogowe "Graphics Options" (Alt+G), a nastepnie wybrac tryb
     graficzny, ktorego parametry obrazu zostaly zmodyfikowane w punkcie
     pierwszym oraz zaznaczyc opcje "Wait on VSYNC". Jej wybranie
     spowoduje, iz emulator bedzie czekal z "przeniesieniem obrazu na
     ekran" na sygnal przerwania synchronizacji pionowej. Po ustawieniu
     opcji graficznych nalezy sie jeszcze upewnic, ze emulator pracowac
     bedzie w systemie, dla ktorego ustawilismy parametry obrazu. W tym
     celu nalezy wywolac okno "Hardware settings" i wybrac "PAL" (50Hz)
     lub "NTSC" (60Hz). Opcja "Refresh" w tym oknie musi byc ustawiona
     na 1.

  To... prawie wszystko. Powyzszy algorytm zapewnia uzyskanie
  oczekiwanych rezultatow w przypadku wiekszosci emulatorow,
  dysponujacych opcja "Synchronize with VSYNC". Niestety, uruchamiajac
  Atari800Win przezyc mozna spory zawod. Tyle wysilkow, a ekran
  w niezapomnianym "Boulder Dashu" czesto nadal skacze i wyglada tak,
  jakby go "rozrywano". Wynika to z zastosowanej metody synchronizacji
  wyswietlania obrazu przez emulator z czestotliwoscia odswiezania
  ekranu monitora. Metoda ta czasem po prostu nie dziala (chociazby
  w przypadku wspomnianych wczesniej kart firmy Matrox).

  Wowczas wlasnie przydatna okazac sie moze metoda alternatywna. Jej
  wyboru dokonuje sie w okienku "Graphics Options" (Alt+G) przy uzyciu
  opcji "Wait on VSYNC". W tym celu nalezy zaznaczyc te opcje, ale tak,
  by "ptaszek" byl nieco bledszy (mowiac prosciej, wybrac stan drugi
  trzystanowej kontrolki checkbox :-) ). Nowa metoda synchronizacji
  dziala jedynie wowczas, gdy uzywane jest DirectDraw (zarowno w trybach
  pelnoekranowych, jak i okienkowych). Ciekawe efekty daje rownolegle
  uaktywnienie opcji "Run Atari as fast as possible" (okno "Hardware",
  Alt+H): mozna wowczas sterowac predkoscia pracy emulatora poprzez
  zmiane czestotliwosci odswiezania ekranu przez karte graficzna
  (niestety, przy takich ustawieniach trzeba sie pogodzic z brakiem
  dzwieku).

  Tyle na temat zalet. Niestety, wad moze byc wiecej:

   nie wszystkie monitory/karty graficzne pozwalaja na prace w 50/60Hz,
   przewijanie obrazu moze znacznie zyskac na jakosci, niestety nie
    mozna tego powiedziec o dzwieku; dotyczy to zwlaszcza programow
    wykorzystujacych dodatkowe banki pamieci,
   opcja "Refresh" w oknie dialogowym "Hardware Settings" musi byc
    ustawiona na 1; oznacza to, ze musisz dysponowac naprawde wydajna
    (?) maszyna, aby uzywanie tej metody mialo sens.

  Metoda uzyskiwania plynnej grafiki powinna dzialac na roznych
  platformach, o ile tylko dostepne sa odpowiednie narzedzia do zmiany
  czestotliwosci pionowej wyswietlanego przez karte graficzna obrazu
  (w przypadku kart Matrox komfortowa sytuacje maja wlasciciele
  starszych modeli, G400 zostala pod tym wzgledem potraktowana nieco po
  macoszemu). W kazdym razie warto sprobowac - jakosc grafiki uzyskanej
  przy pomocy emulatora Fellow (DOS) potrafi powalic na kolana :-).

 Zycze powodzenia,
 Harry (szymankowskit@prokom.pl)


 No coz, pozostala jeszcze rzecz najwazniejsza, czyli podziekowania :-)
 Chcialbym je przeslac nastepujacym ludziskom:

  Piotrowi Fusikowi (Fox/Taquart) za powazne zajecie sie rozwojem
   emulatora, solidne wsparcie przy testowaniu okienkowej wersji tegoz
   oraz wiele wartosciowych pomyslow (www.6502.org/users/fox),
  Xlentowi za podsylane dema i bezcenna pomoc w testach oraz sliczne
   strony w duzej mierze poswiecone Atari800Win
   (http://poczta.pnet.pl/~xlent2/),
  Danielowi Kozminskiemu za okazywana zyczliwosc i wytrwalosc
   w prowadzeniu stron bedacych niezastapionym przewodnikiem po
   krainie sentymentalnych wspomnien (http://www.atari-area.prv.pl/)
  Rafalowi Dziamskiemu (Vasco/Tristesse) za pomoc w testach i doskonala
   plytke CD po brzegi wypchana oprogramowaniem dla Atari
   (peacock.au.poznan.pl/~vasco),
  mojej zonie Agnieszce za niezwykla cierpliwosc i wyrozumialosc.
