192 => 32 192 a b c d e 32 7 фаз, 6 промежутков 32 40 52 64 80 100 128 32 44 60 80 108 144 192;полное разрешение экрана ;96/2=48 ;мы имеем в 7 странице 37 вариантов -18..0..+18 //---------------------------------------- // Переменные и константы //---------------------------------------- XYZMAX EQU 15 ; максимальная длина по осям (в одну сторону) COR_PZ EQU #E0+XYZMAX ; коэффициент для Z COR_Z EQU #C0+XYZMAX COR_PX EQU XYZMAX COR_PY EQU #20+XYZMAX ; Начальные координаты точек хранятся в формате ; X=X+COR_Z ; Y=Y+COR_Z ; Z=Z+COR_Z ; (т.е. с прибавленным смещением до начала таблиц) ; Диапазон изменения угла вращения 0..127 ; Поворот осуществляется вокруг осей Ox,Oy ; по адресу Ay - угол вращения вокруг Oy ; по адресу Ax - угол вращения вокруг Ox //---------------------------------------- // Формат хранения таблиц: //---------------------------------------- ; Таблица произведений: ; #DB00 #DB80 ; +--------------+--------------+ ; Coord| Coord*cos(A) | Coord*sin(A) | ; +--------------+--------------+ ; Alpha Alpha //---------------------------------------- // Формулы вращения //---------------------------------------- ; OX: ; y` =y*cos(Ax) - z*sin(Ax) ; z` =y*sin(Ax) + z*cos(Ax) ; OY: ; x =x*cos(Ay) - z*sin(Ay) ; z =x*sin(Ay) + z*cos(Ay) //---------------------------------------- // Вращение и проецирование: //---------------------------------------- ROT3D POP BC ;10 взяли координаты C=z B=y //--- вращение по оси Ox: (считаем y` z`) LD L,0 ;7 угол Ax Ax0 EQU $-1 LD H,B ;4 (hl)=y*cos(Ax) LD A,(HL) ;7 LD L,0 ;7 угол Ax+128 Ax1 EQU $-1 LD H,C ;4 (hl)=z*sin(Ax) SUB (HL) ;7 a=y`=y*cos(Ax)-z*sin(Ax) ADD A,COR_PY ;A=таблица проекции LD H,C ;4 SET 7,L ;8 (HL)=Z*sinA SUB (HL) ;7 A=X*cosA-Z*sinA ADD A,COR_PX ;7 LD B,A ;4 LD H,E ;4 LD A,(HL) ;7 LD H,C ;4 RES 7,L ;8 ADD A,(HL) ;7 ADD A,COR_Z ;7 LD C,A ;4 // 49+24+16=89 //--- вращение по оси OX: LD L,0 ;7 Ax EQU $-1 LD H,D ;4 LD A,(HL) ;7 LD H,C ;4 SET 7,L ;8 SUB (HL) ;7 ADD A,COR_PY ;7 LD E,A ;4 LD H,D ;4 LD A,(HL) ;7 LD H,C ;4 RES 7,L ;8 ADD A,(HL) ;7 ADD A,COR_PZ ;7 // 49+24+16=89 длина паттерна 336 прерываний. 168 84 42 21 960 пауза в начале 624 48*13 константы для эффектов 336 - #00с3 168 - #0186 84 - #030C Для компиляции подходят: 21 24 28!!!4000-5AFF - экран 5B00-5BFF - переменные 128 / буфер принтера РІ 48 5C00-5CB5 - системные переменные 48 5CB6 - системные переменные trdos/карта микродрайва 5C4F - информация Рѕ каналах #80 5C53(23635) - Бейсик (или 23755) #3E - RAMTOP (23790&&???) #6200..#6900 - low kernal #6900..#8000 - free (music in part 1) PG_#10 - pack + free_to_use PG_#12 - effect + top_kernal(int, etc...) PG_#15 - scr0 + kernal PG_#16 - music PG_#17 - scr1 + free_to_use for pack: PG_#11 PG_#13 PG_#14 at start for pack: PG_#10 ;---------------- effects page use 10_BEGIN 7 (+#4000 preloaded) 03_SINUS - 02_SPHERE_DOTS 7 11_SCROLL 0 01_GREETS - (or pg7 for text?) 14_BLACKMAN - 07_BOARD_BALLS 0 09_DJ`s 05_TRUBA 7 06_PLASM - 12_CIRCLES_ROTATE 7 04_COLORED_SOSISKA 7, 0, low 13_SETKA_SINUS 7 15_CIRCLES_ZOOMсвободно для эффекта примерно 24kb (если с 7 страницей) или 32kb фон: 64 * 58 /2 = 1856 (или 3712 если храним оба экрана) 1) Чистые кадры 24*48 = 1152 байт/2 = 576 байт кадр 576 * 30 = 17280 байт (если храним 1 экран) для каждой строки храним: длина, старт, данные получится по 16(?) байт в среднем на строку (768 на кадр) - 22272 байт при выводе бордюра всегда свободно 3*5 = 15*224*4 = 13440t за мелким минусом 10,3,2,1,11,14,7,9,5,6,12,4,13,1516 элементов шрифта 60 в высоту 16 градаций угла 16*16 = 256 256 * 30 = 7680 (по две линии в байте из расчета 16 цветов) на каждой из сторон буква всегда не кверх ногами TEXTBUFF - последовательность текстовых элементов 256байт