Rev 1404 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download
NedoOSМногозадачная операционная система для ZX SpectrumMultitasking operating system for ZX SpectrumВозможностиCapabilities~~~~~~~~~~~* работа с дискетами TR-DOS, SD-картой, IDE HDD (FAT12/16/32). Номера устройств: "E".."H" - IDE HDD (Master), "I".."L" - IDE HDD (Slave), "M" - SD-карта (Z-controller), "N" - SD-карта (NeoGS), "O" - USB flash, "A".."D" - дискета TR-DOS. IDE-контроллер (ATM или Nemo) зависит от того, каким батником собрать. Поддержаны сегментированные файлы в TR-DOS произвольного размера (по стандарту файлов последовательного доступа TR-DOS). Длинные имена в FAT.Works with TR-DOS floppies, SD card, IDE HDD (FAT12/16/32). Device letters: "E".."H" - IDE HDD (Master), "I".."L" - IDE HDD (Slave), "M" - SD-карта (Z-controller), "N" - SD-карта (NeoGS), "O" - USB flash, "A".."D" - TR-DOS floppies. IDE controller (ATM or Nemo IDE) depends on the batch file you run. Includes support for segmented TR-DOS files of any size (according to TR-DOS sequential access files standard).* до 16 задач одновременно. Задачи могут быть активными (одна из них имеет фокус, то есть может читать устройства ввода и печатать на видимый экран терминала) и замороженными. Задачи могут отдавать свой квант времени системе с помощью YIELD, но не обязаны это делать.Up to 16 tasks at the same time. Tasks may be active (one of them has the focus, so it can read input devices and print on visible terminal screen) or frozen. Tasks may give away their times slot to system with using YIELD, but don't have to.* одновременно можно открыть до 8 файлов на FAT, до 8 файлов на TR-DOS и до 8 пайпов между задачами.May open up to 8 files on FAT, up to 8 files on TR-DOS, and up to 8 pipes between tasks at the same time.* программе пользователя доступна вся память 0x0100..0xffff, причём все 16K окна можно щёлкать через вызовы ОС (см. ниже). Файловые операции и передача данных в BDOS могут вестись по любому адресу в userspace.User program can access the whole memory 0x0100..0xffff, any 16K window can be switched via OS calls (see below). File operations and BDOS data transfer can be done at any address in userspace.* программа пользователя может заменить обработчик прерываний (например, для восстановления содержимого стека) и переставлять стек.User programs can change interrupt handler (for example, to restore stack data) and move stack pointer.* графический редактор Scratch, плейеры NedoPlayer и modplay, текстовый редактор texted, монтировщик образов дисков dmm, запускатель/переключатель снапшотов nmisvc, компилятор NedoLang, ассемблер NedoAsm, бейсик NedoBasic, просмотрщик картинок NedoView, разархиваторы *.zip, *gz, *.rar, *.tar, архиваторы *.rar и *.tar, сетевые утилиты (NedoBrowser, dmirc, dmftp, netterm и др.), игры...Gfx editor Scratch, music players NedoPlayer and modplay, text editor texted, disk image mounter dmm, snapshot runner/switcher nmisvc, compiler NedoLang, assembler NedoAsm, basic interpreter NedoBasic, picture viewer NedoView, decompressors for *.zip, *gz, *.rar, *.tar, archivers for *.rar and *.tar, network utilities (NedoBrowser, dmirc, dmftp, netterm etc.), games...Системные требованияSystem requirements~~~~~~~~~~~~~~~~~~~~* компьютер, совместимый с ATM Turbo 2 или с ATM3 (в зависимости от того, каким батником собрать)ATM Turbo 2 or ATM3 compatible computer (depends on the batch file)* рекомендуется Kempston mouseKempston mouse recommended* рекомендуется SD-карта (Z-Controller с теневыми портами или NeoGS) или HDD (NemoIDE или ATM IDE)SD card recommended (Z-Controller with shadow ports or NeoGS) or HDD (NemoIDE or ATM IDE)* рекомендуется палитра от DDp (4+4+4)DDp's palette (4+4+4) recommended* рекомендуются энергонезависимые часы по схеме Mr.Gluk'аReal-time clock (Mr.Gluk's schematics) recommended* рекомендуется сетевая плата ZXNETUSBZXNETUSB card recommended* рекомендуется General Sound или NeoGSGeneral Sound or NeoGS recommended* рекомендуется TurboSound FMTurboSound FM recommendedГорячие клавиши~~~~~~~~~~~~~~~NedoOS опрашивает клавиши и мышь и передаёт их задаче, которая в фокусе.Комбинации клавиш Ext+буква (Tab+буква) соответствуют управляющим кодам ASCII 1..26.Комбинации клавиш Ext+цифра (Tab+цифра, Caps Shift+Symbol Shift+цифра) эквивалентны F1..F10 на PS/2 клавиатуре.Параллельно проверяются горячие клавиши:Caps Shift - задерживает скролл на экранеSymbol Shift+Enter - переключение визуальных задач (то есть тех, которые вызывали CMD_SETGFX), при этом задача, на которую переключились, получает код клавиши key_redraw (узнав это, она может перерисовать экран)C+M+D (одновременно) - запустить cmd.com (опрашивается в задаче idle, поэтому работает только при отсутствии активных задач)Caps Shift+2 (Caps Lock) - переключение регистраCaps Shift+1 (`) (Alt+Shift) - переключение языка (рус/lat). В русском режиме (он также поддерживает украинский язык) действует раскладка ШВЕРТЫ. При этом часть букв вводится двумя нажатиями (ja=я, jo=ё, ju=ю, je=є, ji=ї, jy=i, cg=?, cc=ц, hh=э, jj=ъ). Из-за того, что "й", "ц", "ш", "э" работают в начале комбинаций, отдельно их ввести можно, нажав после них какую-либо клавишу, не входящую в их комбинации. Эта клавиша, нажатая после, не игнорируется, а тоже обрабатывается. В литературном тексте комбинации "йа", "йо", "йу", "йе", "чч", "хх", "йи", "йы", "йй", "цг" практически исключены (бывают в иностранных словах). Чтобы вводить такие комбинации, можно пользоваться движением курсора. Все знаки препинания, доступные в латинском режиме, доступны и в русском. Кодировка русских букв - CP866, украинских букв - CP1125 (см. setfont на ZX Evo)Ext+Enter (Tab+Enter, Caps Shift+Symbol Shift+Enter, use Tab+Right Shift+Enter on incompatible keyboards) - вкл/выкл режим ввода псевдографикиПри ошибках TR-DOS (красный бордер) работают кнопки R (Retry), I (Ignore sector), A (Abort).cmd~~~Командный интерпретатор.Имеется интерактивный режим ввода команд (командная строка) с прокруткой влево и вправо.Кнопка вверх - вспомнить предыдущую команду.Запускаются файлы следующих типов (проверяется первый символ расширения):.com (расширение можно не писать) - исполняемая программа, под неё создаётся новый параллельный процесс, ей передаётся командная строка по адресу COMMANDLINE (см. раздел "Программирование")..bat - последовательность команд, которые понимает cmd, в том числе запуск программ .com (в этом случае последовательный, а не параллельный - кроме команды start). Каждая команда показывается на экране до её исполнения.Программы, установленные в bin/ системного диска, можно запускать в командной строке из любой директории любого диска (сначала программа ищется в текущей директории, потом в системном bin/). При запуске программ текущая директория не меняется.Поддерживаются следующие команды:exit - выход из cmda: ... o: - смена текущего дискаdir (ls) - каталог текущего диска (директории). Можно выводить в файл: dir >filenamecd <path> - переход на другую директорию. <path> может содержать имя диска. Путь ".." означает переход на уровень вышеmd (mkdir) <path/dirname> - создать директорию с заданным именем в текущей или в заданной директорииdel (rm) <path/filename> - удалить файл или пустую директорию в текущей директорииcopy (cp) <path/filename> <newpath/newfilename> - копировать файлren <path/filename> <newpath/newfilename> - переименовать или переместить файлmem (free) - показать число свободных страниц памятиproc (ps) - показать текущие процессы и их состояние ("+" или "-" - активность, "g" для графических задач)drop (kill) <ID> - удалить процесс с заданным IDdate - показать текущую дату и времяrem - ничего не делает (нужно для .bat-файлов)start <path/filename> - запустить программу в фоновом режиме (по умолчанию запускаемая программа блокирует cmd)copydir <dir1> <dir2> - скопировать директорию dir1 вместе с файлами в директорию dir2 (рекурсивно). Должны быть указаны полные пути, а не относительные!pause - ждать нажатия клавиши (нужно для .bat-файлов)echo <сообщение> - вывести сообщение (нужно для .bat-файлов)type (cat) <path/filename> - вывести файлДопустимы команды типа:dir > filename.txtdir | more.commore < filename.txtПараметры .bat-файла доступны через макросы %0..%9 (%0 - имя самого файла)Системная задача idle запускает терминал term.com, который создаёт пайпы stdin и stdout и запускает командный интерпретатор для исполнения autoexec.bat. Потом idle входит в бесконечный цикл с опросом C+M+D (см. выше).При запуске командный интерпретатор смотрит свою командную строку и исполняет её. Если командная строка имеет вид "cmd.com autoexec.bat", то после выполнения autoexec.bat командный интерпретатор входит в интерактивный режим, иначе выход.Можно запустить ещё один независимый терминал командой term, или сетевой терминал (netterm), доступный по Telnet (TCP/IP port 2323).nv~~Nedovigator - двухпанельный файловый менеджер.Горячие клавиши:стрелки (вверх, вниз) - переход по файламHome (Symbol Shift+Q) - переход к первому файлуEnd (Symbol Shift+E) - переход к последнему файлуTab (Caps Shift+Symbol Shift) - переход между панелямиSpace - пометкаExt+A (Alt+A) - инверсия пометкиBackSpace (Caps Shift+0) - переход на директорию уровнем вышеEnter - запуск файла в блокирующем режиме (файлы .com и .$c запускаются непосредственно, остальные типы - с помощью внешних запускальщиков, см. ниже)Enter - исполнение командной строки в блокирующем режиме, когда nv освобождает фокус и ожидает окончания вызыванной программы (потом кнопкой 9 можно посмотреть текстовый экран, который был на момент завершения команды)Caps Shift+Enter или F9 - вставка имени файла в командную строку3 - просмотр текстовых файлов (стрелки, PageUp (Caps Shift+3), PageDown (Caps Shift+4), F1 - переключение кодировки, Ins - переключение переноса строк, Break (Esc, Caps Shift+Space) - выход, Tab (Caps Shift + Symbol Shift) - hex viewer (управление стрелками, PgUp, PgDn, ввод цифрами и a-f, Caps Shift+Enter или F2 (сохранение), Break (Esc, Caps Shift+Space) - выход), Tab (Caps Shift+Symbol Shift) - переход в просмотрщик)4 - вызов редактора texted для редактирования файла под курсором5 - копирование помеченных файлов или текущего файла на противоположную панель6 - переименование файла/директории (запрещены символы :,/,\)7 - создание директории с заданным именем в текущей панели (Esc (CS+Space) - отмена)8 - удаление помеченных файлов (или директорий, если они пустые - непустая не удалится)1 - выбор дисковода в текущей панели (стрелками, Esc (CS+Space) - отмена, Enter - подтверждение)2 - поиск файла (Tab - переключение между именем файла и подстрокой)(вместо цифр можно нажимать F1..F10 на клавиатуре PS/2)Symbol Shift+1..5 - выбор режима сортировки (по имени, расширению, размеру, дате, без сортировки). Повторное нажатие меняет порядок сортировки на противоположный, смена режима устанавливает порядок по возрастаниюBreak (Esc, Caps Shift+Space) - выход (Esc - отмена, Enter - подтверждение)Остальные клавиши используются для редактирования командной строки (цифры не вводятся при пустой командной строке).Сохраняется текстовый экран программы, запущенной из командной строки (но не программы, запущенной в другом терминале). Терминал можно прокрутить колесом мыши.В случае nvfast, который работает не через терминал, переключение между экраном программы и nv - кнопка Esc.В файле nv.ext описана ассоциация запускальщиков файлов по расширению, например:bmp,scr:scratch.combat:cmd.comtexted~~~~~~Текстовый редактор. Вызывается с параметром - именем редактируемого файла.Может редактировать файл любого размера, сколько хватит памяти.Горячие клавиши:стрелки, PageUp (Caps Shift+3), PageDown (Caps Shift+4) - движение курсораHome (Symbol Shift+Q) - переход к началу строкиEnd (Symbol Shift+E) - переход к концу строкиSymbol Shift+PageUp - переход к началу текстаSymbol Shift+PageDown - переход к концу текстаBackSpace (Caps Shift+0) - удаление символа слева от курсораDel (Caps Shift+9) - удаление символа справа от курсораBreak (Esc, Caps Shift+Space) - выходIns (Symbol Shift+W) - wrap on/offF1 - helpF2 или Caps Shift+Enter - сохранениеF9 - запустить build.bat из директории с текстомF10 - сменить кодировку (866/1251)Остальные клавиши используются для ввода символов.basic~~~~~NedoBasic - интерпретатор языка Бейсик. Можно вызвать с параметром - именем запускаемого файла *.bas.Типы данных:* целые числа (32 бита со знаком), также используются как логические значения (0=false, -1=true), также используются как индекс цикла, но для этого им выделяется больше памяти* строки (до 255 байт+нулевой терминатор), также используются как массив беззнаковых байтов* одномерные массивы целых чисел (32 бита со знаком)Имена переменных однобуквенные: i (число), a$ (строка), a(10) (10-й элемент массива, считая с 0), a$(10) (10-й символ строки, считая с нуля).В выражениях используются операции:* самый низкий приоритет: =, <, >, <=, >=, <>* средний приоритет: +, -* высокий приоритет: *, /* самый высокий приоритет: унарный -, скобки выражений ()Также имеется функция $rnd (выдаёт числа 0..65535, после названия функции надо писать пробел!)Команды (можно писать несколько в одной строке через двоеточие):run - запуск программыlist - просмотр листинга программыquit - выход из NedoBasicedit <выражение> - вызов на редактирование строки с заданным номеромclear - очистка переменныхnew - удаление программыlet <переменная>=<выражение>print <выражение>;<выражение>... (если последний символ - точка с запятой, то в конце не делается перевод строки)cls - очистка экрана чёрным цветомgoto <выражение> - переход на заданный номер строки или (если такой строки нет) на первый номер после указанногоif <выражение> then <команды> - если выражение не равно false, выполнить команды до конца строкиdim <переменная>(<выражение>) - создать массив заданного размераfor <переменная>=<выражение_начальное значение> to <выражение_конечное значение> step <выражение_шаг> - начало цикла. Шаг может быть положительным или отрицательным, но не 0next <переменная> - конец циклаrem <текст> - комментарий до конца строкиgfx 0 - включение графического режима 320x200x16 цветовgfx 6 - включение текстового режима (после выхода из программы включается автоматически)pause - ожидание нажатия клавишиplot <выражение_x>,<выражение_y>,<выражение_color> - рисование точки в графическом режимеline <выражение_x2>,<выражение_y2>,<выражение_color> - рисование линии в графическом режиме (от предыдущей точки или конца предыдущей линии)save <строка_имя файла> - сохранение программы. Имя файла может быть с путём, например, "m:/path/file.bas". Строка может быть строковой переменнойload <строка_имя файла> - загрузка программы. Имя файла может быть с путём, например, "m:/path/file.bas". Строка может быть строковой переменнойsystem <строка_команда> - запуск команды через cmd с ожиданием завершения. Строка может быть строковой переменнойПрерывание выполнения программы или просмотра листинга - по кнопке Esc (Break, CS+Space)tp~~Turbo Pascal 3.0 by Borland. Горячие клавиши написаны на экране.Может редактировать, компилировать в память и на диск. Описание есть на английском: http://www.retroarchive.org/docs/software/turbodoc.htmlПримеры - t.pas ("Hello" в цикле), mc.pas (электронная таблица)cc, cc2, clink, c.ccc, deff.crl, deff2.crl~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~BDS C compiler by Brain Damage Software. Пример: cc.bat ex (скомпилирует ex.c, слинкует и запустит)#include <stdio.h>main(argc,argv)char **argv;{int i;printf("Hello world!\n");for (i = 1; i < argc; i++) printf("Arg #%d = %s\n",i,argv[i]);getchar();}Работать так:cc filename.c(cc2 - второй проход компилятора, запускается автоматически)Объектные файлы и библиотеки имеют расширение .crl (deff2.crl линкер подключает автоматически). Примеры библиотек - deff2a.csm, deffgfx.csm.Слинковать исполняемый файл:clink filenameclink filename deffgfx (см. cc.bat и пример ex.c)Как собрать утилиту склейки файлов (concat outfile infile1 infile2):cc concat.cclink concatmodplay~~~~~~Простейший плейер музыки в формате MOD (на General Sound).Имя файла для проигрывания передаётся параметром в командной строке.Запуск без параметров останавливает проигрывание.pkunzip~~~~~~~Распаковщик архивов в форматах *.zip и *.gz.Распаковывает весь архив, заданный в качестве параметра, в текущую директорию.tar~~~Распаковщик архивов в формате *.tar.Распаковывает весь архив, заданный в качестве параметра, в текущую директорию.Если параметр - не архив .tar, то это имя файла, из которого создастся архив (если указана директория, то она вся упакуется в архив со входящими файлами и директориями). Имя архива соответствует имени файла, с заменой расширения на .tarunrar~~~~~Распаковщик архивов в формате *.rar (2.x).Принимает имя архива в командной строке, дальше работает в интерактивном режиме.v - просмотр содержимого архиваe - распаковка нужных файлов из архиваm - ввод маски для файлов (первые символы имени файла в архиве, включая внутренний путь)zxrar~~~~~Упаковщик архивов в формате *.rar (2.x).Принимает имя файла в командной строке, создаёт и пополняет архив mynewrar.rar.browser~~~~~~~NedoBrowser - веб-браузер.Вызывается командной строкой типа:browser file://m:/girl.jpg (можно не писать file://)browser http://alonecoder.nedopc.com/ (можно не писать http:// и конечный слеш)https:// поддерживается через прокси.Внизу экрана расположена строка статуса, где отображается:- полный путь к текущему файлу- число занятых страниц- время рендера- ошибки (conn.err - ошибка соединения, load err - ошибка загрузки)Поддержаны форматы:html (пока не все тэги и только кодировки windows-1251 и UTF-8 (по умолчанию))jpeg (пока только обычная развёртка)gif (пока только обычная развёртка, поддержана анимация)png (пока только обычная развёртка)bmp (пока только обычный порядок строк, 24bit)svg (без заливки, координаты в ограниченном диапазоне)При просмотре крупных картинок действуют стрелки, Z - смена масштаба.Горячие клавиши:стрелки, PageUp (Caps Shift+3), PageDown (Caps Shift+4) - движение курсораEnter - переход по ссылкеS - сохранить текущий файл (в текущей версии имя файла download.fil, первая буква увеличивается с каждым файлом)L - скачать файл по ссылке (вызывает программу wget)5 - перезагрузить файлE - отредактировать url (действуют стрелки влево, вправо, Enter, BackSpace (Caps Shift+0))U - сменить кодировку UTF-8/windows-1251BackSpace (Caps Shift+0) - возврат по историиBreak (Esc, Caps Shift+Space) - выходwget~~~~Утилита скачки файла по HTTPS.Автоматически запускает музыку и картинки scr.dmm~~~Утилита монтирования образов TRD, SCL, FDI, TAP через Evo Service.Также может монтировать TRD образы с помошью ПЗУ xBIOS на ATM2.time~~~~Утилита обновления времени с импользованием интернета. Ключи:-H help-T set time(-T17:59:38)-D set date(-D21-06-2019)-N ntp-server default: -N2.ru.pool.ntp.org-Z time-zone default: -Z3-i get datetime from internetdmirc~~~~~IRC-клиент.dmftp~~~~~FTP-клиент.ping~~~~ping 1.2.3.4telnet~~~~~~Telnet-клиент.Можно писать порт: telnet url:1234, по умолчанию 23.3ws~~~Web-сервер для расшаривания системного диска.Описание см. 3ws.txtМожно использовать своё оформление (файлы в одноимённом подкаталоге)wizcfg~~~~~~Настройка сети для ZXNETUSB по файлу net.ini.nmisvc~~~~~~Запускатель и переключатель снапшотов (на ATM3).Запускает снапшот .SNA (48K или 128K), переданный в командной строке.Выход из снапшота в OS по кнопке NMI. Можно сохранить состояние в новый снапшот или продолжить выполнение.В это же время можно вручную переключиться на другую задачу в OS. Таким образом можно переключаться между снапшотами и системой.Также умеет запускать бейсики с TR-DOS диска.view~~~~NedoView - просмотрщик картинок.Поддерживает следующие форматы:scr (6144 и 6912)fnt (в линейном и экранном формате, 768 и 2048)img (два экрана с мерцанием)3 (редакторы AGA, 8col)888 (редактор 8col)+ или - (редактор MultiStudio)Y (упакованная 8-цветная картинка для просмотрщика ManyColor+/XColor+)plc (Laser Compact 5, BGE)mc (мультиколор)mlt (мультиколор из редактора ZX Paintbrush)mcx (мультиколор с мерцанием)grf (аппаратный мультиколор ATM/Profi)ch$ (большие картинки с атрибутами, с мерцанием и без)mg1, mg2, mg4, mg8 (редактор MultiArtist)rm (R-Mode)16c (образ памяти 32K + 32 байта палитра)hddfdisk~~~~~~~~Утилита для разметки и форматирования разделов на IDE.term~~~~Терминал для программ, использующих stdio.asm.Передаёт ANSI-коды (VT-100+) с событиями мыши.Прокрутка колёсиком мыши.Клик мышкой в левом верхнем углу - сохранение текст терминала файл в pasta.txt.Клик мышкой в левом нижнем углу - вставка 80 символов из файла pasta.txt.netterm~~~~~~~Сетевой терминал (Telnet-сервер по порту 2323) для программ, использующих stdio.asmTelnet-клиент (на примере Putty) должен быть настроен так:- VT-100- Local echo off- Local line editing off- Backspace = Control Hpt~~Pro Tracker 3.x с увеличенным окном и с поддержкой жёсткого диска и General Sound (см. описание в отдельном файле)playtap~~~~~~~Плейер файлов .tap. Играемый файл должен называться tilt.tap.Программирование (подробнее см. api_base.txt)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Программы пользователя компилируются с заголовочным файлом ../_sdk/sys_h.asm, который включает файл sysdefs.asm с константами.Программы грузятся и запускаются с PROGSTART (0x0100), с командной строкой в COMMANDLINE (0x0080) длиной COMMANDLINE_sz (0x0080). Крайне рекомендуется использовать эти константы, а не числа (то же касается кодов клавиш, номеров вызовов и т.п.).Стек изначально растёт сверху из 0x0000, его можно переставлять вручную в любое место выше 0x3b00.Файловые операции и передача данных в BDOS могут вестись по любому адресу в userspace.Не рекомендуется читать порты клавиатуры вручную, используйте OS_GETKEYMATRIX - она возвращает нажатые клавиши только той задаче, которая сейчас в фокусе.Не рекомендуется в программах пользователя использовать зависимость от syssets.asm.Разработчики приложений используют символьные имена клавиш, определённые в sysdefs.asm в разделе "Usable key codes".В настоящий момент система не может собрать сама себя. Чтобы приблизиться к этому, будем соблюдать ряд рекомендаций при программировании на ассемблере:- не рекомендуется использовать для сборки программ внешние утилиты (*.exe), кроме ассемблера и пакета NedoLang.- рекомендуется оформлять шестнадцатеричные числа в формате 0xffff, не рекомендуется использовать двоичные числа (в крайнем случае писать в формате 0b0101).- рекомендуется арифметические выражения писать так, чтобы они выполнялись правильно даже при отсутствии приоритета операций. Если для этого требуется начать выражение со скобки, пишите перед скобкой знак +.- рекомендуется арифметические выражения писать так, чтобы они выполнялись правильно при беззнаковом умножении и делении.- не рекомендуется использовать ifn a == b, пользуйтесь if a != b.- не рекомендуется использовать ORG, кроме начального. Пользуйтесь ds addr-$.- не рекомендуется использовать DUP..EDUP, для больших блоков можно пользоваться include, а маленькие разворачивать.- не рекомендуется использовать EQU и STRUCT, пользуйтесь знаком =.- не рекомендуется использовать цифровые метки и переходы вида 1b (особенно переходы вида 1f!).- не рекомендуется писать несколько команд в строке и несколько наборов параметров у одной команды.- не рекомендуется использовать кодировку UTF8, пользуйтесь кодировкой Windows-1251 или CP866.По мере развития нативной системы сборки эти ограничения будут смягчаться.Рестарты в кернале (крайне рекомендуется использовать их через макросы, т.к. планируется освободить 0x0000 для пользователя, сделать CALLBDOS рестартом, а SETPG... вызовами для скорости):QUIT (0x0000) - закрытие текущей задачи и освобождение её памяти (предполагается также как точка останова в отладчике), hl=resultCALLBDOS (0x0005) - вызов BDOS (функции см. в см. sys_h.asm, номер функции в C). Не следует вызывать этот макрос напрямую, для каждой команды есть отдельный макрос OS_... Регистры не сохраняются!OS_GETKEY (0x0008) - читать клавишу (HA=код с языком, BC=код без языка, коды клавиш указаны в sysdefs.asm) и одновременно читать мышь (de=mouse position (y,x), l=mouse buttons (bits 0,1,2: 0=pressed)) и кемпстон-джойстик (LX), nz=программа не в фокусе, кнопки не выдаются, позицию мыши надо игнорировать (=0)OS_PRCHAR (0x0010) - печать символа A (регистры не сохраняются!)SETPG4000 (0x0018) - включить страницу A в 0x4000 (портит регистр BC). Номер страницы сохраняется в (CURPG16K)SETPG8000 (0x0020) - включить страницу A в 0x8000 (портит регистр BC). Номер страницы сохраняется в (CURPG32KLOW)SETPGC000 (0x0028) - включить страницу A в 0xc000 (портит регистр BC). Номер страницы сохраняется в (CURPG32KHIGH)(страницу в 0x0000 переключать через OS_SETMAINPAGE, при этом в странице должен быть керналь!)0x0030 - планируется far call0x0038 - обработчик прерыванийФункции BDOS:см. sys_h.asmВход в стандартный обработчик прерываний выглядит так:push afpush bcpush deКак перехватывать обработчик прерываний в вашей программе:- замените 3 байта по адресу 0x0038 на jp <адрес вашего обработчика>, а адрес intjp возьмите из 0x0038+3 и скопируйте к себе.Например:swapimer ;первый вызов включит ваш обработчик, второй вызов вернёт обратно стандартный обработчикdild hl,(0x0038+3) ;адрес intjpld (intjpaddr),hlld de,0x0038ld hl,oldimerld bc,3swapimer0ld a,(de)ldi ;[oldimer] -> [0x0038]dec hlld (hl),a ;[0x0038] -> [oldimer]inc hljp pe,swapimer0eiretoldimerjp on_int ;заменится на код из 0x0038jp 0x0038+3- ваш обработчик прерываний должен вызывать oldimer.Например:on_intex de,hl ;de="hl", hl="de"ex (sp),hl ;hl=адрес выхода, de="hl", в стеке "de"ld (on_int_jp),hlld (on_int_sp),SPld sp,INTSTACK ;чтобы не запортить стекpush afpush bcpush de ;"hl"...call oldimer ;ei...pop de ;"hl"pop bcpop afon_int_sp=$+1ld sp,0;de="hl", в стеке "de"pop de;eion_int_jp=$+1jp 0- не пользуйтесь YIELD, пользуйтесь вместо него HALT. Иначе прерывание уйдёт в другую задачу, а там другой обработчик прерываний.- функции NedoOS (кроме переключения страниц) вызывайте либо в обработчике прерываний, либо непосредственно после HALT.- если вы просто устанавливаете свой проигрыватель музыки, используйте OS_SETMUSIC, при этом можно игнорировать предыдущие два пункта (музыка будет работать всё равно).Разработчики~~~~~~~~~~~~Руководитель проекта, код, документирование - Быстров Дмитрий Михайлович (Alone Coder/Conscience).Работа с сетью, патчи в дисковую подсистему, утилиты, тестирование - DimkaM.Немного кода и документирования - Гривин Николай Александрович.NedoBasic написан с участием Кирилла Ловягина в рамках обучения ассемблеру.Дальнейшее развитие NedoBasic и Nedovigator, скрипты сборки под Linux, утилиты - demige.Сортировка файлов, фиксы скриптов сборки под Linux, утилита aynet_psg, фикс sjasm и UnrealSpeccy - Lord Vader.Утилиты rdtrd, wrtrd - Konstantin Kosarev.Игра ZX Battle City - Slip, музыка - nq, тестирование - Videogames Sematary, портирование - Alone Coder.Портирование игры Eric and the Floaters - Rasmer, раскраска - Alone Coder, Sashapont.Портирование игры Black Raven - Alone Coder, раскраска - Alone Coder, Sashapont, Котик, Louisa.Логотипы - Louisa, Sashapont, Wizard.Дисковая подсистема основана на библиотеке FatFS с драйверами от Savelij13 и DimkaM и на библиотеке iofast из комплекта NedoLang.Операционная система была задумана в 2007 году, тогда же была написана (но не проверена) первая версия ядра. Основная часть кода ядра, cmd и nv написана в 2018 году в рамках проекта графического редактора Scratch.Лицензия~~~~~~~~Разрешается свободное распространение программы и её исходного кода. Нельзя портировать на другие платформы (полностью или частично) без согласования с руководителем проекта.Настройка системы~~~~~~~~~~~~~~~~~Использование часов по схеме Mr.Gluk'а на АТМ2 проверено в UnrealSpeccy 0.37.1.Образы дисков (чисто для примера, там нужны только bmp'шки, образ HDD можно расковырять через WinImage, а образ SD-карты замаунтить в новых виндовсах, главное не забыть потом размаунтить):http://alonecoder.nedopc.com/sd.ziphttp://alonecoder.nedopc.com/hdd.zipУстановка системы на реальный HDD:1. Запустить mkatm2.bat (или mkatm3.bat для ATM3).2. С помощью nv скопировать все файлы с полученного *.trd в e:/bin/.3. Запустить mkatm2hd.bat (или mkatm3hd.bat для ATM3), скопировать полученный *.$c на драйв 1.После этого можно запускать систему (*.$c) с HDD.Установка системы на реальную SD-карту: пцшным копировщиком скопировать каталог bin/ и нужный $c на SD-карту.Настройки для эмулятора UnrealSpeccy:[ZC] ; Z-Controller settings; sdcard imageSDCARD="sd.vhd"[HDD]Scheme=NEMO-DIVIDE (для АТМ3 версии) или ATM (для ATM2 версии)Image0=hdd.imaCHS0=609/16/63 ; max size, accessible through CHS. not used for real driveLBA0=614400 ; max size, accessible through LBA. not used for real driveHD0RO=0 ; read only flagCD0=0 ; 1 if image is cdromeVHDattach.bat (можно примонтировать и по клику на *.vhd):d:cd zx\us035\@echo offif exist VHDattach.txt (@echo onecho VHDattach.txt exist@echo off) else (@echo onecho create VHDattach.txt@echo offecho select vdisk file="%cd%\sd.vhd" > VHDattach.txtecho attach vdisk >> VHDattach.txtrem echo select vdisk file="%cd%\sd.vhd" >> VHDattach.txtrem echo select part 1 >> VHDattach.txtrem echo assign letter=K >> VHDattach.txt)if exist sd.vhd (@echo onecho sd.vhd attachdiskpart /s VHDattach.txt@echo off) else (@echo onecho create VHDcreate.txt@echo offecho create vdisk file="%cd%\sd.vhd" MAXIMUM=300 TYPE=FIXED > VHDcreate.txtecho select vdisk file="%cd%\sd.vhd" >> VHDcreate.txtecho attach vdisk >> VHDcreate.txtecho create part primary >> VHDcreate.txtecho select part 1 >> VHDcreate.txtecho format label="ZX" quick fs=FAT32 >> VHDcreate.txtecho assign >> VHDcreate.txt@echo ondiskpart /s VHDcreate.txtdel VHDcreate.txt@echo off)@echo onpauseeVHDdetach.bat:d:cd zx\us035\@echo offif exist VHDdetach.txt (@echo onecho VHDdetach.txt exist@echo off) else (@echo onecho create VHDdetach.txt@echo offecho select vdisk file="%cd%\sd.vhd" > VHDdetach.txtecho detach vdisk >> VHDdetach.txt)@echo ondiskpart /s VHDdetach.txtpauseВ Windows 10 можно использовать монтирование и размонтирование по правой кнопке.