병렬 포트

pinout_caption = IBM PC 호환 병렬 포트 핀 배치 프린터 및 일부 컴퓨터, 특히 산업용 장비 및 초기(1980년대 이전) 개인용 컴퓨터에 사용되는 마이크로 리본 36핀 암 커넥터. 미니-센트로닉스 36핀 수 커넥터(상단)와 마이크로 리본 36핀 수 센트로닉스 커넥터(하단) 애플 II 병렬 프린터 포트는 접힌 리본 케이블을 통해 프린터에 연결되었다. 한쪽 끝은 카드 상단의 커넥터에 연결되었고, 다른 쪽 끝에는 36핀 센트로닉스 커넥터가 있었다. **병렬 포트**(Parallel port, 병렬포구)는 초기 컴퓨터(개인용 및 기타)에서 주변기기를 연결하기 위한 인터페이스 유형이다. 이 이름은 데이터가 전송되는 방식을 나타낸다. 병렬 포트는 직렬 통신과 달리 여러 비트의 데이터를 한 번에 전송한다(병렬 통신). 이를 위해 병렬 포트는 케이블 및 포트 커넥터에 여러 데이터 라인을 필요로 하며, 하나의 데이터 라인만 필요한 동시대의 직렬 포트보다 큰 경향이 있다. 병렬 포트에는 여러 유형이 있지만, 이 용어는 1970년대부터 2000년대까지 대부분의 개인용 컴퓨터에서 발견된 **프린터 포트** 또는 센트로닉스 포트와 가장 밀접하게 연관되어 있다. 이는 수년 동안 산업 사실상 표준이었고, 1990년대 후반에 IEEE 1284로 최종 표준화되었으며, 이는 확장 병렬 포트(EPP)와 확장 기능 포트(ECP) 양방향 버전을 정의했다. 오늘날 병렬 포트 인터페이스는 범용 직렬 버스(USB) 장치의 부상과 이더넷 및 와이파이 연결 프린터를 사용하는 네트워크 인쇄로 인해 새로운 컴퓨터에서는 거의 존재하지 않는다. 병렬 포트 인터페이스는 원래 IBM PC 호환기종 컴퓨터에서 **병렬 프린터 어댑터**로 알려져 있었다. 주로 IBM의 8비트 확장 ASCII 자체를 사용하여 텍스트를 인쇄하는 프린터를 작동하도록 설계되었지만, 다른 주변기기를 연결하는 데에도 사용될 수 있었다. 그래픽 프린터와 다른 많은 장치들이 시스템과 통신하도록 설계되었다.
# 역사

## 센트로닉스
왕안, 로버트 하워드, 프렌티스 로빈슨은 특수 단말기를 생산하는 왕 연구소의 자회사인 센트로닉스에서 저비용 프린터 개발을 시작했다. 이 프린터는 도트 매트릭스 프린터 원리를 사용했으며, 솔레노이드에 연결된 7개의 금속 핀으로 구성된 수직 인쇄 헤드를 가지고 있었다. 솔레노이드에 전원이 인가되면 핀이 앞으로 밀려 종이를 치고 점을 남겼다. 완전한 자체를 만들기 위해 인쇄 헤드는 특정 핀에 전원을 받아 단일 수직 패턴을 생성한 다음, 인쇄 헤드가 오른쪽으로 조금 이동하고 이 과정이 반복되었다. 원래 설계에서는 일반적인 글리프가 7x5 매트릭스로 인쇄되었고, "A" 모델은 9핀 인쇄 헤드를 사용하여 9x7 글리프를 형성했다.publisher=Centronics 이것은 ASCII 데이터를 프린터로 전송하는 문제를 남겼다. 직렬 포트는 최소한의 핀과 와이어로 이를 수행하지만, 데이터가 비트 단위로 도착할 때 데이터를 버퍼링하고 다시 다중 비트 값으로 변환해야 한다. 병렬 포트는 이를 더 간단하게 만든다. 전체 ASCII 값이 완전한 형태로 핀에 제공된다. 8개의 데이터 핀 외에도 시스템에는 다양한 제어 핀과 전기 접지가 필요했다. 왕안은 원래 초기 계산기 중 하나에 사용되었던 20,000개의 암페놀 36핀 마이크로 리본 커넥터 재고를 보유하고 있었다. 인터페이스는 이 핀 중 21개만 필요했고, 나머지는 접지되거나 연결되지 않았다. 이 커넥터는 센트로닉스와 매우 밀접하게 연관되어 현재는 일반적으로 Centronics connector "**센트로닉스 커넥터**"로 알려져 있다. 이 커넥터가 장착된 센트로닉스 모델 101 프린터는 1970년에 출시되었다.isbn=0-9702617-0-5 호스트는 8개의 데이터 핀 중 7개를 사용하여 프린터로 ASCII 문자를 보냈고, 이 핀을 +5V로 높여 1을 나타냈다. 데이터가 준비되면 호스트는 스트로브 핀을 0V로 낮췄다. 프린터는 BUSY 라인을 높여 문자를 인쇄한 다음 BUSY를 다시 낮게 반환하여 응답했다. 그러면 호스트는 다른 문자를 보낼 수 있었다. 데이터의 제어 문자는 `CR` 또는 `EOF`와 같은 다른 동작을 유발했다. 호스트는 AUTOFEED 라인을 높게 유지하여 프린터가 자동으로 새 줄을 시작하도록 할 수도 있었다. 호스트는 특히 용지 공급과 같은 가변 시간 작업으로 인해 프린터에 데이터를 너무 빨리 공급하지 않도록 BUSY 라인을 주의 깊게 관찰해야 했다. 인터페이스의 프린터 측은 빠르게 산업 사실상 표준이 되었지만, 제조업체는 시스템 측에 다양한 커넥터를 사용했기 때문에 다양한 케이블이 필요했다. 예를 들어, NCR은 연결의 양쪽 끝에 36핀 마이크로 리본 커넥터를 사용했고, 초기 VAX 시스템은 DC-37 커넥터를 사용했으며, 텍사스 인스트루먼트는 25핀 카드 에지 커넥터를, 데이터 제너럴은 50핀 마이크로 리본 커넥터를 사용했다. IBM이 IBM 개인용 컴퓨터에 병렬 인터페이스를 구현했을 때, 그들은 인터페이스의 PC 측에 DB-25F 커넥터를 사용하여 한쪽 끝에는 DB25M, 다른 쪽 끝에는 36핀 마이크로 리본 커넥터가 있는 지금 친숙한 병렬 케이블을 만들었다. 이론적으로 센트로닉스 포트는 초당 75,000자만큼 빠르게 데이터를 전송할 수 있었다. 이는 초당 약 160자 정도인 프린터보다 훨씬 빨랐으며, 이는 포트가 대부분의 시간을 유휴 상태로 보냈다는 것을 의미한다. 성능은 호스트가 더 많은 데이터를 요청하는 프린터의 BUSY 신호에 얼마나 빨리 응답할 수 있는지에 따라 결정되었다. 성능을 향상시키기 위해 프린터는 버퍼를 통합하기 시작하여 호스트가 데이터를 더 빠르게 버스트 방식으로 보낼 수 있게 했다. 이는 호스트에서 다음 문자가 도착하기를 기다리는 지연을 줄일 뿐만 아니라(또는 없애는) 성능 저하 없이 호스트가 다른 작업을 수행할 수 있도록 해방시켰다. 성능은 여러 줄을 저장하기 위해 버퍼를 사용한 다음 양방향으로 인쇄하여 인쇄 헤드가 페이지의 왼쪽으로 돌아오는 동안의 지연을 제거함으로써 더욱 향상되었다. 이러한 변경은 센트로닉스 102 및 308과 같은 모델의 경우처럼 다른 변경 없이 프린터 성능을 두 배 이상 향상시켰다.archive-date=2016-10-03
## IBM
IBM은 1981년 IBM PC를 출시했으며 센트로닉스 인터페이스의 변형을 포함했다. 오직 IBM 로고가 있는 프린터(OEM 세이코 엡손에서 리브랜딩된)만이 IBM PC와 함께 사용될 수 있었다.archive-date=2007-09-13 IBM은 PC 측에 DB25F 커넥터를, 프린터 측에 36핀 센트로닉스 커넥터를 사용하여 병렬 케이블을 표준화했다. 곧 공급업체들은 표준 센트로닉스와 IBM 구현 모두와 호환되는 프린터를 출시했다. 1981년 IBM PC를 위한 원래 IBM 병렬 프린터 어댑터는 8개의 데이터 출력 라인과 4개의 데이터 입력 라인을 가진 제한된 양방향성을 지원하도록 설계되었다. 이를 통해 포트는 프린터로의 출력뿐만 아니라 다른 목적으로도 사용될 수 있었다. 이는 데이터 라인이 케이블의 양쪽 끝에 있는 장치에 의해 기록될 수 있도록 허용함으로써 이루어졌으며, 이는 호스트의 포트가 양방향이어야 함을 요구했다. 이 기능은 거의 사용되지 않았으며, 이후 하드웨어 개정판에서 제거되었다. 몇 년 후, 1987년에 IBM은 IBM PS/2 시리즈에서 양방향 인터페이스를 다시 도입했으며, 프린터 포트가 양방향일 것으로 예상하지 않는 하드웨어에 고정된 응용 프로그램과의 호환성을 위해 활성화 또는 비활성화할 수 있었다.
## 바이-트로닉스
프린터 시장이 확장되면서 새로운 유형의 인쇄 메커니즘이 나타났다. 이들은 기존 포트의 비교적 적은 상태 핀으로는 나타낼 수 없는 새로운 기능과 오류 조건을 종종 지원했다. IBM 솔루션은 이를 지원할 수 있었지만, 구현하기가 쉽지 않았고 당시에는 지원되지 않았다. 이로 인해 HP가 1993년 4월 LaserJet 4Si에 도입한 바이-트로닉스 시스템이 탄생했다.quote= 이는 기존의 4개 상태 핀인 ERROR, SELECT, PE, BUSY를 사용하여 니블을 나타냈고, 두 번의 전송을 사용하여 8비트 값을 보냈다. 현재 니블 모드로 알려진 바이-트로닉스 모드는 호스트가 SELECT 라인을 높게 당김으로써 표시되었고, 호스트가 AUTOFEED를 낮게 토글할 때 데이터가 전송되었다. 핸드셰이킹 프로토콜의 다른 변경 사항은 성능을 향상시켜 프린터로 400,000 cps, 호스트로 약 50,000 cps에 도달했다.access-date= 2016-10-11 바이-트로닉스 시스템의 주요 장점은 호스트에서 전적으로 소프트웨어로 구동될 수 있고, 다른 수정되지 않은 하드웨어를 사용한다는 것이다. 호스트로 데이터를 다시 전송하는 데 사용되는 모든 핀은 이미 프린터-호스트 라인이었다.
## EPP 및 ECP
스캐너와 복합기와 같은 새로운 장치들의 도입으로 바이-트로닉스나 IBM 스타일의 백채널이 처리할 수 있는 것보다 훨씬 더 많은 성능이 요구되었다. 이러한 목적을 위해 두 가지 다른 표준이 더 인기를 얻었다. 원래 제니스 일렉트로닉스가 정의한 EPP(Enhanced Parallel Port)는 개념상 IBM의 바이트 모드와 유사하지만, 최대 2MB/s를 허용하도록 핸드셰이킹의 세부 사항을 변경한다.Buxton, C.L. / Kohtz, R.A. / Zenith Data Systems Corp.: Enhanced parallel port. filing date 15 May 1992 ECP(Extended Capability Port)는 기본적으로 동일한 물리적 하우징에 있는 완전히 새로운 포트로, ISA 기반의 직접 메모리 접근과 데이터를 압축하기 위한 런 렝스 부호화를 추가한다. 이는 팩시밀리나 흑백 스캔 이미지와 같은 간단한 이미지를 전송할 때 특히 유용하다. ECP는 양방향으로 최대 2.5MB/s의 성능을 제공한다.df=dmy-all 이러한 모든 개선 사항은 IEEE 1284 표준의 일부로 통합되었다. 1994년의 첫 번째 릴리스에는 원래 센트로닉스 모드("호환성 모드"), 니블 및 바이트 모드, 그리고 이미 널리 사용되던 핸드셰이킹의 변경 사항이 포함되었다. 원래 센트로닉스 구현은 데이터의 어떤 라인에서든 변경이 있을 때마다 BUSY 리드가 토글하도록 요구했지만(busy-by-line), IEEE 1284는 수신된 각 문자마다 BUSY가 토글하도록 요구한다(busy-by-character). 이는 BUSY 토글의 수와 양쪽에서의 결과적인 중단을 줄인다. 1997년 업데이트는 프린터 상태 코드를 표준화했다. 2000년에는 EPP 및 ECP 모드가 표준으로 이동했으며, 여러 커넥터 및 케이블 스타일, 그리고 단일 포트에서 최대 8개의 장치를 데이지 체인하는 방법도 포함되었다. 일부 호스트 시스템 또는 인쇄 서버는 비교적 낮은 전압 출력 또는 빠른 토글을 가진 스트로브 신호를 사용할 수 있다. 이러한 문제 중 어느 것이라도 인쇄가 안 되거나 간헐적으로 인쇄되거나 문자가 누락되거나 반복되거나 쓰레기 인쇄가 발생할 수 있다. 일부 프린터 모델에는 문자별로 BUSY를 설정하는 스위치나 설정이 있을 수 있으며, 다른 모델에는 핸드셰이크 어댑터가 필요할 수 있다.
## 데이터제품
데이터제품은 프린터용 병렬 인터페이스의 매우 다른 구현을 도입했다. 이 인터페이스는 호스트 측에 DC-37 커넥터를 사용하고 프린터 측에 50핀 커넥터를 사용했다. 이 50핀 커넥터는 DD-50 (때로는 잘못해서 "DB50"이라고 불리기도 함) 또는 블록 형태의 M-50 커넥터였으며, M-50은 윈체스터라고도 불렸다.archive-date=2007-12-14archive-date=2007-12-14 데이터제품 병렬은 m까지의 연결을 위한 짧은 라인 버전과 차동 신호를 사용하여 m까지의 연결을 위한 긴 라인 버전으로 제공되었다. 데이터제품 인터페이스는 1990년대까지 많은 메인프레임 시스템에서 발견되었으며, 많은 프린터 제조업체에서 데이터제품 인터페이스를 옵션으로 제공했다. 다양한 장치들이 결국 병렬 포트에서 작동하도록 설계되었다. 대부분의 장치는 단방향(일방향) 장치였으며, PC에서 전송된 정보에만 반응하도록 되어 있었다. 그러나 집 드라이브와 같은 일부 장치는 양방향 모드로 작동할 수 있었다. 프린터 또한 결국 양방향 시스템을 채택하여 다양한 상태 보고 정보를 전송할 수 있게 되었다.
# 역사적 사용
HP C4381A CD-라이터 플러스 7200 시리즈, 프린터와 컴퓨터를 연결하는 병렬 포트가 보인다.]] USB가 등장하기 전에는 병렬 인터페이스가 프린터 외에 여러 주변 장치에 액세스하도록 적용되었다. 병렬 포트의 초기 용도 중 하나는 소프트웨어 복사 방지 형태로 응용 소프트웨어와 함께 제공되는 하드웨어 키로 사용되는 동글이었다. 다른 용도로는 CD 읽기/쓰기 장치와 같은 광학 디스크 드라이브, 집 드라이브, 스캐너, 테이프 드라이브,publisher=UNKNO 외장 모뎀, 게임패드, 조이스틱 등이 있었다. 초기 휴대용 MP3 플레이어 중 일부는 장치로 노래를 전송하기 위해 병렬 포트 연결이 필요했다.archive-date = 2015-05-01 병렬을 통해 SCSI 장치를 실행할 수 있는 어댑터도 있었다. EPROM 프로그래머 및 하드웨어 컨트롤러와 같은 다른 장치도 병렬 포트를 통해 연결할 수 있었다.
## 인터페이스
1980년대와 1990년대 대부분의 PC 호환 시스템에는 다음과 같이 정의된 통신 인터페이스를 가진 1~3개의 포트가 있었다. *논리 병렬 포트 1: I/O 포트 0x3BC ~ 0x3BF, IRQ 7 (일반적으로 흑백 그래픽 어댑터에 있음) *논리 병렬 포트 2: I/O 포트 0x378 ~ 0x37F, IRQ 7 (전용 I/O 카드 또는 메인보드에 내장된 컨트롤러 사용) *논리 병렬 포트 3: I/O 포트 0x278 ~ 0x27F, IRQ 5 (전용 I/O 카드 또는 메인보드에 내장된 컨트롤러 사용) 0x3BC에 프린터 포트가 없으면, 두 번째 포트(0x378)가 논리 병렬 포트 1이 되고 0x278이 바이오스를 위한 논리 병렬 포트 2가 된다. 때로는 프린터 포트가 자체 I/O 주소를 가지고 있음에도 불구하고 인터럽트를 공유하도록 점퍼 설정되는 경우가 있다(즉, 한 번에 하나만 인터럽트 구동으로 사용될 수 있다). 어떤 경우에는 바이오스가 네 번째 프린터 포트도 지원하지만, 그 기본 주소는 공급업체마다 크게 다르다. 네 번째 논리 프린터 포트를 위한 BIOS 데이터 영역(BDA)의 예약된 항목이 PS/2 머신과 S3 호환 그래픽 카드에서 다른 용도와 공유되기 때문에, 대부분의 환경에서는 일반적으로 특별한 드라이버가 필요하다. DR-DOS 7.02에서는 BIOS 포트 할당을 LPT1, LPT2, LPT3 (및 선택적으로 LPT4) CONFIG.SYS 지시어를 사용하여 변경하고 재정의할 수 있다.
## 액세스
도스 기반 시스템은 BIOS가 감지한 논리 병렬 포트를 LPT1, LPT2 또는 LPT3 (각각 논리 병렬 포트 1, 2, 3에 해당)과 같은 장치 이름으로 사용할 수 있게 한다. 이 이름은 **Line Print Terminal** 또는 **Local Print Terminal**(둘 다 **LPT**로 약칭됨), 또는 Line Printer와 같은 용어에서 유래한다. 유사한 명명 규칙은 ITS, DEC 시스템, 그리고 CP/M 및 86-도스(LST)에서도 사용되었다. 도스에서는 병렬 프린터에 명령줄에서 직접 액세스할 수 있었다. 예를 들어, "`TYPE C:\AUTOEXEC.BAT > LPT1:`" 명령은 AUTOEXEC.BAT 파일의 내용을 프린터 포트로 리디렉션한다. PRN 장치는 LPT1의 별칭으로도 사용할 수 있었다. 일부 운영 체제(예: 멀티유저 도스)는 다른 방법을 통해 이 고정 할당을 변경할 수 있도록 한다. 일부 DOS 버전은 MODE가 제공하는 상주 드라이버 확장을 사용하거나, 사용자는 CONFIG.SYS PRN=n 지시어(DR-DOS 7.02 이상에서와 같이)를 통해 내부적으로 매핑을 변경할 수 있다. DR-DOS 7.02는 또한 기본 BIOS가 지원하는 경우 LPT4에 대한 선택적 내장 지원을 제공한다. PRN은 CON, AUX 및 몇 가지 다른 것들과 함께 DOS 및 윈도우에서 유효하지 않은 파일 및 디렉토리 이름이며, 윈도우 XP 이후에도 마찬가지이다. 이 유효하지 않은 파일 및 디렉토리 이름 세트는 윈도우 95 및 윈도우 98에도 영향을 미쳤는데, MS-DOS 장치 경로 이름 취약점이 있어 사용자가 윈도우 탐색기 주소 표시줄이나 실행 명령을 통해 "C:\CON\CON", "C:\PRN\PRN" 또는 "C:\AUX\AUX"를 입력하면 컴퓨터가 충돌하는 문제가 있었다. 마이크로소프트는 이 문제를 해결하기 위한 패치를 출시했지만, 윈도우 95 및 98의 새 설치에는 이 패치가 적용되지 않아 여전히 이 문제가 발생한다. 동일한 효과를 얻기 위해 특별한 "`PRINT`" 명령도 존재했다. 마이크로소프트 윈도우는 많은 경우에 여전히 이러한 방식으로 포트를 참조하지만, 이는 종종 상당히 숨겨져 있다. SCO UNIX 및 리눅스에서는 첫 번째 병렬 포트를 파일 시스템을 통해 `/dev/lp0`으로 사용할 수 있다. Linux IDE 장치는 paride(병렬 포트 IDE) 드라이버를 사용할 수 있다. quote = Some IDE devices use a parallel port IDE adapter — that's what the PARIDE option refers to.
# 주목할 만한 소비자 제품
애크튼 Etherpocket-SP 병렬 포트 [[이더넷 어댑터 (1990년경, 도스 드라이버). 코액스 및 10 Base-T를 모두 지원한다. 보조 전원은 PS/2 단자 패스스루 케이블에서 공급된다.]] * 아이오메가 ZIP 드라이브 * 스내피 비디오 스냅샷 비디오 캡처 장치archive-date=2017-08-06 * MS-DOS 6.22의 INTERLNK 및 INTERSRV 드라이브 공유 유틸리티 * 코복스 스피치 싱 오디오 장치 * OPL2LPT 및 OPL3LPT 오디오 장치
# 현재 사용
소비자용으로는 USB 및 컴퓨터 망이 프린터 및 기타 장치 연결을 위해 병렬 프린터 포트를 대체했다. 많은 개인용 컴퓨터 및 노트북 제조업체는 병렬 포트를 레거시 포트로 간주하여 더 이상 병렬 인터페이스를 포함하지 않는다. 더 작은 기계에는 대형 병렬 포트 커넥터를 위한 공간이 부족하다. USB-병렬 어댑터는 병렬 전용 프린터를 USB 전용 시스템에서 작동할 수 있도록 한다. 병렬 포트를 제공하는 PCI(및 PCI-익스프레스) 카드가 있다. 네트워크를 통해 병렬 포트에 인터페이스를 제공하는 일부 인쇄 서버도 있다. USB-EPP 칩은 프린터가 아닌 다른 장치도 병렬 포트 없이 최신 컴퓨터에서 계속 작동할 수 있도록 한다.archive-date=2012-06-30 전자공학 취미가들에게 병렬 포트는 여전히 외부 회로 기판에 연결하는 가장 쉬운 방법인 경우가 많다. 다른 일반적인 레거시 포트(직렬 포트)보다 빠르고, 직렬-병렬 변환기가 필요 없으며, USB 대상 인터페이스보다 훨씬 적은 인터페이스 논리와 소프트웨어가 필요하다. 그러나 윈도우 95/98 이후의 마이크로소프트 운영 체제는 추가 소프트웨어(커널 확장) 없이는 사용자 프로그램이 LPT에 직접 쓰거나 읽는 것을 막는다.archive-date=2014-03-14 CNC 밀링 머신도 기계의 모터와 부착물을 직접 제어하기 위해 병렬 포트를 자주 사용하며, 특히 LinuxCNC 운영 체제와 함께 사용한다.
# IBM PC 구현

## 포트 주소
전통적으로 IBM PC 시스템은 아래 표의 구성에 따라 첫 세 개의 병렬 포트를 할당했다 (세 개의 프린터 포트가 모두 존재하는 경우). {| class="wikitable" |- ! 포트 번호 !! !! 인터럽트 # !! 시작 I/O !! 끝나는 I/O |- | `#1` || || `IRQ 7` || `0x3BC` || `0x3BF` |- | `#2` || || `IRQ 7` || `0x378` || `0x37F` |- | `#3` || || `IRQ 5` || `0x278` || `0x27F` |} 사용되지 않는 슬롯이 있는 경우, 다른 슬롯의 포트 주소는 위로 이동한다. (예를 들어, 0x3BC에 포트가 존재하지 않으면, 0x378의 포트가 첫 번째 논리 병렬 포트가 된다.)Frank Van Gilluwe, The Undocumented PC, 1994, page 703, 기본 주소 0x3BC는 일반적으로 MDA 및 Hercules 디스플레이 어댑터의 프린터 포트에서 지원되지만, 메인보드 칩셋 또는 애드온 카드에서 제공하는 프린터 포트는 이 기본 주소로 구성되는 경우가 거의 없다. 따라서 흑백 디스플레이 어댑터가 없는 경우, 오늘날 첫 번째 논리 병렬 포트(및 해당 LPT1 DOS 장치 드라이버)의 일반적인 할당은 0x378이지만, 기본값은 여전히 0x3BC이다(BIOS가 이 주소에서 프린터 포트를 감지하면 선택된다). IRQ 라인도 일반적으로 하드웨어에서 구성할 수 있다. 둘 이상의 프린터 포트에 동일한 인터럽트를 할당하는 것은 피해야 하며, 일반적으로 해당 포트 중 하나만 폴링 모드에서 작동하게 된다. 슬롯에 할당된 포트 주소는 0000h:0408h의 BIOS 데이터 영역(BDA)을 읽어서 결정할 수 있다. 표준 병렬 포트(SPP)의 비트-핀 매핑: {| class="wikitable" |- ! 주소 !! !! MSB !! !! !! !! !! !! !! LSB |- | || 비트: || 7 || 6 || 5 || 4 || 3 || 2 || 1 || 0 |- | `Base (데이터 포트)` || 핀: || 9 || 8 || 7 || 6 || 5 || 4 || 3 || 2 |- | `Base+1 (상태 포트)` || 핀: || ~11 || 10 || 12 || 13 || 15 || || || |- | `Base+2 (제어 포트)` || 핀: || || || || || ~17 || 16 || ~14 || ~1 |} ~는 비트의 하드웨어 반전을 나타낸다.
## 프로그램 인터페이스
윈도우 NT 커널을 사용하지 않는 마이크로소프트 윈도우 버전(및 도스 및 기타 일부 운영 체제)에서는 프로그램이 outportb() 및 inportb() 서브루틴 명령으로 병렬 포트에 접근할 수 있었다. 윈도우 NT 및 유닉스(NetBSD, FreeBSD, 솔라리스, 386BSD 등)와 같은 운영 체제에서는 마이크로프로세서가 다른 보안 링에서 작동하며, 필요한 드라이버를 사용하지 않는 한 병렬 포트 접근이 금지되어 있다. 이는 보안 및 장치 충돌 조정 기능을 향상시킨다. 리눅스에서는 프로세스가 루트로 실행되고 ioperm() 명령이 기본 주소에 대한 접근을 허용하는 경우 inb() 및 outb()를 사용할 수 있다. 또는 ppdev는 공유 접근을 허용하며 적절한 권한이 설정된 경우 사용자 공간에서 사용할 수 있다. 병렬 포트 접근을 위한 크로스 플랫폼 라이브러리인 libieee1284는 또한 많은 리눅스 배포판에서 사용 가능하며 시스템의 병렬 포트에 대한 추상적인 인터페이스를 제공한다. 접근은 open-claim-release-close 시퀀스로 처리되며, 이는 사용자 공간에서 동시 접근을 허용한다.
# 핀 배치
구형 병렬 프린터 포트는 8비트 데이터 버스와 제어 출력용 핀 4개(Strobe, Linefeed, Initialize, Select In), 제어 입력용 핀 5개(ACK, Busy, Select, Error, Paper Out)를 가지고 있었다. 데이터 전송 속도는 150kB/s였다.James, Kevin. PC interfacing and data acquisition : techniques for measurement, instrumentation and control. Oxford; Boston : Newnes, 2000. . p. 256 병렬 포트는 300KB/s의 속도를 가질 수도 있다.publisher="O'Reilly Media, Inc." 새로운 EPP(Enhanced Parallel Ports)는 8비트 데이터 버스와 일반 병렬 프린터 포트와 동일한 제어 핀을 가지고 있다. 새로운 포트는 최대 2MB/s의 속도를 제공한다.Parallel Port Definition date=2013-01-03, Techopediadate=February 2019 병렬 포트 커넥터의 핀 배치는 다음과 같다. 병렬 포트 커넥터의 핀 배치. {| class="wikitable" |- ! 핀 번호 (DB25) ! 핀 번호 (36핀) ! 신호명 ! 방향 ! 레지스터 - 비트 ! 반전됨 |- | 1 | 1 | Strobe | In/out | Control-0 | Yes |- | 2 | 2 | Data0 | Out | Data-0 | No |- | 3 | 3 | Data1 | Out |Data-1 |No |- | 4 | 4 | Data2 | Out |Data-2 |No |- | 5 | 5 | Data3 | Out |Data-3 |No |- | 6 | 6 | Data4 | Out |Data-4 |No |- | 7 | 7 | Data5 | Out |Data-5 |No |- | 8 | 8 | Data6 | Out |Data-6 |No |- | 9 | 9 | Data7 | Out | Data-7 | No |- | 10 | 10 | Ack | In | Status-6 | No |- | 11 | 11 | Busy | In | Status-7 | Yes |- | 12 | 12 | Paper-Out | In | Status-5 | No |- | 13 | 13 | Select | In | Status-4 | No |- | 14 | 14 | Linefeed | In/out | Control-1 | Yes |- | 15 | 32 | Error | In | Status-3 | No |- | 16 | 31 | Reset | In/out | Control-2 | No |- | 17 | 36 | Select-Printer | In/out | Control-3 | Yes |- | 18-25 | 19-30,33,17,16 | Ground | - | - | - |} 반전된 라인은 논리적으로 낮을 때 참이다. 반전되지 않은 경우, 논리적으로 높을 때 참이다. DB25 커넥터의 핀 25는 최신 컴퓨터에서는 접지되지 않을 수 있다.
*[인터럽트]: 인터럽트
*[I/O]: 입출력 주소