Annotation of nono/exp/asci.asm, revision 1.1.1.1

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:

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.