1
2	MODULE	generic_console_ioctl
3	PUBLIC	generic_console_ioctl
4
5	SECTION	code_clib
6
7	EXTERN	generic_console_cls
8	EXTERN	__console_h
9	EXTERN	__console_w
10	EXTERN	__pc88_mode
11	EXTERN	generic_console_font32
12	EXTERN	generic_console_udg32
13	EXTERN	generic_console_caps
14	EXTERN	pc88bios
15
16	INCLUDE	"ioctl.def"
17
18	PUBLIC  CLIB_GENCON_CAPS
19	defc    CLIB_GENCON_CAPS = 0
20
21	defc    CLIB_GENCON_CAPS_MODE2 = CAP_GENCON_FG_COLOUR | CAP_GENCON_BG_COLOUR | CAP_GENCON_INVERSE | CAP_GENCON_CUSTOM_FONT | CAP_GENCON_UDGS | CAP_GENCON_BOLD | CAP_GENCON_UNDERLINE
22
23; a = ioctl
24; de = arg
25generic_console_ioctl:
26	ex	de,hl
27	ld	c,(hl)	;bc = where we point to
28	inc	hl
29	ld	b,(hl)
30        cp      IOCTL_GENCON_SET_FONT32
31        jr      nz,check_set_udg
32        ld      (generic_console_font32),bc
33success:
34        and     a
35        ret
36check_set_udg:
37        cp      IOCTL_GENCON_SET_UDGS
38        jr      nz,check_mode
39        ld      (generic_console_udg32),bc
40        jr      success
41check_mode:
42	cp	IOCTL_GENCON_SET_MODE
43	jr	nz,failure
44	ld	a,c
45	ld	bc,$5019
46	ld	l,CLIB_GENCON_CAPS
47	and	a
48	jr	z,set_mode
49	ld	l,CLIB_GENCON_CAPS_MODE2
50	cp	2
51	jr	z,set_mode
52	ld	l,CLIB_GENCON_CAPS
53	cp	1
54	ld	bc,$2519
55	jr	nz,failure
56set_mode:
57	ld	(__pc88_mode),a
58	ld	a,b
59	ld	(__console_w),a
60	ld	a,c
61	ld	(__console_h),a
62	ld	a,l
63	ld	(generic_console_caps),a
64        ld      ix,$6f6b                ; CRTSET
65        call    pc88bios
66	call	generic_console_cls
67	and	a
68	ret
69failure:
70	scf
71	ret
72