mirror of
				https://github.com/romychs/SprinterESP.git
				synced 2025-10-31 15:05:59 +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", | ||||
|     "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", | ||||
|             "request": "launch", | ||||
|             "name": "Internal Simulator", | ||||
|             "name": "WTERM Internal Simulator", | ||||
|             "remoteType": "zsim", | ||||
|             "zsim": { | ||||
|                 "visualMemory": true, | ||||
| @ -62,7 +146,7 @@ | ||||
|             }, | ||||
|             "sjasmplus": [ | ||||
|                 { | ||||
|                     "path": "espset.sld" | ||||
|                     "path": "wterm.sld" | ||||
|                 } | ||||
|             ], | ||||
|             "history": { | ||||
| @ -76,7 +160,7 @@ | ||||
|             "topOfStack": "STACK_TOP", | ||||
|             "loadObjs": [ | ||||
|                 { | ||||
|                     "path": "espset.exe", | ||||
|                     "path": "wterm.exe", | ||||
|                     "start": "0x0000" | ||||
|                 } | ||||
|             ], | ||||
| @ -84,5 +168,6 @@ | ||||
|             "smallValuesMaximum": 513, | ||||
|             "tmpDir": ".tmp" | ||||
|         } | ||||
| 
 | ||||
|     ] | ||||
| } | ||||
							
								
								
									
										33
									
								
								Sources/ESPLib/.vscode/tasks.json
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										33
									
								
								Sources/ESPLib/.vscode/tasks.json
									
									
									
									
										vendored
									
									
								
							| @ -2,7 +2,7 @@ | ||||
|     "version": "2.0.0", | ||||
|     "tasks": [ | ||||
|         { | ||||
|             "label": "make (sjasmplus)", | ||||
|             "label": "make ESPSET (sjasmplus)", | ||||
|             "type": "shell", | ||||
|             "command": "sjasmplus", | ||||
|             "args": [ | ||||
| @ -28,7 +28,36 @@ | ||||
|                 "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", | ||||
|             "type": "shell", | ||||
|             "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 | ||||
| 	CP		0x1E | ||||
| 	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     | ||||
|     JP      Z, _PCHARS | ||||
|     CP      0x41 | ||||
| @ -218,6 +236,17 @@ _CURDIR | ||||
| 	POP 	DE | ||||
| 	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 - указатель на файловую спецификацию | ||||
| ; DE - рабочий буфер 44 байта, если B=0, иначе 256 байт | ||||
| @ -238,6 +267,63 @@ _FIND_FIRST | ||||
| 	POP DE | ||||
|     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 | ||||
| ;   LOGPOINT STOPPED!     | ||||
|  | ||||
| @ -20,9 +20,22 @@ DSS_FIND_NEXT       EQU 0x011A | ||||
| DSS_MKDIR           EQU 0x1B | ||||
| DSS_CHDIR           EQU 0x1D | ||||
| DSS_CURDIR          EQU 0x1E | ||||
| DSS_ECHOKEY			EQU	0x32  | ||||
| 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_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 | ||||
| E_FILE_EXISTS       EQU 7 | ||||
| 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 в памяти  | ||||
| 
 | ||||
| ; UART TC16C550 Registers in memory | ||||
| REG_RBR 		EQU PORT_UART_A + 0 | ||||
| REG_THR 		EQU PORT_UART_A + 0 | ||||
| REG_RBR 		EQU PORT_UART_A | ||||
| REG_THR 		EQU PORT_UART_A | ||||
| REG_IER 		EQU PORT_UART_A + 1 | ||||
| REG_IIR 		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_MSR 		EQU PORT_UART_A + 6 | ||||
| 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_AFR 		EQU PORT_UART_A + 2 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| ; UART TC16C550 Register bits  | ||||
| MCR_DTR         EQU	0x01 | ||||
| MCR_RTS         EQU	0x02 | ||||
| @ -77,6 +79,22 @@ RES_DISABLED 	EQU	8 | ||||
| 
 | ||||
| 	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 | ||||
| @ -108,26 +126,27 @@ UT_T_SLOT | ||||
| ; Init UART device TL16C550 | ||||
| ; ------------------------------------------------------ | ||||
| UART_INIT | ||||
| 	PUSH	AF | ||||
| 	PUSH	HL | ||||
| 	PUSH	AF, IX | ||||
| 
 | ||||
| 	CALL 	ISA.ISA_OPEN | ||||
| 	LD		A, FCR_TR14 | FCR_FIFO						; Enable FIFO buffer, trigger to 14 byte | ||||
| 	LD		(REG_FCR),A									 | ||||
| 	LD		IX, PORT_UART_A | ||||
| 	LD		A, FCR_TR8 | FCR_FIFO						; Enable FIFO buffer, trigger to 14 byte | ||||
| 	LD		(IX+_FCR),A									 | ||||
| 	XOR 	A | ||||
| 	LD 		(REG_IER), A								; Disable interrupts | ||||
| 	LD 		(IX+_IER), A										; Disable interrupts | ||||
| 
 | ||||
| 	; Set 8bit word and Divisor for speed | ||||
| 	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 		(REG_DLL), A								; 8 - 115200 | ||||
| 	LD 		(IX+_DLL), A										; 8 - 115200 | ||||
| 	XOR 	A | ||||
| 	LD		(REG_DLM), A | ||||
| 	LD		(IX+_DLM), A | ||||
| 	LD 		A, LCR_WL8									; 8bit word, disable latch | ||||
| 	LD 		(REG_LCR), A | ||||
| 	LD 		(IX+_LCR), A | ||||
| 	CALL 	ISA.ISA_CLOSE | ||||
| 	POP HL | ||||
| 	POP AF | ||||
| 
 | ||||
| 	POP 	IX,AF | ||||
| 	RET | ||||
| 
 | ||||
| ; ------------------------------------------------------ | ||||
| @ -136,28 +155,10 @@ UART_INIT | ||||
| ;   Out: A - value from register | ||||
| ; ------------------------------------------------------ | ||||
| UART_READ | ||||
| 	IF	DEBUG==0 | ||||
| 	CALL 	ISA.ISA_OPEN | ||||
| 	LD 		A, (HL) | ||||
| 	CALL 	ISA.ISA_CLOSE | ||||
| 	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 | ||||
| @ -174,23 +175,25 @@ UART_WRITE | ||||
| ;   Out: CF=1 - tr not ready,  CF=0 ready | ||||
| ; ------------------------------------------------------ | ||||
| UART_WAIT_TR | ||||
| 	PUSH	BC, HL | ||||
| 	PUSH	AF, BC, HL | ||||
| 
 | ||||
| 	CALL	ISA.ISA_OPEN | ||||
| 	LD BC,	200 | ||||
| 	LD BC,	100 | ||||
| 	LD HL, 	REG_LSR | ||||
| WAIT_TR_R            | ||||
| WAIT_TR_BZY            | ||||
| 	LD 		A,(HL) | ||||
| 	AND 	A, LSR_THRE | ||||
| 	JP 		NZ,WAIT_TR_E | ||||
| 	JR 		NZ,WAIT_TR_RDY | ||||
| 	CALL	UTIL.DELAY_1MS | ||||
| 	DEC 	BC | ||||
| 	LD 		A, C | ||||
| 	OR		B	 | ||||
| 	JP 		NZ,WAIT_TR_R | ||||
| 	JR 		NZ,WAIT_TR_BZY | ||||
| 	SCF | ||||
| WAIT_TR_E | ||||
| WAIT_TR_RDY | ||||
| 	CALL ISA.ISA_CLOSE | ||||
| 	POP 	HL, BC | ||||
| 
 | ||||
| 	POP 	HL, BC, AF | ||||
| 	RET | ||||
| 
 | ||||
| ; ------------------------------------------------------ | ||||
| @ -212,7 +215,6 @@ UTB_NOT_R | ||||
| ;	Inp: HL -> buffer, BC - size | ||||
| ;   Out: CF=0 - Ok, CF=1 - Timeout | ||||
| ; ------------------------------------------------------ | ||||
| 	IF	DEBUG==0 | ||||
| UART_TX_BUFFER | ||||
| 	PUSH	BC,DE,HL | ||||
| 	LD		DE, REG_THR | ||||
| @ -237,22 +239,17 @@ UTX_EMP | ||||
| 	CALL	ISA.ISA_CLOSE | ||||
| 	POP		HL,DE,BC | ||||
| 	RET | ||||
| 	ELSE | ||||
| ; --- DEBUG | ||||
| UART_TX_BUFFER | ||||
| 	XOR		A | ||||
| 	RET | ||||
| 	ENDIF | ||||
| ; ------------------------------------------------------ | ||||
| ; Empty receiver FIFO buffer | ||||
| ; ------------------------------------------------------ | ||||
| UART_EMPTY_RS | ||||
| 	PUSH 	AF | ||||
| 	PUSH 	AF, HL | ||||
| 	CALL 	ISA.ISA_OPEN | ||||
| 	LD 		A, FCR_TR14 | FCR_RESET_RX | FCR_FIFO | ||||
| 	LD 		(REG_FCR), A | ||||
| 	LD 		A, FCR_TR8 | FCR_RESET_RX | FCR_FIFO | ||||
| 	LD		HL, REG_FCR | ||||
| 	LD 		(HL), A | ||||
| 	CALL	ISA.ISA_CLOSE | ||||
| 	POP 	AF | ||||
| 	POP 	HL, AF | ||||
| 	RET | ||||
| 
 | ||||
| ; ------------------------------------------------------ | ||||
| @ -260,61 +257,50 @@ UART_EMPTY_RS | ||||
| ; Inp: BC - Wait ms | ||||
| ; Out: CF=1 - Timeout, FIFO is EMPTY | ||||
| ; ------------------------------------------------------ | ||||
| 	IF	DEBUG==0 | ||||
| UART_WAIT_RS1 | ||||
| 	PUSH	BC,HL | ||||
| WAIT_MS+*	LD	BC,0x0000 | ||||
| 	JR		UVR_NEXT | ||||
| 	ENDIF | ||||
| UART_WAIT_RS | ||||
| 	PUSH	BC,HL | ||||
| UVR_NEXT | ||||
| 	LD		HL, REG_LSR | ||||
| 	CALL	UART_READ | ||||
| 	AND		LSR_DR | ||||
| 	JR		Z,UVR_OK | ||||
| 	JR		NZ,UVR_OK | ||||
| 	CALL	UTIL.DELAY_1MS | ||||
| 	DEC		BC | ||||
| 	LD		A,B | ||||
| 	OR		A,C | ||||
| 	OR		C | ||||
| 	JR		NZ,UVR_NEXT | ||||
| UVR_TO | ||||
| 	SCF | ||||
| UVR_OK | ||||
| 	POP		HL,BC | ||||
| 	IF	DEBUG==1 | ||||
| WAIT_MS | ||||
| 	DW 0 | ||||
| UART_WAIT_RS1	 | ||||
| 	AND		A											; CF=0 | ||||
| 	ENDIF | ||||
| 	RET | ||||
| 	 | ||||
| 
 | ||||
| ; ------------------------------------------------------ | ||||
| ; Reset ESP module | ||||
| ; Inp: A != 0 - Full Reset | ||||
| ; ------------------------------------------------------ | ||||
| ESP_RESET | ||||
| 	PUSH	HL, AF | ||||
| 	PUSH	AF,HL | ||||
| 
 | ||||
| 	CALL	ISA.ISA_OPEN | ||||
| 	AND		A | ||||
| 	JR		Z, ESPR_SHRT | ||||
| 
 | ||||
| 	LD		HL, REG_MCR | ||||
| 	LD		A, MCR_RST | MCR_RTS						; 0110b ESP  -PGM=1, -RST=0, -RTS=0 | ||||
| 	LD		(HL), A | ||||
| 	CALL	UTIL.DELAY | ||||
| ESPR_SHRT | ||||
| 	LD		A, MCR_AFE | MCR_RTS						; 0x22 -RST = 1 -RTS=0 AutoFlow enabled | ||||
| 	CALL	UTIL.DELAY_1MS | ||||
| 	;LD		HL, REG_MCR | ||||
| 	LD		A, MCR_AFE | MCR_RTS						; 0x22 -RST = 1 -RTS=0 AutoFlow enabled	 | ||||
| 	LD		(HL), A | ||||
| 
 | ||||
| 	CALL	ISA.ISA_CLOSE | ||||
| 	POP 	AF | ||||
| 	AND		A | ||||
| 	JR		Z,ESPR_NW | ||||
| 	LD		HL,0xFFFF | ||||
| 	 | ||||
| 	LD		HL,2000 | ||||
| 	CALL	UTIL.DELAY | ||||
| ESPR_NW	 | ||||
| 	POP		HL | ||||
| 
 | ||||
| 	POP		HL,AF | ||||
| 	RET | ||||
| 
 | ||||
| 
 | ||||
| @ -427,6 +413,7 @@ UTC_RET | ||||
| 		POP		HL, DE, BC | ||||
| 		RET | ||||
| 
 | ||||
| 
 | ||||
| ; Buffer to receive response from ESP | ||||
| RS_BUFF	DS RS_BUFF_SIZE, 0 | ||||
| 
 | ||||
|  | ||||
| @ -7,8 +7,14 @@ | ||||
| ; Set to 1 to turn debug ON with DeZog VSCode plugin | ||||
| ; Set to 0 to compile .EXE | ||||
| DEBUG               EQU 0 | ||||
| 
 | ||||
| ; Set to 1 to output TRACE messages | ||||
| 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 | ||||
| 
 | ||||
|     SLDOPT COMMENT WPMEM, LOGPOINT, ASSERTION | ||||
| @ -22,26 +28,7 @@ DEFAULT_TIMEOUT		EQU	2000 | ||||
|         DS 0x80, 0 | ||||
|     ENDIF | ||||
| 
 | ||||
| 	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		HL, LINE_END | ||||
| 	RST     DSS | ||||
| 	ENDM | ||||
| 
 | ||||
| 	INCLUDE "macro.inc" | ||||
| 	INCLUDE "dss.inc" | ||||
| 	INCLUDE "sprinter.inc" | ||||
| 
 | ||||
| @ -74,7 +61,8 @@ START | ||||
|     ; LD 		IX,CMD_LINE1 | ||||
| 	LD		SP, STACK_TOP | ||||
|     ENDIF | ||||
| 	 | ||||
| 
 | ||||
| 
 | ||||
| 	CALL 	ISA.ISA_RESET | ||||
| 
 | ||||
|     PRINTLN MSG_START | ||||
| @ -84,15 +72,37 @@ START | ||||
| 	; Turn local echo Off | ||||
| 	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 | ||||
| 	JP		EXIT | ||||
| 
 | ||||
| 
 | ||||
| MENU_SELECT_WIFI | ||||
| MENU_CONFIGURE_IP | ||||
| MENU_DISPLAY_INFO | ||||
| 	JP		MENU_AGAIN | ||||
| 
 | ||||
| NO_TL_FOUND | ||||
| 	PRINTLN MSG_SWF_NOF | ||||
| 	LD		B,2 | ||||
| 	JP		EXIT | ||||
| 
 | ||||
| 
 | ||||
| CHECK_ERROR | ||||
| 	RET		NC | ||||
| 	ADD		A,'0' | ||||
| @ -123,38 +133,69 @@ FIND_SWF | ||||
| ; Init basic parameters of ESP | ||||
| ; ------------------------------------------------------ | ||||
| INIT_ESP | ||||
| 	PUSH	BC, DE | ||||
| 	LD		DE, WIFI.RS_BUFF | ||||
| 	LD		BC, DEFAULT_TIMEOUT | ||||
| 
 | ||||
|  	IF TRACE | ||||
|    	PRINTLN	MSG_ECHO_OFF | ||||
|  	ENDIF | ||||
|    	TRACELN	MSG_ECHO_OFF | ||||
| 	SEND_CMD CMD_ECHO_OFF | ||||
| 
 | ||||
|  	IF TRACE | ||||
|    	PRINTLN MSG_STATIOJN_MODE | ||||
|  	ENDIF | ||||
|    	TRACELN MSG_STATIOJN_MODE | ||||
| 	SEND_CMD CMD_STATION_MODE | ||||
| 
 | ||||
|  	IF TRACE | ||||
|    	PRINTLN MSG_NO_SLEEP | ||||
|  	ENDIF | ||||
|    	TRACELN MSG_NO_SLEEP | ||||
| 	SEND_CMD CMD_NO_SLEEP | ||||
| 
 | ||||
|  	IF TRACE | ||||
|    	PRINTLN MSG_SET_UART | ||||
|  	ENDIF | ||||
|    	TRACELN MSG_SET_UART | ||||
| 	SEND_CMD CMD_SET_SPEED | ||||
| 
 | ||||
| 	IF TRACE | ||||
|    	PRINTLN MSG_SET_OPT | ||||
|  	ENDIF | ||||
|    	TRACELN MSG_SET_OPT | ||||
| 	SEND_CMD CMD_CWLAP_OPT | ||||
| 	 | ||||
| 	POP		DE,BC | ||||
| 	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 | ||||
| 	DB "ESP-Setup for Sprinter-WiFi by Romych's, (c) 2024\r\n", 0 | ||||
| @ -172,6 +213,14 @@ MSG_COMM_ERROR | ||||
| COMM_ERROR_NO | ||||
| 	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 | ||||
| ; ------------------------------------------------------ | ||||
| @ -192,6 +241,9 @@ MSG_SET_UART | ||||
| MSG_SET_OPT | ||||
| 	DB "Set options",0 | ||||
| 
 | ||||
| MSG_SET_DHCP | ||||
| 	DB	"Set DHCP mode",0 | ||||
| 
 | ||||
| 	ENDIF | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
| @ -26,21 +26,17 @@ ISA_RST			EQU	0x80 | ||||
| ; Reset ISA device | ||||
| ; ------------------------------------------------------ | ||||
| ISA_RESET | ||||
| 	PUSH	AF | ||||
| 	PUSH	BC | ||||
| 	PUSH	HL | ||||
| 	PUSH	AF,BC,HL | ||||
| 
 | ||||
| 	LD		BC, PORT_ISA | ||||
| 	LD		A,ISA_RST | ISA_AEN							; RESET=1 AEN=1	 | ||||
| 	OUT 	(C), A | ||||
| 	LD		HL,2000 | ||||
| 	CALL 	UTIL.DELAY | ||||
| 	CALL 	UTIL.DELAY_1MS | ||||
| 	XOR 	A | ||||
| 	OUT 	(C), A										; RESET=0 AEN=0 | ||||
| 	ADD 	HL,HL | ||||
| 	LD		HL,20 | ||||
| 	CALL 	UTIL.DELAY | ||||
| 	POP		HL | ||||
| 	POP		BC | ||||
| 	POP		AF | ||||
| 	POP		HL,BC,AF | ||||
| 	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 | ||||
| ; ------------------------------------------------------ | ||||
| DELAY | ||||
| 	PUSH	AF | ||||
| 	PUSH	HL | ||||
| 	PUSH	AF,BC,HL | ||||
| 
 | ||||
|     LD		A,H | ||||
|     OR		L | ||||
|     JP		NZ,DELAY_L1 | ||||
|     LD		HL,2000 | ||||
| DELAY_L1: | ||||
|     JR		NZ,DELAY_NXT | ||||
|     LD		HL,20 | ||||
| 
 | ||||
| DELAY_NXT | ||||
| 	CALL	SUB_DELAY | ||||
|    	DEC		HL | ||||
|     LD		A,H | ||||
|     OR		L | ||||
|     JP		NZ,DELAY_L1 | ||||
| 	POP		HL | ||||
|     POP		AF | ||||
|     JP		NZ,DELAY_NXT | ||||
| 
 | ||||
| 	POP		HL,BC,AF | ||||
| 	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 | ||||
| DELAY_1MS | ||||
| 	PUSH	HL | ||||
| 	LD 		HL,100 | ||||
| 	CALL	DELAY | ||||
| 	POP		HL | ||||
| 	PUSH	BC | ||||
| 	CALL	SUB_DELAY | ||||
| 	POP		BC | ||||
| 	RET | ||||
| 
 | ||||
| ; ------------------------------------------------------ | ||||
| @ -73,6 +86,63 @@ STC_EQ | ||||
| 	POP		HL,DE | ||||
| 	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 | ||||
							
								
								
									
										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
	 boykovra
						boykovra