История изменений
Исправление lenin386, (текущая версия) :
Сама по себе задача сэмулировать LDIR - это задача, которую выдумал ты, и решать её никто не будет. ОК, Пусть будет задача скопировать NNN байт из места XXXX в место YYYY. На Z80 такие вещи принято решать минимум вот так :
LD SP, (YYYY+NNN)
LOOP:
LD HL, (XXXX+NNN); 20
push hl; 11
LD, hl, (XXXX+NNN-2); 20
push hl; 11
и так далее
Вот такие цепочки, да. Встречались килобайтные участки такого кода. Можно комбинировать с операторами цикла. Но и задача пересылки блоков памяти тоже так себе задача. Так на Спектрумах не работают. Например, задача заливки, которая решалась просто с помощью блоков PUSH-ей. Задача вывода спрайтов, которая с LDIR просто не решается. Такие дела. А копировать туда-сюда охренные блоки - зачем. Ведь за прерывание весь экран скопировать тупо невозможно.
Исправление lenin386, :
Сама по себе задача сэмулировать LDIR - это задача, которую выдумал ты, и решать её никто не будет. Надо ставить реальные задачи и решать их. Пусть будет скопировать NNN байт из места XXXX в место YYYY. На Z80 такие вещи принято решать минимум вот так :
LD SP, (YYYY+NNN)
LOOP:
LD HL, (XXXX+NNN); 20
push hl; 11
LD, hl, (XXXX+NNN-2); 20
push hl; 11
и так далее
Вот такие цепочки, да. Встречались килобайтные участки такого кода. Можно комбинировать с операторами цикла. Но и задача пересылки блоков памяти тоже так себе задача. Такой задачи просто не ставилось. Так раньше не думали. Решалась задача заливки, например, которая решалась просто с помощью блоков PUSH-ей. Задача вывода спрайтов, которая с LDIR просто не решается. Такие дела.
Исправление lenin386, :
Сама по себе задача сэмулировать LDIR - это задача, которую выдумал ты, и решать её никто не будет. Надо ставить реальные задачи и решать их. А например скопировать NNN байт из места XXXX в место YYYY. На Z80 такие вещи принято решать минимум вот так :
LD SP, (YYYY+NNN)
LOOP:
LD HL, (XXXX+NNN); 20
push hl; 11
LD, hl, (XXXX+NNN-2); 20
push hl; 11
и так далее
Вот такие цепочки, да. Встречались килобайтные участки такого кода. Можно комбинировать с операторами цикла. Но и задача пересылки блоков памяти тоже так себе задача. Такой задачи просто не ставилось. Так раньше не думали. Решалась задача заливки, например, которая решалась просто с помощью блоков PUSH-ей. Задача вывода спрайтов, которая с LDIR просто не решается. Такие дела.
Исходная версия lenin386, :
Сама по себе задача сэмулировать LDIR - это задача, которую выдумал ты, и решать её никто не будет. Надо ставить реальные задачи и решать их. А например скопировать NNN байт из места XXXX в место YYYY. На Z80 такие вещи принято решать минимум вот так :
LD SP, (YYYY+NNN)
LOOP:
LD HL, (XXXX+NNN); 20
push hl; 11
LD, hl, (XXXX+NNN-2); 20
push hl; 11
и так далее
Вот такие цепочки, да. Встречались килобайтные участки такого кода. Можно комбинировать с операторами цикла. Но и задача пересылки блоков памяти тоже так себе задача. Такой задачи просто не ставилось. Так раньше не думали. Решалась задача заливки, например, которая решалась просто с помощью блоков PUSH-ей. Задача вывода спрайтов.