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

How To Run Disk Images (.IMD) In SIMH Altairz80 ?

1,350 views
Skip to first unread message

V1050

unread,
Aug 16, 2012, 5:36:35 AM8/16/12
to
Hello,I own a Visual Technologies V1050, an advanced Z80 machine that came out in 1984, bundled with CP/M Plus, Wordstar, Multiplan, CBasic, and DRGraph. But it was too little too late. So my sister got one new for $400 instead of $2695, within about a year after they hit the market. It still boots and runs mostly glitch-free so i'm interested in fully restoring it and programming for it. I would like to do most of my programming on an emulator, and then see if i can transfer the code from my Windows 7 laptop to 5 1/4" floppies somehow. I would really prefer to use the SIMH AltairZ80 emulation using the .IMD disk format by Dave Dunfield. Dave made images of the bundle of software that came with the V1050 (five disks) and i have successfully manipulated those with his IMDU utility into 'disks' that work in the MESS emulation. It's a very good emulation, based on ROMs, and even handles the advanced graphics (640x300 pixels)of the 6502 driven terminal. But for a couple of reasons, i would prefer to develop mostly on the SIMH AltairZ80 for speeds sake. To do that, i have a couple of issues:

1.)How to handle graphics
2.)How to handle .IMD format disk images.

I've read the documentation through and through. I've looked at sample configuration files used to boot the emulator. I'm soooo close, but sooo frustrated. Nothing is working for me!

Is there anybody out there who knows how to handle these disk images in the SIMH AltairZ80 environment?

The latest version (running CP/M 2.2) and documentation can be downloaded here:
http://www.schorn.ch/cpm/zip/altairz80.zip

Here is CP/M Plus (version 3.0) using .IMD formatted disk images.
http://www.schorn.ch/cpm/zip/cpmplus.zip

The Visual 1050 system disks can be found here thanks to Dave Dunfield:
http://www.classiccmp.org/dunfield/img54306/system.htm

I am trying to understand how all this works...how the configuration files are configured. I would really like to get the Visual 1050 running inside the SIMH AltairZ80 emulation! And if possible, i'd like to get the extended graphics capabilities going on it also. That's done through Telnet to 127.0.0.1 to get a VT100 terminal emulation, but have not had success yet with that either.

It would be nice to get this excellent emulator together with an excellent z80 machine + software bundle. I am sooooo close! Let's not let all these fine programmers/technicians efforts go to waste! This could be a super learning tool.

Thanks in advance!
~Still

Mr Emmanuel Roche, France

unread,
Aug 16, 2012, 7:30:45 PM8/16/12
to
Hello, Still!

(Question: Is it yet another nickname? In 2011, someone with your
address already existed, so I am ready to accept that you are real,
despite such an unusual first name... "V1050" is even worse, if
possible.)

Unless I am mistaken, there were already several threads published in
the comp.os.cpm Newsgroup concerning this (interesting) CP/M system:

- "Visual Technologies 1050" 25 Nov 2002
- "Visual 1050 Memory Map / ROM disassembly tips?" 14 Dec 2007

There was also a Web site dealing with it:

http://www.metabarn.com/v1050/

There seems to exist an emulator:

"As of July 22, 2009 MESS version 0.133 has a working Visual 1050
emulation."

There seems to have existed a "visual 1050 (Software) Library":

6728 VLIB79.ARK X G.CZERW 890101 76860 1 37
Desc: Visual 1050 Library Disk #79
(...)
6651 VLIB2.ARK X G.CZERW 881231 64260 3
37
Desc: Visual 1050 Library Disk #2
6649 VLIB1B.ARK X G.CZERW 881231 160020 1
37
Desc: Visual 1050 Library Disk #1B
6648 VLIB1A.ARK X G.CZERW 881231 28980 1
37
Desc: V-1050 Software Library Disk #1A

which were available on GENIE, "The Consumer Information Service from
General Electric".

This said, since I never had a Visual 1050, and am busy those days, I
cannot remember all the details. I would suggest you to read the above
threads.

>  To do that, i have a couple of issues:
>
> 1.)How to handle graphics

I am not sure what you mean by "handle graphics". Me, I disassembled,
about 20 years ago, several GSX-80 drivers, so have reasonable
knowledge of how to produce portable graphics (as far as I understand
it, since I never had one, nor corresponded with George Czerw (who
disappeared)), the Visual 1050 was using DR Graph. I have used it for
the last 20 years, so would be *VERY* interested in knowing which
manuals were, originally, provided with it. I hope that, this time,
you will be more reliable than George Czerw...

Ha! Before I forgot: Since Amstrad France did not provide any
technical information about its CP/M Plus for the Amstrad PCW range of
micros, I was obliged, 20 years ago, to disassemble it... So, I also
have a little knowledge of CP/M Plus...

> 2.)How to handle .IMD format disk images.

Argh! I only use emulators if I cannot do otherwise. I hope that
others persons are more knowledgeable than me, and will provide the
answers that you need.

> I am trying to understand how all this works...how the configuration files are configured.  I would really like to get the Visual 1050 running inside the SIMH AltairZ80 emulation!  And if possible, i'd like to get the extended graphics capabilities going on it also.  That's done through Telnet to 127.0.0.1 to get a VT100 terminal emulation, but have not had success yet with that either.

I am not sure that I understand well what you mean by "the extended
graphics capabilities". I was thinking that the Visual 1050 was using
a 6502 CPU as a cheap graphics processor? (Me, I studied a lot the NEC
uPD-7220 GDC, a very, very high-level CPU providing graphics
concurrently to the Z-80.)

As for the SIMH Altair emulator, as far as I know (I used it a handful
of times), it is character only (since the first microcomputers, hence
CP/M, had no screen) so all their I/O was done using character
"command lines". If I remember well, Peter Schorn uses the DEC VT-100
standard of escape codes for dealing with modern screens, but there
were others. For instance, Digital Research (once they added escape
codes) settled on the DEC VT-52 escape codes, which should be
mentioned in the CP/M Plus manuals.

Too bad that George Czerw did disappear, back then, because I am
pretty busy now. If I had had a Visual 1050, a lot of things could
have been different. I used daily an Epson QX-10 running CP/M Plus and
DR Graph with an Hewlett-Packard HP-7470A graphics plotter during 15
years... I would have enjoyed comparing those systems, back then.

I hope to help you, but, now, I am busy with others things.

Once your system will be running, I will be available to answer any
question about CP/M Plus and DR Graph.

Yours Sincerely,
Mr. Emmanuel Roche, France

V1050

unread,
Aug 18, 2012, 10:15:16 PM8/18/12
to
Hello Mr. Emmanuel Roche,

It's an honor to hear from you. I see you've been very busy over the years and have contributed a lot to this forum. I am glad to be in contact with someone so knowledgeable about the subject matter.

Yes Still is the name i go by in what's most often called the "real" world, which, from where i'm coming from, is a debatable concept. I may have registered in 2011 with same email but forgot about it. Full legal name is Still Christ! with an exclamation mark. Only recently i got bit by the byte bug and am tempted to resurrect a Visual 1050 from the dead because i own one and want to master it. Small miracles now, big miracles later. Steep learning curve.

The idea is to formulate code on a modern machine and send it to the old hardware to see if it will accept it and run with it...to maximize the usefulness of the machine; push it to its limits. To do that i need a good mediator; an emulator that can look, act and feel like a Visual 1050. I believe the SimH is best for this, but i could be wrong.

Thanks to emails from Tony Nicholson, who supplied SimH/Altairz80 with an excellent CPM Plus emulation, i've been able to hack one of his modules so that SimH/Altairz80 will read a Visual (1050) .IMD "disk". It was a matter of changing track and sector information inside the FDDISK1.ASM module, and recompiling the cpm3.sys file that resides on the I: drive (hard-disk). Tony has included .SUB files that make recompiling easy.

So i am reading Visual 1050 .IMD disk, but not yet writing to same. And i am still working on getting programs like Wordstar to align with the type of terminal provided either by SimH, and/or by Tony's specific emulation.

After i am reading and writing from/to Visual 1050 disks, i will be interested in emulating the 6502 driven 640 x 300 pixel graphics capabilities of the hardware terminal. I used the term "extended graphics" only in comparison to most CP/M machines of those days that were character oriented (lines and columns) only. Compared to the color of an IMB PC, with which the Visual had hoped to compete, the green-on-black monochrome graphics were probably not considered extended. I am very much interested to see what DR GRAPH could do, which, as you know, came bundled with the Visual. I'm wondering how you thought things would have been different for you if you owned a Visual back then? Sounds like your Epson QX-10 was set up as good or better. Did you take the blue pill or the red pill?

At that time,1985-87, i had my chance, but chose NOT to invest a learning curve into any computer at all until 1997, completely missing the CP/M >> DOS bandwagon. I got on board with Windows 95 as just a USER and only in the past two years have been interested in what's under the hood of these machines...how they work. I'm assuming the 8-bit world is easiest to acquire an all-around understanding so have decided to start there, driven by the extra curiosity of being a hardware owner through some kind of inheritance.

It would be nice to find that library posted by George Czerw to GENIE back in the day of BBS (another era i entirely missed). I have gained a lot of information from Rich at www.metabarn.com/v1050, even more than i know what to do with at this stage in my delinquency. And i have compiled MESS and tried the V1050 emulation there, which is excellent (even the graphics) except for keyboard input performance, which still needs a ROM dump from the old Keytronics hardware.

Meanwhile, i'll post back here as i get SimH configured as an efficient development environment for the Visual 1050. I look forward to having your input once the physical machine is squared away (refurbished keyboard, etc) and am able to transfer files from my Windows7 laptop platform back to the comparably dark ages of yesteryear.

If you have time, i'd be interested to know what is keeping you so busy these days. Are you programming commercially?

Wishing everyone well,

Still Christ!

Mr Emmanuel Roche, France

unread,
Aug 19, 2012, 4:32:52 AM8/19/12
to
Hello, Still!

>  Full legal name is Still Christ! with an exclamation mark.

Well, it is quite unusual. In France, for years, you could only give a
baby a first name that was the name of a Saint of the Catholic church.
Now that we have 10% of Arabs (most from Algeria, a former French
territory), the regulations have been eased, but it is still difficult
to give an unusual first name to a baby.

>  Only recently i got bit by the byte bug and am tempted to resurrect a Visual 1050 from the dead because i own one and want to master it. Small miracles now, big miracles later. Steep learning curve.

Yes, indeed, if you did not follow the "microcomputer revolution" from
its beginning. The fundamental thing to understand is that computing
is a 2-face thing: hardware and software, and, unfortunately, you can
do nothing (software wise) if the hardware is not working. Me, I live
in the countryside, on the Atlantic Coast. During one year, I searched
for an electronician to take care of my collection. In my ads, I only
mentioned the specifics of the Amstrad PCW, one of the simplest micro
ever built: one CPU and 5 integrated circuits. Each time I met a so-
called technician, they refused, upon learning that the CPU was a
Zilog Z-80, to have a look. In the end, I was obliged to make a 500
kilometers round-trip, to another Old Timer who is a real technician,
with an oscilloscope and a collection of old components.

So, the first thing is to find a competent electronician in your area,
since you can do nothing if your hardware is not working. After that,
with luck, we should be able to help you. According to Google, there
are only about 400 people left who remain interested in CP/M. Since
there are 7 billions persons on Earth, that is: 7.000.000.000 / 350,
or 1 person for each 20.000.000.

Fortunately, logically, a competent electronician can repair anything
with "discrete logic": he don't need to be specialized in CP/M micros.
All 8-bit micros used roughly the same technology: as long as an
electronician can repair one, he can repair the others. The closer to
you, the better.

> The idea is to formulate code on a modern machine and send it to the old hardware to see if it will accept it and run with it...to maximize the usefulness of the machine; push it to its limits.  To do that i need a good mediator; an emulator that can look, act and feel like a Visual 1050.  I believe the SimH is best for this, but i could be wrong.

Personally, during 15 years, I used daily an EPSON QX-10 running under
CP/M Plus. Just before moving to IBM PCs, the programs I was
assembling took 15 minutes to assemble, despite running in a RAMdisk.
Except the speed, there is not much difference when you use an IBM PC.
In fact, if you use a floppy disk drive instead of the hard disk, for
example when programming in BASIC, there is not much difference. So,
don't be obsessed with "efficiency": you will lose your time doing the
transfers. Some "embedded systems" builders spend their time doing
this. In general, they find that it is faster to develop on the real
hardware. So, get your hardware running properly first, then learn how
to use it. If it is too slow for you (depends on the size of your
programs), then it could be useful to use a faster system, like an
emulator running on a faster computer (software for microcomputers
used to be developed, on mini-computers. That's why Microsoft never
sold a debugger, since they were not developing their software on
micros).

With a fast or slow computer, you can do only 6 things with a
computer. This fact has been already mentioned several times in the
comp.os.cpm Newsgroup. Once you have a computer able to do those 6
things, you discover that all computers are doing the same. Only the
appearance change.

> After i am reading and writing from/to Visual 1050 disks, i will be interested in emulating the 6502 driven 640 x 300 pixel graphics capabilities of the hardware terminal.

This is unusual, so will be special. If someone had done it, don't re-
invent the wheel.

>  I used the term "extended graphics" only in comparison to most CP/M machines of those days that were character oriented (lines and columns) only.

At the beginning, there was no screen, just teletypewriters, for
historical reasons (the first computer makers simply re-used the
available Telex hardware).

>  Compared to the color of an IMB PC, with which the Visual had hoped to compete, the green-on-black monochrome graphics were probably not considered extended.

Some terminals were able to display text in color. You must not mix
color with "graphics" displayed with pixels.

>  I am very much interested to see what DR GRAPH could do, which, as you know, came bundled with the Visual.

DR Graph is just the name of a program. It is based on a portable
graphics system called GSX-80. What it can do depends on the output
device, and its corresponding "driver". For instance, the Epson QX-10
had a 640x480 screen. Most were sold with a Green-on-Black screen. But
I also have one 8-colors screen. This was the screen, so not lasting.
The best printer driver was the one for the Epson FX-80 which happened
to be the standard printer of the IBM PC, at the origin... Personally,
I used a compatible one named Epson FX-850, which was better, but,
since it was the IBM PC standard, there were lots of printers
compatible with it, even laser printers, at the beginning, when they
appeared. My best long-term storage output device was the Hewlett-
Packard HP-7470A graphics plotter: 10,000x3,000 pixels in 8 colors!
For years, there was nothing better available.

So, even with DR Graph, what you will see will depend on the
resolution of the output device, and its associated driver. People are
always in a state of shock when they see DR Graph running with the CGA
or EGA driver: they have forgotten how limited the hardware of the IBM
PC was. When you run DR Graph with the VGA driver of John Elliott,
suddenly it becomes "normal", since people are used to his resolution.

> If you have time, i'd be interested to know what is keeping you so busy these days.

As explained recently, I moved. During 4 months, nothing advanced.
Then, suddenly, before the Summer vacations, in a month, the
electricity, water, etc were fixed. There are still a few things to do
before I am satisfied. I also have now one thousand square meters of
lawn; so will probably use the lawn mover Monday. All my stuff is
still packaged in cardboard boxes. Regarding computers, I only have
this Internet computer: a 10-years old portable running at 500-MHz
with a hard disk almost full.

John Crane

unread,
Aug 19, 2012, 12:38:59 PM8/19/12
to
On 08/19/2012 01:32 AM, Mr Emmanuel Roche, France wrote:

> Yes, indeed, if you did not follow the "microcomputer revolution" from
> its beginning. The fundamental thing to understand is that computing
> is a 2-face thing: hardware and software, and, unfortunately, you can
> do nothing (software wise) if the hardware is not working. Me, I live
> in the countryside, on the Atlantic Coast. During one year, I searched
> for an electronician to take care of my collection. In my ads, I only
> mentioned the specifics of the Amstrad PCW, one of the simplest micro
> ever built: one CPU and 5 integrated circuits. Each time I met a so-
> called technician, they refused, upon learning that the CPU was a
> Zilog Z-80, to have a look. In the end, I was obliged to make a 500
> kilometers round-trip, to another Old Timer who is a real technician,
> with an oscilloscope and a collection of old components.

Emmanuel,

Look at it as an opportunity to learn something new. A 6 chip card is
not that difficult to repair. Buy a book, buy some tools, study a bit
and then dig in. We're hobbyists. So - DIY.


--
-John
email: john_crane_Z@yahoodotcom
where: Z=12*5-1


Mr Emmanuel Roche, France

unread,
Aug 19, 2012, 2:03:52 PM8/19/12
to
John Crane wrote:

> Look at it as an opportunity to learn something new.
>  A 6 chip card is not that difficult to repair.  Buy a book,
> buy some tools, study a bit and then dig in.
>  We're hobbyists.  So - DIY.

In my humble experience, to be good at any thing, you must do it all
the time. Personally, I am not a hardware type. My Father once told me
that, during World War II, when there was nothing: no paper, no news,
no radio, no television, etc, he was so bored that he was spending the
week-ends dismounting and remounting his bicycle. He was surprised
that I did not the same. Me, I am of another kind. One day, I
encountered the teacher who took care of me when I was less than 10
years old, and she told me that I was standing apart from the rest of
the class, since I was frozing from time to time and thinking. My
Grand-Father, who was a business man, met thousands of customers and
was a great psychologist. It is him who branded me "the intellectual
of the family". I am simply not a blue collar. 3 times, I worked in a
factory: each time, they told me that I was a good element, but that I
would never be a worker. So, software, which cannot be touched, is
perfect for me. As I already wrote several times, I usually spend a
lot of time thinking what to do. From time to time, I see how to do
something, rush to my computer, and produce quickly a prototype in
BASIC.

In fact, not only was Amstrad famous for using the absolute minimum of
components, but I also have the "Test PCB" board which tests all the
components of the motherboard... (One of my programming projects was
to disassemble its ROMs. However, I only have the badly-translated
version of the manual. I was waiting for the original English manual
to appear, but it seems to have disappeared.)

Finally, we are now hobbyists because there is no market for CP/M.
Many "data loggers" and POS (Point Of Sales) portable data entry
devices are still running under CP/M, but their users only see the
menu of the programs, so have no idea that they are still using a Z-80
CPU.

Mr Emmanuel Roche, France

unread,
Aug 23, 2012, 4:18:17 AM8/23/12
to
The Visual 1050 disks.

"Still" sent me the disks provided with the Visual 1050.

Yesterday evening, during 4 hours, I have examined one by one each of
the files.

So, in short:

- Disk A contains all the standard CP/M Plus files needed for day-to-
day work.

("CP/M Plus" was the name this OS was known in Europe. Previously, it
was named "CP/M 3" in the US, but was a flop, so the Marketing
Department renamed it "CP/M Plus" and this is the name that stuck.)

There are, of course, some Visual-specific files, like

CONFIG.COM (fine tuning of keyboard, screen, and serial port)

COPYSYS.COM Version 1.1 (Most implementations of CP/M Plus that I
have encountered, during those last 20 years, did not have it. This
version of CP/M Plus seems to follow the official DRI manuals very
closely.)

DISKCOPY.COM ("CP/M 3 DISKCOPY V1.0" -- First time that I see it.)

FMTDISK.COM V1.0 Diskette Format Program, Visual Technology Inc.
("Double-sided disk support not yet implemented")

MENU.COM and HELPFILE.CVT (A kind of GUI using Function keys. For some
unknown reason, the help file is not named MENU.HLP. This GUI replaced
the CCP when booting with the provided PROFILE.SUB file. Intended for
"business users".)

It took me some time to understand that the "Utility Manager"
mentioned in the HELPFILE.CVT was refering, in fact, to MENU.COM.
Seems a late change of name. (Never seen a CVT file before.)

SETDRIVE.COM V1.1 (1: Visual 1050, 2: Kaypro, 3: Amigo Single-Sided,
4: Rainbow, 5: DEC VT180. No author mentioned. Sets the drive to read
disks from those other CP/M systems.)

TTY1050.COM Visual Technology, Inc. Version 1.1, Teletype Emulator
Program. (Provide ONLINE and COMMAND modes, and Display parameters,
Program message strings, open a Send file, Exit without disconnecting,
Override last received XOFF, Exit with disconnecting, Speed (300 to
19200), Parity, and Stop bits and data bits. Also use Function keys.
So, transfer files or messages. It is curious that, in 1984, they did
not provide XMODEM, instead.)


- Disk B contains the full source code of the BIOS of the Visual
1050...

As far as I know, this is the only available source code of a CP/M
Plus' BIOS! If it had been available 20 years ago, or in 2002, 10
years ago, when I reacted to George Czerw, a lot of things could have
been different. 10 years ago, I had all my 8-bit micros around me.
Now, everything that I have is packed in cardboard boxes... What a
pity!

This BIOS is small and, so far, I have see nothing about graphics but,
since it is the only one (and seems to work), it is invaluable!

Only supports 4 devices:

@ctbl db 'DISPLY' ; device 0, 6502 CRT
db mb$in$out
db baud$none
db 'RS232 ' ; device 1, RS-232 port
db mb$in$out+mb$serial+mb$softbaud
db baud$1200
db 'KB ' ; device 2, Keyboard
db mb$input+mb$serial
db baud$1200
db 'LPT ' ; device 3, Centronics parallel printer
db mb$output
db baud$none
db 0 ; table terminator

For some unknown reason, they chose DISPLY for CONIN, and KB for
CONOUT, and LPT for CEN... (Some BIOSes use SER for RS-232, and PAR
for Centronics.)

There are several mentions of the "Ontel Amigo":

; PORTS.LIB
; I/O Port addresses for Visual 1050
;
; Copyright (c) Visual Technology, 1983
;
; Revision history:
; 01 (IRN) Initial- based on cpm/3 for Ontel Amigo

So, this is Version 2 of a CP/M Plus BIOS. It should be reliable.

Someone who should know about this mysterious "Ontel Amigo" (Wikipedia
has never heard of it) should be Ike Nassi, who was:

1982-1983: Ontel Corporation -- Vice-President of Engineering
1983-1984: Visual Technology, Inc. -- Vice-President of Software

That is to say: just at the same time.

Continuing my search, I finally found something on the Amigo, the
predecessor of the Visual 1050:

"The Amigo was a system being evaluated by Ontel during 1981 as a new
cost reduced system for the very low end. The Amigo was designed
originally by a company in Asia whose name I have now forgotten. Ontel
bought the design and performed some minor modifications. Initially
manufactured in Woodbury it was a textbook Z80 design with Intel 82XX
peripheral chips, very similar to the Ontel architecture except
designed for lowest cost. The system was based on the then advanced
Zilog Z80 so it was capable of text editing using the single chip DMA,
no stand alone DMA controller board was needed." Bob Hanrahan,
September 2005

I also found a mention of Visual Tech.:

"Around 1982 the company was sold to Visual Technology, a Boston based
company who eventually closed the doors on the Woodbury Long Island
facility."


- Disk C is the programming disk.

It contains the CBASIC Version 2.8 with its CRUN. Someone, the 21
September 2005, published a "CBASIC 2.8 = CBASIC-86 1.00" thread in
the comp.os.cpm Newsgroup containing a DIFFCBAS.TXT file listing all
the "Differences between the 8080 and 8086 implementations of
CBASIC".

This disk also contains one

Demo Graphics Script Execution Program

(Use the IOBYTE of CP/M 2...)

Written in MBASIC 5.21 (EXSCRIP5.BAS)
Compiled with BASCOM
the 29 October 1983 at 11:39 A.M.
by Keith K. Davison

So, S files stand for "Script" files. By the way, I only saw a Visual
1050 manual, so far, and it was pretty elementary. Maybe this utility
is explained in a Visual manual? Else, with a word processor, one
could sort all the commands used (listed at the beginning of the
program), then write a short doc, so that Visual fans could create
their own demos at will. I just wonder how the PIC files were created?


- Disk D is WordStar Version 3.30 (personally, I prefer WordStar 4,
which is more powerful and had laser printer drivers). It was the
standard for CP/M 2.2.


- Disk E contains MultiPlan Version 1.06 with INSTALL ! (I am sure
that, in my CP/M days, I used Version 1.05, and without INSTALL, so
this one is really interesting.)


- Disk F contains DR Graph Version 1.01P dated 6 September 1983. I had
a quick look to its screen driver, thanks to the DUMPPRL.BAS program
which was published the 8 March 2003 in the comp.os.cpm Newsgroup, in
the "Running MP/M-II on the net" thread. It is quite small. I should
have no problem disassembling it, if needed.

Mr Emmanuel Roche, France

unread,
Aug 23, 2012, 5:41:08 PM8/23/12
to
Ok. This evening, I have spent 4 hours checking what is available on
the Web site:

http://www.metabarn.com/v1050/

I followed the links one by one.

I was *VERY* surprised how little there is available.

For example, 20 years ago, I had:

CP/M Plus User's Guide
CP/M Plus Programmer's Guide
Programmer's Utilities Guide for the CP/M Family of Operating Systems
(mentioned in the "Foreword" of the previous guide!)
CP/M Plus System Guide

None of them, and particularly the PUG, are to be found...

So, how are you supposed to read the official DRI documentation?

I only saw advertisements. Apparently, nobody wrote any article about
this system. (I have dozens of articles about my Epson QX-10...)

Continuing my systematic checking, I encountered: "Dave Dunfield has
some additional pictures." So, I checked them. And what do I see?

http://www.classiccmp.org/dunfield/miscpm/h/v1050d.jpg

There was a "DR Graph and CBASIC" binder for the Visual 1050! Finally,
something interesting! Where is it? What does it contains?

Arriving at "Documentation", I glanced them head to bottom.

"Visual 1050 User's Guide" is curious. Apparently, this is the only
paper containing information for programmers (in an Appendix) but it
contains pages after pages of "What is a file?" and "How do you name
one?" etc. It should have been cut in 2: a "User's Guide" and a
"Programmer's Guide".

"Visual 1050 Programmer's Technical Document" is badly named. Should
have been "System Guide". Couldn't find anything interesting.

Under the heading "CP/M 3.0 Operating System", I found "The source
(code) to the TTY1050 communications program." Finally, something
interesting! But it has nothing to do with CP/M Plus...

Arriving at "ROMs", I had a look to the Boot ROM which does a lot of
checking of the hardware.

The next one, "The 6502 assembly source code listing for the graphics
firmware." is probably what the "Programmer's Technical Document"
names "V1050 Display Firmware Listing"? (Why don't they follow the
official names of the original documentation?)

While scanning it, I finally found something interesting: some
comments about the escape codes. In English, this gives:

ESC [ = COMMAND STRING INTRODUCER
"A" ;CURSOR UP?
"B" ;CURSOR DOWN?
"C" ;CURSOR RIGHT?
"D" ;CURSOR LEFT? (BACKSPACE)
"K" ;ERASE IN LINE COMMAND?
"J" ;ERASE IN DISPLAY COMMAND?
"m" ;SELECT GRAPHIC RENDITION COMMAND?
"H" ;CURSOR POSITION COMMAND?
"f" ;HORIZONTAL & VERTICAL POSITION COMMAND?
"L" ;INSERT LINE COMMAND?
"M" ;DELETE LINE COMMAND?

ESC < = A PEEK COMMAND
ESC Lower Case C = A RESET COMMAND

ESC = = A NON-PREFERRED CURSOR POSITION
CURSOR POSITION IN THE FORM Y+1FH X+1FH
(X AND Y IN THE RANGE 1 TO 80 AND 1 TO 25)

ESC ( = A SET G0 FONT COMMAND
ESC ) = A SET G1 FONT COMMAND
ESC > = A POKE COMMAND
ESC ; = A MISCELLANEOUS COMMAND

ESC ? = A GRAPHICS COMMAND
"L" ;LINE?
"M" ;MARKER?
"T" ;TYPE?
"C" ;CURSOR?
"O" ;ARC?
"W" ;WRITE (POKE)
"R" ;READ (PEEK)

ESC : = USER COMMAND

It is only now, as I write this, that I realize that those tables are
explained in high-level in the above Appendix... So, apparently, there
is only this Appendix for programmers.

Still in this "6502 ROM Listing" (another name mentioned), I found the
following:

;INITIALIZE THE DIFFERENTIALS FOR THE DDA ALGORITHM.

Well, It is well known, now, that the Bresenham Algorithm is better
than the DDA.

Continuing reading this listing, I found:

; I. NASSI SEPT 21, 1983

That is to say: the man mentioned yesterday...

;11/01/83 ADDED KEITH DAVISON'S ESCAPE SEQUENCES.

; THE NEXT 32 CHARACTERS ARE GARBAGE CHARACTERS...
; (THIS IS WHERE KEITH DAVISON'S ESCAPE SEQUENCES GO)

And, now, the author of EXSCRIP5.COM ! The world is small! So, his
"script interpreter" is non-portable, since the BIOS needs to support
it, and it does this by escape codes...

Speaking of escape codes, the 3 following are, apparently, not
documented in the official doc...

;SEND ONE SOFT CHARACTER - 12 BYTES, TOP TO BOTTOM.
; ESC > > 1 12-BYTES-OF-DATA.

;WRITE A HORIZONTAL STRING OF SOFT CHARACTERS, 12 BYTES EACH, TOP TO
BOTTOM.
; ESC > > H #-SOFT-CHARS THAT-BY-12-BYTES-OF-DATA
;0=256 BYTES !

;DOWN LOAD AN INTEL HEX FORMAT FILE INTO USER RAM.
; ESC > :

Continuing, I arrive at "Here are some notes for building your own ROM
images from source." Ok.

"CP/M ASM will generate an Intel HEX file as output. You cannot use
HEXCOM to convert this to binary since it expects a load address of
0x100. I am not sure if the ASM Intel HEX format is non-standard, but
I had a hard time finding a tool that would properly convert to
binary. Most I tried would fail. I wound up using a small utility
written by John Elliott called 'load'. The source code for load is
here. Note that I did need to delete out the extraneous ^Z that pad
out the CP/M 128-byte records (these remain when copying files off CP/
M images using cpmcp)." Richard Bramante

Hahaha!

1) Use the right tool: HEXBIN, not HEXCOM! COMmand files load at
0100H, the start of the TPA, while you want to create a BINary file
loading at 0000H, the start of a ROM... QED! Personally, I use a
HEXBIN.BAS program, since it is portable anywhere a BASIC can run.
Else, if you are in a hurry, the source code of HEXCOM is available,
and the change is elementary (replace DW 0100H by DW 0000H). Don't
forget to name your masterwork HEXBIN.COM...

2) "I am not sure if the ASM Intel HEX format is non-standard" Hahaha!
I can assure you that ASM generates perfectly standard Intel HEX
files! It is Gary Kildall who wrote, previously, the Intel 8080
assembler...

3) Normally, under CP/M, file names are written like LOAD. This way,
at a glance, you know if you are referring to a file or something
else.

4) No need to "delete out the extraneous ^Z": my program does it
automatically. It is the standard "CP/M End-Of-File" mark...

Back to the Web site. At the bottom, I read:

"I wrote a short program using PixelToaster to display the default
1050 font set. The source code (C++) includes a C array of the bitmap
definitions (8x12) for this font which is potentially a handy
reference for creating your own fonts for the 1050 (the 1050 uses a
soft font so you can program your own definitions into the display
firmware via special escape sequences. See Appendix B of the Visual
1050 User's Guide for details.)" Richard Bramante

The problem with your program is that it displays characters this way:

[001]
0x00 ........
0x00 ........
0x20 ..X.....
0x20 ..X.....
0x20 ..X.....
0x20 ..X.....
0x20 ..X.....
0x00 ........
0x20 ..X.....
0x00 ........
0x00 ........
0x00 ........

That is to say: it uses 13 lines to display only one character.

In addition, this display is worthless, since you cannot re-assemble
it! 5 minutes of work, and you could have displayed something like
this:

;
;-------------------------------- 21h = !
;
DB 00010000b ; ...O....
DB 00010000b ; ...O...
DB 00010000b ; ...O....
DB 00010000b ; ...O....
DB 00010000b ; ...O....
DB 00010000b ; ...O....
DB 00010000b ; ...O....
DB 00010000b ; ...O....
DB 00000000b ; ........
DB 00000000b ; ........
DB 00010000b ; ...O....
DB 00010000b ; ...O....
DB 00000000b ; ........
DB 00000000b ; ........
DB 00000000b ; ........
DB 00000000b ; ........

(comp.os.cpm Newsgroup, 2 April 2003, "Better font for CP/M-86 Plus"
thread)

This "columnar" display is only useful when you want to know the
values making *ONE* character.

But, in general, you are more interested in seeing as many characters
as possible, next to each other.

20 years ago, on my Epson QX-10, I had a BASIC program displaying at
will either the above kind of stuff or 8 characters side-by-side.

Why 8? Each char is 8 pixels wide. There are 80 columns on the screen
and the paper. WordStar does not like lines beginning with a ".", that
it interprets as a "dot command". So, there was a space, followed by
the 8 "." or "O" of a character, repeated 8 times. 1 + 8 * 8 = 72. So,
those 8 characters were fitting without any problem inside a standard
80-columns line.

I still have a printout of the font of the QX-10, but I have no idea
where is the program. I just remember that it started by 2 equates:
height = 16 and width = 8, so has to be able to work on any font.

Well, this will be all for tonight. As they say: "Nice try, but could
do better..." (especially since the "6502 ROM Listing" contains the
source code of the fonts...)

Conclusion: the CP/M Plus manuals are missing, the Visual 1050 was
provided with CBASIC, DR Graph, MultiPlan, and WordStar: all those
manuals are missing. The 7 MegaByte "Visual 1050 User's Guide"
contains an appendix containing a few pages of informations for
programmers. That's all. That's not much.

V1050

unread,
Sep 4, 2012, 7:26:27 AM9/4/12
to
Ok folks, V1050 enthusiasts,

thanks to Peter Schorn and Tony Nicholson i have been able to read and write to Visual 1050 format disks in SIMH. Each responded to emails, each with his own solution. First, you'll notice that there are two CP/M Plus emulations supplied with SIMH. One is called CP/M 3.0 and the other is called CP/M Plus. 3.0 appears to be Peter's project and uses .DSK and .IMD images, while Plus is Tony's contribution and uses .IMD images. What Peter did was accommodate the V1050 in the 'hard-drive' source code of SIMH/AltairZ80. You may notice that the last update for the source code reflects August 26 and will be able to see changes made in altairz80_hdsk.c for the V1050. This allows an uncompressed V1050 .IMD image disk to be attached (IE. in the start-up command file) to any or all of four 'hard-drives' like this:

attach hdsk0 V1050AW.IMD
attach hdsk1 V1050BW.IMD
attach hdsk2 V1050CW.IMD
attach hdsk3 V1050DW.IMD

In order, this enables:

read/write on drive I:
read/write on drive J:
read/write on drive K:
read/write on drive L:

Notice i said 'uncompressed' .IMD image disk in order to read AND write. Compressed .IMD files will be read-only. You see, Dave Dunfield's .IMD images will generally be compressed out-of-the-box. They are uncompressed using his 'IMDU' utility. Whether compressed or not, they go by the same .IMD extension so beware. I used Dave's utilities running in DosBox on my Windows7 platform to uncompress my .IMD images using this kind of command:

imdu v1050a.imd v1050aw.imd /e

Very easy. And as you may know, his utilities will also make .DSK format images out of the .IMD images for use with the MESS emulation project. So far, SIMH only deals with V1050 images in .IMD format under both of these solutions that i'm describing.

Tony's solution was kind of interesting because it involved hacking into an .asm file (FDDISK1.ASM) while running CP/M and recompiling CPM.SYS using the GENCOM facility originally supplied with CP/M for these kinds of purposes. I actually used the ED editor to alter the .asm file, and used a SUBMIT file crafted by Tony to accomplish all of the several assemblies and links needed to put CPM.SYS together. I'll include the solution in Tony's own words here since he explains it better than i could ever how and why it was done this way. Notice that this solution still requires .IMD disks to be uncompressed in order to be read AND writable.



BEGIN TONY ------------------------------+

Still,

Do you want to boot up a V1050 environment within the Altairz80
emulator? Or do you want to be able to read and write to V1050 format floppy disk images in IMD format using SIMH Altairz80?

The first is not possible unless you write and include additional
routines inside SIMH Altairz80 that emulate the V1050's hardware -including ROMs, video controller, disk controllers etc.

If you only wish to read/write V1050 format floppy disk images, then this is possible if you modify the CP/M-Plus BIOS routines to support the V1050 disk format on one of the already included in SIMH Altairz80 floppy disk controllers. Then you can create a bootable CP/M-Plus system disk (assemble new bios components, link them into a BIOS page relocatable form, and run GENCPM to create new CPM3.SYS system image)that can access the IMD format disk images under Altairz80.

My S-100 hardware has a single floppy disk controller that supports both eight-inch, and 5-1/4" floppy drives. Since you have the CP/M-Plus files that I sent to Peter Schorn, you can boot using the CPM3BK start-up command file with Altairz80 and look at the BIOS files in user area 1 on the A: partition of the hard drive.

I did not include the support for 5-1/4" disks in the bootable system, so you will need to edit the FDDISK1.ASM driver code so that it can recognize the V1050 disk format (5-1/4", 80 track, 512 byte sectors with 10 sectors per track skew of 1).

I just did this myself by hacking code that detects 512 byte sector single sided disks.

Using a CP/M text editor on FDDISK1.ASM, change the disk parameter block at label dpbd3

from
dpb 512,15,77,2048,128,2
to
dpb 512,10,80,2048,128,2

Change the skew for 512 byte sectors at label xltd2

from
skew 15,4,0
to
skew 10,1,0

Assemble and link a new CP/M-Plus system file using

1A> asm-bk3
..
1A> lnk-bk3 auto display

Copy the new system file to the boot floppy as CPM3.SYS

1A> pip i:cpm3.sys[g0]=c3bksimh.sys

and restart SIMH Altairz80 with one of the V1050 IMD disk images

<CTRL-\>
Simulation stopped, PC: 0FE8A (AND 02h)
sim> att disk1a2 V1050A.IMD
Disk write-protected because the image contains compressed sectors.
Use IMDU to uncompress.
sim> b disk1a0
..
A>dir k:
K: SET COM : PIP COM : DATE COM : HELP COM : SID COM
K: INITDIR COM : GET COM : PUT COM : SAVE COM : DIR COM
K: ED COM : RENAME COM : DEVICE COM : ERASE COM : SETDEF COM
K: SUBMIT COM : TYPE COM : SHOW COM : HELP HLP : SETDRIVE COM
K: TTY1050 COM : COPYSYS COM : FMTDISK COM : DISKCOPY COM : MAKEDATE SUB
K: MAKEDATE DOC : MENU COM : HELPFILE CVT : CONFIG COM : FRONTEND SUB
K: USER TXT : PROFILE SUB
SYSTEM FILE(S) EXIST
A>k:pip
K:PIP COM
CP/M 3 PIP VERSION 3.0
*

A>

END TONY ------------------------------+

It worked for me first try. I thanked Tony and told him how quick and easy it was. In case anyone doesn't think this was good work, here's Tony describing the ultimate solution:

BEGIN TONY ------------------------------+

That's great. As I said - it was a "hack". If I were doing it
properly, I would include more supported disk types rather than
overwrite one of the 8-inch disk formats - but this would have
involved more changes to the routines in FDDISK1.ASM to sense the
difference between eight-inch and 5-1/4-inch formats.

END TONY ------------------------------+



So there you have it, a couple of solutions that get the job done.

Now that i can read and write from V1050 disk images, i notice that there are certain kinds of programs that don't render characters to the screen properly, programs such as Wordstar 3.3., at least not under the normal Windows command window schema. The FAQ at SIMH suggests opening up a Telnet session and looping back to localhost (127.0.0.1) to exploit Telnets built-in emulation of a VT100 monitor. But even though i've confirmed that Telnet works on my Windows 7 system, i cannot get it to loop back to local host, even with firewalls down. So i've turned my attention to Cygwin, Cygwin/X and xterm and have it installed. However, i am a total newbie when it comes to Unix/Linux and don't have a clue how to run SIMH/AltairZ80 in the Cygwin environment so as to take advantage of its terminal tendencies toward a standard VT100. So i have tried to mess with installing Wordstar to other types of terminals, hoping one would match up with the native Windows command window, or whatever it is that SIMH runs in under Windows. No luck so far. I would need to know a whole lot more about the windows command window to custom install Wordstar to match up with it. So, for graphical exploits, i turn to MESS which renders a near perfect emulation of the V1050's terminal graphics qualities because of its reliance on ROM dumps, or at least ROMS built from original listings. But it is not, imo, the best development environment. For one thing, using cpmtools, i can copy files from V1050 disks to the host environment, but not the other way around. Yes, i can get files to go from the host environment to the V1050 .DSK image, but they will show up empty, even files that i have previously copied from the V1050 .DSK! I have not clue what is the problem. So in a very round-about way, i will be routing through the SIMH excellent ability to read files in from the host environment. Then i will need to use IMDU to convert the .IMD images to .DSK format for the MESS emulation. It would be so much easier if SIMH handled V1050 in .DSK format like MESS, and if cpmtools could read host files into .DSK images as easily as SIMH. In an ideal world, i could get SIMH to emulate the terminal graphics abilities of the V1050 which included 600 x 300 6502 driven pixels. But that's an exploit for far down the road from here...not within my technical abilities. Meanwhile, Peter and Tony have worked a couple of small miracles for me. Thanks very much!

~Still

Al Kossow

unread,
Sep 4, 2012, 10:23:50 AM9/4/12
to
On 9/4/12 4:26 AM, V1050 wrote:
> I used Dave's utilities running in DosBox on my Windows7 platform to uncompress my .IMD images using this kind of command:
>

IMD is pretty simple to decode to raw sectors.
see http://bitsavers.org/bits/Tektronix/8562/tools/imd2raw.c

Mr Emmanuel Roche, France

unread,
Sep 4, 2012, 1:03:22 PM9/4/12
to
V1050 wrote:

"Now that i can read and write from V1050 disk images, i notice that
there are certain kinds of programs that don't render characters to
the screen properly, programs such as Wordstar 3.3., at least not
under the normal Windows command window schema. The FAQ at SIMH
suggests opening up a Telnet session and looping back to localhost
(127.0.0.1) to exploit Telnets built-in emulation of a VT100 monitor."

This is strange. It has been years since I last used SIMH, but I
simply cannot think that WordStar would not run under it. So, I made a
search on "Schorn SIMH Wordstar", and found:

"Disk C: has Wordstar the leading word processing software at its time
and VEDIT another screen oriented editor."

http://www.schorn.ch/ialtairhd.html

So, I would suggest that you copy this version, and see if it runs
correctly on your system. Peter does not say if it is Version 3 or 4.
Version 3's WINSTALL is documented at:

http://www.bitsavers.org/pdf/microPro/Wordstar_3.3/Wordstar_3.3_Installation_Manual_1983.pdf

Apparently, there is no separate PDF for the WINSTALL program of
Version 4: You will probably be obliged to download the full manual.

If you find a copy of WordStar that works for you, write down its
escape codes. But remember that, if you use an emulator, those escape
codes will probably produce effects on the emulator, so will be
different from the ones really used on your Visual 1050. Some CP/M
installation programs allowed you to save those codes, so you could
port them from machine to machine.

If I have well understood, you use another emulator, MESS, to have a
good emulation of the screen of your Visual 1050. This way, you will
soon understand what is meant by "portable". During the last 12 years,
I published about 20 programs: none of them used an escape sequence,
not even a CLS!

Wayne Warthen

unread,
Sep 4, 2012, 4:30:30 PM9/4/12
to
In case any of you are interested, I came into possession of a pristine Visual 1050 over the weekend. It came with a full set of system disks still in the original sealed wrapper. I imaged the full set with ImageDisk before they were used at all, so the images represent exact duplicates of the original disks distributed.

Additionally, these appear to be more recent versions than the ones that are currently posted on Dave Dunfield's site. Specifically, Dave has BIOS v1.1. These are BIOS v1.3.

I am going to see if I can get these posted on Bitsavers.

Thanks,

Wayne

V1050

unread,
Sep 4, 2012, 4:44:45 PM9/4/12
to
On Tuesday, September 4, 2012 10:03:22 AM UTC-7, Mr Emmanuel Roche, France wrote:
> So, I would suggest that you copy this version, and see if it runs
>
> correctly on your system. Peter does not say if it is Version 3 or 4.
>
> Version 3's WINSTALL is documented at:
>
>
>
> http://www.bitsavers.org/pdf/microPro/Wordstar_3.3/Wordstar_3.3_Installation_Manual_1983.pdf
>
>
>
> Apparently, there is no separate PDF for the WINSTALL program of
>
> Version 4: You will probably be obliged to download the full manual.

Emmanuel, thanks for the link to the PDF install manual. I did not have that and will check it out.

It looks like someone (Peter) had made a Wordstar.DSK available to SIMH that runs in the CP/M 3.0 emulation. It runs Wordstar version 4 which uses 'wschange.com' as the latest greatest 'winstall.com'. It offers perhaps 25 different terminals to choose from. I tried several, including of course the VT100. Nothing works in my Window 7 command window (not sure if it's different from any other Windows command window). So now i must try a custom install, however, to do that i need to know a lot more about the Windows command window as a pseudo-terminal. So i started googling for information but have not yet arrived at the proper information for a solution.

> If you find a copy of WordStar that works for you, write down its
>
> escape codes. But remember that, if you use an emulator, those escape
>
> codes will probably produce effects on the emulator, so will be
>
> different from the ones really used on your Visual 1050. Some CP/M
>
> installation programs allowed you to save those codes, so you could
>
> port them from machine to machine.

I tried also Wordstar 3.3 found on a Visual 1050 disk using Tony's CPM Plus solution. No go. So i used WINSTALL to change the terminal to DEC VT100 and still no go. I really don't know what the Windows command window requires to be able to render text anywhere on the screen. I am to find out.

> If I have well understood, you use another emulator, MESS, to have a
>
> good emulation of the screen of your Visual 1050. This way, you will
>
> soon understand what is meant by "portable". During the last 12 years,
>
> I published about 20 programs: none of them used an escape sequence,
>
> not even a CLS!

Of course, i would be most interested in learning how you were able to accomplish such portability without even a CLS! On the V1050 i found out the clear screen code is FF which has a decimal number of 11. To implement it in CBasic i used PRINT CHR$(27)+CHR$(11).

I myself can't believe that Wordstar cannot render in a Windows command window. There must be a way. I noticed that Howard Harte has implemented some kind of monitor with one of his SIMH projects for the SCP 86-DOS project. Apparently it will emulate a Cromemco monitor. I have yet to try to see if it will render Wordstar correctly but do know that Wordstar 3.3 includes a Cromemco monitor among it's list of options.

More later...

Michael C Finn

unread,
Sep 4, 2012, 10:07:37 PM9/4/12
to
"V1050" wrote in message
news:318486ed-b4bd-48ae...@googlegroups.com...

> It looks like someone (Peter) had made a Wordstar.DSK available to SIMH
> that runs in the CP/M 3.0 emulation. It runs Wordstar version 4 which
> uses 'wschange.com' as the latest greatest >'winstall.com'. It offers
> perhaps 25 different terminals to choose from. I tried several, including
> of course the VT100. Nothing works in my Window 7 command window (not
> sure if it's different
> from any other Windows command window). So now i must try a custom
> install, however, to do that i need to know a lot more about the Windows
> command window as a pseudo-terminal. So i
> started googling for information but have not yet arrived at the proper
> information for a solution.


> I tried also Wordstar 3.3 found on a Visual 1050 disk using Tony's CPM
> Plus solution. No go. So i used WINSTALL to change the terminal to DEC
> VT100 and still no go. I really don't know what the > Windows command
> window requires to be able to render text anywhere on the screen. I am to
> find out.

I use Simh by attaching the SIO console port to telnet port 23 and then
using a telnet program such as Putty, for terminal emulation. I've been
using ZCPR34 with ZSDOS and a VT100 termcap and have no problems with cursor
movement.

As far as the Win 7 command window goes, I don't think you will be able to
use it to emulate VT100 escape sequences. Back before WIN XP, earlier
versions could use ansi escape sequences if ANSI.SYS was installed as a
device driver. The WIN32 console depends on Console API's to handle this
now. A program is suppose to use these API's for what the 16 bit legacy
ANSI.SYS driver did. I once got a legacy DOS program working in a WIN XP
console window by using a freeware replacement for ansi.sys called nansi but
I haven't checked to see if it would work on Windows OS later than XP. If
you do a Google search, you will see references to ansicon, a more recent
freeware program that might work for you if you really want to stick with
the Windows console window.

But I recommend just attaching the Simh SIO to telnet port 23 and using a
good telnet program. See instructions in the FAQ at
http://www.schorn.ch/altair_10.html#q2

Mr Emmanuel Roche, France

unread,
Sep 5, 2012, 2:08:00 AM9/5/12
to
V1050 wrote:

>  Nothing works in my Window 7 command window (not sure if it's different from any other Windows command window). So now i must try a custom install, however, to do that i need to know a lot more about the Windows command window as a pseudo-terminal.  So i started googling for information but have not yet arrived at the proper information for a solution.

"Windows command window as a pseudo-terminal"... I wondered if this
famous "Windows command window" was not the problem? I then read the
message from Michael C. Finn and think that the problem is that it has
no "pseudo-terminal" code... This would explain that no set of escape
codes work for you.

Since his solution works for him, I would advice to try it.

Else, the AUTOEXEC.BAT file used to load ANSI.SYS when one of the
horrors of Microsoft booted. (It is how I create a RAMdisk on my W98SE
system.)

>  On the V1050 i found out the clear screen code is FF which has a decimal number of 11.  To implement it in CBasic i used PRINT CHR$(27)+CHR$(11).

Hahaha! Error! The above code sends ESC FF to the screen!

(By the way, "Basic" is an acronym, so should be written "BASIC".)

According to the Escape Sequence Appendix (Appendix B) in the "Visual
1050 User's Guide",

> FF 0CH Form Feed
> Move the cursor to the beginning of the top line, erase the entire screen, and
turn off all the attributes.

and

> ESC 1BH Escape
> This character signals the start of an "escape sequence" which will execute an
extended command. The characters immediately following the ESC
character
determine the specific type of command, and may include command
parameters, as
required. See the list of escape sequences for each extended command's
format.

Both are "control characters" that don't show on screen (or paper, at
the origin). But they are different. The doc of each system was
listing the "escape codes" implemented. The IBM Clown used "ANSI
escape code", which had many ESC [ commands. So, a dump of a program
was enough to tell if it used ANSI escape codes.

There are other "control characters" besides ESC. The 2 most common
are CR and LF but, as I said, only the documentation of your system
will tell you precisely which ones are recognized.

For example, according to the above Appendix, the Visual 1050
recognizes:

BEL 07H Bell
BS 08H BackSpace
HT 09H Horizontal Tab
LF 0AH Line Feed
FF 0CH Form Feed
CR 0DH Carriage Return
SO 0EH Shift Out
SI 0FH Shift In
ESC 1BH Escape

So, 9 out of the 32 escape codes works. All the others should produce
nothing on your Visual 1050.

V1050

unread,
Sep 5, 2012, 4:27:53 AM9/5/12
to
Thanks Emmanuel for catching that mistake of mine. First of all, FF is decimal 12 and hex 0CH. Secondly, it does not require a lead-in escape of CHR$(27). I was posting in a hurry by memory, i apologize. But i have tested PRINT CHR$(12) after referencing the appendix in the V1050 User's Guide and it surely works to clear the screen and put the cursor at 'home'. Yes this is for 'form feed', so if it was explicitly directed toward the printer, it would probably have the effect of homing the cursor and putting a brand new fresh page ready-to-go.

V1050

unread,
Sep 5, 2012, 5:12:50 AM9/5/12
to
Congratulations Wayne!

Welcome to the happy family of V1050 owners (if you weren't already). This is my third attempt to reply to your message as i have been bogged down by disconnects all day. Google doesn't like it when i try to post when the internet connection is down and gobbles my messages up. Also, Google has gobbled two other messages as i've sat here composing. Must be some kind of time limit on an open reply window or something. Beware! Compose in notepad first! Cut and paste.

First i'd like to thank you for making images of those fresh disks out-of-the-box. I have a Visual 1050 serial number 2089 1050 with a bios version of 1.4. If you would like this version, just send me a couple of blank floppy disks (5 1/4" SSDD) and i will make you a copy as i don't yet have a way to make images. I am very curious how you are implementing Dave Dunfield's Image Disk utility in terms of hardware. Do you have an old PC running DOS with the right 5 1/4" floppy disk/disk controller? I don't have that or anything else yet.

Also, as you know, i am familiar with the previous owner of your machine. If i understand correctly, he is willing to make additional software diskettes available to you if you would be willing to make images of them. I think this would be a win-win for everybody. His father used a fleet of Visuals for business and gathered together quite a bit of additional software besides the bundled software, including a version of XTalk for communications. I am attempting to convert all of his Wordstar documents to the most modern format possible (ie. Word) with as much formatting still intact. I have set him up with all the software he needs to make images of all his disks via a bridge computer that has been used at least once before to talk to a 5 1/4" floppy disk in CP/M. It would be easier if he just pipped the disks and sent copies to you, who could then image them and upload them to bitsavers. From there i can finish the task of Wordstar conversion. In this way, anyone interested in the V1050 could have the maximum relevant software to run on it either through emulation or hardware. I have sent him enough foam to repair his keyboard enough to be able to pip disks, or at least the .COM binaries and their associated support files. As for documents, if he wants to keep those private, we will just continue with Plan A for me to help him with making his own images and/or manipulating individual files through various utilities. Either that or he can pip out any documents that might be considered private and we will deal with those with Plan A.

I hope that we can keep in touch and share knowledge, tips and tricks regarding this particular machine.

~Still

Message has been deleted
Message has been deleted

V1050

unread,
Sep 5, 2012, 9:56:05 AM9/5/12
to
A few days ago I checked out the appendix in the V1050 Users Guide about all these escape codes. They did not give any examples as to how they would be implemented in any particular language, either high or low. Of course, i wanted to know how to implement them with the BASIC that came bundled with the V1050, specifically 'CBasic'. Using the MESS emulation, i began to experiment with various calling conventions. The following examples are cut and pasted from code that actually works as advertized in the appendix. Comments are preceded by a backslash \.

\erase the entire screen
ERASE$ = CHR$(27)+"[2J"
PRINT ERASE$;

\home the cursor
HOME$ = CHR$(27)+"[H"
PRINT HOME$;

\erase the entire screen, home the cursor, turn off attributes.
CLEAR$ = CHR$(12)
PRINT CLEAR$;

\set up a function that makes it easy to place the cursor anywhere.
\FN.CA$ = ANSI invocation
\FN.CB$ = BINARY invocation
DEF FN.CA$(Row%,Col%)=CHR$(27)+"["+Str$(Row%)+";"+Str$(Col%)+"f"
DEF FN.CB$(Row%,Col%)=CHR$(27)+"="+CHR$(32+Row%-1)+CHR$(32+Col%-1)

\can use either ansi or binary methods.
\now, print "Hello World" starting at row 1, column 2.
\the semicolon ';' is BASIC syntax saying not to print a line feed and/or carriage return.
\that way, whatever string you print next will print at exactly this position.
PRINT FN.CA$(1,2);"Hello ";
PRINT FN.CB$(1,8);"World"


\draw a line across the middle of the screen, left to right.
\first set the position of an invisible graphics cursor. "C"
\the draw a line from whereever the cursor is to the destination. "L"
\uses strings, not integers
X$ = "1"
Y$ = "150"
X2$ = "599"
Y2$ = "150"
PRINT CHR$(27)+"?"+X$+";"+Y$+"C";
PRINT CHR$(27)+"?"+X2$+";"+Y2$+"L";

With these examples, it should be possible to implement any of the many escape codes revealed in the appendix of the V1050 Users Guide.





Wayne Warthen

unread,
Sep 5, 2012, 12:51:16 PM9/5/12
to
Hi Still,

The images are now posted on bitsavers at http://www.bitsavers.org/bits/VisualTechnology/1050/V1.3/ for anyone interested.

For imaging, I have a PC with a 3.5" floppy drive. I just added a 5.25" drive to it (typical TEAC FD-55GFR 1.2M). I boot into DOS using a thumbdrive and run ImageDisk to read or write any floppies. It is really not hard, you do need to have a PC with a 5.25" drive installed.

I definitely want the BIOS 1.4 disk copies. I will send you an offline email to get your address to send the blank floppies. Thanks for that offer! If OK, I can also image those.

I am very happy to image all the software that can be provided to me. It is very easy for me.

By the way, if making a copy of a disk for me to subsequently image, it is definitely best to use DISKCOPY rather than PIPing files. DISKCOPY will make sure I get system tracks and system files as well as preserving a true copy of the disks.

Obviously, it is also better to get as close to the "original" distribution disks as possible. Unfortunately, the typical situation is that the true original disks are not available in pristine condition. The closer you can get to that the better. It turns out that just booting off of the V1050 CP/M disk causes it to be written to (because of the autolaunching of the menu program). Regardless, I will be happy to get whatever is currently available.

Thanks,

Wayne

V1050

unread,
Sep 5, 2012, 3:08:20 PM9/5/12
to
On Tuesday, September 4, 2012 7:07:38 PM UTC-7, Mike Finn wrote:
> I use Simh by attaching the SIO console port to telnet port 23 and then
>
> using a telnet program such as Putty, for terminal emulation. I've been
>
> using ZCPR34 with ZSDOS and a VT100 termcap and have no problems with cursor
>
> movement.

Thanks very much for the tips and tricks.

I've downloaded Putty and am looking into it; if and when i get it all going i will report back here.


> As far as the Win 7 command window goes, I don't think you will be able to
>
> use it to emulate VT100 escape sequences. Back before WIN XP, earlier
>
> versions could use ansi escape sequences if ANSI.SYS was installed as a
>
> device driver. The WIN32 console depends on Console API's to handle this
>
> now. A program is suppose to use these API's for what the 16 bit legacy
>
> ANSI.SYS driver did. I once got a legacy DOS program working in a WIN XP
>
> console window by using a freeware replacement for ansi.sys called nansi but
>
> I haven't checked to see if it would work on Windows OS later than XP. If
>
> you do a Google search, you will see references to ansicon, a more recent
>
> freeware program that might work for you if you really want to stick with
>
> the Windows console window.

I checked out nansi and it looks like its for running in a DOS environment.

I checked out ansicon and had good luck right away.

http://adoxa.3eeweb.com/index.html

I can now work with Wordstar 3.3 and 4 and also Multiplan. No luck with Graph.com (Dr Graph) yet though.

Thanks very much for the tips.

Mr Emmanuel Roche, France

unread,
Sep 6, 2012, 4:52:31 AM9/6/12
to
V1050 wrote:

> I can now work with Wordstar 3.3 and 4 and also Multiplan.
> No luck with Graph.com (Dr Graph) yet though.

I am not surprised.

Just to use a word processor like WordStar, it took you several days
of trials.

Now, DR Graph was, by far, the most powerful "business graphics"
program ever made under CP/M. So, what are the probablities that it
would run outright from your first try under Windows?

You investigated PUTTY, ANSI, and ANSICON before finding one "driver"
enabling you to display mere characters...

So, what are the probabilities that Windows will display correctly
GSX-80 graphics, when Windows is not even compatible with MS-DOS?

For your information, the GSX-80 screen driver for the Visual 1050 is
named DD1050.PRL: it is you who sent it to me...

(I am afraid that you are suffering from "Information Overload".
That's why I did not react to you posting of Visual 1050 escape codes,
since a discussion would have meant trying all of them and,
apparently, the Appendix does not list all the forms possible. Also, I
much prefer to use an interpreter when dealing with escape codes meant
for screens. Because the Visual 1050 was provided with CBASIC (the
standard BASIC of Digital Research, and used by all the commercial
programs -- there were half-a-dozen books published dealing with
business programs programmed in CBASIC: the most famous was "General
Ledger"), it does not mean that you are obliged to use it. It was the
standard for commercial programs because it uses BCD arithmetic (so
there are not the rounding errors inherent in any PL using Floating-
Point arithmetic), and it is a compiler (so the user were getting the
INT file, not the source BAS file). But, to use a compiler, you need
to use a file editor, compile, test, etc. I much prefer to type a line
interactively, seeing on screen what the program produces. MBASIC was
the standard, back them. It is me who provided the last version, 5.29,
to the RetroArchive.Org Web site. But I prefer the BASIC that was
issued on the Amstrad CP/M Plus micros in Europe: Mallard BASIC, made
at the same time as the Visual 1050. It is available for CP/M and MS-
DOS.)

Whew! I hope that you will be able to digest all this information.

I suggest that, in the future, you tell us what you don't understand,
before going in all directions (escape codes, Windows terminal
emulators, GSX drivers).

V1050

unread,
Sep 6, 2012, 4:47:11 PM9/6/12
to
On Thursday, September 6, 2012 1:52:31 AM UTC-7, Mr Emmanuel Roche, France wrote:
> V1050 wrote:
>
>
>
> > I can now work with Wordstar 3.3 and 4 and also Multiplan.
>
> > No luck with Graph.com (Dr Graph) yet though.
>
>
>
> I am not surprised.
>
>
>
> Just to use a word processor like WordStar, it took you several days
>
> of trials.
>
>
>
> Now, DR Graph was, by far, the most powerful "business graphics"
>
> program ever made under CP/M. So, what are the probablities that it
>
> would run outright from your first try under Windows?
>
>
>
> You investigated PUTTY, ANSI, and ANSICON before finding one "driver"
>
> enabling you to display mere characters...
>
>
>
> So, what are the probabilities that Windows will display correctly
>
> GSX-80 graphics, when Windows is not even compatible with MS-DOS?

Emmanuel, the probabilities of being able to use GSX-80 driven graphics in SIMH would be higher if you helped me. ;) Indeed, i'd say that it is possible and highly probable if you did! I couldn't believe we could not display VT100 style escape codes in a Windows 7 command window. I just couldn't believe my only options were to Telnet back to 127.0.0.1 ...which was not working for me. My sheer determination to ask for help and search proved that we CAN when other either didn't care, or thought it was not possible.

We found out why a Windows 7 command window could not, or WOULD NOT display VT100 style escape codes that so much CP/M software accommodated and/or relied on.

Now, i would not try to force GSX-80 on a Windows 7 command window if technically that's not possible. Perhaps then it is possible in Puttytel or xterm. If neither of those, then it CAN be done with custom programming, after all this is 2012, not 1983! We do not have limitations.

> For your information, the GSX-80 screen driver for the Visual 1050 is
>
> named DD1050.PRL: it is you who sent it to me...

It's my understanding that you are taking this apart, breaking it down, understanding it, and documenting its function(s) as much as humanly possible. Yes, we want to use that information to maximize the extensibility of the physical machine. But there is currently an opportunity to use that knowledge to help the emulation world and those who don't have physical machines to have unlimited functionality AND convenience.

> (I am afraid that you are suffering from "Information Overload".

I don't deny that!


> That's why I did not react to you posting of Visual 1050 escape codes,
>
> since a discussion would have meant trying all of them and,
>
> apparently, the Appendix does not list all the forms possible.

I ask a lot from people in this forum. I explained how to use CBasic to implement the escape codes found in the Appendix as an effort to give something back and make this thread useful. After all, CBasic is what came bundled with the V1050 and as we well know, is an excellent high language.

Also, I
>
> much prefer to use an interpreter when dealing with escape codes meant
>
> for screens. Because the Visual 1050 was provided with CBASIC (the
>
> standard BASIC of Digital Research, and used by all the commercial
>
> programs -- there were half-a-dozen books published dealing with
>
> business programs programmed in CBASIC: the most famous was "General
>
> Ledger"), it does not mean that you are obliged to use it. It was the
>
> standard for commercial programs because it uses BCD arithmetic (so
>
> there are not the rounding errors inherent in any PL using Floating-
>
> Point arithmetic), and it is a compiler (so the user were getting the
>
> INT file, not the source BAS file). But, to use a compiler, you need
>
> to use a file editor, compile, test, etc. I much prefer to type a line
>
> interactively, seeing on screen what the program produces.

I understand the benefits of immediate feedback, especially when dealing with the syntactical complexities of implementing escape codes in higher languages. It was a very painstaking process for me to figure out the sample implementations that i posted here, which is why the information is valuable. (Now that the syntax is figured out, it gets easier.)

To test those implementations, I used MESS with ED with the CBas compiler at original Z80 speeds to test everything. One reason i did that is because the SIMH emulator, with its blazing fast speed, is not yet ready for prime time...not ready for the extended graphics functions of GSX-80 and the DD1050.PRL driver that came bundled with the V1050 very late in the CP/M era. I think its a shame that an emulator dedicated to the preservation of digital history cannot accommodate such an important advancement to the 8-bit world...as if it never happened!

If you would help me with the implementation of GSX-80 in SIMH then i wouldn't have to go the slow poke route for development. Yes, there's something to be said for developing on a physical machine. I want to bring to the physical machine the fastest/best development tools...to turn the physical machine into some kind of hot rod the way classic car preservationists supe up their little Duce coups! But i don't necessarily want to stress my physical machine with unnecessary hours of trial and error. I would prefer to download code to the machine, and have it run the very first try. I require emulators for this, and good ones!


MBASIC was
>
> the standard, back them. It is me who provided the last version, 5.29,
>
> to the RetroArchive.Org Web site. But I prefer the BASIC that was
>
> issued on the Amstrad CP/M Plus micros in Europe: Mallard BASIC, made
>
> at the same time as the Visual 1050. It is available for CP/M and MS-
>
> DOS.)

Now, if i WAS developing on the physical machine, yes, i DO want an interpreter, and i want the BEST interpreter. I want it (the best tools) on my physical machine even if i did not use it that much for development. If you say MBasic was the standard, yes, i want that because i am 'greedy' for the best tools. If you say that Mallard was even better, i want that TOO because i am 'greedy'. I want to make the V1050 into the greatest 8-bit hot rod that ever existed! completely "loaded". I appreciate the knowledge and expertise you can bring to this project! Too bad nobody cared enough to make a CBasic interpreter. ;) I'm just kidding you. I know you considered it at one point but the speed and tools of the 16-bit world were taking over.

I am not familiar with Mallard Basic...YET. I am familiar enough with MBasic to say that it's editor abilities are about par with the ED editor that comes stock with CP/M. That's my opinion. GW-Basic was MUCH better. That's NOT my opinion! I have complaints about the use of line numbers for every line of code, but i also understand that is unavoidable if you want an interpreter + editor combination. So even if there was an interpreter in CBasic, it would likely need an overabundance of ultimately unused line numbers (as much as 80% unused).

I understand there were converters that could transform MBasic and/or Mallard into CBasic so that it could be compiled to an .INT file, or perhaps even to a stand-alone .COM under CBASIC-80. From a developers point of view, without the aid of a really good CBasic interpreter, that would be the way to go, and sounds like it was the way you went when you were dealing with available tools in 1983 terms.

As an unnecessary but interesting project, i might be willing to code the CBasic interpreter that you didn't...unless you really think that Mallard is the way to go (for rapid development) in 1983 terms, for CP/M 8-bit machines. To do that i would have a LOT to learn, and it would take months to years. To help me, i have someone's dissembly of MBasic 5.21. Its in the Google Drive library that i linked you to. I was not even aware there was a version 5.29 until you mentioned it. Did you contribute the binary or the source/dissembly or both?

I am not so partial to the V1050 that i will only use tools that came bundled with it. I DO want the best tools that it can possibly run running on it! At the same time, to save the hardware ware and tear, i want the best emulator tools, and i just can't believe that SIMH, as good as it is, no one has stepped up to implement GSX-80, the most powerful business graphics ever made under CP/M!

> Whew! I hope that you will be able to digest all this information.
>
>
>
> I suggest that, in the future, you tell us what you don't understand,
>
> before going in all directions (escape codes, Windows terminal
>
> emulators, GSX drivers).
>
>
>
> Yours Sincerely,
>
> Mr. Emmanuel Roche, France

The V1050 is my focus, and even though i narrow my focus down to this one machine, it is more than i know...a lot more. So you can't blame me for narrowing my language focus down to the CBasic pseudo-code compiler, and how that can implement calls to compiled assembly language routines poked into memory. That's a lot for me to grasp even at this time. It's because while i admit i am both a johnny-come-lately AND slow learner (when it comes to bits and bytes), my learning capacity is unlimited. Meanwhile, i don't exactly know what i don't know, and i make mistakes. But there's a certain pleasure in overcoming the mistakes and the limitations to make these machines function smoothly/gracefully at maximum potential. I know that if you don't believe something can be done, the probabilities of actually being able to do it are slim to none.

I hope that you can understand my need for your expertise and assistance in this project. My physical machine runs, and the one or two glitches i've noticed can be troubleshooted down, if they aren't already. I need a way to get developed code from fully functional emulators (preferably fast ones) down to the physical machine in a way that it runs perfectly on the very first try. This is a major challenge. I'm working on all aspects of that, sometimes flailing my arms in the air barking like a dog. I can mostly motivate, like Bill Gates. But every Bill Gates needs a Paul Allen to get started...the guy who puts together the emulation environment right, so that the code runs right the very first time it runs (or at least the second) on the micro machine!

~Still Christ!

Mr Emmanuel Roche, France

unread,
Sep 6, 2012, 6:50:23 PM9/6/12
to
Hello, Still!

Argh! I wanted to go to bed, but checked a last time for any
message... and found your magnus opus! Ouch, ouch, ouch! Lots of
questions, which will lead to lots of answers which must be
explained...

Being a programmer, I will answer them from the software side. I hope
that an electronician will explain you the hardware side.

Ok. Let us begin. Be ready for some "Information Overload".

> Now, i would not try to force GSX-80 on a Windows 7 command window if technically that's not possible.  Perhaps then it is possible in Puttytel or xterm. If neither of those, then it CAN be done with custom programming, after all this is 2012, not 1983!  We do not have limitations.

The fundamental problem is that ANSICON is a terminal emulator
converting DEC VT-100 escape codes, while GSX-80 is a graphics system
displaying dots, lines, arcs, circles, etc. And, apparently, it is
much harder to display graphics than characters on the IBM PC. In
addition, all the GSX doc that we have deal with the original IBM PC
and XT (no mention of the PC AT). Also, I have never bothered to
investigate Windows. It is simply repulsive to me. Maybe it would be
possible to write a GSX screen driver for Windows, but I don't know.
Since everything that I own is packed in carboard boxes, I have used
(the last 2 weeks) only what is available on the Internet: grosso
modo, the 8086 version of GSX, which was running under CP/M-86 and MS-
DOS. Except my own work, I could find nothing about GSX-80, the
version that was running under 8-bit CP/M.

> It's my understanding that you are taking this apart, breaking it down, understanding it, and documenting its function(s) as much as humanly possible. Yes, we want to use that information to maximize the extensibility of the physical machine.  But there is currently an opportunity to use that knowledge to help the emulation world and those who don't have physical machines to have unlimited functionality AND convenience.

Thanks to the Appendix in the "Visual 1050 User's Guide" (dealing with
its supported escape codes) and the listing of the "6502 ROM", I have
been able to disassemble DD1050.PRL satisfactorily. The reason why
this screen driver is so small is that it, essentially, spends its
time converting the (X,Y) coordinates so that the code in the 6502,
driving the screen, will do most of the job. Now, this ROM is 8KB.
This is why the screen driver is only 3KB: most of the code is away
from the TPA, in a ROM!

Personally, I have no interest in the "emulation world", but the
advantage is that it makes a nice separation of functions. So, as far
as I understand it, if someone could write a Windows screen driver
providing all the functions of the "6502 ROM", then the screen driver
(using I/O ports 84, 85, 86, and 87) would not even need to be
changed.

> To test those implementations, I used MESS with ED with the CBas compiler at original Z80 speeds to test everything. One reason i did that is because the SIMH emulator, with its blazing fast speed, is not yet ready for prime time...not ready for the extended graphics functions of GSX-80 and the DD1050.PRL driver that came bundled with the V1050 very late in the CP/M era.  I think its a shame that an emulator dedicated to the preservation of digital history cannot accommodate such an important advancement to the 8-bit world...as if it never happened!

It is much easier to deal with characters than with graphics. By the
way, the IBM Clown went the "raster" way of hardware, while GSX was
written just before, when screens were not common and the main output
device was a plotter... This explains the huge resolution of GSX (32K
x 32K pixels) and also that most of its output is lines, circles, etc,
not pixels or sprites... It was designed for a kind of graphics that
is different from the current pull-down menus, which rely massively on
being able to write directly to the screen, not to draw lines on a
plotter.

> If you would help me with the implementation of GSX-80 in SIMH then i wouldn't have to go the slow poke route for development. Yes, there's something to be said for developing on a physical machine.  I want to bring to the physical machine the fastest/best development tools...to turn the physical machine into some kind of hot rod the way classic car preservationists supe up their little Duce coups!  But i don't necessarily want to stress my physical machine with unnecessary hours of trial and error.  I would prefer to download code to the machine, and have it run the very first try.   I require emulators for this, and good ones!

Well, I used my Epson QX-10 during 15 years. At the end, it was taking
15 minutes to assemble my programs, despite using a RAMdisk. Anyway,
even today, as I type this, the computer spends 99% of its time
waiting for my typing, while I think what to write.

End of GSX. Begin of PLs.

> Now, if i WAS developing on the physical machine, yes, i DO want an interpreter, and i want the BEST interpreter.  I want it (the best tools) on my physical machine even if i did not use it that much for development.  If you say MBasic was the standard, yes, i want that because i am 'greedy' for the best tools.  If you say that Mallard was even better, i want that TOO because i am 'greedy'.   I want to make the V1050 into the greatest 8-bit hot rod that ever existed! completely "loaded".   I appreciate the knowledge and expertise you can bring to this project!  Too bad nobody cared enough to make a CBasic interpreter.  ;)  I'm just kidding you.  I know you considered it at one point but the speed and tools of the 16-bit world were taking over.

No. I just had not enough time and/or money to do it. In addition,
since CBASIC was the standard, back then, it was done... Well, almost.
There is an interpreter very similar to CBASIC: it is obvious that it
was "inspired" by the characteristics of CBASIC. Its name is "Tarbell
BASIC". I found and recreated several versions of it, but never had
enough time/money to "finish" it.

> I am not familiar with Mallard Basic...YET.  I am familiar enough with MBasic to say that it's editor abilities are about par with the ED editor that comes stock with CP/M. That's my opinion. GW-Basic was MUCH better.  That's NOT my opinion!  I have complaints about the use of line numbers for every line of code, but i also understand that is unavoidable if you want an interpreter + editor combination. So even if there was an interpreter in CBasic, it would likely need an overabundance of ultimately unused line numbers (as much as 80% unused).

We had a discussion, in the comp.os.cpm Newsgroup, about the origin of
MBASIC and why it is the way it is. Because it was designed to be used
on a Teletype ASR-33: there was no screen. Hence, there were no escape
codes, too. QED! Just "control codes", since they come (too) from the
Teletype.

Tarbell BASIC is an interpreter, yet has no line numbers... Here is an
example (my newsgroup reader is set up to display fixed width chars,
so my listings line up nicely, using 8-columns tabs):

START REM SIMPLE INVENTORY PROGRAM
REM WRITTEN BY DON TARBELL
REM LAST CHANGE MADE 12-5-78
LET SEQ=0,RAN=1
LET DISKIN=2,DISKOUT=3
INPUT "ENTER INVENTORY FILE NAME: ";FILENAME$
OPEN FILE(0),TYPE(RAN),RECORD(128),DISKOUT,FILENAME$
LET SIZE=0
INPUT "NEW OR OLD FILE: ";ANS$
IF ANS$="NEW" THEN GOTO INST
GET FILE(0),RECORD(1),SIZE
INST INPUT "WANT A LIST OF COMMANDS? ";W$
IF W$="NO" THEN GOTO COMD
PRINT "LIST LIST INVENTORY ON CONSOLE"
PRINT "FIND FIND ONE ITEM"
PRINT "NEW PUT A NEW ITEM IN"
PRINT "CHANGE CHANGE AN ITEM"
PRINT "ADD ADD A QUANTITY OF AN ITEM"
PRINT "SUB SUBTRACT A QUANTITY OF AN ITEM"
PRINT "VALUE COMPUTE THE INVENTORY VALUE"
PRINT "DONE DONE WITH ALL ENTRIES"
PRINT "YOU CAN USE JUST THE FIRST 3 LETTERS"
COMD PRINT
RESTORE CTAB
INPUT "COMMAND ";CMD$
LET W$=LEFT$(CMD$,3)
FOR N=1 TO 8
READ C$
IF W$=C$ THEN GOTO HOP
NEXT N
GOTO INST
HOP ON N GOTO LISTC,FINDC,NEWC,CHANC,ADDC,VALC,SUBC,DONEC
GOTO INST
CTAB DATA "LIS","FIN","NEW","CHA","ADD","VAL","SUB","DON"
LISTC REM LIST ALL ITEMS IN THE INVENTORY.
LET COST=0
GOSUB PNTHDG
FOR I=1 TO SIZE
GOSUB GETREC
GOSUB PNTLIN
LET COST=COST+EC
NEXT I
GOSUB PNTTOT
GOTO COMD
FINDC REM FIND ONE INVENTORY ITEM.
GOSUB READPN
IF I>SIZE THEN GOTO COMD
GOSUB PNTHE
GOTO COMD
NEWC REM ENTER A NEW ITEM INTO INVENTORY.
LET SIZE=SIZE+1
LET I=SIZE
NEWC1 INPUT "QUANTITY NOW IN STOCK? ";QTY
INPUT "PART NUMBER? ";PN$
INPUT "DESCRIPTION? ";DES$
INPUT "COST OF ITEM? ";CI
GOSUB PUTREC
GOTO COMD
CHANC REM CHANGE AN ITEM.
GOSUB READPN
IF I>SIZE THEN GOTO COMD
GOSUB PNTHE
INPUT "JUST CHANGE QUANTITY? ";W$
IF W$="NO" THEN GOTO NEWC1
INPUT "NEW QUANTITY? ";QTY
GOSUB PUTREC
GOSUB PNTLIN
GOTO COMD
ADDC REM ADD TO STOCK.
GOSUB READPN
IF I>SIZE THEN GOTO COMD
GOSUB PNTHE
INPUT "ADD HOW MANY? ";J
LET QTY=QTY+J
GOSUB PUTREC
GOSUB PNTLIN
GOTO COMD
VALC REM PRINT THE COST OF THE INVENTORY.
LET COST=0
FOR I=1 TO SIZE
GOSUB GETREC
GOSUB FINDCOST
LET COST=COST+M*QTY
NEXT I
PRINT "TOTAL COST = $";COST
GOTO COMD
SUBC REM SUBTRACT A QUANTITY FROM AN ENTRY.
GOSUB READPN
IF I>SIZE THEN GOTO COMD
GOSUB PNTHE
INPUT "SUBTRACT HOW MANY? ";J
LET QTY=QTY-J
GOSUB PUTREC
GOSUB PNTLIN
GOTO COMD
PUTREC REM PUT A RECORD OUT TO DISK.
PUT FILE(0),RECORD(I+1),QTY,PN$,DES$,CI
RETURN
GETREC REM GET A RECORD FROM DISK.
GET FILE(0),RECORD(I+1),QTY,PN$,DES$,CI
RETURN
PNTHDG REM PRINT THE HEADING.
PRINT
PRINT "QTY";TAB(8);"PART NO.";TAB(19);"DESCRIPTION";
PRINT TAB(40);"COST";TAB(49);"EXT COST"
PRINT
RETURN
PNTLIN REM PRINT ONE LINE ITEM.
PRINT QTY;TAB(8);PN$;TAB(19);DES$;
GOSUB FINDCOST
PRINT TAB(40);M;
LET EC=QTY*M
PRINT TAB(49);EC
RETURN
READPN REM INPUT PART NO., RET WITH ENTRY #I.
INPUT "PART NUMBER? ";W$
FOR I=1 TO SIZE
GOSUB GETREC
IF PN$=W$ THEN RETURN
NEXT I
LET I=I+1
PRINT "ITEM NOT FOUND"
RETURN
PNTHE REM PRINT HEADING, THEN ENTRY.
GOSUB PNTHDG
GOSUB PNTLIN
RETURN
FINDCOST REM FIND THE COST (M) OF AN ITEM (I).
LET M=CI
RETURN
DONEC REM DONE WITH PROGRAM, QUIT.
PUT FILE(0),RECORD(1),SIZE
CLOSE 3,FILE(0)
STOP
PNTTOT REM PRINT TOTAL COST.
PRINT
PRINT TAB(19);"TOTAL COST:";TAB(49);"$";COST
PRINT
RETURN
END

Not too bad, eh? Especially since Microsoft never managed to do it...

> I understand there were converters that could transform MBasic and/or Mallard into CBasic so that it could be compiled to an .INT file, or perhaps even to a stand-alone .COM under CBASIC-80.  From a developers point of view, without the aid of a really good CBasic interpreter, that would be the way to go, and sounds like it was the way you went when you were dealing with available tools in 1983 terms.

To be more precise: it is a MBASIC-to-CBASIC *Compiler* (not "CBASIC"!
Also, "CBASIC-80" usually means the 8-bit version of CBASIC. "CBASIC
Compiler" was provided as a CB80 COMmand file, so most persons use
CB-80 to talk about it, the way persons say M80 to talk of
"Macro-80"). Version 2 of CBASIC Compiler, the one sold in Europe for
the Amstrad micros in 1985/86 has graphics commands for GSX.

> As an unnecessary but interesting project, i might be willing to code the CBasic interpreter that you didn't...unless you really think that Mallard is the way to go (for rapid development) in 1983 terms, for CP/M 8-bit machines.  To do that i would have a LOT to learn, and it would take months to years.   To help me, i have someone's dissembly of MBasic 5.21.  Its in the Google Drive library that i linked you to.   I was not even aware there was a version 5.29 until you mentioned it.  Did you contribute the binary or the source/dissembly or both?

It all depends if you like BASIC. Some persons will tell you that
Turbo Pascal is better (but seems dead). Others are fanatics of the
Forth language, which is pretty impressive but I have difficulties
with it.

As for disassemblies of MBASIC, I have done 4KB, 8KB, 12KB
("Extended"), and stopped at 4.51 for lack of time. Also, except
collectors, it seemed futile to disassemble all of its versions, since
Mallard BASIC is much better. If you want to learn a little bit more
about it, have a look to:

http://www.fvempel.nl/basic.html

(There, you will also find a dozen of GSX programs...)

For the ultimate reference, go to:

http://www.fvempel.nl/Pcwsbas.htm

> I am not so partial to the V1050 that i will only use tools that came bundled with it.  I DO want the best tools that it can possibly run running on it! At the same time, to save the hardware ware and tear, i want the best emulator tools, and i just can't believe that SIMH, as good as it is, no one has stepped up to implement GSX-80, the most powerful business graphics ever made under CP/M!

Digital Research made it run under CP/M-86 and MS-DOS. But, since
then, nobody cared to make it run under Windows... (only the source
code of the system and its drivers is available, not the application
programs. So, if there was a screen driver for Windows, DR Graph would
be missing, unless we used the MS-DOS version. But, then, it already
runs in a "DOS Box" under Windows... So, why care about writing a
Windows driver?)

(Your message was so long that Google cut it...)

Ok. One hour to type the above. Time to go to bed.

h.jun...@gmail.com

unread,
Feb 3, 2013, 6:57:12 AM2/3/13
to
> Is there anybody out there who knows how to handle these disk images in the SIMH AltairZ80 environment?
>The latest version (running CP/M 2.2) and documentation can be downloaded here:
>> http://www.schorn.ch/cpm/zip/altairz80.zip
>>
> Here is CP/M Plus (version 3.0) using .IMD formatted disk images.
>
> http://www.schorn.ch/cpm/zip/cpmplus.zip
>
> Thanks in advance!
>
> ~Still

Hi, my name is Helmut Jungkunz and I used to be Co-Sysop on the Genie CP/M BBS
I know, this is not an exact reply to your subject and I apologize. I'd just like to bring back to people's minds the fact that most of the stuff from my ZNODE51 is still available for download. That and what isn't you can order with the ZNODE CD. Please give it a try, as many of the solutions lie there:

http://www.znode51.de/indexe.htm

>
It saves a lot of time -not- to invent the wheel ten times over.
Please note that I will not be on this board normally, this just happened "by accident" as I received a new interesting contact (Wiley J. Moore). Look out for his postings in the near future.

Kind regards

Helmut

0 new messages