Vì vậy, tôi đang viết một mô phỏng thiết bị đầu cuối (tôi biết, tôi chỉ nên biên dịch putty, v.v.) và đang ở giai đoạn tìm hiểu thông qua vttest để đảm bảo đúng. Bây giờ tôi đang dựa trên VT102 nhưng sẽ thêm các tính năng đầu cuối sau này như màu sắc khi các điều cơ bản hoạt động tốt.
Bộ lệnh chủ yếu là ANSI. DEC có bộ lệnh riêng của họ nhưng hỗ trợ các lệnh ANSI từ khoảng năm 1973. Hiện tại các tiêu chuẩn ANSI đó không có sẵn nhưng tương đương với ECMA, tôi có chúng (ECMA-48 có vẻ phù hợp nhất) nhưng không trả lời câu hỏi này cho đến khi tôi có thể thấy. Hầu hết các chuỗi lệnh ANSI bắt đầu với ESC. Nhiều lệnh bắt đầu bằng mã định danh chuỗi lệnh được hiển thị ở đây là CSI và được biểu thị trong dữ liệu là 0x1c 0x5b (ESC [
) hoặc 0xdb nếu có thể giao tiếp 8 bit. Sau đó theo một chuỗi xác định lệnh. Một số lệnh ảnh hưởng đến vị trí con trỏ, một số màn hình, một số kích thích phản hồi cho máy chủ và vv.
Một số lệnh đầu cuối bao gồm một đối số số. Ví dụ CSI 10 ; 5 H
có nghĩa là tạo vị trí con trỏ hàng 10, cột 5. Khi thiếu đối số số, có một giá trị mặc định để sử dụng: CSI 10 ; H
có nghĩa là tạo vị trí con trỏ hàng 10, cột 1 vì 1 là giá trị mặc định khi không đưa ra đối số.
Tôi có hướng dẫn vt102 từ vt100.net (tài nguyên tuyệt vời) và khoảng một chục trang cung cấp thông tin một phần về các chuỗi lệnh này. Rõ ràng thông số kỹ thuật cuối cùng của Phúc âm DEC chưa bao giờ được đưa ra khỏi DEC.
Điều rõ ràng là CSI C
di chuyển con trỏ sang phải và giá trị mặc định là 1.
Những gì không rõ ràng là ý nghĩa của CSI 0 C
.
Tại sao có số 0 ở đó, nó dường như làm cho lệnh không làm gì? Nếu nó có nghĩa là "sử dụng giá trị mặc định" thì nó có thể đã được gửi là 1 thay vào đó, nhưng chuỗi ngắn hơn sẽ không có đối số và dựa vào giá trị mặc định được hiểu là 1. Các thiết bị đầu cuối VT vật lý thực tế này thường được sử dụng ở mức 300 baud và thấp hơn nên một ký tự có vấn đề!
Tôi không quá tiến bộ với vttest đến nỗi tôi có thể thử cả hai cách và xem điều gì làm cho mọi thứ trở nên hoàn hảo nhưng tôi đủ xa để những câu hỏi nhỏ như thế này bắt đầu quan trọng.
[
, có thể được mã hóa dưới dạng chuỗi hai ký tựESC [
hoặc như[
với tập bit thứ 8. (Một số kiểu máy chỉ có thể hỗ trợESC [
) Tôi không biết những gìCSI 0 C
đã làm trên vt102; trên xterm nó tương đương vớiCSI 1 C
. Tôi nghi ngờ, nhưng không biết chắc chắn rằng 0 và sự vắng mặt của một giá trị được phân tích cú pháp giống hệt nhau tại một số điểm (nghĩatoi
). Bạn đã tìm kiếm ý kiến trong nguồn xterm?