debug tx-cmd subroutine

This commit is contained in:
boykovra 2024-07-01 20:39:19 +03:00
parent fcda0b02d4
commit 89b92be3f6
6 changed files with 501 additions and 58 deletions

8
.gitignore vendored Normal file
View File

@ -0,0 +1,8 @@
*.exe
*.sld
*.labels
*.tmp
*.bak
*.lst
*.list
.tmp/

257
Sources/ESPLib/dss.asm Normal file
View File

@ -0,0 +1,257 @@
ORG 0x0000
RESET:
JP NOT_IMPL
DS 5, 0xFF
RST08:
JP NOT_IMPL
DS 5, 0xFF
ORG 0x0010
RST10:
JP DSS_HANDLER
DS 5, 0xFF
RST18:
JP NOT_IMPL
DS 5, 0xFF
RST20:
JP NOT_IMPL
DS 5, 0xFF
RST28:
JP NOT_IMPL
DS 5, 0xFF
RST30:
JP NOT_IMPL
DS 5, 0xFF
RST38:
JP NOT_IMPL
DS 5, 0xFF
DSS_HANDLER
PUSH HL
PUSH BC
LD A, C
CP DSS_CURDISK
JP Z, _CURDISK
CP 0x0B
JP Z, _CREATE_FILE
CP 0x11
JP Z, _OPEN_FILE
CP 0x12
JP Z, _CLOSE_FILE
CP 0x13
JP Z, _READ_FILE
CP 0x14
JP Z, _WRITE_FILE
CP 0x19
JP Z, _FIND_FIRST
CP 0x1D
JP Z, _CH_DIR
CP 0x1E
JP Z, _CURDIR
CP 0x5C
JP Z, _PCHARS
CP 0x41
JP Z, _EXIT
POP BC
POP HL
NOT_IMPL
LD A,0x01
SCF
RET
_PCHARS
LD BC, 0x9000
NXT_PCHAR
LD A, (HL)
OUT (C),A
INC HL
OR A
JR NZ, NXT_PCHAR
NORM_EXIT
AND A ; CF=0
POP BC
POP HL
RET
BAD_EXIT
SCF
POP BC
POP HL
RET
_CURDISK
LD A, 3
JP NORM_EXIT
; Входные значения:
; HL - указатель на файловую спецификацию
; A - атрибут файла
; Выходные значения:
; A — код ошибки, если CF=1
; A - файловый манипулятор, если CF=0
_CREATE_FILE
JP _OPEN_FILE
; Входные значения:
; HL - указатель на файловую спецификацию
; A - режим доступа
; A=0 чтение/запись
; A=1 чтение
; A=2 запись
; Выходные значения:
; A - код ошибки, если CF=1
; A - файловый манипулятор, если CF=0
CUR_FILE_MAN
DB 0x4F
CUR_DIR
DB "\\FOLDER",0
CUR_DIR_END
CUR_DIR_SIZE EQU CUR_DIR_END-CUR_DIR
_OPEN_FILE
LD HL, CUR_FILE_MAN
INC (HL)
LD A, (HL)
JP NORM_EXIT
_CLOSE_FILE
JP NORM_EXIT
CUR_F_PTR
DW ZIP_FILE
REMAINS_IN_ZIP
DW 0
; Входные значения:
; A - файловый манипулятор
; HL - адрес в памяти
; DE - количество читаемых байт
; Выходные значения:
; A - код ошибки, если CF=1
; DE - реальное количество прочитанных байт
; если CF=0:
; A = 0 прочитаны все байты
; A = 0FFh прочитано меньшее число байт
_READ_FILE
OR A
JP Z, BAD_EXIT
PUSH DE
POP BC ; BC - bytes to read
PUSH HL
LD HL, (CUR_F_PTR) ; HL -> IN ZIP_FILE
LD DE, ZIP_FILE_END
EX HL, DE
SUB HL, DE ; HL = remain bytes
LD (REMAINS_IN_ZIP), HL
SBC HL, BC
LD A, 0
JR NC, NO_OUT_OF_ZIP
DEC A
LD HL,(REMAINS_IN_ZIP)
LD BC, HL
NO_OUT_OF_ZIP
LD HL, (CUR_F_PTR)
POP DE ; DE - Buffer to write
PUSH BC
LDIR
POP DE ; DE = bytes read, A = 0 or 0xFF
LD (CUR_F_PTR), HL
JP NORM_EXIT
; Входные значения:
; A - файловый манипулятор
; HL - адрес в памяти
; DE - количество записываемых байт
; Выходные значения:
; A - код ошибки, если CF=1
; DE - реальное количество записанных байт
_WRITE_FILE
PUSH DE
POP BC
LD DE,UNZIP_FILE
PUSH BC
LDIR
POP DE
JP NORM_EXIT
; Входные значения:
; HL - указатель на файловую спецификацию
; Выходные значения:
; A - код ошибки, если CF=1
_CH_DIR
JP NORM_EXIT
; 1Eh (30) CURDIR (Информация о текущем каталоге)
; Входные значения:
; HL - буфер в памяти 256 байт
; Выходные значения:
; A - код ошибки, если CF=1
_CURDIR
PUSH DE
LD DE, CUR_DIR
EX HL,DE
LD BC, CUR_DIR_SIZE
LDIR
POP DE
JP NORM_EXIT
; Входные значения:
; HL - указатель на файловую спецификацию
; DE - рабочий буфер 44 байта, если B=0, иначе 256 байт
; A - атрибуты, используемые при поиске
; B = 0 - имя найденного файла в формате 11 байт "FilenameExt"
; B = 1 - имя найденного файла в формате DOS "filename.ext",0
; C - 19h
; Выходные значения:
; A - код ошибки, если CF=1
_FIND_FIRST
PUSH DE
LD HL, 33 ; offset of file name
ADD HL, DE
EX HL, DE
LD HL, ZIP_FILE_NAME
LD BC,9
LDIR
POP DE
JP NORM_EXIT
_EXIT
; LOGPOINT STOPPED!
HALT
JP _EXIT
ZIP_FILE_NAME
DB "file.zip",0
ZIP_FILE
DS 1024,0
ZIP_FILE_END
UNZIP_FILE
DS 1024,0
ALIGN 16384, 0

View File

@ -77,7 +77,32 @@ RES_DISABLED EQU 8
MODULE WIFI
RS_BUFF DS RS_BUFF_SIZE, 0
; ------------------------------------------------------
; Find TL550C in ISA slot
; Out: CF=1 - Not found, CF=0 - ISA.ISA_SLOT found in slot
; ------------------------------------------------------
UART_FIND
PUSH HL
XOR A
CALL UT_T_SLOT
JR Z, UF_T_FND
LD A,1
CALL UT_T_SLOT
JR Z, UF_T_FND
SCF
UF_T_FND
POP HL
RET
; Test slot, A - ISA Slot no. 0 or 1
UT_T_SLOT
LD (ISA.ISA_SLOT), A
LD HL, REG_IER
CALL UART_READ
AND 0xF0
RET
; ------------------------------------------------------
; Init UART device TL16C550
@ -126,7 +151,8 @@ UART_READ
LD (HL),BC
JR UART_READ
RX_RET
INC (HL)
INC HL
LD (RX_PTR),HL
RET
RX_PTR DW RX_MSG
@ -257,8 +283,10 @@ UVR_TO
UVR_OK
POP HL,BC
IF DEBUG==1
WAIT_MS DW 0
WAIT_MS
DW 0
UART_WAIT_RS1
AND A ; CF=0
ENDIF
RET
@ -325,11 +353,16 @@ UART_TX_CMD
; HL - Buffer, BC - Size
CALL UTIL.STRLEN
CALL UART_TX_BUFFER
JR NC, UTC_RCV_NXT
JR NC, UTC_STRT_RX
; error, transmit timeout
LD A, RES_TX_TIMEOUT
JR UTC_RET
UTC_STRT_RX
; no transmit timeout, receive response
; IX - pointer to begin of current line
LD IXH, D
LD IXL, E
LD BC,(BSIZE)
UTC_RCV_NXT
; wait receiver ready
;LD BC,(WAIT_MS)
@ -338,15 +371,9 @@ UTC_RCV_NXT
; error, read timeout
LD A, RES_RS_TIMEOUT
JR UTC_RET
; no receive timeout
UTC_NO_RT
; IX - pointer to begin of current line
LD IXH, D
LD IXL, E
LD BC,(BSIZE)
;UTC_RCV_NXT
; read symbol from tty
LD HL, REG_RBR
CALL UART_READ
@ -356,14 +383,11 @@ UTC_NO_RT
JR Z, UTC_END ; LF - last symbol in responce
LD (DE),A
INC DE
;LD BC,(BSIZE)
DEC BC
LD A, B
OR C
;LD (BSIZE),BC
JR NZ, UTC_RCV_NXT
UTC_END
XOR A
LD (DE),A ; temporary mark end of string
@ -403,4 +427,7 @@ UTC_RET
POP HL, DE, BC
RET
; Buffer to receive response from ESP
RS_BUFF DS RS_BUFF_SIZE, 0
ENDMODULE

View File

@ -6,17 +6,42 @@
; Set to 1 to turn debug ON with DeZog VSCode plugin
; Set to 0 to compile .EXE
DEBUG EQU 1
DEBUG EQU 0
TRACE EQU 1
EXE_VERSION EQU 1
DEFAULT_TIMEOUT EQU 2000
SLDOPT COMMENT WPMEM, LOGPOINT, ASSERTION
DEVICE NOSLOT64K
IF DEBUG == 1
DS 0x8080, 0
INCLUDE "dss.asm"
DB 0
ALIGN 16384, 0
DS 0x80, 0
ENDIF
MACRO SEND_CMD data
LD HL, data
CALL WIFI.UART_TX_CMD
CALL CHECK_ERROR
ENDM
; MACRO PRINT data
; LD HL,data
; LD C,DSS_PCHARS
; RST DSS
; ENDM
MACRO PRINTLN data
LD HL,data
LD C,DSS_PCHARS
RST DSS
LD HL, LINE_END
RST DSS
ENDM
INCLUDE "dss.inc"
INCLUDE "sprinter.inc"
@ -24,6 +49,7 @@ EXE_VERSION EQU 1
ORG 0x8080
; ------------------------------------------------------
EXE_HEADER
DB "EXE"
DB EXE_VERSION ; EXE Version
@ -41,46 +67,165 @@ EXE_HEADER
ORG 0x8100
@STACK_TOP
; ------------------------------------------------------
START
; IF DEBUG == 1
IF DEBUG == 1
; LD IX,CMD_LINE1
; ENDIF
LD SP, STACK_TOP
ENDIF
CALL ISA.ISA_RESET
LD HL,MSG_START
LD C,DSS_PCHARS
RST DSS
PRINTLN MSG_START
IF DEBUG==1
LD HL, CMD_TEST1
LD DE, BUFF_TEST1
LD BC, 100
CALL WIFI.UART_TX_CMD
ENDIF
; PUSH IX ; IX ptr to cmd line
; POP HL
; INC HL ; Skip size of Command line
; LD DE,ZIP_FILE
; CALL GET_CMD_PARAM
; JR C,INVALID_CMDLINE
; LD DE,FILES_TO_ZIP
; CALL GET_CMD_PARAM
; JR C,INVALID_CMDLINE
CALL FIND_SWF
; Turn local echo Off
CALL INIT_ESP
LD B,0
JP EXIT
NO_TL_FOUND
PRINTLN MSG_SWF_NOF
LD B,2
JP EXIT
CHECK_ERROR
RET NC
ADD A,'0'
LD (COMM_ERROR_NO), A
PRINTLN MSG_COMM_ERROR
LD B,3
POP HL ; ret addr reset
EXIT
LD BC,DSS_EXIT
LD C,DSS_EXIT
RST DSS
FIND_SWF
; Find Sprinter-WiFi
CALL WIFI.UART_FIND
JP C, NO_TL_FOUND
LD A,(ISA.ISA_SLOT)
ADD A,'1'
LD (MSG_SLOT_NO),A
PRINTLN MSG_SWF_FOUND
LD C,DSS_PCHARS
RST DSS
RET
; ------------------------------------------------------
; Init basic parameters of ESP
; ------------------------------------------------------
INIT_ESP
LD DE, WIFI.RS_BUFF
LD BC, DEFAULT_TIMEOUT
IF TRACE
PRINTLN MSG_ECHO_OFF
ENDIF
SEND_CMD CMD_ECHO_OFF
IF TRACE
PRINTLN MSG_STATIOJN_MODE
ENDIF
SEND_CMD CMD_STATION_MODE
IF TRACE
PRINTLN MSG_NO_SLEEP
ENDIF
SEND_CMD CMD_NO_SLEEP
IF TRACE
PRINTLN MSG_SET_UART
ENDIF
SEND_CMD CMD_SET_SPEED
IF TRACE
PRINTLN MSG_SET_OPT
ENDIF
SEND_CMD CMD_CWLAP_OPT
RET
; ------------------------------------------------------
; Messages
; ------------------------------------------------------
MSG_START
DB "ESPSET for Sprinter by Romych's, (c) 2024\n\r\n\r", 0
DB "ESP-Setup for Sprinter-WiFi by Romych's, (c) 2024\r\n", 0
MSG_SWF_NOF
DB "Sprinter-WiFi not found!",0
MSG_SWF_FOUND
DB "Sprinter-WiFi found in ISA#"
MSG_SLOT_NO
DB "n slot.",0
MSG_COMM_ERROR
DB "Error communication with Sprinter-WiFi #"
COMM_ERROR_NO
DB "n!",0
; ------------------------------------------------------
; Debug messages
; ------------------------------------------------------
IF TRACE
MSG_ECHO_OFF
DB "Echo off",0
MSG_STATIOJN_MODE
DB "Station mode",0
MSG_NO_SLEEP
DB "No sleep",0
MSG_SET_UART
DB "Setup uart",0
MSG_SET_OPT
DB "Set options",0
ENDIF
; ------------------------------------------------------
; Commands
; ------------------------------------------------------
CMD_SET_SPEED
DB "AT+UART_CUR=115200,8,1,0,3\r\n",0
CMD_ECHO_OFF
DB "ATE0\r\n",0
CMD_STATION_MODE
DB "AT+CWMODE=1\r\n",0
CMD_NO_SLEEP
DB "AT+SLEEP=0\r\n",0
CMD_CHECK_CONN_AP
DB "AT+CWJAP?\r\n",0
CMD_CWLAP_OPT
DB "AT+CWLAPOPT=1,23\r\n",0
CMD_GET_AP_LIST
DB "AT+CWLAP\r\n",0
CMD_GET_DHCP
DB "AT+CWDHCP?\r\n",0
CMD_SET_DHCP
DB "AT+CWDHCP=1,1\r\n",0
CMD_GET_IP
DB "AT+CIPSTA?\r\n",0
LINE_END
DB "\r\n",0
IF DEBUG == 1
CMD_TEST1 DB "ATE0\r\n",0
BUFF_TEST1 DS RS_BUFF_SIZE,0
ENDIF
ENDMODULE
@ -90,3 +235,13 @@ BUFF_TEST1 DS RS_BUFF_SIZE,0
INCLUDE "esplib.asm"
END MAIN.START
; PUSH IX ; IX ptr to cmd line
; POP HL
; INC HL ; Skip size of Command line
; LD DE,ZIP_FILE
; CALL GET_CMD_PARAM
; JR C,INVALID_CMDLINE
; LD DE,FILES_TO_ZIP
; CALL GET_CMD_PARAM
; JR C,INVALID_CMDLINE

View File

@ -48,25 +48,22 @@ ISA_RESET
; Inp: A = 0 - ISA slot 0, 1 - ISA SLOT 1
; ------------------------------------------------------
ISA_OPEN
PUSH BC
PUSH AF
PUSH AF,BC
LD BC, PAGE3
IN A,(C)
LD (SAVE_MMU3), A
LD BC, PORT_SYSTEM
LD A, 0x11
OUT (C), A
POP AF
AND A, 0x01
RLCA
RLCA
OR A, 0xD0 ; 1101 - MAGIC NUMBER, 0100 - 0,ISA PORT, ISA SLOT, 0
ISA_SLOT+* LD A,0x01
SLA A
OR A, 0xD4 ; D4 - ISA1, D6 - ISA2
LD BC, PAGE3
OUT (C), A
LD BC, PORT_ISA
XOR A
OUT (C), A
POP BC
POP BC,AF
RET

View File

@ -36,13 +36,18 @@ DELAY_1MS
; Out: BC - length of string
; ------------------------------------------------------
STRLEN
PUSH DE,HL
PUSH DE,HL,HL
LD BC,MAX_BUFF_SIZE
XOR A
CPIR
POP DE
SUB HL,DE ; llength of zero ended string
LD BC,HL
LD A, B
OR C
JR Z, STRL_NCOR
DEC BC
STRL_NCOR
POP HL,DE
RET
@ -51,10 +56,9 @@ STRLEN
; Inp: HL, DE - pointers to strinngs to compare
; Out: CF=0 - equal, CF=1 - not equal
; ------------------------------------------------------
STRCMP INCLUDE "util.asm"
INCLUDE "isa.asm"
INCLUDE "esplib.asm"
STRCMP
PUSH DE,HL
STC_NEXT
LD A, (DE)
CP (HL)
JR NZ, STC_NE
@ -66,14 +70,9 @@ STRCMP INCLUDE "util.asm"
STC_NE
SCF
STC_EQ
POP BC,HL,DE
POP HL,DE
RET
POP BC,HL,DE
RET
ENDMODULE