Speech Synthesizer

Developer(s): Tad Painter
Date: 1984
Type: Program
Platform(s): TS 1000

This program implements a speech synthesis library using machine code stored in a REM statement at line 11 to drive audio output. The machine code occupies a substantial block (over 2KB of hex data in the REM) and is invoked via RAND USR 16514, which jumps directly into the code embedded in the REM at that address. The BASIC portion at lines 3000–4010 provides a word-playback library: it walks a linked list of word entries stored starting at address 29999, reading 16-bit word numbers and lengths packed as little-endian pairs, then calls subroutine 4000 to speak each word via POKEs to system variables and the machine code entry point. Subroutine 4000 deposits the word number into addresses 16593–16594 and constructs a one-item list at the display file workspace pointer (read from 16636–16637) before triggering the speech routine.


Program Analysis

Program Structure

The program has two distinct layers. Line 11 is a REM statement containing the entire machine code payload — more than 2,000 bytes of Z80 object code encoded as hex escape sequences. Line 12 is a short REM acting as a guard comment. The BASIC proper begins at line 3000 and is split into two subroutines:

  • Lines 3000–3070: A word-list walker that traverses a linked list of speech entries stored downward from address 29999.
  • Lines 4000–4010: A speech-trigger subroutine that POKEs the word number into system memory, sets up a one-entry list at the display file area, and fires the machine code.

Machine Code Invocation

The machine code lives inside the REM at line 11. On a ZX81/TS1000/TS2068 the BASIC line storage begins at a well-known address; RAND USR 16514 at line 4008 jumps directly into the body of that REM, bypassing the BASIC interpreter entirely. This is the classic “REM as code store” idiom, keeping the binary in a location that survives NEW and is not disturbed by normal BASIC execution.

Word-List Data Format

The speech library stores its vocabulary as a downward-growing linked list anchored at address 29999. Each entry occupies at least four bytes:

Offset from WASizeContent
0 / −12 bytes (big-endian)Word number (NO)
−2 / −32 bytes (big-endian)Entry length in bytes (NL)
−4 … −(4+NL−1)NL bytesSpeech data for this word

The walker at line 3050 steps backwards by 4 + NL bytes each iteration and stops when the working address WA is no longer greater than DW (the display-file pointer, used here as a lower-bound sentinel).

Key BASIC Idioms

  • 16-bit big-endian read: PEEK WA*256+PEEK (WA-1) — the high byte is at the higher address, low byte one below; a common pattern when packing 16-bit values into PEEK-accessible memory from machine code.
  • Integer extraction: INT (NO/256) gives the high byte; NO-(INT (NO/256)*256) gives the low byte. Repeated in lines 4001/4002 and 4004/4005 because ZX BASIC has no bitwise operators.
  • Display-file pointer as workspace base: DW=PEEK 16636+256*PEEK 16637 reads the system variable D_FILE. The four POKEs at lines 4004–4007 write a minimal one-word speech list immediately at that address before the USR call.

System Variable Usage

AddressSystem VariableUse in program
16593–16594Receives the 16-bit word number before USR call
16636–16637D_FILERead to obtain DW; also used as scratch list base
16514Entry point into machine code in REM line 11

Notable Techniques

  • The machine code block is large enough (~2 KB) to contain a full speech synthesis engine — likely a formant or LPC codec driving the EAR/MIC port or the TS2068 sound hardware (D3 FF = OUT (FF),A, and ED 50 = IN D,(C) appear near the start of the REM data, consistent with audio I/O).
  • The sentinel check IF WA>DW THEN GOTO 3010 (line 3060) reuses the display-file address as a safe lower bound, ensuring the walker never strays into the BASIC system area below the display file.
  • RAND USR is used rather than USR in a LET, discarding the integer return value — a standard idiom when only the machine code’s side-effects matter.

Potential Anomalies

  • Lines 4001–4005 POKE the word number into two separate locations (16593/16594 and DW/DW-1). This redundancy suggests the machine code may read the value from either location depending on call path, or that one location is a parameter register and the other builds the in-memory list structure.
  • The REM at line 12 reads 0-23(DO NOT REMOVE), implying the first 24 bytes of the line 11 REM are a header or jump table that must remain intact for the USR 16514 entry point to be valid.

Content

Appears On

Related Products

Scaled down version of speech synthesizer for TS 2068. Consists of same vocabularies with less programmability. Uses a fast machine...

Related Articles

Related Content

Image Gallery

Source Code

  11 REM CDD440F3EFE21AC44687E187CB1F161C1520FD00CB47204D3FF184ED500010E9161C1520FD2BE5D511743A7ED52D1E120D2FB100C9212F75DB21CB6F28FADB11772B7CFE4020F1C91700212F75183A7ED42562B5E2B462B4E2BE52AD140A7ED52E120EB228940A7ED4222B040ED4B8940C97430000000000007430000010170000000000000000000000606B07572000000060003FE003C00F0001FFC00677F800FFF007FFF880407FFC07FFE001FFF00FFFE87A5FFC007FFFC03F43FC011FFFE83FC3FC3001FF83FC3FE181FF9FF0FD7C0C003FFC3FF0F0E1C7FFFC3FF8787083FFFC3FF07C0F7FC787BE1F01DFF1E1E787C371F1F1F787C07FF9E1EF87807BE3C79E1E083CF8E1E78F01E3CFE78F00F1E71E78F17F1C71C70E3E73CE39C3863CE71CF7EC739C739C70338E718C6380CE398C731C2319CE6398E11CCE63198E8C67339DCE0633198C46033F9CCC470F1DCE4627073FE7231383CFB39188C01F3DCCCE6607CEE6231182F3B198CCE099EC663318213398CC6470347B1D8C4603C7B198C470E7318CE27033398C471384273198E61BC06F78C5BF6901FEC297FFC80DF30B7ED2077D842FFE901BF4217FF480DEA10BFFA404F78D7FD206F785FFF202FF844BFFA027FA4FFF90033A8FFE9003D8C1FFE900798C1FFF800A5AC1FFF9046350BFFD200F7807FFE403D081FFF908607ED7FE181FC1FE13C1887F73C0F04433F8FC7802018DC7E3C10C673F1E8E0884E7AFCBC3C387C7C38B110C2C7211C163138FC706389C7C38143838F870C7071E0E0101700800001C00701000030383800007771C000383F03C003C07CFE0F07CF803F7F07C03E1F8FC1FC038001FC0FCFC01E0680FEFE0FC0F01EFF07F7E0783E1F07F83F07FF1F83F7FC1F83F07C1FC3F83FC1F83F7E0FC3FC3FCFC1F83FFC1FE1FE07EF81F83F7F07F3F07C1F87F07FFE83F7C0F838E7E0FC7C1F03E1F7F87E3E0F83FF8FF87C7E1F03F8F87F8FCA7C3E19E1F1FE1FA1FF80787C3F87F87C3E3C3E0FC3FC1E1F03E3E1F8FBC3C3EF87C3E3EFFF81E1E3E1E38F87C1E1E1E1E3C787C3C3C3C3CFFF87878F87AE3C3EE3C3C3C70F0F821F1E1E38FF801F1E1F78F0F881E1C3E71EF143C7879C3C3E187FF38F07830E3C3CE3C1E1C3878F18F785E1E3D43C1E1C3878F90F0F0A0E3C3E8783C3878F1F61E1EE1C387FFF7871E3FC383C1C3878FE1E1E078E3C3C878783C38F0FE1E1E7C3C7FFF1E71E1E7C3C0E38F1FE1C3C87087E31E1C0F187F11E1C383878F8F0E38383C38870F1873C3C4787377C3E0787EEF87C0F0F81E3E1E3C3C010E1E03C3C20387EA5117002B208000017C000002FFFE0002C007FBF800017F00FFD80200B7C017DA401005BD807FA341001F7D0AFD50102BFD01FFA0000ABFD143AEA14001FFA0975D6CA000FFE85FEB0400D7FF42FB4A88003FFA17FAC200A21FFB1555481141FFF415554205143FFF415554281143FFA17FAC0A07FF492FF5040521FFD01355404144FFE925AAA4091DFCB6BAAA000FFFF41FD5424A491FFD25D552227FB492BB58427FFD12B5504923FFA0BAAA047FFC16BA5092537FE8A7AA8892FFEA2FAA84965FFD01F5010D35FED6D512CB7FABFEA007FF5FF50125BFD20FEA8169B7D22FFA86FFFA2BFA84EFF20BAA8134DFEC17D50CBFFF27AA0926FF68F54124BFFC13FA80997F9A27FD044FBF44FBA0A1FFC89B74124CDF9326CC99136644DD8991FEC899D812277E899981118EEE41DCC1389FF25EE03C8FF9807F801CE33EE01FE0770CFF87FC0CE39FF1FF033867FC07FE0670CFF87F811C7FC3FE0C711FF807F808C706F305FF02718EF31CE318C631CC7398E719CE21CE31B9C67398E6338CC6318E7398CF18C671C7460870000000000000003F0C00001FFC000000FF000003FF000007FFC0C000FFE400003FFCC0FC0607FFF08473FFF0383D1BFE07FC36823F07F1B21F03F2FB1B0681DFC0EC3E487C0F87EF4F87E0F07C303E1F781F00E7C3F131F198F104113977808080F1F0402160000E03C0C0386071F0F807E1E0FE0FE03E3C03C37E0FE00FC0FFE1F801F801C1E1C7F387E187E187879E1FC71FC31F83C787C11FC1F823F83C787CF9FCE1F8C3F87FC1FF8FE61FCC3F97FFFF87E30FC43F887CFFBCFC31F8C3E1F8E3F71F8C7E3F863E38F8E7C31F47E1F8C7E67E19F843E0CFC73F33F09F807EC7C71F33F88FC7F0E7C61F13F88FC07EE7EE3F31F18F887D8FE07F3F01F0F81DF0FFCF84F88783FE1FC33E33E21E31C67C77C67C43C4F19F1DE13E01E4615F1FE27E43C9C7386F8AF20E4619E37C57DF22EF1FC47D0F021DE1FC0F8E63BC3F81F41C0678DE3C07310DE1F80F01C842FFE178F401DC7F0BC7A01EE3F89E390E63F85E38846F1F85E13807F0FC3F11C013D8FE3F11C03D87E1B88E09E87FBC8E01EC3FDC4701F43E87E0703F03C7F0381E0FE7D0FC7E1F8FC0FC31FCFC07EC80FC47603E287F03F801F03F827F4FB0A417FC5BB6803FE01976304116C936C24936DA49369C00000000000000000003E000000F0000003FE0000007FF0000001FC0000003FC0000007E040001FFF01040063FF000001FF000003FFFE60F80FB81FEC5E0373FC3F8F07723F01F8072227F1FA1F0231311F1FC9EC6703E1F8BC160307C3EF239181C0F07A3F198E0E2381C5E181C869EF3C1E0F03818F33CE7381E0783C1E102C215000084005E01040D21403D040003D01A81AB80003D140B70007C0FE805804003405F80412020016D027F4054008FE83FD402800541F507FA816402480BF801BEA9691A686FE416FA8A014037F28B55456A03F805FE47FA83A00FF809FF95FE8F50ABF07FB2FF5F40ABF2037FA9752F01FE017FF1BEB0607F2837FA09F50B43FA49FE955BA87C1FE3FF20BF50E47FAFF482FD43C0FB05FE87D25A05F5FE82FF41E01FD17FB05FE9203F17FF01FEC0DA0FFC03FF81015FFE1FF804C97FC03FF814A04FF0FFA2461DEE4BF99F237272221CE60E6619FF8211D8F0C0C2731528E01C0001D0FC00003FF101C7E07FFFFC07FE603FFF807FD681FFE803FFB43FFE0FEBD0FFFC03F3F43FFA00FC7FD0FF80BF8FF817E01FC2FCBF007F15E84E8081F827627C98FF03F3F0123F11F8F80223D3E8BE8C3F11FE2F838FF11E9E0718F38F1878070F383CC1F01FC3EF07CEF878F83F00FDF0FCFC03FF3F03F07F83F81FC03FC0FE7F003F83FC1C046C03E4F02FC3F87C7F83839F8FF83F870F833C731C3C1FC61EF1BE1AF1F1F17E71F9F21F19B3C1B871E887BE258E407B119C72E2F1824CCC66446760E1F1842C4DBE0F03C1CDF05D3C10E904C2F0742AAA9FA114002000201C800000100FF80080011000FF80C0400DD8081FF0701EC020FFC0003B01803FF042003BC0607F810801DF20747FE0C0EEC6F03FF80C01FFC0379FF8060EFD3D09FF80D01FFA17E11FF03407E01BC4FF60F01FFCEF13FD8780FFE81F84FFC9047FF1FC6FFE003FFC8DFE07F3F0FDDEC4FE03F130FF9FC8FCC7E60FE3F23F31F059983F9BB9FB1D819183F9BF9F91F81B307F3FB3763F4CC7F9FD9FD9F86C7E9FC9F8BF4C9F9BF23727C06FCDF83F23426FCBD1BF46C40DFBF46FC9F0B37FC0FF26C02EDFB16E13A0D3FE8BF25D0161FE2FD22D0103FF2FD23D803FE0FD23D007FA4FA16B00FF41F6DE01FE7FED4017EBED1A882F827DAB507F84FB06D05F44FB56B09F49B64EA241BE49F60BA013EC1E68D6837C93E8174403FC13E81740BE41FE8B65FAFF546BA2E97FAA15516C8BF512AA80905DFA9554002FD14FB6003F541BEE948ABBA55D55A55980EEA9A9447DF511D3A135800000000000000000000000003C0000003FE00400FFE000003FFE0800003FE000001FFE00001FFF800001FFF8029000FFC0060001FF201B001FFFE0101903FFFC101801FFF43001FF827F84BC3FE2FC86C4FF81F8243496C7D8FBA0B83F139191A07C3F3E0B80FC1F780E01F1F83CF07C3C2E7208D8DC4E62363718003B213003212103C0C400808264C008080D913C80000C0FC07F001307E07F44FE998199BB81B913703301F99F8FD99B803F81F83FC1B913F019807ECFF06EC4FC3F03F23F83B32771F01F91FCD999B84F81B99FD1F991B89B13367FA3762773601D9FF0DC89FC183ECDD86ECCDC0C87CCDC87ECCDCD6C9991FD89B8244C26EC7F44DE122637646F666E06C0FC8DFCFC091FF93FF13F0C8FD81BB11F001FB03722760FC09F915B05B3FE89DD21295C8B55B4833B02AAC087F52FE9544A52A2A5500000000000000000000000000000000000000000000008004081020C07050541068208C40C29E382815480F36860486030381C018B01EF6284743C1C06220E0FC70381CFC7E3FE46671F8FC7C1C1C7C3E1F0F0F0F8FC7E7E7E3E3F1F9F9F8F8FD3F1E7E3F07F678FCFCEF3DC81BFC7F0387E1F8FCE0F8FE4F2303F1F9381C447E7E2E06089F8F8F818183E3F1F137747C7C4C0E0E0F8F810C383E3E26DF747C4C1B1E0E8F8D8383EC1F1B37C1C1F1616078F83E366F8F346C0C0F1F068D8581E3EE8D8F3C7C1916160F8F93A54301E1F7C858387E4E1B9A078F81A1616FCF81A066F8F83C4C0783E3EF853E0C00000010FF5112007034E206243942980226B16C9D8531B42924C1DA95A945A56ED33E4AB26D99B76B43844998C47988DCB888B7E3D8CD703E10A78C48C8C3338CCDD98CC3510CE27D932F443326E250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040020000380000116000020D03C000981B70C0C80F8BF1FF41FA4FB3E800FE7FC9747E7FCBF67F93D7F3F87F8FF06C7D83F87E2FC1A0FC1FC5F07CDFE0FC3F7C1B04C1F7C1FA7477E3E0FD1AF83F364691AC8BF2E8F8361E7C593F468183E2E8F836081F0FC6D1B183FF47D1B07E0F8F8370F83D1E46C03E2F781B01F1F83E46C168FC1F03637E0F81B327E8DC9D22760DC8D8227E0DC8D27E8DC8D84F81781F8CB91F91B81B52F01B101F2F01F07E7E03E0F8DE0FE043F988FC00FE671C82654B18C7889E9099BACD6F0ED988AADD95AE0C3862202BA8FBDA1940C83C442B848C1E1D94E2F18465A24DC073654A1691E7C059C527F9A95E41C3AA86E53B6207581906195313B93BF5561CC3E1718CC98BB11B59F0E268CCC066E7DCB684E99F25CA2217505B9C189E4F92F8F3CC6AB1C98F7C2895C9BE99A8BA344198F15080CF74F1244582C144985A27262A4C2D043486B43A5EE4E0288923851311F7ED5340952442BB0AC1C3886389D89CF8E3338F062E3B73F8787E639F8B83C8CE2321F0781C46E270FC3EFDE06C7E1738384C7E172382E473E1C18D2211998DC8E0722110000002000003F03FD01002803F03FD0007801FF0FF40F21F81FF0FF407F807F07FE01FE8FE01FD01FFC7F27F07F8FFC17FA7F43FA7FE17EA3FC3FE3FE95EABE91FF3FD22D67F03FFA5FA51A811492DFE93F916B0F24365FE5BE53A97821B6FF2DF69B476806DFE93E932AF81FE1F6DF6AD6BE43ECFE4FED63C07F9FD1FD12F743FCBFC9B45B7C1FCBFC1F44BD83F93F83E8970FEDFE0FAD803FFE0FA2581FC3FC1F45B1F0FF7D16CF87F83E8960F83F93E41A792FC3EC1A0BC2F83F836785F07F16C0F03EFE0D81EF82F836783F0BED83E0FE2F8340F07E7C1F07C3F3F0683EF81F8341E7E0FC1AF7F07C1B783F87ED381F83ED3C1F83ED3C0F83ED83C0F83ED83E0F83ED3E0F83ED3E0F83ED3E0F83ED83E0F83ED8360F83E8D8164DD1F459064DD1F468036DB42C03EF8B42D03CF8B42E0391F1781C0F83C2FB81E0F8381EF7C0D0B83C1FB46C2703CF1B3C4800A1C807D1100019E0C081003B3B1000001FB12001003FA2018190327E0F0336274FC018032766CFC080FD01F80FFC0001FC06407FC0004E6034207F600047F224207FE00017D02C07FC00037B0380FFC0006F60525FF8000FE84E0BFF0037F980B7FE005B4229FF000FE01016FF8007FE1896FFC007FC01096FFC00FFD9A5FF800FF802141FF8007F84CA37F003FEA57F83FE007FF8B5E2F58003FE85BE97FC003FE86D683DC003FF86F697FC007FD0DFD2FF803FF4BFD49EE0FFB4FEA2D7007FD2DF52FF807FDADF5AF700FFA5BEA5EE01FFC77A97DC07FF5FEA5EE03FFFF52F701FE97FE96A80FE96F496A81FDADFD2D503FE5BD05AA0FE97F50EA807F4B7FB543FA5FD05AA03FA5BEA5AA17A5BD05AA03FE17D4B547F43DA87F80FF87F5F701FA5FFA5AA1E95FC16A80FA9FF4BD40794F5A1AA03D6FE82D502D2DED2D503D2FE92D50294B5A1FC05A9FD05AA014BFA4BD4087F416A8414FEA2F5ABFF55FA47F47A8101FFA2F50202FF55EA0505FE03D40E81FD2BA81E83FD07A81602FE07A80502FE05E8007FE07D007F3FF407E97FF1405DB7FF488040B6FDEC4C6A75EAB7CB1C32D4BD2B7036D5B34793A45AA54EE43946A1BA84A52135F935BCE63F8CD085DC626C84C018822462EFC1031C641982E20891740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000401048899B626081C078E54671BFAF4E32471C27CA38FF81748540E396903C7970C8972F80F864C7C881C3BA81D983207F807E41F81FF3FF817640187FED8993F67FB2F60D9BF02F603F3FCBD8FC0FF3F47F03FC0FD3F41FA07EC0FC3F01FB03B5F813E4E917E5FB364DF907E80D03FC09FA07C3FCFD0E40FF83F41336FC9DD007FC9F9003FEF817F284C1FDECE5236EE6B713F18E2A8A8736277F490DCDBEE70C241957A315EA774EAD32538306546BEF5E35BEB49E4C7441CB4252C4EA55F8C1199A34CF5FD6B9973972E49E9C1FA01CB229D838196C45C9ECB88D8F75B41A211DB98F3E000D8353819D81FCFE8D4B1DB7C4C87A31695150F4342FE1153D913B97A892D1A1F098CB02763035DCA224200231120060D000003000200AD3F00E0181F000000F998C00000FC781800E003FC75C01180C3F0182078C5F01F00181B0302680FC4CC019833F67E0200FE2301FF0009F8E80FEC0C003BC03407FC0003FC1C83FE0807F8035807FC040FF87B0FF8403FC0E43FF05003FE858807FE07C01FF01605FD81E03FE01602FFC1E0FF21714FF81003FE8E2BFF000FFA038AFFC0603FF1FC7FF7801FFCF693FF0781FF82F693FF307FF85F697D50703FFA5ADA5EFC0FFF4F7B4BDE0803FF97D6D3D70801FFC8FB6AEB803FFC8FEC2F7007FF2FF9ABAE03FE96F4D5F703FFD7FCD5FE07FFAFE9ABFC0FFCBFAD3D70FFE1FF2AFF07FC3FAD3550FFAFE9AB5C7FF7FED5D601FDBDED5561FD7BC96AA03F2F79D54D6BFB4B553D2F695554169FB5AAAA0B57D694AA0BABDAD55502AFDE95FE0A8FBA94AA0217BCA2AA042F7D2D54084FEA52B815ED4AEB23FA96AA52FFD4D54141EF4A550107BD2D7C0417F4A5F15FDD5402FE835500BFA8FDC05FC86AA07F51AA803FD0F5400FEABF507FC6A802FF55DE017FA0D501FFABD407FEF502017F23F400BFC3FA41FE1FF802C8FDF4A412FA59E6B547B5B22E9AF12EC9BA95EA47D9348A4066CD5AC254922389AC19AA71623898A8D42E192467732203029406CC61331118332017219C01071FA03132E00003E00FF83E0013000FF400016001FF80000EC003FC0000BE001FF80003F8007FE0007FE000FF8000FF8003FF80037F003FF0001FE000BFC0007F8007F8001FF090FE0007FF02752FF8000FF82160BFE0001FFC25B49FE000FFC2D25FF000FFC2DA5FF04001FFC2D45FF8007FE8528BDE0003FF082D0FFC003FF805A8BDE001FFC1B4BFE000FFC02B41FF007FC2B41EE000FFC05F8B5E00FFF07D0FF8001FFC1F83DE00FFC7E83DC003FF0FF0F78003FD03E83D401FF3F51FE001FB03FC1FF0BFD17F83F600FE3F817E805F1FE5FE05A5FC3FA1017E03FF78250B7C2FE82586B76B6256EA578F1BB56E4D3AC5BA74BA4C54A91323A25442C488FA02DC877998031284C7831E691B0D1811B724A0000000000000000000000000000000000000000007C000007C0000078003F001F003F801800FFF20FC01FF300FC07FC300FC0FFC88000399FF0FFF44FFE07E83FE4FE3FEFFE7F83F81FF8FF01FE37F89FC044FE27F01BC084FE7F01F81C0FE7F01F80C07FC3F01FC0F81FC0FAFC0781FC0FE1FC0781F80FC1F80F03F3F87F0E0FC7E0BC23F03F86F003F1FC2F07F07F1F003FE0FFD009E31D91CFFC23614C3BD82916C28C1086C8E1E373D2B92F0E0E61F138261F7909AF1C3E384105FBF21384F98DC83E90208E11EDC85691BA31B9594A0D478F46A23534F8AC6EE2AFC1991B03C42C56383C1F4267B1A333260F03BB9914C105678DEC02E6D94818887A53A3D981288E018422B160311380000884184820040A42D009C320F48FE024038D0D077A8C42107F0F0F8E57A844685E840318F1C14090AA2081A2EA5E0B05CD8A54410FF5404A12A8906AC50A1F40F098502171914201F98843648001F8100048001F81400080C0FC100000F87F0000FC03F07F007C0FC3F87E0003EFFC1FE07E01C7E0FF83FEFC0103F3FC1FF0FCCE3F81FC1FEF83803C1FC0FC1FF07C307F0FEFC1FEF81C07E1FE0FC1FE0F8EFF1FEF83FE1F801C7E3FC3F0FF87E0787F8FF07C3FE1F80E3C3FC3E1FF0FE787F1FE1F7F87E039F0FFF87F87F3E1F87FF83FC3E3C3F0FEFFF0FCF87E1FC3E1FC1FC3C3FF81F0FE1F83C7E3E0FC3F87C0E3E3F1FC3F87C0678FE1F87FF81FC7FFC3E878F7E0F81E780F0FC1F3C0F87E3F87C0F03CF7E1F8FCF381E0FC3F3C0C1F07E1F8BC0E0F83EFC1E080F8FCFC1E880F87CFC1E881F8FCFCBCC1F8FCF8BC81F0FC1F83C01F0FC1F8BC01F1FD1F83C43F1783F93D85E0FA3F7D0781F87E7B01FC7F0FCF80FE1FC1F01F0E13E3C03E718F38F8784379C3E60F80FF83FA7E0FF83F801F807F81FC0FE0F8FF11FC3E03FD07F0F80FFC01FC03E3FF807F1E01FF87F8003FF3E007C263E4301E1F8383F03F40F8383EB2FAF23DEFF970FD4179F9F83EF17C1C34678F5C7C6E7FC59C1F81F8F0C5E723C37B036E3C8C85E8782387E08F043A80103038781F01830334202C2C00000000FFC0000003F80C0000001FC0000000FE00007E0003F80000168007FE0000FE001FF8000FF0007FE00004FC0203FF0001FFB101FF800037F080FFC0001FFF9101FFC003FFA0407FF003FF7203FFC003FFF800FFE0003FD8BD8BFE000CFE85FCFC047D8FF81FC1FC081FF37723F03F0203FC5F81F81F8441FE1FC8FC8FC064FC1FC8D88F891F93B3F11F607E4FC0EC4FC207EFC0FE7E001B95BDA84FC004733087FE0006221FDC001E003FD804E110CEE60E00C0FFD806007FFC80380003DFC011FF9F9FFC007F87F9DFC7C3FC87E03F3333F3F01F803F13E1FC3B903F3E17A3F01F3E17A17221F7E2F47E3E1F7E2F46E2CEFC0E8DC4C3EF85E85C583E1F83D0787C3EF81E85C5C1FF81E85CCF8FC0F0AC26F87C0FC7E12743E07EF01F87E0781F80E07F1F81FC02F627F0BFC0171FF805FE0780FFE03FF85407FF8FFE1C81FFE3FF80707FF0FFC081FFC03FF0307FF01FFC5401FEC7FE203FFA3FF800FFE0FFC0103FF07FF001FF803FF840FFC03FFC00BF50FF6054BB913FF609016EC5FFB54847FA7FFA0FF42BF54503FE01FEC903FE8155C017F802EB805FE05FC01FF85FE01FD017EC00FF80E2B000000793F8000000FF00000007FC1800018003FF06000C0100FFC020003B90843FF04001B8001FF80001BE1200FFC0000FF8907FE280013BD827FE000351FC04023FF0001BFC84423FF000351FC04423FB00091FC0423FF0001C7F40108DFE00607F3FB1FE000FCFC0BD87F80C8FF8FC01D87F0088FF9F883FFD0320FE6E207C5F80391FA37217E5F8183F07E46F8FE0E0FC7FB37A7F0C0FD7EB77A7F081F0EF47E8FC0FCFF13F7E00FCDF93F07E07EFD1BF4FC0E9FF22FC1B818BF4FF07E065FB17E83F033FD1BE41B052FC1BF41B053FC1BE4BF083FC17E8F617F82FD1AC0FF05F23F803FC1FE8D6007F3F837C01FCFE0DF07D07F837803F81FE8F600FEFF06F017C83E916801F41BEFE01B41FA4FA0A1F6DF80803D5A3E5A254D3468345E1A14B06C532C165AAFDF6966855AD553F47FD8A76EB76BDA6C723D5BFA759B1D2A94A95A9595D88958CC8C47C37A18B311884687C6683203383A8961A0000002001F9018000181FF198000007FB10004080FE7000213001FF80001C8003FE000119000FFC0001B42C01FF870036307FE1001EC5801FF801001FE1E00FFC0780FF89007FE000FFF6801FF81803FFE00FFE003FF6007FF003FF6007FE207FF60017FE003FF601C43FF201FF403E7FC003FF80FEFF02007FF47E2FD8007FFA0FF57F0C001FF43FD1FE007FF49FE47F801FA9FE87F4007AFD1FE49F7ED3F60F8E0FDF64FD13E200BF2DD9374BF7E8DDB36284FCF336F4DC403FCE8D9F37C3E7E6EDCDC01F1F0F7727007D7B33733007E7E33393807EFE76793880FCFC7E62701EDF8F8C4E03CFE1F3A9C071FC3EEC70E3FF9D8E01CFFF3B1C03CFE1F3E1C039BE1E763803DFE2E763803C7E1F1F1C01CCFF8F8E073787C783118DC0E1C1C0217370787070407C7E4E5CC6FFCF4F89830E1E8C9D1F00347E5F93F01A57A1FFE0002FE07FF80003FC01FFE0007F03FFC0007C07FF8001F80FFF8000701FFF8003E01FFF8007C01FFF0001807FFE0000C81900680302005242CA408E12856AC9953258BD6A56DDAD5AD7AD5B938D4CE6663719ABBBB8E1D2F1983F33D1F3A5AC4444FC3AE56DCAD4B594A31A3258BE18467994479380E2B8786466C6198A6FCE461C3D89CD821FF419C46138227994723243EC8380D9992C6B1AAE2000000000000000000000000000000000000000000000000000000000003E0000006800000003FF807FFC0FFFE01FFFC0FFFC03FFF803FFF803FFF83FFF007FFF03FFE007FE87FAA40FFFDAAFF50103FF48BFD45027FFA057EA161FFD2B75564BFB217EB1A817FE526D65A97FB41B584925FE92FD4082FFC96EA0D07FE036D06D4FEBFD2F07FE03FD03F1FE83FB3E01FF05FA03F0FE9F43E01FC03F807F7FAFA07C07F816C0F8FF05B03F83FC12C4BE0FF4B30FA4F9268806D3C8346817C9744B28791EC1B30FC1F02F01F7C0BE1F07CBC03F7C1B01F3E0F81E1F07D283EFC0788C18000C40000C0008CE001001FED900F6001FFA48007E0003FF0F019DC04423FF0003F88423FF01001FF80C423FF0003FE7211FF8403FFE0321FF80E003F7F1908FFC601FFF01C8FFC02001FFF3908FFC703FFE07211FF80C007F8188C7FC07007FFC2223FF0807FFF3B11FF8001FFE4211FF8001FFC2F63FE06007FFF3F13F819039DFC1FC1FCCC03F8FC8FD9F808983F9F91FB1F02607E6E66E87E3303E46E5EC7E4407C8FC9C87C2662F47E27537080BDFC0F4270333BD09C87E054FCCF731FC0473BDCDEF070CE37FC040F81F31FFE03F03F8FFD3A1FC00FFF000FFCFFE01FCFF83FDE03F7FBF37F87E0FE7FC8FE2D5FD0FC87E1F83F4FC0FCF85F8FCF81F83FB81F01F7E0703E3E0FCF46C07C1F81F9D01F83E0762E7E0FCF42C0F81F3E1F03EFC1E274F3E07CF88D0F93B13A2207E4EC4ECC01F83F03F20FC0FC7E01D81FF85F8480FFC2FE1863FFF736DC7F34738F93F1F846D5847C69FF9306698C30107018E02F289881B8C1310703103F80F66F9F6823BE1CF943439F23C698723C67801831CB222C728CE9DB73609280F2C233047BF8C6BE21210C79801E3BC21633E34FA5A04CC1EFF1E17E1C3FC3DD13423AE44C09C2DC188F2EC4307BFBF38C0F605063BB9C24C33E2183A1FF111020C660237384A310CEABC36E330138DD32011B31741BDF9A5483610826BC3993627000C27700008000800128C081088C4996DBDC9E220389A3E324E07F7F32CF63AB77F1859E357E0C06C9B23AE3C1E22E7DFF1E1C9C63A363C73180D8FF89F98667C219170FC1B960E16C1DD02A1E349BE406234DF1E3CB3683020A989CE1B9C47103B8663EE3B9E373CF6251E1C0E7FC60CB3FC6C0F03378DF1D0FE6834120C46188701FC0C3EE30474F80CE1238301818FBC2188780263104012A14C49A2214208CF33C0200003000000000000000000000000402000000030190C007800000000000000000003FFF0FF37C3FFC3FF83FC176DFF41FE07F807F5FE07F2FC3ECFF7F916E03EFF07F81ECF817EBF07D7E0FF5F91AC2E87F44F93741D07E81F95A8360F913E45D137E81B96ECB03FC0DE27643F6FC13B03F41F813B07E81F813B2FDBF017A04B91BF3764397FE43F4068FF88FFC278E7E7CE27F3E60373FBF21C32BEFF33087B3E180F24678D386FF80C3388D8E08C99903EE3FF043C1F81859F1B2440843181BF1388C7011F97DC010367FC71CC37FF107F083889EF9BCFFFC81D1738FF840C8403EEF8F3A28C0FC4F1324E13C4C68C71A2143D9E1D99003878FFBE4EC7FFC6E28E1917C03E41F7827DCC1F8D87A1E0E318F06019878E039EFE61FC8C8E10FC003FE78B102318043ED2030E171C8666467C1C78652472420A1CDE32C2600231817C783230D84E07818400070385BC6C704743DFE3F00187F1FC0CC2107F01FC03400BC05FD08D212040C728C581A63426462C90401220800107248400001CE300000033800004000FF100142381FE000721848FFC0031181F01FF81C04071FE43FF820807F81FEC7FF044407F03FD8DFE0323FD1FF89FE03B2763FB1FF83F83FE1FF3FE7E07E2FCFC3FC1F91FC81F03F7F07EFC347E0FC1F83F2363E1F87E0FE1F91B0F83E3FC3F0FCD7A3E07C1F83F1B85E1F8FE1F83E173E0F4FE2F4FC2F14FC7C7C1F9F81A2363E7F8FC7CE3E7C7C7C7EE71838FC7C1E1E863C7C7C78783A18F1E1E1E1E1C8E37F1F1F8E8760E1E3E3F1F0FC3C7838FCFC361F1C3C7C7C3C1E3E383C7C381C7C7838F87838F0E0E3F1E0E3C3838FC731F1C1E3E1C18F8E071F0E0C7C778F87C7C7838FC3843C38387C7861C3C1C7E3830E1C1E3E1C17FE1F1E18387870FCF040E3E1C6E38371FF1B8E181C7C386E3840F1F0E1F8E13878387C3801E1EE1B8E10E1E078EE3883C71C371C01C381C3FE0C381C3F8E01C707C7EE31C1FFE1E01E1FC3C878187F0F21E011FFFF411238F1AC39F0D0995763207A4B52D05862756220236A1BED674BE22093E68E862AC3D4A1A88B0D8F31A48D19028FB2CBC98CA7CA4883C7D8DA5E417CE4F837653016B121F4774660ACE99DDD83626F8DC251E202C1ED41C931C82CA11F2E4CB89F5CC367A1DE3A812B8F702AD1E21E30C158A3298C282A03751FF49EE3E0F573C124959863702407FCDCC457C91442858101C352340001008E20010020101247225002300000E000400000006018006001F860008C0C0F1E08C0101E370FC4F18C381F01D87F13C80C03B1FE07FFC47E1719CE781F83F11E03F8C4E3CFE1FC8F0663170FE3F7E2386E78DE1F83F33C06319C7F1FC0F91F1CE67C3E1F81F11C13CE3338CF11E678E07E1F7C0F81E3C4738F23E47CF1C71FC7B9F83C7711C78FE3DC79F1E79CFF1FC3D878783A3FE1FE3DC39CC387F87FFF0F83C3F07FFF0F819C3C33C3EE1E38E1E1E0FFF80F1C7C3FE0F0787BEFF83E7873EFFC1F70FC1FFC1F01F83FF83F37E0FFE0FE181F7FF83F81F83FF81FC0F81FFC0FE07C1FFC7F07C0FFE07F807CFFE7F87C0FFC07F0F81FF8FE01F3FF1FC3E0FFE03F80FC1FFCFE01F3FF1F87E0FFC07E1F81FF01F807E7FC7E01F83FE3F0FC0FE0FC3F07F07F1FC1FC01F80FE7E0FE03DC1F03F0F107C61F81C3E187E001FFF09051C6A6E74721E34B1E1A1C3F3E5AC11EDAF7948EB1E6249DAA033B61135932592E593B04A59B5673185C53894C58F3E64B69794ED55BD4284574E13BBC8B8B29D9A633248F33758A85E1172ED4177564C35EE48EC476285885374921E4CA623AEA44CC21261C88AC36C67044144A709442859D3322650966AADA84D4C1B4682840E54885D2BBD920B610AC894D84DE042203340810810018924000207800FE07003A07A00FF4100FA07E005542C005D403E803EB00140FF50F55900AAA7F403FF8001415FE81AAA102115AFF405F500225FF407F5101035F41DF5000415FE07FE8000FFA0FFE801152FF40FFD000FFE07FA80003FF07FFC0007FE07FE80083FF801FFA0203FFE1FF5007FFC05FF510101FF82BEFA0107FFAFAA827FFC17DE847FFC2FAA8147FD82FB5824FFF4BEAA0101FFC5AA8007FE82AF8107FA4175D017FAA175D91FEC17FA024BFD92EF217FA57E80916E915FA0453EC91EE86C9F648BF42C9BF65DB493FF44DD89917F226EC3667FE27760644FE233709C8FFA13F8CC6FF8EE6637F847F80719FE11FE01C67F87B870FF0FF0E03FC01FE01C7FC3FC3C07F807F8038FF01FF07C1FF1FE0FAFE03FC0F3FC7F0383FEBF801007FE9A56FEB7AD485B944AB79F0A5ABE2DE6195A10A1A51E1551EE387B2A14C921BD811A92DF9C09B43D1AE71B3819638A13E4FC018184C723D9523316326CC89112ACC7C8CA1310E8FC2135273D1CD9C9066316CADD8786C5483A17986C813310E139CCF036E848CEC41C18948AF92FED050400190D21300600000700FF000007E03FE000003C07FC00007FC0FF800001F003FF000001FE00FFC080001FF07FF00003FE00FFE00007FF01FFC000FFF01FFE001FFFE03FFC0007FF00FFF000FFFC0FFF8001FFF00FFF0007FFE07FFC003FFE07FFC007FFE0FFF00FFFE47FF801FFFC1FFF0407FFB07FF803FFB10FFF803FFF10FFF003FFD43FFE40FFFCFFF903FF603FF401FFD1FFA037FE88FFB01FF682FFD017F686FFB12FFD41FB617EF817FE817FF057FA103EEC17FE802FF64AFF407FB57FA037E8275D03BF412AD84BFA5556805FF2AFF402FF04EFA107B857A017F825FD0FDC82FD07FA2FD07FE6FD0FF227FB0BA47FFE5A356FDBB4A94D7EEB66A45FEF4477A91A2A55ABD89D5A9548D2A8526850604D8232E1C0BE34E0F72F826C38B6E18863A4190123E8348D96131B646E1200600200F81F0F00800FE037013307801F87C0001C0807FE0001980003FB0200066000FE83003B000FFC0003F01C0FEC0001F8003FD00017B80201FF6200FEC0207FF0280FD38801FE81003F60903FE8000FFF087FD007FF4A41FF4003F8F62FF60103FE01EE37E33043FF3F95F818031FFC0FC8FC1683DDFC1FC8FC4E0703753FB1F8311F9BD8FEC7E1ABDDF89FC6E2623B9F89FC5E01B9FE6FE1381D8FE27FB80131FE67F1F806E3F91FC2E230FC47F2B8237CC7F19C2223D8FE238C47A1BC47311F8EF11C318FE3B88718EE15C2781047AE11C8A784728E8638C718F18C398F1C710E39C79879861EE1CE1E41877C7987CEAE0FFF83C31EE70F838E1E1E78787C1EE383E1E20F83DF07C1F1F0FFE07C3C7E07FC0FE03F0FF807F807C07FC01FE03E07FE3FF0F001FFCFF8F003803FE03800003FC0000007F80000003FC0000003FF00003E0FF80003E07FC0003E01FE0003F03FC7801FC0FF8007F801FF000AF110000E17001C003F3C000E0E1C3E33C0CC3C1C707E01E007FC1F77E03E083879EF9C3F20F61E1FF87FE0FC03C187C3CE0FB83F21FC0F87BC3E3FCF7F07E1FFF983E2018F0FF7F87C41F3C3BC3EF1F70F987C878FFFC7D87F43E8E1C73FE1FE1FA1F837E39FF1FC1F41F7E1CE3FC3FC7D781F07C1FF0FE3E83C0F0B8F3F87E1F43C0F03CE3E8F81E783E0FC7F83E078F787C3FE1F83E07838CE7F0BCF23C381C3F71FC2F03C38FC77F07CF23E313DCFE2F89E473E0399FC7E0791FE03E1FC3F03CFE03C1FC3F07CF80703EFC3F01CDC0F07FFC170C07FFC07E13803E3F01FC1F81B84FE1FC8774C07F7F61DE00FD7F0FF07F8FF01FF0FE01FE01FE03F80FF807FC0DC3FE1FF3307FF87FCC3FFC13FE0601FFE9FF00FF80FFF0801FF87FF07FF0FFE00FFE09FFC03FF83FF01FFA7FFC0FFC13FFA013D80BED0FFC91FFA85FA8B5FA415FAAB5DE4BAC57FAA857CAD76805D68BFD54175829F555D6825DA417DA97F805FA857EA06FB40AF5017E916BD604AB125FF53E478E05FBE38F8737FF8889838D1FE1F0313CF0E7E478C58041F6FFD4D847F83E8EAE03AE3F3BC1F01011DEF3F132D7E68DBFD4F8A7846F0BF3084315811BFBB41FC181BCDB70BC2073F166781E426CF018C6061CEF81FC07FFC38044CE803FEEC31087CE278F3EC781A43FE2162C666701FB986EC2403FFE1EDC208E07FE03D8618791FFE1607C01FFE46846EC3FF81501FD0FFE001FC1FF804A2000
  12 REM 0-23(DO NOT REMOVE)
 3000 REM SPEAKS LIBRARY
 3005 LET WA=29999
 3010 LET NO=PEEK WA*256+PEEK (WA-1)
 3020 LET NL=PEEK (WA-2)*256+PEEK (WA-3)
 3030 PRINT NO;" ";
 3040 GOSUB 4000
 3050 LET WA=WA-4-NL
 3060 IF WA>DW THEN GOTO 3010
 3065 PRINT 
 3070 RETURN 
 4000 REM LET NO=DESIRED WORD
 4001 POKE 16594,INT (NO/256)
 4002 POKE 16593,NO-(INT (NO/256)*256)
 4003 LET DW=PEEK 16636+256*PEEK 16637
 4004 POKE DW,INT (NO/256)
 4005 POKE DW-1,NO-(INT (NO/256)*256)
 4006 POKE DW-2,0
 4007 POKE DW-3,1
 4008 RAND USR 16514
 4010 RETURN 

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

Scroll to Top