Hewlett-Packard 16C
A programozói számológépek fejlesztésének és elterjedésének végül a tudományos számológép folyamatos, a gyártók egymást felüllicitáló típusai vetettek véget: egyre több számológépbe került bele alapból a számrendszerek kezelése, vagy a logikai műveletek elvégzésének lehetősége. Másrészt a számítógépek programozása az új fejlesztőrendszerekkel egyre könnyebbé vált, nem volt tehát szükség külön programozói számológép-típusra.
Gyártó: | Hewlett-Packard Corporation (USA) |
Gyártási év: | 1982-89 |
Méret: | 12,8×7,9×1,5 cm |
Tömeg üzemkészen: | 114 g |
Jelleg: | programozható |
Kapacitás: | 16/7+2 számjegy (belső pontosság) |
Működési mód: | RPN |
Regiszterek: | 4 általános (művelet-tárolással) max. 406 memória (aritmetikával) 6 jelző |
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 BSbackspace funkció: a tévesen beütött számjegyek egyenként törölhetők |
Kijelző: | 10+1 digites LCD |
Tápellátás: | 3×LR44 gombelem |
Programozási mód: | összevont billentyűkód-tárolású |
Programkapacitás: | max. 203 lépés |
A gép használata
A számológépnek hatféle üzemmódja van: négy az egyes számrendszereknek megfelelő, csak egész számokkal való számításokra alkalmas normál üzemmód (a HEX, DEC, OCT, BIN gombokkal állítható be); külön üzemmód szolgál a csak tizes számrendszerben megvalósított lebegőpontos számolásra (f FLOAT), illetve a programozásra, mely a g P/R gombsorozattal érhető el. A gép használata nagyrészt azonos a többi C sorozatú géppel, és a legtöbb Hewlett-Packard típussal is, a különbségekre lentebb kitérünk.
A normál üzemmódok mindegyikében van lehetőség a kijelzett számot úgy átváltani más alapra, hogy az üzemmódot nem változtatjuk meg, ezt az f és a HEX, DEC, OCT, BIN
gombokkal végezhetjük el. Azt, hogy milyen üzemmódban vagyunk, a szám után álló jel mutatja (h - hexadecimális, d - decimális, o - oktális, b - bináris).
A számábrázoláshoz beállíthatjuk a szóhosszt is, azaz hogy hány biten ábrázoljuk a számokat (f WSIZE). Az értéktelen nullákat alapértelmezésben a gép nem jelzi ki,
de ha lenyomjuk a g SF 3 gombokat, a tizes számrendszer kivételével a teljes szóhosszra vonatkoztatva, minden számjegy kijelzésre kerül.
A számokat a gép háromféleképpen tudja kezelni: egyrészt ahol a negatív számok az abszolútértékük egyes komplemenseként vannak ábrázolva (beállítása f SET COMPL 1'S),
illetve ahol a kettes komplemenseként (f SET COMPL 2'S), másrészt előjel nélküli, úgymond csak pozitív számok kezelésére alkalmas módban (f SET COMPL UNSGN).
Például 5 bites 1-es komplemensű előjeles számábrázolás beállításához (decimális üzemmódban) az 5 f WSIZE f SET COMPL 1'S gombok lenyomása szükséges.
Mivel a gép 64 bites szóhosszig bezárólag képes a számok kezelésére, előfordulhat, hogy nem mindegy jegy fér el egyszerre a kijelzőn. Az ilyen, nyolc jegyet megjelenítő
"ablakok" közötti váltáshoz az f WINDOW és az ablak számának lenyomása szükséges.
Egy jeggyel balra, illetve jobbra is elléptethetjük a kijelzési ablakot
a g <, ill. a g > billentyűkkel. A kijelző jobb oldalán, a számrendszert jelképező betű mellett balra, illetve jobbra kijelzett pont jelzi azt,
hogy az adott irányban további számjegyek vannak.
Vigyázzunk az igen kis szóhosszak előírásakor, mivel ilyenkor pl. tizes számrendszerben nem enged az adott szóhosszon nem ábrázolható számokat beírni, illetve
látszólag hibásan működik (pl. a 7-es gomb lenyomásakor -0 lesz a kijelzőben), és nem tudunk közvetlenül átkapcsolni nagyobb szóhosszra sem. Ilyenkor az f WSIZE 0 segíthet,
mely a legnagyobb szóhosszra állítja át a gépet.
A gépnek hat jelzőbitje is van, melyek közül az első hármat (0-2) szabadon használhatunk, míg a második hármat (3-5) a gép állítja, illetve használja.
A 3. számú vezérli az értéktelen nullák kijelzését a számok nagyobb helyiértékein: ha a jelző be van állítva, a nullák mindenképpen kijelzésre kerülnek (kivéve tizes számrendszer esetén),
míg ha törölt, akkor a tizes számrendszerbeli üzemmódhoz hasonlóan, csak az értékes jegyek jelennek meg. A 4. számú az átviteljelző,
az előjelbitbe való átvitelt jelzi, míg az 5. számú a túlcsordulás jelzője, mely a legnagyobb helyiértéken keletkező átvitelnek megfelelően áll be. A gyakorlatban
ez azt jelenti, hogy előjeles számábrázolásnál a nulla átlépésekor a 4. bit, ha a számítás eredménye túlcsordul, és ezért az előjel megváltozik, az 5. bit állítódik be.
Előjel nélküli számábrázolás esetén nyilván a két eset egybeesik, ilyenkor a két bit a túlcsorduláskor egyszerre állítódik be.
A jelzők állapotát lekérdezhetjük:
az f STATUS nyomva tartása alatt, valamint felengedése után rövid ideig a második kötőjeltől jobbra, sorrendben a 3., 2., 1. és 0. számú jelzők állapota látható;
a 4-es számú átviteljelző állapota mindenkor kijelzésre kerül (beállított értéke esetén egy "C" betű jelenik meg a kijelző alsó sorában), ugyanígy az 5. számú is
(beállított értéke esetén egy "G" betű jelenik meg).
A jelzők bekapcsolhatók a g SF és a jelző számának lenyomásakor, ugyanígy törölhetők a g CF billentyűkkel.
A négy alapműveleten felül a gép képes maradékos osztás elvégzésére is (f RMD), ekkor az X regiszterben a maradék képződik (y mod x). Lehetőség van kétszeres pontosságú
szorzás (g DBL×), osztás (g DBL÷), maradékos osztás (g DBLR) elvégzésére is, amikoris a szorzat duplaszó lesz az X és Y regiszterekben, illetve osztásnál az osztandó duplaszó, megadása szintén az x és
Y regiszterekben történik.
Az abszolútérték képzése (g ABS) - negatív számok esetén - mindenkor a megfelelő komplemens előállításával történik.
A gép által elvégezhető bitmanipulációs műveletek száma igen nagy: az f SL egy bittel balra, az f SR egy bittel jobbra tolja el, a g ASR úgy tolja el a biteket jobbra, hogy - előjeles számábrázolási üzemmódokban - az előjelbitet változatlanul hagyja. Az f RL egy bittel balra, az f RR egy bittel jobbra forgatja körbe az X regiszter bitjeit, a g RLC és a g RRC ugyanezt a műveletet végzi el, de az átviteljelző (4. jelző) közbeiktatásával. Az f RLn, f RRn, g RLCn és g RRCn ugyanezeket a körbeforgatásokat végzi el, de az Y regiszter tartalmával, az X regiszterben megadott bitszámmal. A g LJ utasítás az X regiszter tartalmát jobbra tolja el úgy, hogy a legmagasabb helyiértékekre kerüljenek, a szükséges léptetések számát az X regiszterbe írva, az eredmény az Y regiszterben keletkezik. A maszkolási utasítások (f MASKL, ill. f MASKR) a megadott számú bitet a legnagyobb, illetve legkisebb helyiértékeken 1-esre állítják be. Az X regiszterben 1-esre állított bitek számát mindenkor megkaphatjuk a g #B gombokkal. A bitenként végzett logikai műveleteket az f NOT, f OR, f AND, ill. az f XOR gombokkal érhetjük el.
Lebegőpontos üzemmódra az f FLOAT és a kívánt tizedesjegyek számának megfelelő számbillentyű lenyomásával válthatunk. Exponenciális kijelzés az f FLOAT . lenyomásával kérhető. Csak ebben az üzemmódban használható a tizedespont, illetve az exponens beírása (f EEX). A lebegőpontos ábrázolásra való váltáskor az X és az Y regiszterből előáll az X regiszter új tartalma, mely az y × 2x képletnek megfelelően számítódik ki. Például a 2 ENTER 3 f FLOAT 2 hatására a kijelzés 16.00 lesz.
A gép programozása
Programozási üzemmódba és vissza a g P/R gombsorozattal kapcsolhatunk át. Programozási üzemmódban a kijelző jobb alsó sarkában megjelenik a PRGM jelzés. A kijelzés felépítése hasonló a többi HP géphez: az első háromjegyű szám az aktuális programmutatót, a jobb oldali szám(ok) pedig az adott helyen tárolt utasításkódo(ka)t mutatják. A kódok itt is azt mondják meg, hogy a programozott billentyű hányadik sorban (tizes helyiérték), illetve hányadik oszlopban (egyes helyiérték) van. A gép maximális kapacitása 203 bájt, melyet automatikusan oszt fel programterületre és adatterületre, 7 bájtos egységenként. Az alapállapot a program törlésével áll vissza (0 lépés és 203 bájtnyi adatregiszter).Az adatregiszterek hosszát a beállított szóhossz határozza meg, de mindig a 4 többszöröse. A tárfelosztás bármikor megtekinthető az f MEM gombok nyomva tartása mellett: a P melletti szám azt mondja meg, hogy hány programlépés van még hátra a következő 7 bájtos tárfoglalásig; az r utáni szám pedig az éppen elérhető adatregiszterek számát adja meg.
Az adatregiszterek közül csak az első 32 érhető el közvetlenül, mégpedig: a 0-9-ig terjedőek a 0..9 billentyűkkel, a 10-15 közöttiek az A..F billentyűkkel, a 16-25 közöttiek a . és a 0..9 billentyűkkel, valamint a 26-31 közöttiek a . és az A..F billentyűkkel, nyilván valamelyik adatregiszter-billentyű lenyomása után. Az esetleges további adatregiszterek csak indirekt módon, az I regiszteren keresztül megcímezve érhetők el: ilyenkor az I regiszterben (melybe számot írni a STO I, onnan kiolvasni az RCL I, illetve az x regiszterrel tartalmát kicserélni az f X<>I gombokkal lehet) lévő számnak megfelelő adatregiszter érhető el az (i) jelű utasításokkal, például az I regiszterben tárolt 16-os számrendszerbeli 48-as szám után az RCL (i) gombsorozat a 72. számú adatregisztert hívja elő.
A program szerkesztése egyszerű, és azonos a többi HP gépnél megszokottal: az SST egy lépéssel előre, a g BST egy lépéssel vissza állítja a programmutatót. Tetszőleges pozícióra a GTO . és a sorszám megadásával ugorhatunk. Lépés törléséhez a BSP gomb használható, ilyenkor a rákövetkező utasítások automatikusan egy pozícióval előrébb lépnek, illetve hasonló módon egy pozícióval hátrébb, amikor új utasításokat programozunk.
A programban 16 címke helyezhető el, az LBL és a címkének választott billentyű (0..9, A..F) lenyomásával. Ezekre a pozíciókra a GTO és a címke billentyűjének programozásával (lenyomásával) ugorhatunk. Alprogramokra ugrást hasonló módon, a GSB billentyűvel tudunk kérni, ilyenkor az RTN utasítás a vezérlést a hívás utáni programlépésre adja vissza, egyébként az RTN utasítás szolgál a főprogram végének megjelölésére. Lehetőség van indirekt ugrás végrehajtására is, amikoris az I regiszterben található számú címkére történik az ugrás: programozása GTO I, ill. GSB I.
Feltételes elágazások készítéséhez tizenkétféle feltételvizsgáló utasítás helyezhető el a programban, ezek közül négy az X és az Y regisztert hasonlítja össze, négy az X és a 0 szám viszonyát vizsgálja,
illetve a jelzők beállított értékét (g F?), vagy az X regiszter adott számú bitjének 1-es értékét (g B?) vizsgálják.
Az ilyen utasítások végrehajtása a következő: ha a feltétel igaz, a program futása a szokott módon folytatódik, ha hamis, akkor viszont a rákövetkező utasítást nem hajtja végre (átugorja).
Ciklusszervező utasításból itt kétféle használható: a megszokott (g DSZ) az I regiszter értékét csökkenti, majd ha az I regiszter értéke 0 lett, kihagyja a rákövetkező utasítást.
Ezen felül a DSZ utasításnak létezik a g ISZ billentyűzéssel elérhető párja, mely az I regiszter értékét növelve végzi el ugyanazt a feltételvizsgálatot.
A program indítása történhet az aktuális pozíciótól az R/S billentyű lenyomásával, illetve adott címkétől a GSB és az A..F billentyű lenyomásával. A program futása bármely billentyű lenyomásával megszakítható. A programba elhelyezett R/S utasítás a program futását megállítja.
Példaprogram
Álljon itt egy példa a Sharp PC-1500 (PC-1500A, PC-1600, illetve a Híradástechnika PTA-4000, PTA-4000+16) zsebszámítógép LH5801 jelű processzorának átviteles összeadás utasításának szimulációjával:Lépésszám | Billentyűzés | Utasításkód(ok) |
1 | g LBL A | 43,22,A |
2 | g CLx | 43,35 |
3 | g F? 4 | 43,6,4 |
4 | 1 | 1 |
5 | STO . 1 | 44,.1 |
6 | RCL (i) | 45,31 |
7 | ENTER | 36 |
8 | RCL 0 | 45 |
9 | ENTER | 36 |
10 | RCL . 2 | 45,.2 |
11 | f SR | 42,B |
12 | f WSIZE | 42,44 |
13 | + | 40 |
14 | g CF 2 | 43,5,2 |
15 | g F? 4 | 43,6,4 |
16 | g SF 2 | 43,4,2 |
17 | + | 40 |
18 | g F? 4 | 43,6,4 |
19 | g SF 2 | 43,4,2 |
20 | RCL . 2 | 45,.2 |
21 | f WSIZE | 42,44 |
22 | f SET COMPL 2'S | 42,2 |
23 | RCL (i) | 45,31 |
24 | ENTER | 36 |
25 | RCL 0 | 45 |
26 | ENTER | 36 |
27 | RCL . 1 | 45,.1 |
28 | + | 40 |
29 | g CF 1 | 43,5,1 |
30 | g F? 5 | 43,6,5 |
31 | g SF 1 | 43,4,1 |
32 | g CF 0 | 43,5,0 |
33 | g F? 4 | 43,6,4 |
34 | g SF 0 | 43,4,0 |
35 | + | 40 |
36 | g F? 5 | 43,6,5 |
37 | g SF 1 | 43,4,1 |
38 | g F? 4 | 43,6,4 |
39 | g SF 0 | 43,4,0 |
40 | g CF 4 | 43,5,4 |
41 | g F? 0 | 43,6,0 |
42 | g SF 4 | 43,4,4 |
43 | f SET COMPL UNSGN | 42,3 |
44 | g CF 1 | 43,5,1 |
45 | g x=0 | 43,4 |
46 | g SF 1 | 43,4,1 |
47 | STO 0 | 44 |
48 | g RTN | 43,21 |
Az LH5801 CPU-nak megfelelően be kell állítani a 8 bites szóhosszt és az előjelnélküli számábrázolást:
f WSIZE
f SET COMPL UNSGN
Példa:
127 + 15, átvitel nincs
15 STO 1
1 STO I
g CF 3