From mboxrd@z Thu Jan 1 00:00:00 1970 From: usotsuki at buric.co (Steve Nickolas) Date: Fri, 27 Nov 2020 07:20:38 -0500 (EST) Subject: [TUHS] Apple IIe Unix? In-Reply-To: <20201127115444.E581018C091@mercury.lcs.mit.edu> References: <20201127115444.E581018C091@mercury.lcs.mit.edu> Message-ID: On Fri, 27 Nov 2020, Noel Chiappa wrote: > > From: Steve Nickolas > > > there's no easy way to do preemptive multitasking without extra > > hardware. > > Perhaps you're using some idiosyncratic definition of "preemptive" and > "multitasking", but to me that statement's not accurate. > > Let's take the "multitasking" part first: that just means 'two or more > computations can run at the same time, sharing the machine' - and that's not > hard to do, without special hardware, provided there's some way (in the > organization of the software) to save the state of one when the other is > running. Many simple systems do this; e.g. the MOS system that I used on > LSI-11's, BITD. That's cooperative multitasking, though. And there's actually a program for the Apple //e that lets you do it from *BASIC*, "Extra.Apple" from Beagle Bros (they did a ton of "enhancement" utilities like this). > "Preemptive" is a bit trickier, because things have to be organized so that > one 'task' can be temporarily stopped arbitrarily (i.e. without it explicitly > giving up the processor, which is what e.g.MOS did) to let another run. There > does need to be some asynchronous way of inciting the second 'task' to run, > but interrupts (either clock, or device) do that, and pretty much every > machine has those. MINI-UNIX, for example, has premptive multitasking. You'd at least need interrupts, but a stock Apple //e literally doesn't have any way to generate a hardware interrupt. I do believe the //c (which has a built-in mouse controller which is interrupt-driven) can be programmed to do that, but without something like a 6522 card, a //e can't. It's pretty primordial, really. -uso.