* * *
HELLO!!!
Пишут вам Max & Alex from
"CYBERAX Software" (г.Кемерово).
После долгого перерыва мы по-
лучили 3-4 номера ZX-РЕВЮ. Приз-
наемся, нас не очень обрадовала
электронная форма журнала, хотя
мы и не владельцы кассетных Спе-
ктрумов: печатную версию намно-
го легче читать (можно даже чу-
ток всхрапнуть, прикрыв лицо лю-
бимым журналом...) и намного
проще набирать из нее листинги
программ (кстати, раз уж вы пе-
решли на электронную форму, то
почему бы вам не прилагать к
журналу текстовые файлы проце-
дур из статей в форматах рас-
пространенных ассемблеров, нап-
ример, MASM, ZEUS, XAS и др.???)
За время отсутствия журнала у
нас накопилось большое количес-
тво процедур, частью которых мы
хотели бы поделиться с читателя-
ми ZX-РЕВЮ.
Первая процедура предназначе-
на для конверсии цветной спек-
трумовской картинки на IBM. Ре-
зультатом ее работы является 16-
цветная картинка 256*192 точки в
формате BMP, которую затем мож-
но перенести в MS-DOS любым со-
ответствующим копировщиком (IS-
DOS Copy, IBMCOPY и т.д.)
Полученную картинку можно за-
грузить в любой графический ре-
дактор на IBM, распечатать (на-
пример, на цветном принтере),
преобразовать и т.п.
Теперь сама процедура:
140.
ORG 35000
LD HL,HEADER
LD DE,PIC
LD BC,120
LDIR
LD HL,PIC+24566
LD (LINE),HL
LD A,192
LD (YS),A
LD HL,16384
LD (SCADR),HL
MAIN LD B,32
CYCLE LD HL,(SCADR)
LD C,(HL)
LD A,H
SRL A
SRL A
SRL A
OR 88
LD H,A
LD A,(HL)
LD (ATR),A
LD D,4
LOOP SLA C
PUSH DE
CALL PSET
POP DE
LD E,A
SLA E
SLA E
SLA E
SLA E
SLA C
PUSH DE
CALL PSET
POP DE
OR E
LD HL,(LINE)
LD (HL),A
INC HL
LD (LINE),HL
DEC D
JR NZ,LOOP
LD HL,(SCADR)
INC HL
LD (SCADR),HL
DJNZ CYCLE
LD HL,(LINE)
LD DE,256
OR A
SBC HL,DE
LD (LINE),HL
LD HL,(SCADR)
LD DE,32
OR A
SBC HL,DE
INC H
LD A,H
AND 7
JR NZ,DCONT
LD A,L
ADD A,32
LD L,A
JR C,DCONT
LD A,H
SUB 8
LD H,A
DCONT LD (SCADR),HL
LD A,(YS)
DEC A
LD (YS),A
JP NZ,MAIN
RET
PSET JR NC,PAPER
LD A,(ATR)
LD E,A
AND 7
LD D,A
LD A,E
AND 64
RRCA
RRCA
RRCA
OR D
LD H,0
LD L,A
LD DE,TABLE
ADD HL,DE
LD A,(HL)
RET
PAPER LD A,(ATR)
AND 120
RRCA
RRCA
RRCA
LD H,0
LD L,A
LD DE,TABLE
ADD HL,DE
LD A,(HL)
RET
LINE DW 0
SCADR DW 0
YS DB 0
ATR DB 0
TABLE DB 0,4,1,5,2,6,3,7,0
DB 12,9,14,10,14,11,15
PIC EQU 40704
HEADER DW #4D42,#6076,#0000,#0000
DW #0000,#0076,#0000,#0028
DW #0000,#0100,#0000,#00C0
DW #0000,#0001,#0004,#0000
DW #0000,#6000,#0000,#0ECE
DW #0000,#0EC4,#0000,#0000
DW #0000,#0000,#0000,#0000
DW #0000,#0000,#0080,#8000
DW #0000,#8000,#0080,#0080
DW #0000,#0080,#0080,#8080
DW #0000,#C0C0,#00C0,#8080
DW #0080,#0000,#00FF,#FF00
DW #0000,#FF00,#00FF,#00FF
DW #0000,#00FF,#00FF,#FFFF
DW #0000,#FFFF,#00FF,#0000
2
Теперь о том, как пользовать-
ся процедурой: ассемблируете ее,
загружаете спектрумовскую кар-
тинку на экран с адреса 16384 и
запускаете процедуру. После это-
го в памяти с адреса 40704 со-
держится блок длиной 24694 байт,
который нужно будет скопировать
в MS-DOS с расширением BMP.
Вторая процедура выполняет
обратную задачу - конвертирует
черно-белую картинку с IBM на
SPECTRUM (256*192 точки, длина
6206 байт, расширение BMP), ес-
тественно, предварительно пере-
несенную в TR-DOS.
Вот ее листинг:
140.
ORG 40000
LD C,192
LD HL,PIC+6174
LD DE,16384
LP1 PUSH HL
PUSH DE
LD B,32
LP2 LD A,(HL)
LD (DE),A
INC HL
INC DE
DJNZ LP2
POP DE
POP HL
LD A,L
SUB 32
LD L,A
LD A,H
SBC A,0
LD H,A
INC D
LD A,D
AND 7
JR NZ,C1
LD A,E
ADD A,32
LD E,A
JR C,C1
LD A,D
SUB 8
LD D,A
C1 DEC C
JR NZ,LP1
RET
PIC EQU 45000
2
Ассемблируете ее, грузите ис-
ходную картинку с адреса 45000,
запускаете процедуру и получае-
те на экране конвертированное
изображение в формате Спектрума
(увы, без атрибутов...)
────────────