Echo #03
31 марта 1997

Book - Secrets ZX-Spectrum: Channels and Streams.

<b>Book</b> - Secrets ZX-Spectrum: Channels and Streams.
   Chapter 7.


   K A N A L Li

   S P O T O C AND



   Moving information between the program
and peripheral devices is controlled
through canals and streams. Desirable
represent the channel as a physical device that receives 
information (TV, printer), or give her (keyboard), and

stream as a path along which data should be moved to the 
channel or from him. 


   In the ZX-SPECTRUM without ZX-INTERFACE-1 differ 4 channels. 
They are denoted by single letters: 


   S - output channel, the data sent
to the channel are displayed at the top
of the screen;

   K - channel I / O services
keyboard and bottom of the screen;

   P - output channel, the data is sent
a printer;

   R - output channel to be used only
editor to enter a buffer Editor
data read from the keyboard.


   These channels are sent in connection to his threads. We 
have them at the disposal of 16 (0 ... 15). After 
initialization system should be connected streams 0 and 1

to the channel K, the flow 2 to S, the flow 34 to P.
R channel is not available from the ZX-BASIC.


   Instructions BASIC PRINT, LPRINT,
INPUT, LIST, LLIST make it possible to access
all these channels, completely hiding them
existence. In fact, requires only 2 of them and INPUT LIST, as 
well as the existing system of canals and streams.

Each of these statements can be used to send information to any
flow. For this purpose, it is only necessary
symbol # K signal which channels
We would like to take.


   User LLIST tantamount LIST # 3
LIST is the same as that LLIST # 2. Can
also write LIST # 0 or LLIST # 0, directing print at the bottom 
of the screen, but it not very practical, because the system 
does not allows you to display there over a 22-screen 
operators, and often she cleans it area. Also, the command:



   PRINT # 1, "The bottom of the screen"


   will print the text at the bottom
screen, as well as INPUT, but


   PRINT # 3, "Oh, you do not even have a printer"


   will forward the text to the printer. Himself
PRINT equivalent PRINT # 2. Sometimes it can
be advantageous to use


   INPUT # 2, "give your name", # 0; A $,


   that will cause the output directives are not in the lower
of the screen and at the top. # 0 to A $
needed because the channel is only S
outlet and from the impossible to read.


   The user can remain
flows with the numbers from 4 to 15. Before using them 
appropriate streams connected to the channels that should serve 
them. For this purpose the instruction OPEN # K; "L", where # K 
is an expression, giving as a result of a number between 4 and 
15, and L - an alphanumeric expression, giving as a result of a 
letter ', which identifies the channel (in "naked" SPECTRUM to 
be K, S or P). For example, after the team OPEN # 6; "P" 
instruction LIST # 6 will be act as LLIST. Also PRINT # 6

can be used instead LPRINT.


   After using this stream before connecting it to another 
channel, be sure to disable it. For this is team CLOSE # K. A 
good rule recommends closing channels (disable them flow) 
immediately after use. This can be important for peripheral 
devices (allowing them, for example, to switch off their 
control devices). Flows from 0 to 3 are automatically connected 
to your channels and their closure is impractical so

since the system will connect them again. Attempts
connecting them to other channels may
have uncertain consequences, including
system crash. You also can not close the streams that are not 
connected to any channel (see "system error"). 


   "Naked" ZX-SPECTRUM does not allow
evaluate the merits of such a system to transfer information 
(especially when there is no necessity to work with Level 
ZX-BASIC with atypical peripheral devices). They are identified 
only After connecting ZX-INTERFACE-1, while working with 
mikrodrayvom or computer network. 


   The major advantage brought by the system
canals and streams is its flexibility, ease of operation is 
determined new channels. In practice, this allows

greatly simplify the design of interfaces by placing in the 
computer memory needed programs, serving these devices (which 
also reduces cost). Inclusion of your own channels in BASIC 
system requires then only 2, usually very short and simple 
additional procedures in machine code. True theoretically for 
this purpose would be enough instructions IN and OUT, but in 
the case of devices requiring signaling from several 
microseconds to several tens of microseconds, it will remain a 
theory. 


   For users of the device
importance is also the convenience of writing programs. Much 
easier to use PRINT # K or INPUT # K, than each just append to 
the ZX-BASIC procedures, preparing the data and then send them 
to one sign.



   Before we will explain how
organize their own channels, we must
know how SPECTRUM stores the necessary information about them 
and about the streams, as well as he use them.



   In the area of ​​memory starting at address
Stored system variable CHANS (# 5C4F
(23631)) to the PROG-1 placed the basic data about the 
channels. They have a standard format. Description of each 
channel is 5 bytes and has the form:


   ____________________________________

  | | | |

  | ADDRESS | SIZE | VALUE |

  |-------|---------|------------------|

  | X | 2 bytes | Address pin |

  | | | Procedures Channel |

  | X + 2 | 2 bytes | Address pin |

  | | | Procedures Channel |

  | X + 4 | 1 byte | Code letters Channel |

  |_______|_________|__________________|



   The procedure for withdrawal will be called with a code the 
next symbol in register A. The procedure entry to freely 
interact with the ZX-BASIC, should deliver regular codes of 
characters that are recognized by the system and signal the 
availability of data the pointer C. Lack of input data shall be 
indicated zeroing pointer C (CARRY-port) and Z (ZERO-zero). 


   It often happens that the device
one-sided. Then, as the address
procedures for handling of incorrect operation
gives the position (usually in ROM) procedure:


   RST 0008

   DEFB CODE


   code appropriate error message (the contents of the cell 
following the RST 8) chosen as a parameter.



   After system initialization domain channel information is 20 
bytes +1 contains a pointer to the end of

(# 80 (128)). They include:

 ________________________________________
| | |
| ADDRESS | |
|----------|----------------------------| CHANS | Address 
procedures, writing in | | | Bottom |

| +2 | Address procedures, reading |
| | Data from the keyboard |
| +4 | "K" channel ID |
|----------|-----------------------------|
| +5 | Address procedures, writing in |
| | Top of the screen |
| +7 | Address procedures, signaling-|
| | The classifying error |
| +9 | "S" Channel ID |
|----------|-----------------------------|
| +10 | Address procedures deceptive |
| | Read data in the buffer |
| | Editor |
| +12 | Address procedures, signaling-|
| | The classifying error |
| +14 | "R" channel ID |
|----------|-----------------------------|
| +15 | Address procedures, servicing-|
| | Yuschey Printer |
| +17 | Address procedures, signaling-|
| | The classifying error |
| +19 | "P" channel ID |
|----------|-----------------------------|
| +20 | # 80 (128) Index end |
| | Region |
|----------|-----------------------------|
| +21 | Start of PROG |
|__________|_____________________________|


   As seen in this area is no place for
placement of data on new channels. To modify the existing 
approach can only P, because the rest automatically

open system. This is not the best way to determine, since only 
one extra channel, and also makes it impossible to 
simultaneously the printer. Advantageous to move

the entire block of PROG-1 to STEND the appropriate number of 
bytes, along with a modification of the system variables. 


   The easiest way to do this systemic procedure MAKE_ROM. Less 
elegant, but equally effective, posting information

new channels anywhere in the system variables at 38 bytes, 
starting with SIRMS # 5C10 (23568). For each flow

meant 2 bytes. Address 5 bytes
describing the channel has the form
CHANS + X-1, where X is the content of 2 bytes related to the 
data stream. Description of flow number K is located at address

SIRMS +6 +2 + K.


   At the time of connection to the stream channel
these cells are assigned to appropriate
values. How many times a program will
Download INPUT # K, or PRINT # K, so
times based on data from the table, STRMS
assigned address of the procedure and placed in the system 
variable CURCHL 5C51 (23633). Further, in the case of writing 
instruction, the next character is loaded into the drive and 
called this procedure. In the case of reading from the drive 
selected by the regular characters, if they are available (put 
pointer C). Inactive flows are marked by zero in the 
appropriate location table STRMS.



   As can be seen, this system is really
very flexible and adding new channels netrudoemko. The only 
problem is, that the OPEN and CLOSE operate only

standard identifiers of channels
K, S, P. Connection and disconnection of flow
of new channels (a modification of data
STRMS, as well as variable CURCHL) should
be executed program. This requires sending additional signals 
that initialize the device or informing him of the completion 
of session. 


   At the end of disappointing news for owners of 
ZX-INTERFACE-1: After connecting this device to change SPECTRUM

storage formats of data about the channels and flows, and the 
above considerations do not can apply.





Other articles:

Introduction - On the control interface of the newspaper.

Assembler - An interesting trick with the assembler.

roof was demolished - DI: HALT is not always caused a breakdown of ... Santa Claus.

fun begin - The main event of 1996. Dictionary programmer.

own opinion - IMP talks about the development of Russia's ZX-demoscene.

What are heard behind the hill - What is now doing all the known Western manufacturers software on Speccy? ..

Hour ottyaga - Notes of a Terminator T-1000.

Small news - What happens to the Speccy in Belarus? ..

Form - The survey goes on ...

Fantasy - A fantastic tale "Ice and Flame" (continued).

Prikolchik - Prikolchik's Navapolatsk?. What letter comes to us in the laboratory.

Description - Description, prohodilka game BLINKY'S SCARRY SCHOOL.

Presentation - REALSOFT is a strategic game Technodrom.

Ottyag - have a good time can be different. Book of problems - "puzzles" math.

Programmers - On additional functions TR-DOS 5.04.

Programmers - On the music format modules Sound Tracker Pro and source player.

HARDWARE - Mode switch Profi / Pentagon.

Tricks-2 - How to throw a screen to one INT.

Tricks-2 - On the correct handling Retry / Abort / Ignore in the TR-DOS.

interesting letter - Letters from readers containing two different things: - If you burn a floppy drive on the buggy;

Presentation-2 - Description of the TEXT PRINT v1.2.

Humor - A story about Stirlitz.

Humor - Stirlitz: Elephants go north.

Book - Secrets ZX-Spectrum: TOC.

Book - Secrets ZX-Spectrum: Keyboard.

Book - Secrets ZX-Spectrum: Editor.

Book - Secrets ZX-Spectrum: ZX-BASIC.

Book - Secrets ZX-Spectrum: Computer Arithmetic.

Book - Secrets ZX-Spectrum: memory usage.

Book - Secrets ZX-Spectrum: BASIC system variables.

Book - Secrets ZX-Spectrum: Channels and Streams.

Book - Secrets ZX-Spectrum: System Procedures.

Book - Secrets ZX-Spectrum: Bugs in the System.

Advertising - Advertisements and announcements ...

Afterword - That was not included in this number.


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

Similar articles:
Introduction - A few words of the copyright.
Prohodilka - The Wizard of Oz
News - Local news from Rostov.
Credits - who worked on the numbers, contacts ...

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