;****************************************************************** PIC_FN1: ; вход: dE - вертикаль, HL - горизонталь, ; B - цвет точки, A - экран AND A SCF RET NZ IN A,(RGADR) PUSH AF IN A,(PAGE3) EX AF,AF' LD A,SYS_PAGE OUT (PAGE3),A LD A,(WIN_MAP_IX+WIN_GRAF_Y) ADD A,E OUT (RGADR),A LD A,B LD BC,(WIN_MAP_IX+WIN_GRAF_X) ADD HL,BC LD B,A LD A,50H OUT (PAGE3),A LD (HL),A EX AF,AF' OUT (PAGE3),A POP AF OUT (RGADR),A RET PIC_FN2: ; вход: dE - вертикаль, HL - горизонталь. ; IX - длина линии в точках не 0 !!! ; FILL - by A LD D,A ; ???? IN A,(PAGE1) EX AF,AF' LD A,B ADD A,50H OUT (PAGE1),A BIT 0,B LD BC,40H+04000H JR Z,PIC_FN2_NO_2ND LD BC,40H+320+04000H PIC_FN2_NO_2ND: ADD HL,BC LD A,E OUT (RGADR),A DB 0DDH LD A,H AND A JR Z,PIC_FN2_NO256 PIC_FN2_256L: LD B,64 PIC_FN2_256: LD (HL),D INC HL LD (HL),D INC HL LD (HL),D INC HL LD (HL),D INC HL DJNZ PIC_FN2_256 DEC A JR NZ,PIC_FN2_256L PIC_FN2_NO256: DB 0DDH LD B,L AND A RR B JR NC,PIC_FN2_NO1 LD (HL),D INC HL AND A PIC_FN2_NO1: RR B JR NC,PIC_FN2_NO2 LD (HL),D INC HL LD (HL),D INC HL AND A PIC_FN2_NO2: XOR A CP B JR Z,PIC_FN2_NO4 PIC_FN2_4: LD (HL),D INC HL LD (HL),D INC HL LD (HL),D INC HL LD (HL),D INC HL DJNZ PIC_FN2_4 PIC_FN2_NO4: EX AF,AF' OUT (PAGE1),A XOR A OUT (RGADR),A RET ;************************************************************************ PIC_FN3: ; вход: dE - вертикаль, HL - горизонталь. ; A',HL' - адрес данных во второй странице ! ; BC' - длина данных ; ВЫВОД ЛИНИИ ТОЧЕК IN A,(PAGE3) LD C,A LD A,SYS_PAGE OUT (PAGE3),A LD A,C LD (COPY_PAGE3),A IN A,(PAGE2) LD (COPY_PAGE2),A IN A,(PAGE1) LD (COPY_PAGE1),A LD A,B ADD A,50H OUT (PAGE1),A BIT 0,B LD BC,40H+04000H JR Z,PIC_FN3_NO_2ND LD BC,40H+320+04000H PIC_FN3_NO_2ND: ADD HL,BC LD A,E OUT (RGADR),A LD A,H EXX LD D,A EXX LD A,L EXX LD E,A EXX EX AF,AF' OUT (PAGE2),A EX AF,AF' LD HL,RAMD_FAT LD L,A LD A,SYS_PAGE OUT (PAGE3),A LD A,(HL) OUT (PAGE3),A EXX LDIR BIT 6,H JR Z,PIC_FN3_NO RES 6,H EX AF,AF' PIC_FN3_NO: EXX LD A,SYS_PAGE OUT (PAGE3),A LD A,(COPY_PAGE1) OUT (PAGE1),A LD A,(COPY_PAGE2) OUT (PAGE2),A LD A,(COPY_PAGE3) OUT (PAGE3),A XOR A OUT (RGADR),A RET ;************************************************************************** PIC_FN4: ; вход: HL - данные палитры RGB, E - начальный цвет ; D - число цветов, B - PAL-mask, A - page PAL PUSH IX EX AF,AF' IN A,(RGADR) PUSH AF ; сохранить положение RGADR LD A,E OUT (RGADR),A ; начальный цвет в порт LD A,D ; сохранить число цветов EX AF,AF' ; вернуть страницу PAL BIT 7,H ; проверить адрес данных LD C,PAGE3 ; если ниже 8000h LD D,0C3H ; то граф.экран на странице 3 JR Z,PIC_FN4_NO_PAGE1 LD D,043H ; иначе LD C,PAGE1 ; на странице 1 PIC_FN4_NO_PAGE1: ADD A,A ;JR C,PIC_PAL_READ ADD A,A AND 1CH XOR 0E0H ; младший байт адреса PAL LD E,A ; DE - адрес в видео-ОЗУ PUSH DE POP IX ; адрес палитры LD D,B ; маска PAL EX AF,AF' ; вернуть число цветов LD B,A ; число цветов IN E,(C) ; сохранить страницу 3 LD A,50H ; страница графического RAM OUT (C),A PIC_FN4_L1: ; цикл установки цветов палитры LD A,(HL) ; B AND D LD (IX+2),A INC HL LD A,(HL) ; G AND D LD (IX+1),A INC HL LD A,(HL) ; R AND D LD (IX+0),A INC HL LD A,(HL) ; Y AND D LD (IX+3),A INC HL IN A,(RGADR) INC A OUT (RGADR),A DJNZ PIC_FN4_L1 ; выполнять, пока не 0 OUT (C),E ; восстановить страницу 3 POP AF OUT (RGADR),A ; восстановить Y_PORT POP IX ;AND A RET ; PIC_PAL_READ: ; ADD A,A ; AND 1CH ; XOR 0E0H ; младший байт адреса PAL ; LD E,A ; DE - адрес в видео-ОЗУ ; PUSH DE ; POP IX ; адрес палитры ; LD D,B ; маска PAL ; EX AF,AF' ; вернуть число цветов ; LD B,A ; число цветов ; IN E,(C) ; сохранить страницу 3 ; LD A,50H ; страница графического RAM ; OUT (C),A ; PIC_FN4_L2: ; цикл установки цветов палитры ; LD A,(IX+2) ; LD (HL),A ; B ; INC HL ; LD A,(IX+1) ; LD (HL),A ; G ; INC HL ; LD A,(IX+0) ; LD (HL),A ; R ; INC HL ; LD A,(IX+3) ; LD (HL),A ; Y ; INC HL ; IN A,(RGADR) ; INC A ; OUT (RGADR),A ; DJNZ PIC_FN4_L2 ; выполнять, пока не 0 ; OUT (C),E ; восстановить страницу 3 ; POP AF ; OUT (RGADR),A ; восстановить Y_PORT ; POP IX ; AND A ; RET ;******************************************************************** PIC_FN5: ; УСТАНОВКА СТРАНИЦЫ MODE LD A,E AND 1 OUT (RGMOD),A RET ;******************************************************************* PIC_FN6: ; A - page_pal, E - номер палитры, B - тип палитры LD D,A DEC B JP Z,SET_PAL_GRAF DEC B JP Z,SET_PAL_ZX ; DEC B ; JP Z,SET_PAL_IBM ; LD IX,PAL_DAT1 ; JR Z,PIC_FN6_L1 ; DEC B ; LD IX,PAL_DAT ; JR Z,PIC_FN6_L1 SCF RET ;PIC_FN6_L1: ; AND 3 ; ADD A,A ; ADD A,A ; ADD A,0E0H ; LD L,A ; LD H,43H ; IN A,(PAGE1) ; PUSH AF ; ; LD A,50H ; OUT (PAGE1),A ; XOR A ; OUT (RGADR),A ; EX AF,AF' ; call PAL_LOOP_M ; ; POP AF ; OUT (PAGE1),A ; XOR A ; OUT (RGADR),A ; ; RET ;****************************************************************** PIC_FN7: ; Рисование линии. dЕ - вертикаль, HL - горизонталь ; H' - высота, C'/DE',B' - add_parameters ; A - color LD D,A IN A,(PAGE1) PUSH AF LD A,B ADD A,50H OUT (PAGE1),A BIT 0,B LD BC,40H+04000H JR Z,PIC_FN7_NO_2ND LD BC,40H+320+04000H PIC_FN7_NO_2ND: ADD HL,BC LD A,E PIC_FN7_L1: OUT (RGADR),A ; страница видео-ОЗУ LD (HL),D EXX EX AF,AF' DEC H JR Z,PIC_FN7_EXIT LD A,C ; NEXT HORIZONTAL ADD A,B LD C,A LD A,E EXX ADC A,L LD L,A EXX LD A,D EXX ADC A,H LD H,A INC E ; NEXT VERTICAL EX AF,AF' INC A JR PIC_FN7_L1 PIC_FN7_EXIT: EXX POP AF OUT (PAGE1),A XOR A OUT (RGADR),A RET ;****************************************************************** PIC_FN8: ; Рисование линии. dЕ - вертикаль, HL - горизонталь ; H' - высота, C'/DE',B' - add_parameters ; (IX) - color IN A,(PAGE1) PUSH AF LD A,B ADD A,50H OUT (PAGE1),A BIT 0,B LD BC,40H+04000H JR Z,PIC_FN8_NO_2ND LD BC,40H+320+04000H PIC_FN8_NO_2ND: ADD HL,BC LD A,E PIC_FN8_L1: OUT (RGADR),A ; страница видео-ОЗУ LD D,(IX) INC IX LD (HL),D EXX EX AF,AF' DEC H JR Z,PIC_FN8_EXIT LD A,C ; NEXT HORIZONTAL ADD A,B LD C,A LD A,E EXX ADC A,L LD L,A EXX LD A,D EXX ADC A,H LD H,A INC E ; NEXT VERTICAL EX AF,AF' INC A JR PIC_FN8_L1 PIC_FN8_EXIT: EXX POP AF OUT (PAGE1),A XOR A OUT (RGADR),A RET ;************************************************** ; Вывод спрайта на экран PIC_FN9: ; HL - горизоталь, dE - вертикаль ; A',HL' - адрес данных ;********************************* PIC_FN10: ; HL,E - координаты D - color ; B - Magnify PIC_FN11: PIC_FN12: PIC_FN13: PIC_FN14: PIC_FN15: SCF RET ;************************************ ; ; Экранные таблицы ; LP_SCR_80: ; DB 40,32,0,0,1BH,0,0,0 ; DB 0,0,0,0,0,0,0,0 ; ; ; LP_SCR_40: ; DB 40,32,0,0,7BH,0,0,0 ; DB 0,0,0,0,0,0,0,0 ; LP_SCR_32: ; DB 32,24,4,4,30H,1,0,0 ; DB 0,0,0,0,0,0,0,0 ; LP_SCR_64: ; DB 32,24,4,4,9BH,0,0,0 ; DB 0,0,0,0,0,0,0,0 ; PIC_320X256_1: ; DB 40,32,0,0,20H,0,8,0 ; DB 0,0,0,0,0,0,0,0 ; ; ; PIC_320X256_2: ; DB 40,32,0,0,60H,0,48,0 ; DB 0,0,0,0,0,0,0,0 ; ;************************************ ;