06/10/2026 · VietTechies · Biên tập

Năm 1983, khi bật chiếc máy tính Commodore 64 nối với TV qua kênh 3, màn hình màu tím mờ nhạt xuất hiện cùng một từ duy nhất: READY. Không giống như các hệ điều hành hiện đại khởi động vào môi trường giao diện đồ họa nhiều lớp, những máy tính vi xử lý 8-bit thời kỳ đầu chào đón người dùng bằng một con trỏ lệnh tương tác đơn sơ. Để vận hành máy, người dùng phải nhập trực tiếp từng dòng lệnh có đánh số vào bộ nhớ. Đối với cả một thế hệ đam mê máy tính đầu tiên, giao diện trực tiếp này đã biến chiếc màn hình TV gia đình thành một phòng thí nghiệm tiện lợi, giúp họ khám phá cách các lệnh phần mềm điều khiển phần cứng vật lý.
Khoảng cách trừu tượng hóa trên hệ thống 8-bit
Vào giữa những năm 1960, hai giáo sư John Kemeny và Tom Kurtz tại Đại học Dartmouth đã sáng tạo ra ngôn ngữ BASIC nhằm giúp sinh viên các ngành xã hội và nhân văn dễ dàng tiếp cận với máy tính. Một thập kỷ sau, Bill Gates và Paul Allen viết trình thông dịch BASIC cho máy tính vi xử lý Altair, đưa Microsoft BASIC trở thành nền tảng phần mềm cốt lõi trên các hệ thống máy tính cá nhân sơ khai. Ở kỷ nguyên vi máy tính 8-bit, việc phân phối phần mềm thương mại còn rất hạn chế, nên các trò chơi thường được xuất bản dưới dạng mã nguồn BASIC in trên sách báo công nghệ. Muốn chơi game, người dùng buộc phải gõ lại toàn bộ mã chương trình bằng tay. Quá trình nhập thủ công khó tránh khỏi sai sót, đòi hỏi họ phải tự dò lỗi (debug) từng dòng mã. Chính nhờ quá trình tìm lỗi thực tế đó, những người chơi thời kỳ đầu đã tự nhiên nắm vững cấu trúc chương trình và tư duy logic phần mềm.
Ràng buộc cú pháp và thao tác hiển thị màn hình
Ngôn ngữ Commodore BASIC yêu cầu lập trình viên phải bắt đầu mỗi câu lệnh bằng một số thứ tự dòng. Các tài liệu hướng dẫn khuyên nên đánh số cách nhau 10 đơn vị để dễ dàng chèn thêm các dòng lệnh phát sinh về sau, đồng thời dùng các lệnh như GOTO để điều hướng luồng điều khiển. Trình thông dịch này cũng có những đặc điểm xử lý cú pháp khá độc đáo: dù người gõ có thể đặt tên biến dài và mang tính mô tả, Commodore BASIC thực chất chỉ nhận diện hai ký tự đầu tiên của tên biến. Việc quản lý hiển thị phụ thuộc nhiều vào kỹ thuật định dạng chuỗi thông minh. Các ký tự lệnh không in ra được—như lệnh di chuyển con trỏ CRSR DOWN—có thể nhúng trực tiếp vào chuỗi trong lệnh PRINT để dịch chuyển con trỏ khi chương trình chạy. Kết hợp các lệnh nhúng này với các hàm toán học, những đoạn mã ngắn có thể tạo ra các họa tiết thị giác phức tạp. Vòng lặp BASIC hai dòng nổi tiếng sử dụng RND và CHR$ 205.5 đã liên tục in các đường chéo luân phiên, tạo nên một mê cung bất tận trải rộng khắp màn hình.
Bỏ qua API bằng các lệnh PEEK và POKE
Không chỉ dừng lại ở việc in chuỗi hay tạo vòng lặp điều khiển, Commodore BASIC còn cho phép can thiệp trực tiếp vào bộ nhớ thông qua hai lệnh PEEK và POKE. Lệnh PEEK giúp người dùng đọc dữ liệu từ một thanh ghi bộ nhớ cụ thể, trong khi POKE cho phép ghi giá trị trực tiếp vào các địa chỉ bộ nhớ phần cứng. Commodore 64 không có các giao diện lập trình ứng dụng (API) hiện đại dành cho đồ họa hay cấu hình hệ thống. Thay vào đó, các đặc tính phần cứng vật lý được ánh xạ trực tiếp tới các tọa độ bộ nhớ cố định. Ví dụ, để đổi màu viền và màu nền của màn hình, người dùng chỉ cần ghi các giá trị màu số tương ứng vào địa chỉ bộ nhớ 53280 và 53281. Nhờ thực thi các lệnh POKE lên các địa chỉ này trong các cấu trúc vòng lặp đơn giản, lập trình viên có thể điều khiển trực tiếp phần cứng hiển thị mà không cần phụ thuộc vào bất kỳ thư viện phần mềm trung gian nào.
Khám phá nền tảng hiện đại từ phần cứng 8-bit
Quá trình phát triển phần mềm ngày nay diễn ra sau vô số lớp trừu tượng hóa, từ trình điều khiển của hệ điều hành đến các giao diện ứng dụng cấp cao làm ẩn đi các thao tác phần cứng bên dưới. Ngược lại, các nền tảng 8-bit sơ khai như Commodore 64 đã giải mã máy tính bằng cách phơi bày cấu trúc bộ nhớ trực tiếp trước mắt người dùng. Việc hiểu rõ cách phần cứng thời kỳ đầu ánh xạ từng địa chỉ bộ nhớ cụ thể tới màu viền màn hình và khả năng hiển thị ký tự mang lại cái nhìn nền tảng sắc bén về nguyên lý hoạt động của kiến trúc máy tính hiện đại. Cho dù ngày nay có bao nhiêu lớp phần mềm trừu tượng nằm giữa chương trình và máy tính, các câu lệnh cấp cao cuối cùng vẫn chuyển thành những thao tác đọc và ghi trực tiếp trên các thanh ghi bộ nhớ vật lý.
Ảnh minh họa do AI tạo, không phải ảnh tư liệu.
Nguồn: 0b10
0b10
Learning BASIC Like It's 1983
