Loops ja funcionam!

This commit is contained in:
Pedro de Oliveira 2014-08-13 01:12:38 +01:00
parent dd54db97af
commit 3879abae4b
2 changed files with 46 additions and 7 deletions

View File

@ -12,9 +12,10 @@ OP_IN equ ","
OP_JMP_FWD equ "["
OP_JMP_BCK equ "]"
;brainfuck db "++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.", 0
brainfuck db "++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.", 0
;brainfuck db "+++++++++++++++++++++++++++++++++.", 0
brainfuck db "++++[>++++++++++<-]>++.>+++++++++++++.<<++[>.<-]>>.<<+++[>.<-]>>.<<++++[>.<-]>>.<<+++++[>.<-]>>.", 0
;brainfuck db "++++[>++++++++++<-]>++.>+++++++++++++.<<++[>.<-]>>.<<+++[>.<-]>>.<<++++[>.<-]>>.<<+++++[>.<-]>>.", 0
;brainfuck db "++[>+<-]" ,0
memory_pos db $0,$80
source_pos db $0
@ -24,8 +25,6 @@ start ; Começa em $75a2
push bc ; Guarda BC na stack
main
;ld hl, brainfuck
read_bf
ld hl, brainfuck
ld a, (source_pos)
ld d, $0
@ -71,28 +70,33 @@ read_bf
jr z, F_JMP_BCK
continue
inc hl
ld a, (source_pos)
inc a
ld (source_pos), a
jr read_bf
jr main
end_main
pop bc ; Tira o BC da stack
ret ; Sai para o BASIC
; -------------------------------------
F_INC_DP
ld a, (memory_pos)
inc a
ld (memory_pos), a
jr continue
; -------------------------------------
F_DEC_DP
ld a, (memory_pos)
dec a
ld (memory_pos), a
jr continue
; -------------------------------------
F_INC_VAL
ld de, (memory_pos)
ld a, (de)
@ -100,6 +104,8 @@ F_INC_VAL
ld (de), a
jr continue
; -------------------------------------
F_DEC_VAL
ld de, (memory_pos)
ld a, (de)
@ -107,12 +113,16 @@ F_DEC_VAL
ld (de), a
jr continue
; -------------------------------------
F_OUT
ld de, (memory_pos)
ld a, (de)
rst $10
jr continue
; -------------------------------------
F_IN
ld a, $0
ld (last_k), a ; Limpa o valor da ultima tecla pressionada
@ -124,17 +134,46 @@ F_IN_LOOP
ld (de), a
jr continue
; -------------------------------------
F_JMP_FWD
ld de, (memory_pos)
ld a, (de)
cp 0
jr z, SKIP_LOOP
ld a, (source_pos)
ld d, 0
ld e, a
push de
jr continue
SKIP_LOOP
ld a, (source_pos)
inc a
ld (source_pos), a
ld hl, brainfuck
ld a, (source_pos)
ld d, $0
ld e, a
add hl, de
ld a, (hl)
cp OP_JMP_BCK
jr nz, SKIP_LOOP
ld a, (source_pos)
inc a
ld (source_pos), a
jp main
; -------------------------------------
F_JMP_BCK
pop de
ld a, e
ld (source_pos), a
jp read_bf
jp main
end start

Binary file not shown.