Home » Archimedes archive » Acorn User » AU 1997-03 A.adf » !TwinWorld/SetKeys

!TwinWorld/SetKeys

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » Archimedes archive » Acorn User » AU 1997-03 A.adf
Filename: !TwinWorld/SetKeys
Read OK:
File size: 0BFC bytes
Load address: FFFFFB47
Exec address: 241F46D8
File contents
    1REM >SetKeys
    2REM Program by James Byrne (jbyrne@gol.com)
    3REM V1.50 (28 October 1996)
    4:
    5CLS:OFF
    6:
    7ON ERROR PROCError:END
    8DIM OldKeys% 11,NewKeys% 11
    9OSCLI"Load <TwinWorld$Dir>.Keys "+STR$~OldKeys%
   10:
   11DIM KeyName$(11),KeyMap%(11),Key$(124),Bl% 8
   12FOR K%=0 TO 10:READ NewKeys%?K%:NEXT
   13FOR K%=1 TO 11:READ KeyName$(K%),KeyMap%(K%):NEXT
   14FOR K%=3 TO 124:READ Key$(K%):NEXT
   15SYS "OS_InstallKeyHandler",1 TO KbdID%
   16IF KbdID%=2 THEN FOR I%=1 TO 4:READ K%,Key$(K%):NEXT
   17!Bl%=256:Bl%!4=-1:SYS "OS_ReadVduVariables",Bl%,Bl%:W%=!Bl%
   18:
   19REPEAT
   20 CLS:PROCCentre("Twin World Key Definitions")
   21 PROCDisplayKeys
   22 PROCCentreY(15,"Change keys ............ 1")
   23 PROCCentreY(17,"Restore default keys ... 2")
   24 PROCCentreY(19,"Exit ................... 3")
   25 PROCCentreY(22,"Enter choice (1-3)")
   26 REPEAT:Ch%=GET-48:UNTIL Ch%>0ANDCh%<4
   27 CASE Ch% OF
   28  WHEN 1:PROCDefineKeys
   29  WHEN 2:PROCDefaultKeys
   30 ENDCASE
   31UNTIL Ch%=3
   32:
   33CLS:ON
   34END
   35:
   36DEF PROCCentre(P$):PRINT TAB((W%-LEN(P$))/2)P$:ENDPROC
   37DEF PROCCentreY(Y%,P$):PRINT TAB((W%-LEN(P$))/2,Y%)P$;:ENDPROC
   38:
   39DEF PROCDisplayKeys
   40FOR K%=1 TO 11
   41 PRINT TAB(W%/2-LEN(KeyName$(K%)),K%+1)KeyName$(K%);" - ";Key$(OldKeys%?KeyMap%(K%)-128)
   42NEXT
   43ENDPROC
   44:
   45DEF PROCDefineKeys
   46SYS "OS_Byte",200,1 TO ,OldFX200%
   47CLS:PROCCentre("Choose keys")
   48K%=1
   49REPEAT
   50 PROCCentreY(15,"Press key for "+KeyName$(K%))
   51 REPEAT:SYS"OS_Byte",121,3 TO ,Key%:UNTIL Key%=&FF
   52 REPEAT:SYS"OS_Byte",121,3 TO ,Key%:UNTIL Key%<>&FF
   53 J%=1
   54 WHILE J%<K% AND NewKeys%?(KeyMap%(J%))<>Key%+128:J%+=1:ENDWHILE
   55 IF J%=K% THEN
   56  PRINT TAB(0,17)SPC(W%);
   57  PRINT TAB(W%/2-LEN(KeyName$(K%)),K%+1)KeyName$(K%);" - ";Key$(Key%)
   58  NewKeys%?(KeyMap%(K%))=Key%+128
   59  K%+=1
   60 ELSE
   61  VDU7:PROCCentreY(17,"That key has already been used.")
   62 ENDIF
   63 PRINT TAB(0,15)SPC(W%);
   64UNTIL K%=12
   65SYS"OS_Byte",200,OldFX200%
   66PROCSaveKeys
   67ENDPROC
   68:
   69DEF PROCDefaultKeys
   70CLS:PROCCentre("Default keys")
   71RESTORE
   72FOR K%=0 TO 10:READ NewKeys%?K%:NEXT
   73PRINT
   74FOR K%=1 TO 11
   75 PRINT TAB(W%/2-LEN(KeyName$(K%)))KeyName$(K%);" - ";Key$(NewKeys%?KeyMap%(K%)-128)
   76NEXT
   77PROCSaveKeys
   78ENDPROC
   79:
   80DEF PROCSaveKeys
   81*FX21
   82PROCCentreY(15,"Save these keys (Y/N)? ")
   83REPEAT:YN$=GET$:UNTIL INSTR("YyNn",YN$):PRINT YN$
   84IF YN$="N" OR YN$="n" ENDPROC
   85FOR K%=0 TO 10:OldKeys%?K%=NewKeys%?K%:NEXT
   86OSCLI"Save <TwinWorld$Dir>.Keys "+STR$~OldKeys%+"+B"
   87*Stamp <TwinWorld$Dir>.Keys
   88ENDPROC
   89:
   90DEF PROCError
   91CLS:IF ERR<>17 PRINT REPORT$
   92ENDPROC
   93:
   94DATA 84+128,55+128,89+128,112+128,98+128
   95DATA 73+128,81+128,97+128,66+128,79+128,104+128
   96:
   97DATA Left,7,Right,8,Up,9,Down,10,Fire,5
   98DATA Choose Bubble,4,Call Merchant,0,Pause,1
   99DATA Lose a Life,3,End Game,2,Save Game,6
  100:
  101DATA Left Shift,Left Ctrl,Left Alt,Right Shift,Right Ctrl,Right Alt
  102DATA Left mouse button,Centre mouse button,Right mouse button,,,,
  103DATA Q,3,4,5,F4,8,F7,-,6,"�",Keypad 6,Keypad 7,F11,F12,F10,Scroll lock
  104DATA Print,W,E,T,7,I,9,0,_,"�",Keypad 8,Keypad 9,Break,~,FALSE,Back space
  105DATA 1,2,D,R,6,U,O,P,[,"�",Keypad +,Keypad -,Keypad Enter,Insert,Home
  106DATA Page Up,Caps Lock,A,X,F,Y,J,K,@,;,Return,Keypad /,,Keypad .
  107DATA Num Lock,Page Down,',,S,C,G,H,N,L,;,],Delete,Keypad #,Keypad *,
  108DATA =,(extra),,Tab,Z,Space Bar,V,B,M,",",.,/,Copy,Keypad 0,Keypad 1
  109DATA Keypad 3,,,,Escape,F1,F2,F3,F5,F6,F8,F9,\,"�",Keypad 4,Keypad 5
  110DATA Keypad 2
  111:
  112DATA 45,`,94,\,105,End,120,#
� >SetKeys
-� Program by James Byrne (jbyrne@gol.com)
� V1.50 (28 October 1996)
:
�:�
:
� � �Error:�
� OldKeys% 11,NewKeys% 11
	,�"Load <TwinWorld$Dir>.Keys "+�~OldKeys%

:
.� KeyName$(11),KeyMap%(11),Key$(124),Bl% 8
� K%=0 � 10:� NewKeys%?K%:�

,� K%=1 � 11:� KeyName$(K%),KeyMap%(K%):�
� K%=3 � 124:� Key$(K%):�
(ș "OS_InstallKeyHandler",1 � KbdID%
+� KbdID%=2 � � I%=1 � 4:� K%,Key$(K%):�
>!Bl%=256:Bl%!4=-1:ș "OS_ReadVduVariables",Bl%,Bl%:W%=!Bl%
:
�
, �:�Centre("Twin World Key Definitions")
 �DisplayKeys
. �CentreY(15,"Change keys ............ 1")
. �CentreY(17,"Restore default keys ... 2")
. �CentreY(19,"Exit ................... 3")
& �CentreY(22,"Enter choice (1-3)")
 �:Ch%=�-48:� Ch%>0�Ch%<4

 Ȏ Ch% �
  � 1:�DefineKeys
  � 2:�DefaultKeys
 �
� Ch%=3
 :
!�:�
"�
#:
$&� �Centre(P$):� �(W%-�(P$))/2)P$:�
%.� �CentreY(Y%,P$):� �(W%-�(P$))/2,Y%)P$;:�
&:
'� �DisplayKeys
(� K%=1 � 11
)S � �W%/2-�(KeyName$(K%)),K%+1)KeyName$(K%);" - ";Key$(OldKeys%?KeyMap%(K%)-128)
*�
+�
,:
-� �DefineKeys
.#ș "OS_Byte",200,1 � ,OldFX200%
/�:�Centre("Choose keys")
0K%=1
1�
2/ �CentreY(15,"Press key for "+KeyName$(K%))
3+ �:ș"OS_Byte",121,3 � ,Key%:� Key%=&FF
4, �:ș"OS_Byte",121,3 � ,Key%:� Key%<>&FF
5	 J%=1
68 ȕ J%<K% � NewKeys%?(KeyMap%(J%))<>Key%+128:J%+=1:�
7 � J%=K% �
8  � �0,17)�(W%);
9@  � �W%/2-�(KeyName$(K%)),K%+1)KeyName$(K%);" - ";Key$(Key%)
:%  NewKeys%?(KeyMap%(K%))=Key%+128
;  K%+=1
< �
=7  �7:�CentreY(17,"That key has already been used.")
> �
? � �0,15)�(W%);
@� K%=12
Aș"OS_Byte",200,OldFX200%
B
�SaveKeys
C�
D:
E� �DefaultKeys
F�:�Centre("Default keys")
G�
H� K%=0 � 10:� NewKeys%?K%:�
I�
J� K%=1 � 11
KN � �W%/2-�(KeyName$(K%)))KeyName$(K%);" - ";Key$(NewKeys%?KeyMap%(K%)-128)
L�
M
�SaveKeys
N�
O:
P� �SaveKeys
Q	*FX21
R*�CentreY(15,"Save these keys (Y/N)? ")
S �:YN$=�:� �"YyNn",YN$):� YN$
T� YN$="N" � YN$="n" �
U)� K%=0 � 10:OldKeys%?K%=NewKeys%?K%:�
V1�"Save <TwinWorld$Dir>.Keys "+�~OldKeys%+"+B"
W*Stamp <TwinWorld$Dir>.Keys
X�
Y:
Z� �Error
[�:� �<>17 � �$
\�
]:
^)� 84+128,55+128,89+128,112+128,98+128
_0� 73+128,81+128,97+128,66+128,79+128,104+128
`:
a(� Left,7,Right,8,Up,9,Down,10,Fire,5
b-� Choose Bubble,4,Call Merchant,0,Pause,1
c*� Lose a Life,3,End Game,2,Save Game,6
d:
eD� Left Shift,Left Ctrl,Left Alt,Right Shift,Right Ctrl,Right Alt
fB� Left mouse button,Centre mouse button,Right mouse button,,,,
gG� Q,3,4,5,F4,8,F7,-,6,"�",Keypad 6,Keypad 7,F11,F12,F10,Scroll lock
hF� Print,W,E,T,7,I,9,0,_,"�",Keypad 8,Keypad 9,Break,~,�,Back space
iF� 1,2,D,R,6,U,O,P,[,"�",Keypad +,Keypad -,Keypad Enter,Insert,Home
jA� Page Up,Caps Lock,A,X,F,Y,J,K,@,;,Return,Keypad /,,Keypad .
kE� Num Lock,Page Down,',,S,C,G,H,N,L,;,],Delete,Keypad #,Keypad *,
lE� =,(extra),,Tab,Z,Space Bar,V,B,M,",",.,/,Copy,Keypad 0,Keypad 1
mE� Keypad 3,,,,Escape,F1,F2,F3,F5,F6,F8,F9,\,"�",Keypad 4,Keypad 5
n� Keypad 2
o:
p� 45,`,94,\,105,End,120,#
�
00000000  0d 00 01 0e f4 20 3e 53  65 74 4b 65 79 73 0d 00  |..... >SetKeys..|
00000010  02 2d f4 20 50 72 6f 67  72 61 6d 20 62 79 20 4a  |.-. Program by J|
00000020  61 6d 65 73 20 42 79 72  6e 65 20 28 6a 62 79 72  |ames Byrne (jbyr|
00000030  6e 65 40 67 6f 6c 2e 63  6f 6d 29 0d 00 03 1d f4  |ne@gol.com).....|
00000040  20 56 31 2e 35 30 20 28  32 38 20 4f 63 74 6f 62  | V1.50 (28 Octob|
00000050  65 72 20 31 39 39 36 29  0d 00 04 05 3a 0d 00 05  |er 1996)....:...|
00000060  07 db 3a 87 0d 00 06 05  3a 0d 00 07 10 ee 20 85  |..:.....:..... .|
00000070  20 f2 45 72 72 6f 72 3a  e0 0d 00 08 1d de 20 4f  | .Error:...... O|
00000080  6c 64 4b 65 79 73 25 20  31 31 2c 4e 65 77 4b 65  |ldKeys% 11,NewKe|
00000090  79 73 25 20 31 31 0d 00  09 2c ff 22 4c 6f 61 64  |ys% 11...,."Load|
000000a0  20 3c 54 77 69 6e 57 6f  72 6c 64 24 44 69 72 3e  | <TwinWorld$Dir>|
000000b0  2e 4b 65 79 73 20 22 2b  c3 7e 4f 6c 64 4b 65 79  |.Keys "+.~OldKey|
000000c0  73 25 0d 00 0a 05 3a 0d  00 0b 2e de 20 4b 65 79  |s%....:..... Key|
000000d0  4e 61 6d 65 24 28 31 31  29 2c 4b 65 79 4d 61 70  |Name$(11),KeyMap|
000000e0  25 28 31 31 29 2c 4b 65  79 24 28 31 32 34 29 2c  |%(11),Key$(124),|
000000f0  42 6c 25 20 38 0d 00 0c  1f e3 20 4b 25 3d 30 20  |Bl% 8..... K%=0 |
00000100  b8 20 31 30 3a f3 20 4e  65 77 4b 65 79 73 25 3f  |. 10:. NewKeys%?|
00000110  4b 25 3a ed 0d 00 0d 2c  e3 20 4b 25 3d 31 20 b8  |K%:....,. K%=1 .|
00000120  20 31 31 3a f3 20 4b 65  79 4e 61 6d 65 24 28 4b  | 11:. KeyName$(K|
00000130  25 29 2c 4b 65 79 4d 61  70 25 28 4b 25 29 3a ed  |%),KeyMap%(K%):.|
00000140  0d 00 0e 1d e3 20 4b 25  3d 33 20 b8 20 31 32 34  |..... K%=3 . 124|
00000150  3a f3 20 4b 65 79 24 28  4b 25 29 3a ed 0d 00 0f  |:. Key$(K%):....|
00000160  28 c8 99 20 22 4f 53 5f  49 6e 73 74 61 6c 6c 4b  |(.. "OS_InstallK|
00000170  65 79 48 61 6e 64 6c 65  72 22 2c 31 20 b8 20 4b  |eyHandler",1 . K|
00000180  62 64 49 44 25 0d 00 10  2b e7 20 4b 62 64 49 44  |bdID%...+. KbdID|
00000190  25 3d 32 20 8c 20 e3 20  49 25 3d 31 20 b8 20 34  |%=2 . . I%=1 . 4|
000001a0  3a f3 20 4b 25 2c 4b 65  79 24 28 4b 25 29 3a ed  |:. K%,Key$(K%):.|
000001b0  0d 00 11 3e 21 42 6c 25  3d 32 35 36 3a 42 6c 25  |...>!Bl%=256:Bl%|
000001c0  21 34 3d 2d 31 3a c8 99  20 22 4f 53 5f 52 65 61  |!4=-1:.. "OS_Rea|
000001d0  64 56 64 75 56 61 72 69  61 62 6c 65 73 22 2c 42  |dVduVariables",B|
000001e0  6c 25 2c 42 6c 25 3a 57  25 3d 21 42 6c 25 0d 00  |l%,Bl%:W%=!Bl%..|
000001f0  12 05 3a 0d 00 13 05 f5  0d 00 14 2c 20 db 3a f2  |..:........, .:.|
00000200  43 65 6e 74 72 65 28 22  54 77 69 6e 20 57 6f 72  |Centre("Twin Wor|
00000210  6c 64 20 4b 65 79 20 44  65 66 69 6e 69 74 69 6f  |ld Key Definitio|
00000220  6e 73 22 29 0d 00 15 11  20 f2 44 69 73 70 6c 61  |ns").... .Displa|
00000230  79 4b 65 79 73 0d 00 16  2e 20 f2 43 65 6e 74 72  |yKeys.... .Centr|
00000240  65 59 28 31 35 2c 22 43  68 61 6e 67 65 20 6b 65  |eY(15,"Change ke|
00000250  79 73 20 2e 2e 2e 2e 2e  2e 2e 2e 2e 2e 2e 2e 20  |ys ............ |
00000260  31 22 29 0d 00 17 2e 20  f2 43 65 6e 74 72 65 59  |1").... .CentreY|
00000270  28 31 37 2c 22 52 65 73  74 6f 72 65 20 64 65 66  |(17,"Restore def|
00000280  61 75 6c 74 20 6b 65 79  73 20 2e 2e 2e 20 32 22  |ault keys ... 2"|
00000290  29 0d 00 18 2e 20 f2 43  65 6e 74 72 65 59 28 31  |).... .CentreY(1|
000002a0  39 2c 22 45 78 69 74 20  2e 2e 2e 2e 2e 2e 2e 2e  |9,"Exit ........|
000002b0  2e 2e 2e 2e 2e 2e 2e 2e  2e 2e 2e 20 33 22 29 0d  |........... 3").|
000002c0  00 19 26 20 f2 43 65 6e  74 72 65 59 28 32 32 2c  |..& .CentreY(22,|
000002d0  22 45 6e 74 65 72 20 63  68 6f 69 63 65 20 28 31  |"Enter choice (1|
000002e0  2d 33 29 22 29 0d 00 1a  1d 20 f5 3a 43 68 25 3d  |-3)").... .:Ch%=|
000002f0  a5 2d 34 38 3a fd 20 43  68 25 3e 30 80 43 68 25  |.-48:. Ch%>0.Ch%|
00000300  3c 34 0d 00 1b 0d 20 c8  8e 20 43 68 25 20 ca 0d  |<4.... .. Ch% ..|
00000310  00 1c 15 20 20 c9 20 31  3a f2 44 65 66 69 6e 65  |...  . 1:.Define|
00000320  4b 65 79 73 0d 00 1d 16  20 20 c9 20 32 3a f2 44  |Keys....  . 2:.D|
00000330  65 66 61 75 6c 74 4b 65  79 73 0d 00 1e 06 20 cb  |efaultKeys.... .|
00000340  0d 00 1f 0b fd 20 43 68  25 3d 33 0d 00 20 05 3a  |..... Ch%=3.. .:|
00000350  0d 00 21 07 db 3a ee 0d  00 22 05 e0 0d 00 23 05  |..!..:..."....#.|
00000360  3a 0d 00 24 26 dd 20 f2  43 65 6e 74 72 65 28 50  |:..$&. .Centre(P|
00000370  24 29 3a f1 20 8a 28 57  25 2d a9 28 50 24 29 29  |$):. .(W%-.(P$))|
00000380  2f 32 29 50 24 3a e1 0d  00 25 2e dd 20 f2 43 65  |/2)P$:...%.. .Ce|
00000390  6e 74 72 65 59 28 59 25  2c 50 24 29 3a f1 20 8a  |ntreY(Y%,P$):. .|
000003a0  28 57 25 2d a9 28 50 24  29 29 2f 32 2c 59 25 29  |(W%-.(P$))/2,Y%)|
000003b0  50 24 3b 3a e1 0d 00 26  05 3a 0d 00 27 12 dd 20  |P$;:...&.:..'.. |
000003c0  f2 44 69 73 70 6c 61 79  4b 65 79 73 0d 00 28 0f  |.DisplayKeys..(.|
000003d0  e3 20 4b 25 3d 31 20 b8  20 31 31 0d 00 29 53 20  |. K%=1 . 11..)S |
000003e0  f1 20 8a 57 25 2f 32 2d  a9 28 4b 65 79 4e 61 6d  |. .W%/2-.(KeyNam|
000003f0  65 24 28 4b 25 29 29 2c  4b 25 2b 31 29 4b 65 79  |e$(K%)),K%+1)Key|
00000400  4e 61 6d 65 24 28 4b 25  29 3b 22 20 2d 20 22 3b  |Name$(K%);" - ";|
00000410  4b 65 79 24 28 4f 6c 64  4b 65 79 73 25 3f 4b 65  |Key$(OldKeys%?Ke|
00000420  79 4d 61 70 25 28 4b 25  29 2d 31 32 38 29 0d 00  |yMap%(K%)-128)..|
00000430  2a 05 ed 0d 00 2b 05 e1  0d 00 2c 05 3a 0d 00 2d  |*....+....,.:..-|
00000440  11 dd 20 f2 44 65 66 69  6e 65 4b 65 79 73 0d 00  |.. .DefineKeys..|
00000450  2e 23 c8 99 20 22 4f 53  5f 42 79 74 65 22 2c 32  |.#.. "OS_Byte",2|
00000460  30 30 2c 31 20 b8 20 2c  4f 6c 64 46 58 32 30 30  |00,1 . ,OldFX200|
00000470  25 0d 00 2f 1c db 3a f2  43 65 6e 74 72 65 28 22  |%../..:.Centre("|
00000480  43 68 6f 6f 73 65 20 6b  65 79 73 22 29 0d 00 30  |Choose keys")..0|
00000490  08 4b 25 3d 31 0d 00 31  05 f5 0d 00 32 2f 20 f2  |.K%=1..1....2/ .|
000004a0  43 65 6e 74 72 65 59 28  31 35 2c 22 50 72 65 73  |CentreY(15,"Pres|
000004b0  73 20 6b 65 79 20 66 6f  72 20 22 2b 4b 65 79 4e  |s key for "+KeyN|
000004c0  61 6d 65 24 28 4b 25 29  29 0d 00 33 2b 20 f5 3a  |ame$(K%))..3+ .:|
000004d0  c8 99 22 4f 53 5f 42 79  74 65 22 2c 31 32 31 2c  |.."OS_Byte",121,|
000004e0  33 20 b8 20 2c 4b 65 79  25 3a fd 20 4b 65 79 25  |3 . ,Key%:. Key%|
000004f0  3d 26 46 46 0d 00 34 2c  20 f5 3a c8 99 22 4f 53  |=&FF..4, .:.."OS|
00000500  5f 42 79 74 65 22 2c 31  32 31 2c 33 20 b8 20 2c  |_Byte",121,3 . ,|
00000510  4b 65 79 25 3a fd 20 4b  65 79 25 3c 3e 26 46 46  |Key%:. Key%<>&FF|
00000520  0d 00 35 09 20 4a 25 3d  31 0d 00 36 38 20 c8 95  |..5. J%=1..68 ..|
00000530  20 4a 25 3c 4b 25 20 80  20 4e 65 77 4b 65 79 73  | J%<K% . NewKeys|
00000540  25 3f 28 4b 65 79 4d 61  70 25 28 4a 25 29 29 3c  |%?(KeyMap%(J%))<|
00000550  3e 4b 65 79 25 2b 31 32  38 3a 4a 25 2b 3d 31 3a  |>Key%+128:J%+=1:|
00000560  ce 0d 00 37 0e 20 e7 20  4a 25 3d 4b 25 20 8c 0d  |...7. . J%=K% ..|
00000570  00 38 14 20 20 f1 20 8a  30 2c 31 37 29 89 28 57  |.8.  . .0,17).(W|
00000580  25 29 3b 0d 00 39 40 20  20 f1 20 8a 57 25 2f 32  |%);..9@  . .W%/2|
00000590  2d a9 28 4b 65 79 4e 61  6d 65 24 28 4b 25 29 29  |-.(KeyName$(K%))|
000005a0  2c 4b 25 2b 31 29 4b 65  79 4e 61 6d 65 24 28 4b  |,K%+1)KeyName$(K|
000005b0  25 29 3b 22 20 2d 20 22  3b 4b 65 79 24 28 4b 65  |%);" - ";Key$(Ke|
000005c0  79 25 29 0d 00 3a 25 20  20 4e 65 77 4b 65 79 73  |y%)..:%  NewKeys|
000005d0  25 3f 28 4b 65 79 4d 61  70 25 28 4b 25 29 29 3d  |%?(KeyMap%(K%))=|
000005e0  4b 65 79 25 2b 31 32 38  0d 00 3b 0b 20 20 4b 25  |Key%+128..;.  K%|
000005f0  2b 3d 31 0d 00 3c 06 20  cc 0d 00 3d 37 20 20 ef  |+=1..<. ...=7  .|
00000600  37 3a f2 43 65 6e 74 72  65 59 28 31 37 2c 22 54  |7:.CentreY(17,"T|
00000610  68 61 74 20 6b 65 79 20  68 61 73 20 61 6c 72 65  |hat key has alre|
00000620  61 64 79 20 62 65 65 6e  20 75 73 65 64 2e 22 29  |ady been used.")|
00000630  0d 00 3e 06 20 cd 0d 00  3f 13 20 f1 20 8a 30 2c  |..>. ...?. . .0,|
00000640  31 35 29 89 28 57 25 29  3b 0d 00 40 0b fd 20 4b  |15).(W%);..@.. K|
00000650  25 3d 31 32 0d 00 41 1d  c8 99 22 4f 53 5f 42 79  |%=12..A..."OS_By|
00000660  74 65 22 2c 32 30 30 2c  4f 6c 64 46 58 32 30 30  |te",200,OldFX200|
00000670  25 0d 00 42 0d f2 53 61  76 65 4b 65 79 73 0d 00  |%..B..SaveKeys..|
00000680  43 05 e1 0d 00 44 05 3a  0d 00 45 12 dd 20 f2 44  |C....D.:..E.. .D|
00000690  65 66 61 75 6c 74 4b 65  79 73 0d 00 46 1d db 3a  |efaultKeys..F..:|
000006a0  f2 43 65 6e 74 72 65 28  22 44 65 66 61 75 6c 74  |.Centre("Default|
000006b0  20 6b 65 79 73 22 29 0d  00 47 05 f7 0d 00 48 1f  | keys")..G....H.|
000006c0  e3 20 4b 25 3d 30 20 b8  20 31 30 3a f3 20 4e 65  |. K%=0 . 10:. Ne|
000006d0  77 4b 65 79 73 25 3f 4b  25 3a ed 0d 00 49 05 f1  |wKeys%?K%:...I..|
000006e0  0d 00 4a 0f e3 20 4b 25  3d 31 20 b8 20 31 31 0d  |..J.. K%=1 . 11.|
000006f0  00 4b 4e 20 f1 20 8a 57  25 2f 32 2d a9 28 4b 65  |.KN . .W%/2-.(Ke|
00000700  79 4e 61 6d 65 24 28 4b  25 29 29 29 4b 65 79 4e  |yName$(K%)))KeyN|
00000710  61 6d 65 24 28 4b 25 29  3b 22 20 2d 20 22 3b 4b  |ame$(K%);" - ";K|
00000720  65 79 24 28 4e 65 77 4b  65 79 73 25 3f 4b 65 79  |ey$(NewKeys%?Key|
00000730  4d 61 70 25 28 4b 25 29  2d 31 32 38 29 0d 00 4c  |Map%(K%)-128)..L|
00000740  05 ed 0d 00 4d 0d f2 53  61 76 65 4b 65 79 73 0d  |....M..SaveKeys.|
00000750  00 4e 05 e1 0d 00 4f 05  3a 0d 00 50 0f dd 20 f2  |.N....O.:..P.. .|
00000760  53 61 76 65 4b 65 79 73  0d 00 51 09 2a 46 58 32  |SaveKeys..Q.*FX2|
00000770  31 0d 00 52 2a f2 43 65  6e 74 72 65 59 28 31 35  |1..R*.CentreY(15|
00000780  2c 22 53 61 76 65 20 74  68 65 73 65 20 6b 65 79  |,"Save these key|
00000790  73 20 28 59 2f 4e 29 3f  20 22 29 0d 00 53 20 f5  |s (Y/N)? ")..S .|
000007a0  3a 59 4e 24 3d be 3a fd  20 a7 22 59 79 4e 6e 22  |:YN$=.:. ."YyNn"|
000007b0  2c 59 4e 24 29 3a f1 20  59 4e 24 0d 00 54 19 e7  |,YN$):. YN$..T..|
000007c0  20 59 4e 24 3d 22 4e 22  20 84 20 59 4e 24 3d 22  | YN$="N" . YN$="|
000007d0  6e 22 20 e1 0d 00 55 29  e3 20 4b 25 3d 30 20 b8  |n" ...U). K%=0 .|
000007e0  20 31 30 3a 4f 6c 64 4b  65 79 73 25 3f 4b 25 3d  | 10:OldKeys%?K%=|
000007f0  4e 65 77 4b 65 79 73 25  3f 4b 25 3a ed 0d 00 56  |NewKeys%?K%:...V|
00000800  31 ff 22 53 61 76 65 20  3c 54 77 69 6e 57 6f 72  |1."Save <TwinWor|
00000810  6c 64 24 44 69 72 3e 2e  4b 65 79 73 20 22 2b c3  |ld$Dir>.Keys "+.|
00000820  7e 4f 6c 64 4b 65 79 73  25 2b 22 2b 42 22 0d 00  |~OldKeys%+"+B"..|
00000830  57 1f 2a 53 74 61 6d 70  20 3c 54 77 69 6e 57 6f  |W.*Stamp <TwinWo|
00000840  72 6c 64 24 44 69 72 3e  2e 4b 65 79 73 0d 00 58  |rld$Dir>.Keys..X|
00000850  05 e1 0d 00 59 05 3a 0d  00 5a 0c dd 20 f2 45 72  |....Y.:..Z.. .Er|
00000860  72 6f 72 0d 00 5b 12 db  3a e7 20 9f 3c 3e 31 37  |ror..[..:. .<>17|
00000870  20 f1 20 f6 24 0d 00 5c  05 e1 0d 00 5d 05 3a 0d  | . .$..\....].:.|
00000880  00 5e 29 dc 20 38 34 2b  31 32 38 2c 35 35 2b 31  |.^). 84+128,55+1|
00000890  32 38 2c 38 39 2b 31 32  38 2c 31 31 32 2b 31 32  |28,89+128,112+12|
000008a0  38 2c 39 38 2b 31 32 38  0d 00 5f 30 dc 20 37 33  |8,98+128.._0. 73|
000008b0  2b 31 32 38 2c 38 31 2b  31 32 38 2c 39 37 2b 31  |+128,81+128,97+1|
000008c0  32 38 2c 36 36 2b 31 32  38 2c 37 39 2b 31 32 38  |28,66+128,79+128|
000008d0  2c 31 30 34 2b 31 32 38  0d 00 60 05 3a 0d 00 61  |,104+128..`.:..a|
000008e0  28 dc 20 4c 65 66 74 2c  37 2c 52 69 67 68 74 2c  |(. Left,7,Right,|
000008f0  38 2c 55 70 2c 39 2c 44  6f 77 6e 2c 31 30 2c 46  |8,Up,9,Down,10,F|
00000900  69 72 65 2c 35 0d 00 62  2d dc 20 43 68 6f 6f 73  |ire,5..b-. Choos|
00000910  65 20 42 75 62 62 6c 65  2c 34 2c 43 61 6c 6c 20  |e Bubble,4,Call |
00000920  4d 65 72 63 68 61 6e 74  2c 30 2c 50 61 75 73 65  |Merchant,0,Pause|
00000930  2c 31 0d 00 63 2a dc 20  4c 6f 73 65 20 61 20 4c  |,1..c*. Lose a L|
00000940  69 66 65 2c 33 2c 45 6e  64 20 47 61 6d 65 2c 32  |ife,3,End Game,2|
00000950  2c 53 61 76 65 20 47 61  6d 65 2c 36 0d 00 64 05  |,Save Game,6..d.|
00000960  3a 0d 00 65 44 dc 20 4c  65 66 74 20 53 68 69 66  |:..eD. Left Shif|
00000970  74 2c 4c 65 66 74 20 43  74 72 6c 2c 4c 65 66 74  |t,Left Ctrl,Left|
00000980  20 41 6c 74 2c 52 69 67  68 74 20 53 68 69 66 74  | Alt,Right Shift|
00000990  2c 52 69 67 68 74 20 43  74 72 6c 2c 52 69 67 68  |,Right Ctrl,Righ|
000009a0  74 20 41 6c 74 0d 00 66  42 dc 20 4c 65 66 74 20  |t Alt..fB. Left |
000009b0  6d 6f 75 73 65 20 62 75  74 74 6f 6e 2c 43 65 6e  |mouse button,Cen|
000009c0  74 72 65 20 6d 6f 75 73  65 20 62 75 74 74 6f 6e  |tre mouse button|
000009d0  2c 52 69 67 68 74 20 6d  6f 75 73 65 20 62 75 74  |,Right mouse but|
000009e0  74 6f 6e 2c 2c 2c 2c 0d  00 67 47 dc 20 51 2c 33  |ton,,,,..gG. Q,3|
000009f0  2c 34 2c 35 2c 46 34 2c  38 2c 46 37 2c 2d 2c 36  |,4,5,F4,8,F7,-,6|
00000a00  2c 22 88 22 2c 4b 65 79  70 61 64 20 36 2c 4b 65  |,".",Keypad 6,Ke|
00000a10  79 70 61 64 20 37 2c 46  31 31 2c 46 31 32 2c 46  |ypad 7,F11,F12,F|
00000a20  31 30 2c 53 63 72 6f 6c  6c 20 6c 6f 63 6b 0d 00  |10,Scroll lock..|
00000a30  68 46 dc 20 50 72 69 6e  74 2c 57 2c 45 2c 54 2c  |hF. Print,W,E,T,|
00000a40  37 2c 49 2c 39 2c 30 2c  5f 2c 22 8a 22 2c 4b 65  |7,I,9,0,_,".",Ke|
00000a50  79 70 61 64 20 38 2c 4b  65 79 70 61 64 20 39 2c  |ypad 8,Keypad 9,|
00000a60  42 72 65 61 6b 2c 7e 2c  a3 2c 42 61 63 6b 20 73  |Break,~,.,Back s|
00000a70  70 61 63 65 0d 00 69 46  dc 20 31 2c 32 2c 44 2c  |pace..iF. 1,2,D,|
00000a80  52 2c 36 2c 55 2c 4f 2c  50 2c 5b 2c 22 8b 22 2c  |R,6,U,O,P,[,".",|
00000a90  4b 65 79 70 61 64 20 2b  2c 4b 65 79 70 61 64 20  |Keypad +,Keypad |
00000aa0  2d 2c 4b 65 79 70 61 64  20 45 6e 74 65 72 2c 49  |-,Keypad Enter,I|
00000ab0  6e 73 65 72 74 2c 48 6f  6d 65 0d 00 6a 41 dc 20  |nsert,Home..jA. |
00000ac0  50 61 67 65 20 55 70 2c  43 61 70 73 20 4c 6f 63  |Page Up,Caps Loc|
00000ad0  6b 2c 41 2c 58 2c 46 2c  59 2c 4a 2c 4b 2c 40 2c  |k,A,X,F,Y,J,K,@,|
00000ae0  3b 2c 52 65 74 75 72 6e  2c 4b 65 79 70 61 64 20  |;,Return,Keypad |
00000af0  2f 2c 2c 4b 65 79 70 61  64 20 2e 0d 00 6b 45 dc  |/,,Keypad ...kE.|
00000b00  20 4e 75 6d 20 4c 6f 63  6b 2c 50 61 67 65 20 44  | Num Lock,Page D|
00000b10  6f 77 6e 2c 27 2c 2c 53  2c 43 2c 47 2c 48 2c 4e  |own,',,S,C,G,H,N|
00000b20  2c 4c 2c 3b 2c 5d 2c 44  65 6c 65 74 65 2c 4b 65  |,L,;,],Delete,Ke|
00000b30  79 70 61 64 20 23 2c 4b  65 79 70 61 64 20 2a 2c  |ypad #,Keypad *,|
00000b40  0d 00 6c 45 dc 20 3d 2c  28 65 78 74 72 61 29 2c  |..lE. =,(extra),|
00000b50  2c 54 61 62 2c 5a 2c 53  70 61 63 65 20 42 61 72  |,Tab,Z,Space Bar|
00000b60  2c 56 2c 42 2c 4d 2c 22  2c 22 2c 2e 2c 2f 2c 43  |,V,B,M,",",.,/,C|
00000b70  6f 70 79 2c 4b 65 79 70  61 64 20 30 2c 4b 65 79  |opy,Keypad 0,Key|
00000b80  70 61 64 20 31 0d 00 6d  45 dc 20 4b 65 79 70 61  |pad 1..mE. Keypa|
00000b90  64 20 33 2c 2c 2c 2c 45  73 63 61 70 65 2c 46 31  |d 3,,,,Escape,F1|
00000ba0  2c 46 32 2c 46 33 2c 46  35 2c 46 36 2c 46 38 2c  |,F2,F3,F5,F6,F8,|
00000bb0  46 39 2c 5c 2c 22 89 22  2c 4b 65 79 70 61 64 20  |F9,\,".",Keypad |
00000bc0  34 2c 4b 65 79 70 61 64  20 35 0d 00 6e 0e dc 20  |4,Keypad 5..n.. |
00000bd0  4b 65 79 70 61 64 20 32  0d 00 6f 05 3a 0d 00 70  |Keypad 2..o.:..p|
00000be0  1d dc 20 34 35 2c 60 2c  39 34 2c 5c 2c 31 30 35  |.. 45,`,94,\,105|
00000bf0  2c 45 6e 64 2c 31 32 30  2c 23 0d ff              |,End,120,#..|
00000bfc