Home » Archimedes archive » Zipped Apps » FORTH » !FORTH/TestProgs/prog1

!FORTH/TestProgs/prog1

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » Archimedes archive » Zipped Apps » FORTH
Filename: !FORTH/TestProgs/prog1
Read OK:
File size: 03CE bytes
Load address: 0000
Exec address: 0000
File contents
CORE
: tokens INLINE BEGIN ASPACE TOKEN DUP NOT
        IF TOKEN_BUFFER @ TYPE CRET ENDIF
     END 0 LINE_BUFFER @ ! ;
10 ARRAY A1
10 ARRAY A2
10 ARRAY A3
: LOOK PRINT_MODE @ DUP 1 OR PRINT_MODE ! SWAP ."  ( " 9 0 DO DUP [I]@ . LOOP DROP ."  ) " PRINT_MODE ! ;
: OUTCHAR PRINT_MODE @ DUP 1 OR PRINT_MODE ! SWAP ECHO PRINT_MODE ! ;
: A1LOOK A1 LOOK ;
: A2LOOK A2 LOOK ;
: A3LOOK A3 LOOK ;
: A1SET 9 0 DO I> A1 [I]! LOOP ;
: A2SET 9 0 DO I> I> + A2 [I]! LOOP ;
: A3SET 9 0 DO I> 3 + A3 [I]! LOOP ;
: VectorAdd 0 DO 2OVER [I]@ 2OVER [I]@ + OVER [I]! LOOP ;
: VectorSub 0 DO 2OVER [I]@ 2OVER [I]@ - OVER [I]! LOOP ;
: VectorMul 0 DO 2OVER [I]@ 2OVER [I]@ * OVER [I]! LOOP ;
: VectorDiv 0 DO 2OVER [I]@ 2OVER [I]@ / OVER [I]! LOOP ;
A1SET 
A2SET
A3SET
A3 A2 A1 9 VectorAdd A3LOOK 43 OUTCHAR A2LOOK 61 OUTCHAR A1LOOK 13 OUTCHAR
A3 A2 A1 9 VectorSub A3LOOK 45 OUTCHAR A2LOOK 61 OUTCHAR A1LOOK 13 OUTCHAR
A3 A2 A1 9 VectorMul A3LOOK 42 OUTCHAR A2LOOK 61 OUTCHAR A1LOOK 13 OUTCHAR


00000000  43 4f 52 45 0a 3a 20 74  6f 6b 65 6e 73 20 49 4e  |CORE.: tokens IN|
00000010  4c 49 4e 45 20 42 45 47  49 4e 20 41 53 50 41 43  |LINE BEGIN ASPAC|
00000020  45 20 54 4f 4b 45 4e 20  44 55 50 20 4e 4f 54 0a  |E TOKEN DUP NOT.|
00000030  20 20 20 20 20 20 20 20  49 46 20 54 4f 4b 45 4e  |        IF TOKEN|
00000040  5f 42 55 46 46 45 52 20  40 20 54 59 50 45 20 43  |_BUFFER @ TYPE C|
00000050  52 45 54 20 45 4e 44 49  46 0a 20 20 20 20 20 45  |RET ENDIF.     E|
00000060  4e 44 20 30 20 4c 49 4e  45 5f 42 55 46 46 45 52  |ND 0 LINE_BUFFER|
00000070  20 40 20 21 20 3b 0a 31  30 20 41 52 52 41 59 20  | @ ! ;.10 ARRAY |
00000080  41 31 0a 31 30 20 41 52  52 41 59 20 41 32 0a 31  |A1.10 ARRAY A2.1|
00000090  30 20 41 52 52 41 59 20  41 33 0a 3a 20 4c 4f 4f  |0 ARRAY A3.: LOO|
000000a0  4b 20 50 52 49 4e 54 5f  4d 4f 44 45 20 40 20 44  |K PRINT_MODE @ D|
000000b0  55 50 20 31 20 4f 52 20  50 52 49 4e 54 5f 4d 4f  |UP 1 OR PRINT_MO|
000000c0  44 45 20 21 20 53 57 41  50 20 2e 22 20 20 28 20  |DE ! SWAP ."  ( |
000000d0  22 20 39 20 30 20 44 4f  20 44 55 50 20 5b 49 5d  |" 9 0 DO DUP [I]|
000000e0  40 20 2e 20 4c 4f 4f 50  20 44 52 4f 50 20 2e 22  |@ . LOOP DROP ."|
000000f0  20 20 29 20 22 20 50 52  49 4e 54 5f 4d 4f 44 45  |  ) " PRINT_MODE|
00000100  20 21 20 3b 0a 3a 20 4f  55 54 43 48 41 52 20 50  | ! ;.: OUTCHAR P|
00000110  52 49 4e 54 5f 4d 4f 44  45 20 40 20 44 55 50 20  |RINT_MODE @ DUP |
00000120  31 20 4f 52 20 50 52 49  4e 54 5f 4d 4f 44 45 20  |1 OR PRINT_MODE |
00000130  21 20 53 57 41 50 20 45  43 48 4f 20 50 52 49 4e  |! SWAP ECHO PRIN|
00000140  54 5f 4d 4f 44 45 20 21  20 3b 0a 3a 20 41 31 4c  |T_MODE ! ;.: A1L|
00000150  4f 4f 4b 20 41 31 20 4c  4f 4f 4b 20 3b 0a 3a 20  |OOK A1 LOOK ;.: |
00000160  41 32 4c 4f 4f 4b 20 41  32 20 4c 4f 4f 4b 20 3b  |A2LOOK A2 LOOK ;|
00000170  0a 3a 20 41 33 4c 4f 4f  4b 20 41 33 20 4c 4f 4f  |.: A3LOOK A3 LOO|
00000180  4b 20 3b 0a 3a 20 41 31  53 45 54 20 39 20 30 20  |K ;.: A1SET 9 0 |
00000190  44 4f 20 49 3e 20 41 31  20 5b 49 5d 21 20 4c 4f  |DO I> A1 [I]! LO|
000001a0  4f 50 20 3b 0a 3a 20 41  32 53 45 54 20 39 20 30  |OP ;.: A2SET 9 0|
000001b0  20 44 4f 20 49 3e 20 49  3e 20 2b 20 41 32 20 5b  | DO I> I> + A2 [|
000001c0  49 5d 21 20 4c 4f 4f 50  20 3b 0a 3a 20 41 33 53  |I]! LOOP ;.: A3S|
000001d0  45 54 20 39 20 30 20 44  4f 20 49 3e 20 33 20 2b  |ET 9 0 DO I> 3 +|
000001e0  20 41 33 20 5b 49 5d 21  20 4c 4f 4f 50 20 3b 0a  | A3 [I]! LOOP ;.|
000001f0  3a 20 56 65 63 74 6f 72  41 64 64 20 30 20 44 4f  |: VectorAdd 0 DO|
00000200  20 32 4f 56 45 52 20 5b  49 5d 40 20 32 4f 56 45  | 2OVER [I]@ 2OVE|
00000210  52 20 5b 49 5d 40 20 2b  20 4f 56 45 52 20 5b 49  |R [I]@ + OVER [I|
00000220  5d 21 20 4c 4f 4f 50 20  3b 0a 3a 20 56 65 63 74  |]! LOOP ;.: Vect|
00000230  6f 72 53 75 62 20 30 20  44 4f 20 32 4f 56 45 52  |orSub 0 DO 2OVER|
00000240  20 5b 49 5d 40 20 32 4f  56 45 52 20 5b 49 5d 40  | [I]@ 2OVER [I]@|
00000250  20 2d 20 4f 56 45 52 20  5b 49 5d 21 20 4c 4f 4f  | - OVER [I]! LOO|
00000260  50 20 3b 0a 3a 20 56 65  63 74 6f 72 4d 75 6c 20  |P ;.: VectorMul |
00000270  30 20 44 4f 20 32 4f 56  45 52 20 5b 49 5d 40 20  |0 DO 2OVER [I]@ |
00000280  32 4f 56 45 52 20 5b 49  5d 40 20 2a 20 4f 56 45  |2OVER [I]@ * OVE|
00000290  52 20 5b 49 5d 21 20 4c  4f 4f 50 20 3b 0a 3a 20  |R [I]! LOOP ;.: |
000002a0  56 65 63 74 6f 72 44 69  76 20 30 20 44 4f 20 32  |VectorDiv 0 DO 2|
000002b0  4f 56 45 52 20 5b 49 5d  40 20 32 4f 56 45 52 20  |OVER [I]@ 2OVER |
000002c0  5b 49 5d 40 20 2f 20 4f  56 45 52 20 5b 49 5d 21  |[I]@ / OVER [I]!|
000002d0  20 4c 4f 4f 50 20 3b 0a  41 31 53 45 54 20 0a 41  | LOOP ;.A1SET .A|
000002e0  32 53 45 54 0a 41 33 53  45 54 0a 41 33 20 41 32  |2SET.A3SET.A3 A2|
000002f0  20 41 31 20 39 20 56 65  63 74 6f 72 41 64 64 20  | A1 9 VectorAdd |
00000300  41 33 4c 4f 4f 4b 20 34  33 20 4f 55 54 43 48 41  |A3LOOK 43 OUTCHA|
00000310  52 20 41 32 4c 4f 4f 4b  20 36 31 20 4f 55 54 43  |R A2LOOK 61 OUTC|
00000320  48 41 52 20 41 31 4c 4f  4f 4b 20 31 33 20 4f 55  |HAR A1LOOK 13 OU|
00000330  54 43 48 41 52 0a 41 33  20 41 32 20 41 31 20 39  |TCHAR.A3 A2 A1 9|
00000340  20 56 65 63 74 6f 72 53  75 62 20 41 33 4c 4f 4f  | VectorSub A3LOO|
00000350  4b 20 34 35 20 4f 55 54  43 48 41 52 20 41 32 4c  |K 45 OUTCHAR A2L|
00000360  4f 4f 4b 20 36 31 20 4f  55 54 43 48 41 52 20 41  |OOK 61 OUTCHAR A|
00000370  31 4c 4f 4f 4b 20 31 33  20 4f 55 54 43 48 41 52  |1LOOK 13 OUTCHAR|
00000380  0a 41 33 20 41 32 20 41  31 20 39 20 56 65 63 74  |.A3 A2 A1 9 Vect|
00000390  6f 72 4d 75 6c 20 41 33  4c 4f 4f 4b 20 34 32 20  |orMul A3LOOK 42 |
000003a0  4f 55 54 43 48 41 52 20  41 32 4c 4f 4f 4b 20 36  |OUTCHAR A2LOOK 6|
000003b0  31 20 4f 55 54 43 48 41  52 20 41 31 4c 4f 4f 4b  |1 OUTCHAR A1LOOK|
000003c0  20 31 33 20 4f 55 54 43  48 41 52 0a 0a 0a        | 13 OUTCHAR...|
000003ce