mirror of
https://github.com/romychs/SprinterESP.git
synced 2025-04-09 21:46:33 +03:00
debug tx-cmd subroutine
This commit is contained in:
parent
fcda0b02d4
commit
89b92be3f6
8
.gitignore
vendored
Normal file
8
.gitignore
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
*.exe
|
||||
*.sld
|
||||
*.labels
|
||||
*.tmp
|
||||
*.bak
|
||||
*.lst
|
||||
*.list
|
||||
.tmp/
|
257
Sources/ESPLib/dss.asm
Normal file
257
Sources/ESPLib/dss.asm
Normal 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
|
@ -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
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
@ -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
|
Loading…
Reference in New Issue
Block a user