I actually started to reverse engineer it.. hah! well, I probably won't integrate it, but it might be cool to fix it. I'll see if I can isolate how that GOSUB extended command is processed. I'm part way through the disassembly.
good find; I wonder how Rom2 handles same? On Thu, Jun 17, 2021 at 5:43 PM Brian K. White <[email protected]> wrote: > One of the reasons I just wrote a renumberer in pure bash (actually I > did it in awk first, then re-wrote in bash) was because RESEQ.100 has a > bug, and is essentially unhackable/unfixable by a mere mortal like me. > > I did the awk version initially just out of pure perverse fun. I really > just wanted to renumber SECTOR.BA so that I could have room to insert > lines and hack on that. > > https://github.com/bkw777/BASIC_renumber > > Now this can be messed with by myself or anyone else later to add new > behavior or fix bugs. Like, how about a feature to take a single long > multi-statement line and convert it into a multi-line gosub without > breaking the rest of the program? > Or say I've got a bug of my own still in there that shows up sometime > way later when I'm not around to fix it. > > I might try seeing if I can manage to grow it to an unpacker/packer. > Expand packed code to insert spaces between statements and keywords and > arguments, and replace short variable names with longer ones. That's all > a bit ambitious though. For now I'm just pleased I have a working > renumberer that even works better than RESEQ.100, not to mention about > 50 times faster and more convenient, (well, being on-device would be a > significant convenience) > > The bug in RESEQ is this: > > SECTOR.BA contains this line: > 301 ONAGOSUB310,311,312,,,,316,317,318,319 > > RESEQ.100 produces: > 990 ONAGOSUB1010,1020,1030,,,,316,317,318,319 > > While it should have produced: > 990 ONAGOSUB1010,1020,1030,,,,1070,1080,1090,1100 > > IF you had the source to the machine-language part of RESEQ.100, AND you > actually had a working set of tools and workflow to regenerate the > machine language and then the basic loader from that, then it's probably > a pretty simple correction. But me, looking at what I have in my hands > all these years later after the author wrote it, which is just RESEQ.100 > itself, it's essentially inscrutable and unfixable. > > Put it this way, maybe it's technically fixable, probably Steve will fix > it in his built-in version if he does it, but for me it was easier to > write it over from scratch, twice. > > Ok maybe saying "twice" is a stretch since, the bash version is > essentially identical to the awk version. I did the awk one first, then > pretty much just transcribed it into equivalent bash line by line. The > job was essentially not an awk job in the first place. The part that is > supposed to be the main part of an awk program only has 3 lines in it, 4 > if you count the matching pattern, and all the real work is in the > END{...} section, using ordinary programming that could have been done > exactly the same way in any language. > > One thing that made the awk version not-so-silly after all is, that awk > script will probably still work in 20 years. But if I wrote it in say > python or ruby, it might not work *next* year. > > -- > bkw > > > On 6/17/21 11:43 AM, Tom Wilson wrote: > > There is actually a renumber feature in one of the option ROMs. I want > > to say it’s the Cleuseau ROM. You can renumber programs, as well as so > > a few other useful things. > > > > So there’s no need to add to REX. Just install that option ROM and use > > it when writing BASIC programs. > > > > On Thu, Jun 17, 2021 at 7:46 AM Stephen Adolph <[email protected] > > <mailto:[email protected]>> wrote: > > > > Neither M100 nor T200 have a built in renumbering function for BASIC. > > (NEC does). > > > > Seems to me that it would be a nice feature to add to REX#/REXCPM. > > > > Here's what I am thinking > > 1) base the implementation from James Yi's RESEQ.100/.200 > > 2) implementation would be from a CNTL-key sequence in the main menu > > - position cursor over a .BA program > > - CNTL-{not sure what key to use} > > - specify starting number, and increment, press [enter] > > > > It is not in scope in my opinion for REX Manager to intercept any > > function directly from BASIC, which I think would be ideal. James > > Yi's solution was a CALL from BASIC to renumber; that would be > > possible but you would always have to remember the call. Nicer to > > have a user interface, but it would need to be active at the M100 > > menu like the REX Quick menu features. > > > > > > Anyhow, open to thoughts or suggestions, or other nice little > > functions to add. > > > > Steve > > > > -- > > Tom Wilson > > [email protected] <mailto:[email protected]> > > (619)940-6311 > > > > > -- > bkw >
