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

Tandy 1000 A/EX/HX DMA speed-up

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

    Tandy 1000 A/EX/HX DMA speed-up

    I just read yet another post today from someone claiming adding the DMA memory expansion card to a 1000 {A, EX, HX} made the machine 'faster'. I would really like someone to explain this one to me at a technical level as I don't understand how this was verified. A couple theories:

    1) With an 8237A, DRAM refresh could be off-loaded from a CPU timer interrupt. The Tandy variation of the 8-bit slot has HOLD/HLDA and 20-bits worth of addressing. So it could, in theory, do automatic scheduled DRAM refresh for all lower system memory. However, has anyone ever found evidence (BIOS fragment, benchmark, etc), that this is the case?

    2) With an 8237A, floppy sector transfers could be offloaded to the DMA controller and not done via PIO (move + in/out + loop). However the BIOS routines are synchronous. The CPU doesn't have anything to do but continuously poll status registers or marshal the result. PIO loops 6 bytes or less may not generate any instruction fetches. But, the wait states on the data register I/O movement instruction could be saved per byte via DMA. And the floppy DMA req/ack lines are also present on the ISA slot. But again, has anyone ever found evidence (BIOS fragment, disk I/O benchmark, etc) that the BIOS floppy transfer routines really do auto-detect an 8237A and adjust?

    3) Other known speed up mechanisms?

    I find it *very* hard to believe that at least the 1000/1000A BIOS writers were so forward thinking they would have included advanced support for #1 or #2. Maybe on the EX and HX. However I've disassembled much of that BIOS in the past and don't recall ever finding 8237A-related code. I think it's more plausible that they changed the IBM 8-bit slot pins slightly so that DMA support could be added in the future to support an as-yet undefined peripheral use case - there is still one unused channel ack/req set on the Tandy 8-bit bus.

    If you know for a fact how the machine is sped-up and can point me to either benchmark data or a BIOS location, please educate me! Thanks!
    "Good engineers keep thick authoritative books on their shelf. Not for their own reference, but to throw at people who ask stupid questions; hoping a small fragment of knowledge will osmotically transfer with each cranial impact." - Me

    #2
    Originally posted by eeguru View Post
    I just read yet another post today from someone claiming adding the DMA memory expansion card to a 1000 {A, EX, HX} made the machine 'faster'. I would really like someone to explain this one to me at a technical level as I don't understand how this was verified. A couple theories:

    1) With an 8237A, DRAM refresh could be off-loaded from a CPU timer interrupt. The Tandy variation of the 8-bit slot has HOLD/HLDA and 20-bits worth of addressing. So it could, in theory, do automatic scheduled DRAM refresh for all lower system memory. However, has anyone ever found evidence (BIOS fragment, benchmark, etc), that this is the case?

    2) With an 8237A, floppy sector transfers could be offloaded to the DMA controller and not done via PIO (move + in/out + loop). However the BIOS routines are synchronous. The CPU doesn't have anything to do but continuously poll status registers or marshal the result. PIO loops 6 bytes or less may not generate any instruction fetches. But, the wait states on the data register I/O movement instruction could be saved per byte via DMA. And the floppy DMA req/ack lines are also present on the ISA slot. But again, has anyone ever found evidence (BIOS fragment, disk I/O benchmark, etc) that the BIOS floppy transfer routines really do auto-detect an 8237A and adjust?

    3) Other known speed up mechanisms?

    I find it *very* hard to believe that at least the 1000/1000A BIOS writers were so forward thinking they would have included advanced support for #1 or #2. Maybe on the EX and HX. However I've disassembled much of that BIOS in the past and don't recall ever finding 8237A-related code. I think it's more plausible that they changed the IBM 8-bit slot pins slightly so that DMA support could be added in the future to support an as-yet undefined peripheral use case - there is still one unused channel ack/req set on the Tandy 8-bit bus.

    If you know for a fact how the machine is sped-up and can point me to either benchmark data or a BIOS location, please educate me! Thanks!
    I believe the confusion is because the PCJr does appear to be much slower without DMA due to dram refresh overhead, but Tandy 1000 systems handled ram refresh with dedicated motherboard hardware that had little to no performance impact.

    *edit*
    http://www.vcfed.org/forum/showthrea...ess-Tandy-1000
    */edit*

    Comment


      #3
      Originally posted by keenerb View Post
      I believe the confusion is because the PCJr does appear to be much slower without DMA due to dram refresh overhead, but Tandy 1000 systems handled ram refresh with dedicated motherboard hardware that had little to no performance impact.
      That isn't the reason. DRAM refresh cycles are not a large impact (~5% maybe). The PCjr was slow because it had single ported RAM and the video graphics controller had to arbitrate and interleave access from itself tracing out the current frame buffer and CPU general accesses. It wasn't because of a lack of 8237A.
      "Good engineers keep thick authoritative books on their shelf. Not for their own reference, but to throw at people who ask stupid questions; hoping a small fragment of knowledge will osmotically transfer with each cranial impact." - Me

      Comment


        #4
        Tandy 1000s all have single ported RAM as well. The TX and TL series have dedicated video ram as an option, which provides a huge speed increase on processor intensive work if installed.

        The CPU has to continually poll the keyboard on the PC Jr. but not on the Tandy as if I remember correctly Tandy included the extra circuitry to prevent this.

        DMA probably did have a greater speed up effect on the PC Jr.

        Anyone ever try a word processor that allows you to keep editing while printing a document (to a common printer that has a small or no buffer)? That would be a good test of DMA.

        I just sold my Tandy 1000EX with DMA I wish I had kept it to run a few benchmarks/tests.

        Comment


          #5
          This should be easy to test since the DMA was provided by the RAM upgrade:

          1. Find any Tandy 1000 or 1000A
          2. Does it have 128KB? Perform your testing.
          3. Does it have more than 128KB? Rip the memory board out, then perform your testing.

          Of course, now you're going to ask me to get my 1000 out of storage. I'll be in a position to do that in a few weeks, I'll try to remember.
          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


            #6
            I believe that the PCJr used the NMI to handle keyboard servicing. So not polling.
            Reach me: vcfblackhole _at_ protonmail dot com.

            Comment


              #7
              Originally posted by Chuck(G) View Post
              I believe that the PCJr used the NMI to handle keyboard servicing. So not polling.
              Correct.
              "Good engineers keep thick authoritative books on their shelf. Not for their own reference, but to throw at people who ask stupid questions; hoping a small fragment of knowledge will osmotically transfer with each cranial impact." - Me

              Comment


                #8
                I hace a T1K I can test with and without DMA. Someone have a boot disk image they can mail me with a benchmarking program. I'll run it.

                Comment


                  #9
                  The PCjr.'s keyboard reading routines were slow in part because there is no serial to parallel shift register to handle the work of forming a complete byte from the keyboard for the PC to read. So the PCjr's processor itself has to read the port more often and perform the work of deserializing the reads which the PC's processor did not have to do.

                  Tandy came up with the ingenious idea of arraying memory that was controlled by the video display controller as a 16-bit array. This gave the controller a very high video bitrate, allowing the video to keep pace with the system instead of being a bottleneck. The array looked to be 8-bit to the 8088 CPU.

                  The video display controller can handle the refresh of 128KB of DRAM in the Tandy 1000/A/HD and 256KB of DRAM in the Tandy 1000 EX & HX. The remainder is handled by a DMA chip when added to the system with a RAM upgrade. Alternatively, there have been some solutions recently which have used SRAM, which is easier to implement and does not need constant memory refresh.

                  This thread may be useful in this discussion : http://www.vcfed.org/forum/showthrea...ess-Tandy-1000
                  My Retro Computing and Vintage Gaming Blog : http://nerdlypleasures.blogspot.com/

                  Comment


                    #10
                    Originally posted by kb2syd View Post
                    I hace a T1K I can test with and without DMA. Someone have a boot disk image they can mail me with a benchmarking program. I'll run it.
                    I'll make a bootable 360K image of the TOPBENCH stub program when I get home and reply back. (Even if we prove it with a different benchmark, I'd like the results for the database.)
                    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


                      #11
                      No bootable image, but I did make the program stub small enough that it will run in only 53K of RAM so you can use it with any boot disk you want. Stub is here: ftp://ftp.oldskool.org/pub/TOPBENCH/TSTUB97E.ZIP

                      Instructions are simple, just run it from the floppy disk and it will create OUTPUT.INI with the results of various benchmarks. Run it again and it will append to OUTPUT.INI. Post both results here and, if DMA does or doesn't speed up CPU/memory/video operation, it will be obvious.
                      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


                        #12
                        ;Data collected by: TOPBENCH | Benchmark and detection stub | Version 0.97e
                        ;This file contains fingerprinting information about your computer. Please
                        ;email this file to trixter@oldskool.org with a subject line of "Benchmark" to
                        ;help test these routines and seed the TOPBENCH database.

                        [UID85086DB6]
                        MemoryTest=3823
                        OpcodeTest=1833
                        VidramTest=2148
                        MemEATest=2028
                        3DGameTest=1922
                        Score=4
                        CPU=Intel 8088
                        CPUspeed=4.77 MHz
                        BIOSinfo=unknown
                        MachineModel=0000
                        BIOSdate=19850305
                        BIOSCRC16=8508
                        VideoSystem=CGA
                        VideoAdapter=Tandy 1000
                        Machine=Tandy 1000

                        Tandy 1000A with a MFB1000 512KB RAM card with DMA enabled (640K total). Used a DOS 6.22 boot disk for the test, could not do one with DMA off because I get stuck with base 128KB and that's too low for DOS 6.
                        What I collect: 68K/Early PPC Mac, DOS/Win 3.1 era machines, Amiga/ST, C64/128
                        Nubus/ISA/VLB/MCA/EISA cards of all types
                        Boxed apps and games for the above systems
                        Analog video capture cards/software and complete systems

                        Comment


                          #13
                          Let us know what the 128K non-DMA test shows once you can run it with DOS 3.3 or lower. (Assuming you have the ability to write a boot disk, since you were able to transfer the program?)
                          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


                            #14
                            ;Data collected by: TOPBENCH | Benchmark and detection stub | Version 0.97e
                            ;This file contains fingerprinting information about your computer. Please
                            ;email this file to trixter@oldskool.org with a subject line of "Benchmark" to
                            ;help test these routines and seed the TOPBENCH database.

                            [UID85086477]
                            MemoryTest=4232
                            OpcodeTest=2103
                            VidramTest=2236
                            MemEATest=2375
                            3DGameTest=2152
                            Score=4
                            CPU=Intel 8088
                            CPUspeed=4.77 MHz
                            BIOSinfo=unknown
                            MachineModel=0000
                            BIOSdate=19850305
                            BIOSCRC16=8508
                            VideoSystem=CGA
                            VideoAdapter=Tandy 1000
                            Machine=Tandy 1000

                            DOS 2.11 Boot disk, 128KB no DMA.
                            What I collect: 68K/Early PPC Mac, DOS/Win 3.1 era machines, Amiga/ST, C64/128
                            Nubus/ISA/VLB/MCA/EISA cards of all types
                            Boxed apps and games for the above systems
                            Analog video capture cards/software and complete systems

                            Comment


                              #15
                              Thanks for this! Interesting: The pure memory test was 10% slower without DMA. So let's see how that affected the rest of the metric timings:

                              OpcodeTest=14% slower (tests a mixture of every executable opcode)
                              VidramTest=4% slower (copies system RAM to video RAM and vice versa)
                              MemEATest=17% slower (tests the CPU's effective memory address calculations)
                              3DGameTest=12% slower (tests a mixture of instructions found in 8086-era 3-D game inner loops)

                              Despite the measurable slowdown without DMA, the overall synthetic Score of 4 is unaffected, which means it wouldn't really be noticeable to the naked eye.

                              The MemEATest slowdown being more than the others is interesting to me since it's just a mixture of stuff like "mov al,es:[bx+si+disp16]" in various combinations.

                              For anyone wondering if the system is slowed/affected while the floppy drive is rotating, that's not a factor since 1. the entire binary loads into RAM before it starts and 2. I explicitly wait for the floppy motor to stop turning before I start the calculations.
                              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