LỜI NÓI ĐẦU
Ngày nay với sự phát triển của xã hội cùng với sự phát triển của khoa học kỹ 
thuật, cho nên nhu cầu về thông tin trở nên thiết yếu đối với con người trong cuộc sống cũng như trong hoạt động sản xuất kinh doanh. Để đáp ứng nhu cầu trên, quang báo là hình thức cung cấp thông tin hữu ích không thể thiếu trong cuộc sống hằng ngày. Do đó quang báo ngày càng phát triển tinh vi hơn, đa dạng hơn, từ việc thiết kế quang báo với văn bản được ghi chết trong ROM, đến việc thiết kế một KIT vi xử lý để điều khiển.
 Quang báo là hình thức thông báo trên bảng đèn. Bảng đèn quang báo gồm nhiều Ma Trận LED ghép lại, mỗi một Ma Trận biểu diễn một kí tự. Tùy chiều dài của bảng đèn mà có thể hiển thị những bản tin có độ dài khác nhau. Các từ trong văn bản sẽ lần lượt xuất hiện và chạy dần từ phải sang trái. Khi văn bản đã hiển thị đến từ cuối cùng thì từ đầu tiên lại bắt đầu xuất hiện trở lại. Quá trình đó cứ tiếp tục lại mãi.
 Bên cạnh đó, với sự ra đời của máy tính điện tử đặc biệt là máy vi tính, chúng có những tính năng ưu việt như khả năng xử lý dữ liệu nhanh chóng, độ tin cậy cao, lưu trữ lượng thông tin lớn và quan trọng hơn cả là máy tính có thể kết hợp với nhiều thiết bị ngoại vi tùy theo mục đích ứng dụng cụ thể, mà việc trao đổi và điều khiển trở nên đơn giản, chúng phụ thuộc vào phần mềm điều khiển. Dựa vào tính đa dạng và mềm dẻo của máy tính người ta tìm cách ứng dụng nó vào mục đích quảng cáo, chẳng hạn như dùng trong quang báo. Nhờ vậy, việc thiết kế phần cứng cho quang báo trở thành ít phức tạp hơn, nhưng độ tin cậy cao hơn. Trong thực tế để hiển thị các văn bản, người ta dùng các kiểu chữ là các Ma Trận LED 5x7, 5x8, 8x12 hoặc 8x14 tuỳ thuộc vào mục đích sử dụng và độ phân giải.
Theo cách nghĩ đó việc thiết kế mạch quang báo kết hợp giữa KIT vi xử lý và máy tính được chúng em trình bày trong luận văn này. Phần mềm điều khiển viết bằng ngôn ngữ PASCAL. Ở đây máy tính đóng vai trò truyền dữ liệu và điều khiển còn KIT vi xử lý có nhiệm vụ lưu trữ và thực hiện chương trình quang báo. Việc kết hợp giữa hai thiết bị làm cho quang báo trở nên đa dạng, phong phú, độ tin cậy cao và dễ dàng sử dụng. Ngoài ra Kit vi xử lý còn có thể thực hiện chương trình quang báo độc lập với máy tính nếu như điều kiện thực tế không cho phép.
Mặt dù đã dành nhiều thời gian để thực hiện đề tài nhưng do kiến thức và tay nghề có hạn nên không tránh khỏi thiếu sót, chúng em rất mong sự góp ý của quí thầy cô và các bạn để luận văn được hoàn hảo hơn.
Chúng em chân thành cảm ơn thầy Nguyễn Xuân Đông, cùng tất cả quí thầy cô đã trao dồi cho chúng em lượng kiến vô cùng quí báu để hoàn thành tốt luận văn đã được giao.
Cám ơn các bạn sinh viên đã có những góp ý quí báu trong việc thực hiện 
luận văn này.
                
              
                                            
                                
            
 
            
                 131 trang
131 trang | 
Chia sẻ: banmai | Lượt xem: 2156 | Lượt tải: 0 
              
            Bạn đang xem trước 20 trang tài liệu Thiết kế mạch quang báo giao tiếp máy tính qua cổng máy in, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
u treân 80 coät. 
a.Chöông trình quang baùo toång quaùt.
Start
FFH A
HIEÅN THÒ DAÁU NHAÉC HEÄ THOÁNG
HIEÅN THÒ CHÖÕ
COÙ PHÍM NHAÁN HAY KHOÂNG
LAÁY MAÕ PHÍM AÁN
CAÁT MAÕ CHÖÛ VAØO DUØNG NHÔÙ 2000HNAÏP MAÕ CHÖÕ VUØNG HIEÅN THÒ
RESET 164 XOÙA ÑEØN
PHÍM RESET ÑÖÔÏCNHAÁN
END
 N Y
b.Löu ñoà khoái nhaäp chöõõ quang baùo. 
B. THIEÁT KEÁ PHAÀM MEÀM PASCAL:
IV.3.Giôùi thieäu ngoân ngöõ PASCAL:
IV.3.1.Xuaát xöù:
Pascal laø moät ngoân ngöõ laäp trình caáp cao do giaùo sö NIKLAUS WIRTH ôû tröôøng ñaïi hoïc kyõ thuaät ZURICH Thuïy Só saùng taïo vaøo naêm 1970, vaø ñaët taân laø PASCAL ñeå töôûng nhôù ñeán BLAISE PASCAL, nhaø toaùn hoïc, nhaø trieát hoïc PHAÙP ôû theá kyû 17. Ngöôøi ñaõ cheá taïo ra kieåu maùy tính cô khí.
PASCAL ñöôïc coi laø moät ngoân ngöõ ñeïp nhaát trong hoï coå ñieån, laø moät trong nhöõng ngoân ngöõ maïnh, phoå bieán nhaát laø neàn taûng cho caùc moân laäp trình khaùc, coù nhieàu tính öu vieät.
Ngöôøi ta ñaõ nhaän thaáy raèng coù theå laäp trình moät caùch khoa hoïc, logic cho moät chöông trình cuï theå naøo ñoù döïa treân phaân tích caùc thuaät toaùn vaø suy dieãn toaùn hoïc.
IV.3.2.caùc öö ñieåmcuûa ngoân ngöõ PASCAL:
PASCAL coù theå thöïc hieän moät caùch chính xaùc caùc caáu truùc döõ lieäu phöùc taïp vaø caùc thuaät toaùn phöùc taïp.
PASCAL coù tính meàm deõo vaø tieän lôïi trong vieäc chia nhoû vaán ñeà ra giaûi quyeát ñoäc laäp. Coù ñuû caùc pheùp toaùn soá hoïc, logic,…Caùc kieåu döõ lieäu trong PASCAL phong phuù, theå hieän ñöôïc nhieàu kieåu döõ lieäu töø ñôn giaûn ñeán phöùc taïp.
Ngoân ngöõ PASCAL trôû thaønh ngoân ngöõ chính thoáng, ngoân ngöõ phoå bieán, ñöôïc duøng nhieàu trong tröôøng hoïc vaø caùc lónh vöïc khaùc.
IV.3.3.Turbo pascal:
Töø ngoân ngöõ PASCAL do giaùo sö WIRTH saùng taùc, caùc haõng phaàn meàn ñaõ phaùt trieån theâm vaø taïo ra caùc chöông trình dòch ngoân ngöõ PASCAL nhö:
OS PASCAL:Ñöôïc goïi laø PASCAL chuaån.
IBM PASCAL : Cuûa haõng Microsoft.
TURBO PASCAL : Cuûa haõng BORLAND.
Öu ñieåm cuûa TURBO PASCAL:
Tieän cho vieäc dòch lieân hoaøn vôùi vieäc soaïn thaûo, söûa chöõa .
Toác ñoä dòch nhanh.
Chöông trình dòch goïn, ñoøi hoûi ít boä nhôù, coù nhieàu haøm,nhieàu coâng cuï hoã trôï.
Laøm vieäc thoaûi maùi, coù hieäu quaû. Tính ñoái thoaïi ngöôøi vaø maùy phong phuù.
Giaûi quyeát haàu heát caùc baøi toaùn trong kyõ thuaät, thieát keá ñoà hoïa, quaûn lyù, xaây döïng caùc phaàn meàm heä thoáng.
Deã daïy vaø hoïc.
Luoân caûi tieán môû roäng vaø phaùt trieån khoâng ngöøng.
IV.4.Löu ñoå toång quaùt maïch quang baùo giao tieáp vôùi maùy tính:
Begin
NHAÄP CHUOÃI
ÑOÏC CHUOÃI 
MAÕ HOAÙ
XUAÁT DÖÕ LIEÄU
KIT NHAÄN DÖÕ LIEÄU
KIT THI HAØNH CHÖÔNG TRÌNH QUANG BAÙO
End
IV.4.1.Löu ñoà ñoïc chuoãi vaø maõ hoaù:
A 
B
A 
B
St[i+1]
Begin
i:=1
Nhaän daïng
Maõ hoùa
i:=i+2
Kieåmtra
chuoåi
End.
St[i+1]
Maõ hoùa
i:=i+1
Kieåm tra keát thuùc chuoåi
End
Maõ hoùa
i:=i+1
Kieåm tra keát thuùc chuoåi
End
MAÕ HOÙA
i:=i+2
Kieåm tra keát thuùc chuoåi
End 
1
2
3
4
a,e,u,o
6,7,8
A 
A 
A
St[i+1]
Begin
i:=1
Nhaän daïng
Maõ hoùa
i:=i+2
Kieåmtra
chuoåi
End.
St[i+1]
Maõ hoùa
i:=i+1
Kieåm tra keát thuùc chuoåi
End
Maõ hoùa
i:=i+1
Kieåm tra keát thuùc chuoåi
End
MAÕ HOÙA
i:=i+2
Kieåm tra keát thuùc chuoåi
End 
1
2
3
4
a,e,u,o
6,7,8
A 
A 
St[i+1]
Begin
i:=1
Nhaän daïng
Maõ hoùa
i:=i+2
Kieåmtra
chuoåi
End.
St[i+1]
Maõ hoùa
i:=i+1
Kieåm tra keát thuùc chuoåi
End
Maõ hoùa
i:=i+1
Kieåm tra keát thuùc chuoåi
End
MAÕ HOÙA
i:=i+2
Kieåm tra keát thuùc chuoåi
End 
1
2
3
4
a,e,u,o
6,7,8
A 
A 
¹5
5
Kieåmtra
Chuoãi
Kieåm tra keát thuùc chuoãi
C
D 
1
Maõ hoùa
i:=i+2
End.
St[i+1]
Maõ hoùa
i:=i+1
Kieåm tra keát thuùc chuoãi
End
Maõ hoùa
i:=i+1
Kieåm tra keát thuùc chuoãi
End
MAÕ HOÙA
i:=i+2
End 
Khoâng daáu
A 
C
A
A
A
9
Y,I
1-5
Khoâng daáu
Kieåm tra keát thuùc chuoåi
d
D 
2
Maõ hoùa
i:=i+2
End.
St[i+1]
Maõ hoùa
i:=i+1
Kieåm tra keát thuùc chuoåi
End
Maõ hoùa
i:=i+1
Kieåm tra keát thuùc chuoåi
End
MAÕ HOÙA
i:=i+2
End 
1-4
A 
d
A
A
A
M,N,O,P,C,T,Y,I,U
$
1-9
Kieåm tra keát thuùc chuoåi
Löu ñoà gôûi döõ lieäu cuûa maùy tính
	.Z80
	;--------------------------------;
	; RESET MAY VA DUA RA DAU NHAC ;
	;--------------------------------;
	ORG 0000H
	LD A,8BH
	LD (KEY_IO),A	; KHOI TAO 8255 I PORT A RA PORT C VAO
	LD A,81H
	LD (DIS_IO),A	; KHOI TAO 8255 II CA 3 PORT RA
	;--------------------------------;
	; HIEN THI DAU NHAC CUA HE THONG ;
	;--------------------------------;
	RESET:	LD HL,SYS_SP
	LD SP,HL
	LD A,01
	LD (ROLPAS),A
	LD A,00H
	LD (KEYFLG),A
	CALL RS164
	LD B,03H
	LD IX,DISBUF
	LD A,38H
	LP11:	LD (IX),A
	INC IX
	DJNZ LP11
	LD A,7CH
	LD (IX),A
	INC IX
	LD A,38H
	LD (IX),A
	INC IX
	LD A,10H
	LD (IX),A
	LD A,3EH
	;---------------------------------------------------;
	; D7,D6,D5(6),D4(5),D3(4),D2(3),D1(DEN 2),D0(DEN 1) ;
	;---------------------------------------------------;
	CALL CLRSCR
	LD IX,FUNSEL
	LD (MNPTR),IX
	LD HL,DISBUF	
	LD (DISPTR),HL
	MIT:	LD A,(VAO)
	CP 00H
	JR Z,PUT
	CP 01H
	JR Z,PUT
	CP 03H
	JP NDL
	CP 09H
	JP Z,PHAI
	CP 0AH
	JP Z,TRAI
	JR MIT
	;--------------------------------;
	; CHUONG TRINH RESET IC 74164 ;
	;--------------------------------;
	RS164:	LD B,81
 	LPRS:	LD A,00H
	LD (CKOUT),A	; CANH XUONG XUNG CK
	LD (DATAOUT),A
	CALL DLPUT
	LD A,01H	; CANH LEN XUNG CK
	LD (CKOUT),A
	DJNZ LPRS
	RET
	;--------------------------------;
	; CHUONG TRINH HIEN THI DU LIEU;
	; RA MA TRAN LED. CHUONG TRINH ;
	; NAY CO THE THUC HIEN DOC LAP ;
	; VUNG NHO DEM CHO DEN TU	 ;
	; DISBUF DEN DISBUF + 80	 ;
	;--------------------------------;
	PUT:	LD A,00H
	LD (CKOUT),A	; CANH XUONG XUNG CK
	LD A,02H	; DU LIEU DE DICH VAO IC 74164
	LD (CKOUT),A	
	LD A,03H	; CANH LEN XUNG CK
	LD (CKOUT),A
	LD D,80	; SO COT BANG QUANG BAO LA 80
	LD HL,(DISPTR)
	MUX:	LD A,(HL)
	LD (DATAOUT),A
	CALL DLPUT
	PUSH DE
	PUSH HL
	LD A,00H
	LD (KEY_OUT),A
	LD A,(KEY_IN)
	AND 01FH
	CP 01FH
	JR Z,LP002
	LD D,A
	LD A,00H
	LD (DATAOUT),A
	LD A,D
	CALL GET
	LP002:	LD HL,LP_1
	PUSH HL
	LD A,00
	LD (DATAOUT),A
	LD IX,(MNPTR)	; GOI CHUONG TRINH XU LY PHIM
 	JP (IX)
	LP_1:	POP HL
	POP DE
	DEC D
	JR Z,PUT
	INC HL
	LD A,00H
	LD (CKOUT),A 	; CANH XUONG XUNG CK
	CALL DLPUT0
	LD A,01H
	LD (CKOUT),A	; CANH LEN XUNG CK
	JR MUX
	;--------------------------------;
	; CHUONG TRINH LAY MA PHIM AN ;
	;--------------------------------;
	GET:	LD A,(KEY_IN)
	AND 1FH
	CP 1FH
	JR Z,DIDDLE
	LD B,00H	; B CHUA THU TU HANG CUA PHIM BI NHAN
	LPROW:	SRA A
	JR NC,ROWCOD
	INC B
	JR LPROW
ROWCOD:	SLA B
	SLA B
	SLA B
	LD A,B
	AND 38H
	LD IX,KEY
	LD(IX),A ;CHUA MA HANG VAO O NHO KEY
	LD A,07FH ;DO TIM COT CUA PHIM BI NHAN	
	LPCOL:	LD D,A
	LD (KEY_OUT),A
	LD A,(KEY_IN)
	AND 1FH
	CP 1FH
	JR NZ,COLFD
	LD A,D
	RRCA
	JR NC,DIDDLE
	JR LPCOL
	COLFD:	LD B,00H
	LD A,D
	COLCOD: RRCA
	JR NC,ROWCOL
	INC B
	JR COLCOD
	ROWCOL:	LD A,B
	AND 07H
	LD B,A
	LD A,(KEY)
	OR B
	LD D,A	; D CHUA MA HANG - COT CUA PHIM NHAN
	LPFD:	LD A,(KEY_IN)	; CHO BUONG PHIM MOI XU LY
	AND 01FH
	CP 01FH
	JR NZ,LPFD
	CALL DLKP	; CHONG DOI LUC NHA PHIM
	LD A,D
 LD IX,KEYTBL
	PUSH BC
	LD B,00H
	LD C,A
	ADD IX,BC
	LD A,(IX)
	LD (KEY),A	; KEY CHUA MA HECXA CUA PHIM BI NHAN
	LD A,01H	; SET CO BAO CO PHIM BANG 01
	LD (KEYFLG),A
	POP BC
	DIDDLE:	RET
	;--------------------------------;
	; 	 BANG TRA MA LED ;
	;--------------------------------;
	KEYTBL: DEFB 22H
	DEFB	25H
	DEFB	21H
	DEFB	26H
	DEFB	0AH
	DEFB	0BH
	DEFB	0CH
	DEFB	0DH
	DEFB	13H
	DEFB	15H
	DEFB	14H
	DEFB	12H
	DEFB	11H
	DEFB	10H
	DEFB	0FH
	DEFB	0EH
	DEFB	16H
	DEFB	17H
	DEFB	18H
	DEFB	00H
	DEFB	01H
	DEFB	02H
	DEFB	03H
	DEFB	23H
	DEFB	1CH
	DEFB	1BH
	DEFB	1AH
	DEFB	19H
	DEFB	04H
	DEFB	05H
	DEFB	06H
	DEFB	81H
	DEFB	1DH
	DEFB	1EH
	DEFB	1FH
	DEFB	20H
	DEFB	07H
	DEFB	08H
	DEFB	09H
	DEFB	80H
	;--------------------------------;
	; THI HANH CHUC NANG CUA PHIM ;
	;--------------------------------;
	FUNSEL:	LD A,(KEYFLG)	; BAO CO PHIM BI NHAN
	CP 01H
	JR Z,KEYNOW
	RET
	KEYNOW:	CALL RDKEY
	LD D,A
	AND 80H
	CP 80H
	JR Z,FUNKEY
	LD A,D
	AND 30H
	CP 00H
	JR NZ,DIDDLE
	LD A,D
	CALL ROLL4
	CALL DISCOD
	LD A,30H
	JP CLRSCR
	FUNKEY:	LD A,D
	CP 81H
	JP Z,GO
	CP 80H
	JP Z,MEM
	;--------------------------------;
	;	CHUONG TRINH ROLL4	 ;
	;--------------------------------;
	ROLL4:	PUSH BC
	PUSH HL
	LD HL,HEXBUF+1
	LD B,A
	LD A,(ROLPAS)	; KIEM TRA CO ROLPAS
	CP 01H
	JR NZ,R4TPAS	; LAN DAU TIEN KHONG ROLL
	LD A,00H
	LD (ROLPAS),A
	DEC HL
	LD (HL),A
	INC HL
	LD (HL),B
	JR R4OUT
	R4TPAS:	LD A,B
	RLD
	DEC HL
	RLD
	R4OUT:	POP HL
	POP BC
	RET
	;--------------------------------;
	;	CHUONG TRINH ROLL2	 ;
	;--------------------------------;
	ROLL2:	PUSH BC
	LD B,A
	LD A,(ROLPAS)
	CP 01H
	JR NZ,LPP2
	LD A,00H
	LD (ROLPAS),A
	LD A,B
	LD (HL),A
	JR R2OUT
	LPP2:	LD A,B
	RLD
	R2OUT:	POP BC
	RET
	;---------------------------------;
	; GIAI MA SO HEX RA MA TRAN CHU ;
	;---------------------------------;
	DISCOD:	PUSH BC
	PUSH IX
	PUSH HL
	PUSH IY
	LD B,03	; DOI 3 BYTE SO HECXA
	LD IX,HEXBUF+2
	LP01:	LD L,(IX)
	LD H,L
	SRL H
	SRL H
	SRL H
	SRL H
	LD A,L
	AND 0FH
	LD L,A
	PUSH HL	; H CHUA NIPPLE CAO L CHUA NIPPLE THAP
	DEC IX
	DEC B
	JR NZ,LP01
	LD IY,DISBUF
	LD B,03
	LP02:	POP HL
	CALL SUBDIS
	LD H,L
	CALL SUBDIS
	DJNZ LP02
	POP IY
	POP HL
	POP IX
	POP BC
	RET
	SUBDIS:	LD A,H
	LD IX,DISTBL
	CALL ADDAX
	PUSH BC
	LD B,06
	LP1_0:	LD A,(IX)
	LD (IY),A
	INC IY
	INC IX
	DJNZ LP1_0
	POP BC
	RET
	;--------------------------------;
	;	BANG TRA MA TRAN CHU ;
	;--------------------------------;
	DISTBL:	DEFB	38H	;CHU 0
	DEFB	44H
	DEFB	44H
	DEFB	44H
	DEFB	38H
	DEFB	00H
	DEFB	40H	;SO 1
	DEFB	48H
	DEFB	7CH
	DEFB	40H
	DEFB	40H
	DEFB	00H
	DEFB	48H	;SO 2
	DEFB	64H
	DEFB	54H
	DEFB	4CH
	DEFB	40H
	DEFB	00H
	DEFB	44H	;SO 3
	DEFB	44H
	DEFB	54H
	DEFB	54H
	DEFB	28H
	DEFB	00H
	DEFB	20H	;SO 4
	DEFB	30H
	DEFB	28H
	DEFB	24H
	DEFB	7CH
	DEFB	00H
	DEFB	5CH	;SO 5
	DEFB	54H
	DEFB	54H
	DEFB	54H
	DEFB	74H
	DEFB	00H
	DEFB	7CH	;SO 6
	DEFB	54H
	DEFB	54H
	DEFB	54H
	DEFB	74H
	DEFB	00H
	DEFB	04H	;SO 7
	DEFB	44H	
	DEFB	24H
	DEFB	14H
	DEFB	0CH
	DEFB	00H
	DEFB	7CH	;SO 8
	DEFB	54H
	DEFB	54H
	DEFB	54H
	DEFB	7CH
	DEFB	00H
	DEFB	5CH	 	;SO 9
	DEFB	54H
	DEFB	54H
	DEFB	54H
	DEFB	7CH
	DEFB	00H
	DEFB	70H	;CHU A
	DEFB	28H
	DEFB	24H
	DEFB	28H
	DEFB	70H
	DEFB	00H
	DEFB	7CH	;CHU B
	DEFB	54H
	DEFB	54H
	DEFB	54H
	DEFB	6CH
	DEFB	00H
	DEFB	38H	;CHU C
	DEFB	44H
	DEFB	44H
	DEFB	44H
	DEFB	28H
	DEFB	00H
	DEFB	7CH	;CHU D
	DEFB	44H
	DEFB	44H
	DEFB	44H
	DEFB	38H
	DEFB	00H
	DEFB	7CH	;CHU E
	DEFB	54H
	DEFB	54H
	DEFB	54H
	DEFB	44H
	DEFB	00H
	DEFB	7CH	;CHU F
	DEFB	14H
	DEFB	14H
	DEFB	14H
	DEFB	04H
	DEFB	00H
	;--------------------------------;
	; CHUONG TRINH TANG IX AX6 LAN ;
	;--------------------------------;
	ADDAX:	PUSH BC
	LD C,A
	LP0_2:	CP 00H
	JR Z,FINISH
	LD B,06H
	LP0_1:	INC IX
	DJNZ LP0_1
	DEC A
	JR LP0_2
	FINISH: LD A,C
	POP BC
	RET
	;--------------------------------;
	; CHUONG TRINH XOA DEN	 ;
	; CHUONG TRINH NAY KHI GOI PHAI ;
	; DAT VAO THANH GHI A GIA TRI ;
	; TUONG UNG VOI DEN CAN XOA ;
	;--------------------------------;
	CLRSCR:	PUSH IX
	PUSH DE
	PUSH BC
	LD D,06	; XOA NHIEU NHAT LA 6 DEN
	LD IX,DISBUF
	SCF	; SET CO CARRY BANG 1
	CCF	; DAT CO CARRY BANG 0
	CLR01:	LD B,06	; MOT KY TU CO 6 COT
	SRA A
	JR NC,CLR02
	LD E,00H
	CLR03:	LD (IX),E
	INC IX
	DJNZ CLR03
	DEC D
	JR NZ,CLR01
	JR CLR05
	CLR02:	INC IX
	DJNZ CLR02
	DEC D
	JR NZ,CLR01
	CLR05:	LD B,46
	CLR04:	LD (IX),E
	INC IX
	DJNZ CLR04
	POP BC
	POP DE
	POP IX
	RET
	;--------------------------------;
	; CHUONG TRINH DOC PHIM	 ;
	;--------------------------------;
	RDKEY:	LD A,00
	LD (KEYFLG),A
	LD A,(KEY)
	RET
	;--------------------------------;
	; CAC CHUONG TRINH DELAY	 ;
	;--------------------------------;
	DLKP:	PUSH HL
	LD HL,160FH
	JR LPDL
	DLPUT:PUSH HL
	LD HL,0FH	;08H
	JR LPDL
	DLPUT0: PUSH HL
	LD HL,01H	;03H
	LPDL:	DEC HL
	LD A,H
	CP 00H
	JR NZ,LPDL
	LD A,L
	CP 00H
	JR NZ,LPDL
	POP HL
	RET
	;--------------------------------;
	; THAY DOI NOI DUNG O NHO ;
	; XU LY PHIM MEM, LAN 1 LAY NOI ;
	; DUNG O NHO, LAN 2 GIAM DIA CHI ;
	; NHAN PHIM GO TANG DIA CHI	 ;
	;--------------------------------;
	MEM:	LD IX,MEMCH
	LD (MNPTR),IX
	LD IX,HEXBUF
	LD H,(IX)
	LD L,(IX+1)
	JR NEWMEM
	MEMCH:	LD A,(KEYFLG)
	CP 01H
	JR Z,MEMNOW
	RET
	MEMNOW:	CALL RDKEY
	LD D,A
	LD IX,HEXBUF
	LD H,(IX)
	LD L,(IX+1)
	AND 80H
	CP 80H
	JR NZ,NUM
	LD A,D
	CP 80H
	JR NZ,NXM1
	DEC HL
	JR NEWMEM
	NXM1:	LD A,D
	CP 81H
	JR NZ,MEMOUT
	INC HL
	JR NEWMEM
	NUM:	LD A,D
	CALL ROLL2
	JR MEMOUT
	NEWMEM:	LD A,01
	LD (ROLPAS),A
	MEMOUT:	LD A,(HL)
	LD (IX+2),A
	LD (IX),H
	LD (IX+1),L
	JP DISCOD
	;--------------------------------;
	; THI HANH CHUONG TRINH UNG DUNG ;
	;--------------------------------;
	GO:	LD IX,HEXBUF
	LD H,(IX)
	LD L,(IX+1)
	PUSH HL
	RET
	ORG 0400H
	;----------------------------------;
	; NHAP CHUOI CAN QUANG BAO ;
	; CHUOI NAY CHUA TAI DIA CHI 2000H ;
	;----------------------------------;
	CALL RS164
	LD A,01
	LD (ROLQB),A
	LD (CH_FLG),A
	LD A,0FFH
	CALL CLRSCR
	LD B,03H
	LD IX,DISBUF+79
	LD A,38H
	LP011:	LD (IX),A
	DEC IX
	DJNZ LP011
	LD A,7CH
	LD (IX),A
	DEC IX
	LD A,38H
	LD (IX),A
	DEC IX
	LD A,10H
	LD (IX),A
	LD A,55H
	LD (2000H),A
	LD (2001H),A
 	LD HL,2002H
	LD (ADISBUF),HL
	PUTQB:	LD A,00H
	LD (CKOUT),A	; CANH XUONG XUNG CK
	LD A,02H	; DU LIEU DE DICH VAO IC 74164
	LD (CKOUT),A	
	LD A,03H	; CANH LEN XUNG CK
	LD (CKOUT),A
	LD D,80	; SO COT BANG QUANG BAO LA 80
	LD HL,(DISPTR)
	MUXQB:	LD A,(HL)
	LD (DATAOUT),A
	CALL DLPUT
	PUSH DE
	PUSH HL
	LD A,00H
	LD (DATAOUT),A	; TAT DEN DO PHIM
	LD (KEY_OUT),A
	LD A,(KEY_IN)
	AND 01FH
	CP 01FH
	JR Z,LPQB002
	CALL GET0
	LPQB002:LD HL,LPQB_1
	PUSH HL
	LD IX,CH_QB	; GOI CHUONG TRINH XU LY PHIM
 	JP (IX)
	LPQB_1:	POP HL
	POP DE
	DEC D
	JR Z,PUTQB
	INC HL
	LD A,00H
	LD (CKOUT),A 	; CANH XUONG XUNG CK
	CALL DLPUT0
	LD A,01H
	LD (CKOUT),A	; CANH LEN XUNG CK
	JR MUXQB
	;------------------------------------------;
	; CHUONG TRINH LAY MA PHIM AN QUANG BAO ;
	;------------------------------------------;
	GET0:	LD A,(KEY_IN)
	AND 1FH
	CP 1FH
	JR Z,NOKEY
	LD B,00H	; B CHUA THU TU HANG CUA PHIM BI NHAN
	LPW0:	SRA A
	JR NC,RWD0
	INC B
	JR LPW0
 RWD0:	SLA B
	SLA B
	SLA B
	LD A,B
	AND 38H
	LD IX,KEY
	LD (IX),A	; CHUA MA HANG VAO O NHO KEY
	LD A,07FH	; DO TIM COT CUA PHIM BI NHAN
	LPC0:	LD D,A
	LD (KEY_OUT),A
	LD A,(KEY_IN)
	AND 1FH
	CP 1FH
	JR NZ,CLFD0
	LD A,D
	RRCA
	JR NC,NOKEY
	JR LPC0
	CLFD0:	LD B,00H
	LD A,D
	CLCD0:	RRCA
	JR NC,RWCL0
	INC B
	JR CLCD0
	RWCL0:	LD A,B
	AND 07H
	LD B,A
	LD A,(KEY)
	OR B
	LD D,A	; D CHUA MA HANG - COT CUA PHIM NHAN
	LPFD0:	LD A,(KEY_IN)	; CHO BUONG PHIM MOI XU LY
	AND 01FH
	CP 01FH
	JR NZ,LPFD0
	CALL DLKP	; CHONG DOI LUC NHA PHIM
	LD A,D
	LD (KEY),A	; KEY CHUA MA CUA PHIM BI NHAN
	LD A,01H	; SET CO BAO CO PHIM BANG 01
	LD (KEYFLG),A
	NOKEY:	RET
	;--------------------------------;
	; NHAP CHU CAN QUANG BAO ;
	;--------------------------------;
	CH_QB:	LD A,(KEYFLG)	; BAO CO PHIM BI NHAN
	CP 01H
	JR Z,KEYQB
	RET
	KEYQB:	CALL RDKEY
	CP 00H
	JR Z,SHIFT	;PHIM CHUYEN 
	CP 01
	JR Z,BACKSPACE	;PHIM KHOANG TRONG	
	PUSH AF
	LD A,(CH_FLG)
	CP 00H
	JR Z,BAN1
	LD IX,DTBLH	; BAN MA CHU HOA
	JR BAN2
	BAN1:	LD IX,DTBLT	; BAN MA CHU CO DAU
	BAN2:	POP AF
	LD IY,DISBUF+74
	PUSH HL
	PUSH BC
	CALL ADDAX
	CALL ROLL80
 LD HL,(ADISBUF)
	LD B,06H
	LOOP2:	LD A,(IX)
	LD (IY),A
	LD (HL),A
	INC IX
	INC HL
	INC IY
	DJNZ LOOP2
	LD (ADISBUF),HL
	LD A,55H	; MA NHAN DANG KET THUC CHUOI
	LD (HL),A
 	DEC HL
 	LD (DATAAD),HL
	POP BC
	POP HL
	RET
	SHIFT:	PUSH AF	;NUMLOCK
	LD A,(CH_FLG)
	CP 00H
	JR NZ,SH10
	LD A,01H
	LD (CH_FLG),A
	JR SH11
	SH10:	LD A,00H
	LD (CH_FLG),A
	SH11:	POP AF
	RET
 BACKSPACE: LD HL,(ADISBUF) 	;ENTER
	LD B,06
	BK0:	DEC HL
	DJNZ BK0
	LD A,55H
	LD (HL),A
	LD (ADISBUF),HL
	LD B,06
	BK1:	CALL ROLPQB
	DJNZ BK1
	RET
	;---------------------------------------;
	; CHUONG TRINH ROLL DU LIEU QUA 80 COT	;
	;---------------------------------------;
	ROLL80:	PUSH BC
	PUSH IX
	LD A,(ROLQB)
	CP 01
	JR Z,LP80
	LD B,160
	LD IX,DISBUF-80
	LOOP80:	LD A,(IX+6)
	LD (IX),A
	INC IX
	DJNZ LOOP80
	LP80:	LD A,00
	LD (ROLQB),A
	POP IX
	POP BC
	RET
	;--------------------------------;
	; BANG TRA MA TRAN CHU HOA ;
	;--------------------------------;
	DTBLH:DEFB	08H	;DAU CHAM HOI
	DEFB	04H
	DEFB	54H
	DEFB	0CH
	DEFB	00H
	DEFB	00H
	DEFB	00H	;CHU J
	DEFB 46H
	DEFB	3CH
	DEFB	04H
	DEFB	00H
	DEFB	00H
 	DEFB	7CH	;CHU W
	DEFB	20H
	DEFB	10H
	DEFB	20H
	DEFB 7CH
	DEFB 00H
	DEFB	44H	;CHU Z
	DEFB	64H
	DEFB	54H
	DEFB	4CH
	DEFB	44H
	DEFB	00H
	DEFB	70H	;CHU A
	DEFB	28H
	DEFB	24H
	DEFB	28H
	DEFB	70H
	DEFB	00H
	DEFB	7CH	;CHU B
	DEFB	54H
	DEFB	54H
	DEFB	54H
	DEFB	6CH
	DEFB	00H
	DEFB	38H	;CHU C
	DEFB	44H
	DEFB	44H
	DEFB	44H
	DEFB	28H
	DEFB	00H
	DEFB	7CH	;CHU D
	DEFB	44H
	DEFB	44H
	DEFB	44H
	DEFB	38H
	DEFB	00H
	DEFB	00H	;DAU CHAM THAN
	DEFB	00H
	DEFB	5CH
	DEFB	00H
	DEFB	00H
	DEFB	00H
	DEFB	7CH	;CHU L
	DEFB	40H
	DEFB	40H
	DEFB	40H
	DEFB	40H
	DEFB	00H
	DEFB	7CH	;CHU K
	DEFB	10H
	DEFB	28H
	DEFB	44H
	DEFB	00H
	DEFB	00H
	DEFB	44H	;CHU I
	DEFB	44H
	DEFB	7CH
	DEFB	44H
	DEFB	44H
	DEFB	00H
	DEFB	7CH	;CHU H
	DEFB	10H
	DEFB	10H
	DEFB	10H
	DEFB	7CH
	DEFB	00H
	DEFB	38H	;CHU G
	DEFB	44H
	DEFB	54H
	DEFB	54H
	DEFB	30H
	DEFB	00H
	DEFB	7CH	;CHU F
	DEFB	14H
	DEFB	14H
	DEFB	14H
	DEFB	04H
	DEFB	00H
	DEFB	7CH	;CHU E
	DEFB	54H
	DEFB	54H
	DEFB	54H
	DEFB	44H
	DEFB	00H
	DEFB	7CH	;CHU M
	DEFB	04H
	DEFB	18H
	DEFB	04H
	DEFB	7CH
	DEFB	00H
	DEFB	7CH	;CHU N
	DEFB	08H
	DEFB	10H
	DEFB	20H
	DEFB	7CH
	DEFB	00H
	DEFB	7CH	;CHU P
	DEFB	24H
	DEFB	24H
	DEFB	24H
	DEFB	18H
	DEFB	00H
	DEFB	38H	;CHU 0
	DEFB	44H
	DEFB	44H
	DEFB	44H
	DEFB	38H
	DEFB	00H
	DEFB	40H	;SO 1
	DEFB	48H
	DEFB	7CH
	DEFB	40H
	DEFB	40H
	DEFB	00H
	DEFB	48H	;SO 2
	DEFB	64H
	DEFB	54H
	DEFB	4CH
	DEFB	00H
	DEFB	40H
	DEFB	00H
	DEFB	44H	;SO 3
	DEFB	44H
	DEFB	54H
	DEFB	54H
	DEFB	28H
	DEFB	00H
	DEFB	00H	;KHOANG TRONG
	DEFB	00H
	DEFB	00H
	DEFB	00H
	DEFB	00H
	DEFB	00H
	DEFB	04H	;CHU T
	DEFB	04H
	DEFB	7CH
	DEFB	04H
	DEFB	04H
	DEFB	00H
	DEFB	48H	;CHU S
	DEFB	54H
	DEFB	54H
	DEFB	54H
	DEFB	24H
	DEFB	00H
	DEFB	7CH	;CHU R
	DEFB	14H
	DEFB	34H
	DEFB	54H
	DEFB	1CH
	DEFB	00H
	DEFB	38H	;CHU Q
	DEFB	44H
	DEFB	44H
	DEFB	64H
	DEFB	78H
	DEFB	00H
	DEFB	20H	;SO 4
	DEFB	30H
	DEFB	28H
	DEFB	24H
	DEFB	7CH
	DEFB	00H
	DEFB	5CH	;SO 5
	DEFB	54H
	DEFB	54H
	DEFB	54H
	DEFB	74H
	DEFB	00H
	DEFB	7CH	;SO 6
	DEFB	54H
	DEFB	54H
	DEFB	54H
	DEFB	74H
	DEFB	00H
	DEFB	40H ;DAU CHAM
	DEFB	00H
	DEFB	00H
	DEFB	00H
	DEFB	00H
	DEFB	00H
	DEFB	3CH	;CHU U
	DEFB	40H
	DEFB	40H
	DEFB	40H
	DEFB	3CH
	DEFB	00H
	DEFB	1CH	;CHU V
	DEFB	20H
	DEFB	40H
	DEFB	20H
	DEFB	1CH
	DEFB	00H
	DEFB	44H	;CHU X
	DEFB	28H
	DEFB	10H
	DEFB	28H
	DEFB	44H
	DEFB	00H
	DEFB	04H	;CHU Y
	DEFB	08H
	DEFB	70H
	DEFB	08H
	DEFB	04H
	DEFB	00H
	DEFB	04H	;SO 7
	DEFB	44H
	DEFB	24H
	DEFB	14H
	DEFB	0CH
	DEFB	00H
	DEFB	7CH	;SO 8
	DEFB	54H
	DEFB	54H
	DEFB	54H
	DEFB	7CH
	DEFB	00H
	DEFB	5CH	;SO 9
	DEFB	54H
	DEFB	54H
	DEFB	54H
	DEFB	7CH
	DEFB	00H
	DEFB	10H	;DAU -
	DEFB	10H
	DEFB	10H
	DEFB	10H
	DEFB	10H
	DEFB	00H
 ;---------------------------------------;
 ; BANG TRA MA TRAN CHU CO DAU ;
 ;---------------------------------------;
 DTBLT:	DEFB	00H	 ;CHUYEN CHU HOA CO DAU
	DEFB	00H
	DEFB	44H
	DEFB	00H
	DEFB	00H
	DEFB	00H
	DEFB	00H	 ;PHIM XOA KY TU
	DEFB 	20H
	DEFB	40H
	DEFB	3AH
	DEFB	00H
	DEFB	00H
	DEFB	70H	 ;CHÖÛ AÙ
	DEFB	28H
	DEFB	24H
	DEFB	26H
	DEFB	71H
	DEFB	00H
	DEFB	70H	; CHÖÛ AØ
	DEFB	28H
	DEFB	24H
	DEFB	29H
	DEFB	72H
	DEFB	00H
	DEFB	70H	;CHÖÛ AÂ
	DEFB	2AH
	DEFB	25H
	DEFB	2AH
	DEFB	70H
	DEFB	00H
	DEFB	70H	;CHÖÛ AÊ
	DEFB	29H
	DEFB	26H
	DEFB	29H
	DEFB	70H
	DEFB	00H
	DEFB	7EH	;CHÖÛ M SAÉT
	DEFB	05H
	DEFB	18H
	DEFB	04H
	DEFB	7CH
	DEFB	00H
	DEFB	7CH	;CHÖÛ Ñ
	DEFB	54H
	DEFB	44H
	DEFB	44H
	DEFB 38H
	DEFB	00H
	DEFB	00H	;DAÁU CHAÁM THANG
	DEFB	00H
	DEFB	5CH
	DEFB	00H
	DEFB	00H
	DEFB	00H
	DEFB	7DH	;CHÖÛ N HOÛI
	DEFB	0BH
	DEFB	10H
	DEFB	20H
	DEFB	7CH
	DEFB	00H
	DEFB	7DH	;CHÖÛ N HUYEÀN
	DEFB	0AH
	DEFB	10H
	DEFB	20H
	DEFB	7CH
	DEFB	00H
	DEFB	7EH	;CHÖÛ N SAÉT
	DEFB	09H
	DEFB	10H
	DEFB	20H
	DEFB	7CH
	DEFB	00H
	DEFB	7EH	;CHÖÛ M NGAÕ
	DEFB	05H
	DEFB	1AH
	DEFB	05H
	DEFB	7CH
	DEFB	00H
	DEFB	7DH	;CHÖÛ M HOÛI
	DEFB	07H
	DEFB	18H
	DEFB	04H
	DEFB	7CH
	DEFB	00H
	DEFB	7DH	;CHÖÛ M HUYEÀN
	DEFB	06H
	DEFB	18H
	DEFB	04H
	DEFB	7CH
	DEFB	00H
	DEFB	7CH	;CHÖÛ EÂ
	DEFB	56H
	DEFB	55H
	DEFB	56H
	DEFB	44H
	DEFB	00H
	DEFB	7EH	;CHÖÛ N NGAÕ
	DEFB	09H
	DEFB	12H
	DEFB	21H
	DEFB	7CH
	DEFB	00H
	DEFB	38H	;CHÖÛ Ô
	DEFB	44H
	DEFB	44H
	DEFB	45H
	DEFB	3BH
	DEFB	00H
	DEFB	38H	;CHÖÛ OÙ
	DEFB	44H
	DEFB	44H
	DEFB	46H
	DEFB	39H
	DEFB	00H
	DEFB	38H	;CHÖÛ OÂ
	DEFB	46H
	DEFB	45H
	DEFB	46H
	DEFB	38H
	DEFB	00H
	DEFB	02H	;DAÁU SAÉT
	DEFB 	01H
	DEFB	00H
	DEFB	00H
	DEFB	00H
	DEFB	00H
 	DEFB	01H	;DAÁU HUYEÀN
	DEFB	02H
	DEFB	00H
	DEFB	00H
	DEFB 00H
	DEFB 00H
	DEFB	01H	;DAÁU HOÛI
	DEFB	03H
	DEFB	00H
	DEFB	00H
	DEFB	00H
	DEFB	00H
	DEFB	00H	;KHOAÛNG TROÁNG
	DEFB	00H
	DEFB	00H
	DEFB	00H
	DEFB	00H
	DEFB	00H
	DEFB	3CH	;CHÖÛ UÙ
	DEFB	40H
	DEFB	40H
	DEFB	42H
	DEFB	3DH
	DEFB	00H
	DEFB	38H	;CHÖÛ OÕ
	DEFB	46H
	DEFB	45H
	DEFB	46H
	DEFB	39H
	DEFB	00H
	DEFB	38H	;CHÖÛ OÛ
	DEFB	45H
	DEFB	47H
	DEFB	44H
	DEFB 38H
	DEFB	00H
	DEFB	38H ;CHÖÛ OØ
	DEFB	44H
	DEFB	44H
	DEFB	45H
	DEFB	3AH
	DEFB	00H
	DEFB	02H	;DAÁU NGAÕ
	DEFB	01H
	DEFB	02H
	DEFB	01H
	DEFB	00H
	DEFB	00H
	DEFB	80H	;DAÁU NAËNG
	DEFB	00H
	DEFB	00H
	DEFB	00H
	DEFB	00H
	DEFB	00H
	DEFB	06H	;CHÖÛ YÙ
	DEFB	09H
	DEFB	70H
	DEFB	08H
	DEFB	04H
	DEFB	00H
	DEFB	0C0H	;DAÁU CHAÁM
	DEFB	0C0H
	DEFB	00H
	DEFB	00H
	DEFB	00H
	DEFB	00H
	DEFB	3CH	;CHÖÛ Ö
	DEFB	40H
	DEFB 40H
	DEFB	41H
	DEFB	3FH
	DEFB	00H
	DEFB	3CH	;CHÖÛ UØ
	DEFB	40H
	DEFB	41H
	DEFB	42H
	DEFB	3CH
	DEFB	00H
	DEFB	3CH	;CHÖÛ UÛ
	DEFB	40H
	DEFB	41H
	DEFB	43H
	DEFB	3CH
	DEFB	00H
	DEFB	3CH	;CHÖÛ UÕ
	DEFB	42H
	DEFB	41H
	DEFB	42H
	DEFB	3DH
	DEFB	00H
	DEFB	05H	;CHÖÛ YØ
	DEFB	0AH
	DEFB	70H
	DEFB	08H
	DEFB	04H
	DEFB	00H
	DEFB	05H	;CHÖÛ YÛ
	DEFB	0BH
	DEFB	70H
	DEFB	08H
	DEFB	04H
	DEFB	00H
	DEFB	06H	;CHÖÛ YÕ
	DEFB	09H
	DEFB	72H
	DEFB	09H
	DEFB	04H
	DEFB	00H
	DEFB	10H	;DAÁU -
	DEFB	10H
	DEFB	10H
	DEFB	10H
	DEFB	10H
	DEFB	00H
	ORG 0800H
	;------------------------------------;
	; CHUONG TRINH QUANG BAO	 ;
	; CHO CHU CHAY XUOI TU TRAI QUA PHAI ;
	;------------------------------------;
	PHAI:	CALL RS164
	LD A,0FFH
	CALL CLRSCR
	LD A,80H
	LD (VAO),A
	LD HL,(DATAAD)
	LD (ADATA),HL
	LD HL,QU_BAO
	LD (MNPTR),HL
	LD HL,DELAYVAL
	LD (DELAYMEM),HL
	LD A,00
	LD (ZEROPAS),A
	JP PUT
	QU_BAO:	LD HL,(DELAYMEM)
	DEC HL
	LD (DELAYMEM),HL
	LD A,H
	OR L
	CP 00H
	JP NZ,RETURN
	LD HL,DELAYVAL
	LD (DELAYMEM),HL
	CALL ROLPQB
	LD A,(ZEROPAS)
	CP 01
	JP Z,ZERODATA
	CALL DATAP
	RETURN:	RET
	DATAP: 	LD IX,DISBUF
	LD IY,(ADATA)
	LD A,(IY)
	CP 55H
	JR Z,QBPRS
	LD (IX),A
	DEC IY
	LD (ADATA),IY
	RET
	QBPRS:	LD A,01H
	LD (ZEROPAS),A
	LD (ZEROTIME),A
 LD IX,DISBUF
	LD A,00
	LD (IX),A
	RET
 ZERODATA:	LD A,(ZEROTIME)
	INC A
	CP 81
	JR Z,DATARESET
	LD (ZEROTIME),A
 LD IX,DISBUF
	LD A,00
	LD (IX),A
	RET
 DATARESET: LD HL,(DATAAD)
	LD (ADATA),HL
	LD HL,DELAYVAL
	LD (DELAYMEM),HL
	LD A,00
	LD (ZEROPAS),A
	LD A,0FFH
	CALL CLRSCR
	LD A,00H
	LD (VAO),A
	RET
	ORG 0A00H
	;------------------------------------;
	; CHUONG TRINH QUANG BAO	 ;
	; CHO CHU CHAY XUOI TU PHAI QUA TRAI ;
	;------------------------------------;
	TRAI:	CALL RS164
	LD A,0FFH
	CALL CLRSCR
	LD A,40H
	LD (VAO),A
	LD HL,2002H
	LD (ADATA),HL
	LD HL,Q_BAO
	LD (MNPTR),HL
	LD HL,DELAYVAL
	LD (DELAYMEM),HL
	LD A,00H
	LD (ZEROPAS),A
	JP PUT
	Q_BAO:	LD HL,(DELAYMEM)
	DEC HL
	LD (DELAYMEM),HL
	LD A,H
	OR L
	CP 00H
	JP NZ,RETURN
	LD HL,DELAYVAL
	LD (DELAYMEM),HL
	CALL ROLTQB
	LD A,(ZEROPAS)
	CP 01
	JP Z,TZERODATA
	CALL DATAT
	RET
	DATAT: 	LD IX,DISBUF+79
	LD IY,(ADATA)
	LD A,(IY)
	CP 55H
	JP Z,QBPRS
	LD (IX),A
	INC IY
	LD (ADATA),IY
	RET
 TZERODATA:	LD A,(ZEROTIME)
	INC A
	CP 81
	JR Z,TDATARESET
	LD (ZEROTIME),A
	LD A,00
	LD (IX),A
	RET
 TDATARESET: LD HL,2002H
	LD (ADATA),HL
	LD HL,DELAYVAL
	LD (DELAYMEM),HL
	LD A,00
	LD (ZEROPAS),A
	LD A,0FFH
	CALL CLRSCR
	LD A,00H
	LD (VAO),A
	RET
	;---------------------------------------;
	; CHUONG TRINH ROLL DU LIEU QUA 80 COT	;
	; CHUONG TRINH NAY DUNG CHO QUANG BAO	;
	;---------------------------------------;
	ROLPQB:	PUSH BC	; ROLL PHAI QUANG BAO
	PUSH IX
	LD B,160
	LD IX,DISBUF
	LQBP80:	LD A,(IX+78)
	LD (IX+79),A
	DEC IX
	DJNZ LQBP80
	POP IX
	POP BC
	RET
	;---------------------------------------;
	; CHUONG TRINH ROLL DU LIEU QUA 80 COT	;
	; CHUONG TRINH NAY DUNG CHO QUANG BAO	;
	;---------------------------------------;
	ROLTQB:	PUSH BC	; ROLL TRAI QUANG BAO
	PUSH IX
	LD B,80
	LD IX,DISBUF
	LQBT80:	LD A,(IX+1)
	LD (IX),A
	INC IX
	DJNZ LQBT80
	POP IX
	POP BC
	RET
	ORG 0C00H
	;------------------------;
	;CHUONG TRINH DONG HO SO ;
	;------------------------;
	LD HL,CLOCK
	LD (MNPTR),HL
	LD A,00
	LD (MINUTE),A
	LD (SECOND),A
	LD (HOUR),A
	LD HL,DELAYVAL
	LD (DELAYMEN),HL
	JP PUT
	CLOCK:	LD HL,(DELAYMEN)
	DEC HL
	LD (DELAYMEN),HL
	LD A,H
	OR L
	JP NZ,RETDH
	LD HL,DELAYVAL+0F00H
	LD (DELAYMEN),HL
	LD A,(SECOND)
	CALL TANG
	LD (SECOND),A
	CP 60H
	JP NZ,RETCK
	LD A,00H
	LD (SECOND),A
	LD A,(MINUTE)
	CALL TANG
	LD (MINUTE),A
	CP 60H
	JP NZ,RETCK
	LD A,00H
	LD (MINUTE),A
	LD A,(HOUR)
	CALL TANG
	LD (HOUR),A
 	CP 24H
	JP NZ,RETCK
	LD A,00H
	LD (HOUR),A
	RETCK:	LD A,(HOUR)
	LD (HEXBUF),A
	LD A,(MINUTE)
	LD (HEXBUF + 1),A
	LD A,(SECOND)
	LD (HEXBUF + 2),A
	CALL DISCODE
	RETDH:	RET
	TANG:	INC A
	LD B,A
	AND 0FH
	CP 0AH
	JP NZ,NO
	LD A,B
	ADD A,06H
	LD B,A
	 NO:	LD A,B
 	RET
	;--------------------------------;
	;CHUONG TRINH NHAN DU LIEU	;
	;--------------------------------;
	NDL:	LD A,81H
	LD (DIS_IO),A
	LD A,55H
	LD (2000H),A
	LD (2001H),A
	LD HL,2002H
	LD A,10H
	LD (VAO),A
	LD A,00H
	LD (VAO),A
	TUAN:	LD A,20H
	LD (VAO),A
	TUAN1:	LD A,(VAO)
	AND 01H
	JR NZ,TUAN1
	LD A,00H
	LD (VAO),A
	LD A,10H
	LD (VAO),A
	LD A,(DATAIN)
	LD (HL),A
	LD A,00H
	LD (VAO),A
	LD A,(HL)
	CP 55H
	JR NZ,TUAN2
	LD A,20H
	LD (VAO),A
	LD A,00H
	LD (VAO),A
	CALL RESET
	RET
	TUAN2:	INC HL
	JR TUAN
	;--------------------------------;
	; VUNG NHO HUU DUNG 2000H-3C00H	 ;
	;--------------------------------;
	; CAC NHAN SU DUNG	 ;
	;--------------------------------;
	KEY_IO EQU 6003H
	DATAIN	 EQU 6001H
	DATAOUT EQU 8000H
	KEY_IN EQU 6002H
	KEY_OUT EQU 6000H
	DIS_IO EQU 8003H
	CKOUT EQU 8001H
	SYS_SP EQU 3C02H
	MNPTR EQU 3CF2H
	ZEROPAS EQU 3CF9H
	ZEROTIME EQU 3CFCH
	KEY EQU 3D00H
	DISBUF EQU 3E00H
	HEXBUF EQU 3FD0H
	ADISBUF EQU 3FDFH
	ROLPAS EQU 3FE2H
 DATAAD EQU 3FE5H
	ROLQB	 EQU 3FE8H
	KEYFLG EQU 3FEBH
	CH_FLG EQU 3FEEH
	DISPTR EQU 3FF1H
	DELAYMEM EQU 3FF4H
	ADATA	 EQU 3FF7H
	HOUR EQU 3FFAH
	MINUTE EQU 3FFCH
	SECOND EQU 3FFEH
	DELAYVAL EQU 0309H
	VAO	 EQU 8002H
	;--------------------------------;
	;	 KET THUC	 ;
	;--------------------------------;
	END
program vd;
uses crt;
const
 chu: array[1..111,1..6] of byte =
 (($70,$28,$24,$28,$70,$00), {A} {1}
 ($70,$28,$24,$2A,$71,$00), {A1} {2}
 ($70,$28,$24,$29,$72,$00), {A2} {3}
 ($70,$28,$24,$29,$73,$00), {A3} {4}
 ($70,$2A,$25,$2A,$71,$00), {A4} {5}
 ($70,$28,$A4,$28,$70,$00), {A5} {6}
 ($70,$2A,$25,$2A,$70,$00), {A6} {7}
 ($70,$2A,$A5,$2A,$70,$00), {A65} {8}
 ($70,$29,$26,$29,$70,$00), {A8} {9}
 ($70,$29,$A6,$29,$70,$00), {A85} {10}
 ($72,$29,$24,$28,$70,$00), {1A} {11}
 ($71,$2A,$24,$28,$70,$00), {2A} {12}
 ($71,$2B,$2A,$28,$70,$00), {3A} {13}
 ($72,$29,$26,$29,$70,$00), {4A} {14}
 ($7c,$54,$54,$58,$20,$00), {B} {15}
 ($38,$44,$44,$44,$28,$00), {C} {16}
 ($3A,$45,$44,$44,$28,$00), {1C} {17}
 ($7c,$44,$44,$44,$38,$00), {D} {18}
 ($7C,$54,$54,$44,$38,$00), {D9} {19}
 ($7c,$54,$54,$54,$44,$00), {E} {20}
 ($7C,$56,$45,$46,$44,$00), {E6} {21}
 ($7C,$56,$D5,$56,$44,$00), {E65} {22}
 ($7c,$14,$14,$14,$04,$00), {F} {23}
 ($38,$44,$54,$54,$30,$00), {G} {24}
 ($7c,$10,$10,$10,$7c,$00), {H} {25}
 ($44,$44,$7c,$44,$44,$00), {I} {26}
 ($44,$44,$7C,$46,$45,$00), {I1} {27}
 ($44,$45,$7E,$44,$44,$00), {I2} {28}
 ($44,$45,$7F,$44,$44,$00), {I3} {29}
 ($46,$45,$7E,$45,$44,$00), {I4} {30}
 ($44,$44,$FC,$44,$44,$00), {I5} {31}
 ($46,$45,$7C,$44,$44,$00), {1I} {32}
 ($45,$46,$7C,$44,$44,$00), {2I} {33}
 ($45,$47,$7C,$44,$44,$00), {3I} {34}
 ($46,$45,$7E,$45,$44,$00), {4I} {35}
 ($44,$44,$3C,$04,$04,$00), {J} {36}
 ($7c,$10,$28,$44,$00,$00), {K} {37}
 ($7c,$40,$40,$40,$40,$00), {L} {38}
 ($7c,$04,$18,$04,$7c,$00), {M} {39}
 ($7E,$05,$18,$04,$7C,$00), {1M} {40}
 ($7D,$06,$18,$04,$7c,$00), {2M} {41}
 ($7D,$07,$18,$04,$7C,$00), {3M} {42}
 ($7E,$05,$1A,$05,$7c,$00), {4M} {43}
 ($7c,$08,$10,$20,$7c,$00), {N} {44}
 ($7E,$09,$10,$20,$7C,$00), {1N} {45}
 ($7D,$0A,$10,$20,$7c,$00), {2N} {46}
 ($7D,$0B,$10,$20,$7C,$00), {3N} {47}
 ($7E,$09,$12,$21,$7C,$00), {4N} {48}
 ($38,$44,$44,$44,$38,$00), {O} {49}
 ($38,$44,$44,$46,$39,$00), {O1} {50}
 ($38,$44,$44,$45,$3A,$00), {O2} {51}
 ($38,$44,$44,$45,$3B,$00), {O3} {52}
 ($38,$46,$45,$46,$39,$00), {O4} {53}
 ($38,$44,$C4,$44,$38,$00), {O5} {54}
 ($38,$46,$45,$46,$38,$00), {O6} {55}
 ($38,$46,$C5,$46,$38,$00), {O65} {56}
 ($38,$45,$47,$44,$38,$00), {O7} {57}
 ($38,$45,$c7,$44,$38,$00), {O75} {58}
 ($7c,$24,$24,$24,$18,$00), {P} {59}
 ($7E,$45,$44,$44,$18,$00), {1P} {60}
 ($7D,$46,$44,$44,$18,$00), {2P} {61}
 ($38,$44,$54,$64,$78,$00), {Q} {62}
 ($7c,$14,$34,$54,$5C,$00), {R} {63}
 ($08,$54,$54,$54,$20,$00), {S} {64}
 ($04,$04,$7c,$04,$04,$00), {T} {65}
 ($06,$05,$7C,$04,$04,$00), {1T} {66}
 ($3c,$40,$40,$40,$3c,$00), {U} {67}
 ($3C,$40,$40,$42,$3D,$00), {U1} {68}
 ($3C,$40,$41,$42,$3C,$00), {U2} {69}
 ($3C,$40,$41,$43,$3C,$00), {U3} {70}
 ($3C,$42,$41,$42,$3D,$00), {U4} {71}
 ($3C,$40,$c0,$40,$3C,$00), {U5} {72}
 ($3C,$40,$40,$41,$3F,$00), {U7} {73}
 ($3C,$40,$C0,$41,$3F,$00), {U75} {74}
 ($3E,$41,$40,$40,$3C,$00), {1U} {75}
 ($3D,$42,$40,$40,$3C,$00), {2U} {76}
 ($3D,$43,$40,$40,$3C,$00), {3U} {77}
 ($3E,$41,$42,$41,$3C,$00), {4U} {78}
 ($1c,$20,$40,$20,$1c,$00), {V} {79}
 ($7C,$20,$10,$20,$7C,$00), {W} {80}
 ($44,$28,$10,$28,$44,$00), {X} {81}
 ($04,$08,$70,$08,$04,$00), {Y} {82}
 ($06,$09,$70,$08,$04,$00), {1Y} {83}
 ($05,$0A,$70,$08,$04,$00), {2Y} {84}
 ($05,$0B,$70,$08,$04,$00), {3Y} {85}
 ($06,$09,$72,$09,$04,$00), {4Y} {86}
 ($44,$64,$54,$4C,$44,$00), {Z} {87}
 ($38,$44,$44,$44,$38,$00), {0} {88}
 ($50,$48,$7C,$40,$40,$00), {1} {89}
 ($48,$64,$54,$4C,$00,$00), {2} {90}
 ($44,$44,$54,$54,$28,$00), {3} {91}
 ($20,$30,$28,$24,$7C,$00), {4} {92}
 ($5C,$54,$54,$54,$74,$00), {5} {93}
 ($7C,$54,$54,$54,$74,$00), {6} {94}
 ($04,$44,$24,$14,$0C,$00), {7} {95}
 ($7C,$54,$54,$54,$7C,$00), {8} {96}
 ($5C,$54,$54,$54,$7C,$00), {9} {97}
 ($00,$00,$00,$00,$00,$00), { } {98}
 ($40,$00,$00,$00,$00,$00), {.} {99}
 ($00,$10,$10,$10,$00,$00), {-} {100}
 ($08,$04,$54,$0C,$00,$00), {?} {101}
 ($00,$00,$5C,$00,$00,$00), {!} {102}
 ($00,$00,$28,$00,$00,$00), {:} {103}
 ($02,$01,$00,$00,$00,$00), {/} {104}
 ($01,$02,$00,$00,$00,$00), {\} {105}
 ($01,$03,$00,$00,$00,$00), {'} {106}
 ($02,$01,$02,$01,$00,$00), {~} {107}
 ($04,$08,$70,$0A,$05,$00), {y1} {108}
 ($04,$08,$71,$0A,$04,$00), {y2} {109}
 ($04,$08,$71,$0B,$04,$00), {y3} {110}
 ($04,$0A,$71,$0A,$05,$00)); {y4} {111}
 var i,n,k:integer;x,h:byte;ch:char;st:string;
 {--------------------------}
 procedure cua_so;
 var x,y,rong,cao:word;origmode,lastrow:word;done:boolean;
 Begin
 rong :=20;
 cao := 44;
 X:=5;
 Y:=4;
 begin
 textbackground(white);
 textcolor(black);
 clrscr;
 gotoxy(35,6);
 window (X,Y,x+rong,y+caO);
 textbackground(BLUE);
 textcolor(white);
 end;
 readln;
 end;
 {-------------------------------}
procedure test;
 var x,t:integer;ch:char;
begin
clrscr;
 repeat
 t:= port[$379] and $40;
 if t=$40 then
 begin
 gotoxy(25,2);
 textcolor(yellow);
 writeln('CHUA CAM DAY CONG MAY IN & KIT Z80');
 delay(65);
 clrscr;
 end;
 if t$40 then
 begin
 gotoxy(25,2);
 writeln('DA NOI DAY CONG MAY IN & KIT Z80');
 delay(65);
 gotoxy(25,3);
 writeln('NHAN PHIM ">" DE NHAP NOI DUNG QUANG BAO');
 delay(65);
 end;
 until keypressed;
 end;
 {------------------------------}
 procedure bat_tay1;
 begin
 repeat
 x:=port[$379] and $40;
 until x=$00;
 repeat
 x:=port[$379]and $80;
 until x=$00;
 end;
 {--------------------------------}
 procedure bat_tay2;
 begin
 port[$37A]:=$0B;
 repeat
 x:=port[$379]and $40;
 until x=$40;
 port[$37A]:=$0A;
 repeat
 x:=port[$379] and $40;
 until x=$00;
 n:=n+1;
 end;
{--------------------------------}
procedure xuat( var h:byte);
 var x:integer;
begin
 i:=1;
 n:=0;
repeat
 case upcase(st[i]) of
 '$':case upcase(st[i+1]) of
 '0':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[88,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 '1':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[89,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 '2':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[90,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 '3':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[91,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 '4':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[92,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 '5':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[93,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 '6':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[94,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 '7':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[95,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 '8':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[96,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 '9':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[97,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 else
 i:=i+1;
 end;
 'A':case upcase(st[i+1]) of
 '1':
 begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[2,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 '2':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[3,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 '3':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[4,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 '4':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[5,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 '5':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[6,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 '6': case upcase(st[i+2]) of
 '5':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[8,k];
 bat_tay2;
 end;
 i:=i+3;
 end;
 else
 begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[7,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 end;
 '8': case upcase(st[i+2]) of
 '5':
 begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[10,k];
 bat_tay2;
 end;
 i:=i+3;
 end;
 else
 begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[9,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 end;
 else
 begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[1,k];
 bat_tay2;
 end;
 i:=i+1;
 end;
 end;
 'B': begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[15,k];
 bat_tay2;
 end;
 i:=i+1;
 end;
 'C': begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[16,k];
 bat_tay2;
 end;
 i:=i+1;
 end;
 'D':case upcase(st[i+1]) of
 '9': begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[19,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 else
 begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[18,k];
 bat_tay2;
 end;
 i:=i+1;
 end;
 end;
 'E':case upcase(st[i+1]) of
 '6':case upcase(st[i+2]) of
 '5': begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[22,k];
 bat_tay2;
 end;
 i:=i+3;
 end;
 else
 begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[21,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 end;
 else
 begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[20,k];
 bat_tay2;
 end;
 i:=i+1;
 end;
 end;
 'F':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[23,k];
 bat_tay2;
 end;
 i:=i+1;
 end;
 'G':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[24,k];
 bat_tay2;
 end;
 i:=i+1;
 end;
 'H':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[25,k];
 bat_tay2;
 end;
 i:=i+1;
 end;
 'I':case upcase(st[i+1]) of
 '1':
 begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[27,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 '2':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[28,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 '3':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[29,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 '4':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[30,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 '5':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[31,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 else
 begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[26,k];
 bat_tay2;
 end;
 i:=i+1;
 end;
 end;
 'J':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[36,k];
 bat_tay2;
 end;
 i:=i+1;
 end;
 'K':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[37,k];
 bat_tay2;
 end;
 i:=i+1;
 end;
 'L':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[38,k];
 bat_tay2;
 end;
 i:=i+1;
 end;
 'M':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[39,k];
 bat_tay2;
 end;
 i:=i+1;
 end;
 'N':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[44,k];
 bat_tay2;
 end;
 i:=i+1;
 end;
 'O':case upcase(st[i+1]) of
 '1':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[50,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 '2':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[51,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 '3':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[52,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 '4':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[53,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 '5':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[54,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 '6': case upcase(st[i+2]) of
 '5':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[56,k];
 bat_tay2;
 end;
 i:=i+3;
 end;
 else
 begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[55,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 end;
 '7': case upcase(st[i+2]) of
 '5':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[58,k];
 bat_tay2;
 end;
 i:=i+3;
 end;
 else
 begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[57,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 end;
 else
 begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[49,k];
 bat_tay2;
 end;
 i:=i+1;
 end;
 end;
 'P':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[59,k];
 bat_tay2;
 end;
 i:=i+1;
 end;
 'Q':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[62,k];
 bat_tay2;
 end;
 i:=i+1;
 end;
 'R':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[63,k];
 bat_tay2;
 end;
 i:=i+1;
 end;
 'S':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[64,k];
 bat_tay2;
 end;
 i:=i+1;
 end;
 'T':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[65,k];
 bat_tay2;
 end;
 i:=i+1;
 end;
 'U':case upcase(st[i+1]) of
 '1':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[68,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 '2':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[69,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 '3':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[70,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 '4':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[71,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 '5':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[72,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 '7': case upcase(st[i+2]) of
 '5':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[74,k];
 bat_tay2;
 end;
 i:=i+3;
 end;
 else
 begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[73,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 end;
 else
 begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[67,k];
 bat_tay2;
 end;
 i:=i+1;
 end;
 end;
 'V':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[79,k];
 bat_tay2;
 end;
 i:=i+1;
 end;
 'W':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[80,k];
 bat_tay2;
 end;
 i:=i+1;
 end;
 'X':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[81,k];
 bat_tay2;
 end;
 i:=i+1;
 end;
 'Y':begin
 case upcase(st[i+1]) of
 '1':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[108,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 '2':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[109,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 '3':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[110,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 '4':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[111,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 else
 begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[82,k];
 bat_tay2;
 end;
 i:=i+1;
 end;
 end;
 end;
 'Z':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[87,k];
 bat_tay2;
 end;
 i:=i+1;
 end;
 '1':case upcase(st[i+1]) of
 'A':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[11,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 'C':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[17,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 'I':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[32,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 'M':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[40,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 'N':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[45,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 'P':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[60,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 'T':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[66,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 'U':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[75,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 'Y':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[83,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 else;
 i:=i+1;
 end;
 '2':case upcase(st[i+1]) of
 'A':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[12,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 'I':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[33,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 'M':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[41,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 'P':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[61,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 'N':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[46,k];
 bat_tay2;
 end;
 i:=i+2
 end;
 'U':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[76,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 'Y':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[84,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 else;
 i:=i+1;
 end;
 '3':case upcase(st[i+1]) of
 'A':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[13,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 'I':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[34,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 'M':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[42,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 'N':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[47,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 'U':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[77,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 'Y':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[85,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 else
 i:=i+1;
 end;
 '4':case upcase(st[i+1]) of
 'A':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[14,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 'I':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[35,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 'M':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[43,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 'N':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[48,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 'U':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[78,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 'Y':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[86,k];
 bat_tay2;
 end;
 i:=i+2;
 end;
 else
 i:=i+1;
 end;
 ' ':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[98,k];
 bat_tay2;
 end;
 i:=i+1;
 end;
 '.':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[99,k];
 bat_tay2;
 end;
 i:=i+1;
 end;
 ':':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[103,k];
 bat_tay2;
 end;
 i:=i+1;
 end;
 '-':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[100,k];
 bat_tay2;
 end;
 i:=i+1;
 end;
 '?':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[101,k];
 bat_tay2;
 end;
 i:=i+1;
 end;
 '!':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[102,k];
 bat_tay2;
 end;
 i:=i+1;
 end;
 '/':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[104,k];
 bat_tay2;
 end;
 i:=i+1;
 end;
 '\':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[105,k];
 bat_tay2;
 end;
 i:=i+1;
 end;
 '"':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[106,k];
 bat_tay2;
 end;
 i:=i+1;
 end;
 '~':begin
 for k:=1 to 6 do
 begin
 bat_tay1;
 port[$378]:=chu[107,k];
 bat_tay2;
 end;
 i:=i+1;
 end;
 else
 halt;
 end;
 until (i=length(st)+1) or(keypressed) ;
 repeat
 x:=port[$379]and $80;
 until x=$00;
 port[$378]:=$55;
 port[$37A]:=$0B;
 repeat
 x:=port[$379]and $80;
 until x=$80;
 repeat
 x:=port[$379] and $C0;
 until x=$C0;
 port[$37A]:=$0A;
 repeat
 x:=port[$379] and $80;
 until x=$80;
 repeat
 x:=port[$379]and $80;
 until x=$00;
 port[$378]:=$00;
 end;
 {--------------------------------------}
 PROCEDURE NHAP;
 begin
 CLRSCR;
 test;
 cua_so;
 repeat
 x:=port[$379] and $40;
 until x=$00;
 gotoxy(25,2);
 writeln('********************************');
 gotoxy(25,3);
 writeln('* NHAP CHU HIEN THI QUANG BAO *');
 gotoxy(25,4);
 writeln('*===============*==============*');
 gotoxy(25,5);
 writeln('*NHAP CHU CO DAU THEO FONT VNI *');
 gotoxy(25,6);
 writeln('*===============*==============*');
 gotoxy(25,7);
 writeln('********************************');
 gotoxy(25,9);
 readln(st);
 xuat(h);
 repeat
 x:=port[$379] and $80;
 until x=$00;
 gotoxy(25,11);
 clrscr;
 gotoxy(25,7);
 writeln('NHAN FIM > KIT Z80 ');
 gotoxy(25,8);
 writeln('NHAN FIM > CHON TIEP');
 end;
{--------------------------------------}
 procedure chay_phai;
 begin
 clrscr;
 gotoxy(25,4);
 writeln('CHUONG TRINH CHAY PHAI XONG');
 end;
 {--------------------------------------}
 procedure chay_trai;
 begin
 clrscr;
 repeat
 x:= port[$379] and $20;
 until x=$20;
 repeat
 x:=port[$379] and $80;
 until x=$80;
 gotoxy(25,4);
 writeln('CHUONG TRINH CHAY TRAI XONG');
 end;
 {--------------------------------------}
 procedure xem_so_byte_truyen;
 begin
 clrscr;
 gotoxy(25,3);
 writeln('SO BYTE TRUYEN DUOC:',n:3,'BYTE');
 gotoxy(25,4);
 writeln('DU LIEU DA XONG > CHON TIEP');
 end;
 {--------------------------------------}
 procedure thoat;
 begin
 clrscr;
 gotoxy(25,2);
 writeln('BAN CO CHAC LA THOAT KHONG "<<(c,C)/(k,K))"?:');
 gotoxy(25,3);
 writeln('CO: NHAN ">" ');
 gotoxy(25,4);
 writeln('KHONG: NHAN ">" ' );
 end;
 {---------chuong trinh chinh-----------}
 Begin
 repeat
 clrscr;
 port[$37A]:=$0A;
 gotoxy(25,5);
 writeln('BAN LAM VIEC THEO CAU CHI DAN');
 gotoxy(25,7);
 writeln('1.GOI CHUONG TRINH DON NHAN DU LIEU');
 gotoxy(25,8);
 writeln('2.GOI CHUONG TRINH CHAY CHU QUANG BAO QUA PHAI ');
 gotoxy(25,9);
 writeln('3.GOI CHUONG TRINH CHAY CHU QUANG BAO QUA TRAI ');
 gotoxy(25,10);
 writeln('4.XEM SO BYTE DA XUAT');
 gotoxy(25,11);
 writeln('5.THOAT');
 gotoxy(25,13);
 writeln('NHAP VAO SO TUONG UNG NEU CAN CHON MUC GHI CHU TREN');
 gotoxy(25,14);
 readln(ch);
 case upcase(ch) of
 '1':begin
 port[$37A]:=$08;
 nhap;
 port[$37A]:=$0A;
 end;
 '2':begin
 port[$37A]:=$0E;
 chay_phai;
 port[$37A]:=$0A;
 end;
 '3':begin
 port[$37A]:=$06;
 chay_trai;
 port[$37A]:=$0A;
 end;
 '4':xem_so_byte_truyen;
 '5':thoat;
 else
 gotoxy(25,15);
 writeln('BAN NHAP SAI YEU CAU NHAP LAI');
 sound(350);
 repeat until keypressed;
 nosound;
 end;
 until readkey= 'c';
 end.
            Các file đính kèm theo tài liệu này:
 LUANVAN.DOC LUANVAN.DOC
 TTRINH.DOC TTRINH.DOC