Applesoft BASIC

De Viquipèdia
Dreceres ràpides: navegació, cerca

El Applesoft BASIC és un “dialecte” del llenguatge de programació BASIC subministrat de sèrie amb els microordinadors Apple II. També va ser referit com FP (per punt flotant) a causa del ordre usat per invocar, a diferència de comandament INT per al Integer BASIC. El Applesoft BASIC va ser subministrat per Microsoft i el seu nom es deriva dels noms de Apple i Microsoft. Va reemplaçar al Integer BASIC i era el BASIC en Memòria ROM en tots els ordinadors de la sèrie d'Apple II després del model original. Els empleats d'Apple, incloent-hi Randy Wigginton, van adaptar el interpretador de Microsoft per l'Apple II i agregar diverses característiques. La primera versió de Applesoft va ser llançada el 1977 només en cinta de casset i no tenia suport apropiat per als gràfics d'alta resolució. El Applesoft II , que estava disponible en casset, disc i en la ROM 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, la qual la majoria de la gent s'entén pel terme "Applesoft".

Antecedents[modifica | modifica el codi]

Els clients d'Apple exigien una versió de BASIC que suportés càlculs de coma flotant. Com Steve Wozniak, el creador del 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 el Altair BASIC, i va llicenciar una versió de 10 KB de BASIC escrita en llenguatge d'assemblador anomenada "Applesoft". S'informa que Apple va obtenir de Microsoft una llicència de vuit anys per al Applesoft BASIC per un honorari pla de $ 21.000, renovant el 1985 amb un acord que va donar a Microsoft els drets i el codi font per a la versió de BASIC del Macintosh d'Apple.

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 Commodore BASIC: va usar nombres de línia, i els espais no eren necessaris en les línies. Mentre que Applesoft era més lent que el Integer BASIC, tenia moltes característiques que no tenia aquest:

  • Strings atòmics: Un string ja no és més un arranjament de caràcters (com en el Integer BASIC i el C), en lloc d'això, és un objecte de recollida d'escombraries (com en Scheme i Java). Això permet arranjaments de string; DIM A $ (10) resulta en un acord d'onze variables de string numerades de 0 a 10.
  • Arranjaments 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ó
  • Funcions CHR $ , STR $ , i VAL per convertir entre els tipus de strings i numèrics (tots dos 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

Inversament, el Applesoft no va tenir l'operador MOD (residu de la divisió) que havia estat present al Integer BASIC.

Atès que Wozniak es referia originalment al seu Integer BASIC com "Game BASIC" (BASIC de joc), havent-ho escrit així per poder escriure un clon del Breakout per el seu nou ordinador, pocs jocs d'acció van ser escrits en el Applesoft BASIC per diverses raons:

  • En aquesta era de acuradament comptar cicles de rellotge i de memòria limitada, era ineficient escriure programes dependents de la velocitat que correguessin en un interpretador de temps d'execució.
  • L'ús dels nombres reals (punt flotant) per a totes les operacions de matemàtiques va crear sobrecàrregues innecessàries i degradar l'acompliment. El Applesoft convertia nombres enters a reals abans de realitzar operacions en ells, convertint el resultat de nou a un nombre enter només si havia de ser assignat a una variable de nombre sencer (de 16 bits amb signe).
  • Les shape comptables 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 van contenir les seves pròpies rutines 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 per la manera de 16 colors de l'Apple IIGS (Beagle Bros va oferir solucions alternatives en llenguatge de 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 els programes de 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 trucades de GOSUB.
  • No hi havia cap suport per so a part d'un comando PEEK que podia ser usat per petar (clic) l'altaveu, encara que es podia també utilitzar PRINT d'un caràcter bell del ASCII per produir el senyal sonor d'alarma del sistema (beep). De tota manera el llenguatge no era prou ràpid per produir més que un brunzit de baríton mitjançant de clics repetits. No obstant això, podia ser executada música a través de diverses octaves usant trucades repetides a un generador de to en llenguatge de màquina.

Codi d'exemple[modifica | modifica el codi]

Hola món, amb vídeo invers i el caràcter bell, corrent, després llistat

Hola món en Applesoft BASIC podia ser entrat la manera següent:

10 TEXT: HOME
20? "HELLO WORLD"

Múltiples ordres podien ser inclosos en la mateixa línia de codi si es separaven per dos punts (:). La? pot ser usada en el Applesoft BASIC com a drecera per "PRINT", encara que lletrejar la paraula no és només acceptable sinó canònic - Applesoft convertia la "?" en els programes entrats al mateix símbol que "PRINT", de manera que qualsevol apareixeria com "PRINT" quan un programa era llistat. El programa de dalt apareixeria en una ordre LIST com:

10 TEXT: HOME
20 PRINT "HELLO WORLD"

Apple Business BASIC[modifica | modifica el codi]

L'Apple Business BASIC despatxat amb l'ordinador Apple///. Donn Denman va portar el Applesoft BASIC cap al SOS i ho va treballar per prendre avantatge de la memòria estesa de l'Apple///. Seguint la tendència d'evitar les adreces absolutes, les ordres PEEK i POKE van ser substituïts per sentències invoke i PERFORM que carregaven i executaven separadament mòduls de codi ensamblat.

Enllaços externs[modifica | modifica el codi]