О г л а в л е н и е ...И указывают тысячами пальцев тысячи дорожек для скитальцев. Г.Лорка П р е д и с л о в и е р е д а к т о р а ........................ 3 О т а в т о р о в .............................................. 4 В в е д е н и е .................................................. 6 Г Л А В А I. ОСНОВНЫЕ ОБъЕКТЫ MSX-BASIC I.1. Алфавит ..................................................... 8 I.2. Константы. Одинарная и двойная точность ..................... 9 I.3. Переменные .................................................. 12 I.4. Понятие оператора. Оператор DEF ............................. 14 I.5. Массивы переменных. Оператор ERASE .......................... 15 I.6. Имена, значения и типы ...................................... 17 I.7. Операции .................................................... 19 I.7.1. Арифметические операции ................................ 19 I.7.2. Операции отношения. Логические операции ................ 20 I.7.3. Строковые операции ..................................... 22 I.7.4. Операции-функции ....................................... 23 I.7.5. Функция RND. Псевдопеременная TIME ..................... 26 I.8. Выражения ................................................... 30 I.8.1. Арифметические и строковые выражения ................... 31 I.8.2. Логические выражения ................................... 31 I.9. Дополнение .................................................. 33 Г Л А В А II. ПРОГРАММИРОВАНИЕ ЛИНЕЙНЫХ АЛГОРИТМОВ II.1. Режимы работы .............................................. 34 II.2. Интерпретаторы и компиляторы ............................... 37 II.3. Оформление и редактирование программ ....................... 38 II.3.1. Команда AUTO. Команда RENUM ........................... 40 II.3.2. Команда DELETE. Команда [L]LIST ....................... 41 II.4 Линейные программы .......................................... 42 II.4.1. Оператор присваивания LET ............................. 42 II.4.2. Оператор SWAP ......................................... 45 II.4.3. Оператор комментария REM .............................. 45 II.4.4. Оператор вывода данных PRINT в простейшем случае ...... 47 II.4.5. Операторы ввода данных DATA и READ. Оператор RESTORE .. 50 II.4.6. Оператор вывода PRINT в общем случае .................. 52 II.4.7. Оператор ввода данных INPUT............................ 57 II.4.8. Оператор LINEINPUT .................................... 59 II.4.9. Операторы END и STOP. Команда CONT .................... 61 Г Л А В А III. ПРОГРАММИРОВАНИЕ РАЗВЕТВЛЯЮЩИХСЯ И ЦИКЛИЧЕСКИХ АЛГОРИТМОВ III.1. Оператор безусловной передачи управления GOTO ............. 62 III.2. Оператор условной передачи управления IF .................. 63 III.3. Оператор ON GOTO .......................................... 70 III.4. Программирование циклов ................................... 73 III.5. Примеры ................................................... 85 Г Л А В А IV. ФУНКЦИИ И ПОДПРОГРАММЫ IV.1. Встроенные функции преобразования .......................... 98 IV.1.1. LEN-функция ........................................... 98 IV.1.2. INSTR-функция ......................................... 99 IV.1.3. VAL-функция ........................................... 100 IV.1.4. STR$-функция .......................................... 101 IV.1.5. ASC-функция ........................................... 103 IV.1.6. CHR$-функция .......................................... 103 IV.1.7. BIN$-функция .......................................... 104 IV.1.8. OCT$-функция .......................................... 106 IV.1.9. HEX$-функция .......................................... 106 IV.2. Встроенные строковые функции ............................... 108 IV.2.1. MID$-функция .......................................... 108 IV.2.2. LEFT$-функция ......................................... 112 IV.2.3. RIGHT$-функция ........................................ 112 IV.2.4. STRING$-функция ....................................... 114 IV.2.5. SPACE$-функция ........................................ 115 IV.2.6. Примеры ............................................... 115 IV.3. Функции пользователя. Оператор DEF FN ...................... 120 IV.4. Подпрограммы ............................................... 123 IV.5. Оператор ON GOSUB .......................................... 134 IV.6. Дополнение 1 [77] .......................................... 136 IV.7. Дополнение 2 [90] .......................................... 137 Г Л А В А V. ГРАФИЧЕСКИЕ СРЕДСТВА MSX-BASIC V.1. Оператор SCREEN в простейшем случае (для компьютера MSX-1) .. 138 V.2. Оператор WIDTH. Операторы KEY OFF и KEY ON .................. 139 V.3. Управление текстовым курсором ............................... 140 V.4. Базовые графические операторы MSX-BASIC ..................... 142 V.4.1. Оператор COLOR для компьютера MSX-1 .................... 142 V.4.2. Оператор COLOR для компьютера MSX-2 .................... 144 V.4.3. Оператор CLS ........................................... 145 V.4.4. Оператор PSET. Оператор PRESET ......................... 145 V.4.5. Оператор LINE .......................................... 147 V.4.6. Оператор CIRCLE ........................................ 151 V.4.7. Функция POINT. Оператор PAINT .......................... 154 V.4.8. Вывод рисунков на принтер .............................. 156 V.5. Графический макроязык GML ................................... 162 V.6. Спрайты ..................................................... 166 V.6.1. Формирование значения спрайта .......................... 168 V.6.2. Вывод спрайта на экран ................................. 169 V.6.3. Столкновение спрайтов .................................. 177 V.7. Оператор SCREEN в общем случае .............................. 180 V.8. Понятие файла [5]. Вывод текстовой информации на графические экраны .......................................... 181 V.9. Режим SCREEN 4 (только для компьютера MSX-2) ............... 185 V.10. Режим SCREEN 5 (только для компьютера MSX-2) ............... 188 V.11. Режим SCREEN 6 (только для компьютера MSX-2) ............... 199 V.12. Режим SCREEN 7 (только для компьютера MSX-2 с видеопамятью 128 Кбайтов) ................................ 199 V.13. Режим SCREEN 8 (только для компьютера MSX-2 с видеопамятью 128 Кбайтов) ................................ 200 V.14. Дополнение ................................................. 201 Г Л А В А VI. МУЗЫКАЛЬНЫЕ СРЕДСТВА MSX-BASIC VI.1. Описание команд MML ........................................ 205 VI.2. Oператор PLAY. Функция PLAY. Оператор BEEP ................. 210 VI.3. Оператор SOUND ............................................. 215 VI.4. Примеры музыкальных программ ............................... 222 Г Л А В А VII. ДОПОЛНИТЕЛЬНЫЕ ВОЗМОЖНОСТИ ЯЗЫКА MSX-BASIC VII.1. Работа с клавиатурой ...................................... 228 VII.1.1. Нестандартный ввод с клавиатуры ...................... 228 VII.1.2. Функциональные клавиши ............................... 230 VII.1.3. Джойстик ............................................. 231 VII.2. Переход к подпрограмме по событию ......................... 237 VII.2.1. Переход по ключу ..................................... 239 VII.2.2. Переход по временному интервалу ...................... 240 VII.2.3. Переход по нажатии клавиш "CTRL"+"STOP" .............. 241 VII.2.4. Переход по джойстику ................................. 242 VII.2.5. Одновременная обработка событий различных типов ...... 244 VII.3. Инициализация в языке MSX-BASIC ........................... 247 VII.4. Работа с принтером ........................................ 250 VII.4.1. Команды для управления типом печати .................. 250 VII.4.1.1. Управление типом шрифта ......................... 250 VII.4.1.2. Управление шагом шрифта ......................... 251 VII.4.1.3. Специальные режимы печати ....................... 252 VII.4.2. Управление вертикальной позицией печатающей головки .. 255 VII.4.3. Управление горизонтальной позицией печатающей головки. 257 VII.4.4. Команды управления графикой .......................... 260 VII.4.5. Использование макрокоманд ............................ 262 VII.4.6. Другие полезные команды .............................. 263 Г Л А В А VIII. НЕКОТОРЫЕ ВОПРОСЫ МЕТОДОЛОГИИ ОТЛАДКИ ПРОГРАММ VIII.1. Ошибки при программировании .............................. 265 VIII.2. Некоторые классические приемы тестирования программ ...... 268 VIII.2.1. Ручная проверка ..................................... 268 VIII.2.2. Ручная прокрутка. Методические указания по ее проведению .......................................... 270 VIII.2.3. Метод контрольных тестов ............................ 272 VIII.2.3.1. Стратегия тестирования ......................... 274 VIII.2.3.2. Тактика тестирования ........................... 276 VIII.2.3.3. Типы тестов .................................... 280 VIII.3. Методы локализации ошибок ................................ 282 VIII.3.1. Трассировка ......................................... 284 VIII.3.2. Аварийная печать .................................... 285 VIII.3.3. Локализация с точками останова ...................... 286 VIII.3.4. Программная обработка ошибок ........................ 288 VIII.3.5. Некоторые причины, осложняющие поиск ошибок [57] .... 292 VIII.4. Принципы исправления и анализа допущенных ошибок ......... 294 VIII.5. Основные понятия структурного программирования ........... 296 VIII.5.1. Модульность программ [49] ........................... 296 VIII.5.2. Строение программ [49] .............................. 297 VIII.5.3. Структурное программирование ........................ 298 VIII.6. О стиле программирования [57] ............................ 307 VIII.7. Недостатки языка программирования BASIC [59] ............. 311 VIII.8. Сравнительная характеристика языков программирования ..... 313 Г Л А В А IX. ФАЙЛОВЫЕ СРЕДСТВА MSX-BASIC IX.1. Работа с файлами на дискетах ............................... 316 IX.1.1. Форматирование дискеты ................................ 317 IX.1.2. Имена файлов .......................................... 318 IX.1.3. Справочная информация о файлах ........................ 320 IX.1.4. Операторы NAME, COPY и KILL ........................... 321 IX.1.5. Операторы LOAD, SAVE, RUN и MERGE ..................... 322 IX.2. Файлы данных прямого доступа ............................... 324 IX.2.1. Контрольные буферы файлов ............................. 325 IX.2.2. Операторы OPEN и CLOSE ................................ 328 IX.2.3. Оператор FIELD ........................................ 329 IX.2.4. Операторы LSET и RSET ................................. 331 IX.2.5. Функции MKI$(),MKS$(),MKD$(),CVI(),CVS(),CVD() ........ 332 IX.2.6. Операторы PUT и GET ................................... 334 IX.3. Файлы данных последовательного доступа ..................... 339 IX.3.1. Операторы MAXFILES= , OPEN и CLOSE .................... 340 IX.3.2. Операторы PRINT#,PRINT#n,USING.Функции LOF() и LOC() .. 342 IX.3.3. Операторы INPUT, LINE INPUT#n. Функции INPUT$ и EOF ... 346 IX.3.4. Примеры ............................................... 351 IX.3.5. Вывод файлов данных на экран и принтер ................ 353 IX.4. Использование RAM-диска (только для компьютеров MSX-2) ..... 358 IX.5. Файлы на магнитной ленте ................................... 360 IX.5.1. Работа с программными файлами ......................... 361 IX.5.2. Работа с файлами данных ............................... 365 IX.6. Дополнение ................................................. 366 Г Л А В А X. УПРАВЛЕНИЕ РЕСУРСАМИ ПАМЯТИ MSX-КОМПЬЮТЕРОВ X.1. Карта памяти (для компьютеров MSX-1) ...................... 368 X.2. Функция PEEK и оператор POKE .............................. 370 X.3. Таблица программных команд (PIT) .......................... 371 X.4. Таблица переменных (VT) ................................... 374 X.4.1. Хранение простых переменных .......................... 375 X.4.2. Хранение элементов числовых массивов ................. 379 X.5. Стек ...................................................... 382 X.6. Хранение строковых величин ................................ 385 X.7. Оператор CLEAR ............................................ 388 X.8. Функция FRE ............................................... 389 X.9. Рабочая область ........................................... 393 X.9.1. Матрица клавиатуры ................................... 394 X.9.2. Динамическая клавиатура [46] ......................... 395 X.10. Порты ввода-вывода ....................................... 397 X.10.1. Программируемый параллельный интерфейс (PPI) ........ 399 X.10.2. Программируемый звуковой генератор (PSG) ............ 401 X.10.3. Другие порты. Оператор WAIT ......................... 402 X.11. Дополнение ............................................... 403 Г Л А В А XI. РАБОТА С ВИДЕОПАМЯТЬЮ И ВИДЕОПРОЦЕССОРОМ XI.1. Видеопамять ................................................ 405 XI.1.1. Псевдопеременная BASE ................................. 405 XI.1.2. Функция VPEEK. Оператор VPOKE ......................... 408 XI.1.3. Текстовые режимы ...................................... 410 XI.1.4. Режимы SCREEN 2 и SCREEN 4 ............................ 418 XI.1.5. Режим SCREEN 3 ........................................ 425 XI.1.6. Режимы SCREEN 5, SCREEN 6, SCREEN 7 и SCREEN 8 (для компьютеров MSX-2) ............................... 428 XI.1.7. Таблица палитр (для компьютеров MSX-2) ................ 432 XI.1.8. Спрайты ............................................... 434 XI.1.9. Слоты видеопамяти ..................................... 440 XI.1.10. Порты, отвечающие за работу с видеопамятью ........... 441 XI.2. Работа с видеопроцессором .................................. 442 XI.2.1. Регистры установки режима ............................. 444 XI.2.2. Регистры базовых адресов .............................. 448 XI.2.3. Регистры цветов ....................................... 450 XI.2.4. Регистры управления экраном ........................... 454 XI.2.5. Некоторые регистры доступа ............................ 456 XI.2.6. Доступ к видеопамяти .................................. 457 XI.2.7. Регистры статуса ...................................... 458 XI.3. Нестандартные режимы видеопроцессора ....................... 460 XI.3.1. Режим SCREEN 4 на компьютерах MSX-1 ................... 460 XI.3.2. Текстово-графические режимы ........................... 461 Г Л А В А XII. ПРИМЕРЫ РЕШЕНИЯ ЗАДАЧ ПОВЫШЕННОЙ ТРУДНОСТИ XII.1. Задачи ................................................... 467 XII.2. Задачи для самостоятельного решения ....................... 493 Г Л А В А тринадцатая. ПРОГРАММИСТЫ ШУТЯТ XIII.1. Проза .................................................... 497 XIII.2. Поэзия ................................................... 508 XIII.3. Словари .................................................. 509 ПРИЛОЖЕНИЕ 1. MSX-BASIC И МАШИННЫЙ ЯЗЫК 1.1. Связь программы на MSX-BASIC с подпрограммами в машинных кодах ............................................ 511 1.2. Использование подпрограмм BIOS .............................. 518 1.2.1. Подпрограммы BIOS без параметров ....................... 518 1.2.2. Подпрограммы BIOS, требующие параметров ................ 519 1.2.3. Подпрограммы BIOS, возвращающие параметры .............. 524 1.2.4. Примеры ................................................ 526 1.3. Работа с подпрограммами BDOS ................................ 533 1.4. Использование ловушек ....................................... 535 1.5. Работа с двоичными файлами .................................. 542 1.6. Реализация вещественной арифметики на машинном языке ........ 545 1.6.1. Пересылки .............................................. 545 1.6.2. Арифметические операции над целыми числами ............. 547 1.6.3. Арифметические операции над вещественными числами ...... 547 1.6.4. Возведение в степень ................................... 550 1.6.5. Сравнение .............................................. 550 1.6.6. Преобразование типов ................................... 551 1.6.7. Преобразование чисел для вывода на печать .............. 551 1.7. Программирование звуковых эффектов .......................... 552 1.8. Возможность расширения программного обеспечения на MSX-компьютерах ............................................ 557 1.8.1. Подробная карта памяти ................................. 557 1.8.2. Работа со слотами ...................................... 561 1.8.3. Создание новых операторов .............................. 565 1.9. Примеры использования входных точек системы BDOS ........... 569 1.10. Коды команд микропроцессора Z80 ............................ 577 1.11. Мнемоника команд микропроцессоров Intel 8080 и Z80 ......... 584 ПРИЛОЖЕНИЕ 2. СПРАВОЧНЫЙ МАТЕРИАЛ 2.1. Список служебных слов ...................................... 588 2.2. Внутренние коды служебных слов ............................. 590 2.3. Описание действия управляющих клавиш при работе в экранном редакторе системы MSX-BASIC ................................ 593 2.4. Таблица кодов ASCII ........................................ 594 2.5. Сообщения об ошибках в системе MSX-BASIC ................... 597 2.6. Рабочая область ............................................ 602 2.6.1. Таблица системных переменных ........................... 602 2.6.2. Таблица ловушек ........................................ 611 2.7. Структура видеопамяти ...................................... 614 2.8. Команды видеопроцессора [89] ............................... 622 2.8.1. Типы команд ............................................ 622 2.8.2. Состояние регистров после выполнения команд ............ 624 2.8.3. Описание команд ........................................ 626 2.8.3.1. Команда HMMC ..................................... 626 2.8.3.2. Команда YMMM ..................................... 629 2.8.3.3. Команда HMMM ..................................... 631 2.8.3.4. Команда HMMV ..................................... 633 2.8.3.5. Команда LMMC ..................................... 636 2.8.3.6. Команда LMCM ..................................... 638 2.8.3.7. Команда LMMM ..................................... 641 2.8.3.8. Команда LMMV ..................................... 644 2.8.3.9. Команда LINE ..................................... 646 2.8.3.10. Команда SRCH ..................................... 649 2.8.3.11. Команда PSET ..................................... 652 2.8.3.12. Команда POINT .................................... 654 2.8.4. Работа с "мышью" и световым пером [89] ................. 659 2.8.5. Регистры статуса и регистры команд ..................... 661 2.9. Приложение к разделу "Фоновое музыкальное сопровождение" ... 664 2.10. Использование ОЗУ таймера в компьютерах MSX-2 .............. 674 2.11. Тайны микропроцессора Z80 .................................. 678 2.10. Комплекс упражнений для профилактики зрительного утомления [28] ............................................. 680 2.11. Комплекс физических упражнений для снятия утомления [28] ... 681 Б и б л и о г р а ф и ч е с к и й с п и с о к .................. 682 О г л а в л е н и е .............................................. 686 П р е д м е т н ы й у к а з а т е л ь о п е р а т о р о в и ф у н к ц и й ................................................ 692