Tablice wektorów ROM

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 00:56, 28 lip 2005
KMK (Dyskusja | wkład)

← Previous diff
Wersja z dnia 20:06, 7 wrz 2005
KMK (Dyskusja | wkład)

Next diff →
Linia 29: Linia 29:
[[Kategoria:Atari 8-bit]] [[Kategoria:Atari 8-bit]]
 +[[Kategoria:Programowanie]]

Wersja z dnia 20:06, 7 wrz 2005

System operacyjny zawiera w obszarze $E400-$E44F i $E48F-$E4BE osiem tablic wektorów CIO wskazujących poszczególne funkcje (tj. kolejno OPEN, CLOSE, GET, PUT, STATUS, SPECIAL i INIT) sterowników standardowych urządzeń I/O (zdefiniowanych w ROM-ie).

  • $E400-$E40F - wektory edytora ("E:")
  • $E410-$E41F - wektory ekranu ("S:")
  • $E420-$E42F - wektory klawiatury ("K:")
  • $E430-$E43F - wektory drukarki ("P:")
  • $E440-$E44F - wektory magnetofonu ("C:"); w DracOS wektory urządzenia null ("N:")

Trzy poniższe istnieją tylko w serii XL/XE:

  • $E48F-$E49E - wektory urządzeń znakowych podłączonych do szyny równoległej
  • $E49F-$E4AE - zarezerwowane (tablica pusta); w DracOS wektory urządzenia systemowego "@:"
  • $E4AF-$E4BE - zarezerwowane (tablica pusta)

Struktura tablicy wygląda następująco:

  • $00 - adres procedury OPEN
  • $02 - adres procedury CLOSE
  • $04 - adres procedury GET BYTE
  • $06 - adres procedury PUT BYTE
  • $08 - adres procedury STATUS
  • $0a - adres procedury SPECIAL
  • $0c - skok JMP do procedury INIT
  • $0f - bajt zarezerwowany

Wszystkie adresy (oprócz argumentu JMP) są zmniejszone o 1.

Tablice wektorów są zasadniczo przeznaczone do wykorzystania tylko przez programy, które modyfikują działanie urządzeń systemowych (nakładki). Programy aplikacyjne nie powinny z nich korzystać, bo omija się w ten sposób tablicę handlerów HATABS (zob. CIO), w której może być zainstalowany sterownik, który całkowicie zastępuje sterownik znajdujący się w ROM-ie. Program korzystający z opisywanej tu tablicy handlerów wywołuje wtedy procedurę niewłaściwą do obsługi danego urządzenia i idzie na manowce.

Personal tools