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/cas.asm | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 amforth-6.5/avr8/words/cas.asm (limited to 'amforth-6.5/avr8/words/cas.asm') diff --git a/amforth-6.5/avr8/words/cas.asm b/amforth-6.5/avr8/words/cas.asm new file mode 100644 index 0000000..f59ae26 --- /dev/null +++ b/amforth-6.5/avr8/words/cas.asm @@ -0,0 +1,28 @@ +; ( new old addr -- f ) +; Multitasking +; Atomic Compare and Swap: store new at addr and set f to true if contents of addr is equal to old. +VE_CAS: + .dw $ff03 + .db "cas",0 + .dw VE_HEAD + .set VE_HEAD = VE_CAS +XT_CAS: + .dw PFA_CAS +PFA_CAS: + movw zl, tosl + loadtos + ldd temp0, Z+0 + ldd temp1, Z+1 + cp tosl, temp0 + cpc tosh, temp1 + loadtos + brne PFA_CAS1 + std Z+0, tosl + std Z+1, tosh + ser tosl + rjmp PFA_CAS2 +PFA_CAS1: + clr tosl +PFA_CAS2: + mov tosh, tosl + jmp_ DO_NEXT -- cgit v1.2.3