REH NS455 CROSS-ASSEMBLER - VERSION 1.2 - 03.08.89  18:08:40

TV950-EMULATION F]R TERMINAL MIT NS405/455                            PAGE  1   
C'T TEXT-TERMINAL SOFTWARE V2.2

 1000                   ORG     1000H           ; BANK 2
                
                ; T. REH 26.07.89
                
                ; UNTERPROGRAMME IN ANDEREN MODULEN
                
 000A           INIT    EQU     0AH             ; GESAMTINIT. TERMINAL
 000C           CI      EQU     0CH             ; CONSOLE INPUT IN R3
 000E           CO      EQU     0EH             ; CONSOLE OUTPUT IN R3
 0010           HLOOP   EQU     10H             ; HAUPTSCHLEIFE TERMINAL
                
                ; EINSPRUNGVEKTOR F]R ANDERE MODULE
                
 1000 44FD              JMP     CTLCOD          ; CONTROL-CODE AUSWERTUNG
 1002 4486              JMP     CRIGHT          ; CURSOR RIGHT
 1004 4439              JMP     CURUP           ; CURSOR UP
 1006 445B              JMP     CDOWN           ; CURSOR DOWN
 1008 6416              JMP     CTLCD2          ; EINSPRUNG F]R ZUS. CTL-CODES
 100A 0420              JMP     STSET           ; STATUSZEILE AUFFRISCHEN
 100C 2433              JMP     SDISP           ; AUSGABEROUTINE STATUSZEILE
 100E 44E5              JMP     FFD             ; BILDSCHIRM L\SCHEN
 1010 24D1              JMP     CLRPG1          ; TEIL BILDSCHIRM L\SCHEN
 1012 442D              JMP     LDSEND          ; BILD-ENDADRESSE NACH A
 1014 04E0              JMP     EDISP           ; TERMINAL-EMULATION ANZEIGEN
 1016 2402              JMP     NDISP           ; NATIONALIT[T ANZEIGEN
 1018 04CF              JMP     BDISP           ; BAUDRATE ANZEIGEN
 101A 241A              JMP     STMODE          ; ONLINE/LOCAL/SETUP ANZEIGEN
 101C 04E6              JMP     CDISP           ; SPALTENZAHL ANZEIGEN
 101E 04F6              JMP     RDISP           ; ZEILENZAHL ANZEIGEN
                
                ;**************************************************************
                ;**                                                          **
                ;**             STATUSZEILEN - BEARBEITUNG                   **
                ;**                                                          **
                ;**************************************************************
                
                ; STSET SCHREIBT GESAMTE STATUSZEILE.
                
 1020 34F2      STSET:  CALL    CLRSTA          ; STATUSZEILE L\SCHEN
 1022 F1                MOV     A,@R1           ; REG4 LESEN
 1023 F226              JB7     STSET1          ; STATUSZEILE AN : WERTE ANZ.
 1025 83                RET
 1026 3420      STSET1: CALL    STMOD1          ; ONLINE/LOCAL/SETUP ANZEIGEN
 1028 FF                MOV     A,R7            ; BOOLEAN FLAG
 1029 37                CPL     A
 102A 322E              JB1     STST1           ; CTL MODE ?
 102C 1488              CALL    STCTL
 102E 148E      STST1:  CALL    STHAND          ; HANDSHAKE DTR/XON ANZEIGEN
 1030 149B              CALL    STBITS          ; DATA+PARITY+STOP BITS ANZ.
 1032 BB17              MOV     R3,#23          ; SPALTE-1
 1034 542D              CALL    LDSEND          ; STARTADRESSE ZIELZEILE
 1036 14CF              CALL    BDISP           ; BAUDRATE ANZEIGEN
 1038 BAA0              MOV     R2,#LOW(BAUD)   ; TEXT
 103A BB1D              MOV     R3,#29          ; SPALTE-1
 103C BC02              MOV     R4,#2           ; 2 ZEICHEN
 103E 3431              CALL    STEND           ; 'Bd' SCHREIBEN
 1040 BB22              MOV     R3,#34          ; ZIELSPALTE-1 (EMULATION)
 1042 542D              CALL    LDSEND
 1044 14E0              CALL    EDISP           ; TERMINAL-EMULATION ANZ.
 1046 BB29              MOV     R3,#41          ; ZIELSPALTE-1 (NAT.)
 1048 542D              CALL    LDSEND
 104A 3402              CALL    NDISP           ; NATIONALIT[T ANZEIGEN
 104C BB2E              MOV     R3,#46
 104E 542D              CALL    LDSEND
 1050 14E6              CALL    CDISP           ; SPALTENZAHL AB SPALTE 47
 1052 2378              MOV     A,#'x'
REH NS455 CROSS-ASSEMBLER - VERSION 1.2 - 03.08.89  18:08:40

TV950-EMULATION F]R TERMINAL MIT NS405/455                            PAGE  2   
C'T TEXT-TERMINAL SOFTWARE V2.2

 1054 81                MOVX    @R1,A           ; TRENNZEICHEN 'x'
 1055 BB31              MOV     R3,#49
 1057 542D              CALL    LDSEND
 1059 14F6              CALL    RDISP           ; ZEILENZAHL AB SPALTE 50
 105B 542D              CALL    LDSEND
 105D 0309              ADD     A,#9            ; ERSTE TRENNZEICHEN-SPALTE
 105F 89                MOVL    R1,A            ; ZEIGER AUF STATUSZEILE
 1060 91                MOVX    A,@R1           ; ATTR HOLEN
 1061 E2                MOV     A,HACC
 1062 537F              ANL     A,#7FH          ; GRAFIK-ATTR SETZEN
 1064 C2                MOV     HACC,A
 1065 234A              MOV     A,#4AH          ; SENKRECHTER BALKEN
 1067 88                MOVL    R0,A            ; ZEICHEN/ATTR RETTEN
 1068 81                MOVX    @R1,A           ; ANZEIGEN
 1069 99                MOVL    A,R1
 106A 0317              ADD     A,#23           ; 23 SPALTEN WEITER
 106C 89                MOVL    R1,A
 106D 98                MOVL    A,R0
 106E 81                MOVX    @R1,A           ; TRENNZEICHEN
 106F 99                MOVL    A,R1
 1070 0314              ADD     A,#20           ; 20 SPALTEN WEITER
 1072 89                MOVL    R1,A
 1073 98                MOVL    A,R0
 1074 81                MOVX    @R1,A           ; TRENNZEICHEN
 1075 99                MOVL    A,R1
 1076 030A              ADD     A,#10           ; 10 SPALTEN WEITER
 1078 89                MOVL    R1,A
 1079 98                MOVL    A,R0
 107A 81                MOVX    @R1,A           ; TRENNZEICHEN
 107B 39                INCL    R1
 107C 39                INCL    R1
 107D 39                INCL    R1
 107E 39                INCL    R1
 107F 91                MOVX    A,@R1           ; ORIG. ATTR HOLEN
 1080 233A              MOV     A,#':'
 1082 81                MOVX    @R1,A           ; TRENNZEICHEN F]R UHR
 1083 39                INCL    R1
 1084 39                INCL    R1
 1085 39                INCL    R1
 1086 81                MOVX    @R1,A           ; TRENNZEICHEN F]R UHR
 1087 83                RET
                
                ; ROUTINE F]R 'CONTROL MODE'.
                
 1088 BA4D      STCTL:  MOV     R2,#LOW(CTLMD)  ; TEXT
 108A BB05              MOV     R3,#5           ; SPALTE-1
 108C 242F              JMP     ST3END
                
                ; ROUTINE F]R 'DTR' UND 'XON' HANDSHAKE-MODE-ANZEIGE.
                
 108E BB0B      STHAND: MOV     R3,#11          ; SPALTE-1 VORBELEGEN
 1090 B938              MOV     R1,#REG4
 1092 F1                MOV     A,@R1           ; REG4
 1093 BA4A              MOV     R2,#LOW(HDSXON) ; TEXTZEIGER FALLS XON
 1095 B299              JB5     STHX            ; XON ?
 1097 BA47              MOV     R2,#LOW(HDSDTR) ; TEXTZEIGER FALLS DTR
 1099 242F      STHX:   JMP     ST3END          ; AUSGEBEN
                
                ; ANZAHL DATENBITS, PARITY, UND ANZAHL STOPBITS ANZEIGEN.
                
 109B 542D      STBITS: CALL    LDSEND
 109D 0310              ADD     A,#16           ; SPALTE-1
 109F 88                MOVL    R0,A            ; ZEIGER F]R AUSGABEN
 10A0 90                MOVX    A,@R0           ; ALTER WERT WEGEN ATTR.
 10A1 B939              MOV     R1,#REG5
 10A3 F1                MOV     A,@R1
REH NS455 CROSS-ASSEMBLER - VERSION 1.2 - 03.08.89  18:08:40

TV950-EMULATION F]R TERMINAL MIT NS405/455                            PAGE  3   
C'T TEXT-TERMINAL SOFTWARE V2.2

 10A4 5301              ANL     A,#1            ; BIT0: WORTBREITE
 10A6 0337              ADD     A,#'7'
 10A8 80                MOVX    @R0,A           ; 7 ODER 8 DATENBITS
 10A9 38                INCL    R0
 10AA 232B              MOV     A,#'+'          ; DURCH '+' GETRENNT
 10AC 80                MOVX    @R0,A
 10AD 38                INCL    R0
 10AE B93A              MOV     R1,#REG6
 10B0 F1                MOV     A,@R1
 10B1 32B7              JB1     STPAR1          ; PARITY ENABLE: ANZEIGEN
 10B3 236E              MOV     A,#'n'
 10B5 04BE              JMP     STPARX          ; SONST 'NO' PARITY
 10B7 530C      STPAR1: ANL     A,#0CH          ; NUR PARITY
 10B9 77                RR      A
 10BA 77                RR      A               ; WERTE 0..3
 10BB 03CB              ADD     A,#LOW(PBTAB)
 10BD B3                MOVP    A,@A            ; BUCHSTABE AUS TABELLE
 10BE 80        STPARX: MOVX    @R0,A           ; ANZEIGEN
 10BF 38                INCL    R0
 10C0 232B              MOV     A,#'+'          ; DURCH '+' GETRENNT
 10C2 80                MOVX    @R0,A
 10C3 38                INCL    R0
 10C4 F1                MOV     A,@R1
 10C5 5301              ANL     A,#1            ; BIT0: STOP BITS
 10C7 0331              ADD     A,#'1'
 10C9 80                MOVX    @R0,A           ; 1 ODER 2 STOPBITS
 10CA 83                RET
                
 10CB 6F656D73  PBTAB:  DB      'oems'          ; PARITY-CODES
                
                ; ROUTINE F]R BAUDRATE DER SERIELLEN SCHNITTSTELLE.
                
 10CF 88        BDISP:  MOVL    R0,A            ; ZEILENADRESSE RETTEN
 10D0 B93A              MOV     R1,#REG6
 10D2 F1                MOV     A,@R1
 10D3 47                SWAP    A
 10D4 530F              ANL     A,#0FH          ; BAUDRATE 4 BIT
 10D6 AA                MOV     R2,A
 10D7 E7                RL      A
 10D8 E7                RL      A               ; * 4
 10D9 6A                ADD     A,R2            ; * 5
 10DA 0350              ADD     A,#LOW(BAUDS)
 10DC AA                MOV     R2,A
 10DD 98                MOVL    A,R0            ; ZEILENADRESSE HOLEN
 10DE 04E2              JMP     ST5DSP          ; ZAHLEN SCHREIBEN
                
                ; ROUTINE F]R ANZEIGE DER AKT. TERMINAL-EMULATION.
                ; OFFSET (SPALE MINUS 1) IN R3.
                
 10E0 BAA2      EDISP:  MOV     R2,#LOW(TE)     ; ZEIGER AUF TEXTANFANG
 10E2 BC05      ST5DSP: MOV     R4,#5           ; 5 ZEICHEN
 10E4 2433              JMP     SDISP           ; AUSGEBEN (ZEILENANF. IN A)
                
                ; ANZEIGE DER AKTUELLEN SPALTENZAHL.
                
 10E6 88        CDISP:  MOVL    R0,A
 10E7 B939              MOV     R1,#REG5
 10E9 F1                MOV     A,@R1
 10EA 53C0              ANL     A,#0C0H         ; NUR SPALTENZAHL
 10EC 47                SWAP    A
 10ED 77                RR      A               ; 2 * SPALTENZAHL
 10EE 03BF              ADD     A,#LOW(COL72)
 10F0 AA        CDISP1: MOV     R2,A
 10F1 98                MOVL    A,R0
 10F2 BC02              MOV     R4,#2           ; 2 ZEICHEN
 10F4 2433              JMP     SDISP
REH NS455 CROSS-ASSEMBLER - VERSION 1.2 - 03.08.89  18:08:40

TV950-EMULATION F]R TERMINAL MIT NS405/455                            PAGE  4   
C'T TEXT-TERMINAL SOFTWARE V2.2

                
                ; ANZEIGE DER AKTUELLEN ZEILENZAHL.
                
 10F6 88        RDISP:  MOVL    R0,A
 10F7 B939              MOV     R1,#REG5
 10F9 F1                MOV     A,@R1
 10FA 5330              ANL     A,#30H          ; NUR ZEILENZAHL
 10FC 47                SWAP    A
 10FD E7                RL      A               ; 2 * ZEILENZAHL
 10FE 03C7              ADD     A,#LOW(ROW22)
 1100 04F0              JMP     CDISP1
                
                ; ROUTINE F]R ANGABE DES NATIONALEN ZEICHENSATZES.
                
 1102 88        NDISP:  MOVL    R0,A            ; ZEILENADRESSE RETTEN
 1103 B939              MOV     R1,#REG5
 1105 F1                MOV     A,@R1
 1106 77                RR      A
 1107 5307              ANL     A,#7            ; 3 BIT ZEICHENSATZ
 1109 0312              ADD     A,#LOW(NTTAB)
 110B B3                MOVP    A,@A            ; TEXTANFANG ENTSPR. ZS
 110C AA                MOV     R2,A
 110D 98                MOVL    A,R0            ; ZEILENADRESSE HOLEN
 110E BC03              MOV     R4,#3           ; 3 ZEICHEN
 1110 2433              JMP     SDISP           ; AUSGEBEN
                
 1112 A7AAADB0  NTTAB:  DB      N0,N1,N2,N3,N4,N5,N6,N7
                
                ; ROUTINE F]R 'ONLINE', 'LOCAL' UND 'SETUP'.
                ; KANN AUCH DURCH INTERRUPT-ROUTINE AUFGERUFEN WERDEN (EXTINT).
                
 111A B938      STMODE: MOV     R1,#REG4
 111C F1                MOV     A,@R1           ; REG4 LESEN
 111D F220              JB7     STMOD1          ; STATUSZEILE EINGESCHALTET?
 111F 83                RET                     ; SONST UNVER[NDERT RETURN
 1120 BB00      STMOD1: MOV     R3,#0           ; SPALTE-1 VORBELEGEN
 1122 B907              MOV     R1,#7
 1124 F1                MOV     A,@R1           ; BOOLEAN FLAG
 1125 BA41              MOV     R2,#LOW(LOC)    ; TEXTZEIGER FALLS LOCAL
 1127 122F              JB0     ST3END          ; LOCAL ?
 1129 BA44              MOV     R2,#LOW(SET)    ; TEXTZEIGER FALLS SETUP
 112B 522F              JB2     ST3END          ; SETUP ?
 112D BA3E              MOV     R2,#LOW(ONL)    ; TEXTZEIGER FALLS ONLINE
                
                ; AUSGABEROUTINE F]R STATUSZEILE.
                
 112F BC03      ST3END: MOV     R4,#3           ; 3 ZEICHEN
 1131 542D      STEND:  CALL    LDSEND          ; ANFANG STATUSZEILE
 1133 6B        SDISP:  ADD     A,R3            ; ZEIGER AUF TEXTZIEL
 1134 89                MOVL    R1,A            ; NACH R1
 1135 91        SDISP1: MOVX    A,@R1           ; ALTER WERT WEGEN ATTRIBUTEN
 1136 FA                MOV     A,R2            ; ZEIGER AUF QUELLE
 1137 B3                MOVP    A,@A            ; ZEICHEN
 1138 81                MOVX    @R1,A           ; ZEICHEN SCHREIBEN
 1139 39                INCL    R1
 113A 1A                INC     R2
 113B EC35              DJNZ    R4,SDISP1       ; ALLE ZEICHEN ]BERTRAGEN
 113D 83                RET
                
                ; TEXTE F]R STATUSZEILE.
                
 113E 4F4E4C    ONL:    DB      'ONL'
 1141 4C4F43    LOC:    DB      'LOC'
 1144 534554    SET:    DB      'SET'
 1147 445452    HDSDTR: DB      'DTR'
 114A 584F4E    HDSXON: DB      'XON'
REH NS455 CROSS-ASSEMBLER - VERSION 1.2 - 03.08.89  18:08:40

TV950-EMULATION F]R TERMINAL MIT NS405/455                            PAGE  5   
C'T TEXT-TERMINAL SOFTWARE V2.2

 114D 43544C    CTLMD:  DB      'CTL'
 1150 20203131  BAUDS:  DB      '  110'
 1155 3133342E          DB      '134.5'
 115A 20203135          DB      '  150'
 115F 20203330          DB      '  300'
 1164 20203630          DB      '  600'
 1169 20313230          DB      ' 1200'
 116E 20313830          DB      ' 1800'
 1173 20323430          DB      ' 2400'
 1178 20333630          DB      ' 3600'
 117D 20343830          DB      ' 4800'
 1182 20373230          DB      ' 7200'
 1187 20393630          DB      ' 9600'
 118C 31393230          DB      '19200'
 1191 31393230          DB      '19200'
 1196 31393230          DB      '19200'
 119B 20393630          DB      ' 9600'
 11A0 4264      BAUD:   DB      'Bd'
 11A2 54563935  TE:     DB      'TV950'
 11A7 555341    N0:     DB      'USA'
 11AA 465241    N1:     DB      'FRA'
 11AD 474552    N2:     DB      'GER'
 11B0 454E47    N3:     DB      'ENG'
 11B3 44454E    N4:     DB      'DEN'
 11B6 535745    N5:     DB      'SWE'
 11B9 495441    N6:     DB      'ITA'
 11BC 535041    N7:     DB      'SPA'
 11BF 3732      COL72:  DB      '72'
 11C1 3830      COL80:  DB      '80'
 11C3               IF Z20820
 11C3                   DB      '7280'
 11C3               ELSE
 11C3 3838              DB      '88'
 11C5                IF Z17300
 11C5                   DB      '92'
 11C5                ELSE
 11C5 3936              DB      '96'
 11C7                ENDIF
 11C7               ENDIF
 11C7 3232      ROW22:  DB      '22'
 11C9 3234      ROW24:  DB      '24'
 11CB 3236      ROW26:  DB      '26'
 11CD               IF Z17300 OR Z17550 OR Z20820
 11CD           ROW28:  DB      '27'
 11CD               ELSE
 11CD 3238      ROW28:  DB      '28'
 11CF               ENDIF
                
                ;**************************************************************
                ;**                                                          **
                ;**             ELEMENTARE TERMINAL-FUNKTIONEN               **
                ;**                                                          **
                ;**************************************************************
                
                ; CLRPAG L\SCHT BILDSCHIRM, SETZT CURSOR UND HOME AUF 0.
                
 11CF 27        CLRPAG: CLR     A
 11D0 C2                MOV     HACC,A
 11D1 8A        CLRPG1: MOV     HOME,A
 11D2 8B                MOV     CURS,A          ; HOME UND CURS AUF 0
 11D3 88                MOVL    R0,A            ; ZEIGER F]R CLRLNP
 11D4 B935              MOV     R1,#ROWNUM
 11D6 F1                MOV     A,@R1
 11D7 AD                MOV     R5,A            ; ZEILENANZAHL NACH R5
 11D8 34DF      CPLOOP: CALL    CLRLNP          ; R0-ZEILE L\SCHEN
 11DA EDD8              DJNZ    R5,CPLOOP
REH NS455 CROSS-ASSEMBLER - VERSION 1.2 - 03.08.89  18:08:40

TV950-EMULATION F]R TERMINAL MIT NS405/455                            PAGE  6   
C'T TEXT-TERMINAL SOFTWARE V2.2

 11DC 83                RET
                
                ; CLRHOM L\SCHT AKTUELLE HOME-ZEILE, CLRLIN DIE DURCH A
                ; ADRESSIERTE ZEILE, CLRLNP DIE DURCH R0 ADR. ZEILE.
                
 11DD 9A        CLRHOM: MOV     A,HOME
 11DE 88        CLRLIN: MOVL    R0,A            ; R0 ALS ADRESSZEIGER
 11DF B934      CLRLNP: MOV     R1,#ROWLEN
 11E1 F1                MOV     A,@R1
 11E2 AA                MOV     R2,A            ; ZEILENL[NGE NACH R2
 11E3 23FF      CLRLN0: MOV     A,#0FFH
 11E5 C2                MOV     HACC,A          ; KEINE ATTRIBUTE GESETZT
 11E6 2320              MOV     A,#' '
 11E8 80        CLRLN1: MOVX    @R0,A           ; BLANK IN SPEICHER SCHREIBEN
 11E9 38                INCL    R0
 11EA EAE8              DJNZ    R2,CLRLN1       ; EINE GANZE ZEILE LANG
 11EC 83                RET
                
                ; BELL: PULS (LOW) AN GLOCKE AUSGEBEN.
                
 11ED 73DF      BELL:   ANL     PORT,#NOT BELBIT        ; BIT SETZEN (NEG PULS)
 11EF 6320              ORL     PORT,#BELBIT            ; BIT WIEDER R]CKSETZEN
 11F1 83                RET
                
                ; CLRSTA L\SCHT STATUSZEILE (HALF INTEN, REVERSE).
                
 11F2 542D      CLRSTA: CALL    LDSEND          ; STATUS HINTER BILDSPEICHER
 11F4 88                MOVL    R0,A            ; R0 ALS ADRESSZEIGER
 11F5 B934              MOV     R1,#ROWLEN
 11F7 F1                MOV     A,@R1
 11F8 AA                MOV     R2,A            ; ZEILENL[NGE IN R2
 11F9 B938              MOV     R1,#REG4
 11FB F1                MOV     A,@R1           ; REG4 LESEN
 11FC F7                RLC     A               ; STA-ON IN CY, REVVID IN BIT4
 11FD 47                SWAP    A               ; REVVID IN BIT0
 11FE F7                RLC     A               ; KOMBI IN BIT0..1
 11FF 5303              ANL     A,#3
 1201 030C              ADD     A,#LOW(STATTB)  ; ZEIGER AUF ATTR-BYTE
 1203 B3                MOVP    A,@A
 1204 C2                MOV     HACC,A          ; ATTRIBUTE F]R STATUSZEILE
 1205 2320              MOV     A,#' '
 1207 80        CLRST1: MOVX    @R0,A           ; BLANK IN SPEICHER SCHREIBEN
 1208 38                INCL    R0
 1209 EA07              DJNZ    R2,CLRST1       ; EINE GANZE ZEILE LANG
 120B 83                RET
                
 120C BF        STATTB: DB      10111111B       ; NOREV, OFF
 120D FC                DB      11111100B       ; NOREV, ON
 120E BE                DB      10111110B       ; REV, OFF
 120F FD                DB      11111101B       ; REV, ON
                
                ; DIE FOLGENDEN 3 UNTERPROGRAMME TESTEN DEN INHALT VON HACC/A
                ; AUF SPEICHERENDE (EODCHK), BILDENDE (EOSCHK) UND BILDANFANG
                ; (TODCHK). NUR HACC/A UND R1 WERDEN BENUTZT. DAS CARRY-FLAG
                ; WIRD GESETZT, WENN DAS ENTSPR. ENDE ]BERSCHRITTEN WURDE.
                
 1210 B936      EODCHK: MOV     R1,#ENDLO
 1212 37                CPL     A
 1213 61                ADD     A,@R1           ; ADDIEREN [NDERT HACC !
 1214 E2                MOV     A,HACC
 1215 37                CPL     A
 1216 E61C              JNC     EOD1            ; AUF ]BERLAUF PR]FEN
 1218 0302              ADD     A,#2            ; BORROW STATT CARRY !
 121A C61E              JZ      EODX
 121C 19        EOD1:   INC     R1              ; ACHTUNG! INC L\SCHT CARRY!
 121D 61                ADD     A,@R1           ; HIGH-BYTES VERGLEICHEN
REH NS455 CROSS-ASSEMBLER - VERSION 1.2 - 03.08.89  18:08:40

TV950-EMULATION F]R TERMINAL MIT NS405/455                            PAGE  7   
C'T TEXT-TERMINAL SOFTWARE V2.2

 121E A7        EODX:   CPL     C               ; CARRY WENN ACCU GR\SSER
 121F 83                RET
                
 1220 B935      EOSCHK: MOV     R1,#ROWNUM
 1222 F1                MOV     A,@R1           ; ZEILENZAHL
 1223 37                CPL     A               ; -ANZAHL-1
 1224 6D                ADD     A,R5            ; ZEILENNUMMER > ANZAHL ?
 1225 83                RET
                
 1226 97        TODCHK: CLR     C               ; CARRY VORBELEGEN
 1227 E2                MOV     A,HACC
 1228 37                CPL     A
 1229 F22C              JB7     TODX            ; POSITIV : KEIN CARRY
 122B A7                CPL     C               ; NEGATIV : CARRY SETZEN
 122C 83        TODX:   RET
                
                ; DIESES UNTERPROGRAMM L[DT DIE H\CHSTE BILDADRESSE NACH A.
                
 122D B937      LDSEND: MOV     R1,#ENDHI
 122F F1                MOV     A,@R1           ; HIGH-BYTE
 1230 C2                MOV     HACC,A
 1231 C9                DEC     R1
 1232 F1                MOV     A,@R1           ; LOW-BYTE
 1233 83                RET
                
                ;**************************************************************
                ;**                                                          **
                ;**                  CURSOR - BEWEGUNG                       **
                ;**                                                          **
                ;**************************************************************
                
                ; CURSOR UP (OBERSTE ZEILE = ANSCHLAG)
                
 1234 5439      CUP:    CALL    CURUP           ; CURSOR UP
 1236 C5                SEL     MB0
 1237 0410              JMP     HLOOP
                
 1239 ED3D      CURUP:  DJNZ    R5,CUP1         ; ZEILE -1 UND TESTEN AUF 0
 123B 1D                INC     R5              ; ZEILE WAR 1 : ZEILE BLEIBT 1
 123C 83                RET                     ; KEINE VER[NDERUNG
 123D B934      CUP1:   MOV     R1,#ROWLEN      ; ZEILE WAR GR\SSER ALS 1 :
 123F F1                MOV     A,@R1
 1240 A9                MOV     R1,A            ; ZEILENL[NGE NACH R1
 1241 37                CPL     A
 1242 AA                MOV     R2,A            ; R2 : -L[NGE-1
 1243 0A        CUP2:   DEC     CURS
 1244 E943              DJNZ    R1,CUP2         ; CURSOR EINE ZEILE R]CKW[RTS
 1246 9B                MOV     A,CURS
 1247 5426              CALL    TODCHK          ; SPEICHERANFANG ?
 1249 E655              JNC     CUPX            ; NEIN : ENDE
 124B 542D              CALL    LDSEND          ; SONST NACH SPEICHERENDE
 124D 6A                ADD     A,R2            ; AUF ADRESSE VOR ZEILENANFANG
 124E A9                MOV     R1,A            ; A RETTEN
 124F E2                MOV     A,HACC
 1250 07                DEC     A
 1251 C2                MOV     HACC,A          ; HACC -1 WEIL ADDIERT 
 1252 F9                MOV     A,R1            ; A WIEDERHOLEN
 1253 6E                ADD     A,R6            ; SPALTE RICHTIG SETZEN
 1254 8B                MOV     CURS,A          ; NEUEN CURSOR RETTEN
 1255 83        CUPX:   RET
                
                ; CURSOR DOWN (UNTERSTE ZEILE = ANSCHLAG).
                
 1256 545B      CDN:    CALL    CDOWN
 1258 C5                SEL     MB0
 1259 0410              JMP     HLOOP
REH NS455 CROSS-ASSEMBLER - VERSION 1.2 - 03.08.89  18:08:40

TV950-EMULATION F]R TERMINAL MIT NS405/455                            PAGE  8   
C'T TEXT-TERMINAL SOFTWARE V2.2

                
 125B 1D        CDOWN:  INC     R5              ; ZEILE ERH\HEN
 125C 5420              CALL    EOSCHK
 125E F662              JC      CDOWN1
 1260 44D4              JMP     LFD1            ; LINEFEED AUSF]HREN
 1262 CD        CDOWN1: DEC     R5              ; ZUR]CK AUF VORIGE ZEILE
 1263 83                RET                     ; BILDENDE : ANSCHLAG
                
                ; CURSOR LEFT (ZEILENR]CKGANG, ENDE IN ECKE LINKS OBEN).
                
 1264 5469      BSP:    CALL    CLEFT           ; BEWEGEN
 1266 C5                SEL     MB0
 1267 0410              JMP     HLOOP
                
 1269 FE        CLEFT:  MOV     A,R6            ; SPALTE
 126A EE7F              DJNZ    R6,CLEFT1       ; ERNIEDRIGEN, FALLS >1: CLEFT1
 126C B934              MOV     R1,#ROWLEN
 126E F1                MOV     A,@R1
 126F AE                MOV     R6,A            ; [USSERST RECHTE SPALTE
 1270 ED76              DJNZ    R5,CLEFT0       ; VORIGE ZEILE ; OBEN ?
 1272 1D                INC     R5
 1273 BE01              MOV     R6,#1           ; IN ECKE BLEIBEN
 1275 83                RET
 1276 9B        CLEFT0: MOV     A,CURS
 1277 07                DEC     A
 1278 5426              CALL    TODCHK          ; SPEICHERANFANG ?
 127A E67F              JNC     CLEFT1
 127C 542D              CALL    LDSEND          ; FALLS JA, AUF SPEICHERENDE
 127E 8B                MOV     CURS,A
 127F 0A        CLEFT1: DEC     CURS            ; CURSOR NACH LINKS
 1280 83                RET
                
                ; CURSOR RIGHT (NEW LINE BEI ]BERLAUF, EVTL. SCROLLEN).
                
 1281 5486      CRG:    CALL    CRIGHT
 1283 C5                SEL     MB0
 1284 0410              JMP     HLOOP
                
 1286 3A        CRIGHT: INC     CURS            ; CURSORPOSITION ERH\HEN
 1287 1E                INC     R6              ; SPALTE + 1
 1288 B934              MOV     R1,#ROWLEN
 128A F1                MOV     A,@R1
 128B 37                CPL     A               ; -L[NGE-1 IN A
 128C 6E                ADD     A,R6            ; ZEILENENDE ?
 128D E69E              JNC     CRGHTX          ; NICHT ZEILENENDE : WEITER
 128F 1D                INC     R5              ; N[CHSTE ZEILE
 1290 BE01              MOV     R6,#1           ; SPALTE 1
 1292 5420              CALL    EOSCHK
 1294 F69F              JC      SCROLL          ; BEI BILDENDE : SCROLLEN
 1296 9B                MOV     A,CURS
 1297 5410              CALL    EODCHK          ; SPEICHERENDE ?
 1299 E69E              JNC     CRGHTX          ; NEIN, N[CHSTES ZEICHEN
 129B 27                CLR     A
 129C C2                MOV     HACC,A
 129D 8B                MOV     CURS,A          ; CURS AUF SPEICHERANFANG
 129E 83        CRGHTX: RET
                
 129F CD        SCROLL: DEC     R5              ; BILDENDE : R5 WIEDER ZUR]CK
 12A0 34DD              CALL    CLRHOM          ; DERZEITIGE HOME-ZEILE L\SCHEN
 12A2 9A                MOV     A,HOME
 12A3 8B                MOV     CURS,A          ; ALTE HOME-POS.= NEUE CURS-POS.
 12A4 61                ADD     A,@R1           ; HOME AUF N[CHSTE Z. (SCROLL)
 12A5 8A                MOV     HOME,A
 12A6 5410              CALL    EODCHK          ; SPEICHERENDE ?
 12A8 E6AD              JNC     SCROLX
 12AA 27                CLR     A
REH NS455 CROSS-ASSEMBLER - VERSION 1.2 - 03.08.89  18:08:40

TV950-EMULATION F]R TERMINAL MIT NS405/455                            PAGE  9   
C'T TEXT-TERMINAL SOFTWARE V2.2

 12AB C2                MOV     HACC,A
 12AC 8A                MOV     HOME,A          ; WENN JA, HOME WIEDER AUF 0
 12AD 83        SCROLX: RET
                
                ; CARRIAGE RETURN.
                
 12AE 0A        CAR:    DEC     CURS
 12AF EEAE              DJNZ    R6,CAR          ; SPALTENZAHL R]CKW[RTS GEHEN
 12B1 3A                INC     CURS
 12B2 1E                INC     R6              ; SPALTE = 1
 12B3 C5                SEL     MB0
 12B4 0410              JMP     HLOOP
                
                ; LINE FEED. BEI DOPPELTER H\HE ZWEI ZEILEN NACH UNTEN.
                
 12B6 54C2      LFD:    CALL    LNFD
 12B8 B832              MOV     R0,#CURATT
 12BA F0                MOV     A,@R0           ; CURRENT ATTRIBUTE
 12BB 72BF              JB3     LFX             ; NORMALE H\HE
 12BD 54C2              CALL    LNFD            ; SONST NOCH'N LINEFEED
 12BF C5        LFX:    SEL     MB0
 12C0 0410              JMP     HLOOP
                
 12C2 1D        LNFD:   INC     R5              ; ZEILE ERH\HEN
 12C3 5420              CALL    EOSCHK          ; BILDENDE ?
 12C5 E6D4              JNC     LFD1            ; NEIN...
 12C7 CD                DEC     R5              ; WIEDER AUF ALTE ZEILE ZUR]CK
 12C8 34DD              CALL    CLRHOM          ; HOME-ZEILE L\SCHEN
 12CA 9A                MOV     A,HOME
 12CB 61                ADD     A,@R1           ; HOME AUF N[CHSTE ZEILE
 12CC 8A                MOV     HOME,A
 12CD 5410              CALL    EODCHK          ; SPEICHERENDE ?
 12CF E6D4              JNC     LFD1
 12D1 27                CLR     A
 12D2 C2                MOV     HACC,A
 12D3 8A                MOV     HOME,A          ; HOME AUF SPEICHERANFANG
 12D4 B934      LFD1:   MOV     R1,#ROWLEN
 12D6 F1                MOV     A,@R1
 12D7 A9                MOV     R1,A            ; ZEILENL[NGE NACH R1
 12D8 9B                MOV     A,CURS
 12D9 69                ADD     A,R1            ; CURSOR EINE ZEILE WEITER
 12DA 8B                MOV     CURS,A
 12DB 5410              CALL    EODCHK          ; SPEICHERENDE ?
 12DD E6E4              JNC     LFDX
 12DF 27                CLR     A               ; WENN JA :
 12E0 C2                MOV     HACC,A          ;   VON NULL AN WEITER
 12E1 FE                MOV     A,R6            ;   SPALTE WIEDERHERSTELLEN !
 12E2 07                DEC     A
 12E3 8B                MOV     CURS,A          ; NEUE CURSORPOSITION LADEN
 12E4 83        LFDX:   RET
                
                ; FORM FEED BEARBEITUNG. L\SCHT DEN BILDSCHIRM UND SETZT CURSOR
                ; NACH LINKS OBEN.
                
 12E5 34CF      FFD:    CALL    CLRPAG          ; SEITE L\SCHEN
 12E7 44F6              JMP     HOM0            ; ZEILE UND SPALTE AUF 1 SETZEN
                
                ; HORIZONTALER TABULATOR. DIE STOPS SIND JEWEILS 8 SPALTEN.
                
 12E9 5486      HZT:    CALL    CRIGHT          ; CURSOR NACH RECHTS
 12EB FE                MOV     A,R6            ; SPALTE
 12EC 07                DEC     A               ; AB NULL NORMIEREN
 12ED 5307              ANL     A,#7
 12EF D6E9              JNZ     HZT             ; WEITER BIS AUF TAB-SPALTE
 12F1 C5                SEL     MB0
 12F2 0410              JMP     HLOOP
REH NS455 CROSS-ASSEMBLER - VERSION 1.2 - 03.08.89  18:08:40

TV950-EMULATION F]R TERMINAL MIT NS405/455                            PAGE 10   
C'T TEXT-TERMINAL SOFTWARE V2.2

                
                ; HOME CURSOR.
                
 12F4 9A        HOM:    MOV     A,HOME
 12F5 8B                MOV     CURS,A          ; CURSOR AUF HOME-POSTION SETZEN
 12F6 2301      HOM0:   MOV     A,#1
 12F8 AD                MOV     R5,A
 12F9 AE                MOV     R6,A            ; ZEILE UND SPALTE AUF 1
 12FA C5        HOMX:   SEL     MB0
 12FB 0410              JMP     HLOOP
                
                ;**********************************************************
                ;**                                                      **
                ;**       ES FOLGT DER EMULATIONS-SPEZIFISCHE TEIL       **
                ;**                                                      **
                ;**********************************************************
                
                ; HIER WERDEN DIE CONTROL-CODES AUSGEWERTET. NICHT IMPLEMEN-
                ; TIERTE CODES WERDEN IGNORIERT.
                
 12FD FB        CTLCOD: MOV     A,R3            ; ZEICHEN
 12FE 537F              ANL     A,#7FH          ; NUR 7 BIT G]LTIG
 1300 AB                MOV     R3,A            ; NACH R3 ZUR WEITEREN BEARB.
 1301 D31B              XRL     A,#ESC          ; ESCAPE ?
 1303 C619              JZ      ESCSEQ
 1305 BA82              MOV     R2,#LOW(TV950C)
 1307 FA        CTLCD1: MOV     A,R2            ; R2 ZEIGT AUF TABELLE
 1308 74D0              CALL    GETTR           ; ERSTES ZEICHEN AUS TABELLE
 130A C643              JZ      IGNORE          ; 0 = TABELLENENDE
 130C 1A                INC     R2              ; ZEIGER AUF ERGEBNIS
 130D DB                XRL     A,R3
 130E C613              JZ      FOUND           ; EINGANG ERKANNT
 1310 1A                INC     R2
 1311 6407              JMP     CTLCD1          ; SONST WEITERSUCHEN
 1313 FA        FOUND:  MOV     A,R2
 1314 74D0              CALL    GETTR           ; ERGEBNIS AUS TABELLE
 1316 0321      CTLCD2: ADD     A,#LOW(INDTAB)
 1318 A3                JMPP    @A              ; DURCH TABELLE ANSPRINGEN
                
 1319 C5        ESCSEQ: SEL     MB0             ; ESC-SEQUENZ:
 131A 140C              CALL    CI              ; N[CHSTES ZEICHEN HOLEN
 131C E5                SEL     MB2
 131D BA97              MOV     R2,#LOW(TV950E)
 131F 6407              JMP     CTLCD1          ; WIE CONTROLCODE VERARBEITEN
                
                ; INDIREKTE SPRUNGTABELLE F]R CONTROL-/ESCAPE- CODES.
                
 1321 4146484A  INDTAB: DB      CODE00,CODE01,CODE02,CODE03,CODE04,CODE05
 1327 50525456          DB      CODE06,CODE07,CODE08,CODE09,CODE10,CODE11
 132D 5C5E6062          DB      CODE12,CODE13,CODE14,CODE15,CODE16,CODE17
 1333 686A6C6E          DB      CODE18,CODE19,CODE20,CODE21,CODE22,CODE23
 1339 7476787A          DB      CODE24,CODE25,CODE26,CODE27,CODE28,CODE29
 133F 8043              DB      CODE30,IGNORE
                
                ; TATS[CHLICHE SPRUNGTABELLE F]R GR\SSERE SPRUNGDISTANZEN.
                
 1341 34ED      CODE00: CALL    BELL            ; PULS AN GLOCKE AUSGEBEN
 1343 C5        IGNORE: SEL     MB0
 1344 0410              JMP     HLOOP           ; UNERKANNTEN CODE IGNORIEREN
                
 1346 4464      CODE01: JMP     BSP             ; BACKSPACE (CURSOR LEFT)
 1348 44E9      CODE02: JMP     HZT             ; HORIZONTAL-TABULATOR
 134A 44B6      CODE03: JMP     LFD             ; LINE FEED
 134C 4434      CODE04: JMP     CUP             ; CURSOR UP
 134E 4481      CODE05: JMP     CRG             ; CURSOR RIGHT
 1350 44AE      CODE06: JMP     CAR             ; CARRIAGE RETURN
REH NS455 CROSS-ASSEMBLER - VERSION 1.2 - 03.08.89  18:08:40

TV950-EMULATION F]R TERMINAL MIT NS405/455                            PAGE 11   
C'T TEXT-TERMINAL SOFTWARE V2.2

 1352 4456      CODE07: JMP     CDN             ; CURSOR DOWN
 1354 44E5      CODE08: JMP     FFD             ; FORM FEED (PAGE CLEAR)
 1356 44F4      CODE09: JMP     HOM             ; CURSOR HOME
 1358 64D2      CODE10: JMP     CATTST          ; CURSOR ATTRIBUT SETZEN
 135A 840F      CODE11: JMP     CURSET          ; CURSOR SETZEN (ROW,COLUMN)
 135C 8436      CODE12: JMP     CURASK          ; CURSORPOSITION AUSGEBEN (R,C)
 135E 844A      CODE13: JMP     SETMOD          ; SET LOCAL/FDX/HDX MODE
 1360 8461      CODE14: JMP     CHRINS          ; CHARACTER INSERT
 1362 847C      CODE15: JMP     CHRDEL          ; CHARACTER DELETE
 1364 84C1      CODE16: JMP     LININS          ; LINE INSERT
 1366 84F5      CODE17: JMP     LINDEL          ; LINE DELETE
 1368 A426      CODE18: JMP     ERAEOL          ; ERA TO END OF LINE
 136A A435      CODE19: JMP     ERAEOS          ; ERA TO END OF SCREEN
 136C A469      CODE20: JMP     NATSET          ; ZEICHENSATZ W[HLEN
 136E A48A      CODE21: JMP     HALFON          ; HALF INTENSITY ON
 1370 A493      CODE22: JMP     HALFOF          ; HALF INTENSITY OFF
 1372 A49C      CODE23: JMP     REVON           ; REVERSE SCREEN ON
 1374 A4A3      CODE24: JMP     REVOFF          ; REVERSE SCREEN OFF
 1376 A4AA      CODE25: JMP     ATTSET          ; VIDEO-ATTRIBUTE SETZEN
 1378 84B8      CODE26: JMP     CTLON           ; CONTROL MODE ON
 137A A4D2      CODE27: JMP     BAKTAB          ; BACK-TAB
 137C A4DD      CODE28: JMP     BODSET          ; BAUDRATE [NDERN
 137E C414      CODE29: JMP     SETCLK          ; UHR STELLEN
 1380 C433      CODE30: JMP     ASKCLK          ; UHR ABFRAGEN
                
                ; TRANSFORMATIONSTABELLEN F]R CONTROL-CODES.
                
 1382 07000801  TV950C: DB      7,0,8,1,9,2,0AH,3,0BH,4,0CH,5,0DH,6,16H,7
 1392 1A081E09          DB      1AH,8,1EH,9,0
                
                ; TRANSFORMATIONSTABELLEN F]R ESCAPE-CODES.
                
 1397 2E0A3D0B  TV950E: DB      '.',10,'=',11,'?',12,'D',13,'Q',14,'W',15,'E',16
 13A5 52115412          DB      'R',17,'T',18,'t',18,'Y',19,'y',19,'z',20,')',21
 13B3 28166217          DB      '(',22,'b',23,'d',24,'G',25,'U',26,'+',8,'*',8
 13C1 3B083A08          DB      ';',8,':',8,',',8,'I',27,'{',28,'m',29,'n',30,0
                
 13D0 B3        GETTR:  MOVP    A,@A            ; ZEICHEN AUS TABELLE
 13D1 83                RET                     ; UND ZUR]CK
                
                ; CATTST SETZT CURSOR-ATTRIBUTE, VER[NDERT AUCH REG4.
                
 13D2 C5        CATTST: SEL     MB0             ; ALLE CALL/JUMP IN BANK 0 !
 13D3 140C              CALL    CI              ; WERT HOLEN
 13D5 FB                MOV     A,R3
 13D6 03D0              ADD     A,#-'0'         ; OFFSET SUBTRAHIEREN
 13D8 C6F6              JZ      CATTS1          ; ATTR. 0 : CURSOR OFF
 13DA E6F4              JNC     CATTSX          ; WERT ZU KLEIN
 13DC AB                MOV     R3,A            ; NORMIERT NACH R3
 13DD 03FB              ADD     A,#-5
 13DF F6F4              JC      CATTSX          ; WERT ZU GROSS
 13E1 B938              MOV     R1,#REG4
 13E3 FB                MOV     A,R3            ; NORMIERTES ATTRIBUT
 13E4 07                DEC     A
 13E5 D302              XRL     A,#2            ; BLOCK/STRICH TAUSCHEN
 13E7 E7                RL      A               ; NACH LINKS F]R REG4
 13E8 AA                MOV     R2,A
 13E9 F1                MOV     A,@R1           ; REG4 LESEN
 13EA 53F9              ANL     A,#0F9H         ; CURS.ATTR. WEGBLENDEN
 13EC 4A                ORL     A,R2            ; NEUE WERTE EINSETZEN
 13ED A1                MOV     @R1,A           ; REG4 ABSPEICHERN
 13EE FF                MOV     A,R7            ; BOOLEAN FLAG
 13EF 53F7              ANL     A,#0F7H         ; CUROFF R]CKSETZEN
 13F1 AF                MOV     R7,A
 13F2 140A              CALL    INIT            ; NEU INIT.
 13F4 0410      CATTSX: JMP     HLOOP
REH NS455 CROSS-ASSEMBLER - VERSION 1.2 - 03.08.89  18:08:40

TV950-EMULATION F]R TERMINAL MIT NS405/455                            PAGE 12   
C'T TEXT-TERMINAL SOFTWARE V2.2

                
 13F6 FF        CATTS1: MOV     A,R7            ; BOOLEAN FLAG
 13F7 4308              ORL     A,#8            ; CURSOR OFF
 13F9 AF                MOV     R7,A
 13FA 140A              CALL    INIT            ; NEU INIT.
 13FC 0410              JMP     HLOOP
                
                ; CNORM NORMIERT ASCII-ANGABEN F]R CURSORPOSITIONIERUNG.
                ; R1 MUSS AUF SPEICHERZELLE MIT MAXIMALWERT ZEIGEN.
                
 13FE FB        CNORM:  MOV     A,R3            ; WERT ALS ASCII-ZEICHEN
 13FF 03E0              ADD     A,#-' '         ; OFFSET SUBTRAHIEREN
 1401 E60A              JNC     CNORM1          ; < 0 : MIT 0 ZUR]CK
 1403 AB                MOV     R3,A            ; NORMIERT NACH R3
 1404 37                CPL     A
 1405 61                ADD     A,@R1           ; ]BER MAXIMALWERT ?
 1406 E60C              JNC     CNORM2
 1408 FB                MOV     A,R3            ; SONST WERT UNVER[NDERT
 1409 83                RET
 140A 27        CNORM1: CLR     A
 140B 83                RET                     ; MIT WERT 0 ZUR]CK (MINIMUM)
 140C F1        CNORM2: MOV     A,@R1           ; BEGRENZEN AUF MAXIMUM
 140D 07                DEC     A
 140E 83                RET
                
                ; CURSET SETZT CURSOR AN DIREKT ANGEGEBENE STELLE.
                
 140F C5        CURSET: SEL     MB0
 1410 140C              CALL    CI              ; ZEILE
 1412 E5                SEL     MB2
 1413 B935              MOV     R1,#ROWNUM      ; MAXIMUM
 1415 74FE              CALL    CNORM           ; NORMIEREN
 1417 AC                MOV     R4,A            ; ZEILE-1 IN R4
 1418 17                INC     A
 1419 AD                MOV     R5,A            ; NEUE ZEILE
 141A C5                SEL     MB0
 141B 140C              CALL    CI              ; SPALTE
 141D E5                SEL     MB2
 141E B934              MOV     R1,#ROWLEN      ; MAXIMUM
 1420 F1                MOV     A,@R1
 1421 AA                MOV     R2,A            ; L[NGE NACH R2 F]R LNFEED
 1422 74FE              CALL    CNORM
 1424 17                INC     A
 1425 AE                MOV     R6,A            ; SPALTE
 1426 9A                MOV     A,HOME
 1427 8B                MOV     CURS,A          ; CURSOR AUF HOME-POSITION
 1428 FC                MOV     A,R4
 1429 C62F              JZ      COLSET          ; ZEILE 1 : DIREKT SPALTE SETZEN
 142B 9497      ROWSET: CALL    LNFEED          ; ZEILENVORSCHUB
 142D EC2B              DJNZ    R4,ROWSET
 142F 9B        COLSET: MOV     A,CURS
 1430 6E                ADD     A,R6            ; SPALTE ADDIEREN
 1431 07                DEC     A               ; SPALTE AB 1 GEZ[HLT
 1432 8B                MOV     CURS,A
 1433 C5                SEL     MB0
 1434 0410              JMP     HLOOP
                
                ; CURASK GIBT AUGENBLICKLICHE CURSORPOSITION AN HOST.
                
 1436 FD        CURASK: MOV     A,R5            ; ZEILE
 1437 031F              ADD     A,#' '-1        ; ASCII-OFFSET
 1439 AB                MOV     R3,A
 143A C5                SEL     MB0
 143B 140E              CALL    CO              ; AUSGEBEN
 143D FE                MOV     A,R6            ; SPALTE
 143E 031F              ADD     A,#' '-1
REH NS455 CROSS-ASSEMBLER - VERSION 1.2 - 03.08.89  18:08:40

TV950-EMULATION F]R TERMINAL MIT NS405/455                            PAGE 13   
C'T TEXT-TERMINAL SOFTWARE V2.2

 1440 AB                MOV     R3,A
 1441 140E              CALL    CO              ; AUSGEBEN
 1443 BB0D              MOV     R3,#CR
 1445 140E              CALL    CO              ; CARRIAGE RETURN ALS ABSCHLUSS
 1447 C5        CURASX: SEL     MB0
 1448 0410              JMP     HLOOP
                
                ; LOCAL-MODUS SETZEN (ESC D L). WENN 2.BYTE NICHT L IST, WIRD
                ; NORMALER ONLINE-MODE EINGESTELLT.
                
 144A C5        SETMOD: SEL     MB0
 144B 140C              CALL    CI              ; N[CHSTEN BUCHSTABEN HOLEN
 144D E5                SEL     MB2
 144E FB                MOV     A,R3
 144F D34C              XRL     A,#'L'          ; LOCAL ?
 1451 D658              JNZ     SETMD1
 1453 FF                MOV     A,R7            ; BOOLEAN FLAG
 1454 4301              ORL     A,#1            ; LOCAL SETZEN
 1456 845B              JMP     SETMDX
 1458 FF        SETMD1: MOV     A,R7            ; BOOLEAN FLAG
 1459 53FE              ANL     A,#0FEH         ; LOCAL R]CKSETZEN
 145B AF        SETMDX: MOV     R7,A
 145C 341A              CALL    STMODE          ; STATUSZEILE !
 145E C5                SEL     MB0
 145F 0410              JMP     HLOOP
                
                ; CHARACTER INSERT. AN DER CURSORPOSITION WIRD EIN SPACE
                ; EINGEF]GT, ALLE WEITEREN ZEICHEN WERDEN NACH RECHTS GESCHOBEN.
                
 1461 B934      CHRINS: MOV     R1,#ROWLEN
 1463 FE                MOV     A,R6            ; SPALTE
 1464 37                CPL     A
 1465 17                INC     A               ; -SPALTE
 1466 61                ADD     A,@R1           ; ROWLEN-SPALTE
 1467 C675              JZ      CINSX           ; ANZAHL 0: SPC EINSETZEN
 1469 AA                MOV     R2,A            ; ANZAHL NACH R2
 146A 9B                MOV     A,CURS
 146B 6A                ADD     A,R2            ; LETZTE STELLE DER ZEILE
 146C 89                MOVL    R1,A            ; R1 : ZIEL
 146D 07                DEC     A
 146E 88                MOVL    R0,A            ; R0 : QUELLE
 146F 90        CINS1:  MOVX    A,@R0
 1470 81                MOVX    @R1,A           ; MOVE
 1471 08                DECL    R0
 1472 09                DECL    R1
 1473 EA6F              DJNZ    R2,CINS1
 1475 9D        CINSX:  MOVX    A,@CURS         ; ZEICHEN LESEN (ATTRIBUTE!)
 1476 2320              MOV     A,#' '
 1478 8D                MOVX    @CURS,A         ; AN CURSORPOS. SPACE
 1479 C5                SEL     MB0
 147A 0410              JMP     HLOOP
                
                ; CHARACTER DELETE. ALLE ZEICHEN RECHTS DES CURSORS WERDEN
                ; UM EINEN PLATZ NACH LINKS VERSCHOBEN.
                
 147C B934      CHRDEL: MOV     R1,#ROWLEN
 147E FE                MOV     A,R6
 147F 37                CPL     A
 1480 17                INC     A               ; -SPALTE
 1481 61                ADD     A,@R1           ; ROWLEN-SPALTE
 1482 D686              JNZ     CDEL9
 1484 8475              JMP     CINSX           ; BEI ANZAHL 0 SPC EINS.
 1486 AA        CDEL9:  MOV     R2,A            ; ANZAHL
 1487 9B                MOV     A,CURS
 1488 89                MOVL    R1,A            ; R1 : ZIEL
 1489 17                INC     A
REH NS455 CROSS-ASSEMBLER - VERSION 1.2 - 03.08.89  18:08:40

TV950-EMULATION F]R TERMINAL MIT NS405/455                            PAGE 14   
C'T TEXT-TERMINAL SOFTWARE V2.2

 148A 88                MOVL    R0,A            ; R0 : QUELLE
 148B 90        CDEL1:  MOVX    A,@R0
 148C 81                MOVX    @R1,A           ; MOVE
 148D 38                INCL    R0
 148E 39                INCL    R1
 148F EA8B              DJNZ    R2,CDEL1
 1491 2320              MOV     A,#' '          ; SPACE (ATTRIBUTE UNVER[ND.)
 1493 81                MOVX    @R1,A           ; DAHINTER SPACE
 1494 C5                SEL     MB0
 1495 0410              JMP     HLOOP
                
                ; LNFEED BEWIRKT CURSORVERSCHIEBUNG NACH UNTEN, DIE ZEILENL[NGE
                ; MUSS IN R2 ENTHALTEN SEIN. DER CURSOR MUSS AUF EINEM ZEILEN-
                ; ANFANG STEHEN !
                
 1497 9B        LNFEED: MOV     A,CURS
 1498 6A                ADD     A,R2
 1499 8B                MOV     CURS,A          ; CURSOR 1 ZEILE WEITER
 149A 5410              CALL    EODCHK          ; SPEICHERENDE ?
 149C E6A1              JNC     LNFDX
 149E 27                CLR     A
 149F C2                MOV     HACC,A
 14A0 8B                MOV     CURS,A          ; BEI BILDENDE WIEDER AUF 0
 14A1 83        LNFDX:  RET
                
                ; CURSUP BEWIRKT CURSORVERSCHIEBUNG 1 ZEILE NACH OBEN. ZEILEN-
                ; L[NGE IN R2, CURSOR MUSS AUF ZEILENANFANG STEHEN.
                
 14A2 FA        CURSUP: MOV     A,R2
 14A3 AB                MOV     R3,A            ; ZEILENL[NGE
 14A4 0A        CURSU1: DEC     CURS
 14A5 EBA4              DJNZ    R3,CURSU1       ; CURSOR 1 ZEILE H\HER
 14A7 9B                MOV     A,CURS
 14A8 5426              CALL    TODCHK          ; OB. SPEICHERENDE ?
 14AA E6B7              JNC     CURSUX          ; RETURN
 14AC B837              MOV     R0,#ENDHI
 14AE F0                MOV     A,@R0
 14AF 07                DEC     A               ; HACC 1 ZU NIEDRIG !
 14B0 C2                MOV     HACC,A
 14B1 C8                DEC     R0
 14B2 FA                MOV     A,R2            ; ZEILENL[NGE
 14B3 37                CPL     A
 14B4 17                INC     A
 14B5 60                ADD     A,@R0           ; ADRESSE DES ZEILENANFANGS
 14B6 8B                MOV     CURS,A
 14B7 83        CURSUX: RET
                
                ; CONTROL MODE ON.
                
 14B8 FF        CTLON:  MOV     A,R7
 14B9 4302              ORL     A,#2            ; BOOLEAN FLAG BIT 1 SETZEN
 14BB AF                MOV     R7,A            ; R7 SPEICHERN, STATUSZ. ANZ.
 14BC 1488              CALL    STCTL           ; NEUEN STATUS ANZEIGEN
 14BE C5                SEL     MB0
 14BF 0410              JMP     HLOOP
                
                ; LINE INSERT. DIE CURSORZEILE WIRD NACH UNTEN GESCHOBEN,
                ; ES WIRD EINE NEUE LEERZEILE EINGESETZT.
                
 14C1 0A        LININS: DEC     CURS
 14C2 EEC1              DJNZ    R6,LININS       ; CARRIAGE RETURN
 14C4 3A                INC     CURS
 14C5 B934              MOV     R1,#ROWLEN
 14C7 F1                MOV     A,@R1
 14C8 AA                MOV     R2,A            ; ZEILENL[NGE IN R2
 14C9 19                INC     R1              ; -> ROWNUM
REH NS455 CROSS-ASSEMBLER - VERSION 1.2 - 03.08.89  18:08:40

TV950-EMULATION F]R TERMINAL MIT NS405/455                            PAGE 15   
C'T TEXT-TERMINAL SOFTWARE V2.2

 14CA FD                MOV     A,R5            ; ZEILE
 14CB 37                CPL     A               ; -ZEILE-1
 14CC 17                INC     A
 14CD 61                ADD     A,@R1           ; ROWNUM-ZEILE
 14CE D6D2              JNZ     LINS9
 14D0 A421              JMP     CURDEL          ; 0 : CURSORZEILE L\SCHEN
 14D2 AE        LINS9:  MOV     R6,A
 14D3 17                INC     A
 14D4 AC                MOV     R4,A
 14D5 9497      LINS1:  CALL    LNFEED          ; EINE ZEILE WEITER
 14D7 EED5              DJNZ    R6,LINS1        ; AUF LETZTE ZEILE
 14D9 84E3              JMP     LINS4           ; POINTER SETZEN USW
 14DB FA        LINS2:  MOV     A,R2
 14DC AB                MOV     R3,A            ; R3 Z[HLER INNERE SCHLEIFE
 14DD 90        LINS3:  MOVX    A,@R0
 14DE 81                MOVX    @R1,A
 14DF 38                INCL    R0
 14E0 39                INCL    R1
 14E1 EBDD              DJNZ    R3,LINS3        ; ZEILE NACH UNTEN VERSCHIEBEN
 14E3 9B        LINS4:  MOV     A,CURS          ; VORIGE QUELLZEILE
 14E4 89                MOVL    R1,A            ; JETZIGE ZIELZEILE
 14E5 94A2              CALL    CURSUP          ; CURSOR 1 ZEILE H\HER
 14E7 9B                MOV     A,CURS          ; JETZIGE CURSORZEILE
 14E8 88                MOVL    R0,A            ; NEUE QUELLZEILE
 14E9 ECDB              DJNZ    R4,LINS2        ; DAS GANZE F]R ALLE ZEILEN
 14EB 9497              CALL    LNFEED          ; CURSOR WIEDER 1 RUNTER
 14ED 9B                MOV     A,CURS
 14EE 34DE              CALL    CLRLIN          ; CURSORZEILE L\SCHEN
 14F0 BE01      LINSX:  MOV     R6,#1           ; SPALTE 1
 14F2 C5                SEL     MB0
 14F3 0410              JMP     HLOOP
                
                ; LINE DELETE. DIE AKTUELLE CURSORZEILE WIRD GEL\SCHT, ALLE
                ; WEITEREN R]CKEN VON UNTEN NACH.
                
 14F5 0A        LINDEL: DEC     CURS
 14F6 EEF5              DJNZ    R6,LINDEL       ; CARRIAGE RETURN
 14F8 3A                INC     CURS
 14F9 B934              MOV     R1,#ROWLEN
 14FB F1                MOV     A,@R1
 14FC AA                MOV     R2,A            ; ZEILENL[NGE NACH R2
 14FD 19                INC     R1
 14FE FD                MOV     A,R5            ; ZEILE
 14FF 37                CPL     A
 1500 17                INC     A               ; -ZEILE
 1501 61                ADD     A,@R1           ; ROWNUM-ZEILE = ANZAHL
 1502 C621              JZ      CURDEL          ; 0 : NUR CURSORZEILE L\SCHEN
 1504 AC                MOV     R4,A
 1505 AE                MOV     R6,A
 1506 9B        LDEL1:  MOV     A,CURS
 1507 88                MOVL    R0,A            ; ZIELZEILE
 1508 9497              CALL    LNFEED
 150A 9B                MOV     A,CURS
 150B 89                MOVL    R1,A            ; QUELLZEILE
 150C FA                MOV     A,R2
 150D AB                MOV     R3,A            ; ANZAHL
 150E 91        LDEL2:  MOVX    A,@R1
 150F 80                MOVX    @R0,A
 1510 38                INCL    R0
 1511 39                INCL    R1
 1512 EB0E              DJNZ    R3,LDEL2        ; MOVE
 1514 EC06              DJNZ    R4,LDEL1        ; F]R ALLE ZEILEN
 1516 9B                MOV     A,CURS
 1517 34DE              CALL    CLRLIN          ; UNTERSTE ZEILE L\SCHEN
 1519 F1                MOV     A,@R1
 151A AA                MOV     R2,A            ; ZEILENL[NGE WIEDER NACH R2
REH NS455 CROSS-ASSEMBLER - VERSION 1.2 - 03.08.89  18:08:40

TV950-EMULATION F]R TERMINAL MIT NS405/455                            PAGE 16   
C'T TEXT-TERMINAL SOFTWARE V2.2

 151B 94A2      LDEL3:  CALL    CURSUP
 151D EE1B              DJNZ    R6,LDEL3        ; CURSOR WIEDER NACH OBEN
 151F 84F0              JMP     LINSX           ; SPALTE 1, RETURN
                
 1521 9B        CURDEL: MOV     A,CURS
 1522 34DE              CALL    CLRLIN          ; CURSORZEILE L\SCHEN
 1524 84F0              JMP     LINSX           ; SPALTE 1, RETURN
                
                ; ERAEOL L\SCHT AKTUELLE ZEILE VON CURSORPOSITION BIS ENDE.
                
 1526 B934      ERAEOL: MOV     R1,#ROWLEN
 1528 FE                MOV     A,R6            ; SPALTE
 1529 37                CPL     A
 152A 17                INC     A
 152B 61                ADD     A,@R1           ; ROWLEN-SPALTE
 152C 17                INC     A               ; ANZAHL, MIN. 1
 152D AA                MOV     R2,A
 152E 9B                MOV     A,CURS
 152F 88                MOVL    R0,A            ; NACH R0 F]R CLRLIN
 1530 34E3              CALL    CLRLN0          ; REST DER ZEILE L\SCHEN
 1532 C5                SEL     MB0
 1533 0410              JMP     HLOOP
                
                ; ERAEOS L\SCHT AKTUELLE SEITE VON CURSORPOSITION BIS ENDE.
                
 1535 B934      ERAEOS: MOV     R1,#ROWLEN
 1537 FE                MOV     A,R6            ; SPALTE
 1538 37                CPL     A
 1539 17                INC     A
 153A 61                ADD     A,@R1           ; ROWLEN-SPALTE
 153B 17                INC     A               ; ANZAHL
 153C AA                MOV     R2,A
 153D 9B                MOV     A,CURS
 153E 88                MOVL    R0,A            ; NACH R0 F]R CLRLIN
 153F 34E3              CALL    CLRLN0          ; REST DER ZEILE L\SCHEN
 1541 F1                MOV     A,@R1
 1542 AA                MOV     R2,A            ; ZEILENL[NGE NACH R2
 1543 19                INC     R1
 1544 FD                MOV     A,R5            ; ZEILE
 1545 37                CPL     A
 1546 17                INC     A
 1547 61                ADD     A,@R1           ; ROWNUM-ZEILE = ANZAHL
 1548 C666              JZ      EOSX
 154A AC                MOV     R4,A
 154B 9B                MOV     A,CURS
 154C 88                MOVL    R0,A            ; ALTE CURSORPOS. RETTEN
 154D FE                MOV     A,R6
 154E AB                MOV     R3,A            ; ANZAHL F]R CR
 154F 0A        EOS1:   DEC     CURS
 1550 EB4F              DJNZ    R3,EOS1         ; CARRIAGE RETURN
 1552 3A                INC     CURS            ; KORREKTUR WEIL 1 ZUVIEL
 1553 9497      EOS2:   CALL    LNFEED          ; EINE ZEILE WEITER
 1555 9B                MOV     A,CURS
 1556 89                MOVL    R1,A
 1557 FA                MOV     A,R2
 1558 AB                MOV     R3,A            ; L[NGE NACH R3
 1559 23FF              MOV     A,#0FFH         ; KEINE ATTRIBUTE
 155B C2                MOV     HACC,A
 155C 2320              MOV     A,#' '          ; BLANK
 155E 81        EOS3:   MOVX    @R1,A
 155F 39                INCL    R1
 1560 EB5E              DJNZ    R3,EOS3         ; GANZE ZEILE L\SCHEN
 1562 EC53              DJNZ    R4,EOS2         ; ALLE UNTEREN ZEILEN
 1564 98                MOVL    A,R0
 1565 8B                MOV     CURS,A          ; ALTE CURSORPOSITION
 1566 C5        EOSX:   SEL     MB0
REH NS455 CROSS-ASSEMBLER - VERSION 1.2 - 03.08.89  18:08:40

TV950-EMULATION F]R TERMINAL MIT NS405/455                            PAGE 17   
C'T TEXT-TERMINAL SOFTWARE V2.2

 1567 0410              JMP     HLOOP
                
                ; NATSET SCHALTET AUF NEUEN ZEICHENSATZ UM.
                
 1569 C5        NATSET: SEL     MB0
 156A 140C              CALL    CI              ; ARGUMENT
 156C E5                SEL     MB2
 156D FB                MOV     A,R3
 156E 03D0              ADD     A,#-'0'         ; OFFSET SUBTRAHIEREN
 1570 E666              JNC     EOSX            ; WERT ZU KLEIN
 1572 AB                MOV     R3,A
 1573 03F8              ADD     A,#-8
 1575 F666              JC      EOSX            ; WERT ZU GROSS
 1577 FB                MOV     A,R3
 1578 E7                RL      A
 1579 AB                MOV     R3,A
 157A B939              MOV     R1,#REG5
 157C F1                MOV     A,@R1           ; REG5
 157D 53F1              ANL     A,#0F1H         ; NATVAR AUSBLENDEN
 157F 4B                ORL     A,R3            ; NEUEN ZEICHENSATZ EINSETZEN
 1580 A1        SETBAK: MOV     @R1,A           ; REG5 SPEICHERN
 1581 C5                SEL     MB0
 1582 140A              CALL    INIT            ; NEU INITIALISIEREN
 1584 E5                SEL     MB2
 1585 1420              CALL    STSET           ; NATIONALIT[T ANZEIGEN
 1587 C5        NATSTX: SEL     MB0
 1588 0410              JMP     HLOOP
                
                ; ATTRIBUTE SETZEN : HALF INTENSITY ON/OFF.
                
 158A B932      HALFON: MOV     R1,#CURATT      ; CURRENT ATTRIBUTE
 158C F1                MOV     A,@R1
 158D 53FD              ANL     A,#0FDH         ; HALF INTENSITY SETZEN
 158F A1                MOV     @R1,A
 1590 C5                SEL     MB0
 1591 0410              JMP     HLOOP
                
 1593 B932      HALFOF: MOV     R1,#CURATT
 1595 F1                MOV     A,@R1
 1596 4302              ORL     A,#2            ; HALF INTENSITY L\SCHEN
 1598 A1                MOV     @R1,A
 1599 C5                SEL     MB0
 159A 0410              JMP     HLOOP
                
                ; GANZER SCHIRM REVERSE VIDEO / NORMAL VIDEO.
                
 159C B938      REVON:  MOV     R1,#REG4
 159E F1                MOV     A,@R1
 159F 4308              ORL     A,#8            ; SET REVERSE VIDEO
 15A1 A480              JMP     SETBAK          ; NEU INIT, HLOOP
                
 15A3 B938      REVOFF: MOV     R1,#REG4
 15A5 F1                MOV     A,@R1
 15A6 53F7              ANL     A,#0F7H         ; SET NORMAL VIDEO
 15A8 A480              JMP     SETBAK          ; NEU INIT, HLOOP
 15AA                   
                ; ATTSET SETZT ZEICHENATTRIBUTE ('CURATT'). DIR ATTRIBUTE
                ; WERDEN CODIERT IN EINEM ASCII-ZEICHEN AB 30H ('0') ]BERGEBEN.
                ; NACH SUBTRAKTION DIESES WERTES GELTEN DIE FOLGENDEN REGELN :
                ; BIT 0 GESETZT : BLANK
                ; BIT 1 GESETZT : BLINK
                ; BIT 2 GESETZT : REVERSE VIDEO
                ; BIT 3 GESETZT : UNDERLINE
                ; BIT 4 GESETZT : DOUBLE WIDTH
                ; BIT 5 GESETZT : DOUBLE HEIGHT
                ; BIT 6 GESETZT : GRAPHICS
REH NS455 CROSS-ASSEMBLER - VERSION 1.2 - 03.08.89  18:08:40

TV950-EMULATION F]R TERMINAL MIT NS405/455                            PAGE 18   
C'T TEXT-TERMINAL SOFTWARE V2.2

                ; IN DEN MODI DOUBLE WIDTH/HEIGHT WERDEN AUTOMATISCH DIE ZEICHEN
                ; NACH RECHTS BZW. OBEN EXPANDIERT !
                ; DAS HALF-INTENSITY-ATTRIBUT WIRD NICHT VER[NDERT.
                
 15AA C5        ATTSET: SEL     MB0
 15AB 140C              CALL    CI              ; ARGUMENT
 15AD E5                SEL     MB2
 15AE B932              MOV     R1,#CURATT
 15B0 F1                MOV     A,@R1           ; ALTEN WERT HOLEN
 15B1 43FD              ORL     A,#0FDH         ; NUR HALF INTEN BLEIBT
 15B3 AC                MOV     R4,A            ; NACH R4
 15B4 FB                MOV     A,R3            ; ZEICHEN (ARGUMENT)
 15B5 03D0              ADD     A,#-'0'         ; OFFSET SUBTRAHIEREN
 15B7 BA07              MOV     R2,#7           ; Z[HLER
 15B9 67        ATTST1: RRC     A               ; RECHTES BIT INS CARRY
 15BA E6C4              JNC     ATTST2          ; FALLS BIT=0, TEIL ]BERSPR.
 15BC AB                MOV     R3,A            ; ACCU RETTEN
 15BD 23CA              MOV     A,#LOW(VATTAB-1)
 15BF 6A                ADD     A,R2            ; ZEIGER AUF BITZUORDNUNG
 15C0 B3                MOVP    A,@A
 15C1 5C                ANL     A,R4            ; ENTSPR. BIT R]CKSETZEN
 15C2 AC                MOV     R4,A
 15C3 FB                MOV     A,R3            ; ACCU WIEDERHOLEN
 15C4 EAB9      ATTST2: DJNZ    R2,ATTST1       ; F]R ALLE 7 BIT
 15C6 FC                MOV     A,R4
 15C7 A1                MOV     @R1,A           ; NEUE ATTRIBUTE ABSPEICHERN
 15C8 C5                SEL     MB0
 15C9 0410              JMP     HLOOP
                
 15CB 7FF7EFDF  VATTAB: DB      7FH,0F7H,0EFH,0DFH,0FEH,0FBH,0BFH
                
                ; BACK-TAB.
                
 15D2 5469      BAKTAB: CALL    CLEFT           ; CURSOR NACH LINKS
 15D4 FE                MOV     A,R6            ; SPALTE
 15D5 07                DEC     A               ; AB 0
 15D6 5307              ANL     A,#7
 15D8 D6D2              JNZ     BAKTAB          ; BIS AUF TAB-SPALTE
 15DA C5                SEL     MB0
 15DB 0410      BAKTBX: JMP     HLOOP
                
                ; BAUDRATE UND KOMMUNIKATIONSPARAMETER NACHTR[GLICH [NDERN.
                
 15DD C5        BODSET: SEL     MB0             ; ALLE CALL'S NACH MB0
 15DE 140C              CALL    CI              ; 1. PARAMETER: BAUD RATE
 15E0 FB                MOV     A,R3
 15E1 530F              ANL     A,#0FH          ; UNTERES NIBBLE G]LTIG
 15E3 D6E7              JNZ     BODST1
 15E5 230E              MOV     A,#14           ; 0 : 9600 BD
 15E7 03FD      BODST1: ADD     A,#-3           ; UMRECHNEN, 50 UND 75 WEG
 15E9 E6DB              JNC     BAKTBX          ; 50 BZW. 75 : IGNORIEREN
 15EB 47                SWAP    A               ; -> HIGH NIBBLE
 15EC AC                MOV     R4,A
 15ED 140C              CALL    CI              ; 2. PARAMETER: STOP BITS
 15EF FB                MOV     A,R3
 15F0 5301              ANL     A,#1            ; 1 G]LTIGES BIT
 15F2 4C                ORL     A,R4
 15F3 AC                MOV     R4,A            ; EINSETZEN
 15F4 140C              CALL    CI              ; 3. PARAMETER: PARITY
 15F6 FB                MOV     A,R3
 15F7 5307              ANL     A,#7            ; 3 BIT G]LTIG
 15F9 E7                RL      A
 15FA 4C                ORL     A,R4            ; EINSETZEN
 15FB B93A              MOV     R1,#REG6
 15FD A1                MOV     @R1,A           ; NEUER WERT VON REG6
 15FE 140C              CALL    CI              ; 4. PARAMETER: WORD LENGTH
REH NS455 CROSS-ASSEMBLER - VERSION 1.2 - 03.08.89  18:08:40

TV950-EMULATION F]R TERMINAL MIT NS405/455                            PAGE 19   
C'T TEXT-TERMINAL SOFTWARE V2.2

 1600 FB                MOV     A,R3
 1601 37                CPL     A               ; POLARIT[T ANDERS
 1602 5301              ANL     A,#1            ; 1 G]LTIGES BIT
 1604 AB                MOV     R3,A
 1605 B939              MOV     R1,#REG5
 1607 F1                MOV     A,@R1           ; ALTER WERT REG5
 1608 53FE              ANL     A,#0FEH
 160A 4B                ORL     A,R3
 160B A1                MOV     @R1,A           ; NEUER WERT REG5
 160C 140A              CALL    INIT            ; ENTSPRECHEND INIT.
 160E E5                SEL     MB2
 160F 1420              CALL    STSET           ; STATUSZEILE [NDERN
 1611 C5                SEL     MB0
 1612 0410              JMP     HLOOP           ; ZUR]CK ZUR HAUPTSCHLEIFE
                
                ; UHR IN STATUSZEILE SETZEN BZW. ABFRAGEN.
                ; DATENFORMAT: HMS BCD MIT OFFSET 20H (' ').
                
 1614 C5        SETCLK: SEL     MB0             ; ALLE CALLS IN BASIS-TEIL
 1615 140C              CALL    CI
 1617 FB                MOV     A,R3            ; STUNDEN-BYTE
 1618 03E0              ADD     A,#-' '
 161A AC                MOV     R4,A            ; BCD NACH R4
 161B 140C              CALL    CI
 161D FB                MOV     A,R3            ; MINUTEN-BYTE
 161E 03E0              ADD     A,#-' '
 1620 AA                MOV     R2,A            ; BCD NACH R2
 1621 140C              CALL    CI
 1623 FB                MOV     A,R3            ; SEKUNDEN-BYTE
 1624 03E0              ADD     A,#-' '
 1626 B83E              MOV     R0,#SECOND      ; ZEIGER AUF UHREN-RAM
 1628 35                DIS     II              ; KEINE RT-INTERRUPTS!
 1629 A0                MOV     @R0,A           ; SEKUNDEN SETZEN
 162A C8                DEC     R0
 162B FA                MOV     A,R2
 162C A0                MOV     @R0,A           ; MINUTEN SETZEN
 162D C8                DEC     R0
 162E FC                MOV     A,R4
 162F A0                MOV     @R0,A           ; STUNDEN SETZEN
 1630 25                EN      II
 1631 0410              JMP     HLOOP
                
 1633 C5        ASKCLK: SEL     MB0             ; ALLE CALLS IN BASIS-TEIL
 1634 B83C              MOV     R0,#HOUR        ; ZEIGER AUF UHREN-RAM
 1636 BC03              MOV     R4,#3           ; 3 BYTE AUSZUGEBEN
 1638 F0        ASKCK1: MOV     A,@R0
 1639 0320              ADD     A,#' '          ; OFFSET ADDIEREN
 163B AB                MOV     R3,A
 163C 140E              CALL    CO              ; BYTE AUSGEBEN
 163E 18                INC     R0
 163F EC38              DJNZ    R4,ASKCK1       ; ALLE 3 BYTE (HMS) SENDEN
 1641 BB0D              MOV     R3,#CR
 1643 140E              CALL    CO              ; ABSCHLUSS MIT CR
 1645 0410              JMP     HLOOP
                
 0000                   END
REH NS455 CROSS-ASSEMBLER - VERSION 1.2 - 03.08.89  18:08:40

TV950-EMULATION F]R TERMINAL MIT NS405/455                            PAGE 20   
---- SYMBOL TABLE ----

ASKCK1   1638          CODE15   1362          HDSDTR   1147
ASKCLK   1633          CODE16   1364          HDSXON   114A
ATTSET   15AA          CODE17   1366          HLOOP    0010
ATTST1   15B9          CODE18   1368          HOM      12F4
ATTST2   15C4          CODE19   136A          HOM0     12F6
BAKTAB   15D2          CODE20   136C          HOMX     12FA
BAKTBX   15DB          CODE21   136E          HOUR     003C
BAUD     11A0          CODE22   1370          HZT      12E9
BAUDS    1150          CODE23   1372          IGNORE   1343
BDISP    10CF          CODE24   1374          INDTAB   1321
BELBIT   0020          CODE25   1376          INIT     000A
BELL     11ED          CODE26   1378          LDEL1    1506
BFLAG2   0030          CODE27   137A          LDEL2    150E
BODSET   15DD          CODE28   137C          LDEL3    151B
BODST1   15E7          CODE29   137E          LDSEND   122D
BSP      1264          CODE30   1380          LFD      12B6
CAR      12AE          COL72    11BF          LFD1     12D4
CATTS1   13F6          COL80    11C1          LFDX     12E4
CATTST   13D2          COLSET   142F          LFX      12BF
CATTSX   13F4          CPLOOP   11D8          LINDEL   14F5
CDEL1    148B          CR       000D          LININS   14C1
CDEL9    1486          CRG      1281          LINS1    14D5
CDISP    10E6          CRGHTX   129E          LINS2    14DB
CDISP1   10F0          CRIGHT   1286          LINS3    14DD
CDN      1256          CTLCD1   1307          LINS4    14E3
CDOWN    125B          CTLCD2   1316          LINS9    14D2
CDOWN1   1262          CTLCOD   12FD          LINSX    14F0
CHRDEL   147C          CTLMD    114D          LKEY     0000
CHRINS   1461          CTLON    14B8          LNFD     12C2
CI       000C          CUP      1234          LNFDX    14A1
CINS1    146F          CUP1     123D          LNFEED   1497
CINSX    1475          CUP2     1243          LOC      1141
CKEY     0020          CUPX     1255          MASK7    0033
CLEFT    1269          CURASK   1436          MHZ12    0000
CLEFT0   1276          CURASX   1447          MHZ18    0001
CLEFT1   127F          CURATT   0032          MINUTE   003D
CLRHOM   11DD          CURDEL   1521          N0       11A7
CLRLIN   11DE          CURSET   140F          N1       11AA
CLRLN0   11E3          CURSU1   14A4          N2       11AD
CLRLN1   11E8          CURSUP   14A2          N3       11B0
CLRLNP   11DF          CURSUX   14B7          N4       11B3
CLRPAG   11CF          CURUP    1239          N5       11B6
CLRPG1   11D1          DKEY     0018          N6       11B9
CLRST1   1207          DTR      0080          N7       11BC
CLRSTA   11F2          EDISP    10E0          NATSET   1569
CNORM    13FE          ENDHI    0037          NATSTX   1587
CNORM1   140A          ENDLO    0036          NATTAB   003B
CNORM2   140C          EOD1     121C          NDISP    1102
CO       000E          EODCHK   1210          NTTAB    1112
CODE00   1341          EODX     121E          ONL      113E
CODE01   1346          EOS1     154F          PBTAB    10CB
CODE02   1348          EOS2     1553          RDISP    10F6
CODE03   134A          EOS3     155E          RDPTR    0017
CODE04   134C          EOSCHK   1220          REG4     0038
CODE05   134E          EOSX     1566          REG5     0039
CODE06   1350          ERAEOL   1526          REG6     003A
CODE07   1352          ERAEOS   1535          REVOFF   15A3
CODE08   1354          ESC      001B          REVON    159C
CODE09   1356          ESCSEQ   1319          RING     0020
CODE10   1358          FFD      12E5          RNGEND   002F
CODE11   135A          FOUND    1313          ROW22    11C7
CODE12   135C          GETTR    13D0          ROW24    11C9
CODE13   135E          HALFOF   1593          ROW26    11CB
CODE14   1360          HALFON   158A          ROW28    11CD
REH NS455 CROSS-ASSEMBLER - VERSION 1.2 - 03.08.89  18:08:40

TV950-EMULATION F]R TERMINAL MIT NS405/455                            PAGE 21   
---- SYMBOL TABLE ----

ROWLEN   0034          ST5DSP   10E2          TODCHK   1226
ROWNUM   0035          STATTB   120C          TODX     122C
ROWSET   142B          STBITS   109B          TV950C   1382
SCROLL   129F          STCTL    1088          TV950E   1397
SCROLX   12AD          STEND    1131          UKEY     0005
SDISP    1133          STHAND   108E          VATTAB   15CB
SDISP1   1135          STHX     1099          WRPTR    0016
SECOND   003E          STMOD1   1120          XOFFC    0013
SET      1144          STMODE   111A          XONC     0011
SETBAK   1580          STPAR1   10B7          Z15600   0000
SETCLK   1614          STPARX   10BE          Z16650   0000
SETMD1   1458          STSET    1020          Z17300   0000
SETMDX   145B          STSET1   1026          Z17550   0000
SETMOD   144A          STST1    102E          Z17850   0001
SKEY     001F          TBUFF    0031          Z18400   0000
ST3END   112F          TE       11A2          Z20820   0000
