।, ᠭ  ⮬ 㬥,   䠩 'sys_h.asm',
  ᢮ ।  䠩 'sysdefs.asm'.

 㬥 ࠧ㬥 ᯮ짮 - sjasmplus  ९ NedoOS.
sjasmplus ⠢   ᯮ塞 䠩 sjasmplus.exe  OS Windows. 
 ⠪   室   ᠬ⥫쭮 ᡮ   ᯮ OS.

************************* ᯮ㥬 ࠦ *************************
 -   ࠭    ZX-Spectrum, ࠢ 8 ⠬.

0x - ⠢  ⠭,  ᫮ ।⠢  ⭠筮 ⠬ ७.

(host) - 窠 祭

errno -  訡

big-endian - ।⠢ ᫠  . 砫 訩 , ⥬ 訩.
	 ਬ 16 ⭮ ᫮ 0x1234 ᯮ    DEFB 0x12,0x34
little-endian - ।⠢ ᫠  .  ।⠢ ᯮ  z80.
	砫 訩 , ⥬ 訩.  ⮬ 㬥,  㬮砭,  ᫠ little-endian.
	 ਬ 16 ⭮ ᫮ 0x1234 ᯮ    DEFB 0x34,0x12

SOCKET - ਯ ᮪.  8-⭮ ᫮.

sockaddr_in - , ࠧ஬ 15 ,  ᫥騬 ﬨ:
	sin_family - ᥬ⢮ ᮢ,  8-⭮ ᫮.
		 ⥪饩 ॠ樨 ᪠ ⮫쪮 祭 2 (AF_INET).
	sin_port -  , 16-⭮  big-endian ᫮.
	sin_addr - IP-. ᨢ   8-  ᥫ.
		 ਬ IP- 1.2.3.4 ᯮ    defb 1,2,3,4
	sin_zero - १ࢨ஢. ᨢ  8 .

*************************   訡 (errno)*************************
SHUT_RDWR 		EQU 2
ERR_EAGAIN		EQU 35		;/* Try again */
ERR_EWOULDBLOCK	EQU ERR_EAGAIN	;/* Operation would block */
ERR_INTR 		EQU 4
ERR_NFILE 		EQU 23
ERR_ALREADY 	EQU 37
ERR_NOTSOCK 	EQU 38
ERR_EMSGSIZE 	EQU 40    ;/* Message too long */
ERR_PROTOTYPE 	EQU 41
ERR_AFNOSUPPORT EQU 47
ERR_HOSTUNREACH EQU 65
ERR_ECONNABORTED EQU	53	/* Software caused connection abort */
ERR_CONNRESET 	EQU 54
ERR_NOTCONN 	EQU 57

************************* ⮪ ᮥ *************************
SOCK_STREAM EQU 0x01		;tcp/ip
SOCK_ICMP 	EQU 0x02		;icmp
SOCK_DGRAM 	EQU 0x03		;udp/ip

AF_INET EQU 2

***********************************************************
*********************** । ***********************
***********************************************************
 맮 㭪権  ⠥,     
ॣ஢( ᪫祭 SP).

 맮  騥( ᪫祭 OS_NETCONNECT), .. 
  ࠢ\ਥ ,  祭.
 室 ᯮ짮  㭪権 - ॠ뢠 ᠬ⥫쭮  .

*********************** OS_NETSOCKET **********************
	 ᮪.
	 맮 㭪樨 .
	 㬥  ॣ:
		D - ᥬ⢮ ᮢ,  8-⭮ ᫮, ᪠ ⮫쪮 祭 2 (AF_INET).
		E - ⮪ ᮥ(0x01 tcp/ip, 0x02 icmp, 0x03 udp/ip)
	頥 祭  ॣ:
		L - SOCKET  ⥫쭮 祭,  ⥫쭮 祭  - 㭪 訫  訡.
		 - errno  訡.
		
	 訡:
		ERR_AFNOSUPPORT - ᥬ⢮ ᮢ  ন
		ERR_NFILE		-  ᢮ ᮪⮢
		ERR_PROTOTYPE	- ⮪  ন
		
	ਬ ᮧ TCP/IP ᮪:
		LD D,AF_INET;2
		LD E,SOCK_STREAM
		OS_NETSOCKET
		BIT 7,L
		JP NZ,ERR_EXIT	;ࠡ⪠ 訡
		LD A,L
		LD (SOC),A		;࠭塞 ਯ ᮪.
		
	ਬ砭:
		 ⨨ , 뢠  ᮪ ᮧ ⨬ ᮬ.
		 饭  ᯮ짮 㣨 ᮬ.
		 室饣  ᢠ ⮬᪨   49152...65535
		
*********************** OS_NETSHUTDOWN **********************
	⨥ ᮪.
	 맮 㭪樨 .
	 㬥  ॣ:
		A - SOCKET
		E - ਠ , 0 -  , 1 -  ⮫쪮 ᫨  ࠢ .
	頥 祭  ॣ:
		L -  ⥫쭮 祭  - 㭪 訫  訡.
		 - errno  訡.
	
	ਬ  ᮪   襭  ࠢ:
close_wait:
		LD A,(SOC)
		LD E,1
		OS_NETSHUTDOWN
		BIT 7,L
		RET Z			;᮪ 
		CP ERR_EAGAIN
		JP NZ,ERR_EXIT		;ࠡ⪠ 訡  易   ࠢ.
		OS_YIELD		; 易⥫쭮. ᫨ ६  筮,
						; ⤠  ६ ⥬.
		JR close_wait ; ࠢ 
		
	 訡:
		ERR_NOTSOCK -  ⢨⥫ ਯ ᮪
		ERR_EAGAIN	-  ࠢ  
		
	ਬ砭: ୠ 뢠 ᮪   ⨨ . 
		,  ࠭祭 ⢠ ᮪⮢, ४ 뢠 ᮪ 
		 ⮫쪮  ⠭  㦥.
	
*********************** OS_NETCONNECT **********************
	 TCP/IP ᮪  .
	 맮 㭪樨 .
	 㬥  ॣ:
		A - SOCKET
		DE - 㪠⥫   sockaddr_in ᮤঠ IP    .
	頥 祭  ॣ:
		L -  ⥫쭮 祭  - 㭪 訫  訡.
		 - errno  訡.
	 訡:
		ERR_NOTSOCK 	-  ⢨⥫ ਯ ᮪
		ERR_ALREADY 	- ᮪ 㦥 祭
		ERR_HOSTUNREACH	-   㯭,  ⢥ 祭.
		
	ਬ 祭    IP ᮬ 1.2.3.4   80:
		LD A,(SOC)
		LD DE,destination_host
		OS_NETCONNECT
		BIT 7,L
		JP NZ,ERR_EXIT	;ࠡ⪠ 訡
		... ;稫
		
destination_host		
		DEFB AF_INET 
		DEFB 0,80				; 祭
		DEFB 1,2,3,4			;IP  祭
		DEFB 0,0,0,0,0,0,0,0	;१
		
	ਬ砭:  㭪 ਬ ⮫쪮  TCP/IP ᮪⠬.

*********************** OS_BIND **********************
	᢮ ᮪ ⭮  室饣 .
	 맮 㭪樨 .
	 㬥  ॣ:
		A - SOCKET
		DE - 㪠⥫   sockaddr_in ᮤঠ  室饣 .
			(⠫    ᯮ,  易 ⢮)
	頥 祭  ॣ:
		L -  ⥫쭮 祭 - 㭪 訫  訡.
		 - errno  訡.
	 訡:
		ERR_NOTSOCK 	-  ⢨⥫ ਯ ᮪
		
	ਬ ᢮ ᮪ 室北  433:
		LD A,(SOC)
		LD DE,source_host
		OS_BIND
		BIT 7,L
		JP NZ,ERR_EXIT	;ࠡ⪠ 訡
		... ;㤠筮, த ࠡ
		
source_host		
		DEFB AF_INET 
		DEFB high(433),low(433)	;室騩 
		DEFB 0,0,0,0			;室騩 IP  ( ᯮ  ⥪饩 ॠ樨)
		DEFB 0,0,0,0,0,0,0,0	;१
	ਬ砭:  ० TCP/IP 㭪 뢠(᫨ 㦭)  맮 OS_NETCONNECT	 OS_LISTEN.
	
*********************** OS_LISTEN **********************
	 ० 訢 室饣 (० ࢥ) TCP/IP ᮪.
	 맮 㭪樨 .
	 㬥  ॣ:
		A - SOCKET
	頥 祭  ॣ:
		L -  ⥫쭮 祭 - 㭪 訫  訡.
		 - errno  訡.
	 訡:
		ERR_NOTSOCK 	-  ⢨⥫ ਯ ᮪
		ERR_ALREADY 	- ᮪ 㦥 祭
		
	ਬ 祭 ० 訢:
		LD A,(SOC)
		OS_LISTEN
		BIT 7,L
		JP NZ,ERR_EXIT	;ࠡ⪠ 訡
		... ;㤠筮, த ࠡ
		
	ਬ砭:  㭪 ਬ ⮫쪮  TCP/IP ᮪⠬.
		 ࠢ 㭪 뢠(᫨ 㦭) ᫥ 맮 OS_BIND.
		
*********************** OS_ACCEPT **********************
	ਭ 室饥 TCP/IP 祭.
	 맮 㭪樨 .
	 㬥  ॣ:
		A - SOCKET
	頥 祭  ॣ:
		L - SOCKET  ⥫쭮 祭,  ⥫쭮 祭  - 㭪 訫  訡.
		 - errno  訡.
	 訡:
		ERR_NOTSOCK 		-  ⢨⥫ ਯ ᮪
		ERR_ECONNABORTED	-  訡 ᮪
		ERR_EAGAIN			- 室 祭  
		
	ਬ ਭ ᮥ   祭:
WAIT_CLIENTS
		LD A,(SOC)
		OS_ACCEPT
		BIT 7,L
		JR Z,ESTABLISHED
		CP ERR_EAGAIN
		JP NZ,ERR_EXIT	;ࠡ⪠ 訡
		OS_YIELD		; 易⥫쭮. ᫨ ६ ॠ஢  祭  筮,
						; ⤠  ६ ⥬.
		JR WAIT_CLIENTS	;  稫, 
ESTABLISHED
		LD A,L				;㤠筮
		LD (SOC_CLIENT),A	;࠭塞 ਯ ᮪.
		... ;த ࠡ
		
	ਬ砭:  㭪 ਬ ⮫쪮  TCP/IP ᮪⠬.
		㭪 뢠 ᫥ 맮 OS_LISTEN.
		頥  ਯ ᮪  ਭ ᮥ.  誨 த .
		᫨ 쭥 誠  ॡ,  ४ ࠧ 뢠 騩 ᮪.
		 ⪥ ᮪⮢, 頥 ਯ 祭 ᮪ 誨, 
		 ⮬ 砥  쭥襣 訢.
		..  ⨨ 饣 ᮪, 室 ஢(⥬ ࠢ ਯ஢)
		    ᮪⮬  ਭ ᮥ.
		
*********************** OS_WIZNETREAD **********************
	 室騥 .
	 맮 㭪樨 .
	
	 ⮪ TCP/IP  㬥  ॣ:
		A - SOCKET
		DE - 㪠⥫    ਭ 
		HL - ࠧ ( )
	 ⮪ ⫨筮  TCP/IP  㬥  ॣ:
		A - SOCKET
		DE - 㪠⥫   sockaddr_in,   頥(஬) IP-    ࠢ襣 .
		IX - 㪠⥫    ਭ 
		HL - ࠧ ( )
	頥 祭  ॣ:
		HL -  ⥫쭮 祭 㭪 訫  訡,
			 祭   頥 ⢨⥫ ࠧ( ) ਭ ,
			㫥 祭 맮  頥.
		 - errno  訡.
	 訡:
		ERR_NOTSOCK -  ⢨⥫ ਯ ᮪
		ERR_EAGAIN	- 室   
		ERR_NOTCONN	- ᮪  ⠭\ய襬 ᮥ( ⮪ TCP/IP)
		
	ਬ ਭ   ⮪ TCP/IP   :
WAIT_DATA
		LD A,(SOC)
		LD DE,BUF
		LD HL,BUF_SIZE
		OS_WIZNETREAD
		BIT 7,H
		JR Z,RECEIVED	;訡 
		CP ERR_EAGAIN
		JP NZ,ERR_EXIT	;ࠡ⪠ 訡
		OS_YIELD		; 易⥫쭮. ᫨ ६ ॠ஢  襤訥   筮,
						; ⤠  ६ ⥬.
		JR WAIT_DATA	; , 
RECEIVED
		LD (DATA_SIZE),HL	;㤠筮. ᫨ ॡ,  ࠭塞 ⢮ ਭ .
		... ;த ࠡ

BUF		DEFS 1000
BUF_SIZE EQU $-BUF
	
	ਬ砭:  ⮪ ⫨筮  TCP/IP, 室 ६   , 
		 ⠭   .

*********************** OS_WIZNETWRITE **********************
	ࠢ  .
	 맮 㭪樨 .
	
	 ⮪ TCP/IP  㬥  ॣ:
		A - SOCKET
		DE - 㪠⥫    묨
		HL - ࠧ ( ),  ⥪饩 ॠ樨 ᨬ 8192 
	 ⮪ ⫨筮  TCP/IP  㬥  ॣ:
		A - SOCKET
		DE - 㪠⥫   sockaddr_in,   室  IP-    ⥫
		IX - 㪠⥫    묨
		HL - ࠧ ( ),  ⥪饩 ॠ樨 ᨬ 8192 
	頥 祭  ॣ:
		HL -  ⥫쭮 祭 㭪 訫  訡,
			 頥 ⢨⥫ ࠧ( ) ࠢ ,
		 - errno  訡.
	 訡:
		ERR_NOTSOCK -  ⢨⥫ ਯ ᮪
		ERR_NOTCONN	- ᮪  ⠭\ய襬 ᮥ( ⮪ TCP/IP)
		ERR_EMSGSIZE -   ࠢ  ,   ᫨誮 让
		
	ਬ ࠢ   ⮪ TCP/IP   :
WAIT_SEND
		LD A,(SOC)
		LD DE,BUF
		LD HL,BUF_SIZE
		OS_WIZNETWRITE
		BIT 7,H
		JR Z,SEND_OK	;訡 
		CP ERR_EMSGSIZE
		JP NZ,ERR_EXIT	;ࠡ⪠ 訡
		OS_YIELD		; 易⥫쭮. ᫨ ६  筮,
						; ⤠  ६ ⥬.
		JR WAIT_SEND	; ࠢ ९,  ᢮
SEND_OK
		LD (DATA_SIZE),HL	;㤠筮. ᫨ ॡ,  ࠭塞 ⢮ ࠢ .
		... ;த ࠡ
	
BUF		DEFB "Hello World!"
BUF_SIZE EQU $-BUF
				