И на чём её можно поиспользовать, в каких спектрумах она реализована?
И на чём её можно поиспользовать, в каких спектрумах она реализована?
хе-хе... это самая ЖЕСТКАЯ проблема - 64kb limit. Пока функционал прог можно влепить в этот limit все как бы нормально. Как токо прога начинает быть хоть немного полезной (отвечать современным требованиям) так она уже никак не влазит в 64кб адресного. Многие платформы типа БЭСМ и PDP-11 погибли в основном по причине наличия этого лимита.
Так что выхода тут токо 2:
0. (обычный путь которым прошли все выжившие платформы) переход на процессор с большим лимитом адресного пространства и портирование нужного софта. В случае Химеры это установка ez80 + 16MB RAM.
1. (СЛОЖНЫЙ ДО УЖАСА, реализован в некоторых реальных прогах) разбить функционал проги на куски так чтобы места в памяти хватало!Алгоритм такой:
а) написать всю прогу на платформе где нет ограничения памяти;(при этом экран спека можно просто обьявить как массив на 6912 байтов и рисовать в него, при необходимости конвертировать изображение на экран реальной системы 50 раз в секунду).
b) разбить МАССИВ ДАННЫХ написанной проги на куски которые не зависят друг от друга (т.е. сгрупировать куски ДАННЫХ которые используются кодом только ВМЕСТЕ в отдельные группы, тут главное чтобы эти куски ДАННЫХ помещались потом в свободный RAM, (свободный RAM для спекки это = ВЕСЬ RAM(49152байт) - минимальный сегмент кода (16384байта) - экран (6912байт) - STACK (2000 байт???) - KERNEL (856 байт???) и ТОГО ~23000 байт) ). Если вдруг длинна куска ДАННЫХ больше свободной RAM то пытаться переписать прогу так чтоб кусок ДАННЫХ влез!
с) разбить весь код на куски длинной с минимальный сегмент кода (для спекки 16384байта);
d) все межсегментные JMP-ы\CALL-ы, обработку прерываний, проводить через KERNEL - маленький кусочек кода; При этом нужно учесть что этот кусочек должен уметь "включать" нужный массив данных для нужного сегмента кода перед тем как сделать реальный JMP/CALL.
e) если скорость будет все еще приемлемая то все должно получиться.![]()
Ты себе это очень смутно представляешь, т.к. не знаешь основного постулата - на Спектруме невозожно создать ОС, под которой будет нормально работать спековский софт.
Архитектура Хiмеra базируется на этом постулате, и позволяет его обойти путём аппаратного создания виртуальных машин для спековского софта, управляемых ОС.
Поэтому ни о какой "новой операционной системы для всех моделей ZX" и речи быть не может. Многозадачная, и даже реалтайм ОС исполняющая нормально спековскй софт возможна только на архитектуре Хiмеra. Другое дело, что сама архитектура позволяет существовать виртуальным машинам (ВМ) четырёх базовых конфигураций, которые можно выбрать при создании ВМ:
- SKAY (Scorpion+KAY)
- Pentagon
- Profi
- +3.
это не то
, топик Концепция "ХИМЕРА" и аппаратная архитектура Хiмеra не связаны практически никак. Лучше посмотри десяток-два последних страниц этого топика http://www.zx.pk.ru/showthread.php?p=360130#post360130
Спасибо. Десять слов которые наверно смогут мне помочь. LVD мне уже говорил об этом, но я его не понял.
Независимого кода очень мало, скорей всего придётся дублировать код в страницах. FATFS весит 24кило с драйверами ZSD+NEMOIDE+RTC, без учёта кешей(1.2кило) плюс активно юзается стек (~100-150 байт). По моим прикидкам чисто FATFS займёт 3-4 страницы памяти(с учётом дублирования кода). Опять же нужно место и для читаемого/записываемого файла, а с этим все намного сложнее, особенно при адаптации старых программ под FAT, очень много LDIRить придётся.
Нда гемор ещё тот, скорей всего отложу до лучших времён(реализации Химеры). А пока буду допиливать свой проект под ZX-Евой, там немного по проще с памятью, и всё прекрасно работает. Почаще щёлкаю страничками в трех банках, в четвертой обёртка лежит.
---------- Post added at 09:26 ---------- Previous post was at 09:09 ----------
Там исходники на асме под х86, автоматом никак не переделаешь. Нужно всё руками переписывать, а для этого нужно очень хорошо знать архитектуру и ассемблер одновременно Спекки и РС.
Причём таких людей нужно минимум десяток, что бы распараллелить конвертацию. Что бы понять трудоёмкость процесса, возьми 50 строк кода и попробуй их переписать под Z80.
Последний раз редактировалось DimkaM; 25.07.2011 в 09:14.
Лучше сделать и жалеть, чем не сделать и жалеть.
Некоторые из моих поделок тут: https://github.com/serge-404
И что из спековского железа в получившемся Франкенштейне будет использоваться? При том, что хочется и eZ80 и много памяти, остаётся клавиатура что ли?
ZXFanat, Колибри - форк Менуэта, писана на 386 асме, внутри полнейший бардак из наслоений потоков мыслей целой толпы, для спека бесполезна.
---------- Post added at 10:23 ---------- Previous post was at 10:15 ----------
Как оценивал?
Как вариант - RPC, но накладные расходы конечно вырастут.
z88dk
Компилил самую последнюю версию(весной) R0.08b (revision ID 8237),LFN отключил, пока не нужно. Весь функционал проверил, работает на сто процентов.
---------- Post added at 12:01 ---------- Previous post was at 11:56 ----------
чисто субъективная оценка. Анализировал код после компиляции, т.к. были баги. FATFS писался под GCC, некоторые вещи z88dk неправильно компилились, преобразования типов в нескольких местах подправил и ещё что то, непомню что.
Последний раз редактировалось DimkaM; 25.07.2011 в 12:10.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)