Tại sao các chữ cái không liên tiếp trong EBCDIC?

Tiêu chuẩn ASCII được thông qua vào năm 1963 và hiện nay hầu như không ai sử dụng bảng mã có 128 ký tự đầu tiên khác với ASCII. Tuy nhiên, cho đến cuối thế kỷ trước, EBCDIC vẫn được sử dụng tích cực - mã hóa tiêu chuẩn cho các máy tính lớn của IBM và các máy tính EC nhái của Liên Xô. EBCDIC vẫn là mã hóa chính trong z/OS, hệ điều hành tiêu chuẩn cho các máy tính lớn IBM Z hiện đại.

Điều ngay lập tức đập vào mắt bạn khi nhìn vào EBCDIC là các chữ cái không xếp thành một hàng: giữa I и J và giữa R и S có những vị trí không được sử dụng (trên máy tính ES trong những khoảng thời gian này phân phối ký tự Cyrillic). Ai có thể nghĩ đến việc mã hóa các chữ cái có khoảng cách không bằng nhau giữa các chữ cái liền kề?

Tại sao các chữ cái không liên tiếp trong EBCDIC?

Chính cái tên EBCDIC (“BCDIC mở rộng”) gợi ý rằng mã hóa này - không giống như ASCII - không được tạo ra từ đầu mà dựa trên mã hóa BCDIC sáu bit, đã được sử dụng kể từ đó. IBM704 (1954):

Tại sao các chữ cái không liên tiếp trong EBCDIC?

Không có khả năng tương thích ngược ngay lập tức: một tính năng tiện lợi của BCDIC đã bị mất trong quá trình chuyển đổi sang EBCDIC là các số 0-9 tương ứng với mã 0-9. Tuy nhiên, có khoảng cách bảy mã giữa I и J và trong tám mã giữa R и S đã đến BCDIC. Họ đến từ đâu vậy?

Lịch sử của (E)BCDIC bắt đầu đồng thời với lịch sử của IBM - rất lâu trước máy tính điện tử. IBM được thành lập là kết quả của sự sáp nhập của bốn công ty, trong đó công ty có công nghệ tiên tiến nhất là Tabulate Machine Company, được thành lập năm 1896 bởi nhà phát minh Herman Hollerith. người lập bảng biểu. Những người lập bảng đầu tiên chỉ đơn giản là đếm số lượng thẻ đục lỗ được đục lỗ ở một vị trí cụ thể; nhưng vào năm 1905 Hollerith bắt đầu sản xuất số thập phân người lập bảng. Mỗi lá bài dành cho bộ lập bảng thập phân bao gồm các trường có độ dài tùy ý và các số được viết trong các trường này ở dạng thập phân thông thường được tính tổng trên toàn bộ bộ bài. Việc phân chia bản đồ thành các trường được xác định bằng cách kết nối các dây trên bảng vá của bộ lập bảng. Ví dụ, trên thẻ đục lỗ Hollerith này, được lưu trữ tại Thư viện Quốc hội, con số 23456789012345678 được đóng dấu rõ ràng, không xác định được chia thành các trường:

Tại sao các chữ cái không liên tiếp trong EBCDIC?

Những người chú ý nhất có thể nhận thấy rằng trên bản đồ Hollerith có 12 hàng lỗ, mặc dù mười hàng là đủ cho các con số; và trong BCDIC, đối với mỗi giá trị của hai bit quan trọng nhất, chỉ có 12 mã được sử dụng trong số 16 mã có thể.

Tất nhiên, đây không phải là một sự trùng hợp ngẫu nhiên. Ban đầu, Hollerith dự định bổ sung các hàng cho “các dấu đặc biệt” không được thêm vào mà chỉ được tính - như trong các bảng lập bảng đầu tiên. (Ngày nay chúng ta gọi chúng là “trường bit”.) Ngoài ra, trong số các “dấu đặc biệt” có thể đặt chỉ báo nhóm: nếu việc lập bảng không chỉ yêu cầu tổng cuối cùng mà còn cả các tổng trung gian, thì trình lập bảng sẽ dừng khi nó phát hiện ra sự thay đổi trong bất kỳ chỉ báo nhóm nào và người vận hành phải viết lại các tổng phụ từ bảng kỹ thuật số lên giấy, đặt lại bảng và tiếp tục lập bảng. Ví dụ: khi tính toán số dư kế toán, một nhóm thẻ có thể tương ứng với một ngày hoặc một đối tác.

Đến năm 1920, khi Hollerith đã nghỉ hưu, “máy lập bảng đánh máy” được đưa vào sử dụng, được kết nối với máy teletype và có thể tự in các tổng phụ mà không cần sự can thiệp của người vận hành. Khó khăn bây giờ là xác định xem mỗi con số được in đề cập đến điều gì. Năm 1931, IBM quyết định sử dụng “dấu đặc biệt” để biểu thị các chữ cái: dấu ở hàng thứ 12 biểu thị chữ cái từ A để I, vào ngày 11 - từ J để R, tại XNUMX - từ S để Z. "Trình lập bảng chữ cái" mới có thể in tên của từng nhóm thẻ cùng với tổng phụ; trong trường hợp này, cột liền mạch biến thành khoảng trắng giữa các ký tự. Xin lưu ý rằng S được chỉ định bởi tổ hợp lỗ 0+2 và tổ hợp 0+1 ban đầu không được sử dụng vì sợ rằng hai lỗ cạnh nhau trong cùng một cột sẽ gây ra sự cố cơ học ở đầu đọc.

Tại sao các chữ cái không liên tiếp trong EBCDIC?

Bây giờ bạn có thể nhìn vào bảng BCDIC từ một góc độ hơi khác:

Tại sao các chữ cái không liên tiếp trong EBCDIC?

Ngoại trừ số 0 và dấu cách bị đảo ngược, hai bit quan trọng nhất xác định "dấu đặc biệt" đã được đục lỗ vào thẻ đục lỗ cho ký tự tương ứng kể từ năm 1931; và bốn bit có ý nghĩa nhỏ nhất xác định chữ số được bấm vào phần chính của thẻ. Hỗ trợ biểu tượng & - / đã được thêm vào các máy lập bảng của IBM vào những năm 1930 và mã hóa BCDIC của các ký tự này tương ứng với các tổ hợp lỗ được đục lỗ cho chúng. Khi cần hỗ trợ số lượng ký tự lớn hơn nữa, hàng 8 được đục lỗ như một “dấu đặc biệt” bổ sung - do đó, có thể có tới ba lỗ trên một cột. Định dạng thẻ đục lỗ này hầu như không thay đổi cho đến cuối thế kỷ này. Ở Liên Xô, họ để lại bảng mã tiếng Latinh và dấu câu của IBM, đồng thời đối với các chữ cái Cyrillic, họ đục một số “dấu đặc biệt” cùng một lúc ở các hàng 12, 11, 0 - không giới hạn ba lỗ trên một cột.

Khi máy tính IBM 704 được tạo ra, họ không nghĩ nhiều về cách mã hóa ký tự cho nó: họ lấy mã hóa đã được sử dụng trong thẻ đục lỗ vào thời điểm đó và chỉ “đặt nó vào vị trí của nó”. Năm 0, trong quá trình chuyển đổi từ BCDIC sang EBCDIC, bốn bit bậc thấp của mỗi ký hiệu được giữ nguyên, mặc dù các bit bậc cao bị xáo trộn một chút. Do đó, định dạng thẻ đục lỗ được Hollerith lựa chọn vào đầu thế kỷ trước đã ảnh hưởng đến kiến ​​trúc của tất cả các máy tính IBM, cho đến và bao gồm cả IBM Z.

Nguồn: www.habr.com

Thêm một lời nhận xét