+DrVenkman Posted July 27, 2016 Share Posted July 27, 2016 I updated the SDX installs in Altirra last night before trying it in the next day or two on real hardware. First I updated the (virtual) U1MB installation (which mirrors my real hardware with FJC's latest BIOS, SIDEloader and PBI driver). I had no trouble updating and afterward things appear fine. Next I did the (virtual) SIDE2 cart. Again things appear to be fine. However, there is something odd going on. With just the U1MB installed and booting to SDX, switching to CAR: and then typing a simple DIR | LESS works just fine as expected; I get one page worth of directory contents and a prompt to continue the listing or quit. However, turning the U1MB SDX off and trying the same with the SIDE2 version of SDX gives me odd-ball errors. See screenshot below. SDX 4.48 running from U1MB: SDX 4.48 running from SIDE2: Quote Link to comment Share on other sites More sharing options...
flashjazzcat Posted July 27, 2016 Share Posted July 27, 2016 CAR: only has one channel... I suspect that has something to do with the pipe not working. 1 Quote Link to comment Share on other sites More sharing options...
drac030 Posted July 27, 2016 Author Share Posted July 27, 2016 This may occur e.g. when the $TEMP variable is set to something non-writable like CAR: This is wild guess only, but I just reproduced this effect by doing SET TEMP=CAR: and then DIR | LESS. It would help if you could list the env variables for both cases. I also think that if $TEMP is not set, the current directory is assumed. The pseudo-pipeline in DIR | LESS of course needs a temporary storage, so it writes data to a temporary file (located in $TEMP directory). Quote Link to comment Share on other sites More sharing options...
+DrVenkman Posted July 27, 2016 Share Posted July 27, 2016 (edited) CAR: only has one channel... I suspect that has something to do with the pipe not working. But why would it work with the U1MB then? This may occur e.g. when the $TEMP variable is set to something non-writable like CAR: This is wild guess only, but I just reproduced this effect by doing SET TEMP=CAR: and then DIR | LESS. It would help if you could list the env variables for both cases. I also think that if $TEMP is not set, the current directory is assumed. The pseudo-pipeline in DIR | LESS of course needs a temporary storage, so it writes data to a temporary file (located in $TEMP directory). Hmm. These are default SDX roms right off the project page, with no changes made to any of the CONFIG.SYS options or system variables. EDIT: Okay, I rebooted, manually loaded RAMDISK.SYS, then set TEMP=DO: After that, DIR | LESS works as expected. Edited July 27, 2016 by DrVenkman 2 Quote Link to comment Share on other sites More sharing options...
drac030 Posted July 27, 2016 Author Share Posted July 27, 2016 (edited) Ok, it behaves so, because normally the $TEMP is set by RAMDISK.SYS. In SIDE and SIDE2 the RAMDISK.SYS is removed from the default CONFIG.SYS, and the SIDE.SYS driver is loaded instead. Most probably because of the MEMLO being too high if both are loaded. But this means that you must set the $TEMP variable manually to a valid drive, if you want the pipelines to work properly. EDIT: you were quicker Edited July 27, 2016 by drac030 3 Quote Link to comment Share on other sites More sharing options...
sanny Posted July 28, 2016 Share Posted July 28, 2016 Hmm, a question: The download of the "supercart" version contains an ATR and ROM file. The ATR includes a "flasher" program to update the cart. I've successfully used that. Now, if I make changes with the SDXImager, the program just modifies the ROM file. But how do I program this ROM file to the cartridge? Is there a stand-alone "flasher" program? Or how can I create a similar ATR which includes the "flasher"? Quote Link to comment Share on other sites More sharing options...
drac030 Posted July 28, 2016 Author Share Posted July 28, 2016 A flashing ATR is just a disk in SpartaDOS format, containing two files: the flasher (*.COM) and the ROM image (*.ROM). Just replace the latter. Perhaps the Altirra's Disk Explorer (Tools->Disk Explorer) may be used to do that. Quote Link to comment Share on other sites More sharing options...
flashjazzcat Posted July 28, 2016 Share Posted July 28, 2016 Yes: Altirra's disk explorer does the job well. If you have plenty of RAM you may flash the ROM directly with Uflash, although it hasn't yet been fixed up to detect the supercart. Quote Link to comment Share on other sites More sharing options...
Frankie Posted July 28, 2016 Share Posted July 28, 2016 uflash did it all with no problems! - 2 U1MB 2 SIDE 1 1 SIDE 2 1 Incognito 1 IDE+ 1 MyIDE 1 Quote Link to comment Share on other sites More sharing options...
drac030 Posted July 28, 2016 Author Share Posted July 28, 2016 (edited) Just in case if anyone has a problem unpacking files on the Toolkit X ATR: please see BAT>UNPACK.BAT. Executing this file unpacks all *.ARC files found in the current directory. Edited July 28, 2016 by drac030 3 Quote Link to comment Share on other sites More sharing options...
fujidude Posted July 28, 2016 Share Posted July 28, 2016 As anticipated, 4.48 is even better than 4.47. It's really great to see what is awesome become even more awesome. Good work guys! So far what is tickling my fancy the most is the improvements to Sparta Commander, and the ability to make a non disk device like CAR: or PCL: the current working device. Quote Link to comment Share on other sites More sharing options...
FifthPlayer Posted July 28, 2016 Share Posted July 28, 2016 What I like about it is that 4.48 is at least somewhat compatible with the SIO2SD, and can now read filesystems from it. That makes SDX actually workable for me now, since SIO2SD is the only storage device I have. (I have SDX on an 8Mb Maxflash cart). Quote Link to comment Share on other sites More sharing options...
fujidude Posted July 28, 2016 Share Posted July 28, 2016 (edited) @Draco probably, but anyone who has insight please don't hesitate to jump in. In light of the fresh new release of 4.48 and its corresponding toolkit disk, I have decided to revisit my idea of attempting to make a recursive script to automagically find all the ARC files and extract them all. As Draco pointed out, there already exists code to do the ARC extraction. That works good. I want to wrap that up in code that will "walk the directories" doing that whenever an ARC file is discovered. Recursion is the only way I can think of to accomplish this in a script (batch). So here's where I'm at; I have started formulating and experimenting with recursion through a directory tree but I'm just doing a simple dir listing when in them to see how it works. And it does work... at first. But before long, perhaps just 3 or 4 levels deep in recursion, things go wrong. An attempt is made to CD into something other than a directory, even though the loop specifies to work in +s *.*. I'm not sure how that happens, and also according to the docs, one should be able to go as deep as 8 levels without incident. I will put the code below: EDIT: I will get back to this after I check it some more. Edited July 28, 2016 by fujidude 1 Quote Link to comment Share on other sites More sharing options...
sanny Posted July 28, 2016 Share Posted July 28, 2016 A flashing ATR is just a disk in SpartaDOS format, containing two files: the flasher (*.COM) and the ROM image (*.ROM). Just replace the latter. Perhaps the Altirra's Disk Explorer (Tools->Disk Explorer) may be used to do that. Ok, yes. Stupid me... Quote Link to comment Share on other sites More sharing options...
sanny Posted July 28, 2016 Share Posted July 28, 2016 Another SDX-newbie question: I want to copy the CONFIG.SYS from CAR: to D1:. It doesn't work: D1:COPY CAR:CONFIG.SYS CAR:CONFIG.SYS 161 Too many channels open D1: Quote Link to comment Share on other sites More sharing options...
Roydea6 Posted July 28, 2016 Share Posted July 28, 2016 TYPE CAR:CONFIG.SYS >>CONFIG.SYS 1 Quote Link to comment Share on other sites More sharing options...
sanny Posted July 28, 2016 Share Posted July 28, 2016 Thanks. Just found it out by myself. Quoting the manual: SDX supports up to 16 open files, but each driver has its own limitation. The DSK: driverallows you to specify the maximum number of channels open to it (the default is 5which should be enough for any application). The CAR: driver only has 1 channel whichmeans that you may not copy files from CAR: with the COPY command. (COPY uses twochannels, one the source device and one on the destination. This is because COPYopens one channel to the directory and another to the file to be copied.) To overcomethis limitation, you may TYPE the file on CAR: and redirect output to a file on disk (e. g. TYPE CAR:COMMAND.COM >>NEW.COM). Quote Link to comment Share on other sites More sharing options...
fujidude Posted July 29, 2016 Share Posted July 29, 2016 (edited) Okay continuation from post #38 above... Here is the code: ;WD.BAT by FujiDude proc walkdir seterrno 0 for %d in +s *.* echo %d = $%d cd $%d if error exit fi gosub walkdir cd < next %d return gosub walkdir And here is the output: I:\ #-i:\wrkbench\wd %d = BAT %d = EXAMPLES %d = MAKE %d = MAKE.TXT 150 Path not found I:\BAT\EXAMPLES\MAKE\ #dir Volume: SYSTEM Directory: MAKE MAKE BAT 586 22-08-10 9:58 MAKE TXT 523 22-08-10 9:52 62683 FREE SECTORS I:\BAT\EXAMPLES\MAKE\ Edited July 29, 2016 by fujidude Quote Link to comment Share on other sites More sharing options...
Roydea6 Posted July 29, 2016 Share Posted July 29, 2016 @Draco probably, but anyone who has insight please don't hesitate to jump in. In light of the fresh new release of 4.48 and its corresponding toolkit disk, I have decided to revisit my idea of attempting to make a recursive script to automagically find all the ARC files and extract them all. FIND B:*.ARC >>TOOLS.BAT Gives a list like this.. DB:>MAN_CMD.ARC DB:>MAN_DRIV.ARC DB:>UTILS>APETIME.ARC DB:>UTILS>CDD.ARC DB:>UTILS>CRC32.ARC DB:>UTILS>DD.ARC DB:>UTILS>DELDUP.ARC DB:>UTILS>DPOKE.ARC DB:>UTILS>DU.ARC DB:>UTILS>FA_REG.ARC DB:>UTILS>FSTRUCT.ARC DB:>UTILS>HDSC.ARC DB:>UTILS>HEXDEC.ARC DB:>UTILS>INVERSE.ARC DB:>UTILS>LS.ARC DB:>UTILS>MACH.ARC DB:>UTILS>MD5.ARC DB:>UTILS>MEMINFO.ARC DB:>UTILS>MKATR.ARC DB:>UTILS>NVRAM.ARC DB:>UTILS>PHDPLD.ARC DB:>UTILS>RDDUMP.ARC DB:>UTILS>RPM.ARC DB:>UTILS>RUN.ARC DB:>UTILS>SL.ARC DB:>UTILS>STAT.ARC DB:>UTILS>TAR17.ARC DB:>UTILS>TREE.ARC DB:>UTILS>TSR.ARC DB:>UTILS>WC.ARC DB:>UTILS>XFCONF.ARC DB:>UTILS>XT.ARC DB:>UTILS>XVER.ARC DB:>SHELLS>MYDUP.ARC DB:>SHELLS>SC100.ARC DB:>SDX42>ERR_GMSG.ARC DB:>SDX42>U_GETKEY.ARC DB:>SDX42>XCOMLI.ARC DB:>SDX42>JFSYMBOL.ARC DB:>DSKTOOLS>EDDY204.ARC DB:>DSKTOOLS>CLX19C.ARC DB:>DRIVERS>CAD.ARC DB:>DRIVERS>CPMFS.ARC DB:>DRIVERS>PBI.ARC DB:>DRIVERS>KTRACE.ARC DB:>DRIVERS>RAMD816L.ARC DB:>DRIVERS>FATFS.ARC DB:>DRIVERS>TURBOBRD>65816.ARC DB:>DRIVERS>TURBOBRD>HRAMTST.ARC DB:>DRIVERS>TURBOBRD>HRAMSPD.ARC DB:>DRIVERS>TURBOBRD>RAPIDRD.ARC DB:>DRIVERS>SCRDRV>CON.ARC DB:>DRIVERS>SCRDRV>SVBXE104.ARC DB:>DRIVERS>SCRDRV>RC_GR8.ARC DB:>DRIVERS>SCRDRV>VBXE.ARC DB:>DRIVERS>PCLINK>PCLINK.ARC DB:>DLL>UNIXTIME.ARC DB:>DLL>FSEL.ARC DB:>COMPAT>VPRINT.ARC DB:>BOOTLD>SDLOAD.ARC DB:>BAT>MAKE.ARC 61 matches found! And then use ED TOOL.BAT and edit for this effect.. COPY B:>UTILS>*.ARC COPY B:>SHELLS>*.ARC COPY B:>SDX42>*.ARC COPY B:>DSKTOOLS>*.ARC COPY B:>DRIVERS>*.ARC COPY B:>DRIVERS>TURBOBRD>*.ARC COPY B:>DRIVERS>SCRDRV>*.ARC COPY B:>DRIVERS>PCLINK>*.ARC COPY B:>DLL>*.ARC COPY B:>COMPAT>VPRINT.ARC COPY B:>BOOTLD>SDLOAD.ARC COPY B:>BAT>MAKE.ARC ECHO BAT DONE.. Move this batch file to Partition/Folder where you want the ARC files to go an run it.. Not a neat script and took about 10 Minutes to complete but OK for my needs.. 1 Quote Link to comment Share on other sites More sharing options...
fujidude Posted July 29, 2016 Share Posted July 29, 2016 @rdea6: I'm always interested to see how other Atarians such as yourself approach things. That does work, but for me I wanted to unpack the ARCs in their original hierarchy, not in one flat folder. What I've been doing in the mean time (if and until I can ever create exactly what I want) is walking the tree manually and using the UNPACK batch code that Draco referred to. Like your method, that also took me not much time to do. But for me it isn't so much about just making the task easier and quicker; rather it's about the challenge to create the algorithm. As a bonus, if I am able to accomplish it, then it can save many people the 10 minutes or so which then makes the effort more worth it even from a time investment perspective. 2 Quote Link to comment Share on other sites More sharing options...
drac030 Posted July 29, 2016 Author Share Posted July 29, 2016 @fujidude: that looks like a bug, yes, as, despite the +S, it picks up the last file in the directory. This certainly needs closer inspection. For now I have no clear idea where to look to trace it down. @rdea: a list of subdirectories is easier generated with DU /Q. 1 Quote Link to comment Share on other sites More sharing options...
drac030 Posted July 29, 2016 Author Share Posted July 29, 2016 (edited) @fujidude: I can confirm, that is a bug in the FOR command. It does not correctly handle EOF. It is reproducible in much simpler circumstances, e.g.: for %d in +s *.* echo d = $%d next %dwhen ran on an empty disk, will display 'd = MAIN' which is obviously incorrect Anyway, I do not know if your approach has much chance to work, because of the very limited size of the "stack" the GOSUB/RETURN and FOR/NEXT utilize. Edited July 29, 2016 by drac030 1 Quote Link to comment Share on other sites More sharing options...
fujidude Posted July 30, 2016 Share Posted July 30, 2016 (edited) @fujidude: I can confirm, that is a bug in the FOR command. It does not correctly handle EOF. It is reproducible in much simpler circumstances, e.g.: for %d in +s *.* echo d = $%d next %dwhen ran on an empty disk, will display 'd = MAIN' which is obviously incorrect Anyway, I do not know if your approach has much chance to work, because of the very limited size of the "stack" the GOSUB/RETURN and FOR/NEXT utilize. Well the docs say up to 20 levels deep but only up to 8 is safe. I think 8 is probably more than enough in most cases since the path length is so limited in the 1st place. I'm not giving up on this just yet. Is there a way to conditionally test if something is a directory? I think I just found it in the manual... IF NOT EXISTS +S %1 I'm going back to digging around more. Edited July 30, 2016 by fujidude Quote Link to comment Share on other sites More sharing options...
fujidude Posted July 30, 2016 Share Posted July 30, 2016 Okay... I have achieved success (regarding the recursive script to unpack ARCs) ! At least preliminarily it appears so. The basic task is working but I have a couple small nagging issues to try and clean up. Stay tuned. 1 Quote Link to comment Share on other sites More sharing options...
drac030 Posted July 30, 2016 Author Share Posted July 30, 2016 (edited) I can see that this is not documented anywhere, but NEXT actually accepts more arguments than just the counting variable name. The syntax is: NEXT varname [atr] [filemask] The atr and filemask are supposed to be the same as in the FOR var IN [atr] [filemask]. When these are not given, "all files" and "*.*" are assumed. In other words, if the line starting the loop specifies attribute different than none ("all files") and/or a mask different than *.*, these must also be specified in NEXT: for %d in +s *.FOO echo $%d next %d +s *.FOO I have no idea how this escaped the documentation. I will probably have to update the examples and let GoodByteXL know about it, so that this information will be reflected in next revisions of the User's Manual. Edited July 30, 2016 by drac030 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.