From 259dc66d0ea3e5db48aceee3dd658198f72e4784 Mon Sep 17 00:00:00 2001 From: Piotr Wiszowaty Date: Thu, 28 Aug 2014 18:32:03 +0200 Subject: [PATCH] Add words: fill nip --- foco65 | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/foco65 b/foco65 index 6d93273..418009f 100755 --- a/foco65 +++ b/foco65 @@ -805,6 +805,17 @@ basewords_text = """ jmp next [end-code] ; +: nip +[code] + lda pstack,x + sta pstack+2,x + inx + lda pstack,x + sta pstack+2,x + inx + jmp next +[end-code] ; + : while [code] lda pstack,x @@ -1030,6 +1041,48 @@ cmove_done jmp next [end-code] ; +: fill ( c-addr u c -- ) +[code] + lda pstack,x + inx + sta w + inx + lda pstack,x + inx + sta cntr + lda pstack,x + inx + sta cntr+1 + lda pstack,x + inx + sta z + lda pstack,x + inx + sta z+1 + ldy #0 + lda cntr+1 + beq fill_tail + lda w +fill_loop_1 + sta (z),y + iny + bne fill_loop_1 + inc z+1 + dec cntr+1 + bne fill_loop_1 +fill_tail + lda cntr + beq fill_done + lda w +fill_loop_2 + sta (z),y + iny + dec cntr + bne fill_loop_2 +fill_done + jmp next +[end-code] ; + : dup ( x -- x x ) [code] ldy pstack,x