Rev 413 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 413 | Rev 414 | ||
---|---|---|---|
Line 68... | Line 68... | ||
68 | 68 | ||
Line 69... | Line 69... | ||
69 | MCR_DTR equ 0x01 ;0-> DTR=1, 1-> DTR=0 |
69 | MCR_DTR equ 0x01 ;0-> DTR=1, 1-> DTR=0 |
70 | MCR_RTS equ 0x02 ;0-> RTS=1, 1-> RTS=0 |
70 | MCR_RTS equ 0x02 ;0-> RTS=1, 1-> RTS=0 |
71 | MCR_OUT_1 equ 0x04 ;0-> OUT1=1, 1-> OUT1=0 |
71 | MCR_OUT_1 equ 0x04 ;0-> OUT1=1, 1-> OUT1=0 |
72 | MCR_OUT_2 equ 0x08 ;0-> OUT2=1, 1-> OUT2=0 enable intr |
72 | MCR_OUT_2 equ 0x08 ;0-> OUT2=1, 1-> OUT2=0; enable intr |
73 | MCR_LOOP equ 0x10 ;lopback mode |
73 | MCR_LOOP equ 0x10 ;lopback mode |
Line 74... | Line 74... | ||
74 | 74 | ||
75 | MSR_DCTS equ 0x01 ;delta clear to send |
75 | MSR_DCTS equ 0x01 ;delta clear to send |
76 | MSR_DDSR equ 0x02 ;delta data set redy |
76 | MSR_DDSR equ 0x02 ;delta data set redy |
Line 111... | Line 111... | ||
111 | COM_2_IRQ equ 3 |
111 | COM_2_IRQ equ 3 |
112 | 112 | ||
Line 113... | Line 113... | ||
113 | UART_CLOSED equ 0 |
113 | UART_CLOSED equ 0 |
114 | UART_TRANSMIT equ 1 |
114 | UART_TRANSMIT equ 1 |
- | 115 | UART_STOP equ 2 |
|
Line 115... | Line 116... | ||
115 | 116 | ||
116 | struc UART |
117 | struc UART |
117 | { |
- | |
118 | ; .owner dd ? unused |
118 | { |
119 | .lock dd ? |
119 | .lock dd ? |
120 | .base dd ? |
120 | .base dd ? |
121 | .lcr_reg dd ? |
121 | .lcr_reg dd ? |
122 | .mcr_reg dd ? |
122 | .mcr_reg dd ? |
123 | .rate dd ? |
123 | .rate dd ? |
124 | .mode dd ? |
124 | .mode dd ? |
Line 125... | Line 125... | ||
125 | .state dd ? |
125 | .state dd ? |
126 | 126 | ||
127 | .rcvr_rp dd ? |
127 | .rcvr_rp dd ? |
Line -... | Line 128... | ||
- | 128 | .rcvr_wp dd ? |
|
128 | .rcvr_wp dd ? |
129 | .rcvr_cnt dd ? |
129 | .rcvr_free dd ? |
130 | |
- | 131 | .xmit_buff dd ? |
|
130 | 132 | .xmit_rp dd ? |
|
131 | .xmit_rp dd ? |
- | |
132 | .xmit_wp dd ? |
133 | .xmit_wp dd ? |
133 | .xmit_free dd ? |
134 | .xmit_count dd ? |
134 | .rcvr_buffer rb 128 |
135 | .xmit_free dd ? |
135 | .xmit_buffer rb 128 |
136 | .xmit_top dd ? |
136 | } |
137 | } |
Line 137... | Line -... | ||
137 | virtual at 0 |
- | |
138 | UART UART |
- | |
139 | end virtual |
138 | virtual at 0 |
Line 140... | Line 139... | ||
140 | 139 | UART UART |
|
141 | RCVR_OFFSET equ 14*4 |
140 | end virtual |
142 | XMIT_OFFSET equ (13*4*128) |
141 | |
143 | UART_SIZE equ (256+13*4) |
142 | UART_SIZE equ 16*4 |
Line 177... | Line 176... | ||
177 | 176 | ||
Line 178... | Line 177... | ||
178 | mov eax, [com1] |
177 | mov eax, [com1] |
179 | mov [eax+UART.base], COM_1_BASE |
178 | mov [eax+UART.base], COM_1_BASE |
Line -... | Line 179... | ||
- | 179 | ||
- | 180 | stdcall alloc_kernel_space, 16384 |
|
- | 181 | ||
- | 182 | mov edi, [com1] |
|
- | 183 | mov edx, eax |
|
- | 184 | mov [edi+UART.xmit_buff], eax |
|
- | 185 | add eax, 8192 |
|
- | 186 | mov [edi+UART.xmit_top], eax |
|
- | 187 | ||
- | 188 | call alloc_page |
|
- | 189 | test eax, eax |
|
- | 190 | jz .fail |
|
- | 191 | ||
- | 192 | shr edx, 12 |
|
- | 193 | or eax, PG_SW |
|
- | 194 | mov [page_tabs+edx*4], eax |
|
- | 195 | mov [page_tabs+edx*4+8], eax |
|
- | 196 | ||
- | 197 | call alloc_page |
|
- | 198 | test eax, eax |
|
- | 199 | jz .fail |
|
- | 200 | ||
- | 201 | or eax, PG_SW |
|
- | 202 | mov [page_tabs+edx*4+4], eax |
|
- | 203 | mov [page_tabs+edx*4+12], eax |
|
- | 204 | ||
- | 205 | mov eax, [edi+UART.xmit_buff] |
|
- | 206 | invlpg [eax] |
|
- | 207 | invlpg [eax+0x1000] |
|
- | 208 | invlpg [eax+0x2000] |
|
- | 209 | invlpg [eax+0x3000] |
|
- | 210 | ||
180 | 211 | mov eax, edi |
|
Line 181... | Line 212... | ||
181 | call uart_reset ;eax= uart |
212 | call uart_reset.internal ;eax= uart |
182 | 213 | ||
183 | stdcall attach_int_handler, COM_1_IRQ, com_1_isr |
214 | stdcall attach_int_handler, COM_1_IRQ, com_1_isr |
184 | stdcall reg_service, sz_uart_srv, uart_proc |
215 | stdcall reg_service, sz_uart_srv, uart_proc |
Line 232... | Line 263... | ||
232 | mov [ebx], ecx |
263 | mov [ebx], ecx |
233 | ret |
264 | ret |
234 | @@: |
265 | @@: |
235 | mov esi, [ebx+input] ;input buffer |
266 | mov esi, [ebx+input] ;input buffer |
236 | call [uart_func+eax*4] |
267 | mov edi, [ebx+output] |
- | 268 | call [uart_func+eax*4] |
|
237 | ret |
269 | ret |
238 | .fail: |
270 | .fail: |
239 | or eax, -1 |
271 | or eax, -1 |
240 | ret |
272 | ret |
241 | 273 | ||
Line 248... | Line 280... | ||
248 | restore output |
280 | restore output |
249 | restore out_size |
281 | restore out_size |
250 | 282 | ||
Line -... | Line 283... | ||
- | 283 | ||
- | 284 | ; param |
|
- | 285 | ; esi= input buffer |
|
- | 286 | ; +0 connection |
|
- | 287 | ; |
|
- | 288 | ; retval |
|
- | 289 | ; eax= error code |
|
- | 290 | ||
- | 291 | align 4 |
|
- | 292 | uart_reset: |
|
- | 293 | mov eax, [esi] |
|
- | 294 | cmp [eax+APPOBJ.magic], 'CNCT' |
|
- | 295 | jne .fail |
|
- | 296 | ||
- | 297 | cmp [eax+APPOBJ.destroy], uart_close.destroy |
|
- | 298 | jne .fail |
|
- | 299 | ||
- | 300 | mov eax, [eax+CONNECTION.uart] |
|
- | 301 | test eax, eax |
|
- | 302 | jz .fail |
|
251 | 303 | ||
252 | ; set mode 2400 bod 8-bit |
304 | ; set mode 2400 bod 8-bit |
253 | ; disable DTR & RTS |
305 | ; disable DTR & RTS |
254 | ; clear FIFO |
306 | ; clear FIFO |
255 | ; clear pending interrupts |
307 | ; clear pending interrupts |
256 | ; |
308 | ; |
257 | ; param |
309 | ; param |
Line 258... | Line 310... | ||
258 | ; eax= uart |
310 | ; eax= uart |
259 | 311 | ||
260 | align 4 |
312 | align 4 |
261 | uart_reset: |
313 | .internal: |
262 | mov esi, eax |
314 | mov esi, eax |
263 | mov [eax+UART.state], UART_CLOSED |
315 | mov [eax+UART.state], UART_CLOSED |
264 | mov edx, [eax+UART.base] |
316 | mov edx, [eax+UART.base] |
Line 320... | Line 372... | ||
320 | add edx, LSR_REG |
372 | add edx, LSR_REG |
321 | in al, dx |
373 | in al, dx |
322 | jmp .clear_IIR |
374 | jmp .clear_IIR |
323 | .done: |
375 | .done: |
324 | lea edi, [esi+UART.rcvr_buffer] |
376 | mov edi, [esi+UART.xmit_buff] |
325 | mov ecx, 256/4 |
377 | mov ecx, 8192/4 |
326 | xor eax, eax |
378 | xor eax, eax |
327 | 379 | ||
Line 328... | Line 380... | ||
328 | mov [esi+UART.rcvr_rp], eax |
380 | mov [esi+UART.xmit_rp], edi |
329 | mov [esi+UART.rcvr_wp], eax |
- | |
330 | mov [esi+UART.rcvr_free], 128 |
- | |
331 | mov [esi+UART.xmit_rp], eax |
381 | mov [esi+UART.xmit_wp], edi |
332 | mov [esi+UART.xmit_wp], eax |
382 | mov [esi+UART.xmit_count], eax |
333 | mov [esi+UART.xmit_free], 128 |
383 | mov [esi+UART.xmit_free], 8192 |
Line 334... | Line 384... | ||
334 | 384 | ||
335 | cld |
385 | cld |
336 | rep stosd |
- | |
Line -... | Line 386... | ||
- | 386 | rep stosd |
|
- | 387 | ||
- | 388 | ||
- | 389 | ; mov [esi+UART.rcvr_rp], eax |
|
- | 390 | ; mov [esi+UART.rcvr_wp], eax |
|
- | 391 | ; mov [esi+UART.rcvr_cnt], eax |
|
- | 392 | ||
- | 393 | ret |
|
- | 394 | .fail: |
|
337 | ret |
395 | or eax, -1 |
338 | 396 | ret |
|
339 | 397 | ||
340 | ; param |
398 | ; param |
341 | ; esi= input buffer |
399 | ; esi= input buffer |
Line 404... | Line 462... | ||
404 | .fail: |
462 | .fail: |
405 | or eax, -1 |
463 | or eax, -1 |
406 | ret |
464 | ret |
407 | 465 | ||
Line -... | Line 466... | ||
- | 466 | ; param |
|
- | 467 | ; esi= input buffer |
|
- | 468 | ; +0 connection |
|
- | 469 | ; +4 modem control reg valie |
|
- | 470 | ; |
|
- | 471 | ; retval |
|
- | 472 | ; eax= error code |
|
Line 408... | Line 473... | ||
408 | 473 | ||
409 | align 4 |
474 | align 4 |
- | 475 | uart_set_mcr: |
|
- | 476 | ||
- | 477 | mov eax, [esi] |
|
- | 478 | cmp [eax+APPOBJ.magic], 'CNCT' |
|
- | 479 | jne .fail |
|
- | 480 | ||
- | 481 | cmp [eax+APPOBJ.destroy], uart_close.destroy |
|
- | 482 | jne .fail |
|
- | 483 | ||
- | 484 | mov eax, [eax+CONNECTION.uart] |
|
- | 485 | test eax, eax |
|
- | 486 | jz .fail |
|
- | 487 | ||
Line 410... | Line 488... | ||
410 | uart_set_modem: |
488 | mov ebx, [esi+4] |
411 | 489 | ||
412 | mov [eax+UART.mcr_reg], ebx |
490 | mov [eax+UART.mcr_reg], ebx |
413 | mov edx, [eax+UART.base] |
491 | mov edx, [eax+UART.base] |
414 | add edx, MCR_REG |
492 | add edx, MCR_REG |
- | 493 | mov al, bl |
|
- | 494 | out dx, al |
|
- | 495 | xor eax, eax |
|
- | 496 | ret |
|
415 | mov al, bl |
497 | .fail: |
Line 416... | Line 498... | ||
416 | out dx, al |
498 | or eax, -1 |
417 | ret |
499 | ret |
418 | 500 | ||
Line 442... | Line 524... | ||
442 | test eax, eax |
524 | test eax, eax |
443 | jnz .do_wait |
525 | jnz .do_wait |
444 | 526 | ||
Line 445... | Line 527... | ||
445 | mov eax, esi ;uart |
527 | mov eax, esi ;uart |
446 | call uart_reset |
528 | call uart_reset.internal |
Line 447... | Line 529... | ||
447 | 529 | ||
448 | mov ebx, [CURRENT_TASK] |
530 | mov ebx, [CURRENT_TASK] |
449 | shl ebx, 5 |
531 | shl ebx, 5 |
450 | mov ebx, [CURRENT_TASK+ebx+4] |
532 | mov ebx, [CURRENT_TASK+ebx+4] |
Line 532... | Line 614... | ||
532 | align 4 |
614 | align 4 |
533 | transmit: |
615 | transmit: |
534 | push esi |
616 | push esi |
535 | push edi |
617 | push edi |
536 | push ebp |
- | |
Line 537... | Line 618... | ||
537 | 618 | ||
Line 538... | Line 619... | ||
538 | mov edx, [ebx+UART.base] |
619 | mov edx, [ebx+UART.base] |
539 | 620 | ||
Line 540... | Line -... | ||
540 | pushfd |
- | |
541 | cli |
621 | pushfd |
542 | 622 | cli |
|
543 | mov ebp, 16 |
623 | |
- | 624 | mov esi, [ebx+UART.xmit_rp] |
|
Line 544... | Line 625... | ||
544 | mov esi, [ebx+UART.xmit_rp] |
625 | mov ecx, [ebx+UART.xmit_count] |
545 | lea edi, [ebx+UART.xmit_buffer] |
626 | test ecx, ecx |
- | 627 | je .stop |
|
546 | mov ecx, [ebx+UART.xmit_free] |
628 | |
547 | 629 | cmp ecx, 16 |
|
548 | cmp ecx, 128 |
630 | jbe @F |
549 | je .exit |
631 | mov ecx, 16 |
550 | @@: |
632 | @@: |
- | 633 | sub [ebx+UART.xmit_count], ecx |
|
551 | and esi, 127 |
634 | add [ebx+UART.xmit_free], ecx |
552 | mov al, [esi+edi] |
- | |
553 | inc esi |
635 | cld |
554 | 636 | @@: |
|
Line 555... | Line 637... | ||
555 | out dx, al |
637 | lodsb |
556 | inc ecx |
638 | out dx, al |
- | 639 | dec ecx |
|
557 | dec ebp |
640 | jnz @B |
558 | jz .done |
641 | |
- | 642 | cmp esi,[ebx+UART.xmit_top] |
|
559 | 643 | jb @F |
|
- | 644 | sub esi, 8192 |
|
- | 645 | @@: |
|
560 | cmp ecx, 128 |
646 | mov [ebx+UART.xmit_rp], esi |
- | 647 | ||
561 | jne @B |
648 | cmp [ebx+UART.xmit_count], 0 |
- | 649 | je .stop |
|
- | 650 | ||
562 | .done: |
651 | mov [ebx+UART.state], UART_TRANSMIT |
563 | mov [ebx+UART.xmit_rp], esi |
- | |
564 | mov [ebx+UART.xmit_free], ecx |
652 | jmp @F |
565 | mov [ebx+UART.state], UART_TRANSMIT |
653 | .stop: |
566 | .exit: |
654 | mov [ebx+UART.state], UART_STOP |
Line -... | Line 655... | ||
- | 655 | @@: |
|
- | 656 | popfd |
|
- | 657 | pop edi |
|
- | 658 | pop esi |
|
- | 659 | ret |
|
- | 660 | ||
- | 661 | ||
- | 662 | ; param |
|
- | 663 | ; esi= input buffer |
|
- | 664 | ; +0 connection |
|
- | 665 | ; +4 dst buffer |
|
- | 666 | ; +8 dst size |
|
- | 667 | ; edi= output buffer |
|
- | 668 | ; +0 bytes read |
|
- | 669 | ||
- | 670 | ; retval |
|
- | 671 | ; eax= error code |
|
- | 672 | ||
- | 673 | align 4 |
|
- | 674 | uart_read: |
|
- | 675 | mov eax, [esi] |
|
- | 676 | cmp [eax+APPOBJ.magic], 'CNCT' |
|
- | 677 | jne .fail |
|
- | 678 | ||
- | 679 | cmp [eax+APPOBJ.destroy], uart_close.destroy |
|
- | 680 | jne .fail |
|
- | 681 | ||
- | 682 | mov eax, [eax+CONNECTION.uart] |
|
- | 683 | test eax, eax |
|
- | 684 | jz .fail |
|
- | 685 | ||
- | 686 | mov ebx, [esi+8] ;dst size |
|
- | 687 | mov ecx, [eax+UART.rcvr_cnt] |
|
- | 688 | cmp ecx, ebx |
|
- | 689 | jbe @F |
|
- | 690 | mov ecx, ebx |
|
- | 691 | @@: |
|
- | 692 | mov [edi], ecx ;bytes read |
|
- | 693 | test ecx, ecx |
|
- | 694 | jz .done |
|
- | 695 | ||
- | 696 | sub [eax+UART.rcvr_cnt], ecx |
|
- | 697 | ||
- | 698 | push eax |
|
- | 699 | mov edi, [esi+4] ;dst |
|
- | 700 | ; lea esi, [eax+RCVR_OFFSET] |
|
- | 701 | mov ebx, [eax+UART.rcvr_rp] |
|
- | 702 | cld |
|
- | 703 | @@: |
|
- | 704 | and ebx, 127 |
|
- | 705 | mov al, [esi+ebx] |
|
- | 706 | stosb |
|
- | 707 | inc ebx |
|
- | 708 | dec ecx |
|
- | 709 | jnz @B |
|
- | 710 | ||
- | 711 | pop eax |
|
- | 712 | mov [eax+UART.rcvr_rp], ebx |
|
- | 713 | .done: |
|
- | 714 | xor eax, eax |
|
- | 715 | rep |
|
- | 716 | .fail: |
|
- | 717 | or eax, -1 |
|
- | 718 | ret |
|
- | 719 | ||
- | 720 | ; param |
|
- | 721 | ; esi= input buffer |
|
- | 722 | ; +0 connection |
|
- | 723 | ; +4 src buffer |
|
- | 724 | ; +8 src size |
|
- | 725 | ; |
|
- | 726 | ; retval |
|
- | 727 | ; eax= error code |
|
- | 728 | ||
- | 729 | align 4 |
|
- | 730 | uart_write: |
|
- | 731 | mov eax, [esi] |
|
- | 732 | cmp [eax+APPOBJ.magic], 'CNCT' |
|
- | 733 | jne .fail |
|
- | 734 | ||
- | 735 | cmp [eax+APPOBJ.destroy], uart_close.destroy |
|
- | 736 | jne .fail |
|
- | 737 | ||
- | 738 | mov eax, [eax+CONNECTION.uart] |
|
567 | popfd |
739 | test eax, eax |
568 | pop ebp |
740 | jz .fail |
569 | pop edi |
741 | |
570 | pop esi |
742 | mov ebx, [esi+4] |
Line 571... | Line 743... | ||
571 | ret |
743 | mov edx, [esi+8] |
572 | 744 | ||
573 | ; param |
745 | ; param |
574 | ; eax= uart |
746 | ; eax= uart |
575 | ; ebx= src |
- | |
576 | ; edx= count |
747 | ; ebx= src |
577 | 748 | ; edx= count |
|
578 | align 4 |
749 | |
579 | uart_write: |
750 | align 4 |
580 | mov esi, ebx |
751 | .internal: |
581 | mov edi, [eax+UART.xmit_wp] |
752 | mov esi, ebx |
Line 582... | Line 753... | ||
582 | lea ebx, [eax+UART.xmit_buffer] |
753 | mov edi, [eax+UART.xmit_wp] |
Line 594... | Line 765... | ||
594 | push edx |
765 | push edx |
595 | call transmit |
766 | call transmit |
596 | pop edx |
767 | pop edx |
597 | mov eax, ebx |
768 | mov eax, ebx |
598 | lea ebx, [ebx+UART.xmit_buffer] |
769 | jmp .write |
599 | jmp .write |
- | |
600 | .fill: |
770 | .fill: |
601 | mov ecx, 128 |
771 | mov ecx, [eax+UART.xmit_free] |
602 | sub ecx, edi |
- | |
603 | jz .clip |
- | |
604 | cmp ecx, [eax+UART.xmit_free] |
- | |
605 | jbe @F |
- | |
606 | - | ||
607 | mov ecx, [eax+UART.xmit_free] |
- | |
608 | @@: |
772 | cmp ecx, edx |
609 | cmp ecx, edx |
- | |
610 | jbe @F |
773 | jbe @F |
611 | mov ecx, edx |
774 | mov ecx, edx |
612 | @@: |
775 | @@: |
613 | sub [eax+UART.xmit_free], ecx |
776 | push ecx |
614 | sub edx, ecx |
- | |
615 | 777 | cld |
|
616 | add edi, ebx |
- | |
617 | cld |
- | |
618 | rep movsb |
778 | rep movsb |
619 | 779 | pop ecx |
|
620 | sub edi, ebx |
- | |
621 | .clip: |
780 | sub [eax+UART.xmit_free], ecx |
622 | and edi, 127 |
781 | add [eax+UART.xmit_count], ecx |
- | 782 | sub edx, ecx |
|
623 | jmp .write |
783 | jnz .wait |
624 | .done: |
784 | .done: |
625 | mov [eax+UART.xmit_wp], edi |
785 | cmp edi, [eax+UART.xmit_top] |
- | 786 | jb @F |
|
- | 787 | sub edi, 8192 |
|
- | 788 | @@: |
|
- | 789 | mov [eax+UART.xmit_wp], edi |
|
626 | cmp [eax+UART.state], UART_TRANSMIT |
790 | cmp [eax+UART.state], UART_TRANSMIT |
627 | je @F |
791 | je @F |
628 | mov ebx, eax |
792 | mov ebx, eax |
629 | call transmit |
793 | call transmit |
630 | @@: |
794 | @@: |
631 | ret |
795 | xor eax, eax |
- | 796 | ret |
|
632 | 797 | .fail: |
|
- | 798 | or eax, -1 |
|
- | 799 | ret |
|
- | 800 | ||
- | 801 | ||
Line 633... | Line 802... | ||
633 | align 4 |
802 | align 4 |
634 | com_2_isr: |
803 | com_2_isr: |
635 | mov ebx, [com2] |
804 | mov ebx, [com2] |
636 | jmp com_1_isr.get_info |
805 | jmp com_1_isr.get_info |
637 | align 4 |
806 | align 4 |
638 | com_1_isr: |
807 | com_1_isr: |
639 | mov ebx, [com1] |
808 | mov ebx, [com1] |
640 | - | ||
641 | .get_info: |
809 | .get_info: |
642 | mov edx, [ebx+UART.base] |
810 | mov edx, [ebx+UART.base] |
643 | add edx, IIR_REG |
811 | add edx, IIR_REG |
644 | in al, dx |
812 | in al, dx |
Line 682... | Line 850... | ||
682 | align 4 |
850 | align 4 |
683 | uart_func dd 0 ;SRV_GETVERSION |
851 | uart_func dd 0 ;SRV_GETVERSION |
684 | dd 0 ;PORT_OPEN |
852 | dd 0 ;PORT_OPEN |
685 | dd uart_close ;PORT_CLOSE |
853 | dd uart_close ;PORT_CLOSE |
686 | dd 0 ;PORT_RESET |
854 | dd uart_reset ;PORT_RESET |
687 | dd uart_set_mode ;PORT_SETMODE |
855 | dd uart_set_mode ;PORT_SETMODE |
688 | ; dd uart.get_mode ;PORT_GETMODE |
856 | dd 0 ;PORT_GETMODE |
689 | ; dd uart.set_mcr ;PORT_SETMCR |
857 | dd uart_set_mcr ;PORT_SETMODEM |
690 | ;PORT_GETMCR equ 7 |
858 | dd 0 ;PORT_GETMODEM |
691 | ;PORT_READ equ 8 |
859 | dd uart_read ;PORT_READ |
692 | ;PORT_WRITE equ 9 |
860 | dd uart_write ;PORT_WRITE |
693 | - | ||
694 | - | ||
695 | - | ||
Line 696... | Line 861... | ||
696 | 861 | ||
697 | isr_action dd isr_modem |
862 | isr_action dd isr_modem |
698 | dd transmit |
863 | dd transmit |
699 | dd isr_recieve |
864 | dd isr_recieve |