Extended mode 1-bit video on second display for compact Macs

retr01

Senior Tinkerer
Jun 6, 2022
2,469
1
778
113
Utah, USA
retr01.com
Overview

In this thread, we will discuss and document extended mode in the 1-bit video on a second display to the 128k, 512k, Plus, SE, SE30, Classic, and Classic II. The goal is to develop a driver, INIT, and CDEV working with related hardware.

It would be good that this would be open-source and have a GitHub repo down the road.


I will begin.

Hey @Mu0n, from your musings, I just had a thought. So I have a question. I have a TTL adapter for the SE and SE/30 to mirror to an external screen. Is it possible to extend the desktop by building an INIT file so that the Mac doesn't mirror by default and extends to the other screen in 1-bit?
 
Last edited:

Mu0n

Active Tinkerer
Oct 29, 2021
570
532
93
Quebec
www.youtube.com
Hey @Mu0n, from your musings, I just had a thought. So I have a question. I have a TTL adapter for the SE and SE/30 to mirror to an external screen. Is it possible to extend the desktop by building an INIT file so that the Mac doesn't mirror by default and extends to the other screen in 1-bit?
Possibly. I'm not the best one to answer after only having done baby steps in the world of INIT programming but if I was a betting man, it would be to set up those "patches" it the base toolbox routines of the ROM to run your hacky code.
 

retr01

Senior Tinkerer
Jun 6, 2022
2,469
1
778
113
Utah, USA
retr01.com
Possibly. I'm not the best one to answer after only having done baby steps in the world of INIT programming but if I was a betting man, it would be to set up those "patches" it the base toolbox routines of the ROM to run your hacky code.
Alright. It’s a journey can take and see how goes. 😁
 
Nov 4, 2021
126
98
28
Tucson, AZ
Hey @Mu0n, from your musings, I just had a thought. So I have a question. I have a TTL adapter for the SE and SE/30 to mirror to an external screen. Is it possible to extend the desktop by building an INIT file so that the Mac doesn't mirror by default and extends to the other screen in 1-bit?
There's only one video signal generation circuit and thus one signal being generated. It's not like a modern machine where you have multiple RAMDACs outputting the same framebuffer data that you can split or redefine. There is only a single pin being twiddled up and down to fire the CRT's electron gun. I doubt that there's enough VRAM or memory bandwidth to even kludge something in.
 

retr01

Senior Tinkerer
Jun 6, 2022
2,469
1
778
113
Utah, USA
retr01.com
There's only one video signal generation circuit and thus one signal being generated. It's not like a modern machine where you have multiple RAMDACs outputting the same framebuffer data that you can split or redefine. There is only a single pin being twiddled up and down to fire the CRT's electron gun. I doubt that there's enough VRAM or memory bandwidth to even kludge something in.

By hardware design, it will be mirrored when I use the Power R TTL video adapter for the SE and SE/30. However, the software magic has nothing to do with the CRT because the adapter works by tapping the video at certain video sense lines from the mobo BEFORE it even travels to the analog board to the video board on the CRT's neck. Hence, I wonder if the software changes the signaling down the video sensing lines so that the other display will not mirror the CRT.

Nowadays, one can write code in C# to extend the desktop to another display beyond the hardware. I wonder if Mac's toolbox back in the day had certain functions that could do that magic in C to build an INIT that will send signals out via TTL to a separate screen? That depends on how to discern the lines in the adapter versus the straight out to the CRT.
 

Crutch

Tinkerer
Jul 10, 2022
292
226
43
Chicago
No, I don’t think this is possible in software. Not knowing much about the Power-R adapter or whatever, but I think it simply steals a signal from SE/SE30 hardware and shunts it outside somewhere. If you want the Mac to instead extend the screen (treat the external display as a real display), you would need to trick QuickDraw into thinking it was writing to a legit larger graphics device (probably possible), meaning it would need to write that raster image to a different/larger area of RAM than usual (typically in the PDS/NuBus era this means writing to a memory-mapped chunk of RAM that actually lives on a graphics card—this is indeed natively supported in the System 5+ era through the Graphics Devices system) … but then trick the TTL adapter to grab data only and specifically from that chunk of RAM (or VRAM) and display only that portion on the external device (almost certainly impossible, since I assume the TTL adapter is just looking at a bitstream and assuming it represents a 512x342 raster image).
 

retr01

Senior Tinkerer
Jun 6, 2022
2,469
1
778
113
Utah, USA
retr01.com
It might or might not work. Hmmm.

No, I don’t think this is possible in software. Not knowing much about the Power-R adapter or whatever, but I think it simply steals a signal from SE/SE30 hardware and shunts it outside somewhere.

Yes. The Power R adapter that I have connects between the mobo and analog board. The adapter taps the video signals and sends them off as TTL signals elsewhere. Back in the day, hooking up to a projector was common. In my case today, it is going to an RGB2HDMI to either HDMI or VGA display.

1659798172552.png
power-r-model-2702-2703-specs-jpg.5560



the TTL adapter is just looking at a bitstream and assuming it represents a 512x342 raster image).

The Power R adapter is most likely pretty low-tech, so I am not sure how it is possible to detect that it is there. However, since the RGB2HDMI is a Raspberry system and is a video source, it looks at the bitstream and adjusts to an external screen as a graphics card would.

How about this? :)

1659799387311.png
 

Crutch

Tinkerer
Jul 10, 2022
292
226
43
Chicago
Yes, my point is I think the yellow arrow there is impossible. I don’t see how one could, using software, get any signal onto the standard mobo/AB connector other than the standard internal 512x342 internal screen raster.
 

retr01

Senior Tinkerer
Jun 6, 2022
2,469
1
778
113
Utah, USA
retr01.com
Then, if the software cannot adjust the frequency to be detected by the RGB2HDMI (recall that RGB2HDMI has an extensive range of adjustments to pinpoint a specific frequency and other settings), what about constructing a small controller board and the INIT/driver to send the 512x342 raster as an extended desktop? The main CRT screen will get the standard frequency, but only the other display will get the extended desktop on a different frequency that the video board will not pick up on the back of the CRT.

An analogy would be sound frequencies humans can't detect but dogs or insects can notice. Hence, the out-of-range frequencies drop out, causing no harm.
 

Crutch

Tinkerer
Jul 10, 2022
292
226
43
Chicago
well sure, if we are willing to add hardware we can do almost anything! I think you’d want VRAM for that external display though. I don’t think an SE or even SE30 can continually blit a full screen’s worth of bits in real time and have CPU cycles left to do much of anything else. (MacFlim does this beautifully but consumes the full power of the processor.)
 

Mu0n

Active Tinkerer
Oct 29, 2021
570
532
93
Quebec
www.youtube.com
Yes, my point is I think the yellow arrow there is impossible. I don’t see how one could, using software, get any signal onto the standard mobo/AB connector other than the standard internal 512x342 internal screen raster.

You could VIOLENTLY overwhelm parts of the motherboard SO MUCH, that the electromagnetic reaction in the analog board is just so...

although some permanent damage may occur.
 

retr01

Senior Tinkerer
Jun 6, 2022
2,469
1
778
113
Utah, USA
retr01.com
So, it looks like we need to plan what to do to get this figured out for the necessary steps.

I know that displaying a 1-bit video via TTL has been done and is still possible today. Yet, it is mirroring. It would be nice to extend.

Here are the challenges:
  • Extending would be almost impossible by software alone.
  • A mediating adapter is needed to send different video signals to extend the video to the external display.
  • A way to do this with a block of RAM without the need for VRAM with page swapping.
  • Use page swapping and space in RAM to process and take the load off the CPU.
  • An FPU/MMU would need to be used to help with that.
Any other challenges to overcome?
 

Trash80toG4

Tinkerer
Apr 1, 2022
778
240
43
Bermuda Triangle, NC USA
Moved from other thread:
retr01 said:
what about constructing a small controller board and the INIT/driver to send the 512x342 raster as an extended desktop?
Your small controller board would have to be the equivalent of a VidCard with driver to enable the CPU to load its frame buffer. At that point RAMDAC converts it to analog video signal on the mobo connector? I think this is wrong though, see below:

PowerR is a baseline video cable Y splitter with TTL conversion built into the branch off to external connector's mirrored image. In that location it's well downstream from anything digital/programmable I'd think?

Cannot imagine there's enough flexibility available there to split off an extended desktop image. Video subsystem timings are insanely tight on that interface.

Short of doubling the frequency on the CPU side to produce baseline and extended video signals to be halved alternately on both branches. I cannon imagine another way to do this. Timings on the MoBo in general are just as tight as as the video subsystem, almost certainly no go from there as well. A second 512x384 seems less than marginally useful to me.

Crutch said: I assume the TTL adapter is just looking at a bitstream and assuming it represents a 512x342 raster image).
That's the case if the A/B is acting as RAMDAC, not up on the A/B side of things nor native internal video setup. My viewpoint is from the VidCard expansion perspective here.

There are good reasons nobody has gone the route you're exploring. Several VidCard/Display combo vendors dispensed with support for internal video entirely. It's pretty much useless for anything but menus once a halfway decent resolution is available on a display. Pretty sure that's why Radius invented "extended desktop" as FPD would have been fine for PageMaker, but simplified and cleaner with menus on the paltry pixelled internal display.
 
Last edited:

retr01

Senior Tinkerer
Jun 6, 2022
2,469
1
778
113
Utah, USA
retr01.com
The problem is we need a stop-gap solution while waiting on others to develop the modern video card. It is ridiculous that one has to pay $600+ for an old video card that is hard to find nowadays.

RGB2HDMI is one quick thing to do. @Stephen has already developed a TTL adapter.

Some people prefer a 1-bit video, anyway, on a bigger screen, including me. I have trouble seeing Mac's smaller screen comfortably. I even have problems trying to read my modern laptop comfortably. I love my big 27" widescreen that I can read quickly and comfortably.
 
Last edited:

retr01

Senior Tinkerer
Jun 6, 2022
2,469
1
778
113
Utah, USA
retr01.com
It's good to know the challenges to be objective and overcome them. :) Back in the day, that's how it was done at Apple. Then, it gets ruined by most executives, such as the immature Steve Jobs, the evil Arthur Rock, the two-faced John Sculley, and the angry Jean Louis Gassee.

Now, we are free from those awful Apple executives of the day. We can do better than the engineers under their thumbs back in the day to take control of our beloved vintage Macs and do things on them that was not possible back then.
 

Trash80toG4

Tinkerer
Apr 1, 2022
778
240
43
Bermuda Triangle, NC USA
Shipping product is the art of the possible. Engineers did what was possible with available technology in the face of incredible wrongheadedness on the part of SJ and shipped what the Mac should have been at release but for Scully hamstringing memory just a few months later.

Better to develop a new VidCard/Driver for 68000 Compact KillyKlip/SEPDS than to mess around otherwise I think. Current VidCard development is for 030PDS or NuBus.

In the meantime, I'd look into getting a Radius FPD or TPD up and running off a KillyKlip in a Plus.

You can use it in an SE as a fallback if that won't work.
 
  • Like
Reactions: Crutch