From 67d25d837ac55f28a366c0a3b262e439a6e75fc3 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Sat, 19 Aug 2017 12:15:28 +0200 Subject: Add AmForth --- amforth-6.5/avr8/words/fetch.asm | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 amforth-6.5/avr8/words/fetch.asm (limited to 'amforth-6.5/avr8/words/fetch.asm') diff --git a/amforth-6.5/avr8/words/fetch.asm b/amforth-6.5/avr8/words/fetch.asm new file mode 100644 index 0000000..6cd2f2b --- /dev/null +++ b/amforth-6.5/avr8/words/fetch.asm @@ -0,0 +1,33 @@ +; ( a-addr -- n ) +; Memory +; read 1 cell from RAM address +VE_FETCH: + .dw $ff01 + .db "@",0 + .dw VE_HEAD + .set VE_HEAD = VE_FETCH +XT_FETCH: + .dw PFA_FETCH +PFA_FETCH: +.if WANT_UNIFIED == 1 + ldi zh, high(RAMEND) + ldi zl, low(RAMEND) + cp tosl, zl + cpc tosh, zh + brlt PFA_FETCHRAM + brbs 1, PFA_FETCHRAM + rjmp PFA_FETCHOTHER +.endif +PFA_FETCHRAM: + movw zl, tosl + ; low byte is read before the high byte + ld tosl, z+ + ld tosh, z+ + jmp_ DO_NEXT +.if WANT_UNIFIED == 1 +PFA_FETCHOTHER: + adiw zl, 1 + sub tosl, zl + sbc tosh, zh + jmp_ PFA_FETCHE +.endif -- cgit v1.2.3