-' 1+ , : / /MOD SWAP DROP ;
+: / /MOD SWAP DROP ;
: MOD /MOD DROP ;
+: */ * / ;
: '\n' 10 ;
: BL 32 ;
;
: DO IMMEDIATE
- ' >R , ' >R ,
+ ' LIT ,
+ HERE @
+ 0 ,
+ ' >R , ' >R , ' >R ,
HERE @
;
+: I RSP@ 2- @ ;
+
+: LEAVE RDROP RDROP RDROP EXIT ;
+
: LOOP IMMEDIATE
' R> , ' R> , ' 1+ , ' 2DUP , ' - ,
' SWAP , ' >R , ' SWAP , ' >R ,
' 0<= , ' 0BRANCH ,
HERE @ - ,
- ' RDROP , ' RDROP ,
+ ' RDROP , ' RDROP , ' RDROP ,
+ DUP HERE @ SWAP -
+ SWAP !
;
@ ( and fetch )
;
+
( With the looping constructs, we can now write SPACES, which writes n spaces to stdout. )
: SPACES ( n -- )
BEGIN
U.
;
-: U. U. SPACE ;
-
: . 0 .R SPACE ;
: .S ( -- )
DROP
;
+: U. U. SPACE ;
+
( ? fetches the integer at an address and prints it. )
: ? ( addr -- ) @ . ;