DE HAYES STANDAARD """""""""""""""""" Ook al was Hayes Microcomputer Products Inc. niet de eerste fabrikant die een modem bouwde, of zelfs maar een smartmodem, toch is het bedrijf bekend geworden doordat men al in een zeer vroeg stadium kwaliteitsmodems maakten. Men heeft de leidende positie weten te behouden door een combinatie van uitstekende nazorg en ondersteuning te combineren met betrouwbaarheid en een duidelijk inzicht in wat de markt wenst. Zijn er alternatieven voor Hayes? Ja en nee. Er zijn, zoals gebruikelijk in computerland, bedrijven die hetzelfde produkt nabouwen, de zogenaamde klonen. Deze zijn dan goedkoper dan het origineel. Vaak leggen ze het wat betreft Hayes af inzake uitvoering en betrouwbaarheid. Om nog maar niet te spreken over die bedrijven, die de Hayesmogelijkheden slechts gedeeltelijk inbouwen en het toch Hayes-compatibel noemen! Dit is zelfs het geval bij produkten, waarbij men een of twee toevoegingen aanbrengt, maar aan de andere kant bepaalde faciliteiten van Hayes weer weglaat. Over het algemeen kunnen we stellen dat het Hayes-protocol een erkende standaard is geworden. Het is dus belangrijk dat een Hayes-compatibel modem dan ook werkelijk over alle Hayes-faciliteiten beschikt. Wat betekent dit nu in concreto? Compatibiliteit met Hayes is gebaseerd op twee begrippen: registers en commando's. REGISTERS """"""""" De Hayes Smartmodem registers zijn die, welke door Hayes in het leven zijn geroepen om verschillende communicatie-parameters te besturen en te rapporteren. Alle registers,op een paar bitmapped registers na,kunnen worden gelezen en gewijzigd door Smartmodem commando's. De bitmapped registers kunnen wel worden gelezen, maar de inhoud kan niet worden gewijzigd. Deze waarden zijn bit-significant en geven de status van het modem aan. Enkele hiervan zijn uitsluitend bedoeld voor testdoeleinden in de fabriek en zijn niet voor de gebruiker bedoeld. De Hayesregisters lopen van S0 t/m S17 en omvatten de besturingsinterface tussen de gebruikersprogramma's en de UART (Universal Asynchronous Receiver/Transmitter: universele asynchrone ontvanger/zender), het feitelijke werkpaard van het communicatiekanaal. S0 Answer on ring number """""""""""""""""""""""""" Dit schakelt het automatisch beantwoorden uit (S0=0) of laat de telefoon opnemen nadat een aantal malen de bel is overgegaan (S0=n). Gebied: 0-255, default 0. S1 Count rings """"""""""""""""" Dit wordt gebruikt wanneer S0>0. Dit telt het aantal malen dat de bel overgaat en reset wanneer de bel niet binnen acht seconden nogmaals overgaat. S2 Escape code character. """""""""""""""""""""""""""" Hiermee wordt aangegeven welke ASCII-waarde als escape-code moet worden beschouwd. Gebied: 0-127, default 43 (+). S3 Carriage return character. """"""""""""""""""""""""""""""" Hiermee wordt aangegeven welke ASCII-waarde als carriage-return moet worden beschouwd. Gebied: 0-127, default 13. S4 Linefeed character. """""""""""""""""""""""" Hiermee wordt aangegeven welke ASCII-waarde als linefeed moeten worden beschouwd. Gebied: 0-127, default 10. S5 Backspace character. """""""""""""""""""""""""" Hiermee wordt aangegeven welke ASCII-waarde als backspace moet worden beschouwd. Gebied: 0-32 en 127, default 8. S6 Wait for dialtone. """"""""""""""""""""""" Dit bepaalt, hoelang het modem wacht na een carrier voordat wordt begonnen met bellen (minimaal 2 seconden). Gebied: 2-255 seconden, default 2. S7 Wait for carrier. """"""""""""""""""""""" Hiermee wordt bepaald hoelang het modem wacht op een carrier van het andere modem. Gebied: 1-255, default 30. S8 Pause time for comma. """""""""""""""""""""""""" Dit bepaalt de pauzetijd in seconden, wanneer een komma commando wordt gegeven. Gebied: 0-255, default 2. S9 Carrier detect time. """"""""""""""""""""""""" Hiermee wordt bepaald hoelang een carrier aanwezig moet zijn voordat het wordt herkend als iets anders dan storing op de lijn. De waarde wordt gegeven in tienden van seconden. Gebied: 1-255, default 6. S10 Carrier loss to hang-up. """"""""""""""""""""""""""""" Hiermee wordt aangegeven hoelang een eventuele onderbreking in de carrier mag duren voordat de telefoon wordt opgehangen. Gebied: 1-255, default 7. S11 Touch-tone timing. """"""""""""""""""""""" Hiermee wordt de lengte van de tonen en de pauzes ertussen bepaald indien met het dubbeltoonsysteem wordt gebeld. De waarde is in milliseconden. Gebied: 50-255, default 70. S12 Escape code guard time. """""""""""""""""""""""""""" Dit bepaalt de tijd in 1/50e seconden, dat er geen signalen op de lijn mogen worden gevonden voor en na een escapecode, voordat zo'n code daadwerkelijk als escapecode wordt herkend. Gebied: 20-255, default 50. S13 Bit-mapped register (read only). """""""""""""""""""""""""""""""""""""" De hier gevonden code geeft aan welke instellingen voor het modem gelden: basis/uitgebreid, parity in- of uitgeschakeld, parity odd/even, databits 7/8, buffer overflow, 8e bit vastgezet, mark/space. S14 Bit-mapped register (read only). """"""""""""""""""""""""""""""""""""" De hier gevonden code geeft de volgende instellingen aan: local echo in- of uitgeschakeld, resultcodes in- of uitgeschakeld, resultcode formaat: cijfers of woorden, belmethode puls/toon, speaker ON tot carrier detectie, speaker altijd ON. S15 Bit-mapped register (read only). """""""""""""""""""""""""""""""""""""" De hier gevonden code geeft de volgende instellingen aan: originate/answer, halfduplex/fullduplex, transmission rate, carrier ON/OFF. S16 Selftest. """""""""""""" Dit bestuurt de zelftestmodus van het modem (analoge loopbacktest). Gebied: 0-2, default 0. 0 = niet in werking, 1 = run zelftest. 2 = test toonamplitude. S17 Bit-mapped register (read only). """"""""""""""""""""""""""""""""""""" Modem op de lijn/van de lijn, auxiliary relaiskontakten open/dicht, auto-answer ON/OFF, speaker ON/OFF, speed high/low, ringindicator TRUE/FALSE, carrier wel/niet aanwezig, transmitter filterfrequentie (2400/1200 Hz). De commando's, die geldig zijn in de lokale status, mogen rechtstreeks worden gebruikt om het modem aan te sturen. Een speciaal commando is de escapecode, deze brengt het modem van on-line weer terug naar de commando status. Default wordt daarvoor +++ gebruikt, voorafgegaan en gevolgd door 1 seconde stilte, zodat het verschil tussen overgezonden plusjes en de escapecode (of welke andere tekens er ook voor zijn ingesteld), wordt herkend. Met AT wordt het modem opgedragen het erop volgende te beschouwen als een commandostring (AT = attention). AT moet in hoofdletters worden gegeven. Alle verdere commando's mogen zowel in hoofd- als in kleine letters worden ingevoerd. Elke instructieregel tot een maximum van 40 tekens, moet beginnen met AT en wordt pas uitgevoerd nadat een return wordt gegeven of softwarematig wordt verwerkt. De enige uitzondering is A/ waarmee het laatst ingevoerde commando kan worden herhaald. Smartmodem commando's die een waarde moeten meekrijgen, gaan ervan uit dat nul wordt bedoeld indien geen waarde wordt meegegeven. A Answer. """""""""""" Antwoordt onmiddellijk. Draagt het modem op te antwoorden, onafhankelijk van de inhoud van de registers S0 en S1. Wordt gebruikt om om te kunnen schakelen tussen spraak en communicatie. A/ Repeat/redial. """"""""""""""""""" Herhaalt het laatst ingevoerde commando. Deze instructie hoeft niet te worden voorafgegaan door AT of te worden afgesloten met een return. Cn Transmitter carrier. """""""""""""""""""""""""" Bestuurt het in- of uitschakelen van het zendsignaal (0 = uit, 1 = aan). , Pause. """"""""""""" Pauzeert gedurende een in register S8 vastgelegde tijd. Default is 2 seconden. D Dial. """""""""" Schakelt in op de telefoonlijn in originate modus. Een telefoon of kies automaat is niet nodig. Met P of T wordt gekozen tussen pulskiezen en dubbeltoon kiezen. En Echo. """""""""" Draagt het modem op al of niet instructies naar het scherm te echo-en (0 = geen echo, 1 = echo). Fn Duplex. """""""""""" Kiest half of full duplex (0 = half duplex, 1 = full duplex). Hn ON/OFF hook. """"""""""""""""" Simuleert het op de haak leggen of opnemen van de telefoonhoorn (0 = on-hook, dus de telefoonverbinding verbroken, 1 = off-hook, dus de hoorn opgenomen, 2 = alleen line-relay). In Identification. """""""""""""""""""" Vraagt het modem zijn identificatiecode te geven (Tevens een ROM checksum van 1200-baud modems tijdens het testen bij de fabricage) (0 = vragen naar de identificatiecode, 1 = ROM-test (alleen fabrieksmatig)). Mn Speaker (monitor) ON/OFF. """""""""""""""""""""""""""""" Verschillende opties maken het de gebruiker mogelijk het tot stand komen van een verbinding te volgen (0 = monitor uit, 1 = speaker aan tot aan de carrierdetectie, 2 = speaker blijft aan). O Online. """""""""""" Schakelt het modem van local naar online. P Pulse. """"""""""""" Kiest de pulskiesmethode (default bij ischakelen). P en T kunnen willekeurig door elkaar worden gebruikt in een enkele kiesinstructie. Qn Result codes sent/not sent. """""""""""""""""""""""""""""""" Samen met de commando's V en X wordt dit gebruikt om de resultcodes al of niet naar het modem te zenden (0 = resultcodes zenden, 1 = resultcodes niet zenden). R Reverse. """"""""""""" Wordt toegevoegd aan een kiescommando (aan het eind van het te kiezen telefoonnummer) om ervoor te zorgen dat het modem na het kiezen omschakelt naar de answermodus. Het kiezen zelf moet altijd in originate modus geschieden. Sr? Read register. """"""""""""""""""" Leest de inhoud van register r en geeft de waarde door naar programma of scherm (0-255). Sr=n Set register. """""""""""""""""" Zet de waarde n in register r. ; Command state. """"""""""""""""""" Zet het modem in de local commandostatus, bijvoorbeeld na een kiesinstructie. T Touchtone dialing. """"""""""""""""""""""" Schakelt het dubbeltoonsysteem in voor het kiezen. Dit werkt precies zo in de Nederlandse telefooncentrales die met het dubbeltoonsysteem zijn uitgerust, zoals alle nieuwe PTT-centrales. Vn Resultcodes as words or digits. """""""""""""""""""""""""""""""""""" Kiest tussen het weergeven van de resultcodes in woorden of cijfers (zie ook Q en X) (0 = resultcodes in cijfers, 1 = resultcodes als tekststrings). Xn Basic/extended resultcodes. """"""""""""""""""""""""""""""""" Breidt de resultcodelijst uit voor 300/1200 baud indicatie (0 = alleen basiscodes (0-4), 1 = uitgebreide codes (0-5)). Z Reset. """""""""""" Reset het modem naar de default instelling (de instelling bij het inschakelen). Worden commando's naar het Smartmodem gezonden, dan tracht het modem het commando uit te voeren. Aannemende, dat de registers zijn ingesteld op het geven van resultcodes, worden de resultaten van deze pogingen in de vorm van cijfercodes of tekstcodes weergegeven. Hieronder volgen de mogelijke codes in zowel cijfer als woord: 0 OK. Het commando werd uitgevoerd zonder dat er een fout optrad. 1 CONNECT. Basis instelling: carrier gedetecteerd op 0-300 of 1200 baud. Uitgebreide instelling: carrier gedetemcteerd op 0-300 baud. 2 RING. Belsignaal gedetecteerd. 3 NO CARRIER. Carrier is weggevallen of niet gevonden. 4 ERROR. Er zit een fout in de commandoregel: ongeldig commando, meer dan 40 tekens, of ongeldig tekenformaat bij 1200 baud. 5 CONNECT 1200. Uitgebreide instelling: Carrier gedetecteerd op 1200 baud.