浜様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様融 REVISON.TXT SOFTWAREGESCHICHTE ZU AFS - SOFTWARE AB AFSV33.HEX 藩様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様夕 ******************************************************************** *********** AFSUv32.HEX **************************************** ******************************************************************** VTA Handler: If the display is writen partial the handler set the Flag displ_l1 and displ_l2 at the beginning. -> This bug is solved here. the flag displ_l1 and displ_l2 for l1 or l2 event is set according to bit 7 in the option flag of the datarecord. if bit 7 is set to 1 the display is hidden (not ready now) if bit 7 is set to 0 the display is ready for test. INTHSH: maske 01100000b gendert auf 11100000b. Grund: somit sollte es mglichsein Umlaute 8E, 99, 9A, 84, 94, 81 zu verwenden. Diese konnten nicht geladen Werden. ******************************************************************** *********** AFSUv31.HEX **************************************** ******************************************************************** Handler for MODERECO: The char "1b" ESC produce a extra CR into the inputbuffer. On receive of char ESC the line befor is terminated with a "cr" + block char from the Quart. Then in in a new line the first char is then the ESC-char. ******************************************************************** *********** AFSUv30.HEX **************************************** ******************************************************************** - Parameter fr Message concatinate on Layer3 hinzugefgt. (message: 0d { 61 0b [04 47 01 03 a3 05 29 06 00 04 ]} 5d 0b concatinate message: Changes: ******************************************************************** *********** AFSUv20.HEX **************************************** ******************************************************************** - New command: TAPWRS sn,offset,anz Send string to serialchannel with TAP-protocol. Befor you can send the message you setup a modem connection to TAP-server. The string 0xd4a0 should hold the HANDY-number terminated with a "cr". - wrs, wrd : Terminate string with 00h also ******************************************************************** *********** AFSUv11b.HEX *************************************** ******************************************************************** - Abfrage der Configuration des UA-set disabeled - Special funktion request disabeled. - Mit jedem ACK-String wird timeout fuer Connection present auf 20 sec aufgezogen. - Bug in CF-Mon behoben. Label suche. ******************************************************************** *********** AFSUV11a.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 ******************************************************************** *********** AFSUAV11.HEX ************************************** ******************************************************************** TICON n,seg,state Test ICON n... Iconnumber 1-28 seg... segment number 1-8 (a-h) state... status 0-3 ( 0=off,1=slow flash, 2=on) return: Z if state= Iconstate NZ if state!= Iconstate ************************************************************* Sommer Winterzeit Umschaltung auf letzten Sonntag im Oktober geaendert. Softkey direct 255 sendet gu_offhook-message 254 sendet gu_onhook-message ex.: vta_key 255 vta_key 254 ******************************************************************** *********** AFSUAV10.HEX ************************************** ******************************************************************** Kommandos fuer SV-MON "RH sn,offset,number" Read from a string,offset the number of digits and send the string as HEX. 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. New softwareline for interfaceing the UA-protocol of a MR2 Alcatel subset. Channel 0 is prepared for the connection to the UA-MAC/PC- interface. Changes: Channel 0 of the Quart TX run's on interrupt. Modul 0 have special funktion for handling of a UA-subset: xdata 0xd100h VTA-Display line 1 xdata 0xd140h VTA-Display line 2 xdata 0xd180h VTA-Icon-base xdata 0xd461h Test subset is working (value 67h) Voice mode xdata 0d480h ; mode 0-6 l= 4 byte ; +1 tone = 0-0fh ; +2 cadence = 0-7 ; +3 speaker volume 1-7 On RX message rx_mess_61 xdata 0d490h ;set by routine rx to "1" rx_mess_62 xdata 0d491h rx_mess_63 xdata 0d492h rx_mess_64 xdata 0d493h ; displ_l1 xdata 0d494h ;on mess_code 61 (VTA-Terminal) displ_l2 xdata 0d495h icon_state xdata 0d496h vta_status xdata 0d497h rx_abca_mess xdata 0d498h ; set the mem to "1". This can be reset by the modul. So the modul is able to dedect the message on a rx_sign faster. A RX_sign is generate by the UA-handler (task 5) after a timeout of the value in the xdata-mem 0xd46dh (units 100ms). Each message resets that timeout. A stx_sign (cntl_sign) is generate by the UA-handler if there is any error on the UA-set. A tx_sign is generate by the UA-handler after transmitting a message. For transmit messages the following commands can be used: VTA_KEY number ... sends a non digit key to the UA-set number is any valied key number. VTA_SKEY sn,offset ... sends the key represented by the number in sn,offset as a nondigit key ( 000 - 255) movd "015",wstr,3 ex.: vta_skey wstr,3 VTA_WRS sn,offset,anz ... sends a string to the UA-set. Any digits (0-9,*,#) are send as digit key, any other char send as non digit key. Allowed are all char they are used by the internal alpha keyboard. VTA_WRD "string" ... sends the "string" to the UA-set same as VTA_WRS ******************************************************************** *********** 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. ******************************************************************** *********** 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