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