浜様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様融 REVISON.TXT SOFTWAREGESCHICHTE ZU AFS - SOFTWARE AB AFSV33.HEX 藩様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様夕 ******************************************************************** *********** AFSDV22.HEX *************************************** ******************************************************************** Mode_OPUS300: Test for ENQ,EOT no longer done. Now it is possible to read strings with framming STX data ETX without a bcc. This is needed for Siemens Sigmasys BMA's. COMMAND: prords sn,offset read a string from the buffer. the string in the buffer is framed "STX data ETX" without a bcc ; ; ESC - stack ; the command routine "PRORDS sn,offset" stores all unknown ; ESC-codes in the esc_stack. The char ESC himself exclusive. ; The routine assume that all ESC-codes are 3 digitcodes. ; esc_stack xdata 0d200h ; l= 20h mask: 00111111b ; ; Line color if read with command "PRORDS sn,offset" this ; mem location is set to the color ("1"..."9") ; 'ESC r n' n ... 0....9 line_color xdata 0d220h ; ******************************************************************** *********** AFSDV21.HEX *************************************** ******************************************************************** - SERIN sn,offset Read from the serial input buffer all char from outputpointer to the inputpointer independent of the RX_sign. CNT 15 keeps the number of bytes read. - Bug in CF-Mon behoben. Label suche. - wrs, wrd : Terminate string with 00h also ******************************************************************** *********** AFSDV20.HEX *************************************** ******************************************************************** - OPUSWRS Sn,offset - OPUSWRD "vvvvv" Grund: Der Notification Server berechnet den CRC anders als der AHL. Auf Addresse 0x7f03 wird die Berechnung des CRC's festgelegt. 0x7f03.0 = 0 CRC-Berechnung fuer AHL 0x7f03.0 = 1 CRC-Berechnung fuer Notification Server. 0x7f03.1 = 0 CRC modulo 256 0x7f03.1 = 1 crc modulo 128 Pseudo codefor the Notificationserver crc=0 FOR all the message characters DO crc = (crc XOR character) modulo 80h IF crc < 20h THAN crc = crc + 20h ; this line is specific for NOSER CRC[1] = crc / 16 CRC[2] = crc modulo 16 ******************************************************************** *********** AFSDV19.HEX *************************************** ******************************************************************** New commands: MODE_SDNT select interrupt handler for the Siemens SDNT-Protokoll "STX,DATL data...ETX,BCC" !!!!!!! MODE SOH CAN ONLY BE USED ON MODUL 1.!!!!!!!!!!! On the other moduls the mode_stx is selected. SDNTWRS sn,offset,anz Send the bytes in sn,offset the the serial channel. The end is given by the number of byte "anz". The sting contains hex bytes. ex.: "nn,nn,nn,......nn" ----------------- anz SDNTRDS sn,offset Read a string into sn,offset and returns the status of the receiver in CNT15. Status in counter 15 is the same one as for the command STXRDS. The String sn,offset contains hex bytes. HEXASCII sn,offset(source),sn,offset(dest),anz (hex) Converts the hex bytes of sn,offset(source) to asciihex into sn,offset(dest). The number of bytes convertet is given in the parameter "anz". The Parameter "anz" holds the value of the number of hexbytes to be converted. The converting of letter char are in uppercase. Attention: The string sn,offset(dest) must have the double capacity of the string sn,offset(source) ASCIIHEX sn,offset(source),sn,offset(dest),anz (hex) Converts the string sn,offset(source) given in ascii to the string sn,offset(dest) in hex. The parameter "anz" gives the number of of bytes in the string sn,offset(source) to convert. If the number of bytes is an odd number, the last byte is the least significant digit. The result of the routine: Z-flag = 0 (Z) converting ok Z-flag = 1 (NZ) error ******************************************************************** *********** AFSDV18.HEX *************************************** ******************************************************************** New commands: MODE_SOH select interurupt handler for handling records with SOH....ETX,BCC !!!!!!! MODE SOH CAN ONLY BE USED ON MODUL 2.!!!!!!!!!!! On the other moduls the mode_stx is selected. SOHRDS sn,offset Read a string into sn,offset, writes at the end the char "cr", and returns the status of the receiver in CNT15. Status in counter 15 is the same one as for the command STXRDS. SOHWRS sn,offset,anz Send the chars in sn,offset the the serial channel. The is either a "cr" is readed or the number of char in the parameter "anz" is reached. SOHWRD "string/n" Same as the command SOHWRS but a direct string is given. In der Rountine scan.a51 scprinter: wurde die Bearbeitung der LED 7 aufgehoben. Damit ist die Verwendung fuer allgemeine Zwecke moeglich. ******************************************************************** *********** AFSDV17.HEX *************************************** ******************************************************************** Sommer Winterzeit Umschaltung auf letzten Sonntag im Oktober geaendert. ******************************************************************** *********** AFSDV16.HEX *************************************** ******************************************************************** Kommandos fuer SV-MON "R sn,offset,number" Read from a string,offset the number of digits or the string is terminated with a . "W sn,offset,number,mess" Write the mess withthe length of number or the message is terminated with a to the string sn,offset. The parameter can be 0 ... 15,0 ... 255,0 ... 255 or 0x00 ... 0xff,0x00 ... 0xff,0 ... 0xff. The parameter can also be mixed between DEC and HEX. Bug in der Routine "FIND_TOKEN" entdeckt und behoben ******************************************************************** *********** AFSDV15.HEX *************************************** ******************************************************************** - inthqa.a51 Die Maske auf 7 bit wurde aufgehoben. Grund: GDC0.5 Software - modpr.a51 - biblio.a51 Die Befehle "movd", "movs" verndern das Z-Flag nicht mehr. Der Befehl "movc" gibt den Counter als Z-Flag zurck. ******************************************************************** *********** AFSDV14.HEX *************************************** ******************************************************************** - OPUSRDS Sn,offset - Die CRC-Berechnung in der Routine "opurds" wurde geaendert. Die neue Berechnung ist folgende if ("calculated crc" xor "received crc" = 0) reco okay else if (calculated crc" xor "received crc" xor "020h" = 0) reco okay else reco error endif endif Grund: Der Notification Server berechnet den CRC anders als der AHL. - OPUSWRS Sn,offset - OPUSWRD "vvvvv" Auf Addresse 0x7f03 wird die Berechnung des CRC's festgelegt. 0x7f03 = 0 CRC-Berechnung fuer AHL 0x7f03 = 1 CRC-Berechnung fuer Notification Server. ******************************************************************** *********** AFSDV13.HEX *************************************** ******************************************************************** AFSDV13.HEX - Die Sommer-Winterzeit Umstellung erfolgt nun mit dem letzten Sonntag im Maerz auf Sommerzeit und mit dem letzten Sonntag im Oktober auf Normalzeit (Winterzeit). - Beim Starten der AFS wird ein Speichertest durchgefuehrt. Das Ergebniss wird auf Adresse 0xD4D0 abgelegt. Das Ergebnis kann mit getp 0xd4d0,mode gelesen werden. (siehe Befehl GETP 0xnnnn,mode - Aenderung in modul INTHQA.A51 Im MODE_RECO wird ein Form_Feed als Datensatz geliefert. ("0c,0d"). compd "^L/n" ; ist ein Form_feed? - Aenderung in modul AFSDBS.A51 - acall inc_erg input: calc_erg output: calc_erg ++ - acall dec_erg input: calc_erg output: calc_erg -- - acall read11_dbs - acall write11_dbs Read und write to DBS from string 11,0 Gleiche Funktion wie read_dbs und write_dbs, nur als String wird der String 11 verwendet. - acall getr_dbs input: dbs_para = dbs_nummer output: dbs_para+4 = Nummer des aktuellen Records Laenge = 4 Funktion: Der Aufruf liefert die Record-nummer der aktuellen Records in 4 Digits zurueck. Die Uebergabe der DBS-Nummer wird nun als Integerwert betrachtet. Damit ist die Addressierung der Speichererweiterung moeglich. Mit der Speichererweiterung ist es moeglich, 64 Databasen mit a 32384 bytes zu erstellen. Die bisherigen DBS haben die Nummer 0 - 7 - 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. Ist auf Adresse 0x7f02 Bit 1 auf 1 gesetzt, wird nach dem Timeout fuer den Abbruch das XOFF-Flag auf XON gesetzt. setp 0x7f02,0x02 Nach Timeout wird abgebrochen und xoff auf xon gesetzt. (Timeout = 25sec) ******************************************************************** *********** AFSD12.HEX **************************************** ******************************************************************** AFSDV12.HEX Aenderung in MODE_SPRECO Liest einen Record von der seriellen Schnittstelle bis das Zeichen welches im xdata_mem "taskliste+z_spreco" gespeichert ist erkannt wird. Zuvor wird das Zeichen mit der Maske in "taskliste+z_spreco+1" maskiert (AND). Das Zeichen, wenn es das ENDE-Zeichen war wird allerdings unmaskiert gespeichert. Danach wird der Quart-status gespeichert und ein RX_SIGN gesendet. Diese Routine steht zur Zeit nur dem CH 2 zur Verfgung. Wird der Befehl MODE_SPRECO in einem anderen Modul verwendet, so wird der normale RECO-Handeler verwendet. Programming rules: mode_spreco ; select interrupt handler setp 0xea19,143 ; set end_char for recordend ; for Modul 2 setp 0xea1a,143 ; set mask_char for recordend ; ; Modul 0 : 0xe819 ; Modul 1 : 0xe919 ; Modul 2 : 0xea19 ; Modul 3 : 0xeb19 Aenderung in RD_ACD Sn,offset Liest einen String von der seriellen Schnittestelle und interpretiert ihn als DHS3-ACD WALL_DISPLAY Datensatz. Protokoll 3BA 19000 0001 PEZZA 2.3 The second protocol (used for ACD) Zb.: 128,139,139,000,079,051,000,079,079,000,079,079, 000,079,079,143 wird umgesetzt in den String Sn,offset auf "[adr],[mode],32,79,51,32,79,79,32,79,79,32,79,79,13" [adr] ... Addresse des Displays 0-7 [mode] ... Display Anzeigemode "B" ... nicht blinkend "C" ... blinkend "D" ... Test LED's "E" ... Display aus [data] ... 000 to 031 convert to " " END-CHAR MASK ... 10001111b END-CHAR CHECK ... 10001111b Counter 15 liefert wie bei MODE_RECO und RDS Sn,offset den Quartstatus zurck. Neuer Befehl: WR_ACD sn,offset,anz Sendet den durch sn,offset adressierten String zum seriellen Kanal und interpretiert ihn als ACD-BAROMETER Daten. Der String muss folgend aufgebaut sein: "ADDR,MODE,d,d,d,d,d,d,d,d,d,d,d,d,CR" Die Anzahl der Zeichen fr die Ausgabe zum Display ist maximal 15 ( 12 data und 3 Steuerzeichen). ADDR ... Barometeradresse 0-7 MODE ... Mode Steuerzeichen ... B = unflash C = flash D = Test LED E = Display off ******************************************************************** *********** AFSD11.HEX **************************************** ******************************************************************** AFSDV11.HEX Neue Funktion: acall IS_DIGIT_C10 Test char pointed by S13,c10 if it is a digit (0-9). Returns Z-Flag if it is a digit else NZ-Flag. acall convert_l1 acall convert_l2 Convert the input in s13,0 if a displayline to a textdisplayline. returns Z-flag if converting was okay returns NZ-flag if the string was too long. example: rds s13,0 jz nothing compd "0:",s13,0 jz line1_2824 compd "1:",s13,0 jz line2_2824 .. .. line1_2824: acall convert_l1 jnz error jmp main line2_2824: acall convert_l2 jnz error jmp main ******************************************************************** *********** AFSD10.HEX **************************************** ******************************************************************** AFSD10 DHS3 Software fr den AFS 11/96 Alle OPI-Routinen wurden entfernt. Befehl MODE: MODE_SPRECO Liest einen Record von der seriellen Schnittstelle bis das Zeichen welches im xdata_mem "taskliste+z_spreco" gespeichert ist erkannt wird. Danach wird der Quart-status gespeichert und ein RX_SIGN gesendet. Diese Routine steht zur Zeit nur dem CH 2 zur Verfgung. Wird der Befehl MODE_SPRECO in einem anderen Modul verwendet, so wird der normale RECO-Handeler verwendet. Programming rules: mode_spreco ; select interrupt handler setp 0xea19,143 ; set end_char for recordend ; for Modul 2 ; Modul 0 : 0xe819 ; Modul 1 : 0xe919 ; Modul 2 : 0xea19 ; Modul 3 : 0xeb19 RD_ACD Sn,offset Liest einen String von der seriellen Schnittestelle und interpretiert ihn als DHS3-ACD WALL_DISPLAY Datensatz. Zb.: 128,139,139,000,079,051,000,079,079,000,079,079, 000,079,079,143 wird umgesetzt in den String Sn,offset auf "32,32,51,32,32,32,32,32,32,32,32,32,13" Counter 15 liefert wie bei MODE_RECO und RDS Sn,offset den Quartstatus zurck. ******************************************************************** *********** 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 Gueltigkeitspruefung 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