EMG HUNOR 301
A gyártás 1977-ben indult, de már ekkor látható volt, hogy a különböző okok miatt korlátozottan használható típusból sürgősen el kell készíteni a továbbfejlesztett változatot, ami többek között az igencsak hiányzó háttértárat, a kisméretű kazettás magnót is tartalmazhatta volna. Az amúgy igen hasznos gép eladhatóságát a Klixon-rendszerű, nem a megbízható működéséről híres billentyűzete, a beépített hőnyomtató minősége csak tovább rontotta. A minisztériumi irányelveknek megfelelően az EMG profiltisztítási tevékenységével összefüggésben, 1979-ben a számológépgyártást - az EMG-666-os kivételével - teljes mértékben megszüntették, így a tervezett Hunor 301M típus sem készülhetett el.
Mint ahogy a képeken is jól látható, a gép belsejében tátongó üres tér a későbbi módosított változat igényeinek megfelelően, a magnó mechanikáját tartalmazta volna, ugyanígy helyet hagytak az opcionálisan beépíthető további ROM és RAM áramkörök számára is.
Gyártó: | Elektronikus Mérőkészülékek Gyára (Magyarország) |
Gyártási év: | 1977 |
Méret: | 31×48×11 cm |
Tömeg üzemkészen: | n.a. |
Jelleg: | programozható tudományos asztali |
Kapacitás: | 10/10+2 számjegy (bevitel, kijelzés és nyomtatás) 12+2 számjegy (belső pontosság) |
Működési mód: | algebrai |
CPU: | Intel i4040 |
Regiszterek: | 2 általános (művelet-tárolással) 1 konstans (művelet-tárolással) 9 zárójel (művelet-tárolással) 50 memória (aritmetikával) |
Jellemzők: | +/-előjelváltás (negatív számok közvetlen beírása) RVregisztercsere (X-Y) Fixfixpontos számkijelzés: a felsorolt számoknak megfelelő számú tizedesjegyek kijelzése (0-9) Scitudományos (exponenciális) számkijelzés Sqrnégyzetgyökvonás x2négyzetreemelés pipi (3,1415..) értéke behívható 1/xreciprokszámítás trigtrigonometrikus függvények (sin, cos, tg és ezek inverzei: arc sin, arc cos, arc tg) logexponenciális és logaritmusfüggvények (10-es és e-alapú) yxhatványozás P-Rkoordináta-átszámítások derékszögű és poláris koordinátarendszerek között |
Kijelző: | 15 digites VFD (15×NEC LD8035F) |
Tápellátás: | hálózati (220V) |
Programozási mód: | összevont billentyűkód-tárolású |
Programkapacitás: | 512 lépés |
Teszteredmények: | trigonometriai:az arcsin(arccos(arctg(tg(cos(sin(60°)))))) eredménye, referenciaérték: 60. 60.0000010297 exponenciális:a 0.999160000 eredménye, referenciaérték (első 14 jegye): 3.0068804206375×10-70 3.00688042238E-70 |
A gép használata
A Hunor 301 kétféle üzemmódban használható: futtatási (RUN) és programírási (LOAD) üzemmódban, melyek között a jobb oldali tolókapcsolóval tudunk váltani. RUN üzemmódban négyféle kijelzési mód közül választhatunk, melyek a kijelzőn mindenkor az X, az Y, ill. a K regiszter tartalmát jelenítik meg. RUN/PC állásban a kijelzőn a programszámláló aktuális állása és az ott elhelyezkedő utasításkód kerül megjelenítésre. Kézi számolásokhoz az üzemmódkapcsolót állítsuk RUN/X állásba.A gép alapvetően algebrai logika szerint működik, de a szokottól eltérően kezeli mind a műveleti, mind pedig a konstansregisztereket. A négy alapművelet, a hatványozás és a koordináta-konverzió mindkét regisztert felhasználja, és a szokott módon működnek, pl. 2 + 3 × 5 = eredménye 25. A konstansregiszter az = hatására töltődik fel, mégpedig minden esetben az X regiszter tartalmával, azaz a második operandussal. Az ismételt műveletvégzés a szokott módon végezhető (az = ismételt lenyomásával), de újabb számokkal történő műveletvégzéskor a műveleti billentyűt is működtetni kell, különben a műveletet a konstans helyett az előző művelet eredményével végzi a gép. Például: 2 × 3 = eredménye 6, a konstansregiszterbe pedig 3 kerül. = lenyomására az eredmény 18 lesz, ismételt lenyomásra 54 stb. Ha az első szorzás után csak egy 5-ös számot írunk be és lenyomjuk az = billentyűt, az eredmény 30 lesz (6×5). Furcsasága a gépnek, hogy ennél a példánál maradva, mind az Y, mind a K regiszter tartalma 5 lesz. A helyes működéshez az 5-ös számjegy beírása után a × gombját és az = billentyűt is használnunk kell, a konstansregiszterrel való szorzáshoz, az eredmény ugyanis csak ekkor lesz 15 (3×5).
A hatványozás ettől eltérően használandó, ugyanis az X és az Y regiszterben tárolt számokkal az YX billentyű lenyomásakor a hatványozást végre is hajtja. Így a 24 (egyik lehetséges) billentyűzése a következő: 2 X↔Y 4 YX. Ebből következik az is, hogy konstanssal való hatványozás a géppel nem végezhető.
A kijelzés fixpontos, vagy exponenciális lehet. Bekapcsoláskor a gép 0 tizedesjegyre csonkolja az eredményeket. A fix tizedesek számát a 2nd SDP és a megfelelő számbillentyű megnyomásával tudjuk beállítani, az exponenciális kijelzésre a 2nd SDP +/- billentyűzéssel térhetünk át, ilyenkor a kijelzés mindig 10+2 jeggyel történik.
A CLX gomb az X regiszter törli, a többit változatlanul hagyja, így tulajdonképpen a CE funkciót látja el. A C gomb a műveleti regisztereket (X, Y) törli, a konstansregisztert azonban nem, az a fentebb ismertetett módon továbbra is felhasználható.
A gép által biztosított 50 memóriaregisztert igen sokféleképpen felhasználhatjuk számításainkhoz. A memóriaregiszterbe tárolás (ST), a memóriaregiszterből való előhívás (RC),
valamint a memóriaregiszter értékével való csere (EX) alapból az X regiszter tartalmát használja fel,
de az X↔Y billentyű használatával lehetőségünk van mindezeket az X helyett az Y regiszterrel elvégezni, ugyanígy az = segítségével a K konstansregisztert használhatjuk fel.
Mind a négy alapműveletet, az INC, 2nd DEC, 1/x és x2 utasítást közvetlenül elvégezhetjük egy adott memóriaregiszter tartalmával, úgy, hogy
az eredmény a szokott módon a memóriaregiszterben (ST használatakor), az X regiszterben (RC használatakor),
vagy mind az X, mind pedig a memóriaregiszterben (EX használatakor) képződhet. Itt is használhatjuk az X↔Y, ill. az = billentyűt,
ekkor az X regiszter helyett mindenütt az Y, ill. a K regiszter tartalmát használja fel, illetve az eredmény is ott képződik (RC, EX esetén).
Indirekt címzésre is van lehetőség, az INDIR gomb lenyomásával. Ilyenkor nem az adott memóriaregiszterrel történik a műveletvégzés, hanem az adott
memóriaregiszterben tárolt számú memóriaregiszterrel. Ez legfeljebb 15-ös mélységben egymásba is ágyazható.
6 ST 05, az 5-ös számú memóriaregiszterbe tárolja el a 6 értéket.
4 ST + 47, a 47-es számú memóriaregiszterhez hozzáad 4-et és tárolja az 5-ös memóriaregiszterben, X változatlanul hagyása mellett.
3 × 6 EX X↔Y 47, a 47-es számú memóriaregiszter tartalmát az Y regiszterbe írja, az Y regiszter korábbi értékét (itt a 3-at) pedig a 47-es memóriaregiszterbe írja.
EX = INC INDIR 05, az 5-ös számú memóriaregiszterben tárolt számú memóriaregiszter (itt éppen a 6-os) tartalmához egyet hozzáad, majd az eredményt visszaírja a 6-os memóriaregiszterbe, és a K regiszterbe is.
RC = INDIR INDIR 02, a 2-es számú memóriaregiszterben tárolt számú memóriaregiszterben tárolt számú memóriaregiszter tartalmát előhozza a K konstansregiszterbe.
A 00 címen lévő memóriaregiszternek speciális szerepe van: a benne tárolt számmal jelölt memóriaregiszterbe tárolhatjuk az X regiszter értékét a SEND billentyű lenyomásával úgy, hogy a tárolás után a 00-ás memóriaregiszter tartalmát a gép eggyel megnöveli. Ez egy adott címtől kezdődően lehetővé teszi érték-sorozatok egyszerű tárolását. a 2nd CALL utasítás viszont a 00-ás memóriaregiszterben tárolt értéknek megfelelő memóriaregiszter tartamát írja be X-be, és ugyanígy hozzáad egyet a 00-ás memóriaregiszter tartalmához.
20 ST 00
2 = SEND × = SEND = SEND = SEND ...
Programozás
A program bebillentyűzése az üzemmódkapcsoló LOAD/PC állásában történik. A kijelzés az éppen soron következő programrekesz címét (a PC, azaz a programszámláló értékét), illetve az ezen a címen lévő utasítás kódját mutatja. Bekapcsolás után az összes címen 000 érték található, ez egyben a 0 számbillentyű kódja is. Ezért van szükség minden esetben a program végén egy 2nd END utasítást elhelyezni, különben az utolsó értelmes utasítás végrehajtása után folyamatosan 0-s számjegyek bevitelét hajtaná végre a gép. Számítási eredmények megjelenítéséhez elengedhetetlen a program megállítása, amelyet a START utasítással érhetünk el. Ugyanezen gomb megnyomására folytatódik a program végrehajtása. Lehetőség van a programba rövid ideig tartó szünetet tenni a 2nd Cszumma billentyűkkel, ezen idő alatt a kiválasztott regiszter tartalma látható a kijelzőn.
Programozási üzemmódban a FEED és a STEP kivételével minden billentyűfunkció programozható. Utóbbival RUN üzemmódban lépésenként hajthatjuk végre a programot, LOAD üzemmódban pedig egyesével lépkedhetünk előre a programtárban, mindig a soron következő utasítást kijelezve. A program hibakeresésénél igen hasznos funkció az, hogy megválaszthatjuk a kijelzésre kerülő regisztert: a szokványos X kijelzőregiszter mellett az Y műveleti, valamint a K konstansregiszter is kijeleztethető, RUN/PC állásban pedig a kijelzés ugyanolyan, mint LOAD/PC állásban, azaz a mindenkor végrehajtás előtt álló utasítás címét és kódját mutatja.
A 2nd H.ADD lenyomásra az aktuális programtár-címre egy START utasítás kerül beszúrásra úgy, hogy a további utasítások egy bájttal automatikusan eltolódnak.
A programban visszafelé lépkedésre nincs lehetőség, egy adott címen lévő utasítás csak a RUN üzemmódok valamelyikébe való visszakapcsolással, a JUMP lenyomásával, a cím bebillentyűzésével, majd LOAD üzemmódba való visszakapcsolással jeleztethető ki.
A C billentyű nemcsak a két műveleti regisztert (X, Y), de a programszámláló (PC) értékét is nullázza, így ez az utasítás a program elejére való ugrásra is felhasználható. Ha programba írjuk, a PC értékét nem változtatja meg.
A gép háromféle címzési módot tud kezelni a vezérlésátadó utasításoknál. A legegyszerűbb a közvetlen címzés, amikor a vezérlés a megadott háromjegyű címre adódik át. Ehhez egyszerűen be kell billentyűznünk a megfelelő címet az ugrási utasítás után. Címkézett címzés esetén egy korábban LABEL és egy tetszőleges billentyű lenyomásával megadott helyre történik a vezérlés átadása, ehhez az ugrási utasítás után az IDENT és a címke azonosító billentyűjének lenyomása szükséges. Az indirekt címzésnél az INDIR billentyűt használhatjuk, az utána megadott számú memóriaregiszterben tárolt címre történik a vezérlés átadása.
Feltétlen ugrásra a JUMP billentyű szolgál.
Feltételes elágazásokhoz nyolcféle utasítás használható, melyek az X regiszter és a 0, illetve X↔Y billentyűvel együtt használva az X és az Y regiszter viszonyát vizsgálják. Ha a feltétel teljesül (igaz), az utasítás részeként megadott címre adódik át a vezérlés, egyébként pedig a végrehajtás az elágazási utasítás után folytatódik. Így pl. a 2nd IF< X↔Y 050 hatására a gép akkor ugrik a 050-es címre, ha az X regiszter tartalma kisebb, mint az Y regiszter tartalma.
Alprogramok (szubrutinok) készítésére is van mód, ezek 15-ös mélységig egymásba is ágyazhatók. Az alprogramra történő ugrás a 2nd SUBR utasítással és az utána billentyűzött címmel történik, az alprogramból való visszatérést az alprogram végén elhelyezett 2nd BBS utasítás idézi elő.
A feltételes elágazások és az alprogramok meghívása kombinálható, azaz pl. az IF= 2nd SUBR IDENT + hatására a "+" gombbal megcímkézett alprogram végrehajtása következik, ha az X értéke 0.
A programok futtatása a RUN üzemmódok valamelyikében történhet, a START gomb lenyomására. A futás az END utasítás eléréséig tart. Lehetőség van egy megadott címig való futtatásra is, ehhez a 2nd H.ADD billentyűket kell lenyomni, majd bebillentyűzni a kívánt címet. Az ezután megnyomott első START billentyű a programot a megadott címig futtatja, majd megáll. Pl. a 2nd H.ADD IDENT 2 a 2-es címkéjű utasításig hajtja végre a programot.
A program, illetve a számítások futtatása alatt a kijelzőn egy "P" jelzés látható. Mivel kikapcsoláskor a gép a teljes tártartalmat elfelejti, a használt programot mindig be kell billentyűzni. Hosszabb programok esetén emiatt igen hasznos a 2nd C∑ funkció, mely egy ellenőrzőösszeget képez, és ezt az X regiszterbe írja. Ha a korábbi bebillentyűzésnél kapott érték és az aktuális különbözik, valahol téves billentyűzés történt.
A gép alapkiépítésben 512 bájt programtárral rendelkezik, ez 512 utasítást tud tárolni. Az eredeti elképzelés szerint további RAM chipek beültetésével a programtárat 1024 bájtra lehetett volna bővíteni, és a bővített programtárban a BANK funkcióval programtár-területet lehetett volna adattárolásra alkalmas memóriaregiszterré alakítani.
A nyomtató
A beépített hőnyomtató 11 hétszegmenses formájú számjegyet és további 4 14-szegmenses karaktert képes kiírni. A kijelzőben látható érték kinyomtatható a PRINT billentyűvel. Soremelést a LINE billentyűvel kérhetünk. A 2nd LIST funkcióval a programtár tartalmát tudjuk kinyomtatni, az aktuális PC állástól az END utasításig bezárólag. A négy alfanumerikus karakterpozícióra külön utasítással tudunk nyomtatni: a 2nd TEXT után lenyomott négy billentyűnek megfelelő karakterek kerülnek kiírásra. Ugyanebben az üzemmódban lehetőség van speciális nyomtatási parancsok kiadására is, úgymint az X regiszter (2nd 0), az Y regiszter (2nd 1), a K regiszter (2nd 2), illetve a PC és az adott PC címen lévő utasításkód (2nd 3) az üzemmódkapcsoló állásától függetlenül történő kinyomtatására. A TEXT üzemmódból a 2nd 6 billentyűzéssel térhetünk vissza a normál üzemmódba.
Billentyű | Utasításkód | Utasításkód 2nd után | Utasításkód címkeként LABEL után | Utasításkód címkeként LABEL és 2nd után |
0..9 | 000..009 | 064..073 | 128..137 | 192..201 |
. | 010 | 074 | 138 | 202 |
+/- | 011 | 075 | 139 | 203 |
EXP | 012 | 076 | 140 | 204 |
CLX | 013 | 077 | 141 | 205 |
C | 014 | - | 142 | - |
( | 016 | 080 | 144 | 208 |
) | 017 | 081 | 145 | 209 |
÷ | 018 | 082 | 146 | 210 |
× | 019 | 083 | 147 | 211 |
- | 020 | 084 | 148 | 212 |
+ | 021 | 085 | 149 | 213 |
= | 022 | 086 | 150 | 214 |
EX | 023 | 087 | 151 | 215 |
RC | 024 | 088 | 152 | 216 |
ST | 025 | 089 | 153 | 217 |
X↔Y | 026 | 090 | 154 | 218 |
INC | 027 | 091 (DEC) | 155 | 219 |
1/X | 028 | 092 (π) | 156 | 220 |
x2 | 029 | 093 (FRAC) | 157 | 221 |
√x | 030 | 094 (INT) | 158 | 222 |
ln x | 031 | 095 (lg x) | 159 | 223 |
sin | 032 | 096 (a sin) | 160 | 224 |
cos | 033 | 097 (a cos) | 161 | 225 |
tg | 034 | 098 (a tg) | 162 | 226 |
DEG | 035 | 099 (RAD) | 163 | 227 |
RECT | 036 | 100 (POL) | 164 | 228 |
R→D | 037 | 101 (D→R) | 165 | 229 |
ex | 038 | 102 (10x) | 166 | 230 |
yx | 039 | 103 (|x|) | 167 | 231 |
SEND | 040 | 104 (CALL) | 168 | 232 |
IDENT | 041 | 105 (END) | 169 | 233 |
IFN= | 042 | 106 (IF>) | 170 | 234 |
IF= | 043 | 107 (IF<) | 171 | 235 |
JUMP | 044 | 108 (SUBR) | 172 | 236 |
BANK | 046 | 110 (SDP) | 174 | 238 |
INDIR | 047 | 111 (BBS) | 175 | 239 |
START (STOP) | 048 | 112 (C∑) (DISP) | 176 | 240 |
049 | 113 (TEXT) | 177 | 241 | |
LINE | 050 | 114 (LIST) | 178 | 242 |
Mintaprogram
LABEL 1
2nd SDP 4
START
ST INC 00
ST + 01
x2 ST + 02
2nd SDP 0
RC 00
START
RC X↔Y 00
IF= X↔Y IDENT 1
2nd SDP 4
RC 00 RC ÷ 01
START
RC 02 - ( RC 01 X2 ÷ RC 00 ) ÷ RC 2nd DEC 00 = √x
2nd END
A program kontrollösszege (2nd C∑): 1504
Kódlista:
Kijelzés (PC és utasításkód) | Billentyűk |
L 0000 129 | LABEL 1 |
0000 129 | LABEL 1 |
0001 110 | 2nd SDP |
0002 004 | 4 |
0003 048 | START |
0004 025 | ST |
0005 027 | INC |
0006 000 | 0 |
0007 000 | 0 |
0008 025 | ST |
0009 021 | + |
0010 000 | 0 |
0011 001 | 1 |
0012 029 | x2 |
0013 025 | ST |
0014 021 | + |
0015 000 | 0 |
0016 002 | 2 |
0017 110 | 2nd SDP |
0018 000 | 0 |
0019 024 | RC |
0020 000 | 0 |
0021 000 | 0 |
0022 048 | START |
0023 024 | RC |
0024 026 | X↔Y |
0025 000 | 0 |
0026 000 | 0 |
0027 043 | IF= |
0028 026 | X↔Y |
0029 041 | IDENT |
0030 001 | 1 |
0031 110 | 2nd SDP |
0032 004 | 4 |
0033 024 | RC |
0034 000 | 0 |
0035 000 | 0 |
0036 024 | RC |
0037 018 | ÷ |
0038 000 | 0 |
0039 001 | 1 |
0040 048 | START |
0041 024 | RC |
0042 000 | 0 |
0043 002 | 2 |
0044 020 | - |
0045 016 | ( |
0046 024 | RC |
0047 000 | 0 |
0048 001 | 1 |
0049 029 | X2 |
0050 018 | ÷ |
0051 024 | RC |
0052 000 | 0 |
0053 000 | 0 |
0054 017 | ) |
0055 018 | ÷ |
0056 024 | RC |
0057 091 | 2nd DEC |
0058 000 | 0 |
0059 000 | 0 |
0060 022 | = |
0061 030 | √x |
0062 105 | 2nd END |
A program használata:
RUN módba visszakapcsolás után C, majd START
Első adat beírása és START
Kijelzi a beírt adatpárok számát, egész számként.
Ha további adatot adunk meg, nyomjuk meg a START gombot. Ha a kijelzés négy tizedesjegyet mutat, írjuk be a következő adatot, majd START.
Ha befejeztük az adatok beadását, nyomjunk CLX-et és START-ot.
Ilyenkor először az átlag jelenik meg, majd a START lenyomására a korrigált szórás értékét mutatja a kijelző.
Új adatpárokkal való számításhoz először a 0 ST 00 ST 01 ST 02 C billentyűkkel állítsuk alaphelyzetbe a regisztereket.