WBPIC
https://aminet.net/misc/fish/fish-0234.lha
SETCOLOR
https://aminet.net/misc/fish/fish-0939.lha
This specific SetColor is part of "Ian Utils"
I really didn't expected it to find it in a OS2.1 package neither that i retrieved it from this fishdisk, where i have it from i don't remember but it isn't specific OS3.1 rather not because you can only set 32 colors which is to less for a OS3.x use but exactly what you need for OS1.3 to cover even the pointer palette.
However it's a small assembler program that's mostly why i prefere it over other programs with the same function.
Correction: same author slightly different program, the SETCOLOR i use accepts hex and decimal values the one in the linked package only hex values, therefore since it was meant for OS2.x it supports specific public screen names instead of "WB,FRONT,ACTIVE"
Since i can't find this specific release of setcolor i will link mine here
In the zip is the output of "SetColor ?" that is the only documentation i have to this program, like i said i have no idea where i have this program from - Ian Einman at least this i know
But the use is simple SETCOLOR [WB,FRONT,ACTIVE] [color register 0 - 31, [color r,g,b dec or $rgb hex]
However there exists a bunch of programs which perform the same task, some like SCM/SCL (or one named SCT if i remember this right) let you write and load palettes, it's your choice which you like best aminet will help you.
BATCHREQUESTER
(renamed to BATCHREQ for the use in my scripts)
the one and only handy OS1.3 filerequester
https://aminet.net/util/batch/BatchRequester.lha
Batchrequester needs the asl.library, preferably asl.library V37.27
JMENU
https://aminet.net/util/batch/JMenu.lha
REPSTRING
CLI program to replace ascii strings or hex values in a file
https://aminet.net/util/cli/RepString.lha
SPLITQ
(renamed to SPLIT for the use in my scripts)
CLI program to split a file at a decimal address to a snippet of a decimal length.
https://aminet.net/util/arc/SplitQ.lha
There exist many CLI tools which will split a file - mostly in two sections, this one splits the file to a single new file and leaves the source untouched. It is what i use mostly and recently it replaces a program with wich i can alter a value at a specific address, using SPLITQ i can extract the relevant section, alter the data and put the turd together again, a bit clumsy but effective.
SOUND
The by me preferred 8SVX file player.
https://aminet.net/mus/play/Sound.lha
Many many same & similar named programs, this is the one i prefere because it plays even a raw stereo file proper further it's until the only i found which i can always terminate using CTRL-C (as long as the player window is visible if it's in quiet mode unfortunately it can't be exited).
Dunno what the dudes thought of who implemented the stupid "exit using RMB" feature in their file players because select something from any menu and the sound ends - pardon me but that is stupid. The meant two file players are good but this "anti-feature" kills all what is good within. Ah yes you can bypass the "exit rmb" (anti)feature well but then it can't be exited at all.... hmpfsgrmbl!
Anything - press all of the most uncommon keys together but not "exit using RMB", i mean that is fine for a picture viewer displaying a picture on an own screen but not for a file player which should play a probably longer SFX or even some music or a loop while playing or using the machine otherwise.
Sure on a floppy driven A500 such large SFX files won't make sense but already on my A2000 with a 250MB HD i would have liked to loop a track while playing SimCity, since i attached my CD32 (using the communicator) as a cheap CD-ROM substitute to my A2000 i could have played a CD or a bunch of low sample/bitrate 8SVX (until i bought the A4000 the CD32 -> communicator -> A2000 setup was quite good for me, besides this was for this hillbilly the first contact with "fish" since i own the PD collection II on which fishdisk 1 to 500 is stored - if i remember this right, honestly i spent months even years to browse this repo - all via the serial port and a terminal program).
One could guess "oh sound handler"
but
"shit this handler only allows a playback in mono and this on a single channel (above linked SOUND plays mono on two channels as long as two of the four channels are free).
It isn't the right thing and i always end up with SOUND because it's still unbeaten.
SOUND is good i just kept searching for something else because i would like to exit the player even when the player window isn't visible (which would be the case for the two which use the "exit using LMB" anti-feature).
The handler could be controlled using a AREXX script, while this is neither what i like to offer here (or not yet), the scripts i offer here need to work in a standard OS1.3 (by addition of a couple of needed shared libraries like the not to forgo asl.library).
Neither i like to depend on ARP (except for a couple of standalone working programs like the ARP LIST) or a special shell like K-Shell or whatsoever because all of them interprete most probably the scripts a little different. I.e. the ARP shell, the biggest problem within this is that it interpretes the skip LABELS different as the standard shell, what works for standard OS1.3 refuses to work in ARP Shell and to change this fore and back depending on what shell you use is more as just stupid,
standard OS1.3 compliant or bust it!
A very obvious difference is the interpretation of comments using the semicolon, ARP does not allow to use a semicolon at start of the line it must be indented at least by a single space character, this effectively will mean that i have to change ALL of my scripts or at least that i have to revisit them to see if i didn't used a semicolon at start of a line - stupid. A reason why i didn't use the semicolon for comments respectively onlöy for in-line commenting if the whole line is a comment i use "dot space" which is to prefere over the semicolon "dot space" will tell the interpreter to skip the line just like REM for MS-DOS a line commented out with a semicolon will still be readed, but not all of my scripts are changed to this manner. And because of all that - no extras.
Filename completition, history, scroll bar, these are all nice features but the thing is i don't miss them in OS1.3.
Rarely i use the scrollback feature of KCON in OS3.1, it isn't worth the change(s) to OS1.3 to have this feature when you almost never need it.
I script the hell out of OS1.3 but i don't need a scrollback or history feature for this neither that i need a different editor for the scripts as Ed.
But well i'm no measurement, i even script geometry in a standard windoze notepad...
(at least when i started out with this, a little later i used a specific LUA script-pad, since long i use notepad++ but in the end it is stilll the same as to script it using the bareboned notepad all the rest notepad++ offers for this specific task is just comfort. The "BREAKOUT" hack which i showed off in a different thread is a script as well, fortunately Joe was so clever to add a script parsing function to his Intellivision emulator, i wasn't really aware of it even if i noticed that it needed the load of hacks by "Midnight Blue International" to understand how easy this hacking an assembler program makes. Using the script parsing function you could theoretically write a complete program in GI1600 assembler as a sort of script, yeah not a speechy script - still a lot of gibberish just nicely one after the other which makes it a bit easier to underdstand what performs which task. Skipping to a given address is easier as well to skip a count of bytes for or back overall you will have a better overview and easier learn what the purpose of certain commands is and how to use them - from the "inside" which is something i really like - to be honest i never compiled an assembler program using Joe's SDK or any until it is still hacking the bare values, this makes it somewhat hard to understand but results in a different understanding. That is if something refuses to work as you meant it you better understand why it can't work in this manner at all, a SDK won't show you this it will prevent you from doing it without to tell any reason for it on the other hand this can lead to a complete different solution since many ways lead to rome, i.e. i made a few fixes to some games while making the fixes i found some solutions no one used before, repectively no one expected it, that is i.e. some games open in with a wrong screen color on a PAL Intellivision this fix only depends on at which specific address a certain data stands, it is something that can't be explained proper because it should work exactly the same at any address but it won't (personally i assume it's rooted in the different timing of NTSC and PAL consoles somehow this can skip data at least the solution is to make a sort of wider gap, as effect on a NTSC console the opening screen is black and on my PAL console it stays in standard olive green and the difference is to move the data to tint the screen black to a different address that on the other hand can refuse to be interpreted proper by the SEARS release of this console but there is always an intermediate point which works for all), such solutions you won't find using a SDK since this expects only things which are known. Further on i found a way to use the standard opening screen in a different manner as meant and in a different manner as Coleco did because of copyrighting and in a different manner as Mattel Electronics did to display animations in a title, such is only possible to find if you examine the code byte by byte and take a long sleep to get clear what can be done with it. Also the SDK will depend on resources which will be taken over completely even if you only need a sparse section of that, if you directly write the assembler code there are no dependencies which aren't needed by the program, no extra space for unused data. The use of the parser allows me to use the smallest gap of zero bytes in a ROM to write data to it, sure this could be used otherwise as well but not that easy. Means certain hacks where i didn't made a exclusive "Yoursoft Unlimited" screen for use exactly the same amount of bytes as the original - the title screen will blow this because most of the time i have to leave this code intact, but sometimes i can even overwrite this section or another section which i bypassed).
Just to tell how far you can go with the use of a standard notepad or Ed for the Amiga,
there are no limits except your imagination.
At last but not at least my FILTER hack
The original FILTER i use you find i this CLI utilities package:
https://aminet.net/util/cli/CLI_Utilities.lha
But the original FILTER won't filter CRLF which is what i use it for therefore it filters all umlauts which is exactly what i didn't need, thus i hacked this program to filter CRLF but keep umlauts and other special ascii characters.
That i use exactly this one for this purpose is rooted in that it was the easiest to be hacked it was a sneeze to find the relevant code, respectively how he disabled a range of characters for the filter function.
My FILTER hack:
There is a good reason for hacking this proggy, i didn't found a CLI program for OS1.3 which filters CR/LF without to change the CR/LF to "space" and also most will exactly like "TYPE" add a CR/LF at end of the file if there is none, the only one i found which would be suitable works only from on OS2.0.
This FILTER program at least doesn't adds a CR/LF and like i said it was a sneeze to find the relevant data.
One could as well easy hack OS1.3 "TYPE", the ending CR/LF is easy to find in it if you replace this 0x0A with 0x00 the LF is gone for good but leaves a 0x00 at the end of the typed file, this is usually no problem because most programs simply disregard a 0x00, but well some might argue about the binary data in a ascii string, FILTER(hack) is better.
Using something like FILTER or a "TYPE_NoLinefeed" makes it easier to concatenate strings (commands), instead to write each snippet to a seperate temp file and join this finally using "JOIN" you can add string by string by variable by string by variable by string (and so on) into a single temp file to be executet, this spares at least the JOIN and it leaves a better overview as to use seperate temp files and then to join them (further you can type out this concatented string immediately after creation or in between creation to check the integrity);
"what did i joined with what?" - "where does this snippet belong to?"
no question by using FILTER and ECHO one stands nicely after the other.
NOTE: FILTER refuses to write a new file when you use append (>>stdout), if it should create a file it needs to be redirect (>stdout), if that isn't possible like in of my scripts then you have to create in advance an empty file with
ECHO >stdout
I guess this covers all programs i used for this scripts which aren't standard OS1.3.
Some or even most i showed already off in my two other threads and mostly i will use the same over and over for my scripts since this covers quite all what one will need.
What can follow is the use of EDIT but this is standard and/or the use of "MAT" which is somewhat similar to EDIT but adds some features one will like, you can parse strings with MAT, it's so far the only program which offers me parsing a string in a more or less simple manner, perhaps i can even use MAT to read and write hex values to given addresses but this i first have to learn the documentetion to MAT is a beast and until i used MAT only a single time for exactly this task to parse a string. In the scripts i showed here i use the clumsy manner to split the string or file at the address i like to retrieve the data from or like to write the data to and then i have to rejoin the snippets to the full string or full file, i'm used to but it's clumsy. MAT i used a single time to perform this in one try to read and another to write, MAT can retrieve a single character instead of a complete line like EDIT. The syntax for MAT is extremely complicated but as more flexibility a program offers as more complicated the syntax will be (up to that the syntax ends to a sort of little program), a simple parser like i use for MS-DOS has a simple syntax because it performs only one simple thing - parse a field by a specified field marker - basta. In general i like such better as a "i can perform all" thing like MAT is.