--- title: "Code Master" id: 70769 type: "computer_media" slug: "codemaster" url: "http://localhost/computer_media/codemaster/" markdown_url: "http://localhost/computer_media/codemaster.md" published_at: "2026-08-23T15:08:14+00:00" modified_at: "2026-08-23T17:14:36+00:00" author: "David Anderson" featured_image: url: "http://localhost/wp-content/uploads/2026/08/codemaster.png" alt: "CODEMASTER screen" excerpt: "Decode famous quotations using substitution ciphers, with frequency analysis, hints, and an edit mode to add your own puzzles to the built-in library." 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/" indiv: - name: "David Hoshor" slug: "david-hoshor" taxonomy: "indiv" url: "http://localhost/indiv/david-hoshor/" - name: "Thomas Simon" slug: "simon-thomas" taxonomy: "indiv" url: "http://localhost/indiv/simon-thomas/" genre: - name: "Game" slug: "game" taxonomy: "genre" url: "http://localhost/type/game/" media_type: "Program" programmers: - name: "David Hoshor" slug: "david-hoshor" taxonomy: "indiv" url: "http://localhost/indiv/david-hoshor/" - name: "Thomas Simon" slug: "simon-thomas" taxonomy: "indiv" url: "http://localhost/indiv/simon-thomas/" download_url: "https://archive.org/download/timex-sinclair-software-archive/CODEMASTER%20%28198x%29%28Hoshor%2C%20David%3B%20Simon%2C%20Thomas%29%28TS2068%29%28US%29%28Program%29.zip" mediadate: "198x" images: - url: "http://localhost/wp-content/uploads/2026/08/codemaster.png" alt: "CODEMASTER screen" media_type_tags: "Game" --- # Code Master Cryptogram puzzle game that challenges players to decode substitution ciphers drawn from a large library of famous quotations embedded in the program’s REM statement at line 10. The game supports three cipher types — simple replacement, partial replacement, and graphic codes — and includes a frequency distribution analysis tool and a hint system. Players navigate a cursor with keys 5 and 8 to position under encoded characters, then press the replacement letter; key 0 deletes an entry and key 1 opens the help menu. The program uses machine code routines loaded from a separate code block (base address around 58368) for tasks including color changes, puzzle retrieval, and encoding, and employs ON ERR to branch differently between Spectrum and TS-2068 hardware. An edit mode allows users to add their own puzzles, storing them directly in memory via POKE operations referenced through a VAL-based expression evaluator for 16-bit address arithmetic. *** ### Program Structure The program is organized into clearly labeled sections, with REM comments acting as section headers. The major functional blocks are: 1. Line 10: Massive REM block containing the entire built-in quotation library, delimited by `\::` (█) characters. 2. Lines 20–230: Main game loop — cursor movement, letter entry, deletion, and hint activation. 3. Lines 240–410: Help menu with sub-options for instructions, frequency distribution, hint mode, color changes, copy, and quit. 4. Lines 420–460: Puzzle-solved celebration (beep sweep, color change) and play-again prompt. 5. Lines 470–630: Alphabet encoding routine — generates substitution cipher mappings. 6. Lines 640–770: String splitter — wraps long puzzle text into up to 6 display rows of 32 characters. 7. Lines 780–810: Generic keyboard input subroutine with bounded range checking. 8. Lines 820–840: Random color-change routine. 9. Lines 850–900: Platform detection and 16-bit address evaluation setup. 10. Lines 910–1130: Edit mode — add, review, and print puzzles stored in memory. 11. Lines 1140–1480: Initialization and main introduction, puzzle selection, and screen setup. 12. Lines 1490–1540: Instruction pages. 13. Lines 1550–1580: Save/load routines. 14. Lines 1590–1630: TS-2068 ON ERR handler; secondary REM notes and ON ERR RESET. ### Quotation Library in REM The entirety of the quotation database — over 100 famous quotes — is stored in the REM statement at line 10, separated by `█` (double-width block graphic, `\::`) characters. Machine code routines index into this REM data directly by POKEing the BASIC area pointers and using `USR` calls to extract puzzle strings, bypassing the BASIC interpreter entirely for data access. This is a space-efficient technique that avoids the overhead of DATA/READ statements. ### Machine Code Usage The program relies heavily on a companion machine code block SAVEd separately and loaded to address 58368. The USR calls serve many distinct functions: | Address | Purpose | | --- | --- | | `58368` | Paper color change routine | | `58406` | Ink color change routine | | `58436` | Returns length for DIM P$ (puzzle string sizing) | | `58501` | Returns first character of puzzle string (loads P$) | | `58528` | Encodes/initializes A$(1,1) after encoding step | | `58637` | Updates A$(1,1) on letter entry | | `58692` | Updates A$(1,1) on hint confirmation | | `58726` | Used at start of help menu (returns Y) | | `58738` | Screen/display restore (called on help exit and copy) | | `58750` | Copy routine variant (BAS ≤ 25000) | | `58756` | Copy routine variant (BAS > 25000) | | `58762` | Memory preparation for new puzzle entry | | `58790` | Spectrum ON BREAK handler setup | ### Platform Detection The subroutine at lines 850–900 detects whether the program is running on a Spectrum or TS-2068 by reading the BASIC start address from system variable 23635 using the 16-bit PEEK expression stored in `E$(1)`. If `BAS` is below 25000, the system is treated as a Spectrum and USR 58790 installs a machine code ON BREAK handler. If `BAS` ≥ 25000 (TS-2068), ON ERR GO TO 1590 is used instead, where `RESET` at line 1630 provides a final safety net. ### 16-Bit Address Arithmetic via VAL Strings A three-element string array `E$` is used to perform 16-bit address reads and byte splits without hardcoding expressions. `E$(1)` holds `"PEEK ARG+256*PEEK (ARG+1)"`, `E$(2)` holds `"INT (ARG/256)"`, and `E$(PI)` (i.e., element 3, since INT(PI)=3) holds `"ARG-(VAL E$(2)*256)"`. By setting `ARG` to a target address and evaluating `VAL E$(1)`, the program reads a 16-bit little-endian word; `VAL E$(PI)` and `VAL E$(2)` give the low and high bytes respectively. This avoids defining a function or repeating the PEEK expression throughout the code. ### Key BASIC Idioms - **Bounded keyboard subroutine:** Lines 780–810 implement a reusable key-wait loop that only accepts characters in the range `L$(1)` to `L$(2)`, then waits for key release before returning — used throughout for menu navigation. - **Cursor acceleration:** Lines 160–170 implement a key-repeat suppression loop: if a movement key is still held and the repeat counter `C` is under 10, it increments and loops, creating a small initial delay before fast repeat. - **RANDOMIZE as a side-effect call:**`RANDOMIZE USR addr` is used to call machine code routines whose return value is discarded, a standard Sinclair BASIC technique. - **String array overloading:**`A$` (dimensioned 20×32) serves multiple roles: rows 1–6 hold solution state, rows 7–12 hold encoded puzzle lines, rows 13–18 hold display lines, row 19 stores the cipher alphabet, and row 20 stores letter frequency counts. - **INVERSE and AT in PRINT:** The game uses `PRINT AT row,col; INVERSE 1; CHR$...` to highlight hint-revealed characters in place. ### Encoding Logic The subroutine at lines 470–630 generates a substitution cipher. For a simple replacement code (`O(1)=1`), it ensures no letter maps to itself by checking `CODE I$(X)-65 = LEN C$` at line 530 and restarting if the entire alphabet comes out identity-mapped (line 590). For a partial replacement code, this self-mapping check is skipped. For a graphic code (`O(4)=1`), the routine short-circuits and stores the plain alphabet directly, leaving the graphical substitution to the machine code routines. The flag array `O(5)` is used to indicate a user-supplied pre-encoded puzzle. ### Puzzle Storage in Edit Mode Edit mode (lines 910–1130) stores user puzzles directly into the BASIC program area by POKEing bytes into the REM statement at line 10, immediately after existing data. The 16-bit offset of used bytes is maintained in `BAS+15/16` and the puzzle count in `BAS+7/8`, all manipulated via the `E$` VAL expressions. A terminating byte of 143 (`CHR$ 143`, which is the `\::` block graphic token) marks the end of each puzzle. ### String Splitting The subroutine at lines 640–770 breaks a long puzzle string `P$` into up to 6 rows of at most 32 characters, breaking at spaces. Starting from position 32, it searches backward for a space boundary (lines 690–700) and splits there, stripping leading spaces from the remainder (lines 730–740). Rows that are blank or empty are silently skipped. ### Anomalies and Notes - Line 1190 contains `IF I$="" THEN GO TO 1180` immediately after a GO SUB 1490 call — this is a guard against `I$` being cleared inside the subroutine, forcing re-entry of the instruction page if no key was registered. - Line 300 uses `AND O(PI)` (i.e., `O(3)`) as a conditional expression flag to POKE 23607 before the frequency display — controlling the character set used for printing. - The word “CANNNOT” (triple N) appears in the quotation attributed to W.T. Sherman in the REM data — this is a typo in the original source text. - Line 1610 contains a contact address for the author embedded in a REM statement, used as an on-screen display via `LIST 1610` on the TS-2068 error path. ## Source Code ``` 10 REM \..A\' xz9\::WORDS WOUND. BUT AS A VETERAN OF TWELVE YEARS IN THE UNITED STATES SENATE, I HAPPILY ATTEST THAT THEY DO NOT KILL. - LYNDON JOHNSON\::THE WHITE MAN MADE US MANY PROMISES. HE KEPT BUT ONE. HE PROMISED TO TAKE OUR LAND, AND HE TOOK IT. - CHIEF RED CLOUD\::I WOULDN'T JOIN ANY CLUB THAT WOULD HAVE ME AS A MEMBER. - GROUCHO MARX\::I PREDICT THAT EXACT REPRODUCTION THROUGH CLONING WILL NOT BECOME POPULAR. TOO MANY PEOPLE ALREADY FIND IT DIFFICULT TO LIVE WITH THEMSELVES. - JEANNE DIXON\::SOAP AND EDUCATION ARE NOT AS SUDDEN AS A MASSACRE, BUT THEY ARE MORE DEADLY IN THE LONG RUN. - MARK TWAIN\::AFRAID OF DEATH? ONE SHOULD BE AFRAID OF LIFE. - MARLENE DIETRICH\::IF AN ASS GOES TRAVELING, HE'LL NOT COME HOME A HORSE. - THOMAS FULLER\::IF YOU GIVE ME SIX LINES WRITTEN BY THE MOST HONEST MAN, I WILL FIND SOMETHING IN THEM TO HANG HIM. - CARDINAL RICHELIEU\::THE BEST MEASURE OF A MAN'S HONESTY ISN'T HIS INCOME TAX RETURN. IT'S THE ZERO ADJUST ON HIS BATHROOM SCALE. - ARTHUR C. CLARKE\::'TIS PLEASANT TO OBSERVE HOW FREE THE PRESENT AGE IS IN LAYING TAXES ON THE NEXT. - JONATHAN SWIFT\::PRETTY GIRLS DON'T MARRY POOR OLD MEN. - JIMMY CANNON\::I'M NOT A LAZY FELLOW. I WORK UP TO A CERTAIN POINT, BUT BEYOND THAT POINT, I SAY THE HELL WITH IT. - RONALD REAGAN\::ALL I DO FOR MY HAIR IS BAKE IT IN THE SUN, BOIL IT UNDER THE SHOWER, COMB IT WITH WATER, AND USE A LITTLE DAB OF BRYLCREEM TO HOLD IT DOWN. - RONALD REAGAN\::A MAN CAN BE DESTROYED BUT NOT DEFEATED. - ERNEST HEMINGWAY\::PERPETUAL DEVOTION TO WHAT A MAN CALLS HIS BUSINESS, IS ONLY TO BE SUSTAINED BY PERPETUAL NEGLECT TO MANY OTHER THINGS. - ROBERT LOUIS STEVENSON\::A TREE IS A TREE. HOW MANY MORE DO YOU NEED TO LOOK AT? - RONALD REAGAN\::WHEN PIES ARE OUTLAWED, ONLY OUTLAWS WILL HAVE PIES. - ANONYMOUS\::CALIFORNIA IS PROUD TO BE THE HOME OF THE FREEWAY. - RONALD REAGAN\::THE FICKLENESS OF THE WOMEN I LOVE IS ONLY EQUALED BY THE INFERNAL CONSTANCY OF WOMEN WHO LOVE ME. - GEORGE BERNARD SHAW\::DICTATORS RIDE TO AND FRO UPON TIGERS WHICH THEY DARE NOT DISMOUNT. AND THE TIGERS ARE GETTING HUNGRY. - WINSTON CHURCHILL\::IT IS ALMOST ALWAYS WORTHWHILE TO BE CHEATED; PEOPLE'S LITTLE FRAUDS HAVE AN INTEREST WHICH MORE THAN REPAYS WHAT THEY COST US. - LOGAN PEARSALL SMITH\::THE ENTIRE GRADUATED INCOME TAX STRUCTURE WAS CREATED BY KARL MARX. IT HAS NO JUSTIFICATION IN GETTING THE GOVERNMENT NEEDED REVENUE. - RONALD REAGAN\::ONCE UPON A TIME THERE WERE FOUR RABBITS, AND THEIR NAMES WERE FLOPSY, MOPSY, COTTONTAIL, AND PETER. - BEATRIX POTTER\::IT'S A POOR MEMORY THAT ONLY WORKS BACKWARDS. - LEWIS CARROLL\::LUCK CAN'T LAST A LIFETIME, UNLESS YOU DIE YOUNG. - RUSSELL BANKS\::WE FORGIVE ONCE WE GIVE UP ATTACHMENT TO OUR WOUNDS. - LEWIS HYDE\::IT'S A SMALL WORLD. BUT I WOULDN'T WANT TO PAINT IT. - STEVEN WRIGHT\::A NATION . . . IS JUST A SOCIETY FOR HATING FOREIGNERS. - OLAF STAPLEDON\::HISTORY CONTAINS NO FACTS BUT THOSE THAT ARE THE MOST THOROUGHLY IMPROBABLE FROM THE STANDPOINT OF PROBABILITY THEORY. - STANISLAW LEM\::IT IS NOT NECESSARY FOR THE PUBLIC TO KNOW WHETHER I AM JOKING OR WHETHER I AM SERIOUS, JUST AS IT IS NOT NECESSARY FOR ME TO KNOW IT MYSELF. - SALVADOR DALI\::WHOEVER TELLS THE TRUTH IS CHASED OUT OF NINE VILLAGES. - TURKISH PROVERB\::WHEN A THING IS FUNNY, SEARCH IT FOR A HIDDEN TRUTH. - GEORGE BERNARD SHAW\::GIVE ME, MOTHER, LUCK AT MY BIRTH, THEN THROW ME IF YOU WILL ON THE RUBBISH HEAP. - BULGARIAN PROVERB\::A RUMOR WITHOUT A LEG TO STAND ON WILL GET AROUND SOME OTHER WAY. - JOHN TUDOR\::ASTRONOMY COMPELS THE SOUL TO LOOK UPWARD AND LEADS US FROM THIS WORLD TO ANOTHER. - PLATO\::ONE THING THAT THE WORLD NEEDS IS POPULAR GOVERNMENT AT POPULAR PRICES. - GEORGE BARKER\::Q: WHAT'S THE DIFFERENCE BETWEEN AN ENZYME AND A HORMONE.? A: YOU CAN'T HEAR AN ENZYME.\::BY THE CIGARS THEY SMOKE, AND THE COMPOSERS THEY LOVE, YE SHALL KNOW THE TEXTURE OF MEN'S SOULS. - JOHN GALSWORTHY\::IT IS UNSEASONABLE AND UNWHOLESOME TO IN ALL MONTHS THAT HAVE NOT AN 'R' IN THEIR NAME TO EAT AN OYSTER. - WILLIAM BUTLER\::A WOMAN IS ONLY A WOMAN, BUT A GOOD CIGAR IS A SMOKE. - RUDYARD KIPLING\::I ONCE PLAYED A SHERIFF WHO THOUGHT HE COULD DO THE JOB WITHOUT A GUN. I WAS DEAD IN TWENTY-SEVEN MINUTES OF A THIRTY MINUTE SHOW. - RONALD REAGAN\::TODAY THE BUSINESS MAN HAS BUT THESE AIMS, TO EXPLOIT THE WORKINGMAN, MANUFACTURE SHODDY GOODS, LIE ABOUT THE QUALITY OF MERCHANDISE AND GIVE SHORT WEIGHT. - J.K. HUYSMANS\::LINCOLN WAS RIGHT ABOUT NOT FOOLING ALL OF THE PEOPLE ALL OF THE TIME. BUT THE REPUBLICANS HAVEN'T GIVEN UP TRYING. - LYNDON JOHNSON\::I'D RATHER HAVE A BOTTLE IN FRONT OF ME THAN A FRONTAL LOBOTOMY. - EDDIE THE BARTENDER\::NOTHING IS MORE INTOLERABLE THAN TO HAVE TO ADMIT TO YOURSELF YOUR OWN ERRORS. - BEETHOVEN\::THOSE WHO MOST OPPOSE OUR METHODS WILL ULTIMATELY ADOPT THEM. - ADOLPH HITLER\::I AM NOT A POLITICIAN AND MY OTHER HABITS ARE GOOD. - ARTEMUS WARD\::IF THIS IS THE BEST OF POSSIBLE WORLDS, WHAT THEN ARE THE OTHERS? - VOLTAIRE\::BALONEY IS FLATTERY SO THICK IT CAN NOT BE TRUE AND BLARNEY IS FLATTERY SO THIN WE LIKE IT. - BISHOP FULTON J. SHEEN\::WHAT TIME HATH SCANTED MEN IN HAIR, HE HATH GIVEN THEM IN WIT. - WILLIAM SHAKESPEARE\::I WANT TO REACH THAT STATE OF CONDENSATION OF SENSATIONS WHICH CONSTITUTES A PICTURE. - HENRI MATISSE\::THERE ARE TWO THINGS THAT WILL BE BELIEVED OF ANY MAN WHOSOEVER, AND ONE OF THEM IS THAT HE HAS TAKEN TO DRINK. - BOOTH TARKINGTON\::EVEN IF YOU'RE ON THE RIGHT TRACK, YOU'LL GET RUN OVER IF YOU JUST SIT THERE. - WILL ROGERS\::ANY PARTY WHICH TAKES CREDIT FOR THE RAIN MUST NOT BE SURPRISED IF ITS OPPONENTS BLAME IT FOR THE RAIN. - DWIGHT WHITNEY MORROW\::THE FIRST THING WE DO, LET'S KILL ALL THE LAWYERS. - WILLIAM SHAKESPEARE\::HE THAT IS PROUD EATS UP HIMSELF; PRIDE IS HIS OWN GLASS, HIS OWN TRUMPET, HIS OWN CHRONICLE. - WILLIAM SHAKESPEARE\::BEING KISSED BY A MAN WHO DIDN'T WAX HIS MOUSTACHE WAS - LIKE EATING AN EGG WITHOUT SALT. - RUDYARD KIPLING\::POLITICS ARE ALMOST AS EXCITING AS WAR, AND QUITE AS DANGEROUS. IN WAR YOU CAN BE KILLED ONLY ONCE, BUT IN POLITICS MANY TIMES. - WINSTON CHURCHILL\::YOU DON'T LIVE IN A WORLD ALL ALONE. YOUR BROTHERS ARE HERE TOO. - ALBERT SCHWEITZER\::THERE IS NOTHING GOOD OR BAD, BUT THINKING MAKES IT SO. - WILLIAM SHAKESPEARE\::THE MAN THAT HATH NO MUSIC IN HIMSELF NOR IS MOVED WITH CONCORD OF SWEET SOUNDS, IS FIT FOR TREASON, STRATAGEMS AND SPOILS. LET NO SUCH MAN BE TRUSTED. - WILLIAM SHAKESPEARE\::NO AFFECTATION OF PECULIARITY CAN CONCEAL A COMMONPLACE MIND. - W. SOMERSET MAUGHAM\::I'VE OFTEN SAID THAT MY RATS HAVE TAUGHT ME MUCH MORE THAT I'VE TAUGHT THEM. - B.F. SKINNER\::IN TELEVISION, HOW THE HEAD MOVES IS MORE IMPORTANT THAN WHAT'S INSIDE IT. - RON POWERS\::WHY IS IT THAT WE REJOICE AT A WEDDING AND CRY AT A FUNERAL? IT IS BECAUSE WE ARE NOT THE PERSON INVOLVED. - MARK TWAIN\::IN GENERAL, COMPUTERS ARE PRETTY GODLESS CREATURES. - STEVEN VICKERS FROM THE ZX SPECTRUM MANUAL\::A MAN IS AS GOOD AS HE HAS TO BE, AND A WOMAN AS BAD AS SHE DARES. - ELBERT HUBBARD\::KNOWLEDGE CONSISTS OF HAVING A STENOGRAPHER WHO KNOWS WHERE TO FIND THE THING. - ELBERT HUBBARD\::LAW IS A SCHEME FOR PROTECTING THE PARASITE AND PROLONGING THE LIFE OF THE ROGUE, AVERTING THE NATURAL CONSEQUENCES WHICH WOULD OTHERWISE COME TO THEM. - ELBERT HUBBARD\::WE SHOULD ALL BE CONCERNED ABOUT THE FUTURE BECAUSE WE WILL HAVE TO SPEND THE REST OF OUR LIVES THERE. - CHARLES F. KETTERING\::WHEN YOU STEAL FROM ONE AUTHOR, IT'S PLAGIARISM; IF YOU STEAL FROM MANY, IT'S RESEARCH. - WILSON MIZNER\::THOSE WHO CANNOT REMEMBER THE PAST ARE CONDEMNED TO REPEAT IT. - GEORGE SANTAYANA\::WELL, IF I CALLED THE WRONG NUMBER, WHY DID YOU ANSWER THE PHONE? - CARTOON CAPTION BY JAMES THURBER\::I NEVER FORGET A FACE, BUT IN YOUR CASE I'LL MAKE AN EXCEPTION. - GROUCHO MARX\::EVERY MAN DESIRES TO LIVE LONG, BUT NO MAN WOULD BE OLD. - JONATHAN SWIFT\::GOOD GOVERNMENT OBTAINS WHEN THOSE WHO ARE NEAR ARE MADE HAPPY, AND THOSE WHO ARE FAR OFF ATTRACTED. - CONFUCIUS\::I AM AS STRONG AS A BULL MOOSE AND YOU CAN USE ME TO THE LIMIT. - THEODORE ROOSEVELT\::NO ACT OF KINDNESS, NO MATTER HOW SMALL, IS EVER WASTED. - AESOP\::IF IT APPEARS COMPLICATED IT IS BECAUSE IT IS. - JEFF MAZUR FROM THE TIMEX SINCLAIR 2068 INTERMEDIATE/ADVANCED GUIDE\::YOU CAN LEAD A BOY TO COLLEGE, BUT YOU CAN NOT MAKE HIM THINK. - ELBERT HUBBARD\::I DON'T THINK MUCH OF A MAN WHO IS NOT WISER TODAY THAN HE WAS YESTERDAY. - ABRAHAM LINCOLN\::THE GREATER THE OBSTACLE THE MORE GLORY IN OVERCOMING IT. - MOLIERE\::THE LADDER OF LIFE IS FULL OF SPLINTERS, BUT THEY ALWAYS PRICK THE HARDEST WHEN YOU'RE SLIDING DOWN. - WILLIAM BROWNELL\::IGNORANCE IS THE NIGHT OF THE MIND, BUT A NIGHT WITHOUT MOON OR STAR. - CONFUCIUS\::SOME PEOPLE HAVE A PERFECT GENIUS FOR DOING NOTHING, AND DOING IT ASSIDUOUSLY. - THOMAS HALIBURTON\::IT IS NOT POSSIBLE TO STEP TWICE IN THE SAME RIVER. - HERACLITUS\::TWO AND TWO CONTINUE TO MAKE FOUR, IN SPITE OF THE WHINE OF THE AMATEUR FOR THREE, OR THE CRY OF THE CRITIC FOR FIVE. - JAMES MCNIELL WHISTLER\::SURPLUS WEALTH IS A SACRED TRUST WHICH ITS POSSESSOR IS BOUND TO ADMINISTER IN HIS LIFETIME FOR THE GOOD OF THE COMMUNITY. - ANDREW CARNEGIE\::ALWAYS DO RIGHT. THIS WILL GRATIFY SOME PEOPLE, AND ASTONISH THE REST. - MARK TWAIN\::THE FRONTIERS ARE NOT EAST OR WEST, NORTH OR SOUTH, BUT WHEREVER A MAN FRONTS A FACT. - HENRY DAVID THOREAU\::THE WORKERS HAVE NOTHING TO LOSE BUT THEIR CHAINS. THEY HAVE THE WORLD TO WIN. WORKERS OF THE WORLD, UNITE. - KARL MARX\::YOU CANNNOT QUALIFY WAR IN HARSHER TERMS THAN I WILL. WAR IS CRUELTY, AND YOU CANNOT REFINE IT. - WILLIAM TECUMSEH SHERMAN\::IN THE FIELDS OF OBSERVATION, CHANCE FAVORS ONLY THE MIND THAT IS PREPARED. - LOUIS PASTEUR\::THE ALPHABET WILL CREATE FORGETFULNESS IN THE LEARNERS' SOULS. THEY WILL TRUST THE WRITTEN CHARACTERS AND NOT REMEMBER THEMSELVES. - SOCRATES\::WHAT A MAN NEEDS IN GARDENING IS A CAST-IRON BACK WITH A HINGE IN IT. - CHARLES DUDLEY WARNER\::TO CONSIDER ONESELF DIFFERENT FROM OTHER MEN IS WRONG, BUT IT IS RIGHT TO HOPE THAT ONE WILL NOT REMAIN LIKE ORDINARY MEN. - YOSHIDA SHOIN\::RESOLVE TO TAKE FATE BY THE THROAT AND SHAKE A LIVING OUT OF HER. - LOUISA MAY ALCOTT\::THE SOUL DOES NOT HUNGER FOR FLESH, IT IS HORRIFIED BY IT; IT DOES NOT THIRST FOR WINE, IT IS KILLED BY IT. - JUAN MONTALVO\::THE BEST LIAR IS HE WHO MAKES THE SMALLEST AMOUNT OF LYING GO THE LONGEST WAY. - SAMUEL BUTLER\::EAST IS EAST, AND WEST IS SAN FRANCISCO, ACCORDING TO THE CALIFORNIANS. CALIFORNIANS ARE A RACE OF PEOPLE, NOT MERELY INHABITANTS OF A STATE. - O. HENRY\::MARRIAGE IS A GREAT INSTITUTION, BUT I'M NOT READY FOR AN INSTITUTION, YET. - MAE WEST\::WHEN I SELL LIQUOR, IT'S CALLED BOOTLEGGING; WHEN MY PATRONS SERVE IT ON SILVER TRAYS ON LAKE SHORE DRIVE, IT'S CALLED HOSPITALITY. - AL CAPONE\::BEFORE I JUDGE MY NEIGHBOR, LET ME WALK A MILE IN HIS MOCCASINS. - SIOUX PROVERB\::I FIND TELEVISION VERY EDUCATING. EVERYTIME SOMEBODY TURNS ON THE SET, I GO INTO THE OTHER ROOM AND READ A BOOK. - GROUCHO MARX\::WHEN A PATIENT IS AT DEATH'S DOOR, IT IS THE DUTY OF THE DOCTOR TO PULL HIM THROUGH. - DR. LAURENCE PETER\::I DO NOT FEEL OBLIGED TO BELIEVE THAT THE SAME GOD WHO HAS ENDOWED US WITH SENSE, REASON, AND INTELLECT HAS INTENDED US TO FOREGO THEIR USE. - GALILEO GALILEI\::A MAN WHO HAS NEVER GONE TO SCHOOL MAY STEAL FROM A FREIGHT CAR; BUT IF HE HAS A UNIVERSITY EDUCATION, HE MAY STEAL THE WHOLE RAILROAD. - THEODORE ROOSEVELT\::THE NOBLEST OF ALL DOGS IS THE HOT DOG. IT FEEDS THE HAND THAT BITES IT. - LAURENCE PETER\::WHAT IS A CYNIC? A MAN WHO KNOWS THE PRICE OF EVERYTHING, AND THE VALUE OF NOTHING. - OSCAR WILDE\::THE AMERICANS HAVE NEED OF THE TELEPHONE, BUT WE DO NOT. WE HAVE PLENTY OF MESSENGER BOYS. - SIR WILLIAM PREECE, CHIEF ENGINEER OF THE BRITISH POST OFFICE, 1876\::THE UNIVERSE IS NOT ONLY QUEERER THAN WE SUPPOSE, BUT QUEERER THAN WE CAN SUPPOSE. - J.B.S. HALDANE\::GET YOUR FACTS FIRST, AND THEN YOU CAN DISTORT THEM AS MUCH AS YOU PLEASE. - MARK TWAIN\::A LIE CAN RUN AROUND THE WORLD BEFORE THE TRUTH CAN GET ITS BOOTS ON. - JAMES WATT\::IT IS IMPOSSIBLE TO TRAVEL FASTER THAN THE SPEED OF LIGHT, AND CERTAINLY NOT DESIRABLE, AS ONE'S HAT KEEPS BLOWING OFF. - WOODY ALLEN\::ANYTHING ONE MAN CAN IMAGINE, OTHER MEN CAN MAKE REAL. - JULES VERNE\::DUNG IS NO SAINT, BUT WHERE IS FALLS, IT WORKS MIRACLES. - SPANISH PROVERB\::ALL I ASK OF MY BODY IS THAT IT CARRY AROUND MY HEAD. - THOMAS ALVA EDISON\::YOU CAN'T HAVE EVERYTHING. WHERE WOULD YOU PUT IT? - STEVEN WRIGHT\::THE AVERAGE PH.D. THESIS IS NOTHING BUT THE TRANSFERENCE OF BONES FROM ONE GRAVEYARD TO ANOTHER. - J. FRANK DOBIE\::AS A RULE THE PHILOSOPHER IS A KIND OF MONGREL BEING, A CROSS BETWEEN SCIENTIST AND POET, ENVIOUS OF BOTH. - GUSTAVE FLAUBERT\::BELIEF IS NOT THE BEGINNING BUT THE END OF ALL KNOWLEDGE. - JOHANN WOLFGANG VON GOTHE\::I CAN ASSURE YOU THAT FLYING SAUCERS, GIVEN THAT THEY EXIST, ARE NOT CONSTRUCTED BY ANY POWER ON EARTH. - HARRY S. TRUMAN\::HURRAH, BOYS, WE'VE CAUGHT THEM NAPPING. - GEORGE ARMSTRONG CUSTER, JUNE 25, 1876\::RELIGION, SOCIETY, AND NATURE! THESE ARE THE THREE STRUGGLES OF MAN. - VICTOR HUGO\::THE LAND IS FULL OF BLOODY CRIMES, AND THE CITY IS FULL OF VIOLENCE. - EZEKIEL\::IN THE PLACE OF THE AWKWARD AND HANG-DOG LOOKING THIEF WE HAVE TODAY THE INTELLIGENT AND THOUGHTFUL ROGUE. - INSPECTOR THOMAS BYRNES\::MARRIAGE IS LIKE A FROG WHO JUMPS INTO A WELL; HE GETS PLENTY OF WATER, BUT HE CAN'T GET OUT. - HARRY CROSBY\::ONE MUST BE BORN AND DIE IN THE SAME PICTURE. - POLIA CHENTOFF\::POLITICAL POWER GROWS OUT OF THE BARREL OF A GUN. - MAO TSE-TUNG\::WHETHER ONE PASSES OR REMAINS BEHIND IS ALL THE SAME. THAT YOU CAN TAKE NO ONE WITH YOU IS THE ONLY DIFFERENCE. - TOKUGAWA IEYASU\::TO BE MEAN IS NEVER EXCUSABLE, BUT THERE SOME VIRTUE IN KNOWING THAT ONE IS; THE UNFORGIVABLE VICE IS TO DO HARM OUT OF STUPIDITY. - CHARLES BAUDELAIRE\::IF YOU ARE NOT TO BE THE MARTYRED SLAVES OF TIME, BE PERPETUALLY DRUNK! WITH WINE, WITH POETRY, OR WITH VIRTUE, AS YOU PLEASE. - CHARLES BAUDELAIRE\::I AM AFRAID I MIGHT SEE SIR CLIVE IN A BAR, SO I DON'T WANT TO SAY ANYTHING BAD ABOUT HIM. - JACK TRAMIEL\::IN OUR TIME POLITICAL SPEECH AND WRITING ARE LARGELY THE DEFENSE OF THE INDEFENSIBLE. - GEORGE ORWELL\::IF MY WORST ENEMY WAS GIVEN THE JOB OF WRITING MY EPITAPH WHEN I AM GONE, HE COULDN'T DO MORE THAN WRITE: HE SEEN HIS OPPORTUNITIES AND HE TOOK 'EM. - GEORGE W. PLUNKETT\::IN THE CASE OF A WORD LIKE DEMOCRACY, NOT ONLY IS THERE NO AGREED DEFINITION, BUT THE ATTEMPT TO MAKE ONE IS RESISTED FROM ALL SIDES. - GEORGE ORWELL\::LOVE IS CERTAIN INBORN SUFFERING DERIVED FROM THE SIGHT OF AND EXCESSIVE MEDITATION UPON THE BEAUTY OF THE OPPOSITE SEX. - ANDREAS CAPELLANUS\::CHURCHES, LIKE DEPARTMENT-STORES, CARRY THE WARES THAT ARE ASKED FOR. - ELBERT HUBBARD\::WHAT AN ARTIST THE WORLD IS LOSING! - NERO, AT THE TIME OF HIS SUICIDE\::'TWAS BRILLIG, AND THE SLITHY TOVES DID GYRE AND GIMBLE IN THE WABE: ALL MIMSY WERE THE BOROGOVES AND THE MOME RATHS OUTGRABE. - LEWIS CARROLL\:: 20 RUN 1140 30 REM MAIN LOOP 40 LET X=0 50 LET C=0 60 LET I$=INKEY$ 70 IF I$>="A" AND I$<="Z" THEN GO TO 190 80 IF H(1) AND INKEY$=CHR$ 13 THEN RANDOMIZE X+65: LET H(2)=H(2)+1: LET H(1)=0: LET A$(1,1)=CHR$ USR 58692: PRINT AT 20,X+3; INVERSE 1;CHR$ PEEK 23681: GO TO 210 90 IF I$="0" THEN LET I$="-": GO TO 190 100 IF I$="1" THEN GO TO 240 110 LET X=X+(I$="8")-(I$="5") 120 IF X>25 THEN LET X=0 130 IF X<0 THEN LET X=25 140 PRINT AT 22,1," " 150 PRINT AT 22,X+3;"^" 160 IF INKEY$<>"" AND (I$="5" OR I$="8") AND C<10 THEN LET C=C+1: GO TO 160 170 IF C>=10 AND INKEY$<>"" THEN GO TO 60 180 GO TO 50 190 PRINT AT 20,X+3;I$: RANDOMIZE CODE I$*256+X+65: LET A$(1,1)=CHR$ USR 58637 200 IF I$="-" THEN PRINT AT 20,X+3;" " 210 FOR N=1 TO 6: PRINT AT N*3-2,0;A$(N+12): NEXT N 220 IF NOT PEEK 23670 THEN GO TO 420 230 GO TO 50 240 REM HELP ROUTINES 250 LET Y=USR 58726: POKE 23659,2 260 CLS : PRINT TAB 11;"HELP PAGE"''"PRESS YOUR CHOICE" 270 PRINT ''"1) INSTRUCTIONS"''"2) FREQUENCY DISTRIBUTION"''"3) HINT"''"4) PAPER CHANGE"''"5) INK CHANGE"''"6) COPY SCREEN"''"7) QUIT"''"8) RETURN TO PUZZLE" 280 LET L$(1)="1": LET L$(2)="8": GO SUB 780 290 IF I$="1" THEN GO SUB 1510: GO TO 260 300 IF I$="2" AND O(PI) THEN POKE 23607,229 310 IF I$="2" THEN CLS : PRINT TAB 5;"FREQUENCY DISTRIBUTION"': FOR N=1 TO 13: PRINT CHR$ (N+64);" = ";CODE A$(20,N),CHR$ (N+77);" = ";CODE A$(20,N+13): NEXT N: COPY : POKE 23607,60: PAUSE 0: GO TO 260 320 IF I$="4" THEN RANDOMIZE USR 58368 330 IF I$="5" THEN RANDOMIZE USR 58406 340 IF I$="6" AND BAS>25000 THEN RANDOMIZE USR 58738: RANDOMIZE USR 58756: LET I$="8" 350 IF I$="6" AND BAS<=25000 THEN RANDOMIZE USR 58738: RANDOMIZE USR 58750: LET I$="8" 360 IF I$="7" THEN GO TO 410 370 IF I$="3" AND O(4) THEN CLS : PRINT "NO HELP AVAILABLE": PAUSE 0: GO TO 260 380 IF I$="3" THEN CLS : PRINT "POSITION THE ""^"" UNDER THE"'"PUZZLE CHARACTER YOU WANT TO"'"KNOW. THEN PRESS ""ENTER""."'"THE CHARACTER WILL BE"'"HIGHLIGHTED."''"PRESS 'A'-'Z' TO RETURN TO GAME.": LET H(1)=1: LET L$(1)="A": LET L$(2)="Z": GO SUB 780: LET I$="8" 390 IF I$="8" THEN LET Y=USR 58738: POKE 23659,1: GO TO 50 400 GO TO 280 410 POKE 23659,2: STOP 420 FOR N=-16 TO 47: BEEP .003,N: RANDOMIZE USR 58406: NEXT N 430 FOR N=20 TO 22: PRINT AT N,1," ": NEXT N 440 POKE 23659,2 450 PRINT AT 20,8;"YOU USED ";H(2);" HINT";"S" AND H(2)<>1;".";AT 21,8;"PLAY AGAIN? (Y/N)": LET L$(1)="A": LET L$(2)="Z": GO SUB 780: IF I$<>"N" THEN GO TO 1140 460 STOP 470 REM ENCODE ALPHABET O(1) WILL MEAN THAT THE CODE IS COMPLETE REPLACEMENT. 480 RANDOMIZE : PRINT AT 10,7;"ONE MOMENT PLEASE" 490 LET I$="ABCDEFGHIJKLMNOPQRSTUVWXYZ": LET C$="" 500 IF O(4) THEN LET A$(19)=I$: LET I$="": RETURN 510 FOR N=1 TO 25 520 LET X=INT (RND*LEN I$)+1 530 IF O(1) AND CODE I$(X)-65=LEN C$ THEN GO TO 520 540 LET C$=C$+I$(X) 550 IF X<>1 AND X<>LEN I$ THEN LET I$=I$( TO X-1)+I$(X+1 TO ): GO TO 580 560 IF X=1 THEN LET I$=I$(X+1 TO ): GO TO 580 570 IF X=LEN I$ THEN LET I$=I$( TO X-1) 580 NEXT N 590 IF O(1) AND I$="Z" THEN GO TO 490 600 LET C$=C$+I$ 610 LET I$="" 620 LET A$(19)=C$ 630 RETURN 640 REM SPLIT STRING 650 LET C$=P$ 660 FOR N=1 TO 6 670 LET X=32 680 IF X>=LEN C$ THEN LET A$(N)=C$: GO TO 760 690 IF C$(X)=" " OR C$(X+1)=" " THEN LET A$(N)=C$( TO X): GO TO 710 700 LET X=X-1: GO TO 690 710 IF C$="" THEN GO TO 760 720 LET C$=C$(X+1 TO ) 730 IF C$(1)=" " THEN LET C$=C$(2 TO ): GO TO 730 740 IF C$="" THEN GO TO 760 750 NEXT N 760 LET C$="" 770 RETURN 780 REM READ KEYBOARD 790 LET I$=INKEY$: IF I$L$(2) THEN GO TO 790 800 IF INKEY$<>"" THEN GO TO 800 810 RETURN 820 REM COLOR CHANGE ROUTINE 830 LET C=INT (RND*7)+1: PAPER C: INK 9: BORDER C: CLS 840 RETURN 850 REM SET VAL STRINGS 860 DIM E$(PI,20): LET E$(1)="PEEK ARG+256*PEEK (ARG+1)": LET E$(2)="INT (ARG/256)": LET E$(PI)="ARG-(VAL E$(2)*256)" 870 LET ARG=23635: LET BAS=VAL E$(1) 880 IF BAS<25000 THEN GO TO 900 890 ON ERR GO TO 1590: RETURN : REM TS-2068 ERROR 900 RANDOMIZE USR 58790: RETURN : REM SPECTRUM ERROR 910 REM EDIT ROUTINES 920 CLEAR : GO SUB 860: CLS : PRINT "DO YOU WANT TO:"''"1) ADD TO EXISTING PUZZLES?"''"2) ENTER ALL NEW PUZZLES?"''"3) PRINT PUZZLES?"''"4) RETURN TO MAIN MENU": DIM L$(2,1): LET L$(1)="1": LET L$(2)="4": GO SUB 780 930 IF I$="1" THEN GO TO 980 940 IF I$="3" THEN GO TO 1080 950 IF I$="4" THEN GO TO 1140 960 PRINT '' FLASH 1;"ARE YOU SURE? (Y/N)": LET L$(1)="A": LET L$(2)="Z": GO SUB 780: IF I$<>"Y" THEN GO TO 920 970 RANDOMIZE USR 58762: POKE BAS+20,143: POKE BAS+15,1: POKE BAS+5,16: POKE BAS+6,16 980 LET ARG=BAS+2: LET SPACE=VAL E$(1): LET ARG=BAS+15: LET SPACE=SPACE-VAL E$(1)-22: LET ARG=BAS+7: LET PZLS=VAL E$(1) 990 CLS : PRINT SPACE;" BYTES LEFT";TAB 20;PZLS;" PUZZLES": IF SPACE<181 THEN PRINT ''"MEMORY FULL.": STOP 1000 PRINT '"ENTER YOUR PUZZLE EXACTLY AS"'"WRITTEN. IF A WORD EXTENDS"'"BEYOND THE END OF A LINE IT"'"WILL BE SPACED AUTOMATICALLY."'"USE APOSTROPHES INSTEAD OF"'"QUOTATION MARKS."''"""END"" TO QUIT." 1010 INPUT P$: IF P$="END" THEN CLS : PRINT "START YOUR TAPE RECORDER. THEN ENTER:"''TAB 10;"GOTO 1520": STOP 1020 IF LEN P$>180 THEN PRINT '"PUZZLE TOO LONG"'"PRESS ANY KEY.": PAUSE 0: GO TO 990 1030 DIM A$(6,32): GO SUB 640: CLS : FOR N=1 TO 6: PRINT AT N*2,0;A$(N): NEXT N 1040 PRINT ''"THIS IS WHAT YOUR PUZZLE WILL LOOK LIKE. CHECK IT CAREFULLY.IS IT RIGHT? (Y/N)": LET L$(1)="A": LET L$(2)="Z": GO SUB 780: IF I$<>"Y" THEN GO TO 990 1050 PRINT '"ONE MOMENT. SAVING PUZZLE.": LET P$=P$+CHR$ 143: LET ARG=BAS+15: LET USED=VAL E$(1): LET TARG=BAS+USED+20 1060 FOR N=1 TO LEN P$: POKE TARG,CODE P$(N): LET TARG=TARG+1: NEXT N 1070 LET USED=USED+LEN P$: LET ARG=USED: POKE BAS+15,VAL E$(PI): POKE BAS+16,VAL E$(2): LET PZLS=PZLS+1: LET ARG=PZLS: POKE BAS+7,VAL E$(PI): POKE BAS+8,VAL E$(2): GO TO 980 1080 LET ARG=BAS+7: LET PZLS=VAL E$(1) 1090 FOR Y=1 TO PZLS: LET ARG=Y: POKE BAS+9,VAL E$(PI): POKE BAS+10,VAL E$(2) 1100 DIM A$(6,32): DIM P$(USR 58436): LET P$(1)=CHR$ USR 58501: GO SUB 640 1110 CLS : PRINT "PUZZLE NUMBER ";Y: LPRINT "PUZZLE NUMBER ";Y': FOR N=1 TO 6: PRINT A$(N): IF A$(N,1)<>" " THEN LPRINT A$(N) 1120 NEXT N: PRINT ''"PRESS ANY KEY": NEXT Y 1130 GO TO 920 1140 REM CODE MASTER INIT. AND INTRODUCTION ROUTINE 1150 CLEAR : GO SUB 860 1160 PRINT AT 10,10;"CODE MASTER";AT 17,13;"\*1985";TAB 10;"DAVID HOSHOR";AT 20,10;"RESEARCHED BY";TAB 10;"THOMAS SIMON": DIM A$(20,32): DIM H(2): DIM O(5): DIM L$(2,1): POKE 23658,8: PAUSE 300: GO SUB 820: PRINT '''"DO YOU NEED INSTRUCTIONS? (Y/N)";AT 21,9;"'E' FOR EDIT": LET L$(1)="A": LET L$(2)="Z": GO SUB 780 1170 IF I$="E" THEN GO TO 920 1180 IF I$="Y" THEN GO SUB 1490 1190 IF I$="" THEN GO TO 1180 1200 GO SUB 820: PRINT "ENTER YOUR CHOICE:"''"1) A PUZZLE FROM THE COMPUTER"''"2) ENTER YOUR OWN PUZZLE": LET L$(1)="1": LET L$(2)="2": GO SUB 780 1210 IF I$="1" THEN GO TO 1270 1220 GO SUB 820: PRINT "1) HAS THE PUZZLE BEEN ENCODED"''"2) IS THE PUZZLE TO BE ENCODED"'''"PRESS YOUR CHOICE": GO SUB 780 1230 LET O(VAL I$+3)=1 1240 GO SUB 820: PRINT "ENTER THE CODE OR PUZZLE EXACTLYAS WRITTEN. IF A WORD EXTENDS BEYOND THE END OF A LINE,"'"CONTINUE TYPING. THE WORDS WILLBE SPACED AUTOMATICALLY."''"DON'T USE QUOTATION MARKS. USE AN APOSTROPHE INSTEAD." 1250 INPUT P$: IF LEN P$>180 THEN PRINT ''"THE PUZZLE IS TOO LONG."'"TRY AGAIN": GO TO 1250 1260 IF O(4) THEN GO TO 1360 1270 GO SUB 820: PRINT "WHAT TYPE OF CODE DO YOU WANT?"''"1) A SIMPLE REPLACEMENT CODE "''"2) A PARTIAL REPLACEMENT CODE "''"3) A GRAPHIC CODE ": LET L$(2)="3": GO SUB 780: LET O(VAL I$)=1 1280 LET ARG=BAS+7: LET Y=VAL E$(1) 1290 IF O(5) THEN GO TO 1360 1300 GO SUB 820: PRINT "1) LET THE COMPUTER CHOOSE THE PUZZLE"''"2) MANUALLY CHOSE THE PUZZLE": LET L$(2)="2": GO SUB 780 1310 IF I$="1" THEN RANDOMIZE : LET ARG=INT (RND*Y)+1: GO TO 1330 1320 GO SUB 820: PRINT "CHOOSE A PUZZLE NUMBER BETWEEN 1 AND ";Y: INPUT ARG: IF ARG<1 OR ARG>Y THEN GO TO 1310 1330 POKE BAS+9,VAL E$(PI): POKE BAS+10,VAL E$(2) 1340 DIM P$(USR 58436) 1350 LET P$(1)=CHR$ USR 58501 1360 GO SUB 470: GO SUB 640 1370 LET A$(1,1)=CHR$ USR 58528 1380 REM PRINT SCREEN 1390 INK 7: PAPER 1: BORDER 1: CLS : POKE 23659,0 1400 PRINT AT 19,0;" CODEMASTER ";TAB 31;" 5";TAB 31;"8<";TAB 31;"> '1' HELP '0' DELETE " 1410 PRINT AT 21,3; 1420 IF O(PI) THEN POKE 23607,229 1430 FOR N=CODE "A" TO CODE "Z": PRINT CHR$ N;: NEXT N 1440 FOR N=1 TO 6: PRINT AT (N*3)-1,0;A$(N+6): NEXT N 1450 POKE 23606,0: POKE 23607,60 1460 FOR N=1 TO 6: PRINT AT (N*3)-2,0;A$(N+12): NEXT N 1470 POKE 23659,1 1480 GO TO 30 1490 GO SUB 820 1500 REM HELP PAGE 1510 CLS : PRINT TAB 7;"- INSTRUCTIONS -"''" BEGIN BY RESPONDING TO THE"'"QUESTIONS FOR SETTING UP THE"'"GAME."'" LOOK FOR COMBINATIONS OF"'"LETTERS OR CHARACTERS THAT"'"REPEAT. ""TH"", ""ER"", ETC. ARE" 1520 PRINT "USUALLY PRETTY EASY TO SPOT."'"SINGLE LETTER WORDS ARE ALMOST"'"ALWAYS ""A"" OR ""I"". AS YOU FIND"'"MORE LETTERS, THE PUZZLE WILL"'"BECOME EASIER." 1530 PRINT " REPLACE A LETTER IN THE PUZZLEBY PUTTING THE THE ARROW UNDER THE PUZZLE LETTER WITH THE ""5"" AND ""8"" KEYS. PRESS THE LETTER TO INSERT INTO THE SOLUTION."'"PRESS ""0"" TO DELETE A LETTER"'"PRESS ""1"" FOR THE HELP MENU." 1540 PRINT '" "; FLASH 1;"PRESS ANY KEY TO RETURN": PAUSE 0: RETURN 1550 REM SAVE 1560 CLEAR : SAVE "codemaster" LINE 1570: SAVE "code"CODE 58368,1024: RUN 1570 LOAD "codem"CODE : CLEAR 58367: GO SUB 820: RUN 1580 LET C=7: PAPER C: INK 9: BORDER C: CLS : STOP 1590 POKE 23659,2 1600 CLS : LIST 1610 1610 REM HI! I HOPE YOU ARE ENJOYING CODEMASTER. IF YOU HAVE TROUBLESOLVING ANY OF THE PUZZLES, REMEMBER THAT YOU HAVE THE HINT COMMAND FOR YOUR USE IN THE HELPMENU. THE FREQUENCY DISTRIBU- TION OF THE LETTERS IN THE CODE MAY BE HELPFUL TOO. "T", "N", AND "E" ARE THE MOST COMMON LETTERS IN ENGLISH. IF YOU ENTER SOME NEW PUZZLES,I'D LIKE TO SEE THEM. I CAN REMEMBER MOST OF THE PUZZLES I TYPED IN, SO SOME NEW PUZZLES WOULD BE APPRECIATED. MY ADDRESS IS: DAVID HOSHOR, 7 BARD DR. APT. B4, HUDSON, OHIO44236 USA. FEEL FREE TO MAKE COPIES OF CODEMASTER. ENTER "RUN 1520" TOCOPY THE PROGRAM. THE PROGRAM 1620 REM CAN BE RESTARTED AT ANYTIME BY "RUN". SUPERCODE 3 WAS USED FOR THE SPECTRUM "ON BREAK" GOTO 1630 ON ERR RESET ```