_  __   _  _         _ _     _      _           _           
  __| |/ /_ | || |     __| (_)___| | __ (_)_ __   __| | _____  __
 / _` | '_ \| || |_   / _` | / __| |/ / | | '_ \ / _` |/ _ \ \/ /
| (_| | (_) |__   _| | (_| | \__ \   <  | | | | | (_| |  __/>  < 
 \__,_|\___/   |_|    \__,_|_|___/_|\_\ |_|_| |_|\__,_|\___/_/\_\
                                                                 
            

ANIMAL.LOGO

FILE INFORMATION

FILENAME(S): ANIMAL.LOGO

FILE TYPE(S): PRG

FILE SIZE: 2.1K

FIRST SEEN: 2025-11-30 21:14:52

APPEARS ON: 2 disk(s)

FILE HASH

a19c40df9368cf11d44ebc055d3a5f2f1d446f36d362d00395d8f3302ad01fa8

FOUND ON DISKS (2 DISKS)

DISK TITLE FILENAME FILE TYPE COLLECTION TRACK SECTOR ACTIONS
CBM 64 LOGO ANIMAL.LOGO PRG DuncanTwain 21 0 DOWNLOAD FILE
P31A LOGO ANIMAL.LOGO PRG DuncanTwain 21 1 DOWNLOAD FILE

FILE CONTENT & ANALYSIS

00000000: 00 20 54 4F 20 49 4E 49  54 49 41 4C 49 5A 45 2E  |. TO INITIALIZE.|
00000010: 4B 4E 4F 57 4C 45 44 47  45 0D 20 4D 41 4B 45 20  |KNOWLEDGE. MAKE |
00000020: 22 4B 4E 4F 57 4C 45 44  47 45 20 22 46 49 53 48  |"KNOWLEDGE "FISH|
00000030: 0D 45 4E 44 0D 0D 54 4F  20 41 44 44 2E 41 2E 4F  |.END..TO ADD.A.O|
00000040: 52 2E 41 4E 20 3A 57 4F  52 44 0D 20 54 45 53 54  |R.AN :WORD. TEST|
00000050: 20 4D 45 4D 42 45 52 3F  20 28 20 46 49 52 53 54  | MEMBER? ( FIRST|
00000060: 20 3A 57 4F 52 44 20 29  20 5B 41 20 45 20 49 20  | :WORD ) [A E I |
00000070: 4F 20 55 5D 0D 20 49 46  54 52 55 45 20 4F 55 54  |O U]. IFTRUE OUT|
00000080: 50 55 54 20 53 45 4E 54  45 4E 43 45 20 22 41 4E  |PUT SENTENCE "AN|
00000090: 20 3A 57 4F 52 44 0D 20  49 46 46 41 4C 53 45 20  | :WORD. IFFALSE |
000000A0: 4F 55 54 50 55 54 20 53  45 4E 54 45 4E 43 45 20  |OUTPUT SENTENCE |
000000B0: 22 41 20 3A 57 4F 52 44  0D 45 4E 44 0D 0D 54 4F  |"A :WORD.END..TO|
000000C0: 20 47 45 54 2E 53 4D 41  52 54 45 52 20 3A 57 52  | GET.SMARTER :WR|
000000D0: 4F 4E 47 2E 41 4E 53 57  45 52 0D 20 50 52 49 4E  |ONG.ANSWER. PRIN|
000000E0: 54 20 5B 4F 48 20 57 45  4C 4C 2C 20 49 20 57 41  |T [OH WELL, I WA|
000000F0: 53 20 57 52 4F 4E 47 2E  20 57 48 41 54 20 57 41  |S WRONG. WHAT WA|
00000100: 53 20 49 54 3F 5D 0D 20  4D 41 4B 45 20 22 52 49  |S IT?]. MAKE "RI|
00000110: 47 48 54 2E 41 4E 53 57  45 52 20 28 20 4C 41 53  |GHT.ANSWER ( LAS|
00000120: 54 20 52 45 51 55 45 53  54 20 29 0D 20 50 52 49  |T REQUEST ). PRI|
00000130: 4E 54 20 5B 50 4C 45 41  53 45 20 54 59 50 45 20  |NT [PLEASE TYPE |
00000140: 49 4E 20 41 20 51 55 45  53 54 49 4F 4E 20 57 48  |IN A QUESTION WH|
00000150: 4F 53 45 20 41 4E 53 57  45 52 5D 0D 20 50 52 49  |OSE ANSWER]. PRI|
00000160: 4E 54 20 28 20 53 45 20  5B 49 53 20 22 59 45 53  |NT ( SE [IS "YES|
00000170: 22 20 46 4F 52 5D 20 41  44 44 2E 41 2E 4F 52 2E  |" FOR] ADD.A.OR.|
00000180: 41 4E 20 3A 52 49 47 48  54 2E 41 4E 53 57 45 52  |AN :RIGHT.ANSWER|
00000190: 20 5B 41 4E 44 5D 20 29  0D 20 50 52 49 4E 54 20  | [AND] ). PRINT |
000001A0: 28 20 53 45 20 5B 22 4E  4F 22 20 46 4F 52 5D 20  |( SE ["NO" FOR] |
000001B0: 41 44 44 2E 41 2E 4F 52  2E 41 4E 20 3A 57 52 4F  |ADD.A.OR.AN :WRO|
000001C0: 4E 47 2E 41 4E 53 57 45  52 20 29 0D 20 4D 41 4B  |NG.ANSWER ). MAK|
000001D0: 45 20 22 51 55 45 53 54  49 4F 4E 20 52 45 51 55  |E "QUESTION REQU|
000001E0: 45 53 54 0D 20 45 58 50  41 4E 44 2E 4B 4E 4F 57  |EST. EXPAND.KNOW|
000001F0: 4C 45 44 47 45 20 3A 51  55 45 53 54 49 4F 4E 20  |LEDGE :QUESTION |
00000200: 3A 52 49 47 48 54 2E 41  4E 53 57 45 52 20 3A 57  |:RIGHT.ANSWER :W|
00000210: 52 4F 4E 47 2E 41 4E 53  57 45 52 0D 45 4E 44 0D  |RONG.ANSWER.END.|
00000220: 0D 54 4F 20 45 58 50 41  4E 44 2E 4B 4E 4F 57 4C  |.TO EXPAND.KNOWL|
00000230: 45 44 47 45 20 3A 4E 45  57 2E 51 55 45 53 54 49  |EDGE :NEW.QUESTI|
00000240: 4F 4E 20 3A 59 45 53 2E  41 4E 53 57 45 52 20 3A  |ON :YES.ANSWER :|
00000250: 4E 4F 2E 41 4E 53 57 45  52 0D 20 4D 41 4B 45 20  |NO.ANSWER. MAKE |
00000260: 22 4B 4E 4F 57 4C 45 44  47 45 20 52 45 50 4C 41  |"KNOWLEDGE REPLA|
00000270: 43 45 20 3A 4B 4E 4F 57  4C 45 44 47 45 20 3A 57  |CE :KNOWLEDGE :W|
00000280: 52 4F 4E 47 2E 41 4E 53  57 45 52 20 28 20 4C 49  |RONG.ANSWER ( LI|
00000290: 53 54 20 3A 4E 45 57 2E  51 55 45 53 54 49 4F 4E  |ST :NEW.QUESTION|
000002A0: 20 3A 52 49 47 48 54 2E  41 4E 53 57 45 52 20 3A  | :RIGHT.ANSWER :|
000002B0: 57 52 4F 4E 47 2E 41 4E  53 57 45 52 20 29 0D 45  |WRONG.ANSWER ).E|
000002C0: 4E 44 0D 0D 54 4F 20 52  45 50 4C 41 43 45 20 3A  |ND..TO REPLACE :|
000002D0: 44 41 54 41 20 3A 57 4F  52 44 20 3A 4E 45 57 2E  |DATA :WORD :NEW.|
000002E0: 42 52 41 4E 43 48 0D 20  49 46 20 3A 44 41 54 41  |BRANCH. IF :DATA|
000002F0: 20 3D 20 3A 57 4F 52 44  20 4F 50 20 3A 4E 45 57  | = :WORD OP :NEW|
00000300: 2E 42 52 41 4E 43 48 0D  20 49 46 20 57 4F 52 44  |.BRANCH. IF WORD|
00000310: 3F 20 3A 44 41 54 41 20  4F 50 20 3A 44 41 54 41  |? :DATA OP :DATA|
00000320: 0D 20 4F 50 20 28 20 4C  49 53 54 20 51 55 45 53  |. OP ( LIST QUES|
00000330: 54 49 4F 4E 20 3A 44 41  54 41 20 52 45 50 4C 41  |TION :DATA REPLA|
00000340: 43 45 20 59 45 53 2E 42  52 41 4E 43 48 20 3A 44  |CE YES.BRANCH :D|
00000350: 41 54 41 20 3A 57 4F 52  44 20 3A 4E 45 57 2E 42  |ATA :WORD :NEW.B|
00000360: 52 41 4E 43 48 20 52 45  50 4C 41 43 45 20 4E 4F  |RANCH REPLACE NO|
00000370: 2E 42 52 41 4E 43 48 20  3A 44 41 54 41 20 3A 57  |.BRANCH :DATA :W|
00000380: 4F 52 44 20 3A 4E 45 57  2E 42 52 41 4E 43 48 20  |ORD :NEW.BRANCH |
00000390: 29 0D 45 4E 44 0D 0D 54  4F 20 57 41 49 54 20 3A  |).END..TO WAIT :|
000003A0: 4E 0D 20 52 45 50 45 41  54 20 3A 4E 20 5B 5D 0D  |N. REPEAT :N [].|
000003B0: 45 4E 44 0D 0D 54 4F 20  4E 4F 2E 42 52 41 4E 43  |END..TO NO.BRANC|
000003C0: 48 20 3A 54 52 45 45 0D  20 4F 55 54 50 55 54 20  |H :TREE. OUTPUT |
000003D0: 4C 41 53 54 20 3A 54 52  45 45 0D 45 4E 44 0D 0D  |LAST :TREE.END..|
000003E0: 54 4F 20 59 45 53 2E 42  52 41 4E 43 48 20 3A 54  |TO YES.BRANCH :T|
000003F0: 52 45 45 0D 20 4F 55 54  50 55 54 20 46 49 52 53  |REE. OUTPUT FIRS|
00000400: 54 20 42 55 54 46 49 52  53 54 20 3A 54 52 45 45  |T BUTFIRST :TREE|
00000410: 0D 45 4E 44 0D 0D 54 4F  20 51 55 45 53 54 49 4F  |.END..TO QUESTIO|
00000420: 4E 20 3A 54 52 45 45 0D  20 4F 55 54 50 55 54 20  |N :TREE. OUTPUT |
00000430: 46 49 52 53 54 20 3A 54  52 45 45 0D 45 4E 44 0D  |FIRST :TREE.END.|
00000440: 0D 54 4F 20 41 53 4B 2E  59 45 53 2E 4F 52 2E 4E  |.TO ASK.YES.OR.N|
00000450: 4F 20 3A 51 55 45 53 54  49 4F 4E 0D 20 4C 4F 43  |O :QUESTION. LOC|
00000460: 41 4C 20 22 41 4E 53 57  45 52 0D 20 50 52 49 4E  |AL "ANSWER. PRIN|
00000470: 54 31 20 3A 51 55 45 53  54 49 4F 4E 0D 20 49 46  |T1 :QUESTION. IF|
00000480: 20 22 3F 20 3D 20 4C 41  53 54 20 4C 41 53 54 20  | "? = LAST LAST |
00000490: 3A 51 55 45 53 54 49 4F  4E 20 50 52 49 4E 54 20  |:QUESTION PRINT |
000004A0: 5B 5D 20 45 4C 53 45 20  50 52 49 4E 54 20 22 3F  |[] ELSE PRINT "?|
000004B0: 0D 20 4D 41 4B 45 20 22  41 4E 53 57 45 52 20 52  |. MAKE "ANSWER R|
000004C0: 45 51 55 45 53 54 0D 20  49 46 20 3A 41 4E 53 57  |EQUEST. IF :ANSW|
000004D0: 45 52 20 3D 20 5B 59 45  53 5D 20 4F 55 54 50 55  |ER = [YES] OUTPU|
000004E0: 54 20 5B 59 45 53 5D 0D  20 49 46 20 3A 41 4E 53  |T [YES]. IF :ANS|
000004F0: 57 45 52 20 3D 20 5B 4E  4F 5D 20 4F 55 54 50 55  |WER = [NO] OUTPU|
00000500: 54 20 5B 4E 4F 5D 0D 20  50 52 49 4E 54 20 5B 50  |T [NO]. PRINT [P|
00000510: 4C 45 41 53 45 20 54 59  50 45 20 22 59 45 53 22  |LEASE TYPE "YES"|
00000520: 20 4F 52 20 22 4E 4F 22  5D 0D 20 4F 55 54 50 55  | OR "NO"]. OUTPU|
00000530: 54 20 41 53 4B 2E 59 45  53 2E 4F 52 2E 4E 4F 20  |T ASK.YES.OR.NO |
00000540: 3A 51 55 45 53 54 49 4F  4E 0D 45 4E 44 0D 0D 54  |:QUESTION.END..T|
00000550: 4F 20 46 49 4E 41 4C 2E  47 55 45 53 53 20 3A 43  |O FINAL.GUESS :C|
00000560: 48 4F 49 43 45 0D 20 4C  4F 43 41 4C 20 22 46 49  |HOICE. LOCAL "FI|
00000570: 4E 41 4C 2E 51 55 45 53  54 49 4F 4E 0D 20 4C 4F  |NAL.QUESTION. LO|
00000580: 43 41 4C 20 22 52 45 53  50 4F 4E 53 45 0D 20 4D  |CAL "RESPONSE. M|
00000590: 41 4B 45 20 22 46 49 4E  41 4C 2E 51 55 45 53 54  |AKE "FINAL.QUEST|
000005A0: 49 4F 4E 20 28 20 53 45  20 5B 49 53 20 49 54 5D  |ION ( SE [IS IT]|
000005B0: 20 41 44 44 2E 41 2E 4F  52 2E 41 4E 20 3A 43 48  | ADD.A.OR.AN :CH|
000005C0: 4F 49 43 45 20 5B 3F 5D  20 29 0D 20 4D 41 4B 45  |OICE [?] ). MAKE|
000005D0: 20 22 52 45 53 50 4F 4E  53 45 20 41 53 4B 2E 59  | "RESPONSE ASK.Y|
000005E0: 45 53 2E 4F 52 2E 4E 4F  20 3A 46 49 4E 41 4C 2E  |ES.OR.NO :FINAL.|
000005F0: 51 55 45 53 54 49 4F 4E  0D 20 49 46 20 3A 52 45  |QUESTION. IF :RE|
00000600: 53 50 4F 4E 53 45 20 3D  20 5B 59 45 53 5D 20 50  |SPONSE = [YES] P|
00000610: 52 49 4E 54 20 5B 4C 4F  4F 4B 20 48 4F 57 20 53  |RINT [LOOK HOW S|
00000620: 4D 41 52 54 20 49 20 41  4D 21 5D 20 53 54 4F 50  |MART I AM!] STOP|
00000630: 0D 20 47 45 54 2E 53 4D  41 52 54 45 52 20 3A 43  |. GET.SMARTER :C|
00000640: 48 4F 49 43 45 0D 45 4E  44 0D 0D 54 4F 20 47 55  |HOICE.END..TO GU|
00000650: 45 53 53 20 3A 43 48 4F  49 43 45 53 0D 20 49 46  |ESS :CHOICES. IF|
00000660: 20 28 20 57 4F 52 44 3F  20 3A 43 48 4F 49 43 45  | ( WORD? :CHOICE|
00000670: 53 20 29 20 46 49 4E 41  4C 2E 47 55 45 53 53 20  |S ) FINAL.GUESS |
00000680: 3A 43 48 4F 49 43 45 53  20 53 54 4F 50 0D 20 4C  |:CHOICES STOP. L|
00000690: 4F 43 41 4C 20 22 52 45  53 50 4F 4E 53 45 0D 20  |OCAL "RESPONSE. |
000006A0: 4D 41 4B 45 20 22 52 45  53 50 4F 4E 53 45 20 41  |MAKE "RESPONSE A|
000006B0: 53 4B 2E 59 45 53 2E 4F  52 2E 4E 4F 20 28 20 51  |SK.YES.OR.NO ( Q|
000006C0: 55 45 53 54 49 4F 4E 20  3A 43 48 4F 49 43 45 53  |UESTION :CHOICES|
000006D0: 20 29 0D 20 49 46 20 3A  52 45 53 50 4F 4E 53 45  | ). IF :RESPONSE|
000006E0: 20 3D 20 5B 59 45 53 5D  20 47 55 45 53 53 20 59  | = [YES] GUESS Y|
000006F0: 45 53 2E 42 52 41 4E 43  48 20 3A 43 48 4F 49 43  |ES.BRANCH :CHOIC|
00000700: 45 53 20 53 54 4F 50 0D  20 47 55 45 53 53 20 4E  |ES STOP. GUESS N|
00000710: 4F 2E 42 52 41 4E 43 48  20 3A 43 48 4F 49 43 45  |O.BRANCH :CHOICE|
00000720: 53 0D 45 4E 44 0D 0D 54  4F 20 41 4E 49 4D 41 4C  |S.END..TO ANIMAL|
00000730: 0D 20 4E 44 0D 20 50 52  49 4E 54 20 5B 54 48 49  |. ND. PRINT [THI|
00000740: 4E 4B 20 4F 46 20 41 4E  20 41 4E 49 4D 41 4C 2E  |NK OF AN ANIMAL.|
00000750: 20 49 20 57 49 4C 4C 5D  0D 20 50 52 49 4E 54 20  | I WILL]. PRINT |
00000760: 5B 54 52 59 20 54 4F 20  47 55 45 53 53 20 49 54  |[TRY TO GUESS IT|
00000770: 20 42 59 20 41 53 4B 49  4E 47 20 51 55 45 53 54  | BY ASKING QUEST|
00000780: 49 4F 4E 53 2E 5D 0D 20  50 52 49 4E 54 20 5B 5D  |IONS.]. PRINT []|
00000790: 0D 20 47 55 45 53 53 20  3A 4B 4E 4F 57 4C 45 44  |. GUESS :KNOWLED|
000007A0: 47 45 0D 20 50 52 49 4E  54 20 5B 4C 45 54 27 53  |GE. PRINT [LET'S|
000007B0: 20 54 52 59 20 41 47 41  49 4E 5D 0D 20 57 41 49  | TRY AGAIN]. WAI|
000007C0: 54 20 31 30 30 30 0D 20  41 4E 49 4D 41 4C 0D 45  |T 1000. ANIMAL.E|
000007D0: 4E 44 0D 0D 4D 41 4B 45  20 22 4B 4E 4F 57 4C 45  |ND..MAKE "KNOWLE|
000007E0: 44 47 45 20 5B 5B 44 4F  45 53 20 49 54 20 48 41  |DGE [[DOES IT HA|
000007F0: 56 45 20 46 4F 55 52 20  4C 45 47 53 3F 5D 20 5B  |VE FOUR LEGS?] [|
00000800: 5B 44 4F 45 53 20 49 54  20 47 4F 20 4D 4F 4F 3F  |[DOES IT GO MOO?|
00000810: 5D 20 43 4F 57 20 5B 5B  44 4F 45 53 20 49 54 20  |] COW [[DOES IT |
00000820: 57 48 49 4E 4E 59 3F 5D  20 48 4F 52 53 45 20 50  |WHINNY?] HORSE P|
00000830: 49 47 5D 5D 20 5B 5B 44  4F 45 53 20 49 54 20 48  |IG]] [[DOES IT H|
00000840: 41 56 45 20 43 4C 41 57  53 3F 5D 20 4C 4F 42 53  |AVE CLAWS?] LOBS|
00000850: 54 45 52 20 5B 5B 43 41  4E 20 49 54 20 52 55 4E  |TER [[CAN IT RUN|
00000860: 3F 5D 20 4F 53 54 52 49  43 48 20 46 49 53 48 5D  |?] OSTRICH FISH]|
00000870: 5D 5D 0D 4D 41 4B 45 20  22 53 54 41 52 54 55 50  |]].MAKE "STARTUP|
00000880: 20 5B 41 4E 49 4D 41 4C  5D 0D                    | [ANIMAL].      |
. TO INITIALIZE.KNOWLEDGE. MAKE "KNOWLED
GE "FISH.END..TO ADD.A.OR.AN :WORD. TEST
 MEMBER? ( FIRST :WORD ) [A E I O U]. IF
TRUE OUTPUT SENTENCE "AN :WORD. IFFALSE 
OUTPUT SENTENCE "A :WORD.END..TO GET.SMA
RTER :WRONG.ANSWER. PRINT [OH WELL, I WA
S WRONG. WHAT WAS IT?]. MAKE "RIGHT.ANSW
ER ( LAST REQUEST ). PRINT [PLEASE TYPE 
IN A QUESTION WHOSE ANSWER]. PRINT ( SE 
[IS "YES" FOR] ADD.A.OR.AN :RIGHT.ANSWER
 [AND] ). PRINT ( SE ["NO" FOR] ADD.A.OR
.AN :WRONG.ANSWER ). MAKE "QUESTION REQU
EST. EXPAND.KNOWLEDGE :QUESTION :RIGHT.A
NSWER :WRONG.ANSWER.END..TO EXPAND.KNOWL
EDGE :NEW.QUESTION :YES.ANSWER :NO.ANSWE
R. MAKE "KNOWLEDGE REPLACE :KNOWLEDGE :W
RONG.ANSWER ( LIST :NEW.QUESTION :RIGHT.
ANSWER :WRONG.ANSWER ).END..TO REPLACE :
DATA :WORD :NEW.BRANCH. IF :DATA = :WORD
 OP :NEW.BRANCH. IF WORD? :DATA OP :DATA
. OP ( LIST QUESTION :DATA REPLACE YES.B
RANCH :DATA :WORD :NEW.BRANCH REPLACE NO
.BRANCH :DATA :WORD :NEW.BRANCH ).END..T
O WAIT :N. REPEAT :N [].END..TO NO.BRANC
H :TREE. OUTPUT LAST :TREE.END..TO YES.B
RANCH :TREE. OUTPUT FIRST BUTFIRST :TREE
.END..TO QUESTION :TREE. OUTPUT FIRST :T
REE.END..TO ASK.YES.OR.NO :QUESTION. LOC
AL "ANSWER. PRINT1 :QUESTION. IF "? = LA
ST LAST :QUESTION PRINT [] ELSE PRINT "?
. MAKE "ANSWER REQUEST. IF :ANSWER = [YE
S] OUTPUT [YES]. IF :ANSWER = [NO] OUTPU
T [NO]. PRINT [PLEASE TYPE "YES" OR "NO"
]. OUTPUT ASK.YES.OR.NO :QUESTION.END..T
O FINAL.GUESS :CHOICE. LOCAL "FINAL.QUES
TION. LOCAL "RESPONSE. MAKE "FINAL.QUEST
ION ( SE [IS IT] ADD.A.OR.AN :CHOICE [?]
 ). MAKE "RESPONSE ASK.YES.OR.NO :FINAL.
QUESTION. IF :RESPONSE = [YES] PRINT [LO
OK HOW SMART I AM!] STOP. GET.SMARTER :C
HOICE.END..TO GUESS :CHOICES. IF ( WORD?
 :CHOICES ) FINAL.GUESS :CHOICES STOP. L
OCAL "RESPONSE. MAKE "RESPONSE ASK.YES.O
R.NO ( QUESTION :CHOICES ). IF :RESPONSE
 = [YES] GUESS YES.BRANCH :CHOICES STOP.
 GUESS NO.BRANCH :CHOICES.END..TO ANIMAL
. ND. PRINT [THINK OF AN ANIMAL. I WILL]
. PRINT [TRY TO GUESS IT BY ASKING QUEST
IONS.]. PRINT []. GUESS :KNOWLEDGE. PRIN
T [LET'S TRY AGAIN]. WAIT 1000. ANIMAL.E
ND..MAKE "KNOWLEDGE [[DOES IT HAVE FOUR 
LEGS?] [[DOES IT GO MOO?] COW [[DOES IT 
WHINNY?] HORSE PIG]] [[DOES IT HAVE CLAW
S?] LOBSTER [[CAN IT RUN?] OSTRICH FISH]
]].MAKE "STARTUP [ANIMAL].
C64 Preview

> CLICK IMAGE PREVIEW FOR FULL MODAL