How Does a 1980s Z80 Retro Computer Get Real TCP/IP Networking?(NedoOS)
A multitasking ZX Spectrum OS drives WIZnet's W5300 using plain Z80 IN/OUT instructions, enabling ping, telnet, browsing, and network games.
0
Project description
How Does a 1980s Z80 Retro Computer Get Real TCP/IP Networking?
A multitasking operating system for ZX Spectrum-compatible computers talks to a WIZnet W5300 hardware TCP/IP chip using nothing but the Z80's native IN/OUT instructions โ turning a decades-old 8-bit architecture into a machine that can ping, telnet, browse the web, and play network games.
COMPONENTS Hardware components
| Part | Role |
|---|---|
| Z80 CPU | Runs NedoOS; found in ZX Spectrum-compatible boards such as ZX Evolution, Pentagon 2.666, and ATM Turbo 2+ |
| WIZnet W5300 | Hardware TCP/IP offload chip with a parallel 8/16-bit bus, accessed as Z80 I/O ports |
| ZXNETUSB expansion card | ZXBUS card combining the W5300 with a USB host/device controller |
| ESP8266 (alternate backend) | Optional serial Wi-Fi module used when no W5300 hardware is present |
๐PROJECT DESCRIPTION
A Real Multitasking OS for a Computer From 1982
NedoOS is a multitasking operating system for ZX Spectrum-compatible computers โ Z80-based machines descended from Sinclair's 1982 original, still built and sold today as FPGA recreations like ZX Evolution, Pentagon 2.666, and ATM Turbo 2+. First released in 2018 and still actively maintained (this mirror syncs nightly from the project's SVN repository), NedoOS runs up to 16 simultaneous tasks, includes programming environments for assembler, BASIC, Pascal, C, and its own NedoLang, and provides filesystem support for TR-DOS floppies, SD cards, USB flash drives, and FAT12/16/32 IDE hard drives.
What makes it relevant here is that this multitasking OS also does real networking โ not a toy demo, but a documented, general-purpose kernel network API (OS_NETSOCKET, OS_NETCONNECT, OS_WIZNETREAD, OS_WIZNETWRITE, OS_NETSHUTDOWN, OS_GETDNS/OS_SETDNS) that user-space programs call the same way they'd call any other syscall. A ping utility, a telnet client, a DNS resolver, an HTTP browser, and even network-enabled games are all built directly on top of it.
๐ Talking to the W5300 With Nothing but IN and OUT
The chip behind the hardware path is the WIZnet W5300 โ unlike the SPI-based W5100/W5500 family more commonly seen in maker projects, the W5300 exposes its registers over a parallel 8/16-bit bus, which happens to map naturally onto a retro computer's memory-mapped I/O world. NedoOS's kernel/w5300.asm and kernel/w5300ini.asm drive it with exactly that: the Z80's IN/OUT instructions against a handful of I/O ports (a register-address-select port and a socket-config port, both offset from a configurable base address), with no SPI, no bit-banging, and no external glue logic beyond what's already on the expansion card.
The driver reconstructs a complete WIZnet socket state machine in Z80 assembly: Sn_MR/Sn_CR/Sn_SSR for mode, command and status, Sn_PORTR/Sn_DPORTR/Sn_DIPR for local and destination addressing, and Sn_TX_*/Sn_RX_* for the TX/RX ring buffers โ the same register set WIZnet documents for the chip, just accessed through IN A,(C) and OUT (C),A instead of SPI transactions. Because the Z80 is slow relative to 100 Mbps Ethernet, the bulk-transfer routines are hand-unrolled โ the RX/TX loops execute eight INI/OUTI pairs per iteration specifically so the CPU can keep pace with the chip's buffers.

Generated diagram: the same register set WIZnet documents for the W5300, accessed as plain Z80 I/O ports.
๐ One Syscall API, Two Completely Different Backends
NedoOS doesn't force every installation to have a W5300 card. The kernel also ships kernel/espnet.asm, a second networking backend built around an ESP8266/ESP32 module running espnet, the project's own binary socket protocol (currently v1.27, per protocol.h) carried over a plain UART link โ not the text-based AT command set some Wi-Fi modules use, but a compact binary frame format purpose-built for this kernel. A companion firmware sketch, espnet.ino, describes itself in its own header comment as "binary socket firmware for ESP32, ESP32-C3, and ESP8266."
The interesting part is that both backends sit behind the exact same five-call kernel API. ping, telnet, the DNS resolver, and the HTTP browser call OS_NETSOCKET, OS_WIZNETREAD, and OS_WIZNETWRITE without knowing or caring whether the bytes are actually going out through W5300 hardware sockets or being framed and shuttled across a serial link to an ESP8266/ESP32 speaking espnet. Reading src/ping/ping.asm, the actual ICMP ping utility, shows exactly this: it opens a raw socket with OS_NETSOCKET, sends and receives ICMP echo packets with OS_WIZNETWRITE/OS_WIZNETREAD, and never references W5300 or espnet registers directly.

Generated diagram: the same five syscalls, two unrelated pieces of hardware underneath.
๐งฉ Why a Hardware TCP/IP Chip Matters Here
On a modern MCU, a hardware TCP/IP offload chip like the W5300 is mostly about saving flash, RAM, and CPU cycles that a software stack would otherwise consume. On a Z80 clocked at a few megahertz โ designed in the 1970s, with no hardware multiplication and a handful of 8/16-bit registers โ the case is considerably stronger: implementing TCP's retransmission timers, congestion handling, and checksum logic entirely in Z80 assembly, on top of everything else NedoOS's scheduler is already doing for up to 16 concurrent tasks, would be a substantially harder undertaking than what this driver actually does. Because the W5300 already contains a complete hardwired TCP/IP stack, the Z80 side only needs to move command bytes and buffer contents through a handful of I/O ports โ the driver's real job is register bookkeeping and buffer copying, not protocol implementation.
The espnet path similarly offloads protocol handling to the companion module's own binary-socket firmware.
๐งญ Where It Fits โ Value and Limits
The value here is a genuinely unusual demonstration of a WIZnet chip's range: the W5300's parallel-bus interface, usually paired with FPGA boards or ARM/STM32 designs in WIZnet's own reference material, turns out to be just as much at home behind a 1980s-style Z80 I/O bus. For anyone curious about what a hardware TCP/IP socket engine looks like with literally no abstraction layer between it and the CPU's IN/OUT instructions, this driver is about as close to the metal as it gets โ and the dual-backend design (hardware W5300 vs. UART-based espnet) is a clean, minimal pattern for any project that wants to support both "the fast card is installed" and "just use whatever Wi-Fi module is cheap" without duplicating application code.
The limits are the honest ones that come with a decades-old CPU and a small, community-maintained project: throughput is bounded by how fast a few-MHz Z80 can move bytes through INI/OUTI, not by the W5300's own 100 Mbps ceiling; the W5300 path requires the specific ZXNETUSB expansion card (or equivalent wiring) rather than being universally available on every ZX Spectrum-compatible board; and, as with most long-running hobbyist projects with a small maintainer base, the pace of updates depends on the ZX Spectrum-clone community around nedoos.ru and nedopc.org rather than a company roadmap.
๐ Project History and Credits
NedoOS's networking is a small piece of a much older and larger effort. The idea was drafted in 2007 with a first, never-tested kernel; serious development began in 2018, when the kernel, the cmd shell, the nv file manager, and part of a Scratch-like tool were written โ the project's own changelog (nedoos.new, 147 dated entries) opens that same year and reads like a multitasking OS being hardened in real time: a standalone command-line build on November 7, 2018, multitasking three days later on November 10, a YIELD macro on November 12, and per-task current directories and drives by November 15 ("directory reads have no global state โ directories can be read multitaskingly," per the log). Version numbers tied to SVN revisions appeared in 2019; the kapps (C application) ecosystem matured through 2021; and the network stack โ including the ESP8266 backend discussed above โ was hardened through 2022. The project remains active today: this GitHub mirror syncs nightly from the upstream Subversion repository at svn://nedoos.ru.
| Contributor | Contribution |
|---|---|
| Dmitry Bystrov ("Alone Coder") | Project lead; kernel, documentation |
| DimkaM | Networking and disk-subsystem patches, the dmapps application family |
| Nikolay Grivin | Code and documentation |
| Kirill Lovyagin, demige | NedoBasic and Nedovigator |
| Lord Vader, Konstantin Kosarev, and others | File sorting, disk utilities, build tooling |
| ChaN | FatFS (embedded under its own EVAL license) |
The manual's licensing terms allow free distribution of the program and source, while porting the code to another platform asks for the project lead's approval. Two design choices from the architecture are worth calling out alongside the networking story: there is no separate hardware timer for scheduling โ the 50 Hz video interrupt is the scheduling tick โ and every task carries its own small "user kernel" copy in its low 16 KB memory window, which is what makes the CP/M-style restart vectors (rst 0, rst 0x08, and so on) work consistently across up to sixteen concurrently running programs.
๐ Related WIZnet Maker Projects
| Project | Platform / Hardware | WIZnet Chip & Role | Difference from NedoOS |
|---|---|---|---|
| NedoOS (this project) | Z80 (ZX Evolution / Pentagon / ATM Turbo 2+) | W5300, driven directly as hardware TCP/IP sockets via Z80 I/O ports | Full BSD-socket-style kernel syscall API; dual backend (W5300 or ESP8266) |
| ZXNETUSB | Same Z80 / ZXBUS family (ZX Evolution) | W5300, paired with a USB host/device controller on one card | Covers the hardware card itself, not the OS driver that talks to it |
| RC2014 Wiznet 5300 | RC2014 (modern discrete-logic Z80 backplane computer) | W5300 (via WIZ830MJ module), wired straight onto the backplane bus | Different retro Z80 platform and bus; no OS-level socket API, just chip-to-bus wiring |
| KallistiOS | Sega Dreamcast (SH-4) | W5500, used in MACRAW mode as a link-layer adapter | Software IPv4/IPv6 stack runs on top in KOS itself, instead of using the chip's hardware TCP/IP sockets |
- ZXNETUSB is the expansion card this exact driver targets โ a W5300-plus-USB-host/device ZXBUS card for ZX Evolution-family computers, designed by Vadim Akimov, Roman Chunin, and Dmitry Martyshkin. That post covers the hardware card itself; this piece is its natural software counterpart, going through how NedoOS's kernel actually drives the chip that card carries.
- RC2014 Wiznet 5300 wires the same W5300 (via a WIZ830MJ module) onto a completely different retro platform โ the RC2014, a modern Z80 backplane computer built from discrete logic rather than an FPGA. The shared thread is direct, low-level W5300 access on retro Z80 hardware; the difference is the bus and glue logic each platform needs (RC2014 handles timing via the W5300's configurable data-hold register and skips level-shifting since the chip's I/O is already 5V-tolerant).
- KallistiOS is the closest architectural comparison from a different retro platform: an open-source SDK/lightweight OS for the Sega Dreamcast that added official WIZnet W5500 support in a December 2025 pull request. The key difference is where the TCP/IP stack lives โ KallistiOS uses the W5500 in MACRAW mode purely as a link-layer Ethernet adapter and runs its own IPv4/IPv6 stack in software, while NedoOS's W5300 driver leans on the chip's hardware TCP/IP sockets directly and keeps no software protocol stack of its own.
โ FAQ
Q. Is this a toy demo, or does networking actually work end-to-end? It's functional and has shipped user-facing tools: a ping utility with packet-loss and RTT statistics, a telnet client, a DNS resolver, and an HTTP browser are all built on the same kernel network syscalls described here.
Q. Do I need the WIZnet chip, or can NedoOS network over Wi-Fi instead? Either works. The W5300 (via the ZXNETUSB card) is one backend; an ESP8266/ESP32 module running the project's own espnet binary socket protocol over UART is the other โ not AT commands, but a compact custom frame format. Application code calls the same syscalls regardless of which is installed.
Q. Why W5300 instead of a more common chip like the W5500? The W5300 uses a parallel 8/16-bit bus rather than SPI, which maps directly onto the kind of memory-mapped I/O port space a Z80-based retro computer already uses for every other peripheral โ no SPI controller or bit-banging driver is needed.
Q. Does the Z80 run its own TCP/IP stack? No. The W5300 path uses the chip's built-in hardwired TCP/IP stack; the Z80 side only issues commands and moves buffer data through I/O ports. The ESP8266 path similarly offloads protocol handling to the module's own AT-command firmware.
Q. What computers can actually run this? ZX Spectrum-compatible boards in the ATM Turbo 2-derived family: ZX Evolution (including its "baseconf" variant), Pentagon 2.666LE, and ATM3, among others, depending on which build script is used.
1980๋ ๋ Z80 ๋ ํธ๋ก ์ปดํจํฐ๋ ์ด๋ป๊ฒ ์ง์ง TCP/IP ๋คํธ์ํน์ ํ ๊น?
ZX Spectrum ํธํ ์ปดํจํฐ์ฉ ๋ฉํฐํ์คํน ์ด์์ฒด์ ๊ฐ Z80์ ์์ IN/OUT ๋ช
๋ น๋ง์ผ๋ก WIZnet W5300 ํ๋์จ์ด TCP/IP ์นฉ๊ณผ ํต์ ํฉ๋๋ค โ ์์ญ ๋
๋ 8๋นํธ ์ํคํ
์ฒ๋ฅผ ping, telnet, ์น ๋ธ๋ผ์ฐ์ง, ๋คํธ์ํฌ ๊ฒ์๊น์ง ๋๋ ๊ธฐ๊ณ๋ก ๋ฐ๊ฟ๋์ ์ฌ๋ก์
๋๋ค.
COMPONENTS ํ๋์จ์ด ๊ตฌ์ฑ ์์
| ๋ถํ | ์ญํ |
|---|---|
| Z80 CPU | NedoOS ๊ตฌ๋; ZX Evolution, Pentagon 2.666, ATM Turbo 2+ ๊ฐ์ ZX Spectrum ํธํ ๋ณด๋์ ํ์ฌ |
| WIZnet W5300 | ๋ณ๋ ฌ 8/16๋นํธ ๋ฒ์ค๋ฅผ ๊ฐ์ง ํ๋์จ์ด TCP/IP ์คํ๋ก๋ ์นฉ, Z80 I/O ํฌํธ๋ก ์ ๊ทผ |
| ZXNETUSB ํ์ฅ ์นด๋ | W5300๊ณผ USB ํธ์คํธ/๋๋ฐ์ด์ค ์ปจํธ๋กค๋ฌ๋ฅผ ๊ฒฐํฉํ ZXBUS ์นด๋ |
| ESP8266 (๋์ฒด ๋ฐฑ์๋) | W5300 ํ๋์จ์ด๊ฐ ์์ ๋ ์ฌ์ฉํ๋ ์ ํ์ ์๋ฆฌ์ผ Wi-Fi ๋ชจ๋,UART ์์์ ์์ฒด ๋ฐ์ด๋๋ฆฌ ์์ผ ํ๋กํ ์ฝ(espnet, v1.27)๋ก ํต์ |
๐PROJECT DESCRIPTION
1982๋ ์ ์ปดํจํฐ๋ฅผ ์ํ ์ง์ง ๋ฉํฐํ์คํน OS
NedoOS๋ ZX Spectrum ํธํ ์ปดํจํฐ โ Sinclair์ 1982๋ ์ค๋ฆฌ์ง๋์์ ์ด์ด์ ธ, ์ค๋๋ ๊น์ง๋ ZX Evolution, Pentagon 2.666, ATM Turbo 2+ ๊ฐ์ FPGA ์ฌํ ๋ณด๋๋ก ๋ง๋ค์ด์ง๊ณ ํ๋งค๋๋ Z80 ๊ธฐ๋ฐ ๊ธฐ๊ณ โ ๋ฅผ ์ํ ๋ฉํฐํ์คํน ์ด์์ฒด์ ์ ๋๋ค. 2018๋ ์ฒซ ์ถ์๋์ด ์ง๊ธ๋ ํ๋ฐํ ์ ์ง ๊ด๋ฆฌ๋๊ณ ์์ผ๋ฉฐ(์ด GitHub ๋ฏธ๋ฌ๋ ํ๋ก์ ํธ์ SVN ์ ์ฅ์์์ ๋งค์ผ ๋ฐค ๋๊ธฐํ๋ฉ๋๋ค), ์ต๋ 16๊ฐ์ ์์ ์ ๋์์ ์คํํ๊ณ , ์ด์ ๋ธ๋ฌยทBASICยทPascalยทC, ๊ทธ๋ฆฌ๊ณ ์์ฒด NedoLang๊น์ง ํ๋ก๊ทธ๋๋ฐ ํ๊ฒฝ์ ์ ๊ณตํ๋ฉฐ, TR-DOS ํ๋กํผ, SD์นด๋, USB ํ๋์ ๋๋ผ์ด๋ธ, FAT12/16/32 IDE ํ๋๋์คํฌ๊น์ง ํ์ผ์์คํ ์ ์ง์ํฉ๋๋ค.
์ฌ๊ธฐ์ ์ค์ํ ๋ถ๋ถ์, ์ด ๋ฉํฐํ์คํน OS๊ฐ ์ง์ง ๋คํธ์ํน๊น์ง ํ๋ค๋ ์ ์
๋๋ค โ ์ฅ๋๊ฐ ๋ฐ๋ชจ๊ฐ ์๋๋ผ, ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ด ๋ค๋ฅธ syscall๊ณผ ๋๊ฐ์ ๋ฐฉ์์ผ๋ก ํธ์ถํ๋ ๋ฌธ์ํ๋ ๋ฒ์ฉ ์ปค๋ ๋คํธ์ํฌ API(OS_NETSOCKET, OS_NETCONNECT, OS_WIZNETREAD, OS_WIZNETWRITE, OS_NETSHUTDOWN, OS_GETDNS/OS_SETDNS)์
๋๋ค. ping ์ ํธ๋ฆฌํฐ, telnet ํด๋ผ์ด์ธํธ, DNS ๋ฆฌ์กธ๋ฒ, HTTP ๋ธ๋ผ์ฐ์ , ์ฌ์ง์ด ๋คํธ์ํฌ ๊ฒ์๊น์ง ์ ๋ถ ์ด ์์ ์ง์ ๊ตฌ์ถ๋์ด ์์ต๋๋ค.
๐ IN๊ณผ OUT๋ง์ผ๋ก W5300๊ณผ ๋ํํ๊ธฐ
ํ๋์จ์ด ๊ฒฝ๋ก๋ฅผ ๋ด๋นํ๋ ์นฉ์ WIZnet W5300์
๋๋ค โ ๋ฉ์ด์ปค ํ๋ก์ ํธ์์ ๋ ํํ ๋ณด๋ SPI ๊ธฐ๋ฐ W5100/W5500 ๊ณ์ด๊ณผ ๋ฌ๋ฆฌ, W5300์ ๋ณ๋ ฌ 8/16๋นํธ ๋ฒ์ค๋ก ๋ ์ง์คํฐ๋ฅผ ๋
ธ์ถํ๋๋ฐ, ์ด๊ฒ ๋ง์นจ ๋ ํธ๋ก ์ปดํจํฐ์ ๋ฉ๋ชจ๋ฆฌ ๋งคํ I/O ๋ฐฉ์๊ณผ ์์ฐ์ค๋ฝ๊ฒ ๋ง์๋จ์ด์ง๋๋ค. NedoOS์ kernel/w5300.asm๊ณผ kernel/w5300ini.asm์ ์ ํํ ๊ทธ ๋ฐฉ์์ผ๋ก ์นฉ์ ๊ตฌ๋ํฉ๋๋ค: Z80์ IN/OUT ๋ช
๋ น์ ๋ช ๊ฐ์ I/O ํฌํธ(์ค์ ๊ฐ๋ฅํ ๋ฒ ์ด์ค ์ฃผ์์์ ์คํ์
๋ ๋ ์ง์คํฐ ์ฃผ์ ์ ํ ํฌํธ, ์์ผ ์ค์ ํฌํธ)์ ๋ํด ์คํํ ๋ฟ, SPI๋ ๋นํธ๋ฑ
์๋ ํ์ฅ ์นด๋์ ์ด๋ฏธ ์๋ ๊ฒ ์ด์์ ์ธ๋ถ ๊ธ๋ฃจ ๋ก์ง๋ ํ์ ์์ต๋๋ค.
๋๋ผ์ด๋ฒ๋ Z80 ์ด์
๋ธ๋ฆฌ๋ก ์์ ํ WIZnet ์์ผ ์ํ ๋จธ์ ์ ์ฌ๊ตฌ์ฑํฉ๋๋ค: ๋ชจ๋ยท๋ช
๋ นยท์ํ๋ฅผ ์ํ Sn_MR/Sn_CR/Sn_SSR, ๋ก์ปฌยท๋ชฉ์ ์ง ์ฃผ์ ์ง์ ์ ์ํ Sn_PORTR/Sn_DPORTR/Sn_DIPR, TX/RX ๋ง ๋ฒํผ๋ฅผ ์ํ Sn_TX_*/Sn_RX_* โ WIZnet์ด ์ด ์นฉ์ ๋ํด ๋ฌธ์ํํ ๊ฒ๊ณผ ๋์ผํ ๋ ์ง์คํฐ ์งํฉ์, SPI ํธ๋์ญ์
๋์ IN A,(C)์ OUT (C),A๋ก ์ ๊ทผํ ๋ฟ์
๋๋ค. Z80์ด 100Mbps ์ด๋๋ท์ ๋นํด ๋๋ฆฌ๊ธฐ ๋๋ฌธ์, ๋๋ ์ ์ก ๋ฃจํด์ ์์ผ๋ก ์ง์ ํ์ด๋์์ต๋๋ค โ RX/TX ๋ฃจํ๋ CPU๊ฐ ์นฉ์ ๋ฒํผ ์๋๋ฅผ ๋ฐ๋ผ์ก์ ์ ์๋๋ก ๋ฐ๋ณต๋ง๋ค INI/OUTI ์์ ์ฌ๋ ๋ฒ์ฉ ์คํํฉ๋๋ค.

์์ฑ๋ ๋ค์ด์ด๊ทธ๋จ: WIZnet์ด W5300์ ๋ํด ๋ฌธ์ํํ ๊ฒ๊ณผ ๋์ผํ ๋ ์ง์คํฐ ์งํฉ์, ํ๋ฒํ Z80 I/O ํฌํธ๋ก ์ ๊ทผํฉ๋๋ค.
๐ ํ๋์ syscall API, ์์ ํ ๋ค๋ฅธ ๋ ๋ฐฑ์๋
NedoOS๋ ๋ชจ๋ ์ค์น ํ๊ฒฝ์ W5300 ์นด๋๊ฐ ์์ด์ผ ํ๋ค๊ณ ๊ฐ์ ํ์ง ์์ต๋๋ค. ์ปค๋์๋ kernel/espnet.asm์ด๋ผ๋ ๋ ๋ฒ์งธ ๋คํธ์ํน ๋ฐฑ์๋๋ ๋ค์ด์๋๋ฐ, ESP8266/ESP32 ๋ชจ๋์ด espnet์ด๋ผ๋ ์ด ํ๋ก์ ํธ ์์ฒด์ ๋ฐ์ด๋๋ฆฌ ์์ผ ํ๋กํ ์ฝ(protocol.h ๊ธฐ์ค ํ์ฌ v1.27)์ ํ๋ฒํ UART ์์์ ์ฃผ๊ณ ๋ฐ๋ ๋ฐฉ์์
๋๋ค โ ์ผ๋ถ Wi-Fi ๋ชจ๋์ด ์ฐ๋ ํ
์คํธ ๊ธฐ๋ฐ AT ์ปค๋งจ๋ ๋ฐฉ์์ด ์๋๋ผ, ์ด ์ปค๋ ์ ์ฉ์ผ๋ก ์ค๊ณ๋ ์ปดํฉํธํ ๋ฐ์ด๋๋ฆฌ ํ๋ ์ ํฌ๋งท์
๋๋ค. ๋๋ฐ ํ์จ์ด ์ค์ผ์น์ธ espnet.ino๋ ์์ฒด ํค๋ ์ฃผ์์ ์ค์ค๋ก๋ฅผ "ESP32, ESP32-C3, ESP8266์ฉ ๋ฐ์ด๋๋ฆฌ ์์ผ ํ์จ์ด"๋ผ๊ณ ๋ช
์ํ๊ณ ์์ต๋๋ค.
ํฅ๋ฏธ๋ก์ด ์ ์ ๋ ๋ฐฑ์๋ ๋ชจ๋ ์ ํํ ๋์ผํ ๋ค์ฏ ๊ฐ์ง๋ฆฌ ์ปค๋ API ๋ค์ ์๋ค๋ ๊ฒ๋๋ค. ping, telnet, DNS ๋ฆฌ์กธ๋ฒ, HTTP ๋ธ๋ผ์ฐ์ ๋ OS_NETSOCKET, OS_WIZNETREAD, OS_WIZNETWRITE๋ฅผ ํธ์ถํ ๋ฟ, ์ค์ ๋ฐ์ดํฐ๊ฐ W5300 ํ๋์จ์ด ์์ผ์ ํตํด ๋๊ฐ๋์ง ์๋๋ฉด espnet ํ๋กํ ์ฝ๋ก ํ๋ ์ด๋ฐ๋์ด ์๋ฆฌ์ผ ๋งํฌ๋ฅผ ๊ฑฐ์ณ ESP8266/ESP32๋ก ๊ฐ๋์ง ์ ํ ์ ๊ฒฝ ์ฐ์ง ์์ต๋๋ค. ์ค์ ICMP ping ์ ํธ๋ฆฌํฐ์ธ src/ping/ping.asm์ ๋ณด๋ฉด ์ ํํ ์ด๋ฐ ๋ชจ์ต์
๋๋ค: OS_NETSOCKET์ผ๋ก raw ์์ผ์ ์ด๊ณ , OS_WIZNETWRITE/OS_WIZNETREAD๋ก ICMP echo ํจํท์ ์ฃผ๊ณ ๋ฐ์ ๋ฟ, W5300์ด๋ espnet ๋ ์ง์คํฐ๋ฅผ ์ง์ ์ฐธ์กฐํ๋ ์ผ์ด ์ ํ ์์ต๋๋ค.

์์ฑ๋ ๋ค์ด์ด๊ทธ๋จ: ๊ฐ์ ๋ค์ฏ ๊ฐ์ syscall, ๊ทธ ์๋์๋ ์๋ก ์ ํ ๋ค๋ฅธ ๋ ํ๋์จ์ด.
๐งฉ ์ ์ฌ๊ธฐ์ ํ๋์จ์ด TCP/IP ์นฉ์ด ์ค์ํ๊ฐ
ํ๋ MCU์์ W5300 ๊ฐ์ ํ๋์จ์ด TCP/IP ์คํ๋ก๋ ์นฉ์ ์ฃผ๋ก ์ํํธ์จ์ด ์คํ์ด ์ก์๋จน์์ ํ๋์ยทRAMยทCPU ์ฌ์ดํด์ ์๊ปด์ฃผ๋ ์ญํ ์ ํฉ๋๋ค. ๊ทธ๋ฐ๋ฐ 1970๋ ๋์ ์ค๊ณ๋์ด ํ๋์จ์ด ๊ณฑ์ ๊ธฐ๋ ์๊ณ 8/16๋นํธ ๋ ์ง์คํฐ ๋ช ๊ฐ๊ฐ ์ ๋ถ์ธ, ๋ช MHz๋ก ๋์ํ๋ Z80์์๋ ์ด ์ฐจ์ด๊ฐ ํจ์ฌ ๋ ๊ฒฐ์ ์ ์ ๋๋ค: TCP์ ์ฌ์ ์ก ํ์ด๋จธ, ํผ์ก ์ ์ด, ์ฒดํฌ์ฌ ๋ก์ง์ Z80 ์ด์ ๋ธ๋ฆฌ๋ก ์ ๋ถ ๊ตฌํํ๋ ์ผ์, NedoOS์ ์ค์ผ์ค๋ฌ๊ฐ ์ด๋ฏธ ์ต๋ 16๊ฐ์ ๋์ ์์ ์ ์ํด ํ๊ณ ์๋ ๋ค๋ฅธ ๋ชจ๋ ์ผ ์์ ์น๊ธฐ์๋, ์ค์ ๋ก ์ด ๋๋ผ์ด๋ฒ๊ฐ ํ๋ ์ผ๋ณด๋ค ํจ์ฌ ๋ ์ด๋ ค์ด ์์ ์ด ๋์ ๊ฒ๋๋ค. W5300์ด ์ด๋ฏธ ์์ ํ ํ๋์์ด์ด๋ TCP/IP ์คํ์ ๋ด๊ณ ์๊ธฐ ๋๋ฌธ์, Z80 ์ชฝ์ ๋ช ๋ น ๋ฐ์ดํธ์ ๋ฒํผ ๋ด์ฉ์ ๋ช ๊ฐ์ I/O ํฌํธ๋ก ์ฎ๊ธฐ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค โ ์ด ๋๋ผ์ด๋ฒ๊ฐ ์ค์ ๋ก ํ๋ ์ผ์ ํ๋กํ ์ฝ ๊ตฌํ์ด ์๋๋ผ ๋ ์ง์คํฐ ๊ด๋ฆฌ์ ๋ฒํผ ๋ณต์ฌ์ ๋๋ค.
์ด๋ฐ ์ญํ ๋ถ๋ด ๋๋ถ์, OS์ ๋คํธ์ํน ์คํ ์ ์ฒด๊ฐ ์ต์ ์นํ์ด์ง ํ๋๋ณด๋ค๋ ์์ ๋ฉ๋ชจ๋ฆฌ์ ๋ค์ด๊ฐ๋ ๊ธฐ๊ณ ์์์, ping ์ ํธ๋ฆฌํฐ์ telnet ํด๋ผ์ด์ธํธ, HTTP ๋ธ๋ผ์ฐ์ ๊ฐ ๊ฐ๊ฐ ์๊ณ ๋
๋ฆฝ์ ์ธ .com ํ๋ก๊ทธ๋จ์ผ๋ก ์ค์ ์กด์ฌํ ์ ์๊ฒ ๋ฉ๋๋ค.
๐งญ ์ด ํ๋ก์ ํธ๊ฐ ์๋ฆฌํ๋ ์์น โ ๊ฐ์น์ ํ๊ณ
์ฌ๊ธฐ์์ ๊ฐ์น๋ WIZnet ์นฉ์ ํ์ฉ ๋ฒ์๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ฝค ํน์ดํ ์ฌ๋ก๋ผ๋ ๋ฐ ์์ต๋๋ค: WIZnet ์์ฒด ๋ ํผ๋ฐ์ค ์๋ฃ์์๋ ๋ณดํต FPGA ๋ณด๋๋ ARM/STM32 ์ค๊ณ์ ์ง์ ์ด๋ฃจ๋ W5300์ ๋ณ๋ ฌ ๋ฒ์ค ์ธํฐํ์ด์ค๊ฐ, 1980๋
๋ ์คํ์ผ์ Z80 I/O ๋ฒ์ค ๋ค์์๋ ๋๊ฐ์ด ์ ์ด์ธ๋ฆฐ๋ค๋ ๊ฑธ ๋ณด์ฌ์ค๋๋ค. ํ๋์จ์ด TCP/IP ์์ผ ์์ง์ด CPU์ IN/OUT ๋ช
๋ น๊ณผ ๊ทธ ์ฌ์ด์ ๋ฌธ์ ๊ทธ๋๋ก ์๋ฌด ์ถ์ํ ๊ณ์ธต๋ ์์ด ์ด๋ค ๋ชจ์ต์ธ์ง ๊ถ๊ธํ ์ฌ๋์๊ฒ, ์ด ๋๋ผ์ด๋ฒ๋ ๊ฑฐ์ ์ต๋ํ ๋ฐ๋ฐ๋ฅ์ ๊ฐ๊น์ด ์ฌ๋ก์
๋๋ค โ ๊ทธ๊ทธ๋ฆฌ๊ณ ํ๋์จ์ด W5300๊ณผ UART ๊ธฐ๋ฐ espnet์ ํจ๊ป ์ง์ํ๋ ์ด์ค ๋ฐฑ์๋ ์ค๊ณ๋, "๋น ๋ฅธ ์นด๋๊ฐ ๊ฝํ ์๋ ๊ฒฝ์ฐ"์ "๊ทธ๋ฅ ์ ๋ ดํ Wi-Fi ๋ชจ๋์ ์ฐ๋ ๊ฒฝ์ฐ"๋ฅผ ์ ํ๋ฆฌ์ผ์ด์
์ฝ๋ ์ค๋ณต ์์ด ํจ๊ป ์ง์ํ๊ณ ์ถ์ ์ด๋ค ํ๋ก์ ํธ์๋ ์ฐธ๊ณ ํ ๋งํ ๊น๋ํ๊ณ ์ต์ํ์ ํจํด์
๋๋ค.
ํ๊ณ๋ ์์ญ ๋
๋ CPU์ ์๊ท๋ชจ ์ปค๋ฎค๋ํฐ ์ ์ง ํ๋ก์ ํธ์ ๋ฐ๋ผ์ค๋ ์ ์งํ ๊ฒ๋ค์
๋๋ค: ์ฒ๋ฆฌ๋์ W5300 ์์ฒด์ 100Mbps ํ๊ณ๊ฐ ์๋๋ผ ๋ช MHz์ง๋ฆฌ Z80์ด INI/OUTI๋ก ๋ฐ์ดํธ๋ฅผ ์ผ๋ง๋ ๋นจ๋ฆฌ ์ฎ๊ธธ ์ ์๋๊ฐ์ ์ข์ฐ๋๊ณ , W5300 ๊ฒฝ๋ก๋ ๋ชจ๋ ZX Spectrum ํธํ ๋ณด๋์์ ๋ฒ์ฉ์ผ๋ก ๋๋ ๊ฒ ์๋๋ผ ํน์ ZXNETUSB ํ์ฅ ์นด๋(๋๋ ๊ทธ์ ์คํ๋ ๋ฐฐ์ )๊ฐ ํ์ํ๋ฉฐ, ์ ์ง๋ณด์ ์ธ์์ด ์ ์ ๋๋ถ๋ถ์ ์ฅ๊ธฐ ์ทจ๋ฏธ ํ๋ก์ ํธ๊ฐ ๊ทธ๋ ๋ฏ ์
๋ฐ์ดํธ ์๋๋ ํ์ฌ์ ๋ก๋๋งต์ด ์๋๋ผ nedoos.ru์ nedopc.org๋ฅผ ์ค์ฌ์ผ๋ก ํ ZX Spectrum ํด๋ก ์ปค๋ฎค๋ํฐ์ ํ๋์ ๋ฌ๋ ค ์์ต๋๋ค.
๐ ํ๋ก์ ํธ ์ญ์ฌ์ ๊ธฐ์ฌ์
NedoOS์ ๋คํธ์ํน์ ํจ์ฌ ๋ ์ค๋๋๊ณ ํฐ ์์
์ ์์ ํ ์กฐ๊ฐ์
๋๋ค. ์์ด๋์ด๋ 2007๋
์ ์ฒ์ ๊ตฌ์๋์๊ณ ํ ๋ฒ๋ ํ
์คํธ๋์ง ์์ ์ฒซ ์ปค๋์ด ๊ทธ๋ ๋์์ต๋๋ค. ๋ณธ๊ฒฉ์ ์ธ ๊ฐ๋ฐ์ 2018๋
์ ์์๋์ด ์ปค๋, cmd ์
ธ, ํ์ผ ๊ด๋ฆฌ์ nv, Scratch ์คํ์ผ ๋๊ตฌ์ ์ผ๋ถ๊ฐ ์ด๋ ์์ฑ๋์์ต๋๋ค โ ํ๋ก์ ํธ ์์ฒด ๋ณ๊ฒฝ ๋ก๊ทธ(nedoos.new, 147๊ฐ์ ๋ ์ง๋ณ ํญ๋ชฉ)๋ ๊ฐ์ ํด์ ์์๋๋๋ฐ, ๋ง์น ๋ฉํฐํ์คํน OS๊ฐ ์ค์๊ฐ์ผ๋ก ๋จ๋จํด์ง๋ ๊ณผ์ ์ ๋ณด๋ ๋ฏํฉ๋๋ค:
2018๋ 11์ 7์ผ ์ปค๋งจ๋๋ผ์ธ ๋จ๋ ๋น๋
โ ์ฌํ ๋ค์ธ 11์ 10์ผ ๋ฉํฐํ์คํน ์ถ๊ฐ
โ 11์ 12์ผ YIELD ๋งคํฌ๋ก
โ 11์ 15์ผ์๋ ์์ ๋ณ ํ์ฌ ๋๋ ํฐ๋ฆฌยท๋๋ผ์ด๋ธ๊น์ง ๊ตฌํ๋ฉ๋๋ค(๋ก๊ทธ์๋ "๋๋ ํฐ๋ฆฌ ์ฝ๊ธฐ๋ ์ ์ญ ์ํ๊ฐ ์๋ค โ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ฉํฐํ์คํนํ๊ฒ ์ฝ์ ์ ์๋ค"๋ผ๊ณ ์ ํ ์์ต๋๋ค).
SVN ๋ฆฌ๋น์ ๊ณผ ์ฐ๋๋ ๋ฒ์ ๋ฒํธ๋ 2019๋
์ ๋ฑ์ฅํ๊ณ , kapps(C ์ ํ๋ฆฌ์ผ์ด์
) ์ํ๊ณ๋ 2021๋
์ ๊ฑธ์ณ ์ฑ์ํ์ผ๋ฉฐ, ์์์ ๋ค๋ฃฌ ESP8266 ๋ฐฑ์๋๋ฅผ ํฌํจํ ๋คํธ์ํฌ ์คํ์ 2022๋
์ ๊ฑธ์ณ ๊ฐํ๋์์ต๋๋ค.
ํ๋ก์ ํธ๋ ์ง๊ธ๋ ํ๋ฐํฉ๋๋ค โ ์ด GitHub ๋ฏธ๋ฌ๋ ์
์คํธ๋ฆผ Subversion ์ ์ฅ์(svn://nedoos.ru)์์ ๋งค์ผ ๋ฐค ๋๊ธฐํ๋ฉ๋๋ค.
| ๊ธฐ์ฌ์ | ๊ธฐ์ฌ ๋ด์ฉ |
|---|---|
| Dmitry Bystrov ("Alone Coder") | ํ๋ก์ ํธ ์ฑ ์์; ์ปค๋, ๋ฌธ์ |
| DimkaM | ๋คํธ์ํนยท๋์คํฌ ์๋ธ์์คํ
ํจ์น, dmapps ์ ํ๋ฆฌ์ผ์ด์
๊ณ์ด |
| Nikolay Grivin | ์ฝ๋ ๋ฐ ๋ฌธ์ |
| Kirill Lovyagin, demige | NedoBasic ๋ฐ Nedovigator |
| Lord Vader, Konstantin Kosarev ์ธ | ํ์ผ ์ ๋ ฌ, ๋์คํฌ ์ ํธ๋ฆฌํฐ, ๋น๋ ๋๊ตฌ |
| ChaN | FatFS (์์ฒด EVAL ๋ผ์ด์ ์ค๋ก ๋ด์ฅ) |
๋งค๋ด์ผ์ ๋ผ์ด์ ์ค ์กฐํญ์ ๋ฐ๋ฅด๋ฉด ํ๋ก๊ทธ๋จ๊ณผ ์์ค์ฝ๋์ ์์ ๋ฐฐํฌ๋ ํ์ฉ๋์ง๋ง, ๋ค๋ฅธ ํ๋ซํผ์ผ๋ก์ ํฌํ
์ ํ๋ก์ ํธ ์ฑ
์์์ ์น์ธ์ ๋ฐ์์ผ ํฉ๋๋ค. ๋คํธ์ํน ์ด์ผ๊ธฐ์ ํจ๊ป ์ง์ด๋ณผ ๋งํ ์ํคํ
์ฒ์์ ์ค๊ณ ์ ํ์ด ๋ ๊ฐ์ง ์์ต๋๋ค: ์ค์ผ์ค๋ง์ ์ํ ๋ณ๋์ ํ๋์จ์ด ํ์ด๋จธ๊ฐ ์๊ณ 50Hz ๋น๋์ค ์ธํฐ๋ฝํธ ์์ฒด๊ฐ ์ค์ผ์ค๋ง ํฑ์ด๋ผ๋ ์ , ๊ทธ๋ฆฌ๊ณ ๋ชจ๋ ์์
์ด ํ์ 16KB ๋ฉ๋ชจ๋ฆฌ ์๋์ฐ์ ์๊ธฐ๋ง์ ์์ "์ ์ ์ปค๋" ์ฌ๋ณธ์ ๊ฐ์ง๊ณ ์์ด์ CP/M ์คํ์ผ restart ๋ฒกํฐ(rst 0, rst 0x08 ๋ฑ)๊ฐ ์ต๋ 16๊ฐ๊น์ง ๋์์ ์คํ๋๋ ํ๋ก๊ทธ๋จ๋ค ์ฌ์ด์์๋ ์ผ๊ด๋๊ฒ ๋์ํ๋ค๋ ์ ์
๋๋ค.
๐ ๊ด๋ จ WIZnet Maker ํ๋ก์ ํธ
| ํ๋ก์ ํธ | ํ๋ซํผ / ํ๋์จ์ด | WIZnet ์นฉ๊ณผ ์ญํ | NedoOS์์ ์ฐจ์ด |
|---|---|---|---|
| NedoOS (์ด ํ๋ก์ ํธ) | Z80 (ZX Evolution / Pentagon / ATM Turbo 2+) | W5300, Z80 I/O ํฌํธ๋ก ํ๋์จ์ด TCP/IP ์์ผ์ ์ง์ ๊ตฌ๋ | ์์ ํ BSD ์์ผ ์คํ์ผ ์ปค๋ syscall API; ์ด์ค ๋ฐฑ์๋(W5300 ๋๋ ESP8266) |
| ZXNETUSB | ๋์ผํ Z80 / ZXBUS ๊ณ์ด (ZX Evolution) | W5300, ํ ์นด๋์์ USB ํธ์คํธ/๋๋ฐ์ด์ค ์ปจํธ๋กค๋ฌ์ ๊ฒฐํฉ | ์ด ๋๋ผ์ด๋ฒ๊ฐ ๊ตฌ๋ํ๋ ํ๋์จ์ด ์นด๋ ์์ฒด๋ฅผ ๋ค๋ฃธ, OS ๋๋ผ์ด๋ฒ๋ ๋ค๋ฃจ์ง ์์ |
| RC2014 Wiznet 5300 | RC2014 (ํ๋์ ์ธ ๊ฐ๋ณ ๋ก์ง ๊ธฐ๋ฐ Z80 ๋ฐฑํ๋ ์ธ ์ปดํจํฐ) | W5300(WIZ830MJ ๋ชจ๋ ๊ฒฝ์ ), ๋ฐฑํ๋ ์ธ ๋ฒ์ค์ ์ง์ ๋ฐฐ์ | ๋ค๋ฅธ ๋ ํธ๋ก Z80 ํ๋ซํผยท๋ฒ์ค; OS ๋ ๋ฒจ ์์ผ API ์์ด ์นฉ-๋ฒ์ค ๋ฐฐ์ ๋ง ๋ค๋ฃธ |
| KallistiOS | ์ธ๊ฐ ๋๋ฆผ์บ์คํธ (SH-4) | W5500, ๋งํฌ ๊ณ์ธต ์ด๋ํฐ๋ก MACRAW ๋ชจ๋ ์ฌ์ฉ | KOS ์์ฒด์์ ์ํํธ์จ์ด IPv4/IPv6 ์คํ์ ๋๋ฆผ โ ์นฉ์ ํ๋์จ์ด TCP/IP ์์ผ์ ์ฐ์ง ์์ |
- ZXNETUSB๋ ๋ฐ๋ก ์ด ๋๋ผ์ด๋ฒ๊ฐ ๋์์ผ๋ก ํ๋ ํ์ฅ ์นด๋์ ๋๋ค โ Vadim Akimov, Roman Chunin, Dmitry Martyshkin์ด ์ค๊ณํ, ZX Evolution ๊ณ์ด ์ปดํจํฐ์ฉ W5300 + USB ํธ์คํธ/๋๋ฐ์ด์ค ZXBUS ์นด๋์ ๋๋ค. ๊ทธ ๊ธ์ ํ๋์จ์ด ์นด๋ ์์ฒด๋ฅผ ๋ค๋ฃจ๊ณ , ์ด ๊ธ์ ๊ทธ ์นด๋๊ฐ ํ์ฌํ ์นฉ์ NedoOS ์ปค๋์ด ์ค์ ๋ก ์ด๋ป๊ฒ ๊ตฌ๋ํ๋์ง๋ฅผ ๋ค๋ฃจ๋ ์์ฐ์ค๋ฌ์ด ์ํํธ์จ์ด ์ง์ ๋๋ค.
- RC2014 Wiznet 5300์ ๋์ผํ W5300(WIZ830MJ ๋ชจ๋ ๊ฒฝ์ )์ ์์ ํ ๋ค๋ฅธ ๋ ํธ๋ก ํ๋ซํผ โ FPGA๊ฐ ์๋๋ผ ๊ฐ๋ณ ๋ก์ง์ผ๋ก ๋ง๋ค์ด์ง ํ๋์ ์ธ Z80 ๋ฐฑํ๋ ์ธ ์ปดํจํฐ์ธ RC2014 โ ์ ๋ฐฐ์ ํฉ๋๋ค. ๊ณตํต์ ์ ๋ ํธ๋ก Z80 ํ๋์จ์ด์์์ ์ง์ ์ ์ธ ์ ์์ค W5300 ์ ๊ทผ์ด๊ณ , ์ฐจ์ด์ ์ ๊ฐ ํ๋ซํผ์ด ํ์๋ก ํ๋ ๋ฒ์ค์ ๊ธ๋ฃจ ๋ก์ง์ ๋๋ค(RC2014๋ W5300์ ์ค์ ๊ฐ๋ฅํ data-hold ๋ ์ง์คํฐ๋ก ํ์ด๋ฐ์ ๋ง์ถ๊ณ , ์นฉ์ I/O๊ฐ ์ด๋ฏธ 5V ํจ๋ฌ๋ฐํธ๋ผ์ ๋ ๋ฒจ ์ํํ ์ ์๋ตํฉ๋๋ค).
- KallistiOS๋ ๋ค๋ฅธ ๋ ํธ๋ก ํ๋ซํผ์์ ๊ฐ์ฅ ๊ฐ๊น์ด ๊ตฌ์กฐ์ ๋น๊ต ๋์์ ๋๋ค โ ์ธ๊ฐ ๋๋ฆผ์บ์คํธ์ฉ ์คํ์์ค SDK/๊ฒฝ๋ OS๋ก, 2025๋ 12์ ํ ๋ฆฌํ์คํธ๋ฅผ ํตํด WIZnet W5500 ๊ณต์ ์ง์์ ์ถ๊ฐํ์ต๋๋ค. ํต์ฌ ์ฐจ์ด๋ TCP/IP ์คํ์ด ์ด๋์ ์๋๊ฐ์ ๋๋ค โ KallistiOS๋ W5500์ MACRAW ๋ชจ๋๋ก ์์ ๋งํฌ ๊ณ์ธต ์ด๋๋ท ์ด๋ํฐ๋ก๋ง ์ฌ์ฉํ๊ณ IPv4/IPv6 ์คํ์ ์์ฒด ์ํํธ์จ์ด๋ก ๊ตฌํํ๋ ๋ฐ๋ฉด, NedoOS์ W5300 ๋๋ผ์ด๋ฒ๋ ์นฉ์ ํ๋์จ์ด TCP/IP ์์ผ์ ์ง์ ํ์ฉํ๊ณ ์์ฒด ์ํํธ์จ์ด ํ๋กํ ์ฝ ์คํ์ ์ ํ ๋์ง ์์ต๋๋ค.
โ FAQ
Q. ์ด๊ฑฐ ์ฅ๋๊ฐ ๋ฐ๋ชจ์ธ๊ฐ์, ์๋๋ฉด ๋คํธ์ํน์ด ์ค์ ๋ก ๋๊น์ง ๋์ํ๋์? ์ค์ ๋ก ๋์ํ๋ฉฐ, ์ฌ์ฉ์์ฉ ๋๊ตฌ๊น์ง ๋์ ์์ต๋๋ค: ํจํท ์์ค๋ฅ ๊ณผ RTT ํต๊ณ๋ฅผ ๋ณด์ฌ์ฃผ๋ ping ์ ํธ๋ฆฌํฐ, telnet ํด๋ผ์ด์ธํธ, DNS ๋ฆฌ์กธ๋ฒ, HTTP ๋ธ๋ผ์ฐ์ ๊ฐ ๋ชจ๋ ์ฌ๊ธฐ์ ์ค๋ช
ํ ๊ฒ๊ณผ ๋์ผํ ์ปค๋ ๋คํธ์ํฌ syscall ์์ ๊ตฌ์ถ๋์ด ์์ต๋๋ค.
Q. WIZnet ์นฉ์ด ๊ผญ ์์ด์ผ ํ๋์, ์๋๋ฉด Wi-Fi๋ก๋ ๋คํธ์ํน์ด ๋๋์? ๋ ๋ค ๋ฉ๋๋ค. W5300(ZXNETUSB ์นด๋ ๊ฒฝ์ )์ด ํ๋์ ๋ฐฑ์๋์ด๊ณ , UART ์์์ ์ด ํ๋ก์ ํธ ์์ฒด์ espnet ๋ฐ์ด๋๋ฆฌ ์์ผ ํ๋กํ ์ฝ์ ์ฐ๋ ESP8266/ESP32 ๋ชจ๋์ด ๋ค๋ฅธ ๋ฐฑ์๋์ ๋๋ค โ AT ์ปค๋งจ๋๊ฐ ์๋๋ผ ์ ์ฉ์ผ๋ก ์ค๊ณ๋ ์ปดํฉํธํ ๋ฐ์ด๋๋ฆฌ ํ๋ ์ ๋ฐฉ์์ ๋๋ค. ์ด๋ ์ชฝ์ด ์ค์น๋์ด ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋๋ ๋์ผํ syscall์ ํธ์ถํฉ๋๋ค.
Q. W5500 ๊ฐ์ ๋ ํํ ์นฉ ๋์ ์ W5300์ธ๊ฐ์? W5300์ SPI๊ฐ ์๋๋ผ ๋ณ๋ ฌ 8/16๋นํธ ๋ฒ์ค๋ฅผ ์ฌ์ฉํ๋๋ฐ, ์ด๊ฒ Z80 ๊ธฐ๋ฐ ๋ ํธ๋ก ์ปดํจํฐ๊ฐ ๋ค๋ฅธ ๋ชจ๋ ์ฃผ๋ณ์ฅ์น์ ์ด๋ฏธ ์ฐ๊ณ ์๋ ๋ฉ๋ชจ๋ฆฌ ๋งคํ I/O ํฌํธ ๊ณต๊ฐ์ ๊ทธ๋๋ก ๋์๋ฉ๋๋ค โ ๋ณ๋์ SPI ์ปจํธ๋กค๋ฌ๋ ๋นํธ๋ฑ ์ ๋๋ผ์ด๋ฒ๊ฐ ํ์ ์์ต๋๋ค.
Q. Z80์ด ์์ฒด์ ์ผ๋ก TCP/IP ์คํ์ ๋๋ฆฌ๋์? ์๋์. W5300 ๊ฒฝ๋ก๋ ์นฉ์ ๋ด์ฅ๋ ํ๋์์ด์ด๋ TCP/IP ์คํ์ ์ฌ์ฉํ๊ณ , Z80 ์ชฝ์ I/O ํฌํธ๋ฅผ ํตํด ๋ช ๋ น์ ๋ด๋ฆฌ๊ณ ๋ฒํผ ๋ฐ์ดํฐ๋ฅผ ์ฎ๊ธฐ๊ธฐ๋ง ํฉ๋๋ค. ESP8266 ๊ฒฝ๋ก๋ ๋ง์ฐฌ๊ฐ์ง๋ก ํ๋กํ ์ฝ ์ฒ๋ฆฌ๋ฅผ ๋ชจ๋ ์์ฒด์ AT ๋ช ๋ น ํ์จ์ด์ ๋งก๊น๋๋ค.
Q. ์ค์ ๋ก ์ด๋ค ์ปดํจํฐ์์ ๋์๊ฐ๋์? ATM Turbo 2 ๊ณ์ด์์ ํ์๋ ZX Spectrum ํธํ ๋ณด๋๋ค์ ๋๋ค: ๋น๋ ์คํฌ๋ฆฝํธ์ ๋ฐ๋ผ ZX Evolution("baseconf" ๋ณํ ํฌํจ), Pentagon 2.666LE, ATM3 ๋ฑ์์ ๋์ํฉ๋๋ค.
Documents
-
NedoOS-dev
active development mirror referenced by the maintainer
-
W5300 hardware drive
Z80 I/O-port register access
-
W5300 Socket Open/Connect/Close Drive
-
espnet binary socket protocol firmware
companion ESP8266/ESP32 sketch and protocol spec
