БЫСТРАЯ ПЕЧАТЬ 42, 64 СИМВОЛА В СТРОКЕ. (C) Eraser/Delirium Tremens __________________________________________ ай, пиплы! Ну как вам наша оболочка? Вроде нормальная, хотя в будующем ее нем- ного улучшем (у нас уже есть некоторые идеи...). Ну а теперь перейдем непосредственно к самой статье... Как-то решил я от безделья порыться в различных СМИ: читаю: "печать 42 символа", "печать 64 символа". Думаю - крутяк, срав- ню со своими... Но, обломчик получается. Скорость поражает (даже в оболочке Text Maker`а скорость выше!). Ну да ладно. Вот я и решил опубликовать на самом деле ultra fast печаталки (они применены в ТМ и ес- тественно в "гляделки" нашего журнала). Начнем с 42 - символьной. Шрифт линейный: ;+-------------------------------------------------------------+ ;│ Ultra-Fast печаталка на 42 символа: Eraser/Delirium Tremens │ ;+-------------------------------------------------------------+ ;│Вход: HL - адрес печати на экране │ ;│ #ХХ28 - адрес расположения данных для печати (42 byte)│ ;│Выход: HL - адрес след. строчки на°экране │ ;│ DE - адрес расположения данных для печати │ ;+-------------------------------------------------------------+ ORG #C000 FONT42 + INCBIN "font_u" ORG #б028 SPACE DEFB "*************** FUNeral #01 **************" Start LD HL,#4000 CALL PR_42 RET PR_42 PUSH HL XOR A LD (HL),A INC H LD (HL),A INC H LD (HL),A INC H LD (HL),A INC H LD (HL),A INC H LD (HL),A INC H LD (HL),A INC H LD (HL),A POP HL LD В,'FONT42 LD DE,SPACE Loop_1 LD A,(DE) INC Е LD C,A LD A,(ВС) RRA RRA OR (HL) LD (HL),A LD A,(DE) INC Е LD C,A LD A,(ВС) INC L LD (HL),A LD A,L CPL AND #1F JR Z,Loop_2 LD A,(DE) INC Е LD C,A LD A,(ВС) RLA LD C,A LD A,#00 RLA RL C RLA OR (HL) LD (HL),A INC L LD (HL),C LD A,(DE) INC Е LD C,A LD A,(ВС) LD C,#00 RRA RRA RRA RR C RRA RR C OR (HL) LD (HL),A INC L LD (HL),C JP Loop_1 Loop_2 LD A,L AND #Е0 LD L,A INC H INC В LD A,H AND #07 LD Е,#28 JR NZ,Loop_1 LD A,L ADD A,#20 LD L,A RET C LD A,H SUB #08 LD H,A RET ORG Start А теперь 64 - символа. Напечатать их го- раздо проще,т.к. нет никакой "заумной" ро- тации и т.д. и т.п. Все же очень элемен- тарно: в одно знакомство входят два сим- вола (4*8)... Шрифт, как и для 42 - символов, линейный. В одной матрице содержатся две копии сим- вола: ;+-------------------------------------------------------------+ ;│ Ultra-Fast печаталка на б4 символа: Eraser/Delirium Tremens │ ;+-------------------------------------------------------------+ ;│Вход: HL - адрес печати на экране │ ;│ DE - адрес расположения данных для печати (б4 byte)│ ;│Выход: HL - адрес след. строчки в curmehte° │ ;+-------------------------------------------------------------+ ORG #C000 FОNTбЧ +INCBIN "б4_ТАВ" ORG #б000 Start LD HL,#4000 LD DE,SPACE CALL PRT_б4 RET SPACE DEFB "*************************** FUNeral #01 *********" DEFB "***************" PRT_б4 LD В,#40/#02 Loop_б4 PUSH ВС LD A,(DE) CALL PR_б4_L INC DE LD A,(DE) CALL PR_б4_R INC DE POP ВС DJNZ Loop_б4 RET PR_б4_L LD В,'FОNTбЧ; Печать в левой части знакоместа LD C,A DUP 7 LD A,(ВС) AND #F0 LD (HL),A INC H INC В EDUP LD A,(ВС) AND #F0 LD (HL),A LD A,H SUB #07 LD H,A RET PR_б4_R LD В,'FОNTбЧ; Печать в правой части знакоместа LD C,A DUP 7 LD A,(ВС) AND #0F OR (HL) LD (HL),A INC H INC В EDUP LD A,(ВС) AND #0F OR (HL) LD (HL),A LD A,H SUB #07 LD H,A INC L RET ; ORG Start Р.S. Я не ставлю свой копирайт на эти про- цедуры, т.к. это было бы все равно что присвоить себе (C) на процедуру DOWN_HL;)