;	'CLOCK WAIT' COMMAND FOR REAL-MODE
;	cw n(0-3,4-7)

	.8086

CODE	segment
	assume	cs:CODE,ds:CODE,es:CODE,ss:CODE

	org	100h	; .COM model
cmdln	equ	80h
cmdprm	equ	81h

CW	proc
	mov	si,cmdprm		; 空白スキップ
skipf:	cmp	byte ptr [si],0Dh	; パラメータ終わり？
	je	check
	cmp	byte ptr [si],' '	; スペース？
	je	next
	cmp	byte ptr [si],09h	; タブ？
	jne	check
next:	inc	si
	jmp	skipf
check:	mov	dx,0030h	; 機種判別
	in	al,dx
	cmp	al,1
	jne	not_towns
	inc	dx
	in	al,dx
	cmp	al,1
	je	old_towns
	cmp	al,2
	je	new_towns
	cmp	al,4
	jne	not_towns
	jmp	new2_towns      
not_towns:			; TOWNSではない
	mov	dx,offset msg4
exit2:	mov	ah,09h
	int	21h
exit:	mov	ax,4C00h
	int	21h

old_towns:			; 旧TOWNSの場合
	mov	dx,05E0h
	mov	al,[si]
	cmp	al,'N'
	jne	lp1
	mov	al,1
	out	dx,al
	jmp	exit
lp1:	cmp	al,'B'
	jb	status_old
	cmp	al,'E'
	ja	status_old
	sub	al,'B'-4
	out	dx,al
	jmp	exit
status_old:
	mov	dx,offset msg5
	mov	ah,09h
	int	21h
	mov	dx,offset msg2
	mov	ah,09h
	int	21h
	mov	dx,05E0h
	in	al,dx
	mov	dx,offset msg
	cmp	al,1
	jne	lp2
	mov	byte ptr cs:msg[21],'N'
	jmp	exit2
lp2:	add	al,'B'-4
	mov	msg[21],al
	jmp	exit2

new_towns:			; 新TOWNSの場合
        mov     dx,05E2h
        mov     al,[si]
        cmp     al,'N'
        jne     lp3
        mov     al,83h
        out     dx,al
        jmp     exit
lp3:    cmp     al,'A'
        jb      status_new
        cmp     al,'E'
        ja      status_new
        sub     al,'A'-1
        out     dx,al
        jmp     exit
status_new:
	mov	dx,offset msg5
	mov	ah,09h
	int	21h
        mov     dx,offset msg3
        mov     ah,09h
        int     21h
        mov     dx,05E2h
        in      al,dx
        mov     dx,offset msg
        cmp     al,83h
        jne     lp4
        mov     byte ptr cs:msg[21],'N'
        jmp     exit2
lp4:    add     al,'A'-1
        mov     msg[21],al
        jmp     exit2




new2_towns:			; 新新TOWNSの場合
        mov     dx,05E2h
        mov     al,[si]
        cmp     al,'N'
        jne     lp5
        mov     al,83h
        out     dx,al
        jmp     exit
lp5:    cmp     al,'0'
        je      lp5_2
        cmp     al,'A'
        jb      status_new2
        cmp     al,'E'
        ja      status_new2
        sub     al,'A'-1
lp5_:   out     dx,al
        jmp     exit
lp5_2:  mov     al,0
        jmp     lp5_
status_new2:
	mov	dx,offset msg5
	mov	ah,09h
	int	21h
        mov     dx,offset msg3_
        mov     ah,09h
        int     21h
        mov     dx,05E2h
        in      al,dx
        mov     dx,offset msg
        cmp     al,83h
        jne     lp6
        mov     byte ptr cs:msg[21],'N'
        jmp     exit2
lp6:    add     al,'A'-1
        cmp     al,'A'-1
        je      lp8
lp7:    mov     msg[21],al
        jmp     exit2
lp8:    mov     al,'0'
        jmp     lp7







CW	endp

cr	equ	0Dh
lf	equ	0Ah
msg	db      "現在のウェイトモ−ド=  ",cr,lf,cr,lf 
        db      "HELP: AB <mode(A-E & N)>",cr,lf
	db	"mode:高速 0 <- A <- B <- C <- D <- E 低速",cr,lf
	db	" ノーマル N（速度はCと同等）",cr,lf
	db	"注：FM TOWNS モデル1/2では「B mode」まで、モデル1F/2F/1H/2Hでは「A mode」までしか指定できません。",cr,lf,"$"
msg2	db	"< FM TOWNS モデル1/2 >",cr,lf,"$"
msg3	db	"< FM TOWNS モデル1F/2F/1H/2H >",cr,lf,"$"
msg3_	db	"< FM TOWNS モデル10F/20F/40H/80H >",cr,lf,"$"
msg4	db	"< これはFM TOWNSではありません >",cr,lf,"$"
msg5    db      "<<< ＡfterＢurner.ＣＯＭ Version 2.0 >>>",cr,lf,"$"

CODE	ends
	end	cw
