The cockpit's second serial device joins vRIO: the 128x32 dot-matrix plasma on COM2 (9600 8N1) that the game draws mission text and status graphics on. VPlasma.App opens the device end of a COM port, decodes the display's command stream, and renders the matrix in plasma orange. The command set is recovered from two Tesla 4.10 artifacts: the game's driver (L4PLASMA.CPP — ESC P packed-bitmap row writes, ESC G 0 cursor hide at boot) and the factory test tool PLASMA.EXE, whose data segment pairs each command literal with its printf description (BS/HT/LF/VT/CR motion, ESC @ clear, ESC L home, ESC G cursor, ESC K fonts, ESC H attributes: intensity/underline/reverse/flash). Text renders through the classic public-domain 5x7 set standing in for the lost ROM glyphs; fonts 0-3 give 21x4 cells, fonts 4-7 the doubled 10x2. A Self test cycles banner/charset/graphics pages through the same parser the wire feeds, and the wire log shows every decoded command. Verified end-to-end over the second com0com pair (host writing COM2, vPLASMA listening on COM12). The verify skill gains the cross-process combo-box lesson: string-carrying CB_* messages hang across processes, so select ports by locally computed index via CB_SETCURSEL. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
52 lines
2.6 KiB
XML
52 lines
2.6 KiB
XML
<Project Sdk="Microsoft.NET.Sdk">
|
|
|
|
<PropertyGroup>
|
|
<OutputType>WinExe</OutputType>
|
|
<TargetFramework>net48</TargetFramework>
|
|
<Nullable>enable</Nullable>
|
|
<UseWindowsForms>true</UseWindowsForms>
|
|
<ImplicitUsings>enable</ImplicitUsings>
|
|
<LangVersion>latest</LangVersion>
|
|
<ApplicationManifest>app.manifest</ApplicationManifest>
|
|
<ApplicationIcon>vwe.ico</ApplicationIcon>
|
|
<AssemblyTitle>vPLASMA — Virtual plasma display</AssemblyTitle>
|
|
<!-- StampGitVersion already puts the sha in InformationalVersion; stop the
|
|
SDK appending "+fullsha" on top of it. -->
|
|
<IncludeSourceRevisionInInformationalVersion>false</IncludeSourceRevisionInInformationalVersion>
|
|
</PropertyGroup>
|
|
|
|
<ItemGroup>
|
|
<ProjectReference Include="..\VPlasma.Core\VPlasma.Core.csproj" />
|
|
</ItemGroup>
|
|
|
|
<!-- Stamp commit date + short sha into InformationalVersion; the window
|
|
title shows it (Application.ProductVersion) so a running build can be
|
|
matched to its vYYYY.MM.DD release tag at a glance. Falls back to the
|
|
default 1.0.0 when git isn't available. -->
|
|
<Target Name="StampGitVersion" BeforeTargets="GetAssemblyVersion" Condition="'$(DesignTimeBuild)' != 'true'">
|
|
<!-- %%cs survives cmd's percent expansion as %cs: committer date, YYYY-MM-DD. -->
|
|
<Exec Command="git -C "$(MSBuildProjectDirectory)" log -1 --format=%%cs"
|
|
ConsoleToMSBuild="true" StandardOutputImportance="low" IgnoreExitCode="true" ContinueOnError="true">
|
|
<Output TaskParameter="ConsoleOutput" PropertyName="GitCommitDate" />
|
|
<Output TaskParameter="ExitCode" PropertyName="GitDateExitCode" />
|
|
</Exec>
|
|
<!-- The exclude flag keeps describe off the release tags: always the short
|
|
sha, with a "dirty" suffix when the working tree has local edits. -->
|
|
<Exec Command="git -C "$(MSBuildProjectDirectory)" describe --always --dirty --exclude=*"
|
|
ConsoleToMSBuild="true" StandardOutputImportance="low" IgnoreExitCode="true" ContinueOnError="true">
|
|
<Output TaskParameter="ConsoleOutput" PropertyName="GitShortSha" />
|
|
</Exec>
|
|
<PropertyGroup Condition="'$(GitDateExitCode)' == '0' And '$(GitShortSha)' != ''">
|
|
<InformationalVersion>$(GitCommitDate.Trim().Replace('-', '.')) ($(GitShortSha))</InformationalVersion>
|
|
</PropertyGroup>
|
|
</Target>
|
|
|
|
<ItemGroup>
|
|
<PackageReference Include="PolySharp" Version="1.14.1">
|
|
<PrivateAssets>all</PrivateAssets>
|
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
|
</PackageReference>
|
|
</ItemGroup>
|
|
|
|
</Project>
|