Rev 1086 | Rev 1223 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download
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) и хранить пересчитанный PCSS всегда включать в другое конкретное окно (8000) (sp не пересчитан для единообразия, но после его изменения надо encodeSP)третье окно (c000) под данныекак адресовать память по ?s:de = (?s*16 + de)/16384 и mod 16384:?s*16 сразу хранить как 24 бита (для всех ?s)