Modem driver

ZXNet echo conference «zxnet.soft»

From Eugene Palenock To Vlad Sotnikov 30 May 2001

Hello Vlad! 29 May 01 02:34, Vlad Sotnikov -> Stanislav Udin: VS> As far as I know, no. I have a creation in the distant future VS> MMD-compatible driver for HAYES, but this requires learning VS> documentation, and I don’t even know yet if this is real :( The PC modem is much more intelligent than ZX modems. In general, you can write, but most of the entry points mmd-compatible driver will not be used. Accordingly, there is a need for support for their “neglect” in program. Isn’t it easier then to just do it in a program? work with a PC modem? There is no need to invent protocols, etc. - it is necessary only receive and transmit bytes to the port. VS> But no one knows the principle of operation of the HAYES modem. You are undoubtedly... Because there is simply no principle you need to know. You only need to call teams specific modem model (which you can dial in the terminal necessary to configure it) and be able to work with RS232 (modem at low level looks like an RS232 port) Best regards, Evgeniy.

From Kirill Frolov To Stanislav Udin 11 June 2001

Press RESET immediately, Stanislav! 01 Jun 01 21:55, Stanislav Udin wrote to Eugene Palenock: SU> Where can you get acquainted with these entry points into MMD-compatible SU> driver? Modem/clock driver. The driver is located at address #C000 (49152) to address #EFFF (61439). Maximum time driver measures 12Kb (12288 bytes). Area pa- memory #F000...#FFFF is used by the system under the buffers. The driver must not change registers IX, IY, SP, change interrupt type Driver input points: D_INSTAL EQU #C000 INSTALLING THE DRIVER when entering [HL] - modem buffer address. When returned to the modem buffer, it is written to ASCII form of speed values, for each speed is allocated 5 bytes, maximum number of speeds - 8, description ends - Code #00. The register pair [HL] returns the address processing subinterrupts. If a non- maskable interrupt, then a re- move to this address. Processing subroutine interrupts should not change the value of the re- hysteres with the exception of [A], [BC] and [HL] If when calling this function the flag CY=1, then a test call to the driver occurs. And The modem driver may not perform in- stacking and not returning data. This is mo- may be useful if the driver The modem is packed. First, "US-" is called TAOVKA" with the CY flag set, forfor the driver to unpack, and then The actual setting is made at CY=0. D_COPYR EQU #C003 OBTAINING INFORMATION ABOUT THE DRIVER. when returned to the modem buffer, it is written driver name (up to 43 characters), final code #00 D_RD_STAT EQU #C006 READING LIII/DRIVER STATUS When entering [A] curb color When returning to [A] - data for port #FE This is mainly needed for the VICOMM modem. If the modem does not “touch” port #FE, then the value register [A] must not be changed! When returning in register [B]: bit0 line status: "0" - the modem is not occupying nyu, "1" - the modem occupies the line bit3 presence of tone dialing bit4 is it necessary to turn off TUBRO mode when calling the driver bit5 has line control, i.e. modem can “pick up” and “hang up” the phone. bit6 presence of clock in driver bit7 presence of a timer in the driver D_WAIT_INS EQU #C009 SETTINGS BEFORE LINE SURVEY (BIG ESTABLISHMENT) This function must not change registers! When entering [A], line audio output volume. This value is used when executing functions D_WAIT_LN and D_WAIT_BLC. If [A]=0, then there is no sound if it is not equal to lyu, then the state of the telephone line should displayed, for example, on a musical processor with the specified volume. D_WAIT_LN EQU #C00C LIIII SURVEY upon return CY=1: data not accepted [B] line poll execution time [C] maximum execution time line polling CY=0[A]=#01: block accepted #02: busy signal detected #03: "call" detected D_WAIT_BLC EQU #C00F LONG WAIT upon return CY=1 no block [BC] length [D] speed (#80 undefined) D_TRANSMIT EQU #C012 Transfer a block of data from the modem buffer at the speed numbered in [A], [BC] - block length D_ON_LINE EQU #C015 Hang up the phone D_OFF_LINE EQU #C018 Hang up D_CALL EQU #C01B FUCK OMER, THE TUBE IS ALREADY DOWN, at the entrance [HL] - dialed numbers [A] - dialing method: 0 pulse, 1 tone [B] - pulse period (60+40)ms std. 100 [C] - interdigital pause ms/10 upon return: CY=0 number dialed successfully CY=1 error, error code in [A]: #00 dialing error #01 no long beep #02 execution interrupted D_AON EQU #C01E CALLED WHEN A CALL IS DETECTED. THE TUBE IS SIMPLE + DEFINITION O- MEASURE upon entry: [A] number of requests [B] pause before request /2 ms [C] number of digits [D] sensitivity to ATC response [E] line sensitivity when returning to MOD_BUFF defined phone number in ASCII form, code #00 at the end. SET_CON_A EQU #C021 ACTIVE CONNECTION SETUP (PE- EDIT) SET_CON_P EQU #C024 PASSIVE CONNECTION INSTALLATION (RECEIVE) MOD_BUFF returns a text message connection information (CARRIER/SPEED), in end code #00. [A] is the set speed, or #80 if speed is uncertain CY=1 connection could not be established D_SET_TIME EQU #C027 SET TIMEat the entrance [H] - GG [C] - MM [D] - DD [B] - HH [L] - MM [E] - SS [A] - DAY EDELI upon return CY=1 ERROR D_RD_TIME EQU #C02A COUNT THE TIME upon return [H] - GG [C] - MM [D] - DD [B] - HH [L] - MM [E] - SS [A] - DAY EDELI CY=1 ERROR D_OFF_DRV EQU #C02D DISABLED DRIVER This subsection is called when the system does not plan for a long time contact the driver. For example, when executing PAUSE commands, COPY, MOVE. And also when running the file for execution. Calling any p/n driver - its inverse inclusion. D_SET_ALR EQU #C030 SET TIMER A [A] MIUT D_ADD_ALR EQU #C033 ADD TO TIMER [A] MIUT D_RD_ALR EQU #C036 TIME OUT? upon return CY=1 - time has expired CY=0 - there is still time left. [A] - how many minutes are left Addition Driver Download address #6800, driver length 256 bytes The driver should not change interrupt type and state and register values IX, IY, SP, HL