add Version 5.0
This commit is contained in:
parent
72ee4c0862
commit
baef93966a
|
|
@ -385,8 +385,9 @@ ENTRY
|
||||||
CP CHAR,#'('
|
CP CHAR,#'('
|
||||||
JR Z,ESCG0
|
JR Z,ESCG0
|
||||||
CP CHAR,#')'
|
CP CHAR,#')'
|
||||||
JR ESCG8
|
JR z,ESCG8
|
||||||
VIDEO1:
|
VIDEO1:
|
||||||
|
and STAT1,#NB4 land NB7 !ESC- und Video-Flag ruecksetzen!
|
||||||
RET
|
RET
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -522,53 +523,50 @@ ENTRY
|
||||||
JR Z,ESC_OUT0
|
JR Z,ESC_OUT0
|
||||||
!------------------------------------------------------!
|
!------------------------------------------------------!
|
||||||
|
|
||||||
|
cp CHAR,#%C2 !00 ?!
|
||||||
|
jr nz,FKT_TAS !nein!
|
||||||
|
ld CHAR,#'0'
|
||||||
|
call ESC_AUS2
|
||||||
|
ld ESCH0,#'0'
|
||||||
|
jp FKT_AUS
|
||||||
FKT_TAS:
|
FKT_TAS:
|
||||||
tm STAT2,#B3 !VT100/ADM31 ?!
|
tm STAT2,#B3 !VT100/ADM31 ?!
|
||||||
jp z,FKT_VT100
|
jp z,FKT_VT100
|
||||||
! Auswertung der Tasten-Codes ADM31 !
|
! Auswertung der Tasten-Codes ADM31 !
|
||||||
! Cursor Movement Tasten !
|
! Cursor Movement Tasten !
|
||||||
ld ESCH0,#FF !Forspace!
|
ld ESCH0,#FF !Forspace!
|
||||||
cp CHAR,#%86
|
cp CHAR,#%CD
|
||||||
jp z,FKT_AUS
|
jp z,FKT_AUS
|
||||||
ld ESCH0,#BS !Backspace!
|
ld ESCH0,#BS !Backspace!
|
||||||
cp CHAR,#%88
|
cp CHAR,#%CB
|
||||||
jp z,FKT_AUS
|
jp z,FKT_AUS
|
||||||
ld ESCH0,#LF !Linefeed!
|
ld ESCH0,#LF !Linefeed!
|
||||||
cp CHAR,#%8A
|
cp CHAR,#%D0
|
||||||
jr z,FKT_AUS
|
jr z,FKT_AUS
|
||||||
ld ESCH0,#VT !Verticaltab!
|
ld ESCH0,#VT !Verticaltab!
|
||||||
cp CHAR,#%8B
|
cp CHAR,#%C8
|
||||||
jr z,FKT_AUS
|
jr z,FKT_AUS
|
||||||
ld ESCH0,#RS !Cursor home!
|
ld ESCH0,#RS !Cursor home!
|
||||||
cp CHAR,#%8C
|
cp CHAR,#%CF
|
||||||
jr z,FKT_AUS
|
|
||||||
ld ESCH0,#BS
|
|
||||||
cp CHAR,#%9D
|
|
||||||
jr z,FKT_AUS
|
|
||||||
ld ESCH0,#%09
|
|
||||||
cp CHAR,#%89
|
|
||||||
jr z,FKT_AUS
|
jr z,FKT_AUS
|
||||||
! Funktionstasten !
|
! Funktionstasten !
|
||||||
LD ESCH0,#'W' ! char delete !
|
LD ESCH0,#'W' ! char delete !
|
||||||
CP CHAR,#%8F
|
CP CHAR,#%D2
|
||||||
JR Z,ESC_SEQ_AUS
|
JR Z,ESC_SEQ_AUS
|
||||||
LD ESCH0,#'Q' ! char insert !
|
LD ESCH0,#'Q' ! char insert !
|
||||||
CP CHAR,#%85
|
CP CHAR,#%C9
|
||||||
JR Z,ESC_SEQ_AUS
|
JR Z,ESC_SEQ_AUS
|
||||||
LD ESCH0,#'R' ! line delete !
|
LD ESCH0,#'R' ! line delete !
|
||||||
CP CHAR,#%84
|
CP CHAR,#%D3
|
||||||
JR Z,ESC_SEQ_AUS
|
JR Z,ESC_SEQ_AUS
|
||||||
LD ESCH0,#'E' ! line insert !
|
LD ESCH0,#'E' ! line insert !
|
||||||
CP CHAR,#%81
|
CP CHAR,#%D1
|
||||||
JR Z,ESC_SEQ_AUS
|
JR Z,ESC_SEQ_AUS
|
||||||
LD ESCH0,#'Y' ! page erase !
|
LD ESCH0,#'Y' ! page erase !
|
||||||
CP CHAR,#%83
|
CP CHAR,#%C7
|
||||||
JR Z,ESC_SEQ_AUS
|
JR Z,ESC_SEQ_AUS
|
||||||
ld ESCH0,#'T'
|
|
||||||
cp CHAR,#%82
|
|
||||||
jr z,ESC_SEQ_AUS
|
|
||||||
ld ESCH0,#'I' ! BACK_TAB !
|
ld ESCH0,#'I' ! BACK_TAB !
|
||||||
cp CHAR,#%87
|
cp CHAR,#%81
|
||||||
jr z,ESC_SEQ_AUS
|
jr z,ESC_SEQ_AUS
|
||||||
|
|
||||||
!------------------------------------------------------!
|
!------------------------------------------------------!
|
||||||
|
|
@ -614,47 +612,38 @@ ESC_AUS1:
|
||||||
FKT_VT100:
|
FKT_VT100:
|
||||||
! Cursor Movement Tasten !
|
! Cursor Movement Tasten !
|
||||||
ld ESCH0,#'C' !Cursor right!
|
ld ESCH0,#'C' !Cursor right!
|
||||||
cp CHAR,#%86
|
cp CHAR,#%CD
|
||||||
jr z,ESC_SEQ_AUS
|
jr z,ESC_SEQ_AUS
|
||||||
ld ESCH0,#'D' !Cursor left!
|
ld ESCH0,#'D' !Cursor left!
|
||||||
cp CHAR,#%88
|
cp CHAR,#%CB
|
||||||
jr z,ESC_SEQ_AUS
|
jr z,ESC_SEQ_AUS
|
||||||
ld ESCH0,#'B' !Cursor down!
|
ld ESCH0,#'B' !Cursor down!
|
||||||
cp CHAR,#%8A
|
cp CHAR,#%D0
|
||||||
jr z,ESC_SEQ_AUS
|
jr z,ESC_SEQ_AUS
|
||||||
ld ESCH0,#'A' !Cursor up!
|
ld ESCH0,#'A' !Cursor up!
|
||||||
cp CHAR,#%8B
|
cp CHAR,#%C8
|
||||||
jr z,ESC_SEQ_AUS
|
jr z,ESC_SEQ_AUS
|
||||||
ld ESCH0,#'H' !Cursor home!
|
ld ESCH0,#'H' !Cursor home!
|
||||||
cp CHAR,#%8C
|
cp CHAR,#%CF
|
||||||
jr z,ESC_SEQ_AUS
|
jr z,ESC_SEQ_AUS
|
||||||
ld ESCH0,#BS
|
|
||||||
cp CHAR,#%9D
|
|
||||||
jr z,FKT_AUS
|
|
||||||
! Funktionstasten !
|
! Funktionstasten !
|
||||||
ld ESCH0,#'P' !Delete character!
|
ld ESCH0,#'P' !Delete character!
|
||||||
cp CHAR,#%8F
|
cp CHAR,#%D2
|
||||||
jr z,ESC_SEQ_AUS
|
jr z,ESC_SEQ_AUS
|
||||||
ld ESCH0,#'@' !Insert character!
|
ld ESCH0,#'@' !Insert character!
|
||||||
cp CHAR,#%85
|
cp CHAR,#%C9
|
||||||
jr z,ESC_SEQ_AUS
|
jr z,ESC_SEQ_AUS
|
||||||
ld ESCH0,#'M' !Delete line!
|
ld ESCH0,#'M' !Delete line!
|
||||||
cp CHAR,#%84
|
cp CHAR,#%D3
|
||||||
jr z,ESC_SEQ_AUS
|
jr z,ESC_SEQ_AUS
|
||||||
ld ESCH0,#'L' !Insert line!
|
ld ESCH0,#'L' !Insert line!
|
||||||
cp CHAR,#%81
|
cp CHAR,#%D1
|
||||||
jr z,ESC_SEQ_AUS
|
jr z,ESC_SEQ_AUS
|
||||||
ld ESCH0,#'J' !Erasing from cursor to end of screen!
|
ld ESCH0,#'J' !Erasing from cursor to end of screen!
|
||||||
cp CHAR,#%83
|
cp CHAR,#%C7
|
||||||
jp z,ESC_SEQ_AUS
|
|
||||||
ld ESCH0,#'K'
|
|
||||||
cp CHAR,#%82
|
|
||||||
jp z,ESC_SEQ_AUS
|
jp z,ESC_SEQ_AUS
|
||||||
ld ESCH0,#'Z' !Cursor backward tab!
|
ld ESCH0,#'Z' !Cursor backward tab!
|
||||||
cp CHAR,#%87
|
cp CHAR,#%81
|
||||||
jp z,ESC_SEQ_AUS
|
|
||||||
ld ESCH0,#'I'
|
|
||||||
cp CHAR,#%89
|
|
||||||
jp z,ESC_SEQ_AUS
|
jp z,ESC_SEQ_AUS
|
||||||
jp ESC_OUT0
|
jp ESC_OUT0
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,8 @@
|
||||||
* mit Einchip-Mikrorechner U 882 und CRTC 8275 *
|
* mit Einchip-Mikrorechner U 882 und CRTC 8275 *
|
||||||
* ============================================ *
|
* ============================================ *
|
||||||
* *
|
* *
|
||||||
* INIT Module; Version 4.2: *
|
* INIT Module; Version 5.0: *
|
||||||
|
* - Anpassung an IBM (XT) Tastatur *
|
||||||
* - 24 Zeilen / 80 Zeichen *
|
* - 24 Zeilen / 80 Zeichen *
|
||||||
* Inhalt: *
|
* Inhalt: *
|
||||||
* - Initialisierung Rechner, Bildspeicher, CRTC *
|
* - Initialisierung Rechner, Bildspeicher, CRTC *
|
||||||
|
|
@ -31,7 +32,7 @@ P01EXT := %96 ! P0:=A8...A14, P1:=AD0...AD7, Stack intern !
|
||||||
P01TRI := %9E ! tri state: P0,P1,AS,DS,R/W !
|
P01TRI := %9E ! tri state: P0,P1,AS,DS,R/W !
|
||||||
SBUFL := 45 ! SIO-Puffer-Laenge !
|
SBUFL := 45 ! SIO-Puffer-Laenge !
|
||||||
ZDMA := 26 ! DMA ausschalten: 26*1.08=28 mys !
|
ZDMA := 26 ! DMA ausschalten: 26*1.08=28 mys !
|
||||||
ZVSY := 160 ! VSYN: 192*1.08=172.8 mys !
|
ZVSY := 192 ! VSYN: 192*1.08=172.8 mys !
|
||||||
|
|
||||||
! Bit Definitionen !
|
! Bit Definitionen !
|
||||||
B0 := %1 ! bit 0 !
|
B0 := %1 ! bit 0 !
|
||||||
|
|
@ -86,7 +87,7 @@ RES4 := %6A ! visible video control !
|
||||||
!ruhender Cursor-Block!
|
!ruhender Cursor-Block!
|
||||||
RES5 := %4A !volles Feld blinkend!
|
RES5 := %4A !volles Feld blinkend!
|
||||||
RES6 := %7A !Unterstrich!
|
RES6 := %7A !Unterstrich!
|
||||||
RES7 := %6C !changed for 4!
|
RES7 := %5A !Unterstrich blinkend!
|
||||||
|
|
||||||
! Field Attribute Code !
|
! Field Attribute Code !
|
||||||
FAC := %80 ! Field Attribute: Normal Mode !
|
FAC := %80 ! Field Attribute: Normal Mode !
|
||||||
|
|
@ -137,7 +138,7 @@ EXTERNAL
|
||||||
|
|
||||||
|
|
||||||
GLOBAL
|
GLOBAL
|
||||||
$SECTION SECR REGISTER
|
$SECTION REGISTER
|
||||||
|
|
||||||
$REL 0
|
$REL 0
|
||||||
! Ports, Status- und Hilfsregister: Reg.-Grp. 0 !
|
! Ports, Status- und Hilfsregister: Reg.-Grp. 0 !
|
||||||
|
|
@ -161,7 +162,7 @@ $REL %30
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$SECTION SEC0 PROGRAM
|
$SECTION PROGRAM
|
||||||
$REL 0
|
$REL 0
|
||||||
|
|
||||||
INTERRUPT ARRAY [6 WORD] := [IRP32 IRP33 IRP31 IRP30 IRT0 IRT1]
|
INTERRUPT ARRAY [6 WORD] := [IRP32 IRP33 IRP31 IRP30 IRT0 IRT1]
|
||||||
|
|
@ -174,7 +175,7 @@ ENTRY
|
||||||
END JP_MESSAGE
|
END JP_MESSAGE
|
||||||
|
|
||||||
! Message: Copyright Name Version Datum !
|
! Message: Copyright Name Version Datum !
|
||||||
MESSAGE array [* byte] := '(C) ZFT/KEAW 4.2 Jan88'
|
MESSAGE array [* byte] := '(C) ZFT/KEAW 5.0 Dec88'
|
||||||
|
|
||||||
|
|
||||||
INITIAL PROCEDURE
|
INITIAL PROCEDURE
|
||||||
|
|
@ -250,8 +251,6 @@ ZADR0:
|
||||||
|
|
||||||
! IBM (XT) Tastatur und Zeichengenerator vorbereiten !
|
! IBM (XT) Tastatur und Zeichengenerator vorbereiten !
|
||||||
SRP #%20
|
SRP #%20
|
||||||
ld r2,#%04
|
|
||||||
ld r3,#%84
|
|
||||||
LD R4,#ZG0 ! nur High-Adr interessant !
|
LD R4,#ZG0 ! nur High-Adr interessant !
|
||||||
LDC @RR4,R5 ! Scheinausgabe zum Einschalten ZG0 !
|
LDC @RR4,R5 ! Scheinausgabe zum Einschalten ZG0 !
|
||||||
ld r4,#TRES
|
ld r4,#TRES
|
||||||
|
|
@ -383,20 +382,87 @@ IRP33 PROCEDURE
|
||||||
*******************************************************!
|
*******************************************************!
|
||||||
ENTRY
|
ENTRY
|
||||||
|
|
||||||
tcm STAT0,#B4
|
|
||||||
jr z,TINT0
|
|
||||||
push rp
|
push rp
|
||||||
srp #%20
|
srp #%20
|
||||||
tcm STAT0,#B5
|
|
||||||
jr z,TINT1
|
or STAT3,#B4 !Eigentest!
|
||||||
tcm P2,#%E0
|
|
||||||
jr nz,TINT0
|
tm STAT0,#B4 !Zeichen verarbeitet ?!
|
||||||
ld r0,P2
|
jp nz,TINT0 !nein!
|
||||||
|
|
||||||
|
ld r1,P2 !Lesen von Port 2!
|
||||||
|
|
||||||
|
rr r1 !Verschieben D0->D7 ... D7->D6!
|
||||||
|
|
||||||
|
cp ZBYTE,#%E1 !Vorbyte E1 ?!
|
||||||
|
jr nz,TINT14 !nein!
|
||||||
|
or STAT3,#B7
|
||||||
|
jr TINT0
|
||||||
|
TINT14:
|
||||||
|
cp ZBYTE,#%E0 !Vorbyte E0 ?!
|
||||||
|
jr nz,TINT1 !nein!
|
||||||
or STAT0,#B5
|
or STAT0,#B5
|
||||||
jr TINT0
|
jr TINT0
|
||||||
TINT1:
|
TINT1:
|
||||||
ld r1,P2 !Lesen von Port 2!
|
tm ZBYTE,#B7 !Scan-/Break-Code ?!
|
||||||
|
jr nz,TINT2 !Break-Code!
|
||||||
|
|
||||||
|
! Scan-Code !
|
||||||
|
cp ZBYTE,#%2A !SHIFT-Taste ?!
|
||||||
|
jr nz,TINT4 !nein!
|
||||||
|
or STAT3,#B2 !SHIFT-STATUS ein!
|
||||||
|
jr TINT8
|
||||||
|
TINT4:
|
||||||
|
cp ZBYTE,#%3A !CAPS-LOCK-Taste ?!
|
||||||
|
jr nz,TINT5 !nein!
|
||||||
|
tm STAT3,#B0 !war CAPS-LOCK-STATUS ein ?!
|
||||||
|
jr nz,TINT15 !ja!
|
||||||
|
or STAT3,#B0 !CAPS-LOCK-STATUS ein!
|
||||||
|
jr TINT8
|
||||||
|
TINT15:
|
||||||
|
and STAT3,#NB0 !CAPS-LOCK-STATUS aus!
|
||||||
|
jr TINT8
|
||||||
|
TINT5:
|
||||||
|
cp ZBYTE,#%38 !CTRL-Taste ?!
|
||||||
|
jr nz,TINT6 !nein!
|
||||||
|
and STAT0,#NB5
|
||||||
|
or STAT3,#B1 !CTRL-STATUS ein!
|
||||||
|
jr TINT8
|
||||||
|
TINT6:
|
||||||
|
tm STAT3,#B7 !war Vorbyte E1 ?!
|
||||||
|
jr z,TINT7 !nein!
|
||||||
|
tm STAT3,#B6 !1. Zeichen nach E1 ?!
|
||||||
|
jr nz,TINT7
|
||||||
|
or STAT3,#B6
|
||||||
|
ld r0,r1 !1. Zeichen nach E1!
|
||||||
|
jr TINT0
|
||||||
|
TINT7:
|
||||||
or STAT0,#B4
|
or STAT0,#B4
|
||||||
|
jr TINT0
|
||||||
|
|
||||||
|
! Break-Code !
|
||||||
|
TINT2:
|
||||||
|
and STAT0,#NB5
|
||||||
|
cp ZBYTE,#%AA !SHIFT-Taste ?!
|
||||||
|
jr nz,TINT11 !nein!
|
||||||
|
and STAT3,#NB2 !SHIFT-STATUS aus!
|
||||||
|
jr TINT8
|
||||||
|
TINT11:
|
||||||
|
cp ZBYTE,#%B8 !CTRL-Taste ?!
|
||||||
|
jr nz,TINT12 !nein!
|
||||||
|
and STAT3,#NB1 !CTRL-STATUS aus!
|
||||||
|
jr TINT8
|
||||||
|
TINT12:
|
||||||
|
cp ZBYTE,#%FC !Error Tastatur ?!
|
||||||
|
jr nz,TINT13 !nein!
|
||||||
|
or STAT3,#B5 !ERROR-STATUS ein!
|
||||||
|
jr TINT8
|
||||||
|
TINT13:
|
||||||
|
cp ZBYTE,#%AA !Okay Tastatur ?!
|
||||||
|
jr nz,TINT8 !nein!
|
||||||
|
and STAT3,#NB5 !ERROR-STATUS aus!
|
||||||
|
TINT8:
|
||||||
|
and STAT3,#NB6 land NB7
|
||||||
TINT0:
|
TINT0:
|
||||||
ld r4,#TRES
|
ld r4,#TRES
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -206,6 +206,8 @@ TOUT5:
|
||||||
cp CHAR,#'='
|
cp CHAR,#'='
|
||||||
jr z,TOUT6
|
jr z,TOUT6
|
||||||
cp CHAR,#'#'
|
cp CHAR,#'#'
|
||||||
|
jr z,TOUT10
|
||||||
|
cp CHAR,#'<'
|
||||||
jr z,TOUT7
|
jr z,TOUT7
|
||||||
call PUTA
|
call PUTA
|
||||||
incw rr6
|
incw rr6
|
||||||
|
|
@ -220,6 +222,14 @@ TOUT8:
|
||||||
ld r6,#HI VAF !on!
|
ld r6,#HI VAF !on!
|
||||||
ld r7,#LO VAF
|
ld r7,#LO VAF
|
||||||
jr TOUT5
|
jr TOUT5
|
||||||
|
TOUT10:
|
||||||
|
tm STAT3,#B4 !Eigentest ?!
|
||||||
|
jr z,TOUT10 !nein!
|
||||||
|
tm STAT3,#B5 !Error Tastatur ?!
|
||||||
|
jr z,TOUT7 !nein!
|
||||||
|
ld r6,#HI ERR
|
||||||
|
ld r7,#LO ERR
|
||||||
|
jr TOUT5
|
||||||
TOUT7:
|
TOUT7:
|
||||||
tm STAT2,#B5 !war on/off ?!
|
tm STAT2,#B5 !war on/off ?!
|
||||||
jr nz,TOUT9
|
jr nz,TOUT9
|
||||||
|
|
@ -266,7 +276,7 @@ MAIN10:
|
||||||
! Umschaltung VT100 <---> ADM31 ueber Taste MOD
|
! Umschaltung VT100 <---> ADM31 ueber Taste MOD
|
||||||
********************************************* !
|
********************************************* !
|
||||||
MAIN11:
|
MAIN11:
|
||||||
cp CHAR,#%90
|
cp CHAR,#%F3
|
||||||
jr nz,MAIN14
|
jr nz,MAIN14
|
||||||
tm STAT2,#B3 !VT100/ADM31 ?!
|
tm STAT2,#B3 !VT100/ADM31 ?!
|
||||||
jr nz,ADM31
|
jr nz,ADM31
|
||||||
|
|
@ -281,7 +291,7 @@ ADM31:
|
||||||
! Umschaltung Video Attribute on <---> off ueber Taste VIDEO
|
! Umschaltung Video Attribute on <---> off ueber Taste VIDEO
|
||||||
********************************************************** !
|
********************************************************** !
|
||||||
MAIN14:
|
MAIN14:
|
||||||
cp CHAR,#%A0
|
cp CHAR,#%F4
|
||||||
jr nz,MAIN13
|
jr nz,MAIN13
|
||||||
tm STAT2,#B4 !Video Attribute on/off ?!
|
tm STAT2,#B4 !Video Attribute on/off ?!
|
||||||
jr nz,V_off
|
jr nz,V_off
|
||||||
|
|
@ -315,8 +325,9 @@ END MAIN
|
||||||
|
|
||||||
ADM array [* byte] := 'ADM31/9600 baud/='
|
ADM array [* byte] := 'ADM31/9600 baud/='
|
||||||
VT1 array [* byte] := 'VT100/9600 baud/='
|
VT1 array [* byte] := 'VT100/9600 baud/='
|
||||||
VAN array [* byte] := 'Video Attr. on%R%L#'
|
VAN array [* byte] := 'Video Attr. on (c)zft/keaw%R%L#'
|
||||||
VAF array [* byte] := 'Video Attr. off%R%L#'
|
VAF array [* byte] := 'Video Attr. off (c)zft/keaw%R%L#'
|
||||||
|
ERR array [* byte] := 'Error Tastatur<'
|
||||||
$PAGE
|
$PAGE
|
||||||
|
|
||||||
PUTA PROCEDURE
|
PUTA PROCEDURE
|
||||||
|
|
@ -561,88 +572,119 @@ ENTRY
|
||||||
|
|
||||||
push rp
|
push rp
|
||||||
srp #%20
|
srp #%20
|
||||||
tcm r1,#B7 !Taste mit Vorbyte E1 ?!
|
tm STAT3,#B7 !Taste mit Vorbyte E1 ?!
|
||||||
jr z,TGET0
|
jr z,TGET0 !nein!
|
||||||
tcm r0,#B0
|
and ZBYTE,#NB4
|
||||||
jr z,TGET2
|
jp TGETV
|
||||||
jr TGET3
|
|
||||||
TGET0:
|
TGET0:
|
||||||
ld r6,r1
|
tm STAT0,#B5 !Taste mit Vorbyte E0 ?!
|
||||||
clr r1
|
jp nz,TGETV !ja!
|
||||||
tcm r0,#B0
|
tm STAT3,#B2 !SHIFT-STATUS ein ?!
|
||||||
jr z,TGET3
|
jr z,TGET1 !nein!
|
||||||
ld r1,r6
|
! SHIFT-STATUS !
|
||||||
sub r1,#B7
|
cp ZBYTE,#%35 !Abtastcode 00H ... 35H ?!
|
||||||
|
jr ule,TGET2 !ja!
|
||||||
|
cp ZBYTE,#%56 !Abtastcode 56H ?!
|
||||||
|
jr nz,TGET1 !nein!
|
||||||
|
ld ZBYTE,#'>' !ZBYTE='>'!
|
||||||
|
jp TGETE
|
||||||
|
TGET2:
|
||||||
|
ld r2,#HI SHIFT_Tab
|
||||||
|
ld r3,#LO SHIFT_Tab
|
||||||
add r3,r1
|
add r3,r1
|
||||||
jr nc,TGET1
|
adc r2,#0
|
||||||
inc r2
|
|
||||||
TGET1:
|
|
||||||
ldc r1,@rr2 !Wert aus SHIFT_Tab!
|
ldc r1,@rr2 !Wert aus SHIFT_Tab!
|
||||||
|
tm STAT3,#B0 !CAPS-LOCK-STATUS ein ?!
|
||||||
|
jr z,TGET3 !nein!
|
||||||
|
cp ZBYTE,#'A' !Grossbuchstaben A ... Z ?!
|
||||||
|
jr ult,TGET3 !nein!
|
||||||
|
cp ZBYTE,#'Z'
|
||||||
|
jr ugt,TGET3 !nein!
|
||||||
|
or ZBYTE,#B5 !Grossbuchstaben ---> Kleinbuchstaben!
|
||||||
|
jr TGET3
|
||||||
! NORMAL-STATUS !
|
! NORMAL-STATUS !
|
||||||
|
TGET1:
|
||||||
ld r2,#HI NORMAL_Tab
|
ld r2,#HI NORMAL_Tab
|
||||||
ld r3,#LO NORMAL_Tab
|
ld r3,#LO NORMAL_Tab
|
||||||
jr TGET3
|
add r3,r1
|
||||||
TGET2
|
adc r2,#0
|
||||||
ld r6,r1
|
ldc r1,@rr2 !Wert aus NORMAL_Tab!
|
||||||
clr r1
|
tm STAT3,#B0 !CAPS-LOCK-STATUS ein ?!
|
||||||
tcm r6,#%40
|
jr z,TGET3 !nein!
|
||||||
jr nz,TGET3
|
cp ZBYTE,#'a' !Kleinbuchstaben a ... z ?!
|
||||||
cp r6,#%7B
|
jr ult,TGET3 !nein!
|
||||||
jr gt,TGET3
|
cp ZBYTE,#'z'
|
||||||
and r6,#%1F
|
jr ugt,TGET3 !nein!
|
||||||
ld r1,r6
|
and ZBYTE,#NB5 !Kleinbuchstaben ---> Grossbuchstaben!
|
||||||
jr TGET3
|
|
||||||
TGET3:
|
TGET3:
|
||||||
tcm r0,#%08
|
tm STAT3,#B1 !CTRL-STATUS ein ?!
|
||||||
jr nz,TGET7
|
jr z,TGET5 !nein!
|
||||||
tcm r0,#%02
|
cp ZBYTE,#'@' !CTRL-Zeichen @ ... DEL ?!
|
||||||
jr nz,TGET3
|
jr ult,TGETE !nein!
|
||||||
cp r1,#%41
|
cp ZBYTE,#%7F
|
||||||
jr lt,TGET3
|
jr ugt,TGET5 !nein!
|
||||||
cp r1,#%5A
|
and ZBYTE,#NB5 land NB6 !CTRL-Zeichen!
|
||||||
jr gt,TGET3
|
jr TGETE
|
||||||
add r1,#%20
|
|
||||||
TGET3:
|
|
||||||
ld CHAR,r1
|
|
||||||
tcm r0,#%04
|
|
||||||
jr nz,TGET5
|
|
||||||
tcm STAT1,#%01
|
|
||||||
jr z,TGET6
|
|
||||||
or STAT1,#%01
|
|
||||||
ld r4,#%020
|
|
||||||
ld r5,#%00
|
|
||||||
ldc @rr4,r5
|
|
||||||
jr TGET6
|
|
||||||
TGET5:
|
TGET5:
|
||||||
tcm STAT1,#%01
|
cp ZBYTE,#%F2 !ALT-Taste ?!
|
||||||
jr nz,TGET6
|
jr nz,TGET8 !nein!
|
||||||
|
|
||||||
|
! Umschaltung Zeichensaetze !
|
||||||
|
tm STAT1,#B0
|
||||||
|
jr z,TGET6
|
||||||
! Zeichensatz 1 (amerikanisch) !
|
! Zeichensatz 1 (amerikanisch) !
|
||||||
and STAT1,#NB0
|
and STAT1,#NB0
|
||||||
ld r4,#HI ZG0
|
ld r4,#HI ZG0
|
||||||
ld r5,#LO ZG0
|
ld r5,#LO ZG0
|
||||||
ldc @rr4,r5
|
jr TGET7
|
||||||
|
! Zeichensatz 2 (Umlaute) !
|
||||||
TGET6:
|
TGET6:
|
||||||
|
or STAT1,#B0
|
||||||
|
ld r4,#HI ZG1
|
||||||
|
ld r5,#LO ZG1
|
||||||
|
TGET7:
|
||||||
|
ldc @rr4,r5
|
||||||
|
ld ZBYTE,#%80
|
||||||
|
jr TGETE
|
||||||
|
|
||||||
|
! Behandlung Umlaute !
|
||||||
|
TGET8:
|
||||||
|
tm STAT1,#B0 !Zeichensatz 2 ?!
|
||||||
|
jr z,TGETE !nein!
|
||||||
|
tm STAT3,#B0 !CAPS-LOCK-STATUS ein ?!
|
||||||
|
jr nz,TGETE !ja!
|
||||||
|
cp ZBYTE,#'[' !Zeichen [ ] ?!
|
||||||
|
jr ult,TGETE !nein!
|
||||||
|
cp ZBYTE,#']'
|
||||||
|
jr ugt,TGET9 !nein!
|
||||||
|
add r1,#%20 !ZBYTE=ZBYTE+20H!
|
||||||
|
jr TGETE
|
||||||
|
TGET9:
|
||||||
|
cp ZBYTE,#'{' !Zeichen { | } ?!
|
||||||
|
jr ult,TGETE !nein!
|
||||||
|
cp ZBYTE,#'}'
|
||||||
|
jr ugt,TGETE !nein!
|
||||||
|
sub r1,#%20 !ZBYTE=ZBYTE-20H!
|
||||||
|
jr TGETE
|
||||||
|
|
||||||
|
! Behandlung Taste mit Vorbyte E0 ... !
|
||||||
|
TGETV:
|
||||||
|
or ZBYTE,#B7
|
||||||
|
cp ZBYTE,#%9C !ENTER ?!
|
||||||
|
jr nz,TGETV1 !nein!
|
||||||
|
ld r1,#CR
|
||||||
|
jr TGETE
|
||||||
|
TGETV1:
|
||||||
|
cp ZBYTE,#%B5
|
||||||
|
jr nz,TGETE
|
||||||
|
ld r1,#'/'
|
||||||
|
TGETE:
|
||||||
|
ld CHAR,r1 !CHAR=ZBYTE!
|
||||||
and STAT0,#NB4 land NB5
|
and STAT0,#NB4 land NB5
|
||||||
|
and STAT3,#NB6 land NB7
|
||||||
|
|
||||||
pop rp
|
pop rp
|
||||||
ret
|
ret
|
||||||
TGET7:
|
|
||||||
tm STAT1,#%01
|
|
||||||
jr z,TGET3
|
|
||||||
tm r0,#%02
|
|
||||||
jr z,TGET8
|
|
||||||
cp r1,#%7A
|
|
||||||
jr ule,TGET3
|
|
||||||
cp r1,#%7E
|
|
||||||
jr nc,TGET3
|
|
||||||
sub r1,#%20
|
|
||||||
jr TGET3
|
|
||||||
TGET8:
|
|
||||||
cp r1,#%5A
|
|
||||||
jr ule,TGET3
|
|
||||||
cp r1,#%5E
|
|
||||||
jr nc,TGET3
|
|
||||||
add r1,#%20
|
|
||||||
jr TGET3
|
|
||||||
END TGETCHAR
|
END TGETCHAR
|
||||||
|
|
||||||
$PAGE
|
$PAGE
|
||||||
|
|
@ -749,13 +791,21 @@ Dez/Hex
|
||||||
|
|
||||||
* Zeichengenerator ZG1 (Umlaute)
|
* Zeichengenerator ZG1 (Umlaute)
|
||||||
!
|
!
|
||||||
NORMAL_Tab array [85 byte] :=
|
|
||||||
[%00 %00 %81 %F1 %00 %00 %86 %87 %88 %89 %8A %8B %8C %09 %F0 %00
|
NORMAL_Tab array [89 byte] :=
|
||||||
%00 %00 %00 %00 %00 %00 %00 %00 %00 %00 %00 %1B %00 %9D %0D %00
|
[%2B %1B %31 %32 %33 %34 %35 %36 %37 %38 %39 %30 %7E %27 %7F %81
|
||||||
%80 %82 %81 %85 %00 %00 %00 %00 %00 %00 %00 %00 %2C %00 %00 %00
|
%71 %77 %65 %72 %74 %7A %75 %69 %6F %70 %5D %2B %0D %09 %61 %73
|
||||||
%30 %31 %32 %33 %34 %35 %36 %37 %38 %39 %00 %2E %00 %2D %00 %00
|
%64 %66 %67 %68 %6A %6B %6C %5C %5B %08 %80 %23 %79 %78 %63 %76
|
||||||
%83 %80 %84 %00 %00 %00 %00 %00 %00 %00 %00 %00 %00 %8F %08 %80
|
%62 %6E %6D %2C %2E %2D %80 %2A %80 %20 %80 %F2 %F3 %F4 %F1 %80
|
||||||
%2B %90 %A0 %80 %80]
|
%80 %80 %80 %80 %80 %08 %80 %37 %38 %39 %2D %34 %35 %36 %3D %31
|
||||||
|
%32 %33 %30 %2C %F0 %80 %3C %80 %80]
|
||||||
|
|
||||||
|
SHIFT_Tab array [54 byte] :=
|
||||||
|
[%2B %1B %21 %22 %40 %24 %25 %26 %2F %28 %29 %3D %3F %60 %7F %81
|
||||||
|
%51 %57 %45 %52 %54 %5A %55 %49 %4F %50 %7D %2A %0D %09 %41 %53
|
||||||
|
%44 %46 %47 %48 %4A %4B %4C %7C %7B %08 %00 %5E %59 %58 %43 %56
|
||||||
|
%42 %4E %4D %3B %3A %5F]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$PAGE
|
$PAGE
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue