
Foto: RomBor
MH102 - hardvérová násobička
Jednou zo zaujímavostí PP 01 je hardvérová násobička MH102. Paradoxne, aj keď je pre ňu na DPS miesto, tak sa vôbec neosadzovala. Dokonca v zachovaných schémach je tento obvod zakreslený veľmi nejasne a je preškrtnutý.
Po osadení MH102 bolo dosť neočakávaným prekvapením, že násobička násobila správne iba čísla bez znamienka. V režime násobenia so znamienkom to vracalo nepochopiteľné hodnoty.
Automatickým predpokladom bolo, že sa hodnoty zadávajú v doplnkovom kóde, ale výsledky tomu nezodpovedali. Katalógový list popisuje znamienkové čísla ako 7. bitové so znamienkom v najvyššom 8. bite, čo znie podozrivo. Nakoniec sa ukázalo, že v dolných 7. bitoch je číslo v intervale <0, 127> a v najvyššom bite je znamienko, čo zodpovedá tzv. priamemu kódu. Výsledok násobenia je kódovaný rovnako. Je pochopiteľne v dvoch bytoch, ale nie je uložený ako "súvislý" WORD, ale oba byty majú najvyšší bit znamienkový a 7 bitov, ako platnú hodnotu. Ak sú obe vstupné čísla kladné alebo obe záporné, tak obe výsledné hodnoty majú najvyššie bity vynulované. Ak je iba jedno z čísel záporné, tak obe výsledné hodnoty majú najvyššie bity nastavené. Z toho plynie, že rozsah znamienkových hodnôt je v intervale <-127, 127> a existuje kladná aj záporná 0, obe sú pochopiteľne "zameniteľné".
Pri násobení so znamienkom je teda treba najprv vstupné hodnoty transformovať z doplnkového kódu na priamy a výsledok naopak z priameho kódu na doplnkový. Žiaľ, -128 v doplnkovom kóde bude v priamom kóde reprezentované, ako (záporná) nula.
V PP 01 je násobička zavesená na štyroch portoch:
Port | Zápis | Čítanie |
---|---|---|
0D8h | prvý činiteľ | nižší byte výsledku |
0D9h | druhý činiteľ | vyšší byte výsledku |
0DAh | prvý činiteľ so znamienkom | nižší byte výsledku so znamienkom |
0DBh | druhý činiteľ so znamienkom | vyšší byte výsledku so znamienkom |
Pre čísla bez znamienka môže byť použitie hardvérovej násobičky zaujímavé, keďže sa môžu ušetriť desiatky (podľa brata stovky) taktov. Avšak použitie priameho kódu v MH102 pre čísla so znamienkom zabíja dobrý nápad a komplikuje a predlžuje výpočet. Možno aj to bol dôvod, prečo sa MH102 prakticky neujala. Aspoň nie je známe, že by sa niekde reálne využívala.