Здесь показаны различия между двумя версиями данной страницы.
msx:basic_programming_guide:start [2020-09-26 20:03] |
msx:basic_programming_guide:start [2022-09-09 23:21] (текущий) |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ====== 📖 Пособие по программированию на MSX BASIC ====== | + | ~~HIDEPAGE:search;sitemap~~ |
- | + | ~~REDIRECT>msx:basic_dialogue_programming_language:~~ | |
- | К сожалению оригинальное название книги не известно, её рабочее название **Пособие по программированию на MSX BASIC** (MSX BASIC Programming Guide). | + | |
- | + | ||
- | Книга написана в КГПИ (Куйбышевский государственный педагогический институт), примерно в 1988–1990 годах, файлы книги были подготовлены в редакторе [[msx:tor|TOR]]. | + | |
- | + | ||
- | В данный момент текст книги находится в процессе [[converting|преобразования]]. | + | |
- | + | ||
- | Примеры: | + | |
- | * Для запуска примеров программ в [[webmsx:webmsx|WebMSX]] используйте ссылку на пример, перед которой находится значок {{:webmsx:webmsx.png|Запуск примера в WebMSX}}, | + | |
- | * Для работы с примерами можно использовать [[openmsx:openmsx]], | + | |
- | * [[examples|Список всех примеров]]. | + | |
- | + | ||
- | ====== Содержание ====== | + | |
- | + | ||
- | <WRAP group 99%> | + | |
- | <WRAP half column> \\ </WRAP> | + | |
- | <WRAP half column><WRAP justify> | + | |
- | …И указывают тысячами пальцев | + | |
- | тысячи дорожек для скитальцев. | + | |
- | <WRAP rightalign> | + | |
- | —//Г.Лорка// | + | |
- | </WRAP></WRAP> | + | |
- | </WRAP></WRAP> | + | |
- | + | ||
- | * [[00#Предисловие]] | + | |
- | * [[00#Введение]] | + | |
- | * **[[01|Глава I. Основные объекты MSX BASIC]]** | + | |
- | * [[01#I.1. Алфавит]] | + | |
- | * [[01#I.2. Константы. Одинарная и двойная точность]] | + | |
- | * [[01#I.3. Переменные]] | + | |
- | * [[01#I.4. Понятие оператора. Оператор DEF]] | + | |
- | * [[01#I.5. Массивы переменных. Оператор ERASE]] | + | |
- | * [[01#I.6. Имена, значения и типы]] | + | |
- | * [[01#I.7. Операции]] | + | |
- | * [[01#I.7.1. Арифметические операции]] | + | |
- | * [[01#I.7.2. Операции отношения. Логические операции]] | + | |
- | * [[01#I.7.3. Строковые операции]] | + | |
- | * [[01#I.7.4. Операции–функции]] | + | |
- | * [[01#I.7.5. Функция RND. Псевдопеременная TIME]] | + | |
- | * [[01#I.8. Выражения]] | + | |
- | * [[01#I.8.1. Арифметические и строковые выражения]] | + | |
- | * [[01#I.8.2. Логические выражения]] | + | |
- | * [[01#I.9. Дополнение]] | + | |
- | * //[[01#Диск с примерами]]// | + | |
- | * **[[02|Глава II. Программирование линейных алгоритмов]]** | + | |
- | * [[02#II.1. Режимы работы]] | + | |
- | * [[02#II.2. Интерпретаторы и компиляторы]] | + | |
- | * [[02#II.3. Оформление и редактирование программ]] | + | |
- | * [[02#II.3.1. Команда AUTO. Команда RENUM]] | + | |
- | * [[02#II.3.2. Команда DELETE. Команда [L]LIST]] | + | |
- | * [[02#II.4 Линейные программы]] | + | |
- | * [[02#II.4.1. Оператор присваивания LET]] | + | |
- | * [[02#II.4.2. Оператор SWAP]] | + | |
- | * [[02#II.4.3. Оператор комментария REM ]] | + | |
- | * [[02#II.4.4. Оператор вывода данных PRINT в простейшем случае]] | + | |
- | * [[02#II.4.5. Операторы ввода данных DATA и READ. Оператор RESTORE]] | + | |
- | * [[02#II.4.6. Оператор вывода PRINT в общем случае]] | + | |
- | * [[02#II.4.7. Оператор ввода данных INPUT]] | + | |
- | * [[02#II.4.8. Оператор LINEINPUT]] | + | |
- | * [[02#II.4.9. Операторы END и STOP. Команда CONT]] | + | |
- | * //[[02#Диск с примерами]]// | + | |
- | * **[[03|Глава III. Программирование разветвляющихся и циклических алгоритмов]]** | + | |
- | * [[03#III.1. Оператор безусловной передачи управления GOTO]] | + | |
- | * [[03#III.2. Оператор условной передачи управления IF]] | + | |
- | * [[03#III.3. Оператор ON GOTO]] | + | |
- | * [[03#III.4. Программирование циклов]] | + | |
- | * [[03#III.5. Примеры]] | + | |
- | * //[[03#Диск с примерами]]// | + | |
- | * **[[04|Глава IV. Функции и подпрограммы]]** | + | |
- | * [[04#IV.1 Встроенные функции преобразования]] | + | |
- | * [[04#IV.1.1. LEN–функция]] | + | |
- | * [[04#IV.1.2. INSTR–функция]] | + | |
- | * [[04#IV.1.3. VAL–функция]] | + | |
- | * [[04#IV.1.4. STR$–функция]] | + | |
- | * [[04#IV.1.5. ASC–функция]] | + | |
- | * [[04#IV.1.6. CHR$–функция]] | + | |
- | * [[04#IV.1.7. BIN$–функция]] | + | |
- | * [[04#IV.1.8. OCT$–функция]] | + | |
- | * [[04#IV.1.9. HEX$–функция]] | + | |
- | * [[04#IV.2. Встроенные строковые функции]] | + | |
- | * [[04#IV.2.1. MID$–функция]] | + | |
- | * [[04#IV.2.2. LEFT$–функция]] | + | |
- | * [[04#IV.2.3. RIGHT$–функция]] | + | |
- | * [[04#IV.2.4. STRING$–функция]] | + | |
- | * [[04#IV.2.5. SPACE$–функция]] | + | |
- | * [[04#IV.2.6. Примеры]] | + | |
- | * [[04#IV.3. Функции пользователя. Оператор DEF FN]] | + | |
- | * [[04#IV.4. Подпрограммы]] | + | |
- | * [[04#IV.4.1. Примеры]] | + | |
- | * [[04#IV.5. Оператор ON GOSUB]] | + | |
- | * [[04#IV.6. Дополнение 1 [77] ]] | + | |
- | * [[04#IV.7. Дополнение 2 [90] ]] | + | |
- | * //[[04#Диск с примерами]]// | + | |
- | * **[[05|Глава V. Графические средства MSX BASIC]]** | + | |
- | * [[05#V.1. Оператор SCREEN в простейшем случае (для компьютера MSX 1)]] | + | |
- | * [[05#V.2. Оператор WIDTH. Операторы KEY OFF и KEY ON]] | + | |
- | * [[05#V.3. Управление текстовым курсором]] | + | |
- | * [[05#V.3.1. Оператор LOCATE.Функция CSRLIN. Функции POS(α) и LPOS(α)]] | + | |
- | * [[05#V.4. Базовые графические операторы MSX BASIC]] | + | |
- | * [[05#V.4.1. Оператор COLOR для компьютера MSX 1]] | + | |
- | * [[05#V.4.2. Оператор COLOR для компьютера MSX 2]] | + | |
- | * [[05#V.4.3. Оператор CLS]] | + | |
- | * [[05#V.4.4. Оператор PSET. Оператор PRESET]] | + | |
- | * [[05#V.4.5. Оператор LINE]] | + | |
- | * [[05#V.4.6. Оператор CIRCLE]] | + | |
- | * [[05#V.4.7. Функция POINT. Оператор PAINT]] | + | |
- | * [[05#V.4.8. Вывод рисунков на принтер]] | + | |
- | * [[05#V.5. Графический макроязык GML]] | + | |
- | * [[05#V.6. Спрайты]] | + | |
- | * [[05#V.6.1. Формирование значения спрайта]] | + | |
- | * [[05#V.6.2. Вывод спрайта на экран]] | + | |
- | * [[05#V.6.3. Столкновение спрайтов]] | + | |
- | * [[05#V.7. Оператор SCREEN в общем случае]] | + | |
- | * [[05#V.8. Понятие файла [5]. Вывод текстовой информации на графические экраны]] | + | |
- | * [[05#V.9. Режим SCREEN 4 (только для компьютера MSX 2)]] | + | |
- | * [[05#colorsprites|Цветные спрайты]] | + | |
- | * [[05#V.10. Режим SCREEN 5 (только для компьютера MSX 2)]] | + | |
- | * [[05#V.11. Режим SCREEN 6 (только для компьютера MSX 2)]] | + | |
- | * [[05#V.12. Режим SCREEN 7 (только для компьютера MSX 2 с видеопамятью 128 Кбайт)]] | + | |
- | * [[05#V.13. Режим SCREEN 8 (только для компьютера MSX 2 с видеопамятью 128 Кбайт)]] | + | |
- | * [[05#V.14. Дополнение]] | + | |
- | * //[[05#Диски с примерами]]// | + | |
- | * **[[06#Глава VI. Музыкальные средства MSX BASIC]]** | + | |
- | * [[06#VI.1. Описание команд MML]] | + | |
- | * [[06#VI.2. Оператор PLAY. Функция PLAY. Оператор BEEP]] | + | |
- | * [[06#VI.3. Оператор SOUND]] | + | |
- | * [[06#VI.4. Примеры музыкальных программ]] | + | |
- | * //[[06#Диск с примерами]]// | + | |
- | * **[[07|Глава VII. Дополнительные возможности языка MSX BASIC]]** | + | |
- | * [[07#VII.1. Работа с клавиатурой]] | + | |
- | * [[07#VII.1.1. Нестандартный ввод с клавиатуры]] | + | |
- | * [[07#VII.1.2. Функциональные клавиши]] | + | |
- | * [[07#VII.1.3. Джойстик]] | + | |
- | * [[07#VII.2. Переход к подпрограмме по событию]] | + | |
- | * [[07#VII.2.1. Переход по ключу]] | + | |
- | * [[07#VII.2.2. Переход по временному интервалу]] | + | |
- | * [[07#VII.2.3. Переход по нажатию клавиш "CTRL"+"STOP"]] | + | |
- | * [[07#VII.2.4. Переход по джойстику]] | + | |
- | * [[07#VII.2.5. Особенности одновременной обработки событий различных типов]] | + | |
- | * [[07#VII.3. Инициализация в языке MSX BASIC]] | + | |
- | * [[07#VII.4. Работа с принтером]] | + | |
- | * [[07#VII.4.1. Команды для управления типом печати]] | + | |
- | * [[07#VII.4.2. Управление вертикальной позицией печатающей головки]] | + | |
- | * [[07#VII.4.3. Управление горизонтальной позицией печатающей головки]] | + | |
- | * [[07#VII.4.4. Команды управления графикой]] | + | |
- | * [[07#VII.4.5. Использование макрокоманд]] | + | |
- | * [[07#VII.4.6. Другие полезные команды]] | + | |
- | * //[[07#Диск с примерами]]// | + | |
- | * **[[08|Глава VIII. Некоторые вопросы методологии отладки программ]]** | + | |
- | * [[08#VIII.1. Ошибки при программировании]] | + | |
- | * [[08#VIII.2. Некоторые классические приёмы тестирования программ]] | + | |
- | * [[08#VIII.2.1. Ручная проверка]] | + | |
- | * [[08#VIII.2.2. Ручная прокрутка. Методические указания по её проведению]] | + | |
- | * [[08#VIII.2.3. Метод контрольных тестов]] | + | |
- | * [[08#VIII.3. Методы локализации ошибок]] | + | |
- | * [[08#VIII.3.1. Трассировка]] | + | |
- | * [[08#VIII.3.2. Аварийная печать]] | + | |
- | * [[08#VIII.3.3. Локализация с точками останова]] | + | |
- | * [[08#VIII.3.4. Программная обработка ошибок]] | + | |
- | * [[08#VIII.3.5. Некоторые причины, осложняющие поиск ошибок [57]]] | + | |
- | * [[08#VIII.4. Принципы исправления и анализа допущенных ошибок]] | + | |
- | * [[08#VIII.5. Основные понятия структурного программирования]] | + | |
- | * [[08#VIII.5.1. Модульность программ [49]]] | + | |
- | * [[08#VIII.5.2. Строение программ [49]]] | + | |
- | * [[08#VIII.5.3. Структурное программирование]] | + | |
- | * [[08#VIII.6. О стиле программирования [57]]] | + | |
- | * [[08#VIII.7. Недостатки языка программирования BASIC [59]]] | + | |
- | * [[08#VIII.8. Сравнительная характеристика языков программирования]] | + | |
- | * //[[08#Диск с примерами]]// | + | |
- | * **[[09|Глава IX. Файловые средства MSX BASIC]]** | + | |
- | * [[09#IX.1. Работа с файлами на дискетах]] | + | |
- | * [[09#IX.1.1. Форматирование дискеты]] | + | |
- | * [[09#IX.1.2. Имена файлов]] | + | |
- | * [[09#IX.1.3. Справочная информация о файлах]] | + | |
- | * [[09#IX.1.4. Операторы NAME, COPY и KILL]] | + | |
- | * [[09#IX.1.5. Операторы LOAD, SAVE, RUN и MERGE]] | + | |
- | * [[09#IX.2. Файлы данных прямого доступа]] | + | |
- | * [[09#IX.2.1. Контрольные буферы файлов]] | + | |
- | * [[09#IX.2.2. Операторы OPEN и CLOSE]] | + | |
- | * [[09#IX.2.3. Оператор FIELD]] | + | |
- | * [[09#IX.2.4. Операторы LSET и RSET]] | + | |
- | * [[09#IX.2.5. Функции MKI$(), MKS$(),MKD$(), CVI(), CVS(), CVD()]] | + | |
- | * [[09#IX.2.6. Операторы PUT и GET]] | + | |
- | * [[09#IX.3. Файлы данных последовательного доступа]] | + | |
- | * [[09#IX.3.1. Оператор MAXFILES=, OPEN и CLOSE]] | + | |
- | * [[09#IX.3.2. Операторы PRINT#, PRINT#n, USING. Функции LOF() и LOC()]] | + | |
- | * [[09#IX.3.3. Операторы INPUT, LINE INPUT#n. Функции INPUT$ и EOF]] | + | |
- | * [[09#IX.3.4. Примеры]] | + | |
- | * [[09#IX.3.5. Вывод файлов данных на экран и принтер]] | + | |
- | * [[09#IX.4. Использование RAM–диска (только для компьютеров MSX 2)]] | + | |
- | * [[09#IX.5. Файлы на магнитной ленте]] | + | |
- | * [[09#IX.5.1. Работа с программными файлами]] | + | |
- | * [[09#IX.5.2. Работа с файлами данных]] | + | |
- | * [[09#IX.6. Дополнение]] | + | |
- | * //[[09#Диск с примерами]]// | + | |
- | * **[[10|Глава X. Управление ресурсами памяти]]** | + | |
- | * [[10#X.1. Карта памяти (для компьютеров MSX 1)]] | + | |
- | * [[10#X.2. Функция PEEK и оператор POKE]] | + | |
- | * [[10#X.3. Таблица программных команд (PIT)]] | + | |
- | * [[10#X.4. Таблица переменных (VT)]] | + | |
- | * [[10#X.4.1. Хранение простых переменных]] | + | |
- | * [[10#X.4.2. Хранение элементов числовых массивов]] | + | |
- | * [[10#X.5. Стек]] | + | |
- | * [[10#X.6. Хранение строковых величин]] | + | |
- | * [[10#X.7. Оператор CLEAR]] | + | |
- | * [[10#X.8. Функция FRE]] | + | |
- | * [[10#X.9. Рабочая область]] | + | |
- | * [[10#X.9.1. Матрица клавиатуры]] | + | |
- | * [[10#X.9.2. Динамическая клавиатура [46]]] | + | |
- | * [[10#X.10. Порты ввода–вывода]] | + | |
- | * [[10#X.10.1. Программируемый периферийный интерфейс (PPI)]] | + | |
- | * [[10#X.10.2. Программируемый звуковой генератор (PSG)]] | + | |
- | * [[10#X.10.3. Другие порты. Оператор WAIT]] | + | |
- | * //[[10#Диск с примерами]]// | + | |
- | * **[[11|Глава XI. Работа с видеопамятью и видеопроцессором]]** | + | |
- | * [[11#XI.1. Видеопамять]] | + | |
- | * [[11#XI.1.1. Псевдопеременная BASE]] | + | |
- | * [[11#XI.1.2. Функция VPEEK. Оператор VPOKE]] | + | |
- | * [[11#XI.1.3. Текстовые режимы]] | + | |
- | * [[11#XI.1.4. Режимы SCREEN 2 и SCREEN 4]] | + | |
- | * [[11#XI.1.5. Режим SCREEN 3]] | + | |
- | * [[11#XI.1.6. Режимы SCREEN 5, SCREEN 6, SCREEN 7 и SCREEN 8 (для компьютеров MSX 2)]] | + | |
- | * [[11#XI.1.7. Таблица палитр (для компьютеров MSX 2)]] | + | |
- | * [[11#XI.1.8. Спрайты]] | + | |
- | * [[11#XI.1.9. Слоты видеопамяти]] | + | |
- | * [[11#XI.1.10. Порты, отвечающие за работу с видеопамятью]] | + | |
- | * [[11#XI.2. Работа с видеопроцессором]] | + | |
- | * [[11#XI.2.1. Регистры установки режима]] | + | |
- | * [[11#XI.2.2. Регистры базовых адресов]] | + | |
- | * [[11#XI.2.3. Регистры цветов]] | + | |
- | * [[11#XI.2.4. Регистры управления экраном]] | + | |
- | * [[11#XI.2.5. Некоторые регистры доступа]] | + | |
- | * [[11#XI.2.6. Доступ к видеопамяти]] | + | |
- | * [[11#XI.2.7. Регистры статуса]] | + | |
- | * [[11#XI.3. Нестандартные режимы видеопроцессора]] | + | |
- | * [[11#XI.3.1. Режим SCREEN 4 на компьютерах MSX 1]] | + | |
- | * [[11#XI.3.2. Текстово–графические режимы]] | + | |
- | * //[[11#Диск с примерами]]// | + | |
- | * **[[12|Глава XII. Примеры решения задач повышенной трудности]]** | + | |
- | * [[12#XII.1. Задачи]] | + | |
- | * //[[12#Диск с примерами]]// | + | |
- | * [[12#XII.2. Задачи для самостоятельного решения]] | + | |
- | * **[[13|Глава XIII. Программисты шутят]]** | + | |
- | * [[13#XIII.1. Проза]] | + | |
- | * [[13#XIII.2. Поэзия]] | + | |
- | * [[13#XIII.3. Словари]] | + | |
- | * **Приложение 1. MSX BASIC и машинный язык** | + | |
- | * [[110|1.10. Коды команд микропроцессора Z80]] | + | |
- | * [[111|1.11. Мнемоника команд микропроцессоров Intel 8080 и Z80]] | + | |
- | * **Приложение 2. Справочный материал** {{anchor:200}} | + | |
- | * [[201|2.1. Список служебных слов]] | + | |
- | * [[202|2.2. Внутренние коды служебных слов]] | + | |
- | * [[203|2.3. Описание действия управляющих клавиш при работе в экранном редакторе системы MSX BASIC]] | + | |
- | * [[204|2.4. Таблица кодов ASCII]] | + | |
- | * [[205|2.5. Сообщения об ошибках в системе MSX BASIC]] | + | |
- | * [[211|2.11. Комплекс упражнений для профилактики зрительного утомления [28] ]] | + | |
- | * [[222|2.12. Комплекс физических упражнений для снятия утомления [28] ]] | + | |
- | + | ||
- | * //**[[bibliography|Список литературы]]**// | + | |
- | + | ||
- | {{anchor:missing}} | + | |
- | ====== Список отсутствующего материала ====== | + | |
- | + | ||
- | <hidden Список отсутствующего материала> | + | |
- | * [[05#V.6.2. Вывод спрайта на экран]] | + | |
- | - отсутствуют примеры с 4 по 11 | + | |
- | - рисунки с 1 по 4 | + | |
- | + | ||
- | * **Приложение 1. MSX BASIC и машинный язык** | + | |
- | * 1.1. Связь программы на MSX BASIC с подпрограммами в машинных кодах | + | |
- | * 1.1.1. Примеры | + | |
- | * 1.2. Использование подпрограмм BIOS | + | |
- | * 1.2.1. Подпрограммы BIOS без параметров | + | |
- | * 1.2.2. Подпрограммы BIOS, требующие параметры | + | |
- | * 1.2.3. Подпрограммы BIOS, возвращающие параметры | + | |
- | * 1.2.4. Примеры | + | |
- | * 1.3. Работа с подпрограммами BDOS | + | |
- | * 1.4. Использование ловушек | + | |
- | * 1.5. Работа с двоичными файлами | + | |
- | * 1.6. Реализация вещественной арифметики на машинном языке | + | |
- | * 1.7. Программирование звуковых эффектов | + | |
- | * 1.7.1. Фоновое музыкальное сопровождение | + | |
- | * 1.8. Возможность расширения программного обеспечения на MSX–компьютерах | + | |
- | * 1.8.1. Подробная карта памяти | + | |
- | * 1.8.2. Работа со слотами | + | |
- | * 1.8.3. Создание новых операторов | + | |
- | * 1.9. Примеры использования входных точек системы BDOS | + | |
- | * **Приложение 2. Справочный материал** | + | |
- | * 2.6. Рабочая область | + | |
- | * 2.7. Структура видеопамяти | + | |
- | * 2.8. Команды видеопроцессора | + | |
- | * 2.9. Работа с "мышью" и световым пером | + | |
- | * 2.10. Регистры статуса и регистры команд | + | |
- | * Список литературы. | + | |
- | * Предметный указатель. | + | |
- | + | ||
- | </hidden> | + | |
- | + | ||
- | ====== Ссылки ====== | + | |
- | + | ||
- | Отправной точкой был архив **%%MSX%% Programmer Ref (ru).rar** ([[https://mirrors.pdp-11.ru/_msx/books/MSX%20Programmer%20Ref%20(ru).rar|ссылка 1]], [[http://msx2.org/MSX%20Books/RU/MSX%20Programmer%20Ref%20(ru).rar|ссылка 2]]). | + | |
- | + | ||
- | Выражаем огромную благодарность тем, кто помог найти файлы: | + | |
- | * {{bas3_1.zip|Оригинал файла BAS3_1.MET: глава III (разделы 1,2)}}. Нормальный файл найден благодаря пользователю **caro** на форуме [[msxorg>node/56902#comment-356500|msx.org]] | + | |
- | * {{bas11.zip|Файлы BAS11-1.MET, BAS11-2.MET, BAS11-3.MET: глава (разделы XI. XI.2,XI.1.3,XI.1.4)}}. Файлы найден благодаря пользователю **АIеks** на форуме [[msxorg>node/56902#comment-356616|msx.org]] | + | |
- | * {{bas.zip|Полный архив книги}}. Получен благодаря пользователю **АIеks** на форуме [[msxorg>node/56902#comment-356654|msx.org]] | + | |
- | + | ||
- | + | ||
- | {{tag>Topic MSX Programming Book_msxbpg on_github}} | + |