KrNews
#05
24 июля 1998 |
|
Кодерам - Быстрая процедура точки.
┌──────────────────────────────────────┐ │ CODING │ └──────────────────────────────────────┘ (C) Viper/Techno Laboratory Посмотрев другие компьютерные газеты, я нашел там разделы, посвященные программистам. Думаю, что НАША (ВАША!) газета ничем не хуже (по-моему даже лучше многих) и пора восполнить этот пробел. Сегодня здесь будет 4 процедуры, которые довольно часто используются при программировании: 1) быстрая процедура точки 2) обмен двух областей памяти 3) быстрое деление 4) быстрое умножение 1) Над этой процедурой я долго ломал голову и изобрел (как оказалось позднее) велосипед. Но зато потом я придумал процедуру еще быстрее (69 тактов), но ее я вам не дам, если кому надо, тот сам придумает. :-) Этот вариант берет 73 такта, для его работы нужно 1024 байта непрерывной памяти. Подпрограмма создания таблиц об- зывается CRT. Координаты точки задаются в DE (XY). Таблицы падают вниз, то есть если PTY=#FE00, то еще 3 сектора ниже будут использованы. В самой процедуре точки (ZIP) вторая команда LD H,'PTY есть ничто иное как операция выделения старшего байта (ALASM). Подобная команда имеется в STORM, и насколько мне известно ZXASM3. Если Ваш ассемблер не поддерживает подобные вещи, задайте старший байт напрямую, хотя это и неудобно. ;ZIP PLOT 1.4 ;Author: Viper of TechnoLab ;73 Tacts, 4 Tables take 4 sectors ;PTY - Down HiB, LEN=192 ;PTX - Down LoB, LEN=192 ;ADX - Div8 Lin, LEN=256 ;PTB - BitSet N, LEN=256 PTY EQU #FF00 ;PTX EQU #FE00 ;ADX EQU #FD00 > для справки ;PTB EQU #FC00 / ORG 40000 ENT CALL CRT LD DE,#0909 ; координаты точки CALL ZIP RET ZIP LD L,E LD H,'PTY LD B,(HL) DEC H LD A,(HL) DEC H LD L,D ADD A,(HL) LD C,A DEC H LD A,(BC) XOR (HL) LD (BC),A RET CRT LD HL,PTY ; создание таблиц LD DE,#4000 ; основной экран LD BC,#C020 CR1 LD (HL),D DEC H LD (HL),E INC L INC H INC D LD A,D AND 7 JR NZ,$+12 LD A,E SUB #E0 LD E,A JR NC,$+6 LD A,D SUB 8 LD D,A DJNZ CR1 LD L,H ;только для данных адресов DEC H ;в общем случае LD L,#FF DEC H CR3 DEC C LD B,8 CR2 LD (HL),C DEC L DJNZ CR2 INC C DEC C JR NZ,CR3 DEC H INC A CR4 LD (HL),A RLCA DEC L DJNZ CR4 RET
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября