CKTYPE 1000 (Machine Code Version)

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
Timex Sinclair 1500 computer
Timex Sinclair 1500 computer

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