Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

FYSOS under QEMU

141 views
Skip to first unread message

Rod Pemberton

unread,
Dec 14, 2007, 9:24:46 PM12/14/07
to
Ben,

I'm still seeing some errors with FYSOS under QEMU.

With 2 Dec 2007 FYSOS and QEMU 0.8.2 compiled for Windows 98:

...
Did not find a floppy drive.
...
Could not calculate which partition/disk was booted from. Please choose an
initial drive to use:


In the control window, I'm getting:

qemu: unsupported keyboard cmd=0xaf
qemu: unsupported keyboard cmd=0xa1
qemu: unsupported keyboard cmd=0xed


I'm running with this line:

qemu -L . -m 128 -no-kqemu -net none -std-vga -boot a -fda a.img -localtime


Rod Pemberton

Benjamin David Lunt

unread,
Dec 14, 2007, 10:15:27 PM12/14/07
to

Hi Rod,

I have not ever tried QEmu. However, I have always wanted
to. Maybe now is a good time to try? I will get back to you
on this.

Ben


"Rod Pemberton" <do_no...@nohavenot.cmm> wrote in message
news:fjvdqc$86s$1...@aioe.org...

Benjamin David Lunt

unread,
Dec 15, 2007, 10:32:41 AM12/15/07
to

"Rod Pemberton" <do_no...@nohavenot.cmm> wrote in message
news:fjvdqc$86s$1...@aioe.org...
> Ben,
>
> I'm still seeing some errors with FYSOS under QEMU.
>
> With 2 Dec 2007 FYSOS and QEMU 0.8.2 compiled for Windows 98:
>
> ...
> Did not find a floppy drive.
> ...
> Could not calculate which partition/disk was booted from. Please choose
> an
> initial drive to use:


Hi Rod,

Page 40 & 41 of the FDC 82077AA specs, section 8.2, specify the
way the fdc should be initialized after a reset.

"Following a reset of the 82077AA, the Configuration Control
Register (CCR) should be reinitialized"..."Since polling is
enabled after a reset of the 82077AA, four SENSE INTERRUPT STATUS
commands need to be issued afterwards to clear the status flags
for each drive. The flowchart in Figure 8-3 illustrates how"...

"As a note, if the CONFIGURE command is issued within 250 ms of
the trailing edge of reset (@ 1Mbps), the polling mode of the
82077AA can be disabled before the polling initiated interrupt
occurs. Since polling stops when the 82077AA enters the command
phase, it is only time critical up to the first byte of the
CONFIGURE command. If disabled in time, the system software no
longer needs to issue the four SENSE INTERRUPT STATUS commands
to clear the internal interrupt flags normally caused by polling."


I don't know the workings of Qemu enough to know, but here are
my ideas why my fdc detection isn't working:
1. Maybe Qemu doesn't support this polling technique after
reset, therefore doesn't have 4 interrupts in the queue.
2. Maybe the timing is off and my code for the configure
command is exectuted before the 250us has elapsed.
(doubt this one is the cause)
3. Well, I think it is the 1st one above :-)

[I will see if I can send this post to the Qemu team too.]

> In the control window, I'm getting:
>
> qemu: unsupported keyboard cmd=0xaf
> qemu: unsupported keyboard cmd=0xa1
> qemu: unsupported keyboard cmd=0xed

#define KEY_CMD_VERSION 0xAF // Controller version
#define KEY_CMD_FIRM_VER 0xA1 // Controller firmware version
#define KEY_CMD_LEDS 0xED // set the state of the LED's

I am not suprised by the first two, but am suprised
that it doesn't support the third command.

> I'm running with this line:
>
> qemu -L . -m 128 -no-kqemu -net none -std-vga -boot a -fda
> a.img -localtime

Thanks Rod, I appreciate the help.

Ben


Benjamin David Lunt

unread,
Dec 15, 2007, 10:39:45 AM12/15/07
to

"Benjamin David Lunt" <zf...@frontiernet.net> wrote in message
news:tsS8j.461$7d1...@news01.roc.ny...

>
>
> [I will see if I can send this post to the Qemu team too.]
>

Well, the dev-list for QEmu seems to be down. Maybe I will
try later or hopefully, one of the developers is a regular
reader here.

Ben

--
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Forever Young Software
http://www.frontiernet.net/~fys/index.htm
To reply by email, please remove the zzzzzz's


Esra Sdrawkcab

unread,
Dec 15, 2007, 2:10:08 PM12/15/07
to
Benjamin David Lunt wrote:
> "Benjamin David Lunt" <zf...@frontiernet.net> wrote in message
> news:tsS8j.461$7d1...@news01.roc.ny...
>>
loaded latest into a VPC 2004 session:
muy comments are --()


Number of bits used for physical addresses: 36
Found coprocessor type: TODO at 0 Mhz
CMOS: 128 bytes, 2nd CRC: notfound (00)
Found Advanced Configuration and Power Interface (ACPI)
Updating hardware information...
ACPI: DSDT: AML code size 8311 [ACPI: unknown sig: [424D454F]]
Found PnP BIOS v1.0
Found PnP ISA card: Unknown vendor type and/or name
ID String: Sound Blaster 16
Vendor ID: tBA03;0 serial number: -1
Device 0: id: ZA@ function: 003 rev: 176 Compatible id: 03B0
Found PnP ISA card: Unknown vendor type and/or name
ID String: Game Port
Vendor ID: tBA2?;0 serial number: -1
Device 0: id: ZA@ function: 047 rev: 176 Compatible id: 2FB0
Found VESA v2.0 compatible video card:
IBM SVGA BIOS, (C) 1993 Internat
Modes found: 32 Modes supported: 31
Keyboard passed 0xAA test
Keyboard passed 0xAB test
Controller version: 0
Controller firmware version: 0
Found PS2 Keyboard with id: AB 41

-- (slows detecting the (virtual floppy))
Found Floppy Disk Controller at 0x03F0 with type 82078SL or 82078-1
Found 1.44M Floppy drive (3F0) (0)
Found UNKNOWN Floppy drive (3F0) (1)
Found Floppy Disk Controller at 0x0370 with type 82078SL or 82078-1
Found UNKNOWN Floppy drive (370) (0)
Found UNKNOWN Floppy drive (370) (1)
Found a FAT12 file system
--(1.5 min pause)
Found ATA Disk Controller at 0x01F0
--(cant paste next line retyped- )
Warning. ATA device did not report ata(pi) version. Assume version 3+
(Y,N)?
--(tried replying Y but no response, rebooted and tried N - same)

Hope this helps


Benjamin David Lunt

unread,
Dec 15, 2007, 5:38:35 PM12/15/07
to

"Esra Sdrawkcab" <ad...@127.0.0.1> wrote in message
news:kEV8j.7718$ov2....@newsfe5-win.ntli.net...

> Benjamin David Lunt wrote:
>> "Benjamin David Lunt" <zf...@frontiernet.net> wrote in message
>> news:tsS8j.461$7d1...@news01.roc.ny...
>>>
> loaded latest into a VPC 2004 session:
> muy comments are --()

Hi Esra,

I will have a look at these things. Thank you. It is always nice
to have a fellow user send in the debug.txt file (or post it like you
did). I will look into these things and get back to you.

Thanks,

Benjamin David Lunt

unread,
Dec 15, 2007, 6:20:56 PM12/15/07
to

"Esra Sdrawkcab" <ad...@127.0.0.1> wrote in message
news:kEV8j.7718$ov2....@newsfe5-win.ntli.net...
> Benjamin David Lunt wrote:
>> "Benjamin David Lunt" <zf...@frontiernet.net> wrote in message
>> news:tsS8j.461$7d1...@news01.roc.ny...
>>>
> loaded latest into a VPC 2004 session:
> muy comments are --()

> ACPI: DSDT: AML code size 8311 [ACPI: unknown sig: [424D454F]]

Fixed.

> Found PnP BIOS v1.0
> Found PnP ISA card: Unknown vendor type and/or name
> ID String: Sound Blaster 16
> Vendor ID: tBA03;0 serial number: -1
> Device 0: id: ZA@ function: 003 rev: 176 Compatible id: 03B0
> Found PnP ISA card: Unknown vendor type and/or name
> ID String: Game Port
> Vendor ID: tBA2?;0 serial number: -1
> Device 0: id: ZA@ function: 047 rev: 176 Compatible id: 2FB0

These two, I have added the 'code' that is returning the unknown
vendor type and/or name. If you don't mind, please send the latest.

> -- (slows detecting the (virtual floppy))
> Found Floppy Disk Controller at 0x03F0 with type 82078SL or 82078-1
> Found 1.44M Floppy drive (3F0) (0)
> Found UNKNOWN Floppy drive (3F0) (1)
> Found Floppy Disk Controller at 0x0370 with type 82078SL or 82078-1
> Found UNKNOWN Floppy drive (370) (0)
> Found UNKNOWN Floppy drive (370) (1)
> Found a FAT12 file system
> --(1.5 min pause)

For some reason, VPC has always detected a second controller
and unknown floppy drives. I have done quite a bit of work
to see why it does this, but haven't found out yet. My fdc code
works as expected on real hardware, Bochs, and QEmu, so I am
thinking that it is a quirk in VPC.

> Found ATA Disk Controller at 0x01F0
> --(cant paste next line retyped- )
> Warning. ATA device did not report ata(pi) version. Assume version 3+
> (Y,N)?
> --(tried replying Y but no response, rebooted and tried N - same)

I think this has to do with my code detecting the DMA mode of
the controller. It has been known to freeze at this point. I have
commented out the dma_check. Please try again.

Thanks for your help. It is much appreciated.

Ben


Rod Pemberton

unread,
Dec 15, 2007, 9:20:12 PM12/15/07
to

"Benjamin David Lunt" <zf...@frontiernet.net> wrote in message
news:tsS8j.461$7d1...@news01.roc.ny...
>
> #define KEY_CMD_VERSION 0xAF // Controller version
> #define KEY_CMD_FIRM_VER 0xA1 // Controller firmware version
> #define KEY_CMD_LEDS 0xED // set the state of the LED's
>
> I am not suprised by the first two, but am suprised
> that it doesn't support the third command.
>

Yeah, me too, since I'm using 0xED in my OS and QEMU doesn't complain...
Probably something else prior.


Rod Pemberton

Rod Pemberton

unread,
Dec 15, 2007, 9:27:56 PM12/15/07
to

"Benjamin David Lunt" <zf...@frontiernet.net> wrote in message
news:LHY8j.455$Sa1...@news02.roc.ny...

> It is always nice
> to have a fellow user send in the debug.txt file (or post it like you
> did).

I wanted to. I just couldn't figure out what option I need to redirect
output sent to the new window QEMU opens. And, I still haven't found it...

Both, 12/2 and 12/15 also say "fdc: 000". Although one screen of text
flashes by quickly, the second is slower. If there are lines you're
interested I could type them in.


Rod Pemberton

Alexei A. Frounze

unread,
Dec 15, 2007, 10:09:07 PM12/15/07
to
On Dec 15, 3:20 pm, "Benjamin David Lunt" <zf...@frontiernet.net>
wrote:

> For some reason, VPC has always detected a second controller
> and unknown floppy drives. I have done quite a bit of work
> to see why it does this, but haven't found out yet. My fdc code
> works as expected on real hardware, Bochs, and QEmu, so I am
> thinking that it is a quirk in VPC.

How about using BIOS' int 11h or its Data Area to figure out how many
floppies you have? Would that fix the problem with VPC?

Alex

Benjamin David Lunt

unread,
Dec 15, 2007, 10:11:05 PM12/15/07
to

"Rod Pemberton" <do_no...@nohavenot.cmm> wrote in message
news:fk22c9$31c$1...@aioe.org...

Well, if it would detect the floppy and get to the command prompt, you
could then use another utility to extract the debug.txt file from the
image and send it to me to see why it didn't detect the floppy.
The chicken before the egg thing, right.

I will look into it some more and let you know. If you do find
a why to get QEmu to redirect, or copy the text to the clipboard
please send it to me.

Thanks.


Benjamin David Lunt

unread,
Dec 15, 2007, 10:11:06 PM12/15/07
to

"Rod Pemberton" <do_no...@nohavenot.cmm> wrote in message
news:fk21to$1ng$1...@aioe.org...

QEmu doesn't complain that you are using 0xED?

Uhhm. Makes me wonder...

Ben


Benjamin David Lunt

unread,
Dec 15, 2007, 11:16:59 PM12/15/07
to

"Alexei A. Frounze" <alexf...@gmail.com> wrote in message
news:efa7c0bb-1a94-46b3...@d4g2000prg.googlegroups.com...

Hi Alex,

I have code to do this. If you set the attribute in the system
file (system.sys), then it uses the BIOS just as you state above
instead of probing the hardware. However, where is the fun in
that :-)

Ben


Rod Pemberton

unread,
Dec 16, 2007, 5:44:57 AM12/16/07
to

"Benjamin David Lunt" <zf...@frontiernet.net> wrote in message
news:eH09j.497$7d1...@news01.roc.ny...

Sigh, it'd been six months. So, I created another image. No, it's not
complaining. My OS still boots DOS first - then takes control from DOS
(maybe affects things?). Anyway, it only uses 0xED to set/clear the led's
for Num,Caps,Scroll and clears all three after initing the keyboard but
before enabling it.


Rod Pemberton

Rod Pemberton

unread,
Dec 16, 2007, 5:47:39 AM12/16/07
to

"Benjamin David Lunt" <zf...@frontiernet.net> wrote in message
news:dH09j.496$7d1...@news01.roc.ny...

> If you do find
> a why to get QEmu to redirect,

Nope...

> or copy the text to the clipboard
> please send it to me.

Nope...

I typed in what I could capture. I'm still not sure how to capture the
screen output with QEMU. I was able to stop and start the emulation with
their "debugger" capturing much of the text. Anyway, some text is missing,
for Dec 15 image after my signature. Oh, the 12/15 adds the "fdc: 000"
line. I tried to keep the fixed font spacing correct... The speed and CPU
type under QEMU are wrong. That may be due to QEMU. Should I post one from
a normal PC boot also?

Rod Pemberton


Checking for a 386+ processor...
Loading system files...
Loading: kernel.sys...decompressing(bz2)(file crc passed)
Loading: system.sys...moving

(can't catch text between "moving" and "Build")

Build: Dec 15 2007

A20 line enabled via technique 0 (A20 already set by BIOS.)
Memory size in megs: 128
Found processor type: TODO at 477Mhz
Processor: GenuineIntel
type: 06 00
model: 03 00
stepping: 03
APIC ID: 00
log_procs: 08
clflush: 00
brand: (00) Brand not supported by CPU
x87 FPU: yes
VME: no
MSR: yes
APIC on chip: yes
ACPI (temp): no
THERMO: no
MMX: yes
SSE: yes
SSE2: yes
Has Cache and TLB Information structure


Found coprocessor type: TODO at 0 Mhz

CMOS: 128 bytes, 2nd CRC: found (00)


Found Advanced Configuration and Power Interface (ACPI)
Updating hardware information...

ACPI: DSDT: AML code size 2062
ACPI:DSDT table doesn't crc... org_crc 5B. calculated crc 00
ACPI APIC type 0 found...
ACPI APIC type 1 found...


Found VESA v2.0 compatible video card:

Bochs/Plex86 VBE(C) 2003 http://
Modes found: 38 Modes supported 38


Keyboard passed 0xAA test
Keyboard passed 0xAB test

Found PS2 Keyboard with id: AB 83
Found PS2 Wheel Mouse (0x00 0x02 0x64) (0x03)
fdc: 000


Did not find a floppy drive.

Found ATA Disk Controller at 0x0170
Found ATA drive: QEMU CD-ROM (Optical Disk) 0x170 drv: 0
Found logical drive A: active: Y at: 0 Sectors: 0


Could not calculate which partition/disk was booted from. Please choose an
ini
tial drive to use:

Drive was invalid, please choose again:

Rod Pemberton

unread,
Dec 16, 2007, 7:15:26 AM12/16/07
to

"Rod Pemberton" <do_no...@nohavenot.cmm> wrote in message
news:fk2vl7$9hs$1...@aioe.org...

>
> "Benjamin David Lunt" <zf...@frontiernet.net> wrote in message
> news:dH09j.496$7d1...@news01.roc.ny...
>
> > If you do find
> > a why to get QEmu to redirect,
> Nope...
>
> > or copy the text to the clipboard
> > please send it to me.
> Nope...
>
> I typed in what I could capture.

[deleted, other post]

> Should I post one from a normal PC boot also?

Not sure how to save that... I didn't see a debug.txt on the floppy or util
for it, or was that for QEMU? The normal boot had reams of data, including
probably three pages of complaints about 1A functions... but, no debug.txt.


Rod Pemberton

Benjamin David Lunt

unread,
Dec 16, 2007, 10:31:18 AM12/16/07
to

Hi Rod,

Thanks for catching the text. I still believe that it is
QEmu that does not support the Polling feature just after
reset. However, I am going to do a few tests.

Also, I will post a new image specifically for QEmu, another
specifically for VPC, and then another for Bochs and real
hardware.

The image for QEmu will not have the polling code.
The image for VPC will detect the floppy using the CMOS.

Thanks again,
Ben


"Rod Pemberton" <do_no...@nohavenot.cmm> wrote in message

news:fk2vl7$9hs$1...@aioe.org...

Benjamin David Lunt

unread,
Dec 16, 2007, 10:31:18 AM12/16/07
to

"Rod Pemberton" <do_no...@nohavenot.cmm> wrote in message
news:fk34pq$q5r$1...@aioe.org...

Hi Rod,

That's my fault. To do some tests with the floppy, I had it
skip a bunch of code to make the boot faster. It skipped the
"write debug.txt file" code.

Sorry. Watch for the three images soon.

Thanks again for all your help.
Ben


Benjamin David Lunt

unread,
Dec 16, 2007, 10:31:19 AM12/16/07
to

"Rod Pemberton" <do_no...@nohavenot.cmm> wrote in message
news:fk2vg5$8qm$1...@aioe.org...

>
>>
>> QEmu doesn't complain that you are using 0xED?
>>
>> Uhhm. Makes me wonder...
>>
>
> Sigh, it'd been six months. So, I created another image. No, it's not
> complaining. My OS still boots DOS first - then takes control from DOS
> (maybe affects things?). Anyway, it only uses 0xED to set/clear the led's
> for Num,Caps,Scroll and clears all three after initing the keyboard but
> before enabling it.

I will look into this too. Thanks.


Wolfgang Kern

unread,
Dec 16, 2007, 11:03:16 AM12/16/07
to

Rod Pemberton answered Benjamin David Lunt:

[...KEYBD LEDs..]

> Sigh, it'd been six months. So, I created another image. No, it's not
> complaining. My OS still boots DOS first - then takes control from DOS
> (maybe affects things?). Anyway, it only uses 0xED to set/clear the led's
> for Num,Caps,Scroll and clears all three after initing the keyboard but
> before enabling it.

I remember the troubles I had with my first attempt to toggle LEDs when
CAPS,NUM,SCRL pressed ... ~20 years ago ;)

I took me many hours to figure out that the 'ED' command takes some time.
Because this keys shall not wait for the break-code, I had it as part of
the IRQ routine. And this caused some weird behaviour.

After I reenabled all IRQs before the LED-cmd, the problem vanished.
The cmd-acknowledge bytes are then read in time to satisfy the hardware.
And if keys are set to repeat-mode and held down the LED will blink, and
the timer can be used for err-time-out or msg: "why hold this key down?".

The problem with emulation may be the timing, perhaps depending
on RealMachine vs. Virtual KeyRepeatRates ... IIRC 'ED' takes 2..5mS.

Or the reported problem with a missing support comes from the usually
read, but ignored, cmd-ackn in an active keyboard-routine ... ?
After initialising or mode changes the ackn-bytes wont enter my buffer.
__
wolfgang

Benjamin David Lunt

unread,
Dec 16, 2007, 12:18:09 PM12/16/07
to

"Wolfgang Kern" <now...@never.at> wrote in message
news:fk3ibd$6ch$3...@newsreader2.utanet.at...

Hi wolfgang,

Noted. Thanks.

Ben


Benjamin David Lunt

unread,
Dec 16, 2007, 12:28:24 PM12/16/07
to

"Benjamin David Lunt" <zf...@frontiernet.net> wrote in message
news:axb9j.474$Sa1...@news02.roc.ny...

>
> Also, I will post a new image specifically for QEmu, another
> specifically for VPC, and then another for Bochs and real
> hardware.
>
> The image for QEmu will not have the polling code.
> The image for VPC will detect the floppy using the CMOS.

I have posted two of the three images.

The first image works on Bochs, VMWare, and real hardware.

The third image works on VPC 2007 (and maybe 2004) except
that sometimes it doesn't recognize a keystroke.

The second image, the QEMU image, I haven't posted yet.
After doing a lot of testing, QEMU (or my code) doesn't
like the READ_ID command, which I use quite a bit, nor
does it like the way I wait for an (fdc) interrupt. However,
since my code works just fine on Bochs, VMWare, VPC, and
real hardware, I have to assume it is an error with QEMU,
though I am not one to guarantee my code is correct while
QEMU is wrong. I will do some more work and hopefully post
a QEMU image later today.

By the way, the first image should write a debug.txt file
to the floppy now. The floppy is a FAT12 floppy, so you
should be able to boot the floppy, wait for the debug.txt
file to be written, then reboot to your host OS, and copy
paste the debug.txt file. Either post it here or send
it to my email address. For the sake of not using up
usenet space, maybe you should send it to my email.
Instructions below.

On another note, I spent most of yesterday afternoon
working on the USB code. I rewrote part of it and it is
now much faster and more efficient. With a little more
work, it should support external hubs.

Thanks for your help.

Benjamin David Lunt

unread,
Dec 16, 2007, 1:40:10 PM12/16/07
to

"Benjamin David Lunt" <zf...@frontiernet.net> wrote in message
news:Yed9j.484$Sa1...@news02.roc.ny...

> The second image, the QEMU image, I haven't posted yet.
> After doing a lot of testing, QEMU (or my code) doesn't
> like the READ_ID command, which I use quite a bit, nor
> does it like the way I wait for an (fdc) interrupt. However,
> since my code works just fine on Bochs, VMWare, VPC, and
> real hardware, I have to assume it is an error with QEMU,
> though I am not one to guarantee my code is correct while
> QEMU is wrong. I will do some more work and hopefully post
> a QEMU image later today.

I have found why QEMU doesn't work.

In QEMU: FDC.CC

case 0x08:
/* SENSE_INTERRUPT_STATUS */
FLOPPY_DPRINTF("SENSE_INTERRUPT_STATUS command (%02x)\n",
fdctrl->int_status);
/* No parameters cmd: returns status if no interrupt */
#if 0
fdctrl->fifo[0] =
fdctrl->int_status | (cur_drv->head << 2) | fdctrl->cur_drv;
#else
/* XXX: int_status handling is broken for read/write
commands, so we do this hack. It should be suppressed
ASAP */
fdctrl->fifo[0] =
0x20 | (cur_drv->head << 2) | fdctrl->cur_drv;
#endif
fdctrl->fifo[1] = cur_drv->track;


It is known to the developers that it doesn't work. :-)

After reset, the status0 byte should return 0xC0 for the first drive,
0xC1 for the second, 0xC2 for the third, and 0xC3 for the forth.
However, it returns 0x20 for the first, where my code ignores the
remaining three since the first didn't return correct.

This is why my floppy code doesn't work with QEmu. Has anyone
ever run another Guest on QEmu where the floppy works? Obviously
someone has, but with floppies a scarse item these days, maybe it
has just been ignored.

Anyway, until this is fixed in QEmu, I won't post an image that
works with it.

Thanks for your help. I will watch the QEmu site to see if a fix
is ever made. I tried to post a message to the dev-list, but it
has been down for a few days, at least as long as I have tried it.

Alexei A. Frounze

unread,
Dec 16, 2007, 3:58:05 PM12/16/07
to

I don't remember all the details, but here's what I ended up doing:

ISR()
{
// Read key scan code
sc = inportb (PORT_KBD_A);
b = inportb (PORT_KBD_B);
outportb (PORT_KBD_B, b | 0x80);
outportb (PORT_KBD_B, b & 0x7F);

switch (sc)
{
case 0xE0:
case 0xE1:
// handle extended codes
case 0xFA: // ignore ACK after LED state
update
goto lend;
}

// some more code handling, specifically for Pause and Print Screen

lend:
AcknowledgeIRQ(...);
} // IRET follows

KbdServiceThread()
{
...
for(;;)
{
// receive a message with a request from other thread
ReceiveMessage (&message);

switch (message.RequestType)
{
case REQUEST_SET_LED:
while (inportb (PORT_KBD_STATUS) & 2) Sleep (1);
outportb (PORT_KBD_A, 0xED);

while (inportb (PORT_KBD_STATUS) & 2) Sleep (1);
outportb (PORT_KBD_A, message.Data & 7);
...
break;
...
}

// respond to the received message
SendMessage (message.SourceThread, &message);
}
}

Benjamin David Lunt

unread,
Dec 16, 2007, 9:51:02 PM12/16/07
to

"Benjamin David Lunt" <zf...@frontiernet.net> wrote in message
news:5zS8j.462$7d1...@news01.roc.ny...

>
> "Benjamin David Lunt" <zf...@frontiernet.net> wrote in message
> news:tsS8j.461$7d1...@news01.roc.ny...
>>
>>
>> [I will see if I can send this post to the Qemu team too.]
>>
>
> Well, the dev-list for QEmu seems to be down. Maybe I will
> try later or hopefully, one of the developers is a regular
> reader here.

The list is back up. I have subscribed to it and hope to get
some feedback and maybe we can get this fixed.

Ben


Rod Pemberton

unread,
Dec 17, 2007, 10:39:12 AM12/17/07
to

"Benjamin David Lunt" <zf...@frontiernet.net> wrote in message
news:Yed9j.484$Sa1...@news02.roc.ny...

>
> I have posted two of the three images.
>
> The first image works on Bochs, VMWare, and real hardware.
>
> The third image works on VPC 2007 (and maybe 2004) except
> that sometimes it doesn't recognize a keystroke.
>

12/16 fysos0 locks up detecting my Ethernet PCI card. Fysos used to do
this. But, at some point in time you disabled something, and fysos made it
to the boot prompt. So, you must've reenabled something more than just the
code to save debug.txt. IIRC, 12/15 and 12/02 versions didn't display PCI
detection information.


Rod Pemberton

Wolfgang Kern

unread,
Dec 17, 2007, 3:50:18 PM12/17/07
to

Alexei A. Frounze wrote:

[...KEYBD LEDs..]
[...]


> I don't remember all the details, but here's what I ended up doing:

Yeah, even I use machine code, yours look almost idendical to mine.
I'm not too familiar with C, so I have to ask:
what is the duration of sleep(1) ?
may other code perform during sleep ?
does sleep create error on timeout ?
__
wolfgang

____________

Benjamin David Lunt

unread,
Dec 17, 2007, 7:46:47 PM12/17/07
to

"Rod Pemberton" <do_no...@nohavenot.cmm> wrote in message
news:fk653r$3d6$1...@aioe.org...

Oh Yes. Sorry. I have the PCI stuff enable for the USB. I forgot
to disable the PCI NIC code. Sorry.

Thanks,
Ben


Alexei A. Frounze

unread,
Dec 18, 2007, 2:46:17 AM12/18/07
to
On Dec 17, 12:50 pm, "Wolfgang Kern" <nowh...@never.at> wrote:
> Alexei A. Frounze wrote:
>
> [...KEYBD LEDs..]
> [...]
>
> > I don't remember all the details, but here's what I ended up doing:
>
> Yeah, even I use machine code, yours look almost idendical to mine.
> I'm not too familiar with C, so I have to ask:
> what is the duration of sleep(1) ?

That particular sleep() is mine and it takes a number of system timer
ticks.
1 timer tick = 1/22050th or 1/10th of second (depending on the
configuration) = 45 microseconds or 10 milliseconds. Now that you
asked this question, 45 microseconds is probably not the best duration
here. :)

> may other code perform during sleep ?

Yes, other threads, but I've omitted the other details of
synchronization.

> does sleep create error on timeout ?

No. My sleep() doesn't return early.

Alex

Alexei A. Frounze

unread,
Dec 18, 2007, 2:47:20 AM12/18/07
to
On Dec 17, 11:46 pm, "Alexei A. Frounze" <alexfrun...@gmail.com>
wrote:

> 1 timer tick = 1/22050th or 1/10th of second (depending on the

Typo: 1/100th.

Alex

Rod Pemberton

unread,
Dec 18, 2007, 5:31:20 AM12/18/07
to

"Alexei A. Frounze" <alexf...@gmail.com> wrote in message
news:8d127e58-83e3-4016...@d21g2000prf.googlegroups.com...

> > may other code perform during sleep ?
>
> Yes, other threads, but I've omitted the other details of
> synchronization.
>

Was multitasking why you use sleep()? e.g., as a yield_cpu() or
yield_timeslice()...

I just loop forever...without delay. There shouldn't be that much delay
even for an ancient (guessing late '80's) keyboard like I'm using, right?
The LED response seems to be fine. Darn, I figured this would be a real
quick delay. I assumed there'd be no need for a timeout and I didn't even
consider the possibility there might be a long delay, or problem, etc...
Sigh, need to check timings of all port based while loops in OS. I'd rather
not transfer cpu execution to something else at that spot in my OS -
possibly splitting sequential writes to a port (?)... What if I transfered
control in the middle of the port accesses for LED enable, and an LED
disable came in right in the middle of the LED enable... I'm not sure I'd
want to multitask/thread/whatever there.


Rod Pemberton

Wolfgang Kern

unread,
Dec 18, 2007, 6:05:22 AM12/18/07
to

Alexei A. Frounze wrote:
>> 1 timer tick = 1/22050th or 1/10th of second (depending on the

> Typo: 1/100th.

close to... ;)
PIT divider set to 2E9Bh 11931 dec 100.00670520 Hz
or 2E9Ch 11932 dec 99.99832384 Hz

I'd like to see once an exact nanoSecond timer in all PCs.
__
wolfgang

Wolfgang Kern

unread,
Dec 18, 2007, 5:50:10 AM12/18/07
to

Alexei A. Frounze wrote:

[...KEYBD LEDs..]

>>> I don't remember all the details, but here's what I ended up doing:
>> Yeah, even I use machine code, yours look almost identical to mine.


>> I'm not too familiar with C, so I have to ask:
>> what is the duration of sleep(1) ?
> That particular sleep() is mine and it takes a number of system timer
> ticks.
> 1 timer tick = 1/22050th or 1/10th of second (depending on the
> configuration) = 45 microseconds or 10 milliseconds. Now that you
> asked this question, 45 microseconds is probably not the best duration
> here. :)

Who cares if it works well ? :)

>> may other code perform during sleep ?
> Yes, other threads, but I've omitted the other details of
> synchronization.

Ok.

>> does sleep create error on timeout ?
> No. My sleep() doesn't return early.

I see, my delay is also used as error indication:
_________
mov cl,[main_timer] ;my PIT is always set to 1mS
add cl,5 ;+5 mS
L0:
in al,64h
test al,4
jz/jnz .. ;outahere
cmp cl,[main_timer]
jnz L0
KBD_ERR:
... ;reset keybd and if this fails cry:
"someone pulled my keyboard cable"
instead of M$'s:
"Fatal hardware Error, press ALT-CTRL-DEL to reboot" :)
_________

but please don't ask me how to do this in C :)

btw: do you support USB-KEYBD ?
PS/2 keyboards may be soon unavailable I'm afraid, so I'll
add the 'new' routines with the next release, but haven't
checked if my solutions (just ideas yet) will work.
__
wolfgang

Wolfgang Kern

unread,
Dec 18, 2007, 6:42:08 AM12/18/07
to

Rod Pemberton wrote:

>>> may other code perform during sleep ?
>> Yes, other threads, but I've omitted the other details of
>> synchronization.

> Was multitasking why you use sleep()? e.g., as a yield_cpu() or
> yield_timeslice()...

> I just loop forever...without delay. There shouldn't be that much delay
> even for an ancient (guessing late '80's) keyboard like I'm using, right?
> The LED response seems to be fine. Darn, I figured this would be a real
> quick delay. I assumed there'd be no need for a timeout and I didn't even
> consider the possibility there might be a long delay, or problem, etc...
> Sigh, need to check timings of all port based while loops in OS. I'd
rather
> not transfer cpu execution to something else at that spot in my OS -
> possibly splitting sequential writes to a port (?)... What if I
transfered
> control in the middle of the port accesses for LED enable, and an LED
> disable came in right in the middle of the LED enable... I'm not sure I'd
> want to multitask/thread/whatever there.

My solution on this matter is a one mSec based time-sliced job queu.
And because all hardware threads got a busy flag they wont/can't
intercept itself, except for external termination or any error.
Of course it may happen that the user pressed CAPS while another
thread try to turn LEDs off.
In this rare case the LED flashes almost invisible just once.

A better example is disk RD/WR on overlapping areas where I decided
to give WR the higher priority, so the reading thread will always
receive actualised data. But this is also rare to happen anyway.

I hate to waste time by waiting, so I do something meanwhile. Often
just update the mouse-cursor or send/receive data in the background.

__
wolfgang

Rod Pemberton

unread,
Dec 18, 2007, 6:54:32 AM12/18/07
to

"Benjamin David Lunt" <zf...@frontiernet.net> wrote in message
news:XLE9j.566$Sa1...@news02.roc.ny...

> > 12/16 fysos0 locks up detecting my Ethernet PCI card. Fysos used to do
> > this. But, at some point in time you disabled something, and fysos made
> > it
> > to the boot prompt. So, you must've reenabled something more than just
> > the
> > code to save debug.txt. IIRC, 12/15 and 12/02 versions didn't display
PCI
> > detection information.
>
> Oh Yes. Sorry. I have the PCI stuff enable for the USB. I forgot
> to disable the PCI NIC code. Sorry.
>

12/17 fysos0
makes it to bootprompt - yes
seems to write/read to floppy for long time after detection - yes
debug.txt on floppy - NO
"debug.txt" somewhere in "new" image - not that I can tell...
binary compare of image before and "new" image after boot - identical...

There are a bunch of mini-register dumps that say stuff like "Unhandled INT
1A Service exception" and "Unhandled instruction in v86 mode causing a
GPF"... RBIL indicates the ones I can see are PCI or PnP BIOS calls.

Was/is debug.txt saving enabled? What do I need to send to you? floppy
detection (fdc 000 111 222), what I can catch of v86, PCI or PnP version?


Rod Pemberton

Alexei A. Frounze

unread,
Dec 18, 2007, 7:19:53 AM12/18/07
to
On Dec 18, 2:31 am, "Rod Pemberton" <do_not_h...@nohavenot.cmm> wrote:
> "Alexei A. Frounze" <alexfrun...@gmail.com> wrote in messagenews:8d127e58-83e3-4016...@d21g2000prf.googlegroups.com...

>
> > > may other code perform during sleep ?
>
> > Yes, other threads, but I've omitted the other details of
> > synchronization.
>
> Was multitasking why you use sleep()? e.g., as a yield_cpu() or
> yield_timeslice()...

Exactly.

> I just loop forever...without delay. There shouldn't be that much delay
> even for an ancient (guessing late '80's) keyboard like I'm using, right?
> The LED response seems to be fine. Darn, I figured this would be a real
> quick delay. I assumed there'd be no need for a timeout and I didn't even
> consider the possibility there might be a long delay, or problem, etc...
> Sigh, need to check timings of all port based while loops in OS. I'd rather
> not transfer cpu execution to something else at that spot in my OS -
> possibly splitting sequential writes to a port (?)... What if I transfered
> control in the middle of the port accesses for LED enable, and an LED
> disable came in right in the middle of the LED enable... I'm not sure I'd
> want to multitask/thread/whatever there.

Well, I intended to implement in it poor man's soundblaster :) based
on the PC speaker and pulse-width modulation to solve the problem of
the sound drivers in some way different from not having any sound at
all. :) I don't think looping heavily somewhere would be such a good
idea, especially when there's real-time audio streamed. :) And you
can't lose any timer interrupts either or the sound will be choppy. My
DOS-based implementation worked/sounded OK only when there was no disk
I/O at the time, during which the BIOS was apparently disabling all
the interrupts.

Alex

Alexei A. Frounze

unread,
Dec 18, 2007, 7:23:33 AM12/18/07
to
On Dec 18, 2:50 am, "Wolfgang Kern" <nowh...@never.at> wrote:
> I see, my delay is also used as error indication:
> _________
> mov cl,[main_timer] ;my PIT is always set to 1mS
> add cl,5 ;+5 mS
> L0:
> in al,64h
> test al,4
> jz/jnz .. ;outahere
> cmp cl,[main_timer]
> jnz L0
> KBD_ERR:
> ... ;reset keybd and if this fails cry:
> "someone pulled my keyboard cable"
> instead of M$'s:
> "Fatal hardware Error, press ALT-CTRL-DEL to reboot" :)
> _________
>
> but please don't ask me how to do this in C :)

Don't ask me to do that in Basic :)

> btw: do you support USB-KEYBD ?

I don't even know what that is.

> PS/2 keyboards may be soon unavailable I'm afraid, so I'll
> add the 'new' routines with the next release, but haven't
> checked if my solutions (just ideas yet) will work.

I'm afraid by the time I get around to put together a tiny demo of
almost completed pieces, this will all be completely irrelevant and
nothing to show on. :)

Alex

Alexei A. Frounze

unread,
Dec 18, 2007, 7:31:02 AM12/18/07
to

If one puts all those keyboard-port requests onto one queue, no
problems, they'll all get handled in the order of occurrence on the
queue. If it's a problem of sharing a state of a single device (e.g.
each application wants it's own Caps Lock state just like the keyboard
layout in Windows), then you need to virtualize that, which again
comes back to elimination of direct access to that device from
multiple competing places.

Alex

Esra Sdrawkcab

unread,
Dec 18, 2007, 8:00:23 AM12/18/07
to
Benjamin David Lunt wrote:

> I will have a look at these things. Thank you. It is always nice
> to have a fellow user send in the debug.txt file (or post it like you
> did). I will look into these things and get back to you.
>

OK, trying later version, it gets further

--(screencap, missed a lot)

Type: Video
PORT INFO:
Type: Keyboard
PORT INFO:
Type: Mouse
ON BOARD DEVICE INFO:
Device 01 Type: SCSI Controller (Enabled)
To Be filled by O.E.M.
TODO: SMBIOS code 11: Free form strings
TODO: SMBIOS code 12:
TODO: SMBIOS code 13: BIOS Language Specs
TODO: SMBIOS code 18: Memory Error Info
TODO: SMBIOS code 16: physical memory array
TODO: SMBIOS code 19: Memory Array Mapped Address
TODO: SMBIOS code 17: Memory Device
TODO: SMBIOS code 20: Memory Device Mapped Address
TODO: SMBIOS code 17: Memory Device
TODO: SMBIOS code 20: Memory Device Mapped Address
TODO: SMBIOS code 17: Memory Device
TODO: SMBIOS code 20: Memory Device Mapped Address
TODO: SMBIOS code 17: Memory Device
TODO: SMBIOS code 20: Memory Device Mapped Address
TODO: SMBIOS code 23:
TODO: SMBIOS code 32:
--(end screencap, it din't pick up last line:)

Press a key or two

--(no response)

--(reboot)

Serial Number: 0000000007C0A97B

SysCall/SysRet instructions allowed: no

XD bit of PAE allowed: no

64-bit extentions allowed: no

Number of bits used for virtual addresses: 48

Number of bits used for physical addresses: 36

Found coprocessor type: TODO at 0 Mhz

CMOS: 128 bytes, 2nd CRC: notfound (00)

Found Advanced Configuration and Power Interface (ACPI)

Updating hardware information...

ACPI: DSDT: AML code size 8311

ACPI: OEM BIOS

Found PnP BIOS v1.0

Found PnP ISA card: Unknown vendor type and/or name (tBA03;0)

ID String: Sound Blaster 16

Vendor ID: tBA03;0 serial number: -1

Device 0: id: ZA@ function: 003 rev: 176 Compatible id:
03B0D041
Found PnP ISA card: Unknown vendor type and/or name (tBA2?;0)

ID String: Game Port

Vendor ID: tBA2?;0 serial number: -1

Device 0: id: ZA@ function: 047 rev: 176 Compatible id:
2FB0D041


Found VESA v2.0 compatible video card:

IBM SVGA BIOS, (C) 1993 Internat

Modes found: 32 Modes supported: 31

--(missing cap of last line again!)
Did not find a keyboard or keyboard error

--(stuck - I'd hit pause to try to do more screen capture)
--(another partial capture)

clflush: 00

brand: (00) Brand not supported by CPU

x87 FPU: yes

VME: yes

MSR: yes

APIC on chip: no

ACPI (temp): yes

THERMO: no

MMX: yes

SSE: yes

SSE2: yes

Has Cache and TLB Information structure

Serial Number: 0000000007C0A97B

SysCall/SysRet instructions allowed: no

XD bit of PAE allowed: no

64-bit extentions allowed: no

Number of bits used for virtual addresses: 48

Number of bits used for physical addresses: 36

Found coprocessor type: TODO at 0 Mhz

CMOS: 128 bytes, 2nd CRC: notfound (00)

Found Advanced Configuration and Power Interface (ACPI)

Updating hardware information...

ACPI: DSDT: AML code size 8311

ACPI: OEM BIOS


--()

Found coprocessor type: TODO at 0 Mhz

CMOS: 128 bytes, 2nd CRC: notfound (00)

Found Advanced Configuration and Power Interface (ACPI)

Updating hardware information...

ACPI: DSDT: AML code size 8311

ACPI: OEM BIOS

Found PnP BIOS v1.0

Found PnP ISA card: Unknown vendor type and/or name (tBA03;0)

ID String: Sound Blaster 16

Vendor ID: tBA03;0 serial number: -1

Device 0: id: ZA@ function: 003 rev: 176 Compatible id:
03B0D041
Found PnP ISA card: Unknown vendor type and/or name (tBA2?;0)

ID String: Game Port

Vendor ID: tBA2?;0 serial number: -1

Device 0: id: ZA@ function: 047 rev: 176 Compatible id:
2FB0D041


Found VESA v2.0 compatible video card:

IBM SVGA BIOS, (C) 1993 Internat

Modes found: 32 Modes supported: 31

Keyboard passed 0xAA test

Keyboard passed 0xAB test

Controller version: 0

Controller firmware version: 0

Found PS2 Keyboard with id: AB 41

Found Floppy Disk Controller at 0x03F0 with type 82078SL or 82078-1


--()

Device 0: id: ZA@ function: 003 rev: 176 Compatible id:
03B0D041
Found PnP ISA card: Unknown vendor type and/or name (tBA2?;0)

ID String: Game Port

Vendor ID: tBA2?;0 serial number: -1

Device 0: id: ZA@ function: 047 rev: 176 Compatible id:
2FB0D041


Found VESA v2.0 compatible video card:

IBM SVGA BIOS, (C) 1993 Internat

Modes found: 32 Modes supported: 31

Keyboard passed 0xAA test

Keyboard passed 0xAB test

Controller version: 0

Controller firmware version: 0

Found PS2 Keyboard with id: AB 41

Found Floppy Disk Controller at 0x03F0 with type 82078SL or 82078-1

Found Floppy Disk Controller at 0x0370 with type 82078SL or 82078-1

Did not find a floppy drive.

Found ATA Disk Controller at 0x01F0

Found ATA drive: Virtual HD (Hard Disk) 0x1F0 drv: 0

Found a FAT16 file system

Found ATA Disk Controller at 0x0170

Found ATA drive: Virtual CD (Optical Disk) 0x170 drv: 0

Found logical drive A: active: Y at: 63 Sectors:
4,185,153
Found logical drive B: active: Y at: 0 Sectors:

0
Could not calculate which partition/disk was booted from. Please
choose an in

tial drive to use:
--(lock up)

Wolfgang Kern

unread,
Dec 18, 2007, 8:57:32 AM12/18/07
to

Alexei A. Frounze wrote:

[..about..]


>> I hate to waste time by waiting, so I do something meanwhile. Often
>> just update the mouse-cursor or send/receive data in the background.

> If one puts all those keyboard-port requests onto one queue, no


> problems, they'll all get handled in the order of occurrence on the
> queue. If it's a problem of sharing a state of a single device (e.g.
> each application wants it's own Caps Lock state just like the keyboard
> layout in Windows), then you need to virtualize that, which again
> comes back to elimination of direct access to that device from
> multiple competing places.

This can be covered by the focus change, a user cannot type in one
box and copy paste in another with the mouse at the very same time. :)

An interesting idea to have two open text-files with different
CAPS/NUMLOCK settings. Even it would just confuse the poor user,
an additional option could make sense sometime.
I think it's a good idea to not let the user talk direct to the
hardware. But LED-key respond shouln't be delayed (max.20 ms).

Until now I heard no complains about my chosen method, but whenever
my OS may support games, then I'd have to think over this again.

__
wolfgang

Wolfgang Kern

unread,
Dec 18, 2007, 9:29:22 AM12/18/07
to

Alexei A. Frounze wrote:

...


>> but please don't ask me how to do this in C :)
> Don't ask me to do that in Basic :)
:)

>> btw: do you support USB-KEYBD ?
> I don't even know what that is.

>> PS/2 keyboards may be soon unavailable I'm afraid, so I'll
>> add the 'new' routines with the next release, but haven't
>> checked if my solutions (just ideas yet) will work.

> I'm afraid by the time I get around to put together a tiny demo of
> almost completed pieces, this will all be completely irrelevant and
> nothing to show on. :)

Just fine as long you are satisfied by your own work.
I work since 20 years on my OS and even I could sell a few niche-
applications with it, it still is a lot of work to just be near up
to date. Not to mention that my ToDo-list become longer every day.
I once decided to skip x186 and x386, that helped a bit.
But I can't skip the 64's, even it would be somehow wise.

We Europeans may never learn how to sell half-done products,
quality got its price and takes time ...
Look at Vista, best back-seller of the year ?
Downgrades to XP are already available!
And you asked me some time ago 'why XP and not Vista',
seems I did well by taking the lesser evil, my XP works just fine,
it crashes only twice a month and needs only two hours to reinstall.

__
wolfgang

Benjamin David Lunt

unread,
Dec 18, 2007, 8:56:04 PM12/18/07
to

"Esra Sdrawkcab" <ad...@127.0.0.1> wrote in message
news:HvP9j.17077$1j1...@newsfe7-gui.ntli.net...

> Benjamin David Lunt wrote:
>
>> I will have a look at these things. Thank you. It is always nice
>> to have a fellow user send in the debug.txt file (or post it like you
>> did). I will look into these things and get back to you.
>>
>
> OK, trying later version, it gets further

Thank you.

...


> TODO: SMBIOS code 20: Memory Device Mapped Address
> TODO: SMBIOS code 23:
> TODO: SMBIOS code 32:

...

I am aware of the SMBIOS TODO's. I need to get to them.

> --(no response)
No response to a keypress, huh.

> Found PnP ISA card: Unknown vendor type and/or name (tBA03;0)

I need to look through the PnP ISA specs again. That chars
in the ()'s look like a binary number instead of a character
string.

> Did not find a keyboard or keyboard error

This is all under VPC 2004, correct?

I will look into this some more.

Thanks,
Ben


Benjamin David Lunt

unread,
Dec 18, 2007, 8:56:05 PM12/18/07
to

"Rod Pemberton" <do_no...@nohavenot.cmm> wrote in message
news:fk8cah$hlo$1...@aioe.org...

>
>
> 12/17 fysos0
> makes it to bootprompt - yes
> seems to write/read to floppy for long time after detection - yes

Depending on a setting in the system.sys file, it will read 65 sectors
to detect the filesystem on the disk. It also has to detect what type
of disk, 1.44meg, 1.20meg, 720 meg, etc., but reading specified sectors.
If the sector is not found, then that eliminates certain sizes.

> debug.txt on floppy - NO

This has got me wondering. It did make it to the prompt about

"This is where I recommend you stop. Please remove the
floppy disk, reboot your" ...

Yes? If not, did it make it to

"Press a key or two to continue..."

> "debug.txt" somewhere in "new" image - not that I can tell...
> binary compare of image before and "new" image after boot - identical...

> There are a bunch of mini-register dumps that say stuff like "Unhandled
> INT
> 1A Service exception" and "Unhandled instruction in v86 mode causing a
> GPF"... RBIL indicates the ones I can see are PCI or PnP BIOS calls.

Yep, INT 1Ah is the BIOS PCI services. However, I don't have any code
that should access the BIOS PCI services. I wonder if this is raw
data that just happens to have an INT 1Ah instruction in the data.

> Was/is debug.txt saving enabled? What do I need to send to you? floppy
> detection (fdc 000 111 222), what I can catch of v86, PCI or PnP version?

fdc 000, 111, & 222 weren't displayed this time, where they? If so,
either I didn't upload the latest image as I may have thought, or you
aren't using the latest. I deleted those lines from the code.

Thanks for your help. I will await your answers, and sorry it
takes me about 24 hours to respond. I am back being busy again.

Ben


Rod Pemberton

unread,
Dec 19, 2007, 3:17:27 AM12/19/07
to

"Benjamin David Lunt" <zf...@frontiernet.net> wrote in message
news:VS_9j.613$Sa1...@news02.roc.ny...

>
> "Rod Pemberton" <do_no...@nohavenot.cmm> wrote in message
> news:fk8cah$hlo$1...@aioe.org...
> >
> >
> > 12/17 fysos0
> > makes it to bootprompt - yes
> > seems to write/read to floppy for long time after detection - yes
>
> Depending on a setting in the system.sys file, it will read 65 sectors
> to detect the filesystem on the disk. It also has to detect what type
> of disk, 1.44meg, 1.20meg, 720 meg, etc., but reading specified sectors.
> If the sector is not found, then that eliminates certain sizes.
>
> > debug.txt on floppy - NO
>
> This has got me wondering. It did make it to the prompt about
>
> "This is where I recommend you stop. Please remove the
> floppy disk, reboot your" ...
>
> Yes? If not, did it make it to
>
> "Press a key or two to continue..."
>

I don't recall seeing either one. It ended with a "dos prompt." There is a
status (25th) line saying a message would go there and displaying the time.

> Yep, INT 1Ah is the BIOS PCI services. However, I don't have any code
> that should access the BIOS PCI services. I wonder if this is raw
> data that just happens to have an INT 1Ah instruction in the data.
>

Perhaps secondary related to the first one that failed and scrolled by too
fast to read...

> > Was/is debug.txt saving enabled? What do I need to send to you? floppy
> > detection (fdc 000 111 222), what I can catch of v86, PCI or PnP
version?
>

That's the first time I've seen all of them, but I hadn't booted recent
images on real hardware, just QEMU...

> fdc 000, 111, & 222 weren't displayed this time, where they? If so,
> either I didn't upload the latest image as I may have thought, or you
> aren't using the latest. I deleted those lines from the code.
>
> Thanks for your help. I will await your answers, and sorry it
> takes me about 24 hours to respond. I am back being busy again.
>

I'll dl again and post the debug.txt if it gets written - probably before
morning. I'll reboot later... ;) If not, Merry Christmas et. al., and we
can try again whenever you get a chance, this year or sometime next...


Rod Pemberton

Rod Pemberton

unread,
Dec 19, 2007, 3:18:17 AM12/19/07
to

"Alexei A. Frounze" <alexf...@gmail.com> wrote in message
news:e119b3c4-d206-4d66-aefa-

> Well, I intended to implement in it poor man's soundblaster :) based
> on the PC speaker and pulse-width modulation to solve the problem of
> the sound drivers in some way different from not having any sound at
> all. :) I don't think looping heavily somewhere would be such a good
> idea, especially when there's real-time audio streamed. :) And you
> can't lose any timer interrupts either or the sound will be choppy. My
> DOS-based implementation worked/sounded OK only when there was no disk
> I/O at the time, during which the BIOS was apparently disabling all
> the interrupts.
>

Have you looked at what Jim Leonard, a.k.a. Trixter, did for 8088
corruption? IIRC, from some posts to comp.lang.asm.x86 he had to solve a
number of issues involving "interleaving" disk access, video, sound, and
interrupts.

http://www.oldskool.org/pc/8088_Corruption


Rod Pemberton

Rod Pemberton

unread,
Dec 19, 2007, 3:21:00 AM12/19/07
to

"Alexei A. Frounze" <alexf...@gmail.com> wrote in message
news:058614e8-8e78-4d6b-a19c-

> I'm afraid by the time I get around to put together a tiny demo of
> almost completed pieces, this will all be completely irrelevant and
> nothing to show on. :)
>

Had the same thoughts and feelings a few years ago about my OS. I've
decided to plod on anyway. Some technologies become standardized and
accepted for long time periods: floppy, PS/2 and probably USB. You can code
for the "best of the best" or most used or most preferred PC hardware and
ignore the rest at first... No reason to code for Hercules, XGA, raster
video, 286, 386, serial mice, parallel ports, possibly things like short
lived video interfaces: AGP, expensive or custom hardware: SCSI, 3D video,
etc. etc. Once enough stuff works you can go commercial or open source to
fill in the rest...

In fact, I've made a short timeline of PC hardware and PC standards for OS
developers. It's not complete, and maybe some errors, but I haven't seen
anything else like it. I'm thinking about posting it somewhere... Perhaps
on the FAQ site... Perhaps on OSDEV... Guys? Thoughts?


Rod Pemberton

Alexei A. Frounze

unread,
Dec 19, 2007, 6:07:27 AM12/19/07
to
On Dec 19, 12:18 am, "Rod Pemberton" <do_not_h...@nohavenot.cmm>
wrote:

> Have you looked at what Jim Leonard, a.k.a. Trixter, did for 8088
> corruption? IIRC, from some posts to comp.lang.asm.x86 he had to solve a
> number of issues involving "interleaving" disk access, video, sound, and
> interrupts.
>
> http://www.oldskool.org/pc/8088_Corruption

That was awesome!

Alex

Alexei A. Frounze

unread,
Dec 19, 2007, 6:10:09 AM12/19/07
to
On Dec 19, 12:21 am, "Rod Pemberton" <do_not_h...@nohavenot.cmm>
wrote:
> "Alexei A. Frounze" <alexfrun...@gmail.com> wrote in message

> news:058614e8-8e78-4d6b-a19c-
>
> > I'm afraid by the time I get around to put together a tiny demo of
> > almost completed pieces, this will all be completely irrelevant and
> > nothing to show on. :)
>
> Had the same thoughts and feelings a few years ago about my OS. I've
> decided to plod on anyway. Some technologies become standardized and
> accepted for long time periods: floppy, PS/2 and probably USB. You can code
> for the "best of the best" or most used or most preferred PC hardware and
> ignore the rest at first... No reason to code for Hercules, XGA, raster
> video, 286, 386, serial mice, parallel ports, possibly things like short
> lived video interfaces: AGP, expensive or custom hardware: SCSI, 3D video,
> etc. etc.

Sure.

> Once enough stuff works you can go commercial or open source to
> fill in the rest...
>
> In fact, I've made a short timeline of PC hardware and PC standards for OS
> developers. It's not complete, and maybe some errors, but I haven't seen
> anything else like it. I'm thinking about posting it somewhere... Perhaps
> on the FAQ site... Perhaps on OSDEV... Guys? Thoughts?
>
> Rod Pemberton

Give it a shot.

Alex

Rod Pemberton

unread,
Dec 19, 2007, 6:29:41 AM12/19/07
to

"Rod Pemberton" <do_no...@nohavenot.cmm> wrote in message
news:fkajvf$t47$1...@aioe.org...

>
> I'll dl again and post the debug.txt

It worked this time. The debug file is 10k. I post and confirm the whole
thing goes through... Of course, due to the hang, it's no longer testing my
network card.

If I get around to it, I might assemble my new machine post Xmas. So, I
might be able to send you a new report in a month or so...


Rod Pemberton


*Konan* aka FYS-OS
Forever Young Software
Build: Dec 17 2007

A20 line enabled via technique 1 (Keyboard controller command D0/D1.)
Memory size in megs: 120
Found processor type: TODO at 477Mhz
Processor: AuthenticAMD
Processor Name/Brand: AMD-K6(tm) 3D processor
type: (0) Original OEM Processor
family: 05 00
model: 08 00
stepping: 0C
APIC ID: 00
log_procs: 00


clflush: 00
brand: (00) Brand not supported by CPU
x87 FPU: yes
VME: yes
MSR: yes
APIC on chip: no

ACPI (temp): no
THERMO: no
MMX: yes
SSE: no
SSE2: no
SysCall/SysRet instructions allowed: yes


XD bit of PAE allowed: no
64-bit extentions allowed: no

Found coprocessor type: TODO at 0 Mhz
CMOS: 128 bytes, 2nd CRC: notfound (00)

Found APM BIOS v1.2
Found PnP BIOS v1.0
Did not find any PnP ISA cards.


Found VESA v2.0 compatible video card:

Copyright 1998 TRIDENT MICROSYST

Checking found mode: 0x011A:
**** Unhandled INT 1Ah Service number ****
ax = B102h, bx = 7BB4h, cx = 8400h, dx = 1023h, si = 0000h, di = 0048h
Unhandled instruction in v86 that caused a GPF (7A66:****h): 00 00 00 00 00
00
is_operand32 = 0 is_addrses32 = 0 Not supported.
Checking found mode: 0x0119:
**** Unhandled INT 1Ah Service number ****
ax = B102h, bx = 7AB4h, cx = 8400h, dx = 1023h, si = 0000h, di = 0048h
Unhandled instruction in v86 that caused a GPF (7A76:****h): 00 00 00 00 00
00
is_operand32 = 0 is_addrses32 = 0 Not supported.
Checking found mode: 0x0118:
**** Unhandled INT 1Ah Service number ****
ax = B102h, bx = 6EBCh, cx = 8400h, dx = 1023h, si = 0000h, di = 0048h
Unhandled instruction in v86 that caused a GPF (7A86:****h): 00 00 00 00 00
00
is_operand32 = 0 is_addrses32 = 0 Not supported.
Checking found mode: 0x0107:
**** Unhandled INT 1Ah Service number ****
ax = B102h, bx = 6434h, cx = 8400h, dx = 1023h, si = 0000h, di = 0048h
Unhandled instruction in v86 that caused a GPF (7A96:****h): 00 00 00 00 00
00
is_operand32 = 0 is_addrses32 = 0 Not supported.
Checking found mode: 0x0112:
**** Unhandled INT 1Ah Service number ****
ax = B102h, bx = 6CBCh, cx = 8400h, dx = 1023h, si = 0000h, di = 0048h
Unhandled instruction in v86 that caused a GPF (7AA6:****h): 00 00 00 00 00
00
is_operand32 = 0 is_addrses32 = 0 Not supported.
Checking found mode: 0x0115:
**** Unhandled INT 1Ah Service number ****
ax = B102h, bx = 6DBCh, cx = 8400h, dx = 1023h, si = 0000h, di = 0048h
Unhandled instruction in v86 that caused a GPF (7AB6:****h): 00 00 00 00 00
00
is_operand32 = 0 is_addrses32 = 0 Not supported.
Checking found mode: 0x0116:
**** Unhandled INT 1Ah Service number ****
ax = B102h, bx = 78B4h, cx = 8400h, dx = 1023h, si = 0000h, di = 0048h
Unhandled instruction in v86 that caused a GPF (7AC6:****h): 00 00 00 00 00
00
is_operand32 = 0 is_addrses32 = 0 Not supported.
Checking found mode: 0x0117:
**** Unhandled INT 1Ah Service number ****
ax = B102h, bx = 79B4h, cx = 8400h, dx = 1023h, si = 0000h, di = 0048h
Unhandled instruction in v86 that caused a GPF (7AD6:****h): 00 00 00 00 00
00
is_operand32 = 0 is_addrses32 = 0 Not supported.
Checking found mode: 0x0113:
**** Unhandled INT 1Ah Service number ****
ax = B102h, bx = 76B4h, cx = 8400h, dx = 1023h, si = 0000h, di = 0048h
Unhandled instruction in v86 that caused a GPF (7AE6:****h): 00 00 00 00 00
00
is_operand32 = 0 is_addrses32 = 0 Not supported.
Checking found mode: 0x0114:
**** Unhandled INT 1Ah Service number ****
ax = B102h, bx = 77B4h, cx = 8400h, dx = 1023h, si = 0000h, di = 0048h
Unhandled instruction in v86 that caused a GPF (7AF6:****h): 00 00 00 00 00
00
is_operand32 = 0 is_addrses32 = 0 Not supported.
Checking found mode: 0x0110:
**** Unhandled INT 1Ah Service number ****
ax = B102h, bx = 74B4h, cx = 8400h, dx = 1023h, si = 0000h, di = 0048h
Unhandled instruction in v86 that caused a GPF (7B06:****h): 00 00 00 00 00
00
is_operand32 = 0 is_addrses32 = 0 Not supported.
Checking found mode: 0x0111:
**** Unhandled INT 1Ah Service number ****
ax = B102h, bx = 75B4h, cx = 8400h, dx = 1023h, si = 0000h, di = 0048h
Unhandled instruction in v86 that caused a GPF (7B16:****h): 00 00 00 00 00
00
is_operand32 = 0 is_addrses32 = 0 Not supported.
Checking found mode: 0x0105:
**** Unhandled INT 1Ah Service number ****
ax = B102h, bx = 6234h, cx = 8400h, dx = 1023h, si = 0000h, di = 0048h
Unhandled instruction in v86 that caused a GPF (7B26:****h): 00 00 00 00 00
00
is_operand32 = 0 is_addrses32 = 0 Not supported.
Checking found mode: 0x0106:
**** Unhandled INT 1Ah Service number ****
ax = B102h, bx = 6330h, cx = 8400h, dx = 1023h, si = 0000h, di = 0048h
Unhandled instruction in v86 that caused a GPF (7B36:****h): 00 00 00 00 00
00
is_operand32 = 0 is_addrses32 = 0 Not supported.
Checking found mode: 0x0100:
**** Unhandled INT 1Ah Service number ****
ax = B102h, bx = 5C34h, cx = 8400h, dx = 1023h, si = 0000h, di = 0048h
Unhandled instruction in v86 that caused a GPF (7B46:****h): 00 00 00 00 00
00
is_operand32 = 0 is_addrses32 = 0 Not supported.
Checking found mode: 0x0103:
**** Unhandled INT 1Ah Service number ****
ax = B102h, bx = 5E34h, cx = 8400h, dx = 1023h, si = 0000h, di = 0048h
Unhandled instruction in v86 that caused a GPF (7B56:****h): 00 00 00 00 00
00
is_operand32 = 0 is_addrses32 = 0 Not supported.
Checking found mode: 0x0104:
**** Unhandled INT 1Ah Service number ****
ax = B102h, bx = 5F30h, cx = 8400h, dx = 1023h, si = 0000h, di = 0048h
Unhandled instruction in v86 that caused a GPF (7B66:****h): 00 00 00 00 00
00
is_operand32 = 0 is_addrses32 = 0 Not supported.
Checking found mode: 0x0102:
**** Unhandled INT 1Ah Service number ****
ax = B102h, bx = 6A30h, cx = 8400h, dx = 1023h, si = 0000h, di = 0048h
Unhandled instruction in v86 that caused a GPF (7B76:****h): 00 00 00 00 00
00
is_operand32 = 0 is_addrses32 = 0 Not supported.
Checking found mode: 0x006A: Supported.
Checking found mode: 0x0109:
**** Unhandled INT 1Ah Service number ****
ax = B102h, bx = 5311h, cx = 8400h, dx = 1023h, si = 0000h, di = 0048h
Unhandled instruction in v86 that caused a GPF (7B96:****h): 00 00 00 00 00
00
is_operand32 = 0 is_addrses32 = 0 Not supported.
Checking found mode: 0x010A:
**** Unhandled INT 1Ah Service number ****
ax = B102h, bx = 5501h, cx = 8400h, dx = 1023h, si = 0000h, di = 0048h
Unhandled instruction in v86 that caused a GPF (7BA6:****h): 00 00 00 00 00
00
is_operand32 = 0 is_addrses32 = 0 Not supported.
Checking found mode: 0x010C:
**** Unhandled INT 1Ah Service number ****
ax = B102h, bx = 5601h, cx = 8400h, dx = 1023h, si = 0000h, di = 0048h
Unhandled instruction in v86 that caused a GPF (7BB6:****h): 00 00 00 00 00
00
is_operand32 = 0 is_addrses32 = 0 Not supported.
Checking found mode: 0x0101:
**** Unhandled INT 1Ah Service number ****
ax = B102h, bx = 5D34h, cx = 8400h, dx = 1023h, si = 0000h, di = 0048h
Unhandled instruction in v86 that caused a GPF (7BC6:****h): 00 00 00 00 00
00
is_operand32 = 0 is_addrses32 = 0 Not supported.
Modes found: 23 Modes supported: 1


Keyboard passed 0xAA test
Keyboard passed 0xAB test

Controller version: 69
Controller firmware version: 70


Found PS2 Keyboard with id: AB 41

Found PS2 Wheel Mouse (0x00 0x02 0x64) (0x03)
Found Floppy Disk Controller at 0x03F0 with type 82077
Found 1.44M Floppy drive (3F0) (0)
Found a FAT12 file system
Found ATA Disk Controller at 0x01F0
Found ATA drive: Maxtor 91366U4 (Hard Disk) 0x1F0 drv: 0
Found a FAT32 file system
Extended partition found.
Found a FAT32 file system
Found ATA drive: 16X10 (Optical Disk) 0x1F0 drv: 1
Found logical drive A: active: Y at: 0 Sectors: 2,880
Found logical drive B: active: N at: 0 Sectors: 2,880
Found logical drive C: active: Y at: 63 Sectors: 24,611,517
Found logical drive D: active: Y at: 24,611,643 Sectors: 2,072,322
Found logical drive E: active: Y at: 0 Sectors: 0
Found booted from drive... 0
Found game at port 200, irq: 10
Found SMBIOS Table Entry Structure version 2.2
BIOS INFO:
Vendor: Award Software International, Inc. Version: 4.51 PG
Address: 0x000E0000 Release Date: 05/24/00
SYS INFO:
Manufacturer: VIA Technologies, Inc. Name: VT8501
Version: Serial Number:
Universal Unique ID: 00000000000000000000000000000000
Wake-up Type: Reserved
BASE INFO:
Manufacturer: Name: MBKMVP4
Version: Serial Number:
CASE INFO:
Manufacturer: Type: Unknown
Version: Serial Number:
Bootup state: (2) Safe
Power Supply state: (2) Safe
Thermo state: (2) Safe
Security state: (2) None
PROCESSOR INFO:
Type: Central Family: K5
Manufacture: AMD Speed: 500Mhz
L1 Cache: 0x0000
L2 Cache: 0x0000
L3 Cache: 0x0000
TODO: SMBIOS code 5: 2.0
TODO: SMBIOS code 5: 2.1
TODO: SMBIOS code 6
TODO: SMBIOS code 6
TODO: SMBIOS code 6
TODO: SMBIOS code 6
TODO: SMBIOS code 6
TODO: SMBIOS code 6
CACHE INFO:
Cache1:
Configuration word: 0x0180
Max size word: 0x0040
Installed size word: 0x0040
Supported SRAM Type: 0x0020
Current SRAM Type: 0x0020
Speed: 0x00
Error Correction: 0x02
Sys Type: 0x02
assosiativity: 0x02
CACHE INFO:
Cache1:
Configuration word: 0x01A1
Max size word: 0x0800
Installed size word: 0x0200
Supported SRAM Type: 0x0020
Current SRAM Type: 0x0020
Speed: 0x00
Error Correction: 0x02
Sys Type: 0x02
assosiativity: 0x02
PORT INFO:
Type: Other
PORT INFO:
Type: Other
PORT INFO:
Type: 8251 FIFO Compatible
PORT INFO:
Type: Serial - 16450 Compatible
PORT INFO:
Type: Serial - 16450 Compatible
PORT INFO:
Type: Parallel - ECP/EPP


PORT INFO:
Type: Keyboard
PORT INFO:
Type: Mouse

SYS SLOT INFO:
Type: MCA
TODO: SMBIOS code 9: 2.1
SYS SLOT INFO:
Type: MCA
TODO: SMBIOS code 9: 2.1
SYS SLOT INFO:
Type: MCA
TODO: SMBIOS code 9: 2.1
SYS SLOT INFO:
Type: MCA
TODO: SMBIOS code 9: 2.1
SYS SLOT INFO:
Type: PC Card (PCMCIA)
TODO: SMBIOS code 9: 2.1
SYS SLOT INFO:
Type: PC Card (PCMCIA)
TODO: SMBIOS code 9: 2.1
SYS SLOT INFO:
Type: PC Card (PCMCIA)
TODO: SMBIOS code 9: 2.1
SYS SLOT INFO:
Type: PC Card (PCMCIA)
TODO: SMBIOS code 9: 2.1
SYS SLOT INFO:
Type: AGP 2X
TODO: SMBIOS code 9: 2.1
PORT INFO:
Type: USB


TODO: SMBIOS code 13: BIOS Language Specs

Press a key or two to continue...

Writing Debug.txt file...


Rod Pemberton

unread,
Dec 19, 2007, 7:03:30 AM12/19/07
to

"Alexei A. Frounze" <alexf...@gmail.com> wrote in message
news:84817800-3833-4421...@d21g2000prf.googlegroups.com...

That page had the original and current version of 8088 corruption plus some
other videos. However, if you want to check out some of his other stuff.
These are the links I've got.

His personal software website is here:
http://www.oldskool.org/

His blog is here (personal, games, programming). Wordpress checks for valid
email address:
http://trixter.wordpress.com/

His Mobygames game database website:
http://www.mobygames.com/home

Wikipedia page on Mobygames:
http://en.wikipedia.org/wiki/MobyGames

You can search for Jim Leonard to find NG's he's currently posting to like,
comp.compression, or old posts related to 8088 corruption here:
http://groups.google.com/advanced_search?hl=en

Youtube versions of 8088 corruption video:
PSP http://www.youtube.com/watch?v=kPPaE3OoLgs
PC (less blocky...) http://www.youtube.com/watch?v=BrwGxwLuo5I


Rod Pemberton

Benjamin David Lunt

unread,
Dec 19, 2007, 9:11:37 AM12/19/07
to

"Rod Pemberton" <do_no...@nohavenot.cmm> wrote in message
news:fkav7t$t1d$1...@aioe.org...


Thanks Rod,

> Checking found mode: 0x011A:
> **** Unhandled INT 1Ah Service number ****
> ax = B102h, bx = 7BB4h, cx = 8400h, dx = 1023h, si = 0000h, di = 0048h
> Unhandled instruction in v86 that caused a GPF (7A66:****h): 00 00 00 00
> 00
> 00
> is_operand32 = 0 is_addrses32 = 0 Not supported.

Int 1Ah is used for other things too. I will look at this
service call and see why I don't have supported code for it.

Thanks again.
Ben


Alexei A. Frounze

unread,
Dec 19, 2007, 1:22:17 PM12/19/07
to

Btw, he used a soundblaster, which is somewhat easier than using a PC
speaker because you can't feed the speaker with a block of arbitrary
samples and no CPU intervention, while you can do that with the
blaster.

Alex

Benjamin David Lunt

unread,
Dec 19, 2007, 8:27:09 PM12/19/07
to

"Rod Pemberton" <do_no...@nohavenot.cmm> wrote in message
news:fkav7t$t1d$1...@aioe.org...

>
>
> Checking found mode: 0x011A:
> **** Unhandled INT 1Ah Service number ****
> ax = B102h, bx = 7BB4h, cx = 8400h, dx = 1023h, si = 0000h, di = 0048h
> Unhandled instruction in v86 that caused a GPF (7A66:****h): 00 00 00 00
> 00
> 00
> is_operand32 = 0 is_addrses32 = 0 Not supported.

Hi Rod,

What was this image ran on? Hardware or an emulator?

The B102h service call is the "PCI find device" service. It seems
that your hardware/emulator bios doesn't check to see if the
BIOS PCI services are installed. But, why should it. If it is the
BIOS that is calling these services, it ought to know if it is
PCI capable or not :-)

Anyway, the new image should not bark at that instruction anymore.

I don't let the BIOS find a PCI device. I return the carry set
and AH != 0. Let's hope that the BIOS doesn't assume that the
call will be valid and skips the carry check...

Please try the new image and see if you get the same or not.

Thanks,
Ben


Rod Pemberton

unread,
Dec 20, 2007, 12:43:26 AM12/20/07
to

"Alexei A. Frounze" <alexf...@gmail.com> wrote in message
news:620ecd19-b222-4ed7...@b1g2000pra.googlegroups.com...

I've not looked into the PC speaker except to turn the _annoying_ thing
off... Is the speaker just DC on/off like old Apple II's? Or, is there a
chip to play music? If it's just DC on/off, then it's a ancient low sample
rate "1-bit DA converter"... "mechanical," almost audio, static... Can you
boost the interrupt rate to the maximum, reorder interrupt priority
reprogramming PIC's, etc. to smooth the audio?


Rod Pemberton

Rod Pemberton

unread,
Dec 20, 2007, 12:45:24 AM12/20/07
to

"Benjamin David Lunt" <zf...@frontiernet.net> wrote in message
news:Nxjaj.701$7d1...@news01.roc.ny...

> "Rod Pemberton" <do_no...@nohavenot.cmm> wrote in message
> news:fkav7t$t1d$1...@aioe.org...
> >
> > Checking found mode: 0x011A:
> > **** Unhandled INT 1Ah Service number ****
> > ax = B102h, bx = 7BB4h, cx = 8400h, dx = 1023h, si = 0000h, di = 0048h
> > Unhandled instruction in v86 that caused a GPF (7A66:****h): 00 00 00 00
> > 00
> > 00
> > is_operand32 = 0 is_addrses32 = 0 Not supported.
>
> Hi Rod,
>
> What was this image ran on?

The image was fysos0 dated 12/17 (but different from first 12/17 downloaded
which didn't do the SMBIOS stuff or write debug.txt).

> Hardware or an emulator?

That was real hardware, normal PC boot, via three finger salute from MS-DOS
(soft reset) on my main machine, old K6-2 500Mhz, highly integrated
off-brand MB, AMI BIOS updated to last version available circa 2000... It
has _everything_ except memory and drives on the MB. It even has serial
ports, but no actual physical port... I have 1/3 of hardware, and probably
ACPI, disabled in BIOS (serial ports, USB keyboard, modem, etc etc...), and
as you know detection of the Ethernet chokes... I might be disabling
something that affects things, as with the unknown bios ram shadow (virus
protection) Gonta and I found when testing aeBIOS. Maybe I'll try an "all
HW enabled" and "no video, BIOS, cache shadowed" test...

> Please try the new image and see if you get the same or not.
>

Will do.


Rod Pemberton

Alexei A. Frounze

unread,
Dec 20, 2007, 1:20:15 AM12/20/07
to
On Dec 19, 9:43 pm, "Rod Pemberton" <do_not_h...@nohavenot.cmm> wrote:
> "Alexei A. Frounze" <alexfrun...@gmail.com> wrote in messagenews:620ecd19-b222-4ed7...@b1g2000pra.googlegroups.com...

>
> > On Dec 19, 3:07 am, "Alexei A. Frounze" <alexfrun...@gmail.com> wrote:
> > > >http://www.oldskool.org/pc/8088_Corruption
>
> > > That was awesome!
>
> > Btw, he used a soundblaster, which is somewhat easier than using a PC
> > speaker because you can't feed the speaker with a block of arbitrary
> > samples and no CPU intervention, while you can do that with the
> > blaster.
>
> I've not looked into the PC speaker except to turn the _annoying_ thing
> off...

And that's because the skill of programming it was lost. :)

> Is the speaker just DC on/off like old Apple II's?

Yes, pretty much.

> Or, is there a
> chip to play music?

Only the timer.

> If it's just DC on/off, then it's a ancient low sample
> rate "1-bit DA converter"... "mechanical," almost audio, static... Can you
> boost the interrupt rate to the maximum, reorder interrupt priority
> reprogramming PIC's, etc. to smooth the audio?

I haven't investigated the problem fully, but if the BIOS disables and
enables interrupts (with CLI and STI) as it wishes, w/o v86 there's no
easy way of not missing and not delaying frequent timer interrupts by
too much. I only tried to enable the timer interrupts upon entry to
int 13h but that alone didn't help. It can be much worse if SMI is
involved in I/O.

Alex

Rod Pemberton

unread,
Dec 20, 2007, 2:29:34 AM12/20/07
to

"Alexei A. Frounze" <alexf...@gmail.com> wrote in message
news:1ebcb4da-74a9-48a6...@d4g2000prg.googlegroups.com...

> On Dec 19, 9:43 pm, "Rod Pemberton" <do_not_h...@nohavenot.cmm> wrote:
> > Is the [PC] speaker just DC on/off like old Apple II's?
>
> Yes, pretty much.

Okay.

> > I've not looked into the PC speaker except to turn the _annoying_ thing
> > off...
>
> And that's because the skill of programming it was lost. :)
>

Well, I once experienced an "orchestra" of Apple II's. Each machine was a
different "instrument." Someone setup all Apple II's in the computer lab to
all farm animals...

>
> > Or, is there a
> > chip to play music?
>
> Only the timer.
>
> > If it's just DC on/off, then it's a ancient low sample
> > rate "1-bit DA converter"... "mechanical," almost audio, static... Can
you
> > boost the interrupt rate to the maximum, reorder interrupt priority
> > reprogramming PIC's, etc. to smooth the audio?
>
> I haven't investigated the problem fully, but if the BIOS disables and
> enables interrupts (with CLI and STI) as it wishes,

I know what the BIOS does, but not how it does it... I'm assuming many
similarities and differences to my OS. If it's using CLI/STI too much, I'd
think even Trixter would've had a problem. The only way around would be NMI
via a watchdog timer card... Did the Soundblaster use NMI? IIRC, Trixter
had some issue with interrupts occuring so quickly the disk reading code
couldn't complete prior to it being called again.

Programming the SoundBlaster AWE-32
http://www.gamedev.net/reference/articles/article445.asp

"One of the most common causes of a system not having a working NMI is
that the system's memory parity checking has been turned off. You can
check your system's memory parity checking status by activating your
system's BIOS setup. Consult your system's user manual on how to
activate BIOS/CMOS setup and memory parity checking."

Something else to test my OS with... Probably the reason it wasn't seeing
any NMI's... Bios setting parity _off_ and I haven't messed with the sound
chips. "FIX ME" limit in OS has been exceeded! :-)

> w/o v86 there's no
> easy way of not missing and not delaying frequent timer interrupts by
> too much. I only tried to enable the timer interrupts upon entry to
> int 13h but that alone didn't help.

"...enable timer interrupts" for int 13h? Did you mean disable? I can't see
timer interrupts for audio only occuring during disk access as useful...
Or, did you mean "enable interrupts" via STI for int 13h? You trying
confused me...? That's not easy to do... :-)

If one interrupt is being called so much it's interfering with the audio,
you could chain that interrupt so it also does small amounts of audio
work...

I'd think you'd want timer interrupts, which are pushing data to the PC
speaker, to occur frequently and as close to real-time as possible to
prevent sound distortion. For sinusoids not DC, you'd at least upto
slighlty over twice your highest frequency - i.e., 22kHz + a few extra Hz
for 11kHz audio. Now, since the PC speaker is essentially a 1-bit DAC (I
think it is, but I'm taking your word for it until the sometime in the
future...), you'd actually need a much higher output frequency than 22kHz to
generate 11kHz audio. The audio is being composed from summing sinusoids
(Fourier theorem), but you don't have any sinusoids, only DC high and DC
low. So, you have to toggle them on and off quickly in sequences which when
averaged produce the needed sinusoids, thereby requiring a higher frequency.
It's not quite Pulse Width Modulation. I don't know what it's called for
sure, but figure 2 is very close to be what I recall them doing. I think
they used a simpler method than a triangular wave for on/off decisions
though.
http://en.wikipedia.org/wiki/Pulse_width_modulation

Wikipedia has a small article, non-technical, which links to "Delta-Sigma"
modulation, technical, which I don't recall ever learning. I don't think
it's the method used on the Apple II's, or C64's. It also seems different
from how I learned how 1-bit DA's work... The C64's had a sound chip, but
to do simple human artificial voice one program used a pulsed method of some
sort.
http://en.wikipedia.org/wiki/1-bit_DAC

Anyway, I'd probably search for articles on real time timers for the PC, old
DOS PC timer programs, and more on simple 1-bit DAC's, i.e, use algorithms
other than "Delta-Sigma."

> It can be much worse if SMI is
> involved in I/O.
>

Do you have a machine that you've confirmed uses SMI in BIOS? How does one
tell? Everyone talks about it, but I haven't seen much on how to detect
it... without disassembling the BIOS or using a logic analyzer, of course.


Rod Pemberton


Rod Pemberton

unread,
Dec 20, 2007, 3:06:43 AM12/20/07
to

"Rod Pemberton" <do_no...@nohavenot.cmm> wrote in message
news:fkcveb$rk2$1...@aioe.org...

> > Please try the new image and see if you get the same or not.
>
> Will do.

fysos0 12/19 real hardware. This is with all hardware enabled and all ram
cached/mirrored code disabled: BIOS, video BIOS, cards, etc. (Not sure if
that's what you want...) I ported DMIDECODE to DJGPP/OpenWatcom (and Robert
Riebisch did a version also...) which displays SMBIOS and DMI information.
Would you like the output from that program to compare?
http://www.nongnu.org/dmidecode/

Anyway, you'll now see the ACPI, serial and parallel ports. I don't see the
modem, or ethernet (code check disabled due to hang), USB, or sound.

Rod Pemberton


*Konan* aka FYS-OS
Forever Young Software

Build: Dec 19 2007

Found Advanced Configuration and Power Interface (ACPI)
Updating hardware information...

ACPI: DSDT: AML code size 8566


Found PnP BIOS v1.0
Did not find any PnP ISA cards.
Found VESA v2.0 compatible video card:
Copyright 1998 TRIDENT MICROSYST

Checking found mode: 0x011A:
Unhandled instruction in v86 that caused a GPF (7A66:0000h): 00 00 00 00 00


00
is_operand32 = 0 is_addrses32 = 0 Not supported.

Checking found mode: 0x0119:
Unhandled instruction in v86 that caused a GPF (7A76:0000h): 00 00 00 00 00


00
is_operand32 = 0 is_addrses32 = 0 Not supported.

Checking found mode: 0x0118:
Unhandled instruction in v86 that caused a GPF (7A86:0000h): 00 00 00 00 00


00
is_operand32 = 0 is_addrses32 = 0 Not supported.

Checking found mode: 0x0107:
Unhandled instruction in v86 that caused a GPF (7A96:0000h): 00 00 00 00 00


00
is_operand32 = 0 is_addrses32 = 0 Not supported.

Checking found mode: 0x0112:
Unhandled instruction in v86 that caused a GPF (7AA6:0000h): 00 00 00 00 00


00
is_operand32 = 0 is_addrses32 = 0 Not supported.

Checking found mode: 0x0115:
Unhandled instruction in v86 that caused a GPF (7AB6:0000h): 00 00 00 00 00


00
is_operand32 = 0 is_addrses32 = 0 Not supported.

Checking found mode: 0x0116:
Unhandled instruction in v86 that caused a GPF (7AC6:0000h): 00 00 00 00 00


00
is_operand32 = 0 is_addrses32 = 0 Not supported.

Checking found mode: 0x0117:
Unhandled instruction in v86 that caused a GPF (7AD6:0000h): 00 00 00 00 00


00
is_operand32 = 0 is_addrses32 = 0 Not supported.

Checking found mode: 0x0113:
Unhandled instruction in v86 that caused a GPF (7AE6:0000h): 00 00 00 00 00


00
is_operand32 = 0 is_addrses32 = 0 Not supported.

Checking found mode: 0x0114:
Unhandled instruction in v86 that caused a GPF (7AF6:0000h): 00 00 00 00 00


00
is_operand32 = 0 is_addrses32 = 0 Not supported.

Checking found mode: 0x0110:
Unhandled instruction in v86 that caused a GPF (7B06:0000h): 00 00 00 00 00


00
is_operand32 = 0 is_addrses32 = 0 Not supported.

Checking found mode: 0x0111:
Unhandled instruction in v86 that caused a GPF (7B16:0000h): 00 00 00 00 00


00
is_operand32 = 0 is_addrses32 = 0 Not supported.

Checking found mode: 0x0105:
Unhandled instruction in v86 that caused a GPF (7B26:0000h): 00 00 00 00 00


00
is_operand32 = 0 is_addrses32 = 0 Not supported.

Checking found mode: 0x0106:
Unhandled instruction in v86 that caused a GPF (7B36:0000h): 00 00 00 00 00


00
is_operand32 = 0 is_addrses32 = 0 Not supported.

Checking found mode: 0x0100:
Unhandled instruction in v86 that caused a GPF (7B46:0000h): 00 00 00 00 00


00
is_operand32 = 0 is_addrses32 = 0 Not supported.

Checking found mode: 0x0103:
Unhandled instruction in v86 that caused a GPF (7B56:0000h): 00 00 00 00 00


00
is_operand32 = 0 is_addrses32 = 0 Not supported.

Checking found mode: 0x0104:
Unhandled instruction in v86 that caused a GPF (7B66:0000h): 00 00 00 00 00


00
is_operand32 = 0 is_addrses32 = 0 Not supported.

Checking found mode: 0x0102:
Unhandled instruction in v86 that caused a GPF (7B76:0000h): 00 00 00 00 00


00
is_operand32 = 0 is_addrses32 = 0 Not supported.

Checking found mode: 0x006A: Supported.
Checking found mode: 0x0109:

Unhandled instruction in v86 that caused a GPF (7B96:0000h): 00 00 00 00 00


00
is_operand32 = 0 is_addrses32 = 0 Not supported.

Checking found mode: 0x010A:
Unhandled instruction in v86 that caused a GPF (7BA6:0000h): 00 00 00 00 00


00
is_operand32 = 0 is_addrses32 = 0 Not supported.

Checking found mode: 0x010C:
Unhandled instruction in v86 that caused a GPF (7BB6:0000h): 00 00 00 00 00


00
is_operand32 = 0 is_addrses32 = 0 Not supported.

Checking found mode: 0x0101:
Unhandled instruction in v86 that caused a GPF (7BC6:0000h): 00 00 00 00 00


00
is_operand32 = 0 is_addrses32 = 0 Not supported.

Alexei A. Frounze

unread,
Dec 20, 2007, 4:40:48 AM12/20/07
to
On Dec 19, 11:29 pm, "Rod Pemberton" <do_not_h...@nohavenot.cmm>
wrote:
> "Alexei A. Frounze" <alexfrun...@gmail.com> wrote in messagenews:1ebcb4da-74a9-48a6...@d4g2000prg.googlegroups.com...

>
> > On Dec 19, 9:43 pm, "Rod Pemberton" <do_not_h...@nohavenot.cmm> wrote:
> > > Is the [PC] speaker just DC on/off like old Apple II's?
>
> > Yes, pretty much.
>
> Okay.
>
> > > I've not looked into the PC speaker except to turn the _annoying_ thing
> > > off...
>
> > And that's because the skill of programming it was lost. :)
>
> Well, I once experienced an "orchestra" of Apple II's. Each machine was a
> different "instrument." Someone setup all Apple II's in the computer lab to
> all farm animals...

:)

> > > If it's just DC on/off, then it's a ancient low sample
> > > rate "1-bit DA converter"... "mechanical," almost audio, static... Can
> you
> > > boost the interrupt rate to the maximum, reorder interrupt priority
> > > reprogramming PIC's, etc. to smooth the audio?
>
> > I haven't investigated the problem fully, but if the BIOS disables and
> > enables interrupts (with CLI and STI) as it wishes,
>
> I know what the BIOS does, but not how it does it... I'm assuming many
> similarities and differences to my OS.

Like I said, you tell the SB's DMA where the buffer is and how many
samples are there and you're done -- you don't have to worry about the
times when individual samples are being output. As long as any delays
between those elementary buffers are small or infrequent, there's
little to no impact on the sound quality. If the samples are put into
the buffer at somewhat irregular intervals, it also doesn't matter
because the DMA will do the I/O at the regular intervals. The
requirements for PWM are stricter.
[The PWM works this way. Imagine your signal (amplitude as function of
time) being represented as a bunch of rectangular pulses of the same
width but different height. That would be essentially what the SB's
DAC doing (well, there's some filtering, but it's irrelevant at this
point of discussion). Add a constant bias to that so the amplitude is
always >= 0. Now, turn all those rectangles individually by 90 degrees
and rescale to fit the longest (which were tallest) into the width
before rotation. Now each sample is represented not by 1 rectangular
of fixed with and arbitrary height, but by 2 rectangles of fixed hight
but variable width.
The main idea of PWM is to approximate some signal by a series of 0s
and 1s and approximate in terms of energy, i.e. the total energy
delivered as function of time would be the same for both signals. This
works very well in control circuits, especially for inert devices,
such as heaters. The spectrum of the approximation will be mostly
similar to that of the original, except there will appear an
additional component at the sample rate because there're now 1<->0
transitions for every sample.]
This is usually done on x86 PCs by using 2 timers. One timer is used
for interrupts (one per sample) and the other to drive the speaker, to
change the logical level at its input after a while.
So, for PWM you need to make sure every timer interrupt (one per
sample) is handled at about the right time, which is a bigger
restriction than handling the DMA's completion interrupt between small
buffers of samples. Now, because there's an additional spectral
component at the sampling frequency (actually, there are harmonics of
that too), at sufficiently low sample rates there will be an audible
and annoying tone because its frequency is below the circuitry's cut-
off frequency. To get rid of that you need to bump up the sample rate
to make it above the circuitry's cut-off frequency or what the speaker
itself can produce. So, for good kind of sound with PWM you need
higher interrupt rate than for approximately the same thing with SB.
And one would need upsampling to make it possible to play waveforms
recorded with different sample rate, an exercise in DSP. :)
See also PC-GPE by Mark Feldman, SPEAKER.TXT.

> If it's using CLI/STI too much, I'd
> think even Trixter would've had a problem. The only way around would be NMI
> via a watchdog timer card... Did the Soundblaster use NMI? IIRC, Trixter
> had some issue with interrupts occuring so quickly the disk reading code
> couldn't complete prior to it being called again.

Until further analysis, we can only draw conjectures. :)

> Programming the SoundBlaster AWE-32http://www.gamedev.net/reference/articles/article445.asp


>
> "One of the most common causes of a system not having a working NMI is
> that the system's memory parity checking has been turned off. You can
> check your system's memory parity checking status by activating your
> system's BIOS setup. Consult your system's user manual on how to
> activate BIOS/CMOS setup and memory parity checking."
>
> Something else to test my OS with... Probably the reason it wasn't seeing
> any NMI's... Bios setting parity _off_ and I haven't messed with the sound
> chips. "FIX ME" limit in OS has been exceeded! :-)

Interesting.

> > w/o v86 there's no
> > easy way of not missing and not delaying frequent timer interrupts by
> > too much. I only tried to enable the timer interrupts upon entry to
> > int 13h but that alone didn't help.
>
> "...enable timer interrupts" for int 13h? Did you mean disable? I can't see
> timer interrupts for audio only occuring during disk access as useful...
> Or, did you mean "enable interrupts" via STI for int 13h? You trying
> confused me...? That's not easy to do... :-)

Yes, mask everything but the hard disk and timer IRQs in the PIC and
do STI before calling into the original int 13h and then restore
afterwards.

> If one interrupt is being called so much it's interfering with the audio,
> you could chain that interrupt so it also does small amounts of audio
> work...

Need to look further.

> I'd think you'd want timer interrupts, which are pushing data to the PC
> speaker, to occur frequently and as close to real-time as possible to
> prevent sound distortion. For sinusoids not DC, you'd at least upto
> slighlty over twice your highest frequency - i.e., 22kHz + a few extra Hz
> for 11kHz audio. Now, since the PC speaker is essentially a 1-bit DAC (I
> think it is, but I'm taking your word for it until the sometime in the
> future...), you'd actually need a much higher output frequency than 22kHz to
> generate 11kHz audio. The audio is being composed from summing sinusoids
> (Fourier theorem), but you don't have any sinusoids, only DC high and DC
> low. So, you have to toggle them on and off quickly in sequences which when
> averaged produce the needed sinusoids, thereby requiring a higher frequency.
> It's not quite Pulse Width Modulation. I don't know what it's called for
> sure, but figure 2 is very close to be what I recall them doing.

Some filtering of those pulses helps to make the signal look/sound
"smoother".

> I think
> they used a simpler method than a triangular wave for on/off decisions

> though.http://en.wikipedia.org/wiki/Pulse_width_modulation


>
> Wikipedia has a small article, non-technical, which links to "Delta-Sigma"
> modulation, technical, which I don't recall ever learning. I don't think
> it's the method used on the Apple II's, or C64's. It also seems different
> from how I learned how 1-bit DA's work... The C64's had a sound chip, but
> to do simple human artificial voice one program used a pulsed method of some

> sort.http://en.wikipedia.org/wiki/1-bit_DAC


>
> Anyway, I'd probably search for articles on real time timers for the PC, old
> DOS PC timer programs, and more on simple 1-bit DAC's, i.e, use algorithms
> other than "Delta-Sigma."
>
> > It can be much worse if SMI is
> > involved in I/O.
>
> Do you have a machine that you've confirmed uses SMI in BIOS? How does one
> tell? Everyone talks about it, but I haven't seen much on how to detect
> it... without disassembling the BIOS or using a logic analyzer, of course.

If it happens when you don't seem to do any I/O, then disabling all
interrupts and observing monotonicity and rate of TSC in a loop may be
one way. If it only happens during explicit I/O, it may be harder to
discover the "stolen" TSC ticks, especially in foreign code. Another
way can be setting up single-step interrupt, making sure nothing
disables it (by changing the BIOS code or running it in v86 mode) and
again looking at the time in the ISR. If there's a huge jump, SMI is
likely the cause. I haven't done this and may be missing some
potential problems, but I hope/expect the SMI code doesn't alter the
TSC and this is possible.

Alex

Rod Pemberton

unread,
Dec 20, 2007, 7:32:11 AM12/20/07
to

"Alexei A. Frounze" <alexf...@gmail.com> wrote in message
news:7100391a-b263-4698...@e23g2000prf.googlegroups.com...

> > > w/o v86 there's no
> > > easy way of not missing and not delaying frequent timer interrupts by
> > > too much. I only tried to enable the timer interrupts upon entry to
> > > int 13h but that alone didn't help.
> >
> > "...enable timer interrupts" for int 13h? Did you mean disable? I can't
see
> > timer interrupts for audio only occuring during disk access as useful...
> > Or, did you mean "enable interrupts" via STI for int 13h? You trying
> > confused me...? That's not easy to do... :-)
>
> Yes, mask everything but the hard disk and timer IRQs in the PIC and
> do STI before calling into the original int 13h and then restore
> afterwards.
>

Don't you need an IRQ for DMA? Okay... doesn't the BIOS need an IRQ for
DMA?

Actually, if you get an NMI, it'll block other NMI's and IRQ's until an iret
is executed. Correct? "...sound card-driven OS..."

"In order to get the a/v synch, he's got the soundcard (the only element in
the machine with a reliable timer) initiating all the video transfers. So
the machine essentially has a sound card-driven OS. My brain fell out when I
heard that. -- Guybrush / Northern Dragons"
http://www.oldskool.org/pc/8088_Corruption

Okay, block _everything_ ! Works for me... I mean there's no good reason
to let cpu gobbling hardware use _your_ cpu time. :-) Besides, all those
pesky IRQ's are preventing me from designing the perfect single threaded OS.
They're causing me to virtualize everything... It's better just to banish
as many as possible of those hardware gremlins before they destory all CS
theory! :-)

And, just how do you get your keyboard back? I hear it's pretty tough if
you can't input anything... I guess you just sit back, relax, and enjoy the
song. :)

> > [PC speaker somewhat like PWM audio]


>
> Some filtering of those pulses helps to make the signal look/sound
> "smoother".
>

Um, what filter? Is there a low pass filter on the speaker circuit? Oh, I
guess you could put one in there. I usually prefer pulling the cable. It's
impedance is almost ideal. It has a near perfect frequency rolloff right
next to the ideal cutoff frequency (0Hz). ;-) Now, if you could push the
frequency up over 25kHz or so and never let it fall below that, swap the
speaker for an ultrasonic transducer, it'd be nice way to implement PC
remote control... Nobody has any love for the PC speaker anyway. :(

Or, did you mean via software? If the speaker is toggled at high enough
frequency, _some_ of the harmonics, "over-sampling," or clocking frequencies
will be blocked by the frequency response of the speaker, i.e., the speaker
is the low-pass filter... Well, we know how well that works: poorly.
"They" used to cut costs by hooking a piezo tweeter in parallel with a
woofer and due to different frequency responses from their respective
impedances they acted like a low-pass (woofer) and high-pass circuit (piezo
tweeter). But, I'm not really sure why it had to be a piezo tweeter and not
a standard cone tweeter... Despite all the "bode plots," no professor ever
got around to explaining that. :(


Rod Pemberton

Benjamin David Lunt

unread,
Dec 20, 2007, 9:10:56 AM12/20/07
to

"Rod Pemberton" <do_no...@nohavenot.cmm> wrote in message
news:fkd7na$fvp$1...@aioe.org...

>
>
> fysos0 12/19 real hardware. This is with all hardware enabled and all ram
> cached/mirrored code disabled: BIOS, video BIOS, cards, etc. (Not sure if
> that's what you want...) I ported DMIDECODE to DJGPP/OpenWatcom (and
> Robert
> Riebisch did a version also...) which displays SMBIOS and DMI information.
> Would you like the output from that program to compare?
> http://www.nongnu.org/dmidecode/

Yes, Please. I have my SMBIOS and DMI code parser complete, however, I
don't have the code that does something with it complete yet. Thats
why you see all the TODO's. :-)

> Anyway, you'll now see the ACPI, serial and parallel ports. I don't see
> the
> modem, or ethernet (code check disabled due to hang), USB, or sound.

I don't detect a modem yet. I guess it would be a simple test to
see if I get a ADT or something back. Since the PCI code is disabled,
you won't get ethernet or USB yet either. I can disable only the
ethernet stuff so that you can see the USB stuff.

Is the Sound card a SoundBlaster on the ISA bus? If so, it should
have found it.

> Checking found mode: 0x011A:
> Unhandled instruction in v86 that caused a GPF (7A66:0000h): 00 00 00 00
> 00
> 00
> is_operand32 = 0 is_addrses32 = 0 Not supported.

In checking for the INT 1Ah GPF, I noticed that your BIOS uses more than
16-bits of the (e)ip register. This might be to see if the wrap-around
happens (to check to see if the a20 line is on), but I doubt it. Let
me look at my code some more and see why you are getting the above
GPF.

Thanks Rod, I appreciate it. I still need to find out why the keyboard
stuff doesn't work in VPC 2007...

Ben


Rod Pemberton

unread,
Dec 21, 2007, 3:52:14 AM12/21/07
to

"Benjamin David Lunt" <zf...@frontiernet.net> wrote in message
news:QJuaj.663$Sa1...@news02.roc.ny...

>
> "Rod Pemberton" <do_no...@nohavenot.cmm> wrote in message
> I don't detect a modem yet.

(post 1 of 2)

Sorry, it's a Winmodem... It used a special driver. I've got it disabled.
I prefer not to reenable the software for Windows. IIRC, it didn't give
away any information about the ports it uses. The chipset is listed below.

> Is the Sound card a SoundBlaster on the ISA bus? If so, it should
> have found it.
>

It's also got a TV encoder somewhere... never used it. Some integrated
chipset by C-Media. It might be compatible...

Win98SE for sound HW says:
C-Media PCI audio legacy device
IRQ 5, DMA 1, DMA 5, port 220-22f, port 300-301
CMI8738/C3DX PCI Audio device
IRQ 10, port DC00-DCFF
DOS Mode MPU-401 Emulator
port 330-331
Gameport Joystick
port 0201

The MB was so "customized" that I collected much info about the MB...
somewhere. Okay, found it. I'll post it below my signature.

> In checking for the INT 1Ah GPF, I noticed that your BIOS uses more than
> 16-bits of the (e)ip register. This might be to see if the wrap-around
> happens (to check to see if the a20 line is on), but I doubt it. Let
> me look at my code some more and see why you are getting the above
> GPF.

Interesting. I'd think that with all the 32-bit clean problems Mac's had
going from the 68k to the 68010/20's that no BIOS author would do something
like that...


Rod Pemberton

---bios, video
AWARD Modular BIOS v4.51PG
original BIOS:
BKMVP4 BIOS ver 1.36 99/10/26
10/26/1999-MBKMVP4-BKMVP4C-00
updated BIOS:
BKMVP4 ver 1.51 5/24/2000 NTSC
05/24/2000-MBKMVP4-BKMVP4C-00
original video driver:
Trident Blade3D/MVP4(66)
updated video driver:
VIA Tech VT8501 Graphics Controller

---chipsets
Award PCI/PNP 586 1998 183791375
PSKBM1 V1.5 (on power supply)
00D009F12815 (on motherboard)
DC100 Model PS100 S/N 0238178 (100Watt 2Amp)
Trident TVXpress (TV encoder)
Trident TVXpress A CC02 M6R26 9930/49072475 Trident '99
Davicom 9102A Fast PCI Ethernet
PCNet HT2001 9936
PCNet HT2019A PCI LAN 9916SM3U22
C-Media CMI8738AM Sound
SoundProMR HT8738 AM/PCT M8w21-033D 994OUPJD
PCTel HSP56 MicroModem v3.03
PCT 301L 9939 BAAA79
PCT 301D 9938 CAACB2
VIA Apollo MVP4 chipset:
VIA 82686A South bridge controller
VIA VT83C686A 9939CF TAIWAN 12KON5000
VIA VT8501 North bridge controller
w/Integrated Trident 'Blade 3D' AGP 2x graphics engine (CyberBlade i7)
w/PC-100 memory
PC 100 VIA Graphic Embeded (part numbers under chip heatsink...)

Rod Pemberton

unread,
Dec 21, 2007, 3:52:32 AM12/21/07
to

"Benjamin David Lunt" <zf...@frontiernet.net> wrote in message
news:QJuaj.663$Sa1...@news02.roc.ny...

> Yes, Please. I have my SMBIOS and DMI code parser complete, however, I
> don't have the code that does something with it complete yet. Thats
> why you see all the TODO's. :-)
>

(post 2 of 2)

I'm sure it's useful to compare output for "This Old Machine" and DMIDECODE
for Linux or Windows on your machines.

The output (below my signature) is for the four programs which come with
DMIDECODE, which were renamed dmidecod.exe, biosdecd.exe, vpddecod.exe,
ownrship.exe for my DOS port.


Rod Pemberton


dmidecod.exe
----

# dmidecod 2.9
SMBIOS 2.2 present.
33 structures occupying 862 bytes.
Table at 0x000F0800.

Handle 0x0000, DMI type 0, 19 bytes
BIOS Information


Vendor: Award Software International, Inc.
Version: 4.51 PG

Release Date: 05/24/00
Address: 0xE0000
Runtime Size: 128 kB
ROM Size: 256 kB
Characteristics:
ISA is supported
PCI is supported
PNP is supported
APM is supported
BIOS is upgradeable
BIOS shadowing is allowed
ESCD support is available
Boot from CD is supported
Selectable boot is supported
BIOS ROM is socketed
EDD is supported
5.25"/360 KB floppy services are supported (int 13h)
5.25"/1.2 MB floppy services are supported (int 13h)
3.5"/720 KB floppy services are supported (int 13h)
3.5"/2.88 MB floppy services are supported (int 13h)
Print screen service is supported (int 5h)
8042 keyboard services are supported (int 9h)
Serial services are supported (int 14h)
Printer services are supported (int 17h)
CGA/mono video services are supported (int 10h)
ACPI is supported
USB legacy is supported
AGP is supported
LS-120 boot is supported
ATAPI Zip drive boot is supported

Handle 0x0001, DMI type 1, 25 bytes
System Information
Manufacturer: VIA Technologies, Inc.
Product Name: VT8501
Version:
Serial Number:
UUID: Not Settable
Wake-up Type: Reserved

Handle 0x0002, DMI type 2, 8 bytes
Base Board Information
Manufacturer:
Product Name: MBKMVP4
Version:
Serial Number:

Handle 0x0003, DMI type 3, 13 bytes
Chassis Information
Manufacturer:
Type: Unknown
Lock: Not Present
Version:
Serial Number:
Asset Tag:
Boot-up State: Unknown
Power Supply State: Unknown
Thermal State: Unknown
Security Status: Unknown

Handle 0x0004, DMI type 4, 32 bytes
Processor Information
Socket Designation: Socket 7
Type: Central Processor
Family: K5
Manufacturer: AMD
ID: 8C 05 00 00 BF 21 80 00
Signature: Family 5, Model 8, Stepping 12
Flags:
FPU (Floating-point unit on-chip)
VME (Virtual mode extension)
DE (Debugging extension)
PSE (Page size extension)
TSC (Time stamp counter)
MSR (Model specific registers)
MCE (Machine check exception)
CX8 (CMPXCHG8 instruction supported)
PGE (Page global enable)
MMX (MMX technology supported)
Version: AMD-K6
Voltage: 3.3 V
External Clock: 100 MHz
Max Speed: 500 MHz
Current Speed: 500 MHz
Status: Populated, Enabled
Upgrade: ZIF Socket
L1 Cache Handle: 0x0000
L2 Cache Handle: 0x0000
L3 Cache Handle: 0x0000

Handle 0x0005, DMI type 5, 28 bytes
Memory Controller Information
Error Detecting Method: None
Error Correcting Capabilities:
Single-bit Error Correcting
Supported Interleave: Four-way Interleave
Current Interleave: One-way Interleave
Maximum Memory Module Size: 256 MB
Maximum Total Memory Size: 1536 MB
Supported Speeds:
70 ns
60 ns
Supported Memory Types:
Other
Unknown
Standard
FPM
EDO
Parity
ECC
SIMM
DIMM
SDRAM
Memory Module Voltage: 5.0 V 3.3 V
Associated Memory Slots: 6
0x0006
0x0007
0x0008
0x0009
0x000A
0x000B
Enabled Error Correcting Capabilities: None

Handle 0x0006, DMI type 6, 12 bytes
Memory Module Information
Socket Designation: BANK_0
Bank Connections: 1
Current Speed: 60 ns
Type: DIMM SDRAM
Installed Size: 32 MB (Single-bank Connection)
Enabled Size: 32 MB (Single-bank Connection)
Error Status: OK

Handle 0x0007, DMI type 6, 12 bytes
Memory Module Information
Socket Designation: BANK_1
Bank Connections: 2
Current Speed: 60 ns
Type: DIMM SDRAM
Installed Size: 32 MB (Single-bank Connection)
Enabled Size: 32 MB (Single-bank Connection)
Error Status: OK

Handle 0x0008, DMI type 6, 12 bytes
Memory Module Information
Socket Designation: BANK_2
Bank Connections: 3
Current Speed: 60 ns
Type: DIMM SDRAM
Installed Size: 32 MB (Single-bank Connection)
Enabled Size: 32 MB (Single-bank Connection)
Error Status: OK

Handle 0x0009, DMI type 6, 12 bytes
Memory Module Information
Socket Designation: BANK_3
Bank Connections: 4
Current Speed: 60 ns
Type: DIMM SDRAM
Installed Size: 32 MB (Single-bank Connection)
Enabled Size: 32 MB (Single-bank Connection)
Error Status: OK

Handle 0x000A, DMI type 6, 12 bytes
Memory Module Information
Socket Designation: BANK_4
Bank Connections: 5
Current Speed: 70 ns
Type: Unknown
Installed Size: Not Installed
Enabled Size: Not Installed
Error Status: OK

Handle 0x000B, DMI type 6, 12 bytes
Memory Module Information
Socket Designation: BANK_5
Bank Connections: 6
Current Speed: 70 ns
Type: Unknown
Installed Size: Not Installed
Enabled Size: Not Installed
Error Status: OK

Handle 0x000C, DMI type 7, 19 bytes
Cache Information
Socket Designation: Internal Cache
Configuration: Enabled, Not Socketed, Level 1
Operational Mode: Write Back
Location: Internal
Installed Size: 64 KB
Maximum Size: 64 KB
Supported SRAM Types:
Synchronous
Installed SRAM Type: Synchronous
Speed: Unknown
Error Correction Type: Unknown
System Type: Unknown
Associativity: Unknown

Handle 0x000D, DMI type 7, 19 bytes
Cache Information
Socket Designation: External Cache
Configuration: Enabled, Not Socketed, Level 2
Operational Mode: Write Back
Location: External
Installed Size: 512 KB
Maximum Size: 2048 KB
Supported SRAM Types:
Synchronous
Installed SRAM Type: Synchronous
Speed: Unknown
Error Correction Type: Unknown
System Type: Unknown
Associativity: Unknown

Handle 0x000E, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: PRIMARY IDE
Internal Connector Type: On Board IDE
External Reference Designator:
External Connector Type: None
Port Type: Other

Handle 0x000F, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: SECONDARY IDE
Internal Connector Type: On Board IDE
External Reference Designator:
External Connector Type: None
Port Type: Other

Handle 0x0010, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: FDD
Internal Connector Type: On Board Floppy
External Reference Designator:
External Connector Type: None
Port Type: 8251 FIFO Compatible

Handle 0x0011, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: COM1
Internal Connector Type: 9 Pin Dual Inline (pin 10 cut)
External Reference Designator:
External Connector Type: DB-9 male
Port Type: Serial Port 16450 Compatible

Handle 0x0012, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: COM2
Internal Connector Type: 9 Pin Dual Inline (pin 10 cut)
External Reference Designator:
External Connector Type: DB-9 male
Port Type: Serial Port 16450 Compatible

Handle 0x0013, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: LPT1
Internal Connector Type: DB-25 female
External Reference Designator:
External Connector Type: DB-25 female
Port Type: Parallel Port ECP/EPP

Handle 0x0014, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: Keyboard
Internal Connector Type: Other
External Reference Designator:
External Connector Type: PS/2
Port Type: Keyboard Port

Handle 0x0015, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: PS/2 Mouse
Internal Connector Type: PS/2
External Reference Designator: Detected
External Connector Type: PS/2
Port Type: Mouse Port

Handle 0x0016, DMI type 9, 13 bytes
System Slot Information
Designation: ISA
Type: 16-bit ISA
Current Usage: Unknown
Length: Long
Characteristics:
5.0 V is provided

Handle 0x0017, DMI type 9, 13 bytes
System Slot Information
Designation: ISA
Type: 16-bit ISA
Current Usage: Unknown
Length: Long
Characteristics:
5.0 V is provided

Handle 0x0018, DMI type 9, 13 bytes
System Slot Information
Designation: ISA
Type: 16-bit ISA
Current Usage: Unknown
Length: Long
Characteristics:
5.0 V is provided

Handle 0x0019, DMI type 9, 13 bytes
System Slot Information
Designation: ISA
Type: 16-bit ISA
Current Usage: Unknown
Length: Long
Characteristics:
5.0 V is provided

Handle 0x001A, DMI type 9, 13 bytes
System Slot Information
Designation: PCI
Type: 32-bit PCI
Current Usage: In Use
Length: Long
ID: 9
Characteristics:
5.0 V is provided

Handle 0x001B, DMI type 9, 13 bytes
System Slot Information
Designation: PCI
Type: 32-bit PCI
Current Usage: In Use
Length: Long
ID: 10
Characteristics:
5.0 V is provided

Handle 0x001C, DMI type 9, 13 bytes
System Slot Information
Designation: PCI
Type: 32-bit PCI
Current Usage: Available
Length: Long
ID: 11
Characteristics:
5.0 V is provided

Handle 0x001D, DMI type 9, 13 bytes
System Slot Information
Designation: PCI
Type: 32-bit PCI
Current Usage: Available
Length: Long
ID: 8
Characteristics:
5.0 V is provided

Handle 0x001E, DMI type 9, 13 bytes
System Slot Information
Designation: AGP
Type: 32-bit AGP
Current Usage: Available
Length: Long
ID: 8
Characteristics:
5.0 V is provided

Handle 0x001F, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: USB
Internal Connector Type: None
External Reference Designator:
External Connector Type: Other
Port Type: USB

Handle 0x0020, DMI type 13, 22 bytes
BIOS Language Information
Installable Languages: 3
n|US|iso8859-1
r|CA|iso8859-1
a|JP|unicode
Currently Installed Language: n|US|iso8859-1

biosdecd.exe
----
# biosdecd 2.9
SMBIOS 2.2 present.
Structure Table Length: 862 bytes
Structure Table Address: 0x000F0800
Number Of Structures: 33
Maximum Structure Size: 74 bytes
BIOS32 Service Directory present.
Revision: 0
Calling Interface Address: 0x000FBC50
PNP BIOS 1.0 present.
Event Notification: Not Supported
Real Mode 16-bit Code Address: F000:C8F0
Real Mode 16-bit Data Address: F000:0000
16-bit Protected Mode Code Address: 0x000FC8C8
16-bit Protected Mode Data Address: 0x000F0000
PCI Interrupt Routing 1.0 present.
Router ID: 00:07.0
Exclusive IRQs: 7 10 11
Compatible Router: 1106:0596
Slot Entry 1: ID 00:09, slot number 1
Slot Entry 2: ID 00:0a, slot number 2
Slot Entry 3: ID 00:0b, slot number 3
Slot Entry 4: ID 00:01, on-board
Slot Entry 5: ID 00:07, on-board

vpddecod.exe
----
# vpddecod 2.9
# No VPD structure found, sorry.

ownrship.exe
----
(nothing)

Benjamin David Lunt

unread,
Dec 21, 2007, 3:00:24 PM12/21/07
to

"Rod Pemberton" <do_no...@nohavenot.cmm> wrote in message
news:fkfup6$8uk$1...@aioe.org...

>
> (post 2 of 2)
>
> I'm sure it's useful to compare output for "This Old Machine" and
> DMIDECODE
> for Linux or Windows on your machines.
>
> The output (below my signature) is for the four programs which come with
> DMIDECODE, which were renamed dmidecod.exe, biosdecd.exe, vpddecod.exe,
> ownrship.exe for my DOS port.

Thanks for the output.

Ben


Benjamin David Lunt

unread,
Dec 21, 2007, 3:00:24 PM12/21/07
to

"Rod Pemberton" <do_no...@nohavenot.cmm> wrote in message
news:fkfuok$8u3$1...@aioe.org...

>
> (post 1 of 2)
>
> Sorry, it's a Winmodem... It used a special driver. I've got it
> disabled.
> I prefer not to reenable the software for Windows. IIRC, it didn't give
> away any information about the ports it uses. The chipset is listed
> below.

Thanks. I haven't done much work with a Winmodem anyway.

>> Is the Sound card a SoundBlaster on the ISA bus? If so, it should
>> have found it.
>
> It's also got a TV encoder somewhere... never used it. Some integrated
> chipset by C-Media. It might be compatible...
>
> Win98SE for sound HW says:
> C-Media PCI audio legacy device
> IRQ 5, DMA 1, DMA 5, port 220-22f, port 300-301
> CMI8738/C3DX PCI Audio device
> IRQ 10, port DC00-DCFF
> DOS Mode MPU-401 Emulator
> port 330-331
> Gameport Joystick
> port 0201

Thanks for this. I will look into it.

Again, thanks for this info. I will do some research and get back
to you.

Ben

Merry Christmas to all.


Benjamin David Lunt

unread,
Dec 21, 2007, 3:43:49 PM12/21/07
to

"Rod Pemberton" <do_no...@nohavenot.cmm> wrote in message
news:fkfuok$8u3$1...@aioe.org...


Hi Rod,

I have posted a new image dated 21st of Dec. It has the PCI and USB
code enabled. When you get to "press a key or two", just sit on it
a minute and the USB will display any devices that are plugged in.
It will currently detect a hub, but any device plugged in will return
errors. I have a small error with my recursion function. I am not
passing the right parameter or something.

I have the NIC stuff disabled, but let me know if it does freeze
on your NIC card again. If it does, does it display anything
just before the freeze?

> It's also got a TV encoder somewhere... never used it. Some integrated
> chipset by C-Media. It might be compatible...
>
> Win98SE for sound HW says:
> C-Media PCI audio legacy device
> IRQ 5, DMA 1, DMA 5, port 220-22f, port 300-301
> CMI8738/C3DX PCI Audio device
> IRQ 10, port DC00-DCFF
> DOS Mode MPU-401 Emulator
> port 330-331
> Gameport Joystick
> port 0201

In your last debug.txt post, FYSOS detected the game port at 200h.
It didn't detect the audio device. I will look up the specs
for a C-Media device and see if it is Sound Blaster compatible
or if it is a different card.

> The MB was so "customized" that I collected much info about the MB...
> somewhere. Okay, found it. I'll post it below my signature.
>
>> In checking for the INT 1Ah GPF, I noticed that your BIOS uses more than
>> 16-bits of the (e)ip register. This might be to see if the wrap-around
>> happens (to check to see if the a20 line is on), but I doubt it. Let
>> me look at my code some more and see why you are getting the above
>> GPF.
>
> Interesting. I'd think that with all the 32-bit clean problems Mac's had
> going from the 68k to the 68010/20's that no BIOS author would do
> something
> like that...
>

I will look into this too.

Thanks again,
Ben


Benjamin David Lunt

unread,
Dec 21, 2007, 4:43:23 PM12/21/07
to

"Benjamin David Lunt" <zf...@frontiernet.net> wrote in message
news:9AVaj.803$7d1...@news01.roc.ny...

>
>> Win98SE for sound HW says:
>> C-Media PCI audio legacy device
>> IRQ 5, DMA 1, DMA 5, port 220-22f, port 300-301
>> CMI8738/C3DX PCI Audio device
>> IRQ 10, port DC00-DCFF
>> DOS Mode MPU-401 Emulator
>> port 330-331
>> Gameport Joystick
>> port 0201
>
> In your last debug.txt post, FYSOS detected the game port at 200h.
> It didn't detect the audio device. I will look up the specs
> for a C-Media device and see if it is Sound Blaster compatible
> or if it is a different card.

Nope. It looks to be AC97 compatible. Data sheet(s) available
here:
http://www.cmedia.com.tw/?q=en/PCI/CMI8738

Do you know if yours is a 6 Channel or 4 Channel. (how many speakers
does it have hooked up?)

I have some of my AC97 code written, but it isn't far enough along
to do anything productive, like listen to sound....

Ben

P.S. Now that the PCI stuff is enabled, it should at least
say that it found an unsupported PCI audio AC97 device, yes?


Rod Pemberton

unread,
Dec 22, 2007, 7:55:34 AM12/22/07
to

"Benjamin David Lunt" <zf...@frontiernet.net> wrote in message
news:9AVaj.803$7d1...@news01.roc.ny...

> "Rod Pemberton" <do_no...@nohavenot.cmm> wrote in message
> news:fkfuok$8u3$1...@aioe.org...
> I have posted a new image dated 21st of Dec. It has the PCI and USB
> code enabled. When you get to "press a key or two", just sit on it
> a minute and the USB will display any devices that are plugged in.
> It will currently detect a hub, but any device plugged in will return
> errors. I have a small error with my recursion function. I am not
> passing the right parameter or something.
>

It hung on NIC. Finds the USB UHCI root hub.

> I have the NIC stuff disabled, but let me know if it does freeze
> on your NIC card again. If it does, does it display anything
> just before the freeze?
>

This is the last thing on screen at the hang:

Found PCI Device. Bus 0, Dev 10, Func 2
Davicom Semiconductor Inc.: [DM9102/A/AF] Gfast Ethernet Adapter
** PCI: Unknown subclass 0x00 within class 0x02 interface 0x00
Vendor 0x1282 Device 0x9102

If I abbreviate that as,
0 10 2 DM9102/A/AF 0x00 0x02 0x00 0x1282 0x9102

then the on screen messages are,

Found UHCI USB Root Hub at 0xD400 with 2 ports.
0 7 4 VT82C686A 0x00 0x06 0x00 0x1106 0x3057
0 9 0 CMI8738/PCI C3DX 0x01 0x04 0x00 0x13F6 0x0111
0 9 1 HSP56 0x80 0x07 0x00 0x1356 0x0211
0 10 0 DM9102/A/AF 0x00 0x02 0x00 0x1282 0x9102
0 10 1 DM9102/A/AF 0x00 0x02 0x00 0x1282 0x9102
0 10 2 DM9102/A/AF 0x00 0x02 0x00 0x1282 0x9102


Rod Pemberton

Rod Pemberton

unread,
Dec 22, 2007, 7:56:01 AM12/22/07
to

"Benjamin David Lunt" <zf...@frontiernet.net> wrote in message
news:%rWaj.745$Sa1...@news02.roc.ny...

> Nope. It looks to be AC97 compatible. Data sheet(s) available
> here:
> http://www.cmedia.com.tw/?q=en/PCI/CMI8738
>

Thanks, I'll have to grab those!

> Do you know if yours is a 6 Channel or 4 Channel. (how many speakers
> does it have hooked up?)
>

The manual is pretty thin... Under the problems section, it says it has
"Four Channel Feature". It says to use the Line Out jack for front speakers
and the Line In jack for rear speakers (That's wierd...). Then it says you
have to enable the "Four Channel Feature" in the sound icon. It doesn't say
if they mean Windows (probably so), or some of the other software for the
machine. It says for DVD's to select AC-3 or 5.1 Channel audio.

> I have some of my AC97 code written, but it isn't far enough along
> to do anything productive, like listen to sound....
>

Yeah, no plans for sound in my OS...

> P.S. Now that the PCI stuff is enabled, it should at least
> say that it found an unsupported PCI audio AC97 device, yes?
>

It hung on NIC. If it displayed, I missed it...


Rod Pemberton

Benjamin David Lunt

unread,
Dec 22, 2007, 1:12:42 PM12/22/07
to

"Rod Pemberton" <do_no...@nohavenot.cmm> wrote in message
news:fkj1cq$e6$1...@aioe.org...

>
>
> This is the last thing on screen at the hang:
>
> Found PCI Device. Bus 0, Dev 10, Func 2
> Davicom Semiconductor Inc.: [DM9102/A/AF] Gfast Ethernet Adapter
> ** PCI: Unknown subclass 0x00 within class 0x02 interface 0x00
> Vendor 0x1282 Device 0x9102
>
> If I abbreviate that as,
> 0 10 2 DM9102/A/AF 0x00 0x02 0x00 0x1282 0x9102
>
> then the on screen messages are,
>
> Found UHCI USB Root Hub at 0xD400 with 2 ports.
> 0 7 4 VT82C686A 0x00 0x06 0x00 0x1106 0x3057
> 0 9 0 CMI8738/PCI C3DX 0x01 0x04 0x00 0x13F6 0x0111
> 0 9 1 HSP56 0x80 0x07 0x00 0x1356 0x0211
> 0 10 0 DM9102/A/AF 0x00 0x02 0x00 0x1282 0x9102
> 0 10 1 DM9102/A/AF 0x00 0x02 0x00 0x1282 0x9102
> 0 10 2 DM9102/A/AF 0x00 0x02 0x00 0x1282 0x9102

Hi Rod,

I do appreciate your help. Thank you.

I third line above

> 0 9 1 HSP56 0x80 0x07 0x00 0x1356 0x0211

Should the 0x1356 be a 0x13F6 ?

I have modified my code. Please try again. It should
say, "Done with PCI enumeration" after the NIC card
detection. If it doesn't, then it is the NIC card
that I hang on. If it does say that, and still hangs,
then it might be the USB enumeration.

Thanks again,
Ben


Rod Pemberton

unread,
Dec 22, 2007, 4:46:07 PM12/22/07
to

"Benjamin David Lunt" <zf...@frontiernet.net> wrote in message
news:uscbj.777$Sa1...@news02.roc.ny...

> > 0 9 1 HSP56 0x80 0x07 0x00 0x1356 0x0211
>
> Should the 0x1356 be a 0x13F6 ?
>

Yes, sorry, transcription error...

> I have modified my code. Please try again. It should
> say, "Done with PCI enumeration" after the NIC card
> detection. If it doesn't, then it is the NIC card
> that I hang on. If it does say that, and still hangs,
> then it might be the USB enumeration.
>

Okay, next few minutes...

RP

Rod Pemberton

unread,
Dec 22, 2007, 5:36:05 PM12/22/07
to

"Rod Pemberton" <do_no...@nohavenot.cmm> wrote in message
news:fkk0fj$lhj$1...@aioe.org...

> > I have modified my code. Please try again. It should
> > say, "Done with PCI enumeration" after the NIC card
> > detection.

Says "Done with PCI enumeration" and gets to prompt.

> > If it doesn't, then it is the NIC card
> > that I hang on.

Doesn't or does? I'll let you figure it out... :) Debug.txt after sig.

The memory size is 128Mb, but only 120Mb is available (8Mb is shared video).
470Mhz is 30Mhz low. The BIOS and SMBIOS say 500Mhz. CPUID program says
501Mhz. WCPUID program says 501.13Mhz. CPU-Z program says 501.1Mhz. Linux
Bogomips is usually some whacked out value... Everything else I'm aware of
appears correct (chips, partitions, devices, etc.), but there are many
details I'm not fully aware of... The only issues in debug.txt to be your
"unhandled instructions" and "unknown subclass" warnings. USB didn't
enumerate any ports. Is that because I don't have anything connected to
USB? I can connect something if necessary.


RP

*Konan* aka FYS-OS
Forever Young Software

Build: Dec 22 2007

Checking found mode: 0x011A:


Unhandled instruction in v86 that caused a GPF (7A66:0000h): 00 00 00 00 00
00
is_operand32 = 0 is_addrses32 = 0 Not supported.

Checking found mode: 0x0119:
Unhandled instruction in v86 that caused a GPF (7A76:0000h): 00 00 00 00 00


00
is_operand32 = 0 is_addrses32 = 0 Not supported.

Checking found mode: 0x0118:
Unhandled instruction in v86 that caused a GPF (7A86:0000h): 00 00 00 00 00


00
is_operand32 = 0 is_addrses32 = 0 Not supported.

Checking found mode: 0x0107:
Unhandled instruction in v86 that caused a GPF (7A96:0000h): 00 00 00 00 00


00
is_operand32 = 0 is_addrses32 = 0 Not supported.

Checking found mode: 0x0112:
Unhandled instruction in v86 that caused a GPF (7AA6:0000h): 00 00 00 00 00


00
is_operand32 = 0 is_addrses32 = 0 Not supported.

Checking found mode: 0x0115:
Unhandled instruction in v86 that caused a GPF (7AB6:0000h): 00 00 00 00 00


00
is_operand32 = 0 is_addrses32 = 0 Not supported.

Checking found mode: 0x0116:
Unhandled instruction in v86 that caused a GPF (7AC6:0000h): 00 00 00 00 00


00
is_operand32 = 0 is_addrses32 = 0 Not supported.

Checking found mode: 0x0117:
Unhandled instruction in v86 that caused a GPF (7AD6:0000h): 00 00 00 00 00


00
is_operand32 = 0 is_addrses32 = 0 Not supported.

Checking found mode: 0x0113:
Unhandled instruction in v86 that caused a GPF (7AE6:0000h): 00 00 00 00 00


00
is_operand32 = 0 is_addrses32 = 0 Not supported.

Checking found mode: 0x0114:
Unhandled instruction in v86 that caused a GPF (7AF6:0000h): 00 00 00 00 00


00
is_operand32 = 0 is_addrses32 = 0 Not supported.

Checking found mode: 0x0110:
Unhandled instruction in v86 that caused a GPF (7B06:0000h): 00 00 00 00 00


00
is_operand32 = 0 is_addrses32 = 0 Not supported.

Checking found mode: 0x0111:
Unhandled instruction in v86 that caused a GPF (7B16:0000h): 00 00 00 00 00


00
is_operand32 = 0 is_addrses32 = 0 Not supported.

Checking found mode: 0x0105:
Unhandled instruction in v86 that caused a GPF (7B26:0000h): 00 00 00 00 00


00
is_operand32 = 0 is_addrses32 = 0 Not supported.

Checking found mode: 0x0106:
Unhandled instruction in v86 that caused a GPF (7B36:0000h): 00 00 00 00 00


00
is_operand32 = 0 is_addrses32 = 0 Not supported.

Checking found mode: 0x0100:
Unhandled instruction in v86 that caused a GPF (7B46:0000h): 00 00 00 00 00


00
is_operand32 = 0 is_addrses32 = 0 Not supported.

Checking found mode: 0x0103:
Unhandled instruction in v86 that caused a GPF (7B56:0000h): 00 00 00 00 00


00
is_operand32 = 0 is_addrses32 = 0 Not supported.

Checking found mode: 0x0104:
Unhandled instruction in v86 that caused a GPF (7B66:0000h): 00 00 00 00 00


00
is_operand32 = 0 is_addrses32 = 0 Not supported.

Checking found mode: 0x0102:
Unhandled instruction in v86 that caused a GPF (7B76:0000h): 00 00 00 00 00


00
is_operand32 = 0 is_addrses32 = 0 Not supported.

Checking found mode: 0x006A: Supported.
Checking found mode: 0x0109:

Unhandled instruction in v86 that caused a GPF (7B96:0000h): 00 00 00 00 00


00
is_operand32 = 0 is_addrses32 = 0 Not supported.

Checking found mode: 0x010A:
Unhandled instruction in v86 that caused a GPF (7BA6:0000h): 00 00 00 00 00


00
is_operand32 = 0 is_addrses32 = 0 Not supported.

Checking found mode: 0x010C:
Unhandled instruction in v86 that caused a GPF (7BB6:0000h): 00 00 00 00 00


00
is_operand32 = 0 is_addrses32 = 0 Not supported.

Checking found mode: 0x0101:
Unhandled instruction in v86 that caused a GPF (7BC6:0000h): 00 00 00 00 00


00
is_operand32 = 0 is_addrses32 = 0 Not supported.

Modes found: 23 Modes supported: 1
Keyboard passed 0xAA test
Keyboard passed 0xAB test
Controller version: 69
Controller firmware version: 70
Found PS2 Keyboard with id: AB 41
Found PS2 Wheel Mouse (0x00 0x02 0x64) (0x03)
Found Floppy Disk Controller at 0x03F0 with type 82077
Found 1.44M Floppy drive (3F0) (0)
Found a FAT12 file system
Found ATA Disk Controller at 0x01F0
Found ATA drive: Maxtor 91366U4 (Hard Disk) 0x1F0 drv: 0
Found a FAT32 file system
Extended partition found.
Found a FAT32 file system
Found ATA drive: 16X10 (Optical Disk) 0x1F0 drv: 1
Found logical drive A: active: Y at: 0 Sectors: 2,880
Found logical drive B: active: N at: 0 Sectors: 2,880
Found logical drive C: active: Y at: 63 Sectors: 24,611,517
Found logical drive D: active: Y at: 24,611,643 Sectors: 2,072,322
Found logical drive E: active: Y at: 0 Sectors: 0

Found booted from drive... 0 (A:)
Found Serial Port at 0x03F8, type: 16550AF/C/CF with FIFO
Found Parallel Port at 0x0378, irq=7, dma=0, type: ECP with FIFO size of 16


Found game at port 200, irq: 10

Found PCI BIOS32 Service Directory, revision 0
Found PCI Bus. Searching bus for devices...
Found PCI Device. Bus 0, Dev 0, Func 0
VIA Technologies Inc: [VT8501] Host Bridge
** PCI: Unknown subclass 0x00 within class 0x06 interface 0x00
Vendor 0x1106 Device 0x0501
Found PCI Device. Bus 0, Dev 1, Func 0
VIA Technologies Inc: [VT8501] PCI to AGP Bridge
** PCI: Unknown subclass 0x04 within class 0x06 interface 0x00
Vendor 0x1106 Device 0x8501
Found PCI Device. Bus 0, Dev 7, Func 0
VIA Technologies Inc: [VT82C686/686A/686B] PCI-to-ISA bridge
Found PCI Device. Bus 0, Dev 7, Func 1
VIA Technologies Inc: [VT82C586/596/686] PCI IDE Controller
Found a Legacy PCI IDE Controller Device on port 0x01F0
Found PCI Device. Bus 0, Dev 7, Func 2
VIA Technologies Inc: [VT83C572] PCI USB Controller


Found UHCI USB Root Hub at 0xD400 with 2 ports.

Found PCI Device. Bus 0, Dev 7, Func 4
VIA Technologies Inc: [VT82C686A] ACPI Power Management Controller
Found PCI Device. Bus 0, Dev 9, Func 0
C-Media Electronics Inc.: [CMI8738/PCI C3DX] PCI Audio Chip
Found PCI Device. Bus 0, Dev 9, Func 1
C-Media Electronics Inc.: [HSP56] Audiomodem Riser
Found PCI Device. Bus 0, Dev 10, Func 0
Davicom Semiconductor Inc.: [DM9102/A/AF] GFast Ethernet Adapter
Found PCI Device. Bus 1, Dev 0, Func 0
Trident Microsystems: [CyberBlade i7]
** PCI: Unknown subclass 0x00 within class 0x03 interface 0x00
Vendor 0x1023 Device 0x8400
Found PCI Device. Bus 1, Dev 0, Func 1
Trident Microsystems: [CyberBlade i7]
** PCI: Unknown subclass 0x00 within class 0x03 interface 0x00
Vendor 0x1023 Device 0x8400
Found PCI Device. Bus 1, Dev 0, Func 2
Trident Microsystems: [CyberBlade i7]
** PCI: Unknown subclass 0x00 within class 0x03 interface 0x00
Vendor 0x1023 Device 0x8400
Found PCI Device. Bus 1, Dev 0, Func 3
Trident Microsystems: [CyberBlade i7]
** PCI: Unknown subclass 0x00 within class 0x03 interface 0x00
Vendor 0x1023 Device 0x8400
Found PCI Device. Bus 1, Dev 0, Func 4
Trident Microsystems: [CyberBlade i7]
** PCI: Unknown subclass 0x00 within class 0x03 interface 0x00
Vendor 0x1023 Device 0x8400
Found PCI Device. Bus 1, Dev 0, Func 5
Trident Microsystems: [CyberBlade i7]
** PCI: Unknown subclass 0x00 within class 0x03 interface 0x00
Vendor 0x1023 Device 0x8400
Found PCI Device. Bus 1, Dev 0, Func 6
Trident Microsystems: [CyberBlade i7]
** PCI: Unknown subclass 0x00 within class 0x03 interface 0x00
Vendor 0x1023 Device 0x8400
Found PCI Device. Bus 1, Dev 0, Func 7
Trident Microsystems: [CyberBlade i7]
** PCI: Unknown subclass 0x00 within class 0x03 interface 0x00
Vendor 0x1023 Device 0x8400
Found PCI IRQ Routing Table at address 0xFDE70 with 5 slots
0: bus number 0, dev number 9, slot number 1
1: bus number 0, dev number 10, slot number 2
2: bus number 0, dev number 11, slot number 3
3: bus number 0, dev number 1, slot number 0
4: bus number 0, dev number 7, slot number 0

Done with PCI enumeration...
Enumerating USB ports now...

Benjamin David Lunt

unread,
Dec 22, 2007, 6:01:47 PM12/22/07
to

"Rod Pemberton" <do_no...@nohavenot.cmm> wrote in message
news:fkk3d9$tos$1...@aioe.org...

>
> The memory size is 128Mb, but only 120Mb is available (8Mb is shared
> video).
> 470Mhz is 30Mhz low. The BIOS and SMBIOS say 500Mhz. CPUID program says
> 501Mhz. WCPUID program says 501.13Mhz. CPU-Z program says 501.1Mhz.
> Linux
> Bogomips is usually some whacked out value...
>
> Everything else I'm aware of
> appears correct (chips, partitions, devices, etc.), but there are many
> details I'm not fully aware of... The only issues in debug.txt to be your
> "unhandled instructions" and "unknown subclass" warnings.

The "unhandled instructions" error is due to your BIOS using more than
16-bits of the eip register, I think. The "unknown subclass" error is
a simple fix.

> USB didn't
> enumerate any ports. Is that because I don't have anything connected to
> USB? I can connect something if necessary.

If nothing is plugged in, then nothing is detected :-) Right now it will
detect most HID devices, hubs, and some flash drives. However, I have
had some problems with the timing on resetting a high speed device on
a low/full speed UHCI controller. It is on the top of my TODO list.

Thanks for your help. I will see if I can get these items fixed and
the MHz calculation more accurate and release a new image.

Thanks,
Ben

P.S. My wife got me a 500Gig Maxtor drive for Christmas. I couldn't wait
:-)


Mike Jones

unread,
Dec 23, 2007, 8:46:49 AM12/23/07
to
Benjamin David Lunt wrote:
> "Esra Sdrawkcab" <ad...@127.0.0.1> wrote in message
> news:HvP9j.17077$1j1...@newsfe7-gui.ntli.net...
>> Benjamin David Lunt wrote:
>>
>>> I will have a look at these things. Thank you. It is always nice
>>> to have a fellow user send in the debug.txt file (or post it like you
>>> did). I will look into these things and get back to you.
>>>
>> OK, trying later version, it gets further
>
> Thank you.
>
> ...
>> TODO: SMBIOS code 20: Memory Device Mapped Address
>> TODO: SMBIOS code 23:
>> TODO: SMBIOS code 32:
> ...
>
> I am aware of the SMBIOS TODO's. I need to get to them.
>
I'm not complaining, I'm reporting!

>> --(no response)
> No response to a keypress, huh.

'fraid knot.

>> Found PnP ISA card: Unknown vendor type and/or name (tBA03;0)
>
> I need to look through the PnP ISA specs again. That chars
> in the ()'s look like a binary number instead of a character
> string.
>
>> Did not find a keyboard or keyboard error
>
> This is all under VPC 2004, correct?
>
> I will look into this some more.
>
Yes.

Benjamin David Lunt

unread,
Dec 23, 2007, 10:32:26 AM12/23/07
to

"Mike Jones" <ad...@127.0.0.1> wrote in message
news:dFtbj.5593$ou3....@newsfe4-win.ntli.net...
> Benjamin David Lunt wrote:

>> I am aware of the SMBIOS TODO's. I need to get to them.
>>
> I'm not complaining, I'm reporting!

I appreciate it very much, and I didn't think you were
complaining :-)

>>> --(no response)
>> No response to a keypress, huh.
>
> 'fraid knot.

Pun intended? :-)

I have a few other small items to do then, I get back to
VPC's keyboard problem.

>>> Found PnP ISA card: Unknown vendor type and/or name (tBA03;0)
>>
>> I need to look through the PnP ISA specs again. That chars
>> in the ()'s look like a binary number instead of a character
>> string.
>>
>>> Did not find a keyboard or keyboard error
>>
>> This is all under VPC 2004, correct?
>>
>> I will look into this some more.
>>
> Yes.

Thanks again,
Ben


Benjamin David Lunt

unread,
Dec 23, 2007, 12:43:47 PM12/23/07
to

"Benjamin David Lunt" <zf...@frontiernet.net> wrote in message
news:ecvbj.808$Sa1...@news02.roc.ny...

>
>>>> --(no response)
>>> No response to a keypress, huh.
>>
>> 'fraid knot.
>

Hi Mike. I found the problem. VPC didn't like the way
I was setting the keyboard leds. So rather than just ignoring
the "error", it disabled the keyboard.

I don't know if that is what hardware is to do, or if VPC is
in the wrong.

Anyway, the new image dated 23 Dec 2007 now boots on VPC 2007.

Thanks for the report,
Ben

--
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Forever Young Software
http://www.frontiernet.net/~fys/index.htm
To reply by email, please remove the zzzzzz's

Batteries not included, some assembly required.


Mike Jones

unread,
Dec 23, 2007, 1:56:17 PM12/23/07
to

Got through this time!


*Konan* aka FYS-OS
Forever Young Software

Build: Dec 23 2007

A20 line enabled via technique 0 (A20 already set by BIOS.)
Memory size in megs: 64
Found processor type: TODO at 6,527Mhz (1)
Processor: GenuineIntel
Processor Name/Brand: Intel(R) Celeron(R) CPU 3.20GHz


type: (0) Original OEM Processor

family: 0F 00
model: 04 00
stepping: 09
APIC ID: 00
log_procs: 08


clflush: 00
brand: (00) Brand not supported by CPU
x87 FPU: yes
VME: yes
MSR: yes
APIC on chip: no

ACPI (temp): yes
THERMO: no
MMX: yes
SSE: yes
SSE2: yes
Has Cache and TLB Information structure
Serial Number: 0000000007C0A97B
SysCall/SysRet instructions allowed: no


XD bit of PAE allowed: no
64-bit extentions allowed: no

Number of bits used for virtual addresses: 48
Number of bits used for physical addresses: 36


Found coprocessor type: TODO at 0 Mhz
CMOS: 128 bytes, 2nd CRC: notfound (00)
Found Advanced Configuration and Power Interface (ACPI)
Updating hardware information...

ACPI: DSDT: AML code size 8311
ACPI: OEM BIOS
Found PnP BIOS v1.0


Found PnP ISA card: Unknown vendor type and/or name (tBA03;0)

ID String: Sound Blaster 16
Vendor ID: tBA03;0 serial number: -1
Device 0: id: ZA@ function: 003 rev: 176 Compatible id: 03B0D041
Found PnP ISA card: Unknown vendor type and/or name (tBA2?;0)
ID String: Game Port
Vendor ID: tBA2?;0 serial number: -1
Device 0: id: ZA@ function: 047 rev: 176 Compatible id: 2FB0D041


Found VESA v2.0 compatible video card:

IBM SVGA BIOS, (C) 1993 Internat

Checking found mode: 0x0100: Supported.
Checking found mode: 0x0101: Supported.
Checking found mode: 0x0102: Supported.
Checking found mode: 0x0103: Supported.
Checking found mode: 0x0104: Supported.
Checking found mode: 0x0105: Supported.
Checking found mode: 0x0106: Supported.
Checking found mode: 0x0107: Supported.
Checking found mode: 0x0112: Supported.
Checking found mode: 0x0113: Supported.
Checking found mode: 0x0114: Supported.
Checking found mode: 0x0115: Supported.
Checking found mode: 0x0116: Supported.
Checking found mode: 0x0117: Supported.
Checking found mode: 0x0118: Supported.
Checking found mode: 0x0119: Supported.
Checking found mode: 0x011A: Supported.
Checking found mode: 0x011C: Supported.
Checking found mode: 0x011D: Supported.
Checking found mode: 0x0120: Supported.
Checking found mode: 0x0122: Supported.
Checking found mode: 0x0123: Not supported.
Checking found mode: 0x0124: Supported.
Checking found mode: 0x0126: Supported.
Checking found mode: 0x0127: Supported.
Checking found mode: 0x0128: Supported.
Checking found mode: 0x0129: Supported.
Checking found mode: 0x012A: Supported.
Checking found mode: 0x012B: Supported.
Checking found mode: 0x012C: Supported.
Checking found mode: 0x012D: Supported.
Checking found mode: 0x012E: Supported.
Modes found: 32 Modes supported: 31


Keyboard passed 0xAA test
Keyboard passed 0xAB test

Controller version: 0
Controller firmware version: 0


Found PS2 Keyboard with id: AB 41

Found PS2 Wheel Mouse (0x02 0x02 0x3C) (0x03)
Found Floppy Disk Controller at 0x03F0 with type 82078SL or 82078-1


Found 1.44M Floppy drive (3F0) (0)

Found Floppy Disk Controller at 0x0370 with type 82078SL or 82078-1


Found a FAT12 file system
Found ATA Disk Controller at 0x01F0

Warning. ATA device did not report ata(pi) version. Assume version 3+
(Y,N)?y
Found ATA drive: Virtual HD (Hard Disk) 0x1F0 drv: 0
Found a FAT16 file system
Found ATA Disk Controller at 0x0170
Found ATA drive: Virtual CD (Optical Disk) 0x170 drv: 0


Found logical drive A: active: Y at: 0 Sectors: 2,880
Found logical drive B: active: N at: 0 Sectors: 2,880

Found logical drive C: active: Y at: 63 Sectors: 4,185,153
Found logical drive D: active: Y at: 0 Sectors: 0


Found booted from drive... 0 (A:)
Found Serial Port at 0x03F8, type: 16550AF/C/CF with FIFO

Found Serial Port at 0x02F8, type: 16550AF/C/CF with FIFO
Found Parallel Port at 0x0378, irq=7, dma=0, type: EPP


Found game at port 200, irq: 10

Found SB Audio Device at port 220, irq: 5 d: 1 h: 5 DSP version 4.13
Type = Sound Blaster 16/32/64 board: 16-bit ADC input, stereo 8-bit
DAC outputs

Did not find a PCI bus...

Done with PCI enumeration...
No Root USB Hubs found, or an error was found creating USB thread...
Found SMBIOS Table Entry Structure version 2.3
BIOS INFO:
Vendor: American Megatrends Inc. Version: 080002
Address: 0x000F0000 Release Date: 08/14/2003
SYS INFO:
Manufacturer: Microsoft Corporation Name: Virtual Machine
Version: 5.0 Serial Number: 2545-4397-7638-6513-2127-4032-06
Universal Unique ID: 09000800070006000500040003000200
Wake-up Type: Power Switch
BASE INFO:
Manufacturer: Microsoft Corporation Name: Virtual Machine
Version: 5.0 Serial Number: 2545-4397-7638-6513-2127-4032-06
CASE INFO:
Manufacturer: Microsoft Corporation Type: Desktop
Version: 5.0 Serial Number: 2545-4397-7638-6513-2127-4032-06
Bootup state: (3) Warning
Power Supply state: (3) Warning
Thermo state: (1) Unknown
Security state: (1) Unknown
OEM dword: 0x00000000
PROCESSOR INFO:
Type: Central Family: Reserved for Pentium(r) versions
Manufacture: Intel Speed: 550Mhz
L1 Cache: 0x0005
L2 Cache: 0x0006
L3 Cache: 0x0006
CACHE INFO:
Cache1:
Configuration word: 0x0300
Max size word: 0x0000
Installed size word: 0x0000
Supported SRAM Type: 0x0002
Current SRAM Type: 0x0002


Speed: 0x00
Error Correction: 0x02
Sys Type: 0x02
assosiativity: 0x02
CACHE INFO:
Cache1:

Configuration word: 0x0301
Max size word: 0x0000
Installed size word: 0x0000
Supported SRAM Type: 0x0002
Current SRAM Type: 0x0002


Speed: 0x00
Error Correction: 0x02
Sys Type: 0x02
assosiativity: 0x02
CACHE INFO:
Cache1:

Configuration word: 0x0302
Max size word: 0x0000
Installed size word: 0x0000
Supported SRAM Type: 0x0002
Current SRAM Type: 0x0002


Speed: 0x00
Error Correction: 0x02
Sys Type: 0x02
assosiativity: 0x02

TODO: SMBIOS code 5: 2.0
TODO: SMBIOS code 5: 2.1
TODO: SMBIOS code 6
TODO: SMBIOS code 6
TODO: SMBIOS code 6
TODO: SMBIOS code 6

PORT INFO:
Type: USB
PORT INFO:
Type: USB
PORT INFO:
Type: Serial - 16550A Compatible
PORT INFO:
Type: Serial - 16550A Compatible


PORT INFO:
Type: Parallel - ECP/EPP
PORT INFO:

Type: Video


PORT INFO:
Type: Keyboard
PORT INFO:
Type: Mouse

ON BOARD DEVICE INFO:
Device 01 Type: SCSI Controller (Enabled)
To Be filled by O.E.M.
TODO: SMBIOS code 11: Free form strings
TODO: SMBIOS code 12:


TODO: SMBIOS code 13: BIOS Language Specs

TODO: SMBIOS code 18: Memory Error Info
TODO: SMBIOS code 16: physical memory array
TODO: SMBIOS code 19: Memory Array Mapped Address
TODO: SMBIOS code 17: Memory Device


TODO: SMBIOS code 20: Memory Device Mapped Address

TODO: SMBIOS code 17: Memory Device


TODO: SMBIOS code 20: Memory Device Mapped Address

TODO: SMBIOS code 17: Memory Device


TODO: SMBIOS code 20: Memory Device Mapped Address

TODO: SMBIOS code 17: Memory Device


TODO: SMBIOS code 20: Memory Device Mapped Address
TODO: SMBIOS code 23:
TODO: SMBIOS code 32:

Benjamin David Lunt

unread,
Dec 23, 2007, 2:32:24 PM12/23/07
to

"Mike Jones" <ad...@127.0.0.1> wrote in message
news:lbybj.34611$zw.1...@newsfe3-win.ntli.net...
> Mike Jones wrote:
>
> Got through this time!

Thanks for the debug.txt file.

> Found processor type: TODO at 6,527Mhz (1)

Uhmm! Going to have to look into that. Unless you actually
do have a 6 GHz macine?

> Found PnP ISA card: Unknown vendor type and/or name (tBA03;0)
> ID String: Sound Blaster 16
> Vendor ID: tBA03;0 serial number: -1
> Device 0: id: ZA@ function: 003 rev: 176 Compatible id: 03B0D041
> Found PnP ISA card: Unknown vendor type and/or name (tBA2?;0)
> ID String: Game Port
> Vendor ID: tBA2?;0 serial number: -1
> Device 0: id: ZA@ function: 047 rev: 176 Compatible id: 2FB0D041

This is fixed in the latest image.

Thanks again for your help.

Ben


Benjamin David Lunt

unread,
Dec 23, 2007, 2:35:02 PM12/23/07
to

"Benjamin David Lunt" <zf...@frontiernet.net> wrote in message
news:vHgbj.838$7d1...@news01.roc.ny...

>
> "Rod Pemberton" <do_no...@nohavenot.cmm> wrote in message
> news:fkk3d9$tos$1...@aioe.org...
>>
>> The memory size is 128Mb, but only 120Mb is available (8Mb is shared
>> video).
>> 470Mhz is 30Mhz low. The BIOS and SMBIOS say 500Mhz. CPUID program says
>> 501Mhz. WCPUID program says 501.13Mhz. CPU-Z program says 501.1Mhz.
>> Linux
>> Bogomips is usually some whacked out value...

Please try it again. It hopefully calculates it correctly now.

Thanks,
Ben


Rod Pemberton

unread,
Dec 24, 2007, 9:15:20 AM12/24/07
to

"Benjamin David Lunt" <zf...@frontiernet.net> wrote in message
news:GLybj.850$7d1...@news01.roc.ny...

Yes, it does:

Found processor type: TODO at 500Mhz (1)


Rod Pemberton

Benjamin David Lunt

unread,
Dec 24, 2007, 10:27:08 PM12/24/07
to

"Benjamin David Lunt" <zf...@frontiernet.net> wrote in message
news:Yed9j.484$Sa1...@news02.roc.ny...
>
> On another note, I spent most of yesterday afternoon
> working on the USB code. I rewrote part of it and it is
> now much faster and more efficient. With a little more
> work, it should support external hubs.

Just an update. FYSOS now supports external hubs.
Not fully of course, but it does work. For instance,
if you unplug a device attached to an external hub,
then reattach it, FYSOS won't recognize the reattachement.
All I have to do is add a little code to the USB root thread
to test the status of each external hub every couple of
seconds or so.

I just thought I would give you an update if you
were interested.

Thanks for everyones help.

Benjamin David Lunt

unread,
Feb 4, 2008, 8:44:40 PM2/4/08
to

"Rod Pemberton" <do_no...@nohavenot.cmm> wrote in message
news:fjvdqc$86s$1...@aioe.org...
> Ben,
>
> I'm still seeing some errors with FYSOS under QEMU.
>
> With 2 Dec 2007 FYSOS and QEMU 0.8.2 compiled for Windows 98:
>
> ...
> Did not find a floppy drive.
> ...
> Could not calculate which partition/disk was booted from. Please choose
> an
> initial drive to use:
>
>
> In the control window, I'm getting:
>
> qemu: unsupported keyboard cmd=0xaf
> qemu: unsupported keyboard cmd=0xa1
> qemu: unsupported keyboard cmd=0xed
>
>
> I'm running with this line:
>
> qemu -L . -m 128 -no-kqemu -net none -std-vga -boot a -fda
> a.img -localtime
>
>
> Rod Pemberton

Hi Rod,

I didn't take the time to find out how to compile the latest CVS
of QEMU on a Windows platform, though the latest version 0.9.1
is out at:
http://www1.interq.or.jp/~t-takeda/qemu/

A quick run and FYSOS still gives similar results. I will spend
a little time and see what I can come up with. The development
team has commented that the floppy emulation is broken.

Thanks,
Ben


Benjamin David Lunt

unread,
Feb 4, 2008, 9:11:26 PM2/4/08
to

"Benjamin David Lunt" <zf...@frontiernet.net> wrote in message
news:ccPpj.3439$7d1...@news01.roc.ny...

Nope. QEmu 0.9.1, still has problems with the floppy emulation.

Ben


Rod Pemberton

unread,
Feb 4, 2008, 11:35:10 PM2/4/08
to

"Benjamin David Lunt" <zf...@frontiernet.net> wrote in message
news:iBPpj.3311$Sa1....@news02.roc.ny...

> "Benjamin David Lunt" <zf...@frontiernet.net> wrote in message
> news:ccPpj.3439$7d1...@news01.roc.ny...
> > I didn't take the time to find out how to compile the latest CVS
> > of QEMU on a Windows platform, though the latest version 0.9.1
> > is out at:
> > http://www1.interq.or.jp/~t-takeda/qemu/
> >
> > A quick run and FYSOS still gives similar results. I will spend
> > a little time and see what I can come up with. The development
> > team has commented that the floppy emulation is broken.
> >
> Nope. QEmu 0.9.1, still has problems with the floppy emulation.
>

Surprised! I thought you said you weren't going to pursue QEMU anymore...

It looks like (unconfirmed) that the QEMU code you posted a while ago
returns 0x20,0x21,0x22,0x23 which should correspond to the first, second,
third, fourth drives respectively...

You said you expected 0xC0,0xC1,0xC2,0xC3, for the respective drives. Are
you sure you expect ST0 (Status Register 0) to be or'd with 0xC0? What's
the 0xC0 represent?

I just skimmed some floppy documents to see what conflict 0x20-3 would
indicate or cause, but they indicate ST0 or'd with 0xC0 is an error
condition. This is from one of them:

bit 7-6 of ST0 "Interrupt Code"
00: execution of the command has been completed correctly
01: execution of the command began, but failed to complete successfully
10: INVALID command
11: execution of the command was not completed correctly, due to a polling
error

I'd think you'd want 0x00,0x01,0x02,0x03...

Or, is the problem with bit5 being set from QEMU?

bit 5 of ST0 "Seek End"
the FDC executed a SEEK or RE-CALIBRATE command


Rod Pemberton

Rod Pemberton

unread,
Feb 5, 2008, 12:37:27 AM2/5/08
to

"Rod Pemberton" <do_no...@nohavenot.cmm> wrote in message
news:fo8osr$7qg$1...@aioe.org...

Get this. One FDC manual shows the states for bits 7-6 of ST0, but then
goes on to show that only 3 states are returned for bits 7-5 of ST0. It
also states that bits 7-6 can only be 11 "after a hardware or software
reset."

bit 7-6 of ST0
00 normal termination of command
01 abnormal termination of command
10 invalid command
11 internal drive ready status changed state during the drive polling
mode -
only occurs after a hardware or software reset

bit 7-5 of ST0
110 internal ready went true
001 normal seek termination
011 abnormal seek termination

I've also found numerous manuals that show 2 values returned from "Sense
Interrupt", while many others show 3 values. The third is optional...

result Sense Interrupt
ST0
PTR or PCN
optional third - if ETR not in mode command:
upper 4-bits is MSN of PTR
lower 4-bits are 0000h


Rod Pemberton


Benjamin David Lunt

unread,
Feb 5, 2008, 9:34:00 AM2/5/08
to

"Rod Pemberton" <do_no...@nohavenot.cmm> wrote in message
news:fo8osr$7qg$1...@aioe.org...

>
> "Benjamin David Lunt" <zf...@frontiernet.net> wrote in message
> news:iBPpj.3311$Sa1....@news02.roc.ny...
>> "Benjamin David Lunt" <zf...@frontiernet.net> wrote in message
>> news:ccPpj.3439$7d1...@news01.roc.ny...
>> > I didn't take the time to find out how to compile the latest CVS
>> > of QEMU on a Windows platform, though the latest version 0.9.1
>> > is out at:
>> > http://www1.interq.or.jp/~t-takeda/qemu/
>> >
>> > A quick run and FYSOS still gives similar results. I will spend
>> > a little time and see what I can come up with. The development
>> > team has commented that the floppy emulation is broken.
>> >
>> Nope. QEmu 0.9.1, still has problems with the floppy emulation.
>>
>
> Surprised! I thought you said you weren't going to pursue QEMU anymore...

I'm not. I just spent a few moments out of curiousity.

> It looks like (unconfirmed) that the QEMU code you posted a while ago
> returns 0x20,0x21,0x22,0x23 which should correspond to the first, second,
> third, fourth drives respectively...
>
> You said you expected 0xC0,0xC1,0xC2,0xC3, for the respective drives. Are
> you sure you expect ST0 (Status Register 0) to be or'd with 0xC0? What's
> the 0xC0 represent?
>
> I just skimmed some floppy documents to see what conflict 0x20-3 would
> indicate or cause, but they indicate ST0 or'd with 0xC0 is an error
> condition. This is from one of them:
>
> bit 7-6 of ST0 "Interrupt Code"
> 00: execution of the command has been completed correctly
> 01: execution of the command began, but failed to complete successfully
> 10: INVALID command
> 11: execution of the command was not completed correctly, due to a
> polling
> error
>
> I'd think you'd want 0x00,0x01,0x02,0x03...
>
> Or, is the problem with bit5 being set from QEMU?
>
> bit 5 of ST0 "Seek End"
> the FDC executed a SEEK or RE-CALIBRATE command

For backward compatibility, the floppy controller starts in polling mode.
If you send the RECAL command within so many (m)seconds after reset, it
moves to command mode. However, during polling mode, just after reset, you
can send four SENSE_INTERRUPT commands and it will return four results.
These results have bits 7 and 6 set as you state above and in your
other post. This is were I check for 0xC0.

I commented this code out for the latest QEMU and QEMU found the controller
as expected. It also found a floppy drive, though it could not get the
type of disk inserted, therefore, since it booted from a floppy, FYSOS could
not continue.

Ben


Rod Pemberton

unread,
Feb 6, 2008, 5:05:27 AM2/6/08
to

"Benjamin David Lunt" <zf...@frontiernet.net> wrote in message
news:st_pj.3343$Sa1...@news02.roc.ny...

> For backward compatibility, the floppy controller starts in polling mode.
> If you send the RECAL command within so many (m)seconds after reset, it
> moves to command mode. However, during polling mode, just after reset,
you
> can send four SENSE_INTERRUPT commands and it will return four results.
> These results have bits 7 and 6 set as you state above and in your
> other post. This is were I check for 0xC0.
>

Poll bit w/Configure?

> It also found a floppy drive, though it could not get the
> type of disk inserted,

That's odd. So, many other OSes work with QEMU...


RP

Benjamin David Lunt

unread,
Feb 6, 2008, 9:25:29 AM2/6/08
to

"Rod Pemberton" <do_no...@nohavenot.cmm> wrote in message
news:foc0kv$3l5$1...@aioe.org...

I know. That's what makes me wonder. However, I do a lot of
error checking and the such and my guess is that some other
OSes assume things about the floppy.

I guess I could run through my code some more and see where
and why QEmu doesn't work with my code.

I just don't want to "break" my code so that it will run on a
"faulty" emulator. :-)

Not saying anything bad about QEmu, it is that it is known that
the floppy emulation is broken, even the source comments that
it is :-).

Thanks,
Ben


Matt

unread,
Feb 6, 2008, 4:07:36 PM2/6/08
to
Why not make a run-time variable that allows the OS to be told which
platform it is running on?

Then it would only be broken when you need it to be. :-)

Matt

Benjamin David Lunt

unread,
Feb 6, 2008, 7:37:34 PM2/6/08
to

"Matt" <travellin...@yahoo.co.uk> wrote in message
news:A7CdnRXyUMU...@bt.com...

>>
>>
> Why not make a run-time variable that allows the OS to be told which
> platform it is running on?
>
> Then it would only be broken when you need it to be. :-)
>
Hi Matt,

I have already done this for MS VPC and would be very simple
to add a QEMU #define too. If I get some time tonight, I will
see what I can do.

Ben


Benjamin David Lunt

unread,
Feb 6, 2008, 11:45:08 PM2/6/08
to

"Benjamin David Lunt" <zf...@frontiernet.net> wrote in message
news:ipsqj.3595$7d1....@news01.roc.ny...

>
> I have already done this for MS VPC and would be very simple
> to add a QEMU #define too. If I get some time tonight, I will
> see what I can do.

Okay guys,

At
http://www.frontiernet.net/~fys/fysos.htm
is a .zip file (fysos1.zip) that now should run in Qemu 0.9.1.

I found where QEmu is different that real hardware, Bochs, VPC, etc.
When sending a read/write/verify command to the controller, QEmu
returns 16 bytes instead of 7 for a few cases.

Anyway, Rod, please let me know if it works.

Thanks,
Ben


Rod Pemberton

unread,
Feb 7, 2008, 7:55:30 AM2/7/08
to
"Benjamin David Lunt" <zf...@frontiernet.net> wrote in message
news:o1wqj.3626$7d1....@news01.roc.ny...

Well, I'm using QEMU 0.8.2. I've tried four other binary versions after
0.8.2 and they've all had problems under Windows 98SE. Might be QEMU, might
be Windows 98SE... patches etc. I'll post again if I get a good QEMU
update. I need to free up some disk space...

So, I've got two blocks of info for 0.8.2 if you're interested. The first
are the monitor window error messages. The second are the image window
messages. Sometimes FYSOS will go to A or B if selected. But, nothing is
on disk... Othertimes QEMU will keep failing the drive or crash with an
invalid instruction or v86 session error. I also happened to type "exit" at
an A: prompt and got other diagnostics... If you need the other startup
messages prior to the floppy identification, say so.


Rod Pemberton
----


qemu: unsupported keyboard cmd=0xaf
qemu: unsupported keyboard cmd=0xa1

FLOPPY ERROR: fdctrl_write_data: unknown command: 0x0a
FLOPPY ERROR: fdctrl_write_data: unknown command: 0x00
FLOPPY ERROR: fdctrl_write_data: unknown command: 0x0a
FLOPPY ERROR: fdctrl_write_data: unknown command: 0x00
FLOPPY ERROR: fdctrl_start_transfer: dma_mode=0 direction=1
(start transfer error repeats 18 times)

---
...(other startup messages)
Found Floppy Disk Controller at 0x03F0 with type S82078B
Found UNKNOWN Floppy drive (3F0) (0)
Found logical drive A: active: Y at: 0 Sectors: 0
Found logical drive B: active: N at: 0 Sectors: 0


Could not calculate which partition/disk was booted from. Please choose an
initial drive to use:

Drive was invalid, please choose again: A
FYSOS v2.0 system command prompt
A:\>dir
Volume in drive A is _NO_LABEL_
Volume Serial Number is 0000-0000-0000-0000

Directory of A:

File not found

A:\>exit
Found Serial Port 0x03F8, type 8250A or 16450


Found Parallel Port at 0x0378, irq=7, dma=0, type: EPP

Found Game at port 200, irq: 10


Found PCI BIOS32 Service Directory, revision 0

Did not find a PCI bus...

No Root USB Hubs found, or an error was found creating USB thread...
(righthand side of screen) Press a key
or two to continue...

Writing Debug.txt...
Error creating debug out file... (1000)

(recommend stop block message, etc.)

Benjamin David Lunt

unread,
Feb 7, 2008, 9:30:02 AM2/7/08
to

"Rod Pemberton" <do_no...@nohavenot.cmm> wrote in message
news:foeuvo$na3$1...@aioe.org...

Hi Rod,

Version 0.9.1 includes a patch for the floppy that makes my "modified"
code work. It may be that 0.8.2 needs that patch. Can you compile
QEmu locally? If so, I can find the patch and send it to you.

Thanks for your reports,
Ben

Rod Pemberton

unread,
Feb 7, 2008, 9:53:34 AM2/7/08
to

"Rod Pemberton" <do_no...@nohavenot.cmm> wrote in message
news:foeuvo$na3$1...@aioe.org...

> Well, I'm using QEMU 0.8.2. I've tried four other binary versions after
> 0.8.2 and they've all had problems under Windows 98SE. Might be QEMU,
might
> be Windows 98SE... patches etc. I'll post again if I get a good QEMU
> update. I need to free up some disk space...
>

I don't have a compiler for Windows installed right now, so if you know of a
source for pre-compiled QEMU binaries for Windows 98SE, let me know (other
than two links below).

Well, I've downloaded QEMU 0.9.0, 0.9.1, 12/13/07 snapshot for Windows from
the same source as QEMU 0.8.2:
http://www.h7.dion.ne.jp/~qemu-win/
http://www1.interq.or.jp/t-takeda/top.html

But, I can't get any to work... I get this error:

qemu: could not open disk image 'a.img'

They also fail to work with aeBIOS and the included Linux.img, etc. I've
also tried the various startup command lines I use with 0.8.2. No luck. It
doesn't appear to be a path error since "-L ." is in the command lines. I
tried the Linux.img's with 0.8.2. They work. I've replaced the dll's:
sdl.dll, fmod.dll from 0.8.2. No luck. I replaced the bios bin's:
bios.bin, vgabios.bin, vgabios-cirrus.bin from 0.8.2. No luck. I tried
reworking the batch for directx instead of winddb, no sound etc. No luck.
Something seems wrong with these...


Rod Pemberton

Rod Pemberton

unread,
Feb 7, 2008, 10:07:52 AM2/7/08
to

"Benjamin David Lunt" <zf...@frontiernet.net> wrote in message
news:KBEqj.3640$7d1...@news01.roc.ny...

> Version 0.9.1 includes a patch for the floppy that makes my "modified"
> code work. It may be that 0.8.2 needs that patch. Can you compile
> QEmu locally?

I usually use precompiled binaries for QEMU, but as indicated in my other
post, the later versions seem bad. I don't think I have any Windows
compilers installed anymore, just DOS (OW 1.3 and DJGPP). I hung onto
Cygwin and Mingw longer but deleted them since I hadn't used them for a
number of years...

> If so, I can find the patch and send it to you.

I'd prefer a source for a binary (Windows 98SE). If not, or if I can't find
one, then I'll look into what's needed to compile them... But, I've got
another project of the .net, for Java, that I've been wanting to figure out
how to compile... If I can get away with DJGPP, Mingw, Pelles C, I might
give it a go - perhaps a Borland or MS compiler too... I'd probably say no
to Cygwin, LCC-Win32, and OpenWatcom (unless OW v1.3).


Rod Pemberton

Rod Pemberton

unread,
Feb 7, 2008, 10:32:32 AM2/7/08
to

"Rod Pemberton" <do_no...@nohavenot.cmm> wrote in message
news:fof5t6$f5l$1...@aioe.org...

The only other version I'm finding at the moment is the "lite" version here:
http://lassauge.free.fr/qemu/QEMU_on_Windows.html

It seems to have an instruction which is invalid on my cpu...

I'll have get back to you... got some stuff to do.


Rod Pemberton

Benjamin David Lunt

unread,
Feb 7, 2008, 2:17:02 PM2/7/08
to

"Rod Pemberton" <do_no...@nohavenot.cmm> wrote in message
news:fof5t6$f5l$1...@aioe.org...

>
> "Rod Pemberton" <do_no...@nohavenot.cmm> wrote in message
> news:foeuvo$na3$1...@aioe.org...
>> Well, I'm using QEMU 0.8.2. I've tried four other binary versions after
>> 0.8.2 and they've all had problems under Windows 98SE. Might be QEMU,
> might
>> be Windows 98SE... patches etc. I'll post again if I get a good QEMU
>> update. I need to free up some disk space...
>>
>
> I don't have a compiler for Windows installed right now, so if you know of
> a
> source for pre-compiled QEMU binaries for Windows 98SE, let me know (other
> than two links below).
>
> Well, I've downloaded QEMU 0.9.0, 0.9.1, 12/13/07 snapshot for Windows
> from
> the same source as QEMU 0.8.2:
> http://www.h7.dion.ne.jp/~qemu-win/
> http://www1.interq.or.jp/t-takeda/top.html
>
> But, I can't get any to work... I get this error:
>
> qemu: could not open disk image 'a.img'

In the newer version, someone made a patch that needs forward slashes
instead of backslashes in paths. So

..\a.img

would now need to be

../a.img

> They also fail to work with aeBIOS and the included Linux.img, etc. I've
> also tried the various startup command lines I use with 0.8.2. No luck.
> It
> doesn't appear to be a path error since "-L ." is in the command lines. I
> tried the Linux.img's with 0.8.2. They work. I've replaced the dll's:
> sdl.dll, fmod.dll from 0.8.2. No luck. I replaced the bios bin's:
> bios.bin, vgabios.bin, vgabios-cirrus.bin from 0.8.2. No luck. I tried
> reworking the batch for directx instead of winddb, no sound etc. No luck.
> Something seems wrong with these...

Hopefully changing backslashes to forward slashes will fix it for you.

Ben


Rod Pemberton

unread,
Feb 7, 2008, 2:35:27 PM2/7/08
to

"Benjamin David Lunt" <zf...@frontiernet.net> wrote in message
news:OOIqj.3582$Sa1....@news02.roc.ny...
> Hopefully changing backslashes to forward slashes will fix it for you.
>

No slashes in my command line... I'll try a full path though. Maybe "-L ."
was busted. I don't have the 0.8.2 patches for Windows. So, I can't
compare them to 0.9.1. I.e., I don't know what "Kazu" did to get it to
compile. But, the error comes from vl.c which they restructured moving a
floppy init in main() into drive_init() and added an extra check "||
qemu_key_check(bdrv, file)" which looks suspicious to me...


Rod Pemberton

Message has been deleted

Rod Pemberton

unread,
Feb 8, 2008, 3:46:52 AM2/8/08
to
> "Mike Gonta" <mike...@gmail.com> wrote in message
news:7b92caca-4b13-4a96...@i29g2000prf.googlegroups.com...

> On Feb 7, 9:53 am, "Rod Pemberton" <do_not_h...@nohavenot.cmm> wrote:
>
> > They also fail to work with aeBIOS
>
> aeBIOS works fine with both
> qemu-0.9.0-windows and the latest
> qemu-0.9.1-windows on windows XP with:
>

Does 0.9.1 display any non-text? I.e., gif, jpg, bmp, etc?

The error isn't with aeBIOS, but with QEMU, AFAICT so far.
qemu-0.8.2-windows works for Windows 98SE, but qemu-0.9.0-windows,
qemu-0.9.1-windows, qemu-20071213-windows, and qemu-0.9.1-windows-Lite for
windows all fail... at least on this machine. I may try another Win98SE
machine to see if its something to do with this particular Win98SE...

I still suspect the change to logic for the floppy error message in vl.c. I
believe the two checks should've been separate errors and it's likely the
additional check shouldn't be performed on Win98SE and is failing. 0.9.0
seems to check for sharing, while 0.9.1 seems to check for an encrypted
drive... on FAT32!?!? But, I can't confirm unless I get it to compile. It
looks like it needs a few other packages to do that...

> qemu.exe -L . -m 128 -boot a -fda aeBIOS_20071119.img

For QEMU 0.9.1, Win98SE:

qemu.exe -L . -m 128 -boot a -fda aebios~1.img

GetNetworkParams failed. ret = 00000032
Warning: No DNS servers found
qemu: could not open disk image aebios~1.img

Adding "-net none" just leaves the "could not open" message. Same for
aeBIOS_20071119.img... Using paths, with forward slash, doesn't do anything
either. I think it's just exiting at the check in vl.c.


Rod Pemberton

It is loading more messages.
0 new messages