Просмотр полной версии : NK-DOS (вариант MS-DOS под TR-DOS)
Nomy Graphics
25.12.2006, 18:02
Nomy-KSA Disk Operation System Version 0.7
http://zxaaa.untergrund.net/GALERI/nkdos.png
http://zxaaa.untergrund.net/DEMO2/nkdosv07.zip
Copyright (C) 1997 Nomy Graphics Limited (main coder)
Copyright (C) 1996 Ksa Software (coding printing routine)
(2006) AAA as producer, program saver and publisher
(2006) Wlodek as disk restorer
(2006) Nomy Graphics Ltd as releaser!
Добрый день, дамы и господа! Предлагаю Вашему вниманию «новую» операционку, написанную вашим покорным слугою аж в 1997 далеком году! К сожалению, таланта распространителя у меня тогда не было, и все благополучно было законсервировано для потомков 21 века на пачке дисков, успешно отреставрированных и перезаписанных г-дами Wlodek’ом и AAA, за что им огромное спасибо!
На мой взгляд, система Вас может заинтересовать по следующим моментам:
- интерфейсная близость к MS-DOS и гордость за платформу Спекки, воспроизводящую достояние 16-битных машин!
- относительная раритетность разработки (по отношению к аналогам)
- некоторое соавторство со стороны гения KSA
- наличие у меня исходников под MASM
- ну и собственно фичи, разумеется.
Описание прилагаю:
<< Documentation of NK-DOS v0.7 >>
────────────────────────────────────────────────── ──────────────
1.Введение
Дисковая операционная система NK-DOS v0.7 (в дальнейшем
DOS) является упрощенным аналогом системы MS-DOS 3.0 на IBM. DOS
поддерживает:
- полную совместимость с TR-DOS v5.03 (и др. версиями)
- стандартный пользовательский интерфейс MS-DOS;
- многоуровневую систему директорий (каталогов);
- стандартные операции с файлами и каталогами (просмотр,
удаление, переименование, копирование и запуск);
- просмотр текстовых файлов;
- использование маски (символов * и ?);
- использование ключей (указываемых после косой черты /);
- исполнение командных файлов (BATCH);
- etc...
2.Начало работы.
Для загрузки DOS необходимо запустить файл "NK-DOS.B"
обыкновенным способом из TR-DOS (RUN "NK-DOS") или любого
Boot'а. После загрузки вы увидите табличку заставки, а ниже -
приглашение DOS (в том случае, если ма диске не находится
файл "AUTOEXEC.b" - в этом случае он будет запущен, и лишь
после выполнения появится приглашение DOS). Система готова к
работе.
3.Пользовательский интерфейс.
Интерфейс DOS аналогичен интерфейсу MS-DOS. После
приглашения DOS выводится мигающий курсор, показывающий место,
где будет набираться вводимый текст. При наборе пользуйтесь
функциональными клавишами (см. таблицу 2).
Вид приглашения зависит от команды PROMPT. При запуске
DOS автоматически выполняется команда PROMPT $P$G, и приглашение
содержит информацию о текущих дисководе и директории.
4.Основы работы DOS.
При вводе команды (после нажатия <Enter>) командный
процессор ищет эту команду среди внутренних команд DOS (см.
таблицу 1) и выполняет ее, если находит. Если нет, то поиск
ведется на диске (в текущей директории) файла с таким названием
и с одним из нижеперечисленных расширений, причем в зависимости
от расширения будут выполнены разные операции над файлом:
- .B (bas) Бейсик-файл. Загружается особым образом: под
адрес #5D3B, устанавливаются системные переменные SOS и стэк,
далее запускается Бейсик-программа;
- .e (exe) Исполняемый файл. То же, что .B;
- .c (com) Исполняемый файл. Файл загружается в память
по адресу, указанному в каталоге, и управление переходит к
этому адресу;
- .b (bat) Коммандный (пакетный) файл. По формату
текстового файла будут выполнены последовательности команд
DOS;
Если не будет найдено ни одного файла с такими
расширениями, то выдается сообщение "Bad command or file name".
5.Особенности NK-DOS v0.7.
NK-DOS имеет ряд отличий от MS-DOS, обусловленных
малым разрешением компьютера, условием не терять совместимость
с TR-DOS, целесообразностью, ранней версией и недостатком
профессионального уровня у main coder'а:
- расширение у файлов имеет длину ОДИН символ;
- высота букв игнорируется, но не у расширения;
- при записи файлов или каталогов на диск у набранного
имени файла или каталога высота букв не игнорируется ( однако
при работе только с DOS Вы этого никак не заметите );
- не работают часы и календарь;
- нет команды MOVE (очень необходимой);
6.Команды DOS.
Далее приведен список внутренних комманд DOS. Условные
обозначения:
[] - необязательный элемент;
COPY - ключевое слово команды;
filename - нужно вставить имя файла;
path - путь;
d: - дисковод;
CD [d:][path]
- Устанавливает текущую директорию;
CHDIR [d:][path]
- То же, что CD;
CLS
- Очищает экран дисплея;
COPY
DEL
DIR
ECHO
ERASE
EXIT
MD
MKDIR
PAUSE
PROMPT
QUIT
RD
REM
REN
RENAME
RMDIR
TYPE
VER
VOL
(все аналогично MS-DOS)
Максагор
25.12.2006, 19:13
Другими словами, сабж заточен исключительно под флоповоды и никаких других девайсов не видит и в принципе не может?
Nomy Graphics
25.12.2006, 19:34
Именно так, у меня тогда не было и не могло быть винта, т.к. они тогда еще были непопулярны. Реальный спек - Pentagon 128, оттестировать можно было только у Stever'а на том же Pentagon 128, все с одним единственным флопом.. однако 4 диска NK-DOS поддерживает! (но не уверен, что полностью).
Максагор
25.12.2006, 19:55
Именно так, у меня тогда не было и не могло быть винта, т.к. они тогда еще были непопулярны. Реальный спек - Pentagon 128, оттестировать можно было только у Stever'а на том же Pentagon 128, все с одним единственным флопом.. однако 4 диска NK-DOS поддерживает! (но не уверен, что полностью).
Я спрашиваю в том смысле, что присоединить к системе драйвера какого-либо устройства невозможно (когда iS-DOS писалась, то тоже винты еще в моду не вошли. Но возможность работать через дрова практически с любым девайсом уже была заложена) и система намертво привязана именно к флопам? Даже RAM-диском попользоваться не получится?
Если так, то жаль....
Nomy Graphics
25.12.2006, 20:06
Да не, я старался жестко ни к чему не привязываться. Возможность RAM-диска там как раз заложена!
NK-DOS пользуется только двумя подпрограммами TR-DOS: прочитать сектор в память и записать сектор в память. Все остальное он делает сам - работу с каталогами, запуск и чтение, и т.п. И даже к этим подпрограммам обращается не непосредственно, а через входные точки для таких вот случаев (т.е. внешний драйвер может вызывать, к примеру, обращение к диску вместо #3D13 адрес именно этой NK-точки, а NK уже смотрит - действительно надо на #3D13 или на другую процедурку записи-чтения (хотя бы и на LDIR). Я как раз хотел сделать RAM-диск, он был в планах уже к версии 1.0, а то и к 0.7. Да руки не дошли..
Ой чего-то я воды налил, короче: возможность предусмотрена. Но не реализована. Ну так на то есть исходники и умелые люди.
Максагор
25.12.2006, 20:33
Ой чего-то я воды налил, короче: возможность предусмотрена. Но не реализована. Ну так на то есть исходники и умелые люди.
Ну это уже намного лучше...
CityAceE
26.12.2006, 13:11
А по какому принципу система каталогов организована?
Вижу, что с точки зрения TR-DOS имена каталогов - это файлы. А в теле этих файлов хранятся имена содержимого каталогов? Я правильно понимаю?
- расширение у файлов имеет длину ОДИН символ;
А почему?
- высота букв игнорируется
Имеется в виду регистр?
А вообще мне понравилось :) Эдакий симулятор MS-DOS :)
Nomy Graphics
26.12.2006, 13:55
Спасибо.
Совершенно верно, субдиректории - это файлы особого вида (как и в MS-DOS, кстати) с пустым расширением, в теле которых лежит таблица размещения файлов в данной директории (аналогичная по формату TR-DOS'овской нулевой дорожке). Первым файлом автоматически записывается файл наддиректории с именем "..", в котором есть только ссылка на координаты таблицы размещения файлов директории верхнего порядка (если корневой, то 0 трэк 0 сектор).
Расширение имеет длину один символ, т.к. в TR-DOS отводится на каждый файл только 16 байт в таблице размещения, под расширение остается только 1. Не нашел способа, куда запихуть еще 2. Тем более, что хотелось оставить максимальную совместимость с TR-DOS. Однако, поскольку расширения могут быть разного регистра, то возможных комбинаций для имени расширения довольно много.
"Высота букв игнорируется.." да, речь идет о регистре. Тоже, аналогично MS-DOS - регистр не имеет значения для имен файлов и команд ДОС. Однако он имеет значение для расширений, как уже упоминалось, а также вот еще что: допустим, в NK-DOSе переименовывается или копируется с новым именем файл. Так вот, если набрать его имя в разных регистрах, то он так и запишется - со учетом всех регистров (и для TR-DOS будет разница - boot или BOOT) а для NK-DOS по-прежнему не будет - к нему можно будет по-прежнему обращаться и как boot, и как BOOT, и как BOot.
Эта ДОС имеет систему рестартов? Насколько они прописаны? Возможно ли "левой" программе воспользоваться этой системой?
Т.е. существует ли программное окружение в этой системе?
CityAceE
26.12.2006, 16:24
Совершенно верно, субдиректории - это файлы особого вида (как и в MS-DOS, кстати) с пустым расширением, в теле которых лежит таблица размещения файлов в данной директории (аналогичная по формату TR-DOS'овской нулевой дорожке). Первым файлом автоматически записывается файл наддиректории с именем "..", в котором есть только ссылка на координаты таблицы размещения файлов директории верхнего порядка (если корневой, то 0 трэк 0 сектор).
Но ведь в этом случае получится, что если какой-либо коммандер или команда TR-DOS MOVE произведёт уплотнение диска, то вся система будет порушена! Или я чего-то недопонимаю?
Как мне кажется моя система каталогов всё же выглядит более привлекательно... :) Там хотя бы все файлы видны обычному софту и каталоги не отжирают у файлов места и количества.
Расширение имеет длину один символ, т.к. в TR-DOS отводится на каждый файл только 16 байт в таблице размещения, под расширение остается только 1. Не нашел способа, куда запихуть еще 2.
Уже давольно давно в TR-DOS используется система трёхбуквенных расширений. Хотя вполне возможно она прижилась уже после 97-го года... Суть в том, что под две дополнительные буквы используются два байта, расположенные в описателе файла TR-DOS как раз следом за символом расширения. Эти байты отвечают за начальный адрес файла (адрес загрузки), которые для бинарных файлов (картинки, текст и т.д.) не несут особого смыла и их удобнее использовать как раз под трехбуквенное расширение.
Посмотри мой коммандер (например, на моей аватаре :) ), там и каталоги есть и трёхбуквенные расширения.
Неплохо бы ещё и часы поддержать.
Не знаю какой практический смысл в этой системе, но мне всё равно нравится :)
Nomy Graphics
26.12.2006, 17:14
To GriV: я не знаю, к сожалению, что такое система рестартов и программное окружение :(
Что есть: внешняя программа может воспользоваться подпрограммами ДОС, они все отдельно прописаны, и целой команды типа RENAME, MKDIR, и более элементарных операций.
To CityAceE: да, прикольный коммандер. И как же ты сделал так, что все файлы видны? А если их больше 128?
Про эти два байта помню, но решил их не трогать под расширение.
captain cobalt
26.12.2006, 17:54
NK-DOS (вариант MS-DOS под TR-DOS) Больше похоже на "вариант command.com под TR-DOS".
Nomy Graphics
26.12.2006, 19:17
Но ведь в этом случае получится, что если какой-либо коммандер или команда TR-DOS MOVE произведёт уплотнение диска, то вся система будет порушена! Или я чего-то недопонимаю?
Будет порушена. Для NK надо было написать свою команду MOVE, чего я не осилил.
captain cobalt
26.12.2006, 22:38
я не знаю, к сожалению, что такое система рестартов "Система рестартов" - термин, выдуманный в iskrasoft чтобы пугать маленьких детей.
В других ОС это называется "системные вызовы" (system call) или "интерфейс прикладного программирования" (API).
Забавно, что в ZX-Format#4 некоторые системы были проклассифицированы по этим "системам рестартов" и is-dos "победил".
CityAceE
27.12.2006, 05:24
И как же ты сделал так, что все файлы видны?
Детальное описание системы каталогов идёт вместе с описанием коммандера. Вкратце: система живёт на свободных секторах диска TR-DOS и никак не затрагивает остальное место на диске и не модифицирует файловую систему, то есть является просто надстройкой над файловой системой TR-DOS.
А если их больше 128?
См. выше. Никакие ограничения TR-DOS не снимаются, то есть как и раньше файлов может быть не более 128.
Здорово. Чтобы поднять спекки, определенно следует осилить САМИМ всю ту кучу софта, что уже написаны под лидеров рынка. Но ведь у нас есть огромное преимущество -- их опыт. Опыт создания хороших, устойчивых, удобных, дружелюбных и к пользователю, и к программисту продуктов. Какая разница, есть сорцы/ нет их. Программировать -- невелика премудрость. Хорошо программировать -- это опыт. А вот хорошо программировать хорошие вещи -- это уже искусство.
Думаю, PC-DOS (что, в общем, и есть прообраз MS-DOS, только а-ля неБилл) был на самом деле хороше
Здорово. Чтобы поднять спекки, определенно следует осилить САМИМ всю ту кучу софта, что уже написаны под лидеров рынка. Но ведь у нас есть огромное преимущество -- их опыт. Опыт создания хороших, устойчивых, удобных, дружелюбных и к пользователю, и к программисту продуктов. Какая разница, есть сорцы/ нет их. Программировать -- невелика премудрость. Хорошо программировать -- это опыт. А вот хорошо программировать хорошие вещи -- это уже искусство.
Думаю, PC-DOS (что, в общем, и есть прообраз MS-DOS, только а-ля неБилл) был на самом деле хорошей операционкой. До сих пор теплые чувства, и программирую я все больше под нее, за искл. уж совсем трудноосуществимых вещей, на которые у меня одного (без группы/компании/фирмы) уйдут годы. И потому этот проект очень, очень нужен. Спасибо, Nomy Graphics. Его нужно развивать!
Думаю, PC-DOS (что, в общем, и есть прообраз MS-DOS, только а-ля неБилл) был на самом деле хорошей операционкой.
Насколько я помню, PC-DOS это тот же самый MS-DOS, только продаваемый самим IBM, вместе с новыми компами.
Nomy Graphics
27.12.2006, 19:44
To TomCaT:
спасибо за отзыв. Наличие сорцов NK - несомненный плюс, без них проект развивать намного сложнее, не так ли?
Я, кстати, планировал дописать только поддержку RAM-диска, доотладить основные команды - и приступить к написанию Nomy Commander'а под NK-DOS, используя как раз те самые процедурки, встроенные в систему, о которых я упоминал. А потом уже, скажем, написать внешние команды в виде com-файлов, такие, как tree, xcopy, format, move и др. Ну а совсем потом можно было б и Windows заняться :wink:
Не знаю, самому заниматься развитием проекта боюсь, помешает недостаток времени.
Максагор
27.12.2006, 20:53
Я, кстати, планировал дописать только поддержку RAM-диска, доотладить основные команды - и приступить к написанию Nomy Commander'а под NK-DOS, используя как раз те самые процедурки, встроенные в систему, о которых я упоминал.
Предлагаю создать описание как создать под систему драйвер (и его структуру) любого устройства ввода-вывода и как его загрузить в память и подсоединить к логическому устройству (буквы A: B: C: D: E: F: и далее).
Тогда я бы сам взялся попробовать скрестить систему с винтом или RAM-диском произвольного объема. Или у тебя файловая система жестко ориентирована на файловую систему в размерах флопа и не терпит увеличение размеров дискового пространства на порядки (мегабайты и десятки мегабайт)?
Кстати а с менеджментом памяти там что?
Как используется 128 кб или выше?
Могу помочь, у меня наработки в голове еще остались со времен мыслей о написании собственной ОС в далеком 1998 году... Наработки эти можно усовершенствовать.
О некоторых мыслях я тут писал в разных тредах.
Nomy Graphics
28.12.2006, 10:43
http://tuneyourcar.narod.ru/NKWORK.ZIP
выкладываю исходник.
Касательно ограничений по объему, безусловно, они присутствуют, т.е. под длину файла и адрес выделяются 16-битные переменные и используются 16-битные регистры, под длину в секторах - 8-битные.. Встроенный калькулятор также рассчитан на 16 битные числа, при выводе на экран десятичных чисел в том числе. Все это надо будет расширять под соответствующий порядок значений.
Касательно подключения драйверов других устройств, см. в самом конце исходника обработчик, зануленный временно на RET для устройств с буквами старше "D". Их велкам - как раз туда. (этим объясняется фича работы системы при попытке задать диск "Е","F" и т.п. - обращений к диску не происходит, а данные берутся из буфера памяти, оставшиеся с предыдущего раза). Таким образом, для RAM диска, необходимо добавить конструкцию с LDIR'ами, закачивающие данные из места его расположения в буфер (для чтения с него), либо наооборот, для записи.
Подробную инструкцию постараюсь составить, но, может быть, после просмотра исходника, что-то и так станет понятным?
Менеджмента памяти, как такового, в NK не реализовано. Система занимает адреса с С000h (в банке по умолчанию) по свою длину, с FС00h память отведена под фонт (его, кстати, возьмите с релизной версии, в исходник не добавил) Т.е. она работает под 48К. Все это тож можно исправить при необходимости.
ИМХО надо отвязываться от TR-DOS и бейсика-48. Предлагаю рассмотреть память в следующих понятиях.
1. Нижняя область памяти - low memory, non-paged memory.
2. Страничное окно - Paged memory, по адресу 0xC000. Количество страниц - до 256 (#00 - #FF).
Страничную память виртуализировать в следующем виде:
1. Страницы жестко спроецированные в #4000 и #8000 из нумерации исключить.
2. Страничную память виртуально представить в виде непрерывной, заполняемой сверху вниз.
Далее вводим границы:
1. Нижняя граница low memory доступной для программ.
2. Номер первой страницы доступной для программ (фактически верхняя граница памяти).
Страница содержит модули ОС (драйвера, файловые системы, библиотеки). Модуль начинается с заголовка, который содержит длину модуля и его имя. Модуль с пустым именем (#00) означает свободный блок. Таким образом. При размещении нового модуля (драйвера) система начинает сканирование страниц начиная с самой верхней до тех пор, пока не найдет кусок памяти нужного размера. После инсталляции драйвера мы имеем его базовый адрес и номер его страницы, этого достаточно чтобы к нему обратиться.
Для межстраничных обращений в нижней памяти имеем коротенький резидент. Резидент содержит в себе номер системной страницы (как правило самой верхней), в которой находится модуль CORE - он отвечает за взаимосвязь остальных модулей, содержит карту страниц памяти и т. д. Он умеет включать эту страницу и передавать управление туда.
Единственное ограничение - размер модуля не может превышать 16 кб. Легко обходится путем разбивки больших модулей на несколько маленьких.
Область системных переменных бейсика-48 можно "свернуть", оставив только FRAMES, KSTATE, MODE, FLAGS, REPDEL и REPPER. Они используются обработчиком INT и пригодятся нам для обслуживания ввода с клавиатуры. Если хотим задействовать RST #10 для собственных нужд а-ля IS-DOS, то еще и CURCHL. Кстати FRAMES3, MODE и FLAGS можно переместить поближе к экрану, изменив IY. Это дает максимальное высвобождение нижней памяти вместе с возможностью в любой момент восстановить полные системные переменные, обеспечив таким образом совместимость бейсика с новой системой. Переменные TR-DOS нам не нужны.
Можно создать и ПЗУ-версию системы, которая работает без системных переменных и резидента вообще.
Nomy Graphics
03.01.2007, 10:52
Да, несколько непривычны для меня эти понятия, к тому же вот что хочется спросить:
- переменные Бейсика - а если их затереть, как же мы будем запускать Бейсик-программу из ДОС? для ее нормальной работы они же, типа, нужны в более полном составе, чем перечислено?
- переменные TR-DOS тот же вопрос, а как же тогда вообще все будет работать?? вообще-то, NK-DOS на данный момент, по сути, лишь надстройка над TR-DOS, не имеющая собственных прямых процедур работы с диском (не считая заделки под RAM-DISK), а пользующаяся 3D13h? переменные TR-DOS активно используются в NK.
Максагор
04.01.2007, 03:53
вообще-то, NK-DOS на данный момент, по сути, лишь надстройка над TR-DOS, не имеющая собственных прямых процедур работы с диском (не считая заделки под RAM-DISK),
Вот именно это я и хотел знать,задавая выше все свои вопросы. Тогда все намного хуже. :( Сколько уже таких оболочек-надстроек уже было. ИМХО, самая лучшая из оных - ZX-Windows v1.6
ИМХО надо отвязываться от TR-DOS и бейсика-48. Предлагаю рассмотреть память в следующих понятиях.
1. Нижняя область памяти - low memory, non-paged memory.
2. Страничное окно - Paged memory, по адресу 0xC000.......
Баллин, до 90% прямо как из моей головы вытащил :)
Дело не в отвязывании (не надо на Спектруме что-то ломать) от TR-DOS, а конструировании некой прослойки, в которую надо обращаться, ну, в проге идет:
CALL savefile
..
CALL loadfile
...
RET
;подпрограммы работы с внешними девайсами
savefile JR initial; ХОРОШО и ПОЛНОСТЬЮ документированный кусок памяти, его объем определяется вначале (ессно не до бесконечности:).
DRIVE DEFM "A"; здесь размещаются переменные
.....
initial; сам драйвер
RET
Только вот может возникнуть ситуация как в издос "Insert System Disk Please". Так что есть необходимость в хранении жизненно важных драйверов в каком-то RAM-банке данных, помеченным "системным", т.е. при недостатке памяти в ситуации Load Program, система сообщит: "Осталась только системная память, хотите грохнуть неиспользуемые сейчас драйвера? Будут стерты подпрограммы для работы с:" и тут читается список имен драйверов из оперативки. Выбираем, убиваем помеченные. По мере удаления, растет счетчик свободной памяти. Как только ситуация станет комфортной, цвет имени загружаемого файла с красного перерисуется зеленым и можно давить ентер (терпеть не могу, когда для освобождения памяти надо выходить куда, то, а потом снова искать файл, который хотел запустить:).
Ушел я от темы. Так вот, решив скинуть файл на MS-DOS-диск, переключаем драйвер и теперь, обращаясь к вышеуказанным /CALL savefile/ с просьбой "сохранить как: mytext.txt", подпрограмма будет ожидать диск МСДОС. Далее, до тех пор, пока снова не произведем переключение, система будет работать только с МСДОС (ессно, не найдя системных файлов, она попросит указать место и тип диска, где они находятся).
Но для MS-DOS требуется много ОЗУ, сам в первую очередь рассчитываю на использование пользователями издосного драйвера, поскольку TASIS вероятно прочно войдет в жизнь АТМ, а ПЦ маст дай.
Ну а 48к, то это минимум. Мне хочется изначально ориентироваться именно на 48к, но там тоже будет драйвер, который можно будет подменить, расширить как хочется (т.е. у драйвера есть свое системное меню). Сам напишу поддержку 48к, опубликую характеристики этого драйвера (команды, точки входа, размеры драйвера). Вообще, точки входа, имхо, только для качественных процедур. Хочу иметь возможность подключать любой драйвер, который накодил программер. Если в бэйске PRINT AT 10,10;"Speccy", означает печать слова в координатах, это ни в коем случае не значит что надо пропищать в динамик, верно? Кодеры будут ориентироваться на основу, а если прога написана с учетом новых команд (используется новый драйвер, большего/меньшего размера), то перед запуском, нормальная прога сообщит, мол "программа использует команды, отсутствующие в этом драйвере, так что заускаться и сносить вашу систему не будем, драйвер качать там-то. Дается URL"
Подытоживая, отмечу, что создавая систему (ИМХО), надо ориентироваться на остальных кодеров, т.е. чтобы была возможность замены твоих фрагментов системы чужими. Как бы, система, состоящая из блоков: Вывод текста, вывод графики, вывод данных на внешние устройства памяти и т.д.
Когда же я засяду за написание!!!
:)))
Nomy Graphics
16.01.2007, 13:17
Вот именно это я и хотел знать,задавая выше все свои вопросы. Тогда все намного хуже.
Итак, еще раз объясню, как осуществлена работа с девайсами. NK-DOS вместо процедуры TR-DOS #3D13 использует свою точку входа (в исходнике под меткой M3D13), которая проверяет значение дисковода, если оно менее 4-х (диски A-D), то обращается к #3D13, если более чем 4 (диски с именем "E" и старше) - то на отдельную процедуру, которая пока не дописана (стоит RET). При этом #3D13 используется почти исключительно для 2-х вещей - считать в буфер сектор и записать из буфера сектор. Специальных своих процедур для работы с TR-DOS диском в NK, действительно, нет.
Однако, для подключения драйверов других дисковых устройств, рекомендуется именно на место этой процедуры (в самом конце исходника) вставить JP на драйвер, который обеспечит считывание в буфер информации с другого носителя. Так, например, можно сделать поддержку RAM-диска. Что касается винта, то потребуются более существенные переделки, поскольку везде и всюду подразумевается, что мы имеем дело с 16-битными значениями для адресов, размеров в байтах, 256-байтный диск-сектор, 8-битный номер дорожки и трека.
Да, несколько непривычны для меня эти понятия, к тому же вот что хочется спросить:
- переменные Бейсика - а если их затереть, как же мы будем запускать Бейсик-программу из ДОС? для ее нормальной работы они же, типа, нужны в более полном составе, чем перечислено?
Можно зарезервировать Low memory и восстановить их.
- переменные TR-DOS тот же вопрос, а как же тогда вообще все будет работать?? вообще-то, NK-DOS на данный момент, по сути, лишь надстройка над TR-DOS, не имеющая собственных прямых процедур работы с диском
Так дописать прямые функции разве сложно?
Dr.Potapov
31.08.2007, 17:37
ну как там? продвигается? внимательно слежу за разработкой.
CALL savefile
..
CALL loadfile
...
RET
RTFM !
А кроме шуток - просто внимательно почитать самые активные темы это ветки форума...
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot