Remaking the Electronics Australia Signetics 2650 mini-computer - Page 1
Forum section: electronics / general

author: cfbsoftware
author_rank: Regular Contributor
timestamp: January 25, 2025, 10:28:02 pm
content: A few years ago a reworked design of the Electronics Australia Signetics 2650 minicomputer (May 1978) was presented here:https://www.postincrement.net/remaking-the-78up5-2650-mini-computer/I successfully built this system which works very well. I’m now contemplating modifying the design to use larger RAM chip(s) so I can access up to the 32K limit without having to build an expansion board. However I have hit a couple of hurdles.I’ve deduced that the Kicad files were created using Kicad 4.7.0. The PCB file loads OK but when I try to load the schematic Kicad complains that it can’t find the libraries:S265018up5-rescue29ee010… and there are a number of “??” on the schematic, presumably where it can't find the parts.Are some files missing? I got them from here:https://bitbucket.org/postincrement/18up5-2650-remake/src/master/I emailed the author a couple of months ago. He did say he'd investigate but I haven't seen any responses to follow-up emails since. I also posted a message on the 2650 section of the MSPP forum but had no replies yet.

author: brucehoult
author_rank: Super Contributor
timestamp: January 26, 2025, 04:22:36 am
content: I remember the original article very well, as a kid in NZ, and analysed the various 2650 program listings, in an attempt to learn to program . If I'd had the money to buy any hardware kit at all, that would have been the one.SC/MP just seemed stupidly limited, even from what I could tell from the programs presented in articles, and the American 8080 or 6800 designs were far out of reach.You never seem to hear about 2650 in microprocessor histories today, but it seemed like a decent little chip.Looking at the ISA spec  again today, almost 50 years after I last looked at it it stills fairly decent.The most jarring thing being the 8 level internal subroutine return address stack and no way to find out the current PC value.They say "Placing the Subroutine Stack on the chip allows efficient ROM-only systems to be implemented in some applications". While true, RISC ISAs such as MIPS and ARM appearing only a few years later has the same property via storing the subroutine return address into a Link Register which provides essentially a single level of on-chip return address stack, but also allows the program to save it to one or more GPRs (of which you have 32) instead of to RAM. Today RISC-V allows you to directly use any GPR to store a function return address:JAL rN,mySubto call,JR rN(JALR zero,0(rN)) to return.Having no way to programmatically access the subroutine return stack is somewhat acceptable in a microcontroller, but disqualifying for the general purpose PC.There is reasonably good support for jumping or calling via pointers in RAM (the top and bottom 32 bytes of the 8k "page 0" using ZBRR and ZBSR but there appears to be no good way to do the same thing for loads and stores via a runtime-computed pointer, at least for code in ROM. I think you'd have to copy a small function from ROM into RAM. Reading and writing arbitrary global variables at fixed addresses is not a problem for ROM code, using indirect addressing via a constant pointer in ROM.Looks like as a microcontroller it's better than, say, PIC, but worse than 8051. And as a general PC with an operating system it looks ... possible ... but quite a lot worse than 6800, 6502, 8080/z80. which I eventually did a couple of years later from the 6502 listing in the back of an Apple ][ manual. BASIC failed to hold my interest for more than a day or two, on such a slow machine machine code seemed the only way to go.http://www.bitsavers.org/components/signetics/2650/1975_Signetics_2650.pdf

author: DiTBho
author_rank: Super Contributor
timestamp: January 26, 2025, 04:53:02 pm
content: Quote from: brucehoult on January 26, 2025, 04:22:36 amNice to play for hobby.

author: brucehoult
author_rank: Super Contributor
timestamp: January 26, 2025, 05:28:53 pm
content: Next question: where do you buy a 2650 chip now?

author: cfbsoftware
author_rank: Regular Contributor
timestamp: January 26, 2025, 08:38:29 pm
content: There are quite a few listed on eBay including the non-Signetics MAB2650A. Wikipedia used to have Synertek listed as a second-source. Avoid these - I bought some which turned out to be fakes or something else altogether. A CPU Tester is available from CPU Shack:https://www.cpushack.com/signetics-2650-test-boards-for-sale/The 2650 can also be found in video game consoles that sometimes come up for sale e.g. the Emerson Arcadia. These are listed on the WinArcadia 2650 emulator site:https://amigan.1emu.net/releases/Much harder to get (until recently) for the EA design is the original 2608 PIPBUG ROM. I bought a few on eBay and I see there a still three left for sale. Otherwise PROMs can be used.There's also some interesting work being done on the '2650 Restoration Project':https://ztpe.nl/2650/

author: brucehoult
author_rank: Super Contributor
timestamp: January 27, 2025, 12:43:28 am
content: So no new production. They're still cranking out 65C02s, though the NMOS are long gone.

author: wilfred
author_rank: Super Contributor
timestamp: January 27, 2025, 01:02:11 am
content: Quote from: brucehoult on January 26, 2025, 05:28:53 pmYep, That was my first thought. But I looked and one is on sale in Australia yesterday. $50 I think it is (was?) which seemed decent value all things considered.

author: WillTurner
author_rank: Regular Contributor
timestamp: January 27, 2025, 01:12:22 am
content: Quote from: cfbsoftware on January 25, 2025, 10:28:02 pmI had a quick look at the project files, but didn't try to load them into KiCAD. My guess for a quick approach is to create your own symbols for the missing parts, and move on. No doubt you will revise the PCB design a few times anyway, and will want better overall control of the design.Something that is rarely mentioned is the author's style in defining the original schematics. They may have been anywhere on the scale from rank beginner, to super-guru. Probably the former. I would probably want to change a lot of the way the busses are represented, hierarchy and the like. By the time I was satisfied, it would look quite different (but there wouldn't be any missing symbols)I am starting to firm up my ideas about how to approach vintage microcomputer projects. Like others, I have a deep sense of nostalgia for the machines with which I had first contact. (I built a SC/MP). The May 2024 Silicon Chip (p88) "Serviceman's Log" has a segment about rejuvenating a Miniscamp, and in the July 2024 issue there is a letter from a South Australian reader (AW) with a Pico based-design and photograph. The author had the hardware working, but could not find emulation software.These represent two wildly different approaches. Sourcing original hardware, getting, and keeping it running is appealing, but relies on either having kept the original yourself, or being gifted one from the hardware fairies.The second approach is to try and capture the look and feel of the original using emulation on modern hardware.There are other approaches, and please feel free to add to the list.My feeling is that neither of the above really satisfies. I have been trying to identify my missing nostalgia element, and I think it's involves self-hosting with access down to assembly language level programming. Things are just too damn complicated these days. If you go down the emulation path, you need a modern operating system with gigabytes of memory, and a sophisticated software environment (tool-chain) to even begin playing.

author: WillTurner
author_rank: Regular Contributor
timestamp: January 27, 2025, 01:43:58 am
content: While I'm here. and at the risk of hijacking the thread, may I ask Bruce a quick question? Stephen Smith "RP2040 Assembly Language Programming" at the bottom of p65 says that one form of the Thumb2 MOV instruction allows moves between any of the 16 registers. He gives examples like "MOV SP, R10". The instructions are listed in alphabetical order in ARM DDI 0308D. Is Smith implying the 32-bit T3 variant, or the 16-bit T1 instruction? The T1 instruction has only 3-bits for Rd, but it does have a D bit in bit 7. What does it do? Thanks in advance.This may seem irrelevant to the topic, so let me make some connections.Already, the Thumb2 instruction set is complicated beyond anything we had in a nostalgic computing sense. RISC indeed!I thought I might be able to encode (at least) some useful 16-bit Thumb instructions in an MMBasic program, write a limited assembler, and use it as the back-end of a simple compiler.Code:' movs <Rd>, #imm8Function assembler.movs$(rd%, imm8%)Local bits16%bits16% = &h2000 Or ((rd% And &h07) << 8) Or (imm8% And &hFF)assembler.movs$ = Hex$(bits16%, 4)End FunctionThe end process of this after some bit wrangling would be to poke a program into memory, or put it into ROM via a CSUB.So this could be another approach to getting back to basics, leading more totranslationof say 2650 or SC/MP assembly to run in a limited Thumb2 space. What do you think?

author: brucehoult
author_rank: Super Contributor
timestamp: January 27, 2025, 03:23:51 am
content: Quote from: WillTurner on January 27, 2025, 01:12:22 amFortunately you can write an emulator -- even a cycle-accurate one -- for any of the 1970s 8 bitters below the level of the M6809 / 8086 / M68000 in a weekend, if not an evening. All you need is a copy of the programmer's reference manual.SC/MP, 2650, 4004, 8008, 8080, z80, 6800, 6502 ... none of them are complex.I myself wrote a 6502 emulator in VAX Pascal in an evening as a 2nd year student in 1982. We has assembly language programming assignments using AIM65 kits in the hardware lab, which was open only for very limited hours. I wrote the emulator for my own use. It parsed the bytes out of the listing file from the cross-assembler on the VAX (provided to us), and I even implemented simple debugging single-stepping through the program and printing the relevant line (including any comment) from the listing file at each step. Within a couple of days basically the whole class was using it, and the lecturer accepted output from my emulator as proof of our programs working ... I recall one task was to write a floating point add function.QuoteYup, and that's only going to get harder.QuoteYes, and it can be modern VERY cheap hardware. Microcontrollers or cheap FPGAs, not only a honking big modern PC, though a web browser for example can be a very attractive environment to run a whole machine emulation in.QuoteYou really don't.You can write the source code for your emulator on a $5 (64 MB RAM) or $10 (512 MB RAM) 1 GHz 64 bit Milk-V Duo, or an original $12 Raspberry Pi Zero (they used to pretend they were $5, but that was a "one per customer" loss leader). The minimum software environment is a cut-down Linux kernel, busybox, an editor (nano, vi, whatever), and a (cross) binutils or other assembler/linker for whatever you want to run the emulator on.You can also develop for a cheap FPGA such as iCE40 using a Pi Zero. All the necessary tools work: yosis, nextpnr, icepack, iceprog.For actually running an emulator rather than creating it, Pi Pico or ESP32 are popular. There are tons of ESP32-C3 (160 MHz, 400k RAM, 22 GPIO) boards on Aliexpress for around $1.

author: brucehoult
author_rank: Super Contributor
timestamp: January 27, 2025, 03:40:14 am
content: Quote from: WillTurner on January 27, 2025, 01:43:58 amI like to use an ARM7TDMI Thumb reference for the Cortex-M0 too. It's only really missing the CSR 4-byte instructions from ARMv6-M. e.g.http://bear.ces.cwru.edu/eecs_382/ARM7-TDMI-manual-pt3.pdfThe instruction you're looking for is described in "5.5 Format 5: Hi register operations/branch exchange"This gives you MOV, ADD, and CMP with any of the 16 registers as src or dst . And also BX using any register as the source of the dst address.QuoteYes, Thumb2 aka ARMv7 is very complicated, with a LOT of stuff in there.RISC-V RV32IMAC is much simpler, and you can cut it down as you wish to e.g. RV32EC in the $0.10 CH32V003 which gives you both 2-byte and 4-byte instructions but just the basic 10 integer arithmetic operations and 16 registers like on 32 bit Arm. if both registers are in the lo 8 registers then the result is undefined and you're supposed to use the normal Format 1 Move Shifted Register, Format 2 Add/subtract, or Format 4 ALU operations (for CMP) instead.

author: DiTBho
author_rank: Super Contributor
timestamp: January 27, 2025, 04:33:24 pm
content: Quote from: brucehoult on January 27, 2025, 03:23:51 amFor me, "M68000 in a weekend, if not an evening"... say, <8 hours? is not a realistic time plan!I can't say anything about the other architectures you mentioned, but as for the 68000 ... well I don't think you can start from scratch, read the various UMs, make a sensible and flexible design (from -draft, -eng-version/debug, to -RC), and write a CPU emulator from scratch in less than 30 hours!Even worse if it then needs to be optimized in performance (mame?), if you care about cycle accuracy, or if you want to integrate it into a broader simulation framework.For example, I started from scratch, I bought 30Kg of paper with all the datasheets from 68008 to 68060 and CPU32 (which is actually a branch of the 68020 with some ISA differences), including more common peripherals, such as ACIA 6850 (legacy 6800), uart MC68681 (68k native), PIO and timer MC68230 (68k native), etc, and it took me a total of 56 hours, which must then be weighed against the fact that I worked for a maximum of 4 hours a day on weekends, so for 2 days a week, with therefore a considerable "context switch"latency(context_switch(life + job, life + hobby dev)) ~= 45 minLike on Saturday afternoon, when you take up the project again, you have to spend at least 45 minutes taking stock of where you got to the previous weekend, fix any bugs, update the journal on what you intend to do, and then move forward with the code, and at the end update the journal on what you have done, on what does not work, etc.It took me much longer also because I wanted to look for similar patterns in the decoding of the instructions, which is certainly facilitated by a good orthogonality of the ISA 68k, however ... then in practice I had to spend a lot of time to think of a solution that was both elegant and simple and effective, and the code I wrote then, was written in a modular way, with two refactorings planned already at design, in the transition from "draft" to "RC".Plus, the mentioned periphericals were emulated as "Linux threads" with also /dev/pts support for the serials. This took extra time to be designed, implemented, and debugged.

author: cfbsoftware
author_rank: Regular Contributor
timestamp: January 27, 2025, 10:13:50 pm
content: Quote from: brucehoult on January 27, 2025, 12:43:28 amCorrect. AFAIK they haven't been manufactured since the early to mid-1980's. When I disposed of my EA 2650 system in the 1990s I sold my CPU (for $90?), to a local TV broadcasting station. AFAIR, they told me that they needed it as an insurance spare for one of their power supply systems.When later, in Nov 2008, I was infected by the nostalgia bug I then rebuilt the 1978 Electronics Australia design. I was amazed to discover that RCS Radio in Sydney were still selling the original circuit boards:http://www.cfbsoftware.com/S2650/s2650.jpg

author: WillTurner
author_rank: Regular Contributor
timestamp: January 27, 2025, 11:09:33 pm
content: Quote from: DiTBho on January 27, 2025, 04:33:24 pmI think the original claim was for CPU's below the complexity of 68000. ie Writing an emulator for the simpler (vintage) 8-bit CPU's is perhaps not as difficult.

author: DiTBho
author_rank: Super Contributor
timestamp: January 27, 2025, 11:19:01 pm
content: <<68k complexity, ok

author: WillTurner
author_rank: Regular Contributor
timestamp: January 27, 2025, 11:47:49 pm
content: Quote from: cfbsoftware on January 27, 2025, 10:13:50 pmThe original Electronics Australia articles were no doubt well written and informative. I'm sure you have them in electronic form, if not the original paper. They would be available on archive.org. I really should read them.Back in our distant youth, a limiting factor was having access to a video terminal (VDU). A VT100 class (80 x 24) VDU was out of my reach. I guess there were designs for more restricted displays around. I think I built something from EA which was 32 x 16 (?) and drilled the unplated board myself.I can recommend Geoff Graham's ASCII Video Terminal which was published in Silicon Chip around 2014. Tim Blythman designed a new version which was published in Silicon Chip in March/April 2024. The first version (GG AVT) is based on a 28pin PIC, VGA output, PS/2 keyboard with all TH passives and connectors, and although not a perfect VT100 emulation, is probably good enough for most vintage projects. The new version (DVT - which I haven't built), has USB keyboard, and HDMI display interface. It uses three Pico's to get there, and is a more challenging SMD build.In any event, it is very cool to have a dumb terminal permanently connected to your vintage CPU project, so you power it up, and get a monitor prompt in all of its alien green glory.

author: WillTurner
author_rank: Regular Contributor
timestamp: January 28, 2025, 12:03:24 am
content: Quote from: cfbsoftware on January 27, 2025, 10:13:50 pmIs that a laminate PCB (pre-FR4)? Awesome!

author: brucehoult
author_rank: Super Contributor
timestamp: January 28, 2025, 03:48:55 am
content: Quote from: DiTBho on January 27, 2025, 04:33:24 pmI said BELOW the level of M6809 / 8086 / M68000. So your entire post is arguing against something that I SPECIFICALLY excluded from my "in a weekend".

author: WillTurner
author_rank: Regular Contributor
timestamp: January 28, 2025, 11:56:01 pm
content: Quote from: cfbsoftware on January 25, 2025, 10:28:02 pmI've downloaded the original files from bitbucket. Yes, there appears to be a missing component library. Resurrecting it will be a chore for sure. One small thing in your favour is that the author wrote a nice manual which contains images of the KiCAD schematics. That, or referring back to the schematics from EA would be my starting point. Most of the components probably have trivial replacements, but inevitably you will need to make some symbols to get this to the point where it is usable. There is a lot of work there.The original defines two subsheets with global address and data busses. Most of the major IC's are missing symbols. Try to edit the Library Reference field with something sensible instead of deleting and replacing. The symbols exist (in whatever degraded form), and that is a bonus.Edit: clarity

author: WillTurner
author_rank: Regular Contributor
timestamp: January 31, 2025, 11:01:06 pm
content: Quote from: brucehoult on January 27, 2025, 03:40:14 amThanks for the help Bruce. Seeing the Thumb instruction set broken down into the 16-bit formats is a big help, and makes it look a whole lot simpler. Tractable even.I went through my oldest EA's and found a couple with articles on the 2650 project by David Edwards. One for example, has utility routines. These are printed as hex listings. Edwards surely must have had access to a cross-assembler? Space limitations probably didn't allow for printing the source code. (There may be some flow charts.) Interestingly, the article talks about modifying the memory decoding to put the debug routines into ROM on the lower page where there was RAM access. (The 2650 memory space is broken into two 16k pages?) So OP's intention of increasing RAM possibly has serious ramifications for the memory map.This raises a number of questions for me about how people approach these projects. I think the software environment is even more fragile than the hardware. Assuming Edwards used a cross-compiler, and didn't assemble the code by hand (which was possible) thenDoes the cross-assembler survive in original or modern form? If you undertake such a project, are you reinventing slabs of software?How much code even exists as source? How about PIPBug - is the source available?If you emulate the hardware, and it relies on memory decoding that replicated segments to reduce gate counts, then do you emulate the memory decoding as well?The article I mentioned talked about a Philips 33RPM vinyl record that was used to distribute software. Stuff like that would be unique ephemera which should probably be in a computer museum, or maybe you could combine the hobby with a turntable and vintage LP's.

author: WillTurner
author_rank: Regular Contributor
timestamp: January 31, 2025, 11:11:21 pm
content: Quote from: cfbsoftware on January 25, 2025, 10:28:02 pmMaybe follow up, and invite them to join the discussion over here on EEVBlog?Also, the KiCAD board design tries to follow the original single-sided 3M taped PCB layout. There are for example, copper pours which are artistically shaped. It may have been a two layer replica, with the top used for the original's wire links. Wouldn't you use current methods for the layout like a ground pour? Does that detract from the vintage nature of the project?

author: cfbsoftware
author_rank: Regular Contributor
timestamp: January 31, 2025, 11:21:14 pm
content: Quote from: WillTurner on January 31, 2025, 11:01:06 pmCross-assembler(s) and the source code are available. You'll find it all on the websites I mentioned earlier:Emerson Arcadia 2001 Central:https://amigan.yatho.com/The 2650 Restoration Project:https://ztpe.nl/2650/https://ztpe.nl/2650/hardware/signetics-twin/