DE HAYES STANDAARD -1- """""""""""""""""""""" De laatste tijd lijkt het modem zich in een hernieuwde belangstelling te mogen verheugen. Waren het een aantal jaren geleden de freaks die midden in de nacht elkaars BBS opbelden, nu, zeker door het gebruik van Internet vliegen de modems weer als warme broodjes over de toonbank, niet in het minst doordat de prijs van dergelijke apparaten in de loop der jaren alleen maar drastisch naar beneden is gegaan. Maar op deze wereld is het niet alleen Internet wat de klok slaat, ook het fenomeen BBS bestaat nog volop. Sterker nog, doordat gebruikers een modem kopen voor Internet en zich vervolgens te pletter schrikken als na een eerste maand de afrekening komt, mogen de lokale BBSen zich weer in een toenemende belangstelling verheugen. Derhalve wat meer over modems en in het bijzonder het besturen daarvan middels de z.g Hayes commando's. Ook al was Hayes Microcomputer Products Inc. niet de eerste Fabrikant die een modem bouwde, toch is het bedrijf bekend geworden doordat men al in een zeer vroeg stadium kwaliteitsmodems maakten. Daarbij werd gebruik gemaakt van een aantal commando's die de verzamelnaam Hayes-protocol meekregen. 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 rap- porteren. 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 ontvan- ger/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 moet 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).