Repository navigation
Expand file tree
/
Copy pathplate_rom_annotated.DIS
More file actions
2055 lines (2054 loc) · 65.8 KB
/
Copy pathplate_rom_annotated.DIS
File metadata and controls
2055 lines (2054 loc) · 65.8 KB
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
;
; DHC11 - 68HC11 Disassembler v1.1 (c) Copyright 2000 Tech Edge Pty. Ltd.
;
; http://www.techedge.com.au/utils/dhc11.htm
;
;
; Disassembly of plate_rom.bin - from $F000 to $FFFF
;
PORTA = $0000
PORTC = $0003
PORTB = $0004
DDRB = $0006
DDRC = $0007
PORTD = $0008
DDRD = $0009
L0022 = $0022
PACTL = $0026
L0028 = $0028
L0029 = $0029
L002A = $002A
BAUD = $002B
SCCR2 = $002D
SCSR = $002E
SCDR = $002F
L0039 = $0039
L003A = $003A
Fmt_40 = $0040
Fmt_Nib1 = $0041
Fmt_Nib2 = $0042
Fmt_Nib3 = $0043
Fmt_Nib4 = $0044
L0045 = $0045
L0046 = $0046
DecAccum = $0047
L0048 = $0048
Flag49 = $0049
Flag4A = $004A
Flag4B = $004B
L004C = $004C ; mixed control flags: beep pattern, scan gating, setpoint-change state
L0051 = $0051
L0053 = $0053
L0055 = $0055
Scan_B0 = $0057
Scan_W1 = $0058
ScanSelector = $005A
L005B = $005B
L005C = $005C
L005D = $005D
L005E = $005E
L005F = $005F
L0060 = $0060
L0061 = $0061
L0062 = $0062
L0063 = $0063
L0064 = $0064
L0065 = $0065
Reply_66 = $0066
Reply_67 = $0067
Reply_68 = $0068
Reply_69 = $0069
Reply_6A = $006A
L006B = $006B
L0071 = $0071
L0072 = $0072
L0073 = $0073
StirDriveWord = $0074
L0076 = $0076 ; short countdown used by LF2AB/LF953
L0077 = $0077 ; beep pattern countdown / dash formatter helper
L0078 = $0078 ; beep pattern phase countdown
L0079 = $0079 ; beep pattern repeat countdown
L007B = $007B
L007C = $007C
Value_007D = $007D
Value_007F = $007F
L0081 = $0081
L0083 = $0083
L0085 = $0085
L0087 = $0087
L0089 = $0089
L008B = $008B
L008D = $008D
L008F = $008F
Value_0091 = $0091
L0093 = $0093
L0094 = $0094
L0096 = $0096
Value_0098 = $0098
L009A = $009A
L009B = $009B
TachCount = $009C
TachCountPrev = $009D
PortDPrev = $009E
StirTrim = $009F
L00A0 = $00A0
StirTickDiv = $00A2
Value_A3 = $00A3
ChangeFlag_A4 = $00A4
L00A5 = $00A5
L00A6 = $00A6
L00A7 = $00A7
L00A8 = $00A8
StirAdjustDiv = $00A9
Value_AA = $00AA
L00AB = $00AB
PortBShadow_or_Flags = $00AC
Value_00AD = $00AD
Value_00AE = $00AE
L00AF = $00AF
L00B0 = $00B0 ; startup scan selector seed
Status_B1 = $00B1 ; serial-visible mode bits: 0x08 probe target, 0x10 plate target
StirTarget = $00B2
StirMeasured = $00B3
SerialArgCount = $00B4
L00B5 = $00B5 ; current serial command byte / parser lead byte
Snapshot_Type = $00B6 ; TX byte count remaining for pending formatted reply
Snapshot_0098 = $00B7
Snapshot_0091 = $00B9
Snapshot_007D = $00BB
Snapshot_007F = $00BD
Snapshot_B3 = $00BF
Snapshot_B1 = $00C0
L00C1 = $00C1
H11Vec_00 = $E000
;
org $F000
;
;
F000 Reset:
F000 8E 00 FF ldS #$00FF
F003 86 3A ldaA #$3A
F005 97 39 staA L0039
F007 86 08 ldaA #$08
F009 97 00 staA PORTA
F00B 14 26 08 bset PACTL, #%00001000
F00E 86 FF ldaA #$FF
F010 97 06 staA DDRB
F012 86 83 ldaA #$83
F014 97 03 staA PORTC
F016 86 8F ldaA #$8F
F018 97 07 staA DDRC
F01A 86 10 ldaA #$10
F01C 97 08 staA PORTD
F01E 86 FA ldaA #$FA
F020 97 09 staA DDRD
F022 86 1D ldaA #$1D
F024 97 28 staA L0028
F026 86 34 ldaA #$34
F028 97 2B staA BAUD
F02A 86 0C ldaA #$0C
F02C 97 2D staA SCCR2
F02E 4F clrA
F02F CE 00 BF ldX #$00BF
F032 A7 40 LF032 staA 64, X
F034 09 decX
F035 26 FB bne LF032
F037 86 01 ldaA #$01
F039 97 62 staA L0062
F03B 97 A3 staA Value_A3
F03D 97 A9 staA StirAdjustDiv
F03F 97 A2 staA StirTickDiv
F041 97 A6 staA L00A6
F043 97 A8 staA L00A8
F045 97 A7 staA L00A7
F047 97 A4 staA ChangeFlag_A4
F049 97 A5 staA L00A5
F04B 97 AA staA Value_AA
F04D CE 0E 10 ldX #$0E10
F050 DF 55 stX L0055
F052 CE 0D 2F ldX #$0D2F
F055 DF A0 stX L00A0
F057 86 51 ldaA #$51
F059 97 B0 staA L00B0
F05B CC FF FF ldD #$FFFF
F05E DD 74 stD StirDriveWord
F060 14 4B 08 bset Flag4B, #%00001000
F063 86 50 ldaA #$50
F065 BD FE 1B call PortB_ScanNormal
F068 96 57 ldaA Scan_B0
F06A 81 D5 cmpA #$D5
F06C 26 26 bne LF094
F06E 86 52 ldaA #$52
F070 BD FE 1B call PortB_ScanNormal
F073 13 57 20 3E brclr Scan_B0, #%00100000, LF0B5
F077 96 57 ldaA Scan_B0
F079 97 B1 staA Status_B1
F07B DC 58 ldD Scan_W1
F07D DD 98 stD Value_0098
F07F 86 51 ldaA #$51
F081 BD FE 1B call PortB_ScanNormal
F084 96 57 ldaA Scan_B0
F086 97 B2 staA StirTarget
F088 DC 58 ldD Scan_W1
F08A DD 91 stD Value_0091
F08C BD F2 F9 call InitAfterScan
F08F 14 4A 20 bset Flag4A, #%00100000
F092 20 21 jr LF0B5
;
F094 86 52 LF094 ldaA #$52
F096 4A LF096 decA
F097 7F 00 57 clr >Scan_B0
F09A BD FE 16 call PortB_ScanSpecial
F09D 4D tstA
F09E 26 F6 bne LF096
F0A0 86 D5 ldaA #$D5
F0A2 97 57 staA Scan_B0
F0A4 86 50 ldaA #$50
F0A6 BD FE 16 call PortB_ScanSpecial
F0A9 BD FE 1B call PortB_ScanNormal
F0AC 96 57 ldaA Scan_B0
F0AE 81 D5 cmpA #$D5
F0B0 27 03 beq LF0B5
F0B2 15 4B 08 bclr Flag4B, #%00001000
F0B5 0E LF0B5 ei
F0B6 15 4B 20 bclr Flag4B, #%00100000
F0B9 13 4B 20 FC LF0B9 brclr Flag4B, #%00100000, LF0B9
F0BD 15 4B 20 bclr Flag4B, #%00100000
F0C0 CC 05 1E ldD #$051E
F0C3 83 00 01 LF0C3 subD #$0001
F0C6 26 FB bne LF0C3
F0C8 C6 B4 ldaB #$B4
F0CA 13 4B 20 05 brclr Flag4B, #%00100000, LF0D3
F0CE 14 4B 04 bset Flag4B, #%00000100
F0D1 C6 96 ldaB #$96
F0D3 D7 9F LF0D3 staB StirTrim
F0D5 14 22 80 bset L0022, #%10000000
F0D8 BD F2 AB LF0D8 call LF2AB
F0DB BD F0 EE LF0DB call LF0EE
F0DE CE FE C4 ldX #$FEC4
F0E1 BD F2 97 call LF297
F0E4 24 F5 bcc LF0DB
F0E6 16 tAB
F0E7 BD F2 A6 call LF2A6
F0EA 25 EF bcs LF0DB
F0EC 20 EA jr LF0D8
;
F0EE BD F0 F9 LF0EE: call SciParser
F0F1 96 6B ldaA L006B
F0F3 27 F9 beq LF0EE
F0F5 7F 00 6B clr >L006B
F0F8 39 ret
;
F0F9 SciParser: ; top-level SCI parser: immediate, raw16le, decimal+CR
F0F9 13 2E 20 1A brclr SCSR, #%00100000, LF117
F0FD D6 2F ldaB SCDR
F0FF 86 FF ldaA #$FF
F101 97 C1 staA L00C1
F103 96 B4 ldaA SerialArgCount
F105 26 33 bne LF13A
F107 D7 B5 staB L00B5
F109 17 tBA
F10A 84 7F andA #%01111111
F10C CE FF 0A ldX #$FF0A
F10F BD F2 97 call LF297
F112 24 05 bcc LF119
F114 BD F2 A6 call LF2A6
F117 20 1F LF117 jr LF138
;
F119 CE FF 2F LF119 ldX #$FF2F
F11C BD F2 97 call LF297
F11F 24 06 bcc LF127
F121 86 02 ldaA #$02
F123 97 B4 staA SerialArgCount
F125 20 0C jr LF133
;
F127 CE FF 3C LF127 ldX #$FF3C
F12A BD F2 97 call LF297
F12D 24 77 bcc LF1A6
F12F 86 FF ldaA #$FF
F131 97 B4 staA SerialArgCount
F133 CE 00 00 LF133 ldX #$0000
F136 DF 47 stX DecAccum
F138 20 6F LF138 jr LF1A9
;
F13A 81 FF LF13A cmpA #$FF
F13C 26 3D bne LF17B
F13E C4 7F andB #%01111111
F140 C1 0D cmpB #$0D
F142 26 18 bne LF15C
F144 96 B5 ldaA L00B5
F146 84 7F andA #%01111111
F148 CE FF 75 ldX #$FF75
F14B BD F2 97 call LF297
F14E DC 47 ldD DecAccum
F150 BD F2 A6 call LF2A6
F153 25 51 bcs LF1A6
F155 DD 47 stD DecAccum
F157 CE FF 3C ldX #$FF3C
F15A 20 3E jr LF19A
;
F15C C1 30 LF15C cmpB #$30
F15E 25 49 bcs LF1A9
F160 C1 3A cmpB #$3A
F162 24 45 bcc LF1A9
F164 C4 0F andB #%00001111
F166 37 pushB
F167 DC 47 ldD DecAccum
F169 BD FD 74 call Fmt_ByteToWord
F16C 24 03 bcc LF171
F16E 33 popB
F16F 20 35 jr LF1A6
;
F171 DD 47 LF171 stD DecAccum
F173 33 popB
F174 4F clrA
F175 D3 47 addD DecAccum
F177 DD 47 stD DecAccum
F179 20 2E jr LF1A9
;
F17B 96 47 LF17B ldaA DecAccum
F17D 97 48 staA L0048
F17F D7 47 staB DecAccum
F181 7A 00 B4 dec >SerialArgCount
F184 26 23 bne LF1A9
F186 CE FF 68 ldX #$FF68
F189 96 B5 ldaA L00B5
F18B 84 7F andA #%01111111
F18D BD F2 97 call LF297
F190 DC 47 ldD DecAccum
F192 BD F2 A6 call LF2A6
F195 25 0F bcs LF1A6
F197 CE FF 2F ldX #$FF2F
F19A 96 B5 LF19A ldaA L00B5
F19C 84 7F andA #%01111111
F19E BD F2 97 call LF297
F1A1 DC 47 ldD DecAccum
F1A3 BD F2 A6 call LF2A6
F1A6 7F 00 B4 LF1A6 clr >SerialArgCount
F1A9 D6 B6 LF1A9 ldaB Snapshot_Type
F1AB 27 0F beq LF1BC
F1AD 13 2E 80 0B brclr SCSR, #%10000000, LF1BC
F1B1 CE 00 B6 ldX #$00B6
F1B4 3A aBX
F1B5 A6 00 ldaA 0, X
F1B7 97 2F staA SCDR
F1B9 7A 00 B6 dec >Snapshot_Type
F1BC BD F2 8E LF1BC call LF28E
F1BF PortB_ChangePoll:
F1BF 7F 00 06 clr >DDRB
F1C2 01 nop
F1C3 01 nop
F1C4 01 nop
F1C5 96 04 ldaA PORTB
F1C7 C6 FF ldaB #$FF
F1C9 D7 06 staB DDRB
F1CB 16 tAB
F1CC 98 AC xorA PortBShadow_or_Flags
F1CE D7 AC staB PortBShadow_or_Flags
F1D0 84 01 andA #%00000001
F1D2 27 04 beq LF1D8
F1D4 86 01 ldaA #$01
F1D6 97 A4 staA ChangeFlag_A4
F1D8 13 B1 18 10 LF1D8 brclr Status_B1, #%00011000, LF1EC
F1DC DC 98 ldD Value_0098
F1DE 27 0C beq LF1EC
F1E0 12 B1 10 04 brset Status_B1, #%00010000, LF1E8
F1E4 DC 7F ldD Value_007F
F1E6 20 02 jr LF1EA
;
F1E8 DC 7D LF1E8 ldD Value_007D
F1EA 26 05 LF1EA bne LF1F1
F1EC 7F 00 9B LF1EC clr >L009B
F1EF 20 3E jr LF22F
;
F1F1 7D 00 9B LF1F1 tst >L009B
F1F4 26 16 bne LF20C
F1F6 BD F2 F9 call InitAfterScan
F1F9 7F 00 9A clr >L009A
F1FC DC 93 ldD L0093
F1FE 1A 93 91 cmpD Value_0091
F201 25 03 bcs LF206
F203 7A 00 9A dec >L009A
F206 86 01 LF206 ldaA #$01
F208 97 9B staA L009B
F20A 20 23 jr LF22F
;
F20C 96 9B LF20C ldaA L009B
F20E 4A decA
F20F 26 1E bne LF22F
F211 DC 93 ldD L0093
F213 37 pushB
F214 36 pushA
F215 1A 93 91 cmpD Value_0091
F218 49 rolA
F219 36 pushA
F21A DC 96 ldD L0096
F21C 1A 93 91 cmpD Value_0091
F21F 49 rolA
F220 33 popB
F221 1B aBA
F222 46 rorA
F223 32 popA
F224 33 popB
F225 24 0A bcc LF231
F227 DC 91 ldD Value_0091
F229 DD 93 stD L0093
F22B 86 02 ldaA #$02
F22D 97 9B staA L009B
F22F DC 93 LF22F ldD L0093
F231 DD 96 LF231 stD L0096
F233 13 4A 40 56 brclr Flag4A, #%01000000, LF28D
F237 12 4C 04 52 brset L004C, #%00000100, LF28D
F23B 12 4C 40 29 brset L004C, #%01000000, LF268
F23F ScanScheduler:
F23F 96 5A ldaA ScanSelector
F241 81 4B cmpA #$4B
F243 27 1E beq LF263
F245 4C incA
F246 97 5A staA ScanSelector
F248 BD FE 1B call PortB_ScanNormal
F24B 96 57 ldaA Scan_B0
F24D 27 14 beq LF263
F24F CE FE C4 ldX #$FEC4
F252 BD F2 97 call LF297
F255 24 0C bcc LF263
F257 16 tAB
F258 84 88 andA #%10001000
F25A 27 02 beq LF25E
F25C DC 58 ldD Scan_W1
F25E BD F2 A6 LF25E call LF2A6
F261 20 2A jr LF28D
;
F263 15 4A 40 LF263 bclr Flag4A, #%01000000
F266 20 25 jr LF28D
;
F268 DC 7F LF268 ldD Value_007F
F26A 12 B1 08 02 brset Status_B1, #%00001000, LF270
F26E DC 7D ldD Value_007D
F270 27 1B LF270 beq LF28D
F272 1A 93 91 cmpD Value_0091
F275 49 rolA
F276 36 pushA
F277 12 B1 08 04 brset Status_B1, #%00001000, LF27F
F27B DC 87 ldD L0087
F27D 20 02 jr LF281
;
F27F DC 85 LF27F ldD L0085
F281 1A 93 91 LF281 cmpD Value_0091
F284 49 rolA
F285 33 popB
F286 1B aBA
F287 46 rorA
F288 24 03 bcc LF28D
F28A 15 4C 40 bclr L004C, #%01000000
F28D 39 LF28D ret
;
F28E C6 55 LF28E: ldaB #$55
F290 D7 3A staB L003A
F292 C6 AA ldaB #$AA
F294 D7 3A staB L003A
F296 39 ret
;
F297 6D 00 LF297: tst 0, X
F299 27 0A beq LF2A5
F29B A1 00 cmpA 0, X
F29D 27 05 beq LF2A4
F29F 08 incX
F2A0 08 incX
F2A1 08 incX
F2A2 20 F3 jr LF297
;
F2A4 0D LF2A4 sec
F2A5 39 LF2A5 ret
;
F2A6 08 LF2A6: incX
F2A7 EE 00 ldX 0, X
F2A9 6E 00 jmp 0, X
;
F2AB 86 0F LF2AB: ldaA #$0F
F2AD 97 76 staA L0076
F2AF 14 4C 20 bset L004C, #%00100000
F2B2 39 ret
;
F2B3 Cmd_G_or_p: ; trigger 3-chirp alarm pattern used at timer expiry
F2B3 86 03 ldaA #$03
F2B5 97 77 staA L0077
F2B7 86 06 ldaA #$06
F2B9 97 78 staA L0078
F2BB 86 09 ldaA #$09
F2BD 97 79 staA L0079
F2BF 14 4C 08 bset L004C, #%00001000
F2C2 39 ret
;
F2C3 Cmd_32:
F2C3 96 B0 ldaA L00B0
F2C5 81 51 cmpA #$51
F2C7 27 04 beq LF2CD
F2C9 81 52 cmpA #$52
F2CB 26 04 bne Cmd_C_or_e
F2CD 86 01 LF2CD ldaA #$01
F2CF 97 A4 staA ChangeFlag_A4
F2D1 Cmd_C_or_e: ; clear active probe/plate target mode bits
F2D1 15 B1 18 bclr Status_B1, #%00011000
F2D4 7F 00 72 clr >L0072
F2D7 BD F3 6E call Push_B2_0091_ToScan
F2DA 39 ret
;
F2DB Cmd_5A:
F2DB 14 4C 40 bset L004C, #%01000000
F2DE Cmd_a_or_b: ; decimal probe target setter (C/F already normalized to raw)
F2DE 15 B1 18 bclr Status_B1, #%00011000
F2E1 14 B1 08 bset Status_B1, #%00001000
F2E4 20 09 jr LF2EF
;
;
F2E6 db $14, $4C, $40
;
F2E9 Cmd_c_or_d: ; decimal plate target setter (C/F already normalized to raw)
F2E9 15 B1 18 bclr Status_B1, #%00011000
F2EC 14 B1 10 bset Status_B1, #%00010000
F2EF DD 91 LF2EF stD Value_0091
F2F1 7F 00 9B clr >L009B
F2F4 BD F3 6E call Push_B2_0091_ToScan
F2F7 DC 91 ldD Value_0091
F2F9 InitAfterScan:
F2F9 DD 93 stD L0093
F2FB 83 2B F2 subD #$2BF2
F2FE 24 01 bcc LF301
F300 4F clrA
F301 13 B1 10 03 LF301 brclr Status_B1, #%00010000, LF308
F305 44 lsrA
F306 20 04 jr LF30C
;
F308 2A 02 LF308 bpl LF30C
F30A 86 7F ldaA #$7F
F30C 97 7B LF30C staA L007B
F30E 0C clc
F30F 39 ret
;
F310 5F LF310: clrB
F311 StirTargetZero:
F311 D7 B2 staB StirTarget
F313 BD F3 6E call Push_B2_0091_ToScan
F316 39 ret
;
;
F317 db $14, $4C, $04, $15, $4B, $10, $DD, $AD, $7F, $00
F321 db $AF, $20, $0B, $14, $4C, $04, $15, $4B, $10, $DD
F32B db $AE, $7F, $00, $AD, $C3, $00, $00, $26, $05, $15
F335 db $4C, $04, $20, $07, $86, $0A, $97, $A3, $14, $4B
F33F db $10, $0C, $39
;
F342 Cmd_E_or_g_or_h: ; raw/decimal ramp setter
F342 DD 98 stD Value_0098
F344 26 05 bne LF34B
F346 DC 91 ldD Value_0091
F348 BD F2 F9 call InitAfterScan
F34B BD F3 6E LF34B call Push_B2_0091_ToScan
F34E 0C clc
F34F 39 ret
;
F350 Cmd_33:
F350 0F di
F351 96 4A ldaA Flag4A
F353 88 10 xorA #%00010000
F355 97 4A staA Flag4A
F357 0E ei
F358 0C clc
F359 39 ret
;
;
F35A db $12, $4B, $08, $02, $0D, $39, $96, $B1, $88, $20
F364 db $97, $B1, $0F, $D6, $4A, $C8, $20, $D7, $4A, $0E
;
F36E Push_B2_0091_ToScan:
F36E 96 B2 ldaA StirTarget
F370 97 57 staA Scan_B0
F372 DC 91 ldD Value_0091
F374 DD 58 stD Scan_W1
F376 86 51 ldaA #$51
F378 BD FE 16 call PortB_ScanSpecial
F37B 96 B1 ldaA Status_B1
F37D 97 57 staA Scan_B0
F37F DC 98 ldD Value_0098
F381 DD 58 stD Scan_W1
F383 86 52 ldaA #$52
F385 BD FE 16 call PortB_ScanSpecial
F388 0C clc
F389 39 ret
;
F38A Cmd_64:
F38A BD FD 6C call LFD6C
F38D 24 0D bcc Cmd_41_or_42
F38F 39 ret
;
F390 Cmd_61_or_63:
F390 BD FD 64 call LFD64
F393 24 07 bcc Cmd_41_or_42
F395 39 ret
;
F396 Cmd_51_or_52:
F396 BD FD 60 call LFD60
F399 24 01 bcc Cmd_41_or_42
F39B 39 ret
;
F39C Cmd_41_or_42:
F39C 1A 83 23 28 cmpD #$2328
F3A0 25 30 bcs LF3D2
F3A2 1A 83 AF C9 cmpD #$AFC9
F3A6 24 2A bcc LF3D2
F3A8 0C clc
F3A9 39 ret
;
F3AA Cmd_67_or_68:
F3AA BD FD 44 call LFD44
F3AD 24 0D bcc Cmd_45
F3AF 39 ret
;
F3B0 Cmd_66:
F3B0 BD FD 49 call LFD49
F3B3 24 07 bcc Cmd_45
F3B5 39 ret
;
F3B6 Cmd_11_or_33:
F3B6 BD FD 40 call LFD40
F3B9 24 01 bcc Cmd_45
F3BB 39 ret
;
F3BC Cmd_45:
F3BC 1A 83 13 84 cmpD #$1384
F3C0 24 10 bcc LF3D2
F3C2 0C clc
F3C3 39 ret
;
F3C4 Cmd_53_or_66:
F3C4 CE 00 0A ldX #$000A
F3C7 BD FD FC call LFDFC
F3CA Cmd_44:
F3CA 1A 83 00 97 cmpD #$0097
F3CE 24 02 bcc LF3D2
F3D0 0C clc
F3D1 39 ret
;
F3D2 0D LF3D2 sec
F3D3 39 ret
;
F3D4 Cmd_12_or_13:
F3D4 BD FD C9 call Fmt_Helper2
F3D7 0C clc
F3D8 39 ret
;
F3D9 Cmd_F_Snapshot: ; build 10-byte binary snapshot frame for command F
F3D9 96 B1 ldaA Status_B1
F3DB 97 C0 staA Snapshot_B1
F3DD 96 B3 ldaA StirMeasured
F3DF 97 BF staA Snapshot_B3
F3E1 DC 7F ldD Value_007F
F3E3 DD BD stD Snapshot_007F
F3E5 DC 7D ldD Value_007D
F3E7 DD BB stD Snapshot_007D
F3E9 DC 91 ldD Value_0091
F3EB DD B9 stD Snapshot_0091
F3ED DC 98 ldD Value_0098
F3EF DD B7 stD Snapshot_0098
F3F1 86 0A ldaA #$0A
F3F3 97 B6 staA Snapshot_Type
F3F5 39 ret
;
F3F6 Cmd_69: ; command i: probe temperature in C
F3F6 DC 7F ldD Value_007F
F3F8 20 06 jr LF400
;
F3FA Cmd_j: ; command j: probe temperature in F
F3FA DC 7F ldD Value_007F
F3FC 20 0B jr LF409
;
F3FE Cmd_k: ; command k: plate temperature in C
F3FE DC 7D ldD Value_007D
F400 27 51 LF400 beq LF453
F402 BD FD B5 call LFDB5
F405 20 1D jr LF424
;
F407 Cmd_l: ; command l: plate temperature in F
F407 DC 7D ldD Value_007D
F409 27 48 LF409 beq LF453
F40B BD FD BF call LFDBF
F40E 20 14 jr LF424
;
F410 Cmd_m_MeasuredStir: ; command m: measured stir speed in RPM
F410 D6 B3 ldaB StirMeasured
F412 4F clrA
F413 BD FD 74 call Fmt_ByteToWord
F416 20 0C jr LF424
;
F418 Cmd_n: ; command n: ramp in C/hour
F418 DC 98 ldD Value_0098
F41A BD FD 52 call LFD52
F41D 20 05 jr LF424
;
F41F Cmd_o: ; command o: ramp in F/hour
F41F DC 98 ldD Value_0098
F421 BD FD 59 call LFD59
F424 BD FD C9 LF424 call Fmt_Helper2
F427 CE 00 BC ldX #$00BC
F42A 37 pushB
F42B BD F4 64 call LF464
F42E 32 popA
F42F BD F4 64 call LF464
F432 86 0D ldaA #$0D
F434 BD F4 71 call LF471
F437 86 0A ldaA #$0A
F439 BD F4 71 call LF471
F43C CE 00 BC ldX #$00BC
F43F C6 06 ldaB #$06
F441 A6 00 LF441 ldaA 0, X
F443 84 7F andA #%01111111
F445 81 30 cmpA #$30
F447 26 06 bne LF44F
F449 09 decX
F44A 5A decB
F44B C1 03 cmpB #$03
F44D 26 F2 bne LF441
F44F D7 B6 LF44F staB Snapshot_Type
F451 0D sec
F452 39 ret
;
F453 CE 00 B8 LF453 ldX #$00B8
F456 86 0D ldaA #$0D
F458 BD F4 71 call LF471
F45B 86 0A ldaA #$0A
F45D BD F4 71 call LF471
F460 C6 02 ldaB #$02
F462 20 EB jr LF44F
;
F464 36 LF464: pushA
F465 44 lsrA
F466 44 lsrA
F467 44 lsrA
F468 44 lsrA
F469 BD F4 6F call LF46F
F46C 32 popA
F46D 84 0F andA #%00001111
F46F 8A 30 LF46F: oraA #%00110000
F471 7D 00 B5 LF471: tst >L00B5
F474 2A 02 bpl LF478
F476 8A 80 oraA #%10000000
F478 A7 00 LF478 staA 0, X
F47A 09 decX
F47B 39 ret
;
F47C Cmd_41_legacy:
F47C BD F4 A2 call LF4A2
F47F 24 1F bcc LF4A0
F481 13 4B 08 08 brclr Flag4B, #%00001000, LF48D
F485 81 33 cmpA #$33
F487 26 04 bne LF48D
F489 D7 B0 staB L00B0
F48B 20 02 jr LF48F
;
F48D 97 B0 LF48D staA L00B0
F48F C6 01 LF48F ldaB #$01
F491 D7 A4 staB ChangeFlag_A4
F493 8A 80 oraA #%10000000
F495 CE FE C4 ldX #$FEC4
F498 BD F2 97 call LF297
F49B DC 45 ldD L0045
F49D BD F2 A6 call LF2A6
F4A0 0C LF4A0 clc
F4A1 39 ret
;
F4A2 96 B0 LF4A2: ldaA L00B0
F4A4 36 pushA
F4A5 7F 00 B0 clr >L00B0
F4A8 86 0B ldaA #$0B
F4AA 97 66 staA Reply_66
F4AC 13 4B 08 08 brclr Flag4B, #%00001000, LF4B8
F4B0 15 49 40 bclr Flag49, #%01000000
F4B3 15 4A 0F bclr Flag4A, #%00001111
F4B6 20 06 jr LF4BE
;
F4B8 15 49 C0 LF4B8 bclr Flag49, #%11000000
F4BB 15 4A 0F bclr Flag4A, #%00001111
F4BE 15 4B 01 LF4BE bclr Flag4B, #%00000001
F4C1 86 0A LF4C1 ldaA #$0A
F4C3 97 67 staA Reply_67
F4C5 97 68 staA Reply_68
F4C7 97 69 staA Reply_69
F4C9 97 6A staA Reply_6A
F4CB 14 4A 80 bset Flag4A, #%10000000
F4CE BD F2 AB call LF2AB
F4D1 BD F0 EE LF4D1 call LF0EE
F4D4 81 42 cmpA #$42
F4D6 26 0C bne LF4E4
F4D8 32 LF4D8 popA
F4D9 97 B0 staA L00B0
F4DB 15 4A 80 bclr Flag4A, #%10000000
F4DE 86 01 ldaA #$01
F4E0 97 A4 staA ChangeFlag_A4
F4E2 0C clc
F4E3 39 ret
;
F4E4 81 13 LF4E4 cmpA #$13
F4E6 27 43 beq LF52B
F4E8 81 12 cmpA #$12
F4EA 27 44 beq LF530
F4EC 81 52 cmpA #$52
F4EE 27 49 beq LF539
F4F0 81 51 cmpA #$51
F4F2 27 4A beq LF53E
F4F4 12 4B 01 16 brset Flag4B, #%00000001, LF50E
F4F8 81 53 cmpA #$53
F4FA 27 47 beq LF543
F4FC 12 4B 08 06 brset Flag4B, #%00001000, LF506
F500 81 11 cmpA #$11
F502 27 44 beq LF548
F504 20 CB jr LF4D1
;
F506 81 33 LF506 cmpA #$33
F508 27 3E beq LF548
F50A 13 49 80 C3 brclr Flag49, #%10000000, LF4D1
F50E 81 41 LF50E cmpA #$41
F510 26 BF bne LF4D1
F512 96 4B ldaA Flag4B
F514 88 01 xorA #%00000001
F516 97 4B staA Flag4B
F518 84 01 andA #%00000001
F51A 27 A5 beq LF4C1
F51C 86 0D ldaA #$0D
F51E 97 67 staA Reply_67
F520 97 68 staA Reply_68
F522 97 69 staA Reply_69
F524 97 6A staA Reply_6A
F526 BD F2 AB call LF2AB
F529 20 A6 jr LF4D1
;
F52B 14 4A 08 LF52B bset Flag4A, #%00001000
F52E 20 03 jr LF533
;
F530 14 49 40 LF530 bset Flag49, #%01000000
F533 C6 0E LF533 ldaB #$0E
F535 D7 66 staB Reply_66
F537 20 16 jr LF54F
;
F539 14 4A 02 LF539 bset Flag4A, #%00000010
F53C 20 11 jr LF54F
;
F53E 14 4A 01 LF53E bset Flag4A, #%00000001
F541 20 0C jr LF54F
;
F543 14 4A 04 LF543 bset Flag4A, #%00000100
F546 20 07 jr LF54F
;
F548 12 4B 08 03 LF548 brset Flag4B, #%00001000, LF54F
F54C 14 49 80 bset Flag49, #%10000000
F54F 36 LF54F pushA
F550 4F LF550 clrA
F551 5F clrB
F552 DD 45 LF552 stD L0045
F554 BD FD C9 call Fmt_Helper2
F557 BD FD 15 call SplitWordToNibbles
F55A BD FD 2F call LFD2F
F55D BD F2 AB call LF2AB
F560 BD F0 EE LF560 call LF0EE
F563 81 42 cmpA #$42
F565 26 0A bne LF571
F567 96 45 ldaA L0045
F569 9A 46 oraA L0046
F56B 26 E3 bne LF550
F56D 32 popA
F56E 7E F4 D8 jmp LF4D8
;
F571 81 41 LF571 cmpA #$41
F573 27 15 beq LF58A
F575 BD FD EE call LFDEE
F578 96 67 ldaA Reply_67
F57A 26 E4 bne LF560
F57C 37 pushB
F57D DC 45 ldD L0045
F57F BD FD 74 call Fmt_ByteToWord
F582 DD 45 stD L0045
F584 33 popB
F585 4F clrA
F586 D3 45 addD L0045
F588 20 C8 jr LF552
;
F58A 32 LF58A popA
F58B 36 pushA
F58C CE FF 52 ldX #$FF52
F58F BD F2 97 call LF297
F592 24 09 bcc LF59D
F594 DC 45 ldD L0045
F596 BD F2 A6 call LF2A6
F599 25 C5 bcs LF560
F59B DD 45 stD L0045
F59D 15 4A 80 LF59D bclr Flag4A, #%10000000
F5A0 32 popA
F5A1 33 popB
F5A2 0D sec
F5A3 39 ret
;
;
F5A4 db $12, $4B, $08, $0C, $7D, $00, $B0, $27, $06, $D7
F5AE db $B0, $86, $01, $97, $A4, $39, $96, $B0, $36, $7F
F5B8 db $00, $B0, $7F, $00, $5A, $15, $4C, $02, $BD, $F2
F5C2 db $AB, $96, $5A, $BD, $FE, $1B, $15, $49, $40, $15
F5CC db $4A, $0F, $14, $49, $80, $12, $4C, $02, $34, $96
F5D6 db $5A, $26, $04, $C6, $0B, $20, $17, $96, $57, $84
F5E0 db $77, $BD, $FD, $EE, $13, $57, $80, $04, $86, $0A
F5EA db $20, $0A, $13, $57, $08, $04, $86, $0D, $20, $02
F5F4 db $86, $0B, $DD, $69, $D6, $5A, $4F, $BD, $FD, $C9
F5FE db $17, $CE, $00, $67, $BD, $FD, $1C, $86, $10, $97
F608 db $66, $BD, $F0, $F9, $12, $6E, $04, $0F, $96, $AB
F612 db $26, $25, $86, $32, $97, $AB, $BD, $F6, $7C, $25
F61C db $EC, $20, $A4, $12, $6F, $04, $12, $96, $AB, $26
F626 db $12, $86, $32, $97, $AB, $BD, $F6, $96, $25, $D9
F630 db $15, $4C, $02, $20, $E8, $86, $96, $97, $AB, $13
F63A db $4C, $02, $0F, $96, $57, $CE, $FF, $C3, $BD, $F2
F644 db $97, $24, $05, $DC, $58, $BD, $F2, $A6, $96, $6B
F64E db $27, $B9, $7F, $00, $6B, $CE, $FF, $8B, $BD, $F2
F658 db $97, $24, $AE, $BD, $F2, $A6, $25, $03, $BD, $F2
F662 db $AB, $20, $B8
;
F665 Tbl_11_Handler:
F665 38 popX
F666 32 popA
F667 97 B0 staA L00B0
F669 15 4A 80 bclr Flag4A, #%10000000
F66C 86 01 ldaA #$01
F66E 97 A4 staA ChangeFlag_A4
F670 0C clc
F671 39 ret
;
F672 Tbl_33_Handler:
F672 12 4C 02 06 brset L004C, #%00000010, LF67C
F676 96 57 ldaA Scan_B0
F678 84 88 andA #%10001000
F67A 26 15 bne LF691
F67C 96 5A LF67C ldaA ScanSelector
F67E 81 4B cmpA #$4B
F680 27 0D beq LF68F
F682 4C incA
F683 BD FE 1B call PortB_ScanNormal
F686 7D 00 57 tst >Scan_B0
F689 27 04 beq LF68F
F68B 97 5A staA ScanSelector
F68D 20 0B jr LF69A
;
F68F 0D LF68F sec
F690 39 ret
;
F691 14 4C 02 LF691 bset L004C, #%00000010
F694 0C clc
F695 39 ret
;
F696 Tbl_43_Handler:
F696 13 4C 02 05 brclr L004C, #%00000010, LF69F
F69A 15 4C 02 LF69A bclr L004C, #%00000010
F69D 0C clc
F69E 39 ret
;
F69F 96 5A LF69F ldaA ScanSelector
F6A1 27 EC beq LF68F
F6A3 4A decA
F6A4 97 5A staA ScanSelector
F6A6 27 09 beq LF6B1
F6A8 BD FE 1B call PortB_ScanNormal
F6AB 96 57 ldaA Scan_B0
F6AD 84 88 andA #%10001000
F6AF 26 E0 bne LF691
F6B1 0C LF6B1 clc
F6B2 39 ret
;
F6B3 Tbl_41_Handler:
F6B3 BD F4 A2 call LF4A2
F6B6 24 F9 bcc LF6B1
F6B8 13 4B 01 04 brclr Flag4B, #%00000001, LF6C0
F6BC 8A 08 oraA #%00001000
F6BE 20 02 jr Tbl_12_13_31_32_51_52_53_Handler
;
F6C0 8A 80 LF6C0 oraA #%10000000
F6C2 Tbl_12_13_31_32_51_52_53_Handler:
F6C2 36 pushA
F6C3 96 5A ldaA ScanSelector
F6C5 81 4B cmpA #$4B
F6C7 32 popA
F6C8 27 C5 beq LF68F
F6CA 7C 00 5A inc >ScanSelector
F6CD 97 57 staA Scan_B0
F6CF DC 45 ldD L0045
F6D1 DD 58 stD Scan_W1
F6D3 96 5A ldaA ScanSelector
F6D5 BD F2 8E LF6D5 call LF28E
F6D8 BD FE 16 call PortB_ScanSpecial
F6DB 4C incA
F6DC 81 4C cmpA #$4C
F6DE 25 F5 bcs LF6D5
F6E0 20 B8 jr LF69A
;
F6E2 Tbl_42_Handler:
F6E2 96 5A ldaA ScanSelector
F6E4 27 1F beq LF705
F6E6 86 4B ldaA #$4B
F6E8 7F 00 57 clr >Scan_B0
F6EB BD F2 8E LF6EB call LF28E
F6EE BD FE 16 call PortB_ScanSpecial
F6F1 91 5A cmpA ScanSelector
F6F3 27 03 beq LF6F8
F6F5 4A decA
F6F6 20 F3 jr LF6EB
;
F6F8 BD FE 1B LF6F8 call PortB_ScanNormal