DOS 콘솔에서 직접 보기 위한 네 가지 수정. 1. 컬러. Open Watcom의 conio.h에는 textattr()이 없고(cprintf/cputs/getch만 제공) 이 FreeDOS 콘솔은 ANSI 이스케이프도 해석하지 않는다. 그래서 cprintf가 줄을 배치하게 두고 -- 스크롤을 알아서 처리한다 -- 방금 쓴 셀의 VGA 속성 바이트만 다시 칠한다. 커서가 그 줄 다음 행의 0열에 있다는 점을 이용해 스크롤을 직접 추적하지 않고 대상 셀을 찾는다. 줄바꿈된 긴 줄도 처리한다. 2. GET, HASH, LIST, READ, WRITE, QUIT, 미지원 명령을 로깅한다. 이전에는 EXEC과 PUT만 보였다. PING은 wait-ready가 초당 두 번 폴링하므로 제외한다. LIST는 잘림 여부를, PUT은 short write를 구분해 남긴다. 3. put_path가 채워지기만 하고 쓰이지 않아 PUT 완료 줄에 경로가 없었다. 완료 경로가 둘(길이 0, 본문 수신 완료)이라 put_finished()로 합쳤다. 4. 틱->초 변환이 1.1% 빨랐다. BIOS 틱은 18.2065Hz이므로 delta/18이 아니라 delta*549/100 (하루치 틱에도 32비트를 넘지 않는다) 을 쓴다. REBUILD.BAT을 추가한다. BUILD.BAT은 현재 디렉터리에서 wmake만 실행하는데 호스트가 exec으로 부를 때의 시작 디렉터리가 거기가 아니다. QEMU FreeDOS에서 Open Watcom C++16으로 빌드하고(no warnings, -we 활성) 콘솔 스크린샷으로 색상, 줄바꿈 색칠, 명령별 로그를 확인했다. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012PQm6oAvWX4Lp3iSN5AHGT
23 lines
735 B
Batchfile
23 lines
735 B
Batchfile
@echo off
|
|
rem Rebuild TCPAGENT.EXE from C:\MTSRC and install it, in one EXEC.
|
|
rem BUILD.BAT only runs wmake in the current directory, which is not where a
|
|
rem host-driven `ferro-vm exec` starts. Copy this to C:\ and run it by path.
|
|
rem The running agent keeps the old image in memory, so reset the VM afterwards:
|
|
rem uv run ferro-vm reset
|
|
C:
|
|
cd C:\MTSRC\MTCP\APPS\TCPAGENT
|
|
set WATCOM=C:\DEVEL\WATCOMC
|
|
set PATH=C:\DEVEL\WATCOMC\BINW;C:\DEVEL\WATCOMC\BINP;C:\FREEDOS\BIN
|
|
set INCLUDE=C:\DEVEL\WATCOMC\H
|
|
set EDPATH=
|
|
if exist TCPAGENT.OBJ del TCPAGENT.OBJ
|
|
if exist TCPAGENT.EXE del TCPAGENT.EXE
|
|
wmake
|
|
if not exist TCPAGENT.EXE goto fail
|
|
copy /Y TCPAGENT.EXE C:\FREEDOS\BIN\TCPAGENT.EXE
|
|
echo BUILD-OK
|
|
goto end
|
|
:fail
|
|
echo BUILD-FAILED
|
|
:end
|