
  ͻ
                                                                    
      REVISON.TXT                                                   
                                                                    
      SOFTWAREGESCHICHTE ZU AFS - SOFTWARE                          
                                                                    
      AB AFSV33.HEX                                                 
                                                                    
                                                                    
  ͼ
  ********************************************************************
  ***********   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 <cr>.

                "W sn,offset,number,mess"
                Write the mess withthe length of number or the message is
                terminated with a <cr> 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 <CR>.
                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<cr>" und im String 13,200 den String
                "AT*Gcccc<cr>". 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"	->	<cr>
		"/l"	->	<lf>
		"/s"	->	<xoff>
		"/q"	->	<xon>
		
		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 <STX> wird der Fehlerstatus
                zurueckgesetzt. Nach Empfang der Zeichens <BCC,BCC>,<ETX>
                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 <cr>.

  ********************************************************************
  ***********   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 <cr> wird ein Fehlerstausbyte nach dem
                <cr> im Speicher abgelegt. Fehlerstatus beinhaltet:
                Parityerror,Frammingerror,Break,Overrun.
                Danach wird der Fehlerstatus zurueckgesetzt.

        INTHQA  IN MODE_STX

                Nach Empfang des Zeichens <STX> wird der Fehlerstatus
                zurueckgesetzt. Nach Empfang der Zeichens <ETX>,<BCC>
                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 <cr> 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 <cr>).




                                                END OF FILE

