Para aquellos que tuvieron la suerte de escribir su primer programa BASIC a finales de los ochenta, el volumen del intérprete de 16 kilobytes parece bastante natural. Este no siempre fue el caso, los intérpretes con un volumen de 8 y 4 kilobytes son conocidos, por supuesto, con un conjunto de funciones más modesto. Pero esta vez, al parecer, se hizo lo imposible: el intérprete está comprimido hasta 722 bytes. Esto es inferior a 768, lo que significa que se puede colocar no en cuatro, sino en tres chips ROM de 256 bytes. Sí, hubo algunos!
Y 768 bytes es, por cierto, 21, (3) veces menor que 16384.
El intérprete está escrito para el procesador impopular 8008 entre los retrocomputadores. Para él, ya hay un intérprete BÁSICO - SCELBAL, pero es de 8 kilobytes. El sistema de instrucciones 8008 se asemeja al sistema de instrucciones 8080 sin la mitad de las instrucciones. O el sistema de comando Z80 sin el 90% de las instrucciones.
La primera versión del intérprete, en la que ya había las palabras GOTO, INPUT, PRINT, así como un método estándar para editar intérpretes BASIC, se proporcionó, tomó 570 bytes. Luego, la lista de palabras se expandió a lo siguiente: FETCH, GOTO, IF, LET, NEW, OUT, PRINT, STOP, VIEW y XECUTE.
Algunos de ellos te parecerán extraños. Y es que este intérprete reconoce palabras por la primera letra. Por lo tanto, INPUT tuvo que convertirse en FETCH, LIST en VIEW y RUN en XECUTE. Pero GOSUB y RETURN no deberían preverse en absoluto, entonces tendríamos que ir más allá del volumen planeado.
El autor comprende a los usuarios de la computadora portátil MCM / 70, también ejecutada en 8008, equipada con un reproductor de cassette doble y programada en lenguaje APL con sus comandos de una letra.
El proyecto junto con el emulador está disponible
aquí bajo la licencia MIT. El autor no tiene hierro real en 8008. También puede descargar la
fuente del
ensamblador y el
resultado de la compilación con comentarios por separado.
La forma más fácil de construir un proyecto completo con GitHub es usar NETBEANS 8.2, también necesitará SDL2. Para ensamblar un
ensamblador, se requiere
un macro ensamblador
AS .