Войти
ФлеймФорумПроЭкты

Spectrum style по-современному [исследовательский проект] (20 стр)

Страницы: 117 18 19 20 21 22 Следующая »
#285
(Правка: 15:40) 15:37, 18 мая 2018

gamedevfor
> При деньгах выпустили бы и 16 и 32 битные версии.

Несовместимые с оригиналом они были бы не особенно интересны - рынок уже был наводнён 16-битным IBM PC, а совместимые они были бы уродством. Да и сам Синклер при популярности еще спектрума перешел на 32 бита, но не выстрелило. Собственно всё, RIP, no regret.


#286
(Правка: 15:40) 15:38, 18 мая 2018

=A=L=X=
> Упомянутый тобой же MSX тоже был открыт для всех желающих - консорциум
> производителей

В вики ничего нет про свободность, возможно нужно было покупать права на производство (типа, как на консоль 3DO), но это не точно

#287
15:39, 18 мая 2018

0iStalker

Возможно, но консорциум ставил своей целью популяризацию, так что даже если бы лицензия и была нужна, то не думаю что она имела бы грабительскую цену.
Проводится прямая аналогия со стандартом VHS - вот за него надо было кому нибудь платить?

#288
15:45, 18 мая 2018

=A=L=X=
> Возможно, но консорциум ставил своей целью популяризацию, так что даже если бы
> лицензия и была нужна, то не думаю что она имела бы грабительскую цену.

Вообще MSX был популярен, но для развития платформы, как  было замечено, нужна была совместимость с библиотекой софта.  PC клоны её обеспечивали насквозь от 16 к 64 битам, - остальные как получится ( почти всегда с отрицательным результатом),.   

#289
22:09, 18 мая 2018

=A=L=X=
> Несовместимые с оригиналом они были бы не особенно интересны

Был бы какой то "DOS mode" для запуска оригинальных прог или можно было бы ставить даже два процессора так как старый стоил копейки.

#290
5:26, 19 мая 2018

http://ru.wikipedia.org/wiki/NEC_V20

#291
7:53, 19 мая 2018

Alikberov
> NEC_V20

В этом, кстати, не так много удивительного. Судя по той же вики 8086 заранее проектировался так, чтобы быть совместимым с 8080 на уровне исходных кодов. Поэтому программная модель была заранее выбрана такой, чтобы покрыть все регистры 8080. Например A это AL, BC это BX, DE это CX и так далее. При этом довольно мало команд остаётся которым требуется особый подход - например INC BC не влияет на флаги, поэтому на 8086 его надо транслировать видимо как PUSHF: INC BX: POPF. В общем основные структурные блоки процессора вообще не требуют переделки, чтобы эмулировать 8080 на уровне подмены маш-кодов.

#292
(Правка: 11:22) 10:25, 19 мая 2018

=A=L=X=
> В этом, кстати, не так много удивительного.
http://github.com/Alikberov/x80

+ Пытaлся я с нуля «воссоздать» i8080 как i80x80

И много других «вкусностей»… но, это уже оффтопик.

P.S.: Идея практически сдохла, так как я застрял с переносом её из JavaScript на Verilog.
Да и на форумах саму концепцию осмеяли, раскритиковали и растоптали.

#293
16:28, 19 мая 2018

У кого какие calling conventions?
Я пока решил сохранять в процедурах всё кроме AF (включая теневые) - вроде пока получается всё норм и не накладно.

#294
16:49, 19 мая 2018

=A=L=X=
Есть процедуры которые не сохраняют регистры вообще.  Есть в которых сохраняется минимум. Вообще сохранять пачку регистров в часто вызываемых функциях - не очень хорошая с точки производительности идея, поэтому чаще делал так: в каждой процедуре был список регистров которые она портачит, и все сохранения и восстановления шли при вызове, минимизируя использование push/pop. Если это процедура вызываемая 1 раз в прерывание то вообще пофигу.

#295
16:53, 19 мая 2018

Dexus

А я решил просто отказаться от обдумывания каждого конкретного случая - и пока сохранение всего кроме AF показывает себя с самой лучшей стороны.
Потому что если процедура настолько ёмкая, что портит все регистры, то пара-другая push/pop ей вообще не портит существенно статистику, она уже просто огромная, раз столько регистров нужно.
С другой стороны вызывающий код всегда уверен - краток и внятен.

#296
23:18, 19 мая 2018

=A=L=X=
> то пара-другая push/pop ей вообще не портит существенно статистику

вообще то инлайн-функции не просто так придумали.
Так что лучше разбивать емкие процедуры  на более мелкие которые можно инлайнить.

#297
(Правка: 3:31) 3:31, 20 мая 2018

gamedevfor
> инлайн-функции

Ранее известные как макросы:

  ; keys_is_down
  ; in:  смещение в таблице, маска кнопки
  ; out:  ZF - очищен если кнопка не нажата
  MACRO  KEYS_IS_DOWN vk_offs, vk_mask
    ld a, (keys_map+vk_offs)
    and vk_mask
  ENDM

#298
(Правка: 14:25) 14:23, 20 мая 2018

Блин, раз вечерком сел, два вечерком сел, сегодня уже понимаю что вырисовывается библиотечка зачем то.
Буду выкладывать сюда периодически: https://yadi.sk/d/x2fdEet33WESP8
Там же прямо в папке compiler лежит SjAsmPlus вытащенный из Final Mighty Fight, так что можно перекомпилировать прямо там же. Единственно - за вирусы не ручаюсь, аваст вроде бдит, но можно перекачать и с официального сайта для лучших гарантий.
Сейчас программа выводит на экран статус шифтов и зажатой основной кнопки - бережно воспроизведены коды управляющих символов на цифровой клавиатуре с caps shift.
Это подготовка к созданию процедуры input_string.

#299
19:12, 20 мая 2018

=A=L=X=
> Это подготовка к созданию процедуры input_string.
Зачем?

Страницы: 117 18 19 20 21 22 Следующая »
ФлеймФорумПроЭкты