Thank you very much for that information, Joshua! With it I was able to solve the problem. I didn't want the proper operation of my program to depend on NOT choosing RGB, so I incorporated the soft-switchiing succession you indicated, and that took care
of it.
I had happened to choose RGB in the first place just because I liked the way it looked. I see now that the AppleWIn help file does mention that with RGB, double hires is 140x192 pixels (color) "or software selectable as: B&W or mixed Color/B&W", but it
doesn't warn you that it may becoime monochrome unintentionally, or what to do to get color back if that should happen. It does go on to say that "Some double hi-res titles may have compatibility issues", after which it refers to "Troubleshooting",
although that only cites three specific brand-name situations, and only offers a solution for the first of them, which was a different problem. In the end, though, it was good to be using RGB, as it's just as well to know where there could be a problem,
and work around it. As I said, I didn't want my program to be beholden to the choice of video option.
Alan
On Friday, April 28, 2023 at 11:38:32 AM UTC-4, Joshua Bell wrote:
On Friday, April 28, 2023 at 8:29:10 AM UTC-7, Alan Rat wrote:
I can tell you that my program starts off with PRINT CHR$(4)"PR#3":PRINT (via DOS 3.3) --> C00D
then the statement POKE 49246,PEEK(49239)=PEEK(49234) which triggers in the order C057 C052 C05E
and then POKE49232,0 for C050
C050 is then in effect all during execution, never C051
Double hires is thus displayed. When the program goes to the lores display, it issues:
PRINT CHR(17); which sets C00C
then the statement POKE 49238,PEEK(49247)=PEEK(49235) for C05F C053 C056 To return to double hires, it issues
PRINT CHR(18); which sets C00D
and again uses POKE 49246,PEEK(49239)=PEEK(49234) for C057 C052 C05E
and double hires is back, without any problem on an actual Apple IIe, but not so well in AppleWin.
I'm wondering if no one was ever previously aware of AppleWin displaying double hires in monochrome...?
This is AppleWin's emulation of the Video-7 / AppleColor / Le Chat Mauve RGB card protocol for DHR mono and other modes. If you switch your video setting from RGB to another (e.g. Composite) this problem will go away. Or change your program so that it
exits/re-enters graphics mode before hitting the softswitches in order.
As you noticed, the modes are activated by loading a bit into 80COL and then turning AN3 off/on to shift the bit into a 2-bit register.
Mode 1 - Monochrome 560 x 192
Write $C00C (80COL off) - loads 0
Write $C05E (AN3 off)
Write $C05F (AN3 on) - shifts 0 into register
Write $C05E (AN3 off)
Write $C05F (AN3 on) - shifts 0 into register
Write $C00D (80COL on)
Write $C05E (AN3 off) - re-enable DHGR
Mode 2 - Color 140 x 192
Write $C00D (80COL on) - loads 1
Write $C05E (AN3 off)
Write $C05F (AN3 on) - shifts 1 into register
Write $C05E (AN3 off)
Write $C05F (AN3 on) - shifts 1 into register
Write $C05E (AN3 off) - re-enable DHGR
There's also weird Mode 3 (shift in 0 then 1), where the otherwise unused high bits of each DHGR byte set the output to monochrome (0) or color (1). This is detailed in the Video-7 RGB manual or Apple's "Extended 80-Column Text/AppleColor Adaptor Card"
manual - they all follow the same protocol.
More details https://github.com/AppleWin/AppleWin/issues/523 and follow-on issues.
--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)