WELCOME TO THE ZX-NEWS SITE!

Оригинальная заставка ZX-News #50

От редакции Новости ПО
Гуру
ZX-Party
Старина Z80
В Новый год

ZX-News #50
Спектрумовская электронная газета

Издание посвящено всему, что связано
с таким замечательным явлением в компьютерном мире как
старый добрый Спектрум.

Старина Z80

Cегодня у нас открытие новой рубрики — подарок для людей (?), которых хлебом не корми, а дай создать в ассемблере какую-нибудь сногсшибательную процедуру. :)

Надеемся, этот раздел будет появляться в нашей газете достаточно часто, но гарантировать это, к сожалению, нельзя. Ведь кодеры привыкли изъясняться на машинном языке, и посему объяснить для смертных принцип какой-нибудь команды зачастую для них сложнее, чем исполнить на китайском языке русские народные песни. ;-)

А сейчас мы представляем вам Ивана Рощина (Москва), автора BestView и многочисленных публикаций в прессе, который, можно сказать, и открывает новую рубрику. :)



© Иван Рощин, 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

главное меню номера


Copyright © 2001–2013 The ZX-News Site