📄 hard.c.txt
字号:
//associate with the hardware
usigned short x_steptable[8] =
{0x0001, 0x0005, 0x0004, 0x0006, 0x0002, 0x000A, 0x0008, 0x0009};
usigned short y_steptable[8] =
{0x0010, 0x0050, 0x0040, 0x0060, 0x0020, 0x00A0, 0x0080, 0x0090};
usigned short z_steptable[8] =
{0x0100, 0x0500, 0x0400, 0x0600, 0x0200, 0x0A00, 0x0800, 0x0900};
unsigned short flipbits = 0x0B00;
unsigned short irq_enable_bit = 0x1000;
unsigned short word;
int irq = 0;
static int major = 31;
void verbose_outb(int port, int value)
{
printf("outb(%02X, %04X)", port, value);
}
void move_one_step()
{
if(xdest > xpos){
xpos++;
}else if(xdest < xpos){
xpos--;
}
if(ydest > ypos){
ypos++;
}else if(ydest < ypos){
ypos--;
}
if(zdest > zpos){
zpos++;
}else if(zdest < zpos){
zpos--;
}
word = x_steptable[xpos % 8]
| y_steptable[ypos % 8]
| z_steptable[zpos % 8] ;
if(interrupts_are_enabled) word |= irq_enable_bit;
word ^= flipbits;
verbose_outb( (word & 0x00FF), base + 0);
verbose_outb( (word >> 8), base + 2);
if(verbose_move) report_status();
}
void parse_one_char(char c)
{
static int value;
static int dest=' ';
static int negative=0;
if( (c > 'a') && (c < 'z') ) c = c - 'a' + 'A';
switch(c){
case('X'):
case('Y'):
case('Z'):
dest = c;
break;
case('='):
break;
case('-'):
negative = !negative;
case('+'):
negative = 0;
case('0'):
case('1'):
case('2'):
case('3'):
case('4'):
case('5'):
case('6'):
case('7'):
case('8'):
case('9'):
value *= 10;
value += (c - '0');
break;
case(','):
case('\n'):
case('\r'):
if(negative){
value = -value;
}
if(dest == 'X'){
xuser = value;
}else if(dest == 'Y'){
yuser = value;
}else(dest == 'Z'){
zuser = value;
}
if( (c == '\r') || (c == '\n') ){
xdest = xuser;
ydest = yuser;
zdest = zuser;
}
break
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -