Цитата Сообщение от Sonic
ИМХО надо отвязываться от 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"

Подытоживая, отмечу, что создавая систему (ИМХО), надо ориентироваться на остальных кодеров, т.е. чтобы была возможность замены твоих фрагментов системы чужими. Как бы, система, состоящая из блоков: Вывод текста, вывод графики, вывод данных на внешние устройства памяти и т.д.
Когда же я засяду за написание!!!
:)))