666 lines
13 KiB
ArmAsm
666 lines
13 KiB
ArmAsm
!*******************************************************
|
|
* *
|
|
* T E R M I N A L *
|
|
* *
|
|
* mit Einchip-Mikrorechner U 882 und CRTC 8275 *
|
|
* ============================================ *
|
|
* *
|
|
* ESCAPE_SEQUENZ Module; Version 3.1: *
|
|
* - 24 Zeilen / 80 Zeichen *
|
|
* Inhalt: *
|
|
* - Auswertung der Escape-Sequenzen *
|
|
* *
|
|
********************************************************
|
|
|
|
Bearbeiter: Heller/Kuehle / WAT/WAE
|
|
Stand: 26.01.88
|
|
|
|
Name: P8T.ESCAPE !
|
|
|
|
|
|
|
|
ESCAPE_SEQUENZ MODULE
|
|
|
|
|
|
CONSTANT
|
|
|
|
! 'Z8T.VEREINBARUNGEN' !
|
|
PARA :=254
|
|
$LISTOFF
|
|
|
|
! Werte !
|
|
P01EXT := %96 ! P0:=A8...A14, P1:=AD0...AD7, Stack intern !
|
|
P01TRI := %9E ! tri state: P0,P1,AS,DS,R/W !
|
|
|
|
! Bit Definitionen !
|
|
B0 := %1 ! bit 0 !
|
|
B1 := %2 ! bit 1 !
|
|
B2 := %4 ! bit 2 !
|
|
B3 := %8 ! bit 3 !
|
|
B4 := %10 ! bit 4 !
|
|
B5 := %20 ! bit 5 !
|
|
B6 := %40 ! bit 6 !
|
|
B7 := %80 ! bit 7 !
|
|
NB0 := %FE ! negiertes bit 0 !
|
|
NB1 := %FD ! negiertes bit 1 !
|
|
NB2 := %FB ! negiertes bit 2 !
|
|
NB3 := %F7 ! negiertes bit 3 !
|
|
NB4 := %EF ! negiertes bit 4 !
|
|
NB5 := %DF ! negiertes bit 5 !
|
|
NB6 := %BF ! negiertes bit 6 !
|
|
NB7 := %7F ! negiertes bit 7 !
|
|
|
|
! Bildparameter !
|
|
ZEILENZAHL := 24
|
|
ZEICHENZAHL := 80
|
|
|
|
! Adressen !
|
|
BRAM := %1000 ! Bildwiederholspeicher !
|
|
ZADR_TAB := %1780 ! Tabelle der Zeilenanfangsadr. !
|
|
CRT_PAR := %1C00 ! Parameter lesen / schreiben !
|
|
CRT_COM := %1C01 ! Commands schreiben !
|
|
CRTL_STAT := %1C01 ! Status lesen !
|
|
ZG0 := %4000 ! ADM31-ASCII-Zeichensatz !
|
|
ZG1 := %2000 ! Alternativ-Zeichensatz !
|
|
BELL_ADR := %8000 ! Signalton !
|
|
|
|
! Display Commands !
|
|
RES_DISPL := %00
|
|
START_DISPL := %20
|
|
STOP_DISPL := %40
|
|
READ_LPEN := %60
|
|
LD_CURSOR := %80
|
|
ENABLE_INT := %A0
|
|
DISABLE_INT := %C0
|
|
PRES_COUNT := %E0
|
|
|
|
! Parameter fuer Display-Reset-Command !
|
|
RES1 := %4F ! 80 characters/row !
|
|
RES2 := %97 ! !
|
|
RES3 := %0B ! !
|
|
RES4 := %6C ! !
|
|
|
|
! Field Attribute Code !
|
|
FAC := %80 ! Field Attribute: Normal Mode !
|
|
FACH := %01 ! Highlight !
|
|
FACB := %02 ! Blink !
|
|
FACR := %10 ! Reverse video !
|
|
FACU := %20 ! Underline !
|
|
|
|
! ASCII Control Characters entsprechend ADM 31 !
|
|
NUL := %00 ! Null ^@ !
|
|
SOH := %01 ! Start of Heading ^A !
|
|
STX := %02 ! Start of Text ^B !
|
|
ETX := %03 ! End of Text ^C !
|
|
EOT := %04 ! End of Transmission ^D !
|
|
ENQ := %05 ! Inquiry (who are you) ^E !
|
|
ACK := %06 ! Acknewledge ^F !
|
|
BEL := %07 ! Bell ^G !
|
|
BS := %08 ! Backspace ^H !
|
|
HT := %09 ! Horizontal Tabulator ^I !
|
|
LF := %0A ! Line Feed ^J !
|
|
VT := %0B ! Vertical Tabulator ^K !
|
|
FF := %0C ! Forspace ^L !
|
|
CR := %0D ! Carriage Return ^M !
|
|
SO := %0E ! Shift out ^N !
|
|
SI := %0F ! Shift in ^O !
|
|
|
|
DLE := %10 ! Data Link Escape ^P !
|
|
DC1 := %11 ! Device Control ^Q !
|
|
DC2 := %12 ! ^R !
|
|
DC3 := %13 ! ^S !
|
|
DC4 := %14 ! ^T !
|
|
NAK := %15 ! Not Acknewl. ^U !
|
|
SYN := %16 ! Synchronous Idle ^V !
|
|
ETB := %17 ! End of Trans.-Block ^W !
|
|
CAN := %18 ! Cancel ^X !
|
|
EM := %19 ! End of Medium ^Y !
|
|
SBS := %1A ! Substitute ^Z !
|
|
ESC := %1B ! Escape Sequenz ^[ !
|
|
FS := %1C ! File Separator !
|
|
GS := %1D ! Group Separator ^] !
|
|
RS := %1E ! Cursor HOME ^^ !
|
|
US := %1F ! New Line ^~ !
|
|
$LISTON
|
|
$PAGE
|
|
EXTERNAL
|
|
PUTA PROCEDURE
|
|
SIO_OUT PROCEDURE
|
|
WRITE_CHAR PROCEDURE
|
|
READ_CHAR PROCEDURE
|
|
CHAR_ADRESSE PROCEDURE
|
|
BRAM_ADR PROCEDURE
|
|
LOAD_CURSOR PROCEDURE
|
|
CLEAR_SCREEN PROCEDURE
|
|
CLEAR_LINE PROCEDURE
|
|
ROLL_DOWN PROCEDURE
|
|
CLEAR_L LABEL
|
|
ROLL_U2 LABEL
|
|
ROLL_U3 LABEL
|
|
TAB LABEL
|
|
BACK_TAB LABEL
|
|
CH_del LABEL
|
|
CH_ins LABEL
|
|
|
|
P0, P1, P2, P3, STAT0, STAT1, STAT2 BYTE
|
|
CHAR_ADR WORD
|
|
SPALTZ, ZEILZ, CHAR, ESCH0 BYTE
|
|
|
|
|
|
GLOBAL
|
|
CLEAR_SC PAGE_ERASE LINE_ERASE LABEL
|
|
ESC_AUS2 LABEL
|
|
|
|
$SECTION SEC3 PROGRAM
|
|
|
|
|
|
|
|
ESC_SEQUENZ PROCEDURE
|
|
!*******************************************************
|
|
*
|
|
* Auswertung der ESC_Sequenzen
|
|
*
|
|
*******************************************************!
|
|
ENTRY
|
|
|
|
TCM STAT1,#B5 ! Cursor-Steuerung !
|
|
JP Z,CURSOR_CONTROL
|
|
TCM STAT1,#B7 ! Video-Atribute !
|
|
JP Z,VIDEO_CONTROL
|
|
CP CHAR,#'='
|
|
JR Z,CURSOR_FLAG
|
|
CP CHAR,#'G'
|
|
JR Z,VIDEO_FLAG
|
|
|
|
and STAT1,#NB4 ! ESC-Flag ruecksetzen !
|
|
CP CHAR,#':'
|
|
JR Z,CLEAR_SC
|
|
CP CHAR,#'*'
|
|
JR Z,CLEAR_SC
|
|
CP CHAR,#'U' ! set PGM !
|
|
JR Z,SET_PGM
|
|
cp CHAR,#'i' ! ESC i = TAB !
|
|
jp z,TAB ! in PUTA !
|
|
cp CHAR,#'I' ! ESC I = Back TAB !
|
|
jp z,BACK_TAB ! in PUTA !
|
|
CP CHAR,#'T' ! line erase? !
|
|
JR Z,LINE_ERASE
|
|
CP CHAR,#'Y' ! page erase? !
|
|
JR Z,PAGE_ERASE
|
|
CP CHAR,#'R' ! line delete? !
|
|
JR Z,LINE_DELETE
|
|
cp CHAR,#'Q' ! char_insert !
|
|
jr z,CHAR_INSERT
|
|
cp CHAR,#'W' ! char_delete? !
|
|
jp z,CHAR_DEL
|
|
cp CHAR,#'E' ! line_insert? !
|
|
jp z,LINE_INSERT
|
|
|
|
AND STAT1,#NB4 ! Escape_Flag ruecksetzen !
|
|
RET
|
|
|
|
|
|
CURSOR_FLAG:
|
|
! *** Flag setzen *** !
|
|
OR STAT1,#B5
|
|
RET
|
|
|
|
|
|
VIDEO_FLAG:
|
|
! *** Flag setzen *** !
|
|
OR STAT1,#B7
|
|
RET
|
|
|
|
|
|
CLEAR_SC:
|
|
! *** Bildschirm loeschen, Cursor unveraendert *** !
|
|
|
|
CALL CLEAR_SCREEN
|
|
RET
|
|
|
|
|
|
SET_PGM:
|
|
! *** set program mode *** !
|
|
OR STAT1,#B3 ! PGM-Flag setzen !
|
|
RET
|
|
|
|
|
|
LINE_ERASE:
|
|
! *** 'space' in Cursor-Zeile ab Cursor-Pos bis Ende *** !
|
|
ld r8,#HI ZADR_TAB
|
|
ld r9,#LO ZADR_TAB
|
|
add r9,ZEILZ ! Cursor-Zeile !
|
|
ld r15,SPALTZ
|
|
call CLEAR_L ! loeschen !
|
|
RET
|
|
|
|
|
|
PAGE_ERASE:
|
|
! *** 'space' in Cursor-Zeile ab Curs.-Pos. bis Schirm-Ende !
|
|
call LINE_ERASE ! 'space' ab Cursor bis Zeilen-Ende !
|
|
! rr8 enthaelt Adr. der Cursor-Zeile !
|
|
ld r7,ZEILZ ! Berechnung der Zahl der Zeilen !
|
|
inc r7
|
|
ld r6,#ZEILENZAHL
|
|
sub r6,r7 ! Anzahl !
|
|
jr ULE,PAGE_E0 ! Cursor steht in der letzen Zeile !
|
|
|
|
PAGE_E1:
|
|
incw rr8 ! naechste Zeile !
|
|
call CLEAR_LINE ! Zeile loeschen !
|
|
djnz r6,PAGE_E1
|
|
|
|
PAGE_E0:
|
|
ret ! Escape-Flag in LINE_ERASE rueckgesetzt !
|
|
|
|
|
|
LINE_DELETE:
|
|
! *** Cursor-Zeile loeschen, Cursor an Zeilenanfang *** !
|
|
clr SPALTZ ! Cursor auf Zeilenanfang !
|
|
call LOAD_CURSOR
|
|
call LINE_ERASE ! Zeile loeschen, rr8 laden !
|
|
ld r14,#ZEILENZAHL-1
|
|
sub r14,ZEILZ ! zu rollende Zeilen berechnen !
|
|
jr z,LINE_D0
|
|
call ROLL_U3 ! Eintrittspunkt ohne Zeil.-loeschen !
|
|
|
|
LINE_D0:
|
|
ret
|
|
|
|
|
|
|
|
CHAR_INSERT:
|
|
! *** Zeichen unter Cursor nach rechts verschieben *** !
|
|
ld PARA,#1
|
|
call CH_ins
|
|
ret
|
|
|
|
|
|
|
|
CHAR_DEL:
|
|
! *** Cursor-Zeichen loeschen, die anderen nachschieben *** !
|
|
|
|
ld PARA,#1
|
|
call CH_del
|
|
ret
|
|
|
|
|
|
LINE_INSERT:
|
|
! *** Zeile einschieben auf Cursor-Position *** !
|
|
clr SPALTZ ! Cursor auf Zeilenanfang !
|
|
call LOAD_CURSOR
|
|
ld r15,ZEILZ
|
|
call ROLL_DOWN
|
|
ret
|
|
|
|
|
|
|
|
END ESC_SEQUENZ
|
|
$PAGE
|
|
CURSOR_CONTROL PROCEDURE
|
|
!*******************************************************
|
|
*
|
|
* Positionierung des Cursors mittels
|
|
* Escape-Seq: 'ESC=YX', Y = row, X = column
|
|
*
|
|
*******************************************************!
|
|
ENTRY
|
|
|
|
LD R8,CHAR ! Positionswert lesen (ASCII) !
|
|
SUB R8,#%20 ! Position in Hex !
|
|
JR PL,CUCO0 ! Fehler, wenn negativ !
|
|
LD R8,#0 ! bei Fehler Wert:=0 !
|
|
|
|
CUCO0:
|
|
TCM STAT1,#B6 ! Zeile oder Spalte? !
|
|
JR Z,CUCO1 ! Flag=1: Spalte !
|
|
CP R8,#ZEILENZAHL-1
|
|
JR ULT,CUCO2
|
|
LD R8,#ZEILENZAHL-1
|
|
|
|
CUCO2:
|
|
LD ZEILZ,R8 ! Zeilenkoordinate eintragen !
|
|
OR STAT1,#B6 ! naechster Wert ist Spaltenkoordinate !
|
|
RET
|
|
|
|
|
|
CUCO1: ! Spalte !
|
|
CP R8,#ZEICHENZAHL-1
|
|
JR ULT,CUCO3
|
|
LD R8,#ZEICHENZAHL-1
|
|
|
|
CUCO3:
|
|
LD SPALTZ,R8 ! Spaltenkoordinate eintragen !
|
|
AND STAT1,#NB4 LAND NB5 LAND NB6
|
|
CALL LOAD_CURSOR ! Cursor positionieren !
|
|
RET
|
|
|
|
|
|
END CURSOR_CONTROL
|
|
$PAGE
|
|
VIDEO_CONTROL PROCEDURE
|
|
!*******************************************************
|
|
*
|
|
* Setzen und Ruecksetzen der
|
|
* Video Attribute Codes
|
|
*
|
|
*******************************************************!
|
|
ENTRY
|
|
|
|
tm STAT2,#B4 !Video attribute on/off ?!
|
|
jr nz,VIDEO1 !off!
|
|
! Abfrage der Parameter !
|
|
CP CHAR,#'0'
|
|
JR Z,ESCG0
|
|
CP CHAR,#'1'
|
|
JP Z,ESCG1
|
|
CP CHAR,#'2'
|
|
JR Z,ESCG2
|
|
CP CHAR,#'3'
|
|
JR Z,ESCG1
|
|
CP CHAR,#'4'
|
|
JR Z,ESCG4
|
|
CP CHAR,#'5'
|
|
JR Z,ESCG5
|
|
CP CHAR,#'6'
|
|
JR Z,ESCG6
|
|
CP CHAR,#'7'
|
|
JR Z,ESCG5
|
|
CP CHAR,#'8'
|
|
JR Z,ESCG8
|
|
CP CHAR,#'9'
|
|
JR Z,ESCG9
|
|
CP CHAR,#'A'
|
|
JR Z,ESCGA
|
|
CP CHAR,#'B'
|
|
JR Z,ESCGB
|
|
CP CHAR,#'C'
|
|
JR Z,ESCGC
|
|
CP CHAR,#'D'
|
|
JR Z,ESCGD
|
|
CP CHAR,#'E'
|
|
JR Z,ESCGE
|
|
CP CHAR,#'F'
|
|
JR Z,ESCGF
|
|
CP CHAR,#'('
|
|
JR Z,ESCG0
|
|
CP CHAR,#')'
|
|
JR ESCG8
|
|
VIDEO1:
|
|
RET
|
|
|
|
|
|
|
|
ESCG0: ! Reset to Standard Video !
|
|
LD CHAR,#FAC
|
|
JR VOUT
|
|
|
|
ESCG2: ! Blinken ein !
|
|
LD CHAR,#FAC+FACB
|
|
JR VOUT
|
|
|
|
ESCG4: ! Reverse ein !
|
|
LD CHAR,#FAC+FACR
|
|
JR VOUT
|
|
|
|
ESCG6: ! Reverse + Blinken ein !
|
|
LD CHAR,#FAC+FACB+FACR
|
|
JR VOUT
|
|
|
|
ESCG8: ! Highlight aus !
|
|
LD CHAR,#FAC+FACH
|
|
JR VOUT
|
|
|
|
ESCGA: ! Highlight aus + Reverse ein !
|
|
LD CHAR,#FAC+FACR+FACH
|
|
JR VOUT
|
|
|
|
ESCGC: ! Unterstrich ein !
|
|
LD CHAR,#FAC+FACU
|
|
JR VOUT
|
|
|
|
ESCGE: ! Unterstrich ein + Highlight aus !
|
|
LD CHAR,#FAC+FACU+FACH
|
|
JR VOUT
|
|
|
|
VOUT:
|
|
AND STAT1,#NB4 LAND NB7 ! ESC- und Video-Flag ruecksetzen !
|
|
CALL PUTA ! Ausgabe Video Attribut !
|
|
RET
|
|
|
|
|
|
! *** Blank Routinen *** !
|
|
|
|
ESCG1: ! G1, G3 (blank area) !
|
|
LD CHAR,#%20 ! Space !
|
|
JR VOUTB
|
|
|
|
ESCG5: ! G5, G7 (blank + reverse) !
|
|
LD CHAR,#FAC+FACR
|
|
JR VOUTB
|
|
|
|
ESCG9: ! blank + highlight aus !
|
|
LD CHAR,#FAC+FACH
|
|
JR VOUTB
|
|
|
|
ESCGB: ! blank + reverse + highlight (aus) !
|
|
LD CHAR,#FAC+FACR+FACH
|
|
JR VOUTB
|
|
|
|
ESCGD: ! blank + underline !
|
|
LD CHAR,#FAC+FACU
|
|
JR VOUTB
|
|
|
|
ESCGF: ! blank + underline + highlight (aus) !
|
|
LD CHAR,#FAC+FACU+FACH
|
|
JR VOUTB
|
|
|
|
VOUTB:
|
|
AND STAT1,#NB4 LAND NB7
|
|
CALL PUTA
|
|
CALL BLANK_AREA ! Feld loeschen !
|
|
RET
|
|
|
|
|
|
|
|
|
|
END VIDEO_CONTROL
|
|
|
|
|
|
BLANK_AREA PROCEDURE
|
|
!*******************************************************
|
|
*
|
|
* Loeschen eines bezeichneten Feldes
|
|
* in einer Zeile (kein Rollen)
|
|
* Input: CHAR_ADR, SPALTZ
|
|
*
|
|
*******************************************************!
|
|
ENTRY
|
|
|
|
LD R8,CHAR_ADR
|
|
LD R9,CHAR_ADR+1
|
|
LD R10,#%20 ! Space !
|
|
LD R12,SPALTZ
|
|
OR STAT0,#B1 ! MCU-Zugriff !
|
|
|
|
BLANK0:
|
|
TCM STAT0,#B0 ! DMA aktiv?, wenn ja warten !
|
|
JR Z,BLANK0
|
|
|
|
INCW RR8
|
|
LDE R11,@RR8 ! lesen !
|
|
TCM R11,#B7 ! Video Control Char ? !
|
|
JR Z,BLANK1
|
|
|
|
LDE @RR8,R10 ! Blank ausgeben !
|
|
INC R12 ! Naechste Spalte !
|
|
CP R12,#ZEICHENZAHL
|
|
JR NZ,BLANK0
|
|
LD R10,#FAC ! Reset to standard Video !
|
|
LDE @RR8,R10
|
|
|
|
BLANK1:
|
|
AND STAT0,#NB1 ! MCU-Zugriff beendet !
|
|
RET
|
|
END BLANK_AREA
|
|
|
|
|
|
|
|
ESC_OUT_SEQ PROCEDURE
|
|
!*******************************************************
|
|
*
|
|
* Ausgabe der Escape_Sequenzen entspr. Funktionstaste
|
|
* Es werden 1...3 Zeichen gesendet:
|
|
*
|
|
*******************************************************!
|
|
ENTRY
|
|
|
|
! Ueberpruefung auf richtige Werte !
|
|
TCM CHAR,#%80 ! ESC-Folge: CHAR>%80 !
|
|
JP NZ,ESC_OUT0
|
|
CP CHAR,#%80 ! keine Wirkung !
|
|
JR Z,ESC_OUT0
|
|
!------------------------------------------------------!
|
|
|
|
FKT_TAS:
|
|
tm STAT2,#B3 !VT100/ADM31 ?!
|
|
jp z,FKT_VT100
|
|
! Auswertung der Tasten-Codes ADM31 !
|
|
! Cursor Movement Tasten !
|
|
ld ESCH0,#FF !Forspace!
|
|
cp CHAR,#%86
|
|
jp z,FKT_AUS
|
|
ld ESCH0,#BS !Backspace!
|
|
cp CHAR,#%88
|
|
jp z,FKT_AUS
|
|
ld ESCH0,#LF !Linefeed!
|
|
cp CHAR,#%8A
|
|
jr z,FKT_AUS
|
|
ld ESCH0,#VT !Verticaltab!
|
|
cp CHAR,#%8B
|
|
jr z,FKT_AUS
|
|
ld ESCH0,#RS !Cursor home!
|
|
cp CHAR,#%8C
|
|
jr z,FKT_AUS
|
|
ld ESCH0,#BS
|
|
cp CHAR,#%9D
|
|
jr z,FKT_AUS
|
|
ld ESCH0,#%09
|
|
cp CHAR,#%89
|
|
jr z,FKT_AUS
|
|
! Funktionstasten !
|
|
LD ESCH0,#'W' ! char delete !
|
|
CP CHAR,#%8F
|
|
JR Z,ESC_SEQ_AUS
|
|
LD ESCH0,#'Q' ! char insert !
|
|
CP CHAR,#%85
|
|
JR Z,ESC_SEQ_AUS
|
|
LD ESCH0,#'R' ! line delete !
|
|
CP CHAR,#%84
|
|
JR Z,ESC_SEQ_AUS
|
|
LD ESCH0,#'E' ! line insert !
|
|
CP CHAR,#%81
|
|
JR Z,ESC_SEQ_AUS
|
|
LD ESCH0,#'Y' ! page erase !
|
|
CP CHAR,#%83
|
|
JR Z,ESC_SEQ_AUS
|
|
ld ESCH0,#'T'
|
|
cp CHAR,#%82
|
|
jr z,ESC_SEQ_AUS
|
|
ld ESCH0,#'I' ! BACK_TAB !
|
|
cp CHAR,#%87
|
|
jr z,ESC_SEQ_AUS
|
|
|
|
!------------------------------------------------------!
|
|
|
|
ESC_OUT0:
|
|
CLR CHAR
|
|
RET
|
|
!------------------------------------------------------!
|
|
|
|
|
|
ESC_SEQ_AUS:
|
|
! Senden der Escape_Sequenzen !
|
|
LD CHAR,#ESC ! Zeichen senden: ESC !
|
|
call ESC_AUS2
|
|
tm STAT2,#B3 !VT100/ADM31 ?!
|
|
jr nz,ESC_AUS3
|
|
ld CHAR,#'['
|
|
call ESC_AUS2
|
|
ESC_AUS3:
|
|
LD CHAR,ESCH0 ! Zeichen senden: x !
|
|
call ESC_AUS2
|
|
jr ESC_OUT0
|
|
|
|
! Ausgabe Cursor Movement Tasten ADM31 !
|
|
FKT_AUS:
|
|
ld CHAR,ESCH0
|
|
call ESC_AUS2
|
|
jr ESC_OUT0
|
|
|
|
ESC_AUS2:
|
|
TCM STAT0,#B3 ! on_line? !
|
|
JR Z,ESC_AUS1
|
|
CALL PUTA ! off_line !
|
|
ret
|
|
|
|
ESC_AUS1:
|
|
CALL SIO_OUT ! on_line !
|
|
ret
|
|
|
|
|
|
|
|
! Auswertung Funktionstasten VT100-Terminal !
|
|
FKT_VT100:
|
|
! Cursor Movement Tasten !
|
|
ld ESCH0,#'C' !Cursor right!
|
|
cp CHAR,#%86
|
|
jr z,ESC_SEQ_AUS
|
|
ld ESCH0,#'D' !Cursor left!
|
|
cp CHAR,#%88
|
|
jr z,ESC_SEQ_AUS
|
|
ld ESCH0,#'B' !Cursor down!
|
|
cp CHAR,#%8A
|
|
jr z,ESC_SEQ_AUS
|
|
ld ESCH0,#'A' !Cursor up!
|
|
cp CHAR,#%8B
|
|
jr z,ESC_SEQ_AUS
|
|
ld ESCH0,#'H' !Cursor home!
|
|
cp CHAR,#%8C
|
|
jr z,ESC_SEQ_AUS
|
|
ld ESCH0,#BS
|
|
cp CHAR,#%9D
|
|
jr z,FKT_AUS
|
|
! Funktionstasten !
|
|
ld ESCH0,#'P' !Delete character!
|
|
cp CHAR,#%8F
|
|
jr z,ESC_SEQ_AUS
|
|
ld ESCH0,#'@' !Insert character!
|
|
cp CHAR,#%85
|
|
jr z,ESC_SEQ_AUS
|
|
ld ESCH0,#'M' !Delete line!
|
|
cp CHAR,#%84
|
|
jr z,ESC_SEQ_AUS
|
|
ld ESCH0,#'L' !Insert line!
|
|
cp CHAR,#%81
|
|
jr z,ESC_SEQ_AUS
|
|
ld ESCH0,#'J' !Erasing from cursor to end of screen!
|
|
cp CHAR,#%83
|
|
jp z,ESC_SEQ_AUS
|
|
ld ESCH0,#'K'
|
|
cp CHAR,#%82
|
|
jp z,ESC_SEQ_AUS
|
|
ld ESCH0,#'Z' !Cursor backward tab!
|
|
cp CHAR,#%87
|
|
jp z,ESC_SEQ_AUS
|
|
ld ESCH0,#'I'
|
|
cp CHAR,#%89
|
|
jp z,ESC_SEQ_AUS
|
|
jp ESC_OUT0
|
|
|
|
END ESC_OUT_SEQ
|
|
|
|
|
|
|
|
END ESCAPE_SEQUENZ
|