Symptom
Booting Merlin 8 v2.47 on --machine Apple2e, the title banner renders as
garbage glyphs where MERLIN should be. Everything else on the screen is
correct, including the 8 2.47 on the same line and the whole menu below it.
<garbled> |-8 2.47 <- only the "MERLIN" part is wrong
By Glen Bredon
C :Catalog <- all correct
L :Load source
...
What the character ranges say
The split is the diagnostic. Reading the banner as a text line:
8, , 2, ., 4, 7 are $38 $20 $32 $2E $34 $37 -- all in $00-$3F,
which is inverse uppercase under BOTH ALTCHARSET settings. Renders correctly.
M E R L I N written as $4D $45 $52 $4C $49 $4E lands in $40-$5F, which
is flashing uppercase when ALTCHARSET=0 and MouseText when ALTCHARSET=1.
Renders as garbage.
- The menu text is
$80-$FF normal. Renders correctly.
The garbled glyphs are consistent with MouseText shapes (partial boxes, line
segments, arrow-ish forms) appearing where flashing letters were intended.
That points at ALTCHARSET reading as 1 while Merlin expects 0 -- or at the
MouseText glyph data in the alt set being wrong. Only the one range is affected,
which is why nothing else on screen is disturbed.
What I ruled out
- Renderer range logic. Both text renderers handle the ranges correctly.
Apple80ColTextMode.cpp guards inline (flash = !m_altCharSet && charCode >= 0x40 && charCode < 0x80) and AppleTextMode.cpp gets the same effect from its
if (charCode < 0x40) ... else if (charCode < 0x80) structure. They agree.
- Missing video ROM.
Apple2e_Video.rom is present at 4096 bytes, the 4K
//e ROM that carries MouseText, and HasAltCharSet() keys off it.
- Propagation.
MachineManager::SelectVideoMode reads
iieSoftSwitches->IsAltCharSet() and pushes it to both text renderers.
So the wiring is right and the suspect is narrower: either the soft-switch state
itself, or the alt-set glyph data.
Reproduction
Needs a Merlin 8 disk image, which is commercial software and not in the repo.
Casso.exe --machine Apple2e --disk1 <merlin8.do>
The banner is on the boot screen; no interaction required.
Impact
Display only. Found while validating Merlin 8 as the reference assembler for
specs/019-assembler-dialects -- the assembler itself is unaffected, and Merlin
is otherwise fully functional under emulation (menus, catalog, and disk access
all work correctly).
Symptom
Booting Merlin 8 v2.47 on
--machine Apple2e, the title banner renders asgarbage glyphs where
MERLINshould be. Everything else on the screen iscorrect, including the
8 2.47on the same line and the whole menu below it.What the character ranges say
The split is the diagnostic. Reading the banner as a text line:
8,,2,.,4,7are$38 $20 $32 $2E $34 $37-- all in $00-$3F,which is inverse uppercase under BOTH ALTCHARSET settings. Renders correctly.
M E R L I Nwritten as$4D $45 $52 $4C $49 $4Elands in $40-$5F, whichis flashing uppercase when ALTCHARSET=0 and MouseText when ALTCHARSET=1.
Renders as garbage.
$80-$FFnormal. Renders correctly.The garbled glyphs are consistent with MouseText shapes (partial boxes, line
segments, arrow-ish forms) appearing where flashing letters were intended.
That points at ALTCHARSET reading as 1 while Merlin expects 0 -- or at the
MouseText glyph data in the alt set being wrong. Only the one range is affected,
which is why nothing else on screen is disturbed.
What I ruled out
Apple80ColTextMode.cppguards inline (flash = !m_altCharSet && charCode >= 0x40 && charCode < 0x80) andAppleTextMode.cppgets the same effect from itsif (charCode < 0x40) ... else if (charCode < 0x80)structure. They agree.Apple2e_Video.romis present at 4096 bytes, the 4K//e ROM that carries MouseText, and
HasAltCharSet()keys off it.MachineManager::SelectVideoModereadsiieSoftSwitches->IsAltCharSet()and pushes it to both text renderers.So the wiring is right and the suspect is narrower: either the soft-switch state
itself, or the alt-set glyph data.
Reproduction
Needs a Merlin 8 disk image, which is commercial software and not in the repo.
The banner is on the boot screen; no interaction required.
Impact
Display only. Found while validating Merlin 8 as the reference assembler for
specs/019-assembler-dialects-- the assembler itself is unaffected, and Merlinis otherwise fully functional under emulation (menus, catalog, and disk access
all work correctly).