From 0a3eb0225ee048a7ad77cd6188ae55ed50403c04 Mon Sep 17 00:00:00 2001 From: boykovra Date: Thu, 11 Jul 2024 18:57:55 +0300 Subject: [PATCH] Refactoring code for best reuse in other utilities --- Sources/ESPLib/dss.asm | 6 +++ Sources/ESPLib/dss.inc | 2 +- Sources/ESPLib/esplib.asm | 5 ++- Sources/ESPLib/esplib.h | 83 ---------------------------------- Sources/ESPLib/espset.asm | 8 ++-- Sources/ESPLib/isa.asm | 34 ++------------ Sources/ESPLib/macro.inc | 11 +++++ Sources/ESPLib/sprinter.inc | 2 +- Sources/ESPLib/util.asm | 29 +++++++++++- Sources/ESPLib/wcommon.asm | 61 +++++++++++++++++++++++++ Sources/ESPLib/wterm.asm | 88 ++++--------------------------------- 11 files changed, 129 insertions(+), 200 deletions(-) delete mode 100644 Sources/ESPLib/esplib.h diff --git a/Sources/ESPLib/dss.asm b/Sources/ESPLib/dss.asm index 3bb10a2..63bf0b1 100644 --- a/Sources/ESPLib/dss.asm +++ b/Sources/ESPLib/dss.asm @@ -1,3 +1,9 @@ +; ====================================================== +; DSS Estex dumb for debug code in VSC with DEZOG plugin +; By Roman Boykov. Copyright (c) 2024 +; https://github.com/romychs +; ====================================================== + ORG 0x0000 RESET: diff --git a/Sources/ESPLib/dss.inc b/Sources/ESPLib/dss.inc index 9fd83ec..2f9fb56 100644 --- a/Sources/ESPLib/dss.inc +++ b/Sources/ESPLib/dss.inc @@ -1,6 +1,6 @@ ; ====================================================== ; Defines for DSS Estex for Sprinter computer -; By Romych, 2024 +; By Roman Boykov. Copyright (c) 2024 ; https://github.com/romychs ; ====================================================== diff --git a/Sources/ESPLib/esplib.asm b/Sources/ESPLib/esplib.asm index c7e3ce9..c180bcf 100644 --- a/Sources/ESPLib/esplib.asm +++ b/Sources/ESPLib/esplib.asm @@ -1,7 +1,8 @@ ; ====================================================== ; Library for Sprinter-WiFi ESP ISA Card -; -; By Romych's, 2024 (c) +; By Roman Boykov. Copyright (c) 2024 +; https://github.com/romychs +; License: BSD 3-Clause ; ====================================================== ;ISA_BASE_A EQU 0xC000 ; Базовый адрес портов ISA в памяти diff --git a/Sources/ESPLib/esplib.h b/Sources/ESPLib/esplib.h deleted file mode 100644 index c24d08c..0000000 --- a/Sources/ESPLib/esplib.h +++ /dev/null @@ -1,83 +0,0 @@ -#pragma nonrec - -#define port_isa 0x9FBD -#define port_system 0x1FFD -#define isa_addr_base 0xC000 -#define com3_addr_base 0x3E8 -#define emm_win_p3 0xE2 -#define port_serial 0xC3E8 - -#define RBR port_serial -#define THR port_serial -#define IER port_serial+1 -#define IIR port_serial+2 -#define FCR port_serial+2 -#define LCR port_serial+3 -#define MCR port_serial+4 -#define LSR port_serial+5 -#define MSR port_serial+6 -#define SCR port_serial+7 -#define DLL port_serial -#define DLM port_serial+1 -#define AFR port_serial+2 - -#define BAUD_RATE 115200 -#define XIN_FREQ 14745600 -#define DIVISOR XIN_FREQ / (BAUD_RATE * 16) - - -/** - * Small delay - */ -void delay(); - -/** - * Reset ISA device - */ -void reset_isa(); - -/* - * Open access to ISA ports as memory - */ -void open_isa(); - -/* - * Close access to ISA ports - */ -void close_isa(); - -/* - * Init ISA device - */ -void init_isa(); - -/* - * Init UART device TL16C550 - */ -void init_serial(); - -/* - * Read TL16C550 register - */ -char read_reg(); - -/* - * Write TL16C550 register - */ -void write_reg(); - -/* - * Wait for transmitter ready - */ -void wait_tr(); - -/* - * Clear receiver FIFO buffer - */ -void empty_rs(); - -/* - * Wait byte in receiver fifo - */ -void wait_rs(); - diff --git a/Sources/ESPLib/espset.asm b/Sources/ESPLib/espset.asm index 5160883..0df9db9 100644 --- a/Sources/ESPLib/espset.asm +++ b/Sources/ESPLib/espset.asm @@ -1,9 +1,11 @@ ; ====================================================== -; ESPSET for SprinterWiFi for Sprinter computer -; By Romych, 2024 +; ESPSET for Sprinter-WiFi for Sprinter computer +; By Roman Boykov. Copyright (c) 2024 ; https://github.com/romychs +; License: BSD 3-Clause ; ====================================================== + ; Set to 1 to turn debug ON with DeZog VSCode plugin ; Set to 0 to compile .EXE DEBUG EQU 0 @@ -198,7 +200,7 @@ SMM_L1 ; ------------------------------------------------------ MSG_START - DB "ESP-Setup for Sprinter-WiFi by Romych's, (c) 2024\r\n", 0 + DB "Setup for Sprinter-WiFi by Sprinter Team, ", __DATE__ ,"\r\n", 0 MSG_SWF_NOF DB "Sprinter-WiFi not found!",0 diff --git a/Sources/ESPLib/isa.asm b/Sources/ESPLib/isa.asm index 9428d74..b3928b3 100644 --- a/Sources/ESPLib/isa.asm +++ b/Sources/ESPLib/isa.asm @@ -1,6 +1,8 @@ ; ====================================================== -; ISA Library for Sprinter -; By Romych's, 2024 (c) +; ISA Library for Sprinter computer +; By Roman Boykov. Copyright (c) 2024 +; https://github.com/romychs +; License: BSD 3-Clause ; ====================================================== PORT_ISA EQU 0x9FBD @@ -18,8 +20,6 @@ ISA_A19 EQU 0x20 ISA_AEN EQU 0x40 ISA_RST EQU 0x80 - - MODULE ISA ; ------------------------------------------------------ @@ -74,33 +74,7 @@ ISA_CLOSE POP BC,AF RET - -; DELAY_20 -; ;IN A,(PAGE1) -; LD A, CTC_CR_VEC | CTC_CR_SWR ; stop timer -; OUT (CTC_CH1), A -; ; Init Ch2 CTC - clk source for Ch3 -; LD A,CTC_CT_PRE | CTC_CR_TCF | CTC_CR_SWR | CTC_CR_VEC -; OUT (CTC_CH2), A -; LD A, 4 -; ; TO2->TRG3 = 875kHz / 256 / 4 = 854,5 Hz -; OUT (CTC_CH2), A - -; LD A, CTC_CT_EI | CTC_CT_CTR | CTC_CR_TCF | CTC_CR_SWR | CTC_CR_VEC -; OUT (CTC_CH3), A -; LD A, 17 -; OUT (CTC_CH3), A - - -; it vector defined in bit 7­3,bit 2­1 don't care, bit 0 = 0 -; and loaded into channel 0 - -; To save memory page 0 -SAVE_MMU0 DB 0 ; To save memory page 3 SAVE_MMU3 DB 0 -; ALIGN 256,0 - - ENDMODULE \ No newline at end of file diff --git a/Sources/ESPLib/macro.inc b/Sources/ESPLib/macro.inc index 7c6bad1..6f39f20 100644 --- a/Sources/ESPLib/macro.inc +++ b/Sources/ESPLib/macro.inc @@ -1,15 +1,25 @@ +; ====================================================== +; Macros for Sprinter-WiFi utilities +; By Roman Boykov. Copyright (c) 2024 +; https://github.com/romychs +; License: BSD 3-Clause +; ====================================================== + + ; Transmit data|command via UART and check response MACRO SEND_CMD data LD HL, data CALL WIFI.UART_TX_CMD CALL CHECK_ERROR ENDM + ; Print data ASCIIZ string to screen MACRO PRINT data LD HL,data LD C,DSS_PCHARS RST DSS ENDM + ; Print data ASCIIZ string to screen and CR+LF MACRO PRINTLN data LD HL,data LD C,DSS_PCHARS @@ -19,6 +29,7 @@ RST DSS ENDM + ; Print data ASCIIZ string to screen if TRACE enabled MACRO TRACELN data IF TRACE == 1 PUSH BC,DE diff --git a/Sources/ESPLib/sprinter.inc b/Sources/ESPLib/sprinter.inc index 41c495f..1a2037c 100644 --- a/Sources/ESPLib/sprinter.inc +++ b/Sources/ESPLib/sprinter.inc @@ -1,6 +1,6 @@ ; ====================================================== ; Defines for Sprinter computer hardware -; By Romych, 2024 +; By Roman Boykov. Copyright (c) 2024 ; https://github.com/romychs ; ====================================================== diff --git a/Sources/ESPLib/util.asm b/Sources/ESPLib/util.asm index af79ba8..3c16254 100644 --- a/Sources/ESPLib/util.asm +++ b/Sources/ESPLib/util.asm @@ -1,4 +1,9 @@ - +; ====================================================== +; Utility code for Sprinter-WiFi utilities +; By Roman Boykov. Copyright (c) 2024 +; https://github.com/romychs +; License: BSD 3-Clause +; ====================================================== MODULE UTIL @@ -151,6 +156,28 @@ STCH_FOUND POP BC RET +; ------------------------------------------------------ +; Convert Byte to hex +; Inp: C +; Out: (DE) +; ------------------------------------------------------ +HEXB + LD A,C + RRA + RRA + RRA + RRA + CALL CONV_NIBLE + LD A,C +CONV_NIBLE + AND 0x0f + ADD A,0x90 + DAA + ADC A,0x40 + DAA + LD (DE), A + INC DE + RET diff --git a/Sources/ESPLib/wcommon.asm b/Sources/ESPLib/wcommon.asm index a53bf64..8ca9a50 100644 --- a/Sources/ESPLib/wcommon.asm +++ b/Sources/ESPLib/wcommon.asm @@ -1,3 +1,10 @@ +; ====================================================== +; Common code for Sprinter-WiFi utilities +; By Roman Boykov. Copyright (c) 2024 +; https://github.com/romychs +; License: BSD 3-Clause +; ====================================================== + MODULE WCOMMON ; ------------------------------------------------------ @@ -9,6 +16,7 @@ CHECK_ERROR ADD A,'0' LD (COMM_ERROR_NO), A PRINTLN MSG_COMM_ERROR + CALL DUMP_UART_REGS LD B,3 POP HL ; ret addr reset @@ -37,6 +45,52 @@ NO_TL_FOUND JP EXIT + IF TRACE +; ------------------------------------------------------ +; Dump all UTL16C550 registers to screen for debug +; ------------------------------------------------------ +DUMP_UART_REGS + ; Dump, DLAB=0 registers + LD BC, 0x0800 + CALL DUMP_REGS + + ; Dump, DLAB=1 registers + LD HL, REG_LCR + LD E, LCR_DLAB | LCR_WL8 + CALL WIFI.UART_WRITE + + LD BC, 0x0210 + CALL DUMP_REGS + + LD HL, REG_LCR + LD E, LCR_WL8 + CALL WIFI.UART_WRITE + RET + +DUMP_REGS + LD HL, PORT_UART_A + +DR_NEXT + LD DE,MSG_DR_RN + CALL UTIL.HEXB + INC C + + CALL WIFI.UART_READ + PUSH BC + LD C,A + LD DE,MSG_DR_RV + CALL UTIL.HEXB + PUSH HL + + PRINTLN MSG_DR + + POP HL,BC + INC HL + DJNZ DR_NEXT + RET + ENDIF + + ; ------------------------------------------------------ ; Store old video mode, set 80x32 and clear ; ------------------------------------------------------ @@ -158,6 +212,13 @@ SAVE_VMODE ; ------------------------------------------------------ IF TRACE +MSG_DR + DB "Reg[0x" +MSG_DR_RN + DB "vv]=0x" +MSG_DR_RV + DB "vv",0 + MSG_ECHO_OFF DB "Echo off",0 diff --git a/Sources/ESPLib/wterm.asm b/Sources/ESPLib/wterm.asm index 41a3719..9ea549e 100644 --- a/Sources/ESPLib/wterm.asm +++ b/Sources/ESPLib/wterm.asm @@ -1,7 +1,9 @@ ; ====================================================== -; WTERM for SprinterWiFi for Sprinter computer -; By Romych, 2024 +; WTERM terminal for Sprinter-WiFi ISA Card +; For Sprinter computer DSS +; By Roman Boykov. Copyright (c) 2024 ; https://github.com/romychs +; License: BSD 3-Clause ; ====================================================== ; Set to 1 to turn debug ON with DeZog VSCode plugin @@ -32,7 +34,7 @@ DEFAULT_TIMEOUT EQU 2000 INCLUDE "dss.inc" INCLUDE "sprinter.inc" - MODULE MAIN + MODULE MAIN ORG 0x8080 ; ------------------------------------------------------ @@ -57,8 +59,8 @@ EXE_HEADER START IF DEBUG == 1 - ; LD IX,CMD_LINE1 - LD SP, STACK_TOP + ; LD IX,CMD_LINE1 + LD SP, STACK_TOP ENDIF CALL ISA.ISA_RESET @@ -77,29 +79,10 @@ START CALL WIFI.UART_EMPTY_RS - ; IF TRACE - ; ; Dump, DLB=0 registers - ; LD BC, 0x0800 - ; CALL DUMP_REGS - - ; ; Dump, DLAB=1 registers - ; LD HL, REG_LCR - ; LD E, LCR_DLAB | LCR_WL8 - ; CALL WIFI.UART_WRITE - - ; LD BC, 0x0210 - ; CALL DUMP_REGS - - ; LD HL, REG_LCR - ; LD E, LCR_WL8 - ; CALL WIFI.UART_WRITE - ; ENDIF - - ; Turn local echo Off CALL WCOMMON.INIT_ESP ; ------------------------------------------------------ -; Do Some +; Do Some ; ------------------------------------------------------ OK_EXIT @@ -107,64 +90,11 @@ OK_EXIT JP WCOMMON.EXIT -DUMP_REGS - LD HL, PORT_UART_A - - -DR_NEXT - LD DE,MSG_DR_RN - CALL HEXB - INC C - - CALL WIFI.UART_READ - PUSH BC - LD C,A - LD DE,MSG_DR_RV - CALL HEXB - PUSH HL - - PRINTLN MSG_DR - - POP HL,BC - INC HL - DJNZ DR_NEXT - RET - -MSG_DR - DB "Reg[0x" -MSG_DR_RN - DB "vv]=0x" -MSG_DR_RV - DB "vv",0 - -; ------------------------------------------------------ -; Byte to hex, -; Inp: C -; Out: (DE) -; ------------------------------------------------------ -HEXB - LD A,C - RRA - RRA - RRA - RRA - CALL CONV_NIBLE - LD A,C -CONV_NIBLE - AND 0x0f - ADD A,0x90 - DAA - ADC A,0x40 - DAA - LD (DE), A - INC DE - RET - ; ------------------------------------------------------ ; Custom messages ; ------------------------------------------------------ MSG_START - DB "WTerm terminal for Sprinter-WiFi by Romych's, (c) 2024\r\n", 0 + DB "Terminal for Sprinter-WiFi by Sprinter Team. v1.0.1, ", __DATE__, "\r\n", 0 ; ------------------------------------------------------ ; Custom commands