-
Notifications
You must be signed in to change notification settings - Fork 6
/
M7I.LST
6027 lines (5540 loc) · 293 KB
/
M7I.LST
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
;*** AILZ80ASM *** Z-80 Assembler, version 1.0.21.0, LST:Full:4
; LSX-Dodgers for MZ-700/1500 キー割り込み処理使用
; Programmed by
; Gaku (Lovers/Tablacus)
0001 USE_8253 EQU 1
INCLUDE "M7.ASM"
; LSX-Dodgers for MZ-700/1500
; Programmed by
; Gaku (Lovers/Tablacus)
INCLUDE "M7DEF.ASM"
; LSX-Dodgers DEF
; MZ-700/1500
0001 MAC EQU 1 ;MZ-700/1500
0000 DEV EQU 0
011D VER_6F EQU 0011DH
8080 RUN EQU 08080H
8000 OFFSET EQU RUN-128
CF06 BDOS EQU 0CF06H
F000 WORKAD EQU 0F000H
ED40 TABLEAD EQU 0ED40H
F300 KEYBF EQU 0F300H
F330 FATBF EQU 0F330H
FB30 DTBUF EQU 0FB30H
FF30 KBUF EQU 0FF30H
FFD9 TRAP38 EQU 0FFD9H
0028 WIDTH EQU 40
0019 LINE EQU 25
0070 COLORF EQU 070H
0014 KEYSP_H EQU 20
0083 KEYSP_L EQU 131
0009 COMS EQU 9
0004 MAX_SEC_SZ_H EQU 4 ;1セクタ1024バイトのサポート(2:off 4:on)
0100 BUFFER EQU 00100H
D0EA S27BUF_COM EQU S27BUF
[EOF:M7DEF.ASM:SHIFT_JIS]
INCLUDE "LDDEF.ASM"
; LSX-Dodgers DEF
0001 VER_1 EQU 1
0006 VER_2 EQU 6
0002 VER_3 EQU 2
1D01 MACW EQU MAC + 01D00H ;機種フラグとLD判別フラグ
0001 MACD EQU MAC + DEV * 256 ;機種フラグとデバイスフラグ
0162 VER EQU VER_1 * 256 + VER_2 * 16 + VER_3
0004 _DVSW EQU 00004H
0005 SYSTEM EQU 00005H
000F JP_HL EQU 0000FH
005C FCB1 EQU 0005CH
006C FCB2 EQU 0006CH
005D FCB1FN EQU FCB1+1
006D FCB2FN EQU FCB2+1
0080 DTA1 EQU 00080H
F323 DISKVE EQU 0F323H
F325 BREAKV EQU 0F325H
FFCA EXTBIO EQU 0FFCAH
0000 DPB_FATLN EQU 00H
0002 DPB_DRD EQU 02H
0004 DPB_DWT EQU 04H
0006 DPB_FATID EQU 06H
0007 DPB_SECPCL EQU 07H
0008 DPB_MAXCL EQU 08H
000A DPB_FDMODE EQU 0AH
000B DPB_DIRSCNT EQU 0BH
000C DPB_MAXCYL EQU 0CH
000D DPB_MAXSEC EQU 0DH
000E DPB_FATPS EQU 0EH
000F DPB_BPS EQU 0FH
0010 DPB_DIRPS EQU 10H
0012 DPB_DEVICE EQU 12H
0013 DPB_UNITNO EQU 13H
0014 DPB_ADDCL EQU 14H
001A DPB_SDIR EQU 1AH
001C DPB_NAME EQU 1CH
[EOF:LDDEF.ASM:SHIFT_JIS]
000000 8000 ORG OFFSET
;MZTヘッダ128バイト
000000 8000 01 DB 1 ;ファイルモード
000001 8001 4C44202020202020 DB "LD " ;ファイル名(13)
2020202020
00000E 800E 535953 DB "SYS" ;拡張子(3)
000011 8011 0D DB $0D
000012 8012 4625 DW LAST_ADR-RUN ;サイズ
000014 8014 8080 DW RUN ;開始アドレス
000016 8016 8080 DW RUN ;実行アドレス
000018 8018 DS 104
INCLUDE "M7INIT.ASM"
; LSX-Dodgers INIT
; MZ-700/1500
000080 8080 C38780 10 JP START
000083 8083 011D DW MACW
000085 8085 6201 DW VER
8087 START:
000087 8087 F3 4 DI
000088 8088 ED56 8 IM 1
00008A 808A 318780 10 LD SP,START
00008D 808D CD9B80 17 CALL INIT ;NZならAUTOEXECを実行
000090 8090 210000 10 LD HL,0
000093 8093 E5 11 PUSH HL
000094 8094 C8 11 RET Z
000095 8095 118081 10 LD DE,AUTOD
000098 8098 C3FDF0 10 JP _COMANL
809B INIT:
00009B 809B D3E0 11 OUT (0E0H),A ;DRAM(0000H-0FFFH)
00009D 809D D3E1 11 OUT (0E1H),A ;DRAM(D000H-FFFFH)
00009F 809F 21E881 10 LD HL,INITE
0000A2 80A2 1106CF 10 LD DE,BDOS
0000A5 80A5 01DE23 10 LD BC,LAST_ADR-INITE
0000A8 80A8 EDB0 LDIR
0000AA 80AA 21B781 10 LD HL,M7BEEPD
0000AD 80AD 1162F0 10 LD DE,BEEPD+1
0000B0 80B0 010A00 10 LD BC,M7BEEPE-M7BEEPD
0000B3 80B3 EDB0 LDIR
0000B5 80B5 210000 10 LD HL,0
0000B8 80B8 065C 7 LD B,05CH
0000BA 80BA 3E DB 03EH ;LD A,??
0000BB 80BB EF 12 RST 28H
0000BC 80BC CD7FDC 17 CALL FILL_MEMORY
0000BF 80BF 06A4 7 LD B,0A4H
0000C1 80C1 AF 4 XOR A
0000C2 80C2 320400 13 LD (_DVSW),A
0000C5 80C5 CD7FDC 17 CALL FILL_MEMORY
0000C8 80C8 3EC3 7 LD A,0C3H ;JP
0000CA 80CA 2103F0 10 LD HL,CPM_WBOOT
0000CD 80CD 320000 13 LD (00000H),A
0000D0 80D0 220100 16 LD (00001H),HL ;IPL
0000D3 80D3 2106CF 10 LD HL,BDOS
0000D6 80D6 320500 13 LD (00005H),A
0000D9 80D9 220600 16 LD (00006H),HL ;BDOS
0000DC 80DC 21D9FF 10 LD HL,TRAP38 ;TRAP38
0000DF 80DF 322800 13 LD (00028H),A
0000E2 80E2 222900 16 LD (00029H),HL ;RST 028H
0000E5 80E5 323800 13 LD (00038H),A
0000E8 80E8 21E2CF 10 LD HL,IO_INT8253
0000EB 80EB 223900 16 LD (00039H),HL
0000EE 80EE 215BF0 10 LD HL,_DISKE+1
0000F1 80F1 2223F3 16 LD (DISKVE),HL
0000F4 80F4 21F5F0 10 LD HL,_BREAK+1
0000F7 80F7 2225F3 16 LD (BREAKV),HL
0000FA 80FA 3EF0 7 LD A,CPM_BOOT/256
0000FC 80FC 320B00 13 LD (0000BH),A
0000FF 80FF 3EE9 7 LD A,0E9H ;JP (HL)
000101 8101 320F00 13 LD (0000FH),A
;CHECK PCG(MZ-1500)
000104 8104 2100E8 10 LD HL,0E800H
000107 8107 46 7 LD B,(HL)
000108 8108 F3 4 DI
000109 8109 3E01 7 LD A,1
00010B 810B D3E5 11 OUT (0E5H),A ;MZ-1500: PCGバンク切り替え
00010D 810D 4E 7 LD C,(HL)
00010E 810E 79 4 LD A,C
00010F 810F C6A5 7 ADD A,0A5H
000111 8111 5F 4 LD E,A
000112 8112 73 7 LD (HL),E
000113 8113 D3E6 11 OUT (0E6H),A ;MZ-1500: PCGバンクを閉じる
000115 8115 71 7 LD (HL),C
000116 8116 3E01 7 LD A,1
000118 8118 D3E5 11 OUT (0E5H),A ;MZ-1500: PCGバンク切り替え
00011A 811A 7E 7 LD A,(HL)
00011B 811B BB 4 CP E
00011C 811C D3E6 11 OUT (0E6H),A ;MZ-1500: PCGバンクを閉じる
00011E 811E 70 7 LD (HL),B
00011F 811F FB 4 EI
000120 8120 2804 12 JR Z,MZ1500
000122 8122 AF 4 XOR A ;MZ-700はPCGバンクが存在しない
000123 8123 32C0F2 13 LD (GRAMFL),A
8126 MZ1500:
000126 8126 DD2180F2 14 LD IX,EMMFL
00012A 812A CD7581 17 CALL CHECK_EMM_BPB
00012D 812D FEEB 7 CP 0EBH
00012F 812F 2817 12 JR Z,EMM_BPB
000131 8131 DD360D02 19 LD (IX+DPB_MAXSEC),2 ;BPBが512バイト目から始まる場合を調べる
000135 8135 CD7581 17 CALL CHECK_EMM_BPB
000138 8138 DDBE06 19 CP (IX+DPB_FATID)
00013B 813B 200B 12 JR NZ,EMM_BPB
00013D 813D DD360D00 19 LD (IX+DPB_MAXSEC),0 ;BPBが先頭の場合に戻す
000141 8141 2103E0 10 LD HL,0E003H ;SOUND MASK (MZ-1500)
000144 8144 AF 4 XOR A
000145 8145 CD4BCF 17 CALL WRMMIO
8148 EMM_BPB:
000148 8148 218C81 10 LD HL,INIMES
00014B 814B CD8DD4 17 CALL MSX
814E INIT1:
00014E 814E F3 4 DI
00014F 814F 1100FF 10 LD DE,0FF00H
000152 8152 0600 7 LD B,0
000154 8154 CD2CD3 17 CALL ZERO_MEMORY_DE
000157 8157 21CAFF 10 LD HL,EXTBIO
00015A 815A 36C9 10 LD (HL),0C9H ;RET
00015C 815C 23 6 INC HL
00015D 815D 060E 7 LD B,TRAP38-EXTBIO-1
00015F 815F 3E DB 03EH ;LD A,??
000160 8160 EF 12 RST 28H
000161 8161 CD7FDC 17 CALL FILL_MEMORY
000164 8164 21C181 10 LD HL,AT_TRAP38
000167 8167 11D9FF 10 LD DE,TRAP38
00016A 816A 012700 10 LD BC,AT_TRAPE-AT_TRAP38
00016D 816D EDB0 LDIR
00016F 816F CD32DB 17 CALL CHKEY
000172 8172 FE03 7 CP 3
000174 8174 C9 10 RET
8175 CHECK_EMM_BPB:
000175 8175 D5 11 PUSH DE
000176 8176 110000 10 LD DE,0
000179 8179 CDABEA 17 CALL EADR
00017C 817C D1 10 POP DE
00017D 817D ED78 12 IN A,(C)
00017F 817F C9 10 RET
000180 8180 4155544F45584543 AUTOD: DB "AUTOEXEC "
20
000189 8189 413A00 AUTODV: DB "A:",0
00018C 818C 0C4C53582D446F64 INIMES: DB 00CH,"LSX-Dodgers for MZ-700/1500 v"
6765727320666F72
204D5A2D3730302F
313530302076
0001AA 81AA 312E DB 030H + VER_1, '.'
0001AC 81AC 3632 DB 030H + VER_2 ,030H + VER_3
0001AE 81AE 62 DB 'b'
0001AF 81AF 2047616B750D0A DB " Gaku",0DH,0AH
0001B6 81B6 00 DB 0
81B7 M7BEEPD:
0001B7 81B7 0801 DB 8,1
0001B9 81B9 0736 DB 7,036H
0001BB 81BB 04F9 DB 4,0F9H
0001BD 81BD 0403 DB 4,3
0001BF 81BF 0301 DB 3,1 ;SOUND MASK(MZ-1500)
81C1 M7BEEPE:
81C1 AT_TRAP38:
0001C1 FFD9 ORG TRAP38,AT_TRAP38-OFFSET
0001C1 FFD9 210000 10 LD HL,0
0001C4 FFDC E3 19 EX (SP),HL
0001C5 FFDD 3E24 7 LD A,'$'
0001C7 FFDF CD7DD7 17 CALL MSG_A
0001CA FFE2 2B 6 DEC HL
0001CB FFE3 7C 4 LD A,H
0001CC FFE4 CDE8FF 17 CALL PRHX
0001CF FFE7 7D 4 LD A,L
FFE8 PRHX:
0001D0 FFE8 F5 11 PUSH AF
0001D1 FFE9 07 4 RLCA
0001D2 FFEA 07 4 RLCA
0001D3 FFEB 07 4 RLCA
0001D4 FFEC 07 4 RLCA
0001D5 FFED CDF1FF 17 CALL PRHX2
0001D8 FFF0 F1 10 POP AF
FFF1 PRHX2:
0001D9 FFF1 E60F 7 AND 00FH
0001DB FFF3 FE0A 7 CP 10
0001DD FFF5 3F 4 CCF
0001DE FFF6 CE30 7 ADC A,'0'
0001E0 FFF8 27 4 DAA
0001E1 FFF9 C37DD7 10 JP MSG_A
0001E4 FFFC DS 4
0001E8 81E8 ORG $$+OFFSET,$$ ;$DEPHASE
81E8 AT_TRAPE:
81E8 INITE:
0001E8 CF06 ORG BDOS,INITE-OFFSET
0001E8 CF06 C309CF 10 JP IO_BDOS
[EOF:M7INIT.ASM:SHIFT_JIS]
INCLUDE "M7BANK.ASM"
; LSX-Dodgers IO
; MZ-700/1500
; VRAM/KEY/TIMER(0D000H-0EFFFH)にアクセスするので0D000H-0FFFFHに置けない部分
;
CF09 IO_BDOS:
0001EB CF09 D3E1 11 OUT (0E1H),A ;DRAM(D000H-FFFFH)
0001ED CF0B C34ED4 10 JP BDOS0
CF0E IO_CLR:
0001F0 CF0E D3E3 11 OUT (0E3H),A ;VRAM/KEY/TIMER(D000H-FFFFH)
CF10 C1AX1:
0001F2 CF10 7A 4 LD A,D
0001F3 CF11 C6D0 7 ADD A,0D0H
0001F5 CF13 57 4 LD D,A
0001F6 CF14 AF 4 XOR A
0001F7 CF15 12 7 LD (DE),A ;Text
0001F8 CF16 CBDA 8 SET 3,D
0001FA CF18 3E00 7 LD A,0 ;自己書き換え
;BDOS0+13Hが外部から書き換えされても動くようにする
CF19 ICSMC EQU $-1
0001FC CF1A 12 7 LD (DE),A ;Color
0001FD CF1B 13 6 INC DE
0001FE CF1C 7A 4 LD A,D
0001FF CF1D D6D8 7 SUB 0D8H
000201 CF1F 57 4 LD D,A
000202 CF20 2118FC 10 LD HL,0-WIDTH*LINE
CF21 _NEG_PAGE_SWC EQU $-2
000205 CF23 19 11 ADD HL,DE
000206 CF24 30EA 12 JR NC,C1AX1
000208 CF26 E1 10 POP HL
000209 CF27 D1 10 POP DE
00020A CF28 D3E1 11 OUT (0E1H),A ;DRAM(D000H-FFFFH)
00020C CF2A FB 4 EI
00020D CF2B C9 10 RET
CF2C RDKEYDATA:
00020E CF2C F3 4 DI
00020F CF2D D3E3 11 OUT (0E3H),A ;VRAM/KEY/TIMER(D000H-FFFFH)
000211 CF2F 3200E0 13 LD (0E000H),A
000214 CF32 3A01E0 13 LD A,(E001H)
000217 CF35 D3E1 11 OUT (0E1H),A ;DRAM(D000H-FFFFH)
000219 CF37 FB 4 EI
00021A CF38 C9 10 RET
CF39 RD556VSYNC:
00021B CF39 F3 4 DI
00021C CF3A D3E3 11 OUT (0E3H),A ;VRAM/KEY/TIMER(D000H-FFFFH)
00021E CF3C 3A02E0 13 LD A,(0E002H)
000221 CF3F D3E1 11 OUT (0E1H),A ;DRAM(D000H-FFFFH)
000223 CF41 FB 4 EI
000224 CF42 C9 10 RET
CF43 RDMMIO:
000225 CF43 F3 4 DI
000226 CF44 D3E3 11 OUT (0E3H),A ;VRAM/KEY/TIMER(D000H-FFFFH)
000228 CF46 7E 7 LD A,(HL)
000229 CF47 D3E1 11 OUT (0E1H),A ;DRAM(D000H-FFFFH)
00022B CF49 FB 4 EI
00022C CF4A C9 10 RET
CF4B WRMMIO:
00022D CF4B F3 4 DI
00022E CF4C D3E3 11 OUT (0E3H),A ;VRAM/KEY/TIMER(D000H-FFFFH)
000230 CF4E 77 7 LD (HL),A
000231 CF4F D3E1 11 OUT (0E1H),A ;DRAM(D000H-FFFFH)
000233 CF51 FB 4 EI
000234 CF52 C9 10 RET
CF53 RDMMIO_BC:
000235 CF53 F3 4 DI
000236 CF54 D3E3 11 OUT (0E3H),A ;VRAM/KEY/TIMER(D000H-FFFFH)
000238 CF56 0A 7 LD A,(BC)
000239 CF57 D3E1 11 OUT (0E1H),A ;DRAM(D000H-FFFFH)
00023B CF59 FB 4 EI
00023C CF5A C9 10 RET
CF5B WRMMIO_BC:
00023D CF5B F3 4 DI
00023E CF5C D3E3 11 OUT (0E3H),A ;VRAM/KEY/TIMER(D000H-FFFFH)
000240 CF5E 02 7 LD (BC),A
000241 CF5F D3E1 11 OUT (0E1H),A ;DRAM(D000H-FFFFH)
000243 CF61 FB 4 EI
000244 CF62 C9 10 RET
CF63 IO_PRINT:
000245 CF63 F3 4 DI
000246 CF64 D3E3 11 OUT (0E3H),A ;VRAM/KEY/TIMER(D000H-FFFFH)
000248 CF66 77 7 LD (HL),A
000249 CF67 CBDC 8 SET 3,H
00024B CF69 71 7 LD (HL),C
00024C CF6A D3E1 11 OUT (0E1H),A ;DRAM(D000H-FFFFH)
00024E CF6C FB 4 EI
00024F CF6D C9 10 RET
CF6E IO_CLLINE:
000250 CF6E F3 4 DI
000251 CF6F D3E3 11 OUT (0E3H),A ;VRAM/KEY/TIMER(D000H-FFFFH)
CF71 CLLINE1:
000253 CF71 CB9C 8 RES 3,H
000255 CF73 77 7 LD (HL),A ;Text
000256 CF74 CBDC 8 SET 3,H
000258 CF76 71 7 LD (HL),C ;Color
000259 CF77 23 6 INC HL
00025A CF78 10F7 13 DJNZ CLLINE1
00025C CF7A D3E1 11 OUT (0E1H),A ;DRAM(D000H-FFFFH)
00025E CF7C FB 4 EI
00025F CF7D C9 10 RET
CF7E IO_INSBS:
000260 CF7E F3 4 DI
000261 CF7F D3E3 11 OUT (0E3H),A ;VRAM/KEY/TIMER(D000H-FFFFH)
CF81 IO_INSBS1:
000263 CF81 CB9C 8 RES 3,H
000265 CF83 5E 7 LD E,(HL)
000266 CF84 77 7 LD (HL),A
000267 CF85 7B 4 LD A,E
000268 CF86 CBDC 8 SET 3,H
00026A CF88 5E 7 LD E,(HL)
00026B CF89 71 7 LD (HL),C
00026C CF8A 4B 4 LD C,E
CF8B IO_INCDEC EQU $ ; 自己書き換え
00026D CF8B 23 6 INC HL ;INS->INC HL or BS->DEC HL
00026E CF8C 10F3 13 DJNZ IO_INSBS1
000270 CF8E D3E1 11 OUT (0E1H),A ;DRAM(D000H-FFFFH)
000272 CF90 FB 4 EI
000273 CF91 C9 10 RET
CF92 IO_SCRUP:
000274 CF92 F3 4 DI
000275 CF93 D3E3 11 OUT (0E3H),A ;VRAM/KEY/TIMER(D000H-FFFFH)
CF95 SCRUP1:
000277 CF95 2815 12 JR Z,SCRCL
000279 CF97 D5 11 PUSH DE
00027A CF98 E5 11 PUSH HL
00027B CF99 CBDA 8 SET 3,D
00027D CF9B CBDC 8 SET 3,H
00027F CF9D 012800 10 LD BC,WIDTH
000282 CFA0 EDB0 LDIR
000284 CFA2 E1 10 POP HL
000285 CFA3 D1 10 POP DE
000286 CFA4 012800 10 LD BC,WIDTH
000289 CFA7 EDB0 LDIR
00028B CFA9 3D 4 DEC A
00028C CFAA 18E9 12 JR SCRUP1
CFAC SCRCL:
00028E CFAC 0628 7 LD B,WIDTH
000290 CFAE EB 4 EX DE,HL
000291 CFAF D3E1 11 OUT (0E1H),A ;DRAM(D000H-FFFFH)
000293 CFB1 CD73D9 17 CALL CLLINE
000296 CFB4 E1 10 POP HL
000297 CFB5 D1 10 POP DE
000298 CFB6 C1 10 POP BC
000299 CFB7 C9 10 RET
CFB8 RD_PCG:
00029A CFB8 F3 4 DI
00029B CFB9 D3E5 11 OUT (0E5H),A ;MZ-1500: PCGバンク切り替え
00029D CFBB 4E 7 LD C,(HL)
CFBC RW_PCG:
00029E CFBC D3E6 11 OUT (0E6H),A ;MZ-1500: PCGバンクを閉じる
0002A0 CFBE FB 4 EI
0002A1 CFBF C9 10 RET
CFC0 WR_PCG:
0002A2 CFC0 F3 4 DI
0002A3 CFC1 D3E5 11 OUT (0E5H),A ;MZ-1500: PCGバンク切り替え
0002A5 CFC3 71 7 LD (HL),C
0002A6 CFC4 18F6 12 JR RW_PCG
CFC6 IO_MON:
0002A8 CFC6 D3E4 11 OUT (0E4H),A ;MONITOR ROM(0000H-0FFFH) & VRAM/KEY/TIMER(D000H-FFFFH)
0002AA CFC8 C7 12 RST 0
#IF EXISTS USE_8253
CFC9 INITINT:
0002AB CFC9 D3E3 11 OUT (0E3H),A ;VRAM/KEY/TIMER(D000H-FFFFH)
0002AD CFCB 2107E0 10 LD HL,0E007H ;HL=0E007H 8253 コントロール
0002B0 CFCE 36B0 10 LD (HL),0B0H ;Ch.2 カウンタの下位バイト→上位バイトの順に連続してアクセス Mode 0 16ビットバイナリ
0002B2 CFD0 3674 10 LD (HL),074H ;Ch.1 カウンタの下位バイト→上位バイトの順に連続してアクセス Mode 2 16ビットバイナリ
0002B4 CFD2 2D 4 DEC L ;0E006H 8253 Ch.2 カウンタ
0002B5 CFD3 3602 10 LD (HL),2
0002B7 CFD5 3600 10 LD (HL),0
0002B9 CFD7 2D 4 DEC L ;0E005H 8253 Ch.1 カウンタ
0002BA CFD8 77 7 LD (HL),A
0002BB CFD9 3600 10 LD (HL),0
0002BD CFDB 7D 4 LD A,L ;L=5
0002BE CFDC 3203E0 13 LD (0E003H),A ;8255 コントロールポートでポートC(0E002H)のINTMSKを1にする
0002C1 CFDF D3E1 11 OUT (0E1H),A ;DRAM(D000H-FFFFH)
0002C3 CFE1 C9 10 RET
#ENDIF
CFE2 IO_INT8253:
#IF EXISTS USE_8253
0002C4 CFE2 F5 11 PUSH AF
0002C5 CFE3 3ACAFF 13 LD A,(EXTBIO)
0002C8 CFE6 3247D7 13 LD (INTMEM_SWC),A
0002CB CFE9 D3E3 11 OUT (0E3H),A ;VRAM/KEY/TIMER(D000H-FFFFH)
0002CD CFEB 3E01 7 LD A,1
0002CF CFED 3206E0 13 LD (0E006H),A ;8253 Ch.2 カウンタ
0002D2 CFF0 AF 4 XOR A
0002D3 CFF1 3206E0 13 LD (0E006H),A ;8253 Ch.2 カウンタ
0002D6 CFF4 D3E1 11 OUT (0E1H),A ;DRAM(D000H-FFFFH)
0002D8 CFF6 C325D7 10 JP INT8253
CFF9 ROM8253E:
0002DB CFF9 D3E3 11 OUT (0E3H),A ;VRAM/KEY/TIMER(D000H-FFFFH)
0002DD CFFB F1 10 POP AF
#ENDIF
0002DE CFFC C9 10 RET
CFFD BANKE:
0002DF CFFD DS 0CFFEH-BANKE
[EOF:M7BANK.ASM:SHIFT_JIS]
INCLUDE "M7CCP.ASM"
; LSX-Dodgers CCP
; MZ-700/1500
CFFE WBOOT1:
0002E0 CFFE D3E1 11 OUT (0E1H),A ;DRAM(D000H-FFFFH) ここは0CFFEH
0002E2 D000 D3E0 11 OUT (0E0H),A ;DRAM(0000H-0FFHH)
0002E4 D002 F3 4 DI
0002E5 D003 3A94F0 13 LD A,(_KEYSP_L)
#IF EXISTS USE_8253
0002E8 D006 CDC9CF 17 CALL INITINT
#ENDIF
0002EB D009 ED7B0600 20 LD SP,(SYSTEM+1)
0002EF D00D FB 4 EI
0002F0 D00E 2ABAF0 16 LD HL,(_PAGE_MINUS)
0002F3 D011 2221CF 16 LD (_NEG_PAGE_SWC),HL
0002F6 D014 2192F0 10 LD HL,_KEYD
0002F9 D017 3600 10 LD (HL),0
0002FB D019 CD32DB 17 CALL CHKEY
0002FE D01C CD6AD7 17 CALL KEYBC_IFBREAK
000301 D01F 3E04 7 LD A,4
000303 D021 CD7DD7 17 CALL MSG_A
[EOF:M7CCP.ASM:UTF_8]
INCLUDE "LDCCP.ASM"
; LSX-Dodgers CCP
D024 COMMAND:
000306 D024 3AA9EB 13 LD A,(FCB_BAT)
000309 D027 B7 4 OR A
00030A D028 C266D1 10 JP NZ,C_BAT1
00030D D02B CDDAD0 17 CALL SETDTA1
000310 D02E 3A0400 13 LD A,(_DVSW)
000313 D031 C641 7 ADD A,'A'
000315 D033 CD7DD7 17 CALL MSG_A
000318 D036 3E3E 7 LD A,'>'
00031A D038 CD7DD7 17 CALL MSG_A
00031D D03B 3E50 7 LD A,80
00031F D03D 12 7 LD (DE),A
000320 D03E CDDDD7 17 CALL _SYS0A ;(BDOS)文字列入力
000323 D041 CD5BD2 17 CALL LTNL
D044 COMMAND2:
000326 D044 118200 10 LD DE,DTA1+2
000329 D047 CDFDF0 17 CALL _COMANL
00032C D04A DC11D7 17 CALL C,SHOW_ERROR
00032F D04D 18D5 12 JR COMMAND
D04F COMANL:
000331 D04F CDD4DB 17 CALL FILE
000334 D052 3A19F0 13 LD A,(FNAME+4)
000337 D055 FE20 7 CP 020H
000339 D057 201C 12 JR NZ,COMB2
00033B D059 D5 11 PUSH DE
00033C D05A 1115F0 10 LD DE,FNAME
00033F D05D 1A 7 LD A,(DE)
000340 D05E FE20 7 CP 020H
000342 D060 2844 12 JR Z,SDVSW
000344 D062 1B 6 DEC DE
000345 D063 1A 7 LD A,(DE)
000346 D064 C6FF 7 ADD A,0FFH
000348 D066 3809 12 JR C,COMB
00034A D068 13 6 INC DE
00034B D069 2118D4 10 LD HL,COMTB
00034E D06C 0609 7 LD B,COMS
000350 D06E CD61DE 17 CALL CPNAME
D071 COMB:
000353 D071 D1 10 POP DE
000354 D072 D210D7 10 JP NC,JPHL
D075 COMB2:
000357 D075 EB 4 EX DE,HL
000358 D076 2243D1 16 LD (COMSWC),HL
00035B D079 F5 11 PUSH AF
00035C D07A CDFBD0 17 CALL CEXE4
00035F D07D F1 10 POP AF
000360 D07E 2115F0 10 LD HL,FNAME
000363 D081 116D00 10 LD DE,FCB2FN ;COMMAND NAME
000366 D084 010B00 10 LD BC,11
000369 D087 EDB0 LDIR
00036B D089 1148EB 10 LD DE,PATHD
D08C CEX1:
00036E D08C 1A 7 LD A,(DE)
00036F D08D FE20 7 CP 020H
000371 D08F D8 11 RET C
000372 D090 CDC9DB 17 CALL FILEC
000375 D093 D5 11 PUSH DE
000376 D094 216D00 10 LD HL,FCB2FN ;COMMAND NAME
000379 D097 1115F0 10 LD DE,FNAME
00037C D09A 010B00 10 LD BC,11
00037F D09D EDB0 LDIR
000381 D09F CDFBD0 17 CALL CEXE4
000384 D0A2 D1 10 POP DE
000385 D0A3 13 6 INC DE
000386 D0A4 18E6 12 JR CEX1
D0A6 SDVSW:
000388 D0A6 F1 10 POP AF
000389 D0A7 3A14F0 13 LD A,(FDRV)
00038C D0AA 3D 4 DEC A
00038D D0AB 5F 4 LD E,A
00038E D0AC 0E0E 7 LD C,00EH ;(BDOS)カレントドライブの設定
000390 D0AE 1831 12 JR SYSTEM0
D0B0 OPEN1:
000392 D0B0 2114F0 10 LD HL,FDRV
D0B3 OPEN:
000395 D0B3 0E11 7 LD C,011H ;(BDOS)ファイルの検索
D0B5 OPEN3:
000397 D0B5 D5 11 PUSH DE
000398 D0B6 1184EB 10 LD DE,DTA_CCP
00039B D0B9 CDD7D0 17 CALL SETDTA
00039E D0BC EB 4 EX DE,HL
00039F D0BD CDE1D0 17 CALL SYSTEM0
0003A2 D0C0 D1 10 POP DE
0003A3 D0C1 C9 10 RET
D0C2 OPEN2:
0003A4 D0C2 0E12 7 LD C,012H
0003A6 D0C4 18EF 12 JR OPEN3
D0C6 DEFCB: ;Z=Ok NZ=Error
0003A8 D0C6 1184EB 10 LD DE,DTA_CCP
0003AB D0C9 CDDFD0 17 CALL SYSC0F
0003AE D0CC 11A5EB 10 LD DE,DTA_CCP+33 ;(FCB)ランダムレコード
0003B1 D0CF 0604 7 LD B,4
0003B3 D0D1 CD2CD3 17 CALL ZERO_MEMORY_DE
D0D4 SETDTA100:
0003B6 D0D4 110001 10 LD DE,BUFFER
D0D7 SETDTA:
0003B9 D0D7 C351D6 10 JP _SYS1A ;(BDOS)DTAの設定
D0DA SETDTA1:
0003BC D0DA 118000 10 LD DE,DTA1
0003BF D0DD 18F8 12 JR SETDTA
D0DF SYSC0F:
0003C1 D0DF 0E0F 7 LD C,00FH ;(BDOS)ファイルのオープン
D0E1 SYSTEM0:
0003C3 D0E1 CD0500 17 CALL SYSTEM
0003C6 D0E4 B7 4 OR A
0003C7 D0E5 C9 10 RET
D0E6 C_CD:
0003C8 D0E6 0E5A 7 LD C,05AH
0003CA D0E8 18F7 12 JR SYSTEM0
D0EA S27BUF:
0003CC D0EA 2100FE 10 LD HL,0-BUFFER-00100H ;バッファー+スタック予備(0100H)
D0ED S27BUF2:
0003CF D0ED 39 11 ADD HL,SP
0003D0 D0EE 2E00 7 LD L,0
0003D2 D0F0 7C 4 LD A,H
0003D3 D0F1 E6F8 7 AND 0F8H
0003D5 D0F3 67 4 LD H,A
D0F4 S27DTA:
0003D6 D0F4 1184EB 10 LD DE,DTA_CCP
D0F7 S27:
0003D9 D0F7 0E27 7 LD C,027H ;(BDOS)ランダムブロック読み込み
0003DB D0F9 18E6 12 JR SYSTEM0
D0FB CEXE4:
0003DD D0FB 211DF0 10 LD HL,FNAME+8
0003E0 D0FE 7E 7 LD A,(HL)
0003E1 D0FF FE20 7 CP 020H
0003E3 D101 2007 12 JR NZ,CEXE7
0003E5 D103 3E3F 7 LD A,'?'
0003E7 D105 77 7 LD (HL),A
0003E8 D106 23 6 INC HL
0003E9 D107 77 7 LD (HL),A
0003EA D108 23 6 INC HL
0003EB D109 77 7 LD (HL),A
D10A CEXE7:
0003EC D10A CDB0D0 17 CALL OPEN1
D10D CEXE5:
0003EF D10D C0 11 RET NZ
0003F0 D10E 2A8EEB 16 LD HL,(DTA_CCP+1+9)
0003F3 D111 7C 4 LD A,H
0003F4 D112 CDF0DE 17 CALL CAP
0003F7 D115 67 4 LD H,A
0003F8 D116 7D 4 LD A,L
0003F9 D117 CDF0DE 17 CALL CAP
0003FC D11A 6F 4 LD L,A
0003FD D11B 3A8DEB 13 LD A,(DTA_CCP+1+8)
000400 D11E CDF0DE 17 CALL CAP
000403 D121 D642 7 SUB 'B'
000405 D123 282C 12 JR Z,C_BAT
000407 D125 3D 4 DEC A ;'C'
000408 D126 2805 12 JR Z,C_EXE
D128 CEXE6:
00040A D128 CDC2D0 17 CALL OPEN2
00040D D12B 18E0 12 JR CEXE5
D12D C_EXE:
00040F D12D 7C 4 LD A,H
000410 D12E FE4D 7 CP 'M'
000412 D130 20F6 12 JR NZ,CEXE6
000414 D132 CDC6D0 17 CALL DEFCB
000417 D135 CDEAD0 17 CALL S27BUF_COM
00041A D138 3D 4 DEC A
00041B D139 37 4 SCF
00041C D13A C0 11 RET NZ
00041D D13B 7C 4 LD A,H
00041E D13C B5 4 OR L
00041F D13D 37 4 SCF
000420 D13E C8 11 RET Z
000421 D13F CDDAD0 17 CALL SETDTA1
000424 D142 110000 10 LD DE,0 ; self-modifying code
D143 COMSWC EQU $-2
000427 D145 ED7B0600 20 LD SP,(SYSTEM+1)
00042B D149 67 4 LD H,A ; A=0 in SETDTA1(_SYS1A)
00042C D14A 6F 4 LD L,A
00042D D14B E5 11 PUSH HL ; push $0000 (reboot address)
00042E D14C 24 4 INC H
00042F D14D E5 11 PUSH HL ; push $0100 (TPA address)
000430 D14E C3F7D2 10 JP SETFCB ; and JP $0100
D151 C_BAT:
000433 D151 114154 10 LD DE,'A'+'T'*256
000436 D154 ED52 15 SBC HL,DE
000438 D156 20D0 12 JR NZ,CEXE6
00043A D158 CDC6D0 17 CALL DEFCB
00043D D15B 2184EB 10 LD HL,DTA_CCP
000440 D15E 11A9EB 10 LD DE,FCB_BAT
000443 D161 012500 10 LD BC,37
000446 D164 EDB0 LDIR
D166 C_BAT1:
000448 D166 CDD4D0 17 CALL SETDTA100
00044B D169 CD9DD1 17 CALL FGETC_BAT
00044E D16C 218100 10 LD HL,DTA1+1
000451 D16F 2025 12 JR NZ,END_BATCH
000453 D171 FE21 7 CP 021H ;スペースや改行など制御文字を飛ばす
000455 D173 38F1 12 JR C,C_BAT1
000457 D175 3620 10 LD (HL),' '
000459 D177 23 6 INC HL
D178 C_BAT2:
00045A D178 77 7 LD (HL),A
00045B D179 23 6 INC HL
00045C D17A 7D 4 LD A,L
00045D D17B 3C 4 INC A ;L==0FFH
00045E D17C 2809 12 JR Z,RUN_BATCH
000460 D17E CD9DD1 17 CALL FGETC_BAT
000463 D181 2004 12 JR NZ,RUN_BATCH
000465 D183 FE20 7 CP 020H
000467 D185 30F1 12 JR NC,C_BAT2
D187 RUN_BATCH:
000469 D187 7D 4 LD A,L
00046A D188 D67F 7 SUB DTA1-1
00046C D18A 328000 13 LD (DTA1),A
00046F D18D FE04 7 CP 4
000471 D18F 3805 12 JR C,END_BATCH
000473 D191 3600 10 LD (HL),0
000475 D193 C344D0 10 JP COMMAND2
D196 END_BATCH:
000478 D196 AF 4 XOR A ;バッチファイルを閉じる
000479 D197 32A9EB 13 LD (FCB_BAT),A
00047C D19A C300F0 10 JP CPM_BOOT
D19D FGETC_BAT:
00047F D19D 11A9EB 10 LD DE,FCB_BAT
D1A0 FGETC: ;1文字ずつ読み込む
000482 D1A0 E5 11 PUSH HL ;Z:成功
000483 D1A1 210100 10 LD HL,1
000486 D1A4 CDF7D0 17 CALL S27
000489 D1A7 E1 10 POP HL
00048A D1A8 3A0001 13 LD A,(BUFFER)
00048D D1AB C9 10 RET
D1AC C_DEL:
00048E D1AC CDF7D2 17 CALL SETFCB
000491 D1AF CD93D7 17 CALL _SYS08 ;(BDOS)エコーなしコンソール入力
000494 D1B2 0E13 7 LD C,013H
000496 D1B4 180A 12 JR CDEL1 ;(BDOS)ファイルの削除
D1B6 C_REN:
000498 D1B6 CDF7D2 17 CALL SETFCB
00049B D1B9 3E10 7 LD A,010H ;ディレクトリも対象にする
00049D D1BB 326900 13 LD (FCB1+13),A ;属性
0004A0 D1BE 0E17 7 LD C,017H ;(BDOS)ファイル名の変更
D1C0 CDEL1:
0004A2 D1C0 115C00 10 LD DE,FCB1
0004A5 D1C3 CD0500 17 CALL SYSTEM
0004A8 D1C6 C6FF 7 ADD A,0FFH
0004AA D1C8 C9 10 RET
D1C9 C_DIR:
0004AB D1C9 CDC9DB 17 CALL FILEC
0004AE D1CC 2115F0 10 LD HL,FDRV+1
0004B1 D1CF CD0DD4 17 CALL CWILD1
0004B4 D1D2 3EF1 7 LD A,0F1H
0004B6 D1D4 3221F0 13 LD (FDRV+13),A
0004B9 D1D7 CDB0D0 17 CALL OPEN1
D1DA CDIR1:
0004BC D1DA B7 4 OR A
0004BD D1DB 2008 12 JR NZ,PDSKF
0004BF D1DD CD28D2 17 CALL P_NAME
0004C2 D1E0 CDC2D0 17 CALL OPEN2
0004C5 D1E3 18F5 12 JR CDIR1
D1E5 PDSKF:
0004C7 D1E5 3A14F0 13 LD A,(FDRV)
0004CA D1E8 5F 4 LD E,A
0004CB D1E9 0E1B 7 LD C,01BH ;(BDOS)ディスク情報の獲得
0004CD D1EB CD0500 17 CALL SYSTEM
0004D0 D1EE 4F 4 LD C,A ;C←1クラスタ辺りの論理セクタ数
0004D1 D1EF C601 7 ADD A,001H
0004D3 D1F1 D8 11 RET C ;Aが0FFHだった場合
0004D4 D1F2 3E06 7 LD A,8-2
D1F4 PDS1: ;HL=未使用クラスタの総数
0004D6 D1F4 3C 4 INC A
0004D7 D1F5 CB19 8 RR C
0004D9 D1F7 30FB 12 JR NC,PDS1
D1F9 PDS2: ;B←論理セクタのサイズの上位8ビット
0004DB D1F9 3C 4 INC A
0004DC D1FA CB18 8 RR B
0004DE D1FC 30FB 12 JR NC,PDS2
0004E0 D1FE 47 4 LD B,A
0004E1 D1FF 110000 10 LD DE,0
D202 PDS3:
0004E4 D202 29 11 ADD HL,HL
0004E5 D203 EB 4 EX DE,HL
0004E6 D204 ED6A 15 ADC HL,HL
0004E8 D206 EB 4 EX DE,HL
0004E9 D207 10F9 13 DJNZ PDS3
D209 PDSKF1:
0004EB D209 CD95D2 17 CALL PRDEC_DEHL
0004EE D20C 11D9EB 10 LD DE,FREE
0004F1 D20F CD7ED4 17 CALL _SYS09 ;(BDOS)文字列出力
0004F4 D212 CD82D2 17 CALL PUTDRV
0004F7 D215 3E5C 7 LD A,05CH ;\
0004F9 D217 CD7DD7 17 CALL MSG_A
0004FC D21A 2A22F0 16 LD HL,(FDRV+14) ;ディレクトリのクラスタ番号
0004FF D21D AF 4 XOR A
000500 D21E 11FEFF 10 LD DE,0-2
000503 D221 19 11 ADD HL,DE
000504 D222 23 6 INC HL
000505 D223 DC92D2 17 CALL C,PRDEC_HL
000508 D226 1833 12 JR LTNL
D228 P_NAME:
00050A D228 3A85EB 13 LD A,(DTA_CCP+1)
00050D D22B FE2E 7 CP '.'
00050F D22D C8 11 RET Z
000510 D22E 3A90EB 13 LD A,(DTA_CCP+1+00BH)
000513 D231 F5 11 PUSH AF
000514 D232 CB67 8 BIT 4,A
000516 D234 2808 12 JR Z,DIR3
000518 D236 11CEEB 10 LD DE,DIRMES
00051B D239 CD7ED4 17 CALL _SYS09 ;(BDOS)文字列出力
00051E D23C 180A 12 JR DIR6
D23E DIR3:
000520 D23E ED5BA3EB 20 LD DE,(DTA_CCP+1+01EH)
000524 D242 2AA1EB 16 LD HL,(DTA_CCP+1+01CH)
000527 D245 CD95D2 17 CALL PRDEC_DEHL
D248 DIR6:
00052A D248 F1 10 POP AF
00052B D249 0F 4 RRCA
00052C D24A 9F 4 SBC A,A
00052D D24B E60A 7 AND '*'-020H
00052F D24D C620 7 ADD A,020H
000531 D24F CD7DD7 17 CALL MSG_A
000534 D252 CD82D2 17 CALL PUTDRV
000537 D255 2185EB 10 LD HL,DTA_CCP+1
00053A D258 CDD5D2 17 CALL FPRNT
D25B LTNL:
00053D D25B 1E03 7 LD E,3
00053F D25D C3CDF0 10 JP _PRINT
D260 C_PATH:
000542 D260 CDAADC 17 CALL SPCUT
000545 D263 2148EB 10 LD HL,PATHD
000548 D266 FE21 7 CP 021H
00054A D268 300C 12 JR NC,CPATH0
D26A CPATHP:
00054C D26A 7E 7 LD A,(HL)
00054D D26B 23 6 INC HL
00054E D26C FE20 7 CP 020H
000550 D26E 3F 4 CCF
000551 D26F 30EA 12 JR NC,LTNL
000553 D271 CD7DD7 17 CALL MSG_A
000556 D274 18F4 12 JR CPATHP
D276 CPATH0:
000558 D276 FE3B 7 CP ';'
00055A D278 2001 12 JR NZ,CPATH1
00055C D27A 13 6 INC DE
D27B CPATH1:
00055D D27B EB 4 EX DE,HL
00055E D27C 013B00 10 LD BC,PATHX
000561 D27F EDB0 LDIR
000563 D281 C9 10 RET
D282 PUTDRV:
000564 D282 3A14F0 13 LD A,(FDRV)
000567 D285 CDDDDC 17 CALL GETDRV1
00056A D288 C641 7 ADD A,'A'
00056C D28A CD7DD7 17 CALL MSG_A
00056F D28D 3E3A 7 LD A,':'
D28F MSG_AR:
000571 D28F C37DD7 10 JP MSG_A
D292 PRDEC_HL:
000574 D292 AF 4 XOR A
000575 D293 5F 4 LD E,A
000576 D294 57 4 LD D,A
D295 PRDEC_DEHL:
000577 D295 D5 11 PUSH DE
000578 D296 110FF0 10 LD DE,DECBF
00057B D299 0605 7 LD B,5
00057D D29B CD2CD3 17 CALL ZERO_MEMORY_DE ;A=0
000580 D29E D1 10 POP DE
000581 D29F 0E20 7 LD C,32
D2A1 DEC1:
000583 D2A1 29 11 ADD HL,HL
000584 D2A2 EB 4 EX DE,HL
000585 D2A3 ED6A 15 ADC HL,HL
000587 D2A5 EB 4 EX DE,HL
000588 D2A6 E5 11 PUSH HL
000589 D2A7 2113F0 10 LD HL,DECBF+4
00058C D2AA 0605 7 LD B,5
D2AC DEC2:
00058E D2AC 7E 7 LD A,(HL)
00058F D2AD 8F 4 ADC A,A
000590 D2AE 27 4 DAA
000591 D2AF 77 7 LD (HL),A
000592 D2B0 2B 6 DEC HL
000593 D2B1 10F9 13 DJNZ DEC2
000595 D2B3 E1 10 POP HL
000596 D2B4 0D 4 DEC C
000597 D2B5 20EA 12 JR NZ,DEC1
000599 D2B7 210FF0 10 LD HL,DECBF
00059C D2BA 3E20 7 LD A,020H
00059E D2BC 0604 7 LD B,4
D2BE DEC3:
0005A0 D2BE CDCBD2 17 CALL DEC4
0005A3 D2C1 CDCBD2 17 CALL DEC4
0005A6 D2C4 23 6 INC HL
0005A7 D2C5 10F7 13 DJNZ DEC3
D2C7 DECX:
0005A9 D2C7 CDCBD2 17 CALL DEC4
0005AC D2CA AF 4 XOR A
D2CB DEC4:
0005AD D2CB ED6F 18 RLD
0005AF D2CD FE20 7 CP 020H
0005B1 D2CF 2802 12 JR Z,DEC5
0005B3 D2D1 F630 7 OR 030H
D2D3 DEC5:
0005B5 D2D3 18BA 12 JR MSG_AR
D2D5 FPRNT:
0005B7 D2D5 0608 7 LD B,8 ;ファイル名を表示
0005B9 D2D7 CDE6D2 17 CALL P_N1
0005BC D2DA 7E 7 LD A,(HL)
0005BD D2DB CDFCDE 17 CALL CAP3
0005C0 D2DE D8 11 RET C ;拡張子が無い
0005C1 D2DF 3E2E 7 LD A,'.'
0005C3 D2E1 CD7DD7 17 CALL MSG_A
0005C6 D2E4 0603 7 LD B,3 ;拡張子を表示
D2E6 P_N1:
0005C8 D2E6 7E 7 LD A,(HL)
0005C9 D2E7 CDFCDE 17 CALL CAP3
0005CC D2EA 3807 12 JR C,P_N2
0005CE D2EC CD7DD7 17 CALL MSG_A
0005D1 D2EF 23 6 INC HL
0005D2 D2F0 10F4 13 DJNZ P_N1
0005D4 D2F2 C9 10 RET
D2F3 P_N2:
0005D5 D2F3 23 6 INC HL
0005D6 D2F4 10FD 13 DJNZ P_N2
0005D8 D2F6 C9 10 RET
D2F7 SETFCB:
0005D9 D2F7 CDAADC 17 CALL SPCUT
0005DC D2FA 1A 7 LD A,(DE)
0005DD D2FB FE20 7 CP 020H
0005DF D2FD 3801 12 JR C,SETFCBA
0005E1 D2FF 1B 6 DEC DE
D300 SETFCBA:
0005E2 D300 0624 7 LD B,36
0005E4 D302 215C00 10 LD HL,FCB1
0005E7 D305 E5 11 PUSH HL