--- title: "Script" id: 71983 type: "computer_media" slug: "script" url: "http://localhost/computer_media/script/" markdown_url: "http://localhost/computer_media/script.md" published_at: "2026-10-20T14:59:11+00:00" modified_at: "2026-10-20T14:59:12+00:00" author: "David Anderson" featured_image: url: "http://localhost/wp-content/uploads/2026/10/3_script.png" excerpt: "Installs a handwriting-style script typeface for all upper and lower case letters above RAMTOP, switched on and off by POKEing the CHARS system variable." category: - name: "Archived Media" slug: "archived-media" taxonomy: "category" url: "http://localhost/category/archived-media/" post_tag: - name: "Downloadable" slug: "downloadable" taxonomy: "post_tag" url: "http://localhost/tag/downloadable/" - name: "TS 2068" slug: "ts2068" taxonomy: "post_tag" url: "http://localhost/tag/ts2068/" model: - name: "Timex/Sinclair 2068" slug: "ts-2068" taxonomy: "model" url: "http://localhost/model/ts-2068/" genre: - name: "Font" slug: "font" taxonomy: "genre" url: "http://localhost/type/font/" media_contents: - id: 71988 title: "Misc Programs" type: "computer_media" url: "http://localhost/computer_media/misc-programs/" media_type: "Program" tsrun_member: "Misc Programs (198x)(-)(TS2068)(US)(Cassette)/SideB/3_script.tap" mediadate: "198x" images: - url: "http://localhost/wp-content/uploads/2026/10/3_script.png" media_type_tags: "Font" --- # Script Installs a script typeface. The program makes a copy of the character set above RAMTOP, replaces the upper and lower case letters with joined, handwriting-style shapes, and leaves digits and punctuation as they were. When it finishes it shows the two pairs of POKEs to type: `POKE 23606,244: POKE 23607,250` switches to script, and `POKE 23606,0: POKE 23607,60` switches back to the ROM font. *** ## Program Analysis Line 7100 lowers RAMTOP with `CLEAR 64499` and finds the current font from the `CHARS` system variable (23606–23607), adding 256 to reach character 32. The program then builds a 96-character set at 64500 in five blocks. Characters 32–64, 91–96 and 123–127 are copied from the existing font. The 26 capitals (65–90) and 26 lower case letters (97–122) are read from 52 `DATA` lines at 8000–8150, eight bytes each. Lines 9000–9050 point `CHARS` at the new set long enough to print the first message in script, then restore the ROM font. ### Notable Techniques - `CHARS` holds the address 256 bytes before character 32, so pointing it at 64244 (bytes 244 and 250) makes the set stored at 64500 take effect. - The new font sits below the UDG area at 65368, so both can be used together. ### Potential Issues - The `DATA` lines are numbered 8144, 8145 and then 8148. This is out of the usual sequence but has no effect. ## Source Code ``` 7100 CLEAR 64499: LET c=PEEK 23606+256*PEEK 23607+256 7101 FOR j=0 TO 32 7102 FOR p=0 TO 7 7103 POKE 64500+p+8*j,PEEK (c+p+8*j) 7104 NEXT p 7105 NEXT j 7106 FOR j=33 TO 58 7107 FOR p=0 TO 7 7108 READ x 7109 POKE 64500+p+8*j,x 7110 NEXT p: NEXT j 7200 FOR j=59 TO 64 7210 FOR p=0 TO 7 7220 POKE 64500+p+8*j,PEEK (c+p+8*j) 7230 NEXT p 7240 NEXT j 7300 FOR j=65 TO 90 7305 FOR p=0 TO 7 7320 READ x 7324 POKE 64500+p+8*j,x 7325 NEXT p 7326 NEXT j 7327 FOR j=91 TO 95 7328 FOR p=0 TO 7 7329 POKE 64500+p+8*j,PEEK (c+p+8*j) 7330 NEXT p 7331 NEXT j 8000 DATA 56,68,68,132,132,133,122,0 8002 DATA 124,162,34,60,34,162,124,0 8004 DATA 28,34,68,64,64,33,30,0 8006 DATA 124,162,34,34,34,162,124,0 8008 DATA 112,136,128,96,132,132,120,0 8010 DATA 126,66,4,62,10,16,32,0 8012 DATA 6,9,9,14,146,98,98,156 8014 DATA 194,68,68,126,68,68,130,0 8016 DATA 24,40,40,104,152,146,108,0 8018 DATA 130,124,8,8,40,72,48,0 8020 DATA 136,80,96,192,96,82,140,0 8022 DATA 140,124,8,16,80,161,92,0 8024 DATA 192,104,84,84,84,85,84,0 8026 DATA 64,168,52,36,36,37,34,0 8028 DATA 114,170,156,136,136,136,112,0 8030 DATA 248,68,196,120,64,64,64,0 8032 DATA 56,68,36,8,80,162,92,0 8034 DATA 216,100,68,248,80,73,70,0 8036 DATA 12,18,16,12,66,162,132,120 8038 DATA 131,124,4,8,8,16,144,96 8040 DATA 132,68,68,68,68,69,58,0 8042 DATA 130,68,68,68,68,40,16,0 8044 DATA 130,146,146,146,146,146,108,0 8046 DATA 192,36,40,16,40,72,6,0 8048 DATA 66,34,34,34,34,30,68,60 8050 DATA 206,52,8,16,32,89,230,0 8100 DATA 0,0,56,72,200,73,54,0 8102 DATA 64,96,96,72,207,72,48,0 8104 DATA 0,0,56,72,192,71,56,0 8106 DATA 8,8,56,72,200,73,54,0 8108 DATA 0,0,48,72,249,66,60,0 8110 DATA 64,96,96,64,209,110,64,64 8112 DATA 0,0,56,72,200,63,8,112 8114 DATA 64,96,96,64,240,73,78,0 8116 DATA 0,32,0,32,32,161,94,0 8118 DATA 32,0,32,96,176,41,172,64 8120 DATA 64,96,64,112,200,104,84,0 8122 DATA 32,48,48,32,96,163,28,0 8124 DATA 0,0,84,170,170,43,42,0 8126 DATA 0,0,88,164,164,37,34,0 8128 DATA 0,0,48,76,203,72,48,0 8130 DATA 0,0,48,72,200,119,64,64 8132 DATA 0,0,48,72,200,57,10,14 8134 DATA 0,0,32,56,100,165,34,0 8136 DATA 0,0,16,48,72,201,54,0 8138 DATA 0,16,124,16,48,209,14,0 8140 DATA 0,0,72,72,200,73,54,0 8142 DATA 0,0,100,86,149,20,8,0 8144 DATA 0,0,68,84,212,85,42,0 8145 DATA 0,0,36,88,152,37,66,0 8148 DATA 0,0,72,72,200,61,10,48 8150 DATA 0,64,116,92,148,7,20,8 8999 REM SCREEN PROMPT 9000 CLS : POKE 23606,244: POKE 23607,250 9010 PRINT "Script character set is now above Ramtop." 9030 POKE 23606,0: POKE 23607,60 9040 PRINT ,,"TO PRINT normal enter POKE 23606,0 : POKE 23607,60" 9050 PRINT ,,"To PRINT in script enter POKE 23606,244 : POKE 23607,250" ```