Инструменты пользователя

Инструменты сайта


msx:basic_compiler:basic_compiler

BASIC Compiler

Microsoft BASIC Compiler — это компилятор языка Бейсик из состава пакета Microsoft BASIC-80, для систем на базе Z80 и i8080, работающих под управлением CP/M. В этот пакет также входят варианты интерпретаторов BASIC (BASIC 8, BASIC Ext, BASIC Disk). Но они, на сегодня, не представляют практического интереса в контексте MSX, так как встроенный интерпретатор MSX-BASIC предоставляет гораздо более мощные средства, и гораздо лучше адаптирован именно к возможностям машин стандарта MSX. А, например, runtime-компилятор Бейсика X-BASIC — по производительности — сравним с BASIC Compiler, а порой и превосходит его, не говоря уж о, вышеупомянутых, интерпретаторах.

BASIC Compiler же нам интересен именно тем, что позволяет генерировать независимый исполняемый COM-файл (standalone executable), не требующий ни расширений ПЗУ−Бейсика (как в случае с X-BASIC), ни предварительной резидентной загрузки Бейсика из файлов (как в случае с NestorBASIC). Требуется лишь MSX-DOS.

Скачать Microsoft BASIC Compiler 5.30 можно здесь, линковщик Link-80 взять с образа диска, находящегосяздесь. Доступна также классическая коллекция игр на Бейсике от CREATIVE COMPUTING, изначально собранных и опубликованных в издании 1973 года "101 BASIC Computer Games" .

Итак, после того, как Вы распаковали архив с Бейсиком на диск MSX, и туда же поместили линковщик L80.COM — нужно загрузиться в MSX−DOS. Затем, имея подготовленный пример программы на Бейсике EXAMPLE.BAS в ASCII-формате (чтобы из MSX-BASIC-а сохранить программу в виде ASCII текста, нужно подать команду SAVE«EXAMPLE.BAS»,A), загрузить BASCOM. Появится приглашение в виде звездочки. Синтаксис команд подобен таковому ассемблера M80 — то есть, в данном примере, можно ввести:

*EXAMPLE=EXAMPLE.BAS/C/Z

В результате программа на Бейсике EXAMPLE.BAS будет транслирована в объектный код с именем файла EXAMPLE.REL и осуществлен возврат в операционную систему. Ключ /Z означает, что будет генерироваться машинный код для Z80, а не i8080. Ключ /C означает, что будет допустим текст программы на Бейсике без нумерации строк.

После этого потребуется слинковать полученный объектный код. Для этого запустим линковщик L80. В появившемся приглашении наберём:

*EXAMPLE,EXAMPLE/N/E

В результате чего Link-80 слинкует объектный файл EXAMPLE.REL с библиотекой BASLIB.REL, и создаст исполняемый файл EXAMPLE.COM, требующий для своей работы файл BRUN.COM — так называемый рантайм-модуль. Преймуществом такого варианта компиляции является меньший размер результирующего исполняемого COM-файла. Безусловным недостатком — необходимость комплектовать исполняемый файл рантайм-модулем. Вдобавок, время запуска программы с рантайм-модулем — заметно больше, чем в standalone варианте.

Поэтому нас особенно интересует именно вариант компиляции standalone COM-файла. Для этого к параметрам BASCOM добавляется опция /O, например:

>BASCOM EXAMPLE=EXAMPLE.BAS/O/C/Z

Далее, полученный в результате объектный код будет слинкован Link-80 уже не с библиотекой BASLIB.REL, а с библиотекой OBSLIB.REL, что приведет к генерации standalone исполняемого файла. Что нам и требуется.

Потренироваться в использовании компилятора BASCOM можно в WebMSX. Только учитывайте, что различных диалектов Бейсика существовало очень много уже тогда — в конце 70-х. И, например, в игре STARTREK.BAS использован синтаксис BASIC-80 v4, допускающий запись без пробелов, и строго требующий нумерации строк. Поэтому, для компиляции этой программы нужно добавить ключ /4 и убрать ключ /C.

>BASCOM STARTREK=STARTREK.BAS/O/4/Z

Ссылки

msx/basic_compiler/basic_compiler.txt · Последние изменения: 2023-04-27 23:02 — ATroubleshooter