
PAGE 01    DAI FIRMWARE CD8B-CF01  V1.0  Rev.1

002                         ORG   :CD8B
003                 *
004                 *
005                 *
006                 *****************************************
007                 * POINTERS TO STRINGS OF BASIC COMMANDS *
008                 *****************************************
009                 *
010                 * This table, with base at CC08, is used for
011                 * printing the Basic instructions during a
012                 * listing.
013                 *
014                 * From the TOKEN, the address in this table can
015                 * be found by:
016                 *      CC08 + 3x TOKEN = address in table
017                 * This is done by a routine on 0ECCC.
018                 *
019                 * The address given points to the memory location
020                 * on which the particular string can be found.
021                 *
022                 * The data byte after the address is an offset
023                 * with base at 0ECF8. Therewith the instructions
024                 * can be found about what to print after the
025                 * Basic statement (when performing LIST).
026                 *
027 CD8B BFCB       CDTAB   DBL   :CBBF     NEW
028 CD8D 00                 DATA  :00
029                 *
030 CD8E C6CB               DBL   :CBC6     CONT
031 CD90 00                 DATA  :00
032                 *
033 CD91 CECB               DBL   :CBCE     STOP
034 CD93 00                 DATA  :00
035                 *
036 CD94 D6CB               DBL   :CBD6     END
037 CD96 00                 DATA  :00
038                 *
039 CD97 DDCB               DBL   :CBDD     RESTORE
040 CD99 00                 DATA  :00
041                 *
042 CD9A E8CB               DBL   :CBE8     RETURN
043 CD9C 00                 DATA  :00
044                 *
045 CD9D F2CB               DBL   :CBF2     RUN
046 CD9F 00                 DATA  :00
047                 *
048 CDA0 F2CB               DBL   :CBF2     RUN
049 CDA2 01                 DATA  :01
050                 *
051 CDA3 F9CB               DBL   :CBF9     GOTO
052 CDA5 01                 DATA  :01
053                 *
054 CDA6 01CC               DBL   :CC01     GOSUB
055 CDA8 01                 DATA  :01
056                 *
057 CDA9 1BCD               DBL   :CD1B     LOAD
058 CDAB 04                 DATA  :04
059                 *
060 CDAC 23CD               DBL   :CD23     SAVE
061 CDAE 04                 DATA  :04
062                 *
063 CDAF 2BCD               DBL   :CD2B     CHECK

PAGE 02    DAI FIRMWARE CD8B-CF01  V1.0  Rev.1

064 CDB1 00                 DATA  :00
065                 *
066 CDB2 23CC               DBL   :CC23     OUT
067 CDB4 05                 DATA  :05
068                 *
069 CDB5 2ACC               DBL   :CC2A     POKE
070 CDB7 05                 DATA  :05
071                 *
072 CDB8 32CC               DBL   :CC32     WAIT
073 CDBA 0A                 DATA  :0A
074                 *
075 CDBB 78CD               DBL   :CD78     WAIT MEM
076 CDBD 0A                 DATA  :0A
077                 *
078 CDBE 81CD               DBL   :CD81     WAIT TIME
079 CDC0 04                 DATA  :04
080                 *
081 CDC1 3ACC               DBL   :CC3A     LIST
082 CDC3 00                 DATA  :00
083                 *
084 CDC4 3ACC               DBL   :CC3A     LIST
085 CDC6 01                 DATA  :01
086                 *
087 CDC7 3ACC               DBL   :CC3A     LIST
088 CDC9 0B                 DATA  :0B
089                 *
090 CDCA 4ACC               DBL   :CC4A     SOUND
091 CDCC 0C                 DATA  :0C
092                 *
093 CDCD 53CC               DBL   :CC53     NOISE
094 CDCF 0D                 DATA  :0D
095                 *
096 CDD0 5CCC               DBL   :CC5C     ENVELOPE
097 CDD2 0E                 DATA  :0E
098                 *
099 CDD3 68CC               DBL   :CC68     CURSOR
100 CDD5 05                 DATA  :05
101                 *
102 CDD6 72CC               DBL   :CC72     MODE
103 CDD8 0F                 DATA  :0F
104                 *
105 CDD9 7ACC               DBL   :CC7A     DOT
106 CDDB 07                 DATA  :07
107                 *
108 CDDC 81CC               DBL   :CC81     DRAW
109 CDDE 08                 DATA  :08
110                 *
111 CDDF 89CC               DBL   :CC89     FILL
112 CDE1 08                 DATA  :08
113                 *
114 CDE2 91CC               DBL   :CC91     COLORT
115 CDE4 09                 DATA  :09
116                 *
117 CDE5 9BCC               DBL   :CC9B     COLORG
118 CDE7 09                 DATA  :09
119                 *
120 CDE8 A5CC               DBL   :CCA5     INPUT
121 CDEA 11                 DATA  :11
122                 *
123 CDEB A5CC               DBL   :CCA5     INPUT
124 CDED 10                 DATA  :10
125                 *

PAGE 03    DAI FIRMWARE CD8B-CF01  V1.0  Rev.1

126 CDEE AECC               DBL   :CCAE     DATA
127 CDF0 03                 DATA  :03
128                 *
129 CDF1 B6CC               DBL   :CCB6     READ
130 CDF3 11                 DATA  :11
131                 *
132 CDF4 BECC               DBL   :CCBE     LET
133 CDF6 13                 DATA  :13
134                 *
135 CDF7 0000               DBL   :0000     Assignment (= LET)
136 CDF9 13                 DATA  :13
137                 *
138 CDFA C5CC               DBL   :CCC5     IF
139 CDFC 14                 DATA  :14
140                 *
141 CDFD C5CC               DBL   :CCC5     IF
142 CDFF 15                 DATA  :15
143                 *
144 CE00 C5CC               DBL   :CCC5     IF
145 CE02 16                 DATA  :16
146                 *
147 CE03 CBCC               DBL   :CCCB     REM
148 CE05 03                 DATA  :03
149                 *
150 CE06 D2CC               DBL   :CCD2     FOR
151 CE08 17                 DATA  :17
152                 *
153 CE09 D9CC               DBL   :CCD9     NEXT
154 CE0B 00                 DATA  :00
155                 *
156 CE0C D9CC               DBL   :CCD9     NEXT
157 CE0E 18                 DATA  :18
158                 *
159 CE0F E1CC               DBL   :CCE1     PRINT
160 CE11 19                 DATA  :19
161                 *
162 CE12 EFCC               DBL   :CCEF     ON
163 CE14 1A                 DATA  :1A
164                 *
165 CE15 EFCC               DBL   :CCEF     ON
166 CE17 1B                 DATA  :1B
167                 *
168 CE18 F5CC               DBL   :CCF5     DIM
169 CE1A 11                 DATA  :11
170                 *
171 CE1B FCCC               DBL   :CCFC     '***'
172 CE1D 03                 DATA  :03
173                 *
174 CE1E 03CD               DBL   :CD03     UT
175 CE20 00                 DATA  :00
176                 *
177 CE21 09CD               DBL   :CD09     CALLM
178 CE23 1C                 DATA  :1C
179                 *
180 CE24 12CD               DBL   :CD12     CLEAR
181 CE26 04                 DATA  :04
182                 *
183 CE27 0000               DBL   :0000     IMP
184 CE29 00                 DATA  :00
185                 *
186 CE2A 3ACC               DBL   :CC3A     LIST
187 CE2C 00                 DATA  :00

PAGE 04    DAI FIRMWARE CD8B-CF01  V1.0  Rev.1

188                 *
189 CE2D 3ACC               DBL   :CC3A     LIST
190 CE2F 01                 DATA  :01
191                 *
192 CE30 3ACC               DBL   :CC3A     LIST
193 CE32 0B                 DATA  :0B
194                 *
195 CE33 11CC               DBL   :CC11     SAVEA
196 CE35 1E                 DATA  :1E
197                 *
198 CE36 1ACC               DBL   :CC1A     LOADA
199 CE38 1E                 DATA  :1E
200                 *
201 CE39 56CD               DBL   :CD56     TALK
202 CE3B 04                 DATA  :04
203                 *
204 CE3C 3DCD               DBL   :CD3D     STEP
205 CE3E 00                 DATA  :00
206                 *
207 CE3F 45CD               DBL   :CD45     TRON
208 CE41 00                 DATA  :00
209                 *
210 CE42 4DCD               DBL   :CD4D     TROFF
211 CE44 00                 DATA  :00
212                 *
213                 *****************************
214                 * part of Run 'TALK' (CD6D) *
215                 *****************************
216                 *
217                 * Set frequencies of channels 0,1 or 2.
218                 *
219 CE45 5F         RTK60   MOV   E,A       Code in E (=lobyte
220                                         osc. addr)
221 CE46 16FC               MVI   D,:FC
222 CE48 7E                 MOV   A,M       Get 1st byte freq.code
223 CE49 12                 STAX  D         into osc.
224 CE4A 23                 INX   H
225 CE4B 7E                 MOV   A,M       Get 2nd byte freq.code
226 CE4C 12                 STAX  D         into osc.
227 CE4D C347EA             JMP   :EA47     (0) Handle next code
228                 *
229 CE50 FF                 DATA  :FF
230                 *
231                 ****************************
232                 * GET (M+1) IN E, ZERO M+1 *
233                 ****************************
234                 *
235                 * Part of EARRAY (CB5B).
236                 *
237                 * Entry: HL points to M.
238                 * Exit:  HL points to M+1. (M+1) in E.
239                 *        AFBCD preserved.
240                 *
241 CE51 23         MPT09   INX   H
242 CE52 5E                 MOV   E,M
243 CE53 3600               MVI   M,:00
244 CE55 C9                 RET 
245                 *
246                 ***************
247                 * STRING DATA *
248                 ***************
249                 *

PAGE 05    DAI FIRMWARE CD8B-CF01  V1.0  Rev.1

250 CE56 05         MSPACE  DATA  :05
251 CE57 53                 DATA  :53       S
252 CE58 50                 DATA  :50       P
253 CE59 41                 DATA  :41       A
254 CE5A 43                 DATA  :43       C
255 CE5B 45                 DATA  :45       E
256                 *
257                 ***************************
258                 * part of RUN DIM (0E639) *
259                 ***************************
260                 *
261 CE5C 2B         MPT41   DCX   H
262 CE5D C35BCB             JMP   :CB5B     Erase array if exists
263                 *
264                 **********************************
265                 * GET TABNUMBER IN L, DOUTC IN A *
266                 **********************************
267                 *
268                 * Part of Run 'TAB'.
269                 *
270 CE60 CD1DE7     MPT50   CALL  :E71D     (0) Get nr of tabs in A
271 CE63 6F                 MOV   L,A       save it in L
272 CE64 3A3101             LDA   :0131     Get output direction
273 CE67 C9                 RET 
274                 *
275                 ****************************************
276                 * PRINT EXPRESSION FOLLOWED BY A SPACE *
277                 ****************************************
278                 *
279                 * Entry SCHSP frequently used to print a space.
280                 *
281 CE68 CDA2EE     LC230   CALL  :EEA2     (0) Print expression
282 CE6B 3E20       SCHSP   MVI   A,:20
283 CE6D C360DD             JMP   :DD60     Print space
284                 *
285                 *************
286                 * PRINT ',' *
287                 *************
288                 *
289                 * Entry: None.
290                 * Exit:  FBCDEHL preserved.
291                 *
292 CE70 3E2C       SCHCO   MVI   A,:2C
293 CE72 C360DD             JMP   :DD60     Print ','
294                 *
295                 *********************************
296                 * PRINT A STRING BETWEEN SPACES *
297                 *********************************
298                 *
299                 * Entry: Pointer to stringpointer on stack.
300                 * Exit:  BC preserved. AFDEHL corrupted.
301                 *
302 CE75 CD6BCE     STXSS   CALL  :CE6B     Print space
303 CE78 E3         STXTS   XTHL            Get stringpntr from stack
304 CE79 5E                 MOV   E,M       ) Store addr string in DE
305 CE7A 23                 INX   H         )
306 CE7B 56                 MOV   D,M       )
307 CE7C 23                 INX   H         )
308 CE7D E3                 XTHL            Addr after pntr on stack
309 CE7E EB                 XCHG            Addr string in HL
310 CE7F CD32DB             CALL  :DB32     Print string pointed by HL
311 CE82 C36BCE             JMP   :CE6B     Print space

PAGE 06    DAI FIRMWARE CD8B-CF01  V1.0  Rev.1

312                 *
313                 *****************************
314                 * EDIT: PRINT TEXT COMPLETE *
315                 *****************************
316                 *
317 CE85 CD17EF     LC216   CALL  :EF17     (2) Print text complete
318 CE88 C338E1             JMP   :E138     (2) Popall, ret
319                 *
320                 ********************************
321                 * LIST ARRAY NAME - (not used) *
322                 ********************************
323                 *
324 CE8B D5         LC217   PUSH  D
325 CE8C CDF7EE             CALL  :EEF7     (0) List array name
326 CE8F D1                 POP   D
327 CE90 C9                 RET 
328                 *
329                 ****************
330                 * part of C6BA *
331                 ****************
332                 *
333 CE91 E5         LC196   PUSH  H
334 CE92 C32DE9             JMP   :E92D     (2) Now set up screen bits
335                                         for mode 1
336                 *
337                 **************
338                 * (not used) *
339                 **************
340                 *
341 CE95 3AA200     LC218   LDA   :00A2     Get startaddr edit buffer
342 CE98 C37CE9             JMP   :E97C     (0)
343                 *
344                 ***************************
345                 * CONVERT MACC FOR OUTPUT *
346                 ***************************
347                 *
348                 * The MACC contents is converted from FPT to ASCII.
349                 *
350                 * Exit: AF corrupted, BCDEHL preserved.
351                 *
352 CE9B CD21C0     FBCP    CALL  :C021     Convert FPT nr for output
353 CE9E C5                 PUSH  B
354 CE9F 0601               MVI   B,:01     Cannot trim last dec.place
355 CEA1 C365DB             JMP   :DB65     Tidy up into external form
356                 *
357                 *********************
358                 * LIST CURRENT LINE *
359                 *********************
360                 *
361                 * Lists a program line if trace flag set.
362                 * Part of CBF5.
363                 *
364 CEA4 0B         MPT06   DCX   B
365 CEA5 CD55DD             CALL  :DD55     Cursor to begin next line
366 CEA8 C3ABEC             JMP   :ECAB     (0) List current line
367                 *
368 CEAB D1         LC219   POP   D         (Not used)
369 CEAC C9                 RET 
370                 *
371                 ************************
372                 * part of SMKRM (CA01) *
373                 ************************

PAGE 07    DAI FIRMWARE CD8B-CF01  V1.0  Rev.1

374                 *
375 CEAD D1         MPT07   POP   D         Return, CY=1
376 CEAE F1                 POP   PSW
377 CEAF 37                 STC 
378 CEB0 C9                 RET 
379                 *
380 CEB1 F1         MPT08   POP   PSW       Return, CY=0
381 CEB2 37                 STC 
382 CEB3 3F                 CMC 
383 CEB4 C9                 RET 
384                 *
385                 **********************
386                 * CHANGE SCREEN MODE *
387                 **********************
388                 *
389                 * Part of Run 'MODE' (0E5BB).
390                 *
391                 * Entry: New mode in A.
392                 *
393 CEB5 EF         MPT40   RST   5         Change mode
394 CEB6 18                 DATA  :18
395 CEB7 DA10DA             JC    :DA10     If insufficient memory:
396                                         error 'OUT OF MEMORY'.
397 CEBA C9                 RET 
398                 *
399                 *****************************
400                 * part of RUN CLEAR (0E6B5) *
401                 *****************************
402                 *
403                 * Checks if more than 4 bytes are cleared.
404                 *
405                 * Entry: HL: Number of bytes to be cleared.
406                 *        F : flags on hibyte HL.
407                 *
408 CEBB 110400     MPT43   LXI   D,:0004   Must be at least 4 bytes
409 CEBE F414DE             CP    :DE14     Compare HL-DE if not >32k
410 CEC1 DA15DA             JC    :DA15     Run error 'NUMBER OUT
411                                         OF RANGE' if < 4.
412 CEC4 C9                 RET 
413                 *
414 CEC5 FF                 DATA  :FF
415                 *
416                 **********************************
417                 * SET HEAP SIZE TO DEFAULT VALUE *
418                 **********************************
419                 *
420                 * Part of emergency stop routine (CA25).
421                 * Also runs a NEW command.
422                 *
423 CEC6 210001     HRNEW   LXI   H,:0100
424 CEC9 229D02             SHLD  :029D     Store HEAP default value
425 CECC C3B5DE             JMP   :DEB5     Run 'NEW'
426                 *
427                 *************************************
428                 * RE-ORGANISE SCREEN AFTER 'DAI-PC' *
429                 *************************************
430                 *
431                 * Lines after 'DAI PERSONAL COMPUTER' are set in
432                 * unit colour mode.
433                 * Set line mode byte to 7F and first char.
434                 * byte to 20, colour 00 during screen init.
435                 *

PAGE 08    DAI FIRMWARE CD8B-CF01  V1.0  Rev.1

436                 * Entry: HL line mode byte of part. line.
437                 *
438 CECF 367F       MPT04   MVI   M,:7F     Wide char line contr byte
439 CED1 2B                 DCX   H
440 CED2 2B                 DCX   H
441 CED3 3620               MVI   M,:20     Load space
442 CED5 2B                 DCX   H
443 CED6 3600               MVI   M,:00     Colour no change
444 CED8 2B                 DCX   H
445 CED9 C9                 RET 
446                 *
447                 ****************************************
448                 * part of RUN 'WAIT(TIME)' (DFD5/DFF7) *
449                 ****************************************
450                 *
451 CEDA 0B         REX1D   DCX   B
452 CEDB C31DE7             JMP   :E71D     (0) Get value of argument
453                                         in A (max. FF)
454                 *
455                 ********************************************
456                 * EVALUATE ARGUMENTS IN NUMERIC EXPRESSION *
457                 ********************************************
458                 *
459                 * Not used.
460                 *
461 CEDE F5         LC231   PUSH  PSW
462 CEDF CD19E8             CALL  :E819     (0) Evaluate arguments
463 CEE2 F1                 POP   PSW
464 CEE3 C9                 RET 
465                 *
466                 ************************************
467                 * SELECT ROM BANK 0; PRINT MESSAGE *
468                 ************************************
469                 *
470                 * When CEE4 is called, the 2 bytes following
471                 * the CALL-instruction indicate the message to
472                 * be printed by the routine DAFF.
473                 *
474 CEE4 3A4000     SELB0   LDA   :0040     Get POROM
475 CEE7 E63F               ANI   :3F       Select ROM bank 0
476 CEE9 324000             STA   :0040     Set POROM
477 CEEC 3206FD             STA   :FD06     and PORO
478 CEEF C3FFDA             JMP   :DAFF     Print message
479                 *
480                 ****************************************
481                 * EDIT: RETURN FROM 'DELETE CHARACTER' *
482                 ****************************************
483                 *
484                 * Part of 2EFCC.
485                 *
486 CEF2 E1         LC232   POP   H
487 CEF3 CD30E3             CALL  :E330     (2) Put cursor on screen
488 CEF6 C395EF             JMP   :EF95     (2) Popall, ret, Cy=1
489                 *
490                 *****************************************
491                 * PRINT 'COMPUTER' UNDER 'DAI PERSONAL' *
492                 *****************************************
493                 *
494                 * Part of RESET (C751).
495                 * During screen initialisation used to set a
496                 * new line mode byte between both parts of the
497                 * message. Line colour bytes are set for medium

PAGE 09    DAI FIRMWARE CD8B-CF01  V1.0  Rev.1

498                 * resolution.
499                 *
500                 * Entry: HL: line mode byte to be changed.
501                 *        DE: offset for calculation next
502                 *            line mode byte.
503                 * Exit:  HL: next line mode byte.
504                 *
505 CEF9 365F       MPT03   MVI   M,:5F     Set line mode byte
506 CEFB 2B                 DCX   H
507 CEFC 3640               MVI   M,:40     Set line colour byte
508 CEFE 23                 INX   H
509 CEFF 19                 DAD   D         Addr. next line mode byte
510 CF00 C9                 RET 
511                 *
512 CF01 FF                 DATA  :FF
513                 *
514                 *
515                 *
516 CF02                    END 
 
***************************
* S Y M B O L   T A B L E *
***************************
 
CDTAB  CD8B   FBCP   CE9B   HRNEW  CEC6   LC196  CE91   
LC216  CE85   LC217  CE8B   LC218  CE95   LC219  CEAB   
LC230  CE68   LC231  CEDE   LC232  CEF2   MPT03  CEF9   
MPT04  CECF   MPT06  CEA4   MPT07  CEAD   MPT08  CEB1   
MPT09  CE51   MPT40  CEB5   MPT41  CE5C   MPT43  CEBB   
MPT50  CE60   MSPACE CE56   REX1D  CEDA   RTK60  CE45   
SCHCO  CE70   SCHSP  CE6B   SELB0  CEE4   STXSS  CE75   
STXTS  CE78
