IBM 1130 - IBM 1130

IBM 1130
IBM 1130 (1) .jpg
Vývojář IBM Boca Raton
Výrobce IBM
Typ minipočítač
Datum vydání 1965 ( 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 .org

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 .

Konzole IBM 1130

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 .

IBM 1130 s periferiemi, včetně děrovačky čtečky papírové pásky, čtečky/děrovačky karet IBM 1442 (zadní) a plotru IBM 1627 Calcomp.

Popis

Karta SLT s dvojnásobnou šířkou od IBM 1130. Kovové čtvercové plechovky obsahují hybridní obvody.

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.

1130 Monitorujte kontrolní záznamy
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

JOBZá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.

XEQZá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 FILESkontrolní 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, NOCALa FILESpro jádro Load Tvůrce. Záznamy řízení DUP mají podobný formát. Tyto záznamy řídí propojení programu buď pro // XEQpříkaz, nebo pro *STORECIpříkaz DUP .

Kontrolní záznamy supervizora
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 FILEnebo příkazu Assembler FILEpojmenovaným souborům na disku.

Provozní postup

Děrná karta obsahující samonabíjecí program 1130, který by kopíroval balíček karet umístěných za ním ve vstupní násypce.

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ří // DUPspuštění programu Disk Utility Program (odstranění souborů nebo přidání souboru v dočasné oblasti do kolekce souborů) a // XEQspuš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á kazeta IBM 2315
2315 kompatibilní disková kazeta. (Rozměry 1 3/8 x 15 palců)

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 // DUPpří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 // DUPkartou ovládání úlohy , následovanou jednou nebo více kartami kontroly:

Běžné příkazy DUP
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říklad řídicí karty IBM 1130 DUP

Příslušenství

Čtečka/ úderník karet IBM 1442
Bubnový plotter IBM 1627 .

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ž Ase 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 Aotočí 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 SIMPLrozvě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í LIBFpseudo-operace, která sestavuje nikoli přímku BSIdo 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 dispdisp

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 Binstrukce.)

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 0druhý 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 1MDX 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 PRECISIONVolba 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 PART1a 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 LINKpří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 STARTmá 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 HLEBCproveden, 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 HLEBCje 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á DOsmyč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í.
ukázková relace apl \ 1130 apl \ 1130

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“).

Dnes 1130

Z odhadovaných 10 000 vyrobených systémů je známo, že od roku 2021 existují následující:

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