Beyond the TS 1500 (ZX81/TS 1000) User Manual
Now thanks to Earl, we have a sum-checker program for the TS1000/TS1500/ZX81, Just like the one Stan Lemke introduced for the TS2068 in TDM, May/June ’88.
The Machine Code is not relocatable and the program requires a minimum of 16K RAM. Those readers who wish to use the CKTYPE listings should LOAD the final BASIC version before proceeding.
Listing K is the final decimal machine code data, after deleting the unused portion of the Run Time Package. Included in the code is a routine to load a program from tape, defeating the autorun. This is necessary as some programs may contain machine code that would be loaded into the area where the code for CKTYPE 1000 will reside, if they were allowed to autorun. The loading routine will not work if you play the tape before the end of any program proceeding the one you wish to load.
Listing L is a program that will convert the machine code data into the corresponding character (CHR$) and enter it into the dimensioned string A$. This program will also produce a printout in the same format as Listing K, so that you can check the data. To correct an error, use the direct command:
LET A$(n)=CHR$ c
where n= the string character number and c= the correct decimal code.
WARNING: FROM THIS POINT ON, DO NOT USE CLEAR, DIM A$, NEW, OR RUN. These commands would erase A$.
Listing M is the CKTYPE printout for the program of Listing L.
After entering and checking all of the M/C data, program lines are to be deleted or added so that the program will now appear as in Listing N. After POKEing some additional machine code into the REM statement using the direct command GOTO 2 and deleting lines 2 to 6, this becomes the final CKTYPE 1000 M/C program. To SAVE the program on tape, use the direct command: GOTO 20.
Listing Ø is the CKTYPE for Listing N before using the command GOTO 2.
When LOADed, the program will:
Set RAMTOP to 32085
POKE the machine code stored in A$ into the addresses above RAMTOP starting with 32086
Clean the memory below RAMTOP in preparation for either typing in a program or LOADing a program from tape for which a CKTYPE listing is desired
Instructions for operating the programs will be displayed on the screen. Anyone needing more detailed instructions, send an S.A.S.E. to me at [address omitted]. Comments on this series of articles are also solicited.
LISTING K
A$(1) 33 125 64 34 116 126 A$(7) 33 13 64 205 252 127 A$(13) 235 33 0 1 205 173 A$(19) 126 229 33 12 64 205 A$(25) 252 127 235 225 25 34 A$(31) 118 126 42 116 126 34 A$(37) 120 126 33 0 0 34 A$(43) 122 126 33 0 0 34 A$(49) 124 126 33 0 0 34 A$(55) 126 126 42 120 126 205 A$(61) 252 127 235 33 0 1 A$(67) 205 173 126 229 17 1 A$(73) 0 42 120 126 25 205 A$(79) 252 127 235 225 25 34 A$(85) 122 126 17 2 0 42 A$(91) 120 126 25 34 120 126 A$(97) 17 1 0 42 120 126 A$(103) 25 205 252 127 235 33 A$(109) 0 1 205 173 126 229 A$(115) 42 120 126 205 252 127 A$(121) 235 225 25 34 124 126 A$(127) 17 2 0 42 120 126 A$(133) 25 34 120 126 33 1 A$(139) 0 34 128 126 33 1 A$(145) 0 34 130 126 42 124 A$(151) 126 34 132 126 33 1 A$(157) 0 34 134 126 33 252 A$(163) 125 34 136 126 237 91 A$(169) 128 126 42 126 126 25 A$(175) 17 1 0 25 229 42 A$(181) 120 126 205 252 127 235 A$(187) 225 25 34 126 126 42 A$(193) 128 126 205 10 127 34 A$(199) 128 126 17 1 0 42 A$(205) 120 126 25 34 120 126 A$(211) 205 201 127 130 126 253 A$(217) 203 1 206 42 122 126 A$(223) 205 44 127 33 6 0 A$(229) 205 163 127 205 108 127 A$(235) 14 0 112 42 124 126 A$(241) 205 44 127 33 13 0 A$(247) 205 163 127 205 108 127 A$(253) 14 0 112 42 126 126 A$(259) 205 44 127 62 118 215 A$(265) 253 203 1 142 237 91 A$(271) 118 126 42 120 126 205 A$(277) 24 127 205 148 127 124 A$(283) 125 205 248 127 0 0 A$(289) 0 0 0 0 0 0 A$(295) 0 0 0 0 0 0 A$(301) 0 0 0 0 0 0 A$(307) 0 0 205 231 2 205 A$(313) 211 27 205 67 8 201 A$(319) 1 0 0 195 117 11 A$(325) 197 6 16 124 77 33 A$(331) 0 0 41 203 17 23 A$(337) 48 1 25 16 247 193 A$(343) 201 14 0 124 170 230 A$(349) 128 71 213 205 0 127 A$(355) 227 205 0 127 235 225 A$(361) 121 167 40 54 120 177 A$(367) 229 237 98 237 82 229 A$(373) 193 209 33 0 0 55 A$(379) 63 245 122 83 30 8 A$(385) 41 48 5 143 237 74 A$(391) 24 9 135 237 74 56 A$(397) 3 237 66 61 60 29 A$(403) 32 236 95 241 48 226 A$(409) 203 79 32 1 235 203 A$(415) 127 200 24 11 205 154 A$(421) 126 203 16 208 24 3 A$(427) 124 7 208 235 167 237 A$(433) 98 237 82 201 124 181 A$(439) 33 0 0 192 44 201 A$(445) 1 0 128 24 4 235 A$(451) 1 1 128 124 168 103 A$(457) 122 168 87 237 82 38 A$(463) 0 121 111 216 238 1 A$(469) 111 201 58 33 64 203 A$(475) 71 32 26 203 79 32 A$(481) 10 203 124 40 6 62 A$(487) 22 215 205 3 127 1 A$(493) 240 216 30 255 197 205 A$(499) 225 7 205 173 10 229 A$(505) 193 33 93 64 87 30 A$(511) 28 112 203 122 40 1 A$(517) 113 151 237 111 131 215 A$(523) 151 237 111 131 215 203 A$(529) 122 203 250 40 239 201 A$(535) 225 126 35 254 112 40 A$(541) 47 254 118 32 3 215 A$(547) 24 243 205 148 126 24 A$(553) 238 151 24 2 62 144 A$(559) 75 69 33 48 64 86 A$(565) 119 213 229 205 178 11 A$(571) 225 209 114 201 205 10 A$(577) 127 124 181 227 94 35 A$(583) 86 35 227 192 225 235 A$(589) 233 125 230 31 79 253 A$(595) 203 1 78 40 10 253 A$(601) 150 56 203 255 198 60 A$(607) 212 113 8 253 134 57 A$(613) 254 33 58 58 64 222 A$(619) 1 205 250 8 253 203 A$(625) 1 198 201 225 94 35 A$(631) 86 35 229 213 33 7 A$(637) 0 25 6 4 86 43 A$(643) 94 43 213 16 249 225 A$(649) 193 209 122 25 235 225 A$(655) 227 115 35 114 197 225 A$(661) 7 48 1 235 205 18 A$(667) 127 225 216 193 233 235 A$(673) 115 201 193 229 193 201 A$(679) 110 38 0 201
LISTING L
20 DIM A$(682)
170 PRINT "WORKING FROM LEFT TO RIGHT, ENTER A DATA VALUE"
180 FOR N=1 TO 682
185 INPUT DATA
190 LET A$(N)=CHR$ DATA
200 NEXT N
201 PRINT AT 0,0;"TO OBTAIN A PRINTOUT OF A$, TURN ON PRINTER AND PRESS A LET-TER KEY OTHERWISE PRESS BREAK"
202 PAUSE 32768
203 FOR N=1 TO 682 STEP 6
204 LPRINT TAB 0;"A$(";N;")";TAB 8;CODE A$(N);TAB 12;CODE A$(N+1);TAB 16;CODE A$(N+2);TAB 20;CODE A$(N+3);TAB 24;CODE A$(N+4);TAB 28;CODE A$(N+5)
205 NEXT N
206 PRINT AT 0,0;"TO CORRECT AN ERRONEOUS VALUE, USE THE DIRECT COMMAND: LET A$(N)=CHR$ DATA WHERE N=THE CHARACTER NUMBER IN THE STRING AND DATA IS THE COR- RECT VALUE"
210 STOP
LISTING M
20 : 15 : 992 170 : 54 : 2300 180 : 21 : 1497 185 : 6 : 539 190 : 13 : 922 200 : 3 : 417 201 : 114 : 4667 202 : 13 : 816 203 : 29 : 2088 204 : 163 : 8429 205 : 3 : 417 206 : 191 : 6918 210 : 2 : 348
LISTING Ø
1 : 6 : 483 2 : 21 : 1248 3 : 22 : 1249 4 : 22 : 1215 5 : 23 : 1335 6 : 23 : 1285 10 : 2 : 375 20 : 10 : 705 30 : 2 : 350 40 : 22 : 1236 50 : 23 : 1344 60 : 22 : 1581 70 : 21 : 1287 80 : 21 : 1485 90 : 23 : 1593 100 : 22 : 1218 110 : 23 : 1338 120 : 14 : 1031 130 : 10 : 717 140 : 190 : 9214 150 : 140 : 5818 160 : 91 : 3942 170 : 13 : 816 180 : 21 : 1497 190 : 22 : 1543 200 : 3 : 417 210 : 2 : 351
LISTING N
1 REM 1234
2 POKE 16510,0
3 POKE 16514,49
4 POKE 16515,81
5 POKE 16516,125
6 POKE 16517,201
10 RETURN
20 SAVE "CKTYPE"
30 FAST
40 POKE 16388,85
50 POKE 16389,125
60 POKE 32084,62
70 POKE 32083,0
80 POKE 32082,6
90 POKE 32081,118
100 POKE 16386,81
110 POKE 16387,125
120 RAND USR 16514
130 GOSUB 10
140 PRINT AT 0,9;" CKTYPE 1000 ";AT 2,0;"1. RAMTOP HAS BEEN SET AT 32085";AT 4,0;"2. PRESS A LETTER KEY TO MOVE M/C ABOVE RAMTOP AFTER MAKING A NOTE OF THE FOLLOWING"
150 PRINT AT 8,0;"3. WHEN CURSOR APPEARS, EITHER TYPE IN A PROGRAM OR LOAD A PRO-GRAM FROM TAPE USING THE DIRECT COMMAND: RAND USR 32394"
160 PRINT AT 13,0;"4. TO LPRINT A CKTYPE LISTING, USE THE DIRECT COMMAND: RAND USR32086"
170 PAUSE 32768
180 FOR N=1 TO 682
190 POKE N+32085,CODE A$(N)
200 NEXT N
210 NEW

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