Цитата Сообщение от МИВ Посмотреть сообщение
давно пора переместить эту тему в "концепции".
Там уже такая есть

Цитата Сообщение от МИВ Посмотреть сообщение
так давайте уже писать! Правда я не умею =))))))))))))))))))))))))))))))))))))))))))))))))) ))))))))))))
Ща буду учить.
Приступаем.
Ещё раз напоминаю - будет для начала делать упрощенно - ведь когда ученики приходят в школу, их же не начинают сразу учить решать квадратные уравнения? Их учат рисовать палочки и кружочки.
Вот и мы будем учиться "рисовать палочки".

Начнем с рассмотрения идеологии и разработки концепции.

Придумаем конкретный пример - "любитель "криминального чтива" - у которого имеется LCD-монитор c композитным видеовходом и и подключенный к нему Спектрум с дисководом. А также дискетка с художественными произведениями указанного жанра в виде текстовых файлов. Нам необходимо разработать ПО для обеспечения возможности читать любителем содержимое текстовых файлов на экране LCD-монитора. При этом мы сразу расширим идеологию, для того чтобы полученное ПО можно было использовать и для других "любителей",(пример - начинающий писатель-студент, которому необходима возможность набирать, просматривать и редактировать текстовые файлы на карточке памяти Compact Flash, подключенные к IDE-контроллеру через переходник CF-IDE (при этом у него на компьютере отсутствует контроллер дисковода и сам дисковод и дискеты).

Теперь концепция.

Рассмотрит три основных составляющих нужного нам ПО:

ядро – состоящее из подмножества компонентов,

программа пользователя, тоже состоящая из подмножества компонентов (далее по тексту - задача),

загрузчик ядра.

Начать надо с главного – определиться с распределением памяти компьютера для ядра и задачи.

Для ядра отведём нижние 32 Кб адресного пространства Z80, а для задачи - верхние 32 Кб.К чему это приведёт?

Ограничение такого распределения очевидны , но оставим так,чтобы всё не усложнять на первом этапе. В память ядра войдёт область пзу, экран и системные переменные BASIC и ядро будет под них подстраиваться, а задача будет свободна от этого.

В следующих версиях можно будет "масштабировать" нашу систему, например предоставить задаче возможность использовать страничную организацию области памяти #C000-#FFFF, а ядру "перепадёт" второй экран,а также некоторые страницы памяти в указанном диапазоне,и в результате ядро получить возможность использовать экранную область первого экрана для "не-экранных" целей и т.д.

Далее, распределение процессорного времени.

Ядро запускает задачу.

Задаче предоставляется 100% процессорного времени для выполнения своих операций. Когда задача запрашивает операции, выполняемые ядром она самостоятельно передаёт управление ядру и ядро использует 100 % процессорного времени до завершения требуемой операции. После этого ядро возвращает управление задаче.

Когда задача выполнила все необходимые операции, она запрашивает операцию ядра "завершить задачу".

Теперь кратко рассмотрим основные компоненты ядра.

1)Диспетчер задач - обеспечивает загрузку задачи в её адресное пространство,выполнение и завершение задачи.

1)Драйвер устройства ввода (в данном случае это клавиатура).

2)Драйвер устройства вывода (в данном случае это экран)

3)Файловая система - производит все операции, необходимые для работы с файлами на различных информационных носителях (в данном случае это дисковод). Подразделяется на 3 части:

а) Диспетчер устройств. Он объединяет в единую виртуальную файловую систему компоненты б),в)

б) Драйвера файловых систем (в данном случае одной файловой системе TR-DOS, которая на дискете,)

в) Драйвера дисковых устройств (в данном случае один драйвер дисковода, подключенный к BETA-DISK-INTERFACE).

Программа пользователя будет хранится на диске в виде одного файла длиной не более 32 Кб.
Ядро тоже будет хранится на диске в виде одного файла длиной не более 8 Кб.
Загрузчик сделаем на Бэйсике .Назовём его boot. Он будет загружать ядро на адрес #6000.