File:  [Isaki's NoNo m68k/m88k emulator] / nono / exp / asci.asm
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Wed Apr 29 17:05:45 2026 UTC (3 months ago) by root
Branches: MAIN, Isaki
CVS tags: v027, v026, v025, v024, HEAD
nono 1.4.0

;
; nono
; Copyright (C) 2025 nono project
; Licensed under nono-license.txt
;

; ASCI の入出力をテストする。
;
; % z80-asm asci.asm 100:asci.z80
; % perl ../util/runcom/z80tocom.pl asci.z80

CNTLA	equ	0
CNTLB	equ	2
STAT	equ	4
TDR	equ	6
RDR	equ	8

	org	0100H
START:
	LD	A,08H	; 9600bps
	LD	C,CNTLB
	CALL	ASCI_OUT

	LD	A,7CH	; RE|TE|CKA1D|EFR|DATA8
	LD	C,CNTLA
	CALL	ASCI_OUT
LOOP:
	LD	C,STAT
	CALL	ASCI_IN_F
	JP	P,LOOP	; loop unless RDRF
	; Get Received char
	LD	C,RDR
	CALL	ASCI_IN
	LD	E,A
	; PUTC でホストに出力
	LD	C,02H
	CALL	0005H
	; エコーバック
	LD	A,E
	LD	C,TDR
	CALL	ASCI_OUT

	JR	LOOP

; OUT0 (C),A をする (その際 CHANNEL を見る)
; IN:  A = 出力データ
;      C = I/O アドレス(の CH0 側)
; OUT: -
; USE: -
ASCI_OUT:
	PUSH	BC
	PUSH	AF
	LD	A,(CHANNEL)
	ADD	A,C
	LD	C,A
	LD	B,00H
	POP	AF
	defb	0EDH, 79H	; OUT (C),A
	POP	BC
	RET

; IN0 A,(C) をする (その際 CHANNEL を見る)
; IN:  C = I/O アドレス(の CH0 側)
; OUT: A = 入力データ
; USE: F は不定
ASCI_IN:
	PUSH	BC
	LD	A,(CHANNEL)
	ADD	A,C
	LD	C,A
	LD	B,00H
	defb	0EDH, 78H	; IN A,(C)
	POP	BC
	RET

; IN0 F,(C) をする (その際 CHANNEL を見る)
; IN:  C = I/O アドレス(の CH0 側)
; OUT: F = 入力データ
; USE: A
ASCI_IN_F:
	PUSH	BC
	LD	A,(CHANNEL)
	ADD	A,C
	LD	C,A
	LD	B,00H
	defb	0EDH,70H	; IN F,(C)
	POP	BC
	RET

CHANNEL:
	defb	01H		; 使用するチャンネル

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