mirror of
https://github.com/romychs/SprinterESP.git
synced 2026-02-20 09:21:53 +03:00
wterm 1-st impl
This commit is contained in:
parent
89b92be3f6
commit
2a422f7a39
File diff suppressed because it is too large
Load Diff
93
Sources/ESPLib/.vscode/launch.json
vendored
93
Sources/ESPLib/.vscode/launch.json
vendored
@ -1,10 +1,94 @@
|
|||||||
{
|
{
|
||||||
"version": "0.2.0",
|
"version": "0.2.0",
|
||||||
"configurations": [
|
"configurations": [
|
||||||
|
// {
|
||||||
|
// "type": "dezog",
|
||||||
|
// "request": "launch",
|
||||||
|
// "name": "WSET Internal Simulator",
|
||||||
|
// "remoteType": "zsim",
|
||||||
|
// "zsim": {
|
||||||
|
// "visualMemory": true,
|
||||||
|
// "memoryModel": "CUSTOM",
|
||||||
|
// "customMemory": {
|
||||||
|
// "slots": [
|
||||||
|
// {
|
||||||
|
// "name": "PAGE0",
|
||||||
|
// "range": ["0x0000","0x3FFF"],
|
||||||
|
// "banks": [{"index": [0, 255]}],
|
||||||
|
// "initialBank": 0
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// "name": "PAGE1",
|
||||||
|
// "range": ["0x4000","0x7FFF"],
|
||||||
|
// "banks": [{"index": [0, 255]}],
|
||||||
|
// "initialBank": 1
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// "name": "PAGE2",
|
||||||
|
// "range": ["0x8000","0xBFFF"],
|
||||||
|
// "banks": [{"index": [0, 255]}],
|
||||||
|
// "initialBank": 2
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// "name": "PAGE3",
|
||||||
|
// "range": ["0xC000","0xFFFF"],
|
||||||
|
// "banks": [{"index": [0, 255]}],
|
||||||
|
// "initialBank": 3
|
||||||
|
// }
|
||||||
|
// ],
|
||||||
|
// "ioMmu": [
|
||||||
|
// "if (portAddress == 0x82) {",
|
||||||
|
// " bank = portValue;",
|
||||||
|
// " PAGE0 = bank;",
|
||||||
|
// "}",
|
||||||
|
// "if (portAddress == 0xA2) {",
|
||||||
|
// " bank = portValue;",
|
||||||
|
// " PAGE1 = bank;",
|
||||||
|
// "}",
|
||||||
|
// "if (portAddress == 0xC2) {",
|
||||||
|
// " bank = portValue;",
|
||||||
|
// " PAGE2 = bank;",
|
||||||
|
// "}",
|
||||||
|
// "if (portAddress == 0xE2) {",
|
||||||
|
// " bank = portValue;",
|
||||||
|
// " PAGE3 = bank;",
|
||||||
|
// "}"
|
||||||
|
// ]
|
||||||
|
// },
|
||||||
|
// "customCode": {
|
||||||
|
// "debug": false,
|
||||||
|
// "jsPath": "sim/ports.js"
|
||||||
|
// },
|
||||||
|
// },
|
||||||
|
// "sjasmplus": [
|
||||||
|
// {
|
||||||
|
// "path": "espset.sld"
|
||||||
|
// }
|
||||||
|
// ],
|
||||||
|
// "history": {
|
||||||
|
// "reverseDebugInstructionCount": 1000000,
|
||||||
|
// "spotCount": 10,
|
||||||
|
// "codeCoverageEnabled": true
|
||||||
|
// },
|
||||||
|
// "startAutomatically": false,
|
||||||
|
// "commandsAfterLaunch": [],
|
||||||
|
// "rootFolder": "${workspaceFolder}",
|
||||||
|
// "topOfStack": "STACK_TOP",
|
||||||
|
// "loadObjs": [
|
||||||
|
// {
|
||||||
|
// "path": "espset.exe",
|
||||||
|
// "start": "0x0000"
|
||||||
|
// }
|
||||||
|
// ],
|
||||||
|
// "execAddress": "0x8100",
|
||||||
|
// "smallValuesMaximum": 513,
|
||||||
|
// "tmpDir": ".tmp"
|
||||||
|
// },
|
||||||
|
|
||||||
{
|
{
|
||||||
"type": "dezog",
|
"type": "dezog",
|
||||||
"request": "launch",
|
"request": "launch",
|
||||||
"name": "Internal Simulator",
|
"name": "WTERM Internal Simulator",
|
||||||
"remoteType": "zsim",
|
"remoteType": "zsim",
|
||||||
"zsim": {
|
"zsim": {
|
||||||
"visualMemory": true,
|
"visualMemory": true,
|
||||||
@ -62,7 +146,7 @@
|
|||||||
},
|
},
|
||||||
"sjasmplus": [
|
"sjasmplus": [
|
||||||
{
|
{
|
||||||
"path": "espset.sld"
|
"path": "wterm.sld"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"history": {
|
"history": {
|
||||||
@ -76,7 +160,7 @@
|
|||||||
"topOfStack": "STACK_TOP",
|
"topOfStack": "STACK_TOP",
|
||||||
"loadObjs": [
|
"loadObjs": [
|
||||||
{
|
{
|
||||||
"path": "espset.exe",
|
"path": "wterm.exe",
|
||||||
"start": "0x0000"
|
"start": "0x0000"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@ -84,5 +168,6 @@
|
|||||||
"smallValuesMaximum": 513,
|
"smallValuesMaximum": 513,
|
||||||
"tmpDir": ".tmp"
|
"tmpDir": ".tmp"
|
||||||
}
|
}
|
||||||
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
33
Sources/ESPLib/.vscode/tasks.json
vendored
33
Sources/ESPLib/.vscode/tasks.json
vendored
@ -2,7 +2,7 @@
|
|||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"tasks": [
|
"tasks": [
|
||||||
{
|
{
|
||||||
"label": "make (sjasmplus)",
|
"label": "make ESPSET (sjasmplus)",
|
||||||
"type": "shell",
|
"type": "shell",
|
||||||
"command": "sjasmplus",
|
"command": "sjasmplus",
|
||||||
"args": [
|
"args": [
|
||||||
@ -28,7 +28,36 @@
|
|||||||
"isDefault": true
|
"isDefault": true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
|
{
|
||||||
|
"label": "make WTERM (sjasmplus)",
|
||||||
|
"type": "shell",
|
||||||
|
"command": "sjasmplus",
|
||||||
|
"args": [
|
||||||
|
"--sld=wterm.sld",
|
||||||
|
"--sym=wterm.labels",
|
||||||
|
"--raw=wterm.exe",
|
||||||
|
"--fullpath",
|
||||||
|
"wterm.asm"
|
||||||
|
],
|
||||||
|
"problemMatcher": {
|
||||||
|
"owner": "sjasmplus",
|
||||||
|
"fileLocation": "autoDetect",
|
||||||
|
"pattern": {
|
||||||
|
"regexp": "^(.*)\\((\\d+)\\):\\s+(warning|error):\\s+(.*)$",
|
||||||
|
"file": 1,
|
||||||
|
"line": 2,
|
||||||
|
"severity": 3,
|
||||||
|
"message": 4
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"group": {
|
||||||
|
"kind": "build",
|
||||||
|
"isDefault": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
"label": "start mame",
|
"label": "start mame",
|
||||||
"type": "shell",
|
"type": "shell",
|
||||||
"command": "while true; do ./mame spectrum -window -debugger gdbstub -debug -debugger_port 12000 -verbose -resolution 512x384 ; sleep 2 ; done",
|
"command": "while true; do ./mame spectrum -window -debugger gdbstub -debug -debugger_port 12000 -verbose -resolution 512x384 ; sleep 2 ; done",
|
||||||
|
|||||||
@ -56,6 +56,24 @@ DSS_HANDLER
|
|||||||
JP Z, _CH_DIR
|
JP Z, _CH_DIR
|
||||||
CP 0x1E
|
CP 0x1E
|
||||||
JP Z, _CURDIR
|
JP Z, _CURDIR
|
||||||
|
|
||||||
|
CP DSS_WAITKEY
|
||||||
|
JP Z, _WAITKEY
|
||||||
|
|
||||||
|
|
||||||
|
CP DSS_ECHOKEY
|
||||||
|
JP Z, _ECHOKEY
|
||||||
|
|
||||||
|
CP DSS_SETVMOD
|
||||||
|
JP Z, _SETVMOD
|
||||||
|
|
||||||
|
|
||||||
|
CP DSS_GETVMOD
|
||||||
|
JP Z, _GETVMOD
|
||||||
|
|
||||||
|
CP low DSS_CLEAR
|
||||||
|
JP Z, _CLEAR
|
||||||
|
|
||||||
CP 0x5C
|
CP 0x5C
|
||||||
JP Z, _PCHARS
|
JP Z, _PCHARS
|
||||||
CP 0x41
|
CP 0x41
|
||||||
@ -218,6 +236,17 @@ _CURDIR
|
|||||||
POP DE
|
POP DE
|
||||||
JP NORM_EXIT
|
JP NORM_EXIT
|
||||||
|
|
||||||
|
_ECHOKEY
|
||||||
|
PUSH HL
|
||||||
|
LD HL,EC
|
||||||
|
LD C,DSS_PCHARS
|
||||||
|
RST DSS
|
||||||
|
POP HL
|
||||||
|
LD A,(EC)
|
||||||
|
JP NORM_EXIT
|
||||||
|
|
||||||
|
EC DB "3",0
|
||||||
|
|
||||||
; Входные значения:
|
; Входные значения:
|
||||||
; HL - указатель на файловую спецификацию
|
; HL - указатель на файловую спецификацию
|
||||||
; DE - рабочий буфер 44 байта, если B=0, иначе 256 байт
|
; DE - рабочий буфер 44 байта, если B=0, иначе 256 байт
|
||||||
@ -238,6 +267,63 @@ _FIND_FIRST
|
|||||||
POP DE
|
POP DE
|
||||||
JP NORM_EXIT
|
JP NORM_EXIT
|
||||||
|
|
||||||
|
; Выходные значения:
|
||||||
|
; A - код символа
|
||||||
|
; D - позиционный код
|
||||||
|
; Е - ASCII код
|
||||||
|
; C - режим клавиатуры:
|
||||||
|
_WAITKEY
|
||||||
|
XOR A
|
||||||
|
LD D, A
|
||||||
|
LD C, A
|
||||||
|
LD E,65
|
||||||
|
LD A,65
|
||||||
|
JP NORM_EXIT
|
||||||
|
|
||||||
|
|
||||||
|
CUR_VMOD
|
||||||
|
DB 1
|
||||||
|
|
||||||
|
; 50h (80) SETVMOD (Выбор режима экрана)
|
||||||
|
; Входные значения:
|
||||||
|
; A - режим экрана:
|
||||||
|
; 02h - текстовый 40x32x16 цветов;
|
||||||
|
; 03h - текстовый 80x32x16 цветов;
|
||||||
|
; 81h - графический 320x256x256 цветов;
|
||||||
|
; 82h - графический 640x256x16 цветов;
|
||||||
|
; B - страница экрана 0/1
|
||||||
|
; C - 50h
|
||||||
|
; Выходные значения:
|
||||||
|
; A - код ошибки, если CF=1
|
||||||
|
_SETVMOD
|
||||||
|
LD (CUR_VMOD),A
|
||||||
|
JP NORM_EXIT
|
||||||
|
|
||||||
|
; 51h (81) GETVMOD (Получить текущий режим экрана)
|
||||||
|
; Входные значения:
|
||||||
|
; C - 51h
|
||||||
|
; Выходные значения:
|
||||||
|
; A - код ошибки, если CF=1
|
||||||
|
; A - текущий режим экрана, если CF=0
|
||||||
|
; B - страница экрана 0/1
|
||||||
|
_GETVMOD
|
||||||
|
LD A,(CUR_VMOD)
|
||||||
|
JP NORM_EXIT
|
||||||
|
|
||||||
|
; 56h (86) CLEAR (Очистка окна)
|
||||||
|
; Входные значения:
|
||||||
|
; D - строка левого верхнего угла окна
|
||||||
|
; E - столбец левого верхнего угла окна
|
||||||
|
; H - высота окна
|
||||||
|
; L - ширина окна
|
||||||
|
; B - атрибут заполнитель
|
||||||
|
; A - символ заполнитель
|
||||||
|
; C - 56h
|
||||||
|
; Выходные значения:
|
||||||
|
; нет
|
||||||
|
_CLEAR
|
||||||
|
JP NORM_EXIT
|
||||||
|
|
||||||
|
|
||||||
_EXIT
|
_EXIT
|
||||||
; LOGPOINT STOPPED!
|
; LOGPOINT STOPPED!
|
||||||
|
|||||||
@ -20,9 +20,22 @@ DSS_FIND_NEXT EQU 0x011A
|
|||||||
DSS_MKDIR EQU 0x1B
|
DSS_MKDIR EQU 0x1B
|
||||||
DSS_CHDIR EQU 0x1D
|
DSS_CHDIR EQU 0x1D
|
||||||
DSS_CURDIR EQU 0x1E
|
DSS_CURDIR EQU 0x1E
|
||||||
|
DSS_ECHOKEY EQU 0x32
|
||||||
DSS_EXIT EQU 0x41
|
DSS_EXIT EQU 0x41
|
||||||
|
DSS_WAITKEY EQU 0x48
|
||||||
|
DSS_SETVMOD EQU 0x50
|
||||||
|
DSS_GETVMOD EQU 0x51
|
||||||
|
DSS_CLEAR EQU 0x56
|
||||||
DSS_PCHARS EQU 0x5C
|
DSS_PCHARS EQU 0x5C
|
||||||
|
|
||||||
|
|
||||||
|
DSS_VMOD_T40 EQU 0x02 ; text 40x32, 16 colors
|
||||||
|
DSS_VMOD_T80 EQU 0x03 ; text 80x32, 16 colors
|
||||||
|
DSS_VMOD_G320 EQU 0x81 ; graphics 320x256, 256 colors
|
||||||
|
DSS_VMOD_G640 EQU 0x82 ; graphics 640x256, 16 colors
|
||||||
|
|
||||||
|
|
||||||
; DSS Error codes
|
; DSS Error codes
|
||||||
E_FILE_EXISTS EQU 7
|
E_FILE_EXISTS EQU 7
|
||||||
E_FILE_NOT_FOUND EQU 3
|
E_FILE_NOT_FOUND EQU 3
|
||||||
|
|
||||||
|
|||||||
@ -9,8 +9,8 @@ PORT_UART EQU 0x03E8 ; Базовый номер порта COM3
|
|||||||
PORT_UART_A EQU ISA_BASE_A + PORT_UART ; Порты чипа UART в памяти
|
PORT_UART_A EQU ISA_BASE_A + PORT_UART ; Порты чипа UART в памяти
|
||||||
|
|
||||||
; UART TC16C550 Registers in memory
|
; UART TC16C550 Registers in memory
|
||||||
REG_RBR EQU PORT_UART_A + 0
|
REG_RBR EQU PORT_UART_A
|
||||||
REG_THR EQU PORT_UART_A + 0
|
REG_THR EQU PORT_UART_A
|
||||||
REG_IER EQU PORT_UART_A + 1
|
REG_IER EQU PORT_UART_A + 1
|
||||||
REG_IIR EQU PORT_UART_A + 2
|
REG_IIR EQU PORT_UART_A + 2
|
||||||
REG_FCR EQU PORT_UART_A + 2
|
REG_FCR EQU PORT_UART_A + 2
|
||||||
@ -19,10 +19,12 @@ REG_MCR EQU PORT_UART_A + 4
|
|||||||
REG_LSR EQU PORT_UART_A + 5
|
REG_LSR EQU PORT_UART_A + 5
|
||||||
REG_MSR EQU PORT_UART_A + 6
|
REG_MSR EQU PORT_UART_A + 6
|
||||||
REG_SCR EQU PORT_UART_A + 7
|
REG_SCR EQU PORT_UART_A + 7
|
||||||
REG_DLL EQU PORT_UART_A + 0
|
REG_DLL EQU PORT_UART_A
|
||||||
REG_DLM EQU PORT_UART_A + 1
|
REG_DLM EQU PORT_UART_A + 1
|
||||||
REG_AFR EQU PORT_UART_A + 2
|
REG_AFR EQU PORT_UART_A + 2
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; UART TC16C550 Register bits
|
; UART TC16C550 Register bits
|
||||||
MCR_DTR EQU 0x01
|
MCR_DTR EQU 0x01
|
||||||
MCR_RTS EQU 0x02
|
MCR_RTS EQU 0x02
|
||||||
@ -77,6 +79,22 @@ RES_DISABLED EQU 8
|
|||||||
|
|
||||||
MODULE WIFI
|
MODULE WIFI
|
||||||
|
|
||||||
|
; -- UART Registers offset
|
||||||
|
|
||||||
|
_RBR EQU 0
|
||||||
|
_THR EQU 0
|
||||||
|
_IER EQU 1
|
||||||
|
_IIR EQU 2
|
||||||
|
_FCR EQU 2
|
||||||
|
_LCR EQU 3
|
||||||
|
_MCR EQU 4
|
||||||
|
_LSR EQU 5
|
||||||
|
_MSR EQU 6
|
||||||
|
_SCR EQU 7
|
||||||
|
_DLL EQU 0
|
||||||
|
_DLM EQU 1
|
||||||
|
_AFR EQU 2
|
||||||
|
|
||||||
|
|
||||||
; ------------------------------------------------------
|
; ------------------------------------------------------
|
||||||
; Find TL550C in ISA slot
|
; Find TL550C in ISA slot
|
||||||
@ -108,26 +126,27 @@ UT_T_SLOT
|
|||||||
; Init UART device TL16C550
|
; Init UART device TL16C550
|
||||||
; ------------------------------------------------------
|
; ------------------------------------------------------
|
||||||
UART_INIT
|
UART_INIT
|
||||||
PUSH AF
|
PUSH AF, IX
|
||||||
PUSH HL
|
|
||||||
CALL ISA.ISA_OPEN
|
CALL ISA.ISA_OPEN
|
||||||
LD A, FCR_TR14 | FCR_FIFO ; Enable FIFO buffer, trigger to 14 byte
|
LD IX, PORT_UART_A
|
||||||
LD (REG_FCR),A
|
LD A, FCR_TR8 | FCR_FIFO ; Enable FIFO buffer, trigger to 14 byte
|
||||||
|
LD (IX+_FCR),A
|
||||||
XOR A
|
XOR A
|
||||||
LD (REG_IER), A ; Disable interrupts
|
LD (IX+_IER), A ; Disable interrupts
|
||||||
|
|
||||||
; Set 8bit word and Divisor for speed
|
; Set 8bit word and Divisor for speed
|
||||||
LD A, LCR_DLAB | LCR_WL8
|
LD A, LCR_DLAB | LCR_WL8
|
||||||
LD (REG_LCR), A ; Enable Baud rate latch
|
LD (IX+_LCR), A ; Enable Baud rate latch
|
||||||
LD A, DIVISOR
|
LD A, DIVISOR
|
||||||
LD (REG_DLL), A ; 8 - 115200
|
LD (IX+_DLL), A ; 8 - 115200
|
||||||
XOR A
|
XOR A
|
||||||
LD (REG_DLM), A
|
LD (IX+_DLM), A
|
||||||
LD A, LCR_WL8 ; 8bit word, disable latch
|
LD A, LCR_WL8 ; 8bit word, disable latch
|
||||||
LD (REG_LCR), A
|
LD (IX+_LCR), A
|
||||||
CALL ISA.ISA_CLOSE
|
CALL ISA.ISA_CLOSE
|
||||||
POP HL
|
|
||||||
POP AF
|
POP IX,AF
|
||||||
RET
|
RET
|
||||||
|
|
||||||
; ------------------------------------------------------
|
; ------------------------------------------------------
|
||||||
@ -136,28 +155,10 @@ UART_INIT
|
|||||||
; Out: A - value from register
|
; Out: A - value from register
|
||||||
; ------------------------------------------------------
|
; ------------------------------------------------------
|
||||||
UART_READ
|
UART_READ
|
||||||
IF DEBUG==0
|
|
||||||
CALL ISA.ISA_OPEN
|
CALL ISA.ISA_OPEN
|
||||||
LD A, (HL)
|
LD A, (HL)
|
||||||
CALL ISA.ISA_CLOSE
|
CALL ISA.ISA_CLOSE
|
||||||
RET
|
RET
|
||||||
ELSE
|
|
||||||
; --- DEBUG
|
|
||||||
LD HL,(RX_PTR)
|
|
||||||
LD A,(HL)
|
|
||||||
OR A
|
|
||||||
JR NZ, RX_RET
|
|
||||||
LD BC, RX_MSG
|
|
||||||
LD (HL),BC
|
|
||||||
JR UART_READ
|
|
||||||
RX_RET
|
|
||||||
INC HL
|
|
||||||
LD (RX_PTR),HL
|
|
||||||
RET
|
|
||||||
|
|
||||||
RX_PTR DW RX_MSG
|
|
||||||
RX_MSG DB "WiFi module\r\nOK\r\n",0
|
|
||||||
ENDIF
|
|
||||||
|
|
||||||
; ------------------------------------------------------
|
; ------------------------------------------------------
|
||||||
; Write TL16C550 register
|
; Write TL16C550 register
|
||||||
@ -174,23 +175,25 @@ UART_WRITE
|
|||||||
; Out: CF=1 - tr not ready, CF=0 ready
|
; Out: CF=1 - tr not ready, CF=0 ready
|
||||||
; ------------------------------------------------------
|
; ------------------------------------------------------
|
||||||
UART_WAIT_TR
|
UART_WAIT_TR
|
||||||
PUSH BC, HL
|
PUSH AF, BC, HL
|
||||||
|
|
||||||
CALL ISA.ISA_OPEN
|
CALL ISA.ISA_OPEN
|
||||||
LD BC, 200
|
LD BC, 100
|
||||||
LD HL, REG_LSR
|
LD HL, REG_LSR
|
||||||
WAIT_TR_R
|
WAIT_TR_BZY
|
||||||
LD A,(HL)
|
LD A,(HL)
|
||||||
AND A, LSR_THRE
|
AND A, LSR_THRE
|
||||||
JP NZ,WAIT_TR_E
|
JR NZ,WAIT_TR_RDY
|
||||||
CALL UTIL.DELAY_1MS
|
CALL UTIL.DELAY_1MS
|
||||||
DEC BC
|
DEC BC
|
||||||
LD A, C
|
LD A, C
|
||||||
OR B
|
OR B
|
||||||
JP NZ,WAIT_TR_R
|
JR NZ,WAIT_TR_BZY
|
||||||
SCF
|
SCF
|
||||||
WAIT_TR_E
|
WAIT_TR_RDY
|
||||||
CALL ISA.ISA_CLOSE
|
CALL ISA.ISA_CLOSE
|
||||||
POP HL, BC
|
|
||||||
|
POP HL, BC, AF
|
||||||
RET
|
RET
|
||||||
|
|
||||||
; ------------------------------------------------------
|
; ------------------------------------------------------
|
||||||
@ -212,7 +215,6 @@ UTB_NOT_R
|
|||||||
; Inp: HL -> buffer, BC - size
|
; Inp: HL -> buffer, BC - size
|
||||||
; Out: CF=0 - Ok, CF=1 - Timeout
|
; Out: CF=0 - Ok, CF=1 - Timeout
|
||||||
; ------------------------------------------------------
|
; ------------------------------------------------------
|
||||||
IF DEBUG==0
|
|
||||||
UART_TX_BUFFER
|
UART_TX_BUFFER
|
||||||
PUSH BC,DE,HL
|
PUSH BC,DE,HL
|
||||||
LD DE, REG_THR
|
LD DE, REG_THR
|
||||||
@ -237,22 +239,17 @@ UTX_EMP
|
|||||||
CALL ISA.ISA_CLOSE
|
CALL ISA.ISA_CLOSE
|
||||||
POP HL,DE,BC
|
POP HL,DE,BC
|
||||||
RET
|
RET
|
||||||
ELSE
|
|
||||||
; --- DEBUG
|
|
||||||
UART_TX_BUFFER
|
|
||||||
XOR A
|
|
||||||
RET
|
|
||||||
ENDIF
|
|
||||||
; ------------------------------------------------------
|
; ------------------------------------------------------
|
||||||
; Empty receiver FIFO buffer
|
; Empty receiver FIFO buffer
|
||||||
; ------------------------------------------------------
|
; ------------------------------------------------------
|
||||||
UART_EMPTY_RS
|
UART_EMPTY_RS
|
||||||
PUSH AF
|
PUSH AF, HL
|
||||||
CALL ISA.ISA_OPEN
|
CALL ISA.ISA_OPEN
|
||||||
LD A, FCR_TR14 | FCR_RESET_RX | FCR_FIFO
|
LD A, FCR_TR8 | FCR_RESET_RX | FCR_FIFO
|
||||||
LD (REG_FCR), A
|
LD HL, REG_FCR
|
||||||
|
LD (HL), A
|
||||||
CALL ISA.ISA_CLOSE
|
CALL ISA.ISA_CLOSE
|
||||||
POP AF
|
POP HL, AF
|
||||||
RET
|
RET
|
||||||
|
|
||||||
; ------------------------------------------------------
|
; ------------------------------------------------------
|
||||||
@ -260,61 +257,50 @@ UART_EMPTY_RS
|
|||||||
; Inp: BC - Wait ms
|
; Inp: BC - Wait ms
|
||||||
; Out: CF=1 - Timeout, FIFO is EMPTY
|
; Out: CF=1 - Timeout, FIFO is EMPTY
|
||||||
; ------------------------------------------------------
|
; ------------------------------------------------------
|
||||||
IF DEBUG==0
|
|
||||||
UART_WAIT_RS1
|
UART_WAIT_RS1
|
||||||
PUSH BC,HL
|
PUSH BC,HL
|
||||||
WAIT_MS+* LD BC,0x0000
|
WAIT_MS+* LD BC,0x0000
|
||||||
JR UVR_NEXT
|
JR UVR_NEXT
|
||||||
ENDIF
|
|
||||||
UART_WAIT_RS
|
UART_WAIT_RS
|
||||||
PUSH BC,HL
|
PUSH BC,HL
|
||||||
UVR_NEXT
|
UVR_NEXT
|
||||||
LD HL, REG_LSR
|
LD HL, REG_LSR
|
||||||
CALL UART_READ
|
CALL UART_READ
|
||||||
AND LSR_DR
|
AND LSR_DR
|
||||||
JR Z,UVR_OK
|
JR NZ,UVR_OK
|
||||||
CALL UTIL.DELAY_1MS
|
CALL UTIL.DELAY_1MS
|
||||||
DEC BC
|
DEC BC
|
||||||
LD A,B
|
LD A,B
|
||||||
OR A,C
|
OR C
|
||||||
JR NZ,UVR_NEXT
|
JR NZ,UVR_NEXT
|
||||||
UVR_TO
|
UVR_TO
|
||||||
SCF
|
SCF
|
||||||
UVR_OK
|
UVR_OK
|
||||||
POP HL,BC
|
POP HL,BC
|
||||||
IF DEBUG==1
|
|
||||||
WAIT_MS
|
|
||||||
DW 0
|
|
||||||
UART_WAIT_RS1
|
|
||||||
AND A ; CF=0
|
|
||||||
ENDIF
|
|
||||||
RET
|
RET
|
||||||
|
|
||||||
|
|
||||||
; ------------------------------------------------------
|
; ------------------------------------------------------
|
||||||
; Reset ESP module
|
; Reset ESP module
|
||||||
; Inp: A != 0 - Full Reset
|
|
||||||
; ------------------------------------------------------
|
; ------------------------------------------------------
|
||||||
ESP_RESET
|
ESP_RESET
|
||||||
PUSH HL, AF
|
PUSH AF,HL
|
||||||
|
|
||||||
CALL ISA.ISA_OPEN
|
CALL ISA.ISA_OPEN
|
||||||
AND A
|
|
||||||
JR Z, ESPR_SHRT
|
|
||||||
LD HL, REG_MCR
|
LD HL, REG_MCR
|
||||||
LD A, MCR_RST | MCR_RTS ; 0110b ESP -PGM=1, -RST=0, -RTS=0
|
LD A, MCR_RST | MCR_RTS ; 0110b ESP -PGM=1, -RST=0, -RTS=0
|
||||||
LD (HL), A
|
LD (HL), A
|
||||||
CALL UTIL.DELAY
|
CALL UTIL.DELAY_1MS
|
||||||
ESPR_SHRT
|
;LD HL, REG_MCR
|
||||||
LD A, MCR_AFE | MCR_RTS ; 0x22 -RST = 1 -RTS=0 AutoFlow enabled
|
LD A, MCR_AFE | MCR_RTS ; 0x22 -RST = 1 -RTS=0 AutoFlow enabled
|
||||||
LD (HL), A
|
LD (HL), A
|
||||||
|
|
||||||
CALL ISA.ISA_CLOSE
|
CALL ISA.ISA_CLOSE
|
||||||
POP AF
|
|
||||||
AND A
|
LD HL,2000
|
||||||
JR Z,ESPR_NW
|
|
||||||
LD HL,0xFFFF
|
|
||||||
CALL UTIL.DELAY
|
CALL UTIL.DELAY
|
||||||
ESPR_NW
|
|
||||||
POP HL
|
POP HL,AF
|
||||||
RET
|
RET
|
||||||
|
|
||||||
|
|
||||||
@ -427,6 +413,7 @@ UTC_RET
|
|||||||
POP HL, DE, BC
|
POP HL, DE, BC
|
||||||
RET
|
RET
|
||||||
|
|
||||||
|
|
||||||
; Buffer to receive response from ESP
|
; Buffer to receive response from ESP
|
||||||
RS_BUFF DS RS_BUFF_SIZE, 0
|
RS_BUFF DS RS_BUFF_SIZE, 0
|
||||||
|
|
||||||
|
|||||||
@ -7,8 +7,14 @@
|
|||||||
; Set to 1 to turn debug ON with DeZog VSCode plugin
|
; Set to 1 to turn debug ON with DeZog VSCode plugin
|
||||||
; Set to 0 to compile .EXE
|
; Set to 0 to compile .EXE
|
||||||
DEBUG EQU 0
|
DEBUG EQU 0
|
||||||
|
|
||||||
|
; Set to 1 to output TRACE messages
|
||||||
TRACE EQU 1
|
TRACE EQU 1
|
||||||
EXE_VERSION EQU 1
|
|
||||||
|
; Version of EXE file, 1 for DSS 1.70+
|
||||||
|
EXE_VERSION EQU 0
|
||||||
|
|
||||||
|
; Timeout to wait ESP response
|
||||||
DEFAULT_TIMEOUT EQU 2000
|
DEFAULT_TIMEOUT EQU 2000
|
||||||
|
|
||||||
SLDOPT COMMENT WPMEM, LOGPOINT, ASSERTION
|
SLDOPT COMMENT WPMEM, LOGPOINT, ASSERTION
|
||||||
@ -22,26 +28,7 @@ DEFAULT_TIMEOUT EQU 2000
|
|||||||
DS 0x80, 0
|
DS 0x80, 0
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
MACRO SEND_CMD data
|
INCLUDE "macro.inc"
|
||||||
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 "dss.inc"
|
||||||
INCLUDE "sprinter.inc"
|
INCLUDE "sprinter.inc"
|
||||||
|
|
||||||
@ -74,7 +61,8 @@ START
|
|||||||
; LD IX,CMD_LINE1
|
; LD IX,CMD_LINE1
|
||||||
LD SP, STACK_TOP
|
LD SP, STACK_TOP
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
|
|
||||||
CALL ISA.ISA_RESET
|
CALL ISA.ISA_RESET
|
||||||
|
|
||||||
PRINTLN MSG_START
|
PRINTLN MSG_START
|
||||||
@ -84,15 +72,37 @@ START
|
|||||||
; Turn local echo Off
|
; Turn local echo Off
|
||||||
CALL INIT_ESP
|
CALL INIT_ESP
|
||||||
|
|
||||||
|
; Display main menu to make selection
|
||||||
|
MENU_AGAIN
|
||||||
|
CALL SELECT_MAIN_MENU
|
||||||
|
|
||||||
|
; Do somethink with selected item
|
||||||
|
AND A
|
||||||
|
JR Z, MENU_EXIT
|
||||||
|
DEC A
|
||||||
|
JP Z, MENU_SELECT_WIFI
|
||||||
|
DEC A
|
||||||
|
JP Z, MENU_CONFIGURE_IP
|
||||||
|
DEC A
|
||||||
|
JP Z, MENU_DISPLAY_INFO
|
||||||
|
JP MENU_AGAIN
|
||||||
|
|
||||||
|
MENU_EXIT
|
||||||
LD B,0
|
LD B,0
|
||||||
JP EXIT
|
JP EXIT
|
||||||
|
|
||||||
|
|
||||||
|
MENU_SELECT_WIFI
|
||||||
|
MENU_CONFIGURE_IP
|
||||||
|
MENU_DISPLAY_INFO
|
||||||
|
JP MENU_AGAIN
|
||||||
|
|
||||||
NO_TL_FOUND
|
NO_TL_FOUND
|
||||||
PRINTLN MSG_SWF_NOF
|
PRINTLN MSG_SWF_NOF
|
||||||
LD B,2
|
LD B,2
|
||||||
JP EXIT
|
JP EXIT
|
||||||
|
|
||||||
|
|
||||||
CHECK_ERROR
|
CHECK_ERROR
|
||||||
RET NC
|
RET NC
|
||||||
ADD A,'0'
|
ADD A,'0'
|
||||||
@ -123,38 +133,69 @@ FIND_SWF
|
|||||||
; Init basic parameters of ESP
|
; Init basic parameters of ESP
|
||||||
; ------------------------------------------------------
|
; ------------------------------------------------------
|
||||||
INIT_ESP
|
INIT_ESP
|
||||||
|
PUSH BC, DE
|
||||||
LD DE, WIFI.RS_BUFF
|
LD DE, WIFI.RS_BUFF
|
||||||
LD BC, DEFAULT_TIMEOUT
|
LD BC, DEFAULT_TIMEOUT
|
||||||
|
|
||||||
IF TRACE
|
TRACELN MSG_ECHO_OFF
|
||||||
PRINTLN MSG_ECHO_OFF
|
|
||||||
ENDIF
|
|
||||||
SEND_CMD CMD_ECHO_OFF
|
SEND_CMD CMD_ECHO_OFF
|
||||||
|
|
||||||
IF TRACE
|
TRACELN MSG_STATIOJN_MODE
|
||||||
PRINTLN MSG_STATIOJN_MODE
|
|
||||||
ENDIF
|
|
||||||
SEND_CMD CMD_STATION_MODE
|
SEND_CMD CMD_STATION_MODE
|
||||||
|
|
||||||
IF TRACE
|
TRACELN MSG_NO_SLEEP
|
||||||
PRINTLN MSG_NO_SLEEP
|
|
||||||
ENDIF
|
|
||||||
SEND_CMD CMD_NO_SLEEP
|
SEND_CMD CMD_NO_SLEEP
|
||||||
|
|
||||||
IF TRACE
|
TRACELN MSG_SET_UART
|
||||||
PRINTLN MSG_SET_UART
|
|
||||||
ENDIF
|
|
||||||
SEND_CMD CMD_SET_SPEED
|
SEND_CMD CMD_SET_SPEED
|
||||||
|
|
||||||
IF TRACE
|
TRACELN MSG_SET_OPT
|
||||||
PRINTLN MSG_SET_OPT
|
|
||||||
ENDIF
|
|
||||||
SEND_CMD CMD_CWLAP_OPT
|
SEND_CMD CMD_CWLAP_OPT
|
||||||
|
POP DE,BC
|
||||||
RET
|
RET
|
||||||
|
|
||||||
; ------------------------------------------------------
|
; ------------------------------------------------------
|
||||||
; Messages
|
; Set DHCP mode
|
||||||
|
; Out: CF=1 if error
|
||||||
|
; ------------------------------------------------------
|
||||||
|
SET_DHCP_MODE
|
||||||
|
PUSH BC,DE
|
||||||
|
LD DE, WIFI.RS_BUFF
|
||||||
|
LD BC, DEFAULT_TIMEOUT
|
||||||
|
TRACELN MSG_SET_DHCP
|
||||||
|
SEND_CMD CMD_SET_DHCP
|
||||||
|
POP DE,BC
|
||||||
|
RET
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; ------------------------------------------------------
|
||||||
|
; Output main menu to select user action
|
||||||
|
; Ret: A = selected menu item
|
||||||
|
; ------------------------------------------------------
|
||||||
|
SELECT_MAIN_MENU
|
||||||
|
PUSH BC
|
||||||
|
PRINTLN MSG_MAIN_MENU
|
||||||
|
SMM_L1
|
||||||
|
PRINT MSG_ENT_NO
|
||||||
|
; SCANF
|
||||||
|
LD C, DSS_ECHOKEY
|
||||||
|
RST DSS
|
||||||
|
SUB '0'
|
||||||
|
; Test A in range [0..3]
|
||||||
|
AND A
|
||||||
|
JP M, SMM_L1
|
||||||
|
CP 4
|
||||||
|
JP P, SMM_L1
|
||||||
|
POP BC
|
||||||
|
RET
|
||||||
|
|
||||||
|
; ------------------------------------------------------
|
||||||
|
; Messages DB "\r\n1 - Select WiFi Network\r\n"
|
||||||
|
DB "2 - Configure IP parameters\r\n"
|
||||||
|
DB "3 - Display info\r\n"
|
||||||
|
DB "0 - Exit",0
|
||||||
|
|
||||||
; ------------------------------------------------------
|
; ------------------------------------------------------
|
||||||
MSG_START
|
MSG_START
|
||||||
DB "ESP-Setup for Sprinter-WiFi by Romych's, (c) 2024\r\n", 0
|
DB "ESP-Setup for Sprinter-WiFi by Romych's, (c) 2024\r\n", 0
|
||||||
@ -172,6 +213,14 @@ MSG_COMM_ERROR
|
|||||||
COMM_ERROR_NO
|
COMM_ERROR_NO
|
||||||
DB "n!",0
|
DB "n!",0
|
||||||
|
|
||||||
|
MSG_MAIN_MENU
|
||||||
|
DB "\r\n1 - Select WiFi Network\r\n"
|
||||||
|
DB "2 - Configure IP parameters\r\n"
|
||||||
|
DB "3 - Display info\r\n"
|
||||||
|
DB "0 - Exit",0
|
||||||
|
|
||||||
|
MSG_ENT_NO
|
||||||
|
DB "\r\nEnter number 0..3: ",0
|
||||||
; ------------------------------------------------------
|
; ------------------------------------------------------
|
||||||
; Debug messages
|
; Debug messages
|
||||||
; ------------------------------------------------------
|
; ------------------------------------------------------
|
||||||
@ -192,6 +241,9 @@ MSG_SET_UART
|
|||||||
MSG_SET_OPT
|
MSG_SET_OPT
|
||||||
DB "Set options",0
|
DB "Set options",0
|
||||||
|
|
||||||
|
MSG_SET_DHCP
|
||||||
|
DB "Set DHCP mode",0
|
||||||
|
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -26,21 +26,17 @@ ISA_RST EQU 0x80
|
|||||||
; Reset ISA device
|
; Reset ISA device
|
||||||
; ------------------------------------------------------
|
; ------------------------------------------------------
|
||||||
ISA_RESET
|
ISA_RESET
|
||||||
PUSH AF
|
PUSH AF,BC,HL
|
||||||
PUSH BC
|
|
||||||
PUSH HL
|
|
||||||
LD BC, PORT_ISA
|
LD BC, PORT_ISA
|
||||||
LD A,ISA_RST | ISA_AEN ; RESET=1 AEN=1
|
LD A,ISA_RST | ISA_AEN ; RESET=1 AEN=1
|
||||||
OUT (C), A
|
OUT (C), A
|
||||||
LD HL,2000
|
CALL UTIL.DELAY_1MS
|
||||||
CALL UTIL.DELAY
|
|
||||||
XOR A
|
XOR A
|
||||||
OUT (C), A ; RESET=0 AEN=0
|
OUT (C), A ; RESET=0 AEN=0
|
||||||
ADD HL,HL
|
LD HL,20
|
||||||
CALL UTIL.DELAY
|
CALL UTIL.DELAY
|
||||||
POP HL
|
POP HL,BC,AF
|
||||||
POP BC
|
|
||||||
POP AF
|
|
||||||
RET
|
RET
|
||||||
|
|
||||||
; ------------------------------------------------------
|
; ------------------------------------------------------
|
||||||
|
|||||||
28
Sources/ESPLib/macro.inc
Normal file
28
Sources/ESPLib/macro.inc
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
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 C,DSS_PCHARS
|
||||||
|
LD HL, WCOMMON.LINE_END
|
||||||
|
RST DSS
|
||||||
|
ENDM
|
||||||
|
|
||||||
|
MACRO TRACELN data
|
||||||
|
IF TRACE == 1
|
||||||
|
PUSH BC,DE
|
||||||
|
PRINTLN data
|
||||||
|
POP DE,BC
|
||||||
|
ENDIF
|
||||||
|
ENDM
|
||||||
@ -7,27 +7,40 @@
|
|||||||
; Inp: HL - number of cycles, if HL=0, then 2000
|
; Inp: HL - number of cycles, if HL=0, then 2000
|
||||||
; ------------------------------------------------------
|
; ------------------------------------------------------
|
||||||
DELAY
|
DELAY
|
||||||
PUSH AF
|
PUSH AF,BC,HL
|
||||||
PUSH HL
|
|
||||||
LD A,H
|
LD A,H
|
||||||
OR L
|
OR L
|
||||||
JP NZ,DELAY_L1
|
JR NZ,DELAY_NXT
|
||||||
LD HL,2000
|
LD HL,20
|
||||||
DELAY_L1:
|
|
||||||
|
DELAY_NXT
|
||||||
|
CALL SUB_DELAY
|
||||||
DEC HL
|
DEC HL
|
||||||
LD A,H
|
LD A,H
|
||||||
OR L
|
OR L
|
||||||
JP NZ,DELAY_L1
|
JP NZ,DELAY_NXT
|
||||||
POP HL
|
|
||||||
POP AF
|
POP HL,BC,AF
|
||||||
RET
|
RET
|
||||||
|
|
||||||
|
SUB_DELAY
|
||||||
|
LD BC,400
|
||||||
|
SBD_NXT
|
||||||
|
DEC BC
|
||||||
|
LD A, B
|
||||||
|
OR C
|
||||||
|
JR NZ, SBD_NXT
|
||||||
|
RET
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; TODO: Do it with timer
|
; TODO: Do it with timer
|
||||||
DELAY_1MS
|
DELAY_1MS
|
||||||
PUSH HL
|
PUSH BC
|
||||||
LD HL,100
|
CALL SUB_DELAY
|
||||||
CALL DELAY
|
POP BC
|
||||||
POP HL
|
|
||||||
RET
|
RET
|
||||||
|
|
||||||
; ------------------------------------------------------
|
; ------------------------------------------------------
|
||||||
@ -73,6 +86,63 @@ STC_EQ
|
|||||||
POP HL,DE
|
POP HL,DE
|
||||||
RET
|
RET
|
||||||
|
|
||||||
|
; ------------------------------------------------------
|
||||||
|
; Convert string to number
|
||||||
|
; Inp: DE - ptr to zero ended string
|
||||||
|
; Out: HL - Result
|
||||||
|
; ------------------------------------------------------
|
||||||
|
ATOU
|
||||||
|
PUSH BC
|
||||||
|
LD HL,0x0000
|
||||||
|
ATOU_L1
|
||||||
|
LD A,(DE)
|
||||||
|
AND A
|
||||||
|
JR Z, ATOU_LE
|
||||||
|
SUB 0x30
|
||||||
|
CP 10
|
||||||
|
JR NC, ATOU_LE
|
||||||
|
INC DE
|
||||||
|
LD B,H
|
||||||
|
LD C,L
|
||||||
|
ADD HL,HL
|
||||||
|
ADD HL,HL
|
||||||
|
ADD HL,BC
|
||||||
|
ADD HL,HL
|
||||||
|
ADD A,L
|
||||||
|
LD L,A
|
||||||
|
JR NC,ATOU_L1
|
||||||
|
INC H
|
||||||
|
JP ATOU_L1
|
||||||
|
ATOU_LE
|
||||||
|
POP BC
|
||||||
|
RET
|
||||||
|
|
||||||
|
|
||||||
|
; ------------------------------------------------------
|
||||||
|
; Find char in string
|
||||||
|
; Inp: HL - ptr to zero endeds string
|
||||||
|
; A - char to find
|
||||||
|
; Outp: CF=0, HL points to char if found
|
||||||
|
; CF=1 - Not found
|
||||||
|
; ------------------------------------------------------
|
||||||
|
STRCHR
|
||||||
|
PUSH BC
|
||||||
|
STCH_NEXT
|
||||||
|
LD C,A
|
||||||
|
LD A,(HL)
|
||||||
|
AND A
|
||||||
|
JR Z, STCH_N_FOUND
|
||||||
|
CP C
|
||||||
|
JR Z, STCH_FOUND
|
||||||
|
INC HL
|
||||||
|
JR STCH_NEXT
|
||||||
|
STCH_N_FOUND
|
||||||
|
SCF
|
||||||
|
STCH_FOUND
|
||||||
|
POP BC
|
||||||
|
RET
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ENDMODULE
|
ENDMODULE
|
||||||
211
Sources/ESPLib/wcommon.asm
Normal file
211
Sources/ESPLib/wcommon.asm
Normal file
@ -0,0 +1,211 @@
|
|||||||
|
MODULE WCOMMON
|
||||||
|
|
||||||
|
; ------------------------------------------------------
|
||||||
|
; Ckeck for error (CF=1) print message and 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
|
||||||
|
CALL REST_VMODE
|
||||||
|
LD C,DSS_EXIT
|
||||||
|
RST DSS
|
||||||
|
|
||||||
|
; ------------------------------------------------------
|
||||||
|
; Search Sprinter WiFi card
|
||||||
|
; ------------------------------------------------------
|
||||||
|
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
|
||||||
|
RET
|
||||||
|
|
||||||
|
NO_TL_FOUND
|
||||||
|
POP BC
|
||||||
|
PRINTLN MSG_SWF_NOF
|
||||||
|
LD B,2
|
||||||
|
JP EXIT
|
||||||
|
|
||||||
|
|
||||||
|
; ------------------------------------------------------
|
||||||
|
; Store old video mode, set 80x32 and clear
|
||||||
|
; ------------------------------------------------------
|
||||||
|
INIT_VMODE
|
||||||
|
PUSH BC,DE,HL
|
||||||
|
; Store previous vmode
|
||||||
|
LD C,DSS_GETVMOD
|
||||||
|
RST DSS
|
||||||
|
LD (SAVE_VMODE),A
|
||||||
|
CP DSS_VMOD_T80
|
||||||
|
; Set vmode 80x32
|
||||||
|
JR Z, IVM_ALRDY_80
|
||||||
|
LD C,DSS_SETVMOD
|
||||||
|
LD A,DSS_VMOD_T80
|
||||||
|
RST DSS
|
||||||
|
IVM_ALRDY_80
|
||||||
|
; Clear screen
|
||||||
|
LD A,' '
|
||||||
|
LD B,0x07
|
||||||
|
LD C,DSS_CLEAR
|
||||||
|
LD HL,0x2050
|
||||||
|
LD DE,0x0000
|
||||||
|
RST DSS
|
||||||
|
|
||||||
|
POP HL,DE,BC
|
||||||
|
RET
|
||||||
|
|
||||||
|
; ------------------------------------------------------
|
||||||
|
; Restore saved video mode
|
||||||
|
; ------------------------------------------------------
|
||||||
|
REST_VMODE
|
||||||
|
PUSH BC
|
||||||
|
LD A,(SAVE_VMODE)
|
||||||
|
CP DSS_VMOD_T80
|
||||||
|
JR Z, RVM_SAME
|
||||||
|
; Restore mode
|
||||||
|
PRINTLN MSG_PRESS_AKEY
|
||||||
|
|
||||||
|
LD C, DSS_WAITKEY
|
||||||
|
RST DSS
|
||||||
|
|
||||||
|
LD C,DSS_SETVMOD
|
||||||
|
RST DSS
|
||||||
|
RVM_SAME
|
||||||
|
POP BC
|
||||||
|
RET
|
||||||
|
|
||||||
|
; ------------------------------------------------------
|
||||||
|
; Init basic parameters of ESP
|
||||||
|
; ------------------------------------------------------
|
||||||
|
INIT_ESP
|
||||||
|
PUSH BC, DE
|
||||||
|
LD DE, WIFI.RS_BUFF
|
||||||
|
LD BC, DEFAULT_TIMEOUT
|
||||||
|
|
||||||
|
TRACELN MSG_ECHO_OFF
|
||||||
|
SEND_CMD CMD_ECHO_OFF
|
||||||
|
|
||||||
|
TRACELN MSG_STATIOJN_MODE
|
||||||
|
SEND_CMD CMD_STATION_MODE
|
||||||
|
|
||||||
|
TRACELN MSG_NO_SLEEP
|
||||||
|
SEND_CMD CMD_NO_SLEEP
|
||||||
|
|
||||||
|
TRACELN MSG_SET_UART
|
||||||
|
SEND_CMD CMD_SET_SPEED
|
||||||
|
|
||||||
|
TRACELN MSG_SET_OPT
|
||||||
|
SEND_CMD CMD_CWLAP_OPT
|
||||||
|
POP DE,BC
|
||||||
|
RET
|
||||||
|
|
||||||
|
; ------------------------------------------------------
|
||||||
|
; Set DHCP mode
|
||||||
|
; Out: CF=1 if error
|
||||||
|
; ------------------------------------------------------
|
||||||
|
SET_DHCP_MODE
|
||||||
|
PUSH BC,DE
|
||||||
|
LD DE, WIFI.RS_BUFF
|
||||||
|
LD BC, DEFAULT_TIMEOUT
|
||||||
|
TRACELN MSG_SET_DHCP
|
||||||
|
SEND_CMD CMD_SET_DHCP
|
||||||
|
POP DE,BC
|
||||||
|
RET
|
||||||
|
|
||||||
|
; ------------------------------------------------------
|
||||||
|
; Messages
|
||||||
|
; ------------------------------------------------------
|
||||||
|
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
|
||||||
|
|
||||||
|
MSG_PRESS_AKEY
|
||||||
|
DB "Press any key to continue...",0
|
||||||
|
|
||||||
|
MSG_ESP_RESET
|
||||||
|
DB "Reset ESP module.",0
|
||||||
|
|
||||||
|
MSG_UART_INIT
|
||||||
|
DB "Reset UART.",0
|
||||||
|
|
||||||
|
LINE_END
|
||||||
|
DB "\r\n",0
|
||||||
|
|
||||||
|
SAVE_VMODE
|
||||||
|
DB 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
|
||||||
|
|
||||||
|
MSG_SET_DHCP
|
||||||
|
DB "Set DHCP mode",0
|
||||||
|
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
; ------------------------------------------------------
|
||||||
|
; Commands
|
||||||
|
; ------------------------------------------------------
|
||||||
|
CMD_QUIT
|
||||||
|
DB "QUIT\r",0
|
||||||
|
|
||||||
|
CMD_VERSION
|
||||||
|
DB "AT+GMR\r\n",0
|
||||||
|
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
|
||||||
|
|
||||||
|
|
||||||
|
ENDMODULE
|
||||||
192
Sources/ESPLib/wterm.asm
Normal file
192
Sources/ESPLib/wterm.asm
Normal file
@ -0,0 +1,192 @@
|
|||||||
|
; ======================================================
|
||||||
|
; WTERM for SprinterWiFi for Sprinter computer
|
||||||
|
; By Romych, 2024
|
||||||
|
; https://github.com/romychs
|
||||||
|
; ======================================================
|
||||||
|
|
||||||
|
; Set to 1 to turn debug ON with DeZog VSCode plugin
|
||||||
|
; Set to 0 to compile .EXE
|
||||||
|
DEBUG EQU 1
|
||||||
|
|
||||||
|
; Set to 1 to output TRACE messages
|
||||||
|
TRACE EQU 1
|
||||||
|
|
||||||
|
; Version of EXE file, 1 for DSS 1.70+
|
||||||
|
EXE_VERSION EQU 0
|
||||||
|
|
||||||
|
; Timeout to wait ESP response
|
||||||
|
DEFAULT_TIMEOUT EQU 2000
|
||||||
|
|
||||||
|
SLDOPT COMMENT WPMEM, LOGPOINT, ASSERTION
|
||||||
|
|
||||||
|
DEVICE NOSLOT64K
|
||||||
|
|
||||||
|
IF DEBUG == 1
|
||||||
|
INCLUDE "dss.asm"
|
||||||
|
DB 0
|
||||||
|
ALIGN 16384, 0
|
||||||
|
DS 0x80, 0
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
INCLUDE "macro.inc"
|
||||||
|
INCLUDE "dss.inc"
|
||||||
|
INCLUDE "sprinter.inc"
|
||||||
|
|
||||||
|
MODULE MAIN
|
||||||
|
|
||||||
|
ORG 0x8080
|
||||||
|
; ------------------------------------------------------
|
||||||
|
EXE_HEADER
|
||||||
|
DB "EXE"
|
||||||
|
DB EXE_VERSION ; EXE Version
|
||||||
|
DW 0x0080 ; Code offset
|
||||||
|
DW 0
|
||||||
|
DW 0 ; Primary loader size
|
||||||
|
DW 0 ; Reserved
|
||||||
|
DW 0
|
||||||
|
DW 0
|
||||||
|
DW START ; Loading Address
|
||||||
|
DW START ; Entry Point
|
||||||
|
DW STACK_TOP ; Stack address
|
||||||
|
DS 106, 0 ; Reserved
|
||||||
|
|
||||||
|
ORG 0x8100
|
||||||
|
@STACK_TOP
|
||||||
|
|
||||||
|
; ------------------------------------------------------
|
||||||
|
START
|
||||||
|
|
||||||
|
IF DEBUG == 1
|
||||||
|
; LD IX,CMD_LINE1
|
||||||
|
LD SP, STACK_TOP
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
CALL ISA.ISA_RESET
|
||||||
|
|
||||||
|
CALL WCOMMON.INIT_VMODE
|
||||||
|
|
||||||
|
PRINTLN MSG_START
|
||||||
|
|
||||||
|
CALL WCOMMON.FIND_SWF
|
||||||
|
|
||||||
|
PRINTLN WCOMMON.MSG_UART_INIT
|
||||||
|
CALL WIFI.UART_INIT
|
||||||
|
|
||||||
|
PRINTLN WCOMMON.MSG_ESP_RESET
|
||||||
|
CALL WIFI.ESP_RESET
|
||||||
|
|
||||||
|
|
||||||
|
LD HL,REG_SCR
|
||||||
|
LD E,0x55
|
||||||
|
CALL WIFI.UART_WRITE
|
||||||
|
|
||||||
|
LD E, FCR_TR8 | FCR_FIFO
|
||||||
|
LD HL, REG_FCR
|
||||||
|
CALL WIFI.UART_WRITE
|
||||||
|
|
||||||
|
; Debug, dump all registers
|
||||||
|
LD BC, 0x0800
|
||||||
|
CALL DUMP_REGS
|
||||||
|
|
||||||
|
; Dump, page2
|
||||||
|
LD HL, REG_LCR
|
||||||
|
LD E, LCR_DLAB | LCR_WL8
|
||||||
|
CALL WIFI.UART_WRITE
|
||||||
|
|
||||||
|
LD BC, 0x0310
|
||||||
|
CALL DUMP_REGS
|
||||||
|
|
||||||
|
LD HL, REG_LCR
|
||||||
|
LD E, LCR_WL8
|
||||||
|
CALL WIFI.UART_WRITE
|
||||||
|
|
||||||
|
; Turn local echo Off
|
||||||
|
CALL WCOMMON.INIT_ESP
|
||||||
|
|
||||||
|
; ------------------------------------------------------
|
||||||
|
; Do Some
|
||||||
|
; ------------------------------------------------------
|
||||||
|
|
||||||
|
OK_EXIT
|
||||||
|
LD B,0
|
||||||
|
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
|
||||||
|
|
||||||
|
; ------------------------------------------------------
|
||||||
|
; Custom commands
|
||||||
|
; ------------------------------------------------------
|
||||||
|
CMD_QUIT
|
||||||
|
DB "QUIT\r",0
|
||||||
|
|
||||||
|
IF DEBUG == 1
|
||||||
|
CMD_TEST1 DB "ATE0\r\n",0
|
||||||
|
BUFF_TEST1 DS RS_BUFF_SIZE,0
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
ENDMODULE
|
||||||
|
|
||||||
|
INCLUDE "wcommon.asm"
|
||||||
|
INCLUDE "util.asm"
|
||||||
|
INCLUDE "isa.asm"
|
||||||
|
INCLUDE "esplib.asm"
|
||||||
|
|
||||||
|
END MAIN.START
|
||||||
Loading…
Reference in New Issue
Block a user