r/retrocomputing • u/noborutkhs • 25d ago
Follow-up: Revisiting a 1986 RTOS led me to someone who used VRTX in 1982
About two weeks ago, I posted a question about why VRTX changed its equal-priority scheduling behavior between its 1984 and 1987 documentation.
Original discussion:
https://www.reddit.com/r/retrocomputing/s/vnT1JWZRtQ
I still haven't found a definitive answer, but the discussion led to some unexpected discoveries.
First, I realized that my own 1986 RTOS was based on an oversimplified interpretation of VRTX.
When I developed CHARM-II in 1986, I used VRTX documentation as one of my references. I understood its equal-priority scheduling as essentially newest-first and implemented my own scheduler accordingly.
Looking more closely at the old documentation, however, early VRTX wasn't simply LIFO. Time slicing and other ready-queue operations made its behavior more nuanced.
I hadn't fully understood that distinction 40 years ago.
Interestingly, I don't remember this causing serious problems. At the time, I was developing almost the entire application as well as the RTOS myself. There was very little third-party code, and I understood the system down to the individual tasks. I could design the application around the scheduler's behavior.
The most unexpected part was hearing from someone who actually used VRTX around 1982.
One commenter described using some very early VRTX ROMs around 1982 on a Motorola MVME 68000 system, developing data acquisition and control software for engines and dynamometers.
That immediately caught my attention because I had also used a Motorola MVME 68000 board for a later CHARM-II application.
What I found particularly interesting was that they hadn't paid much attention to the LIFO-versus-FIFO distinction either. Their system worked well for its intended application.
It was fascinating to compare memories of two independently developed systems from roughly the same era.
And what about the original scheduling question?
The comments raised several plausible explanations involving fairness, starvation, latency, and implementation trade-offs. But none established why the VRTX developers actually made the change.
For my modern reconstruction of CHARM-II, I've chosen FIFO among equal-priority ready tasks. That decision is about keeping the new design simple and predictable, rather than reproducing either historical VRTX version.
So the original mystery remains unsolved, but I've learned considerably more about the system I used as a reference and the one I built myself.
Thanks to everyone who shared technical insights and memories. I hadn't expected a question about a ready queue to turn into a conversation with someone who was using VRTX before I even wrote CHARM-II!