Character Sets

See all articles from SINCUS v5 n4

This is a guide for making your own character sets for the TS 2068.

First, you need to design the characters for your sets. These directions provide space for five sets in RAM, starting at 60928. Each character consists of 8 lines. Add 128, 64, 32,16,8,4,2,and 1 for pixels respectively as you go left to right. As an example, the character A is represented by DATA 0,60,66,66,126,66,66,0. You also have to decide where to locate your characters on the keyboard.

Next, you need a data list loader program to generate the characters. The first section of Lines 210 through 250 in the following program and my values for the variable C in those lines should only be treated as examples, as you might not want to locate your characters where I put mine. Note also that the characters in the ROM will all be copied into RAM and the ones you don’t pave over with your own characters will remain as is.

10   REM (name)
40 CLEAR 60927
50 FOR N = 1 TO 5
60 LET S = 44544 + 768 * N
100 FOR C = 32 TO 127
110 LET V = 15360 + 8 * C
120 FOR L = 1 TO 8
130 LET A = V + S
140 POKE A, PEEK V
200 REM Change Chrs
210 IF N = 1 AND ( C=33 OR ( C > 34 AND C < 42) OR ( C > 46 AND C < 59 ) OR ( C >
62 AND C < 91 ) OR ( C > 94 AND C < 123 ) ) THEN READ D: POKE A, D
220 IF N = 2 AND ( C = 33 OR C = 35 OR C = 38 OR C = 39 OR C = 64 OR ( C > 94 AND
C < 123 ) ) THEN READ D: POKE A, D
230 IF N = 3 AND ( ( C > 64 AND C < 72) OR ( C > 72 AND C < 81 ) OR ( C > 81 AND C
< 91 ) OR ( C > 96 AND C < 113 ) OR ( C > 113 AND C < 123 ) ) THEN READ D: POKE A,
D
240 IF N = 4 AND ( C = 35 OR C = 38 OR C = 39 OR C = 44 OR C = 46 OR C = 59 OR C =
63 OR ( C > 95 AND C < 123 ) ) THEN READ D: POKE A, D
250 IF N = 5 AND ( ( C > 64 AND C < 91) OR ( C > 96 AND C < 123 ) ) THEN READ D:
POKE A, D
300 REM (name)

Use the 300’s, 400’s, 500’s, 600’s, and 700’s for your five data lists.

900  LET V = V + 1
910 NEXT L
920 NEXT C
930 NEXT N
1000 REM End

Now run this loader program. If you have 5 sets, it will take 25 minutes. Then save the data in a couple of places.

     SAVE "AlphaDL"CODE 60928,3840

We are now ready to write a program that will produce character sets. The strings in Lines 30 through 70 should only be considered to be examples, as are the names of alphabets and their initials used for variables.

10   REM Alphabets
20 CLEAR 60927
30 LET J$ = "ABGDWZE$'JILX!KH:&?MYN#)@P(%SVTRCU_Q OFvbgdwze 47j
ilx1kh'6/myn392p85svtrcu0qof"
40 LET K$ = "abvgde#_zijklmnoprstufhqcwx!y@''&"
10   REM Alphabets
20 CLEAR 60927
30 LET J$ = "ABGDWZE$'JILX!KH:&?M
YN#)@P(%SVTRCU_Q OFvbgdwze 47j ilx1
kh'6/myn392p85svtrcu0qof"
40 LET K$ = "abvgde#_zijklmnoprst
ufhqcwx!y@''&"
50 LET L$ = "ABGDEZWYIKLMNXOPRSTU
FCVJ h abdgezwyiklmnxoprst ufcvj"
60 LET M$ = "s#rq'w,fpec;njmlok?i
tyzuxvhdg'ba .&"
70 LET N$ = "ABCDEFGHIJKLMNOPQRST
UVWXYZ" abcdefghijklmnopqrstuvwxyz"
80 LOAD "AlphaDL"CODE 60928,3840
90 CLS
100 REM Printout
105 POKE 23606, 0
110 LET y = 23607
115 PRINT
120 POKE y, 237: PRINT J$
125 PRINT
130 POKE y, 240: PRINT K$
135 PRINT
140 POKE y, 243: PRINT L$
145 PRINT
150 POKE y, 246: PRINT M$
155 PRINT
160 POKE y, 60: PRINT N$
165 PRINT
170 POKE y, 249: PRINT N$
180 PAUSE 300
200 REM Choice
205 POKE 23607, 60
210 CLS
220 PRINT AT 8,4;"What alphabet would you"
221 PRINT TAB 6;"like to use? Press"
225 PRINT
230 PRINT TAB 9;"A for Armenian"
235 PRINT TAB 9;"C for Cyrillic"
240 PRINT TAB 9;"G for Greek"
245 PRINT TAB 9;"H for Hebrew"
250 PRINT TAB 9;"L for Latin"
255 PRINT TAB 9;"S for Script"
260 PRINT
265 PRINT
270 PRINT TAB 4;"To change it,press RUN."
280 PAUSE 0
290 IF INKEY$ = "" THEN GO TO 290
300 IF NOT ( INKEY$ = "A" OR
INKEY$ = "C" OR INKEY$ = "G"
OR INKEY$ = "H" OR INKEY$ =
"L" OR INKEY$ = "S" ) THEN GO TO 1000
310 IF INKEY$ = "A" THEN GO TO 400
320 IF INKEY$ = "C" THEN GO TO 500
330 IF INKEY$ = "G" THEN GO TO 600
340 IF INKEY$ = "H" THEN GO TO 700
350 IF INKEY$ = "L" THEN GO TO 900
360 IF INKEY$ = "S" THEN GO TO 800
400 REM Armenian
410 POKE 23606,0
420 POKE 23607,237
430 CLS
440 PRINT AT 9,0;J$
450 GO TO 1000
500 REM Cyrillic
510 POKE 23606,0
520 POKE 23607,240
530 CLS
540 PRINT AT 9,0;K$
550 GO TO 1000
600 REM Greek
610 POKE 23606,0
620 POKE 23507,243
630 CLS
640 PRINT AT 9,0;L$
650 GO TO 1000
700 REM Hebrew
710 POKE 23606,0
720 POKE 23607,246
730 CLS
740 PRINT AT 9,0;M$
750 GO TO 1000
800 REM Script
810 POKE 23606,0
820 POKE 23507,249
830 CLS
840 PRINT AT 9,0;N$
850 GO TO 1000
900 REM Latin
910 POKE 23606,0
920 POKE 23606,60
930 CLS
940 PRINT AT 9,0;N$
1000 REM End

If you want a program with just one character set and no menu, make th[illegible] following changes:-

Line 40 CLEAR 63999
Delete the FOR and NEXT lines concerning the variable N.
Line 60 LET S = 48384
Skip references to the variable N, such as IF N = 1 AND in the one line you will ne[illegible] for locating your characters on the key board.

RUN this loader program–it will take about 5 minutes.

        SAVE "AlphaDL" CODE 64000, 768

Then write a program with lines as follows:-

        CLEAR 63999
LOAD "AlphaDL" CODE 64000, 768
CLS
POKE 23606, 0
POKE 23607, 249
PRINT "(your alphabet)"
PAUSE 300

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