LineA

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 17:12, 1 maj 2024
Sorcerer.dragonnel (Dyskusja | wkład)
(ditto)
← Previous diff
Aktualna wersja
Sorcerer.dragonnel (Dyskusja | wkład)
(ditto)
Linia 1: Linia 1:
-Instrukcje '''Line A''', są to proste instrukcje wejścia/wyjścia odnoszące się do hardware Atari ST zrealizowane z pomocą specyficznego emulatora nieistniejących rozkazów procesorów MC680x0. Realizuje je 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ść. +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. 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]].+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 == == 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 nie kończąc implementacji '''Mac-macros''' w swoim asemblerze.+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 == == Odnośniki zewnętrzne ==

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.

Personal tools