Forum etiquette

Our mission ...

This forum is part of our mission to promote the preservation of vintage computers through education and outreach. (In real life we also run events and have a museum.) We encourage you to join us, participate, share your knowledge, and enjoy.

This forum has been around in this format for over 15 years. These rules and guidelines help us maintain a healthy and active community, and we moderate the forum to keep things on track. Please familiarize yourself with these rules and guidelines.

Remain civil and respectful

There are several hundred people who actively participate here. People come from all different backgrounds and will have different ways of seeing things. You will not agree with everything you read here. Back-and-forth discussions are fine but do not cross the line into rude or disrespectful behavior.

Conduct yourself as you would at any other place where people come together in person to discuss their hobby. If you wouldn't say something to somebody in person, then you probably should not be writing it here.

This should be obvious but, just in case: profanity, threats, slurs against any group (sexual, racial, gender, etc.) will not be tolerated.

Stay close to the original topic being discussed
  • If you are starting a new thread choose a reasonable sub-forum to start your thread. (If you choose incorrectly don't worry, we can fix that.)
  • If you are responding to a thread, stay on topic - the original poster was trying to achieve something. You can always start a new thread instead of potentially "hijacking" an existing thread.

Contribute something meaningful

To put things in engineering terms, we value a high signal to noise ratio. Coming here should not be a waste of time.
  • This is not a chat room. If you are taking less than 30 seconds to make a post then you are probably doing something wrong. A post should be on topic, clear, and contribute something meaningful to the discussion. If people read your posts and feel that their time as been wasted, they will stop reading your posts. Worse yet, they will stop visiting and we'll lose their experience and contributions.
  • Do not bump threads.
  • Do not "necro-post" unless you are following up to a specific person on a specific thread. And even then, that person may have moved on. Just start a new thread for your related topic.
  • Use the Private Message system for posts that are targeted at a specific person.

"PM Sent!" messages (or, how to use the Private Message system)

This forum has a private message feature that we want people to use for messages that are not of general interest to other members.

In short, if you are going to reply to a thread and that reply is targeted to a specific individual and not of interest to anybody else (either now or in the future) then send a private message instead.

Here are some obvious examples of when you should not reply to a thread and use the PM system instead:
  • "PM Sent!": Do not tell the rest of us that you sent a PM ... the forum software will tell the other person that they have a PM waiting.
  • "How much is shipping to ....": This is a very specific and directed question that is not of interest to anybody else.

Why do we have this policy? Sending a "PM Sent!" type message basically wastes everybody else's time by making them having to scroll past a post in a thread that looks to be updated, when the update is not meaningful. And the person you are sending the PM to will be notified by the forum software that they have a message waiting for them. Look up at the top near the right edge where it says 'Notifications' ... if you have a PM waiting, it will tell you there.

Copyright and other legal issues

We are here to discuss vintage computing, so discussing software, books, and other intellectual property that is on-topic is fine. We don't want people using these forums to discuss or enable copyright violations or other things that are against the law; whether you agree with the law or not is irrelevant. Do not use our resources for something that is legally or morally questionable.

Our discussions here generally fall under "fair use." Telling people how to pirate a software title is an example of something that is not allowable here.

Reporting problematic posts

If you see spam, a wildly off-topic post, or something abusive or illegal please report the thread by clicking on the "Report Post" icon. (It looks like an exclamation point in a triangle and it is available under every post.) This send a notification to all of the moderators, so somebody will see it and deal with it.

If you are unsure you may consider sending a private message to a moderator instead.

New user moderation

New users are directly moderated so that we can weed spammers out early. This means that for your first 10 posts you will have some delay before they are seen. We understand this can be disruptive to the flow of conversation and we try to keep up with our new user moderation duties to avoid undue inconvenience. Please do not make duplicate posts, extra posts to bump your post count, or ask the moderators to expedite this process; 10 moderated posts will go by quickly.

New users also have a smaller personal message inbox limit and are rate limited when sending PMs to other users.

Other suggestions
  • Use Google, books, or other definitive sources. There is a lot of information out there.
  • Don't make people guess at what you are trying to say; we are not mind readers. Be clear and concise.
  • Spelling and grammar are not rated, but they do make a post easier to read.
See more
See less

NEC V20 and CP/M

  • Filter
  • Time
  • Show
Clear All
new posts

    Originally posted by Krille View Post
    That's too bad. It would have been nice to be able to enter emulation mode without using an interrupt.
    Really, I can't see what purpose would be served by this. The interrupt scheme is pretty clean--you're really changing context; the interrupt scheme saves the x86 flags and flushes the instruction queue (there was an issue with this when an 8087 was installed. In a way, it's remarkable that it works as well as it does.


      Originally posted by Chuck(G) View Post
      The problem with trying to emulate unimplemented instructions in the the V series native mode is that there's no trap for illegal/unrecognized instructions. So not an option in emulation. At any rate, after the 80286, the V-series emulation could be performed faster in software.

      22nice used to have (and may still--I can't recall) a "test" mode in software emulation where 8080 ISA is assumed until a Z80 instruction is attempted. The user is then notified that the subject program is not 8080-compliant.

      One advantage of the 8085 was the wide range of 8080 peripheral support available. You could cobble up interface using those chips with the Z80, but the 8259 interrupt support wasn't available, nor was the 8257-type DMA. Z80 when it started, had CTC, PIO and SIO and that was pretty much it. You could build a complete 8085 system with CRT and floppy support using nothing but Intel peripheral chips. At the same time, the same 8085 could work as a 2-chip embedded controller.
      Ah, I see. Thank your very much for the explanation!
      While I "grew up" with the Z80 (one of my first PCs was a Sharp MZ-700), I also valuable its relatives. Both have the same parents, after all.
      Also, I didn't know that the NECs had no exception handling (if I may call it that way) for that special case.
      I assumed they were similar advanced as the 80286 in that respect, since they share some of the newer 80286 real-mode instructions (as found on 80186, too).

      Speaking of CP/M emulators, my father used to run Z80MU, an Public Domain CP/M emulator from ~85 or so.
      Back in these days, he used it to continue development of some stuff (simulation of fluids ?) that he wrote for university.
      If I did understand correctly, he was "moving" from a Sharp MZ-80K with 8" floppies to a modern Amstrad PC-1512, which he later equipped with a NEC V30.
      But since he used to perform a lot of Turbo Pascal programming (among M-BASIC and Forth/Fortran) the NEC's 8080 mode wouldn't have helped that much, I guess.
      On the other hand, though, there's nothing prevending in using two CP/M emulators for each use case.

      Originally posted by Chuck(G) View Post
      The lack of embedded features was a real puzzler with Zilog--true, they had the Z8, but it's a different architecture. Motorola had the very successful 68xx controllers; MOS had a similar thing for the 650x, and Intel had not only the 8085, but the 8048 and 8051 chips. If you want to state that a particular vendor's CPU family was almost exclusively embedded, that would have to be the 6800 derivatives, which remained popular for many years.
      Now that you speaking of the Z8 and the MCS line, there used to be special versions with built-in programming language.
      Intel offered the 8052AH-BASIC with a built-in powerful BASIC interpreter for embedded use,
      while Zilog had got a Z8 model (Z8671 ?) with some sort of Tiny BASIC and another one with Forth (by Micromint ?).
      Unusual for Intel, the company decided to even release the source code for the MCS-52 BASIC later on.
      Version 1.3, I believe, enhanced by some individuals, also runs on 8031/32/51 compatible controllers.
      Astonishingly, these interpreters could be remote controlled by a simple glass terminal.

      Some of the competing 8-Bit CPUs are mentioned in Ciarcia's Circuit Cellar, Volume 6.
      Google books has a few pages for display that also cover the NSC800 and the lesser known HD64180.
      The latter had a built-in MMU, a 512KB address space and a Z80 superset.

      I wonder how CP/M 3.0 or MP/M with their advanced memory support had performed on
      such a beast (why are CP/M emulators so focused on CP/M 2.2, btw. ?).
      Last edited by Jo22; May 29, 2019, 12:17 AM.
      "Time, it seems, doesn't flow. For some it's fast, for some it's slow.
      In what to one race is no time at all, another race can rise and fall..." -The Minstrel


        Why? Because there's comparatively little software that requires CP/M Plus or MP/M. You pick the low-hanging fruit first.

        The 64180 (I have one in the 64 pin DIP 0.050" pin spacing package, which was a problem; the PLCC Z180 version was easier to work with) simply came along too late, as did the NSC800; much of the world had moved on to the 16-bit world. Also, note the Rabbit Semiconductor offerings of the 90s.


          Originally posted by Chuck(G) View Post
          Why? Because there's comparatively little software that requires CP/M Plus or MP/M. You pick the low-hanging fruit first.
          Hm. So there was no interest in actually making use of the huge amount of features and fallow memory available on the IBM PC (32-64KiB vs. 256-704KiB) ?
          That's a bummer. I assumed the writers of emulators were usually very ambitious in their doing.
          (Where people at least running multiple instaces of Nice22 and friends ? By using PC-MOS or DESQView, maybe ?)

          From what I read online, some interesting MP/M software was out there (file/printer servers etc.) that could have enriched ordinary CP/M 2.2 clients/terminals.
          CP/M Plus, on the other hand, was available on popular platforms, such as C128 or Schneider Joyce (PCW), so there must have been some textmode software that made use of that. Maybe some sort of enhanced dBase III or Lotus 1-2-3 or Wordstar, were lots of data had to be processed.

          That's why I wonder why geeks/professional users apparently had no interest in a "full version" of CP/M.
          I mean, in comparison to the classic CP/M-80 computers, the IBM PC, Acorn Archimedes and Amiga were like
          powerful workstations that cost like nothing (in comparison to the older native CP/M machines, IMSA 8080, Altair 8800 etc).

          When I read the Wikipedia article, it made me wonder why the usual emulators apparently lack support for common hardware standards, like ANSI or VT100 terminals.
          With all these resources at hand, why didn't the programmers support multiple terminal types, in order to provide large compatibility to other CP/M computers ?
          There were hundreds of terminal programs in the forms of Public Domain programs (w/ sources) floating around that had them.
          Or why did't these emulators simulate directories, in order to make elegant use of the huge storage capabilities the HDD-equipped 16-Bit PCs of their time ?

          I mean, CP/M Plus was released in '83, about two years before most emulators were even written (there are later ones dated up to the late 90s).
          To me, that's as if someone did write a stripped-down Windows 3.0 emulator in '96 when Windows 3.1 was out there for several years.

          Anyway, these are just my thoughts. I guess I have to slowly stop now, else the thread goes too off-topic, I'm afraid. :
          I really like to thank you for all the the information so far, though! I hope I didn't get you on the nerves too much.
          Last edited by Jo22; May 29, 2019, 06:55 PM.
          "Time, it seems, doesn't flow. For some it's fast, for some it's slow.
          In what to one race is no time at all, another race can rise and fall..." -The Minstrel


            At the time of the 5150's debut, a complete Morrow Micro-Decision package was cheaper than a bare-bones PC setup. You have to remember that there was nearly a nine-year gap between the 5150 and the IMSAI 8080. A lot of technology progress was made in that time. So you have to compare apples-to-apples in this case.

            I know of at least one customer who's still running his CP/M application under 22Nice under VDos under Win10. So there's your multitasking.

            Recall also, that CP/M was a general-purpose/generic operating system--and that was the beauty. You could run it on little more than a 20K 8080 system with a single disk drive and dumb terminal. When CP/M 1.4 came out, few people had 64KB of memory available. Graphics and networking were beyond the pale of imagination, strictly the province of larger machines. Even when the first 16K-64K 5150 came out, networking was sort of a fuzzy proposition. DOS had no support for graphics. Floppy-only systems were common.

            As they say, 20-20 hindsight is easy.
            Last edited by Chuck(G); May 29, 2019, 07:10 PM.


              A lot of Amstrad games did take advantage of the 128 kB RAM*. DR DRAW in its Amstrad incarnation required 128kB** and I suspect other Amstrad applications did as well. VisiCalc Advanced used 128 kB RAM on the Apple III and IBM PC but the CP/M versions did not get the same upgrade. UCSD Pascal was designed to take advantage of the 128 kB of the PDP-11 as did the IBM PC versions but I believe none of the 6502 or Z80 versions took advantage of extra banks of RAM.

              There was the craziness of SymbOS which need lots of extra memory and was designed to run with up to a megabyte but that didn't arrive until after 2000 so not representative of Z-80 design trends.


              ** GSX plus CP/M Plus is memory hungry


                Thank you everyone! I do now understand why CP/M 1.x and 2.2 were such a great break-trough on early micros from the 1970s.
                Tiny requirements and flexibility (CP/M was among the first portable and hardware-independable OS) and support for floppy disks.
                Meanwhile, the real, physical releases of the CP/M OS stopped being updated on most niche-PCs, so people settled for CP/M 2.2 finally.

                Though there's still one thing that I'm curious - why didn't later emulators releases catch up and continued to improve (in general) ?
                Adding CP/M Plus calls and other useful features neither harmed any compatbility, nor did it cost a cent, since these emulators were "synthetic".
                Ie. not using any physical parts or code from Digital Research. They merely implemented conventions and software APIs (or ABIs) that were compatible to CP/M-80.

                That's what puzzles me. In 1983, writing a barebone CP/M 2.2 emulator surely made sense, but by 1985 to 1989 things could have become more sophisticated.
                I mean to say, as time went on, legacy hardware was fading away, simultanously, Personal Computers became more powerful.
                Wouldn't it had made sense to allow CP/M applications to use these featues, maybe by adding a virtual CRT device and/or multiple TTY devices
                or by mapping the 16 user channels to sepparate directories on the fixed disks ?
                "Time, it seems, doesn't flow. For some it's fast, for some it's slow.
                In what to one race is no time at all, another race can rise and fall..." -The Minstrel


                  They did. Somewhat. handles of number of post-2.2 calls and implements a few terminals if the documentation is to be trusted.

                  I suspect it got a lot harder to emulate later versions since calls didn't have a matching MSDOS call to build around.


                    22Nice, I suppose, could add as many CP/M 3.0 calls as desired, since the resident part is just a stub with a few tables. The "meat" is all x86 code. But I've never been asked to do this in (2019-1987) = 32 years. For all I know, I may have implemented a few extra calls--I haven't looked at the code in 20+ years, when I added the "user-defined code" feature.


                      Things I learned today: Chuck(G) is the maintainer of 22Nice...?
                      Computers: Amiga 1200, DEC VAXStation 4000/60, DEC MicroPDP-11/73
                      Synthesizers: Roland JX-10/SH-09/MT-32/D-50, Yamaha DX7-II/V50/TX7/TG33/FB-01, Korg MS-20 Mini/ARP Odyssey/DW-8000/X5DR, Ensoniq SQ-80, E-mu Proteus/2, Moog Satellite, Oberheim SEM
                      "'Legacy code' often differs from its suggested alternative by actually working and scaling." - Bjarne Stroustrup


                        What do you mean "maintainer"? I wrote the bloody thing.


                          I guess that explains why there isn't a 31NICE!!! (having a little fun at your disdain for CP/M plus...I hope you don't mind!)


                            I don't disdain it any more than I disdain Concurrent CP/M. It's just that the world moved on by the time that it came out.


                              Originally posted by Chuck(G) View Post
                              What do you mean "maintainer"? I wrote the bloody thing.
                              And, as with any author of a useful program, you're now shackled to it for the rest of your life - this is the state of maintainerhood
                              Computers: Amiga 1200, DEC VAXStation 4000/60, DEC MicroPDP-11/73
                              Synthesizers: Roland JX-10/SH-09/MT-32/D-50, Yamaha DX7-II/V50/TX7/TG33/FB-01, Korg MS-20 Mini/ARP Odyssey/DW-8000/X5DR, Ensoniq SQ-80, E-mu Proteus/2, Moog Satellite, Oberheim SEM
                              "'Legacy code' often differs from its suggested alternative by actually working and scaling." - Bjarne Stroustrup


                                I wonder if Woz still gets questions about the Apple II.