-
Notifications
You must be signed in to change notification settings - Fork 0
/
SAM Disassembly_acme.S
executable file
·2756 lines (2557 loc) · 79.8 KB
/
SAM Disassembly_acme.S
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
; Target assembler: acme v0.97.0 []
; 6502bench SourceGen v1.8.3
!cpu 6502
MON_CSWL = $36 ;character output hook (lo)
MON_CSWH = $37 ;character output hook (hi)
SPKR = $c030 ;RW toggle speaker
MON_BELL1 = $fbdd ;sound bell regardless of output device
MON_COUT1 = $fdf0 ;print Acc to screen
* = $4000
jmp Setup ;CALL 16384
jmp PhenomeMode ;CALL 16387
jmp TextMode ;CALL 16390
Speed !byte $46 ;$4009/16393: Speed Setting (Default value $3C/60)
Pitch !byte $f0 ;$400A/16394: Pitch Setting (Default value $48/72)
Error !byte $ff ;$400B/16395: Error
Echo !byte $00 ;$400C/16396: $00=no echo to screen, $FF=echo char to screen
Mode !byte $00 ;$400D/16397: $00=phenome mode, $ff=text mode
BufPos !byte $2a ;Current input buffer position
A_Store !byte $8d ;Accumulator storage
InputBuf !text "BAH7T, AH4DHER TAYMZ AY TAO5K VEH4RIY LOW." ;SAM input buffer ($100 bytes)
!byte $0d
!text "TIXN WER7DZ."
!byte $0d
!text "THAHSAYZER-AA5N AH DIH2SK."
!byte $0d
!hex 4a1fcd0611c3bc1bfe3bc2721fcd0a20cd06113a8501fe04c2521f3a8901fe0a
!hex cabc1bfe1aca8b1ffe21cabc1bc3521ffe21cabc1bfe1aca8b1f3e53cd1802c3
!hex 521f7b956f7a9c67c921cf017e34b7caa71bcd0611cda620211101360d210d01
!hex cd12022acb01eb2ad401cd841fe52acd01eb2ad401cd841f5c1600e1cd6918eb
!hex cda92021110111d61f1ab7cae41f772313c3cb1f482055534520464143544f52
!hex 0d00210e01cd12022aed2022d0
Setup lda #<AddChar ;Change Character SWitch to point to SAM input parser
sta MON_CSWL
lda #>AddChar
sta MON_CSWH
lda #$00
sta Echo ;Turn echo off
sta BufPos ;Reset current buffer position
lda #$ff
sta Mode ;Set text entry mode
rts
AddChar sta A_Store ;Add character to input buffer
txa
pha
tya
pha
lda A_Store
and #$7f ;High ASCII?
cmp #$20 ;Do we have a control character?
bcc Control1
ldy BufPos
sta InputBuf,y ;Add character to SAM input buffer
inc BufPos
bit Echo
bpl Done
ora #$80
jsr MON_COUT1 ;Echo output to screen
Done pla ;Done adding characters to buffer
tay
pla
tax
lda A_Store
rts
Control1 cmp #$05 ;Ctrl-E
bne Control2
lda #$ff
sta Echo ;Turn echo on
bne Done
Control2 cmp #$0e ;Ctrl-N
bne Control3
lda #$00
sta Echo ;Turn echo off (Default in Setup)
beq Done
Control3 cmp #$14 ;Ctrl-T
bne Control4
lda #$ff ;Set text entry mode (Default in Setup)
sta Mode
bne Done
Control4 cmp #$10 ;Ctrl-P
bne Control5
lda #$00 ;Set phenome entry mode
sta Mode
beq Done
Control5 cmp #$0d ;Ctrl-M
bne Done
ldy BufPos
sta InputBuf,y ;Add last character
bit Echo
beq @NoLF
lda #$8d ;High-ASCII return character
jsr MON_COUT1 ;Line Feed to screen
@NoLF bit Mode ;Which playback mode?
bne @TextMode
jsr PhenomeMode
jmp Done
@TextMode
jsr TextMode
jmp Done
PhenomeMode
jsr BackupZP ;Parse buffer for phenome entry
PlayPhenome
lda #$ff ;Jumps here once text converted to phenomes
sta Error
jsr L4676
lda Error
cmp #$ff
bne Exit
jsr L47C3
jsr L49A9
jsr L4701
jsr L63F4
jsr L4726
lda Speed
sta L621B+1
lda Pitch
sta L603E+1
@Loop lda InputTemp1,x
cmp #$50
bcs @L41DB
inx
bne @Loop
beq @L41E0
@L41DB lda #$ff
sta InputTemp1,x
@L41E0 jsr L632F
lda #$ff
sta DoneFlag ;(Was already #$FF)
jsr L63AC
Exit jmp RestoreZP
InputTemp1
!hex 3637380a45464703fe000a290f0045464731151b26003115004546470b4b4c4d
!hex 00280712050018341401feff15002832152001feff2000200f1e0e1c1ffe190f
!hex 393a3b2601feff37381707210a1c1cff00081b000a000020363738052a2b0020
!hex 061c230a203115260f04fe091c000a00393a3b06203f404101feff
!text " KAEN NAW4 OW4N YOHR OW3N KAA4PIY AHV SAE5M. YOH4R KUMPYUW3TER"
!text " IHZ REH4DIY TUX TAOK.",$22,$0d,$0a,"490 GOSUB 5",$0d,$0a,"500"
!text " END",$0d,$0a
!byte $1a
!text "CS 2:SETCOLOR 2,0,0:?"
DoneFlag !byte $ff
!byte $23 ;?
InputTemp2
!hex 0801020f0702021204000e060b000402020c090706000c07000602020e060104
!hex 00080b0a0800060e0d12040f0800080f0d0212040b0200020e0207070401081c
!hex 0801010a120106010205080208070506000b0700060000020801020b06020002
!hex 0c070206020c090611080213070006000701010e020a01021202
!text " options followed by the speed e.g., 300, 1>>0.",$0d,$0a,$0a
!text " EXAMPLE: SBO1T.600 will set the modem",$0d,$0a," "
!text " to run at "
Index03 !fill 3,$08
!byte $07
!fill 6,$00
!byte $04
!fill 14,$00
!fill 3,$06
!byte $05
!fill 4,$00
!byte $05
!byte $04
!fill 221,$00
StressInputTable
!text "*123456789"
Index05 !text " .?,-IIEAAAAUAIEUORLWYWRLWYMNNDQSSFT//ZZVDC*J***EAOAOUB**D**G*"
!text "*G**P**T**K**K**UUU"
Index06 !text "*****YHHEAHOHXXRXHXXXXH******XX**H*HHX*H*HH*****YYYWWW********"
!text "*X***********X**LMN"
Index07 !fill 5,$00
!byte $a4
!fill 5,$a4
!fill 2,$84
!fill 2,$a4
!fill 7,$84
!fill 5,$44
!fill 3,$4c
!byte $48
!byte $4c
!fill 6,$40
!fill 4,$44
!byte $48
!byte $40
!byte $4c
!byte $44
!fill 2,$00
!fill 3,$b4
!fill 3,$94
!fill 12,$4e
!fill 12,$4b
Index08 !byte $80
!fill 4,$c1
!fill 18,$00
!fill 4,$10
!byte $08
!byte $0c
!byte $08
!byte $04
!byte $40
!byte $24
!fill 2,$20
!byte $24
!fill 2,$00
!byte $24
!fill 2,$20
!byte $24
!fill 2,$20
!byte $00
!byte $20
!fill 11,$00
!fill 3,$04
!fill 9,$00
!fill 3,$04
!fill 6,$00
SaveReg sta $fc ;save registers
stx $fb
sty $fa
rts
RestReg lda $fc ;restore registers
ldx $fb
ldy $fa
rts
L4644 jsr SaveReg
ldx #$ff
ldy #$00
@Loop dex
dey
lda InputTemp1,x
sta InputTemp1,y
lda InputTemp2,x
sta InputTemp2,y
lda Index03,x
sta Index03,y
cpx $f6
bne @Loop
lda $f9
sta InputTemp1,x
lda $f8
sta InputTemp2,x
lda $f7
sta Index03,x
jsr RestReg
rts
L4676 ldx #$00
txa
tay
sta $ff
@Loop sta Index03,y
iny
cpy #$ff
bne @Loop
L4684 lda InputBuf,x
cmp #$0d
beq FoundReturn
sta $fe
inx
lda InputBuf,x
sta $fd
ldy #$00
@Loop lda Index05,y
cmp $fe
bne @L46A7
lda Index06,y
cmp #$2a
beq @L46A7
cmp $fd
beq @L46AE
@L46A7 iny
cpy #$51
bne @Loop
beq @L46BA
@L46AE tya
ldy $ff
sta InputTemp1,y
inc $ff
inx
jmp L4684
@L46BA ldy #$00
@Loop1 lda Index06,y
cmp #$2a
bne @L46CA
lda Index05,y
cmp $fe
beq @L46D1
@L46CA iny
cpy #$51
bne @Loop1
beq @L46DC
@L46D1 tya
ldy $ff
sta InputTemp1,y
inc $ff
jmp L4684
@L46DC lda $fe
ldy #$08
@Loop2 cmp StressInputTable,y
beq SetStress
dey
bne @Loop2
stx Error
jsr ErrorBell
rts
SetStress
tya
ldy $ff
dey
sta Index03,y
jmp L4684
FoundReturn
lda #$ff
ldy $ff
sta InputTemp1,y
rts
L4701 ldy #$00
@Loop lda InputTemp1,y
cmp #$ff
beq @Exit
tax
lda Index03,y
beq @L471B
bmi @L471B
lda L57E0,x
sta InputTemp2,y
jmp @L4721
@L471B lda L5830,x
sta InputTemp2,y
@L4721 iny
jmp @Loop
@Exit rts
L4726 lda #$00
sta $ff
@L472A ldx $ff
lda InputTemp1,x
cmp #$ff
bne @L4734
rts
@L4734 sta $f9
tay
lda Index07,y
tay
and #$02
bne @L4744
inc $ff
jmp @L472A
@L4744 tya
and #$01
bne @L4775
inc $f9
ldy $f9
lda Index03,x
sta $f7
lda L5830,y
sta $f8
inx
stx $f6
jsr L4644
inc $f9
ldy $f9
lda L5830,y
sta $f8
inx
stx $f6
jsr L4644
inc $ff
inc $ff
inc $ff
jmp @L472A
@L4775 inx
lda InputTemp1,x
beq @L4775
sta $f5
cmp #$ff
bne @L4784
jmp @L4796
@L4784 tay
lda Index07,y
and #$08
bne @L47BE
lda $f5
cmp #$24
beq @L47BE
cmp #$25
beq @L47BE
@L4796 ldx $ff
lda Index03,x
sta $f7
inx
stx $f6
ldx $f9
inx
stx $f9
lda L5830,x
sta $f8
jsr L4644
inc $f6
inx
stx $f9
lda L5830,x
sta $f8
jsr L4644
inc $ff
inc $ff
@L47BE inc $ff
jmp @L472A
L47C3 lda #$00
sta $ff
@L47C7 ldx $ff
lda InputTemp1,x
bne @L47D3
inc $ff
jmp @L47C7
@L47D3 cmp #$ff
bne @L47D8
rts
@L47D8 tay
lda Index07,y
and #$10
beq @L47FF
lda Index03,x
sta $f7
inx
stx $f6
lda Index07,y
and #$20
beq @L47FB
lda #$15
@L47F1 sta $f9
jsr L4644
ldx $ff
jmp @L4923
@L47FB lda #$14
bne @L47F1
@L47FF lda InputTemp1,x
cmp #$4e
bne @L481D
lda #$18
@L4808 sta $f9
lda Index03,x
sta $f7
lda #$0d
sta InputTemp1,x
inx
stx $f6
jsr L4644
jmp @L49A4
@L481D cmp #$4f
bne @L4825
lda #$1b
bne @L4808
@L4825 cmp #$50
bne @L482D
lda #$1c
bne @L4808
@L482D tay
lda Index07,y
and #$80
beq @L4860
lda Index03,x
beq @L4860
inx
lda InputTemp1,x
bne @L4860
inx
ldy InputTemp1,x
lda Index07,y
and #$80
beq @L4860
lda Index03,x
beq @L4860
stx $f6
lda #$00
sta $f7
lda #$1f
sta $f9
jsr L4644
jmp @L49A4
@L4860 ldx $ff
lda InputTemp1,x
cmp #$17
bne @L4899
dex
lda InputTemp1,x
cmp #$45
bne @L4879
lda #$2a
sta InputTemp1,x
jmp @L4941
@L4879 cmp #$39
bne @L4885
lda #$2c
sta InputTemp1,x
jmp @L494A
@L4885 tay
inx
lda Index07,y
and #$80
bne @L4891
jmp @L49A4
@L4891 lda #$12
sta InputTemp1,x
jmp @L49A4
@L4899 cmp #$18
bne @L48B4
dex
ldy InputTemp1,x
inx
lda Index07,y
and #$80
bne @L48AC
jmp @L49A4
@L48AC lda #$13
sta InputTemp1,x
jmp @L49A4
@L48B4 cmp #$20
bne @L48CC
dex
lda InputTemp1,x
cmp #$3c
beq @L48C3
jmp @L49A4
@L48C3 inx
lda #$26
sta InputTemp1,x
jmp @L49A4
@L48CC cmp #$48
bne @L48E7
inx
ldy InputTemp1,x
dex
lda Index07,y
and #$20
beq @L48DF
jmp @L4902
@L48DF lda #$4b
sta InputTemp1,x
jmp @L4902
@L48E7 cmp #$3c
bne @L4902
inx
ldy InputTemp1,x
dex
lda Index07,y
and #$20
beq @L48FA
jmp @L49A4
@L48FA lda #$3f
sta InputTemp1,x
jmp @L49A4
@L4902 ldy InputTemp1,x
lda Index07,y
and #$01
beq @L4923
dex
lda InputTemp1,x
inx
cmp #$20
beq @L4919
tya
jmp @L4962
@L4919 sec
tya
sbc #$0c
sta InputTemp1,x
jmp @L49A4
@L4923 lda InputTemp1,x
cmp #$35
bne @L4941
dex
ldy InputTemp1,x
inx
lda Index08,y
and #$04
bne @L4939
jmp @L49A4
@L4939 lda #$10
sta InputTemp1,x
jmp @L49A4
@L4941 cmp #$2a
bne @L494A
@L4945 tay
iny
jmp @L4951
@L494A cmp #$2c
beq @L4945
jmp @L4962
@L4951 sty $f9
inx
stx $f6
dex
lda Index03,x
sta $f7
jsr L4644
jmp @L49A4
@L4962 cmp #$45
bne @L4968
beq @L496F
@L4968 cmp #$39
beq @L496F
jmp @L49A4
@L496F dex
ldy InputTemp1,x
inx
lda Index07,y
and #$80
beq @L49A4
inx
lda InputTemp1,x
beq @L4998
tay
lda Index07,y
and #$80
beq @L49A4
lda Index03,x
bne @L49A4
@L498E ldx $ff
lda #$1e
sta InputTemp1,x
jmp @L49A4
@L4998 inx
lda InputTemp1,x
tay
lda Index07,y
and #$80
bne @L498E
@L49A4 inc $ff
jmp @L47C7
L49A9 lda #$00
sta $ff
@L49AD ldx $ff
ldy InputTemp1,x
cpy #$ff
bne @L49B7
rts
@L49B7 lda Index07,y
and #$40
beq @L49D6
inx
ldy InputTemp1,x
lda Index07,y
and #$80
beq @L49D6
ldy Index03,x
beq @L49D6
bmi @L49D6
iny
dex
tya
sta Index03,x
@L49D6 inc $ff
jmp @L49AD
ZP_Store !hex 4f80000015ab05abf2bc22bd5abdb6bd0c0100004c0b2201f194000000000080 ;Could be zeroed out?
!text "COPYRIGHT 1982 DON'T ASK - ALL RIGHTS l buffer to disk, XON se"
!text "nt to resume."
!hex 0d0a0a003a1e01cd9c1c20202d2054724545736665722041534349492066696c
!hex 6520746f2072656d6f74650d0a0a003a1401b73a2001c29235cd9c1c20202d20
!hex 53656e64206c6f63616c20636f6e74726f6c2063686172616374657220746f20
!hex 72656d6f74650d0a0a00c3c935cd9c1c20202d204e6578742063686172616374
!hex 65722077696c6c206265207573656420666f72206c6f63616c20636f6e74726f
!hex 6c0d0a00cdab1c0d0a44656661756c7420447269766520000e19
L4B00 !fill 3,$00
!fill 6,$10
!fill 6,$20
!fill 7,$30
!fill 7,$40
!fill 8,$50
!fill 12,$60
!fill 31,$70
!fill 12,$60
!fill 8,$50
!fill 7,$40
!fill 7,$30
!fill 6,$20
!fill 6,$10
!fill 5,$00
!fill 6,$f0
!fill 6,$e0
!fill 7,$d0
!fill 7,$c0
!fill 8,$b0
!fill 12,$a0
!fill 31,$90
!fill 12,$a0
!fill 8,$b0
!fill 7,$c0
!fill 7,$d0
!fill 6,$e0
!fill 6,$f0
!fill 2,$00
L4C00 !fill 128,$90
!fill 128,$70
L4D00 !fill 18,$00
!fill 2,$01
!fill 2,$02
!fill 2,$03
!fill 2,$04
!fill 2,$05
!fill 2,$06
!fill 2,$07
!hex 000102030405060708090a0b0c0d0e0f000103040607090a0c0d0f1012131516
!hex 00020406080a0c0e10121416181a1c1e000205070a0c0f111416191b1e202325
!hex 000306090c0f1215181b1e2124272a2d0003070a0e1115181c1f23262a2d3134
!hex 00fcf8f4f0ece8e4e0dcd8d4d0ccc8c400fcf9f5f2eeebe7e4e0ddd9d6d2cfcb
!hex 00fdfaf7f4f1eeebe8e5e2dfdcd9d6d300fdfbf8f6f3f1eeece9e7e4e2dfddda
!hex 00fefcfaf8f6f4f2f0eeeceae8e6e4e200fefdfbfaf8f7f5f4f2f1efeeecebe9
!hex 00fffefdfcfbfaf9f8f7f6f5f4f3f2f100fffffefefdfdfcfcfbfbfafaf9f9f8
L4E00 !hex d8d8d8d8d8d8d8d8d9dadbdddee1e5e8e9ebebebeae9e7e7e7e7e7e7e7e7e9ea
!hex ecededededededeae6e3e3e3e3e3e3e3e3e4e5e6e6e7e8e9e9e9e9e9ebededed
!hex ededededececececeae8e7e5e3e3e3e3e3e3e3e4e5e6e6e7e8e9e9eaebeceded
!hex ededededededebe7e4e3e2e1e0dfdfe0e1e1e3e5e6e9ebedededededededeceb
!hex eae9e7e5e5e4e2e1dfdddcdbdadadbdcdddfe0e1e3e4e5e7e7e7e8e8e9e9eaea
!hex ebebebebeaeae9eaebecededeeeeeff0f1f2f3f4f5f6f8f9fafcfdfe00010203
!hex 0200fefdfaf7f6f3f1f0eeecebe9e7e7e7e7e7e7e7e7e714120f0d0b08080808
!hex 0808080808b91a20a0ad178bca98196d52cb1d90fb3d613a56507e8a52f637b2
L4F00 !hex 17171717171717171717171717130f0a0a0a0a0a0c0f12121212121212120f0c
!hex 090606060606060d141b1b1b1b1b1b1b1a1817151412110f0f0f0f0f0b060606
!hex 06060607090909090c1013171b1b1b1b1b1b1a1817151412110f0f0d0b090606
!hex 0606060606060b101515151515151515151513100e0b09060606060606060606
!hex 0707080808080a0c0e101313131313131313131313121212121211100f0e0d0c
!hex 0a0a0a0b0c0d0e0e0e0e0f10111212121212121212121111100f0f0e0d0d0d0d
!hex 0d0d0d0d0e101113131313131313131313131313131313131313131313131313
!hex 13131313136e64206d6573736167652c0d0a776865726520303d3131302c2031
L5000 !hex 2c2c2c2c2c2c2c2c2c2c2c2c2c2d2e2f2f2f2f2f2f3031313131313131313539
!hex 3d4242424242423930272727272727272a2e3236393d4145454545453a2e2e2e
!hex 2e2e2e3033333333312f2c2a2727272727272a2e3236393d4145454544434242
!hex 424242424242372b1f1f1f1f1f1f1f1f1f1f273039424b545454545454544c43
!hex 3a31282828282d32383d4343434343413f3d3a38363333333333373c41454a4f
!hex 54544a3f34291e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1d1d1d1d
!hex 1d1d1d1d26303943434343434343434343434343434343434343434343434343
!hex 43434343436f6465207365740d0a00c9cdab1c
!text "Checksum mode"
L5100 !hex 57575757575757575757575757595b5d5d5d5d5d53493e3e3e3e3e3e3e3e4c5b
!hex 6a7979797979796e63585858585858585859595a5b5b5c5d5d5d5d5d57515151
!hex 515151575d5d5d5d5c5b5a595858585858585859595a5b5b5c5d5d646b727979
!hex 7979797979796e6358585858585858585858595a5b5c5d5e5e5e5e5e5e5e5b57
!hex 54504c4c4c4c4f5255585b5b5b5b5b57534f4b47433e3e3e3e3e444b52596067
!hex 6e6e6e6e6e6e6e6e6e6a66615d58585858585858585756555453525150505050
!hex 505050505255585b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b
!hex 5b5b5b5b5bc2cf3ccdab1c4e4f542000cdab1c
!text "sent after <C"
L5200 !hex 0f0f0f0f0f0f0f0f0f0f0f0f0f0d0b0808080808080809090909090909090503
!hex 0200000000000003060f0f0f0f0f0f0f0f0f0f0f0f0f0f0d0d0d0d0d0b090909
!hex 090909090808080808090b0d0f0f0f0f0f0f0f0f0f0f0f0f0f0d0d0804020000
!hex 00000000000003060f0f0f0f0f0f0f0f0f0f0b06040302000000000000000202
!hex 0304080808080809090b0d0d0d0d0d0d0d0d0d0d0d0b0b0b0b0b0b0b0b0b0b0b
!hex 0b0b0b0b0b0b0b0b0b0b0b0d0d0f0f0f0f0f0f0f0f0f0f0f0d0d0d0d0b0b0b0b
!hex 0b0b0b0b06040200000000000000000000000000000000000000000000000000
!hex 0000000000a40202aa500202500202020002029d00009d000200e002019d0002
L5300 !hex 0909090909090909090909090906040202020202030408080808080808080503
!hex 0200000000000002040b0b0b0b0b0b0b0b0b0b0b0b0b0b090909090904020202
!hex 0202020202020202030405080b0b0b0b0b0b0b0b0b0b0b0b0b09090503020000
!hex 0000000000000204090909090909090909090604030202000000060000000001
!hex 010202020202030405080b0b0b0b0b0b0b0b0b0b0b0909090909090909080808
!hex 0606060605050404040405060809090909090909090908080606050504040404
!hex 0404040403020200000000000000000000000000000000000000000000000000
!hex 0000000000024f0002aa0202020202aa02020200020002020200000202020002
L5400 !hex 0101010101010101010101010101010000000000010203030303030303030202
!hex 0200000000000000000101010101010101020202020303040404040402000000
!hex 0000000000000000000000000101010101010102020202030304040302020000
!hex 0000000000000000000000000000000000000000000000000000030000000000
!hex 0000000000000102020304040404040404040404040303030303030303040404
!hex 0404040302020101010101010100000000000000000000000000000000000000
!hex 0000000000000000000000000000000000000000000000000000000000000000
!hex 00000000009d0000024f02a402a4a40202aa00020202a4a4020250500202024f
L5500 !fill 14,$00
!fill 6,$03
!fill 15,$00
!fill 2,$19
!fill 30,$00
!fill 6,$01
!fill 25,$00
!fill 2,$19
!fill 27,$00
!fill 8,$03
!fill 94,$00
!hex 12022acb01eb2ad401cd841fe52acd01eb2ad401cd841f5c1600e1
L5600 !hex 00131313130a0e13181b171510140e120e1212100d0f0b120e0b090606060611
!hex 060606060e10090a080a060606050600131b151b120d06060606060606060606
!hex 0606060606060606060a0a0606062c13
L5650 !hex 00434343435449433f282c1f252d4931241e33251d4518321e18532e36563643
!hex 494f1a4249253342282f4f4f424f6e0048271f2b1e221a1a1a4242426e6e6e54
!hex 54541a1a1a4242426d566d5454547f7f
L56A0 !hex 005b5b5b5b6e5d5b5859575852595d3e52583e6e505d5a3c6e5a6e517965795b
!hex 636a51795d525d674c5d6565796579005a5858585852515151797979706e6e5e
!hex 5e5e5151517979796565705e5e5e0801
L56F0 !hex 00000000000d0d0e0f0f0f0f0f0c0d0c0f0f0d0d0d0e0d0c0d0d0d0c09090000
!hex 0000000000000b0b0b0b0000010b00020e0f0f0f0f0d02040002040001040001
!hex 0400000000000000000c000000000f0f
L5740 !hex 00000000000a0b0d0e0d0c0c0b090b0b0c0c0c08080c080a08080a0309060000
!hex 00000000000003050304000000050a020e0d0c0d0c0800010000010000010000
!hex 0100000000000000000a00000a000000
L5790 !hex 0000000000080708080101000100070501000601000700050100080000030000
!hex 00000000000000010000000000010e0109010001000000000000000000000000
!hex 00000000000000000007000005001310
L57E0 !hex 00121212080b090b0e0f0b100c06060e0c0e0c0b08080b0a0908080808080305
!hex 020202020202060608060602090402010e0f0f0f0e0e08020207020107020207
!hex 02020802020602020702040701040505
L5830 !hex 0012121208080808080b060c0a05050b0a0a0a09080709070608060707070205
!hex 0202020202020606070606020803011e0d0c0c0c0e0906010205010106010206
!hex 0102080202040202060104060104c7ff
L5880 !hex 0002020202040404040404040404040404040302040402020202020101010101
!hex 0101010101010202020100010001000505050505040402000102000102000102
!hex 0001020002020001030002030002a0a0
L58D0 !hex 0002020202040404040404040404040404040303040403030303030102030201
!hex 0303030301010303030202030203000005050505040402000202000302000402
!hex 0003020002020002030003030003b0a0
L5920 !hex 001f1f1f1f0202020202020202020505020a020805050b0a090808a00808171f
!hex 121212121e1e1414141417171a1a1d1d0202020202021a1d1b1a1d1b1a1d1b1a
!hex 1d1b171d17171d17171d17171d171717
L5970 !fill 32,$00
!hex f1e2d3bb7c950102030300720002
!fill 21,$00
!byte $1b
!fill 2,$00
!byte $19
!fill 9,$00
!hex 38846b19c66318867398c6b11cca318cc73188c23098463118c6350cca310cc6
!hex 2110246912c23114c471084a2249ab6aa8ac495132d55288936c94221554d225
!hex 96d450a5462108856b18c46310ce6b188c71198c63350cc63399cc6cb54ea299
!hex 46212882952ee3309cc5309ca2b19c67318866592c5318846750cae30aacab30
!hex ac62308c63109462b18c8228963398d6b54c6229a54ab59cc63114d6389c4bb4
!hex 866518ae671ca66319962319841308a652acca22896eab198c6234c462198663
!hex 18c42358d6a35042544aad4a25116b64894a63398a23312aeaa2a944c512cd42
!hex 348c62188c63114866319d44331d46319cc6b10ccd3288c47318867308d66358
!hex 0781e0f03c0787903c7c0fc7c0c0f07c1e078080001c7870f1c71fc00cfe1c1f
!hex 1f0e0a7ac071f2838f030f0f0c0079f861e0430f83e718f9c113dae9638f0f83
!hex 8387c31f3c70f0e1e1e387b8710e20e38d48781c938730e1c1c1e478218383c3
!hex 870639e5c387070e1c1c70f4719c603632c31e3cf38f0e3c70e3c78f0f0f0e3c
!hex 78f0e38706f0e307c199870f18787070fcf310b18c8c317c70e1863c646cb0e1
!hex e30f238f0f1e3e383c387b8f070e3cf4171e3c78f29e7249e32536385839e2de
!hex 3c7878e1c761e1e1b0f0f0c3c70e38c0f0ce73731834b0e1c78e1c3cf838f0e1
!hex c18b868f1c7870f078acb18f3931db3861c30e0e387873171e391e3864e1f1c1
!hex 4e0f40a202c58f81a1fc120864e03c22e045078e0c3290f01f2049e0f80c60f0
!hex 171a41aaa4d08d12821e1e03f83e030c73807044260324e13e044e041cc109cc
!hex 9e902107904364c00fc6909cc15b03e21d81e05e1d0384b82c0f80b183e03041
!hex 1e43898350fc242e1383f17c4c2cc90d83b0b582e4e8069c07a0991d073e828f
!hex 70307440ca10e4e80f92143f06f8848843810a343941c6e31c4703b0b8130ac2
!hex 64f818f960b3c0652060a68cc3812030261e1c38d301b02640f40bc3421f8532
!hex 266040c9cb01ec112840fa0434e0704c8c1d07690316c80423e8c69a0b1a03e0
!hex 760605cf1ebc5831716600f83f04fc0c74278a8071c23a2606c01f050f9840ae
!hex 017fc007ff000efe0003df8003ef801bf1c200e7e018fce021fc803cfc400e7e
!hex 003f3e000ffe001fff003ef007fc007e103fff003f380e7c01870cfcc7003e04
!hex 0f3e1f0f0f1f0f028387cf03870f3fc0079e603fc003fe003fe077e1c0fee0c3
!hex e001dff80307007e70007c3818fe0c1e781c7c3e0e1f1e1e3e007f8307db8783
!hex 07c7071071ff003fe201e0c1c3e1007fc005f020f8f070fe7879f8023f0c8f03
!hex 0f9fe0c1c78703c3c3b0e1e1c1e3e071f000fc707c0c3e380e1c70c3c70381c1
!hex c7e7000fc7871909efc433e0c1fcf870f078f8f061c7001ff8017cf8f078703c
!hex 7cce0e2183cf08078f08c1878f80c7e30007f8e0ef0039f7800ef8e1e3f8219f
!hex c0ff03f807c01ff8c404fcc4c1bc87f00fc07f05e025ecc03e8447f08e03f803
!hex fbc019f8079c0c17f807e01fa1fc0ffc01f03f00fe03f01f00fd00ff880df901
!hex ff007007c03e42f30dc47f80fc07f05ec03f00783f81ff01f801c3e80ce4648f
!hex e40ff007f0c21f007fc06f807e03f807f03fc0780f8207fe227770027603fe00
!hex fe67007cc7f18ec63be03f84f319d80399fc09b80ff8009d2461f90d00fd03f0
!hex 1f903f01f81fd00ff83701f807f00fc03f00fe03f80fc03f00fa03f00f80ff01
!hex b807f001fc01bc80131e007fe1407fa07fb0003fc01fc0380ff01f80ff01fc03
!hex f17e01fe01f0ff007fc01d07f00fc07e06e007e00ff806c1fe01fc03e00f00fc
Index09 !hex 0a290f45464731151b2631154546470b4b4c4d2807120518341401ff2001ffe8
!hex bcee41b99a452980f00dbcee43f0083006c8ca989dee43e6ff4cad49
Index10 !hex 0400000000000000000000000606060500000005040000000000000500002069
!text "COPYRIGHT 1982 DON'T ASK - A"
Index11 !hex 0e060b0402020c0907060c070602020e060104080b0a08060e0d120d0212
!text "N sent to resume.",$0d,$0a,$0a
!hex 003a1e01cd9c1c20202d
Index12 !hex 000102020203030404050608090b0d0f
Index13 !hex 0000e0e6ecf3f900060c06
L5F8F ldy #$00
bit $f2
bpl @L5F9E
sec
lda #$00
sbc $f2
sta $f2
ldy #$80
@L5F9E sty $ef
lda #$00
ldx #$08
@L5FA4 asl $f2
rol
cmp $f1
bcc @L5FAF
sbc $f1
inc $f2
@L5FAF dex
bne @L5FA4
sta $f0
bit $ef
bpl @Exit
sec
lda #$00
sbc $f2
sta $f2
@Exit rts
BackupZP ldx #$1f
@Loop lda $e0,x
sta ZP_Store,x
dex
bne @Loop
rts
RestoreZP
ldx #$1f
@Loop lda ZP_Store,x
sta $e0,x
dex
bne @Loop
rts
L5FD6 lda Index09
cmp #$ff
bne @L5FDE
rts
@L5FDE lda #$00
tax
sta $e9
L5FE3 ldy $e9
lda Index09,y
sta $f5
cmp #$ff
bne @L5FF1
jmp L604E
@L5FF1 cmp #$01
bne @L5FF8
jmp L62EE
@L5FF8 cmp #$02
bne L5FFF
jmp L62F4
L5FFF lda Index10,y
sta $e8
lda Index11,y
sta $e7
ldy $e8