dot slt @stack, #1+CORESIZE/2Unfortunately, the code is pretty ugly. Can you suggest a more elegant solution?
sts.a #45, 0
slt @stack, #1+CORESIZE/2
mul #-1, @stack
udot mov.b @stack, <stack
div.b base, >stack
mod.b base, @stack
slt @stack, #10
add #7, @stack
add #48, @stack
add #1, udcount
jmn udot, <stack
add #1, stack
udloop sts >stack, 0
udcount djn udloop, #0
base dat 10
Showing posts with label output. Show all posts
Showing posts with label output. Show all posts
Friday, 6 February 2009
Display Signed Number in Base X
The following Redcode displays a signed number is a chosen number base:
Wednesday, 24 December 2008
Write Number (implemented using a data stack)
Here's an alternative version of the routine to display numbers using exMARS Stream's
sts
opcode. The code executes in 8x+1 cycles, where x is the number of digits. This implementation uses a data stack.printd mov.a *stack, {stack
div.a #10, }stack
mod.a #10, *stack
add.a #48, *stack
add #1, pcount
jmn.a printd, {stack
add.a #1, stack
ploop sts.a }stack, 0
pcount djn ploop, #0
Sunday, 7 December 2008
Hello World in Redcode
Here's the shortest "Hello, World!" program I could implement, written using the
sts
opcode which is available in exMARS Streams.write sts.a hello, 0
sts.b }write, 0
djn write, #7
hello dat 72, 101
dat 108, 108
dat 111, 44
dat 32, 87
dat 111, 114
dat 108, 100
dat 33, 10
Labels:
hello world,
output,
redcode,
sts
Sunday, 20 April 2008
Write Number
Here's a short iterative routine to write a number to standard out. Although longer than the recursive algorithm, it avoids the need to maintain a data / return stack. 9x+1 cycles are required, where x is the number of digits.
The sts opcode is available in exMARS Streams.
The sts opcode is available in exMARS Streams.
writedec mov number, temp
jmp _wdloop+1, >_wdloop
_wdloop mul #10, #0
div #10, temp
jmn _wdloop, temp
_wdprint mov number, temp
div.b _wdloop, temp
add #48, temp
sts temp, 0
mod.b _wdloop, number
div #10, _wdloop
jmn _wdprint, _wdloop
Subscribe to:
Posts (Atom)