Cram Basic dalam 768 byte


Bagi mereka yang cukup beruntung untuk menulis program BASIC pertama mereka di akhir tahun delapan puluhan, volume penerjemah 16 kilobyte tampaknya cukup alami. Ini tidak selalu terjadi, penafsir dengan volume 8 dan 4 kilobyte diketahui, tentu saja, dengan serangkaian fungsi yang lebih sederhana. Tapi kali ini, tampaknya, hal yang mustahil dilakukan - penerjemah dikompresi hingga 722 byte. Ini kurang dari 768, yang berarti dapat ditempatkan tidak dalam empat, tetapi dalam tiga chip ROM 256-byte. Ya, ada beberapa!

Dan 768 byte, by the way, 21, (3) kali kurang dari 16384.

Juru bahasa ini ditulis untuk prosesor 8008 yang tidak populer di kalangan retrokomputer. Baginya, sudah ada juru bahasa BASIC - SCELBAL, tetapi itu adalah 8 kilobyte. Sistem instruksi 8008 menyerupai sistem instruksi 8080 tanpa setengah instruksi. Atau sistem perintah Z80 tanpa 90% instruksi.

Versi pertama penerjemah, yang sudah ada kata-kata GOTO, INPUT, PRINT, serta metode standar untuk mengedit penerjemah BASIC, disediakan, mengambil 570 byte. Kemudian daftar kata diperluas menjadi sebagai berikut: FETCH, GOTO, IF, LET, NEW, OUT, PRINT, STOP, VIEW dan XECUTE.

Beberapa dari mereka akan terasa aneh bagi Anda. Dan masalahnya adalah bahwa penerjemah ini mengenali kata-kata dengan huruf pertama. Oleh karena itu, INPUT harus diubah menjadi FETCH, LIST menjadi VIEW, dan RUN menjadi XECUTE. Tetapi GOSUB dan RETURN tidak boleh diramalkan sama sekali - maka kita harus melampaui volume yang direncanakan.

Penulis memahami pengguna komputer laptop MCM / 70, juga dieksekusi pada 8008, dilengkapi dengan pemutar kaset ganda dan diprogram dalam bahasa APL dengan perintah satu hurufnya.

Proyek bersama dengan emulator tersedia di sini di bawah lisensi MIT. Penulis tidak memiliki besi asli pada 8008. Anda juga dapat mengunduh sumber assembler dan hasil kompilasi dengan komentar secara terpisah.

Cara termudah untuk membangun seluruh proyek dengan GitHub adalah dengan menggunakan NETBEANS 8.2, Anda juga membutuhkan SDL2. Untuk merakit assembler, assembler makro AS diperlukan.

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


All Articles