📄 keyboard.s
字号:
//////////////////////////////////////////////////////////////////////////
put_queue8:
pushl %ebx
pushl %eax
testb $0x02,mode
jne put_queue8_0
movl keybuf_head,%ebx
movw temp_al,%ax
movw %ax,key_buf(%ebx)
incl %ebx
incl %ebx
andl $KEYBUF_SIZE - 1,%ebx
movl %ebx,%eax
cmpl keybuf_tail,%eax
je put_queue8_0
incl %eax
incl %eax
andl $KEYBUF_SIZE - 1,%eax
cmpl keybuf_tail,%eax
je put_queue8_0
incl %eax
incl %eax
andl $KEYBUF_SIZE - 1,%eax
cmpl keybuf_tail,%eax
je put_queue8_0
incl %eax
incl %eax
andl $KEYBUF_SIZE - 1,%eax
cmpl keybuf_tail,%eax
je put_queue8_0
incl %eax
incl %eax
andl $KEYBUF_SIZE - 1,%eax
cmpl keybuf_tail,%eax
je put_queue8_0
incl %eax
incl %eax
andl $KEYBUF_SIZE - 1,%eax
cmpl keybuf_tail,%eax
je put_queue8_0
incl %eax
incl %eax
andl $KEYBUF_SIZE - 1,%eax
cmpl keybuf_tail,%eax
je put_queue8_0
movl %ebx,keybuf_head
orb $0x02,mode
incb keybuf_num0
orb $0x01,keybuf_flag
put_queue8_0:
popl %eax
popl %ebx
ret
//////////////////////////////////////////////////////////////////////////
put_queue9:
pushl %ebx
pushl %eax
testb $0x02,mode
je put_queue9_0
movl keybuf_head,%ebx
movw temp_al,%ax
movw %ax,key_buf(%ebx)
incl %ebx
incl %ebx
andl $KEYBUF_SIZE-1,%ebx
movl %ebx,keybuf_head
xorb $0x02,mode
incb keybuf_num0
orb $0x01,keybuf_flag
put_queue9_0:
popl %eax
popl %ebx
ret
//////////////////////////////////////////////////////////////////////////
put_queue10:
pushl %ebx
pushl %eax
testb $0x01,mode
jne put_queue10_0
movl keybuf_head,%ebx
movw temp_al,%ax
movw %ax,key_buf(%ebx)
incl %ebx
incl %ebx
andl $KEYBUF_SIZE - 1,%ebx
movl %ebx,%eax
cmpl keybuf_tail,%eax
je put_queue10_0
incl %eax
incl %eax
andl $KEYBUF_SIZE - 1,%eax
cmpl keybuf_tail,%eax
je put_queue10_0
incl %eax
incl %eax
andl $KEYBUF_SIZE - 1,%eax
cmpl keybuf_tail,%eax
je put_queue10_0
incl %eax
incl %eax
andl $KEYBUF_SIZE - 1,%eax
cmpl keybuf_tail,%eax
je put_queue10_0
incl %eax
incl %eax
andl $KEYBUF_SIZE - 1,%eax
cmpl keybuf_tail,%eax
je put_queue10_0
incl %eax
incl %eax
andl $KEYBUF_SIZE - 1,%eax
cmpl keybuf_tail,%eax
je put_queue10_0
incl %eax
incl %eax
andl $KEYBUF_SIZE - 1,%eax
cmpl keybuf_tail,%eax
je put_queue10_0
movl %ebx,keybuf_head
orb $0x01,mode
incb keybuf_num0
orb $0x01,keybuf_flag
put_queue10_0:
popl %eax
popl %ebx
ret
//////////////////////////////////////////////////////////////////////////
put_queue11:
pushl %ebx
pushl %eax
testb $0x01,mode
je put_queue11_0
movl keybuf_head,%ebx
movw temp_al,%ax
movw %ax,key_buf(%ebx)
incl %ebx
incl %ebx
andl $KEYBUF_SIZE-1,%ebx
movl %ebx,keybuf_head
xorb $0x01,mode
incb keybuf_num0
orb $0x01,keybuf_flag
put_queue11_0:
popl %eax
popl %ebx
ret
//////////////////////////////////////////////////////////////////////////
put_queue:
pushl %ebx
pushl %eax
movl keybuf_head,%ebx
movw temp_al,%ax
movw %ax,key_buf(%ebx)
incl %ebx
incl %ebx
andl $KEYBUF_SIZE - 1,%ebx
movl %ebx,%eax
cmpl keybuf_tail,%eax
je put_queue_0
incl %eax
incl %eax
andl $KEYBUF_SIZE - 1,%eax
cmpl keybuf_tail,%eax
je put_queue_0
incl %eax
incl %eax
andl $KEYBUF_SIZE - 1,%eax
cmpl keybuf_tail,%eax
je put_queue_0
incl %eax
incl %eax
andl $KEYBUF_SIZE - 1,%eax
cmpl keybuf_tail,%eax
je put_queue_0
incl %eax
incl %eax
andl $KEYBUF_SIZE - 1,%eax
cmpl keybuf_tail,%eax
je put_queue_0
incl %eax
incl %eax
andl $KEYBUF_SIZE - 1,%eax
cmpl keybuf_tail,%eax
je put_queue_0
incl %eax
incl %eax
andl $KEYBUF_SIZE - 1,%eax
cmpl keybuf_tail,%eax
je put_queue_0
movl %ebx,keybuf_head
incb keybuf_num0
orb $0x01,keybuf_flag
decb temp_flag
jz put_queue_0
incb keybuf_num1
orb $0x02,keybuf_flag
decb temp_flag
jz put_queue_0
incb keybuf_num2
orb $0x04,keybuf_flag
put_queue_0:
popl %eax
popl %ebx
ret
//////////////////////////////////////////////////////////////////////////
put_key0:
put_key25:
put_key27:
put_key31:
put_key33:
put_key35:
put_key37:
put_key40:
put_key41:
put_key42:
put_key43:
put_key44:
put_key45:
put_key46:
put_key47:
put_key48:
ret
//////////////////////////////////////////////////////////////////////////
put_key1:
put_key3:
put_key7:
put_key29:
pushl %eax
movb downkey_table(%eax),%al
movb %al,temp_al
movb $0x02,temp_flag
call put_queue
popl %eax
ret
//////////////////////////////////////////////////////////////////////////
put_key2:
put_key6:
put_key9:
put_key10:
put_key12:
pushl %ebx
pushl %eax
movb downkey_table(%eax),%bl
testb $0x03,mode
je put_key2_0
movb upkey_table(%eax),%bl
put_key2_0:
movb %bl,temp_al
movb $0x03,temp_flag
call put_queue
popl %eax
popl %ebx
ret
//////////////////////////////////////////////////////////////////////////
put_key4:
pushl %ebx
pushl %eax
movb downkey_table(%eax),%bl
movb $0x02,temp_flag
testb $0x03,mode
je put_key4_0
movb upkey_table(%eax),%bl
movb $0x01,temp_flag
put_key4_0:
movb %bl,temp_al
call put_queue
popl %eax
popl %ebx
ret
//////////////////////////////////////////////////////////////////////////
put_key5:
put_key8:
put_key11:
pushl %ebx
pushl %eax
xorl %ebx,%ebx
testb $0x03,mode
je put_key5_0
xorb $0x01,%bh
put_key5_0:
testb $0x04,leds
je put_key5_1
xorb $0x01,%bh
put_key5_1:
movb downkey_table(%eax),%bl
testb $0x01,%bh
je put_key5_2
movb upkey_table(%eax),%bl
put_key5_2:
movb %bl,temp_al
movb $0x03,temp_flag
call put_queue
popl %eax
popl %ebx
ret
//////////////////////////////////////////////////////////////////////////
put_key13:
put_key14:
put_key17:
put_key21:
put_key30:
pushl %eax
movb downkey_table(%eax),%al
movb %al,temp_al
movb $0x03,temp_flag
call put_queue
popl %eax
ret
//////////////////////////////////////////////////////////////////////////
put_key15:
put_key24:
put_key26:
put_key28:
put_key32:
put_key34:
put_key36:
put_key38:
pushl %eax
movb downkey_table(%eax),%al
movb %al,temp_al
movb $0x01,temp_flag
call put_queue
popl %eax
ret
//////////////////////////////////////////////////////////////////////////
put_key16:
put_key18:
put_key19:
put_key20:
put_key22:
pushl %ebx
pushl %eax
xorl %ebx,%ebx
testb $0x03,mode
je put_key16_0
xorb $0x01,%bh
put_key16_0:
testb $0x02,leds
je put_key16_1
xorb $0x01,%bh
put_key16_1:
movb downkey_table(%eax),%bl
movb $0x01,temp_flag
testb $0x01,%bh
je put_key16_2
movb upkey_table(%eax),%bl
movb $0x03,temp_flag
put_key16_2:
movb %bl,temp_al
call put_queue
popl %eax
popl %ebx
ret
//////////////////////////////////////////////////////////////////////////
put_key23:
pushl %eax
testb $0x30,mode
je put_key23_1
testb $0x0c,mode
je put_key23_1
movw $0x1234,0x472
call kb_wait
movb $0xfc,%al
outb %al,$0x64
put_key23_0:
jmp put_key23_0
put_key23_1:
call put_key16
popl %eax
ret
//////////////////////////////////////////////////////////////////////////
put_key39:
pushl %eax
testb $0x30,mode
je put_key39_1
testb $0x0c,mode
je put_key39_1
movw $0x1234,0x472
call kb_wait
movb $0xfc,%al
outb %al,$0x64
put_key39_0:
jmp put_key39_0
put_key39_1:
call put_key15
popl %eax
ret
//////////////////////////////////////////////////////////////////////////
kb_wait: pushl %eaxkb_wait_0:
inb $0x64,%al testb $0x02,%al jne kb_wait_0 popl %eax ret
//////////////////////////////////////////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -