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 или куда там...
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября