Announcement

Collapse

Forum Rules and 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.


Rule 1: 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.


Rule 2: 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.



Rule 3: 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.


Rule 4: "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.

Rule 5: 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

  • psergiu
    replied
    Originally posted by MicroCoreLabs View Post
    I will be listing the few boards I have on eBay soon with the proceeds going to the American Cancer Society, so keep an eye out!
    If you do plan to build more, i'm interested.

    Leave a comment:


  • psergiu
    replied
    I, for one am interested in getting one of those boards. TurboJr, here i come
    If anyone else is interested, please reply to the thread, so Ted can gauge if there's enough interest for an additional batch.
    Thank you all !

    Leave a comment:


  • MicroCoreLabs
    replied
    Final update for this project: https://microcorelabs.wordpress.com/...rator-mcl86jr/

    The MCL86jr can now accelerate the PCjr performance by 7X and beats the IBM PC/XT by 4X. It can also run in cycle-accurate mode which allows the PCjr to amble along at it's usual 4.77Mhz.

    With few exceptions, it appears to run all of the applications and games that would normally run on the PCjr, and when running at top speed can really boost their performance!

    I will be listing the few boards I have on eBay soon with the proceeds going to the American Cancer Society, so keep an eye out!

    Thanks,
    -Ted

    Leave a comment:


  • MicroCoreLabs
    replied
    D'oh... My PCjr disk controller card no longer works! I must have shocked a component when I was moving the disk drive around... Im using the card from my backup PCjr for now...

    Does anyone have a spare one for purchase/trade? I have a number of ISA cards I could trade... Hercules-long, IBM-B&W/parallel, modems, joystick, 16-bit 1MB memory expansion.. early 384K expansion and a few others...

    Leave a comment:


  • Trixter
    replied
    The IBM PC DOS 2.x BASIC.COM and BASICA.COM don't run on anything other than IBMs with ROM BASIC; they return immediately to DOS if you run them on other systems. They only contain enough code to implement file and serial routines (missing from the ROM).

    Cartridge BASIC is different, it installs hooks and intercepts DOS trying to run BASIC.COM and goes into Cartridge BASIC instead. You can ask Mike Brutman for details on the hook if you need it.

    Leave a comment:


  • MicroCoreLabs
    replied
    Actually, the BASIC's included with DOS 3.2 are BASIC.COM=19298 and BASICA.COM=36396. They are similar sizes for DOS 2.1. When I run them using the MCL86jr the versions are Dx.x Copyright IBM.

    This is the case when I have no cartridge BASIC installed. If I try to run any BASIC with the cartridge inserted the machine will say that "Cartridge Basic Required"... I will also get this message if I run the MCL86jr in accelerated non-cycle-accurate mode... This is a weird quirk to using the MCL86jr... But it appears that if you run using cycle accurate mode that you can use the BASIC or BASICA which ships with DOS. It would have been nice if the PCjr's cartridge BASIC worked, but it seems that they added checks to make sure it would only work with an unaltered system...

    Regarding running ITT DOS: It is an interesting datapoint to see what works and what does not. Their BASIC actually does seem to be a custom version and has their own banner before the Microsoft copyright information, and Im glad to see that it does seem to work on the MCL86jr...

    Leave a comment:


  • Trixter
    replied
    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

    Leave a comment:


  • MicroCoreLabs
    replied
    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!

    Leave a comment:


  • Trixter
    replied
    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).

    Leave a comment:


  • Eudimorphodon
    replied
    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.

    Leave a comment:


  • MicroCoreLabs
    replied
    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?

    Leave a comment:


  • Trixter
    replied
    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.

    Leave a comment:


  • Eudimorphodon
    replied
    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.)

    Leave a comment:


  • Trixter
    replied
    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.

    Leave a comment:


  • MicroCoreLabs
    replied
    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

    Leave a comment:

Working...
X