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 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 ; Init UART device TL16C550
@ -126,7 +151,8 @@ UART_READ
LD (HL),BC LD (HL),BC
JR UART_READ JR UART_READ
RX_RET RX_RET
INC (HL) INC HL
LD (RX_PTR),HL
RET RET
RX_PTR DW RX_MSG RX_PTR DW RX_MSG
@ -257,8 +283,10 @@ UVR_TO
UVR_OK UVR_OK
POP HL,BC POP HL,BC
IF DEBUG==1 IF DEBUG==1
WAIT_MS DW 0 WAIT_MS
DW 0
UART_WAIT_RS1 UART_WAIT_RS1
AND A ; CF=0
ENDIF ENDIF
RET RET
@ -325,11 +353,16 @@ UART_TX_CMD
; HL - Buffer, BC - Size ; HL - Buffer, BC - Size
CALL UTIL.STRLEN CALL UTIL.STRLEN
CALL UART_TX_BUFFER CALL UART_TX_BUFFER
JR NC, UTC_RCV_NXT JR NC, UTC_STRT_RX
; error, transmit timeout ; error, transmit timeout
LD A, RES_TX_TIMEOUT LD A, RES_TX_TIMEOUT
JR UTC_RET JR UTC_RET
UTC_STRT_RX
; no transmit timeout, receive response ; no transmit timeout, receive response
; IX - pointer to begin of current line
LD IXH, D
LD IXL, E
LD BC,(BSIZE)
UTC_RCV_NXT UTC_RCV_NXT
; wait receiver ready ; wait receiver ready
;LD BC,(WAIT_MS) ;LD BC,(WAIT_MS)
@ -338,15 +371,9 @@ UTC_RCV_NXT
; error, read timeout ; error, read timeout
LD A, RES_RS_TIMEOUT LD A, RES_RS_TIMEOUT
JR UTC_RET JR UTC_RET
; no receive timeout ; no receive timeout
UTC_NO_RT 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 ; read symbol from tty
LD HL, REG_RBR LD HL, REG_RBR
CALL UART_READ CALL UART_READ
@ -356,14 +383,11 @@ UTC_NO_RT
JR Z, UTC_END ; LF - last symbol in responce JR Z, UTC_END ; LF - last symbol in responce
LD (DE),A LD (DE),A
INC DE INC DE
;LD BC,(BSIZE)
DEC BC DEC BC
LD A, B LD A, B
OR C OR C
;LD (BSIZE),BC
JR NZ, UTC_RCV_NXT JR NZ, UTC_RCV_NXT
UTC_END UTC_END
XOR A XOR A
LD (DE),A ; temporary mark end of string LD (DE),A ; temporary mark end of string
@ -403,4 +427,7 @@ UTC_RET
POP HL, DE, BC POP HL, DE, BC
RET RET
; Buffer to receive response from ESP
RS_BUFF DS RS_BUFF_SIZE, 0
ENDMODULE ENDMODULE

View File

@ -6,17 +6,42 @@
; Set to 1 to turn debug ON with DeZog VSCode plugin ; Set to 1 to turn debug ON with DeZog VSCode plugin
; Set to 0 to compile .EXE ; Set to 0 to compile .EXE
DEBUG EQU 1 DEBUG EQU 0
TRACE EQU 1
EXE_VERSION EQU 1 EXE_VERSION EQU 1
DEFAULT_TIMEOUT EQU 2000
SLDOPT COMMENT WPMEM, LOGPOINT, ASSERTION SLDOPT COMMENT WPMEM, LOGPOINT, ASSERTION
DEVICE NOSLOT64K DEVICE NOSLOT64K
IF DEBUG == 1 IF DEBUG == 1
DS 0x8080, 0 INCLUDE "dss.asm"
DB 0
ALIGN 16384, 0
DS 0x80, 0
ENDIF 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 "dss.inc"
INCLUDE "sprinter.inc" INCLUDE "sprinter.inc"
@ -24,6 +49,7 @@ EXE_VERSION EQU 1
ORG 0x8080 ORG 0x8080
; ------------------------------------------------------
EXE_HEADER EXE_HEADER
DB "EXE" DB "EXE"
DB EXE_VERSION ; EXE Version DB EXE_VERSION ; EXE Version
@ -41,46 +67,165 @@ EXE_HEADER
ORG 0x8100 ORG 0x8100
@STACK_TOP @STACK_TOP
; ------------------------------------------------------
START START
; IF DEBUG == 1 IF DEBUG == 1
; LD IX,CMD_LINE1 ; LD IX,CMD_LINE1
; ENDIF LD SP, STACK_TOP
ENDIF
CALL ISA.ISA_RESET CALL ISA.ISA_RESET
LD HL,MSG_START PRINTLN MSG_START
LD C,DSS_PCHARS
RST DSS
IF DEBUG==1 CALL FIND_SWF
LD HL, CMD_TEST1
LD DE, BUFF_TEST1 ; Turn local echo Off
LD BC, 100 CALL INIT_ESP
CALL WIFI.UART_TX_CMD
ENDIF LD B,0
; PUSH IX ; IX ptr to cmd line JP EXIT
; POP HL
; INC HL ; Skip size of Command line
; LD DE,ZIP_FILE NO_TL_FOUND
; CALL GET_CMD_PARAM PRINTLN MSG_SWF_NOF
; JR C,INVALID_CMDLINE LD B,2
; LD DE,FILES_TO_ZIP JP EXIT
; CALL GET_CMD_PARAM
; JR C,INVALID_CMDLINE 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 EXIT
LD BC,DSS_EXIT LD C,DSS_EXIT
RST DSS 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 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 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
ENDIF ENDIF
ENDMODULE ENDMODULE
@ -90,3 +235,13 @@ BUFF_TEST1 DS RS_BUFF_SIZE,0
INCLUDE "esplib.asm" INCLUDE "esplib.asm"
END MAIN.START 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 ; Inp: A = 0 - ISA slot 0, 1 - ISA SLOT 1
; ------------------------------------------------------ ; ------------------------------------------------------
ISA_OPEN ISA_OPEN
PUSH BC PUSH AF,BC
PUSH AF
LD BC, PAGE3 LD BC, PAGE3
IN A,(C) IN A,(C)
LD (SAVE_MMU3), A LD (SAVE_MMU3), A
LD BC, PORT_SYSTEM LD BC, PORT_SYSTEM
LD A, 0x11 LD A, 0x11
OUT (C), A OUT (C), A
POP AF ISA_SLOT+* LD A,0x01
AND A, 0x01 SLA A
RLCA OR A, 0xD4 ; D4 - ISA1, D6 - ISA2
RLCA
OR A, 0xD0 ; 1101 - MAGIC NUMBER, 0100 - 0,ISA PORT, ISA SLOT, 0
LD BC, PAGE3 LD BC, PAGE3
OUT (C), A OUT (C), A
LD BC, PORT_ISA LD BC, PORT_ISA
XOR A XOR A
OUT (C), A OUT (C), A
POP BC POP BC,AF
RET RET

View File

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