Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Any interest in a universal CP/M menu system?

237 views
Skip to first unread message

V1050

unread,
Oct 11, 2014, 8:31:02 PM10/11/14
to
What's the best menu for an 8-bit machine running CP/M?

As we all know, until the speed of 16 bit chips allowed for graphical drop-down menus, there was no clear winner amongst the various menus that were simple enough to run on 4MHz 8 bit machines. Most were character-oriented lists of sorts that allowed some selection somehow. Early menus were homegrown, hardly any two the same, such that the user had to get used to a new menu for each new program. This, i think, was because each programmer developed a menu for his/her own program, there being no universally acceptable menu system that satisfied most uses, that could be ordered from a third party and integrated into any new program, or for any new program to be plugged into a popular format.

Think of all the different kinds of menus used in those days from Wordstar to Multiplan, to DRGraph, to various accounting and modem software, to Digital Research's own early menu system that drew a horizontal row of big boxes around as many as 8 selections (customizable) that scrolled up from the bottom of the screen, each corresponding to a 1-8 function key.

Whenever i went to write some retro-code for fun, i always found myself grappling with a good, quick, utilitarian menu that would suffice for my purposes, seeing the need for some re-usable code that i could use for any executable i might want to run. Eventually i decided to tackle the issue once for all, so that i could develop other programs in peace, blissfully ignorant of the extra coding needed for a menu. I wanted to be able to plug new code into an existing menu system with a minimum of fuss.

I came up with about 24KB (12KB compiled) of CBasic that was scalable whenever a new tree of selections was to be added, making it easy to point the menu at .INT (CBasic) executables located in any of the 0-15 user areas of a CP/M file system. There are two basic menu types:

A) a numerically indexed list (type a numbered key to select)
B) a command line (where command reminders can pop up in a list)

I also have a prompt string that keeps track of what drive you are on, where you are in the selection tree, and lists the selections directly above the flashing prompt. The menu list and prompt scrolls up from wherever the prompt was left at the end of the just-executed program.

What's new about this menu, i think is the way i dispensed with any sort of "go back" or "go back to main menu" type of selections and just used the RETURN key to subtract one level of the tree after another until one arrives back at the CP/M prompt. However, i wanted this menu to be a smarter replacement for the CP/M prompt, able access any CP/M .COM program, and return to the CBasic prompt after going to something like Wordstar.COM, ED.COM or PIP.COM.

To make this menu work, each new CBasic program just needs to %include a common definitions/functions file to facilitate a chaining process. After that, it's as simple as including a chain back line at the end of each program. There is also a pause function that enables one to re-run a program, or go back to the same menu tree level just come from.

I am interested in making this program better. If there is any interest i might release something to keep things interesting. I am interested to know what, short of a graphical drop-down menu system, is the best way to display and select a list of menu items, or the best way to display and/or handle a command line. Any ideas?

Be well,
Still






Alan Laughton

unread,
Oct 12, 2014, 4:50:25 AM10/12/14
to
I'd be interested in what you have, but with any Microbee Premium disc
system (Z80 @ 3.375MHz and 128k mem running CP/M2.2 / ZCPR2) we have had
a Shell/Menu that includes all you mentioned plus more since 1985.
Colour, Icons and the last version even had Mouse support and all in a 8
to 11.5kb file. All the COM files sort automatically to top window then
just move to highlight the program you want to run with the arrow keys
and hit enter. Or just press the Icon number to run that program.
Command line extras can be added by the use of the Linefeed key, etc,
etc. But this is not a general CP/M program, only runs on the Microbee
customised to its graphics, clock, sound, mouse, etc.

Dump of the Shell screen of a Microbee 256TC System disk in my Dropbox

https://www.dropbox.com/s/9ht3b7rq9g8p5vh/microbee_shell.jpg?dl=0

Alan

Mr. Emmanuel Roche, France

unread,
Oct 12, 2014, 5:13:48 AM10/12/14
to
Still Chirst wrote:

> What's the best menu for an 8-bit machine running CP/M?

I don't know: after playing with the VCCP (Visual Console Command Processor of Personal CP/M), I quickly went back to Good Old command line CCP...

However, there have been many "menus" for CP/M. Read below.

Yours Sincerely,
Mr. Emmanuel Roche, France

- "MenuMaster update"
Philippe Kahn
"InfoWorl", Oct. 17, 1983, p.34

(Retyped by Emmanuel ROCHE.)

I was very pleased to read Gene Cotton's review of MenuMaster in Vol.5, No.35. We sincerely appreciate his giving our package the best possible ratings in all categories. The purpose of this letter is (...) and to provide InfoWorld readers with a brief overview of the significant enhancements that we have recently made to the product.

(...)

The version of MenuMaster reviewed by Mr. Cotton was Borland's first version. (ROCHE> Compiled with Digital Research's Pascal/MT+...) It was released at CP/M'83. Manufacturers such as Morrow, Osborne, Access, Molecular and others have decided to use the product. As we worked with those manufacturers, a whole list of desirable features became apparent. For example, Mr. Cotton mentioned some slight inconveniences in our Installation program. These shortcomings have been corrected in our new release.

Here is a brief overview of the new enhancements to MenuMaster:

- It is now possible to patch directly into files with 2 new statements: WritePatch and ReadPatch. Their use is similar to the BASIC PEEK and POKE statements.

There are many applications. For example, you can automatically customize packages such as WordStar -- you only need to install MenuMaster to the terminal you are using and automatically install all the other software packages you wish to integrate. You may also do some basic I/O redirection by directly patching the IOBYTE during a job stream. (ROCHE> Called a SUBMIT job on microcomputers using CP/M...)

- The size of the menus has been considerably reduced (20% to 50%) with the new, optional, Variable Declaration feature.

- An extremely valuable new feature for systems with small disk-storage capacity is that, now, the interpreter files need only be on one disk. If the user attempts to use a program or a menu definition that is not present on one of the active drives, the user will simply be prompted to insert the proper disk and press RETURN. When the user is exiting, MenuMaster will tell him to re-insert the preceding disk in the corresponding drive and press RETURN. This feature makes MenuMaster extremely efficient, even on systems with one floppy disk drive, such as the Pied Piper.

- The Exit command, which allows the user to exit from his working menu, has been implemented with security, so that a first-time user does not go back to the A> prompt of CP/M by accident.

We are currently preparing the release of the MS-DOS and CP/M-86 versions of MenuMaster. These versions will have some additional features specifically oriented toward screen management. Shipment will start before (the upcoming Fall) COMDEX.

(ROCHE> Google Books has an image of Borland's MenuMaster full-page advertisement, published in "InfoWorld", Vol.5, No.13, p.18: )

http://books.google.fr/books?id=_S8EAAAAMBAJ&pg=PA18&lpg=PA18&dq=%22Borland%22+%22MenuMaster%22&source=bl&ots=VQpuE7SEEC&sig=OI5gDywkMKTxvX6CPfQqv35N5ks&hl=fr&sa=X&ei=eD06VNnMN8_kauKpgcgP&ved=0CDMQ6AEwBg#v=onepage&q=%22Borland%22%20%22MenuMaster%22&f=false


EOF

V1050

unread,
Oct 16, 2014, 1:12:42 AM10/16/14
to
Impressive that MicroBee Deluxe. What year did that debut? Impressive shell for an 8-bit machine. I like the way programmers eventually figured out that using the direction keys was a good way to select something from a menu. I don't see that much before 1984. When you just have numbers to select from, you have to have light on your keyboard to chicken peck the right number. With direction keys, you can do in in the dark as with a mouse. So i will schedule that as my next improvement to the menu i've built.


Not sure if what i developed could be called a shell. It's mainly good at executing .INT files compiled with CBAS.COM. Anytime it executes a .COM file, RAM is emptied of CBasic, the .COM is executed, and CBasic is then loaded back in RAM when the .COM exits. It's not fast. So i suppose the menu i propose is best used on a diskette full of .INT modules that require some sort of menu organization to quickly access. I am not sure how i would implement this for .COM programs as i am more of a scripter and not an assembly programmer.

As an experiment, i reconstructed the menu for QuickBasic to see how fast i could implement it (stub code of course) as a sub-menu within the master menu. The master menu allows for complex menus such as this, no matter how deep, and is scalable, so that multiple complex sub-menus can be plugged in given some instructions.

I am impressed with the ease a menu can be built in a language like AutoIt3. With that in mind, it appears i'm looking to improve the way a user would plug a new sub-menu into the system. It appears that what i'm trying to do is add functionality to the CBasic language by adding (to a library or sorts) some high level functions that make menus easy, as easy as AutoIt3 (anymore most high level languages will have functions to implement a good menu). I am interested to get some feedback on the functionality of the functions i've built so far. Anyone interested in looking at the CBasic code let me know what would be a good way to make it available.

Still


V1050

unread,
Oct 16, 2014, 1:22:54 AM10/16/14
to
Thanks Emmanuel! Admittedly, the CCP and maybe a few .submit files is a great way of getting around all the .COM files on a CP/M diskette. See my above reply about my second thoughts on what i'm trying to accomplish. This menu master that i'm proposing is basically some high level functions in CBasic to be used on a diskette full of .INT files that need the highest degree of organization. The functions would make it easy to build complex menu tree and plug them into the master. It is currently tuned to an A and B drive system, where the menu master is on the A drive, and the .INT files are collected anywhere on the B drive diskette. This menu will change User Area if necessary in order to get to a particular collection of .INT files organized as a menu. So what's new? I think it's trying to combine the best of menu selection ability, including the implementation of command line functionality, with the ability to plug a new menu in with ease. It is geared toward CBasic, but could be for any of those high level languages, such as Pascal or C that ran on 8-bits in those days. I have not seen this kind of menu functionality in any of those languages libraries and thought i would tackle it once for all.

I heard that Briggit Bardot is 80! Is that true?

Be well,

Still

Mr. Emmanuel Roche, France

unread,
Oct 16, 2014, 5:31:21 AM10/16/14
to
"Still" wrote:

> Impressive that MicroBee Deluxe. What year did that debut? Impressive shell for an 8-bit machine. I like the way programmers eventually figured out that using the direction keys was a good way to select something from a menu. I don't see that much before 1984.

Ahem! Below, you will find a message that I sent, the 4th of March, 2014, to a group of CP/M programmers:

> While searching for something else, I had the surprise to
> find an article dealing with CP/M 1.4 in a PDF file.
>
> The article explains how to mody CP/M 1.4 so that it runs
> automatically a program, then explains a MENU program in
> 8080 ASM which, apparently, displays a sorted directory
> with numbers, then executes the chosen program. The
> program is well-written, but I don't think that I will
> retype it, since Personal CP/M has a "Visual CCP" doing
> the same thing, and more.
>
> The reference is:
>
> - "Turn-Key" CP/M Systems
> James Frantz
> "Creative Computing", December 1979, pp.104-114
>
> (The article is 4 pages of text, followed by the source code
> of the 8080 program, but the code is printed on left-sided
> pages, with advertisements on right-sided pages.)
>
> I found this issue of "Creative" at the Archive.Org:
>
> href="https://ia601602.us.archive.org/15/items/creativecomputing-1979-12/Creative_Computing_v05_n12_1979_December.pdf"
> target="_blank">https://ia601602.us.archive.org/15/items/creativecomputing-1979-12/Creative_Computing_v05_n12_1979_December.pdf

Conclusion: "menus" already existed for CP/M... 1.4(!) in 1979, 3 years after the public offering of CP/M 1.3.

(CP/M 2.0 was offered to the public the following year.)

In France, we have a saying which translates, roughly, into: "Nothing new under the Sun..."

dottor Piergiorgio M. d' Errico

unread,
Oct 16, 2014, 6:07:43 AM10/16/14
to
Il 16/10/2014 11:31, Mr. Emmanuel Roche, France ha scritto:

> In France, we have a saying which translates, roughly, into: "Nothing new under the Sun..."

dear cousin ;) it's the same in Italian ("niente di nuovo sotto il
Sole") and Latin ("Nihil novi sub sole") and the saying originates in
Hebrew culture (being, Quohelet/Ecclesiastes 1,9/1:9)

my apologies for the cultural OT, and

Best regards from Italy,
dott. Piergiorgio.



Steven Hirsch

unread,
Oct 16, 2014, 9:36:45 AM10/16/14
to
On 10/16/2014 01:12 AM, V1050 wrote:

> Impressive that MicroBee Deluxe. What year did that debut? Impressive
> shell for an 8-bit machine. I like the way programmers eventually figured
> out that using the direction keys was a good way to select something from a
> menu. I don't see that much before 1984. When you just have numbers to
> select from, you have to have light on your keyboard to chicken peck the
> right number. With direction keys, you can do in in the dark as with a
> mouse. So i will schedule that as my next improvement to the menu i've
> built.

You might want to check out the capabilities available in the Z-System (ZCPR3)
environment.

Jay_in_Dallas

unread,
Oct 16, 2014, 11:54:11 PM10/16/14
to
I wrote something like that around 1986 for the operation of a man-machine interface for a document sorting machine. The menu construct ran on a Wyse 50 terminal.

I used a data structure created in Z80 Assembly Language to tie each operational routine or sequence of routines with it's terminal navigation appearance. It supported multiple ways to invoked selections, i.e. single keystoke of the highlighted letter or the number on the menu line or simply using arrow key navigation to move highlighted blocks among the menu lines and then select the active on vie ENTER key. The menu routine traversed the structure's list to render a page and each menu line and to interpret user keystrokes.

Note that this dealt with sequencing routines resident in ram and not loading CP/M programs or any floppy induced delays. It could be converted for general application. I probably have it in my archives as a listing or diskette.

The firmware was developed on an Ampro Little Board. I ran the menu program on the Ampro for a live simulation of the menu constructs during a client approval meeting.

An advantage of the data structure was that it allowed me to make changes during the meeting in about a minute, so I could demonstrate their proposed changes before they were ready to stop debating them.

Curbing those unproductive circular discussions cut the meeting down to 90 minutes to get the whole menu construct client modified and approved. Three days had been scheduled due to the this client's normally slow bureaucratic pace.

I particularly remember that meeting because when we adjourned and I headed out for a late lunch, my boss told me that the radio had reported that the Shuttle Challenger had exploded moments after launch.


Alan Laughton

unread,
Oct 17, 2014, 1:06:58 AM10/17/14
to
On 16/10/2014 4:12 PM, V1050 wrote:

>> Dump of the Shell screen of a Microbee 256TC System disk in my
>> Dropbox
>>
>> https://www.dropbox.com/s/9ht3b7rq9g8p5vh/microbee_shell.jpg?dl=0
>>
>> Alan
>
> Impressive that MicroBee Deluxe. What year did that debut?
> Impressive shell for an 8-bit machine.

First were early 1984 and used the Ctrl WASZ then the Wordstar Ctrl
ESDX for cursor movement. The Premium 128 Microbees came out in 85 and
had extra Cursor keys which basically simulated Ctrl ESDX. They also
split out the COM files into an upper window and all others in the
bottom window. The Premium 128 introduced Colour as standard so now
nice and colourful :) Then in 1987 when the 256TC came out, it had
separate Function Keys, Clock as standard and Mouse control resulting in
the pic above. Yes, a most advanced interface of any 8bit machine of
the time running CP/M.

Alan

Message has been deleted

V1050

unread,
Dec 21, 2015, 2:42:13 AM12/21/15
to
Hey folks, looks like i have not posted in over one year and one day, which, by French standards, makes me DEAD! So i'm here to try and beat the dead-lines of any other culture. Seems the only thing that can't die is CP/M! Or at least the culture.

I've been completely out of the loop for over a year, very busy. So this once very interesting subject seems foreign at the moment. Maybe i will have time this winter to refresh my memory.

I just wanted to correct the headline of this thread. Upon further reflection, what i had programmed (in CBasic) was a universal CBasic menu system that works best with .INT (CBasic executables) files. While it could call on .COM files, use them, and come back to the CBasic menu like a "shell", it would probably not be the best way to work with .COM. So it's not that kind of "shell".

Anyway, it was fun to put together, and now i never need to write any kind of menu for any other CBasic program/functionality i might fancy to explore.

Alas, i don't know when i will ever have time to plunk around with my favorite Basic language. Sorry i don't have screen shots and code downloads, as i have not updated my blog in a long time. I have quite a bit to share in due time, but in case i die, i leave everything i have, that is, all my CBasic programming, to Emmanuel Roche!

Be Well!

Still

John Garza

unread,
Dec 21, 2015, 10:09:54 AM12/21/15
to
> Alas, i don't know when i will ever have time to plunk around with my favorite Basic language. Sorry i don't have screen shots and code downloads, as i have not updated my blog in a long time. I have quite a bit to share in due time, but in case i die, i leave everything i have to Emanuel Roche!
>
> Be Well!
>
> Still
>


By chance, I was recently toying with the idea of writing a universal
CP/M menuing system last week. I reviewed MENU and others on the Walnut
CD, but they all had their idiosyncrasies.

I'm thinking of options for number only (like MENU) for old-school TTY,
and a simple termcap-like file to support cursors with hi-lighting for
CRTs of the era. Simple and non-complicated where a user can setup a
text file in a specified format and the program will build the menu
based on that. it could execute any CPM command line. And since it's a
'system utility' it will be done in 8080 assembly.

-John

V1050

unread,
Dec 22, 2015, 5:42:35 PM12/22/15
to
On Monday, December 21, 2015 at 7:09:54 AM UTC-8, John Garza wrote:
> By chance, I was recently toying with the idea of writing a universal
> CP/M menuing system last week. I reviewed MENU and others on the Walnut
> CD, but they all had their idiosyncrasies.
>
> I'm thinking of options for number only (like MENU) for old-school TTY,
> and a simple termcap-like file to support cursors with hi-lighting for
> CRTs of the era. Simple and non-complicated where a user can setup a
> text file in a specified format and the program will build the menu
> based on that. it could execute any CPM command line. And since it's a
> 'system utility' it will be done in 8080 assembly.
>
> -John

For a model of what's possible in this regard, check out the menu made by Digital Research. It came installed on the 1984 debuting Visual Technology model V1050 that i own (which still works great). The menu can be found in the digital archive containing the files for this particular model. If it's in other archives i have not seen it.

It puts 8 boxes/tiles across the bottom of the screen, activated by a function key, and offered a text file for some customizing of what programs those boxes displayed and pointed to. One of the boxes dropped you back down to the CCP in CP/M. Probably good for an office person that just runs a small set of programs over and over, i found myself always dropping back to the command line, not using that menu. But it might work for a model of something more you could do in 8080.

My menu loads CBasic into memory. It will cross from one user area to another, wherever files are designated to be located. But to do that, it drops back down to the command line, changes user areas, and calls itself back up. This is done by writing info to $$$.SUB before shutting down. That's how it may function as a "shell", always returning to it, even after calling a .COM program. But for speed, it's best to have it point to .INT files in the same user area it is logged into.

Still


Mr. Emmanuel Roche, France

unread,
Dec 23, 2015, 4:25:25 AM12/23/15
to
"V1050", alias "Still Christ!", alias "???" wrote:

> For a model of what's possible in this regard, check out the menu made by Digital Research.

??? Digital Research made a "Menu" program? I could not believe my eyes!


> It came installed on the 1984 debuting Visual Technology model V1050 that i own (which still works great). The menu can be found in the digital archive containing the files for this particular model. If it's in other archives i have not seen it.

Well, I only have about 30 years of experience with CP/M, starting with Version 1.4, then 2.2, then Plus (3.0), then 1.3 (last year).

So, I had a look. I easily found the MENU.COM file, but it displays garbage when run from under a CP/M emulator. So, I dumped it, and found that the name of the Help file is HELPFILE.CVT ??? Really a bad name. Should have been MENU.HLP. By the way, when I dumped MENU.COM, I saw that it was compiled using a high-level Programming Language, so probably with a compiler other than CBASIC (Maybe CBASIC Compiler?)

Anyway, the "Visual 1050 User's Guide" contains 32 pages about this program, this time named the "Visual 1050 Utility Manager" (in Chapter 4).

So, my (personal) conclusion is: This program (which seems to use the CP/M Plus "Program Return Code", so is not portable to other versions of CP/M -- unless you retro-implement this advanced feature) was probably made by "Visual Technology" to ease the use of their "1050" by 1984 Newbies.

But nothing that I have seen, during those 2 hours of research, lead to Digital Research. See below.

(In my humble opinion, the only interest of the Visual 1050 is that it is the best documented CP/M Plus system in the world. Ha! If only I had it in 1985, when Amstrad launched their CP/M Plus micros in Europe, which were best-sellers! (At least 8 millions PCW were sold.) If you are serious about CP/M Plus, study it deeply. With so much technical information, one wonders how easy it would be to implement MP/M-II on it, since 3/4 of the work has already been done... But 8 millions Amstrad PCWs are available (in Europe) while only XX V1050 were sold in the USA...)

Yours Sincerely,
Mr. Emmanuel Roche, France

This is the top level of the Visual 1050 Utility Manager. The eight
boxes presented at the bottom of this screen correspond to the function
keys labeled F1 through F8, located on the top row of the keyboard.

Press the appropriate function key to access more help about the
topics listed below:

F1: The menu from which you may run standard application programs.
F2: The menu from which you make make accessible and run user-
specified application programs.
F3: Showing the remaining space on a specified disk drive.
F4: Showing the file directory for a specified disk drive.
F5: The menu from which you may perform various file manipulations.
F6: The menu from which you may perform various disk manipulations.
F7: The menu from which you may set many system parameters.

If you press F8, the Utility Manager will be terminated and the operating
system will be directly accessible.


Run Standard Application Programs:
----------------------------------

From this menu of the Utility Manager, you may select one of several
application programs. If you make a selection, the Utility Manager
will search for the program on the diskette currently placed in the
A: drive. If the program is not on the diskette, the Utility Manager
will prompt you to place the appropriate diskette in the A: drive, after
which you may run the program. After the program has completed, this
menu will again be presented at the screen.

The following occurs when you press the keys listed below:

F1: WordStar will be run.
F2: Multiplan will be run.
F3: DR Graph will be run.
F4: The menu for CBASIC will be presented, from which
you may either RUN or COMPILE a CBASIC program.
F5: TTY1050 will be run.


Run Optional Application Programs:
----------------------------------

From this menu, you may run user-specified application programs via
function keys F1 through F6. Any .COM file (or .SUB file which doesn't
require input from the keyboard while it is running) may be assigned to
these keys.

The F7 key is used to add or delete names of programs from the boxes
associated with keys F1 through F6. To add a program, press F7 then press
the function key to be associated with the program. If the key which you
specified is "free" (the box is empty), you will be prompted for the name
of the new program. You will then be asked if you want the Utility Manager
to prompt for a command tail when the program is run. Enter 'Y' or 'N' as
desired. The program name will be displayed in the selected box. To
delete a name from a box, press F7 then press the associated function key.
Enter 'Y'in response to the Utility Manager's prompt for deletion. To re-
assign a box, delete the old name and assign the new name. When displayed,
program names are truncated to seven characters.


Show Status:
------------

When you press this function key, information about the specified disk
drive (and the diskette currently within it) will be presented:

* The write protection status and space (given in kilobytes) which
remains available for use on the diskette currently in the drive.

* The disk drive characteristics: the capacity of the disk drive, as
measured in several different ways, and how information has been
organized on the diskette.

* The active user number, the number of active files across all user
areas, and the number of files used across all user areas.

* The number of "free" (available) directory entries.


Show files:
-----------

When you press this function key, the directory of a specified drive is
displayed on the screen. Next to each filename on the directory is
information indicating the size of the file in bytes, the number of
records in the file, and the file attributes.

At the end of the list of files, information is displayed which indicates
the amount of space used by files (measured in bytes, blocks, and records),
the number of files found, and the number of directory entries used out of
the total number of entries available on the diskette.


Handle files:
-------------

When you press this function key, a menu is presented from which you can
manipulate files in various ways, as described below:

F1: Display a specified file.
F2: Output a specified file to the printer.
F3: Copy a specified source file to a specified destination file.
F4: Erase a specified file(s). (Wildcards may be used.)
F5: Rename a specified file.


Handle Disks:
-------------

When you press this function key, a menu level is presented from which
you can manipulate diskettes in various ways, as described below:

F1: Format a diskette in the specified drive.
F2: Copy the CP/M 3 operating system from one diskette in a
specified drive onto another diskette in a specified drive.
F3: Copy the Utility Manager and its associated files from one diskette
in a specified drive onto another diskette in a specified drive.
F4: Copy all files of a diskette in the left (A:) drive to a diskette
in the right (B:) drive.


Set Up System:
--------------

From this menu, you may set up a variety of features pertaining to the
operation of the Visual 1050.

Press the appropriate function key to access more help about the
topics listed below:

F1: The menu from which you may alter keyboard features.
F2: The menu from which you may alter display screen features. These
features include: the 'phosphor saver' feature, scrolling speed,
cursor characteristics, video characteristics.
F3: The menu from which you may set up communications parameters
and run the CP/M DEVICE command.
F4: The menu from which you may enable or disable the Utility Manager
when the system is "cold booted," (as during a power up sequence).

If you press F5, the Utility Manager software revision level is displayed.


Set Up Keyboard:
----------------

From this menu, you may set up features pertaining to keyboard operation:

F1: AUTOREPEAT ON: Press this function key to enable (turn on) the
autorepeat feature. Autorepeat allows you repeatedly enter a
given character by holding down the appropriate key for more than
a second or so. Autorepeat ON is the default setting.
F2: AUTOREPEAT OFF: Press this function key to disable (turn off)
the autorepeat feature of the keyboard.
F3: KEYCLICK ON: Press this function key to enable (turn on) the
keyclick feature. Keyclick provides an audible confirmation that
a character has been entered. Keyclick ON is default setting.
F4: KEYCLICK OFF: Press this function key to disable (turn off) the
keyclick feature of the keyboard.


Set Up Display:
---------------

From this menu, you may set up features pertaining to the display:

F1: PHOSPHOR SAVER ON: Press this function key to enable the phosphor
saver feature, which "turns off" the display if it is not changed
for a period of 19 minutes by a program or by keyboard input.
Phosphor saver ON is the default setting.
F2: PHOSPHOR SAVER OFF: This function key disables phosphor saver.
F3: SLOW SCROLL: Press this function key to set the scrolling speed
of the display to the slower rate.
F4: FAST SCROLL: Press this function key to set the scrolling speed
to the faster rate. FAST SCROLL is the default setting.
F5: SELECT CURSOR: Press this function for the SELECT CURSOR menu.
F6: INVERSE VIDEO ON: Press this function key to display the screen
in reverse video (black-on-white) mode.
F7: INVERSE VIDEO OFF: Press this function key for normal (white on
black) video. INVERSE VIDEO OFF is the default setting.


Set Up Communications Options:
------------------------------

From this memu, you may set up system characteristics which determine how
the Visual 1050 communicates to external devices through its RS232 port.

F1: Press this function key to view the BAUD RATE menu. The baud
rates 300, 600, 1200, 2400, 4800, 9600, and 19200 are available.
F2: Press this function key to view the CHARACTER LENGTH menu. You
may choose a character length of 5, 6, 7, or 8 bits.
F3: Press this function key to view the STOP BITS menu. You may
select either 1, 1.5, or 2 stop bits.
F4: Press this function key to specify either EVEN, ODD, or NO parity.
F5: Press this function key to run the CP/M DEVICE command, which you
may use to review and reassign external device drivers to the
CP/M logical devices.


Utility Manager (Menu) ON/OFF
-----------------------------

From this menu you may specify whether or not the Utility Manager is run
upon power up or cold boot of the system.

F1: MENU ON: Press this function key in order to ensure that the
Utility Manager is started up upon cold boot of the system.
MENU ON is the default setting.
F2: MENU OFF: Press this function key in order to ensure that the
Utility Manager will not be run upon cold boot of the system.
(The Utility Manager will continue to run until the
system is cold booted.)


Select Cursor:
--------------

From this menu you may specify the characteristics of the cursor:

F1: CURSOR ON: Press this function key to enable the display of the
cursor. CURSOR ON is the default setting.
F2: CURSOR OFF: Press this function key to disable the display of
the cursor.
F3: BLINK ON: Press this function key so that the cursor will blink
on and off when it is displayed. BLINK ON is the default setting.
F4: BLINK OFF: Press this function key so that the cursor will remain
on constantly, instead of blinking on and off.
F5: TRIANGULAR CURSOR: Press this key so that the cursor will be
displayed as a triangle. This is the default cursor.
F6: RECTANGULAR CURSOR: Press this function key so that the cursor
will be displayed as a rectangular block.
F7: UNDERSCORE CURSOR: Press this function key so that the cursor
will be displayed as an underscore character.


Return to CP/M:
---------------

When you press this key, the Utility Manager is exited, and the operating
system is directly available.


EOF

V1050

unread,
Dec 23, 2015, 11:09:35 PM12/23/15
to
On Wednesday, December 23, 2015 at 1:25:25 AM UTC-8, Mr. Emmanuel Roche, France wrote:

> ??? Digital Research made a "Menu" program? I could not believe my eyes!



> So, I had a look. I easily found the MENU.COM file, but it displays garbage when run from under a CP/M emulator. So, I dumped it, and found that the name of the Help file is HELPFILE.CVT ??? Really a bad name. Should have been MENU.HLP. By the way, when I dumped MENU.COM, I saw that it was compiled using a high-level Programming Language, so probably with a compiler other than CBASIC (Maybe CBASIC Compiler?)
>
> Anyway, the "Visual 1050 User's Guide" contains 32 pages about this program, this time named the "Visual 1050 Utility Manager" (in Chapter 4).
>
> So, my (personal) conclusion is: This program (which seems to use the CP/M Plus "Program Return Code", so is not portable to other versions of CP/M -- unless you retro-implement this advanced feature) was probably made by "Visual Technology" to ease the use of their "1050" by 1984 Newbies.
>
> But nothing that I have seen, during those 2 hours of research, lead to Digital Research. See below.


Good detective work Emmanuel! I agree. Not sure why i've always thought it was from DRI, probably because it was so well done, and you don't expect the hardware company to do that much custom coding for their machine. But there are clues, for example, the menu has hard-coded WordStar, MultiPlan, CBasic, DR Graph and V1050 TTY, in other words, just the software bundle that came with the machine. I assumed that was a clever hook that DRI let each hardware company customize, kind of like how they allow customization of the BIOS. Another clue is how far Visual Technology went to make the machine user friendly, including custom keyboard keys implementing many functions in Wordstar, and a few in Multiplan. Clue #3 is they did hire a serious programmer to make a demonstration program to show off the machine. That demo is shown in this YouTube video i put up years ago:

https://www.youtube.com/watch?v=SvdcVaTAY9E

Where the "Utility Manager" is highlighted starting at 5:38

When a function key is chosen, the outline of the box lights up letting you know it was the one chosen. The tiles seemed to anticipate an era of touch screens.

So last night i was reading through HELPFILE.CVT on the actual hardware, wondering how it implemented customization. First, by asking questions, it writes to a text file. Pretty easy. Next, it allows up to six additions (who needs more than six?). When i selected F7 to add a program, i was told there was not disk space (only 28k left) to do that. So the menu is meant to be pipped over to other diskettes less cluttered by the main CP/M diskette that came with the system. If the program called is not on the same disk as the menu, it prompts the user to insert the diskette with the program. Probably it is always working in User Area 0.


The last clue is the file type .CVT of the "HELPFILE".

I've never heard of it, but we know that ASCII files can be called anything the author wants. I'd guess the VT part stands for Visual Technology

Thanks for posting the contents of the "Utility Manager" helpfile. Saved me some work.

I have not yet been able to implement direct manipulation of RAM from within CBasic (the interpreter), even though it is possible. So i am not using a "return code" to get back to my menu, but rather a somewhat clunky $$$.SUB method. There is an example in the CBasic manual how to do it, and believe me i've tried, but somethings not right yet.

Anyways, it would be interesting indeed if this "Utility Manager" was compiled with the CBAsic compiler.

Regards,

Still

Mr. Emmanuel Roche, France

unread,
Dec 24, 2015, 3:30:57 AM12/24/15
to
"Still" wrote:

> Good detective work Emmanuel! I agree. Not sure why i've always thought it was from DRI, probably because it was so well done, and you don't expect the hardware company to do that much custom coding for their machine.

Well, they also took the pain to debug a GSX-80 screen driver, and there are only a handful of known GSX screen drivers for CP/M-80...

Too bad that, despite all this technical achievements, so few Visual 1050 were sold, when 8 millions Amstrad PCW were sold, starting one year later and during several years after that (while the Americans were buying "IBM Clowns" and making IBM richer and Bill Gates the richest man on Earth...).


> When i selected F7 to add a program, i was told there was not disk space (only 28k left) to do that.

So, this "Utility Manager" is checking the amount of free space remaining on the diskette before writing on it... This is the sign of a superior program.


> So the menu is meant to be pipped over to other diskettes less cluttered by the main CP/M diskette that came with the system. If the program called is not on the same disk as the menu, it prompts the user to insert the diskette with the program. Probably it is always working in User Area 0.

For about 10 years, CP/M was designed to boot from a floppy disk drive. CP/M Plus, however, was designed specifically to be a single-user version of MP/M-II, and was intended for hard disks and the Z-280 CPU. But both were too much expensive, at the time (1984) and Zilog failed to introduce its Z-280 in time.


> I have not yet been able to implement direct manipulation of RAM from within CBasic (the interpreter), even though it is possible.

Yes, of course! POKE is all you need.


> So i am not using a "return code" to get back to my menu, but rather a somewhat clunky $$$.SUB method. There is an example in the CBasic manual how to do it, and believe me i've tried, but somethings not right yet.

? Could you explain better? If Digital Research showed a programming example, I would expect it to run!

(However, the CBASIC manual was probably written for CP/M 2.2, and the Visual 1050 is running under CP/M Plus (or Version 3.0 in the USA, and 3.1 in Europe). There are slight differences, but nothing difficult.)


> Anyways, it would be interesting indeed if this "Utility Manager" was compiled with the CBAsic compiler.

I am busy, those days, but I will have a look to MENU.

(By the way, please write "CBASIC" for the "p-code compiler" and "CBASIC Compiler" for the "machine code compiler". This is clearer, and how Digital Research named them.)

Mr. Emmanuel Roche, France

unread,
Dec 24, 2015, 4:52:20 AM12/24/15
to
Ok. After one hour of research, I simply do not know from where is coming the Visual 1050's MENU.COM. All the intuitions that I followed led to nowhere. So, here are the ASCII strings contained inside it (the notable ones are marked by a "<-----"):

Visual 1050 MENU.COM ASCII strings
-----------

F1 F2 F3 F4 F5 F6 F7 F8
[24;1f <----- Not VT-52 ? but ANSI escape codes?
[25;1f
[21;1f
[21;4f
PRESS A FUNCTION KEY, OR ANY OTHER TO EXIT THIS MENU LEVEL
EXIT
TO CP/M
RUN STD RUN OPT SHOW SHOW HANDLE HANDLE SET UP EXIT
APPLIC APPLIC STATUS FILES FILES DISKS SYSTEM TO CP/M
PRESS A FUNCTION KEY
INSERT THE DISK THAT CONTAINS IN THE DRIVE
THEN PRESS THE KEY AGAIN
SEARCHING HELPFILE
HELPFILE.CVT
PRESS A FUNCTION KEY, OR ANY OTHER TO EXIT HELP
HELPFILE.CVT
user.txt
error opening user.txt
com
COM
sub
SUB
ENTER FILENAME (MUST BE .COM OR .SUB), OR PRESS RETURN TO EXIT
SHOULD THE MENU ASK FOR A COMMAND TAIL BEFORE RUNNING THIS
APPLICATION? Y/N:
error opening user.txt
error opening temporary file
error opening database
error opening user.txt
PRESS THE FUNCTION KEY THAT YOU WISH TO DEFINE,
OR ANY OTHER TO EXIT
user.txt
ERROR OPENING USER.TXT
KEY ALREADY DEFINED - DELETE APPLICATION? TYPE Y/N:
APPLICATION DELETED. REDEFINE KEY? TYPE Y/N:
NOT ENOUGH DISK SPACE
user.txt
ERROR OPENING USER.TXT
INSERT THE DISK THAT CONTAINS
IN THE
DRIVE
IN THE
DRIVE
THEN PRESS THE
KEY AGAIN
ENTER PARAMETER(S) OR PRESS RETURN
sub
SUB
submit
MENU
USER APPLICATION
USER.TXT
COMPILE RUN
PROGRAM PROGRAM
ENTER FILENAME, OR PRESS RETURN TO EXIT THIS APPLICATION
COMPILE PROGRAM
ENTER FILENAME, OR PRESS RETURN TO EXIT THIS APPLICATION
CRUN23.COM
RUN PROGRAM
WORD MULTI DR TTY EXIT
STAR PLAN GRAPH CBASIC 1050 TO CP/M
WORDSTAR
WS.COM
MULTIPLAN
MP.COM
DR-GRAPH
GRAPH.COM
TTY1050
TTY1050.COM
ENTER FILENAME, OR PRESS RETURN TO EXIT THIS APPLICATION
WILDCARDS ARE NOT ALLOWED
INVALID DRIVE - TRY AGAIN
INSERT THE DISK THAT CONTAINS
IN THE
DRIVE
IN THE A: (LEFT) DRIVE,
THEN TYPE C, OR ANY OTHER TO EXIT THIS APPLICATION
PRINT FILE
PIP.COM
pip lst:=
[t8p60] <----- Can be customized for Europe A4 paper
ENTER NEW FILENAME, OR PRESS RETURN TO EXIT THIS APPLICATION
ENTER OLD FILENAME, OR PRESS RETURN TO EXIT THIS APPLICATION

VIEW PRINT COPY DELETE RENAME
FILE FILE FILE FILE FILE
TYPE C TO CONTINUE, ANY OTHER TO EXIT THIS APPLICATION
COPY FILE
PIP.COM
ENTER FILENAME, OR PRESS RETURN TO EXIT THIS APPLICATION
ENTER SOURCE DRIVE OR PRESS RETURN TO EXIT THIS APPLICATION
INVALID SOURCE DRIVE - TRY AGAIN
ENTER DESTINATION DRIVE OR PRESS RETURN TO EXIT THIS APPLICATION
INVALID DESTINATION DRIVE - TRY AGAIN
DO YOU WISH THE MENU TO APPEAR ON START UP? Y/N
profile.sub
COPY MENU
SUBMIT.COM
COPY MENU
FRONTEND.SUB
SUBMIT FRONTEND
FORMAT COPY COPY COPY
FLOPPY SYSTEM MENU FLOPPY
FORMAT FLOPPY
FMTDISK.COM
COPY SYSTEM
COPYSYS.COM
COPY FLOPPY
DISKCOPY.COM
SET UP SYSTEM
CONFIG.COM
ENTER DRIVE OR PRESS RETURN
SHOW FILES
DIR.COM
[USER=ALL]
DO YOU WISH TO SEE THE DETAILED DIRECTORY? Y/N
ENTER DRIVE OR PRESS RETURN
SHOW STATUS
SHOW.COM
[SPACE USER DRIVE]

9340 (...) @:PASTMP00.$$$ <----- !

9580 (...) Unable to automatically close:
in RESET
Program aborted

A580 (...) CON: <-----
LST:
KBD:
TRM:


EOF

Mr. Emmanuel Roche, France

unread,
Dec 24, 2015, 7:11:11 AM12/24/15
to
Mr. Emmanuel Roche, France wrote:

> For about 10 years, CP/M was designed to boot from a floppy disk drive. CP/M Plus, however, was designed specifically to be a single-user version of MP/M-II, and was intended for hard disks and the Z-280 CPU. But both were too much expensive, at the time (1984) and Zilog failed to introduce its Z-280 in time.

Argh! I wrote the bad number! In 1983, the future Zilog CPU was named "Z-800". However, Zilog failed to introduce it in time, so Digital Research ended launching CP/M Plus for the Z-80 CPU, instead. Many, many years later, Zilog finally launched it, under the name "Z-280".

Hence the confusion.
0 new messages