Back to home page

DOS ain't dead

Forum index page

Log in | Register

Back to the board
Thread view  Mix view  Order
Arjay(R)

10.12.2009, 12:24
 

RJDOS v0.01a experimental tiny DOS shell (BETA with BIG B!) (Announce)

Quoting part of the documentation I wrote back in October....

-----------------------------------------------------------------------------
RJDOS v0.01a
------------
RJDOS is an experimental tiny DOS shell which may be useful to IVTUTIL users,
It is similar to more complex shells I wrote many years ago as a BBS sysop.

RJDOS v0.01a was written very quickly to replace FREEDOS's FREECOM to load a
particular program where FREECOM was bombing out with a silly error message.
Basically RJDOS was mostly written to help understand what was going wrong
but in the end a variation of RJDOS was used to work around a bug in FREECOM.

RJDOS is NOT a great shell, however think of it as a bit of a cross between
a DOS shell, debug, interrupt list and diagnostic util. It's not perfect but
it has a features that I thought would be interesting for people to play with.


RJDOS limitations/watchouts/features
------------------------------------
There are many....

+ Only 8.3 filenames are supported
+ RJDOS knows NOTHING about lowercase, UNICODE etc
+ Commands like DIR do *NOT* support any parameters, so DIR /W is invalid !!!
+ Currently DIR does NOT even show the size of files - yes it is that BASIC !
+ Many standard DOS commands do *NOT* exist, not even stubs exist for them !
+ Other standard DOS commands exist but behave fairly differently, e.g. DATE
+ Directory changing is *VERY* different-the CD command does NOT even exist!!

However, on the plus side:
+ "Memory" can be viewed like a disk drive
+ "Interrupts" can be viewed like a disk drive
+ A dump style program is built into the memory/interrupt viewers
+ Drives can be changed into without disks being present or disks with errors
+ Getting an equipment list out on even the most basic PC hardware is easy.


Part of the reason for the many limitations is the simply the fact I ended up
using RJDOS to launch FREECOM when needed. Oddly I discovered if FREECOM
is the primary shell it crashed when loading a 3rd party program that caused
me to write RJDOS in the first place, however if I set RJDOS to be the
primary shell and then loaded FREECOM from within RJDOS and then loaded the
3rd party program from FREECOM it all loaded it fine.... go figure! For now
my time is elsewhere and a work around is easier than root causing something.

-----------------------------------------------------------------------------

See included documentation for more info (sorry no source with this one):
http://www.wimborne.org/richard/downloads/rjdos.zip

MD5 = 9705479ae4c9a89756eedd8257a5e8c0 *rjdos.zip

roytam(R)

13.01.2011, 12:45

@ RayeR

RJDOS v0.01a experimental tiny DOS shell (BETA with BIG B!)

> I don't care abou lic, once I freed the sources it's for free use.
> Currently I use Datalight miniCMD which takes 3294B but it's very limited
> in function. But all it's necessary is to change path and launch something
> better like micromanager. But would be nice to have something small but
> better. Ia also have General Software mini-COMMAND.COM V2.0 from embedded
> dos 5.0 - 10752 bytes.
>
> I just tried to apack your rjdos but it makes it bigger :P It usually
> happen on already compressed code or some totally entropic files...

I just got some time and made some development on Datalight's MiniCMD (I have 4.11.1475 sources). Major changes:
- Enabled optional features that originally exists (FULL_PROMPT, IF(if exist), GOTO)
- enhanced DIR (non /W mode) output to display file size, date and time.
- added DIR /W mode (must type with space between "DIR" and "/W")
- added IF ERRORLEVEL support

Missing features:
- ECHOing environment variables
- %0 ~ %9
- SHIFT

Debug Listings is available here:
http://scrappedblog.blogspot.com/2011/01/datalight-minicmd.html

Arjay(R)

06.05.2010, 02:19

@ Arjay

RJDOS v0.01c tiny DOS shell - latest news

Just a quick update:

> At the same time I want to continue to keep the shell small enough to be
> burnable into silicon.
A few days ago I successfully burned a newer internal beta version of RJDOS to silicon using a customized version of Rayer's ROMOS. Rayer, fyi I used an Intel card which required a PCI header as well as the usual VendorID changes. I also changed some of your code to customize how the bootup for my own liking, as well as obviously building my own images etc. I will email you the process for burning ROMOS onto Intel cards and may also provide a few ROMOS code patches.

> Indeed a serious reduction in size is on the long term cards for the
> project and it will always remain less than 64k in size.
I have now decided to make size an earlier priority goal for the project, mainly because I'm more interested in the embedded side of things myself.
My plan always was to allow RJDOS to be run with or without another DOS, so I may also concentrate on adding that functionality in early than I planned, particularly as size reductions/file structure changes are closely related...

> Note: At the moment I'm running version v0.01c which may become v0.01d
> soon.
A few delays due to life. I may just release an interim release soon just to provide a better "stop gap" replacement of the version Rayer/ROMOS links to which was always a quick cludge. There again so was the original DOS.....

Arjay(R)

05.02.2010, 21:38
(edited by Arjay, 06.02.2010, 01:13)

@ Arjay

RJDOS v0.01a experimental tiny DOS shell - latest news

I have had a few discussions with people re RJDOS recently, so this is a quick note to let people know whats happening. Firstly I'm very busy with life elsewhere at the moment, however since Christmas I have been working on the next version of it but sadly none are ready for general release just yet.

Importantly I have decided that I will continue to evolve RJDOS beyond "experimental" into a fairly flexible shell which I want to ensure supports running under *all* DOS versions/emulators (FreeDOS, DOSBox, XP, RiscOS etc).

At the same time I want to continue to keep the shell small enough to be burnable into silicon. Indeed a serious reduction in size is on the long term cards for the project and it will always remain less than 64k in size.


Still I am going to do several "transitional" releases to get to where I want the code to end up. In terms of firstly creating a more stable basic shell and then working to remove existing hard coding, e.g. supporting multiple languages whilst aiming for a smaller footprint. Sadly this means the next release will be slightly larger (probably about 4k larger) before I then hope to dramatically reduce the size of the main code by way of some tools I'm working on to "remove" the bloat. Still please find below a recap on some of the original issues in relation to the current road map that I am drawing up:

> + Only 8.3 filenames are supported
Yes, I will support long filenames later but "after" the transition releases.

> + RJDOS knows NOTHING about lowercase, UNICODE etc
Likewise.

> + Commands like DIR do *NOT* support any parameters, so DIR /W is invalid
In the unreleased versions - they do now. Concerning DIR; /P now exists in the BETA versions I'm running. /W does NOT yet exist but probably will in an actual release version. I don't plan to implement /A:H etc since RJDOS shows all [hidden] + [system] files anyway. Indeed by design the DIR will also show volume labels as files along with their date. Indeed I'm purposefully adding features such as showing the filesize for directories; "Filesize for directories?" I hear you cry! Yes they can and do exist at times and unlike other shells I actively want to highlight the unusual/broken/data corruption and this is an example of where I'm writing the code so that it will do that.
e.g. when a directory filesize is NOT equal to zero then filesize is shown.


> + Currently DIR does NOT even show the size of files
Fixed but with a 2Gb limit (for now) - main coding efforts still elsewhere.


> + Many standard DOS commands do *NOT* exist, not even stubs exist for them
A few more exist but I'm also doing something different: supporting execution of commands via other shells, e.g. "$:DIR A: /W /S" runs DIR via CMD.EXE.
I'm also working to implement aliasing to external commands/shells/offsets.
In otherwords if you want "copy" to point to code at 9A00:0000 then it will or if you want copy to point to "blart.exe" then it will or you don't want copy at all - then I'm working towards having all of them as possible goals.

Indeed one of my long goals for RJDOS is to be a small shell where you can choose which commands you want to have in the binary and what they are called.
The less commands supported the smaller the binary but with support for calling additional code as when needed. Thus I'm not actually caring too much at the moment about adding certain commands but rather adding code to allow those certain commands to be implemented later or aliased off elsewhere.


> + Other standard DOS commands exist but behave fairly differently, e.g.
> DATE
Some will remain that way for now (or maybe even long term). e.g. I hate the default way that "DATE" asks [ENTER], so I may just keep it that way and add something like "DATE /SET" and get DATE to behave different if I get around to implementing pipes/batch files processing again. Not a priority right now and besides which if someone doesn't like then they can alias off to a DATE program elsewhere if needed or wanted.

I may implement some from of basic BATCH file support early on (none present now) and no promises though on that. For now I'm run some batch files I have via an alias method, e.g. $:blart where blart is blart.bat and the $: tells my shell that I want to run blart.bat via another shell. Not a good idea to run TSR loading batch file via that way but ok for running other batch files.

> + Directory changing is *VERY* different-the CD command does NOT even
> exist!!
I have implemented "CD" and have disabled my own methods - for now.


I hope to put up out a stable "transition" release fairly soon (within a couple of weeks), followed by others on hopefully a fairly frequent schedule.

Note: At the moment I'm running version v0.01c which may become v0.01d soon.

Arjay(R)

11.12.2009, 22:47

@ RayeR

RJDOS v0.01a experimental tiny DOS shell (BETA with BIG B!)

> I don't care abou lic, once I freed the sources it's for free use.
Ok. Just to be more open/clear I was asking from 2 different standpoints:

1) Protecting your interests - ROMOS interests me not only from a personal non-commercial perspective but also from a commercial perspective - thus I am keen to understand where you stand on both points. PM me if you want on this.

2) I am working some stuff commercially myself, thus also need to protect my own interests - hence I'm keen to find out what you are wanting to do etc.

That all said I am keen to strike the right balance and a lot of what I am currently doing is working to feed "back" into various projects in an open as possible way, make further useful connections etc. I certainly do not believe in passing off other peoples work as ones own and if I can help others out along the way then I will.

> Currently I use Datalight miniCMD which takes 3294B but it's very limited
> in function. But all it's necessary is to change path and launch something
> better like micromanager. But would be nice to have something small but
> better. I also have General Software mini-COMMAND.COM V2.0 from embedded
> dos 5.0 - 10752 bytes.
Ok, I'm familiar with Datalight (but not their actual software). Likewise I know of embedded DOS but not their software. So separate to these offerings, in an ideal situation for your needs what your ideal size for a shell and what's the basic functionality that you would need? I'm assuming your looking for something that is free as your own project is to be free, right?

> I just tried to apack your rjdos but it makes it bigger :P
Hehe.

RayeR(R)

Homepage

CZ,
11.12.2009, 21:20

@ Arjay

RJDOS v0.01a experimental tiny DOS shell (BETA with BIG B!)

I don't care abou lic, once I freed the sources it's for free use.
Currently I use Datalight miniCMD which takes 3294B but it's very limited in function. But all it's necessary is to change path and launch something better like micromanager. But would be nice to have something small but better. Ia also have General Software mini-COMMAND.COM V2.0 from embedded dos 5.0 - 10752 bytes.

I just tried to apack your rjdos but it makes it bigger :P It usually happen on already compressed code or some totally entropic files...

---
DOS gives me freedom to unlimited HW access.

Arjay(R)

11.12.2009, 13:02

@ Arjay

RJDOS v0.01a experimental tiny DOS shell (BETA with BIG B!)

Hi RayeR,

Ok spotted issue here was breaking your link. Ok, I've been onto your English ROMOS page.

Looks good, still not clear to me though if commercial/non-commercial etc.
Either way I think we should talk further.... 64k still is a lot of space ;-)

Regards Richard

Arjay(R)

11.12.2009, 11:37

@ RayeR

RJDOS v0.01a experimental tiny DOS shell (BETA with BIG B!)

Hi RayeR,

> Hm, it seems to be quite small - 9746B
Yeah apologies about the LARGE size... it could go down a lot... however as it was *very* quickly thrown together to provide a brief investigation into a FREEDOS issue and importantly a workaround, its not optimized in anyway whatsoever. Still as I liked the idea of being able to use !: to go into memory and although that is still basic I thought I would share it for that reason alone as I thought in doing so it might give others useful ideas.

> it would be good for my ROMOS project.
Personal or commercial? Your page on ROMOS was a 404 to me.

> I'll try if it will work from ROM. :)
Should do :)

> It seem's it's already packed with something, what packer did you used?
Packed ? That's news to me ;)

> It gives me the best result for small files.
(Under DOS...) For Windows see Crinkler

RayeR(R)

Homepage

CZ,
11.12.2009, 10:08

@ Arjay

RJDOS v0.01a experimental tiny DOS shell (BETA with BIG B!)

Hm, it seems to be quite small - 9746B it would be good for my ROMOS project. I'll try if it will work from ROM. :) It seem's it's already packed with something, what packer did you used? Did you tried apack? It gives me the best result for small files.

---
DOS gives me freedom to unlimited HW access.

Arjay(R)

10.12.2009, 12:52

@ Arjay

RJDOS v0.01a experimental tiny DOS shell (BETA with BIG B!)

Just to provide an example of a use for RJDOS in it's "current" form. Let's say you wanted to quickly find out what Int FEh was pointing to in memory:

------------------------------------------------------------------------------
E:\demo>rjdos
Tiny DOS shell v0.01a - (c)2009 Richard L. James
E:\DEMO>!:
0000:0000>ints
Int 00h>fe
Int FEh>dir
$FE F000:0000
Int FEh>d
F000:0000 E9 9D 00 EB 33 00 00 00 00 00 00 00 00 00 00 00 ....3..........
[dump would continue....]
Int FEh>
0000:0000>feef
FEEF:0000>d
FEEF:0000 73 74 75 66 66 20 69 6E-20 6D 65 6D 6F 72 79 00 stuff in memory.
[dump would continue....]
FEEF:0000>q
E:\DEMO>q
E:\demo>
------------------------------------------------------------------------------

Another example:
------------------------------------------------------------------------------
E:\demo>rjdos
Tiny DOS shell v0.01a - (c)2009 Richard L. James
E:\DEMO>!:
0000:0000>dir
INTS = Interrupt Vector Table
PORTS = Ports
ROMS = Roms
0000:0000>ports
0000:0400>dir
.. = Previous directory
KEYB = 20h NUM
LED = 02h NUM
Equiplst = 23h HD MATHS
COM1 = 03F8h
COM2 = 02F8h
COM3 = 03E8h
COM4 = 02E8h
LPT1 = 03BCh
LPT2 = 0378h
LPT3 = 0278h
LPT4 = 0000h
0000:0400>..
0000:0000>dir
INTS = Interrupt Vector Table
PORTS = Ports
ROMS = Roms
0000:0000>roms
C000 - Unknown ROM
0000:0000>c000
C000:0000>dir
.. = Previous directory
C000 = Unknown ROM
C000:0000>..
0000:0000>q
E:\DEMO>ver
Tiny DOS shell v0.01a - (c)2009 Richard L. James
E:\DEMO>q
Unsupported command or file not found
E:\DEMO>quit

E:\demo>
------------------------------------------------------------------------------

Note: I have a sneaky feeling I didn't finish the code for ROM scanning, thus the only ROM region that might be checked is C000 (even have the code...). I'll check this when I hopefully have some more time over the next few days.

Still I hope that this version is useful even in this limited form. I'd love to dig out my Wildcat BBS DOS shell which was similar and merge the two as that one supported both traditional directory changing and my methods etc.

Regards Richard

Back to the board
Thread view  Mix view  Order
15108 Postings in 1358 Threads, 246 registered users, 13 users online (0 registered, 13 guests)
DOS ain't dead | Admin contact
RSS Feed
powered by my little forum