--- title: "French Vocabulary" id: 64644 type: "computer_media" slug: "french-vocabulary" url: "http://localhost/computer_media/french-vocabulary/" markdown_url: "http://localhost/computer_media/french-vocabulary.md" published_at: "2026-03-05T20:49:56+00:00" modified_at: "2026-03-31T08:46:24+00:00" author: "David Anderson" featured_image: url: "http://localhost/wp-content/uploads/2026/03/French.png" excerpt: "A colour-rich French vocabulary quiz that randomly selects questions without repeats, rewards correct answers with escalating beeps, and tracks your score across up to 20 words." category: - name: "Archived Media" slug: "archived-media" taxonomy: "category" url: "http://localhost/category/archived-media/" post_tag: - name: "Downloadable" slug: "downloadable" taxonomy: "post_tag" url: "http://localhost/tag/downloadable/" - name: "TS 2068" slug: "ts2068" taxonomy: "post_tag" url: "http://localhost/tag/ts2068/" model: - name: "Timex/Sinclair 2068" slug: "ts-2068" taxonomy: "model" url: "http://localhost/model/ts-2068/" genre: - name: "Education" slug: "education" taxonomy: "genre" url: "http://localhost/type/education/" - name: "French" slug: "french" taxonomy: "genre" url: "http://localhost/type/french/" media_contents: - id: 64613 title: "CATS Library Tape 10" type: "computer_media" url: "http://localhost/computer_media/cats-library-tape-10/" media_type: "Program" download_url: "https://archive.org/download/timex-sinclair-software-archive/French%20Vocabulary%20%28198x%29%28TS2068%29%28US%29%28Program%29.zip" mediadate: "198x" images: - url: "http://localhost/wp-content/uploads/2026/03/French.png" - url: "http://localhost/wp-content/uploads/2026/03/French-2.png" media_type_tags: "Education, French" --- # French Vocabulary This program is a French vocabulary quiz that tests the user on up to 20 English-to-French word pairs stored in DATA statements. It uses a random selection mechanism combined with a DIM A(20) tracking array to avoid repeating questions within a single session. Each round picks a random entry from the DATA list, checks whether it has already been asked via the array flag, and re-draws if so. The program uses colour attributes (PAPER, INK, FLASH, BRIGHT) extensively for visual feedback on correct and incorrect answers, and BEEP pitch is tied to the running score (2.5*SCORE) for a pleasing escalating reward sound. At the end of the session the program loops back to the start with RUN rather than GO TO 20, which resets all variables including the score and the tracking array. *** ## Program Structure The program is organised into three broad phases: 1. **Initialisation (lines 20–90):** Sets colours, dimensions the tracking array, displays a welcome screen, and validates the number of questions requested (1–20). 2. **Question loop (lines 100–240):** A `FOR C` loop iterates over each question. Within it, a `FOR D` loop reads randomly into the DATA list to pick a question, checks for repeats, then prompts the user and evaluates the answer. 3. **End-of-game (lines 250–270):** Displays the final score with flashing text, then calls `RUN` to restart entirely. ## Question-Selection Mechanism Random question selection is achieved by generating a random integer `INT(RND*20)+1` (stored in `D`) and then READing through the DATA list `D` times to land on that entry. Each DATA triplet contains the English word (`E$`), the French word (`F$`), and a unique integer index `X` (1–20). The array `A(X)` acts as a “seen” flag; if `A(X)=1`, line 150 branches back to line 110 to pick again. `RESTORE` at line 140 rewinds the DATA pointer before each selection so the READ loop always starts from the beginning. ## Data Organisation The vocabulary is stored across three DATA lines (280–300), each holding five triplets. Only 15 word pairs are actually defined (indices 1–15), yet the random number generator can produce values 1–20 and the array is dimensioned to 20. This means indices 16–20 can never be selected (there is no corresponding DATA), but the range mismatch does not cause an error because the repeat-checking loop will simply keep re-rolling until a valid, unseen index below 16 is chosen. | Index | English | French | | --- | --- | --- | | 1 | EVERYWHERE | PARTOUT | | 2 | SELDOM | RAREMENT | | 3 | OFTEN | SOUVENT | | 4 | NEVER | JAMAIS | | 5 | ALWAYS | TOUJOURS | | 6 | VERY | TRES | | 7 | MORE | PLUS | | 8 | LESS | MOINS | | 9 | YES | OUI | | 10 | NO | NON | | 11 | THANK YOU | MERCI | | 12 | ONE | UN | | 13 | TWO | DEUX | | 14 | THREE | TROIS | | 15 | FOUR | QUATRE | ## Notable Techniques - **Score-linked BEEP:** Line 200 uses `BEEP .1, 2.5*SCORE`, so each successive correct answer plays a higher-pitched tone — a simple but effective audio reward ladder. - **PAPER 9 (transparent):** Line 170 uses `PAPER 9` in the question header, which renders as “transparent” paper (inheriting the background), a useful idiom for mixed-colour lines. - **RUN for restart:** Line 270 uses `RUN` rather than `GO TO 20`. This clears all variables and re-dimensions the array, which is necessary to reset `A()` between games but also resets `SCORE` to 0 automatically. - **Colour attributes on PRINT:** Inline `INK`, `PAPER`, `FLASH`, and `BRIGHT` keywords within `PRINT` statements are used throughout for context-sensitive highlighting without permanently changing the global attribute state (except where set by line 20). ## Source Code ``` 10 REM FRENCH VOCABULARY 20 LET SCORE=0: PAPER 1: INK 7: BORDER 1: CLS 30 DIM A(20) 40 PRINT ''TAB 6;"Welcome to this French" 50 PRINT TAB 8;"vocabulary test." 60 PRINT ''TAB 6;"How many words would" 70 PRINT " you like to try? (1 to 20)" 80 INPUT B 90 IF B<1 OR B>20 THEN GO TO 80 100 FOR C=1 TO B 110 FOR D=1 TO INT (RND*20)+1 120 READ E$: READ F$: READ X 130 NEXT D 140 RESTORE : CLS 150 IF A(X)=1 THEN GO TO 110 160 LET A(X)=1 170 PRINT ''' INK RND*7; PAPER 9;" Question number ";C;": " 180 PRINT '''"What is the French word for";TAB 4;E$;"?" 190 INPUT A$ 200 IF A$=F$ THEN LET SCORE=SCORE+1: BEEP .1,2.5*SCORE: PRINT FLASH 1; INK 2; PAPER 5;'''" Yes, ";F$;" is correct " 210 IF A$<>F$ THEN PRINT ''"No, I'm sorry."''"The French word for ";E$;TAB 6;"is ";F$ 220 IF C