home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 15 / CDACTUAL15.iso / cdactual / program / asm / NONOFF.ZIP / KSTAT.ASM < prev    next >
Encoding:
Assembly Source File  |  1992-09-15  |  3.8 KB  |  88 lines

  1.  
  2. ; KStat.ASM
  3. ; Shows Keyboard Status
  4. ;
  5. ; Sept. 1992 Edward Mulroy
  6. ; Free for all uses
  7.  
  8. WRITE_CHR       equ     6
  9. WRITE_STR       equ     9
  10. END_PROG        equ     4C00H
  11. CR              equ     13
  12. LF              equ     10
  13. KYBD_FLAG       equ     0417H
  14. TEST_KEY        equ     1
  15. READ_KEY        equ     0
  16. INS_KEY         equ     5200H
  17.  
  18.  
  19. _code           segment public byte 'CODE'
  20.  
  21.                 assume  cs:_code,ds:_code
  22.                 org     100H
  23.  
  24. start           proc    near
  25.                 mov     ah,WRITE_STR            ; puts( logo);
  26.                 mov     dx,offset _code: logo   ;
  27.                 int     21H                     ;
  28.                                                 ;
  29.                 sub     ax,ax                   ;
  30.                 mov     es,ax                   ;
  31.                 mov     bh,0FFH                 ; bits_b4 = 0xFF;
  32.                                                 ;
  33. do_forever:     mov     bl,es:[KYBD_FLAG]       ; bits = keyboard_flag
  34.                 cmp     bh,bl                   ; if (bits != bits_b4)
  35.                 je      test_keywait            ;   {
  36.                                                 ;
  37.                 mov     bh,bl                   ;   bits_b4 = bits;
  38.                 mov     cx,8                    ;   for (i = 8; i > 0; i--)
  39.                                                 ;     {
  40. write_loop:     cmp     cx,4                    ;     if (i == 4)
  41.                 jne     show_bits               ;       putchar( ' ');
  42.                                                 ;
  43.                 mov     dl,' '                  ;
  44.                 mov     ah,WRITE_CHR            ;
  45.                 int     21H                     ;
  46.                                                 ;
  47. show_bits:      rcl     bl,1                    ;     cy = bits; bits <<= 1;
  48.                 mov     dl,'1'                  ;     ch = '1';
  49.                 jc      write_bit               ;     if (cy == 0)
  50.                                                 ;       ch = '0';
  51.                 dec     dl                      ;
  52.                                                 ;
  53. write_bit:      mov     ah,WRITE_CHR            ;     putchar( ch);
  54.                 int     21H                     ;
  55.                 loop    write_loop              ;     }
  56.                                                 ;
  57.                 mov     dl,CR                   ;   putchar( '\r');
  58.                 mov     ah,WRITE_CHR            ;
  59.                 int     21H                     ;
  60.                                                 ;
  61. test_keywait:   push    bx                      ;   if ( !kbhit())
  62.                 mov     ah,TEST_KEY             ;     goto do_forever;
  63.                 int     16H                     ;
  64.                 pop     bx                      ;
  65.                 jz      do_forever              ;
  66.                                                 ;
  67.                 mov     ax,READ_KEY             ;   if ( !getch())
  68.                 int     16H                     ;     getch();
  69.                                                 ;
  70.                 cmp     ax,INS_KEY              ;   if ( keyin == Insert)
  71.                 je      do_forever              ;     goto do_forever
  72.                                                 ;
  73.                 mov     ah,WRITE_STR            ;   putchar( '\n');
  74.                 mov     dx,offset _code: crlf   ;
  75.                 int     21H                     ;
  76.                                                 ;
  77.                 mov     ax,END_PROG             ;   return 0;
  78.                 int     21H                     ;
  79. start           endp
  80.  
  81. logo            db      'KStat by Edward Mulroy, 1992',CR,LF
  82.                 db      'Keyboard Status Bits'
  83. crlf            db      CR,LF,'$'
  84.  
  85. _code           ends
  86.  
  87.                 end     start
  88.