Applesoft BASIC

**Applesoft BASIC** là một biến thể của Microsoft BASIC, được phát triển bởi Marc McDonald và Ric Weiland, và được đưa ra thị trường cùng với loạt máy tính Apple II. Nó thay thế Interger BASIC và là phiên bản BASIC nằm trong ROM trong tất cả các máy tính Apple II sau phiên bản Apple II gốc. Nó cũng được gọi là FP BASIC (từ floating point, nghĩa là "dấu chấm động") vì Disk Operating System (DOS) được sử dụng để gọi nó, thay vì INT cho Integer BASIC. Applesoft BASIC được Microsoft cung cấp và tên của nó có nguồn gốc từ tên của cả Apple Inc. và Microsoft. Nhân viên của Apple, bao gồm Randy Wigginton, đã sửa đổi trình biên dịch của Microsoft sang cho Apple II và bổ sung một số tính năng. Phiên bản đầu tiên của Applesoft được phát hành vào năm 1977 chỉ có trên băng cassette và thiếu sự hỗ trợ thích hợp cho đồ họa có độ phân giải cao. Applesoft II, có các phiên bản trên cassette và đĩa và trong ROM của Apple II Plus và các mô hình tiếp theo, được phát hành vào năm 1978. Đây là phiên bản thứ hai, có một số khác biệt trong cú pháp so với phiên bản lần đầu tiên cũng như hỗ trợ cho Apple II chế độ đồ họa độ phân giải cao, điều mà hầu hết mọi người hiểu "Applesoft" là gì.

## Bối cảnh
Khi Steve Wozniak viết Integer BASIC cho Apple II, ông không thực hiện hỗ trợ cho phép toán dấu phẩy động bởi vì Wozniak chủ yếu quan tâm đến việc viết game, một nhiệm vụ mà chỉ cần các số nguyên là đủ. Năm 1976, Microsoft đã phát triển Microsoft BASIC, một trình thông dịch BASIC cho MOS Technology 6502, nhưng tại thời điểm đó không có máy tính sản xuất nào sử dụng nó. Sau khi biết rằng Apple đã có một máy 6502, Microsoft hỏi rằng liệu Apple quan tâm đến việc xin cấp phép cho BASIC chạy trên đó, nhưng Steve Jobs trả lời rằng Apple đã có BASIC rồi. Apple II đã được công bố cho công chúng tại West Coast Computer Fair vào tháng 4 năm 1977 và có sẵn để bán vào tháng 6 năm đó. Một trong những khiếu nại phổ biến nhất của khách hàng về máy tính là sự thiếu khả năng tính toán số thực dấu phẩy động của BASIC. BASIC nguyên bản chỉ tính toán với các số nguyên nằm giữa −32768 và 32767 và gây ra sự cố cho người dùng cố gắng viết các ứng dụng doanh nghiệp với nó. Steve Wozniak chưa bao giờ thêm khả năng này vào Integer BASIC vì ông không coi chúng là cần thiết cho phần mềm chơi game và giáo dục, hai nhiệm vụ chính mà ông đã hình dung với Apple II. Vì Wozniak - người duy nhất hiểu Integer BASIC đủ tốt để thêm các tính năng dấu phải động — đang bận rộn với ổ đĩa và bộ điều khiển Disk II và với Apple DOS, Apple đã quay sang nhờ Microsoft. Làm cho mọi thứ trở nên rắc rối hơn nữa là máy tính cá nhân Commodore PET của đối thủ Apple có một trình thông dịch BASIC có khả năng tính toán dấu phẩy động ngay từ đầu. Giấy phép Applesoft cũng đã cứu Microsoft khỏi việc suýt phá sản khi họ cấp phép BASIC cho Commodore thay thế cho PET trong một thỏa thuận mà đã tạo ra các chi phí tốn kém bất ngờ.

Theo như báo chí đưa tin, Apple đã nhận được giấy phép 8 năm cho Applesoft BASIC của Microsoft với mức phí cố định là 31.000 đô la Mỹ, gia hạn tiếp năm 1985 thông qua một thỏa thuận đã cung cấp cho Microsoft quyền và mã nguồn cho phiên bản BASIC của Macintosh của Apple. Applesoft được thiết kế tương thích ngược với Integer BASIC và sử dụng mã gốc của phiên bản BASIC 6502 của Microsoft, bao gồm sử dụng lệnh GET để phát hiện các lần nhấn phím và không yêu cầu bất kỳ khoảng trống nào trên các dòng chương trình. Trong khi Applesoft BASIC chậm hơn Integer BASIC, nó có nhiều tính năng mà BASIC cũ thiếu hụt:

* Chuỗi nguyên tử: Chuỗi không còn là mảng ký tự (như trong Integer BASIC và C); nó thay vào đó là một đối tượng thu gom rác (như trong Scheme và Java). Điều này cho phép các mảng chuỗi; DIM A$(10) dẫn đến một vectơ của mười chuỗi biến số 0-10.
* Mảng đa chiều (số hoặc chuỗi)
* Các biến số dấu phẩy động có độ chính xác đơn với số mũ 8 bit và 31 bit cho các chữ số có nghĩa và khả năng toán học được cải thiện, bao gồm hàm lượng giác và hàm logarit
* Lệnh cho đồ họa độ phân giải cao
* Câu lệnh DATA, với lệnh READ và RESTORE, để biểu diễn các giá trị số và chuỗi theo số lượng
* Hàm CHR$, STR$ và VAL để chuyển đổi giữa các loại chuỗi và số (cả hai ngôn ngữ đều có hàm ASC)
* Các hàm do người dùng định nghĩa: các hàm một dòng đơn giản được viết bằng BASIC, với một tham số đơn
* Bẫy lỗi, cho phép các chương trình BASIC xử lý các lỗi không mong muốn bằng phương thức của một chương trình con được viết bằng BASIC

Ngược lại, Applesoft thiếu toán tử MOD (phần dư) đã có mặt trong Integer BASIC.

Việc chuyển phần mềm BASIC sang cho Apple II là một công việc tẻ nhạt khi Apple nhận được một danh sách nguồn cho Microsoft 6502 BASIC đã chứng minh là một mớ hỗn độn cực kỳ nhiều lỗi và cũng yêu cầu bổ sung các lệnh Integer BASIC. Vì Apple không có sẵn hợp ngữ 6502, nhóm phát triển đã buộc phải gửi mã nguồn qua đường dây điện thoại tới Call Computer, công ty cung cấp dịch vụ biên dịch. Đây là một quá trình cực kỳ tẻ nhạt, chậm chạp và sau khi Call Computer mất mã nguồn do sự cố thiết bị, một trong những lập trình viên, Cliff Huston, đã sử dụng máy tính IMSAI 8080 của riêng mình để kết nối mã nguồn BASIC.

Applesoft rất giống với BASIC 2.0 của Commodore ngoài các tính năng được thừa kế từ Integer BASIC. Có một vài khác biệt nhỏ như thiếu các toán tử xử lý bit của Applesoft; nếu không, hầu hết các chương trình BASIC không sử dụng các tính năng phụ thuộc phần cứng sẽ chạy trên cả hai phiên bản BASIC này.

Coleco tuyên bố rằng SmartBASIC chạy trong máy tính gia đình Adam của Coleco là mã nguồn tương thích với Applesoft. Microsoft đã cấp phép một BASIC tương thích với Applesoft cho VTech cho bản sao Apple II tên Laser 128 của nó.

## Chú thích

## Liên kết ngoài
* ROM có BASIC đã tháo rời
* AppleSoft BASIC trong ngôn ngữ JavaScript