Welcome, Guest. Please login or register.


Author Topic: Improving IS-DOS (Read 1884 times)

Offline elmer

  • EP fan
  • *
  • Posts: 196
  • Country: us
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 85.0 Firefox 85.0
    • View Profile
Improving IS-DOS
« on: 2021.February.10. 19:18:12 »
I think that I am finished with the "simple" upgrades to IS-DOS, and here is the latest alpha build for people to try. :mrgreen:


This does not add any new capabilities (MSX-DOS 2, ZCPR3, CP/M 3 etc) to IS-DOS, but it reorganizes the way that IS-DOS runs in memory so that it will be easier to make more changes in the future.

The big difference from IS-DOS 1.0, is that IS-DOS 1.1 now runs in a dedicated segment that it allocates for itself when it starts.

This means that the TPA size available for CP/M and IS-DOS applications has increased from 56KB to 63KB, which will now allow some CP/M programs such as the BDS C compiler to run.

The "fast" video driver has also been optimized to make it run at nearly (but not quite! ;-) ) double the speed, making CP/M (and IS-DOS) applications much nicer to use.

The tradeoff is that the "fast" video driver now only allows 2-palettes for text, but in return, it does not chop off the right hand pixel of the 'M' and 'W' characters, which looks nicer on the screen.


Although IS-DOS.SYS is now 1 disk sector shorter than before, using 13312 bytes instead of 13824 bytes, there is approximately 2KB of free space within the program to add new code/features. :cool:


EDIT 2021-02-14:

There is a bug in this 2021-02-10 version of IS-DOS 1.1-alpha, and register L has the incorrect value for MSX-DOS functions "Block Read" and "Get Time".

I suspect that these functions are not used by any of the applications that people run in IS-DOS, but this will be fixed in the next release of IS-DOS 1.1.-alpha. :oops:
« Last Edit: 2021.February.14. 20:07:28 by elmer »

Online geco

  • EP addict
  • *
  • Posts: 6333
  • Country: hu
  • OS:
  • Linux Linux
  • Browser:
  • Chrome 87.0.4280.101 Chrome 87.0.4280.101
    • View Profile
Re: Improving IS-DOS
« Reply #1 on: 2021.February.10. 19:37:29 »
:smt041
congratulation, and thank you very much :-)
Sounds cool both ultra fast video driver, and increased available memory.

Offline Trefe

  • User
  • *
  • Posts: 55
  • Country: hu
  • OS:
  • Windows NT 10.0 Windows NT 10.0
  • Browser:
  • Firefox 85.0 Firefox 85.0
    • View Profile
Re: Improving IS-DOS
« Reply #2 on: 2021.February.10. 23:31:52 »
:smt038
Nice work. Congratulations.

Offline ron

  • User
  • *
  • Posts: 60
  • Country: es
  • OS:
  • Linux (Ubuntu) Linux (Ubuntu)
  • Browser:
  • Firefox 85.0 Firefox 85.0
    • View Profile
    • RetroWiki & Cacharreo [RW]
Re: Improving IS-DOS
« Reply #3 on: 2021.February.11. 07:23:19 »
This is great news!
seems like an impressive advance.

Thanks for your work !!!

Offline Zozosoft

  • EP addict
  • *
  • Posts: 14084
  • Country: hu
  • OS:
  • Windows NT 10.0 Windows NT 10.0
  • Browser:
  • Firefox 85.0 Firefox 85.0
    • View Profile
    • http://enterprise.iko.hu/
Re: Improving IS-DOS
« Reply #4 on: 2021.February.11. 20:06:20 »
Great work! :smt038

Offline elmer

  • EP fan
  • *
  • Posts: 196
  • Country: us
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 85.0 Firefox 85.0
    • View Profile
Re: Improving IS-DOS
« Reply #5 on: 2021.February.11. 22:52:45 »
Thank you gentlemen! :oops:

The question is ... what next?


I know that I need to give you a list of all of the text messages, so that you can translate them into Hungarian and Spanish.

Apart from that, should we think about adding any new capabilities to IS-DOS?


We cannot add compatibility with CP/M 3, because some of the CP/M 3 BDOS calls conflict with the existing MSX-DOS 1 BDOS calls that are already in IS-DOS.

Apart from that, CP/M 3 is very much tied to the CP/M disc format, and to using user-numbers instead of directory names.


We could look at adding MSX-DOS 2 compatibility, but I would need considerable help with that, because a lot of the extra MSX-DOS 2 functions deal directly with the disc, and so would need to be translated into EXDOS FISH calls ... and I have absolutely no experience with the EXDOS FISH system!

On top of that, MSX-DOS 2 really relies on the addition of "Environment" variables, similar to those in MS-DOS.

Adding some buffer space for those environment variables would mean needing to allocate another segment in EXOS, or adding some extra memory requirement to one of the existing drivers.

Either way, this will likely use another EXOS segment.  There is still one segment free for use on a 128KB Enterprise, but is this how we want to use that memory?

For the environment to be useful, I think that it would need to exist all of the time that IS-DOS is running.

If we do add MSX-DOS 2 compatibility, it would make IS-DOS a nicer system for programmers, but I don't think that it would make any classic MSX applications available on the Enterprise, because there are very few MSX-DOS 2 utilities worth having, and MSX applications rely on the existance of the MSX BIOS and hardware.


Another possibility is to add some limited compatibility with the ZCPR3 system.

Because ZCPR3 was built on CP/M 2.2, it would not conflict with our existing IS-DOS BDOS and BIOS, and it would allow for some commercial CP/M programs to activate built-in enhancements for ZCPR3 (such as Z80ASM, SLRNK, and WordStar 4).

But just like CP/M 3, a lot of the ZCPR3 improvements are very reliant on the old CP/M concept of disc user-numbers, rather than directory names.


Does anyone have any thoughts?

Offline BruceTanner

  • EP lover
  • *
  • Posts: 567
  • Country: gb
  • OS:
  • Linux (Ubuntu) Linux (Ubuntu)
  • Browser:
  • Firefox 85.0 Firefox 85.0
    • View Profile
Re: Improving IS-DOS
« Reply #6 on: 2021.February.12. 01:21:22 »
Back at the very end of IS/Enterprise, Robert Madge went to Japan to try and sell IS-DOS to the MSX consortium as MSX-DOS 2, and also to try and sell a version for the 64180 using its paging features. As we now know this didn't work out, and Microsoft stole the undel feature :evil:. But a number of documents were written to support this trip including ideas for future features in IS-DOS. And in among all the jumbled up source code from Verner were these documents! They are Wordstar documents so you can read them using IS-DOS itself (or you can just about make them out in a text editor.)

I think the main things are environment variables, redirection, piping (as were in MS-DOS at the time) and... the big one... multiple simultaneous TPAs (using EP or 64180 paging) and co-operative multitasking. So you could have Wordstar running in one TPA and press Alt+TAB or something to switch to another TPA and run something else. Well you did ask! :lol:

Offline elmer

  • EP fan
  • *
  • Posts: 196
  • Country: us
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 85.0 Firefox 85.0
    • View Profile
Re: Improving IS-DOS
« Reply #7 on: 2021.February.12. 01:40:18 »
Well you did ask! :lol:

Hahaha, yep! :ds_icon_cheesygrin: :cool:

Thank you for those, I will enjoy taking a look at them.

The thing is, you're probably the best guy that I can think of to handle the EXDOS side of any IS-DOS upgrades, so be careful what crazy ideas you give me! ;-)

Offline elmer

  • EP fan
  • *
  • Posts: 196
  • Country: us
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 85.0 Firefox 85.0
    • View Profile
Re: Improving IS-DOS
« Reply #8 on: 2021.February.12. 04:30:52 »
OK, I've read the docs ... interesting!

IS-DOS 180 is definitely the most interesting, in that it describes future possibilities for IS-DOS.

From my POV, all of the Windowing and multiple TPA capabilities are somewhat beyond what I think reasonable, especially in the 2KB space that is available for new code/data.

Redirection would be kinda nice, but I could easily live without it.

The things that I miss most in IS-DOS are the 'IF', 'FOR', 'GOTO', etc batch file capabilities, together with the enhanced MS-DOS style of '%' variable expansions.

It would be interesting to know if any code was already written for that in Verner's archive.

Some of it is easy-ish to add if we go for ZCPR3-compatibilty, and some might possibly be stolen from the MSX community.

Offline BruceTanner

  • EP lover
  • *
  • Posts: 567
  • Country: gb
  • OS:
  • Unknown Unknown
  • Browser:
  • Firefox 85.0 Firefox 85.0
    • View Profile
Re: Improving IS-DOS
« Reply #9 on: 2021.February.12. 10:55:33 »
It would be interesting to know if any code was already written for that in Verner's archive.
No, I don't think so. Definitely not by me - version 1.0 was released and I never touched it again! (Time, bancruptcies...)

Maybe the most useful additions would be those that allow more existing programs to run if they don't already. Bit I'm not sire what those are!

Offline Zozosoft

  • EP addict
  • *
  • Posts: 14084
  • Country: hu
  • OS:
  • Windows NT 10.0 Windows NT 10.0
  • Browser:
  • Firefox 85.0 Firefox 85.0
    • View Profile
    • http://enterprise.iko.hu/
Re: Improving IS-DOS
« Reply #10 on: 2021.February.12. 11:04:20 »
I was tempted to support switching IS-DOS between VT-52 and ADM-3A modes, but the default IS-DOS display that uses the "EDITOR:" device is not easy to change.  The "fast" video driver is much easier to change.


I don't know how that status line is displayed, but the Z19/Z89 terminals do support a status line, and I could implement it in the IS-DOS "fast" video driver, but that capability really cannot be added to the standard EXOS "EDITOR:" device.

Is possible add these are switchable options to the Fast Video driver?

Note: If I remember right I made default the fast video at the IS-DOS ROM versions then most of users use the fast video.

Offline elmer

  • EP fan
  • *
  • Posts: 196
  • Country: us
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 85.0 Firefox 85.0
    • View Profile
Re: Improving IS-DOS
« Reply #11 on: 2021.February.12. 18:05:00 »
Is possible add these are switchable options to the Fast Video driver?

Yes, adding new capabilities to the Fast Video "ISDOSVID:" driver is fairly easy, as long as you don't mind that the regular Slow Video "ISDOSECHO:" driver will become incompatible with some of those features.

Honestly, I think that it *might* be a good idea to do some tests and see if the Slow Video driver can just be removed, and use the Fast Video for everything in IS-DOS.

Offline elmer

  • EP fan
  • *
  • Posts: 196
  • Country: us
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 85.0 Firefox 85.0
    • View Profile
Re: Improving IS-DOS
« Reply #12 on: 2021.February.12. 18:26:11 »
No, I don't think so. Definitely not by me - version 1.0 was released and I never touched it again! (Time, bancruptcies...)

OK, thanks!


Maybe the most useful additions would be those that allow more existing programs to run if they don't already. Bit I'm not sure what those are!

Yes, there's not a lot of point in doing a bunch of extra work on upgrading IS-DOS with no actual benefit to users, who generally aren't programmers, and who just want to run applications and utilities that already exist (mostly games! ;-) ).

EXOS itself already offers all of the neccessary features for developing great new programs, and adding the MSX-DOS2 function calls wouldn't really bring much new to the table (IMHO).

I do think that IS-DOS could be made more friendly and capable (with some enhancements to batch files), but there are other things that would need a major rethink of how IS-DOS uses memory, and I suspect that that would be a step too far.

For instance, some of the power of both CP/M and MS-DOS, was that there was a permanent allocation of the TPA, and that programs could leave a part of themselves resident in memory, and then intercept DOS calls to add/change features.

These kind of TSR (from MS-DOS) or RSX (from CP/M) capabilities just aren't possible with the way that IS-DOS works at the moment.

Online gflorez

  • EP addict
  • *
  • Posts: 3229
  • Country: es
  • OS:
  • Windows NT 6.3 Windows NT 6.3
  • Browser:
  • Firefox 85.0 Firefox 85.0
    • View Profile
Re: Improving IS-DOS
« Reply #13 on: 2021.February.12. 21:29:32 »
I think, from my characteristic ignorance..., It is good to gain enhanced execution compatibility and fixed errors on Is-DOS, but why not better put the rest of the effort on making good batch processing commands on EXDOS?. I mean, conditional commands to tailor the boot process like we really want.

And about the mentioned TSR or RSX commands, EXOS has system extensions to do similar things, and they work even inside IS-DOS. System vars are also supported on the EXDOS batch processing, but with limited use.
« Last Edit: 2021.February.12. 23:22:49 by gflorez »

Offline elmer

  • EP fan
  • *
  • Posts: 196
  • Country: us
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 85.0 Firefox 85.0
    • View Profile
Re: Improving IS-DOS
« Reply #14 on: 2021.February.13. 21:01:05 »
And about the mentioned TSR or RSX commands, EXOS has system extensions to do similar things, and they work even inside IS-DOS. System vars are also supported on the EXDOS batch processing, but with limited use.

Both the EXOS "System Extension", and the EXOS "System Variables" designs are excellent at doing certain things, and are a huge step forward in the capabilities of computer operating systems in the early/mid 1980s ... but they both have their limits.

It is clear that the development team at Intelligent Software knew that, because EXDOS provides a completely different high-speed mechanism for programmers to access the FISH functions.

The same is true for certain uses for MS-DOS TSR and CP/M RSX mechanisms ... sometimes speed matters, and sometimes it can be important to have direct access to the flow of control in a computer system (in a single-user environment).


One notable example of this from the 1980s is how the developers of the ZCPR3/Z-System expansions for CP/M dramatically enhanced the capabilites of the base CP/M design, primarily by adding some shared memory and message flags between processes, and also by clearly defining how external programs could modify the flow of control when going from one program to the next.


I think, from my characteristic ignorance..., It is good to gain enhanced execution compatibility and fixed errors on Is-DOS, but why not better put the rest of the effort on making good batch processing commands on EXDOS?. I mean, conditional commands to tailor the boot process like we really want.

I agree that enhancing the the batch processing commands would be one of the best ways to improve IS-DOS from a user's perspective, the big question is "how", and what is the cost in terms of memory use (and development time)?

Making things more like MS-DOS, and also MSX-DOS2, would really require some "Environment" memory, and would probably use up another segment.

That is OK on an expanded Enterprise, but it would get close to the limit of a 128KB Enterprise (and completely fail on a 64KB Enterprise).


Adding some of the features from ZCPR3 would get us some less-familiar (and sometimes strange) ways of doing similar things, but the memory cost is less (because it was designed for a 64KB computer) ... and then we might get some compatibility with the substantial number of ZCPR3/Z-System utilites.