ASUS Eee PC:stä FreeDOS-läppäri

Sisällys

Netbookit olivat huipussaan noin vuonna 2010, ja älypuhelinten myötä ne katosivat arkikäytöstä yhtä nopeasti kuin olivat ilmestyneetkin. Kaapissa lojunut ASUS Eee PC 904HD sai uuden tehtävän: siitä tuli FreeDOS-kone, jossa toimivat sekä ääni että verkko. Kumpikaan ei ollut itsestäänselvyys.

Kone

ASUS Eee PC 904HD on varhainen netbook (2008) Eee PC -sarjan ensimmäisiltä vuosilta: pieni, kevyt ja vähän virtaa kuluttava kannettava, joka suunniteltiin peruskäyttöön ja liikkuvuuteen. Nykyään se sopii parhaiten retro- ja harrastekäyttöön – komentoriviltä työskentelyyn ja vanhan raudan kanssa kokeiluun.

ASUS Eee PC 904HD avattuna pöydällä

  • Suoritin: 900 MHz Intel Celeron
  • Piirisarja: Intel Mobile 915GM / ICH6M
  • Näytönohjain: Intel GMA 900
  • Muisti: 2 Gt DDR2 SO-DIMM
  • Näyttö: 8,9" 1024 x 600
  • Verkkokortti: 10/100 Mbit Atheros AR8121 / AR8113 / AR8114
  • WLAN: Atheros AR242x / AR542x
  • Ääni: Intel ICH6 HD Audio
  • Massamuisti: Kingston 128 Gt SSD

Kaksi asiaa määritti koko projektin. Ensinnäkin ääni on HD Audio -piiri, jolle ei ole DOS-ajuria – DOS-pelit odottavat Sound Blasteria, jota koneessa ei ole. Toiseksi WLAN-kortin saaminen toimimaan DOSissa on vaikeaa tai lähes mahdotonta, joten langaton yhteys pitää hoitaa langallisen portin kautta erillisellä sillalla.

Molempiin on ratkaisu, mutta kumpikaan ei tule asennuslevyn mukana.

Ohjelmistot

OhjelmaRooli
FreeDOSAvoimen lähdekoodin DOS-yhteensopiva käyttöjärjestelmä
VSBHDASound Blaster -emulointi HDA-, AC97- ja SBLive-äänipiireille
JEMMMuistilaajennin, jota VSBHDA tarvitsee
4GMGSMT.SF2Soundfont Sound Blaster -CD:ltä, antaa MIDI-soittimille äänen
L1EPKT.EXEPacket driver Atheros L1 Gigabit Ethernet -ohjaimelle (1.2.613.13)
mTCPTCP/IP-sovellukset DOSille

1. FreeDOSin asennus

Koneessa on USB 2.0 -portit, joten latasin FreeDOS 1.4 FullUSB -levykuvan ja tein USB-tikusta asennusmedian. Tämä oli projektin helpoin vaihe: asennus meni läpi ilman ongelmia, eikä yhtään kikkailua tarvittu.

Nyt FreeDOS käynnistyy. Seuraavaksi vaikeampi osuus.

2. Ääni: Sound Blaster -emulointi

VSBHDA huijaa DOS-ohjelmia luulemaan, että koneessa on Sound Blaster, ja ohjaa äänet oikeasti HD Audio -piirille. Se tarvitsee kuitenkin toimiakseen muistilaajentimen, joten JEMM asennetaan ensin.

Latasin JEMM-tiedostot projektin julkaisusivulta ja sijoitin ne kansioon C:\Freedos\Drivers\JEMINA\. Polku näkyy seuraavan kohdan asetuksissa.

FDCONFIG.SYS: oma käynnistysvalinta

FreeDOSin käynnistysvalikko määritellään tiedostossa FDCONFIG.SYS. Tein sinne oman kohdan, joka käynnistää koneen VSBHDA-tuen kanssa.

Tiedosto näyttää ensisilmäyksellä sekavalta, joten sen lukusäännöt lyhyesti:

  • MENU n - teksti määrittelee valikkokohdan numero n
  • rivin alussa oleva numerosarja rajaa rivin koskemaan vain noita valikkokohtia – esimerkiksi 1236?DOS=HIGH pätee kohtiin 1, 2, 3 ja 6
  • ! rivin alussa tarkoittaa, että rivi pätee kaikkiin valikkokohtiin
  • MENUDEFAULT=6,5 käynnistää kohdan 6 automaattisesti viiden sekunnin kuluttua

Eli käytännössä kohta MENU 6 on se, jonka lisäsin, ja MENUDEFAULT tekee siitä oletuksen.

SET DOSDIR=C:\FreeDOS

!COUNTRY=001,858,C:\FreeDOS\BIN\COUNTRY.SYS
!LASTDRIVE=Z
!BUFFERS=20
!FILES=40
!MENUCOLOR=7,0

MENUDEFAULT=6,5
MENU 1 - Load FreeDOS with JEMMEX, no EMS (most UMBs), max RAM free
MENU 2 - Load FreeDOS with JEMMEX (more compatible)
MENU 3 - Load FreeDOS with JEMM386 (Expanded Memory)
MENU 4 - Load FreeDOS low with some drivers (Safe Mode)
MENU 5 - Load FreeDOS without drivers (Emergency Mode)
MENU 6 - Load Freedos with VSBHDA

1236?DOS=HIGH
1236?DOS=UMB
1236?DOSDATA=UMB

1?DEVICE=C:\FreeDOS\BIN\JEMMEX.EXE NOEMS X=TEST I=TEST NOVME NOINVLPG
2?DEVICE=C:\FreeDOS\BIN\JEMMEX.EXE NOEMS X=TEST NOVME NOINVLPG
34?DEVICE=C:\FreeDOS\BIN\HIMEMX.EXE
3?DEVICE=C:\FreeDOS\BIN\JEMM386.EXE X=TEST NOVME NOINVLPG
6?DEVICE=C:\Freedos\Drivers\JEMINA\JEMMEX.EXE NOEMS NOVME

REM 1236?DEVICEHIGH=C:\FreeDOS\BIN\LOGGER.COM COLOR 256 XMS MONO 128 XMS

126?SHELLHIGH=C:\FreeDOS\BIN\COMMAND.COM C:\FreeDOS\BIN /E:1024 /P=C:\FDAUTO.BAT
345?SHELL=C:\FreeDOS\BIN\COMMAND.COM C:\FreeDOS\BIN /E:1024 /P=C:\FDAUTO.BAT

Ajurin lataus käynnistyksessä

FDCONFIG.SYS osoittaa käynnistystiedostoksi FDAUTO.BAT:in, joka on FreeDOSin vastine AUTOEXEC.BATille. Sinne riittää kaksi riviä, jotka siirtyvät VSBHDA:n kansioon ja ajavat sen oman käynnistysskriptin:

CD \FREEDOS\DRIVERS\VSBHDA
start.bat

Efektit soivat, musiikki ei

Tässä kohtaa tuli projektin ainoa oikea jumi. Ääniefektit toimivat heti, mutta musiikki oli täysin hiljaa.

Kokeilin ajaa UNINST.EXE:n, joka tulee VSBHDA:n mukana ja poistaa käytössä olevan ääniajurin muistista, ja asensin ajurin sen jälkeen uudelleen. Sen jälkeen sekä efektit että musiikki toimivat.

En osaa sanoa, mistä tämä tarkalleen johtuu, mutta lopputulos on toistettava: ilman tätä poisto–uudelleenasennus-kierrosta musiikki ei soi lainkaan. Siksi alla olevassa start.bat-tiedostossa ajuri ladataan kahteen kertaan – se ei ole vahinko eikä turha rivi, vaan se mikä saa musiikin soimaan.

Lopullinen start.bat

@echo off
rem run vsbhda

rem --- 1. lataus ---
jload -q qpiemu.dll
jload -q jhdpmi.dll
lh hdpmi32i -x2

set blaster=A220 P330 I7 D1 H5 T6

SET SOUNDFONT=C:\SOUND\4GMGSMT.SF2
vsbhda.exe /VOL7
uninst.exe

rem --- 2. lataus: ilman tata musiikki ei soi ---
jload -q qpiemu.dll
jload -q jhdpmi.dll
lh hdpmi32i -x2

set blaster=A220 P330 I7 D1 H5 T6
SET SOUNDFONT=C:\SOUND\4GMGSMT.SF2
set mtcpcfg=C:\net\mtcp\samples\sample.cfg

vsbhda.exe /VOL7

Rivi set blaster=A220 P330 I7 D1 H5 T6 on tuttu BLASTER-ympäristömuuttuja, jota DOS-pelit lukevat löytääkseen äänikortin: portti 220h, MIDI-portti 330h, IRQ 7 ja DMA-kanavat 1 ja 5. SOUNDFONT puolestaan osoittaa siihen soundfonttiin, jolla MIDI-musiikki soitetaan.

Toimii hyvin! Tässä video:

3. Verkko: packet driver ja mTCP

DOSissa verkkokortti otetaan käyttöön packet driverilla – pienellä TSR-ohjelmalla, joka jää muistiin ja tarjoaa muille ohjelmille yhtenäisen rajapinnan korttiin.

Packet driver

En odottanut tälle koneelle löytyvän ajuria lainkaan, mutta sopiva paketti löytyi packetdriversdos.net-sivustolta – ja yllätyksekseni se toimi heti. Siirsin ajurin koneelle ja ajoin sen näin:

L1EPKT.EXE 0x60

Parametri 0x60 on keskeytysvektori, johon ajuri asettuu. Se kannattaa painaa mieleen, koska sama numero tarvitaan seuraavassa kohdassa.

Verkkoyhteys toiminnassa FreeDOSissa

mTCP

Packet driver hoitaa vain kortin – varsinaiset verkkotyökalut tulevat erikseen. mTCP on Michael Brutmanin kokoelma TCP/IP-sovelluksia DOSille, ja mukana tulevat muun muassa DHCP-asiakas, FTP-asiakas ja -palvelin, HTGET tiedostojen hakemiseen webistä, PING, netcat ja IRC-asiakas IRCjr.

mTCP etsii asetustiedostonsa MTCPCFG-ympäristömuuttujasta, ja siihen kuuluu antaa tiedoston koko polku, jotta työkalut löytävät sen mistä hakemistosta tahansa. Tämä on se rivi, joka näkyy jo edellä start.bat-tiedostossa:

set mtcpcfg=C:\net\mtcp\samples\sample.cfg

Asetustiedostoon tarvitaan vähintään PACKETINT, joka kertoo mTCP:lle mistä packet driver löytyy. Sen arvo on sama 0x60, jolla ajuri edellä ladattiin:

PACKETINT 0x60

Jos verkossa on DHCP-palvelin, loput asetuksista saa ajamalla DHCP.EXE, joka hakee osoitteen ja kirjoittaa saadut arvot suoraan asetustiedostoon. Sen jälkeen esimerkiksi PING.EXE ja HTGET.EXE ovat käytettävissä.

4. Kesken: WLAN-silta

Koska WLAN-kortti ei DOSissa toimi, langaton yhteys pitää tuoda koneen Ethernet-portin kautta. Suunnitelma on rakentaa silta seuraavista osista:

  • Raspberry Pi Zero 2 W
  • A-Link Gigabit Ethernet USB -sovitin

Pi ottaa yhteyden WLAN-verkkoon ja jakaa sen eteenpäin USB-Ethernet-sovittimen kautta, jolloin Eee PC näkee sen tavallisena langallisena verkkona eikä tiedä langattomuudesta mitään.

Tämä osio on vielä kesken – päivitän ohjeet tähän joskus. Silta on kuitenkin pystyssä ja käytän sitä myös Xbox Originalin kanssa.

Yhteenveto

Vanhasta netbookista sai yllättävän käyttökelpoisen DOS-koneen. Kaksi asiaa vaativat oikeasti työtä: ääni, jossa nykyaikainen HD Audio piti saada esittämään Sound Blasteria, ja verkko, jossa piti löytää juuri oikea packet driver.

Ääniongelman ratkaisu – ajurin lataaminen kahdesti – on sellainen, jota ei löydy mistään ohjeesta. Jos joku muu törmää samaan hiljaiseen musiikkiin VSBHDA:n kanssa, kannattaa kokeilla UNINST.EXE:ää ja uudelleenlatausta ennen kuin luovuttaa.