Creating Your Own TS-2068 Character Set

One of the features that made me get my 2068 was the possibility of changing the character set. But, it didn’t seem to be worth the trouble until I saw the special alphabet used in a program that was shown at a recent TUG meeting. As you can see in the listing of CHR$, it is well worth it in better legibility, and it’s prettier too.

I really enjoy making character sets with this program which can be used to make more than just one regular and one USR set by changing the values of S and T which are the beginning of the second character set and UDG set respectively.

After you type in the program and RUN it you can start out by copying the Sinclair character set and then changing it. Sets can also be saved as bytes for use in other programs. Line 6000 switches the computer back into the normal ROM characters while line 6010 puts the new ones into use.

[Figure: Character editor screen showing an enlarged letter K, with the prompt “arrow keys :1 .0 ENTER ESC:4”]

The character editor routine is entered by pressing a character you wish to change. While in the edit mode, use the arrow keys to move the dots around. Press 1 to plot, press 0 to unplot, press 4 to return to the menu, and press enter to POKE the new character.

I don’t think you will ever be content with just the old alphabet again.

— John Monkus

  10 REM CHR$
20 REM [illegible]6-26-85[illegible]
22 REM [illegible]BY JOHN MONKUS[illegible]
30 DIM A(8): RESTORE : FOR I=1
TO 8: READ A(I): NEXT I
32 DATA 128,64,32,16,8,4,2,1
40 LET S=64600: LET T=65368: L
ET U=1
100 GO TO 1799
680 GO SUB 950: LET H=T+8*(CHR-
144): GO TO 710
700 GO SUB 950: LET H=S+8*(CHR-
32)
710 FOR I=1 TO 8: LET HH=PEEK (
H+I-1)
712 FOR J=1 TO 8
720 IF HH>=A(J) THEN LET HH=HH-
A(J): LET S$(I,J)="█"
730 NEXT J: NEXT I
790 GO TO 2000
950 DIM S$(8,8): FOR I=1 TO 8:
LET S$(I)=" ": NEXT I: RE
TURN
960 PRINT AT 14,12; FLASH 1;"[illegible]
[illegible]": FOR I=0 TO 767: POKE (S
+I),PEEK (15616+I): NEXT I: LET
U=0: GO TO 1800
999 ON ERR RESET : OVER 0: BEEP
0.07,31: BEEP 0.07,20: PAPER 7:
INK 9: BRIGHT 0: BORDER 6: STOP
1010 PRINT AT Y+3,X+7;S$(Y,X): R
ETURN
1800 ON ERR RESET : BORDER 1: PA
PER 1: INK 9: CLS : POKE 23658,1
1810 PRINT AT 5,0;: GO SUB 5500:
1820 PRINT AT 19,2;"[illegible]:copy Sincl
air set "" "":stop";AT 21,4;"[illegible]:l
oad CHR$ [illegible]:save CHR$"
1840 DIM C$(1): INPUT ;TAB 10;"C
HARACTER?";C$
1842 IF C$="[illegible]" THEN GO TO 7000
1844 IF C$="[illegible]" THEN IF U=1 THEN
GO TO 960
1846 IF C$="[illegible]" THEN GO TO 7100
1848 IF C$="[illegible]" THEN COPY
1850 IF C$=" " OR C$=" " THEN GO
TO 999
1860 LET CHR=CODE C$
1870 IF CHR>143 AND CHR<165 THEN
GO TO 680
1880 IF CHR>32 AND CHR<127 THEN
GO TO 700
1900 GO TO 1800
2000 OVER 0: BORDER 6: PAPER 6:
BRIGHT 0: CLS : INK 9: PAPER 8:
PRINT AT 3,7;"[illegible]"; FOR I
=1 TO 8: PRINT AT I+3,7;"[illegible]"; PAP
ER 7;S$(I); PAPER 8;"[illegible]": NEXT I:
PRINT AT 12,7;"[illegible]"
2010 POKE 23658,8: GO SUB 3000:
GO SUB 5000
2200 PRINT AT 14,0; PAPER 6;"arr
ow keys [illegible]:1 "; PAPER 7;" "; PAPE
R 6;":0 ENTER ESC:4 ": LET X=
4: LET Y=4
2210 PRINT AT Y+3,X+7; BRIGHT 1;
INVERSE 1;S$(Y,X)
2230 IF INKEY$="5" THEN : IF X>1
THEN GO SUB 1000: LET X=X-1:
2240 IF INKEY$="8" THEN : IF X<8
THEN GO SUB 1000: LET X=X+1:
2250 IF INKEY$="7" THEN : IF Y>1
THEN GO SUB 1000: LET Y=Y-1:
2260 IF INKEY$="6" THEN : IF Y<8
THEN GO SUB 1000: LET Y=Y+1
2300 IF INKEY$="0" THEN : BEEP 0
.02,44: LET S$(Y,X)=" ": PRINT A
T Y+3,X+7;S$(Y,X): GO SUB 3890:
PLOT INVERSE 1;171+X,88-Y: PLOT
187+X,88-Y
7030 POKE 23624,41: DIM T$(10):
INPUT ;"10 CHR$ max (4=ESC)";U$:
IF U$="4" THEN GO TO 1800
7032 IF U$="" THEN LET T$=" CH
R$ ": GO TO 7036
7034 LET T$=U$
7036 FOR I=1 TO 10: IF CODE T$(I
)<>32 AND CODE T$(I)>47 AND CODE
T$(I)<58 THEN GO TO 7010
7038 NEXT I
7044 LET J=65536-S
7050 SAVE T$CODE S,J
7060 LET R=1800: ON ERR GO TO 79
50: PRINT AT 9,0;" "; FLASH
1;"REWIND TAPE TO VERIFY"; FLAS
H 0;" ";AT 11,10;"[illegible]
[illegible]";AT 11,11; PAPER 8; INK 8; O
VER 1;T$
7070 PRINT AT 19,0;: VERIFY ""CO
DE : GO TO 1800
7099 STOP
7100 REM [illegible]LOAD CHR$[illegible]
7110 PAPER 2: INK 6: BORDER 2: C
LS
7120 PRINT AT 9,4; FLASH 1;"STAR
T TAPE TO LOAD BYTES"
7130 LET R=1800: ON ERR GO TO 79
50
7140 PRINT AT 16,0;: LOAD ""CODE
7150 GO TO 1800
7199 STOP
7950 PRINT #1;AT 0,7; FLASH 1;"T
APE LOADING ERROR";AT 1,2; FLASH
0;" press any key to continue "
: PAUSE 4E4
7960 ON ERR RESET : GO TO R
8999 STOP
9000 REM [illegible]CHR$[illegible]
9005 POKE 23658,8: POKE 23675,88
: POKE 23676,255
9010 CLS : PRINT AT 9,8; FLASH 1
;"DO NOT STOP TAPE"
9020 LOAD ""CODE
9030 GO TO 1800
9998 STOP
9999 PAPER 8: INK 9: PRINT AT 20
,0;: SAVE "CHR$" LINE 9000: SAVE
" CHR$"CODE 64600,936: VERIFY
"CHR$": PRINT AT 20,0;: VERIFY "
CHR$"CODE

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