Zajímalo by mne zda má někdo nějakou spolehlivou informaci, jak je to s adresami paralelních portů.
V současnosti se všude uvádí, že LPT1 má 0x378 a LPT2 0x278. Pokud však máte MDA kartu s paralelním portem, má tato typicky adresu 0x3bc a v BIOSu se vždy hlásí jako první, tedy LPT1. Jeden pamětník mi tvrdil, že 0x3bc je opravdu původní adresa LPT1 a tato informace se vyskytuje i na některých webech. Odpovídalo by tomu i to, že "současný" LPT1 má vyšší adresu než "současný" LPT2 a 0x3bc je ještě výš.
To tedy znamená, že v současnosti se vlastně používaji LPT2 a LPT3, zatímco LPT1 se vynechává.
No, asi bude lepší nad tím nefilozofovat a spokojit se s vysvětlením, že "hardwareový pohled" je jiný než "softwareový" (tedy ve smyslu přiřazení jména konkrétní adrese portu).
Adresy portu se kontroluji v poradi 0x3BC, 0x378, 0x278. Pokud se na uvedene adrese nalezne port (tj. napr. ze datova brana ($port+0) si uchova zapsanou informaci) tak se tato adresa zapise do tabulky LPT portu - viz popis BIOS-u, realmode adresy 40:08, 40:0A, 40:0C, 40:E (LPT1-LPT4).
Spravne napsany sw tedy po vyberu LPT1 si precte adresu z teto tabulku a pak ji pouziva.
Daniel Rozsnyó to napsal přesně - BIOS po základní inicializaci začne s detekcí paralelních portů na adresách 0x3bc, 0x378 a 0x278 v tomto pořadí a postupně jejich adresy (pokud porty nalezne) uloží do oblasti proměnných BIOSu, od adresy 0x0408. Záleží tedy na konkrétní konfiguraci počítače, které adresy se skutečně do proměnných BIOSu uloží. Aby to bylo ještě trošku složitější, tak původní IBM BIOS dokáže pracovat se čtyřmi porty, tj. LPT1-LPT4, ale umí naplnit odkazy pouze na porty tři - zbývající si musí obsloužit například nějaký jednoduchý inicializační program, který adresu portu uloží do 0x0408, 0x040a, 0x040c či 0x040e.
Jinak paralelní porty mohou být i na PCI kartách, nějaký obrázek jsem dával i do článku. Funguje to tak, že PCI zařízení může být pomocí BADDR0-BADDR5 nakonfigurováno do "šestnáctibitového" rozsahu a ještě k tomu mapováno do I/O space, takže může emulovat klidně i chybějící LPT1, včetně přerušení.
Ještě to trošku doplním - původní IBM BIOS také dokáže pracovat se čtyřmi sériovými porty (COM1-COM4), ale sám nalezne pouze první dva, takže podobná situace, jako u LPT.