Image Map Image Map
Page 1 of 2 12 LastLast
Results 1 to 10 of 20

Thread: Optimal Instruction Set for Homebrew Computer?

  1. #1
    Join Date
    Sep 2011
    Location
    Michigan, USA
    Posts
    188

    Default Optimal Instruction Set for Homebrew Computer?

    Hi, I have built a homebrew computer using TTL IC's according to the architecture described by Eckert in his paper "Microprogrammed Versus Hardwired Control Units: How Computers Really Work". The architecture is shown in the attached diagram. It is a fairly basic machine with a 12 bit bus consisting of 8 data bits and 4 control bits. I built a hardwired controller for my first pass, and am in the process of doing some testing. To do the testing I am hand coding to create hex files that go into a 'ROM A' and 'ROM B'

    The computer has 8 possible instructions. They are:

    Symbol, Hex Value, Description
    LDA* 1 Load Accumulator with data from the address given
    STA* 2 Store Accumulator data at the address given
    ADD 3 Add B to the Accumulator, store in Accumulutor
    SUB 4 Subtract B from the Accumulator, store in Accumulator
    MBA 5 Copy Accumulator to B
    JMP* 6 Jump to new program count (Program counter modified)
    JN* 7 Jump if negative flag is set. (Program counter modified)
    HLT 8-F Halt by stopping clock. (Not currently functional)

    ‘Fetch’ N/A Clock ticks 0, 1 and 2 always load the next instruction
    *Any command with an asterik requires a ‘ROM A’ address or program count value in the first 8 bits.

    So, basically I am at the starting point of creating a working language from these commands. Before I proceed with that I started wondering if these 8 instructions are the best choice from a practical point of view. It would be easy enough for me to substitute or change an instruction at this point... so I am wondering if anyone has some thoughts about this? Probably my biggest concern is the conditional jump is based on the negative flag being set.

    More information about the project is here

    http://www.mtmscientific.com/stack.html

    Michael

    eckert_2.jpg comcom.jpg

  2. #2
    Join Date
    Sep 2006
    Location
    Silicon Valley
    Posts
    2,293

    Default

    Quote Originally Posted by mmruzek View Post
    It would be easy enough for me to substitute or change an instruction at this point... so I am wondering if anyone has some thoughts about this?
    - subroutines
    - memory indexed addressing

    the pdp-8 had the notion of auto-indexed memory locations, which you could use to implement index or stack registers in memory

    it doesn't appear there is any mechanism to change microcode flow conditionally

    you could also make greater use of the ALU operations in the F181 if you had an instruction that exported the ALU control bits
    Last edited by Al Kossow; July 9th, 2020 at 09:56 AM.

  3. #3
    Join Date
    Jan 2007
    Location
    Pacific Northwest, USA
    Posts
    34,597
    Blog Entries
    18

    Default

    I assume that you've seen this OIC article.

    Having programmed very CISCy and RISC mainframes, when everything is said and done, I don't see a lot of difference. I do see that your ISA lacks logical operations, although left-shifts are possible with the ADD instruction.

  4. #4
    Join Date
    Sep 2006
    Location
    Silicon Valley
    Posts
    2,293

    Default

    Quote Originally Posted by Chuck(G) View Post
    I don't see a lot of difference.
    Everything boils down to storage latency and clockrate.

  5. #5
    Join Date
    Jan 2007
    Location
    Pacific Northwest, USA
    Posts
    34,597
    Blog Entries
    18

    Default

    Yeah, pretty much--and word size.

  6. #6

    Default

    Carry functions or increment. You can get rid of either add or subtract but you do need a bit wise complement.
    Dwight

  7. #7

    Default

    Addition and subtraction are equivalent - one is sufficient.
    All logical operations can be synthesized from NAND or NOR, so you want either one.
    For subroutine support, you need to be able to store and recall the program counter.

  8. #8
    Join Date
    Jan 2007
    Location
    Pacific Northwest, USA
    Posts
    34,597
    Blog Entries
    18

    Default

    Quote Originally Posted by Dwight Elvey View Post
    Carry functions or increment. You can get rid of either add or subtract but you do need a bit wise complement.
    Dwight
    I'm assuming twos-complement, but bitwise complement is obtained by subtracting from all 1's. e.g. FFFF-AAAA = 5555, FFFF-0000 = FFFF, etc.

  9. #9
    Join Date
    Sep 2006
    Location
    Silicon Valley
    Posts
    2,293

  10. #10
    Join Date
    Jun 2014
    Location
    Salt Lake City, Utah
    Posts
    550
    Blog Entries
    1

    Default

    Hi Michael,

    Take a look at this, really nice ttl computer. I boght a kit and it is first class.

    https://gigatron.io

    P.s. Love all the projects on your site.

    Len
    Spread the joy of Vintage Addiction

    -->www.chronworks.com/<--->www.i8008.net/<--

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •