Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
45
Task/Execute-Computer-Zero/J/execute-computer-zero-1.j
Normal file
45
Task/Execute-Computer-Zero/J/execute-computer-zero-1.j
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
OPS=: 'nop lda sta add sub brz jmp stp'
|
||||
|
||||
assemble1=: {{
|
||||
y=. tolower y
|
||||
ins=. {.;:y-.":i.10
|
||||
cod=. 8|(;:OPS) i. ins
|
||||
val=. {.0".y-.OPS
|
||||
if. *cod do.
|
||||
assert. 32>val
|
||||
val+32*cod
|
||||
else.
|
||||
assert. 256>val
|
||||
val
|
||||
end.
|
||||
}}
|
||||
|
||||
assemble=: {{
|
||||
if. 0=L. y do.
|
||||
delim=. {.((tolower y)-.(":i.10),;OPS),LF
|
||||
y=. delim cut y
|
||||
end.
|
||||
code=. assemble1@> y
|
||||
mem=: code (i.#code)} 32#0
|
||||
}}
|
||||
|
||||
exec1=: {{
|
||||
'cod val'=. 0 32#:pc{mem
|
||||
pc=: 32|pc+1
|
||||
select. cod
|
||||
case. 0 do.
|
||||
case. 1 do. acc=: val{mem
|
||||
case. 2 do. mem=: acc val} mem
|
||||
case. 3 do. acc=: 256|acc+val{mem
|
||||
case. 4 do. acc=: 256|acc-val{mem
|
||||
case. 5 do. pc=: 32|pc[^:(*acc) val
|
||||
case. 6 do. pc=: 32|val
|
||||
case. 7 do. pc=: __
|
||||
end.
|
||||
}}
|
||||
|
||||
exec=: {{
|
||||
pc=: acc=: 0
|
||||
while. 0<:pc do. exec1'' end.
|
||||
acc
|
||||
}}
|
||||
Loading…
Add table
Add a link
Reference in a new issue