=== MID TERM EXAM 2 === Screen 0 not modified 0 \ 13:36JWB02/16/86 1 \ Last change: Screen 011 20:25JWB02/17/86 2 3 MATHEMATICS 495 4 5 6 INTRODUCTION TO THE FORTH PROGRAMMING LANGUAGE 7 8 9 MID TERM EXAM 10 11 FEBRUARY 18, 1986 12 13 TOTAL MARKS = 25 14 15 Screen 1 not modified 0 \ QUESTION 1 ( 5 MARKS ) 13:45JWB02/16/86 1 Show the resulting stack after return is pressed. 2 3 Example: 54 21 13 SWAP DROP 4 Answer: 54 13 R D2* D2* 4 R@ - DUP 0< 5 IF R@ + R> 2* 1- 6 ELSE R> 2* 3 + 7 THEN LOOP ; 8 9 : 2'S-BIT ( drem2 proot2 drem3 proot3 ) \ get penultimate bit 10 >R D2* DUP 0< 11 IF D2* R@ - R> 1+ 12 ELSE D2* R@ 2DUP U< 13 IF DROP R> 1- 14 ELSE - R> 1+ 15 THEN THEN ; Screen 9 not modified 0 \ 32 bit square root KS 4TH DIM V4N1P9 1 : 1'S-BIT ( drem3 proot3 fullroot ) \ remainder lost 2 >R DUP 0< 3 IF 2DROP R> 1+ 4 ELSE D2* 32768 R@ DU< 0= R> THEN ; 5 \ 32-bit unsigned radicand to 16-bit unsigned square root 6 : SQRT ( ud u ) 7 0 1 8 EASY-BITS ROT DROP 6 EASY-BITS 8 2'S-BIT 1'S-BIT ; 9 \ Display square root of 16-bit number with 3 decimal places. 10 : .SQRT ( n -- ) \ n must be < 4096 11 16 * 62500 UM* 12 SQRT 0 <# # # # ASCII . HOLD #S #> 13 TYPE SPACE ; 14 : TEST 100 0 DO CR I 5 .R SPACE I .SQRT LOOP ; 15 Screen 11 not modified 0 \ ANSWER TO QUESTION 5 ( 5 MARKS ) 20:25JWB02/17/86 1 Show the resulting stack after return is pressed. 2 3 Example: 54 21 13 SWAP DROP 4 Answer: 54 13 Screen 16 not modified 0 \ Used for testing solution. 18:34JWB02/16/86 1 2 : #IN QUERY INTERPRET ; 3 : ENTER-DATA ( -- -- ) 4 CLEAR-DATA 0 BEGIN 5 CR DUP . ASCII > EMIT #IN DUP 0<> 6 WHILE OVER 2* DATA + ! 1+ REPEAT 2DROP ; 7 8 9 10 11 12 13 14 15