|
Echo
#03
31 марта 1997 |
|
Маленькие хитрости-2 - Как перекинуть целый экран в один INT.

┌════════════════════════════════════════┐
│░░░░░░░░░ Маленькие хитрости-2 ░░░░░░░░░│
└════════════════════════════════════════┘
VfNG/NEW
Сейчас я поведаю вам способ, как пере-
кинуть целый экран в 1 INT. Надо оговорит-
ся: во-первых, этот фокус пройдет только
на машинах с нераздельными полями памяти,
а во-вторых, речь пойдет не о перекидке
абсолютно произвольного участка памяти в
любой момент времени, а о перекидке пред-
варительно раскрученного фиксированного
участка размером в 6144 байт.
Итак, существует только один способ,
позволяющий сотворить такое чудо. 6144/2*
(LD HL,N: PUSH HL) занимает 3072*(10+11)=
64512 тактов, т.е. позволяет уложиться и
еще немного времени остается.
У кого что-то в чайнике есть, тот уже
должен уловить идею. Теперь приведу 'рас-
кручиватель'.
PROC-где формировать процедуру
SCREEN-адрес картинки в памяти
LD HL,PROC
LD DE,SCREEN+6142
LD BC,6144
L1 LD (HL),#21 ;LD HL,
INC HL
EX DE,HL
LDI
LDI
EX DE,HL
LD (HL),#E5 ;PUSH HL
INC HL
DEC DE
DEC DE
DEC DE
DEC DE
JP PE,L1
Ну, и естественно, перед входом в PROC
стоит дать LD SP,#5800 или куда там...
Другие статьи номера:
Похожие статьи:
В этот день... 15 ноября