- Dokumentation av LPTCID - Mountain Village Software 1994 - ----------------------------------------------------------------------------- Fr†gor, synpunkter, eller kompletterande uppgifter f”r denna textfil skickas via n„tbrev eller fax till: Fidonet: Jorgen Olsson, 2:205/201 Internet: jorgen@hofors.kuai.se Fax/BBS: 026-161476 Denna textfil beskriver installation och funktion hos LPTCID, samt hur andra program kan anv„nda LPTCIDs funktioner f”r att enkelt l„sa nummer- presentation. Programmet och texten f†r kopieras och anv„ndas fritt, under f”rut- s„ttning att denna alla filer i arkivet som detta distribueras i f”rblir i sitt originalskick i hela distributionskedjan. Konvertering till andra packningsformat „r givetvis till†ten, under ovanst†ende f”ruts„ttningar. ----------------------------------------------------------------------------- LPTCID „r ett minnesresident program som l„ser CALLER ID (telias nummer- presentation) i form av 4-bitars data fr†n printerportens statuslinjer. Programmet kr„ver att en speciell krets (DTMF-dekoder) „r installerad p† printerporten. F”r att programmets tabell f”r ”vers„ttning av dekoderns 4-bitars data till motsvarande DTMF-tecken skall fungera korrekt, b”r denna krets vara baserad p† den integrerade DTMF-dekodern MT8870. Dess utsignaler skall vara kopplade till printerportens statuslinjer enligt nedanst†ende: Q1: pin 13 Q2: pin 12 Q3: pin 11 Q4: pin 10 StD: pin 15 LPTCID fungerar endast mellanlagringsbuffer av data som kommer in fr†n dekodern. Yttre program som skall l„sa callerid-str„ngen m†ste k”ra LPTCIDs speciella service-interrupt (se nedan) f”r att f† en pekare till denna buffer. Buffern kan sedan l„sas som en vanlig asciiz-str„ng. Som serviceinterrupt rekommenderas n†gon av vektorerna 60h-66h. Default „r 65h. Installation av LPTCID ---------------------- LPTCID laddas exempelvis fr†n autoexec.bat, och accepterar 3 kommando- parametrar: /P Printerportens (p† vilken h†rdvaran „r installerad) port- adress, som hexadecimalt tal. Default „r 378 (hex), som „r Lpt1. /I Anger p† vilket interruptnummer (60h-66h rekommenderas) som LPTCIDs servicerutin skall installeras. Default „r 65h. /? Kortfattad hj„lp. OBS: Ladda inte LPTCID utan att ha caller id dekodern installerad p† printerporten, annars kan LPTCID aktiveras i on”dan om vissa status- bitar av n†gon anledning „r 1-satta. TIPS: Om du k”r med n†got annat interruptnummer „n 65 som service-interrupt, s† kan du, f”r att f”renkla handhavandet av applikationer som anv„nder LPTCID f”r att l„sa caller id, l„gga till en ny environmentvariabel i din AUTOEXEC.BAT: SET CIDINT= „r det nya interruptnumret som hexadecimalt v„rde. Om man t.ex vill anv„nda int 66h som serviceinterrupt: SET CIDINT=66 Serviceinterruptet ------------------ F”r att p† ett enkelt s„tt anv„nda LPTCID fr†n andra program kan man anv„nda funktionerna i detta interrupt. Ett program som anv„nder LPTCIDs servicefunktioner b”r alltid inledas p† f”ljande s„tt: 1. K”r interruptet med register AH=$00. 2. Kolla s† att interruptet returnerar v„rdet 1213 i AX. Har AX ett annat v„rde s† finns inte servicerutinen installerad p† interruptet, och programmet b”r avslutas med ett felmeddelande om detta. 3. Om punkt 2 „r avklarad utan fel, kan pekare till minnesbuffern i form av segment:offset h„mtas direkt fr†n BX resp. CX. I t.ex TP g”r man p† f”ljande vis: PekareTillStr„ng:=Ptr(regs.BX,regs.CX); Kom dock ih†g att str„ngen „r en asciiz-str„ng (C-str„ng). Programmet b”r ocks† kolla efter environment-variabeln CIDINT, och som default k”ra service-interruptnumret som finns i denna, om variabeln „r definerad. Str„ngv„rdet i CIDINT skall l„sas som som hexadecimalt, och konverteras till ett 8-bitars heltalsv„rde (byte). I Pascal kan man g”ra detta p† f”ljande s„tt: VAR i : integer; w : word; ServiceInterruptNum : byte; . . ServiceInterruptNum:=$65; { Default interrupt nummer } If GetEnv('CIDINT') <> '' then BEGIN val('$'+GetEnv('CIDINT'),w,i); if (i <> 0) and (w <= $FF) then ServiceInterruptNum:=byte(w); END; Lista p† funktioner i serviceinterruptet ---------------------------------------- AH = 00h: Returnera pekare till buffer. Returnerar: AX: 1213 BX: Pekare till buffer, segment CX: Pekare till buffer, offset AH = 01h: Returnera l„ngd p† nuvarande str„ng i buffer. Returnerar: AX: 1213 BX: Str„ngl„ngd AH = 02h: Nollst„ll buffer och alla statusv„rden. Returnerar: AX: 1213 AH = 03h: Stoppa/aktivera datainl„sning fr†n DTMF-dekodern. (kan anv„ndas f”r att deaktivera/aktivera LPTCID) Returnerar: AX: 1213 AH = $FE Markera nuvarande str„ng som l„st. Denna flagga nollst„lls alltid automatiskt d† en ny str„ng l„ses in. Returnerar: AX: 1213 AH = $FF Returnera status p† l„s-flaggan (se funktion $FE). Om man tidigare satt denna flagga med funktion $FE, och den sedan blir satt till 0 av LPTCID, s† ligger en ny str„ng i buffern. Returnerar: AX: 1213 BX: 0 eller 1. 1 = l„s-flaggan „r satt. Buffern ------- Str„ngen som lagras i LPTCIDs minnesbuffer „r den avkodade caller-id sekvensen, allts† i form av siffrorna 0..9 (ascii 48..57) samt bokst„verna A..D (ascii 65..68). Str„ngen „r en sk. nullterminerad str„ng, „ven kallad asciiz-str„ng eller C-str„ng. Maxl„ngd „r satt till 255 tecken. Observera att det alltid „r endast den senaste callerid-”verf”ringen som lagras i buffern. Detta ligger kvar i buffern tills n„sta caller-id skriver ”ver det. Bokst„verna A..D anv„nds som styrkoder f”r ”verf”ringen av caller id, och har f”ljande betydelser: A: omstyrt nummer f”ljer (?) B: tv†siffrig informationskod f”ljer. C: stopptecken (EOT) D: abbonnentnummer f”ljer. Exempel p† ”verf”rda caller id (som de lagras i minnesbuffern): n = siffra i telefonnummer r = siffra i riktnummer x = siffra i informationskod DrrrnnnnnnC: Uppringandes telefonnummer finns mellan D och C. BxxC: Tv†siffrig informationskod finns mellan B och C. Uppringandes telefonnummer har alltid riktnumret som prefix, utan n†got skiljetecken mellan rikt- och telefonnummer. F”ljande tv†siffriga informationskoder finns f.n. definerade: 00: Numret kan ej ”verf”ras, uppringande ringer fr†n det analoga telefonn„tet (aka icke-AXE), eller fr†n mobiltelefon. 10: Nummer ”verf”rs ej. Abbonnenten har hemligt nummer, eller har tillf„lligt sp„rrat nummerpresentation.