---
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
```