浜様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様融 REVISON.TXT SOFTWAREGESCHICHTE ZU AFS - SOFTWARE AB AFSV33.HEX 藩様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様夕 ******************************************************************** *********** AFSV43.HEX **************************************** ******************************************************************** Sommer Winterzeit Umschaltung auf letzten Sonntag im Oktober geaendert. ******************************************************************** *********** AFSV42.HEX **************************************** ******************************************************************** Bug in der Routine WRITE_TX_BUFFER behoben. ******************************************************************** *********** AFSV41.HEX **************************************** ******************************************************************** OPUSWRS und OPUSWRD Beide Routinen senden nun die Daten ohne ein . Ist bei der DHS3 notwendig. In den Routinen fr die Bufferverwaltung ist in der Routine BUFFWR eine nderung erfolgt, um ein berschreiben der Buffer- zeiger zu verhindern. ******************************************************************** *********** AFSV40.HEX **************************************** ******************************************************************** ACALL ENCODE16 Berechnet den Authorizationscode fr den 2824 ISDN-Apparat um die erweiterten VOICE-Kommandos zu verwenden. Die Funktion erwartet sich als Aufrufparameter im String 13,0 den Sting vom 2824 "G:aaaa,bbbb" und im String 13,200 den String "AT*Gcccc". Das Parameterfeld "cccc" wird von der Funktion berechnet. Beispiel: loop: wait rx_sign case rx_sign,loop rds s13,0 jz loop compd "G:",s13,0 jnz test_otermess acall encode16 wrs s13,200,20 jmp loop test_othermess: WRS,WRD Adresse 0x7f02 Senderkonfiguration Bitorientiert. Bit 0: Auf Adresse 0x7f02 Bit 0 wird festgelegt, ob die Senderoutine durch ein Timeout abgebrochen wird oder nicht. Ist in diesem Byte das Bit 0 auf 1 wird die Senderoutine NICHT durch ein Timeout beendet. setp 0x7f02,0x01 Kein Abbruch. INTHQA Im Mode RECO werden alle Zeichen auf 7 Bit maskiert. (ANL A,#0111$1111b). Nachrstung eines Leitungsinterfaces: Quart Input IP11: RLD input Quart Output OP12: Loop-rel output Bit = 0: Offhook Bit = 1: Onhook Neue Befehle: ONHOOK ... Auflegen OFFHOOK ... Abheben FLASH_100 ... Flash auf die Leitung mit 100msec FLASH_X ... Flash mit variabler Zeit auf die Leitung Die Zeit wird im XDATA-MEM 0xd58b (Einheit 6.25msec) eingestellt (setp 0xd58b,0x30). Nach Ausgabe des Flashimpulses wird fr eine Zeit gewartet bevor zur Aufrufstelle zurchgekehrt wird. Diese Zeit kann im XDATA-MEM 0xd58c (Einheit 6.25msec) eingestellt werden. Beim FLASH_100 ist diese Zeit 100msec. !!! ACHTUNG !!!! Bei der Verwendung des Befehls FLASH_X mu zuvor mit dem Befehl SETP 0xnnnn,0xmm die Zeit eingestellt werden. (Einmal am Anfang des Programms). Der Loop/Ringauswerter legt seine Signale im XDATA-MEM 0xd58d (RLD_MESS_REG) ab. LOOP ... 4 (OFFHOOK) NO_LOOP ... 2 (ONHOOK) RING ... 1 (RING) Die Ausgabe LOOP und NO_LOOP erfolgt in einer OR Verknpfung. Die Ausgabe RING erfolgt direkt. Damit kann kein Ring verlorengehen. Abfrage des RLD_MESS_REG kann mit dem Befehl GETP 0xnnnn durchgefhrt werden. ******************************************************************** *********** AFSV39.HEX **************************************** ******************************************************************** STRINGS Das Zeichen "/" kann nun in einem String verwendet werden. Mit SLASH sind folgende Zeichen gltig: "//" -> "/" "/n" -> "/l" -> "/s" -> "/q" -> Um die Zeichen von '00h' bis '1Fh' in Stringangaben verwenden zu knnen ist das Zeichen "^" vor dem ensprechenden Zeichen '40h' (@) bis '5Fh' (-) zu stellen. Z.B: CNTL "A" -> "^A" -> 01h CNTL "G" -> "^G" -> 07h . . . CNTL "Z" -> "^Z" -> 1Ah READ_DT An der Position TIME_STRING-1 (s15,179) wird "0" abgelegt wenn keine Sommerzeit ist und "1" wenn Sommerzeit ist. ACALL WRITE_DT neu: Mit diesem Befehl ist es mglich aus einer Applikation das Datum und die Zeit der Internen Uhr zu verndern. Die einzustellende Zeit ist im String TIME_STRING (S15,180) zu speichern. Danach erfolgt der Aufruf ACALL WRITE_DT. Z.B.: acall read_dt ;Lese Datum und Zeit movd "0000",s15,188 ;Stunde und Minute auf "00" acall write_dt ;stelle Datum und Zeit MODE_OPUS300 neu Nach Empfang des Zeichens wird der Fehlerstatus zurueckgesetzt. Nach Empfang der Zeichens , wird der Fehlerstatus gelesen und in Speicher abgelegt. Mu eingestellt sein um Daten im Mode OPUS zu empfangen (OPUSRDS sn,offset). OPUSRDS Sn,offset neu Liefert als Ergebnis das Flag "Z" und eine Fehlernummer in "CNT 15". Flag = Z CNT15 = 255 kein rx_sign Flag = Z CNT15 = 254 kein STX am beginn Flag = NZ CNT15 <> 0 NAK senden! Fehler in status oder BCC Flag = NZ CNT15 = 0 ACK senden! Kein Fehler aufgetreten. BIT'S IN CNT 15 Bit 7 .... Received Break Bit 6 .... Framing Error Bit 5 .... Parity Error Bit 4 .... Overrun Error ( Fifo-Speicher in Qart) Bit 3 .... Checksum Error OPUSWRS Sn,offset,anz Sendet einen String mit dem Protokoll fr OPUS 300 "STX daten BCC_HIGH,BCC_LOW,ETX" OPUSWRD "string/n" Sendet einen Direkt-String mit dem Protokoll fr OPUS 300 "STX daten BCC_HIGH,BCC_LOW,ETX" SENDSIG signal,Cn Sende SIGNAL zu CHANNEL n. SIGNAL: RX_SIGN TX_SIGN TF_SIGN IM_SIGN ANS_SIGN CNTL_SIGN CHANNEL: 0-5 ACHTUNG!! bei CHANNEL 4 und 5. FLAG: Wird nicht veraendert. Befehl IN sn,offset: Wenn ein IN sn,offset ausgefuehrt wird ohne, dass zuvor von einem andern Modul ein OUT sn,offset,Cn Befehl ausgefuehrt wurde, so wird das Flag NZ zurueck- gegeben. ******************************************************************** *********** AFSV38.HEX **************************************** ******************************************************************** INTHQA Routinen fuer MODE_CHAR in Channel 0,1,2 eingefuegt. Alle Zeichen welche eingelesen werden, werden im Buffer gespeichert und es wird zu jedem Zeichen ei RX_SIGN generiert. XON - XOFF werden wie bei MODE_RECO bearbeitet. MODPR Nuer Befehl - MODE_CHAR Schaltet den Interrupttreiber fuer CHAR ein. Danach wird fuer jeden CHAR ein "rx_sign" generiert. Die Zeichen "XON, XOFF" werden wie bisher vom Interrupt- treiber verarbeitet und in "CNT 14" mit dem Signal "CNTL_SIGN" angezeigt. - RDC Sn,offset Wenn ein Kanal im Modus "MODE_CHAR" sich befindet, duerfen nur mehr mit dem Befehl "RDC Sn,offset" Zeichen von der Schnittstelle gelesen werden. Es wird jeweils ein Zeichen eingelesen. Das Status-byte wie bei "RDS" gibt es hier nicht. Rueckgabe: FLAG Z wenn kein Zeichen gelesen werden konnte und CNT 15 enthaelt den Fehlercode. Flag = Z cnt15 = 255 kein rx_sign FLAG NZ ein Zeichen wurde eingelesen. ******************************************************************** *********** AFSV37a.HEX **************************************** ******************************************************************** 10/93 Als Tastenname "k#" fuer die Taste "#" des Operators, kann auch "kr" geschrieben werden. Grund fuer diese Aenderung ist das Programm "CPP.EXE". ******************************************************************** *********** AFSV37.HEX **************************************** ******************************************************************** Bug im CALLING-NAME-DISPLAY entfernt. Bei SW8 sendt die BCN bei einem CND-STRING mit 16 Zeichen kein . ******************************************************************** *********** AFSV36b.HEX **************************************** ******************************************************************** String Parameter ' wurde auf " geaendert, um ein Downloadfile mit dem Preeprozessor CPP von Turbo-C 2.0 oder mit CPP von C++ 1.0 zu bearbeiten. ******************************************************************** *********** AFSV36a.HEX **************************************** ******************************************************************** INTHQA Nach Empfang von CNTL-ZEICHEN (XON,XOFF) wird der Wert des Zeichens in CNT 14 uebergeben und das "CNTL_SIGN" an das Modul gesendet. Der Wert "255" bedeutet einen Bufferueberlauf (Fehler mit Befehl "MODE_RECO,MODE_STX ..." beheben). Umschaltung ETX - ETB auf ADR 0x7f00 mit setp 0x7f00,0x03 ADR: 0x7f01 wenn nicht 0, so wird dieser Char vor ETX (ETB) gesendet. Dieses dient dazu, dass bei STX...ETX ein "CR,LF" gesendet werden kann. ******************************************************************** *********** AFSV36.HEX ***************************************** ******************************************************************** INTHQA IN MODE_RECO Nach Empfang eines wird ein Fehlerstausbyte nach dem im Speicher abgelegt. Fehlerstatus beinhaltet: Parityerror,Frammingerror,Break,Overrun. Danach wird der Fehlerstatus zurueckgesetzt. INTHQA IN MODE_STX Nach Empfang des Zeichens wird der Fehlerstatus zurueckgesetzt. Nach Empfang der Zeichens , wird der Fehlerstatus gelesen und in Speicher abgelegt. MODPR BEF RDS Liefert als Ergebnis das Flag "Z" und eine Fehlernummer in "CNT 15". Flag = Z CNT15 = 0 nur empfangen Flag = Z cnt15 = 255 kein rx_sign Flag = NZ CNT15 = 0 String richtig empfangen Flag = NZ CNT15 <> 0 Fehlernummer aus Status MODPR BEF STXRDS Liefert als Ergebnis das Flag "Z" und eine Fehlernummer in "CNT 15". Flag = Z CNT15 = 255 kein rx_sign Flag = Z CNT15 = 254 kein STX am beginn Flag = NZ CNT15 <> 0 NAK senden! Fehler in status oder BCC Flag = NZ CNT15 = 0 ACK senden! Kein Fehler aufgetreten. BIT'S IN CNT 15 Bit 7 .... Received Break Bit 6 .... Framing Error Bit 5 .... Parity Error Bit 4 .... Overrun Error ( Fifo-Speicher in Qart) Bit 3 .... Checksum Error (nur bei Bef STXRDS) NEUER BEFEHL GETP 0xnnnn,mode Lese ein Byte von Portadresse 0xnnnn und konvertiere es nach "mode" auf String s15,240. "mode": dec -> 0-255 hex -> 00-FF (ascii) bin -> 00000000 - 11111111 (ascii) S15,240 = bit 0 s15,247 = bit 7 byte -> Byte wird direkt abgelegt Z-FLAG wird gesetzt wenn gelesenes Byte den Wert "0" hat. sonst NZ. STRINGANGABEN Bei Stringangaben kann nun der gesamte Speicher verwendet werden. Sn,offset ... bisher (bleibt erhalten) 0xnnnn,offset ... neue Definition einer Stringvariablen. Es kann auch der offset in HEX-VALUE angegeben werden (0xnn). ACHTUNG!! Bei der Bearbeitung werden 8-Bit Register verwendet (ACHTUNG bei Ueberlauf ). CALLING NAME DISPLAY In den OPA - Handler wurde die Verarbeitung des CND eingefuegt. Damit ist es nun moeglich, ab Software 7 der BCN den Namen im AFS zu verarbeiten. Das CND kann mit dem Befehl "MOVS 0xd240,0,sn,offset,20" in einen beliebigen String uebertragen werden. CND - Adresse OPA 3 (Standard OPA) ... 0xd240,0 CND - Adresse OPA 2 (KANAL 2 ) ... 0xd220,0 CND - Adresse OPA 1 (KANAL 1 ) ... 0xd200,0 ******************************************************************** *********** AFSV35.HEX ***************************************** ******************************************************************** DATABASE HANDLING Funktion: ACALL PPREV_DBS Zeiger in Database - 1 Input: s15,100 Databasenummer Output: Z-FLAG 0 Funktion ausgefuehrt. Z-FLAG 1 Funktion konnte nicht audgefuehrt werden, da Databasezeiger bereits auf 1. Record zeigte. Funktion: ACALL PRECO_DBS Stelle Zeiger in Database auf gewuenschten Record. Input: s15,100 Databasenummer Recordnummer Output: Z-FLAG 0 Funktion ausgefuehrt. Z-FLAG 1 Funktion wurde nicht ausgefuehrt. Die angegebene Recordnummer ist ausserhalb des Bereiches der Datenbasis. Funktion: ACALL FINDR_DBS Suche ruechwaerts nach Eintrag "mmmmm" in Element "nn" der angegeben Datenbasis. Input: s15,100 Databasenummer Elementnummer s15,0 gesuchtes Element Output: DBS-POINTER zeigt auf gesuchten Record und Z-FLAG 0. Z-FLAG 1 Record mit gesuchten Element wurde nicht gefunden und DBS-POINTER zeigt auf ersten Record der Datenbasis. JR JMP RELATIV Befehl: JR Sn,offset Funtion: Convertiert den ASCII-String in Sn,offset zu einem Wert. Dieser Wert wird alls Offset, zu der nach dem Befehl JR folgenden Sprungliste betrachtet und an dieser Stelle wird das Programm fortgesetzt. Beispiel: JR S0,2 jmp label_0 jmp label_1 jmp label_2 .. jmp label_n Besonderheiten: Achtung! Um die Programmlaufzeit schnell zu halten wird keine Gueltigkeispuefung vorgenommem. Kann kein gueltiger Wert errechnet werden, so wird als Wert der Wert 0 angenommem. ******************************************************************** *********** AFSV34.HEX ***************************************** ******************************************************************** Ein BUG in OPA-Handler wurde entfernt. Das Besetztlampen- feld ist nicht verarbeitet worden, sondern die Codes sind in die Anzeigebereiche uebernommen worden. Das kann bei permanenten Besetztlampenfeld Probleme machen. STRINGCOMPARE Bei den Befehlen COMPD,COMPS und dem Funktionsaufruf ACALL FIND_DBS koennen Platzhalterzeichen angegeben werden. Platzhalterzeichen = "?". Z.B.: CPMPD '1234?',s1,0 Z-FLAG wenn s1,0 = '1234x'. Das Zeichen 'x' steht fuer ein beliebiges Zeichen (auch ). END OF FILE