-
Notifications
You must be signed in to change notification settings - Fork 1
/
X1IOCS.LST
2128 lines (1985 loc) · 94.3 KB
/
X1IOCS.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.0.0, LST:Full:4
; X1IOCS for S-OS Sword
;
1500 COLD EQU 1500H
1FFD _COLD EQU 1FFDH
1FB8 _HEX EQU 1FB8H
1FB5 _2HEX EQU 1FB5H
1FB2 _HLHEX EQU 1FB2H
2018 _CSR EQU 2018H
201E _LOC EQU 201EH
201B _SCRN EQU 201BH
2021 _FLGET EQU 2021H
FFC0 EXTSP EQU 0FFC0H
0000 STACK EQU 00000H
0019 LINE EQU 25
000000 0000 ORG $0000
000000 0000 C3FA00 10 JP IOCS_BOOT
0003 AT_GETL:
000003 0003 C3120E 10 JP IOCS_GETL
000007 0007 ORG $0007
0007 AT_WIDTH:
000007 0007 50 DB 80
00000E 000E ORG $000E
000E AT_XYADR:
00000E 000E 0000 DW 0
000010 0010 0000 _TXADR: DW 0
000013 0013 ORG $0013
0013 AT_PRINT:
000013 0013 C3960B 10 JP IOCS_PRINT
000018 0018 ORG $0018
000018 0018 C3D404 10 JP BIOS
00001B 001B ORG $001B
00001B 001B C3E102 10 JP AT_INKEY
00001E 001E ORG $001E
001E AT_CONXS:
00001E 001E 00 DB 0
001F AT_CONXE:
00001F 001F 50 DB WIDTH
0020 AT_CONYS:
000020 0020 00 DB 0
0021 AT_CONYE:
000021 0021 19 DB MAXLN
000026 0026 ORG $0026
0026 AT_COLORF:
000026 0026 07 DB 7
0027 AT_KBFAD:
000027 0027 00FF DW KBFAD
00002E 002E ORG $002E
002E AT_KEY:
002E _KEYD:
00002E 002E 00FF DW 0FF00H
000038 0038 ORG $0038
000038 0038 C30000 10 JP 0
003B AT_JP_HL:
00003B 003B E9 4 JP (HL)
000044 0044 ORG $0044
0044 AT_BRKEY:
000044 0044 CDE101 17 CALL GETKY
0047 AT_BRKEY1:
000047 0047 FE1B 7 CP $1B
000049 0049 C8 11 RET Z
00004A 004A FE03 7 CP 3
00004C 004C C9 10 RET
00004D 004D ORG $004D
004D AT_WIDCH:
00004D 004D C3EB04 10 JP IOCS_WIDCH
000052 0052 ORG $0052
000052 0052 0007 INTVEC: DW INT
000066 0066 ORG $0066
0066 NMI:
000066 0066 C30000 10 JP 0
000080 0080 ORG $0080
000080 0080 1C07 CTC0: DW INTCTCE
000082 0082 1C07 CTC1: DW INTCTCE
000084 0084 1C07 CTC2: DW INTCTCE
000086 0086 1C07 CTC3: DW INTCTCE
000088 0088 0000 _CTC: DW 0
0000FA 00FA ORG $00FA
00FA IOCS_BOOT:
0000FA 00FA F3 4 DI
0000FB 00FB ED5E 8 IM 2
0000FD 00FD 310000 10 LD SP,STACK
000100 0100 21F70C 10 LD HL,BIOS_SRC
000103 0103 1151FF 10 LD DE,BIOS_DEST
000106 0106 010E00 10 LD BC,BIOS_END-BIOS_DEST
000109 0109 EDB0 LDIR
00010B 010B 010000 10 LD BC,0
00010E 010E ED438800 20 LD (_CTC),BC
000112 0112 01040A 10 LD BC,00A04H
000115 0115 CDAE01 17 CALL CHKCTC
000118 0118 010407 10 LD BC,00704H
00011B 011B CDAE01 17 CALL CHKCTC
00011E 011E 01A81F 10 LD BC,01FA8H
000121 0121 CDAE01 17 CALL CHKCTC
000124 0124 01A01F 10 LD BC,01FA0H
000127 0127 CDAE01 17 CALL CHKCTC
00012A 012A 0E80 7 LD C,080H ;INIT DMA
00012C 012C 2106C3 10 LD HL,0C306H
012F INIDMA:
00012F 012F ED61 12 OUT (C),H
000131 0131 2D 4 DEC L
000132 0132 20FB 12 JR NZ,INIDMA
000134 0134 01AA10 10 LD BC,010AAH ;PALET
000137 0137 ED49 12 OUT (C),C
000139 0139 01CC11 10 LD BC,011CCH
00013C 013C ED49 12 OUT (C),C
00013E 013E 01F012 10 LD BC,012F0H
000141 0141 ED49 12 OUT (C),C
000143 0143 04 4 INC B
000144 0144 ED71 DB 0EDH,071H
000146 0146 3EE4 7 LD A,0E4H
000148 0148 CDFE0D 17 CALL COMOUT
00014B 014B AF 4 XOR A
00014C 014C CD070E 17 CALL OT49SB
00014F 014F 3E00 7 LD A,INTVEC/256
000151 0151 ED47 9 LD I,A
000153 0153 ED4B8800 20 LD BC,(_CTC)
000157 0157 0B 6 DEC BC
000158 0158 0B 6 DEC BC
000159 0159 ED71 DB 0EDH,071H ;OUT (C),0 Z80未定義命令
00015B 015B 3E80 7 LD A,CTC0
00015D 015D ED79 12 OUT (C),A
00015F 015F 0C 4 INC C
000160 0160 3E47 7 LD A,047H
000162 0162 ED79 12 OUT (C),A
000164 0164 3E0D 7 LD A,13 ;Baudrate 9600-13
000166 0166 ED79 12 OUT (C),A
000168 0168 3EE4 7 LD A,0E4H
00016A 016A CDFE0D 17 CALL COMOUT
00016D 016D 3E52 7 LD A,INTVEC
00016F 016F CD070E 17 CALL OT49SB
;
000172 0172 01C41F 10 LD BC,01FC4H
000175 0175 3E0C 7 LD A,00CH
000177 0177 ED79 12 OUT (C),A
000179 0179 0EC0 7 LD C,0C0H
00017B 017B ED71 DB 0EDH,071H ;OUT (C),0 Z80未定義命令
00017D 017D 0C 4 INC C
00017E 017E 3E28 7 LD A,40
000180 0180 ED79 12 OUT (C),A
000182 0182 0C 4 INC C
000183 0183 ED71 DB 0EDH,071H ;OUT (C),0 Z80未定義命令
000185 0185 0C 4 INC C
000186 0186 ED71 DB 0EDH,071H ;OUT (C),0 Z80未定義命令
000188 0188 0EC5 7 LD C,0C5H
00018A 018A ED71 DB 0EDH,071H ;OUT (C),0 Z80未定義命令
018C BOOT2:
00018C 018C C30006 10 JP CHECK_TURBO
018F MONK:
00018F 018F 3AA80B 13 LD A,(X1KPAT)
000192 0192 FEAF 7 CP $AF ;XOR
000194 0194 280C 12 JR Z,MONK1
0196 MONK0:
000196 0196 3EAF 7 LD A,$AF ;XOR
000198 0198 32A80B 13 LD (X1KPAT),A
00019B 019B 21EF08 10 LD HL,SCRNX
00019E 019E 22F701 16 LD (AT_SCRN+1),HL
0001A1 01A1 C9 10 RET
01A2 MONK1:
0001A2 01A2 3E7B 7 LD A,$7B ;LD A,E
0001A4 01A4 32A80B 13 LD (X1KPAT),A
0001A7 01A7 21CC08 10 LD HL,SCRN
0001AA 01AA 22F701 16 LD (AT_SCRN+1),HL
0001AD 01AD C9 10 RET
01AE CHKCTC:
0001AE 01AE C5 11 PUSH BC
0001AF 01AF 110347 10 LD DE,04703H
01B2 INICTC1:
0001B2 01B2 0C 4 INC C
0001B3 01B3 ED51 12 OUT (C),D
0001B5 01B5 ED71 DB 0EDH,071H ;OUT (C),0 Z80未定義命令
0001B7 01B7 1D 4 DEC E
0001B8 01B8 20F8 12 JR NZ,INICTC1
0001BA 01BA C1 10 POP BC
0001BB 01BB 11FA07 10 LD DE,007FAH
0001BE 01BE ED51 12 OUT (C),D
0001C0 01C0 ED59 12 OUT (C),E
0001C2 01C2 ED78 12 IN A,(C)
0001C4 01C4 BB 4 CP E
0001C5 01C5 C0 11 RET NZ
0001C6 01C6 ED51 12 OUT (C),D
0001C8 01C8 ED51 12 OUT (C),D
0001CA 01CA ED78 12 IN A,(C)
0001CC 01CC BA 4 CP D
0001CD 01CD C0 11 RET NZ
0001CE 01CE 03 6 INC BC
0001CF 01CF 03 6 INC BC
0001D0 01D0 ED438800 20 LD (_CTC),BC
0001D4 01D4 C9 10 RET
01D5 GETL:
0001D5 01D5 CD0300 17 CALL AT_GETL
0001D8 01D8 D0 11 RET NC
0001D9 01D9 3E1B 7 LD A,$1B
0001DB 01DB 12 7 LD (DE),A
0001DC 01DC 13 6 INC DE
0001DD 01DD AF 4 XOR A
0001DE 01DE 12 7 LD (DE),A
0001DF 01DF 1B 6 DEC DE
0001E0 01E0 C9 10 RET
;
01E1 GETKY:
0001E1 01E1 3A2E00 13 LD A,(AT_KEY)
0001E4 01E4 B7 4 OR A
0001E5 01E5 C2F901 10 JP NZ,KYBFC
0001E8 01E8 C9 10 RET
;
01E9 XSCRN:
0001E9 01E9 E5 11 PUSH HL
0001EA 01EA C5 11 PUSH BC
0001EB 01EB CD4D05 17 CALL AT_ADRCA2
0001EE 01EE 4D 4 LD C,L
0001EF 01EF 44 4 LD B,H
0001F0 01F0 CDF601 17 CALL AT_SCRN
0001F3 01F3 C1 10 POP BC
0001F4 01F4 E1 10 POP HL
0001F5 01F5 C9 10 RET
01F6 AT_SCRN:
0001F6 01F6 C3EF08 10 JP SCRNX
01F9 KYBFC:
0001F9 01F9 E5 11 PUSH HL
0001FA 01FA 210000 10 LD HL,0
0001FD 01FD 22A60E 16 LD (_KEYPS),HL
000200 0200 E1 10 POP HL
000201 0201 C9 10 RET
0202 AT_ASC:
000202 0202 E60F 7 AND $0F
000204 0204 F630 7 OR $30
000206 0206 FE3A 7 CP $3A
000208 0208 D8 11 RET C
000209 0209 C607 7 ADD A,7
00020B 020B C9 10 RET
020C AT_HEX:
00020C 020C CD5114 17 CALL AT_CAP
00020F 020F D630 7 SUB $30
000211 0211 D8 11 RET C
000212 0212 FE0A 7 CP $0A
000214 0214 3F 4 CCF
000215 0215 D0 11 RET NC
000216 0216 FE11 7 CP $11
000218 0218 D8 11 RET C
000219 0219 D607 7 SUB 7
00021B 021B FE10 7 CP $10
00021D 021D 3F 4 CCF
00021E 021E C9 10 RET
021F AT_PRTHL:
00021F 021F 7C 4 LD A,H
000220 0220 CD2402 17 CALL AT_PRTHX
000223 0223 7D 4 LD A,L
;
0224 AT_PRTHX:
000224 0224 F5 11 PUSH AF
000225 0225 07 4 RLCA
000226 0226 07 4 RLCA
000227 0227 07 4 RLCA
000228 0228 07 4 RLCA
000229 0229 CD2D02 17 CALL PRTA2
00022C 022C F1 10 POP AF
022D PRTA2:
00022D 022D CD0202 17 CALL AT_ASC
000230 0230 C31300 10 JP AT_PRINT
0233 IOCS_INKEY:
000233 0233 FB 4 EI
000234 0234 E5 11 PUSH HL
000235 0235 2AA60E 16 LD HL,(_KEYPS)
000238 0238 7C 4 LD A,H
000239 0239 AD 4 XOR L
00023A 023A 2809 12 JR Z,INKEY1
00023C 023C 7C 4 LD A,H
00023D 023D 3C 4 INC A
00023E 023E 32A70E 13 LD (_KEYPS+1),A
000241 0241 6F 4 LD L,A
000242 0242 2606 7 LD H,KEYBF/256
000244 0244 7E 7 LD A,(HL)
0245 INKEY1:
000245 0245 E1 10 POP HL
000246 0246 B7 4 OR A
000247 0247 C9 10 RET
0002AA 02AA ORG $02AA
02AA AT_FLGET:
0002AA 02AA C5 11 PUSH BC
0002AB 02AB E5 11 PUSH HL
0002AC 02AC ED4B1000 20 LD BC,(_TXADR)
0002B0 02B0 CBE8 8 SET 5,B
0002B2 02B2 ED60 12 IN H,(C)
02B4 FLGET1:
0002B4 02B4 3A2F00 13 LD A,(_KEYD+1)
0002B7 02B7 0F 4 RRCA
0002B8 02B8 0F 4 RRCA
0002B9 02B9 E610 7 AND 010H
0002BB 02BB F608 7 OR 8
0002BD 02BD ED68 12 IN L,(C)
0002BF 02BF B5 4 OR L
0002C0 02C0 ED79 12 OUT (C),A
02C2 FLGETR:
0002C2 02C2 CD3302 17 CALL IOCS_INKEY
0002C5 02C5 28FB 12 JR Z,FLGETR
02C7 FLGETE:
0002C7 02C7 ED61 12 OUT (C),H
0002C9 02C9 E1 10 POP HL
0002CA 02CA C1 10 POP BC
0002CB 02CB C9 10 RET
0002E1 02E1 ORG $02E1
02E1 AT_INKEY:
0002E1 02E1 3A2E00 13 LD A,(_KEYD)
0002E4 02E4 C9 10 RET
;
; SHIT_JISコードからJISコードを得る
;in
;DE: SHIFT_JISコード
;out
;DE: JISコード
;破壊
;A
02E5 JISSFT:
0002E5 02E5 7B 4 LD A,E
0002E6 02E6 C67E 7 ADD A,$7E
0002E8 02E8 5F 4 LD E,A
0002E9 02E9 7A 4 LD A,D
0002EA 02EA CE21 7 ADC A,$21
0002EC 02EC EE40 7 XOR $40
0002EE 02EE 37 4 SCF
0002EF 02EF 1F 4 RRA
0002F0 02F0 57 4 LD D,A
0002F1 02F1 D8 11 RET C
0002F2 02F2 7B 4 LD A,E
0002F3 02F3 D6DE 7 SUB $DE
0002F5 02F5 DE80 7 SBC A,$80
0002F7 02F7 5F 4 LD E, A
0002F8 02F8 C9 10 RET
;
; JISコードからSHIFT_JISコードを得る
;in
;DE: JISコード
;out
;DE: SHIFT_JISコード
;破壊
;A
02F9 SFTJIS:
0002F9 02F9 CB22 8 SLA D
0002FB 02FB 7B 4 LD A,E
0002FC 02FC FE80 7 CP $80
0002FE 02FE CE61 7 ADC A,$61
000300 0300 5F 4 LD E,A
000301 0301 7A 4 LD A,D
000302 0302 CE1F 7 ADC A,$1F
000304 0304 57 4 LD D,A
000305 0305 7B 4 LD A,E
000306 0306 C67F 7 ADD A,$7F
000308 0308 5F 4 LD E,A
000309 0309 3802 12 JR C,SFTJIS1
00030B 030B C6A2 7 ADD A,$A2
030D SFTJIS1:
00030D 030D 5F 4 LD E,A
00030E 030E CBBA 8 RES 7,D
000310 0310 C9 10 RET
;
; JISコードから漢字ROMコードを得る
;in
;DE: JISコード
;out
;D: RH 漢字アトリビュート
;E: RL テキストVRAM
;破壊
;A,BC
0311 JISVRM:
000311 0311 7A 4 LD A,D
000312 0312 0F 4 RRCA
000313 0313 0F 4 RRCA
000314 0314 0F 4 RRCA
000315 0315 0F 4 RRCA
000316 0316 E607 7 AND 7 ;JH6,JH5,JH4
000318 0318 FE02 7 CP 2
00031A 031A 282F 12 JR Z,JR2
00031C 031C 3828 12 JR C,JR0
00031E 031E FE07 7 CP 7
000320 0320 2825 12 JR Z,JR7
;3-6
000322 0322 D603 7 SUB 3
000324 0324 47 4 LD B,A
000325 0325 87 4 ADD A,A ;*2
000326 0326 80 4 ADD A,B ;*3
000327 0327 3C 4 INC A
000328 0328 47 4 LD B,A
000329 0329 7B 4 LD A,E
00032A 032A 07 4 RLCA
00032B 032B 07 4 RLCA
00032C 032C 07 4 RLCA
00032D 032D E603 7 AND 3 ;JL6,JL5
00032F 032F 80 4 ADD A,B
000330 0330 87 4 ADD A,A ;*2
0331 JRE:
000331 0331 CB5A 8 BIT 3,D ;JH3
000333 0333 2801 12 JR Z,JR3_1
000335 0335 3C 4 INC A ;RH0
0336 JR3_1:
000336 0336 42 4 LD B,D
000337 0337 F680 7 OR $80 ;RH7
000339 0339 57 4 LD D,A
00033A 033A 7B 4 LD A,E
00033B 033B E61F 7 AND $1F
00033D 033D 5F 4 LD E,A
00033E 033E 78 4 LD A,B
00033F 033F 0F 4 RRCA
000340 0340 0F 4 RRCA
000341 0341 0F 4 RRCA
000342 0342 E6E0 7 AND $E0
000344 0344 B3 4 OR E
000345 0345 5F 4 LD E,A
0346 JR0:
000346 0346 C9 10 RET
0347 JR7:
000347 0347 061C 7 LD B,$1C
000349 0349 1802 12 JR JR2_1
034B JR2:
00034B 034B 0600 7 LD B,0
034D JR2_1:
00034D 034D 7B 4 LD A,E
00034E 034E E660 7 AND $60 ;JL6,JL5
000350 0350 FE40 7 CP 2*$20
000352 0352 2002 12 JR NZ,JR2_2
000354 0354 CBC8 8 SET 1,B
0356 JR2_2:
000356 0356 FE60 7 CP 3*$20
000358 0358 78 4 LD A,B
000359 0359 2002 12 JR NZ,JR2_3
00035B 035B EE01 7 XOR 1
035D JR2_3:
00035D 035D 18D2 12 JR JRE
000366 0366 ORG $0366
000366 0366 00 DB 0
;
; 漢字ROMコードからJISコードを得る
;in
;D: RH 漢字アトリビュート
;E: RL テキストVRAM
;out
;DE: JISコード
;破壊
;A,BC
0367 VRMJIS:
000367 0367 7B 4 LD A,E
000368 0368 07 4 RLCA
000369 0369 07 4 RLCA
00036A 036A 07 4 RLCA
00036B 036B E607 7 AND 7 ;RL7,RL6,RL5 >> 5
00036D 036D 47 4 LD B,A
00036E 036E 7B 4 LD A,E
00036F 036F E61F 7 AND $1F ;RL4,RL3,RL2,RL1
000371 0371 5F 4 LD E,A
000372 0372 7A 4 LD A,D
000373 0373 E61F 7 AND $1F ;RH4,RH3,RH2,RH1,RH0
000375 0375 FE04 7 CP 4
000377 0377 3831 12 JR C,VJ4 ;2121H-277EH
000379 0379 FE1D 7 CP $1C+1
00037B 037B 3029 12 JR NC,VJ3 ;7021H-777EH
00037D 037D CB3F 8 SRL A ;/2
00037F 037F 3C 4 INC A
000380 0380 D5 11 PUSH DE
000381 0381 110308 10 LD DE,$0803 ;3で割る
000384 0384 4F 4 LD C,A ;C / E(3) = C ... A
000385 0385 AF 4 XOR A
0386 VJ1:
000386 0386 CB21 8 SLA C
000388 0388 17 4 RLA
000389 0389 93 4 SUB E
00038A 038A 3804 12 JR C,VJ2
00038C 038C 0C 4 INC C
00038D 038D 15 4 DEC D
00038E 038E 20F6 12 JR NZ,VJ1
0390 VJ2:
000390 0390 D1 10 POP DE
000391 0391 C604 7 ADD A,3+1
000393 0393 0F 4 RRCA
000394 0394 0F 4 RRCA
000395 0395 0F 4 RRCA
000396 0396 E660 7 AND $60
000398 0398 B3 4 OR E
000399 0399 5F 4 LD E,A
00039A 039A 79 4 LD A,C
00039B 039B C602 7 ADD A,2
00039D 039D CB1A 8 RR D ;RH0
00039F 039F 8F 4 ADC A,A ;JH3
0003A0 03A0 87 4 ADD A,A
0003A1 03A1 87 4 ADD A,A
0003A2 03A2 87 4 ADD A,A
0003A3 03A3 B0 4 OR B ;RL7,RL6,RL5 >> 5
0003A4 03A4 57 4 LD D,A
0003A5 03A5 C9 10 RET
03A6 VJ3: ;7021H-777EH
0003A6 03A6 78 4 LD A,B ;RL7,RL6,RL5 >> 5
0003A7 03A7 F670 7 OR $70
0003A9 03A9 47 4 LD B,A
03AA VJ4: ;2121H-277EH
0003AA 03AA CBE8 8 SET 5,B ;RL7,RL6,RL5 >> 5
0003AC 03AC 7A 4 LD A,D
0003AD 03AD 50 4 LD D,B
0003AE 03AE E603 7 AND 3
0003B0 03B0 280B 12 JR Z,VJ6
0003B2 03B2 3D 4 DEC A
0003B3 03B3 2806 12 JR Z,VJ5
0003B5 03B5 3D 4 DEC A
0003B6 03B6 2008 12 JR NZ,VJ7
0003B8 03B8 CBF3 8 SET 6,E
0003BA 03BA C9 10 RET
03BB VJ5:
0003BB 03BB CBF3 8 SET 6,E
03BD VJ6:
0003BD 03BD CBEB 8 SET 5,E
0003BF 03BF C9 10 RET
03C0 VJ7:
0003C0 03C0 112822 10 LD DE,$2228 ;※のJISコード
0003C3 03C3 C9 10 RET
0003E3 03E3 ORG $03E3
03E3 AT_KYBFS:
0003E3 03E3 C35007 10 JP KEYBS
0003E6 03E6 C9 10 RET
0004A3 04A3 ORG $04A3
04A3 AT_NL:
0004A3 04A3 C5 11 PUSH BC
0004A4 04A4 D5 11 PUSH DE
0004A5 04A5 E5 11 PUSH HL
0004A6 04A6 CD2D08 17 CALL CTRL04
0004A9 04A9 E1 10 POP HL
0004AA 04AA D1 10 POP DE
0004AB 04AB C1 10 POP BC
0004AC 04AC C9 10 RET
0004C8 04C8 ORG $04C8
04C8 AT_PRNT0:
0004C8 04C8 F5 11 PUSH AF
0004C9 04C9 FE20 7 CP $20
0004CB 04CB 3002 12 JR NC,PRNT01
0004CD 04CD 3E20 7 LD A,$20
04CF PRNT01:
0004CF 04CF CD960B 17 CALL IOCS_PRINT
0004D2 04D2 F1 10 POP AF
0004D3 04D3 C9 10 RET
04D4 BIOS:
0004D4 04D4 E5 11 PUSH HL
0004D5 04D5 211080 10 LD HL,08010H
0004D8 04D8 39 11 ADD HL,SP
0004D9 04D9 E1 10 POP HL
0004DA 04DA DA51FF 10 JP C,BIOS1
0004DD 04DD ED73E804 20 LD (SPPAT+1),SP ;スタックがBIOS-ROMと被っている場合
0004E1 04E1 31C0FF 10 LD SP,EXTSP
0004E4 04E4 CD51FF 17 CALL BIOS1
0004E7 04E7 310000 10 SPPAT: LD SP,0
0004EA 04EA C9 10 RET
04EB IOCS_WIDCH:
0004EB 04EB C5 11 PUSH BC
0004EC 04EC D5 11 PUSH DE
0004ED 04ED E5 11 PUSH HL
0004EE 04EE 01F01F 10 LD BC,$01FF0
0004F1 04F1 FE29 7 CP 41
0004F3 04F3 380D 12 JR C,WIDTH40
0004F5 04F5 ED78 12 IN A,(C)
0004F7 04F7 0F 4 RRCA
0004F8 04F8 210B13 10 LD HL,_C8025L
0004FB 04FB 3810 12 JR C,SETCRTC
0004FD 04FD 211B13 10 LD HL,_C8025H
000500 0500 180B 12 JR SETCRTC
0502 WIDTH40:
000502 0502 ED78 12 IN A,(C)
000504 0504 0F 4 RRCA
000505 0505 212B13 10 LD HL,_C4025L
000508 0508 3803 12 JR C,SETCRTC
00050A 050A 213B13 10 LD HL,_C4025H
050D SETCRTC:
00050D 050D 11FB12 10 LD DE,_CRTCD
000510 0510 011000 10 LD BC,16
000513 0513 EDB0 LDIR
000515 0515 21FB12 10 LD HL,_CRTCD
000518 0518 AF 4 XOR A
0519 SETCRT1:
000519 0519 010018 10 LD BC,01800H
00051C 051C ED79 12 OUT (C),A
00051E 051E 0C 4 INC C
00051F 051F 04 4 INC B
000520 0520 EDA3 16 OUTI
000522 0522 3C 4 INC A
000523 0523 FE0C 7 CP 12
000525 0525 20F2 12 JR NZ,SETCRT1
000527 0527 23 6 INC HL
000528 0528 23 6 INC HL
000529 0529 01031B 10 LD BC,01A03H+00100H ;OUTIは先にBを減らすので足している
00052C 052C EDA3 16 OUTI
00052E 052E 01D020 10 LD BC,01FD0H+00100H
000531 0531 EDA3 16 OUTI
000533 0533 CD0908 17 CALL CTRL0C
000536 0536 E1 10 POP HL
000537 0537 D1 10 POP DE
000538 0538 C1 10 POP BC
000539 0539 3AFC12 13 LD A,(_CRTCD+1)
00053C 053C 320700 13 LD (AT_WIDTH),A
00053F 053F A7 4 AND A
000540 0540 C9 10 RET
00054D 054D ORG $054D
054D AT_ADRCA2:
00054D 054D CD5505 17 CALL AT_VRCALC
000550 0550 CBE4 8 SET 4,H
000552 0552 CBEC 8 SET 5,H
000554 0554 C9 10 RET
0555 LOC1:
0555 AT_VRCALC:
000555 0555 D5 11 PUSH DE
000556 0556 4D 4 LD C,L
000557 0557 0608 7 LD B,8
000559 0559 5C 4 LD E,H
00055A 055A 1600 7 LD D,0
00055C 055C 2AFB12 16 LD HL,(_CRTCD)
00055F 055F 6A 4 LD L,D
0560 LOC2:
000560 0560 29 11 ADD HL,HL
000561 0561 3001 12 JR NC,LOC3
000563 0563 19 11 ADD HL,DE
0564 LOC3:
000564 0564 10FA 13 DJNZ LOC2
000566 0566 09 11 ADD HL,BC
000567 0567 D1 10 POP DE
000568 0568 C9 10 RET
0569 ZERO_MEMORY_DE:
000569 0569 AF 4 XOR A
056A FILL_MEMORY_DE:
00056A 056A 12 7 LD (DE),A
00056B 056B 13 6 INC DE
00056C 056C 10FC 13 DJNZ FILL_MEMORY_DE
00056E 056E C9 10 RET
000600 0600 ORG $0600
0600 KEYBF: ;キーバッファ
;ノンターボX1用
0600 CHECK_TURBO:
000600 0600 21FD1F 10 LD HL,_COLD
000603 0603 228D01 16 LD (BOOT2+1),HL
000606 0606 3E50 7 LD A,80
000608 0608 CD4D00 17 CALL AT_WIDCH
00060B 060B 01D03F 10 LD BC,$3FD0
00060E 060E ED49 12 OUT (C),C
000610 0610 3E37 7 LD A,$37
000612 0612 D3D0 11 OUT ($D0),A
000614 0614 ED78 12 IN A,(C)
000616 0616 B9 4 CP C
000617 0617 280C 12 JR Z,X1TURBO
;NORMAL X1
000619 0619 213E09 10 LD HL,AT_SCR1 ;CPUを使ってスクロール
00061C 061C 225608 16 LD (SCR_SWC),HL
00061F 061F 210000 10 LD HL,0
000622 0622 222B09 16 LD (X1PAT),HL ;漢字RAMへのアクセスを無くす
0625 X1TURBO:
000625 0625 21DB0C 10 LD HL,LOC
000628 0628 221F20 16 LD (_LOC+1),HL ;カーソル座標の格納方法が違うので差し替え
00062B 062B 211109 10 LD HL,CSR
00062E 062E 221820 16 LD (_CSR),HL ;カーソル座標の格納方法が違うので差し替え
000631 0631 210C02 10 LD HL,AT_HEX
000634 0634 22B91F 16 LD (_HEX+1),HL ;大文字小文字を無視するように差し替え
000637 0637 215E11 10 LD HL,AT_2HEX
00063A 063A 22B61F 16 LD (_2HEX+1),HL ;大文字小文字を無視するように差し替え
00063D 063D 211F11 10 LD HL,AT_HLHEX
000640 0640 22B31F 16 LD (_HLHEX+1),HL ;大文字小文字を無視するように差し替え
000643 0643 CD9601 17 CALL MONK0 ;とりあえず漢字は封印
000646 0646 21E901 10 LD HL,XSCRN
000649 0649 221C20 16 LD (_SCRN+1),HL
00064C 064C 21AA02 10 LD HL,AT_FLGET
00064F 064F 222220 16 LD (_FLGET+1),HL
000652 0652 C30015 10 JP COLD
000700 0700 ORG $0700
0700 INT:
000700 0700 F5 11 PUSH AF
000701 0701 E5 11 PUSH HL
000702 0702 2100FF 10 LD HL,$FF00
000705 0705 39 11 ADD HL,SP
000706 0706 380F 12 JR C,INTP1X
000708 0708 ED731307 20 LD (INTSP+1),SP
00070C 070C 31C0FF 10 LD SP,EXTSP
00070F 070F CD1F07 17 CALL INTP1
000712 0712 310000 10 INTSP: LD SP,0
000715 0715 1803 12 JR INTPE
0717 INTP1X:
000717 0717 CD1F07 17 CALL INTP1
071A INTPE:
00071A 071A E1 10 POP HL
071B INTPE2:
00071B 071B F1 10 POP AF
071C INTCTCE:
00071C 071C FB 4 EI
00071D 071D ED4D 15 RETI
071F INTP1:
00071F 071F C5 11 PUSH BC
000720 0720 CD490B 17 CALL IN49SB
000723 0723 67 4 LD H,A
000724 0724 CD490B 17 CALL IN49SB
000727 0727 6F 4 LD L,A
000728 0728 FE08 7 CP 8 ;DELキー
00072A 072A 2005 12 JR NZ,SCEXE
00072C 072C 7C 4 LD A,H
00072D 072D E611 7 AND 011H ;CTRLキー + GRAPHキー
00072F 072F 2808 12 JR Z,RESET
0731 SCEXE:
000731 0731 222E00 16 LD (_KEYD),HL
000734 0734 CD3E07 17 CALL KEYSET1
000737 0737 C1 10 POP BC
000738 0738 C9 10 RET
0739 RESET:
000739 0739 3E1D 7 LD A,01DH
00073B 073B D300 11 OUT (0),A
00073D 073D C7 12 RST 0
073E KEYSET1:
00073E 073E B7 4 OR A
00073F 073F C8 11 RET Z
000740 0740 CB6C 8 BIT 5,H
000742 0742 2803 12 JR Z,KEYSET
000744 0744 3AA90E 13 LD A,(_KEYSP+1)
0747 KEYSET:
000747 0747 7D 4 LD A,L
000748 0748 CB7C 8 BIT 7,H
00074A 074A CC6E07 17 CALL Z,FKEY
00074D 074D CB74 8 BIT 6,H
00074F 074F C0 11 RET NZ
0750 KEYBS:
000750 0750 B7 4 OR A
000751 0751 C8 11 RET Z
0752 KEYBS1:
000752 0752 FE03 7 CP 3
000754 0754 CCF901 17 CALL Z,KYBFC
000757 0757 E5 11 PUSH HL
000758 0758 F5 11 PUSH AF
000759 0759 2AA60E 16 LD HL,(_KEYPS)
00075C 075C 2C 4 INC L
00075D 075D 7D 4 LD A,L
00075E 075E BC 4 CP H
00075F 075F 2809 12 JR Z,POP_AF_HL_SCF_RET
000761 0761 32A60E 13 LD (_KEYPS),A
000764 0764 2606 7 LD H,KEYBF/256
000766 0766 F1 10 POP AF
000767 0767 77 7 LD (HL),A
000768 0768 E1 10 POP HL
000769 0769 C9 10 RET
076A POP_AF_HL_SCF_RET:
00076A 076A F1 10 POP AF
00076B 076B E1 10 POP HL
00076C 076C 37 4 SCF
00076D 076D C9 10 RET
076E FKEY:
00076E 076E CB75 8 BIT 6,L
000770 0770 C8 11 RET Z
000771 0771 3E1B 7 LD A,01BH
000773 0773 CD5207 17 CALL KEYBS1
000776 0776 7D 4 LD A,L
000777 0777 C6AF 7 ADD A,020H-'q'
000779 0779 CB7D 8 BIT 7,L
00077B 077B C8 11 RET Z
00077C 077C 2E50 7 LD L,'P'
00077E 077E D690 7 SUB 0E1H+020H-'q'
000780 0780 2810 12 JR Z,KEYBSL
000782 0782 2C 4 INC L
000783 0783 3D 4 DEC A
000784 0784 280C 12 JR Z,KEYBSL
000786 0786 2C 4 INC L
000787 0787 D609 7 SUB 0EBH-0E2H
000789 0789 2807 12 JR Z,KEYBSL
00078B 078B 2E43 7 LD L,'C'
00078D 078D 3D 4 DEC A
00078E 078E 2802 12 JR Z,KEYBSL
000790 0790 2E58 7 LD L,'X'
0792 KEYBSL:
000792 0792 7D 4 LD A,L
000793 0793 18BD 12 JR KEYBS1
0007F7 07F7 ORG $07F7
07F7 AT_BELL:
07F7 CTRL07:
0007F7 07F7 214014 10 LD HL,BEEPD
07FA BEEP1:
0007FA 07FA 7E 7 LD A,(HL)
0007FB 07FB 23 6 INC HL
0007FC 07FC FEFF 7 CP 0FFH
0007FE 07FE C8 11 RET Z
0007FF 07FF F3 4 DI
000800 0800 061C 7 LD B,01CH
000802 0802 ED79 12 OUT (C),A
000804 0804 EDA3 16 OUTI
000806 0806 FB 4 EI
000807 0807 18F1 12 JR BEEP1
0809 CTRL0C:
000809 0809 CDEF0C 17 CALL CTRL0B
080C CTRL06:
00080C 080C ED4B1000 20 LD BC,(_TXADR)
0810 C1AX1:
000810 0810 78 4 LD A,B
000811 0811 F638 7 OR 038H
000813 0813 47 4 LD B,A
000814 0814 ED71 DB 0EDH,071H ;OUT (C),0 Z80未定義命令 kanji
000816 0816 CB98 8 RES 3,B
000818 0818 3E20 7 LD A,020H
00081A 081A ED79 12 OUT (C),A ;Text
00081C 081C CBA0 8 RES 4,B
00081E 081E 3A2600 13 LD A,(AT_COLORF)
000821 0821 ED79 12 OUT (C),A ;Color
000823 0823 03 6 INC BC
000824 0824 CBA8 8 RES 5,B
000826 0826 2A0513 16 LD HL,(_CRTCD+10)
000829 0829 09 11 ADD HL,BC
00082A 082A 30E4 12 JR NC,C1AX1
00082C 082C C9 10 RET
082D CTRL04:
00082D 082D CD1109 17 CALL _POS
000830 0830 7D 4 LD A,L
000831 0831 B7 4 OR A
000832 0832 C8 11 RET Z
0833 CTRL03:
000833 0833 CDD60C 17 CALL CTRL0D
0836 CTRL0A:
0836 CTRL1F:
000836 0836 ED4B1000 20 LD BC,(_TXADR)
00083A 083A 2AFC12 16 LD HL,(_CRTCD+1)
00083D 083D 2600 7 LD H,0
00083F 083F 09 11 ADD HL,BC
000840 0840 44 4 LD B,H
000841 0841 4D 4 LD C,L
000842 0842 2A0513 16 LD HL,(_CRTCD+10)
000845 0845 09 11 ADD HL,BC
000846 0846 3F 4 CCF
000847 0847 9F 4 SBC A,A
000848 0848 C3490C 10 JP PRINTE8
084B CTRL0E:
00084B 084B CD1109 17 CALL _POS
00084E 084E 7C 4 LD A,H
00084F 084F 1804 12 JR SCR1
0851 SCR:
000851 0851 3A2100 13 LD A,(AT_CONYE)
000854 0854 3D 4 DEC A
0855 SCR1:
000855 0855 C35808 10 JP SCR1DMA
0856 SCR_SWC EQU $-2
0858 SCR1DMA:
000858 0858 C5 11 PUSH BC
000859 0859 D5 11 PUSH DE
00085A 085A F5 11 PUSH AF
00085B 085B 3E07 7 LD A,7
00085D 085D 21A308 10 LD HL,SCRDMAD
000860 0860 CD9908 17 CALL SETDMA
000863 0863 F1 10 POP AF
000864 0864 210038 10 LD HL,03800H
0867 SCRUP1:
000867 0867 B7 4 OR A
000868 0868 CAF208 10 JP Z,SCRCL
00086B 086B F5 11 PUSH AF
00086C 086C CDAA08 17 CALL UPSUB ;kanji
00086F 086F 3A0713 13 LD A,(_CRTCD+12)
000872 0872 5F 4 LD E,A
000873 0873 16F7 7 LD D,0F7H
000875 0875 19 11 ADD HL,DE
000876 0876 D5 11 PUSH DE
000877 0877 CDAA08 17 CALL UPSUB ;Text
00087A 087A D1 10 POP DE
00087B 087B 19 11 ADD HL,DE
00087C 087C CDAA08 17 CALL UPSUB ;Color
00087F 087F CBE4 8 SET 4,H
000881 0881 F1 10 POP AF
000882 0882 3D 4 DEC A
000883 0883 18E2 12 JR SCRUP1
000897 0897 ORG $897
000897 0897 0000 DW 0
0899 SETDMA:
000899 0899 01871F 10 LD BC,01F87H
089C SDMAI:
00089C 089C 04 4 INC B
00089D 089D EDA3 16 OUTI
00089F 089F 3D 4 DEC A
0008A0 08A0 20FA 12 JR NZ,SDMAI
0008A2 08A2 C9 10 RET
08A3 SCRDMAD:
0008A3 08A3 C3 DB 0C3H ;WR6 リセット
0008A4 08A4 9A DB 09AH ;WR5 ストップ WAIT READY:HIGH
0008A5 08A5 65 DB 065H ;WR0 ブロック長(LH)
0008A6 08A6 4F00 DW 79
0008A8 08A8 1C DB 01CH ;WR1 ポートAインクリメント I/O
0008A9 08A9 18 DB 018H ;WR0 ポートAアドレス(LH)
08AA UPSUB:
0008AA 08AA 3AFC12 13 LD A,(_CRTCD+1)
0008AD 08AD 5F 4 LD E,A
0008AE 08AE 1600 7 LD D,0
0008B0 08B0 3ECD 7 LD A,0CDH ;WR4 バースト ポートB開始アドレス(LH)
0008B2 08B2 ED79 12 OUT (C),A
0008B4 08B4 ED69 12 OUT (C),L ;SOURCE
0008B6 08B6 ED61 12 OUT (C),H
0008B8 08B8 19 11 ADD HL,DE
0008B9 08B9 3E1D 7 LD A,01DH ;WR0 ポートA開始アドレス(LH) ポートA→ポートB 転送
0008BB 08BB ED79 12 OUT (C),A
0008BD 08BD ED69 12 OUT (C),L ;DEST
0008BF 08BF ED61 12 OUT (C),H
08C1 GO_DMA:
0008C1 08C1 3ECF 7 LD A,0CFH
0008C3 08C3 ED79 12 OUT (C),A ;WR6 ロード
0008C5 08C5 3EB3 7 LD A,0B3H
0008C7 08C7 ED79 12 OUT (C),A ;WR6 強制RDY
0008C9 08C9 ED49 12 OUT (C),C ;WR6 イネーブル
0008CB 08CB C9 10 RET
08CC SCRN:
0008CC 08CC D5 11 PUSH DE
0008CD 08CD ED58 12 IN E,(C) ;Text
0008CF 08CF CBD8 8 SET 3,B
0008D1 08D1 ED50 12 IN D,(C) ;Kanji
0008D3 08D3 2817 12 JR Z,SCRNE
0008D5 08D5 AF 4 XOR A
0008D6 08D6 C5 11 PUSH BC
0008D7 08D7 CD6703 17 CALL VRMJIS
0008DA 08DA CDE502 17 CALL JISSFT
0008DD 08DD C1 10 POP BC
0008DE 08DE ED78 12 IN A,(C)
0008E0 08E0 CB98 8 RES 3,B
0008E2 08E2 E640 7 AND 040H
0008E4 08E4 2003 12 JR NZ,SCRN1
0008E6 08E6 7A 4 LD A,D
0008E7 08E7 D1 10 POP DE
0008E8 08E8 C9 10 RET
08E9 SCRN1:
0008E9 08E9 7B 4 LD A,E