Important Notice
The pages on this site contain documentation for very old MS-DOS software,
purely for historical purposes.
If you're looking for up-to-date documentation, particularly for programming,
you should not rely on the information found here, as it will be woefully
out of date.
DEF SEG, PEEK and POKE Programming Example
◄Example► ◄Contents► ◄Index► ◄Back►
──────────────────────────────────────────────────────────────────────────────
'This example uses the DEF SEG statement, the PEEK function, and POKE
'statement to turn the Caps Lock key on and off. The program uses the
'LINE INPUT statement to prompt the user to enter a string, demonstrating
'that the Caps Lock key is on.
'Note: This program contains hardware-specific instructions. It works
'correctly on IBM PC, XT, and AT computers.
DECLARE SUB CapsOn ()
DECLARE SUB CapsOff ()
DECLARE SUB PrntMsg (R%, C%, M$)
CLS
CapsOn
PrntMsg 24, 1, "<Caps Lock On>"
LOCATE 12, 10
LINE INPUT "Enter a string (all characters are caps): ", S$
CapsOff
PrntMsg 24, 1, " "
PrntMsg 25, 1, "Press any key to continue..."
DO WHILE INKEY$ = "": LOOP
CLS
END
SUB CapsOff STATIC
'Turn Caps Lock off.
DEF SEG = 0
'Set Caps Lock off (turn off bit 6 of &H0417).
POKE &H417, PEEK(&H417) AND &HBF
DEF SEG
END SUB
SUB CapsOn STATIC
'Turn Caps Lock on.
'Set segment to low memory.
DEF SEG = 0
'Set Caps Lock on (turn on bit 6 of &H0417).
POKE &H417, PEEK(&H417) OR &H40
'Restore segment.
DEF SEG
END SUB
SUB PrntMsg (Row%, Col%, Message$) STATIC
'Print message at Row%, Col% without changing cursor.
'Save cursor position.
CurRow% = CSRLIN: CurCol% = POS(0)
LOCATE Row%, Col%: PRINT Message$;
'Restore cursor.
LOCATE CurRow%, CurCol%
END SUB