ZX-News
#50
30 декабря 1999 |
|
Старина Z80 - Печать копии спектрумовского экрана в псевдографике.
╔═───────────────════════───────────────═╗ │ Старина Z80 │ ╚═──────────══════════════════──────────═╝ Сегодня у нас открытие новой рубрики - подарок для людей (?), которых хлебом не корми, а дай создать в ассебмлере какую- нибудь сногсшибательную процедуру. :) Надеемся, этот раздел будет появляться в нашей газете достаточно часто, но гаран- тировать это, к сожалению, нельзя. Ведь кодеры привыкли изъясняться на машинном языке, и посему объяснить для смертных принцип какой-нибудь команды зачастую для них сложнее, чем исполнить на китайском языке русские народные песни. ;-) А сейчас мы представляем вам Ивана Ро- щина (Москва), автора BestViev и многочис- ленных публикаций в прессе, который, можно сказать, и открывает новую рубрику. :) __________________________________________ (C) Иван Pощин, 1999 Предлагаю вашему вниманию программу, которая очень пригодится в случае, когда нужно напечатать копию спектрумовского эк- рана в сильно увеличенном виде. Эта прог- рамма перекодирует экранный файл в тексто- вый псевдографический файл, а его легко можно распечатать на принтере. После печа- ти как раз получится изображение формата А2. Впрочем, изображение можно порезать на куски в текстовом редакторе и печатать по частям, если принтер не поддерживает фор- мат А2. __________________________________________ ; Вход: с #4000 - экранный файл (ч/б) ; Выход: с #8000 - текстовый файл (длина #6100) ; Pазмер объектного кода: 103 байта. DESTIN EQU #8000 LD DE,#00BF ;координаты LD HL,DESTIN ;адрес txt LD B,128 LP_MAIN PUSH BC ;главный цикл LP_2 CALL GET_P ADD A,A LD B,A INC D CALL GET_P DEC D ADD A,B EXX LD HL,DECODE LD D,0 LD E,A ADD HL,DE LD A,(HL) EXX LD (HL),A INC HL DEC E LD A,E CP -1 JR NZ,LP_2 INC D INC D LD E,191 LD (HL),13 ;код INC HL ;перевода LD (HL),10 ;строки INC HL POP BC DJNZ LP_MAIN RET ;----------------------------------------- DECODE DB " ","~","~","~" ;символы ;----------------------------------------- ;Процедура GET_P - узнать цвет точки ; ;Вход: DE - координаты точки (X,Y) ;Выход: A - цвет (0 или 1) ; ;Значения других регистров не меняются. GET_P PUSH HL PUSH DE PUSH BC LD A,E AND A RRA SCF RRA AND A RRA XOR E AND #F8 XOR E LD H,A LD A,D RLCA RLCA RLCA XOR E AND #C7 XOR E RLCA RLCA LD L,A LD A,D AND 7 LD B,A INC B LD A,1 LOOP RRCA DJNZ LOOP LD B,(HL) AND B POP BC POP DE POP HL CP 0 RET Z LD A,1 RET __________________________________ ───══════════════════───
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября