|
Vintage Computers Any vintage computer systems, calculators, video games etc., but with an emphasis on 1980s and earlier equipment. |
|
Thread Tools |
5th Jan 2021, 10:26 pm | #21 |
Dekatron
Join Date: Aug 2011
Location: Newcastle, Tyne and Wear, UK.
Posts: 11,485
|
Re: MK14 Tape Interface
I think out of all of us here in this particular thread twostickes has not just one but two original MK14s, perhaps one of them has its original keypad? If so maybe he'd be kind enough to let you have a picture or two (you will have to hook up via PM, twostickes may not know, but we don't put email addresses or other personal details in forum posts here).
My one original MK14 doesn't have its original keypad so a picture of it would not be very representative. I'll dust off my own cassette interface at the weekend and have a go at loading the test audio generated by twostickes's program (the original focus of this thread). |
5th Jan 2021, 10:54 pm | #22 |
Heptode
Join Date: Aug 2009
Location: Worthing, Sussex, UK.
Posts: 661
|
Re: MK14 Tape Interface
I have quickly typed in the details into..
http://81.98.24.96/alphatronic/masmx.html I hope that helps. |
5th Jan 2021, 10:55 pm | #23 |
Triode
Join Date: Dec 2020
Location: Durham, County Durham, UK.
Posts: 20
|
Re: MK14 Tape Interface
Hi SiriusHardware you're ahead of me. .exe file does work, but I didnt finish the extra command line arguments yet but that shouldnt matter.
Yes I can get some photos of these two MK14s (issue ii and v) with their original keypads. However, I thought that issue ii used a conductive membrane but this one has key domes, so maybe it has had an early upgrade, Im not sure of the history but it may have been an option in the early days, or much more recent mod. Anyone got ideas? And thanks in advance of any testing of the .exe or the wavs (can be found at https://github.com/twostickes/MK14WA...main/bin/Debug ) One last question - why am i a diode Funny enough I think i invented the LED - when I was a kid i got hold of a germanium point contact diode, in a sealed glass bead. I accidentally passed a lot of current through it and it glowed red (at least the wire did) |
5th Jan 2021, 11:00 pm | #24 |
Moderator
Join Date: Dec 2010
Location: Exeter, Devon and Poole, Dorset UK.
Posts: 6,824
|
Re: MK14 Tape Interface
The more posts you make the more electrodes you get so I think when you get to 10 posts you become a triode.
Cheers Mike T
__________________
Invisible airwaves crackle with life or at least they used to Mike T BVWS member. www.cossor.co.uk |
5th Jan 2021, 11:03 pm | #25 |
Octode
Join Date: Apr 2018
Location: Newbury, Berkshire, UK.
Posts: 1,287
|
Re: MK14 Tape Interface
|
5th Jan 2021, 11:23 pm | #26 | |
Dekatron
Join Date: Aug 2011
Location: Newcastle, Tyne and Wear, UK.
Posts: 11,485
|
Re: MK14 Tape Interface
Quote:
JBH: Thanks for that summary you linked to but it is still a little bit beyond beginner level. Last edited by SiriusHardware; 5th Jan 2021 at 11:30 pm. |
|
5th Jan 2021, 11:49 pm | #27 |
Triode
Join Date: Dec 2020
Location: Durham, County Durham, UK.
Posts: 20
|
Re: MK14 Tape Interface
Here are some keyboard photos, I hope.
This is for the issue V. |
5th Jan 2021, 11:56 pm | #28 |
Triode
Join Date: Dec 2020
Location: Durham, County Durham, UK.
Posts: 20
|
Re: MK14 Tape Interface
and this is for the issue ii.
Ive disassembled it to see whats going on. The rubber mat is in there, but not really in use since some modern key buttons have been installed. Its actually a really nice fix, the keyboard works flawlessly, and feels nice, its actually useable! The mat is more plastic than rubber. I can confirm its conductive, about 50kohm with probes 1" distance. But I will be returning it back to its original state soon for the sake of vintageness, and would just use the TI or USB keyboard programmer! |
6th Jan 2021, 12:06 am | #29 |
Dekatron
Join Date: Aug 2011
Location: Newcastle, Tyne and Wear, UK.
Posts: 11,485
|
Re: MK14 Tape Interface
That's a very delicately done mod, the domes would have to be very precisely fitted otherwise if there was any movement at all they would be a nightmare. I would have said that mod was physically impractical due to the difficulty of getting the feet of the domes to land in the right places and then stay put but I'm obviously wrong.
I believe JBH was probably after a tasteful shot of a whole original MK14 (with an original keypad), but I assume you are working on that one as well. |
6th Jan 2021, 12:16 am | #30 |
Octode
Join Date: Mar 2020
Location: Kitchener, Ontario, Canada
Posts: 1,265
|
Re: MK14 Tape Interface
That might be the original keyboard parts on the issue II. If you still have it disassembled it would be nice to get them scanned and a measurement of the thickness of each part.
I like how it looks original but unlike the original it actually works. |
6th Jan 2021, 1:36 am | #31 |
Dekatron
Join Date: Aug 2011
Location: Newcastle, Tyne and Wear, UK.
Posts: 11,485
|
Re: MK14 Tape Interface
I actually wouldn't de-mod that keypad because when assembled it looks exactly original and, as Mark says, works better than it ever did originally.
It is most likely a 'historic' mod that the machine has had for far longer than it has NOT had it, if you see what I mean. I would leave it as a valid of part the machine's history, especially as it is done so neatly and invisibly and works so well. |
6th Jan 2021, 10:20 am | #32 |
Octode
Join Date: Apr 2018
Location: Newbury, Berkshire, UK.
Posts: 1,287
|
Re: MK14 Tape Interface
Its almost certainly a factory mod, to make those contact domes work the PCB layout has to be correct. Given that SoC made several changes to the design in only a couple of years with little or no announcement of each revision I'd be surprised if they didn't make several attempts at improving the keypads. Didn't the version with clear plastic buttons have domes underneath?
Additionally, the construction of the keyboard as photod by Twostickes is very like the construction of the Acorn 1 keypad and we know a lot of the ideas for that came from the MK14. The picture I snagged off eBay of the allegedly original unpopulated Issue IV clearly shows tracks for fitting domes - its possible the PCB was modified for them as early as issue II but SoC decided that it worked well enough without the domes for a time. |
6th Jan 2021, 10:34 am | #33 | |
Dekatron
Join Date: Aug 2011
Location: Newcastle, Tyne and Wear, UK.
Posts: 11,485
|
Re: MK14 Tape Interface
Quote:
I could do the same on my issue II. SOC didn't do sub-versions of issue II, issue III etc as far as I know. An issue II PCB is an issue II PCB. |
|
6th Jan 2021, 11:47 am | #34 | ||
Octode
Join Date: Apr 2018
Location: Newbury, Berkshire, UK.
Posts: 1,287
|
Re: MK14 Tape Interface
Quote:
But I agree with Sirus, don't undo it, it certainly is something a person would have done in the late 70's/80s especially given the joy that the original keypad was. "Restoring" it would be like taking a classic hot rod and returning it to factory spec. It actually looks like a pretty good mod, it looks good assembled. Last edited by Slothie; 6th Jan 2021 at 11:53 am. |
||
6th Jan 2021, 1:19 pm | #35 |
Dekatron
Join Date: Aug 2011
Location: Newcastle, Tyne and Wear, UK.
Posts: 11,485
|
Re: MK14 Tape Interface
The punched white lower sheet looks thicker than I remember the original one being and that is probably to accommodate the height of those little switches. I have to say it looks like a really excellent job and if I still had all my original keypad components I would probably do that on my own issue II, having seen that it is possible.
|
6th Jan 2021, 5:45 pm | #36 |
Octode
Join Date: Apr 2018
Location: Newbury, Berkshire, UK.
Posts: 1,287
|
Re: MK14 Tape Interface
Well straying back a little closer to the topic, I have successfully uploaded a program to my MK14 via the tape software using an arduino connected pin13->SenseB and SIN.
It was surprisingly easy This code uploads Sirius's "Slothie" program. Code:
#define TX 13 // Pin to transmit on; use 13 because its flashing the LED too! // Slothie program const byte code[] = { 0xC4, 0x0D, 0x35, 0xC4, 0x00, 0x31, 0xC4, 0x0F, 0x36, 0xC4, 0x3B, 0x32, 0xC4, 0x07, 0x01, 0xC2, 0x80, 0xC9, 0x80, 0xC4, 0xFF, 0x02, 0x70, 0x94, 0xF5, 0x90, 0xF1, 0x00, 0x79, 0x06, 0x74, 0x78, 0x3F, 0x38, 0x6D}; void setup() { // put your setup code here, to run once: digitalWrite(TX,LOW); pinMode(TX, OUTPUT); //Serial.begin(9600); delay(2000); // WAIT for 2s to press GO on MK14 // dump the code to pin13 in the MK14 tape format. for (int k=0; k<sizeof(code); k++) { sendByte(code[k]); } } void loop() { } void sendByte(byte b) { for (int i=0; i<8; i++) { byte thisbit = b & 1; //Serial.println(thisbit); b = b>>1; digitalWrite(TX, HIGH); delay(thisbit==0?4:16); digitalWrite(TX, LOW); delay(thisbit==0?28:16); } } Of course this arduino sketch is bare-bones, it would be better to pipe in the bytes from a serial port on a connected computer. Sirius's key presser is a better option for sheer usability but this was an interesting "made from bits I have lying around" project for a cold afternoon! |
6th Jan 2021, 5:55 pm | #37 |
Dekatron
Join Date: Aug 2011
Location: Newcastle, Tyne and Wear, UK.
Posts: 11,485
|
Re: MK14 Tape Interface
As you already have that going, how much can you vary the data output rate up and down before the MK14 is no longer able to read it? If the answer is 'a lot' then twostickes can probably just leave his program's output as it is.
|
6th Jan 2021, 8:01 pm | #38 |
Dekatron
Join Date: Aug 2011
Location: Newcastle, Tyne and Wear, UK.
Posts: 11,485
|
Re: MK14 Tape Interface
And for your next trick, modify it to inject code into the machine's keypad edge connector at higher speed using the 'Sense and React' method:-
-8 driven keypad lines connected to 8 inputs on the Arduino -4 keypad input lines connected to 4 Arduino lines operating in pseudo 'open-collector' mode. To 'press' a chosen key the Arduino watches for the appropriate column line to be driven low and then takes the appropriate keypad row line low for as long as the column line stays low - then releases it high. If you got that working it wouldn't actually be a first, there's a guy on the Raspberry Pi forums who used this entry method with a BBC model B as the uploading device, many years ago when the BBC B was still a current machine. |
6th Jan 2021, 8:17 pm | #39 | |
Octode
Join Date: Apr 2018
Location: Newbury, Berkshire, UK.
Posts: 1,287
|
Re: MK14 Tape Interface
Quote:
The only question in my mind as to if it would work or not was how quick I need to be from waiting for the column signal to go down to zero and getting a zero to the appropriate row.... Code:
/* MK14 Keyboard simulator... */ /* Try using digitalread/write to see if its fast enough... */ /* 1) Select a column to read, wait till it goes -> 0 * 2) set the row bit to output a zero * 3) wait for column -> 1 * 4) set the row bit back to input. */ /* Setup pins for the columns, rows */ const byte colPin[8] = {2, 3, 4, 5, 6, 7, 8, 9}; const byte rowPin[4] = {10, 11, 12, 13}; #define GO 18 #define MEM 19 #define ABORT 20 #define TERM 23 void setup() { for (byte col=0; col<8; col++) pinMode(colPin[col], INPUT); for (byte row=0; row<4; row++) { pinMode(rowPin[row], INPUT); digitalWrite(rowPin[row], LOW); } } void pressKey(byte row, byte col) { byte colp = colPin[col]; byte rowp = rowPin[row]; // might need to do this several times if the MK debounces? // Otherwise just have a wait between keypresses. while (digitalRead(colp)==LOW) ; // Make sure col isn't already low while (digitalRead(colp)==HIGH); // Wait for it to go low pinMode(rowp, OUTPUT); // Drive appropriate row low digitalWrite(rowp, LOW); while (digitalRead(colp)==LOW) ; // Wait for it to go high again pinMode(rowp, INPUT); // Set it to input ("tristate") delay(50); // Give MK14 time to process... } void sendKey(char key) { switch(key) { case '0'...'7': pressKey(0, key-'0'); break; case '8': case '9': pressKey(1, key-'8'); break; case 'A'...'D': pressKey(3, key-'A'); break; case 'E': case 'F': pressKey(3, key-'C'); break; case GO: case MEM: case TERM: case ABORT: pressKey(2, key-16); break; default: break; } } void loop() { } |
|
6th Jan 2021, 8:42 pm | #40 |
Dekatron
Join Date: Aug 2011
Location: Newcastle, Tyne and Wear, UK.
Posts: 11,485
|
Re: MK14 Tape Interface
You could do a pre-emptive strike. Let's say that the driven line you are watching for is [column 3] and the return line you need to take low in response to that line going low is [row 1].
You know that the column lines are scanned in a particular order, so what you can do is watch for a rising edge on the column line which gets activated before the one you are actually waiting for, in this case the [column 2] line On that rising edge of column 2, take [row 1] low. Keep it low until the rising edge of [column 3]. If you do that, [row 1] is already low at the instant where the OS takes [column 3] low and checks the state of the row lines. With the Arduino running at 16Mhz it may be that the less complicated and more intuitive method of watching for a falling edge on [column 3] and taking [row 1] low for the duration of ([column 3]=low) will suffice, but if not the above dodge should work. Note I haven't bothered to check the actual order in which the columns are scanned so they may very well count down, rather than upwards as suggested in my 'worked example' above. You would have to check. |