DEBUG	EQU	0
;********************************************************
;
;	☆★☆	   ヘッド表示プログラム     ☆★☆
;
;		ｂｙ　Ｙａｓｕ．Ｈａｒａ．
;
;	 Ｖｅｒ１．２３　（１９９０／１０／０９）
;
;********************************************************
	ASSUME	CS:CSEG,DS:DSEG,SS:SSEG
;********************************************************************
	IF	DEBUG
	PUBLIC	OFFSETX,OFFSETY,ZOOM,PADWORK,INPUT_KEY
READPAG	EQU	10
DRIVE	EQU	'H'
	ELSE
READPAG	EQU	100
DRIVE	EQU	'Q'
	ENDIF
READNUM	EQU	READPAG*10
HEADLEN	EQU	512*3*READNUM
PALTLEN	EQU	32*3
IMG_LEN	EQU	128*1024
EGBSIZE	EQU	1536
;********************************************************************
CSEG	SEGMENT	DWORD PUBLIC USE32 'CODE'

	AND	ESP,-4
	MOV	AX,110H
	MOV	FS,AX

;ﾄﾞﾗｲﾌﾞ R ｶﾞ ｱﾙｶ ﾁｪｯｸ
	MOV	AX,3D00H
	MOV	EDX,OFFSET RUN386
	INT	21H
	SETNC	BYTE PTR [EXIST_R]
	;
	MOV	BX,AX
	MOV	AH,3EH
	INT	21H

;CD ﾄﾞﾗｲﾌﾞ ﾃｲｼ ｼﾞｶﾝ ﾉ ｾｯﾃｲ
	MOV	DL,1
	CALL	CD_TIME

;ｼﾘﾝﾀﾞ 0 ﾍﾉ ｼｰｸ
SEEK_0:
	MOV	AX,3C0H
	MOV	CH,0
	INT	93H
	TEST	AH,AH
	JNZ	SEEK_0

;ｷｰﾎﾞｰﾄﾞｸﾘｯｸ ｵﾝ ﾉ ｾｲｷﾞｮ
	MOV	AX,501H
	INT	90H

;FM ｵﾝｹﾞﾝ ﾉﾐﾉ ｼｮｷｶ
	MOV	AH,30H
	CALL	SOUND_CALL

;ｸﾞﾗﾌｨｯｸ ｼｮｷｶ
	MOV	AH,0
	MOV	ECX,EGBSIZE
	CALL	EGB_CALL

;ｶｿｳｶﾞﾒﾝ ﾉ ｾｯﾃｲ
	MOV	AX,100H
	MOV	DX,10
	CALL	EGB_CALL
	MOV	AX,101H
	MOV	DX,5
	CALL	EGB_CALL

	CALL	OFFSET_0

;ﾋﾞｮｳｶﾞｼｮｸ ﾉ ｾｯﾃｲ
	MOV	AX,701H
	MOV	DX,7FFFH
	CALL	EGB_CALL

;ｽﾌﾟﾗｲﾄ ｼｮｷｶ
	CALL	INIT_SPRITE

;
	CALL	CLEAR_SCREEN
	JMP	SHORT RETRY

;CD-ROM ﾘｰﾄﾞｴﾗｰ
ERROR_TRAP:
	MOV	ESI,OFFSET ERROR_$
	CALL	PRINT_MSG
	;
	MOV	AX,900H
	INT	90H

;ﾃﾞｰﾀﾘｰﾄﾞ ﾉ ﾘﾄﾗｲ
RETRY:
	MOV	ESI,OFFSET WAIT_$
	CALL	PRINT_MSG

;ﾊﾟﾚｯﾄ ﾃﾞｰﾀ ｦ ﾒﾓﾘｰ ﾍ ﾖﾐｺﾑ
	MOV	AX,3D00H
	MOV	EDX,OFFSET PALTFIL
	INT	21H
	JC	ERROR_TRAP
	;
	MOV	BX,AX
	MOV	AH,3FH
	MOV	ECX,PALTLEN
	MOV	EDX,OFFSET PALTWRK
	INT	21H
	JC	ERROR_TRAP
	;
	MOV	AH,3EH
	INT	21H
	JC	ERROR_TRAP

;ﾍｯﾄﾞ ﾃﾞｰﾀ ｦ ﾒﾓﾘｰ ﾍ ﾖﾐｺﾑ
	MOV	AX,3D00H
	MOV	EDX,OFFSET HEADFIL
	INT	21H
	JC	ERROR_TRAP
	MOV	[HANDLE],AX
	;
	MOV	BX,AX
	MOV	AX,4202H
	XOR	ECX,ECX
	XOR	EDX,EDX
	INT	21H
	JC	ERROR_TRAP
	;
	MOV	CX,512*3
	DIV	CX
	MOV	[HEADMAX],AX
	MOV	EDI,OFFSET MAX_$
	CALL	CONVERT_D
	;
	CALL	READ_CD

;ｶﾞﾒﾝ ﾉ ﾋｮｳｼﾞ
	MOV	AX,101H
	MOV	CX,120
	CALL	SPRITE_CALL

;ｱﾄﾘﾋﾞｭｰﾄ ｾｯﾃｲ
	MOV	BX,3*10
	MOV	CX,1024-120
ATTR_SET:
	MOV	AH,5
	MOV	DX,202H
	LEA	ESI,[ECX+8000H]
	MOV	DI,8100H
	CALL	SPRITE_CALL
	ADD	CX,4
	DEC	BX
	JNZ	SHORT ATTR_SET

;ｲﾁ ｾｯﾃｲ
	MOV	CX,1024-120
	XOR	EBP,EBP
XYZSET_X:
	MOV	DI,46
	MOV	BH,5
XYZSET_Y:
	MOV	SI,BP
	MOV	BL,3
XYZSET_Z:
	MOV	AX,400H
	MOV	DX,202H
	CALL	SPRITE_CALL
	ADD	CX,4
	ADD	SI,33
	DEC	BL
	JNZ	SHORT XYZSET_Z
	ADD	DI,36
	DEC	BH
	JNZ	SHORT XYZSET_Y
	TEST	EBP,EBP
	MOV	BP,136
	JZ	SHORT XYZSET_X
;
	CALL	CLEAR_SCREEN
	MOV	ESI,OFFSET LINE$
	CALL	PRINT_MSG

;
MAIN_LOOP:
	XOR	EDX,EDX
	MOV	AX,[HEADNUM]
	DEC	AX
	MOV	CX,10
	DIV	CX
	IMUL	AX,CX
	MOV	[HEADOFF],AX
	XOR	EDX,EDX
	MOV	CX,READNUM
	DIV	CX
	CMP	[HPAGE],AX
	JZ	SHORT SAME_PAGE
	MOV	[HPAGE],AX
	CALL	READ_CD
SAME_PAGE:
	XOR	EBX,EBX
	MOV	EDI,OFFSET NUMBER$
NUM_LOOP:
	INC	BL
	ADD	EDI,6
	MOV	AX,[HEADOFF]
	ADD	AX,BX
	CMP	AX,[HEADMAX]
	JBE	SHORT NUM_LOOP1
	MOV	EAX,20202020H
	STOSD
	JMP	SHORT NUM_LOOP2
NUM_LOOP1:
	CALL	CONVERT_D
NUM_LOOP2: 
	CMP	BL,10
	JNZ	SHORT NUM_LOOP
	;
	MOV	ESI,OFFSET NUMBER$
	CALL	PRINT_MSG
;ｽﾌﾟﾗｲﾄ ﾉ ﾃｲｷﾞ
	MOV	BH,10
	MOV	CX,1024-120
	MOV	BP,[HEADOFF]
DEF_LOOP:
	MOV	ESI,OFFSET CLR_PAT
	XOR	EDI,EDI
	CMP	BP,[HEADMAX]
	JNC	SHORT DEF_CLR
	XOR	EDX,EDX
	MOV	AX,BP
	MOV	SI,READNUM
	DIV	SI
	MOVZX	EAX,DX
	SAL	EAX,9
	LEA	ESI,[EAX+EAX*2+HEADWRK]
	MOV	DI,512
DEF_CLR:
	MOV	BL,3
DEF_DRCTN:
	MOV	AX,200H
	MOV	DX,202H
	CALL	SPRITE_CALL
	ADD	ESI,EDI
	ADD	CX,4
	DEC	BL
	JNZ	SHORT DEF_DRCTN
	INC	BP
	DEC	BH
	JNZ	SHORT DEF_LOOP

;ﾊﾟﾚｯﾄﾌﾞﾛｯｸ ﾉ ｾｯﾃｲ
MAIN_LOOP2:
	MOVZX	ESI,BYTE PTR [PALTNUM]
	SAL	SI,5
	ADD	ESI,OFFSET PALTWRK
	MOV	AH,3
	MOV	CX,256
	MOV	DX,1
	CALL	SPRITE_CALL

;
INPUT_KEY:
	MOV	AX,901H
	INT	90H
	MOV	BX,[PALTNUM]
	MOV	CX,[HEADNUM]
	CMP	DL,'0'
	JC	SHORT NOT_NUMBER
	CMP	DL,'9'+1
	JC	NUMBER_KEY
NOT_NUMBER:
	CMP	DL,0DH
	JZ	RETURN_KEY
	SUB	DL,1BH
	JZ	ESCAPE_KEY
	DEC	DL
	JZ	RIGHT_ARROW
	DEC	DL
	JZ	LEFT_ARROW
	DEC	DL
	JZ	UP_ARROW
	DEC	DL
	JZ	DOWN_ARROW
	DEC	DL
	JNZ	SHORT NOT_SPACE_KEY
	CALL	ZOOM_0
	JMP	SHORT INPUT_KEY
	;
NOT_SPACE_KEY:
	MOV	BL,3FH
	MOV	DH,1
PAD_LOOP:
	MOV	AH,40H
	CALL	SOUND_CALL
	TEST	DL,0FH
	JZ	SHORT PAD_SKIP
	AND	BL,DL
PAD_SKIP:
	DEC	DH
	JZ	SHORT PAD_LOOP
	;
	MOV	DL,BYTE PTR [PADWORK]
	OR	DL,0FH
	MOV	BYTE PTR [PADWORK],BL
	NOT	BL
	AND	BL,DL
	JZ	INPUT_KEY
	;
	MOV	AX,[ZOOM]
	TEST	BL,20H
	JZ	SHORT NOT_ZOOM_DOWN
	DEC	AL
NOT_ZOOM_DOWN:
	TEST	BL,10H
	JZ	SHORT NOT_ZOOM_UP
	INC	AL
NOT_ZOOM_UP:
	CMP	AL,15
	JNC	SHORT NOT_ZOOM
	CMP	AX,[ZOOM]
	JZ	SHORT NOT_ZOOM
	MOV	[ZOOM],AX
	CALL	DISP_START
	JMP	INPUT_KEY
	;
NOT_ZOOM:
	MOV	AX,[OFFSETX]
	TEST	BL,8
	JZ	SHORT NOT_RIGHT
	INC	AX
NOT_RIGHT:
	TEST	BL,4
	JZ	SHORT NOT_LEFT
	DEC	AX
NOT_LEFT:
	CMP	AX,200
	JZ	SHORT NOT_RL
	CMP	AX,-40
	JZ	SHORT NOT_RL
	MOV	[OFFSETX],AX
NOT_RL:
	;
	MOV	AX,[OFFSETY]
	TEST	BL,2
	JZ	SHORT NOT_UP
	INC	AX
NOT_UP:
	TEST	BL,1
	JZ	SHORT NOT_DOWN
	DEC	AX
NOT_DOWN:
	CMP	AX,208
	JNC	SHORT NOT_UD
	MOV	[OFFSETY],AX
NOT_UD:
	;
	CALL	OFFSET_CHG
	JMP	INPUT_KEY

RETURN_KEY:
	MOV	BL,2
UP_ARROW:
	SUB	BL,2
DOWN_ARROW:
	INC	BL
	CMP	BL,3
	JNC	INPUT_KEY
	MOV	[PALTNUM],BX
	;
	ADD	BL,'0'
	MOV	[PAL_$],BL
	;
	MOV	ESI,OFFSET ATTR_$
	CALL	PRINT_MSG
	;
	JMP	MAIN_LOOP2

RIGHT_ARROW:
	ADD	CX,20
LEFT_ARROW:
	SUB	CX,10
CHK_NUM:
	JZ	INPUT_KEY
	CMP	CX,[HEADMAX]
	JA	INPUT_KEY
	MOV	[HEADNUM],CX
	JMP	MAIN_LOOP

NUMBER_KEY:
	SUB	DL,'0'
	MOVZX	CX,DL
	MOV	AX,[INPUT]
	XOR	EDX,EDX
	MOV	BX,1000
	DIV	BX
	IMUL	DX,10
	ADD	CX,DX
	MOV	[INPUT],CX
	JMP	CHK_NUM

ESCAPE_KEY:
;ｾｲｼﾞｮｳ ｼｭｳﾘｮｳ
	MOV	AH,3EH
	MOV	BX,[HANDLE]
	INT	21H
	;
	MOV	AX,100H
	MOV	CX,120
	CALL	SPRITE_CALL
	;
	CALL	OFFSET_0
	;
	MOV	EDX,1
	CALL	DISP_PAGE
	;
	MOV	AX,[EXIST_R]
	TEST	AX,AX
	JNZ	SHORT RETRY2
	;
	CALL	CLEAR_SCREEN
	MOV	ESI,OFFSET EXIT_$
	CALL	PRINT_MSG
	;
	MOV	AX,900H
	INT	90H
	;
	JMP	SHORT EXIT_PRG
	;
ERROR_TRAP2:
	CALL	CLEAR_SCREEN
	MOV	ESI,OFFSET ERROR2$
	CALL	PRINT_MSG
	;
	MOV	AX,900H
	INT	90H
	;
;DRIVE_R.IMG ｦ ﾖﾐｺﾑ
RETRY2:
	CALL	CLEAR_SCREEN
	MOV	ESI,OFFSET TMENU_$
	CALL	PRINT_MSG
	;
	MOV	AX,3D00H
	MOV	EDX,OFFSET DRIVE_R
	INT	21H
	JC	ERROR_TRAP2
	;
	MOV	BX,AX
	MOV	AX,130H
	MOV	DS,AX
	MOV	AH,3FH
	MOV	ECX,IMG_LEN
	XOR	EDX,EDX
	INT	21H
	MOV	AX,14H
	MOV	DS,AX
	JC	ERROR_TRAP2
	;
	MOV	AH,3EH
	INT	21H
	JC	ERROR_TRAP2
EXIT_PRG:
;CD ﾄﾞﾗｲﾌﾞ ﾃｲｼ ｼﾞｶﾝ ﾉ ｾｯﾃｲ
	MOV	DL,20
	CALL	CD_TIME
	;
	MOV	AX,4C00H
	INT	21H

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

CD_TIME:
	MOV	AX,52C0H
	MOV	CH,0FFH
	MOV	CL,DL
	INT	93H
	TEST	AH,AH
	JNZ	CD_TIME
	RET

READ_CD:
	MOV	AX,4200H
	MOV	BX,[HANDLE]
	MOVZX	ECX,[HPAGE]
	IMUL	ECX,HEADLEN
	MOV	DX,CX
	SHR	ECX,16
	INT	21H
	;
	MOV	AH,3FH
	MOV	BX,[HANDLE]
	MOV	ECX,HEADLEN
	MOV	EDX,OFFSET HEADWRK
	INT	21H
	RET

;ﾋｮｳｼﾞｶｲｼｲﾁ ﾉ ｾｯﾃｲ
OFFSET_0:
	XOR	EAX,EAX
	MOV	[OFFSETX],AX
	MOV	[OFFSETY],AX
ZOOM_0:
	MOV	[ZOOM],0
DISP_START:
	MOV	CX,[ZOOM]
	ADD	CX,2
	;
	CALL	WRITE_PAGE_1
	;
	XOR	EDX,EDX
	CALL	DISP_PAGE
	;
	MOV	AX,202H
	MOV	DX,CX
	MOV	BX,CX
	CALL	EGB_CALL
	;
	MOV	AX,200H
	XOR	EDX,EDX
	XOR	EBX,EBX
	CMP	AH,CL
	JZ	SHORT ZOOM_ZERO
	;
	CALL	EGB_CALL
	;
	MOV	AX,203H
	MOV	DX,256
	MOV	BX,240
	JMP	SHORT ZOOM_ELSE
	;
ZOOM_ZERO:
	MOV	AL,3
	MOV	DX,256
	MOV	BX,240
	CALL	EGB_CALL
	;
	MOV	AX,200H
	MOV	DX,64
	XOR	EBX,EBX
ZOOM_ELSE:
	CALL	EGB_CALL
	;
	CALL	WRITE_PAGE_0
	;
	MOV	AX,202H
	MOV	DX,CX
	MOV	BX,CX
	CALL	EGB_CALL
	;
	MOV	AX,203H
	MOV	DX,320
	MOV	BX,256
	CALL	EGB_CALL
	;
OFFSET_CHG:
	CALL	WRITE_PAGE_1
	;
	MOV	AH,7
	XOR	ESI,ESI
	XOR	EDI,EDI
	XOR	EDX,EDX
	CMP	DX,[ZOOM]
	JNZ	SHORT OFFSET_ON
	;
	CALL	SPRITE_CALL
	;
	MOV	AX,201H
	XOR	EBX,EBX
	CALL	EGB_CALL
	;
	JMP	SHORT OFFSET_NO
	;
OFFSET_ON:
	SUB	SI,[OFFSETX]
	CALL	SPRITE_CALL
	;
	MOV	AX,201H
	MOV	BX,[OFFSETY]
	CALL	EGB_CALL
	;
	MOV	DX,[OFFSETX]
	ADD	DX,64
OFFSET_NO:
	CALL	WRITE_PAGE_0
	;
	MOV	AX,201H
	CALL	EGB_CALL
	;
	MOV	EDX,3
;ﾋｮｳｼﾞ ﾍﾟｰｼﾞ ﾉ ｼﾃｲ
DISP_PAGE:
	MOV	AX,601H
	JMP	SHORT EGB_CALL

;ｶｷｺﾐ ﾍﾟｰｼﾞ 0
WRITE_PAGE_0:
	MOV	AX,500H
	JMP	SHORT EGB_CALL

;ｶｷｺﾐ ﾍﾟｰｼﾞ 1
WRITE_PAGE_1:
	MOV	AX,501H
	JMP	SHORT EGB_CALL

;ｾﾞﾝｶﾞﾒﾝ ﾉ ｼｮｳｷｮ
CLEAR_SCREEN:
	MOV	AH,20H
EGB_CALL:
	MOV	EDI,OFFSET EGBWORK
	CALL	PWORD PTR FS:[20H]
	RET

;ｽﾌﾟﾗｲﾄ ｼｮｷｶ
INIT_SPRITE:
	MOV	AH,0
SPRITE_CALL:
	CALL	PWORD PTR FS:[60H]
	RET

SOUND_CALL:
	CALL	PWORD PTR FS:[80H]
	RET

FONT_CALL:
	CALL	PWORD PTR FS:[0A0H]
	RET

;ﾓｼﾞﾚﾂ ﾋｮｳｼﾞ
PRINT_MSG:
	CALL	SJISSTRING
	MOVZX	EAX,WORD PTR [ESI+4]
	LEA	ESI,[ESI+EAX+6]
	MOV	AX,[ESI]
	INC	AX
	JNZ	SHORT PRINT_MSG
	RET

;10ｼﾝｽｳ 4ｹﾀ ｺﾝﾊﾞｰﾄ
CONVERT_D:
	MOV	CL,4
	MOV	ESI,OFFSET DECIMAL
CON_LOOP:
	XOR	EDX,EDX
	DIV	WORD PTR [ESI]
	OR	AL,'0'
	STOSB
	MOV	AX,DX
	ADD	ESI,2
	DEC	CL
	JNZ	SHORT CON_LOOP
	RET

;EGB_sjisString ｺｳｿｸ ﾊﾞﾝ
SJISSTRING:
	PUSHAD
	XOR	EAX,EAX
	LODSW
	MOV	EDI,EAX
	LODSW
	SUB	AL,15
	SHL	EAX,10
	LEA	EDI,[EAX+EDI*2]
	LODSW
	MOV	CX,AX
	DEC	CX
	JS	SJISSTRING9
	MOV	AX,1CH
	MOV	ES,AX
SJISSTRING1:
	LODSB
	DEC	CX
	TEST	AL,AL
	JS	SHORT SJISSTRING2
	PUSH	ESI
	MOV	BL,AL
	XOR	EAX,EAX
	MOV	DX,810H
	CALL	FONT_CALL
	JMP	SHORT SJISSTRING3
SJISSTRING2:
	MOV	BH,AL
	LODSB
	DEC	CX
	PUSH	ESI
	MOV	BL,AL
	MOV	AH,2
	CALL	FONT_CALL
	MOV	AX,100H
	MOV	DX,1010H
	CALL	FONT_CALL
SJISSTRING3:
	MOV	BP,DX
	MOV	EBX,EDI
SJISSTRING4:
	LODSB
	NOT	AL
	MOV	DL,AL
	REPT	8
	ADD	DL,DL
	SBB	EAX,EAX
	STOSW
	ENDM
	SUB	DH,8
	JNZ	SJISSTRING4
	LEA	EDI,[EBX+400H]
	MOV	DX,BP
	DEC	DL
	JNZ	SJISSTRING3
	MOVZX	EAX,DH
	LEA	EDI,[EDI+EAX*2-4000H]
	POP	ESI
	MOV	AX,14H
	MOV	DS,AX
	TEST	CX,CX
	JNS	SJISSTRING1
	MOV	ES,AX
SJISSTRING9:
	POPAD
	RET

CSEG	ENDS
;********************************************************************
DSEG	SEGMENT	DWORD PUBLIC USE32 'DATA'

PALTFIL	DB	DRIVE,':\DATA\PALETTE.32K',0
HEADFIL	DB	DRIVE,':\DATA\HEAD.DAT',0
DRIVE_R	DB	'Q:\DRIVE_R.IMG',0
RUN386	DB	'R:\RUN386.EXE',0

WAIT_$	DW	16,100,36
	DB	'★☆★  ヘッド表示   Ver1.23  ★☆★'
	DW	16,120,36
	DB	'Programmed　by　Ｙａｓｕ．Ｈａｒａ．'
	DW	16,140,36
	DB	'ＣＤからデータを読み込んでいま〜っす'
	DW	16,160,36
	DB	'♪〜〜しばらくお待ちくださいね〜〜♪'
	DW	-1

ERROR_$	DW	16,140,36
	DB	'富士通ＨａｂｉｔａｔのＣＤ−ＲＯＭを'
	DW	16,160,36
	DB	'入れてから、何かキーを押してください'
	DW	-1

TMENU_$	DW	16,120,36
	DB	'《Ｔｏｗｎｓ−ＭＥＮＵ》に戻りま〜す'
	DW	16,140,36
	DB	'♪〜〜ちょっとお待ちくださいね〜〜♪'
	DW	-1

ERROR2$	DW	16,100,36
	DB	'スプライトメモリ（ＤＲＩＶＥ　Ｒ）に'
	DW	16,120,36
	DB	'ＲＵＮ３８６.ＥＸＥ を再ロードします'
	DW	16,140,36
	DB	'<Towns-OS V1.1 L20> のＣＤ−ＲＯＭを'
	DW	16,160,36
	DB	'入れてから、何かキーを押してください'
	DW	-1

EXIT_$	DW	16,110,36
	DB	'『ヘッド表示プログラム』を終了します'
	DW	16,130,36
	DB	'必要ならば、ＣＤ−ＲＯＭを入れ替えて'
	DW	16,150,36
	DB	'準備できたら何かキーを押してください'
	DW	-1

LINE$	DW	32,40,32
	DB	'ヘッドの種類:'
MAX_$	DB	'     パレット番号:1'
	DW	-1

ATTR_$	DW	32+8*31,40,1
PAL_$	DB	' '
	DW	-1

NUMBER$	DW	32,68,4
	DB	'    '
	DW	32,68+36,4
	DB	'    '
	DW	32,68+36*2,4
	DB	'    '
	DW	32,68+36*3,4
	DB	'    '
	DW	32,68+36*4,4
	DB	'    '
	DW	32+136,68,4
	DB	'    '
	DW	32+136,68+36,4
	DB	'    '
	DW	32+136,68+36*2,4
	DB	'    '
	DW	32+136,68+36*3,4
	DB	'    '
	DW	32+136,68+36*4,4
	DB	'    '
	DW	-1

	EVEN

DECIMAL	DW	1000,100,10,1

CLR_PAT	DB	512 DUP(0)

OFFSETX	DW	0
OFFSETY	DW	0
ZOOM	DW	0
PADWORK	DW	0
PALTNUM	DW	1
INPUT	DW	0
HPAGE	DW	0
HEADNUM	DW	1
HEADOFF	DW	0
HEADMAX	DW	0
HANDLE	DW	0
EXIST_R	DW	0

EGBWORK	DB	EGBSIZE DUP(?)
PALTWRK	DB	PALTLEN DUP(?)
HEADWRK	DB	HEADLEN DUP(?)

DSEG	ENDS
;********************************************************************
SSEG	SEGMENT	DWORD STACK USE32 'STACK'

	DB	1000H DUP(?)

SSEG	ENDS
;********************************************************************
	END
