ZX Format #02
30 ноября 1995
  IS-DOS  

IS-DOS - programmers No 2

<b>IS-DOS</b> - programmers No 2
Category "IS-DOS - the programmers." No 2


              Eliseev VA

       "The window system IS-DOS"

          (Journal version)

(C) PENCRAFT 1995
(C) IskraSoft 1995

Continued from the No 1.
_________________________________________


            Restarts printing.


    The next major operation - print text messages - is 
presented in IS-DOS system, the whole group of restarts,

differing mainly in a manner
set the initial parameters and some
additional capabilities.


    In total, the level WIND.SYS
There are 7 restarts relating to the process of print texts. 
The first three of them characterized using as

coordinates printing of the information contained
in the vector window (Print pos, Print size,
Y-coord). Almost three restart
constitute a program with three points of entry for setting 
various parameters. 


                lwt (# 65)


    lwt (# 65) - allows you to print in
window specified number of rows from a text buffer with indent 
on Y from the upper edge of the window.



   Input parameters:


  C - code restart (# 65)

  IX - the address of the vector window

  HL - address of text buffer

  A - the value of the indentation on the top of the Y

       window border

  B - number of printed lines


    The format of the text buffer for lwt is standard for most 
restarts printing in IS-DOS: characters are placed 
sequentially, starting from the first location in the direction 
of increasing addresses, lines are separated by the symbol code 
# 0D, handle end of the text - the character with code # 03. 


    When working lwt marker # 03 is not necessary, since the 
printed text is limited to a specified number of rows. However, 
If the marker # 03 will meet in the text to how will print the 
required number of lines, printing stops. Newline characters, 
too, are not mandatory, since reaching the right edge of the 
window printing continues with the next

row, and row count takes into account
this is so regardless of the characters # 0D box is printed the 
specified number of rows. The rest of the the text is cropped.



    If the specified number of rows exceeds the size of the 
window, the text continues to be displayed outside. 


    When working restart lwt saved
unaltered contents of the register IX and in the register pair 
HL. 


   Consider this example:

;****************************************

; Listing 4 Example lwt (# 65)


       ORG # 5D64

; Opening windows


       CALL CLS

       LD IX, WIND1

       LD C, # 1961

       LD A, 2

       RST # 10

       LD IX, WIND2

       LD C, # 1961

       LD A, 0

       RST # 10

       CALL WAIT

; Printing lines of text from the clipboard in window 1


       LD IX, WIND1; address vector window

       LD HL, TEXT1; address text

       LD C, # 65; code restart

       LD A, 1; indented with Y

       LD B, 4 rows

       RST # 10


       CALL WAIT

; Printing lines of text from the clipboard in window 2


       LD IX, WIND2

       LD HL, TEXT2

       LD C, # 1965

       LD A, 1

       LD B, 4

       RST # 10


       CALL WAIT

       JP EXIT

; Vectors windows

WIND1 DEFB 5

       DEFB 2

       DEFB 8

       DEFB 20

       DEFB% 00001111

       DEFB% 00000001

       DEFB 8

       DEFB 20

WIND2 DEFB 5

       DEFB 12

       DEFB 8

       DEFB 20

       DEFB% 00001111

       DEFB% 00000001

       DEFB 8

       DEFB 20

; Text buffers

TEXT1 DEFM "Restart lwt (65)"

       DEFB 13

       DEFM "allows you to print"

       DEFB 13

       DEFM "in the text box of"

       DEFB 13

       DEFM "text buffer."

       DEFB 13

TEXT2 DEFM "in the register B is set to"

       DEFB 13

       DEFM "rows"

       DEFB 13

       DEFM "want"

       DEFB 13

       DEFM "print"

       DEFB 13

; Additional procedures

CLS LD C, # 73; restart cls

       RST # 10; to clear the screen

       RET

WAIT LD C, # 07; restart ttyin

       RST # 10; to wait for the clicking
       RET; Tia Keys

EXIT XOR A; standard output

       LD A, # F4; in the IS-DOS

       RET

;****************************************


    The output is Listing 1
see Fig. 4.



    Restart lwt (# 65)

    to print

    in the text box of

    Text Buffer



    in the register B is set

    number of rows

    which is necessary

    print



 Fig. 4: Printing text in the box lwt (# 65)



               adrwt (# 66)


    adrwt (# 66) - is designed to
print in the text box located
immediately after the vector window.


   Input parameters:


  C - code restart (# 66)

  IX - the address of the vector window


    Restart adrwt very convenient for printing windows with 
text, tightly bound to specific window. Its main advantage

- Only one input parameter (not counting
code itself restart in case C).


    For text output on the screen adrwt uses the same procedure 
as lwt, so all that was said about text format for lwt, valid 
for adrwt. Upon reaching the bottom of the window

printing stops and the rest
text is ignored.


    When working restart adrwt content
Register IX is retained.


   Example:

;****************************************

; Listing 5 Printing with adrwt (# 66)


       ORG # 5D64

; Opening windows


       CALL CLS

       LD IX, WIND1

       LD C, # 1961

       LD A, 2

       RST # 10

       LD IX, WIND2

       LD C, # 1961

       LD A, 0

       RST # 10

       CALL WAIT

; Printing lines of text in window 1


       LD IX, WIND1; address vector window

       LD C, # 66; code restart

       RST # 10


       CALL WAIT

; Printing lines of text in window 2


       LD IX, WIND2

       LD C, # 1966

       RST # 10


       CALL WAIT

       JP EXIT

; Vectors windows

WIND1 DEFB 5

       DEFB 3

       DEFB 7

       DEFB 20

       DEFB% 00001111

       DEFB% 00000001

       DEFB 8

       DEFB 20

The text window 1


       DEFM "Restart adrwt (66)"

       DEFB # 0D

       DEFM "allows you to print"

       DEFB # 0D

       DEFM "text following"

       DEFB # 0D

       DEFM "vector for the window."

       DEFB # 03

WIND2 DEFB 5

       DEFB 12

       DEFB 7

       DEFB 20

       DEFB% 00001111

       DEFB% 00000001

       DEFB 8

       DEFB 20

The text window 2


       DEFM "Lines are separated by"

       DEFB # 0D

       DEFM "symbol with a code # 0D"

       DEFB # 0D

       DEFM "end of the text -"

       DEFB # 0D

       DEFM "symbol with the code # 03" "

       DEFB # 03

; Additional procedures

CLS LD C, # 73; restart cls

       RST # 10; to clear the screen

       RET

WAIT LD C, # 07; restart ttyin

       RST # 10; to wait for the clicking
       RET; Tia Keys

EXIT XOR A; standard output

       LD A, # F4; in the IS-DOS

       RET

;****************************************


               lenwt (# 67)


    lenwt (# 67) - also designed to
print text in the box but the text does not
assigned to the vector of a particular window, and can be 
arbitrarily in the program.



    The main advantage of the restart lenwt
- The ability to print one text
several windows, and vice versa - an opportunity
print different texts in one window.


   Input parameters:


  C - code restart

  IX - the address of the vector window

  HL - address of the text


    When working restart lenwt content
Register IX and in the register pair HL is preserved.


   Example:

;****************************************

; Listing 6 Print by lenwt (# 67)


       ORG # 5D64

; Opening windows


       CALL CLS

       LD IX, WIND1

       LD C, # 1961

       LD A, 2

       RST # 10

       LD IX, WIND2

       LD C, # 1961

       LD A, 0

       RST # 10

       CALL WAIT

; Printing lines of text from the clipboard in window 1


       LD IX, WIND1; address vector window

       LD HL, TEXT; address text

       LD C, # 67; code restart

       RST # 10


       CALL WAIT

; Printing lines of text from the clipboard in window 2


       LD IX, WIND2

       LD HL, TEXT

       LD C, # 1967

       RST # 10


       CALL WAIT

       JP EXIT

; Vectors windows

WIND1 DEFB 5

       DEFB 3

       DEFB 7

       DEFB 20

       DEFB% 00001111

       DEFB% 00000001

       DEFB 8

       DEFB 20

WIND2 DEFB 5

       DEFB 12

       DEFB 7

       DEFB 20

       DEFB% 00001111

       DEFB% 00000001

       DEFB 8

       DEFB 20

; Text buffer

TEXT DEFM "Restart lenwt (67)"

       DEFB # 0D

       DEFM "allows you to print"

       DEFB # 0D

       DEFM "the text being"

       DEFB # 0D

       DEFM "anywhere"

       DEFB # 0D

       DEFM "program"

       DEFB # 03

; Additional procedures

CLS LD C, # 73; restart cls

       RST # 10; to clear the screen

       RET

WAIT LD C, # 07; restart ttyin

       RST # 10; to wait for the clicking
       RET; Tia Keys

EXIT XOR A; standard output

       LD A, # F4; in the IS-DOS

       RET

;****************************************


    The output in Listing 6
shown in Fig. 5:



    Restart lenwt (67)

    to print

    These appear

    anywhere

    program



    Restart lenwt (67)

    to print

    These appear

    anywhere

    program



 Fig. 5: Printing text lenwt (# 67)



                                     ...
...


               prstr (# 68)


    Restart prstr (# 68) - the most powerful and
universal of all restarts that are intended for printing lines 
of text in the window. Its main advantage is the ability to 
automatically align line to the left and right, as well as

centering line. Restart has 4 sub-functions, allowing to 
set-printable string in different ways. Subfunction code placed 
in the register E: 

 E = 0 - print lines on a logical

       name defined in a special

       array analyzer
 E = 1 - print line of a given length,

       contained at the address
 E = 2 - the service sub-function, which is neither
       Why not print, but it allows you
       number of parameters for the previous

       subfunctions, knowing the starting address

       text buffer and line number
 E = 3 - print line number on it

       text - is actually

       a combination of subfunctions 2 and 1


    Manager subfunctions has "protection from
fool - if you set in the register E number greater than 3, it 
will automatically be set to zero. 


    Now consider in more detail the work with application 
restart prstr (# 68). 


    For a start - general provisions. When
call to restart in case A should be the number that defines two 
basic print options - alignment mode

(The two most significant bits) and an offset in the Y from the 
top of the window (six bits). Alignment mode is encoded as 
follows as follows:


 00 - left aligned
 01 - left aligned
 10 - right-aligned
 11 - centering the line


    When you work restart the contents of register A is not 
preserved. 


    The format of the text buffer for prstr
standard - the characters are arranged sequentially, starting 
from the first location, the rows are separated by the symbol # 
0D, handle end of the text - # 03. 


    To display the characters on the screen prstr
uses restart ttyout (# 0A) from the level of
DOS.SYS. In forming the text buffer, indent and number printed
characters need to independently ensure that the text has not 
gone beyond the window. With the width of the line, more than 
field width print window is automatically aligned to the left 
edge, regardless of the status of the two bits of the register 
A. 


    Subfunction 0, as already reported above, allows you to 
print lines from a text buffer on their logical names. What is 
it? 


    Suppose you want to print
box to the text containing the repetitive line. Instead of 
repeatedly call prstr, each time asking all parameters and are 
strictly making sure that any of the following lines of print, 
or that even worse, scoring a text buffer identical strings, 
you can just make an array, which will be installed sequence of 
printing lines by links to their serial numbers in the buffer.

Quickly switching the different arrays, you
can easily rearrange your texts, swap lines, insert
others, etc. Using subfunction 0
It is also easy to organize the printing of text messages on 
the code from the table (like error messages in Spectrum 
BASIC). 


   Input parameters:


  C - code restart (# 68)

  E - subfunction code (0)

  IX - the address of the vector window

  HL - address of the array analyzer

  A - mode alignment and indentation on the Y

       (See above)

  B - logical name of the line - any code

       except # FF


    Output at normal termination
of HL register contains a number, one less than the address of 
first character line following the printed, remains unchanged 
contents of register IX, contents of registers A, B, C, E - is 
lost. Restart prstr also modifies the system variable xypos 
(see the vector character of the output device). 


   Possible errors:

 1. If the logical name string is not found in the array 
analyzer, then restart returned to the calling program with C 
flag set and error code 140 (No name in the array) in register 
A. 

 2. If the text does not contain a line with a serial number 
listed in the array Restart returns with flag set C and an 
error code 141 (no line in text) in register A.



    Mass analyzer has the following
structure: the first two bytes - the address of text buffer, 
then - and double-byte records in which the first byte - 
Boolean string name, and the second - its number in the buffer. 
Completes the array of required code # FF. 


   Consider an example. View on the screen frame of the stars 
in two different versions for two windows (see Figure 6).: 



    *************************

    *

    *

    *************************

    *

    *

    *

    *

    *************************


    *************************

    *

    *

    *

    *************************

    *

    *

    *

    *************************


 Fig. 6: Frames from stars to

         demonstration prstr



    To draw these two frameworks using subfunction 0 restart 
prstr needed only 4 types of lines: 

 1. "*************************"
 2. "*"
 3. "*"
 4. "*"


    Composes a program that performs this
problem:

;*****************************************

; Listing 7 Printing with
; Subfunction 0 restart prstr


       ORG # 5D60

; Opening windows


       CALL CLS; clear screen

       LD IX, WIND1; open window 1

       LD C, # 1961

       LD A, 2

       RST # 10

       LD IX, WIND2; open the window 2

       LD C, # 1961

       LD A, 0

       RST # 10

; Print the first frame


       LD IX, WIND1; address vector window

       LD HL, TABL1; array address

       CALL PRINT; procedure call

                      ; Print text

; Print the second frame


       LD IX, WIND2

       LD HL, TABL2

       CALL PRINT


       CALL WAIT; waiting for the keys

       JP EXIT; output in the IS-DOS

; How to print

PRINT LD B, # 09; the number of rows, a cat.

                      ; Need Raspe
                      ; Chat simultaneously
                      ; Simultaneously - a logical

                      The name of the first row

; Alignment mode - in the center,
; Indent - 1 Line


       LD A,% 11000001

M1 PUSH HL; save on the stack

                      ; Array address

       PUSH AF; save on the stack

                      ; Alignment mode

                      , And the current value

                      ; Indentation in Y


       LD C, # 68; code restart

       LD E, # 00; subfunction code

       RST # 10; call restart


       POP AF; removed from the stack

                      , The current value

                      ; Indent

       INC A; increase it by 1

                      ; To print the following
                      ; Ing line

       POP HL; restore HL

                      ; Array address

       DJNZ M1; repeat until

                      , The value of B is not

                      ; Reduced to 0

, Value B also serves as the counter
; In a series of print and the logical name is obvious; 
anterior printed line 


       RET; return to the main

                      ; Program

; Vectors windows

WIND1 DEFB 0

       DEFB 0

       DEFB 11

       DEFB 30

       DEFB% 00001111

       DEFB # FF

       DEFB 3

       DEFB 38

WIND2 DEFB 0

       DEFB 12

       DEFB 11

       DEFB 30

       DEFB% 00001111

       DEFB # FF

       DEFB 3

       DEFB 38

; Text buffer

TEXT DEFM "*************************"

       DEFB # 0D

       DEFM "* *"

       DEFB # 0D

       DEFM "* * *"

       DEFB # 0D

       DEFM "* * * *"

       DEFB # 0D

       DEFB # 03

; Arrays analyzers

TABL1 DEFW TEXT

       DEFB # 09

       DEFB 1

       DEFB # 08

       DEFB 3

       DEFB # 07

       DEFB 3

       DEFB # 06

       DEFB 1

       DEFB # 05

       DEFB 2

       DEFB # 04

       DEFB 2

       DEFB # 03

       DEFB 2

       DEFB # 02

       DEFB 2

       DEFB # 01

       DEFB 1

       DEFB # FF

TABL2 DEFW TEXT

       DEFB # 09

       DEFB 1

       DEFB # 08

       DEFB 4

       DEFB # 07

       DEFB 4

       DEFB # 06

       DEFB 4

       DEFB # 05

       DEFB 1

       DEFB # 04

       DEFB 3

       DEFB # 03

       DEFB 3

       DEFB # 02

       DEFB 3

       DEFB # 01

       DEFB 1

       DEFB # FF

; Additional procedures

CLS LD C, # 73, clear screen

       RST # 10

       RET

WAIT LD C, # 07; waiting for the keys

       RST # 10

       RET

EXIT XOR A; standard output

       LD A, # F4; in the IS-DOS

       RET

;****************************************


    Subfunction 1 allows you to print
string of given length, which is stored in memory at that 
address. This subfunction calculates the coordinates of 
printing a string, given the number of characters, indent mode 
alignment and width of the print margins. When She uses the 
same procedure, that subfunction 0, so for the same size as the 
window size of the text must follow their own. 


    After calculating the coordinates of a sub-function is the 
same restart ttyout (# 0A) in the loop as long as

will print the required number of
characters.


   Input parameters:


  C - code restart (# 68)

  E - subfunction code (# 01)

  IX - the address of the vector window

  HL - address of the start line

  B - length of string

  A - alignment mode, and padding in the Y


    The length of the printed line is determined
only the value of register B. Newline # 0D, in this case is 
replaced by a space, the remaining characters codes is less 
than # 20 is not recommended in order to avoid "garbage" screen.



   Example of using subfunction 1:

;****************************************

; Listing 8 Example of printing with
; Prstr (# 68) Subfunction 1


       ORG # 5D64

, Opening a window


       CALL CLS

       LD IX, WIND

       LD C, # 1961

       LD A, 2

       RST # 10

       CALL WAIT

; Print a line of text from the clipboard window
; By Subfunction 1


       LD IX, WIND; vector window

       LD C, # 68; code restart

       LD E, 1; subfunction code

       LD HL, TEXT1; address line


       LD A,% 11000010

And two bits of the - alignment mode
, (In this case - centering)
And six junior - space from above (2 lines)


       LD B, 30; the number of characters

                      ; In a row

       RST # 10; call restart


       CALL WAIT

; Print next line


       LD IX, WIND; vector window

       LD C, # 68; code restart

       LD E, 1; subfunction code

       LD HL, TEXT2; starting address

                      ; Line


       LD A,% 11000100

; Printing without alignment and indentation
; Top - 4 lines


       LD B, 36, the number of characters

                      ; In a row

       RST # 10; call restart


       CALL WAIT

       JP EXIT

And the vector window

WIND DEFB 1

       DEFB 1

       DEFB 8

       DEFB 30

       DEFB% 00001111

       DEFB% 00000001

       DEFB 3

       DEFB 38

; Text buffer

TEXT1 DEFM "Restart prstr (68)"

       DEFM "subfunction 1
TEXT2 DEFM "print lines in the window

       DEFM "aligned"

; Additional procedures

CLS LD C, # 73, clear screen

       RST # 10

       RET

WAIT LD C, # 07; waiting for the keys

       RST # 10

       RET

EXIT XOR A; standard output

       LD A, # F4; in the IS-DOS

       RET

;****************************************


    Subfunction 2 allows us to calculate
input parameters for the subfunction 1 (address and length of 
the string) to its number in the text buffer. 


   Input parameters:


  C - code restart (# 68)

  E - subfunction code (# 02)

  HL - address of the beginning of the text

  B - line number


   Output parameters:


  HL - address of string

  B - length of string


    The contents of registers C and E are not conserved. Text 
format - a standard. If value of line number exceeds the number 
of lines in the text, restart returns with flag set C and an 
error code 141 (no line in the text) in register A.



                                     ...
...


   Example of using subfunction 2:

;****************************************

; Listing 9 Example
; Prstr (# 68), subfunction 2


       ORG # 5D64

, Opening a window


       CALL CLS

       LD IX, WIND

       LD C, # 1961

       LD A, 2

       RST # 10

       CALL WAIT

; An example of a subfunction 2
; Determine the parameters for a subfunction
; On the famous line number in the text


       LD C, # 68; code restart

       LD E, 2; code subfunction 2

       LD HL, TEXT; starting address

                      ; Text

       LD B, 1; line number

       RST # 10

; Output in HL '- string address
, And B - Length


       EXX


       LD C, # 1968

       LD E, 1; code Subfunction 1

       LD A,% 11000001

       RST # 10


       LD C, # 1968

       LD E, 2; definition

       LD HL, TEXT; parameters trail.

       LD B, 2 rows

       RST # 10


       EXX

       LD C, # 1968

       LD E, 1; print

       LD A,% 11000011

       RST # 10


       LD C, # 1968

       LD E, 2

       LD HL, TEXT

       LD B, 3

       RST # 10


       EXX

       LD C, # 1968

       LD E, 1

       LD A,% 11000101

       RST # 10


       CALL WAIT

       JP EXIT

And the vector window

WIND DEFB 1

       DEFB 1

       DEFB 8

       DEFB 30

       DEFB% 00001111

       DEFB% 00000001

       DEFB 3

       DEFB 38

; Text buffer

TEXT DEFM "Restart prstr (68)"

       DEFM "subfunction 2"

       DEFB # 0D

       DEFM "defines the parameters for"

       DEFB # 0D

       DEFM "subfunction 1

       DEFB # 0D

       DEFB # 03

; Additional procedures

CLS LD C, # 73, clear screen

       RST # 10

       RET

WAIT LD C, # 07; waiting for the keys

       RST # 10

       RET

EXIT XOR A; standard output

       LD A, # F4; in the IS-DOS

       RET

;****************************************


    Subfunction 3 - a combination of subfunctions
2 and 1. The input parameters used the start address of text 
and line number in it. 


    First sub-function 3 with two subfunctions computes 
addresses and length of the string, after which control is 
transferred to a subfunction. 


   Input parameters:


  C - code restart (# 68)

  E - subfunction code (# 03)

  IX - the address of the vector window

  HL - address of the beginning of the text

  B - number of rows

  A - alignment mode, and padding in the Y


    As in the subfunction 2, in the absence of
text string with a specified serial number leads to a return to 
the calling program with C flag set and error code 141 (no line 
in the text) in register A.



   Example of using subfunction 3:

;****************************************

; Listing 10 Example
; Prstr (# 68), subfunction 3


       ORG # 5D64

, Opening a window


       CALL CLS

       LD IX, WIND

       LD C, # 1961

       LD A, 2

       RST # 10

       CALL WAIT

; Printing lines of text from the clipboard window
; A subfunction 3


       LD IX, WIND; vector window

       LD C, # 68; code restart

       LD E, 3; subfunction code

       LD HL, TEXT; starting address

                      ; Text


       LD A,% 11000010

; Seal with centering and indent
; Top - 2 lines


       LD B, 1; line number

                      ; In the text

       RST # 10; call restart


       CALL WAIT


       LD IX, WIND; vector window

       LD C, # 68; code restart

       LD E, 3; subfunction code


       LD A,% 11000101


       LD B, 2; seal

       RST # 10; rows in the


       CALL WAIT

       JP EXIT

And the vector window

WIND DEFB 1

       DEFB 1

       DEFB 8

       DEFB 30

       DEFB% 00001111

       DEFB% 00000001

       DEFB 3

       DEFB 38

; Text buffer

TEXT DEFM "Restart prstr (68)"

       DEFM "subfunction 3

       DEFB # 0D

       DEFM "print string to number"

       DEFB # 0D

       DEFB # 03

; Additional procedures

CLS LD C, # 73, clear screen

       RST # 10

       RET

WAIT LD C, # 07; waiting for the keys

       RST # 10

       RET

EXIT $ XOR A; standard output

       LD A, # F4; in the IS-DOS

       RET

;****************************************


    The next two restarts are
to print on the screen in absolute coordinates, not tied to a 
particular window. 


                str (# 6C)


    Restart str (# 6C) - print the current
position of the screen line, limited code
# 0D. String address is given in the register pair HL. This 
restart is convenient for printing lines on the screen outside 
the windows, does not require the assignment of coordinates, 
and uses the current print position, which is stored in the 
system variable XYPOS. 


    Restart str - it is just cyclical appeal to the already 
mentioned above, restart ttyout (# 0A) from the level of 
DOS.SYS, carried out as long as does not meet code newline # 0D.

To determine the coordinates of printing uses a system variable 
XYPOS, located in the vector character of the output device. 
Access to this variable can be obtained using restarts wtpos (# 
6B) and prapd (# 0C), as several later.



    When working restart str newline is considered only as
text qualifier, and the real translation
line when printing is performed. It should be noted that the 
size of the print margins in the call str limited to one third 
of the screen - top, middle or bottom, namely, the one within 
which the current print position to call. Upon reaching the 
right edge of the screen printing on the next line, the latter 
character may be "broken" when moving and when the the lower 
boundary of the corresponding third of the screen print is 
transferred to the first of eight rows of the third.



   Input parameters:


  C - code restart (# 6C)

  HL - address of string


  XYPOS - a system variable - current

           print position.


   Example:

;****************************************

; Listing 11 Example of str (# 6C)


       ORG # 5D64



       CALL CLS; clear screen


       LD HL, TEXT1; address text

       LD C, # 6C; code restart

       RST # 10; print line


       CALL WAIT


       LD HL, TEXT2; second printing

       LD C, # 6C; line

       RST # 10


       CALL WAIT


       LD HL, TEXT3; print thirds

       LD C, # 6C; line

       RST # 10


       CALL WAIT

       JP EXIT

; Text buffer

TEXT1 DEFM "Restart str (# 6C)"

       DEFB # 0D
TEXT2 DEFM "allows you to print"

       DEFB # 0D
TEXT3 DEFM "the absolute"

       DEFM "coordinates"

       DEFB # 0D

; Additional procedures

CLS LD C, # 73; restart cls

       RST # 10, for cleaning the screen

       RET

WAIT LD C, # 07; restart ttyin

       RST # 10; to wait for the clicking
       RET; Tia Keys

EXIT XOR A; standard output

       LD A, # F4; in the IS-DOS

       RET

;****************************************


               lnstr (# 6D)


    Restart lnstr (# 6D) - as well as
previous appeal to the cycle of
ttyout (# 0A), but prints only the specified number of 
characters. Coordinates Printing is also stored in the system 
variable XYPOS. 


   Input parameters:


  C - code restart (# 6D)

  HL - address of text string

  B - number of characters


  XYPOS - a system variable - current

          print position.


    When printing newlines
# 0D replaced with spaces, others characters with codes less # 
20 does not apply recommended. As in the case of str, the field 
is limited to print one of the thirds screen.



    For the coordinates of a system variable XYPOS use restarts 
prapd (# 0C) of the level and DOS.SYS wtpos (# 6B).



   Example:

;****************************************

; Listing 12 Example lnstr (# 6D)


       ORG # 5D64



       CALL CLS; clear screen


       LD HL, TEXT; address text

       LD C, # 6D $? Code restart

       LD B, 81

       RST # 10; print line


       CALL WAIT

       JP EXIT

; Text buffer

TEXT DEFM "Restart str (# 6C)"

       DEFM "allows you to print"

       DEFM "the absolute"

       DEFM "coordinates"

; Additional procedures

CLS LD C, # 73; restart cls

       RST # $ 10; for cleaning the screen

       RET

WAIT LD C, # 07; restart ttyin

       RST # 10; to wait for the clicking
       RET; Tia Keys

EXIT XOR A; standard output

       LD A, # F4; in the IS-DOS

       RET

;****************************************


    Another restart print tylin (# 71)
has a direct bearing on the work
line editor edstr (# 7F), therefore
it will be considered one of the following
articles in our categories.

To be continued ...

In the next issue of our magazine you will meet with fairly 
large group subsidiary restarts, also included in the level 
WIND.SYS. _________________________________________






Other articles:

IS-DOS - Information: The news in the world IS-DOS

IS-DOS - How is it done No 2

IS-DOS - a beginner No 2

IS-DOS - No 2 users

IS-DOS - programmers No 2

Assembler - Assembler for Dummies

Iron - Revised: Pepeklyuchatel turbo / normal for the Scorpion ZS-256-Turbo

Iron - The provinces of: presenting a sound card General Sound.

Iron - Manufacturer: Create Soft - Returning to the printed

Iron - Manufacturer: KAY - turbirovanie Spectrum - Machines

Toys - Novella: 48 irons.

Toys - on the shelves: Carrier Command.

Interview - Interview with Sergei and Andrei Zonov Larchenko

Information - The authors of the journal

Information - From the authors

Information - Help

Information - Black Box

Contest

a rest - Something: Nervous Work

Mailbox - Classified Ad

Mailbox - Letters from readers

Premiere - Digital Studio v1.12

Programmers - Basic to all.

Miscellaneous - From the history of the Amiga.

Miscellaneous - Prospects for P / O.

Systems - music editor Instrument 3.01

What's New - Overview of new products: Night Hunter, Extreme, Grell & Falla, Duck Out, Internationl Ninja Rabbits, Italian Super Car, Sly Spy Secret Agent, The Turn, Sextris.


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Similar articles:

В этот день...   21 November