Jump to content

ТИ-990

Панель программатора TI-990

TI -990 представлял собой серию 16-битных миникомпьютеров , продававшихся компанией Texas Instruments (TI) в 1970-х и 1980-х годах. TI-990 пришел на замену более ранним миникомпьютерным системам TI, TI-960 и TI-980. Он имел несколько уникальных функций, и его было легче программировать, чем его предшественников.

Среди его основных концепций была способность поддерживать мультипрограммирование с использованием набора регистров процессора с программным переключением , что позволяло выполнять быстрое переключение контекста между программами. Это стало возможным благодаря использованию значений регистров, хранящихся в основной памяти, которые можно было поменять местами, изменив один указатель.

Позже TI реализовала TI-990 в одном чипе TMS9900 , одном из первых 16-битных микропроцессоров . Предназначенный для использования в младших моделях TI-990, он сохранил архитектуру памяти-памяти 990-го. Этот чип широко использовался в домашнем компьютере TI-99/4A , где детали модели памяти в стиле миникомпьютера имели существенные недостатки. [ по мнению кого? ]

Рабочие пространства

[ редактировать ]

В TI-990 регистры хранятся в памяти, и обращение к ним осуществляется через аппаратный регистр, называемый указателем рабочей области. Концепция рабочей области заключается в том, что основная память была основана на новых полупроводниковых микросхемах оперативной памяти, разработанных TI, и работала на той же скорости, что и ЦП. [ нужны разъяснения ] Это означало, что не имело значения, были ли «регистры» реальными регистрами в ЦП или хранились в памяти. [ нужна ссылка ] Когда указатель рабочей области загружается с адресом памяти, этот адрес является источником регистров.

В 990 имеется только три аппаратных регистра: указатель рабочей области (WP), счетчик программ (PC) и регистр состояния (ST). Переключение контекста повлекло за собой сохранение и восстановление только аппаратных регистров.

Расширенная операция

[ редактировать ]

У TI-990 была возможность выполнять расширенные операции за счет использования подключаемого оборудования. [ нужна ссылка ] Если аппаратное обеспечение отсутствует, процессор ловит, позволяя программному обеспечению выполнить эту функцию. Код операции (XOP) позволял подключить к системе 15 устройств. Однако в операционных системах TI устройство 15 было зарезервировано для вызова супервизора (SVC), посредством которого пользовательские программы запрашивали ввод-вывод и другие услуги операционной системы.

На 990/12 инструкция XOP могла запускать микрокод из записываемого хранилища управления машины.

Ортогональный набор команд

[ редактировать ]

TI-990 использовал довольно ортогональный набор команд . Форматы инструкций допускали одно-, двух- и трехсловные инструкции. ЦП модели 990/12 допускал выполнение четырехсловных инструкций с операциями в расширенном режиме. [ нужны разъяснения ]

Архитектурные детали

[ редактировать ]

(R — общий регистр, от 0 до 15.)

0. Регистр — значение передается в регистр или из него: OPR R ; R содержит операнд
1. Косвенный регистр – регистр содержит адрес операнда: OPR *R ; R указывает на операнд
2. Индексировано: OPR @MEM(R); R содержит значение индекса (смещение в байтах), которое нужно добавить к адресу MEM. R0 не используется при индексировании и допускает прямую адресацию памяти.
3. Косвенное автоинкремент: OPR *R+ ; R содержит адрес операнда. Позже увеличьте R на длину типа операнда.

Во многих инструкциях несколько регистров определяли цели. Это:

  • R0 — счетчик сдвига, счетчик расширенного режима, старшее слово аккумулятора с плавающей запятой (FAC).
  • R1 – FAC+2 (одинарная точность)
  • R2 — FAC+4 (двойная точность)
  • R3 — FAC+6 (двойная точность)
  • R11 — обратная связь или указатель на операнд XOP (привилегированный режим)
  • R12 — базовый адрес CRU (привилегированный режим)
  • R13 — сохраненный указатель рабочей области
  • R14 — Счетчик сохраненных программ
  • R15 — Регистр сохраненного статуса

ТИ-990 инструкция

[ редактировать ]

Наборы инструкций 990/4, 990/5, 990/9 состояли из 69 инструкций, 990/10 — 72 инструкций, 990/10А — 77 инструкций. [ нужна ссылка ] а у 990/12 было 144 инструкции.

Инструкции сгруппированы в соответствии с режимами адресации и количеством операндов, которые они принимают. Группа определяется расположением битовых полей внутри командного слова. Крайних левых битов командного слова достаточно для идентификации его группы.

Инструкция группы 1

Первое поле слова определяет операцию, которую необходимо выполнить, остальные два поля предоставляют информацию для поиска операндов. [ нужны разъяснения ]

  • MOV (переместить слово)
  • MOVB (переместить байт)
  • А (добавить слово)
  • AB (добавить байт)
  • S (вычесть слово)
  • SB (вычесть байт)
  • С (сравнить слово)
  • CB (сравнить байт)
  • SZC (установить нули в соответствующем слове)
  • SZCB (установка нулей соответствующего байта)
  • SOC (установить соответствующее слово)
  • SOCB (установить соответствующий байт)
Тип 2 инструкции

Первое поле слова определяет операцию, которую необходимо выполнить, второе поле представляет собой относительное смещение того, куда идти, для инструкций JMP или относительное смещение для адресации битов CRU. [ нужны разъяснения ]

  • JMP (прыжок безоговорочно)
  • JLT (перейти, если меньше нуля)
  • JLE (переход, если меньше или равно нулю)
  • JEQ (переход, если ноль)
  • JHE (переход, если логически больше или равно нулю)
  • JGT (переход, если больше нуля)
  • JNE (перейти, если не равно нулю)
  • JNC (прыгайте, если переносите мяч)
  • JOC (прыжок при переноске)
  • JNO (перейти, если переполнение очищено)
  • JOP (переход при нечетной четности – актуально только после байтовых операций)
  • JL (прыжок, если логически меньше нуля)
  • JH (прыжок, если логически больше нуля)
  • SBO (установить бит CRU в единицу)
  • SBZ (установить бит CRU в ноль)
  • TB (тестовый бит CRU)
Группа 3 инструкции

Первое поле слова определяет операцию, второе поле предоставляет регистр, третье поле предоставляет информацию для поиска второго операнда. [ нужны разъяснения ]

  • COC (сравнить соответствующие)
  • CZC (сравнить соответствующие нули)
  • XOR (исключающее или)
  • XOP (расширенная операция)
Инструкция группы 4

Первое поле слова определяет операцию, которую необходимо выполнить, второе поле представляет собой разрядность операции, третье поле предоставляет информацию для поиска второго операнда. [ нужны разъяснения ]

  • LDCR (загрузка CRU)
  • STCR (магазин CRU)
Группа 5 инструкции

Первое поле слова определяет операцию, которую необходимо выполнить, второе поле — счетчик сдвига, третье поле указывает регистр для сдвига. [ нужны разъяснения ]

  • SRA (арифметический сдвиг вправо)
  • SRL (логический сдвиг вправо)
  • SLA (сдвиг арифметики влево)
  • SRC (сдвиг вправо по кругу)
Группа 6 инструкции

Первое поле определяет операцию, которую необходимо выполнить, второе поле предоставляет информацию для поиска второго операнда. [ нужны разъяснения ]

  • BLWP (указатель рабочей области перехода и загрузки)
  • Б (филиал)
  • Х ( выполнить )
  • CLR (ясное слово)
  • NEG (двойное дополнение и отрицание)
  • ИНВ (дополняют единицы)
  • ВКЛ (приращение)
  • INCT (увеличение на два)
  • Декабрь (декремент)
  • DECT (уменьшение на два)
  • BL (ветвь и ссылка)
  • АБС (абсолютное значение)
  • SWPB (обмен байтами)
  • СЕТО (установить слово в единицы)
  • LDS (источник на большом расстоянии, 990/10, 990/10А, 990/12)
  • LDD (междугороднее направление, 990/10, 990/10A, 990/12)
  • BIND (ответвление косвенное, 990/10А, 990/12)
  • MPYS (множественно подписанный, 990/10A, 990/12)
  • DIVS (разделение со знаком, 990/10A, 990/12)
  • АР (добавьте реал, 990/12)
  • CIR (преобразовать целое число в действительное, 990/12)
  • СР (вычесть реальное, 990/12)
  • MR (умножить вещественное, 990/12)
  • ДР (делим реальное, 990/12)
  • LR (реальная нагрузка, 990/12)
  • СТР (магазин реальный, 990/12)
  • AD (добавить дубль, 990/12)
  • CID (преобразовать целое число в двойное, 990/12)
  • SD (вычесть двойной, 990/12)
  • МД (кратно дабл, 990/12)
  • ДД (разделение дабл, 990/12)
  • LD (загрузка двойная, 990/12)
  • СТД (магазин двойной, 990/12)
Инструкция группы 7

Слово указывает операцию, которую необходимо выполнить.

  • IDLE (процессор простаивает)
  • RSET (перезагрузка процессора)
  • RTWP (возврат указателя рабочей области)
  • CKON (часы включены)
  • CKOF (время выключено)
  • LREX (загрузить ПЗУ и выполнить) [ нужны разъяснения ]
  • EMD (выполнение микродиагностики, 990/12)
  • EINT (разрешить прерывание, 990/12)
  • DINT (отключить прерывание, 990/12)
  • CRI (преобразование вещественного числа в целое число, 990/12)
  • CDI (преобразование двойного числа в целое число, 990/12)
  • NEGR (negate real, 990/12)
  • NEGD (двойное отрицание, 990/12)
  • CRE (преобразование вещественного числа в расширенное целое число, 990/12)
  • CDE (преобразование двойного числа в расширенное целое число, 990/12)
  • CER (преобразование расширенного целого числа в действительное, 990/12)
  • CED (преобразование расширенного целого числа в двойное, 990/12)
  • XIT (выход с плавающей запятой, 990/12)
Группа 8 инструкции

Первое поле определяет операцию, второе поле указывает регистр, если применимо. Третье поле, если применимо, определяет непосредственный операнд во втором слове. [ нужны разъяснения ]

  • LIMI (немедленная маска прерывания загрузки)
  • LI (загрузка немедленная)
  • ИИ (добавьте немедленно)
  • ANDI (и немедленно)
  • ORI (или немедленно)
  • CI (появляется сразу)
  • STWP (сохранить указатель рабочей области)
  • STST (статус магазина)
  • LWPI (немедленная загрузка указателя рабочей области)
  • BLSK (переход ссылки с немедленной отправкой в ​​стек, 990/12)
Группа 9 инструкции

Первое поле слова определяет операцию, второе поле предоставляет регистр, третье поле предоставляет информацию для поиска второго операнда. [ нужны разъяснения ]

  • MPY (беззнаковое умножение)
  • DIV (беззнаковое деление)
Инструкция группы 10

Первое поле определяет операцию, второе поле указывает файл карты (0 = ядро, 1 = пользователь), а третье поле указывает регистр с адресом.

Данный файл карты загружается 6 словами по адресу в регистре.

Эта инструкция поддерживалась на 990/10A и 990/12 или на 990/10 с установленной опцией карты памяти.

  • LMF (загрузка файла карты)
Группа 11 инструкции

Первое слово — это код операции; во втором слове первое поле — это поле количества байтов, второе поле — операнд-адресат, а третье поле — операнд-источник. Эти инструкции поддерживаются моделями 990/12. [ нужны разъяснения ]

  • НРМ (нормализовать)
  • RTO (правильный тест для одних)
  • ДН (левый тест для единиц)
  • CNTO (посчитать единицы)
  • BDC (преобразование двоичных чисел в десятичные)
  • DBC (преобразование десятичных чисел в двоичные)
  • SWPM (обменять несколько)
  • XORM (исключающее или несколько)
  • ORM (или несколько)
  • ANDM (и несколько)
  • SM (вычесть кратное)
  • AM (добавьте несколько)

Инструкции множественной точности позволяли выполнять логическую и целочисленную арифметику с операндами длиной от 1 до 15 байт. *SM и *AM поддерживались на 990/10A.

Группа 12 инструкции

Первое поле первого слова — это код операции, второе поле первого слова указывает регистр контрольной точки; первое поле второго слова — это поле количества байтов, второе поле — операнд-адресат, а третье поле — операнд-источник. Эти инструкции поддерживались на 990/12.

  • SNEB (строка поиска не равного байта)
  • CRC (расчет циклического избыточного кода)
  • TS (перевести строку)
  • CS (сравнить строку)
  • SEQB (строка поиска равного байта)
  • MOVS (переместить строку)
  • MVSR (переместить строку наоборот)
  • MVSK (переместить строку из стека)
  • POPS (извлечение строки из стека)
  • PSHS (поместить строку в стек)
Группа 13 инструкции

Первое слово — это код операции; во втором слове первое поле — это поле счетчика байтов, второе поле — счетчик сдвига, а третье поле — исходный операнд. Эти инструкции поддерживаются моделями 990/12 и 990/10A.

  • SRAM (сдвиг вправо арифметического кратного)
  • SLAM (сдвиг влево на арифметическое кратное)
Группа 14 инструкции

Первое слово — это код операции; первое поле второго слова — это поле позиции, а второе поле — исходный операнд. Эти инструкции поддерживались на 990/12.

  • TMB (тестовый бит памяти)
  • TCMB (проверка и очистка бита памяти)
  • TSMB (проверка и установка бита памяти)
Инструкция группы 15

Первое поле первого слова — это код операции, второе поле первого слова указывает ширину; первое поле второго слова — это позиция, второе поле — исходный операнд. [ нужны разъяснения ] Эта инструкция поддерживается на 990/12.

  • IOF (инвертировать порядок полей)
Группа 16 инструкции

Первое поле первого слова — это код операции, второе поле первого слова указывает ширину; первое поле второго слова — это позиция, второе поле — операнд-адресат, а третье поле — операнд-источник. Эти инструкции поддерживаются на моделях 990/12.

  • INSF (вставьте поле)
  • XV (значение экстракта)
  • XF (поле извлечения)
Группа 17 инструкции

Первое слово — это код операции; первое поле второго слова — это поле значения, второе поле — это регистр, а третье поле — относительное смещение. [ нужны разъяснения ] Эти инструкции поддерживаются на моделях 990/12.

  • SRJ (вычесть значение из регистра и перейти)
  • ARJ (добавьте стоимость для регистрации и прыжка)
Группа 18 инструкции

Первое поле слова — это код операции, а второе поле — спецификация регистра. Эти инструкции поддерживаются на моделях 990/12.

  • STPC (хранить ПК в реестре)
  • LIM (загрузка маски прерывания из регистра)
  • LST (регистр состояния загрузки)
  • LWP (загрузка указателя рабочей области)
  • LCS (хранилище контроля нагрузки)
Инструкция группы 19

Первое слово — это код операции; первое поле второго слова является операндом-адресатом, а второе поле — операндом-источником. Эта инструкция поддерживается на 990/12.

  • МОВА (адрес переезда)
Группа 20 инструкции

Первое слово — это код операции; первое поле второго слова — это поле кода условия, второе поле — операнд-адресат, а третье поле — операнд-источник. Эти инструкции поддерживаются на моделях 990/12.

  • SLSL (логический адрес списка поиска)
  • SLSP (физический адрес списка поиска)
Инструкция группы 21

Первое поле первого слова — это код операции, второе поле первого слова определяет длину назначения; первое поле второго слова определяет длину источника, второе поле — операнд-адресат, а третье поле — операнд-источник. Эта инструкция поддерживается только на 990/12.

  • EP (повышение точности)

Пример программирования на языке ассемблера

[ редактировать ]

Полная программа « Привет, мир! » на ассемблере TI-990 для работы под DX10 :

        IDT     'HELLO'
        TITL    'HELLO - hello world program'
*
        DXOP    SVC,15          Define SVC
TMLUNO  EQU     0               Terminal LUNO
*
R0      EQU     0
R1      EQU     1
R2      EQU     2
R3      EQU     3
R4      EQU     4
R5      EQU     5
R6      EQU     6
R7      EQU     7
R8      EQU     8
R9      EQU     9
R10     EQU     10
R11     EQU     11
R12     EQU     12
R13     EQU     13
R14     EQU     14
R15     EQU     15
*
        DATA    WP,ENTRY,0
* 
* Workspace (On the 990 we can "preload" registers)
*
WP      DATA    0               R0
        DATA    0               R1 
        DATA    >1600           R2 - End of program SVC
        DATA    >0000           R3 - Open I/O opcode
        DATA    >0B00           R4 - Write I/O opcode
        DATA    >0100           R5 - Close I/O opcode
        DATA    STRING          R6 - Message address
        DATA    STRLEN          R7 - Message length
        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 CODE
TRMLUN  BYTE    TMLUNO          LUNO
TRMFLG  DATA    0               Flags
TRMBUF  DATA    $-$             Buffer address 
TRMLRL  DATA    $-$             Logical record length
TRMCHC  DATA    $-$             Character count
* 
* Message
*
STRING  TEXT    'Hello world!'
        BYTE    >D,>A
STRLEN  EQU     $-STRING
        EVEN
        PAGE
* 
* Main program entry
*
ENTRY   MOVB    R3,@TRMOPC      Set open opcode in SCB
        SVC     @TRMSCB         Open terminal
        MOVB    @TRMERR,R0      Check for error
        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     CLOSE
CLOSE   MOVB    R5,@TRMOPC      Set close opcode
        SVC     @TRMSCB         Close terminal
EXIT    SVC     R2              Exit program
*
        END

Эту программу можно запустить на симуляторе TI-990, таком как «sim990» Дэйва Питтса, который эмулирует TI-990 и включает наборы программного обеспечения для собственных операционных систем (включая DX10).

Следующая программа представляет собой автономную версию, которая печатает на последовательном терминале, подключенном к адресу CRU 0. Она иллюстрирует связь ввода-вывода CRU и рабочей области для подпрограммы PRINT.

        IDT     'HELLO'
        TITL    'HELLO - hello world program'
*
R0      EQU     0
R1      EQU     1
R2      EQU     2
R3      EQU     3
R4      EQU     4
R5      EQU     5
R6      EQU     6
R7      EQU     7
R8      EQU     8
R9      EQU     9
R10     EQU     10
R11     EQU     11
R12     EQU     12
R13     EQU     13
R14     EQU     14
R15     EQU     15
*
* Terminal CRU bits
*
TRMCRU  EQU     >0              Terminal device address
XMIT    EQU     8
DTR     EQU     9
RTS     EQU     10
WRQ     EQU     11
RRQ     EQU     12
NSF     EQU     13
*
        PAGE
*
* Main program entry
*
ENTRY   LWPI    WP              Load our workspace pointer
        BLWP    @PRINT          Call our print routine
        DATA    STRING
        DATA    STRLEN
        IDLE
*
WP      BSS     32              Main program workspace
*
* Message
*
STRING  TEXT    'Hello world!'
        BYTE    >D,>A
STRLEN  EQU     $-STRING
        EVEN
        PAGE
*
* Print a message
*
PRINT   DATA    PRWS,PRENT
PRENT   EQU     $
        MOV     *R14+,R2        Get buffer address
        MOV     *R14+,R1        Get message length
        SBO     DTR             Enable terminal ready
        SBO     RTS
PRI010  LDCR    *R2+,8          Send out a character
        TB      WRQ             Wait until done
        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
*
        END     ENTRY

Модели ТИ-990

[ редактировать ]

Процессоры TI-990 делились на несколько естественных групп в зависимости от исходной конструкции, на которой они основаны, и какой шины ввода-вывода они использовали.

Все модели поддерживали блок регистров связи (CRU), который представляет собой последовательную шину ввода-вывода с побитовой адресацией. Кроме того, в более дорогих моделях поддерживалась шина ввода-вывода TILINE, похожая на от DEC популярную UNIBUS . TILINE также поддерживал отношения главный/подчиненный, что позволяло использовать несколько плат ЦП в одном шасси с арбитражным управлением.

Модели TILINE/CRU

[ редактировать ]

Следующие модели использовали TILINE в качестве основной шины хранения данных:

  • ТИ-990/5 — микропроцессор TMS9900 с памятью 64 КБ.
  • TI-990/10 — процессор TTL с поддержкой отображения памяти на 2 МБ памяти ECC.
  • TI-990/10A — микропроцессор TMS-99000 с поддержкой отображения памяти до 1 МБ памяти.
  • TI-990/12 - процессор Schottky TTL с отображением памяти на 2 МБ памяти ECC, кэширование рабочей области, аппаратная плавающая запятая, инструкции расширенного режима и записываемое хранилище управления.

Только модели CRU

[ редактировать ]

Следующие модели использовали CRU в качестве основной шины:

Операционные системы

[ редактировать ]

несколько операционных систем Для TI-990 было доступно .

Из ТИ:

  • ТХ990/TXDS
  • DX10
  • DNOS Распределенная сетевая операционная система

От третьих лиц:

Источники

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: d0c165ed4421d4c7147304d1e6a9b800__1709827200
URL1:https://arc.ask3.ru/arc/aa/d0/00/d0c165ed4421d4c7147304d1e6a9b800.html
Заголовок, (Title) документа по адресу, URL1:
TI-990 - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)