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

Sinclair MK14 starting up okay but not accepting keypresses

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

    Sinclair MK14 starting up okay but not accepting keypresses

    I dusted off my Sinclair MK14 to check on and overall it seems ok except it cannot for some reason accept any keypresses. It has the newer monitor, so when you power up it shows 0000 00. If I press keys, nothing happens, except on a couple of keys like the 3 key, it will flash a zero very faintly in the space between the first and second set of 0s. But there doesn't seem to be any actual response from the monitor, no change in display as keys are pressed.

    I'm concerned I may have damaged it.. when I connected it to a +9V power source (which goes to a 7805 regulator of course), I had miscalculated the required amperage. The required amperage is 400ma, but the adapter was only kicking out 300ma, so the machine was very erratic with the display going haywire. After that, with an appropriate PSU, the display was solid but it was producing junk, like random stuff - 02AF C9 as an example.. and you'd have to hit reset a bunch of times to get to the 0000s. Now after reseating things it seems to get there reliably, but zero input accepted.

    #2
    I don't believe you should have done any damage by using a lower current power supply. You may have killed the power supply...

    If the 7-segment display is working correctly, then the 7445 BCD decoder (IC13) should be OK. This is used to select each digit of the displays and also for scanning the keyboard.

    Resistors R7-R10 operate as pull-up resistors for the keyboard. The four 'input' pins of IC11 (pins 6, 10, 12 and 14) should all be HIGH with no keys pressed.

    When you press keys, you should observe pulses on the four inputs (pins 6, 10, 12 and 14) of IC11 (one key press should cause pulses on one of the four input lines).

    You should also observe pulses on the IC11 enable lines (pins 1 and 15).

    IC11 acts as a buffer for the keyboard data - so could be faulty (80L95).

    Dave

    Comment


      #3
      Aha! Thanks Dave! I probed around and eventually realized that the issue was the add on keyboard the owner installed - I think somewhere a wire had gotten pinched or something crossed. When I removed the second keypad entirely and pressed on one of the original keypad keys hard enough, I got characters.. but never anything when it was attached. I straightened out wires and separated anything that looked iffy, and now it seems to be happyish again.

      I'm still trying to figure out the purpose of this little switch thing on the bottom right. I thought maybe it was introducing some issues but it seems not. I'm not sure if it's related to the tape interface board above the secondary keypad or not.

      https://drive.google.com/open?id=1oz...m&usp=drive_fs
      https://drive.google.com/open?id=18K...m&usp=drive_fs


      Comment


        #4
        >>> Aha! Thanks Dave.

        You're welcome.

        I'll have a look at your switch when I am not on my works computer. File sharing sites banned!

        Dave

        Comment


          #5
          The 7493 and 7400 give it away...

          This is the hardware single step logic (identified in Figure 5.1 of the later Sinclair MK14 manual).

          I see some of the pins on the extension keyboard connector are a bit bent and could, therefore, short out. I assume you have straightened these out now?

          Dave

          Comment


            #6
            Yes I straightened a bunch out. He had the main MK14 covered by a plexiglass shield but the secondary keyboard was not, and I think maybe something got placed on top of it and bent the pins slightly.

            I am now looking into hooking the tape interface back up so I can actually do some longer programming. Did you have any experience with that? I'm wondering how reliable it was/tricky to get dialed in.

            Comment


              #7
              The cassette interface was pretty awful IMHO...

              Dave

              Comment


                #8
                I own an original and a Replica MK14 and an original cassette interface PCB and like most such items it's just a question of finding the right playback level. You can use a PC, with an audio recorder / player program like Windows 'Sound Recorder' or 'Audacity' to substitute for the tape recorder. The main drawback with the cassette interface is that the supporting routines in the 'new' monitor only allow for the loading of up to 256 bytes at a time so if you want to write and save something which uses the 'extra' memory at 0B00-0BFF or the 128 bytes in the 8154 RAM / I/O you can end up having to save the code as three separate blocks which you then have to load back in in three steps later.

                Now that we have such things as second machines (ie, PCs, Raspberry Pis) which we can use to write and assemble the code on, it's a lot easier to use something like this which will take the hex code and type it in for you through the keypad edge connector at very high speed.

                Using a Raspberry Pi:

                MK14 programming interface - MK2 - UK Vintage Radio Repair and Restoration Discussion Forum (vintage-radio.net)

                Using an Arduino:

                Yet another (Arduino) MK14 uploader - UK Vintage Radio Repair and Restoration Discussion Forum (vintage-radio.net)

                Someone I know is currently using a similar hardware interface but a different microcontroller PCB to make a version of the above systems which presents a web-page type interface to the host rather than the terminal / command line approach used by the above projects - it's a work in progress at the moment but the progress so far can be seen near the end of this current thread:

                MK14 Programming Interface - UK Vintage Radio Repair and Restoration Discussion Forum (vintage-radio.net)








                Comment


                  #9
                  Yes audio levels seem to always be a challenge. I've led myself down some rabbit holes thinking I had a circuit problem when all it was was either the wrong equipment being used or insufficient/too much volume.

                  As far as typing things in for me though, I feel like you're not getting the legit MK14 experience if you're not cursing away punching stuff in byte by byte on a keypad.

                  Comment


                    #10
                    Ok new moronic question..

                    I am trying out some programs on this beast but the manual... well.. I feel like it was kinda written for smarter people. This is the Microcomputer Training Manual they sent along with it.

                    I got some of the games like Duck Shoot working.. but it's the math ones that throw me. I'm not sure I'm understanding say, how the Multiply program works. I entered it.. but I'm not sure how you give it values to multiply? Or if you're supposed to?

                    Comment


                      #11
                      The mathematical routines are SUBROUTINES, so not directly executable.

                      You need to write your own main routine.

                      Set pointer P2 up to point to a piece of memory somewhere. P2(-1) is used as temporary storage, so needs to exist - but you don’t need to give it a value.

                      You pass the two values to multiply together in P2(0) ‘A’ and P2(1) ‘B’. These are bytes.

                      Use P3 as the ‘link’ register to call the subroutine.

                      The 16-bit (2 byte) result is passed back from the subroutine in P2(2) ‘high byte’ and P2(3) ‘low byte’.

                      The other routines are similar, but look at the P2 pointer for a description of the parameters and return values.

                      You MAY be able to do all this magic with the SCIOS monitor though. You can configure the value to be loaded into pointer register P2 when executing a program by presetting memory locations 0FFB and 0FFC with the pointer value.

                      Preload the A and B values into the memory pointed to by P2 (in the correct format).

                      Then, tell the program to GO at address 0F50 (the start of Mult). In this case (when Mult completes) it will return back to the monitor and you can examine the result in the memory locations pointed to by P2 (as you set it up).

                      All of the mathematical routines are relocatable, so you should be able to put them all in memory (RAM permitting) and write a small ‘main’ program to ‘chain’ them together to give you a complex (integer only) expression analyser. Well, complex for a Sinclair MK14 at least!

                      If this is all as clear as mud (!) I should be able to give you a worked example!!!

                      Dave
                      Last edited by daver2; November 22, 2021, 12:50 AM.

                      Comment


                        #12
                        I feel like you're not getting the legit MK14 experience if you're not cursing away punching stuff in byte by byte on a keypad.
                        Having lived through that time when the MK14 was my only 'computer' and that was the only way to get code into it, I feel I have suffered enough to last one lifetime. I've always kept the original machine in working order but that 'grind' aspect of it positively discouraged me from getting out out of storage and playing with it. That's why I (eventually) made the first of the keypad-injection uploaders, from which there have been several spin-offs since.

                        Anyway, I'm glad to see you are trying to use that machine and not just looking at it on a shelf.

                        As far as writing code is concerned possibly one of the most hostile things about the SC/MP is the way it handles (or rather doesn't handle) subroutines, in so far as it does not have the usual CALL / RET mechanism + stack, so calling a subroutine involves loading the subroutine start address into a pointer and then doing XPPC pointer. At the end of the subroutine you do another XPPC pointer to return to where the subroutine was called from. By convention, Pointer 3 is most commonly used for this operation.

                        Comment


                          #13
                          I found the MK14 better than (for example) the ZX80 (once the keyboard on the MK14 was replaced with British Telecom micro switches at any rate). Remember the 'RAMPACK wobble' that would obliterate your program in the blink of an eye?

                          Rather bizarrely, some of the computer systems we use at work do not have a stack etc. and have a similar 'pointer structure' to the SC/MP (although a much more capable instruction set and a 24-bit instruction word). So I was at home with the SC/MP architecture...

                          If I also remember correctly, the CRAY-1 didn't have a 'stack' - but any of the general purpose address registers could be used as a stack, or the user could have multiple stacks by using multiple address registers for such purposes.

                          The SC/MP was the little 8-bit baby...

                          Dave

                          Comment


                            #14
                            Thanks Dave. I am not good with programming at all - I am trying to learn a bit since machines like this demand it. I kind of mistook the manual for being aimed at first time computer owners who would have no idea about any of this stuff and assumed the multiply program was a standalone program to demonstrate what it could do.

                            I was trying to read and understand where the values went - the business at the beginning of the program with what looked like memory address 0000 through 0002 I think it was.. I couldn't understand what they were doing there since you can't write to those locations. Or at least, mine can't.

                            Comment


                              #15
                              Memory at 0 is the SCIOS ROM (not RAM), so you are correct in that you can’t write to these memory locations.

                              However, these are symbolic names for byte offsets relative to a pointer (in this case P2).

                              So you could do (for example - using a form of English rather than the exact instruction):

                              LDA ADD1(P2)

                              This would load the accumulator from the byte located at symbolic offset ADD1 relative to the current value if pointer P2. You have similar addressing modes in other microprocessors. The beauty of ‘based’ addressing modes is that you can write relocatable code and it doesn't depend on ‘fixed’ memory locations. By modifying pointer P2, the subroutine can use any memory within the machine, and this can change from subroutine call to subroutine call.

                              Dave

                              Comment

                              Working...
                              X