|
|
1.1 root 1: ;
2: ; nono
3: ; Copyright (C) 2025 nono project
4: ; Licensed under nono-license.txt
5: ;
6:
7: ; ASCI の入出力をテストする。
8: ;
9: ; % z80-asm asci.asm 100:asci.z80
10: ; % perl ../util/runcom/z80tocom.pl asci.z80
11:
12: CNTLA equ 0
13: CNTLB equ 2
14: STAT equ 4
15: TDR equ 6
16: RDR equ 8
17:
18: org 0100H
19: START:
20: LD A,08H ; 9600bps
21: LD C,CNTLB
22: CALL ASCI_OUT
23:
24: LD A,7CH ; RE|TE|CKA1D|EFR|DATA8
25: LD C,CNTLA
26: CALL ASCI_OUT
27: LOOP:
28: LD C,STAT
29: CALL ASCI_IN_F
30: JP P,LOOP ; loop unless RDRF
31: ; Get Received char
32: LD C,RDR
33: CALL ASCI_IN
34: LD E,A
35: ; PUTC でホストに出力
36: LD C,02H
37: CALL 0005H
38: ; エコーバック
39: LD A,E
40: LD C,TDR
41: CALL ASCI_OUT
42:
43: JR LOOP
44:
45: ; OUT0 (C),A をする (その際 CHANNEL を見る)
46: ; IN: A = 出力データ
47: ; C = I/O アドレス(の CH0 側)
48: ; OUT: -
49: ; USE: -
50: ASCI_OUT:
51: PUSH BC
52: PUSH AF
53: LD A,(CHANNEL)
54: ADD A,C
55: LD C,A
56: LD B,00H
57: POP AF
58: defb 0EDH, 79H ; OUT (C),A
59: POP BC
60: RET
61:
62: ; IN0 A,(C) をする (その際 CHANNEL を見る)
63: ; IN: C = I/O アドレス(の CH0 側)
64: ; OUT: A = 入力データ
65: ; USE: F は不定
66: ASCI_IN:
67: PUSH BC
68: LD A,(CHANNEL)
69: ADD A,C
70: LD C,A
71: LD B,00H
72: defb 0EDH, 78H ; IN A,(C)
73: POP BC
74: RET
75:
76: ; IN0 F,(C) をする (その際 CHANNEL を見る)
77: ; IN: C = I/O アドレス(の CH0 側)
78: ; OUT: F = 入力データ
79: ; USE: A
80: ASCI_IN_F:
81: PUSH BC
82: LD A,(CHANNEL)
83: ADD A,C
84: LD C,A
85: LD B,00H
86: defb 0EDH,70H ; IN F,(C)
87: POP BC
88: RET
89:
90: CHANNEL:
91: defb 01H ; 使用するチャンネル
92:
93: ; vi:set ts=8:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.