MOS 테크놀로지 8563
MOS Technology 85638563 VDC는 MOS 테크놀로지에 의해 제조된 집적회로입니다.코모도어 128(C128) 컴퓨터에서 80컬럼(640×200픽셀) RGB 비디오 디스플레이를 생성하기 위해 사용되었으며 코모도어 64 호환 그래픽을 지원하는 VIC-II와 함께 실행되었습니다.C128의 DCR 모델(및 일부 D 모델)은 최신의 기술적으로 진보한8568 [D]VDC 컨트롤러를 사용했습니다.
이력 및 특징
원래 Zilog Z8000을 기반으로 계획된 UNIX 기반 비즈니스 컴퓨터를 위한 코모도어(Commodore)는 VDC를 여러 프로토타입 머신으로 설계했습니다.이 중 코모도어 128만이 생산되었다.일반적인 VIC-II 등의 이전 MOS 비디오칩과는 달리 VDC에는 전용 비디오메모리가 탑재되어 있습니다.이 메모리는 원래 16킬로바이트(16,384바이트, 64킬로바이트로 업그레이드 가능) 또는 C128DCR의 "플랫" C128 및 64킬로바이트입니다.이 RAM은 마이크로프로세서로 직접 액세스 할 수 없었습니다.
8563은 다른 대부분의 MOS Technology 라인보다 생산이 어려웠고 초기 수율도 매우 낮았습니다.초기 유닛들은 또한 심각한 신뢰성 문제가 있었고 [1]과열로 인해 스스로 파괴되는 경향이 있었습니다.또, VDC에서는, 레지스터상의 간접 로드나 스토어 조작의 오작동을 일으키는 타이밍의 문제도 있었습니다.
공식적으로는 VDC는 텍스트 전용 칩이었지만 초기 C128 개발자들에게 제공된 MOS Technology의 기술 자료를 주의 깊게 읽어보면 고해상도 비트맵 모드가 가능하다는 것을 알 수 있었습니다.그것은 단순히 상세하게 설명되지 않았습니다.C128의 내장 프로그래밍 언어인 BASIC 7.0은 레거시 VIC-II 칩을 통해 40컬럼 모드에서 고해상도 그래픽스만 지원했습니다.
C128의 출시 직후 VDC의 비트맵 모드는 Data Becker 책 "Commodore 128 - Das gro gre GRAFIK-Buch"(1985년 말 미국에서 Abacus Software에 의해 출판됨)에 상당히 상세하게 기술되었으며, 어셈블리 언어 프로그램은 독일의 작가인 Klaus Loffmanner와 Dieter에 의해 제공되었습니다.픽셀을 설정 또는 클리어하거나 BASIC을 사용하여 80컬럼 [2]화면에 비트맵 기하학적 형상을 생성할 수 있습니다.코모도어 128이 출시된 지 1년도 되지 않은 1986년 2월, RUN 매거진은 VDC의 비트맵 모드에 대해 설명하고 8563을 사용하여 BASIC 7.0의 기능을 640×200 고해상도 그래픽스로 확장한 (8502 어셈블리 언어로 작성된) 입력 프로그램을 포함한 "Ultra Hi-Res Graphics" 기사를 실었다.[1] 저자인 Lou Wallace와 David Darus는 나중에 Ultra Hi-Res 유틸리티를 상용 패키지인 BASIC 8로 개발했습니다.C128의 가장 인기 있는 서드파티 유틸리티 중 하나인 이 유틸리티는 광범위한 프로그래머에게 보다 고도의 VDC 고해상도 기능을 제공합니다.
Commodore는 마침내 Commodore 128 Programmer's Reference Guide에 VDC에 대한 완전한 공식 문서를 제공했습니다.VDC 비트맵모드는 GEOS 운영시스템의 C128 버전에서 광범위하게 사용되었습니다.
VDC에는 스프라이트 기능이 부족하여 게임 애플리케이션에서의 사용이 제한되었습니다.그러나 전용 비디오 RAM 내에서 소규모 블록 메모리 복사를 자율적으로 실행하는 블릿팅 기능이 포함되어 있었습니다.VDC가 이러한 복사를 실행하고 있는 동안 시스템 CPU는 복사가 완료될 때까지 다른 VDC 액세스가 시도되지 않는 한 코드를 계속 실행할 수 있습니다.이러한 기능은 C128의 화면 편집기 ROM에 의해 빠르게 화면 섹션을 스크롤 또는 클리어하기 위해 사용되었습니다.
기술사양
- IBM의 CGA 비디오 표준과 호환되는 RGB 출력(RGB + Intensity).*
- 디스플레이, 문자 모양 및 디스플레이 속성 메모리용 16 또는 64 킬로바이트 주소 공간(시스템 메모리와는 별개).
- 인터레이스 모드에서 최대 720×700픽셀의 비디오 해상도(최대 64킬로바이트의 비디오 RAM).프로그래머의 요구에 따라 640×200 비인터레이스, 640×400 인터레이스 등 다른 이미지 사이즈가 가능합니다.
- 80 x 25 문자 텍스트 해상도(C128 kernal 기본값), 80 x 50 또는 40 x 25 와 같은 다른 크기를 사용할 수 있습니다.
- 8가지 색상, 2가지 강도.
* 이는 US 60Hz C128에만 적용됩니다. 50Hz C128 기계는 50Hz 수직 새로 고침 신호를 출력합니다.CGA 표준에 준거하고 있지 않지만, 대부분의 CGA 모니터는 문제없이 50Hz 신호를 표시할 수 있었습니다.그러나 일부 모니터는 신호를 해결하지 못하거나 해결하는데 성공했지만 조만간 전기 또는 열적 스트레스로 인해 편향 회로가 고장나 수리가 필요할 수 있습니다.
프로그래밍
VDC의 내부 레지스터와 전용 비디오 메모리의 어드레싱은, 간접적인 방법으로 실시할 필요가 있습니다.먼저 프로그램은 37개의 내부 레지스터 중 어떤 레지스터에 액세스해야 하는지 VDC에 알려야 합니다.다음으로 프로그램은 VDC가 액세스할 준비가 될 때까지 기다려야 하며, 그 후 선택한 내부 레지스터에 대한 읽기 또는 쓰기가 수행될 수 있습니다.다음 어셈블리 코드는 레지스터 판독의 일반적인 코드입니다.
ldx #레그넘 ;VDC 레지스터를 사용하여 액세스 stx d600달러 ;제어 레지스터에 쓰기 고리 조금 d600달러 ;상태 레지스터의 비트7을 체크합니다. bpl 고리 ;VDC가 준비되지 않았습니다. lda d601달러 ;VDC 레지스터에서 읽기 ...
레지스터 쓰기 작업의 일반적인 코드는 다음과 같습니다.
ldx #레그넘 ;기입처VDC stx d600달러 ;제어 레지스터에 쓰기 고리 조금 d600달러 ;상태 레지스터의 비트7을 체크합니다. bpl 고리 ;VDC가 준비되지 않았습니다. 스타 d601달러 ;VDC 레지스터에 쓰기 ...
BASIC 언어에서도 같은 일이 가능하며 특정 KERNAL 루틴을 호출합니다.
이 코드는 VDC 레지스터 판독의 전형적인 코드입니다.「register 」는, 다음과 같이 0 ~36 의 수치입니다.
뱅크 15 ... 시스템 DEC('CDA"),, 등록하세요 : RREG VDC REM $ccda $ka 52698 (10진수) 인쇄하다 VDC ...
이 코드는 VDC 레지스터 쓰기의 전형적인 것으로, 「register」는 0 ~36의 수치, 「value」는 0 ~255의 수치로, 그 레지스터에 배치할 필요가 있습니다.
뱅크 15 ... 시스템 DEC("CDCC"), 값ue, 등록하세요 REM $cdc 일명 52684 (10진수) ...
이 다소 번거로운 VDC 제어 방법 때문에 비트맵 모드에서의 최대 프레임환율은 일반적으로 너무 느립니다.아케이드 스타일의 액션 비디오 게임에서는, 대량의 디스플레이를 조작할 필요가 있습니다.
표준 텍스트 모드에서는 VDC는 1k가 아닌 2k의 화면 메모리를 사용하는 것을 제외하고 VIC-II와 거의 동일하게 동작합니다.디폴트 설정에서는, 화면 메모리는$0-$7FF
그리고 컬러 메모리는$800-$9FF
2k 경계에 있는 한 VDC 메모리 내 어디든 이동할 수 있습니다.속성은 VIC-II의 고해상도 모드와 같이 처리되며 글로벌 배경색과 각 문자 전경색이 컬러 RAM별로 개별적으로 설정됩니다.후자는 컬러 데이터 외에 각 문자의 속성 데이터도 포함한다.비트 4는 활성화 시 문자를 깜박이게 하고 비트 5는 밑줄이 그어진 문자를 생성하며 비트 6은 문자의 비트맵 패턴을 반전시킵니다.비트 7 은 대체 문자 세트를 유효하게 합니다.VDC 에서는, 최대 512 문자를 사용할 수 있습니다.특정 문자의 대체 문자 플래그가 활성화되면 문자 패턴은 문자 256-511에서 그려집니다.따라서 문자 65가 표시될 경우 대체 문자 플래그를 활성화하면 문자 321이 대신 표시됩니다.대체 문자 플래그는 보통 대문자/소문자 모드가 설정되어 있을 때 사용됩니다.이 플래그는 모든 VDC 화면 위치에 대해 이니블로 되어 있기 때문에 기본 대문자/소문자 문자 세트 대신 대문자/소문자 문자 세트와 그 리버스 비디오 버전이 표시됩니다.
VDC는 문자 ROM을 사용하지 않고 VIC-II의 문자 ROM 패턴을 C128의 전원 투입 시의 일부로서 VDC RAM에 카피합니다.이는 VDC가 하드웨어에서 문자를 반전할 수 있는 경우에도 마찬가지입니다.VDC에는 문자 높이가 조정 가능하기 때문에 문자 패턴은 8바이트가 아닌 16바이트가 필요합니다.화면이 25줄이기 때문에 실제로는 문자 높이가 8줄로 제한되어 있어 문자 데이터를 저장할 수 있는 공간의 절반이 사용되지 않고 낭비됩니다.전원 투입 시 디폴트 설정에서는 문자 데이터가$2000-$3FFF
.$2000-$23FF
에는 대문자와 소문자의 패턴이 포함되어 있습니다.$2C00-$33FF
대문자/소문자,$2400-$2BFF
그리고.$3400-$3FFF
에, 각 세트의 역방향 비디오 패턴을 나타냅니다.사용자는 임의의 커스텀 문자를 자유롭게 정의하고 VDC 메모리에 매핑할 수 있습니다.
등록 목록
이 정보는 Commodore 128 Programmer's Reference[3] Guide에서 수정되었습니다.
등록하세요 | 16진수 | 비트 7 | 비트 6 | 비트 5 | 비트 4 | 비트 3 | 비트 2 | 비트 1 | 비트 0 | 묘사 |
---|---|---|---|---|---|---|---|---|---|---|
0 | $00 | HT7 | HT6 | HT5 | HT4 | HT3 | HT2 | HT1 | HT0 | 수평 합계 |
1 | $01 | HD7 | HD6 | HD5 | HD4 | HD3 | HD2 | HD1 | HD0 | 수평 표시 |
2 | $02 | HP7 | HP6 | HP5 | HP4 | HP3 | HP2 | HP1 | HP0 | 수평 동기화 위치 |
3 | $03 | VW3 | VW2 | VW1 | VW0 | 하드웨어3 | 하드웨어2 | 하드웨어 1 | HW0 | 수직/수평 동기 폭 |
4 | $04 | VT7 | VT6 | VT5 | VT4 | VT3 | VT2 | VT1 | VT0 | 수직합계 |
5 | $05 | — | — | — | VA4 | VA3 | VA2 | VA1 | VA0 | 수직 조정 |
6 | $06 | VD7 | VD6 | VD5 | VD4 | VD3 | VD2 | VD1 | VD0 | 세로 표시 |
7 | $07 | VP7 | VP6 | VP5 | VP4 | VP3 | VP2 | VP1 | VP0 | 수직 동기 위치 |
8 | $08 | — | — | — | — | — | — | IM1 | IM0 | 인터레이스 모드 |
9 | $09 | — | — | — | — | CTV4 | CTV3 | CTV2 | CTV1 | 세로 문자 합계 |
10 | 0A달러 | — | CM1 | CM0 | CS4 | CS3 | CS2 | CS1 | CS0 | 커서 모드, 스캔 시작 |
11 | 10억달러 | — | — | — | CE4 | CE3 | CE2 | CE1 | CE0 | 커서 끝 스캔 라인 |
12 | $0C | DS15 | DS14 | DS13 | DS12 | DS11 | DS10 | DS9 | DS8 | 시작 주소 하이 바이트 표시 |
13 | $0D | DS7 | DS6 | DS5 | DS4 | DS3 | DS2 | DS1 | DS0 | 시작 주소 표시 로우 바이트 |
14 | 0E달러 | CP15 | CP14 | CP13 | CP12 | CP11 | CP10 | CP9 | CP8 | 커서 위치 하이 바이트 |
15 | $0F | CP7 | CP6 | CP5 | CP4 | CP3 | CP2 | CP1 | CP0 | 커서 위치 낮은 바이트 |
16 | $10 | LPV7 | LPV6 | LPV5 | LPV4 | LPV3 | LPV2 | LPV1 | LPV0 | 라이트 펜 수직 위치 |
17 | $11 | LPH7 | LPH6 | LPH5 | LPH4 | LPH3 | LPH2 | LPH1 | LPH0 | 라이트 펜 수평 위치 |
18 | $12 | UA15 | UA14 | UA13 | UA12 | UA11 | UA10 | UA9 | UA8 | 주소 고바이트 업데이트 |
19 | $13 | UA7 | UA6 | UA5 | UA4 | UA3 | UA2 | UA1 | UA0 | 주소 로우 바이트 업데이트 |
20 | $14 | AA15 | AA14 | AA13 | AA12 | AA11 | AA10 | AA9 | AA8 | 특성 시작 주소 높음 바이트 |
21 | $15 | AA7 | AA6 | AA5 | AA4 | AA3 | AA2 | AA1 | AA0 | 속성 시작 주소 낮은 바이트 |
22 | $16 | CTH3 | CTH2 | CTH1 | CTH0 | CDH3 | CDH2 | CDH1 | CDH0 | 문자 합계 수평, 문자 표시 수평 |
23 | $17 | — | — | — | CDV4 | CDV3 | CDV2 | CDV1 | CDV0 | 문자 표시 수직 |
24 | $18 | 알았다. | RVS | 플라스틱 | VSS4 | VSS3 | VSS2 | VSS1 | VSS0 | 수직 매끄러운 스크롤 |
25 | $19 | 본문 | ATR | 세미 | DBL | HSS3 | HSS2 | HSS1 | HSS0 | 수평으로 부드럽게 스크롤 |
26 | 100만달러 | FG3 | FG2 | FG1 | FG0 | BG3 | BG2 | BG1 | BG0 | 전경/배경색 |
27 | 10억달러 | AI7 | AI6 | AI5 | AI4 | AI3 | AI2 | AI1 | AI0 | 행당 주소 증가 |
28 | $1C | CB15 | CB14 | CB13 | 들이받다 | — | — | — | — | 문자 베이스 주소 |
29 | 100달러 | — | — | — | UL4 | UL3 | UL2 | UL1 | UL0 | 스캔 라인 밑줄 |
30 | $1E달러 | WC7 | WC6 | WC5 | WC4 | WC3 | WC2 | WC1 | WC0 | 단어 수 |
31 | $1F | DA7 | DA6 | DA5 | DA4 | DA3 | DA2 | DA1 | DA0 | 데이터 레지스터 |
32 | $20 | BA15 | BA14 | BA13 | BA12 | BA11 | BA10 | BA9 | BA8 | 블록 시작 주소 높음 바이트 |
33 | $21 | BA7 | BA6 | BA5 | BA4 | BA3 | BA2 | BA1 | BA0 | 블록 시작 주소 낮은 바이트 |
34 | $22 | DEB7 | DEB6 | DEB5 | DEB4 | DEB3 | DEB2 | DEB1 | DEB0 | 표시 활성화 시작 |
35 | $23 | DE7 | DE6 | DE5 | DE4 | DE3 | DE2 | DE1 | DE0 | 디스플레이 활성화 종료 |
36 | $24 | — | — | — | — | DRR3 | DRR2 | DRR1 | DRR0 | DRAM 리프레시 레이트 |
레퍼런스
- ^ "Commodore.ca Products Commodore 128, 128D, 128DCR, History, Manuals, Pictures & Time Line". www.commodore.ca. Archived from the original on 2003-07-26.
- ^ 3.9.1 "VDC HI-RES-Grafik" 페이지 213ff
- ^ 코모도어 캐피털 주식회사(1986년)코모도어 128 프로그래머 참조 가이드.뉴욕, 뉴욕: 밴텀 북스, 주식회사