--- title: "Using Your T/S 2068" type: "article" slug: "using-your-t-s-2068" url: "http://localhost/article/using-your-t-s-2068/" markdown_url: "http://localhost/article/using-your-t-s-2068.md" published_at: "2022-10-07T12:25:48+00:00" modified_at: "2026-08-09T14:59:54+00:00" featured_image: url: "http://localhost/wp-content/uploads/2022/04/20230809-041332.jpg" excerpt: "Howdy T/S 2068 fans! I hope you have all been well. I must apologize for this article being late. I am the Editor for our users group newsletter, the RAMTOP. Let me tell you, that it takes a lot of time! I think at least one-quarter of my time must be trying to convince my…" category: - name: "LISTing Newsletter" slug: "listing-newsletter" taxonomy: "category" url: "http://localhost/category/periodicals/listing-newsletter/" post_tag: - name: "Best of Timex/Sinclair 2068 Articles and Documents" slug: "ts2068best" taxonomy: "post_tag" url: "http://localhost/tag/ts2068best/" - name: "TS 2068" slug: "ts2068" taxonomy: "post_tag" url: "http://localhost/tag/ts2068/" - name: "Tutorial" slug: "tutorial" taxonomy: "post_tag" url: "http://localhost/tag/tutorial/" - name: "Type-in program" slug: "type-in-program" taxonomy: "post_tag" url: "http://localhost/tag/type-in-program/" basic: - name: "BEEP" slug: "beep" taxonomy: "basic" url: "http://localhost/basic/beep/" - name: "SOUND" slug: "sound" taxonomy: "basic" url: "http://localhost/basic/sound/" model: - name: "Timex/Sinclair 2068" slug: "ts-2068" taxonomy: "model" url: "http://localhost/model/ts-2068/" indiv: - name: "James DuPuy" slug: "james-dupuy" taxonomy: "indiv" url: "http://localhost/indiv/james-dupuy/" publication_r: id: 38992 title: "LISTing Newsletter" type: "periodical" url: "http://localhost/periodical/listing-newsletter/" authors: "James DuPuy" authors_r: - name: "James DuPuy" slug: "james-dupuy" taxonomy: "indiv" url: "http://localhost/indiv/james-dupuy/" issues_articles: - id: 40234 title: "LISTing Newsletter January 1998" type: "issue" url: "http://localhost/issue/listing-newsletter-january-1998/" pages: "7-8" pubdate: "January 1998" archive_link: false --- # Using Your T/S 2068 Howdy T/S 2068 fans! I hope you have all been well. I must apologize for this article being late. I am the Editor for our users group newsletter, the RAMTOP. Let me tell you, that it takes a lot of time! I think at least one-quarter of my time must be trying to convince my wife that I won’t be much longer on the computer. Oh well, on to the matter at hand. Last time I promised you an article and a program about the TONE DIALER. Here it is. So many of you feel that the SOUND command is a real mystery. I’m no pro at it but I will try to help you out with it. Your 2068 has two methods for producing audio internal speaker. 1. The BEEP command. This uses the SCLD chip (which is the chip that controls the video, cassette I/O, keyboard etc). 2. The sound command. This uses the BASIC of your 2068 to send data to a special chip known as a Programable Sound Generator. In the case of the 2Ø68 it is a General Instruments AY-3-8912. Within this chip there are three independent tone generators and one noise generator. There are three outputs that are mixed to one of the speaker. By sending a series of numbers to this chip we can control these tones and noise generators. To do this, we must learn how to use the SOUND command. You should refer to chapter 21 of your user manual. I will outline it for you. There are 15 registers in this chip. For the sound we can use 0 – 13. On page 192 you will see just what each register is for. Some of these are a bit confusing. I have found that the coarse and fine tune are not too hard to figure out if you realize just what they are doing. The fine tune register is an eight (8) bit number and the coarse is a 4 bit number, together they are a 12 bit number. bit number. (The upper 4 bits of the coarse tunes aren’t used). This is where it gets rather complicated. As you know, the 2068s memory is divided up into 8 bit bytes. This allows a figure of 0-255 to be stored. If we put 2 bytes together we can form a 16 bit byte. This allows a number of 0-65535 to be stored. In the case of the sound chip, it uses an 8 bit byte (0-255) for the fine tune, but it uses a 4 byte for the coarse tune. (0-15). The real trick is that to figure just what the frequency that you want for any of the tone generators to produce. You must first divide the frequency that you want INTO the Master clock frequency of the sound chip. That number is: 110,25o Hz. (Hz = Hertz, the unit of measure for frequency). Let’s say you want to produce a tone of about 1,000 Hz. First we divide 110,250 by 1000. It is also less than 255 so the coarse tune will be 0. The actual frequency that the sound chip will be 1002.27. As you can see, most frequencies you want won’t be exact. Now let’s see how to tell the 2068 to “play” a 1K (kilo or 1000) hertz tone. First we get the word SOUND by the word SOUND by getting the “E” cursor, then hold the Symbol Shift key and press the “g’ key. Now we must tell the 2Ø68 which tone (or noise) generator we want to activate. This is done with register #7. Let’s keep it simple for now and just use A for tone. That will mean that register 7 will be set to 62 (63-1). Now, we tell the 2068 what the coarse and fine tune will be for channel A. For A we use register 0 for fine and 1 for coarse. Since coarse is 0 we need not worry with register 1 but we must set 0 to 110. Now finally we must tell the 2ø68 how loud to make the tone. You may adjust the amplitude (volume) of three channels independently. In our case we will want to use channel A which is register 8. The levels are 0 (off) to 15 (loudest). You better make it loud since the speaker is so small. You now use register 7=62, 0=110, and 8=15. The line format would be: 10 SOUND 62;0,110;8,15. If you were “RUN” this you won’t hear anything because the 2068 shuts of the sound chip upon completing a program or an immediate command. So, to play the note for 1 second, enter a line 20 as such: 20 PAUSE 60. You may combine them to form chords or use the noise generator to make sound effects. To get into sound effects I would suggest getting Sam’s Intermediate/Advanced Guide. If you study the Tone Dialer program, you will see how I got the frequencies needed. (lines 1ØØØ- 1Ø11). Each button on a tone phone produces 2 tones mixed. The trick was to find out just what the frequencies were. I finally got them at the library. The program is easy to use. Most of it is self explanatory. Once you type it in, RUN it. If all is well, when you press a number key you will hear the tones for that number. The # and * are produced by pressing their keys, along with Symbol/Shift. After you press a few numbers try the “r” key. If all is well, it should produce the same numbers again in rapid succession. (REDIAL!). For those numbers that require a pause such as dialing from an office where you must dial a 9 first to get the dial tone, enter a “p” at that point. The pause is about 1.5 seconds. If you need more just add another “p”. To dial another number press the “c” key to clear the redial memory and dial the new number. Using the memory to store and dial (with redial) up to 2Ø numbers is also easy. Simply follow the prompts. When dialing from the memory, the only thing you must remember, is to press the “c” key to go back to the menu or to dial a different number. You may have up to 30 digits (including pauses) in each of the 20 memories. When the memory list is displayed, only the first 16 digits are displayed due to screen space. This is really the best for the long distance services that you must have True Tone. I have used this program many a time to call long distance with Allnet. If you don’t have the cable and amplifier as in my last article (AUG CTM) you will right at the have to put the phone mic right at the speaker of the 2068. I just place the phone next to the speaker of my monitor. Well, have fun! ## Source Code ``` 5 DIM a$(20,30): DIM b$(20,10) 10 REM TONE DIALER 11 BORDER 6 12 CLS : PRINT FLASH 1;" T O N E D I A L E R " 14 PRINT '"0 - 9,#,*,p TO DIAL MANUALY"'"R --- TO REDIAL LAST NUMBER"'"S --- TO STORE A NUMBER"'"M --- TO DIAL FROM MEMORY"'"C --- TO CLEAR REDIAL"'"S AND CAP SHIFT TO SAVE TO TAPE"'" WITH THE NUMBERS IN THE MEMORY"' 15 PRINT '"Entering a ""p"" will allow a ""delay of about 1.5 seconds."'"When using Memory, if you get a busy, press ""r"" to redial"'"or press ""c"" to go back to the"'"menu." 18 LET r$="" 19 POKE 23609,10 20 LET n$=INKEY$: IF n$="" THEN GO TO 20 22 IF n$="m" THEN GO TO 2000 24 IF n$="s" THEN GO TO 3000 25 IF n$="p" THEN GO TO 32 26 IF n$="r" THEN GO TO 4000 27 IF n$="c" THEN GO TO 122 28 IF n$="S" THEN GO TO 50003 29 IF n$="*" OR n$="#" THEN GO TO 32 30 IF n$>"9" OR n$<"0" THEN GO TO 20 32 PRINT n$;"-"; 35 LET r$=r$+n$ 36 IF n$="#" THEN GO TO 1010 37 IF n$="*" THEN GO TO 1011 38 IF n$="p" THEN PAUSE 100: GO TO 20 40 GO TO VAL n$+1000 100 SOUND 0,l;1,0;2,h;3,0;7,60;8,15;9,15 105 IF n$="r" OR n$="m" THEN PRINT r$(i);"-"; 110 IF INKEY$<>"" THEN GO TO 110 120 PAUSE 5 130 SOUND 8,0;9,0;7,63 134 IF n$="r" OR n$="m" THEN RETURN 140 GO TO 20 1000 LET l=117: LET h=82: GO TO 100 1001 LET l=158: LET h=91: GO TO 100 1002 LET l=158: LET h=82: GO TO 100 1003 LET l=158: LET h=75: GO TO 100 1004 LET l=143: LET h=91: GO TO 100 1005 LET l=143: LET h=82: GO TO 100 1006 LET l=143: LET h=75: GO TO 100 1007 LET l=129: LET h=91: GO TO 100 1008 LET l=129: LET h=82: GO TO 100 1009 LET l=129: LET h=75: GO TO 100 1010 LET l=117: LET h=75: GO TO 100 1011 LET l=117: LET h=91: GO TO 100 2000 REM MEMORY LIST 2005 GO SUB 2010: GO TO 2100 2010 CLS : PRINT FLASH 1;" M E M O R Y L I S T " 2015 LET v=0 2020 FOR j=1 TO 20 2030 PRINT AT j,0;j;"- ";b$(j);" - ";a$(j) 2035 IF a$(j)=" " THEN LET v=v+1 2040 NEXT j 2050 RETURN 2100 IF v=20 THEN PRINT "NO NUMBERS STORED YET.": PAUSE 120: GO TO 12 2110 INPUT "WHICH # TO DIAL? ";Q: IF Q>20 OR Q<1 THEN GO TO 2110 2120 IF a$(Q)=" " THEN PRINT "NO # AT ";Q: PAUSE 100: GO TO 12 2130 PRINT b$(Q);" - "; 2140 LET r$=a$(Q) 2150 GO TO 4005 3000 REM MEMORY STORE 3010 GO SUB 2010 3020 INPUT "WHICH # TO STORE? ";Q: IF Q>20 OR Q<1 THEN GO TO 3020 3030 PRINT Q; 3040 INPUT "NAME? :"; LINE b$(Q): IF b$(Q)=" " THEN GO TO 3040 3045 PRINT " - ";b$(Q);" - "; 3050 INPUT "PHONE #? :"; LINE z$: IF LEN z$>30 OR LEN z$<1 THEN GO TO 3050 3055 LET a$(Q)=z$ 3060 PRINT a$(Q) 3070 INPUT "C-CORRECT, ENT-CONT.";x$: IF x$="c" THEN GO TO 3030 3075 GO SUB 2010: INPUT "M-MENU, S- TO STORE A # :";x$: IF x$="s" THEN GO TO 3020 3080 GO TO 12 4000 REM REDIAL 4002 IF INKEY$<>"" THEN GO TO 4002 4003 PRINT "REDIAL "; 4005 FOR i=1 TO LEN r$ 4008 IF r$(i)=" " THEN GO TO 4020 4010 IF r$(i)="#" THEN GO SUB 1010: GO TO 4020 4012 IF r$(i)="*" THEN GO SUB 1011: GO TO 4020 4013 IF r$(i)="p" THEN PAUSE 100: GO TO 4020 4015 GO SUB 1000+VAL r$(i) 4020 NEXT i 4025 PRINT 4030 GO TO 20 5000 REM SAVE TO TAPE 5005 CLS : PRINT FLASH 1;"ENTER PROGRAM NAME. YOU CAN ONLY ENTER UP TO 10 CHARACTERS." 5010 INPUT x$: IF LEN x$>10 OR LEN x$<1 THEN GO TO 5010 5015 CLS : PRINT AT 10,12; FLASH 1;"SAVING" 5020 SAVE x$ LINE 12 5030 GO TO 12 ```