wterm first beta release

This commit is contained in:
boykovra 2024-07-13 00:39:21 +03:00
parent 52a14654c8
commit 0e1722207b
4 changed files with 103 additions and 53 deletions

View File

@ -287,8 +287,13 @@ _FIND_FIRST
_SCANKEY _SCANKEY
XOR A POP BC
JP NORM_EXIT POP HL
LD A,1
AND A
LD E, 'x'
LD B, KB_ALT | KB_L_ALT
RET
; Выходные значения: ; Выходные значения:

View File

@ -41,3 +41,12 @@ DSS_VMOD_G640 EQU 0x82 ; graphics 640x256, 16 colors
E_FILE_EXISTS EQU 7 E_FILE_EXISTS EQU 7
E_FILE_NOT_FOUND EQU 3 E_FILE_NOT_FOUND EQU 3
; Keyboard Shift key status bits
KB_R_ALT EQU 0x01
KB_R_CTRL EQU 0x02
KB_L_ALT EQU 0x04
KB_L_CTRL EQU 0x08
KB_ALT EQU 0x10
KB_CTRL EQU 0x20
KB_R_SHIFT EQU 0x40
KB_L_SHIFT EQU 0x80

View File

@ -202,7 +202,8 @@ UART_WAIT_TR
; Wait, without open/close ISA ; Wait, without open/close ISA
; ;
UART_WAIT_TR_INT UART_WAIT_TR_INT
PUSH AF, BC, HL PUSH BC, HL, DE
LD D,A
LD BC, 500 LD BC, 500
LD HL, REG_LSR LD HL, REG_LSR
WAIT_TR_BZY WAIT_TR_BZY
@ -216,7 +217,8 @@ WAIT_TR_BZY
JR NZ,WAIT_TR_BZY JR NZ,WAIT_TR_BZY
SCF SCF
WAIT_TR_RDY WAIT_TR_RDY
POP HL, BC, AF LD A,D
POP DE, HL, BC
RET RET
; ------------------------------------------------------ ; ------------------------------------------------------
@ -225,12 +227,14 @@ WAIT_TR_RDY
; Out: CF=1 - Not ready ; Out: CF=1 - Not ready
; ------------------------------------------------------ ; ------------------------------------------------------
UART_TX_BYTE UART_TX_BYTE
PUSH DE
CALL UART_WAIT_TR CALL UART_WAIT_TR
JP C, UTB_NOT_R JP C, UTB_NOT_R
LD HL, REG_THR LD HL, REG_THR
CALL UART_WRITE CALL UART_WRITE
XOR A XOR A
UTB_NOT_R UTB_NOT_R
POP DE
RET RET
; ------------------------------------------------------ ; ------------------------------------------------------

View File

@ -61,6 +61,7 @@ START
IF DEBUG == 1 IF DEBUG == 1
; LD IX,CMD_LINE1 ; LD IX,CMD_LINE1
LD SP, STACK_TOP LD SP, STACK_TOP
JP MAIN_LOOP
ENDIF ENDIF
CALL ISA.ISA_RESET CALL ISA.ISA_RESET
@ -83,8 +84,8 @@ START
CALL WIFI.UART_EMPTY_RS CALL WIFI.UART_EMPTY_RS
XOR A ; XOR A
LD (Q_POS),A ; LD (Q_POS),A
MAIN_LOOP MAIN_LOOP
; handle key pressed ; handle key pressed
@ -92,65 +93,67 @@ MAIN_LOOP
RST DSS RST DSS
JP Z,HANDLE_RECEIVE ; if no key pressed JP Z,HANDLE_RECEIVE ; if no key pressed
; check for QUIT command ; Check for Alt+x
LD A,(Q_POS) ; IF TRACE
CP 4 ; LD D,A
JP P,NO_QUIT ; LD A,B
; AND KB_ALT
; JP Z, NO_QUIT
; LD C,D
; PUSH BC,DE,HL
; LD DE, MSG_ALT_KEY
; CALL UTIL.HEXB
; PRINTLN MSG_ALT
; POP HL,DE,BC
LD IX, CMD_QUIT ; ELSE
Q_POS EQU $+2 LD A,D
LD A,(IX+0x00) ;AND 0xDF
; compare current char with "QUIT" str CP 0xAB
CP E JR NZ, NO_QUIT
JR NZ,NO_QUIT LD A,B
AND KB_ALT
LD HL,Q_POS JP NZ, OK_EXIT
INC (HL) ;ENDIF
LD A,(HL)
CP 5
JP Z,OK_EXIT
JR OUT_CHAR
NO_QUIT NO_QUIT
XOR A
LD (Q_POS), A
OUT_CHAR OUT_CHAR
LD A, E LD A, E
CP CR CP CR
JR Z, PUT_CHAR JR NZ, CHK_PRINTABLE
CP 0x20 CALL PUT_A_CHAR
JP M, HANDLE_CR_LF LD A,LF
CALL PUT_A_CHAR
JR TX_SYMBOL
PUT_CHAR CHK_PRINTABLE
CP 0x20
JP M, HANDLE_RECEIVE ; do not print < ' '
CALL PUT_A_CHAR CALL PUT_A_CHAR
HANDLE_CR_LF ; transmitt symbol
TX_SYMBOL
CALL WIFI.UART_TX_BYTE CALL WIFI.UART_TX_BYTE
JP C,TX_WARN JP C,TX_WARN
LD A, E LD A, E
CP CR CP CR
JR NZ,NO_TX_LF
LD E,LF
CALL WIFI.UART_TX_BYTE
JP C,TX_WARN
JR HANDLE_RECEIVE
NO_TX_LF
CP LF
JR NZ,HANDLE_RECEIVE JR NZ,HANDLE_RECEIVE
LD E,CR ; Transmitt LF after CR
LD E,LF
CALL WIFI.UART_TX_BYTE CALL WIFI.UART_TX_BYTE
JP C,TX_WARN JP C,TX_WARN
; check receiver and handle received bytes ; check receiver and handle received bytes
HANDLE_RECEIVE HANDLE_RECEIVE
; check receiver status ; check receiver status
LD HL,REG_LCR LD HL,REG_LSR
CALL WIFI.UART_READ CALL WIFI.UART_READ
CP LSR_RCVE LD D,A
AND LSR_RCVE
JP NZ, RX_WARN JP NZ, RX_WARN
CP LSR_DR LD A,D
AND LSR_DR
JP Z, CHECK_FOR_END JP Z, CHECK_FOR_END
; rx queue is not empty, read ; rx queue is not empty, read
LD HL,REG_RBR LD HL,REG_RBR
@ -167,11 +170,16 @@ HANDLE_RECEIVE
CHK_1F CHK_1F
CP 0x20 CP 0x20
CALL P, PUT_A_CHAR CALL P, PUT_A_CHAR
; reset error counter if received symbol withoud error
XOR A
LD (RX_ERR),A
CHECK_FOR_END CHECK_FOR_END
LD A,(Q_POS) ; LD A,(Q_POS)
CP 5 ; CP 5
JP Z, OK_EXIT ; JP Z, OK_EXIT
JP MAIN_LOOP JP MAIN_LOOP
RX_WARN RX_WARN
@ -179,7 +187,18 @@ RX_WARN
LD DE,MSG_LSR_VALUE LD DE,MSG_LSR_VALUE
CALL UTIL.HEXB CALL UTIL.HEXB
PRINTLN MSG_RX_ERROR PRINTLN MSG_RX_ERROR
JP MAIN_LOOP CALL WIFI.UART_EMPTY_RS
LD HL,RX_ERR
INC (HL)
LD A,(HL)
CP 100
JP M,MAIN_LOOP
; too many RX errors
PRINTLN MSG_MANY_RX_ERROR
LD B,5
JP WCOMMON.EXIT
TX_WARN TX_WARN
PRINTLN MSG_TX_ERROR PRINTLN MSG_TX_ERROR
@ -207,9 +226,10 @@ OK_EXIT
; ------------------------------------------------------ ; ------------------------------------------------------
MSG_START MSG_START
DB "Terminal for Sprinter-WiFi by Sprinter Team. v1.0.1, ", __DATE__, "\r\n", 0 DB "Terminal for Sprinter-WiFi by Sprinter Team. v1.0 beta1, ", __DATE__, "\r\n", 0
MSG_HLP MSG_HLP
DB"\r\nEnter ESP AT command or QUIT to close terminal.",0 DB"\r\nEnter ESP AT command or Alt+x to close terminal.",0
MSG_EXIT
MSG_TX_ERROR MSG_TX_ERROR
DB "Transmitter not ready",0 DB "Transmitter not ready",0
@ -219,6 +239,15 @@ MSG_RX_ERROR
MSG_LSR_VALUE MSG_LSR_VALUE
DB "xx",0 DB "xx",0
MSG_MANY_RX_ERROR
DB "Too many receiver errors!",0
MSG_ALT
DB "Pressed ALT+"
MSG_ALT_KEY
DB "xx",0
; TX_DATA ; TX_DATA
; DB " ",0 ; DB " ",0
; ------------------------------------------------------ ; ------------------------------------------------------
@ -227,6 +256,9 @@ MSG_LSR_VALUE
CMD_QUIT CMD_QUIT
DB "QUIT\r",0 DB "QUIT\r",0
RX_ERR
DB 0
IF DEBUG == 1 IF DEBUG == 1
CMD_TEST1 DB "ATE0\r\n",0 CMD_TEST1 DB "ATE0\r\n",0
BUFF_TEST1 DS RS_BUFF_SIZE,0 BUFF_TEST1 DS RS_BUFF_SIZE,0