====== MSX-Logo ====== FIXME {{:msx:msx-logo:msx_logo_cartridge_label.jpg?350|}} \\ [[https://ia801002.us.archive.org/27/items/MSXLOGOPhilips/MSX_LOGO_cartridge_label.jpg|оригинал]] Реализация язык программирования [[logo_programming_language:logo_programming_language|Logo]] для MSX. {{msx-logo_english.rom|MSX Logo (English)}} ====== Константы ====== |<100% 30% 70%>| |end|самостоятельное значение end| |false|значение «ложь»| |true|значение «истина»| ====== Функции ====== ===== Редактирование ===== |<100% 30% 70%>| |ed str|смотри [[#edit]]| |{{anchor:edit}} edit str|редактирует функцию| |edns|открывает редактор, по выходу выполняет все команды| |er str|смотри [[#erase]]| |erall|стирает все функции пользователя| |{{anchor:erase}} erase str|стирает функцию пользователя| |es n:int|открывает редактор изображения черепашки (монохромной картинки 16×16 пикселей) под номером n| |po [str]|выводит на экран определения функций с именами из массива| |poall|выводит на экран все определения функций и значения переменных| |pods|выводит на экран вызванные ранее on.touch и when?| |pofile str|выводит на экран содержимое файла с заданным именем?| |pons|выводит на экран все значения переменных| |pops|выводит на экран все определения функций| |pots|выводит на экран имена всех определённых пользователем функций| |pps|выводит все данные, запомненные через pprop, если для имени существует больше одной пары значений, пары будут выведены в разных строках| |to str|открывает редактор для редактирования функции| |version|выводит версию logo на экран| ===== Управление ===== |<100% 30% 70%>| |copydef src:str dst:str|создаёт функцию dst как копию функции src| |define name:str [args:[str] body:[commands]]|определяет функцию name с параметрами args и телом body, в args не нужно писать двоеточие перед именами параметров, в commands — нужно| |each [commands]|выполняет команды| |ern str|стирает переменную| |if cond:bool [commands1] [commands2]|если условие верно, выполнит commands1, иначе commands2 если есть| |make name:str val:?|создаёт переменную name со значением val| |name name:str val:?|как make?| |op ?|может быть output?| |output val:?|возможно, преждевременный выход из функции, возвращая val| |repeat r:int [команды]|выполняет команды r раз| |rerandom|меняет seed?| |run []|выполняет аргумент как команды| |stop|преждевременно выходит из функции, не возвращая значения| |when n:int [команды]|выполняет команды каждую секунду для n=0 или при каждом набранном с клавиатуры символе при n=1, смотри также pods| ===== Проверки ===== |<100% 30% 70%>| |definedp name:str|возвращает истину, если функция name определена| |listp ?|возвращает истину, если параметр — массив, для чисел и строк возвращает ложь| |namep name:str|вернёт истину, если переменная определена| |numberp ?|вернёт истину, если аргумент — число| |shownp|возвращает истину ?| |wordp ?|возвращает «ложь» для массивов| ===== Логические ===== |<100% 30% 70%>| |and bool bool|возвращает логическое и| |equalp ? ?|вернёт истину, если значения равны| |not bool|вернёт противоположное значение| |or bool bool|возвращает логическое или| ===== Математические ===== |<100% 30% 70%>| |arctan float|возвращает арктангенс в градусах| |cos float|возвращает косинус от угла, заданного в градусах| |diff float float|возвращает разницу двух чисел| |distance [float float]|возвращает длину вектора| |int float|округляет в сторону нуля| |minus float|возвращает число с противоположным знаком| |product ? ?|возвращает произведение двух чисел| |quotient float float|делит первый аргумент на второй| |random v:int|возвращает случайное число в интервале 0<=число| |ascii char|возвращает код символа| |char int|возвращает символ по его коду| |word ? ?|склеивает два аргумента в строку| ===== Массивы ===== |<100% 30% 70%>| |all|возвращает последовательность целых чисел 0…29| |bf|смотри butfirst| |blсмотри butlast| |butfirst []|возвращает массив без первого элемента или строку без первого символа| |butlast []|возвращает массив без последнего элемента или строку без последнего символа| |count []|возвращает длину массива| |emptyp []|вернёт истину, если массив пуст| |first []|возвращает первый элемент массива| |fput val:? arr:[]|возвращает массив, полученный добавлением val в начало arr| |item int []|возвращает элемент массива по индексу, нумерация с 1| |last []|возвращает последний элемент массива| |list ? ?|создаёт и возвращает массив из двух значений| |lput val:? arr:[]|возвращает массив, полученный добавлением val в конец arr| |se|смотри sentence?| |sentence|как list?| |space|возвращает массив из двух чисел (?)| ===== Свойства ===== |<100% 30% 70%>| |erprops|?| |erps|?| |gprop ? ?|?| |plist name:str|возвращает массив запомненных функцией pprop значений| |pprop name:str key:? val:?|запоминает пару key:val под именем name, добавляя к имеющимся данным| |remprop name:str key:str|удаляет пару для имени name с ключом key| ===== Экран ===== |<100% 30% 70%>| |back dist:float|двигает черепашку назад на dist пикселей| |bg|возвращает текущий цвет фона| |bk|смотри back| |cg|очистить графический экран и переместить черепашку домой| |change.color|смотри change.colour| |change.colour src:int dst:int|заменяет на экране цвет src цветом dst| |clean|очищает графический экран| |color|смотри colour| |color.over|смотри colour.over| |colour|возвращает цвет изображения черепашки| |colour.over|возвращает цвет под черепашкой| |cs|очищает текстовый и графический экраны| |ct|очищает текстовый экран| |cursor|возвращает массив из двух элементов, номер колонки и номер строки текстового курсора| |dot [float float]|рисует или стирает выбранным пером точку в координатах относительно центра экрана, оси вправо вверх| |fd float|смотри forward| |forward dist:float|перемещает черепашку вперёд на dist пикселей| |getsh n:int|возвращает изображение черепашки номер n в виде массива из 32 байт| |heading|возвращает направление черепашки в градусах| |home|возвращает черепашку домой и направляет её вверх| |ht|прячет черепашку| |left ang:float|поворачивает черепашку против часовой стрелки на ang градусов| |lt float|смотри left| |pc|возвращает цвет пера| |pd|смотри pendown| |pe|резинка вместо пера| |pendown|опустить перо, рисовать| |penup|поднять перо, черепашка не рисует и не стирает| |pos|возвращает координаты черепашки относительно центра экрана как массив из двух чисел, оси направлены вправо и вверх| |pr ?|смотри print| |print ?|выводит аргумент на экран| |pu|смотри penup| |px|перо, совмещённое с резинкой: если на пути черепашки есть рисунок, он будет стёрт, иначе — нарисован| |right ang:float|поворачивает черепашку по часовой стрелке на ang градусов| |rt|смотри right| |setbg int|устанавливает цвет фона| |setc int|устанавливает цвет изображения черепашки| |setcursor [x:int y:int]|устанавливает текстовый курсор в колонку x и строку y| |seth ang:float|поворачивает черепашку в заданном направлении, смотри также heading| |setpc int|устанавливает цвет пера, смотри также pc| |setpos [x:float y:float]|устанавливает координаты черепашки относительно центра экрана, оси направлены вправо и вверх| |setscr int?|?| |setsh int|выбирает изображение черепашки, смотри также shape| |setsp float|устанавливает скорость черепашки, она начинает двигаться в фоновом режиме |settext int|устанавливает, с какой строки начинается текстовый экран: чем число больше, тем меньше строк текста поместится| |setx float|устанавливает горизонтальную координату черепашки| |setxvel float|устанавливает горизонтальную составляющую скорости черепашки| |sety float|устанавливает вертикальную координату черепашки| |setyvel float|устанавливает вертикальную составляющую скорости черепашки| |shape|возвращает номер выбранного для черепашки изображения| |show ?|как pr?| |snap|?| |speed|возвращает числовое значение скорости черепашки, смотри также setsp| |type ?|выводит аргумент на экран без перевода строки| |window|?| |wrap|?| |xcor|возвращает горизонтальную координату черепашки| |xvel|возвращает горизонтальную составляющую скорости черепашки| |ycor|возвращает вертикальную координату черепашки| |yvel|возвращает вертикальную составляющую скорости черепашки| ===== Ввод/вывод ===== |<100% 30% 70%>| |buttonp d:int|возвращает нажата ли кнопка A на джойстике d=1…2| |cload str|?| |csave str|?| |erf str|стирает файл?| |joy j:int|возвращает направление джойстика j=1…2, 0=нет, 1=вверх, 2=вверх-вправо, далее по часовой стрелке до 8=вверх-влево| |joyp j:int|возвращает направление джойстика j=1…2, false=нет, true=1…8| |keyp|возвращает истину, если буфер клавиатуры не пуст| |load str|?| |loadpic str|?| |noise rfreq:int vol:int len:int|воспроизводит шум c частотой, обратной rfreq=0…31, громкостью vol=0…15 и длительностью len=0…255 (похоже, в кадрах)| |noprinter|?| |printer|?| |rl|ожидает ввода строки с клавиатуры и возвращает введённое| |save str|?| |savepic str|?| |wait n:int|задержка в n кадров| ===== Неизвестные ===== |<100% 30% 70%>| |ask float? [?]|?| |copysh float? float?|?| |dir ?|?| |erds|?| |erns|?| |fill|?| |freeze|?| |on.touch float float []|?| |putsh float ?|?| |rc|recycle ?| |recycle|?| |rg|?| |scrunch|возвращает 1,1?| |shade|?| |st|?| |stamp|?| |tell [float]|?| |text ?|?| |thaw|?| |toot ? ? ? ?|?| |toplevel|?| |towards ?|?| |who|возвращает 0?| ====== Ссылки ====== https://archive.org/details/MSXLOGOPhilips {{tag>MSX Programming Logo_prog}}