docs: update NCP and IPX layer documentation

Update README and file-level comments after the NCP/IPX source split and
renames.

Document the current layering: ncpapi.c/ncpapi.h contain the ncpXX_YY_*
protocol API wrappers, ncpcall.c contains low-level requester/transport
helpers, ncp.asm/ncp.h provide INT 21h and Client32 requester entry points, and
ipx.asm/ipx.h provide IPX and far-memory assembly glue.

Also remove stale c32ncp/kern_wasm/kern.h planning references and update the
license section to mention the root-level COPYING file.

No behavior change.
This commit is contained in:
Mario Fetka
2026-05-29 12:58:35 +02:00
parent 892bea8a5e
commit e73eb89f8c
6 changed files with 23 additions and 21 deletions

View File

@@ -114,15 +114,17 @@ FLAG.EXE LOGIN.EXE A
CAPTURE.EXE LPT1 Q1
```
## Client32 NCP support
## NCP requester and API layers
The modern Client32 path is implemented through a small reusable helper layer:
The modern NCP support is split into small layers so protocol code and
requester transport code stay separate:
- `ncpapi.c`
- `ncpapi.h`
- Client32 assembly entry points in `ncp.asm`
- `ncpapi.c` / `ncpapi.h` contain the named `ncpXX_YY_*` protocol API wrappers.
- `ncpcall.c` contains lower-level requester and Client32 transport helpers.
- `ncp.asm` / `ncp.h` provide the INT 21h `Net_Call` and Client32 requester entry points.
- `ipx.asm` / `ipx.h` provide the remaining IPX socket and far-memory assembly glue.
The working sequence is:
The validated Client32 sequence is:
```text
ncp_mapvar_request(4,0)
@@ -144,7 +146,7 @@ This path is currently used by:
- `REVOKE`
- `REMOVE`
The old `Net_Call` / INT 21h requester path is kept as a fallback where appropriate, but Client32 is now preferred for the validated FLAG-family and trustee operations.
The old `Net_Call` / INT 21h requester path is kept as a fallback where appropriate, but Client32-backed raw NCP requests are now preferred for the validated FLAG-family and trustee operations.
## Command reference
@@ -676,10 +678,11 @@ They also install selected copies such as `login.exe`, `map.exe`, and `slist.exe
## Development notes
- `ipx.asm` and `ncp.asm` are the split 16-bit Open Watcom assembly implementations used by the modern build.
- `kern.c` was an experimental C-side test wrapper and is no longer required by the current Client32 FLAG/FLAGDIR path.
- `ncpapi.c` and `ncpapi.h` contain reusable Client32 NCP helper functions for DOS tools.
- `trustee.c` and `trustee.h` contain shared code for `GRANT`, `REVOKE`, and `REMOVE`.
- `ipx.asm`/`ipx.h` provide the split 16-bit Open Watcom IPX and far-memory assembly glue.
- `ncp.asm`/`ncp.h` provide the split 16-bit Open Watcom requester assembly entry points.
- `ncpcall.c` contains low-level NCP requester/transport helpers.
- `ncpapi.c`/`ncpapi.h` contain reusable `ncpXX_YY_*` protocol API wrappers for DOS tools.
- `trustee.c` and `trustee.h` contain shared Rights/Trustee code for `GRANT`, `REVOKE`, and `REMOVE`.
- `tools.c` contains shared command/frontend helpers so future smaller multicall binaries can reuse common parsing and path code.
- The verified Client32 path uses NCP 87 subfunction 6 for obtaining DOS information, subfunction 7 for modifying DOS information, subfunction 29 for effective rights, and trustee scan/add/delete calls for the trustee tools.
- For modify operations, use the modify information mask `DM_ATTRIBUTES` (`0x00000002`) rather than the read-side `RIM_ATTRIBUTES` mask.
@@ -709,7 +712,7 @@ From the included project metadata:
## License
No standalone license file is included in the provided snapshot. The source files do contain copyright notices naming Martin Stover. Anyone planning to redistribute or modernize the project should verify licensing status before publishing derivative releases.
The source tree includes a root-level `COPYING` file with the GPL-2 license text. Source files carry GPL-2-or-later headers and preserve the original Martin Stover attribution for the historical mars_nwe utility code, with current maintenance attribution where appropriate.
Debug/test helpers:

View File

@@ -17,7 +17,7 @@
; along with this program; if not, see <http://www.gnu.org/licenses/>.
; Purpose: Historical TASM/IDEAL low-level DOS, IPX and NetWare requester glue.
; Depends on: net.h/kern.h declarations, netcall.c callers, tools.c shared runtime helpers.
; Depends on: historical Borland/TASM build context; modern Open Watcom builds use ipx.asm and ncp.asm instead.
;
;
; kern.asm: 20-Nov-93, 21:52

View File

@@ -27,7 +27,7 @@
;
; Low-level INT 21h Net_Call and Client32 requester entry points used by the
; DOS NCP transport helpers. This file is split from the former combined
; kern_wasm.asm so IPX glue can stay in ipx.asm.
; Open Watcom assembly glue so IPX support can stay in ipx.asm.
.286
.model large

View File

@@ -20,7 +20,7 @@
/*
* Purpose: Semantically named NCP API helper implementation used by the NetWare DOS tools.
* Depends on: net.h, ncpapi.h, ncpcall.c requester/transport helpers, and netcall.c for shared requester state. This file contains the protocol API layer above the low-level requester transport helpers.
* Depends on: net.h, ncpapi.h, ncpcall.c requester/transport helpers, ncp.h requester assembly declarations, and netcall.c for shared requester state. This file contains the protocol API layer above the low-level requester transport helpers.
*/
#include "net.h"
@@ -30,8 +30,8 @@
* Legacy bindery/login NCP API wrappers.
*
* These ncp16/ncp17/ncp14 wrappers used to live in ncpcall.c. They are kept
* together with the other ncpXX_YY_* APIs here so the file can later be
* renamed to ncpapi.c.
* together with the other ncpXX_YY_* APIs here so all protocol wrappers live
* in one NCP API layer.
*/
/* ---------------- 0x16 ----------------------------------- */

View File

@@ -19,7 +19,7 @@
/*
* Purpose: Public declarations for namespace and file-system NCP API helpers.
* Depends on: net.h data types and ncpapi.c implementation; this file is planned to become ncpapi.h.
* Depends on: net.h data types and ncpapi.c implementation.
*/

View File

@@ -22,9 +22,8 @@
* Purpose: Low-level NCP requester and Client32 transport helpers for the NetWare DOS tools.
* Depends on: net.h, ncpapi.h, netcall.c requester glue, and ncp.asm/doc/kern.asm Net_Call/Client32 request entry points.
*
* The public ncpXX_YY_* protocol wrappers live in ncpapi.c, which is planned
* to become ncpapi.c. This file keeps the lower-level requester/transport
* helpers that those API wrappers use.
* The public ncpXX_YY_* protocol wrappers live in ncpapi.c. This file keeps
* the lower-level requester/transport helpers used by those API wrappers.
*/
#include "net.h"