Skip to content

Instantly share code, notes, and snippets.

@Ismael-VC
Last active November 9, 2021 03:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Ismael-VC/970bf4baffc707076b74da3aa8531c66 to your computer and use it in GitHub Desktop.
Save Ismael-VC/970bf4baffc707076b74da3aa8531c66 to your computer and use it in GitHub Desktop.
UXN extended opcodes
# more opcodes above...
function SFT(c::CPU, k::Bool, m::BytSht, r::Bool)::CPU
setmod(c, r, k)
a = pop(c.src, k, UInt8)
b = pop(c.src, k, m)
push(c.src, b >> (a & 0x0f) << ((a & 0xf0) >> 4))
end
# Extended opcodes
const OPCODES = [
:LIT, :INC, :POP, :DUP, :NIP, :SWP, :OVR, :ROT,
:EQP, :NEQ, :GTH, :LTH, :JMP, :JNC, :JSR, :STH,
:LDZ, :STZ, :LDR, :STR, :LDA, :STA, :DEI, :DEO,
:ADD, :SUB, :MUL, :DIV, :AND, :ORA, :EOR, :SFT
]
for op in OPCODES
@eval begin
$op(c::CPU) = $op(c, false, UInt8, false)
$(Symbol(op, "2"))(c::CPU) = $op(c, false, UInt16, false)
$(Symbol(op, "k"))(c::CPU) = $op(c, true, UInt8, false)
$(Symbol(op, "2k"))(c::CPU) = $op(c, true, UInt16, false)
$(Symbol(op, "k2"))(c::CPU) = $(Symbol(op, "2k"))(c)
$(Symbol(op, "r"))(c::CPU) = $op(c, false, UInt8, true)
$(Symbol(op, "kr"))(c::CPU) = $op(c, true, UInt8, true)
$(Symbol(op, "rk"))(c::CPU) = $(Symbol(op, "kr"))(c)
$(Symbol(op, "2kr"))(c::CPU) = $op(c, true, UInt16, true)
$(Symbol(op, "2rk"))(c::CPU) = $(Symbol(op, "2kr"))(c)
$(Symbol(op, "kr2"))(c::CPU) = $(Symbol(op, "2kr"))(c)
$(Symbol(op, "k2r"))(c::CPU) = $(Symbol(op, "2kr"))(c)
$(Symbol(op, "r2k"))(c::CPU) = $(Symbol(op, "2kr"))(c)
$(Symbol(op, "rk2"))(c::CPU) = $(Symbol(op, "2kr"))(c)
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment