Funeral
#01
12 февраля 1999 |
|
Система - обзор операционной системы NeOS.
Стандарты на функции драйверов различных типов устройств: Disk Systems (#00): #00. Identify Disk: Определение принадлежности диска данной системе. Вход: - Выход: A=0 - диск принадлежит системе A<>0 - диск не принадлежит системе #01. Set system uariables: Установка системных переменных для работы c данной системой Вход: - Выход: - #02. Open File: Открытие файла для работы (запись/чтение). Вход: IX - описатель файла Выход: A=0 - файл открыт, A<>0 - ошибка при открытии #03. Close File: Закрытие файла, дозапись еще на записанных данных. Вход: IX - описатель файла Выход: A - статус #04. Create File: Создание файла c нулевой длиной. Вход: HL - указатель на имя файла Выход: A=0 - файл создан A<>0 - файл не создан #05. Read N Bytes: Чтение последовательности байт из файла. Вход: IX - описатель файла ВС - длина последовательности HL - адрес загрузки Выход: - #0б. Write N Bytes: Запись последовательности байт в файл. Вход: IX - описатель файла ВС - длина последовательности HL - адрес записи Выход: - #07. Set Offset: Установка позиции в файле. Вход: IX - описатель файла ВС - позиция Е - способ позиционирования: 0 - от начала, 1 - прибавление к текущей Выход: A=0 - все ОК A=1 - нет такой позиции (файл короткий) #08. Delete File: Удаление файла (принимает во внимание флаг Read Only). Вход: HL - имя файла Выход: A=0 - файл удален A=1 - нет такого файла A=2 - Read-Only #09. Set File Attributes: Установка аттрибутов файла. Вход: HL - имя файла C - аттрибуты Выход: A=0 - все ОК A=1 - нет такого файла A=2 - невозможно установить аттрибуты #0A. Create Directory: Создание пoддиpектopии. Вход: HL - имя директории Выход: A=0 - все ОК A=1 - нет места в директории A=2 - невозможно создать директорию #0В. Delete Directory: Удаление пустой пoддиpектopии. Вход: HL - имя директории Выход: A=0 - все ОК A=1 - нет такой директории A=2 - невозможно удалить директорию #0C. Change directory: Установка текущей директории. Вход: HL - имя директории Выход: A=0 - все ОК A=1 - нет такой директории A=2 - невозможно поменять директорию #0D. Get File Number: Получение номера файла в каталоге по его имени. Вход: HL - имя файла Выход: A=#FF - нет такого файла, остальные значения A - номер файла #0Е. Get Catalogue Cell: Получение информации o файле по его номеру в каталоге (в формате описателя файла) Вход: C - номер файла HL - адрес, куда помещать инфо Выход: - #0F. Read N sectors: Чтение определенного числа секторов. Вход: HL - адрес загрузки В - количество секторов DE - номер начального блока C - номер сектора в блоке Выход: A=0 - все ОК A=1 - несуществующий блок A=2 - некорректный номер сектора DE - номер блока после чтения HL - адрес после чтения C - номер сектора в блоке #10. Write N sectors: Запись определенного числа секторов. Вход: HL - адрес загрузки В - количество секторов DE - номер начального блока C - номер сектора в блоке Выход: A - статус (аналогично Read sectors) DE - номер блока после записи HL - адрес после записи C - номер сектора в блоке #11. Reread FAT buffer: Обновить буфер FAT. Вход: - Выход: - Character Printing Driuers (#03): Драйвера печати на экране (32/42/51/б4 символов в строке и др.) Функции: #00. Init driuer: Nнициализация драйвера и настройка к текущему текстовому окну. Вход: A=0 - инициализация драйвера A=1 - восстановления исходного состояния Выход: ВС - размер символа в пикселах базового режима Спектрума (2Sбx192). Размер равный #FF означает, что по этой координате размер непостоянный (В - у, C - x) DE - предельные координаты по Х и по Y, доступные при текстовом окне, равном всему экрану. #01. Print character: Вход: A - код символа (#0D - CR+LF) Выход: - #02. Set coordinates: Установка координат печати в координатной системе драй- вера. Позиционирование ведется в заданное текстовое окно. Вход: DE - координаты; Выход: - Ограничения для драйверов, работающих на прерываниях: Драйвер не должен портить такие переменные как: UNICALL UNICDRV TEMPFA To есть, если вы хотите пользоваться ими, то сохраняйте их значение перед началом функции и восстанавливайте в конце. Если вы ими не пользуетесь, но ваш драйвер использует вызовы функций BIOS через рестарты, то обязательно сохраняйте те байты TEMPFA, которые использует функция. Формат драйверов и библиотек в памяти: В памяти драйвер представлен следующим образом: ┌────────┬────────┬────────────────────────────────────────────┐ │ Offset │ Length │ Description │ ├────────┼────────┼────────────────────────────────────────────┤ │ 0 │ 2 │ Номер страницы следующего драйвера │ │ 2 │ 2 │ Адрес следующего драйвера (#FFFF - конец) │ │ 4 │ 1 │ Флаговый байт драйвера (cm. ниже) │ │ 5 │ 1 │ Длина имени драйвера │ │ б │ ... │ Nmя драйвера │ │ ... │ ... │ Тело драйвера │ └────────┴────────┴────────────────────────────────────────────┘ В памяти драйвера расположены в виде цепочки. В начале каждого драйвера указан адрес следующего драйвера. Так достигается возможность подключения неограниченного числа драйверов. Если адрес следующего драйвера равен #FFFF, то текущий драйвер - последний в цепочке. Флаговый байт драйвера: bit 0 - является ли устройством блочного ввода/вывода (нет/да) bit 1 - управляет ли дисковой системой (нет/да) bit 2 - нерезидентный/резидентный bit 3 bit 4 bit 5 bit б bit 7 - флаг активности драйвера (pезеpвиpoванo для следующей версии) На вход драйверу подается в регистре C код функции. Стандартные названия драйверов: kbd.dru - клавиатура mouse.dru - мышь trdos.dru - драйвер TR-DOS isdos.dru - драйвер IS-DOS (бЧOk) msdos.dru - драйвер MS-DOS hdd.dru - винчестер ramdisk.dru - RAM-диск cmos.dru - CMOS (часы, дата и настройки системы) Стандартные названия библиотек: graph.lib - графическая библиотека neos.lib - библиотека функций NeOS Add driuer (ADDDRV): Установка нового драйвера (резидентного/нерезидентного) Вход: HL - адрес драйвера ВС - его страница Выход: - Add library (ADDLIB): Установка новой библиотеки Вход: HL - адрес библиотеки ВС - страница библиотеки Выход: - Remoue driuer (REMDRV): Удаление драйвера Вход: HL - указатель на имя (в нижней памяти) Выход: A=0 - удален успешно A=1 - драйвер не найден Remoue library (REMLIB): Удаление библиотеки Вход: HL - указатель на имя (в нижней памяти) Выход: A=0 - удалена успешно A=1 - библиотека не найдена Open driuer (OPENDRV): Поиск драйвера Вход: HL - указатель на имя (в нижней памяти) Выход: HL - адрес драйвера (#FFFF - драйвер не найден) ВС - страница драйвера DE - длина заголовка драйвера A - флаги драйвера Open libray (OPENLIB): Поиск библиотеки Вход: HL - указатель на имя библиотеки (в нижней памяти) Выход: HL - адрес библиотеки (#FFFF - библиотека не найдена) ВС - страница библиотеки DE - длина заголовка библиотеки Обязательное условие: Первые драйвер (любой) и библиотека должны находиться в нижней памяти (#0000-#BFFF)! Disk Manager section керналя. Recognize disk (DISKDET): Change Driue (CHANDR1): Find File (FINDFM1): Формат описателя файла (FD - File Descriptor): ┌──────┬──────┬──────────────────────────┐ │Offset│Length│ Назначение │ ├──────┼──────┼──────────────────────────┤ │ 0 │ 1б │ Nmя файла │ ├──────┼──────┼──────────────────────────┤ │ 1б │ 4 │ Расширение файла │ ├──────┼──────┼──────────────────────────┤ │ 20 │ 1 │ Аттрибуты файла │ │ │ │ бит 7=1 - сектор менялся │ │ │ │ бит 7=0 - сектор не ме- │ │ │ │ нялcя │ ├──────┼──────┼──────────────────────────┤ │ 21 │ 2 │ Адрес загрузки файла │ │ 23 │ 2 │ Время создания файла │ │ 25 │ 2 │ Дата создания файла │ │ 27 │ 2 │ Начальный блок файла │ │ 29 │ 4 │ Длина файла │ │ 33 │ 3 │ Nmя устройства файла │ │ 3б │ 2 │ Начальный блок его │ │ │ │ директории │ │ 38 │ 1 │ Номер файла в директории │ │ 39 │ 2 │ Адрес буфера чтения │ │ 41 │ 2 │ Текущий блок файла │ │ 43 │ 1 │ Текущий сектор в блоке │ │ 44 │ 4 │ Позиция в файле │ └──────┴──────┴──────────────────────────┘ Ntoro 48 байт. Функция Get catalogue cell выдает первые 33 байта описателя. Стандарты на имена дисковых устройств:- Floppy Driue. Дисковод - Hard Driue. Винчестер - CD Driue. Сидюк - Ram Disk. RAM-дискБазовые функции графической библиотеки (graph.lib): Замечание: при указании координат и размеров старший регистр пары является координатой/размером по Y, младший - Х. #00. Clear Screen (CLS): Очистка экрана, установка постоянных атрибутов и бордюра. Вход: C - аттрибуты В - бордюр Выход: - Nзmеняеmые регистры: HL, ВС, DE, A #01. Clear Window (CLW): Очистка изображения окна (без смены атрибутов) Вход: ВС - координаты верхнего левого угла окна DE - размеры окна Выход: - Nзmеняеmые регистры: HL, ВС, A #02. Fill Window With Attribute (FILATR): Заполнение окна атрибутом Вход: ВС - координаты верхнего левого угла окна DE - размеры окна H - аттpибут Выход: - Nзmеняеmые регистры: HL, ВС, A #03. Put Character Initializer (PUTSINI) Nнициализация и настройка символьного вывода к новому текстовому окну Вход: A=0 - инициализация вывода (установка видеорежима) A=1 - возвращение базового режима Выход: ВС - размеры символа в пикселах режима 2Sбx192. Если размер символа по какой-либо координате является непостоянным, то размер должен быть равен #FF DE - предельные координаты по Х и Y при текстовом окне размером во весь экран #04. Put Character (PUTCH): Вывод одиночного символа c учетом атрибутов. Работает в текстовом окне. Вход: C - код символа Выход: - Nзmеняеmые регистры: - #05. Put String (PUTS): Вывод строки символов. Код конца строки - #FF Работает в текстовом окне. Вход: HL - адрес строки Выход: - Nзmеняеmые регистры: HL, DE, A #0б. Messager (MESGER): Вывод строки из таблицы строк. Разделитель строк - #FF Работает в текстовом окне. Вход: HL - адрес таблицы C - номер строки (0 - самая первая строка) Выход: - Nзmеняеmые регистры: ВС, HL, DE, A #07. Print Byte-Number (PNUM8): Вывод числа в диапазоне 0-255 Работает в текстовом окне. Вход: C - число Выход: - Nзmеняеmые регистры: HL, DE, C, A #08. Print Word-Number (PNUM1б): Вывод числа в диапазоне 0-б5535 Работает в текстовом окне. Вход: HL - число Выход: - #09. Scroll Window Up (SCRLUP): Сдвиг окна вверх на знакоместо вместе c атрибутами Вход: ВС - координаты окна DE - размеры окна Выход: - Nзmеняеmые регистры: HL, ВС, DE, A #0A. Scroll Window Down (SCRLDW): Сдвиг окна вниз на знакоместо вместе c атрибутами Вход: ВС - координаты окна DE - размеры окна Выход: - Nзmеняеmые регистры: HL, ВС, DE, A #0В. Scroll Техт Window Up (SCREUP): Сдвиг текущего текстового окна вверх Вход: - Выход: - Nзmеняеmые регистры: - #0C. Scroll Техт Window Down (SCREDW): Сдвиг текущего текстового окна вниз Вход: - Выход: - #0D. Draw Styled Box (DRBOX): Рисование прямоугольной стилизованной рамки (без атрибутов) Адрес таблицы стилей - системная переменная STYLES Вход: ВС - координаты верхнего левого угла рамки DE - размеры окна L - стиль (A=0 - ПЗУ). Выход: - Nзmеняеmые регистры: HL, ВС, DE, A #0Е. Draw Window (WINDOW): Рисование окна Вход: IX - указатель на описатель окна: IX+0 - Х (7 бит=0 - не надо тени, =1 - надо тень) IX+1 - Y IX+2 - ширина IX+3 - высота IX+4 - аттpибут окна IX+5 - аттpибут тени IX+б - стиль рамки окна Выход: - Nзmеняеmые регистры: HL, ВС, DE, A Nзmеняеmые регистры: HL, DE, C, A Nзmеняеmые регистры: - #0F. Vertical Menu (VMENU): Вывод и выбор пункта вертикального меню. Координаты в текстовом окне. Вход: IX - указатель на описатель меню: IX+0 - Х IX+1 - Y IX+2 - ширина полоски выделения IX+3 - количество пунктов IX+4 - цвет невыделеннoгo пункта IX+5 - цвет выделенного пункта Е - начальный номер пункта Выход: Е - номер пункта, Е=#FF - нажат Edit (выход из меню) Nзmеняеmые регистры: HL, ВС, A #10. Put sprite (PUTSPR): Вывод спрайта (цветного/черно-белого). Вход: HL - начало спрайта DE - размеры спрайта ВС - координаты спрайта (7 бит C=0 - черно-белый спрайт, 7 бит C=1 - цветной спрайт) Выход: - Nзmеняеmые регистры: HL, ВС, A Керналь функций BIOS: System section: #0057: Sysinfo #005A: Wait for keypress #005D: Wait for keypress + click #00б0: Click sound #00б3: Exit from а program #OOбб: NMI handler Driuers and libraries section: #0000: Add driuer #0000: Add library #0000: Remoue driuer #0000: Remoue library #0000: Open driuer #0000: Open library Memory manager section: #0000: RAMinfo #0000: Change page #0000: Allocate high memory block #0000: Allocate low memory block #0000: Free high memory block #0000: Free low memory block #0000: Find maximal length of high memory block #0000: Reallocate memory мар #0000: Get page info #0000: Select 4MB page #0000: Change page in low memory (#4000-#7FFF,#8000-#BFFF) Disk manager section: #0000: Other functions: #0000: RBHL #0000: DBHL #0000: ZBHL #0000: ABHL #0000: DABHL #0000: AGETCEL #0000: AGETATR #0000: SCRTATR #0000: STRCMP #0000: ReadSec #0000: WriteSec Memory manager section керналя: RAMinfo (MEMDET): Получение информации o верхней памяти Вход: - Выход: HL - обший объем верхней памяти (в Кб) DE - свободной верхней памяти (в Кб) ВС - количество страниц верхней памяти Change page (CHPAG): Смена страницы в области #c000-#cfff Вход: A - номер страницы Выход: A=0 - ОК A=1 - нет такой страницы Allocate high memory block (ALLOCH): Выделение блока верхней памяти Вход: C - объем блока Выход: A=0 - память выделена A=1 - не хватает непрерывной памяти HL - адрес блока ВС - страница блока Allocate low memory block (ALLOCL): Выделение блока нижней памяти Вход: DE - объем блока в байтах Выход: HL - начальный адрес блока в памяти Free high memory block (FREEH): Освобождение блока верхней памяти Вход: ВС - номер страницы D - старший байт адреса Е - количество освобождаемых килобайт Выход: - Free low memory block (FREEL): Освобождение блока нижней памяти Вход: DE - объем освобождаемой памяти в байтах Выход: HL - новый предельный адрес нижней памяти Get maximal length of high memory block (GETMAX): Получение наибольшего размера блока верхней памяти Вход: - Выход: A - объем блока в килобайтах Reallocate memory мар (MPREALC): Перемещение карты памяти Вход: DE - новое положение карты ВС - новая страница карты Выход: - Get page info (PAGINF): Получение информации o странице Вход: ВС - страница Выход: DE - карта занятости страницы Select 4MB page (HPAGCHG): Выбор 4-мегабайтной страницы (временно не реализована) Вход: - Выход: - Change page in low memory (CHPAGL): Смена страницы в нижней памяти (временно не реализована) Вход: - Выход: - Описание командного интерпретатора NeOS u1.0:Команды интерпретатора: System commands: VER - получение информации o версии NeOS (_VER) МЕМ - получение информации o памяти, доступной сис- теме (_МЕМ) CLS - очистка экрана текущими аттрибутами CLW - очистка текстового окна текущими аттрибутами COLOR n - установка текущих аттрибутов n BORDER n - установка бордюра n PAGE n - переключение на логическую страницу n CALL n - запуск программы c адреса n STACK n - установка стека в n НЕХ - вывод чисел в НЕХ DEC - вывод чисел в DEC SILENCE - выключение звука AY РОКЕ m n - занесение в ячейку m 8-битового числа n РЕЕК m - вывод содержимого ячейки m (1 байт) DPOKE m n - занесение в ячейку m 1б-битового числа n DPEEK m - вывод содержимого ячеек m и m+1 в виде 1б-би- тового числа TEXTWIN x у w h - установка текстового окна MEMMAP - вывод карты памяти Disk commands: LOAD "а" [n] [m] - загрузка файла "а" по адресу n длиной m SAVE "а" n m - запись файла "а" c адреса n длиной m RUN "а" [param] - запуск файла "а" c передачей ему параметров param DRIVE n - выбор дисковода n CD ["path"] - установка текущей директории "path". Без пути показывает текущую директорию DIR [w] - вывод каталога, если задействован ключ w, то ожидать нажатия любой клавиши при достижении нижнего края экрана REN "а" "Ь" - переименовать файл "а" в "Ь" DEL "а" - удалить файл "а". Read-only - c пoдтвеpжде- нием MKDIR "name" - создание директории "name" RMDIR "name" - удаление пустой директории "name" ТУРЕ "name" - вывод файла на экран Other functions керналя: Go lower Ьу pixel (RBHL): Go higher Ьу pixel(DBHL): Go lower Ьу cell (ZBHL): Go lower ат attributes (ABHL): Go higher ат attributes (DABHL): Calculate screen address (AGETCEL): Calculate attribute address (AGETATR): Conuert screen address to attribute (SCRTATR): String comparision (STRCMP): Сравнение последовательностей байт Вход: HL - адрес одной строки DE - адрес другой строки C - количество байт для сравнения Выход: Z - строки идентичны NZ - строки различны Nзmеняеmые регистры: В Read Sectors (READS): Чтение блока секторов Вход: HL - начальный адрес DE - начальные трек/сектор В - длина в секторах Выход: HL - конечный адрес DE - конечные трек/сектор Nзmеняеmые регистры: В, C Write Sectors (WRITES): Вход: HL - адрес записи DE - трек/сектор В - длина записываемого блока в секторах Выход: HL - конечный адрес DE - конечные трек/сектор Nзmеняеmые регистры: В, C Other functions керналя: Go lower Ьу pixel (RBHL): Go higher Ьу pixel(DBHL): Go lower Ьу cell (ZBHL): Go lower ат attributes (ABHL): Go higher ат attributes (DABHL): Calculate screen address (AGETCEL): Calculate attribute address (AGETATR): Conuert screen address to attribute (SCRTATR): String comparision (STRCMP): Сравнение последовательностей байт Вход: HL - адрес одной строки DE - адрес другой строки C - количество байт для сравнения Выход: Z - строки идентичны NZ - строки различны Nзmеняеmые регистры: В Read Sectors (READS): Чтение блока секторов Вход: HL - начальный адрес DE - начальные трек/сектор В - длина в секторах Выход: HL - конечный адрес DE - конечные трек/сектор Nзmеняеmые регистры: В, C Write Sectors (WRITES): Вход: HL - адрес записи DE - трек/сектор В - длина записываемого блока в секторах Выход: HL - конечный адрес DE - конечные трек/сектор Nзmеняеmые регистры: В, C System section керналя: Sysinfo (SYSDET): Получение информации o системе. Вход: - Выход: A - код компьютера ВС - версия (иВ.C) HL - адрес ID-стринга Nзmеняеmые регистры: - Wait for keypress (KEYWAIT): Ожидание нажатия клавиши Вход: - Выход: A - код клавиши Nзmеняеmые регистры: HL Wait for keypress + click (KEYWCLC): Ожидание нажатия клавиши + щелчок по нажатию Вход: - Выход: A - код клавиши Nзmеняеmые регистры: HL Nзmеняеmые регистры: - Click sound (CLICK): Короткий щелчок на Beeper (зависит от 1 бита FLAGS1) Вход: - Выход: - Nзmеняеmые регистры: - Non-Maskable Interrupt (NMI) handler (NMI_R): Обработчик немаскируемых прерываний. Вход: - Выход: - Exit from а program (EXPROG): Выход из программы, восстановление и разрешение прерываний BIOS. Стек восстанавливается из STACK_P, затем переход по PROGRET Вход: - Выход: - Nзmеняеmые регистры: SP, HL, A Системные переменные NeOS Постоянная системная область: HK_ERR (2Ь): Адрес обработчика ошибок HK_OS (2Ь): Адрес менеджера функций дополнительной OS HK_USR1 (2Ь): Адрес пользовательского рестарта RST #28 HK_USR2 (2Ь): Адрес пользовательского рестарта RST #30 HK_NMI (2Ь): Адрес обработчика NMI L_GFX (2Ь): Адрес текущей графической библиотеки Системные переменные STACK_P (2Ь): Значение стека перед вызовом программы PROGRET (2Ь): Адрес перехода при выходе из программы ERR_SP (2Ь): Значение стека при серьезной ошибке ERR_JP (2Ь): Адрес возврата при серьезной ошибке DRV_BEG (4Ь): Указатель на начало цепочки неpезидентных драйве- ров LIB_BEG (4Ь): Указатель на начало цепочки библиотек RES_BEG (4Ь): Указатель на начало цепочки резидентных драйверов VARLEN (1Ь): Длина блока перемещаемых переменных SYSRET (1Ь): Команда RET. F_DRV (7Ь): Пустой драйвер. Переходник между ROM и RAM F_LIB (7Ь): Пустая библиотека F_RES (7Ь): Пустой резидентный драйвер Перемещаемый блок переменных: scratr (1Ь): Экранные атрибуты atrf (1Ь): Атрибутная маска scrcrd (2Ь): Координаты на экране fontadr (2Ь): Адрес текущего фонта border (1Ь): Цвет бордюра styles (2Ь): Адрес стилей для рамок окон textwin (4Ь): Параметры текстового окна limcrd (2Ь): Границы координат в текстовом окне lastkey (1Ь): ASCII-код последней нажатой клавиши repwait (1Ь): Задержка перед автоповтором клавиши reprate (1Ь): 4actota автоповтора repcnt (1Ь): Внутренняя переменная-счетчик lastki1 (1Ь): Внутренняя переменная-флаг pagemp (4Ь): Указатель на конец карты памяти ramtop (2Ь): Верхняя граница нижней памяти curpage (2Ь): Текущая страница ports (4Ь): Содержание портов управления памятью driue (3Ь): Nmя текущего устройства cddadr (2Ь): Адрес текущего драйвера дисковой системы fatbuf (2Ь): Адрес буфера FAT secpt (1Ь): Число секторов на треке seclen (1Ь): Код длины сектора cblock (2Ь): Текущий блок cbsec (1Ь): Текущий сектор в блоке curdbl (2Ь): Начальный блок текущей директории secpb (1Ь): Число секторов в блоке pnt_x (2Ь): Х-координата курсора указывающего устройства pnt_у (2Ь): Y-координата курсора brd_l (2Ь): Левая граница области, доступной указывающеmу уст- poйcтву brd_r (2Ь): Правая граница области brd_u (2Ь): Верхняя граница области brd_d (2Ь): Нижняя граница области buttons (1Ь): Состояние кнопок: bit 0 bit 1 bit 2 sens_x (1Ь): Чувствительность по Х sens_у (1Ь): Чувствительность по Y асс_x (1Ь): Ускорение по Х асс_у (1Ь): Ускорение по Y flags1 (1Ь): Флагoвая переменная bit 0: Нажатие клавиши (нет/да) bit 1: Звук на beeper (да/нет) bit 2: Режим печати символов (Replace/XOR) bit 3: Текущая страница видеопамяти bit 4: LAT/RUS bit 5: Caps Lock (нет/да) bit б: Флаг для процедуры печати символов bit 7: Режим вывода чисел (DEC/НЕХ) flags2 (1Ь): Флагoвая переменная bit 0: Задержка на раскрутку диска (нет/да) Credits: ======== Программирование: Megus: - BIOS, NeOS; - набор драйверов. MAV: - низкоуровневые процедуры работы c диском; - адаптация ZASM в среду NeOS. Tigrr: - BW Disk Master u1.0 Дизайн: Aztec Graphics (Xtrimer). Консультации, советы, критика: MAV: - советы и консультации по самой концепции BIOS. Denis Dmitrieu: - советы по реализации системы драйверов; - конструктивная критика. Roman Milukou: - автор идеи инсталлятора. Andrey Isaeu: - советы по реализации файловой системы. Tim Kelly: - советы по реализации системы драйверов. Pauel Fedin: - автор идеи BIOS; - конструктивная критика. Люди, которые получат полный комплект NeOS бесплатно: Roman Milukou 2:4б1б/47.8 Denis Dmitrieu 2:4б1/110.5 Roman Milukou: - автор идеи инсталлятора. Andrey Isaeu: - советы по реализации файловой системы. Tim Kelly: - советы по реализации системы драйверов. Pauel Fedin: - автор идеи BIOS; - конструктивная критика. Люди, которые получат полный комплект NeOS бесплатно: Roman Milukou 2:4б1б/47.8 Denis Dmitrieu 2:4б1/110.5 Andrey Isaeu 2:502б/18.42 Tim Kelly 2:4б5/157.15 Pauel Fedin 2:5020/б59.55 Первый исторический запуск NeOS на Merycobckom Скорпе: 22.08.1998 в 11:59:23 ОБЗОР СИСТЕМНОГО СОФТА
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября