;lights.asm


.model small


.code
main    proc

        mov     ax,40h
        mov     es,ax

        mov     al,es:[17h]
        mov     status,al

        mov     kbmask,00010000b


start:
        mov     al,kbmask
        mov     es:[17h],al

        shl     kbmask,1
        cmp     kbmask,10000000b
        jne     m1
        mov     kbmask,00010000b
m1:
        call    delay


        mov     ah,01h                  ;key waiting?
        int     16h
        jnz     xit                     ;yeah, xit

        jmp     start                   ;no, go on


xit:
        xor     ah,ah                   ;get key
        int     16h

        mov     al,status
        mov     es:[17h],al

        mov     ax,4C00h
        int     21h
main    endp


delay   proc
        xor     ah,ah
        int     1ah
        mov     starttick,dx

delay1:
        xor     ah,ah
        int     1ah
        sub     dx,starttick
        cmp     dx,3
        jb      delay1
	
        ret
delay   endp


kbmask  db      ?
status  db      ?
starttick dw    ?



        end     main

