The Hand386 is a weird little guy from China that was offered for a limited time on Ali Express. It uses (apparently) recycled industrial 386 SoCs and a purpose-build motherboard to create a portable, battery-powered retro gaming handheld device. We have experienced some quality issues so far, but we love a weird little guy and this little guy is rather weird, indeed!
The sound chip is an interesting case: it is a(n apparently) genuine OPL-3 chip. For most DOS games, this can be selected as Ad Lib music with no digital sound.
That's right, there is no digital/PCM sound production in the traditional sense! The included Windows 95 only has a MIDI driver installed, with no mixer or PCM device.
However, the OPL-3 does have some tricks up its sleeve! Programs that know how to, can upload samples as MIDI instruments and play them as sound effects. The device includes a VGM player which plays VGM files using custom instruments, and Wolfenstein 3D, which uses this method to play sound effects and voices.
Some games may require a VESA driver. A VESA driver compatible with the built-in chipset is included as C:\VESA.COM! This works with e.g. SimCity 2000. (Thanks to Ian Scott for pointing this out!)
There is an optional ISA bus module. So far, experimental results are as follows:
The BIOS shows the serial and parallel ports from a multi-I/O card when it is installed. When the card is removed, the BIOS complains about an invalid floppy drive, until the floppy drive is disabled in BIOS setup.
Attempting to boot with a 3Com 3c509 network card inserted simply does not work. It leads to a blue "VGA" screen on the internal display, indicating a failure to start booting. This invites further investigation with a port-80 card (TODO).
It is possible to use the menu feature built in to DOS 7 to create a startup menu, making the device somewhat easier/quicker to use. The startup files CONFIG.SYS and AUTOEXEC.BAT below demonstrate some examples (both included with the handheld and not). They are examples, but you should be able to pick up the general pattern to use them.
The menu items are defined in CONFIG.SYS by defining a [MENU] block. Each MENUITEM is a comma-separated pair, where the item to the left of the comma (e.g. DOSP in the first item below) defines the name of the block that will be called both in the rest of the CONFIG.SYS and in the AUTOEXEC.BAT below. The rest of the text after the comma is the name of the menu item (e.g. (OS) DOS Prompt, in the same example item).
1 | [MENU] |
2 | MENUITEM=DOSP,(OS) DOS Prompt |
3 | MENUITEM=WIN95,(OS) Windows 95 |
4 | MENUITEM=DOOM,(Game) DOOM |
5 | MENUITEM=WOLF3D,(Game) Wolfenstein 3D |
6 | MENUITEM=TYRIAN,(Game) Tyrian |
7 | MENUITEM=SC2K,(Game) SimCity 2000 |
8 | MENUITEM=TIE,(Game) TIE Fighter |
9 | |
10 | [DOSP] |
11 | DEVICE=C:\WINDOWS\HIMEM.SYS |
12 | DEVICE=C:\WINDOWS\EMM386.EXE NOEMS |
13 | DOS=HIGH,UMB,AUTO |
14 | DEVICEHIGH=C:\WINDOWS\SETVER.EXE |
15 | SHELL=C:\COMMAND.COM C:\ /P /E:640 |
16 | REM DEVICEHIGH=C:\DOS71\DISPLAY.SYS CON=(,,1) |
17 | DEVICE=C:\CH375DOS.SYS @260 %2 |
18 | |
19 | [WIN95] |
20 | DEVICE=C:\WINDOWS\HIMEM.SYS |
21 | DEVICE=C:\WINDOWS\EMM386.EXE NOEMS |
22 | DOS=HIGH,UMB,AUTO |
23 | DEVICEHIGH=C:\WINDOWS\SETVER.EXE |
24 | SHELL=C:\COMMAND.COM C:\ /P /E:640 |
25 | DEVICE=C:\CH375DOS.SYS @260 %2 |
26 | |
27 | [DOOM] |
28 | DEVICE=C:\WINDOWS\HIMEM.SYS |
29 | DEVICE=C:\WINDOWS\EMM386.EXE NOEMS |
30 | |
31 | [WOLF3D] |
32 | DEVICE=C:\WINDOWS\HIMEM.SYS |
33 | DEVICE=C:\WINDOWS\EMM386.EXE NOEMS |
34 | |
35 | [TYRIAN] |
36 | DEVICE=C:\WINDOWS\HIMEM.SYS |
37 | DEVICE=C:\WINDOWS\EMM386.EXE NOEMS |
38 | |
39 | [SC2K] |
40 | DEVICE=C:\WINDOWS\HIMEM.SYS |
41 | DEVICE=C:\WINDOWS\EMM386.EXE NOEMS |
42 | |
43 | [TIE] |
44 | DEVICE=C:\WINDOWS\HIMEM.SYS |
45 | DEVICE=C:\WINDOWS\EMM386.EXE 2048 |
46 | FILES=30 |
If you are already familiar with this feature, you may note that we are not using a [COMMON] block, which would allow us to define some of the repeating items only once. This is so that we have control over the order in which they load (and in some items prevent their loading altogether!)
This is fairly simple: just goto the label defined in %CONFIG%, which is defined by the MENUITEM selected in CONFIG.SYS.
1 | @ECHO OFF |
2 | PROMPT $P$G |
3 | |
4 | GOTO %CONFIG% |
5 | |
6 | :DOSP |
7 | ECHO Now you are in MS-DOS 7.10 prompt. Type 'HELP' for help. |
8 | ECHO. |
9 | PATH=C:\DOS71;C:\DOS71\norton |
10 | GOTO END |
11 | |
12 | :WIN95 |
13 | PATH=C:\WINDOWS;C:\WINDOWS\COMMAND;C:\DOS71;C:\DOS71\norton |
14 | WIN |
15 | GOTO END |
16 | |
17 | :DOOM |
18 | CD GAME\DOOM |
19 | DOOM |
20 | GOTO END |
21 | |
22 | :WOLF3D |
23 | CD GAME\WOLF3D |
24 | WOLF3D |
25 | GOTO END |
26 | |
27 | :TYRIAN |
28 | CD GAME\TYRIAN |
29 | TYRIAN |
30 | GOTO END |
31 | |
32 | :SC2K |
33 | C:\VESA.COM |
34 | C:\CTMOUSE.EXE |
35 | CD GAME\SC2000 |
36 | SC2000 |
37 | GOTO END |
38 | |
39 | :TIE |
40 | CD GAME\TIE |
41 | TIE |
42 | GOTO END |
43 | |
44 | :END |