1
2	MODULE	generic_console_ioctl
3	PUBLIC	generic_console_ioctl
4
5	SECTION	code_clib
6	INCLUDE	"ioctl.def"
7
8	EXTERN	generic_console_cls
9	EXTERN	generic_console_font32
10	EXTERN	generic_console_udg32
11	EXTERN	__gal_mode
12	EXTERN	__console_w
13
14	EXTERN	__CLIB_DISABLE_MODE1
15
16	; Set bit 1 for hires
17	defc	LATCH = $2038
18
19	EXTERN	generic_console_caps
20        PUBLIC  CLIB_GENCON_CAPS
21        defc    CLIB_GENCON_CAPS = CAPS_MODE0
22
23	defc	CAPS_MODE0 = 0
24	defc	CAPS_MODE1 = CAP_GENCON_INVERSE | CAP_GENCON_CUSTOM_FONT | CAP_GENCON_UDGS | CAP_GENCON_BOLD | CAP_GENCON_UNDERLINE
25
26; a = ioctl
27; de = arg
28generic_console_ioctl:
29	ex	de,hl
30	ld	c,(hl)	;bc = where we point to
31	inc	hl
32	ld	b,(hl)
33	cp	IOCTL_GENCON_SET_FONT32
34	jr	nz,check_set_udg
35	ld	(generic_console_font32),bc
36success:
37	and	a
38	ret
39check_set_udg:
40	cp	IOCTL_GENCON_SET_UDGS
41	jr	nz,check_mode
42	ld	(generic_console_udg32),bc
43	jr	success
44check_mode:
45	cp	IOCTL_GENCON_SET_MODE
46	jr	nz,failure
47	ld	a,__CLIB_DISABLE_MODE1
48	and	a
49	jr	nz,failure
50	ld	hl,$1020
51	ld	a,c
52	and	a
53	ld	c,$80
54	ld	d,CAPS_MODE0
55	jr	z,set_mode
56	cp	1
57	jr	nz,failure
58	ld	hl,$be00
59	ld	($2a6a),hl
60	call	$e000
61	call	$e057
62	ld	a,$ff
63	ld	($2ba8),a
64	ld	a,1
65	ld	hl,$1a20
66	ld	c,2
67	halt
68	im	2
69	ld	d,CAPS_MODE1
70set_mode:
71	ld	(__gal_mode),a
72	and	a
73	jr	nz,not_mode0
74 	ld	a,$c
75	ld	($2ba8),a
76	ld	hl,$bfe0
77	ld	($2a6a),hl
78	halt
79	im	1
80not_mode0:
81	ld	(__console_w),hl
82	ld	a,d
83	ld	(generic_console_caps),a
84	;ld	a,c
85	;ld	(LATCH),a
86	call	generic_console_cls
87	jr	success
88failure:
89	scf
90	ret
91