# Applesoft BASIC

L' Applesoft BASIC és un dialecte del llenguatge de programació BASIC subministrat de sèrie amb els microordinadors Apple II. També se'l coneix com FP (per punt flotant) a causa del comandament utilitzat per invocar-lo, a diferència de comandament INT per a l'Integer BASIC. L'Applesoft BASIC va ser subministrat per Microsoft i el seu nom es deriva dels noms d'Apple i Microsoft. Va reemplaçar a l'Integer BASIC com BASIC en Memòria ROM en tots els ordinadors de la sèrie d'Apple II a partir de l'Apple II Plus. Els programadors d'Apple, entre ells en Randy Wigginton, van adaptar l'interpretador basic de Microsoft a l'Apple II agregant-li diverses característiques.
La primera versió d'Applesoft va ser llançada el gener de 1978 només en cinta de casset i no tenia suport apropiat per als gràfics d'alta resolució. L'Applesoft II, va estar disponible en casset, en disc i en la ROM de la targeta Applesoft card i en la de l'Apple II Plus i models subsegüents, va ser llançat el 1978. És aquesta última versió, que té algunes diferències de sintaxi respecte a la primera així com suport per als modes gràfics d'alta resolució de l'Apple II, que la majoria d'usuaris coneix amb el nom "Applesoft".

## Antecedents

Els clients d'Apple exigien una versió de BASIC que suportés càlculs de coma flotant. Com Steve Wozniak, el creador de l'Integer BASIC i l'única persona que ho entenien prou bé per afegir les característiques de punt flotant, estava ocupat amb la unitat de disc Disk II i amb l'Apple DOS, Apple va buscar a Microsoft, que era el venedor de BASIC preferit després del seu èxit amb l'Altair BASIC, i va llicenciar una versió de 10 KB de BASIC escrita en llenguatge assemblador anomenada "Applesoft". És conegut que Apple va obtenir de Microsoft una llicència de vuit anys per l'Applesoft BASIC per un contracte de $21.000, renovant el 1985 amb un acord que va donar a Microsoft els drets i el codi font per a la versió del BASIC del Macintosh d'Apple.

## Característiques

Applesoft era similar, i de fet tenia una base de codi comú, amb les implementacions en altres computadors basats en el 6502, com ara el BASIC 6502 1.1 de la Ohio Superboard II o el Commodore BASIC del PET. Utilitzava números de línia, i els espais no eren necessaris en les línies. Mentre que Applesoft era més lent que l'Integer BASIC, tenia moltes característiques millorades que aquest no tenia:
* Strings atòmics: Un string ja no és més un array de caràcters (com en l'Integer BASIC i el C), en lloc d'això, és un objecte de recollida d'escombraries (com en Scheme i Java). Això permet arrays de strings; DIM A$ (10) resulta en una reserva d'onze variables string numerades de 0 a 10.
* Arrays multidimensionals
* Variables de punt flotant de simple precisió amb 8 bits d'exponent i una part significativa de 31 bits i capacitats de matemàtiques millorades, incloent-hi funcions trigonomètriques i logarítmiques
* Els comandaments per a gràfics d'alta resolució (com les de l'Integer BASIC)
* FuncionsCHR, STR$ , i VAL per poder convertir entre els tipus de strings i variables numèrics (ambdós llenguatges tenien la funció ASC )
* Funcions definides per l'usari: funcions simples d'una sola línia escrites en BASIC, amb un sol paràmetre
* Intercepció d'errors, permetent als programes BASIC manejar errors inesperats mitjançant d'una subrutina escrita en BASIC
En canvi, l'Applesoft no tenia l'operador MOD (residu de la divisió) que si tenia l'Integer BASIC.
Wozniak es referia originalment al seu Integer BASIC com "Game BASIC" (BASIC de jocs), havent-lo definit així i optimitzat per poder escriure un clon del Breakout per al seu nou ordinador, apart d'aixó, pocs jocs d'acció van ser escrits en Applesoft BASIC per aquest motiu entre d'altres, per exemple:
* En aquell temps, amb memòria limitada i amb incapacitat de comptar acuradament cicles de rellotge, era ineficient escriure programes dependents de la velocitat amb què corrien en un interpretador de temps real.
* L'ús dels nombres reals (punt flotant) per a totes les operacions de matemàtiques creava sobrecàrregues innecessàries i degradava les performances. L'Applesoft convertia els enters a reals abans de realitzar operacions amb ells, convertint el resultat de nou a un enter només si havia de ser assignat a una variable entera (de 16 bits amb signe).
* Les shape tables eren una alternativa lenta als bitmaps. No hi havia provisió per barrejar text i gràfics, a excepció d'una limitada "pantalla dividida per maquinari" de l'Apple II (quatre línies de text a la part inferior de la pantalla). Així, molts programes gràfics contenien les seves pròpies rutines d'un generador de caràcters per bitmap. No es va afegir cap provisió en els interpretadors BASIC dels models Apple IIe de 128 KB i Apple IIc per als gràfics de doble resolució i memòria estesa de les noves màquines, o pel mode de 16 colors de l'Apple IIGS (Beagle Bros va oferir solucions alternatives en llenguatge màquina per a aquests problemes).
* El programa era emmagatzemat com una llista enllaçada de línies, un GOTO o un GOSUB prenia temps lineal O (n), i encara que els programes d'Applesoft no eren molt llargs comparats al programari d'avui, en un 6502 d'1 MHz això podia ser un embotellament significatiu. Els programes grans sovint van ser escrits amb les subrutines més usades en el límit del programa per reduir el temps de processament per a les crides dels GOSUB.
* No hi havia cap suport per so a part d'un comandament PEEK que podia ser emprat per excitar (clicar) l'altaveu, encara que es podia també utilitzar la instrucció PRINT d'un caràcter bell ASCII per produir el senyal sonor d'alarma del sistema (beep). El llenguatge no era prou ràpid per produir altre cosa que no fos un brunzit de baríton mitjançant clics repetits. No obstant això, es podia executar música de diverses octaves usant crides successives a un generador de to en llenguatge màquina.

## Codi d'exemple

Hola món en Applesoft BASIC podia ser entrat la manera següent:
Múltiples sentències podien ser incloses en la mateixa línia de codi si se separaven per dos punts (:). El signe "?" en l'Applesoft BASIC era una abreviació de "PRINT", encara que en els llistats no hi sortia, Applesoft convertia el signe "?" en els programes entrats. en el mateix "token" que "PRINT", de manera que tots apareixien com "PRINT" quan un programa era llistat.
El programa de dalt apareixia en fer unLIST com:

## Apple Business BASIC

Donn Denman va portar l'Applesoft BASIC cap al SOS, en la forma d'Apple Business BASIC, lliurat amb l'ordinador Apple ///, i li va fer un "trucatge" per poder emprar la memòria paginada de l'Apple /// (256kb en quatre bancs de 64kb). Seguint la tendència d'evitar les adreces absolutes, les ordres PEEK i POKE van ser substituïdes per les invoke i PERFORM que carregaven i executaven separadament mòduls de codi màquina.

## Vegeu també

* TRS-80
* Commodore PET
* Apple IIC
* Bank switching

## Referències

* 1 2 Steven Weyhrich’s Apple II History;Consulta: 5 gener 2017.
* ↑ The Apple History
* ↑ «Applesoft Basic». Arxivat de l'original el 2016-07-17. [Consulta: 17 juliol 2016].
* 1 2 «Machine language for beginners». Arxivat de l'original el 2016-08-10. [Consulta: 10 agost 2016].

## Bibliografia

* Wozniak, Steve «System Description: The Apple II». Byte magazine, 5-1977. Arxivat de l'original el 16 de maig 2008 [Consulta: 22 novembre 2010]. Arxivat 16 de maig 2008 a Wayback Machine.

## Enllaços externs

* Aquest article inclou text d'Everything2, llicenciat sota GFDL.