Page 1 of 1

PDOS/380

Posted: Sun Aug 01, 2010 7:54 am
by kerravon
Hi folks.

I have an existing operating system called PDOS (public domain operating system), which I started working on in the mid 90s. It was designed to be a clone of MSDOS, except have both a 32-bit and 16-bit version.

It is working to some extent, but I stopped working on it around 2002, and switched to working on the S/370 (IBM mainframe) processor instead - concentrating on porting PDPCLIB (public domain C runtime library) and GCC to that environment. That is all working fine.

Using the recently-ported GCC, I have now produced a S/370 (and S/380) version of PDOS, written in C. Like its 386 cousin, it consists of an IO.SYS (pload), an MSDOS.SYS (pdos) and COMMAND.COM (pcomm), and the intention is to look like MSDOS, but running MVS executables instead of MSDOS executables, and handling MVS SVC calls instead of INT86 calls.

I have started by doing the minimum required to get pcomm, which at the moment is basically an ordinary MVS hello world C program (which means that it has all the baggage of C, doing a lot of OS calls), to run.

With the proof of concept now done, I am now wondering if anyone would like to look at the fairly small amount of code involved, and suggest any structural changes before it gets stuck in stone and I paint myself into a corner?

500 lines of C ...

http://pdos.cvs.sourceforge.net/viewvc/ ... iew=markup

300 lines of assembler ...

http://pdos.cvs.sourceforge.net/viewvc/ ... iew=markup

Thanks. Paul.




22:40:33 * MSG FROM HERCULES: Welcome to PDOS!!!
22:40:33 * MSG FROM HERCULES: IPL device is 1b9
22:40:33 * MSG FROM HERCULES: PCOMM should reside on cylinder 2, head 0 of IPL device
22:40:33 * MSG FROM HERCULES: SVC code is 120
22:40:33 * MSG FROM HERCULES: SVC code is 120
22:40:33 * MSG FROM HERCULES: SVC code is 10
22:40:33 * MSG FROM HERCULES: SVC code is 120
22:40:33 * MSG FROM HERCULES: SVC code is 24
22:40:33 * MSG FROM HERCULES: SVC code is 64
22:40:33 * MSG FROM HERCULES: SVC code is 27
22:40:33 * MSG FROM HERCULES: SVC code is 22
22:40:33 * MSG FROM HERCULES: SVC code is 120
22:40:33 * MSG FROM HERCULES: SVC code is 120
22:40:33 * MSG FROM HERCULES: SVC code is 10
22:40:33 * MSG FROM HERCULES: SVC code is 10
22:40:33 * MSG FROM HERCULES: SVC code is 120
22:40:33 * MSG FROM HERCULES: SVC code is 24
22:40:33 * MSG FROM HERCULES: SVC code is 64
22:40:33 * MSG FROM HERCULES: SVC code is 27
22:40:33 * MSG FROM HERCULES: SVC code is 22
22:40:33 * MSG FROM HERCULES: SVC code is 120
22:40:33 * MSG FROM HERCULES: SVC code is 120
22:40:33 * MSG FROM HERCULES: SVC code is 10
22:40:33 * MSG FROM HERCULES: SVC code is 10
22:40:33 * MSG FROM HERCULES: SVC code is 120
22:40:33 * MSG FROM HERCULES: SVC code is 24
22:40:33 * MSG FROM HERCULES: SVC code is 64
22:40:33 * MSG FROM HERCULES: SVC code is 27
22:40:33 * MSG FROM HERCULES: SVC code is 22
22:40:33 * MSG FROM HERCULES: SVC code is 120
22:40:33 * MSG FROM HERCULES: SVC code is 120
22:40:33 * MSG FROM HERCULES: SVC code is 10
22:40:33 * MSG FROM HERCULES: welcome to pcomm
22:40:33 * MSG FROM HERCULES: argc = 3
22:40:33 * MSG FROM HERCULES: arg 0 is <>
22:40:33 * MSG FROM HERCULES: arg 1 is <Hi>
22:40:33 * MSG FROM HERCULES: arg 2 is <There>
22:40:33 * MSG FROM HERCULES: SVC code is 10
22:40:33 * MSG FROM HERCULES: SVC code is 120
22:40:33 * MSG FROM HERCULES: SVC code is 120
22:40:33 * MSG FROM HERCULES: SVC code is 20
22:40:33 * MSG FROM HERCULES: SVC code is 120
22:40:33 * MSG FROM HERCULES: SVC code is 10
22:40:33 * MSG FROM HERCULES: SVC code is 10
22:40:33 * MSG FROM HERCULES: SVC code is 120
22:40:33 * MSG FROM HERCULES: SVC code is 120
22:40:33 * MSG FROM HERCULES: SVC code is 20
22:40:33 * MSG FROM HERCULES: SVC code is 120
22:40:33 * MSG FROM HERCULES: SVC code is 10
22:40:33 * MSG FROM HERCULES: SVC code is 10
22:40:33 * MSG FROM HERCULES: SVC code is 120
22:40:33 * MSG FROM HERCULES: SVC code is 120
22:40:33 * MSG FROM HERCULES: SVC code is 20
22:40:33 * MSG FROM HERCULES: SVC code is 120
22:40:33 * MSG FROM HERCULES: SVC code is 10
22:40:33 * MSG FROM HERCULES: SVC code is 120
22:40:33 * MSG FROM HERCULES: SVC code is 120
22:40:33 * MSG FROM HERCULES: SVC code is 3
22:40:33 * MSG FROM HERCULES: return from PCOMM is 5

Re: PDOS/380

Posted: Wed Aug 04, 2010 6:47 am
by sprints
i don't see any major structural issues, but i would suggest moving some of the functions into separate files.

Re: PDOS/380

Posted: Thu Aug 05, 2010 4:48 am
by kerravon
sprints wrote:i don't see any major structural issues, but i would suggest moving some of the functions into separate files.
Thanks for the feedback. That gives me a degree of confidence.

Regarding the separate files - I'll try to ensure that static variables aren't used, and that the PDOS structure is used instead, so that I can split the code out if required. I do like the idea of the compiler being able to inline the whole thing though, and so far it isn't big.

Certainly some of the sub-structures used should be moved out though, along with creating a pdos.h as the interface.

Re: PDOS/380

Posted: Sun Sep 12, 2010 12:23 pm
by VolTeK
this is actually smart how you have the memory management set up, though considering the memory is unprotected i would like to implement the idea you have (in a small dos project), using blocks instead of memory addresses




0xaddr - 0xaddr where as it could be translated as block 0 - 2 stack (example)


Always was a fan of getting great things to run in real mode, Wonder if any one has had a contest on making a dos that the winners dos had to have been as similar to say, ms-dos 3 ? Or just a contest (other then 512 byte compo) to make the best os in real mode.


Id start but i lost all of the source to the VolTroX DOS Series