45 lines
995 B
QBasic
45 lines
995 B
QBasic
' *** DEFSG_EX.BAS ***
|
||
'
|
||
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 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 &H0417,PEEK(&H0417) OR &H40
|
||
' Restore segment
|
||
DEF SEG
|
||
END SUB
|
||
|
||
SUB CapsOff STATIC
|
||
' Turn Caps Lock off
|
||
DEF SEG=0
|
||
' Set Caps Lock off (turn off bit 6 of &H0417)
|
||
POKE &H0417,PEEK(&H0417) AND &HBF
|
||
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
|
||
|