diff --git a/trunk/workspace/BMC/Pimmodore-64/BMC64.VKM/C128/rpi_pos.vkm b/trunk/workspace/BMC/Pimmodore-64/BMC64.VKM/C128/rpi_pos.vkm new file mode 100644 index 00000000..34e4831c --- /dev/null +++ b/trunk/workspace/BMC/Pimmodore-64/BMC64.VKM/C128/rpi_pos.vkm @@ -0,0 +1,265 @@ +# Bare Metal Commodore keyboard mapping file suitable for real C64 keyboards using Keymmodore-64 interfase by K-rnivoro. https://github.com/K-rnivoro/Keymmodore-64 +# Tested with BMC v3.9 (https://accentual.com/bmc64/) +# Mapped for positional compatibility to C-128 Keyboards. +# Based on C64 Positional Layout. +# Keys not present in C-64 (like NumPad Keys, ESC, TAB) are accessed with Right Shift Key. +# +# File format: +# - comment lines start with '#' +# - keyword lines start with '!keyword' +# - normal line has 'keysym/scancode row column shiftflag' +# +# Keywords and their lines are: +# '!CLEAR' clear whole table +# '!INCLUDE filename' read file as mapping file +# '!LSHIFT row col' left shift keyboard row/column +# '!RSHIFT row col' right shift keyboard row/column +# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT) +# '!UNDEF keysym' remove keysym from table +# +# Shiftflag can have the values: +# 0 key is not shifted for this keysym/scancode +# 1 key is shifted for this keysym/scancode +# 2 left shift +# 4 right shift +# 8 key can be shifted or not with this keysym/scancode +# 16 deshift key for this keysym/scancode +# 32 another definition for this keysym/scancode follows +# +# Negative row values: +# 'keysym -1 n' joystick #1, direction n +# 'keysym -2 n' joystick #2, direction n +# 'keysym -3 0' first RESTORE key +# 'keysym -3 1' second RESTORE key +# 'keysym -4 0' 40/80 column key +# 'keysym -4 1' CAPS (ASCII/DIN) key +# 'keysym -5 n' joyport keypad, key n +# +# Joystick direction values: +# 0 Fire +# 1 South/West +# 2 South +# 3 South/East +# 4 West +# 5 East +# 6 North/West +# 7 North +# 8 North/East +# +# Joyport keypad key layout: +# -------------------------- +# | 0 | 1 | 2 | 3 | 4 | +# -------------------------- +# | 5 | 6 | 7 | 8 | 9 | +# -------------------------- +# | 10 | 11 | 12 | 13 | 14 | +# -------------------------- +# | 15 | 16 | 17 | 18 | 19 | +# -------------------------- +# +# When a bigger spaced key is used, +# it uses the upper left most key value. + +# Positional Mapping, US Layout, C128, X11 + +# C128 Keyboard matrix +# +# +-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0|Bit 1|Bit 2|Bit 3|Bit 4|Bit 5|Bit 6|Bit 7| +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0| DEL |Retrn|C_L/R| F7 | F1 | F3 | F5 |C_U/D| +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 1| 3 # | W | A | 4 $ | Z | S | E | S_L | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 2| 5 % | R | D | 6 & | C | F | T | X | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 3| 7 ' | Y | G | 8 ( | B | H | U | V | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 4| 9 ) | I | J | 0 | M | K | O | N | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 5| + | P | L | - | . > | : [ | @ | , < | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 6|POUND| * | ; ] | HOME| S_R | = | A_UP| / ? | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 7| 1 ! |A_LFT| CTRL| 2 " |SPACE| C= | Q | R/S | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# +# +-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0|Bit 1|Bit 2|Bit 3|Bit 4|Bit 5|Bit 6|Bit 7| +# +------+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 8 |HELP | KP 8| KP 5| TAB | KP 2| KP 4| KP 7| KP 1| +# +------+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 9 | ESC | KP +| KP -| LF |KP CR| KP 6| KP 9| KP 3| +# +------+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 10| ALT | KP 0| KP .|A.UP |A.DWN|A.LFT|A.RGT|NOSCR| +# +------+-----+-----+-----+-----+-----+-----+-----+-----+ + + +!CLEAR +!LSHIFT 1 7 +!RSHIFT 6 4 +!VSHIFT RSHIFT + + +# 40/80 column key +F6 -4 0 + +# CAPS LOCK (ASCII/DIN) key +F10 -4 1 + + +#################### +# Restore key mappings +PageUp -3 0 + + + +##################### +# |Bit 0| DEL |Retrn|C_L/R| F7 | F1 | F3 | F5 |C_U/D| + +BackSpace 0 0 8 +Return 0 1 8 +#Left 0 2 1 +Right 0 2 8 +F1 0 4 8 +F3 0 5 8 +F5 0 6 8 +F7 0 3 8 +Down 0 7 8 +#Up 0 7 1 + +##################### +# |Bit 1| 3 # | W | A | 4 $ | Z | S | E | S_L | + +Shift_L 1 7 2 + + +##################### +# |Bit 2| 5 % | R | D | 6 & | C | F | T | X | + + +##################### +# |Bit 3| 7 ' | Y | G | 8 ( | B | H | U | V | + + +##################### +# |Bit 4| 9 ) | I | J | 0 | M | K | O | N | + + +##################### +# |Bit 5| + | P | L | - | . > | : [ | @ | , < | + +Dash 5 0 8 +Equals 5 3 8 +Period 5 4 32 +Period 5 4 1 +SemiColon 5 5 32 +SemiColon 5 5 1 +LeftBracket 5 6 8 +Comma 5 7 32 +Comma 5 7 1 + +##################### +# |Bit 6| POUND | * | ; ] | HOME| S_R | = | A_UP| / ? | + +Insert 6 0 8 +RightBracket 6 1 8 +SingleQuote 6 2 32 +SingleQuote 6 2 1 +Home 6 3 8 +Shift_R 6 4 4 +BackSlash 6 5 8 +Del 6 6 8 +Slash 6 7 32 +Slash 6 7 1 + +##################### +# |Bit 7| 1 ! |A_LFT| CTRL| 2 " |SPACE| C= | Q | R/S | + +BackQuote 7 1 8 # Arrow_LFT <- +Tab 7 2 8 # Control <- +Space 7 4 8 +Control_L 7 5 8 # CBM Key +Escape 7 7 8 # RUN/STOP <- + +##################### +# |Bit 8 |HELP | KP 8| KP 5| TAB | KP 2| KP 4| KP 7| KP 1| + +F2 8 0 8 +KP_8 8 1 8 +KP_5 8 2 8 +F11 8 3 8 # TAB <- +KP_2 8 4 8 +KP_4 8 5 8 +KP_7 8 6 8 +KP_1 8 7 8 + +##################### +# |Bit 9 | ESC | KP +| KP -| LF |KP CR| KP 6| KP 9| KP 3| + +KP_Multiply 9 0 8 +KP_Add 9 1 8 +KP_Subtract 9 2 8 +F4 9 3 8 +KP_Enter 9 4 8 +KP_6 9 5 8 +KP_9 9 6 8 +KP_3 9 7 8 + +##################### +# |Bit 10| ALT | KP 0| KP .|A.UP |A.DWN|A.LFT|A.RGT|NOSCR| + +F9 10 0 8 +KP_0 10 1 8 +KP_Decimal 10 2 8 +Up 10 3 8 +#Down 10 4 8 +Left 10 5 8 +#Right 10 6 8 +KP_Divide 10 7 8 + + +##################### +# letters and numbers + +0 4 3 8 +1 7 0 8 +2 7 3 8 +3 1 0 8 +4 1 3 8 +5 2 0 8 +6 2 3 8 +7 3 0 8 +8 3 3 8 +9 4 0 8 +a 1 2 8 +b 3 4 8 +c 2 4 8 +d 2 2 8 +e 1 6 8 +f 2 5 8 +g 3 2 8 +h 3 5 8 +i 4 1 8 +j 4 2 8 +k 4 5 8 +l 5 2 8 +m 4 4 8 +n 4 7 8 +o 4 6 8 +p 5 1 8 +q 7 6 8 +r 2 1 8 +s 1 5 8 +t 2 6 8 +u 3 6 8 +v 3 7 8 +w 1 1 8 +x 2 7 8 +y 3 1 8 +z 1 4 8 + + + + +############################################################################## \ No newline at end of file diff --git a/trunk/workspace/BMC/Pimmodore-64/BMC64.VKM/C64/rpi_pos.vkm b/trunk/workspace/BMC/Pimmodore-64/BMC64.VKM/C64/rpi_pos.vkm new file mode 100644 index 00000000..4e1ada1d --- /dev/null +++ b/trunk/workspace/BMC/Pimmodore-64/BMC64.VKM/C64/rpi_pos.vkm @@ -0,0 +1,211 @@ +# Bare Metal Commodore keyboard mapping file suitable for real C64 keyboards using Keymmodore-64 interfase by K-rnivoro. https://github.com/K-rnivoro/Keymmodore-64 +# Tested with BMC v3.9 (https://accentual.com/bmc64/) +# Mapped for positional compatibility to C-64 Keyboards. +# +# File format: +# - comment lines start with '#' +# - keyword lines start with '!keyword' +# - normal line has 'keysym/scancode row column shiftflag' +# +# Keywords and their lines are: +# '!CLEAR' clear whole table +# '!INCLUDE filename' read file as mapping file +# '!LSHIFT row col' left shift keyboard row/column +# '!RSHIFT row col' right shift keyboard row/column +# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT) +# '!SHIFTL shiftkey' shift lock key (RSHIFT or LSHIFT) +# '!UNDEF keysym' remove keysym from table +# +# Shiftflag can have the values: +# 0 key is not shifted for this keysym/scancode +# 1 key is shifted for this keysym/scancode +# 2 left shift +# 4 right shift +# 8 key can be shifted or not with this keysym/scancode +# 16 deshift key for this keysym/scancode +# 32 another definition for this keysym/scancode follows +# +# Negative row values: +# 'keysym -1 n' joystick keymap A, direction n +# 'keysym -2 n' joystick keymap B, direction n +# 'keysym -3 0' first RESTORE key +# 'keysym -3 1' second RESTORE key +# 'keysym -4 0' 40/80 column key +# 'keysym -4 1' CAPS (ASCII/DIN) key +# +# Joystick direction values: +# 0 Fire +# 1 South/West +# 2 South +# 3 South/East +# 4 West +# 5 East +# 6 North/West +# 7 North +# 8 North/East +# +# Joyport keypad key layout: +# -------------------------- +# | 0 | 1 | 2 | 3 | 4 | +# -------------------------- +# | 5 | 6 | 7 | 8 | 9 | +# -------------------------- +# | 10 | 11 | 12 | 13 | 14 | +# -------------------------- +# | 15 | 16 | 17 | 18 | 19 | +# -------------------------- +# +# When a bigger spaced key is used, +# it uses the upper left most key value. + +# Positional Mapping, US Layout, C64, X11 + +# C64 keyboard matrix: +# +# +-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0|Bit 1|Bit 2|Bit 3|Bit 4|Bit 5|Bit 6|Bit 7| +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0| DEL |Retrn|C_L/R| F7 | F1 | F3 | F5 |C_U/D| +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 1| 3 # | W | A | 4 $ | Z | S | E | S_L | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 2| 5 % | R | D | 6 & | C | F | T | X | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 3| 7 ' | Y | G | 8 ( | B | H | U | V | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 4| 9 ) | I | J | 0 | M | K | O | N | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 5| + | P | L | - | . > | : [ | @ | , < | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 6|POUND| * | ; ] | HOME| S_R | = | A_UP| / ? | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 7| 1 ! |A_LFT| CTRL| 2 " |SPACE| C= | Q | R/S | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ + +!CLEAR +!LSHIFT 1 7 +!RSHIFT 6 4 +!VSHIFT RSHIFT +!SHIFTL LSHIFT + +##################### +# |Bit 0| DEL |Retrn|C_L/R| F7 | F1 | F3 | F5 |C_U/D| + +BackSpace 0 0 8 +Return 0 1 8 +Right 0 2 8 +F7 0 3 8 +F1 0 4 8 +F3 0 5 8 +F5 0 6 8 +F6 0 6 1 +Down 0 7 8 + + +##################### +# |Bit 1| 3 # | W | A | 4 $ | Z | S | E | S_L | + +Shift_L 1 7 2 + + +##################### +# |Bit 2| 5 % | R | D | 6 & | C | F | T | X | + + +##################### +# |Bit 3| 7 ' | Y | G | 8 ( | B | H | U | V | + + +##################### +# |Bit 4| 9 ) | I | J | 0 | M | K | O | N | + + +##################### +# |Bit 5| + | P | L | - | . > | : [ | @ | , < | + +Dash 5 0 8 +Equals 5 3 8 +Period 5 4 8 +SemiColon 5 5 8 +LeftBracket 5 6 8 +Comma 5 7 8 + + +##################### +# |Bit 6|POUND| * | ; ] | HOME| S_R | = | A_UP| / ? | + +Insert 6 0 8 +RightBracket 6 1 8 +SingleQuote 6 2 8 +Home 6 3 8 +Shift_R 6 4 4 +BackSlash 6 5 8 +Del 6 6 8 +Slash 6 7 8 + +##################### +# |Bit 7| 1 ! |A_LFT| CTRL| 2 " |SPACE| C= | Q | R/S | + +BackQuote 7 1 8 +Tab 7 2 8 +Space 7 4 8 +Control_L 7 5 8 +Escape 7 7 8 + +##################### +# letters and numbers + +0 4 3 8 +1 7 0 8 +2 7 3 8 +3 1 0 8 +4 1 3 8 +5 2 0 8 +6 2 3 8 +7 3 0 8 +8 3 3 8 +9 4 0 8 + +a 1 2 8 +b 3 4 8 +c 2 4 8 +d 2 2 8 +e 1 6 8 +f 2 5 8 +g 3 2 8 +h 3 5 8 +i 4 1 8 +j 4 2 8 +k 4 5 8 +l 5 2 8 +m 4 4 8 +n 4 7 8 +o 4 6 8 +p 5 1 8 +q 7 6 8 +r 2 1 8 +s 1 5 8 +t 2 6 8 +u 3 6 8 +v 3 7 8 +w 1 1 8 +x 2 7 8 +y 3 1 8 +z 1 4 8 + +# Restore key mappings +PageUp -3 0 + +# joystick keymap A (port 1) +KP_8 -1 7 /* NumPad 8 -> UP */ +KP_2 -1 2 /* NumPad 2 -> DOWN */ +KP_4 -1 4 /* NumPad 4 -> LEFT */ +KP_6 -1 5 /* NumPad 6 -> RIGHT */ +KP_0 -1 0 /* NumPad 0 -> FIRE */ + +# joystick Keymap B (port 2) +KP_7 -2 7 /* NumPad 7 -> UP */ +KP_3 -2 2 /* NumPad 3 -> DOWN */ +KP_1 -2 4 /* NumPad 1 -> LEFT */ +KP_9 -2 5 /* NumPad 9 -> RIGHT */ +KP_Decimal -2 0 /* NumPad . -> FIRE */ \ No newline at end of file diff --git a/trunk/workspace/BMC/Pimmodore-64/BMC64.VKM/PET/rpi_buus_pos.vkm b/trunk/workspace/BMC/Pimmodore-64/BMC64.VKM/PET/rpi_buus_pos.vkm new file mode 100644 index 00000000..0ad44f23 --- /dev/null +++ b/trunk/workspace/BMC/Pimmodore-64/BMC64.VKM/PET/rpi_buus_pos.vkm @@ -0,0 +1,236 @@ +# Bare Metal Commodore keyboard mapping file suitable for real C64 keyboards using Keymmodore-64 interfase by K-rnivoro. https://github.com/K-rnivoro/Keymmodore-64 +# Tested with BMC v3.9 (https://accentual.com/bmc64/) +# Mapped for compatibility to PET Models with Business Keyboards only (3000B, 4000B and 80000 models). +# Based on C64 Positional Layout. +# +# ESCAPE is mapped to F1 Key. +# OFF/REVERSE is mapped to F3 Key. +# REPEAT is mapped to F5 Key. +# Backslash is mapped to £ (Pound) Key. +# TAB is mapped to CTRL Key. +# NumericPad Keys (1 to 0 and Dot) are accessed by pressing Commodore Key (C=). +# Brackets ([/]) Keys are accessed by pressing either Commodore Key (C=) ot Shift Key. +# +# File format: +# - comment lines start with '#' +# - keyword lines start with '!keyword' +# - normal line has 'keysym/scancode row column shiftflag' +# +# Keywords and their lines are: +# '!CLEAR' clear whole table +# '!INCLUDE filename' read file as mapping file +# '!LSHIFT row col' left shift keyboard row/column +# '!RSHIFT row col' right shift keyboard row/column +# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT) +# '!UNDEF keysym' remove keysym from table +# +# Shiftflag can have the values: +# 0 key is not shifted for this keysym/scancode +# 1 key is shifted for this keysym/scancode +# 2 left shift +# 4 right shift +# 8 key can be shifted or not with this keysym/scancode +# 16 deshift key for this keysym/scancode +# 32 another definition for this keysym/scancode follows +# +# Negative row values: +# 'keysym -1 n' joystick #1, direction n +# 'keysym -2 n' joystick #2, direction n +# 'keysym -3 0' first RESTORE key +# 'keysym -3 1' second RESTORE key +# 'keysym -4 0' 40/80 column key +# 'keysym -4 1' CAPS (ASCII/DIN) key +# +# Business (UK) keyboard matrix: +# Keys starting with 'KP' are on the number pad. +# +# 0 1 2 3 4 5 6 7 +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 0 | 2 | 5 | 8 | - | KP8 |crsr rgt| ^N | . | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 1 | 1 | 4 | 7 | 0 | KP7 | ^ |--------| KP9 | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 2 | escape | s | f | h | ] .| k | ; .| KP5 | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 3 | a | d | g | j | return | l | @ .| KP6 | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 4 | tab | w | r | y | \ .| i | p | del | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 5 | q | e | t | u |crsr dwn| o | [ .| KP4 | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 6 |l shift | c | b | . | KP. | ^Y |r shift | KP3 | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 7 | z | v | n | , | KP0 | ^O | repeat | KP2 | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 8 | RVS | x | space | m | home | ^U | / | KP1 | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 9 | <-- | 3 | 6 | 9 |runstop | : |--------| ^V | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# +# ^N = both shifts + 2 +# ^Y = left shift + TAB + I +# ^O = Z + A + L +# ^U = RVS + A + L +# ^V = TAB + <- + DEL + +# Business (US) matrix (differences to UK) +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 2 | | | | | ; | | \ | | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 3 | | | | | | | [ | | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 4 | | | | | @ | | | | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 5 | | | | | | | ] | | +# +--------+--------+--------+--------+--------+--------+--------+--------+ + +!CLEAR +!LSHIFT 6 0 +!RSHIFT 6 6 +!VSHIFT RSHIFT + +###### Same Keys than C-64 Keyboard + +# RUN/STOP +Escape 9 4 8 + +# CLR/HOME +Home 8 4 8 + +# LEFT/RIGHT +Right 0 5 8 + +# UP/DOWN +Down 5 4 8 + +#INST/DEL +# Keymmodore maps both INST/DEL and RESTORE keys the same because there is no RESTORE Key in PET Keyboards. +BackSpace 4 7 8 + +# SHIFT +Shift_L 6 0 2 +Shift_R 6 6 4 + +# ENTER +Return 3 4 8 + +# Arrow Up +Del 1 5 8 + +# Arrow Left +BackQuote 9 0 8 + +# @ +LeftBracket 3 6 8 + +# /. +Period 6 3 32 +Period 6 3 1 + +# ?// +Slash 8 6 32 +Slash 8 6 1 + +# Space Bar +Space 8 2 8 + + + +##### Keys of C-64 real Keyboard non present in PET Business Keyboard + +# + (Plus) +Dash 2 6 1 + +# - (Minus) +Equals 0 3 16 + +# * (Asterisk) +RightBracket 9 5 1 + +# \ (Using Pound Key) +Insert 4 4 16 + +###### Keys of real PET Business Keyboard not present in C-64 Keyboard + +# ESCAPE +F1 2 0 8 + +# OFF/RVS +F3 8 0 8 + +# REPEAT +F5 7 6 8 + +# TAB +Tab 4 0 8 + +# =/- (only =) +BackSlash 0 3 1 + +# */: (only :) +SemiColon 9 5 32 +# [ (mapped to two keys to be used either with Shift or C=) +SemiColon 5 6 1 +F10 5 6 16 + +# +/; (only ;) +SingleQuote 2 6 32 +# ] (mapped to two keys to be used either with Shift or C=) +SingleQuote 2 4 1 +F11 2 4 16 + +1 1 0 8 +2 0 0 8 +3 9 1 8 +4 1 1 8 +5 0 1 8 +6 9 2 8 +7 1 2 8 +8 0 2 8 +9 9 3 8 +0 1 3 8 + +a 3 0 8 +b 6 2 8 +c 6 1 8 +d 3 1 8 +e 5 1 8 +f 2 2 8 +g 3 2 8 +h 2 3 8 +i 4 5 8 +j 3 3 8 +k 2 5 8 +l 3 5 8 +m 8 3 8 +n 7 2 8 +o 5 5 8 +p 4 6 8 +q 5 0 8 +r 4 2 8 +s 2 1 8 +t 5 2 8 +u 5 3 8 +v 7 1 8 +w 4 1 8 +x 8 1 8 +y 4 3 8 +z 7 0 8 + +##### NUMERIC PAD (With C= Key) +KP_0 7 4 8 +KP_1 8 7 8 +KP_2 7 7 8 +KP_3 6 7 8 +KP_4 5 7 8 +KP_5 2 7 8 +KP_6 3 7 8 +KP_7 1 4 8 +KP_8 0 4 8 +KP_9 1 7 8 +KP_Decimal 6 4 8 + diff --git a/trunk/workspace/BMC/Pimmodore-64/BMC64.VKM/PET/rpi_grus_pos.vkm b/trunk/workspace/BMC/Pimmodore-64/BMC64.VKM/PET/rpi_grus_pos.vkm new file mode 100644 index 00000000..e24d3637 --- /dev/null +++ b/trunk/workspace/BMC/Pimmodore-64/BMC64.VKM/PET/rpi_grus_pos.vkm @@ -0,0 +1,297 @@ +# Bare Metal Commodore keyboard mapping file suitable for real C64 keyboards using Keymmodore-64 interfase by K-rnivoro. https://github.com/K-rnivoro/Keymmodore-64 +# Tested with BMC v3.9 (https://accentual.com/bmc64/) +# Mapped for compatibility to PET Models with Graphics Keyboards only (2000, 3000, 4000, Non-B models). +# +# PET Graphics Keyboard has only one character and one graphics PETSCII per key. +# Keymmodore uses C= Key to access a layer with PET Keys corresponding to shifted symbols of C-64 Keyboard (!/"/#/$/%/&/'/(/)/[/]//?) so you have to hold C= for those keys. +# You can access PET graphics PETSCII of those keys by pressing Shift and/or C=. Graphics PETSCII will match the the original PET Graphics Keyboard layout (not labeled in C64). +# +# Graphics PETSCII set of PET and C-64 are the same so there is no missing graphics PETSCII codes. They just have been redistributed to match C-64 Keyboard. +# ANY left C-64 labeled Graphics PETSCII works using C= Key thanks to being remapped by Keymmodore-64. +# ANY right C-64 labeled Graphics PETSCII works using Shift keys thanks to being remapped by VICE (this file). +# +# OFF/REVERSE key is mapped to CTRL (Control) Key. +# Backslash Key is mapped to £ (Pound) Key. +# +# +# File format: +# - comment lines start with '#' +# - keyword lines start with '!keyword' +# - normal line has 'keysym/scancode row column shiftflag' +# +# Keywords and their lines are: +# '!CLEAR' clear whole table +# '!INCLUDE filename' read file as mapping file +# '!LSHIFT row col' left shift keyboard row/column +# '!RSHIFT row col' right shift keyboard row/column +# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT) +# '!UNDEF keysym' remove keysym from table +# +# Shiftflag can have the values: +# 0 key is not shifted for this keysym/scancode +# 1 key is shifted for this keysym/scancode +# 2 left shift +# 4 right shift +# 8 key can be shifted or not with this keysym/scancode +# 16 deshift key for this keysym/scancode +# 32 another definition for this keysym/scancode follows +# +# Negative row values: +# 'keysym -1 n' joystick #1, direction n +# 'keysym -2 n' joystick #2, direction n +# 'keysym -3 0' first RESTORE key +# 'keysym -3 1' second RESTORE key +# 'keysym -4 0' 40/80 column key +# 'keysym -4 1' CAPS (ASCII/DIN) key +# + +# this is a PET graphics keyboard mapping (positional) + +# +# Graphics keyboard matrix: +# +# 0 1 2 3 4 5 6 7 +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 0 | ! | # | % | & | ( | <-- | home |crsr rgt| +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 1 | " | $ | ' | \ | ) |--------|crsr dwn| del | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 2 | q | e | t | u | o | ^ | 7 | 9 | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 3 | w | r | y | i | p |--------| 8 | / | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 4 | a | d | g | j | l |--------| 4 | 6 | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 5 | s | f | h | k | : |--------| 5 | * | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 6 | z | c | b | m | ; | return | 1 | 3 | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 7 | x | v | n | , | ? |--------| 2 | + | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 8 |l shift | @ | ] |--------| > |r shift | 0 | - | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 9 | rvs on | [ | space | < | stop |--------| . | = | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# +# The original gfx keyboard reflects the matrix perfectly: +# +# ! " # $ % ' & \ ( ) <- ^s ^q ^] ^t +# q w e r t y u i o p ^ 7 8 9 / +# a s d f g h j k l : ^m 4 5 6 * +# z x c v b n m , ; ? ^m 1 2 3 + +# LS ^r @ [ ] SPACE < > ^c RS 0 . - = +# +# http://www.6502.org/users/andre/petindex/keyboards.html + +!CLEAR +!LSHIFT 8 0 +!RSHIFT 8 5 +!VSHIFT RSHIFT +!SHIFTL LSHIFT + +###### Same Keys than C-64 Keyboard ####### + +# RUN/STOP +Escape 9 4 8 + +# CLR/HOME +Home 0 6 8 + +# LEFT/RIGHT +Right 0 7 8 + +# UP/DOWN +Down 1 6 8 + +# INST/DEL +# Keymmodore maps both INST/DEL and RESTORE the same because there is no RESTORE Key. +BackSpace 1 7 8 + +# SHIFT +Shift_L 8 0 2 +Shift_R 8 5 4 + +# ENTER +Return 6 5 8 + +# Space Bar +Space 9 2 8 + +# Arrow Up (Only key with one PETSCII and identical to C64) +Del 2 5 8 + +# Arrow Left (no PETSCII in C-64) +BackQuote 0 5 8 + +# Equal (=) (no PETSCII in C-64) +BackSlash 9 7 8 + + +#### (Scattered) Symbol Keys "merged" again into C-64 Keys with no PETSCII + +#Colon (:) and Brace Left ([) +SemiColon 5 4 8 +KP_Subtract 9 1 8 /* Numpad - -> [ */ + + +# Semicolon (;) and Brace Right (]) +SingleQuote 6 4 8 +KP_Add 8 2 8 /* Numpad + -> ] */ + +# Comma (,) and Less(<) +Comma 7 3 8 +PageUp 9 3 8 /* PgUp -> < */ + + +# Period (.) and Greater (>) +Period 9 6 8 +PageDown 8 4 8 /* PgDown -> > */ + + +# Slash (/) and Question (?) +Slash 3 7 8 +KP_Divide 7 4 8 /* Numpad / -> ? */ + + + +#### (Scattered) Symbols and Numbers "merged" again into C-64 Number Keys +1 6 6 8 +F1 0 0 8 +2 7 6 8 +F2 1 0 8 +3 6 7 8 +F3 0 1 8 +4 4 6 8 +F4 1 1 8 +5 5 6 8 +F5 0 2 8 +6 4 7 8 +F6 0 3 8 +7 2 6 8 +Up 1 2 8 +8 3 6 8 +Left 0 4 8 +9 2 7 8 +F9 1 4 8 +0 8 6 8 + + + +###### Keys not present in C64 keyboard ###### + +# Backslash (\) (Using Pound (£) Key) +Tab 1 3 32 +Tab 1 4 1 + +# OFF/REVERSE (Using CTRL Key) +Insert 9 0 8 + +###### Keys matching C64 keyboard having PETSCIIs ###### +# Right PETSCII with any Shift Key. +# Left PETSCII with Commodore Key. +# PETSCII are remapped to match C64 Keyboard. + +# Plus (+) +Dash 7 7 32 +Dash 9 1 1 + + +# Minus (-) +Equals 8 7 32 +Equals 8 2 1 +KP_Multiply 1 3 8 /* Numpad * -> \ PETSCII */ + +# Multiply (*) +RightBracket 5 7 32 +RightBracket 8 1 1 + +# At (@) +LeftBracket 8 1 32 +LeftBracket 5 4 1 + +###### Letter Keys ###### +# Right PETSCII with any Shift Key. +# Left PETSCII with Commodore Key. +# PETSCII are remapped to match C64 Keyboard. + +# Q Key +q 2 0 8 +F10 7 7 1 + + +# W Key +w 3 0 8 + +# E Key +e 2 1 8 + +# R Key +r 3 1 8 + +# T Key +t 2 2 8 + +# Y Key +y 3 2 8 + +# U Key +u 2 3 8 + +# I KEY +i 3 3 8 + +# O Key +o 2 4 8 + +#P Key +p 3 4 8 + +# A Key +a 4 0 8 + +# S Key +s 5 0 8 + +# D Key +d 4 1 8 + +# F Key +f 5 1 8 + +# G Key +g 4 2 8 + +# H Key +h 5 2 8 + +# J Key +j 4 3 8 + +# K Key +k 5 3 8 + +# L Key +l 4 4 8 + +# Z Key +z 6 0 8 +F11 8 7 1 + +# X Key +x 7 0 8 + +# C Key +c 6 1 8 + +# V Key +v 7 1 8 + +# B Key +b 6 2 8 + +# N Key +n 7 2 8 +Alt_L 5 7 1 + +# M Key +m 6 3 8 diff --git a/trunk/workspace/BMC/Pimmodore-64/BMC64.VKM/PLUS4/rpi_pos.vkm b/trunk/workspace/BMC/Pimmodore-64/BMC64.VKM/PLUS4/rpi_pos.vkm new file mode 100644 index 00000000..783f3c47 --- /dev/null +++ b/trunk/workspace/BMC/Pimmodore-64/BMC64.VKM/PLUS4/rpi_pos.vkm @@ -0,0 +1,239 @@ +# Bare Metal Commodore keyboard mapping file suitable for real C64 keyboards using Keymmodore-64 interfase by K-rnivoro. https://github.com/K-rnivoro/Keymmodore-64 +# Tested with BMC v3.9 (https://accentual.com/bmc64/) +# Mapped for positional compatibility with 264 Computers Series: Plus/4, Commodore-16 and Commodore-116 Keyboards. +# Based on C64 Positional Layout, however some keys change position in order to be easier to use and remember. +# The relevant changes are: +# ESCAPE is mapped to Left-Arrow Key. +# Cursor-Up is mapped to C64 Up-Arrow Key (C16/Plus-4 Up-Arrow is actually Shift+0). +# Cursor-Left is mapped to C64 RESTORE Key (C16/Plus-4 CLEAR/HOME Key moves to C64 CLEAR/HOME key). +# Cursor-Down is mapped to C64 Up/Down Cursor Key (It works only Down regardless Shift pressed or not, like the real C16/Plus-4 Key). +# Cursor-Right is mapped to C64 Left/Right Cursor Key (It works only Right regardless Shift pressed or not, like the real C16/Plus-4 Key). +# +# File format: +# - comment lines start with '#' +# - keyword lines start with '!keyword' +# - normal line has 'keysym/scancode row column shiftflag' +# +# Keywords and their lines are: +# '!CLEAR' clear whole table +# '!INCLUDE filename' read file as mapping file +# '!LSHIFT row col' left shift keyboard row/column +# '!RSHIFT row col' right shift keyboard row/column +# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT) +# '!UNDEF keysym' remove keysym from table +# +# Shiftflag can have the values: +# 0 key is not shifted for this keysym/scancode +# 1 key is shifted for this keysym/scancode +# 2 left shift +# 4 right shift +# 8 key can be shifted or not with this keysym/scancode +# 16 deshift key for this keysym/scancode +# 32 another definition for this keysym/scancode follows +# +# Negative row values: +# 'keysym -1 n' joystick #1, direction n +# 'keysym -2 n' joystick #2, direction n +# 'keysym -3 0' first RESTORE key +# 'keysym -3 1' second RESTORE key +# 'keysym -4 0' 40/80 column key +# 'keysym -4 1' CAPS (ASCII/DIN) key +# +# Joystick direction values: +# 0 Fire +# 1 South/West +# 2 South +# 3 South/East +# 4 West +# 5 East +# 6 North/West +# 7 North +# 8 North/East +# +# Joyport keypad key layout: +# -------------------------- +# | 0 | 1 | 2 | 3 | 4 | +# -------------------------- +# | 5 | 6 | 7 | 8 | 9 | +# -------------------------- +# | 10 | 11 | 12 | 13 | 14 | +# -------------------------- +# | 15 | 16 | 17 | 18 | 19 | +# -------------------------- +# +# When a bigger spaced key is used, +# it uses the upper left most key value. +# +############################################################################# +# +# Commodore 16/116/Plus-4 keyboard matrix: +# +# 0 1 2 3 4 5 6 7 +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 0 |INST-DEL|RETURN |POUND |HELP-F7 |F1-F4 |F2-F5 |F3-F6 |@ | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 1 |3 # |W |A |4 $ |Z |S |E |SHIFT | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 2 |5 % |R |D |6 & |C |F |T |X | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 3 |7 ' |Y |G |8 ( |B |H |U |V | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 4 |9 ) |I |J |0 ^ |M |K |O |N | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 5 |DOWN |P |L |UP |. > |: [ |- |, < | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 6 |LEFT |* |; ] |RIGHT |ESC |= |+ |/ ? | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 7 |1 ! |CLR-HOME|CTRL |2 " |SPACE |C= |Q |RUN-STOP| +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# +############################################################################# + + +!CLEAR +!LSHIFT 1 7 +!RSHIFT 1 7 +!VSHIFT RSHIFT + + +# Home = HOME +Home 7 1 8 + +# Enter = RETURN +Return 0 1 8 + +# Shifts = Shifts +Shift_L 1 7 2 +Shift_R 1 7 4 + +# Space bar = Space +Space 7 4 8 + + +# Tab = CTRL +Tab 7 2 8 + +# Control_L = CBM +Control_L 7 5 8 + +#Backspace = INST/DEL +BackSpace 0 0 8 + +# Delete = Cursor Up = C64 Arrow Up Key +Del 5 3 8 + +# Down = Cursor Down +Down 5 0 8 + +# Page Up = Cursor Left = C64 RESTORE Key +PageUp 6 0 8 + +# Right = Cursor Right +Right 6 3 8 + +# ESCAPE = RUN/STOP +Escape 7 7 8 + +# Grave = ESCAPE = C64 Arrow_Left Key +BackQuote 6 4 8 + +# Insert = Pound +Insert 0 2 8 + +# Minus = Plus +Dash 6 6 8 + +# Equal = Minus +Equals 5 6 8 + +# Bracket Left = At +LeftBracket 0 7 8 + +#Bracket Right = Asterisk +RightBracket 6 1 8 + +# Slash = Slash +Slash 6 7 8 + +# Backslash = Equal +BackSlash 6 5 8 + +# Single Quote = Semicolon +SingleQuote 6 2 8 + +# SemiColon = Colon +SemiColon 5 5 8 + +# Comma = Comma +Comma 5 7 8 + +# Period = Period +Period 5 4 8 + +### F Keys +F1 0 4 8 +F3 0 5 8 +F5 0 6 8 +F7 0 3 8 + + +### Numbers +0 4 3 8 +1 7 0 8 +2 7 3 8 +3 1 0 8 +4 1 3 8 +5 2 0 8 +6 2 3 8 +7 3 0 8 +8 3 3 8 +9 4 0 8 + + + +### Letters +a 1 2 8 +b 3 4 8 +c 2 4 8 +d 2 2 8 +e 1 6 8 +f 2 5 8 +g 3 2 8 +h 3 5 8 +i 4 1 8 +j 4 2 8 +k 4 5 8 +l 5 2 8 +m 4 4 8 +n 4 7 8 +o 4 6 8 +p 5 1 8 +q 7 6 8 +r 2 1 8 +s 1 5 8 +t 2 6 8 +u 3 6 8 +v 3 7 8 +w 1 1 8 +x 2 7 8 +y 3 1 8 +z 1 4 8 + + +# joystick keymap A (port 1) +KP_8 -1 7 /* NumPad 8 -> UP */ +KP_2 -1 2 /* NumPad 2 -> DOWN */ +KP_4 -1 4 /* NumPad 4 -> LEFT */ +KP_6 -1 5 /* NumPad 6 -> RIGHT */ +KP_0 -1 0 /* NumPad 0 -> FIRE */ + +# joystick Keymap B (port 2) +KP_7 -2 7 /* NumPad 7 -> UP */ +KP_3 -2 2 /* NumPad 3 -> DOWN */ +KP_1 -2 4 /* NumPad 1 -> LEFT */ +KP_9 -2 5 /* NumPad 9 -> RIGHT */ +KP_Decimal -2 0 /* NumPad . -> FIRE */ + + + + diff --git a/trunk/workspace/BMC/Pimmodore-64/BMC64.VKM/PLUS4EMU/rpi_pos.vkm b/trunk/workspace/BMC/Pimmodore-64/BMC64.VKM/PLUS4EMU/rpi_pos.vkm new file mode 100644 index 00000000..9d69e928 --- /dev/null +++ b/trunk/workspace/BMC/Pimmodore-64/BMC64.VKM/PLUS4EMU/rpi_pos.vkm @@ -0,0 +1,97 @@ +# Bare Metal Commodore keyboard mapping file suitable for real C64 keyboards using Keymmodore-64 interfase by K-rnivoro. https://github.com/K-rnivoro/Keymmodore-64 +# Tested with BMC v3.9 (https://accentual.com/bmc64/) +# Mapped for positional compatibility with 264 Computers Series: Plus/4, Commodore-16 and Commodore-116 Keyboards. +# Based on C64 Positional Layout, however some keys change position in order to be easier to use and remember. +# The relevant changes are: +# ESCAPE is mapped to Left-Arrow Key. +# Cursor-Up is mapped to C64 Up-Arrow Key (C16/Plus-4 Up-Arrow is actually Shift+0). +# Cursor-Left is mapped to C64 RESTORE Key (C16/Plus-4 CLEAR/HOME Key moves to C64 CLEAR/HOME key). +# Cursor-Down is mapped to C64 Up/Down Cursor Key (It works only Down regardless Shift pressed or not, like the real C16/Plus-4 Key). +# Cursor-Right is mapped to C64 Left/Right Cursor Key (It works only Right regardless Shift pressed or not, like the real C16/Plus-4 Key). +# +# This is not a VICE keymap file. +# +# 0: Del 1: Return 2: £ 3: Help +# 4: F1 5: F2 6: F3 7: @ +# 8: 3 9: W 10: A 11: 4 +# 12: Z 13: S 14: E 15: Shift +# 16: 5 17: R 18: D 19: 6 +# 20: C 21: F 22: T 23: X +# 24: 7 25: Y 26: G 27: 8 +# 28: B 29: H 30: U 31: V +# 32: 9 33: I 34: J 35: 0 +# 36: M 37: K 38: O 39: N +# 40: Down 41: P 42: L 43: Up +# 44: . 45: : 46: - 47: , +# 48: Left 49: * 50: ; 51: Right +# 52: Esc 53: = 54: + 55: / +# 56: 1 57: Home 58: Ctrl 59: 2 +# 60: Space 61: C= 62: Q 63: Stop +# +BackSpace 0 +Return 1 +Insert 2 +F7 3 +F1 4 +F3 5 +F5 6 +LeftBracket 7 +3 8 +w 9 +a 10 +4 11 +z 12 +s 13 +e 14 +Shift_L 15 +Shift_R 15 +5 16 +r 17 +d 18 +6 19 +c 20 +f 21 +t 22 +x 23 +7 24 +y 25 +g 26 +8 27 +b 28 +h 29 +u 30 +v 31 +9 32 +i 33 +j 34 +0 35 +m 36 +k 37 +o 38 +n 39 +Down 40 +p 41 +l 42 +# Changed Up to Arrow Up Key (Delete) +Del 43 +Period 44 +SemiColon 45 +Equals 46 +Comma 47 +# Changed Left to RESTORE Key (Page_Up) +PageUp 48 +RightBracket 49 +SingleQuote 50 +Right 51 +BackQuote 52 +BackSlash 53 +Dash 54 +Slash 55 +1 56 +Home 57 +Tab 58 +2 59 +Space 60 +Control_L 61 +q 62 +Escape 63 diff --git a/trunk/workspace/BMC/Pimmodore-64/BMC64.VKM/VIC20/rpi_pos.vkm b/trunk/workspace/BMC/Pimmodore-64/BMC64.VKM/VIC20/rpi_pos.vkm new file mode 100644 index 00000000..95c8ccbe --- /dev/null +++ b/trunk/workspace/BMC/Pimmodore-64/BMC64.VKM/VIC20/rpi_pos.vkm @@ -0,0 +1,195 @@ +# Bare Metal Commodore keyboard mapping file suitable for real C64 keyboards using Keymmodore-64 interfase by K-rnivoro. https://github.com/K-rnivoro/Keymmodore-64 +# Tested with BMC v3.9 (https://accentual.com/bmc64/) +# Mapped for positional compatibility to C-64 Keyboards. +# +# +# File format: +# - comment lines start with '#' +# - keyword lines start with '!keyword' +# - normal line has 'keysym/scancode row column shiftflag' +# +# Keywords and their lines are: +# '!CLEAR' clear whole table +# '!INCLUDE filename' read file as mapping file +# '!LSHIFT row col' left shift keyboard row/column +# '!RSHIFT row col' right shift keyboard row/column +# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT) +# '!UNDEF keysym' remove keysym from table +# +# Shiftflag can have the values: +# 0 key is not shifted for this keysym/scancode +# 1 key is shifted for this keysym/scancode +# 2 left shift +# 4 right shift +# 8 key can be shifted or not with this keysym/scancode +# 16 deshift key for this keysym/scancode +# 32 another definition for this keysym/scancode follows +# +# Negative row values: +# 'keysym -1 n' joystick #1, direction n +# 'keysym -2 n' joystick #2, direction n +# 'keysym -3 0' first RESTORE key +# 'keysym -3 1' second RESTORE key +# 'keysym -4 0' 40/80 column key +# 'keysym -4 1' CAPS (ASCII/DIN) key +# +# Joyport keypad key layout: +# -------------------------- +# | 0 | 1 | 2 | 3 | 4 | +# -------------------------- +# | 5 | 6 | 7 | 8 | 9 | +# -------------------------- +# | 10 | 11 | 12 | 13 | 14 | +# -------------------------- +# | 15 | 16 | 17 | 18 | 19 | +# -------------------------- +# +# When a bigger spaced key is used, +# it uses the upper left most key value. +# Positional Mapping, US Layout, VIC20, X11 +# VIC20 Keyboard matrix +# +# +-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0|Bit 1|Bit 2|Bit 3|Bit 4|Bit 5|Bit 6|Bit 7| +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0| 1 ! |A_LFT| CTRL| R/S |SPACE| C= | Q | 2 " | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 1| 3 # | W | A | S_L | Z | S | E | 4 $ | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 2| 5 % | R | D | X | C | F | T | 6 & | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 3| 7 ' | Y | G | V | B | H | U | 8 ( | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 4| 9 ) | I | J | N | M | K | O | 0 | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 5| + | P | L | , < | . > | : [ | @ | - | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 6|POUND| * | ; ] | / ? | S_R | = | A_UP| HOME| +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 7| DEL |Retrn|C_L/R|C_U/D| F1 | F3 | F5 | F7 | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +!CLEAR +!LSHIFT 1 3 +!RSHIFT 6 4 +!VSHIFT RSHIFT +!SHIFTL LSHIFT + + + +##################### +# |Bit 0| 1 ! |A_LFT| CTRL| R/S |SPACE| C= | Q | 2 " | +BackQuote 0 1 8 +Tab 0 2 8 +Escape 0 3 8 +Space 0 4 8 +Control_L 0 5 8 + +##################### +# |Bit 1| 3 # | W | A | S_L | Z | S | E | 4 $ | + +Shift_L 1 3 2 + + +##################### +# |Bit 2| 5 % | R | D | X | C | F | T | 6 & | + + +##################### +# |Bit 3| 7 ' | Y | G | V | B | H | U | 8 ( | + + +##################### +# |Bit 4| 9 ) | I | J | N | M | K | O | 0 | + + +###################### +# |Bit 5| + | P | L | , < | . > | : [ | @ | - | + +Dash 5 0 8 +Comma 5 3 8 +Colon 5 3 8 +Period 5 4 8 +SemiColon 5 5 8 +LeftBracket 5 6 8 +Equals 5 7 8 + + +##################### +# |Bit 6|POUND| * | ; ] | / ? | S_R | = | A_UP| HOME| + +Insert 6 0 8 +RightBracket 6 1 8 +SingleQuote 6 2 8 +Slash 6 3 8 +Shift_R 6 4 4 +BackSlash 6 5 8 +Del 6 6 8 +Home 6 7 8 + +##################### +# |Bit 7| DEL |Retrn|C_L/R|C_U/D| F1 | F3 | F5 | F7 | + +BackSpace 7 0 8 +Return 7 1 8 +Right 7 2 8 +Down 7 3 8 +F1 7 4 8 +F3 7 5 8 +F5 7 6 8 +F7 7 7 8 + + +### Numbers & Letters +0 4 7 8 +1 0 0 8 +2 0 7 8 +3 1 0 8 +4 1 7 8 +5 2 0 8 +6 2 7 8 +7 3 0 8 +8 3 7 8 +9 4 0 8 +a 1 2 8 +b 3 4 8 +c 2 4 8 +d 2 2 8 +e 1 6 8 +f 2 5 8 +g 3 2 8 +h 3 5 8 +i 4 1 8 +j 4 2 8 +k 4 5 8 +l 5 2 8 +m 4 4 8 +n 4 3 8 +o 4 6 8 +p 5 1 8 +q 0 6 8 +r 2 1 8 +s 1 5 8 +t 2 6 8 +u 3 6 8 +v 3 3 8 +w 1 1 8 +x 2 3 8 +y 3 1 8 +z 1 4 8 + +# Restore key mappings +PageUp -3 0 + +# joystick keymap A (port 1) +264 -1 7 /* NumPad 8 -> UP */ +258 -1 2 /* NumPad 2 -> DOWN */ +260 -1 4 /* NumPad 4 -> LEFT */ +262 -1 5 /* NumPad 6 -> RIGHT */ +256 -1 0 /* NumPad 0 -> FIRE */ + +# joystick Keymap B (port 2) +265 -2 7 /* NumPad 9 -> UP */ +259 -2 2 /* NumPad 3 -> DOWN */ +263 -2 4 /* NumPad 7 -> LEFT */ +257 -2 5 /* NumPad 1 -> RIGHT */ +266 -2 0 /* NumPad . -> FIRE */ diff --git a/trunk/workspace/BMC/Pimmodore-64/Keyboard/GitHub - K-rnivoro-Keymmodore-64- An interfase for Commodore-64 Keyboard to USB, 100% compatible with PC-Linux-Android, inclu.url b/trunk/workspace/BMC/Pimmodore-64/Keyboard/GitHub - K-rnivoro-Keymmodore-64- An interfase for Commodore-64 Keyboard to USB, 100% compatible with PC-Linux-Android, inclu.url new file mode 100644 index 00000000..246f5f55 --- /dev/null +++ b/trunk/workspace/BMC/Pimmodore-64/Keyboard/GitHub - K-rnivoro-Keymmodore-64- An interfase for Commodore-64 Keyboard to USB, 100% compatible with PC-Linux-Android, inclu.url @@ -0,0 +1,2 @@ +[InternetShortcut] +URL=https://github.com/K-rnivoro/Keymmodore-64 diff --git a/trunk/workspace/BMC/Pimmodore-64/Keyboard/Pi.Pico.firmwares/key64_rp2040_common_anode.uf2 b/trunk/workspace/BMC/Pimmodore-64/Keyboard/Pi.Pico.firmwares/key64_rp2040_common_anode.uf2 new file mode 100644 index 00000000..1479e2c8 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Keyboard/Pi.Pico.firmwares/key64_rp2040_common_anode.uf2 differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Keyboard/Pi.Pico.firmwares/key64_rp2040_common_cathode.uf2 b/trunk/workspace/BMC/Pimmodore-64/Keyboard/Pi.Pico.firmwares/key64_rp2040_common_cathode.uf2 new file mode 100644 index 00000000..8730a2da Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Keyboard/Pi.Pico.firmwares/key64_rp2040_common_cathode.uf2 differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Keyboard/Schematic.png b/trunk/workspace/BMC/Pimmodore-64/Keyboard/Schematic.png new file mode 100644 index 00000000..875f5f78 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Keyboard/Schematic.png differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/JiffyDOS_1541-II.bin b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/JiffyDOS_1541-II.bin new file mode 100644 index 00000000..f3ae4d8f Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/JiffyDOS_1541-II.bin differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/JiffyDOS_1571.bin b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/JiffyDOS_1571.bin new file mode 100644 index 00000000..2aec1ecd Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/JiffyDOS_1571.bin differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/JiffyDOS_C128.bin b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/JiffyDOS_C128.bin new file mode 100644 index 00000000..517d243b Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/JiffyDOS_C128.bin differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/PUT_ROMS_HERE b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/PUT_ROMS_HERE new file mode 100644 index 00000000..2dabf72d --- /dev/null +++ b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/PUT_ROMS_HERE @@ -0,0 +1 @@ +Place KERNAL, CHARGEN, BASIC and d1541II ROMS in this dir. diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/basic64 b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/basic64 new file mode 100644 index 00000000..9e06923a Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/basic64 differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/basichi b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/basichi new file mode 100644 index 00000000..859928b9 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/basichi differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/basiclo b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/basiclo new file mode 100644 index 00000000..47a2a5ad Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/basiclo differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/bootstat.txt b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/bootstat.txt new file mode 100644 index 00000000..5bec798e --- /dev/null +++ b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/bootstat.txt @@ -0,0 +1,35 @@ +# This file tells stdio glue code to fast fail, fast stat certain files +# that are accessed at boot time in order to speed up the boot process. +# If this file is missing, the default internal list will be used which +# matches the checked in version. +# +# Note: Any unqualified filename will fake success or fail for the file +# regardless of the directory it resides in. Machine kernal and character +# roms you know are present can have a 'stat' entry here. Any files you want +# to fail regardless of where they reside can have a 'fail' entry. If you +# want to store your drive rom files in DRIVES, you can add fail entries +# for /C128/filename to speed up boot slightly since VICE looks for those +# files first in the machine specific dir. But this is not necessary. +stat,kernal,16384 +stat,kernal64,8192 +stat,basic64,8192 +stat,basichi,16384 +stat,basiclo,16384 +stat,chargen,8192 +stat,JiffyDOS_1541-II.bin,16384 +stat,JiffyDOS_1571.bin,16384 +stat,JiffyDOS_C128,16384 +fail,fliplist-C128.vfl,0 +fail,mps803,0 +fail,mps803.vpl,0 +fail,nl10-cbm,0 +fail,1520.vpl,0 +fail,dos1540,0 +fail,dos1570,0 +fail,dos2000,0 +fail,dos4000,0 +fail,dos2031,0 +fail,dos2040,0 +fail,dos3040,0 +fail,dos4040,0 +fail,dos1001,0 diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/charg64 b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/charg64 new file mode 100644 index 00000000..2f87e7ca Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/charg64 differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/chargen b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/chargen new file mode 100644 index 00000000..2f87e7ca Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/chargen differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/d1541II b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/d1541II new file mode 100644 index 00000000..58304561 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/d1541II differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/dos1571 b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/dos1571 new file mode 100644 index 00000000..8baf85f1 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/dos1571 differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/kernal b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/kernal new file mode 100644 index 00000000..e5d07edc Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/kernal differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/kernal64 b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/kernal64 new file mode 100644 index 00000000..666370a7 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/kernal64 differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/rpi_maxi_pos.vkm b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/rpi_maxi_pos.vkm new file mode 100644 index 00000000..bcf9ffcf --- /dev/null +++ b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/rpi_maxi_pos.vkm @@ -0,0 +1,119 @@ +# BMC64 keyboard mapping file for TheC64 ('Maxi') +# +# A Keyboard map is read in as patch to the current map. +# +# File format: +# - comment lines start with '#' +# - keyword lines start with '!keyword' +# - normal line has 'keysym/scancode row column shiftflag' +# +# Keywords and their lines are: +# '!CLEAR' clear whole table +# '!INCLUDE filename' read file as mapping file +# '!LSHIFT row col' left shift keyboard row/column +# '!RSHIFT row col' right shift keyboard row/column +# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT) +# '!UNDEF keysym' remove keysym from table +# +# Shiftflag can have the values: +# 0 key is not shifted for this keysym/scancode +# 1 key is shifted for this keysym/scancode +# 2 left shift +# 4 right shift +# 8 key can be shifted or not with this keysym/scancode +# 16 deshift key for this keysym/scancode +# 32 another definition for this keysym/scancode follows +# +# Negative row values: +# 'keysym -1 n' joystick #1, direction n +# 'keysym -2 n' joystick #2, direction n +# 'keysym -3 0' first RESTORE key +# 'keysym -3 1' second RESTORE key +# 'keysym -4 0' 40/80 column key +# 'keysym -4 1' CAPS (ASCII/DIN) key +# + +!CLEAR +!LSHIFT 1 7 +!RSHIFT 6 4 +!VSHIFT RSHIFT + +Control_L 7 2 8 /* Ctrl */ +Super_L 7 5 0 /* Commodore Key */ +BackSpace 0 0 8 +Down 0 7 8 +Escape 7 7 8 /* RunStop */ +F1 0 4 8 +F2 0 4 1 +F3 0 5 8 +F4 0 5 1 +F5 0 6 8 +F6 0 6 1 +F7 0 3 8 +F8 0 3 1 +Home 6 3 8 /* Clr */ +Insert 0 0 16 /* Insert */ +Left 0 2 1 +Return 0 1 8 +Right 0 2 8 +Shift_L 1 7 2 +Shift_R 6 4 4 +Up 0 7 1 +KP_Add 5 0 8 /* + */ +KP_Subtract 5 3 8 /* - */ +Apostrophe 6 6 8 /* Up Arrow */ +LeftBracket 5 5 8 /* : -> : */ +SemiColon 6 1 8 /* * -> * */ +Comma 5 7 8 /* , -> , */ +BackSlash 5 6 8 /* @ -> @ */ +Pound 6 5 0 /* equal */ +Equals 6 5 8 /* = -> = */ +Period 5 4 8 /* . */ +Dash 6 0 8 /* Pound */ +SingleQuote 6 6 8 /* Up Arrow */ +Slash 6 7 8 /* / -> / */ +Space 7 4 8 /* space */ +Insert 6 0 8 /* sterling */ +RightBracket 6 2 8 /* ; -> ; */ +BackQuote 7 1 0 /* arrowleft */ +Del 6 6 8 /* arrowup */ +0 4 3 8 +1 7 0 8 +2 7 3 8 +3 1 0 8 +4 1 3 8 +5 2 0 8 +6 2 3 8 +7 3 0 8 +8 3 3 8 +9 4 0 8 +a 1 2 8 +b 3 4 8 +c 2 4 8 +d 2 2 8 +e 1 6 8 +f 2 5 8 +g 3 2 8 +h 3 5 8 +i 4 1 8 +j 4 2 8 +k 4 5 8 +l 5 2 8 +m 4 4 8 +n 4 7 8 +o 4 6 8 +p 5 1 8 +q 7 6 8 +r 2 1 8 +s 1 5 8 +t 2 6 8 +u 3 6 8 +v 3 7 8 +w 1 1 8 +x 2 7 8 +y 3 1 8 +z 1 4 8 + +# Restore key mappings +CapsLock -4 1 +Tab -3 0 diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/rpi_pos.vkm b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/rpi_pos.vkm new file mode 100644 index 00000000..34e4831c --- /dev/null +++ b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/rpi_pos.vkm @@ -0,0 +1,265 @@ +# Bare Metal Commodore keyboard mapping file suitable for real C64 keyboards using Keymmodore-64 interfase by K-rnivoro. https://github.com/K-rnivoro/Keymmodore-64 +# Tested with BMC v3.9 (https://accentual.com/bmc64/) +# Mapped for positional compatibility to C-128 Keyboards. +# Based on C64 Positional Layout. +# Keys not present in C-64 (like NumPad Keys, ESC, TAB) are accessed with Right Shift Key. +# +# File format: +# - comment lines start with '#' +# - keyword lines start with '!keyword' +# - normal line has 'keysym/scancode row column shiftflag' +# +# Keywords and their lines are: +# '!CLEAR' clear whole table +# '!INCLUDE filename' read file as mapping file +# '!LSHIFT row col' left shift keyboard row/column +# '!RSHIFT row col' right shift keyboard row/column +# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT) +# '!UNDEF keysym' remove keysym from table +# +# Shiftflag can have the values: +# 0 key is not shifted for this keysym/scancode +# 1 key is shifted for this keysym/scancode +# 2 left shift +# 4 right shift +# 8 key can be shifted or not with this keysym/scancode +# 16 deshift key for this keysym/scancode +# 32 another definition for this keysym/scancode follows +# +# Negative row values: +# 'keysym -1 n' joystick #1, direction n +# 'keysym -2 n' joystick #2, direction n +# 'keysym -3 0' first RESTORE key +# 'keysym -3 1' second RESTORE key +# 'keysym -4 0' 40/80 column key +# 'keysym -4 1' CAPS (ASCII/DIN) key +# 'keysym -5 n' joyport keypad, key n +# +# Joystick direction values: +# 0 Fire +# 1 South/West +# 2 South +# 3 South/East +# 4 West +# 5 East +# 6 North/West +# 7 North +# 8 North/East +# +# Joyport keypad key layout: +# -------------------------- +# | 0 | 1 | 2 | 3 | 4 | +# -------------------------- +# | 5 | 6 | 7 | 8 | 9 | +# -------------------------- +# | 10 | 11 | 12 | 13 | 14 | +# -------------------------- +# | 15 | 16 | 17 | 18 | 19 | +# -------------------------- +# +# When a bigger spaced key is used, +# it uses the upper left most key value. + +# Positional Mapping, US Layout, C128, X11 + +# C128 Keyboard matrix +# +# +-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0|Bit 1|Bit 2|Bit 3|Bit 4|Bit 5|Bit 6|Bit 7| +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0| DEL |Retrn|C_L/R| F7 | F1 | F3 | F5 |C_U/D| +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 1| 3 # | W | A | 4 $ | Z | S | E | S_L | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 2| 5 % | R | D | 6 & | C | F | T | X | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 3| 7 ' | Y | G | 8 ( | B | H | U | V | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 4| 9 ) | I | J | 0 | M | K | O | N | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 5| + | P | L | - | . > | : [ | @ | , < | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 6|POUND| * | ; ] | HOME| S_R | = | A_UP| / ? | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 7| 1 ! |A_LFT| CTRL| 2 " |SPACE| C= | Q | R/S | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# +# +-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0|Bit 1|Bit 2|Bit 3|Bit 4|Bit 5|Bit 6|Bit 7| +# +------+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 8 |HELP | KP 8| KP 5| TAB | KP 2| KP 4| KP 7| KP 1| +# +------+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 9 | ESC | KP +| KP -| LF |KP CR| KP 6| KP 9| KP 3| +# +------+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 10| ALT | KP 0| KP .|A.UP |A.DWN|A.LFT|A.RGT|NOSCR| +# +------+-----+-----+-----+-----+-----+-----+-----+-----+ + + +!CLEAR +!LSHIFT 1 7 +!RSHIFT 6 4 +!VSHIFT RSHIFT + + +# 40/80 column key +F6 -4 0 + +# CAPS LOCK (ASCII/DIN) key +F10 -4 1 + + +#################### +# Restore key mappings +PageUp -3 0 + + + +##################### +# |Bit 0| DEL |Retrn|C_L/R| F7 | F1 | F3 | F5 |C_U/D| + +BackSpace 0 0 8 +Return 0 1 8 +#Left 0 2 1 +Right 0 2 8 +F1 0 4 8 +F3 0 5 8 +F5 0 6 8 +F7 0 3 8 +Down 0 7 8 +#Up 0 7 1 + +##################### +# |Bit 1| 3 # | W | A | 4 $ | Z | S | E | S_L | + +Shift_L 1 7 2 + + +##################### +# |Bit 2| 5 % | R | D | 6 & | C | F | T | X | + + +##################### +# |Bit 3| 7 ' | Y | G | 8 ( | B | H | U | V | + + +##################### +# |Bit 4| 9 ) | I | J | 0 | M | K | O | N | + + +##################### +# |Bit 5| + | P | L | - | . > | : [ | @ | , < | + +Dash 5 0 8 +Equals 5 3 8 +Period 5 4 32 +Period 5 4 1 +SemiColon 5 5 32 +SemiColon 5 5 1 +LeftBracket 5 6 8 +Comma 5 7 32 +Comma 5 7 1 + +##################### +# |Bit 6| POUND | * | ; ] | HOME| S_R | = | A_UP| / ? | + +Insert 6 0 8 +RightBracket 6 1 8 +SingleQuote 6 2 32 +SingleQuote 6 2 1 +Home 6 3 8 +Shift_R 6 4 4 +BackSlash 6 5 8 +Del 6 6 8 +Slash 6 7 32 +Slash 6 7 1 + +##################### +# |Bit 7| 1 ! |A_LFT| CTRL| 2 " |SPACE| C= | Q | R/S | + +BackQuote 7 1 8 # Arrow_LFT <- +Tab 7 2 8 # Control <- +Space 7 4 8 +Control_L 7 5 8 # CBM Key +Escape 7 7 8 # RUN/STOP <- + +##################### +# |Bit 8 |HELP | KP 8| KP 5| TAB | KP 2| KP 4| KP 7| KP 1| + +F2 8 0 8 +KP_8 8 1 8 +KP_5 8 2 8 +F11 8 3 8 # TAB <- +KP_2 8 4 8 +KP_4 8 5 8 +KP_7 8 6 8 +KP_1 8 7 8 + +##################### +# |Bit 9 | ESC | KP +| KP -| LF |KP CR| KP 6| KP 9| KP 3| + +KP_Multiply 9 0 8 +KP_Add 9 1 8 +KP_Subtract 9 2 8 +F4 9 3 8 +KP_Enter 9 4 8 +KP_6 9 5 8 +KP_9 9 6 8 +KP_3 9 7 8 + +##################### +# |Bit 10| ALT | KP 0| KP .|A.UP |A.DWN|A.LFT|A.RGT|NOSCR| + +F9 10 0 8 +KP_0 10 1 8 +KP_Decimal 10 2 8 +Up 10 3 8 +#Down 10 4 8 +Left 10 5 8 +#Right 10 6 8 +KP_Divide 10 7 8 + + +##################### +# letters and numbers + +0 4 3 8 +1 7 0 8 +2 7 3 8 +3 1 0 8 +4 1 3 8 +5 2 0 8 +6 2 3 8 +7 3 0 8 +8 3 3 8 +9 4 0 8 +a 1 2 8 +b 3 4 8 +c 2 4 8 +d 2 2 8 +e 1 6 8 +f 2 5 8 +g 3 2 8 +h 3 5 8 +i 4 1 8 +j 4 2 8 +k 4 5 8 +l 5 2 8 +m 4 4 8 +n 4 7 8 +o 4 6 8 +p 5 1 8 +q 7 6 8 +r 2 1 8 +s 1 5 8 +t 2 6 8 +u 3 6 8 +v 3 7 8 +w 1 1 8 +x 2 7 8 +y 3 1 8 +z 1 4 8 + + + + +############################################################################## \ No newline at end of file diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/rpi_sym.vkm b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/rpi_sym.vkm new file mode 100644 index 00000000..64680495 --- /dev/null +++ b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/rpi_sym.vkm @@ -0,0 +1,181 @@ +# VICE keyboard mapping file +# +# A Keyboard map is read in as patch to the current map. +# +# File format: +# - comment lines start with '#' +# - keyword lines start with '!keyword' +# - normal line has 'keysym/scancode row column shiftflag' +# +# Keywords and their lines are: +# '!CLEAR' clear whole table +# '!INCLUDE filename' read file as mapping file +# '!LSHIFT row col' left shift keyboard row/column +# '!RSHIFT row col' right shift keyboard row/column +# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT) +# '!SHIFTL shiftkey' shift lock key (RSHIFT or LSHIFT) +# '!UNDEF keysym' remove keysym from table +# +# Shiftflag can have the values: +# 0 key is not shifted for this keysym/scancode +# 1 key is shifted for this keysym/scancode +# 2 left shift +# 4 right shift +# 8 key can be shifted or not with this keysym/scancode +# 16 deshift key for this keysym/scancode +# 32 another definition for this keysym/scancode follows +# 64 shift lock +# 256 key is used for an alternative keyboard mapping +# +# Negative row values: +# 'keysym -1 n' joystick keymap A, direction n +# 'keysym -2 n' joystick keymap B, direction n +# 'keysym -3 0' first RESTORE key +# 'keysym -3 1' second RESTORE key +# 'keysym -4 0' 40/80 column key +# 'keysym -4 1' CAPS (ASCII/DIN) key +# 'keysym -5 n' joyport keypad, key n +# +# Joystick direction values: +# 0 Fire +# 1 South/West +# 2 South +# 3 South/East +# 4 West +# 5 East +# 6 North/West +# 7 North +# 8 North/East +# +# Joyport keypad key layout: +# -------------------------- +# | 0 | 1 | 2 | 3 | 4 | +# -------------------------- +# | 5 | 6 | 7 | 8 | 9 | +# -------------------------- +# | 10 | 11 | 12 | 13 | 14 | +# -------------------------- +# | 15 | 16 | 17 | 18 | 19 | +# -------------------------- +# +# When a bigger spaced key is used, +# it uses the upper left most key value. + +# SDL symbolic map for the C64, the SCPU64, and the C64DTV + +# C64 keyboard matrix: +# +# +-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0|Bit 1|Bit 2|Bit 3|Bit 4|Bit 5|Bit 6|Bit 7| +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0| DEL |Retrn|C_L/R| F7 | F1 | F3 | F5 |C_U/D| +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 1| 3 # | W | A | 4 $ | Z | S | E | S_L | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 2| 5 % | R | D | 6 & | C | F | T | X | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 3| 7 ' | Y | G | 8 ( | B | H | U | V | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 4| 9 ) | I | J | 0 | M | K | O | N | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 5| + | P | L | - | . > | : [ | @ | , < | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 6|POUND| * | ; ] | HOME| S_R | = | A_UP| / ? | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 7| 1 ! |A_LFT| CTRL| 2 " |SPACE| C= | Q | R/S | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ + +!CLEAR +!LSHIFT 1 7 +!RSHIFT 6 4 +!VSHIFT RSHIFT +!SHIFTL LSHIFT + +Escape 7 7 8 /* ESC -> Run/Stop */ +1 7 0 8 /* 1 -> 1 */ +2 7 3 32 /* 2 -> 2 */ +2 5 6 16 /* @ -> @ */ +3 1 0 8 /* 3 -> 3 */ +4 1 3 8 /* 4 -> 4 */ +5 2 0 8 /* 5 -> 5 */ +6 2 3 32 /* 6 -> 6 */ +6 6 6 16 /* ^ -> ^ */ +7 3 0 32 /* 7 -> 7 */ +7 2 3 1 /* & -> & */ +8 3 3 32 /* 8 -> 8 */ +8 6 1 16 /* * -> * */ +9 4 0 32 /* 9 -> 9 */ +9 3 3 1 /* ( -> ( */ +0 4 3 32 /* 0 -> 0 */ +0 4 0 1 /* ) -> ) */ +Dash 5 3 8 /* Minus -> Minus */ +Equals 6 5 32 /* = -> = */ +Equals 5 0 16 /* + -> + */ +Pound 6 5 32 /* = -> = */ +Pound 5 0 16 /* + -> + */ +BackSpace 0 0 8 /* Backspace -> DEL */ +Control_L 7 5 8 /* Cntrl -> CBM */ +q 7 6 8 /* Q -> Q */ +w 1 1 8 /* W -> W */ +e 1 6 8 /* E -> E */ +r 2 1 8 /* R -> R */ +t 2 6 8 /* T -> T */ +y 3 1 8 /* Y -> Y */ +u 3 6 8 /* U -> U */ +i 4 1 8 /* I -> I */ +o 4 6 8 /* O -> O */ +p 5 1 8 /* P -> P */ +LeftBracket 5 5 1 /* [ -> [ */ +RightBracket 6 2 1 /* ] -> ] */ +Return 0 1 8 /* Return -> Return */ +Tab 7 2 8 /* Tab -> Ctrl */ +a 1 2 8 /* A -> A */ +s 1 5 8 /* S -> S */ +d 2 2 8 /* D -> D */ +f 2 5 8 /* F -> F */ +g 3 2 8 /* G -> G */ +h 3 5 8 /* H -> H */ +j 4 2 8 /* J -> J */ +k 4 5 8 /* K -> K */ +l 5 2 8 /* L -> L */ +SemiColon 6 2 32 /* ; -> ; */ +SemiColon 5 5 16 /* : -> : */ +SingleQuote 3 0 33 /* ' -> ' */ +SingleQuote 7 3 1 /* " -> " */ +BackQuote 7 1 32 /* ` -> Left Arrow */ +BackQuote 6 6 1 /* ~ -> Pi */ +BackSlash 6 0 8 /* \ -> Lira */ +Shift_L 1 7 2 /* Left Shift -> Left Shift */ +CapsLock 1 7 64 /* Caps Lock -> Shift Lock */ +z 1 4 8 /* Z -> Z */ +x 2 7 8 /* X -> X */ +c 2 4 8 /* C -> C */ +v 3 7 8 /* V -> V */ +b 3 4 8 /* B -> B */ +n 4 7 8 /* N -> N */ +m 4 4 8 /* M -> M */ +Comma 5 7 8 /* , -> , */ +Period 5 4 8 /* . -> . */ +Slash 6 7 8 /* / -> / */ +Shift_R 6 4 4 /* Right Shift -> Right Shift */ +Space 7 4 8 /* Space -> Space */ +F1 0 4 8 /* F1 -> F1 */ +F2 0 4 1 /* F2 -> F2 */ +F3 0 5 8 /* F3 -> F3 */ +F4 0 5 1 /* F4 -> F4 */ +F5 0 6 8 /* F5 -> F5 */ +F6 0 6 1 /* F6 -> F6 */ +F7 0 3 8 /* F7 -> F7 */ +F8 0 3 1 /* F8 -> F8 */ +Home 6 3 8 /* Home -> CLR/HOME */ +Up 0 7 1 /* Up -> CRSR UP */ +Down 0 7 8 /* Down -> CRSR DOWN */ +Insert 0 0 1 /* Insert -> INS */ +Del 0 0 8 /* Delete -> DEL */ +Left 0 2 1 /* Left -> Left */ +Right 0 2 8 /* Right -> Right */ + +# Restore key mappings +PageUp -3 0 + +F11 -4 0 /* 40/80 Columns */ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/z80bios b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/z80bios new file mode 100644 index 00000000..16a05e5e Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C128/z80bios differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/JaffyDosBlk.bin b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/JaffyDosBlk.bin new file mode 100644 index 00000000..97d05951 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/JaffyDosBlk.bin differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/JaffyDosBlu.bin b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/JaffyDosBlu.bin new file mode 100644 index 00000000..c68f4ab5 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/JaffyDosBlu.bin differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/JiffyDOS_1541-II.bin b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/JiffyDOS_1541-II.bin new file mode 100644 index 00000000..f3ae4d8f Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/JiffyDOS_1541-II.bin differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/JiffyDOS_C64.bin b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/JiffyDOS_C64.bin new file mode 100644 index 00000000..35c26704 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/JiffyDOS_C64.bin differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/KrniDosBlk.bin b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/KrniDosBlk.bin new file mode 100644 index 00000000..4c90603a Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/KrniDosBlk.bin differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/KrniDosBlu.bin b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/KrniDosBlu.bin new file mode 100644 index 00000000..ced1803a Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/KrniDosBlu.bin differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/PUT_ROMS_HERE b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/PUT_ROMS_HERE new file mode 100644 index 00000000..2dabf72d --- /dev/null +++ b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/PUT_ROMS_HERE @@ -0,0 +1 @@ +Place KERNAL, CHARGEN, BASIC and d1541II ROMS in this dir. diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/Pi64DosBlu.bin b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/Pi64DosBlu.bin new file mode 100644 index 00000000..ced1803a Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/Pi64DosBlu.bin differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/Pimmodore-Jaffy.bin b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/Pimmodore-Jaffy.bin new file mode 100644 index 00000000..f0d4dd07 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/Pimmodore-Jaffy.bin differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/Pimmodore-Jiffy.bin b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/Pimmodore-Jiffy.bin new file mode 100644 index 00000000..55d4b55c Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/Pimmodore-Jiffy.bin differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/Pimmodore-kernal.bin b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/Pimmodore-kernal.bin new file mode 100644 index 00000000..c199eb2a Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/Pimmodore-kernal.bin differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/basic b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/basic new file mode 100644 index 00000000..9e06923a Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/basic differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/bootstat.txt b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/bootstat.txt new file mode 100644 index 00000000..84199d2c --- /dev/null +++ b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/bootstat.txt @@ -0,0 +1,36 @@ +# This file tells stdio glue code to fast fail, fast stat certain files +# that are accessed at boot time in order to speed up the boot process. +# If this file is missing, the default internal list will be used which +# matches the checked in version. +# +# Note: Any unqualified filename will fake success or fail for the file +# regardless of the directory it resides in. Machine kernal and character +# roms you know are present can have a 'stat' entry here. Any files you want +# to fail regardless of where they reside can have a 'fail' entry. If you +# want to store your drive rom files in DRIVES, you can add fail entries +# for /C64/filename to speed up boot slightly since VICE looks for those +# files first in the machine specific dir. But this is not necessary. +stat,kernal,8192 +stat,JiffyDOS_C64.bin,8192 +stat,JaffyDosBlk.bin,8192 +stat,JaffyDosBlu.bin,8192 +stat,KrniDosBlk.bin,8192 +stat,KrniDosBlu.bin,8192 +stat,Pi64DosBlu.bin,8192 +stat,basic,8192 +stat,chargen,4096 +stat,JiffyDOS_1541-II.bin,16384 +fail,fliplist-C64.vfl,0 +fail,mps803,0 +fail,mps803.vpl,0 +fail,nl10-cbm,0 +fail,1520.vpl,0 +fail,dos1540,0 +fail,dos1570,0 +fail,dos2000,0 +fail,dos4000,0 +fail,dos2031,0 +fail,dos2040,0 +fail,dos3040,0 +fail,dos4040,0 +fail,dos1001,0 diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/chargen b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/chargen new file mode 100644 index 00000000..191ac460 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/chargen differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/d1541II b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/d1541II new file mode 100644 index 00000000..58304561 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/d1541II differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/dos1541 b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/dos1541 new file mode 100644 index 00000000..c3c6a31e Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/dos1541 differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/dos1571 b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/dos1571 new file mode 100644 index 00000000..8baf85f1 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/dos1571 differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/dos1581 b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/dos1581 new file mode 100644 index 00000000..163459f7 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/dos1581 differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/kernal b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/kernal new file mode 100644 index 00000000..666370a7 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/kernal differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/rpi_maxi_pos.vkm b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/rpi_maxi_pos.vkm new file mode 100644 index 00000000..bcf9ffcf --- /dev/null +++ b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/rpi_maxi_pos.vkm @@ -0,0 +1,119 @@ +# BMC64 keyboard mapping file for TheC64 ('Maxi') +# +# A Keyboard map is read in as patch to the current map. +# +# File format: +# - comment lines start with '#' +# - keyword lines start with '!keyword' +# - normal line has 'keysym/scancode row column shiftflag' +# +# Keywords and their lines are: +# '!CLEAR' clear whole table +# '!INCLUDE filename' read file as mapping file +# '!LSHIFT row col' left shift keyboard row/column +# '!RSHIFT row col' right shift keyboard row/column +# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT) +# '!UNDEF keysym' remove keysym from table +# +# Shiftflag can have the values: +# 0 key is not shifted for this keysym/scancode +# 1 key is shifted for this keysym/scancode +# 2 left shift +# 4 right shift +# 8 key can be shifted or not with this keysym/scancode +# 16 deshift key for this keysym/scancode +# 32 another definition for this keysym/scancode follows +# +# Negative row values: +# 'keysym -1 n' joystick #1, direction n +# 'keysym -2 n' joystick #2, direction n +# 'keysym -3 0' first RESTORE key +# 'keysym -3 1' second RESTORE key +# 'keysym -4 0' 40/80 column key +# 'keysym -4 1' CAPS (ASCII/DIN) key +# + +!CLEAR +!LSHIFT 1 7 +!RSHIFT 6 4 +!VSHIFT RSHIFT + +Control_L 7 2 8 /* Ctrl */ +Super_L 7 5 0 /* Commodore Key */ +BackSpace 0 0 8 +Down 0 7 8 +Escape 7 7 8 /* RunStop */ +F1 0 4 8 +F2 0 4 1 +F3 0 5 8 +F4 0 5 1 +F5 0 6 8 +F6 0 6 1 +F7 0 3 8 +F8 0 3 1 +Home 6 3 8 /* Clr */ +Insert 0 0 16 /* Insert */ +Left 0 2 1 +Return 0 1 8 +Right 0 2 8 +Shift_L 1 7 2 +Shift_R 6 4 4 +Up 0 7 1 +KP_Add 5 0 8 /* + */ +KP_Subtract 5 3 8 /* - */ +Apostrophe 6 6 8 /* Up Arrow */ +LeftBracket 5 5 8 /* : -> : */ +SemiColon 6 1 8 /* * -> * */ +Comma 5 7 8 /* , -> , */ +BackSlash 5 6 8 /* @ -> @ */ +Pound 6 5 0 /* equal */ +Equals 6 5 8 /* = -> = */ +Period 5 4 8 /* . */ +Dash 6 0 8 /* Pound */ +SingleQuote 6 6 8 /* Up Arrow */ +Slash 6 7 8 /* / -> / */ +Space 7 4 8 /* space */ +Insert 6 0 8 /* sterling */ +RightBracket 6 2 8 /* ; -> ; */ +BackQuote 7 1 0 /* arrowleft */ +Del 6 6 8 /* arrowup */ +0 4 3 8 +1 7 0 8 +2 7 3 8 +3 1 0 8 +4 1 3 8 +5 2 0 8 +6 2 3 8 +7 3 0 8 +8 3 3 8 +9 4 0 8 +a 1 2 8 +b 3 4 8 +c 2 4 8 +d 2 2 8 +e 1 6 8 +f 2 5 8 +g 3 2 8 +h 3 5 8 +i 4 1 8 +j 4 2 8 +k 4 5 8 +l 5 2 8 +m 4 4 8 +n 4 7 8 +o 4 6 8 +p 5 1 8 +q 7 6 8 +r 2 1 8 +s 1 5 8 +t 2 6 8 +u 3 6 8 +v 3 7 8 +w 1 1 8 +x 2 7 8 +y 3 1 8 +z 1 4 8 + +# Restore key mappings +CapsLock -4 1 +Tab -3 0 diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/rpi_petsciiboard_sym.vkm b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/rpi_petsciiboard_sym.vkm new file mode 100644 index 00000000..20545a07 --- /dev/null +++ b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/rpi_petsciiboard_sym.vkm @@ -0,0 +1,244 @@ +# VICE Petskeyboard mapping file (SDL) +# List of key names: https://wiki.linuxquestions.org/wiki/List_of_keysyms +# +# A Keyboard map is read in as patch to the current map. +# +# File format: +# - comment lines start with '#' +# - keyword lines start with '!keyword' +# - normal line has 'keysym/scancode row column shiftflag' +# +# Keywords and their lines are: +# '!CLEAR' clear whole table +# '!INCLUDE filename' read file as mapping file +# '!LSHIFT row col' left shift keyboard row/column +# '!RSHIFT row col' right shift keyboard row/column +# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT) +# '!SHIFTL shiftkey' shift lock key (RSHIFT or LSHIFT) +# '!UNDEF keysym' remove keysym from table +# +# Shiftflag can have the values: +# 0 key is not shifted for this keysym/scancode +# 1 key is shifted for this keysym/scancode +# 2 left shift +# 4 right shift +# 8 key can be shifted or not with this keysym/scancode +# 16 deshift key for this keysym/scancode +# 32 another definition for this keysym/scancode follows +# 64 shift lock +# 256 key is used for an alternative keyboard mapping +# +# Negative row values: +# 'keysym -1 n' joystick keymap A, direction n +# 'keysym -2 n' joystick keymap B, direction n +# 'keysym -3 0' first RESTORE key +# 'keysym -3 1' second RESTORE key +# 'keysym -4 0' 40/80 column key +# 'keysym -4 1' CAPS (ASCII/DIN) key +# 'keysym -5 n' joyport keypad, key n +# +# Joystick direction values: +# 0 Fire +# 1 South/West +# 2 South +# 3 South/East +# 4 West +# 5 East +# 6 North/West +# 7 North +# 8 North/East +# +# Joyport keypad key layout: +# -------------------------- +# | 0 | 1 | 2 | 3 | 4 | +# -------------------------- +# | 5 | 6 | 7 | 8 | 9 | +# -------------------------- +# | 10 | 11 | 12 | 13 | 14 | +# -------------------------- +# | 15 | 16 | 17 | 18 | 19 | +# -------------------------- +# +# When a bigger spaced key is used, +# it uses the upper left most key value. + +# Symbolic map, US Layout, C64 + +# C64 keyboard matrix: +# +# +-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0|Bit 1|Bit 2|Bit 3|Bit 4|Bit 5|Bit 6|Bit 7| +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0| DEL |Retrn|C_L/R| F7 | F1 | F3 | F5 |C_U/D| +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 1| 3 # | W | A | 4 $ | Z | S | E | S_L | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 2| 5 % | R | D | 6 & | C | F | T | X | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 3| 7 ' | Y | G | 8 ( | B | H | U | V | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 4| 9 ) | I | J | 0 | M | K | O | N | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 5| + | P | L | - | . > | : [ | @ | , < | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 6|POUND| * | ; ] | HOME| S_R | = | A_UP| / ? | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 7| 1 ! |A_LFT| CTRL| 2 " |SPACE| C= | Q | R/S | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ + +!CLEAR +!LSHIFT 1 7 +!RSHIFT 6 4 +!VSHIFT RSHIFT +!SHIFTL LSHIFT + +Escape 7 7 8 /* ESC -> Run/Stop */ +1 7 0 8 /* 1 -> 1 */ + +2 7 3 32 /* 2 -> 2 */ +2 5 6 16 /* @ -> @ */ +3 1 0 8 /* 3 -> 3 */ + +4 1 3 8 /* 4 -> 4 */ + +5 2 0 8 /* 5 -> 5 */ + +6 2 3 32 /* 6 -> 6 */ +6 6 6 16 /* ^ -> ^ */ +7 3 0 32 /* 7 -> 7 */ +7 2 3 1 /* & -> & */ +8 3 3 32 /* 8 -> 8 */ +8 6 1 16 /* * -> * */ +9 4 0 32 /* 9 -> 9 */ +9 3 3 1 /* ( -> ( */ +0 4 3 32 /* 0 -> 0 */ +0 4 0 1 /* ) -> ) */ +Dash 5 3 32 /* Minus -> Minus */ +Dash 7 1 16 /* Underscore -> Left Arrow */ +Equals 6 5 32 /* = -> = */ +Equals 5 0 16 /* + -> + */ +BackSpace 0 0 8 /* Backspace -> DEL */ +Control_L 7 5 8 /* Cntrl -> CBM */ +q 7 6 8 /* Q -> Q */ + +w 1 1 8 /* W -> W */ + +e 1 6 8 /* E -> E */ + +r 2 1 8 /* R -> R */ + +t 2 6 8 /* T -> T */ + +y 3 1 8 /* Y -> Y */ + +u 3 6 8 /* U -> U */ + +i 4 1 8 /* I -> I */ + +o 4 6 8 /* O -> O */ + +p 5 1 8 /* P -> P */ + +LeftBracket 5 5 1 /* [ -> [ */ +RightBracket 6 2 1 /* ] -> ] */ +Return 0 1 8 /* Return -> Return */ +a 1 2 8 /* A -> A */ + +s 1 5 8 /* S -> S */ + +d 2 2 8 /* D -> D */ + +f 2 5 8 /* F -> F */ + +g 3 2 8 /* G -> G */ + +h 3 5 8 /* H -> H */ + +j 4 2 8 /* J -> J */ + +k 4 5 8 /* K -> K */ + +l 5 2 8 /* L -> L */ + +SemiColon 6 2 32 /* ; -> ; */ +SemiColon 5 5 16 /* : -> : */ +SingleQuote 3 0 33 /* ' -> ' */ +SingleQuote 7 3 1 /* " -> " */ +BackQuote 7 1 32 /* ` -> Left Arrow */ +BackQuote 7 1 1 /* ~ -> Left Arrow */ +BackSlash 6 0 8 /* \ -> Lira */ + +Shift_L 1 7 2 /* Left Shift -> Left Shift */ +CapsLock 1 7 64 /* Caps Lock -> Shift Lock */ +z 1 4 8 /* Z -> Z */ + +x 2 7 8 /* X -> X */ + +c 2 4 8 /* C -> C */ + +v 3 7 8 /* V -> V */ + +b 3 4 8 /* B -> B */ + +n 4 7 8 /* N -> N */ + +m 4 4 8 /* M -> M */ + +Comma 5 7 8 /* , -> , */ + +Period 5 4 8 /* . -> . */ + +Slash 6 7 8 /* / -> / */ + +Shift_R 6 4 4 /* Right Shift -> Right Shift */ +Space 7 4 8 /* Space -> Space */ +F1 0 4 8 /* F1 -> F1 */ +F2 0 4 1 /* F2 -> F2 */ +F3 0 5 8 /* F3 -> F3 */ +F4 0 5 1 /* F4 -> F4 */ +F5 0 6 8 /* F5 -> F5 */ +F6 0 6 1 /* F6 -> F6 */ +F7 0 3 8 /* F7 -> F7 */ +F8 0 3 1 /* F8 -> F8 */ +Home 6 3 8 /* Home -> CLR/HOME */ +Up 0 7 1 /* Up -> CRSR UP */ +Down 0 7 8 /* Down -> CRSR DOWN */ +Insert 0 0 1 /* Insert -> INS */ +Del 0 0 8 /* Delete -> DEL */ +Left 0 2 1 /* Left -> Left */ +Right 0 2 8 /* Right -> Right */ + +# number pad + +KP_Add 5 0 8 /* + -> + */ +KP_Subtract 5 3 8 /* - -> - */ +KP_Multiply 6 1 8 /* * -> * */ +KP_Divide 5 6 8 /* / -> @ */ +KP_Enter 0 1 8 /* Enter -> Return */ + +KP_0 4 3 0 /* 0 -> 0 */ +KP_1 7 0 0 /* 1 -> 1 */ +KP_2 7 3 0 /* 2 -> 2 */ +KP_3 1 0 0 /* 3 -> 3 */ +KP_4 1 3 0 /* 4 -> 4 */ +KP_5 2 0 0 /* 5 -> 5 */ +KP_6 2 3 0 /* 6 -> 6 */ +KP_7 3 0 0 /* 7 -> 7 */ +KP_8 3 3 0 /* 8 -> 8 */ +KP_9 4 0 0 /* 9 -> 9 */ +KP_Decimal 5 4 0 /* . -> . */ + +# misc + +Control_R 7 2 8 /* Control_R -> CTRL */ +PageDown 6 6 1 /* Page Down -> Pi */ + + +# Restore key mappings +Tab -3 0 + + +# workaround for non-functioning right CTRL in BMC64 + +Alt_L 7 2 8 /* Control_R -> CTRL */ +Alt_R 7 2 8 /* Control_R -> CTRL */ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/rpi_pos.vkm b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/rpi_pos.vkm new file mode 100644 index 00000000..4e1ada1d --- /dev/null +++ b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/rpi_pos.vkm @@ -0,0 +1,211 @@ +# Bare Metal Commodore keyboard mapping file suitable for real C64 keyboards using Keymmodore-64 interfase by K-rnivoro. https://github.com/K-rnivoro/Keymmodore-64 +# Tested with BMC v3.9 (https://accentual.com/bmc64/) +# Mapped for positional compatibility to C-64 Keyboards. +# +# File format: +# - comment lines start with '#' +# - keyword lines start with '!keyword' +# - normal line has 'keysym/scancode row column shiftflag' +# +# Keywords and their lines are: +# '!CLEAR' clear whole table +# '!INCLUDE filename' read file as mapping file +# '!LSHIFT row col' left shift keyboard row/column +# '!RSHIFT row col' right shift keyboard row/column +# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT) +# '!SHIFTL shiftkey' shift lock key (RSHIFT or LSHIFT) +# '!UNDEF keysym' remove keysym from table +# +# Shiftflag can have the values: +# 0 key is not shifted for this keysym/scancode +# 1 key is shifted for this keysym/scancode +# 2 left shift +# 4 right shift +# 8 key can be shifted or not with this keysym/scancode +# 16 deshift key for this keysym/scancode +# 32 another definition for this keysym/scancode follows +# +# Negative row values: +# 'keysym -1 n' joystick keymap A, direction n +# 'keysym -2 n' joystick keymap B, direction n +# 'keysym -3 0' first RESTORE key +# 'keysym -3 1' second RESTORE key +# 'keysym -4 0' 40/80 column key +# 'keysym -4 1' CAPS (ASCII/DIN) key +# +# Joystick direction values: +# 0 Fire +# 1 South/West +# 2 South +# 3 South/East +# 4 West +# 5 East +# 6 North/West +# 7 North +# 8 North/East +# +# Joyport keypad key layout: +# -------------------------- +# | 0 | 1 | 2 | 3 | 4 | +# -------------------------- +# | 5 | 6 | 7 | 8 | 9 | +# -------------------------- +# | 10 | 11 | 12 | 13 | 14 | +# -------------------------- +# | 15 | 16 | 17 | 18 | 19 | +# -------------------------- +# +# When a bigger spaced key is used, +# it uses the upper left most key value. + +# Positional Mapping, US Layout, C64, X11 + +# C64 keyboard matrix: +# +# +-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0|Bit 1|Bit 2|Bit 3|Bit 4|Bit 5|Bit 6|Bit 7| +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0| DEL |Retrn|C_L/R| F7 | F1 | F3 | F5 |C_U/D| +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 1| 3 # | W | A | 4 $ | Z | S | E | S_L | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 2| 5 % | R | D | 6 & | C | F | T | X | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 3| 7 ' | Y | G | 8 ( | B | H | U | V | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 4| 9 ) | I | J | 0 | M | K | O | N | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 5| + | P | L | - | . > | : [ | @ | , < | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 6|POUND| * | ; ] | HOME| S_R | = | A_UP| / ? | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 7| 1 ! |A_LFT| CTRL| 2 " |SPACE| C= | Q | R/S | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ + +!CLEAR +!LSHIFT 1 7 +!RSHIFT 6 4 +!VSHIFT RSHIFT +!SHIFTL LSHIFT + +##################### +# |Bit 0| DEL |Retrn|C_L/R| F7 | F1 | F3 | F5 |C_U/D| + +BackSpace 0 0 8 +Return 0 1 8 +Right 0 2 8 +F7 0 3 8 +F1 0 4 8 +F3 0 5 8 +F5 0 6 8 +F6 0 6 1 +Down 0 7 8 + + +##################### +# |Bit 1| 3 # | W | A | 4 $ | Z | S | E | S_L | + +Shift_L 1 7 2 + + +##################### +# |Bit 2| 5 % | R | D | 6 & | C | F | T | X | + + +##################### +# |Bit 3| 7 ' | Y | G | 8 ( | B | H | U | V | + + +##################### +# |Bit 4| 9 ) | I | J | 0 | M | K | O | N | + + +##################### +# |Bit 5| + | P | L | - | . > | : [ | @ | , < | + +Dash 5 0 8 +Equals 5 3 8 +Period 5 4 8 +SemiColon 5 5 8 +LeftBracket 5 6 8 +Comma 5 7 8 + + +##################### +# |Bit 6|POUND| * | ; ] | HOME| S_R | = | A_UP| / ? | + +Insert 6 0 8 +RightBracket 6 1 8 +SingleQuote 6 2 8 +Home 6 3 8 +Shift_R 6 4 4 +BackSlash 6 5 8 +Del 6 6 8 +Slash 6 7 8 + +##################### +# |Bit 7| 1 ! |A_LFT| CTRL| 2 " |SPACE| C= | Q | R/S | + +BackQuote 7 1 8 +Tab 7 2 8 +Space 7 4 8 +Control_L 7 5 8 +Escape 7 7 8 + +##################### +# letters and numbers + +0 4 3 8 +1 7 0 8 +2 7 3 8 +3 1 0 8 +4 1 3 8 +5 2 0 8 +6 2 3 8 +7 3 0 8 +8 3 3 8 +9 4 0 8 + +a 1 2 8 +b 3 4 8 +c 2 4 8 +d 2 2 8 +e 1 6 8 +f 2 5 8 +g 3 2 8 +h 3 5 8 +i 4 1 8 +j 4 2 8 +k 4 5 8 +l 5 2 8 +m 4 4 8 +n 4 7 8 +o 4 6 8 +p 5 1 8 +q 7 6 8 +r 2 1 8 +s 1 5 8 +t 2 6 8 +u 3 6 8 +v 3 7 8 +w 1 1 8 +x 2 7 8 +y 3 1 8 +z 1 4 8 + +# Restore key mappings +PageUp -3 0 + +# joystick keymap A (port 1) +KP_8 -1 7 /* NumPad 8 -> UP */ +KP_2 -1 2 /* NumPad 2 -> DOWN */ +KP_4 -1 4 /* NumPad 4 -> LEFT */ +KP_6 -1 5 /* NumPad 6 -> RIGHT */ +KP_0 -1 0 /* NumPad 0 -> FIRE */ + +# joystick Keymap B (port 2) +KP_7 -2 7 /* NumPad 7 -> UP */ +KP_3 -2 2 /* NumPad 3 -> DOWN */ +KP_1 -2 4 /* NumPad 1 -> LEFT */ +KP_9 -2 5 /* NumPad 9 -> RIGHT */ +KP_Decimal -2 0 /* NumPad . -> FIRE */ \ No newline at end of file diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/rpi_sym.vkm b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/rpi_sym.vkm new file mode 100644 index 00000000..8a31740d --- /dev/null +++ b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/C64/rpi_sym.vkm @@ -0,0 +1,179 @@ +# VICE keyboard mapping file +# +# A Keyboard map is read in as patch to the current map. +# +# File format: +# - comment lines start with '#' +# - keyword lines start with '!keyword' +# - normal line has 'keysym/scancode row column shiftflag' +# +# Keywords and their lines are: +# '!CLEAR' clear whole table +# '!INCLUDE filename' read file as mapping file +# '!LSHIFT row col' left shift keyboard row/column +# '!RSHIFT row col' right shift keyboard row/column +# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT) +# '!SHIFTL shiftkey' shift lock key (RSHIFT or LSHIFT) +# '!UNDEF keysym' remove keysym from table +# +# Shiftflag can have the values: +# 0 key is not shifted for this keysym/scancode +# 1 key is shifted for this keysym/scancode +# 2 left shift +# 4 right shift +# 8 key can be shifted or not with this keysym/scancode +# 16 deshift key for this keysym/scancode +# 32 another definition for this keysym/scancode follows +# 64 shift lock +# 256 key is used for an alternative keyboard mapping +# +# Negative row values: +# 'keysym -1 n' joystick keymap A, direction n +# 'keysym -2 n' joystick keymap B, direction n +# 'keysym -3 0' first RESTORE key +# 'keysym -3 1' second RESTORE key +# 'keysym -4 0' 40/80 column key +# 'keysym -4 1' CAPS (ASCII/DIN) key +# 'keysym -5 n' joyport keypad, key n +# +# Joystick direction values: +# 0 Fire +# 1 South/West +# 2 South +# 3 South/East +# 4 West +# 5 East +# 6 North/West +# 7 North +# 8 North/East +# +# Joyport keypad key layout: +# -------------------------- +# | 0 | 1 | 2 | 3 | 4 | +# -------------------------- +# | 5 | 6 | 7 | 8 | 9 | +# -------------------------- +# | 10 | 11 | 12 | 13 | 14 | +# -------------------------- +# | 15 | 16 | 17 | 18 | 19 | +# -------------------------- +# +# When a bigger spaced key is used, +# it uses the upper left most key value. + +# SDL symbolic map for the C64, the SCPU64, and the C64DTV + +# C64 keyboard matrix: +# +# +-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0|Bit 1|Bit 2|Bit 3|Bit 4|Bit 5|Bit 6|Bit 7| +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0| DEL |Retrn|C_L/R| F7 | F1 | F3 | F5 |C_U/D| +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 1| 3 # | W | A | 4 $ | Z | S | E | S_L | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 2| 5 % | R | D | 6 & | C | F | T | X | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 3| 7 ' | Y | G | 8 ( | B | H | U | V | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 4| 9 ) | I | J | 0 | M | K | O | N | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 5| + | P | L | - | . > | : [ | @ | , < | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 6|POUND| * | ; ] | HOME| S_R | = | A_UP| / ? | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 7| 1 ! |A_LFT| CTRL| 2 " |SPACE| C= | Q | R/S | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ + +!CLEAR +!LSHIFT 1 7 +!RSHIFT 6 4 +!VSHIFT RSHIFT +!SHIFTL LSHIFT + +Escape 7 7 8 /* ESC -> Run/Stop */ +1 7 0 8 /* 1 -> 1 */ +2 7 3 32 /* 2 -> 2 */ +2 5 6 16 /* @ -> @ */ +3 1 0 8 /* 3 -> 3 */ +4 1 3 8 /* 4 -> 4 */ +5 2 0 8 /* 5 -> 5 */ +6 2 3 32 /* 6 -> 6 */ +6 6 6 16 /* ^ -> ^ */ +7 3 0 32 /* 7 -> 7 */ +7 2 3 1 /* & -> & */ +8 3 3 32 /* 8 -> 8 */ +8 6 1 16 /* * -> * */ +9 4 0 32 /* 9 -> 9 */ +9 3 3 1 /* ( -> ( */ +0 4 3 32 /* 0 -> 0 */ +0 4 0 1 /* ) -> ) */ +Dash 5 3 8 /* Minus -> Minus */ +Equals 6 5 32 /* = -> = */ +Equals 5 0 16 /* + -> + */ +Pound 6 5 32 /* = -> = */ +Pound 5 0 16 /* + -> + */ +BackSpace 0 0 8 /* Backspace -> DEL */ +Control_L 7 5 8 /* Cntrl -> CBM */ +q 7 6 8 /* Q -> Q */ +w 1 1 8 /* W -> W */ +e 1 6 8 /* E -> E */ +r 2 1 8 /* R -> R */ +t 2 6 8 /* T -> T */ +y 3 1 8 /* Y -> Y */ +u 3 6 8 /* U -> U */ +i 4 1 8 /* I -> I */ +o 4 6 8 /* O -> O */ +p 5 1 8 /* P -> P */ +LeftBracket 5 5 1 /* [ -> [ */ +RightBracket 6 2 1 /* ] -> ] */ +Return 0 1 8 /* Return -> Return */ +Tab 7 2 8 /* Tab -> Ctrl */ +a 1 2 8 /* A -> A */ +s 1 5 8 /* S -> S */ +d 2 2 8 /* D -> D */ +f 2 5 8 /* F -> F */ +g 3 2 8 /* G -> G */ +h 3 5 8 /* H -> H */ +j 4 2 8 /* J -> J */ +k 4 5 8 /* K -> K */ +l 5 2 8 /* L -> L */ +SemiColon 6 2 32 /* ; -> ; */ +SemiColon 5 5 16 /* : -> : */ +SingleQuote 3 0 33 /* ' -> ' */ +SingleQuote 7 3 1 /* " -> " */ +BackQuote 7 1 32 /* ` -> Left Arrow */ +BackQuote 6 6 1 /* ~ -> Pi */ +BackSlash 6 0 8 /* \ -> Lira */ +Shift_L 1 7 2 /* Left Shift -> Left Shift */ +CapsLock 1 7 64 /* Caps Lock -> Shift Lock */ +z 1 4 8 /* Z -> Z */ +x 2 7 8 /* X -> X */ +c 2 4 8 /* C -> C */ +v 3 7 8 /* V -> V */ +b 3 4 8 /* B -> B */ +n 4 7 8 /* N -> N */ +m 4 4 8 /* M -> M */ +Comma 5 7 8 /* , -> , */ +Period 5 4 8 /* . -> . */ +Slash 6 7 8 /* / -> / */ +Shift_R 6 4 4 /* Right Shift -> Right Shift */ +Space 7 4 8 /* Space -> Space */ +F1 0 4 8 /* F1 -> F1 */ +F2 0 4 1 /* F2 -> F2 */ +F3 0 5 8 /* F3 -> F3 */ +F4 0 5 1 /* F4 -> F4 */ +F5 0 6 8 /* F5 -> F5 */ +F6 0 6 1 /* F6 -> F6 */ +F7 0 3 8 /* F7 -> F7 */ +F8 0 3 1 /* F8 -> F8 */ +Home 6 3 8 /* Home -> CLR/HOME */ +Up 0 7 1 /* Up -> CRSR UP */ +Down 0 7 8 /* Down -> CRSR DOWN */ +Insert 0 0 1 /* Insert -> INS */ +Del 0 0 8 /* Delete -> DEL */ +Left 0 2 1 /* Left -> Left */ +Right 0 2 8 /* Right -> Right */ + +# Restore key mappings +PageUp -3 0 diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/LICENSE b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/LICENSE new file mode 100644 index 00000000..9cecc1d4 --- /dev/null +++ b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + {one line to give the program's name and a brief idea of what it does.} + Copyright (C) {year} {name of author} + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + {project} Copyright (C) {year} {fullname} + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/PUT_ROMS_HERE b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/PUT_ROMS_HERE new file mode 100644 index 00000000..2dabf72d --- /dev/null +++ b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/PUT_ROMS_HERE @@ -0,0 +1 @@ +Place KERNAL, CHARGEN, BASIC and d1541II ROMS in this dir. diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/basic1 b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/basic1 new file mode 100644 index 00000000..6bb3b2b4 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/basic1 differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/basic2 b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/basic2 new file mode 100644 index 00000000..a70d7948 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/basic2 differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/basic4 b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/basic4 new file mode 100644 index 00000000..121744dc Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/basic4 differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/characters.901640-01.bin b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/characters.901640-01.bin new file mode 100644 index 00000000..a9ad3a1a Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/characters.901640-01.bin differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/chargen b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/chargen new file mode 100644 index 00000000..0af9d263 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/chargen differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/dos2031 b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/dos2031 new file mode 100644 index 00000000..775205fc Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/dos2031 differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/edit1g b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/edit1g new file mode 100644 index 00000000..4fbff7d5 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/edit1g differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/edit2b b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/edit2b new file mode 100644 index 00000000..e574ae52 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/edit2b differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/edit2g b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/edit2g new file mode 100644 index 00000000..300c09c2 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/edit2g differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/edit4b40 b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/edit4b40 new file mode 100644 index 00000000..627652f8 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/edit4b40 differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/edit4b80 b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/edit4b80 new file mode 100644 index 00000000..b537ca85 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/edit4b80 differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/edit4g40 b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/edit4g40 new file mode 100644 index 00000000..15185e34 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/edit4g40 differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/hre-9000.324992-02.bin b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/hre-9000.324992-02.bin new file mode 100644 index 00000000..53ef334a Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/hre-9000.324992-02.bin differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/hre-a000.324993-02.bin b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/hre-a000.324993-02.bin new file mode 100644 index 00000000..a873fdd1 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/hre-a000.324993-02.bin differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/kernal1 b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/kernal1 new file mode 100644 index 00000000..79afe9b7 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/kernal1 differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/kernal2 b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/kernal2 new file mode 100644 index 00000000..63c872ea Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/kernal2 differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/kernal4 b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/kernal4 new file mode 100644 index 00000000..c6c72cd8 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/kernal4 differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/rpi_buus_pos.vkm b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/rpi_buus_pos.vkm new file mode 100644 index 00000000..0ad44f23 --- /dev/null +++ b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/rpi_buus_pos.vkm @@ -0,0 +1,236 @@ +# Bare Metal Commodore keyboard mapping file suitable for real C64 keyboards using Keymmodore-64 interfase by K-rnivoro. https://github.com/K-rnivoro/Keymmodore-64 +# Tested with BMC v3.9 (https://accentual.com/bmc64/) +# Mapped for compatibility to PET Models with Business Keyboards only (3000B, 4000B and 80000 models). +# Based on C64 Positional Layout. +# +# ESCAPE is mapped to F1 Key. +# OFF/REVERSE is mapped to F3 Key. +# REPEAT is mapped to F5 Key. +# Backslash is mapped to £ (Pound) Key. +# TAB is mapped to CTRL Key. +# NumericPad Keys (1 to 0 and Dot) are accessed by pressing Commodore Key (C=). +# Brackets ([/]) Keys are accessed by pressing either Commodore Key (C=) ot Shift Key. +# +# File format: +# - comment lines start with '#' +# - keyword lines start with '!keyword' +# - normal line has 'keysym/scancode row column shiftflag' +# +# Keywords and their lines are: +# '!CLEAR' clear whole table +# '!INCLUDE filename' read file as mapping file +# '!LSHIFT row col' left shift keyboard row/column +# '!RSHIFT row col' right shift keyboard row/column +# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT) +# '!UNDEF keysym' remove keysym from table +# +# Shiftflag can have the values: +# 0 key is not shifted for this keysym/scancode +# 1 key is shifted for this keysym/scancode +# 2 left shift +# 4 right shift +# 8 key can be shifted or not with this keysym/scancode +# 16 deshift key for this keysym/scancode +# 32 another definition for this keysym/scancode follows +# +# Negative row values: +# 'keysym -1 n' joystick #1, direction n +# 'keysym -2 n' joystick #2, direction n +# 'keysym -3 0' first RESTORE key +# 'keysym -3 1' second RESTORE key +# 'keysym -4 0' 40/80 column key +# 'keysym -4 1' CAPS (ASCII/DIN) key +# +# Business (UK) keyboard matrix: +# Keys starting with 'KP' are on the number pad. +# +# 0 1 2 3 4 5 6 7 +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 0 | 2 | 5 | 8 | - | KP8 |crsr rgt| ^N | . | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 1 | 1 | 4 | 7 | 0 | KP7 | ^ |--------| KP9 | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 2 | escape | s | f | h | ] .| k | ; .| KP5 | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 3 | a | d | g | j | return | l | @ .| KP6 | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 4 | tab | w | r | y | \ .| i | p | del | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 5 | q | e | t | u |crsr dwn| o | [ .| KP4 | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 6 |l shift | c | b | . | KP. | ^Y |r shift | KP3 | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 7 | z | v | n | , | KP0 | ^O | repeat | KP2 | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 8 | RVS | x | space | m | home | ^U | / | KP1 | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 9 | <-- | 3 | 6 | 9 |runstop | : |--------| ^V | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# +# ^N = both shifts + 2 +# ^Y = left shift + TAB + I +# ^O = Z + A + L +# ^U = RVS + A + L +# ^V = TAB + <- + DEL + +# Business (US) matrix (differences to UK) +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 2 | | | | | ; | | \ | | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 3 | | | | | | | [ | | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 4 | | | | | @ | | | | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 5 | | | | | | | ] | | +# +--------+--------+--------+--------+--------+--------+--------+--------+ + +!CLEAR +!LSHIFT 6 0 +!RSHIFT 6 6 +!VSHIFT RSHIFT + +###### Same Keys than C-64 Keyboard + +# RUN/STOP +Escape 9 4 8 + +# CLR/HOME +Home 8 4 8 + +# LEFT/RIGHT +Right 0 5 8 + +# UP/DOWN +Down 5 4 8 + +#INST/DEL +# Keymmodore maps both INST/DEL and RESTORE keys the same because there is no RESTORE Key in PET Keyboards. +BackSpace 4 7 8 + +# SHIFT +Shift_L 6 0 2 +Shift_R 6 6 4 + +# ENTER +Return 3 4 8 + +# Arrow Up +Del 1 5 8 + +# Arrow Left +BackQuote 9 0 8 + +# @ +LeftBracket 3 6 8 + +# /. +Period 6 3 32 +Period 6 3 1 + +# ?// +Slash 8 6 32 +Slash 8 6 1 + +# Space Bar +Space 8 2 8 + + + +##### Keys of C-64 real Keyboard non present in PET Business Keyboard + +# + (Plus) +Dash 2 6 1 + +# - (Minus) +Equals 0 3 16 + +# * (Asterisk) +RightBracket 9 5 1 + +# \ (Using Pound Key) +Insert 4 4 16 + +###### Keys of real PET Business Keyboard not present in C-64 Keyboard + +# ESCAPE +F1 2 0 8 + +# OFF/RVS +F3 8 0 8 + +# REPEAT +F5 7 6 8 + +# TAB +Tab 4 0 8 + +# =/- (only =) +BackSlash 0 3 1 + +# */: (only :) +SemiColon 9 5 32 +# [ (mapped to two keys to be used either with Shift or C=) +SemiColon 5 6 1 +F10 5 6 16 + +# +/; (only ;) +SingleQuote 2 6 32 +# ] (mapped to two keys to be used either with Shift or C=) +SingleQuote 2 4 1 +F11 2 4 16 + +1 1 0 8 +2 0 0 8 +3 9 1 8 +4 1 1 8 +5 0 1 8 +6 9 2 8 +7 1 2 8 +8 0 2 8 +9 9 3 8 +0 1 3 8 + +a 3 0 8 +b 6 2 8 +c 6 1 8 +d 3 1 8 +e 5 1 8 +f 2 2 8 +g 3 2 8 +h 2 3 8 +i 4 5 8 +j 3 3 8 +k 2 5 8 +l 3 5 8 +m 8 3 8 +n 7 2 8 +o 5 5 8 +p 4 6 8 +q 5 0 8 +r 4 2 8 +s 2 1 8 +t 5 2 8 +u 5 3 8 +v 7 1 8 +w 4 1 8 +x 8 1 8 +y 4 3 8 +z 7 0 8 + +##### NUMERIC PAD (With C= Key) +KP_0 7 4 8 +KP_1 8 7 8 +KP_2 7 7 8 +KP_3 6 7 8 +KP_4 5 7 8 +KP_5 2 7 8 +KP_6 3 7 8 +KP_7 1 4 8 +KP_8 0 4 8 +KP_9 1 7 8 +KP_Decimal 6 4 8 + diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/rpi_buus_sym.vkm b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/rpi_buus_sym.vkm new file mode 100644 index 00000000..30ff314e --- /dev/null +++ b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/rpi_buus_sym.vkm @@ -0,0 +1,189 @@ +# VICE keyboard mapping file +# +# A Keyboard map is read in as patch to the current map. +# +# File format: +# - comment lines start with '#' +# - keyword lines start with '!keyword' +# - normal line has 'keysym/scancode row column shiftflag' +# +# Keywords and their lines are: +# '!CLEAR' clear whole table +# '!INCLUDE filename' read file as mapping file +# '!LSHIFT row col' left shift keyboard row/column +# '!RSHIFT row col' right shift keyboard row/column +# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT) +# '!UNDEF keysym' remove keysym from table +# +# Shiftflag can have the values: +# 0 key is not shifted for this keysym/scancode +# 1 key is shifted for this keysym/scancode +# 2 left shift +# 4 right shift +# 8 key can be shifted or not with this keysym/scancode +# 16 deshift key for this keysym/scancode +# 32 another definition for this keysym/scancode follows +# +# Negative row values: +# 'keysym -1 n' joystick #1, direction n +# 'keysym -2 n' joystick #2, direction n +# 'keysym -3 0' first RESTORE key +# 'keysym -3 1' second RESTORE key +# 'keysym -4 0' 40/80 column key +# 'keysym -4 1' CAPS (ASCII/DIN) key +# + +# this is a PET business (uk) keyboard mapping (symbolic) + +# Business (UK) keyboard matrix: +# +# Keys starting with 'KP' are on the number pad. +# +# 0 1 2 3 4 5 6 7 +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 0 | 2 | 5 | 8 | - | KP8 |crsr rgt| ^N | . | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 1 | 1 | 4 | 7 | 0 | KP7 | ^ |--------| KP9 | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 2 | escape | s | f | h | ] | k | ; | KP5 | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 3 | a | d | g | j | return | l | @ | KP6 | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 4 | tab | w | r | y | \ | i | p | del | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 5 | q | e | t | u |crsr dwn| o | [ | KP4 | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 6 |l shift | c | b | . | KP. | ^Y |r shift | KP3 | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 7 | z | v | n | , | KP0 | ^O | repeat | KP2 | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 8 | RVS | x | space | m | home | ^U | / | KP1 | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 9 | <-- | 3 | 6 | 9 |runstop | : |--------| ^V | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# +# ^N = both shifts + 2 +# ^Y = left shift + TAB + I +# ^O = Z + A + L +# ^U = RVS + A + L +# ^V = TAB + <- + DEL +# +# Business (US) matrix (differences to UK) +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 2 | | | | | ; | | \ | | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 3 | | | | | | | [ | | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 4 | | | | | @ | | | | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 5 | | | | | | | ] | | +# +--------+--------+--------+--------+--------+--------+--------+--------+ + +!CLEAR +!LSHIFT 6 0 +!RSHIFT 6 6 +!VSHIFT RSHIFT + +0 1 3 32 +0 9 3 1 +1 1 0 32 +1 1 0 1 +2 0 0 32 +2 3 6 0 +3 9 1 32 +3 9 1 1 +4 1 1 32 +4 1 1 1 +5 0 1 32 +5 0 1 1 +6 9 2 32 +6 1 5 0 +7 1 2 32 +7 9 2 1 +8 0 2 32 +8 9 5 1 +9 9 3 32 +9 0 2 1 + +Control_L 9 4 8 +Home 8 4 8 +Right 0 5 8 +Down 5 4 8 +Del 4 7 0 +BackSpace 4 7 8 +Shift_L 6 0 2 +Shift_R 6 6 4 +Return 3 4 8 +Escape 2 0 8 +# RVS +PageDown 8 0 8 +# RPT +Control_R 7 6 8 +Tab 4 0 8 +KP_0 7 4 8 +KP_1 8 7 8 +KP_2 7 7 8 +KP_3 6 7 8 +KP_4 5 7 8 +KP_5 2 7 8 +KP_6 3 7 8 +KP_7 1 4 8 +KP_8 0 4 8 +KP_9 1 7 8 +KP_Separator 7 3 0 +KP_Multiply 9 5 1 +KP_Divide 8 6 0 +KP_Add 2 6 1 +KP_Subtract 0 3 0 +KP_Enter 3 4 8 +KP_Decimal 6 4 0 +Period 6 3 32 +Period 6 3 1 +Dash 0 3 32 +Dash 9 0 0 +Space 8 2 8 +SemiColon 2 6 32 +SemiColon 9 5 0 +Comma 7 3 32 +Comma 7 3 1 +Slash 8 6 32 +Slash 8 6 1 +BackSlash 4 4 32 +BackSlash 4 4 1 +a 3 0 8 +b 6 2 8 +c 6 1 8 +d 3 1 8 +e 5 1 8 +f 2 2 8 +g 3 2 8 +h 2 3 8 +i 4 5 8 +j 3 3 8 +k 2 5 8 +l 3 5 8 +m 8 3 8 +n 7 2 8 +o 5 5 8 +p 4 6 8 +q 5 0 8 +r 4 2 8 +s 2 1 8 +t 5 2 8 +u 5 3 8 +v 7 1 8 +w 4 1 8 +x 8 1 8 +y 4 3 8 +z 7 0 8 +LeftBracket 5 6 32 # [ +LeftBracket 5 6 1 # shift [, { for SuperPET +RightBracket 2 4 32 # ] +RightBracket 2 4 1 # shift ], } for SuperPET +Insert 4 7 1 +Left 0 5 1 +Up 5 4 1 +SingleQuote 1 2 31 +SingleQuote 0 0 1 +Equals 0 3 33 +Equals 2 6 1 diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/rpi_grus_pos.vkm b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/rpi_grus_pos.vkm new file mode 100644 index 00000000..e24d3637 --- /dev/null +++ b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/rpi_grus_pos.vkm @@ -0,0 +1,297 @@ +# Bare Metal Commodore keyboard mapping file suitable for real C64 keyboards using Keymmodore-64 interfase by K-rnivoro. https://github.com/K-rnivoro/Keymmodore-64 +# Tested with BMC v3.9 (https://accentual.com/bmc64/) +# Mapped for compatibility to PET Models with Graphics Keyboards only (2000, 3000, 4000, Non-B models). +# +# PET Graphics Keyboard has only one character and one graphics PETSCII per key. +# Keymmodore uses C= Key to access a layer with PET Keys corresponding to shifted symbols of C-64 Keyboard (!/"/#/$/%/&/'/(/)/[/]//?) so you have to hold C= for those keys. +# You can access PET graphics PETSCII of those keys by pressing Shift and/or C=. Graphics PETSCII will match the the original PET Graphics Keyboard layout (not labeled in C64). +# +# Graphics PETSCII set of PET and C-64 are the same so there is no missing graphics PETSCII codes. They just have been redistributed to match C-64 Keyboard. +# ANY left C-64 labeled Graphics PETSCII works using C= Key thanks to being remapped by Keymmodore-64. +# ANY right C-64 labeled Graphics PETSCII works using Shift keys thanks to being remapped by VICE (this file). +# +# OFF/REVERSE key is mapped to CTRL (Control) Key. +# Backslash Key is mapped to £ (Pound) Key. +# +# +# File format: +# - comment lines start with '#' +# - keyword lines start with '!keyword' +# - normal line has 'keysym/scancode row column shiftflag' +# +# Keywords and their lines are: +# '!CLEAR' clear whole table +# '!INCLUDE filename' read file as mapping file +# '!LSHIFT row col' left shift keyboard row/column +# '!RSHIFT row col' right shift keyboard row/column +# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT) +# '!UNDEF keysym' remove keysym from table +# +# Shiftflag can have the values: +# 0 key is not shifted for this keysym/scancode +# 1 key is shifted for this keysym/scancode +# 2 left shift +# 4 right shift +# 8 key can be shifted or not with this keysym/scancode +# 16 deshift key for this keysym/scancode +# 32 another definition for this keysym/scancode follows +# +# Negative row values: +# 'keysym -1 n' joystick #1, direction n +# 'keysym -2 n' joystick #2, direction n +# 'keysym -3 0' first RESTORE key +# 'keysym -3 1' second RESTORE key +# 'keysym -4 0' 40/80 column key +# 'keysym -4 1' CAPS (ASCII/DIN) key +# + +# this is a PET graphics keyboard mapping (positional) + +# +# Graphics keyboard matrix: +# +# 0 1 2 3 4 5 6 7 +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 0 | ! | # | % | & | ( | <-- | home |crsr rgt| +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 1 | " | $ | ' | \ | ) |--------|crsr dwn| del | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 2 | q | e | t | u | o | ^ | 7 | 9 | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 3 | w | r | y | i | p |--------| 8 | / | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 4 | a | d | g | j | l |--------| 4 | 6 | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 5 | s | f | h | k | : |--------| 5 | * | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 6 | z | c | b | m | ; | return | 1 | 3 | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 7 | x | v | n | , | ? |--------| 2 | + | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 8 |l shift | @ | ] |--------| > |r shift | 0 | - | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 9 | rvs on | [ | space | < | stop |--------| . | = | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# +# The original gfx keyboard reflects the matrix perfectly: +# +# ! " # $ % ' & \ ( ) <- ^s ^q ^] ^t +# q w e r t y u i o p ^ 7 8 9 / +# a s d f g h j k l : ^m 4 5 6 * +# z x c v b n m , ; ? ^m 1 2 3 + +# LS ^r @ [ ] SPACE < > ^c RS 0 . - = +# +# http://www.6502.org/users/andre/petindex/keyboards.html + +!CLEAR +!LSHIFT 8 0 +!RSHIFT 8 5 +!VSHIFT RSHIFT +!SHIFTL LSHIFT + +###### Same Keys than C-64 Keyboard ####### + +# RUN/STOP +Escape 9 4 8 + +# CLR/HOME +Home 0 6 8 + +# LEFT/RIGHT +Right 0 7 8 + +# UP/DOWN +Down 1 6 8 + +# INST/DEL +# Keymmodore maps both INST/DEL and RESTORE the same because there is no RESTORE Key. +BackSpace 1 7 8 + +# SHIFT +Shift_L 8 0 2 +Shift_R 8 5 4 + +# ENTER +Return 6 5 8 + +# Space Bar +Space 9 2 8 + +# Arrow Up (Only key with one PETSCII and identical to C64) +Del 2 5 8 + +# Arrow Left (no PETSCII in C-64) +BackQuote 0 5 8 + +# Equal (=) (no PETSCII in C-64) +BackSlash 9 7 8 + + +#### (Scattered) Symbol Keys "merged" again into C-64 Keys with no PETSCII + +#Colon (:) and Brace Left ([) +SemiColon 5 4 8 +KP_Subtract 9 1 8 /* Numpad - -> [ */ + + +# Semicolon (;) and Brace Right (]) +SingleQuote 6 4 8 +KP_Add 8 2 8 /* Numpad + -> ] */ + +# Comma (,) and Less(<) +Comma 7 3 8 +PageUp 9 3 8 /* PgUp -> < */ + + +# Period (.) and Greater (>) +Period 9 6 8 +PageDown 8 4 8 /* PgDown -> > */ + + +# Slash (/) and Question (?) +Slash 3 7 8 +KP_Divide 7 4 8 /* Numpad / -> ? */ + + + +#### (Scattered) Symbols and Numbers "merged" again into C-64 Number Keys +1 6 6 8 +F1 0 0 8 +2 7 6 8 +F2 1 0 8 +3 6 7 8 +F3 0 1 8 +4 4 6 8 +F4 1 1 8 +5 5 6 8 +F5 0 2 8 +6 4 7 8 +F6 0 3 8 +7 2 6 8 +Up 1 2 8 +8 3 6 8 +Left 0 4 8 +9 2 7 8 +F9 1 4 8 +0 8 6 8 + + + +###### Keys not present in C64 keyboard ###### + +# Backslash (\) (Using Pound (£) Key) +Tab 1 3 32 +Tab 1 4 1 + +# OFF/REVERSE (Using CTRL Key) +Insert 9 0 8 + +###### Keys matching C64 keyboard having PETSCIIs ###### +# Right PETSCII with any Shift Key. +# Left PETSCII with Commodore Key. +# PETSCII are remapped to match C64 Keyboard. + +# Plus (+) +Dash 7 7 32 +Dash 9 1 1 + + +# Minus (-) +Equals 8 7 32 +Equals 8 2 1 +KP_Multiply 1 3 8 /* Numpad * -> \ PETSCII */ + +# Multiply (*) +RightBracket 5 7 32 +RightBracket 8 1 1 + +# At (@) +LeftBracket 8 1 32 +LeftBracket 5 4 1 + +###### Letter Keys ###### +# Right PETSCII with any Shift Key. +# Left PETSCII with Commodore Key. +# PETSCII are remapped to match C64 Keyboard. + +# Q Key +q 2 0 8 +F10 7 7 1 + + +# W Key +w 3 0 8 + +# E Key +e 2 1 8 + +# R Key +r 3 1 8 + +# T Key +t 2 2 8 + +# Y Key +y 3 2 8 + +# U Key +u 2 3 8 + +# I KEY +i 3 3 8 + +# O Key +o 2 4 8 + +#P Key +p 3 4 8 + +# A Key +a 4 0 8 + +# S Key +s 5 0 8 + +# D Key +d 4 1 8 + +# F Key +f 5 1 8 + +# G Key +g 4 2 8 + +# H Key +h 5 2 8 + +# J Key +j 4 3 8 + +# K Key +k 5 3 8 + +# L Key +l 4 4 8 + +# Z Key +z 6 0 8 +F11 8 7 1 + +# X Key +x 7 0 8 + +# C Key +c 6 1 8 + +# V Key +v 7 1 8 + +# B Key +b 6 2 8 + +# N Key +n 7 2 8 +Alt_L 5 7 1 + +# M Key +m 6 3 8 diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/rpi_grus_sym.vkm b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/rpi_grus_sym.vkm new file mode 100644 index 00000000..fd4cbad6 --- /dev/null +++ b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/rpi_grus_sym.vkm @@ -0,0 +1,178 @@ +# VICE keyboard mapping file +# +# A Keyboard map is read in as patch to the current map. +# +# File format: +# - comment lines start with '#' +# - keyword lines start with '!keyword' +# - normal line has 'keysym/scancode row column shiftflag' +# +# Keywords and their lines are: +# '!CLEAR' clear whole table +# '!INCLUDE filename' read file as mapping file +# '!LSHIFT row col' left shift keyboard row/column +# '!RSHIFT row col' right shift keyboard row/column +# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT) +# '!UNDEF keysym' remove keysym from table +# +# Shiftflag can have the values: +# 0 key is not shifted for this keysym/scancode +# 1 key is shifted for this keysym/scancode +# 2 left shift +# 4 right shift +# 8 key can be shifted or not with this keysym/scancode +# 16 deshift key for this keysym/scancode +# 32 another definition for this keysym/scancode follows +# +# Negative row values: +# 'keysym -1 n' joystick #1, direction n +# 'keysym -2 n' joystick #2, direction n +# 'keysym -3 0' first RESTORE key +# 'keysym -3 1' second RESTORE key +# 'keysym -4 0' 40/80 column key +# 'keysym -4 1' CAPS (ASCII/DIN) key +# + +# this is a PET graphics keyboard mapping (symbolic) + +# +# Graphics keyboard matrix: +# +# 0 1 2 3 4 5 6 7 +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 0 | ! | # | % | & | ( | <-- | home |crsr rgt| +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 1 | " | $ | ' | \ | ) |--------|crsr dwn| del | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 2 | q | e | t | u | o | ^ | 7 | 9 | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 3 | w | r | y | i | p |--------| 8 | / | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 4 | a | d | g | j | l |--------| 4 | 6 | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 5 | s | f | h | k | : |--------| 5 | * | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 6 | z | c | b | m | ; | return | 1 | 3 | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 7 | x | v | n | , | ? |--------| 2 | + | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 8 |l shift | @ | ] |--------| > |r shift | 0 | - | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 9 | rvs on | [ | space | < | stop |--------| . | = | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# +# The original gfx keyboard reflects the matrix perfectly: +# +# ! " # $ % ' & \ ( ) <- ^s ^q ^] ^t +# q w e r t y u i o p ^ 7 8 9 / +# a s d f g h j k l : ^m 4 5 6 * +# z x c v b n m , ; ? ^m 1 2 3 + +# LS ^r @ [ ] SPACE < > ^c RS 0 . - = +# +# http://www.6502.org/users/andre/petindex/keyboards.html + +!CLEAR +!LSHIFT 8 0 +!RSHIFT 8 5 +!VSHIFT RSHIFT + +Return 6 5 8 +Down 1 6 8 +Right 0 7 8 +Home 0 6 8 +BackSpace 1 7 8 +Delete 1 7 0 +Tab 9 0 8 +KP_Tab 9 0 8 +Escape 9 4 8 +Control_L 9 4 8 +Shift_L 8 0 2 +Shift_R 8 5 4 +a 4 0 8 +b 6 2 8 +c 6 1 8 +d 4 1 8 +e 2 1 8 +f 5 1 8 +g 4 2 8 +h 5 2 8 +i 3 3 8 +j 4 3 8 +k 5 3 8 +l 4 4 8 +m 6 3 8 +n 7 2 8 +o 2 4 8 +p 3 4 8 +q 2 0 8 +r 3 1 8 +s 5 0 8 +t 2 2 8 +u 2 3 8 +v 7 1 8 +w 3 0 8 +x 7 0 8 +y 3 2 8 +z 6 0 8 +KP_0 8 6 0 +KP_1 6 6 0 +KP_2 7 6 0 +KP_3 6 7 0 +KP_4 4 6 0 +KP_5 5 6 0 +KP_6 4 7 0 +KP_7 2 6 0 +KP_8 3 6 0 +KP_9 2 7 0 +KP_Multiply 5 7 8 +KP_Divide 3 7 8 +KP_Add 7 7 8 +KP_Subtract 8 7 8 +KP_Enter 6 5 8 +KP_Decimal 9 6 8 +0 8 6 32 +0 1 4 0 +1 6 6 32 +1 0 0 0 +2 7 6 32 +2 8 1 0 +3 6 7 32 +3 0 1 0 +4 4 6 32 +4 1 1 0 +5 5 6 32 +5 0 2 0 +6 4 7 32 +6 2 5 0 +7 2 6 32 +7 0 3 0 +8 3 6 32 +8 5 7 0 +9 2 7 32 +9 0 4 0 +Slash 3 7 32 +Slash 7 4 0 +RightBracket 8 2 0 +LeftBracket 9 1 0 +SemiColon 6 4 32 +SemiColon 5 4 0 +Comma 7 3 32 +Comma 9 3 0 +Period 9 6 32 +Period 8 4 0 +SingleQuote 1 2 32 +SingleQuote 1 0 0 +Pound 1 3 0 +BackSlash 1 3 32 +BackSlash 1 3 0 +Equals 9 7 32 +Equals 7 7 0 +Dash 8 7 32 +Dash 0 5 0 +Space 9 2 8 +BackQuote 8 1 33 +BackQuote 2 5 1 +Left 0 7 1 +Up 1 6 1 +Insert 1 7 1 +Clear 0 6 1 diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/waterloo-a000.901898-01.bin b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/waterloo-a000.901898-01.bin new file mode 100644 index 00000000..cff602f7 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/waterloo-a000.901898-01.bin differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/waterloo-b000.901898-02.bin b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/waterloo-b000.901898-02.bin new file mode 100644 index 00000000..88637815 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/waterloo-b000.901898-02.bin differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/waterloo-c000.901898-03.bin b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/waterloo-c000.901898-03.bin new file mode 100644 index 00000000..a6c6da33 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/waterloo-c000.901898-03.bin differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/waterloo-d000.901898-04.bin b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/waterloo-d000.901898-04.bin new file mode 100644 index 00000000..28d181aa Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/waterloo-d000.901898-04.bin differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/waterloo-e000.901897-01.bin b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/waterloo-e000.901897-01.bin new file mode 100644 index 00000000..cceee091 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/waterloo-e000.901897-01.bin differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/waterloo-f000.901898-05.bin b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/waterloo-f000.901898-05.bin new file mode 100644 index 00000000..e4ac983c Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PET/waterloo-f000.901898-05.bin differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4/3plus1hi b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4/3plus1hi new file mode 100644 index 00000000..b847d7bf Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4/3plus1hi differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4/3plus1lo b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4/3plus1lo new file mode 100644 index 00000000..ff28d134 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4/3plus1lo differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4/PUT_ROMS_HERE b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4/PUT_ROMS_HERE new file mode 100644 index 00000000..2dabf72d --- /dev/null +++ b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4/PUT_ROMS_HERE @@ -0,0 +1 @@ +Place KERNAL, CHARGEN, BASIC and d1541II ROMS in this dir. diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4/basic b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4/basic new file mode 100644 index 00000000..6f882514 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4/basic differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4/bootstat.txt b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4/bootstat.txt new file mode 100644 index 00000000..ad3feb7a --- /dev/null +++ b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4/bootstat.txt @@ -0,0 +1,33 @@ +# This file tells stdio glue code to fast fail, fast stat certain files +# that are accessed at boot time in order to speed up the boot process. +# If this file is missing, the default internal list will be used which +# matches the checked in version. +# +# Note: Any unqualified filename will fake success or fail for the file +# regardless of the directory it resides in. Machine kernal and character +# roms you know are present can have a 'stat' entry here. Any files you want +# to fail regardless of where they reside can have a 'fail' entry. If you +# want to store your drive rom files in DRIVES, you can add fail entries +# for /PLUS4/filename to speed up boot slightly since VICE looks for those +# files first in the machine specific dir. But this is not necessary. +stat,kernal,16384 +stat,kernal.005,16384 +stat,kernal.232,16384 +stat,kernal.364,16384 +stat,basic,16384 +stat,3plus1hi,16384 +stat,3plus1lo,16384 +stat,c2lo.364,16384 +fail,mps803,0 +fail,mps803.vpl,0 +fail,nl10-cbm,0 +fail,1520.vpl,0 +fail,dos1540,0 +fail,dos1570,0 +fail,dos2000,0 +fail,dos4000,0 +fail,dos2031,0 +fail,dos2040,0 +fail,dos3040,0 +fail,dos4040,0 +fail,dos1001,0 diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4/d1541II b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4/d1541II new file mode 100644 index 00000000..58304561 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4/d1541II differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4/dos1551 b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4/dos1551 new file mode 100644 index 00000000..e1ec98d8 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4/dos1551 differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4/kernal b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4/kernal new file mode 100644 index 00000000..4d467608 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4/kernal differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4/kernal.005 b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4/kernal.005 new file mode 100644 index 00000000..53fb2a63 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4/kernal.005 differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4/kernal.232 b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4/kernal.232 new file mode 100644 index 00000000..cd9cd89b Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4/kernal.232 differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4/rpi_maxi_pos.vkm b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4/rpi_maxi_pos.vkm new file mode 100644 index 00000000..1854b246 --- /dev/null +++ b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4/rpi_maxi_pos.vkm @@ -0,0 +1,114 @@ +# BMC64 keyboard mapping file suitable for both +# USB and real C64 keyboards using GPIO +# +# A Keyboard map is read in as patch to the current map. +# +# File format: +# - comment lines start with '#' +# - keyword lines start with '!keyword' +# - normal line has 'keysym/scancode row column shiftflag' +# +# Keywords and their lines are: +# '!CLEAR' clear whole table +# '!INCLUDE filename' read file as mapping file +# '!LSHIFT row col' left shift keyboard row/column +# '!RSHIFT row col' right shift keyboard row/column +# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT) +# '!UNDEF keysym' remove keysym from table +# +# Shiftflag can have the values: +# 0 key is not shifted for this keysym/scancode +# 1 key is shifted for this keysym/scancode +# 2 left shift +# 4 right shift +# 8 key can be shifted or not with this keysym/scancode +# 16 deshift key for this keysym/scancode +# 32 another definition for this keysym/scancode follows +# +# Negative row values: +# 'keysym -1 n' joystick #1, direction n +# 'keysym -2 n' joystick #2, direction n +# 'keysym -3 0' first RESTORE key +# 'keysym -3 1' second RESTORE key +# 'keysym -4 0' 40/80 column key +# 'keysym -4 1' CAPS (ASCII/DIN) key +# + +!CLEAR +!LSHIFT 1 7 +!RSHIFT 1 7 +!VSHIFT RSHIFT + +Control_L 7 2 8 /* CTRL */ +Super_L 7 5 8 /* Commodore Key */ +Alt_L 7 5 8 /* Commodore Key */ +BackSpace 0 0 8 +Down 5 0 8 +Escape 7 7 0 /* Run Stop */ +F1 0 4 8 +F3 0 5 8 +F5 0 6 8 +F7 0 3 8 +Home 7 1 8 /* Clr */ +Left 6 0 8 +Return 0 1 8 +Right 6 3 8 +Shift_L 1 7 2 +Shift_R 1 7 4 +Up 5 3 8 +BackSlash 0 7 8 /* at */ +LeftBracket 5 5 8 /* colon */ +Comma 5 7 8 /* comma */ +Pound 6 5 8 /* equal */ +Equals 6 5 8 /* equal */ +LP_Subtract 5 6 8 /* minus */ +Period 5 4 8 /* period */ +KP_Add 6 6 8 /* plus */ +RightBracket 6 2 8 /* semicolon */ +Slash 6 7 8 /* slash */ +Space 7 4 8 /* space */ +Dash 0 2 8 /* sterling */ +Insert 0 2 8 /* sterling */ +SemiColon 6 1 8 /* asterisk */ +BackQuote 6 4 8 /* escape */ +Del 6 6 8 /* plus */ +0 4 3 8 +1 7 0 8 +2 7 3 8 +3 1 0 8 +4 1 3 8 +5 2 0 8 +6 2 3 8 +7 3 0 8 +8 3 3 8 +9 4 0 8 +a 1 2 8 +b 3 4 8 +c 2 4 8 +d 2 2 8 +e 1 6 8 +f 2 5 8 +g 3 2 8 +h 3 5 8 +i 4 1 8 +j 4 2 8 +k 4 5 8 +l 5 2 8 +m 4 4 8 +n 4 7 8 +o 4 6 8 +p 5 1 8 +q 7 6 8 +r 2 1 8 +s 1 5 8 +t 2 6 8 +u 3 6 8 +v 3 7 8 +w 1 1 8 +x 2 7 8 +y 3 1 8 +z 1 4 8 + +# Restore key mappings +Tab -3 0 +CapsLock -4 1 diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4/rpi_pos.vkm b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4/rpi_pos.vkm new file mode 100644 index 00000000..783f3c47 --- /dev/null +++ b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4/rpi_pos.vkm @@ -0,0 +1,239 @@ +# Bare Metal Commodore keyboard mapping file suitable for real C64 keyboards using Keymmodore-64 interfase by K-rnivoro. https://github.com/K-rnivoro/Keymmodore-64 +# Tested with BMC v3.9 (https://accentual.com/bmc64/) +# Mapped for positional compatibility with 264 Computers Series: Plus/4, Commodore-16 and Commodore-116 Keyboards. +# Based on C64 Positional Layout, however some keys change position in order to be easier to use and remember. +# The relevant changes are: +# ESCAPE is mapped to Left-Arrow Key. +# Cursor-Up is mapped to C64 Up-Arrow Key (C16/Plus-4 Up-Arrow is actually Shift+0). +# Cursor-Left is mapped to C64 RESTORE Key (C16/Plus-4 CLEAR/HOME Key moves to C64 CLEAR/HOME key). +# Cursor-Down is mapped to C64 Up/Down Cursor Key (It works only Down regardless Shift pressed or not, like the real C16/Plus-4 Key). +# Cursor-Right is mapped to C64 Left/Right Cursor Key (It works only Right regardless Shift pressed or not, like the real C16/Plus-4 Key). +# +# File format: +# - comment lines start with '#' +# - keyword lines start with '!keyword' +# - normal line has 'keysym/scancode row column shiftflag' +# +# Keywords and their lines are: +# '!CLEAR' clear whole table +# '!INCLUDE filename' read file as mapping file +# '!LSHIFT row col' left shift keyboard row/column +# '!RSHIFT row col' right shift keyboard row/column +# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT) +# '!UNDEF keysym' remove keysym from table +# +# Shiftflag can have the values: +# 0 key is not shifted for this keysym/scancode +# 1 key is shifted for this keysym/scancode +# 2 left shift +# 4 right shift +# 8 key can be shifted or not with this keysym/scancode +# 16 deshift key for this keysym/scancode +# 32 another definition for this keysym/scancode follows +# +# Negative row values: +# 'keysym -1 n' joystick #1, direction n +# 'keysym -2 n' joystick #2, direction n +# 'keysym -3 0' first RESTORE key +# 'keysym -3 1' second RESTORE key +# 'keysym -4 0' 40/80 column key +# 'keysym -4 1' CAPS (ASCII/DIN) key +# +# Joystick direction values: +# 0 Fire +# 1 South/West +# 2 South +# 3 South/East +# 4 West +# 5 East +# 6 North/West +# 7 North +# 8 North/East +# +# Joyport keypad key layout: +# -------------------------- +# | 0 | 1 | 2 | 3 | 4 | +# -------------------------- +# | 5 | 6 | 7 | 8 | 9 | +# -------------------------- +# | 10 | 11 | 12 | 13 | 14 | +# -------------------------- +# | 15 | 16 | 17 | 18 | 19 | +# -------------------------- +# +# When a bigger spaced key is used, +# it uses the upper left most key value. +# +############################################################################# +# +# Commodore 16/116/Plus-4 keyboard matrix: +# +# 0 1 2 3 4 5 6 7 +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 0 |INST-DEL|RETURN |POUND |HELP-F7 |F1-F4 |F2-F5 |F3-F6 |@ | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 1 |3 # |W |A |4 $ |Z |S |E |SHIFT | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 2 |5 % |R |D |6 & |C |F |T |X | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 3 |7 ' |Y |G |8 ( |B |H |U |V | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 4 |9 ) |I |J |0 ^ |M |K |O |N | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 5 |DOWN |P |L |UP |. > |: [ |- |, < | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 6 |LEFT |* |; ] |RIGHT |ESC |= |+ |/ ? | +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# 7 |1 ! |CLR-HOME|CTRL |2 " |SPACE |C= |Q |RUN-STOP| +# +--------+--------+--------+--------+--------+--------+--------+--------+ +# +############################################################################# + + +!CLEAR +!LSHIFT 1 7 +!RSHIFT 1 7 +!VSHIFT RSHIFT + + +# Home = HOME +Home 7 1 8 + +# Enter = RETURN +Return 0 1 8 + +# Shifts = Shifts +Shift_L 1 7 2 +Shift_R 1 7 4 + +# Space bar = Space +Space 7 4 8 + + +# Tab = CTRL +Tab 7 2 8 + +# Control_L = CBM +Control_L 7 5 8 + +#Backspace = INST/DEL +BackSpace 0 0 8 + +# Delete = Cursor Up = C64 Arrow Up Key +Del 5 3 8 + +# Down = Cursor Down +Down 5 0 8 + +# Page Up = Cursor Left = C64 RESTORE Key +PageUp 6 0 8 + +# Right = Cursor Right +Right 6 3 8 + +# ESCAPE = RUN/STOP +Escape 7 7 8 + +# Grave = ESCAPE = C64 Arrow_Left Key +BackQuote 6 4 8 + +# Insert = Pound +Insert 0 2 8 + +# Minus = Plus +Dash 6 6 8 + +# Equal = Minus +Equals 5 6 8 + +# Bracket Left = At +LeftBracket 0 7 8 + +#Bracket Right = Asterisk +RightBracket 6 1 8 + +# Slash = Slash +Slash 6 7 8 + +# Backslash = Equal +BackSlash 6 5 8 + +# Single Quote = Semicolon +SingleQuote 6 2 8 + +# SemiColon = Colon +SemiColon 5 5 8 + +# Comma = Comma +Comma 5 7 8 + +# Period = Period +Period 5 4 8 + +### F Keys +F1 0 4 8 +F3 0 5 8 +F5 0 6 8 +F7 0 3 8 + + +### Numbers +0 4 3 8 +1 7 0 8 +2 7 3 8 +3 1 0 8 +4 1 3 8 +5 2 0 8 +6 2 3 8 +7 3 0 8 +8 3 3 8 +9 4 0 8 + + + +### Letters +a 1 2 8 +b 3 4 8 +c 2 4 8 +d 2 2 8 +e 1 6 8 +f 2 5 8 +g 3 2 8 +h 3 5 8 +i 4 1 8 +j 4 2 8 +k 4 5 8 +l 5 2 8 +m 4 4 8 +n 4 7 8 +o 4 6 8 +p 5 1 8 +q 7 6 8 +r 2 1 8 +s 1 5 8 +t 2 6 8 +u 3 6 8 +v 3 7 8 +w 1 1 8 +x 2 7 8 +y 3 1 8 +z 1 4 8 + + +# joystick keymap A (port 1) +KP_8 -1 7 /* NumPad 8 -> UP */ +KP_2 -1 2 /* NumPad 2 -> DOWN */ +KP_4 -1 4 /* NumPad 4 -> LEFT */ +KP_6 -1 5 /* NumPad 6 -> RIGHT */ +KP_0 -1 0 /* NumPad 0 -> FIRE */ + +# joystick Keymap B (port 2) +KP_7 -2 7 /* NumPad 7 -> UP */ +KP_3 -2 2 /* NumPad 3 -> DOWN */ +KP_1 -2 4 /* NumPad 1 -> LEFT */ +KP_9 -2 5 /* NumPad 9 -> RIGHT */ +KP_Decimal -2 0 /* NumPad . -> FIRE */ + + + + diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4/rpi_sym.vkm b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4/rpi_sym.vkm new file mode 100644 index 00000000..8cbbb74a --- /dev/null +++ b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4/rpi_sym.vkm @@ -0,0 +1,122 @@ +# VICE keyboard mapping file +# +# A Keyboard map is read in as patch to the current map. +# +# File format: +# - comment lines start with '#' +# - keyword lines start with '!keyword' +# - normal line has 'keysym/scancode row column shiftflag' +# +# Keywords and their lines are: +# '!CLEAR' clear whole table +# '!INCLUDE filename' read file as mapping file +# '!LSHIFT row col' left shift keyboard row/column +# '!RSHIFT row col' right shift keyboard row/column +# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT) +# '!SHIFTL shiftkey' shift lock key (RSHIFT or LSHIFT) +# '!UNDEF keysym' remove keysym from table +# +# Shiftflag can have the values: +# 0 key is not shifted for this keysym/scancode +# 1 key is shifted for this keysym/scancode +# 2 left shift +# 4 right shift +# 8 key can be shifted or not with this keysym/scancode +# 16 deshift key for this keysym/scancode +# 32 another definition for this keysym/scancode follows +# 64 shift lock +# 256 key is used for an alternative keyboard mapping +# +# When a bigger spaced key is used, +# it uses the upper left most key value. + +!CLEAR +!LSHIFT 1 7 +!RSHIFT 1 7 +!VSHIFT RSHIFT + +Escape 7 7 8 /* ESC -> Run/Stop */ +1 7 0 8 /* 1 -> 1 */ +2 7 3 32 /* 2 -> 2 */ +2 0 7 16 /* @ -> @ */ +3 1 0 8 /* 3 -> 3 */ +4 1 3 8 /* 4 -> 4 */ +5 2 0 8 /* 5 -> 5 */ +6 2 3 32 /* 6 -> 6 */ +6 4 3 1 /* ^ -> ^ */ +7 3 0 32 /* 7 -> 7 */ +7 2 3 1 /* & -> & */ +8 3 3 32 /* 8 -> 8 */ +8 6 1 16 /* * -> * */ +9 4 0 32 /* 9 -> 9 */ +9 3 3 1 /* ( -> ( */ +0 4 3 32 /* 0 -> 0 */ +0 4 0 1 /* ) -> ) */ +Dash 5 6 8 /* Minus -> Minus */ +Equals 6 5 32 /* = -> = */ +Equals 6 6 16 /* + -> + */ +Pound 6 5 32 /* = -> = */ +Pound 6 6 16 /* + -> + */ +BackSpace 0 0 8 /* Backspace -> DEL */ +Control_L 7 5 8 /* Cntrl -> CBM */ +q 7 6 8 /* Q -> Q */ +w 1 1 8 /* W -> W */ +e 1 6 8 /* E -> E */ +r 2 1 8 /* R -> R */ +t 2 6 8 /* T -> T */ +y 3 1 8 /* Y -> Y */ +u 3 6 8 /* U -> U */ +i 4 1 8 /* I -> I */ +o 4 6 8 /* O -> O */ +p 5 1 8 /* P -> P */ +LeftBracket 5 5 1 /* [ -> [ */ +RightBracket 6 2 1 /* ] -> ] */ +Return 0 1 8 /* Return -> Return */ +Tab 7 2 8 /* Tab -> Ctrl */ +a 1 2 8 /* A -> A */ +s 1 5 8 /* S -> S */ +d 2 2 8 /* D -> D */ +f 2 5 8 /* F -> F */ +g 3 2 8 /* G -> G */ +h 3 5 8 /* H -> H */ +j 4 2 8 /* J -> J */ +k 4 5 8 /* K -> K */ +l 5 2 8 /* L -> L */ +SemiColon 6 2 32 /* ; -> ; */ +SemiColon 5 5 16 /* : -> : */ +SingleQuote 3 0 33 /* ' -> ' */ +SingleQuote 7 3 1 /* " -> " */ +BackQuote 6 4 8 /* ` -> Escape */ +BackSlash 0 2 8 /* \ -> Lira */ +Shift_L 1 7 2 /* Left Shift -> Left Shift */ +CapsLock 1 7 64 /* Caps Lock -> Shift Lock */ +z 1 4 8 /* Z -> Z */ +x 2 7 8 /* X -> X */ +c 2 4 8 /* C -> C */ +v 3 7 8 /* V -> V */ +b 3 4 8 /* B -> B */ +n 4 7 8 /* N -> N */ +m 4 4 8 /* M -> M */ +Comma 5 7 8 /* , -> , */ +Period 5 4 8 /* . -> . */ +Slash 6 7 8 /* / -> / */ +Shift_R 1 7 4 /* Right Shift -> Right Shift */ +Space 7 4 8 /* Space -> Space */ +F1 0 4 8 /* F1 -> F1 */ +F2 0 4 1 /* F2 -> F2 */ +F3 0 5 8 /* F3 -> F3 */ +F4 0 5 1 /* F4 -> F4 */ +F5 0 6 8 /* F5 -> F5 */ +F6 0 6 1 /* F6 -> F6 */ +F7 0 3 8 /* F7 -> F7 */ +F8 0 3 1 /* F8 -> F8 */ +Home 7 1 8 /* Home -> CLR/HOME */ +Up 5 3 8 /* Up -> CRSR UP */ +Down 5 0 8 /* Down -> CRSR DOWN */ +Insert 0 0 1 /* Insert -> INS */ +Del 0 0 8 /* Delete -> DEL */ +Left 6 0 8 /* Left -> Left */ +Right 6 3 8 /* Right -> Right */ + +# Restore key mappings +PageUp -3 0 diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4EMU/3plus1.rom b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4EMU/3plus1.rom new file mode 100644 index 00000000..c238007b Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4EMU/3plus1.rom differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4EMU/PUT_ROMS_HERE b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4EMU/PUT_ROMS_HERE new file mode 100644 index 00000000..2dabf72d --- /dev/null +++ b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4EMU/PUT_ROMS_HERE @@ -0,0 +1 @@ +Place KERNAL, CHARGEN, BASIC and d1541II ROMS in this dir. diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4EMU/README.md b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4EMU/README.md new file mode 100644 index 00000000..617f097f --- /dev/null +++ b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4EMU/README.md @@ -0,0 +1,6 @@ +If you are trying to use a real C16 +keyboard with BMCPlus4Emu and a +keyrah V2, you should rename +rpi_c16_keyrah_pos.vkm to rpi_pos.vkm +to get a mapping that will work. + diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4EMU/dos1541.rom b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4EMU/dos1541.rom new file mode 100644 index 00000000..c3c6a31e Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4EMU/dos1541.rom differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4EMU/dos1551.rom b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4EMU/dos1551.rom new file mode 100644 index 00000000..e1ec98d8 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4EMU/dos1551.rom differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4EMU/dos1581 b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4EMU/dos1581 new file mode 100644 index 00000000..163459f7 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4EMU/dos1581 differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4EMU/p4_basic.rom b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4EMU/p4_basic.rom new file mode 100644 index 00000000..6f882514 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4EMU/p4_basic.rom differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4EMU/p4_ntsc.rom b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4EMU/p4_ntsc.rom new file mode 100644 index 00000000..53fb2a63 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4EMU/p4_ntsc.rom differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4EMU/p4fileio.rom b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4EMU/p4fileio.rom new file mode 100644 index 00000000..ad6d134f Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4EMU/p4fileio.rom differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4EMU/p4kernal.rom b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4EMU/p4kernal.rom new file mode 100644 index 00000000..4d467608 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4EMU/p4kernal.rom differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4EMU/rpi_c16_keyrah_pos.vkm b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4EMU/rpi_c16_keyrah_pos.vkm new file mode 100644 index 00000000..2f9c97d8 --- /dev/null +++ b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4EMU/rpi_c16_keyrah_pos.vkm @@ -0,0 +1,91 @@ +# BMC64 keyboard mapping file suitable for +# a real C16 keyboard and a keyrah v2. +# Submitted by: J. Gardiner +# Keyrah switch must be in VICE position. +# This file should be renamed to +# rpi_pos.vkm +# +# This is not a VICE keymap file. +# +# 0: Del 1: Return 2: £ 3: Help +# 4: F1 5: F2 6: F3 7: @ +# 8: 3 9: W 10: A 11: 4 +# 12: Z 13: S 14: E 15: Shift +# 16: 5 17: R 18: D 19: 6 +# 20: C 21: F 22: T 23: X +# 24: 7 25: Y 26: G 27: 8 +# 28: B 29: H 30: U 31: V +# 32: 9 33: I 34: J 35: 0 +# 36: M 37: K 38: O 39: N +# 40: Down 41: P 42: L 43: Up +# 44: . 45: : 46: - 47: , +# 48: Left 49: * 50: ; 51: Right +# 52: Esc 53: = 54: + 55: / +# 56: 1 57: Home 58: Ctrl 59: 2 +# 60: Space 61: C= 62: Q 63: Stop +# +BackSpace 0 +Return 1 +Del 2 +F4 3 +F1 4 +F2 5 +F3 6 +Dash 7 +3 8 +w 9 +a 10 +4 11 +z 12 +s 13 +e 14 +Shift_L 15 +Shift_R 15 +5 16 +r 17 +d 18 +6 19 +c 20 +f 21 +t 22 +x 23 +7 24 +y 25 +g 26 +8 27 +b 28 +h 29 +u 30 +v 31 +9 32 +i 33 +j 34 +0 35 +m 36 +k 37 +o 38 +n 39 +Down 40 +p 41 +l 42 +Up 43 +Period 44 +SemiColon 45 +RightBracket 46 +Comma 47 +Left 48 +KP_Multiply 49 +SingleQuote 50 +Right 51 +BackQuote 52 +Equals 53 +LeftBracket 54 +Slash 55 +1 56 +Home 57 +Control_R 58 +2 59 +Space 60 +Control_L 61 +q 62 +Tab 63 diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4EMU/rpi_maxi_pos.vkm b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4EMU/rpi_maxi_pos.vkm new file mode 100644 index 00000000..a87474e2 --- /dev/null +++ b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4EMU/rpi_maxi_pos.vkm @@ -0,0 +1,88 @@ +# BMC64 keyboard mapping file suitable for both +# USB and real C64 keyboards using GPIO +# +# This is not a VICE keymap file. +# +# 0: Del 1: Return 2: £ 3: Help +# 4: F1 5: F2 6: F3 7: @ +# 8: 3 9: W 10: A 11: 4 +# 12: Z 13: S 14: E 15: Shift +# 16: 5 17: R 18: D 19: 6 +# 20: C 21: F 22: T 23: X +# 24: 7 25: Y 26: G 27: 8 +# 28: B 29: H 30: U 31: V +# 32: 9 33: I 34: J 35: 0 +# 36: M 37: K 38: O 39: N +# 40: Down 41: P 42: L 43: Up +# 44: . 45: : 46: - 47: , +# 48: Left 49: * 50: ; 51: Right +# 52: Esc 53: = 54: + 55: / +# 56: 1 57: Home 58: Ctrl 59: 2 +# 60: Space 61: C= 62: Q 63: Stop +# +BackSpace 0 +Return 1 +Down 2 +F7 3 +F1 4 +F3 5 +F5 6 +BackSlash 7 +3 8 +w 9 +a 10 +4 11 +z 12 +s 13 +e 14 +Shift_L 15 +Shift_R 15 +5 16 +r 17 +d 18 +6 19 +c 20 +f 21 +t 22 +x 23 +7 24 +y 25 +g 26 +8 27 +b 28 +h 29 +u 30 +v 31 +9 32 +i 33 +j 34 +0 35 +m 36 +k 37 +o 38 +n 39 +Home 40 // C64 Home = Plus4 Down +p 41 +l 42 +Insert 43 // C64 Sterling = Plus4 Up +Dash 43 // C64 Sterline = Plus4 Up +Period 44 +LeftBracket 45 +SingleQuote 46 // C64 Up arrow = Plus4 Dash +Comma 47 +KP_Add 48 // C64 Plus = Plus4 Left +Equals 49 // C64 Equals = Plus4 Asterisk +RightBracket 50 +KP_Subtract 51 // C64 Dash = Plus4 Right +BackQuote 52 // C64 Left Arrow = Plus4 Escape +Right 53 // C64 Right = PLus4 Equals +SemiColon 54 // C64 Asterisk = Plus4 Plus +Slash 55 +1 56 +Tab 57 // C64 Restore = Plus4 Clr/Home +Control_L 58 +2 59 +Space 60 +Super_L 61 +q 62 +Escape 63 diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4EMU/rpi_pos.vkm b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4EMU/rpi_pos.vkm new file mode 100644 index 00000000..9d69e928 --- /dev/null +++ b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PLUS4EMU/rpi_pos.vkm @@ -0,0 +1,97 @@ +# Bare Metal Commodore keyboard mapping file suitable for real C64 keyboards using Keymmodore-64 interfase by K-rnivoro. https://github.com/K-rnivoro/Keymmodore-64 +# Tested with BMC v3.9 (https://accentual.com/bmc64/) +# Mapped for positional compatibility with 264 Computers Series: Plus/4, Commodore-16 and Commodore-116 Keyboards. +# Based on C64 Positional Layout, however some keys change position in order to be easier to use and remember. +# The relevant changes are: +# ESCAPE is mapped to Left-Arrow Key. +# Cursor-Up is mapped to C64 Up-Arrow Key (C16/Plus-4 Up-Arrow is actually Shift+0). +# Cursor-Left is mapped to C64 RESTORE Key (C16/Plus-4 CLEAR/HOME Key moves to C64 CLEAR/HOME key). +# Cursor-Down is mapped to C64 Up/Down Cursor Key (It works only Down regardless Shift pressed or not, like the real C16/Plus-4 Key). +# Cursor-Right is mapped to C64 Left/Right Cursor Key (It works only Right regardless Shift pressed or not, like the real C16/Plus-4 Key). +# +# This is not a VICE keymap file. +# +# 0: Del 1: Return 2: £ 3: Help +# 4: F1 5: F2 6: F3 7: @ +# 8: 3 9: W 10: A 11: 4 +# 12: Z 13: S 14: E 15: Shift +# 16: 5 17: R 18: D 19: 6 +# 20: C 21: F 22: T 23: X +# 24: 7 25: Y 26: G 27: 8 +# 28: B 29: H 30: U 31: V +# 32: 9 33: I 34: J 35: 0 +# 36: M 37: K 38: O 39: N +# 40: Down 41: P 42: L 43: Up +# 44: . 45: : 46: - 47: , +# 48: Left 49: * 50: ; 51: Right +# 52: Esc 53: = 54: + 55: / +# 56: 1 57: Home 58: Ctrl 59: 2 +# 60: Space 61: C= 62: Q 63: Stop +# +BackSpace 0 +Return 1 +Insert 2 +F7 3 +F1 4 +F3 5 +F5 6 +LeftBracket 7 +3 8 +w 9 +a 10 +4 11 +z 12 +s 13 +e 14 +Shift_L 15 +Shift_R 15 +5 16 +r 17 +d 18 +6 19 +c 20 +f 21 +t 22 +x 23 +7 24 +y 25 +g 26 +8 27 +b 28 +h 29 +u 30 +v 31 +9 32 +i 33 +j 34 +0 35 +m 36 +k 37 +o 38 +n 39 +Down 40 +p 41 +l 42 +# Changed Up to Arrow Up Key (Delete) +Del 43 +Period 44 +SemiColon 45 +Equals 46 +Comma 47 +# Changed Left to RESTORE Key (Page_Up) +PageUp 48 +RightBracket 49 +SingleQuote 50 +Right 51 +BackQuote 52 +BackSlash 53 +Dash 54 +Slash 55 +1 56 +Home 57 +Tab 58 +2 59 +Space 60 +Control_L 61 +q 62 +Escape 63 diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PatchReadme.txt b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PatchReadme.txt new file mode 100644 index 00000000..4b4764f7 --- /dev/null +++ b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/PatchReadme.txt @@ -0,0 +1,17 @@ +Stable 4.2-p1 + +Extra fixes + - mouse fix + - TDE per drive + - CMD HD no op when detached + - compilation fix for Pi0 + - teensy-resid initialisation crash fix for Pi0 + +See: https://github.com/aminch/bmc64/tree/combo-fixes-1 + +Create BMC64 4.2 microSD card +Unzip the contents of this archive and replace existing files + + + + diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/README.md b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/README.md new file mode 100644 index 00000000..d9b2c696 --- /dev/null +++ b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/README.md @@ -0,0 +1,838 @@ +# BMC64 + +BMC64 is a bare metal C64 emulator for the Raspberry Pi with true 50hz/60hz smooth scrolling and low latency between input & video/audio. Four other Commodore machines are available as well; C128, Vic20, Plus/4 and PET. + +# BMC64 Features + * Quick boot time (C64 in 4.1 seconds over composite!) + * Frames are timed to vsync for true 50/60 hz smooth scrolling (no horizontal tearing!) + * Low latency between input & audio/video + * No shutdown sequence required, just power off + * High C64 compatibility thanks to VICE + * High Plus/4 compatibility thanks to Plus4Emu (Rpi3 Only) + * Easily wire real Commodore/Atari Joysticks and nav buttons via GPIO using jumpers (GPIO Config 1) + * Can use a real Commodore Keyboard and Joysticks via PCB (GPIO Config 2) + * Can use a Waveshare Game HAT (Pi2 or 3 Only) (GPIO Config 3) + * Also works with the Keyrah and TheC64 'Maxi' case + +# Limitations + * USB gamepad support is limited. Not all gamepads will work (especially wireless). + * There is no network support. + +This project uses VICE for emulation without any O/S (Linux) distribution installed on the Pi. VICE (Versatile Commodore Emulator) platform dependencies are satisfied using circle-stdlib. + +For Plus/4 emulation on the Rasbperry Pi 3, a more accurate emulator using Plus4Emu is also available. + +# Known Issues + + * There is no hot plug in/out support for USB devices. All devices must be plugged in before the device is booted and never removed. Attempting to remove them will halt the emulator or make it slow down considerably. + + * Some USB gamepads will require manual tweaking of settings from the defaults. + +# Precompiled Images + + NOTE: Since V3.0, all machines are now bundled into one release for all Pi models. You can switch from the 'Machine' menu. + + * https://accentual.com/bmc64 + +# Github Link + + * https://github.com/randyrossi/bmc64 + +# Machine Selection + +The default machine is a C64. You can switch to VIC20, C128, Plus/4 or PET from the 'Machines->Switch' menu option. These configurations are defined in machines.txt. There you will find configurations for each machine type for NTSC/PAL over HDMI/Composite combinations. Most video modes are 720p but you can change this (see below). + +# machines.txt (Video & Timing) + +The emulated machine is timed by the video mode you select. The default config provided uses 720p PAL 50hz on HDMI. This is a 'safe' mode that should work on all monitors. A 50.125hz custom mode is provided for the C64/Vic20/C128 machines that will match the timing of the real machine. However, this mode may not work on all monitors. + +Inside machines.txt, you can change or add new machine configurations. These will show up in the Machines->Switch menu. + +Here is an example of a machine entry: + + [C64/PAL/HDMI/VICE 720p@50Hz] + disable_overscan=1 + sdtv_mode=18 + hdmi_group=1 + hdmi_mode=19 + machine_timing=pal-hdmi + scaling_params=384,240,1152,720 + +NOTE: Even though a config is intended to be used for HDMI or Composite (never both), you should always define both composite and hdmi parameters. + +Valid machine names are C64, C128, VIC20, PET, PLUS4 and PLUS4EMU (Rpi3 only) +Valid video standards are NTSC, PAL +Valid video output types are HDMI, Composite, DPI + +For HDMI, you should choose either a 50hz or 60hz mode. +See below for notes on using DPI. + +If you want to use composite out, you MUST set machine_timing parameter to ntsc-composite or pal-composite and set the corresponding sdtv_mode. Otherwise, you will have audio synchronization issues. + +Raspberry Pi Video Mode | machine_timing | cycles_per_second +----------------------------|----------------|------------------- +hdmi_group=1,hdmi_mode=19 | pal-hdmi | not required +hdmi_group=1,hdmi_mode=4 | ntsc-hdmi | not required +sdtv_mode=18 | pal-composite | not required +sdtv_mode=16 | ntsc-composite | not required +hdmi_group=2,hdmi_mode=87 | pal-custom or ntsc-custom | see below + +## How to add your own custom HDMI mode (VICE emulators only) + +You are free to experiment with different modes. It may be advantageous to set the video mode to match the native resolution of your monitor. That way, it may have less processing to do and _may_ save on latency (not confirmed). That can be accomplished with either a different hdmi_mode or a custom mode. + +If you plan to use a custom HDMI mode, you will have to alter the machine's 'cycles_per_second' value to match the actual fps that mode outputs. Custom HDMI modes may not be exactly 50 hz or 60 hz and that can cause audio sync issues if you use the default value. A tool to calculate this number is provided under the 'Video' menu. The test will take 10 minutes and will let you know what values you should add to cmdline.txt for machine_timing and cycles_per_second. You only need to run the test once for that mode. + +Example: Making a custom 1360x768 50Hz HDMI Mode + +First change config.txt to the custom mode you want + + disable_overscan=1 + sdtv_mode=18 + hdmi_group=2 + hdmi_mode=87 + hdmi_cvt=1360 768 50 3 0 0 0 + +In config.txt you would temporarily have: + + fast=true machine_timing=pal-hdmi (remove any cycles_per_second settings) + +Boot, then run the test tool. The tool will tell you the actual frame rate for this mode is 49.89 and show you the machine_timing and cycles_per_second parameters to use: + + machine_timing=pal-custom cycles_per_second=980670 + +You would then define your machines.txt entry like this: + + [C64/PAL/HDMI/1360x768@49.89Hz] + disable_overscan=1 + hdmi_cvt=1360 768 50 3 0 0 0 + sdtv_mode=18 + hdmi_group=2 + hdmi_mode=87 + machine_timing=pal-custom + cycles_per_second=980670 + + (see below for chosing scaling_params) + +And this option will show up in the Machine->Switch menu. + +Custom HDMI modes are not supported for plus4emu yet. + +## DPI (Parallel Display Interface) + +BMC64 v3.3 and higher supports video output via DPI. DPI is a (up to) 24-bit parallel RGB interface. A DPI capable display device or RGB adapter board is required. You will have to match the output format to your device. See https://www.raspberrypi.org/documentation/hardware/raspberrypi/dpi/README.md for more details. + +DPI disables HDMI and Composite video and is different for every device. For this reason, these configurations are not provided by default and must be added manually to machines.txt. I suggest once you have a working configuration, you add the machines.txt entries for all the machines you want to use DPI with. + +Here are a couple examples you can add to machines.txt that will work with the VGA666 adapter board: + + [C64/NTSC/DPI/VGA666:720p@60hz] + enable_dpi=true + machine_timing=ntsc-custom + cycles_per_second=1025643 + enable_dpi_lcd=1 + display_default_lcd=1 + dpi_group=1 + dpi_mode=4 + scaling_params=384,240,1152,720 + + [C64/PAL/DPI/VGA666:720p@50hz] + enable_dpi=true + machine_timing=pal-custom + cycles_per_second=982734 + enable_dpi_lcd=1 + display_default_lcd=1 + dpi_group=1 + dpi_mode=19 + scaling_params=384,240,1152,720 + +* It appears these modes are not exactly 50hz/60hz like HDMI. It's likely the case that all DPI modes will require custom timing. See steps mentioned above for how to find the correct cycles_per_second value for your DPI mode. + +** DPI uses almost all the GPIO pins. GPIO configs for things like joysticks/keyboards/buttons are disabled when enable_dpi is present in cmdline.txt + +*** Special thanks goes out to github user K-rnivoro (https://github.com/K-rnivoro) for suggesting this feature. + +# Recovering from a Blank Screen + +If you are experimenting with a video mode and are not getting a picture, you can press Cntrl followed by F7 and hold both for 5 seconds after a boot, then release the F7 key. This will reset the emulator and switch back to C64 with a 'safe' HDMI 720p video mode. (This will also work over composite but you should follow up with a switch to one of the composite modes for correct audio sync.) + +# Video + Timing (VIC20, C128, Plus/4, PET) + +All of the above re: timing applies to the other machines as well. However, in my opinion, the VIC20 machine is better configured to be an NTSC machine. Most cartridges were made for NTSC and you will notice they position their screens poorly when inserted into a PAL machine. Most games gave the option of moving it using cursor keys or joystick but this is annoying. + +# Dimensions and Scaling + +The virtual display dimensions can be adjusted dynamically from the menu. Under 'Video', you will find Horizontal Border (px), Vertical Border (px), and H/V Stretch controls for each virtual display available. Displays are scaled as follows: + + 1. The main graphics area is trimmed or padded by border level adjustments. + 2. The resulting image is scaled according to stretch factors (1.0 is full vertical height, horizontal is a scalar of the display height) + 3. The scaled image is then centered within the display resolution. + +Using the settings, you should be able to customize the display to your liking. However, if you plan on using scaling_kernel=8 (nearest neighbor) there are benefits to chosing dimensions that result in integer multipliers of the frame buffer (see below). + +## Integer Scaling + +If you want to get better picture quality on your CRT monitor or if you prefer the 'pixel perfect' look on HDMI, integer scaling is what you want. Integer scaling along with scaling_kernel=8 will eliminate scaling artifacts (i.e. variation in thickness of scaled up pixels). However, you may have to sacrifice some border area and/or not get the exact aspect ratio you want. + +When you change the border values, you will see three dimensions displayed; the display dimensions, the frame buffer dimensions (FB) and the scaled frame buffer (SFB) dimensions. When the scaled frame buffer dimensions are an integer multiple of the frame buffer dimensions, they will turn green. + +To make this easier, there are video options named 'Next H Integer Scale' and 'Next V Integer Scale'. They will bump up the horizontal and vertical stretch to the next nearest integer multiple of the frame buffer's dimensions. Keep pressing return to cycle through all integer multipls that will fit. If the next integer multiple doesn't fill the screen, you will have to adjust the border amount so that it does and try again (not always possible). + +Once you have values that work for you, edit the machines.txt file and add or change the scaling_params for the mode you are running: + + scaling_params=fb_width,fb_height,sfb_width,sfb_height + + (For C128 and PET use scaling_params2 for the 80 column displays.) + +When sfb_width = fb_width * N, where N is some integer, the width will be integer scaled. + +When sfb_height = fb_height * N, where N is some integer, height will be integer scaled. + +Using scaling_kernel=8 without integer scaling can cause irregular looking characters. Notice the two O's and S's look odd. + +![alt text](https://raw.githubusercontent.com/randyrossi/bmc64/master/images/not_integer_scaled.png) + +Using scaling_kernel=8 with integer scaling eliminates irregularities. + +![alt text](https://raw.githubusercontent.com/randyrossi/bmc64/master/images/integer_scaled.png) + +## Perfect DPI -> (Real) CRT Scanlines + +For those using DPI connected to CRTs (via VGA666 for example), you can try a custom resolution like this: + + dpi_timings=1920 1 56 176 208 282 1 5 2 23 0 0 0 50 0 36908040 1 + +This gives a 1920 x 282 display res. Then set FB to 384x282. Then set SFB to 1920x282. That gives a 5x horizontal scale and 1x vertical. So the CRT will trace each line of the frame buffer on one scanline. Once your resolution looks good, follow the custom timing tool instructions to get your cycles_per_second correct. The above mode was tested on a Sony Trinitron CRT. Here is the machines.txt entry: + + [C64/PAL/DPI/VGA666:1920x282@50.125hz] + enable_dpi=true + machine_timing=pal-custom + cycles_per_second=985257 + enable_dpi_lcd=1 + display_default_lcd=1 + dpi_group=2 + dpi_mode=87 + dpi_timings=1920 1 56 176 208 282 1 5 2 23 0 0 0 50 0 36908040 1 + scaling_params=384,282,1920,282 + +NOTE: This mode has a 15khz horizontal refresh rate which many monitors don't support. You may have to experiment with other resolutions (not necessarily 282 lines) to get something working. + +Many thanks goes out to Alessio Scanderebech and Andrea Mazzoleni for their assistance with getting this working. + +# VGA Display without 15khz hsync support + +If you have a VGA monitor that doesn't support 15khz hsync, you can try using a 1920x1080 resolution and add raster_skip=true to the machine config. The 'raster_skip' option doubles the vertical height of the frame buffer and draws the emulated display into every other line. When this is integer scaled up to 1080, you can achieve more or less the same effect you would get with a monitor that could do 15khz. That is, there will be gaps between each 'scanline' as though there were only ~270 lines. This looks pretty decent on a Trinitron tube because there are no horizontal gaps in the phosphor bars and the 2 real scanlines that resulted from doubling the one line from the frame buffer looks like one solid scanline (...at least that's what I think is happening) + + [C64/PAL/DPI/VGA666:1920x1080@50hz] + enable_dpi=true + machine_timing=pal-custom + cycles_per_second=985257 + enable_dpi_lcd=1 + display_default_lcd=1 + dpi_group=1 + dpi_mode=31 + raster_skip=true + scaling_params=1920,540,1920,1080 + +# Video Scaling Algorithm + +The emulated resolutions are small and must be scaled up to the video mode's resolution. You can tell the Pi to change the way it scales the video using the 'scaling_kernel' option in config.txt: + + * (Soft Look) This is what the default scaling_kernel option (absent from config.txt) will look like: + +![alt text](https://raw.githubusercontent.com/randyrossi/bmc64/master/images/scaling_kernel_default.jpg) + + * (Pixel Perfect Look) This is what scaling_kernel=8 option will look like: + +![alt text](https://raw.githubusercontent.com/randyrossi/bmc64/master/images/scaling_kernel_8.jpg) + + NOTE: For scaling_kernel=8, it's best to adjust your FB so that it can be scaled by an integer and fill most of the screen. See section on Integer Scaling above. + +# (Real) CRT Scanline alignment + +If you are using a CRT, you may want to use the 'V Stretch Factor' to better align the video to your monitr's real scanlines. A mis-alignment can make characters look fuzzy. + + * Here's what a bad alignment can look like: + +![alt text](https://raw.githubusercontent.com/randyrossi/bmc64/master/images/bad_crt_align.jpg) + + * Here's what a better alignment can look like: + +![alt text](https://raw.githubusercontent.com/randyrossi/bmc64/master/images/good_crt_align.jpg) + +NOTE: It may not be possible for EVERY scanline to line up from top to bottom but you should be able to get most of the display to look less 'fuzzy'. + +# CRT Filter + +For HDMI displays, you can enable davej's shader which emulates a CRT. To use the shader properly, you will need to use (at the very least) integer scaling (see above). I recommend at least 3x in both dimensions. This will produce acceptable results on just about any resolution. However, if you want every scanline and every 'phosphor' (if using a mask) to be precicely the same height/width, you will also need to use a resolution that matches your monitor's native resolution. That's because unless you have a resolution that matches your monitor's native resolution, your monitor will end up scaling the image itself. + + * Here is the CRT shader using a 1280x720 display resolution while the monitor is 1600x900. Notice every few scanlines are slightly thicker. + +![alt text](https://raw.githubusercontent.com/randyrossi/bmc64/master/images/shader_nonative.png) + + * Here is the same CRT shader using the monitor's 1600x900 native resolution. Notice every scan line height is identical. + +![alt text](https://raw.githubusercontent.com/randyrossi/bmc64/master/images/shader_native.png) + +The shader is not available if the mode is marked for composite. (There's no reason to put fake scanlines underneath real scanlines.) For DPI output, using the shader depends on your resolution. If you are able to use a (near) 240p resolution, don't enable the shader. However, if you are using a VGA666 adapter and a high display resolution on a very sharp display (i.e. Trinitron), you might want to use the shader for scanlines. The shader should work up to 1080p resolution at 60fps but some options might affect performance (i.e. curvature). + +Vertical centering will be reset to 0 if the shader is enabled. + +## CRT Filter + Performance + +Some shader parameter combinations may cause stuttering or frame drops on the Pi0/2. Curvature + MultiSample + Filter might be too much (especially for the Pi0), but two out of three may work. If you see bad performance, try disabling the shader altogether to determine if that's the cause. Then try disabling different features to see if you can isolate which option pushes your system over the limit. It's likely most games won't experience any problems but some demos might. I have not tested the shader's performance or how it impacts emulation at all resolutions. Your mileage may vary. + +The shader may crash the Pi on higher resolutions/fps. (My Pi0 crashes @ 1600x900 @60fps consistently.) 720p and 1080p @ 50fps seem to operate okay. + +# Files Organization + +File browsers will by default look in directories off the SD card using this convention: + + /disks/C64 + /carts/C64 + /tapes/C64 + /snapshots/C64 + + (Autostart starts off in "/") + +However, if you prefer to organize your files like this: + + /C64/disks + /C64/carts + /C64/tapes + /C64/snapshots + + (Autostart starts off in "/C64") + +Then change the 'Files Location Convention' in the Prefs menu accordingly. + +* ROMS must always be located in "/C64". +** Replace "C64" above with the appropriate emulator sub dir for different emulators. + +# FileSystem/Drives + +By default, the first partition of the SDcard is mounted and is where BMC64 will search for emulator files. To change this, add "disk_partition=#" to cmdline.txt where # is the partition number you want to mount (1-4). + +Mounting extended partitions is possible but requires the start sector to be known. (The fatfs library used is not capable of finding extended partitions by number or id). To find the start sector of the extended partition you want to use, use fdisk: + +Ex: sudo fdisk /dev/sdb + + Command (m for help): p + Disk /dev/sdb: 29.9 GiB, 32036093952 bytes, 62570496 sectors + Units: sectors of 1 * 512 = 512 bytes + Sector size (logical/physical): 512 bytes / 512 bytes + I/O size (minimum/optimal): 512 bytes / 512 bytes + Disklabel type: dos + Disk identifier: 0xf57fa762 + + Device Boot Start End Sectors Size Id Type + /dev/sdb1 2048 204799 202752 99M b W95 FAT32 + /dev/sdb2 204800 62570495 62365696 29.8G 5 Extended + /dev/sdb5 206848 1230847 1024000 500M 83 Linux + /dev/sdb6 1232896 2256895 1024000 500M 83 Linux + /dev/sdb7 2258944 3282943 1024000 500M 83 Linux + /dev/sdb8 3284992 4308991 1024000 500M 83 Linux + +To use the extended partition /dev/sdb7, for example, you would set disk_partition=2258944 in cmdline.txt (Any value > 4 is assumed to be a start sector for a fatfs partition) + +IMPORTANT: The files the Raspbery Pi itself needs to boot BMC64 must still reside in the first partition. They are: + + bootcode.bin + start.elf + config.txt + kernel*.img* <- all kernels must be in the root dir + cmdline.txt + fixup.dat + machines.txt + +NOTE: Machine switching is currently NOT supported if you use any partition other than the first partition on the SDCard. + +See 'What to put on the SDCard' for the directory structure expected. + +## USB Drives + +Since v2.4, you can mount up to 3 USB thumb drives and load cartridges, tapes, disks etc from them. However, keep in mind that if you save your settings with custom kernels or attached cartridges that were loaded from a USB drive, they will not load on boot. That's because all USB drives are lazy mounted on the first access via any file dialog. For custom kernels or saved cartridges, it's best to load those from the SD card. + +## IEC Mode (C64/C128 Only) + +You can make any drive an IECDevice and select the directory you want to mount from the 'Disks' menu. However, I don't recommend loading programs this way. The SDcard has slow access times and this will cause audio/video lag (but only during the load). This is because any native file access effectively blocks VICE's emulation routines. It's fine to load a .PRG this way but don't try running something that needs frequent disk access. IEC mode does not support all disk operations anyway. It's mostly used for testing purposes. + +NOTE: If you select a directory off a USB device (not the SD card), then the IEC drive will not be accessible until you navigate to the USB device in any file dialog at least once. This is because all USB drives are lazy mounted. No USB drives are mounted at boot time, only the SD card. + +# Sound + +The default Sid engine is 'ReSid' which more accurately reproduces the sound chip. + +You can switch between 6581 and 8580 models as well as turn on/off the filter. + +On the Pi0/Pi2, only 'Fast' sampling method is enabled. + +On the Pi3, 'Fast', 'Interpolation' and 'Fast Resampling" sampling methods have been enabled. 'Fast Resampling' produces the highest quality but consumes the most CPU. + +On the Pi3 model B with a 1.2Ghz clock, 'Fast Resampling' passband is set to 13230hz. +On the Pi3 model B+ with a 1.4Ghz clock, 'Fast Resampling' passband is set to ~~19845hz~~ 13230hz (Temporary until I can reliably detect Pi3B at boot). + +Fast Resampling+6581 can possibly cause stuttering on complex demos with a lot of multi colored expanded sprites. However, my two worst test cases (Comaland 100% and Star Wars) appear to just squeak by with approx 2ms to spare at the most complex points in the demos. + +Caution: Fast Resampling in combination with other high CPU intensive tasks (like true drive emulation) can push the emulator 'over the edge' and cause stuttering. A known case is the Epyx FastLoad cartridge + Interpoliation or Fast Resampling will cause slow downs on the Pi3. If you experience this, use Fast sampling instead. + +NOTE: For resampling, parameters like Gain and Passband frequency must remain at the default values and cannot be changed (even in vice.ini). + +## Dual SIDs + +You can enable dual SIDs in v3.5+ for the C64 to get 6 voices and stereo sound. For the second SID to work, your C64 program and the base address for the second SID must match. If you change the base address, it's best to reset the machine to clear out the registers. + +## Pseudo Stereo Effect + +BMC64 has modified VICE code to allow the same base address ($d400) for both SIDs as well allowing different SID models on each channel. You can get a 'pseudo' stereo effect this way due to the different characteristics of the different SID chips. (Try listening to 'Edge of Disgrace' with headphones and select 6581 for SID1 and 8850 for SID2.) This will work for any software you run, not just programs that can use a second SID. + +Thanks goes out to to github.com user boras-pl (https://github.com/boras-pl) for suggesting this. This simulates this real life mod: + +(https://www.youtube.com/watch?v=2Qlqeaxkp14) +(http://blog.tynemouthsoftware.co.uk/2015/11/commodore-64-pseudo-stereo-dual-sid.html) + +# Keyboards + +Use F12 to bring up the menu and ESC/RUNSTOP to exit. + +If you use a real commodore keyboard (either Keyrah or GPIO via PCB), you can use Commodore Key + F7 in place of F12 (This key combination is configurable). You can also use gamepads with buttons configured for the menu. Gamepads that have had a button configured to bring up the menu don't have to be assigned to a port to do that. So even if you have DB9 joysticks wired, you should still be able to plug in a wired/wireless usb gamepad to trigger the menu if you want. + +What keyboard mapping to use? + +Usage | Keyboard Mapping +--------------|---------------- +USB | Positional or Symbolic +GPIO | Positional +Keyrah | Positional +TheC64 (Maxi) | Maxi Positional + +* Make sure you have the rpi_*.vkm files located in each machine subdir. + +* Special thanks goes out to ody81(github) / ody ody (youtube) user who figured out the Maxi keyboard mapping file. You can watch his tutorial on how to put BMC64 inside a Maxi case here: https://www.youtube.com/channel/UCrXCNM2oXmIA7sTUwXrumiw or read his Reddit post here: https://www.reddit.com/r/Commodore/comments/ejtggy/the_c64_maxi_to_bmc64_conversion_rough_tutorial + +## Plus/4 Keyboard Notes + +If you use a real C64 keyboard via GPIO Config #2, please be aware that BMPLUS4 will use a positional mapping that will match the C16 layout. So the labels of the keys you press will not always match what the emulator gets. For example, the four separate cursor keys are located where the +, -, pound and CLR keys are on the C64. A real C16 or Plus/4 keyboard is not supported using GPIO. How the provided USB mapping works (or doesn't) with a real C16 keyboard and Keyrah is not known. + +## C128 Keyboard Notes + +F11 is the 40/80 Column Key for C128 + +# Gamepad config + +As mentioned, gamepad support is limited. Some gamepads advertise their dpads as analog sticks so if your dpad setting doesn't work and you want to use a dpad, try switching to analog. Also, if the analog setting doesn't work, you may have to do some work to find the right axis # for both X and Y. Usually, axis 0 and 1 are left stick X and Y axes but not always. My cheap 'Kiwitata' gamepads are 3 & 4. If your gamepad has two sticks, try 2 & 3 for right X/Y. + +There is a configuration sub-menu that will help you configure your usb gamepads. You can monitor the raw usb values using 'Monitor raw USB data' men option. The only way to escape from this menu is ESC/RUNSTOP. + +# Menu Navigation + +You can hold down keys or gamepad/joystick directions and the navigation action will auto-repeat. This accelerates the longer you hold in the same direction. The Home, PageUp, PageDown, and End keys are supported in the menu as well. The equivalent C64 keys are F1, F3, F5 and F7 respectively. Also, pressing a letter will find the first menu item that has text starting with that letter for quick navigation of large lists. + +# Joyport Configuration + +'Regular' Joyports (2 for C64/C128, 1 for VIC20) can be configured to use the devices below. The VICE emulators also support userport adapters that can add another 2 joyports (for games that support them). Extra userport joysticks must be activated in the Joyports->Userport Joysticks sub-menu. + +Device | Description +-------|------------ +None | No device active for the port +USB Gamepad 1 | First USB gamepad detected +USB Gamepad 2 | Second USB gamepad detected +USB Gamepad 3 | Third USB gamepad detected +USB Gamepad 4 | Fourth USB gamepad detected +GPIO Bank 1 | GPIO Pins as described below (GPIO Config dependent) +GPIO Bank 2 | GPIO Pins as described below (GPIO Config dependent) +1351 Mouse | First USB mouse detected +Keyrah Keys 1 | Numeric keypad keys 64825 compatible with Keyrah +Keyrah Keys 2 | Numeric keypad keys 17930 compatible with Keyrah +Cursor + Space | Cursor keys for directions, space for fire +Cursor + LCtrl | Cursor keys for directions, left control for fire +Custom Keyset 1 | Custom keyset 1 +Custom Ketset 2 | Custom keyset 1 + +You can define custom keysets in the menu under the Joyport sub-menu. + +# USB Button / Hotkey Function Mapping + +You can assign functions to USB buttons or HotKey Combinations. HotKey combinations are LeftControl(Commodore) + F1,3,5,7 or Tab(Cntrl) + F1,3,5,7. Not all functions are available as HotKey assignments. The functions available are: + +Function | Description | Availability +---------|-------------|------------- +Up | Equivalent to Joystick Up | USB, GPIO +Down | Equivalent to Joystick Down | USB, GPIO +Left | Equivalent to Joystick Left | USB, GPIO +Right | Equivalent to Joystick Right | USB, GPIO +Fire | Equivalent to Joystick Fire Button | USB, GPIO +POT X | Equivalent to Joystick 2nd Button (for some games) | USB, GPIO +POT Y | Equivalent to Joystick 3rd Button (for some games) | USB, GPIO +Menu | Enter/Exit Menu | USB, GPIO, HotKey +Menu Back | Navigate to previous menu | USB, GPIO, HotKey +Warp | Toggle warp mode | USB, GPIO, HotKey +Status | Toggle status bar | USB, GPIO, HotKey +Swap Ports | Swap joystick ports | USB, GPIO, HotKey +Tape OSD | Brings up tape on screen display options | USB, GPIO, HotKey +Cart OSD | Brings up cartridge on screen display options | USB, GPIO, HotKey +Cart Freeze | Triggers cartridge freeze function (if installed) | USB, GPIO, HotKey +Hard Reset | Hard resets the emulated machine | USB, GPIO, HotKey +Soft Reset | Soft resets the emulated machine | USB, GPIO, HotKey +Key 1-6 | Custom defined keystroke | USB, GPIO +Change Display | Switches VICII/VDC Displays | USB, GPIO, Hotkey (C128 Only) +Change PIP Location | Moves PIP Location | USB, GPIO, Hotkey (C128 Only) +Swap PIP | Swaps PIP Displays | USB, GPIO, Hotkey (C128 Only) +40/80 Column | Toggles 40/80 Column Key | USB, GPIO, Hotkey (C128 Only) +Virtual Kbd | Toggles Virtual Keyboard | USB, GPIO + +Custom defined keys (1-6) can be defined in the usb gamepad configuration screen. +The Tape/Cart OSD functions display a dialog with access to some common functions without pausing emulation. + +# GPIO Configurations + +There are a number of GPIO configurations to chose from: + +Config | Description +-------|---------------------------------- +1 | Menu Nav Buttons + Real Joysticks (i.e. CPIO-64 PCB or jumpers) +2 | Real Keyboard + Real Joysticks (BMC64 PCB) +3 | Waveshare Game HAT +4 | Userport + Real Joysticks +5 | Custom Defined + +NOTE: The default config is 1. If you are installing BMC64 for the first time and need a GPIO config other than 1 and don't have a USB keyboard to change the option, you will have to manually edit settiongs.txt and ensure a line with 'gpio_config=[0-2]' exists. The number given should be 1 less than the config number in the documentation above. For example, if you are using a PCB with full keyboard connector, you would add to (or create) a settings.txt file with "gpio_config=1" for the selection of Config 2. Since each emulator has its own settings file, you would need to do this for settings.txt (C64), settings-c128.txt , settings-vic20.txt, settings-plus4.txt and settings-plus4emu.txt + +## GPIO Config 1 : Menu Nav Buttons and Joysticks + +DO NOT ATTEMPT THIS IF YOU ARE NOT COMFORTABLE WITH WIRING THINGS UP TO YOUR PI +I TAKE NO RESPONSIBILITY IF YOU WIRE THINGS INCORRECTLY OR DAMAGE YOUR DEVICE + +You can wire buttons between GPIO pins and GND to have a physical menu activation or navigation button. + +GPIO | Function +-------|---------- +GPIO16 | Menu Toggle +GPIO4 | Menu Back +GPIO25 | Up +GPIO8 | Down +GPIO20 | Left +GPIO21 | Right +GPIO24 | Enter +GPIO26 | Virtual Keyboard + +It's possible to wire real Commodore or Atari joysticks directly to the Pi using this config. You can do it without a PCB if you want. Each joystick gets its own set of GPIO pins, making it easy to hook up using nothing but jumpers and DB9 connectors. (See http://accentual.com/bmc64/joystick.html). Wiring is as follows: + +GPIO BANK 1 | GPIO BANK 2 | C64 JOY PIN +--------------|-------------|------------- +GPIO17 |GPIO5 | 1 (Up) +GPIO18 |GPIO6 | 2 (Down) +GPIO27 |GPIO12 | 3 (Left) +GPIO22 |GPIO13 | 4 (Right) +GPIO23 |GPIO19 | 6 (Fire) +GND |GND | 8 (GND) + +In Joyports the menu, select either GPIO1 or GPIO2 and assign it to one of the emulated ports. +NOTE: There are no analog inputs so paddles won't function. + +## GPIO Config 2 : GPIO Keyboard and Joysticks + +This GPIO config option enables real keyboard and joystick scanning code purely from GPIO connections. It can be used with a PCB specifically designed for BMC64. The PCB design is available at https://upverter.com/design/rrossi/bmc64 It is possible to breadboard these connections using jumpers but that would mean a mess of wires inside your C64 shell. The PCB is meant to mount your DB9 joystick ports, a power switch and power connector in the right spots as well as provide power for the shell's LED. + +The PIN configuration for joysticks is different than what was described above for the GPIO Config 1 option. So if you turn this option on, the GPIO joysticks you wired directly to the PI's header will not work unless you re-wire them as described below. + +GPIO | C64 JOY PIN | KEYBOARD CONNECTOR +-----|--------------|------------------- +GND | | KBD1 (GND) + 04 | | KDB3 (Restore) + 26 | 6 (J2_FIRE) | KBD20 + 20 | 1 (J2_UP) | KBD19 + 19 | 2 (J2_DOWN) | KBD18 + 16 | 3 (J2_LEFT) | KBD17 + 13 | 4 (J2_RIGHT) | KBD16 + 06 | | KBD15 + 12 | | KBD14 + 05 | | KDB13 + 21 | GND (J2_SEL) | + 08 | | KBD12 + 25 | | KBD11 + 24 | | KBD10 + 22 | 6 (J1_FIRE) | KBD9 + 23 | 1 (J1_UP) | KBD8 + 27 | 2 (J1_DOWN) | KBD7 + 17 | 3 (J1_LEFT) | KBD6 + 18 | 4 (J1_RIGHT) | KBD5 + 07 | GND (J1_SEL) | + +NOTE: There are no analog inputs so paddles won't function. + +Both real VIC20 and C64 keyboards should work in all emulated machines. However, the additional keys found on the C128's keyboard are not available. + +(One cool side-effect of using a real keyboard is if you boot the C128 and hold down the commodore key, it will boot into 64 mode like the real thing! That's something I could never get to work with USB keyboards.) + +## GPIO Config 3 : Waveshare Game HAT + +This GPIO configuration will let you use a Waveshare Game HAT with BMC64. Set either port 1 or 2 on the virtual machine to GPIO Bank 1. GPIO Bank 2 has no function in this configuration. But you can still plug in a USB gamepad and use that as a second joystick if you like. + +https://www.waveshare.com/game-hat.htm + +Buttons are mapped as follows: + +GPIO | WAVESHARE BUTTON | BMC64 Function +-------|------------------|--------------- +GPIO5 | Up | Up +GPIO6 | Down | Down +GPIO13 | Left | Left +GPIO19 | Right | Right +GPIO21 | Start | Menu Toggle +GPIO4 | Select | Status Bar Toggle +GPIO26 | A | POTX +GPIO12 | B | Fire +GPIO23 | Top Right | Warp Toggle +GPIO20 | Y | POTY +GPIO16 | X | Virtual Keyboard Toggle +GPIO18 | Top Left | Menu Back + +NOTE: These button assignments are not configurable but may be in the future. + +## GPIO Config 4 : Userport and Joysticks + +This configuration will let you control 8 GPIO pins using the emulator userport. This has been tested for the C64 and may work as is for the C128, VIC20 and PET. It also provides access to two real joysticks similar to option 1. Please keep in mind the highest resolution for changing or reading pins values will be that of the video vertical frequency of 50hz or 60hz. This is because the emulator emulates CPU cycles in bursts as fast as it can to render the next 20 ms or 16 ms worth of activity each frame. This is much lower a resolution than you would get on a real C64 (even in BASIC) so don't expect to control high speed devices this way. This is for educational/fun purposes only. + +***WARNING***: This configuration is capable of setting some pins to OUTPUT 3.3V. Do NOT use this while the keyboard/joystick PCB mentioned above is connected to your Pi. This will make it possible for some OUTPUT pins to be connected to some INPUT pins simply by pressing keys on the C64 keyboard or using a joystick. Since there is nothing limiting current, this WILL cause damage to the GPIO pins. For this reason, this option is only available for selection from the menu by adding 'enable_gpio_outputs=true' to cmdline.txt Do not use this option unless you are certain the connections to your GPIO header are safe for use with this configuration. + +The joysticks are mapped as follows: + +GPIO BANK 1 | GPIO BANK 2 | C64 JOY PIN +--------------|-------------|------------- +GPIO17 |GPIO5 | 1 (Up) +GPIO18 |GPIO6 | 2 (Down) +GPIO27 |GPIO12 | 3 (Left) +GPIO22 |GPIO13 | 4 (Right) +GPIO23 |GPIO19 | 6 (Fire) +GND |GND | 8 (GND) + +The userport is available as follows: + +GPIO | Port Bit +-------|--------- +GPIO4 | 0 +GPIO24 | 1 +GPIO25 | 2 +GPIO8 | 3 +GPIO16 | 4 +GPIO26 | 5 +GPIO20 | 6 +GPIO21 | 7 + +When used as inputs, the pins use pull-up resistors (just like the real C64) so the value defaults to 1. Grounding the pin will result in a 0 being read. + +## GPIO Config 5 : Custom Defined + +If the pre-defined GPIO configurations don't suit your needs, you can define your own GPIO mappings if you wish. Use the 'Configure Custom GPIO' menu option under 'Prefs'. + +# CPU Temperature + +IMPORTANT : BMC64 v1.0.6 through v1.4 were not properly putting the other 3 (unused) cores to a low powered mode and was causing CPU temperatures to rise close to or beyond automatic throttling limits. The CPU temperature on a RPi 3 Model B clocked at @1.2Ghz hit 70 degrees without a heat sync. V1.5+ should not have this issue. If you are experiencing heat issues (thermometer icon in top right corner), please update your installation to the latest version. + +# Changelog + + * https://github.com/randyrossi/bmc64/blob/master/CHANGELOG.md + +# Q&A + +Q: Can I switch the machine to NTSC? + +A: Yes, in V3.0 or higher, do this from the Machine->Switch menu. + + Be aware that some demos/games will not run if the machine is NTSC. If you mix those two settings, your machine will likely run fast/slow, not look good or have audio issues (or all of the above). + +Q: Why does the video look soft/stretched/dark? + +A: By default, the scaling_kernel option softens the scaled image. You can change this (see above). Also, some monitors seem to stretch the canvas to full width rather than keep the aspect ratio. You can change the hdmi mode and frame buffer aspect ratio in config.txt to suit your needs. Just keep in mind that NTSC machine timing must have a 60hz mode and PAL machine timing must have a 50hz mode. This isn't something you normally care about in an emulator but because the machine is actually timed to the vertical blank signal of the video device, it matters. I also recommend changing the mode to match your monitor/TV's native resolution. That should avoid any unnecessary extra processing your monitor/TV might do which can add lag. Also, place your Monitor/TV into 'Game' mode if possible. + +Things you can fiddle with for video: + + hdmi_mode in config.txt + framebuffer_aspect in config.txt (i.e. framebuffer_aspect=0x00070009 for 7:9) + scaling_kernel (google for available algorithms) + +Q: Can I change option 'X' in vice? + +A: Most video options are fixed right now to make sure video is rendered properly. VICE settings are read from 'vice.ini' located in the root of the emulator's partition. If there is no UI support for the option you are looking for, you can try setting it there using VICE documentation. + +Q: Hey, isn't the real thing running at 50.125Hz? + +A: Yes, the original machine ran at 50.125Hz for PAL and 59.826Hz for NTSC. So, yeah, you'll be about 0.25% off in terms of timing. If you really want 50.125Hz, you can try this custom HDMI mode (only applies to HDMI): + + [C64/PAL/HDMI/768x544@50.125Hz] + sdtv_mode=18 + hdmi_group=2 + hdmi_mode=87 + hdmi_timings=768 0 24 72 96 544 1 3 2 14 0 0 0 50 0 27092000 1 + machine_timing=pal-custom + cycles_per_second=985257 + scaling_params=0,384,272,768,544 + +This mode will match the timing of the original machine (for the purists) but may not be compatible with all monitors: + +For NTSC, this mode will match the real timing very closely. But again, since it's not a standard resolution, it may not work on all monitors. + + [C64/NTSC/HDMI/VICE 768x525@59.825Hz] + sdtv_mode=18 + hdmi_group=2 + hdmi_mode=87 + hdmi_timings=768 0 24 72 96 525 1 3 10 9 0 0 0 60 0 31415829 1 + machine_timing=ntsc-custom + cycles_per_second=1022708 + scaling_params=0,384,246,768,492 + +Q: Audio is not coming out of HDMI/Analog jack when I expect it to. Why? + +A. Sometimes the code that auto detects whether audio should be piped through HDMI vs analog jack doesn't work. You can force audio to where you want it with a audio_out=hdmi or audio_out=analog parameter. The default is audio_out=auto. This ends up in cmdline.txt but you should set it in every machine config in machines.txt you want it to show up for. + +Q: How do I get Dolphin DOS to work? + +From: http://rr.pokefinder.org/wiki/Dolphin_DOS + +From the menu: + + Machine -> ROMS -> Change Kernal ROM -> kernel-20-1.rom + Drives -> Change ROM -> 1541 -> c1541-20-6.rom + Drive 8 + Change Model -> 1541 + Options -> Parallel Cable -> Standard + Options -> RAM 6000 On + +Q: PetRescue won't attach in Plus4Emu. Why? + +A: Plus4Emu is picky about the size of the disk images it attaches. PetRescue has extra sectors but for some reason, the d64 image is 197376 bytes which doesn't complete a full track. To get it to attach, you will have to pad it with extra 0's. The size after padding should be 200960. + +On Linux, this command will work: + +truncate -s +3584 petrescue.d64 + +Q. What do I put on the SDcard? + + C64/ + kernal + basic + chargen + d1541II + dos1541 (optional) + dos1571 (optional) + dos1581 (optional) + rpi_sym.vkm + /C128 + kernal + basichi + basiclo + charg64 + chargen + kernal64 + basic64 + z80bios (optional) + d1541II (optional) + dos1571 (recommended) + rpi_sym.vkm + bootstat.txt + /VIC20 + basic + chargen + kernal + d1541II + rpi_sym.vkm + bootstat.txt + /PLUS4 + kernal + kernal.005 + kernal.232 + 3plus1hi + 3plus1lo + basic + c2lo.364 + d1541II (optional) + dos1551 (recommended) + rpi_sym.vkm + bootstat.txt + /PLUS4EMU (Available for Pi3 Only) + p4kernal.rom + p4_ntsc.rom + p4_basic.rom + 3plus1.rom + dos1541.rom (optional) + dos1551.rom + dos1581.rom (optional) + p4fileio.rom (optional) + p4fileio.rom (optional) + /PET + basic1 + basic2 + basic4 + characters.901640-01.bin + chargen + edit1g + edit2b + edit2g + edit4b40 + edit4b80 + edit4g40 + rpi_buus_pos.vkm + rpi_buus_sym.vkm + rpi_grus_pos.vkm + rpi_grus_sym.vkm + hre-9000.324992-02.bin + hre-a000.324993-02.bin + kernal1 + kernal2 + kernal4 + waterloo-a000.901898-01.bin + waterloo-b000.901898-02.bin + waterloo-c000.901898-03.bin + waterloo-d000.901898-04.bin + waterloo-e000.901897-01.bin + waterloo-f000.901898-05.bin + kernel.img (C64 kernel for Pi0) + kernel7.img (C64 kernel for Pi2) + kernel8-32.img (C64 kernel for Pi3) + kernel.img.vic20 + kernel7.img.vic20 + kernel8-32.img.vic20 + kernel.img.c128 + kernel7.img.c128 + kernel8-32.img.c128 + kernel.img.plus4 + kernel7.img.plus4 + kernel8-32.img.plus4 + kernel8-32.img.plus4emu (for Pi3 only) + fixup.dat + bootstat.txt + config.txt + cmdline.txt + machines.txt + snapshots/ + C64/ + C128/ + VIC20/ + PLUS4/ + PET/ + disks/ + C64/ + C128/ + VIC20/ + PLUS4/ + PET/ + tapes/ + C64/ + C128/ + VIC20/ + PLUS4/ + PET/ + carts/ + C64/ + C128/ + VIC20/ + PLUS4/ + tmp/ + (used by the emulator sometimes) + +# Build Instructions + +Refer to BUILDING.md for instructions. + +# Performance numbers can be found at https://accentual.com/bmc64 \ No newline at end of file diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/VIC20/PUT_ROMS_HERE b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/VIC20/PUT_ROMS_HERE new file mode 100644 index 00000000..2dabf72d --- /dev/null +++ b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/VIC20/PUT_ROMS_HERE @@ -0,0 +1 @@ +Place KERNAL, CHARGEN, BASIC and d1541II ROMS in this dir. diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/VIC20/basic b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/VIC20/basic new file mode 100644 index 00000000..038f86ea Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/VIC20/basic differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/VIC20/bootstat.txt b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/VIC20/bootstat.txt new file mode 100644 index 00000000..e171cb78 --- /dev/null +++ b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/VIC20/bootstat.txt @@ -0,0 +1,29 @@ +# This file tells stdio glue code to fast fail, fast stat certain files +# that are accessed at boot time in order to speed up the boot process. +# If this file is missing, the default internal list will be used which +# matches the checked in version. +# +# Note: Any unqualified filename will fake success or fail for the file +# regardless of the directory it resides in. Machine kernal and character +# roms you know are present can have a 'stat' entry here. Any files you want +# to fail regardless of where they reside can have a 'fail' entry. If you +# want to store your drive rom files in DRIVES, you can add fail entries +# for /VIC20/filename to speed up boot slightly since VICE looks for those +# files first in the machine specific dir. But this is not necessary. +stat,kernal,8192 +stat,basic,8192 +stat,chargen,4096 +fail,fliplist-VIC20.vfl,0 +fail,mps803,0 +fail,mps803.vpl,0 +fail,nl10-cbm,0 +fail,1520.vpl,0 +fail,dos1540,0 +fail,dos1570,0 +fail,dos2000,0 +fail,dos4000,0 +fail,dos2031,0 +fail,dos2040,0 +fail,dos3040,0 +fail,dos4040,0 +fail,dos1001,0 diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/VIC20/chargen b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/VIC20/chargen new file mode 100644 index 00000000..5de1da40 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/VIC20/chargen differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/VIC20/d1541II b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/VIC20/d1541II new file mode 100644 index 00000000..58304561 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/VIC20/d1541II differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/VIC20/kernal b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/VIC20/kernal new file mode 100644 index 00000000..afcf5170 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/VIC20/kernal differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/VIC20/rpi_maxi_pos.vkm b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/VIC20/rpi_maxi_pos.vkm new file mode 100644 index 00000000..4429da09 --- /dev/null +++ b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/VIC20/rpi_maxi_pos.vkm @@ -0,0 +1,119 @@ +# BMC64 keyboard mapping file for TheC64 ('Maxi') +# +# A Keyboard map is read in as patch to the current map. +# +# File format: +# - comment lines start with '#' +# - keyword lines start with '!keyword' +# - normal line has 'keysym/scancode row column shiftflag' +# +# Keywords and their lines are: +# '!CLEAR' clear whole table +# '!INCLUDE filename' read file as mapping file +# '!LSHIFT row col' left shift keyboard row/column +# '!RSHIFT row col' right shift keyboard row/column +# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT) +# '!UNDEF keysym' remove keysym from table +# +# Shiftflag can have the values: +# 0 key is not shifted for this keysym/scancode +# 1 key is shifted for this keysym/scancode +# 2 left shift +# 4 right shift +# 8 key can be shifted or not with this keysym/scancode +# 16 deshift key for this keysym/scancode +# 32 another definition for this keysym/scancode follows +# +# Negative row values: +# 'keysym -1 n' joystick #1, direction n +# 'keysym -2 n' joystick #2, direction n +# 'keysym -3 0' first RESTORE key +# 'keysym -3 1' second RESTORE key +# 'keysym -4 0' 40/80 column key +# 'keysym -4 1' CAPS (ASCII/DIN) key +# + +!CLEAR +!LSHIFT 1 3 +!RSHIFT 6 4 +!VSHIFT RSHIFT + +Control_L 0 2 8 /* Ctrl */ +Super_L 0 5 0 /* Commodore Key */ +BackSpace 7 0 8 +Down 7 3 8 +Escape 0 3 8 /* RunStop */ +F1 7 4 8 +F2 7 4 1 +F3 7 5 8 +F4 7 5 1 +F5 7 6 8 +F6 7 6 1 +F7 7 7 8 +F8 7 7 1 +Home 6 7 8 /* Clr */ +Insert 6 0 16 /* Insert */ +Left 7 2 1 +Return 7 1 8 +Right 7 2 8 +Shift_L 1 3 2 +Shift_R 6 4 4 +Up 7 3 1 +KP_Add 5 0 8 /* + */ +KP_Subtract 5 7 8 /* - */ +Apostrophe 6 6 8 /* Up Arrow */ +LeftBracket 5 5 8 /* : -> : */ +SemiColon 6 1 8 /* * -> * */ +Comma 5 3 8 /* , -> , */ +BackSlash 5 6 8 /* @ -> @ */ +Pound 6 5 8 /* equal */ +Equals 6 5 8 /* = -> = */ +Period 5 4 8 /* . */ +Dash 6 0 8 /* Pound */ +SingleQuote 6 6 8 /* Up Arrow */ +Slash 6 3 8 /* / -> / */ +Space 0 4 8 /* space */ +Insert 6 0 8 /* sterling */ +RightBracket 6 2 8 /* ; -> ; */ +BackQuote 0 1 0 /* arrowleft */ +Del 6 6 8 /* arrowup */ +0 4 7 8 +1 0 0 8 +2 0 7 8 +3 1 0 8 +4 1 7 8 +5 2 0 8 +6 2 7 8 +7 3 0 8 +8 3 7 8 +9 4 0 8 +a 1 2 8 +b 3 4 8 +c 2 4 8 +d 2 2 8 +e 1 6 8 +f 2 5 8 +g 3 2 8 +h 3 5 8 +i 4 1 8 +j 4 2 8 +k 4 5 8 +l 5 2 8 +m 4 4 8 +n 4 3 8 +o 4 6 8 +p 5 1 8 +q 0 6 8 +r 2 1 8 +s 1 5 8 +t 2 6 8 +u 3 6 8 +v 3 3 8 +w 1 1 8 +x 2 3 8 +y 3 1 8 +z 1 4 8 + +# Restore key mappings +CapsLock -4 1 +Tab -3 0 diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/VIC20/rpi_pos.vkm b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/VIC20/rpi_pos.vkm new file mode 100644 index 00000000..95c8ccbe --- /dev/null +++ b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/VIC20/rpi_pos.vkm @@ -0,0 +1,195 @@ +# Bare Metal Commodore keyboard mapping file suitable for real C64 keyboards using Keymmodore-64 interfase by K-rnivoro. https://github.com/K-rnivoro/Keymmodore-64 +# Tested with BMC v3.9 (https://accentual.com/bmc64/) +# Mapped for positional compatibility to C-64 Keyboards. +# +# +# File format: +# - comment lines start with '#' +# - keyword lines start with '!keyword' +# - normal line has 'keysym/scancode row column shiftflag' +# +# Keywords and their lines are: +# '!CLEAR' clear whole table +# '!INCLUDE filename' read file as mapping file +# '!LSHIFT row col' left shift keyboard row/column +# '!RSHIFT row col' right shift keyboard row/column +# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT) +# '!UNDEF keysym' remove keysym from table +# +# Shiftflag can have the values: +# 0 key is not shifted for this keysym/scancode +# 1 key is shifted for this keysym/scancode +# 2 left shift +# 4 right shift +# 8 key can be shifted or not with this keysym/scancode +# 16 deshift key for this keysym/scancode +# 32 another definition for this keysym/scancode follows +# +# Negative row values: +# 'keysym -1 n' joystick #1, direction n +# 'keysym -2 n' joystick #2, direction n +# 'keysym -3 0' first RESTORE key +# 'keysym -3 1' second RESTORE key +# 'keysym -4 0' 40/80 column key +# 'keysym -4 1' CAPS (ASCII/DIN) key +# +# Joyport keypad key layout: +# -------------------------- +# | 0 | 1 | 2 | 3 | 4 | +# -------------------------- +# | 5 | 6 | 7 | 8 | 9 | +# -------------------------- +# | 10 | 11 | 12 | 13 | 14 | +# -------------------------- +# | 15 | 16 | 17 | 18 | 19 | +# -------------------------- +# +# When a bigger spaced key is used, +# it uses the upper left most key value. +# Positional Mapping, US Layout, VIC20, X11 +# VIC20 Keyboard matrix +# +# +-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0|Bit 1|Bit 2|Bit 3|Bit 4|Bit 5|Bit 6|Bit 7| +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0| 1 ! |A_LFT| CTRL| R/S |SPACE| C= | Q | 2 " | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 1| 3 # | W | A | S_L | Z | S | E | 4 $ | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 2| 5 % | R | D | X | C | F | T | 6 & | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 3| 7 ' | Y | G | V | B | H | U | 8 ( | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 4| 9 ) | I | J | N | M | K | O | 0 | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 5| + | P | L | , < | . > | : [ | @ | - | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 6|POUND| * | ; ] | / ? | S_R | = | A_UP| HOME| +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 7| DEL |Retrn|C_L/R|C_U/D| F1 | F3 | F5 | F7 | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +!CLEAR +!LSHIFT 1 3 +!RSHIFT 6 4 +!VSHIFT RSHIFT +!SHIFTL LSHIFT + + + +##################### +# |Bit 0| 1 ! |A_LFT| CTRL| R/S |SPACE| C= | Q | 2 " | +BackQuote 0 1 8 +Tab 0 2 8 +Escape 0 3 8 +Space 0 4 8 +Control_L 0 5 8 + +##################### +# |Bit 1| 3 # | W | A | S_L | Z | S | E | 4 $ | + +Shift_L 1 3 2 + + +##################### +# |Bit 2| 5 % | R | D | X | C | F | T | 6 & | + + +##################### +# |Bit 3| 7 ' | Y | G | V | B | H | U | 8 ( | + + +##################### +# |Bit 4| 9 ) | I | J | N | M | K | O | 0 | + + +###################### +# |Bit 5| + | P | L | , < | . > | : [ | @ | - | + +Dash 5 0 8 +Comma 5 3 8 +Colon 5 3 8 +Period 5 4 8 +SemiColon 5 5 8 +LeftBracket 5 6 8 +Equals 5 7 8 + + +##################### +# |Bit 6|POUND| * | ; ] | / ? | S_R | = | A_UP| HOME| + +Insert 6 0 8 +RightBracket 6 1 8 +SingleQuote 6 2 8 +Slash 6 3 8 +Shift_R 6 4 4 +BackSlash 6 5 8 +Del 6 6 8 +Home 6 7 8 + +##################### +# |Bit 7| DEL |Retrn|C_L/R|C_U/D| F1 | F3 | F5 | F7 | + +BackSpace 7 0 8 +Return 7 1 8 +Right 7 2 8 +Down 7 3 8 +F1 7 4 8 +F3 7 5 8 +F5 7 6 8 +F7 7 7 8 + + +### Numbers & Letters +0 4 7 8 +1 0 0 8 +2 0 7 8 +3 1 0 8 +4 1 7 8 +5 2 0 8 +6 2 7 8 +7 3 0 8 +8 3 7 8 +9 4 0 8 +a 1 2 8 +b 3 4 8 +c 2 4 8 +d 2 2 8 +e 1 6 8 +f 2 5 8 +g 3 2 8 +h 3 5 8 +i 4 1 8 +j 4 2 8 +k 4 5 8 +l 5 2 8 +m 4 4 8 +n 4 3 8 +o 4 6 8 +p 5 1 8 +q 0 6 8 +r 2 1 8 +s 1 5 8 +t 2 6 8 +u 3 6 8 +v 3 3 8 +w 1 1 8 +x 2 3 8 +y 3 1 8 +z 1 4 8 + +# Restore key mappings +PageUp -3 0 + +# joystick keymap A (port 1) +264 -1 7 /* NumPad 8 -> UP */ +258 -1 2 /* NumPad 2 -> DOWN */ +260 -1 4 /* NumPad 4 -> LEFT */ +262 -1 5 /* NumPad 6 -> RIGHT */ +256 -1 0 /* NumPad 0 -> FIRE */ + +# joystick Keymap B (port 2) +265 -2 7 /* NumPad 9 -> UP */ +259 -2 2 /* NumPad 3 -> DOWN */ +263 -2 4 /* NumPad 7 -> LEFT */ +257 -2 5 /* NumPad 1 -> RIGHT */ +266 -2 0 /* NumPad . -> FIRE */ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/VIC20/rpi_sym.vkm b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/VIC20/rpi_sym.vkm new file mode 100644 index 00000000..4bdc9984 --- /dev/null +++ b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/VIC20/rpi_sym.vkm @@ -0,0 +1,123 @@ +# VICE keyboard mapping file +# +# A Keyboard map is read in as patch to the current map. +# +# File format: +# - comment lines start with '#' +# - keyword lines start with '!keyword' +# - normal line has 'keysym/scancode row column shiftflag' +# +# Keywords and their lines are: +# '!CLEAR' clear whole table +# '!INCLUDE filename' read file as mapping file +# '!LSHIFT row col' left shift keyboard row/column +# '!RSHIFT row col' right shift keyboard row/column +# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT) +# '!SHIFTL shiftkey' shift lock key (RSHIFT or LSHIFT) +# '!UNDEF keysym' remove keysym from table +# +# Shiftflag can have the values: +# 0 key is not shifted for this keysym/scancode +# 1 key is shifted for this keysym/scancode +# 2 left shift +# 4 right shift +# 8 key can be shifted or not with this keysym/scancode +# 16 deshift key for this keysym/scancode +# 32 another definition for this keysym/scancode follows +# 64 shift lock +# 256 key is used for an alternative keyboard mapping +# +# When a bigger spaced key is used, +# it uses the upper left most key value. + +!CLEAR +!LSHIFT 1 3 +!RSHIFT 6 4 +!VSHIFT RSHIFT +!SHIFTL LSHIFT + +Escape 0 3 8 /* ESC -> Run/Stop */ +1 0 0 8 /* 1 -> 1 */ +2 0 7 32 /* 2 -> 2 */ +2 5 6 16 /* @ -> @ */ +3 1 0 8 /* 3 -> 3 */ +4 1 7 8 /* 4 -> 4 */ +5 2 0 8 /* 5 -> 5 */ +6 2 7 32 /* 6 -> 6 */ +6 6 6 16 /* ^ -> ^ */ +7 3 0 32 /* 7 -> 7 */ +7 2 7 1 /* & -> & */ +8 3 7 32 /* 8 -> 8 */ +8 6 1 16 /* * -> * */ +9 4 0 32 /* 9 -> 9 */ +9 3 7 1 /* ( -> ( */ +0 4 7 32 /* 0 -> 0 */ +0 4 0 1 /* ) -> ) */ +Dash 5 7 8 /* Minus -> Minus */ +Equals 6 5 32 /* = -> = */ +Equals 5 0 16 /* + -> + */ +Pound 5 7 32 /* = -> = */ +Pound 5 0 16 /* + -> + */ +BackSpace 7 0 8 /* Backspace -> DEL */ +Control_L 0 5 8 /* Cntrl -> CBM */ +q 0 6 8 /* Q -> Q */ +w 1 1 8 /* W -> W */ +e 1 6 8 /* E -> E */ +r 2 1 8 /* R -> R */ +t 2 6 8 /* T -> T */ +y 3 1 8 /* Y -> Y */ +u 3 6 8 /* U -> U */ +i 4 1 8 /* I -> I */ +o 4 6 8 /* O -> O */ +p 5 1 8 /* P -> P */ +LeftBracket 5 5 1 /* [ -> [ */ +RightBracket 6 2 1 /* ] -> ] */ +Return 7 1 8 /* Return -> Return */ +Tab 0 2 8 /* Tab -> Ctrl */ +a 1 2 8 /* A -> A */ +s 1 5 8 /* S -> S */ +d 2 2 8 /* D -> D */ +f 2 5 8 /* F -> F */ +g 3 2 8 /* G -> G */ +h 3 5 8 /* H -> H */ +j 4 2 8 /* J -> J */ +k 4 5 8 /* K -> K */ +l 5 2 8 /* L -> L */ +SemiColon 6 2 32 /* ; -> ; */ +SemiColon 5 5 16 /* : -> : */ +SingleQuote 3 0 33 /* ' -> ' */ +SingleQuote 0 7 1 /* " -> " */ +BackQuote 0 1 32 /* ` -> Left Arrow */ +BackQuote 6 6 1 /* ~ -> Pi */ +BackSlash 6 0 8 /* \ -> Lira */ +Shift_L 1 3 2 /* Left Shift -> Left Shift */ +CapsLock 1 3 64 /* Caps Lock -> Shift Lock */ +z 1 4 8 /* Z -> Z */ +x 2 3 8 /* X -> X */ +c 2 4 8 /* C -> C */ +v 3 3 8 /* V -> V */ +b 3 4 8 /* B -> B */ +n 4 3 8 /* N -> N */ +m 4 4 8 /* M -> M */ +Comma 5 3 8 /* , -> , */ +Period 5 4 8 /* . -> . */ +Slash 6 3 8 /* / -> / */ +Shift_R 6 4 4 /* Right Shift -> Right Shift */ +Space 0 4 8 /* Space -> Space */ +F1 7 4 8 /* F1 -> F1 */ +F2 7 4 1 /* F2 -> F2 */ +F3 0 5 8 /* F3 -> F3 */ +F4 7 5 1 /* F4 -> F4 */ +F5 7 6 8 /* F5 -> F5 */ +F6 7 6 1 /* F6 -> F6 */ +F7 7 7 8 /* F7 -> F7 */ +F8 7 7 1 /* F8 -> F8 */ +Home 6 7 8 /* Home -> CLR/HOME */ +Up 7 3 1 /* Up -> CRSR UP */ +Down 7 3 8 /* Down -> CRSR DOWN */ +Insert 6 0 1 /* Insert -> INS */ +Del 7 0 8 /* Delete -> DEL */ +Left 7 2 1 /* Left -> Left */ +Right 7 2 8 /* Right -> Right */ +# Restore key mappings +PageUp -3 0 diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/bootcode.bin b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/bootcode.bin new file mode 100644 index 00000000..171322bd Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/bootcode.bin differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/cmdline.txt b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/cmdline.txt new file mode 100644 index 00000000..4d492ef4 --- /dev/null +++ b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/cmdline.txt @@ -0,0 +1,5 @@ +enable_pimmodore=1 fast=true machine_timing=pal-hdmi scaling_params=384,240,1152,720 + +# DO NOT EDIT - This file is no longer edited by hand. Use the +# machines.txt to set both config.txt and cmdline.txt params for +# each machine. Refer to README.md for options. diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/config.txt b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/config.txt new file mode 100644 index 00000000..2d9701f6 --- /dev/null +++ b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/config.txt @@ -0,0 +1,67 @@ +# +# Bare Metal Commodore 64 Emulator For The Raspberry Pi +# + +# uncomment scaling_kernel and set the desired value if you want to +# change the scaling that affects the overall sharpness of the picture. +# 8 = NEAREST NEIGHBOUR - sharp edges +# 2 = SINC_BLACKMAN - good looking compromise +# 6 = HAMMING - soft edges (default) +scaling_kernel=2 + +# NOTE: Since v3.0, the video settings here and the +# accompanying cmdline.txt settings are configured by +# machines.txt. See README.md for how to switch +# machine configs. +disable_overscan=1 +sdtv_mode=18 +hdmi_group=1 +hdmi_mode=19 + +# ----------------------------------------------------- +# Optional settings follow +# ----------------------------------------------------- + +# uncomment if you get no picture on HDMI for a default "safe" mode +#hdmi_safe=1 + +# uncomment to force a HDMI mode rather than DVI. This can make audio work in +# DMT (computer monitor) modes +hdmi_drive=2 + +# uncomment to increase signal to HDMI, if you have interference, blanking, or +# no display +config_hdmi_boost=4 + +gpu_mem=128 +disable_splash=1 +boot_delay=1 + +# FOR RASBPERRY PI 1 USERS ONLY USING BMC64-LITE +# +# Some demos/games will simply not perform well at the +# default 700mhz clock rate. This will be evident as +# the audio/video stutters under heavy load. These +# settings will improve performance in the majority +# of cases, but there will still be some situations +# where the emulator will struggle. If you are not +# comfortable with overclocking your Pi, consider +# using bmc64 on Pi2 or Pi3. These are considered +# fairly safe settings but I take no responsibility +# for any damage caused to your device by using them. +# Please see the documentation at the github site +# for more info. +#arm_freq=1000 +#core_freq=350 +#sdram_freq=500 +#sdram_schmoo=0x02000020 +#over_voltage=6 +#sdram_over_voltage=6 +#temp_limit=75 + +# IMPORTANT: A kernel= parameter will appear here after +# a machine switch to a kernel other than C64. This kernel +# will be Pi model specific so the SDCard will no longer +# boot on a model other than the one the switch took +# place on . If you want to make the card bootable from any +# Pi model again, simply switch back to C64. diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/fixup.dat b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/fixup.dat new file mode 100644 index 00000000..0fce5788 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/fixup.dat differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/kernel.img b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/kernel.img new file mode 100644 index 00000000..f8638589 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/kernel.img differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/kernel.img.c128 b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/kernel.img.c128 new file mode 100644 index 00000000..0c461a26 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/kernel.img.c128 differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/kernel.img.pet b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/kernel.img.pet new file mode 100644 index 00000000..a50982d2 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/kernel.img.pet differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/kernel.img.plus4 b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/kernel.img.plus4 new file mode 100644 index 00000000..91af24bd Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/kernel.img.plus4 differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/kernel.img.vic20 b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/kernel.img.vic20 new file mode 100644 index 00000000..b87d73a5 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/kernel.img.vic20 differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/kernel7.img b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/kernel7.img new file mode 100644 index 00000000..87be8d01 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/kernel7.img differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/kernel7.img.c128 b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/kernel7.img.c128 new file mode 100644 index 00000000..e33c5101 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/kernel7.img.c128 differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/kernel7.img.pet b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/kernel7.img.pet new file mode 100644 index 00000000..e8b7f223 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/kernel7.img.pet differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/kernel7.img.plus4 b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/kernel7.img.plus4 new file mode 100644 index 00000000..213d8cfc Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/kernel7.img.plus4 differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/kernel7.img.vic20 b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/kernel7.img.vic20 new file mode 100644 index 00000000..3cb56b56 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/kernel7.img.vic20 differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/kernel8-32.img b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/kernel8-32.img new file mode 100644 index 00000000..c1c11bc5 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/kernel8-32.img differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/kernel8-32.img.c128 b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/kernel8-32.img.c128 new file mode 100644 index 00000000..ffd0778d Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/kernel8-32.img.c128 differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/kernel8-32.img.pet b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/kernel8-32.img.pet new file mode 100644 index 00000000..00c1e8a8 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/kernel8-32.img.pet differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/kernel8-32.img.plus4 b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/kernel8-32.img.plus4 new file mode 100644 index 00000000..9065f164 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/kernel8-32.img.plus4 differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/kernel8-32.img.plus4emu b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/kernel8-32.img.plus4emu new file mode 100644 index 00000000..26da419e Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/kernel8-32.img.plus4emu differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/kernel8-32.img.vic20 b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/kernel8-32.img.vic20 new file mode 100644 index 00000000..a26936c6 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/kernel8-32.img.vic20 differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/machines.txt b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/machines.txt new file mode 100644 index 00000000..97a07538 --- /dev/null +++ b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/machines.txt @@ -0,0 +1,403 @@ +# BMC64 multi-machine configuration file. +# +# This file lets any BMC* kernel v3.0 or higher switch +# between different machine types from the menu. Distributions +# for v3.0 include all kernels for every machine type and Pi +# model combo. +# +# Set both config.txt and cmdline.txt parameters inside each +# section. These choices will appear in the emulator's +# 'Switch Machine' menu. +# +# Format: +# machines.txt = MachineDescription* +# +# MachineDescription = ([SectionHeader]"\n")(OptionLine\n*)* +# SectionHeader = [Machine/TimingStandard/OutputType/ResolutionDesc] +# Machine = VIC20|C64|C128|Plus4|Plus4Emu|Pet +# TimingStandard = NTSC | PAL +# OutputVideo = HDMI | DPI | Composite +# ResolutionDesc = Any text (can be used to describe the video resolution) +# OptionLine = "key=value\n" +# +# NOTE: Plus4Emu is only available on Raspberry Pi 3 models. +# +# config.txt options available (See RPi documentation) +# ---------------------------------------------------- +# disable_overscan +# sdtv_mode +# hdmi_group +# hdmi_mode +# hdmi_timing +# hdmi_cvt +# +# cmdline.txt options available (See README.md) +# ---------------------------------------------------- +# machine_timing +# cycles_per_second +# audio_out +# scaling_params +# scaling_params2 (for 2nd display or 80 column display) + +# +# NOTE: Always include a valid hdmi mode even for the composite +# configs. This ensures you can switch back to HDMI even while +# using a composite config. + +# +# VIC20 +# + +[VIC20/NTSC/HDMI/VICE 720p@60Hz] +disable_overscan=1 +sdtv_mode=16 +hdmi_group=1 +hdmi_mode=4 +machine_timing=ntsc-hdmi +scaling_params=414,228,1242,684 + +[VIC20/NTSC/Composite/VICE 480p@60Hz] +disable_overscan=1 +sdtv_mode=16 +hdmi_group=1 +hdmi_mode=4 +machine_timing=ntsc-composite +scaling_params=422,228,720,456 + +[VIC20/PAL/HDMI/VICE 720p@50Hz] +disable_overscan=1 +sdtv_mode=18 +hdmi_group=1 +hdmi_mode=19 +machine_timing=pal-hdmi +scaling_params=414,240,1242,720 + +[VIC20/PAL/Composite/VICE 576p@50Hz] +disable_overscan=1 +sdtv_mode=18 +hdmi_group=1 +hdmi_mode=19 +machine_timing=pal-composite +scaling_params=422,240,668,480 + +# This matches the timing of a real NTSC machine but may +# not work on all monitors. +[VIC20/NTSC/HDMI/VICE 768x525@60.285Hz] +sdtv_mode=16 +hdmi_group=2 +hdmi_mode=87 +hdmi_timings=768 0 24 72 96 525 1 3 10 9 0 0 0 60 0 31656857 1 +machine_timing=ntsc-custom +# VICE cycles_per_second is 1022727, custom is 0.000782% faster +cycles_per_second=1022735 +scaling_params=384,246,768,492 + +# This matches the timing of a real PAL machine but may +# not work on all monitors. +[VIC20/PAL/HDMI/VICE 768x545@50.037Hz] +sdtv_mode=18 +hdmi_group=2 +hdmi_mode=87 +# Fudging intended 544 lines to 545 by reducing back porch +# to make shader scanlines visible +hdmi_timings=768 0 24 72 96 545 1 3 2 13 0 0 0 50 0 27043926 1 +machine_timing=pal-custom +# VICE cycles_per_second is 1108405, custom is 0.000632% faster +cycles_per_second=1108412 +scaling_params=384,272,768,544 + +# +# C64 +# + +[C64/NTSC/HDMI/VICE 720p@60Hz] +disable_overscan=1 +sdtv_mode=16 +hdmi_group=1 +hdmi_mode=4 +machine_timing=ntsc-hdmi +scaling_params=384,240,1152,720 + +[C64/NTSC/Composite/VICE 480p@60Hz] +disable_overscan=1 +sdtv_mode=16 +hdmi_group=1 +hdmi_mode=4 +machine_timing=ntsc-composite +scaling_params=364,240,600,480 + +[C64/PAL/HDMI/VICE 720p@50Hz] +disable_overscan=1 +sdtv_mode=18 +hdmi_group=1 +hdmi_mode=19 +machine_timing=pal-hdmi +scaling_params=384,240,1152,720 + +[C64/PAL/Composite/VICE 576p@50Hz] +disable_overscan=1 +sdtv_mode=18 +hdmi_group=1 +hdmi_mode=19 +machine_timing=pal-composite +scaling_params=384,272,648,544 + +# This matches the timing of a real NTSC machine but may +# not work on all monitors. +[C64/NTSC/HDMI/VICE 768x525@59.827Hz] +sdtv_mode=16 +hdmi_group=2 +hdmi_mode=87 +hdmi_timings=768 0 24 72 96 525 1 3 10 9 0 0 0 60 0 31416828 1 +machine_timing=ntsc-custom +# VICE cycles_per_second is 1022730, custom is 0.000587% faster +cycles_per_second=1022736 +scaling_params=384,246,768,492 + +# This matches the timing of a real PAL machine but may +# not work on all monitors. +[C64/PAL/HDMI/VICE 768x545@50.125Hz] +sdtv_mode=18 +hdmi_group=2 +hdmi_mode=87 +# Fudging intended 544 lines to 545 by reducing back porch +# to make shader scanlines visible +hdmi_timings=768 0 24 72 96 545 1 3 2 13 0 0 0 50 0 27091697 1 +machine_timing=pal-custom +# VICE cycles_per_second is 985248, custom is 0.000913% faster +cycles_per_second=985257 +scaling_params=384,272,768,544 + +# +# C128 +# + +[C128/NTSC/HDMI/VICE 720p@60Hz] +disable_overscan=1 +sdtv_mode=16 +hdmi_group=1 +hdmi_mode=4 +machine_timing=ntsc-hdmi +scaling_params=384,240,1152,720 +scaling_params2=864,228,1280,684 + +[C128/NTSC/Composite/VICE 480p@60Hz] +disable_overscan=1 +sdtv_mode=16 +hdmi_group=1 +hdmi_mode=4 +machine_timing=ntsc-composite +scaling_params=364,240,640,480 + +[C128/PAL/HDMI/VICE 720p@50Hz] +disable_overscan=1 +sdtv_mode=18 +hdmi_group=1 +hdmi_mode=19 +machine_timing=pal-hdmi +scaling_params=384,240,1152,720 +scaling_params2=864,240,1280,684 + +[C128/PAL/Composite/VICE 576p@50Hz] +disable_overscan=1 +sdtv_mode=18 +hdmi_group=1 +hdmi_mode=19 +machine_timing=pal-composite +scaling_params=384,272,648,544 + +# This matches the timing of a real NTSC machine but may +# not work on all monitors. +[C128/NTSC/HDMI/VICE 768x525@59.827Hz] +sdtv_mode=16 +hdmi_group=2 +hdmi_mode=87 +hdmi_timings=768 0 24 72 96 525 1 3 10 9 0 0 0 60 0 31416828 1 +machine_timing=ntsc-custom +# VICE cycles_per_second is 1022730, custom is 0.000587% faster +cycles_per_second=1022736 +scaling_params=384,246,768,492 +scaling_params2=674,228,674,456 + +# This matches the timing of a real PAL machine but may +# not work on all monitors. +[C128/PAL/HDMI/VICE 768x545@50.125Hz] +sdtv_mode=18 +hdmi_group=2 +hdmi_mode=87 +# Fudging intended 544 lines to 545 by reducing back porch +# to make shader scanlines visible +hdmi_timings=768 0 24 72 96 545 1 3 2 13 0 0 0 50 0 27091697 1 +machine_timing=pal-custom +# VICE cycles_per_second is 985248, custom is 0.000913% faster +cycles_per_second=985257 +scaling_params=384,272,768,544 +scaling_params2=674,272,674,544 + +# +# PLUS/4 & C16 +# + +[PLUS4/NTSC/HDMI/VICE 720p@60Hz] +disable_overscan=1 +sdtv_mode=16 +hdmi_group=1 +hdmi_mode=4 +machine_timing=ntsc-hdmi +scaling_params=384,232,1152,696 + +[PLUS4/NTSC/Composite/VICE 480p@60Hz] +disable_overscan=1 +sdtv_mode=16 +hdmi_group=1 +hdmi_mode=4 +machine_timing=ntsc-composite +scaling_params=360,232,640,464 + +[PLUS4/PAL/HDMI/VICE 720p@50Hz] +disable_overscan=1 +sdtv_mode=18 +hdmi_group=1 +hdmi_mode=19 +machine_timing=pal-hdmi +scaling_params=384,240,1152,720 + +[PLUS4/PAL/Composite/VICE 576p@50Hz] +disable_overscan=1 +sdtv_mode=18 +hdmi_group=1 +hdmi_mode=19 +machine_timing=pal-composite +scaling_params=364,280,640,560 + +# This matches the timing of a real NTSC machine but may +# not work on all monitors. +[PLUS4/NTSC/HDMI/VICE 768x525@59.923Hz] +sdtv_mode=16 +hdmi_group=2 +hdmi_mode=87 +hdmi_timings=768 0 24 72 96 525 1 3 10 9 0 0 0 60 0 31467501 1 +machine_timing=ntsc-custom +# VICE cycles_per_second is 1789772, custom is 0.001006% faster +cycles_per_second=1789790 +scaling_params=384,246,768,492 + +# This matches the timing of a real PAL machine but may +# not work on all monitors. +[PLUS4/PAL/HDMI/VICE 768x545@49.860Hz] +sdtv_mode=18 +hdmi_group=2 +hdmi_mode=87 +# Fudging intended 544 lines to 545 by reducing back porch +# to make shader scanlines visible +hdmi_timings=768 0 24 72 96 545 1 3 2 13 0 0 0 50 0 26948856 1 +machine_timing=pal-custom +# VICE cycles_per_second is 1773447, custom is 0.001522% slower +cycles_per_second=1773420 +scaling_params=384,272,768,544 + +# PLUS4EMU Is only available for Pi3. It is a more +# accurate Plus/4 emulator but requires more CPU. +# These options will not show up on any other Pi model. + +[PLUS4EMU/NTSC/HDMI/Plus4Emu 720p@60Hz] +disable_overscan=1 +sdtv_mode=16 +hdmi_group=1 +hdmi_mode=4 +machine_timing=ntsc-hdmi +scaling_params=384,240,1152,720 + +[PLUS4EMU/NTSC/Composite/Plus4Emu 480p@60Hz] +disable_overscan=1 +sdtv_mode=16 +hdmi_group=1 +hdmi_mode=4 +machine_timing=ntsc-composite +scaling_params=364,240,640,480 + +[PLUS4EMU/PAL/HDMI/Plus4Emu 720p@50Hz] +disable_overscan=1 +sdtv_mode=18 +hdmi_group=1 +hdmi_mode=19 +machine_timing=pal-hdmi +scaling_params=384,240,1152,720 + +[PLUS4EMU/PAL/Composite/Plus4Emu 576p@50Hz] +disable_overscan=1 +sdtv_mode=18 +hdmi_group=1 +hdmi_mode=19 +machine_timing=pal-composite +scaling_params=364,272,640,544 + +# +# PET +# + +[PET/NTSC/HDMI/VICE 1080p@60Hz] +disable_overscan=1 +sdtv_mode=16 +hdmi_group=1 +hdmi_mode=16 +machine_timing=ntsc-hdmi +scaling_params=376,270,1504,1080 +scaling_params2=696,270,1392,1080 + +[PET/NTSC/Composite/VICE 480p@60Hz] +disable_overscan=1 +sdtv_mode=16 +hdmi_group=1 +hdmi_mode=4 +machine_timing=ntsc-composite + +[PET/PAL/HDMI/VICE 1080p@50Hz] +disable_overscan=1 +sdtv_mode=18 +hdmi_group=1 +hdmi_mode=31 +machine_timing=pal-hdmi +scaling_params=376,270,1504,1080 +scaling_params2=696,270,1392,1080 + +[PET/PAL/Composite/VICE 576p@50Hz] +disable_overscan=1 +sdtv_mode=18 +hdmi_group=1 +hdmi_mode=19 +machine_timing=pal-composite + +# This matches the timing of a real NTSC machine but may +# not work on all monitors. +# Remember to manually specify a 60Hz editor ROM in vice.ini! +[PET/NTSC/HDMI/VICE 768x525@60.060Hz] +sdtv_mode=16 +hdmi_group=2 +hdmi_mode=87 +# Timing set for exactly 16650 cycles/frame, Circle cycles/second is +# ignored on PET for actual pixel rate! +hdmi_timings=768 0 24 72 96 525 1 3 10 9 0 0 0 60 0 31538738 1 +machine_timing=ntsc-custom +# PET is fixed at 1000000 cycles/sec, setting only to make BMPET happy +cycles_per_second=1014773 +scaling_params=384,246,768,492 +scaling_params2=674,228,674,456 + +# This matches the timing of a real PAL machine but may +# not work on all monitors. +# Remember to manually specify a 50Hz editor ROM in vice.ini! +[PET/PAL/HDMI/VICE 768x545@49.875Hz] +sdtv_mode=18 +hdmi_group=2 +hdmi_mode=87 +# Timing set for exactly 20050 cycles/frame, Circle cycles/second is +# ignored on PET for actual pixel rate! +# Fudging intended 544 lines to 545 by reducing back porch +# to make shader scanlines visible +hdmi_timings=768 0 24 72 96 545 1 3 2 13 0 0 0 50 0 26956913 1 +machine_timing=pal-custom +# PET is fixed at 1000000 cycles/sec, setting only to make BMPET happy +cycles_per_second=999096 +scaling_params=384,272,768,544 +scaling_params2=674,272,674,544 diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/start.elf b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/start.elf new file mode 100644 index 00000000..bd76b3e6 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/BMC 4.2 -autoswitch/BMC 4.2 -autoswitch/start.elf differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/Bill-of-Materials-Pimmodore-64 v5.xlsx b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/Bill-of-Materials-Pimmodore-64 v5.xlsx new file mode 100644 index 00000000..f41448b0 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/Bill-of-Materials-Pimmodore-64 v5.xlsx differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/Manual de Uso Keymmodore_PImmodore 64 v15.pdf b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/Manual de Uso Keymmodore_PImmodore 64 v15.pdf new file mode 100644 index 00000000..1ade10d2 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/Manual de Uso Keymmodore_PImmodore 64 v15.pdf differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/README.md b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/README.md new file mode 100644 index 00000000..e4898fc4 --- /dev/null +++ b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/README.md @@ -0,0 +1,138 @@ +PImmodore-64 + +## A cool way to put a Raspberry Pi 3B inside your Commodore-64 case. + +Pimmodore-64 uses the [Keymmodore-64](https://github.com/K-rnivoro/Keymmodore-64) keyboard interface (Pi Pico) so the keyboard is 100% functional. It's a perfect setup for running [BMC64](https://accentual.com/bmc64/), THE Commodore emulator for the Raspberry Pi 3 (any VICE version works well too). +Functionally speaking, it's like running an original C-64... or C-128, or Plus/4, or PET Graphics, or PET Business. Keyboard will reconfigure itself, allowing you to access all keys, for ANY of the emulated computers. + +There is also a [modified version of BMC64](https://github.com/slagoela/bmc64) made by Sergio Lagoela, able to automatically switch the Compatibility Mode according the computer being emulated, including the color of the RGB LED. + +image + +![Detalle trasero](https://github.com/user-attachments/assets/cd444970-57af-4e29-af0e-3bd7a801e7b9) + + +![fotos consola-26](https://github.com/user-attachments/assets/19f236e3-c035-452e-86e8-feb3abb3660d) + + +image + + +To build a Pimmodore-64, you need: + +- Build a [Keymmodore-64](https://github.com/K-rnivoro/Keymmodore-64) interface first, including the RGB LED. +- A Raspberry Pi 3B o 3B+. +- A MicroSD Card. +- Any power supply greater than 6VDC, with 15 Watts minimum. +- A Step-down Power converter +- Panel Barrel connector +- Rocker switch +- 2 Joysticks connectors (male DB-9) +- Male 4-pole 3.5mm plug, male RCA and female stereo 3.5mm plug (optional for analog outputs). +- HDMI extension cable. +- 2 USB extension cables. +- A 3D Printer or a 3D Printing service. +- Dupont cables and connectors. +- Some screws. + +Look for the .xlsx file for the detailed BOM. + +## Printing the STL Files + +The pieces are designed to fit any version of the legendary "Breadbin" Commodore-64 case. It won't fit a C-64C (I don't have one to design it). +The project is 100% reversible, no need to drill, make holes or even glue. It uses the same mount system designed for the original PCB board. + +All pieces are easy to print with a 0.4mm nozzle and a 0.2 mm layer height. For better results, do not flip the pieces, print them as provided. The .3mf file was made for my Bambulab A1, in case you find it useful. +There is no need for «Everywhere» support if you 3D Printer is able to do good «bridging» (most printers do). Just use "Normal" support and «Only from the buildplate». +The only piece who need "Tree" support is the USB Ports cover, and just because of the top lock arm, not for the square holes. +The Pico holder includes a little support, where the board back edge rests, just trim it before placing in. + +## Flashing and connecting the Keymmodore-64 interface Pi Pico, to the Pi 3B. + +At my project [Keymmodore-64](https://github.com/K-rnivoro/Keymmodore-64) you can find detailed information of how to set up a Raspberry Pi Pico as C-64 keyboard interface. + +Besides the cable connecting the keyboard and the RGB LED, there are also three wires from the Pico, they are used for sensing what type of computer is BMC64 emulating. With this information, the Pico can switch to the corresponding mode, avoiding the manual switch with the C= and Function Keys. As you can see, these three pins have to be connected to GPIO 9, 10 and 11 of the R-Pi 3B. +This is not mandatory, if you do not connect those three pins, you can always use the manual switching, including the "PC Compatible Mode". + +### This autoswitch feature works only with the [modified version of BMC64](https://github.com/slagoela/bmc64) made by Sergio Lagoela, it is not included in the oficial release (at least until now). + +## Powering the Raspberry Pi + +In order to being "agnostic" to the Power Supply, this project uses a Step Down Power Converter, so you can use almost any Power Brick with more than 6V and 15 Watts, a generic 12VDC with 2A will do. +Of course, you need to regulate the Converter BEFORE plug in it to the Raspberry. 5.2VDC will be OK. +Don't try to use a 5VDC power supply directly, the voltage drop of the connector and switch will result in 4.9VDC or less coming into de Pi, therefore the common yellow ligthing bolt sign will appear, and video and audio stuttering will happen, even with "Raspberry Certified Power Supplies" +Believe me, avoiding the Converter and using a 5VDC Power Supply is not advisable, unless you connect it directly, with no switch in between. + +### Remember: Do not plug your Raspberry Pi until you have regulated the Voltage output to 5.2V first!!!! + +## Connecting the Joysticks + +Unless you have wired the joysticks ports to the Pico interface as mentioned in the Keymmodore-64 project, you can connect them to the Raspberry Pi GPIO pins. + +As explained in the [BMC64 website](https://accentual.com/bmc64/), two Atari-like joysticks are supported by the emulator. Here is the wiring according the documentation: + +image + + +## Connecting the analog video and audio outputs (optional) + +The Raspberry Pi 3B includes analog video and stereo audio output. For that you need to wire a 4-pole 3.5mm plug, to a female RCA connector for video, and a miniplug stereo female connector for audio. +BMC64 will output NTSC or PAL-B video standard, according what kind of computer are being emulated. +This is optional. You can use your Pimmodore-64 only with HDMI. There is a .stl version or the frame without the analog outputs for that case. + +Keep in mind, the 4-pole miniplug has this (strange) pinout: + +image + + +## Setting up the BMC64 Emulator + +For running BMC64 with the Pi connected to the Pico, you'll need the microSD card with: + +1 - The BMC64 Emulator. You can use the modified or the standard BMC64 version, however as explained before, the autoswitching Mode feature won't work in the standard version. + +2 - The Kernal's ROMs. + +3 - The .vkm files in order to have a fully working Keyboard matching all 8-bit emulated computers. Replace the original "positional" .vkm with the new ones, + +## How to popup the BMC64 Emulator Menu + +For entering the BMC64 Menu you need to press F12, as explained in Keymmodore-64 project, in PC Compatible Mode (green LED), you can get F12 by pressing C= and "Minus" key. However, once you are in any Emulator Mode, you can press C= and F7 key for entering the Menu. +Press Left Arrow Key to go back, or exit the Menu. + +## How to set up BMC64 Emulator + +1 - Enter BMC64 Menu, go to "Keyboard" and and change from "Symbolic" to "Positional". + +2 - If you have wired the joystick ports to the PI's GPIOs, go to "Joyport" and select GPIO Bank 1 and GPIO Bank 2 for Port 1 and Port 2 respectively. If you have wired the ports to the Pico instead, select Keyset 1 and Keyset 2 and then configure those Keysets below in the same menu. + +3 - Go to GPIO and check Config is set in "#1 (Nav+Joy)". + + +In order to make the whole process easier, I've uploaded a complete version of Lagoela's BMC64 autoswitching version, including the ROMS and the VKM files. So you only need to setup a few things. +However, I strongly recommend to read the [BMC64 readme](https://github.com/randyrossi/bmc64/blob/master/README.md) file for a good understanding of the BMC64 options. + +## How to test your keyboard and Joysticks. + +I strongly suggest you to use the [Anykey program by T-Pau](https://github.com/T-Pau/Anykey). It has separate versions of programs for every 8 bit Commodore Computer. Very useful. + + +## Manual (en español). + +I've written a short manual in spanish you can find useful to print (or translate). + + + + + + + + + + + + + + + + diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/STL Files/Pimmodore v45 HDMI generic.stl b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/STL Files/Pimmodore v45 HDMI generic.stl new file mode 100644 index 00000000..e10a5d8f Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/STL Files/Pimmodore v45 HDMI generic.stl differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/STL Files/Pimmodore v45 Pico retainer.stl b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/STL Files/Pimmodore v45 Pico retainer.stl new file mode 100644 index 00000000..9078fd88 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/STL Files/Pimmodore v45 Pico retainer.stl differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/STL Files/Pimmodore v45 SD Card.stl b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/STL Files/Pimmodore v45 SD Card.stl new file mode 100644 index 00000000..ef46e378 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/STL Files/Pimmodore v45 SD Card.stl differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/STL Files/Pimmodore v45 USB Cover.stl b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/STL Files/Pimmodore v45 USB Cover.stl new file mode 100644 index 00000000..e201425f Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/STL Files/Pimmodore v45 USB Cover.stl differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/STL Files/Pimmodore v45 left frame with analog outputs.stl b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/STL Files/Pimmodore v45 left frame with analog outputs.stl new file mode 100644 index 00000000..9ae4aac7 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/STL Files/Pimmodore v45 left frame with analog outputs.stl differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/STL Files/Pimmodore v45 left frame without analog outputs.stl b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/STL Files/Pimmodore v45 left frame without analog outputs.stl new file mode 100644 index 00000000..6b9946ec Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/STL Files/Pimmodore v45 left frame without analog outputs.stl differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/STL Files/Pimmodore v45 right frame for Pico.stl b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/STL Files/Pimmodore v45 right frame for Pico.stl new file mode 100644 index 00000000..2da8f30a Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/STL Files/Pimmodore v45 right frame for Pico.stl differ diff --git a/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/STL Files/Pimmodore.3mf b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/STL Files/Pimmodore.3mf new file mode 100644 index 00000000..5880bfc8 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/Pimmodore-64/STL Files/Pimmodore.3mf differ diff --git a/trunk/workspace/BMC/Pimmodore-64/SRC/Keymmodore-64-1.0.0/Keymmodore-64-1.0.0/BMC64 VKM.zip b/trunk/workspace/BMC/Pimmodore-64/SRC/Keymmodore-64-1.0.0/Keymmodore-64-1.0.0/BMC64 VKM.zip new file mode 100644 index 00000000..dcb2e3e1 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/SRC/Keymmodore-64-1.0.0/Keymmodore-64-1.0.0/BMC64 VKM.zip differ diff --git a/trunk/workspace/BMC/Pimmodore-64/SRC/Keymmodore-64-1.0.0/Keymmodore-64-1.0.0/QMK_key64_rp2040.zip b/trunk/workspace/BMC/Pimmodore-64/SRC/Keymmodore-64-1.0.0/Keymmodore-64-1.0.0/QMK_key64_rp2040.zip new file mode 100644 index 00000000..fb09501a Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/SRC/Keymmodore-64-1.0.0/Keymmodore-64-1.0.0/QMK_key64_rp2040.zip differ diff --git a/trunk/workspace/BMC/Pimmodore-64/SRC/Keymmodore-64-1.0.0/Keymmodore-64-1.0.0/README.md b/trunk/workspace/BMC/Pimmodore-64/SRC/Keymmodore-64-1.0.0/Keymmodore-64-1.0.0/README.md new file mode 100644 index 00000000..f1dae3ff --- /dev/null +++ b/trunk/workspace/BMC/Pimmodore-64/SRC/Keymmodore-64-1.0.0/Keymmodore-64-1.0.0/README.md @@ -0,0 +1,243 @@ +# Keymmodore-64 +## An interface for converting a Commodore-64 Keyboard to USB, compatible with any Operative System, and C-64, C-128, Plus/4 and PET emulators. + +The Keymmodore-64 project is a hardware interface to convert keyboards and joysticks of Commodore C-64 computer, in a USB (HID) device, able to be connected to any "Host" computer or device, like: PC (Windows/Linux), Raspberry Pi, Mac, or even Android. Therefore, the keyboard works like any other keyboard, optionally you can connect old Atari-like joysticks and their inputs would be translated to keystrokes too. + +In order to make a C-64 keyboard productive, Keymmodore-64 includes a lot of key combinations, like using the Commodore key as Function Key. This way, your C-64 Keyboard includes almost all keys you need for your everyday work. + +Besides the standard "PC Mode", Keymmodore-64 also includes five modes optimized for all 8 bit Commodore Computers emulators, like [VICE](https://vice-emu.sourceforge.io/) or [BMC64](https://accentual.com/bmc64/). With these modes, you can easily use your C-64 keyboard not even for emulating a Commodore-64 or VIC-20, but also a Commodore-128, a Plus/4 (or C-16), and even PET Computers with Graphics or Business keyboards, and having 100% keys functionality. + +Keymmodore-64 is developed using a Raspberry Pi Pico and the powerful [QMK Firmware](https://qmk.fm/), so it is not a simple .ino sketch, or a MicroPython code. It runs the same type of code than many gaming keyboards have, and you can modifiy it if you want. As usual, just load the .uf2 file in your R-Pi Pico according your RGB LED (common anode or cathode) + +## A very important Note + +In order to Keymmodore-64 to work correctly, you need two things: + +- Set your Operative System Keyboard layout to "US" or "US International". Do not use any other layout. "UK", "Spanish" or any other regional layout won't work properly. +- Download and use the .vkm files for your emulator. Set them as "User Positional". This make Emulation Modes work correctly with the Emulators. The default .vkm files do not work (being symbolic or positional). + +### "The Matrix Reloaded" + +The C-64 keyboard matrix is connected directly to the pins of the Pi Pico. However if you want to add Atari-like joysticks to your project, you need to add some wiring in between the keyboard connector and the Pico. As you can see in the matrix diagram below, P1 and P2 use the "I" file and the "8th" row of the RESTORE key. Remember, THIS IS OPTIONAL (just because there are some free crosspoints). If your are not interested in those old joysticks, or you plan to use a Raspberry (like a [Pimmodore-64](https://github.com/K-rnivoro/Pimmodore-64)), you do not need to add this extra complexity. + +image + +This is the modified schematics for connecting the C-64 keyboard and a RGB LED to the Pico (for common cathode RGB LED, just connect the common pin to any GND). There are also three pins reserved for an implementation with a Raspberry Pi 3, as you can see in my [Pimmodore-64](https://github.com/K-rnivoro/Pimmodore-64) project. Both RGB LED and the R-Pi 3 pins are not mandatory, however the RGB LED would be very cool and useful informing you which mode is the keyboard working, remember there are 6 different modes! + +image + +If you want to add the Atari-like joysticks, as mentioned, you will need to add some wiring in parallel in order to add the missing crosspoints to the matrix. And just in case, joysticks pinout is also shown. + +image image + + +## Hot to switch to Compatible Modes + +When Keymmodore-64 is powered from USB, the LED will go green, letting you know it's in "PC Compatible Mode" (explained below). From there you can switch to other Modes, compatibles with different VICE Emulators (VIC-20/C-64, C-128. Plus/4, PET Graphics/Business) + +Pressing and holding Commodore Key (C=) along with F1, F3 or F5 keys, it will switch to different Modes (actually keyboards layouts), depending what computer you want to emulate in the emulator: + +- F1: Commodore-64, VIC-20 and Plus/4 Compatible Mode. +- F3: Commodore-128 Compatible Mode. +- F5: PET Graphics Keyboard Compatible Mode. +- F5 (again): PET Business Keyboard Compatible Mode (you need to be in PET Graphics Mode) +- CONTROL: Back to PC Compatible Mode. + +To avoid any confussion, it is not possible to switch between two Emulator Modes (except PET Graphics to Business) . You have to switch back to PC Compatible Mode first by pressing C= and CONTROL. Also remember you need the configuration keyboard layout files for your emulator to work properly. + +If you wired the RGB LED it will show you which is the active mode as described below. + +### RGB LED Color code + +- PC Compatible Mode: GREEN +- Commodore-64, VIC-20 and Plus/4 Compatible Mode: RED +- Commodore-128 Compatible Mode: BLUE +- PET Graphics Keyboard Compatible Mode: YELLOW +- PET Business Keyboard Compatible Mode: PURPLE + +In PC Compatible Mode and Commodore-128 Mode, while pressing the Right SHIFT (Modifier Key), the LED will light CYAN. + +In any Mode, while pressing the Commodore Key (C=) the LED will light WHITE. + +## PC Compatible Mode + +In this Mode, the C-64 keyboard acts like a standard PC Keyboard, keeping the original layout as far as possible, but also remapping non-existent ones to modern functions. Considering the C-64 had no Numeric KeyPad, nor complete set of Function Keys (F1 a F12), the paradigm is similar to “60%” Keyboards, using Special Function Keys (Fn y Fn2) allowing the same key having more than one function. In the following pic, the PC Mode layout is shown. This is the mode when you plug your keyboard. In light brown you can see the keys having different assignments than the original C-64 Keyboard, as described below. + +image + +### EXCLUSIVE C-64 KEYS: +- RUN/STOP works as Left ALT. +- RESTORE works as BACKSPACE +- ← (Left Arrow) works as ESCAPE, or ~ (diacritic) if SHIFT is held. +- £ works as \ (inverted slash), o | (pipe) if SHIFT is held. +- 0 key works as ^ (circumflex accent) when SHIFT is held. +- ↑ (Up Arrow) moves the cursor up. +- – (Minus) works as _ (underscore) when SHIFT is held. +- Cursor keys (↑/↓) y (←/→) will work down (↓) and right (→) unless right SHIFT is being pressed as described below. +- @ (At), * (Asterisk), = (Equal) and + (Plus) will work as such, regardless SHIFT being held or not. + + +### LEFT CONTROL and TAB in one key. + +This is maybe one of the coolest feature of QMK Firmware. Due to the fact that the CONTROL key is located in the same place than TAB in a regular PC Keyboard, Keymmodore-64 implements a dual role fot this key. If you tap it (meaning press and release without pressing another key) it will work as a TAB; however if you press and hold, and press another key, it will work as a CONTROL allowing the combination with other keys, like CTRL+C, CTRL+V, etc. Cool uh? + + +### LEFT SHIFT AND SHIFT LOCK. + +The Left SHIFT works like any standard PC Keyboard, allowing access to capital letters and additional characters as usual. The SHIFT LOCK key is actually wired to the Left SHIFT, but with a mechanical lock so it is not the same than a real CAPS LOCK, affecting also the 0 a 9 keys. + + +### COMMODORE (C=) key as FUNCTION “Fn” key. + +The key with the C= symbol on it, generally called «Commodore Key», works also a Modification key allowing to access to a different layers and function like a “60%” Style Keyboards. + +In the following diagram you can see in white which keys will change its function when Fn (C=) is pressed. Some functions are already in the legends of the keys, and others are added to better productivity. + +image + +So, pressing Commodore key: + +- 1 to 0 keys, as well as + y – will work as F1 to F12 +- HOME key works as END +- INST/DEL key works as INSERT as the top legend. +- ↑ and RESTORE keys works as PAGE UP y PAGE DOWN respectively. +- ↓ and → cursor keys work up (↑) and left (←) respectively, as the top legend described. +- Q and E, as well as U and O keys, work as PAGE UP and PAGE DOWN respectively. +- WASD and IJKL work as directional cursor ↑ ←↓ → respectively. +- ← key work as ` (grave tilde), and ~ (diacritic). +- : (colon) and ; (semicolon) work as { and } (brackets) respectively. +- P key works as PRINT SCREEN. +- @ (at) key works enabling and disabling SCROLL LOCK. +- * (asterisk) key works enabling and disabling NUM LOCK (very important for joysticks). +- < (less than) y > (greater than) decrease and increase audio volume respectively (*). +- / (slash) mutes the audio output (*). +- C fires the Calculator (if supported by the Operative System). + +### RIGHT SHIFT AS FUNCTION “Fn2” Key. + +The RIGHT SHIFT besides being a regular Shift for most of the keys, works also a Function as explained: + +image + +Pressing RIGHT SHIFT: +- ↓ (Cursor Down) and → (Cursor Right) keys invert their direction, working as Up (↑) y Left (←) respectively, as the top legend describe (in the same way C-64 does). +- The F1, F3, F5 and F7 function keys work as F2, F4, F6 and F8, as the top legend describe (in the same way C-64 does). + +## Commodore-64, VIC-20 and Plus/4 Compatible Mode. + +As explained before, pressing C= Key and F1, the interfase switches to this compatible Mode. Depending the computer being emulated in the emulator (and the right .vkm files), you will have the following layouts: + +### COMMODORE-64 AND VIC-20 + +image + +In this Mode, the keyboard work exactly as it was original conceived for C-64 or VIC-20, including all the symbols and legends of the keys. Remember to press C= and CONTROL to go back to PC Compatible Mode when you exit your emulator. + +### COMMODORE PLUS/4 or COMMODORE-16 (or any other C-264 Model) + +Emulating a Plus/4 or similar machine, the C-64 keyboard will behave like a C-16 keyboard. With the intention to make it intuitive, instead of keeping the original position of keys of a C-16 keyboard, I’ve changed the location of some keys keeping the original C-64 layout as much as possible. + +image + +As you can see, location of – (minus), * (asterisk), + (add), = (equal), £ (pound) and CLEAR/HOME are the same than C-64. + +The changes are: + +- The original C-64 cursor keys work as ↓ (Down) and → (Right). SHIFT won’t invert the direccion of these two as it does in the C-64. +- ↑ (Arrow Up) and RESTORE work as ↑ (Up) and ← (Left) respectively. +- F1, F3, F5 and F7 work as F1, F2, F3 and HELP respectively, including switching to F4, F5, F6 and F7 if SHIFT is pressed. + +Remember to press C= and CONTROL keys to switch back to PC Compatible Mode. + +## Commodore-128 Compatible Mode. + +Due to having more keys than a C-64 keyboard, the RIGHT SHIFT is implemented as a FUNCTION or Modifier Key, allowing to to access to the propietary keys of the C-128 which are mapped on the C-64 keyboard in this way: + +image + +So, pressing RIGHT SHIFT and the 1/! key, will result in a "1" instead of a "!", because it corresponds to the Key 1 of the Numerical Pad, not the regular 1 Key. + +Remember to press C= and CONTROL keys to switch back to PC Compatible Mode. + +## Commodore PET Graphics Keyboard Compatible Mode. + +Commodore PET has two different keyboards layout, so both need to be emulated separately. + +The first mode allows to emulate the so called «Graphics» keyboards, the one with PETSCII graphics used by the early Commodore PET Series Computer. This Graphics keyboard has an odd layout where every symbol has their own key, and also there is just one PETSCII graphics per key instead of two as found in C-64 Keyboard. +Look how weird it is: + +image + +In this Mode, the layout of your C-64 keyboard will be the following: + +image + + +- CTRL key works as OFF/RVS. +- £ (pound) key works a \ (backslash). +- RESTORE key works as second INST/DEL. +- C= does not exist in PET Graphics Keyboard, however we will use it to access PETSCII graphics set as explained below. +- Function Keys (F1 to F8) do not exist in PET Graphics Keyboard, therefore they have no function. + +### ACCESS TO SYMBOL KEYS AND PETSCII GRAPHICS + +As mentioned, every symbol have it's own key. In order to access those keys, the C= Key is used a FUNCTION or Modifier Key. So, for symbols in the upper part of the key (or "shifted") just press C= and the key with the symbol you want. . + +Regarding PETSCII graphics, the character set is identical to the C-64, despite having just one PETSCII for each key. Keymmodore-64 implements a cool feature, able to «merge» again those two PETSCII in a single key, with the same layout than the C-64. Therefore, you can access both in the usual way: The left side ones with the C= key, and the right side ones with any SHIFT key. This also works for the π symbol of the Up Arrow Key (↑). + +Joining both features, in the following diagram you can see in green the functions with C= key, and in yellow the function with any of the two SHIFT, which matches most of the layout of the C-64 keyboard. + + +image + + +Pressing C= and CONTROL keys switch back to PC Compatible Mode. However, pressing C= and F5 keys again, switch to PET Business Keyboard Compatible Mode as explained below. + + +## Commodore PET Business Keyboard Compatible Mode. + +This second mode allows to emulate the so called «Business» keyboard (the one with upper and lower case letters) used by the later Commodore PET Series Computer. This keyboard has some particular symbolic only keys like Brackets ([ ]), minus and equal (- =), asterisk and colon (: *). It's weird like the Graphics keyboard, but not that weird. + +image + +Mapping the Business keyboard to the C-64 keyboard is pretty straightforward, although some keys change its position. + +You can see the differences in the following diagram: + +image + + +- CTRL key works as TAB. +- £ (Pound) key works as \ (backslash). +- RESTORE key works as second INST/DEL. +- F1 key works as ESC. +- F3 key works as OFF/RVS. +- F5 key works as REPEAT. +- F7 key have no function. + +### ACCESS TO NUMERIC PAD AND BRACKET KEYS + +Keymmodore-64 implements a special layer with the C= key for those special keys. You can see in green the keys that change its function if you keep C= key pressed. + +image + +As usual, C= and CONTROL keys switch back to PC Compatible Mode. + + + + + + + + + + + + + + + + + + + diff --git a/trunk/workspace/BMC/Pimmodore-64/SRC/Keymmodore-64-1.0.0/Keymmodore-64-1.0.0/VICE VKM.zip b/trunk/workspace/BMC/Pimmodore-64/SRC/Keymmodore-64-1.0.0/Keymmodore-64-1.0.0/VICE VKM.zip new file mode 100644 index 00000000..8b29c254 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/SRC/Keymmodore-64-1.0.0/Keymmodore-64-1.0.0/VICE VKM.zip differ diff --git a/trunk/workspace/BMC/Pimmodore-64/SRC/Keymmodore-64-1.0.0/Keymmodore-64-1.0.0/key64_rp2040_common_anode.uf2 b/trunk/workspace/BMC/Pimmodore-64/SRC/Keymmodore-64-1.0.0/Keymmodore-64-1.0.0/key64_rp2040_common_anode.uf2 new file mode 100644 index 00000000..1479e2c8 Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/SRC/Keymmodore-64-1.0.0/Keymmodore-64-1.0.0/key64_rp2040_common_anode.uf2 differ diff --git a/trunk/workspace/BMC/Pimmodore-64/SRC/Keymmodore-64-1.0.0/Keymmodore-64-1.0.0/key64_rp2040_common_cathode.uf2 b/trunk/workspace/BMC/Pimmodore-64/SRC/Keymmodore-64-1.0.0/Keymmodore-64-1.0.0/key64_rp2040_common_cathode.uf2 new file mode 100644 index 00000000..8730a2da Binary files /dev/null and b/trunk/workspace/BMC/Pimmodore-64/SRC/Keymmodore-64-1.0.0/Keymmodore-64-1.0.0/key64_rp2040_common_cathode.uf2 differ