This machine code routine allows you to rotate the character set in any of four directions, with or without mirror imaging it.
To enter the routine, type in the first listing and RUN. Then input each of these numbers (reading left to right):
033 000 252 001 000 252 197 221 033 080 251 006 001 022 008 229 014 000 126 160 040 002 203 193 203 001 121 035 021 032 243 221 119 000 221 035 225 203 000 048 228 035 035 035 035 035 035 035 035 209 229 033 080 251 001 008 000 237 176 225 213 124 254 255 032 197 193 201 033 000 061 017 000 252 001 000 003 237 176 201
When you are through, put a tape in the cassette and record the routine (you can GOTO 50 again to make more copies on the tape).
Now enter the second listing and RUN. You should see the output shown here.

To use the program in your own applications, first LOAD the machine code tape, then make sure your program contains a CLEAR 64255 at the beginning. Add a call to the initialization routine followed by two POKEs to set up the new character set (lines 40 and 50). To rotate 90 degrees counterclockwise, call the rotate routine (line 60). Four rotations will bring you back to the original character set.
To get mirror imaging, first POKE 64281,9, then call the rotate routine once and POKE 64281,1. This will rotate once and mirror image. One more rotation will get you a mirror image of the normal character set.
So that you may start rotating from a known point, you can call the initialization routine (line 40) at any time to get the normal character set back.
When you execute the init routine, the program copies the standard character set at 3D00 to RAM at FC00. If you want to rotate a different character set, load it into FC00-FF00 and do not call the initialization routine.
Keep in mind that when you rotate the character set, only subsequently printed characters will reflect the rotation, because the TS2068 has a real bit-mapped screen display.
This routine can be relocated, but it’s not easy. Change absolute 16 bit addresses at locations 64257, 64260, 64308, and 64328 to reflect the relocation. You must leave the character set starting 256 bytes from the origin.
5 CLEAR 64255
10 FOR a=64255 TO 64335
15 PRINT AT 0,0;a
20 INPUT d
30 POKE a,d
40 NEXT a
50 SAVE "rotate"CODE 64256,80
SYNTACTIC SUM: 6947, TS2068
[Editor’s note: the printed Syntactic Sum is exactly one CLEAR command higher than this listing, so the tested program apparently had one more CLEAR.]
5 CLEAR 64255
10 LET init=64324
20 LET rot=64256
30 LET mir=64281
35 PRINT "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
36 PRINT
40 RANDOMIZE USR init
50 POKE 23606,0: POKE 23607,251
55 FOR x=1 TO 4
60 RANDOMIZE USR rot
70 PRINT "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
75 NEXT x
77 PRINT
80 POKE mir,9
90 RANDOMIZE USR init
95 RANDOMIZE USR rot
100 POKE mir,1
105 FOR x=1 TO 4
110 RANDOMIZE USR rot
120 PRINT "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
130 NEXT x
160 RANDOMIZE USR init
SYNTACTIC SUM: 24877, TS2068
Media
Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.