mizapf #1 Posted March 28, 2015 Dear fellow TIers, this is the moment of truth ... it's about time for a new release, and for this one I've been working for the past six months. You will notice a leap in version numbers: This is TIImageTool 2.0. You can download it from WHTech: http://ftp.whtech.com/pc%20utilities/tiimagetool.zip or via ninerpedia: http://www.ninerpedia.org/index.php/TIImageTool There are some bugfixes, but also a bunch of new features. Full Drag-and-drop support between images with export/import capability You can detach tabs as separate windows Image files can be opened more than once You can enter BASIC code as text or paste it from a web page and save it into the image as prg, merge, or long Command line mode New Hint feature (essentially "tip of the day") New preferences (much better configurability) More flexibility for export and import Concerning export and import, you can, for instance, tell TIImageTool to ignore the name in the TIFILES header and take the external file name. This can be achieved via the Preferences. There is a full Drag-and-Drop support. You can mark and pull files from one view to another, but this also works if the original window is your file explorer. In the same way you can pull files from the image file into your file system. With all those new features I don't expect that the tool is even close to being bug-free. Please report all issues to me so that I can resolve them quickly. Enjoy! 10 Quote Share this post Link to post Share on other sites
RobertLM78 #2 Posted March 28, 2015 I'll have to check this Quote Share this post Link to post Share on other sites
Gazoo #3 Posted March 28, 2015 Thank you Michael! This is definitely the best program ever for working with TI disk images. Thanks for the upgrade! Gazoo 1 Quote Share this post Link to post Share on other sites
+Schmitzi #4 Posted March 28, 2015 ...oh I like Command Line Interfaces 1 Quote Share this post Link to post Share on other sites
Shift838 #5 Posted March 28, 2015 Michael, Very nice new options. These will help all of us with these improvements.. Chris Quote Share this post Link to post Share on other sites
Tursi #6 Posted March 28, 2015 Very impressive! I loaded it up here and read through the entire manual - great information in there! I look forward to giving it a try. Quote Share this post Link to post Share on other sites
Gary from OPA #7 Posted March 28, 2015 neat had a whole 24 hour power blackout, and i come back and see nice new tools to try out. thanks alot. Quote Share this post Link to post Share on other sites
Vorticon #8 Posted March 28, 2015 Nice work Michael. The first thing which attracted my attention was the ability to paste BASIC and XB text directly as a program into a disk image, so I went ahead and tested it. Well, there seems to be a problem. I am able to copy text from the editor into a disk image and TiDir recognizes the resulting program file as a valid program and displays its contents accurately (very very cool). This is an XB program by the way. However, when I try to load that program using Classic99 or MESS, I get I/O ERROR 07 for the former and I/O ERROR 02 for the latter. Any thoughts on this? Quote Share this post Link to post Share on other sites
mizapf #9 Posted March 29, 2015 If you get a I/O error, then it seems there is a problem when loading. Could you try to save it as a MERGE program and then load it with MERGE? If the program is very long, MERGE may take quite some time. Quote Share this post Link to post Share on other sites
Vorticon #10 Posted March 29, 2015 No, I get the same errors when the program is saved as Merge. It is a relatively short program (see below). By the way, I am not trying to run it, just load it because it requires The Missing Link to run. 100 CALL LINK("CLEAR"):: CALL SCREEN(2):: RANDOMIZE 110 M=INT(4001*RND)+1000:: XP=120:: YP=96:: CALL LINK("CIRCLE",YP,XP,3,0,6,1) 120 X=INT(201*RND)+40:: IF (X>80 AND X<160) THEN 120 130 Y=INT(153*RND)+20:: IF (Y>76 AND Y<116) THEN 130 140 XS=X:: YS=Y 150 XX=X-XP:: YY=Y-YP:: R0=SQR(XX^2+YY^2) 160 XG=XP-R0*(0.5-RND):: YG=YP-RO*(0.5-RND) 170 CALL LINK("CIRCLE",YG,XG,1,0,9,1) 180 CALL LINK("PRINT",172,1,"Enter initial Vx: "):: CALL LINK("INPUT",172,132,VX) 190 CALL LINK("PRINT",182,1,"Enter initial Vy: "):: CALL LINK("INPUT",182,132,VY) 200 J=(X-XP)*VY-(Y-YP)*VX 210 CS=XX/R0:: SN=YY/R0:: DET=VX*SN-VY*CS 220 IF DET=0 THEN GOSUB 410:: GOTO 180 230 A=-(M*CS/(J^2))-VY/(R0*DET):: B=-(M*SN/(J^2))+VX/(R0*DET) 240 TH=PI/2 250 IF XX=0 THEN 270 260 TH=ATN(YY/XX) 270 IF YY>0 THEN 290 280 TH=TH+PI 290 TF=TH+2*PI 300 FOR T=TH TO TF STEP 0.05 310 R=1/(A*COS(T)+B*SIN(T)+M/(J^2)):: X=XP+R*COS(T):: Y=YP+R*SIN(T) 320 IF X<1 OR X>240 OR Y<1 OR Y>192 THEN 370 330 CALL LINK("PIXEL",Y,X,16,1) 340 IF ABS(X-XG)+ABS(Y-YG)>3 THEN 370 350 CALL LINK("PRINT",10,1,"Objective reached! Bravo!") 360 GOTO 360 370 NEXT T 380 CALL LINK("PRINT",10,1,"Objective failed... Sorry.") 390 CALL KEY(0,K,S):: IF S=0 THEN 390 400 GOSUB 410:: X=XS:: Y=YS:: GOTO 180 410 CALL LINK("CLEAR"):: CALL LINK("CIRCLE",YP,XP,3,0,6,1):: CALL LINK("CIRCLE",YG,XG,1,0,9,1):: RETURN Quote Share this post Link to post Share on other sites
sometimes99er #11 Posted March 29, 2015 Very nice. Had an error, Exception in thread "main" java.lang.UnsupportedClassVersionError: ti/image/TIImageTool : Unsupported major.minor version 52.0 Going from JRE 7 to 8 solved it. Quote Share this post Link to post Share on other sites
mizapf #12 Posted March 29, 2015 (edited) @vorticon: I tried myself, but I don't get an error in MESS. Extended Basic loads the saved file without error message. After that I sent the program file via XModem to my real-iron Geneve, and it loads it as well in Extended Basic or ABASIC. :-/ Cannot run it because of the missing subprograms, though. Try to save a text file with D/V 80 and see whether this works. It seems as if the problem is not with the BASIC parser but somewhere else. @sometimes99er: Sigh ... every new Java feels like setting itself as a minimum requirement. Sorry, I should have set a parameter to build for Java 6; I don't need any features beyond that. Will check. Edit: I rebuilt the package for Java 6 and uploaded the zip file again to WHTech. Edited March 29, 2015 by mizapf 1 Quote Share this post Link to post Share on other sites
Vorticon #13 Posted March 29, 2015 My process was to copy the code from Notepad++ and paste it in the Editor window that pops up when I select Paste from Editor. Is there a better process? Quote Share this post Link to post Share on other sites
mizapf #14 Posted March 29, 2015 You can do that from Notepad++, no problem. My suggestion: 1. Enter a small BASIC program (i.e. three lines) directly into the window from TIImageTool, save it as a BASIC program to an image file, and then try to load it. 2. Find some small text file, paste it into the window from TIImageTool, save it as DIS/VAR 80. Then try to open it in a text editor in the TI (like TI Writer or Editor). This is to find out where it fails and whether it has to do with the BASIC parser. As I said, I could not reproduce your observation yet. Quote Share this post Link to post Share on other sites
mizapf #15 Posted March 29, 2015 (edited) I have one theory on that: the dreaded line separator issue. In Unix, lines are separated by line feed ("\n"), in Windows by CRLF. I'll upload a new version in a few moments. Edit: Done. I uploaded a new version "2.0.1" to WHTech and my own website. Please download it and try again. I did some tests in a Windows 8.1 environment, and I was able to both copy the listing from the webpage into the editor and save it, as well as to import a text file saved by Notepad. I added a method to my Utilities class that finds out the line separator of the file being imported, and accordingly splits the lines at the appropriate separator. Edited March 29, 2015 by mizapf 1 Quote Share this post Link to post Share on other sites
Vorticon #16 Posted March 30, 2015 OK that worked! Thanks Quote Share this post Link to post Share on other sites
mizapf #17 Posted March 30, 2015 Thanks to you all for testing! I hope you enjoy using it. If you have further requests for a later release, just tell me - I'm collecting suggestions, and most of them somehow find their way into future releases. I noticed one more thing to be fixed, maybe in short term: The BASIC lister (which creates text from a Basic program) can get into trouble with unprintable characters. I found that the file FONTMAKER in The Missing Link cannot be shown this way, and as it seems, the problem is caused by just one DEL character (0x7f) in a string. The Java class JTextArea coughs up a sequence of Exceptions when it encounters such unprintable characters, which I consider a bug in Java Swing and not really my fault. I remember well that I also sometimes used Ctrl-A and similar characters in my strings when they were used for rendering graphics, so this may call for a solution. Particularly, this solution should produce a listing without any unprintable characters, but instead of simply omitting them it should replace them with a readable representation. I have something in mind like "#7f". But it should be possible to recreate the BASIC program from this listing again, and the # sign is already part of BASIC, so this is not a good choice. Do you have any suggestions for such a new token? The problem is that we all have pretty different keyboards; ideally, this should be a character that everyone finds on his keyboard but which is not used in a BASIC program. Quote Share this post Link to post Share on other sites
Tursi #18 Posted March 30, 2015 A little painful an issue, but... I wonder if you mind not outputting 100% accurate outputs (maybe with an option?) I'm thinking, if it finds unprintable characters in a string, it replaces them with "&CHR$(x)&" (including the quotes, where 'x' is the ASCII code of the character). This would produce an output that can then be copy and pasted in the future forever, at the cost of being very slightly slower to execute and a longer line (may have trouble with already long lines or lots of control code.) But I think that should work in all places that such a case can occur in BASIC or XB... (Maybe with a little extra parsing to detect beginning and end of string). I'm guilty of using the embedded control characters as well, a few times, but I think the number of programs with the problem are quite small, and maybe it's just worth making fixed versions that play more nicely today? Quote Share this post Link to post Share on other sites
mizapf #19 Posted March 30, 2015 A program auto-fixing feature? Sounds interesting, but I think this will mainly work for such characters in quoted strings, but thinking about DATA lines, "&" won't work there. To make things worse, you can even have unquoted strings in DATA. Another idea that came to my mind is to offer an "escape character" in the Preferences. For instance, one could say "Use the following character for escaping unprintable chracters:", and if one used the tilde (~), we would get "~7f~80~81" as output, and if there were a tilde itself, it would be doubled (~~). If the tilde happened to appear too often, one could choose another one, like backquote (`). Or, as you say, maybe it suffices to simply replace them with one single character (and a warning dialog). Quote Share this post Link to post Share on other sites
Tursi #20 Posted March 31, 2015 Yeah... didn't think of DATA statements, ouch. Maybe we can have the PC just get up and swat the programmer and make them fix it themselves. Escape character and a warning might be the best option, then. If someone doesn't know how to fix it we as a community can always help out here. Quote Share this post Link to post Share on other sites
mizapf #21 Posted August 10, 2015 Since the compact flash writing issues seem to be a bit more complicated, I just decided to prepare a new release of TIImageTool and postpone this for the next release. OK, here's version 2.1. Some minor fixes, but possibly some interesting features for you: 1. Redirect output and error messages to a log file. In previous releases, error messages were output to the console, which is not visible when you start the application by a simple mouse click; you could only see them when you started TIImageTool from the command line. Now, the output is redirected to a file "tiimagetool.log" by default. You can change the file name or return to normal console output in the Preferences. 2. Recently opened file. The most recent ten image file names are collected in this submenu. I did not know that I really missed this feature until I implemented and used it. 3. Fixed LONG issue. The previous release allowed you to create a LONG format Basic file with small programs. These files cannot be loaded in Extended Basic. There is a check now that prevents small programs to be save as LONG. 4. L3 check. There are files with a swapped L3 count. This value is the number of records in a fixed record file, but it must be set in little endian order. Obviously some DSR or some tool did this wrong. The file system check now contains a check for L3 and offers to fix the reversed numbers. 5. Check filesystem report. The filesystem check output could be stored in a file, or listed on the console. Now a report pop up in an own window when errors were found. Also, the output from the filesystem check has been cleaned up and is more informative. 6. Symbolic disassembly. Until now, the memory dump disassembler was only able to do a normal address-based disassembly. In the previous release, a tagged object code disassembler was included that is able to create source files that can be assembled again. Now, the symbolic disassembler can be used for PROGRAM files, so you can get files e.g. from cartridges that can be assembled again (not perfect yet, but already quite well). If interested, please download the package from WHTech (PC utilities) or from http://www.mizapf.eu/files/tiimagetool.zip. And have fun. :-) 2 Quote Share this post Link to post Share on other sites