?login_element?

Subversion Repositories NedoOS

Rev

Rev 1086 | Rev 1223 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

para512: на старте рисует поверх всего экрана кучу блоков размером 256*65536 - так и надо? пока костыль для rep stosb 65536=0




добавить вариант declputm16_oldpg, где писать в обратном порядке, чтобы можно было включить старую страницу


в некоторых случаях ld b,tscrpgs можно заменить на inc b?


что эффективнее - быстрый sp с проверкой 18t при каждой записи r16 (чтобы включить страницу) или sp как обычный регистр (и лишний сегмент под код)?

в call/jmp/ret сделать такую же проверку быстрого выхода, как в jr


флаги чётности и переполнения отключать настройкой?
имеет смысл отключить оба в сдвигах
чётность оставить только в логике
переполнения оставить только в арифметике


не формировать сразу флаг чётности, а копировать последний результат в регистр. когда надо будет перейти по чётности (это редко надо), тогда и посчитаем чётность
тогда логические операции и сдвиги через rlca/rla/rrca/rra, чтобы не менять флаги вообще, кроме C
флаг AC (x86) = флаг H (Z80)

сдвиги также формируют флаг O: The OF flag is affected only on 1-bit shifts. For left shifts, the OF flag is set to 0 if the most significant bit of the result is the same as the CF flag (that is, the top two bits of the original operand were the same); otherwise, it is set to 1. For the SAR instruction, the OF flag is cleared for all 1-bit shifts. For the SHR instruction, the OF flag is set to the most-significant bit of the original operand. https://c9x.me/x86/html/file_module_x86_id_285.html  The OF flag is defined only for the 1-bit rotates; it is undefined in all other cases (except that a zero-bit rotate does nothing, that is affects no flags). For left rotates, the OF flag is set to the exclusive OR of the CF bit (after the rotate) and the most-significant bit of the result. For right rotates, the OF flag is set to the exclusive OR of the two most-significant bits of the result. https://c9x.me/x86/html/file_module_x86_id_273.html

во всех командах вручную хранить данные для флага O? rra:ld of,a:rla (если два старших бита разные, то это переполнение). к сожалению, нельзя объединить с данными для флага P (чтобы потом проверять с учётом C), т.к. не все команды меняют одновременно P, O, C (логические сдвиги - только O, C).
тогда все сдвиги точно соответствуют сдвигам на Z80 (логические - через rrca/..., арифметические - через #cb xx)
нужно хранить в регистрах:
8 parity data (d'?)
8 overflow data (e'?)

лучше для единообразия хранить все регистры в памяти
parity,overflow в ix? ничего не даст?

fs,gs нужны только для 386?

лучше CS всегда включать в конкретное окно (4000) и хранить пересчитанный PC
SS всегда включать в другое конкретное окно (8000) (sp не пересчитан для единообразия, но после его изменения надо encodeSP)
третье окно (c000) под данные

как адресовать память по ?s:de = (?s*16 + de)/16384 и mod 16384:
?s*16 сразу хранить как 24 бита (для всех ?s)