Re: Software for MS-DOS 1.25

From: Michał Pleban <lists_at_michau.name>
Date: Tue, 10 Oct 2017 10:35:23 +0200
Message-ID: <59DC864B.4000909@michau.name>
Baltissen, GJPAA (Ruud) wrote:

> Last weekend was the first weekend I had some time to pay attention to my 720 and this thread. Only to discover that my 720 is dead now :( It did function last summer so it is something recent. 

Do your 610's work? Can you do the modification to run the 8088 card?

> The problem is that there isn't enough room in the original EPROM for storing a BIOS as we know it. What must be loaded by DOS in the first place, is the file IO.SYS. This file contains new interrupt routines that should replace the original ones in the BIOS. In our case it means we have to write one that contains ALL needed interrupt routines.

Yes, that is correct.

> A TSR is only needed when you want to change in INT vector _AFTER_ MSDOS has been loaded. It is just a matter of letting IO.SYS handle this translation and no TSR is needed anymore.

Yes of course, but writing this TSR (which I started doing on Sunday) is
several orders of magnitude easier that writing the whole IO.SYS from
scratch, where we have no source code.

Or, perhaps, we could write the INT routines and then just slap the
IO.SYS code from PC-DOS? Theoretically that should work.

> What do you mean with "calls BIOS directly"? Something like "call 0F000h:0E05Bh"? I never ran into a program that called some part of the BIOS directly. If you mean calling INT 10H then that should be no problem at all. 

Yes, I read somewhere that in the early days some software called BIOS
routines directly in the same way we are doing JSRs directly into BASIC
or KERNAL code routines.

But as it turns out now, the real problem is software accessing the
video RAM directly, which happens a lot and we have no good solution for
it so far.

> Eh, are you sure? I just checked my disassembly of the ROM and the only INT I can find is INT 7. 

Hm, let's see.

Vector INT 07h is used by the BIOS not for an interrupt, but as a
pointer to structures describing how to call different 6509 functions
(namely, the number of bytes to pass in and out). It is not called
directly. After you boot MS-DOS, it points to 0044:0000.

Apart from that, these are the interrupt vectors that get defined:

INT 00h -> 0180:1576 which should be somewhere in the MSDOS.SYS, I don't
remember what this interrupt is supposed to do.

INT 08h -> F000:F1E2 which is in the BIOS, this is the "intrpt" routine
from the BIOS source code, apparently to service interrupt coming from
the 6509.

INT 13h -> 0040:0749 which is in the IO.SYS, and the code at that
address almost immediately calls F000:F003 with CL=21. I was wrongly
assuming that it a service request routine, but apparently it's just an
internal IO.SYS thing calling the 6509 to do some task. I have no idea
what are they using this interrupt for, it would have to be determined
what the function number 21 does.

If we write our own IO.SYS, then I suppose we can repurpose this interrupt.

Regards,
Michau.

       Message was sent through the cbm-hackers mailing list
Received on 2017-10-10 09:00:07

Archive generated by hypermail 2.2.0.