ZX 스펙트럼 문자 집합

ZX Spectrum character set
시스템 글꼴에서 렌더링된 ZX Spectrum 문자 집합(사용자 정의 그래픽 문자 제외)

ZX Spectrum 문자 집합은 영국 싱클레어 ZX Spectrum 계열 컴퓨터에서 사용되는 ASCII의 변형이다.ASCII-1967을 기반으로 하지만 문자 ^, ' 및DEL↑, £, £으로 대체되다.또한 공통 이외의 C0 제어 코드 사용에도 차이가 있다.BS그리고CR그리고 ASCII 범위를 벗어난 128개의 고비트 문자를 사용한다.[1]ZX Spectrum의 메인 세트인 인쇄 가능한 문자와 시스템 폰트는 목성 에이스 컴퓨터에서도 사용된다.

인쇄 가능한 문자

BASIC 키워드 및 User-Defined Graphics 문자(기본적으로 A-U의 복사본으로 정의됨)를 포함하여 인쇄 가능한 모든 코드 포인트를 보여주는 Sinclair BASIC 프로그램의 스크린샷.

표준 US-ASCII, 0x20–0x7F는 코드 포인트 0x5E가 캐럿(^), 0x60은 중대한 억양("), 0x7F는 제어 문자 대신 저작권 기호(^)라는 점을 제외하고 스펙트럼 문자 집합에 포함된다. DEL. 0x5E를 ↑으로 사용한 것도 1963년 이전 버전의 ASCII에서도 그랬다는 점에 유의한다.영국식 ASCII(ISO-646-GB) 변종에서처럼 £ 기호는 0x23에 매핑되지 않아 파운드 기호와 숫자 기호(#)를 동시에 사용할 수 있었다.↑ 문자는 Spectrum's BASIC지수 연산자로, ASCII-1967과 비교하여 대체하는 ^가 BASIC 및 기타 프로그래밍 언어의 많은 다른 방언에서 지수화에 사용되는 것과 같다.

0x7F 이상, Spectrum 문자 집합은 0x80–0x의 높은 비트 범위를 사용한다.특수 목적의 FF.0x80–0x8F는 ZX80 문자 집합ZX81 문자 집합이 (다른 위치에서) 가지고 있는 것과 동일한 2×2 블록 그래픽 문자를 포함하며 블록 요소 유니코드 블록에서도 사용할 수 있다.그러나 ZX Spectrum의 표준 문자 집합에는 ZX80/81 50% 디터링 1×2 블록 그래픽 문자가 포함되지 않는다.코드 포인트 0x90-0xA4에는 원래 UDG(사용자 정의 그래픽) 문자 21개가 포함되며, 0xA5-0xFF에는 단일 코드 포인트로 토큰화된 기본 키워드가 포함되어 있다.나중에 도입된 128 BASIC 모드에서는 0xA2로 끝나는 19개의 UDG 문자에 이어 2개의 새로운 토큰으로 변경되었다.SPECTRUM그리고PLAY. 코드 포인트 0xC7–0xC9는 2문자 연산자임<=,>=그리고<>, 유사하게 단일 코드 포인트로 토큰화.이 토큰들은 다음과 같은 BASIC 명령을 허용한다.PRINT키프레스 하나로 입력되다P 0xF6을 생성했던 라인의 시작(즉, 명령 모드에 있음)에서.전체 키워드로 표시되는 항목PRINT화면에는 단 하나의 바이트 토큰만 저장되므로 통역자가 단일 바이트를 구문 분석하거나 테이프와 같은 외부 저장소에 저장/로드할 필요가 있다.

UDG 스펙트럼 이외의 모든 문자는 유니코드에 매핑할 수 있다.비 ASCII-1967 문자 ↑, £, £은 U+2191, U+00A3, U+00A9에 있다.2×2 블록 그래픽 문자는 U+2580–U+259F의 블록 요소 블록에 있지만, 후자에 대한 글꼴 지원은 보편적이지 않다.

UDG 문자의 모양은 RAM 메모리 영역에 매핑되고 문자 A-U의 복사본으로 초기화되지만, 예를 들어 BASIC 명령을 사용하여 임의로 재정의할 수 있다.POKE시스템 글꼴의 모든 문자처럼 8바이트로 저장된 8×8픽셀 그리드를 사용한다.이들을 재정의하면 이후 모습이 바뀐다.PRINT문장이지만 화면에 이미 그려진 UDG 문자는 변경되지 않는다.UDG 문자의 정의 위치는 BASIC 함수로 결정할 수 있다.USR예를 들어, 성격과 함께.USR "A"첫 번째로기본적으로 이 점은 48K 스펙트럼에 대해 메모리의 마지막 168(21×8)바이트 RAM이 65368(0xFF58) ~ 65535(0xFFF)임을 가리킨다.위치는 메모리 주소 23675/6(0x5C7B/C)에서 찾을 수 있는 시스템 변수 UDG로[2] 가리키며 변경할 수 있다.ZX 스펙트럼의 브라질 클론인 TK90X는 이러한 UDG 문자를 그래픽으로 편집하는 기능과 함께 포르투갈어로 사용되는 악센트 문자로 미리 로드하는 기능을 ROM에 포함시켰다. (이를 위해 TK90X는 코드 0과 1에서 각각 "추적"과 "udg"[3]로 두 개의 추가 기본 명령을 정의했다.)

주 시스템 글꼴 정의 32(공간) ~ 127(복사권)은 메모리 주소 23606/7(0x5C36/7)에서 찾을 수 있는 시스템 변수 CHARS에 의해 참조된다.스페이스 문자의 첫 번째 바이트보다 256바이트 낮은 바이트로 정의되며, CHARS+8×코드 포인트에 문자를 위치시키는 공식을 단순화한다.CHARS 값은 15360 (0x3C00) 값으로 기본 설정되며, 주소 15616 (0x3D00) ~ 16383 (0x3FFFF)에서 스펙트럼의 ROM 끝에 시스템 글꼴이 있다.전체 대체 글꼴을 RAM에 로드하고 그에 따라 CHARS 변수를 다시 가리킬 수 있다.[2]

제어 코드

제어 코드 영역(C0 범위)에서 스펙트럼은 대부분 INK 및 PERATE와 같은 독점적 제어를 사용하여 전경색과 배경색을 제어한다.그러나, 공통점은BS그리고CR코드 포인트는 ASCII와 동일하다.커서다운(0x0A, ASCII 라인 피드)은 오버 1(투명 오버프린트)로 인쇄된 32개의 공간으로 시뮬레이션할 수 있으며 커서업 0x0B(ASCII 수직 탭레이션)는 32개의 백스페이스로 시뮬레이션할 수 있다.시스템 ROM에는 0x09(c.f. ASCII 수평 탭)의 커서 오른쪽이 작동하지 않는 결함이 있다.[4][5]

제어 코드 0x0E는 문자 처리를 가속화하기 위해 부동 소수점 번호가 뒤따른다는 것을 나타내기 위해 사용된다.싱클레어 BASIC 프로그램에서 숫자 상수는 0x0E 바이트와 5바이트 이진 부동 소수점 표현에 이어 ASCII로 저장된다.BASIC 프로그램을 나열할 때는 ASCII 부분만 사용되지만 런타임에는 바이너리 표현만 사용된다.일부 스펙트럼 프로그램은 이를 악용해 숫자를 난독화시킨 반면 다른 프로그램들은 메모리를 절약하기 위해 난독화했다.[6]예를 들어, BASIC 라인은 다음과 같이 표시된다.GO TO 10숫자 1과 0에 대한 ASCII 문자 다음에 0x0E 바이트를 포함할 수 있으며, 부동 소수점 표현은 10 대신 100을 포함할 수 있다.그 프로그램을 나열한 사람은 누구나 숫자 10을 보았지만, 프로그램을 실행했을 때 그 프로그램은 100줄로 뛰어올랐다.

정의되지 않은 코드

범위 0x00-0x05, 0x07, 0x0A-0x0C, 0x0F 및 0x17-0x1F는 정의되지 않았다.대부분의 경우 디스플레이에 인쇄하면 물음표가 생성된다.단, 특정 제어 코드와 함께 문자 그대로의 숫자 값을 나타내는 데 사용할 수 있다. 예를 들어 0x10 + 0x07은 잉크(전면 텍스트) 색상을 7(흰색)으로 설정한다.

문자 집합

스펙트럼 문자 집합[1]
0_ 키프레스 0_ 문자 1_ 2_ 3_ 4_ 5_ 6_ 7_ 8_ 9_ A_ B_ C_ D_ E_ F_
_0 잉크 0 @ P £[a] p ZXSpectrum80.svg (A)[b] (Q)[b] USR 포맷 LPRINT 목록
_1 종이 ! 1 A Q a q ZXSpectrum81.svg (B)[b] (R)[b] STR$ 이동 LLIST LET
_2 플래시 " 2 B R b r ZXSpectrum82.svg (C)[b] (S)[b] CHR$ 지우기 스톱 일시 중지
_3 밝은 # 3 C S c s ZXSpectrum83.svg (D)[b] (T)[c] COS NOT 열기 # 읽다 다음
_4 참된 영상 역행 $ 4 D T d t ZXSpectrum84.svg (E)[b] (U)[d] 태닝 닫기 # 데이터 찌르다
_5 비디오를 찍다 오버 % 5 E U e u ZXSpectrum85.svg (F)[b] RND ASN OR 병합 복원 인쇄,
_6 캡스 자물쇠 쉼표를 찍다 AT & 6 F V f v ZXSpectrum86.svg (G)[b] INKEY$ ACS AND 검증 새로운 플롯
_7 편집하다 ' 7 G W g w ZXSpectrum87.svg (H)[b] PI ATN <= 테두리
_8 남겨진 남겨진[e] ( 8 H X h x ZXSpectrum88.svg (I)[b] FN LN >= 서클 계속 SAVE
_9 맞다 옳다[f] ) 9 I Y i y ZXSpectrum89.svg (J)[b] 포인트 EXP < > 잉크 랜덤화
A 아래쪽에 * : J Z j z ZXSpectrum8a.svg (K)[b] 스크린$ INT 라인 종이 IF
_B 위로 + ; K [ k { ZXSpectrum8b.svg (L)[b] ATTR SQR 그럼 플래시 for CLS
_C 삭제하다 , < L \ l ZXSpectrum8c.svg (M)[b] AT SGN 밝은 에 가다 드로잉
_D 입장하다 입장하다 - = M ] m } ZXSpectrum8d.svg (N)[b] ABS 스텝 역행 고섭 분명한
_E 연장하다 번호를[g] 붙이다 . > N [a] n ~ ZXSpectrum8e.svg (O)[b] VAL$ PEEK DEF FN 오버 입력, 리턴
_F 그래픽스 / ? O _ o ©[a] ZXSpectrum8f.svg (P)[b] 코드 아웃 로드 복사

참고 항목

메모들

  1. ^ a b c 미국 ASCII와는 다르다.
  2. ^ a b c d e f g h i j k l m n o p q r s UDG(사용자 정의 그래픽) 문자.
  3. ^ 48 BASIC의 UDG T, 128 BASIC의 키워드 SPRACLE.
  4. ^ UDG U in 48 BASIC, 키워드 PLAY in 128 BASIC.
  5. ^ 스탠더드 ROMCHR$ 8라인 1에서 라인 0으로 백업하지 못하고 라인 0에서 벗어남.
  6. ^ 스탠더드 ROMCHR$ 9실제로 텍스트 출력 위치를 이동하지 않는다.
  7. ^ BASIC 프로그램에서 5바이트 부동 소수점 번호 앞에 마커로 사용된다.

참조

  1. ^ a b ZX Spectrum 설명서, 부록 A, 문자 집합
  2. ^ a b ZX 스펙트럼 매뉴얼, 25장 시스템 변수
  3. ^ "Los Comandos Exclusivos de la TK 90X".
  4. ^ Logan, Ian (1983). Understanding Your Spectrum. Melbourne House. p. 189. ISBN 086161111X.
  5. ^ Wearmouth, Geoff. "An Assembly File Listing to generate a 16K ROM for the ZX Spectrum". Archived from the original on August 25, 2015.
  6. ^ Swann, Richard P. "Part 4 Decrypters". HOW TO HACK on the ZX Spectrum.

외부 링크