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

IntroJR demo modified to work properly on Tandy 1000s

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

    IntroJR demo modified to work properly on Tandy 1000s

    ... at least it should on the EX/SX/TX/HX/SL/TL/RL, but not the original Tandy 1000. (I have actually tried this only on a TX and an RL).

    ZIP file

    Maybe I'll record a video showing this running on my TX.
    Last edited by NewRisingSun; December 11, 2015, 02:27 PM.

    #2
    Could you explain exactly what you modified, and why this was necessary?
    http://scalibq.wordpress.com/just-ke...o-programming/

    Comment


      #3
      Palette (PCjr: index/data to 3DA, Tandy: index 3DA, data 3DE) and setting up the 160x100 mode (PCjr: clear bits 6 and 7 on 3DF, Tandy SX/TX/EX/HX: as PCjr plus set bit 0 on 3DD, Tandy TL/SL/RL: as PCjr plus set bit 0 on array register 5).

      Comment


        #4
        Originally posted by NewRisingSun View Post
        Palette (PCjr: index/data to 3DA, Tandy: index 3DA, data 3DE) and setting up the 160x100 mode (PCjr: clear bits 6 and 7 on 3DF, Tandy SX/TX/EX/HX: as PCjr plus set bit 0 on 3DD, Tandy TL/SL/RL: as PCjr plus set bit 0 on array register 5).
        This explanation explains why it will not work on a Tandy 1000/A/HD. The video gate array chip found in these machines does not implement the register at 3DD. I do not know if these machines may implement the behavior at 3DF which allows this unpatched demo to display properly on a PCjr. There are other differences in the graphics implementation between IBM and Tandy's systems that could conceivably break a program designed solely for the PCjr.
        My Retro Computing and Vintage Gaming Blog : http://nerdlypleasures.blogspot.com/

        Comment


          #5
          I do not know if these machines [Tandy 1000/A/HD] may implement the behavior at 3DF which allows this unpatched demo to display properly on a PCjr.
          They do not. 3DF bit 6, which on the PCjr determines whether video memory address bit 13 is substituted with row address bit 0, is ignored on the Tandy 1000(A). Instead, this behavior is controlled by bit 1 of I/O address 3D8, which on the CGA just enables the four color graphics mode. Tandy had to do this for register-level CGA compatibility. If they had implemented I/O address 3DF exactly as on the PCjr, Digger would fail, as it ignores BIOS and sets graphics mode entirely through register level writes and does not update 3DF since it does not exist on the CGA.
          Last edited by NewRisingSun; December 12, 2015, 04:41 PM.

          Comment


            #6
            I missed this thread, and I'm both flattered and flabbergasted! My reactions:

            - Next time, ask me for the source code! (could have saved you a lot of relocation work)

            - You're lucky I didn't use the hardware VINT, which would have made your patch impossible. I did at first, but then I wanted more CPU time for the middle area stuff so I set up IRQ0 to fire right when the visible area ended. Had I not included cpu-heavy content, the original idea was to use VINT (IRQ5) for the music and scroller, and IRQ0 for the raster bars. Because the raster bars are CPU waitloop-timed, they are "dirty" on one edge due to jitter, something we tried to hide at one point using static graphics.

            Originally posted by NewRisingSun View Post
            Palette (PCjr: index/data to 3DA, Tandy: index 3DA, data 3DE) and setting up the 160x100 mode (PCjr: clear bits 6 and 7 on 3DF, Tandy SX/TX/EX/HX: as PCjr plus set bit 0 on 3DD, Tandy TL/SL/RL: as PCjr plus set bit 0 on array register 5).
            I don't seem to have the tech refs that explain what all of 3DD's bits do; anyone got a link?
            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


              #7
              Next time, ask me for the source code! (could have saved you a lot of relocation work)
              But then I would have to install Turbo Pascal, which would have been more trouble than patching the relocation table.
              You're lucky I didn't use the hardware VINT, which would have made your patch impossible
              Why is that? Tandys have a VINT at IRQ5 as well. People just choose to disable it to run their cheesy little hard disk controllers at IRQ5.

              Comment


                #8
                Originally posted by NewRisingSun View Post
                But then I would have to install Turbo Pascal, which would have been more trouble than patching the relocation table.
                Touche! It's about 90% asm, but the other 10% would have proven annoying for you.

                Why is that? Tandys have a VINT at IRQ5 as well. People just choose to disable it to run their cheesy little hard disk controllers at IRQ5.
                Correct, but it's more than that: The Tandys that can emulate the 160x100 trick don't have a hardware VINT (it was removed fairly early on IIRC), and the Tandys that can do the hardware VINT can't emulate the 160x100 trick.

                The loss of the 100-line hack isn't fatal; there's just a blank line between every other on-screen line when running on a Tandy.

                If you're feeling adventurous/bored, ShakeJR could use a patch. I just checked the source and it doesn't use the hardware VINT either (although it used to at one point in its development; I don't recall why I switched it to a software VINT).
                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


                  #9
                  Correct, but it's more than that: The Tandys that can emulate the 160x100 trick don't have a hardware VINT (it was removed fairly early on IIRC), and the Tandys that can do the hardware VINT can't emulate the 160x100 trick.
                  My TX can do 160x100 and has the video IRQ; I'm using it for my split-screen 160x200 top, 320x200x4 bottom stuff right now. Based on tests, Cloudschatze's TL can do 160x100 and has the video IRQ as well, and the same applies to his RL (from 1990). I'm curious where people are getting this idea that the video IRQ was ever removed, as opposed to just disabled by jumper.
                  Last edited by NewRisingSun; January 19, 2016, 08:31 AM.

                  Comment


                    #10
                    Originally posted by NewRisingSun View Post
                    I'm curious where people are getting this idea that the video IRQ was ever removed, as opposed to just disabled by jumper.
                    I always assumed that was the case! Now you've got me thinking about how I came under this impression, and I don't have an answer. I have confused myself.

                    To make sure I wasn't going crazy, I decided to look at my (incomplete) tech ref collection to verify for myself if a system had IRQ5 tied to vertical sync. Results:

                    • Tandy 1000 EX: Yes (looks like it cannot be disabled?)
                    • Tandy 1000 HX: Yes (looks like it cannot be disabled?)
                    • Tandy 1000 SL: Yes
                    • Tandy 1000 SX: Unknown. Ref manual states "Interrupts 5 - 7 are connected through a switch to the system board function listed, and are also connected to the expansion bus. To use interrupt 5, 6, or 7 on the bus, the system board function must be disconnected (set the appropriate switch to off)."
                    • Tandy 1000 TX: Yes (interestingly, denotes "off" as "external sync")
                    • Tandy 1000 TL: Yes


                    So, I consider myself corrected, although it would be interesting to know if the TL/RL models that came with hard drives also had IRQ5 routed to sync. I don't know how their hard drive interfaces are set up.

                    I guess if I wanted to make a truly unpatchable PCjr program, I'd have to get sneaky. For example, writing directly to the first 128KB of RAM to update video, as opposed to using b800h and the paging registers. That would be much more time-consuming to patch around, I think.

                    I'm using it for my split-screen 160x200 top, 320x200x4 bottom stuff right now.


                    You buried the lead! Making a game?
                    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
                      The Tandy 1000's Tech Notes & Jumper Manual Volume 1 gives a video IRQ disable jumper or dipswitch for every model of the 1000 series with Tandy Video, except for the 1000/A/HD/EX/HX. I would note that although the manual indicates that the IRQ assignment is switched from IRQ5 to IRQ2, if you look at the schematics in the available Technical References, you will find that is not the case. In these instances, the jumper merely disconnects the IRQ5 signal to the video chip.

                      Does anyone know of any software that uses IRQ5 with Tandy Graphics or even PCjr. Graphics? No software has ever given me difficulty on my Tandys which I could trace to the video IRQ. Tandy says that some software won't work correctly if the IRQ is not enabled, but did not identify specific software titles.

                      My SX can also do Trixter's 160x100 double scan mode as implemented by NRS's patch.
                      My Retro Computing and Vintage Gaming Blog : http://nerdlypleasures.blogspot.com/

                      Comment


                        #12
                        Originally posted by Trixter View Post
                        I always assumed that was the case! Now you've got me thinking about how I came under this impression, and I don't have an answer. I have confused myself.

                        To make sure I wasn't going crazy, I decided to look at my (incomplete) tech ref collection to verify for myself if a system had IRQ5 tied to vertical sync. Results:
                        • Tandy 1000 EX: Yes (looks like it cannot be disabled?)
                        • Tandy 1000 HX: Yes (looks like it cannot be disabled?)
                        • Tandy 1000 SL: Yes
                        • Tandy 1000 SX: Unknown. Ref manual states "Interrupts 5 - 7 are connected through a switch to the system board function listed, and are also connected to the expansion bus. To use interrupt 5, 6, or 7 on the bus, the system board function must be disconnected (set the appropriate switch to off)."
                        • Tandy 1000 TX: Yes (interestingly, denotes "off" as "external sync")
                        • Tandy 1000 TL: Yes

                        The SX's jumpers act very simply. Remove a jumper and you disconnect the IRQ line from the 8259 to the appropriate chip. The answer is Yes. HXs and EXs did not implement this feature because of their unique PLUS form factor, only IRQ2 hard disk controllers were anticipated.

                        Originally posted by Trixter View Post
                        I guess if I wanted to make a truly unpatchable PCjr program, I'd have to get sneaky. For example, writing directly to the first 128KB of RAM to update video, as opposed to using b800h and the paging registers. That would be much more time-consuming to patch around, I think.?[/COLOR]
                        That would narrow down the number of systems that could use your program quite a bit, but not completely. A Tandy 1000 with 128KB of RAM should behave in the same way as a PCjr. with 128KB of RAM in this regard. Better to time your program to the slower PCjr. 128KB standard than the Tandy 128KB standard and let things go nuts at the faster speed. Or if you wanted to be truly Evil, put your program on a cartridge with hard coded memory accesses.
                        My Retro Computing and Vintage Gaming Blog : http://nerdlypleasures.blogspot.com/

                        Comment


                          #13
                          Originally posted by Great Hierophant View Post
                          Or if you wanted to be truly Evil, put your program on a cartridge with hard coded memory accesses.
                          That could be patched around more easily than you think. (I could do it, which means NRS could do it faster. ) I think the only unpatchable, PCjr-only software would have to make use of the BIOS ROM contents *and* write to the first 128K for updating video memory *and* use all 128KB RAM to not make room for a copy of the PCjr BIOS data. And even writing that just now, I can see how it can be patched (although "patch" is overloaded in this case as you'd be relocating every segment, embedding a copy of the PCjr BIOS ROM, requiring a 256KB system, etc.).

                          I think your idea of making it speed-sensitive is the only way to make a PCjr-only program, although I can't immediately think of a way to get a speed difference to *crash* the program, only make it run oddly/slower.

                          This conversation is threatening to delve into copy-protection territory.
                          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
                            Originally posted by Trixter
                            You buried the lead! Making a game?
                            No, just converting games that use composite artifacting to using 16 color RGBI graphics. By switching modes mid-screen, I can get sharp text and nice color without rewriting all graphics routines from 320x200x4 to 320x200x16 mode.
                            Originally posted by Trixter
                            For example, writing directly to the first 128KB of RAM to update video, as opposed to using b800h and the paging registers. That would be much more time-consuming to patch around, I think.
                            I am experienced at patching that situation: Some Tandy games write directly to (total memory size minus 32K) instead of using B800h and the paging registers. These games fail to work on a 768K Tandy 1000, because that one only allows access to video memory at B800.

                            Starting with the TL, video memory can be arbitrarily moved around using just software, by writing to I/O addresses FFE8 and FFEA (plus FFEE in the RL). Even a temporary 128K configuration can be set up in software this way. But all pre-TL models require disabling the additional memory using jumpers --- just writing to the memory configuration register at I/O address A0h won't do the trick, as it merely moves around video RAM without disabling system RAM.
                            Originally posted by Great Hierophant
                            Does anyone know of any software that uses IRQ5 with Tandy Graphics or even PCjr. Graphics?
                            Tandy: Super Boulder Dash, Touchdown Football, Demon Attack, Ghostbusters. PCjr: All the previous ones plus Pitfall 2. (These are the ones I checked, there are likely others.)
                            Originally posted by Trixer
                            This conversation is threatening to delve into copy-protection territory.
                            You're saying that like it's a bad thing.
                            Last edited by NewRisingSun; January 19, 2016, 11:59 AM.

                            Comment


                              #15
                              You should put all of your Tandy patches in a single place so that Tandy owners can benefit. I can grant you read/write access to the tvdog archive if you like.

                              Originally posted by NewRisingSun View Post
                              You're saying that like it's a bad thing.
                              Oh, it's not I was just noting the similarity between both discussions (ie. trying to ensure a program will only run in specific conditions).
                              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