Official Everybody Edits Forums

Do you think I could just leave this part blank and it'd be okay? We're just going to replace the whole thing with a header image anyway, right?

You are not logged in.

Advertisement

Hello, visitor! These forums are run off of the revenue generated from these ads. If you'd like to support us, please whitelist us or consider donating:

#1 2017-02-14 13:52:28

destroyer123
Member
From: England
Registered: 2016-06-03
Posts: 425

Switch Computer 2

Switch Computer 2

Ive finally finished a working version of a switch computer in EE big_smile

This is a fully working, turing complete computer (apart from it having very limited amounts of memory), that can run simple programs in a simple form of machine code.

Currently it doesnt have a good way to input or output things, or create your own code, so its just running a simple prime number program, that outputs prime numbers in binary (in switches to the left of where it stops)

(Dont press any arrow keys while it is running, otherwise it breaks)

Specs:
672 bytes of ROM (256 lines of code, 21 bits each)
64 bytes of RAM
16 registers (1 byte each)
A somewhere between 0.03 and 0.1 Hz processor (depending on what the command is)

Assembly code for the program:

00.  MOV   #1          -> R1
01.  GOTO New Prime

Output Prime
02.  HALT

New Prime
03.  ADD   R1    #1    -> R1
04.  LSR   R1          -> R2
05.  ADD   R2    #1    -> R2

Check Divisible
06.  SUB   R2    #1    -> R2
07.  CMP   R2    #1
08.  BEQ   Output Prime
09.  MOV   R1          -> R3

Subtract
10.  SUB   R3    R2    -> R3
11.  BEQ   New Prime
12.  BLT   Check Divisible
13.  GOTO  Subtract

Notes:
R1 = Number to test
R2 = Divisor
R3 = Number

# = literal number (rather than register)

MOV R1 -> R2 = move value in R1 to R2
GOTO place = go to place in code
HALT = stop program (until player presses space to continue)
ADD R1 R2 -> R3 = add R1 and R2 and store in R3
SUB R1 R2 -> R3 = subtract R2 from R1 and store in R3
CMP R1 R2 = compare R1 and R2 (result used later) (SUB can be used instead)
BEQ place = go to place if ^ were equal
BLT place = go to place if R1 was less than R2 were equal

^ I have tested this up to 11, and all primes were outputted correctly, it does take a while to calculate them though

This was mostly built using my bot (FastBuilder), so it didnt take 50+ hours to build the ROM and RAM, but other than building it, no bot or anything is needed

P.S. this is a proof of concept, not something I expect to actually be useful for anything

Last edited by destroyer123 (2017-02-14 14:03:40)

Offline

#2 2017-02-14 14:00:28

destroyer123
Member
From: England
Registered: 2016-06-03
Posts: 425

Re: Switch Computer 2

reserved

Offline

#3 2017-02-14 18:12:12

N1KF
Banned
From: CELEBRATING KIRBY'S 25TH
Registered: 2015-02-15
Posts: 8,555
Website

Re: Switch Computer 2

W-What have you done?!


HAPPY 25TH ANNIVERSARY TO THE KIRBYFANS IN THE JAPANS

Offline

#4 2017-02-14 21:58:53

Pingohits
Member
From: ambidextrous dextrose
Registered: 2015-02-15
Posts: 6,760
Website

Re: Switch Computer 2

destroyer123 making computers in EE and whenever i try to make a tree i get angry and have to do deep breathing exercises

Offline

Wooted by:

#5 2017-02-14 22:19:44

N1KF
Banned
From: CELEBRATING KIRBY'S 25TH
Registered: 2015-02-15
Posts: 8,555
Website

Re: Switch Computer 2

Once we get infinity-sized worlds we're going to have people recreating an actual computer in-game.


HAPPY 25TH ANNIVERSARY TO THE KIRBYFANS IN THE JAPANS

Offline

Wooted by:

#6 2017-02-14 22:58:58

Slabdrill
Formerly 12345678908642
From: canada
Registered: 2015-08-15
Posts: 1,479
Website

Re: Switch Computer 2

N1KF wrote:

Once we get infinity-sized worlds we're going to have people recreating an actual computer in-game.

we need more switch IDs too. then we can actually let people make their own programs


kL6IDgb.png
made by anatoly

Offline

#7 2017-02-14 23:01:29

N1KF
Banned
From: CELEBRATING KIRBY'S 25TH
Registered: 2015-02-15
Posts: 8,555
Website

Re: Switch Computer 2

12345678908642 wrote:
N1KF wrote:

Once we get infinity-sized worlds we're going to have people recreating an actual computer in-game.

we need more switch IDs too. then we can actually let people make their own programs

That's definitely not what Everybody Edits was meant for, but the more possibilities, the better!


HAPPY 25TH ANNIVERSARY TO THE KIRBYFANS IN THE JAPANS

Offline

#8 2017-02-15 12:33:41

destroyer123
Member
From: England
Registered: 2016-06-03
Posts: 425

Re: Switch Computer 2

12345678908642 wrote:
N1KF wrote:

Once we get infinity-sized worlds we're going to have people recreating an actual computer in-game.

we need more switch IDs too. then we can actually let people make their own programs

We really need this big_smile
aw82ro.png

Offline

#9 2017-02-19 11:06:37

destroyer123
Member
From: England
Registered: 2016-06-03
Posts: 425

Re: Switch Computer 2

Just added a 7 segment display, and some code to display numbers on it (to the far right of the program memory), its very slow, but if you dont know binary, and nobody is on who does, you will need it to see what it outputs. (There is a switch to toggle it off for those who do know binary, and just want to quickly test the main program)

Just thought I should add a quick explanation of how it works and the assembly pseudo-code:

display:
MOV  #0  -> r11
MOV  #10 -> r13

digit:
MOV  r12 -> r14

ADD  r0  #1 -> r15
GOTO mod

LSL  r14 -> r14
ADD  r0  r14 -> r0
MOV  #119    -> r15 // 0 (0)1110111
GOTO endLookup
MOV  #18     -> r15 // 1 (0)0010010
GOTO endLookup
MOV  #93     -> r15 // 2 (0)1101011
GOTO endLookup
MOV  #91     -> r15 // 3 (0)1011011
GOTO endLookup
MOV  #58     -> r15 // 4 (0)0111010
GOTO endLookup
MOV  #107    -> r15 // 5 (0)1011101
GOTO endLookup
MOV  #111    -> r15 // 6 (0)1101111
GOTO endLookup
MOV  #82     -> r15 // 7 (0)1010010
GOTO endLookup
MOV  #127    -> r15 // 8 (0)1111111
GOTO endLookup
MOV  #123    -> r15 // 9 (0)1111011

endLookup:
SAVE r15 r11

MOV  r12 -> r14
ADD  r0 #1 -> r15
GOTO divide

CMP  r11 #2
BNLT r10
ADD  r11 #1  -> r11
GOTO digit

divide:
MOV  #0  -> r12
next:
SUB  r14 r13 -> r14
BGT  r15
ADD  r12 #1  -> r12
GOTO next

mod:
SUB  r14 r13 -> r14
BNGT mod
ADD  r14 r13 -> r14
GOTO r15

This repeatedly divides by 10, and finds the remainder, and then enters a lookup table, which contains all of the 7 segment digits, which are then written to a location in memory, which contains the switches for the display. This way no changes to the hardware are needed, other than placing some switches next to the halt so you can see them.

Last edited by destroyer123 (2017-02-19 11:56:17)

Offline

destroyer1231487498797648197

Board footer

Powered by FluxBB

[ Started around 1493598352.7354 - Generated in 0.035 seconds, 13 queries executed - Memory usage: 1.12 MiB (Peak: 1.24 MiB) ]