Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- mov sp, 0
- jmp main
- BFROM:
- %dw "++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>+"
- %dw "+.<<+++++++++++++++.>.+++.------.--------.>+.>. "
- %dw " "
- %dw " "
- %dw " "
- %dw " "
- %dw " "
- %dw " "
- interpret:
- mov r12, 0 ;rom tracker
- mov r11, 0 ;current instruction
- mov r10, 0 ;ram tracker
- mov r9, 0 ;status 0=run 1=skip_jump 2=halt(unused)
- mov r8, 0 ;temporary register for jump instr
- mov r7, 0 ;screen port
- .loop_begin:
- mov r11, [r12+BFROM]
- cmp r11, 0x002B
- je .instr_add
- cmp r11, 0x002D
- je .instr_sub
- cmp r11, 0x003E
- je .instr_right
- cmp r11, 0x003C
- je .instr_left
- cmp r11, 0x005B
- je .instr_label
- cmp r11, 0x005D
- je .instr_jump
- cmp r11, 0x002E
- je .instr_out
- mov r9, 2
- jmp .loop_end
- .instr_add:
- add [r10], 1
- jmp .loop_iter
- .instr_sub:
- sub [r10], 1
- jmp .loop_iter
- .instr_right:
- add r10, 1
- jmp .loop_iter
- .instr_left:
- sub r10, 1
- jmp .loop_iter
- .instr_out:
- send r7, [r10]
- jmp .loop_iter
- .instr_label:
- ;if(*ptr == 0){
- ; status = 1;
- ; goto loop_iter
- ;}
- ;push ip
- cmp [r10], 0
- jnz .instr_label_zero_cont
- mov r9, 1
- jmp .loop_iter
- .instr_label_zero_cont:
- push r12
- jmp .loop_iter
- .instr_jump:
- ;pop temp
- ;if(*ptr>0){
- ; ip = temp
- ;}
- ;goto .loop_iter
- pop r8
- cmp [r10], 0
- jz .loop_iter
- mov r12, r8
- jmp .loop_iter
- .loop_iter:
- ;ip+=1
- ;if(ip > 512){
- ; status = 2
- ; goto .loop_end
- ;}
- ;if(ptr > 512)
- ; ptr=0
- ;if(status==1 && *ip == ']'){
- ; ip+=1
- ; status = 0
- ;}
- ;goto .loop_begin
- add r12, 1
- cmp r12, 512
- jng .loop_iter_ipcheck_cont
- mov r9, 2
- jmp .loop_end
- .loop_iter_ipcheck_cont:
- cmp r10, 512
- jng .loop_iter_ptrcheck_cont
- mov r10, 0
- .loop_iter_ptrcheck_cont:
- cmp r9, 1
- jne .loop_iter_imtiredoflabelingshit_cont
- cmp [r12], 0x005D
- jne .loop_iter_imtiredoflabelingshit_cont
- add r12, 1
- mov r9, 0
- .loop_iter_imtiredoflabelingshit_cont:
- jmp .loop_begin
- .loop_end:
- ret
- main:
- call interpret
- hlt
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement