GW-BASIC
Tính năng và đặc điểm

IBM BASICA và GW-BASIC là các bản chuyển trực tiếp từ BASIC-80 của Microsoft (còn được gọi là MBASIC) được thiết kế cho các máy 8080/Z80, nhưng với các tính năng bổ sung dành riêng cho phần cứng PC của IBM. Các tính năng phổ biến của BASIC-80 và BASICA/GW-BASIC bao gồm:
Lệnh CLS để xóa màn hình
Biến số chính xác kép (MBF 64 bit)
Hỗ trợ số nguyên thực sự
Câu lệnh PRINT USING cho đầu ra hiển thị được định dạng
LPRINT để xuất ra máy in
Vòng lặp WHILE….WEND
Khả năng lưu các chương trình theo ba định dạng (mã nhị phân được mã hóa thông thường, ASCII hoặc định dạng mã thông báo "được bảo vệ" không thể LIST được)
"Ok" làm dấu nhắc BASIC
Câu lệnh DEFtype để đặt tất cả các biến bắt đầu bằng các ký tự được chỉ định làm một loại, loại bỏ sự cần thiết phải đặt hậu tố loại sau chúng
Hàm INKEY$ để đọc các lần nhấn phím
Một trình soạn thảo nâng cao bao gồm các câu lệnh để sắp xếp lại các dòng chương trình và xóa chúng trong các khối
Hỗ trợ số thập lục phân (được thực hiện bằng cách viết &H trước số)
Câu lệnh REM có thể được viết tắt là '
Các câu lệnh có văn bản được trích dẫn (ví dụ: PRINT) không yêu cầu dấu ngoặc kép thứ hai ở cuối trừ khi các đối số khác theo sau
Hướng dẫn IN/OUT cho I/O
Các tính năng bẫy lỗi
Ngược lại, BASIC-80/BASICA/GW-BASIC không cho phép xử lý các dòng như trong phiên bản 6502 (không cần space trên một dòng chương trình).
Các chương trình MBASIC không sử dụng các câu lệnh PEEK/POKE sẽ chạy dưới trình thông dịch GW-BASIC. BASICA đã thêm một số lượng lớn các tính năng cho máy tính IBM như âm thanh, đồ họa và các lệnh bộ nhớ.
Microsoft đã không cung cấp một phiên bản chung của MS-DOS cho đến khi ra phiên bản 3.20 vào năm 1986; trước đó, tất cả các biến thể của hệ điều hành đều là OEM. Tùy thuộc vào OEM, BASIC được phân phối dưới dạng BASICA.EXE hoặc GWBASIC.EXE. BASICA.EXE không nên nhầm lẫn với IBM BASICA, với tên tập tin luôn có đuôi là.COM. Một số biến thể của BASIC có các tính năng bổ sung để hỗ trợ một loại máy cụ thể (ví dụ, các phiên bản AT&T và Tandy của DOS bao gồm một GW-BASIC đặc biệt hỗ trợ khả năng đồ họa và âm thanh nâng cao của chúng).
Phiên bản đầu tiên của GW-BASIC là phiên bản có trong Compaq DOS 1.13 (được phát hành với Compaq Portable vào năm 1983) và tương tự với IBM BASICA 1.10. Nó sử dụng các khối điều khiển tập tin có nguồn gốc từ CP/M để truy cập đĩa và không hỗ trợ các thư mục con. Các phiên bản sau này đã thêm tính năng này và đồ họa được cải thiện cũng như các khả năng khác.
GW-BASIC 3,20 (1986) thêm hỗ trợ đồ họa EGA (không có phiên bản BASICA hoặc GW-BASIC nào có hỗ trợ VGA) và có hiệu lực phiên bản mới nhất được phát hành trước khi nó được thay thế bởi QBasic.
Người mua card đồ họa Hercules nhận được phiên bản đặc biệt của GW-BASIC trên đĩa tiện ích của card được gọi là HBASIC và hỗ trợ đồ họa đơn sắc 720×348 của nó (các phiên bản BASICA/GW-BASIC khác không hỗ trợ đồ họa Hercules và chỉ có thể hiển thị đồ họa trên card đó thông qua việc sử dụng mô phỏng CGA của bên thứ ba, chẳng hạn như SIMCGA).
GW-BASIC có một môi trường phát triển tích hợp dựa trên dòng lệnh (IDE) dựa trên Dartmouth BASIC. Sử dụng các phím di chuyển con trỏ, mọi dòng hiển thị trên màn hình đều có thể được chỉnh sửa. Nó cũng bao gồm các phím tắt chức năng ở cuối màn hình. Giống như các phiên bản vi tính đầu của BASIC, GW-BASIC thiếu nhiều cấu trúc cần thiết cho lập trình có cấu trúc như biến cục bộ và các chương trình GW-BASIC được thực thi tương đối chậm, bởi vì nó là một ngôn ngữ lập trình thông dịch. Tất cả các dòng chương trình phải được đánh số; tất cả các dòng không đánh số được coi là các lệnh trong chế độ trực tiếp sẽ được thực thi ngay lập tức. Các tệp nguồn của chương trình thường được lưu dưới định dạng nén nhị phân với mã thông báo thay thế các lệnh, với một tùy chọn để lưu dưới dạng văn bản ASCII.
Môi trường dòng lệnh GW-BASIC có lệnh RUN, LOAD, SAVE, LIST cho chương trình hiện tại, hoặc thoát khỏi hệ điều hành; các lệnh này cũng có thể được sử dụng như các câu lệnh chương trình. Có rất ít sự hỗ trợ cho lập trình có cấu trúc trong GW-BASIC. Tất cả các câu lệnh điều kiện IF/THEN/ELSE phải được viết trên một dòng, mặc dù câu lệnh WHILE/WEND có thể nhóm nhiều dòng. Các hàm chỉ có thể được định nghĩa bằng cách sử dụng dòng DEF FNf (x) = <hàm toán học của câu lệnh x> (ví dụ, DEF FNLOG (cơ sở, số) = LOG (số)/LOG (cơ sở)). Kiểu dữ liệu của các biến có thể được xác định bằng một ký tự ở cuối tên biến: A$ là một chuỗi các ký tự, A% là một số nguyên, v.v... Các nhóm biến cũng có thể được đặt thành loại mặc định dựa trên chữ cái đầu tiên tên của họ bằng cách sử dụng các câu lệnh DEFINT, DEFSTR, v.v. Loại mặc định cho các biến không khai báo không được xác định bởi các câu lệnh gõ như vậy, là số thực độ chính xác đơn (MBF 32 bit).