TI-990 - TI-990

The TI-990 byla série 16-bit minipočítače Prodáno Texas Instruments (TI) v 70. a 80. letech. TI-990 byl náhradou za dřívější minipočítačové systémy TI, TI-960 a TI-980. Mělo několik jedinečných funkcí a bylo programovatelnější než jeho předchůdci.
Funkce
Pracovní prostory
Na TI-990 jsou registry uloženy v paměti a jsou odkazovány prostřednictvím pevného registru s názvem Workspace Pointer. Koncept pracovního prostoru spočívá v tom, že hlavní paměť byla založena na nových polovodičových čipech RAM, které společnost TI vyvinula a běžely stejnou rychlostí jako CPU. To znamenalo, že nezáleželo na tom, zda byly „registry“ skutečné registry v CPU nebo představovány v paměti. Když je ukazatel pracovního prostoru načten s adresou paměti, je tato adresa počátkem „registrů“.
V 990 jsou tři pevné registry; ukazatel pracovního prostoru (WP), programový čítač (PC) a stavový registr (ST). Přepnutí kontextu znamenalo uložení a obnovení pouze pevných registrů.
Rozšířený provoz
TI-990 měl zařízení umožňující rozšířené operace pomocí zásuvného hardwaru. Pokud hardware není k dispozici, CPU se zachytí, aby software mohl vykonávat funkci. Provozní kód (XOP) umožňoval 15 připojeným zařízením v systému. I když je zařízení 15 podle konvence vyhrazeno k použití jako položka volání systému pro uživatelské programy pro vyžádání systémových služeb.
Ortogonální instrukční sada
TI-990 používala spravedlivě ortogonální instrukční sada. Základní formáty instrukcí umožňovaly jedno, dvou a tříslovné instrukce. Model 990/12 CPU umožňoval čtyřslovnou instrukci s operacemi rozšířeného režimu.
Architektonické detaily
Obecný registr režimy adresování
(R je obecný registr, 0 až 15.)
- 0. Registr - hodnota je do nebo z registru: OPR R; R obsahuje operand
- 1. Nepřímý registr - registr se používá jako adresa paměti ke čtení nebo zápisu: OPR * R; R obsahuje adresu
- 2. Indexováno: OPR @ MEM (R); R obsahuje hodnotu indexu, R0 se při indexování nepoužívá a umožňuje přímé adresování paměti
- 3. Automatický přírůstek: OPR * R +; R obsahuje adresu adresy, poté přírůstek R o délku typu operandu
Několik registrů mělo speciální použití, která si vyhrazují jejich použití, registr a jejich použití jsou:
- R0 - čítač řazení, čítač v rozšířeném režimu, plovoucí desetinná čárka AC-0
- R1 - plovoucí desetinná čárka AC-1
- R2 - plovoucí desetinná čárka AC-2
- R3 - plovoucí desetinná čárka AC-3
- R11 - ukazatel XOP (režim jádra), zpětné propojení
- R12 - základní adresa CRU (režim jádra)
- R13 - Uložený ukazatel pracovního prostoru
- R14 - Počítadlo uloženého programu
- R15 - Uložený stav
Pokyny TI-990
Sady instrukcí 990/4, 990/5, 990/9 obsahovaly 69 instrukcí, 990/10 mělo 72 instrukcí, 990 / 10A 77 instrukcí a 990/12 144 instrukcí. Pokyny jsou rozděleny do typů, které mají podobné vlastnosti.
První část slova určuje operaci, která má být provedena, zbývající dvě části poskytují informace pro vyhledání operandů.
- MOV (přesunout slovo)
- MOVB (přesunout bajt)
- A (přidat slovo)
- AB (přidat bajt)
- S (odečíst slovo)
- SB (odečíst bajt)
- C (porovnat slovo)
- CB (porovnat bajt)
- SZC (nastavit nuly odpovídající slovo)
- SZCB (nastavit nuly odpovídající bajt)
- SOC (nastavit odpovídající slovo)
- SOCB (nastavit odpovídající byte)
První část slova určuje operaci, která má být provedena, druhou částí je relativní posun k místu, kam jít, pro instrukce JMP nebo relativní posun pro bitové adresování CRU.
- JMP (bezpodmínečný skok)
- JLT (skok, pokud je menší než nula)
- JLE (skok, pokud je menší nebo roven nule)
- JEQ (skok, pokud nula)
- JHE (skok, pokud je logicky větší nebo roven nule)
- JGT (skok, pokud je větší než nula)
- JNE (skok, pokud není roven nule)
- JNC (skok, pokud nosit volný)
- JOC (skok, pokud nese sadu)
- JNO (skok, pokud je přetečení jasné)
- JOP (skok, pokud lichá parita - relevantní pouze po bajtových operacích)
- JL (skok, pokud je logicky menší než nula)
- JH (skok, pokud je logicky větší než nula)
- SBO (nastavit bit CRU na jeden)
- SBZ (nastavit bit CRU na nulu)
- TB (zkušební bit CRU)
Jedna část slova určuje operaci, druhá část poskytuje registr, třetí část poskytuje informace o umístění druhého operandu.
- COC (srovnej odpovídající)
- CZC (porovnat odpovídající nuly)
- XOR (exkluzivní nebo)
- XOP (rozšířený provoz)
První část slova určuje operaci, která má být provedena, druhou částí je bitová šířka operace, třetí část poskytuje informace o umístění druhého operandu.
- LDCR (zatížení CRU)
- STCR (obchod CRU)
První část slova určuje operaci, která má být provedena, druhou částí je počet posunů, třetí část určuje registr, který se má posunout.
- SRA (aritmetika posunu doprava)
- SRL (logický posun doprava)
- SLA (aritmetika posunu doleva)
- SRC (posun vpravo kruhový)
První část určuje operaci, která má být provedena, druhá část poskytuje informace pro vyhledání druhého operandu.
- BLWP (ukazatel pracovního prostoru větve a načtení)
- B (větev)
- X (spustit)
- CLR (jasné slovo)
- NEG (dvojitý doplněk negovat)
- INV (doplňují se)
- INC (přírůstek)
- INCT (přírůstek o dva)
- DEC (snížení)
- DECT (snížení o dva)
- BL (pobočka a odkaz)
- ABS (absolutní hodnota)
- SWPB (swap bajty)
- SETO (nastavit slovo na ty)
- LDS (dálkový zdroj, 990/10, 990 / 10A, 990/12)
- LDD (cíl na dlouhé vzdálenosti, 990/10, 990 / 10A, 990/12)
- BIND (větev nepřímá, 990 / 10A, 990/12)
- MPYS (vícenásobně podepsané, 990 / 10A, 990/12)
- DIVS (rozdělit signováno, 990 / 10A, 990/12)
- AR (přidat skutečné, 990/12)
- CIR (převést celé číslo na skutečné, 990/12)
- SR (odečíst skutečné, 990/12)
- MR (znásobte skutečné, 990/12)
- DR (rozdělit skutečné, 990/12)
- LR (zatížení skutečné, 990/12)
- STR (uložit skutečné, 990/12)
- REKLAMA (přidat dvojnásobek, 990/12)
- CID (převést celé číslo na dvojnásobek, 990/12)
- SD (odečíst dvojnásobek, 990/12)
- MD (znásobte dvojnásobek, 990/12)
- DD (dvojité rozdělení, 990/12)
- LD (zatížení dvojnásobné, 990/12)
- STD (dvojitý obchod, 990/12)
Slovo určovalo operaci, která má být provedena.
- IDLE (nečinný procesor)
- RSET (reset procesoru)
- RTWP (ukazatel návratu pracovního prostoru)
- CKON (hodiny zapnuty)
- CKOF (hodiny vypnuty)
- LREX (načíst ROM a spustit)
- EMD (provedení mikro diagnostiky, 990/12)
- EINT (povolení přerušení, 990/12)
- DINT (deaktivovat přerušení, 990/12)
- CRI (převést skutečné na celé číslo, 990/12)
- CDI (převést dvojité na celé číslo, 990/12)
- NEGR (negate real, 990/12)
- NEGD (dvojitá negace, 990/12)
- CRE (převést skutečné na rozšířené celé číslo, 990/12)
- CDE (převést dvojité na rozšířené celé číslo, 990/12)
- CER (převést rozšířené celé číslo na skutečné, 990/12)
- CED (převést rozšířené celé číslo na dvojité, 990/12)
- XIT (výstup s plovoucí desetinnou čárkou - nop, 990/12)
První část určuje operaci, druhá část určuje registr nebo masku. Třetí část, pokud je přítomna, určuje okamžitý operand druhým slovem.
- LIMI (maska přerušení načítání okamžitá)
- LI (okamžité načtení)
- AI (přidat okamžitě)
- ANDI (a okamžité)
- ORI (nebo okamžitý)
- CI (porovnat okamžitě)
- STWP (ukazatel pracovního prostoru obchodu)
- STST (stav obchodu)
- LWPI (okamžité načtení ukazatele pracovního prostoru)
- BLSK (pobočka s okamžitým zasunutím odkazu do zásobníku, 990/12)
Jedna část slova určuje operaci, druhá část poskytuje registr, třetí část poskytuje informace o umístění druhého operandu.
- MPY (bez znaménka)
- DIV (nepodepsané rozdělení)
První část specifikuje operaci, druhá část určuje soubor mapy (0 = jádro, 1 = uživatel) a třetí specifikuje registr. Tato instrukce je podporována na 990/10, 990 / 10A a 990/12.
- LMF (načíst soubor mapy)
První slovo je operační kód; první část druhého slova je pole počtu bytů, druhá část je cílový operand a třetí část je zdrojový operand. Tyto pokyny jsou podporovány na 990/12.
- NRM (normalizovat)
- RTO (správný test pro ty)
- LTO (levá zkouška pro ty)
- CNTO (počítat)
- BDC (binární převod na desítkové)
- DBC (převod z desítkové na binární)
- SWPM (zaměnit více)
- XORM (vícekrát)
- ORM (nebo více)
- ANDM (a více)
- SM (odečíst více)
- Dop. (Přidat více)
První část prvního slova je operační kód, druhá část prvního slova označuje registr kontrolního bodu; první část druhého slova je pole počtu bytů, druhá část je cílový operand a třetí část je zdrojový operand. Tyto pokyny jsou podporovány na 990/12.
- SNEB (vyhledávací řetězec pro nerovný bajt)
- CRC (výpočet kódu cyklické redundance)
- TS (přeložit řetězec)
- CS (porovnat řetězec)
- SEQB (vyhledávací řetězec pro stejný bajt)
- MOVS (přesunout řetězec)
- MVSR (přesunout řetězec obráceně)
- MVSK (přesunout řetězec ze zásobníku)
- POPS (pop řetězec ze zásobníku)
- PSHS (push string to stack)
První slovo je operační kód; první část druhého slova je pole počtu bytů, druhá část je počet posunů a třetí část je zdrojový operand. Tyto pokyny jsou podporovány na 990/12.
- SRAM (posun vpravo aritmetický násobek)
- SLAM (posun levého aritmetického násobku)
První slovo je operační kód; první část druhého slova je poziční pole a druhá část je zdrojový operand. Tyto pokyny jsou podporovány na 990/12.
- TMB (bit testovací paměti)
- TCMB (test a vyčistit paměťový bit)
- TSMB (testovací a nastavený bit paměti)
První část prvního slova je operační kód, druhá část prvního slova označuje šířku; první část druhého slova je pozice, druhá část je zdrojový operand. Tato instrukce je podporována na 990/12.
- IOF (obrácené pořadí polí)
První část prvního slova je operační kód, druhá část prvního slova označuje šířku; první část druhého slova je poloha, druhá část je cílový operand a třetí část je zdrojový operand. Tyto pokyny jsou podporovány na 990/12.
- INSF (vložte pole)
- XV (hodnota extraktu)
- XF (extrahovat pole)
První slovo je operační kód; první část druhého slova je pole hodnoty a druhá část je registr a třetí část je relativní offset. Tyto pokyny jsou podporovány na 990/12.
- SRJ (odečíst hodnotu z registru a skok)
- ARJ (přidejte hodnotu pro registraci a skok)
První část slova je operační kód a druhá část je specifikace registru. Tyto pokyny jsou podporovány na 990/12.
- STPC (uložení PC do registru)
- LIM (maska přerušení načítání z registru)
- LST (registr stavu načítání)
- LWP (ukazatel načtení pracovního prostoru)
- LCS (úložiště řízení zátěže)
První slovo je operační kód; první část druhého slova je cílový operand a druhá část je zdrojový operand. Tato instrukce je podporována na 990/12.
- MOVA (adresa pro přesun)
První slovo je operační kód; první část druhého slova je pole podmínkového kódu, druhá část je cílový operand a třetí část je zdrojový operand. Tyto pokyny jsou podporovány na 990/12.
- SLSL (logická adresa vyhledávacího seznamu)
- SLSP (fyzická adresa vyhledávacího seznamu)
První část prvního slova je operační kód, druhá část prvního slova určuje délku cíle; první část druhého slova určuje délku zdroje, druhá část je cílový operand a třetí část je zdrojový operand. Tato instrukce je podporována na 990/12.
- EP (rozšířit přesnost)
Příklad programovacího jazyka assembleru
Kompletní "Ahoj světe! "program v assembleru TI-990, běží pod DX10:
IDT 'HELLO' TITL 'HELLO - ahoj světový program' * DXOP SVC, 15 Definujte SVCTMLUNO EQU 0 Terminál LUNO * R0 EQU 0R1 EQU 1R2 EQU 2R3 EQU 3R4 EQU 4R5 EQU 5R6 EQU 6R7 EQU 7R8 EQU 8R9 EQU 11R10 EQU 10 12R13 EQU 13R14 EQU 14R15 EQU 15 * DATA WP, ENTRY, 0 * * Pracovní prostor (Na 990 můžeme "předem načíst" registry) * WP DATA 0 R0 DATA 0 R1 DATA> 1600 R2 - Konec programu SVC DATA> 0000 R3 - Otevřený I / O operační kód DATA> 0B00 R4 - Zápis I / O operační kód DATA> 0100 R5 - Zavřít I / O operační kód DATA STRING R6 - Adresa zprávy DATA STRLEN R7 - Délka zprávy DATA 0 R8 DATA 0 R9 DATA 0 R10 DATA 0 R11 DATA 0 R12 DATA 0 R13 DATA 0 R14 DATA 0 R15 * * Terminal SVC block * TRMSCB BYTE 0 SVC op code (0 = I / O) TRMERR BYTE 0 Error code TRMOPC BYTE 0 I / O OP CODETRMLUN BYTE TMLUNO LUNOTRMFLG DATA 0 VlajkyTRMBUF DATA $ - $ Adresa vyrovnávací paměti TRMLRL DATA $ - $ Délka logického záznamu TRMCHC DATA $ - $ Počet znaků * * Zpráva * STRING TEXT 'Hello world!' BYTE> D,> ASTRLEN EQU $ -STRING AJ STRANA * * Vstup hlavního programu * VSTUP MOVB R3, @ TRMOPC Nastavit otevřený operační kód v SCB SVC @TRMSCB Otevřít terminál MOVB @ TRMERR, R0 Zkontrolovat chybu JNE EXIT MOVB R4, @ TRMOPC Set write opcode MOV R6, @ TRMBUF Set buffer address MOV R7, @ TRMLRL Set logical record length MOV R7, @ TRMCHC and character count SVC @TRMSCB Write message MOVB @ TRMERR, R0 Check for error JNE CLOSECLOSE MOVB R5, @ TRMOPC Set close opcode SVC @TRMSCB Zavřít terminál EXIT SVC R2 Ukončit program * KONEC
Výše uvedené si můžete vyzkoušet na simulátoru TI-990. Sim990 od Dave Pitts simuluje TI-990 a obsahuje softwarové sady pro nativní operační systémy (včetně DX10).
Následující program je samostatná verze, která tiskne na sériový terminál připojený k adrese CRU 0. Zobrazuje I / O CRU a propojení pracovního prostoru pro podprogram PRINT.
IDT 'HELLO' TITL 'HELLO - program hello world' * R0 EQU 0R1 EQU 1R2 EQU 2R3 EQU 3R4 EQU 4R5 EQU 5R6 EQU 6R7 EQU 7R8 EQU 8R9 EQU 9R10 EQU 10R11 EQU 11R12 EQU 12R13 EQU 13R14 EQU 14R15 EQU bity * TRMCRU EQU> 0 Adresa terminálového zařízení XMIT EQU 8DTR EQU 9RTS EQU 10WRQ EQU 11RRQ EQU 12NSF EQU 13 * PAGE ** Vstup hlavního programu * VSTUP LWPI WP Načtěte náš ukazatel pracovního prostoru BLWP @PRINT Zavolejte naši tiskovou rutinu DATA STRING DATA STRLEN IDLE * WP BSS 32 Hlavní programový pracovní prostor ** Zpráva * STRING TEXT 'Hello world!' BYTE> D,> ASTRLEN EQU $ -STRING AJ STRÁNKA ** Tisk zprávy * TISK DAT PRWS, PRENTPRENT EQU $ MOV * R14 +, R2 Získat adresu vyrovnávací paměti MOV * R14 +, R1 Získat délku zprávy SBO DTR Povolit terminál připraven SBO RTSPRI010 LDCR * R2 +, 8 Odeslat znak TB WRQ Počkejte, až bude hotovo JNE $ -2 SBZ WRQ DEC R1 JGT PRI010 RTWP * PRWS DATA 0,0,0,0,0,0,0,0 DATA 0,0,0,0, TRMCRU, 0,0,0 * KONEC VSTUPU
Modely TI-990
Procesory TI-990 spadaly do několika přirozených skupin v závislosti na původním designu, na kterém jsou založeny, a které I / O sběrnici použili.
Všechny modely podporovaly komunikační registrovou jednotku (CRU), což je sériová bitová adresovatelná I / O sběrnice. U modelů vyšší třídy byla také podporována sběrnice TILINE I / O, která je podobná DEC je populární UNIBUS. TILINE také podporoval vztah master / slave, který umožňoval více desek CPU ve společném šasi s kontrolou arbitráže.
Modely TILINE / CRU
Následující modely používaly TILINE jako hlavní sběrnici velkokapacitního úložiště:
- TI-990/5 - TMS-9900 mikroprocesor s 64 kB paměti
- TI-990/10 - procesor TTL s podporou mapování paměti na 2 M bajtů ECC paměť
- TI-990 / 10A - mikroprocesor TMS-99000 s podporou mapování paměti na 1 MB paměti
- TI-990/12 - procesor Schottky TTL s mapováním paměti na 2 MB bajtů paměti ECC, ukládání do mezipaměti pracovního prostoru, plovoucí desetinnou čárkou hardwaru, pokyny v rozšířeném režimu a zapisovatelný řídicí obchod
Pouze modely CRU
Následující modely používaly CRU jako svoji hlavní sběrnici:
- TI-990/4 - TMS-9900 mikroprocesor s 56 kB paměti
- TI-990/9 - původní implementace TTL
Operační systémy
Několik operační systémy byly k dispozici pro TI-990
Od TI:
Od třetích stran:
Zdroje
externí odkazy
- Stránka TI 990 Davea Pittsa - Zahrnuje simulátor, cross assembler, cross linker, nástroje a obrázky operačního systému.
- Překladatel SCI 990 do COBOL
- ti990.co.uk v internetovém archivu Stránka s podrobnostmi o konzervaci a obnově minipočítačů řady TI 990