COMMA -------------------------------------------------------------------------------
(1) Take a 32 bit integer from the stack.
(2) Store it to the user memory pointed to by HERE
(3) Add 4 to HERE.
previous value of HERE
|
V
+---------+---+---+---+---+---+---+---+---+-- - - - - --+------------+
| LINK | 6 | D | O | U | B | L | E | 0 | | |
+---------+---+---+---+---+---+---+---+---+-- - - - - --+------------+
len pad ^
|
new value of HERE
24
WORD gnarzalot CREATE
WORDS
CREATElot TICK WORDFIND QUADRUPLE DOUBLE foo go p n s SHOW-PAGENO PAGENO-- PAGENO++ CHECK-PAGENO PAGEN
O #PAGES show-page factor-out show-file close-file read-file show-buf clrscr gohome '\e' '2' 'J' 'H' '
[' bufsize buf disassemble hi disassemble disassemble description-col search&print-CFA foo dump-dword
.length&name .word .length&name .word-name .word-length word-name .address .dword @.dword-little @.dwo
rd .word .byte .s TICK .word foo WELCOME INLINE (INLINE) RDTSC RDTSC POP PUSH EDI ESI EBP ESP EBX EDX
ECX EAX ;CODE NEXT PERROR READ-FILE CLOSE-FILE CREATE-FILE OPEN-FILE R/W R/O MORECORE BRK UNUSED GET-B
RK BYE ENVIRON ARGV ARGC CSTRING STRLEN Z" PRINT-STACK-TRACE ABORT THROW CATCH EXCEPTION-MARKER ['] :N
ONAME SEE CFA> ENDCASE ENDOF OF CASE DUMP FORGET WORDS ?IMMEDIATE ?HIDDEN ID. +TO TO VALUE VARIABLE CE
LLS ALLOT CONSTANT ." S" C, ALIGN ALIGNED DEPTH WITHIN ? U. . .R U.R UWIDTH .S U. HEX DECIMAL SPACES P
ICK TUCK NIP ( UNLESS REPEAT WHILE AGAIN UNTIL BEGIN ELSE THEN IF RECURSE [COMPILE] '.' '-' '0' 'A' '"
' ')' '(' ';' ':' LITERAL NOT FALSE TRUE NEGATE SPACE CR BL '\n' MOD / SYSCALL0 SYSCALL1 SYSCALL2 SYSC
ALL3 EXECUTE CHAR INTERPRET QUIT TELL LITSTRING 0BRANCH BRANCH ' HIDE HIDDEN IMMEDIATE ; : ] [ , CREAT
E >DFA >CFA FIND NUMBER WORD EMIT KEY DSP! DSP@ RDROP RSP! RSP@ R> >R O_NONBLOCK O_APPEND O_TRUNC O_EX
CL O_CREAT O_RDWR O_WRONLY O_RDONLY SYS_BRK SYS_CREAT SYS_WRITE SYS_READ SYS_CLOSE SYS_OPEN SYS_EXIT F
_LENMASK F_HIDDEN F_IMMED DOCOL R0 VERSION BASE S0 LATEST HERE STATE CMOVE C@C! C@ C! -! +! @ ! LIT EX
IT INVERT XOR OR AND 0>= 0<= 0> 0< 0<> 0= >= <= > < <> = /MOD * - + 4- 4+ 1- 1+ ?DUP 2SWAP 2DUP 2DROP
-ROT ROT OVER DUP SWAP DROP
disassemble CREATElot
0 0 8C DC: 0 0 8C CC (next word pointer: CREATElot)
hidden: 0, immediate: 0, length: 9, name: CREATElot
0 0 8C E0: 45 52 43 9
0 0 8C E4: 6C 45 54 41
0 0 8C E8: 0 0 74 6F
0 0 8C EC: 0 0 8C EC (codeword: not forth)
DOCOL ,
TICK . ,
TICK EXIT ,
SEE CREATElot
: CREATElot . ;
disassemble CREATElot
0 0 8C DC: 0 0 8C CC (next word pointer: CREATElot)
hidden: 0, immediate: 0, length: 9, name: CREATElot
0 0 8C E0: 45 52 43 9
0 0 8C E4: 6C 45 54 41
0 0 8C E8: 0 0 74 6F
0 0 8C EC: 0 0 0 0 (codeword: forth)
0 0 8C F0: 0 0 57 2C .
0 0 8C F4: 0 0 7 8C EXIT
: gnarzalot . ;
disassemble gnarzalot
0 0 8C F8: 0 0 8C DC (next word pointer: CREATElot)
hidden: 0, immediate: 0, length: 9, name: gnarzalot
0 0 8C FC: 61 6E 67 9
0 0 8D 0: 6C 61 7A 72
0 0 8D 4: 0 0 74 6F
0 0 8D 8: 0 0 0 0 (codeword: forth)
0 0 8D C: 0 0 57 2C .
0 0 8D 10: 0 0 7 8C EXIT
23 .
23 42 CREATElot
42
n
24