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 __mode 11 EXTERN generic_console_font32 12 EXTERN generic_console_udg32 13 EXTERN generic_console_caps 14 EXTERN tmode 15 EXTERN tmode_load_udgs 16 EXTERN gmode 17 EXTERN asm_load_z88dk_font 18 EXTERN asm_load_z88dk_udg 19 EXTERN l_jphl 20 21 INCLUDE "ioctl.def" 22 23 PUBLIC CLIB_GENCON_CAPS 24 defc CLIB_GENCON_CAPS = CAP_MODE0 25 defc CAP_MODE0 = CAP_GENCON_FG_COLOUR | CAP_GENCON_BG_COLOUR | CAP_GENCON_CUSTOM_FONT | CAP_GENCON_UDGS 26 defc CAP_MODE1 = CAP_GENCON_FG_COLOUR | CAP_GENCON_BG_COLOUR | CAP_GENCON_CUSTOM_FONT | CAP_GENCON_UDGS | CAP_GENCON_INVERSE | CAP_GENCON_BOLD | CAP_GENCON_UNDERLINE 27 28; Entry: 29; a = ioctl 30; de = &arg 31; Exit: nc=success, c=failure 32generic_console_ioctl: 33 ld h,d 34 ld l,e 35 ld c,(hl) ;bc = where we point to 36 inc hl 37 ld b,(hl) 38 cp IOCTL_GENCON_SET_FONT32 39 jr nz,check_set_udg 40 ld hl,generic_console_font32 41 ld (hl),c 42 inc hl 43 ld (hl),b 44 ld a,(__mode) 45 dec a 46 call nz,asm_load_z88dk_font ; We only need to load them in text mode 47 and a 48 ret 49check_set_udg: 50 cp IOCTL_GENCON_SET_UDGS 51 jr nz,check_mode 52 ld hl,generic_console_udg32 53 ld (hl),c 54 inc hl 55 ld (hl),b 56 ld a,(__mode) 57 dec a 58 call nz,asm_load_z88dk_udg ; We only need to load them in text mode 59 and a 60 ret 61check_mode: 62 cp IOCTL_GENCON_SET_MODE 63 scf 64 ret nz 65 ld d,CAP_MODE1 66 ld a,c ; The mode 67 ld hl,gmode 68 cp 1 ; Drawing mode 69 jr z,set_mode 70 ld d,CAP_MODE0 71 ld hl,tmode ; Otherwise it's text mode... 72set_mode: 73 ld a,d 74 ld (generic_console_caps),a 75 call l_jphl ; Initialise the mode 76 call generic_console_cls 77 and a 78 ret 79