ТИ-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 инструкции.
Инструкции сгруппированы в соответствии с режимами адресации и количеством операндов, которые они принимают. Группа определяется расположением битовых полей внутри командного слова. Крайних левых битов командного слова достаточно для идентификации его группы.
Первое поле слова определяет операцию, которую необходимо выполнить, остальные два поля предоставляют информацию для поиска операндов. [ нужны разъяснения ]
- MOV (переместить слово)
- MOVB (переместить байт)
- А (добавить слово)
- AB (добавить байт)
- S (вычесть слово)
- SB (вычесть байт)
- С (сравнить слово)
- CB (сравнить байт)
- SZC (установить нули в соответствующем слове)
- SZCB (установка нулей соответствующего байта)
- SOC (установить соответствующее слово)
- SOCB (установить соответствующий байт)
Первое поле слова определяет операцию, которую необходимо выполнить, второе поле представляет собой относительное смещение того, куда идти, для инструкций JMP или относительное смещение для адресации битов CRU. [ нужны разъяснения ]
- JMP (прыжок безоговорочно)
- JLT (перейти, если меньше нуля)
- JLE (переход, если меньше или равно нулю)
- JEQ (переход, если ноль)
- JHE (переход, если логически больше или равно нулю)
- JGT (переход, если больше нуля)
- JNE (перейти, если не равно нулю)
- JNC (прыгайте, если переносите мяч)
- JOC (прыжок при переноске)
- JNO (перейти, если переполнение очищено)
- JOP (переход при нечетной четности – актуально только после байтовых операций)
- JL (прыжок, если логически меньше нуля)
- JH (прыжок, если логически больше нуля)
- SBO (установить бит CRU в единицу)
- SBZ (установить бит CRU в ноль)
- TB (тестовый бит CRU)
Первое поле слова определяет операцию, второе поле предоставляет регистр, третье поле предоставляет информацию для поиска второго операнда. [ нужны разъяснения ]
- COC (сравнить соответствующие)
- CZC (сравнить соответствующие нули)
- XOR (исключающее или)
- XOP (расширенная операция)
Первое поле слова определяет операцию, которую необходимо выполнить, второе поле представляет собой разрядность операции, третье поле предоставляет информацию для поиска второго операнда. [ нужны разъяснения ]
- LDCR (загрузка CRU)
- STCR (магазин CRU)
Первое поле слова определяет операцию, которую необходимо выполнить, второе поле — счетчик сдвига, третье поле указывает регистр для сдвига. [ нужны разъяснения ]
- SRA (арифметический сдвиг вправо)
- SRL (логический сдвиг вправо)
- SLA (сдвиг арифметики влево)
- SRC (сдвиг вправо по кругу)
Первое поле определяет операцию, которую необходимо выполнить, второе поле предоставляет информацию для поиска второго операнда. [ нужны разъяснения ]
- 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)
Слово указывает операцию, которую необходимо выполнить.
- 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)
Первое поле определяет операцию, второе поле указывает регистр, если применимо. Третье поле, если применимо, определяет непосредственный операнд во втором слове. [ нужны разъяснения ]
- LIMI (немедленная маска прерывания загрузки)
- LI (загрузка немедленная)
- ИИ (добавьте немедленно)
- ANDI (и немедленно)
- ORI (или немедленно)
- CI (появляется сразу)
- STWP (сохранить указатель рабочей области)
- STST (статус магазина)
- LWPI (немедленная загрузка указателя рабочей области)
- BLSK (переход ссылки с немедленной отправкой в стек, 990/12)
Первое поле слова определяет операцию, второе поле предоставляет регистр, третье поле предоставляет информацию для поиска второго операнда. [ нужны разъяснения ]
- MPY (беззнаковое умножение)
- DIV (беззнаковое деление)
Первое поле определяет операцию, второе поле указывает файл карты (0 = ядро, 1 = пользователь), а третье поле указывает регистр с адресом.
Данный файл карты загружается 6 словами по адресу в регистре.
Эта инструкция поддерживалась на 990/10A и 990/12 или на 990/10 с установленной опцией карты памяти.
- LMF (загрузка файла карты)
Первое слово — это код операции; во втором слове первое поле — это поле количества байтов, второе поле — операнд-адресат, а третье поле — операнд-источник. Эти инструкции поддерживаются моделями 990/12. [ нужны разъяснения ]
- НРМ (нормализовать)
- RTO (правильный тест для одних)
- ДН (левый тест для единиц)
- CNTO (посчитать единицы)
- BDC (преобразование двоичных чисел в десятичные)
- DBC (преобразование десятичных чисел в двоичные)
- SWPM (обменять несколько)
- XORM (исключающее или несколько)
- ORM (или несколько)
- ANDM (и несколько)
- SM (вычесть кратное)
- AM (добавьте несколько)
Инструкции множественной точности позволяли выполнять логическую и целочисленную арифметику с операндами длиной от 1 до 15 байт. *SM и *AM поддерживались на 990/10A.
Первое поле первого слова — это код операции, второе поле первого слова указывает регистр контрольной точки; первое поле второго слова — это поле количества байтов, второе поле — операнд-адресат, а третье поле — операнд-источник. Эти инструкции поддерживались на 990/12.
- SNEB (строка поиска не равного байта)
- CRC (расчет циклического избыточного кода)
- TS (перевести строку)
- CS (сравнить строку)
- SEQB (строка поиска равного байта)
- MOVS (переместить строку)
- MVSR (переместить строку наоборот)
- MVSK (переместить строку из стека)
- POPS (извлечение строки из стека)
- PSHS (поместить строку в стек)
Первое слово — это код операции; во втором слове первое поле — это поле счетчика байтов, второе поле — счетчик сдвига, а третье поле — исходный операнд. Эти инструкции поддерживаются моделями 990/12 и 990/10A.
- SRAM (сдвиг вправо арифметического кратного)
- SLAM (сдвиг влево на арифметическое кратное)
Первое слово — это код операции; первое поле второго слова — это поле позиции, а второе поле — исходный операнд. Эти инструкции поддерживались на 990/12.
- TMB (тестовый бит памяти)
- TCMB (проверка и очистка бита памяти)
- TSMB (проверка и установка бита памяти)
Первое поле первого слова — это код операции, второе поле первого слова указывает ширину; первое поле второго слова — это позиция, второе поле — исходный операнд. [ нужны разъяснения ] Эта инструкция поддерживается на 990/12.
- IOF (инвертировать порядок полей)
Первое поле первого слова — это код операции, второе поле первого слова указывает ширину; первое поле второго слова — это позиция, второе поле — операнд-адресат, а третье поле — операнд-источник. Эти инструкции поддерживаются на моделях 990/12.
- INSF (вставьте поле)
- XV (значение экстракта)
- XF (поле извлечения)
Первое слово — это код операции; первое поле второго слова — это поле значения, второе поле — это регистр, а третье поле — относительное смещение. [ нужны разъяснения ] Эти инструкции поддерживаются на моделях 990/12.
- SRJ (вычесть значение из регистра и перейти)
- ARJ (добавьте стоимость для регистрации и прыжка)
Первое поле слова — это код операции, а второе поле — спецификация регистра. Эти инструкции поддерживаются на моделях 990/12.
- STPC (хранить ПК в реестре)
- LIM (загрузка маски прерывания из регистра)
- LST (регистр состояния загрузки)
- LWP (загрузка указателя рабочей области)
- LCS (хранилище контроля нагрузки)
Первое слово — это код операции; первое поле второго слова является операндом-адресатом, а второе поле — операндом-источником. Эта инструкция поддерживается на 990/12.
- МОВА (адрес переезда)
Первое слово — это код операции; первое поле второго слова — это поле кода условия, второе поле — операнд-адресат, а третье поле — операнд-источник. Эти инструкции поддерживаются на моделях 990/12.
- SLSL (логический адрес списка поиска)
- SLSP (физический адрес списка поиска)
Первое поле первого слова — это код операции, второе поле первого слова определяет длину назначения; первое поле второго слова определяет длину источника, второе поле — операнд-адресат, а третье поле — операнд-источник. Эта инструкция поддерживается только на 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 в качестве основной шины:
- ТИ-990/4 — микропроцессор TMS9900 с памятью 56 КБ.
- TI-990/9 — Оригинальная реализация TTL.
Операционные системы
[ редактировать ]несколько операционных систем Для TI-990 было доступно .
Из ТИ:
От третьих лиц:
Источники
[ редактировать ]Внешние ссылки
[ редактировать ]- Страница Дэйва Питтса TI 990 — включает симулятор, кросс-ассемблер, кросс-линкер, утилиты и образы операционной системы.
- Переводчик SCI 990 на COBOL
- ti990.co.uk в интернет-архиве Сайт, посвященный консервации и реставрации миникомпьютеров серии TI 990.
- Записи Texas Instruments , Библиотека ДеГольера, Южный методистский университет