1; Generic console/graphics driver for the VIO IMSAI board 2 3 SECTION code_clib 4 5 PUBLIC generic_console_cls 6 PUBLIC generic_console_vpeek 7 PUBLIC generic_console_printc 8 PUBLIC generic_console_scrollup 9 PUBLIC generic_console_ioctl 10 PUBLIC generic_console_set_ink 11 PUBLIC generic_console_set_paper 12 PUBLIC generic_console_set_attribute 13 EXTERN generic_console_flags 14 15 EXTERN COLUMNS 16 EXTERN ROWS 17 18 EXTERN VIO_DISPLAY 19 20 defc COLUMNS = 80 21 defc ROWS = 24 22 23 INCLUDE "ioctl.def" 24 PUBLIC CLIB_GENCON_CAPS 25 defc CLIB_GENCON_CAPS = 0 26 27generic_console_ioctl: 28 scf 29generic_console_set_ink: 30generic_console_set_paper: 31generic_console_set_attribute: 32 ret 33 34generic_console_cls: 35 ld hl,VIO_DISPLAY 36 ld de,VIO_DISPLAY+1 37 ld bc,+(COLUMNS * ROWS) -1 38 ld (hl),32 39 ldir 40 ret 41 42 43; c = x 44; b = y 45; a = d = character to print 46; e = raw 47generic_console_printc: 48 call xypos ;Preserves a 49 ld (hl),a 50 ret 51 52;Entry: c = x, 53; b = y 54; e = rawmode 55;Exit: nc = success 56; a = character, 57; c = failure 58generic_console_vpeek: 59 call xypos 60 ld a,(hl) 61 and a 62 ret 63 64 65; b = row 66; c = column 67xypos: 68 ld l,b 69 ld h,0 70 add hl,hl ;*2 71 add hl,hl ;*4 72 add hl,hl ;*8 73 add hl,hl ;*16 74 ld e,l 75 ld d,h 76 add hl,hl ;*32 77 add hl,hl ;*64 78 add hl,de 79 ld b,+(VIO_DISPLAY / 256) 80 add hl,bc 81 ret 82 83 84generic_console_scrollup: 85 push de 86 push bc 87 ld hl, VIO_DISPLAY + COLUMNS 88 ld de, VIO_DISPLAY 89 ld bc,+ ((COLUMNS) * (ROWS-1)) 90 ldir 91 ex de,hl 92 ld b,COLUMNS 93generic_console_scrollup_3: 94 ld (hl),32 95 inc hl 96 djnz generic_console_scrollup_3 97 pop bc 98 pop de 99 ret 100 101 102 103 SECTION code_crt_init 104 ; Set the size of the console to this hardware 105 EXTERN __console_w 106 EXTERN __console_h 107 108 ld a,%00001100 ;Show characters 0 - 0xff, 80 columns, 24 rows 109 ld ($f7ff),a 110 ld a,80 111 ld (__console_w),a 112 ld a,24 113 ld (__console_h),a 114