[comp.sys.ibm.pc] Turning off NumLock through softwar

mcdonald@uxe.cso.uiuc.edu (11/10/89)

>A friend of mine has a Clone IBM compatible.  It is a 12mhz 80286.
>When it is turned on, during the initialization process (i.e. memory
>check, etc.) the NumLock light goes on.

>While this is not the end of the world, is there some way to turn
>it back off in the autoexec.bat file.  Or better yet, is there some
>way to prevent it happening in the first place.  

Here is a program to turn it off. It is uuencoded. Uudecode it
to a file numx.com and put it in your autoexec.bat. It is
very small.

Yes, it really is only a half a line of uuencoded code. But just
think - it will take up a whole big kilobyte or more on
your disk!

begin 0666 numx.com
0ZP&0N   CL F@"87!-_-(&H!
 
end

AIN14922@merrimack.edu (Doug Linder) (11/10/89)

In article <110200027@uxe.cso.uiuc.edu>, mcdonald@uxe.cso.uiuc.edu writes:

> Yes, it really is only a half a line of uuencoded code. But just
> think - it will take up a whole big kilobyte or more on
> your disk!
> 
> begin 0666 numx.com
> 0ZP&0N   CL F@"87!-_-(&H!
>  
> end

  i hate to sound dumb, and I really do know a lot about PC's, but what is
uuencoded?  How do I type it into my PC?  I'd really like to have this tidebit
as my NEC powermate does the same thing and it's really annoying because I
still forget every time.

		  Thanx!

-- 
	Douglas D. Linder, Merrimack College, N. Andover, MA
	ain14922@merrimack.edu
	{uunet,bbn,ulowell}!samsung!hubdub!ain14922

mcdonald@uxe.cso.uiuc.edu (11/12/89)

>> Yes, it really is only a half a line of uuencoded code. But just
>> think - it will take up a whole big kilobyte or more on
>> your disk!
>> 
>> begin 0666 numx.com
>> 0ZP&0N   CL F@"87!-_-(&H!
>>  
>> end

>  i hate to sound dumb, and I really do know a lot about PC's, but what is
>uuencoded?  How do I type it into my PC?  I'd really like to have this tidebit
>as my NEC powermate does the same thing and it's really annoying because I
>still forget every time.

OK, here it is (well, this one is a little smaller!):


cseg	segment para public 'code'
	org	100h
NUMX	proc far
	assume cs:cseg,ds:cseg	
	xor     ax,ax		
	mov	es,ax
        and     byte ptr es:[0417h],0dfh
	int	020h
NUMX	endp
cseg	ends
end	NUMX

Masm it, link, and exe2bin it.

Here it is in hex - type it into Debug and save it:

33 C0 8E C0 26 80 26 17 04 DF CD 20

I too find it extremely off that the boot procedure would turn on the
num lock key - it didn't use too.

The interesting question is, why does it work? How does the light
bulb know that I changed a single bit in memory?
Doug MCDonald

fayne@tellab5.TELLABS.COM (Jeffrey Fayne) (11/13/89)

In article <110200029@uxe.cso.uiuc.edu> mcdonald@uxe.cso.uiuc.edu writes:
>
>
>The interesting question is, why does it work? How does the light
>bulb know that I changed a single bit in memory?
>Doug MCDonald

	The BIOS updates the keyboard (at least the AT keyboards) based
  on the 0040:0017 status byte contents.

				Jeff

-- 
_____________________________________________________________________________
                                             
If it flies,    \      _      /             |  Jeffrey M. Fayne                
  it dies...     \   /^ ^\   /              |  Tellabs, Inc.       
      ____________\_(  .  )_/____________   |  Lisle, IL  (312)-969-8800
           --*/--|_| (___) |_|--\*--        |  
              *       O O       *           |  Standard Disclaimer Applies
_____________________________________________________________________________

fordke@ingr.com (Keith Ford x8614) (11/14/89)

In article <110200027@uxe.cso.uiuc.edu> mcdonald@uxe.cso.uiuc.edu writes:
 [...deleted stuff about program to toggle numlock from code...]
>Yes, it really is only a half a line of uuencoded code. But just
>think - it will take up a whole big kilobyte or more on

You should get a hold of XEQ.COM from Hardwood Software Associates.  It
has been released into the public domain by the author.  Here is some
of the text from the doc file.  If you want a copy, send me mail and I
will do what I can.  :)

This program allows COM files to be stored inside XEQ's code and executed
by the command:	XEQ command
For example, if BEEP.COM has been added to XEQ then:  XEQ BEEP
will execute the BEEP program stored inside XEQ. The original BEEP.COM
can be removed from the hard disk (onto a backup floppy!!!). If the
specified command is not in XEQ it is passed to the DOS for execution as
if directly typed at the DOS prompt.
	The purpose is to prevent wasted hard-disk space by those pesky
little COM files we don't seem to be able to do without. When hard disks
are formatted they are given an allocation size (called a cluster size)
and this is typically 2048 or 4096 bytes. So when you save a 7 byte
COM file like BEEP.COM, it takes up a full cluster. By combining these
COM files into this program or LIBRARY, several COM files can be stored
in one file (the XEQ program itself) and still accessed without this waste
in hard disk space.
	XEQ <command>   Execute <command> if in lib or pass to DOS
	XEQ /A(command>   Add <command>.COM to library if not existant
	XEQ /D<command>   Delete command from library if existant
	XEQ /E<command>   Extract command from library to .COM file
	XEQ /L		List the <commands> in the library
-EOF-
-- 
_________________________________________________________________________
\__     ...!uunet!ingr!b23b!dragon!keith  _OR_   fordke@INGR.COM      __/
   "Fer cryin' out loud, research physicists need porsches too!" -Opus
    "...the Trees are all kept equal by hatchet, axe, and saw." -Rush

ho@fergvax.unl.edu (Tiny Bubbles...) (11/14/89)

From article <110200027@uxe.cso.uiuc.edu>, by mcdonald@uxe.cso.uiuc.edu:
> 
>>A friend of mine has a Clone IBM compatible.  It is a 12mhz 80286.
>>When it is turned on, during the initialization process (i.e. memory
>>check, etc.) the NumLock light goes on.
> 
> Here is a program to turn it off. It is uuencoded. Uudecode it
> to a file numx.com and put it in your autoexec.bat. It is
> very small.

On a related note -- I have an XT clone with a light-adorned keyboard.  
Once in a while, the lights on the keyboard get out of sync with the 
BIOS registers, resulting in mass confusion.  (Usually happens after 
playing a particular game, but I can't remember what it is.)

Is there a way to tell the /keyboard/ to change the status of the lights, 
or do I have to manually turn them off (by hitting the offending keys) and
then running a program to reprogram the BIOS flags?

Sure would be nice to tell the keyboard to shut up instead.  Maybe only AT's
can do that, tho'...

(Please respond via e-mail... I can only read once a week.)
---
	... Michael Ho, University of Nebraska
Internet: ho@fergvax.unl.edu		USnail:  115 Nebraska Union
BITnet:   cosx001@UNLCDC3			 Lincoln, NE 68588-0461

csirmaz@porthos.rutgers.edu (Laszlo Csirmaz) (11/16/89)

In article <1758@tellab5.TELLABS.COM> fayne@tellab5.TELLABS.COM (Jeffrey Fayne) writes:

> In article <110200029@uxe.cso.uiuc.edu> mcdonald@uxe.cso.uiuc.edu writes:
> >
> >
> >The interesting question is, why does it work? How does the light
> >bulb know that I changed a single bit in memory?
> >Doug MCDonald
> 
> 	The BIOS updates the keyboard (at least the AT keyboards) based
>   on the 0040:0017 status byte contents.
> 
> 				Jeff
> 

In fact, the BIOS has all the right to do what it wants. Anyway, MOST of
the BIOS I know of uses the 0040:0017 status word to decide whether
the NUMLOCK button is toggled or not. The keyboard handling procedure
in certain BIOS packages updates the lights every time it gets the control;
others do it only when the NUMLOCK button is hit. (This is true for AT
only, on XT the keyboard itself switches the lights.) Thus the light
for NUMLOCK will surely not go off by running any of the recommended
programs, but MIGHT go off after hitting any button (fortunate case)
or by hitting the NUMLOCK button (less fortunate case). Or it can
do anything it wishes (unfortunate case).

Laci

smithr@ast.UUCP (Richard H. E. Smith II) (11/17/89)

In article <1758@tellab5.TELLABS.COM> fayne@tellab5.UUCP (Jeffrey Fayne) writes:
>In article <110200029@uxe.cso.uiuc.edu> mcdonald@uxe.cso.uiuc.edu writes:
>>
>>The interesting question is, why does it work? How does the light
>>bulb know that I changed a single bit in memory?
>>Doug MCDonald
>
>	The BIOS updates the keyboard (at least the AT keyboards) based
                                       ^^^^^^^^^^^^^^^^^^^^^^^^^
>  on the 0040:0017 status byte contents.
>

If you've got an XT with a clone keyboard that has a NUMLOCK light,
there's no support in the BIOS or keyboard interface for getting the bit
in ram back to the keyboard controller, so it won't change.  In that
case, the light (which is toggled by the keyboard controller micro when
it thinks you pressed NUMLOCK) will now work in reverse state.  Ditto
for the CAPSLOCK lamp if you've got one of those.

Why no support?  Genuine IBM keyboards didn't have the lamp.

------------------------------
---Dick Smith