LineA
From Atariki
Wersja z dnia 10:27, 4 maj 2007 Vulgar (Dyskusja | wkład) ← Previous diff |
Aktualna wersja Sorcerer.dragonnel (Dyskusja | wkład) (→ditto) |
||
Linia 1: | Linia 1: | ||
- | Instrukcje '''Line A''', są to proste instrukcje graficzne Atari ST. Odpowiadają za podstawowe operacje graficzne. Za ich pomocą można tworzyć kompleksowe operacje przy pomocy kilku prostych komend. Można nimi narysować pixele, linie, kwadraty oraz kontrolować duszki i kursor myszki. | + | Instrukcje '''Line A''', są to proste instrukcje wejścia/wyjścia odnoszące się do hardware Atari ST/STe/TT/Falcon, zrealizowane z pomocą specyficznego emulatora nieistniejących rozkazów procesorów MC680x0. Realizuje je [[heksadecymalny]] kod $A00x, gdzie x oznacza jedną z 16 możliwych pseudo-komend procesora Motoroli. Każde wywołanie takiej pseudo-komendy obarczone jest dodatkowymi cyklami procesora, których wymaga obsługa przerwań. Jedyna korzyść, to oszczędność pamięci przy definiowaniu komend. Użyto ich ze względu na konieczność zmieszczenia pierwszych wersji [[TOS]]'a w 192KB pamięci [[ROM]]. Miały zostać wyeliminowane w późniejszych wersjach systemu [[TOS]], ale pozostały w użyciu ze względu na kompatybilność. |
- | razem z [[BIOS]]em oraz [[XBIOS]]em stanowią najniższą warstwę logiczną systemu [[TOS]]. Procedury [[GEM]]u zbudowane są z tych instrukcji. | + | Odpowiadają za podstawowe operacje graficzne, dostęp do klawiatury i myszy. Za ich pomocą można tworzyć kompleksowe operacje przy pomocy kilku prostych komend. Można nimi narysować pixele, linie, kwadraty, pisać tekst, kopiować bloki graficzne oraz kontrolować software'owe duszki, w tym kursor myszki. Po inicjalizacji komendą $A000 można się m.in. dowiedzieć, jaki aktualnie jest adres zestawu znaków, pozycja myszki, adres, wielkość, rozdzielczość i rozmiary w absolutnych i względnych współrzędnych ekranu, ilość bitplane itd. Niestety zmienne te są po części przekłamywane przez popularne akceleratory systemowego interfejsu graficznego - takie jak [[Warp9]] i [[QuickST]] - co powoduje, że trzeba brać poprawkę na to iż w bloku tzw. negatywnych zmiennych linii A mogą znaleźć się całkowicie bezsensowne liczby. |
+ | Razem z [[BIOS]]em oraz [[XBIOS]]em stanowią jedną z najniższych warstw logicznych systemu [[TOS]]. Wiele procedur [[GEM]]'u wykorzystuje te instrukcje, ze względu na oszczędność pamięci przeznaczonej na system operacyjny. Są dostępne natychmiast po włączeniu komputera, co oznacza że można z nich korzystać np. w krótkim kodzie mieszczącym się w około 500 bajtach [[boot-sector]]'a, bez konieczności inicjalizacji systemowych funkcji wyższego rzędu czy rezerwacji dla nich dodatkowych przestrzeni pamięci. Można w ten sposób zaoszczędzić jeszcze więcej [[RAM]]'u nawet niż przy uruchamianiu programów z katalogu [[AUTO]]. | ||
+ | == Pochodzenie koncepcji == | ||
+ | |||
+ | Pseudorozkazy $A000-$A00F mają swój wektor przerwań umieszczony w pamięci pod adresem $00000028. Zaraz po nim jest wektor analogicznej '''Linii F''', która w systemie [[TOS]] nie jest używana. Najprawdopodobniej pomysł na użycie '''Line A''' został skopiowany (tak samo jak i wiele innych koncepcji) z pierwszych wersji systemu Apple'a. Tak zwane '''Mac-macros''' są zdefiniowane w technicznej dokumentacji dla programistów Apple'a właśnie jako długa lista pseudorozkazów $Axxx. Dużo później zainteresowali się nimi twórcy [[TurboAssembler]]'a, zaczynając i niestety nie kończąc implementacji '''Mac-macros''' w swoim asemblerze. Przyczyną przerwania realizacji była czasochłonność i koszt tego zadania. | ||
+ | |||
+ | == Odnośniki zewnętrzne == | ||
+ | * [https://freemint.github.io/tos.hyp/en/linea_main.html Komendy linii A] | ||
+ | * [https://freemint.github.io/tos.hyp/en/linea_escape.html Spis bloku negatywnych zmiennych linii A] | ||
Aktualna wersja
Instrukcje Line A, są to proste instrukcje wejścia/wyjścia odnoszące się do hardware Atari ST/STe/TT/Falcon, zrealizowane z pomocą specyficznego emulatora nieistniejących rozkazów procesorów MC680x0. Realizuje je heksadecymalny kod $A00x, gdzie x oznacza jedną z 16 możliwych pseudo-komend procesora Motoroli. Każde wywołanie takiej pseudo-komendy obarczone jest dodatkowymi cyklami procesora, których wymaga obsługa przerwań. Jedyna korzyść, to oszczędność pamięci przy definiowaniu komend. Użyto ich ze względu na konieczność zmieszczenia pierwszych wersji TOS'a w 192KB pamięci ROM. Miały zostać wyeliminowane w późniejszych wersjach systemu TOS, ale pozostały w użyciu ze względu na kompatybilność.
Odpowiadają za podstawowe operacje graficzne, dostęp do klawiatury i myszy. Za ich pomocą można tworzyć kompleksowe operacje przy pomocy kilku prostych komend. Można nimi narysować pixele, linie, kwadraty, pisać tekst, kopiować bloki graficzne oraz kontrolować software'owe duszki, w tym kursor myszki. Po inicjalizacji komendą $A000 można się m.in. dowiedzieć, jaki aktualnie jest adres zestawu znaków, pozycja myszki, adres, wielkość, rozdzielczość i rozmiary w absolutnych i względnych współrzędnych ekranu, ilość bitplane itd. Niestety zmienne te są po części przekłamywane przez popularne akceleratory systemowego interfejsu graficznego - takie jak Warp9 i QuickST - co powoduje, że trzeba brać poprawkę na to iż w bloku tzw. negatywnych zmiennych linii A mogą znaleźć się całkowicie bezsensowne liczby.
Razem z BIOSem oraz XBIOSem stanowią jedną z najniższych warstw logicznych systemu TOS. Wiele procedur GEM'u wykorzystuje te instrukcje, ze względu na oszczędność pamięci przeznaczonej na system operacyjny. Są dostępne natychmiast po włączeniu komputera, co oznacza że można z nich korzystać np. w krótkim kodzie mieszczącym się w około 500 bajtach boot-sector'a, bez konieczności inicjalizacji systemowych funkcji wyższego rzędu czy rezerwacji dla nich dodatkowych przestrzeni pamięci. Można w ten sposób zaoszczędzić jeszcze więcej RAM'u nawet niż przy uruchamianiu programów z katalogu AUTO.
Pochodzenie koncepcji
Pseudorozkazy $A000-$A00F mają swój wektor przerwań umieszczony w pamięci pod adresem $00000028. Zaraz po nim jest wektor analogicznej Linii F, która w systemie TOS nie jest używana. Najprawdopodobniej pomysł na użycie Line A został skopiowany (tak samo jak i wiele innych koncepcji) z pierwszych wersji systemu Apple'a. Tak zwane Mac-macros są zdefiniowane w technicznej dokumentacji dla programistów Apple'a właśnie jako długa lista pseudorozkazów $Axxx. Dużo później zainteresowali się nimi twórcy TurboAssembler'a, zaczynając i niestety nie kończąc implementacji Mac-macros w swoim asemblerze. Przyczyną przerwania realizacji była czasochłonność i koszt tego zadania.
Odnośniki zewnętrzne
Ten artykuł to tylko zalążek. Możesz pomóc rozwojowi Atariki poprzez rozszerzenie go o więcej informacji.