Greg Haerr writes:
>
> >
> > > 5) I compiled elvis and it does run. well, this is a bit of an
> exaggeration:
> > > undo doesn't work and sometimes I have to kill the process from my root
> > > session. after this, I get no more echo to the console where I was
> running
> > > elvis. I can do exit and login again.
> >
> > elvis is stalled mid port. I got it to the stage where it kind of ran,
> then
> > released it. The problems could be because elvis is not yet fully ported,
> > or it could be bugs in ELKS.
>
> In my last elkscmds submission, makefile changes were made so that
> the visual editors could be run under elksemu, as well as compiled
> directly on Linux. In certain cases, the editor's didn't run on Linux
> either.
> I ported a couple more visual editors in elkscmd, try them out as well.
>
> > + seg cs
> > mov ax, stashed_irq
> > or ax,ax
> > jz irq0_bios
>
> Al - so this was the floppy disk drive bug? I can see why
> it changed whenever a few bytes more or less were added to ELKS...
> Glad you found it!
>
Before the seg cs line was added, the code was fetching the variable
stashed_irq from whatever data segment was set when the timer interrupt
occured. I guess this was most often the kernel data segment. It appears
that whether this value was 0 or non-zero depended on where in the data
segment it was, so if the data was shifted slightly by adding a byte to the
right place it ended up pointing at a different value. Sometime this value
was 0, so the code worked, sometimes it wasn't, and it didn't.
Al