Poochiewuddledumpling-Boobledarling

From Esolang
Jump to navigation Jump to search

Poochiewuddledumpling-Boobledarling is a programming language loosely based on assembly. It was created by two Finnish coders. The first usable beta version came out in July 2009.

Syntax

Descriptions coming soonwho knows when!

mov

add sub mul div rnd

push pop empty inv copy dump

jmp cmp je jne jg jge jng jnge jl jle jnl jnle

call ret

in out

alloc

sys loc col end

Sample programs

Using functions

jmp Main

;Adds 1 to the EAX register
Plus:
  add EAX $1
ret

;Main program
Main:
  call Plus
  call Plus
  call Plus

  ;The ASCII character of 0 is 48
  add EAX $48

  out 0 EAX ;Print the number
  out 0 $13 ;Carriage return
  out 0 $10 ;Newline
end

99 bottles of beer

mov EBX $99
jmp Main

Print:
  inv   ;Invert the stack
  Print_Loop:
    pop EAX     ;Take one character from the stack
    
    ;Replace _ with space
    cmp EAX $95
    jne Cont
    mov EAX $32
    Cont:
    
    out 0 EAX   ;Print the character
    empty EAX   ;Check is the stack empty
    cmp EAX $0
  je Print_Loop

  ;New line
  out 0 $13
  out 0 $10
ret

Number:
  mov ECX EBX
  
  cmp ECX $0
  jne NotZero
  dump "no_more"
  jmp EndNumber
  
  NotZero:
  cmp ECX $10 ;Is less that 10
  jl One
  
  ;Printed number is greater that 9
  mov EDX ECX
  div EDX $10
  mov EAX EDX
  add EDX $48
  push EDX
  mul EAX $10
  sub ECX EAX
  add ECX $48
  push ECX
  jmp EndNumber
  
  ;Printed number is less that 10
  One:
  add ECX $48
  push ECX
  EndNumber:
ret

Throw_Bottle:
  call Number
  dump "_bottles_of_beer_on_the_wall,_"
  call Number
  dump "_bottles_of_beer."
  call Print
  sub EBX $1
  dump "Take_one_down_and_pass_it_around,_"
  call Number
  dump "_bottles_of_beer_on_the_wall."
  call Print
  
  ;New line
  out 0 $13
  out 0 $10
ret

Main:
  call Throw_Bottle
  cmp EBX $0
  jne Main
  
  dump "No_more_bottles_of_beer_on_the_wall,_no_more_bottles_of_beer."
  call Print
  dump "Go_to_the_store_and_buy_some_more,_99_bottles_of_beer_on_the_wall."
  call Print
  out 0 $13
  out 0 $10
end