\ "No Weighting" from Starting Forth Chapter 12VARIABLE DENSITYVARIABLE THETAVARIABLE ID : Q ( -- addr ) [CHAR] Q WORD DUP C@ 1+ ALLOT ; : MATERIAL ( addr n1 n2 -- ) \ addr=string, n1=density, n2=theta CREATE , , , DOES> ( -- ) DUP @ THETA ! CELL+ DUP @ DENSITY ! CELL+ @ ID ! ; : .SUBSTANCE ( -- ) ID @ COUNT TYPE ;: FOOT ( n1 -- n2 ) 10 * ;: INCH ( n1 -- n2 ) 100 12 */ 5 + 10 / + ;: /TAN ( n1 -- n2 ) 1000 THETA @ */ ; : PILE ( n -- ) \ n=scaled height DUP DUP 10 */ 1000 */ 355 339 */ /TAN /TAN DENSITY @ 200 */ ." = " . ." tons of " .SUBSTANCE ; \ table of materials\ string-address density tan[theta] Q cement Q 131 700 MATERIAL CEMENT Q loose gravel Q 93 649 MATERIAL LOOSE-GRAVEL Q packed gravel Q 100 700 MATERIAL PACKED-GRAVEL Q dry sand Q 90 754 MATERIAL DRY-SAND Q wet sand Q 118 900 MATERIAL WET-SAND Q clay Q 120 727 MATERIAL CLAY
\ "No Weighting" from Starting Forth Chapter 12
VARIABLE DENSITY
VARIABLE THETA
VARIABLE ID
: Q ( -- addr ) [CHAR] Q WORD DUP C@ 1+ ALLOT ;
: MATERIAL ( addr n1 n2 -- ) \ addr=string, n1=density, n2=theta
CREATE , , ,
DOES> ( -- ) DUP @ THETA !
CELL+ DUP @ DENSITY ! CELL+ @ ID ! ;
: .SUBSTANCE ( -- ) ID @ COUNT TYPE ;
: FOOT ( n1 -- n2 ) 10 * ;
: INCH ( n1 -- n2 ) 100 12 */ 5 + 10 / + ;
: /TAN ( n1 -- n2 ) 1000 THETA @ */ ;
: PILE ( n -- ) \ n=scaled height
DUP DUP 10 */ 1000 */ 355 339 */ /TAN /TAN
DENSITY @ 200 */ ." = " . ." tons of " .SUBSTANCE ;
\ table of materials
\ string-address density tan[theta]
Q cement Q 131 700 MATERIAL CEMENT
Q loose gravel Q 93 649 MATERIAL LOOSE-GRAVEL
Q packed gravel Q 100 700 MATERIAL PACKED-GRAVEL
Q dry sand Q 90 754 MATERIAL DRY-SAND
Q wet sand Q 118 900 MATERIAL WET-SAND
Q clay Q 120 727 MATERIAL CLAY