Jump to content

F.G. Kaal

Members
  • Content Count

    240
  • Joined

  • Last visited

Community Reputation

535 Excellent

About F.G. Kaal

  • Rank
    Chopper Commander
  • Birthday 11/19/1961

Profile Information

  • Gender
    Male

Recent Profile Visitors

4,616 profile views
  1. Thanks Fabrice. It is strange that the ! key does not send an code. Maybe the emulator skips this for now for some reason which I can't figure out because I don't know what that keycode is (?) I also see that a lot of key codes are mapped to the correct TI keyboard key. Now I am going to try to think of some plan to map any kind of keyboard to the TI-keyboard 🙂
  2. I allready predicted this. See my last message. I am not sure how this works, but I suppose that every key sends hopefully some unique WM_KEYDOWN / WM_KEYUP message. And then these kind of keyboards must be mapped to the correct TI key. What you could do is send me a list with codes that every key sends in TI keyboard mode. Then I can think about how to create some mapping for AZERTY keyboard and add this to the Ti994w ini file. Forgot to mention that in the menu Options / Set system speed dialog a new slider is added for slowing down the TI keyboard scan rate. Now for creating a list with scan codes: Select: Options / Keyboard setup / Use TI keyboard. Select: View / Debug In the debug window select menu option Devices / Keyboard (every thing else unselected) In the debug window select menu option: File / Open debug.txt. The debug.txt file wil be saved in the directory where Ti994w.exe is. Now just press every key on your keyboard ones from left to right row after row in the same order as in the photo you posted here. I see that some keys have three characters on them ... I don't know how those are selected so you must explain that to me. Now just press with capslock off, no shift no alt or altgr just the key. If a key has more characters I type for example [email protected] then I mean just that 0 key ... nothing else. 1 2 3 4 5 6 7 8 9 [email protected] )] +=} a z e r t y u i o p ^ $ q s d f g h j k l m % * >< w x c v b n ?, .; /: ! space enter backspace shift ctrl F1 F2 F3 F4 F5 F7 F8 F9 F10 F11 F12 left-arrow up-arrow down-arrow right-arrow then with numlock on the keys from the numeric keypad: / * - + 7 8 9 4 5 6 1 2 3 0 . enter this will give a nice list with scan codes and WM_KEYDOWN / WM_KEYUP / WM_SYSKEYDOWN / WM_SYSKEYUP messages and how these are connected to a key on the TI keyboard like so: Keyboard KEY: (049) -> '1' >31 049 : Caps=off Shft=off Fnct=off Ctrl=off Msg=WM_KEYDOWN Keyboard KEY: (049) -> '1' >31 049 : Caps=off Shft=off Fnct=off Ctrl=off Msg=WM_KEYUP here 049 happens to be the ASCII code for a '1', but for example a shift key send something different: Keyboard KEY: (016) -> '.' >01 001 : Caps=off Shft=on Fnct=off Ctrl=off Msg=WM_KEYDOWN Keyboard KEY: (016) -> '.' >01 001 : Caps=off Shft=on Fnct=off Ctrl=off Msg=WM_KEYUP If you post that debug.txt file here then I can see if I can make any chocolate out of that list you created then I can think of some scheme to create a translation table for the TI keyboard mode. (I have a dutch keyboard witch will have the same problems as you encounter but the receiver is lost 😞 so I can't test this)
  3. The reaction on the $ key is not strange in this Ti994w version. Pressing the ; key sends a / and a ; The / (WM_KEYDOWN message) is accepted and the ; send with a WM_CHAR message is accepted. Pressing the $ key sends a ; and a $ This time the ; is rejected because the previous ; send by a WM_CHAR message was allready accepted therefore this ; send by a WM_KEYDOWN message is not allowed ... ; was allready handled. The $ key is translated to TI key SHIFT-4. If the keyboard you are using with Windows is sending a ; or a / with a WM_KEYDOWN/WM_KEYUP message for every key you type then the TI keyboard methode seems to be impossible for you. The TI keyboard method relies on the WM_KEYDOWN / WM_KEYUP messages to file a keyboard bit array scanned by CRU instructions. What kind of keyboard are you using ? (second time I ask this) Can you post a picture here of your keyboard? I have rearranged the whole TI-key conversion table for the PC keyboard method. The PC keyboard method is now only using WM_CHAR messages accept for virtual keys (all special keys and keys typed in with the ALT key down), these keys only send WM_KEYDOWN/UP messages. WM_KEYUP messages are ignored with this method and for the special keys (the keys that don't send a WM_CHAR message) the WM_KEYDOWN message is changed to a WM_CHAR message. The PC keyboard method only uses the WK_KEYDOWN and WM_KEYUP message of every key. Here is version 6.3a (not available on my website yet). I removed the [VKEY] part from the code and ini file ... this can't be used anymore and always was a bit useless. Also added the original key code to the debug message for the debug window. Ti994w63a.zip
  4. And what about the "," and the "$" now you complained about in your previous message? And what KB messages do you get when pressing just '.' and '/' ? In a previous message you said: pressing "," causes display ",," pressing "." causes display ";." pressing "/" causes display "/:" Getting really confusing now: ";" -> ".;" "." -> ";." Is the first KB message always a WM_KEYDOWN message that gives the wrong character at your side? Please investigate, I can only make guesses here.
  5. I don't see "the" problem what you describe. What do you see in the debug window: 1) Start Ti994w 2) Select in the menu View/Debug 3) In the debug window select in the menu Devices/keyboard, deselect anyhing else 4) In the main window select TI BASIC 5) Enter there ;.$ and maybe other probematic keys Now what do you see in the debug window. This is what I get on my system: Command line = <-cD:\Ti994w\startupscript.cmd> Windows Version 6.02.02 Ini file = <D:\Ti994w\Ti994w.ini> Load file: SMEM @ >0000 <.\system\994arom.bin> Load file: GROM @ >0000 <.\system\994agrom.gpl> Load file: VDP @ >0800 <.\system\chara1.vdp> Load file: VDP @ >0380 <.\system\colortable.vdp> Load file: DSR @ >1000 <.\system\Dsr1000.bin> Load file: DSR @ >1100 <.\system\Disk.bin> Command file = <D:\Ti994w\startupscript.cmd> Load file: SMEM @ >6000 - Page 0 <.\system\Exbas_B0.bin> Load file: SMEM @ >6000 - Page 1 <.\system\Exbas_B1.bin> Load file: GROM @ >6000 <.\system\Exbas_G1.gpl> Load file: GROM @ >8000 <.\system\Exbas_G2.gpl> Load file: GROM @ >A000 <.\system\Exbas_G3.gpl> Load file: GROM @ >C000 <.\system\Exbas_G4.gpl> Interrupt level 00 granted Keyboard KEY: ' ' >20 032 : Caps=off Shft=off Fnct=off Ctrl=off Msg=WM_CHAR Keyboard KEY: '1' >31 049 : Caps=off Shft=off Fnct=off Ctrl=off Msg=WM_CHAR Keyboard KEY: '.' >01 001 : Caps=off Shft=on Fnct=off Ctrl=off Msg=WM_KEYDOWN Keyboard KEY: '.' >01 001 : Caps=off Shft=on Fnct=off Ctrl=off Msg=WM_KEYDOWN Keyboard KEY: '.' >01 001 : Caps=off Shft=on Fnct=off Ctrl=off Msg=WM_KEYDOWN Keyboard KEY: '.' >01 001 : Caps=off Shft=on Fnct=off Ctrl=off Msg=WM_KEYDOWN Keyboard KEY: '.' >01 001 : Caps=off Shft=on Fnct=off Ctrl=off Msg=WM_KEYDOWN Keyboard KEY: '.' >01 001 : Caps=off Shft=on Fnct=off Ctrl=off Msg=WM_KEYDOWN Keyboard KEY: '.' >01 001 : Caps=off Shft=on Fnct=off Ctrl=off Msg=WM_KEYDOWN Keyboard KEY: '.' >01 001 : Caps=off Shft=on Fnct=off Ctrl=off Msg=WM_KEYDOWN Keyboard KEY: ';' >3B 059 : Caps=off Shft=on Fnct=off Ctrl=off Msg=WM_KEYDOWN Keyboard KEY: ';' >3B 059 : Caps=off Shft=on Fnct=off Ctrl=off Msg=WM_CHAR NOT ALLOWED Keyboard KEY: ';' >3B 059 : Caps=off Shft=off Fnct=off Ctrl=off Msg=WM_KEYDOWN Keyboard KEY: ';' >3B 059 : Caps=off Shft=off Fnct=off Ctrl=off Msg=WM_CHAR NOT ALLOWED Keyboard KEY: ',' >2C 044 : Caps=off Shft=off Fnct=off Ctrl=off Msg=WM_KEYDOWN Keyboard KEY: ',' >2C 044 : Caps=off Shft=off Fnct=off Ctrl=off Msg=WM_CHAR NOT ALLOWED Keyboard KEY: '.' >01 001 : Caps=off Shft=on Fnct=off Ctrl=off Msg=WM_KEYDOWN Keyboard KEY: '4' >34 052 : Caps=off Shft=on Fnct=off Ctrl=off Msg=WM_CHAR First the space and '1' for selecting TI Basic Then a lot of autorepeats from the shift key Then the ';' key with shift on this makes a ':' send with a WM_KEYDOWN message Then a second ';' key with shift on send with a WM_CHAR message and not allowed because WM_KEYDOWN was allready handled for that same key. etc etc. and my Ti994w window then looks like this: If this is al not "the" problem then send me a piece of code that demonstrates "the" problem. Or do you maybe have a special/french keyboard that sends different codes then the American/English keyboards? I'm asking this because if there is a problem with ',' then I also expect a problem with '<' (shift < on an American/English) keyboard. Also the '$' why don't you have a problem with the '4'. Questions, questions, question.
  6. If you need it that way you can also do something like this: 10 CALL KEY(1,K,S) :: CALL KEY(2,K2,S2) 20 IF S=0 THEN SKIP K 30 IF S2=0 THEN SKIP K2 30 GOTO 10 or 10 CALL KEY(1,K,S) :: CALL KEY(2,K2,S2) 20 IF K=-1 THEN SKIP K 30 IF K2=-1 THEN SKIP K2 30 GOTO 10 SKIP is offcourse some neat function for not handling that key.
  7. Well ... this is just another fine mess you bright me into 🤯 Just kidding ... I am happy with you as a tester. Now I know again why a WM_CHAR and WM_KEYDOWN message was allowed for some keys in the PC keyboard mode. The keyboard and numeric keypad send different type of messages for what appears to be the same key, but ... it isn't. It can be a normal (ASCII) character and it can be a virtual key defined as VK_OEM_something in the windows header file. When the "Use all free CPU speed" is enabled then for those problematic keys both messages are send for some reason. What I have added now is that the message type and key code is stored. If a different type of WM_keymessage is received with the same key code as with the previous WM_keymessage than this one is ignored. Seems to work properly on my system now. Still version 6.2d and can also be downloaded from ti99-geek.nl Ti994w62d.zip
  8. Spent some time on the PC keyboard problem anyway and changed my keyboard table definition a bit. In the PC mode keyboard I allowed for some key's the WM_CHAR and WM_KEYDOWN message. This seems no problem in normal speed but when the "use all free CPU speed" is selected then both key messages are passed through my keyboard function (don't ask me why). The key board table describes how to translate the PC keyboard to the TI keyboard layout like so: Seems that I have fixed this problem for the + = - _ / : ; < > keys. Here is the updated version Ti994w62d.zipand can also be downloaded from ti99-geek.nl.
  9. Here is a page from the Tabellen boek (Table book) of the dutch TI users group (TIUG) with all the key codes genereated for all modes: TOETS CODES +-------+-----+-----+-------------+-----------------+-----------------+-------+ | | | | | | | | | |MODE1|MODE2| MODE3 | MODE4 | MODE5 | KSCAN | | | | | | | | | | toets | | | shf fct | shf fct ctl | shf fct ctl | | | ===== | === | === | === === === | === === === === | === === === === | ===== | | 1 | >13 | >FF | >31 >21 >03 | >31 >21 >83 >B1 | >31 >21 >03 >B1 | >2B | | 2 | >07 | >FF | >32 >40 >04 | >32 >40 >84 >B2 | >32 >40 >04 >B2 | >0B | | 3 | >08 | >FF | >33 >23 >07 | >33 >23 >87 >B3 | >33 >23 >07 >B3 | >13 | | 4 | >09 | >FF | >34 >24 >02 | >34 >24 >82 >B4 | >34 >24 >02 >B4 | >1B | | 5 | >0A | >FF | >35 >25 >0E | >35 >25 >8E >B5 | >35 >25 >0E >B5 | >23 | | 6 | >FF | >13 | >36 >5E >0C | >36 >5E >8C >B6 | >36 >5E >0C >B6 | >24 | | 7 | >FF | >07 | >37 >26 >01 | >37 >26 >81 >B7 | >37 >26 >01 >B7 | >1C | | 8 | >FF | >08 | >38 >2A >06 | >38 >2A >86 >1E | >38 >2A >06 >9E | >14 | | 9 | >FF | >09 | >39 >28 >0F | >39 >28 >8F >1F | >39 >28 >0F >9F | >0C | | 0 | >FF | >0A | >30 >FF >FF | >30 >29 >BC >B0 | >30 >29 >BC >B0 | >2C | | = | >FF | >FF | >3D >2B >05 | >3D >2B >85 >1D | >3D >2B >05 >9D | >07 | | Q | >12 | >FF | >51 >51 >FF | >71 >51 >C5 >11 | >71 >51 >C5 >91 | >29 | | W | >04 | >FF | >57 >57 >FF | >77 >57 >7E >17 | >77 >57 >7E >97 | >09 | | E | >05 | >FF | >45 >45 >0B | >65 >45 >8B >05 | >65 >45 >0B >85 | >11 | | R | >06 | >FF | >52 >52 >5B | >72 >52 >5B >12 | >72 >52 >5B >92 | >19 | | T | >0B | >FF | >54 >54 >5D | >74 >54 >5D >14 | >74 >54 >5D >94 | >21 | | Y | >FF | >12 | >59 >59 >FF | >79 >59 >C6 >19 | >79 >59 >C6 >99 | >25 | | U | >FF | >04 | >55 >55 >5F | >75 >55 >5F >15 | >75 >55 >5F >95 | >1D | | I | >FF | >05 | >49 >49 >3F | >69 >49 >3F >09 | >69 >49 >3F >89 | >15 | | O | >FF | >06 | >4F >4F >27 | >6F >4F >27 >0F | >6F >4F >27 >8F | >0D | | P | >FF | >0B | >50 >50 >22 | >70 >50 >22 >10 | >70 >50 >22 >90 | >2D | | / | >FF | >10 | >2F >2D >FF | >2F >2D >BA >BB | >2F >2D >BA >BB | >2F | | A | >01 | >FF | >41 >41 >FF | >61 >41 >7C >01 | >61 >41 >7C >81 | >2A | | S | >02 | >FF | >53 >53 >08 | >73 >53 >88 >13 | >73 >53 >08 >93 | >0A | | D | >03 | >FF | >44 >44 >09 | >64 >44 >89 >04 | >64 >44 >09 >84 | >12 | | F | >0C | >FF | >46 >46 >FF | >66 >46 >7B >06 | >66 >46 >7B >86 | >1A | | G | >11 | >FF | >47 >47 >FF | >67 >47 >7D >07 | >67 >47 >7D >87 | >22 | | H | >FF | >01 | >48 >48 >FF | >68 >48 >BF >08 | >68 >48 >BF >88 | >26 | | J | >FF | >02 | >4A >4A >FF | >6A >4A >C0 >0A | >6A >4A >C0 >8A | >1E | | K | >FF | >03 | >4B >4B >FF | >6B >4B >C1 >0B | >6B >4B >C1 >8B | >16 | | L | >FF | >0C | >4C >4C >FF | >6C >4C >C2 >0C | >6C >4C >C2 >8C | >0E | | ; | >FF | >11 | >3B >3A >FF | >3B >3A >BD >1C | >3B >3A >BD >9C | >2E | | enter | >FF | >FF | >0D >0D >0D | >0D >0D >0D >0D | >0D >0D >0D >0D | >05 | | Z | >0F | >FF | >5A >5A >5C | >7A >5A >5C >1A | >7A >5A >5C >9A | >28 | | X | >00 | >FF | >58 >58 >0A | >78 >58 >8A >18 | >78 >58 >0A >98 | >08 | | C | >0E | >FF | >43 >43 >FF | >63 >43 >60 >03 | >63 >43 >60 >83 | >10 | | V | >0D | >FF | >56 >56 >FF | >76 >56 >7F >16 | >76 >56 >7F >96 | >18 | | B | >10 | >FF | >42 >42 >FF | >62 >42 >BE >02 | >62 >42 >BE >82 | >20 | | N | >FF | >0F | >4E >4E >FF | >6E >4E >C4 >0E | >6E >4E >C4 >8E | >27 | | M | >FF | >00 | >4D >4D >FF | >6D >4D >C3 >0D | >6D >4D >C3 >8D | >1F | | , | >FF | >0E | >2C >3C >FF | >2C >3C >B8 >00 | >2C >3C >B8 >80 | >17 | | . | >FF | >0D | >2E >3E >FF | >2E >3E >B9 >1B | >2E >3E >B9 >9B | >0F | | space | >FF | >FF | >20 >20 >20 | >20 >20 >20 >20 | >20 >20 >20 >20 | >06 | | | | | | | | | +-------+-----+-----+-------------+-----------------+-----------------+-------+ | De KSCAN routine gebruikt >83C7->83CA voor toetscode opslag (dit is niet | | ASCII). Deze codes staan in de laatste kolom van de tabel. >83C8 wordt als | | opslag van MODE0 gebruikt, >83C9 voor MODE1 en >83CA voor MODE2. | | >83C7 bevat de volgende vlaggen: | | >01:= >02:space >04:enter >06:vuur >10:fctn >20:shift >40:ctrl | +-----------------------------------------------------------------------------+ - 101 -
  10. You are not using the CALL KEY function properly. CALL KEY is a non-blocking read. When CALL KEY returns you have to check the S(tatus): 0 : No key was pressed, 1 : a new key was pressed, -1 : the same key was pressed as in the previous CALL KEY (autorepeat). You should use something like this: 100 CALL KEY(1,K,S) 110 IF S<>0 THEN 150 120 CALL KEY(2,K,S) 130 IF S<>0 THEN 170 140 GOTO 100 150 PRINT "Left";K 160 GOTO 100 170 PRINT "Right";K 180 GOTO 100 This is also true for mode 3, 4, 5 and 0. If K = -1 (which is 255 or >FF) also means that no key was pressed. Alternatively you could check IF K<>-1 or IF K>=0. When the emulator is set to "Use all free CPU time" then it seems that for some keys a WM_CHAR message and a WM_KEYDOWN message is passed through to the keyboard function. Look like this is happening for those keys that are fctn-keys on the TI keyboard. I am not going to spent more time on this. The "use all free CPU time" option is not meant for this. It is a feature I have build in to do some special stuff like calculations or whatever when no further user input is required. PS: I also see my collegues doing this with our traffic controller emulator(s) ... select the option "use all free CPU time" and then setting other options to slow the emulator down so that they can see what is happening and doing manual tests. The result is that some traffic flow is generated every 1/10 of a second and the remaining (free CPU) time the CPU working like hell doing nothing (only heating up the environment). In this case (these kind of emulators) the "use all free CPU time" is for doing endurence tests and keep the traffic controller program running for the rest of the day/week or whatever.
  11. - Using, the 'PC Keyboard' option, I can use CALL KEY(0,K,S) or CALL CALL KEY(3,K,S) but not CALL (1,K,S) or CALL KEY(2,K,S) where K returns no key value then -1. It appears that keyboard mode 1 and 2 does not scan the complete keyboard and because of that unused keys for kb mode 1 and 2 locks up the PC keyboard method until a keyboard mode of 3, 4 or 5 is used again. This is fixed. - Regularly, when I swap between the 'PC Keyboard' and 'TI Keyboard' options and I enable/disable the "all free CPU" speed option, the keys pressed are repeatedly displayed on several lines. This is a TI keyboard method feature. If you speed-up the machinery than you also have to work faster yourself. This can't be fixed. This has to do with the autorepeat delay and autorepeat speed built in the kb SCAN function. Use the PC keyboard method if you run the Ti994w emulator full blast. See ti99-geek.nl for the new version.
  12. If TIC is like C99C then it doesn't know anything about const and static. I found TIC on my backup disk but I don't have a manual of TIC., I suppose this can be found on WHTECH. But for what it is worth, here is the specs of C99C: c99specs.txt
  13. This is something from the very first TI99/4A emulator I saw from Edward Swartz (V9T9 in DOS) and also used since the very first version of Ti99Dir (also for DOS 6.0). This featare/handycap is also mentioned in the help from Ti99Hdx:
  14. Read the manual of Ti99Dir and see menu option Configuration -> Option -> [ ] Enable Ti994wq and Ti99Hdx compatibly; Enable Ti994w and Ti99Hdx compatibility Select this option to make Ti99Dir compatible with the emulator Ti994w and the HDX server Ti99Hdx. The characters '\ / : * ? " < > |' are not allowed in a PC file name. By default Ti99Dir will replace these characters by a '@' character. However, when Ti994w and Ti99Hdx creates a PC file name out of a TI file name and one of these characters are encountered then the most significant bit of that character will be set. This will result in a PC file name with one ore more strange characters but at least the file name is unique and Ti994w and Ti99Hdx is able to find the PC file containing the TI file.
  15. That doesn't help. A user can still select the same device.directory on both sides and pretty much loose all their files again. Gdm2k Version 3.3 checks if source and destination device.directory are the same when doing a copy or move and throws an error "Illegal operation" if it is. Fred gdm2k_v33.zip
×
×
  • Create New...