LINUX.ORG.RU

История изменений

Исправление 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-ей. Задача вывода спрайтов.