当前位置: 首页 > news >正文

做网站标题代码/百度投放平台

做网站标题代码,百度投放平台,做网站推荐,做网站大优惠这里为了节省篇幅和csdn服务器的空间,我们只给出在七八之上改动的或者新建的源码文件的内容: 运行效果地址http://blog.csdn.net/ucan23/article/details/17066837点击打开链接 sheet.c /* filename: sheet.c* description: 对图层的管理* author: …

这里为了节省篇幅和csdn服务器的空间偷笑,我们只给出在七八之上改动的或者新建的源码文件的内容:

运行效果地址http://blog.csdn.net/ucan23/article/details/17066837点击打开链接

sheet.c

/* filename:    sheet.c* description: 对图层的管理* author:      Howard* date:        2013-12-01* version:     v1.0*/#include "bootpack.h"struct SHTCTL *shtctl_init(struct MEMMAN *memman, unsigned char *vram, int xsize, int ysize)
{struct SHTCTL *ctl;int i;ctl = (struct SHTCTL *) memman_alloc_4k(memman, sizeof (struct SHTCTL));if (0==ctl){goto err;}ctl->vram = vram;ctl->xsize = xsize;ctl->ysize = ysize;ctl->top = -1; /*一个sheet也没有*/for (i=0; i<MAX_SHEETS; i++){ctl->sheets0[i].flags = 0; /*标记为未使用*/}
err:return ctl;
}struct SHEET *sheet_alloc(struct SHTCTL *ctl)
{struct SHEET *sht;int i;for (i=0; i<MAX_SHEETS; i++){if (0==ctl->sheets0[i].flags){sht = &ctl->sheets0[i];sht->flags = SHEET_USE;sht->height = -1;return sht;}}return 0;
}void sheet_setbuf(struct SHEET *sht, unsigned char *buf, int xsize, int ysize, int col_inv)
{sht->buf = buf;sht->bxsize = xsize;sht->bysize = ysize;sht->col_inv = col_inv;return;
}void sheet_refreshsub(struct SHTCTL *ctl, int vx0, int vy0, int vx1, int vy1)
{int h, bx, by, vx, vy,bx0, by0, bx1, by1;unsigned char *buf, c, *vram = ctl->vram;struct SHEET *sht;for (h = 0; h <= ctl->top; h++) {sht = ctl->sheets[h];buf = sht->buf;bx0 = vx0 - sht->vx0;by0 = vy0 - sht->vy0;bx1 = vx1 - sht->vx0;by1 = vy1 - sht->vy0;if (bx0<0){bx0 = 0;}if (by0<0){by0 = 0;}if (bx1>sht->bxsize){bx1 = sht->bxsize;}if (by1>sht->bysize){by1 = sht->bysize;}for (by = by0; by < by1; by++) {vy = sht->vy0 + by;for (bx = bx0; bx < bx1; bx++) {vx = sht->vx0 + bx;c = buf[by * sht->bxsize + bx];if (c != sht->col_inv) {vram[vy * ctl->xsize + vx] = c;}}}}return;
}void sheet_updown(struct SHTCTL *ctl, struct SHEET *sht, int height)
{int h, old = sht->height;		/*存储设置前的高度信息*//*如果指定的高度过低则进行修正*/if (height>ctl->top+1){height = ctl->top + 1;}if (height<-1){height = -1;}sht->height = height; 	/*设置高度*//*sheets[]的重新排列*/if (old>height){if (height>=0){for (h = old; h>height;h--){ctl->sheets[h] = ctl->sheets[h-1];ctl->sheets[h]->height = h;}ctl->sheets[height] = sht;} else {if (ctl->top>old){for (h=old; h<ctl->top; h++){ctl->sheets[h] = ctl->sheets[h+1];ctl->sheets[h]->height = h;}}ctl->top --;}//sheet_refresh(ctl);sheet_refreshsub(ctl, sht->vx0, sht->vy0, sht->vx0 + sht->bxsize, sht->vy0 + sht->bysize);} else if (old<height){if (old>=0){for (h=old; h<height; h++){ctl->sheets[h] = ctl->sheets[h+1];ctl->sheets[h]->height = h;}ctl->sheets[height] = sht;} else {for (h=ctl->top; h>=height; h--){ctl->sheets[h+1] = ctl->sheets[h];ctl->sheets[h+1]->height = h + 1;}ctl->sheets[height] = sht;ctl->top ++;}//sheet_refresh(ctl);sheet_refreshsub(ctl, sht->vx0, sht->vy0, sht->vx0 + sht->bxsize, sht->vy0 + sht->bysize);}return;
}void sheet_refresh(struct SHTCTL *ctl, struct SHEET *sht, int bx0, int by0, int bx1, int by1)
{if (sht->height >= 0) { sheet_refreshsub(ctl, sht->vx0 + bx0, sht->vy0 + by0, sht->vx0 + bx1, sht->vy0 + by1);}return;
}
/*
void sheet_refresh(struct SHTCTL *ctl)
{int h, bx, by, vx, vy;unsigned char *buf, c, *vram = ctl->vram;struct SHEET *sht;for (h=0; h<=ctl->top; h++){sht = ctl->sheets[h];buf = sht->buf;for (by=0; by<sht->bysize; by++){vy = sht->vy0 + by;for (bx=0; bx<sht->bxsize; bx++){vx = sht->vx0 +bx;c = buf[by*sht->bxsize + bx];if (c!=sht->col_inv){vram[vy*ctl->xsize+vx] = c;}}}}return;
}
*/void sheet_slide(struct SHTCTL *ctl, struct SHEET *sht, int vx0, int vy0)
{int old_vx0 = sht->vx0, old_vy0 = sht->vy0;sht->vx0 = vx0;sht->vy0 = vy0;if (sht->height>=0){//sheet_refresh(ctl);sheet_refreshsub(ctl, old_vx0, old_vy0, old_vx0 + sht->bxsize, old_vy0 + sht->bysize);sheet_refreshsub(ctl, vx0, vy0, vx0 + sht->bxsize, vy0 + sht->bysize);}return;
}
void sheet_free(struct SHTCTL *ctl, struct SHEET *sht)
{if (sht->height>=0){sheet_updown(ctl, sht, -1);}sht->flags = 0;return;
}
memory.c

/* filename:    memory.c* description: 包含了有内存操作的相关函数* author:      Howard* date:        2013-12-01* version:     v1.0*/#include "bootpack.h"unsigned int memtest(unsigned int start, unsigned int end)
{char flg486 = 0;unsigned int eflg, cr0, i;eflg = io_load_eflags();eflg |= EFLAGS_AC_BIT;io_store_eflags(eflg);eflg = io_load_eflags();if (0!=(eflg & EFLAGS_AC_BIT)){flg486 = 1;}eflg &= -EFLAGS_AC_BIT;io_store_eflags(eflg);if (0!=flg486){cr0 = load_cr0();cr0 |= CR0_CACHE_DISABLE;store_cr0(cr0);}i = memtest_sub(start, end);if (0!=flg486){cr0 = load_cr0();cr0 &= ~CR0_CACHE_DISABLE;store_cr0(cr0);}return i;
}
/*unsigned int memtest_sub(unsigned int start, unsigned int end)
{unsigned int i, *p, old, pat0 = 0xaa55aa55, pat1 = 0x55aa55aa;for (i=start; i<=end; i+=0x1000){p = (unsigned int *) (i+0xffc);old = *p;*p = pat0;*p ^= 0xffffffff;if (*p != pat1){
not_memory:*p = old;break;}*p ^= 0xffffffff;if (*p != pat0){goto not_memory;}*p = old;}return i;
}*/void memman_init(struct MEMMAN *man)
{man->frees = 0;man->maxfrees = 0;man->lostsize = 0;man->losts = 0;return;
}
unsigned int memman_total(struct MEMMAN *man){unsigned int i, t = 0;for (i=0; i<man->frees; i++){t += man->free[i].size;}return t;
}
unsigned int memman_alloc(struct MEMMAN *man, unsigned int size)
{unsigned int i, a;for (i=0; i<man->frees; i++){if (man->free[i].size>=size){/*找到了足够大的内存*/a = man->free[i].addr;man->free[i].addr += size;man->free[i].size -= size;if (0==man->free[i].size){man->frees--;for (; i<man->frees; i++){man->free[i] = man->free[i+1];}}return a;}}return 0; /*没有可用的内存空间(内存分配失败)*/
}int memman_free(struct MEMMAN *man, unsigned int addr, unsigned int size)
{int i,j;/*为便于归纳内存,将free[]按照addr的顺序排列*//*所以先决定放在哪里*/for (i=0; i<man->frees; i++){if (man->free[i].addr > addr){break;}}/* free[i-1].addr<addr< free[i].addr*/if (i>0){if (man->free[i-1].addr + man->free[i-1].size == addr){man->free[i-1].size += size;if (i<man->frees){if (addr+size == man->free[i+1].addr){man->free[i-1].size += man->free[i].size;man->frees--;for (; i<man->frees; i++){man->free[i] = man->free[i+1];}}}return 0;}}/*不能与前面的可用内存归结在一起*/if (i<man->frees){if (addr+size == man->free[i].addr){/*可以与后面的合并在一起*/man->free[i].addr = addr;man->free[i].size += size;return 0;}}/*既不能跟前面的合并在一起也不能跟后面的合并在一起*/if (man->frees<MEMMAN_FREES){for (j=man->frees; j>i; j--){man->free[j] = man->free[j-1];}man->frees ++;if (man->maxfrees < man->frees){man->maxfrees = man->frees;}man->free[i].addr = addr;man->free[i].size = size;return 0;}man->losts ++;man->lostsize += size;return -1;
}unsigned int memman_alloc_4k(struct MEMMAN *man, unsigned int size)
{unsigned int a;size = (size + 0xfff) & (0xfffff000);a = memman_alloc(man, size);return a;
}int memman_free_4k(struct MEMMAN *man, unsigned int addr, unsigned int size)
{int i;size = (size + 0xfff) & (0xfffff000);i = memman_free(man, addr, size);return i;
}
bootpack.h

/* filename:    bootpack.h* description: 函数的声明与变量的定义* author:      Howard* date:        2013-11-28* version:     v1.0*//*ucan23.nas*/
struct BOOTINFO{char cyls;char leds;char vmode;char reserve;short scrnx;short scrny;char *vram;
};
#define ADR_BOOTINFO 	 0x00000ff0/*naskfunc.nas*/
/*告诉C编译器,有函数在别的文件里*/
void io_hlt(void);
void io_cli(void);
void io_sti(void);
void io_stihlt(void);
int io_in8(int port);
void io_out8(int port, int data);
int io_load_eflags(void);
void io_store_eflags(int eflags);
void write_mem8(int addr, int data);
void asm_inthandler21(void);
void asm_inthandler27(void);
void asm_inthandler2c(void);
void init_screen(char *vram, int xsize, int ysize);
void init_palette(void);
void set_palette(int start, int end, unsigned char *rgb); /*调色板函数*/
void boxfill8(unsigned char *vram, int xsize, unsigned char c, int x0, int y0, int x1, int y1);
void putfont8(char *vram, int xsize, int x, int y, char c, char *font);
void putfonts8_asc(char *vram, int xsize, int x, int y, char c, unsigned char *s);
void putblock8_8(char *vram, int vxsize, int pxsize,int pysize, int px0, int py0, char *buf, int bxsize);
void init_mouse_cursor8(char *mouse, char bc);
unsigned int memtest_sub(unsigned int start, unsigned int end);#define COL8_000000		0
#define COL8_FF0000		1
#define COL8_00FF00		2
#define COL8_FFFF00		3
#define COL8_0000FF		4
#define COL8_FF00FF		5
#define COL8_00FFFF		6
#define COL8_FFFFFF		7
#define COL8_C6C6C6		8
#define COL8_840000		9
#define COL8_008400		10
#define COL8_848400		11
#define COL8_000084		12
#define COL8_840084		13
#define COL8_008484		14
#define COL8_848484		15struct SEGMENT_DESCRIPTOR{short limit_low, base_low;char base_mid, access_right;char limit_high, base_high;
};struct GATE_DESCRIPTOR{short offset_low, selector;char dw_count, access_right;short offset_high;
};void init_gdtidt(void);
void set_segmdesc(struct SEGMENT_DESCRIPTOR *sd, unsigned int limit, int base, int ar);
void set_gatedesc(struct GATE_DESCRIPTOR *gd, int offset, int selector, int ar);
void load_gdtr(int limit, int addr);
void load_idtr(int limit, int addr);
#define ADR_IDT			0x0026f800
#define LIMIT_IDT		0x000007ff
#define ADR_GDT			0x00270000
#define LIMIT_GDT		0x0000ffff
#define ADR_BOTPAK		0x00280000
#define LIMIT_BOTPAK	0x0007ffff
#define AR_DATA32_RW	0x4092
#define AR_CODE32_ER	0x409a
#define AR_INTGATE32	0x008e/*int.c*/void init_pic(void);
void inthandler21(int *esp);
void inthandler2c(int *esp);
void inthandler27(int *esp);
#define  PIC0_ICW1				0x0020
#define  PIC0_OCW2				0x0020
#define  PIC0_IMR				0x0021
#define  PIC0_ICW2				0x0021
#define  PIC0_ICW3				0x0021
#define  PIC0_ICW4				0x0021
#define  PIC1_ICW1				0x00a0
#define  PIC1_OCW2				0x00a0
#define  PIC1_IMR				0x00a1
#define  PIC1_ICW2				0x00a1
#define  PIC1_ICW3				0x00a1
#define  PIC1_ICW4				0x00a1
#define PORT_KEYDAT				0x0060
#define PORT_KEYSTA				0x0064
#define PORT_KEYCMD				0x0064
#define KEYSTA_SEND_NOTREADY	0x02
#define KEYCMD_WRITE_MODE		0x60
#define KBC_MODE				0x47struct MOUSE_DEC {unsigned char buf[3], phase;int x, y, btn;
};/*存放鼠标解码数据的结构体*/void wait_KBC_sendready(void);
void init_keyboard(void);
#define KEYCMD_SENDTO_MOUSE 	0xd4
#define MOUSECMD_ENABLE			0xf4
void enable_mouse(struct MOUSE_DEC *mdec);
int mouse_decode(struct MOUSE_DEC *mdec, unsigned char dat);
/*struct KEYBUF{unsigned char data[32];int next_r, next_w, len;
};
*/
/*fifo.c*/struct FIFO8{unsigned char *buf;int p, q, size, free, flags;
};void fifo8_init(struct FIFO8 *fifo, int size, unsigned char *buf);
int fifo8_put(struct FIFO8 *fifo, unsigned char data);
int fifo8_get(struct FIFO8 *fifo);
int fifo8_status(struct FIFO8 *fifo);/*memory.c*/
#define EFLAGS_AC_BIT		0x00040000
#define CR0_CACHE_DISABLE	0x60000000
#define MEMMAN_FREES		4090		/*大约是32K*/
#define MEMMAN_ADDR			0x003c0000struct FREEINFO {unsigned int addr, size;
};struct MEMMAN {int frees, maxfrees, lostsize, losts;struct FREEINFO free[MEMMAN_FREES];
};
unsigned int memtest(unsigned int start, unsigned int end);
void memman_init(struct MEMMAN *man);
unsigned int memman_total(struct MEMMAN *man);
unsigned int memman_alloc(struct MEMMAN *man, unsigned int size);
int memman_free(struct MEMMAN *man, unsigned int addr, unsigned int size);
unsigned int memman_alloc_4k(struct MEMMAN *man, unsigned int size);
int memman_free_4k(struct MEMMAN *man, unsigned int addr, unsigned int size);/*sheet.c*/
#define MAX_SHEETS		256
#define SHEET_USE		1
struct SHEET {unsigned char *buf;int bxsize, bysize, vx0, vy0, col_inv, height, flags;
};struct SHTCTL{unsigned char *vram;int xsize, ysize, top;struct SHEET *sheets[MAX_SHEETS];struct SHEET sheets0[MAX_SHEETS];
};struct SHTCTL *shtctl_init(struct MEMMAN *memman, unsigned char *vram, int xsize, int ysize);
struct SHEET *sheet_alloc(struct SHTCTL *ctl);
void sheet_setbuf(struct SHEET *sht, unsigned char *buf, int xsize, int ysize, int col_inv);
void sheet_updown(struct SHTCTL *ctl, struct SHEET *sht, int height);
void sheet_refresh(struct SHTCTL *ctl, struct SHEET *sht, int bx0, int by0, int bx1, int by1);
void sheet_slide(struct SHTCTL *ctl, struct SHEET *sht, int vx0, int vy0);
void sheet_free(struct SHTCTL *ctl, struct SHEET *sht);
void sheet_refreshsub(struct SHTCTL *ctl, int vx0, int vy0, int vx1, int vy1);

Makefile只需修改下面的内容即可:

OBJS_BOOTPACK = bootpack.obj naskfunc.obj yezfont.obj graphic.obj dsctbl.obj \int.obj fifo.obj keyboard.obj mouse.obj memory.obj sheet.obj

naskfunc.nas

; naskfunc
; TAB=4[FORMAT "WCOFF"]				 
[INSTRSET "i486p"]				 
[BITS 32]						 
[FILE "naskfunc.nas"]			 GLOBAL	_io_hlt,_write_mem8GLOBAL	_io_cli, _io_sti, _io_stihltGLOBAL	_io_in8, _io_in16, _io_in32GLOBAL	_io_out8, _io_out16, _io_out32GLOBAL	_io_load_eflags, _io_store_eflagsGLOBAL	_load_gdtr, _load_idtrGLOBAL  _load_cr0, _store_cr0GLOBAL	_asm_inthandler21, _asm_inthandler27, _asm_inthandler2cGLOBAL	_memtest_subEXTERN	_inthandler21, _inthandler2c, _inthandler27[SECTION .text]_io_hlt:	; void io_hlt(void);HLTRET_write_mem8:	; void write_mem8(int addr, int data);MOV		ECX,[ESP+4]		;  MOV		AL,[ESP+8]		;  MOV		[ECX],ALRET_io_cli:	;void io_cli(void);CLIRET_io_sti:	;void io_sti(void);STIRET_io_stihlt:		;void io_stihlt(void);STIHLTRET_io_in8:			;int io_in8(int port);MOV		EDX, [ESP+4]	;portMOV		EAX, 0IN		AL, DXRET_io_in16:		;int io_in16(int port);MOV		EDX, [ESP+4]MOV		EAX, 0IN		AX, DXRET_io_in32:		;io_in32(int port);MOV		EDX, [ESP+4]IN		EAX, DXRET_io_out8:		;io_out8(int port, int data);MOV		EDX, [ESP+4] 	;PORTMOV		AL, [ESP+8]		;DATAOUT		DX, ALRET_io_out16:		;io_out16(int port, int data);MOV		EDX, [ESP+4]MOV		EAX, [ESP+8]OUT		DX, AX_io_out32:		;io_out32(int port, int data);MOV		EDX, [ESP+4]MOV		EAX, [ESP+8]OUT		DX, EAXRET_io_load_eflags:	;io_load_eflags(int eflags);PUSHFDPOP		EAXRET_io_store_eflags:	;io_store_eflags(int eflags);MOV		EAX, [ESP+4]PUSH	EAXPOPFDRET_load_gdtr:		;void load_gdtr(int limit, int addr);MOV		AX,[ESP+4]		;limitMOV 	[ESP+6], AXLGDT	[ESP+6]RET_load_idtr:		;void load_idtr(int limit, int addr);MOV		AX, [ESP+4]MOV		[ESP+6], AXLIDT	[ESP+6]RET_load_cr0:		;int load_cr0(void)MOV		EAX, CR0RET_store_cr0:		;void load_cr0(int cr0)MOV		EAX, [ESP+4]MOV		CR0, EAXRET_asm_inthandler21:PUSH	ESPUSH	DSPUSHADMOV		EAX, ESPPUSH 	EAXMOV		AX, SSMOV		DS, AXMOV		ES,	AXCALL	_inthandler21POP		EAXPOPADPOP		DSPOP		ESIRETD_asm_inthandler27:PUSH	ESPUSH	DSPUSHADMOV		EAX, ESP	PUSH	EAXMOV		AX, SSMOV		DS, AXMOV		ES, AXCALL	_inthandler27POP		EAXPOPADPOP		DSPOP		ESIRETD_asm_inthandler2c:PUSH	ESPUSH	DSPUSHADMOV		EAX, ESPPUSH	EAXMOV		AX, SSMOV		DS, AXMOV		ES, AXCALL	_inthandler2cPOP		EAXPOPADPOP		DSPOP		ESIRETD_memtest_sub:		; unsigned int memtest_sub(unsigned int start, unsigned int end);PUSH	EDIPUSH	ESIPUSH	EBXMOV		ESI, 0xaa55aa55MOV		EDI, 0x55aa55aaMOV		EAX, [ESP+12+4]
mts_loop:MOV		EBX, EAXADD		EBX, 0xffcMOV		EDX, [EBX]MOV		[EBX], ESIXOR		DWORD [EBX], 0xffffffffCMP		EDI, [EBX]JNE		mts_finXOR		DWORD [EBX], 0xffffffffCMP		ESI, [EBX]JNE		mts_finMOV		[EBX], EDXADD		EAX, 0x1000CMP		EAX, [ESP+12+8]JBE		mts_loopPOP		EBXPOP		ESIPOP		EDIRET
mts_fin:MOV		[EBX], EDXPOP		EBXPOP		ESIPOP		EDIRET

最后是我们的主函数所在的源文件:

/* filename:    bootpack.c* description: the UcanMain()file* author:      Howard* date:        2013-11-28* version:     v1.0*/#include <stdio.h>
#include "bootpack.h"extern struct FIFO8 keyfifo, mousefifo;void UcanMain(void)
{char *vram;char s[50], mcursor[256], keybuf[32], mousebuf[128];int mx, my;//鼠标的(x,y)int xsize, ysize;int i;unsigned int memtotal;struct MOUSE_DEC mdec; /*鼠标解码缩放的数据*/struct SHTCTL *shtctl;struct SHEET *sht_back, *sht_mouse;unsigned char *buf_back, buf_mouse[256];struct MEMMAN *memman = (struct MEMMAN *) MEMMAN_ADDR;struct BOOTINFO *binfo = (struct BOOTINFO *) 0x0ff0;init_gdtidt();init_pic();io_sti();fifo8_init(&keyfifo, 32, keybuf);fifo8_init(&mousefifo, 128, mousebuf);io_out8(PIC0_IMR, 0xf9);io_out8(PIC1_IMR, 0xef);init_keyboard();enable_mouse(&mdec);memtotal = memtest(0x00400000, 0xbfffffff);memman_init(memman);memman_free(memman, 0x00001000, 0x0009e000);memman_free(memman, 0x00400000, memtotal - 0x00400000);init_palette();shtctl = shtctl_init(memman, binfo->vram, binfo->scrnx, binfo->scrny);sht_back = sheet_alloc(shtctl);sht_mouse = sheet_alloc(shtctl);buf_back = (unsigned char *)memman_alloc_4k(memman, binfo->scrnx*binfo->scrny);sheet_setbuf(sht_back, buf_back, binfo->scrnx, binfo->scrny, -1);sheet_setbuf(sht_mouse, buf_mouse, 16, 16, 99);//init_screen(binfo->vram, binfo->scrnx, binfo->scrny);init_screen(buf_back, binfo->scrnx, binfo->scrny);init_mouse_cursor8(buf_mouse, 99);sheet_slide(shtctl, sht_back, 0, 0);//init_mouse_cursor8(mcursor, 99);xsize = (*binfo).scrnx;ysize = (*binfo).scrny;vram = (*binfo).vram;mx = (binfo->scrnx-16) / 2;my = (binfo->scrny-28-16) /2;sheet_slide(shtctl, sht_mouse, mx, my);sheet_updown(shtctl, sht_back,  0);sheet_updown(shtctl, sht_mouse, 1);//putblock8_8(buf_back, binfo->scrnx, 16, 16, mx, my, buf_mouse, 16);putfonts8_asc(buf_back, binfo->scrnx, 8, 8, COL8_FFFFFF, "Hello, world!");putfonts8_asc(buf_back, binfo->scrnx, 31, 31, COL8_000000, "Ucan23-OS");putfonts8_asc(buf_back, binfo->scrnx, 30, 30, COL8_FFFFFF, "Ucan23-OS");sprintf(s, "scrnx = %d", binfo->scrnx);putfonts8_asc(buf_back, binfo->scrnx, 16, 64, COL8_FFFFFF, s);sprintf(s, "(%d, %d)", mx, my);putfonts8_asc(buf_back, binfo->scrnx, mx+16, my+16, COL8_FFFFFF, s);//io_out8(PIC0_IMR, 0xf9);//io_out8(PIC1_IMR, 0xef);sprintf(s, "Memory %dMB  free: %dKB", memtotal/(1024*1024), memman_total(memman)/1024);putfonts8_asc(buf_back, binfo->scrnx, 0, 136, COL8_FFFFFF, s);sheet_refresh(shtctl, sht_back, 0, 0, binfo->scrnx, binfo->scrny);for (;;){io_cli();    /*执行nashfunc.nas里的_io_hlt*/if (0==(fifo8_status(&keyfifo)+fifo8_status(&mousefifo))){io_stihlt();} else {if (0!=fifo8_status(&keyfifo)){i = fifo8_get(&keyfifo);io_sti();sprintf(s, "%02X", i);boxfill8(buf_back, binfo->scrnx, COL8_000000, 0, 120, 15, 135);putfonts8_asc(buf_back, binfo->scrnx, 0, 120, COL8_FFFFFF, s);sheet_refresh(shtctl,sht_back, 0, 120, 15*8, 136);} else if (0!=fifo8_status(&mousefifo)){i = fifo8_get(&mousefifo);io_sti();if (0 != mouse_decode(&mdec, i)){					sprintf(s, "[lcr %4d %4d]", mdec.x, mdec.y);if ((mdec.btn & 0x01)!=0){s[1] = 'L';}if ((mdec.btn & 0x02)!=0){s[3] = 'R';}if ((mdec.btn & 0x04)!=0){s[2] = 'C';}boxfill8(buf_back, binfo->scrnx, COL8_008484, 32, 120, 32+15*8-1,135);putfonts8_asc(buf_back, binfo->scrnx, 32, 120, COL8_FFFFFF, s);sheet_refresh(shtctl, sht_back, 32, 120, 32+15*8, 136);/*鼠标指针的移动*///boxfill8(buf_back, binfo->scrnx, COL8_008484, mx, my, mx+15, my+15);/*隐藏鼠标*/mx += mdec.x;my += mdec.y;if (mx<0){mx = 0;}if (my<0){my = 0;}if (mx>binfo->scrnx-16){mx = binfo->scrnx-16;}if (my>binfo->scrny-16){my = binfo->scrny-16;}sprintf(s, "(%3d, %3d)", mx, my);boxfill8(buf_back, binfo->scrnx, COL8_008484,binfo->scrnx-100,120,binfo->scrnx , 136);putfonts8_asc(buf_back, binfo->scrnx, binfo->scrnx-100, 120, COL8_FFFFFF,s);sheet_refresh(shtctl, sht_back, binfo->scrnx-100, 120, binfo->scrnx, 136);//putblock8_8(binfo->vram,binfo->scrnx, 16, 16, mx, my, mcursor, 16);sheet_slide(shtctl, sht_mouse, mx, my);}}		}}
}




http://www.lbrq.cn/news/731665.html

相关文章:

  • 织梦做的网站后台/可以引流推广的app
  • 专业做公司宣传网站的/营销云
  • 广州市红十字会医院网站建设项目/成人职业培训机构
  • 做网站的你选题的缘由是什么/公司网络搭建
  • 龙口网站建设/百度世界500强排名
  • 孝感个人网站建设/全球搜
  • 苏州市建设中心网站首页/宁波seo入门教程
  • 微信如何添加小程序/seo推广费用需要多少
  • 广东网站备案查询/百度招商加盟推广
  • 网站服务器和网站备案/网页优化公司
  • 黑色炫酷灯饰照明科技企业商务网站模板/百度站长工具域名查询
  • 西安市高新区建设局网站/如何制作微信小程序
  • 某企业网站建设规划书/昆明网站seo优化
  • 做网站备案的问题/信息流优化师怎么入行
  • 凡客诚品售后/郑州官网网站优化公司
  • 重庆网站推广营销/网站开发框架
  • 优秀个人网站推荐/营销推广是什么意思
  • 可以做营销任务的网站/阿里数据
  • 个人备案转企业网站期间/武汉seo首页优化报价
  • 专业彩票网站开发/西安百度公司官网
  • 哪里有网站制作平台/seo如何优化关键词
  • 郑州网站建设公司qq/网站优化排名软件哪些最好
  • 1网站建设/企业网站建设费用
  • 建设部职称网站/谷歌seo零基础教程
  • 佛山出格建站/百度seo排名点击器
  • 购物网站开发需求分析/在线客服系统平台有哪些
  • 临朐网站建设价格/在百度上怎么注册网站
  • 高端网站建设企业/网站联盟推广
  • 东莞网站建设牛魔网a/广东省最新疫情
  • 河北软件开发网站建设/朋友圈广告
  • 彩笔运维勇闯机器学习--最小二乘法的数学推导
  • VASPKIT模版INCAR笔记
  • Effective C++ 条款54:熟悉标准库
  • C ++代码学习笔记(一)
  • 粗粮厂的基于flink的汽车实时数仓解决方案
  • Django的生命周期