-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathcpm.asm
4261 lines (4205 loc) · 117 KB
/
cpm.asm
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
; z80dasm 1.1.3
; command line: z80dasm --origin=54272 --address --labels --output=cpm.asm cpm.prg
org 0d400h
ld400h:
jp ld75ch ;d400
jp ld758h ;d403
ld406h:
ld a,a ;d406
ld407h:
db 0 ;d407
ld408h:
db 0,0dh,0ah
db "SET UPPER",0dh,0ah
db "DIR",0dh,0ah
db "SET LOWER",0dh,0ah
db "STAT *.*",0dh,0ah
db "SUBMIT GNASHER",0dh,0ah
db 1ah,1ah,1ah,1ah,1ah,1ah,1ah,1ah
db 1ah,1ah,1ah,1ah,1ah,1ah,1ah,1ah
db 1ah,1ah,1ah,1ah,1ah,1ah,1ah,1ah
db 0,0,0,0,0,0,0,0
db "(c) Copyright 1981 Digital Research"
db 0,0,0,0,0
ld488h:
ex af,af' ;d488
call nc,0000h ;d489
sub_d48ch:
ld e,a ;d48c
ld c,02h ;d48d
jp 0005h ;d48f
sub_d492h:
push bc ;d492
call sub_d48ch ;d493
pop bc ;d496
ret ;d497
sub_d498h:
ld a,0dh ;d498
call sub_d492h ;d49a
ld a,0ah ;d49d
jp sub_d492h ;d49f
sub_d4a2h:
ld a,20h ;d4a2
jp sub_d492h ;d4a4
ld4a7h:
push bc ;d4a7
call sub_d498h ;d4a8
pop hl ;d4ab
ld4ach:
ld a,(hl) ;d4ac
or a ;d4ad
ret z ;d4ae
inc hl ;d4af
push hl ;d4b0
call sub_d48ch ;d4b1
pop hl ;d4b4
jp ld4ach ;d4b5
ld4b8h:
ld c,0dh ;d4b8
jp 0005h ;d4ba
sub_d4bdh:
ld e,a ;d4bd
ld c,0eh ;d4be
jp 0005h ;d4c0
ld4c3h:
call 0005h ;d4c3
ld (ldbeeh),a ;d4c6
inc a ;d4c9
ret ;d4ca
ld4cbh:
ld c,0fh ;d4cb
jp ld4c3h ;d4cd
sub_d4d0h:
xor a ;d4d0
ld (ldbedh),a ;d4d1
ld de,ldbcdh ;d4d4
jp ld4cbh ;d4d7
sub_d4dah:
ld c,10h ;d4da
jp ld4c3h ;d4dc
ld4dfh:
ld c,11h ;d4df
jp ld4c3h ;d4e1
sub_d4e4h:
ld c,12h ;d4e4
jp ld4c3h ;d4e6
sub_d4e9h:
ld de,ldbcdh ;d4e9
jp ld4dfh ;d4ec
sub_d4efh:
ld c,13h ;d4ef
jp 0005h ;d4f1
ld4f4h:
call 0005h ;d4f4
or a ;d4f7
ret ;d4f8
ld4f9h:
ld c,14h ;d4f9
jp ld4f4h ;d4fb
sub_d4feh:
ld de,ldbcdh ;d4fe
jp ld4f9h ;d501
sub_d504h:
ld c,15h ;d504
jp ld4f4h ;d506
sub_d509h:
ld c,16h ;d509
jp ld4c3h ;d50b
sub_d50eh:
ld c,17h ;d50e
jp 0005h ;d510
sub_d513h:
ld e,0ffh ;d513
sub_d515h:
ld c,20h ;d515
jp 0005h ;d517
sub_d51ah:
call sub_d513h ;d51a
add a,a ;d51d
add a,a ;d51e
add a,a ;d51f
add a,a ;d520
ld hl,ldbefh ;d521
or (hl) ;d524
ld (0004h),a ;d525
ret ;d528
sub_d529h:
ld a,(ldbefh) ;d529
ld (0004h),a ;d52c
ret ;d52f
sub_d530h:
cp 61h ;d530
ret c ;d532
cp 7bh ;d533
ret nc ;d535
and 5fh ;d536
ret ;d538
sub_d539h:
ld a,(ldbabh) ;d539
or a ;d53c
jp z,ld596h ;d53d
ld a,(ldbefh) ;d540
or a ;d543
ld a,00h ;d544
call nz,sub_d4bdh ;d546
ld de,ldbach ;d549
call ld4cbh ;d54c
jp z,ld596h ;d54f
ld a,(ldbbbh) ;d552
dec a ;d555
ld (ldbcch),a ;d556
ld de,ldbach ;d559
call ld4f9h ;d55c
jp nz,ld596h ;d55f
ld de,ld407h ;d562
ld hl,0080h ;d565
ld b,80h ;d568
call sub_d842h ;d56a
ld hl,ldbbah ;d56d
ld (hl),00h ;d570
inc hl ;d572
dec (hl) ;d573
ld de,ldbach ;d574
call sub_d4dah ;d577
jp z,ld596h ;d57a
ld a,(ldbefh) ;d57d
or a ;d580
call nz,sub_d4bdh ;d581
ld hl,ld408h ;d584
call ld4ach ;d587
call sub_d5c2h ;d58a
jp z,ld5a7h ;d58d
call sub_d5ddh ;d590
jp ld782h ;d593
ld596h:
call sub_d5ddh ;d596
call sub_d51ah ;d599
ld c,0ah ;d59c
ld de,ld406h ;d59e
call 0005h ;d5a1
call sub_d529h ;d5a4
ld5a7h:
ld hl,ld407h ;d5a7
ld b,(hl) ;d5aa
ld5abh:
inc hl ;d5ab
ld a,b ;d5ac
or a ;d5ad
jp z,ld5bah ;d5ae
ld a,(hl) ;d5b1
call sub_d530h ;d5b2
ld (hl),a ;d5b5
dec b ;d5b6
jp ld5abh ;d5b7
ld5bah:
ld (hl),a ;d5ba
ld hl,ld408h ;d5bb
ld (ld488h),hl ;d5be
ret ;d5c1
sub_d5c2h:
ld c,0bh ;d5c2
call 0005h ;d5c4
or a ;d5c7
ret z ;d5c8
ld c,01h ;d5c9
call 0005h ;d5cb
or a ;d5ce
ret ;d5cf
sub_d5d0h:
ld c,19h ;d5d0
jp 0005h ;d5d2
sub_d5d5h:
ld de,0080h ;d5d5
sub_d5d8h:
ld c,1ah ;d5d8
jp 0005h ;d5da
sub_d5ddh:
ld hl,ldbabh ;d5dd
ld a,(hl) ;d5e0
or a ;d5e1
ret z ;d5e2
ld (hl),00h ;d5e3
xor a ;d5e5
call sub_d4bdh ;d5e6
ld de,ldbach ;d5e9
call sub_d4efh ;d5ec
ld a,(ldbefh) ;d5ef
jp sub_d4bdh ;d5f2
sub_d5f5h:
ld de,ld728h ;d5f5
ld hl,ldc00h ;d5f8
ld b,06h ;d5fb
ld5fdh:
ld a,(de) ;d5fd
cp (hl) ;d5fe
jp nz,ld7cfh ;d5ff
inc de ;d602
inc hl ;d603
dec b ;d604
jp nz,ld5fdh ;d605
ret ;d608
ld609h:
call sub_d498h ;d609
ld hl,(0d48ah) ;d60c
ld60fh:
ld a,(hl) ;d60f
cp 20h ;d610
jp z,ld622h ;d612
or a ;d615
jp z,ld622h ;d616
push hl ;d619
call sub_d48ch ;d61a
pop hl ;d61d
inc hl ;d61e
jp ld60fh ;d61f
ld622h:
ld a,3fh ;d622
call sub_d48ch ;d624
call sub_d498h ;d627
call sub_d5ddh ;d62a
jp ld782h ;d62d
sub_d630h:
ld a,(de) ;d630
or a ;d631
ret z ;d632
cp 20h ;d633
jp c,ld609h ;d635
ret z ;d638
cp 3dh ;d639
ret z ;d63b
cp 5fh ;d63c
ret z ;d63e
cp 2eh ;d63f
ret z ;d641
cp 3ah ;d642
ret z ;d644
cp 3bh ;d645
ret z ;d647
cp 3ch ;d648
ret z ;d64a
cp 3eh ;d64b
ret z ;d64d
ret ;d64e
ld64fh:
ld a,(de) ;d64f
or a ;d650
ret z ;d651
cp 20h ;d652
ret nz ;d654
inc de ;d655
jp ld64fh ;d656
sub_d659h:
add a,l ;d659
ld l,a ;d65a
ret nc ;d65b
inc h ;d65c
ret ;d65d
sub_d65eh:
ld a,00h ;d65e
sub_d660h:
ld hl,ldbcdh ;d660
call sub_d659h ;d663
push hl ;d666
push hl ;d667
xor a ;d668
ld (ldbf0h),a ;d669
ld hl,(ld488h) ;d66c
ex de,hl ;d66f
call ld64fh ;d670
ex de,hl ;d673
ld (0d48ah),hl ;d674
ex de,hl ;d677
pop hl ;d678
ld a,(de) ;d679
or a ;d67a
jp z,ld689h ;d67b
sbc a,40h ;d67e
ld b,a ;d680
inc de ;d681
ld a,(de) ;d682
cp 3ah ;d683
jp z,ld690h ;d685
dec de ;d688
ld689h:
ld a,(ldbefh) ;d689
ld (hl),a ;d68c
jp ld696h ;d68d
ld690h:
ld a,b ;d690
ld (ldbf0h),a ;d691
ld (hl),b ;d694
inc de ;d695
ld696h:
ld b,08h ;d696
ld698h:
call sub_d630h ;d698
jp z,ld6b9h ;d69b
inc hl ;d69e
cp 2ah ;d69f
jp nz,ld6a9h ;d6a1
ld (hl),3fh ;d6a4
jp ld6abh ;d6a6
ld6a9h:
ld (hl),a ;d6a9
inc de ;d6aa
ld6abh:
dec b ;d6ab
jp nz,ld698h ;d6ac
ld6afh:
call sub_d630h ;d6af
jp z,ld6c0h ;d6b2
inc de ;d6b5
jp ld6afh ;d6b6
ld6b9h:
inc hl ;d6b9
ld (hl),20h ;d6ba
dec b ;d6bc
jp nz,ld6b9h ;d6bd
ld6c0h:
ld b,03h ;d6c0
cp 2eh ;d6c2
jp nz,ld6e9h ;d6c4
inc de ;d6c7
ld6c8h:
call sub_d630h ;d6c8
jp z,ld6e9h ;d6cb
inc hl ;d6ce
cp 2ah ;d6cf
jp nz,ld6d9h ;d6d1
ld (hl),3fh ;d6d4
jp ld6dbh ;d6d6
ld6d9h:
ld (hl),a ;d6d9
inc de ;d6da
ld6dbh:
dec b ;d6db
jp nz,ld6c8h ;d6dc
ld6dfh:
call sub_d630h ;d6df
jp z,ld6f0h ;d6e2
inc de ;d6e5
jp ld6dfh ;d6e6
ld6e9h:
inc hl ;d6e9
ld (hl),20h ;d6ea
dec b ;d6ec
jp nz,ld6e9h ;d6ed
ld6f0h:
ld b,03h ;d6f0
ld6f2h:
inc hl ;d6f2
ld (hl),00h ;d6f3
dec b ;d6f5
jp nz,ld6f2h ;d6f6
ex de,hl ;d6f9
ld (ld488h),hl ;d6fa
pop hl ;d6fd
ld bc,000bh ;d6fe
ld701h:
inc hl ;d701
ld a,(hl) ;d702
cp 3fh ;d703
jp nz,ld709h ;d705
ld708h:
inc b ;d708
ld709h:
dec c ;d709
jp nz,ld701h ;d70a
ld a,b ;d70d
or a ;d70e
ret ;d70f
db "DIR "
db "ERA "
db "TYPE"
db "SAVE"
db "REN "
db "USER"
ld728h:
ld e,e ;d728
ld d,01h ;d729
nop ;d72b
rlca ;d72c
ld l,21h ;d72d
djnz ld708h ;d72f
ld c,00h ;d731
ld733h:
ld a,c ;d733
cp 06h ;d734
ret nc ;d736
ld de,ldbceh ;d737
ld b,04h ;d73a
ld73ch:
ld a,(de) ;d73c
cp (hl) ;d73d
jp nz,ld74fh ;d73e
inc de ;d741
inc hl ;d742
dec b ;d743
jp nz,ld73ch ;d744
ld a,(de) ;d747
cp 20h ;d748
jp nz,ld754h ;d74a
ld a,c ;d74d
ret ;d74e
ld74fh:
inc hl ;d74f
dec b ;d750
jp nz,ld74fh ;d751
ld754h:
inc c ;d754
jp ld733h ;d755
ld758h:
xor a ;d758
ld (ld407h),a ;d759
ld75ch:
ld sp,ldbabh ;d75c
push bc ;d75f
ld a,c ;d760
rra ;d761
rra ;d762
rra ;d763
rra ;d764
and 0fh ;d765
ld e,a ;d767
call sub_d515h ;d768
call ld4b8h ;d76b
ld (ldbabh),a ;d76e
pop bc ;d771
ld a,c ;d772
and 0fh ;d773
ld (ldbefh),a ;d775
call sub_d4bdh ;d778
ld a,(ld407h) ;d77b
or a ;d77e
jp nz,ld798h ;d77f
ld782h:
ld sp,ldbabh ;d782
call sub_d498h ;d785
call sub_d5d0h ;d788
add a,41h ;d78b
call sub_d48ch ;d78d
ld a,3eh ;d790
call sub_d48ch ;d792
call sub_d539h ;d795
ld798h:
ld de,0080h ;d798
call sub_d5d8h ;d79b
call sub_d5d0h ;d79e
ld (ldbefh),a ;d7a1
call sub_d65eh ;d7a4
call nz,ld609h ;d7a7
ld a,(ldbf0h) ;d7aa
or a ;d7ad
jp nz,ldaa5h ;d7ae
call 0d72eh ;d7b1
ld hl,ld7c1h ;d7b4
ld e,a ;d7b7
ld d,00h ;d7b8
add hl,de ;d7ba
add hl,de ;d7bb
ld a,(hl) ;d7bc
inc hl ;d7bd
ld h,(hl) ;d7be
ld l,a ;d7bf
jp (hl) ;d7c0
ld7c1h:
ld (hl),a ;d7c1
ret c ;d7c2
rra ;d7c3
exx ;d7c4
ld e,l ;d7c5
exx ;d7c6
xor l ;d7c7
exx ;d7c8
djnz $-36 ;d7c9
adc a,(hl) ;d7cb
jp c,ldaa5h ;d7cc
ld7cfh:
ld hl,76f3h ;d7cf
ld (ld400h),hl ;d7d2
ld hl,ld400h ;d7d5
jp (hl) ;d7d8
sub_d7d9h:
ld bc,ld7dfh ;d7d9
jp ld4a7h ;d7dc
ld7dfh:
db "READ ERROR",0
sub_d7eah:
ld bc,ld7f0h ;d7ea
jp ld4a7h ;d7ed
ld7f0h:
db "NO FILE",0
sub_d7f8h:
call sub_d65eh ;d7f8
ld a,(ldbf0h) ;d7fb
or a ;d7fe
jp nz,ld609h ;d7ff
ld hl,ldbceh ;d802
ld bc,000bh ;d805
ld808h:
ld a,(hl) ;d808
cp 20h ;d809
jp z,ld833h ;d80b
inc hl ;d80e
sub 30h ;d80f
cp 0ah ;d811
jp nc,ld609h ;d813
ld d,a ;d816
ld a,b ;d817
and 0e0h ;d818
jp nz,ld609h ;d81a
ld a,b ;d81d
rlca ;d81e
rlca ;d81f
rlca ;d820
add a,b ;d821
jp c,ld609h ;d822
add a,b ;d825
jp c,ld609h ;d826
add a,d ;d829
jp c,ld609h ;d82a
ld b,a ;d82d
dec c ;d82e
jp nz,ld808h ;d82f
ret ;d832
ld833h:
ld a,(hl) ;d833
cp 20h ;d834
jp nz,ld609h ;d836
inc hl ;d839
dec c ;d83a
jp nz,ld833h ;d83b
ld a,b ;d83e
ret ;d83f
sub_d840h:
ld b,03h ;d840
sub_d842h:
ld a,(hl) ;d842
ld (de),a ;d843
inc hl ;d844
inc de ;d845
dec b ;d846
jp nz,sub_d842h ;d847
ret ;d84a
sub_d84bh:
ld hl,0080h ;d84b
add a,c ;d84e
call sub_d659h ;d84f
ld a,(hl) ;d852
ret ;d853
sub_d854h:
xor a ;d854
ld (ldbcdh),a ;d855
ld a,(ldbf0h) ;d858
or a ;d85b
ret z ;d85c
dec a ;d85d
ld hl,ldbefh ;d85e
cp (hl) ;d861
ret z ;d862
jp sub_d4bdh ;d863
sub_d866h:
ld a,(ldbf0h) ;d866
or a ;d869
ret z ;d86a
dec a ;d86b
ld hl,ldbefh ;d86c
cp (hl) ;d86f
ret z ;d870
ld a,(ldbefh) ;d871
jp sub_d4bdh ;d874
call sub_d65eh ;d877
call sub_d854h ;d87a
ld hl,ldbceh ;d87d
ld a,(hl) ;d880
cp 20h ;d881
jp nz,ld88fh ;d883
ld b,0bh ;d886
ld888h:
ld (hl),3fh ;d888
inc hl ;d88a
dec b ;d88b
jp nz,ld888h ;d88c
ld88fh:
ld e,00h ;d88f
push de ;d891
call sub_d4e9h ;d892
call z,sub_d7eah ;d895
ld898h:
jp z,ld91bh ;d898
ld a,(ldbeeh) ;d89b
rrca ;d89e
rrca ;d89f
rrca ;d8a0
and 60h ;d8a1
ld c,a ;d8a3
ld a,0ah ;d8a4
call sub_d84bh ;d8a6
rla ;d8a9
jp c,ld90fh ;d8aa
pop de ;d8ad
ld a,e ;d8ae
inc e ;d8af
push de ;d8b0
and 03h ;d8b1
push af ;d8b3
jp nz,ld8cch ;d8b4
call sub_d498h ;d8b7
push bc ;d8ba
call sub_d5d0h ;d8bb
pop bc ;d8be
add a,41h ;d8bf
call sub_d492h ;d8c1
ld a,3ah ;d8c4
call sub_d492h ;d8c6
jp ld8d4h ;d8c9
ld8cch:
call sub_d4a2h ;d8cc
ld a,3ah ;d8cf
call sub_d492h ;d8d1
ld8d4h:
call sub_d4a2h ;d8d4
ld b,01h ;d8d7
ld8d9h:
ld a,b ;d8d9
call sub_d84bh ;d8da
and 7fh ;d8dd
cp 20h ;d8df
jp nz,ld8f9h ;d8e1
pop af ;d8e4
push af ;d8e5
cp 03h ;d8e6
jp nz,ld8f7h ;d8e8
ld a,09h ;d8eb
call sub_d84bh ;d8ed
and 7fh ;d8f0
cp 20h ;d8f2
jp z,ld90eh ;d8f4
ld8f7h:
ld a,20h ;d8f7
ld8f9h:
call sub_d492h ;d8f9
inc b ;d8fc
ld a,b ;d8fd
cp 0ch ;d8fe
jp nc,ld90eh ;d900
cp 09h ;d903
jp nz,ld8d9h ;d905
call sub_d4a2h ;d908
jp ld8d9h ;d90b
ld90eh:
pop af ;d90e
ld90fh:
call sub_d5c2h ;d90f
jp nz,ld91bh ;d912
call sub_d4e4h ;d915
jp ld898h ;d918
ld91bh:
pop de ;d91b
jp ldb86h ;d91c
call sub_d65eh ;d91f
cp 0bh ;d922
jp nz,ld942h ;d924
ld bc,ld952h ;d927
call ld4a7h ;d92a
call sub_d539h ;d92d
ld hl,ld407h ;d930
dec (hl) ;d933
jp nz,ld782h ;d934
inc hl ;d937
ld a,(hl) ;d938
cp 59h ;d939
jp nz,ld782h ;d93b
inc hl ;d93e
ld (ld488h),hl ;d93f
ld942h:
call sub_d854h ;d942
ld de,ldbcdh ;d945
call sub_d4efh ;d948
inc a ;d94b
call z,sub_d7eah ;d94c
jp ldb86h ;d94f
ld952h:
db "ALL (Y/N)?",0
call sub_d65eh ;d95d
jp nz,ld609h ;d960
call sub_d854h ;d963
call sub_d4d0h ;d966
jp z,ld9a7h ;d969
call sub_d498h ;d96c
ld hl,ldbf1h ;d96f
ld (hl),0ffh ;d972
ld974h:
ld hl,ldbf1h ;d974
ld a,(hl) ;d977
cp 80h ;d978
jp c,ld987h ;d97a
push hl ;d97d
call sub_d4feh ;d97e
pop hl ;d981
jp nz,ld9a0h ;d982
xor a ;d985
ld (hl),a ;d986
ld987h:
inc (hl) ;d987
ld hl,0080h ;d988
call sub_d659h ;d98b
ld a,(hl) ;d98e
cp 1ah ;d98f
jp z,ldb86h ;d991
call sub_d48ch ;d994
call sub_d5c2h ;d997
jp nz,ldb86h ;d99a
jp ld974h ;d99d
ld9a0h:
dec a ;d9a0
jp z,ldb86h ;d9a1
call sub_d7d9h ;d9a4
ld9a7h:
call sub_d866h ;d9a7
jp ld609h ;d9aa
call sub_d7f8h ;d9ad
push af ;d9b0
call sub_d65eh ;d9b1
jp nz,ld609h ;d9b4
call sub_d854h ;d9b7
ld de,ldbcdh ;d9ba
push de ;d9bd
call sub_d4efh ;d9be
pop de ;d9c1
call sub_d509h ;d9c2
jp z,ld9fbh ;d9c5
xor a ;d9c8
ld (ldbedh),a ;d9c9
pop af ;d9cc
ld l,a ;d9cd
ld h,00h ;d9ce
add hl,hl ;d9d0
ld de,0100h ;d9d1
ld9d4h:
ld a,h ;d9d4
or l ;d9d5
jp z,ld9f1h ;d9d6
dec hl ;d9d9
push hl ;d9da
ld hl,0080h ;d9db
add hl,de ;d9de
push hl ;d9df
call sub_d5d8h ;d9e0
ld de,ldbcdh ;d9e3
call sub_d504h ;d9e6
pop de ;d9e9
pop hl ;d9ea
jp nz,ld9fbh ;d9eb
jp ld9d4h ;d9ee
ld9f1h:
ld de,ldbcdh ;d9f1
call sub_d4dah ;d9f4
inc a ;d9f7
jp nz,lda01h ;d9f8
ld9fbh:
ld bc,lda07h ;d9fb
call ld4a7h ;d9fe
lda01h:
call sub_d5d5h ;da01
jp ldb86h ;da04
lda07h:
db "NO SPACE",0
call sub_d65eh ;da10
jp nz,ld609h ;da13
ld a,(ldbf0h) ;da16
push af ;da19
call sub_d854h ;da1a
call sub_d4e9h ;da1d
jp nz,lda79h ;da20
ld hl,ldbcdh ;da23
ld de,ldbddh ;da26
ld b,10h ;da29
call sub_d842h ;da2b
ld hl,(ld488h) ;da2e
ex de,hl ;da31
call ld64fh ;da32
cp 3dh ;da35
jp z,lda3fh ;da37
cp 5fh ;da3a
jp nz,lda73h ;da3c
lda3fh:
ex de,hl ;da3f
inc hl ;da40
ld (ld488h),hl ;da41
call sub_d65eh ;da44
jp nz,lda73h ;da47
pop af ;da4a
ld b,a ;da4b
ld hl,ldbf0h ;da4c
ld a,(hl) ;da4f
or a ;da50
jp z,lda59h ;da51
cp b ;da54
ld (hl),b ;da55
jp nz,lda73h ;da56
lda59h:
ld (hl),b ;da59
xor a ;da5a
ld (ldbcdh),a ;da5b
call sub_d4e9h ;da5e
jp z,lda6dh ;da61
ld de,ldbcdh ;da64
call sub_d50eh ;da67
jp ldb86h ;da6a
lda6dh:
call sub_d7eah ;da6d
jp ldb86h ;da70
lda73h:
call sub_d866h ;da73
jp ld609h ;da76
lda79h:
ld bc,lda82h ;da79
call ld4a7h ;da7c
jp ldb86h ;da7f
lda82h:
db "FILE EXISTS",0
call sub_d7f8h ;da8e
cp 10h ;da91
jp nc,ld609h ;da93
ld e,a ;da96
ld a,(ldbceh) ;da97
cp 20h ;da9a
jp z,ld609h ;da9c
call sub_d515h ;da9f
jp ldb89h ;daa2
ldaa5h:
call sub_d5f5h ;daa5
ld a,(ldbceh) ;daa8
cp 20h ;daab
jp nz,ldac4h ;daad
ld a,(ldbf0h) ;dab0
or a ;dab3
jp z,ldb89h ;dab4
dec a ;dab7
ld (ldbefh),a ;dab8
call sub_d529h ;dabb
call sub_d4bdh ;dabe
jp ldb89h ;dac1
ldac4h:
ld de,ldbd6h ;dac4
ld a,(de) ;dac7
cp 20h ;dac8
jp nz,ld609h ;daca
push de ;dacd
call sub_d854h ;dace
pop de ;dad1
ld hl,ldb83h ;dad2
call sub_d840h ;dad5
call sub_d4d0h ;dad8
jp z,ldb6bh ;dadb
ld hl,0100h ;dade
ldae1h:
push hl ;dae1
ex de,hl ;dae2
call sub_d5d8h ;dae3
ld de,ldbcdh ;dae6
call ld4f9h ;dae9
jp nz,ldb01h ;daec
pop hl ;daef
ld de,0080h ;daf0
add hl,de ;daf3
ld de,ld400h ;daf4
ld a,l ;daf7
sub e ;daf8
ld a,h ;daf9
sbc a,d ;dafa
jp nc,ldb71h ;dafb
jp ldae1h ;dafe
ldb01h:
pop hl ;db01
dec a ;db02
jp nz,ldb71h ;db03
call sub_d866h ;db06
call sub_d65eh ;db09
ld hl,ldbf0h ;db0c
push hl ;db0f
ld a,(hl) ;db10
ld (ldbcdh),a ;db11
ld a,10h ;db14
call sub_d660h ;db16
pop hl ;db19
ld a,(hl) ;db1a
ld (ldbddh),a ;db1b
xor a ;db1e
ld (ldbedh),a ;db1f
ld de,005ch ;db22
ld hl,ldbcdh ;db25
ld b,21h ;db28
call sub_d842h ;db2a
ld hl,ld408h ;db2d
ldb30h:
ld a,(hl) ;db30
or a ;db31
jp z,ldb3eh ;db32
cp 20h ;db35
jp z,ldb3eh ;db37
inc hl ;db3a
jp ldb30h ;db3b
ldb3eh:
ld b,00h ;db3e
ld de,0081h ;db40
ldb43h:
ld a,(hl) ;db43
ld (de),a ;db44
or a ;db45
jp z,ldb4fh ;db46
inc b ;db49
inc hl ;db4a
inc de ;db4b
jp ldb43h ;db4c
ldb4fh:
ld a,b ;db4f
ld (0080h),a ;db50
call sub_d498h ;db53
call sub_d5d5h ;db56
call sub_d51ah ;db59
call 0100h ;db5c
ld sp,ldbabh ;db5f
call sub_d529h ;db62
call sub_d4bdh ;db65
jp ld782h ;db68
ldb6bh:
call sub_d866h ;db6b
jp ld609h ;db6e
ldb71h:
ld bc,ldb7ah ;db71
call ld4a7h ;db74
jp ldb86h ;db77
ldb7ah:
db "BAD LOAD",0
ldb83h:
ld b,e ;db83
ld c,a ;db84
ld c,l ;db85
ldb86h:
call sub_d866h ;db86
ldb89h:
call sub_d65eh ;db89
ld a,(ldbceh) ;db8c
sub 20h ;db8f
ld hl,ldbf0h ;db91
or (hl) ;db94
jp nz,ld609h ;db95
jp ld782h ;db98
nop ;db9b
nop ;db9c
nop ;db9d
nop ;db9e
nop ;db9f
nop ;dba0
nop ;dba1
nop ;dba2
nop ;dba3