📄 hard.c
字号:
//associate with the hardware
#include "step.h"
#include "hard.h"
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};
#define Flipbits = 0x0B00;
#define Short irq_enable_bit = 0x1000;
unsigned short word;
static int base = 0x378;
extern int xdest;
extern int ydest;
extern int zdest;
extern int xpos;
extern int ypos;
extern int zpos;
void verbose_outb(int port, int value)
{
printk("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 disableirq()
{ //disable irq on card
word &= ~Irq_enable_bit;
verbose_outb((word >> 8), base + 2);
}
void enableirq()
{ //enable irq on card
word = Irq_enable_bit;
verbose_outb( (word >> 8), base + 2);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -