Language DCPU
(DCPU-16, the CPU for the game 0x10c)
| Date: | 04/12/12 |
| Author: | rey |
| URL: | n/a |
| Comments: | 0 |
| Info: | http://0x10c.com |
| Score: |
SET A, 0x8000
SET B, start_data
SET C, end_data
SUB C, start_data
JSR memcpy
:beer_loop
JSR sleep
SET A, 0
JSR decrement
SET A, l2
SUB A, l1
JSR decrement
SET A, l3
SUB A, l1
JSR decrement
IFN A, 0xFFFF
SET PC, beer_loop
JSR sleep
SET A, 0
JSR decrement
SET A, l2
SUB A, l1
JSR decrement
SUB PC, 1
:start_data
:l1
dat "99 bottles of beer on the wall, "
:l2
dat "99 bottles of beer. "
dat "Take one down and pass it around"
:l3
dat "98 bottles of beer on the wall."
:end_data
dat "### DAMNIT I COPIED TOO MUCH!!! ###"
:decrement
ADD A, 0x8000
IFE [A+1], 48 ;; We have d0!j
SET PC, decrement_big
SUB [A+1], 1
set PC, end_decrement
:decrement_big
SET [A+1], 57
IFE [A], 0x20 ;; We have space
SET PC, no_beer
IFE [A], 49 ;; We have 10
SET PC, less_than_ten
SUB [A], 1
SET PC, end_decrement
:less_than_ten
SET [A], 0x20
SET PC, end_decrement
:no_beer
SET [A], 110
SET [A+1], 111
SET A, 0xFFFF ;; Signal that there's no more beer
:end_decrement
SET PC, POP
:sleep
SET A, 0x1000
:sleep_loop
DIV 0, 0
MOD 0, 0
SUB A, 1
IFN A, 0
SET PC, sleep_loop
SET PC, POP
:memcpy ; Credit for this function goes to Tobba
SET PUSH, J
SET J, SP
SET SP, B
ADD B, C
SET PC, duff
:loop
IFE SP, B
SET PC, end
SET [A], [SP++]
ADD A, 0x01
SET [A], [SP++]
ADD A, 0x01
SET [A], [SP++]
ADD A, 0x01
SET [A], [SP++]
ADD A, 0x01
SET [A], [SP++]
ADD A, 0x01
SET [A], [SP++]
ADD A, 0x01
SET [A], [SP++]
ADD A, 0x01
SET [A], [SP++]
ADD A, 0x01
SET PC, loop
:duff
AND C, 0x7
SHL C, 1
ADD C, 6
SUB PC, C
:end
SET SP, J
SET J, POP
SET PC, POP
Download Source | Write Comment
Download Source | Write Comment
Add Comment
Please provide a value for the fields Name,
Comment and Security Code.
This is a gravatar-friendly website.
E-mail addresses will never be shown.
Enter your e-mail address to use your gravatar.
Please don't post large portions of code here! Use the form to submit new examples or updates instead!
Comments