Nextor: the whole story

Page 2/6
1 | | 3 | 4 | 5 | 6

Par MicroTech

Champion (384)

Portrait de MicroTech

02-08-2011, 12:29

Are the known bugs/limitations in msx-dos2? I know of one. You can't load/save data directly into/from a secondary mapper. It always uses the primary mapper.
So, if I understand correctly, RD_SEG and WR_SEG select primary mapper slot in any case, independently from currently selected slot.
Correct me if I'm wrong, please

Par konamiman

Paragon (1084)

Portrait de konamiman

02-08-2011, 13:29

Are the known bugs/limitations in msx-dos2? I know of one. You can't load/save data directly into/from a secondary mapper. It always uses the primary mapper.
So, if I understand correctly, RD_SEG and WR_SEG select primary mapper slot in any case, independently from currently selected slot.
Correct me if I'm wrong, please

What msd means is that you can't read data from or write data to a disk file using anything but the primary mapper as the source or destination of data. This is due to how the kernel is designed: whenever data is to be transferred from/to disk, the primary mapper is always switched on the appropriate page, not the previously selected slot. Also, when page 1 is involved in the disk transfer, the approrpriate segment is switched on another page, so it must be a mapper slot anyway.

Par konamiman

Paragon (1084)

Portrait de konamiman

02-08-2011, 13:54

If I could put my hands in kernel sources I'd try to port some VxWorks kernel features (that I use actually at work) inside MSX-DOS kernel...
For example...?

Par MicroTech

Champion (384)

Portrait de MicroTech

02-08-2011, 14:47

If I could put my hands in kernel sources I'd try to port some VxWorks kernel features (that I use actually at work) inside MSX-DOS kernel...
For example...?

Preemptive multitasking (although in VxWorks terminology a task resembles a Windows thread), so it would be necessary a set of new kernel primitives (and objects) to deal with semaphores, memory partitions, message queues, interrupts... and also tasks themselves.
I presume these would have been very useful writing driver and application software for Denyonet.

Then I would try to import the device/driver I/O system, hopefully overcoming the limit of 8 logical drives.

Then there would be RTP (real time processes) although MSX has not a real MMU: a preexisting MSX-DOS application should be loaded and run in its own address space/memory context, separate from kernel and other applications... but this requires deep knowledge of MSXDOS... and its sources Wink

The most "exciting" part in VxWorks is that everything is designed to get the minimum latency and maximum performance.
This is not very necessary to MSX-DOS (it is not a safety-critical system Tongue ) but is a good trace/example to follow for a decent performance on a "snail" platform like a standard MSX2.

Par msd

Paragon (1404)

Portrait de msd

02-08-2011, 16:29

@micrTech: I have a thread engine for you.. works in dos2 Tongue. Only don't use blocking calls.

Par MicroTech

Champion (384)

Portrait de MicroTech

02-08-2011, 17:10

@micrTech: I have a thread engine for you.. works in dos2 Tongue.

I know, I immediately downloaded it when it appeared in msx.org download database Cool

Only don't use blocking calls.

In fact that is the weak point... and the diffcult part...
A task taking an empty semaphore should pend, a reschedule happen and the next task on the ready queue (the one with the highest priority) should become the running task... just dreaming new system calls (MSX-DOS functions) like semTake, semGive, taskSpawn, memPartCreate Running Naked in a Field of Flowers

Par msd

Paragon (1404)

Portrait de msd

02-08-2011, 18:31

I mutexed all the bdos calls.. but it doesn't work with CONIN and simular functions like that.. because they don't return until you hit a key

Par msd

Paragon (1404)

Portrait de msd

02-08-2011, 22:33

@konamiman: Can you tell me how msxdos2.sys is loaded and therefore how one can reload msxdos2.sys without going to basic. I did this already but I'm not sure if I updated all the necessary addresses. I load msxdos2.sys on address 100 and then jump to it.. I modify the value on address 0F34Bh and 0F349h before doing so.

Par MicroTech

Champion (384)

Portrait de MicroTech

03-08-2011, 11:08

I mutexed all the bdos calls.. but it doesn't work with CONIN and simular functions like that.. because they don't return until you hit a key

Maybe your thread should read from console with _CONIN only after _CONST returns that a key was pressed thus not pending on shell input from user.

Thinking about new MSX-DOS with retro compatibility in mind is not an easy "task"... Wink

Par SLotman

Paragon (1223)

Portrait de SLotman

04-08-2011, 21:49

If we have something like BDOS2, booting on FAT16, and that can use the bigger mapper on the machine, instead of the internal one, I'll be happy Smile

Thanks Konamiman for doing Nextor! And very cool to know you have the sources of DOS2! Cool

Page 2/6
1 | | 3 | 4 | 5 | 6