1. How many absentee downtimes may I receive a year?
Answer: 2, and you must pay the game fee for each.
2. How many extended DT's may I have for the year?
6 is the max number per year.
3. When are extended DT's due?
One week after the normal DT submission date.
4. How to I request an extended DT?
5. How do I submit a Downtime?
Fill out the form. Hit submit....tada, your done!
6. What can I do on an absentee Down time?
You may feed and patrol, and investigate.
You may spend and use your backgrounds.
However, you may not do anything that interacts with other players. In example, you may not investigate Bob's hunting area if you are not Bob. You may also not teach Bob Potance.
7. Do I need to spend a DT action to learn an in-Clan discipline?
8. What kinds of things can I do with my DT actions?
Pg. 307 of the Rules goes more into details.


Winckley is also able to offer a fully outsourced bookkeeping function. We can take from you a bag of invoices, bank statements and primary records and we will deal with the rest.
Your company may not be large enough to justify a full time bookkeeper, so why not outsource this task to us! We have a large pool of experienced bookkeepers who will be able to efficiently process your books.
Due to our internal processes and the ability to cover each other's work, you never need to worry about holidays or sickness from your bookkeeper ever again!
Why not ask us for a quote – it might be a lot less than you are expecting and what would you do with all that extra time!


Thank you for contacting Midland TX Towing! One of our dispatcher will contact you very quickly. If this is an emergency please dial 911. Our 24 hr wrecker service is here to help no matter the time, weather or location. Thank you again for contact us!


Windows 10 build 16226 ISO is now available for download. Microsoft has released a new Fall Creators Update Insider build 16226 for PCs with new features and change. The new Insider Preview build also brings improvements to Storage Sense, new Remote Desktop Settings page, improvements to My People, updated Calculator and more.
Now, you can share a file in File Explorer via the right-click context menu. The Task Manager now includes GPU info which shows GPU utilization information for each separate GPU component as well as graphics memory usage stats. The build also added new Edge browser features and emojis.
All-in-One ISO includes all Windows 10 editions like Home, Pro, Cloud, Enterprise and Education Editions in one single ISO file. Also, read how to create bootable USB drive with ISO. Get the download link from below.


text:
<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ Copyright (c) 2010-2013 Evolveum
  ~
  ~ Licensed under the Apache License, Version 2.0 (the "License");
  ~ you may not use this file except in compliance with the License.
  ~ You may obtain a copy of the License at
  ~
  ~     http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing, software
  ~ distributed under the License is distributed on an "AS IS" BASIS,
  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License.
  -->

<resource oid="ef2bc95b-76e0-59e2-86d6-999902d3abab"
		  xmlns="http://midpoint.evolveum.com/xml/ns/public/common/common-3"
          xmlns:c="http://midpoint.evolveum.com/xml/ns/public/common/common-3"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xmlns:ri="http://midpoint.evolveum.com/xml/ns/public/resource/instance-3">

	<name>Embedded Test Derby</name>
	<connectorRef oid="will-be-supplied-by-the-test-code"/>
	<connectorConfiguration xmlns:icfi="http://midpoint.evolveum.com/xml/ns/public/connector/icf-1/bundle/org.forgerock.openicf.connectors.databasetable-connector/org.identityconnectors.databasetable.DatabaseTableConnector"
	               xmlns:icfc="http://midpoint.evolveum.com/xml/ns/public/connector/icf-1/connector-schema-3">

		<icfc:configurationProperties>
			<icfi:jdbcDriver>org.apache.derby.jdbc.ClientDriver</icfi:jdbcDriver>
			<icfi:jdbcUrlTemplate>jdbc:derby://%h:%p/%d</icfi:jdbcUrlTemplate>
			<icfi:keyColumn>login</icfi:keyColumn>
			<icfi:passwordColumn>password</icfi:passwordColumn>
			<icfi:password><clearValue>secret</clearValue></icfi:password>
			<icfi:table>users</icfi:table>
			<icfi:user>midpoint</icfi:user>
			<icfi:database>target/derbyMidPointTest</icfi:database>
			<icfi:host>localhost</icfi:host>
			<icfi:port>11527</icfi:port>
			<!--  <icfi:suppressPassword>false</icfi:suppressPassword>  -->
		</icfc:configurationProperties>

	</connectorConfiguration>
	<c:schema>
	  <!-- Schema is empty. Schema should be generated by provisioning on the first use of this resource. -->
	</c:schema>
	<schemaHandling>
        <objectType>
            <intent>default</intent>
            <default>true</default>
            <objectClass>ri:AccountObjectClass</objectClass>
            <credentials>
            	<password>
            		<fetchStrategy>explicit</fetchStrategy>
            	</password>
            </credentials>
        </objectType>
	</schemaHandling>
</resource>

redpajama_set_name: RedPajamaGithub


text:
package com.akotkowski.snooker;

import com.akotkowski.snooker.model.*;
import com.akotkowski.snooker.model.impl.SimpleModelFactory;
import com.akotkowski.snooker.util.PotPossibilities;
import com.akotkowski.snooker.util.Util;

import java.util.*;

public class Match {

    private Frame currentFrame = null;
    private MatchEventListener listener;
    private MatchModel match;
    private final ModelFactory modelFactory;

    public Match(int frameCount, ModelFactory modelFactory) {
        this.modelFactory = modelFactory;
        this.match = modelFactory.createMatch();
        init(frameCount);
    }

    public Match(int frameCount) {
        this.modelFactory = new SimpleModelFactory();
        this.match = modelFactory.createMatch();
        init(frameCount);
    }

    public Match(int frameCount, MatchModel match2, ModelFactory modelFactory) {
        this.modelFactory = modelFactory;
        this.match = match2;
        init(frameCount);
    }

    public Match(MatchModel match) {
        this(match, new SimpleModelFactory());
    }

    public Match(MatchModel match, ModelFactory modelFactory) {
        this.modelFactory = modelFactory;
        this.match = match;
        this.init(match.getFrameCount());
        for (final FrameModel frame : match.getFrames()) {
            if (!frame.isCompleted()) {
                this.currentFrame = new Frame(frame, modelFactory, this);
            }
        }
        this.recountFrames();
    }

    public void init(int frameCount) {
        match.setFrameCount(frameCount);
    }

    public void startNewFrame() {
        FrameModel frame = modelFactory.createFrame();
        List<FrameModel> l = (List<FrameModel>) match.getFrames();
        l.add(frame);
        frame.setMatch(match);
        currentFrame = new Frame(frame, modelFactory, this);
        frame.setMatch(match);
    }

    public void resignMatch(Player player) {
        this.currentFrame.resign(player);
        this.recountFrames();
        if (this.listener != null) this.listener.matchEnded(this);
    }

    private void recountFrames() {
        Map<Player, Integer> results = new HashMap<Player, Integer>();

        for (FrameModel frame : match.getFrames()) {
            if (frame.isCompleted())
                results.put(frame.getWinner(), Util.getOrDefault(results, frame.getWinner(), 0) + 1);
        }
        if (Util.getOrDefault(results, Player.ONE, 0) > Util.getOrDefault(results, Player.TWO, 0)) {
            if (Util.getOrDefault(results, Player.ONE, 0) >= match.getMaxResult()) {
                match.setWinner(Player.ONE);
                match.setCompleted(true);

            }
        } else {
            if (Util.getOrDefault(results, Player.TWO, 0) >= match.getMaxResult()) {
                match.setWinner(Player.TWO);
                match.setCompleted(true);

            }
        }
        match.setResult(Player.ONE, Util.getOrDefault(results, Player.ONE, 0));
        match.setResult(Player.TWO, Util.getOrDefault(results, Player.TWO, 0));
    }

    public Frame getCurrentFrame() {
        return currentFrame;
    }

    public int getResult(Player player) {
        return match.getResult(player);
    }

    public void setMaxResult(int maxResult) {
        if (maxResult >= match.getFrames().size())
            match.setMaxResult(maxResult);
    }

    public String getPlayer(Player player) {
        return match.getPlayer(player);
    }

    public void setPlayer(Player player, String playerName) {
        match.setPlayer(player, playerName);
    }

    public void registerPot(Ball ball, Player player) {
        this.getCurrentFrame().registerPot(ball, player);
    }

    public void registerFreeBall(Ball ball, Player player) {
        this.getCurrentFrame().registerFreeBall(ball, player);
    }

    public void onFrameCompleted() {
        this.recountFrames();
        if (match.isCompleted() == true) {
            if (this.listener != null)
                this.listener.matchEnded(this);
        } else {
            if (this.listener != null)
                this.listener.frameEnded(this);
        }

    }

    public List<FrameEventModel> getBreaks() {
        List<FrameEventModel> ret = new ArrayList<FrameEventModel>();
        for (FrameModel frame : match.getFrames()) {
            List<FrameEventModel> brakeInFrame = Frame.getBreaks(frame);
            ret.addAll(brakeInFrame);
        }
        Collections.sort(ret, new Comparator<FrameEventModel>() {
            @Override
            public int compare(FrameEventModel o1, FrameEventModel o2) {
                return Integer.compare(o1.getScore(), o2.getScore());
            }
        });
        return ret;
    }

    public List<FrameEventModel> getEvents() {
        List<FrameEventModel> list = new ArrayList<FrameEventModel>();
        for (FrameModel frame : match.getFrames()) {
            for (FrameEventModel inFrame : frame.getFrameEvents()) {
                list.add(inFrame);
            }
        }
        return list;
    }

    public PotPossibilities getCurrentPotPossibilities(Player pl) {
        if (this.getCurrentFrame() == null) return null;
        return this.getCurrentFrame().getPotPossiibilities(pl);
    }

    public void endMatch() {
        match.setCompleted(true);
    }

    public MatchEventListener getListener() {
        return listener;
    }

    public void setListener(MatchEventListener listener) {
        this.listener = listener;
    }

    public int getMaxFrameCount() {
        return match.getMaxResult() * 2 - 1;
    }

    public void registerMultipleRedPot(int i, Player player) {
        this.getCurrentFrame().registerMultipleRedPot(i, player);

    }

    public void registerFaul(int i, Player actualPlayer, int reds) {
        this.getCurrentFrame().registerFaul(Ball.getByValue(i), actualPlayer, reds);
    }

    public MatchModel getMatch() {
        return match;
    }

    public void setMatch(MatchModel match) {
        this.match = match;
    }

    public boolean undo(int n) {
        boolean result = false;
        for (int i = 0; i < n; i++) if (this.undo()) result = true;
        return result;
    }

    public boolean undo() {
        if (this.getCurrentFrame() == null) return false;
        if (this.getCurrentFrame().undo() == false) {
            if (this.match.getFrames().size() > 1) {
                modelFactory.removeFrame(this.currentFrame.getFrame());
                this.match.getFrames().remove(this.currentFrame.getFrame());
                final FrameModel frame = this.match.getFrames().get(this.match.getFrames().size() - 1);
                this.currentFrame = new Frame(frame);
                this.currentFrame.setMatch(this);
                Player player = this.getCurrentFrame().getFrame().getWinner();
                if(player!=null) {
                    getMatch().setResult(player, getMatch().getResult(player) - 1);
                }
                this.getCurrentFrame().undo();
            }
        } else {
            return true;
        }
        return false;
    }

    public void surrenderFrame(Player player) {
        this.getCurrentFrame().registerRetire(player);
        this.recountFrames();
        if (this.match.isCompleted()) {
            if (this.listener != null) this.listener.matchEnded(this);
        }
    }

    public void surrenderMatch(Player player) {

        this.getCurrentFrame().registerRetire(player);
        FrameEventModel fe = modelFactory.createFrameEvent();
        fe.setPlayerScored(player);
        fe.setType(FrameEventModel.Type.MATCH_SURRENDER);
        fe.setFrame(this.getCurrentFrame().getFrame());
        List<FrameEventModel> lst = (List<FrameEventModel>) this.getCurrentFrame().getFrame().getFrameEvents();
        lst.add(fe);
        this.getCurrentFrame().getFrame().setWinner(player.getOponent());
        this.getCurrentFrame().getFrame().setCompleted(true);
        this.recountFrames();
        this.getMatch().setWinner(player.getOponent());
        this.getMatch().setCompleted(true);
        if (this.listener != null) this.listener.matchEnded(this);
    }

    public FrameModel getFrameNumber(int nmb) {
        if (nmb < 0 || nmb > this.getMatch().getFrames().size() - 1)
            return null;
        return this.getMatch().getFrames().get(nmb);
    }

    public void registerMiss() {
        this.getCurrentFrame().registerMiss();
    }

    public void setReds(int reds) {
        this.getMatch().setReds(reds);
    }
}


Alone in the throng of competition and cruelty, with nothing but guts, is defiance enough to ascend above the ordeals of the Artifice Academy?
Mad science, friendship and betrayal, Black Sand, politics: the Artifice Academy is a hard place: every moment a lesson, every lesson a trap. Inga dares to hope, walking a tightrope of isolation between failure and madness.
Marvin will lose everything unless he dooms Inga to a fate worse than death. Will he seize the world at the cost of his friends and his soul? The Artifice Academy is a no-mercy boarding school for mechanics in a gritty steampunk world. If you like young adults in peril making hard choices, join the Academy today.


text:
UFO - Allarme rosso... attacco alla Terra! è un film di fantascienza del 1971, primo adattamento tratto dalla serie televisiva di successo UFO di Gerry Anderson.

Produzione
Il lungometraggio, distribuito per il mercato italiano nel 1973, aveva l'intento di sfruttare il successo di pubblico televisivo della serie UFO e fu pubblicizzato come "un grande film a colori che non vedrete mai in TV", perché, a quel tempo, la RAI trasmetteva UFO in bianco e nero.

Il film fu realizzato unendo tre episodi: il n. 19 (The cat with ten lives), il n. 23, (The Psychobombs) ed il n. 24 (Timelash), montati al fine di ricavarne un'unica trama. L'opera, nonostante il grande successo commerciale, non incontrò il parere favorevole della critica in quanto lo si ritenne un film realizzato per il grande schermo piuttosto che un montaggio di tre episodi televisivi differenti ma ebbe comunque il merito, insieme ai successivi UFO ...annientate SHADO, uccidete Straker... stop e UFO - Distruggete Base Luna, di chiarire al pubblico alcuni retroscena della serie televisiva quali la vita privata ed il reclutamento del comandante Straker, nonché la genesi dell'organizzazione SHADO.

In seguito al successo ottenuto vennero realizzati altri cinque
lungometraggi, nei quali l'opera di riassemblaggio e di mutamento dei dialoghi divenne così evidente e disinvolta da stravolgere e addirittura storpiare l'intero intreccio narrativo.

La colonna sonora, per una curiosa svista, venne attribuita al compositore John Barry invece che all'originale Barry Gray, così il film venne arricchito con le note sfarzose di Agente 007.

Trama

Prima parte
Nei sotterranei di uno studio cinematografico si trova il quartier generale della SHADO, l'organizzazione segreta per la difesa contro gli attacchi di una imprecisata popolazione extraterrestre; l'organizzazione possiede anche una base sulla luna da dove mezzi intercettori possono decollare per distruggere gli UFO che stanno per entrare nell'atmosfera terrestre. Durante un attacco alla base lunare il pilota Jim Regan viene ripreso dal comandante Ed Straker  a causa del suo comportamento avventato e richiamato sulla terra. Dopo un incontro con il colonnello Foster egli partecipa, insieme alla moglie Jean, ad una seduta spiritica da dove esce piuttosto innervosito e lei nota in lui strani comportamenti.

Durante il rientro a casa lungo la strada si fermano per raccogliere un gatto randagio ma vengono aggrediti dagli alieni e la moglie viene rapita; Regan fa velocemente ritorno alla base per comunicare quanto gli è accaduto ma Straker gli ordina di tornare subito sulla luna per avere ogni pilota a disposizione, mentre il gatto riesce ad intrufolarsi nella base. Il giorno dopo l'UFO riaffiora da un lago e gli intercettori escono per colpirlo ma il pilota non attacca il mezzo alieno dove forse si trova la moglie, ed, una volta rientrato sulla terra, sembra condizionato dal gatto che si trova nel suo alloggio e la sera aggredisce Paul Foster, chiamato a sostituirlo, con le movenze di un gatto e, contrariamente agli ordini ricevuti, fa ritorno alla base lunare.

Straker, dopo il racconto di Foster, intuisce il collegamento che può esserci tra il folle comportamento di Regan e la presenza del gatto e capisce che il pilota, ormai condizionato, ha ricevuto l'ordine dagli alieni di distruggere con il suo intercettore la base lunare e da ordine di trovare il gatto con una muta di cani che riescono a raggiungerlo un attimo prima dello schianto ma troppo tardi perché il pilota possa salvarsi.

Seconda parte
Durante una notte un UFO condiziona tre soggetti: una donna, Linda Simmonds, una segretaria di azienda, e due uomini, Daniel Clark, un bancario, e Clem Mason, un costruttore edile, allo scopo di trasformarli in "kamikaze" per fare saltare le installazioni SHADO.
Prima che possano adempiere ai loro compiti la donna uccide un agente della polizia stradale che l'aveva fermata e Clark aggredisce il comandante Straker tramortendolo; nella macchina del comandante, Clark lascia un messaggio degli alieni che intimano all'organizzazione di arrendersi entro 24 ore altrimenti verranno fatte saltare la centrale elettrica, la base sottomarina Skydiver ed infine il quartier generale SHADO: i primi due attentati vengono realizzati con la conseguente morte dei due uomini mentre Linda Simmonds viene rintracciata attraverso la targa dell'automobile fornita dall'agente di polizia e ricercata dopo avere ucciso il suo direttore.

Foster riesce a trovarla ed a portarla alla base mentre l'UFO viene avvistato; una volta all'interno la donna riesce a liberarsi e, ancora sotto condizionamento, tenta di farla esplodere. Straker sa che l'UFO sta per essere abbattuto e, giocando sul filo dei secondi, riesce a ritardare per qualche attimo l'azione di Linda che, tornata vulnerabile dopo l'abbattimento dell'UFO, rimane folgorata dopo avere afferrato i cavi dell'alta tensione, non riuscendo a fare esplodere la base.

Terza parte
Il comandante Straker entra nella sala controllo ed inizia a distruggere le apparecchiature sotto lo sguardo attonito dei presenti; travolgendo Foster ed i tecnici che avevano tentato di fermarlo, fugge all'esterno ed inizia a correre negli studi cinematografici inseguito dal colonnello e dagli agenti; lungo la strada essi trovano Turner, un operatore radar, morto, accasciato all'interno di un'automobile elettrica e, raggiunto il comandante su un terrazzo, trovano anche il colonnello Virginia Lake tramortita e Foster, in una tasca del vestito del comandante, trova una fiala di X50.

Il comandante viene portato in infermeria e, sotto sedativi, inizia a ricordare quanto gli è accaduto: la sera prima, percorrendo in macchina una strada insieme al colonnello Lake, avevano subito un attacco da un UFO ed al rientro agli studi cinematografici avevano inspiegabilmente trovato non più la notte ma il giorno ed ogni forma di vita immobilizzata; scesi nella sala controllo avevano trovato la medesima situazione e si erano resi conto che gli alieni avevano fermato il tempo.
Avvertendo che anche loro stavano per essere immobilizzati si erano recati al centro medico per iniettarsi una dose di X50, un preparato sperimentale che aumenta le forze e la velocità di reazione ma successivamente non utilizzato in quanto ritenuto troppo pericoloso.

Una volta riavutisi capiscono che l'UFO ha bisogno che il campo di pressione, creato per fermare il tempo, si esaurisca prima di atterrare e cominciano ad inseguire Turner che, condizionato dagli alieni, ha ricevuto da loro la promessa di essere il nuovo capo in cambio della creazione del "corridoio" per potere fermare il tempo. Dopo che l'inseguimento non ha dato esito i due avvistano l'UFO che si sta avvicinando e Straker preleva un bazooka per tentare di colpirlo ma Turner lo aggredisce tramortendo il colonnello e rubando la chiave della sicura dell'arma; il comandante lo rincorre e riesce ad ucciderlo, tornando precipitosamente sulla terrazza e riuscendo ad abbattere l'UFO e, una volta accertatosi delle condizioni del colonnello, fa ritorno in sala comando distruggendo le apparecchiature e con esse il programma inserito da Turner per fermare il tempo.

Finito il racconto il generale Henderson ed il medico capiscono quanto è successo e che ancora una volta il comandante è riuscito a salvare il mondo.

Distribuzione
Fu distribuito anche in Germania con il titolo 80000 Meilen durch den Weltraum e in Spagna con il titolo OVNI los diablos rojos atacan la tierra.

Voci correlate
UFO (serie televisiva)

Altri progetti

Collegamenti esterni

Scheda del film nella Guida al cinema di fantascienza di Mongini e Carità

Film sugli extraterrestri

redpajama_set_name: RedPajamaWikipedia


text:
Texas A&M University - Kingsville
Kingsville, TX
https%3A//www.teenlife.com/college/texas-am-university-kingsville/
Texas A&M-Kingsville is South Texas' greatest university, offering more academic program sand degrees, providing better learning and living facilities, doing more research, awarding more scholarships and producing more successful graduates than any other college or university in the region.
Texas A&M University-Kingsville grew out of the teacher college or "normal school" movement that swept Texas and the nation in the early 1900s. Chartered in 1917 but not opened until 1925 because of America's entry into World War I, the University is the oldest continuously operating public institution of higher learning in South Texas. Shortly after beginning life as South Texas State Teachers College, its role was expanded to embrace a wider array of programs. As its mission has expanded, its name has changed to reflect its wider scope. Its first name change, to Texas College of Arts and Industries, came in 1929. In 1967 the name changed to Texas A&I University. The University became a member of the Texas A&M University System in 1989 and in 1993 changed its name to Texas A&M University-Kingsville to reflect that membership.
Texas A&M-Kingsville is South Texas' greatest university, offering more academic programs and degrees, providing better learning and living facilities, doing more research, awarding more scholarships and producing more successful graduates than any other college or university in the region.
Texas A&M-Kingsville seeks to provide quality undergraduate and graduate programs for students of all ages through a judicious blend of liberal and career education programs. The emphasis is on providing an intellectually challenging education reflecting high standards of academic performance. Texas A&M-Kingsville is dedicated to serving an ethnically and culturally diverse population. The University is committed to its mission of teaching, research, and service in South Texas for the advancement of knowledge and of regional development.
Biological Sciences, Communications, Recreation and Fitness Services, STEM
In-State Tuition:
Want More Information about Texas A&M University - Kingsville?
Your request will be sent directly to Texas A&M University-Kingsville.
By submitting this form I confirm that I am at least 13 years of age and give my consent to be contacted by Texas A&M University-Kingsville by email as well as by phone and/or mail (if provided).

redpajama_set_name: RedPajamaCommonCrawl


If you intend to start a business in britain and wish to import goods to the country then you should make sure you make payment for proper customs vat on imported goods so your costs match your predictions. You can surely ensure improved profit margins if your purchase and sale price are usually in tune with all your calculations.
The hm revenue and customs department or hmrc vat department handles duties on imported services and goods in the UK, and in addition handles vat returns filed by vat registered traders in the country. Once your taxable sales cross 70,000 pounds in 12 months you might have to get vat registration. This in turn allows you to obtain a vat number and generate a vat invoice for each sale made in the regional market. You'll now need to file a vat return at the designated period and pay vat based on the current vat rate based upon the sales.
However, before you begin selling your goods or services, you might need to import them into the UK. Your goods will most probably fall into on the list of 14,000 hm customs vat classifications and you will need to pay the appropriate duties on those goods. In case you plan to import tobacco or alcohol products then you'll need to pay excise duties on the same. It really is thus extremely important to check on the appropriate classification of your goods so that you end up making payment on the exact amount of duties specified on it rather than pay more and increasing your costs or paying less and getting into trouble at a later date.
After you have paid all of the relevant import vat, or customs, or excise duties then you will also need to charge the appropriate vat rates while selling those goods locally. Your merchandise might attract the conventional vat rate of 17.5% or a lower rate of 5% or even be vat exempt based on its classification. This rate will definitely vary in other EU countries and therefore you ought to have up-to-date knowledge on uk vat and eu vat rates while importing or exporting your goods as well as selling them locally.
Since it might be quite challenging for you to keep updating your understanding on changes taking place in customs and vat rates, you should appoint a capable customs and vat agent to handle your import and sales duties. Your agent would look after all paperwork related to customs duties, check on whether your goods are classified correctly, calculate all vat figures plus file your vat returns in time. Your agent would likewise be able to assist you in vat registration and offer other vat services if your business has just been established.
If you plan to import goods into the UK or in any other EU country a detailed knowledge on all vat rules, customs and excise duties, and operations on vat returns is critical for healthy business growth. One mistake could result in earning the wrath of your customs and excise vat department and put a spanner on future vat refunds. While importing goods to your country you should certainly make sure you pay proper customs vat on imported goods so as to retain complete control over your costs.


text:
The IBM 1130 Computing System, introduced in 1965,[3] was IBM's least expensive computer at that time. A binary 16-bit machine, it was marketed to price-sensitive, computing-intensive technical markets, like education and engineering, succeeding the decimal IBM 1620 in that market segment. Typical installations included a 1 megabyte disk drive that stored the operating system, compilers and object programs, with program source generated and maintained on punched cards. Fortran was the most common programming language used, but several others, including APL, were available.
IBM Boca Raton
minicomputer
Introductory price
~$1,000 per month rental, equivalent to about $8,600 in 2021
early 1980s[1]
Units shipped
10,000 est.[1]
Disk Monitor 2 (DM2)
16-bit, word addressed, 15-bit address space
magnetic core
IBM 2310 disk drive
Removable storage
IBM 2515 single disk cartridge
IBM 1627 Calcomp Plotter, IBM 2250, optional
punched card, paper tape, console
IBM Synchronous Communication Adaptor (SCA)
desk-size: width 58.5 in, depth 29 in, height 44.125 in[2]
660 lb[2]
small engineering companies, schools
via Fortran
IBM 1620, IBM 650
IBM Series/1
IBM System/7
IBM 1800 process control system
ibm1130.org
IBM 1130 console
The 1130 was also used as an intelligent front-end for attaching an IBM 2250 Graphics Display Unit, or as remote job entry (RJE) workstation, connected to a System/360 mainframe.
IBM 1130 with peripherals, including paper tape reader punch, IBM 1442 card reader/punch (rear) and IBM 1627 Calcomp plotter.
1.1 Models
1.1.1 Follow-on products
1.1.2 Chronology
3 Job control
3.1 Monitor Control Records
3.2 Supervisor Control Records
4 Operating procedure
5 Disk organization
6 Disk Utility Program (DUP)
7 Peripheral devices
8 Instruction set overview
9 Programming
9.1 Subprograms
9.2 Linkage to library routines
9.3 Code modification
9.3.1 By the Fortran compiler
9.3.2 By the user
9.4 Extended precision
9.5 Large Fortran programs
10 Programming examples
10.1 Sample assembler program deck
10.1.1 Asynchronous I/O and performance
10.2 Sample APL\1130 session
11 Competing systems
12 Influence of the 1130
13 1130s today
14 Apocrypha
DescriptionEdit
A double width SLT card from an IBM 1130. The square metal cans contain the hybrid circuits.
The total production run of the 1130 has been estimated at 10,000.[4] The 1130 holds a place in computing history because it (and its non-IBM clones) gave many people their first direct interaction with a computer. Its price-performance ratio was good and it notably included inexpensive, removable disk storage, with reliable, easy-to-use software that could be in several high-level languages. The low price (from around $32,000 or $41,000 with disk drive)[3] and well-balanced feature set enabled interactive "open shop" program development.
The IBM 1130 uses the same electronics packaging, called Solid Logic Technology (SLT), used in System/360. It has a 16-bit binary architecture, as do later minicomputers like the PDP-11 and Data General Nova.
The address space is 15 bits, limiting the 1130 to 32,768 16-bit words (65,536 bytes) of memory. The 1130 uses magnetic-core memory, which the processor addresses on word boundaries, using direct, indirect, and indexed addressing modes.
ModelsEdit
IBM implemented five models of the 1131 Central Processing Unit, the primary processing component of the IBM 1130. The Model 1 through Model 5 describe the core memory cycle time, as well as the model's ability to have disk storage. A letter A through D appended to the model number indicates the amount of core memory installed.
IBM 1131 Central Processing Unit weighs about 760/1050 lb (345/477 kg).[5]
Memory cycle time
Core memory
3.6 μs,
no internal disk
plus disks
5.6 μs
(3.6 μs: see below),
single disk
Model 1A Model 2A ——— Model 4A ———
Model 1B Model 2B Model 3B Model 4B Model 5B
Model 1C Model 2C Model 3C ——— Model 5C
Model 1D Model 2D Model 3D ——— Model 5D
The Model 4 was a lower-priced product with a 5.6 μs cycle time. Some purchasers of performance upgrades observed that the field adjustment to achieve the improvement was surprisingly trivial.
The IBM 1132 printer relies on the 1130 processor rather than internal logic to determine when to fire the print wheels as they rotated. Printers for the Model 4 run more slowly, but the slower processor still can not keep up with it. The hardware manual discloses that when the Model 4 was servicing the two highest-level interrupts (the level 0 card-reader column interrupt or the level 1 printer interrupt), it ran at the faster 3.6 μs cycle time. Some users of the Model 4 would write a phony printer driver that did not dismiss the printer interrupt, in order to benefit from the higher processor speed. However, lower-level interrupts are disabled during this interval, even the end-of-card interrupt (level 4) from the 1442 card reader.
Follow-on productsEdit
The IBM 1800, announced November, 1964,[6] is a predecessor of the IBM 1130 for process control applications. It uses hardware rather than core memory for the three index registers and features two extra instructions (CMP and DCM) plus extra interrupt and I/O capabilities. It is a successor to the IBM 1710, as the IBM 1130 is a successor to the IBM 1620.
The IBM 1500 is a multi-user educational system based around either an IBM 1130 or an IBM 1800. It can connect to up to 32 student work stations, each with a variety of audio-visual capabilities.
Other than these, IBM produced no compatible successor systems to the 1130. The IBM System/7 is a process control and real-time system, and the IBM Series/1 is a general-purpose 16-bit minicomputer, both having different architectures from the 1130, and from each other.
ChronologyEdit
February 11, 1965 – IBM introduces the 1130 (Models 1A, 1B, 2A, and 2B). Also announced is the IBM 1132 printer, the lowest cost online computer printer ever announced by IBM at that time.
Fourth quarter 1965 – First customer shipments begin from the San Jose plant.
March 31, 1966 – IBM introduces the IBM 1500 educational system.
April 1966 – IBM 1800 ships.[7]: 497
August 9, 1966 – IBM rolls out the 1130 synchronous communications adapter, which permits the small 1130 system to be connected by regular leased telephone lines to, and function as a communications terminal for, any model of the IBM System/360.
April 17, 1967 – A four-way expansion of the 1130 is announced (Models 2C, 2D, 3B, 3C, and 3D), involving:
Five times the disk storage and four times the core memory;
An additional processing speed almost 40 percent faster than previously available;
More and faster peripheral equipment, including an optical mark reader;
An improved commercial programming package.
January 1968 – First shipments begin of the 1130 Models 2C, 2D, 3B, 3C, and 3D.
July 1968 – The Boca Raton plant begins shipping the 1130.
July 22, 1971 – 1130 Models 4A and 4B are introduced at new levels of economy.
September 1971 – First customer shipments begin of the 1130 Model 4.
May 31, 1972 – Models 1C, 1D, 5B, 5C and 5D are announced.
1973 - The Xerox 530 was marketed as a possible successor to IBM 1130 customers.[8][9][10] Orders for the Xerox 530 were deemed "encouraging" as of January 1974.[11]
SoftwareEdit
To maximize speed and conserve space, the operating system and compilers are written entirely in assembly language and employ techniques that are rare today, including intermixing code and data as well as self-modifying code.
Much user programming is done in Fortran. The 1130 Fortran compiler can run on a machine with only 4,096 words of core—though the compiled program might not fit on such a machine. In this multi-pass compiler, each "phase" processes the entire source program and takes it another step toward machine code. For example, the first phase reads the source statements into memory, discards comment lines, removes spaces except in text literals, concatenates continuation lines and identifies labels. The compiler is available in a disk-resident version as well as on 8-channel punched paper tape or punched cards.
The most widely used operating system for the 1130 is the Disk Monitor System Version 2 (DM2) introduced in 1967. DM2 is a single-task batch-oriented system. It requires a system with at least 4 KB of core memory and one integrated 2310 disk drive for system residence. The Supervisor is tiny by modern standards, containing assorted system details such as first-level interrupt routines, called Interrupt Level Subroutines, plus the disk driver and routines to load the interpreter of job control commands and the card reader driver. Device drivers for other I/O devices required by a job are incorporated as part of the loading of that job, which might also include the replacement of the basic disk driver by a more advanced driver. During the execution of a job, only a resident monitor, called the Skeleton Supervisor, resides in memory. This Supervisor requires just 1020 bytes, so a task's first available memory starts with address /01FE (hexadecimal) or word 510. When the job ends or is aborted, the supervisor loads the Monitor Control Record Analyzer (MCRA) to read the job control for the next. While the job is running, the Supervisor is inactive. Aside from device drivers and interrupt processing all CPU time is entirely devoted to the job's activities. Other programs distributed as part of the operating system are a core dump utility, DUMP, and the Disk Utility Program, DUP.
A Card/Paper Tape Programming System was available to support systems without disk.
There is a hierarchy of device drivers: those with names ending in Z are for Fortran, such as DISKZ, while assembler programmers might use DISK0, and DISK1 was even faster at reading multiple disk sectors. But DISKZ starts its sector addressing with the first available unused sector, while the others start with sector zero of the disk, making it possible for a programmer unfamiliar with disk organization to inadvertently overwrite the bootstrap loader.
Other programming languages available on the 1130 include
APL,[12]
COBOL,[note 1]
FORTH,
PL/I (in the form of the SL/1 interpreter),[note 2] and
RPG.[note 3]
There is even a French language ALGOL compiler, in which for example "Debut ...Fin;" take the place of "Begin ... End;". All its messages are in French, so "Bonne compilation" is the goal.
Eastern Michigan University developed a Fortran IV compiler for the 1130, known as Fortran-EMU, as an alternative to the Fortran IV (subset) compiler provided by IBM. It adds many Fortran Iv features not supported by the IBM compiler, including the LOGICAL data type, six-letter variable names, and enhanced diagnostics. The Fortran-EMU compiler was distributed as a deck of punched cards in a disk image file format with all the remaining system area deleted, to prevent copying other modules that would normally reside on the same disk, such as the assembler or compilers.
Oklahoma State University developed an ALGOL 68 compiler, written in ANSI Fortran 1966.[13][14][15]
A FOCAL interpreter was developed at the University of Michigan.
IBM also distributed a large library of programs, both IBM-supported (Type I and II) and unsupported (Type III and IV).
Since the 1130 was aimed primarily at the scientific market, scientific and engineering programs predominated:
Scientific Subroutine Package
Draw and Plot Subroutines
Electric Power System Load Flow Program
Multiple Regression
Calculation of Electrical Distribution System Fault Currents
Pipe Analysis
COGO coordinate geometry
Continuous System Modeling (CSMP)
Linear Programming Mathematical optimization Subroutine System
Structural Engineering System Solver (STRESS)
Statistical System[16]
The 1130 also occupied a niche as a data processing machine for smaller organizations:
1130 Commercial Subroutine Package
CPM/PERT
There is also special-purpose software:
Remote Job Entry (RJE)[17]
Typesetting[18]
Job controlEdit
Batch operation of the 1130 is directed by control records in the primary input stream (card or paper tape reader). There are two types of control records, monitor control records and supervisor control records.[19]
Monitor Control RecordsEdit
Monitor control records are identified by //␢ followed by a "pseudo-operation code" in columns 4–7. "␢" represents a single blank.
1130 Monitor Control Records
Control record
//␢* comments Provides a comment to be printed in the job listing in columns 5 thru 80
//␢JOB Identifies the start of a job
//␢ASM Invokes the Assembler
//␢FOR Invokes the FORTRAN compiler
//␢PAUS Stops the system until the console START key is pressed
//␢TYP Switches from the printer to the console for control record input and output
//␢TEND Cancels the effect of //␢TYP
//␢DUP Invokes the Disk Utility Program
//␢XEQ Reads and transfers control to a mainline program
The JOB record can have a "T" in column 8 to indicate that any files added to the User Area by this job should be deleted at the end. Columns 11 thru 15 can contain a cartridge label; the system verifies that the specified cartridge is mounted before proceeding.
The XEQ record may contain the name of the program to be run in columns 8 thru 12. If this is omitted, the program currently in Working Storage will be executed. If column 14 contains "L", and the program is in Disk System Format (not core-image) a core map will be printed by the Core Load Builder. If this statement is followed by LOCAL NOCAL, or FILES Supervisor Control Records, columns 16 and 17 contain the count of these records. Column 19 optionally indicated which disk driver routine is to be linked. "0", "1", or "N", request DISK1, DISK2, or DISKN, any other character, including blank, requests DISKZ, the FORTRAN disk routine.
Supervisor Control RecordsEdit
Supervisor Control records begin with an "*" in column 1, immediately followed by the command pseudo-operation in column 2. They are LOCAL, NOCAL, and FILES for the Core Load Builder. DUP control records have a similar format. These records control program linking, either for the // XEQ statement or the DUP *STORECI command.
Supervisor Control Records
*LOCAL Supplies a list of subprograms which will be loaded as overlays at run time, rather than included with the main program
*NOCAL Supplies a list of subprograms to be linked with the main program, even though they are never called. These are usually either debug routines which the operator can manually branch to from the console, or interrupt service routines
*FILES Equates File Identification Numbers from the FORTRAN DEFINE FILE statement or the Assembler FILE statement to named files on disk.
Operating procedureEdit
Punched card containing a self-loading 1130 program that would copy the deck of cards placed after it in the input hopper.
The enduring memories of the IBM 1130 may have resulted from its need for continual human intervention. It was usually occupied running "jobs" specified by a deck of punched cards. The human operator would load jobs into the card reader and separate them back into jobs for return, perhaps along with printed output, to the submitter. The operator would also have to watch the 1130 for evidence of a malfunctioning or stalled job and intervene by pressing the INT REQ key on the keyboard to skip ahead to the start of the next job.[20]
Marking the start of a job was a punched card that started with // JOB. Any card that started with // was a command to the Supervisor and could not be used as user program or data. Other commands included // DUP to execute the Disk Utility Program (to delete files or add the file in the temporary area to the file collection) and // XEQ to execute a named program from disk. If a user program tried to read a command card, the standard card reader routine would signal end-of-input to the program and save that card's content for the Supervisor.
Initial Program Load (IPL)
Unlike the IBM 360, where a booting device can be selected from the system console, an IBM 1130 can only be "booted" (IPL'd: Initial Program Load) from an external device: a card reader or a paper tape reader.[21][22]
The bootstrap procedure reads one card from the card reader. The boot card contains binary code[23] to read the contents of sector zero of the disk drive, which in turn handles the "operation complete" interrupt from the disk drive and performs additional disk reads to prepare the 1130 for the first punched-card job. The whole process takes about a second to complete.
Recovery procedures
When the IBM 1130 is started, the Supervisor is still in memory and probably intact, as core memory retains its state without power. If the operator concludes that a user program has stalled, the Supervisor can sense a key press to abort the program and skip ahead to the next // card. The Supervisor is not protected against modification by a badly written job, a case that might require that the operator reboot the 1130. Nor was there protection against writing to disk. If the copy of the system software on disk is modified, it can be restored by reloading it from about 4000 binary-coded punched cards (approximately two boxes).
Disk organizationEdit
IBM 2315 disk cartridge
2315 compatible disk cartridge.(dimensions 1 3/8 x 15 in.)
The IBM 2310 disk drive stores sectors of 320 words (640 bytes) plus a one-word sector address. A cylinder consists of two tracks on the top and bottom surfaces of the 2315, or of one platter on the 1316 disk pack used in the 2311. Each disk cylinder contains eight sectors. A sector is logically divided by the monitor into sixteen disk blocks of 20 words (40 bytes) each. The disk block is the unit of allocation for files.
The system distinguishes between system cartridges, which contain the monitor and utilities along with user data, and nonsystem cartridges, which contain user data only. All cartridges contain information on cylinder 0, including the defective cylinder table, cartridge id, and a bootstrap program (bootstrap code). On nonsystem cartridges, the bootstrap simply prints an error message and waits if an attempt is made to boot from this cartridge. On a system cartridge this is the cold-start program, followed by a communications area and the resident monitor in sectors one and two. Sectors three through five contain the System Location Equivalence Table (SLET)—a directory of all phases of all monitor programs. Other control information fills out the first track.
The system area is present on system cartridges. It contains the Disk Monitor program, and optionally the FORTRAN compiler, the Assembler, and a core image buffer used for linking relocatable programs. It also contains the user file directories— Fixed Location Equivalence Table (FLET), and Location Equivalence Table (LET),
Following the system area, the cartridge contains up to three logical subdivisions: the fixed area, the user area, and working storage. Both the fixed area and user area store non-temporary programs and data. The fixed area size is defined by DUP, and stores data, and programs in core image format only. It is not repacked when files are deleted. The user area stores data and programs in any format. The boundary between the user area and working storage "floats"— the user area expands as files are added and contracts as it is repacked to reclaim space from deleted files. If a file needs to be modified, the usual process is to use // DUP commands to delete it, which moves any subsequent files back to close the gap, and then give that name to the temporary file as the new version of the file. Rarely modified files thus migrate towards the start of the disk as new files or new versions are appended, and frequently modified files are stored towards the end of the disk.
Working storage starts after the last file in the user area and occupies all the remaining space on the cartridge. It may contain one temporary file created by the system or the user, such as the output of a compiler or an application program. This file is subject to possible deletion at the end of the current job, unless saved to the fixed area or the user area.
All disk files are contiguous disk blocks, thus there is no fragmentation. A program can use and modify named files, but can not expand them beyond their created size. A program which creates more than one file must have all but one pre-allocated by a DUP.
With limited disk space, program source files are normally kept as decks of cards. Users having larger requirements may have a disk of their own containing the operating system, but only their files, and would have to replace the "pool" system disk with theirs and restart the system when their programs are to be run. A system with a second disk drive that can be devoted entirely to one user's code and data provides some relief.
A disk pack or cartridge is initialized for use on the 1130 by the Disk Pack Initialization Routine (DIPR). This routine scans the disk, and writes sector addresses on all cylinders, flags defective sectors, and writes a cartridge id on cylinder zero. DIPR is a Standalone program, which is loaded from cards or paper tape, and accepts the cartridge id from the system console.[19]
Disk Utility Program (DUP)Edit
The Disk Utility Program (DUP) provides commands for transferring programs, subroutines and data. It is invoked by the job control // DUP card, followed by one or more control cards:[24]
Common DUP commands
*STORE Store a program in Disk System Format
(relocatable object)
*STORECI Store a program in Core Image Format
(fully linked and relocated)
*STOREDATA Store a data file to disk
*STOREDATACI Reload a dumped core image program
*STOREMOD Replace or create a disk file
*DUMP Dump data file from disk
*DUMPDATA Dump arbitrary sectors from disk
*DUMPLET Print the disk Location Equivalence Table (LET),
and the Fixed Location Equivalence Table (FLET) if a fixed area exists
*DELETE Delete a program or data file
Other commands, mainly for use by the system administrator, define or expand the Fixed Area, delete the FORTRAN compiler and/or Assembler from the system, and restore correct sector addresses to Working Storage if they have been modified.
The operands have to be placed into fixed columns.The source device code goes in columns 13 and 14, the destination device in columns 17 and 18. These device codes are:
UA – User Area
FX – The fixed area (no "extents" as per the 360; just contiguous space)
WS – Working Storage
CD – Punched Card/Principal Input device (could be PT: Paper Tape)
PR – Printer
Optionally, a program name may be coded in columns 21 thru 25, and a count field in 27 thru 30. The interpretation of these fields depends on the DUP function requested.
Programs can be converted to a faster-loading format with the STORECI command, which invokes Core Image Builder (DM2's counterpart to the 360's Linkage Editor). Alternatively, a program can go through this process each time it is to be run, and for infrequently used programs this is preferred in order to conserve disk space.
The following control card instructs DUP to take the current contents of working storage and move it to the user area naming it PROGZ. DUP knows the size of the file in working storage. The size of the user area will be increased by the size of the file, and the size of working storage will be decreased correspondingly.
IBM 1130 DUP control card example
Peripheral devicesEdit
IBM 1132 line printer
IBM 1442 card reader/punch
IBM 1627 drum plotter.
Disk memory is used to store the operating system, object code, and data, but source code is kept on punched cards.
The basic 1130 came with an IBM 2310 voice-coil actuated disk drive, called "Ramkit", from IBM's General Products Division in San Jose.[7]: 497 Their pizza-box-sized IBM 2315 single platter cartridges holds 512,000 words or 1,024,000 bytes (less than a 3.5" HD floppy's 1.44MB or even the 5.25" HD floppy's 1.2MB).
The IBM 1053 console typewriter uses an IBM Selectric mechanism, which means one could change the typeface or character set by replacing a hollow, golf-ball sized type element. There is a special type element available for APL, a powerful array-oriented programming language using a special symbolic notation. A row of 16 toggle switches on the console typewriter can be individually tested from within programs, using the special Fortran statement IF (SENSE SWITCH i), for example.
Other available peripherals included:
Printers – the IBM 1132[note 4] and IBM 1403[note 5][25] line printers
Punched-card – the IBM 1442 card reader/punch and the IBM 2501 card reader
Paper tape – the IBM 1055 paper tape punch, the IBM 1054 paper tape reader, and the IBM 1134 paper tape reader
Disk – the IBM 2311 Disk Drive
Magnetic tape – From 1968, IBM 2415 Magnetic tape data storage drives were available as an RPQ.[26]
Graphics – IBM 2250 Graphic Display Unit.
Color Pen Plotter – IBM 1627 drum plotter.
Optical Mark Reader – IBM 1231 Optical Mark Page Reader [27]
Communications – Synchronous Communications Adapter (SCA). The IBM 1130 MTCA, for Multiple Terminal Control Adapter, announced in 1970[28] allowed up to four 2741 terminals to be connected to an IBM 1130, for use with APL.
To simplify the design of peripheral devices, these rely on the processor. The card reader has no memory buffers, but instead gives the CPU a level-zero (highest priority) interrupt after each individual column of the card has been read. If the CPU does not respond and store the twelve bits of data before another such interrupt indicates that the next column has been read, data will be lost. Similarly, the 1132 printer relies on software in the 1130. When a letter such as A comes into position, the CPU has to analyze a buffered line of text and assemble an array of bits that will indicate to the 1132 which print positions should be printed with A. If the CPU can not respond before the A rotates out of position, print speed could be severely degraded.
Other peripherals accept text in a device-specific code convenient for its hardware. The CPU has to translate it to or from the EBCDIC code in which the CPU processes the text.
Instruction set overviewEdit
Instructions had short (one-word) and long (two-word) formats. Most computational, load, and store instructions referenced one register (usually ACC) and a memory location. The memory location was identified, in the short format, by an 8-bit signed displacement from either the current address or one of the index registers; or in the long format, by a full 15-bit address, which could be indexed and specify indirection. Memory was addressed in units of words.
The 1130 supported only single-precision and double-precision binary data natively (16 and 32 bits) stored in big-endian format. Standard- and extended-precision floating-point (32 and 48 bits) and decimal data were supported through the use of subroutines.
Conditional transfers were based on (a) the current contents of the accumulator, or (b) the carry and overflow indicators set by a preceding operation. Transfers could be by skip (which assumed that the next instruction was short) or by branch. A skip occurred if any of the specified tests were true. A branch occurred if none of the specified tests were true.
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):
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---------
F     is format 1 = Long
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
Disp = Contents of displacement field
Add = Contents of address field of instruction
C = Contents of location specified by Add or Add + XR
Reserved memory
The lowest addresses of core memory had uses dictated either by the hardware or by convention:
/0000 By convention, contained the instruction B *-1, which would branch to itself indefinitely until an operator noticed that all the console IAR lights were dark and flushed the job, either by pressing Int Req or by rebooting.
/0001 XR1. The memory addresses of the index registers permitted direct moves between them, such as with LDX I1 2
/0002 XR2.
/0008 The address of the handler for the Level 0 (highest priority) interrupt— 1442 card reader/punch "column ready" interrupt.
/0009 The address of the handler for the Level 1 interrupt— 1132 printer and Synchronous Communications Adapter. Handlers for this and lower interrupts would have to test a Status Word to determine which device had interrupted.
/000A=10 The address of the handler for the Level 2 interrupt— disk storage, Storage Access Channel.
/000B=11 The address of the handler for the Level 3 interrupt— 1627 plotter, Storage Access Channel.
/000C=12 The address of the handler for the Level 4 interrupt— 1134 paper tape reader, 1055 paper tape punch, console, 1442 card read punch, 2501 card reader, 1403 printer, 1231 optical mark reader, Storage Access Channel device.
/000D=13 The address of the handler for the Level 5 (lowest priority) interrupt— console stop and interrupt switches, Storage Access Channel.
/0020=32 First word of the scan field for the 1132 printer (/0020–/0027).
/0026=38 Last full word of the scan field.
/0027=39 Half used: 120 columns = 120 bits = seven 16-bit words plus 8 bits.
/0038=56 EXIT to Supervisor/Return to Monitor (CALL EXIT)
ProgrammingEdit
SubprogramsEdit
The 1130 has no hardware support for a stack. Most subprograms are called with the instruction BSI (Branch and Store IAR). This deposits the value of IAR (the return address) at the destination address and transfers control to destination+1. Subprograms return to wherever they were called on that occasion using an indirect branch through that first word of the subprogram. Placing the return address in-line was a common technique of computers at that time, such as the Hewlett-Packard HP 2100,[29] the DEC PDP-8,[30] and the Scientific Data Systems SDS 920.[31]
So a subprogram named SIMPL might be organized as follows (comments follow the instruction operand):
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.
The subprogram would be called as follows:
BSI  L SIMPL  Call SIMPL. L (Long) is needed if SIMPL is more than -128 or +127 words away.
The pseudo-operation CALL would typically be used.
As shown, a subprogram's entry point is DC *-*, an assembler pseudo operation that is used to Define a Constant (occupying one word of storage) with the value specified by the expression. The * stands for the current address of the assembly and so *-* results in zero. Writing this rather than 0 provides a visually distinctive note that a meaningful value (the return address) will be placed there at run time. The entry point need not be the first word of the subprogram. Indeed, the preceding word can be the start of a two-word direct branch instruction whose address field is at SIMPL. Then, returns can be effected by one-word branches there: B SIMPL-1
When SIMPL is called, the BSI instruction replaces *-* with the current value of IAR, which is the address just past the BSI instruction. After SIMPL does whatever it is written to do, B I SIMPL branches not to SIMPL, but indirect through it, thus continuing execution with the instruction following the BSI instruction that called SIMPL.
Without extra arrangements to protect the return address, recursion is impossible: If SIMPL calls itself, or called a subprogram that called it, its original return address is overwritten. Re-entrancy is problematic for the same reason: An interrupt service routine must refrain from calling any subprogram that might have been the code that was interrupted.
The caller of SIMPL might pass it parameters, which might be values or addresses of values. Parameters might be coded in-line (immediately following the BSI instruction) or might be placed in index registers XR1 and XR2. If parameters are placed in-line, SIMPL modifies its own return address so its final indirect branch returns beyond the parameters.
Integer functions of a single integer expect the parameter in the accumulator and return their result there. Floating-point functions employ the floating-point accumulator (a two word area set aside by the floating-point library, three words for extended precision), and so on.
The convention of coding 0 as the initial value at the entry point means that if a programming error leads to SIMPL returning before the first time it was ever called, execution would jump to memory location 0. As mentioned above, it is customary to have location 0 contain a branch to location 0. The 1130 would be stuck at location 0, and the IAR lights on the console would be entirely dark, making it clear the program had failed.
Linkage to library routinesEdit
For subprograms that would be called many times (for example, subprograms for floating-point arithmetic), it is important to reduce the size of each call to one word. Such "library routines" use the LIBF protocol. It is more complex than the CALL protocol described in the previous section, but LIBF hides the complexity from the writer of the assembly-language program.
Library routines are addressed through index register XR3. (Fortran subprograms use index register XR1 for the addresses of parameters and the return address, but register XR2 is unused.) XR3 points to a sequence of three-word transfer vectors such that the first entry is -128 words from XR3's value. The programmer calls the library routine using the LIBF pseudo-operation, which assembles not a direct BSI to the routine but a one-word indexed branch instruction (BSI 3 disp) whose displacement (-128, -125, and so on) identifies the start of the routine's transfer vector.
The transfer vector is prepared by the linkage loader when it puts together the program. A transfer vector entry to a library function named SIMPL takes this form:
DC       *-*            A word into which BSI stores the return address.
B    L   SIMPL          Branch to the start of the library function.
The way SIMPL knew where its return address was is that, if SIMPL were declared a LIBF routine, the linkage loader would modify the code of SIMPL, placing the address of SIMPL's transfer vector entry at SIMPL+2. LIBF routines, unlike CALL subprograms, do not start with a DC directive to hold the return address (it is in the transfer vector) but with actual code, as follows:
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.
Placing the address of SIMPL's transfer vector at SIMPL+2 leaves room for a one-word instruction to save the chosen index register, here XR1. Then the indirect LDX instruction points XR1 not at the transfer vector, but through it to the return address, or to any parameters stored in-line after the BSI. SIMPL then does whatever it was written to do, gaining access to any in-line parameters through XR1 (in which case it must increment XR1 for the return address), and returns as follows:
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.
Suppose a LIBF-style call to SIMPL were at address 100. Then the return address would be 101, because BSI 3 disp is a one-word instruction. XR3 points into the group of transfer vectors. If the transfer vector for SIMPL started at address 2000, then the BSI would be assembled with a disp so that XR3+disp = 2000. Executing the BSI stores 101 at location 2000 and jumps to location 2001. At 2001 is a two-word long jump to the entry point of SIMPL, which the linkage loader might have placed at address 300.
The long jump transfers control to SIMPL. After the instruction at 300 stores XR1, the instruction at 301 is LDX I1 2000, the linkage loader having placed 2000 at location 302. This does not load 2000 into XR1; it is an indirect instruction, and loads the contents of 2000, which is 101, the return address for that call to SIMPL.
In the return sequence shown above, by the time control reaches RETN, the instruction there is B L 101, which returns to the caller. (If there is one or more in-line parameters at 101, SIMPL would increment XR1 to point to 102 or beyond, and this would be the destination of the B instruction.)
If SIMPL took parameters coded in-line following the BSI instruction, SIMPL gains access to them with indexed addressing off XR1. The first could be obtained by LD 1 0, the second by LD 1 1, and so on. If the second parameter is the address of the actual parameter, then LD I1 1 obtains its value. Before returning, SIMPL increments XR1 past the n parameters with an instruction such as MDX 1 n so as to place the right value at RETN+1.
A LIBF routine that declined to restore the original value of XR1 could omit the above steps and return with a simple B 1 n to skip n in-line parameters. However, such a routine can not be called by other LIBF routines because it disrupts the caller's use of XR1 for access to its own parameters and return address.
The complexity of LIBF saves memory for subprograms that are frequently called.:[32]: p.24 The LIBF linkage requires one word per invocation, plus three words for the transfer vector entry and extra code in the routine itself, whereas the CALL linkage requires two words per invocation because most CALLs will be to an address beyond the -128 to +127 word reach of the one-word opcode.
The register XR3 must point to the transfer vector entries for the library routines rather than a dispatch table of only their addresses, because this latter would require that LIBF routines be called with an indirect BSI instruction. These instructions are two words long, so such a design would negate the code size savings of LIBF. The eight-bit limit for the disp field of the one-word instruction code limits usage of LIBF routines to no more than 85 distinct entries.
Code modificationEdit
The previous sections show that code and data are intermingled. It is common in 1130 programming to modify the address fields of instructions and, in fact, to modify entire instructions.
By the Fortran compilerEdit
The Fortran compiler produces self-modifying code when generating code for any subprograms (subroutines or functions) that have parameters. The compiler builds a table of every location where the subprogram references one of its parameters, and compiles as the first instruction in the body of the subprogram a call to a subprogram called SUBIN that uses the table to modify the address field of every reference to a parameter to be the actual address of the parameter during the current invocation. SUBIN makes these patches every time the subprogram is called.
When a Fortran program calls a subprogram, the addresses of any parameters appear in-line following the call. For example, the Fortran statement CALL SIMPL(X) might compile into:
BSI L  SIMPL
DC     X      The address of X, on which SIMPL is to operate
Within the subprogram, parameters could be accessed by indirect indexed addressing as shown above in Variations, so, given that XR1 has been suitably prepared, an integer parameter could be loaded into the accumulator with an instruction like this:
LD  I1 0      Load the value of the first parameter (offset 0) into the accumulator
The compiler instead used direct addressing. When SUBIN runs, it obtains the address of X and patches the instruction's address field to become:
LD  L  X      Load the value of X into the accumulator
The advantages of SUBIN are as follows:
To obtain the operand's address an indirect indexed instruction requires three memory cycles (the index register being in memory) while the direct access instruction require only one.
If SIMPL were to pass one of its parameters to any subprogram that expected to receive the address of its parameter (including all the LIBF routines for floating-point arithmetic), SUBIN is needed to supply the actual address of the original parameter.
The disadvantages of SUBIN are the time it requires to run and the memory required for the table of references. The size of this table is the sum of 5, the number of parameters, and the number of references; if this sum exceeds 511, compilation will fail. For subprograms with many references to a parameter, the author of the subprogram might copy the parameter into a local variable.
By the userEdit
Modifying entire instructions was a common technique at the time. For example, although the 1130 has an OR instruction, the syntax of Fortran provides no way to write it. An integer function IOR can be defined, enabling logical OR to be part of a Fortran expression such as:
M = 3*IOR(I,J) + 5
The Fortran compiler places the addresses of I and J in-line and expects the result in the accumulator. Using IOR(I,J) in a Fortran expression compiles the following four words:
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.
In fact, the assembler IOR function does not compute I or J at all. Instead, it replaces the above four words with the following:
LD   L I      Load accumulator with I (two-word instruction)
OR   L J      OR accumulator with J   (two-word instruction)
After performing that transformation, it does not return past the end of the four-word block (which it had just modified). Instead, it branches to the exact address from which it had been called originally. The BSI instruction is no longer there; what is now there is the two instructions it has just written. They combine the two integers with the machine-language OR instruction and leave the result in the accumulator, as required.
The call to IOR and the transformation of the four-word block happens at most once per program run. If the Fortran line illustrated above is executed again, it runs faster than it did the first time. Similar functions could be devised for other useful operations.
A function that self-modifies, as IOR does, can not be used in a Fortran subprogram on any of the parameters to that subprogram (though it could be used to combine local variables) because it is incompatible with the SUBIN subprogram discussed above. IOR's transformation of its four-word calling sequence, shown above, moves the location of the address of variable I. On subsequent calls to the Fortran subprogram, the table of references to parameters would be in error and SUBIN would patch the wrong word, in this case placing the new address of I over the OR operation code.
Extended precisionEdit
1130 FORTRAN offers two floating point formats: a 32-bit "standard precision" format and a 40-bit "extended precision" format.
Standard precision format contains a 24-bit two's complement significand while extended precision utilizes a 32-bit two's complement significand. This format makes full use of the CPU's 32-bit integer operations. The extended format occupies three 16-bit words, with the high-order eight bits of the first word unused. The characteristic in both formats is an 8-bit field containing the power of two biased by 128. Floating-point arithmetic operations are performed by software.[33]
The *EXTENDED PRECISION compiler option card tells the FORTRAN compiler to use 40 bits instead of 32 bits for all floating point data, there is no provision for mixing formats.
Large Fortran programsEdit
Data to be manipulated and the instructions that manipulate them have to reside together in core memory. The amount of installed memory (from 4,096 to 32,768 words) is a key limitation. Fortran provides several techniques to write large programs despite this limitation.
LOCAL subprograms
Fortran let any subprogram be designated as "LOCAL" (Load-on-Call). Each LOCAL subprogram is an overlay; it is part of the disk-resident executable program but is only loaded into core memory (if not already there) during the time it is called. So, for example, six LOCAL subprograms would require only as much core memory as the largest, rather than the total amount for all six. However, none of the six can invoke another, either directly or through intermediary subprograms.
Programs in phases
An entire Fortran program can pass control to a subsequent phase, exiting to the Supervisor with an instruction to load the follow-on phase into core memory. A large program might be split into three parts, separately compiled, called PART1, PART2, and PART3. Execution is started by // XEQ PART1 and at a suitable point, PART1 would execute the Fortran statement CALL LINK(PART2) and so forth. The name of the successor program in the CALL can not be variable, but program logic can govern whether control is transferred to another phase, and which CALL LINK statement is executed. As mentioned above, the Fortran compiler itself was written this way, with each phase of compilation achieved by a separate program.
COMMON data storage
Programs, such as Fortran programs, reside at low core memory addresses (just above the Supervisor). Fortran allocates space at the highest addresses for any variables and arrays declared COMMON. If a follow-on phase of the program contains a corresponding COMMON declaration, then information in this common area can be shared among phases. Phases could omit the COMMON declaration without problem, provided those phases were not so large as to have their program code invade the common area. COMMON storage not only shares data between phases; lower-memory COMMON variables can be used to pass data among a main program and subprograms within a single phase, though the data could be lost on moving to the next phase.
Programming examplesEdit
The examples can be executed on the IBM 1130 emulator available at IBM 1130.org.
Sample assembler program deckEdit
The following listing shows a card deck that compiles and runs an assembler program that lists a deck of cards to the line printer.
// 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
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
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
In this job, the assembler leaves the result of its assembly in the temporary area of the system disk, and the XEQ command executes the content of the temporary area. The odd-looking END START has two meanings: end of assembler source, and the name of the entry point of the routine, which has the label START.
Assembler source starts with column 21 of the card, not column one. In systems without a disk drive, the assembler would punch code into the start of the card just read (the card reader was actually a reader-punch, with the punch station after the read station) and then read the next card. To handle forward branches and the like, the assembler's second pass literally involved a second pass of the cards through the reader/punch. If source changes were needed the programmer would duplicate the cards to obtain a deck with columns 1-20 blank ready for the next run through the assembler.
By convention, buffers are preceded by a word count. The DC (Define Constant) assembles a count word and the following BSS (Block Started by Symbol) reserves the required number of words for the buffer. The card buffer requires 80 words, one for each card column. Driver CARD0 reads each card column literally, using 12 of the 16 bits in the buffer word, with a bit set to on for each hole punched in the corresponding row for that column. The pattern of punches typically describes a text character using the Hollerith code. The console keyboard also gives input to the program in the Hollerith code, the only case of two devices using the same character encoding.
The printer routine, however, works with text in 8-bit EBCDIC with two characters per word, requiring a 40-word buffer. The program uses library routine ZIPCO to perform the conversion. Despite appearances, the statement CALL HLEBC is not executed because HLEBC is not a subroutine but an IBM-supplied Hollerith-to-EBCDIC conversion table. The CALL statement provides the address of the table to ZIPCO and ensures that the linking loader includes the table in the program, thus it is the fifth parameter to ZIPCO, though one occupying two words of storage: the BSI operation code word for the CALL is unused and thus usually wasted, but the second word of the expansion of CALL HLEBC is the address of the HLEBC table needed by ZIPCO. After the conversion, the program sends the converted output, now in buffer PBUFF, to the printer through driver PRNT1. Again, the program loops until the printer driver reports completion, then the program reads the next card.
This example contains no code to decide when to stop. A more complete program would check for cards that begin with //, which denotes the start of the next job. To stop the card reader as soon as possible, a program could check for the Hollerith code of / before even converting the card to EBCDIC.
Asynchronous I/O and performanceEdit
The call to CARD0 to read a card initiates that operation and immediately returns to the caller, which could proceed with other activity. However, the example program makes no attempt to overlap input and output using buffers even though it has two separate work areas; it simply loops back to CIMP to test afresh. After CARD0 has sensed the card reader's operation-complete interrupt, it returns one word further on, thus skipping the jump back to CIMP and leaving the loop.
The example routines do not run the I/O devices at top speed. Notably, the card reader, only a few milliseconds after reporting completion on reading a card, will commence its stop sequence, after which a new read command will have to wait to initiate another read cycle. The IBM 1442 reader could read 400 cards/minute at full speed, but just a little hesitancy in the read commands would halve its throughput or worse. A Fortran program could not complete even the simplest input processing in time, and so could not read cards at full speed. One common Fortran DO loop to read cards made the motor stop and start so frequently as to accelerate wear. With buffering, the card reader control could be overlapped with processing, and the reader could be run at full speed through large data decks, but memory for the more complex program and for buffers was often at a premium.
Even with assembler and double buffering, a program to list a deck of cards from the IBM 2501 reader (1,000 cards/minute) on the line printer could not keep up, as the translation from card hole patterns to EBCDIC for the printer as done by EBPRT was too slow; the more complex ZIPCO and HLEBC were needed instead, as in the example.
Sample APL\1130 sessionEdit
The following image shows a simple APL \ 1130 session. This session was performed via the 1130 simulator available from IBM 1130.org
The above session shows a signon, addition of the integers 1 to 100, generation of an addition table for the integers 1..5 and a sign off.
Competing systemsEdit
In the same year as the 1130's introduction, Digital Equipment Corporation introduced the smaller, cheaper, and better-selling 12-bit PDP-8, recognized as the first successful minicomputer.
Influence of the 1130Edit
Brian Utley was the 1130s project manager during its development and introduction. Brian said at the third 11/30 party that before IBM Marketing named the 1130 it was known as the Small Engineering Computer System or SECS.[34] The initial architecture was 18 bits but was changed to 16 bits due to the influence of the System/360 development. The full dialogue of his 2005 presentation is available at IBM1130.org.
Notable software designer Grady Booch got his first exposure to programming on an IBM 1130:[35]
... I pounded the doors at the local IBM sales office until a salesman took pity on me. After we chatted for a while, he handed me a Fortran [manual]. I'm sure he gave it to me thinking, "I'll never hear from this kid again." I returned the following week saying, "This is really cool. I've read the whole thing and have written a small program. Where can I find a computer?" The fellow, to my delight, found me programming time on an IBM 1130 on weekends and late-evening hours. That was my first programming experience, and I must thank that anonymous IBM salesman for launching my career. Thank you, IBM.
LISP guru Guy Steele wrote a LISP interpreter for the IBM 1130 when he was in high school (Boston Latin School, which had an IBM 1130 for student use).[36][37] His code and documentation for LISP 1.6, along with a summary of current work in getting it to run under simulation, is available at IBM1130.org.
Chuck Moore wanted to call his new language "Fourth" but the IBM 1130 operating system was limited to five-character names, so it wound up being called FORTH.[38]
Dan Bricklin, creator of the VisiCalc program, got his start in programming when he learned and used the IBM 1130 as part of the National Science Foundation Computer/Math Summer Project for high school students, given at the University of Pennsylvania in 1966.[39]
An IBM 1130 with 8 kilowords of core was used for the world's first full-time Search for Extraterrestrial Intelligence research at The Ohio State University Radio Observatory. This equipment detected the Wow! signal.[40]
Charles Goldfarb, the father of SGML, describes a job installing a typesetting system based on an IBM 1130 that "eventually changed my career", driving him towards generic markup:[41]
The system was an IBM 1130 computer, a machine the size of a desk with 8 KB of main memory, a 512 KB disk drive, a Teletype CX paper tape reader and BRPE paper tape punch, and a Photon 713 photomechanical typesetter. The assignment was my first experience with managing a machine-readable document database: I learned to roll the punched paper tape carefully so that it could be stored neatly in cylindrical waste paper baskets.
In the meantime, though I didn't know about it, the roots of generalized markup were being planted. Historically, electronic manuscripts contained control codes or macros that caused the document to be formatted in a particular way ("specific coding"). In contrast, generic coding, which began in the late 1960s, uses descriptive tags (for example, "heading", rather than "format-17").
Alan Kay used the IBM 1130 in early GUI work for his Ph.D. thesis in 1969.[42]
Hutchinson Central Technical High School ("Hutch Tech") in Buffalo, NY used the IBM 1130 in the nation's first four-year high school computer science curriculum in 1969. Robert Santuci was the computer science program head and taught classes in programming and inductive logic.[43]
An engineer from IBM was hired by Signetics and incorporated a number of architectural features from the IBM 1130 into the Signetics 2650 single-chip processor.[44]
1130s todayEdit
Out of an estimated 10,000 systems produced, the following are known to exist as of 2023:
ACONIT in Grenoble, France has a complete 1130 system.[45]
The Computer History Museum (Mountain View, California) has an 1130 system.[46]
COSECANS (Basel, Switzerland).[47]
The National Museum of Computing (TNMOC) (Bletchley Park, United Kingdom) has a complete 1130 system.[48][1]
The University of Stuttgart (Germany) has a functional 1130 system.[49]
Carl Claunch is currently restoring an 1130 system.[50]
ApocryphaEdit
Speculation on why the product was given the number 1130 centered on the following possibilities:
That, since the 1130 was a small scientific machine, the number was chosen by multiplying 360 (as in IBM 360) by π.
That 11:30 was the time of day that product planners reached an impasse regarding what to call the product.
That the 1130 was IBM's 11th Computer Design, and it had 30 instructions.
Others have speculated that the existence of the IBM 1130 explains why no computer designated "11/30" ever appeared in the PDP-11 family of machines.[51]
List of IBM products
^ for which there was an IBM compiler
^ SL/1: references to Student Language/One, Student Language/1 and Subset Language/1 exist
^ an IBM Program Product
^ Model 1 @ 80 Lines/minute, Model 2 @ 40 LPM
^ choice of 340 Lines/minute Model 6, 600 LPM Model 7
^ a b c "Large Systems Gallery: IBM 1130". National Museum of Computing. Archived from the original on 11 February 2020. Retrieved 11 February 2020.
^ a b IBM 1130 Installation manual, IBM Form GA26-5914, June 1966, BitSavers
^ a b Francis, C.G. (11 February 1965). "IBM introduces powerful small computer". Director of Information (Press release). White Plains, New York: International Business Machines (IBM). Archived from the original on 2019-07-05.
^ Utley, Brian (Jan 2005). "Guest speaker: Brian Utley" (MP3) (Interview). Retrieved 2012-01-02.
^ 760 lb: models 1A, 1B, 2A, 2B, 4A and 4B
1050 lb: models 1C, 1D, 2C, 2D, 3B, 3C, 3D, 5B, 5C and 5D
"IBM 1130 documents". www.bitsavers.org. fe/GA26-5914-8_1130_Installation_Manual_Physical_Planning_Dec71.pdf, pp. 10-11.
^ "IBM 1800 data acquisition and control system". IBM Archives. 23 January 2003. Retrieved Aug 20, 2021.
^ a b Emerson W. Pugh; Lyle R. Johnson; John H. Palmer (1991). IBM's 360 and early 370 systems. MIT Press. ISBN 978-0-262-16123-7.
^ "New Xerox minicomputer". The New York Times. January 29, 1973.
^ "Xerox 530 supports COBOL". ComputerWorld. December 26, 1973.
^ "Rank Xerox 530 Computer" (PDF). computerhistory.org. Retrieved Sep 23, 2014.
^ "Xerox 530 orders "encouraging"".
^ Larry Breed (August 2006). "How We Got To APL\1130". Vector (British APL Association). 22 (3). ISSN 0955-1433. Archived from the original on 2008-05-12. Retrieved 2007-03-11.
^ Hedrick, G.E.; Robertson, Alan, "The Oklahoma State ALGOL 68 Subset Compiler". 1975 International Conference on ALGOL 68. Stillwater, OK, June 10–12, 1975.
^ Hedrick, G. E., "ALGOL68 instruction at Oklahoma State University", ACM SIGCSE Bulletin – Special issue eighth technical symposium on computer science education Homepage, Volume 9 Issue 3, Aug 1977, ACM New York, NY, USA
^ McJones, Paul, "Algol 68 implementations and dialects", Software Preservation Group, Computer History Museum
^ IBM Corporation (1967). 1130 Statistical System (1130-CA-06X) User's Manual (PDF). Retrieved Feb 8, 2015.
^ IBM Corporation (1968). IBM 1130 Remote Job Entry Work Station Program Program Logic Manual (PDF). Retrieved Feb 8, 2015.
^ IBM Corporation (1967). IBM 1130 Typesetting System (RPQ) (PDF). Retrieved Feb 8, 2015.
^ a b IBM Corporation (1968). IBM 1130 Disk Monitor System Reference Manual (PDF). Retrieved Aug 31, 2021.
^ IBM Corporation (May 1972). IBM 1130 Disk Monitor System, Version 2, Programmer's and Operator's Guide (PDF). Retrieved Feb 6, 2015.
^ "This artifact". Retrieved 2017-02-21.
^ Quote: "Our 1130 has a 2315, 1/2 million-word disk cartridge unit on the right side, behind the door. The paper tape reader was probably primarily used for booting, instead of the large, 300 cards/min 1442 card reader."
^ Systems Reference Library IBM 1130 Functional Characteristics (PDF). Page 136 of the Functional Characteristics, Figure 40, shows how each of the 12 holes on a punched card fill the 16 bits of a memory word, when doing an IPL (Initial Program Load), using "Load Mode Read."
^ "Monitor Programs".
^ "Systems Reference Library IBM 1130 Operating Procedures" (PDF). BitSavers.
^ IBM 1130 Custom Feature Description – Attachment Channel RPQ Number 831552, Form A26-1579-0 (PDF). IBM System Reference Library (First ed.). San Jose, California: IBM Corporation. October 1968. Retrieved 2009-08-10.
^ "IBM 1231 Optical Mark Page Reader".
^ IBM Corporation. "IBM Archives: DPD Chronology (page 4)". Retrieved 10 Aug 2011.
^ Hewlett-Packard (December 1971). 2100A Computer Reference Manual (PDF). p. 18. Retrieved August 5, 2016.
^ "PDP-8 User's Manual". Digital Equipment Corporation. May 1966. Retrieved 26 April 2021.
^ Scirntific Data Systems. 920 Computer Reference Manual (PDF). p. 17. Retrieved August 5, 2016.
^ IBM Corporation (1968). IBM 1130 Assembler Language (PDF). Retrieved Feb 6, 2015.
^ IBM 1130 Subroutine Library 9th ed (PDF). IBM Corporation. 1974. p. 93.
^ Utley, Brian (2006-10-30). "Origin of the IBM 1130 Name". Archived from the original on 2007-10-01. Retrieved 2007-01-16.
^ Booch, Grady (2003-04-03). "Grady Booch polishes his crystal ball". IBM. Retrieved 2007-01-16.
^ Steele, Guy L. Jr. (2005-11-24). "Thoughts on Language Design -- New challenges require new solutions". Dr. Dobb's Journal. Retrieved 2006-01-16.
^ Steele, Guy L. Jr. "Confessions of a Happy Hacker". Archived from the original on 2007-02-03. Retrieved 2006-01-16.
^ Rather, Elizabeth; Colburn, Donald; Moore, Charles (March 1993). "The Evolution of Forth". Retrieved 2007-01-16.
^ Bricklin, Dan (2002-08-23). "Memories while visiting the Bay Area and the Computer History Museum". Retrieved 2007-01-16.
^ Dixon, Bob (2005-08-13). "SETI in the 1970s". The Big Ear. Retrieved 2007-01-16.
^ Goldfarb, Charles (1996). "The Roots of SGML -- A Personal Recollection". Retrieved 2007-01-16.
^ Kay, Alan C., "The Reactive Engine", Ph.D. dissertation, University of Utah, 1969."The graphics display routines, character generator and editor ran for a year on an IBM 1130 computer with a "home-brew" interface. Unfortunately, the 1130 was straining to just act as a glorified display buffer, and none of the algorithmic routines were implemented."
^ Koch, Warren (1972). "The Use of Computers in Instruction in Secondary Schools" (PDF). Retrieved 2014-08-06.
^ "Signetics 2650: An IBM on a Chip". CPU Shack. 16 October 2016. Retrieved 25 October 2016.
^ "IBM 1130". ACONIT (in French). Retrieved July 11, 2016.
^ "Artifact Details:BM 1130 model". Computer History Museum. Retrieved July 11, 2016.
^ Wyss, Oscar. "Website von Oscar E. Wyss". COSECANS (in German). Retrieved July 11, 2016.
^ "IBM 1130 system restoration during 2011". The National Museum of Computing. Archived from the original on 4 April 2019. Retrieved July 11, 2016.
^ "IBM 1130". Computermuseum der Fakultät Informatik. Retrieved July 11, 2016.
^ Claunch, Carl. "Rescue 1130". Retrieved July 11, 2016.
^ PDP-11/20 and /15
Wikimedia Commons has media related to IBM 1130.
IBM Archive: IBM 1130 press releases, chronology, photos, facts folder.
IBM 1130.org Norm Aleks and Brian Knittel site which has significant information about the 1130 and a downloadable simulator that supports the DMS R2V12 and APL environments.
www.ibm1130.net is Howard Shubs' site dedicated to the 1130.
Arnold Reinhold's personal account of the 1130. Text from here has been incorporated into this article with permission
A set of PDFs made up of scanned IBM 1130 manuals
Kym Farnik's page on Retro Computing specifically the 1130
A discussion about the (then) Angle Park computing centre which was equipped with IBM 1130's
Bob Rosenbloom's IBM 1130 Photos
IBM 1130 material at Columbia University, Computing History site.
A Flickr collection of detail photos taken by Peter Vaughan of an IBM 1130 at The National Museum of Computing
Retrieved from "https://en.wikipedia.org/w/index.php?title=IBM_1130&oldid=1135817225"


text:
PRC Envoy to Human Rights Panel Blasts "Unfair" Treatment of Developing Countries
PRC Ambassador to the U.N. Missions in Geneva Sha Zukang criticized the U.N. Commission on Human Rights in a March 14 address, citing the panel for unfair treatment of developing nations. Ambassador Sha also attacked unspecified NGOs for abuse of their consultative status at Commission meetings. The senior Chinese diplomat addressed the Human Rights Commission on behalf of a "like minded group" of developing nations.
Ambassador Sha praised the Commission as the world's foremost human rights forum, but quoted a recent independent panel report to the effect that the Human Rights Commission faces a credibility problem. Sha offered the view that the Commission "cannot be credible if it is seen to be maintaining double standards in addressing human rights concerns." As an example, the PRC envoy said that the U.N. rights panel "has turned into a place of naming and shaming of developing countries, especially with regard to the deliberations under Item 9, whose original intention was to address only situations of massive, flagrant and systematic violations of human rights..."
The statement in the High Level Panel Report that Ambassador Sha quoted, however, was taken out of context. The members of the review panel did not complain about the Commission having a double standard between developed and developing nations, but instead pointed to serious membership problems at the Commission. They wrote: "Standard-setting to reinforce human rights cannot be performed by States that lack a demonstrated commitment to their promotion and protection. We are concerned that in recent years States have sought membership of the Commission not to strengthen human rights but to protect themselves against criticism or to criticize others."


text:
Singapore PM Lee Hsien Loong congratulates new Timor Leste counterpart Mari Alkatiri
East Timor Prime Minister Mari Alkatiri (centre) after his swearing-in ceremony in Dili, East Timor, on Sept 15, 2017. PHOTO: REUTERS
https://str.sg/Ukft
Singapore Prime Minister Lee Hsien Loong wrote a congratulatory letter last week to the newly appointed Prime Minister of Timor Leste, Dr Mari Alkatiri, and invited him to visit Singapore.
"Timor-Leste has made great strides since its independence in 2002, including through your personal contributions during your first term as Prime Minister, and later as President of the Authority of the Oe-Cusse Special Administrative Region," PM Lee wrote in the letter dated Friday (Sept 22).
"As small states, we share many common concerns and interests and have worked well together bilaterally and at multilateral fora," said Mr Lee, stressing that Singapore's warm ties with Asia's youngest democracy predate the latter's independence.
Singapore remains committed to providing capacity building to Timor-Leste through the Singapore Cooperation Programme, and has been privileged to welcome over 600 Timorese officials to participate in our capacity-building programmes, he added.
"I look forward to working with you to further strengthen our bilateral ties."
Dr Alkatiri,67, was sworn in on Sept 15, after his party Fretilin won the elections in in July.
LEE HSIEN LOONG


International artists Hannah Marie Kilminster' performs in London's westend, classical concerts, international tours and more recently seen on UK's XFACTOR!
Hannah is one of London's most sought after vocalist.
Having performed at the 'Classical Brit Awards' Albert Hall. The international tours of 'Rock around the Clock', 'Evita', 'Celtic Ladies' and the UK Tour of 'Putting on the Ritz'.
This year however has been the year of success for Hannah, causing a storm on UK'S X Factor!
Now taking her show around the globe, Hannah's one women classical crossover show is one not to miss.