|
|
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.