;
;		ish file converter for MS-DOS  Ver 2.03 (90/11/3)
;
;
;		Copyright (c) 1986, 1987, 1989, 1990  by  M. ishizuka
;		All rights reserved.
;

error_01:	mov	al, 1d
		db	0bbh		; skip next instruction
error_02:	mov	al, 2d
		db	0bbh		; skip next instruction
error_03:	mov	al, 3d
		db	0bbh		; skip next instruction
error_04:	mov	al, 4d
		db	0bbh		; skip next instruction
error_05:	mov	al, 5d
		db	0bbh		; skip next instruction
error_06:	mov	al, 6d
		db	0bbh		; skip next instruction
error_07:	mov	al, 7d
		db	0bbh		; skip next instruction
error_08:	mov	al, 8d
		db	0bbh		; skip next instruction
error_09:	mov	al, 9d
		db	0bbh		; skip next instruction
error_10:	mov	al, 10d
		db	0bbh		; skip next instruction
error_17:	mov	al, 17d
		db	0bbh		; skip next instruction
error_19:	mov	al, 19d
		db	0bbh		; skip next instruction
error_20:	mov	al, 20d
		db	0bbh		; skip next instruction
error_21:	mov	al, 21d
		db	0bbh		; skip next instruction
error_23:	mov	al, 23d
		db	0bbh		; skip next instruction
error_24:	mov	al, 24d
		db	0bbh		; skip next instruction
error_25:	mov	al, 25d
		db	0bbh		; skip next instruction
error_29:	mov	al, 29d
		db	0bbh		; skip next instruction
error_30:	mov	al, 30d
		db	0bbh		; skip next instruction
error_31:	mov	al, 31d
		db	0bbh		; skip next instruction
error_32:	mov	al, 32d
		db	0bbh		; skip next instruction
error_34:	mov	al, 34d
		db	0bbh		; skip next instruction
error_36:	mov	al, 36d
		db	0bbh		; skip next instruction
error_38:	mov	al, 38d
		db	0bbh		; skip next instruction
error_39:	mov	al, 39d
		db	0bbh		; skip next instruction
error_40:	mov	al, 40d
		db	0bbh		; skip next instruction
error_41:	mov	al, 41d
		db	0bbh		; skip next instruction
error_42:	mov	al, 42d
		db	0bbh		; skip next instruction
error_43:	mov	al, 43d
		jmp	error

error_11:	mov	al, 11
		call	error
		jmp	skip_this_file

error_12:	mov	al, 12d
		call	error
skip_this_file:	mov	dx, offset msg_skip
skip_this_file_0:
		@@display	dx
		cmp	mode, 'r'
		jz	make_hsi_next
		cmp	mode, 'q'
		jz	make_hsi_next
		jmp	go_next

error_28_0:	@@display	msg_crlf
		jmp	error_28

error_27_0:	@@display	msg_crlf
error_27:	mov	al, 27d
		db	0bbh		; skip next instruction
error_28:	mov	al, 28d
		mov	byte ptr create_flag, 0ffh
		db	0bbh		; skip next instruction
error_13:	mov	al, 13d
		call	error
		call	close_and_delete
		jmp	make_hsi_main

error_33:	mov	ax, ds
		mov	es, ax
		mov	al, 33d
		call	error
		@@display_stdout	msg_error_33
		jmp	make_hsi_main

error_14:	push	ax
		mov	al, 'x'
		call	disp_error_number2
		mov	al, 14d
		call	error
		call	close_and_delete
		@@display	msg_err_dsp
		mov	cx, 3
		mov	bx, offset error_seq
disp_err:	mov	ax, [bx+1]
		mov	dx, [bx+3]
		call	disp_number
		push	cx
		@@display	msg_br3
		push	bx
		mov	al, [bx]
		mov	bx, offset encode_table_jis7
		cmp	byte ptr type_flag, '7'
		jz	_error_14_1
		cmp	byte ptr type_flag, 'n'
		jz	_error_14_1
		mov	bx, offset encode_table_jis8
_error_14_1:	cmp	al, byte ptr para_68_62
		jnz	_error_14_2
		add	al, old_style
_error_14_2:	xlat
		@@dispchr	al
		@@display	msg_br4
		pop	bx
		pop	cx
		add	bx, 5
		loop	disp_err
		@@display	msg_crlf
		pop	ax
error_14_2:	or	al, al
		jnz	make_hsi_main
		jmp	header_save

error_15:	@@display	msg_error_15_1
		@@dispstr	bx
error_15_1:	mov	al, 15d
		jmp	error

error_16:	mov	al, 16d
		call	error
		mov	ax, fsize_low
		mov	dx, fsize_high
		jmp	_error_16_1

error_16_2:	@@display	msg_error_16_1
		mov	ax, bx
		mov	dx, si
		call	_error_16_1
		@@display	msg_skip
_error_16_1:	mov	di, offset work_fcb_2 + 2
		mov	word ptr [di-2], ' ['
		call	hex_to_dec
		mov	byte ptr [di], '$'
		@@display	work_fcb_2
		@@display	msg_error_16_2
		jmp	skip_this_file

error_26:	mov	word ptr cmpfile_handler, 0
error_18:	mov	bx, ax
		mov	ah, 3eh
		int	21h
		jc	error_04
		mov	al, 18d
		call	error
		mov	si, offset work_fcb_2
		mov	ah, 0
_error_18_1:	call	lodsb_tolower_new
		cmp	al, 20h
		jz	_error_18_1
		or	al, al
		jz	_error_18_2
		@@dispchr	al
		jmp	_error_18_1

_error_18_2:	mov	al, byte ptr mode
		cmp	al, 'r'
		jz	_error_26_1
		cmp	al, 'q'
		jz	_error_26_1
		@@display	msg_error_18_2
		jmp	skip_this_file

_error_26_1:	@@display	msg_error_26
		mov	dx, offset msg_skip_0
		jmp	skip_this_file_0

error_22:	@@display	msg_error_22_1
		@@dispstr	save_input_filename
		mov	al, 22d
		jmp	error

error_35:	@@display	msg_error_35
		@@dispstr	ishopt_fname
_error_35_1:	@@display	msg_error_35_1
		jmp	abend1

error_37:	@@display	msg_error_37
		@@dispstr	tag
		jmp	error_15_1

_error_40:	mov	ax, es
		mov	ds, ax
		jmp	error_40

error:		cmp	al, MAX_ERROR+1
		jb	_error_1
		xor	al, al
_error_1:	push	ax
		mov	bx, offset msg_table
		cbw
		add	ax, ax
		add	bx, ax
		mov	dx, [bx]
		@@display	dx
		pop	ax
		cmp	al, 39d
		jz	error_ret
		cmp	al, 33d
		jz	error_ret
		cmp	al, 29d
		jz	abend
		jnc	abend1
		cmp	al, 27d
		jnb	error_ret
		cmp	al, 25d
		jz	abend1
		cmp	al, 23d
		jz	abend1
		cmp	al, 22d
		jz	error_ret
		cmp	al, 21d
		jz	abend1
		cmp	al, 20d
		jz	abend1
		cmp	al, 18d
		jz	error_ret
		cmp	al, 16d
		jz	error_ret
		cmp	al, 15d
		jz	abend1
		jnc	abend
		cmp	al, 13d
		jnb	error_ret
		cmp	al, 11d
		jnb	error_ret
		cmp	al, 10d
		jz	abend1
		cmp	al, 6d
		jz	go_next
		cmp	al, 2d
		jz	abend2
		cmp	al, 1d
		jz	abend1
abend:		call	end_msg
abend1:		call	restore_break
		@@display	msg_abend
		mov	ax, 4cffh
		int	21h
;
abend2:		call	restore_break
		mov	ax, 4c01h
		int	21h

error_ret:	ret

close_and_delete:
		call	_write_close
		jb	error_09
		cmp	byte ptr create_flag, 0
		jz	close_and_delete_ret
		cmp	byte ptr keep_flag, 0
		jnz	not_delete
		mov	ah, 41h
		mov	dx, offset work_fcb_2
		int	21h
		jb	error_09
		@@display	msg_file_delete
close_and_delete_ret:
		ret

not_delete:	@@display	msg_not_delete
		ret
