IBM 1130 - IBM 1130
Vývojář | IBM Boca Raton |
---|---|
Výrobce | IBM |
Typ | minipočítač |
Datum vydání | 1965 |
Zaváděcí cena | Pronájem ~ 1 000 $ za měsíc, což odpovídá přibližně 8 200 $ v roce 2020 |
Přerušeno | počátku 80. let minulého století |
Jednotky odeslány | 10 000 odhadů |
Operační systém | Disk Monitor 2 (DM2) |
procesor | 16bitový adresní prostor s adresou 15 bitů |
Paměť | magnetické jádro |
Úložný prostor | Disková jednotka IBM 2310 |
Vyměnitelné úložiště | Jednodisková kazeta IBM 2515 |
Zobrazit | IBM 1627 Calcomp Plotter, IBM 2250 , volitelně |
Vstup | děrná karta , papírová páska , konzola |
Konektivita | IBM Synchronous Communication Adapter (SCA) |
Rozměry | velikost stolu: šířka 58,5 palce, hloubka 29 palců, výška 44,125 palce |
Hmotnost | 660 liber |
Marketingový cíl | malé strojírenské firmy, školy |
Zpětná kompatibilita |
přes Fortran |
Předchůdce | IBM 1620 , IBM 650 |
Nástupce | Řada IBM/1 Systém IBM/7 |
Související články | Systém řízení procesů IBM 1800 |
webová stránka | ibm1130 |
IBM 1130 Computing System, který byl zaveden v roce 1965, byla IBM nejméně nákladné je počítač v té době. Binární 16bitový stroj, byl uveden na trh na cenově citlivé, na počítače náročné technické trhy, jako je vzdělávání a strojírenství, následující desítkové IBM 1620 v tomto tržním segmentu. Typické instalace zahrnovaly 1 megabajtovou diskovou jednotku, která ukládala operační systém, kompilátory a objektové programy, přičemž zdroj programu byl generován a udržován na děrných kartách . Fortran byl nejběžnějším používaným programovacím jazykem, ale bylo k dispozici několik dalších, včetně APL .
1130 byl také použit jako inteligentní front-end pro připojení IBM 2250 Graphics Display Unit nebo jako pracovní stanice pro vzdálené zadávání úloh (RJE) připojené k sálovému počítači System/360 .
Popis
Celková výrobní série 1130 byla odhadnuta na 10 000. 1130 zaujímá místo v historii počítačů, protože (a jeho klony mimo IBM) umožnily mnoha lidem jejich první přímou interakci s počítačem. Jeho poměr ceny a výkonu byl dobrý a obsahoval zejména levné, vyměnitelné diskové úložiště se spolehlivým a snadno použitelným softwarem, který by mohl být v několika jazycích vysoké úrovně. Nízká cena (přibližně od 32 000 USD nebo 41 000 USD s diskovou jednotkou) a vyvážená sada funkcí umožňovala vývoj interaktivního programu „otevřeného obchodu“ .
IBM 1130 používá stejné balení elektroniky, nazývané Solid Logic Technology (SLT), používané v System/360 . Má 16bitovou binární architekturu, stejně jako pozdější minipočítače jako PDP-11 a Data General Nova .
Adresový prostor je 15 bitů, což omezuje na 1.130 až 32.768 16bitové slova ( 65.536 bytes ) paměti. 1130 používá paměť s magnetickým jádrem , kterou procesor adresuje na hranici slov pomocí režimů přímého, nepřímého a indexovaného adresování.
Modely
IBM implementovala pět modelů centrální procesorové jednotky 1131, primární komponenty pro zpracování IBM 1130. Model 1 až model 5 popisuje dobu cyklu základní paměti a schopnost modelu mít diskové úložiště. Písmeno A až D připojené k číslu modelu udává množství nainstalované základní paměti.
IBM 1131 Central Processing Unit váží asi 760/1050 lb (345/477 kg).
Doba cyklu paměti | |||||
---|---|---|---|---|---|
Základní paměť | 3,6 μs, žádný interní disk |
3,6 μs, plus disky |
2,2 μs, plus disky |
5,6 μs (3,6 μs: viz níže), jeden disk |
2,2 μs, žádný interní disk |
4096 slov | Model 1A | Model 2A | ——— | Model 4A | ——— |
8192 slov | Model 1B | Model 2B | Model 3B | Model 4B | Model 5B |
16 384 slov | Model 1C | Model 2C | Model 3C | ——— | Model 5C |
32 768 slov | Model 1D | Model 2D | Model 3D | ——— | Model 5D |
Model 4 byl levnější produkt s dobou cyklu 5,6 μs. Někteří kupující upgradu výkonu poznamenali, že úprava v terénu za účelem dosažení zlepšení byla překvapivě triviální.
Tiskárna IBM 1132 spoléhá na procesor 1130, nikoli na vnitřní logiku, aby určila, kdy vypálit tisková kola při jejich otáčení. Tiskárny pro model 4 běží pomaleji, ale pomalejší procesor s nimi stále nedokáže držet krok. Hardwarová příručka uvádí, že když Model 4 obsluhoval dvě přerušení nejvyšší úrovně (přerušení sloupce čtečky karet úrovně 0 nebo přerušení tiskárny úrovně 1), běželo to s rychlejším cyklem 3,6 μs. Někteří uživatelé modelu 4 by napsali falešný ovladač tiskárny, který by neodvolal přerušení tiskárny, aby těžil z vyšší rychlosti procesoru. Přerušení nižší úrovně jsou však během tohoto intervalu deaktivována, dokonce i přerušení na konci karty (úroveň 4) ze čtečky karet 1442.
Doplňkové produkty
IBM 1800 , oznámil v listopadu 1964, je předchůdce IBM 1130 pro řízení procesů aplikací. Pro tři rejstříkové rejstříky používá spíše hardware než jádrovou paměť a obsahuje dvě další instrukce (CMP a DCM) plus další možnosti přerušení a I/O . Jedná se o nástupce IBM 1710 , protože IBM 1130 je nástupcem IBM 1620 .
IBM 1500 je multi-user vzdělávací systém založený kolem buď IBM 1130 nebo IBM 1800. To se může připojit k až 32 studentů pracovních stanic, každý s různými audio-vizuální schopnosti.
Jiné než tyto, IBM nevyráběla žádné kompatibilní nástupnické systémy 1130. IBM System/7 je systém pro řízení procesů a systém v reálném čase a IBM Series/1 je 16bitový minipočítač pro všeobecné použití, oba s odlišnou architekturou od 1130 a od sebe navzájem.
Chronologie
- 11. února 1965 - IBM představuje 1130 (modely 1A, 1B, 2A a 2B). Ohlášena je také tiskárna IBM 1132, nejlevnější online počítačová tiskárna, jakou kdy IBM v té době oznámila.
- Čtvrté čtvrtletí 1965 - První dodávky zákazníkům začínají ze závodu v San Jose.
- 31. března 1966 - IBM představuje vzdělávací systém IBM 1500.
- Duben 1966 - lodě IBM 1800.
- 9. srpna 1966 - IBM uvádí na trh adaptér synchronní komunikace 1130, který umožňuje připojení malého systému 1130 běžnými pronajatými telefonními linkami k jakémukoli modelu systému IBM System/360 a funguje jako komunikační terminál pro něj.
- 17. dubna 1967-Je oznámeno čtyřsměrné rozšíření modelu 1130 (modely 2C, 2D, 3B, 3C a 3D), které zahrnuje:
- Pětinásobek diskového úložiště a čtyřnásobek základní paměti;
- Další rychlost zpracování je téměř o 40 procent rychlejší než dříve;
- Stále rychlejší periferní zařízení, včetně čtečky optických značek;
- Vylepšený balíček komerčního programování.
- Leden 1968 - Zahájeny první dodávky 1130 modelů 2C, 2D, 3B, 3C a 3D.
- Červenec 1968 - Závod Boca Raton začíná expedovat 1130.
- 22. července 1971 - 1130 Modely 4A a 4B jsou představeny na nových úrovních ekonomiky.
- Září 1971 - První zákaznické zásilky začínají na modelu 1130 Model 4.
- 31. května 1972 - Byly oznámeny modely 1C, 1D, 5B, 5C a 5D.
- 1973 - Xerox 530 byl uveden na trh jako možný nástupce zákazníků IBM 1130. Objednávky na Xerox 530 byly od ledna 1974 považovány za „povzbudivé“.
Software
Aby se maximalizovala rychlost a šetřilo místo, operační systém a kompilátory jsou psány výhradně v jazyce sestavení a používají techniky, které jsou dnes vzácné, včetně míchání kódu a dat a také samočinného modifikace kódu .
Většina uživatelského programování se provádí ve Fortranu . Kompilátor 1130 Fortran může běžet na počítači s pouze 4 096 slovy jádra - i když se kompilovaný program na takový stroj nemusí hodit. V tomto víceprůchodovém kompilátoru každá „fáze“ zpracuje celý zdrojový program a provede další krok ke strojovému kódu. První fáze například čte zdrojové příkazy do paměti, zahodí řádky komentářů, odstraní mezery kromě textových literálů, zřetězí spojovací řádky a identifikuje popisky. Kompilátor je k dispozici ve verzi rezidentní na disku i na 8kanálové děrné papíře nebo děrných kartách.
Nejpoužívanějším operačním systémem pro 1130 je Disk Monitor System verze 2 (DM2) představený v roce 1967. DM2 je jednoúlohový dávkově orientovaný systém. Vyžaduje systém s minimálně 4 KB základní paměti a jednou integrovanou diskovou jednotkou 2310 pro systémovou rezidenci. Podle moderních standardů je Supervisor malý a obsahuje různé detaily systému, jako jsou rutiny přerušení první úrovně, nazývané podprogramy úrovně přerušení , plus ovladač disku a rutiny pro načtení interpretů příkazů pro řízení úloh a ovladače čtečky karet. Ovladače zařízení pro další I/O zařízení vyžadovaná úlohou jsou součástí načítání této úlohy, což může zahrnovat také nahrazení základního ovladače disku pokročilejším ovladačem. Během provádění úlohy je v paměti pouze rezidentní monitor , nazývaný Skeleton Supervisor . Tento supervizor vyžaduje pouhých 1020 bajtů, takže první dostupná paměť úkolu začíná adresou /01FE (hexadecimální) nebo slovem 510. Když úloha skončí nebo je přerušena, správce načte Analyzátor záznamů monitorovacího monitoru ( MCRA ), aby přečetl řízení úlohy pro další. Zatímco je úloha spuštěna, supervizor je neaktivní. Kromě ovladačů zařízení a zpracování přerušení je veškerý čas CPU zcela věnován činnostem úlohy. Dalšími programy distribuovanými jako součást operačního systému jsou nástroj pro hlavní výpis stavu paměti, DUMP a Disk Utility Program , DUP .
Pro podporu systémů bez disku byl k dispozici programovací systém pro karty/papírové pásky.
Existuje hierarchie ovladačů zařízení: ty s názvy končícími na Z jsou pro Fortran, například DISKZ, zatímco programátoři assembleru mohou používat DISK0 a DISK1 byl ještě rychlejší při čtení více sektorů disku. DISKZ však začíná adresování sektorů prvním dostupným nepoužitým sektorem, zatímco ostatní začínají sektorem nula disku, což umožňuje programátorovi, který není obeznámen s organizací disků, neúmyslně přepsat zavaděč bootstrapu.
Mezi další programovací jazyky dostupné na 1130 patří
Existuje dokonce kompilátor ALGOL , napsaný ve francouzštině, takže „ Debut ...Fin;
“ nahrazuje „ Begin ... End;
“. Všechny jeho zprávy jsou ve francouzštině, takže „kompilace Bonne“ je cílem.
Eastern Michigan University vyvinula kompilátor Fortran IV pro 1130, známý jako Fortran-EMU, jako alternativu k kompilátoru Fortran IV (podmnožina) poskytovaného společností IBM. Přidává mnoho funkcí Fortran Iv, které kompilátor IBM nepodporuje, včetně datového typu LOGICAL, šestipísmenných názvů proměnných a vylepšené diagnostiky. Kompilátor Fortran-EMU byl distribuován jako balíček děrných karet ve formátu souboru s obrazem disku se odstraněním všech zbývajících oblastí systému, aby se zabránilo kopírování dalších modulů, které by normálně byly umístěny na stejném disku, jako je například assembler nebo kompilátory.
Oklahoma State University vyvinula kompilátor ALGOL 68 , napsaný v ANSI Fortran 1966.
Na univerzitě v Michiganu byl vyvinut tlumočník FOCAL .
IBM také distribuovala velkou knihovnu programů, podporovaných IBM (Typ I a II) i nepodporovaných (Typ III a IV).
Protože byl model 1130 zaměřen především na vědecký trh, převládaly vědecké a technické programy:
- Balíček vědeckých podprogramů
- Nakreslete a vykreslete podprogramy
- Program toku toku elektrického systému
- Vícenásobná regrese
- Výpočet poruchových proudů elektrického distribučního systému
- Analýza potrubí
- Geometrie souřadnic COGO
- Kontinuální modelování systému (CSMP)
- Lineární programování Matematická optimalizace podprogramu
- Structural Engineering System Solver (STRESS)
- Statistický systém
1130 také zaujímal místo jako stroj na zpracování dat pro menší organizace:
- Komerční podprogramový balíček 1130
- Informační systém pro studenty
- CPM/PERT
Existuje také speciální software:
- Vzdálené zadávání úloh (RJE)
- Sazba
Kontrola práce
Dávkový provoz 1130 je řízen kontrolními záznamy v primárním vstupním proudu (čtečka karet nebo papírových pásek). Existují dva typy kontrolních záznamů, kontrolní záznamy monitoru a kontrolní záznamy supervizora.
Monitorujte kontrolní záznamy
Kontrolní záznamy monitoru jsou označeny a za //␢
nimi ve sloupcích 4–7 následuje „kód operace psuedo“. „␢“ představuje jediné prázdné místo.
Kontrolní záznam | Funkce |
---|---|
//␢* comments |
Poskytuje komentář k vytištění v seznamu úloh ve sloupcích 5 až 80 |
//␢JOB |
Identifikuje začátek úlohy |
//␢ASM |
Vyvolá Assembler |
//␢FOR |
Vyvolá kompilátor FORTRAN |
//␢PAUS |
Zastaví systém, dokud není stisknuto tlačítko START na konzole |
//␢TYP |
Přepíná na konzolu pro ovládání vstupu a výstupu záznamu |
//␢TEND |
Zruší účinek //␢TYP
|
//␢DUP |
Vyvolá program Disk Utility |
//␢XEQ |
Čte a přenáší řízení do hlavního programu |
JOB
Záznam může mít „T“ ve sloupci 8 což znamená, že všechny soubory přidané do uživatelského prostoru tím, že tuto úlohu by měl být vypuštěn na konci. Sloupce 11 až 15 mohou obsahovat etiketu kazety; systém před pokračováním ověří, že je zadaná kazeta namontována.
XEQ
Záznam může obsahovat jméno programu, který má být spuštěn ve sloupcích 8 až 12. Je-li tato vynechán, program v současné době v pracovní Storage budou provedeny. Pokud sloupec 14 obsahuje „L“ a program je ve formátu Disk System Format (ne core-image), bude Core Builder vytisknout mapu jádra. Pokud za tímto výrokem následují LOCAL
NOCAL
, nebo FILES
kontrolní záznamy supervizora, sloupce 16 a 17 obsahují počet těchto záznamů. Sloupec 19 volitelně uvádí, která rutina ovladače disku má být propojena. „0“, „1“ nebo „N“, požadavek DISK1, DISK2 nebo DISKN, jakýkoli jiný znak, včetně prázdného, požaduje DISKZ, rutina disku FORTRAN.
Kontrolní záznamy supervizora
Supervisor Kontrolní záznamy začínají s „*“ ve sloupci 1, bezprostředně následuje příkazového pseudo-operace ve sloupci 2. Jsou LOCAL
, NOCAL
a FILES
pro jádro Load Tvůrce. Záznamy řízení DUP mají podobný formát. Tyto záznamy řídí propojení programu buď pro // XEQ
příkaz, nebo pro *STORECI
příkaz DUP .
Kontrolní záznam | Popis |
---|---|
*LOCAL |
Dodává seznam podprogramů, které budou načteny jako překryvy v době běhu, nikoli zahrnuty v hlavním programu |
*NOCAL |
Dodává seznam podprogramů, které mají být propojeny s hlavním programem, přestože nejsou nikdy volány. Obvykle se jedná buď o rutiny ladění, na které může operátor ručně větvit z konzoly, nebo o rutiny služeb |
*FILES |
Srovnává identifikační čísla souborů z příkazu FORTRAN DEFINE FILE nebo příkazu Assembler FILE pojmenovaným souborům na disku.
|
Provozní postup
Trvalé vzpomínky na IBM 1130 mohly vyplývat z jeho potřeby neustálého lidského zásahu. Obvykle to bylo obsazeno spuštěnými „úlohami“ specifikovanými balíčkem děrných karet . Lidský operátor by načítal úlohy do čtečky karet a rozdělil je zpět do úloh pro vrácení, možná spolu s tištěným výstupem, předkladateli. Operátor by také musel sledovat 1130, aby zjistil, že nefunguje správně nebo zablokoval práci, a zasáhnout stisknutím INT REQklávesy na klávesnici, aby přeskočil dopředu na začátek další úlohy.
Označení začátku práce byla děrná karta, která začínala // JOB
. Jakákoli karta, která začínala, //
byla příkazem supervizorovi a nemohla být použita jako uživatelský program nebo data. Mezi další příkazy patří // DUP
spuštění programu Disk Utility Program (odstranění souborů nebo přidání souboru v dočasné oblasti do kolekce souborů) a // XEQ
spuštění pojmenovaného programu z disku. Pokud by se uživatelský program pokusil přečíst příkazovou kartu, standardní rutina čtečky karet by signalizovala konec vstupu programu a uložila obsah této karty pro supervizora.
- Počáteční načtení programu (IPL)
Na rozdíl od IBM 360, kde lze zaváděcí zařízení vybrat ze systémové konzoly, lze IBM 1130 „zavést“ (IPL'd: Initial Program Load) pouze z externího zařízení: čtečky karet nebo čtečky papírových pásek.
Procedura bootstrap načte jednu kartu ze čtečky karet. Spouštěcí karta obsahuje binární kód pro čtení obsahu nulového sektoru diskové jednotky, který zase zpracovává přerušení "operace dokončena" z diskové jednotky a provádí další čtení disku, aby připravila 1130 na první úlohu děrné karty. Dokončení celého procesu trvá asi sekundu.
- Procedury obnovy
Po spuštění IBM 1130 je Supervisor stále v paměti a pravděpodobně neporušený, protože jádrová paměť si zachovává svůj stav bez napájení. Pokud operátor dospěje k závěru, že se uživatelský program zastavil, supervizor může vycítit stisknutí klávesy pro přerušení programu a přeskočení na další // kartu. Dozor není chráněn proti úpravám špatně napsanou úlohou, což může vyžadovat, aby operátor restartoval 1130. Nechyběla ani ochrana proti zápisu na disk. Pokud je kopie systémového softwaru na disku upravena, lze ji obnovit tak, že ji znovu načtete z přibližně 4000 binárně kódovaných děrných karet (přibližně dvou polí).
Organizace disku
Disková jednotka IBM 2310 ukládá sektory 320 slov (640 bajtů) plus jednoslovnou sektorovou adresu. Válec se skládá ze dvou drah na horní a spodní povrchy 2315, nebo z jednoho talíře na 1316 disku balení používané v 2311. Každý disk válec obsahuje osm sektorů. Sektor je monitorem logicky rozdělen na šestnáct diskových bloků po 20 slovech (40 bajtech). Blok disku je alokační jednotkou pro soubory.
Systém rozlišuje mezi systémovými kazetami , které obsahují monitor a nástroje spolu s uživatelskými daty, a nesystémovými kazetami , které obsahují pouze uživatelská data. Všechny kazety obsahují informace o válci 0, včetně vadného stolu válce, ID kazety a programu bootstrap ( kód bootstrapu ). Na nesystémových kazetách bootstrap jednoduše vytiskne chybovou zprávu a čeká, zda dojde k pokusu o spuštění z této kazety. Na systémové kazetě je to program studeného startu , následovaný komunikační oblastí a rezidentním monitorem v sektorech jedna a dva. Sektory tři až pět obsahují tabulku ekvivalence umístění systému (SLET) - adresář všech fází všech monitorovacích programů. Další kontrolní informace vyplňují první stopu.
Oblast systému je přítomna na systémových kazetách. Obsahuje program Disk Monitor a volitelně kompilátor FORTRAN, Assembler a základní bitovou kopii obrazu používanou k propojení přemístitelných programů. Obsahuje také adresáře souborů uživatelů - Fixed Location Equivalence Table (FLET) a Location Equivalence Table (LET),
V návaznosti na systémovou oblast obsahuje kazeta až tři logická dělení: pevnou oblast , uživatelskou oblast a pracovní úložiště . V pevné i uživatelské oblasti jsou uloženy dočasné programy a data. Velikost pevné oblasti je definována DUP a ukládá data a programy pouze ve formátu jádra obrazu. Při mazání souborů není znovu zabaleno. Uživatelská oblast ukládá data a programy v libovolném formátu. Hranice mezi uživatelskou oblastí a pracovním úložištěm „plave“ - uživatelská oblast se při přidávání souborů rozšiřuje a při opětovném zabalení se smršťuje, aby se uvolnilo místo z odstraněných souborů. Pokud je třeba soubor upravit, je obvyklým postupem použít // DUP
příkazy k jeho odstranění, které přesune všechny následující soubory zpět, aby se mezera zmenšila, a poté pojmenujte dočasný soubor jako novou verzi souboru. Zřídka upravené soubory tak migrují na začátek disku, protože jsou připojeny nové soubory nebo nové verze a často upravené soubory jsou ukládány na konec disku.
Pracovní úložiště začíná po posledním souboru v uživatelské oblasti a zabírá veškerý zbývající prostor na kazetě. Může obsahovat dočasný soubor vytvořený systémem nebo uživatelem, například výstup kompilátoru nebo aplikačního programu. Tento soubor podléhá možnému odstranění na konci aktuální úlohy, pokud není uložen do pevné oblasti nebo uživatelské oblasti.
Všechny soubory na disku jsou sousedící bloky disků, takže nedochází k fragmentaci . Program může používat a upravovat pojmenované soubory, ale nemůže je rozbalit nad jejich vytvořenou velikost. Program, který vytvoří více než jeden soubor, musí mít všechny kromě jednoho předem přiděleny DUP.
S omezeným místem na disku jsou zdrojové soubory programu obvykle uchovávány jako balíčky karet. Uživatelé s většími požadavky mohou mít vlastní disk obsahující operační systém, ale pouze své soubory, a budou muset nahradit systémový disk „pool“ svým a restartovat systém, když mají být spuštěny jejich programy. Určitou úlevu přináší systém s druhou diskovou jednotkou, který lze zcela věnovat kódu a datům jednoho uživatele.
Balíček disku nebo kazeta je inicializována pro použití na 1130 pomocí rutiny inicializace disku (DIPR). Tato rutina skenuje disk a zapisuje adresy sektorů na všechny válce, označí vadné sektory a zapíše ID kazety na nulu válce. DIPR je samostatný program , který se načítá z karet nebo papírové pásky a přijímá ID kazety ze systémové konzoly.
Disk Utility Program (DUP)
Program Disk Utility Program (DUP) poskytuje příkazy pro přenos programů, podprogramů a dat. Je vyvolána // DUP
kartou ovládání úlohy , následovanou jednou nebo více kartami kontroly:
Příkaz | Funkce |
---|---|
*OBCHOD | Uložte program ve formátu Disk System Format (přemístitelný objekt) |
*STORECI | Uložte program ve formátu Core Image (plně propojený a přemístěný) |
*STOREDATA | Uložte datový soubor na disk |
*STOREDATACI | Znovu načtěte uložený základní obrazový program |
*PŘÍBĚH | Nahraďte nebo vytvořte soubor na disku |
*DUMP | Zkopírujte datový soubor z disku |
*DUMPDATA | Zkopírujte libovolné sektory z disku |
*DUMPLET | Vytiskněte tabulku ekvivalence umístění disku (LET) a tabulku ekvivalence fixní polohy (FLET), pokud existuje pevná oblast |
*VYMAZAT | Odstraňte program nebo datový soubor |
Jiné příkazy, zejména pro použití správcem systému, definují nebo rozšiřují pevnou oblast, odstraňují kompilátor FORTRAN a/nebo Assembler ze systému a obnovují správné adresy sektorů do pracovního úložiště, pokud byly upraveny.
Operandy musí být umístěny do pevných sloupců. Kód zdrojového zařízení je uveden ve sloupcích 13 a 14, cílové zařízení ve sloupcích 17 a 18. Tyto kódy zařízení jsou:
- UA - User Area
- FX - pevná oblast (žádné „rozsahy“ podle 360; pouze souvislý prostor)
- WS - pracovní úložiště
- CD - děrná karta/hlavní vstupní zařízení (může být PT : papírová páska)
- PR - Tiskárna
Volitelně může být název programu kódován ve sloupcích 21 až 25 a pole pro počítání v 27 až 30. Interpretace těchto polí závisí na požadované funkci DUP.
Programy lze převést do formátu s rychlejším načítáním pomocí příkazu STORECI , který vyvolá Core Image Builder (protějšek DM2 k editoru propojení 360). Alternativně může program projít tímto procesem pokaždé, když má být spuštěn, a pro zřídka používané programy je toto upřednostňováno z důvodu úspory místa na disku.
Následující kontrolní karta instruuje DUP, aby převzal aktuální obsah pracovního úložiště a přesunul jej do uživatelské oblasti s názvem PROGZ. DUP zná velikost souboru v pracovním úložišti. Velikost uživatelské oblasti se zvýší o velikost souboru a velikost pracovního úložiště se odpovídajícím způsobem sníží.
Příslušenství
Disková paměť se používá k ukládání operačního systému, objektového kódu a dat, ale zdrojový kód je uložen na děrných kartách.
Základní 1130 přišel s diskovou jednotkou IBM 2310 ovládanou kmitací cívkou, nazývanou „Ramkit“, z divize General Products IBM v San Jose. Jejich kazety s jedním talířem velikosti IBM 2315 velikosti pizza boxu pojmou 512 000 slov nebo 1 024 000 bajtů (méně než 3,5 "HD disketa má 1,44 MB nebo dokonce 5,25" HD disketa má 1,2 MB ).
Psací stroj konzoly IBM 1053 používá mechanismus IBM Selectric , což znamená, že je možné změnit písmo nebo sadu znaků nahrazením dutého prvku typu velikosti golfového míčku. Pro APL je k dispozici speciální typový prvek , výkonný programovací jazyk orientovaný na pole využívající speciální symbolický zápis. Řadu 16 přepínacích přepínačů na konzolovém psacím stroji lze individuálně testovat z programů, například pomocí speciálního příkazu Fortran .
IF (SENSE SWITCH i)
Mezi další dostupné periferie patří:
- Tiskárny - řadové tiskárny IBM 1132 a IBM 1403
- Děrných štítků - za IBM 1442 čtečka paměťových karet / punč a IBM 2501 čtečka paměťových karet
- Papírová páska - děrovačka papírové pásky IBM 1055, čtečka papírových pásek IBM 1054 a čtečka papírových pásek IBM 1134
- Disk - disková jednotka IBM 2311
- Magnetická páska - Od roku 1968 byly k dispozici datové úložné jednotky IBM 2415 Magnetic tape jako RPQ .
- Grafika - grafická zobrazovací jednotka IBM 2250 .
- Color Pen Plotter - IBM 1627 drum plotter.
- Optical Mark Reader - IBM 1231 Optical Mark Page Reader
- Komunikace - Synchronní komunikační adaptér (SCA). IBM 1130 MTCA, pro Multiple Terminal Control Adapter , oznámený v roce 1970, umožnil připojení až čtyř 2741 terminálů k IBM 1130 pro použití s APL.
Aby se zjednodušil návrh periferních zařízení, spoléhají se na procesor. Čtečka karet nemá žádné vyrovnávací paměti, ale místo toho dává CPU přerušení úrovně nula (nejvyšší priorita) po přečtení každého jednotlivého sloupce karty. Pokud CPU nereaguje a uloží dvanáct bitů dat před dalším takovým přerušením, které indikuje, že byl přečten další sloupec, data budou ztracena. Podobně tiskárna 1132 spoléhá na software v 1130. Když A
se na místo dostane písmeno, jako je písmeno , CPU musí analyzovat řádek textu ve vyrovnávací paměti a sestavit pole bitů, které 1132 indikuje, které pozice tisku by měly být vytištěny A
. Pokud procesor nemůže reagovat dříve, než se A
otočí z polohy, může být rychlost tisku výrazně snížena.
Ostatní periferní zařízení přijímají text v kódu specifickém pro zařízení, který je vhodný pro jeho hardware. CPU jej musí přeložit do nebo z kódu EBCDIC, ve kterém CPU zpracovává text.
Přehled sady instrukcí
Pokyny měly krátký (jednoslovný) a dlouhý (dvouslovný) formát. Většina výpočetních, zaváděcích a ukládacích pokynů odkazovala na jeden registr (obvykle ACC) a umístění v paměti. Umístění paměti bylo v krátkém formátu identifikováno 8bitovým posunutím se znaménkem buď z aktuální adresy, nebo z jednoho z indexových registrů; nebo v dlouhém formátu, plnou 15bitovou adresou, kterou lze indexovat a specifikovat indirection. Paměť byla řešena v jednotkách slov.
1130 podporoval pouze binární data s jednoduchou a dvojitou přesností nativně (16 a 32 bitů) uložená ve formátu big-endian . Pomocí podprogramů byla podporována standardní a rozšířená přesnost s plovoucí desetinnou čárkou (32 a 48 bitů) a desetinná data.
Podmíněné převody byly založeny na (a) aktuálním obsahu akumulátoru nebo (b) indikátorech přenosu a přetečení stanovených předchozí operací. Převody mohly být přeskočením (což předpokládalo, že další instrukce byla krátká) nebo podle větve. Pokud některý ze zadaných testů byl pravdivý, došlo k přeskočení. Pokud žádný z uvedených testů nebyl pravdivý, došlo k větvi .
Main Registers: IAR = Instruction Address Register ACC = Accumulator EXT = Extension Register XRx = Index Registers: x = 1,2,3 Implemented as memory words 1,2,3, not as hardware registers. Condition tests: Z Accumulator zero - Accumulator negative + Accumulator positive E Accumulator even C Carry indicator off O Overflow indicator off 1130 Instruction Set Mnemonics: LD = Load ACC STO = Store ACC LDD = Load Double (ACC & EXT) STD = Store Double (ACC & EXT) LDX = Load Index STX = Store Index LDS = Load Status STS = Store Status A = Add ACC AD = Add Double S = Subtract ACC SD = Subtract Double M = Multiply D = Divide AND = Boolean AND OR = Boolean OR XOR = Boolean Exclusive OR SLA = Shift Left ACC SLT = Shift Left ACC & EXT SLCA = Shift Left and Count ACC SLC = Shift Left and Count ACC & EXT SRA = Shift Right ACC SRT = Shift Right ACC & EXT RTE = Rotate Right ACC & EXT BSC = Branch or Skip on Condition (Modifier dependent) i.e. BP BNP BN BNN BZ BNZ BC BO BOD BOSC - Branch Out or Skip Conditionally (alternate for BSC with bit 9 set) Exits current interrupt level. BSI = Branch and Store IAR MDX = Modify Index and Skip (Increment IAR one if a sign change or becomes zero) WAIT = Halt NOP = No Operation (alternate for SLA 0) XIO = Execute I/O 1800 Additional Instruction Mnemonics: CMP = Compare ACC DCM = Double Compare ACC & EXT Equivalent Mnemonics The disk assembler introduced several mnemonics equivalent to existing instructions intended to make the programmer's intent clearer: SKP - Skip on condition, equivalent to a short BSC B - Branch unconditionally, equivalent to BSC with no conditions specified BP - Branch Accumulator Positive, equivalent to BSC specifying '+' condition BNP - Branch Accumulator not Positive BN - Branch Accumulator Negative BNN - Branch Accumulator not Negative BZ - Branch Accumulator Zero BNZ - Branch Accumulator not Zero BC - Branch on Carry BO - Branch on Overflow BOD - Branch Accumulator Odd MDM - Modify Memory, equivalent to unindexed long-format MDX XCH - Exchange Accumulator and Extension, equivalent to RTE 16 Short instruction format (one 16 bit word): 1 Bits 0...45678......5 OP---FTTDisp---- OP is Operation F is format 0 = Short TT is Tag Disp is Displacement Long instruction format (two 16 bit words): 1 1 Bits 0...456789.....50..............5 OP---FTTIMod----Address--------- OP is Operation F is format 1 = Long TT is Tag I is Indirect bit Mod is Modifier Effective Address Calculation (EA): F = 0 | F = 1, I = 0 | F = 1, I = 1 Direct Addressing| Direct Addressing| Indirect Addressing ------------------------------------------------------------------- TT = 00 | EA = Displ + IAR | EA = Add | EA = C/Add TT = 01 | EA = Displ + XR1 | EA = Add + XR1 | EA = C/Add + XR1 TT = 10 | EA = Displ + XR2 | EA = Add + XR2 | EA = C/Add + XR2 TT = 11 | EA = Displ + XR3 | EA = Add + XR3 | EA = C/Add + XR3 ------------------------------------------------------------------- Disp = Contents of displacement field Add = Contents of address field of instruction C = Contents of location specified by Add or Add + XR
- Vyhrazená paměť
Nejnižší adresy základní paměti měly použití diktované buď hardwarem nebo konvencí:
Adresa | Používání |
---|---|
/0000 | Podle konvence obsahoval instrukci B *-1 , která by se věnovala na neurčito, dokud si operátor nevšimne, že všechna světla IAR konzoly byla tmavá a vyprázdnila úlohu, buď stisknutím Int Req, nebo restartem.
|
/0001 | XR1. Adresy paměti indexových registrů umožňovaly přímé přesuny mezi nimi, například pomocíLDX I1 2
|
/0002 | XR2. |
/0003 | XR3. |
/0008 | Adresa obsluhy přerušení úrovně 0 (nejvyšší priorita) - 1442 přerušení čtečky karet/děrování „sloupce připraveno“. |
/0009 | Adresa obslužné rutiny pro přerušení úrovně 1 — tiskárna 1132 a adaptér synchronní komunikace. Obslužné rutiny pro toto a nižší přerušení by musely otestovat stavové slovo, aby určily, které zařízení přerušilo. |
/000A = 10 | Adresa obsluhy přerušení úrovně 2 - diskové úložiště, kanál pro přístup k úložišti. |
/000B = 11 | Adresa obsluhy přerušení úrovně 3 - plotter 1627, přístupový kanál úložiště. |
/000C = 12 | Adresa obsluhy přerušení úrovně 4 - čtečka papírových pásek 1134, děrovačka papírových pásků 1055, konzole, děrovačka pro čtení 1442 karet, čtečka karet 2501, tiskárna 1403, čtečka optických značek 1231, zařízení Storage Access Channel. |
/000D = 13 | Adresa obsluhy přerušení úrovně 5 (nejnižší priorita) - přepínače zastavení a přerušení konzoly, přístupový kanál úložiště. |
/0020 = 32 | První slovo pole skenování pro tiskárnu 1132 (/0020–/0027). |
/0026 = 38 | Poslední úplné slovo skenovacího pole. |
/0027 = 39 | Použitá polovina: 120 sloupců = 120 bitů = sedm 16bitových slov plus 8 bitů. |
/0038 = 56 | EXIT to Supervisor/Return to Monitor (CALL EXIT) |
Programování
Podprogramy
1130 nemá žádnou hardwarovou podporu pro zásobník . Většina podprogramů je volána s instrukcí BSI (Branch and Store IAR). To uloží hodnotu IAR (zpáteční adresa) na cílovou adresu a přenese řízení na místo určení+1. Podprogramy se vracejí tam, kde byly při té příležitosti volány pomocí nepřímé větve prostřednictvím prvního slova podprogramu. Umístění zpáteční adresy do řádku bylo v té době běžnou technikou počítačů, například Hewlett-Packard HP 2100 , DEC PDP-8 a Scientific Data Systems SDS 920 .
Podprogram s názvem SIMPL by tedy mohl být organizován následovně (komentáře se řídí operandem instrukce):
SIMPL: DC *-* This is the entry point, filled with a zero initially. (whatever the routine does) B I SIMPL Return by an Indirect branch, to the address found in location SIMPL. END SIMPL Instructs the assembler that the source for routine SIMPLE is complete.
Podprogram by se nazýval následovně:
BSI L SIMPL Call SIMPL. L (Long) is needed if SIMPL is more than -128 or +127 words away.
Pseudo-operation by se obvykle používají CALL.
Jak je znázorněno, vstupním bodem podprogramu je DC *-*
pseudo operace assembleru, která se používá k definování konstanty (zabírající jedno slovo úložiště) s hodnotou určenou výrazem. * Znamená aktuální adresu sestavy, takže *- * má za následek nulu. Když napíšete toto místo 0, získáte vizuálně odlišnou poznámku, že tam bude za běhu umístěna smysluplná hodnota (zpáteční adresa). Vstupní bod nemusí být prvním slovem podprogramu. Předchozí slovo může být skutečně začátkem instrukce přímé větve se dvěma slovy, jejíž adresní pole je na SIMPL. Poté mohou být výnosy uskutečněny jednoslovnými větvemi:B SIMPL-1
Při volání SIMPL se instrukce BSI nahradí *-*
aktuální hodnotou IAR, což je adresa těsně za instrukcí BSI. Poté, co SIMPL provede cokoli, co je napsáno, se B I SIMPL
rozvětví nikoli na SIMPL, ale nepřímo přes něj, čímž pokračuje v provádění instrukce podle instrukce BSI, která volala SIMPL.
Bez zvláštních opatření na ochranu zpáteční adresy není rekurze možná: Pokud SIMPL volá sama nebo volá podprogram, který ji zavolal, přepíše se její původní zpáteční adresa. Návratnost je problematická ze stejného důvodu: rutina služby přerušení se musí zdržet volání jakéhokoli podprogramu, který mohl být kódem, který byl přerušen.
Volající SIMPL mu může předat parametry, což mohou být hodnoty nebo adresy hodnot. Parametry mohou být kódovány přímo (bezprostředně za instrukcí BSI) nebo mohou být umístěny v indexových registrech XR1 a XR2. Pokud jsou parametry umístěny za sebou, SIMPL upraví vlastní zpáteční adresu, takže se její konečná nepřímá větev vrátí za parametry.
Celočíselné funkce jednoho celého čísla očekávají parametr v akumulátoru a vrátí tam jeho výsledek. Funkce s plovoucí desetinnou čárkou využívají akumulátor s plovoucí desetinnou čárkou (oblast dvou slov vyčleněná knihovnou s plovoucí desetinnou čárkou, tři slova pro prodloužení přesnosti) atd.
Konvence kódování 0 jako počáteční hodnoty ve vstupním bodě znamená, že pokud chyba programování vede k tomu, že se SIMPL vrátí před prvním voláním, provedení by přeskočilo na paměťové místo 0. Jak bylo uvedeno výše , je obvyklé mít umístění 0 obsahuje větev do umístění 0. 1130 by uvízl v místě 0 a kontrolky IAR na konzole by byly zcela tmavé, což by dávalo najevo, že program selhal.
Propojení na rutiny knihovny
U podprogramů, které by byly volány mnohokrát (například podprogramy pro aritmetiku s pohyblivou řádovou čárkou), je důležité zmenšit velikost každého volání na jedno slovo. Takové „knihovní rutiny“ používají protokol LIBF. Je to složitější než protokol CALL popsaný v předchozí části, ale LIBF skrývá složitost před zapisovatelem programu sestavovacího jazyka.
Knihovní rutiny jsou adresovány prostřednictvím indexového registru XR3. (Podprogramy Fortran používají indexový registr XR1 pro adresy parametrů a zpáteční adresu, ale registr XR2 je nepoužitý.) XR3 ukazuje na posloupnost tříslovných přenosových vektorů tak, že první položka je -128 slov z hodnoty XR3. Programátor zavolá rutinu knihovny pomocí LIBF
pseudo-operace, která sestavuje nikoli přímku BSI
do rutiny, ale jednoslovnou instrukci indexované větve ( ), jejíž posunutí (-128, -125 atd.) Identifikuje začátek přenosu rutiny vektor.
BSI 3 disp
Přenosový vektor připraví zavaděč vazeb, když sestaví program. Vstup vektoru přenosu do funkce knihovny s názvem SIMPL má tuto formu:
DC *-* A word into which BSI stores the return address. B L SIMPL Branch to the start of the library function.
SIMPL věděla, kde je její zpáteční adresa, že v případě, že by byla SIMPL prohlášena za rutinu LIBF, zavaděč vazeb by upravil kód SIMPL a adresu vstupu vektoru přenosu SIMPL by umístil na SIMPL+2. Rutiny LIBF, na rozdíl od podprogramů CALL, nezačínají směrnicí DC, která obsahuje zpáteční adresu (je ve vektoru přenosu), ale skutečným kódem, a to následovně:
SIMPL STX 1 RCVR1+1 Save the caller's value of XR1 at a nearby location. LDX I1 *-* The linkage loader changes the address word to point to the transfer vector.
Umístění adresy přenosového vektoru SIMPL na SIMPL+2 ponechává prostor pro jednoslovné instrukce pro uložení zvoleného indexového registru, zde XR1. Pak nepřímá instrukce LDX ukazuje XR1 ne na přenosový vektor, ale přes něj na zpáteční adresu nebo na jakékoli parametry uložené v řádku po BSI. SIMPL poté provede vše, k čemu bylo napsáno, získá přístup ke všem in-line parametrům prostřednictvím XR1 (v takovém případě musí pro návratovou adresu zvýšit XR1) a vrátí se takto:
STX 1 RETN+1 Store XR1 to prepare to use it as a return address. RCVR1 LDX L1 *-* SIMPL's first instruction modified this address. Now, * restore the original value of XR1. RETN B L *-* This instruction was modified two instructions ago; return.
- Příklad
Předpokládejme, že volání SIMPL ve stylu LIBF na adresu 100. Pak by zpáteční adresa byla 101, protože je to jednoslovná instrukce. XR3 ukazuje do skupiny přenosových vektorů. Pokud by přenosový vektor pro SIMPL začínal na adrese 2000, pak by BSI bylo sestaveno s tak, aby XR3+disp = 2000. Provedení BSI ukládá 101 na místo 2000 a skočí na umístění 2001. V roce 2001 je dvouslovný skok do dálky do vstupního bodu SIMPL, který mohl zavaděč vazeb umístit na adresu 300.
BSI 3 disp
disp
Skok do dálky přenáší ovládání na SIMPL. Po instrukci na 300 ukládá XR1, instrukce na 301 je , vazební zavaděč umístil 2000 na místo 302. To nenačte 2000 do XR1; je to nepřímá instrukce a načte obsah 2000, což je 101, zpáteční adresa pro toto volání do SIMPL.
LDX I1 2000
Ve výše uvedené návratové sekvenci, když časový ovládací prvek dosáhne RETN, existuje instrukce B L 101
, která se vrací volajícímu. (Pokud existuje jeden nebo více in-line parametrů na 101, SIMPL zvýší XR1 tak, aby ukazoval na 102 nebo více, a to by byl cíl B
instrukce.)
- Variace
Pokud SIMPL převzala parametry kódované in-line podle instrukce BSI, SIMPL k nim získá přístup s indexovaným adresováním mimo XR1. První mohl získat LD 1 0
druhý LD 1 1
, další atd. Pokud je druhým parametrem adresa skutečného parametru, získá jeho hodnotu. Před návratem SIMPL zvýší XR1 za n parametrů pomocí takové instrukce, aby byla správná hodnota umístěna na RETN+1.
LD I1 1
MDX 1 n
Rutina LIBF, která odmítla obnovit původní hodnotu XR1, by mohla vynechat výše uvedené kroky a vrátit se jednoduše přeskočit n in-line parametrů. Takovou rutinu však nemohou volat jiné rutiny LIBF, protože narušuje použití XR1 volajícího pro přístup k jeho vlastním parametrům a zpáteční adrese.
B 1 n
Složitost LIBF šetří paměť pro podprogramy, které jsou často nazývány: Spojení LIBF vyžaduje jedno slovo na vyvolání, plus tři slova pro přenos vektoru přenosu a další kód v samotné rutině, zatímco CALL propojení vyžaduje dvě slova na vyvolání, protože většina HOVORY budou na adresu mimo dosah -128 až +127 slov jednoslovného operačního kódu.
Registr XR3 musí ukazovat na položky přenosových vektorů pro rutiny knihovny, a nikoli na odesílací tabulku pouze jejich adres, protože to by vyžadovalo, aby rutiny LIBF byly volány s nepřímou instrukcí BSI. Tyto pokyny jsou dlouhé dvě slova, takže takový návrh by negoval úspory velikosti kódu LIBF. Osm-bit limit pro disp oblasti one-slovo kód instrukce omezuje používání LIBF rutiny ne více než 85 odlišných zápisů.
Úprava kódu
Předchozí části ukazují, že se kód a data mísí. V programování 1130 je běžné upravovat adresní pole instrukcí a ve skutečnosti upravovat celé instrukce.
Od kompilátoru Fortran
Kompilátor Fortran vytváří při generování kódu pro jakékoli podprogramy (podprogramy nebo funkce), které mají parametry, samoopravný kód. Kompilátor vytvoří tabulku z každého umístění, kde podprogram odkazuje na jeden ze svých parametrů, a zkompiluje jako první instrukci v těle podprogramu volání podprogramu s názvem SUBIN, který pomocí tabulky upraví pole adresy každého odkazu na parametr je skutečná adresa parametru během aktuálního vyvolání. SUBIN vytváří tyto opravy pokaždé, když je vyvolán podprogram.
Když program Fortran volá podprogram, adresy všech parametrů se objeví v řádku po volání. Například příkaz Fortran CALL SIMPL (X) může být kompilován do:
BSI L SIMPL DC X The address of X, on which SIMPL is to operate
V rámci podprogramu bylo možné přistupovat k parametrům pomocí nepřímého indexovaného adresování, jak je uvedeno výše v části Variace , takže vzhledem k tomu, že XR1 byl vhodně připraven, lze do akumulátoru načíst celočíselný parametr s instrukcí, jako je tato:
LD I1 0 Load the value of the first parameter (offset 0) into the accumulator
Kompilátor místo toho použil přímé adresování. Když SUBIN běží, získá adresu X a opraví pole adresy instrukce, aby se stalo:
LD L X Load the value of X into the accumulator
Výhody SUBIN jsou následující:
- K získání adresy operandu vyžaduje nepřímá indexovaná instrukce tři paměťové cykly (indexový registr je v paměti), zatímco instrukce přímého přístupu vyžaduje pouze jeden.
- Pokud by SIMPL předal některý ze svých parametrů jakémukoli podprogramu, který očekával příjem adresy jeho parametru (včetně všech rutin LIBF pro aritmetiku s pohyblivou řádovou čárkou), je k zadání skutečné adresy původního parametru zapotřebí SUBIN.
Nevýhody SUBIN jsou čas potřebný ke spuštění a paměť potřebná pro referenční tabulku. Velikost této tabulky je součet 5, počet parametrů a počet referencí; pokud tento součet překročí 511, kompilace se nezdaří. U podprogramů s mnoha odkazy na parametr může autor podprogramu zkopírovat parametr do lokální proměnné.
Uživatelem
Úpravy celých pokynů byly v té době běžnou technikou. Například, ačkoli 1130 má instrukci NEBO, syntaxe Fortranu neposkytuje způsob, jak ji napsat. Lze definovat celočíselnou funkci IOR, která umožňuje logickému OR být součástí výrazu Fortran, jako například:
M = 3*IOR(I,J) + 5
Kompilátor Fortran umístí adresy I a J do řádku a očekává výsledek v akumulátoru. Použití IOR (I, J) ve výrazu Fortran kompiluje následující čtyři slova:
BSI L IOR Two-word jump to the start of the IOR function. DC I A one-word in-line parameter: The address of I. DC J A one-word in-line parameter: The address of J.
Funkce IOR assembleru ve skutečnosti nepočítá I nebo J vůbec. Místo toho nahradí výše uvedená čtyři slova následujícím:
LD L I Load accumulator with I (two-word instruction) OR L J OR accumulator with J (two-word instruction)
Po provedení této transformace se nevrátí za konec čtyřslovného bloku (který právě upravil). Místo toho se rozvětví na přesnou adresu, ze které byla původně volána. Instrukce BSI již neexistuje; co je nyní, jsou dva pokyny, které právě napsal. Kombinují dvě celá čísla s instrukcí NEBO strojového jazyka a výsledek podle potřeby ponechají v akumulátoru.
Volání IOR a transformace čtyřslovného bloku proběhne maximálně jednou za běh programu. Pokud je výše zobrazená linie Fortranu provedena znovu, běží rychleji než při prvním spuštění. Podobné funkce by mohly být navrženy pro další užitečné operace.
Funkci, která se sama upravuje, jako IOR, nelze použít v podprogramu Fortran na žádném z parametrů tohoto podprogramu (i když by mohla být použita ke kombinování lokálních proměnných), protože není kompatibilní s výše popsaným podprogramem SUBIN. Transformace IOR své čtyřslovné volací sekvence, ukázaná výše, přesouvá umístění adresy proměnné I. Při následných voláních do podprogramu Fortran by došlo k chybě tabulky odkazů na parametry a SUBIN by opravil chybné slovo v v tomto případě umístění nové adresy I nad kód operace OR.
Rozšířená přesnost
1130 FORTRAN nabízí dva formáty s plovoucí desetinnou čárkou: 32bitový formát „standardní přesnosti“ a 40bitový formát „rozšířené přesnosti“.
Standardní přesnost formát obsahuje 24bitové dvojkového doplňku significand zatímco rozšířená přesnost využívá 32bitovou dvojkového doplňku significand . Tento formát plně využívá 32bitové celočíselné operace CPU. Rozšířený formát zabírá tři 16bitová slova, přičemž osm bitů prvního řádu prvního slova je nepoužito. Charakteristika v obou formátech je 8-bitové pole obsahující sílu dvou předepnut pomocí 128. s plovoucí desetinnou čárkou aritmetické operace jsou prováděny pomocí software.
*EXTENDED PRECISION
Volba kompilátoru karta říká FORTRAN kompilátor použít 40 bitů místo 32 bitů pro všechny s pohyblivou řádovou čárkou dat, neexistuje žádné ustanovení pro míchání formátů.
Velké programy Fortran
Data, se kterými se má manipulovat, a instrukce, které s nimi manipulují, musí být uloženy společně v základní paměti. Klíčovým omezením je množství nainstalované paměti (od 4 096 do 32 768 slov). Navzdory tomuto omezení Fortran nabízí několik technik pro psaní velkých programů.
- MÍSTNÍ podprogramy
Fortran nechal jakýkoli podprogram označit jako „LOCAL“ (Load-on-Call). Každý LOCAL podprogram je překrytí ; je součástí spustitelného programu rezidentního na disku, ale je načten do jádrové paměti (pokud již neexistuje) během doby, kdy je vyvolána. Například šest LOCAL podprogramů by vyžadovalo pouze tolik jádrové paměti jako ta největší, nikoli celkové množství pro všech šest. Žádný ze šesti však nemůže vyvolat další, a to buď přímo, nebo prostřednictvím podprogramů.
- Programy ve fázích
Celý program Fortran může předat řízení do následující fáze, přičemž výstup na supervizora s instrukcí k načtení následné fáze do paměti jádra. Velký program může být rozdělen na tři části, samostatně kompilované, nazvané PART1, PART2 a PART3. Exekuce se spouští // XEQ PART1
a na vhodném místě, ČÁST 1 by provést Fortran prohlášení CALL LINK(PART2)
a tak dále. Název nástupnického programu v CALL nemůže být proměnný, ale logika programu může určovat, zda je řízení přeneseno do jiné fáze a který CALL LINK
příkaz je proveden. Jak bylo uvedeno výše , samotný kompilátor Fortranu byl napsán tímto způsobem, přičemž každá fáze kompilace byla dosažena samostatným programem.
- SPOLEČNÉ ukládání dat
Programy, jako jsou programy Fortran, se nacházejí na nízkých adresách základní paměti (těsně nad supervizorem). Fortran přiděluje prostor na nejvyšších adresách pro všechny proměnné a pole deklarované jako SPOLEČNÉ. Pokud následná fáze programu obsahuje odpovídající BĚŽNÉ prohlášení, pak lze informace v této společné oblasti sdílet mezi fázemi. Fáze mohly bez problémů vynechat SPOLEČNOU deklaraci za předpokladu, že tyto fáze nebyly tak velké, aby jejich programový kód napadl společný prostor. SPOLEČNÉ úložiště nejen sdílí data mezi fázemi; Proměnné SPOLEČNÉ s nižší pamětí lze použít k přenosu dat mezi hlavním programem a podprogramy v rámci jedné fáze, i když při přechodu do další fáze může dojít ke ztrátě dat.
Příklady programování
Příklady lze spustit na emulátoru IBM 1130 dostupném na IBM 1130.org .
Ukázkový balíček programu assembleru
Následující výpis ukazuje balíček karet, který kompiluje a spouští program assembleru, který uvádí balíček karet do řádkové tiskárny.
// JOB // ASM *LIST * LCARD.ASM - LIST A DECK OF CARDS TO LINE PRINTER * * PROGRAM * NEW PAGE ON PRINTER * A READ A CARD * CONVERT FORMAT * PRINT A LINE ON PRINTER * GOTO A * START LIBF PRNT1 GOTO NEW PAGE ON 1132 DC /3100 PRINTER CHANNEL 1-NEW PAGE * NEXTC LIBF CARD0 READ FROM 1442 CARD READER DC /1000 CONTROL TO READ DC CBUFF STORE 80 COLUMNS CINP LIBF CARD0 DC 0 B CINP LOOP UNTIL CARD IS READ * LIBF ZIPCO CONVERT CARD TO PRINTER DC /1100 UNPACKED IN, PACKED OUT DC CBUFF+1 INPUT BUFFER DC PBUFF+1 OUTPUT BUFFER DC 80 CHARACTER COUNT CALL HLEBC HOLLERITH TO EBCDIC * LIBF PRNT1 PRINT 80 CHARACTERS DC /2000 CONTROL CODE TO PRINT DC PBUFF PRINT BUFFER DC PERR PRINT ERROR POUT LIBF PRNT1 CHECK FOR PRINT COMPLETE DC 0 B POUT LOOP UNTIL COMPLETE * B NEXTC READ NEXT CARD * * DATA * CBUFF DC 80 80 COLUMNS PER CARD BSS 80 * PBUFF DC 40 40 WORDS 80 CHARACTERS BSS 40 * PERR DC 0 B I PERR THIS RETURNS TO THE * PRINTER ERROR HANDLER * WHICH WILL TERMINATE THE PROGRAM * END START PROGRAM ENTRY POINT // XEQ TEST DATA 1 HELLO WORLD TEST DATA 2
V této úloze nechá assembler výsledek svého sestavení v dočasné oblasti systémového disku a příkaz XEQ provede obsah dočasné oblasti. Zvláštní vzhled END START
má dva významy: konec zdroje assembleru a název vstupního bodu rutiny, který má označení START.
Zdroj Assembler začíná sloupcem 21 karty, nikoli prvním sloupcem. V systémech bez diskové jednotky by assembler vložil kód na začátek karty, která se právě přečetla (čtečka karet byla ve skutečnosti čtečka-razník, přičemž děrovací stanice byla za čtecí stanicí) a poté přečetla další kartu. Aby zvládl přední větve a podobně, druhý průchod assembleru doslova zahrnoval druhý průchod karet čtečkou/úderem. Pokud by byly nutné změny zdroje, programátor by duplikoval karty, aby získal balíček se sloupci 1-20 prázdný připravený pro další běh přes assembler.
Podle konvencí předchází vyrovnávací paměti počet slov. K DC
(Definovat konstantní) sestavuje počet slov a následování BSS
(blok Založil Symbol) si vyhrazuje potřebný počet slov pro vyrovnávací paměti. Vyrovnávací paměť karty vyžaduje 80 slov, jedno pro každý sloupec karty. Driver CARD0 čte každý sloupec karty doslova, pomocí 12 ze 16 bitů ve vyrovnávací paměti, s bitem nastaveným na zapnuto pro každou díru vyraženou v odpovídajícím řádku pro daný sloupec. Vzor úderů obvykle popisuje textový znak pomocí Hollerithova kódu . Klávesnice konzoly také vstupuje do programu v kódu Hollerith, což je jediný případ dvou zařízení využívajících stejné kódování znaků.
Rutina tiskárny však pracuje s textem v 8bitovém formátu EBCDIC se dvěma znaky na slovo, což vyžaduje vyrovnávací paměť o délce 40 slov. K převodu program používá knihovní rutinu ZIPCO. Navzdory zdání není příkaz CALL HLEBC
proveden, protože HLEBC není podprogram, ale převodní tabulka Hollerith-to-EBCDIC dodaná IBM. Příkaz CALL poskytuje adresu tabulky ZIPCO a zajišťuje, že propojovací zavaděč obsahuje tabulku v programu, takže je pátým parametrem ZIPCO, i když zabírá dvě slova úložiště: kódové slovo operace BSI pro CALL je nepoužívané, a proto obvykle zbytečné, ale druhým slovem rozšíření CALL HLEBC
je adresa tabulky HLEBC, kterou potřebuje ZIPCO. Po převodu program odešle převedený výstup, nyní ve vyrovnávací paměti PBUFF, do tiskárny prostřednictvím ovladače PRNT1. Znovu se program opakuje, dokud ovladač tiskárny nehlásí dokončení, poté program načte další kartu.
Tento příklad neobsahuje žádný kód, který by rozhodoval, kdy přestat. Úplnější program by zkontroloval karty začínající na //
, což označuje začátek další úlohy. Chcete -li zastavit čtečku karet co nejdříve, program by mohl zkontrolovat Hollerithův kód /
ještě před převodem karty na EBCDIC.
Asynchronní I/O a výkon
Volání CARD0 ke čtení karty zahájí tuto operaci a okamžitě se vrátí volajícímu, který by mohl pokračovat s jinou aktivitou. Ukázkový program se však nepokouší překrývat vstup a výstup pomocí vyrovnávacích pamětí, přestože má dvě samostatné pracovní oblasti; jednoduše se vrátí zpět do CIMP a znovu otestuje. Poté, co CARD0 vycítí přerušení operace čtečky karet, vrátí o jedno slovo dále, čímž přeskočí skok zpět na CIMP a opustí smyčku.
Ukázkové rutiny nespouštějí I/O zařízení nejvyšší rychlostí. Je pozoruhodné, že čtečka karet, jen několik milisekund po nahlášení dokončení čtení karty, zahájí svou sekvenci zastavení, po které bude nový příkaz čtení muset počkat, aby zahájil další cyklus čtení. Čtečka IBM 1442 dokázala přečíst 400 karet za minutu plnou rychlostí, ale jen malá váhavost v příkazech ke čtení by snížila její výkon na polovinu nebo ještě hůř. Program Fortran nedokázal včas dokončit ani nejjednodušší zpracování vstupu, a tak nemohl číst karty plnou rychlostí. Jedna společná fortranská DO
smyčka na čtení karet způsobila, že se motor zastavil a nastartoval tak často, aby se zrychlilo opotřebení. S vyrovnávací pamětí by se ovládání čtečky karet mohlo překrývat se zpracováním a čtečka by mohla být spuštěna plnou rychlostí přes velké datové balíčky, ale paměť pro složitější program a pro vyrovnávací paměti byla často nadprůměrná.
I při assembleru a dvojitém ukládání do vyrovnávací paměti nedokázal program pro vypsání balíčku karet ze čtečky IBM 2501 (1 000 karet/minutu) na řádkové tiskárně držet krok, protože překlad ze vzorů otvorů pro karty do EBCDIC pro tiskárnu provedl EBPRT byl příliš pomalý; místo toho bylo potřeba složitější ZIPCO a HLEBC, jako v příkladu.
Ukázka relace APL \ 1130
Následující obrázek ukazuje jednoduchou relaci APL \ 1130. Tato relace byla provedena pomocí simulátoru 1130, který je k dispozici od IBM 1130.org.
Výše uvedená relace ukazuje přihlášení, sčítání celých čísel 1 až 100, generování sčítací tabulky pro celá čísla 1..5 a odhlášení.
Konkurenční systémy
Ve stejném roce jako představení 1130 představila společnost Digital Equipment Corporation menší, levnější a lépe prodávaný 12bitový PDP-8 , uznávaný jako první úspěšný minipočítač.
Vliv 1130
- Brian Utley byl projektovým manažerem 1130 během jeho vývoje a zavádění. Brian na třetí párty 11/30 řekl, že než IBM Marketing pojmenoval 1130, byl známý jako Small Engineering Computer System nebo SECS. Počáteční architektura byla 18 bitů, ale byla změněna na 16 bitů kvůli vlivu vývoje System/360 . Plný dialog jeho prezentace z roku 2005 je k dispozici na IBM1130.org .
- Významný softwarový designér Grady Booch se poprvé seznámil s programováním na IBM 1130:
... bušil jsem dveřmi v místní prodejní kanceláři IBM, dokud se přede mnou prodavač slitoval. Poté, co jsme si chvíli povídali, mi podal Fortran [manuál]. Jsem si jistý, že mi to dal s myšlenkou: „Už nikdy o tom klukovi neuslyším.“ Následující týden jsem se vrátil se slovy: „To je opravdu skvělé. Přečetl jsem to celé a napsal jsem malý program. Kde najdu počítač?“ Ten chlap, k mé radosti, mi našel programování času na IBM 1130 o víkendech a v pozdních večerních hodinách. To byla moje první zkušenost s programováním a musím poděkovat tomu anonymnímu prodejci IBM za zahájení mé kariéry. Děkuji, IBM.
- Guru LISP Guy Steele napsal tlumočníka LISP pro IBM 1130, když byl na střední škole ( Boston Latin School , která měla IBM 1130 pro studenty). Jeho kód a dokumentace pro LISP 1.6 spolu se souhrnem aktuální práce na jeho spuštění pod simulací je k dispozici na IBM1130.org .
- Chuck Moore chtěl svému novému jazyku říkat „Čtvrtý“, ale operační systém IBM 1130 byl omezen na pětimístná jména, takže se mu nakonec říkalo FORTH .
- Dan Bricklin , tvůrce programu VisiCalc , začal s programováním, když se naučil a používal IBM 1130 jako součást projektu National Science Foundation Computer/Math Summer Project pro studenty středních škol, který byl uveden na University of Pennsylvania v roce 1966.
- IBM 1130 s 8 kilowordy jádra byl použit pro první světový výzkum Hledání mimozemské inteligence na Světové rozhlasové observatoři v Ohiu . Toto zařízení detekovalo Wow! signál .
- Charles Goldfarb , otec SGML , popisuje práci při instalaci sázecího systému založeného na IBM 1130, který „nakonec změnil moji kariéru“ a vedl jej ke generickému značkování:
Systém byl počítač IBM 1130, stroj o velikosti stolu s 8 KB hlavní paměti, 512 KB diskovou jednotkou, čtečkou papírových pásek Teletype CX a děrovačkou papírové pásky BRPE a fotomechanickým sazečem Photon 713. Úkol byla moje první zkušenost se správou strojově čitelné databáze dokumentů: Naučil jsem se opatrně srolovat děrovanou papírovou pásku, aby ji bylo možné úhledně uložit do válcových odpadkových papírů.
Mezitím, ačkoli jsem o tom nevěděl, byly zasazeny kořeny generalizovaného značení. Historicky elektronické rukopisy obsahovaly kontrolní kódy nebo makra, která způsobovala formátování dokumentu určitým způsobem („specifické kódování“). Naproti tomu generické kódování, které začalo na konci šedesátých let minulého století, používá popisné značky (například „nadpis“, nikoli „formát-17“).
- Alan Kay použil IBM 1130 v rané práci GUI pro jeho Ph.D. práce v roce 1969.
- Hutchinson Central Technical High School („Hutch Tech“) v Buffalu, NY používala IBM 1130 v národním prvním čtyřletém středoškolském vzdělávacím programu pro počítačové vědy v roce 1969. Robert Santuci byl vedoucím programu počítačové vědy a učil hodiny programování a induktivní logiky .
- Inženýr od IBM byl najat společností Signetics a začlenil řadu architektonických prvků z IBM 1130 do jednočipového procesoru Signetics 2650 .
Dnes 1130
Z odhadovaných 10 000 vyrobených systémů je známo, že od roku 2021 existují následující:
- ACONIT ve francouzském Grenoblu má kompletní systém 1130.
- Computer History Museum ( Mountain View, Kalifornie ) má 1130 systém.
- COSECANS ( Basilej, Švýcarsko ).
- National Museum of Computing (TNMOC) (Bletchley Park, Spojené království) má kompletní systém 1130.
- Univerzitě ve Stuttgartu (Německo) má funkční 1130 systému.
- Carl Claunch v současné době obnovuje systém 1130.
Apokryfy
Spekulace o tom, proč výrobku bylo přiděleno číslo 1130, se soustředily na následující možnosti:
- Protože 1130 byl malý vědecký stroj, číslo bylo vybráno vynásobením 360 (jako v IBM 360 ) π .
- Že 11:30 byla denní doba, kdy plánovači produktů dosáhli slepé uličky ohledně toho, jak produkt nazvat.
- Že 1130 byl 11. počítačový design IBM a měl 30 pokynů.
Jiní spekulovali, že existence IBM 1130 vysvětluje, proč se v rodině strojů PDP-11 nikdy neobjevil žádný počítač s označením „11/30“ .
Viz také
Poznámky
Reference
externí odkazy
- Archiv IBM: Tiskové zprávy IBM 1130 , chronologie, fotografie, složka s fakty.
- Web IBM 1130.org Norm Aleks a Brian Knittel, který obsahuje významné informace o 1130 a simulátor ke stažení, který podporuje prostředí DMS R2V12 a APL.
- www.ibm1130.net je web Howard Shubs věnovaný 1130.
- Osobní účet Arnolda Reinholda z roku 1130. Text odtud byl se svolením začleněn do tohoto článku
- Sada souborů PDF tvořená naskenovanými manuály IBM 1130
- Stránka Kym Farnik na Retro Computing konkrétně 1130
- Diskuse o (tehdy) výpočetním středisku Angle Park, které bylo vybaveno IBM 1130
- Fotografie Bob Rosenbloom IBM 1130
- Materiál IBM 1130 na Columbia University, stránka Computing History.
- Flickr sbírka detailních fotografií pořízených Peterem Vaughanem z IBM 1130 v The National Museum of Computing