TFMSX rev 2 features & problems
Moderators: terriblefire, Terriblefire Moderator
Re: TFMSX rev 2 features & problems
Ouch... I found another problem from my machine... I was wondering why I can't make my machine to boot on MSX2+ mode. On Friday I received my PLCC32 adapter, so today I took a closer look of the problem and it seems that the boot logo code was missing, that caused TFMSX to crash on boot. How ever the bigger problem is that there is no enough space to fix this due to fact that last 16kB of the dip selectable 64kB block seems not to be mapped to MSX memory at all!
I can understand if you don't want to support burning full KANJI-BASIC or any extra stuff like BASIC compiler or joystick disk drive, but it would be nice if you would have enough memory space to put even full boot logo in to the ROMs!!! For now I solved the issue by removing "M" and "S" from the MSX2+ boot logo so that you get just a big simple "X" on the memory counter / title screen. The animation is also replaced with simple fade. With this simplified logo I was able to fit all the functionality back to 48KB, but it was a very tight fit.
Here is the ROM that I wrote today to my TFMSX:
https://msx.fi/temp/NEW_TFMSX_ver1.zip
The available configs in it are:
0 MSX2 (English) with added memory counter
1 MSX2 (Finnish/Swedish)
2 MSX2+ Japanese (60Hz)
3 MSX2+ Finnish/Swedish (50Hz)
At least on MSX2+ setups I've added possibility to switch between 50Hz/60Hz during boot time by holding down "H"-key until beep.
Another thing I noticed while playing with these ROMs is that there is no RAM on bit 7 in I/O port #F4... Not a big thing at all, but likely easy to fix as well. Normally this bit is used by MSX2+ BIOS to distinguish hard boot from soft boot.
I can understand if you don't want to support burning full KANJI-BASIC or any extra stuff like BASIC compiler or joystick disk drive, but it would be nice if you would have enough memory space to put even full boot logo in to the ROMs!!! For now I solved the issue by removing "M" and "S" from the MSX2+ boot logo so that you get just a big simple "X" on the memory counter / title screen. The animation is also replaced with simple fade. With this simplified logo I was able to fit all the functionality back to 48KB, but it was a very tight fit.
Here is the ROM that I wrote today to my TFMSX:
https://msx.fi/temp/NEW_TFMSX_ver1.zip
The available configs in it are:
0 MSX2 (English) with added memory counter
1 MSX2 (Finnish/Swedish)
2 MSX2+ Japanese (60Hz)
3 MSX2+ Finnish/Swedish (50Hz)
At least on MSX2+ setups I've added possibility to switch between 50Hz/60Hz during boot time by holding down "H"-key until beep.
Another thing I noticed while playing with these ROMs is that there is no RAM on bit 7 in I/O port #F4... Not a big thing at all, but likely easy to fix as well. Normally this bit is used by MSX2+ BIOS to distinguish hard boot from soft boot.
- arkadiusz.makarenko
- Moderator Team
- Posts: 1192
- Joined: Wed Jun 19, 2019 7:36 am
- Location: Edinburgh
Re: TFMSX rev 2 features & problems
It looks that 5 keys are not mapped correctly, and some annoyingly in wrong position.
I will try to chaise which ones need to be remapped.
Ps
Need to save this program to floppy
I will try to chaise which ones need to be remapped.
Ps
Need to save this program to floppy
Do not trust people. They are capable of greatness.
~ Stanislaw Lem
~ Stanislaw Lem
-
- Moderator Team
- Posts: 5291
- Joined: Mon Aug 28, 2017 10:56 pm
- Location: Glasgow, UK
Re: TFMSX rev 2 features & problems
From memory i map the full 64 as a 32K rom, 16k subrom and the final 16k is mapped as a DOS rom. This was so MSX2 could have a DOS rom. I guess DOS comes on the floppy controllers so i could put this elsewhere?NYYRIKKI wrote: ↑Mon Oct 16, 2023 4:16 am Ouch... I found another problem from my machine... I was wondering why I can't make my machine to boot on MSX2+ mode. On Friday I received my PLCC32 adapter, so today I took a closer look of the problem and it seems that the boot logo code was missing, that caused TFMSX to crash on boot. How ever the bigger problem is that there is no enough space to fix this due to fact that last 16kB of the dip selectable 64kB block seems not to be mapped to MSX memory at all!
I can understand if you don't want to support burning full KANJI-BASIC or any extra stuff like BASIC compiler or joystick disk drive, but it would be nice if you would have enough memory space to put even full boot logo in to the ROMs!!! For now I solved the issue by removing "M" and "S" from the MSX2+ boot logo so that you get just a big simple "X" on the memory counter / title screen. The animation is also replaced with simple fade. With this simplified logo I was able to fit all the functionality back to 48KB, but it was a very tight fit.
Here is the ROM that I wrote today to my TFMSX:
https://msx.fi/temp/NEW_TFMSX_ver1.zip
The available configs in it are:
0 MSX2 (English) with added memory counter
1 MSX2 (Finnish/Swedish)
2 MSX2+ Japanese (60Hz)
3 MSX2+ Finnish/Swedish (50Hz)
At least on MSX2+ setups I've added possibility to switch between 50Hz/60Hz during boot time by holding down "H"-key until beep.
Another thing I noticed while playing with these ROMs is that there is no RAM on bit 7 in I/O port #F4... Not a big thing at all, but likely easy to fix as well. Normally this bit is used by MSX2+ BIOS to distinguish hard boot from soft boot.
EDIT: Ops looks like i disabled mapping the dos rom.
———
"It is not necessarily a supply voltage at no load, but the amount of current it can provide when touched that
indicates how much hurting you shall receive."
"It is not necessarily a supply voltage at no load, but the amount of current it can provide when touched that
indicates how much hurting you shall receive."
- arkadiusz.makarenko
- Moderator Team
- Posts: 1192
- Joined: Wed Jun 19, 2019 7:36 am
- Location: Edinburgh
Re: TFMSX rev 2 features & problems
Keyboard codes for reference
Code: Select all
#define KEY_NONE 0x00
#define KEY_ERRORROLLOVER 0x01
#define KEY_POSTFAIL 0x02
#define KEY_ERRORUNDEFINED 0x03
#define KEY_A 0x04
#define KEY_B 0x05
#define KEY_C 0x06
#define KEY_D 0x07
#define KEY_E 0x08
#define KEY_F 0x09
#define KEY_G 0x0A
#define KEY_H 0x0B
#define KEY_I 0x0C
#define KEY_J 0x0D
#define KEY_K 0x0E
#define KEY_L 0x0F
#define KEY_M 0x10
#define KEY_N 0x11
#define KEY_O 0x12
#define KEY_P 0x13
#define KEY_Q 0x14
#define KEY_R 0x15
#define KEY_S 0x16
#define KEY_T 0x17
#define KEY_U 0x18
#define KEY_V 0x19
#define KEY_W 0x1A
#define KEY_X 0x1B
#define KEY_Y 0x1C
#define KEY_Z 0x1D
#define KEY_1_EXCLAMATION_MARK 0x1E
#define KEY_2_AT 0x1F
#define KEY_3_NUMBER_SIGN 0x20
#define KEY_4_DOLLAR 0x21
#define KEY_5_PERCENT 0x22
#define KEY_6_CARET 0x23
#define KEY_7_AMPERSAND 0x24
#define KEY_8_ASTERISK 0x25
#define KEY_9_OPARENTHESIS 0x26
#define KEY_0_CPARENTHESIS 0x27
#define KEY_ENTER 0x28
#define KEY_ESCAPE 0x29
#define KEY_BACKSPACE 0x2A
#define KEY_TAB 0x2B
#define KEY_SPACEBAR 0x2C
#define KEY_MINUS_UNDERSCORE 0x2D
#define KEY_EQUAL_PLUS 0x2E
#define KEY_OBRACKET_AND_OBRACE 0x2F
#define KEY_CBRACKET_AND_CBRACE 0x30
#define KEY_BACKSLASH_VERTICAL_BAR 0x31
#define KEY_NONUS_NUMBER_SIGN_TILDE 0x32
#define KEY_SEMICOLON_COLON 0x33
#define KEY_SINGLE_AND_DOUBLE_QUOTE 0x34
#define KEY_GRAVE ACCENT AND TILDE 0x35
#define KEY_COMMA_AND_LESS 0x36
#define KEY_DOT_GREATER 0x37
#define KEY_SLASH_QUESTION 0x38
#define KEY_CAPS LOCK 0x39
#define KEY_F1 0x3A
#define KEY_F2 0x3B
#define KEY_F3 0x3C
#define KEY_F4 0x3D
#define KEY_F5 0x3E
#define KEY_F6 0x3F
#define KEY_F7 0x40
#define KEY_F8 0x41
#define KEY_F9 0x42
#define KEY_F10 0x43
#define KEY_F11 0x44
#define KEY_F12 0x45
#define KEY_PRINTSCREEN 0x46
#define KEY_SCROLL LOCK 0x47
#define KEY_PAUSE 0x48
#define KEY_INSERT 0x49
#define KEY_HOME 0x4A
#define KEY_PAGEUP 0x4B
#define KEY_DELETE 0x4C
#define KEY_END1 0x4D
#define KEY_PAGEDOWN 0x4E
#define KEY_RIGHTARROW 0x4F
#define KEY_LEFTARROW 0x50
#define KEY_DOWNARROW 0x51
#define KEY_UPARROW 0x52
#define KEY_KEYPAD_NUM_LOCK_AND_CLEAR 0x53
#define KEY_KEYPAD_SLASH 0x54
#define KEY_KEYPAD_ASTERIKS 0x55
#define KEY_KEYPAD_MINUS 0x56
#define KEY_KEYPAD_PLUS 0x57
#define KEY_KEYPAD_ENTER 0x58
#define KEY_KEYPAD_1_END 0x59
#define KEY_KEYPAD_2_DOWN_ARROW 0x5A
#define KEY_KEYPAD_3_PAGEDN 0x5B
#define KEY_KEYPAD_4_LEFT_ARROW 0x5C
#define KEY_KEYPAD_5 0x5D
#define KEY_KEYPAD_6_RIGHT_ARROW 0x5E
#define KEY_KEYPAD_7_HOME 0x5F
#define KEY_KEYPAD_8_UP_ARROW 0x60
#define KEY_KEYPAD_9_PAGEUP 0x61
#define KEY_KEYPAD_0_INSERT 0x62
#define KEY_KEYPAD_DECIMAL_SEPARATOR_DELETE 0x63
#define KEY_NONUS_BACK_SLASH_VERTICAL_BAR 0x64
#define KEY_APPLICATION 0x65
#define KEY_POWER 0x66
#define KEY_KEYPAD_EQUAL 0x67
#define KEY_F13 0x68
#define KEY_F14 0x69
#define KEY_F15 0x6A
#define KEY_F16 0x6B
#define KEY_F17 0x6C
#define KEY_F18 0x6D
#define KEY_F19 0x6E
#define KEY_F20 0x6F
#define KEY_F21 0x70
#define KEY_F22 0x71
#define KEY_F23 0x72
#define KEY_F24 0x73
#define KEY_EXECUTE 0x74
#define KEY_HELP 0x75
#define KEY_MENU 0x76
#define KEY_SELECT 0x77
#define KEY_STOP 0x78
#define KEY_AGAIN 0x79
#define KEY_UNDO 0x7A
#define KEY_CUT 0x7B
#define KEY_COPY 0x7C
#define KEY_PASTE 0x7D
#define KEY_FIND 0x7E
#define KEY_MUTE 0x7F
#define KEY_VOLUME_UP 0x80
#define KEY_VOLUME_DOWN 0x81
#define KEY_LOCKING_CAPS_LOCK 0x82
#define KEY_LOCKING_NUM_LOCK 0x83
#define KEY_LOCKING_SCROLL_LOCK 0x84
#define KEY_KEYPAD_COMMA 0x85
#define KEY_KEYPAD_EQUAL_SIGN 0x86
#define KEY_INTERNATIONAL1 0x87
#define KEY_INTERNATIONAL2 0x88
#define KEY_INTERNATIONAL3 0x89
#define KEY_INTERNATIONAL4 0x8A
#define KEY_INTERNATIONAL5 0x8B
#define KEY_INTERNATIONAL6 0x8C
#define KEY_INTERNATIONAL7 0x8D
#define KEY_INTERNATIONAL8 0x8E
#define KEY_INTERNATIONAL9 0x8F
#define KEY_LANG1 0x90
#define KEY_LANG2 0x91
#define KEY_LANG3 0x92
#define KEY_LANG4 0x93
#define KEY_LANG5 0x94
#define KEY_LANG6 0x95
#define KEY_LANG7 0x96
#define KEY_LANG8 0x97
#define KEY_LANG9 0x98
#define KEY_ALTERNATE_ERASE 0x99
#define KEY_SYSREQ 0x9A
#define KEY_CANCEL 0x9B
#define KEY_CLEAR 0x9C
#define KEY_PRIOR 0x9D
#define KEY_RETURN 0x9E
#define KEY_SEPARATOR 0x9F
#define KEY_OUT 0xA0
#define KEY_OPER 0xA1
#define KEY_CLEAR_AGAIN 0xA2
#define KEY_CRSEL 0xA3
#define KEY_EXSEL 0xA4
#define KEY_KEYPAD_00 0xB0
#define KEY_KEYPAD_000 0xB1
#define KEY_THOUSANDS_SEPARATOR 0xB2
#define KEY_DECIMAL_SEPARATOR 0xB3
#define KEY_CURRENCY_UNIT 0xB4
#define KEY_CURRENCY_SUB_UNIT 0xB5
#define KEY_KEYPAD_OPARENTHESIS 0xB6
#define KEY_KEYPAD_CPARENTHESIS 0xB7
#define KEY_KEYPAD_OBRACE 0xB8
#define KEY_KEYPAD_CBRACE 0xB9
#define KEY_KEYPAD_TAB 0xBA
#define KEY_KEYPAD_BACKSPACE 0xBB
#define KEY_KEYPAD_A 0xBC
#define KEY_KEYPAD_B 0xBD
#define KEY_KEYPAD_C 0xBE
#define KEY_KEYPAD_D 0xBF
#define KEY_KEYPAD_E 0xC0
#define KEY_KEYPAD_F 0xC1
#define KEY_KEYPAD_XOR 0xC2
#define KEY_KEYPAD_CARET 0xC3
#define KEY_KEYPAD_PERCENT 0xC4
#define KEY_KEYPAD_LESS 0xC5
#define KEY_KEYPAD_GREATER 0xC6
#define KEY_KEYPAD_AMPERSAND 0xC7
#define KEY_KEYPAD_LOGICAL_AND 0xC8
#define KEY_KEYPAD_VERTICAL_BAR 0xC9
#define KEY_KEYPAD_LOGIACL_OR 0xCA
#define KEY_KEYPAD_COLON 0xCB
#define KEY_KEYPAD_NUMBER_SIGN 0xCC
#define KEY_KEYPAD_SPACE 0xCD
#define KEY_KEYPAD_AT 0xCE
#define KEY_KEYPAD_EXCLAMATION_MARK 0xCF
#define KEY_KEYPAD_MEMORY_STORE 0xD0
#define KEY_KEYPAD_MEMORY_RECALL 0xD1
#define KEY_KEYPAD_MEMORY_CLEAR 0xD2
#define KEY_KEYPAD_MEMORY_ADD 0xD3
#define KEY_KEYPAD_MEMORY_SUBTRACT 0xD4
#define KEY_KEYPAD_MEMORY_MULTIPLY 0xD5
#define KEY_KEYPAD_MEMORY_DIVIDE 0xD6
#define KEY_KEYPAD_PLUSMINUS 0xD7
#define KEY_KEYPAD_CLEAR 0xD8
#define KEY_KEYPAD_CLEAR_ENTRY 0xD9
#define KEY_KEYPAD_BINARY 0xDA
#define KEY_KEYPAD_OCTAL 0xDB
#define KEY_KEYPAD_DECIMAL 0xDC
#define KEY_KEYPAD_HEXADECIMAL 0xDD
#define KEY_LEFTCONTROL 0xE0
#define KEY_LEFTSHIFT 0xE1
#define KEY_LEFTALT 0xE2
#define KEY_LEFT_GUI 0xE3
#define KEY_RIGHTCONTROL 0xE4
#define KEY_RIGHTSHIFT 0xE5
#define KEY_RIGHTALT 0xE6
#define KEY_RIGHT_GUI 0xE7
Do not trust people. They are capable of greatness.
~ Stanislaw Lem
~ Stanislaw Lem
- arkadiusz.makarenko
- Moderator Team
- Posts: 1192
- Joined: Wed Jun 19, 2019 7:36 am
- Location: Edinburgh
Re: TFMSX rev 2 features & problems
On Ubuntu I can read codes using command xev , it displays all HID captures events.
Do not trust people. They are capable of greatness.
~ Stanislaw Lem
~ Stanislaw Lem
- arkadiusz.makarenko
- Moderator Team
- Posts: 1192
- Joined: Wed Jun 19, 2019 7:36 am
- Location: Edinburgh
Re: TFMSX rev 2 features & problems
New keyboard firmware : https://github.com/arkadiuszmakarenko/T ... v2F730.bin
1. Download and start STM32CubeProgrammer
2. Connect USB A - USB A cable to lower USB port on TFMSX, and remove the jumper next to usb port. Power up TFMSX.
3. Change dropdown to USB, and click connect (additional drivers might need to be installed? )
4.Click + and open file, select new firmware, and hit download.
5. Power down TFMSX, set jumper again, as it was.
6. Power up TFMSX and enjoy.
Known issues
Key Select is not present on most keyboards, so it has been replaced with F6. F8 is combination of ctlr+shift+graph+code ,but I don't know how to test it.
New firmware passes above test.
Arek
1. Download and start STM32CubeProgrammer
2. Connect USB A - USB A cable to lower USB port on TFMSX, and remove the jumper next to usb port. Power up TFMSX.
3. Change dropdown to USB, and click connect (additional drivers might need to be installed? )
4.Click + and open file, select new firmware, and hit download.
5. Power down TFMSX, set jumper again, as it was.
6. Power up TFMSX and enjoy.
Known issues
Key Select is not present on most keyboards, so it has been replaced with F6. F8 is combination of ctlr+shift+graph+code ,but I don't know how to test it.
New firmware passes above test.
Arek
Do not trust people. They are capable of greatness.
~ Stanislaw Lem
~ Stanislaw Lem
- arkadiusz.makarenko
- Moderator Team
- Posts: 1192
- Joined: Wed Jun 19, 2019 7:36 am
- Location: Edinburgh
Re: TFMSX rev 2 features & problems
@NYYRIKKI
Could you make a call if I should implement usb mouse?
Could you make a call if I should implement usb mouse?
Do not trust people. They are capable of greatness.
~ Stanislaw Lem
~ Stanislaw Lem
Re: TFMSX rev 2 features & problems
Hi, @arkadiusz.makarenko
I now did manage to do the cable and tested you new keyboard driver... Close, but no cigar... You obviously ignored my last configuration file update and therefore ie. Numpad issue was not resolved and so there is still two keys on one physical key. Now also Graph & code jumped to wrong sides of space etc. I would also try to avoid using Windows-keys as they may not exist in all keyboards, but even if you use them, it makes more sense to use the right one instead of left one. Good thing is that as you managed to put "CODE" in to "Alt Gr" as this kind of proved that the scan codes in our USB-keyboards are the same, so this should not be reason for our problems.
I now fixed names on my version of config file based on your constants list. Can you please at least read it trough and compare to your implementation side by side. This is not "only right way to do it", but there are reasons why I've selected the extra keys that I have. (SELECT is usually close to STOP and so on) If you don't agree with this, we can talk about the remaining issues. Please include also your version when you change it, so that we can talk about the issues with same names.
Do you think it would be also possible to support MSX leds on the USB-keyboard? In MSX CapsLock-led is controlled by PPI port C (I/O $AA), bit 6 and Kana-lock led (could be mapped ie. to ScrollLock led) is controlled by PSG register 15, bit 7. These are both inverted, so 0=Led on, 1=Led off
Ps. Your implementation of ctlr+shift+graph+code worked just fine.
I now did manage to do the cable and tested you new keyboard driver... Close, but no cigar... You obviously ignored my last configuration file update and therefore ie. Numpad issue was not resolved and so there is still two keys on one physical key. Now also Graph & code jumped to wrong sides of space etc. I would also try to avoid using Windows-keys as they may not exist in all keyboards, but even if you use them, it makes more sense to use the right one instead of left one. Good thing is that as you managed to put "CODE" in to "Alt Gr" as this kind of proved that the scan codes in our USB-keyboards are the same, so this should not be reason for our problems.
I now fixed names on my version of config file based on your constants list. Can you please at least read it trough and compare to your implementation side by side. This is not "only right way to do it", but there are reasons why I've selected the extra keys that I have. (SELECT is usually close to STOP and so on) If you don't agree with this, we can talk about the remaining issues. Please include also your version when you change it, so that we can talk about the issues with same names.
Code: Select all
// Array of 3 elements USB_KEYCODE, MSX_ROW, MSX_BIT
static const uint8_t msxkeymap[MSX_KEYS_SIZE][3] =
{
//7 & 6 ^ 5 % 4 $ 3 # 2 @ 1 ! 0 )
{KEY_7_AMPERSAND, KB_ROW_0, KB_BIT_7},
{KEY_6_CARET, KB_ROW_0, KB_BIT_6},
{KEY_5_PERCENT, KB_ROW_0, KB_BIT_5},
{KEY_4_DOLLAR, KB_ROW_0, KB_BIT_4},
{KEY_3_NUMBER_SIGN, KB_ROW_0, KB_BIT_3},
{KEY_2_AT, KB_ROW_0, KB_BIT_2},
{KEY_1_EXCLAMATION_MARK, KB_ROW_0, KB_BIT_1},
{KEY_0_CPARENTHESIS, KB_ROW_0, KB_BIT_0},
//; : ] } [ { \ ¦ = + - _ 9 ( 8 *
{KEY_SEMICOLON_COLON, KB_ROW_1, KB_BIT_7},
{KEY_CBRACKET_AND_CBRACE, KB_ROW_1, KB_BIT_6},
{KEY_OBRACKET_AND_OBRACE , KB_ROW_1, KB_BIT_5},
{KEY_BACKSLASH_VERTICAL_BAR, KB_ROW_1, KB_BIT_4},
{KEY_EQUAL_PLUS, KB_ROW_1, KB_BIT_3},
{KEY_MINUS_UNDERSCORE, KB_ROW_1, KB_BIT_2},
{KEY_9_OPARENTHESIS, KB_ROW_1, KB_BIT_1},
{KEY_8_ASTERISK, KB_ROW_1, KB_BIT_0},
//B A _ / ? . > , < ` ~ ' "
{KEY_B, KB_ROW_2, KB_BIT_7},
{KEY_A, KB_ROW_2, KB_BIT_6},
{KEY_RIGHTCONTROL, KB_ROW_2, KB_BIT_5},
{KEY_SLASH_QUESTION, KB_ROW_2, KB_BIT_4},
{KEY_DOT_GREATER, KB_ROW_2, KB_BIT_3},
{KEY_COMMA_AND_LESS, KB_ROW_2, KB_BIT_2},
{KEY_GRAVE_ACCENT_AND_TILDE, KB_ROW_2, KB_BIT_1},
{KEY_SINGLE_AND_DOUBLE_QUOTE, KB_ROW_2, KB_BIT_0},
//J I H G F E D C
{KEY_J, KB_ROW_3, KB_BIT_7},
{KEY_I, KB_ROW_3, KB_BIT_6},
{KEY_H, KB_ROW_3, KB_BIT_5},
{KEY_G, KB_ROW_3, KB_BIT_4},
{KEY_F, KB_ROW_3, KB_BIT_3},
{KEY_E, KB_ROW_3, KB_BIT_2},
{KEY_D, KB_ROW_3, KB_BIT_1},
{KEY_C, KB_ROW_3, KB_BIT_0},
//R Q P O N M L K
{KEY_R, KB_ROW_4, KB_BIT_7},
{KEY_Q, KB_ROW_4, KB_BIT_6},
{KEY_P, KB_ROW_4, KB_BIT_5},
{KEY_O, KB_ROW_4, KB_BIT_4},
{KEY_N, KB_ROW_4, KB_BIT_3},
{KEY_M, KB_ROW_4, KB_BIT_2},
{KEY_L, KB_ROW_4, KB_BIT_1},
{KEY_K, KB_ROW_4, KB_BIT_0},
//Z Y X W V U T S
{KEY_Z, KB_ROW_5, KB_BIT_7},
{KEY_Y, KB_ROW_5, KB_BIT_6},
{KEY_X, KB_ROW_5, KB_BIT_5},
{KEY_W, KB_ROW_5, KB_BIT_4},
{KEY_V, KB_ROW_5, KB_BIT_3},
{KEY_U, KB_ROW_5, KB_BIT_2},
{KEY_T, KB_ROW_5, KB_BIT_1},
{KEY_S, KB_ROW_5, KB_BIT_0},
//F3 F2 F1 CODE CAPS GRAPH CTRL SHIFT
{KEY_F3, KB_ROW_6, KB_BIT_7},
{KEY_F2, KB_ROW_6, KB_BIT_6},
{KEY_F1, KB_ROW_6, KB_BIT_5},
{KEY_LEFTALT, KB_ROW_6, KB_BIT_4},
{0x39, KB_ROW_6, KB_BIT_3},// KEY_CAPS LOCK,
{KEY_RIGHTALT, KB_ROW_6, KB_BIT_2},
{KEY_LEFTCONTROL, KB_ROW_6, KB_BIT_1},
{KEY_LEFTSHIFT, KB_ROW_6, KB_BIT_0},
{KEY_RIGHTSHIFT, KB_ROW_6, KB_BIT_0},
{KEY_F10, KB_ROW_6, 0xE8},
//RET SELECT BS STOP TAB ESC F5 F4
{KEY_KEYPAD_ENTER, KB_ROW_7, KB_BIT_7},
{KEY_ENTER, KB_ROW_7, KB_BIT_7},
{0x47, KB_ROW_7, KB_BIT_6}, // KEY_SCROLL LOCK
{KEY_BACKSPACE, KB_ROW_7, KB_BIT_5},
{KEY_PAUSE, KB_ROW_7, KB_BIT_4},
{KEY_TAB, KB_ROW_7, KB_BIT_3},
{KEY_ESCAPE, KB_ROW_7, KB_BIT_2},
{KEY_F5, KB_ROW_7, KB_BIT_1},
{KEY_F4, KB_ROW_7, KB_BIT_0},
//? ? ? ? DEL INS HOME SPACE
{KEY_RIGHTARROW, KB_ROW_8, KB_BIT_7},
{KEY_DOWNARROW, KB_ROW_8, KB_BIT_6},
{KEY_UPARROW, KB_ROW_8, KB_BIT_5},
{KEY_LEFTARROW, KB_ROW_8, KB_BIT_4},
{KEY_DELETE, KB_ROW_8, KB_BIT_3},
{KEY_INSERT, KB_ROW_8, KB_BIT_2},
{KEY_HOME, KB_ROW_8, KB_BIT_1},
{KEY_SPACEBAR, KB_ROW_8, KB_BIT_0},
//NUM4 NUM3 NUM2 NUM1 NUM0 NUM/ NUM+ NUM*
{KEY_KEYPAD_4_LEFT_ARROW, KB_ROW_9, KB_BIT_7},
{KEY_KEYPAD_3_PAGEDN, KB_ROW_9, KB_BIT_6},
{KEY_KEYPAD_2_DOWN_ARROW, KB_ROW_9, KB_BIT_5},
{KEY_KEYPAD_1_END, KB_ROW_9, KB_BIT_4},
{KEY_KEYPAD_0_INSERT, KB_ROW_9, KB_BIT_3},
{KEY_KEYPAD_SLASH, KB_ROW_9, KB_BIT_2},
{KEY_KEYPAD_PLUS, KB_ROW_9, KB_BIT_1},
{KEY_KEYPAD_ASTERIKS, KB_ROW_9, KB_BIT_0},
//NUM. NUM, NUM- NUM9 NUM8 NUM7 NUM6 NUM5
{KEY_KEYPAD_DECIMAL_SEPARATOR_DELETE, KB_ROW_10, KB_BIT_7},
{KEY_KEYPAD_NUM_LOCK_AND_CLEAR, KB_ROW_10, KB_BIT_6},
{KEY_KEYPAD_MINUS, KB_ROW_10, KB_BIT_5},
{KEY_KEYPAD_9_PAGEUP, KB_ROW_10, KB_BIT_4},
{KEY_KEYPAD_8_UP_ARROW, KB_ROW_10, KB_BIT_3},
{KEY_KEYPAD_7_HOME, KB_ROW_10, KB_BIT_2},
{KEY_KEYPAD_6_RIGHT_ARROW, KB_ROW_10, KB_BIT_1},
{KEY_KEYPAD_5, KB_ROW_10, KB_BIT_0},
// X X X X Cancel X Execute X
{KEY_F12, KB_ROW_11, KB_BIT_3},
{KEY_F11, KB_ROW_11, KB_BIT_1},
};
As I said this is close to situation of early PCs. Many MSX2 games (like ie. Breaker Breaker) benefit if you have mouse, but you can still play without (like ie. Sierra adventures on PC)... and you can still attach a real MSX mouse if you wish... After supporting USB keyboard and joypads this sounds to me like next logical step to take, but mostly it is about how you value your time.arkadiusz.makarenko wrote: ↑Sun Oct 22, 2023 6:07 pm @NYYRIKKI
Could you make a call if I should implement usb mouse?
Ps. Your implementation of ctlr+shift+graph+code worked just fine.
Re: TFMSX rev 2 features & problems
Yes you did and I think it would be important to get this valuable 16kB back... I saw that you put DOS-ROM in that space, but that is quite useless idea. The ROM contains the hardware routines to interact with disk, but since you don't have disk drive, having the ROM does not help, mostly just eats up drive letters & memory in case someone adds a real drive(s). Even if you plan to implement some SD-card interface or similar later, this is not the way to go... You rather like to implement Nextor as then you don't need to worry about partitioning tools, file systems, disk emulation software or such as that you get as a free bonus. You only need to provide a way to read & write 512-byte blocks... The downside is though that it will not fit to 16kB, so some new way of mapping ROM would be needed as well. Anyway, this is already getting quite a far from the topic.terriblefire wrote: ↑Fri Oct 20, 2023 8:00 pm From memory i map the full 64 as a 32K rom, 16k subrom and the final 16k is mapped as a DOS rom. This was so MSX2 could have a DOS rom. I guess DOS comes on the floppy controllers so i could put this elsewhere?
EDIT: Ops looks like i disabled mapping the dos rom.
On my ROM set I used the missing 16kB for BASIC compiler as it makes more sense (in case you enable this at some point). How ever the MSX2+ boot screen is what I would use it in real life, if it would be working.
- arkadiusz.makarenko
- Moderator Team
- Posts: 1192
- Joined: Wed Jun 19, 2019 7:36 am
- Location: Edinburgh
Re: TFMSX rev 2 features & problems
@NYYRIKKI
This is my test keyboard. It is cut version, and my goal is to squeeze in all keys on it, as it is what I am planning to use with my TFMSX.
As you can see it doesn't have LEDs,so I completely forgot about them.
Ps.
I will have a look at numpad issue and your mapping suggestions later today.
This is my test keyboard. It is cut version, and my goal is to squeeze in all keys on it, as it is what I am planning to use with my TFMSX.
As you can see it doesn't have LEDs,so I completely forgot about them.
Ps.
I will have a look at numpad issue and your mapping suggestions later today.
Do not trust people. They are capable of greatness.
~ Stanislaw Lem
~ Stanislaw Lem