copy_20key_20functionality_20with_20get_20and_20inkey
Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
copy_20key_20functionality_20with_20get_20and_20inkey [2018/03/31 13:19] – external edit 127.0.0.1 | copy_20key_20functionality_20with_20get_20and_20inkey [2024/01/05 00:22] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
=====Copy Key functionality with GET and INKEY===== | =====Copy Key functionality with GET and INKEY===== | ||
- | //by Richard Russell, April 2008// | + | //by Richard Russell, April 2008//\\ |
- | DEF FNinkeycopy(T%) | + | |
- | LOCAL K% | + | |
- | PRIVATE copyX%, copyY%, copyF% | + | |
- | IF copyF% PROCblob : PROCswap | + | |
- | REPEAT | + | |
- | K% = INKEY(T%) | + | |
- | CASE K% OF | + | |
- | WHEN 9: | + | |
- | IF copyF% THEN | + | |
- | K% = GET(POS, VPOS) : VDU 9 | + | |
- | ELSE | + | |
- | copyX% = POS : copyY% = VPOS | + | |
- | copyF% = TRUE : PROCblob : K% = -1 | + | |
- | ENDIF | + | |
- | WHEN 136, | + | |
- | IF copyF% VDU K% AND &7F : K% = -1 | + | |
- | WHEN 13, 155: | + | |
- | IF copyF% THEN | + | |
- | IF K% = 155 K% = -1 | + | |
- | copyF% = FALSE : PROCswap : PROCblob | + | |
- | ENDIF | + | |
- | ENDCASE | + | |
- | UNTIL K%<> | + | |
- | IF copyF% PROCswap : PROCblob | + | |
- | = K% | + | |
- | DEF PROCswap | + | //BBC BASIC for Windows// and //BBC BASIC for SDL 2.0// emulate the [[http:// |
- | LOCAL X%, Y% | + | |
- | X% = POS : Y% = VPOS | + | |
- | SWAP X%, copyX% : SWAP Y%, copyY% | + | |
- | PRINT TAB(X%,Y%); | + | |
- | ENDPROC | + | |
- | | + | <code bb4w> |
- | LOCAL rc{} | + | |
- | DIM rc{l%, | + | LOCAL K% |
- | rc.l% = @vdu%!48 | + | PRIVATE copyX%, copyY%, copyF% |
- | rc.t% = @vdu%!52 | + | IF copyF% |
- | rc.r% = rc.l% + @vdu%!216 | + | REPEAT |
- | rc.b% = rc.t% + @vdu%!220 | + | |
- | SYS " | + | CASE K% OF |
- | SYS " | + | WHEN 9: |
- | ENDPROC | + | IF copyF% THEN |
- | Note that, just as in the case of Immediate Mode and the INPUT statement, Copy editing must be initiated by first pressing Tab. This differs slightly from the way it works on machines having a dedicated Copy key. Copy editing mode is terminated when **Enter** is pressed, or explicitly by pressing **Shift+Tab**.\\ \\ To emulate **GET**, with Copy Key editing, you can use the following function:\\ \\ | + | K% = GET(POS, VPOS) : VDU 9 |
- | DEF FNgetcopy | + | ELSE |
- | LOCAL K% | + | copyX% = POS : copyY% = VPOS |
- | REPEAT | + | copyF% = TRUE : PROCblob : K% = -1 |
- | K% = FNinkeycopy(1) | + | ENDIF |
- | UNTIL K%<> | + | WHEN 136, |
- | = K% | + | IF copyF% VDU K% AND &7F : K% = -1 |
+ | WHEN 13, 155: | ||
+ | IF copyF% THEN | ||
+ | IF K% = 155 K% = -1 | ||
+ | copyF% = FALSE : PROCswap : PROCblob | ||
+ | ENDIF | ||
+ | ENDCASE | ||
+ | UNTIL K%<> | ||
+ | IF copyF% PROCswap : PROCblob | ||
+ | = K% | ||
+ | |||
+ | DEF PROCswap | ||
+ | LOCAL X%, Y% | ||
+ | X% = POS : Y% = VPOS | ||
+ | SWAP X%, copyX% : SWAP Y%, copyY% | ||
+ | PRINT TAB(X%, | ||
+ | ENDPROC | ||
+ | |||
+ | DEF PROCblob | ||
+ | | ||
+ | DIM rc{l%, | ||
+ | rc.l% = @vdu%!48 | ||
+ | rc.t% = @vdu%!52 | ||
+ | rc.r% = rc.l% + @vdu%!216 | ||
+ | rc.b% = rc.t% + @vdu%!220 | ||
+ | SYS " | ||
+ | SYS " | ||
+ | ENDPROC | ||
+ | </ | ||
+ | |||
+ | In //BBC BASIC for SDL 2.0// replace **PROCblob** with the following code: | ||
+ | |||
+ | <code bb4w> | ||
+ | DEF PROCblob | ||
+ | LOCAL rc{} : PRIVATE B% | ||
+ | IF B% = 0 SYS " | ||
+ | DIM rc{x%, | ||
+ | SYS " | ||
+ | SYS " | ||
+ | rc.x% = @vdu%!48 | ||
+ | rc.w% = @vdu%!216 : rc.h% = @vdu%!220 | ||
+ | SYS " | ||
+ | SYS " | ||
+ | ENDPROC | ||
+ | </ | ||
+ | |||
+ | Note that, just as in the case of Immediate Mode and the INPUT statement, Copy editing must be initiated by first pressing Tab. This differs slightly from the way it works on machines having a dedicated Copy key. Copy editing mode is terminated when **Enter** is pressed, or explicitly by pressing **Shift+Tab**.\\ \\ To emulate **GET**, with Copy Key editing, you can use the following function: | ||
+ | |||
+ | <code bb4w> | ||
+ | | ||
+ | LOCAL K% | ||
+ | REPEAT | ||
+ | K% = FNinkeycopy(1) | ||
+ | UNTIL K%<> | ||
+ | = K% | ||
+ | </ |
copy_20key_20functionality_20with_20get_20and_20inkey.1522502351.txt.gz · Last modified: 2024/01/05 00:18 (external edit)