summaryrefslogtreecommitdiffstats
path: root/include/dl150/wristapp.i
blob: f2ead43135b22092a85fd0f17f92a6d432a2b6c4 (plain)
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
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
;
; Wristapp.i - For the Datalink 150
; Copyright (c) 1997 by John A. Toebes, VIII.  All Rights Reserved.
;
DISP_ROW        EQU     $1d     ; Hardware register to select which row of the display is to be written to.  You need to
                                ;    Combine this with setting DISP_COL to cause the segment to change
DISP_COL        EQU     $1e     ; Hardware register to select which col of the display is to be written to.  You must set
                                ;    DISP_ROW first to cause the segment to change
; It turns out that the segments on the display are readily accessible.  You can turn on/off any segment
; pretty easily.
;
; The top and middle lines are a series of segments which can be individually turned on to
; achieve the different letters.  I assign the segments as follows:
;      A
;    _____
;   |     |
; F |  |H | B
;   |  |  |
;    ---G-  
;   |  |  |
; E |  |I | C
;   |_____|
;      D
;
; Numbering the digits on the line from left to right we would get
;
;
;    1A         2A          3A         4A          5A         6A    
;   _____      _____       _____      _____       _____      _____  
; 1|     |1  2|     |2   3|     |3  4|     |4   5|     |5  6|     |6
; F|  |1 |B  F|  |2 |B   F|  |3 |B  F|  |4 |B   F|  |5 |B  F|  |6 |B
;  |  |H |    |  |H | D23 |  |H | D34|  |H | D45 |  |H |    |  |H | 
;   --1G-      --2G-  ---  --3G-  --  --4G-  ---  --5G-      --6G-  
; 1|  |1 |1  2|  |2 |2   3|  |3 |3  4|  |4 |4   5|  |5 |5  6|  |6 |6
; E|  |I |C  E|  |I |C   E|  |I |C  E|  |I |C   E|  |I |C  E|  |I |C
;  |_____|    |_____|  .  |_____|    |_____|  .  |_____|    |_____| 
;    1D         2D    P23   3D         4D    P45   5D         6D    
;
;  AM      PM       Remind               Night      Alarm     Note
; 
;
;    1A         2A          3A         4A          5A         6A    
;   _____      _____  C23  _____      _____       _____      _____  
; 1|     |1  2|     |2 o 3|     |3  4|     |4   5|     |5  6|     |6
; F|  |1 |B  F|  |2 |B   F|  |3 |B  F|  |4 |B   F|  |5 |B  F|  |6 |B
;  |  |H |    |  |H | D23 |  |H |    |  |H | D45 |  |H |    |  |H | 
;   --1G-      --2G-  ---  --3G-      --4G-  ---  --5G-      --6G-  
; 1|  |1 |1  2|  |2 |2   3|  |3 |3  4|  |4 |4   5|  |5 |5  6|  |6 |6
; E|  |I |C  E|  |I |C o E|  |I |C  E|  |I |C   E|  |I |C  E|  |I |C
;  |_____|    |_____|  .  |_____|    |_____|  .  |_____|    |_____| 
;    1D         2D    P23   3D         4D    P45   5D         6D    
;
; Note the two dashes between segments 2&3 and 4&5.  For convenience, I refer to these
; as D23 and D45 or DASH23 and DASH45 respectively.
; I prefix all of the items on the first row with a T and those on the middle row with a M.
;
; Pixels on the bottom line are addressed a little differently.  For these, we have 8 5x5 sets of
; segments.  We can reference them as follows:
;
;  S1       S2      S3      S4      S5      S6      S7      S8
; 12345   12345   12345   12345   12345   12345   12345   12345 
; *****A  *****A  *****A  *****A  *****A  *****A  *****A  *****A
; *****B  *****B  *****B  *****B  *****B  *****B  *****B  *****B
; *****C  *****C  *****C  *****C  *****C  *****C  *****C  *****C
; *****D  *****D  *****D  *****D  *****D  *****D  *****D  *****D
; *****E  *****E  *****E  *****E  *****E  *****E  *****E  *****E
;
; Hence, the lower right pixel is referenced as S8E5
;

; Value  Bit0   Bit1   Bit2   Bit3   Bit4   
; ------ ------ ------ ------ ------ ------
;  00    <none> <none> <none> <none> <none> 
;  02    S8E1   S8D1   S8A1   S8B1   S8C1   
;  04    S8E2   S8D2   S8A2   S8B2   S8C2   
;  06    S8E3   S8D3   S8A3   S8B3   S8C3   
;  08    S8E4   S8D4   S8A4   S8B4   S8C4   
;  0A    S8E5   S8D5   S8A5   S8B5   S8C5   
;  0C    <none> <none> <none> <none> <none> 
;  0E    T6C    T6B    M6C    M6B    Note   
;  10    T6D    T6G    T6A    <none> M6A    
;  12    T6I    T6H    M6I    M6G    M6H    
;  14    T6E    T6F    M6D    M6E    M6F    
;  16    <none> <none> <none> <none> <none> 
;  18    <none> <none> <none> <none> <none> 
;  1A    <none> <none> <none> <none> <none> 
;  1C    T5C    T5B    M5C    M5B    Alarm  
;  1E    T5D    T5G    T5A    <none> M5A    
;  20    T5I    T5H    M5I    M5G    M5H    
;  22    T5E    T5F    M5D    M5E    M5F    
;  24    TP45   TD45   MP45   MD45   <none> 
;  26    T4C    T4B    M4C    M4B    Night  
;  28    T4D    T4G    T4A    <none> M4A    
;  2A    T4I    T4H    M4I    M4G    M4H    
;  2C    T4E    T4F    M4D    M4E    M4F    
;  2E    T3C    T3B    M3C    M3B    TD34   
;  30    T3D    T3G    T3A    <none> M3A    
;  32    T3I    T3H    M3I    M3G    M3H    
;  34    T3E    T3F    M3D    M3E    M3F    
;  36    TP23   TD23   MP23   MC23   <none> 
;  38    T2C    T2B    M2C    M2B    Remind 
;  3A    T2D    T2G    T2A    <none> M2A    
;  3C    T2I    T2H    M2I    M2G    M2H    
;  3E    T2E    T2F    M2D    M2E    M2F    
;  40    T1C    T1B    M1C    M1B    PM     
;  42    T1D    T1G    T1A    <none> M1A    
;  44    T1I    T1H    M1I    M1G    M1H    
;  46    T1E    T1F    M1D    M1E    M1F    
;  48    <none> <none> <none> <none> AM     
;
; For the ODD Bits, we have:
;
; Value  Bit0   Bit1   Bit2   Bit3   Bit4   
; ------ ------ ------ ------ ------ ------
;  01    S7D5   S7E5   S7A5   S7B5   S7C5   
;  03    S7D4   S7E4   S7A4   S7B4   S7C4   
;  05    S7D3   S7E3   S7A3   S7B3   S7C3   
;  07    S7D2   S7E2   S7A2   S7B2   S7C2   
;  09    S7D1   S7E1   S7A1   S7B1   S7C1   
;  0B    S6D5   S6E5   S6A5   S6B5   S6C5   
;  0D    S6D4   S6E4   S6A4   S6B4   S6C4   
;  0F    S6D3   S6E3   S6A3   S6B3   S6C3   
;  11    S6D2   S6E2   S6A2   S6B2   S6C2   
;  13    S6D1   S6E1   S6A1   S6B1   S6C1   
;  15    S5D5   S5E5   S5A5   S5B5   S5C5   
;  17    S5D4   S5E4   S5A4   S5B4   S5C4   
;  19    S5D3   S5E3   S5A3   S5B3   S5C3   
;  1B    S5D2   S5E2   S5A2   S5B2   S5C2   
;  1D    S5D1   S5E1   S5A1   S5B1   S5C1   
;  1F    S4D5   S4E5   S4A5   S4B5   S4C5   
;  21    S4D4   S4E4   S4A4   S4B4   S4C4   
;  23    S4D3   S4E3   S4A3   S4B3   S4C3   
;  25    S4D2   S4E2   S4A2   S4B2   S4C2   
;  27    S4D1   S4E1   S4A1   S4B1   S4C1   
;  29    <none> <none> <none> <none> <none> 
;  2B    S3D5   S3E5   S3A5   S3B5   S3C5   
;  2D    S3D4   S3E4   S3A4   S3B4   S3C4   
;  2F    S3D3   S3E3   S3A3   S3B3   S3C3   
;  31    S3D2   S3E2   S3A2   S3B2   S3C2   
;  33    S3D1   S3E1   S3A1   S3B1   S3C1   
;  35    S2D5   S2E5   S2A5   S2B5   S2C5   
;  37    S2D4   S2E4   S2A4   S2B4   S2C4   
;  39    S2D3   S2E3   S2A3   S2B3   S2C3   
;  3B    S2D2   S2E2   S2A2   S2B2   S2C2   
;  3D    S2D1   S2E1   S2A1   S2B1   S2C1   
;  3F    S1D5   S1E5   S1A5   S1B5   S1C5   
;  41    S1D4   S1E4   S1A4   S1B4   S1C4   
;  43    S1D3   S1E3   S1A3   S1B3   S1C3   
;  45    S1D2   S1E2   S1A2   S1B2   S1C2   
;  47    S1D1   S1E1   S1A1   S1B1   S1C1   
;  
;
; Of course if you want to look it from the orientation of the segments on the display,
; you can use this information.  To make it more compact, I used the notation
;      bit:Value
; where value is what you store in $1D and Bit is which bit to set/clear in $1E to get the effect
;
; T1A=2:42  T2A=2:3A  T3A=2:30  T4A=2:28  T5A=2:1E  T6A=2:10  
; T1B=1:40  T2B=1:38  T3B=1:2E  T4B=1:26  T5B=1:1c  T6B=1:0e  
; T1C=0:40  T2C=0:38  T3C=0:2E  T4C=0:26  T5C=0:1c  T6C=0:0e  
; T1D=0:42  T2D=0:3A  T3D=0:30  T4D=0:28  T5D=0:1e  T6D=0:10  
; T1E=0:46  T2E=0:3E  T3E=0:34  T4E=0:2C  T5E=0:22  T6E=0:14  
; T1F=1:46  T2F=1:3E  T3F=1:34  T4F=1:2C  T5F=1:22  T6F=1:14  
; T1G=1:42  T2G=1:3A  T3G=1:30  T4G=1:28  T5G=1:1E  T6G=1:10  
; T1H=1:44  T2H=1:3C  T3H=1:32  T4H=1:2A  T5H=1:20  T6H=1:12  
; T1I=0:44  T2I=0:3C  T3I=0:32  T4I=0:2A  T5I=0:20  T6I=0:12  
;
; TP23=0:36
; TD23=1:36
; TD34=4:2E
; TD45=1:24
; TP45=0:24
;
; M1A=4:42  M2A=4:3A  M3A=4:30  M4A=4:28  M5A=4:1E  M6A=4:10  
; M1B=3:40  M2B=3:38  M3B=3:2E  M4B=3:26  M5B=3:1C  M6B=3:0E  
; M1C=2:40  M2C=2:38  M3C=2:2E  M4C=2:26  M5C=2:1C  M6C=2:0E  
; M1D=2:46  M2D=2:3E  M3D=2:34  M4D=2:2C  M5D=2:22  M6D=2:14  
; M1E=3:46  M2E=3:3E  M3E=3:34  M4E=3:2C  M5E=3:22  M6E=3:14  
; M1F=4:46  M2F=4:3E  M3F=4:34  M4F=4:2C  M5F=4:22  M6F=4:14  
; M1G=3:44  M2G=3:3C  M3G=3:32  M4G=3:2A  M5G=3:20  M6G=3:12  
; M1H=4:44  M2H=4:3C  M3H=4:32  M4H=4:2A  M5H=4:20  M6H=4:12  
; M1I=2:44  M2I=2:3C  M3I=2:32  M4I=2:2A  M5I=2:20  M6I=2:12  
;
; MC23=3:36
; MP23=2:36
; MD45=3:24
; MP45=2:24
;
; AM=4:48
; PM=4:40
; Remind=4:38
; Night=4:26
; Alarm=4:1C
; Note=4:0e

COL_T1A EQU     2
ROW_T1A EQU     $42  
COL_T2A EQU     2
ROW_T2A EQU     $3A  
COL_T3A EQU     2
ROW_T3A EQU     $30  
COL_T4A EQU     2
ROW_T4A EQU     $28  
COL_T5A EQU     2
ROW_T5A EQU     $1E  
COL_T6A EQU     2
ROW_T6A EQU     $10  
; 
COL_T1B EQU     1
ROW_T1B EQU     $40  
COL_T2B EQU     1
ROW_T2B EQU     $38  
COL_T3B EQU     1
ROW_T3B EQU     $2E  
COL_T4B EQU     1
ROW_T4B EQU     $26  
COL_T5B EQU     1
ROW_T5B EQU     $1c  
COL_T6B EQU     1
ROW_T6B EQU     $0e  
; 
COL_T1C EQU     0
ROW_T1C EQU     $40  
COL_T2C EQU     0
ROW_T2C EQU     $38  
COL_T3C EQU     0
ROW_T3C EQU     $2E  
COL_T4C EQU     0
ROW_T4C EQU     $26  
COL_T5C EQU     0
ROW_T5C EQU     $1c  
COL_T6C EQU     0
ROW_T6C EQU     $0e  
; 
COL_T1D EQU     0
ROW_T1D EQU     $42  
COL_T2D EQU     0
ROW_T2D EQU     $3A  
COL_T3D EQU     0
ROW_T3D EQU     $30  
COL_T4D EQU     0
ROW_T4D EQU     $28  
COL_T5D EQU     0
ROW_T5D EQU     $1e  
COL_T6D EQU     0
ROW_T6D EQU     $10  
; 
COL_T1E EQU     0
ROW_T1E EQU     $46  
COL_T2E EQU     0
ROW_T2E EQU     $3E  
COL_T3E EQU     0
ROW_T3E EQU     $34  
COL_T4E EQU     0
ROW_T4E EQU     $2C  
COL_T5E EQU     0
ROW_T5E EQU     $22  
COL_T6E EQU     0
ROW_T6E EQU     $14  
; 
COL_T1F EQU     1
ROW_T1F EQU     $46  
COL_T2F EQU     1
ROW_T2F EQU     $3E  
COL_T3F EQU     1
ROW_T3F EQU     $34  
COL_T4F EQU     1
ROW_T4F EQU     $2C  
COL_T5F EQU     1
ROW_T5F EQU     $22  
COL_T6F EQU     1
ROW_T6F EQU     $14  
; 
COL_T1G EQU     1
ROW_T1G EQU     $42  
COL_T2G EQU     1
ROW_T2G EQU     $3A  
COL_T3G EQU     1
ROW_T3G EQU     $30  
COL_T4G EQU     1
ROW_T4G EQU     $28  
COL_T5G EQU     1
ROW_T5G EQU     $1E  
COL_T6G EQU     1
ROW_T6G EQU     $10  
; 
COL_T1H EQU     1
ROW_T1H EQU     $44  
COL_T2H EQU     1
ROW_T2H EQU     $3C  
COL_T3H EQU     1
ROW_T3H EQU     $32  
COL_T4H EQU     1
ROW_T4H EQU     $2A  
COL_T5H EQU     1
ROW_T5H EQU     $20  
COL_T6H EQU     1
ROW_T6H EQU     $12  
; 
COL_T1I EQU     0
ROW_T1I EQU     $44  
COL_T2I EQU     0
ROW_T2I EQU     $3C  
COL_T3I EQU     0
ROW_T3I EQU     $32  
COL_T4I EQU     0
ROW_T4I EQU     $2A  
COL_T5I EQU     0
ROW_T5I EQU     $20  
COL_T6I EQU     0
ROW_T6I EQU     $12  
; 
;
COL_TP23        EQU     0
ROW_TP23        EQU     $36
; 
COL_TD23        EQU     1
ROW_TD23        EQU     $36
; 
COL_TD34        EQU     4
ROW_TD34        EQU     $2E
; 
COL_TD45        EQU     1
ROW_TD45        EQU     $24
; 
COL_TP45        EQU     0
ROW_TP45        EQU     $24
; 
;
COL_M1A EQU     4
ROW_M1A EQU     $42  
COL_M2A EQU     4
ROW_M2A EQU     $3A  
COL_M3A EQU     4
ROW_M3A EQU     $30  
COL_M4A EQU     4
ROW_M4A EQU     $28  
COL_M5A EQU     4
ROW_M5A EQU     $1E  
COL_M6A EQU     4
ROW_M6A EQU     $10  
; 
COL_M1B EQU     3
ROW_M1B EQU     $40  
COL_M2B EQU     3
ROW_M2B EQU     $38  
COL_M3B EQU     3
ROW_M3B EQU     $2E  
COL_M4B EQU     3
ROW_M4B EQU     $26  
COL_M5B EQU     3
ROW_M5B EQU     $1C  
COL_M6B EQU     3
ROW_M6B EQU     $0E  
; 
COL_M1C EQU     2
ROW_M1C EQU     $40  
COL_M2C EQU     2
ROW_M2C EQU     $38  
COL_M3C EQU     2
ROW_M3C EQU     $2E  
COL_M4C EQU     2
ROW_M4C EQU     $26  
COL_M5C EQU     2
ROW_M5C EQU     $1C  
COL_M6C EQU     2
ROW_M6C EQU     $0E  
; 
COL_M1D EQU     2
ROW_M1D EQU     $46  
COL_M2D EQU     2
ROW_M2D EQU     $3E  
COL_M3D EQU     2
ROW_M3D EQU     $34  
COL_M4D EQU     2
ROW_M4D EQU     $2C  
COL_M5D EQU     2
ROW_M5D EQU     $22  
COL_M6D EQU     2
ROW_M6D EQU     $14  
; 
COL_M1E EQU     3
ROW_M1E EQU     $46  
COL_M2E EQU     3
ROW_M2E EQU     $3E  
COL_M3E EQU     3
ROW_M3E EQU     $34  
COL_M4E EQU     3
ROW_M4E EQU     $2C  
COL_M5E EQU     3
ROW_M5E EQU     $22  
COL_M6E EQU     3
ROW_M6E EQU     $14  
; 
COL_M1F EQU     4
ROW_M1F EQU     $46  
COL_M2F EQU     4
ROW_M2F EQU     $3E  
COL_M3F EQU     4
ROW_M3F EQU     $34  
COL_M4F EQU     4
ROW_M4F EQU     $2C  
COL_M5F EQU     4
ROW_M5F EQU     $22  
COL_M6F EQU     4
ROW_M6F EQU     $14  
; 
COL_M1G EQU     3
ROW_M1G EQU     $44  
COL_M2G EQU     3
ROW_M2G EQU     $3C  
COL_M3G EQU     3
ROW_M3G EQU     $32  
COL_M4G EQU     3
ROW_M4G EQU     $2A  
COL_M5G EQU     3
ROW_M5G EQU     $20  
COL_M6G EQU     3
ROW_M6G EQU     $12  
; 
COL_M1H EQU     4
ROW_M1H EQU     $44  
COL_M2H EQU     4
ROW_M2H EQU     $3C  
COL_M3H EQU     4
ROW_M3H EQU     $32  
COL_M4H EQU     4
ROW_M4H EQU     $2A  
COL_M5H EQU     4
ROW_M5H EQU     $20  
COL_M6H EQU     4
ROW_M6H EQU     $12  
; 
COL_M1I EQU     2
ROW_M1I EQU     $44  
COL_M2I EQU     2
ROW_M2I EQU     $3C  
COL_M3I EQU     2
ROW_M3I EQU     $32  
COL_M4I EQU     2
ROW_M4I EQU     $2A  
COL_M5I EQU     2
ROW_M5I EQU     $20  
COL_M6I EQU     2
ROW_M6I EQU     $12  
; 
;
COL_MC23        EQU     3
ROW_MC23        EQU     $36
; 
COL_MP23        EQU     2
ROW_MP23        EQU     $36
; 
COL_MD45        EQU     3
ROW_MD45        EQU     $24
; 
COL_MP45        EQU     2
ROW_MP45        EQU     $24
; 
;
COL_AM  EQU     4
ROW_AM  EQU     $48
; 
COL_PM  EQU     4
ROW_PM  EQU     $40
; 
COL_REMIND      EQU     4
ROW_REMIND      EQU     $38
; 
COL_NIGHT       EQU     4
ROW_NIGHT       EQU     $26
; 
COL_ALARM       EQU     4
ROW_ALARM       EQU     $1C
; 
COL_NOTE        EQU     4
ROW_NOTE        EQU     $0E
;
; S1A1=2:47  S1B1=3:47  S1C1=4:47  S1D1=0:47  S1E1=1:47
; S1A2=2:45  S1B2=3:45  S1C2=4:45  S1D2=0:45  S1E2=1:45
; S1A3=2:43  S1B3=3:43  S1C3=4:43  S1D3=0:43  S1E3=1:43
; S1A4=2:41  S1B4=3:41  S1C4=4:41  S1D4=0:41  S1E4=1:41
; S1A5=2:3F  S1B5=3:3F  S1C5=4:3F  S1D5=0:3F  S1E5=1:3F
;
; S2A1=2:3D  S2B1=3:3D  S2C1=4:3D  S2D1=0:3D  S2E1=1:3D
; S2A2=2:3B  S2B2=3:3B  S2C2=4:3B  S2D2=0:3B  S2E2=1:3B
; S2A3=2:39  S2B3=3:39  S2C3=4:39  S2D3=0:39  S2E3=1:39
; S2A4=2:37  S2B4=3:37  S2C4=4:37  S2D4=0:37  S2E4=1:37
; S2A5=2:35  S2B5=3:35  S2C5=4:35  S2D5=0:35  S2E5=1:35
;
; S3A1=2:33  S3B1=3:33  S3C1=4:33  S3D1=0:33  S3E1=1:33
; S3A2=2:31  S3B2=3:31  S3C2=4:31  S3D2=0:31  S3E2=1:31
; S3A3=2:2F  S3B3=3:2F  S3C3=4:2F  S3D3=0:2F  S3E3=1:2F
; S3A4=2:2D  S3B4=3:2D  S3C4=4:2D  S3D4=0:2D  S3E4=1:2D
; S3A5=2:2B  S3B5=3:2B  S3C5=4:2B  S3D5=0:2B  S3E5=1:2B
;
; S4A1=2:27  S4B1=3:27  S4C1=4:27  S4D1=0:27  S4E1=1:27
; S4A2=2:25  S4B2=3:25  S4C2=4:25  S4D2=0:25  S4E2=1:25
; S4A3=2:23  S4B3=3:23  S4C3=4:23  S4D3=0:23  S4E3=1:23
; S4A4=2:21  S4B4=3:21  S4C4=4:21  S4D4=0:21  S4E4=1:21
; S4A5=2:1F  S4B5=3:1F  S4C5=4:1F  S4D5=0:1F  S4E5=1:1F
;
; S5A1=2:1D  S5B1=3:1D  S5C1=4:1D  S5D1=0:1D  S5E1=1:1D
; S5A2=2:1B  S5B2=3:1B  S5C2=4:1B  S5D2=0:1B  S5E2=1:1B
; S5A3=2:19  S5B3=3:19  S5C3=4:19  S5D3=0:19  S5E3=1:19
; S5A4=2:17  S5B4=3:17  S5C4=4:17  S5D4=0:17  S5E4=1:17
; S5A5=2:15  S5B5=3:15  S5C5=4:15  S5D5=0:15  S5E5=1:15
;
; S6A1=2:13  S6B1=3:13  S6C1=4:13  S6D1=0:13  S6E1=1:13
; S6A2=2:11  S6B2=3:11  S6C2=4:11  S6D2=0:11  S6E2=1:11
; S6A3=2:0F  S6B3=3:0F  S6C3=4:0F  S6D3=0:0F  S6E3=1:0F
; S6A4=2:0D  S6B4=3:0D  S6C4=4:0D  S6D4=0:0D  S6E4=1:0D
; S6A5=2:0B  S6B5=3:0B  S6C5=4:0B  S6D5=0:0B  S6E5=1:0B
;
; S7A1=2:09  S7B1=3:09  S7C1=4:09  S7D1=0:09  S7E1=1:09
; S7A2=2:07  S7B2=3:07  S7C2=4:07  S7D2=0:07  S7E2=1:07
; S7A3=2:05  S7B3=3:05  S7C3=4:05  S7D3=0:05  S7E3=1:05
; S7A4=2:03  S7B4=3:03  S7C4=4:03  S7D4=0:03  S7E4=1:03
; S7A5=2:01  S7B5=3:01  S7C5=4:01  S7D5=0:01  S7E5=1:01
;
; S8A1=2:02  S8B1=3:02  S8C1=4:02  S8D1=1:02  S8E1=0:02
; S8A2=2:04  S8B2=3:04  S8C2=4:04  S8D2=1:04  S8E2=0:04
; S8A3=2:06  S8B3=3:06  S8C3=4:06  S8D3=1:06  S8E3=0:06
; S8A4=2:08  S8B4=3:08  S8C4=4:08  S8D4=1:08  S8E4=0:08
; S8A5=2:0a  S8B5=3:0a  S8C5=4:0a  S8D5=1:0a  S8E5=0:0a
; 
;
; Character set
;
C_0             EQU     $00
C_1             EQU     $01
C_2             EQU     $02
C_3             EQU     $03
C_4             EQU     $04
C_5             EQU     $05
C_6             EQU     $06
C_7             EQU     $07
C_8             EQU     $08
C_9             EQU     $09
C_A             EQU     $0A
C_B             EQU     $0B
C_C             EQU     $0C
C_D             EQU     $0D
C_E             EQU     $0E
C_F             EQU     $0F
C_G             EQU     $10
C_H             EQU     $11
C_I             EQU     $12
C_J             EQU     $13
C_K             EQU     $14
C_L             EQU     $15
C_M             EQU     $16
C_N             EQU     $17
C_O             EQU     $18
C_P             EQU     $19
C_Q             EQU     $1A
C_R             EQU     $1B
C_S             EQU     $1C
C_T             EQU     $1D
C_U             EQU     $1E
C_V             EQU     $1F
C_W             EQU     $20
C_X             EQU     $21
C_Y             EQU     $22
C_Z             EQU     $23
C_BLANK         EQU     $24
C_SPACE         EQU     $24
C_EXCLAIM       EQU     $25
C_DQUOTE        EQU     $26
C_POUND         EQU     $27
C_DOLLAR        EQU     $28
C_PERCENT       EQU     $29
C_AMPERSAND     EQU     $2A
C_QUOTE         EQU     $2B
C_LPAREN        EQU     $2C
C_RPAREN        EQU     $2D
C_TIMES         EQU     $2E
C_PLUS          EQU     $2F
C_COMMA         EQU     $30
C_MINUS         EQU     $31
C_PERIOD        EQU     $32
C_SLASH         EQU     $33
C_COLON         EQU     $34
C_BACKSLASH     EQU     $35
C_DIVIDE        EQU     $36
C_EQUAL         EQU     $37
C_BELL          EQU     $38
C_QUESTION      EQU     $39
C_UNDER         EQU     $3A
C_CHECK         EQU     $3B
C_PREV          EQU     $3C
C_LEFTARR       EQU     $3C     ; Symbol for the previous key
C_NEXT          EQU     $3D
C_RIGHTARR      EQU     $3D     ; Symbol for the next key
C_BLOCK         EQU     $3E
C_SEP           EQU     $3F
C6_SPACE        EQU     $1d
; The basic timex character set is:
; 0 1 2 3 4 5 6 7 8 9 A B C D E F
; G H I J K L M N O P Q R S T U V
; W X Y Z   ! " # $ % & ' ( ) * +
; , - . / : ; < = > ? @ A B C D E
;
; We also have the timex6 character set as:
; 0 1 2 3 4 5 6 7 8 9 A B C D E F
; G H : L M N P R T U W Y r   - +
;

EVT_NEXT   EQU  $00     ; Next button pressed (not interested in the up transition)
EVT_MODE   EQU  $01     ; Mode button pressed  (not interested in the up transition)
EVT_SET    EQU  $02     ; Set/Delete button pressed (not interested in the up transition)
EVT_PREV   EQU  $03     ; Prev button pressed  (not interested in the up transition)
EVT_GLOW   EQU  $04     ; Indiglo button pressed (not interested in the up transition)
EVT_ANY    EQU  $05     ; Any button pressed (not interested in the up transition)
EVT_ANY4   EQU  $06     ; Any button pressed except indiglo (not interested in the up transition)
EVT_RESUME EQU  $1a     ; Called when resuming from a nested app
EVT_ENTER  EQU  $1b     ; Initial state. The Time value is generally $01 or $84 for a well behaved app
EVT_NEST   EQU  $1c     ; The state table 1 entry called when a nested application is called.  It is the equivalent of
                        ; EVT_ENTER for an interrupt.  This only occurs for Wristapps, Timer, and appt apps.
EVT_END    EQU  $1d     ; End of event table indicator
EVT_TIMER1 EQU  $1e     ; Timer event - This is fired for a $83 time request
EVT_TIMER2 EQU  $1f     ; Timer event - This is fired for a $82,$84,$01 timer request
;           $20-$36 - UNUSED
;           (I bet that you can have user specified events for these too)
EVT_USER0  EQU  $37
EVT_USER1  EQU  $38
EVT_USER2  EQU  $39
EVT_USER3  EQU  $3a     ; User specified events.  Queued by calling POSTEVENT ($4E89)
;           $3b-$7f - UNUSED
EVT_DNNEXT EQU  $80     ; Next button pressed
EVT_DNMODE EQU  $81     ; Mode button pressed
EVT_DNSET  EQU  $82     ; Set/Delete button pressed
EVT_DNPREV EQU  $83     ; Prev button pressed
EVT_DNGLOW EQU  $84     ; Indiglo button pressed
EVT_DNANY  EQU  $85     ; Any of the four buttons Pressed
EVT_DNANY4 EQU  $86     ; Any button pressed except indiglo

;           $87-$9F - UNUSED
EVT_UPNEXT EQU  $A0     ; Next button released
EVT_UPMODE EQU  $A1     ; Mode button released
EVT_UPSET  EQU  $A2     ; Set/Delete button released
EVT_UPPREV EQU  $A3     ; Prev button released
EVT_UPGLOW EQU  $A4     ; Indiglo button released
EVT_UPANY  EQU  $A5     ; Any of the four buttons Released
EVT_UPANY4 EQU  $A6     ; Any button Released except indiglo
           
ALARM_STATUS    EQU     $69     ; This is the status flags for the alarms.  The low order bit indicates that it is enabled
                                ; The next bit seems to indicate that the alarm is temporarily masked or disabled
                                ; Apparently the next bit can be set, but I haven't seen any use for it.
;               EQU     $69     ; Alarm 1 Status
;               EQU     $69     ; Alarm 1 Status
;               EQU     $6a     ; Alarm 2 Status
;               EQU     $6b     ; Alarm 3 Status
;               EQU     $6c     ; Alarm 4 Status
;               EQU     $6d     ; Alarm 5 Status

SCAN_MONTH      EQU     $7a     ; The current SCAN month
SCAN_DAY        EQU     $7b     ; The current SCAN day
SCAN_YEAR       EQU     $7c     ; The current SCAN year

MONTH_JAN       EQU     1
MONTH_FEB       EQU     2
MONTH_MAR       EQU     3
MONTH_APR       EQU     4
MONTH_MAY       EQU     5
MONTH_JUN       EQU     6
MONTH_JUL       EQU     7
MONTH_AUG       EQU     8
MONTH_SEP       EQU     9
MONTH_OCT       EQU     10
MONTH_NOV       EQU     11
MONTH_DEC       EQU     12

SYSTEMP0	EQU	$A0
SYSTEMP1	EQU	$A1

TIM_ONCE   EQU  $ff     ; No time interval.  Operation is executed just once

TIM1_TIC        EQU     $00
TIM1_2TIC       EQU     $01
TIM1_3TIC       EQU     $02
TIM1_4TIC       EQU     $03
TIM1_HALFSEC    EQU     $04
TIM1_SECOND     EQU     $05
TIM1_SECHALF    EQU     $06
TIM1_TWOSEC     EQU     $07
TIM1_TWOSEC1    EQU     $08
TIM1_12SEC      EQU     $09
TIM1_18SEC      EQU     $0a
;
; Note that the second part of this table is happen-stance since it is really a rollover
; of the second table on top of the first one. But it might be useful to someone...
;
TIM1_TICA       EQU     $0b     ; This is the typical scroll interval
TIM1_2TICA      EQU     $0c
TIM1_4TICA      EQU     $0d
TIM1_8TIC       EQU     $0e     ; This is the normal blink interval
TIM1_12TIC      EQU     $0f     ; Just over a second
TIM1_16TIC      EQU     $10     ; A second and a half
TIM1_24TIC      EQU     $11     ; Two and a half seconds
TIM1_32TIC      EQU     $12     ; Just over three seconds
TIM1_40TIC      EQU     $13     ; Four seconds
TIM1_48TIC      EQU     $14     ; Almost five seconds
TIM1_96TIC      EQU     $15     ; Almost ten seconds

TIM2_TIC        EQU     $80     ; This is the typical scroll interval
TIM2_2TIC       EQU     $81
TIM2_4TIC       EQU     $82
TIM_2_8TIC      EQU     $83     ; This is the normal blink interval
TIM2_8TIC       EQU     $83     ; This is the normal blink interval
TIM2_12TIC      EQU     $84     ; Just over a second
TIM2_16TIC      EQU     $85     ; A second and a half
TIM2_24TIC      EQU     $86     ; Two and a half seconds
TIM2_32TIC      EQU     $87     ; Just over three seconds
TIM2_40TIC      EQU     $88     ; Four seconds
TIM2_48TIC      EQU     $89     ; Almost five seconds
TIM2_96TIC      EQU     $8a     ; Almost ten seconds

TIM_LONG1  EQU  $01     ; Long shot time interval - Fires a $1F when the the timer expires
TIM_03     EQU  $03     ; Unknown
TIM_08     EQU  $08     ; Unknown

TIM_SHORT  EQU  $82     ; Short timer - Fires a $1F event when the timer expires
TIM_MED    EQU  $83     ; Medium timer - Fires a $1E event when the timer expires
TIM_LONG   EQU  $84     ; Long timer - Fires a $1F event when the timer expires
TIM_86     EQU  $86     ; ?Timer
;-----------------------------------------------------------------------------------------
TZ1_HOUR        EQU     $b0     ; Time zone 1 current hour (0-23)
TZ1_MINUTE      EQU     $b1     ; Time zone 1 current minute (0-59)
TZ1_MONTH       EQU     $b2     ; Time zone 1 current month of the year (1-12)
TZ1_DAY         EQU     $b3     ; Time zone 1 current day of the month (1-31)
TZ1_YEAR        EQU     $b4     ; Time zone 1 current year (mod 1900)
TZ1_NAME        EQU     $b5     ; Time zone 1 name (3 TIMEX characters)
;               EQU     $b6     ;    "   "  "   "
;               EQU     $b7     ;    "   "  "   "
TZ1_DOW         EQU     $b8     ; Time zone 1 day of week (0=Monday...6=Sunday)
;-----------------------------------------------------------------------------------------
TZ2_HOUR        EQU     $b9     ; Time zone 2 current hour (0-23) in Timezone 1
TZ2_MINUTE      EQU     $ba     ; Time zone 2 current minute (0-59)
TZ2_MONTH       EQU     $bb     ; Time zone 2 current month of the year (1-12)
TZ2_DAY         EQU     $bc     ; Time zone 2 current day of the month (1-31)
TZ2_YEAR        EQU     $bd     ; Time zone 2 current year (mod 1900)
TZ2_NAME        EQU     $be     ; Time zone 2 name (3 TIMEX characters)
;               EQU     $bf     ;    "   "  "   "
;               EQU     $c0     ;    "   "  "   "
TZ2_DOW         EQU     $c1     ; Time zone 2 day of the week (0=Monday..6=Sunday)
;-----------------------------------------------------------------------------------------
; Sound Support Values
TONE_END        EQU     $00     ; END
TONE_LOW_C      EQU     $10     ; Low C
TONE_HI_C       EQU     $20     ; High C
TONE_MID_C      EQU     $30     ; Middle C
TONE_VHI_C      EQU     $40     ; Very high C
TONE_HI_F       EQU     $50     ; High F (little bit lower than F)
TONE_MID_F      EQU     $60     ; Middle F
TONE_LO_F       EQU     $70     ; Low F
TONE_VHI_GSHARP EQU     $80     ; Very High G# (G Sharp)
TONE_HI_GSHARP  EQU     $90     ; High G#
TONE_MID_GSHARP EQU     $A0     ; Middle G#
TONE_LO_GSHARP  EQU     $B0     ; Low G#
TONE_HI_D       EQU     $C0     ; High D
TONE_MID_D      EQU     $D0     ; Middle D
TONE_LO_D       EQU     $E0     ; Low D
TONE_PAUSE      EQU     $F0     ; Pause
SND_END         EQU     $80
;--------------------------------------------------------------------------------
SNDSTART    EQU     $4e4a   ; Start playing the current sound in SYSSOUND
;--------------------------------------------------------------------------------
PLAYCONF    EQU     $4e7a   ; Play a confirmation sound
PLAYBUTTON  EQU     $4e80   ; Play the button beep sound if no other sound is currently playing
;--------------------------------------------------------------------------------
POSTEVENT   EQU     $4e89   ; Post a event to the internal processing queue
; Parameters:
;   A - Event to be posted.
; This posts an event to run through the processing loop for the current applet.
; Typical user events are in the $30-$3F range.
;
;--------------------------------------------------------------------------------
INDIGLO_OFF     EQU     $4e8e   ;   This routine turns off the indiglo light
;--------------------------------------------------------------------------------
SNDSTOP     EQU     $4f3a       ; This stops whatever sound is currently playing
;--------------------------------------------------------------------------------
CALL_NESTEDAPP  EQU     $4f4d
; Purpose:
;   This sets up to call a nested application while the current one is running.
;   Up to 5 apps may be nested (although there are only 3 potential ones defined).
;   If more than 5 have been called the oldest one will be forgotten.
;   When the nested app is called, NESTED_APP will be set to the application number
;   passed in and NESTED_PARM will contain the X parameter passed in
;
; Parameters:
;   A - Nested application number. This is one of the three defined apps:
;      9 = APP2_ALARM - Alarm (while another app is running)
;     10 = APP2_APPT  - Appointment (while another app is running)
;     11 = APP2_WRIST - Wristapp (while another app is running)
;   X - Parameter to pass to the nested application
;--------------------------------------------------------------------------------
SET_INDIGLO     EQU     $5504   ;   This routine turns on/off the indiglo light
; Parameters:
;   0,Sys_9e - Bit indicates request for on or off
;--------------------------------------------------------------------------------
PUTSCROLLMSG EQU     $5522      ; Make the buffer at MSGBUF visible
;--------------------------------------------------------------------------------
SCROLLMSG       EQU     $5545   ;   Start the scrolling cycle for the current message
; Parameters:
;   MSGBUF - Message to be scroll terminated by a SEPARATOR character
;--------------------------------------------------------------------------------
SCROLLMSG_CONT  EQU     $5549   ;   Start the scrolling cycle for the current message, but don't reset the
                                ;   scrolling cycle wait count.
; Parameters:
;   MSGBUF - Message to be scroll terminated by a SEPARATOR character
;   SCROLL_TICS - The current tic count in the cycle
;--------------------------------------------------------------------------------
START_BLINKX    EQU     $55bb   ;   Establish and call the specified blinking rountine
; Parameters:
;   X - single byte parameter to the particular blinking function
;   A - Blinking function to be selected
;--------------------------------------------------------------------------------
START_BLINKP    EQU     $55BF   ;   Establish and call the specified blinking rountine
; Parameters:
;   X - Address of parameter to the particular blinking function
;   A - Blinking function to be selected
BLINK_YEAR      EQU     0       ; Blink the year in the right place according to the current time format
BLINK_SECONDS   EQU     1       ; Blink two characters point to by UPDATE_PARM on the right two digits of the middle line - Used for the seconds
BLINK_AMPM      EQU     2       ; Blink AM/PM on the right most digits of the middle line (A or P pointed to by UPDATE_PARM)
BLINK_MONTH     EQU     3       ; Blink the month in the right place according to the current time format
BLINK_HMONTH    EQU     4       ; Blink the month in the right place according to the current time format for a half date (no year)
BLINK_DAY       EQU     5       ; Blink the day in the right place according to the current time format
BLINK_HDAY      EQU     6       ; Blink the day in the right place according to the current time format for half dates
BLINK_MID12     EQU     7       ; Blink the left two blank padded digits on the middle line (value pointed to by UPDATE_PARM)
BLINK_HOUR      EQU     8       ; Blink the Hour (left two segments on the middle line) and AM/PM indicator (hour point to by UPDATE_PARM)
BLINK_MID34     EQU     9       ; Blink the middle two zero padded digits on the middle line (value pointed to by UPDATE_PARM)
BLINK_SEGMENT   EQU     10      ; Blink a single segment indicated by UPDATE_POS and mask in UPDATE_VAL
BLINK_DIGIT     EQU     11      ; Blink solid black cursor for the digit (UPDATE_POS is the location on the bottom line)
BLINK_TZONE     EQU     12      ; Blink the timezone information (Pointed to by UPDATE_PARM)
BLINK_TOP34     EQU     13      ; Blink the middle zero padded two digits on the top line (value pointed to by UPDATE_PARM)
;--------------------------------------------------------------------------------
PUTLINE3    EQU     $56d5   ; Put a single character on the bottom line of the display
POSL3_1     EQU     $47
POSL3_2     EQU     $3d
POSL3_3     EQU     $33
POSL3_4     EQU     $27
POSL3_5     EQU     $1d
POSL3_6     EQU     $13
POSL3_7     EQU     $09
POSL3_8     EQU     $0a
; Parameters:
;   A = Position    S1    S2    S3    S4    S5    S6    S7    S8
;                 [$47] [$3D] [$33] [$27] [$1D] [$13] [$09] [$0A]
;                 [ 71] [ 61] [ 51] [ 39] [ 29] [ 19] [  9] [ 10]
;   X = Character in Timex Ascii to display
; Notes:
;   This appears to be an XOR operation.  Calling the same function twice in a row would
;   erase the character.  Writing on top of an existing character seems to let you generate
;   a non Ascii character.

PUTLINE1    EQU     $570D   ; Put a single character on the top line of the display
POSL1_1     EQU     $46
POSL1_2     EQU     $3e
POSL1_3     EQU     $34
POSL1_4     EQU     $2c
POSL1_5     EQU     $22
POSL1_6     EQU     $14
; Parameters:
;  A = Position [$46] [$3E] - [$34] [$2C] - [$22] [$14]
;               [ 70] [ 62]   [ 52] [ 44]   [ 34] [20]
;  X = Character in Timex Ascii to display

PUTLINE2    EQU     $5745     ; Put a single character on the second line of the display
POSL2_1     EQU     $46
POSL2_2     EQU     $3e
POSL2_3     EQU     $34
POSL2_4     EQU     $2c
POSL2_5     EQU     $22
POSL2_6     EQU     $14
; Parameters:
;  A = Position [$46] [$3E] - [$34] [$2C] - [$22] [$14]
;               [ 70] [ 62]   [ 52] [ 44]   [ 34] [20]
;  X = Character in Timex Ascii to display

CLEARALL    EQU     $577A       ; Clear the display
CLEARBOT    EQU     $5787       ; Clear the bottom line of the display
CLEARSYM    EQU     $579f       ; Turns off all the non digit symbols segments (including dots, dashes and colons)
;-------------------------------------------------------------------------
START_UPDATEX   equ     $57c3   ;   Establish and call the specified update function (See START_UPDATEP)
; Parameters:
;   X - single byte parameter to the particular update function
;   A - Update function to be selected
;-------------------------------------------------------------------------
START_UPDATEP     EQU     $57C7 ;   This establishes an update function.  Update functions are called every 8/10th
                                ;   of a second.  This function will update a number in an upward or downward
                                ;   direction based on the setting of 0,SYSFLAGS
; Parameters:
;   A - Update function to be selected
;   X - Pointer to parameters for the update function
UPD_YEAR        EQU     0       ; Update the year
UPD_MONTH       EQU     1       ; Update the Month
UPD_HMONTH      EQU     2       ; Update the Month in Half date format
UPD_DAY         EQU     3       ; Update the day
UPD_HDAY        EQU     4       ; Update the day in half date format
UPD_MID12       EQU     5       ; Update MID12
UPD_HOUR        EQU     6       ; Update the hour
UPD_MID34       EQU     7       ; Update MID34
UPD_DIGIT       EQU     8       ; Update the digit at UPDATE_POS
;-------------------------------------------------------------------------
BANNER8     EQU     $5845       ; Display an 8 character string
; Parameters
;   A = Offset from 0110 for the start of an 8 character timex string
;
;-------------------------------------------------------------------------
PUTMSGXBOT  EQU     $5849       ; Puts a message on the bottom of the screen.
; Parameters
;  A = Message selector number.  Valid values from 0 to 27.  They correspond to
;      the same strings passed into PUTMSGBOT scaled down by 8
;-------------------------------------------------------------------------
PUTMSGBOT   EQU     $584c       ; Puts a message on the bottom of the screen.
; Parameters
;  A = Offset into message selector string.  Valid values from from $00 to $d8 at
;      8 Byte offsets.  $E0 is the start of the 6 byte top/mid message strings.
SYS8_MON        EQU     $00 ;   $00 = "MON     "
SYS8_TUE        EQU     $08 ;   $08 = "TUE     "
SYS8_WED        EQU     $10 ;   $10 = "WED     "
SYS8_THU        EQU     $18 ;   $18 = "THU     "
SYS8_FRI        EQU     $20 ;   $20 = "FRI     "
SYS8_SAT        EQU     $28 ;   $28 = "SAT     "
SYS8_SUN        EQU     $30 ;   $30 = "SUN     "
SYS8_VERDATE    EQU     $38 ;   $38 = " 802003 "
SYS8_VERSION    EQU     $40 ;   $40 = "  V2.0  "
SYS8_MODE       EQU     $48 ;   $48 = "  MODE  "
SYS8_SET_MODE   EQU     $50 ;   $50 = "SET MODE"
SYS8_SET        EQU     $58 ;   $58 = "SET     "
SYS8_TO         EQU     $60 ;   $60 = "TO      "
SYS8_FOR        EQU     $68 ;   $68 = "FOR     "
SYS8_ENTRIES    EQU     $70 ;   $70 = "ENTRIES "
SYS8_UPCOMING   EQU     $78 ;   $78 = "UPCOMING"
SYS8_ENTRY      EQU     $80 ;   $80 = " ENTRY  "
SYS8_SCAN       EQU     $88 ;   $88 = "  SCAN  "
SYS8_SCAN_RIGHT EQU     $90 ;   $90 = "    SCAN"
SYS8_SYNCING    EQU     $98 ;   $98 = " SYNCING"
SYS8_PROGRESS   EQU     $a0 ;   $a0 = "PROGRESS"
SYS8_DATA_OK    EQU     $a8 ;   $a8 = " DATA OK"
SYS8_RESEND     EQU     $b0 ;   $b0 = "-RESEND-"
SYS8_ABORTED    EQU     $b8 ;   $b8 = " ABORTED"
SYS8_MISMATCH   EQU     $c0 ;   $c0 = "MISMATCH"
SYS8_SPLIT      EQU     $c8 ;   $c8 = " SPLIT  "
SYS8_START      EQU     $d0 ;   $d0 = ">=START "
SYS8_STOP       EQU     $d8 ;   $d8 = ">=STOP  "
;   $e0 is the start of the message table SYS6_SET
;
PUT6TOP     EQU     $587e
;  Parameters: 
;   A = Offset from 0110 for the start of a 6 byte data item to be put on the top
;       line of the screen.  This uses a different encoding for characters where:
;       we have 32 different values which correspond to:
;        "0123456789ABCDEFGH:LMNPRTUWYr -+"
;         0123456789abcdef0123456789abcdef
;        e.g. $12=':', $13='L'.
;        It appears that things wrap when you get to $20
;
PUTMSG1     EQU     $5882   ; Put up a message on the top line
; Parameters - Offset into message selector string.  
; Typically you want a multiple of 6 to choose from these below
;
SYS6_SET        EQU     $00 ;  00 = " SET  "  (This is stored at $5F5F in the roms)
SYS6_HOLDTO     EQU     $06 ;  06 = "HOLDTO"
SYS6_ALARM      EQU     $0C ;  0C = "ALARM "
SYS6_ENTER      EQU     $12 ;  12 = "ENTER "
SYS6_HR         EQU     $18 ;  18 = "    HR"
SYS6_SWITCH     EQU     $1E ;  1E = "SWITCH"
SYS6_TIME       EQU     $24 ;  24 = " TIME "
SYS6_FORMAT     EQU     $2A ;  2A = "FORMAT"
SYS6_DAILY      EQU     $30 ;  30 = "DAILY "
SYS6_APPT       EQU     $36 ;  36 = " APPT "
SYS6_NO         EQU     $3c ;  3c = "  NO  "
SYS6_APPTS      EQU     $42 ;  42 = "APPTS "
SYS6_END_OF     EQU     $48 ;  48 = "END OF"
SYS6_LIST       EQU     $4e ;  4e = " LIST "
SYS6_DELETE     EQU     $54 ;  54 = "DELETE"
SYS6_ANN        EQU     $5a ;  5a = " ANN  "
SYS6_PHONE      EQU     $60 ;  60 = "PHONE "
SYS6_DONE       EQU     $66 ;  66 = " DONE "
SYS6_PRI        EQU     $6c ;  6c = "PRI   "
SYS6_COMM       EQU     $72 ;  72 = " COMM "
SYS6_READY      EQU     $78 ;  78 = "READY "
SYS6_IN         EQU     $7e ;  7e = "  IN  "
SYS6_ERROR      EQU     $84 ;  84 = "ERROR "
SYS6_CEASED     EQU     $8a ;  8a = "CEASED"
SYS6_PC         EQU     $90 ;  90 = "PC-   "
SYS6_WATCH      EQU     $96 ;  96 = "WATCH "
SYS6_CHRONO     EQU     $9c ;  9c = "CHRONO"
SYS6_TIMER      EQU     $A2 ;  A2 = "TIMER "
SYS6_000000     EQU     $a8 ;  a8 = "000000"
;  ae = "MTWTFS"
;  B4 = "SOUEHR"
;  BA = "AUG+74"
;  C0 = "P16174"
;  C6 = "P1OY40"
;  CC = "W+0++0"
;  D2 = "251332"
;  D8 = "0321++"
;  DE = "R++ 0+"
;  E4 = "+12+1T"
;  EA = "+0 0+1"
;  F0 = "26+2U+"
;  F6 = "0 C100"
;  FC = "C0GW"
;
PUT6MID     EQU     $58a8
;  Parameters: 
;   A = Offset from 0110 for the start of a 6 byte data item to be put on the top
;       line of the screen.  This uses a different encoding for characters where:
;       we have 32 different values which correspond to:
;        "0123456789ABCDEFGH:LMNPRTUWYr -+"
;        e.g. $12=':', $13='L'.
;        It appears that things wrap when you get to $20
;
; PUT6MIDA was identified wrong...
PUTMSG2    EQU     $58AC    ; This functions just the same as PUTMSG1 except it puts things on the middle line
CLEARTOP     EQU     $58d2 ;   Puts blanks into all 6 top digits (Blanks out the top line)
; Parameters:
;   None
CLEARMID     EQU     $58d8 ;   Puts blanks into all 6 Middle digits (Blanks out the middle line)
; Parameters:
;   None
;-------------------------------------------------------------------------
; These next 6 routines take the two bytes in DATDIGIT1 ($A2) and DATDIGIT2($A3) and put them
; on the display in the appropriate locations.  The digits are represented using the TIMEX6
; character set.
;
PUTTOP12    EQU     $58e0   ; Puts DATDIGIT1/2 into TOP Digits 1 and 2
PUTTOP34    EQU     $58f0   ; Puts DATDIGIT1/2 into TOP Digits 3 and 4
PUTTOP56    EQU     $5900   ; Puts DATDIGIT1/2 into TOP Digits 5 and 6
PUTMID12    EQU     $5910   ; Puts DATDIGIT1/2 into Middle Digits 1 and 2
PUTMID34    EQU     $5920   ; Puts DATDIGIT1/2 into Middle Digits 3 and 4
PUTMID56    EQU     $5930   ; Puts DATDIGIT1/2 into Middle Digits 5 and 6
; These 6 routines blank out parts of the display
CLRTOP12    EQU     $58de   ; Puts Blanks into TOP Digits 1 and 2
CLRTOP34    EQU     $58ee   ; Puts Blanks into TOP Digits 3 and 4
CLRTOP56    EQU     $59fe   ; Puts Blanks into TOP Digits 5 and 6
CLRMID12    EQU     $590e   ; Puts Blanks into Middle Digits 1 and 2
CLRMID34    EQU     $591e   ; Puts Blanks into Middle Digits 3 and 4
CLRMID56    EQU     $592e   ; Puts Blanks into Middle Digits 5 and 6
;
FMTXLEAD0    EQU     $593E   ; Formats into DATDIGIT1/2 with leading zeros
; Parameters:
;    X - value to be formatted.  0-9 results in 0 followed by the digit
;                                10-99 results in number for both digits
FMTBLANK0   EQU     $594d   ; Format into DATDIGIT1/2
; Parameters:
;    X - value to be formatted.  0 results in all blanks.
;                                1-9 results in blank followed by the digit
;                                10-99 results in number for both digits
FMTX        EQU     $5951   ; Format into DATDIGIT1/2
; Parameters:
;    X - value to be formatted.  0-9 results in blank followed by the digit
;                                10-99 results in number for both digits

FMTSPACE    EQU     $595C   ; Format blankes into DATDIGIT1/2
; Parameters: NONE
; This routine simply puts spaces into DATDIGIT1 DATDIGIT2
;
SAYEOLMSG   EQU     $5979   ; Puts 'END OF LIST' on the display
PUTBOT678   EQU     $5a86   ;   Puts three digits into the lower corner of the display.
;     Typically this is the time zone information.
; Parameters:
;   X - Pointer to 3 byte location containing bytes to put on the display
;   (pointed to by x) 3 bytes in TIMEX ascii.  Because the X register iss
;   used to index to them, they must be located in the first 256 bytes of
;   memory.
PUTDATESEP  EQU     $5aab   ; Put either Dashes or periods on the top line

DIGLOCTOP   EQU     $5e26       ; Locations of digits on the top line
DIGLOCMID   EQU     $5e2c       ; Locations of digits on the middle line
DIGLOCBOT   EQU     $5e32       ; Locations of digits on the bottom line

;-------------------------------------------------------------------------
PUT_YEARX   EQU     $67cc       ; Put the leading zero 2 digit year in the appropriate spot on the display based
                                ; on the current time zone date format
; Parameters:
;   X - Year to be displayed
;-------------------------------------------------------------------------
PUT_MONTHX      EQU     $67d0   ; Put the leading space 2 digit month in the appropriate spot on the display based
                                ; on the current time zone date format
; Parameters:
;   X - Month to be displayed
;-------------------------------------------------------------------------
PUT_DAYX     EQU     $67d4      ;   Put the leading zero 2 digit day in the appropriate spot on the display based
                                ;   on the current time zone date format
; Parameters:
;   X - Day to be displayed
;-------------------------------------------------------------------------
SAY_HOURX       EQU     $67d8   ; Puts up the hour on the display along with an AM/PM indicator and a Colon.
                                ; This code respects the current 12/24 hour format.
; Parameters:
;   X - Hour to be displayed
;-------------------------------------------------------------------------
PUT_MINUTEX     EQU     $6823   ;   This puts the minute in the middle two digits on the middle line followed by a period
; Parameters:
;   X - minute (0-59) to be displayed
;-------------------------------------------------------------------------
SHOWSEC_TENS    EQU     $6830   ;   Puts the character at SECOND_TENS onto the next to the last digit on the middle line
; Parameters:
;   SECOND_TENS - Value to be put on the display
;-------------------------------------------------------------------------
SHOWSEC_ONES    EQU     $6838   ;   Puts the character at SECOND_ONES onto the last digit on the middle line
; Parameters:
;   SECOND_ONES - Value to be put on the display
;-------------------------------------------------------------------------
CALC_DOW_X      EQU     $68d5   ;   Computes the Day of the Week from the Month, Day, Year information
; Parameters:
;   X - Pointer to Month, Day, Year block
;-------------------------------------------------------------------------
ACQUIRE     EQU     $68e8       ; Disable interrupts for a short piece of code
RELEASE     EQU     $68f2       ; Reenable interrupts
;-------------------------------------------------------------------------
GET_MONTHLEN    EQU     $68f9   ;   Computes the number of days in a given month
; Parameters:
;   PARM_MONTH, PARM_YEAR contain the month and year to look for
; Returns:
;   A - Number of days in the month
;-------------------------------------------------------------------------
SETALL          EQU     $5776   ; Turn on all segments on the display
INCA_WRAPX      EQU     $6b0d   ;   Advance to the next value wrapped within a range
; Parameters:
;   A - Number to be incremented
;   X - Range to hold number within
;-------------------------------------------------------------------------
GETBCDHI    EQU     $6B52
; Parameters:
;   X - Hex value to be converted (Range 0-99)
; Returns:
;   A - High byte of number in timex ascii
;-------------------------------------------------------------------------
GETBCDLOW   EQU     $6B5A
; Parameters:
;   X - Hex value to be converted (Range 0-99)
; Returns:
;   A - Low byte of number in timex ascii
;-------------------------------------------------------------------------
TABHEX2BCD  EQU     $6b60   ; 100 bytes from 6b60-6bc3
; This is a 100 byte table of HEX to BCD conversion values.  You can take the value you want
; to convert, load it into the X register and then load TABHEX2BCX,X.  To get the high order byte,
; just shift it right by 4.  The low order is just an and with $0f.

SYS_26          EQU     $26
MODE_FLAGS      EQU     $68     ; FLAGS
                                ; Bit0 = Indicates that we are in alarm set mode (SET=IN SET MODE)
                                ; Bit1 = Indicates that we have a backup mode pending alarm (SET=PENDING)
                                ; Bit2 = Indicates that hourly chimes are to be played (SET=ENABLED)
                                ; Bit3 = Indicates that hourly chimes are temporarily disabled (SET=DISABLED)
                                ; Bit4 = Enables beep for any button pressed (SET=BEEP)
                                ; Bit5 = Indicates that we are in COMM Mode (SET=IN COMM Mode)
                                ; Bit6 = Indicates that ALARM SET MODE is on the display (SET=On Display)
                                ; Bit7 = <UNUSED>
APP_FLAGS       EQU     $8f     ; System Flags
                                ; Bit0 = Event has been posted (SET=TRUE)
                                ; Bit1 = We want to allow the app to be suspended (SET=ALLOW)
                                ; Bit2 = Run a nested application (SET=TRUE) - only for ALARM,APPT, WRISTAPP
                                ; Bit3 = A button beep has already been played (SET=PLAYED)
                                ; Bit4 = <UNUSED>
                                ; Bit5 = <UNUSED>
                                ; Bit6 = <UNUSED>
                                ; Bit7 = <UNUSED>
BTNFLAGS        EQU     $90     ; Flags for the timer.  Note that bits 5 and 7 are exclusive because they happen to
                                ;    use the same variables to hold their information.
                                ; Bit0 = <UNUSED>
                                ; Bit1 = wristapp wants a 1/10 second timer function called (WRIST_DOTIC) (SET=CALL)
                                ; Bit2 = Indicates a blink routine is pending (SET=PENDING)
                                ; Bit3 = Indicates a scrolling message is pending (SET=PENDING)
                                ; Bit4 = Indicates an update routine is pending (SET=PENDING)
                                ; Bit5 = Indicates a blink routine has been established (SET=ACTIVE)
                                ; Bit6 = Indicates a scrolling message is in progress (SET=ACTIVE)
                                ; Bit7 = Indicates an update routine has been established (SET=ACTIVE)
BTNSTATE        EQU     $91     ; Current event/button press
TIMER_FLAGS     EQU     $94     ; System Flags
                                ; Bit0 = Indicates that the timer2 timer has been enabled (SET=ENABLED)
                                ; Bit1 = Indicates that the TIC timer has been enabled (SET=ENABLED)
                                ; Bit2 = Indicates that we want to turn off the indiglo automatically (SET=TURN OFF)
                                ; Bit3 = Indicates that they have done something in this applet (SET=done something)
                                ; Bit4 = Request to reset the watch (SET=Reset Watch)
                                ; Bit5 = Request to turn off the INDIGLO at some future time
                                ; Bit6 = <UNUSED>
                                ; Bit7 = ????Related to indicating that sound is currently playing
MAIN_FLAGS      EQU     $95     ; Flags to set queue requests to do something in the main loop
                                ; Bit0 = Indicates that a button has changed state (SET=CHANGED)
                                ; Bit1 = Indicates that the current app should be suspended and TIME activated (SET=Suspend)
                                ; Bit2 = Indicates that the TIMER_TICS has been updated (SET=Updated)
                                ; Bit3 = Indicates that the hourly chimes need to be played (SET=Please Play)
                                ; Bit4 = Indicates that the appointments should be checked (SET=Please Check)
                                ; Bit5 = Indicates that the anniversaries need to be checked (SET=Please Check)
                                ; Bit6 = <UNUSED>
                                ; Bit7 = <UNUSED>
WRISTAPP_FLAGS  EQU     $96     ; System Flags
                                ; Bit0 = wristapp wants a second timer function called at start of interrupt (WRIST_DOTIC) (SET=CALL)
                                ; Bit1 = wristapp wants a call once a minute when it changes (WRIST_DOTIC) (SET=CALL)
                                ; Bit2 = wristapp wants a call once an hour when it changes (WRIST_DOTIC) (SET=CALL)
                                ; Bit3 = wristapp wants a call once a day when it changes (WRIST_DOTIC) (SET=CALL)
                                ; Bit4 = Play button beep sound on wristapp for any button (SET=ENABLE)
                                ; Bit5 = Play button beep sound on wristapp for mode button (SET=ENABLE)
                                ; Bit6 = Uses system rules for button beep decisions (SET=SYSTEM RULES)
                                ; Bit7 = Wristapp has been loaded (SET=LOADED)
NEST_PARM       EQU     $99     ; Holds the parameter passed to the current nested app
SYSSOUND        EQU     $9B         ; Current sound to be played
HW_FLAGS        EQU     $9e     ; System Variable
                                ; Bit0 = Request state for Indiglo light (SET=ON)
                                ; Bit1 = Indicates the the SYS_07 hardware has been reset
                                ; Bit2 = <UNUSED>
                                ; Bit3 = Indicates that we want to load some code from the serial port at reset (SET=ON)
                                ; Bit4 = Set but never used.  Mimics the state of 0,PORT_C_DATA & 0,PORT_C_DDR
                                ; Bit5 = Set but never used.  Mimics the state of 1,PORT_C_DATA & 1,PORT_C_DDR
                                ; Bit6 = Indicates that INST_ADDR is a pointer into the EEPROM (SET=EEPROM Address)
                                ; Bit7 = Interrupts have been disabled (SET=DISABLED)
SYSFLAGS        EQU     $9F     ; System flags
                                ; Bit0 = Indicates the update direction.  (SET=UP)
                                ; Bit1 = Indicates that the screen needs to be cleared (SET=no need to clear)
                                ;        Also used as part of a the digit blinking code (SET=Show digits)
                                ; Bit2 = Indicates that the end of a scrolling message has been reached (SET=END)
                                ; Bit3 = User vs system string (SET=User String)
                                ; Bit4 = <UNUSED>
                                ; Bit5 = <UNUSED>
                                ; Bit6 = <UNUSED>
                                ; Bit7 = <UNUSED>
DATDIGIT1       EQU     $A2     ; First digit parameter for PUTMIDnn/PUTTOPnn routines
DATDIGIT2       EQU     $A3     ; Second digit parameter for PUTMIDnn/PUTTOPnn routines
UPDATE_VAL      EQU     $a6     ; Temporary value passed to the update/blink routines
UPDATE_PARM     EQU     $a7     ; Pointer to the data passed to the update/blink routines
;
; The sound in SYSSOUND can be set to one of the following values:
;
SND_HOURLY      EQU     $83	; HOURLY CHIME
SND_APPT        EQU     $85	; APPOINTMENT BEEP
SND_ALARM       EQU     $86	; ALARM BEEP
SND_DLOAD       EQU     $87	; PROGRAM DOWNLOAD
SND_EXTRA	EQU     $88	; EXTRA
SND_COMERR      EQU     $89	; COMM ERROR
SND_DONE        EQU   	$8A	; COMM DONE
SND_BUTTON      EQU     $c1	; BUTTON BEEP
SND_RETURN      EQU     $c2	; RETURN TO TIME
SND_CONF        EQU     $c4	; CONFIRMATION

APPT_PROMBASE   EQU     $0100   ; Address of the first entry for Appointments in the EEPROM
LIST_PROMBASE   EQU     $0102   ; Address of the first entry for LISTs in the EEPROM
PHONE_PROMBASE  EQU     $0104   ; Address of the first entry for PHONE numbers in the EEPROM
ANNIV_PROMBASE  EQU     $0106   ; Address of the first entry for Anniversaries in the EEPROM
APPT_ENTRIES    EQU     $0108   ; Number of currently loaded Appointment entries
LIST_ENTRIES    EQU     $0109   ; Number of currently loaded LIST entries
PHONE_ENTRIES   EQU     $010a   ; Number of currently loaded Phone number entries
ANNIV_ENTRIES   EQU     $010b   ; Number of currently loaded Anniversary entries
APPT_BASEYEAR   EQU     $010c   ; The year for the first loaded appointment
APPT_PRETIME    EQU     $010d   ; How many minutes ahead of time to announce an appointment
COMM_010e       EQU     $010e   ; ????
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SND_BASEOFF     EQU     $010f   ; Sound base pointer - All sounds are this base relative to SND_BASE (0336)
WRIST_MAIN      EQU     $0110   ; This is the primary initialization entry point for a Wristapp
WRIST_SUSPEND   EQU     $0113   ; This is the entry point called immediately before suspending the wristapp
WRIST_DOTIC     EQU     $0116   ; This is the entry point called for a timer tic in a wristapp
WRIST_INCOMM    EQU     $0119   ; This is called when the COMM app is suspending the wristapp which has requests to process timer events
WRIST_NEWDATA   EQU     $011c   ; This is the wristapp entry point called when new data has been downloaded to the watch
WRIST_GETSTATE  EQU     $011f   ; Entry to get a wristapp state table entry
WRIST_JMP_STATE0 EQU    $0123   ; Wristapp entry point to call state 0

INST_ADDRHI     EQU     $0437
INST_ADDRLO     EQU     $0438
USER04a1        EQU     $04a1
NESTED_APP      EQU     $04a2   ; Nested application (Only to run an application while a different one is running)
                                ; This is used to handle alarms and appointments that go off while you are running something else
APP2_ALARM      EQU     9       ; 9 = Alarm (while another app is running)
APP2_APPT       EQU     10      ; 10 = Appointment (while another app is running)
APP2_WRIST      EQU     11      ; 11 = Wristapp (while another app is running)
NESTED_PARM     EQU     $04a4   ; Parameter passed to the nested app call
USER04c3        EQU     $04c3
BUF_PHONENUM    EQU     $043a   ; 12 byte buffer to hold a decompressed phone number
EXTRACTBUF      EQU     $0446   ; 32 byte buffer to hold extracted data from the EEPROM
UPDATE_POS      EQU     $04f3   ; Position to update a segment or digit in the blink/refresh routines
;
; These two constants appear to be associated with the PUTSCROLLMSG and SCROLLMSG routines
;
SEPARATOR       EQU     $3F     ; Indicates the end of a scrolling string
MSGBUF          EQU     $04d2   ; Location of the system buffer for a scrolling string
CURRENT_APP     EQU     $04c1   ; The current application number (1-8)
APP_TIME        EQU     1       ; 1 = Time of Day
APP_ALARM       EQU     2       ; 2 = Alarm
APP_APPT        EQU     3       ; 3 = Appointment
APP_ANNIV       EQU     4       ; 4 = Anniversary
APP_PHONE       EQU     5       ; 5 = Phone number
APP_LIST        EQU     6       ; 6 = List
APP_COMM        EQU     7       ; 7 = Communication
APP_WRIST       EQU     8       ; 8 = Wristapp (if downloaded)
BTN_PRESSED     EQU     $04c3   ; The button currently pressed (For EVT_ANY or EVT_ANY4 events) 0=NEXT 1=MODE 2=SET 3=PREV 4=GLOW
EFFECTIVE_APP   EQU     $04c4   ; The efective application
APP_13          EQU     13      ; Some submode of the TIME application
APP_TIME_SET    EQU     14      ; Submode of the TIME application
UPDATE_MIN      EQU     $04f4   ; Minimum value for the update function to generate.  At this, it wraps to UPDATE_MAX
UPDATE_MAX      EQU     $04f5   ; Maximum value for the update function to generate.  At this, it wraps to UPDATE_MIN    
PARM_MONTH      EQU     $04f9   ; Month parameter
PARM_YEAR       EQU     $04fa   ; Current year also...

WATCHTIMER      EQU     $7ff0
;
; Other random routines which you might call....
;
ALARM_BLINKSEL          EQU     $4095
ALARM_UPDATESEL         EQU     $4099
ALARM_SELMIN            EQU     $409D
ALARM_SELMAX            EQU     $40A1
FIND_ANNIV_TODAY        EQU     $40CD
FIND_ANNIV_SCAN         EQU     $40D3
ANNIV_NEXT_ENTRY        EQU     $40E1
ANNIV_PREV_ENTRY        EQU     $4117
FIND_ANNIV_ENTRY        EQU     $415F
CHECK_ANNIVERSARIES     EQU     $41FC
SET_ANNIVTEST_TODAY     EQU     $423A
ANNIV_GETMONTHLEN       EQU     $426A
TEST_ANNIVERSARY        EQU     $4288
ANNIV_COPY_INFO         EQU     $4308
READ_ANNIV_CURRENT      EQU     $4317
READ_ANNIV_FIRST        EQU     $4326
READ_ANNIV_NEXT         EQU     $4335
TEST_SCAN_START         EQU     $4346
FIX_SCAN_YEAR           EQU     $4371
TEST_SCAN_END           EQU     $437E
RESTORE_SCAN_YEAR       EQU     $43AE
INCREMENT_SCAN_DATE     EQU     $43B9
GET_SCAN_MONTHLEN       EQU     $43E0
DECREMENT_SCAN_DATE     EQU     $43F4
FIND_APPT_NOW           EQU     $4415
FIND_APPT_SCAN          EQU     $441B
SET_APPTFIND_SCAN       EQU     $4422
READ_APPT_NEXT          EQU     $442C
APPT_LATCH_ENTRYDATA    EQU     $4468
APPT_LATCH_ENTRYONLY    EQU     $446C
READ_APPT_PREV          EQU     $447C
FIND_APPT_ENTRY         EQU     $44C6
APPT_LATCH_ENTDYDATA    EQU     $45A5
CHECK_APPOINTMENTS      EQU     $45B9
SET_APPTFIND_NOW        EQU     $462A
READ_APPT_FIRST         EQU     $4686
READ_APPT_LAST          EQU     $469D
CHECK_APPT_TIME         EQU     $46B7
READ_APPT_PACKET1       EQU     $473A
READ_NEXT_APPT_PACKET   EQU     $4749
READ_APPT_CURRENT       EQU     $475A
PROCESS_EVENTS          EQU     $49F6
DO_ANYAPP_EVENT         EQU     $4B42
DO_NESTAPP_EVENT        EQU     $4B45
DO_APP_EVENT            EQU     $4B81
DO_NORMAL_STATE         EQU     $4BB8
TRANSITION_RBUTTON      EQU     $48fe
TRANSITION_LBUTTON      EQU     $494d
QUEUE_INDIGLO_OFF       EQU     $4992
;QUEUE_INDIGLO_OFF       EQU     $49D9
NIGHTMODE_INDIGLO_ON    EQU     $49E6
INDIGLO_ON              EQU     $49EC
PROCESS_REQUESTS        EQU     $4C66
TIMER1_INTERVALS        EQU     $4de1
TIMER2_INTERVALS        EQU     $4dec
DO_EVENT                EQU     $4CA4
GETSTATE                EQU     $4CFE
GETSTATE_TAB            EQU     $4D0e
CHECK_COMPATIBLE_EVENT  EQU     $4D96
STOP_ALL_SOUND          EQU     $4E68
PREPARE_TIMER2_TIMER    EQU     $4E96
PLAY_HOURLY             EQU     $4EB1
PAUSE_WATCH             EQU     $4EC7
RESUME_WATCH            EQU     $4EDE
RESUME_UPDATE           EQU     $4EF6
ACQUIRE_TIME            EQU     $4F22
RELEASE_TIME            EQU     $4F2E
PLAY_BUTTON_SAFE        EQU     $4F46
PREPARE_NEST_CALL       EQU     $4FA0
UNPACK_PHONENUM         EQU     $4FBF
PHONE_UNPACK_VAL        EQU     $4FE0
UNPACK_STRING           EQU     $4FF0
READ_PACKET             EQU     $503E
FIND_PACKET             EQU     $5044
DO_TRANSFER             EQU     $505F
TOGGLE_ENTRYFLAG        EQU     $5077
MAKE_INST_LDA           EQU     $50B4
MAKE_INST_LDA_X         EQU     $50B8
MAKE_INST_STA           EQU     $50BC
ADD_INSTADDR            EQU     $50C7
SET_INSTADDR_0110       EQU     $50D7
GET_INST_BYTE           EQU     $50EB
WRITE_FLAG_BYTE         EQU     $510A
FILL_EXTRACTBUF         EQU     $513E
SAVE_EXTRACTBUF         EQU     $515D
SYSTEM_RESET            EQU     $519B
SND_OFF                 EQU     $5286
DO_SOUND                EQU     $5298
SET_SYS_0f_4d           EQU     $5203
SET_SYS_0f_41           EQU     $5208
ENABLE_EYE              EQU     $53A6
SERIAL_DELAY            EQU     $53B4
DISABLE_EYE             EQU     $53BD
SET_SYS_07              EQU     $53C8
CLEAR_SYS_07            EQU     $53CF
RESET_SYS_07            EQU     $53D5
INITHW_SYS_07           EQU     $53DC
SETHW_07_08_C1          EQU     $53F4
WRITE_ACQUIRE           EQU     $543C
WRITE_RELEASE           EQU     $5448
MAKE_INST2_LDA_X        EQU     $5453
MAKE_INST2_STA_X        EQU     $5457
PROM_READ               EQU     $5462
PROM_WRITE              EQU     $5488
READ_EEPROM_PORT        EQU     $54CC
PROM_STARTIO            EQU     $54D6
PROM_ACQUIRE            EQU     $54E2
PROM_RELEASE            EQU     $54EC
PROM_SHOW               EQU     $54F3
PROM_HIDE               EQU     $54F8
DO_SCROLL               EQU     $5566
DO_BLINK                EQU     $55c8
PUTDOWTOP               EQU     $5872
FMTBLANK0B              EQU     $5963
SAYHOLDTODELETE         EQU     $598a
PUT_PHONENUM            EQU     $59a2
PUTYEARMID              EQU     $59d9
CLEAR_HMONTH            EQU     $59f8
PUT_HMONTHX             EQU     $59FD
CLEAR_HDAY              EQU     $5a11
PUT_HDAYX               EQU     $5a16
FIXLEAD0                EQU     $5A2A
CLEAR_MONTH             EQU     $5a36
IPUT_MONTHX             EQU     $5a3b
CLEAR_DAY               EQU     $5a4f
IPUT_DAYX               EQU     $5a54
CLEAR_YEAR              EQU     $5a6f
IPUT_YEARX              EQU     $5a74
PUTHALFDATESEP          EQU     $5aa0
PUT_LETTERX             EQU     $5ace
PUT_HOURX               EQU     $5ad9
CLEAR_RANGE             EQU     $5793
SYSSYMVALS              EQU     $57b0
PHONE_NEXT_ENTRY        EQU     $616D
PHONE_PREV_ENTRY        EQU     $618C
PHONE_READ_CURRENT      EQU     $61A7
PHONE_SHOW_CURRENT      EQU     $61B0
PHONE_FIND_SCAN_ENTRY   EQU     $61F1
PHONE_READ_ENTRY        EQU     $622C
PHONE_READ_NEXT_ENTRY   EQU     $623D
PHONE_READ_FIRST_NEXT   EQU     $6251
UPDATE_SECONDS          EQU     $625E
ADJUST_TZ1TIME          EQU     $62d7
ADJUST_TZ2TIME          EQU     $6343
UPDATE_TZ1DISP          EQU     $63af
UPDATE_TZ2DISP          EQU     $63e6
TIME_SET_BLINKON        EQU     $6660
TIME_SET_BLINKOFF       EQU     $6664
TIME_SET_GET_TIMEPTR    EQU     $667b
TIME_SET_SHOWDISPLAY    EQU     $668a
TIME_GET_BLINKPARM      EQU     $66e5
SHOW_TIME_DISPLAY       EQU     $676A
CLEAR_PM                EQU     $6815
CLEAR_AM                EQU     $681c
SHOWNIGHT_SYM           EQU     $6840
SAY_HOLD_TO             EQU     $6855
FIX_TMAPP_DAY           EQU     $6861
TMAPP_COPYTZ1           EQU     $6881
TMAPP_COPYTZ2           EQU     $688c
GETTZNAME               EQU     $6897
GET_MONTHDAYX           EQU     $689F
GET_YEAR                EQU     $68b2
GET_HOURFORMAT          EQU     $68bb
GET_DATEFMT             EQU     $68cb
COPY_MDY                EQU     $68db
CHECK_TZ                EQU     $690e
CALC_DOW                EQU     $691c
TIME_BLINKSEL           EQU     $69A4
TIME_UPDATESEL          EQU     $69AF
TIME_SELMIN             EQU     $69ba
TIME_SELMAX             EQU     $69c5
LIST_GO_NEXT            EQU     $6A9F
LIST_GO_PREV            EQU     $6AAD
LIST_DISPLAY_CURRENT    EQU     $6ABB
CLEAR_WRISTAPPMEM       EQU     $6b1f
DELAY_X                 EQU     $6b31
DELAY_X16               EQU     $6b43
SHOWNOTE_SYM            EQU     $6C62
SHOWALARM_SYM           EQU     $6C76
ALARM_CHECK             EQU     $6BC4
ALARM_START_BLINK       EQU     $6E9D
ALARM_CALL_BLINK        EQU     $6EA4
ALARM_GET_BLINKPARM     EQU     $6EB7
ALARM_DISPLAY_CURRENT   EQU     $6EF4
ALARM_SHOW_HOURLYNOTE   EQU     $6F39
ALARM_SHOW_ALARMSYM     EQU     $6F4A
ALARM_SHOW_AMPM         EQU     $6F5B
ALARM_SHOW_TEXTCHAR     EQU     $6F7C
ALARM_FIX_HOUR          EQU     $6F88
ALARM_GET_DISPLAYHOUR   EQU     $6FA0
ALARM_SET_CURRENT       EQU     $6FBE
ALARM_SAVE_STATUS       EQU     $6FD5
ALARM_GET_TEXTOFFSET    EQU     $6FDC
ALARM_GET_DATAOFFSET    EQU     $6FE5
MASK_ALARMS             EQU     $6FF3
UNMASK_ALARMS           EQU     $7000
ANNIV_SHOW_DATE         EQU     $7184
ANNIV_SHOW_SCAN_DATE    EQU     $719F
ANNIV_SHOW_CURRENT      EQU     $71AC
SHOWREMIND_SYM          EQU     $71D6
OFFREMIND_SYM           EQU     $71EE
SAY_NO_ANN_ENTRIES      EQU     $71F5
APPT_SHOW_TIME          EQU     $73D7
APPT_SHOW_DATE          EQU     $7439
APPT_SHOW_SCAN          EQU     $7454
APPT_SHOW_CURRENT       EQU     $7461
APPT_SHOW_UPCOMING      EQU     $748E
SAY_NO_APPT_ENTRIES     EQU     $74BD