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