ds_name		db	'MOJ\IROKAE1',0

db 'TP3_5R.HD6  TP3-5.HD6 のローマ字',0
db 'CO1.HD6 11 24/ COL8.HD6  より仕様変更',0
db 'COL8.HD6 11 13/ ICON\CONTEN より改良',0
db 'マウスにより色の成分を変える  ＢＹ　ＹＯＺＯ',0


; 青赤緑の色を細い箱を出しているモジュール
;-------------------------------------------------------------------
; in  パレット番号｡ その番号のパレットを成分表示
; マウスにて成分変更  パレットに反映

;*************************************************************
look_me:
	 call sub_esi
	 dd 0,0
	 dw	 0,0,164,66,640-165,256+62+15,15,0,0,0

;***************************************************************

ck_mouse:	M_KENMS

zzz:		M_ZZZ		    ;EGB CALL

;***************************************************************
;------------BOX data


boxdt2:
		call sub_edi
		dw	1,15,15,75,42,0,22,0,0,0

boxdt3:
		call sub_edi
		dw	1,15,15,75,42,0,22,15,0,1

boxdt:
		call sub_edi
		dw	3,64,10,2,2,0,22,15,0,0
		dw	1,32,32,75,2,0,22,15,15,0

boxdt1:
		call sub_edi
		dw	3,26,20,120,2,0,22,15,0,0
		dw	1,32,32,75,2,0,22,15,15,0

ln1:
		call sub_edi
		dw	1,63,10,2,2,0,22,15,0,0
ln2:
		call sub_edi
		dw	1,63,10,2,2,0,22,15,2,0

ln3:
		call sub_edi
		dw	1,63,10,2,24,0,22,15,0,0

ln4:
		call sub_edi
		dw	1,63,10,2,24,0,22,15,2,0

ln5:
		call sub_edi
		dw	1,63,10,2,46,0,22,15,0,0

ln6:
		call sub_edi
		dw	1,63,10,2,46,0,22,15,2,0

; [count][sz_x][sz_y][off_x][off_y][+x][+y][f_col][b_col][s_no]

;----------------------------------------
;------文字データ

mozidt:
	call sub_edi
		   dw	0  	  ;screen_no
		   dw	15	  ; mozi_color
		   dw	124	  ; 書き出し位置  x
		   dw	3	  ; 		 y
		   dw	0	  ; next offset x
		   dw	23	  ; next offset y
	           dw   3	  ; gyo suu
                   db    '00',0   ;[14]
                   db    '00',0   ;[17]
                   db    '00',0   ;[20]
	            dw 0,0

;---------------------------------アイコンデータ

condt0:
		call	sub_edi
		dw	0,75,2,1,0,0     ;scr_no,X1,Y1,color,+X,+Y
		dw	253,0   	 ;icon_no,icon_no,.......,0


;----------------------ワーク

ds_pal0:
		call sub_esi
		db 3*20 dup(0)

ds_pal1:
		call sub_esi
		db 3*20 dup(0)

nowcol:
		 call sub_edi
		 dw	 14

box_hz:
		call	sub_edi
		dw	5*16 dup (0)

;******************************************************************
;システム関係

paint_wd:
re_paint:
	 WD_CLS 0

	 BOX boxdt,4
	 BOX boxdt1,4

	call	condt0		;表示データ
	call	r_con_put	;表示命令
	BOX	boxdt2,1

	 ret
;-----------------------

be_called:

	 BOOK
	 mov	ax,300[esi]
	 mov	bx,302[esi]

	 cmp	ax,5
	 je	cgcol

	cmp	ax,1
	je	bye_bye

	 mov	eax,0
	 mov	300[esi],eax
	 ret

;-------------------

mouse_in:	 ret

;*******************************************************************
;独立したサブルーチン

;----------------------------アイコン表示
r_con_put:
	 mov	ax,0200h
	 call	MOUSE
	 mov	ah,100  ;rom icon の表示
	 mov	al,29
	 call	komei1
	 mov	ax,0201h
	 call	MOUSE
	 ret

;------------------------------------------ 
;  in    ebx    ketasu
;        ax    suuzi
;        edi   buffer
;  use   dx    /   cx

hex2y:
	 mov cx,10
hex2y1:
	 mov dx,0
	 div cx
	 add dl,30h
	 mov [edi+ebx-1],dl
	 dec ebx
	 jnz hex2y
	 ret

;*******************************
; in : ds:esi = データ番地
; use: dx

setpal0:

	mov	dx,0FD90h	; パレット番号
	out	dx,al
	mov	dx,0FD92h	; 青
	outsb
	mov	dx,0FD94h	; 赤
	outsb
	mov	dx,0FD96h	; 緑
	outsb
	ret

;*******************************
; in : ds:esi = データ番地
; use: dx

setpal1:
	push	esi
	mov	dx,0FD90h	; パレット番号
	outsb
	mov	dx,0FD92h	; 青色成分
	outsb
	mov	dx,0FD94h	; 赤色成分
	outsb
	mov	dx,0FD96h	; 緑色成分
	outsb
	pop	esi
	ret

;**************************************

getpal:

	mov	dx,0FD90h	; 番号
	out dx,al
	mov	dx,0FD92h	; 青
	insb
	mov	dx,0FD94h	; 赤
	insb
	mov	dx,0FD96h	; 緑
	insb
	ret

;***********************************************************

;------------------------------------------------
gam1_pal:

	mov	dx,0448h
	mov	al,01b
	out	dx,al

	mov	dx,044Ah
	mov	al,00101000b
	out	dx,al
	ret

;----------------------------------------------------

l_set:
	call	 gam1_pal
	mov	 ax,bx
	call	 setpal0
	ret

;---------------------------------------
cccc:
	 call nowcol
	 mov dx,[edi]
	 mov ah,7
	 mov al,0
	 call zzz
	 mov ah,7
	 mov al,2
	 call zzz
	 ret
;-----------------------------------------------
gokei:

	 mov ebx,2
	 call hex2y

	 BOX	boxdt1,3
	 BOX	boxdt3,1
	 MOZI	mozidt
	 ret

;********************************************************************
;パレッをバッファに保存しています｡

pal_syo:

	cld

;-----------------------画面0 のパレットセット 画面0が上

	mov	dx,0448h
	mov	al,01b
	out	dx,al

	mov	dx,044Ah
	mov	al,00001000b
	out	dx,al

;--------
	

	call	ds_pal0
	mov	edi,esi

	push	 ds
	pop	 es

	mov	ecx,16

p_syo1:
	mov	 al,16
	sub	 al,cl

	call	getpal		; set pallet

	loop	p_syo1

;-------------------
;----------------------------画面1のパレット画面1が上
;	mov	dx,0448h
;	mov	al,01b
;	out	dx,al

;	mov	dx,044Ah
;	mov	al,00101001b
;	out	dx,al

;----------------------------画面1のパレット画面0が上

	mov	dx,0448h
	mov	al,01b
	out	dx,al

	mov	dx,044Ah
	mov	al,00101000b
	out	dx,al

;-------------------------------------- 画面1のパレットセット

	call ds_pal1
	mov edi,esi
	mov	ecx,16			;paldat1N

p_syo3:

	mov al,16
	sub al,cl

	call	getpal		; set pallet
	loop	p_syo3
	ret

;--------------------------------------------------------
;--------------------------終わりが押された｡

bye_bye:

	call	box_hz		;edi
	mov	esi,edi

	mov	edi,42+256+62+15
	shl	edi,9
	add	edi,550/2

	add	edi,40000h

	mov	ax,120h
	mov	es,ax
	mov	ecx,8
	mov	edx,8
	mov	ebx,16
	cld

kiru2:
	rep	movsb
	add	edi,512
	sub	edi,edx
	mov	ecx,edx
	dec	ebx
	jnz	kiru2
	push	ds
	pop	es

	 WD_ERZ 0
	 WD_LEFT
	 ret


;******************************************
;パレット成分の変更
;最初に画面1の小さなを四角をバッファに保存していますが、
;多分画面0のパレット0を何とかしようとしているらしいです。

cgcol:
	push ebx

	call	box_hz		;edi

	mov	esi,42+256+62+15
	shl	esi,9
	add	esi,550/2
	add	esi,40000h

	push	ds
	mov	ax,120h
	mov	ds,ax
	mov	ecx,8
	mov	edx,8
	mov	ebx,16
	cld

kiru1:
	rep	movsb
	add	esi,512
	sub	esi,edx
	mov	ecx,edx
	dec	ebx
	jnz	kiru1
	pop	ds


	 WD_WANT

	 call pal_syo 

	call re_paint

	pop ebx

	 call nowcol
	 mov [edi],bx

	 call boxdt3
	 mov [edi+16],bx		;ボックスを指定の色に

	 call ds_pal1	;palet1 data

	 movzx ebx,bx
	 mov eax,3
	 mul ebx

	 add esi,eax

	 movzx ax,byte ptr [esi]
	 movzx bx,byte ptr [esi+1]
	 movzx cx,byte ptr [esi+2]

	 shr ax,2
	 shr bx,2
	 shr cx,2

	 call ln2
	 mov 2[edi],ax

	 call ln4
	 mov 2[edi],bx

	 call ln6
	 mov 2[edi],cx

	call	look_me
	mov	ax,[esi+8]
	cmp	ax,1
	jne	neteruyo

	 call find1_1
	 call find2_1
	 call find3_1

	BOX	boxdt3,1

neteruyo:
waiting:
	 call	ck_mouse
	 cmp	ch,1
	 je	mouseck
	 jmp	waiting

;------------------------------------------------
mouseck:
	 MOU	boxdt,4
	 cmp	bx,1                  ;bx=1 find
	 je	short mck1             ;ax = box no.
	 jmp	waiting

;------------------------------------------------
mck1:

	cmp ax,1
	 je find1
	cmp ax,2
	 je find2
	cmp ax,3
	 je find3
	cmp ax,4
	 je bye_bye
	jmp	waiting

;*********************************
find1:
	 mov ah,3
	 call MOUSE

	 call look_me
	 mov bx,16[esi]
	 sub dx,bx
	 sub dx,2

	 call ln2
	 mov 2[edi],dx

	 call find1_1

	 call nowcol
	 movzx ebx,word ptr [edi]

	 call ds_pal1
	 mov eax,3
	 mul ebx

	add esi,eax       ;blu head

	 call ln2

	 mov ax,2[edi]
	 shl ax,2
	 mov [esi],al

	 call nowcol
	 mov bx,[edi]
	 call l_set
	jmp	waiting


;**************************************
find2:
	 mov ah,3
	 call MOUSE
	 call look_me
	 mov bx,16[esi]
	 sub dx,bx
	 sub dx,2

	 call ln4
	 mov 2[edi],dx
	 call find2_1

	 call nowcol
	 movzx ebx,word ptr [edi]

	 call ds_pal1
	 mov eax,3
	 mul ebx

	add esi,eax       ;blu head


	 call ln4
	 mov ax,2[edi]
	 shl ax,2
	 mov [esi+1],al

	 call nowcol
	 mov bx,[edi]
	 call l_set
	jmp	waiting

;*********************************
find3:
	 mov ah,3
	 call MOUSE
	 call look_me
	 mov bx,16[esi]
	 sub dx,bx
	 sub dx,2

	 call ln6

	 mov 2[edi],dx
	 call find3_1

	 call nowcol
	 movzx ebx,word ptr [edi]

	 call ds_pal1
	 mov eax,3
	 mul ebx

	add esi,eax       ;blu head

	 call ln6
	 mov ax,2[edi]
	 shl ax,2
	 mov [esi+2],al

	 call nowcol
	 mov bx,[edi]
	 call l_set
	jmp	waiting

	 ret

;**************************************

find1_1:

	BOX ln1,1
	BOX ln2,1


	 call ln2
	 mov ax,2[edi]

	 shr ax,2

	 call mozidt
	 add edi,14
	 jmp gokei

find2_1:

	BOX ln3,1
	BOX ln4,1

	 call ln4
	 mov ax,2[edi]
	 shr ax,2

	 call mozidt
	 add edi,17
	 jmp gokei

find3_1:

	BOX ln5,1
	BOX ln6,1

	 call ln6
	 mov ax,2[edi]
	 shr ax,2

	 call mozidt
	 add edi,20
	 jmp gokei

