Rainbow.c: i now have a clue why MS-DOS 2.x crashes (and CP/M 1.1 boots).

One reason is that our interrupt handling looks incorrect. There is additional IRQ logic not reflected in our code.

Please see the attached image in my Dropbox:

https://dl.dropboxusercontent.com/u/37819653/SH_6_VECTOR_SELECT.jpg

The screenshots are taken from the Field Manual of the PC-100 B, and the vital clue came from RBCONVERT.ZIP (File: CONVERT-A-B).

Next thing is the wrong sector interleave (1:1) instead of the following (sector count from 0 to 9):
LOG. => PHYS 0, 2, 4, 6, 8, 1, 3, 5, 7, 9
PHYS. => LOG. 0, 5, 1, 6, 2, 7, 3, 8, 4, 9

This is valid for both CP/M and MS-DOS; only for tracks >= 2; counted from track 0.

Please advise what to do.
The current code base is increasingly difficult to understand.
Help is appreciated.

wink


Last edited by Bavarese; 02/19/14 08:18 PM.