Beispiel #1
0
//========================================================
//显示汉字
//========================================================
void putstring(char a,char b,char *n)   //汉字
{
		idata char i,*p;
		printu(n);
		while(*n!=0)
		{
		
				p=q+12*(*n-32);
				setpage(a+1);
				setaddr(b);
				for(i=0;i<6;i++)
				{x(*p);
				p++;}
				setpage(a);
				setaddr(b);
				for(i=6;i<12;i++)
				{x(*p);
				p++;}
				
				
				b = b+7;
				if((b + 7) > 127)
				{
				b = 0;
				if(a < 2 ) break;
				else a -= 2;
				}
				
				n++;
		}

}
Beispiel #2
0
int do_delete(off_t n, PTR start)
{
    if(n + start > maxpos) {
        beep();
        return 1;
    }
    if((undo_count = alloc_buf(n, &undo_buf)) == 0L) {
        return 1;
    }
    yanked = alloc_buf(n, &yank_buf);
    edits = U_DELETE;
    undo_start = start;
    memcpy(undo_buf, start, undo_count);
    memcpy(yank_buf, start, undo_count);
    memmove(start, start + undo_count, maxpos - (start + undo_count));
    filesize -= undo_count;
    maxpos -= undo_count;
    if(start == maxpos && start > mem) {
        start--;
        cur_back();
    }
    setpage(start);
    repaint();
    return 0;
}
Beispiel #3
0
int addfile(char *fname)
{
    int fd;
    off_t oldsize;
    if(stat(fname, &buf)) {
        sysemsg(fname);
        return 1;
    }
    if((fd = open(fname, O_RDONLY)) == -1) {
        sysemsg(fname);
        return 1;
    }
    oldsize = filesize;
    if(enlarge(buf.st_size)) {
        return 1;
    }
    if(read(fd, mem + filesize, buf.st_size) == -1) {
        sysemsg(fname);
        return 1;
    }
    filesize += buf.st_size;
    maxpos = mem + filesize;
    close(fd);
    setpage(mem + oldsize);
    return 0;
}
Beispiel #4
0
void fillpage(unsigned page)
{
    register unsigned *x=(void*)0xa000;
    unsigned i;
    setpage(page);
    for(i=0;i<4096;i++)
        x[i]=i*i+0x4221+i;
}
Beispiel #5
0
int dlgscr_cmd(int msg, MENUID id, long param) {

	switch(msg) {
		case DLGMSG_CREATE:
			dlginit();
			break;

		case DLGMSG_COMMAND:
			switch(id) {
				case DID_OK:
					dlgupdate();
					menubase_close();
					break;

				case DID_CANCEL:
					menubase_close();
					break;

				case DID_TAB:
					setpage(menudlg_getval(DID_TAB));
					break;

				case DID_LCD:
					menudlg_setenable(DID_LCDX, menudlg_getval(DID_LCD));
					break;

				case DID_SKIPLIGHT:
					setintstr(DID_LIGHTSTR, menudlg_getval(DID_SKIPLIGHT));
					break;

				case DID_TRAMWAIT:
					setintstr(DID_TRAMSTR, menudlg_getval(DID_TRAMWAIT));
					break;

				case DID_VRAMWAIT:
					setintstr(DID_VRAMSTR, menudlg_getval(DID_VRAMWAIT));
					break;

				case DID_GRCGWAIT:
					setintstr(DID_GRCGSTR, menudlg_getval(DID_GRCGWAIT));
					break;

				case DID_REALPAL:
					setintstr(DID_REALPALSTR,
											menudlg_getval(DID_REALPAL) - 32);
					break;
			}
			break;

		case DLGMSG_CLOSE:
			menubase_close();
			break;
	}
	(void)param;
	return(0);
}
Beispiel #6
0
void checkpage(byte line,unsigned page)
{
    register unsigned *x=(void*)0xa000;
    unsigned i;
    setpage(page);
    for(i=0;i<4096;i++)
    {
        if(x[i]!=i*i+0x4221+i)
        {
            ozputs(0,line,"Error in readback!");
            return;
        }
    }
    ozputs(0,line,"OK!");
}
Beispiel #7
0
//========================================================
//清屏子函数     fill ROM with 0 or 1
//========================================================
void ClearScreen( int a)
{
		idata int z1,z2;
		if(a!=0) a=0xff;
		for(z1=0;z1<8;z1++)
		{
				setpage(z1);
				setaddr(0);
				for(z2=0;z2<128;z2++)
				{
				LCD_IO_DATA =a;
				senddata();
				}
		}
}
Beispiel #8
0
void do_back(off_t n, PTR start)
{
    if(start - n < mem) {
        beep();
        return;
    }
    if((undo_count = alloc_buf(n, &undo_buf)) == 0L) {
        return;
    }
    yanked = alloc_buf(n, &yank_buf);
    edits = U_BACK;
    undo_start = start - n;
    memcpy(undo_buf, start - undo_count, undo_count);
    memcpy(yank_buf, start - undo_count, undo_count);
    memmove(start - undo_count, start, maxpos - start);
    filesize -= undo_count;
    maxpos -= undo_count;
    setpage(start - undo_count);
    repaint();
}
Beispiel #9
0
static void dlginit(void) {

	UINT		i;
const TABLISTS	*tl;

	menudlg_appends(res_scr0, NELEMENTS(res_scr0));
	tl = tablist;
	for (i=0; i<NELEMENTS(tablist); i++, tl++) {
		menudlg_setpage((MENUID)(i + 1));
		menudlg_itemappend(DID_TAB, (OEMCHAR *)tl->tab);
		menudlg_appends(tl->prm, tl->count);
	}

	menudlg_setval(DID_LCD, np2cfg.LCD_MODE & 1);
	menudlg_setenable(DID_LCDX, np2cfg.LCD_MODE & 1);
	menudlg_setval(DID_LCDX, np2cfg.LCD_MODE & 2);
	menudlg_setval(DID_SKIPLINE, np2cfg.skipline);
	menudlg_setval(DID_SKIPLIGHT, np2cfg.skiplight);
	setintstr(DID_LIGHTSTR, np2cfg.skiplight);

	if (!np2cfg.uPD72020) {
		menudlg_setval(DID_GDC7220, TRUE);
	}
	else {
		menudlg_setval(DID_GDC72020, TRUE);
	}
	menudlg_setval(gdcchip[np2cfg.grcg & 3], TRUE);
	menudlg_setval(DID_PC980124, np2cfg.color16);

	menudlg_setval(DID_TRAMWAIT, np2cfg.wait[0]);
	setintstr(DID_TRAMSTR, np2cfg.wait[0]);
	menudlg_setval(DID_VRAMWAIT, np2cfg.wait[2]);
	setintstr(DID_VRAMSTR, np2cfg.wait[2]);
	menudlg_setval(DID_GRCGWAIT, np2cfg.wait[4]);
	setintstr(DID_GRCGSTR, np2cfg.wait[4]);
	menudlg_setval(DID_REALPAL, np2cfg.realpal);
	setintstr(DID_REALPALSTR, np2cfg.realpal - 32);

	menudlg_setval(DID_TAB, 0);
	setpage(0);
}
Beispiel #10
0
int main(void)

{ 
	USART_Init(103);
	DDRD=0xff;
	DDRE=0xff;
	GLCD_Init128();	
	picture(&sportronix[0]);
	_delay_ms(2500);
	clrlcd();
	sei();
	
	while(ext==0)
	{
	
	lcdputs2(16,3,ar7);		
	setcolumn(40);
	setpage(4);
	
	for(int k=0;((k<10));k++)
	{
	
	if(teama[k]!='0')
	{
	lcdsim_chardata((40+(k*8)),4,teama[k]);
	}
	else {lcd_bs(6);}
	}
	}
	
	
	clrlcd();
	_delay_ms(10);
	while(ext==1)
	{
	lcdputs2(16,3,ar8);		
	setcolumn(40);
	setpage(4);

	for(int k=0;((k<10));k++)	//&(teamb[k]!='0')
	{
	if(teamb[k]!='0')
	{lcdsim_chardata((40+(k*8)),4,teamb[k]);}
	else {lcd_bs(6);}
	}
	}
	
	clrlcd();
	setcolumn(40);
	setpage(4);
	for(int k=0;((k<10));k++)
	{
	if(teama[k]!='0')
	{
	lcdsim_chardata((40+(k*8)),4,teama[k]);
	}
	else {lcd_bs(6);}
	}
	
	
	{
	clrlcd();
	//lcdputs2(33,0,ar0); since score mate is not needed, 
	setcolumn(16);
	setpage(1);
	for(int k=0;((k<10));k++)
	{
	if(teama[k]!='0')
	{
	lcdsim_chardata((40+(k*8)),4,teama[k]);
	USART_Transmit(teama[k]);
	}
	else {lcd_bs(6);}
	}
	
	USART_Transmit(0x38);
	setcolumn(80);
	setpage(1);
	for(int k=0;((k<10));k++)
	{
	if(teamb[k]!='0')
	{
	lcdsim_chardata((40+(k*8)),4,teamb[k]);
	}
	else {lcd_bs(6);}
	}
	
	
	lcdputs2(46,2,ar3);		//score
	
	lcdputs2(5,6,ar4);
	lcdputs2(110,6,ar4);		//FOUL
	lcdputs2(58,6,ar6);
	}
	

	while(1)
	{
	 lcdnumdata(25,3,AS);
	 lcdnumdata(85,3,BS);
	 lcdnumdata(55,7,QT);
	 lcdnumdata(5,7,AF);
	 lcdnumdata(110,7,BF);
	 
	 _a =  key_press();
	 if( _a = 0)
	 {}
	 
	 if( _a = 1)
	 {}
	 
	 if( _a = 2)
	 {}
	 
	 
	 

 }
}
Beispiel #11
0
/* mode: ('A') append
 *       ('R') replace one or more different characters
 *       ('r') replace 1 character
 *       ('i') insert characters
 *       ('a') insert after cursor
 * a precount can be used
 *
 * for insert and append we misuse the undo buffer for the inserted
 * characters (for "." command)
 */
off_t edit(int mode)
{
    int ch, ch1;
    size_t len;
    off_t count = 0L;
    off_t buffer = BUFFER;
    off_t psize;
    if(!filesize && mode == 'i') {
        mode = 'A';
    }
    if(mode != 'A' && mode != 'a') {
        if(current - mem >= filesize) {
            beep();
            return 0L;
        }
    }
    if(precount < 1) {
        precount = 1;
    }
    len = strlen(rep_buf);
    if(mode == 'r' && current + precount > maxpos) {
        beep();
        rep_buf[len] = '\0';
        return 0L;
    }
    if(alloc_buf(buffer, &undo_buf) == 0L) {
        rep_buf[len] = '\0';
        return 0L;
    }
    switch(mode) {
        case 'A':
            edits = U_APPEND;
            break;
        case 'R':
            edits = U_EDIT;
            smsg("REPLACE MODE");
            break;
        case 'r':
            edits = U_EDIT;
            smsg("REPLACE 1 CHAR");
            break;
        case 'a':
        case 'i':
            edits = U_INSERT;
            smsg("INSERT MODE");
            break;
    }
    undo_start = current;
    while((ch = vgetc()) != ESC) {
        ch &= 0xff;
        rep_buf[len++] = ch;
        if(ch == '\t') {
            toggle();
            setcur();
            continue;
        }
        if(ch == KEY_BACKSPACE || ch == ASCII_DEL || ch == BVICTRL('H')) {
            if(count > 0) {
                len--;
                count--;
                if(mode == 'A' || mode == 'a' || mode == 'i') {
                    filesize--;
                    maxpos--;
                }
                current--;
                cur_back();
                setcur();
            } else {
                beep();
            }
            continue;
        }
        if(loc == HEX) {
            if(isxdigit(ch)) {
                mvaddch(y, x + 1, ' ');
                mvaddch(y, x, ch);
                do {
                    ch1 = vgetc() & 0xff;
                    if(ch1 == ESC) {
                        mvaddch(y, x, ' ');
                        current--;
                        cur_back();
                        goto escape;
                    }
                    if(!isxdigit(ch1)) {
                        beep();
                        ch1 = -1;
                    }
                } while(ch1 == -1);
                rep_buf[len++] = ch1;
                mvaddch(y, x + 1, ch1);
                sprintf(tmpbuf, "%c%c", ch, ch1);
                sscanf(tmpbuf, "%2x", &ch);
            } else {
                beep();
                len--;
                goto wrong;
            }
        } else {            /*** ASCII - Bereich ***/
            if(isprint(ch)) {
                mvaddch(y, x, ch);
            } else {
                beep();
                goto wrong;
            }
        }
        curpos = current++;
        if(mode == 'i' || mode == 'a') {
            memmove(current, curpos, maxpos - curpos);
        }
        if(mode == 'A' || mode == 'i' || mode == 'a') {
            maxpos++;
            filesize++;
            /* NEU
            undo_buf[count++] = ch;
            */
            count++;
        } else {
            undo_buf[count++] = *curpos;
        }
        if(count == buffer) {
            buffer += BUFFER;
            if(alloc_buf(buffer, &undo_buf) == 0L) {
                rep_buf[len] = '\0';
                return count;
            }
        }
        *curpos = (char)ch;
        cur_forw(0);
        statpos();
        if(mode == 'i' || mode == 'a') {
            repaint();
        } else {
            lineout();
        }
        setcur();
        if(filesize > memsize - 2L) {
            if(enlarge(100L)) {
                break;
            }
        }
        if((mode != 'A' && mode != 'a') && curpos == maxpos - 1) {
            break;
        }
        if(mode == 'r') {
            break;
        }
wrong:
        continue;
    }
    rep_buf[len++] = ESC;
    rep_buf[len] = '\0';
    if(!count) {
        goto escape;
    }
    if(precount > 1) {
        switch(mode) {
            case 'i':
            case 'a':
            case 'A':
                psize = count * (precount - 1);
                if(filesize + psize > memsize - 2L) {
                    if(enlarge(psize + 100L)) {
                        return count;
                    }
                }
                if(psize + count > buffer) {
                    if(alloc_buf(psize + count, &undo_buf) == 0L) {
                        return count;
                    }
                }
                if(mode == 'i' || mode == 'a') {
                    memmove(current + psize, current, maxpos - curpos);
                }
                /* NEU
                undo_pos = undo_buf + count - 1L;
                */
                while(--precount) {
                    /* NEU
                    memcpy(undo_pos + 1L, undo_pos - count + 1L, count);
                    undo_pos += count;
                    */
                    memcpy(curpos + 1L, curpos - count + 1L, count);
                    curpos += count;
                }
                filesize += psize;
                count += psize;
                maxpos += psize;
                undo_count += psize;
                current = curpos + 1L;
                setpage(current);
                repaint();
                break;
            case 'R':
                if(current + count * (precount - 1) > maxpos) {
                    break;
                }
                psize = count;
                while(--precount) {
                    memcpy(undo_buf + psize, curpos + 1L, count);
                    psize += count;
                    memcpy(curpos + 1L, curpos - count + 1L, count);
                    curpos += count;
                }
                count = psize;
                setpage(++curpos);
                repaint();
                break;
            case 'r':
                while(--precount) {
                    undo_buf[count++] = *(++curpos);
                    *curpos = (char)ch;
                    cur_forw(0);
                    statpos();
                    lineout();
                }
                break;
        }
    }
    cur_back();
escape:
    setcur();
    smsg("");
    return(count);
}
Beispiel #12
0
/* Do the f, F, t or T command
 * If flag == 1 save the character in rep_buf
 * else setpage()
 */
PTR do_ft(int ch, int flag)
{
    static int chi;
    static int chp = 1;
    int dir;
    size_t n;
    PTR ptr;
    switch(ch) {
//        case 1:        
//            beep();
//            return NULL;                     
//        case -1:    
//            if (chp == 'f' || chp == 't') {
//                dir = BACKWARD;
//            } else {
//                dir = FORWARD;
//            }
//            break;
//        case 0:        
//            if (chp == 'f' || chp == 't') {
//                dir = FORWARD;
//            } else { 
//                dir = BACKWARD;
//            }
//            break;
        case -1:
            if(chp == 1) {
                beep();
                return NULL;
            }
            if(chp == 'f' || chp == 't') {
                dir = BACKWARD;
            } else {
                dir = FORWARD;
            }
            break;
        case 0:
            if(chp == 1) {
                beep();
                return NULL;
            }
            if(chp == 'f' || chp == 't') {
                dir = FORWARD;
            } else {
                dir = BACKWARD;
            }
            break;
        default:
            chp = ch;
            if(chp == 'f' || chp == 't') {
                dir = FORWARD;
            } else {
                dir = BACKWARD;
            }
            chi = vgetc();
            if(flag) {
                n = strlen(rep_buf);
                rep_buf[n++] = chi;
                rep_buf[n] = '\0';
            }
    }
    ptr = current;
    do {
        if(dir == FORWARD) {
            do {
                ptr++;
                if(ptr > maxpos) {
                    break;
                }
            } while(*ptr != chi);
            if(ptr > maxpos) {
                break;
            }
        } else {
            do {
                ptr--;
                if(ptr < mem) {
                    break;
                }
            } while(*ptr != chi);
            if(ptr < mem) {
                break;
            }
        }
    } while(--precount > 0);
    /*
    if (*ptr == chi) {
    */
    if(ptr >= mem && ptr <= maxpos) {
        if(loc == HEX) {
            toggle();
        }
        if(chp == 't') {
            ptr--;
        }
        if(chp == 'T') {
            ptr++;
        }
        if(!flag) {
            setpage(ptr);
        }
        return(ptr);
    }
    beep();
    return NULL;
}
Beispiel #13
0
int main(void)
{

	USART_Init(103);
	TIMSK=(1<<TOIE1); // enabled global and timer overflow interrupt;
	TCNT1=0xBDB; // set initial value to remove time error (16bit counter register)
	TCCR1B = (1<<CS12)|(0<<CS11)|(0<<CS10); // start timer/ set clock
	DDRA=0x0F;
	PORTA=0X0F;
	DDRC=0xFF;
	PORTC=0xFF;
	DDRB=0x00;
	DDRD=0xFF;
	
	GLCD_Init128();	
	picture(&sportronix[0]);
	sei();
	
	
	while(1)
	{
		_av=keypad_4keys();
		
		// get into this loop only when the home button is pressed, also clear the existing team names since there s no option for backspace		
		
		if(menu == 3)
		{
		 USART_RxIntEN();
		 lcdputs2(46,2,ar3);		//score 
	     lcdputs2(5,6,ar4);
	     lcdputs2(110,6,ar4);		//FOUL
	     lcdputs2(58,6,ar6);
	     
	     lcdnumdata(25,3,AS);
	     lcdnumdata(85,3,BS);
	     lcdnumdata(55,7,QT);
	     lcdnumdata(5,7,AF);
	     lcdnumdata(110,7,BF);
		  menu++;
		}
		else if(menu == 1)
		{
			// for displaying teama name
			lcdputs2(16,3,ar7);		
			setcolumn(40);
			setpage(4);
			 
			for(int k=0;((k<6));k++)
			{
				if(teama[k]!=0x01)
				{
					lcdsim_chardata((40+(k*8)),4,teama[k]);
				}
				else
				{
					lcd_bs(6);
				}
			}
		}		
		else if(menu == 2)  // for displaying teamb name
		{
			lcdputs2(16,3,ar8);		
			setcolumn(40);
			setpage(4);
         
			for(int k=0;((k<6));k++)	//&(teamb[k]!=0x01)
			{
				if(teamb[k]!=0x01)
				{
					lcdsim_chardata((40+(k*8)),4,teamb[k]);
				}
				else
				{
					lcd_bs(6);
				}
			}
		}
		
		
		
		// now analyze the team names and put them into a PROPER array format.
		
		
		if(_av==2) // home button
		{
			//_ch=0;
			menu++;
			sendNB(); // Send the data to main board
			if(menu!=0)
			{
				clrlcd();
				_delay_ms(5);
			}
			if(menu>3)
			{
				menu=1;			// exit out of the menu and capture the team names
				_ch=0;
				USART_RxIntDE();
			}
			//USART_Transmit(2);
		}
		else if((_av == 0)&(menu == 1)) // buzzer USART_Transmit(0);
		{
			if(indexA>=0)
			{
				indexA--;
				if(indexA<0)
				{
					indexA=0;
				}
				teama[indexA]=0x01;
			}
		}	
		else if((_av == 0)&(menu == 2))	// buzzer USART_Transmit(0);
		{
			if(indexB>=0)
			{
				indexB--;
				if(indexB<0)
				{
					indexB=0;
				}
				teamb[indexB]=0x01;
			}
		}	
		else if((_av==1) & (menu == 1))   // A-Z
		{
			if(o_sec==1)
			{
				_ch=0;
			}
			 
			if(_ch<0)
			{
			    _ch=37;
			}	
            if(_ch>37)
			{
			    _ch=0;
			}
			 
			km = keymap[_ch];
			_ch++;
			if(o_sec==0)
			{
				if(indexA>0)
				{
					indexA--; 
					if(indexA<0)
					{
						indexA=0;
					}
				}
			}
			 
			teama[indexA]=(km);
			 
			indexA++;
			if(indexA>=6)
			{
			  indexA=6;
			}
			//USART_Transmit(1);
			
			t1_rst();
		}
		else if((_av == 1) & (menu == 2))   // A-Z
		{
			if(o_sec==1)
			{
				_ch=0;
			}
			 
			if(_ch<0)
			{
			    _ch=37;
			}	
            if(_ch>37)
			{
			    _ch=0;
			}
			 
			km = keymap[_ch];
			_ch++;
			if(o_sec==0)
			{
				if(indexB>0)
				{
					indexB--; 
					if(indexB<0)
					{
						indexB=0;
					}
				}
			}
			 
			teamb[indexB]=(km);	
           		
			indexB++;
			if(indexB>=6)
			{
			  indexB=6;
			}
			//USART_Transmit(1);
			
			t1_rst();
		}
		else if((_av == 3) & (menu == 1))		// Z-A
		{
			//USART_Transmit(3);
			if(o_sec==1)
			{
				_ch=0;
			}
			
			_ch--;
			if(_ch<0)
			{
			    _ch=37;
			}
			 
			if(_ch<0)
			{
			    _ch=37;
			}	
            if(_ch>37)
			{
			    _ch=0;
			}
			km = keymap[_ch];
			 
			if(o_sec==0)
			{
				if(indexA>0)
				{
					indexA--; 
					if(indexA<0)
					{
						indexA=0;
					}
				}
			}
			 
			teama[indexA]=(km);
			 
			indexA++;
			if(indexA>=6)
			{
			  indexA=6;
			}
			//USART_Transmit(1);
			t1_rst();
		}
		else if((_av == 3) & (menu == 2))		// Z-A
		{
			//USART_Transmit(3);
			if(o_sec==1)
			{
				_ch=0;
			}
			
			_ch--;
			if(_ch<0)
			{
			    _ch=37;
			}
			 
			if(_ch<0)
			{
			    _ch=37;
			}	
            if(_ch>37)
			{
			    _ch=0;
			}
			km = keymap[_ch];
			 
			if(o_sec==0)
			{
				if(indexB>0)
				{
					indexB--; 
					if(indexB<0)
					{
						indexB=0;
					}
				}
			}
			 
			teamb[indexB]=(km);
			 
			indexB++;
			if(indexB>=6)
			{
			  indexB=6;
			}
			//USART_Transmit(1);
			
			t1_rst();
		}
		
	}
}