(C) RUSSOS
Eliminating one Gluck
leads to the other elastic, more heavy
...
(Prokodirovannoe. ..)
Hi everyone! In rannih releases NICRON'a a series of
articles about asembler Z-80. There was given a list of
commands and their purpose. In this series will be continued
this theme and will be considered already different procedures
(print, work with windows, etc.). Basically I'll talk about the
procedures that I wrote for her boot'a (STATION CONTROL). Of
course, I'm not saying that the files of this are ideal. None.
This material data is likely to for beginners, because looking
at my next creation, he would said: "I am better!" Well,
please! Do better! Tinkering with my procedure, study them and
their sozdovay! Well, may be and some coder will these
procedures in their library ...
What do I do with these procedures? Because I do not know in
what asemblere you work, you cite only an example for the
transfer to Masm, where I work.
For a start, unload the text of the newspaper on the disc,
then download in Word and then delete all the text, leaving
only the text of the program. Also delete all comments in the
procedure. Unfortunately not Masm understand the alternative
coding and instead of the text will be delusions (encoding,
alternative understands ALASM, but I it does not work!) and at
the end of the program postavte icon (EXT MODE + dial 26) is
necessary for translation into a format TASM 2. Next vygruzete
its creation on a disk and download the TASM 4. There, press
'I' and the request type in the name of your file (it must be
unloaded with the extension 'C'!) and wait for the translation
into a format TASM 4. Unloaded their text on disk, Gerizim Masm
and click button 'I'. Will List of files in fotmate TASM 4.
Choose the desired and convert him. Everything! Do you have a
text format Masm. Now you can it redaktorovat and debug the STS
in any of its versions (I 5.2)
To begin, I'll show you how to print to the screen. Among
its advantages include high speed, understanding of alternative
encoding, and a fairly simple structure. But the shortcomings:
processing of only one control code '22 '. Others have not been
implemented as unnecessary. I now give the text of the
procedure, and after the examples of its use and
recommendations for improvement.
;---------------; Print lines.
; HL-top of the line.
; Line: 22 new coordinate printing, then the two-byte
themselves to; rdinaty: 1'y - X, 2'oy Y, 0 - end of line
;--------------- PRINT LD A, (HL); reception of the next byte.
CP # 00; check for 0. RET Z; output if the string has
ended. CP # 16; preparation for the installation of a new
CALL Z, UPR_22; coordinate: Dx, Ey.
CALL PRINT_1; printing characters.
INC HL; increase and
JR PRINT; transition to a new character.
;------- UPR_22 INC HL; installation in registers D coordinates
LD D, (HL); coordinates x, and E - y. INC HL;
LD E, (HL);
RET;
;------- PRINT_1 PUSH AF; saving on the stack of all regi PUSH
BC; displaying the. PUSH DE;
PUSH HL;
CP # 16
JR Z, UPR1_22; installation of the new coordinates.
LD L, A; calculation addresses the top line
LD H, # 00; simvla in the font.
ADD HL, HL; FONT-start address-font # 100
ADD HL, HL;
ADD HL, HL;
LD DE, FONT;
ADD HL, DE;
LD DE, (COOR); in DE address the top line of characters;
place. ;-------; Next comes the printing character on the
screen of the font in the familiarity , With an address located
in the COOR. If you do not need the speed, , Then this fragment
can replace the other files of: ; ...
; LD B, 8
; LOOP LD A, (HL)
; LD (DE), A
; INC HL
; INC D
; DJNZ LOOP
; ...
;-------; Top ftagmenta
;------- LD A, (HL)
LD (DE), A
INC HL
INC D
LD A, (HL)
LD (DE), A
INC HL
INC D
LD A, (HL)
LD (DE), A
INC HL
INC D
LD A, (HL)
LD (DE), A
INC HL
INC D
LD A, (HL)
LD (DE), A
INC HL
INC D
LD A, (HL)
LD (DE), A
INC HL
INC D
LD A, (HL)
LD (DE), A
INC HL
INC D
LD A, (HL)
LD (DE), A
INC HL
INC D
;-------; End fragment
;------- LD DE, (COOR); loading in DE address of familiarity
INC DE; increase familiarity address.
LD A, D
CP # 41; check for crossing the boundaries JR Z, PR_L1; ary
1'ogo and 2'ogo segment CP # 49;
JR Z, PR_L2;
LD (COOR), DE; memory addresses familiarity
JR PR_L0
PR_L1 LD DE, # 4800; correction of address
LD (COOR), DE;
JR PR_L0;
PR_L2 LD DE, # 5000;
LD (COOR), DE;
;------- PR_L0 POP HL; Recover registers and WHO POP DE; gate.
POP BC;
POP AF;
RET;
;-------; Standard procedure for calculating the addresses in
the file system on display ; On znakomvstam.
;------- UPR1_22 LD A, E
AND # 18
OR # 40
LD H, A
LD A, E
AND # 07
OR A
RRA
RRA
RRA
RRA
ADD A, D
LD L, A
LD (COOR), HL
JR PR_L0
;------- COOR DEFW # 4000; address of familiarity.
;---------------
That procedure. I hope you understand how it works. Now,
examples of its use.
First example.
To print line in the coordinates 2 (X) and 1 (Y).
LD HL, TXT
CALL PRINT
RET
;--------------- PRINT ...
;--------------- TXT DEFB 22,2,1, "NICRON - THE BEST!"
DEFB 0; end of the line.
EXAMPLE TWO.
To print any character (though '') in the given coordinates
(2,3)
LD A, 22
LD DE, # 0203
CALL PRINT_1; setting the desired print position
LD A, # CE; code symbol ''.
CALL PRINT_1; print.
RET
;--------------- PRINT_1 ...
;---------------
If desired, you can easily modify this procedure
that she understood the other control codes. On to add a check
register A, and perform actions, the appropriate panel. code.
If you add color, you need to add the procedure for calculation
addresses in the file attributes of familiarity
If you have something not working, then call me and I'll help.
For all questions and wishes, too, call me - chat.
I would like to know your opinion: whether such an article in
the future? Their opinions can tell me on the phone or leave
Letter to the BBS, which accept mail for NICRON'a.
(C) RUSSOS
461-84-81 (Sasha)
from 16.00 to 23.00
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~