Programming samples by Robert Elton Maas Forth These are excerpts from the file ForthScratch (17k bytes total): ( Simple constants, push the number on the stack ) HEX : SPCHR ( -- AsciiCodeForSpace ) 20 ; MACRO HEX : 'CH ( -- AsciiCodeForApostrophe ) 27 ; MACRO HEX : 2T8 ( -- 2**8 ) 100 ; MACRO ( Use these instructions to load registers A0 and D0 before register traps ) : >D0L ,$ 201E ( StackLong -> D0 ) ; MACRO : >A0L ,$ 205E ( ?? Stack.long -> A0 ) ; MACRO ( Use these instructions to get registers A0 and D0 after register traps ) : stack ) ; MACRO : stack ) ; MACRO : stack ) ; MACRO ( Memory-manager traps ) : FreeMem ( -- Nbytes.L ) ,$ A01C ( _FreeMem ) D0L ,$ A122 ( _NewHandle ) A0L ,$ A025 ( _GetHandleSize ) A0L ,$ A029 A0L ,$ A02A A0L ,$ A02B ( _EmptyHandle ) A0L ,$ A023 ( _DisposHandle ) A0L ,$ A126 ( _HandleZone ) " ABORT THEN ROT IF ." OSTYPE =" 'CH EMIT 2DUP 2 0 D+ OSEMIT 'CH EMIT SPACE SPACE THEN ." VRef =" 2DUP 6 0 D+ L@ HEX U. SPACE ." LengthOfFilename =" 8 2 + 0 D+ 2DUP BY@ DECIMAL DUP . ROT ROT 1 0 D+ ROT CR ." FileName =" 'CH EMIT N@EMIT 'CH EMIT ; ( Given a single bit, print * or space accordingly ) HEX : PB IF 2A EMIT ELSE SPACE THEN ; DECIMAL ( Given a byte, print * or space for each bit ) HEX : PBY 8 BEGIN DUP WHILE SWAP 2 * 100 /MOD PB SWAP 1 - REPEAT DROP DROP ; DECIMAL ( Print out desktop pattern as 8 rows of 8 bits each ) HEX : PDP A3C 8 BEGIN DUP WHILE SWAP DUP 0 BY@ PBY CR 1 + SWAP 1 - REPEAT DROP DROP ; DECIMAL