TI-990

TI-990
TI-990 프로그래머 패널

TI-990은 텍사스 인스트루먼트(TI)가 1970년대와 1980년대에 판매한 16비트 미니 컴퓨터 시리즈이다.TI-990은 TI의 초기 미니 컴퓨터 시스템인 TI-960과 TI-980을 대체했다.그것은 몇 가지 독특한 특징을 가지고 있었고, 이전 제품들보다 프로그래밍이 더 쉬웠다.

핵심 개념 중에는 소프트웨어 전환 가능한 프로세서 레지스터 세트를 사용하여 프로그램 간에 신속한 컨텍스트 전환을 수행할 수 있는 멀티프로그래밍을 쉽게 지원할 수 있는 기능이 있었습니다.이는 메인 메모리에 저장된 레지스터 값을 사용하여 활성화되었으며, 단일 포인터를 변경하여 스왑할 수 있습니다.

TI는 이후 최초의 16비트 마이크로프로세서 중 싱글칩 구현인 TMS9900에 TI-990을 구현했다.TI-990의 로우엔드 모델에서 사용하기 위해 990의 메모리 모델과 메인 메모리 레지스터 시스템을 유지했습니다.이 설계는 결국 Texas Instruments TI-99/4A에서 훨씬 더 널리 사용되었으며, 미니 컴퓨터 스타일의 메모리 모델의 세부 사항은 상당한 단점을 보였습니다.

특징들

워크스페이스

TI-990에서는 레지스터는 메모리에 저장되며 워크스페이스 포인터라고 불리는 하드 레지스터를 통해 참조됩니다.워크스페이스의 컨셉은 메인 메모리가 TI가 개발한 새로운 반도체 램칩을 기반으로 CPU와 동일한 속도로 구동된다는 것이다.즉, "레지스터"가 CPU의 실제 레지스터인지 메모리로 표시되는지는 중요하지 않습니다.워크스페이스 포인터에 메모리주소가 로드되면, 그 주소가 「레지스터」의 발신기지입니다.

990에는 워크스페이스 포인터(WP), 프로그램 카운터(PC) 및 상태 레지스터(ST)의 3개의 하드 레지스터가 있습니다.콘텍스트 스위치는 하드레지스터만 저장 및 복원을 수반합니다.

확장 동작

TI-990에는 플러그 인 하드웨어를 사용하여 확장 작업을 수행할 수 있는 기능이 있습니다.하드웨어가 존재하지 않는 경우 CPU 트랩을 사용하여 소프트웨어가 기능을 실행할 수 있도록 합니다.Operation Code(XOP; 조작코드)는 시스템상의 15대의 접속 디바이스를 허가하고 있습니다.단, 장치 15는 관례상 사용자 프로그램이 시스템 서비스를 요구하는 시스템 호출 엔트리로 사용하도록 예약되어 있다.

직교 명령 집합

TI-990은 상당히 직교적인 명령 집합을 사용했습니다.기본 명령 형식은 1개, 2개 및 3개 단어 명령을 사용할 수 있습니다.모델 990/12 CPU에서는 확장 모드 조작으로 4단어 명령을 사용할 수 있습니다.

아키텍처 상세

일반 레지스터 주소 지정 모드

(R은 일반 레지스터로 0 ~15 )

0. Register - 값은 레지스터에서 송수신됩니다. OPR R ; R은 피연산자를 포함합니다.
1. 간접 레지스터 - 레지스터는 읽기 또는 쓰기 메모리 주소로 사용됩니다. OPR *R ; R에는 주소가 포함됩니다.
2. 인덱스화 : OPR @MEM(R); R은 인덱스값을 포함하고 R0은 인덱스에 사용되지 않으며 메모리 주소를 직접 지정할 수 있습니다.
3. 자동 증가: OPR *R+; R은 주소의 주소를 포함하며, R은 피연산자 타입의 길이만큼 증가합니다.

일부 레지스터는 특별한 용도를 가지고 있으며, 레지스터와 그 용도는 다음과 같습니다.

  • R0 - 시프트 카운터, 확장 모드 카운터, 부동 소수점 AC-0
  • R1 - 부동소수점 AC-1
  • R2 - 부동소수점 AC-2
  • R3 - 부동소수점 AC-3
  • R11 - XOP 포인터(커널 모드), 리턴 링크
  • R12 - CRU 기본 주소(커널 모드)
  • R13 - 저장된 워크스페이스 포인터
  • R14 - 저장된 프로그램 카운터
  • R15 - 저장된 상태

TI-990 명령

990/4, 990/5, 990/9 명령 세트는 69개의 명령으로 구성되었고, 990/10은 72개의 명령, 990/10A는 77개의 명령, 990/12는 144개의 명령으로 구성되었습니다.명령어는 유사한 특성을 가진 유형으로 나뉩니다.

타입 1의 순서

이 단어의 첫 번째 부분은 수행할 작업을 지정하고 나머지 두 부분은 피연산자를 찾기 위한 정보를 제공합니다.

  • MOV(이동어)
  • MOVB(바이트 이동)
  • A(추가어)
  • AB(바이트 추가)
  • S(감정어)
  • SB(하위 바이트)
  • C(비교어)
  • CB(바이트 비교)
  • SZC(해당 단어를 0으로 설정)
  • SZCB(바이트에 대응하는 0을 설정)
  • SOC(해당 단어를 설정)
  • SOCB(대응 바이트 설정)
타입 2의 순서

단어의 첫 번째 부분은 수행할 작업을 지정하고, 두 번째 부분은 JMP 명령의 경우 이동처에 대한 상대적 오프셋 또는 CRU 비트 주소 지정의 경우 상대적 오프셋을 지정합니다.

  • JMP(무조건 점프)
  • JLT(제로 미만일 경우 점프)
  • JLE(제로 이하일 경우 점프)
  • JEQ(제로일 경우 점프)
  • JHE(논리적으로 0보다 크거나 같은 경우 점프)
  • JGT(제로보다 큰 경우 점프)
  • JNE(제로가 아닌 경우 점프)
  • JNC(반송 클리어인 경우 점프)
  • JOC(캐리 세트일 경우 점프)
  • JNO(오버플로우 클리어 시 점프)
  • JOP(홀수 패리티인 경우 점프 - 바이트 작업 후에만 관련됨)
  • JL(논리적으로 0보다 작은 경우 점프)
  • JH(논리적으로 0보다 큰 경우 점프)
  • SBO(CRU 비트를 1로 설정)
  • SBZ(CRU 비트를 0으로 설정)
  • TB(테스트 CRU 비트)
타입 3 명령

워드의 한 부분은 연산을 지정하고, 두 번째 부분은 레지스터를 제공하며, 세 번째 부분은 두 번째 피연산자를 찾기 위한 정보를 제공한다.

  • COC(해당 COC 비교)
  • CZC(대응하는 제로 비교)
  • XOR(전용 또는)
  • XOP(확장 동작)
타입 4 명령

워드의 첫 번째 부분은 수행할 작업을 지정하고, 두 번째 부분은 작업의 비트 폭이며, 세 번째 부분은 두 번째 피연산자를 찾기 위한 정보를 제공합니다.

  • LDCR(로드 CRU)
  • STCR(점포 CRU)
타입 5의 순서

워드의 첫 번째 부분은 수행할 작업을 지정하고, 두 번째 부분은 시프트 카운트, 세 번째 부분은 시프트할 레지스터를 지정합니다.

  • SRA(오른쪽 이동 산술)
  • SRL(시프트 우측 논리)
  • SLA(시프트 좌측 연산)
  • SRC(시프트 우측 원형)
타입 6 명령

첫 번째 부분은 수행할 작업을 지정하고, 두 번째 부분은 두 번째 피연산자를 찾기 위한 정보를 제공합니다.

  • BLWP(브런치 및 로드 워크스페이스 포인터)
  • B(브런치)
  • X(실행)
  • CLR(클리어 워드)
  • NEG (2개의 보완 부정)
  • INV (1개의 보완)
  • INC(증가)
  • INCT (2개 증가)
  • DEC(감소)
  • DECT (2개 감소)
  • BL(브런치 및 링크)
  • ABS(절대값)
  • SWPB(스왑바이트)
  • SETO(단어를 1로 설정)
  • LDS(장거리 소스, 990/10, 990/10A, 990/12)
  • LDD(장거리 수신처, 990/10, 990/10A, 990/12)
  • BIND(브런치 간접, 990/10A, 990/12)
  • MPYS (복수 서명, 990/10A, 990/12)
  • DIVS(나눗셈 서명, 990/10A, 990/12)
  • AR(실제 추가, 990/12)
  • CIR(정수를 실수로 변환, 990/12)
  • SR(실제, 990/12)
  • MR(멀티 리얼, 990/12)
  • DR(실제 분할, 990/12)
  • LR(부하 실측, 990/12)
  • STR(실제 스토어, 990/12)
  • AD(더블, 990/12 추가)
  • CID(정수를 2배로 변환, 990/12)
  • SD(감산 더블, 990/12)
  • MD(멀티 더블, 990/12)
  • DD(나눗셈 이중, 990/12)
  • LD(로드 더블, 990/12)
  • STD (매장 더블, 990/12)
타입 7의 명령

실행할 작업을 지정하는 단어입니다.

  • IDLE(CPU 아이돌)
  • RSET(CPU 리셋)
  • RTWP(반환 워크스페이스 포인터)
  • CKON(클럭 온)
  • CKOF(클럭오프)
  • LREX(ROM을 로드하여 실행)
  • EMD (마이크로 진단 실행, 990/12)
  • EINT(인터럽트 활성화, 990/12)
  • DINT(인터럽트 비활성화, 990/12)
  • CRI(실제에서 정수로 변환, 990/12)
  • CDI (2배에서 정수로 변환, 990/12)
  • NEGR(네거티브 리얼, 990/12)
  • NEGD(네거티브 더블, 990/12)
  • CRE(실수를 확장 정수로 변환, 990/12)
  • CDE(배수를 확장 정수로 변환, 990/12)
  • CER(확장 정수를 실수로 변환, 990/12)
  • CED(확장 정수를 2배로 변환, 990/12)
  • XIT(부동소수점 출구 - nop, 990/12)
타입 8 명령

첫 번째 부분은 작업을 지정하고 두 번째 부분은 레지스터 또는 마스크를 지정합니다.세 번째 부분이 있는 경우 두 번째 단어로 즉시 피연산자를 지정합니다.

  • LIMI(로드 인터럽트 마스크 즉시)
  • LI(즉시 로드)
  • AI(즉시 추가)
  • ANDI(및 즉시)
  • ORI(또는 즉시)
  • CI(즉시 비교)
  • STWP(작업영역 포인터 저장)
  • STST(스토어 상태)
  • LWPI(워크스페이스 포인터를 즉시 로드)
  • BLSK(스택에 즉시 푸시 링크, 990/12)
타입 9 명령

워드의 한 부분은 연산을 지정하고, 두 번째 부분은 레지스터를 제공하며, 세 번째 부분은 두 번째 피연산자를 찾기 위한 정보를 제공한다.

  • MPY(부호 없는 배수)
  • DIV(부호 없는 분할)
타입 10 명령

첫 번째 부분은 작업을 지정하고 두 번째 부분은 맵 파일(0=maps, 1=user)을 지정하고 세 번째 부분은 레지스터를 지정합니다.이 지침은 990/10, 990/10A 및 990/12에서 지원됩니다.

  • LMF(로드 맵 파일)
타입 11 명령

첫 번째 워드는 opcode입니다.두 번째 워드의 첫 번째 부분은 바이트 카운트필드, 두 번째 부분은 수신처 오퍼랜드, 세 번째 부분은 소스 오퍼랜드입니다.이러한 순서는, 990/12 로 서포트되고 있습니다.

  • NRM(정규화)
  • RTO(우측 테스트)
  • LTO(좌측 테스트)
  • CNTO(카운트 1)
  • BDC(이진수에서 10진수로 변환)
  • DBC(10진수에서 바이너리로 변환)
  • SWPM(스왑 복수)
  • XORM(x 또는 복수)
  • ORM(또는 복수)
  • ANDM(및 복수)
  • SM(복수 감산)
  • AM(복수 추가)
타입 12 명령

첫 번째 워드의 첫 번째 부분은 opcode, 첫 번째 워드의 두 번째 부분은 체크포인트 레지스터를 나타냅니다.두 번째 워드의 첫 번째 부분은 바이트 카운트필드, 두 번째 부분은 수신처 오퍼랜드, 세 번째 부분은 소스 오퍼랜드입니다.이러한 순서는, 990/12 로 서포트되고 있습니다.

  • SNEB(바이트가 같지 않은 검색 문자열)
  • CRC(사이클 용장 코드 계산)
  • TS(변환 문자열)
  • CS(문자열 비교)
  • SEQB(같은 바이트 검색 문자열)
  • MOBS(문자열 이동)
  • MVSR(문자열 반전)
  • MVSK(스택에서 문자열 이동)
  • POPS(스택으로부터의 POP 문자열)
  • PSHS(스트링을 스택에 푸시)
타입 13의 지시

첫 번째 워드는 opcode입니다.두 번째 워드의 첫 번째 부분은 바이트 카운트필드, 두 번째 부분은 시프트 카운트, 세 번째 부분은 소스 오퍼랜드입니다.이러한 순서는, 990/12 로 서포트되고 있습니다.

  • SRAM(오른쪽 변속 산술 배수)
  • SLAM(시프트 좌측 산술 배수)
타입 14 명령

첫 번째 단어는 opcode이고 두 번째 단어의 첫 번째 부분은 위치 필드이고 두 번째 부분은 소스 오퍼랜드입니다.이러한 순서는, 990/12 로 서포트되고 있습니다.

  • TMB(테스트 메모리 비트)
  • TCMB(메모리 비트 테스트 및 클리어)
  • TSMB(메모리 비트 테스트 및 설정)
타입 15 명령

첫 번째 워드의 첫 번째 부분은 opcode, 첫 번째 워드의 두 번째 부분은 폭을 나타냅니다.두 번째 워드의 첫 번째 부분은 위치, 두 번째 부분은 소스 오퍼랜드입니다.이 순서는, 990/12 로 서포트되고 있습니다.

  • IOF(필드 역순서)
타입 16 명령

첫 번째 워드의 첫 번째 부분은 opcode, 첫 번째 워드의 두 번째 부분은 폭을 나타냅니다.두 번째 워드의 첫 번째 부분은 위치, 두 번째 부분은 대상 오퍼랜드, 세 번째 부분은 소스 오퍼랜드입니다.이러한 순서는, 990/12 로 서포트되고 있습니다.

  • INSF(필드 삽입)
  • XV(추출값)
  • XF(필드 추출)
타입 17의 지시

첫 번째 단어는 opcode입니다.두 번째 단어의 첫 번째 부분은 값 필드, 두 번째 부분은 레지스터, 세 번째 부분은 상대 오프셋입니다.이러한 순서는, 990/12 로 서포트되고 있습니다.

  • SRJ(레지스터 및 점프에서 값을 뺀 값)
  • ARJ(등록 및 점프에 값 추가)
타입 18의 지시

단어의 첫 번째 부분은 opcode이고 두 번째 부분은 레지스터 사양입니다.이러한 순서는, 990/12 로 서포트되고 있습니다.

  • STPC(PC를 레지스터에 저장)
  • LIM(레지스터로부터의 로드 인터럽트 마스크)
  • LST(로드 상태 레지스터)
  • LWP(워크스페이스 포인터 로드)
  • LCS(부하 제어 저장소)
타입 19 명령

첫 번째 단어는 opcode입니다.두 번째 단어의 첫 번째 부분은 수신처 오퍼랜드, 두 번째 부분은 소스 오퍼랜드입니다.이 순서는, 990/12 로 서포트되고 있습니다.

  • MOVA(이동 주소)
타입 20 명령

첫 번째 단어는 opcode입니다.두 번째 단어의 첫 번째 부분은 조건 코드필드, 두 번째 부분은 수신처 오퍼랜드, 세 번째 부분은 소스 오퍼랜드입니다.이러한 순서는, 990/12 로 서포트되고 있습니다.

  • SLSL(검색 리스트 논리 주소)
  • SLSP(검색 리스트의 물리 주소)
타입 21 명령

첫 번째 워드의 첫 번째 부분은 opcode, 첫 번째 워드의 두 번째 부분은 행선지 길이를 지정합니다.두 번째 워드의 첫 번째 부분은 행선지 오퍼랜드, 세 번째 부분은 행선지 오퍼랜드입니다.이 순서는, 990/12 로 서포트되고 있습니다.

  • EP(확장 정밀도)

어셈블리 언어 프로그래밍 예시

DX10에서 실행되는 TI-990 어셈블러의 완전한 "Hello, world!" 프로그램:

IDT 'HELLO' TITL 'HELLO World program' * DXOP SVC,15 SVC,15 정의 SVC TMLUNO EQU 0 터미널 LUNO * R0 EQU 0 R1 EQU 1 R2 EQU 2 R3 EQU 3 R5 EQU 4 R5 EQU 6 EQUEQU 10 R11 EQU 11 R12 EQU 12 R13 EQU 13 R14 EQU 14 R15 EQU 15 * DATA WP, ENTY, 0 * 워크스페이스 (990에서는 레지스터 프리로드 가능)* WP DATA 0 R1 DATA 0 R1 DATA > 1600 R2 - SVC 데이터 종료R3 - I/O opcode DATA > 0B00 R4 - I/O opcode DATA > 0100 R5 - I/O opcode DATA R6 닫기 - 메시지 주소 DATA STRLEN R7 - 메시지 길이 데이터 0R8 DATA 0R9 010DATA 0 R11 DATA 0 R12 DATA 0 R13 DATA 0 R14 DATA 0 R15 * * 터미널 SVC 블록 * TRMCB 바이트 0 SVC OP 코드 (0 = I/O) TRMERR 바이트 0 오류 코드 TRMOPC 바이트 0 OP 코드ETMLUNO LUNO TRMFLG DATA 0'식스 플래그 TRMBUF 데이터달러 -$ 버퍼 주소 TRMLRL 데이터달러-$ 논리적 레코드 길이 TRMCHC 데이터달러-$ 문자의 수**메시지*STRING TEXT'Hello 세계이다!'BYTE>D,> STRLEN A달러 -STRING의 보복하 PAGE**메인 p.rogram* ENTRY MOVB R3,@TRMOPC SC에서 열린 운영 코드를 설정합니다.SCB SVC @TRMSCB 열기 터미널 MOVB @TRMERR,R0 JNE EXIT MOVB R4,@TRMOPC 쓰기 OP 코드 설정.R7,@TRMCHC 및 문자 수 SVC @TRMSCB 쓰기 메시지 MOVB @TRMERR,R0 오류 JNE CLOSE MOVB R5,@TRMOPC 닫기 운영 코드 SVC @TRMSC EXSCB 닫기 EXCOSE를 확인합니다.IT SVC R2 종료 프로그램 * 종료

TI-990 시뮬레이터에서 위 사항을 직접 사용해 볼 수 있습니다.Dave Pitts의 sim990은 TI-990을 시뮬레이트하여 네이티브 운영체제(DX10 포함)용 소프트웨어 키트를 포함하고 있습니다.

다음 프로그램은 CRU 주소 0에 연결된 시리얼 터미널에 인쇄되는 스탠드아론 버전입니다.PRINT 서브루틴의 CRU I/O와 워크스페이스 링크에 대해 설명합니다.

IDT 'HELLO' TITL '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 8 R9 EQU 9 R10 EQU 1112EQU 15 * * 터미널 CRU 비트 * TRMRU EQU > 0 터미널 디바이스 주소 XMIT EQ 8 DTR EQ 9 RTS EQ EQ 10 WRQ EQ 11 RRQ EQ 12 NSF EQ 13 * 페이지 * 메인 프로그램 엔트리 * 엔트리 LWPI WP 로드 워크스페이스 포인터 WP @WPInt 일상적인 데이터 STRING 데이터 STRLEN IDLE*WPBSS32주요 프로그램 작업 공간**메시지*STRING TEXT'Hello 세계이다!'BYTE>D,> STRLEN A달러 -STRING의 보복하 PAGE은*PRINT 데이터 PRWS,PRENT PRENT A달러 MOV*R14+,R2 메세지를 출력한다.       b다uffer address MOV *R14+,R1 메시지 길이 SBO DTR 가져오기 터미널 사용 가능 SBO RTS PRI010 LDCR *R2+,8 문자 TB WRQ 전송 완료 JNE $-2 SBZ WRQ DEC R1TW R1TWR010 PRIGT0,0,0,0,0,0,0,0,0,0,0,TRMRU,0,0,0,0*종료

TI-990 모델

TI-990 프로세서는 원래 설계 기반과 사용하는 I/O 버스에 따라 여러 개의 자연 그룹으로 분류됩니다.

모든 모델은 시리얼 비트 주소 지정 가능한 I/O 버스인 통신 레지스터 유닛(CRU)을 지원했습니다.또한 고급 모델에서는 DEC의 인기 UNIBUS와 유사한 TILINE I/O 버스가 지원되었습니다.또한 TILINE은 마스터/슬레이브 관계도 지원하여 조정 제어가 가능한 공통 섀시에 여러 CPU 보드를 장착할 수 있습니다.

TILINE/CRU 모델

다음 모델에서는 TILINE을 주요 대용량 저장 버스로 사용했습니다.

  • TI-990/5 - 64K바이트 메모리 탑재 TMS-9900 마이크로프로세서
  • TI-990/10 - 200만 바이트의 ECC 메모리에 대한 메모리 매핑을 지원하는 TTL 프로세서
  • TI-990/10A - TMS-99000 마이크로프로세서 (메모리 매핑을 지원)
  • TI-990/12 — 200만 바이트의 ECC 메모리에 대한 메모리 매핑, 워크스페이스 캐시, 하드웨어 부동소수점, 확장 모드 명령 및 쓰기 가능한 컨트롤 스토어를 갖춘 Shottky TTL 프로세서

CRU 전용 모델

다음 모델에서는 CRU를 주요 버스로 사용했습니다.

  • TI-990/4 - 56K바이트 메모리 탑재 TMS-9900 마이크로프로세서
  • TI-990/9 : TTL의 최초 실장

운영 체제

TI-990에서는 몇 가지 운영체제를 사용할 수 있었습니다.

송신원TI:

  • TX990/TXDS
  • DX10
  • DNOS 분산 네트워크 운영 체제

서드파티제:

원천

외부 링크