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.

- 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
| Ohjelma | Rooli |
|---|---|
| FreeDOS | Avoimen lähdekoodin DOS-yhteensopiva käyttöjärjestelmä |
| VSBHDA | Sound Blaster -emulointi HDA-, AC97- ja SBLive-äänipiireille |
| JEMM | Muistilaajennin, jota VSBHDA tarvitsee |
| 4GMGSMT.SF2 | Soundfont Sound Blaster -CD:ltä, antaa MIDI-soittimille äänen |
| L1EPKT.EXE | Packet driver Atheros L1 Gigabit Ethernet -ohjaimelle (1.2.613.13) |
| mTCP | TCP/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 - tekstimäärittelee valikkokohdan numero n- rivin alussa oleva numerosarja rajaa rivin koskemaan vain noita valikkokohtia –
esimerkiksi
1236?DOS=HIGHpätee kohtiin 1, 2, 3 ja 6 !rivin alussa tarkoittaa, että rivi pätee kaikkiin valikkokohtiinMENUDEFAULT=6,5kä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.

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.