Jump to content

Michael Rittweger

New Members
  • Content Count

  • Joined

  • Last visited

Community Reputation

35 Excellent

About Michael Rittweger

  • Rank
    Space Invader
  • Birthday 03/20/1966

Profile Information

  • Gender
  • Location
    Kiel, Germany

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Just an idea how to prevent any problems with "escape" characters or how you'd like to name any of those characters outside of the "normal" character set (32..95 or max. 32..127): A german TV station (WDR - Westdeutscher Rundfunk) transmitted software in the 80s by a scanline of the TV signal outside of the visible area (like "VideoText" is transmitted, too). To prevent problems with "special" characters they used a translation they called "sixeln" (derived from the number "six"). It was quite easy: Let's assume 3 bytes of data: >F3, >41, >07 This is in binary notation: XXXXooXX, oXoooooX, oooooXXX Now cut this line of 3*8 = 24 bit into 4 parts of 6 bit each: XXXXoo, XXoXoo, oooXoo, oooXXX interpret every 6 bit as a new byte of 8 bit (left padded with zero) and add 32 to each value: ooXXXXoo = >3C, +32 = >5C ooXXoXoo = >34, +32 = >54 oooooXoo = >40, +32 = >60 oooooXXX = >07, +32 = >27 Now you have a sequence of 4 Bytes instead of 3, but every byte has a value in the range of 32..92 and will not collide with any restrictions. And decoding is as easy as encoding. Just my $0.02 Michael
  2. Calls itself, yes, but an exit from recursion is not mandatory, although always makes sense. See the dictionary entry: recursion: see recursion The exit from a recursion is only needed, because resources don't allow endless recursion loops. But a fractal (Mandelbrot) graphics for example could be rendered endlessly. You just limit the recursions programmatically, because a) the display can't show smaller details than a pixel and b) the return stack would grow endlessly but not having endless RAM to store it. Thus 100 A=0 110 GOSUB 200 120 END 200 A=A+1 220 GOSUB 200 would be a legitimate recursion, although 100 A=0 110 GOSUB 200 120 END 200 A=A+1 210 IF A>50 THEN 230 220 GOSUB 200 230 RETURN makes much more sense and would not, like the first one, result in a stack overflow / out of memory error. Michael
  3. I'd like to have a peb again, to get started. ;-) I had to dump my peb roughly 2005 when I realized that the hole thing became rusty all over after 15 or so years in the basement. But as far as I can see: Nobody is selling a peb these days. Or is there any source I have overlooked? Michael
  4. Does it have a -joyport and / or does it support -cass1 / -cass2? I'll have to extend the exceptions on those one, too, if not. Michael
  5. Hi, all! Ok, I managed to get the Geneve up and running from the IDE, although I have absolutely no idea what I may type in at that prompt. But anyhow... I added the "memex" to the comboboxes. But there is no ROM file for them, isn't it? Well, the Geneve starts up, so why bother? I made something I really don't like: I coded a few (well, a few more...) exceptions to deal with the Geneve. So, if "geneve" is selected as machine the syntax is a bit different for the whole ioport thingy. I will have to change that ugly hardcoded behaviour some time. I found an unexpected behaviour (wouldn't call it a bug) with the various text fields: If you want to "clear" them, they filled up on next startup again. This was a security branch in the "load settings" routine, that prevented overwriting of values with empty ones, which resulted in default values showing up. I disabled that behaviour. I still have no idea how to implement additional options for e.g. the TIRS232 in an ergonomic way at the IDE tab page. But: I have added an extra "options" textbox on the MAME tab page where you can store those options. That'd be the place for the "-debug" or whatever. A new setup zip is online: Michael
  6. I would, if I would... ;-) I'm only using hfdc as the single controller for floppies and hard drives in my setup. The problem I meant is another one, solely created by me. ;-) The IDE collects the info the for peb slots one after another. After that it scans from 2 to 8 if the inserted card, if any, is a hdc. If yes the slot is kept as device for the following -ioport:peb:slot<x>:<ctrl>:h<y> options. The same is done for the fdc part. That's what I meant: If you put a fdc/hdc combo like the hfdc into slot 6 and another pure fdc like the tifdc into slot 8, then the hdc in slot 6 will be used, because there is no other one, but the fdc in slot8 overrides the one in slot 6. Thus it would result in -ioport:peb:slot6:hfdc:h1 generic -ioport:peb:slot8:tifdc:f1 525dd for example. There is currently no way to use the fdc of the slot 6 hfdc in this configuration. If the hfdc is in slot 8 and the tifdc in slot 6, then both fdc and hdc would be used from slot 8. Pull out the card in slot 6, it's useless in that configuration. And that's what I did. ;-) Michael
  7. Hmmm... There is no "-ioport peb" with the Geneve, too? That rises another problem... Michael
  8. Yep, you're absolutely right with that. As of now the ComboBoxes have a "hard coded" list for their lookups. Later on I would like to have them dynamically filled. So, if you place any ROM or catridge files into the appropriate folders the list would show them up autmatically. But right now I will (just) have to add the entries manually. That's a 5 minute task, indeed. On the other hand... You should be able to manually type in the machine name (or the card name for the peb) into the text field of the ComboBox and that should be saved in the settings then, too. I just tried... Hmmm... There's another (small) problem. The Geneve doesn't know about the -gromport. But de-selecting that one and the cartidge doesn't help: Some line in the code seems to put ExBasic into the cartridge option, even without an actice gromport, and that leads to an error message (at least with MAME) again. I'll check that asap. Are you using the -debug option all the time? I'd suggest to set it in the mame.ini then, until... I will add a textbox to enter additional options for the emulator. (That might help for the next paragraph, too.) What might be a bit more of a task will be the RS232 settings... I'm not quite comfortable with the way I collect the settings for the peb and their slots. I would love to see that more dynamically. Right now it is very static as you can set options for "a" (yes, not "the") f/hdc. The most important drawback as of now: You can only use _one_ controller, kind of. Specifying a fdd in slot 6 and slot 8 will only use slot 8 then. hfdc in slot 6 and tifdc in slot 8 would result in using the fdc from slot 8 and the hdc in slot 6. I'm not sure how I will add options for other cards, like the RS232, right now. I'll have to have a closer look at that tab page after some other, minor changes and extensions. Michael
  9. Seems so... I tried a while to get this d**n thing working, but to no avail. I searched for alternatives and after 3 other attempts I stumbled over "Visual Studio Installer". That one at least produced usable output. I had to change / extend the original project a bit, but then... a setup.exe and a setup.msi came out! You need both of them and so I combined 'em in a "TI xdt99 IDE.zip" file. And the zip for download is found directly from the root in the "Setup" folder. Not using .exe as file extension for the download has some other benefits, too. Although an option "remove previous versions" (internally) is checked it refuses to install over an existing version. You'd have to uninstall via Windows. But hey... Michael
  10. Argh... My first attempt with that "ClickOnce" installer and after getting your response I found: stackoverflow.com: will clickonce be ported to net core 3 as well as winforms That at least sounds as if this could be the problem. I'll have to dig even deeper, but I will have to search for an alternative installer, too, I'm afraid. Michael
  11. Thank you very much for the logfile. I have checked it and wasn't sure at first sight, but after digging a bit deeper... The problem seems to be that the installation routine tries to download (and install) .NET framework 4.8 and fails at this step. I have checked my setup: In the "publish" (see left menu "Veröffentlichen") properties section via "required components..." (see right button "Erforderliche Komponenten...") the .NET framework 4.8 is checked and the option "download from component creator" (see option "Erforderliche ... Komponentenherstellers ...") is checked - that'd be Microsoft. Hmmm... Looks to me as if the download link to their download site is broken. The alternative (2nd option) would be to store a copy for downloading at the (my) GitHub repository, but I'm not sure how and, even more important, if I am allowed to do that. And with the 3rd option I'd have to specify an alternative download link. I'll have a closer look at this problem. And: No, you do not need to have xdt99 installed at this point. The IDE is "standalone" unless you try to start any external applications like the assembler, emulator etc. via the buttons. Up until that point the IDE should start without any error. Thanks for your feedback! Michael
  12. So, as far as I understand: All (currently pre-defined) tools could be used as is, only the cross-assembler itself has to be exchanged. The disk manager to create the disk image and copy / convert the files could still be used from the xdt99 package, like the Basic converter, too. I don't know of a cross assembler for the Geneve, but the xdt99 calls itself "a TMS9900 cross-assembler" and a quick check of the docs didn't reveal any options for creating Geneve compatible output. But if anybody could name a Geneve compatible cross assembler this would be the place to set it up, the XDT tab of the IDE: And please keep in mind: This is a "user" setting that can be changed by the user at any time and will be saved in the user options locally. If somebody replaces one or more of the tools successfully I should consider changing the headline into something more general. Michael
  13. Hmmm... I have to admit: I have absolutely no clue. I don't have _any_ experience with the Geneve at all. But it _may_ be possible, theoretically. The IDE starts an editor with parameters, e.g. the source filename. You may choose another editor instead of NotePad++, of course. This is the Windows side, no Geneve involved. Then the IDE starts an assembler, again with parameters for input, output and other options. Again: Windows side. I have the IDE designed for use with the xdt99, because it has the tools I thought were needed for my needs. But if the functionality can be achieved by another tool (or other tools) that can be set up at the settings tab. The xdt99 cross-assembler produces object (EA3) and image (EA5) output. If the Geneve can use those, then it should be possible. But still yet: Windows side. Next step within the IDE is the creation of the disk (disk image file, to be a bit more accurate). Still: Windows side, but... The disk is created in a format that can be read by MAME and... uhm... the other one... V9T9? Not sure about that right now. The files (object, image etc.) are transferred from their Windows format as DIS/VAR80, DIS/FIX80, PROGRAM etc., according to their designation, to the disk. That's the TI99 side. So after this step there is _one_ file stored in the Windows filesystem that contains one or more files in the TI99 filesystem. So if the Geneve reads the same files from a disk in the same format as the 99, then... You just have to find a way to mount the *.dsk files at the Geneve side (emulator) or write it to a real floppy. And, as much as I want to, I can't help with that. Michael
  14. IDE for developing in TI99 Assembler on the PC (Windows) (using NotePad++ Editor, xdt99 Cross-Assembler and MAME Emulator) https://github.com/miriki/TI-xdt99-IDE/ Hi, all! A few may have noticed: In an xdt99 thread I have published a Batch for DOS that shortens a lot of typing work when developing software. After years of abstinence from the TI99 I actually remembered the "good old days" developing tools and libraries again and tried to recall what I was doing those days. Well, 35 or so years... Firing up the MAME emulator, using TI99_4ev as machine, a cartridge with Editor/Assembler inserted and the needed disk in DSK1 mounted I started typing a few lines while reading through a bunch of books and forum articles. Hmmm... A PC keyboard and the function keys of the TI99, two worlds collide. Yes, the editor _was_ a very good one, at least that days. But nowadays I really, really prefer the comfort of NotePad++ or at least any other GUI based editor. Then I've read about the one or another Cross-Assembler to develop in Windows and using the output to mount within MAME. Almost right from the beginning I got stuck with xdt99, a collection of not only a cross-assembler, but other tools like a "disk creation", too. An integration into "IntelliJ IDEA" sounded good, but.... Hmmm... Maybe I have not digged deep enough, but there is only the editor used for syntax highlighting, isn't it? Putting things together: A batch for DOS (Windows, Microsoft, sorry...) was created that enabled the workflow from editing the Assembler source code assembling the source code into object code creating a disk which contains the object file starting an Emulator with this disk mounted plus a few more tasks... To be honest: I don't like DOS batches with more than, let's say, 25 or so lines. The syntax is ugly and the CLI commands are far from comfortable - not comparable with a high level language. Changing default values is a pain, (re)storing user settings a tremendous effort and doing all with user parameters results in a jungle of % characters shattered across the lines. So I used that batch only as a sketch for a "real" project: An IDE for those tools written in a high level language. I decided on C# (VB.Net would have been the alternative), because it is the preferred language right now in our company. Training... If anybody would like to have a look at it: I just published that project on GitHub. That was kind of training, too. We use Azure DevOps in our company and I have to get familiar with those cloud based team thingy. So hopefully I published correctly - it is my first published project over there. https://github.com/miriki/TI-xdt99-IDE/ This is the main page of the project. There is a README, but empty as of now. You will find a subfolder "TI xdt99 IDE" though... There is a subfolder "snap" which contains a few screenshots of the published project: Settings_Xdt.png shows the settings to include the tools from the xdt99 package. Settings_Mame.png shows parameters for the emulator, including configuration of the peripherals etc. Settings_Ide.png shows the standard working area with buttons to start actions and checkboxes to set options. Output_CommandStack.png shows the list of calls to external tools like the editor, assembler etc. Output_Standard.png shows the standard output of the last command, for example the directory of the disk. Output_Errors.png shows the error output of the last command, if there is any. Emulator_AutoStart.png shows the XB output from DSK1.LOAD if "catalog" and "autostart" is checked. Output_Result.png shows the loaded and started demo program I was just working on. Another subfolder "publish" contains a "setup.exe" that should install the IDE. I'd like to get feedback, if that thing runs without any problems. But what has to be done? Well... Perhaps it is best to show my setup: E:\TI99 mame64.exe >roms ti99_*.zip >hash ti99_cart.xml (thanks again, mizapf!) >cart editass.zip minimem.zip exbasic.zip >disk *.dsk >hard *.chd This should be enough to start MAME using e.g. ti99_4ev as machine. Try it... mame64 ti99_4a If successful, try inserting a cartride: mame64 ti99_4a -gromport single -cart exbasic If successful, try connecting a peb with a hfdc in slot 8, a disk drive connected and a disk inserted: mame64 ti99_4a -gromport single -cart exbasic -ioport peb -ioport:peb:slot8 hfdc -ioport:peb:slot8:hfdc:f1 525dd -flop1 disk/flopdsk1.dsk whew... After the first start of MAME there will be a few more subdirs like cfg, nvram etc. You might like to start MAME with -createconfig and edit the output mame.ini to suit your needs. I added cart and cart2 subdirs to the roms path, disabled the info screen at startup and the like... Then I added a subdir >xdt99 xas99.py xdm99.py xbas99.py >lib vdptools.a99 >projects >gmode gmode1.a99 etc. The "lib" folder contains a "vdptools.a99" file right now. There are only a few routines to avoid "BLWP VSBW" etc. in it. The "projects" folder contains the, as you already might have guessed, projects I am working on - for example a "gmode" subfolder. And in the "gmode" folder there are gmode1.a99, tmode.a99, mulcol.a99 and bitmap.a99. With this setup the settings on the XDT and MAME tabs should be self explanatory, kind of... The right hand side shows extensions for the filenames. For example the source "gmode1" gets expanded to "gmode1.a99" for the editor, is compiled into "gmode1.obj" and will become "GMODE1O" when copied to the TI disk. You may change the settings on the MAME tab and can use the IDE purely as a frontend, if you like. The "run" button will start the emulator without fiddling around with an assembler or anything else. BTW: Settings are loaded at startup of the IDE and saved when the IDE is closed or any external program is called. The IDE tab is the "all singing, all dancing" desktop for your development. The left box lists all subdirs aka projects, the right box lists the source files in that (selected) project. The selection is shown additionally in the two textboxes in the upper right (for later extensions). The "edit" button starts the editor, the "assemble" buttons starts the xdt99 cross assembler. It creates the object, image and rpk files, if checked. If "all" is checked, not only the actual selected source but all within the project will be assembled. The "disk" button creates the disk to be mounted for the emulator. It copies the source, list, object and image files, if checked. Again: For "all", if checked. Additionally it can create a DSK1.LOAD to show the contents of the disk and / or load and run the object file of the selected source. The "emulator" button starts the MAME emulator with the configured devices. If set up properly you might select "TI Extended Basic" from the master selection, get the disk contents displayed and after "please wait..." the compiled program should start. The "ADE" button is a shortcut: (A)ssembler, (D)iskManager and (E)mulator - all in one shot. So after editing / saving the source the test only needs 1) click on "ADE" button, 2) any key at the master title screen 3) "2" for XB, then wait... and enjoy! The menu at the top has no function as of now. The status bar at the bottoms shows info about running external tools to the left, "idle" to the right otherwise. Have fun! Michael
  15. Hi, ralphb! I'm not quite sure, but... Those OPEN and INPUT comands are allowed only while running a program, not directly on the prompt. Line numbers... Michael
  • Create New...