Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!wuarchive!zaphod.mps.ohio-state.edu!ncar!gatech!usenet.ins.cwru.edu!ncoast!allbery From: allbery@NCoast.ORG (Brandon S. Allbery KB8JRR/AA) Newsgroups: comp.sys.amiga.advocacy Subject: Re: 8-bit death Message-ID: <1991May10.000135.7550@NCoast.ORG> Date: 10 May 91 00:01:35 GMT References: <2945.tnews@templar.actrix.gen.nz> <1991May7.090333.1449@kessner.denver.co.us> <3335.tnews@templar.actrix.gen.nz> Reply-To: allbery@ncoast.ORG (Brandon S. Allbery KB8JRR/AA) Followup-To: comp.sys.amiga.advocacy Organization: North Coast Public Access Un*x (ncoast) Lines: 59 As quoted from <3335.tnews@templar.actrix.gen.nz> by jbickers@templar.actrix.gen.nz (John Bickers): +--------------- | Quoted from <1991May7.090333.1449@kessner.denver.co.us> by david@kessner.denver.co.us (David Kessner): | > In article <2945.tnews@templar.actrix.gen.nz> jbickers@templar.actrix.gen.nz (John Bickers) writes: | > > When one calls an MS-DOS "interrupt" (haw, reminds me of the C= 64), | > > That's a fundamental part of the OS that is only 8 bits. | | > The 68000, 68030 (not sure of the 040), 386, etc all offer 256 different | > intterupts (READ: 8 bits). The C-64 (and the 6502/6510) had _THREE_, and | | So? I meant the way you call the OS. In the C= 64 it involved either | ROM jumping or using fixed tables of vectors into the ROMs. In the | PClone, it appears to involve using fixed tables of vectors into the | ROMs. +--------------- ??? ONE interrupt is used for system calls --- INT 21H (that, by the way, is the assembly language mnemonic to signal that interrupt). This is no different from 680x0 Unixes that use "trap #0" to make a system call in assembler. BIOS has a few interrupts it uses, specifically so that BIOS replacements can be dropped into place. Theoretically, you're not supposed to call the BIOS directly, but we all know what MS-Doesn't is like.... +--------------- | I could be wrong here. Is there some other decent way to call an | MS-DOS function besides using that vector table? All I ever see is | the int86() etc functions in Microsoft C. +--------------- This is less because MS-DOS doesn't have a rational syscall mechanism than because MS-DOS doesn't have rational syscalls.... +--------------- | No (not any more than any other MS-DOS feature, anyhow. Sharing | interrupts strikes me as being reminiscent of the C= 64 as well, | and also seems like a pain in the a). This is supposed to be an | example of why MS-DOS is a puny OS, therefore 8-bit (hm, doesn't | the '-' in 8-bit mean "or less"? :). +--------------- No, it's normal to use one (or a *small* number of) entry point to the OS. Even the Mac does it, although in a twisted fashion (they hook the 1010 and 1011 unimplemented opcode traps, then have the trap handler decipher the "instruction" to determine what routine to call). The task of keeping track of interrupts gets harder as the number of possible interrupts increases, even if they're software-only interrupts. (And I daresay indexing into a private jump table based on the contents of d0 is faster than fetching a word via a pointer from the interrupt context, masking out the highest nybble, and indexing the jump table from that....) ++Brandon -- Me: Brandon S. Allbery Ham: KB8JRR/AA 10m,6m,2m,220,440,1.2 Internet: allbery@NCoast.ORG (restricted HF at present) Delphi: ALLBERY AMPR: kb8jrr.AmPR.ORG [44.70.4.88] uunet!usenet.ins.cwru.edu!ncoast!allbery KB8JRR @ WA8BXN.OH