add Version 5.0

This commit is contained in:
Oliver Lehmann 2009-08-13 08:44:48 +00:00
parent 72ee4c0862
commit baef93966a
3 changed files with 240 additions and 135 deletions

View File

@ -385,8 +385,9 @@ ENTRY
CP CHAR,#'('
JR Z,ESCG0
CP CHAR,#')'
JR ESCG8
JR z,ESCG8
VIDEO1:
and STAT1,#NB4 land NB7 !ESC- und Video-Flag ruecksetzen!
RET
@ -522,53 +523,50 @@ ENTRY
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:
tm STAT2,#B3 !VT100/ADM31 ?!
jp z,FKT_VT100
! Auswertung der Tasten-Codes ADM31 !
! Cursor Movement Tasten !
ld ESCH0,#FF !Forspace!
cp CHAR,#%86
cp CHAR,#%CD
jp z,FKT_AUS
ld ESCH0,#BS !Backspace!
cp CHAR,#%88
cp CHAR,#%CB
jp z,FKT_AUS
ld ESCH0,#LF !Linefeed!
cp CHAR,#%8A
cp CHAR,#%D0
jr z,FKT_AUS
ld ESCH0,#VT !Verticaltab!
cp CHAR,#%8B
cp CHAR,#%C8
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
cp CHAR,#%CF
jr z,FKT_AUS
! Funktionstasten !
LD ESCH0,#'W' ! char delete !
CP CHAR,#%8F
CP CHAR,#%D2
JR Z,ESC_SEQ_AUS
LD ESCH0,#'Q' ! char insert !
CP CHAR,#%85
CP CHAR,#%C9
JR Z,ESC_SEQ_AUS
LD ESCH0,#'R' ! line delete !
CP CHAR,#%84
CP CHAR,#%D3
JR Z,ESC_SEQ_AUS
LD ESCH0,#'E' ! line insert !
CP CHAR,#%81
CP CHAR,#%D1
JR Z,ESC_SEQ_AUS
LD ESCH0,#'Y' ! page erase !
CP CHAR,#%83
CP CHAR,#%C7
JR Z,ESC_SEQ_AUS
ld ESCH0,#'T'
cp CHAR,#%82
jr z,ESC_SEQ_AUS
ld ESCH0,#'I' ! BACK_TAB !
cp CHAR,#%87
cp CHAR,#%81
jr z,ESC_SEQ_AUS
!------------------------------------------------------!
@ -614,47 +612,38 @@ ESC_AUS1:
FKT_VT100:
! Cursor Movement Tasten !
ld ESCH0,#'C' !Cursor right!
cp CHAR,#%86
cp CHAR,#%CD
jr z,ESC_SEQ_AUS
ld ESCH0,#'D' !Cursor left!
cp CHAR,#%88
cp CHAR,#%CB
jr z,ESC_SEQ_AUS
ld ESCH0,#'B' !Cursor down!
cp CHAR,#%8A
cp CHAR,#%D0
jr z,ESC_SEQ_AUS
ld ESCH0,#'A' !Cursor up!
cp CHAR,#%8B
cp CHAR,#%C8
jr z,ESC_SEQ_AUS
ld ESCH0,#'H' !Cursor home!
cp CHAR,#%8C
cp CHAR,#%CF
jr z,ESC_SEQ_AUS
ld ESCH0,#BS
cp CHAR,#%9D
jr z,FKT_AUS
! Funktionstasten !
ld ESCH0,#'P' !Delete character!
cp CHAR,#%8F
cp CHAR,#%D2
jr z,ESC_SEQ_AUS
ld ESCH0,#'@' !Insert character!
cp CHAR,#%85
cp CHAR,#%C9
jr z,ESC_SEQ_AUS
ld ESCH0,#'M' !Delete line!
cp CHAR,#%84
cp CHAR,#%D3
jr z,ESC_SEQ_AUS
ld ESCH0,#'L' !Insert line!
cp CHAR,#%81
cp CHAR,#%D1
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
cp CHAR,#%C7
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
cp CHAR,#%81
jp z,ESC_SEQ_AUS
jp ESC_OUT0

View File

@ -5,7 +5,8 @@
* 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 *
* Inhalt: *
* - 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 !
SBUFL := 45 ! SIO-Puffer-Laenge !
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 !
B0 := %1 ! bit 0 !
@ -86,7 +87,7 @@ RES4 := %6A ! visible video control !
!ruhender Cursor-Block!
RES5 := %4A !volles Feld blinkend!
RES6 := %7A !Unterstrich!
RES7 := %6C !changed for 4!
RES7 := %5A !Unterstrich blinkend!
! Field Attribute Code !
FAC := %80 ! Field Attribute: Normal Mode !
@ -137,7 +138,7 @@ EXTERNAL
GLOBAL
$SECTION SECR REGISTER
$SECTION REGISTER
$REL 0
! Ports, Status- und Hilfsregister: Reg.-Grp. 0 !
@ -161,7 +162,7 @@ $REL %30
$SECTION SEC0 PROGRAM
$SECTION PROGRAM
$REL 0
INTERRUPT ARRAY [6 WORD] := [IRP32 IRP33 IRP31 IRP30 IRT0 IRT1]
@ -174,7 +175,7 @@ ENTRY
END JP_MESSAGE
! 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
@ -250,8 +251,6 @@ ZADR0:
! IBM (XT) Tastatur und Zeichengenerator vorbereiten !
SRP #%20
ld r2,#%04
ld r3,#%84
LD R4,#ZG0 ! nur High-Adr interessant !
LDC @RR4,R5 ! Scheinausgabe zum Einschalten ZG0 !
ld r4,#TRES
@ -383,22 +382,89 @@ IRP33 PROCEDURE
*******************************************************!
ENTRY
tcm STAT0,#B4
jr z,TINT0
push rp
srp #%20
tcm STAT0,#B5
jr z,TINT1
tcm P2,#%E0
jr nz,TINT0
ld r0,P2
or STAT3,#B4 !Eigentest!
tm STAT0,#B4 !Zeichen verarbeitet ?!
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
jr TINT0
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
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:
ld r4,#TRES
ld r4,#TRES
TINTW:
tcm STAT0,#B0 ! DMA aktiv?, wenn ja, warten !

View File

@ -206,6 +206,8 @@ TOUT5:
cp CHAR,#'='
jr z,TOUT6
cp CHAR,#'#'
jr z,TOUT10
cp CHAR,#'<'
jr z,TOUT7
call PUTA
incw rr6
@ -220,6 +222,14 @@ TOUT8:
ld r6,#HI VAF !on!
ld r7,#LO VAF
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:
tm STAT2,#B5 !war on/off ?!
jr nz,TOUT9
@ -266,7 +276,7 @@ MAIN10:
! Umschaltung VT100 <---> ADM31 ueber Taste MOD
********************************************* !
MAIN11:
cp CHAR,#%90
cp CHAR,#%F3
jr nz,MAIN14
tm STAT2,#B3 !VT100/ADM31 ?!
jr nz,ADM31
@ -281,7 +291,7 @@ ADM31:
! Umschaltung Video Attribute on <---> off ueber Taste VIDEO
********************************************************** !
MAIN14:
cp CHAR,#%A0
cp CHAR,#%F4
jr nz,MAIN13
tm STAT2,#B4 !Video Attribute on/off ?!
jr nz,V_off
@ -315,8 +325,9 @@ END MAIN
ADM array [* byte] := 'ADM31/9600 baud/='
VT1 array [* byte] := 'VT100/9600 baud/='
VAN array [* byte] := 'Video Attr. on%R%L#'
VAF array [* byte] := 'Video Attr. off%R%L#'
VAN array [* byte] := 'Video Attr. on (c)zft/keaw%R%L#'
VAF array [* byte] := 'Video Attr. off (c)zft/keaw%R%L#'
ERR array [* byte] := 'Error Tastatur<'
$PAGE
PUTA PROCEDURE
@ -561,88 +572,119 @@ ENTRY
push rp
srp #%20
tcm r1,#B7 !Taste mit Vorbyte E1 ?!
jr z,TGET0
tcm r0,#B0
jr z,TGET2
jr TGET3
tm STAT3,#B7 !Taste mit Vorbyte E1 ?!
jr z,TGET0 !nein!
and ZBYTE,#NB4
jp TGETV
TGET0:
ld r6,r1
clr r1
tcm r0,#B0
jr z,TGET3
ld r1,r6
sub r1,#B7
tm STAT0,#B5 !Taste mit Vorbyte E0 ?!
jp nz,TGETV !ja!
tm STAT3,#B2 !SHIFT-STATUS ein ?!
jr z,TGET1 !nein!
! SHIFT-STATUS !
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
jr nc,TGET1
inc r2
TGET1:
adc r2,#0
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 !
TGET1:
ld r2,#HI NORMAL_Tab
ld r3,#LO NORMAL_Tab
jr TGET3
TGET2
ld r6,r1
clr r1
tcm r6,#%40
jr nz,TGET3
cp r6,#%7B
jr gt,TGET3
and r6,#%1F
ld r1,r6
jr TGET3
add r3,r1
adc r2,#0
ldc r1,@rr2 !Wert aus NORMAL_Tab!
tm STAT3,#B0 !CAPS-LOCK-STATUS ein ?!
jr z,TGET3 !nein!
cp ZBYTE,#'a' !Kleinbuchstaben a ... z ?!
jr ult,TGET3 !nein!
cp ZBYTE,#'z'
jr ugt,TGET3 !nein!
and ZBYTE,#NB5 !Kleinbuchstaben ---> Grossbuchstaben!
TGET3:
tcm r0,#%08
jr nz,TGET7
tcm r0,#%02
jr nz,TGET3
cp r1,#%41
jr lt,TGET3
cp r1,#%5A
jr gt,TGET3
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
tm STAT3,#B1 !CTRL-STATUS ein ?!
jr z,TGET5 !nein!
cp ZBYTE,#'@' !CTRL-Zeichen @ ... DEL ?!
jr ult,TGETE !nein!
cp ZBYTE,#%7F
jr ugt,TGET5 !nein!
and ZBYTE,#NB5 land NB6 !CTRL-Zeichen!
jr TGETE
TGET5:
tcm STAT1,#%01
jr nz,TGET6
cp ZBYTE,#%F2 !ALT-Taste ?!
jr nz,TGET8 !nein!
! Umschaltung Zeichensaetze !
tm STAT1,#B0
jr z,TGET6
! Zeichensatz 1 (amerikanisch) !
and STAT1,#NB0
ld r4,#HI ZG0
ld r5,#LO ZG0
ldc @rr4,r5
jr TGET7
! Zeichensatz 2 (Umlaute) !
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 STAT3,#NB6 land NB7
pop rp
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
$PAGE
@ -749,13 +791,21 @@ Dez/Hex
* Zeichengenerator ZG1 (Umlaute)
!
NORMAL_Tab array [85 byte] :=
[%00 %00 %81 %F1 %00 %00 %86 %87 %88 %89 %8A %8B %8C %09 %F0 %00
%00 %00 %00 %00 %00 %00 %00 %00 %00 %00 %00 %1B %00 %9D %0D %00
%80 %82 %81 %85 %00 %00 %00 %00 %00 %00 %00 %00 %2C %00 %00 %00
%30 %31 %32 %33 %34 %35 %36 %37 %38 %39 %00 %2E %00 %2D %00 %00
%83 %80 %84 %00 %00 %00 %00 %00 %00 %00 %00 %00 %00 %8F %08 %80
%2B %90 %A0 %80 %80]
NORMAL_Tab array [89 byte] :=
[%2B %1B %31 %32 %33 %34 %35 %36 %37 %38 %39 %30 %7E %27 %7F %81
%71 %77 %65 %72 %74 %7A %75 %69 %6F %70 %5D %2B %0D %09 %61 %73
%64 %66 %67 %68 %6A %6B %6C %5C %5B %08 %80 %23 %79 %78 %63 %76
%62 %6E %6D %2C %2E %2D %80 %2A %80 %20 %80 %F2 %F3 %F4 %F1 %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