From 6d9428d9885c59eb252ef0717f9942723d5cd9b8 Mon Sep 17 00:00:00 2001 From: boykovra Date: Fri, 2 Aug 2024 19:14:24 +0300 Subject: [PATCH] open local file 1st impl --- sources/DSS/dss.asm | 2 +- sources/DSS/dss.inc | 5 +++ sources/DSS/dss_error.asm | 9 ++-- sources/DSS/espset.asm | 17 ++++--- sources/DSS/isa-test.asm | 4 +- sources/DSS/macro.inc | 2 +- sources/DSS/wcommon.asm | 9 ++-- sources/DSS/wterm.asm | 15 +++---- sources/DSS/wtftp.asm | 95 +++++++++++++++++++++++++++++++-------- 9 files changed, 106 insertions(+), 52 deletions(-) diff --git a/sources/DSS/dss.asm b/sources/DSS/dss.asm index e8a7840..e209dd9 100644 --- a/sources/DSS/dss.asm +++ b/sources/DSS/dss.asm @@ -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 diff --git a/sources/DSS/dss.inc b/sources/DSS/dss.inc index 37bbc4f..14f4569 100644 --- a/sources/DSS/dss.inc +++ b/sources/DSS/dss.inc @@ -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 diff --git a/sources/DSS/dss_error.asm b/sources/DSS/dss_error.asm index 1fbe81f..19b066d 100644 --- a/sources/DSS/dss_error.asm +++ b/sources/DSS/dss_error.asm @@ -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 diff --git a/sources/DSS/espset.asm b/sources/DSS/espset.asm index 0df9db9..513a8c9 100644 --- a/sources/DSS/espset.asm +++ b/sources/DSS/espset.asm @@ -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 diff --git a/sources/DSS/isa-test.asm b/sources/DSS/isa-test.asm index 01b6a51..01a6c14 100644 --- a/sources/DSS/isa-test.asm +++ b/sources/DSS/isa-test.asm @@ -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 diff --git a/sources/DSS/macro.inc b/sources/DSS/macro.inc index c72f0ec..b7372a4 100644 --- a/sources/DSS/macro.inc +++ b/sources/DSS/macro.inc @@ -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 diff --git a/sources/DSS/wcommon.asm b/sources/DSS/wcommon.asm index 6c9f966..6c66b21 100644 --- a/sources/DSS/wcommon.asm +++ b/sources/DSS/wcommon.asm @@ -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 diff --git a/sources/DSS/wterm.asm b/sources/DSS/wterm.asm index dea188f..41f2f38 100644 --- a/sources/DSS/wterm.asm +++ b/sources/DSS/wterm.asm @@ -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 diff --git a/sources/DSS/wtftp.asm b/sources/DSS/wtftp.asm index d1ebf2f..e4ea32a 100644 --- a/sources/DSS/wtftp.asm +++ b/sources/DSS/wtftp.asm @@ -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