Refactoring code for best reuse in other utilities

This commit is contained in:
boykovra 2024-07-11 18:57:55 +03:00
parent 8d5f374035
commit 0a3eb0225e
11 changed files with 129 additions and 200 deletions

View File

@ -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:

View File

@ -1,6 +1,6 @@
; ======================================================
; Defines for DSS Estex for Sprinter computer
; By Romych, 2024
; By Roman Boykov. Copyright (c) 2024
; https://github.com/romychs
; ======================================================

View File

@ -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 в памяти

View File

@ -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();

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -1,6 +1,6 @@
; ======================================================
; Defines for Sprinter computer hardware
; By Romych, 2024
; By Roman Boykov. Copyright (c) 2024
; https://github.com/romychs
; ======================================================

View File

@ -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

View File

@ -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

View File

@ -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