fabrice montupet Posted July 27, 2022 Author Share Posted July 27, 2022 ...7.xx! We moved to the new version ? I tried successfully the mapper, it is very efficient! Thank you Fred. Even the "!" key can be mapped. Quote Link to comment Share on other sites More sharing options...
oddemann Posted July 27, 2022 Share Posted July 27, 2022 4 hours ago, F.G. Kaal said: There is a new version of Ti994w version 7.1a Ti994w71a.zip 1.72 MB · 5 downloads Do you have a Youtube where you show features of your emulator? Quote Link to comment Share on other sites More sharing options...
F.G. Kaal Posted July 28, 2022 Share Posted July 28, 2022 (edited) 19 hours ago, oddemann said: Do you have a Youtube where you show features of your emulator? No I don't do video's. Edited July 28, 2022 by F.G. Kaal Quote Link to comment Share on other sites More sharing options...
F.G. Kaal Posted July 28, 2022 Share Posted July 28, 2022 20 hours ago, fabrice montupet said: ...7.xx! We moved to the new version ? I tried successfully the mapper, it is very efficient! Thank you Fred. Even the "!" key can be mapped. Can you post you Ti994w.ini file here so that I can see how you mapped ? I did some guessing and now I would like to see if I guessed right. 1 Quote Link to comment Share on other sites More sharing options...
fabrice montupet Posted July 28, 2022 Author Share Posted July 28, 2022 (edited) I would have liked! I re-launched the emulator today and I had the surprise to see that all the list of mapped keys had disappeared ? It seems that the emulator didn't save it. Note: I don't remember if I quit the program by clicking on the cross at the top right of the window or by clicking on "Exit" in the File menu. Edited July 28, 2022 by fabrice montupet Quote Link to comment Share on other sites More sharing options...
F.G. Kaal Posted July 28, 2022 Share Posted July 28, 2022 38 minutes ago, fabrice montupet said: I would have liked! I re-launched the emulator today and I had the surprise to see that all the list of mapped keys had disappeared ? It seems that the emulator didn't save it. Note: I don't remember if I quit the program by clicking on the cross at the top right of the window or by clicking on "Exit" in the File menu. Did you click the OK key when mapping your keys? If you click cancel or click [x] it is not saved. Mapped keys are only saved in the ini file after clicking ok in the dialog. 1 Quote Link to comment Share on other sites More sharing options...
fabrice montupet Posted July 28, 2022 Author Share Posted July 28, 2022 (edited) I'm really almost sure that I clicked on OK. Anyway, I began to map again the keys of my french keyboard, not all them because it is a long work but enough for you to see what happens in the .ini file. Spoiler ; ; This is the INI file used by Ti994W ; [Ti994w] ; ; Automatically created ; left=-1711 top=259 open=0 fitalic=0 fheight=-16 fweight=700 fname=Courier autostart=1 soundon=1 noiseon=1 scroffset=1 unopint=0 joystick1=0 joystick2=0 RS232/1=0 1 0 1 1 0 0 0 1 RS232/2=0 2 0 38400 8 2 1 2 1 cputime=1 ; ; VDP Options ; vdpemul=1 vdp9938=1 fixedsize=1 magnify=2 maximized=1 scrwidth=2556 scrheight=1393 ; ; User options [read at power up] ; ; Give a warning when changing modules (and not at title screen) swmodwarning=1 ; ; Give a warning when exiting the emulator (and not at title sceen) exitwarning=1 ; ; Write protect module ram >6020->7FFF wrpmodram=1 speechon=0 keyboardbuffer=0 errorint=0 tikeyboard=1 breakint=0 vdp43ratio=1 TIBUS=1 3 3 115200 8 0 1 0 1 disablequitkey=1 autosaveini=1 [Vdp] ; ; Automatically created ; left=1095 top=390 open=0 [Cpu] ; ; Automatically created ; left=1295 top=165 open=0 [Gpl] ; ; Automatically created ; left=673 top=234 open=0 [DbgToolWindow] ; ; Automatically created ; left=1766 top=-958 open=0 status=0 width=923 height=665 [WatchToolWindow] ; ; Automatically created ; left=200 top=98 width=594 height=544 open=0 var00=CRU 1100 0404 0000 var01=F=2866 2866 0141 0022 var02=KBMODE 8374 0122 0028 var03=ASCII 8375 0122 0028 var04=- 0000 0122 0000 var05=- 0000 0122 0000 var06=STATUS 837c 0122 0000 var07=- 0000 0122 0000 var08=>83e5 83e5 0122 0000 var09=>8379 8379 0122 0000 var10=>834A 834a 0164 0008 var11=>STACK 838a 0164 0006 var12=>836d 836d 0124 0002 var13=>8350 8350 0162 000a var14=- 0000 0104 0000 var15=>8300 8300 0124 000a var16=Long1H a050 0124 0002 var17=Long1L a052 0124 0002 var18=Long2H a054 0124 0000 var19=Long2L a056 0124 0000 var20=CRU6 0000 0444 000a var21=- 0000 0104 0000 var22=- 0000 0104 0000 var23=- 0000 0104 0000 var24=- 0000 0104 0000 var25=- 0000 0104 0000 var26=- 0000 0104 0000 var27=- 0000 0104 0000 var28=- 0000 0104 0000 var29=- 0000 0104 0000 var30=- 0000 0104 0000 var31=- 0000 0104 0000 var32=- 0000 0000 0000 [DEF] ; ; These names are used while single-stepping. ; If an address is found in this list, the symbolname is also ; printed in the dissambled statement. ; 2100=GPLLNK 2104=XMLLNK 2108=KSCAN 210C=VSBW 2110=VMBW 2114=VSBR 2118=VMBR 211C=VWTR 2120=DSRLNK 2124=LOADER 2022=UTLTAB 2024=FSTHI 2026=LSTHI 2028=FSTLOW 202A=LSTLOW 202C=CHKSAV 202E=FLGPTR 2030=SVGPRT 2032=SAVCRU 2034=SAVENT 2036=SAVLEN 2038=SAVPAB 203A=SAVVER 8800=VDPRD 8802=VDPSTA 8C00=VDPWD 8C02=VDPWA 9800=GRMRD 9802=GRMRA 9C00=GRMWD 9C02=GRMWA 8300=PAD 83E0=GPLWS 8400=SOUND 9000=SPCHRD 9400=SPCHWT 000E=SCAN [PATCHES] ; ; Maximum of 99 ROM patches ; Format PATCHxx=ADDRESS WORD ; ROM patch ; PATCHxx=ROM ADDRESS WORD ; ROM patch ; PATCHxx=GROM ADDRESS BYTE ; GROM patch ; ;Delay loop keyboard debounce ; PATCH01=ROM 0498 045B ; Return (B *R11) ; ;GROM Powerup VDP register R2,R4,R5,R6 values ;(When starting emulator with V9938 VDP and no 80 Colcard DSR ; and no facke DSK1 / PIO / RS232 DSR) ; PATCH02=GROM 0453 00 ; R2 Screenimage table @ VDP >0000 PATCH03=GROM 0455 01 ; R4 Pattern descriptor table @ VDP >0800 PATCH04=GROM 0456 06 ; R5 Sprite attribute list @ VDP >0300 PATCH05=GROM 0457 00 ; R6 Sprite descriptor table @ VDP >0000 ; ;TI-BASIC VDP register R2,R3,R4 values ; PATCH06=GROM 216C 00 ; R2 Screenimage table @ VDP >0000 PATCH07=GROM 216D 0C ; R3 Color table @ VDP >0300 PATCH08=GROM 216E 00 ; R4 Pattern descriptor table @ VDP >0000 [VKEYS] ; ; Not all Virtual Keys #127 through #255 are defined in Windows or ; have a no function in Ti994w. ; However, if your keyboard doesn't send the right code for ; a particular key, you can define what code the emulator ; should generate. You should use CTRL or the right ALT key ; together with the key you want to define. ; Open the debug window (menu Vieuw->Debug) and enter the ; command KEY. Now if the TI-screen has the focus and you ; press your key combination, i.e. CTRL-. a message like ; "KEYBOARD KEY=.-190 Caps=off Shft=off Fnct=off Ctrl=on UNDEFINED" ; appears. Now you can define your key by assigning a value to the ; ascii code (190) of the key. The value consists of a 1-digit ; function code and a 3 digit decimal character code. ; Ascii code is 127-255 ; Function code is the sum of 1=SHIFT + 2=FUNCTION + 4=CONTROL ; Character code is 0-255 ; So to define 188 as CTRL-, and 190 as CTRL-. enter: ; 188=4044 190=4046 [SYSTEM] ; ; @xxxx defines start adres for .rom and .vdp (default is >0000) ; .bin is a rom ; .gpl is a grom ; .vdp is a character file with 6 bytes header which is ignored ; .pgm is an E/A program file with 6 bytes header and loaded at the ; address defined in the header. The second, third and fourth ; pgm file are loaded automatically ; .obj is an E/A object file (PC-format, autostart is disabled) ; ; The 994Arom.bin and 994Agrom.bin if V9T9 is ok! ; Fdsr4w.obj is a facke DSR with DSK, DSK1, DSK2, DSk3, ; PIO, PIO/1, RS232, RS232/1 and RS232/2 ; LOAD01=.\system\994arom.bin@0000 LOAD02=.\system\chara1.vdp@0800 LOAD03=.\system\colortable.vdp@0380 LOAD04=.\system\994agrom.gpl@0000 ;LOAD05=.\system\Fdsr4w.obj ; ;.. ;LOAD99= [DSR] ; The DSR's to load DSRMASK=515 ; ; Defines the device service routines ; only >1000, >1100 and >1900 at the moment and the DSR's must be .bin ; DO NOT CHANGE CRU1000=.\system\Dsr1000.bin CRU1100=.\system\Disk.bin CRU1600=.\system\Cf7a+.bin CRU1900=.\system\Video80.bin ; ; Cru >1200 is the IDE space ; DO NOT CHANGE CRU1200_P00L=.\system\IDE-P00L.bin ;CRU1200_BQ4852=.\system\IDE-BQ4852.bin CRU1200_P00H=.\system\IDE-P00H.bin CRU1200_P01H=.\system\IDE-P01H.bin CRU1200_P02H=.\system\IDE-P02H.bin CRU1200_P03H=.\system\IDE-P03H.bin CRU1200_P04H=.\system\IDE-P04H.bin CRU1200_P05H=.\system\IDE-P05H.bin CRU1200_P11H=.\system\IDE-P11H.bin CRU1200_P12H=.\system\IDE-P12H.bin CRU1200_P13H=.\system\IDE-P13H.bin CRU1200_P14H=.\system\IDE-P14H.bin ; ; Cru >1300 is the RS232/HDX space ; DO NOT CHANGE CRU1300_P00L=.\system\HDX232-P00.bin CRU1300_P01L=.\system\HDX232-P01.bin ; ; cru >1500 is the test and debug space ;CRU1500=.\system\Dsr1500.bin [MODULES] ; ; This is the module list from which a module menu-item will be created. ; LOADMODULE tells the emulator wich is the default and is stored every ; time another module os choosen from the menu. Overy item in this list ; got an own entry with a grom (.gpl) and rom (.bin) list with exactly ; the same name. ; LOADMODULE=12 MOD01=Editor Assembler MOD02=Extended Basic MOD03=Mini Memory MOD04=TI Writer MOD05=Demonstration MOD06=Diagnostic MOD07=Addition MOD08=Minus MOD09=Knight MOD10=Division MOD11=Alligator MOD12=GEM MOD13=Parsec MOD14=Shamus MOD15=RXB2020 MOD16=Multiplan MOD17=Dm2k24 MOD18=Du2k20 MOD19=MegaMod 2016 MOD20=TurboForth122 MOD21=Editor Assembler V MOD03=Editor Assembler V (UG) [Editor Assembler] ;Functional LOAD01=.\system\Edasm.gpl@6000 [Extended Basicx] ; Functional, you can place all groms in one file though! ; NAME_B0 is bank0 of a banked prom ; NAME_B1 is bank1 of a banked prom ; LOAD01=.\system\Extbas.gpl@6000 LOAD02=.\system\Extbas_B0.bin@6000 LOAD03=.\system\Extbas_B1.bin@6000 [Extended Basic] ; Functional, you can also read al groms in their own space! ; NAME_B0 is bank0 of a banked prom ; NAME_B1 is bank1 of a banked prom ; LOAD01=.\system\Exbas_G1.gpl@6000 LOAD02=.\system\Exbas_G2.gpl@8000 LOAD03=.\system\Exbas_G3.gpl@A000 LOAD04=.\system\Exbas_G4.gpl@C000 LOAD05=.\system\Exbas_B0.bin@6000 LOAD06=.\system\Exbas_B1.bin@6000 [Mini Memory] ;Functional LOAD01=.\system\Minimem.gpl@6000 LOAD02=.\system\Minimem.bin@6000 [TI Writer] ;Functional LOAD01=.\system\tiwriter.gpl@6000 [Demonstration] ;Functional LOAD01=.\system\demonstration.gpl@6000 [Diagnostic] ;Functional LOAD01=.\system\diagnostic.gpl@6000 [Addition] ;Functional LOAD01=.\system\addition.gpl@6000 [Minus] ;Returns to main (faulty grom?) LOAD01=.\system\minus.gpl@6000 [Knight] ;Functional LOAD01=.\system\DARK-E8.bin@6000 [Division] ;Functional LOAD01=.\system\division.gpl@6000 [Alligator] ;Functional LOAD01=.\system\alligator.gpl@6000 [GEM] ;FunctionalHelo LOAD01=.\system\XB29GEM_G.gpl@6000 LOAD02=.\system\XB29GEM_B0.bin@6000 [Parsec] ;Functional LOAD01=.\system\parsec.gpl@6000 LOAD02=.\system\parsec.bin@6000 [Shamus] ;Different bankswitch scheme, who knows how? LOAD01=.\system\shamus_B0.bin@6000 LOAD02=.\system\shamus_B1.bin@6000 [RXB] INVERTED=0 LOAD01=.\system\RXB2020C.bin@6000 LOAD02=.\system\RXB2020D.bin@6000 LOAD03=.\system\RXB2020G.bin@6000 [Multiplan] ;Need the original diskette and files and try again LOAD01=.\system\Multiplan_6.gpl@6000 LOAD02=.\system\Multiplan_8.gpl@8000 LOAD03=.\system\Multiplan_A.gpl@A000 LOAD04=.\system\Multiplan_C.gpl@C000 LOAD05=.\system\Multiplan_E.gpl@E000 [Dm2k24] ;Load a JohnGuidry style module with banked/paged ;EPROM with a maximum of 4 banks. These modules ;use an inverted banking/paging mechanism. ; ;If two banks then ; MOV @>6000,@>6000 selects bank 1 ; MOV @>6002,@>6002 selects bank 0 ; ;If four banks then ; MOV @>6000,@>6000 selects bank 4 ; MOV @>6002,@>6002 selects bank 3 ; MOV @>6004,@>6004 selects bank 2 ; MOV @>6008,@>6008 selects bank 1 ; INVERTED=1 LOAD01=.\system\Dm2k24_B0.bin@6000 LOAD02=.\system\Dm2k24_B1.bin@6000 LOAD03=.\system\Dm2k24_B2.bin@6000 LOAD04=.\system\Dm2k24_B3.bin@6000 [Du2k20] ;Load a JohnGuidry style module with banked/paged ;EPROM with a maximum of 4 banks. These modules ;use an inverted banking/paging mechanism. ;It is allowed to read a 32Kb (4 Banks of 8Kb) in ;one go! ; INVERTED=1 LOAD01=.\system\Du2k20_B0.bin@6000 [MegaMod 2016] INVERTED=1 LOAD01=.\system\MM2016_B0.bin@6000 [TurboForth122] INVERTED=1 LOAD01=.\system\TurboForth122_B0.bin@6000 [Editor Assembler V] INVERTED=0 LOAD01=.\system\eaprom_V_B0.bin@6000 [Editor Assembler V (UG)] INVERTED=0 FILEBASED=1 LOAD01=.\system\ugprom_V_B0.bin@6000 [DEVICES] ; ; Automatically created when used menuoption [File]->[Foad and Doad] ; ; These are the DSK device. I don't want to implement SCSI and HDS yet. ; You can create subdirs on these. ; Files are in V9T9 format. ; I do need a drive letter here, no relative paths! ; DSK=C:\TI994W\DSK DSK1=C:\Users\Utilisateur\Desktop\knight\DSK1 DSK2=C:\Users\Utilisateur\Desktop\TI99-TOOLS\Ti994w\dsk2 DSK3=C:\Users\Utilisateur\Desktop\knight\DSK3 ; ; DSKx_TYPE can be FIAD (File In A Directory) ; DOAD (Disk On A Disk image) ; CF7A (Disk On A CF-card image) ; DSK_ENABLE=1 DSK1_TYPE=FIAD DSK2_TYPE=FIAD DSK3_TYPE=FIAD ; DOAD1= DOAD2= DOAD3=C:\Ti994w\Doads\DSK3.dsk ; ; These are the IDE images on a Disk. ; IDE1 is the master and IDE2 is the slave device. ; If IDEx_ENABLE=1 the IDE device is accesable. ; IDE1=C:\Ti994w\Doads\test16mb.img IDE2= ; IDE1_ENABLE=0 IDE2_ENABLE=0 ; ; These is the CF7A+ image on a Disk. ; There is only a CF7A+ master. ; If CF7A_ENABLE=1 the CF7A+ device is accesable. ; CF7A=C:\Ti994w\Doads\Cf7a_64mb.cf7 CF7A_ENABLE=0 [FunctionKeys] F01=G 0AC0 F02=M 834a 20 F03=m 068eV 20 F04= F05= F06= F07= F08= F09= F10= F11= F12= F13= F14= F15= F16= F17= F18= [SYSTEMSPEED] left=0 top=506 open=0 CPUDELAYTIME=0 DSKDELAYTIME=0 KBSCANDELAYTIME=1906 [VdpColor] COLOR00=-1 COLOR01=-1 COLOR02=-1 COLOR03=-1 COLOR04=13577774 COLOR05=16600906 COLOR06=1846463 COLOR07=-1 COLOR08=3426287 COLOR09=-1 COLOR10=2274269 COLOR11=9556443 COLOR12=-1 COLOR13=-1 COLOR14=12632256 COLOR15=-1 left=323 top=464 open=0 [PcKeyMapping] left=471 top=186 open=0 KMAP001=0x0031 0x0001 KMAP002=0x0032 0x0002 KMAP003=0x0033 0x0003 KMAP004=0x0034 0x0004 KMAP005=0x0035 0x0005 KMAP006=0x0036 0x0006 KMAP007=0x0037 0x0007 KMAP008=0x0038 0x0008 KMAP009=0x0039 0x0009 KMAP010=0x0030 0x0000 KMAP011=0x00BB 0x000A KMAP012=0x01BB 0x0034 KMAP013=0x0130 0x002D KMAP014=0x0139 0x0030 KMAP015=0x0138 0x0076 KMAP016=0x0137 0x0078 KMAP017=0x0136 0x006B KMAP018=0x0135 0x0033 KMAP019=0x0134 0x0068 KMAP020=0x0133 0x0069 KMAP021=0x0132 0x0061 KMAP022=0x0131 0x0031 KMAP023=0x0238 0x0066 KMAP024=END Edited July 28, 2022 by fabrice montupet 1 Quote Link to comment Share on other sites More sharing options...
F.G. Kaal Posted July 29, 2022 Share Posted July 29, 2022 12 hours ago, fabrice montupet said: I'm really almost sure that I clicked on OK. Anyway, I began to map again the keys of my french keyboard, not all them because it is a long work but enough for you to see what happens in the .ini file. Reveal hidden contents ; ; This is the INI file used by Ti994W ; [Ti994w] ; ; Automatically created ; left=-1711 top=259 open=0 fitalic=0 fheight=-16 fweight=700 fname=Courier autostart=1 soundon=1 noiseon=1 scroffset=1 unopint=0 joystick1=0 joystick2=0 RS232/1=0 1 0 1 1 0 0 0 1 RS232/2=0 2 0 38400 8 2 1 2 1 cputime=1 ; ; VDP Options ; vdpemul=1 vdp9938=1 fixedsize=1 magnify=2 maximized=1 scrwidth=2556 scrheight=1393 ; ; User options [read at power up] ; ; Give a warning when changing modules (and not at title screen) swmodwarning=1 ; ; Give a warning when exiting the emulator (and not at title sceen) exitwarning=1 ; ; Write protect module ram >6020->7FFF wrpmodram=1 speechon=0 keyboardbuffer=0 errorint=0 tikeyboard=1 breakint=0 vdp43ratio=1 TIBUS=1 3 3 115200 8 0 1 0 1 disablequitkey=1 autosaveini=1 [Vdp] ; ; Automatically created ; left=1095 top=390 open=0 [Cpu] ; ; Automatically created ; left=1295 top=165 open=0 [Gpl] ; ; Automatically created ; left=673 top=234 open=0 [DbgToolWindow] ; ; Automatically created ; left=1766 top=-958 open=0 status=0 width=923 height=665 [WatchToolWindow] ; ; Automatically created ; left=200 top=98 width=594 height=544 open=0 var00=CRU 1100 0404 0000 var01=F=2866 2866 0141 0022 var02=KBMODE 8374 0122 0028 var03=ASCII 8375 0122 0028 var04=- 0000 0122 0000 var05=- 0000 0122 0000 var06=STATUS 837c 0122 0000 var07=- 0000 0122 0000 var08=>83e5 83e5 0122 0000 var09=>8379 8379 0122 0000 var10=>834A 834a 0164 0008 var11=>STACK 838a 0164 0006 var12=>836d 836d 0124 0002 var13=>8350 8350 0162 000a var14=- 0000 0104 0000 var15=>8300 8300 0124 000a var16=Long1H a050 0124 0002 var17=Long1L a052 0124 0002 var18=Long2H a054 0124 0000 var19=Long2L a056 0124 0000 var20=CRU6 0000 0444 000a var21=- 0000 0104 0000 var22=- 0000 0104 0000 var23=- 0000 0104 0000 var24=- 0000 0104 0000 var25=- 0000 0104 0000 var26=- 0000 0104 0000 var27=- 0000 0104 0000 var28=- 0000 0104 0000 var29=- 0000 0104 0000 var30=- 0000 0104 0000 var31=- 0000 0104 0000 var32=- 0000 0000 0000 [DEF] ; ; These names are used while single-stepping. ; If an address is found in this list, the symbolname is also ; printed in the dissambled statement. ; 2100=GPLLNK 2104=XMLLNK 2108=KSCAN 210C=VSBW 2110=VMBW 2114=VSBR 2118=VMBR 211C=VWTR 2120=DSRLNK 2124=LOADER 2022=UTLTAB 2024=FSTHI 2026=LSTHI 2028=FSTLOW 202A=LSTLOW 202C=CHKSAV 202E=FLGPTR 2030=SVGPRT 2032=SAVCRU 2034=SAVENT 2036=SAVLEN 2038=SAVPAB 203A=SAVVER 8800=VDPRD 8802=VDPSTA 8C00=VDPWD 8C02=VDPWA 9800=GRMRD 9802=GRMRA 9C00=GRMWD 9C02=GRMWA 8300=PAD 83E0=GPLWS 8400=SOUND 9000=SPCHRD 9400=SPCHWT 000E=SCAN [PATCHES] ; ; Maximum of 99 ROM patches ; Format PATCHxx=ADDRESS WORD ; ROM patch ; PATCHxx=ROM ADDRESS WORD ; ROM patch ; PATCHxx=GROM ADDRESS BYTE ; GROM patch ; ;Delay loop keyboard debounce ; PATCH01=ROM 0498 045B ; Return (B *R11) ; ;GROM Powerup VDP register R2,R4,R5,R6 values ;(When starting emulator with V9938 VDP and no 80 Colcard DSR ; and no facke DSK1 / PIO / RS232 DSR) ; PATCH02=GROM 0453 00 ; R2 Screenimage table @ VDP >0000 PATCH03=GROM 0455 01 ; R4 Pattern descriptor table @ VDP >0800 PATCH04=GROM 0456 06 ; R5 Sprite attribute list @ VDP >0300 PATCH05=GROM 0457 00 ; R6 Sprite descriptor table @ VDP >0000 ; ;TI-BASIC VDP register R2,R3,R4 values ; PATCH06=GROM 216C 00 ; R2 Screenimage table @ VDP >0000 PATCH07=GROM 216D 0C ; R3 Color table @ VDP >0300 PATCH08=GROM 216E 00 ; R4 Pattern descriptor table @ VDP >0000 [VKEYS] ; ; Not all Virtual Keys #127 through #255 are defined in Windows or ; have a no function in Ti994w. ; However, if your keyboard doesn't send the right code for ; a particular key, you can define what code the emulator ; should generate. You should use CTRL or the right ALT key ; together with the key you want to define. ; Open the debug window (menu Vieuw->Debug) and enter the ; command KEY. Now if the TI-screen has the focus and you ; press your key combination, i.e. CTRL-. a message like ; "KEYBOARD KEY=.-190 Caps=off Shft=off Fnct=off Ctrl=on UNDEFINED" ; appears. Now you can define your key by assigning a value to the ; ascii code (190) of the key. The value consists of a 1-digit ; function code and a 3 digit decimal character code. ; Ascii code is 127-255 ; Function code is the sum of 1=SHIFT + 2=FUNCTION + 4=CONTROL ; Character code is 0-255 ; So to define 188 as CTRL-, and 190 as CTRL-. enter: ; 188=4044 190=4046 [SYSTEM] ; ; @xxxx defines start adres for .rom and .vdp (default is >0000) ; .bin is a rom ; .gpl is a grom ; .vdp is a character file with 6 bytes header which is ignored ; .pgm is an E/A program file with 6 bytes header and loaded at the ; address defined in the header. The second, third and fourth ; pgm file are loaded automatically ; .obj is an E/A object file (PC-format, autostart is disabled) ; ; The 994Arom.bin and 994Agrom.bin if V9T9 is ok! ; Fdsr4w.obj is a facke DSR with DSK, DSK1, DSK2, DSk3, ; PIO, PIO/1, RS232, RS232/1 and RS232/2 ; LOAD01=.\system\994arom.bin@0000 LOAD02=.\system\chara1.vdp@0800 LOAD03=.\system\colortable.vdp@0380 LOAD04=.\system\994agrom.gpl@0000 ;LOAD05=.\system\Fdsr4w.obj ; ;.. ;LOAD99= [DSR] ; The DSR's to load DSRMASK=515 ; ; Defines the device service routines ; only >1000, >1100 and >1900 at the moment and the DSR's must be .bin ; DO NOT CHANGE CRU1000=.\system\Dsr1000.bin CRU1100=.\system\Disk.bin CRU1600=.\system\Cf7a+.bin CRU1900=.\system\Video80.bin ; ; Cru >1200 is the IDE space ; DO NOT CHANGE CRU1200_P00L=.\system\IDE-P00L.bin ;CRU1200_BQ4852=.\system\IDE-BQ4852.bin CRU1200_P00H=.\system\IDE-P00H.bin CRU1200_P01H=.\system\IDE-P01H.bin CRU1200_P02H=.\system\IDE-P02H.bin CRU1200_P03H=.\system\IDE-P03H.bin CRU1200_P04H=.\system\IDE-P04H.bin CRU1200_P05H=.\system\IDE-P05H.bin CRU1200_P11H=.\system\IDE-P11H.bin CRU1200_P12H=.\system\IDE-P12H.bin CRU1200_P13H=.\system\IDE-P13H.bin CRU1200_P14H=.\system\IDE-P14H.bin ; ; Cru >1300 is the RS232/HDX space ; DO NOT CHANGE CRU1300_P00L=.\system\HDX232-P00.bin CRU1300_P01L=.\system\HDX232-P01.bin ; ; cru >1500 is the test and debug space ;CRU1500=.\system\Dsr1500.bin [MODULES] ; ; This is the module list from which a module menu-item will be created. ; LOADMODULE tells the emulator wich is the default and is stored every ; time another module os choosen from the menu. Overy item in this list ; got an own entry with a grom (.gpl) and rom (.bin) list with exactly ; the same name. ; LOADMODULE=12 MOD01=Editor Assembler MOD02=Extended Basic MOD03=Mini Memory MOD04=TI Writer MOD05=Demonstration MOD06=Diagnostic MOD07=Addition MOD08=Minus MOD09=Knight MOD10=Division MOD11=Alligator MOD12=GEM MOD13=Parsec MOD14=Shamus MOD15=RXB2020 MOD16=Multiplan MOD17=Dm2k24 MOD18=Du2k20 MOD19=MegaMod 2016 MOD20=TurboForth122 MOD21=Editor Assembler V MOD03=Editor Assembler V (UG) [Editor Assembler] ;Functional LOAD01=.\system\Edasm.gpl@6000 [Extended Basicx] ; Functional, you can place all groms in one file though! ; NAME_B0 is bank0 of a banked prom ; NAME_B1 is bank1 of a banked prom ; LOAD01=.\system\Extbas.gpl@6000 LOAD02=.\system\Extbas_B0.bin@6000 LOAD03=.\system\Extbas_B1.bin@6000 [Extended Basic] ; Functional, you can also read al groms in their own space! ; NAME_B0 is bank0 of a banked prom ; NAME_B1 is bank1 of a banked prom ; LOAD01=.\system\Exbas_G1.gpl@6000 LOAD02=.\system\Exbas_G2.gpl@8000 LOAD03=.\system\Exbas_G3.gpl@A000 LOAD04=.\system\Exbas_G4.gpl@C000 LOAD05=.\system\Exbas_B0.bin@6000 LOAD06=.\system\Exbas_B1.bin@6000 [Mini Memory] ;Functional LOAD01=.\system\Minimem.gpl@6000 LOAD02=.\system\Minimem.bin@6000 [TI Writer] ;Functional LOAD01=.\system\tiwriter.gpl@6000 [Demonstration] ;Functional LOAD01=.\system\demonstration.gpl@6000 [Diagnostic] ;Functional LOAD01=.\system\diagnostic.gpl@6000 [Addition] ;Functional LOAD01=.\system\addition.gpl@6000 [Minus] ;Returns to main (faulty grom?) LOAD01=.\system\minus.gpl@6000 [Knight] ;Functional LOAD01=.\system\DARK-E8.bin@6000 [Division] ;Functional LOAD01=.\system\division.gpl@6000 [Alligator] ;Functional LOAD01=.\system\alligator.gpl@6000 [GEM] ;FunctionalHelo LOAD01=.\system\XB29GEM_G.gpl@6000 LOAD02=.\system\XB29GEM_B0.bin@6000 [Parsec] ;Functional LOAD01=.\system\parsec.gpl@6000 LOAD02=.\system\parsec.bin@6000 [Shamus] ;Different bankswitch scheme, who knows how? LOAD01=.\system\shamus_B0.bin@6000 LOAD02=.\system\shamus_B1.bin@6000 [RXB] INVERTED=0 LOAD01=.\system\RXB2020C.bin@6000 LOAD02=.\system\RXB2020D.bin@6000 LOAD03=.\system\RXB2020G.bin@6000 [Multiplan] ;Need the original diskette and files and try again LOAD01=.\system\Multiplan_6.gpl@6000 LOAD02=.\system\Multiplan_8.gpl@8000 LOAD03=.\system\Multiplan_A.gpl@A000 LOAD04=.\system\Multiplan_C.gpl@C000 LOAD05=.\system\Multiplan_E.gpl@E000 [Dm2k24] ;Load a JohnGuidry style module with banked/paged ;EPROM with a maximum of 4 banks. These modules ;use an inverted banking/paging mechanism. ; ;If two banks then ; MOV @>6000,@>6000 selects bank 1 ; MOV @>6002,@>6002 selects bank 0 ; ;If four banks then ; MOV @>6000,@>6000 selects bank 4 ; MOV @>6002,@>6002 selects bank 3 ; MOV @>6004,@>6004 selects bank 2 ; MOV @>6008,@>6008 selects bank 1 ; INVERTED=1 LOAD01=.\system\Dm2k24_B0.bin@6000 LOAD02=.\system\Dm2k24_B1.bin@6000 LOAD03=.\system\Dm2k24_B2.bin@6000 LOAD04=.\system\Dm2k24_B3.bin@6000 [Du2k20] ;Load a JohnGuidry style module with banked/paged ;EPROM with a maximum of 4 banks. These modules ;use an inverted banking/paging mechanism. ;It is allowed to read a 32Kb (4 Banks of 8Kb) in ;one go! ; INVERTED=1 LOAD01=.\system\Du2k20_B0.bin@6000 [MegaMod 2016] INVERTED=1 LOAD01=.\system\MM2016_B0.bin@6000 [TurboForth122] INVERTED=1 LOAD01=.\system\TurboForth122_B0.bin@6000 [Editor Assembler V] INVERTED=0 LOAD01=.\system\eaprom_V_B0.bin@6000 [Editor Assembler V (UG)] INVERTED=0 FILEBASED=1 LOAD01=.\system\ugprom_V_B0.bin@6000 [DEVICES] ; ; Automatically created when used menuoption [File]->[Foad and Doad] ; ; These are the DSK device. I don't want to implement SCSI and HDS yet. ; You can create subdirs on these. ; Files are in V9T9 format. ; I do need a drive letter here, no relative paths! ; DSK=C:\TI994W\DSK DSK1=C:\Users\Utilisateur\Desktop\knight\DSK1 DSK2=C:\Users\Utilisateur\Desktop\TI99-TOOLS\Ti994w\dsk2 DSK3=C:\Users\Utilisateur\Desktop\knight\DSK3 ; ; DSKx_TYPE can be FIAD (File In A Directory) ; DOAD (Disk On A Disk image) ; CF7A (Disk On A CF-card image) ; DSK_ENABLE=1 DSK1_TYPE=FIAD DSK2_TYPE=FIAD DSK3_TYPE=FIAD ; DOAD1= DOAD2= DOAD3=C:\Ti994w\Doads\DSK3.dsk ; ; These are the IDE images on a Disk. ; IDE1 is the master and IDE2 is the slave device. ; If IDEx_ENABLE=1 the IDE device is accesable. ; IDE1=C:\Ti994w\Doads\test16mb.img IDE2= ; IDE1_ENABLE=0 IDE2_ENABLE=0 ; ; These is the CF7A+ image on a Disk. ; There is only a CF7A+ master. ; If CF7A_ENABLE=1 the CF7A+ device is accesable. ; CF7A=C:\Ti994w\Doads\Cf7a_64mb.cf7 CF7A_ENABLE=0 [FunctionKeys] F01=G 0AC0 F02=M 834a 20 F03=m 068eV 20 F04= F05= F06= F07= F08= F09= F10= F11= F12= F13= F14= F15= F16= F17= F18= [SYSTEMSPEED] left=0 top=506 open=0 CPUDELAYTIME=0 DSKDELAYTIME=0 KBSCANDELAYTIME=1906 [VdpColor] COLOR00=-1 COLOR01=-1 COLOR02=-1 COLOR03=-1 COLOR04=13577774 COLOR05=16600906 COLOR06=1846463 COLOR07=-1 COLOR08=3426287 COLOR09=-1 COLOR10=2274269 COLOR11=9556443 COLOR12=-1 COLOR13=-1 COLOR14=12632256 COLOR15=-1 left=323 top=464 open=0 [PcKeyMapping] left=471 top=186 open=0 KMAP001=0x0031 0x0001 KMAP002=0x0032 0x0002 KMAP003=0x0033 0x0003 KMAP004=0x0034 0x0004 KMAP005=0x0035 0x0005 KMAP006=0x0036 0x0006 KMAP007=0x0037 0x0007 KMAP008=0x0038 0x0008 KMAP009=0x0039 0x0009 KMAP010=0x0030 0x0000 KMAP011=0x00BB 0x000A KMAP012=0x01BB 0x0034 KMAP013=0x0130 0x002D KMAP014=0x0139 0x0030 KMAP015=0x0138 0x0076 KMAP016=0x0137 0x0078 KMAP017=0x0136 0x006B KMAP018=0x0135 0x0033 KMAP019=0x0134 0x0068 KMAP020=0x0133 0x0069 KMAP021=0x0132 0x0061 KMAP022=0x0131 0x0031 KMAP023=0x0238 0x0066 KMAP024=END Well ... allmost sure is not quitte sure ? but thanks for the ini file. I did not expect to be a lot of work looking at the picture you send from your keyboard. I see that you also map the keys that are in the same place as a US keyboard like 0,1,2,3,4 etc You only have to map those keys on your keyboard that give the wrong/unexpected character in the emulator. It is not forbidden to map every key ... it is just a bit redundant. 1 Quote Link to comment Share on other sites More sharing options...
fabrice montupet Posted July 30, 2022 Author Share Posted July 30, 2022 I though that you wanted the mapping of all the french Keyboard, this is why I said that the operation was going to take some time to be realized ? So today I begun to do again the job but only with the keys that need to be mapped. But, alas, I encountered a problem (bug) : sometimes and unexpectedly, when I press a key, the key character is displayed and repeated indefinitely (even I release the key) until it reaches the last character accepted by the program line. And the option "delay between TI keyboard scans" can't resolve this kind of problem. Quote Link to comment Share on other sites More sharing options...
F.G. Kaal Posted July 31, 2022 Share Posted July 31, 2022 19 hours ago, fabrice montupet said: I though that you wanted the mapping of all the french Keyboard, this is why I said that the operation was going to take some time to be realized ? So today I begun to do again the job but only with the keys that need to be mapped. But, alas, I encountered a problem (bug) : sometimes and unexpectedly, when I press a key, the key character is displayed and repeated indefinitely (even I release the key) until it reaches the last character accepted by the program line. And the option "delay between TI keyboard scans" can't resolve this kind of problem. Hi Fabrice, if you have now a complete french keyboard mapping can you post it here so that I can use that for testing. Does that enexpected phenomenon appear what a mapped key or is it just random? This behaviour can happen if the keyup message of a released key is missed (or maybe misinterpreted). Quote Link to comment Share on other sites More sharing options...
F.G. Kaal Posted July 31, 2022 Share Posted July 31, 2022 Did a little experiment: 1) swapped the 'a' and 'b' characters with the keyboard map function 2) press shift 3) press 'a' (this displays 'A') 4) released shift (now 'a' is mapped to 'b') 5) released 'a' (because now 'a' is mapped to 'b' then 'b' is actualy realeased which was not pressed in the first place so 'a' got stuck) For now solved this by completely clearing the TI keyboard buffer when the shift, ctrl or alt keys are released. I still want your french keyboard mapping please! Keep your original ti994w.ini file ? Ti994w71b.zip 1 1 Quote Link to comment Share on other sites More sharing options...
fabrice montupet Posted July 31, 2022 Author Share Posted July 31, 2022 Here is as I mapped my french keyboard ? Spoiler [PcKeyMapping] left=-596 top=615 open=0 KMAP001=0x0131 0x0031 KMAP002=0x0132 0x0061 KMAP003=0x0133 0x0069 KMAP004=0x0134 0x0068 KMAP005=0x0135 0x0033 KMAP006=0x0136 0x003F KMAP007=0x0137 0x0078 KMAP008=0x0138 0x0066 KMAP009=0x0139 0x0030 KMAP010=0x0130 0x002D KMAP011=0x01DB 0x002B KMAP012=0x00BB 0x0034 KMAP013=0x01BB 0x000A KMAP014=0x00DD 0x0030 KMAP015=0x00BA 0x002E KMAP016=0x00C0 0x002F KMAP017=0x00DC 0x0032 KMAP018=0x01BC 0x0067 KMAP019=0x00BE 0x001F KMAP020=0x01BE 0x0029 KMAP021=0x00BF 0x0049 KMAP022=0x01BF 0x0015 KMAP023=0x00DF 0x002C KMAP024=0x00E2 0x0052 KMAP025=0x01E2 0x0053 KMAP026=0x0234 0x006E KMAP027=0x0236 0x006B KMAP028=0x0238 0x0076 KMAP029=0x02DB 0x0064 KMAP030=0x02BB 0x006F KMAP031=0x0235 0x0063 KMAP032=0x0237 0x0078 KMAP033=0x0232 0x0061 KMAP034=0x0230 0x002D KMAP035=0x01BA 0x002E KMAP036=0x01DC 0x0032 KMAP037=0x01C0 0x002F KMAP038=END 2 Quote Link to comment Share on other sites More sharing options...
fabrice montupet Posted December 4, 2022 Author Share Posted December 4, 2022 (edited) I found an abnormal behavior of the emulator when I use the full screen mode using the 80 columns mode (with the XB286 command: CALL EDIT80). I launch ti994aw windowed with the options "Emulate V9938", "Preserve 4:3 ratio" and "Fixed Size" enabled. Then I start XB256, and I type: CALL EDIT 80 OK, the emulator now shows fine XB256 in 80 columns, getting black bars to the left and right of the TI screen (as my monitor has 16:9 ratio) Then I double-clic on the top title bar of the window to toggle in full screen (as I do fine for the 32 or 40 columns modes), the emulator goes full screen but at least 8 characters aren't visible on each side of the screen. Edited December 4, 2022 by fabrice montupet 1 Quote Link to comment Share on other sites More sharing options...
F.G. Kaal Posted December 5, 2022 Share Posted December 5, 2022 On 12/4/2022 at 5:39 PM, fabrice montupet said: I found an abnormal behavior of the emulator when I use the full screen mode using the 80 columns mode (with the XB286 command: CALL EDIT80). I launch ti994aw windowed with the options "Emulate V9938", "Preserve 4:3 ratio" and "Fixed Size" enabled. Then I start XB256, and I type: CALL EDIT 80 OK, the emulator now shows fine XB256 in 80 columns, getting black bars to the left and right of the TI screen (as my monitor has 16:9 ratio) Then I double-clic on the top title bar of the window to toggle in full screen (as I do fine for the 32 or 40 columns modes), the emulator goes full screen but at least 8 characters aren't visible on each side of the screen. That is a strange phenomenon indeed. Something doesn't know it is in 80 column mode at this point. 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.