Számítógép a zsebben - 25 éve?

Mi van a zsebemben? Számítógép! No jó, de mennyi?

Ez a vicc talán egyidős az első mikroszámítógépekkel, de menyire volt vajon időszerű akkoriban? Az S-100-as busz (IEEE696) és az Intel 8080-as processzor 1974-es megjelenésével elkezdődhetett a mikroszámítógép-forradalom, kezdve az Altair 8800-al (jóllehet mikroprocesszoros gépeket már korábban is építettek, az i4004 1971-ben jelent meg). Szintén 1974-ben dobta piacra a HP a HP-65-öt, az első programozható zsebszámológépet (a CPU több chipes áramkör, a memória 100 lépés és 9 regiszter, programok betöltése és kimentése mágneskártyákra). 8 évvel később, 1982-re a zsebszámítógépek, avagy pocket computerek teljesítménye asztali társaikéval vetekedett. Jelen cikk alanya egy Sharp PC1247, 1982-ből.

Sharp PC1211 (1980)
[I]

Sharp PC1211

[/I]

A Sharp a PC vonalat a PC1210-el kezdte 1980-ban, a hagyományos kialakítást 90 fokkal elforgatta, és egy nagy alfanumerikus kijelzőt tett felülre, a tudományos funkciók gombsorát pedig egy qwerty billentyűzetre cserélte. A gép két (!) 256 kHz-n járó 4 bites processzort kapott, a CMOS technológiával készült SC43177-et és az SC43178-at, és így az első multiprocesszoros tenyérgép is lett, jóllehet ennek az elrendezésnek az oka csak a ROM méretének megnövelése, hogy a BASIC interpreter beférjen, és a két CPU külön feladatot lát el. A RAM mérete 896 byte, 400 lépés és 50 regiszter, vagy inkább változó. A kijelző 24 karakteres 5x7-es mátrixon.

Hirdetés

Kívül

A rövid történelmi áttekintés után nézzük meg közelebbről a PC1247-et! A gépet egy rácsúsztatható műanyagfedél védi, a gép méretei 70x135x9.5mm, tömege 95 gramm. A fedelet levéve maga a készülékház alumíniumból van, a balra fent található kijelzőt enyhe kidudorodás védi a karcolástól, cserébe a barna festék kopik ezen a ponton. A kijelző egy sorban 16 alfanumerikus karaktert jelenít meg egy 5x7-es mátrixban, grafikus képessége nincs, viszont engedélyez egy 1x80-as virtuális felbontást, természetesen görgetéssel. A polárszűrő enyhén zöldes árnyalatú, a kijelző háttérvilágítással nem rendelkezik, de már kevés fénnyel is olvasható. A kijelző alatt egy 29 gombból álló qwerty kiosztás van 10x3-as mátrixban, az Enter dupla hosszúságú, de a Space szimpla. Minden gombnak van második funkciója, a felső sorban ez írásjeleket jelent, az alsóban pedig utasításokat. A gép jobb oldalát a nagyobb méretű gombokból álló numerikus blokk uralja, ami praktikus, hiszen elsősorban számokkal fog dolgozni a futtatott programunk is, ha felhasználó által bevitt adatra van szüksége. A numerikus blokkon is 10 gombnak van második funkciója. A kiosztás összesen 53 gombot számlál. A jobb felső sarokban végül a válltó és szerkesztőgombok vannak. Jobb oldalra fordítva a gépet az LCD kontrasztállítóját találjuk, baloldalon pedig a 11 pines kommunikációs portot, mellyel a nyomtatóval vagy a kazettás adattárolóval kommunikálhat. A beépített BASIC nyelv kötöttségei miatt a port közvetlen címzése nem megoldható, így a fenti funkciókon túl másra nem használható. A gép alján csak a Reset gomb található, valamint a nyomtatóhoz való rögzítéskor használt rögzítőpánt. A gépet a szerkesztőblokk feletti kétállású kapcsolóval lehet életre kelteni.

Belül

Belülről a PC1247 még inkább elüt a nagy elődtől. A hátlap két csavarját eltávolítva csak az elemekhez férünk hozzá (2x2032 3V), melyek 75 óra működést tesznek lehetővé. Az igazi hátlap itt van, és 8 csavar rögzíti. Ennek oka nem a megalománia, hanem az LCD és a gombsor rögzítését is ezek a csavarok oldják meg. Szedjük is ki őket! A NYÁK szabaddá válásakor csak 3 IC-t látunk, ennyi alkotja a PC1247-et. Rögtön középen a CPU található, ami egy SC61720D03-as 4 bites CMOS proci, 1.024 MHz-n, a fedélzetén pedig 24 kByte ROM-al, benne a BASIC interpreterrel, a képernyőt, a billentyűzetet, a kommportot és a ciripelőt vezérlő áramkörökkel. Egy komplett rendszerhez már csak a RAM hiányzik, amit tőle jobbra két HM6116 alkot, mindkettő 2048 byte kapacitású, így összesen 4 kByte áll a felhasználó rendelkezésére, bővítésre nincs mód. A NYÁK teljes másik oldalát a billentyűzet elektronikája foglalja el, ezek hagyományos fémtappancsos gumigombok, olyanok, amiket a mai napig az olcsó kalkulátorokban használnak.

Használat

E rövid ismerkedés után akár be is kapcsolhatnánk a gépet! A kijelzőn a ’>’ prompt fogad, a rendszer természetesen rögtön elindul. Ameddig elem van a készülékben, a memória tartalmát kikapcsolt állapotban is megőrzi, sőt, a változókat és a regisztereket is, tehát ha kikapcsolás előtt az éppen futó programot a BRK, azaz a végrehajtás megszakító gombbal állítottuk le, és megjegyeztük az aktuális sor számát, most egy RUN [sorszám] paranccsal az folytatható. A PC1247 két üzemmódban működhet, ezek a RUN és a PRO. A RUN üzemmódban a beírt parancsok rögtön végrehajtódnak, ezért nincs is szükség sorszámozásra. Egymás után több parancs is végrehajtható, ezeket kettősponttal kell elválasztani, nem használhatóak viszont feltételek (IF A>B THEN PRINT A), ugrások (GOTO 10), ciklusok (FOR I=1 TO 10:PRINT I:NEXT I), szubrutinok (GOSUB 10), de képes egy kifejezés igazságtartalmát megvizsgálni (A + B > 6, {I=1;H=0}). Használható az összes matematikai funkció, mely trigonometrikus és tudományos függvényeket is tartalmaz, sőt egy véletlenszám generátort is. Tetszőleges zárójelezést használhatunk, nem veremgép lévén nem köt a fordított lengyel forma. A gép megjegyzi az utoljára bevitt parancsot, és az eredmény kiszámítása után a -> gombbal szerkeszthetjük azt, visszamenőleg azonban nem emlékszik az ezt megelőző lépésekre. Szabadon használható a 26 egybetűs változó (A~Z), mind 8 byte-ot foglalhat (64 bit), értékadás csak az egyenlőség bal oldalára vonatkozik, minden egyéb esetben kifejezésként értelmezi a gép, és logikai eredményt ad (a = 16 + b, az eredmény 16+b, de a – 16 = b eredménye 1 ha igaz, 0 ha hamis). A 26 változón túl 26 tömb is rendelkezésünkre áll, melyek egy vagy kétdimenziósak lehetnek, minden dimenzió legfeljebb 256 elemű lehet, beleértve a 0. elemet is. A tömbök dinamikusan foglalják a memóriát, futás közben létrehozhatók és törölhetők. A tömbök első 26 eleme elmentődik futtatás megszakítás vagy kikapcsolás esetén, de e felett minden adat elvész. A felhasználó számára elérhető 3326 byte könnyen elfogy, ezért érdemes körültekintően bánni a nagy tömbökkel. A memória állapota a MEM paranccsal kérhető le. A 3326 byte persze nem 3326 beírható betűt jelent, mivel a PC1247 minden BASIC kulcsszót 1 byte-on tárol, minden karaktert 6 biten (4 karakterből egy ajándék :), és a szóközöket csak idézőjelek közt jegyzi meg. Ezt azért teheti meg, mert minden változónév kötelezően egybetűs. Lehetőség van továbbá 26 sztringes változó használatára is (A$~Z$), ezek 7 karaktert jegyeznek meg (egy 16 karakteres kijelzőn ez nem egy nagy érvágás), és ugyanúgy vannak sztring-tömbok is, melyek érdekessége, hogy ezekben a sztingek hossza a memória rovására akár 80 karakter is lehet. Ez a méret azonban nem ajánlott, mivel a szting-műveletek elvégzésére fenntartott puffer is ekkora, azaz egy 80 karakteres sztring nem összehasonlítható, kereshető, bővíthető, úgy mint a sima sztringek (”10” + ”15” = ”1015”, ”AB” < ”BA”). A gép csak a nagybetűket ismeri. Az a() és a$() tömböknek nincsen nulladik elemük. Most, hogy megismerkedtünk a PC1247 sajátosságaival, neki is állhatunk programozni. Ehhez át kell lépni a PRO módba a zöld színű MODE gomb megnyomásával. A módot az LCD alján egy kis piktogram jelzi.

Programozás

PRO módban a legfeljebb 80 karakteres parancs a beírást követően nem hajtódik végre, így hacsak nem látjuk el sorszámmal, hibajelzést kapunk. A sorszámok 1-999-ig tartanak, duplikáció esetén a régebbi sor törlődik, de egy sor több utasítást tartalmazhat ’:’-al szeparálva. A sorszámok mindig 2 byteot foglalnak. Programjaink automatikusan mentésre kerülnek, de felesleges a sorszámok megjegyzésével bajlódni, 18 program kaphat egyféle gyorsindító gombot, a következő kóddal:[sorszám]:”[gyorsgomb]”:[program…
A gyorsgomb a qwerty gombsor alsó két sora lehet, beleértve az ’=’ és a szóköz gombokat. A gyorsgombok RUN módban a DEF gombbal együtt használva indítják a kódot. A RUN parancs nem működik PRO módban. PRO módban a szerkesztés az utoljára végrahajtott sornál kezdődik, a fel és le nyilakkal lapozhatunk, a <- és -> gombokkal editálhatunk, de a módosítások csak az ENTER lenyomása után kerülnek mentésre, ha tehát olyat változtattunk meg, amit nem akartunk, a fel vagy le gombokkal visszavonhatjuk a szerkesztést. A beépített BASIC nyelv 85 kulcsszót ismer, vezérlési szerkezetek közül a CHAIN, FOR-TO-STEP-NEXT, IF-THEN, GOSUB, GOTO, ON, RETURN, STOP és az END használható, ki és bemenetre a PRINT, INPUT, INKEY$, DATA, READ, WAIT, USING, PAUSE és a kazettához és nyomtatóhoz használt variánsok, matematikai funkciók az ABS, ACS, ASN, ATN, COS, DEG, DMS, EXP, INT, LOG, LN,PI ,RND, SGN, SIN, SQR, TAN, sztring-funkciók a +, =, >, <, <>, ASC, CHR$, LEFT$, LEN, MID$, RIGHT$, STR$, VAL, és akadnak olyan finomságok is, mint a programok levédését szolgáló PASS. Az egyes vezérlési szerkezetek 10 mélységig ágyazhatók egymásba, a FOR-NEXT 5.

Kommunikáció

A gép bal oldalán látható 11 pines port nem szabványos, de dokumentált. A BASIC interpreter csak kazetta és nyomtató kezelésére van felkészítve, szerencsére megfelelő eszközökkel elhitethetjük, hogy a portra kötött eszköz egy magnó, és ekkor lehet küldözgetni a jeleket, akár 9600 baud sebességen. A port kiosztása 1: MT2, 2: GRD, 3: VCC 6V, 4: Busy, 5: Data Out printer, 6: X Out Tape, 7: X In Tape, 8: Data In, 9: ACK, 10: IO2, 11: IO1.

Teljesítmény

A PC1247 teljesítményének leméréséhez egy egyszerű és közismert algoritmust használtam, mely a királynő-probléma n=8 esetére keresi meg az első megoldást. A programot összehasonlítás végett lefuttattam egy, a tesztünk alanyával egykorú gépen, a jó öreg C=64-en is, mindkettő 1982-es. Mindkét rendszer processzora 1 MHz-n jár (a PAL-os C=64 egy picit lassabb). A program gyakorlatilag változtatás nélkül vihető át a PC1247-ről a C=64-re.

10 X=0
15 S=0
20 R=8
30 DIM A(R)
40 IF X=R THEN 180
50 X=X+1
60 A(X)=R
70 S=S+1
80 Y=X
90 Y=Y-1
100 IF Y=0 THEN 40
110 T=A(X)-A(Y)
120 IF T=0 THEN 140
130 IF X-Y<>ABS(T) THEN 90
140 A(X)=A(X)-1
150 IF A(X)<>0 THEN 70
160 X=X-1
170 IF X<>0 THEN 140
180 PRINT S
190 END

A fenti program helyes kimenete 876. Mindkét gép sikeresen lefuttatta, a PC1247 163mp alatt számolta ki az eredményt, a C=64-nek erre elég volt (nevéhez méltó módon) 64mp, ami pont 2,5-szer jobb idő.

Az igazsághoz hozzátartozik, hogy ha ugyanezt a programot a C=64 gépi kódjában írjuk be, a program kevesebb, mint 1mp alatt lefut, helyes eredménnyel (a MOS 6510 kapacitása mellesleg 0.43 MIPS). A PC1247 azonban ritkán kell ilyen bonyolult algoritmussal dolgozzon, és a terepmunkáknál, ahol nincs kéznél nagyobb teljesítményű számítógép, és ami a PC1247 fő célterülete ez az idő még elfogadhatónak számít, ráadásul a C=64 gépi kódú programozása sem triviális, így a kis zsebszámítógépnek nincs szégyenkeznivalója, a céljának megfelel (ne feledjük, hogy ezt a teljesítményt egy 4 bites CPU produkálja a C=64 8 bitesével szemben).

Tapasztalatok

A PC1247 egy teljesen korrekt zsebszámítógép, elsősorban egyszerűbb számolásokra érdemes használni, de komolyabb feladatok megoldása is lehetséges vele. Terepmunkánál hasznos társ, akár még napjainkban is, hiszen ugyan egy PDA vagy mobiltelefon teljesítménye sokszorosa a PC1247-ének, de nem programozható (persze vannak kivételek). A használata nem kimondottan kényelmes, elsősorban az apró gombok miatt, és néha jó lenne egy háttérvilágított és nagyobb kijelző, de ne legyünk telhetetlenek, ez mind a kis mérettel jár. Kimondottan strapabíró jószág, és a 75 órás üzemidővel semmi nem veheti fel a versenyt. A 11 pines kommunikációs port csak trükkökkel vezérelhető, de megoldható saját fejlesztésű hardware használata. Nem véletlenül örvendett nagy népszerűségnek a Sharp PC szériája, melyet a Tandy Radio Shack és több más, kisebb cég is árult szerte az egész világon.

Ideje aktualizálni a viccet: „Mi van a körmöm alatt? Számítógép! No jó, de mennyi?”