-
Notifications
You must be signed in to change notification settings - Fork 14
/
ECBTAB.SA
565 lines (520 loc) · 12 KB
/
ECBTAB.SA
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
NAM ECBTAB - Tables for ECB / MLC
**********************************************************************
* *
* Copyright 1982 by Microsoft Corporation, all rights reserved *
* *
**********************************************************************
TTL External Declarations
XREF ZBITIN,ZCASOF,ZCASON,ZCBIN,ZCBLIN,ZCBOUT,ZCSRDO,ZHRDIN
XREF ZINHST,ZJOYIN,ZLPTOU,ZOUTHS,ZPOLCA,ZSCROU,ZSFTIN,ZSTBAU
XREF ZWRTLD
TTL I/O Jump Table
XDEF HRDINI
HRDINI JMP ZHRDIN Hardware initialization.
XDEF SFTINI
SFTINI JMP ZSFTIN Software initialization.
XDEF POLCAT
POLCAT JMP ZPOLCA Poll the keyboard.
XDEF CBLINK
CBLINK JMP ZCBLIN Blink the cursor.
XDEF SCROUT
SCROUT JMP ZSCROU Output char to screen.
XDEF LPTOUT
LPTOUT JMP ZLPTOU Output char to printer.
XDEF JOYIN
JOYIN JMP ZJOYIN Input joystick coordinates.
XDEF CASON
CASON JMP ZCASON Turn on the cassette motor.
XDEF CASOFF
CASOFF JMP ZCASOF Turn off the cassette motor.
XDEF WRTLDR
WRTLDR JMP ZWRTLD Turn on cassette and write leader.
XDEF CBOUT
CBOUT JMP ZCBOUT Output byte to cassette.
XDEF CSRDON
CSRDON JMP ZCSRDO Turn on cassette and sync up for
* reading.
XDEF CBIN
CBIN JMP ZCBIN Read a byte from cassette.
XDEF BITIN
BITIN JMP ZBITIN Read a bit from cassette.
XDEF INHST
INHST JMP ZINHST Read a byte from the host.
XDEF OUTHST
OUTHST JMP ZOUTHS Send a byte to the host.
XDEF STBAUD
STBAUD JMP ZSTBAU Set the baud rate.
TTL "Normal" (non-function) Reserved Word Table
Q SET &128-&1
XDEF RESLST
RESLST DCI FO,R
XDEF FORTK
FORTK EQU Q
FSTATK EQU Q The first statement token.
DCI G,O
XDEF GOTK
GOTK EQU Q
DCI RE,M
XDEF REMTK
REMTK EQU Q
DCIONE '
XDEF SNGQTK
SNGQTK EQU Q
DCI ELS,E
XDEF ELSETK
ELSETK EQU Q
DCI I,F
XDEF IFTK
IFTK EQU Q
DCI DAT,A
XDEF DATATK
DATATK EQU Q
DCI PRIN,T
XDEF PRINTK
PRINTK EQU Q
DCI O,N
XDEF ONTK
ONTK EQU Q
DCI INPU,T
XDEF INPUTK
INPUTK EQU Q
DCI EN,D
DCI NEX,T
DCI DI,M
DCI REA,D
DCI LE,T
DCI RU,N
DCI RESTOR,E
DCI RETUR,N
DCI STO,P
DCI POK,E
DCI CON,T
DCI LIS,T
DCI CLEA,R
XDEF CLEATK
CLEATK EQU Q
DCI NE,W
DCI DE,F
IFNE WAITSW
ENDC IFE WAITSW
DCI CLOA,D
XDEF CLOATK
CLOATK EQU Q
DCI CSAV,E
XDEF CSAVTK
CSAVTK EQU Q
DCI OPE,N
DCI CLOS,E
DCI LLIS,T
DCI SE,T
DCI RESE,T
DCI CL,S
DCI MOTO,R
DCI SOUN,D
DCI AUDI,O
DCI EXE,C
XDEF EXECTK
EXECTK EQU Q
DCI SKIP,F
DCI DE,L
DCI EDI,T
DCI TRO,N
DCI TROF,F
DCI LIN,E
DCI PCL,S
DCI PSE,T
XDEF PSETTK
PSETTK EQU Q
DCI PRESE,T
XDEF PRESTK
PRESTK EQU Q
DCI SCREE,N
DCI PCLEA,R
XDEF PCLETK
PCLETK EQU Q
DCI COLO,R
DCI CIRCL,E
DCI PAIN,T
DCI GE,T
DCI PU,T
DCI DRA,W
DCI PCOP,Y
DCI PMOD,E
XDEF PMODTK
PMODTK EQU Q
DCI PLA,Y
DCI DLOA,D
XDEF DLOATK
DLOATK EQU Q
DCI RENU,M
IFEQ REALIO
ENDC IFE REALIO
XDEF LSTATK
LSTATK EQU Q The last statement token.
FCC /TAB/
FCB '(+&128
Q SET Q+&1
XDEF TABTK
TABTK EQU Q
DCI T,O
XDEF TOTK
TOTK EQU Q
DCI SU,B
XDEF SUBTK
SUBTK EQU Q
DCI F,N
XDEF FNTK
FNTK EQU Q
IFNE SPCSW
ENDC IFN SPCSW
DCI THE,N
XDEF THENTK
THENTK EQU Q
DCI NO,T
XDEF NOTTK
NOTTK EQU Q
DCI STE,P
XDEF STEPTK
STEPTK EQU Q
DCI OF,F
XDEF OFFTK
OFFTK EQU Q
DCIONE +
XDEF PLUSTK
PLUSTK EQU Q
DCIONE -
XDEF MINUTK
MINUTK EQU Q
DCIONE *
XDEF MULTK
MULTK EQU Q
DCIONE /
DCIONE ^
DCI AN,D
XDEF ANDTK
ANDTK EQU Q
DCI O,R
XDEF ORTK
ORTK EQU Q
FCB &190 A GREATER THAN SIGN
Q SET Q+&1
XDEF GREATK
GREATK EQU Q
DCIONE =
XDEF EQULTK
EQULTK EQU Q
FCB &188
Q SET Q+&1 A LESS THAN SIGN
XDEF LESSTK
LESSTK EQU Q
DCI USIN,G
XDEF USINTK
USINTK EQU Q
XDEF LNRMTK
LNRMTK EQU Q Last "normal" token.
XDEF NNRMTK
NNRMTK EQU Q-&127 How many normal tokens.
TTL Statement Dispatch Table
XDEF STMDSP
STMDSP FDBEXT FOR
FDBEXT GO
FDBEXT REM The actual REM handier.
FDB REM Handle single quote same as REM.
FDB REM Handle ELSE same as REM.
FDBEXT IF
FDBEXT DATA
FDBEXT PRINT
FDBEXT ONGOTO
FDBEXT INPUT
FDBEXT END
FDBEXT NEXT
FDBEXT DIM
FDBEXT READ
FDBEXT LET
FDBEXT RUN
FDBEXT RESTOR
FDBEXT RETURN
FDBEXT STOP
FDBEXT POKE
FDBEXT CONT
FDBEXT LIST
FDBEXT CLEAR
FDBEXT SCRATH
FDBEXT DEF
IFNE WAITSW
ENDC IFN WAITSW
FDBEXT CLOAD
FDBEXT CSAVE
FDBEXT OPEN
FDBEXT CLOSE
FDBEXT LLIST
FDBEXT SET
FDBEXT RESET
FDBEXT CLS
FDBEXT MOTOR
FDBEXT SOUND
FDBEXT AUDIO
FDBEXT EXEC
FDBEXT SKIPF
FDBEXT DELETE
FDBEXT EDIT
FDBEXT TRON
FDBEXT TROFF
FDBEXT LINE
FDBEXT PCLS
FDBEXT PSET
FDBEXT PRESET
FDBEXT SCREEN
FDBEXT PCLEAR
FDBEXT COLORS
FDBEXT CIRCLE
FDBEXT PAINT
FDBEXT GET
FDBEXT PUT
FDBEXT DRAW
FDBEXT PCOPY
FDBEXT PMODE
FDBEXT PLAY
FDBEXT DLOAD
FDBEXT RENUM
IFEQ REALIO
ENDC IFE REALIO
TTL Function Reserved Word List
Q SET &128-&1
XDEF FUNLST
FUNLST DCI SG,N
CLASS0 EQU Q The first class 0 function token.
DCI IN,T
DCI AB,S
IFNE FRESW
ENDC IFN FRESW
DCI PO,S
DCI RN,D
DCI SQ,R
DCI LO,G
DCI EX,P
DCI SI,N
DCI CO,S
DCI TA,N
DCI AT,N
DCI PEE,K
XDEF PEEKTK
PEEKTK EQU Q
DCI LE,N
DCI STR,$
DCI VA,L
DCI AS,C
DCI CHR,$
DCI EO,F
DCI JOYST,K
DCI FI,X
DCI HEX,$
XDEF CLASS1
CLASS1 EQU Q+&1 The first class 1 function token.
XDEF TCLAS1
TCLAS1 EQU (2*CLASS1)!.&255
DCI LEFT,$
DCI RIGHT,$
DCI MID,$
XDEF MID$TK
MID$TK EQU Q
XDEF CLASS2
CLASS2 EQU Q+&1 The first class 2 function token.
XDEF TCLAS2
TCLAS2 EQU (2*CLASS2)!.&255
DCI POIN,T
XDEF CLASS3
CLASS3 EQU Q+&1 The first class 3 function token.
XDEF TCLAS3
TCLAS3 EQU (2*CLASS3)!.&255
DCI INKEY,$
IFNE MEMSW
DCI ME,M
ENDC IFN MEMSW
DCI VARPT,R
DCI INST,R
IFNE TODCLK
ENDC IFN TODCLK
IFEQ TODCLK
DCI TIME,R
ENDC IFE TODCLK
XDEF TIMETK
TIMETK EQU Q
DCI PPOIN,T
DCI STRING,$
DCI US,R
XDEF USRTK
USRTK EQU Q
XDEF LFUNTK
LFUNTK EQU Q The last function token.
XDEF TLFNTK
TLFNTK EQU (2*LFUNTK)!.&255
XDEF NFUNTK
NFUNTK EQU Q-&127 How many function tokens.
TTL Function Dispatcn Table
XDEF FUNDSP
FUNDSP FDBEXT SGN
FDBEXT INT
FDBEXT ABS
IFNE FRESW
ENDC IFN FRESW
FDBEXT POS
FDBEXT RND
FDBEXT SQR
FDBEXT LOG
FDBEXT EXP
FDBEXT SIN
FDBEXT COS
FDBEXT TAN
FDBEXT ATN
FDBEXT PEEK
FDBEXT LEN
FDBEXT STR$
FDBEXT VAL
FDBEXT ASC
FDBEXT CHR$
FDBEXT EOF
FDBEXT JOYSTK
FDBEXT FIX
FDBEXT HEX$
FDBEXT LEFT$
FDBEXT RIGHT$
FDBEXT MID$
FDBEXT POINT
FDBEXT INKEY$
IFNE MEMSW
FDBEXT MEM
ENDC IFN MEMSW
FDBEXT VARPTR
FDBEXT INSTR
IFNE TODCLK
ENDC IFN TODCLK
IFEQ TODCLK
FDBEXT TIMER
ENDC IFE TODCLK
FDBEXT PPOINT
FDBEXT STRNG$
FDBEXT USRFN
TTL Operator Table
XDEF OPTAB
OPTAB FCB &121
FDBEXT FADDT
FCB &121
FDBEXT FSUBT
FCB &123
FDBEXT FMULTT
FCB &123
FDBEXT FDIVT
FCB &127
FDBEXT FPWRT
FCB &80
FDBEXT ANDOP
FCB &70
FDBEXT OROP
TTL Error Texts
Q SET -&2
XDEF ERRTAB
ERRTAB DCE NF
XDEF ERRNF
ERRNF EQU Q NEXT WITHOUT FOR.
DCE SN
XDEF ERRSN
ERRSN EQU Q SYNTAX ERROR.
DCE RG
XDEF ERRRG
ERRRG EQU Q RETURN WITHOUT GOSUB.
DCE OD
XDEF ERROD
ERROD EQU Q OUT OF DATA.
DCE FC
XDEF ERRFC
ERRFC EQU Q ILLEGAL FUNCTION CALL.
DCE OV
XDEF ERROV
ERROV EQU Q OVERFLOW.
DCE OM
XDEF ERROM
ERROM EQU Q OUT OF MEMORY.
DCE UL
XDEF ERRUL
ERRUL EQU Q UNDEFINED LINE.
DCE BS
XDEF ERRBS
ERRBS EQU Q SUBSCRIPT OUT OF RANGE.
DCE DD
XDEF ERRDD
ERRDD EQU Q REDIMENSIONED ARRAY.
DCE /0
XDEF ERRDVO
ERRDVO EQU Q DIVISION BY ZERO.
DCE ID
XDEF ERRID
ERRID EQU Q ILLEGAL DIRECT.
DCE TM
XDEF ERRTM
ERRTM EQU Q TYPE MISMATCH.
DCE OS
XDEF ERRSO
ERRSO EQU Q OUT OF STRING SPACE.
DCE LS
XDEF ERRLS
ERRLS EQU Q STRING TOO LONG.
DCE ST
XDEF ERRST
ERRST EQU Q STRING FORMULA TOO COMPLEX.
DCE CN
XDEF ERRCN
ERRCN EQU Q CAN'T CONTINUE.
DCE UF
XDEF ERRUF
ERRUF EQU Q UNDEFINED USER FUNCTION.
DCE FD
XDEF ERRFD
ERRFD EQU Q Bad File Data
DCE AO
XDEF ERRAO
ERRAO EQU Q Already Open.
DCE DN
XDEF ERRDN
ERRDN EQU Q Device Number.
DCE IO
XDEF ERRIO
ERRIO EQU Q Input/Output error.
DCE FM
XDEF ERRBM
ERRBM EQU Q Bad File Mode.
DCE NO
XDEF ERRNO
ERRNO EQU Q Device Not Open.
DCE IE
XDEF ERRIE
ERRIE EQU Q Input past End.
DCE DS
XDEF ERRDS
ERRDS EQU Q Direct Statement in file.
DCE NE
XDEF ERRNE
ERRNE EQU Q Non Exisitent file.
LERRNM EQU Q Last error number used.
*
* NEEDED FOR MESSAGES IN ALL VERSIONS.
*
XDEF ERR
ERR FCC / ERROR/
FCB &0
XDEF INTXT
INTXT FCC / IN /
FCB &0
ACRLF This precedes REDDY for those who
* want to force a carriage return
* before printing "OK". The binary
* CLOAD code does this.
XDEF REDDY
REDDY FCC /OK/
ACRLF
FCB &0
XDEF BRKTXT
BRKTXT ACRLF
FCC /BREAK/
FCB &0
END