KR920003346B1 - T.30 protocol command receiving and analysis method - Google Patents

T.30 protocol command receiving and analysis method Download PDF

Info

Publication number
KR920003346B1
KR920003346B1 KR1019890011788A KR890011788A KR920003346B1 KR 920003346 B1 KR920003346 B1 KR 920003346B1 KR 1019890011788 A KR1019890011788 A KR 1019890011788A KR 890011788 A KR890011788 A KR 890011788A KR 920003346 B1 KR920003346 B1 KR 920003346B1
Authority
KR
South Korea
Prior art keywords
register
value
address
command
interrupt
Prior art date
Application number
KR1019890011788A
Other languages
Korean (ko)
Other versions
KR910005643A (en
Inventor
서성희
Original Assignee
삼성전자 주식회사
정용문
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자 주식회사, 정용문 filed Critical 삼성전자 주식회사
Priority to KR1019890011788A priority Critical patent/KR920003346B1/en
Publication of KR910005643A publication Critical patent/KR910005643A/en
Application granted granted Critical
Publication of KR920003346B1 publication Critical patent/KR920003346B1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/32Circuits or arrangements for control or supervision between transmitter and receiver or between image input and image output device, e.g. between a still-image camera and its memory or between a still-image camera and a printer device

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Facsimiles In General (AREA)
  • Communication Control (AREA)

Abstract

내용 없음.No content.

Description

다중 FAX통신을 위한, T.30프로토콜 코맨드 수신 및 분석방법T.30 protocol command reception and analysis method for multi-fax communication

제1도는 본 발명에 적용되는 시스템도.1 is a system diagram applied to the present invention.

제2도는 제1도중 FIU(11)의 구체 블럭도.2 is a detailed block diagram of the FIU 11 in FIG.

제3도는 일반적인 HDLC 코맨드 포맷도.3 is a general HDLC command format diagram.

제4도는 본 발명에 따른 인터럽트 벡터 테이블도.4 is an interrupt vector table in accordance with the present invention.

제5도는 본 발명에 따른 인터럽트 서비스 루틴의 흐름도.5 is a flowchart of an interrupt service routine in accordance with the present invention.

제6도는 본 발명에 따른 코맨드 분석 루틴의 흐름도.6 is a flow chart of a command analysis routine in accordance with the present invention.

제7도는 본 발명에 따른 각 라인관리 테이블의 메모리 맵 및 데이터 버퍼 테이블도.7 is a memory map and data buffer table of each line management table according to the present invention.

본 발명은 팩시밀리(Facsimile;이하 FAX라 칭함)의 데이터 송수신 시스템에 관한 것으로, 특히 다중 회선을 처리할 수 있는 FIU(FAX Interface Unit)를 통해 HDLC 포맷의 코캔드(command)를 동시에 여러 회선에서 수신할 수 있는 방법에 관한 것이다.BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a data transmission / reception system of a facsimile (hereinafter referred to as a “FAX”), and in particular, to receive a HDLC format command on multiple lines at the same time through a FAX Interface Unit (FIU) capable of processing multiple lines. It's about how you can do it.

제1도에 도시한 바와같이 FAX통신을 위한 시스템은 본원 동일 출원이 출원한 특허출원 제87-15548호 및 제89-4110호를 보면 알 수 있으며, 간단하게 하기에 설명한다.As shown in FIG. 1, a system for FAX communication can be seen from patent applications 87-15548 and 89-4110 filed by the same application of the present application, and will be described briefly below.

먼저 전체적인 시스템 설명은 생략하고 FIU(11) 및 FCP(10)를 설명하면 제2도에서 도시한 바와같이 NCU(23)는 PABX(103)에 적정 접속되어서 FIU(11)내의 여러장치들로의 접속을 제어하는 장치이다.First, the overall system description will be omitted, and the FIU 11 and FCP 10 will be described. As shown in FIG. 2, the NCU 23 is properly connected to the PABX 103 to provide various devices in the FIU 11. The device that controls the connection.

전화기로부터 링(ring)이 들어오면 NCU(23)내의 링 검출기가 링을 감지하여 CPU(14)로 직접 알려주며 CPU(14)는 MCP(8)에게 링이 왔다는 착호 통지를 보내주고 나서 NCU(23)로 데이터 버스를 연결하라는 지시를 내린다. 이때 상기 MCP(8)로 부터 여러 종류의 푸시 버튼 데이터를 수신하라는 (Voice) 코맨드가 수신되면 CPU(14)는 EPROM(18)의 해당 데이터를 CODEC(21)를 통해 이용자에게 보이스를 출력한다. 상기 이용자가 해당 음성을 듣고 전화기의 푸시버튼(push botton(PB))을 이용해서 PB데이터(0-9,#,*의 조합)를 DTMF(20)로 송신한다. 상기 DTMF(20)는 아날로그 데이터를 디지탈로 바꾸어서 INTC(16)로 인터럽트를 걸어 PB데이터를 RAM(19)내의 지정 버퍼에 라이트하며, 이를 DMAC(15)를 통해 FIFO(17)에 전달하여 MCP(8)에 까지 전송한다. 상기와 같이 해당 음성출력 및 PB데이터 수신이 반복되어 모든 PB데이터 수신을 완료하면 마지막으로 전화기를 훅크 온 시키고 FAX(101)의 통신 버튼을 눌러 달라는 음성 출력을 하게 된다.When a ring comes in from the telephone, a ring detector in the NCU 23 detects the ring and notifies the CPU 14 directly, and the CPU 14 sends a call notification to the MCP 8 that the ring has come, and then the NCU 23 Command to connect the data bus. At this time, when a (Voice) command to receive various types of push button data is received from the MCP (8), the CPU 14 outputs the voice to the user through the CODEC (21) of the corresponding data of the EPROM (18). The user hears the voice and transmits PB data (combination of 0-9, #, *) to DTMF 20 using push button (PB) of telephone. The DTMF 20 converts the analog data into digital, interrupts the INTC 16, writes the PB data to the designated buffer in the RAM 19, and transfers the PB data to the FIFO 17 through the DMAC 15 to transfer the MCP ( To 8). When the voice output and PB data reception is repeated as described above, when all PB data reception is completed, the phone is finally hooked on and a voice output is requested to press the communication button of the FAX 101.

이후부터 FAX의 모뎀과 FIU(11)내의 모뎀(22)과의 T.30프로토콜(protocol)통신이 이루어진다. 이때 주고 받는 프로토콜 정보는 FAX 의 종별과 회선속도, 글자체 모드등이고 이런 규정이 확립되면 실제 FAX이미지 데이터를 MODEM(22)과 DMAC(15)를 이용하여 FCP(10)에 전송하면 FCP(10)는 MCP(8)의 메세지 정보를 받아 PCP(13)와 블럭단위의 전송이 이루어진다. 전송이 끝나면 라인을 절단하는데 상기 수신된 이미지 데이터를 송신하고자 할때는 새로 프리 라인(Free Line)을 찾아 해당 FAX에 접속시키고, 블럭단위로 상대방 팩시밀리로 데이터 송신을 행하고 송신이 완료되면 회선을 끊고 송수신을 마치게 된다. 기존의 FAX들은 포인트-투-포인트(Point-to-point) 형식의 통신만 할 수 있으므로 다중처리는 할 수 없다. 또한 FAX 자체에는 다양한 기능을 첨가시킨다는 것은 가격면에서 비효율적이므로 기능첨가에는 한계성이 따른다. 이런 상황을 극복하고 소형이면서도 싼가격의 FAX도 다양한 기능의 서비스를 받기 위해서 FAX 이용자가 직접 MHS(Message Handling System)에 액세스(Access)하여 MHS의 서비스를 받게 하는 것이 다중회선 처리 FIU의 필요성이다.Thereafter, T. 30 protocol communication is performed between the FAX modem and the modem 22 in the FIU 11. At this time, the protocol information is sent and received, such as the type of FAX, line speed, font mode, etc. If this rule is established, the actual FAX image data is transmitted to the FCP 10 using the MODEM 22 and the DMAC 15. Receiving the message information of the MCP (8), the transmission in the unit of block with the PCP (13). When the transmission is over, cut the line. When you want to send the received image data, find a new free line and connect it to the corresponding fax. Then, send the data by the other party's facsimile on a block basis. It is finished. Existing faxes can only communicate in point-to-point format and cannot multiply. In addition, adding various functions to FAX itself is inefficient in terms of price, and therefore, there is a limit in adding a function. In order to overcome such a situation and receive a small and inexpensive FAX service, it is necessary for the FAX user to directly access the MHS (Message Handling System) to receive MHS service.

따라서 본 발명의 목적은 다중회선 FIU를 통해서 HDLC포맷의 코맨드를 동시에 수신 처리함으로써 여러 FAX 사용자가 MHS 서비스를 받을 수 있는 다중 FAX 통신을 위한 T.30프로토콜 코맨드 수신 및 분석방법이다.Accordingly, an object of the present invention is a method of receiving and analyzing T.30 protocol commands for multi-FAX communication in which multiple FAX users can receive MHS service by simultaneously receiving and processing HDLC format commands through a multi-line FIU.

이하 본 발명을 도면을 참조하여 상세히 설명한다.Hereinafter, the present invention will be described in detail with reference to the drawings.

제3도는 일반적인 HDLC 코맨드 포맷도이고, 제4도는 본 발명에 따른 인터럽트 벡터 테이블도이며, 제5도는 본 발명에 따른 인터럽트 서비스 루틴의 흐릅도이고, 제6도는 본 발명에 따른 코맨드 분석 루틴의 흐름도이며, 제7도는 본 발명에 따른 각 라인 관리 테이블의 메모리 맵 및 데이터 버퍼 테이블도로서,(A)는 라인관리 테이블의 메모리 맵이고, (B)는 데이터 버퍼 테이블도이다.3 is a general HDLC command format diagram, FIG. 4 is an interrupt vector table diagram according to the present invention, FIG. 5 is a flowchart diagram of an interrupt service routine according to the present invention, and FIG. 6 is a flowchart of a command analysis routine according to the present invention. 7 is a memory map and data buffer table diagram of each line management table according to the present invention, (A) is a memory map of the line management table, and (B) is a data buffer table diagram.

상술한 구성에 의거 본 발명을 제1-7도를 참조하여 상세히 설명한다.Based on the above configuration, the present invention will be described in detail with reference to FIGS. 1-7.

우선 실제로 설명될 부분은 제1도 FIU(11)에 대해서이기 때문에 본 발명과 연관되는 제2도의 구성을 설명하면 다중회선을 제어할 수 있는 16비트 CPU(14)와, 다중회선을 구현하기 위해 필요한 DMAC(15)와, INTC(16)와, 복수개의 모뎀(22)으로 구성되며, 메모리로 RAM(19) 256K가 사용된다. 각 모뎀(22)은 DMAC(15)의 각 채널과 연결되면서 코맨드 데이터 수신시 DMAC(15)를 모뎀(22)이 액티브(active)시키면 DMAC(15)는 데이터를 메모리에 세이브(save)시킨후 INTC(16)에게 인터럽트 요구를 한다. 이때 발생되는 인터럽트에 의해 제5도에서 도시한 인터럽트 서비스 루틴이 수행되고, 이 루틴은 하아드웨어(Hardware)적인 연결에 의해 각 라인에 대하여 해당 주소를 할당 받아서 처리가 된다. 따라서, 각 모뎀(23)으로부터 DMAC(15)의 각 채널로 데이터 수신 요구가 들어오면, DMAC(15)의 각 채널은 서로 독립적으로 모뎀(22)으로 부터 1바이트의 코맨드 데이터를 읽어서 RAM(19)의 각 해당 회선의 버퍼에 세이브시킨다. 그후에 DMAC(15)의 각 채널들은 INTC(16)의 각 채널로 인터럽트를 요청한다. 이때 동시에 인터럽트 요청이 들어오면 정해진 순위에 의해 인터럽트가 처리된다. 상기 순위가 높은 채널의 인터럽트가 처리되고 있는 동안은 순위가 낮은 인터럽트는 펜딩(pending)되므로 인터럽트를 잃어 버릴 염려는 없다. 상기 수행후 CPU(14)는 수신된 데이터를 분석하여 처리를 행하게 된다. 하아드웨어에 의해 상기 인터럽트가 발생할 시 인터럽트 서비스 루틴 수행을 설명한다. 즉, 제4도에서 도시한 벡터(vector)테이블에 의해 제5도의 각 회선별로 할당되어 있는 COMRECV0, COMRECV1, COMRECV2, COMRECV3…루틴이 수행되게 된다. 상기 인터럽트가 발생되면 INTC(16)는 인터럽트 벡터 어드레스를 실어줌에 의해 상기 루틴중에 하나가 수행되게 된다.First, since the part to be actually described is with respect to FIG. 1, the FIU 11, the configuration of FIG. 2 associated with the present invention will be described. It is composed of necessary DMAC 15, INTC 16, and a plurality of modems 22, and 256K of RAM 19 is used as a memory. Each modem 22 is connected to each channel of the DMAC 15 and the DMAC 15 activates the DMAC 15 when command data is received. The DMAC 15 saves the data in a memory. An interrupt request is made to INTC 16. At this time, the interrupt service routine shown in FIG. 5 is executed by the interrupt generated, and the routine is allocated by processing a corresponding address for each line by a hardware connection. Therefore, when a data reception request is received from each modem 23 to each channel of the DMAC 15, each channel of the DMAC 15 reads one byte of command data from the modem 22 independently of each other, thereby providing RAM (19). Save to the buffer of each line. Each channel of DMAC 15 then requests an interrupt to each channel of INTC 16. At the same time, when an interrupt request comes in, interrupts are processed according to a predetermined order. While the interrupts of the higher rank channels are being processed, the lower rank interrupts are pending, so there is no fear of losing an interrupt. After the execution, the CPU 14 analyzes the received data and performs processing. The following describes the interrupt service routine execution when the interrupt is caused by hardware. That is, COMRECV0, COMRECV1, COMRECV2, COMRECV3,... Assigned to each line in FIG. 5 by the vector table shown in FIG. The routine will run. When the interrupt is generated, INTC 16 carries one of the routines with an interrupt vector address.

상기 벡터 테이블은 인텔(Intel)계열 어셈블리 랭귀지(Assembly language)를 사용하면 인터럽트 컨트롤러(controller)에다 각 채널별로 해당되는 벡터 넘버 20H를 세트시켜 놓고서 각 채널별로 80H, 84H…, OXXH에다가 벡터 어드레스를 세이브시키는 과정이다.The vector table uses an Intel-based assembly language, and sets the vector number 20H corresponding to each channel in the interrupt controller. This is the process of saving the vector address to OXXH.

제3도는 실제 CCITT T.30에서 권고하고 있는 HDLC 프레임의 포맷(format)이며, 이 프레임을 수신하는 방법이 본 발명에 해당한다. 상기 HDLC 프레임 포맷의 프리앰블(Preamble)(1A)은 코맨드 하나를 보내기 위해 싱크를 맞추는 28H개 정도의 7EH를 뜻하고, 바이너리 코디드 인포매이션(Binary Coded Information)에서 넌-스탠다드 팩시리더스 프레임(Non-standard facilities frame)(2A)은 같은 FAX기종간에만 통하는 정보이다. 콜드 서브스크라이버 아니덴티피케이션 프레임(Called Subschber Identification frame)(3A)은 전화번호 등의 자신의 정보이고, 플래그(flag)(4A)는 7EA가 싱크(sync)를 맞추기 위해 사용된다. 어드레스(Address)(5A)는 어드레스 필드(field)로 0FFH가 설정되며, 컨트롤(control)(6A)은 처음 프레임이냐 마지막 프레임이냐를 나타낼 수 있는 1100×000B이며, 팩시밀리 컨트롤(7A)은 하나의 프레임이 어떤 프레임이냐를 나타내는 코맨드 코드이다. 팩시밀리 인포매이션은 실제로 통신되는 정보인 스피드(speed) 코딩모드 화질, 종이폭등의 정도를 나타내고, 프레임 체킹 시퀸스(Frame Checking Sequence)(8A)는 에러체크용 2바이트 데이터로 되어 있다. 상기 팩시밀리 인포매이션의 G1과 G2 캐퍼빌러티(Capability)(9A)는 G1, G2에만 관련되는 데이터이고 여기서는 서비스를 하지 않는다. 베이직(B asic) G3캐퍼빌러티+애디션널(Additinal) G3캐퍼빌러티(10A)는 G3의 송수신에 필요한 모든 사항이다.3 is a format of an HDLC frame recommended in CCITT T.30, and a method of receiving the frame corresponds to the present invention. The preamble 1A of the HDLC frame format refers to about 28H 7EHs that are synchronized to send one command, and non-standard facilitator frame (Non-) in binary coded information. The standard facilities frame (2A) is information that passes only between the same FAX models. The cold subscriber identification frame 3A is its own information, such as a telephone number, and the flag 4A is used for 7EA to sync. Address 5A is set to 0FFH as an address field, and control 6A is 1100 × 000B which can indicate whether it is the first frame or the last frame, and the facsimile control 7A has one Command code indicating what frame a frame is. The facsimile information indicates the degree of speed coding mode image quality, paper width, etc., which is actually communicated information, and the frame checking sequence 8A is 2-byte data for error checking. The facsimile information G1 and G2 Capability 9A are data related only to G1 and G2 and are not serviced here. B asic G3 Capability + Additinal The G3 Capability (10A) is everything you need to send and receive G3.

상기 인터럽트 서비스 루틴은 다음과 같은 작업이 수행된다. 제7a도에서 도시된 바와 같이 해당 라인의 관린 테이블(LCTB)의 베이스 어드레스를 베이스 레지스터(BX)에 정하고, (1B)단계는 채널 0에 해당하고 (2B)단계는 채널 1, (3B) 단계는 채널 2에, (4B)단계는 채널 7에 해당하며, 인터럽트 서비스루틴과 베이스 레벨 루틴들이 공유하는 각 회선별 라인 관리 테이블(LCTB)들이다. 상기 베이스 어드레스를 정한후 (5B)단계에서 TCRINT 루틴을 수행한다. 상기 루틴은 실제 수신되는 제3도의 프리앰블(1A)과 프레임체크 시퀸스(8A)등의 데이터를 제로(Zero) 딜리트(Delete)없이 수신한 후에 바이트 단위로 처리하여 하나의 프레임을 수신하는 작업을 수행한다. 그리고 프레임이 수신되면 이벤트(Event)를 베이스 레벨로 띄워준다. 상기 인터럽트 서비스 루틴에 의해 제6도에서 도시한 바와 같이 (1E) 및 (2E)단계에서 이벤트를 수신하게 되면, (3E) 단계에서는 수신된 데이터에서 1이 5개후에 들어오는 0를 딜리트한후 (4E)단계에서 CRC체크를 행하게 된다. 상기 CRC체크 후(5E)단계에서는 CRC에러가 발생되면 (6E)단계에서 재전송 코맨드를 송신하고, 에러가 없으면 (7E)단계에서 코맨드를 분석 처리하면 된다. 제7b도는 각 회선별 코맨드 수신 버퍼를 나타낸다.The interrupt service routine performs the following tasks. As shown in FIG. 7A, the base address of the related table LCTB of the corresponding line is set in the base register BX, where step (1B) corresponds to channel 0 and step (2B) is channel 1 and (3B). Is channel 2, and step 4B corresponds to channel 7, and is line-specific line management tables (LCTBs) shared by the interrupt service routine and the base level routines. After determining the base address, a TCRINT routine is performed in step 5B. The routine receives data such as the preamble 1A and the frame check sequence 8A of FIG. 3 that are actually received without zero delete, and then processes one byte to receive one frame. Perform. When the frame is received, it raises the event to the base level. As shown in FIG. 6 by the interrupt service routine, if an event is received in steps 1E and 2E, in step 3E, after receiving 1 after 5 in the received data, 0 is received. In step 4E, a CRC check is performed. After the CRC check, in step 5E, if a CRC error occurs, the retransmission command is transmitted in step 6E. If there is no error, the command is analyzed in step 7E. 7B shows a command reception buffer for each line.

상기 인터럽트 서비스 루틴을 설명하기 전에 이 루틴의 기호들에 대해 하기에 설명한다.Before describing the interrupt service routine, the symbols of this routine are described below.

COMRECV0-COMRECVn은 인터럽트 서비스 루틴 이름이고, PUSHA는 모든 사용중인 레지스터를 스태(stack)에 세이브시키는 명령이며, MOV BX, offset LCTB는 라인 관리 테이블의 주소를 BX에 로드시키는 명령이고, ADD BX, 100H *X는 각 회선별로 100H만큼의 메모리를 라인관리 테이블에 할당하여 그 회선에 관한 모든 정보를 세이브시키기 위한 베이스 에드레스를 계산하는 과정이며 x값에 따라 회선의 베이스 어드레스가 결정된다.COMRECV0-COMRECVn is the interrupt service routine name, PUSHA is the instruction to save all active registers to the stack, MOV BX, offset LCTB is the instruction to load the address of the line management table into BX, ADD BX, 100H * X is a process of allocating 100H of memory for each line to the line management table to calculate a base address for saving all information about the line. The base address of the line is determined according to the x value.

또한 TCRINT는 실제 인터럽트가 발생되었을때 처리될 모듈이고, MoV DX, [BX+INT_END]는 발생된 인터럽트를 클리어(clear)시키기 위한 주소를 DX에 고드시키며, OUT DX, AL은 현재 DX에 로드되어 있는 주소로 AL의 값을 라이트(write)함에 의해 발생된 인터럽트를 클리어시키고, CPU EOI는 CPU를 앤드 오브 인터럽트(End of Interrupt)시키며, POPA는 인터럽트 발생전 상태로 모든 레지스터를 복구시키고, IRET는 인터럽트 처리루틴에서 벗어난다.In addition, TCRINT is the module to be processed when an actual interrupt occurs. MoV DX, [BX + INT_END] notifies the DX of an address to clear the generated interrupt. OUT DX, AL is currently loaded on DX. The interrupt generated by writing the value of AL to the correct address is cleared, the CPU EOI end of interrupt the CPU, POPA restores all registers to the state before the interrupt occurred, and IRET Break out of interrupt handling routine.

AL←[BX+COMBYT]은 BX+COMBYT가 가르키는 주소의 값을 AL에 로드시키고, ROL Al, 1은 AL 레지스터의 한 비트를 레프트 로테이트(left.rotate)시키라는 명령이며, RCL CL, 1은 CL레지스터의 한 비트를 레프트 로테이트시키되 캐리 플래그(carry flag)가 CL레지스터의 비트 0로 쉬프트(shift)되는 명령이고, [BX+FLAG_CNT]←은 BX+FLAG_CNT가 가르키는 주소에 1을 세이브시키라는 의미이다.AL ← [BX + COMBYT] loads the value of the address pointed to by BX + COMBYT to AL. ROL Al, 1 is the command to left-rotate one bit of the AL register. RCL CL, 1 Is a command to rotate one bit of the CL register, but the carry flag is shifted to bit 0 of the CL register, and [BX + FLAG_CNT] ← saves 1 at the address pointed to by BX + FLAG_CNT. Means.

또한 상기 BX는 베이스 레지스터이고, DX는 데이터 레지스터이며, AL은 어큐뮬레이터(Accumulator) 로우(Low)레지스터이고, CL은 카운터 로우 레지스터이다.The BX is a base register, the DX is a data register, the AL is an accumulator low register, and CL is a counter low register.

다음은 인터럽트 서비스 루틴의 흐름을 보면 제5도에서 (1B-4B)단계에서는 각각에 라인관리 테이블(LCTB)의 주소를 BX 레지스터에 로드시키는 명령을 하게되고, 그 회선에 관한 모든 정보를 세이브시키기 위한 베이스 어드레스를 계산한다. (5B)단계에서는 실제 인터럽트가 발생할시 처리하는 인터럽트 서비스 루틴이며 그후에 (6B)단계를 수행한다. 상기 (6B)단계에서는 발생된 인터럽트를 클리어시키기 위한 주소를 DX레지스터에 로드시키고 발생된 인터럽트를 클리어시키며, CPU를 앤드 오브 인터럽트를 시키면서 인터럽트 발생전 상태로 모든 레지스터를 복구시키고 인터럽트 처리 루틴에서 벗어난다. 상기 (5B)단계를 설명하면 (1C)단계에서는 BX+COMBYT가 가르키는 주소의 값을 AL레지스터에 로드한 후 (2C)단계를 수행한다. (2C)단계에서는 AL어드레스가 0FFH인가를 체크하여 0FFH이면 리턴을 수행하고 0FFH가 아니면 (3C) 단계를 수행한다. 상기 (3C)단계에서는 BX+CL_SAVE가 가르키는 주소의 값을 CL레지스터에 로드하고 AH레지스터에 8을 세이브시킨후 (4C)단계를 수행한다. 상기 (4C)단계에서는 BX+SYNC_FLG의 값이 1인가를 체크하여 1이면 (5C)단계를 수행한다. 상기 (5C)단계에서는 AL레지스터의 1비트를 레프트 로테이트 시키라는 명령을 하고, CL레지스터의 1비트를 레프트 로테이트시키되 캐리플래그가 CL레지스터의 비트 0로 쉬프트되는 명령을 한 후 (6C)단계를 수행한다. 상기 (6C)단계에서는 CL레지스터가 7EH인가를 체크하여 7EH가 아니면 (7C)단계에서 CH레지스터의 값을 하나 증가시켜 CH레지스터에 세이브시킨후 (8C)단계를 수행한다. 상기 (8C)단계에서는 CH레지스터가 8인가를 체크하여 8이 아니면 (9C)단계에서 AH레지스터의 값을 하나 감소시킨후 다시 상기 (6C)단계를 수행한다. 상기 (6C)단계에서 CL레지스터가 7EH이면 (10C)단계에서 BX+LAST_CHK가 가리키는 주소의 값이 0인가를 체크하여 0이면 (11C)단계에서 CH레지스터에 0를 세이브시킨후 (12C)단계를 수행한다.Next, in the flow of interrupt service routine, in step (1B-4B) in Fig. 5, each of the commands to load the address of the line management table (LCTB) into the BX register is executed, and all the information about the line is saved. Calculate the base address. In step (5B), the interrupt service routine processes when an actual interrupt occurs, and then performs step (6B). In step (6B), an address for clearing the generated interrupt is loaded into the DX register, the generated interrupt is cleared, all the registers are restored to the state before the interrupt occurred while the CPU is end-of-interrupted, and the interrupt processing routine is released. Referring to step (5B), in step (1C), the value of the address indicated by BX + COMBYT is loaded into the AL register, and then step (2C) is performed. In step (2C), it checks whether the AL address is 0FFH and returns if it is 0FFH, and performs step (3C) if it is not 0FFH. In the step (3C), the value of the address indicated by BX + CL_SAVE is loaded into the CL register, the 8 is saved to the AH register, and the step (4C) is performed. In step (4C), it is checked whether the value of BX + SYNC_FLG is 1, and if it is 1, step (5C) is performed. In the step (5C), the instruction to left rotate one bit of the AL register, and the left bit of the CL register to left rotate, but the carry flag is shifted to bit 0 of the CL register, and then performs the step (6C). do. In step (6C), it is checked whether the CL register is 7EH. If it is not 7EH, in step (7C), the value of the CH register is increased by one, and the result is saved in the CH register (8C). In step (8C), it is checked whether the CH register is 8, and if it is not 8, the value of the AH register is decreased by one in step (9C), and then step (6C) is performed again. If the CL register is 7EH in step (6C), check whether the value of the address indicated by BX + LAST_CHK is 0 in step (10C), and if it is 0, save 0 to the CH register in step (11C), and then perform step (12C). Perform.

상기 (12C)단계에서는 AH레지스터의 값을 하나 감소하여 AH레지스터에 세이브시킨후 (13C)단계에서 AH레지스터가 0인가를 체크한다. 상기 AH레지스터가 0가 아니면 (14C)단계에서 AH레지스터의 1비트를 레프트 로테이트시키라는 명령을 하고 CL레지스터의 1비트를 레프트 로테이트시키되 캐리 플래그가 CL레지스터의 비트 0로 쉬프트되는 명령을 하며 CH레지스터의 값을 하나 증가하여 CH레지스터에 저장한 후 다시 상기 (12C)단계를 수행한다. 상기 (13C)단계에서 AH레지스터가 0이면 (15C)단계에서 BX+CLSAVE가 가리키는 주소에 CL레지스터의 값을 세이브시킨후 리턴한다. 상기 (10C)단계에서 BX+LASTCHK가 가리키는 주소의 값이 0이 아니면 (16C)단계에서 CH레지스터의 값을 DL레지스터에 로드시키고 DH레지스터 및 CH레지스터에 0를 세이브시킨후 (17C)단계를 수행한다.In step (12C), the value of the AH register is decreased by one, and the result is saved in the AH register. In step (13C), it is checked whether the AH register is zero. If the AH register is not 0, in step 14C, the first bit of the AH register is left rotated and the first bit of the CL register is left rotated, but the carry flag is shifted to bit 0 of the CL register. Increase the value of 1 by storing it in the CH register, and then perform step (12C) again. If the AH register is 0 in step (13C), the CL register value is stored in the address indicated by BX + CLSAVE in step (15C) and returned. If the value of the address indicated by BX + LASTCHK in step (10C) is not 0, the value of CH register is loaded in the DL register in step (16C), 0 is stored in the DH register and CH register, and then step (17C) is performed. do.

상기 (17C)단계에서는 AH레지스터의 값을 하나 감소시켜 AH레지스터에 로드시키고, (18C)단계에서는 AH레지스터의 값이 0인가를 체크하여 0가 아니면 (19C)단계를 수행한다. 상기 (19C)단계에서는 상기 (14C)단계와 같이 수행한후 다시 (17C)단계를 수행한다. 상기 AH레지스터의 값이 0이면 (20C)단계에서 BX+LAST_CHK가 가리키는 주소에 CX레지스터의 값을 로드시키고 AL레지스터에 BX+BUF_CNT가 가리키는 주소의 값을 로드시킨후 (21C)단계를 수행한다. 상기 (21C)단계에서는 AL레지스터의 값이 5보다 작은가를 체크하여 작으면 (22C)단계를 수행하고 작지 않으면 (23C)단계를 수행한다. 상기 (22C)단계에서는 BX+LAST_CHK 및 BX+BUF_OUT가 가리키는 주소에 0을 세이브시킨후 리턴을 한다.In step (17C), the value of the AH register is decreased by one and loaded into the AH register. In step (18C), it is checked whether the value of the AH register is 0. In the step (19C) it is carried out as in step (14C) and then performs step (17C) again. If the value of the AH register is 0, in step 20C, the value of the CX register is loaded at the address indicated by BX + LAST_CHK, and the value of the address indicated by BX + BUF_CNT is loaded at the AL register. In step 21C, if the value of the AL register is less than 5, it is checked to be smaller than step 22C, and if not smaller, step 23C is performed. In step (22C), 0 is stored at the address indicated by BX + LAST_CHK and BX + BUF_OUT and returned.

상기 (23C)단계에서는 AX레지스터에 AX레지스터에 8을 곱해서 로드시키고 AX레지스터에 AX-DX를 로드시키며, BX+FRMESIZ가 가리키는 주소에 AX레지스터의 값을 로드시키고, AX레지스터에 BX+FCOMBUF가 가리키는 주소에 로드시키며, BX+FCOMBUF가 가리키는 주소의 값에 32H 더하여 BX+FCOMBUF가 가리키는 주소에 로드시키고, BX+FAX_EVENT가 가리키는 주소에 E_FRAME인 이벤트 값(EVENT Value)을 로드시킨 후 다시 (22C)단계를 수행한다. 상기 (8C)단계에서 CH레지스터가 8이면 (24C)단계에서 데이터를 저장하는 루틴을 수행하는 (1D)단계로 가서(1D)단계를 수행한다. 상기 (1D)단계에서 DI레지스터에 BX+FCOMBUF가 가리키는 주소의 값을 로드하고 AL레지스터에 BX+BUFCNT가 가리키는 주소의 값을 로드한 후 AH레지스터에 0을 세이브시키고, DI레지스터에 DI+AX를 로드시키며 DI레지스터가 가리키는 주소에 CL레지스터의 값을 로드시키고 BX+BUF_CNT가 가리키는 주소의 값에 하나를 증가하여 BX+BUF_CNT가 가리키는 주소에 로드시킨후 리턴을 한다. 상기 (24C)단계 수행후 (25C)단계에서는 BX+LAST_CHK가 가르키는 주소에 1을 세이브시키고 CH레지스터에 0을 세이브시킨후 (26C)단계를 수행한다. 상기 (26C)단계에서는 AH레지스터의 값을 1만큼 감소하여 AH레지스터에 로드시켜 (27C)단계에서 AH레지스터의 값이 0인가를 체크한다. 상기 AH레지스터의 값이 0이면 (28C)단계에서 BX+CL_SAVE가 가르키는 주소에 CL레지스터의 값을 로드시킨후 리턴한다. 상기 AH레지스터의 값이 0가 아니면 (29C)단계에서 (5C)단계와 같이 수행한 후(30C)단계를 수행한다.In step (23C), the AX register is loaded by multiplying the AX register by 8, the AX register is loaded with AX-DX, the AX register is loaded at the address indicated by BX + FRMESIZ, and the BX + FCOMBUF pointed to the AX register. Load into the address, add 32H to the address pointed to by BX + FCOMBUF, load it into the address pointed to by BX + FCOMBUF, load the EVENT Value of E_FRAME to the address pointed to by BX + FAX_EVENT, and then return to step 22C. Perform If the CH register is 8 in step (8C), go to step (1D) of performing a routine for storing data in step (24C) and perform step (1D). In step (1D), load the value of the address pointed to by BX + FCOMBUF into the DI register, load the value of the address pointed to by BX + BUFCNT into the AL register, save 0 to the AH register, and store DI + AX to the DI register. It loads the value of CL register to the address pointed to by DI register, increases the value of the address pointed to by BX + BUF_CNT, loads it to the address pointed to by BX + BUF_CNT, and returns. After performing step (24C), in step (25C), 1 is stored at the address indicated by BX + LAST_CHK, 0 is stored in the CH register, and then step (26C) is performed. In step 26C, the value of the AH register is decreased by 1 and loaded into the AH register to check whether the value of the AH register is 0 in step 27C. If the value of the AH register is 0, in step 28C, the value of the CL register is loaded at the address indicated by BX + CL_SAVE and returned. If the value of the AH register is not 0, step (30C) is performed after step (29C) to step (5C).

상기 (30C)단계에서는 CL레지스터의 값이 7EH인가를 체크하여 7EH이면 상기 (16C)단계를 수행하고 7EH가 아니면 (31C)단계에서 CH레지스터의 값을 하나 증가시켜 CH레지스터에 로드시킨후 상기 (26C)단계를 다시 수행한다. 상기 (4C)단계에서 BX+SYNC_FLG가 가르키는 주소의 값이 1이 아니면 (32C)단계에서 (5C)단계와 같은 수행을 한다. 상기 수행후 (33C)단계에서는 CL레지스터의 값이 7EH인가를 판단하여 7EH가 아니면 (34C)단계에서 AH레지스터의 값이 0인가를 판단한 후 0이면 (35C)단계를 수행하고 0가 아니면 다시 (32C)단계를 수행한다. 상기 (35C)단계에서는 BX+CL_SAVE가 가리키는 주소에 CL레지스터의 값을 로드시킨 후 리턴한다. 상기 (33C)단계에서 7EH이면 (36C)단계를 수행하여 BX+Flag_CNT가 가리키는 주소의 값에 1을 더하여 BX+Flag_CNT를 가리키는 주소에 로드한 후(37C)단계를 수행한다. 상기 (37C)단계에서는 BX+Flag_CNT가 가리키는 주소의 값이 20H인가를 체크하여 20H이면 (38C)단계를 수행하고 20H가 아니면 (39C)단계를 수행한다. 상기 (38C)단계에서는 BX+SYNC_FLG가 가리키는 주소에 1을 세이브시키고 BX+LAST_CHK가 가리키는 주소에 0을 세이브시킨후 (39C)단계를 수행한다. 상기 (39C)단계에서는 AH레지스터의 값을 하나 감소시켜 AH레지스터에 로드시킨후 (40C)단계에서 AH레지스터의 값이 0인가를 체크한다.In step (30C), check whether the value of the CL register is 7EH, and if it is 7EH, perform step (16C); Perform step 26C) again. If the value of the address indicated by BX + SYNC_FLG in step (4C) is not 1, the same operation as in step (5C) is performed in step (32C). In step 33C, after determining whether the value of the CL register is 7EH, if it is not 7EH, in step 34C, after determining whether the value of the AH register is 0, if it is 0, the step 35C is performed. Perform step 32C). In step 35C, the CL register value is loaded at the address indicated by BX + CL_SAVE and returned. In the case of 7EH in step 33C, step 36C is performed to load the address indicated by BX + Flag_CNT by adding 1 to the address indicated by BX + Flag_CNT and then perform step 37C. In step (37C), if the address value indicated by BX + Flag_CNT is 20H, step (38C) is performed if 20H, and step (39C) if not 20H. In step (38C), 1 is stored at the address indicated by BX + SYNC_FLG, 0 is stored at the address indicated by BX + LAST_CHK, and then step (39C) is performed. In step 39C, the value of the AH register is decreased by one and loaded into the AH register. In step 40C, it is checked whether the value of the AH register is zero.

상기 AH레지스터의 값이 0이면 (42C)단계에서 BX+CL_SAVE가 가리키는 주소에 CL레지스터의 값을 로드시킨후 리턴한다. 상기 AH레지스터의 값이 0가 아니면 (41C)단계에서 상기 (19C)단계와 같이 수행한 후 다시 (39C)단계를 수행한다.If the value of the AH register is 0, in step 42C, the value of the CL register is loaded at the address indicated by BX + CL_SAVE and returned. If the value of the AH register is not 0, step (41C) is performed as in step (19C) and step (39C) is performed again.

상술한 바와 같이 다중회선 FIU에서 T.30프로토콜 코맨드 수신은 300bps로 매우 느리게 수신하여 소프트웨어로 데이터 링크층을 처리해도 무관하므로 하아드 웨어의 구성이 간단하여지므로 경비절감의 이점이 있고, 다중회선처리를 하여 FAX사용자들에게 보다 나온 서비스를 제공할 수 있는 계기 제공 및 MHS서비스를 이용하여 통신이 가능하게 할 수 있는 이점이 있다.As described above, T.30 protocol command reception is very slow at 300bps in the multi-line FIU, so it is irrelevant even if the data link layer is processed by software. Therefore, the hardware configuration is simplified, which has the advantage of cost reduction and multi-line processing. By providing the instrument to provide more services to the FAX users, there is an advantage to enable communication using the MHS service.

Claims (2)

팩시밀리 통신의 팩스 인터페이스 유니트에서 코맨드 수신방법에 있어서, 인터럽트가 발생되면 INTC가 인터럽트 벡터 어드레스를 실어줌에 의해 해당 회선의 관리 테이블의 베이스 어드레스를 정하는 제1과정과, AL레지스터의 값이 0FFH가 아니고 BX+SYNC_FLG가 가리키는 주소의 값이 1이 아니면 CL레지스터가 7EH일 경우 플래그를 카운트하여 어드레스 필드가 나올때까지 계속 체크하는 제2과정과, 상기 BX+SYNC_FLG 가리키는 주소의 값이 1이면 CL레지스터가 7EH가 아니고 CH레지스터 값이 8일 경우 데이터를 저장하고 플래그가 디텍트될 때까지 체크하는 제3과정과, CL레지스터 값이 7EH로 플래그가 체크되면 버퍼카운터를 증가하여 AL레지스터 값이 5보다 클 경우 이벤트를 발생하는 제4과정으로 이루어짐을 특징으로 하는 다중 FAX통신을 위한 T.30프로토콜 코맨드 수신방법.In the method of receiving a command in the fax interface unit of facsimile communication, the first process of determining the base address of the management table of the line by the INTC carrying an interrupt vector address when an interrupt occurs, and the value of the AL register is not 0FFH. If the address indicated by BX + SYNC_FLG is not 1, the second step of checking the flag until the address field appears when the CL register is 7EH; and if the value of the address indicated by BX + SYNC_FLG is 1, the CL register is 7EH. If the CH register value is 8 and the CH register value is 8, save the data and check it until the flag is detected. If the CL register value is 7EH, check the flag counter and increase the buffer counter to increase the AL register value. Number of T.30 protocol commands for multi-fax communication, characterized by the fourth process of generating an event Way. 팩시밀리 통신의 팩스 인터페이스 유니트에서 코맨드 분석방법에 있어서, 이벤트를 수신하게 되면 수신 데이터에서 1이 5개 후에 들어오는 0을 딜리트하는 수신 딜리트 과정과, CRC체크를 하여 CRC에러가 발생하면 재전송 코맨드를 송신하고 CRC에러가 없으면 코맨드를 분석 처리하는 코맨드 분석과정으로 이루어짐을 특징으로 하는 다중 FAX 통신을 위한 T.30프로토콜 코맨드 분석방법.In the command analysis method of the fax interface unit of facsimile communication, when an event is received, a reception deciding process for deciding incoming zeros after 1 to 5 in the received data and a retransmission command when a CRC error occurs by performing a CRC check T.30 protocol command analysis method for multiple FAX communication, characterized in that the command analysis process for processing the command if there is no CRC error transmitted.
KR1019890011788A 1989-08-18 1989-08-18 T.30 protocol command receiving and analysis method KR920003346B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019890011788A KR920003346B1 (en) 1989-08-18 1989-08-18 T.30 protocol command receiving and analysis method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019890011788A KR920003346B1 (en) 1989-08-18 1989-08-18 T.30 protocol command receiving and analysis method

Publications (2)

Publication Number Publication Date
KR910005643A KR910005643A (en) 1991-03-30
KR920003346B1 true KR920003346B1 (en) 1992-04-27

Family

ID=19277681

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019890011788A KR920003346B1 (en) 1989-08-18 1989-08-18 T.30 protocol command receiving and analysis method

Country Status (1)

Country Link
KR (1) KR920003346B1 (en)

Also Published As

Publication number Publication date
KR910005643A (en) 1991-03-30

Similar Documents

Publication Publication Date Title
JP2781238B2 (en) Facsimile multistage relay method
US6643709B1 (en) Device and method for transporting and converting protocol messages from one protocol into another
US6023473A (en) Application programming interface for modem and ISDN processing
KR920003346B1 (en) T.30 protocol command receiving and analysis method
KR920001183B1 (en) Rtc checking method for multi fax communitcation
JP2712189B2 (en) Modem device
JP3015429B2 (en) Image transmission device
KR20000014992A (en) Method for interfacing between frame layer and data link layer for subscriber of isdn
KR910006681B1 (en) Automatic dialing method for fax
KR910005827B1 (en) Message handling system for fax
JP2626630B2 (en) Multi-media communication processing method
JP2901327B2 (en) Terminal device and communication method using subaddress
JP2619929B2 (en) Composite line switching method
JPS6159945A (en) System for communicating and processing plural media
JP3298684B2 (en) ISDN communication terminal
JP2517626B2 (en) Communications system
JP2795863B2 (en) Data terminal equipment
JP2800803B2 (en) Multi-media communication processing method
JP3052823B2 (en) Multi-function facsimile machine connected to computer and line
JP3000611B2 (en) Terminal equipment for ISDN
KR950010941B1 (en) S-interface card for isdn and method thereof
JPH0698137A (en) Isdn communication terminal
JP2000059531A (en) Facsimile equipment
JPS6398275A (en) Facsimile equipment
JPH0685952A (en) G4 facsimile equipment

Legal Events

Date Code Title Description
A201 Request for examination
G160 Decision to publish patent application
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20070312

Year of fee payment: 16

LAPS Lapse due to unpaid annual fee