Yes, it appears to be track by track based. File access would be of benefit over track access for sure anyways. NHACP operates on a file basis with knowledge of sub directories (sever side). CP/M has no knowledge of sub directories but user numbers that can be translated to directories if desired. NHACP can xfer up to 8KB in one "GET" response transaction but is configurable on the fly with each "GET" request so sticking to 1KB or 2KB as a norm could make the HBIOS buffer limitation happy.
For CP/M OS like systems everything could live in CP/M's TPA and have a NHACP "ndir", "nget" and "nput" like executable that operates through secondary serial port via HBIOS or direct HW access to a second serial port. The 10KB would affect the file xfer as mentioned. CP/M utilities would be easier to develop vs a transparent method at the HBIOS<=>NHACP level. Kinda like how mTCP provides TCP/IP networking under MS-DOS via com file utilities.
For the Rosco6502 board, I'm just planning on these three basic command since there is no OS on it. The directory listing is working so far but I would like to clean code up and get the hard coded stuff organized before working on file get and put. Reusable libs. The dir * code is under 400 lines of 6502 assembly so it is not that complicated. See below for server and client transactions.
I would like to take a stab at least some TPA based code on the SC126 after finishing the 6502 code as see where that leads on RomWBW.
Greg
WinPC server:
Microsoft Windows [Version 10.0.26100.6584]
(c) Microsoft Corporation. All rights reserved.
C:\Users\gregh>cd \nabu\nhacpy
C:\NABU\NHACPY>nhacpy
info: [2025-10-10 15:46:11.8854] Lifetime: Application started. Press Ctrl+C to shut down.
info: [2025-10-10 15:46:11.8854] Server: Defined Adapters: 2
info: [2025-10-10 15:46:11.8854] Lifetime: Hosting environment: Production
info: [2025-10-10 15:46:11.8854] Lifetime: Content root path: C:\NABU\NHACPY
info: [2025-10-10 15:46:11.8854] Server: Starting Serial:COM7
info: [2025-10-10 15:46:11.8979] SerialAdapter: Port: COM7, BaudRate: 115200, ReadTimeout: 00:00:02
info: [2025-10-10 15:46:11.8979] AdapterEventReceiver: Storage Path: C:\uP\6502\rosco6502_nhacp\nhacp_disk
info: [2025-10-10 15:46:11.9134] SerialAdapter: Started
info: [2025-10-10 15:46:11.9134] SerialAdapter: COM7: Ready
info: [2025-10-10 15:46:24.6192] NHACPV01Protocol: COM7: Session: 0, Started
info: [2025-10-10 15:46:24.6516] NHACPV01Protocol: COM7: 0 Open: 0, Flags: Directory, Uri:
info: [2025-10-10 15:46:24.6786] NHACPV01Protocol: COM7: 0 LIST: 0, Pattern: *
info: [2025-10-10 15:49:28.7603] NHACPV01Protocol: COM7: Session: 0, Started
info: [2025-10-10 15:49:28.7754] NHACPV01Protocol: COM7: 0 Open: 0, Flags: Directory, Uri:
info: [2025-10-10 15:49:28.7916] NHACPV01Protocol: COM7: 0 LIST: 0, Pattern: *
Client side:
W65C02S CPU @ 10MHz with 16KB+16x32KB RAM and 1x8KB ROM
RAM Banks 0-15 passed
ROM Bank #0 passed (BIOS+Monitor)
Memory checks: passed
rosco_6502 EWozMon
0000: B=00 S=FF A=00 X=00 Y=00 P=32 nv1BdiZc
\L
Start Intel hex file load:
....................
Load successful. Start:0600 Bytes:0276
0600: B=00 S=FF A=36 X=FB Y=07 P=31 nv1BdizC
\600R
0600: 20
2025-10-07 23:19:06 RW 140 BigFile.txt
2025-10-07 23:17:16 RW 8456 nhacp.asm
2025-03-01 19:04:22 RW 17 test1.txt
2025-10-06 19:45:31 RW 22 testfile123.txt
2025-10-09 22:48:22 RW 0 zero.txt
0600: B=00 S=FF A=04 X=EF Y=01 P=31 nv1BdizC
\