맨위로가기

IBM 1130

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

IBM 1130은 1965년에 출시된 IBM의 16비트 미니컴퓨터로, 저렴한 가격과 뛰어난 성능으로 대학, 연구소, 공장 등에서 널리 사용되었다. 펀치 카드를 사용하여 작업을 실행했으며, 1960년대 후반 한국에도 도입되어 과학 기술 연구, 전산 교육, 행정 업무 등에 활용되었다. 1130은 1970년대 한국의 과학 기술 발전과 IT 인력 양성에 크게 기여했으며, 다양한 프로그래밍 언어를 지원하고 여러 주변 장치를 연결할 수 있었다. 이 기종은 그레이디 부치, 가이 스틸, 댄 브릭린 등 저명한 인물들이 프로그래밍을 처음 접한 시스템으로, 현재도 일부 시스템이 보존 및 복원되고 있다.

더 읽어볼만한 페이지

  • IBM 미니컴퓨터 - IBM 801
    IBM 801은 IBM이 개발한 실험적인 RISC 아키텍처 기반의 컴퓨터 프로세서이며, 성능 향상을 위해 불필요한 연산을 제거하고 내부 레지스터에서 작동하는 명령어를 사용했으며, POWER 아키텍처와 PowerPC에 영향을 미쳤다.
  • 16비트 컴퓨터 - PDP-11
    PDP-11은 DEC에서 1970년에 발표한 16비트 미니컴퓨터 제품군으로, 혁신적인 아키텍처, 직교 명령어 집합, 메모리 맵 I/O, 인터럽트 처리 방식 등의 특징을 가지며 다양한 분야에서 활용된 미니컴퓨터이다.
  • 16비트 컴퓨터 - IBM PC XT
    IBM PC XT는 IBM PC의 하드 디스크 드라이브 탑재 모델로, 확장 슬롯 증가와 하드 디스크 기본 탑재를 통해 확장성을 강화한 것이 특징이다.
IBM 1130
IBM 1130 정보
IBM 1130
종류미니컴퓨터
개발사IBM 보카 레이턴
제조사IBM
출시일1965년
단종1980년대 초
가격월 임대료 약 $1,000 (1965년 기준, 현재 가치로 약 US)
판매량10,000대 (추정)
운영체제디스크 모니터 2 (DM2)
CPU16비트, 워드 어드레싱, 15비트 주소 공간
메모리자기 코어
저장 장치IBM 2310 디스크 드라이브
메모리 카드IBM 2515 싱글 디스크 카트리지
디스플레이IBM 1627 캘컴 플로터, IBM 2250 (선택 사항)
입력 장치펀치 카드, 종이 테이프, 콘솔
연결IBM 동기식 통신 어댑터 (SCA)
크기데스크 크기: 폭 58.5인치, 깊이 29인치, 높이 44.125인치
무게660 lb
호환성포트란 사용
이전 모델IBM 1620, IBM 650
후속 모델IBM Series/1IBM System/7
관련 시스템IBM 1800 프로세스 제어 시스템
마케팅 대상소규모 엔지니어링 회사, 학교
웹사이트IBM1130.org

2. 역사

IBM 1130의 이중 폭 SLT 카드. 사각형 금속 캔에는 하이브리드 회로가 들어 있다.


IBM 1130은 System/360에서 사용된 것과 동일한 솔리드 로직 기술(SLT)이라는 전자 패키징을 사용했다. 이후의 미니컴퓨터PDP-11 및 데이터 제너럴 노바와 마찬가지로 16비트 바이너리 아키텍처를 가지고 있다.

주소 공간은 15비트이며, 1130을 32,768개의 워드 (65,536바이트) 메모리로 제한한다. 1130은 자기 코어 메모리를 사용하며, 프로세서는 워드 경계에서 직접, 간접 및 인덱스 주소 지정 모드를 사용하여 주소를 지정한다.

IBM 1130의 개발 및 출시와 관련된 주요 사건들은 다음과 같다.

  • 1965년
  • 2월 11일: IBM은 1130 (모델 1A, 1B, 2A 및 2B)과 IBM 1132 프린터를 출시했다.
  • 4분기: 샌호세 공장에서 최초의 고객 출하가 시작되었다.
  • 1966년
  • 3월 31일: IBM 1500 교육 시스템 출시.
  • 4월: IBM 1800 출하.[26]
  • 8월 9일: 1130 동기 통신 어댑터 출시. 이를 통해 1130 시스템을 일반 임대 전화선을 통해 IBM System/360의 모든 모델에 연결하여 통신 터미널로 사용할 수 있었다.
  • 1967년 4월 17일: 1130의 4방향 확장(모델 2C, 2D, 3B, 3C 및 3D) 발표. 주요 내용은 디스크 저장 용량 5배 및 코어 메모리 4배 증가, 처리 속도 약 40% 향상, 광학 마크 리더를 포함한 주변 장치 추가, 개선된 상업용 프로그래밍 패키지 제공 등이다.
  • 1968년
  • 1월: 1130 모델 2C, 2D, 3B, 3C 및 3D의 첫 출하 시작.
  • 7월: 보카 레이턴 공장에서 1130 출하 시작.
  • 1971년
  • 7월 22일: 1130 모델 4A 및 4B 출시.
  • 9월: 모델 4의 첫 번째 고객 출하 시작.
  • 1972년 5월 31일: 모델 1C, 1D, 5B, 5C 및 5D 발표.
  • 1973년: 제록스 530이 IBM 1130 고객의 가능한 후속 제품으로 판매됨.[6][7][8]
  • 1974년 1월: 제록스 530에 대한 주문이 "고무적"으로 평가됨.[9]


'''IBM 1130 컴퓨터 시스템'''의 기종 구성은 다음과 같다.

구성 요소상세 설명
IBM 1131 중앙 처리 장치(CPU)조작 탁(Operator's Console) 및 자기 디스크 포함
IBM 1442 카드 판독/천공 장치(Card Reader/Punch)
IBM 1132 프린터(Printer)
IBM 1403 프린터(Printer)
IBM 2311 자기 디스크 드라이브(Magnetic Disk Drive)
IBM 2250 그래픽 표시 장치(Graphic Display Unit)벡터 스캔 방식, 1024×1024 그리드 해상도. 영숫자 그리기 패턴 내장.
IBM 1627 플로터
IBM 1130 다중 터미널 제어 어댑터(Multiple Terminal Control Adapter)IBM 2741 키보드 프린터(Keyboard Printer)를 4대까지



IBM 1130 시스템은 컴퓨터 내부적으로 16비트 워드 머신이었다. 프로그래밍 언어는 어셈블리 언어 어셈블러(Assembler)와 고급 언어 FORTRAN이 표준으로 제공되었으며, 사용자가 제작한 FORTH, LISP, GPSS|GPSS영어 등의 IBM 사용자 단체 SHARE (computing)|SHARE영어에 등록된 개발 언어, 응용 프로그램을 IBM이 대행 배포했다.

IBM의 중소형 및 대형 과학 계산용 컴퓨터는 다음과 같다.


  • 중소형 상업용 컴퓨터 IBM 1400 시리즈: IBM 1401, IBM 1410, IBM 1440, IBM 1460
  • 대형 과학 계산(상업용)기 IBM 700/7000 시리즈: IBM 701, IBM 702, IBM 704, IBM 709 & IBM 7030, IBM 7070/7072/7074, IBM 7090
  • 중소형 과학 계산・프로세스 제어 컴퓨터: IBM 1620, IBM 1710, '''IBM 1130''', IBM 1800, IBM System/7
  • 범용 IBM System/360 시리즈
  • List of IBM products|IBM 제품 목록영어

2. 1. 개발 배경

IBM 1130은 IBM이 1965년에 발표한 과학 계산용 소형 컴퓨터였다. IBM 1620의 후속 기종으로, IBM System/360에 사용된 최신 솔리드 로직 기술(SLT)을 이용했다. 프로세스 제어 기능을 탑재하여 IBM 1800의 기반이 되기도 했다.

2. 2. 출시 및 영향

1965년 2월 11일, IBM은 1130을 공식 발표했다.[3] 1130은 저렴한 가격, 뛰어난 성능, 사용 편의성 덕분에 출시 직후부터 큰 인기를 끌었다. 특히, 대화형 "오픈 샵" 프로그램 개발 환경을 제공하여 사용자들은 컴퓨터와 직접 상호작용하며 프로그램을 개발하고 실행할 수 있었다. 이는 당시로는 혁신적인 기능이었으며, 컴퓨터 사용 방식을 크게 변화시켰다.

1130은 총 생산량이 약 10,000대로 추정된다.[3] 가격 대비 성능이 우수했으며, 저렴하고 탈착 가능한 디스크 스토리지를 포함했고, 신뢰할 수 있고 사용하기 쉬운 여러 고급 언어로 작성된 소프트웨어를 제공했다. 디스크 드라이브 포함 시 약 32000USD 또는 41000USD부터 시작하는 저렴한 가격[2]과 균형 잡힌 기능 세트는 대화형 "오픈 샵" 프로그램 개발을 가능하게 했다.

1130은 많은 사람들에게 컴퓨터와의 첫 직접적인 상호 작용을 제공했다는 점에서 컴퓨터 역사에서 중요한 위치를 차지한다. 특히, 한국의 대학과 연구소에서는 1130을 도입하여 과학기술 연구 및 전산 교육에 활용함으로써, 한국의 과학기술 발전과 IT 인재 양성에 크게 기여했다.

2. 3. 후속 모델

IBM 1800은 1964년 11월에 발표되었으며,[5] 프로세스 제어 응용 분야를 위한 IBM 1130의 변형 모델이다. IBM 1130은 IBM 1620의 후속 모델이며, IBM 1800은 IBM 1710의 후속 모델이다. 1800은 산업 현장에서 프로세스 제어 및 자동화에 사용되었다.

IBM은 1130과 호환되는 후속 시스템을 생산하지 않았다. IBM System/7은 프로세스 제어 및 실시간 시스템이며, IBM Series/1은 범용 16비트 미니컴퓨터로, 1130과는 서로 다른 컴퓨터 아키텍처를 가지고 있다.

3. 기술적 특징

IBM 1130은 1965년에 출시된 IBM의 소형 과학 계산용 컴퓨터이다. System/360과 동일한 솔리드 로직 기술(SLT)을 사용했으며, PDP-11, 데이터 제너럴 노바와 같은 당시 미니컴퓨터처럼 16비트 워드 머신으로 설계되었다.[3]

1130의 주요 기술적 특징은 다음과 같다.


  • 주소 공간: 15비트 주소 공간을 사용하여 최대 32,768개의 16비트 워드(65,536바이트) 메모리를 지원한다.[3]
  • 메모리: 자기 코어 메모리를 사용했으며, 프로세서는 워드 경계에서 직접, 간접 및 인덱스 주소 지정 모드를 지원한다.
  • 프로그래밍 언어: 어셈블리 언어와 포트란이 표준으로 제공되었으며, APL,[10] BASIC, COBOL,[11] FORTH, PL/I(SL/1 인터프리터 형태),[12] RPG[13] 등 다양한 언어도 사용 가능했다. 프랑스어 ALGOL 컴파일러도 존재했다.
  • 운영 체제: 1967년에 도입된 '디스크 모니터 시스템 버전 2'(DM2)가 가장 널리 사용되었으며, 단일 작업 배치 지향 시스템이었다. 디스크가 없는 시스템을 위한 카드/종이 테이프 프로그래밍 시스템도 지원되었다.
  • 기타 특징: 속도와 공간 절약을 위해 운영 체제와 컴파일러는 어셈블리 언어로 작성되었으며, 코드와 데이터를 혼합하고 자기 수정 코드를 사용하는 등 현대에는 드문 기술을 사용했다.[3]


1130은 주로 과학 시장을 겨냥했지만, 소규모 조직을 위한 데이터 처리 머신으로도 활용되었다. IBM은 과학 및 엔지니어링 프로그램 외에도 상업용 서브루틴 패키지, 학생 정보 시스템, CPM/PERT 등 다양한 응용 프로그램을 제공했다.

3. 1. 하드웨어

IBM 1130은 System/360과 동일한 솔리드 로직 기술(SLT) 전자 패키징을 사용했다.[3] SLT는 트랜지스터와 다이오드를 소형 모듈에 집적한 기술로, 신뢰성과 성능 향상에 기여했다. PDP-11, 데이터 제너럴 노바와 같은 당시의 미니컴퓨터처럼 16비트 바이너리 아키텍처를 채택했다. 주소 공간은 15비트로, 최대 32,768개의 16비트 워드(65,536바이트) 메모리를 지원했다.[3] 자기 코어 메모리를 사용했으며, 프로세서는 워드 경계에서 직접, 간접 및 인덱스 주소 지정 모드를 사용하여 주소를 지정했다.

명령어는 짧은 형식(한 단어)과 긴 형식(두 단어)이 있다. 대부분의 계산, 로드 및 저장 명령어는 하나의 레지스터(일반적으로 ACC)와 메모리 위치를 참조한다. 메모리 위치는 짧은 형식에서는 현재 주소 또는 인덱스 레지스터 중 하나에서 8비트 부호 있는 변위로, 긴 형식에서는 전체 15비트 주소로 식별되며, 이는 인덱싱될 수 있고 간접 지정을 지정할 수 있다. 메모리는 워드 단위로 주소가 지정된다.

1130은 빅 엔디안 형식으로 저장된 단정밀도 및 배정밀도 이진 데이터(16비트 및 32비트)만 기본적으로 지원한다. 표준 및 확장 정밀도 부동 소수점(32비트 및 48비트) 및 십진수 데이터는 서브루틴을 사용하여 지원된다.

조건부 전송은 (a) 누산기의 현재 내용 또는 (b) 이전 연산에 의해 설정된 캐리 및 오버플로 지표를 기반으로 한다. 전송은 건너뛰기(다음 명령어가 짧다고 가정) 또는 분기로 수행할 수 있다. 지정된 테스트 중 하나라도 참이면 건너뛰기가 발생한다. 지정된 테스트가 ''모두'' 거짓이면 분기가 발생한다.



주요 레지스터:

IAR = 명령어 주소 레지스터

ACC = 누산기

EXT = 확장 레지스터

XRx = 인덱스 레지스터: x = 1,2,3

하드웨어 레지스터가 아닌 메모리 워드 1, 2, 3으로 구현됩니다.

조건 테스트:

Z 누산기가 0

  • 누산기가 음수

+ 누산기가 양수

E 누산기가 짝수

C 캐리 지표 꺼짐

O 오버플로 지표 꺼짐

1130 명령어 세트 니모닉:

LD = ACC 로드 STO = ACC 저장

LDD = 이중 로드 (ACC & EXT) STD = 이중 저장 (ACC & EXT)

LDX = 인덱스 로드 STX = 인덱스 저장

LDS = 상태 로드 STS = 상태 저장

A = ACC 더하기 AD = 이중 더하기

S = ACC 빼기 SD = 이중 빼기

M = 곱하기 D = 나누기

AND = 부울 AND OR = 부울 OR

XOR = 부울 XOR

SLA = 왼쪽으로 ACC 시프트 SLT = 왼쪽으로 ACC & EXT 시프트

SLCA = 왼쪽으로 시프트 및 ACC 계산 SLC = 왼쪽으로 시프트 및 ACC & EXT 계산

SRA = 오른쪽으로 ACC 시프트 SRT = 오른쪽으로 ACC & EXT 시프트

RTE = 오른쪽으로 ACC & EXT 회전

BSC = 조건에 따른 분기 또는 건너뛰기(수정자에 따라 다름)

예. BP BNP BN BNN BZ BNZ BC BO BOD

BOSC - 조건에 따라 분기 또는 건너뛰기 (비트 9가 설정된 BSC 대체)

현재 인터럽트 레벨을 종료합니다.

BSI = 분기 및 IAR 저장

MDX = 인덱스 수정 및 건너뛰기(부호 변경 또는 0이 되면 IAR을 1 증가)

WAIT = 일시 중지 NOP = No Operation (SLA 0의 대체)

XIO = I/O 실행

1800 추가 명령어 니모닉:

CMP = ACC 비교 DCM = 이중 ACC & EXT 비교

동등한 니모닉

디스크 어셈블러는 프로그래머의 의도를 더 명확하게 하기 위해 기존 명령과 동등한 몇 가지 니모닉을 도입했습니다.

SKP - 조건에 따른 건너뛰기, 짧은 BSC와 동일

B - 무조건 분기, 조건이 지정되지 않은 BSC와 동일

BP - 누산기 양수 분기, '+' 조건 지정 BSC와 동일

BNP - 누산기 양수가 아님 분기

BN - 누산기 음수 분기

BNN - 누산기 음수가 아님 분기

BZ - 누산기 0 분기

BNZ - 누산기 0이 아님 분기

BC - 캐리 분기

BO - 오버플로 분기

BOD - 누산기 홀수 분기

MDM - 메모리 수정, 인덱싱되지 않은 긴 형식 MDX와 동일

XCH - 누산기 및 확장 교환, RTE 16과 동일

짧은 명령어 형식(16비트 워드):

1

비트 0...45678......5

OP---FTTDisp----

OP 연산

F 형식 0 = 짧음

TT 태그

Disp 변위

긴 명령어 형식(두 개의 16비트 워드):

1 1

비트 0...456789.....50..............5

OP---FTTIMod----주소---------

OP 연산

F 형식 1 = 롱

TT 태그

I 간접 비트

Mod 수정자

유효 주소 계산(EA):

F = 0 | F = 1, I = 0 | F = 1, I = 1

직접 주소 지정| 직접 주소 지정| 간접 주소 지정

  • ------------------------------------------------------------------

TT = 00 | EA = Displ + IAR | EA = Add | EA = C/Add

TT = 01 | EA = Displ + XR1 | EA = Add + XR1 | EA = C/Add + XR1

TT = 10 | EA = Displ + XR2 | EA = Add + XR2 | EA = C/Add + XR2

TT = 11 | EA = Displ + XR3 | EA = Add + XR3 | EA = C/Add + XR3

  • ------------------------------------------------------------------

Disp = 변위 필드의 내용

Add = 명령어의 주소 필드 내용

C = Add 또는 Add + XR로 지정된 위치의 내용



IBM 1130 레지스터
15141312111009080706050403020100(비트 위치)
누산기
ACC
Q
인덱스 레지스터
style="text-align:center; background:white" colspan="1"|IAR
XR1
XR2
XR3
플래그
style="text-align:center; background:white" colspan="14" |OC



;예약된 메모리

코어 메모리의 가장 낮은 주소는 하드웨어 또는 관례에 의해 결정된 용도를 갖는다.

주소사용
/0000관례에 따라 명령어 B *-1이 포함되어 있으며, 이는 운영자가 모든 콘솔 IAR 표시등이 꺼져 있는 것을 감지하고 Int Req를 누르거나 재부팅하여 작업을 플러시할 때까지 무한정 자체로 분기한다.
/0001XR1. 인덱스 레지스터의 메모리 주소를 사용하면 LDX I1 2와 같은 직접 이동이 가능합니다.
/0002XR2.
/0003XR3.
/0008Level 0(최고 우선순위) 인터럽트— 1442 카드 리더/펀치 "열 준비" 인터럽트의 핸들러 주소.
/0009Level 1 인터럽트— 1132 프린터 및 동기식 통신 어댑터의 핸들러 주소. 이 인터럽트 및 더 낮은 인터럽트의 핸들러는 어떤 장치가 인터럽트했는지 확인하기 위해 상태 단어를 테스트해야 함.
/000A=10Level 2 인터럽트— 디스크 저장 장치, 스토리지 액세스 채널의 핸들러 주소.
/000B=11Level 3 인터럽트— 1627 플로터, 스토리지 액세스 채널의 핸들러 주소.
/000C=12Level 4 인터럽트— 1134 종이 테이프 리더, 1055 종이 테이프 펀치, 콘솔, 1442 카드 리드 펀치, 2501 카드 리더, 1403 프린터, 1231 광학 마크 리더, 스토리지 액세스 채널 장치의 핸들러 주소.
/000D=13Level 5(최저 우선순위) 인터럽트— 콘솔 중지 및 인터럽트 스위치, 스토리지 액세스 채널의 핸들러 주소.
/0020=321132 프린터의 스캔 필드의 첫 번째 단어(/0020–/0027).
/0026=38스캔 필드의 마지막 전체 단어.
/0027=39절반 사용: 120열 = 120비트 = 일곱 개의 16비트 단어에 8비트 추가.
/0038=56감독자에게 EXIT/모니터로 돌아가기(CALL EXIT)


3. 2. 모델

내부 디스크 없음3.6 μs,
디스크 포함2.2 μs,
디스크 포함5.9 μs
(3.6 μs: 아래 참조),
단일 디스크2.2 μs,
내부 디스크 없음4096 단어모델 1A모델 2Astyle="text-align:center;"|모델 4Astyle="text-align:center;"|8192 단어모델 1B모델 2B모델 3B모델 4B모델 5B16,384 단어모델 1C모델 2C모델 3Cstyle="text-align:center;"|모델 5C32,768 단어모델 1D모델 2D모델 3Dstyle="text-align:center;"|모델 5D



모델 4는 5.9μs 사이클 시간을 가진 저가형 제품이었다. 성능 업그레이드를 구매한 일부 구매자는 성능 향상을 위한 현장 조정이 놀랍도록 사소하다는 것을 관찰했다.

IBM 1132 프린터는 인쇄 휠이 회전할 때 인쇄 휠을 언제 작동시킬지 결정하기 위해 내부 논리 대신 1130 프로세서를 사용한다. 모델 4용 프린터는 더 느리게 작동하지만, 느린 프로세서도 여전히 프린터를 따라갈 수 없었다. 하드웨어 매뉴얼에는 모델 4가 두 개의 최고 레벨 인터럽트 (레벨 0 카드 리더 열 인터럽트 또는 레벨 1 프린터 인터럽트)를 처리할 때 더 빠른 3.6μs 사이클 시간으로 작동한다고 공개되어 있다. 모델 4의 일부 사용자는 더 높은 프로세서 속도의 이점을 얻기 위해 프린터 인터럽트를 해제하지 않는 가짜 프린터 드라이버를 작성하곤 했다. 그러나 이 간격 동안 하위 레벨 인터럽트는 비활성화되며, 1442 카드 리더의 카드 종료 인터럽트(레벨 4)도 비활성화된다.

3. 3. 소프트웨어

운영 체제와 컴파일러는 모두 어셈블리 언어로 작성되어 속도를 최대화하고 공간을 절약했다. 코드와 데이터를 혼합하고 자기 수정 코드를 포함하는 등 현대에는 드문 기술이 사용되었다.[3] 사용자 프로그래밍은 주로 포트란으로 이루어졌다. 1130 포트란 컴파일러는 코어 메모리가 4,096 단어인 기계에서도 실행될 수 있었다.

1130에서 가장 널리 사용된 운영 체제는 1967년에 도입된 '디스크 모니터 시스템 버전 2'(DM2)였다. DM2는 단일 작업 배치 지향 시스템으로, 시스템 레지던스를 위해 최소 4KB의 코어 메모리와 하나의 통합 2310 디스크 드라이브가 필요했다. 디스크가 없는 시스템을 지원하기 위해 카드/종이 테이프 프로그래밍 시스템을 사용할 수 있었다.

1130에서 사용할 수 있는 다른 프로그래밍 언어로는 APL,[10] BASIC, COBOL,[11] FORTH, PL/I(SL/1 인터프리터 형태로),[12] RPG[13] 등이 있었다. 심지어 프랑스어 ALGOL 컴파일러도 존재했다.

이스턴 미시간 대학교는 IBM에서 제공하는 포트란 IV (부분 집합) 컴파일러의 대안으로 Fortran-EMU로 알려진 1130용 포트란 IV 컴파일러를 개발했다. 이는 IBM 컴파일러에서 지원하지 않는 LOGICAL 데이터 유형, 6자 변수 이름 및 향상된 진단을 포함하여 많은 Fortran Iv 기능을 추가했다.

오클라호마 주립 대학교는 ANSI Fortran 1966으로 작성된 ALGOL 68 컴파일러를 개발했다.[14][15][16]

FOCAL 인터프리터는 미시간 대학교에서 개발되었다.

IBM은 또한 IBM에서 지원하는 프로그램(유형 I 및 II)과 지원하지 않는 프로그램(유형 III 및 IV)을 포함하여 대규모 프로그램 라이브러리를 배포했다.

1130은 주로 과학 시장을 목표로 했기 때문에 과학 및 엔지니어링 프로그램이 주를 이루었다.

1130은 또한 소규모 조직을 위한 데이터 처리 머신으로 틈새 시장을 점유했다.

특수 목적 소프트웨어도 있다.

1130의 일괄 작업은 주 입력 스트림(카드 또는 종이 테이프 판독기)의 제어 레코드에 의해 제어된다. 제어 레코드에는 모니터 제어 레코드와 슈퍼바이저 제어 레코드의 두 가지 유형이 있다.[20]

`//␢`로 식별되며, 4-7열에 "의사 연산 코드"가 뒤따르는 모니터 제어 레코드이다. "␢"는 하나의 공백을 나타낸다.

1130 모니터 제어 레코드
제어 레코드기능
`//␢* comments`5~80열의 작업 목록에 인쇄할 주석을 제공한다.
`//␢JOB`작업의 시작을 식별한다.
`//␢ASM`어셈블러를 호출한다.
`//␢FOR`FORTRAN 컴파일러를 호출한다.
`//␢PAUS`콘솔 시작 키를 누를 때까지 시스템을 중지한다.
`//␢TYP`제어 레코드 입력 및 출력을 위해 프린터에서 콘솔로 전환한다.
`//␢TEND``//␢TYP`의 효과를 취소한다.
`//␢DUP`디스크 유틸리티 프로그램을 호출한다.
`//␢XEQ`메인라인 프로그램에 제어를 읽고 전송한다.



`JOB` 레코드는 8열에 "T"를 포함하여 이 작업에서 사용자 영역에 추가된 모든 파일을 종료 시 삭제해야 함을 나타낼 수 있다. 11~15열에는 카트리지 레이블이 포함될 수 있으며, 시스템은 진행하기 전에 지정된 카트리지가 마운트되었는지 확인한다.

`XEQ` 레코드는 8~12열에 실행할 프로그램의 이름을 포함할 수 있다. 이를 생략하면 현재 작업 저장소에 있는 프로그램이 실행된다. 14열에 "L"이 포함되어 있고 프로그램이 디스크 시스템 형식(코어 이미지 아님)인 경우 코어 로드 빌더가 코어 맵을 인쇄한다.

감독 제어 레코드는 1열에 "*"로 시작하며, 바로 뒤에 2열에 명령 의사 연산이 온다. 이들은 코어 로드 빌더(Core Load Builder)의 `LOCAL`, `NOCAL` 및 `FILES`이다. DUP 제어 레코드도 유사한 형식을 갖는다. 이러한 레코드는 `// XEQ` 문 또는 DUP `*STORECI` 명령에 대한 프로그램 연결을 제어한다.

감독 제어 레코드
제어 레코드설명
`*LOCAL`오버레이로 로드될 하위 프로그램 목록을 제공하며, 메인 프로그램에 포함되지 않는다.
`*NOCAL`메인 프로그램에 연결될 하위 프로그램 목록을 제공하며, 호출되지 않더라도 연결된다. 일반적으로 운영자가 콘솔에서 수동으로 분기할 수 있는 디버그 루틴 또는 인터럽트 서비스 루틴이다.
`*FILES`FORTRAN `DEFINE FILE` 문 또는 어셈블러 `FILE` 문에서 "파일 식별 번호"를 디스크의 명명된 파일에 연결한다.



입력 호퍼에 놓인 카드 덱을 복사하는 자체 로딩 1130 프로그램을 포함하는 펀치 카드


IBM 1130에 대한 지속적인 기억은 끊임없는 사람의 개입이 필요했기 때문에 발생했을 수 있다. 일반적으로 펀치 카드 덱으로 지정된 "작업"을 실행하는 데 사용되었다. 작업자는 카드를 카드 리더에 로드하고 반환을 위해 다시 작업을 분리하여 제출자에게 인쇄된 출력과 함께 보냈다. 작업자는 또한 1130에서 오작동 또는 중단된 작업의 증거를 확인하고 키보드의 키를 눌러 다음 작업의 시작 부분으로 건너뛰어 개입해야 했다.[21]

작업의 시작을 표시하는 것은 `// JOB`으로 시작하는 펀치 카드였다. `//`로 시작하는 모든 카드는 Supervisor에 대한 명령이었으며 사용자 프로그램 또는 데이터로 사용할 수 없었다. 다른 명령에는 디스크 유틸리티 프로그램(파일 삭제 또는 임시 영역의 파일을 파일 컬렉션에 추가)을 실행하는 `// DUP`와 디스크에서 명명된 프로그램을 실행하는 `// XEQ`가 포함되었다. 사용자 프로그램이 명령 카드를 읽으려고 하면 표준 카드 리더 루틴은 프로그램에 입력 종료를 알리고 해당 카드의 내용을 Supervisor를 위해 저장한다.

;초기 프로그램 로드(IPL)

부팅 장치를 시스템 콘솔에서 선택할 수 있는 IBM 360과 달리 IBM 1130은 외부 장치, 즉 카드 리더 또는 종이 테이프 리더에서만 "부팅" (IPL'd: 초기 프로그램 로드) 할 수 있었다.[22][23]

;복구 절차

IBM 1130이 시작되면 Supervisor는 여전히 메모리에 있으며 전원 없이 코어 메모리가 상태를 유지하므로 아마도 손상되지 않았을 것이다. 작업자는 사용자 프로그램이 중단되었다고 결론을 내리면 Supervisor는 키 입력을 감지하여 프로그램을 중단하고 다음 // 카드로 건너뛸 수 있다. Supervisor는 잘못 작성된 작업에 의한 수정으로부터 보호되지 않으며, 이러한 경우 작업자가 1130을 재부팅해야 할 수 있다. 또한 디스크에 쓰는 것 역시 보호되지 않았다. 디스크의 시스템 소프트웨어 복사본이 수정되면 약 4000개의 바이너리 코딩된 펀치 카드(약 2개의 상자)에서 다시 로드하여 복원할 수 있다.

'''디스크 유틸리티 프로그램(DUP)'''은 프로그램, 서브루틴 및 데이터를 전송하기 위한 명령을 제공한다. 작업 제어 `// DUP` 카드와 하나 이상의 제어 카드로 호출된다.[25]

일반적인 DUP 명령어
명령어기능
*STORE디스크 시스템 형식으로 프로그램 저장
(재배치 가능한 오브젝트)
*STORECI코어 이미지 형식으로 프로그램 저장
(완전 연결 및 재배치)
*STOREDATA데이터 파일을 디스크에 저장
*STOREDATACI덤프된 코어 이미지 프로그램 재로드
*STOREMOD디스크 파일 교체 또는 생성
*DUMP디스크에서 데이터 파일 덤프
*DUMPDATA디스크에서 임의의 섹터 덤프
*DUMPLET디스크 위치 등가 테이블(LET) 출력,
고정 영역이 있는 경우 고정 위치 등가 테이블(FLET) 출력
*DELETE프로그램 또는 데이터 파일 삭제



주로 시스템 관리자가 사용하는 다른 명령어로는 고정 영역 정의 또는 확장, 시스템에서 FORTRAN 컴파일러 및/또는 어셈블러 삭제, 수정된 경우 워킹 스토리지에 올바른 섹터 주소 복원 등이 있다.

피연산자는 고정된 열에 배치해야 한다. 소스 장치 코드는 13열과 14열에, 대상 장치는 17열과 18열에 입력한다. 이러한 장치 코드는 다음과 같다.



선택적으로 프로그램 이름은 21열에서 25열까지, 카운트 필드는 27열에서 30열까지 코딩할 수 있다. 이 필드의 해석은 요청된 DUP 기능에 따라 다르다.

프로그램은 코어 이미지 빌더(360의 링키지 에디터에 해당하는 DM2)를 호출하는 ''STORECI'' 명령을 사용하여 더 빠르게 로드되는 형식으로 변환할 수 있다. 또는, 프로그램은 실행할 때마다 이 과정을 거칠 수 있으며, 드물게 사용되는 프로그램의 경우 디스크 공간을 절약하기 위해 이 방법이 선호된다.

IBM 1130 DUP 제어 카드 예시


1130에는 콜 스택에 대한 하드웨어 지원이 없다. 대부분의 서브 프로그램은 BSI(Branch and Store IAR) 명령으로 호출된다. 이 명령은 IAR(복귀 주소)의 값을 대상 주소에 저장하고 대상+1로 제어를 전송합니다. 서브 프로그램은 서브 프로그램의 첫 번째 단어를 통한 간접 분기를 사용하여 해당 호출 위치로 돌아간다.

따라서 SIMPL이라는 서브 프로그램은 다음과 같이 구성될 수 있다(주석은 명령 피연산자를 따름).

SIMPL: DC *-* 이것은 초기에는 0으로 채워지는 진입점이다.

(루틴이 수행하는 모든 작업)

B I SIMPL SIMPL 위치에 있는 주소로 '''I'''ndirect 분기하여 반환한다.

END SIMPL 어셈블러에게 SIMPLE 루틴의 소스가 완료되었음을 지시한다.

서브 프로그램은 다음과 같이 호출된다.

BSI L SIMPL SIMPL을 호출한다. SIMPL이 -128 또는 +127 단어 이상 떨어져 있는 경우 L(Long)이 필요하다.

의사 연산 코드 CALL이 일반적으로 사용된다.

보여지는 바와 같이, 서브 프로그램의 진입점은 `DC *-*`인데, 이는 식에 의해 지정된 값으로 상수(한 단어의 저장 공간을 차지함)를 정의하는 데 사용되는 어셈블러 의사 연산이다. *는 어셈블리의 현재 주소를 나타내므로 *-*는 0이 된다.

SIMPL이 호출되면 BSI 명령은 `*-*`를 BSI 명령 바로 다음 주소인 IAR의 현재 값으로 바꾼다. SIMPL이 작성된 대로 작업을 수행한 후, B I SIMPL은 SIMPL로 분기하는 것이 아니라 SIMPL을 통해 간접적으로 분기하여 SIMPL을 호출한 BSI 명령 다음에 오는 명령으로 실행을 계속한다.

반환 주소를 보호하기 위한 추가적인 장치 없이, 재귀는 불가능하다. SIMPL이 자체를 호출하거나, 이를 호출하는 서브 프로그램을 호출하면 원래 반환 주소가 덮어쓰여진다. 재진입성도 같은 이유로 문제가 된다.

SIMPL을 호출하는 쪽에서는 SIMPL에 매개변수를 전달할 수 있으며, 이는 값 또는 값의 주소일 수 있다. 매개변수는 인라인(BSI 명령 바로 뒤)으로 코딩되거나 인덱스 레지스터 XR1 및 XR2에 배치될 수 있다. 매개변수가 인라인으로 배치된 경우 SIMPL은 자체 반환 주소를 수정하여 최종 간접 분기가 매개변수 너머로 반환되도록 한다.

단일 정수의 정수 함수는 누산기에 매개변수를 예상하고 결과를 반환한다. 부동 소수점 함수는 부동 소수점 누산기(부동 소수점 라이브러리에 의해 설정된 두 단어 영역, 확장 정밀도의 경우 세 단어)를 사용한다.

진입점에서 초기 값을 0으로 코딩하는 규칙은 프로그래밍 오류로 인해 SIMPL이 처음 호출되기 전에 반환되는 경우 실행이 메모리 위치 0으로 점프한다는 것을 의미한다.

빈번하게 호출되는 서브 프로그램 (예: 부동 소수점 산술용 서브 프로그램)의 경우 각 호출의 크기를 한 단어로 줄이는 것이 중요합니다. 이러한 "라이브러리 루틴"은 LIBF 프로토콜을 사용한다. 이전 섹션에서 설명한 CALL 프로토콜보다 더 복잡하지만 LIBF는 어셈블리 언어 프로그램 작성자로부터 복잡성을 숨긴다.

라이브러리 루틴은 인덱스 레지스터 XR3을 통해 주소가 지정된다. (Fortran 서브 프로그램은 매개변수 및 반환 주소의 주소에 인덱스 레지스터 XR1을 사용하지만 레지스터 XR2는 사용되지 않는다.) XR3은 세 단어의 '''전송 벡터''' 시퀀스를 가리키며, 첫 번째 항목은 XR3 값에서 -128 단어이다. 프로그래머는 `LIBF` 의사 연산을 사용하여 라이브러리 루틴을 호출한다. 이 연산은 루틴에 대한 직접적인 `BSI` 가 아닌 한 단어 인덱스 분기 명령(BSI 3 ''disp'')을 어셈블한다. 이 명령의 변위(-128, -125 등)는 루틴의 전송 벡터 시작점을 식별한다.

전송 벡터는 프로그램 조립 시 링크 로더에 의해 준비된다. SIMPL이라는 라이브러리 함수에 대한 전송 벡터 항목은 다음 형식을 갖는다.

DC *-* BSI가 반환 주소를 저장하는 단어.

B L SIMPL 라이브러리 함수의 시작점으로 분기.

SIMPL이 반환 주소가 어디에 있는지 아는 방법은, SIMPL이 LIBF 루틴으로 선언된 경우 링크 로더가 SIMPL의 코드를 수정하여 SIMPL+2에 SIMPL의 전송 벡터 항목의 주소를 배치하는 것이다. CALL 서브 프로그램과 달리 LIBF 루틴은 반환 주소를 저장하는 DC 지시어로 시작하지 않고(전송 벡터에 있음) 다음과 같이 실제 코드로 시작한다.

SIMPL STX 1 RCVR1+1 근처 위치에 호출자의 XR1 값을 저장한다.

LDX I1 *-* 링크 로더는 주소 단어를 전송 벡터를 가리키도록 변경한다.

SIMPL+2에 SIMPL의 전송 벡터의 주소를 배치하면 선택한 인덱스 레지스터(여기서는 XR1)를 저장하는 한 단어 명령을 위한 공간이 남는다. 그런 다음 간접 LDX 명령은 XR1을 전송 벡터가 아닌, 이를 통해 반환 주소 또는 BSI 뒤에 인라인으로 저장된 모든 매개변수를 가리킨다. 그런 다음 SIMPL은 작성된 대로 작업을 수행하여 XR1을 통해 인라인 매개변수에 액세스하고(이 경우 반환 주소에 대해 XR1을 증가시켜야 함) 다음과 같이 반환한다.

STX 1 RETN+1 XR1을 저장하여 반환 주소로 사용할 준비를 한다.

RCVR1 LDX L1 *-* SIMPL의 첫 번째 명령은 이 주소를 수정했다. 이제,
RETN B L *-* 이 명령은 두 개의 명령 전에 수정되었다. 반환한다.

;예시

SIMPL에 대한 LIBF 스타일 호출이 주소 100에 있다고 가정한다. 그러면 BSI 3 ''disp'' 가 한 단어 명령이므로 반환 주소는 101이 된다. XR3은 전송 벡터 그룹을 가리킨다. SIMPL에 대한 전송 벡터가 주소 2000에서 시작하는 경우 BSI는 XR3+disp = 2000이 되도록 ''disp''를 사용하여 어셈블된다. BSI를 실행하면 위치 2000에 101을 저장하고 위치 2001로 점프한다. 2001에는 링크 로더가 주소 300에 배치했을 수 있는 SIMPL의 진입점으로의 두 단어 길이 점프가 있다.

긴 점프는 제어를 SIMPL로 전송한다. 300의 명령이 XR1을 저장한 후 301의 명령은 LDX '''I'''1 2000이다. 링크 로더가 2000을 위치 302에 배치했다. 이것은 2000을 XR1에 로드하지 않는다. 간접 명령이며, 2000의 내용, 즉 SIMPL에 대한 해당 호출의 반환 주소인 101을 로드한다.

위에 표시된 반환 시퀀스에서 제어가 RETN에 도달할 때까지 해당 명령은 B L 101 이며, 이는 호출자에게 반환한다. (101에 하나 이상의 인라인 매개변수가 있는 경우 SIMPL은 XR1을 증가시켜 102 이상을 가리키고, 이것이 B 명령의 대상이 된다.)

;변형

SIMPL이 BSI 명령 다음에 인라인으로 코딩된 매개변수를 사용한 경우 SIMPL은 XR1에서 인덱스된 주소 지정을 통해 해당 매개변수에 액세스한다. 첫 번째 매개변수는 LD 1 0을 통해, 두 번째 매개변수는 LD 1 1 등을 통해 얻을 수 있다. 두 번째 매개변수가 실제 매개변수의 주소인 경우 LD '''I'''1 1은 해당 값을 가져옵니다. 반환하기 전에 SIMPL은 MDX 1 ''n''과 같은 명령으로 XR1을 ''n''개의 인라인 매개변수 너머로 증가시켜 RETN+1에 올바른 값을 배치한다.

XR1의 원래 값을 복원하지 않기로 한 LIBF 루틴은 위의 단계를 생략하고 단순히 B 1 ''n''을 사용하여 ''n''개의 인라인 매개변수를 건너뛰고 반환할 수 있다. 그러나 이러한 루틴은 다른 LIBF 루틴에서 호출할 수 없다. 호출자의 XR1을 사용하여 자체 매개변수 및 반환 주소에 액세스하는 것을 방해하기 때문입니다.

LIBF의 복잡성은 자주 호출되는 서브 프로그램에 대한 메모리를 절약한다.:[37] LIBF 링크는 호출당 한 단어, 전송 벡터 항목당 세 단어 및 루틴 자체의 추가 코드를 필요로 한다. 반면 CALL 링크는 대부분의 CALL이 한 단어 연산 코드의 -128에서 +127 단어 범위 너머의 주소로 이동하기 때문에 호출당 두 단어를 필요로 한다.

레지스터 XR3은 라이브러리 루틴의 주소만 있는 디스패치 테이블이 아닌 라이브러리 루틴에 대한 전송 벡터 항목을 가리켜야 한다. 후자는 간접 BSI 명령을 사용하여 LIBF 루틴을 호출해야 하기 때문입니다. 이러한 명령은 두 단어 길이이므로 이러한 디자인은 LIBF의 코드 크기 절약을 무효화한다. 한 단어 명령 코드의 ''disp'' 필드에 대한 8비트 제한은 LIBF 루틴의 사용을 85개 이하의 고유 항목으로 제한한다.

앞서 언급한 내용에서 코드와 데이터가 뒤섞여 있음을 알 수 있다. 1130 프로그래밍에서는 명령어의 주소 필드를 수정하고, 실제로 전체 명령어를 수정하는 것이 일반적이다.

포트란 컴파일러는 매개변수가 있는 모든 서브 프로그램(서브루틴 또는 함수)에 대한 코드를 생성할 때 자체 수정 코드를 생성한다. 컴파일러는 서브 프로그램이 매개변수 중 하나를 참조하는 모든 위치의 테이블을 구축하고, 서브 프로그램 본문의 첫 번째 명령으로 SUBIN이라는 서브 프로그램을 호출하도록 컴파일한다. 이 SUBIN은 테이블을 사용하여 현재 호출 동안 매개변수에 대한 모든 참조의 주소 필드를 매개변수의 실제 주소로 수정한다. SUBIN은 서브 프로그램이 호출될 때마다 이러한 패치를 수행한다.

포트란 프로그램이 서브 프로그램을 호출하면 모든 매개변수의 주소가 호출 다음에 인라인으로 나타난다. 예를 들어, 포트란 문장 CALL SIMPL(X)는 다음과 같이 컴파일될 수 있다.

BSI L SIMPL

DC X SIMPL이 작동할 X의 주소

서브 프로그램 내에서 매개변수는 위에 표시된 것처럼 간접 인덱스 주소 지정을 통해 액세스할 수 있다. 따라서 XR1이 적절하게 준비되었다면 다음과 같은 명령으로 정수 매개변수를 누산기에 로드할 수 있다.

LD I1 0 첫 번째 매개변수(오프셋 0)의 값을 누산기에 로드

컴파일러는 대신 직접 주소 지정을 사용했다. SUBIN이 실행되면 X의 주소를 얻고 명령의 주소 필드를 다음과 같이 패치한다.

LD L X X의 값을 누산기에 로드

SUBIN의 장점은 다음과 같다.

SUBIN의 단점은 실행하는 데 필요한 시간과 참조 테이블에 필요한 메모리이다. 이 테이블의 크기는 5, 매개변수 수 및 참조 수의 합이다. 이 합이 511을 초과하면 컴파일이 실패한다.

당시에는 전체 명령어를 수정하는 기술이 흔했다. 예를 들어, 1130에는 OR 명령어가 있지만, Fortran의 구문으로는 이를 작성할 방법이 없다. 정수 함수 IOR을 정의하여 다음과 같이 Fortran 표현식의 일부로 논리 OR을 사용할 수 있다.

```fortranfixed

M = 3*IOR(I,J) + 5

```

Fortran 컴파일러는 I와 J의 주소를 인라인으로 배치하고 결과를 누산기에 저장할 것으로 예상합니다. Fortran 표현식에서 IOR(I,J)를 사용하면 다음과 같은 네 단어가 컴파일된다.

BSI L IOR IOR 함수 시작점으로의 두 단어 점프.

DC I 한 단어 인라인 매개변수: I의 주소.

DC J 한 단어 인라인 매개변수: J의 주소.

사실, 어셈블러 IOR 함수는 I '''or''' J를 전혀 계산하지 않는다. 대신, 위의 네 단어를 다음과 같이 '''바꾼다'''.

LD L I 누산기에 I를 로드 (두 단어 명령어)

OR L J 누산기를 J와 OR (두 단어 명령어)

이러한 변환을 수행한 후, 네 단어 블록의 끝을 지나 반환하지 않는다 (방금 수정했음). 대신 원래 호출되었던 정확한 주소로 분기한다. BSI 명령어는 더 이상 존재하지 않으며, 현재 있는 것은 방금 작성한 두 개의 명령어이다. 이들은 기계어 OR 명령어로 두 정수를 결합하고 필요한 대로 결과를 누산기에 남겨둡니다.

IOR에 대한 호출과 네 단어 블록의 변환은 프로그램 실행당 최대 한 번 발생한다. 위에 설명된 Fortran 줄이 다시 실행되면 처음 실행했을 때보다 더 빠르게 실행된다. 다른 유용한 연산에 대해서도 비슷한 함수를 고안할 수 있다.

IOR처럼 자체 수정하는 함수는 위에 설명된 SUBIN 서브프로그램과 호환되지 않으므로 해당 서브프로그램의 매개변수 중 어느 것에도 Fortran 서브프로그램에서 사용할 수 없다 (로컬 변수를 결합하는 데는 사용할 수 있지만).

IBM 1130 FORTRAN은 두 가지 부동 소수점 형식을 제공한다. 32비트 "표준 정밀도" 형식과 40비트 "확장 정밀도" 형식이다.

표준 정밀도 형식은 24비트 2의 보수 가수부를 포함하는 반면, 확장 정밀도는 32비트 2의 보수 가수부를 사용한다. 이 형식은 CPU의 32비트 정수 연산을 최대한 활용한다. 확장 형식은 세 개의 16비트 워드를 차지하며, 첫 번째 워드의 상위 8비트는 사용되지 않는다. 두 형식 모두에서 지수는 128로 바이어스된 2의 거듭제곱을 포함하는 8비트 필드이다. 부동 소수점 산술 연산은 소프트웨어에 의해 수행된다.[38]

`*EXTENDED PRECISION` 컴파일러 옵션 카드는 FORTRAN 컴파일러에게 모든 부동 소수점 데이터에 대해 32비트 대신 40비트를 사용하도록 지시하며, 형식을 혼합하는 것은 허용되지 않는다.

데이터 조작 대상과 이를 조작하는 명령어는 함께 코어 메모리에 위치해야 한다. 설치된 메모리 용량(4,096 단어에서 32,768 단어까지)이 주요 제한 사항이다. 포트란은 이러한 제한에도 불구하고 대규모 프로그램을 작성하기 위한 몇 가지 기술을 제공한다.

;LOCAL 서브 프로그램

포트란은 모든 서브 프로그램을 "LOCAL"(Load-on-Call)로 지정할 수 있게 해준다. 각 LOCAL 서브 프로그램은 오버레이이다. 이는 디스크에 상주하는 실행 프로그램의 일부이지만, 호출되는 동안에만 (이미 존재하지 않는 경우) 코어 메모리에 로드된다. 예를 들어, 여섯 개의 LOCAL 서브 프로그램은 여섯 개의 서브 프로그램 전체의 총 용량이 아닌 가장 큰 서브 프로그램만큼의 코어 메모리만 필요하다. 그러나 여섯 개의 서브 프로그램 중 어느 것도 다른 서브 프로그램을 직접 또는 중간 서브 프로그램을 통해 호출할 수 없다.

;단계별 프로그램

전체 포트란 프로그램은 후속 단계로 제어를 전달하고, 다음 단계를 코어 메모리에 로드하라는 명령과 함께 슈퍼바이저로 종료될 수 있다. 대규모 프로그램은 개별적으로 컴파일된 PART1, PART2, PART3의 세 부분으로 나눌 수 있다. 실행은 // XEQ PART1로 시작하고 적절한 시점에서 PART1은 포트란 구문 CALL LINK(PART2) 등을 실행한다. CALL에서 후속 프로그램의 이름은 변수가 될 수 없지만, 프로그램 로직은 다른 단계로 제어가 전송되는지 여부와 어떤 CALL LINK 구문이 실행되는지를 제어할 수 있다. 위에서 언급했듯이, 포트란 컴파일러 자체도 이러한 방식으로 작성되었으며, 각 컴파일 단계는 별도의 프로그램에 의해 수행되었다.

;COMMON 데이터 저장소

포트란 프로그램과 같은 프로그램은 낮은 코어 메모리 주소(슈퍼바이저 바로 위)에 위치한다. 포트란은 COMMON으로 선언된 모든 변수와 배열에 대해 가장 높은 주소에 공간을 할당한다. 프로그램의 후속 단계에 해당하는 COMMON 선언이 포함되어 있으면, 이 공통 영역의 정보는 단계 간에 공유될 수 있다. 단계가 프로그램 코드가 공통 영역을 침범할 정도로 크지 않다면, COMMON 선언을 문제없이 생략할 수 있었다. COMMON 저장소는 단계 간에 데이터를 공유할 뿐만 아니라, 낮은 메모리 COMMON 변수를 사용하여 단일 단계 내의 메인 프로그램과 서브 프로그램 간에 데이터를 전달할 수 있지만, 다음 단계로 이동할 때 데이터가 손실될 수 있다.

다음은 천공 카드를 목록화하는 어셈블러 프로그램의 카드 덱을 컴파일하고 실행하는 카드 덱을 보여주는 예시이다.

```

// JOB

// ASM
START LIBF PRNT1 1132에서 새 페이지로 이동

DC /3100 프린터 채널 1-새 페이지
NEXTC LIBF CARD0 1442 카드 리더에서 읽기

DC /1000 읽기 제어

DC CBUFF 80 열 저장

CINP LIBF CARD0

DC 0

B CINP 카드가 읽힐 때까지 루프
LIBF ZIPCO 카드를 프린터로 변환

DC /1100 언팩 입력, 팩 출력

DC CBUFF+1 입력 버퍼

DC PBUFF+1 출력 버퍼

DC 80 문자 수

CALL HLEBC 홀러리드에서 EBCDIC로 변환
LIBF PRNT1 80자 인쇄

DC /2000 인쇄 제어 코드

DC PBUFF 인쇄 버퍼

DC PERR 인쇄 오류

POUT LIBF PRNT1 인쇄 완료 확인

DC 0

B POUT 완료될 때까지 루프
B NEXTC 다음 카드 읽기
CBUFF DC 80 카드당 80 열

BSS 80
PBUFF DC 40 40 단어 80 자

BSS 40
PERR DC 0

B I PERR 이것은
END START 프로그램 진입점

// XEQ

TEST DATA 1

HELLO WORLD

TEST DATA 2

```

이 작업에서 어셈블러는 어셈블리 결과를 시스템 디스크의 임시 영역에 남겨두고, XEQ 명령은 임시 영역의 내용을 실행한다. 이상하게 보이는 END START는 두 가지 의미를 갖는다: 어셈블러 소스의 끝과 START 레이블이 있는 루틴의 진입점 이름이다.

어셈블러 소스는 카드 1열이 아닌 21열부터 시작한다. 디스크 드라이브가 없는 시스템에서 어셈블러는 방금 읽은 카드의 시작 부분에 코드를 천공하고 (카드 리더는 실제로 리더-펀치였으며, 펀치 스테이션은 읽기 스테이션 다음에 있었다) 다음 카드를 읽었다.

관례적으로, 버퍼 앞에는 단어 수가 붙는다. DC (상수 정의)는 카운트 단어를 어셈블하고 그 뒤에 오는 BSS (기호로 시작하는 블록)는 버퍼에 필요한 단어 수를 예약한다. 카드 버퍼에는 각 카드 열당 80 단어, 즉 80 단어가 필요합니다. 드라이버 CARD0은 버퍼 단어의 16비트 중 12비트를 사용하여 각 카드 열을 문자 그대로 읽으며, 해당 열의 해당 행에 펀칭된 각 구멍에 대해 비트가 '''켜짐'''으로 설정된다. 펀칭 패턴은 일반적으로 홀러리드 코드를 사용하여 텍스트 문자를 설명한다. 콘솔 키보드는 또한 동일한 문자 인코딩을 사용하는 두 장치의 유일한 경우인 홀러리드 코드에서 프로그램에 입력을 제공한다.

그러나 프린터 루틴은 단어당 두 문자를 사용하는 8비트 EBCDIC 텍스트로 작동하므로 40단어 버퍼가 필요하다. 프로그램은 라이브러리 루틴 ZIPCO를 사용하여 변환을 수행한다. 표시와는 달리, 문 CALL HLEBC

4. 주변 장치

IBM 1130은 다양한 주변 장치를 지원하여 사용 목적에 맞게 시스템을 구성할 수 있었다. 주요 주변 장치는 다음과 같다.



IBM 1442 카드 판독기/펀치


IBM 1627 드럼 플로터


IBM 1053 콘솔 타자기는 IBM Selectric 메커니즘을 사용하였는데, 이는 속이 빈 골프공 크기의 타입 요소를 교체하여 활자체 또는 문자 집합을 변경할 수 있음을 의미한다. APL을 위해 특별한 타입 요소가 제공되었다.

주변 장치의 설계를 단순화하기 위해 이들은 프로세서에 의존한다. 예를 들어, 카드 판독기에는 메모리 버퍼가 없지만, 대신 카드의 각 열을 읽은 후 CPU에 레벨 0(최고 우선 순위) 인터럽트를 제공한다. CPU가 응답하지 않고 다음 열이 읽혔음을 나타내는 또 다른 인터럽트가 발생하기 전에 12비트의 데이터를 저장하지 않으면 데이터가 손실된다. 마찬가지로 1132 프린터는 1130의 소프트웨어에 의존한다.

5. 한국에서의 활용 및 영향

IBM 1130은 1960년대 후반부터 한국의 대학, 연구소, 정부 기관 등에 도입되어 과학기술 연구, 전산 교육, 행정 업무 등 다양한 분야에서 활용되었다. 서울대학교, KAIST, 고려대학교 등 주요 대학에서는 1130을 도입하여 컴퓨터 과학 교육 및 연구에 활용했다. 한국과학기술연구원(KIST), 국방과학연구소(ADD) 등 연구 기관에서는 1130을 사용하여 과학기술 연구를 수행하고, 연구 결과를 분석하는 데 활용했다. 정부 기관에서는 1130을 행정 업무 전산화에 활용하여 업무 효율성을 높였다.

IBM 1130의 도입은 한국의 컴퓨터 과학 기술 발전과 IT 인력 양성에 크게 기여했다. 1130을 통해 컴퓨터 프로그래밍, 시스템 운영, 데이터 처리 등 다양한 분야의 전문가들이 양성되었으며, 이들은 한국 IT 산업 발전의 초석이 되었다. 특히, 1970년대 한국의 경제 발전과 산업화 과정에서 IBM 1130은 과학기술 분야의 연구 개발과 인력 양성에 중요한 역할을 수행했다.

6. 유산

IBM 1130은 저렴한 가격과 뛰어난 성능으로 컴퓨터의 대중화에 기여했으며, 많은 사람들에게 컴퓨터와의 첫 만남을 제공한 역사적인 컴퓨터 시스템이다. 1130을 통해 프로그래밍을 처음 접한 사람들 중에는 저명한 인물들이 많다. 현재도 전 세계적으로 IBM 1130 시스템을 보존하고 복원하려는 노력이 이어지고 있으며, 일부 시스템은 여전히 작동 가능한 상태로 유지되고 있다.

IBM 1130의 총 생산량은 약 10,000대로 추정된다.[3]
IBM 1130을 통해 프로그래밍을 처음 접한 주요 인물

인물설명
브라이언 유틀리(Brian Utley)IBM 1130의 프로젝트 매니저로, 제품의 개발 및 출시를 담당.
그레이디 부치(Grady Booch)저명한 소프트웨어 디자이너.
가이 스틸(Guy Steele)LISP의 대가. 고등학교 시절 IBM 1130용 LISP 인터프리터를 작성.[41][42]
찰스 H. 무어(Charles H. Moore)FORTH 개발.
댄 브릭린(Dan Bricklin)VisiCalc 프로그램 제작자.
찰스 골드파브(Charles Goldfarb)SGML의 아버지.
앨런 케이(Alan Kay)1969년 박사 학위 논문을 위해 초기 GUI 작업에 IBM 1130을 사용.[47]


IBM 1130 관련 기타 내용



현재, 다음의 IBM 1130 시스템이 존재하는 것으로 확인되었다.

IBM 1130을 과거에 사용했던 사람은 많으며, 애호가들에 의해 "IBM 1130.org"[60] 등이 만들어져 있다.

참조

[1] 문서 IBM 1130 Installation manual http://bitsavers.inf[...] IBM 1966-06
[2] 간행물 IBM introduces powerful small computer http://www.ibm1130.n[...] International Business Machines (IBM) 1965-02-11
[3] 인터뷰 Guest speaker: Brian Utley http://ibm1130.org/p[...] 2012-01-02
[4] 웹사이트 IBM 1130 documents http://www.bitsavers[...]
[5] 웹사이트 IBM 1800 data acquisition and control system https://www.ibm.com/[...] 2021-08-20
[6] 뉴스 New Xerox minicomputer https://www.nytimes.[...] 1973-01-29
[7] 간행물 Xerox 530 supports COBOL https://books.google[...] 1973-12-26
[8] 웹사이트 Rank Xerox 530 Computer http://archive.compu[...] 2014-09-23
[9] 뉴스 Xerox 530 orders "encouraging" https://www.newspape[...]
[10] 학술지 How We Got To APL\1130 http://www.vector.or[...] 2007-03-11
[11] 문서 for which there was an IBM compiler
[12] 문서 SL/1: references to Student Language/One, Student Language/1 and Subset Language/1 exist
[13] 문서 an IBM Program Product
[14] 문서 The Oklahoma State ALGOL 68 Subset Compiler 1975-06-10
[15] 문서 ALGOL68 instruction at Oklahoma State University http://dl.acm.org/ci[...] ACM New York, NY, USA 1977-08
[16] 문서 Algol 68 implementations and dialects http://www.softwarep[...] Software Preservation Group
[17] 서적 1130 Statistical System (1130-CA-06X) User's Manual http://www.mirrorser[...] 2015-02-08
[18] 서적 IBM 1130 Remote Job Entry Work Station Program Program Logic Manual http://www.mirrorser[...] 2015-02-08
[19] 서적 IBM 1130 Typesetting System (RPQ) http://www.mirrorser[...] 2015-02-08
[20] 서적 IBM 1130 Disk Monitor System Reference Manual http://bitsavers.org[...] 2021-08-31
[21] 서적 IBM 1130 Disk Monitor System, Version 2, Programmer's and Operator's Guide http://www.mirrorser[...] 2015-02-06
[22] 웹사이트 IBM 1130 http://ed-thelen.org[...] 2017-02-21
[23] 문서 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.'"
[24] 서적 IBM 1130 Functional Characteristics http://media.ibm1130[...]
[25] 웹사이트 Monitor Programs http://www.ibm1130.n[...]
[26] 서적 IBM's 360 and early 370 systems https://archive.org/[...] MIT Press
[27] 웹사이트 1130 Facts folder: IBM 1130 computing system https://www.ibm.com/[...] 2023-04-29
[28] 문서 Model 1 @ 80 Lines/minute, Model 2 @ 40 LPM
[29] 문서 choice of 340 Lines/minute Model 6, 600 LPM Model 7
[30] 웹사이트 IBM 1130 Operating Procedures http://www.bitsavers[...]
[31] 서적 IBM 1130 Custom Feature Description – Attachment Channel RPQ Number 831552, Form A26-1579-0 http://media.ibm1130[...] IBM Corporation 1968-10
[32] 웹사이트 IBM 1231 Optical Mark Page Reader http://www.ibm1130.n[...]
[33] 웹사이트 IBM Archives: DPD Chronology (page 4) http://www-03.ibm.co[...] 2011-08-10
[34] 서적 2100A Computer Reference Manual http://bitsavers.inf[...] 2016-08-05
[35] 웹사이트 PDP-8 User's Manual https://archive.org/[...] Digital Equipment Corporation 1966-05
[36] 서적 920 Computer Reference Manual http://bitsavers.inf[...] 2016-08-05
[37] 서적 IBM 1130 Assembler Language http://bitsavers.tra[...] 1968-01-01
[38] 서적 IBM 1130 Subroutine Library 9th ed http://media.ibm1130[...] IBM Corporation
[39] 웹사이트 Origin of the IBM 1130 Name http://mail.computer[...] 2006-10-30
[40] 웹사이트 Grady Booch polishes his crystal ball http://www-106.ibm.c[...] IBM 2003-04-03
[41] 웹사이트 Thoughts on Language Design -- New challenges require new solutions http://www.ddj.com/d[...] Dr. Dobb's Journal 2005-11-24
[42] 웹사이트 Confessions of a Happy Hacker http://www.ccil.org/[...]
[43] 웹사이트 The Evolution of Forth http://www.forth.com[...] 1993-03-01
[44] 웹사이트 Memories while visiting the Bay Area and the Computer History Museum http://www.danbrickl[...] 2002-08-23
[45] 웹사이트 SETI in the 1970s http://www.bigear.or[...] The Big Ear 2005-08-13
[46] 웹사이트 The Roots of SGML -- A Personal Recollection http://www.sgmlsourc[...]
[47] 문서 The Reactive Engine http://www.mprove.de[...]
[48] 웹사이트 The Use of Computers in Instruction in Secondary Schools http://www.eric.ed.g[...]
[49] 웹사이트 Signetics 2650: An IBM on a Chip http://www.cpushack.[...] CPU Shack 2016-10-16
[50] 웹사이트 IBM 1130 http://www.aconit.or[...]
[51] 웹사이트 Artifact Details:IBM 1130 model http://www.computerh[...]
[52] 웹사이트 Website von Oscar E. Wyss http://www.cosecans.[...]
[53] 웹사이트 IBM 1130 system restoration during 2011 http://www.tnmoc.org[...]
[54] 웹사이트 Large Systems Gallery: IBM 1130 https://www.tnmoc.or[...] National Museum of Computing
[55] 웹사이트 IBM 1130 http://computermuseu[...]
[56] 웹사이트 Rescue 1130 http://rescue1130.bl[...]
[57] 웹사이트 https://museum.syssr[...]
[58] 웹사이트 https://vcfed.org/
[59] 문서 PDP-11/20 and /15 http://hampage.hu/pd[...]
[60] 웹사이트 IBM1130.org: All about the IBM 1130 Computing System http://ibm1130.org
[61] 보도자료 IBM introduces powerful small computer http://www.ibm1130.n[...] International Business Machines (IBM) 1965-02-11



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com