Из журнала Funeral #1, Барнаул, 03.1999 БЫСТРАЯ ПЕЧАТЬ 42, 64 СИМВОЛА В СТРОКЕ. (C) Eraser/Delirium Tremens __________________________________________ Хай, пиплы! Ну как вам наша оболочка? Вроде нормальная, хотя в будующем ее нем- ного улучшем (у нас уже есть некоторые идеи...). Ну а теперь перейдем непосредственно к самой статье... Как-то решил я от безделья порыться в различных СМИ: читаю: "печать 42 символа", "печать 64 символа". Думаю - крутяк, срав- ню со своими... Но, обломчик получается. Скорость поражает (даже в оболочке Text Maker'а скорость выше!). Ну да ладно. Вот я и решил опубликовать на самом деле ultra fast печаталки (они применены в TM и ес- тественно в "гляделки" нашего журнала). Начнем с 42 - символьной. Шрифт линейный: ;+-------------------------------------------------------------+ ;| Ultra-Fast печаталка на 42 символа: Eraser/Delirium Tremens | ;+-------------------------------------------------------------+ ;|Вход: HL - адрес печати на экране | ;| #XX28 - адрес расположения данных для печати (42 byte)| ;|Выход: HL - адрес след. строчки на экране | ;| DE - адрес расположения данных для печати | ;+-------------------------------------------------------------+ ORG #C000 FONT42 + INCBIN "font_v" ORG #6028 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 B,'FONT42 LD DE,SPACE Loop_1 LD A,(DE) INC E LD C,A LD A,(BC) RRA RRA OR (HL) LD (HL),A LD A,(DE) INC E LD C,A LD A,(BC) INC L LD (HL),A LD A,L CPL AND #1F JR Z,Loop_2 LD A,(DE) INC E LD C,A LD A,(BC) 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 E LD C,A LD A,(BC) 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 #E0 LD L,A INC H INC B LD A,H AND #07 LD E,#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 печаталка на 64 символа: Eraser/Delirium Tremens | ;+-------------------------------------------------------------+ ;|Вход: HL - адрес печати на экране | ;| DE - адрес расположения данных для печати (64 byte)| ;|Выход: HL - адрес след. строчки в сигменте | ;+-------------------------------------------------------------+ ORG #C000 FONT64 +INCBIN "64_TAB" ORG #6000 Start LD HL,#4000 LD DE,SPACE CALL PRT_64 RET SPACE DEFB "*************************** FUNeral #01 *********" DEFB "***************" PRT_64 LD B,#40/#02 Loop_64 PUSH BC LD A,(DE) CALL PR_64_L INC DE LD A,(DE) CALL PR_64_R INC DE POP BC DJNZ Loop_64 RET PR_64_L LD B,'FONT64; Печать в левой части знакоместа LD C,A DUP 7 LD A,(BC) AND #F0 LD (HL),A INC H INC B EDUP LD A,(BC) AND #F0 LD (HL),A LD A,H SUB #07 LD H,A RET PR_64_R LD B,'FONT64; Печать в правой части знакоместа LD C,A DUP 7 LD A,(BC) AND #0F OR (HL) LD (HL),A INC H INC B EDUP LD A,(BC) AND #0F OR (HL) LD (HL),A LD A,H SUB #07 LD H,A INC L RET ; ORG Start P.S. Я не ставлю свой копирайт на эти про- цедуры, т.к. это было бы все равно что присвоить себе (C) на процедуру DOWN_HL;)