IBM BASIC

BASIC cho máy tính cá nhân của IBM, thường được rút gọn thành IBM BASIC, là ngôn ngữ lập trình được IBM phát hành lần đầu tiên với IBM PC (model 5150) vào năm 1981. IBM đã phát hành bốn phiên bản khác nhau của trình thông dịch Microsoft BASIC, được cấp phép từ Microsoft cho PC và PCjr. Chúng được gọi là Cassette BASIC, Disk BASIC, BASIC nâng cao (BASICA) và Cartridge BASIC. Các phiên bản của BASIC và BASIC nâng cao được kèm theo IBM PC DOS đến phiên bản PC DOS 4. Ngoài các tính năng của BASIC chuẩn ANSI, các phiên bản của IBM cũng hỗ trợ phần cứng đồ họa và âm thanh của dòng máy tính IBM. Mã nguồn có thể được nhập vào với trình chỉnh sửa toàn màn hình và các cơ sở rất hạn chế được cung cấp để gỡ lỗi chương trình thô sơ. IBM cũng phát hành một phiên bản trình biên dịch Microsoft BASIC cho PC, đồng thời với việc phát hành PC DOS 1.10 vào năm 1982.

**Bối cảnh**
IBM đã mua giấy phép Microsoft BASIC cho IBM PC mặc dù đã có phiên bản riêng cho các máy tính lớn của công ty. Don Estridge nói, "Microsoft BASIC đã có hàng trăm ngàn người dùng trên khắp thế giới. Bạn sẽ tranh luận như thế nào?"

**IBM Cassette BASIC**
IBM Cassette BASIC xuất xưởng với bộ nhớ chỉ đọc (ROM) 32 kilobyte (ROM), tách biệt với ROM BIOS 8 KB của máy tính IBM gốc, và không yêu cầu hệ điều hành để chạy. Cassette BASIC cung cấp giao diện người dùng mặc định nếu không có ổ đĩa mềm được cài đặt, hoặc nếu mã khởi động không tìm thấy đĩa mềm có thể khởi động khi bật nguồn. Cái tên Cassette BASIC xuất phát từ việc sử dụng băng cassette thay vì đĩa mềm để lưu trữ các chương trình và dữ liệu. Cassette BASIC được tích hợp vào ROM của PC và IBM PC XT ban đầu, và các model đầu tiên trong dòng PS/2. Nó chỉ hỗ trợ các chương trình tải và lưu vào giao diện băng cassette của IBM, không có sẵn trên các mô hình sau Model 5150 gốc. Phiên bản nhập cảnh cấp 5150 chỉ có 16 KB bộ nhớ truy cập ngẫu nhiên (RAM) để chạy Cassette BASIC. Tuy nhiên, Cassette BASIC hiếm khi được sử dụng vì ít máy tính được bán mà không có ổ đĩa, và hầu hết được bán với PC DOS và RAM đủ để chạy ít nhất là BASIC - nhiều người có thể chạy Advanced BASIC. Có ba phiên bản của Cassette BASIC: C1.00 (được tìm thấy trên các máy tính IBM đầu với bo mạch chủ 16k-64k), C1.10 (được tìm thấy trên tất cả các máy tính IBM sau này, XT, AT và PS/2) và C1.20 (tìm thấy trên PCjr).

**IBM Disk BASIC**
IBM BASIC BASIC (BASIC.COM) đã được đưa vào IBM PC DOS gốc và yêu cầu 32 KB RAM. Vì nó sử dụng ROM BASIC 32 KB Cassette, BASIC.COM không chạy trên các bản sao PC tương thích cao như Compaq Portable. Tên Disk BASIC đến từ việc sử dụng đĩa mềm thay vì băng cassette để lưu trữ các chương trình và dữ liệu. Mã dựa trên đĩa sửa lỗi errata trong mã cư trú ROM và thêm đĩa mềm và hỗ trợ cổng nối tiếp.
Đĩa BASIC có thể được xác định bằng cách sử dụng chữ D trước số phiên bản. Nó hỗ trợ thêm đĩa và một số tính năng thiếu trong Cassette BASIC, nhưng không bao gồm các chức năng âm thanh/đồ họa mở rộng của BASICA. Mục đích chính của Disk BASIC là phiên bản "lite" cho các máy tính IBM chỉ với 64k bộ nhớ. Đến năm 1986, tất cả các PC mới được xuất xưởng với ít nhất 256k và các phiên bản DOS sau 3.00 đã giảm Disk BASIC xuống chỉ còn một phần nhỏ được gọi là BASICA.COM để tương thích với các tập tin batch.

**IBM Advanced BASIC**
IBM BASIC nâng cao (BASICA.COM) cũng được bao gồm trong IBM PC DOS gốc, và yêu cầu 48 KB RAM và mã ROM cư trú của Cassette BASICwilliams198201. Nó bổ sung các chức năng như truy cập tập tin đĩa, lưu trữ các chương trình trên đĩa, âm thanh đơn âm sử dụng loa tích hợp của PC, chức năng đồ họa để thiết lập và xóa các điểm ảnh, vẽ đường nét và vòng tròn, thiết lập màu sắc và xử lý sự kiện cho các phím bấm và phím điều khiển. BASICA sẽ không chạy trên các máy tính không phải của IBM (thậm chí còn được gọi là các máy "tương thích 100%") hoặc các mô hình IBM sau này, vì các mô hình này thiếu ROM BASIC cần thiết.
IBM BASIC nâng cao (BASICA.COM) cũng được bao gồm trong IBM PC DOS gốc, và yêu cầu 48 KB RAM và mã ROM cư trú của Cassette BASIC. Nó bổ sung các chức năng như truy cập tập tin đĩa, lưu trữ các chương trình trên đĩa, âm thanh đơn âm sử dụng loa tích hợp của PC, chức năng đồ họa để thiết lập và xóa các điểm ảnh, vẽ đường nét và vòng tròn, thiết lập màu sắc và xử lý sự kiện cho các phím bấm và phím điều khiển. BASICA sẽ không chạy trên các máy tính không phải của IBM (thậm chí còn được gọi là các máy "tương thích 100%") hoặc các mô hình IBM sau này, vì các mô hình này thiếu ROM BASIC cần thiết.
Phiên bản BASICA giống với DOS tương ứng, bắt đầu bằng phiên bản1.00 và kết thúc bằng phiên bản 3.30. Các phiên bản đầu tiên của BASICA không hỗ trợ các thư mục con và một số lệnh đồ họa hoạt động hơi khác nhau. Ví dụ, nếu câu lệnh LINE được sử dụng để vẽ các đường thẳng ra khỏi màn hình, BASIC sẽ chỉ cắt chúng với đường liền kề gần nhất trong khi trong BASIC 2.x trở lên, chúng rời khỏi màn hình và không giao nhau. Lệnh PAINT trong BASIC 1.x bắt đầu điền vào tọa độ được chỉ định và mở rộng ra ngoài theo hướng lên và xuống trong khi trong BASIC 2.x nó lấp đầy mọi thứ bên dưới tọa độ bắt đầu và sau khi kết thúc, mọi thứ ở trên nó. Lệnh PAINT của BASIC 1.x cũng sử dụng ngăn xếp hệ thống để lưu trữ và khi điền vào các vùng phức tạp, có thể tạo ra lỗi OVERFLOW. Để khắc phục điều này, câu lệnh CLEAR có thể được sử dụng để mở rộng ngăn xếp của BASIC (128 byte là kích thước mặc định). BASIC 2.x không sử dụng stack khi PAINTing và do đó không có vấn đề này.
Compaq BASIC 1.13 là BASIC độc lập đầu tiên cho PC (không yêu cầu Cassette BASIC để chạy) cũng như phiên bản BASIC duy nhất ngoài IBM BASICA 1.00 và 1.10 để sử dụng FCB và bao gồm câu lệnh LINE ban đầu với các đường giao nhau (PAINT) tuyên bố trong Compaq BASIC 1.13 hoạt động giống như trong tất cả các phiên bản sau của BASICA/GW-BASIC, sử dụng thuật toán điền mới và không có ngăn xếp).
Các phiên bản đầu của PC DOS bao gồm một số chương trình BASIC mẫu thể hiện khả năng của PC, bao gồm cả trò chơi BASON DONKEY.BAS.
GW-BASIC giống với BASICA, ngoại trừ việc bao gồm mã BASIC BASIC trong chương trình, do đó cho phép nó chạy trên các máy tính không phải của IBM và sau đó là các mô hình IBM thiếu Cassette BASIC trong ROM.

**Chú thích==