Jump to content

kl99

Members
  • Content Count

    1,055
  • Joined

  • Last visited

  • Days Won

    3

Posts posted by kl99


  1. WIth "Tab" I actually meant a tab inside Web99, not in a web browser. Currently there are Tabs for "SearchFilter", "Content", "Meta Data" and "Relations". But never mind.

    I didn't manage it to run the emu as such inside the application yesterday night, but I was really tired from work, so doesn't mean much. It always showed me script errors about undefined objects.

    Maybe those are not defined due to security restriction that are on by default. I tried using such an Webbrowser Control: https://msdn.microsoft.com/en-us/library/2te2y1x6%28v=vs.110%29.aspx.

    But I don't want to spam this thread. Enough, unitl I have something to show :)

    Thanks again.

    • Like 1

  2. I quickly checked the source code and saw that it's using json format for cartridges and a windows file dialog if you select a tifile for your DSK. So I would customize the code a bit in order to feed it with a certain program / object automatically.

    The goal is to have a JS99er visible in a tab on the right side to be able to run what ever program is selected on the left side in the big tree.

    thanks :)

    • Like 1

  3. Okay, I made a prototype for Classic99 Export.

    In Web99 just right click your TiFile in the Tree and select "Copy to Classic99".

    It's hardcoded to "C:\Classic99\DSK1\" for now, so please ensure this path exists, before trying out the feature.

    It will create a File called "WEB99" in that Directory with the necessary TIFILES Header. For now it's hardcoded to be a PROGRAM Header, so no Data Files Support.

     

    In Classic 99 just use "OLD DSK1.WEB99" to load the exported Basic Program.

     

    Have fun and please give feedback:

    Web99 [2015-11-24] v0.5 Beta 2

    Web99 2015-11-24 v0.5 Beta 2.zip

    • Like 1

  4. for now Web99 relies on DSR commands, so you need a working RS232 device that is defined in the DSR.

    And I guess Bootstrapping a virgin TI-99 will always rely on having a DSR.

     

    I got permission to integrate the Audio Tape Simulation from Fredrik Öhrström into Web99.

    http://nivelleringslikaren.eu/ti994a_basic/

    So it might be that a future revision only requires your Pc Sound Output connected to the Ti-99 Cassette Port in order to bootstrap it and then load all programs via that Sound output, which might be interesting for not expanded TI-99.

    Also I wanna tweak it together with Playground to escape the TI Basic Sandbox in order to get Assembler Programs running via Audio.

     

    But we are talking far in the future here. First I need to decode all FileTypes correctly, get support for the Pc99 Diskformat, single TiFiles.

    I also want to give Emulator Users an option to quickly copy a TiFile from the Treelist into a predefined Target Path on the Pc (D:\Classic99\DSK1) in the right format.So it's directly usable from the Emulator. Done with v0.5 Beta 2

    Or even start the emulator like the Gamebase does. JS99er would make a nice 5th Tab in the Search to execute the selected program in the Search Window right away, but I would need to ask Rasmus for permission before going that direction.


  5. Yes Opry. Definately! I am planning to setup a dedicated youtube channel. I wanna do an updated version of the Powerpoint Presentation there. And of course some live demo where the computer screen is captured.
    Currently I am solely working on the Index&Search Area of Web99 and not enhancing anything on the Communication towards the real TI iron. But the time for that will come.

    Your feedback is very welcome.

    Klaus

    • Like 2

  6. Teasing you on the next revision of Web99

    post-27826-0-59645900-1447832509_thumb.png

    The Search will get several Tabs to choose from.

     

    Content will show the File Content (Basic Program Source Code, Text Files,...).

     

    Meta Data will show you all the properties.

     

    Relations will show you all relations to and from the selected TiFile. We go all the way back to the Binary, which will be the root here. The next level shows you all TiFiles you have that "represent" that binary with a certain FileName. The next level shows you all Disks containing that TiFile with that specific FileName. And the last level shows the DiskPaths from your Pc where you imported the Disk from.

     

    Relations is a direct result of Tursi's request to be able to see the actual diskpath where a TiFile of interest is originated from.

     

    • Like 2

  7. A short update after another week of development. I am trying to improve the UI, so you don't have to learn the Syntax Query in order to find your stuff.
    It's not yet ready for release and I wanna share some thoughts on upcoming changes...

    Basically there are 3 big learnings for me when dealing with comparing Ti Files and Disks.
    Every single one will mean big changes to the way the comparison will be done by the tool.
    Each one will most probably identify a lot more duplicates in your collection, resulting in a much cleaner picture.

    1. Basic Programs:
    If you want to find out whether two Basic Programs are identical, you shouldn't do a binary comparison of their PROGRAM Files.

    We are dealing with Memory Images, saved as PROGRAM Files, the binary data depends on what has been in VDP Ram and Ram when doing the SAVE Operation. And later totally depends on how the program was written/edited. Basic Programs are not stored in logical order. There is a Line Number Table which points to memory areas containing the content for that one line. That could be spread anywhere within a large area of memory. The computer adds the last edited line on top of its VDP Ram, and there is no resorting of any data during SAVE. As a result two people typing in the same program from a magazine (without any errors) will most probably result in two different binary PROGRAM Files representing the same Basic Source Code.

    In other words two PROGRAM Files can be different on binary level, but still contain the same Basic Program in them. They should therefore be identified as duplicates to each other.

    Rather you need to extract the Basic Source Code from those PROGRAM Files and compare those in order to find out whether they are identical or not. Such a Source Code comparison could even blend out different Line Numbers (10s instead of 100s,...) and different Variable Names (N$ instead of NAME$) in your comparison. Further the embedded assembler code that might be contained within the PROGRAM File should be safed as such to not be lost.

    When calculating the Hash ID for Basic Files, we make it based on the Basic Source Code.

    2. Data Files:
    If you want to find out whether two Data Files are identical, get rid of the garbage data inbetween the records.

    Most Data Files (DIS/VAR, DIS/FIX, INT/FIX and INT/VAR) have such record lengths that there is some unused memory at the end of each Disk Sector. A DIS/VAR 80 only contains 240 Bytes of real data in each Disk Sector. The remaining 16 Bytes are basically wasted and will contain random data or even pieces of data from former Files that have been stored at this Disk Sector. So we are dealing with irrelevant Data inbetween Records. If you compare two Data Files, these areas don't have to be identical in order for the actual Data Files to be identical. Only the actual Records are of interest for comparison.

    When calculating the Hash ID for Data Files, we have to exclude all data in the allocated sectors which is not part of any record.

    3. Disks:
    For two Disks to be identical, the binary data does not have to be identical.

    Since we already found two situations, where we don't have the necessity for Files to be binary identical. We can't enforce the Disks to be binary identical, otherwise we don't detect all the duplicates.

    When calculating the Hash ID for a Disk, we can't take the whole binary stream into account.

    • Like 2

  8. I'm not terribly fond of having executable files stored permanently in my temp folder, though... allowing that is opening up a lot. Is there any way you can just ship SciLexer.dll with the application rather than have it extracted? If not, can you maybe tag the file for deletion on exit so at least it doesn't hang around and only exists during runtime? :)

     

    Thanks for the feedback. This comes out of the box like that from this 3rd party library. The .net Scintilla Library is wrapping around the Scintilla.dll which is a C++ code library. The only thing I changed was adding support for TiBasic/XB Syntax Highlighting. But I get your point and will try to customize the library to have it in the application folder.

     

    Update [2015-11-24]:

    The behavior got changed with Web99 v0.5 Beta. It now creates the necessary dll inside the Web99 Folder. The Temp Path is no longer used.


  9. Try things like adding :

     

    +filename:EDIT*

     

    --> this will filter to a list only matching to your filter. so in this case you only get files that start with EDIT or Edit or edit. The star is a wildcar for nothing or any number of characters afterwards.

     

    +filename:*DIT*

    --> same as before but it shows you you can even search with wildstars in the beginning

     

    +type:"dis/var 80"

    --> file to only match Files of Type: DIS/VAR 80

     

    +type:basic

    --> only BASIC Files.

     

    +diskname:xb*

     

    --> only return Disks or DiskFileRecords that have a DISKNAME starting with "XB..."

     

    +source:*say*

     

    --> returns any Basic Program that has the string "SAY" in it, mostly this will result in programs using SPEECH.

     

    +source:*Gilliland*

     

    --> again searches for the provided string in all your indexed Basic Programs.

     

    The whole search should be case insensitive.

    • Like 1

  10. I hope it's fixed now Tursi. Thanks for the good bug report. I recompiled the Scintilla.dll as release now instead of only recompiling ScintillaNET.

     

    Web99 v0.4c

    Web99 2015-11-10 v0.4c.zip

     

    Please tell me if it's fixed.

     

    I know about the ugly display of DIS/VAR Files, I simply didn't have time yet for that.

    Will also come up with something to display the DiskPath. The info for that is already within the index .

     

    Until the rs232 transfer towards the TI-99 runs nice I could think of some nice file write of the selected binary into a chosen target path (think of "D:\Classic99\DSK1").

    The goal is to get rid of the dependency to such things as navigating through your Disk Libraries and manually copy over files with TI99DIR or other tools.

     

    Update [2015-11-24]: An Export of a wanted TiFile to the Classic99 Disk Path is now possible with Web99 v0.5 Beta 2.

    I have a ton of entries on my web99 todo-list. :)


  11. you can add multiple root folders to the index. once you have scanned a certain folder, the original data is no longer necessary. it's within the index then.
    simply go:
    "Select Disk Root Folder", select Folder Root 1, "Start Indexing" -->

    "Select Disk Root Folder", select Folder Root 2, "Start Indexing" -->

    ...

    "Find Duplicates"

    All should then be in the index and any duplicates identified.

    • Like 1

  12. i will check that issue asap (today).

    it only does v9t9 diskimages so far. but i pretty much encapsulated the lowest level nicely, so pc99 diskimage support should come soon.
    individual files are planned as well of course.
    browse the list by simply clicking on the top buttons "TiFile" or "DiskFileRecord". Those will show 5000 entries by default. You can change the maximum number of Result in the Search View.

     

    Can you give me some steps on how to exactly reproduce the Exception?


  13. This is version 0.4 of Web99:

     

    I want to give you a quick update on this project.
    There is heavy works going on on this for a while now. Further I did a presentation on the TI Treff and on the Chicago TI Faire about Web99.

    Here is a presentation about Web99 from the Chicago TI Faire 2015:
    http://www.ustream.tv/recorded/76712901?rmalang=de_DE

     

    What was worked on?

     

    - nice treeview of what is Inside the Index, all Types (DIS/FIX, PROGRAM,...) get their own icon

    - TI Basic/Extended Basic Syntax Highlighting

    - created a custom Lexer for within the Scintilla Library

    - added a custom Scintilla.Net Library based on that
    - this will be extended to Syntax Highlighting for all other kinds of Source Code like Assembler, GPL,...
    - a public independent release of this will come for other Tools to integrate, just need to get some bugs fixed there

    - fulltext search within TI Basic/XB Source Files

    - using Subversion for Version Controlling the Source Code of the Project for a while already

    - created classes for TI Entities like Ti File Binary, Ti File, Disk File Record, Disk and Disk Clone and seperated them from methods which are extracting data for those

    - found a big bug in the code which let clustered Ti Files to not have a correct/usable binary, fixed it of course. Many more Basic Program have been extracted as a result.

    - started to write some first Unit Tests to test the Code of Web99

    - added a lot of checks in code to not let a corrupt Disk Image crash the Application

    - small fixes to Basic Source Code formatting, the reference for the look is always how it looks when you LIST the same program in your TI. Both TI99Dir and TIImageTool have some issues there as well.

    - Basic Source Code Extraction now properly stores and displays characters beyond Ascii Code 127 (using Codepage 850). Thanks to John G. for pointing out the need.

    - Fixes in calculation of FileSize and ClusterLength (many Files have incorrect values in their File Descriptor Record) which have let to corrupt Binaries.

    Have fun:

    Web99 version 0.4

    2015-11-09

    Web99_2015-11-09_v0.4.zip

    • Like 3
×
×
  • Create New...