Đảo ngược kỹ thuật toàn diện hệ điều hành máy tính bỏ túi TI-84 Plus
Một dự án kỹ thuật chi tiết vừa công bố kết quả phân tích ngược hoàn chỉnh hệ điều hành trên máy tính bỏ túi TI-84 Plus phiên bản 2.55MP. Công trình sử dụng công cụ Ghidra để giải mã kiến trúc Z80, cơ chế quản lý bộ nhớ và các thành phần cốt lõi của thiết bị kinh điển này.
Một dự án kỹ thuật mới đây đã thực hiện việc phân tích và đảo ngược hoàn chỉnh hệ điều hành của máy tính bỏ túi TI-84 Plus phiên bản 2.55MP. Đây là một nỗ lực đáng chú ý nhằm "mổ xẻ" một trong những thiết bị điện tử phổ biến nhất trong môi trường giáo dục trong suốt nhiều thập kỷ qua.
Dự án này tập trung vào file ROM ti84plus.rom (kích thước 1 MiB) và sử dụng Ghidra – một công cụ phân tích mã nguồn nổi tiếng – để tái tạo lại cấu trúc logic của hệ điều hành. Mục tiêu là cung cấp cái nhìn sâu sắc về cách mà phần mềm điều khiển phần cứng hạn chế nhưng hiệu quả của dòng máy tính này.
Kiến trúc phần cứng và quản lý bộ nhớ
TI-84 Plus hoạt động dựa trên bộ vi xử lý Zilog Z80, một CPU cổ điển với bus địa chỉ 16-bit, cho phép nó chỉ truy cập tối đa 64 KiB không gian địa chỉ logic tại một thời điểm. Tuy nhiên, máy thực tế được trang bị tới 1 MiB bộ nhớ flash và 128 KiB RAM.
Để vượt qua giới hạn 64 KiB của CPU, hệ điều hành TI-OS sử dụng một cơ chế phân trang (paging) 4 khe thông minh. Cơ chế này cho phép mã và dữ liệu trên các trang flash 16 KiB khác nhau được ánh xạ vào không gian địa chỉ mà CPU nhìn thấy. Hệ điều hành hoạt động như một trình giám sát đơn nhiệm (single-tasking monitor), với nhân khởi động nằm trên trang flash 0 (luôn được ánh xạ ở vùng nhớ thấp).
Bốn trụ cột chính của hệ điều hành
Tất cả các tương tác của người dùng như màn hình chính, chương trình TI-BASIC, vẽ đồ thị hay danh sách công cụ đều được xây dựng dựa trên bốn trụ cột kỹ thuật chính:
- Phân trang và bcall: Đây là cơ chế cho phép mã vượt qua giới hạn 64 KiB thông qua các lệnh gọi hệ thống (system-call) được gọi là "bcall", giúp mã trên một trang flash có thể gọi các chương trình con nằm trên trang khác.
- Động cơ dấu chấm động (Floating-point engine): Hệ thống sử dụng định dạng số thực BCD 9 byte (thông qua các thanh ghi OP1–OP6) để xử lý mọi phép toán toán học.
- Hệ thống biến (VAT): Bảng Phân bổ Biến (Variable Allocation Table) quản lý các đối tượng được đặt tên như số thực, danh sách, ma trận, chuỗi và chương trình.
- Trình phân tích cú pháp (Tokenizer/parser): TI-BASIC được lưu trữ dưới dạng các mã thông (token) 1 hoặc 2 byte; trình phân tích cú pháp sẽ dịch và thực thi các mã này.
Hệ thống con và tài liệu chi tiết
Xung quanh bốn trụ cột trên là các hệ thống con I/O bao gồm ngắt IM1 điều khiển thời gian, con trỏ, phím ON, trình điều khiển LCD, bàn phím và cổng liên kết.
Dự án đã cung cấp một bộ tài liệu kỹ thuật cực kỳ chi tiết bao gồm 14 phần chính và nhiều tài liệu chuyên sâu (sub-docs), bao gồm:
- Sơ đồ bộ nhớ và cổng vào ra.
- Cơ chế phân trang Flash/RAM.
- Bảng tra cứu bcall và API hệ thống.
- Xử lý ngắt và lỗi.
- Chi tiết về đồ thị, thống kê, ma trận và giải phương trình.
Tài liệu này đánh dấu các mức độ tin cậy khác nhau cho thông tin được cung cấp, từ "đã xác nhận" (verified trong disassembly) đến "giả thuyết" (inferred), giúp các nhà nghiên cứu và lập trình viên hiểu rõ bản chất hoạt động thực sự của thiết bị.
