stringtranslate.com

Applesoft BÁSICO

Applesoft BASIC es un dialecto de Microsoft BASIC , desarrollado por Marc McDonald y Ric Weiland , suministrado con la serie de computadoras Apple II . Reemplaza a Integer BASIC y es el BASIC en ROM en todas las computadoras de la serie Apple II después del modelo Apple II original . También se le conoce como FP BASIC (de punto flotante ) debido al comando DOS de AppleFP utilizado para invocarlo, en lugar INTde Integer BASIC.

Applesoft BASIC fue suministrado por Microsoft y su nombre se deriva de los nombres de Apple Computer y Microsoft. Los empleados de Apple, incluido Randy Wigginton , adaptaron el intérprete de Microsoft para Apple II y agregaron varias funciones. La primera versión de Applesoft se lanzó en 1977 en cinta de casete y carecía del soporte adecuado para gráficos de alta resolución. Applesoft II , que estuvo disponible en casete, disco y en la ROM del Apple II Plus y modelos posteriores, se lanzó en 1978. Es esta última versión la que tiene algunas diferencias de sintaxis y soporte para los gráficos de alta resolución del Apple II. modos, que suele ser sinónimo del término "Applesoft".

Microsoft lanzó un compilador para Applesoft BASIC, TASC (The Applesoft Compiler), en 1981. [1]

Historia

Cuando Steve Wozniak escribió Integer BASIC para Apple II , no implementó soporte para aritmética de punto flotante porque estaba interesado principalmente en escribir juegos, una tarea para la cual los números enteros por sí solos eran suficientes. [2] En 1976, Microsoft había desarrollado Microsoft BASIC para la tecnología MOS 6502 , pero en ese momento no había ninguna computadora de producción que lo usara. Al enterarse de que Apple tenía una máquina 6502, Microsoft preguntó si la empresa estaba interesada en licenciar BASIC, pero Steve Jobs respondió que Apple ya tenía una.

El Apple II se presentó al público en la West Coast Computer Faire en abril de 1977 y estuvo disponible para la venta en junio. Una de las quejas más comunes de los clientes sobre la computadora fue la falta de matemáticas de punto flotante de BASIC. [3] Para hacer las cosas más problemáticas, la computadora personal rival Commodore PET tenía desde el principio un intérprete BASIC con capacidad de punto flotante. Como Wozniak, la única persona que entendía Integer BASIC lo suficientemente bien como para agregar características de punto flotante, estaba ocupado con la unidad y el controlador Disk II y con Apple DOS , Apple recurrió a Microsoft.

Según se informa, Apple obtuvo una licencia de ocho años para Applesoft BASIC de Microsoft por una tarifa fija de 31.000 dólares, renovándola en 1985 mediante un acuerdo que dio a Microsoft los derechos y el código fuente de la versión Macintosh de BASIC de Apple . [4] Applesoft fue diseñado para ser compatible con versiones anteriores de Integer BASIC y utiliza el núcleo de la implementación BASIC 6502 de Microsoft, que incluye el uso del comando GET para detectar pulsaciones de teclas y no requiere espacios en las líneas del programa. Si bien Applesoft BASIC es más lento que Integer BASIC, tiene muchas características de las que carece el BASIC anterior:

Por el contrario, Applesoft carece del MODoperador (resto) de Integer BASIC.

Adaptar BASIC para Apple II fue un trabajo tedioso ya que Apple recibió una lista de fuentes para Microsoft 6502 BASIC que resultó tener errores y también requirió la adición de comandos Integer BASIC. Como Apple no tenía un ensamblador 6502 a mano, el equipo de desarrollo se vio obligado a enviar el código fuente por teléfono a Call Computer, una empresa que ofrecía servicios de compilación. Este fue un proceso extremadamente tedioso y lento y después de que Call Computer perdiera el código fuente debido a un mal funcionamiento del equipo, uno de los programadores, Cliff Huston, usó su propia computadora IMSAI 8080 para ensamblar la fuente BASIC. [5]

Características

Applesoft es similar al BASIC 2.0 de Commodore, aparte de las características heredadas de Integer BASIC. Hay algunas diferencias menores, como la falta de operadores bit a bit en Applesoft; de lo contrario, la mayoría de los programas BASIC que no utilizan funciones dependientes del hardware se ejecutarán en ambos BASIC.

La instrucción PR# redirige la salida a una tarjeta de expansión y IN# redirige la entrada desde una tarjeta de expansión. El número de ranura de la tarjeta se especifica después del PR# o IN# dentro del extracto. La computadora se bloquea si no hay ninguna tarjeta en la ranura. PR#0 restaura la salida a la pantalla de 40 columnas y IN#0 al teclado.

La instrucción PR# se puede utilizar para redirigir la salida a la impresora (por ejemplo , ) donde x es el número de ranura que contiene la tarjeta del puerto de la impresora. Para enviar una lista de programas BÁSICOS a la impresora, el usuario escribe .10 PR#x:PRINT"Hello!"PR#x:LIST

El uso de PR# en una ranura con una unidad de disco (generalmente en la ranura 6) hace que Applesoft inicie la unidad de disco. Al usar PR# en una ranura con una tarjeta de 80 columnas (generalmente en la ranura 3) se cambia al modo de texto de 80 columnas.

Al igual que con Commodore BASIC, las variables numéricas se almacenan como punto flotante de 40 bits; cada variable requiere cinco bytes de memoria. El programador puede designar variables como números enteros siguiéndolas con un signo de porcentaje, en cuyo caso utilizan dos bytes y están limitadas a un rango de -32768 a 32767; sin embargo, BASIC los convierte internamente nuevamente a punto flotante al realizar cálculos, mientras que cada signo de porcentaje también requiere un byte adicional de código de programa, por lo que en la práctica esta característica solo es útil para reducir el uso de memoria de variables de matriz grandes, ya que no ofrece ningún beneficio de rendimiento. .

La función RND genera un número fraccionario pseudoaleatorio entre 0 y 1. RND(0)Devuelve el número aleatorio generado más recientemente. RND con un número negativo saltará a un punto de la secuencia determinado por el número negativo particular utilizado. RND con cualquier valor positivo genera el siguiente número en la secuencia, independientemente del valor real dado.

Al igual que otras implementaciones de Microsoft BASIC, Applesoft descarta espacios (fuera de cadenas y comentarios) en las líneas del programa. LISTagrega espacios al mostrar el código por razones de legibilidad. Dado que LIST agrega un espacio antes y después de cada palabra clave tokenizada, a menudo produce dos espacios seguidos donde uno sería suficiente para facilitar la lectura.

El mensaje predeterminado INPUTes un signo de interrogación. PRINTno agrega un espacio inicial delante de los números.

Limitaciones

A través de varios de los primeros modelos de Apple II, Applesoft BASIC no admitía el uso de letras minúsculas en programas, excepto en cadenas. PRINTes un comando válido pero printproduce Printun error de sintaxis.

Applesoft carece de varios comandos y funciones comunes a la mayoría de los intérpretes BASIC de Microsoft que no son 6502, como por ejemplo:

Applesoft no tiene comandos para el manejo de archivos o discos, excepto para guardar y cargar programas mediante cinta de casete. El sistema operativo de disco Apple II, conocido simplemente como DOS, amplía el lenguaje para proporcionar dichas capacidades.

Sólo las dos primeras letras de los nombres de las variables son significativas. Por ejemplo, "LOW" y "LOSS" se tratan como la misma variable y al intentar asignar un valor a "LOSS" se sobrescribe cualquier valor asignado a "LOW". Un programador también debe evitar letras consecutivas que sean comandos u operaciones de Applesoft. Se interpreta que el nombre "SCORE" de una variable contiene el OR operador booleano , representado como SC OR E. "BACKGROUND" contiene GRel comando para invocar el modo de gráficos de baja resolución y genera un error de sintaxis.

Sonido y gráficos

El único soporte de sonido es la opción de un carácter de campanaPRINT ASCII para hacer sonar el pitido de alerta del sistema y un comando para hacer clic en el altavoz. El lenguaje no es lo suficientemente rápido como para producir más que un zumbido de barítono a partir de clics repetidos. Sin embargo, los programas pueden almacenar una rutina en lenguaje de máquina para generar tonos musicales electrónicos que abarquen varias octavas.PEEK

Applesoft admite el dibujo en los modos de baja y alta resolución del Apple II. Hay comandos para trazar píxeles y dibujar líneas horizontales y verticales en baja resolución. La alta resolución permite líneas arbitrarias y tablas de formas basadas en vectores para dibujar objetos escalados y rotados. La única disposición para mezclar texto y gráficos son las cuatro líneas de texto en la parte inferior de una pantalla gráfica.

A partir del Apple IIe , estuvo disponible un modo de "doble alta resolución" en máquinas con 128k de memoria. Este modo esencialmente duplica la resolución del modo de alta resolución original, pero incluye los 16 colores de la paleta de baja resolución. Applesoft no proporciona soporte directo para este modo. Los modos específicos de Apple IIGS tampoco son compatibles.

Extensiones

Applesoft BASIC se puede ampliar de dos maneras: el comando comercial ( & ) y la función USR() . Estas son dos características que llaman a rutinas de lenguaje de máquina de bajo nivel almacenadas en la memoria, lo cual es útil para rutinas que deben ser rápidas o requieren acceso directo a funciones o datos arbitrarios en la memoria. La función USR() toma un argumento y se puede programar para derivar y devolver un valor de función calculado para usar en una expresión numérica. es efectivamente una abreviatura de CALL , con una dirección predefinida. Al llamar a rutinas en la ROM de Applesoft, es posible que las rutinas de signo comercial analicen los valores que siguen al signo comercial. Había numerosos paquetes comerciales de terceros disponibles para ampliar Applesoft utilizando rutinas comerciales.&

Insectos

Una deficiencia en la vía de captura de errores ONERRsignifica que la pila del sistema no se reinicia si una rutina de manejo de errores no invoca RESUME, lo que podría provocar un bloqueo. [6] La función incorporada del generador de números pseudoaleatorios RNDes capaz de producir una serie predecible de resultados debido a la forma en que se inicia el generador cuando se enciende por primera vez. Este comportamiento es contrario a cómo la documentación de Apple describe la función. [7]

Actuación

Wozniak originalmente se refirió a su Integer BASIC como "Juego BASIC" (habiéndolo escrito para poder implementar un clon de Breakout para su nueva computadora). [2] Pocos juegos de acción se escribieron en Applesoft BASIC, en gran parte porque el uso de números de punto flotante para todas las operaciones matemáticas degrada el rendimiento.

Los programas Applesoft BASIC se almacenan como una lista enlazada de líneas; a GOTOo GOSUBtoma tiempo lineal . Algunos programas tienen las subrutinas en la parte superior para reducir el tiempo de llamada.

A diferencia de Integer BASIC, Applesoft no convierte números literales (como 100) en el código fuente a binarios cuando se ingresa una línea. Más bien, la cadena ASCII se convierte cada vez que se ejecuta la línea. Dado que la búsqueda de variables suele ser más rápida que esta conversión, puede ser más rápido almacenar las constantes numéricas utilizadas dentro de los bucles en variables antes de ingresar al bucle.

Código de muestra

¡Hola Mundo! , con vídeo inverso y carácter de campana , ejecutar y luego listado

¡Hola Mundo! en Applesoft BASIC se puede ingresar de la siguiente manera:

10 TEXTO : INICIO 20 ? "HOLA MUNDO"

Se pueden incluir varios comandos en la misma línea de código si están separados por dos puntos ( :). Se ?puede utilizar en Applesoft BASIC (y en casi todas las versiones de Microsoft BASIC) como acceso directo para "IMPRIMIR", aunque deletrear la palabra no sólo es aceptable sino canónico: Applesoft convirtió "?" en los programas ingresados ​​con el mismo token que "IMPRIMIR" (por lo tanto, no se guarda memoria usando "?"), por lo que aparece como "IMPRIMIR" cuando se enumera un programa. El programa anterior aparece en un LISTcomando como:

10 TEXTO : INICIO 20 IMPRIMIR "HOLA MUNDO"     

Cuando Applesoft II BASIC se lanzó inicialmente a mediados de 1978, venía en cinta de casete y podía cargarse en la memoria a través del monitor de lenguaje de máquina del Apple II. Cuando el Apple II+ mejorado reemplazó al II original en 1979, Applesoft ahora se incluía en la ROM y se iniciaba automáticamente al encenderse si no había un disquete de arranque presente. Por el contrario, Integer BASIC ahora se eliminó de la ROM y se convirtió en un archivo ejecutable en el disco DOS 3.3.

Evolución temprana

El Applesoft original, almacenado en RAM como se documenta en su Manual de referencia de noviembre de 1977, tiene un código de intérprete más pequeño que el posterior Applesoft II, ocupando 8½ KB de memoria, [8] en lugar de los 10 KB utilizados por el posterior Applesoft II. En consecuencia, carece de una serie de funciones de comando desarrolladas para la versión principal posterior:

así como varios que tendría la versión posterior, que ya estaban presentes en el Integer BASIC de Apple:

Además, sus comandos de gráficos de baja resolución tienen nombres diferentes a los de sus homólogos de Integer BASIC/Applesoft II. Todos los nombres de comandos tienen el formato PLTx, de modo que GR, COLOR=, PLOT, HLIN y VLIN se denominan PLTG, PLTC, PLTP, PLTH y PLTV, respectivamente. El comando para volver al modo texto, conocido como TEXT en otras versiones, es simplemente TEX y conlleva la condición de que debe ser la última declaración en una línea de programa.

Applesoft BASIC 1.x estaba más cerca del código BASIC 6502 original de Microsoft que el posterior Applesoft II; ¿Conservó el tamaño de la memoria? apareció y mostró un aviso de copyright de Microsoft. Para mantener la coherencia con Integer BASIC, el mensaje "Ok" del código de Microsoft fue reemplazado por un carácter ]. Applesoft 1.x también pregunta al usuario al cargar si desea deshabilitar la instrucción REM y la palabra clave LET en las instrucciones de asignación a cambio de comandos de gráficos tradicionales.

La función USR() también se define de manera diferente y sirve como sustituto del comando CALL ausente. Su argumento no es para pasar un valor numérico a la rutina en lenguaje de máquina, sino que es la dirección de llamada de la rutina misma; no hay ningún "gancho" para predefinir la dirección. Todos los ejemplos del manual utilizan la función sólo para acceder a las rutinas de "ROM del monitor del sistema", o rutinas cortas de usuario para manipular las rutinas de la ROM. No se hace mención de ningún código para calcular el valor devuelto por la propia función; la función siempre se muestra asignada a variables "ficticias", que, sin acción para establecer un valor mediante código de usuario, simplemente reciben un valor sin sentido que se les devuelve. Incluso las rutinas ROM a las que se accede que devuelven valores (en ejemplos, aquellas que proporcionan el servicio de funciones PDL() y SCRN()) simplemente tienen sus valores almacenados, por rutinas de usuario, en ubicaciones que se examinan por separado en una declaración posterior.

A diferencia de Integer BASIC y Applesoft II, los operadores booleanos AND, OR y NOT realizan operaciones bit a bit en valores enteros de 16 bits. Si se les dan valores fuera de ese rango, se produce un error.

Los términos OUT y PLT (y el mencionado IN) aparecen en la lista de palabras reservadas, pero no se explican en ninguna parte del manual.

BÁSICOS relacionados

Coleco afirmó que el SmartBASIC de su computadora doméstica Adam era compatible con el código fuente de Applesoft. [9]

Microsoft licenció un BASIC compatible con Applesoft a VTech para su clon Laser 128 . [10]

Ver también

Referencias

  1. ^ Manual del usuario de TASC (el compilador AppleSoft). Bellevue, WA: Productos de consumo de Microsoft. 1981.
  2. ^ ab Wozniak, Steve (1 de mayo de 2014). "Cómo Steve Wozniak escribió BASIC para la Apple original desde cero". Gizmodo . Consultado el 2 de mayo de 2014 .
  3. ^ McCracken, Harry (16 de abril de 2012). "Apple II Forever: un tributo del 35º aniversario al primer producto icónico de Apple". Tiempo . ISSN  0040-781X . Consultado el 21 de junio de 2019 .
  4. ^ Herzfeld, Andy (12 de febrero de 2014). "MacBasic: la triste historia de MacBasic". Folklore.org .
  5. ^ "Capítulo 16: Idiomas". Historia de la Apple II . Julio de 2010 . Consultado el 6 de julio de 2016 .
  6. ^ Manual de referencia del programador BASIC de Applesoft (solo para IIe). Apple Computer, Inc. 1982. pág. 70.
  7. ^ Aldridge, James W. (julio de 1987). "Precauciones con respecto a la generación de números aleatorios en Apple II". Métodos, instrumentos y computadoras de investigación del comportamiento . 19 (4): 397–99. doi : 10.3758/BF03202585 . S2CID  62633043.
  8. ^ Manual de referencia del lenguaje básico de coma flotante de precisión extendida de Applesoft. Apple Computer, Inc. noviembre de 1977.
  9. ^ Coleco presenta el sistema informático Adam. 3 de mayo de 2016 [28 de septiembre de 1983]. El evento ocurre a las 31:55. Archivado desde el original el 22 de noviembre de 2021, a través de YouTube. Todo aquel que conozca Applesoft BASIC conocerá también a Adam SmartBASIC. Todos los mismos comandos, todos los mismos controles para este BÁSICO, este intérprete, están disponibles. De hecho, vamos a mostrarles un programa que utiliza comandos gráficos de Applesoft... ejecutados a través de Adam. ... En lo que a nosotros respecta, cuando estamos en BASIC, y no estamos PEEKing o POKEing... cualquier cosa por debajo del intérprete BASIC, somos compatibles con el código fuente.
  10. ^ Grevstad, Eric (diciembre de 1986). "Laser 128 / Un compatible asequible". enSidra . pag. 58 . Consultado el 24 de abril de 2017 .

Este artículo incluye texto de Everything2, con licencia GFDL.

enlaces externos