Tablice wektorów ROM
From Atariki
←Older revision | Newer revision→
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.