Cram Basic em 768 bytes


Para aqueles que tiveram a sorte de escrever seu primeiro programa BASIC no final dos anos 80, o volume de 16 kilobytes de intérpretes parece bastante natural. Nem sempre foi esse o caso, os intérpretes com um volume de 8 e 4 kilobytes são conhecidos, é claro, com um conjunto de funções mais modesto. Mas desta vez, parecia, o impossível foi feito - o intérprete está compactado em até 722 bytes. Isso é menor que 768, o que significa que pode ser colocado não em quatro, mas em três chips ROM de 256 bytes. Sim, houve alguns!

E 768 bytes são, a propósito, 21, (3) vezes menos que 16384.

O intérprete foi escrito para o processador 8008, que não é muito popular entre os retrocomputadores, pois já existe um intérprete BASIC - SCELBAL, mas tem 8 kilobytes. O sistema de instruções 8008 se assemelha ao sistema de instruções 8080 sem metade das instruções. Ou o sistema de comando Z80 sem 90% das instruções.

A primeira versão do intérprete, na qual já havia as palavras GOTO, INPUT, PRINT, bem como um método padrão para editar intérpretes BASIC, foi fornecida, levou 570 bytes. Em seguida, a lista de palavras foi expandida para o seguinte: BUSCAR, GOTO, SE, DEIXAR, NOVO, SAIR, IMPRIMIR, PARAR, VISUALIZAR e EXECUTAR.

Alguns deles parecerão estranhos para você. E o fato é que esse intérprete reconhece as palavras pela primeira letra. Portanto, INPUT teve que ser transformado em FETCH, LIST em VIEW e RUN em XECUTE. Mas o GOSUB e o RETURN não deveriam estar previstos - então teríamos que ir além do volume planejado.

O autor entende os usuários do laptop MCM / 70, também executado no 8008, equipado com um toca-fitas duplo e programado na linguagem APL com seus comandos de uma letra.

O projeto junto com o emulador está disponível aqui sob a licença MIT. O autor não tem ferro de verdade em 8008. Você também pode fazer o download da fonte do assembler e do resultado da compilação com comentários separadamente.

A maneira mais fácil de criar um projeto inteiro com o GitHub é usar o NETBEANS 8.2, você também precisará do SDL2. Para montar um montador, é necessário um montador de macro AS .

Source: https://habr.com/ru/post/pt450632/


All Articles