Announcement

Collapse

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

Any interest in a PCjr CPU upgrade board?

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    #31
    Hi,

    I have an update on this project: https://microcorelabs.wordpress.com/...itial-results/

    Capture.JPG

    -Ted

    Comment


      #32
      Oh man i cant wait to buy one!!

      Comment


        #33
        Very nice work. I am watching with interest.

        - Alex

        Comment


          #34
          Hi,

          I have another update on the project: https://microcorelabs.wordpress.com/...-fastest-pcjr/

          When the board is running with the CPU in "unlocked" mode (not slowed to be cycle accurate) and using the fast SRAM controller, it appears to allow the PCjr to run 4X faster than an IBM PC/XT and as fast as an IBM PC/AT.

          There are a few PCjr related issues which I am trying to understand, but the MCL86jr board seems to work great! I don't have a lot of mileage on it yet, but the results so far look good.

          Some of the quirks are that Cartridge BASiC does not work, nor do some of the ctrl-alt-ins PCjr build-in tests. I also noticed that Norton's SI sometimes says it is an Intel 8088, and sometimes a NEC V20; so my initial guess is that there are loops in the software timing which rely on the exact PCjr hardware and CPU. Aside from this all of the other software I have tried works great. Things like King's Quest, Archon, Flight Simulator, multiple DOS versions, and more. I have more stuff to try, but so far most professional software seems to run fine.

          Currently I am entering "unlocked" mode as soon as a key is pressed (Im looking at an NMI), but need to add some snoop registers to enable/disable things like cycle accuracy and the fast SRAM controller. I will probably use write accesses to the BIOS ROM at F0000.

          I tried changing the computer-ID from 0xFD to 0xFF but DOS 3.2 doesn't like it! DOS 2.1 works fine and when running SI.EXE it shows up as an IBM PC. As soon as DOS 3.2 gets to the A> prompt and I press a key a bell sounds and the system locks up! I can make the computer-ID changeable under register contriol, but if some DOS's refuse to work then it might not be worth it...

          Thanks,
          -Ted

          Comment


            #35
            I'm biased, but Norton SI is hot garbage. You should try testing with TOPBENCH instead, which will give you more effective relative speed comparisons.

            Very interesting and exciting project Hopefully it can be adapted to non-PCjr 8088 systems as well, as a homebrew accelerator for those systems.
            Offering a bounty for:
            - A working Sanyo MBC-775 or Logabax 1600
            - Music Construction Set, IBM Music Feature edition (has red sticker on front stating IBM Music Feature)

            Comment


              #36
              If you recall you helped me run TOPBENCH on this a few years ago. The score of 11 is around the performance of a x286.

              Below is the entry in your latest database. Not sure why the submitter field is blank...

              [UID44F21E0]
              MemoryTest=1098
              OpcodeTest=607
              VidramTest=1818
              MemEATest=600
              3DGameTest=532
              Score=11
              CPU=MCL86 (FPGA)
              CPUspeed=100 MHz
              BIOSinfo=COPR. IBM 1981,1983 (06/01/83, rev. 0)
              BIOSdate=19830601
              BIOSCRC16=44F2
              VideoSystem=CGA
              VideoAdapter=IBM PCjr
              Machine=IBM PCjr (FPGA)
              Description=PCjr whose processor is replaced with an FPGA containing the MCL86 core that runs faster than the stock 8088 as well as an additional 128KB of on-FPGA memory that is accessed at the CPU core speed of 100Mhz.
              Submitter=
              Last edited by MicroCoreLabs; November 10, 2020, 12:08 PM.

              Comment


                #37
                The MCL86jr achieves the most gains from the on-board system RAM which can be accessed at a fraction of the 8088's bus speed. Running the core with cycle accuracy disabled only provided minor gains. This shows that the performance is mainly limited by the processor's bus access to the system.

                This works on the PCjr because there is no DMA, so most/all of the system's RAM can be held on the FPGA board. On systems which utilize DMA like the IBM XT the CPU cannot see what the DMA has written to physical memory so it cannot have local copies of this memory on-board. This is why I chose to target the MCL86 to the PCjr... If the DMA could be disabled in the BIOS so that all disk accesses were handled by the CPU then it could work for IBM PC's as well.

                -Ted

                Comment


                  #38
                  Originally posted by MicroCoreLabs View Post
                  If you recall
                  I did not, hence my garbage post.

                  Below is the entry in your latest database. Not sure why the submitter field is blank...
                  I'll correct that in the next release.

                  Thanks for the explanation. This still threatens to be the fastest way to accelerate a PCjr; the previous record was an 8 MHz NEC V20. A 9.54 MHz speed CPU modification exists, but I don't have any entries in the topbench database for it. Despite being memory-limited, if your non-cycle-accurate mode can handle MUL/IMUL/DIV/IDIV in effectively 4 cycles, that is massive.

                  Originally posted by MicroCoreLabs View Post
                  Some of the quirks are that Cartridge BASiC does not work, nor do some of the ctrl-alt-ins PCjr build-in tests.
                  It's surprising Cartridge BASIC doesn't work; I guess it has speed-sensitive tests in it? As for the built-in diags, it is completely understandable why those would fail when accelerated.

                  I tried changing the computer-ID from 0xFD to 0xFF but DOS 3.2 doesn't like it! DOS 2.1 works fine and when running SI.EXE it shows up as an IBM PC. As soon as DOS 3.2 gets to the A> prompt and I press a key a bell sounds and the system locks up! I can make the computer-ID changeable under register contriol, but if some DOS's refuse to work then it might not be worth it...
                  I would strongly advise against changing the model ID byte. Some software only produces 3-voice sound and 16-color graphics if the model ID byte is set to PCjr. The whole point of keeping a PCjr around is to run said software on said hardware. I understand that an accelerated system is no longer a true PCjr, but if all I need to run something is slightly faster speed, I can run it on some other system. The FDh is part of the PCjr experience.
                  Last edited by Trixter; November 10, 2020, 12:51 PM.
                  Offering a bounty for:
                  - A working Sanyo MBC-775 or Logabax 1600
                  - Music Construction Set, IBM Music Feature edition (has red sticker on front stating IBM Music Feature)

                  Comment


                    #39
                    My very vague third-hand understanding of why you'd want to change the Model ID byte is so a rare expansion that added an 8087 to the PCjr can convince programs to check for the presence of a math coprocessor, which they otherwise wouldn't do on a Jr. Lacking that I don't think there's much to be gained.

                    This works on the PCjr because there is no DMA, so most/all of the system's RAM can be held on the FPGA board. On systems which utilize DMA like the IBM XT the CPU cannot see what the DMA has written to physical memory so it cannot have local copies of this memory on-board. This is why I chose to target the MCL86 to the PCjr... If the DMA could be disabled in the BIOS so that all disk accesses were handled by the CPU then it could work for IBM PC's as well.
                    There are several models of Tandy 1000 that don't have DMA onboard that you could take a look at targeting if you want to try something that run the CPU in "Maximum Mode" but doesn't have the DMA complication. (The original 1000/1000A/1000EX/1000HX all don't have DMA unless you add the original Tandy memory board, and I know from building my own replacement for it that the 1000EX and HX work fine with simple SRAM expansions. Their ROM checks for DMA at startup and if it's not there they use PIO for the floppy controller.)

                    Have you considered doubling the RAM on the board to 1MB instead of 512k? I assume the way you have it connected to the FPGA doing that would let you selectively replace the entire 8088 memory map. If you can do that and, potentially, remap reads and writes to the underlying hardware I wonder if a really radical but potentially feasible way to "fix" the PCjr would be to heavily patch its BIOS to more closely resemble the Tandy 1000's, and then re-wire the memory map as seen by the CPU so the Jr's built-in 128k of RAM would appear at the *end* of expansion memory instead of ahead of it, again, like the Tandy 1000 does it.

                    (In other words, instead of having the Jr's 128k at 00000-1FFFF and requiring the awkward memory hole for video in low memory you move it up to either 80000-9FFFF [with 512k on the expander] or to A0000-BFFFF [if you had 1MB available to create a contiguous 640k] so DOS no longer has to deal with those eccentricities. Downside of this is it would break compatibility with any games/programs that can't understand the video memory buffer window moving above the 128k mark, IE, the same programs that get broken by a Tandy 1000. The modified BIOS that enables this would be loaded into a section of RAM overlaying the built-in ROM and write-protected at power-on/reset; this is of course contingent on there being enough storage available to the FPGA to do this.)
                    My Retro-computing YouTube Channel (updates... eventually?): Paleozoic PCs Also: Blogspot

                    Comment


                      #40
                      Originally posted by Eudimorphodon View Post
                      Downside of this is it would break compatibility with any games/programs that can't understand the video memory buffer window moving above the 128k mark, IE, the same programs that get broken by a Tandy 1000. The modified BIOS that enables this would be loaded into a section of RAM overlaying the built-in ROM and write-protected at power-on/reset; this is of course contingent on there being enough storage available to the FPGA to do this.)
                      I own a PCjr to run PCjr software. If the basic structure of the system were altered such that PCjr-only software (that relies on 0-128K video behavior) no longer runs, I would not be interested.
                      Offering a bounty for:
                      - A working Sanyo MBC-775 or Logabax 1600
                      - Music Construction Set, IBM Music Feature edition (has red sticker on front stating IBM Music Feature)

                      Comment


                        #41
                        The PCjr Racore upgrade has a switch on the back for PC/PCjr mode, so I thought I could add something similar... The interesting thing is that when I set the cpu-type to IBM PC, DOS 2.1 still boots in 40 column mode... If I recall correctly, when the Racore is switched to "PC" mode it boots in 80 column mode... so maybe the Racore switch does more than just set the computer-type field. Also when I set this DOS 3.2 does not boot at all, so there must be more going on here than just this field... Maybe Racore is patching a large amount of the BIOS?

                        Comment


                          #42
                          Originally posted by Trixter View Post
                          I own a PCjr to run PCjr software. If the basic structure of the system were altered such that PCjr-only software (that relies on 0-128K video behavior) no longer runs, I would not be interested.
                          Valid point, certainly. I just don't know how well that really meshes with accelerating a Jr. up to 286 speeds; there's a body of Tandy 1000-targeted software that would be "runnable" on a Jr. with that modification (IE, the pile of stuff that really needs a TX or TL to run well) but you still might need, at the very least, the "Tandy modification" because of the sorta-reverse problem of the Jr. not double-mapping the full 32k window up to the B8000 area. I also imagine there's a good possibility that level of speedup is going to blow up anything that uses the joysticks?

                          Of course, it also seems that at least in part the point of having programmable hardware is you could switch between modes as necessary to accommodate software that didn't like having the memory map shuffled around. The same expansion that could make the machine act essentially like a Tandy 1000 TX to run software where that makes sense could easily enough turn back into something closer to a regular a Jr. with a simple reboot.

                          (Realistically speaking, obviously, none of this would happen without a BIOS genius willing to hack together the suitable modifications to deal with a memory map change like that, so I wouldn't worry much.)
                          Last edited by Eudimorphodon; November 10, 2020, 03:49 PM.
                          My Retro-computing YouTube Channel (updates... eventually?): Paleozoic PCs Also: Blogspot

                          Comment


                            #43
                            Originally posted by MicroCoreLabs View Post
                            The PCjr Racore upgrade has a switch on the back for PC/PCjr mode, so I thought I could add something similar... The interesting thing is that when I set the cpu-type to IBM PC, DOS 2.1 still boots in 40 column mode... If I recall correctly, when the Racore is switched to "PC" mode it boots in 80 column mode... so maybe the Racore switch does more than just set the computer-type field. Also when I set this DOS 3.2 does not boot at all, so there must be more going on here than just this field... Maybe Racore is patching a large amount of the BIOS?
                            The documentation states:

                            PC/PCjr Mode Switch

                            The toggle switch, located on the back of the Racore Side Assembly, above the printer connector, allows you to change the mode of your computer from PCjr to PC. The switch is operative only when the system is started (either power off or System Reset). Do not change the position of the switch after DOS has been loaded.

                            When the switch is pointed away from the computer (outward), the computer is in the PCjr mode. In this mode, the computer behaves exactly as shipped from IBM, with the exception that you have 2 disk drives instead of I. And when using JRVIDMA2 you may use expanded memory if available. Use this mode when running PCjr programs.

                            When the switch is pointed toward the computer (inward), the computer is in the PC mode. In this mode the computer behaves like a PC. Also, if there is more than 64K of system memory, the display is initialized to 80 column .. Use this mode when running PC programs.
                            The "expanded memory" they mention is tacking on 128K at the end of 640K so that you can have the full 640K available for DOS programs and the 32K-128K region is used for video (the first two video pages, by design, contain the interrupt vector table and DOS).

                            Originally posted by Eudimorphodon View Post
                            There's a body of Tandy 1000-targeted software that would be "runnable" on a Jr. with that modification (IE, the pile of stuff that really needs a TX or TL to run well) but you still might need, at the very least, the "Tandy modification" because of the sorta-reverse problem of the Jr. not double-mapping the full 32k window up to the B8000 area.
                            Yes, but that modification doesn't break any existing PCjr software. My point is that changing the model byte will change the behavior of PCjr software and, in some cases, break the software since it will try to bang on ports that exist on a PC but not a PCjr.

                            I also imagine there's a good possibility that level of speedup is going to blow up anything that uses the joysticks?
                            Only if you use the Int 15h BIOS routine to read them. Any program that reads the sticks directly will work fine, although I admit, it is very likely that many PCjr-only programs use the Int 15h BIOS joystick routines (or, if not, expect a certain speed).
                            Offering a bounty for:
                            - A working Sanyo MBC-775 or Logabax 1600
                            - Music Construction Set, IBM Music Feature edition (has red sticker on front stating IBM Music Feature)

                            Comment


                              #44
                              I am able to run BASIC, but only when running in cycle accurate mode and when the PCjr's BASIC cartridge is removed... It seems to be running the BASIC version included with the DOS diskettes... When I go into non-cycle-accurate mode and try to run BASIC either with the cartridge installed or removed it will report "Cartridge BASIC Required" I get this result using DOS 2.1, 3.2, and ITT DOS 2.11.

                              Very wierd... My first thought is that there is some type of CPU speed check going on like one the PCjr does during POST. Maybe it is a security check to prohibit the PCjr BASIC from running on different/modified machines...

                              Anyway, the diskette BASIC (version D) appears to support diskette drive access, so files can be loaded and saved.

                              I also squeezed a little more performance out of the core so now the MCL86jr runs between 4-5X faster than an XT and around 20% faster than the 8Mhx PC AT. I have a few small things remaining to optimize, but Im about ready to call this Done!

                              Comment


                                #45
                                When you run BASIC on a PCjr from DOS, you get either the built-in Cassette BASIC in ROM or, if the cart is loaded, Cartridge BASIC. The actual BASIC program on diskette should be very small, like a 1K .COM file. If it's much larger, like a 40K .exe, you're running something non-IBM. Also, not sure why you're running other systems' OEM DOS (ITT DOS?), that's not recommended as OEM DOS versions sometimes had hardware-specific support built into them that does odd things on other systems. Stick to PC-DOS 2.11, PC-DOS 3.3, MS-DOS 5 or 6.22 for best compatibility on IBM PCjrs. DOS versions past 4 require a boot sector patch: https://www.brutman.com/forums/viewtopic.php?f=3&t=224
                                Offering a bounty for:
                                - A working Sanyo MBC-775 or Logabax 1600
                                - Music Construction Set, IBM Music Feature edition (has red sticker on front stating IBM Music Feature)

                                Comment

                                Working...
                                X