Mystery Manor

Developer(s): Joan Kealy
Date: 1984
Type: Program
Platform(s): TS 2068
Tags: Game

Mystery Manor is a text-based adventure puzzle game in which the player traces the path of a ghostly Victorian heroine, Vanessa Dracone, through 29 rooms of a haunted manor. The player must navigate exactly ten rooms in sequence, guided by diary entries dated throughout 1887, then the game checks whether the chosen sequence matches the correct hidden path. Room connections are encoded as packed two-digit pairs in a string array, and correct answers are obscured by storing them as values requiring the expression INT(SQR(G(I)-9)) to decode. A prompter subsystem (accessible by entering 99) replays diary passages and room lists, and the game supports loading two external SCREEN$ files plus optional hardcopy output to a TS2040 printer.


Program Structure

The program is organized into several well-separated functional blocks:

  • Lines 1–130: Initialization, array dimensioning, and data loading
  • Lines 140–290: Main game loop — display current room, accept player input, validate moves
  • Lines 300–380: End-of-game evaluation after ten moves
  • Lines 1000–2020: Word-wrapped PRINT subroutine for long strings
  • Lines 3000–7020: DATA blocks for rooms, connections, dates, characters, and actions
  • Lines 8000–8030: Anti-cheat/give-up handler
  • Lines 8500–8800: Narrative introduction with diary entries
  • Lines 9000–9026: Prompter subsystem
  • Lines 9100–9150: Animated sprite routine
  • Lines 9524–9800: Utility subroutines (keypress wait, screen clear)
  • Lines 9810–9900: Screen loading, machine code POKEing, and save line

Data Encoding

Room data is stored compactly in R$, a 29×11 string array. The first two characters hold a date index, characters 3–9 encode up to seven ghost presence flags as single digits (with “0” meaning absent), and characters 10–11 hold a two-digit action index. This packs multiple fields into a fixed-width string without delimiters.

Room connections are stored in J$, a 29×10 string array, as packed pairs of two-digit room numbers (e.g., "0203040506" = connections to rooms 2, 3, 4, 5, 6). The validation loop at line 260 extracts these with J$(R,I*2-1 TO I*2) and compares against the player’s input.

Answer Obfuscation

The correct room sequence is not stored directly. Instead, G(I) holds encoded values, and the check at line 330 uses INT(SQR(G(I)-9)) to recover the expected room number. For example, if the correct room is 14, then G(I) would be stored as 14²+9 = 205. The give-up reveal at line 8020 uses the same expression to print the solution. This is a straightforward but effective obfuscation for a BASIC listing.

Word-Wrap Subroutine

The subroutine at line 1000 implements word-wrapping for the 32-column display. It scans N$ for the last space within the first 32 characters, prints up to that point, strips the printed portion, and recurses via GO TO 1010 (which targets the non-existent line between 1000 and 2000, falling through to 2000 — a deliberate BASIC line-skipping technique). Strings shorter than 32 characters are printed directly and the subroutine returns.

Machine Code POKEing

Lines 9850–9880 POKE two small blocks of machine code into high memory (addresses 65496–65527 and 65400–65431) read from DATA statements. The variable name m and C appear in the DATA lines as literal tokens — these are almost certainly zero-value placeholders or the data uses variable names where numeric literals were intended, which would cause a syntax error at runtime unless m and C are already assigned. This is a likely bug or artifact of the listing transcription; the data is meant to define sprite or font shapes for the animated figure used in the screen transition at line 9100.

Animated Sprite Routine

The subroutine at lines 9100–9150 moves a four-character figure (using UDG characters \e, \f, \g, \h) diagonally across the screen using PRINT AT with incrementing x and y coordinates, with PAUSE 10 delays. It loops until y >= 18, providing a simple walking animation between narrative screens.

Prompter and Narrative Subsystem

Entering 99 at the location prompt jumps to the prompter at line 9000, which sets MARKER=1 and offers a menu of diary dates. Selecting a date number causes GO SUB 8520+(DATE*10) to jump directly into the relevant diary entry subroutine (e.g., date 1 → line 8530, date 2 → line 8540). Each entry subroutine checks IF MARKER=1 THEN RETURN to exit cleanly after one entry rather than falling through to the next.

Anti-Cheat / Give-Up Logic

Line 8000 checks TRIALS: for fewer than 10 failed attempts, it simply pauses and returns with a comment “CHEATER’S ALWAYS WIN.” After 10 failures, the player is prompted to give up. Answering “Y” reveals the correct sequence by decoding G(I) with INT(SQR(g(i)-9)) across 10 iterations; answering “N” returns to the game.

Screen Loading

The initialization at line 9810 loads two external SCREEN$ files ("MYSMANORs1" and "MYSMANORs2") from tape, with an option to copy the second to a TS2040 printer. Line 8636 also offers in-game reloading of the map screen. The game is explicitly dependent on the external map and story from the original magazine source, as noted in the REM at line 5.

Notable Anomalies

  • Lines 9860 and 9880 use bare variable names (m, C) within DATA statements. In Sinclair BASIC, DATA items are read as numbers or strings; unquoted names would be interpreted as numeric expressions, requiring these variables to be pre-assigned (likely to 0) for the POKE loop to function.
  • Line 170 contains artifact characters (\{20}\{1}\{20}\{1}\{20}\{0}) within a PRINT statement — these are paper/ink control codes embedded in the listing, likely toggling inverse video around the ghost name display.
  • POKE 23692,255 at line 8628 disables the scroll prompt (“scroll?”) to prevent an interruption in the room list display.

Related Articles

Mystery Manor puzzle/game for multiple platforms, including 2068.

Image Gallery

Source Code

    1 RESTORE :POKE 23658,8:LET MARKER=0:BORDER 1:GO SUB 9810:GO SUB 8500
    2 POKE 23561,20:POKE 23562,1
    5 LET TRIALS=0:REM BASED ON 3/84 \{20}\{1}FAMILY COMPUTING\{20}\{0},pp. 100-109. STORY & MAP WERE EXTERNAL TO PROG REQUIRING A COPY OF THE MAGAZINE TO PLAY THE GAME
    8 PRINT "GO TO PROMPTER IF STUMPED; IN   ADDITION TO THE MAP, YOU HAVE   ACCESS TO THE DIARY DATES, AND  FULL DESIGNATIONS FOR ROOMS":PAUSE 80
   10 DIM R$(29,11):DIM J$(29,10)
   20 BORDER 1:BRIGHT 1:PAPER 1:INK 5
   30 DIM D$(11,18)
   40 DIM G(12)
   50 DIM P$(9,10)
   60 DIM A$(18,54)
   70 DIM S(12)
   80 RESTORE :FOR I=1 TO 29:READ R$(I,1 TO ),R$(I,3 TO ),R$(I,10 TO ):NEXT I
   90 FOR I=1 TO 29:READ J$(I):NEXT I
  100 FOR I=1 TO 11:READ H$:LET D$(I)=H$+", 1887":READ G(I):NEXT I
  110 FOR I=1 TO 9:READ P$(I):NEXT I
  120 FOR I=1 TO 18:READ A$(I):NEXT I
  130 LET S(1)=1:LET R=1:LET C=R:LET FLAG=0
  140 PAUSE 90:CLS 
  150 LET N$="YOU'RE IN LOCATION  #"+ STR$ (R):GO SUB 1000:LET N$="DATE: "+D$(VAL (R$(R, TO 2))):GO SUB 1000
  160 PRINT "GHOSTS PRESENT:":FOR I=3 TO 9:IF R$(R,I)="0" THEN GO TO 180
  170 PRINT I;"- ";P\{20}\{1}\{20}\{1}\{20}\{0}$(VAL (R\{20}\{1}\{20}\{1}\{20}\{0}$(R,I )))
  180 NEXT I
  190 PRINT "ACTION TAKING PLACE:":LET N$="  "+A$(VAL (R$(R,10 TO ))):GO SUB 1000
  200 IF C=10 THEN GO TO 300
  210 LET N$="WHICH LOCATION COMES NEXT       ( 0 RESTARTS;99 PROMPTS)":GO SUB 1000:INPUT NR
  220 IF NR=0 THEN GO TO 130:REM STARTSOVER 
  225 IF NR=99 THEN GO SUB 9000:GO TO 210
  230 IF NR=R OR NR>29 THEN GO TO 140:REM ERROR TRAPPING
  240 FOR I=1 TO C:IF NR=S(I) THEN LET N$="YOU'VE ALREADY BEEN THERE!":GO SUB 1000:GO TO 210
  250 NEXT I:LET LE=0
  260 FOR I=1 TO 5:IF J$(R,I*2-1 TO I*2) <>" " OR NR= VAL (J$(R,I*2-1 TO I*2)) THEN LET LE=1:GO TO 290
  270 NEXT I
  280 IF LE=0 THEN LET N$="YOU CAN'T GET THERE FROM HERE!":GO SUB 1000:GO TO 210
  290 LET C=C+1:LET S(C)=NR:LET R=NR:GO TO 140
  300 LET N$="YOU'VE MADE TEN MOVES.  PRESS ANY KEY TO CONTINUE.":GO SUB 1000
  310 IF INKEY$="" THEN GO TO 310
  320 CLS :PRINT "YOUR SEQUENCE WAS:":PRINT 
  330 FOR I=1 TO 10:PRINT S(I);" ";:LET FLAG=FLAG+(S(I) <> INT (SQR (G(I)-9))):NEXT I:PRINT 
  340 IF FLAG <>0 THEN LET Q$="SORRY! ":LET Z$="NOT "
  350 IF FLAG=0 THEN LET Q$="CONGRATULATIONS! ":LET Z$=""
  360 PRINT :LET N$=Q$+"YOU HAVE "+Z$+"FOLLOWED VANESSA'S STEPS.":GO SUB 1000
  370 IF Z$="" THEN STOP 
  380 LET TRIALS=TRIALS +1:GO SUB 8000:GO TO 130
 1000 LET J=0
 2000 IF LEN N$<32 THEN PRINT N$:RETURN 
 2010 FOR X=1 TO 32:IF CODE N$(X)=32 THEN LET J=X
 2020 NEXT X:PRINT N$(1 TO J):LET N$=N$(J+1 TO LEN N$):GO TO 1010
 3000 DATA "01","1234678","02","02","1800000","01","11","1850000","01","03","1650000","01"
 3010 DATA "02","1850000","01","03","1600000","01","04","1750000","03","03","1560000","01"
 3030 DATA "04","1850000","01","06","1400000","04","05","1520000","05","04","1570000","01"
 3040 DATA "05","1540000","05","05","1520000","05","06","1540000","04","07","1470000","06"
 3050 DATA "06","1400000","04","07","1300000","07","08","1234678","08","07","1400000"
 3060 DATA "06","08","1234678","09","10","1600000","10","09","0100000","11","10","4800000"
 3070 DATA "12","09","0100000","13","08","1234678","14","09","0100000","15","10","0500000"
 3080 DATA "17","09","0900000","18"
 4000 DATA "0203040506","0104","0106","01020507","01040608"
 4010 DATA "0103040506","040811222324","05070912","060813"
 4020 DATA "161114","071012","08111314","091215"
 4030 DATA "10121517","131418","191710","14161820"
 4040 DATA "151721","2516","25172126","18202729"
 4050 DATA "232407","22242607","23252207","24192026","2352027"
 4060 DATA "262128","27","21"
 5000 DATA "JANUARY 2",11,"FEBRUARY 2",35,"MARCH 21",74
 5010 DATA "APRIL 12",154,"AUGUST 2",206,"SEPTEMBER 30",299
 5020 DATA "OCTOBER 12",410,"NOVEMBER 23",686,"NOVEMBER 24",539
 5030 DATA "NOVEMBER 25",494,"FEBRUARY 12",794
 6000 DATA "VANESSA","MOTHER","FATHER","AMANDA","AUNT EMILY","SIDNEY","SEPTIMUS","SEBASTIAN","NOBODY"
 7000 DATA "COURTSHIP","DEBUT PARTY","ICE SKATING","JEALOUS QUARREL","READS INVITATION","SECRET MEETING","FROZEN PIE FIGHT","HULA-HOOP CONTEST","BRUNCH PARTY","LOVERS UNITED"
 7010 DATA "FINDS NOTE--IF YOU LOVE ME--MEET ME RIGHT OUTSIDE"
 7020 DATA "ELOPING ON HORSE","FINDS TWO MOVIE TICKETS","TURKEY FEAST","FINDS TWO PLANE TICKETS","CONSTRUCTION","SNORING","NOTHING"
 8000 IF TRIALS<10 THEN PAUSE 240:RETURN :REM CHEATER'S ALWAYS WIN
 8001 IF TRIALS >9 THEN INPUT "GIVE UP?";Q$:IF Q$="" THEN GO TO 8001
 8005 IF Q$="Y" THEN CLS :GO TO 8020
 8010 IF Q$="N" THEN RETURN 
 8020 FOR i=1 TO 10:PRINT INT (SQR (g(i)-9));" ";:NEXT i
 8030 PAUSE 300:STOP 
 8500 BORDER 1:BRIGHT 1:PAPER 1:INK 5:CLS :REM NARRATIVE
 8502 REM INSERT SCRIPT GOTHIC WHATEVER BETWEEN 8501 AND 8515
 8518 PRINT AT 1,10;"\q\r"; AT 2,10;"\s\t"; AT 2,12;"ONG AGO"
 8520 PRINT "IN A GALICIA FAR, FAR AWAY      VANESSA DRACONE HAD A THWARTED  LOVE FOR A MYSTERIOUS SUITOR,   ONLY 'S' IN HER DIARY."
 8522 PRINT '"USING VANESSA'S MOULDERING DIARYTRACE HER STEPS THROUGH ROOMS   OF THE NOW-HAUNTED MANOR IN     SEARCH OF HER LOVER.  DOES      THE GHOST OF VANESSA FINALLY    UNITE WITH 'S' OR ARE THEY TO BESTAR-CROSSED THROUGH 48K?"
 8524 PRINT ''"CAN YOU PUT THEIR SOULS TO REST AFTER A CENTURY?"
 8525 GO SUB 9524:PRINT "\{20}\{1}\{16}\{3}CHARACTERS:\{20}\{0}\{16}\{5}"
 8527 PRINT ''"\{20}\{1}VANESSA\{20}\{0}-OUR GHOSTLY HEROINE";'"\{20}\{1}AMANDA\{20}\{0}-HER ENVIOUS SISTER";'"\{20}\{1}AUNT EMILY\{20}\{0}-WHO CHAPERONES WHEN  SUITORS CALL";'"\{20}\{1}MOTHER\{20}\{0}-\{20}\{0}WHO DOESN'T DREAM";'"\{20}\{1}FATHER\{20}\{0}-WHO NEVERS SUSPECTS"
 8529 PRINT '"THE SUITORS: ";''"\{16}\{2}\{20}\{1}\{16}\{6}SIDNEY\{16}\{5}\{20}\{0}\{16}\{5}-AN AGING BUT ROMANTIC    BARON";'"\{16}\{6}\{16}\{6}\{20}\{1}SEPTIMUS\{16}\{5}\{20}\{0}-A SCHOLARLY BIG GAME   HUNTER";'"\{16}\{6}\{20}\{1}SEBASTIAN\{20}\{0}\{16}\{5}-A VISITING HUNGARIAN  CAVALRYMAN":GO SUB 9524
 8530 PRINT '"\{16}\{0}\{20}\{1}\{16}\{5}\{20}\{1}JANUARY 2,. 1887\{20}\{0}-TODAY WAS MY    DEBUT INTO SOCIETY AND AMANDA   SO ENVIES MY THREE SUITORS.";'"EACH IS SO DIFFERENT!";'"SIDNEY SAID HE WOULD ONLY COURT A DAMSEL UNDER THE MAGNOLIAS IN SPRING."
 8532 PRINT "I REPLIED THAT OUR FAMILY TRADI-TION REQUIRES SUITORS BE ENTER- TAINED IN THE MOST FORMAL ROOM  IN THE MANSION, BUT MOTHER SAID WE ARE NOT TOO TRADITIONAL TO   BREAKFAST IN THE PARLOR DAILY."
 8534 PRINT '"SEBASTIAN SAID HE WOULD RATHER  MEET HIS DESTINY IN A ROSE GAR- DEN THAN ON A BATTLEFIELD.";'"SEPTIMUS BROUGHT ME A BOOK OF   POETRY FOR OUR LIBRARY, HIS     FAVORITE ROOM."
 8538 GO SUB 9524
 8539 IF MARKER=1 THEN RETURN 
 8540 PRINT '"\{20}\{1}FEBRUARY 2,1887\{20}\{0}-TEA WITH MY 1ST GENTLEMAN CALLER, SEBASTIAN.    FATHER INVITED HIM TO THE SMOK- ING ROOM, THEN TO SEE THE GUN   ROOM (TWO EXCLUSIVELY MALE DO-  MAINS IN THE MANOR) BUT SEBAS-  TIAN DECLINED IN ORDER TO BE    WITH ME."
 8542 PRINT '"WE SAT UPON AN UNCOMFORTABLY    STIFF, VELVET SETTEE.  SEBASTIANIS AS IMPRESSIVE AS THE MEDALS  ON HIS UNIFORM.  EVEN AUNT EMILYWAS SORRY TO SEE HIM LEAVE." 
 8548 GO SUB 9524
 8549 IF MARKER=1 THEN RETURN 
 8550 PRINT '"\{20}\{1}MARCH 21,1887\{20}\{0}-TODAY A NEW SEASONARRIVED AND WITH IT A 2ND SUITOR--SIDNEY.  AUNT EMILY SWOONED   WHEN HE COMPARED THE MAGNOLIA   BLOSSOMS TO THE PALENESS OF MY  BARE SHOULDERS. BOLD!\{20}\{0}"
 8552 PRINT "SUCH AUDACITY PUT ROSES IN MY   CHEEKS, BUT THEY WOULD PALE IF  HE WERE NEVER TO CALL AGAIN."
 8558 GO SUB 9524
 8559 IF MARKER=1 THEN RETURN 
 8560 PRINT '"\{20}\{1}APRIL 12,1887\{20}\{1}\{20}\{0}-SPENT THE DAY     WITH MY 3RD SUITOR, SEPTIMUS, INHIS FAVORITE SPOT AT THE MANOR.";''"AT FIRST HE WAS QUITE DISTRACTEDBROWSING FROM SHELF TO SHELF BUTHE WAS ONLY LOCATING A VOLUME OFROMANTIC POETRY FROM WHICH TO   READ ALOUD TO AUNT EMILY AND ME."
 8562 PRINT ''"HE DID PRAISE MY BROWN EYES,    SAYING HE LOATHED PRUSSIAN BLUE."
 8568 GO SUB 9524
 8569 IF MARKER=1 THEN RETURN 
 8570 PRINT '"\{20}\{1}AUGUST 2,1887\{20}\{0}-BREAKFAST BEGAN   WITH AUNT EMILY'S ACCOUNT TO MY MOTHER OF EVERY WORD MY SUITORS SAID. THANK HEAVENS AMANDA WAS  NOT THERE TO BE JEALOUS.  MOTHERKNOWS NOT THAT I HAVE ALREADY   CHOSEN THE ONE SUITOR TO WHOM I WOULD GIVE MY SOUL.\{20}\{0}"
 8572 PRINT ''"(FOR CAUTION'S SAKE, I REFER TO HIM ONLY AS S HEREAFTER.) DEAR, DEAR DIARY, IMAGINE HOW MY HEARTLEAPT AT RECEIVING THIS MORNING AN INVITATION FROM S FOR TONIGHT--A SECRET MEETING!"
 8578 GO SUB 9524
 8579 IF MARKER=1 THEN RETURN 
 8580 PRINT '"\{20}\{1}SEPTEMBER 30,1887\{20}\{0}-OH, MISERY!   MY REPLY TO S WAS READ BY MY    SISTER BEFORE I SENT IT OFF!    WHEN I REFUSED TO TELL HER WHO SWAS, SHE FLUNG MY HAIRBRUSH AT  ME AND NEARLY BROKE MY MIRROR.  SHE CRIED,'I MUST KNOW...FOR I  LOVE HIM AS MUCH AS YOU!' WHEN IASKED HER TO WHICH S SHE REFER- RED, SHE TOO WAS SILENT."
 8588 GO SUB 9524
 8589 IF MARKER=1 THEN RETURN 
 8590 PRINT '"\{20}\{1}OCTOBER 12,1887\{20}\{0}-MY MEETING WITH S WAS ABORTED! I ARRIVED AT OUR APPOINTED PLACE ONLY TO DISCOVERAMANDA THERE INSTEAD!  SHE CAME TO DISCOVER S'S IDENTITY BUT HERPRESENCE FRIGHTENED HIM AWAY."
 8598 GO SUB 9524
 8599 IF MARKER=1 THEN RETURN 
 8600 PRINT '"\{20}\{1}NOVEMBER 23, 1887\{20}\{0}-SEPTIMUS, SID-NEY, SEBASTIAN AND THE FAMILY   WATCHED THE SETTING SUN DIP BE- LOW THE SNOW DRIFTS."
 8602 PRINT ''"S'S MANNER WAS EQUALLY CHILLY, IGUESS BECAUSE OF AMANDA'S BREAK-ING UP OUR OCTOBER TRYST.  NOT  MY FAULT. WORSE, AMANDA SEEMED  POSITIVELY BUOYANT."
 8604 PRINT ''"AFTER S RETIRED TO HIS BEDROOM  NEXT DOOR, I PONDERED OVER LOS- ING HIM FOREVER."
 8608 GO SUB 9524
 8609 IF MARKER=1 THEN RETURN 
 8610 PRINT '"\{20}\{1}NOVEMBER 24,1887\{20}\{0}-THE 3 S'S SPENTTHE DAY PACKING, AND VACATED    THEIR BED CHAMBERS BY EVENING.\{20}\{0}"
 8612 PRINT ''"NOT LONG AFTER, A SERVANT NOTED THAT AMANDA AND HER BELONGINGS  HAD VANISHED.  MOTHER FAINTED.  AMANDA HAS RUN OFF WITH ONE OF  MY BEAUS."
 8614 PRINT '"I NOW AM WRITING THIS IN S'S    EMPTY ROOM. A MIDNIGHT'S CHILL  WIND BLOWS OUT OF THE WEST. I   HAVE FOUND AN ENVELOPE ADDRESSEDTO ME FROM S."
 8616 PRINT '"THO MY HANDS SHAKE, NO MATTER   WHAT IT SAYS, I'LL FOLLOW HIM."
 8618 GO SUB 9524
 8619 IF MARKER=1 THEN RETURN 
 8620 PRINT "\{16}\{3}\{18}\{1}ROOM LIST\{16}\{5}\{18}\{0}"
 8622 PRINT '"1.  BALLROOM";'"2.  REAR VESTIBULE";'"3.  STUDY";'"4.  GUN ROOM";'"5.  FORMAL RECEPTION ROOM" 
 8624 PRINT "6.  SITTING ROOM";'"7.  RECREATION LAWN";'"8.  COURTYARD VERANDA";'"9.  DINING ROOM";'"10. SMOKING ROOM";'"11. BREAKFAST ROOM"
 8626 PRINT "12. LIBRARY";'"13. BACK PARLOR";'"14. FRONT PARLOR";'"15. BACK PORCH";'"16. TURQUOISE DRAWING ROOM"
 8627 GO SUB 9524
 8628 POKE 23692,255:PRINT "17. BOUDOIR";'"18. KITCHEN";'"19. PATIO";'"20. CONSERVATORY";'"21. MAIN HALL"
 8630 PRINT "22. GAZEBO";'"23. GUEST BEDROOM #1";'"24. ROSE GARDEN";'"25. GUEST BEDROOM #2"
 8632 PRINT "26. RED DRAWING ROOM";'"27. GUEST BEDROOM #3";'"28. BEDROOM";'"29. BEDROOM"
 8634 PRINT ''"\{20}\{1}THERE ARE COLOR CLUES IN THE    SCREEN MAP THAT ARE NOT ON COPY.\{20}\{0}":INPUT "\{20}\{1}G\{20}\{0}O ON OR \{20}\{1}R\{20}\{0}E-LOAD MAP? G/R";G$:IF G$="" THEN GO TO 8634
 8636 IF G$="R" THEN PRINT "REPOSITION TAPE!":GO SUB 9524:LOAD /"MYSMANORs2"SCREEN$ :GO SUB 9524
 8642 CLS :GO SUB 9100:PRINT 240:CLS 
 8644 IF MARKER=1 THEN RETURN 
 8800 RETURN 
 9000 LET MARKER=1:CLS :PRINT "         \{20}\{1}P R O M P T E R\{20}\{0}"
 9002 PRINT ''"\{17}\{5}\{16}\{0}1887 DATES: \{17}\{1}\{16}\{7}\{16}\{5}"
 9010 PRINT '"(1) JANUARY 2  ";"(6) SEPTEMBER 30"
 9012 PRINT '"(2) FEBRUARY 2 ";"(7) OCTOBER 12"
 9014 PRINT '"(3) MARCH 21   ";"(8) NOVEMBER 23"
 9016 PRINT '"(4) APRIL 12   ";"(9) NOVEMBER 24"
 9018 PRINT '"(5) AUGUST 2  ";"(10) \{16}\{3}\{18}\{1}ROOM LIST\{18}\{0}\{16}\{5}"
 9020 INK 5:PRINT '''"\{20}\{1}THE LAST PAGE OF THE DIARY WAS  RIPPED OUT\{20}\{0}"
 9022 INPUT "INPUT NUMBER OF DATE FOR REVIEW ";DATE:IF DATE<1 OR DATE>10 THEN GO TO 9022
 9024 CLS :GO SUB 8520+(DATE*10)
 9026 RETURN 
 9100 PRINT "MOVING RIGHT ALONG!":REM SCAMPER HERE
 9110 LET x=30:LET y=0
 9120 PRINT AT y,x;"\e":LET y=y+1:PRINT AT y,x;"\g":PAUSE 10
 9125 LET x=x-3:LET y=y+3:PRINT AT y,x;"\f"; AT y+1,x;"\h":PAUSE 10:IF y >=18 THEN RETURN 
 9130 LET x=x-3:LET y=y+3:GO TO 9120
 9150 RETURN 
 9524 PRINT #1;"PRESS ANY KEY":PAUSE 0:CLS 
 9800 CLS :RETURN 
 9810 PRINT "\{17}\{2}\{16}\{7}\{18}\{1} LOADING SCREEN$ \{18}\{0}\{17}\{2}\{16}\{7}\{16}\{0}\{17}\{7}":BORDER 1:LOAD "MYSMANORs1"SCREEN$ :GO SUB 9850:CLS :BORDER 0:LOAD "MYSMANORs2"SCREEN$ :INPUT "COPY TO TS2040? Y/N? ";C$:IF C$="" THEN PAUSE 60:CLS :RETURN 
 9820 IF C$="Y" OR C$="C" THEN COPY :RETURN 
 9830 IF C$="N" THEN INPUT "SURE?\{20}\{1}C\{20}\{0}OPY/\{20}\{1}G\{20}\{0}O-ON ";C$:IF C$="G" THEN RETURN 
 9840 GO TO 9820
 9850 RESTORE 9860:FOR P=65496 TO 65527:READ M:POKE P,M:NEXT P
 9860 DATA 0,m,m,m,m,1,m,m,28,62,98,70,196,192,m,m,1,m,m,3,7,30,15,0,192,m,128,m,0,4,248,0
 9870 RESTORE 9880:FOR P=65400 TO 65431:READ C:POKE P,C:NEXT P:RETURN 
 9880 DATA 0,C,C,12,30,C,0,C,C,C,C,48,120,C,0,C,28,60,126,C,C,62,30,12,56,60,126,C,C,124,120,48
 9890 STOP :REM TAPE TO DISK CHANGE 8636,9810
 9900 CLEAR :SAVE "MYSMANOR" LINE 1

Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.