Com-port

ZXNet echo conference «hardware.zx»

From Dmitriy Nesmachny To All 7 February 2003

Hello All! Has anyone tried to connect PC-Spec via com? There are specific questions: The literature states that 1/0 in com'nik is represented by -10/+10, in one I saw -5/+5 from the programmer connection diagrams on com. Which is correct? How much will such a canoe consume? You can do without using additional rectifier bridges at -5/-12 volts by using pure electronic conversion circuits, and if possible, then how exactly (circuit)? I heard out of the blue that when Alexander Mayorov connected Spec via LPT, he made decoupling using optocouplers. How exactly is this done? Thanks in advance. Best regards, Dmitriy.

From Aleksandr Majorov To Dmitriy Nesmachny 11 February 2003

Hello Dmitriy! 07 Feb 03 09:00, Dmitriy Nesmachny -> All: [skipped] DN> Has anyone tried to connect PC-Spec via com'y? This is a question IMHO for FK0. DN> There are specific questions: DN> In the literature it is stated that 1/0 is represented in com'nik DN> -10/+10, I saw in one of the programmer connection diagrams via com DN> -5/+5. Which is correct? Well, where does +/-10 come from on the computer? There are only +/-5 and +/-12 In the COM port (if not glitchy) the signals are normal, TTL-level. That is, roughly speaking, 0 ... +5 But RS-232 is just oppositely polar -5 ... +5 DN> How much will such a canoe consume? Depends on the receiver/transmitter circuit and line length [skipped] DN> Out of the corner of my ear I heard that when DN> Alexander Mayorov connected Spec through LPT, he made connections on DN> optocouplers. How exactly is this done? It is done using optocouplers! ;-) ╒═════════════════════════ Home ZX-LINK.HLP ═════════════════════════╕ area / SPBZXNET.GENERAL from / Aleksandr Majorov to / All subj / ZX <-> PC link date/01-03-99 time / 18:04:53 Hayushki, All! Actually, the subject worked out. File flies here/here. The total file transfer time is 255 seconds(including issuing the command and writing to disk) is: Computers: Turbocharged yellow scorpion in turbo mode and stump-166 On Speck I used either access #3D13, Fast-loader or RAM-disk PC ==> ZX Normal 44 sec. = 5.8 sectors per second, CPS=1485, BPS=11880 Fast 41 sec. = 6.2 sectors per second, CPS=1587, BPS=12696 RAM-disk 35 sec. = 7.3 sectors per second, CPS=1869, BPS=14952 ZX ==> PC Normal 41 sec. = 6.2 sectors per second, CPS=1587, BPS=12696 Fast 36 sec. = 7.1 sectors per second, CPS=1817, BPS=14536 RAM-disk 29 sec. = 8.8 sectors per second, CPS=2253, BPS=18024 connection diagram: I connected via optocouplers, whoever doesn’t want to can Connect directly at your own risk :-) However, switching on without galvanic isolation works fine. ZX PC (system connector) (LPT 25-pin) Centr0 (18B) ─────────>──────────────── Error (15) Centr1 (17A) ─────────>──────────────── Paper Out (12) Kempj0 (12B) ─────────<──────────────── Data0 (2) Kempj1 (12A) ─────────<──────────────── Data1 (3) On the scorpion you need to make a small modification: according to the Kempston joystick input diagram, they are pulled to the ground resistors somewhere in the range of 100...510 Ohms. These resistors need to be replaced with 3...10 KOhm. Moreover, this will not affect the operation of the Kempston joystick! (if someone needs it ;-)Galvanic isolation diagram: ZX ┌───────┐ PC │3 │ 1┌─┴─┐ │ Centr0 ────▓▓▓▓──┤ │8 │ │ ├────────── Error ┌───────┤ │ │ │ 2└─┬─┘ ├──── +5 │ │7 │ │ └─────┐ │ │ ┌───────┘ │ │3 ├────── GND │ 1┌─┴─┐ │ Centr1 ────▓▓▓▓──┤ │8 │ │ │ ├────────── Paper Out └──┬────┤ │ │ │ 2└─┬─┘ │ │ │7 │ │ └─────┤ │ │ +5 ───────┬────┐3 │ │ │ ┌─┴─┐1 │ │ │ 8│ ├──────▓▓▓▓── Data0 Kempj0 ──────────┤ │2 │ │ │ │ ├───┤ │ │ └─┬─┘ │ GND ─────┼──────┘7 │ │ │ │ │ └────┐3 │ │ ┌─┴─┐1 │ │ 8│ ├──────▓▓▓▓── Data1 Kempj1 ──────────┤ │2 │ │ │ ├───┘ │ └─┬─┘ └──────┘7 Mikrykhi - 262KP1A or similar optical keys with amplifiers, 300 ohm outputs. Obviously, you can make a denouement completely differently, it is possible not to make a decoupling at all, if someone I want... Port addresses: ZX PC output: #DD input: #379 bit0 ───────>─────── bit3 bit1 ───────>─────── bit5input: #1F output: #378 bit0 ───────<─────── bit0 bit1 ───────<─────── bit1 #379 - LPT-1 Printer status register #378 - LPT-1 Data Register ***************************************************************** Management This version of zx-link works _only_ paired with Spectrum terminal MMD version 2.20 and higher, 4.00 and above. After starting zx-link it goes into standby mode data or commands. From Speck's side, you can simply transmit files, and they will be accepted into the current directory. Everything else is organized at the level of control commands. If you call zx-link with the key "/?" then a short one will be displayed hint on control from the command line. Command format on the command line: / There can be several commands on the command line, separated by a space, they will be executed in the specified sequences. ====================== HELP 1 ======================== /?1 /?2 /?2 first / second / third help page /Q finish work /I transmit system information /H0 /H1 reset/set the reception flag in HOBETA format /K0 /K1 reset/set the 'delete transferred files' flag /E0 /E1 reset/set the 'show keys pressed' flag /R= execute DOS command /C= change the current directory. Please indicate the path in full!/V transfer the contents of the current directory as a file /O= transfer files by mask /F= Mark files by mask and transfer them using the MMD command /S= pass lines /D0...4 change disk to MMD /W0...255 set end timer /M= connect disk image for remote access ====================== HELP 2 ======================== /?1 /?2 /?2 first / second / third help page Command line: / / ... Remote control: Instead of the "/" symbol, the "." symbol is used. (21) Several commands can be transmitted by a macro at the same time. Each command must end with a SPACE or LINE FEED character. Working with a disk image: Remote sector read: Request accepted: #0A, 'r

From rNd To Dmitriy Nesmachny 11 February 2003

Hello Dmitriy! I am responding to your letter dated 02/07/03, then Dmitriy Nesmachny wrote to All, and then it was 9:00:00. DN> The literature states that 1/0 in com'nik is represented by -10/+10, in DN> I saw one of the schemes for connecting the programmer via com -5/+5. How according to the standard (I read it in a book) the sensitivity threshold is +/-3v DN> right? How much will such a canoe consume? You can do without DN> the use of additional rectifier bridges at -5/-12 volts DN> the use of purely electronic conversion circuits, and if possible, how KP580VV51 (USAPP) power supply 5v Bay W.B.R. rNd [Team: X-Tension] [FREE]

From Kirill Frolov To Dmitriy Nesmachny 12 February 2003

Press RESET immediately, Dmitriy! 26 Nov 02 21:11, Yuri Potapov wrote to Kirill Frolov: YP> in this case I have this idea YP> on one side there is a green ZS Scorpion, there is no confusion YP> on the other hand, not a very sophisticated PC running Linux YP> most likely, the PC will have a CD, 1.44 drive, screw, modem YP> but in general it should act as a server from/where I will be YP> download YP> files YP> modem emulation is not needed YP> much of what I will transmit should go as commands YP>console YP> the spec will have to play the role of a client, including how I do YP> explained that it is possible to surf the Internet via Linux using YP> regular terminal That is, you need either a network (telnet, ssh...), which does not exist, or a connection via serial port (Spectrum terminal emulation). Usually remote control of a machine via a unix terminal is only possible via a network or serial interface (modem). YP> and this will already be more promising than trying to write in Spec now YP> browser and tcp/ip and so on Well, it’s for such purposes, IMHO, that you need to write. Only with a view to using the resources of a pussy that is not in the next room, but accessible via the Internet. For example, try telneting cyberspace.org - you can get account on a machine running SunOS and use it to access other network information resources. There is no network on the Spectrum yet, well, at least there is definitely no telnet there. Therefore, there are two options left for you: ZX <- serial interface -> PC. The role of a “serial interface” can be either a cable or a pair modems. If you already have an ISA modem installed on your Spectrum, then just connect you will receive a multicard from the PC and you will receive a serial port. If you need parallel and modem, or do you need several serial ports then you will have to think about upgrading the modem connection circuit. If the modem is on Spectrum is not available, that is, there are 2 options: through a multicard (for example, by Kondratiev scheme) and through software emulation of asynchronous Spectrum serial interface. In case of software emulation it is not necessary The piss multicard is already in short supply. The "minimal" null modem cable for connecting two computers contains just three wires: ZX PC ----------------- -----------------signal DB9S DB25S signal DB9S DB25S TD 3 2 <----------> RD 2 3 RD 2 3 <-----------> TD 3 2 GROUND 5 7 <-----------> GROUND 5 7 Columns DB9S and DB25S indicate the pin numbers on the corresponding connectors. There are several standard connectors for this interface, and most popular ones are DB9S and DB25S (the letter S means Socket, that is, a socket. This connectors with “holes” on the cable and with “pins” on the computer). In modern IBM PC computers usually use DB9. The minimum cable version has some disadvantages, in particular it provides only software flow control, which is completely unsuitable for use in the case of software emulation of a serial interface on Spectrum (Spectrum can only receive data in a port polling cycle, but when in the absence of other signal wires, he cannot in any way communicate to another whether the computer is ready to receive it or not). In case of hardware implementation interface on the Spectrum, the use of a 3-wire cable is also undesirable, since it is difficult for Spectrum with its slowness to guarantee timely extracting received data from the receiver buffer. Mentioned disadvantage There is no 3-wire cable in the 4-wire or 5-wire interface, where hardware flow control is used: ZX PC----------------- ----------------- signal DB9S DB25S signal DB9S DB25S TD 3 2 <----------> RD 2 3 RD 2 3 <-----------> TD 3 2 RTS 7 4 <-----------> CTS 8 5 * CTS 8 5 <--(*)------> * RTS 7 4 GROUND 5 7 <-----------> GROUND 5 7 The signal marked with an asterisk '*' in the case of a 4-wire interface may not be be used, but its non-use is undesirable: this signal provides protection against overflow of the receiver buffer in the PC, just like a signal does RTS for Spectrum. 5-wire interface provides a complete full-duplex transmission channel information with hardware flow control. But if it is necessary to transmit some control information outside the transmission channel, for example ready/unready, reset/handshake, as often used in modems, then you need a full-fledged interface consisting of 9 wires: ZX PC ----------------- ----------------- signal DB9S DB25S signal DB9S DB25S TD 3 2 <----------> RD 2 3 RD 2 3 <-----------> TD 3 2 RTS 7 4 <-----------> CTS 8 5 CTS 8 5 <-----------> RTS 7 4 DTR 4 20 <--------+--> DSR 6 6DSR 6 6 <--+-----)--> DTR 4 20 * DCD 1 8 <--+ +--> DCD 1 8 * RI 9 22 RI 9 22 GROUND 5 7 <-----------> GROUND 5 7 Signals marked with asterisks ('*') RI and DCD are used only in modems. RI is an input at the terminal (computer) indicating the arrival of a call, DCD signals the establishment of communication (presence of carrier). In this case, RI is not is used, and the DCD is connected to the DTR signal from the remote side, which provides "carrier appearance" when signaling the readiness of the remote side. This was the wiring of a full-fledged null modem cable. She doesn't coincides with the wiring of a regular modem cable! In your case, I would use a 5-wire interface. As cable, if it is impossible to get it ready-made, it is better to take a modem cable and make a special adapter. I do not recommend making a cable yourself, it’s better to take a ready-made one. In a modem cable, all signals are connected one to one, and in a null modem reception and transmission signals, RTS-CTS, DTR-DSR are swapped. Below is complete pinout of the serial interface. There are several standards here we mean the RS-232C interface, used in most personal computers. Designation Connector contact Direction RS232 DB9 DB25 outputPG - 1 - protective ground (protect ground) TD 3 2 output data transmission (transmit data) RD 2 3 input data reception (receive data) RTS 7 4 output request transfer (request to send) data CTS 8 5 input ready for (clear to send) data reception DSR 6 6 input ready (data set ready) devices data transmission SG 5 7 - signal (signal ground) common wire DCD 1 8 input detection (data carrier detected) carrier DTR 4 20 output ready (data terminal ready) terminal RI 9 22 input bell (ring indicator) Historically, although it no longer makes much sense, that all devices using the RS-232C interface are divided into 2 types: devices data transmission (DCE == Data Connection Equipment, e.g. modems) and final equipment, terminals (DTE == Data Terminal Equipment, for example, whenWhen connecting a modem to a computer, the computer plays the role of a terminal). In fact both devices are equivalent, but from this division they are designated differently signals: DTR or DSR, RTS or CTS... and there is a little confusion. So here it is the above table refers to DTE devices, that is, terminals (computers). The pin numbers for DTE devices are correct, but for DCE devices (modems) must be swapped TD and RD, CTS and RTS, DSR and DTR. Hence, by the way, the difference between “straight” modem cables and “twisted” ones null modem. And besides, in the table above there are only signals used in the IBM-PC and most other computers. Full version interface defines a larger number of signals on the DB25 connector. When connecting an ISA multicard from an IBM-PC computer, problems may arise. problems with connecting the remote connector cable ("miscarriage") to the multicard. The fact is that there are several different options for pinout of contacts on multimap. Here are the main ones: Contact on the multicard Contact on the connector Var.1 Var.2 Var.3 Var.4 DB9 DB25 (10) (10) (10) 1 - 1 3 5 3 3 3 2 2 3 4 5 2 3 7 4 8 7 7 4 8 6 7 9 8 5 6 2 9 11 6 6 5 9 1 13 5 71 1 5 15 1 8 4 7 2 14 4 20 9 8 6 18 9 22 Version 1 8-bit multicard loop Ver.2 loop of 16-bit multicards Version 3 cable for ports integrated on the motherboard Version 4 wide cable to 25-pin connector

From Kirill Frolov To Dmitriy Nesmachny 12 February 2003

Press RESET immediately, Dmitriy! From everything written about how a multicard is connected, for example, by Kondratiev's scheme should already be clear. Naturally, the ISA slot should 3 voltages are supplied: -12 volts, +12 volts, and +5 volts. Herself The Kondratiev diagram for connecting an ISA modem (multi-card) to the Spectrum is here: Original Kondratieff adapter circuit for connection internal modem. DD1 __ +---+ RD -----------------+1 | _____ | +------- IORD# (modem) +---+ | DD1 | +---+ +---+ | A4 ----+1 | | ____ | +----+ IORQ --+ | | +---+ | DD1 | +---+ +---+1 | _____ __ | +---+-- IOWR# (modem) WR -----------------+ | | +---+ | | +--------------------+ | | DD2 | +--------+ +5v - | ---o R | | | Q +-----+ +----/ C | | | | | A11 --------> D_ | | _____ | Q O-- | RESET --+---o S | | | +--------+ | | | | DD3 | | +---+ | | |1 | |+----+ O--------------- RESET (modem) | | | +---+ | | | | | DD1 DD3 | +---+ +---+ +--+1 | --- |1 | | +------ NMI (modem) IRQ4 ----+ O---------+ | | | +---+ +---+ A8 ------------------- A0 (modem) A9 ------------------- A1 (modem) A10 ------------------- A2 (modem) D0..D7 ---------------- D0..D7 (modem) +5v -------------------- A3..A10 (modem) GND -------------------- AEN (modem) List of elements: DD1 1533LL1 DD2 1533TM2 DD3 1533ЛH1 Signals marked in brackets "(modem)" are connected to corresponding pins of the ISA slot for the modem, the rest the signals are connected directly to the computer bus. Accessing modem registers via ports The modem registers are accessible through the microprocessor I/O ports. The address is calculated like this: 0xF0EF + (0x0800 if NMI interrupts are disabled) + (register_address*0x100) The interrupt enable trigger from the modem switches only when output to the modem ports. NOTE: Instead of non-maskable (NMI), you can use maskable(INT) interrupt. Not all programs support this yet, but THIS IS MORE CORRECT DECISION. THE USE OF NMI CAN POTENTIALLY RESULT IN STACK OVERFLOW AND DISRUPTION OF NORMAL OPERATION OF PROGRAMS. Just in case, I’m also bringing a modified one (so that it doesn’t work with the 7FFD port). conflicted) Shepelev’s scheme: Modified Shepelevsky scheme, supported in the Melon program. D0..D7 ----------------------- D0..D7 (modem) A8 -------------------------- A0 (modem) A9 -------------------------- A1 (modem) A10 -------------------------- A2 (modem) A11 -------------------------- A3 (modem) A12 -------------------------- A8 (modem) A13 -------------------------- A9 (modem) +5v ---------------------- A4 (modem) +5v ---------------------- A5 (modem) GND ----------------------- AEN (modem) +---+ A14 --------+ 1 | | +---+ A15-------+ | | +---+ | DD1.1 | +---+ +--+ 1 | | o----+---- A7 (modem) A6---------------------+ | | +---+ +---- A6 (modem) DD2.1 ____ +---+ IORQ ----+---+ 1 | __ | | +----------- IORD# (modem) RD -----(---+ | | +---+ | DD1.2| +---+ +---+ 1 | __ | +----------- IOWR# (modem) WR ---------+ | +---+ DD1.3 +---+ GND -----+ 1 | _____ | o----------- RESET (modem) RESET-------+ | +---+ DD2.2 List of elements: DD1 1533LL1 DD2 1533LE1 Accessing modem registers via ports The modem registers are accessible through the microprocessor I/O ports, The port address is calculated as follows: 0x38BF + modem_register_address In the original, the Shepelev scheme does not have the ability to use interrupts from the modem, but this feature can be added by connecting one of the outputs modem interrupts via an inverter with an "open collector" output (chip 555ЛH2) with an INT signal (maskable interrupt) on the bus ZX-Spectrum. An NPN bipolar transistor can act as an inertor (for example KT315) in the corresponding connection circuit. The above schemes have some disadvantages. For example, they most likely will not work if you connect the modem and computer with long (>10cm) wires. The whole problem here is excessive inductance of conductors. If the modem does not work, you can try passing signals A8,A9,A10,IOWR and IORD through the trigger Schmidt installed in close proximity to the ISA slot or throughresistors with a resistance of 30-50 ohms. Pin assignments of the short (8-bit) ISA slot: +---------+---------------+-----------------+---------+ | contact | signal | signal | contact | +-+-----+-+---------------+-----------------+-+-----+-+ | A1 | IOCHK | GND | B1 | +-----+-----------------+-------------------+-----+ | A2 | D7 | RESET | B2 | +-----+-----------------+-------------------+-----+ | A3 | D6 | +5v | B3 | +-----+-----------------+-------------------+-----+ | A4 | D5 | IRQ2/9 (*) | B4 | +-----+-----------------+-------------------+-----+ | A5 | D4 | -5v | B5 | +-----+-----------------+-------------------+-----+ | A6 | D3 | DRQ2 | B6 | +-----+-----------------+-------------------+-----+ | A7 | D2 | -12v | B7 | +-----+-----------------+-------------------+-----+ | A8 | D1 | OWS2# | B8 | +-----+-----------------+-------------------+-----+ | A9 | D0 | +12v | B9 | +-----+-----------------+-------------------+-----+ | A10 | IOCHDRY | GND | B10 | +-----+-----------------+-------------------+-----+ | A11 | AEN | SmemWR# | B11 | +-----+-----------------+-------------------+-----+ | A12 | A19 | SmemRD# | B12 | +-----+-----------------+-------------------+-----+ | A13 | A18 | IOWR# | B13 | +-----+-----------------+-------------------+-----+ | A14 | A17 | IORD# | B14 | +-----+-----------------+-------------------+-----+ | A15 | A16 | DACK3# | B15 | +-----+-----------------+-------------------+-----+ | A16 | A15 | DRQ3 | B16 | +-----+-----------------+-------------------+-----+ | A17 | A14 | DACK1# | B17 | +-----+-----------------+-------------------+-----+ | A18 | A13 | DRQ1 | B18 | +-----+-----------------+-------------------+-----+ | A19 | A12 | REFR# | B19 | +-----+-----------------+-------------------+-----+ | A20 | A11 | BClock | B20 | +-----+-----------------+-------------------+-----+ | A21 | A10 | IRQ7 | B21 | +-----+-----------------+-------------------+-----+ | A22 | A9 | IRQ6 | B22 | +-----+-----------------+-------------------+-----+ | A23 | A8 | IRQ5 | B23 | +-----+-----------------+-------------------+-----+ | A24 | A7 | IRQ4 | B24 | +-----+-----------------+-------------------+-----+ | A25 | A6 | IRQ3 | B25 | +-----+-----------------+-------------------+-----+ | A26 | A5 | DACK2# | B26 | +-----+-----------------+-------------------+-----+ | A27 | A4 | TC | B27 | +-----+-----------------+-------------------+-----+ | A28 | A3 | BALE | B28 | +-----+-----------------+-------------------+-----+ | A29 | A2 | +5v | B29 | +-----+-----------------+-------------------+-----+ | A30 | A1 | OSC | B30 | +-----+-----------------+-------------------+-----+ | A31 | A0 | GND | B31 | +-----+-----------------+-------------------+-----+ Note: some modem (multi-card) models are designed to connect to long (16-bit) ISA slot. You can connect them without any problems and into a short slot when used interrupts in the range IRQ1..IRQ7. NOTE: Instead of the Non-Maskable Interrupt (NMI) used in Kondratiev circuit, you can use a maskable (INT) interrupt. Not yetall programs support this, but THIS IS A MORE CORRECT SOLUTION. USE NMI CAN POTENTIALLY RESULT IN A STACK OVERFLOW AND INTERRUPTION OF NORMAL PROGRAM OPERATIONS. Everything should be clear by now with connecting ISA multicards and modems. Remaining two more options: a serial port based on i8251 (K580VV51) - if necessary I’ll find a diagram, but there’s a lot of soldering required, and the speed is only 9600. And another option is this software emulation of a serial interface. Everything is here in terms of soldering much simpler, you need two software-controlled ports (you need two binary discharge) on the output and two ports on the input. If you plan to use interface without flow control, you can get by with one output port and one at the entrance. But this is a very unreliable solution; it requires the use of special data transfer protocols that guarantee error-free data transfer. Yes Another option is using flow control only in the direction from PC to ZX (see above, 4-wire interface), but it’s still better to use a full-fledged 5-wire interface. Let's say we already have two output ports, two ports at the entrance. The ports are based on TTL logic, that is, they transmit binary signals with levels from 0 to +5 volts. They must be coordinated with the RS-232C interface. Below there is a table explaining the coding of signals in TTL logic and interface RS-232C: Signal TTL logic RS-232C----------------------------------- log. 0. 0..1.5 volts +3..12 volts log. 1. 2..5 volts -3..-12 volts Coordination is best accomplished using specially designed this microcircuit (imported): receiver - 1489, transmitter - 1488. There are and Soviet analogues of these microcircuits, but I don’t remember their designations. There is also newer and easier-to-use microcircuits that allow TTL matching logic with RS-232C interface, for example MAX-232. Convenience lies in no need to have a power source with a voltage of -12 and +12 volts (generated inside the microcircuit, on capacitors). But the price is at least 1.5 Few people will like the American dollar... On the other hand, 1488 and 1489 in There is no price list at all. I provide the pinout of microcircuits 1488 and 1489, I don’t have the pinout for MAX-232 hand. receiver: transmitter: +-----------+ +-----------+ | | | | 1A -o1 14o- VCC VEE -o1 14o- VDD | | | | 1C -o2 13o- 4A 1A -o2 13o- 4A | | | | 1Y -o3 12o- 4C 1Y -o3 12o- 4B | | | | 2A -o4 1489 11o- 4Y 2A -o4 1488 11o- 4Y| | | | 2C -o5 10o- 3A 2B -o5 10o- 3A | | | | 2Y -o6 9o- 3C 2Y -o6 9o- 3B | | | | GND -o7 8o- 3Y GND -o7 8o- 3Y | | | | +-----------+ +-----------+ Signal designation for the receiver (1489): A -- RS232 input, C -- control hysteresis (TTL input), Y -- TTL output, VCC -- +5 volt power supply. Signal designation for the transmitter (1488): A, B -- TTL inputs, Y -- output RS232, VDD -- +12 volt power supply, VEE -- -12 volt power supply. GND is common everywhere wire The transmitter chip implements logical function conjunctions, below is the table truth: A input | B entrance | Y output --------+--------+--------- 0 | 0 | VDD --------+--------+--------- 0 | 1 | VDD --------+--------+--------- 1 | 0 | VDD --------+--------+--------- 1 | 1 | VEE note: it is assumed that the missing input 1B is connected to logic 1. If the transmitter chip will only be used for TTL negotiation outputs with an RS232 interface, then the unused inputs of the transmitter should submit log.1. (according to the truth table, otherwise signal transmissionthrough a microcircuit will be impossible). I have no information on using the “hysteresis control input”. At the receiver input, capacitors with a capacity of several tens of nanofarads, apparently to suppress the “bounce” of the signal. (required here clarification).

From Kirill Frolov To Dmitriy Nesmachny 12 February 2003

Press RESET immediately, Dmitriy! In the absence of microcircuits 1488 and 1489, you can match the signals with using a number of discrete elements. So much simplified receiver circuit consists of only two diodes (you just need to take into account signal inversion): + VCC (+5 volts) | --- /\n ----- | RS232 input -------+--------> TTL input | --- /\n ----- | -----GND For a flow control circuit (5-wire cable), two such circuits are needed to TD and RTS signals. In case of extreme simplification, a direct connection of the TTL output to RS232 is possible input (you only need to take into account the signal inversion). It will most likely be work on most modern IBM-PC computers, but when connected to other equipment may cause problems. The fact is that some modern RS232 receivers consider a signal level less than +3 volts to be log. 1. If direct connection is not desired, then a simple circuit can be used transistor transmitter, such as that implemented in the ZS-Scorpion computer for Connecting a serial printer: +--------+ +5..12 volts | |- | 1.5k| | | |_| | | b|/ e +------| KT361A | | to - | 560ohm| | - |_| | | 560ohm 1.5k | |_| TTL ____ b|/ to | exit --|____|--| KT315A +---+---> RS232 output | e | | | - | --- GND | | --- 180pf |_| --- 2.7k | | +---+- -5..12 volts For a flow control circuit (5-wire cable), two such circuits are needed to TD and RTS signals. The ZS-Scorpion computer already has one output and one RS232 input for connecting a printer with a serial interface (signals "DSR" and "RS232" on system connector). To implement an interface with flow control signals, you need another entrance and another exit. Can use unused bit 5 of port joystick kempston for input, and one of the unused bits of the FE port (bits 5, 6 and 7) for output. If you plan to use for signal matching special microcircuits, it is better to put all signals there, and transistors and Remove the diodes from the board. Or, as an option, the above circuits with diodes and transistors only for unmatched signals.Total two out of three options (multi-card, 580BB51, software emulation) I described the connections sort of like this. For software emulation, the driver remains. Here he: The raw version (driver piece) is designed for a speed of 38400 bps: ;--------------------------------------- ; RS232 EMULATOR ZX-LINK ; TXPORT EQU #CFF7 RXMAX EQU 270 ZXL_INI LD A,1 JR ZXL_CTL ZXL_OFF XOR A ZXL_CTL ;LD (ZXL_DCD),A AND #01 RLCA RLCA LD (TXMASK),A IN A,(#1F) RLCA RLCA RLCA AND #01 RET ; LINE SCAN BC=SIZE D=SPEED CY=NOTHING LSCAN DI PUSH IX PUSH IY LD HL,RXMAX LD DE,RXBYTE PUSH DE LD IX,(M_BUFF) LD IY,TXMASK LD BC,TXPORT LD A,(TXMASK) OR#20 OUT(C),A RXNEXT LD D,#9F ; TIME RXWAIT IN A,(#FE) R.L.A. RET C IN A,(#FE) ; 25..34 ~40 R.L.A. RET C IN A,(#FE) R.L.A. RET C IN A,(#FE) R.L.A. RET C IN A,(#FE) R.L.A. RET C IN A,(#FE) R.L.A. RET C IN A,(#FE) R.L.A. RET C IN A,(#FE) R.L.A. RET C DEC D JP NZ,RXWAIT ; +14 IN A,(#FE) R.L.A. RET C LD A,(TXMASK) LD E,A ; +17 IN A,(#FE) R.L.A. RET C OUT (C),E ; +12 IN A,(#FE) RLA RET C LD D,#7 ; +7 IN A,(#FE) RLA RET C RXWAIT1 IN A,(#FE) RLA RET C IN A,(#FE) RLA RET C IN A,(#FE) RLA RET C IN A,(#FE) RLA RET C IN A,(#FE) RLA RET C IN A,(#FE) RLA RET C IN A,(#FE) RLA RET C IN A,(#FE) RLA RET C DEC D JP NZ,RXWAIT1 RXEND POP BC EX DE,HL LD HL,RXMAX OR A SBC HL,DE POP IY POP IX JR NZ,RXOK LD BC,#0101 XOR A INC A SCF RET RXOK LD D,LINKSPEED LD B,H LD C,L XOR A INC A RET RXBYTE IN A,(#FE) RLA JR C,RXBYTE1 DEC SP DEC SP JP RXWAIT RXBYTE1 JR $+2 JR $+2 JR $+2 JR $+2 NOP IN A,(#FE) ; B0 RLA RR E DEC HL LD A,H OR L CP 1 SBC A,A CPL AND #20 OR (IY) OUT (C), A IN A,(#FE) ; B1 RLA RR E LD BC,RXBYTE PUSH BC LD BC,TXPORT JR $+2 JR $+2 JR $+2 IN A,(#FE) ; B2 RLA RR E JR $+2 JR $+2 JR $+2 JR $+2 JR $+2 NOP NOP IN A,(#FE) ; B3 RLA RR E JR $+2 JR $+2 JR $+2 JR $+2 JR $+2 NOP NOP IN A,(#FE) ; B4 RLA RR E JR $+2 JR $+2 JR $+2 JR $+2 JR $+2 NOP NOP IN A,(#FE) ; B5 RLA RR E JR $+2 JR $+2 JR $+2 JR $+2 JR $+2 NOP NOP IN A,(#FE) ; B6 RLA RR E JR $+2 JR $+2 JR $+2 JR $+2 JR $+2 NOP NOP IN A,(#FE) ; B7 RLA RR E JR $+2 JR $+2 JR $+2 JR $+2 JR $+2 NOP NOP IN A,(#FE) ; B STOP RLA JR C,RXERR LD A,E CPL LD (IX),A INC IX JP RXNEXT RXERR LD A,(TXMASK) OUT (C),A JP RXEND ; SEND BLOCK IN MDMBUFF BC=SIZE LTRANS DI PUSH IX LD E,C LD D,B LD IX,(M_BUFF) LD BC,TXPORT TXBYTE LD A,(TXMASK) OR #08 OUT (C),A LD A,(IX) CPL LD L,A LD H,8 JR $+2 LD A,0 TXBIT RR L SBC A,A AND #08 OR 0 TXMASK EQU $-1 OUT(C),A JP$+3 JP$+3 JP$+3 LD A,0 DEC H JR NZ,TXBIT JR$+2 LD A,0 LD A,(TXMASK) OUT(C),A JR$+2 JR$+2 JR$+2 INC IX DEC DE LD A,D OR E JR NZ,TXBYTE LD B,4 DJNZ$ POP IX RET Unfortunately, there is one error here that does not manifest itself in any way when done correctly. operation of the PC COM port but potentially very dangerous (as always buffer overflow). The error there is that after filling receiving buffer, Spectrum resets CTS so that the PC stops transmitting, after this Spectrum receives the last byte (CTS signal blocks transmission next byte, but the current one has already begun to be transmitted). It's just in process When receiving the last byte, the Spectrum does not receive one byte, but how many they give. The pisyuk usually doesn’t give more than one, but if it does, the Spectrum will accept to the bitter end. In this case, the criterion for the end of transmission for Spectrum serves as a long stop bit, that is, a pause in transmission of several bits intervals. I'll definitely fix this bug, I'm just too lazy now, I'm tired of it write a letter (>32kb already)... Now regarding the encoding of information in the serial interface.Log.0. coded voltage +3..+12 volts, logic 1. -3..-12 volts. Data are transmitted sequentially, starting from 0-bit and ending with the last. There are several standard sending formats: 5,6,7 or 8 data bits, 1 or 0 parity bits (or odd), 1 or more stop bits. Stop bit, same as start bit definitely there. Usually they use the 8N1 format, that is, start bit, 8 data bits, no parity and one (or more) stop bits. With 8 data bits controls parity is not possible. In the 8N1 format, only 10 bits are transmitted for 8 information bits, that is, 20% of the channel capacity is lost. In an inactive state, when nothing is transmitted, the TD signal is in the log.1 state. (this means pause). If the TD signal is long (more than one byte transmission) is in log.0 state. then a sign of a wire break is formed. Transfer starts with the start bit -- transmitted during one bit interval log.0., all information bits are transmitted sequentially (one interval by one bit), then the parity bits (if any) and then the proper number stop bits (at least one, sometimes 1, 1.5, 2...) which are encoded by log.1. The time period allocated for the bit interval is defined as the value inversely proportional to speed. For example, at a speed of 38400 bps (which is used in my source) the length of the bit interval is26.0416 microseconds or 91.1456 Z80 processor cycles at clock speed 3.5Mhz. When transmitting 10 bits of data (byte in 8N1 format), the mismatch speeds cannot be more than 5%, and for reliable reception even less - It must be taken into account that the signal in the cable is affected by various distortions. Receiver can detect and signal certain errors. There are a number standard speeds supported by most devices: 50, 75, 110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600 and 115200 bps. On the Spectrum, without turbo mode, the achievable maximum is 38400 bits per second -- the limitation is imposed by the algorithm of the receiver (see source). C turbo mode at 7MHz will be 57600, but the program needs to be adjusted to specific implementation of turbo mode - it’s easier to turn it off for a while reception and transmission. Transferring files between ZX and PC can be done using the program MMD (aka MacroMoDem) on Spectrum (together with a special modem driver, supports your interface type, a compatible one must be used on the PC program (XMD for example). It is possible to use other Spectrum terminals (for example Melon - the source code was lying around somewhere, you can use any interface screw), and on the PC X,Y,Z modem. If the task is to transfer files, then IMHO it is better to use MMD - it can be programmed forautomatic operation. If you need to control the PC in the console (for example, in Linux) then it would be better to use an ANSI or at least a BT VT52 compatible terminal, capable of receiving files using the Z-modem protocol. Could be a good option using Melon (may need adaptation to your interface). Yes fragments from CP/M, I think I implemented VT52 there, but Z-modem is there naturally no. Perhaps another ANSI terminal will appear... Idk. Without the Internet there is no point. For now, the best option for you is MMD and Melon. Then maybe telnet (ansi/vt220 terminal) and network... Without a network there will be no virtual disks. Although... MAS for MMD emulated a turbojet engine on a PC via a link. But this is only inside MMD. As I understand it, at least 2 people are currently working on the network issue (groups) in the exUSSR and several foreigners. Everything is separate. Already have zxtcp, zsock, uip, cpcip... someone threw something into zx.spectrum... IMHO the process is needed just push hard in that direction. In general, you have the task of choosing an interface: modems, multicards, 580ВВ51, emulation, maybe something else... all consistent. And parallel to The PC will only have support in self-written programs and therefore has no prospects (and RS232 also already has a place in the museum, it’s just that a lot has been done, but Now USB rules).

From Kirill Frolov To Dmitriy Nesmachny 12 February 2003

Press RESET immediately, Dmitriy! 07 Feb 03 09:00, Dmitriy Nesmachny wrote to All: DN> Has anyone tried to connect PC-Spec via com? I tried. Software emulation of RS232 by Spectrum at a speed of 38400 bps. Minimum 5 wires: common, RX (data from PC), TX (data to PC), RTS (PC not ready), CTS (Spectrum not ready). It is possible in three (RX and TX), but since Spectrum cannot receive data all the time due to software port emulation, bytes will be lost. It is possible via four wires RX, TX, RTS then everything is fine, CTS is needed in case the PC is overloaded with data, and This is a very unlikely situation. Maximum transfer speed 3.8kb/sec, the real one (in MMD4.00, which adds its own brakes) is somewhat lower. DN> There are specific questions: DN> The literature states that 1/0 in com'nik is represented DN> -10/+10, I saw it in one of the programmer connection diagrams via com DN> -5/+5. Which is correct? -12..-3 and 3..12. The PC port understands this: < +3 volts. this is log.1, >=+3 volts. this is log.0. That is, it is possible to use TTL signal levels. DN> How much will such a canoe consume? You can do without using DN> additional rectifier bridges for -5/-12 volts DN> applications of purely electronic conversion circuits It's possible. There is such a chip: MAX232. DN> and if possible, then how exactly (scheme)? If at TTL levels (it may not always work) - just connect wires through the inverters, and on the speck side put protective diodes with the anode to one common wire and the second cathode to the power supply (the output of the pisyuk is honest +-12volts up to 20mA). Otherwise, MC1488 and MC1489 are needed to match the levels. Yes and Soviet analogues, I don’t remember them. If there are no power sources + -12 volts then you can use MAX232 (it's expensive). As a last resort, you can enter at diodes, and the output is based on 315 transistors. See how the printer is connected with serial interface in Scorpion - in fact, there is already RS232 there interface without control signals, only TX and RX (DSR for printer). DN> I heard out of the corner of my ear that when Alexander Mayorov connected Spec last DN> LPT guy, he made decoupling using optocouplers. How exactly is this done? Find on the Internet a diagram for matching the current loop with RS232. But most likely this will be superfluous in your conditions, when the computers are nearby, direct connection.See the following three letters (from the archives of this echo, by the way).

From Eugene Palenock To Aleksandr Majorov 13 February 2003

Hello, Alexander! 11 Feb 03 13:25, Aleksandr Majorov -> Dmitriy Nesmachny: AM> Why is there +/-10 on the computer? AM> There are only +/-5 and +/-12 AM> In the COM port (if not glitchy) the signals are normal, TTL-level. AM> That is, roughly speaking, 0 ... +5 AM> But RS-232 is just oppositely polar -5 ... +5 Use a multimeter to plug into any com port on the motherboard. There -11/+11 (1v is lost on keys apparently) Best regards, Evgeniy.

From Dmitry Lomov To Kirill Frolov 13 February 2003

Hello, Kirill! Once, Wed Feb 12 2003 06:55, Kirill Frolov wrote to Dmitriy Nesmachny: KF> signals using a series of discrete elements. So much simplified KF> the receiver circuit consists of only two diodes (you just need to take into account KF> signal inversion): KF> + VCC (+5 volts) KF> | KF> --- KF> / KF> ----- KF> | KF> RS232 input -------+--------> TTL input KF> | KF> --- KF> / KF> ----- KF> | KF> ----- GND you forgot the resistor in the RS232 circuit ;) All the best. Dmitry. [ZX] [Quake] np:h-192

From Dmitry Lomov To Dmitriy Nesmachny 13 February 2003

Hello, Dmitry! Once, Fri Feb 07 2003 09:00, Dmitriy Nesmachny wrote to All: DN> The literature states that 1/0 in com'nik is represented DN> -10/+10, I saw it in one of the programmer connection diagrams via com DN> -5/+5. Which is correct? How much will such a canoe consume? You can DN> do without the use of additional rectifier bridges DN> -5/-12 volts by using purely electronic conversion circuits, and DN> if possible, then how exactly (scheme)? catch you in the next letter. there, however, with galvanic isolation, and pairs There are no resistors (they were in another part of the device). this is a .gif; I don't know which format looks better on the Spectrum. like, gifs something to look at. Best wishes. Dmitry. [ZX] [Quake] np:i-192

From Kirill Frolov To Dmitry Lomov 16 February 2003

Press RESET immediately, Dmitry! 13 Feb 03 14:08, Dmitry Lomov wrote to Dmitriy Nesmachny: DL> is .gif; I don’t know which format looks better on the Spectrum. DL> it seems like gifs are something to watch. If I'm not mistaken, there is no guarantee that on the capacitor the required voltage will be found if you do not use a special homemade port driver or homemade communications program.

From Dmitry Lomov To Kirill Frolov 18 February 2003

Hello, Kirill! Once, Sun Feb 16 2003 12:31, Kirill Frolov wrote to Dmitry Lomov: DL>> is .gif; I don’t know which format looks better on the Spectrum. DL>> it looks like gifs are something to watch. KF> If I'm not mistaken, there is no guarantee that on KF> the capacitor will have the required voltage if not used KF> special homemade port driver or homemade communication KF> program. yes, that's right. but I don't see a problem with that. Best wishes. Dmitry. [ZX] [Quake] np: Aria - I'm not crazy [stopped]

From Kirill Frolov To Dmitry Lomov 19 February 2003

Press RESET immediately, Dmitry! 18 Feb 03 00:01, Dmitry Lomov wrote to Kirill Frolov: DL>>> this is .gif; KF>> If I'm not mistaken, there is no guarantee that on KF>> the capacitor will have the required voltage if not used KF>> special homemade port driver or homemade KF>> communication program. DL> yes, that's right. but I don't see a problem with this. And I see. In the best case, you will have to write absolutely all the software yourself. B the worst - drivers for the OS. Standard programs xyz-modem, terminal emulation and PPP won't work - why the hell would such a link be needed if possible? To do MAS-ovsky via LPT, everything is the same, just nothing but wires necessary.

From Aleksandr Majorov To Kirill Frolov 19 February 2003

Hello Kirill! 19 Feb 03 00:55, Kirill Frolov -> Dmitry Lomov: [skipped] DL>> yes, that's right. but I don’t see a problem with this. KF> And I see. In the best case, absolutely all software will have to be written KF> most. At worst - drivers for the OS. And you can find out why “writing all the software” is the best option. And write a driver for the OS, and in this case the entire existing the software will work - is this the worst option? Alexand

From Kirill Frolov To Aleksandr Majorov 20 February 2003

Press RESET immediately, Aleksandr! 19 Feb 03 18:41, Aleksandr Majorov wrote to Kirill Frolov: DL>>> yes, that's right. but I don’t see a problem with this. KF>> And I see. In the best case, absolutely all software will have to be written KF>> most. At worst - drivers for the OS. AM> Can you find out why “writing all the software” is the best option. AM> And write a driver for the OS, and in this case the entire existing one AM> the software will work - is this the worst option? Writing all the necessary software can be much simpler and easier (you can fix existing programs) than writing a driver for the OS if Of course, this does not apply to MS-DOS - everything is relatively simple there. And unlike for other programs, the driver will have to be supported and corrected for each next version of the OS - interfaces within the system change very often. In case non-standard driver using the port in a standard way is often excluded - another minus. Finally, driver installation may require recompiling the kernel (in FreeBSD for example), and this will have to be done every time update. Any error in the driver can lead to a crash system operation. Homemade driver == unstable, unreliable system. ForIn order to write a driver correctly, you need to thoroughly understand internal structure of the system - to a simple person who is not involved in Professionally, such work is practically inaccessible... The most important thing is homemade software will work on any OS (with some modifications), and The driver needs to be written separately for each OS or even different versions of the same OS. In general, it’s a bad idea to get into someone else’s system with your drivers...

From Aleksandr Majorov To Kirill Frolov 20 February 2003

Hello Kirill! 20 Feb 03 00:28, Kirill Frolov -> Aleksandr Majorov: [skipped] AM>> Can you find out why “writing all the software” is the best option. AM>> And write a driver for the OS, and in this case the entire existing one AM>> the software will work - is this the worst option? KF> It may be much easier to write all the necessary software and KF> is easier (you can fix existing programs) than writing a driver KF> under the OS, unless of course it concerns MS-DOS - everything is relative there KF> simple. It’s the same with drivers - you take the existing one and fix it for yourself. KF> And unlike other programs, you will need a driver KF> support and fix for each next OS version - inside KF> system interfaces change very often. Hmm, can I give you a couple of other examples of this? From what I know (I’m obviously talking about Windows) there are the type of “driver for 9x” is .vxd and the type of “driver for HT” is .sys. With 98 and higher, another type of driver appeared, .WMD (possibly incorrect wrote) - this is a multimedia driver. Well, with 9x everything is simple, you can easily use access to ports and the driver there actually not needed :)Drivers I have seen for direct access to ports from NT (.sys drivers) worked without problems on NT4, 2000, XP I don’t know how things are with this in the world of unicho-like ones, but it’s very I doubt that everything is different there. That with the release of a new version of the kernel, everyone has to rebuild all the drivers. The new version of the kernel may have new features for drivers, but for the old ones to be removed - this is the first time I’ve heard of this ;) Downward compatibility is very useful and it is unlikely that it has been abolished in Unix :) [skip] KF> Finally, driver installation may be required KF> kernel recompilation (in FreeBSD, for example), and this will have to be done when KF> every update. So, I heard something off the top of my head about being loaded during work on modules. Those. the driver can be either embedded in the kernel, and load up while working. Is this not the case in BZD? KF> Any error in the driver can lead to a crash KF> system shutdown. This means that this is such a bad and unstable system that it cannot survive a driver crash ;) KF> Homemade driver == unstable, unreliable system. Since someone makes each driver themselves, it turns out that all firewood is unstable? ;) KF> In order to write a driver correctly, you need to be thorough KF> understand the internal structure of the system - a simple person KF> not professionally engaged in such work KF> practically inaccessible... This is where I disagree with you. Well, actually, everyone once didn’t know how to write drivers, and everyone can learn ;-) Next, for all operating systems (I’m obviously talking about Windows, but it’s unlikely that it’s different in Unix) there is DDK. And there is documentation and ready-made examples of drivers for everything! KF> Most importantly, there will be homemade software KF> work in any OS (with some changes), Well, this is if you immediately write portable sources. Here, try to transfer sources from VC++ using MFC/ATL/WTL for juniors :) [skipped] KF> In general, it’s a bad idea to get into someone else’s with your drivers KF> systemy... If a person does not need to transfer the hardware to another OS, then you can rivet the driver. Alexand

From Kirill Frolov To Aleksandr Majorov 21 February 2003

Press RESET immediately, Aleksandr! 20 Feb 03 19:20, Aleksandr Majorov wrote to Kirill Frolov: KF>> It can be quite expensive to write all the necessary software KF>> simpler and easier (you can fix existing programs) than KF>> write a driver for the OS, unless of course it concerns MS-DOS -- KF>> everything is relatively simple there. AM> It’s the same with drivers - you take the existing one and fix it for yourself. So I don’t know where I can get a driver for OS/2. They're actually good for they sell money... KF>> And unlike other programs, you will need a driver KF>> support and fix for each next OS version -- KF>> interfaces within the system change very often. AM> Hmm, can I give you a couple of other such examples? Linux, FreeBSD. In the first, modules from one version are not included in another, but in the second is generally a monolithic core. AM> From what I know (I'm obviously talking about Windows) there are And I’m “obviously” not talking about Windows. However, for Windows driver source codes Portable luggage (namely them, not something homemade) is much more difficult to get than under free *nix, it seems to me... AM> I don’t know how things are with this in the world of Unicho-like ones, but strongly AM> I doubt that everything is different there. Common unichs are all monolithic. That is, the system is so big an executable file that, upon startup, is loaded into memory in one fell swoop. And no drivers It’s not there explicitly, the driver is a piece of this executable. Windows HT -- microkernel, driver is a separate downloadable program. Made in Linux the ability to load and unload kernel modules during operation, but with There is a problem with compatibility between versions (IMHO, it's an absolute mess inside, and the further into the forest, the more firewood). If between minor numbers versions, for example 2.4.9 and 2.4.18, it is sometimes compatible, then between older numbers, such as 2.2.x and 2.4.x, don’t even dream about compatibility. Moreover, not all drivers can be unloaded back or placed in a module. AM> That with the release of a new version of the kernel, everyone needs all the drivers AM> rebuild. Naturally! Look how the producers of writing iron suffer: they have on the sites there are a dozen identical (that is, different) versions for RedHat, Mandrake, Suse, kernel from kernel.org, etc... Some just give source codes, so that the user can assemble it for his own kernel. Well, then the support of the majoritydevices is available inside the kernel and is maintained by the kernel developers. AM> The new version of the kernel may have new features for AM> drivers, but to remove the old ones - this is the first time we hear AM> ;) Upward compatibility is very useful and is unlikely to be available on Unix AM> canceled :) IMHO, the code writers there absolutely don’t care what they do inside... They don’t work for Microsoft and are not responsible for anything. AM> So, I heard something about being loaded in time AM> work in modules. Those. the driver can be embedded in the kernel AM> and load while working. AM> Is this not the case in the BZD? This was not the case in 4.5-release. The handbook said that after installation you need to recompile the kernel for your system. Where is it going now? (I think it’s 4.7-release and 5.0-tesing now) I don’t know, but in general it lags behind Linux, it seemed to me so. KF>> Any error in the driver can lead to a crash KF>> system shutdown. AM> So this is such a bad and unstable system that it cannot AM> survive the driver crash ;)Monolithic because... However, NT is all so advanced, but nothing can’t without rebooting (but Linux can...) and also crashes into a blue screen. KF>> Homemade driver == unstable, unreliable system. AM> Since each driver is made by someone themselves, it turns out that everything is firewood AM> unstable? ;) This is done by professionals. And then they test it on a large number various systems. And if I write a driver, then I’ll test it I can't do it normally. KF>> In order to write a driver correctly, you need to be thorough KF>> understand the internal structure of the system - simplicity KF>> a person who is not professionally engaged in such work KF>> this is practically inaccessible... AM> This is where I disagree with you. Well, actually, everyone once didn’t know AM> how to write drivers, and everyone can learn ;-) You can study. Only in the first few attempts to write a driver is complete it will turn out to be crap, and then the enthusiasm will end. You need to spend a lot of time and strength AM> Next, for all operating systems (I’m obviously talking about Windows, but it’s unlikely to be different in Unix) AM> is DDK. And there is documentation and ready-made examples of drivers for AM> total! You use your own self-written software, if you are not forced, you will provide documentation write? Not for the user, but a guide for the programmer. I think not you will, because it may be more difficult than writing the program itself (which written “from bottom to top” if it is not too large or complex), and it will take time too many... This is how all sorts of Linux systems write... RTFS (S==source) in short. Of course there is something, but it seems to me that in Windows this is noticeably better (with on the other hand, in msdn they somehow write in such a style that it’s difficult to read and understand somewhat difficult). KF>> Most importantly, homemade software will work in any OS (with KF>> some changes), AM> Well, this is if you immediately write portable sources. AM> Here, try to transfer sources from VC++ using AM> MFC/ATL/WTL for juniors :) It's all Microsoft's fault... A lot of software has already been moved in the opposite direction (via cygwin, djpp, mingw and other unixolators). Almost in Windows already Now you can get a Unix-like environment. AM> If a person does not need to transfer hardware to another OS, AM> then you can rivet the driver. It will be much cheaper to bring the hardware and software to such a state that neither No driver or non-standard software is needed. This is if we assume that the driver worth something (at least average salary * time spent). And with There will be no problems with compatibility in the future.

From Aleksandr Majorov To Kirill Frolov 21 February 2003

Hello Kirill! 21 Feb 03 00:31, Kirill Frolov -> Aleksandr Majorov: [skipped] AM>> It’s the same with drivers - you take the existing one and fix it AM>> yourself. KF> I don’t know where I can get a driver for OS/2. They are actually good KF> they sell for money... And there is no documentation on creating drivers? I don't believe it. KF>>> And unlike other programs, you will need a driver KF>>> support and fix for each next OS version -- KF>>> interfaces within the system change very often. AM>> Hmm, can I have a couple of other such examples? KF> Linux, FreeBSD. In the first, modules from one version to another are not KF> are included, and the second one generally has a monolithic core. Hmm, very interesting. It will be necessary to take an interest in this question. AM>> From what I know (I'm obviously talking about Windows) they exist KF> And I’m “obviously” not talking about Windows. However, under Windows source code KF> get com-port drivers (namely them, not something homemade) KF> much more difficult than under free *nix, it seems to me... It seems to you wrong.On the website www.microsoft.com DDKs for all operating systems are distributed completely free of charge. I just don’t know if the DDKs for 95 and 98 are still there. And in the DDK itself, in addition to complete documentation, there are also a bunch of driver examples (or driver templates) for everything. AM>> I don’t know how things are with this in the world of Unicho-like ones, but AM>> I strongly doubt that everything is different there. KF> Common unixes are all monolithic. That is, the system is KF> such a large executable file that, upon startup, is loaded in one fell swoop KF> memory. And there are no explicit drivers there, a driver is just a piece of shit KF> of this executable. Windows HT is a microkernel, the driver is separate KF> downloadable program. If I'm not mistaken, Linux is also based on microkernels. Or am I buggy? [skipped] AM>> That with the release of a new version of the kernel, everyone needs all the drivers AM>> rebuild. KF> Naturally! What a bad guy this guy is. No wonder Uncle Billy doesn't like him so much... ;-)))) KF> Look at the producers of writing iron KF> they are tormented: they have a dozen identical (that is, different) on their sites KF> versions for RedHat, Mandrake, Suse, kernel from kernel.org, etc... KF> Some people simply provide source code so that the user can compile it for his own kernel. It’s easier IMHO with the distribution of source codes. Well, gender juniors are more savvy, so reassemble the core is not a problem for them. And, IMHO, when you decide which drivers to “activate” AKA pasting it into the kernel may be more convenient - no need to load the system beyond measure ;) Well, again, we take the source code and edit it to suit our hardware. [skipped] AM>> ;) Upward compatibility is very useful and unlikely on Unix AM>> it was canceled :) KF> IMHO, the code writers there absolutely don’t care what they are inside KF> they'll screw it up... They don't work for Microsoft, and they're not responsible for anything. Well, the fact that they are not responsible for anything - I would risk disagreeing. [skipped] AM>> Is this not the case in the BZD? KF> This was not the case in 4.5-release. The handbook said that after KF> installations, you need to recompile the kernel for your system. And where there KF> it is moving now (like now it is 4.7-release and 5.0-tesing) not KF> I know, but in general it lags behind Linux, it seemed to me.Hy IMHO BSD is positioned as a server OS. And you certainly won’t install any threads on the server left hardware/drivers. And you won’t install a new OS every week. [skip] KF>>> Homemade driver == unstable, unreliable system. AM>> Since each driver is made by someone himself, it turns out that everything AM>> is the firewood unstable? ;) KF> This is done by professionals. And then they test on a large number KF> various systems. And if I write a driver, then I KF> I couldn’t test it properly. What kind of professionals are they if they don’t care what’s in there? will they reward you and if they are not responsible for anything? ;) And first of all, you write a driver for yourself. So you can test it yourself normally. [skip] AM>> This is where I disagree with you. Well, actually, everyone once doesn’t AM>> knew how to write drivers, and everyone can learn ;-) KF> You can study. Only in the first few attempts to write a driver KF> it will be complete bullshit, and then the enthusiasm will end. Need to spend KF> a lot of time and effort. I need to write a driver for a non-standard piece of hardware, connected to LPT and communicating with its program in its own wayThe protocol took only a month. Initially, the program only worked under 9x, but it was also required under HR. There were no documents according to the protocol and there was no hardware connection, but there was a diagram and sources of the .vxd driver and the raw version of the program. I spent a couple of weeks looking at the protocol and delving into the raw materials. Then I downloaded DDX for NT systems and created a driver. Plus "gateway". Those. the program itself now communicates with the hardware through the "gateway", and it already looks at what is on the OS and calls either .vxd or .sys. PS: I had no experience writing drivers for Windows at all. ZZY: checked under all OS and on different machines - everything works clearly and without problems. AM>> Next, all operating systems (I’m obviously talking about Windows, but hardly in Unique AM>> otherwise) is DDK. And there is documentation and ready-made examples AM>> drivers for everything! KF> You use your own self-written software, if you are not forced, documentation KF> will you write? Not for the user, but a guide for the programmer. KF> I think you won’t, because how can it be more difficult than it is KF> write a program (which is written "bottom up", if not too much KF> large or complex), and it will also take a lot of time... Well, first of all, let’s remember the diver under the MMD that I sculpted onsome kind of leadership. And MMD 4 itself, for which the manual was written programmer in MMD language ;) In general, I have some comments in the raw materials. And they say that there are even too many of them :) And the various structures are generally written out for me - what kind of variable, what is it for, etc. And I don’t skimp on the length of names ;-) KF> This is how they write all sorts of links... RTFS (S==source) in short. KF> Of course there is something, but it seems to me that in Windows it’s noticeable KF> better It’s not a fact that it’s better in Windows. KF> (on the other hand, in msdn they somehow write in such a style that KF> this is somewhat difficult to read and understand). MSDN is certainly useful, but... In short, somehow I never needed MSDN. It’s easier for me to get on the Internet, and there are a bunch of sites with source codes and documents that are written more clearly, including even in Russian ;-) But with Windows everything is not so much better. One of the “geniuses” is ListCtrl (the “list” element, well here In the explorer on the right, this element is used. maybe like "list of icons", and in table form). Very convenient to use for displaying from databases. The same MSDN says a brilliant thing: that the maximum number of records is 100000 (or an order of magnitudeI don’t remember more). A very strange number, it doesn’t correlate at all with the size of variables, etc. And too round! So, MSDN says “it’s hard to imagine what will be needed display more data." Dot. [skipped] KF>>> Most importantly, homemade software will work in any OS (with KF>>> some changes), AM>> Well, this is if you immediately write portable sources. AM>> Here, try to transfer sources from VC++ using AM>> MFC/ATL/WTL for juniors :) KF> Microsoft is to blame for everything... On the other hand, there is a lot of software already KF> moved (via cygwin, djpp, mingw and other unixolators). KF> Almost in Windows you can already get a Unix-like one KF> environment. Wait. If the OS offers a certain set of API functions, then why can’t you use them? Well yes, obviously in other operating systems these APIs may not exist at all, so what? Somehow I strongly doubt that applications written under the GUI KDE or the gnome (or whatever else is there) can be transferred to Windows easier than the other way around. As I understand it, all these “portability” means that you use some special library, which itself has been transferred to Windows and linykh.Those. In essence, you work with the system through a kind of “driver”. As for MFC/ATL/WTL, I don’t see anything wrong with use not so bad libraries that are quite significantly speed up the process of writing software. And don’t assure me that there is nothing like this under Linux - I don’t believe it ;) AM>> If a person does not need to transfer the hardware to another OS, AM>> then you can rivet the driver. KF> It will be much cheaper to bring the hardware and software to such a state KF> that neither a driver nor non-standard software is needed. This is true. Alexand

From Kirill Frolov To Aleksandr Majorov 22 February 2003

Press RESET immediately, Aleksandr! 21 Feb 03 18:45, Aleksandr Majorov wrote to Kirill Frolov: KF>> I don’t know where I can get a driver for OS/2. Actually, there aren't any KF>> they sell well for money... AM> And there is no documentation on creating drivers? AM> I don’t believe it. Exists. Only the necessary tools for creating drivers are also not available They give away freebies. And OS/2 finally died (only for IBM so far). KF>> And I’m “obviously” not talking about Windows. However, under Windows source code KF>> com-port drivers (them, not something homemade) KF>> it’s much more difficult to get than for free *nix, it seems to me... AM> You think it’s wrong. AM> On the website www.microsoft.com DDKs for everything are distributed completely free AM> OS. DDK != ready driver. AM> But I don’t know if there are still DDKs under 95 and 98. But in DDK itself AM> in addition to complete documentation there are also a bunch of examples of drivers (or AM> driver templates) for everything. An example and a driver are two very different things. AM> If I'm not mistaken, Linux is also based on microkernels. AM> Or am I buggy? You're glitching. That is, there were some attempts (at L4), but this is from the realm of fantasy for now... Although with modularity it’s close. AM>>> That with the release of a new version of the kernel, everyone needs all the drivers AM>>> rebuild. KF>> Naturally! AM> What a bad guy this guy is. No wonder Uncle Billy doesn't like him so much... AM> ;-)))) It's easier, faster, more compact... KF>> etc... Some just give the source code so that the user can compile it himself KF>> to your core. AM> Distributing source codes is easier IMHO. It's not easier for everyone. They also pick out from these sources what they don’t know it should... Binaries are more difficult to disassemble. AM> Well, people are more savvy when it comes to sex, so let's reassemble AM> the core is not a problem for them. What is there to think about? One button is enough. make menuconfig; ./menuconfig; make dep; make; make modules; make install; make modules_install; lilo; reboot. That's all. AM> Well, and again, we take the source code and edit it to suit our hardware. This is a very complex and time-consuming process, so as not to deal with it “for no reason.” do." KF>> IMHO, the code writers there absolutely don’t care what they are inside KF>> they'll screw it up... They don't work for Microsoft, and there's no way KF>> answer. AM> Well, here’s the thing that they are not responsible for anything - I’ll risk disagreeing. Well, they are to some extent responsible to employers, but their area interests do not always intersect with the area of interests of users who use Linux for free. KF>> This was not the case in 4.5-release. The handbook said that KF>> after installation you need to recompile the kernel for your system. A AM> Hy imho BSD is positioned as a server OS. If you run X, you won’t be able to tell it apart from Linux... KF>> This is done by professionals. And then they test it on a large scale KF>> number of different systems. And if I write a driver, then KF>> I couldn’t test it properly. AM> What kind of professionals, if they don’t care what they’ll do inside there and AM> if they are not responsible for anything? ;) One does not interfere with the other. AM> And you, first of all, write a driver for yourself. So you have it yourself AM> you will test normally. I'm not crazy enough yet to write any more drivers for yourself. Let others write who gets paid for this, and I’ll do something I'll do something (useless)... AM> Well, first of all, let’s remember the diver under the MMD that I sculpted AM> some kind of guidance. Neither the operating principle of the driver nor the structure of the program was explained there. When you look at an unfamiliar source code, it is usually not clear how it is in general works, and no comments will help. KF>> This is how they write all sorts of links... RTFS (S==source) in short. KF>> Of course there is something, but it seems to me that in Windows it’s noticeable KF>> better AM> It’s not a fact that it’s better in Windows. There they force you to do things normally. And they test it at least somehow in advance. KF>> (on the other hand, in msdn they somehow write in such a style that KF>> this is somewhat difficult to read and understand). AM> MSDN is certainly useful, but... AM> In short, I never needed MSDN. AM> It’s easier for me to go online, and there are a bunch of sites with source codesSources are good, but again you can understand some specifics, but how in general, everything is incomprehensible. AM> The same MSDN says a brilliant thing: AM> that the maximum number of records is 100000 (or an order of magnitude AM> more - I don’t remember). A very strange number, it doesn’t correspond at all AM> with the size of variables, etc. And too round! AM> So, MSDN says “it’s hard to imagine what will be needed AM> display more data." Period. In Linux there are several times more such glitches... (in terms of the number of graphic toolkits). KF>> Microsoft is to blame for everything... There is a lot of software on the other side KF>> already transferred (via cygwin, djpp, mingw and other unixolators). KF>> Almost in Windows you can already get a Unix-like one KF>> environment. AM> Wait. AM> If the OS offers a certain set of API functions, then why are they not allowed? AM> use? You can... The problem is that another OS has similar functionality functions not compatible with these. AM> Somehow I strongly doubt that applications written under the GUI KDE AM> or gnome (or whatever else is there) can be transferred to Windows AM> easier than the other way around. I think it's easier. KDE uses the QT toolkit, Gnome uses the gtk toolkit. Both are available for Windows. You can also run X under Windows. AM> As I understand it, all these “portability” means that you use AM> some special library, which itself has been transferred to Windows AM> and lines. Well, yes, that’s pretty much it, but under Linux there’s nothing special necessary if we are not talking about graphics. AM> And regarding MFC/ATL/WTL - I don’t see anything wrong with I don't know what MFC, ATL and WTL are. Microsoft Foundation Classes -- The name doesn't say anything. AM> use not so bad libraries, which are quite AM> significantly speed up the process of writing software. AM> And don’t assure me that there is nothing like that for Linux - I don’t believe it Is this for graphics or something else? The point is that Microsoft is deliberately everywhere invents its own, incompatible with anything except Microsoft products, interfaces and standards. And Windows API, and character encoding and... whatever. That same MSDN they put in some strange *.html that they are only the 6th IElooks. Inside is binary data. What for you ask? So that I can't from under Linux read with Mozilla?

From Aleksandr Majorov To Kirill Frolov 22 February 2003

Hello Kirill! 22 Feb 03 00:14, Kirill Frolov -> Aleksandr Majorov: [skipped] AM>> And there is no documentation on creating drivers? AM>> I don’t believe it. KF> Exists. Only the necessary tools for creating drivers KF> are also not given out for free. And OS/2 finally died (YBM for now KF> only). Well, she died like that. [skipped] AM>> You think it’s wrong. AM>> On the website www.microsoft.com DDKs are distributed completely free of charge AM>> all OS. KF> DDK != ready driver. Have you seen this DDK? There are examples of working drivers posted there! How do you think manufacturers of hardware manage to release so quickly Drivers for new Windows? Yes, they just look at this DDK. AM>> I just don’t know if DDKs for 95 and 98 are still there. But actually AM>> DDK, in addition to complete documentation, there are also a bunch of driver examples AM>> (or driver templates) for everything. KF> An example and a driver are two big differences. Okay, explain the difference between the working driver example... ny for communicating with the printer via a COM port and “not an example”, and a ready-made driver. AM>> If I'm not mistaken, Linux is also based on microkernels. AM>> Or am I buggy? KF> You're buggy. That is, there were some attempts (on L4) but this is from the area KF> science fiction for now... Although modularity is close to that. So, I have a strong opinion that Linux in its The book states in plain text that Linux is nuclear... [Windows killed] KF>>> Naturally! AM>> What a bad guy this guy is. It’s not for nothing that he doesn’t like Uncle Billy AM>> like... ;-)))) KF> It’s simpler, faster, more compact... Yes I know. There’s a reason why there’s a bunch of emoticons there :) KF>>> etc... Some just give you the source code so that the user can compile it himself KF>>> to your core. AM>> Distributing source codes is easier IMHO. KF> It’s not easier for everyone. They also pick out from these sources what they don’t know KF> it should be... Binaries are more difficult to disassemble. Explain what can be picked out of these raw materials so that What are you not supposed to know? And explain how they manage to write such terrible and evil viruses under Windows, without seeing their sources. And everyone manages to find holes...Here I have a computer with a certain OS, I _have_ the right to know what’s there and how it was done. Because this is _my_ car. [Windows killed] AM>> Well, and again, we take the source code and edit it to suit our hardware. KF> This is a very complex and time-consuming process to avoid doing this KF> "nothing to do." When writing a driver for Windows, I didn’t notice any difficulty, no labor intensity... Maybe I was looking in the wrong place? :) [skip] AM>> Well, first of all, let’s remember the diver under the MMD that I sculpted AM>> some kind of guidance. KF> Neither the principle of the driver’s operation was explained there FAQ? Entry points indicating what should go where, What should be done and what should be returned - isn’t this a principle? KF> neither program structure. Structure of what program? If it was the diver himself, then IMHO everything was written out. And if the program for which this driver is written - then this and it’s not necessary. For this is why the driver was created, so as not to bother with the proceedings in the program itself. KF> When you look at an unfamiliar source, as a rule, KF> it is not clear how it generally works, and no comments will help. I'm not talking about the raw drivers, but about its description. [Windows killed] AM>> It’s not a fact that it’s better in Windows. KF> There they force you to do it normally. And they test it somehow KF> preliminary. Horseradish. HP 845 printer, connected via USB. The first time I tried to print the driver from PageMaker immediately fell into the GPL. Just yesterday I was running again - 35 out of 36 pages I printed it without any problems. When printing, the 36th driver makes GPL and that's it. Moreover, if you set the print quality to “draft” or “normal”, then prints. But in this case the colors and quality are completely wrong It couldn't be worse. And in the “best” mode it prints only 1/5 of the sheet and that’s it, GPL. What kind of testing is this? [Windows killed] AM>> In short, I never needed MSDN. AM>> It’s easier for me to go online, and there are a bunch of sites with source codes KF> Sources are good, but again you can understand some specifics KF> but how it is, in general, is not clear. This means that I am so completely wrong, because I still manage to understand everything in general. [Windows killed] AM>> If the OS offers a certain set of API functions, then why not? AM>> use? KF> You can... The problem is that there are similar ones in another OS KF> functionality functions are not compatible with these. Are you suggesting that all manufacturers use the same API? [skipped] AM>> And regarding MFC/ATL/WTL - I don’t see anything wrong with KF> I don't know what MFC, ATL and WTL are. Microsoft Foundation Classes KF> - the name says nothing. MFC is a library of various classes, there are graphics and all sorts of lists etc. In general, a lot of things. ATL - a lightweight library for creating ActiveX components WTL is a rival of MFC. *TL - Template Library (I think I wrote it correctly). And I would like to see how you transfer the ActiveX component and application under linykh ;) AM>> use not so bad libraries, which are quite AM>> significantly speed up the process of writing software. AM>> And don’t assure me that there is nothing like this for Linux - don’t AM>> I believe KF> Is this for graphics or something else? Well, Windows is graphical. So there are classes for work there with Windows elements (buttons, lists, etc.) And also support for all sorts of lists/arrays (the 1st MFC was created back when STL was not yet a standard). Plus socket support (synchronous/asynchronous). Plus multi-threading and synchronization...In short, it makes the work a lot easier :) KF> The point is that Microsoft KF> deliberately invents its own everywhere, incompatible with anything except KF> Microsoft products, interfaces and standards. Hey yes. KF> And Windows API, So, what API should they have used? [skipped] KF> That same MSDN, they are kind of strange KF> *.html assumed that only IE 6 can view them. Inside - binary KF> data. What for is the question asked? So that I can’t get out of Mozilla KF> read? You go to compulsory and read like on the MSN website for the 7th opera A buggy HTML code is _deliberately_ produced. ;) Alexand

From rNd To Dmitriy Nesmachny 26 February 2003

Пpивет Dmitriy! Отвечаю на ваше письмо от 20.02.03, тогда писал(а) Dmitriy Nesmachny к Costa Pilnik, а было тогда на часах 8:30:41. DN> Где взять? Инет не пpедлагать... :-( Может, вышлеш мануал? большая она , ладно , лови ююк section 1 of 2 of file com.zip by Taimyr 2.00 filetime 777662859 size 25261 begin 644 com.zip M4$L#!!0``@`(`&Q6B[*<=0/6(``+M$`0`'````8V]M+G1X=+076;Q[7O M!/@?!BIR03HD(U&RX]IU+Q+)N3!JQ[F2"MR'`((LT1816S(H.C=&V[^3I_LC MFL!%@URXKI,"?;K`:,41E^3N-16(0N>%01,SUQ-D;5PS& M,?R1R.?Z01B-V.I:N;I8+2S-X:LIAU7V+>LS1UWX'H!`&-!Q!P1#F!96B$Y M'@"*T!D)UG(X&8?*X5P(=/=F#O41 & M"=#55-#5"= 2T7P.VRN52I6`_1"*R$T`6TS'V8ZGOFSTW@2NV(*L+#4_U]S"<:Z @X[' (## *^0&/1@Z/3ED_A YD MW?$UG(:G7Y)[*[-;J_^YQ J#(`#LHD'D($O=^G2=S2_O%*_3V&I)8DIC%U/' M?KQ3)(3^S <#+XA"UP..: -3"!27(&J)WBDP"SMP(SB:OT?N,?%;X,A9XA#$ M(S0<-=FB6# X$C[S138A*(%JPN0/P`CSR[PAO*4AI*3+8')YURR!1U-B&(X0C8H,N,!3)$8TB%)]!/B-: &?:ZQP(T#E4.'J MB^#@.&B!# *DOCN@@ZG4C-!9@O@D$/I"YTA<,$1[CL,3MP(UW#;^1P@`E..A$9&(CVE%0;P(1C3'B,> MOL9E@"*<#?LA=WKCLS?8HD&P0GSLJ.A0$^DCOK>Y7]O8W&ZP]]EBB1VV1-R2 MY(Y4VN1SFCA%FTWD)LSRL$_4;FV@P3@Z'8PK[ #4%>$.8@H(`Y`4R0S_G# MWEG)T&&*V$0-UZ;%L2:#! GG9D'-YP@L$RU4G&(&8,<)6IPI_,?,Z_&6/%,@ M$]!4]-Q(],;YW GHRP!T>,2[P/*XR4/A@4`Q84:EW8() E:(CP"8@DSM:2( MK0AGU.>3K)C!7V4N^`N$P!D'L'T1=2=ZNMY'.2XH1VK!Q`$E))O$#<]$?# M2Z>QB$S*!#"9.0^#A-Y_G^26UN7,@!DSGHP5F3=GHFIYV6`,!@ M'+DG:%=>!:'[;[78#9]WOJ)@Y+#'DY=4(..P`ZD5Y9`(N4SUT!JP2?%^:Q MZ<,K5_.Y1=ERF5H6KR[!YZO8`NTT[>?5?&Y^&5NNR):?7&/.*%]6$[[G M749G2'*"J-/$AT-W@5J<="[W*BT4ZWX7)].ZR=7=$JL&P`C#L_R.`M>D4IV0-4SMP/ MJ :1N3ES).1-*,$"Q(G,$G'JS<_^A5YTSCNM7O0%30$_Y&@SP-.*EZ# MC@$[N XJ1X<6@>,)9B]M^$1]"-AU-87EKL96UU1);O04?EE=PY;9WY(_8P0CT`G 5?)R7,8QT=X:MX(#<#Y3O89^SKK'-'OOU1ZOK MS!NQ`'4Z'%/NE!=?M2RC3B(12SXH.G!%SSX&QI6.H'"P*NP5[S38TV&V- M1NU!1?F1SWA/"$7H`'TI/(M)X$#;VT_9-;9P?;)S[TES M1F^MT4AMAW]V']12NQJU_5KC2^A:NHZH_([=J]/I7Y]&[-[39DT-@GUT;1M,]!W8S:X/E#([<%@<]JU08R$MO M>.2J$[#$'Z)AF/U22;7`) !X_17V(YH18$%7.6BP/YRB=8&;I0AP$,F$G<2 M?G !#!C5X>#I'R7=*'[LX,$XQ3!JC 'HS'2.*"04*=(_"LXVEXON;O8 MDH`C9/:47 IWD)3#[4+':9UR&H+PO-ABR7F!&W#0GNN !@`*5I+$&DL+G MM/J)B,C>D2V0QI?;R/5HHEG2E9;CG,TE$)0XV[N,*4=]4ZJ?/2MW=VZCO M-FOIRI%Z-NK;T%G-5H^7WTH]`E)&/_XX[3MF-"M>A^/M!UIV7$GXLPI+N+O* M(144H;9[$/5@[N*8A^ V0A $7-?ET("F^9KQ^,F0S3T]_TH#'K",]Q:HJ0@ MCH)8;. >^KS')6>"EP!,!8Y4(GH>] ('K+?K.0%DB;[+=U+I783?JQ`ZC^ MO:%U`WC5QMD8GT6$U3"!E V=',HMW%S>X@/7P9.ZXGFE$U7)EJ)N7TX70S MCKXJ4P76;KYFL?<*0O=]`!2"(-6!X"<*^J0.88J%#D)?F(".H*N$>*I73)#_ M*JEV:D!]A9 454_1251TA<]"CW%&J+G&J%S,(Q"=08"/7L=/JBS M-FC>580F,LA1EDL+RE%M[!0)*6[((>GCIE?*$XYZPKE'Q5NG%@-U5F%?3MJ MDY:6X1VYZW#P73!YPQZ(CP-^*M%=:$G"(3)`0'/6#UK=WMF)S*E96;YICQT1 M^ :.8"KO-.60@YNK3]$UN1E@#Z17F$RENBG>+;I5BQI1PGYG,R@'8;#-L"> M#%GSN;2<%C#,_#NO#,?81>]]=.('=E@2'/3$H4HPF7/0&68/CKM>[S9J#>?9LQYLO7%AAF0$E+L;MR#@..+C:WFP]0!VPW[ZF.M["0MU,"""L$ M([D@;JN] ,'@>01&QP%."FDQY"S8,W4$KN86CR56'@#O!N*6*HT'B_#TY?A%[ZX`#02S6Y,4K5!$I_4!:0 MK2SJ+!:%YY%>M,2B0.5W9 `NW8?4ZT24%S*I> 7#E/_F"VMFTJBR/Y)830J5 M%" Y]05KUO:;172= MR?!"$$=J'[VA4. M.":S0KE^9+* M^?5H`96[(Z7@DI,9]%),>RS(K(9NB.Q7QD<&#3J0LC8[),C55BH+ZQV*Q<^(QRZSH7$W0&X(3 MALD:2O+;J9K2Y#24<.HR.A?USV B>91`);DJ2,R?*,=BIV#&%?;-J*>R1I1O MZB3G6??MJ*>0"*/6$/TX8&W44@>C7G+&`*_4?9."##I861.*]K!W&O%(6"!2 M5NH'0).Q/W&)DMQ&O!$3>B?.0>9][%E3V3N=XD*/.,EE$Z3%4BP$YW.*H'Z MD!=SI<2U#(CZ8(C9M>*=;28R;N(R;LL-&+57'(?=EKGXB#UD"38@E$W*NO,34]]X8`U-AC60&JXHC M*^0S0MQRW$.>DO3$G(R5.96B0#5`4C2LU!P.,VA31HS4LJS:8H[)T=+]!04P M$#^ZK02>Y.>0T:9J$U/V$-$A<$I;7=_`'"]X@V94 M5P8?NKHOV=^OU9_XV>+#&RK"3_5UM$Z6@#=>#PZ<0*IV[;L94M$HAM117 /<)*L#)IR,'PS/%/IL6'B7#)/)<6PQE>% M4ELN8RP,$8W5Y.*ZLK8X&K0Z-K(IP7^69[$:/46!+S$2:!ED)/( M_:'2)!6'ZZH.MT>''31AXE)96[HX9 M>1795XP?@28]XEWR'72$;*.)9)-R6*!")BQ*!3VL,A=%"!A9)3(C) M#*F:':O?$MU!F AYHA ,LQMCOI:%K-H,_+REF^U@Q%;,Q,KD85QYIUCY`AZ& M+./8V,H(C57W]OZL(I"-1GWFY*WM].Z,-;,6RU@E!G_Q>-OR*+Z-[U-DT$(O M$G25N:;B4'$%1A6R[@1];" (.MQ'^ 55<0MX!0N+8B_#).#+O MC6^";LQ!WTB/,GF#UQ2_AJZ'>QTI1M[3W:V-S>;M3V]PM%DK6?U7>W'C[9 MKK&Y_:?[CS=@0&5GCH3PTJ5[E+ETU'-7L:M&'S>KWYL,;^%+N-CX!!P4V[;/(2)SP5GT-&H M53]K[#7W6,SFUOZQ!($]WFLT&;ZRD*,W&YN/]N..LN*I5'I=P[7PEDT^YEB0 MGZHE&_ITV*)+T/BL;3YZ_%"3MU'9@K9+'R3U0OJ! M3>A)5:E.PZXK#6Z0V#!DD1,L@>*DGV=FAG- -V)X]2?JCJ#XO,59^6$';] M?J$@T?@EA!-%]MO?,O7]%T".8I$UZ)0+L"Q1EF!KE>2ELXUII44=LW)ZL%$ M/F?ODMU@EP`-L?U3*8F!]PC?::,FU64IT,!5N^3*VK=V;'K.4,CXT"G2;D%H8=16JRG_8;-YB9!N;V"E+U8./A%HZ_O::^[>.W.ZKO$?7=47V/ MJ.^6ZJM3']9GR:]U6C>?>]R`M>7YM@+0R#KQ-/,-R78/]_]?'>NF(3P+1 ! MC7F*PI;$+"R4EXK7&,W;W]K!R,+W-N M),^]7$X"B[6.J9))K8NP=_+Y+DLK4KO!WONO'=IXB>C";D#TD217$>C^N,#D MBR%9%5%D6NT02KHX0$H0UAS?,@>N)4M867GU3)?S>VX;EKFYK$HJH(O6J:*C>*NZ:*>:W'G"WIM"[LMX3_)BA0:5$KL2'JS%2S/>)]=+DWW M4('&^VP!N@J3?2H'"'D8I'].^B;N(IJCH'<%F;,`.NBIL2%6C1ISFS8%[8; M-E.)/`^H(E&M.A)4I'##1AD/-%)&<"GY04LZ2> M#968& `SBY DY"Z'@(^JA>:'#/I^C*YS/YZPIYU[/I(S-N%NQ1N(U M1)D/=5,I<6Z*173RO33=I5/O*5V2TU,Z*.V>TFXGW=.6TBGW-)!QPCVE5Z7; M-:_&? ><]YP?>6A0>F<'PS/6[8%#_7HH[X7"0"9XX*C)G#RH-;=V"A?D]_3[ M_Q263RD_2.5Z-H/M93D!^9[*1D_QO,7U,IN]W6Q8;"#;&LW]J3:L"4AKK%J- MT4FD^STR-8X34U]NQ763FG%U=.;JRG-6(V@J7QA?11GG&8J)'6%O:TL522 M^ M;_&MV(5(T^A/EO)7.2M:LH35=N&I4#H3+Q)G9R5-4^N'+K=6F%6+BG[6T: M) M4VLLQ*H$EP,A6*!0ED()2&MO7MS*M:WTKV^39?;5&(Z55_S!(*N@.2[8#!%X&?+:D5'9=8R ^" M"/8F?^C'I&0#0K3.67S%@&30_()'-9]@]7R%R*>X#&"!O:3%?HWXWB124 M7:2I%W1DELAZ0VD6PA]BD#]%@#=0YSU;*25#/0AR?!UMRFMIESG!X-1S*?+D M]# "@]:X(`&/5-;9T",1F4L2RGX!/NK'8HY<2G)QOQ5TP`J75^ZNL3MW5V[* M=_Z$I>O03XM@LC U8"]-9ZPP98^+1*([E($[K!/_Q(&L1([?B/@Z]PNCN$91 M,']XA(&'PV7Y#I.O.5_+S ;=*5 9E9J&J1*RTW]J03:#N6.$9K/6S(9+.NQ M`A$+_<2O[>C?Y%&E'K*0Z_1,)@4P649+&PY+_'*+OJG___:^]3>NXKS.P'^ M#S<"XF'+W>UNOD1)XP24:,T(ZTW"9W<=R"LT7Y_XR7@72P4EUE7!++%+%T[?J-7-%$TW9-SMD&UWSU$M!5& M:ZUS17,X'5%(P[S%(_'%$5V!4#H(N2[9Y6-2_0G.;/J4UT-9=4%NJECJ-1L M4B?$!2H]C$(+XHQ6W.@E%DPH,,B![&N-YZX![MA)OW$G*#Y.7N$F@YW M#A'!BM^_D$F-!"EJ-^YE0HVW.@5K2T:9%_;BS-YC][6_0=7[FUO;1=>2(&T!FON*LJW'G>M)YC@2?+S+&I M`D:**'3T)&WVP:0WGAQ,S.TV3O?-:J[_Z/TKPIR50X_,VO8;%NP[T_R)MG68^[XS>G!2LM7C59:#A%9$=XL!SB^]Q"%PGHU8 MZ??6E7^^<_<:ML4&.-PZZY^9#3WK5DZ6Z-:=V_8?;!U_QJ-4R7#2*M?N"VV M_?Q)KMS0:_M)^I3I5'E.08*(_5&N4^^IN;=][>8=M3XWZ[>N9W_+>]X?TG: MSKER>)VLIOCOL3D[AI22@="OEC314>-[LN!-,A-'"]B.&J3PUH.E#SP"]!Z MT#;2VTEWD*A?#9MK>4F]D1^HLGO/FY#SWV2[7?BR"(_B/[ZKZ.ULWCW=?_R6M4R/')AY -. MA(*4.Z4PHG^^:53V:.$#VI^K6_>N1T`.T.CM-NMLQQ!?%:>G5I=DT+ M8RW)U-=*QN)'A*F6'LNTTK0H^&Q6_=O;9N';ZI??^%)&>P!FVBWYV$V"NG4 MWZ/J&+P2Z;UFWCCU(1.`4^>,0)DIV0`=3=[_2,OW/O[SES@[J!#9N58.KF\n MB1GX%!S:R)8>;".A RY5E9:9'8W_3OY1"6G')YY!O`YCM>X<=^WR1AKH%7DX+F'CR,+SJP?#<`E1QP[KE]3<_VKKW3Y7W_DFY^">]>)<4 M!NB?3N:@3IP@8(2G"BF`! 0(`M_@)>,G;WYV[(P2:%WN?#SJI2R<>&N,OJ#0 M=QKLK0U>A;JVGSP;9G398F0"S('P;4DH/@SQDIO?_D7WM%:C"Z#5^O##H/.U0@LTT*_F/XM-+UZ-32CF(ON3[J."7':4 MRIT,COEFQT%=L%HK=^TM-I>:T2,6XF(%&?VH:"XJP(%'F=EICL('SG.4'D MCF'$I$CX@Z,VZ-.9J0NQ$&.LPCQ#:6=6&DS)KV?SRMDH8C/1DL:>IGS:-4*/Q$N1([?[=:U;=O M&/*6?H'_S3W_%]8-E798M1"Y2Q)*Y/U[<%+4)3>1(__][X:3@A-,`W?-^:H=QW!(D6U5G]AHI.3G,.[*IOY(F;^8I`(+S6)QS?T^/(P_-.A"WS M7:@ZY-_@`7YD`?YYHM_^22[_P",.KWGOE0ZOO/^JA[<=G%R1`'B.U%^M<'97 MZ.QB^7TJ:$1W)YSE@7#7'L&_?,>XMF`98$HCJVO7Y31DD?1WZV M(K+<:7%;'UTC.G%VS-?,+_6(1$D?/^"3-]DI@/F>@8?^)[<_SKID#9]:_@3? MO'$'2]6IG#]-&XWDVLJ9JLU @IKGH$LWS5,Q?>N! 8 M9VMXF71-7ACYF[=WV>4B=5B62U;L+^M8N8XZ&.5S*N1T5(6H)G_`)S&,U7LX M.!1^E7Z'?_U.9Q9(TAG[NQ)P-;YS4MO-[SFY)^.&=NPMGSPKQP_C`N;)R MVXVX^W@.0!,#Z6FXSY):+T;S;)#1)`)@C@(0591:'1N)O MC5F^2(`H2AZ^*;6HS^")+D#D$_A(AJE5$PFS@JIBA0G2+B,^49[CQ!9H@O^? MZETU;!DF)ZQYY#L=#J5%4!^D(_KBM"R>+W18UT.,?3,3TOC&PK1:AH]2:#Y M4)R(Q8ZC^7V<,9(KP*Z>]3-E'E"1+0UJED$_TTO,P4F858:,>!^<4,2&K]LB M29WC(>CU9Y;JQHOL94>@TLZD^WPLL5)(Z1U^F41^LG$`KE"8>212]W.`7N4H M%DR-8T?.L'OA9]'6K7JTB+(RP&4Q?ZB;7AZ:60CGR$-PDX[$-]'E+KK'4Q,PBDJ'.PC Q8@^!YGF" M`C[6'PF63P;.Z3!5B.!2NB&OO5 TA)D(W."C=#PA,S*?2D@:F0*$BYIJ2L; M]XIA%(@-058<4XO$0!R'58ZT.^Y1A3(DBO4@W.)S57AGG^$&`#X`8`;"#S3S M!+#52RZ&T<0HC&F8C!D,<$!PBLT$$+"""/V@!G^D^Q"4AWA"::>60=/SG0 MS%(.G7V48Z,//:S9(911V.)WHU%R8"9YXE?I3CEKBDE#(6JI2"BF?4)3&_R M!(F,6C4BP&.;':Q:BY87[.9AX!]&@0/.MC<439$R2)0E,H$O7CNG>@'Y]]X M?_.-]4T1GP$H@5H!NU2?#('P:I$H6&9`I:'B?K3;348`P?@J`5>L@#HWNB5 MK8@OZ8=S@)7XTNS:09QAV*?I7L1I.!OP9 MY,H/BZ_4"S EI"WKM],A->P`TO'&!ZG?!18ZT@(_R>?ZVZ1N<_AE`W*DP/C* M]CR-,J-D(*+5PH_.0"&^1[KN#)O#07P1]3Q8R0LZ<%:_,HS!:%*`[T:++L.8 M#HH3:.KB# +53$@/?B`PZFP:4+_AI%G9GZ$^X-9(D2*"12`: ?)#I_:@5

From rNd To Dmitriy Nesmachny 26 February 2003

section 2 of 2 of file com.zip by Taimyr 2.00 M0AAL!B2YAJY'U3V