open local file 1st impl

This commit is contained in:
boykovra 2024-08-02 19:14:24 +03:00
parent a540189ec7
commit 6d9428d988
9 changed files with 106 additions and 52 deletions

View File

@ -364,7 +364,7 @@ CMD_LINE_TFTP_D
DB " tftp://tftp.server.ru:1024/file_in.asm c:\\tmp\\file_out.asm"Z
CMD_LINE_TFTP_D1
DB " tftp://tftp.server.ru:1024/file_in.asm"Z
DB " tftp://tftp.server.ru:1024/file_in.asm local.asm"Z
CMD_LINE_TFTP_U
DB " file_up.txt tftp://tftp.server.ru:9999/file_in.asm "Z

View File

@ -66,4 +66,9 @@ FA_LABEL EQU 0x08
FA_DIRECTORY EQU 0x10
FA_ARCHIVE EQU 0x20
; File Access mode
FM_READ_WRITE EQU 0x00
FM_READ EQU 0x01
FM_WRITE EQU 0x02
ENDIF

View File

@ -14,14 +14,11 @@ CHECK
PRINT
CALL GET_ERR_MSG
LD C,DSS_PCHARS
RST DSS
LD C,DSS_PCHARS
DSS_EXEC DSS_PCHARS
LD HL, WCOMMON.LINE_END
RST DSS
DSS_EXEC DSS_PCHARS
POP BC ; clear add from stack
LD BC,0x0141 ; and exit
RST DSS
DSS_EXEC 0x0200+DSS_EXIT ; and exit
; ------------------------------------------------------
; Return pointer to DSS error message

View File

@ -6,12 +6,11 @@
; ======================================================
; Set to 1 to turn debug ON with DeZog VSCode plugin
; Set to 0 to compile .EXE
DEBUG EQU 0
; define to turn debug ON with DeZog VSCode plugin
;DEFINE DEBUG
; Set to 1 to output TRACE messages
TRACE EQU 1
; define to output TRACE messages
DEFINE TRACE
; Version of EXE file, 1 for DSS 1.70+
EXE_VERSION EQU 0
@ -23,7 +22,7 @@ DEFAULT_TIMEOUT EQU 2000
DEVICE NOSLOT64K
IF DEBUG == 1
IFDEF DEBUG
INCLUDE "dss.asm"
DB 0
ALIGN 16384, 0
@ -59,7 +58,7 @@ EXE_HEADER
; ------------------------------------------------------
START
IF DEBUG == 1
IFDEF DEBUG
; LD IX,CMD_LINE1
LD SP, STACK_TOP
ENDIF
@ -226,7 +225,7 @@ MSG_ENT_NO
; ------------------------------------------------------
; Debug messages
; ------------------------------------------------------
IF TRACE
IFDEF TRACE
MSG_ECHO_OFF
DB "Echo off",0
@ -277,7 +276,7 @@ LINE_END
IF DEBUG == 1
IFDEF DEBUG
CMD_TEST1 DB "ATE0\r\n",0
BUFF_TEST1 DS RS_BUFF_SIZE,0
ENDIF

View File

@ -51,10 +51,10 @@ EXE_HEADER
; ------------------------------------------------------
START
IF DEBUG == 1
IFDEF DEBUG
; LD IX,CMD_LINE1
LD SP, STACK_TOP
JP MAIN_LOOP
JP MAIN_LOOP
ENDIF
CALL @WCOMMON.INIT_VMODE

View File

@ -34,7 +34,7 @@
; Print data ASCIIZ string to screen if TRACE enabled
MACRO TRACELN data
IF TRACE == 1
IFDEF TRACE
PUSH BC,DE
PRINTLN data
POP DE,BC

View File

@ -26,12 +26,9 @@ CHECK_ERROR
; ------------------------------------------------------
; Program exit point
; ------------------------------------------------------
IFUSED EXIT
EXIT
CALL REST_VMODE
LD C,DSS_EXIT
RST DSS
ENDIF
DSS_EXEC DSS_EXIT
; ------------------------------------------------------
; Search Sprinter WiFi card
; ------------------------------------------------------
@ -57,7 +54,7 @@ NO_TL_FOUND
; Dump all UTL16C550 registers to screen for debug
; ------------------------------------------------------
IFUSED DUMP_UART_REGS
IF TRACE
IFDEF TRACE
DUMP_UART_REGS
; Dump, DLAB=0 registers
LD BC, 0x0800
@ -231,7 +228,7 @@ SAVE_VMODE
; ------------------------------------------------------
; Debug messages
; ------------------------------------------------------
IF TRACE
IFDEF TRACE
MSG_DR
DB "Reg[0x"
MSG_DR_RN

View File

@ -6,12 +6,11 @@
; License: BSD 3-Clause
; ======================================================
; Set to 1 to turn debug ON with DeZog VSCode plugin
; Set to 0 to compile .EXE
DEBUG EQU 0
; Define to turn debug ON with DeZog VSCode plugin
;DEFINE EQU 0
; Set to 1 to output TRACE messages
TRACE EQU 1
; Define to output TRACE messages
DEFINE TRACE
; Version of EXE file, 1 for DSS 1.70+
@ -26,7 +25,7 @@ DEFAULT_TIMEOUT EQU 2000
DEVICE SPRINTER ;NOSLOT64K
IF DEBUG == 1
IFDEF DEBUG
INCLUDE "dss.asm"
DB 0
ALIGN 16384, 0
@ -61,7 +60,7 @@ EXE_HEADER
; ------------------------------------------------------
START
IF DEBUG == 1
IFDEF DEBUG
; LD IX,CMD_LINE1
LD SP, STACK_TOP
JP MAIN_LOOP
@ -239,7 +238,7 @@ CMD_QUIT
RX_ERR
DB 0
IF DEBUG == 1
IFDEF DEBUG
CMD_TEST1 DB "ATE0\r\n"Z
BUFF_TEST1 DS RS_BUFF_SIZE,0
ENDIF

View File

@ -8,10 +8,10 @@
; Set to 1 to turn debug ON with DeZog VSCode plugin
; Set to 0 to compile .EXE
DEBUG EQU 1
DEFINE DEBUG
; Set to 1 to output TRACE messages
TRACE EQU 1
DEFINE TRACE
WM_DOWNLOAD EQU 0
@ -27,13 +27,7 @@ DEFAULT_TIMEOUT EQU 2000
DEVICE NOSLOT64K
; DEFDEVICE SPRINTER, 0x4000, 256, 0,1,2,3
; SLDOPT COMMENT WPMEM, LOGPOINT, ASSERTION
; DEVICE SPRINTER ;NOSLOT64K
IF DEBUG == 1
IFDEF DEBUG
INCLUDE "dss.asm"
DB 0
ALIGN 16384, 0
@ -68,18 +62,20 @@ EXE_HEADER
; ------------------------------------------------------
START
IF DEBUG == 1
LD IX,CMD_LINE_TFTP_D
IFDEF DEBUG
LD IX,CMD_LINE_TFTP_D1
LD SP, STACK_TOP
ENDIF
CALL PARSE_CMD_LINE
;CALL OPEN_LOCAL_FILE
CALL OPEN_LOCAL_FILE
CALL DISPLAY_MODE
CALL CLOSE_LOCAL_FILE
IF DEBUG == 1
IFDEF DEBUG
JP MAIN_LOOP
ENDIF
@ -308,6 +304,9 @@ COPY_LFN
RET NZ ; ok, it is not empty
CALL UTIL.GET_CUR_DIR
//LD DE,HL
LD IX,HAVE_PATH
INC (IX+0)
LD DE,REM_FILE
.CLFN_NXT
LD A,(DE)
@ -327,9 +326,67 @@ COPY_LFN
; WR - for download
; ------------------------------------------------------
OPEN_LOCAL_FILE
LD A, (WORK_MODE)
CP WM_UPLOAD
LD HL,LOC_FILE
LD A,(HAVE_PATH)
OR A
JR NZ,.OLF_SKP_CP
LD HL, WIFI.RS_BUFF
PUSH HL
CALL UTIL.GET_CUR_DIR
LD DE,LOC_FILE
LD B,128
.OLF_NXT
LD A, (DE)
LD (HL),A
OR A
JR Z, .OLF_EFN
INC HL
INC DE
DJNZ .OLF_NXT
.OLF_EFN
POP HL
; HL - points to file path name
.OLF_SKP_CP
LD A, (WORK_MODE)
CP WM_UPLOAD
JR Z,.OLF_UPL
; create new file for write
XOR A
LD C,DSS_CREATE_FILE
RST DSS
JR NC,.OLF_END
CP 0x07 ; file exists?
JP NZ,DSS_ERROR.PRINT ; print error and exit
LD A,FM_WRITE
JR .OLF_FOW
; open existing file for read
.OLF_UPL
LD A,FM_READ
.OLF_FOW
LD C,DSS_OPEN_FILE
RST DSS
CALL DSS_ERROR.CHECK
.OLF_END
LD (LOC_FH),A
TRACELN MSG_LFN_OPEN
RET
IFDEF TRACE
MSG_LFN_OPEN
DB "Local file succes open/created."Z
ENDIF
CLOSE_LOCAL_FILE
LD A,(LOC_FH)
OR A
RET Z
DSS_EXEC DSS_CLOSE_FILE
CALL DSS_ERROR.CHECK
RET
; ------------------------------------------------------
@ -459,10 +516,10 @@ HAVE_PATH
RX_ERR
DB 0
IF DEBUG == 1
CMD_TEST1 DB "ATE0\r\n"Z
BUFF_TEST1 DS RS_BUFF_SIZE,0
ENDIF
; IFDEF DEBUG
; CMD_TEST1 DB "ATE0\r\n"Z
; BUFF_TEST1 DS RS_BUFF_SIZE,0
; ENDIF
ENDMODULE