Advertisement
Guest User

Untitled

a guest
Jul 4th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. mov sp, 0
  2. jmp main
  3.  
  4. BFROM:
  5. %dw "++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>+"
  6. %dw "+.<<+++++++++++++++.>.+++.------.--------.>+.>.                 "
  7. %dw "                                                                "
  8. %dw "                                                                "
  9. %dw "                                                                "
  10. %dw "                                                                "
  11. %dw "                                                                "
  12. %dw "                                                                "
  13.  
  14. interpret:
  15.     mov r12, 0 ;rom tracker
  16.     mov r11, 0 ;current instruction
  17.     mov r10, 0 ;ram tracker
  18.     mov r9,  0 ;status 0=run 1=skip_jump 2=halt(unused)
  19.     mov r8,  0 ;temporary register for jump instr
  20.     mov r7,  0 ;screen port
  21.  
  22.     .loop_begin:
  23.         mov r11, [r12+BFROM]
  24.         cmp r11, 0x002B
  25.         je .instr_add
  26.         cmp r11, 0x002D
  27.         je .instr_sub
  28.         cmp r11, 0x003E
  29.         je .instr_right
  30.         cmp r11, 0x003C
  31.         je .instr_left
  32.         cmp r11, 0x005B
  33.         je .instr_label
  34.         cmp r11, 0x005D
  35.         je .instr_jump
  36.         cmp r11, 0x002E
  37.         je .instr_out
  38.  
  39.         mov r9, 2
  40.         jmp .loop_end
  41.  
  42.         .instr_add:
  43.             add [r10], 1
  44.             jmp .loop_iter
  45.         .instr_sub:
  46.             sub [r10], 1
  47.             jmp .loop_iter
  48.         .instr_right:
  49.             add r10, 1
  50.             jmp .loop_iter
  51.         .instr_left:
  52.             sub r10, 1
  53.             jmp .loop_iter
  54.         .instr_out:
  55.             send r7, [r10]
  56.             jmp .loop_iter
  57.  
  58.  
  59.         .instr_label:
  60.             ;if(*ptr == 0){
  61.             ;   status = 1;
  62.             ;   goto loop_iter
  63.             ;}
  64.             ;push ip
  65.             cmp [r10], 0
  66.             jnz .instr_label_zero_cont
  67.                 mov r9, 1
  68.                 jmp .loop_iter
  69.             .instr_label_zero_cont:
  70.             push r12
  71.             jmp .loop_iter
  72.  
  73.         .instr_jump:
  74.             ;pop temp
  75.             ;if(*ptr>0){
  76.             ;   ip = temp
  77.             ;}
  78.             ;goto .loop_iter
  79.             pop r8
  80.             cmp [r10], 0
  81.             jz .loop_iter
  82.                 mov r12, r8
  83.             jmp .loop_iter
  84.         .loop_iter:
  85.             ;ip+=1
  86.             ;if(ip > 512){
  87.             ;   status = 2
  88.             ;   goto .loop_end
  89.             ;}
  90.             ;if(ptr > 512)
  91.             ;   ptr=0
  92.             ;if(status==1 && *ip == ']'){
  93.             ;   ip+=1
  94.             ;   status = 0
  95.             ;}
  96.             ;goto .loop_begin
  97.             add r12, 1
  98.             cmp r12, 512
  99.             jng .loop_iter_ipcheck_cont
  100.                 mov r9, 2
  101.                 jmp .loop_end
  102.             .loop_iter_ipcheck_cont:
  103.             cmp r10, 512
  104.             jng .loop_iter_ptrcheck_cont
  105.                 mov r10, 0
  106.             .loop_iter_ptrcheck_cont:
  107.             cmp r9, 1
  108.             jne .loop_iter_imtiredoflabelingshit_cont
  109.                 cmp [r12], 0x005D
  110.                 jne .loop_iter_imtiredoflabelingshit_cont
  111.                     add r12, 1
  112.                     mov r9, 0
  113.             .loop_iter_imtiredoflabelingshit_cont:
  114.             jmp .loop_begin
  115.     .loop_end:
  116.     ret
  117.  
  118. main:
  119.     call interpret
  120.     hlt
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement