, , .

, , , .

. . : 1. ; 2. ; 3. ; 4. ; 5. ; 6. .

.

- . .

.

, ( ). . .

. 1. .

, .

, IBM/PC, ''. IBM/PC 8088, 80286, 80386, 80486 '', IBM/PC , - .

'IBM' .

IBM/PC : , , - 2 - .

.

IBM/PC . , IBM/PC, , .

, - . , 64 '' , , . IBM/PC .

, , . , . , - , IBM/PC. : .

'IBM', , , , , . IBM/PC , 62 . 62 , , IBM/PC. , . , , , . : 62- . /. . -, . , / . , . . 20 , 1024 . / , 512 .

.

, / .

IBM/PC . ( , .. DIP). IBM/PC, , , .. - . IBM/PC . , - , , . , - 3 - , .

; , , .

.

, .

- , . IBM/PC 8088 .

8088 20 , , 1024 . 2. . 80287, , , ( ) .

, .

, . ( ) , , , 88248. , . . , , , . , 8253. . , ''. . 8288, - 82288. , .

( , ) , . .

, , ( - 8237). (8259). 8259 , - . ( - 8255). , .

, . .

, - 4 - , PD765. , - 6845. 3. 286 286 , 286, , . , , . 286 , , . : ( ), , .

. 286 - , , , .

286 - . , .

, , .

.

286 , . -, : 286 . -, : 286 ( ) , .

( ) . .

, , 286 , .

, (). , , - , . , , (, , ). 286 , . 4. , , - 5 - . ________________________________________________________________ ! _____________________________________ ! ! |____________________________________| ! ! _____________________________________ ! ! AX |_______AH_______|______AL___________| ! ! BX |_______BH_______|______BL___________| ! ! CX |_______CH_______|______CL___________| ! ! DX |_______DH_______|______DL___________| ! ! _____________________________________ ! ! SP |____________________________________| ! ! BP |____________________________________| ! ! SI |____________________________________| ! ! DI |____________________________________| ! ! PC |____________________________________| ! ! _____________________________________ ! ! CS |____________________________________| ! ! DS |____________________________________| ! ! SS |____________________________________| ! ! ES |____________________________________| ! !______________________________________________________________! 16- , . , .

, , AX, BX, CX DX. , AH AL, BH BL .. , .

, .

.

( ) 64 . ( CS) , .

( DS) , , ( ES) .

( SS) , . 7, . ( 64 ), . . , .

() IP, , , , .

, S, , BP, .

, SI, (), DI, .

, , , .

, : , - - 6 - .

1- , . , , , .

, , . . : , ZF, ( ), , SF, , , CF, , , AF, ( ), , OF, , , , PF, . . , DF, (, ): . , IF, : . , TF, '' . .

, 286, , . , , NT, , , IOPL, /. . . . . / . . 2 1. 16- , , 65536 64. , , 64 . , 64 ; , - 640. : , 16- ? , Intel 8086 .

16- , , 1048576 ( ) . , , , : , , .

' ', 20- ( 1048578) 16- .

, 16- , ABCD 1234. , , (ABCD 1234) 16 .

, ABCD, 0 : ABCD0. ( ) .

( 20 ) .

, , 20- , 0: , 0, .. . , , 16- (1234 ) : ABCD0 + 1234 ------- ACF04 16- , 20- , 0 1048577. , PC , 16- . . ABCD , 1234 . , 16, .. , 0. , 16, . , .

16- 0 - 2 - 65535 ( 64), 64 , .

, , PC. : ABCD:1234. , . DEBUG, . DEBUG, ' ', . , , . , ; , , . ABCD 1234 ACF04. , .

CS , .

DS .

ES DS , . , , SS .

. , . ( AX, BX .. SI DI). , .

. , , . , CS DS . . - (.. ), ( ) 64 , .

, - , . , , 64 64 ; , , . : , .

( 64) ; , , . , ( ) - - 3 - ( ). , , , . 2. , . .

- , .

1024 , 256 - , . 0 400 (). ( ' '.) ROM-BIOS. ROM-BIOS , . ROM-BIOS, . , ROM-BIOS, , , , , , ( ALL-CHAR , , ). ROM-BIOS 256 400 500. , 500 600. , ROM-BIOS, .

, : (0-9). , . PC , , .

16 ( 64) 640, .

, , 0 .

( ) , , ( ), , ( ). : -, , () (), , -, , , , , . , . , - 4 - . 0 1- 64 64 1 2- 64 128 2 3- 64 192 3 4- 64 256 4 5- 64 320 5 6- 64 384 6 7- 64 448 7 8- 64 512 8 9- 64 576 9 10- 64 640 A 11- 64 B 12- 64 C 13- 64 (XT,EGA,3270 PC) F 16- 64 ROM-BIOS ROM-BASIC . PC PC . 60% .

640 , PC, , , PC, . 64 128 PC 640 . ( , : ). 640, , , , , ( ). . , 0, , . ' ', ' '. , ( ) , 640 , . , , . 3. PC, 8088, , AT , 286, . 286 ( 6), , 286, 16 .

, IBM. , IBM , .

- - 5 - , 286 , , . (. ' '). AT (1024 ) , . , AT, ( ), .

PC, , , , , AT. , , , AT. , ROM-BIOS. ( ) .

286 ( 8088) .

, , . , - , , BIOS, , . ________ ________ ________ ________ | | | | | , |________|________|________|________| - | | | | ______ | | | | |______| | | _|______ _____ _____ | ________| |__________| |______| |____ |-->| |________| |______| |______| | |________| |__________| |______| |____| | / / | / / | / / | / / | / / | / / | / / | / / | / / ____________________________ | | | , | | | |____________________________| .

- 6 - 1- ; 2- ; 3- ; 4- ; 5-; 6- 4. , , , . , . , ' ', , . '' , .

, 286, 286 , , , , .

' ' 286 , , , .

() , ( ) . .

, , , . , , ( , )? , , ; - . - (, , ), . , .

, , ; . . , . , , . , , , . , '': - - 7 - , .

, . , , , , . 5. ---------------------------------------------- , .

, , - .

, , , . , , .

, '' , 64 ( 512). 64 (64) . , , .

, , , . , , , .

, - - .

, , . , , .

- - , , ''(Lotus), , '', .

' //', , , '' : ' ' ('Above Board'). , . : - ( ) ( , , ). ( ' ' '' ) - 64 8 , 16, .

() - 8 - .

, , PC, . 64, , . , D E , , C. , - . , .

, C400 C 16 D. , (64), 16. , , , 16 ( ). , , .

, . ( 16) , . ____________________________________________________________________ | | | | | _______________________________________ | | | | | | | ------- ------- | | | | | | | | | | | | | | | | | | | | ------- ------- | | | | | ------- | ------- | | | | | | | | | | | | | | | | | | | | | | | | | ------- | ------- | | | | | | | | | | | |_______________________________________| | | | | | | | | | | | | | | | | | | | | |/ |/ |/ |/ | | ------------------------------------------------------ | | | | | | | | | | | | | | | | | | | | ------------------------------------------------------ | | 0 640 ___________ ____________/ | | V | | | | | |____________________________________________________________________| .

, - 9 - . , , . , , , , , .

, , , , , 16. , , . PC, AT .

, AT , PC, . DOS 0000:0000 . 0040:0000 BIOS. 0050:0000 DOS. XXXX:0000 IBMBIO.COM - DOS, BIOS. XXXX:0000 IBMDOS.COM - DOS ( INT 21). DOS . XXXX:0000 COMMAND.COM - 22 (), 23 (Ctrl-Break), 24 ( ) . XXXX:0000 - ( .COM .EXE) XXXX:0000 ( .COM) XXXX:0000 COMMAND.COM - , DOS, , .

3 1. , .

- BIOS . IBM/PC .

BIOS .

BIOS IBM/PC '' , , IBM/P. - ' ' .

- , .

( CTRL-Alt-Del). . IBMBIO.COM IBMDOS.COM. , . IBMBIO.COM BIOS . 2.00 IBMBIO.COM , , .

BIOS , IBMBIO.COM , '' . IBMDOS.COM . '' / . '' . , DIR. IBMBIO.COM . - COMMAND.COM. COMMAND.COM , .

, , TYPE, COPY DIR COMMAND.COM. COMMAND.COM : IBMDOS.COM, - .

, FORMAT DISKCOPY. . , , .

, , FORMAT, , .

, . IBMBIO.COM, IBMDOS.COM . COMMAND.COM - , .

. . - 2 - 2. BIOS - BIOS /, . , /.

BIOS FE00 FFFF, .

BIOS IBM/PC, , . IBM/PC, BIOS , IBM/PC. BIOS , ( - , ). BIOS, , . , IBM/PC, .

, . , , .

BIOS, , - . , ' '. , . , BIOS . IBM/PC, , , .

- , BIOS - . IBM/PC. , , , , .

, IBM/PC. 3. - . .

. IBM/PC , Ctrl-Alt-Del, BIOS , , 31744 700 (). BIOS , 31744. .

IBMBIO.COM IBMDOS.COM. , 512 , . , , - 3 - IBMBIO.COM IBMDOS.COM, . . , , '' - , , IBMDOS.COM IBMBIO.COM. - , , . , , .

, , . ( , ). , . , , 1.10. 4. IBMBIO.COM , IBMBIO.COM, BIOS . BIOS , IBMBIO.COM / , . , /. , .

IBMBIO.COM , , BIOS . IBMBIO.COM , BIOS . , . IBMBIO.COM BIOS , .

, BIOS, , . BIOS, IBMBIO.COM. , BIOS IBMBIO.COM, BIOS. BIOS , . BIOS, , , .

, BIOS, , IBMBIO.COM, , , (203) , , , IBM/PC. / IBM/PC, IBMBIO.COM , , BIOS. IBMBIO.COM , , . '' '', - - 4 - , .

, , 2.00. IBMBIO.COM, , . , , .

, BIOS. IBMBIO.COM. , , . , , IBM/PC, BIOS . , /.

IBMBIO.COM , , IBMBIO.COM, .

. 5. IBMDOS.COM , IBMBIO.COM IBMDOS.COM , , , . , , , , , ( 33, 21). , , - . , , BIOS: .

32 63 ( 20 3F ) . , .

, Ctrl-Break. , , /. , , / .

- , , , . , , , , ..

. , DIR COPY. , . 4.9 . 6. COMMAND.COM - 5 - , COMMAND.COM, , , , . COMMAND.COM .

, ' ', , , . , DIR, COPY, TYPE, REM PAUSE, , '' COMMAND.COM, . , COMMAND.COM . COMMAND.COM, . COMMAND.COM DEBUG DiskLook. , . DEBUG SecMod, . , , . , , COMMAND.COM . , COMMAND.COM . COMMAND.COM , . , COMMAND.COM , . '.BAT', , ASCII , , . COMMAND.COM , . , , , . , , , . .

COMMAND.COM .

, , . .

, COMMAND.COM : 1. , IBMDOS.COM . 22H ( ), 23H ( Ctrl-Break) 24H ( ), . ( , , . , ). , COMMAND.COM. 'Abort, Retry or Ignore'. - - 6 - . AUTOEXEC.BAT. , . , COMMAND, . - ( ) . : ( 3), jds[ , ( 4) , (.. .COM .EXE). s (Exec). 3 COMMAND (. A>), ( ) . Exec . 7. . , , IBM/PC. , . , '.COM' '.EXE', , . , .

DISKCOPY, COMP, FORMAT, EDLIN, BASIC BASICA , , .

, . , , , FORMAT. , , - , , , .

- - . 8. DOS ( ), A:), . , , IBMBIO.COM IBMDOS.COM ( ). , , . (IBMBIO.COM ). IBMBIO.COM , , , . IBMDOS.COM DOS. IBMBIO.COM, DOS , . DOS - 7 - , 20-27 (. . 6) COMMAND.COM ; IBMBIO.COM. IBMBIO.COM COMMAND.COM , DOS. IBMBIO.COM COMMAND. 4 1. . , '' 0 0. : 4-. '' ( ), .

2- , , . , DEBUG. D : D 0:0. DEBUG 128 32 , : 0000:0000 E8 4E 9A 01 00 00 00 00-C3 E2 00 F0 00 00 00 00 0000:0010 F0 01 70 00 54 FF 00 F0-05 18 00 F0 05 18 00 F0 0000:0020 2C 08 51 17 D0 0A 51 17-AD 08 54 08 E8 05 01 2F 0000:0030 FA 05 01 2F 05 18 00 F0-57 EF 00 F0 F0 01 70 00 0000:0040 90 13 C7 13 4D F8 00 F0-41 F8 00 F0 3E 0A 51 17 0000:0050 5C 00 B7 25 59 F8 00 F0-E2 0A 51 17 9C 00 B7 25 0000:0060 00 00 00 F6 8E 00 DE 09-6E FE 00 F0 F2 00 7B 09 0000:0070 27 08 51 17 A4 F0 00 F0-22 05 00 00 00 00 00 F0 ' ': , .

, , DEBUG (E8 4E 9A 01) 019A:4EE8. . , ROM-BIOS, F, . , ( : 019A:4EE8). (, SideKick Prokey), DEBUG ( DEBUG ). , , . , ( 1) . pepa o ooe poep, oope oep ae oe opeeeo aa. Cec aapae popae pepa. Aapae pepa pc aapapo, o c cceo a, o c ap pacpe. O o a cao pocxe aepa, cao o pepa, aae a a aape oeco px p. Aapae pepa e ooppc c paoo popaoo oecee. Koa aec pepae, o poeccop ocae co pao, oe pepae, a ae opaaec a peee eco. oo o e oooc epc oo oe eco popa, apec oo eca (CS:IP) aoaec a cee, ece c pecpo ao. ae CS:IP apaec apec popa opao pepa e epeaec - 2 - paee. popa opao pepa oa aa paepa pepa. O cea aepac cpe IRET (opa pepa), oopa aepae poecc, aa pepae, opaa cape ae CS:IP pecpa ao, e ca aa popae oooc poo oee oo e coco. C po copo, popae pepa a cao ee eo e pepa. Ha cao ee o oe poep, oope ac Ba popaa oe po pao, ao a pe aa a a aape o a pa. Oao opopa coepac e p Bae popa, a oepaoo ccee exa pepa ae Ba oooc opac . popae pepa o ac p pa. Hapep, ce pepa opao oa c aap DOS co pepa opao oa c aap BIOS oe coa epa aap. apaoe pepaee oe o paee p oe popaoo pepa. p o e oae oo, a a aa opopaa opao pepa coxpae ae cex coex e pecpo ae occaaae x p xoe, e ca e oca ceo oo, o oa aaa poeccop. Apeca popa pepa aa eopa. Ka eop ee epe aa. B epo coe xpac aee IP, a o opo - CS. Mae 1024 a a coepa eopa pep a, a opao eec eco 256 eopo. Bece e o aac ae eopo. Beop pepa 0 aaec c e 0000:0000, pepa 1 - c 0000:0004, 2 - c 0000:0008 .. Ec ocope a epe aa, aa c ape ca 0000:0020, oopx coepc eop pepa 8H (pepa e pee co), o B oape a A5FE00F0. e , o a a coa pacooe caaa o opo IP:CS, o 4-aoe aee epeoc F000:FEA5. o capo apec popa , oe pepae 8H. Ha pc. 1-2 oa aa cxea oe popao pepa 21H. 2. popapoae opoepa pepa 8259. pae aapa pepa o cex ax IBM PC coec pocxea popapeoo opoepa pepa Intel 8259. oco a oe pee oe oc e o apoc, pocxea ee cxe popeo. eec 8 po e popeo, poe AT, oopoo x 16, opae coo ec po ooaac copae o IRQ0 o IRQ7 (o IRQ0 o IRQ15), o oaae apoc a pepae. Maca pope cooece po 0. oaoe 8 poe AT opaaac opo pocxeo 8259; o opo aop poe ee pope e IRQ2 IRQ3. apoc a pepae 0-7 cooec eopa pepa o 8H o 0FH; AT apoc a pepa 8-15 ocac eopa o 70H o 77H. He p ee aae x pepa: Aapae pepa ope popea. IRQ 0 aep 1 aapa 2 aa oa/oa 8 ac peaoo pee (oo AT) 9 popao epeoc IRQ2 (oo AT) 10 peep 11 peep 12 peep 13 a. copoeccop (oo AT) 14 opoep cpoaoo ca (oo AT) - 3 - 15 pe ep 3 COM1 (COM2 AT) 4 COM2 ( o e PCjr, COM1 AT) 5 c po a c (LPT2 AT) 6 o po ep c e 7 LPT1 pep a pe e c o a a c a p op e , oc o ec o o e oc o o ep c , o e ep o a a c c e x aco . pep a e o a a p ae c p a a o c a a ; o o ae e co , o opa o o a a ae c e , o o a o e ae c ep a a p (o a o a e o e o e po pa pep a ). M pocxe a 8259 ee p o o a x pe c pa, o op e pa oce a apa x pep a . Pe c p a poca a pep a e (IRR) c a a ae coo e c , o a pep a c a p e o a poce. a e pocxe a a o a ec po ep e e o pa a ae c p oe pep a e. p o o a a pa ae op a pe c pa o c a (ISR). o o e a e o e ae a cxe p op e o . Ha o e , epe o o pep a , po ep e c pe c p ac pep a (IMR), o a pa pe e o a o e pep a e a o o po . Ka pa o po pa c o pa a c o o pe c p ac pe p a epe op 21H o a o pe c p pep a epe op 20H. 3. a pe /pa pe e e o e x a apa x pep a . po pa a aace epe o a pe a apa e pep a , epe c e e . o ac p e e pep a ; p e a apa e pep a , o a e p e o op x o ax ( a x a e e e a o ) e o ac po a . ec e p apea aapax pepa. B epo cae ce pepa opc c e o peca ac oa a oea eo, pee e aa poee aoe-o poe ece. Hapep, pepa apea p ee eopa aapaoo pepa, ea oe pepa oa eop ee oo aoo. Bo opo cae acpc oo opeeee aapae pepa. o eaec oa eoope opeeee pepa o aoecoa c oepa, p peea. Hapep, oo paccaa o pee poepa oa/oa e oe cee oo pepao e co pepae. H poe. Boee pepa ac o ae aa pepa ( 9) pecpe ao. Koa o pae 0, o papee ce pepa, oope papeae aca. Koa o pae 1, o ce aapae pepa apee. o ape pepa, cao o a 1, coec cp CLI. oc oo aa occaoe pepa - cp STI. eae oe pepa a e epo. pepae pee co pocxo 18.2 paa ce ec o pepa oee e o apoc o pe, oa aapae pepa apee, o e apoc opoe cceoe pe e opeec epao. aa aoaec apeae aapae pepa p oe popax pepa aoaec papeae x p opae. Koa B ee co popae pepa, o B oee aa popa c cp STI, ec B oee oc aapae pepa. Oe ae, o ec a cpe CLI e cee STI, o o - 4 - pee ocaoe a, a a o c aap e aopoe. acpoa opeeex aapax pepa o poco oca pee eo o op c apeco 21H, oop cooece pecp ac pepa (IMR). Pecp ac a opo pocxee 8259 AT (IRQ8-15) ee apec opa A1H. caoe e pecpa, oope cooec oepa pepa, oope B xoe acpoa. o pecp oo oo aca. Hepee pep ope cooe pepae. He ae oc pecp oe popa, ae opaee ca e apeeo oce aepe popa. ;---acpoae 6-o a pecpa ac pepa MOV AL,01000000B ;acpe 6 OUT 21H,AL ;ocae pecp ac pepa . MOV AL,0 ; OUT 21H,AL ;oae IMR oe popa 4. Hacae coceoo pepa. eec ecoo p aca coceoo pepa. Bo-epx, oco oox pepa, oeceaex oepaoo cceo, o oe, a oe poep, oce cex popa, B oee oea oa coe oe. Hapep, oe Ba popa o cooa poep, o cpo a pa epao. Beco oo, o a ee a popa aece poep B oee cao ee a pepae, aca popa, oopa ocaec peeo a oce aepe. Toa B oee cooa INT 80H eco WRITE_VERTICALLY (ee , o o pepa ecoo eee, e o poep). Bopo po aca pepa oe cooae aoo-o oeoo aapaoo pepa. o pepae aoaec aec p ooe opeeex co. B eoopx cax BIOS ape eop oo pepa a, o o aae a poep, oopa ooe eo e eae (oa coep o oepaop IRET). B oee aca co poep e eop pepa, o o aa a ee. Toa p ooe aapaoo pepa e oc Baa poepa. Oa ax poep o pepae pee co [2.1.0], oopoe aoaec aec 18.2 paa ce. Oo o pepae oo ooe oaae aco, o B oee oa e o o, oop B oeaee. Ec Ba o poepe oaa aco cae p opeeee oe pee, o oo oepa peao pee. Cpe poe.

25H pepa 21H caaae eop pepa a aa apec. Apeca e paep a coa. Capee coo coep aee ceea (CS), aee coep ceee (IP). o cao eop, aa a o Bax poep, o oec cee poep DS, a ceee DX (ce op epeeoo pepa). ae oece oep pepa AL oe . a poepa pepa oa aepac e o o c p e RET, a IRET. (IRET a ae c e a p c o a, a pe c p a o , o pe a RET o e ae a c e o o a. Ec B o ae ec ec po a a po e p a o po e p , o o a c IRET, o B c ep ae e c e .) O e , o 25H - 5 - a o a ec a pe ae a apa e pep a po ecce e e e opa, o o e c ec e o ac oc , o ocpe opo po o e a apa oe pep a e, c o ee a e op. ;--- c a o a pep a PUSH DS ;coxpa e DS MOV DX,OFFSET ROUT ;c e e e po e p DX MOV AX,SEG ROUT ;ce e po e p MOV DS,AX ; o e ae DS MOV AH,25H ; c a o e opa MOV AL,60H ; o ep e opa INT 21H ; e e pep a e POP DS ; occ a a ae DS ;--- po e pa pep a ROUT PROC FAR PUSH AX ;coxpa e ce e e e pe c p . . POP AX ; occ a a ae pe c p MOV AL,20H ; e c po a o c o o a OUT 20 H , AL ; o o a apa x pep a IRET ROUT ENDP B o e o a a o o Ba x a apa x pep a B o - c e e 2 c po o a: MOV AL,20H OUT 20H,AL o poc o co a e e, o c a (20H) o e e o e x c po ax. Ec a apa oe pep a e e a a ae c c po a , o pocxe a 8259 e o c op a pe c pa o c a , c e o a pa pe e a o pa o a pep a c o ee po , e o o o o pa o a oe. O c c e x c po e o o e p ec pax po pa , a a pep a o a a p c opee ce o o a c a opo e a e Ctrl-Alt-Del o a e c ec o e . O e , o a o a a e a ex e opo pep a , o op e c pac pe c ec x pep a , a a pep a e 1CH, o opoe o a e o pep a pe e c o . Ko a po pa a a ep ae c , o occ a o e op a e e opa pep a . B po o c ae oc e a po pa a o e a a oe pep a e epe a pa e e a o ec o a , o opo Ba e po e p e e . 35 pep a 21H o pa ae e ee a e e e opa pep a , o e a a e e ce e a ES, a c e e e BX. epe c a o o c oe o pep a o e e ee a e e e opa, c o , coxpa e a e , a e occ a o e x c o o 25H ( a e) epe a ep e e c oe po pa . Ha p ep: ;--- ce e e a x: KEEP_CS DW 0 ;xpa ce e a e e o o pep a KEEP_IP DW 0 ;xpa c e e e pep a ;--- a a e po pa MOV AH,25H ; o e e opa MOV AL ,1CH ; o ep e opa INT 21H ; e ep ce e ES, c e e e BX MOV KEEP_IP,BX ; a o ae c e e e - 6 - MOV KEEP_CS,ES ; a o ae ce e ; --- o e po pa CLI PUSH DS ;DS e pa p e MOV DX,KEEP_IP ; o o o a occ a o e MOV AX,KEEP_CS ; MOV DS,AX ; o o o a occ a o e MOV AH,25H ; c a o e opa MOV AL ,1CH ; o ep e opa INT 21H ; occ a a ae e op POP DS ; occ a a ae DS STI H po e . O ca e e MS DOS poc o o a e ap c o a x e ax a . C e e e e opa o e c e o poc o e e o epa e opa a 4. Ha p ep, o o a pec pep a 16H ES:BX: ;--- o e e a peca pep a 16H SUB AX,AX ; c a a ae ES a a a o a MOV ES,AX ; MOV DI,16H ; o ep pep a DI SHL DI,1 ; o ae a 2 SHL DI,1 ; o ae a 2 MOV BX,ES:[DI] ; epe a a BX MOV AX,ES:[DI]+2 ; epe c ap a ES MOV ES,AX ; He pe o e e c p o c a a a e op pep a , o xo - DOS. B ac oc o o a a o cpe e o epa o a c c e a o e o ep a ec o o a e opo pep a pea ec a pec a o e ec e o o DOS. 5. o o e e c ec e pep a . Xo e ac o, o o a ae o e o o a o c ec - e pep a . B a ec e p epa pacc o p po pa , o op e peo pa o o a a e a e o pe e e e o o a e e c o e c po ( a poo pe e e a a p ). po pa c o - a , o ec o c a a p oc ae oc ae epe 0 pep a 16H BIOS [3.1.3]. Bce pep a o a c a a p DOS a pep a e BIOS o e c o a epa a a p . o o eo xo o o po a pep a e 16H, a o pa o , o o o c o a a o a poo pe e e , oc e e o a po pa a e o a a poo pe e e , e a c o o o o, a oe pep a e o a c a a p o a c o e . Ko e o, o po a pep a BIOS DOS e poc o, oc o BIOS pac o o e a , a DOS oc ae e c a o o pa e pa epa o e e o x a . Ho B o e e a ca po e p , o opa pe ec e / c e e a coo e c pep a e , a po e pa o e a c p o e pep a DOS BIOS. Ha p ep, c ae pep a 16H, Ba o a ca po e p a a a ee e opo pep a 16H. Op a oe a e e e opa 16H e pe e e epe oc c a o - o e c o e e op, c a e , 60H. Ho a po e pa poc o ae pep a e 60H, o cooa opaoe pepae 16H; oo oa - 7 - popaa ae pepae 16H, paee epeaec Bae poepe, oopa ae ae opaoe pepae 16H, oopa o aepe o opaae paee Bae poepe, a ee e B opaaeec o eco popa, oopoo o pepa 16H. oce oo a o ceao, oo poepe oe coepac o o, a o, a oce oa pepa 60H. Bo paa coa eoxox ec: 1. Coa o poep, a pepae 60H. 2. epeec eop pepa 16H 60H. 3. e eop 16H, o o aa a o poep. 4. aep popa, oca ee peeo [1.3.4]. 5 1. 2.00, DOS . 48 - , 49 - , 4A (Setblock) - .

: DOS . '', DOS , '' .

; ( , , ). DOS , . , - , , , . - , , . , DOS 48 (Exec) - , . : 0 , 3 . , . 0, DOS ( ). Exec . , , , , COMMAND.COM, . Exec , , . , , .

. .EXE MAX ALLOC . , , MIN ALLOC . LINK. , , .

Setblock . ( .COM , , , DOS ). . , . , DOS, . , Exec 0, , .

, , - . ( : DOS : - - 2 - ). 3 ; .

, - , , DOS. , 3 - .

DOS; - , .

, DOS , . 2. Ma c a. Koa MS DOS apae popa, o oa oeaec a oac a, cpa e a COMMAND.COM caoe paepa cpoc p a, oope pee a. B o oe pee c a a popao oeea o popae. Ec popae a a coa oac ax, o oa oe peo c e a oaec ee o ae oec pee oac ax oe eco a oo oa. opeee apeca oa popa oece oe popa ceocee a: ZSEG SEGMENT ; ZSEG ENDS B acceepe IBM PC ZSEG e oce ceeo, a a cee pacoaac aao ope. C p acceepa o eceo oec cpo oe popa. B cao popae ocaoo oca oepaop MOV AX,ZSEG AX e aa a ep coo cee a a popao. Tao oxo e paoa o ex op, oa popaa e e peoaa o a a, oopo a cao ee e. O e e ae paoa ooooaeco cpee, oa ecoo popa o e e coo o e oac apeco. pee o poe MS DOS ee oooc ocea 640K cceo a oo o peoa popa o a oo paepa. o a - o poco epepa oac a, eo aca paep opeeec paepo oco a, acoc, o oe oe ooo ceea (64K). Ec apeoa co oo o, o DOS ae cooee o oe. a oooc epep oo cea. Kpoe oo MS DOS oe ocooa, pea pacp cece o. Xo popaa e oaa cooa cpeca, o oo pecopeo ea o. Heoope DOS pe, o cooa cpeca pae a DOS, apep, aepee peeo popa [1.3.4] o po popa ao [1.3.2]. pee e oec a, cec o (c a o aaa popa o oa) oe opea o paepa popa. ae, p coa oa, DOS coae 16-a pa o a, oop pacooe eocpeceo epe oo a. epe 5 ao oo oa e ceee aee: a 0 ASCII 90 - ec oce o eoe, ae ASCII 77. - 3 - a 1-2 0 ec o ocooe a 3-4 paep oa 16-ax apapaax DOS opaaec oa o eoe. Apec epoo oa xpac o pee epeeo. aee o epeeo ooe DOS opee ooee epoo oeeoo oa, a opa, coepaec e, oe ae ce o .. Ka oo B aa cooa cce pacpeee a DOS, o B oa pepac ee. Ec popaa e coepoe paeo oa, o eoa e paopaa DOS ae aa cooe o oe. MS DOS oeceae p pacpeee a, oepa o 48H o 4AH pepa 21H. 48H oo o a, a 49H - ocooae o a. Tpe ('SETBLOCK') ee paep a, oeeo popa; a oa cooaa epe oca. oce ee oe oo cooo oo ocooa o a. popaa oa ocoo ce oeee e o epe aepee. ae a a e eoco oceeo cooa. Cpe poe. Bce p pacpeee a pepa 21H co 16- apec aaa oa a, c oop o oepp. o apec cooece cee, c oopoo aaec o (o cea aaec co cee 0 aoo ceea). Ta opao pea apec e aaa oa pae o apec, oeo a 16. Tae, cex pex , BX coep co 16-ax paeo a (apapao), oope ooc ocooac. Ec e oe oea, o caaaec a epeoca, a AX opaaec o o, oc p. Boo p oa o: 7 pape pa o a 8 eocaoo a oe 9 eep apec oa a oee oa coe o 7 8, a ocooe - 7 9, o pe a ee oa coe ce p oa. B cee pepe caaa ooc o, paepo 1024 aa. p o BX coep peeoe co 16-ax apapao, a p aepe capo apec oa pae AX:0 (.e. ceee 0 ceee co aee, coepac AX). Bopa ac pepa ocooae o e o, a peec p aepe popa. B ao cae aee oeoe AX oeaec ES. DOS ce a paepo oa ae aoe oeco apapao ao ocoo. ;---oeee oa paepo 1024 aa MOV AH,48H ;oep MOV BX,64 ;pee 64 apapaa INT 21H ;aec oec o JC ERROR ;opaaae o cae ea MOV BLOCK_SEG,AX;ae coxpae apec oa . ;---ocooae o e o MOV AX,BLOCK_SEG ;oae capo apec oa MOV ES,AX ;oeae eo ES MOV AH,49H ;oep peeo INT 21H ;ocooae o a Haoe, pee pep cooa 4AH. ES coep - 4 - aee ceea PSP, .e. caoo epoo aa a, c oopoo apea popaa. o aee pcaaec ES p cape aa. cooa SETBLOCK ao o a cao aae popa (pee e ES e ee), o coxpa eo aaoe aee oceeo cooa. BX coep pee paep oa 16-ax apapaax. opeee oo paepa oece oao 'cce' cee oe popa. B apoaccceepe IBM PC cee pacoaac aao ope, oo B oee oec eo oe eco popa, p co, o eo o o-o poe 'ZSEG'. B px acceepax eceo oeae cee oe popa. popaa oe poa o oo ceea , cpaa ee co capo ceeo, o oeco a, peeoe cao popae. B oe ap popa ES DS coepa oep apapaa caoo aaa popa pece popaoo ceea; COM ao CS ae aae a o, o EXE ao o e a. ;---ocooee a (ES ee aee p cape) MOV BX,ZSEG ;oae # apapaa oa popa + 1 MOV AX,ES ;oae # apapaa aaa popa SUB BX,AX ;ce paep popa apapaax MOV AH,4AH ;oep INT 21H ;ocooae a JC MEMORY_ERROR ;poepe a o ;--- ZSEG SEGMENT ZSEG ENDS 6 .EXE EXE, : - . - .

, , . . , .

: 00-01 4D5A - '' , , EXE. 02-03 512 (.. ). ( 1.10 04; , ). 04-05 . 06-07 . 08-09 16- .

. 0A-0B , . ( 16- ). 0C-0D , . ( 16- ). 0E- 0F . 10-11 SP . 12-13 - . 14-15 IP ( ) . 16-17 . 18-19 . 1A-1B . (0 ). .

, 06-07. : 2- 2- , , , , .

: 1. . 2. . - 2 - 3. ( 04-07 08-09 02-03). , , . . 4. . 5. . 6. . ; . 7. , SS SP , , SS . ES DS .

, ( 14-17). 2. Exec, DOS , . . 0000 DOS (PSP). 0100. 0000 , INT 20, INT 21 AH=0 AH=4C, 0050 AH=0 AH=4C. : , 4C , CS . COMMAND.COM ( 4C ). , Exec (4B). 22, 23 24 (, Ctrl-Break, ) . . COMMAND.COM, . , , COMMAND . , : : - 2C . ASCIIZ, = . . , COMMAND, , , COMSPEC= ( - , COMMAND.COM). , PATH, PROMPT SET ( . 10). . , PATH, PROMPT SET . - 3 - - 0050 DOS. , AH , (LCALL) PSP + 50, 21. - DTA PSP +80. - , 5C 6C . , FCB , . - , 81, , . 80 . ( > , . - 6 . - AX , : AL = FF - , AL = 00; AH = FF - , AH = 00. .EXE: - DS ES . - CS, IP, SS SP , . .COM: - . - . Exec, Setblock (4A) - IP 0100H. - SP . 6 0100H, . - ( ): - 4 - ---------------------------------------------------------------- | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | ---------------------------------------------------------------- | INT | Top of | Re- | Long call to DOS | | 20H | memory |served | OP # bytes | | | | | CODE in segment | ---------------------------------------------------------------- | 8 | 9 | A | B | C | D | E | F | ---------------------------------------------------------------- | cont.segment | Terminate | Terminate |Ctrl-break exit| | of long call | address IP | address CS |address IP | ---------------------------------------------------------------- | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | ---------------------------------------------------------------- |Ctrl-break exit Critical error exit address | Reserved | |address CS | IP CS | | ---------------------------------------------------------------- | 18 | 19 | 2A | 2B | 2C | 2D | 2E .... 4F | ---------------------------------------------------------------- | R e s e r v e d |Segment address| Reserved | | |of environment | | ---------------------------------------------------------------- | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | ---------------------------------------------------------------- | DOS call | R e s e r v e d | ---------------------------------------------------------------- | 58 | 59 | 5A | 5B | 5C | 5D | 5E | 5F | ---------------------------------------------------------------- | R e s e r v e d | Unopened Standart FCB1 | ---------------------------------------------------------------- | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | ---------------------------------------------------------------- | Unopened Standart FCB1 (cont.) | ---------------------------------------------------------------- | 68 | 69 | 6A | 6B | 6C | 6D | 6E | 6F | ---------------------------------------------------------------- | F C B 1 (cont.) | Unopened Standart FCB2 | ---------------------------------------------------------------- | 70 to 7F | ---------------------------------------------------------------- | Unopened Standart FCB2 (cont.) | ---------------------------------------------------------------- | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | ---------------------------------------------------------------- | Parm | Command parameters starting with leading blanks | | length| | ---------------------------------------------------------------- | F8 | F9 | FA | FB | FC | FD | FE | FF | ---------------------------------------------------------------- | C o m m a n d p a r a m e t e r s | ---------------------------------------------------------------- : 1. - ; . 1000 64K. 2. 6 . 3. 2C . 4. PSP 00 5C . 7 paee popaa. oco popa apac a, acac, a ae ac oepaoo cceo p aepe. cooo po oo e e aepa. Ho popaco a acceepe eec pa oooc a pae eocppe ee. Heoope popa ec a paep cpoc paep pepa o o coxpae a ('pee') ae oce x aepe (eopa pepa oecea exa, ocpeco oopoo ocee popa o opaac pee poepa). oa popae eoxoo ac ce p popa. Ha cao ee DOS ooe popae ap a op o COMMAND.COM, oopa oe cooaa a cpeco epeca c ooaee oe oa a COPY DIR. 1. ac oo popa po. MS DOS oeceae EXEC (oep 4BH pepa 21H), pea o oo popa po. epa popaa aaec 'poee', a apaea acaea - 'ooo'. Cpe poe.

4BH oee coa, e ocae, pe epex oooex ao: 1. ooo a eco, ocoe popae. 2. Coa o apaepo. 3. ocpo cpo, coepa aoe, popa. 4. Coxpa ae pecpo SS SP epeex. oco p ape popa MS DOS ee e c oc a, o eoxoo ocoo eco a. Ec e ocoo ac a, o e e eca ap opo popa. oce oo a a ocooea, B o poco oec BX peeoe co 16-ax apapao, aca 4AH AH o pepae 21H, ea oc popae eo o co apapao, oopoe e peec. o apaepo, a oop o aa ES:BX o 14-a o o a, oop B o oec ce opa: DW cee apec cpo cpe DD cee ceee oao cpo DD cee ceee epoo FCB DD cee ceee opoo FCB Cpoa cpe - o cpoa, cocoa oo oee cea, oop cee MS DOS p oe popa. ee cpo cpe ae e, a e o oo oap coo ae CONFIG.SYS. Hapep, cpo oe oeeo VERIFY = ON. poco ae cpo c epoo eea, aep eo coo ASCII 0, oo ae ce .. a oce eeo o ceoa a coa ASCII 0. Cpoa oa aac a pae apapaa (.e. ee apec o o 16 oe pae ). o ao e, o cooec xo oe apaepo, aa a cpo, coep oo 2-aoe ceeoe aee. Bce o e o, ec oa popaa oe paoa c o e cpoo cpe, o popaa 'poe'. B o cae ao poco oec a coa ASCII 0 epe 2 aa oa apaepo. Cee 4 aa oa apaepo aa a oa cpo - 2 - apaeo popa. 'Koaa cpoa' - o coa cpoa, opeea coco pao popa. p ape popa DOS oa o e e po e EDITOR A:CHAPTER1 NOTES.MS. p o ae c pe a op e epe ae c a a o a a o e a o e A e e e o o o p . Ko a B o o a ae e o a c po EXEC, o a o a o o oc e ac op a , o e a p ae o po pa . epe o a o c po o o e c o a , co ep a o c po , o a o a a ep a c c o o (ASCII 13). oc e e 8 a o o a apa e po a a a pa e o a o (FCB). FCB co ep op a o o o x a ax, a a x o a o c po e. Ec o p ae x a o e , o a o a o ce 8 a c o o ASCII 0. B [5.3.5] o c e o, a pa o ae FCB. Ha a c epc MS DOS 2.0, c o o a e FCB eo a e o B o e e e a op a FCB, ec o o o c o o o e ec p opa a o (file handler), o opo oc a pe oc a e c o o o o o ep , a e epe FCB ( a e o c ae c [5.3.5]). Ha o e , B o oc po c po c a a e a o e , e a a. a c po a e e a p ae po pa . DS:DX a ae a c po p o e EXEC. a c po a - c a ap a c po a ASCIIZ, .e. e o o ee, e c a ap a c e a a a, a ep ae a o o ASCII 0. Ha p ep, o o e B:NEWDATAFILER.EXE , e c o o o o a e o ASCII 0. oc e o o a c a a a op a o o o e a, oc ae c oc e a a a. oc o ce pe c p e e ae o a a e , o a o coxpa ce e c e a a a e c e a, c e o o o occ a o e , o a pa e e e o pa e o a e a a e. x coxpa e co a e epe e e. oc o a e e pe c pa DS a e e e e o, o epe e e e o a e , o ex op o a e o ope o epa op MOV AX,DSEG MOV DS,AX. oc e o o a SS SP coxpa e , o ec e 0 AL, opa o epa ' a p a a c ' (EXEC c o e c a e o ep ee . a e o ec e 4AH AH o e pep a e 21H. B o o e a e e po pa , p e po pa a 'po e ' axo c oc a o e o coc o . MS DOS pe oc a e o o oc po pa e o o epe a po e o o pa a, a o pa o o epea o cac. o acaec cao aca, o p ooe o caaaec a epeoca, a pecp AX o cae e opaa 1 - epaoo oepa , 2 - ec a e ae, 5 - p coo oe, 8 - p exae a, 10 - ec epaa cpoa cpe 11 - ec eepe opa. po pep - poce oox, o aco oe eo e ao. ec ocae e o apaepo e coaa cpoa cpe. o oaae, o apaeo popae e e epeaac oaa cpoa o cpea e ao e, a ae popa. B o oo e pacpeeee a, coa (co) o apaepo coxpa ae SS SP. ;--- ceee ax FILENAME DB 'A:TRIAL.EXE',0 ;apae TRIAL.EXE PARAMETERS DW 7DUP(0) ;eo o apaepo KEEP_SS DW 0 ;epeea SS KEEP_SP DW 0 ;epeea SP ;---epepacpeeee a MOV BX,ZSEG ;o # apapaa oa MOV AX,ES ;o # apapaa aaa SUB BX,AX ;c paep popa - 3 - MOV AH,4AH ;oep INT 21H ;epepacpeeee ;---aae a o apaepo MOV AX,SEG PARAMETERS ; ES - ce e MOV ES,AX ; MOV BX,OFFSET PARAMETERS ; BX - c e e e ;---coxpa o SS SP MOV KEEP_SS,SS ;coxpa e SS MOV KEEP_SP,SP ;coxpa e SP ;--- a ae a c po e a a MOV DX,OFFSET FILENAME ;c e e e - DX MOV AX,SEG FILENAME ;ce e - DS MOV DS,AX ; ;--- a p a po pa MOV AH,4BH ; EXEC MOV AL,0 ; pae ' a p a c ' INT 21H ; a c ae a a ;--- oc e c , occ a a ae pe c p MOV AX,DSEG ; occ a a ae DS MOV DS,AX ; MOV SS,KEEP_SS ; occ a a ae SS MOV SP,KEEP_SP ; occ a a ae SP ;--- o e po pa co ae ce e ZSEG SEGMENT ;c . [1.3.1] ZSEG ENDS 2. Coxpa e e po pa a oc e a ep e . po pa , oc a e e pe e a , o c a ec e p x po pa . O o a e po pa a c epe e c o e e op pep a . MS DOS pacc a p ae a e po pa a ac o epa o o c c e , a a x o a o e p x po pa , o op e a p e oc e c . Pe e e po pa o o c op e COM. po pa , a ca e op e EXE oc a pe e a e o o p ee. a ep e e po pa pep a e 27H oc a e ee pe e o a . CS o e a a a a a o PSP o o, o a pa o a a pa o. B po pa ax COM, CS cpa c a a ae c coo e c o pa o , o o a o poc o a ep po pa pep a e 27H. B po pa ax EXE , CS ep o a a o a ae a ep a , c e a PSP ( .e. 100H). p op a o a ep e EXE po pa oc e c p RET a ae c e a ep e o o e e a a e : PUSH DX / MOV AX,0 / PUSH AX. oc o DS ep o a a o a ae a a a o PSP, o p o e x a e c e a c e o a a ae a c e e e 0 PSP, e p - a a a c ae c c p INT 20H. o o INT 20H o e c , a o c a ap a a ep e po pa epe a pa e DOS. o ac a pep a e 27H pa o a EXE po pa e a o o ec 27H o opo a PSP ( ep co ep a o c p INT), a a e a ep po pa o RET. o o x o a o pe e e o pep a e 27H, DX o e co ep a c e e e o a po pa , o c ae oe o a a a PSP. Cpe po e . Be op pep a c a a ae c c o o 25H pep a 21H, o a o ec , o po e pa o a a ac IRET. Kpo e ca o po e p , c a a ae a po pa a e o a e a e o, po e - 4 - a a e opa pep a , p c oe DX a e c e e o a po e p a ep e . COM a o poc o o ec e o epa op INT 27H o e po pa . EXE a o o ec e o o epa op ep oe c o o PSP a ep e po pa o o epa opo RET. o o o o po e p , oc e c a p e a po pa a o a a INT 70H. p e e p ep o o x o a o (COM EXE). B o o x c a o e a e a FINISH o e o a po e p pep a ( a o ae , o a $ ae a e e c e a o a o o e). COM a o FINISH ae c e e e o a a a PSP, a pe e c pep a 27H. EXE a o c e e e o c ae c o ep o o a a, c e e o a PSP, o o e eo xo o p a 100H, o epec a a a a o PSP. a e , o o ec po e p a a o po pa , o e c c a o o ac o a pe e o op . p o o o o c coc o c o o a c p MOVSB epec o a po e p e c o e ac PSP, a a co c e e 60H, o oc o o ae 160 a a . C a a a COM: ;--- ec po e pa pep a BEGIN: JMP SHORT SET_UP ; epexo a c a o ROUTINE PROC FAR PUSH DS ;coxpa e e pe c po . ( po e pa) . POP DS ; occ a o e e pe c po IRET ; o pa pep a FINISH EQU $ ;o e a o a po e p ROUTINE ENDP ;--- c a o a e opa pep a SET_UP: MOV DX,OFFSET ROUTINE ;c e e e po e p DX MOV AL,70H ; o ep e opa pep a MOV AH,25H ; c a o e opa INT 21H ; c a a ae e op ;--- a ep e e po pa , oc a pe e o LEA DX,FINISH ;o pe e e pe . c e e e INT 27H ; a ep e e C a a a EXE: ;--- ec pe e a po e pa JMP SHORT SET_UP ; epexo a c a o ROUTINE PROC FAR PUSH DS ;coxpa e e pe c po . ( po e pa) . POP DS ; occ a o e e pe c po IRET ; o pa pep a FINISH EQU $ ;o e a o a po e p ROUTINE ENDP ;--- c a o a e opa pep a SET_UP: MOV DX,OFFSET ROUTINE ;c e e e po e p DX MOV AX,SEG ROUTINE ;ce e po e p DS MOV DS,AX ; MOV AL,70H ; o ep e opa pep a MOV AH,25H ; c a o e opa - 5 - INT 21H ; c a o a e opa ;--- a ep e e po pa MOV DX,FINISH+100H ; c e c e e e o a MOV BYTE PTR ES:1,27H ; oc ae 27H PSP RET ; a ep ae po e p 31H pep a 21H pa o ae a a o o, a c e e o o, o DX o o co ep a c c o 16- a x apa pa o , pe e x po e pe ( c e e pa epa po e p , a a o a a a PSP - c . p epe [1.3.1]). pe ec o o e c o, o o a epe ae po e c o po pa e o xo a, a op a o c a ce po e p . Po e c a po pa a o ae o o c o o 4DH pep a 21H. Ko xo a o c a c [7.2.5]. 3. a p a a c po pa x o ep ee . O ep e - o ac po pa , o op e oc a c a c e, o pe a e o po pa pe e o a . Ko a pe e c , o e a a - o o ep ee , o o a p ae c a po pa a ae e o a po e p . Pa e o ep e o a p a c o o o e ec o a , epe p a pe o . Ha p ep, po pa a e e a a x o e a p po e p cop po , a a e epe p ee po e po e epa o e o . a ex a c o e c o o a . Ho o a xopo a o o ex po e p, o op e e c o c oc o o, a e ac e o pa e c p e o , o po pa a e o c c o e e o. Cpe po e . MS DOS c o e EXEC a p o ep ee . a , o ep 4BH pep a 21H, c o e c a e a p a c a o o po pa p o , ec o ec o 0 AL. Ec AL o ec o 3, o o a e a p e o ep e . B o c ae e co ae c PSP, o o o ep e e c a a ae c a e a c a po pa a. Ta a po e pa poc o a p ae o ep e , e epe a a e pa e . ee c a c oco a o ec e a o ep e . Mo e c o o a a o o ac p e a po pa , o c e a o o e e a o ac a a pe e a o o o po pa . EXEC epe ae c o o ce e a pec, a ec e o , a e a p e o ep e . Ko a o ep e a p ae c e o o o o po pa , o po pa a o a c o ep apa pa a, a e a p a c o ep e , ca a. C p o c opo , p a p e c e a o o e e a MS DOS o ec e ae po pa o epo apa pa a. B e p e e o p epe c o e c a p a o e e a . oc o DOS o o po pa e c oc a , o c a a a eo xo o oc o o a c o o 4AH. 48H o o o a oc a o o o o , o o o p ca o o o ep ee . a o pa ae a e e ce e a o a AX, o o ep apa pa a o pe e e a e a p e o ep e , a a e o a o a pec o ep e e a c o o o po pa o . Kpo e o a 3, ac ae o o AL, B o c a o o - e e a apa e pa. DS:DX o a a a c po , a a o ep e , a ep ae a o ASCII 0. Heo xo o a a o oe a a, a pac pe e .COM .EXE, oc o DOS a o c ae e c ae , o o e po pa a . Ha o e , ES:BX o a a a 4- a o apa e po , o op co ep (1) 2- a o ep apa pa a, a e a p a c o ep e (2) 2- a a op p , o op e c o o a c - 6 - p a peco o ep ee. B a ec e o epa apa pa a a o c o o a c o, o pa ae oe AX, o epa apa pa a o e e o o o a a . a op p ae c e e e, o o opo o - c e a peca pe x p apa e po o ep ee. c o e o ep apa pa a, a a p ae c o ep e . oc e o o a o c a o e , o e o ep e e a p e . poc o e o ep e o a , o o o o a , a p a ce o e o e o ep e . Ec p o pa e c a o e a epe oca, o a o a ee o e o pa e AX. Ko pa e 1, ec a a e ep o ep , 2 - ec a e a e , 5 - p c o x o ax 8 - p o c c oc a o o a . oc e o o a o ep e a p e a , e o o o oc a a e o (far) po e pe. B ce e e a x o e c a o e xc o a a e , o pe e o o . Ce e a ac a a e poc o pa a e e o o o ce e . C e e e o ep e o o c e o axo e e pa e ce e a o a o ep e o e e pe a a a 16 ( epe o e apa pa o a ). B e p e e o p epe e epe e e OVERLAY_OFFSET CODE_SEG o e e o a a p o pa o c a o a a e . O a a p e , o epe e a e o e - a c c p e CALL DWORD PTR OVERLAY_OFFSET. O ep e o e o o po pa o co c o ce e a a x c e a, xo a pa o c o e c c e o ce e a e po pa . p o e o ep e a e e ce e a e o co c e o o ce e a a x o o o e e o DS. ;--- a ep ae po pa ce e o ZSEG SEGMENT ZSEG ENDS ;--- ce e e a x OVERLAY_SEG DW ? OVERLAY_OFFSET DW ? ;c e e e o ep e CODE_SEG DW ? ;ce e o ep e - o e PATH DB 'A:OVERLAY.EXE' ;c e o a a c e e e 0BLOCK DD 0 ;4- a o apa e po ;---oc o o ae a MOV CODE_SEG,CS ;co ae o CS MOV AX,ES ; o p e a e e ce e a PSP MOV BX,ZSEG ;a pec ce e a o a po pa SUB BX,AX ; c e pa oc MOV AH,4AH ; o ep SETBLOCK INT 21H ;oc o o ae a JC SETBLK_ERR ; a epe oca o op o o e ;---o o a o ep e MOV BX,100H ;o o o ep e 1000H a MOV AH,48H ; o e e a INT 21H ; e ep AX:0 a ae a o JC ALLOCATION_ERR ; a epe oca o op o o e MOV OVERLAY_SEG,AX ; a acae a pec ce e a o ep e ;--- c e e c e e o ep e o o o ce e e MOV AX,CODE_SEG ; ae a e e ce e a o ep e MOV BX,OVERLAY_SEG ; a e ce e a o a SUB BX,AX ;BX co ep c o apa pa o MOV CL,4 ;c ae o c o a 4 a e o SHL BX,CL ;o o e aax MOV OVERLAY_OFFSET,BX ;aoae ceee ;---apa epoo oepe - 7 - MOV AX,SEG BLOCK ;ES:BX aae a o apaepo MOV ES,AX ; MOV BX,OFFSET BLOCK ; MOV AX,OVERLAY_SEG ; o e ae a pec ce e a o ep e MOV [BX],AX ; ep oe c o o o a apa e po MOV [BX]+2,AX ;ce e o ep e - a op p LEA DX,PATH ;DS:DX a ae a a MOV AH,48H ; o ep EXEC MOV AL,3 ; o a p o ep e INT 21H ; a p ae o ep e JC LOAD_ERROR ; a epe oca o op o o e ;--- e ep po pa a a ae c c o e a . . CALL DWORD PTR OVERLAY_OFFSET ; o o ep e . ; o a a DWORD PTR, a a o ep e - . ; a e a po e pa ;--- oc o p e c p p , o a e e ca o ep e DSEG SEGMENT ; a o o, c a a ae ce e a x . ;o c ae c e o ce e ( c o e c . ;c e a e po pa ) DSEG ENDS CSEG SEGMENT PARA PUBLIC 'CODE' OVERLAY PROC FAR ; ce a ' a e a ' po e pa ASSUME CS:CSEG,DS:DSEG PUSH DS ;xpa DS a e po pa MOV AX,DSEG; c a a ae DS o ep e MOV DS,AX . . POP DS ; occ a a ae DS p a ep e RET OVERLAY ENDP CSEG ENDS END 4. peo pa o a e po pa a .EXE .COM. po pa c a acce epe e o o oc peo pa o a c o po pa o o o op a a EXE op a COM. a EXE e a o o o , co ep a op a p ; DOS p ae e o op e a peca po pa p a p e. C p o c opo , a COM c ec a o e, o p a e pe e c - o xpa c e o e, o opo a p ae a po pa a o a a a . o o p e a EXE o e e epe a 768 a o o e a c e, e x COM a e (xo p a p e a o a a o a o oe ec o). a COM a e c pee a p a c , oc o e pe e c p . p x pe ec x e , a e o op e po pa c o c o c o e , o x o o o peo pa o a COM. p a - o po ecc c a o a peco , c a x c ce e pe c po . Ha p ep, po pa a o e a a a a a o o ac a x c e o o : MOV DX,OFFSET DATA_AREA MOV AX,SEG DATA_AREA MOV DS,AX C e e e DX c a o c c a o o ce e o o pe c pa DS. Ho a oe - 8 - a e e o e p a ca DS? po pa a pe e a co a pec, o o ep apa pa a, o opo e pac o a a c DATA_AREA a c o o o, a oe ec o a e a p e a po pa a - a o a c o epc MS DOS, a a e o o o, a e pe e e po pa axo c a x a pecax a . o o p e o pe o o o po pa o o o o c a o e o op e ce e e a e epe c e e o oc e o a a a po pa . a e , o a DOS oc ec e p , a e e a a o o a peca po pa p a e c ce e a e , a a a co e a peca, pe e e ce e o pe c pe. a COM e a c p e, oc o o xpa c a o e, o e a c ca ce e a. Bce po pa e xpa c o oc e o a a a o o o o ce e a, a ce a e c e . o o p e c po pa a e o e pe a 65535 a o e, o coo e c e a c a o c e e , o opoe c ec e c o e o cxe e a peca ( oc o epx ac o o o a a a c e o , o pea oe poc pa c o oc oe o a a x e o o e e e 65535 a , xo c e o ce e p eo xo oc o e ece a pa 64K a o o o a). B a ax COM ce ce e e pe c p a a a a a o PSP; cpa e c a a EXE, e DS ES a - p c a a o o pa o , o CS a ae a ep a c e a PSP. pe c a e po pa e a a COM pe e c co e e c e x pa : 1. He o op e po pa e po e p . B ec o o o, o ec e ca oe a a o e , po e START, a ep e po pa o epa opo END START. 2. o ec e a a e po pa o epa op ORG 100H. o o epa op a ae a a o o a ( .e. c a a ae c e o a ). po pa COM a a c c 100H, o e c ep a o , c e a PSP, oc o CS a ae a a a o PSP, o opoe pac o o e o a 100H a e. o o o a a o e e c o o p o o ec a o ec e o a pec 100H c p JMP. 3. O epa op ASSUME o e c a a a DS, ES SS a o pa o , o o co a a co a e e o o o o ce e a, a p ep, ASSUME CS:CSEG, DS:CSEG, ES:CSEG, SS:CSEG. 4. a e po pa o o e a c o ec e po pa , o ex op, o a o e epe e a c o o . e a a po pa c o ac a x, oc o a poacce ep o e a a coo e o o ax p ep o poxo e, ec e c cc a e a op a x, o op e e e o ap e . epexo a a a o a c o e a ec e ep o o a po pa c p JMP. 5. He c o o a ca ce e o a MOV AX,SEG NEW_DATA. oc a o o a a o o o c e e e . B ac oc , o o c a o o , c o e a a e po pa c a o ce e a a x, MOV AX,DSEG / MOV DS,AX. 6. C e o ce e o oc o c ae c a a o o e. a a e c e a a p e c a ep a pec o o poc pa c a 64K, c o - e o o po pa o ( a o ae , o c e pac e a ). B po pa ax COM o o e c e a e e e 64K, SS SP o e e . e e , o p o o o e po pa o o o ac coo e e o o e, a a ee, o ce e c e a o c c e . op p e e o. 7. a ep e po pa o c p e RET, o pep a e 20H. pep a e 20H - o c a ap a a ep e po pa o pa a pa e DOS. a e o a po pa a a ep ae c c p - e RET, a ca o e e c o e c pep a e 20H. o po cxo o o , o ep a c e a ep o a a o co ep 0. p o e a ep a e c p po pa RET, 0 a ae c c e a, - 9 - epe a a a c e o a a a a o PSP. Haxo a c o e e 20H, o e c a c e a c p po pa , a epe a pa e DOS. Bce o o a ae , o Ba e a o p c ap e po pa o e a a c e DS 0 (PUSH DS / MOV AX,0 / PUSH AX), a o pe e c EXE a o . oc e o o a po pa a c o c p po a a a o pa o , acce p e o o e ee a o o. a e peo pa e ee op COM c o o EXE2BIN, e e c MS DOS. Ec po pa , oc poe o o o o o MYPROG.EXE, o poc o e e o a EXE2BIN MYPROG. B pe a e B o e po pa a c e e MYPROG.BIN. Bce o Ba oc a e c oc e o o c e a - epe e o a o a MYPROG.COM. B o e e a e cpa c o o a o a EXE2BIN MYPROG MYPROG.COM, o e a a c pac pe e COM. H po e . B a o p epe co ep c o a opo a po pa a, o opa o c a o e epe a e e o pe e e o ec o a o e e a e a e o coo e e a pa . O a o e c p epo opo o o o cop a, o op x op a COM ea e . CSEG SEGMENT ORG 100H ASSUME CS:CSEG, DS:CSEG, SS:CSEG ;--- a e START: JMP SHORT BEGIN ; epexo o MESSAGE1 DB 'The dip switches are set for $' MESSAGE2 DB 'disk drive(s).$' ;---ea epo ac cooe BEGIN: MOV AH,9 ; 9 pepa 21H - o MOV DX,OFFSET MESSAGE1 ;c po INT 21H ; o c po PUSH AX ;coxpa e o ep a ee ;--- o ae c a o epe a e e op a A pocxe 8255 IN AL,61H ; o ae a op a B OR AL,10000000B ; c a a ae 7 OUT 61H,AL ; a e e a IN AL,60H ; o ae c a o epe a . AND AL,11000000B ; e e c ap e 2 a MOV CL,6 ; o o o a c AL pa o SHR AL,CL ;c ae 2 a a a o ADD AL,49 ; o a e 1, o c a c 1 ; 48 epeoa ASCII MOV DL,AL ;oeae pea DL MOV AL,61H ;o occao op B AND AL,01111111B ;c pac ae 7 OUT 61 H , AL ; o pa ae a ;--- e a c a a o e e MOV AH,2 ; 2 pep a 21H INT 21H ; e a ae c o DL ;--- e a opo o o coo e POP AX ; epe o ep co c e a MOV DX,OFFSET MESSAGE2 INT 21H ; o c po INT 20H ; a ep e e po pa CSEG ENDS END START 8 c o e a o e . 1. pa e e pac pe e e e c a. Bce c , a e, a ec e, op a o a o a o o pa o . o epx oc c a pa e e a a p o e p ec x o e , a ae x opo a , a opo e c pa a o a ce opa. Bce - c o c o pa ep ce opa 512 a MS DOS. a pac pe e e o a o o ec ce opo , o opoe eo xo o, o ec e o. To o ec o o ce opo a e e o o e c e ape ep po a c e a x . Oc a e oc a oc o e pa a ' ep o o e - ep o o o c a '. o o a ae , o o epe a o e c a a ce opa oc e e o a o c o a pa e e p c a. p o e a a ce opa oc o o a c co pe e e c o o e o ac c a o c pa poca o c , paa oe a ae oc e ac. cpoae c e eoope ceae xapaepc. aco o coco x oee apaex ac, ao oopx ec e oo, o a oe x copo. Bce opo, pacooee a ao pacco o epa, ece aac po. oco oo cex co ac aeo, o ocaec oo epeee ec ao ce opo ooo pa, pee e epexo cee. p po o oocc pa oepao ccea. o paa cpoa c a ecoo paeo (o epex) paoo paepa. o o pe apaep cpoaoo ca o co oac. coe ceopa opeec ao opae, oop acae a opaa ca. opa ae eao oep aoo ceopa. BIOS epe ceopa 1-8, 1-9 1-15, acoc o eoc ca. opo e appc, eco oo o opeec exaec o cee oo e/ac o eeo pa ca. coe BIOS opaac opeeeo ceop, aa oepa opo ceopa. Oao DOS paccapa ce ceopa ca, a o e, oopa epec op, aa o 0, oo a ceop ee co oec oep ceopa. ce ep ceop (opoa 0, ceop 1) coep ac aao ap, oopa ec eoo popao, ooe oep ca c cooo aoe ocae ac MS DOS. ae e o a paee ao, oope coepa opa o pacpeee cooo pocpaca (opa o xpac coopae eoacoc). ae e opeo aao, oop coep cco ao cco a oaao, a ae aae ao ece ca o aac. Haoe, aee e eoe popa DOS IBMBIO.COM IBMDOS.COM, oope cac p cape oecea oep oooc eoxo axoe ap aa COMMAND.COM, oop ecoeo ec ocoo ac oepaoo cce. cpoae c e a ac ap, oopa coep a paeo, oo pae c e eco oepao ccea. Taa paeo coep opa o o, e a ce aaec pae DOS, a ae ep ceop aoo paea coep ac aao ap. B ocao pae opaoa a e, a cea. - 2 - ee a paee ao. DOS FAT . FAT 12- (1.5 ) .

FAT ( ) ; .

FAT FFFF. : D - 8 FF S - 8 FE D - 9 FD S - 9 FC QD - 9 F9 QD - 15 F9 40 . , , IBM/PC, / .

133- 89- (3,5 ) 80 . . , , QD-9 QD-15. _______________________________________________________________ () _______________________________________________________________ QD-9 2 9 80 720 QD-15 2 15 80 1200 _______________________________________________________________ QD-9 D-9 .

QD-9 133- , 89- ( 3,5 ) .

IBM/PC , .

, .

QD-15, IBM/PC , 80 15 , 512 . , .

.

FAT .

: 000 . FF8-FFF ( ). XXX , . . - 3 - FF0-FF7 . (FF7 , ). ( ), . , . FAT , . FAT DOS ( .); , FAT . , : 1. 1.5 (.. FAT) 2. FAT, , . 3. MOV. 4. , 12 , 12 . 5. FF8, - , 12 .

INT 25 INT 26, DEBUG . 1. 2 . 2. . 3. . p oe paepe acepa apaco pacxoec cooe pocpaco, o oa oe c e a paep acepa, o aa paee ao caoc co oo. p paoe c ca DOS apae o FAT a, o oooc coxpa ee a, oo p oo paepe FAT oe pacxooac oo oepao a. oco oco AT e ocaoo oo a, o x pee aoo oe FAT. oo 20M ecepa ee paep acepo, e 10M, oecea oo cooo pocpaca. ce eoc 1.2M pa acep paepo 1 ceop, a a x ocooe aaee coco xpae o ecoo ca, a ceoaeo oaoc oe aa. Cpe poe.

DOS 1CH ae opa o ae paee ao, o e ae ca FAT. oece oep aoe DL, e 0 = aoe o oa, 1 = A, .. p opae DX coep co acepo FAT, a CX - c o a o ce ope. DS:BX a ae a a , co ep a ep a FAT, .e. a o , a a c a. H po e . Ha o o e e o oc FAT e acce epa. O e , o o e e o epa ac epa a 1.5 po o c o po a e c a, c o o pa o a 1 e e o o a c o e e o c op a o . o e o a o a ec o p e pe a . - 4 - ;--- ce e e a x BUFFER DB 1024 DUP(0) ;o o ec o 2 ce opo ;--- ae FAT a LEA BX,BUFFER ; a ae a ep a x MOV DX,1 ; o ec o ep ce opa MOV CX,2 ;2 ce opa MOV AL,0 ; a o e A INT 25H ; ae ce opa POP CX ; occ a a ae c e ;--- o ae o ep ac epa MOV AX,3 ; o ep ac epa AX MOV CX,AX ; e ae o MOV DX,AX ; e ae op o SHR DX,1 ; e op o a 2 ADD CX,DX ;c a ae e co o ADD BX,CX ; o a e a c e e e MOV DX,[BX] ; o ae 2 a a o o ec a TEST AX,1 ; o ep ac epa e e ? JNZ ODD_CLUSTER ; xo , ec a AND DX,0000111111111111B ; o ae o ep JMP SHORT CONTINUE ; xo epe o pa o e e o o ODD_CLUSTER: MOV CL,4 ; o o o a c pa o SHR DX,CL ;c ae c ap e 12 o CONTINUE: : 1. . 2. .

16 , , . ' ' (boot indicator) , .

FDISK 80H ; 00. 80H , . , . 0:7C00. ( ): - 5 - 1BE 1 | ..| | | | 1C2 | ..| | | | 1C6 . | | | 1CA | | | |______________________________________| 1CE 2 | ..| | | | 1D2 | ..| | | | 1D6 . | | | 1DA | | | |______________________________________| 1DE 3 | ..| | | | 1E2 | ..| | | | 1E6 . | | | 1EA | | | |______________________________________| 1EE 4 | ..| | | | 1F2 | ..| | | | 1F6 . | | | 1FA | | | |___________________|__________________| 1FE '' |__05_____|__AA_____| IBM, 10- 512 , (interleave) 6, 17 , 4 . .

FF 00 - ; .

, .

.

: 00 - ; 01 - DOS. '' . ''. 13H ( BIOS) 10- . , , MOV 13 BIOS. ( ; 80H ). , 1 . : 2, 1 . 4- '.'. , -. 4- ''. , - .

'' - , 1FE. , . DS:SI .

: 1. . 2. - / . , . 3. - - 6 - , . Opeeee ocoo cooo pocpaca. popaa oa opopoa ocoe cooe pocpaco cooa ooae o exae eca. Ec eca e xaae, o ooae oe popa cpa poe e oep opa. Cpe poe.

36H pepa 21H cooae coo eec coooo pocpaca a ce. Ece xoo pecp DL, oop oe coepa oep aoe. Haoe o oa ooaaec 0, aoe A - 1 .. p opae BX coep co ocx acepo, AX - co ceopo acepe, a CX - oeco a ceope. Heooe paee oe ae eae pea. B cee pepe poepec, o a xcopoe cee ocaoc o ee epe 2K cooo pocpaca: MOV AH,36H ;oep MOV DL,1 ;aoe A INT 21H ;oae opa CMP BX,2 ;eec 2 coox acepa? JL RUNNING_OUT ;ec e , o coo ae o o o e e/ c a o a pa epa a a. po pa a o e o e a po ep pa ep a a o pa p a . O a o o x p coc o o pe e e c a a ce , co ep a xc a e. p a - o pe e e o o a a a, c e o a o a a e c a o e ep o o a e a o x a x, e e e c ec x. Ko e o, pa ep a a c a a ae c a o a ec e DOS. o a po pa a o e a c pe ep po a c o o o poc pa c a a e e o c o o a . B o c ae a o o p a pe e p o o oc a a ca a o o ep a c , o a e oc a o . a c e ' o ' pea o o oc c a a o e e a , o op e c a o o a c c o x ce opax, o e e x a a p o o epa . Cpe po e . FCB 23H pep a 21H coo ae c o a ce a e. Ec p ca a a c 1 a , o e o pa ep e o pa e a ax. DS:DX o a a a pa o o p o o a a. a e o e . Ec a e a e , o AL o pa ae c FF. B po o c ae AL o pa ae c 0, a c o a ce o e ae c o e o epa a c p o o oc a FCB ( a 33-36). pa o pa o o e a c FCB o o c a o e o oc e o p a a, o epe o o ; o x a oe o e pac o o e o o c e e 14 FCB. Ec pa ep a a e o o e c a a c , o coo ae oe c o a ce o p e c epx. Bo p ep, o opo c o e c a a c pa a 1: ;---o pe e e e pa epa a a LEA DX,FCB ;DS:DX a ae a FCB MOV BX,DX ; o p e a a e BX MOV CX,1 ;pa ep a c CX - 7 - MOV [BX]+14,CX ; e o e pa epa a c FCB MOV AH,23H ; coo a a pa ep a a INT 21H ; o MOV AX,[BX]+33 ; o ae a ac pa epa a a MOV CX,[BX]+35 ; o ae c ap ac pa epa a a Co a e/ a e e o a a o a. po pa a o e co a a a o a a o , p o e e o op x c o . co a o a a o a eo xo o, o o o pa e epe o o c oe ec o op e o a a o e. a e o a a o a eo xo o, o o e co ep a a o cc o a p e o a a o . Kpo e o o, B e o e e a o a a o , o op e c Ba e a a o o ( o , c o op o o a o c ce o epa a a a o a ). O e a e, o e o o o a op e o a a o . Cpe po e . oc o pa e o a o o c a o o op e o a a o , o co a a e o a a o a a o c o o a ec p op a o . Co a e o a a o a DS:DX o a a a c po , a a o e a a o , o opo o e co a o a a o . C po a o a a ep a c a o ASCII 0. o p o a a o a c e e PRIMATES op e o a a o e a o e A: a o a ca c po e 'A:PRIMATES'. o p o a a o a p o o a a o e c e e MAMMALS a e 'A:MAMMALSPRIMATES'. a o e A: o e o e o ec B pa o ae e c a o e e , c o e o o a , o e a a c c e e o a a o a. oece AH 39H oe pepae 21H; ec aa pa , o e coa o aao. B poo cae e caoe a epeoca, a AX e coepa o o 3 ( eepe) 5 (e oca). B pepe coaec oaao PRIMATES: ;--- ce e e a x PATH DB 'A:MAMMALSPRIMATES',0 ;---co ae o a a o c e e PRIMATES LEA DX,PATH ;DS:DX o a a a MOV AH,39H ; o ep INT 21H ;co ae o a a o JC ERROR_ROUT ;o pa o a o o a e e o a a o a a e o a a o a a o c op po a c po , o oc co a a c o , o op B a a p co a a a o a. a e o ec e AH 3AH o e pep a e 21H. O p e o e AX o pa e o 3 5 ( o 5 o e a a , o a a o e c o ). e e/ e e e o a a o a. o a a o o o o o o op e o a a o , a c e e - 8 - o o, o o xpa c a o e a , a e apa ee pe o pe e e x ce opax. o a a o e o o o c a c o a a , oc o o e a a o a, o oc c o a a o , ee c e a a a p o (c c a o e o 5) . o a a o a a c c x c e a x 32- a x o e o , ep o op x ee o a, a opo - e o . O op e p o a a o cpe o p a x a a o o . Cc a o a a o e o po a c a c a o e cc a a . pe o a ae c , o o a a o o e po a a o p o a , o o po e e coc a e p a a p e o a . Ho, co a e , co a e MS DOS o ec 0 o e a a e e o , o oc xc o a a o a . B pe a e DOS c ae , o o a ee e o a ae c a e o. He poc o o c oco a peo o e po e . Cpe po e . pa o epe ec p op a o , o op e c o o a c oc a op e o a a o [5.2.1] o a e poc o o pa a c o o a a o . o ec ce co ep oe a a o a a o poc o c o o a 4EH o c a a o *.*, a a e o op o c , c o 4FH. Ko a o e e e a o , o e c a o e a epe oca, a AL e co ep a 18. Ka pa , o a e o ap e o epe o e e , DTA e a ca a op a o a e, a o e o (o e ae c o o a e DTA x, c o x ec p op a a). C e p ep o o e cex o x a o o a a o a. ;--- ce e e a x PATH DB 'A:MAMMALS*.*',0 DTAH DB 256 DUP(?) ;--- c a o a DTA LEA DX,DTA ;DS:DX a a a DTA MOV AH,1AH ; c a o DTA INT 21H ; c a a ae DTA ;--- e ep a MOV AH,4EH ; o ep LEA DX,PATH ; a ae a c po MOV CX,0 ; o o op a e a p INT 21H ; e *.* JC ERROR ;o pa o a o o ;--- o a a NEXT_LINE: LEA BX,DTA ;BX a ae a DTA ADD BX,30 ;c e e e e a a NEXT_CHAR: MOV DL,[BX] ; o ae c o e CMP DL,0 ; po ep a a o e c po JE END_STR ; xo , ec o e MOV AH,2 ; a e, o c o INT 21H ; INC BX ; e ae a a e JMP SHORT NEXT_CHAR ;c e c o ;--- o pa ape / epe o c po o e c po END_STR: MOV AH,2 ; o a c o a MOV DL,13 ; o o pa a ape INT 21H ; o MOV DL,10 ; o epe o a c po INT 21H ; o ;--- e c e a - 9 - LEA DX,PATH ; a ae a c po MOV AH,4FH ; o ep INT 21H ; e c e a JC FINISHED ;ec e , o xo JMP SHORT NEXT_LINE ; a e o a a FINISHED: o e e/ c a o a e e o a a o a. Te a a o o a a o , o opo DOS e a , o opo o e a a . Ec e c a o e o po o o, o e a a o - e c op e a a o o . Cpe po e . 3BH pep a 21H c a a ae e a a o . DS:DX o a a a a a o c a ap o e a c po a o a a ep a c a o ASCII 0. Ha p ep, B:BIRDSPARROTSPOLLY e ae POLLY e a a o o . B: o e o e o, ec o e a o e o o a [5.3.1]. o c e a e op e o a a o a o e A: a e A:. B p epe e a a o o c a a ae c POLLY: ;--- ce e e a x PATH DB 'B:BIRDSPARROTSPOLLY',0 ;--- e ae POLLY e a a o o MOV AH,3BH ; o ep LEA DX,PATH ;DS:DX o a a a INT 21H ; c a a ae e a a o o o pe e a o a a o e c e a o c o o a 47H pep a 21H. DS:SI o a a a o ac a x pa epo 64 a a, o op e a ca . B DL a ae c a o e , p e 0 = ' o o a ', 1 = A, 2 = B . . p o pa e o pa ae c po e e a o e . Ec a a ec ec a o e , o AL o pa ae c o o 15. C po a a ae c c e ep o o o a a o a e o , a e c o pa o oco ep . a ASCII 0 c a p e o o e c po . B a o p epe e e o a a o a p c a ae c epe e o 'CURRENT_DIR': ;--- ce e e a x CURRENT_DIR DB 64 DUP(?) ;--- o e a a o MOV AH,47H ; o ep LEA SI,CURRENT_DIR ; a ae a o ac a x MOV DL,1 ; a o e A INT 21H ; o e ae c po o a pec DS:SI o e e/ c a o a pe e a oc e e o oc a a Ec o c a o , o a 22-23 32- a o o e e a a a o a co ep a pe oc e e o oc a a . a 24-25 - co ep a a . a e e o c e ee: Bpe : 11-15 ac (0-23) 5-10 (0-59) 0-4 ce (0-29 c 2-ce ep a o ) - 10 - a a: 9-15 o (0-119, c e e e c 1980 o a) 5-8 ec (1-12) 0-4 co (1-31) := 1980 + _ div 512 := (_ mod 512) div 32 := _ mod 32 = ( - 1980) * 512 + * 32 + = * 2048 + * 32 + / 2 Cpe poe. Meo oca a c cooae paeo oa aa ooe o a oceeo oca a, o e pe. Koa FCB opaec e 0FH pepa 21H, o aoec xaoe oe a epeeo opae. o oe pacooeo FCB co ceee 14H. C po copo, oc a c oo ecpopa aa ooe a o, a cao a pe oceeo oca a.

57H pepa 21H oe ce oepa. cao pee a oece oep aa BX, 0 AL. oe a pee ao oec AL 1. B oox cax aa coepc DX, a pe CX. aee o coaae c e, o ocao ae. B execo pooce o MS DOS epaec, o ae a opa axoc CH DH, aoopo. Ha cao ee o e a. p ooe o caaaec a epeoca, a AX opaaec 1, ec AL aao epaoe co 6, ec oxo ecpop aa. B cee pepe opeeec ac, oop oce oc a: ;--- ceee ax PATH DB 'B:NEWDATA.BAK',0 ;---opae a LEA DX,PATH ;aae a cpo MOV AH,3DH ; op aa MOV AL,0 ;opae e INT 21H ;opae a JC OPEN_ERROR ;epexo a opao o ;---oae a pe oca a MOV BX,AX ;oeae oep aa BX MOV AL,0 ;o e pee MOV AH,57H ;oep INT 21H ;oae pe oca JC TIME_ERROR ;epexo a opao oo ;---cae , oocec aca, aao CH MOV CL,3 ;oo c SHR CH,CL ;eep CH coep ac oca Cpae aee o ac a. DOS coe ec pax apo ao, oope a ao a opeee cac. a oe e ecoo x apo oopeeo (o e ce). Ap caaac 12- ao 32-aoo eea aaoa. Mae ec o e aee, a ocae o pa . ae: ec 5 = 1, o a ee co pee ocee apxa 4 = 1, o a ec oaaoo - 11 - 3 = 1, o o ee ec e ao, a eo oa 2 = 1, o a ec 'cce' 1 = 1, o a cpa p oce o aao 0 = 1, o a oe oo e 5 o apx , coe popaa BACKUP RESTORE DOS. o cpacaec 0 oce apxa caaaec, oa c ao coa paoa. p cee apxa eeee a o oape pooppoa. Cpe poe.

43H pepa 21H oe a axo, a e ap aa, o oo ec a op c oo eoa ecpopa ao, a e c oo eoa paeo oa aa. He aaoo FCB. a apo oe caoe p coa aa [5.3.2], co pacpe pa o aa. Ho ec B oceoaeo opoee FCB, ee cao apo ae apoee a, o eo ocac epoaae ap. Xo, oeo, B oee e ap a- oxo e, o aoo poe cooa , co eo ecpopa ao. o cooa 43H, oece 1 AL, o pco a a apo, coepac CX (a cao ee CL, oco CH pae 0). Moo aoopo oec AL 0, o CX opae e a apo aa. B oox cax DS:DX o aa a cpo, a a. Koe cpo oeaec ao ASCII 0 (oop e xo co 63-x coo). B pepe cac 'hidden' (cpa) pcaaec a OVERDUE: ;--- ce e e a x PATH DB 'A:ACCOUNTS',0 ;--- ae p a c p a o o a a MOV AH,43H ; o ep MOV AL,0 ; ae a a p o LEA DX,PATH ;DS:DX a a a INT 21H ; a a p o CX JC ERROR_ROUTINE ;o pa o a o o OR CL,10B ; ae 1 MOV AH,43H ; o ep MOV AL,1 ; a e e a a p o INT 21H ; e ep a c a c p a a epe oca c a a ae c p o o e o . B o c ae AX o pa ae c 2 - ec a e a e , 3 - ec e a e 5 - p p x o ax ( e oc a). e e/ e e e e o a. Me a o a c e - o e e a a o a, e c e a a p . Me a a ae ep e 11 a o e e a, o oc ec e pac pe a a. a a p o o c e e 11 co ep a e e 8 ( 3 = 1). o pe e a a o c o o pa o . O c o c o o a p a e c o, o a e e e o c o o a e DIR. Me a o e a a o a a o e. O a e c epe opo cex a o a p o , o a e e a e o a e e 8. o c epe - 12 - e a o poc o o ec E5 ep a coo e c e o e e a - ca a a p o o o e e . o e e a o a ca o e 11 c o o (oc a o a o a o po e a ). o p c o e o a c , o op e e ee, a o a c oe ec o a a o e a ca a e coo e c a p , e o o e e pe e c . H po e . B e p e e o p epe pe o a ae c , o B co a ep a x pa epo 3584 a , xpa e cex ce ce opo a a o a c e e oc 360K. ep a ae c DIR_AREA. B ep o p epe e a o a e c o c , , ec o a e a e a, o o c coo e e o ee o c c . o c a o ac epa ce opo o o c ce e e a x; e o ec a a a , a a e oc o o ee. ;--- ce e e a x VOL_STRING DB 'The volume label is $' NO_LABEL DB 'There is no volume label $' DIR_AREA DB 3584 DUP(?) ;--- ae 7 ce opo a a o a MOV AX,SEG DIR_AREA ;ce e epa MOV ES,AX ; MOV BX,OFFSET DIR_AREA ;c e e e epa MOV DL,0 ; o ep a o e MOV DH,0 ; o ep o o MOV CH,0 ; o ep opo MOV CL,6 ;c ap o ce op MOV AL,7 ; c o ce opo a a o a MOV AH,2 ; o ep e INT 13H ; ae a a o a ;--- e e o a, cpa a a a p o c 8 MOV CX,112 ; c o e e o ADD BX,11 ;c e e e a p o TRY_AGAIN: MOV AL,[BX] ; epe 1- e e CMP AL,8 ; o e a o a? JE GOT_IT ;ec a, o xo ADD BX,32 ; a e a c e . e e LOOP TRY_AGAIN ; ;--- o coo e e o o c c e o a MOV AH,9 ; o a c po LEA DX,NO_LABEL ; a ae a c po INT 21H ; o ee JMP SHORT CONTINUE ; a o e ;--- o c po , a e o a GOT_IT: MOV AH,9 ; o a c po LEA DX,VOL_STRING ; a ae a c po INT 21H ; o ee SUB BX,11 ; a a e a e MOV CX,11 ; e 11 c o o MOV AH,2 ; o a c o o NEXT_CHAR: MOV DL,[BX] ;c o DL INT 21H ; o c o INC BX ; epexo c e e LOOP NEXT_CHAR ; CONTINUE: - 13 - o c epe e o ec e c e o GOT_IT: GOT_IT: MOV AL,0E5H ; o o e c o o e e a SUB BX,11 ; a a e a a a o e e a MOV [BX],AL ; e e ep a o e e o a, a o ec o o o c o o a GOT_IT c e o . pe o a ae c , o B o o o e o 11- a c po NEW_LABEL. GOT_IT: LEA SI,NEW_LABEL ;SI o e a a a c po SUB BX,11 ;BX a ae a a a o e MOV DI,BX ; o e ae a a e DI MOV CX,11 ; epec a 11 c o o REP MOVSB ; epec ae c po o co a e o o c o o a o e ca o , o a o a e c a o a a p o pa 8 (B o e e poc o o a ASCII 8 c po e, co ep a e o e , a a a a p o e ocpe c e o c e e a ca o e o ). , a o e , o cex c a x e e a a o a, eo xo o a ca a a o o pa o a c . O p o e poc e . ;--- a c e e x ce opo a a a c MOV AX,SEG DIR_AREA ;pe c p a p e MOV ES,AX ; MOV BX,OFFSET DIR_AREA ; MOV DL,0 ; MOV DH,0 ; MOV CH,0 ; MOV CL,6 ; MOV AL,7 ; MOV AH,3 ; o ep a c ce opo INT 13H ; e e/ a c o pe e e x ce opo . e e a c o pe e e x ce opo c a oc o o c o - e c p oc e a a o a c a e o a e pa e e a o , ce opa o op x ce a pac o o e o o o e ec e. B o pe a e e ce opo oc a o o e o o, a c a co o o ce opa pe e o o a e o po epe epe ep c o o a e . O a o e c e a a a o a pa e e a o e ae , o a e o pa p e cex a x a c e. Ka DOS a BIOS peoca e ac opeeex ceopo. Oao o aa ceopa o-pao. IBM PC, XT PCjr poepa BIOS pee opa o oepe copo (0 1), oepe opo (0-39) oepe ceopa (1-8). -a opae acaoo oepa ceopa paoo 8 o eo paec ecoee x a. Oao AT oep ceopa oe ec o 8, 9 15, a co opoe oe ec o 39 79. DOS aa ceop o oepo, oop aaec oec oepo ceopa. Haa c apoo ooa ca, ceopa pcaac oceoaeo opacae oepa. o eo oe cooa co poooo paepa a. Oce ocex ceopo aaec co copo 0 opo 0 ceopa 1 pooaec a copoe 1 c opo 0, oce eo epexo a copo 0 opo 1 .. (Ha ox cpoax cax caaa - 14 - poxoc ec e p.) B acoc o oo a opapoa c, p epexoe a ce opo oec oep ceopa eaec a opeee e. ce eoc 360K aa opoa (c eo oex copo) oae oeco oep 18. Oao ce eoo coc e, o oce aaec c . Ta opao ep ceop a opoe 3 copo 2 oe e oep pa 3*18 opoe 0-2 c 9 copo 0 opo 3 c ea, aaa a ep ceop opo 3 copo 1. a ca paa 64. oec oep ceopa a 1 ee oo ca. Ha pc. 5-4 cpaaec eo aa ceopa DOS BIOS. Cpe poe. BIOS coe 2 pepa 13H e ceopo 3 pepa 13H ac ceopo. B oox cax DL oe coepa oep aoe o 0 o 3, e 0 = A, 1 = B .., DH - oep oo (copo), 0-1. CH oe coepa oep opo o 0 o 39, a CL - o ep ce opa o 0 o 8. AL co ep c o ce opo , o opoe eo xo o c a . o c ae c cpa a e o ee oc ce opo , o o ee e oc a o o o c a e e . ES:BX o a a a a a o epa a , a o e a c a e o a o pa c . p o pa e AL e co ep a c o po a x a ca x ce opo . Ec o epa c e a, o a epe oca e pa e . Ec o pa e 1, o AH e co ep a a c a ca c o o o epa . ;--- ce e e a x BUFFER DB 4000 DUP(?) ;co ae ep ;--- ae ce opa MOV AX,SEG BUFFER ;ES:BX o a a a ep MOV ES,AX ; MOV BX,OFFSET BUFFER ; MOV DL,0 ; o ep a o e MOV DH,0 ; o ep o o MOV CH,0 ; o ep opo MOV CL,1 ; o ep ce opa MOV AL,1 ; c o ce opo e MOV AH,2 ; o ep e INT 13H ; pep a DOS 25H 26H a a c a a co e ce opa c a, coo e c e o. Ha o o ec o ec o ep c ap o o o ce opa DX, a DS:BX o a a a ep. CX co ep c o ce opo e a c , a AL - o ep a o e , e 0 = A, 1 = B . . po e p op ce pe c p , po e ce e x. p o pa e pe c p a o oc ae c a c e e, oc a c e e po e . He a e o o a e e co c e a cpa oc e o pa a ( p epe o a e e a ae c CX). ;--- ce e e a x BUFFER DB DUP 5000(?) ;co ae ep ;--- ae ce opa PUSH DS ;coxpa e pe c p MOV AX,SEG BUFFER ;DS:BX o a a a ep MOV DS,AX ; MOV BX,OFFSET BUFFER ; MOV DX,63 ; o ec o ep ce opa - 15 - MOV CX,9 ;ae c opo MOV AL,0 ;aoe A INT 25H ; e ceopo POP CX ;aae co cea a POP DS ;occaaae pecp JNC NO_ERROR ;ec e o, o a pooee CMP AH,3 ;poepa oox oo . . NO_ERROR: ;pooee popa Ec p opae a epeoca pae 1, o pooa oa o cae AH AL coepa a oex aa caca o. Ec AH = 4, o aa ceop e ae, a ec AH = 2, o c eepo oopapoa. Ec AH = 3, o a oa ac a ce, ae o ac. Bce ocae ae AH oop o aapao oe. 9 Taep . 1. caoa ee aepa. Bce IBM PC co pocxe aepa 8253 ( 8254) coacoa co o pocxe ccex aco. co o ccex aco peopaec o c, a oceoaeoc x co ocaec opeee pee, o o oca a poooope oepa eepa a opeeeo aco. Mpocxea 8253 ee p ex eacx aaa, a oopx oe popapoac. Mpocxea 8253 paoae eaco o poeccopa. poeccop popape pocxe ae opaaec p ea. Ta opao 8253 ece a ac peaoo pee - oa cae co c eaco o oo, o pocxo oepe. Oao, aca popape epa cocae peo 1/12 ce. ocea epao pee ac ae-o pe cpeca. eo o o pe c o eoo aaa pocxe aepa aaac epeeo, axoec oac ax BIOS. o poecc oaa a pc. 2-1. o aoee oo aaec oceo pee co. 18.2 paa ce xo aaa 0 opaaaec aapa pepae (pepae aepa), oopoe eaoo ocaaae poeccop eae ce pee co. co 0 cooece oo 12:00; oa ce ocae ae aeoo 24 aca, o cpacaec a o. poe pe eee co eo opeeec eee oaae cea a 18.2 ao ce. Ce pee co coec oce oepa, cax co peee. 2. popapoae pocxe aepa 8253/8254. Ka pex aao pocxe aepa 8253 (8254 AT) coco pex pecpo. oc ao pe pex pecpo ocecec epe o op; oepa opo o 40H o 42H cooec aaa 0 - 2. op ca c 8- pecpo oa/oa, oop ocae pae ae oo aaa. Koa aa apopapoa, o epe o op ocaec xaoe aee, a a caaa. o co epeaec 16- pecp a (latch register), oop xpa o co oopoo o oeaec 16- pecp cea. B pecpe cea co eaec a e a pa, oa c o ccex aco pocaec epe aa. Koa aee oo ca ocae , o aa ae xoo ca ae oa o coepoo pecpa a epeaec pecp cea, oce eo poecc oopec. e ee co pecpe cea, e cpee p. Bce p aaa cea a: poeccop e ae e ae x. Teee aee oo pecpo cea oe poao o oe pee, e a ce. Ka aa ee e xoe o xo . Bxoa o c, oae peae ocea. Haaee x cao appec acoc o a IBM PC: Kaa 0 coec cce aca pee co. O caaaec BIOS p cape a opao, o ae c peo 18.2 paa ce. 4-a ce x co xpac a o apec 0040:006C (a a xpac ep). Ka c pe pepae aepa (oep 8) eo o pepae eae oaae cea. o aapaoe pepae, oo oo opaaaec cea, eaco o oo, e a - 2 - poeccop, ec oo papee aapae pepa (c. ocee [1.2.2]). Bxoa coec ae cxpoa eoopx cox oepa, oo ec B e ee aee, o Ba eoxoo occao epoaaoe aee epe opaee c. Kaa 1 pae ooee a oo eo e e poa. Bxoa oo aaacaa c pocxeo poo oca a ee c acae pocxe DMA oo c a. Kaa 1 coec ocea aopoax co aco pee co, c e o oo o oo aee cea oce aepe cox oepa. Kaa 2 ca c poooopee oepa o poo poce pooe c eepa a. popac e o opo a op aao, e a oca. poce o eeppoac oopeeo c p popa oepa, a oee coe oe e o oc a ce cooa poeccopa. Kaa 2 oe ocoee o poooope cooac cxpoa. Haoe, xoa aaa 2 caa c ao oepa. Oao a e e eeppoa o ex op oa e cea opeeee cao pocxe epeca c epepe 8255. e xoe aoo aaa coco aco, oopa epeae ca o pocxe ccex aco , aaeo opoa (gate), oopa ae ae ca o aco. Bopoa cea op cao aco o aaa 0 1. Ho o o ap aaa 2, o ooe eoope ceae a co o. Bopoa apac caoo aeo a opa c apeco 61H, oop ec pecpo pocxe 8255; cpoc oo a coa opae opoa. a pocxea ocaec [1.1.1]. Oe o - a xo aaa 2 - 1 opa 61H ca c ao ae oe cooac eepa a. Ha pc. 2-2 peea apaa pocxe aepa 8253. Mpocxea aepa oe cooac eocpeceo peex oepa, o o peo ae o. Bo c aco pooc 1.19318 oo pa ce (ae a AT, e ccee ac cpee, pocxea aepa oae ca c acoo 1.19 M). oco acaoe co, oopoe oe xpac 16 ax, pao 65535 oco o co ec a aco co o aco, pa 18.2, o aca oo epa e ca pae peo 1/12 ce. oo oco peex oepa co ce pee co BIOS. ocea pee aec aee pee co cpaaec c eoop paee aoe aee opeee ca co, poex c oo oea. Cea coco ooe cooa ce pee co oepa peao pee. 8253 peocae papaoa oopoa 6 peo pao aoo aaa. popac oo opaac pe peo, a aaa 0 p cxpoa, a aaa 2 cxpoa eepa a. B o pee, a oo pecp a oae co, o eeeo apae o pecp cea. Koa aee cee ocae pecp a oeo epeapae ce .. B eee oo ocea xoa ea, a eee oo - ea. B peae oac pooe o, oope oaoo po a eepa a, a ocea. 8- oa pecp pae cocoo ap ce aa. Apec opa oo pecpa pae 43H. Koao pecp epeaec a, oop oop ao aa popapoa, ao pee, a ae o oa aa pecpa a o - 3 - epea. O oaae ae e co oo BCD (ooopoao eco) ope. aee o oo pecpa aoo: 0 ec 0, oe ae, ae BCD 3-1 oep pea, 1 - 5 (000 - 101) 5-4 oepa: 00 = epea aee cea a 01 = a/ca oo cap a 10 = a/ca oo a a 11 = a/ca cap a, oo a 7-6 oep popapeoo aaa, 0 - 2 (00 -10) popapoa pocxe 8253 ao o p ocox aa. oce oo a pe a aepe, apopapoa aa eeeo aae opoa o oo popae. 1. oca oa pecp (43H) a, peca eo o, oope pa aa, cac e/ac, pe oepa op pecae ce. 2. aaa 2 ao pape ca o aco, cao 1 0 opa c apeco 61H. (Koa 1 oo pecpa caoe 1, o aa 2 pae ao. Cpoce eo 0 oepa cxpoa.) 3. Bce aee cea o 0 o 65535, oece eo AX, oe caaa a, a ae cap a pecp oa/oa aaa (40H - 42H). Kaa pocxe 8253 paoa cea. o o pe popa cea o occaaa aae cao pecpo 8253 epe aepee. B acoc, ec p aepe popa eeppec , o o e pooac ae oce oo, a MS DOS o paee ap p popa. ee o p aca poep xoa o Ctrl-Break [3.2.8]. H poe. B ao pepe aa 0 popapec a poe aee, e caoeo BIOS p cape. pa ee cao coco o, o e epa ee cea pee co a o e, e 18.2 paa ce. acoa ooe cea eec, cae, a 1000 pa ce, c e poee ox aopaopx epe. aee a oo 1193 (1193180 ao ce / 10000). Ka a eee aee pecpa cea c. pepe [2.1.8]. epe co oepa opaoe aee a oo occaoeo, oco aa 0 coec cxpoa cox oepa. Macao oooe aee - 65535 ao aco e ca o aaa - oe oco aco 0 pecp a (0 eeeo pepaaec 65535 p ee a e. ;---caoa pecpo oa/oa COMMAND_REG EQU 43H ;apec oaoo pecpa CHANNEL_0 EQU 40H ;a pec a a a 0 MOV AL,00110110B ; c a o a o a a a 2 OUT COMMAND_REG,AL ; ac a o a pe c p ;--- oc a c e a a MOV AX,1193 ;c e 100 co /ce . OUT CHANNEL_2,AL ; oc a a e o a a MOV AL,AH ; o o oc c ap a OUT CHANNEL_2,AL ; oc a c ap e o a a 3. c a o a/ e e pe e . - 4 - p c ap e MS DOS a pa ae o o a e e ee pe . B e e oe a e e o e ae c 4 a a, xpa e c e pe e c o ( a a c 0040:006C, a a xpa c ep ). Ho c a a a o o peo pa e c op , o opo o c ae c pe c o , .e. pe peo pa e c c o oce a a x o e ce , po e x c o o . o c o oc o o o o e c 18.2 pa ce pep a e a epa. Ko a o e c o epe o a poc a pe , o e ee a e e c e a pe e c o peo pa e c o pa o p op a ac - -ce . Ec p c ap e e o e e o a e , o c e c a a ae c o , a o ce ac o o . Ko ep c a e e pocxe o a e ap - aco o a o a ec c a a a c e pe e c o . Cpe po e . MS DOS pe oc a e pep a e c a o pe e , po o eo xo e peo pa o a e a e e c e a pe e co aca-a-cea. Bpe aec c ooc o 1/100 ce, o oco ce pee co ooec c acoo pa ee, o oaa cox ce oe pee. 2CH pepa 21H ae pe, a 2DH - caaae eo. B oox cax CH coep ac (o 0 o 23, e 0 cooece oo), CL - (o 0 o 59), DH - ce (o 0 o 59) DL - coe o ce (o 0 o 99). Kpoe oo p oe pee e 2CH, AL coep oep ee (0 = ocpecee). aee e ep oo ec a caoea aa. DOS ce oep ee o ae. Oe ae, o p caoe pee e 2DH, AL oeae paoc eeoo ae pee (0 = pao, FF = epao). ;---caoa pee MOV CH,HOURS ;o ae pee MOV CL,MINUTES ; MOV DH,SECONDS ; MOV DL,HUNDREDTHS ; MOV AH,2DH ; o ep c a o pe e INT 21H ; c a a ae pe CMP AH,0FFH ; po ep e pa oc a e JE ERROR ; epexo a o pa o o ;--- o e e pe e MOV AH,2CH ; o ep o e pe e INT 21H ; o ae pe MOV DAY_OF_WEEK,AH ; o ae e e e AH H po e . Ec B e c opoc co a a a 1 pocxe 8253 c e a x p o e , o Ba eo xo o a ca c o po e p e o po a o a a c e a pe e c o . BIOS o o e a a o a e c e a o 0 o 1.573 o a o o e e e o o o e e e pep a a epa. o o ac , pea o o a a e co e o ce , e o pa o a 24 aca e c e a o a ca o po pa . O e a e, o a 0040:0070 c a a ae c o p c ap e, a a e e ae c a 1 ( e o e) o xo aco . 4. c a o a/ e e a . - 5 - p e o epa MS DOS a pa ae o o a e e e a pe . Bpe a c ae c o ac a x BIOS. a a e co ep c epe e o COMMAND.COM. O a xpa c op a e pex oc e o a e x a o , o op e co ep a coo e c e o e ec a, o ep ec a o ep o a, a a c 0, e 0 coo e c e 1980 o . B o o c e a pe e c o , a pec a a e e c c e e e epc DOS o o e e a COMMAND.COM. o o p e o e a ce a a o c o o a o o e e c a MS DOS, a e o pa a c o epe e o a p . Ma , o op o a e pocxe o a e ap - aco , a o a - ec c a a a pe a c o o c e a o po pa (o o a c ae o p c ap e epe a AUTOEXEC.BAT). Ka o oc pocxe e a e ap - aco , c . [2.1.4]. O e a e, o o a c e pe e c o BIOS epexo epe o e 24 aco , MS DOS e e a . Cpe po e . 2AH 2BH pep a 21H o a c a a a a . o e a o ec e AH 2AH o e pep a e. p o pa e CX e co ep a o e c a o 0 o 119, o coo e c e a a o e 1980 - 2099 ( o o c a a o ae c c e e e o oc e o 1980 .). DH co ep o ep ec a, a DL - e . MOV AH,2AH ; o ep o e a INT 21H ; o e e a MOV DAY,DL ; e DL MOV MONTH,DH ; ec DH ADD CX,1980 ; o a e a o MOV YEAR,CX ; o ae o ep o a c a o a o ec e e , ec o e e pe c - p oe 2BH. Ec ae, aae a eep, o AL e opaeo FF, poo cae - 0. MOV DL,DAY ;oeae e DL MOV DH,MONTH ;oeae ec DH MOV CX,YEAR ;oeae o CX SUB CX,1980 ;epe ceee ooceo 1980 MOV AH,2BH ;oep cao a INT 21H ;caoa a CMP AH,0FFH ;poepe ceoc oepa JE ERROR ;eepa aa, e a opao o 5. caoa/ee aco peaoo pee. ac peaoo pee e co coce poeccop, oop oe oca pe e a pe oepe oepa. O e ae eac co a, coe oa oep e. popao oo a a, a caaa ac peoo pee. Oo eec ooeoe popaoe oeceee, oopoe caaae ce pee co BIOS epee a DOS a opao, o o cooecoa e oaa aco peaoo pee. Ho oo popao poep cooece e p oape paoac p eoxoe ep. Pae cao pee a ocecc epe aop apeco opo. Moe oooae a pacpe IBM PC e ac peaoo pee, o, coae, e caapo - 6 - pocxe aaoa apeco opo. AT oopec aca peaoo pee, ocoa a pocxee MC146818 p Motorola, oope co e e pecp, o pocxea, coepaa ae o opa cce. oc pecpa oo o, oca caaa oep peeoo pecpa op 70H, a ae poa aee pecpa epe op 71H. Pecp, cae c aca, cee: Hoep pecpa 00H Ce 01H Cea peoa 02H M 03H Ma peoa 04H ac 05H acoa peoa 06H e ee 07H e eca 08H Mec 09H o 0AH pecp caca A 0BH pecp caca B 0CH pecp caca C 0DH pecp caca D epex cacx pecpo o pae , oopx epec popaco o peca cee: Pecp A: 7 1 = e oa pee (ao a ae 0, o a) Pecp B: 6 1 = papeeo epoecoe pepae 5 1 = papeeo pepae peo 4 1 = papeeo pepae oa oa 1 1 = ac cac o 24, 0 = o 12 0 1 = papeeo aoae pee co ac peaoo pee a AT o a aapaoe pepae IRQ8. popaa oe cao eop oo pepa a poep, oop peec o opeeeoe pe pepae oe ac o pex cocoo, a oopx apee p cape. epoecoe pepae pocxo epe opeeee epa pee. epooc peo paa oo cee. pepae peo pocxo oa aee pex pecpo peo coaae co ae cooecx peex pecpo. pepae oa oa pocxo oce aoo ooe ae pecpo pocxe. pepae 1AH pacpeo BIOS AT, o oo ooo a caaa ac peaoo pee. oco oaa oa e coco oee e x x ecx p, o ae pee ac oo-opoao eco ope (BCD), oa a ec a e oo aa eca pa pecaec ep a. Tao opa ooe eo epeo ca op ASCII. popae o oo c oo aa a oe pecpa oa 48 oe oa ASCII, cooeceo ao c. cex IBM PC 0 1 pepa 1AH a caaa ce pee co BIOS. aco peaoo pee AT eec ec ox : 2: ee pee aco peaoo pee p opae: CH = ac BCD CL = BCD DH = ce BCD - 7 - 3: caoa pee aco peaoo pee p xoe: CH = ac BCD CL = BCD DH = ce BCD DL = if daylight savings, else 1 4: e e a aco pea o o pe e p o pa e: CH = e BCD (19 20) CL = o BCD (c 1980) DH = ec BCD DL = e eca BCD 5: caoa a aco peaoo pee p xoe: CH = e BCD (19 20) CL = o BCD (c 1980) DH = ec BCD DL = e eca BCD 6: caoa peo aco peaoo pee p xoe: CH = ac BCD CL = BCD DH = ce BCD 7: Cpoc peo (e xox pecpo) Tpeoa caaaec a ceee, ooceo eeo oea pee. Maca epo pae 23:59:59. Ka e oopoc e, eop pepa 4AH oe aa a poep opao peo. Oe, o ec ac e paoa (aoee epoo, -a occ a), o oee 2, 4 6 caaae a epeoca. 6. aepa popax oepa. Ec B ocecee aep popae ocpeco coo a, o Ba oe opeoac oo pee oo, o oc oo pee aep. ae ec B opeee pee eoc, o e epe, o Baa popaa e aa oe pe aep p cex cox. eoc a oe ec acoc o coeoo oopa (, eca, o oo, opec popaa e). A ae pe, oa eec oo aop a coecx c IBM PC - ex po aao copoc poeccopa - ae a e acceepa oe po pa peea aep. oo pao opee pe popao aep eocpeceo o aca. acoa ocea 18.2 paa ce, coea oa cea pee co, oa oe oeop oco opeoce (a e aco oceo. o oece aep ao pooeoc, popaa oa oca peeoe co co cea pee co. o aee oaec cao ee ae cea. ae popaa ocoo cae aee cea cpaae eo c aoe. Koa ocaec paeco, o peea aepa poa oo pooa oee popa. epe aa, oopx xpac aee cea pee co xpac, aa c apeca 0040:006C (a oo, aa c aeo aa). aepe ex 14 ce oo ooac oo a ao. a ax aa oo aep o ooo aca (oee, a o-ce ee, e ac). Cpe poe. poae aee cea pee co BIOS, co 0 pepa 1AH oae e eoxooe co co o 1/18 - 8 - ce. oce oo cae ee ae cea pee co, ocoo cpaa c peeo eo. p oce paeca ao oa aep. pepae 1AH opaae a ax aa DX (oco aepe aac x peeax), oo a capx aa, opaaee CX, o oppoac, o oo Ba ea 32-ax oepa. B ao pepe caoea aepa a 5 ce, o cooece 91 oce. ;---oee ae cea caoa aep MOV AH,0 ;oep 'e' INT 1AH ;oae aee cea ADD DX,91 ;oae 5 ce. ae co MOV BX,DX ;aoae peeoe aee BX ;---ocoa poepa ae cea pee co BIOS REPEAT: INT 1AH ;oae aee cea CMP DX,BX ;cpaae c co JNE REPEAT ;ec epae, o oope coa ;ae, aepa ooea AT ee oao pepa 15H, oopa ooe ocec aep a aaoe pe. oece 86H AH, a co poce aep CX:DX. oce oo oe pepae. 7. Oepa apopapoae o pee. popaa opeee pe oe opeeeo oepa ooc a e, a eoe: epec aaoe oaae cea pee co ae cpaaec c oce oaa. Moo oa ae opae ac--ce, o co xooo c pa e a oaa, oco ccea cea e eca. e po a ce pee co BIOS, ep pooeoc 1/18 ce, a ae e epeo ee o opa ::cc. Cpe poe. pepae 1AH ee e cao (AH = 1) oe (AH = 0) cea pee co. e cea ao poco o pepae c AH = 0. p opae aee cea coepc CX:DX, pe aee coo CX. AL coep 0, ec ce e epexo epe pa 24 aco c oea ocee cao. cao cea oece a coa e e pecp, a AH - 1. B peeo pepe epc poe pee peeax aca. p o oo a ax aa cea. Ho o cae eoxoo poep, o e o epexoa epe pa, oa aaoe aee o oe, e ceee. ;--- ceee ax OLDCOUNT DW 0 ;xpa aaoe aee cea ;---oae aaoe aee cea MOV AH,0 ;oep INT 1AH ;oae aee cea MOV OLDCOUNT,DX ;coxpae aaoe aee . (ec e poecc, eoc oopoo epec) . ;---oee ce eoc poecca MOV AH,0 ;oep INT 1AH ;oae aee cea MOV BX,OLDCOUNT ;cae capoe aee CMP BX,DX ;poepe a epeoee - 9 - JG ADJUST ;opaoa epeoe SUB DX,BX ;ae epe paoc JMP SHORT FIGURE_TIME ; epe o ee o ;---o pa o a epe o e ADJUST: MOV CX,0FFFFH ; o e ae CX a c a oe c o SUB CX,BX ; ae ep oe a e e ADD CX,DX ; o a e opoe a e e MOV DX,CX ;pea xpa DX ;---poepa epeoa pee o opa FIGURE_TIME: ; e a 18.2 ce . . 8. pa e e pa o o pea o pe e . p o epa x pea o pe e po pa a o e c p a a o e pe e , a e p ep o o o oc . Ta o o po a o epa o o acco p c c po o ex o , o ee c o ec o p x p o e . ee c op o xo a o epa pea o pe e . po pa , o op e e o e o e a po e e e c p , pe pe e o p , o o poc o ep o ec po ep c e pe e c o , o a ac e o o o e a. Ta o o xo pa ec c o c a op c x o , o ca x [2.1.5]. B opo o xo o ee c o e . O c o e c , o a po pa a oc o o a a a o - o pa o o , o o a o a o pe e e e o e pe e pep a c o o epa o e o pe e e o a a . B o c ae pac p pep a e a epa, o opoe o e c 18.2 pa a ce . Ko a o pep a e po cxo , o o e o po ep e o oe a e e c e a pe e c o ec ac o pe e e o e pe e , a c ae po e p . o po ecc o a a a p c. 2-3. p e e e ec poc e p ep o a a , a co a c oe po pa e , o op c a a ae c o o a e e o ae o o c a , o a o o o pe . ( o ee c o p ep o o po [2.2.6] c o e , o pe o a po eccop a p e a .) H po e . BIOS co ep c e a oe c oe pep a e (1CH), o opoe e o e e ae , o a B e a e e o po e p . p c ap e e op o o pep a a ae a c p IRET ( o pa pep a ); p e o o e po cxo o e a o pa . Ho pep a e 1CH epec o e , o o o ae c pep a e a epa BIOS oc e o o, a o pep a e o o o a e e c e a pe e c o . Mo o c a a , o o a apa oe pep a e, po cxo ee a o a ec 18.2 pa a ce . B o e e e e op o o pep a a , o o a a a po e p Ba e po pa e. oc e o o Ba a po e pa e a c 18.2 pa a ce . Ha ca a Ba po e pa o a po a o o o o - po a oe a e e c e a pe e c o , cpa e o c o ae pe e e , o o o pe e c , o a o ae oe pe a o e ac . Ec ec e o, o o a pe e e e o o o, o po e pa poc o o pa ae pa e e, e o e e a . Ta o pa o , po eccop e o e e pa o . B p e e o p epe po e pa ( e o a a a ec ) a pa ae o o a e c o ( o 60), o opoe o o po o o o, a pa ac c o o a. o c o, a ace oe MINUTES, o ae c a 1092 epe o a a e oe c o co c e a pe e c o . ep o a pe e ax o o o aca oc a o o 16 - o ee e ep o pe o ee c o x 32- o x - 10 - o epa . o c o co o a e c a e c o e e o a e c e a pe e c o a o ae c ALARMCOUNT. a e e op pep a 1CH e e c a o pa o , o o a a a po e p ALARM. o e, o a o o e op e e e , ALARM e a o a ec a c 18.2 pa a ce . p o e a po e pa ae e ee a e e c e a pe e c o epe pep a e 1AH cpa ae c ALARMCOUNT. p co a e x e ae c po e pa BEEP ( a e e o a a a ec , o opa ae o o c a . B po o c ae po cxo o pa . O o o pa a a apa x pep a (MOV AH,20H / OUT 20H,AL) a po e p e o, a a o e pep a a epa. e a e e a e coxpa e e e pe c p . ;--- ce e e a x MINUTES DW 0 ;xpa c o o o a ALARMCOUNT DW 0 ;xpa c e pe e o a ;--- c a o a o ae o o a e c e a pe e c o CALL REQUEST_MINUTES ; a poc c a o o a MOV AX,MINUTES ; epec a AX MOV BX,1092 ; c o co c e a e MUL BX ; o ae - pe a AX ; o ae e ee a e e c e a MOV AH,0 ; o ep e c e a INT 1AH ; ae a e e, a a DX ;c a ae o a a e ADD AX,DX ; MOV ALARMCOUNT,AX ; o ae oe a e e c e a ;--- a e e e op c o o pep a PUSH DS ;coxpa e ce e a x MOV AX,SEG ALARM ; epe ce e po e p ALARM MOV DS,AX ; o e ae e o DS MOV DX,OFFSET ALARM ; epe c e e e po e p MOV AL,1CH ; o ep e e o o e opa MOV AH,25H ; e e e opa INT 21H ; e e e op POP DS ; occ a a ae ce e a x ; ;--- a e po o ae c po pa a ; ;--- o e po pa o pa ae e op pep a MOV DX,0FF53H ;op a e a e MOV AX,0F000H ; pep a 1CH MOV DS,AX ; o e ae ce e DS MOV AL,1CH ; o ep e e o o e opa MOV AH,25H ; o ep INT 21H ; occ a a ae e op ;--- po e pa a o o o c a a ALARM PROC FAR ;co ae po e p PUSH AX ;coxpa e e e e pe c p PUSH CX ; PUSH DX ; ;--- ae c e pe e c o MOV AH,0 ; o ep e c e a INT 1AH ; ae a e e c e a ;---cpaae c pee aee MOV CX,ALARMCOUNT ;epe peeoe aee CMP DX,CX ;cpaae c e - 11 - JNE NOT_YET ;ec epa, o a xo ;---ae oo ca, ec ae coa CALL BEEP ;a poepa e oaaa ;---ae opaaec pepa NOT_YET: POP DX ;occaaae pecp POP CX ; POP AX ; IRET ;opa pepa ALARM ENDP ;oe poep 10 Coae a. Ec B xoe o ae-o coe , o B o po popapoa pocxe aepa 8253. Kaa 2 o pocxe po ca c ao oepa. Koa o aa popapec pee 3, o o ocae pooe o ao aco. -a poco aa o caae pa pooo o, oa oee p cxa ccoa o. K coae, pocxea 8253 e oe e a o, oo e oe e pooc a, aaeoo ao. a ee e o, a a xoa eepa a. acoa co ao pocxe oe eea, oo op oec x x coo oe oa ceae oe e. 1. eepa oa. oo ocaoo apopapoa pocxe aepa 8253, oopa paoae eaco o poeccopa. B peeo ec eoe poeccop eocpeceo pae ao, oo popae pxoc o pao, oop oe o pocxea aepa. Xo o coco oee pe, o o ocae ceceo o opo a ao coae oca ceax ox eo ocoaec a e. C( o) 523.3 D(pe) 587.3 E( ) 659.3 F( a) 698.5 G(co ) 784.0 A( ) 880.0 B(c ) 987.7 ac o a o a e o o o , a a a e , a e o a e - e e pa a a ac o . ao opo , ac o a o a e pa p e o o o e x a e (xopo o ac poe oe a o o o e c e e ap e ec ep a a ). H po e . e epa a c o o a a epa ep e ca c ep ep e 8255 coc o o e e c e ae o ac o o a op a B, o op c a c a o ( 1). op B ee a pec 61H (xo AT e ee pocxe ep e ca c ep ep e 8255 a a o o , o c o - e o e o e a pec op a o e ). Ec po pa a epe ae a e e a c a c a o o o o ac o o , o ac o a c o co a , o o e o . o o e epe e - a o c a c o . o e, o 0 op a B pa e opo a a a a 2 pocxe a epa, o op c o o epe c a c a o . o o o o e c po e , o coe c o a a a a epa. B c e e p epe e e e epe e e. O a, o o a e a 'FREQUENCY', c o e c a ec e c e a c o e e e c e e . e e e ee a e e, e c pee po cxo e e e a e o e ac o a. epe e a e 'NUMBER_CYCLES' c a a ae po o e oc o a. O a o op c o o pa o e o ope po ecc e e . e o e o c o, e o e a . - 2 - O e , o o po e p a apa e pep a o a pe e . p a o o o , o pep a e a epa po cxo c a o ac o o pe p oc (18.2 pa a ce ), o o o e c ec e o a ac o . e e , o o a pep a a pe e , c e pe e c o BIOS e e pa o a . Ec a e po a e o a e e, o o o e o a c a e o op e o pea o o, o ex op, o a e e c e a o coo e c ee e e e. NUMBER_CYCLES EQU 1000 FREQUENCY EQU 300 PORT_B EQU 61H CLI ; a pe pep a MOV DX,NUMBER_CYCLES ; e oc o a DX IN AL,PORT_B ; o ae a e e op a B AND AL,11111110B ;o ae a o a epa NEXT_CYCLE: OR AL,00000010B ; ae a OUT PORT_B,AL ; oc ae o a op B MOV CX,FREQUENCY ; a ep a a o - a CX FIRST_HALF: LOOP FIRST_HALF ; e ae a ep AND AL,11111101B ; ae a OUT PORT_B,AL ; oc ae o a op B MOV CX,FREQUENCY ; a ep a a o - a CX SECOND_HALF: LOOP SECOND_HALF ; e ae a ep DEC DX ;ae e cea JNZ NEXT_CYCLE ;ec 0, o ao oa STI ;papeae pepa 2. eepa a oopeeo c p ec. oco pocxea aepa 8253 paoae eaco o poeccopa, o oe poco eeppoa , oop aec oopeeo c oee px oepa. B o poco apopapoa aa 2 o pocxe eepa opeeeo aco, a ae epepopapoa pocxe e a. H poe. Mpocxea oa peapeo papeea epe op B pocxe epeca c epepe 8255 (apec 61H). Bce peeoe aee cea a, pae 1.19 oo a pee aco epax. e pooac o ex op, oa e ap opoa aaa 2. oo B o cpoc 1 opa B 0, ae e pooac ecoeo oe pepae oo epeapo oepa. ooo pepoa eoc a oo cooa ce pee co BIOS, a aao [2.1.6]. B ao pepe eeppec acoa 440 ep. pepaaec oce aa o a a aape. ;---papeee aaa 2 caoo opa B pocxe 8255 PORT_B EQU 61H ;caoa apeca opa B IN AL,PORT_B ; e e e o a e OR AL,3 ; c a o a x a x o OUT PORT_B,AL ; oc ae a op B ;--- c a o a pe c po o a/ o a COMMAND_REG EQU 43H ;a pec o a o o pe c pa CHANNEL_2 EQU 42H ;a pec a a a 2 MOV AL,10110110B ; e o a o a a a 2 OUT COMMAND_REG,AL ; ac a o a pe c p - 3 - ;--- ac a c e a a MOV AX,2705 ;c e = 1190000/440 OUT CHANNEL_2,AL ; oc ae a a MOV AL,AH ;c ae a a AL OUT CHANNEL_2,AL ; oc ae c ap a ;--- e a a a MOV AH,1 ; o ep pep a 21H INT 21H ; ae pep a e ;--- e e a IN AL,PORT_B ; o ae a op a B AND AL,11111100B ;c pac ae a a x a OUT PORT_B,AL ; oc ae a o pa o 3. e epa a opa o o . B o o pa e e o a a o a e ep po a e o o , o a o ep e p e a ; c e e e o a a o a o e a a , o a o ep a p o pa o o . Ko a o ep e p e a , o o o o e o po o c e a e o e e ; o a e o ep a p o pa o o , o e po o o e e . Co a e o x c po e c o o o e x o o oc e , pe oc a e x e c o . oc poe e e c po o acce epe pe e o o pa o . Mo e c o o a o x e o o e epa a. o o x e o o a o poc o e ep po a o o e e a a o o pe e , a e c e . . Ka a o a c po a op p e c x c po a x, o a o op x co ep ac o oc e o a e x o o , a p a xpa x e oc ( p c o , o pe c pa e e oc ). po o e oc a o pe e e c c c o o a e c e a pe e c o BIOS [2.1.6]. H po e . B p epe e epa a c o e c pocxe a a epa 8253. ec poc o c o c 8 o , o e o a o a o e c o pac p o o oc o po e p . ee c p c po a x. ep a c a a ae e oc a o o , a pa oe po o o o ep o a a ep ( e o ep o a ep , o o e e ). B opa c po a co ep ac o a o 8 o ; a e o o e e c a c pa o o a e o o o ec o x c o o po e a a e o o a e o o o ec o x c o o ' o pa a a ' c o a o pa a ape . e oc ec c e pep o - e oc p a e x a coo e c e oc e o a e oc a o o e a e. o ex op, o a Ba a po pa a ae a a oe o o e e e a a e o o o a o e o a e epe o o c po , po e o , a o pa o a a op a po a Ba o coo e c c Ba o e a . p ep , o op e e o o pa eep o c po o c o o a c a pa o oc po e . B pa ec x pe ax o o o epe e e e o o a a e o a. p e a e c a B o e e o pa ec pe , o o c pa x po e o e c o a . ee c c e a o , o op ac a e o o ce a - 5 - o pa a c pa e o epe e a o epe o c po , o e a pa e e a . Xo o a e o a e e e a , o a o p o oc ae c o ee o oe o o po a e o o . o oco e o o e o p pa o e pa ec o pe e. o o o a pa e e a a o oc a o 27,85,1, a o ep c a pa e o e a - o 27,85,0. 7. e e e p a e a . p a c pa 8 1/2 a o o e a e a a c po e o 80- o x c o o , ec ce o e o a o p . po op o a a e a o o e o ec c po e e e ec o o c o o . C p o c opo , o a e a o o e ec c po e 132 c o a, e a c o o p o - 40 c o o , a o a e a c o o p o - 64 c o a. e e , o c o o a e e a c pa o p o o o c po e p e e p oc c op a po a e . o c o a p x p epo pe oc a a op pe o e a c e a p a . Bo epe e c a ap x o o oc e pe oc a e x pa ec p epo IBM: o a e a : e pe a o o e a a o oc a o o a pa o 15. e o o pe a - o 18. C a ap a c pa a p o 8 1/2 a o o e a e a a 132 c o a c po e o pe e. e a c o o p o : o o, o p ep a a e a a c o o p o a o oc a a e o pa o 14. Pe e a c o o p o eo e e , o p ep a o a ec ae o pe , o a c pe ae c o o pa a ape epe o a c po . oc o a o e a o o c o e c o oc po x a o o o , o o c o c o o o. o o pe cepe e c po o e o 20. B e e a e a : p e e o e a a c o e a ae c a pa a o o o e o . o e ae o e ee, o co ae e e e . C opoc e a p o e ae c oe. e o o pe a o e o 27,69. e - 27,70. e a a a poxo a: B pe e e a a a poxo a a a c ae c a 1/216 a epe op poxo o e a a e o o . p o o a c o ee a o e e , o op e o e p e. C opoc e a e ae c oe. o pe ae c pa o o 27,71, a ae c o o 27,72. e a c o ep a e : e a c o ep a e o e o c c oco a . pa ec p ep ee pe o ep a , o opo o ep e a ae c o a c o o , a po e . pa ec o o p epa IBM o pe ae c o o 27,45,1, a ae c o o 27,45,0. p ep , e e e pe a o ep a o c e a o ep p opo poxo e o o e c po e, e a a c o o ep a (ASCII 95) ex ec ax, e o o o po e (ASCII 32) o cex oc a x o x. B opo poxo oc ae c e , o oc e ep o o poxo a o ae c o o pa a ape e o a epe o a c po . B opo poxo e e ae p ep pa o o c a - 6 - c po p c e pa epa c pa . ea c epx eca: Ha paecx pepax ec c epx eca caec epao. ea epxeo eca oe pa o 27,83,0, a ea eo - 27,83,1. Moo po epexo o ox eco p. e ea eco, c e, o pep oaac a ee cpoe oe pa o 27,84. Heoope pe e o cooac oa c p. Ec B xoe cooa 4 pea oopeeo, o poocpec co cee ae. B ao ec coo peea oca oa. Koa 1 2 3 4 5 6 opa X X ca X X ee X X a a poxoa X X X c eca X X X oo p X X X X X X c oepae X X X X X X 8. oca ax a pep. oca ax a pep paa ax cooo po, a popaca a e acceepa eec p oepaoo cce, oope ea aa ae ocaoo poco. popapoae a o poe pee oe pao, o ao peocae oe oooce. Ka pao, poep ea oo po oca co a pep, a ae ocoo poepe pecp caca oa opa, oopo pcoee pep. Ce co ocaec oo oa, oa pep cape, o o oo (pep oe e eaa co cpa, a aaca eo coe epe, o ex op oa e e oea ea cpoa coo ea). Kpoe oo, poep oo po o cooa pepae pepa o poa ece oo pepa. C oo ceaoo popapoa oo cea a, o pep e ea pepae poeccopa, oa o oo pe ceeo coa. poepa opao pepa ocae ce co, oce eo poeccop oe pooa aac co ea. o eo coec ooo ea (oop aa ae co). oco ece a cpa acaec ope 0,n, e n oe o 1 o 22 o. caapo cpa ao oca oa 27,67,0,11. 6. paee ooee eaae oo. eaae ec pacpeeec o cpae aco a ce e a, a aco a ce e eaae oo. ooa oe oopoaa oe eco, o e e aa ee oopa. Beco oo aaec ee ceee, ooceo cao eo o, oop oa oe oca. pepa e ao, cooax eee ooee oo. Baa popaa oa ocea ooee oo, ec oo oo ec. p o xopoe pao ec aa ea c oa paeo oa 27,60, oop cae oo ca e o, e ea epeoa cpo (o e caoe eae o opaa ape). p ea eca eec ecoo cocoo epe oo oe ooee. Oa oe B ;epe cac opa B OR AL,00000011B ;papeae a aep OUT PORT_B,AL ; oc ae a o pa o MOV SI,0 ; a a e a c po MOV AL,0B6H ; a a a a a 2 a epa OUT COMMAND_REG,AL ; oc ae o a pe c p MOV FIRST_NOTE?,0 ;c pac ae a ep o o ;--- e o , o ae ee ac o , oc ae a a 2 NEXT_NOTE: LEA BX,MELODY ; epe c e e e c po e o MOV SI,WHICH_NOTE ; a a e a e o MOV AL,[BX][SI] ; o e e o c po CMP AL,0FFH ; po ep e p a o a JE NO_MORE ;ec a, o a o e CBW ; a e c o op a ; o ae ac o MOV BX,OFFSET FREQUENCY ;c e e e a ac o DEC AX ; a ae o c e c SHL AX,1 ; o ae a 2, . . c o a MOV DI,AX ;a pec e c epe DI MOV DX,[BX][DI] ; o ae ac o a ; a ae c o e e o MOV AL,DL ; o o a a ac o OUT LATCH2,AL ; oc ae pe c p a MOV AL,DH ; o o c ap a OUT LATCH2,AL ; oc ae e o ;--- c o , o pe e e oc o TIME_IT: MOV AH,0 ; e c e a INT 1AH ; o ae a e e c e a MOV BX,OFFSET BEAT ;c e e e c po o MOV CL,[BX][SI] ; e oc e e o MOV CH,0 ; MOV BX,DX ; a ee c o o a e c e a ADD BX,CX ; o a e cax MOV END_NOTE,BX ; a o ae pe o o a TIME_CHECK: MOV AH,0 ; e c e a INT 1AH ; ae c e CMP DX,END_NOTE ;cpa ae c JNE NOT_NOW ;ec epa o, o xo MOV SI,WHICH_NOTE ; a e, epe c e o INC SI ; e ae o ep o MOV WHICH_NOTE,SI ; a o ae e o JMP NEXT_NOTE ; a ae c e o ;--- a ep e e po e p NO_MORE: IN AL,PORT_B ; epe c a c op a B AND AL,0FCH ; ae a OUT 61H,AL ; o pa ae a MOV SOUND_NOW?,0 ; occ a a ae epe e e MOV FIRST_NOTE?,1 ; NOT_NOW: POP DS ; occ a a ae pe c p POP SI ; - 7 - POP DI ; POP DX ; POP CX ; POP BX ; POP AX ; IRET ; o pa pep a MELODY2 ENDP 5. Co a e a o o epexo a o o . a e epexo o o po o c a c e e pep o o e e ac o . o o o e o o c e a o ee pa e , ec e o o e a e oc a o o ce e a o a p o e a c e a e a e oc p o e . H po e . po e ce o c o o a e o e epa a, pa e pocxe o ep e ca c ep ep e 8255. poc o e e a e e a 1 op a B e 0 1, c o o c e a pe e c o . p a a e a o o o o o c o o a, ac e ac a e CX, c e a e e o a e e. ec o o ae c : ;--- a pe pocxe a epa PB EQU 61H ;a pec op a B pocxe 8255 IN AL,PB ; o ae e o a OR AL,1 ;c pac ae 0 OUT PB,AL ; o pa ae a op ;--- c a o a ac o e oc a MOV BX,9000 ; a a oe a e e c e a MOV DX,3000 ; e oc a 3000 o REPEAT: ;c a o pa ae c oc e a ;--- c a o a a a a OR AL,00000010B ; c a a ae 1 OUT PB,AL ; oc ae a op B MOV CX,BX ; c a o a c e a 1/2 a CYCLE1: LOOP CYCLE1 ; c o a 1000 o opo ;---c poc a a a AND AL,11111101B ;c pac ae 1 OUT PB,AL ; oc ae a op MOV CX,BX ; c a o a c e a CYCLE2: LOOP CYCLE2 ; c o ;--- epexo c e e DEC BX ; e ae ac o , e a DEC BX ;c e DEC DX ; e ae oc a c e oc JNZ REPEAT ;ec DX e 0, o o o poc o e o p o o , o co e o a poxo a e o c pee, e e. opo x ep a o a o e o e e a e , a o a o e e , a o o a o , o op p o e o a epec ae DX o e a e a c e e e. 6. Co a e o x e o . o e e o o oc a c e pep e e e ac o o a. H po e . - 8 - cce ep o o e e ep po a e c e o a, o a ep a , e e e o opo o a e , e pa e ep a , e e e o opo o o e . Ta oe ap e e c e p o e p o a p a a . Ko a o o e e x ep a o coc a e , c a e 50 1, o o ae a e. Ec e o o e e e e 10 - 20 pa , o a e epexo o e e p a e . B o c ae e ep p e c pocxe o ep e ca c ep ep e 8255. Bo p ep a : NUMBER_CYCLES EQU 300 ; c o epe e a a FREQUENCY1 EQU 50 ; pe , o a a e FREQUENCY2 EQU 3200 ; pe , o a a e PORT_B EQU 61H ;a pec op a B pocxe 8255 CLI ; a pe pep a MOV DX,NUMBER_CYCLES;DX c ae o a IN AL,PORT_B ; o ae c a c op a AND AL,11111110B ;o ae a o a epa NEXT_CYCLE: OR AL,00000010B ; ae a OUT PORT_B,AL ; oc ae o a MOV CX,FREQUENCY1 ; a ep a ep o ac FIRST_HALF: LOOP FIRST_HALF ; AND AL,11111101B ; ae a OUT PORT_B,AL ; oc ae o a MOV CX,FREQUENCY2 ; a ep a opo ac SECND_HALF: LOOP SECND_HALF ; DEC DX ; e ae c o o JNZ NEXT_CYCLE ;ec 0, o opa o a STI ;pa pe ae pep a co a p a x o o o c o o a o e o , o a o a e a e e FREQUENCY2 a e o o o 40000. 7. O o pe e a e epa pa x o . To o pocxe a e epa opa a, e a c PCjr, o o e o o pe e o e ep po a pa e . O a o acce ep o o e o e a c oco a e epa a, o co ae a o o pe e o e epa x pa x o . ep epe x x c a o p o c o o op e o o o . Ka x o ee e pooc, oo peae oaec copee ae, e a pax ooca. o pe peao oee oo coa ox eo. H poe. Hao poco oe a eoa eepa a. Hae epe aa 2 pocxe aepa. ae ope xo aa, a ce a 1 opa B pocxe epeca c epepe. Bopoe ece opeee pooeoc a. He ae pocxe aepa p aepe. ;---aae eepa a epe aa 2 aepa IN AL,61H ;oae a opa B OR AL,3 ;caaae ae a aa OUT 61H,AL ;ocae a opao MOV AL,10110110B ;eoa oaoo pecpa 8253 OUT 43H,AL ;ocae pecp MOV AX,600H ;ce aaa 2 - 9 - OUT 42H,AL ;ocae a a MOV AL,AH ;oo cap a OUT 42H,AL ;ocae cap a ;---eeppe op aco pocxeo 8255 NUMBER_CYCLES EQU 9000 ;co epee FREQUENCY EQU 150 ;aepa oo a CLI ;ape pepa MOV DX,NUMBER_CYCLES ;DX cae oa IN AL,61H ;oae cac opa AND AL,11111111B ;oae a o aepa NEXT_CYCLE: OR AL,00000010B ; ae a OUT 61H,AL ; oc ae a a op MOV CX,FREQUENCY ; a ep a a 1/2 a FIRST_HALF: LOOP FIRST_HALF ; AND AL,11111101B ; ae a OUT 61H,AL ; oc ae o a op MOV CX,FREQUENCY ; a ep a a 1/2 a SECOND_HALF: LOOP SECOND_HALF ; DEC DX ; e e c e o JNZ NEXT_CYCLE ;ec 0, o opa o a STI ;pa pe ae pep a ;--- e e a a a 2 pocxe a epa IN AL,61H ; o ae c a c op a AND AL,11111100B ;c pac ae 2 a x a OUT 61H,AL ; oc ae a o pa o 11 pep. 1. paee paoo pepa. MS DOS oe paoa c pe apae cpoca (LPT1 - LPT3). oceoaee pep pac ooc a e, a apaee, a cee cocoa, oop ae ocac a pep. Kaoe apaeoe cpoco ee co aaep. Aaep paec pe pecpa oa/oa apeca opo x pecpo pa aoo aaepa. Oac ax BIOS coep aoe apeca aoo aaepa. ao apec cooece ae apec p pex apeco opo. ao apec LPT1 - 0040:0008, LPT2 - 0040:000A .. Kao aaep aae ao oep LPT - e opeeeo , a o epeeo a. o o pe popaa, opa po apecec apae op, oa ca apeca, oope o co 2. caoa cea ea. cao pax cea, oocxc opa cpa, c pa .., a pep ocac ceae pae o. o ocac a pep a e pe ae. pae o p ae poce ec pepa, a epeo cpo epeo opaa (poo cpa). Oao oco cea ea caaaec oco Esc-oceoaeoce, oopx o oee oox ao ce a coo Esc, o oopoo ASCII 27. Haa o Esc oppe pep, o co() oop cee a cee eppepoa a oa, a e a ae. Tae Esc-oceoaeoc oo e e coa-opae, oco pep 'ae' ao oceoaeoc. Too eoopx cax, oa oceoaeoc oe e pa , peec opaa co, aece oopoo cea coec o ASCII 0. o o cex cax cea caoee oa ec o ex op, oa o e o oee. Ka oo e oe o, apep, oepa, o oo e ocecc o ex op, oa e e oca o oe oepa. ep pepa oe oe e oe caoex cea. Ho ec pooa oa a pepe pep e e, o eoxoo coa caaa ce cea. oco oo caaax cea pepa epeea c a, a oope o ec. Hapep, ae coa, oopoe oo eeo p po, o peapc Esc-oceoaeoc, ae p p, aepac Esc-oceoaeoc, ae eo. oco epca caap a o occe, o ea c cooae ox oooce pee, o aoo oepaeoo pepa aca paep. Ka paep peopae cp, eeppee poepo ea, pooo, coe a pepo. B acceepe oca oo ocecec ca o opao. B poo cae oepaop aoaec oa ocae oa ap opa ape/epeo cpo. 3. caoa ecooo paecoo peo. pep cea axoc ecoo pee, o ex op oa o ceao e epeee paec pe. Koaa, caaaa paec pe, oa cooa aoe co ao paecx - 2 - ax e epeao (o e oe oo cpo) oce oo, a o co ao e eppepoao a paecoe opaee, pep epec eco pe. o o pe e oa, oopa epeo pep eco pe. co paecx peo pax pepo paoe. Bo cex cax, a oo caaa paec pe ce 2 aa, aae aoe co paecx ao e epeao (caaa a a). o c aee x x ao, paee co ao ax a 256 oece pea o opo a, a ocao - ep a. a aa o cpa ceoa a ax. Ka a opeee eo o, cooecx oc epa oa oo o cpoe. Ma (1) cooece oo, a cap (128) - epx. Hapep, o aeaa pa, oe caaa a, oopoo caoe oo , ae a oopoo caoe 2 x a .. oce ocoo aa pacooe e e a opao ope. aee epoo aa e 1, opoo - 3 (1+2), ae 7 (1+2+4), ae 15 (1+2+4+8) .. paec pep IBM ee epe paecx pea, oope oee eee 'caap'. O ae: 27,75 480 oe cpoe. Hopa pe. Mac 480 ao ax a oepaop. 27,76 960 oe cpoe. oeoe opoaoe papeee, o ea oe eeee (oa ooc). Mac 960 ao ax a oepaop. 27,89 960 oe cpoe, ea c opao copoc (oa ooc c coo copoc). e o, peae o opoa, e o aeaa, oco e cea o eaae oo. Ec eaec oa x aeaa, o opa oa e oppoac. Mac 960 ao ax a oepaop. 27,90 1920 oe cpoe, ea oe eeee (eepa ooc). Cocee o o opoa o oco o pae epe a 3 o (.e. 1 eaae, 2 pocae). Mac 1920 ao ax a oepaop. B oee ox peax e peae o opoa o e o aeaa. o ao poc e oa, epe ape eo o, eoo ce eaa oo pao ceae opo poxo, co e e ae. Bo cpaee ooce ea aex o e e pa oa a pax pepax: Ko paec eo Koa popep 27,75 480 oe 1108 560 480 27,76 960 oe 2216 - 960 27,89 960 oe 2216 - 960 27,90 1920 oe 4432 - 1920 eo pep ae pepo IBM e, o o oe caaa aca oe (aspect ratio) paecx opae. o oe opaae pa opoax epax pacco e oa. Oo eaee oe 1:1, oco poo cae po poo paece ce. Ho p opoa paecoo paa ao o aca oe a e, a ce. B pao pee epeoo papee 5 oe o epa aa o e paep, o 6 oe o - 3 - opoa. o cooece acao oe 5:6 eo o aee coec o oa e pepo. ocac oo oe 1:1 5:6. 4. paee paccoe e cpoa. Ec e pa o ae pep, ee ceae oooc paoocpoe, o c ea ocecec cpoa. ae paece opae pcc ocpoo, xo o cae e cx ec e cpoa. Ko ASCII 10 - caap pa o epeoa cpo. oca eo a pep (e peeceo oa Esc) po o, o aa e poa epe a aa epa. Oo, ec epeo cpo e ocaec a oo opaa ape, o eaaa ooa opaaec eo pa a oo coa eaa a o e cpoe. Oao oo cea a, o epeo cpo eac aoaec p ao opae ape. pa epeae a pepe. o e oo cea cao 1 pecpa pae oo. Moe pep o a a aoaec epeo cpo c oo pax oo 27,53, a eoope o ea opa epeo cpo c o oo 27,93. o oa paec pep coe epa ea pa 1/6 a (.e. o 6 cpo a ) o pe cea oo epc, oca pae o 27,50 ( o coc ae coea c o ee epaa e cpoa, ocae e). oo pepa ec ee a peopeeex ecpox epaa, 1/8 a 7/72 a. Cooece pae o 27,48 27,49. Booa oee oa paa ecpox epao. paec pep coe p oa, ooe e epa a oe a e. Bce p pax oa co 2-xa Esc-oceoaeoc, a oopo cee co 72-x 216-x oe a, opeex ecpo epa. Bepaoe paccoe e epa x oe pao 1/72 a. epa 8/72 a e ocae poea e cpoa (9 cpo a ). Caap epa 6 cpo a aaec co 12/72 a. Haoe, 1/216 paa 1/3 o 1/72. eee a a e ooe eaae ooe cea cc o epa cpo, c e o o p opo poxoe ao poe, oecea ea oee cooo aeca. Bo Esc-oceoaeoc: eee Esc-oceoaeoc 72-e a 27,65,n (e n o 1 o 85) 216-e a 27,51,n (e n o 1 o 255) 216-e a 27,74,n (e n o 1 o 255) Koa ee epaa 72-x a e ca a o ex op, oa e cpec opo pa o: 27,50. o o oe ae cooac oeo occaoe caapoo epaa 1/6 a. Ec paee a cooaa oaa 27,65,n, o occaoe epaa 1/6 a ao oca oa 27,65,12,27,50. a pax oa epao 1/216 a e e. ep o caaae, o ce ocee epeo cpo oc c aa epao; opo e ece oo a o epeo cpo, a ae opaae epa, oop ecoa o oo. 5. paee ee a. - 4 - aa a pepe epeaec oaa epeoa cpo, epao a epeoa opaa. caoo epeaee a pepe opeeec e pep aoaec epexo a o cpa p oape epopa e cpaa. Ec epopa e e pocac, o ea oe aepc po a epe pa oepeo cpa. poc epopa ocae o p cx cpo cepx c ao cpa. Ha cao ee pep e pacoae epopa, eco oo o cae, o aa oe aa paea a aao cpa cae co epeoo cpo. Moo popao epeopee cao epeaee, oca a pep pae o 27,56, o pep e ea poca epopa 27,57, o ea poc epopa. paec pep coe o, oop opee co cpo, pocaex e cpaa. o o 27,78,n, e n - co cpo o 1 o 127. Hapep, o 27,78,10 pee o, o pep e poca o 10 cpo. Ec ecpo epa pae 1/6 a, o 11-oa cpaa e coepa 66 cpo oce ea ax 56- cpo pep e ea poc 10- cpo. popaa oa oaoc, o cao aae poa a a 5 cpo, c e o 55 cpo eca eppoa a ao cpae. Ec coec aa, paep oopo oaec o caapoo 11-ooo, o oo e cpa, c e o poc epopa pocxo o ece o epeo opaa caaa a pa o. Paep cpa oe caaac o co cpo a cpae, o paepo ax. o cao co cpo a cpae, oe o 27,67,n, e n - co cpo. Ta e oceoaeoc coec cao cpa ax, a cee oo, o a cpa acaec ope 0,n, e n oe o 1 o 22 o. caapo cpa ao oca oa 27,67,0,11. 6. paee ooee eaae oo. eaae ec pacpeeec o cpae aco a ce e a, a aco a ce e eaae oo. ooa oe oopoaa oe eco, o e e aa ee oopa. Beco oo aaec ee ceee, ooceo cao eo o, oop oa oe oca. pepa e ao, cooax eee ooee oo. Baa popaa oa ocea ooee oo, ec oo oo ec. p o xopoe pao ec aa ea c oa paeo oa 27,60, oop cae oo ca e o, e ea epeoa cpo (o e caoe eae o opaa ape). p ea eca eec ecoo cocoo epe oo oe ooee. Oa oe cac pao oae ooo ecox coo poea a eo oae ooo ecox coo 'opa a a' coa opaa ape. e ocecc epepo - e ocpae x a cooece oceoaeoc a oo e ae. o ex op, oa Baa popaa ae aaoe ooee eaae oo oa oe oae epeoo cpo, poeo, a opao a a opapoa Ba o cooec c Ba oea. pep, oope e o opa eepo cpo o cooac a paoocpoe. B paecx peax ooo epeeee oo a ae o a. p ea eca B oee o paec pe, o oc pax poeo e coa. eec cea o, oop acae oo cea - 5 - opaac pa e o epe ea oepeo cpo, oe apae ea. Xo o aeo aee ea, oao p o ocaec oee ooe oopoae oo. o ocoeo oeo p paoe paeco pee. o ooapae ea ao oca o 27,85,1, a o epc apaeo ea - o 27,85,0. 7. eee pa ea. pa cpa 8 1/2 a ooe aeaa cpoe o 80- ox coo, ec ce o e oao p. poopoaa ea ooe oec cpoe ee ecoo coo. C po copo, oa ea ooe ec cpoe 132 coa, ea c oo po - 40 coo, a oa ea c oo po - 64 coa. ee , o cooae ea c pao po oo cpoe pee poc c opapoae. oco apx pepo peoca aop peo ea cea pa. Bo epee caapx oooce peocaex paec pepo IBM: oa ea: e pea oo ea ao oca ooa pa o 15. e oo pea - o 18. Caapa cpaa po 8 1/2 a ooe aeaa 132 coa cpoe o pee. ea c oo po: oo, o pep aa eaa c oo po ao oca a eo pa o 14. Pe ea c oo po eoe e, o pep aoaec ae o pe, oa cpeae co opaa ape epeoa cpo. oco ao ea oo coec oocpox aooo, o o coco oo. o o pe cepee cpo oe o 20. Beea ea: p eeo ea a co eaaec a paa oo o e o. o eae o eee, o coae e ee. Copoc ea p o eaec oe. e oo pea oe o 27,69. e - 27,70. ea a a poxoa: B pee ea a a poxoa aa caec a 1/216 a epe op poxoo eaae oo. p o oac oee aoee , oope o e pe. Copoc ea eaec oe. o pe aec pa oo 27,71, a aec oo 27,72. ea c oepae: ea c oepae oe oc cocoa. paec pep ee pe oepa, oopo oep eaaec o a coo, a poe. paecoo pepa IBM o pe aec oo 27,45,1, a aec oo 27,45,0. pep, e ee pea oepa o cea oep p opo poxoe o o e cpoe, eaa co oepa (ASCII 95) ex ecax, e oo o poe (ASCII 32) o cex ocax ox. Bopo poxo ocaec e, o oce epoo poxoa oaec o opaa ape e oa epeoa cpo. Bopo poxo e eae pep pao oca - 6 - cpo p ce paepa cpa. ea c epx eca: Ha paecx pepax ec c epx eca caec epao. ea epxeo eca oe pa o 27,83,0, a ea eo - 27,83,1. Moo po epexo o ox eco p. e ea eco, c e, o pep oaac a ee cpoe oe pa o 27,84. Heoope pe e o cooac oa c p. Ec B xoe cooa 4 pea oopeeo, o poocpec co cee ae. B ao ec coo peea oca oa. Koa 1 2 3 4 5 6 opa X X ca X X ee X X a a poxoa X X X c eca X X X oo p X X X X X X c oepae X X X X X X 8. oca ax a pep. oca ax a pep paa ax cooo po, a popaca a e acceepa eec p oepaoo cce, oope ea aa ae ocaoo poco. popapoae a o poe pee oe pao, o ao peocae oe oooce. Ka pao, poep ea oo po oca co a pep, a ae ocoo poepe pecp caca oa opa, oopo pcoee pep. Ce co ocaec oo oa, oa pep cape, o o oo (pep oe e eaa co cpa, a aaca eo coe epe, o ex op oa e e oea ea cpoa coo ea). Kpoe oo, poep oo po o cooa pepae pepa o poa ece oo pepa. C oo ceaoo popapoa oo cea a, o pep e ea pepae poeccopa, oa o oo pe ceeo coa. poepa opao pepa ocae ce co, oce eo poeccop oe pooa aac co ea. o eo coec ooo ea (oop aa ae co). oco ece epeee eae pepa aoo eeee, e copoc epo oepa, o o coo a pep aae a o poeccopoo pee. cooae pepa ooe cooa o pe eo. p oce ax a pep peec cpaeo eoe c, o oc aco cooo oa. Bce coe ap, oope oe o pep, ocac a ce opoa ecox paecx ax, a ae oocex oo pae pepo, ocaxc paee o ae. Kop oo cpoe eco paec pe, oo oc paa paoo o poopoao ea. Kpoe oo o paec pep oe coaa ceae co poooo a, a a ce apaoo apoa aea ecpooo epaa o oc e co ceopa. - 7 - 9. Bo ecox paecx ax a pep. poeccop oe aac oo oco ax a pep o oe eaa ooo pee, a ce cooa pepa pepa. Booa pe aepaa, oa popaa ocae co a pep epe opeeee epa, o oo paccapa a 'ceopepae'. o eo e a eco ooppec c paoo pepa, a acoee pepae, o o co cae paoa pepa e pa o pee. Heaco o oo a oc ae, a pa a pep ocaec oo 1 a ax. cooo po peoca , oope poe o cpa ee cpo, oao a cao ee paa cpo a oee co. Oo cooo po oca a pep ap opa ape/epeo cpo oe ao cpo. C po copo, popa a acceepe o ca oa ap oo. -a oo pxoc eoo oe popapoa, o ae B oaee aoo o oc, ocoeo ooe poep oo. Cpe poe.

0 pepa 17H ocae o co a pep. oece co AL, a oep pepa DX. p opae AH e coepa pecp caca, oop ao ocoo poep oape oo. B [6.1.3] ocec a o ea. oa ooa ax caoe aae a ep, coepa ae, ae poep a cee: ;---o ax a LPT1 MOV CX,NUMBER_CHARS ;CX coep co a oa MOV DX,0 ;pae LPT1 NEXT_CHAR: MOV AH,0 ; oc coa a pep MOV AL,[BX] ;BX aae a ep ax INT 17H ;ocae co TEST AH,8 ;poepe o JNZ PRNTR_ERROR ;a opao o INC BX ;eae aae LOOP NEXT_CHAR ;o ce co Caapoe pepae MS DOS oa a pep o 5 pepa 21H. poco oece co DL oe pepae. a cea o a LPT1 ee e opaaex pecpo. ;---o ax a LPT1 MOV AH,5 ;oep MOV DL,CHAR ;oo eaae co INT 21H ;ocae eo a pep po coco oa ax a pep o 40H pepa 21H. o caapoo oa, c cooae eoa ecpopa ao oca a cpoc [5.3.0]. B ao cae a coe cea peopeee oep aa pepa. o oep #4 eo ao oec BX. ee oc oo LPT1, oo oa a po pep Ba ao oe aoe apeca [6.1.4]. DS:DX o aa a oe ae, a CX coepa co ocaex ao. Hapep: - 8 - ;---o 120 ao ax a LPT1 MOV AH,40H ;oep MOV BX,4 ;oep aa pepa MOV CX,120 ;co ocaex ao LEA DX,PRTR_DATA ;DS:DX aa a ae INT 21H ;ocae ae JC PRTR_ERROR ;a opao o p opae caoe a epeoca pe o, p o AX e coepa 5, ec pep e ca c ao 6 - ec aa eep oep aa. Oe, o p cooa peopeeeoo oepa aa eo opa cpoco. H poe. a ax ocaec a pep, e oc eo pecp ox ax, apec opa oopoo coaae c ao apeco pepa. oe, o aoe apeca LPT1-3 xpac co cee 8, 10 12 oac ax BIOS (aaec c 0040:0000). oce oo a ae oca pecp a opooe pe aec cpoa pecpa pae oo, apec opa oopoo a 2 oe, e pecpa ax. Hoep a cpoa pae 0 o oe caoe oo a oe opooe pe, o poa epea ax, axoxc pecpe ax. poepa ea oe eeeo cpoc cpoa opao 0. oce oo a a ax oca, popaa oa oa, oa pep e coo, o o oo pe ceeo. o eaec cocoa. p oooc pep ae c oepe pecpa caca oa, apec opa oopoo a 1 oe aooo apeca pepa. Hoep a oepe pae 6 oo o caoe 1. c oepe cpacae o 0 a ocaoo ooe pe, o popaa a e acceepa oa e o, ec oa ocoo ce a pecpo. po coco a, o pep oo pe ceeo aa ax coco epepo poepe a 7 pecpa caca, oop cpacaec 0, oa pep a caaaec 1, oa o oo p ae. Ec B e poep ea oo po, oopa oa paoa eppepeo ece po oe eeo e, o ao cooa o eo. Ce pep oae ao apec LPT1 oac ax BIOS ae o ae epa, a oop aae pecp BX. popaa ocoo poepe pecp caca a aoc oopeeo poepe 3, o poep ae o a pepe. ;---oooa MOV AX,40H ;ES aae a oac ax BIOS MOV ES,AX ; MOV DX,ES:[8] ;ao apec LPT1 DX MOV BX,DATA_START ;BX aae a ep ax ;---ocae co NEXTCHAR: MOV AL,[BX] ;oeae co AL OUT DX,AL ;ocae co INC DX ;DX e aa a pecp INC DX ;pae oo MOV AL,13 ;eoa o ca cpoa OUT DX,AL ;ocae ca cpoa DEC AL ;opaoe ccooe pecpa OUT DX,AL ;ocae eo - 9 - ;---poepa a o oae oooc pepa DEC DX ;DX aae a pecp caca NOT_YET: IN AL,DX ; o ae a c a ca TEST AL,8 ;o a? JNZ PRTR_ERROR ; epexo a o pa o o TEST AL,80H ; p ep a ? JZ NOT_YET ;ec a , o a a INC BX ; e ae a a e epe a x DEC DX ;DX a ae a pe c p a x JMP NEXTCHAR ; e a e a c e e o c o a Ko a c a o e 4 pa e o pe c pa p epa, o pa pe e o pep a e p epa. Ko a c o e c pep a e, o po pa a e o a o a c a a o o oc o p epa, e pep o o pa a pe c p c a ca p epa. B ec o o o, po pa a o e oc a c o a a c p e a ; o a p ep e o o p e a c e e o c o a, o o o e c a o ep e ( 6 pe c pa c a ca a opo oe pe e c a o e 1) a o a ec e a o pep a e p epa. po e pa o pa o pep a o e a p ep c e c o ep e pa e e po pa , o o a o a po o a c o pa o , o ex op o a e po o e c e e o pep a . Ko a ce a e e e , o pep a e o o o ce . 10. Ko po a e pa a a p ep ( a pa a). a e c o o o pa a c e a oc a o o poc o, ec ce c o - e e c o co ep a c p epa o x e o c co c e a a p a , a a o ep a e e a oe o pa e e. B o poc e e c ae po pa e o c a o p p epa pa o 80 c o a , a a e c a c o oo epe o eo epa, oc a x a e pep o o a x a p ep. Ec p epa o c c c e a e c o , a e a c o ce o pa , o po pa a o a o o o c o a a x x c o o o x a p ep pa ec o pe e. oc o c o o axo e c po e ep a , o o e o pe o a c c e a oe po pa po a e. Ka c e a x a p o c o o co ae c o po e . po ep e a p a o o c o a p c a e o eo epa. Ko a c o e e c o o o ep a o e o e c oc , o a o a o ep a e e a p p o a p epe. O a o ec c o o c e a o o pa e , o o a e e po e , o c e o op pa ec c o a : o ac e a o o o pa e o a poc pa c o epx e o pa c e e c po . B o c ae a o a o ep c o ac p opo poxo e. B a c oc o p epa, Ba o e o a o c co a c e a a a x o a c o o e a e, oc o o a o e a a c , o o p a e o o axo c c o o o a p o , a e o pa ae c o . B o c ae e o e pe o e a a poxo a. poc pe e e po e c e a o pa e e e c c o o a e pa ec o o pe a pa a o a e c a, a a e c e a a pa ec o o pa a. pa ec e a co a c o po e . a a x p epa coo e c e oc ep a o a , o pe a a pa e a pe c a e 8 op o a x o e . o o pe e c po e pa peo pa o a , o a a a a p c. 6-4. Ha o cpa o a o 8 a o a pa a, pa a e, o op e coo e c o ac o e 8*8. a e a o c o o a o ec e o epa epec a o o , a - 10 - o a a o p epax. o c o a p x p epo c a a pa oe o pa e e. o po cxo o o , o o c o ac a o e 1:1, o pe a pa c o e o e 5:6 ( ac a o e cpa ae c o op o a x o e a c c o ep a x o e a ). To ee o op , c a e e o pa e a ca o e e o ae - a ac a o o o e a pa a, oc o po pa o c e a o e a e o pa e , o o o e o a , a a xo e c ( a p ep, o pa e e o p oc a pa e co ae c o o a e o ca). Ko a a e c pa a o c a p ep, o c a e e o o pa a c . He o op e pa ec e p ep e c e a e pe , o op x o o o o pa a e c a e , a e o p ep IBM o e e ac a o e o c o x pa ec x pe o . H po e . acce epa e ae o e peo pa o a a o o c pee. Bo po e pa, o opa e ae peo pa o a ac o c po, oc o o a ep ce po po eccope (o a e o o e o a a, o B o e e c o o a a e a op , o a a e c e). po e pa pa o ae , xpa 8 pe p x a o pe c pax CX, DX, BP DI. a pa x a x o e ae c AL, a a e AH epe a c oc e o a e o CL, CH, DL DH. Ka pa AL AH c ae c o o a c e a 4 c a, o CX DX o e a c c DX BP, oc e e o ce o o op e c c o a. o po ecc o op e c a o o 8- pa x a o o a o a ep e , o peo pa o a oe o pa e e xpa c pe c pax po po eccopa, p e ca e a ax ea CL. Coepoe pecpo oc a pep oec, oce eo poecc oopec cex oc ao paa. Caaa oe 8 ao eoepa oece x ep c ee BUFFER. oece 0 AX, CX, DX, BP DI. ae: LEA BX,BUFFER ;aae a ep eoax MOV SI,0 ;ceee o epe GET_BYTE: MOV AL,[BX][SI] ; epe a DO_HALF: XCNG AH,CL ; o ae CL, CH, DL DH SHL AX,1 ;ca AL XCNG AH,CL ; XCNG AH,CH ; SHL AX,1 ; XCNG AH,CH ; XCNG AH,DL ; SHL AX,1 ; XCNG AH,DL ; XCNG AH,DH ; SHL AX,1 ; XCNG AH,DH ; ;--- a ae op o o epe e e o XCNG CX,BP ;o e ae co ep oe CX DX XCNG DX,DI ; CMP SI,7 ;ec ce a peo pa o a , o e a ae JE PRINT_BYTES ; INC SI ; a e epexo c e e a JMP SHORT GET_BYTE ; ;--- e a ae a PRINT_BYTES: PUSH DX ;coxpoa e DX MOV AH,5 ; o a a p ep - 11 - MOV DL,27 ;o Esc INT 21H ;ocae eo MOV DL,75 ;o paecoo pea INT 21H ;ocae eo MOV DL,6 ;e ocao 6 ao INT 21H ; MOV DL,0 ; INT 21H ; CALL PRINT_2_BYTES ; oc ae co ep oe CX POP CX ; CALL PRINT_2_BYTES ; oc ae co ep oe DX MOV CX,BP ; CALL PRINT_2_BYTES ; oc ae co ep oe BP MOV DX,DI ; CALL PRINT_2_BYTES ; oc ae co ep oe DI . ( e c e e p e oc a o ) . PRINT_2_BYTES: PROC NEAR MOV AH,5 ; e a MOV DL,CL ;c a a a CL INT 21H ; e a ae MOV DL,CH ; a e CH INT 21H ; e a ae RET PRINT_2_BYTES ENDP 12 K a a pa. 1. pa e e a a po . K a a pa co ep e e c po po eccop, o op oc p ae a oe a a e a a ae c a - o op A pocxe ep e ca c ep ep e , pac o o e o a c c e o a e. C a - o o o o a oe c o, a e 7 o o opo o pe c a e - a o o ep, p c oe a o a e. Ha cex a ax, po e AT, c ap o a o op o o , a a a a a a ( = 1, o a a ) oc o o e a ( = 0, o oc o o e ). Ha p ep, 7- c a - o a B - 48, 110000 o o c c e e. Ko a a a a a ae c , o op A oc ae c o 10110000, a o a ee o c - o 00110000. Ta o pa o , a oe a a e a a a pe c p p e c pocxe e 8255. a pa pocxe a 8255 ae o ep e e po po eccop a a p . AT pa o ae e o o o p o , oc a o o x c a x o o e c a - o , o pe ap e o o o F0H, o a a a o c ae c . Ko a c a - o ae c op A, o ae c pep a e a a p (INT 9). po eccop o e a o pe pa ae c o pa o o e po e p , a a p c a - o . Ko a oc ae o o a c a epe a e , o e e e c a ca a c ae c a . Bo cex oc a x c a x c a - o pa c op p e c o c o a, p c o , o o o ae c p a a a ( po o c ae, c a - o o pac ae c ). Ko e o, po e pa c a a a o pe e e c a o a c a epe a e e , o pa o o o o (o 'a' 'A'?). oce oo ee o oeaec ep aap, oop ec oac a, cocoo ao o 15 ox coo, oa popaa co aa, o opaoa x. Ha pc. 3-1 oaa , oop poxo aae a a epe e, a oac Ba popa. eec a a oo coo, o ASCII pacpee o. Ko ASCII - o ae ca, oope cooec pacpeo aop oo ASCII IBM PC. IBM PC o aop ae oe co e a, a ae p ceax coo ceopa. ASCII o a ae 32 pax oa, oope oo coc epea oa epep cpoca, a e oc a co a pae; oao a x ee cooec co, oop oe ee a ce, c cooae po apeca ceo a. (Cpoo oop, oo epe 128 coo c aco coa ASCII, a a ASCII - o apeapa o Aepac caap o oea opae. Ho popac oo oop o oax ASCII, o o x o px ce. Hapep, 'ASCII 8' oocc ae 'Backspace', o pe a '8' - o pa, oopo cooece ASCII 56). Bopo aop oo, pacpee o, pcoe aa oa a, oope e e pecaeo x coa ASCII, a a oae a oa c ae Alt. Pacpee o e 2 aa, pe ep a cea ASCII 0. Bopo a - oep pacpeoo oa, cco oopx pee [3.3.5]. Hapep, o 0:30 pecae Alt-A. Haa o ooe popae pae a o aop ASCII pacpeo aop. eec ecoo oa a, oope o ceae e eepp ca-o. oa a , , c AT pao, -CapsLock, -Ins> PCjr. ce po apaee peopeee pe- - 2 - aa [3.3.2]. Bce ocae aa a o eppepoac Bae popao ec o e ceaoe aaee, cae c pcop eo, o Baa popaa oa coepa o, oecea ocee oo ea. K cac oepaoa ccea peocae pae poep e oo epa aap, a cpeca oe cpa eo cpo. oco poep oo ea paec ce, o B oee oea, o paec eccceo ca co poep opao oa c aap oo ao ae eec oe ao pepo popapoa a o poe. Oao coepc ocee opoca o o, a epepopapoa pepae aap. 2. Oca epa aap. popaa oa oc ep aap, epe e, a a apoc a o, ca e ca ocopoe aa a, oope o o pee aoc epe. ep oe aaa o 15 aa a a, eaco o oo, c o ooa oa ASCII xa pacpe oa. Ta opao, ep oe oec a aa a aoo aa a a. ooax oo ep a coep o ASCII, a opo - ca-o a. pacpex oo ep a coep ASCII 0, a opo oep pacpeoo oa. o o oo coaae co ca-oo a, o e cea, oco eoope a o opoac c aa ca eepa pax oo. ep cpoe a eca oepe, oop aa ae epo FIFO (ep oe - ep e). Ka o ep o aae epep oac apeco a. Oao e eec opeeeo e a, oopa xpa 'aao cpo' epe. Beco oo a aae xpa o oo xoca cpo coo, axoec epe e oe. Hoe aa a aacac ox, cex a xoco ( oee capx apecax a) cooeceo ooec aae xoca epa. oce oo, a pacxooao ce epoe pocpaco, oe co pooa cac, aa c caoo aaa epo oac; oo oo ca, oa ooa cpo epe ee o apec, e xoc. oce oo a ep aoe, oe oe co oppc, p o pepae aap ae o epe a. B o pe a aae a oo caoe a ep ee co, aae a xoc caoe a o a oce ee coo. Koa oa aae pa, o ep c. o pape o 15 coo peec 16- ca o, 2 aa oopo cea coepa o opaa ape (ASCII 13) ca-o a , pa 28. a ca o eocpeceo peece ooe cpo coo. 32 aa epa aac c apeca 0040:001E. aae a oo xoc pacooe o apeca 0040:001A 0040:001C, cooeceo. Xo o aae oeeo 2 aa, coec oo a a. ae aaee ec o 30 o 60, o cooece o oac ax BIOS. oc epa ao poco cao aee e 0040:001A pa ae e 0040:001C. Oe, o popaa ee oooc ca co ep, aepa cpo coo opaa ape cooeceo e ae aaee. Ec o poea pa opao epe aepee popa, o p opae pae MS DOS co ca oe aoaec apea pa popaa. - 3 - Cpe poe.

0C pepa 21H oe oa c aap 1, 6, 7, 8 A (ocax o ae), o epe c ep aap. Hao poco oec oep oa AL ( o pepe - 1): ;---oca epa epe oae aa a MOV AH,0CH ;pae DOS 0CH MOV AL,1 ;pae oa coa INT 21H ;c ep, e oa H poe. Ka pepe cooo po eae aee aae a xoc pa ae aae a oo. ea pepa aap apeae pepa a pe oa aae: ;---paae ae aaee a oo xoc CLI ;apeae pepa SUB AX,AX ;oe pecp MOV ES,AX ;oao cee - c aaa a MOV AL,ES:[41AH] ;epe aae a oo epa MOV ES:[41CH],AL ;ocae eo aae xoca STI ;papeae pepa 3. poepa coo epe. B oee poep o c aap, e a co epa aap. ep coe a aae, oope oea oo xoc oepe coo, axoxc epe e oe. Koa ae x aaee pa, o ep c. Hao poco cpa coepoe ee a 0040:001A 0040:001C. (He poco poep co, axoc ooe oepe, oco ep opaoa e eco oepe o ee oo ocoo eec [3.1.1].) Cpe poe.

0BH pepa 21H opaae aee 0FFH pecpe AL, oa ep aap coep o oee coo aee 0, oa ep c: ;---poepa a coa epe MOV AH,0BH ;oep INT 21H ;ae pepae 21H CMP AL,0FFH ;cpaae c 0FFH JE GET_KEYSTROKE ;epexo ec ep e c 1 pepa BIOS 16H peocae e oooc, o, poe oo, oaae ao co epe. a (ZF) cpacaec, ec ep c, caaaec, ec epe eec co. B ocee cae o coa, axoeoc ooe epa, oeaec AX, o co epa e aec. B AL opaaec o coa ooax coo ASCII, ae ASCII 0 pacpex oo, oa oep oa - AH. ;---poepe ae coa epe - 4 - MOV AH,1 ;oep INT 16H ;poepa a coa JZ NO_CHARACTER ; epexo ec ZF = 1 ;--- ee c c o - c o p a o CMP AL,0 ; o pac pe o ? JE EXTENDED_CODE ;ec a, o a p e H po e . Ka p epe co o o po poc o cpa ae a a e : ;---cpa ae a a e a o o x oc MOV AX,0 ; c a a ae o a o ce e MOV ES,AX ; a a a o a MOV AL,ES:[41AH] ; epe o a a e MOV AH,ES:[41CH] ; epe p o a a e CMP AH,AL ;cpa ae x JNE GET_KEYSTROKE ;ec epa , o po e pe o a 4. O a o c o a e o e o a pa . O o o e c o o c a pa , o o o, o a e a a o. Ho o a a o a ec oe xo a pa e e e a e o. Ha p ep, op a e o a a a . o a a o c a a a po ep o e c o a o epe o o a pa . B ac oc , a po pa a, o pa a a a pac pe e o , o a e a a o a ec o o xa, a a p o ep a x o o (ASCII 0) e o c a pa , c a po e e c o a . Cpe po e . 7 8 pep a 21H o a o a c o a, ec ep a a p c , a o a o o e c , o e o c a pa . p o 8 o pe e e Ctrl-Break ( p e po e p o pa o Ctrl-Break[3.2.8]), a 7 e pea p e a e o. B o o x c a x c o o pa ae c AL. Ko a AL co ep ASCII 0, o o e pac pe o . o op e pep a e AL o c opo a pac pe o o o a. ;--- o ae e e c o MOV AH,7 ; o ep INT 21H ;o ae o c o a CMP AL,0 ; po ep a a pac pe o JE EXTENDED_CODE ;ec a, o a oco po e p . ; a e, o c o a AL ;--- po e pa o pa o pac pe x o o EXTENDED_CODE: INT 21H ; epe opo a o a CMP AL,75 ; po ep e a 'c pe - e o' JNE C_R ;ec e , o c e . po ep a JMP CURSOR_LEFT;ec a, o a po e p C_R: CMP AL,77 ;cpa ae a e . . BIOS o ec e ae po e p , o opa pe oc a e e e oooc, o MS DOS. oece 0 AH oe pepae 16H. oae oa coa opaae eo AL. B o cae pacpee o opaaac a oo pepae. Ec AL coepc 0, o AH e coepac oep pacpeoo oa. p o e opaaaec Ctrl-Break. ;---e aa a - 5 - MOV AH,0 ;oep oa oa INT 16H ;oae ee o CMP AL,0 ;poepa a pacpe o JE EXTENDED_CODE ;ec a, o a ce. poep . ;ae co AL ;---poepa opao pacpeoo oa EXTENDED_CODE: CMP AH,75 ;epe pacpe o AH ; .. 5. Oae aa a xo a pa. p oe ax eca, xo ox coo oo aec a pa. p o ae co a opa ape ao epeoc cooece epeee pcopa, a e opaac a ASCII co x oo. Baa xa pocxo o o, e peapeo caoe pcop ec aoaec epeocc a ce cpo p oce oa ee. epeoc a ce cpo e pee ceaoo oa, oco co oeac ce o epo a ce, oopa pecae ce o cpo, a ce 25 cpo ce. Cpe poe.

1 pepa 21H oae oa coa, ec ep aap c, a ae o eo a pa e o pcopa. Opaaaec Ctrl-Break, oo oe oc poepa opao Ctrl-Break. Bee co opaaec AL. p oe pacpeoo oa AL coep ASCII 0. oe AL opoo aa pacpeoo oa ao oop pepae. ;---oee eeoo coa MOV AH,1 ;oep INT 21H ;oae aa a CMP AL,0 ;pacpe o? JE EXTENDED_CODE ;ec a, o a ce. poep . ;ae co axoc AL ;---poepa opao pacpex oo INT 21H ;oae AL oep oa CMP AL,77 ;poepa a 'pcop-pao' JNE C_R ;ec e, poepa ceeo JMP CURSOR_RIGHT ;ec a, o a poep C_R: CMP AL,75 ;... .. a ooc oppe a . Kaa a eppepec opao. Kaa ao cae pcop a o o eo, o co, axoc o o e cpaec. Kaa ae epeeee pcopa ep o ee cpo (e aoaecoo epeoa cpo). 6. pe coa e oa. Heoope popa, paoae peao pee e o ocaaac a aa a; o pa co epa aap oo e oe, oa o oo popa. Hapep, eece poeccopa o pe oa oa c aap ocaoo ce ec a pae poo popae. Cpe poe. - 6 - 6 pepa 21H - o ece coco o ee co e oa. a e ae xa a pa e pacoae Ctrl-Break. epe oo pepa DL oo oeeo 0FFH. B poo cae 6 c coepeo pooooo e - eaae ee o pcopa co, axoc DL. a caaaec 1, ec ep aap c. Ec co p, o o oeaec AL. Ko ASCII 0 pe pacpe o oe oepa oa pepae oo oopeo. MOV AH,6 ;oep DOS MOV DL,0FFH ;apoc oa c aap INT 21H ;oee coa JZ NO_CHAR ;epexo ec e coa CMP AL,0 ;poepa a pacpe o JE EXTENDED_CODE ;ec a, o a ce. poep ... ;ae AL o ASCII EXTENDED_CODE: INT 21H ; o ae o ep pac pe o o o a ... ; o ep o a AL 7. o e e c po c o o . Cpe po e . 0AH pep a 21H o o e o c po o o 254 c o o , a a xo a ep a . a po e pa po o ae o oc a x c o o o ex op, o a e a a a a a o pa ape . DS:DX a ae a a pec a , a o a o e e a c po a. p xo e ep a o o o e co ep a c o a o , o o x o c po . oc e o o a c po a e e a, opo a ac c o pea o e e x c o o . Ca a c po a a ae c c pe e o a a. Ha o o ec oc a o o a c po o c a a a ec p opa c po o o a o a o pa a ape . Ko a B c a a ae e a c a c po ep o a e, o e a e o a 1 o pa a ape . Ko o pa a ape - ASCII 13 - o c a oc e c o c po , o o e ae c pe a e, o op o e ae o opo a ec p opa c po . Ta o pa o , o e 50-c o o c po a o o ec 53 a a a o ec ep a ASCII 51. oc e o a 50 c o o opo a e co ep a ASCII 50, a 53- a o e e o a - ASCII 13. ;--- ce e e a x STRING DB 53 DUP(?) ;o ac c po 50 c o o ;--- o e e c po c a a p LEA DX,STRING ;DS:DX a a a a pec c po MOV BX,DX ; c BX o e a ae a c po MOV AL,51 ; c a o a c po (+1 CR) MOV [BX],AL ; oc ae 1- a ec p opa MOV AH,0AH ; o ep INT 21H ; o ae c po ;--- po ep a c po MOV AH,[BX]+1 ; e ep a AH B o po e pe o o c o o a o o oc pe a po a c po MS DOS. Ha a e a a o 'c pe a e o' a e c o - 7 - c pa a, a a e e o e ae e o a . Pa o ae a a a - , pac pe e o op p c , c e c po o c a c ( ee c o pa ape , o opo e pe ec e p o o c o a). Ha ep a e p oc e pa o o pa c po a epe oc c a c e c po , a p oc e pa o o e o a pa c ae c a c po epx. Ko a o c o e c o o , e o e e o ec a c po , o e c o op p c ae c o a a. MS DOS o ec e ae p o c oco o e c po , p o opo e o c xo a ep a . 3FH pep a 21H - o o a o e o a a e , o opa a e ce o c o e c p c o x o epa x. O a pe e pe o pe e e o o ec p opa a a (file handle), o op e c o o c o , c o e o epa o o c c e o o o a e c po c a o a/ o a. a p c o - e c ec p op 0 o o e o e e BX. o ec e DS:DX a pec, o o opo o a axo c c po a, a CX - a c a - c po o e : ;--- e e c po e xa MOV AH,3FH ; o ep MOV BX,0 ; o ep ec p opa a a LEA DX,STRING_BUFFER ; a a e a ep o a c po MOV CX,100 ; a c a a a c po INT 21H ; e o a B o c po a ep ae c a a e a o pa ape DOS o a e o e c po a c o a: o pa ape epe o c po (ASCII 13 ASCII 10). - a x o a o x c o o , p a a c po 100 c o o o a o e a a o 102 a a . a e e o c po o pa ae c AX o a e e ae a c o a-o pa e . 8. po ep a/ c a o a c a ca a - epe a e e . a a a, pac o o e e e ax a 0040:0017 0040:0018 co ep a , o pa a e c a c a c a p x a - epe a e e c e o pa o : K a a a e e, o a = 1 0040:0017 7 Insert pe c a e 6 CapsLock pe CapsLock e 5 NumLock pe NumLock e 4 ScrollLock pe ScrollLock e 3 Alt a a a a a 2 Ctrl a a a a a 1 e Shift a a a a a 0 pa Shift a a a a a 0040:0018 7 Insert a a a a a 6 CapsLock a a a a a 5 NumLock a a a a a 4 ScrollLock a a a a a 3 Ctrl-NumLock pe Ctrl-NumLock e oc a e e c o c pep a e a a p e e e o o o e c a ca, a o o e a a a o a a - epe a e e , a e ec e o c a o o o o c o a epa a a p . o epo a Ins, oopa ecea x 8 a oeae o ep (caoa caca Ins eec ae ec epe e eca coa). Oe, o 3 o apec 0040:0018 caaaec 1, oa ece pe aep Ctrl-NumLock; oco o coco - 8 - popaa pocaoea, o o ececee. pepae aap poepe cocoe cacx o epe e, a eppepoa aae a, oo oa popaa ee o x o, o e ao e, a p eco aa cooece a. B oee axoe cao cocoe a NumLock CapsLock, o epe, o o e peeoo a. Haoopo, Baa popaa oe ac e caca x a, apep oo, o ec e cac a pa. Oe, o aapa AT pao caaae ceoe aop coco a, ae ec epee popao. Cpe poe.

2 pepa 16H peocae oc oo - o oo oo - ao caca. o a o apec 0040:0017, oop coep oe oeo opa. a opaaec AL. ;---poepa caca a ca MOV AH,2 ;oep INT 16H ;oae a caca TEST AL,10000000B ; po ep e 7 JZ INSERT_OFF ;ec 0, o INSERT e H po e . B a o p epe c a a ae c pe c a , a c e c a o a 7 a a c a ca o a pec 0040:0017 ( o op a pec e c a 0000:0417). SUB AX,AX ; c a a ae o a o ce e a MOV ES,AX ; a a o a MOV AL,10000000B ; o o 7 c a o e OR ES:[417H],AL ; e e a c a ca 9. Ha ca e po e p o a c a a p o e o a a e . C c e a o o , c o e x a a po , e o ae c poc o pe pe a . Ko o e 1 2 a a e poc o o coo e c e o o a e , c o o o a e c o a pa e o op o a e . He ce o a a a e a a o , o o eo xo o a o e c , o pa x. H o ASCII, pac pe e o e op o e a o pa o , o op o o x poc p po po ep o o . p c o a , po e pa o a c a a p o e o a a e pe e x o o o o po pa po a . Cpe po e . o p ep o ae c o pe e o e o o pac o a a e pex ac x c ae Ctrl-H, -I, -M -[. ec , o a c ae o poc o o , o a a o p a a o o a , o a c a e Ctrl, po ep e c c a - o . o e o o ee pa e , e po ep a a c a ca, a a c a - o a o ae c epe a a p , a c a o a a c a ca o e e e a. ;--- o e e o a a a o a o pe e e e e o a NEXT: MOV AH,0 ; o a c a a p BIOS INT 16H ; o ae e e o CMP AL,0 ; po ep a a pac pe o - 9 - JE EXTENDED_CODE ;ec a, o a c e . po e p CMP AL,32 ; po ep a a pa c o JL CONTROL_CODE ;ec a, o a c e . po e p CMP AL,65 ;ec c o e xo a op - JL NEXT ; e a , o epe c e CMP AL,123 ; JL NEXT ; ;--- e ep o pa a ae c o AL STOSB ; a o ae c o o a pec ES:DI MOV AH,2 ; o a c o a a pa MOV DL,AL ; o e ae c o DL epe o o INT 21H ; o e o a pa . . JMP NEXT ; epexo c e e c o ;---a a p e pa e o CONTROL_CODE: CMP AL,13 ; o ASCII 13? JNE TAB ;ec e , o c e . po ep a CMP AH,28 ; a e po ep e c a - o JNE C_M ;ec e , o o Ctrl-M CALL CARRIAGE_RET;o pa o a o pa a ape JMP NEXT ; epexo c e e c o C_M: CALL CTRL_M ;o pa o a Ctrl-M JMP NEXT ; epexo c e e c o TAB: CMP AL,9 ; po ep a a a ... . . CMP AL,10 ; a e po ep a p x . . REJECT: JMP NEXT ; epexo c e e c o ;---a a pac pe x o o (2- a o a AH): EXTENDED_CODE: CMP AH,71 ; po ep a e pa JL REJECT ;ec e e, o c e . c o CMP AH,81 ; po ep a epx e pa JL REJECT ;ec o e, o c e . c o ;---AH co ep c o pa e pcopo , a a p e e o: CMP AH,72 ;' pcop epx'? JE C_U ;ec a, o a po e p CMP AH,80 ;' pcop '? JE C_D ;ec a, o a po e p . . C_U: CALL CURSOR_UP ; o coo e c e po e p JMP NEXT ; epexo c e e c o C_D: CALL CURSOR_DOWN ; o coo e c e po e p JMP NEXT ; epexo c e e c o 10. epe po pa po a e pep a a a p . Ko a po po eccop a a p o e ae c a - o op A pocxe 8255 (a pec op a 60H - c . [1.1.1]), o p o ae c pep a e 9. a a a o o pep a - peo pa o a c a - o c o a, oc o a c a coc o a - epe a e e , o ec e o ep a a p . (Ec c a - o coo e c e a e epe a e , o ep a a p e e c e o, a c e e c a a , a ec o o o pep a e e e a c a ca, pac o o e e o ac a x BIOS. pep a ' o a c a a p ' DOS BIOS a ca o e e ce o pep a ' o a epa a a p '. Ha ca o - 10 - e e o e pac o a a a a . To ee, o a ep pe a e e x a , o op o ec e o pep a e 9. a e , o PCjr c o e c e a po e p (INT 48H) peo pa o a o a o e o 62 a 83- a o po o o , c o e o p IBM PC. Pe a o po e p epe ae c pep a 9, o opoe o e c o pa o a o o. B pep a a a p o o e p oc o x a a: 1. po a c a - o oc a a a pe o ep a c a . 2. peo pa o a c a - o o ep o a c a o oe c pa c a ca a - epe a e e . 3. o ec o a ep a a p . B o e o a pep a c a - o e axo c op e A. o o c a a a a o o o po a coxpa a c e e. a e c o e c op B (a pec 61H), o c po oc a c a o ep e po po eccop a a p . Ha o poc o c a o 7 1, a a e cpa e e o a a 0. a e , o 6 op a B pa e c a o aco a a p . O ce a o e c a o e 1, a e a a pa e e a. a peca op o p e AT, xo o e ee pocxe ep e ca c ep ep e 8255. C a a a c a - o a a p e c a pe e o o, a a a a a a ( o a a ) o e a ( o oc o o e ). Ha cex a ax, po e AT, o oc o o e p e c c a o o a 7 c a - o a 1. AT, o opo o 7 ce a pa e 0, o oc o o e coc o x a o : c a a a 0F0H, a a e c a - o . Bce o oc o o e o pac a c , po e c a a - epe a e e , o op x e a c coo e c e e e a ax x c a ca. C p o c opo , ce o a a o pa a a c . p o o o e c a c a ca a - epe a e e . B c ae e c o - x o o , a o po ep a c a ca, o o pe e , a p ep, o c a - o 30 coo e c e e epx e pe c p A. oc e o o a e e c o e po a , po e pa o a c a a p o a a coo e c e o ASCII pac pe o . p e e p ep c o opo o , o pacc o pe ce c a . B o e c ae c a - o co oc a c e e a a a x, o opa a a p e c c p e XLAT. XLAT p ae AL c o o 0 o 255, a o pa ae AL 1- a oe a e e 256- a o a , a o op a ae DS:BX. Ta a o e axo c ce e e a x. Ec AL axo c c a - o 30, o a e o e e a a o ep 30 (31- a , a a o c e a ae c c ). o a a e o e c a o e pa 97, a a o ASCII 'a'. Ko e o o e a a o A a p a a a, o opo o pa e e e po cxo , ec c a c c a c a o e . a a e o xpa c p o ac o e a , o o c ae c a - o a o e o a c e e e, o pe e e oe c a co a - epe a e e . Ha o e , o epa o o o o e e ep a a p . po e pa o a c a a a po ep , ee c epe ec o c e e o c o a. B [3.1.1] o a a o, o o ep c poe a - ec a o epe . e a a 0040:001A co ep a a e a o o epa, a 0040:001C - a a e a x oc . c o e a a e a c e e e o ac a x BIOS ( o opa a ae c ce e e 40H) axo c a a o e o 30 o 60. Ho e c o c a c e epa c o ee c ap a peca , a o a oc a epx pa a, o c e c o epe oc c o e epa. Ko a ep o o , o a a e x oc a a 2 e e a a e a o o - po e c a , o a a a e a o o pa e 30 ( a a o o ac epa), a o c ae ep o o , o a a a e x oc a pa e 60. c a c o a ep, a o o ec e o o , a o op a ae x oc epa a e e a a e x oc a a 2; - 11 - ec a a e x oc a pa e 60, o a o e e o a e e a 30. Bo ce. Cxe a pep a a a p o a a a a p c. 3-4. H po e . e a po e pa pe e o o o po a . B o p epe a o o ca e a a . O p ae o o a e epx e pe c pax, p e ce o a p e o a , o opo epx e o pe c pa axo c a 100 a e, e x a e pa . A a p e c o o e a a a c a e ee coc o e a CapsLock op p e c . ;--- ce e e a x TABLE DB 16 DUP(0) ; po c ae 1-e 16 a DB 'qwertyuiop',0,0,0,0 ; epx p a a p DB 'asdfghjkl',0,0,0,0,0 ;cpe p a a p DB 'zxcvbnm' ; p a a p DB 16 DUP(0) ; po c o epx e o pe c pa DB 'QWERTYUIOP',0,0,0,0 ; e e c o a epx e DB 'ASDFGHJKL',0,0,0,0,0 ;pe c pe DB 'ZXCVBNM' ; ;--- a a e po pa c a a ae pep a e CLI ; a pe pep a PUSH DS ;coxpa e pe c p MOV AX,SEG NEW_KEYBOARD ;DS:DX o a a a MOV DS,AX ; po e p o pa o MOV DX,OFFSET NEW_KEYBOARD ; pep a MOV AL,9 ; o ep e opa pep a MOV AH,25H ; o ep DOS INT 21H ; e e e op pep a POP DS ; occ a a ae pe c p STI ;pa pe ae pep a po pa a po o ae c , a e oc a a c pe e o [1.3.4]. ;--- o ca o pep a e a a p NEW_KEYBOARD PROC FAR ;coxpa e ce e e e PUSH AX ;pe c p PUSH BX ; PUSH CX ; PUSH DI ; PUSH ES ; ;--- o ae c a - o oc ae c a o ep e IN AL,60H ; o ae c a - o op a A MOV AH,AL ; o e ae o AH PUSH AX ;coxpa e c a - o IN AL,61H ; ae coc o e op a B OR AL,10000000B ; c a a ae 7 OUT 61H,AL ; oc ae e e a op AND AL,01111111B ;c pac ae 7 OUT 61H,AL ; o pa ae coc o e op a B ;---ES o e a a a o ac a x BIOS MOV AX,40H ; c a a ae ce e MOV ES,AX ; POP AX ; o pa ae c a - o c e a ;--- po ep a a c a CMP AL,42 ; a a e c ? JNE KEY_UP ; e - c o p c e ee MOV BL,1 ; a - e e c a ca - 12 - OR ES:[17H],BL ; e e p o pe c p c a ca JMP QUIT ; xo po e p KEY_UP: CMP AL,170 ; e c o e ? JNE NEXTKEY ; e - c o p c e ee MOV BL,11111110B ; a - e e c a ca AND ES:[17H],BL ; e e p o pe c p c a ca JMP QUIT ; xo po e p NEXTKEY: ; poc o p p x epe a e e ;--- o c o a a a - ep pe p e c a - o TEST AL,10000000B ; o oc o o e a ? JNZ QUIT ; a - xo po e p MOV BL,ES:[17H] ; a e epe a c a ca TEST BL,00000011B ; a a c a a a a? JZ CONVERT_CODE ; e - xo a e ADD AL,100 ; a - a a a a a CONVERT_CODE: MOV BX,OFFSET TABLE ; o o a XLAT TABLE ; peo pa e c a - o ASCII CMP AL,0 ; o pa e 0? JE QUIT ;ec a, o a xo ;--- o a o o , po ep e e o o ep a a p MOV BX,1AH ;c e e e a a e a o o MOV CX,ES:[BX] ; o ae e o a e e MOV DI,ES:[BX]+2 ; o ae a a e x oc a CMP CX,60 ; o o a a ep e epa? JE HIGH_END ; a - epexo c e . c a INC CX ; e ae a a e o o INC CX ; a 2 CMP CX,DI ;cpa ae c a a e e x oc a JE QUIT ;ec pa , o ep o o JMP GO_AHEAD ; a e c a e c o HIGH_END: CMP DI,30 ; po ep a c e . c a JE QUIT ;ec ep o o , o xo ;--- ep e o o - c a e e o c o GO_AHEAD: MOV ES:[DI],AL ; o e ae c o o x oc a CMP DI,60 ;x oc o e epa? JNE NO_WRAP ;ec e , o o a e 2 MOV DI,28 ; a e a a e x oc a = 28+2 NO_WRAP: ADD DI,2 ; o ae o oe a e e x oc a MOV ES:[BX]+2,DI ; oc ae e o o ac a x ;--- a ep e e pep a QUIT: POP ES ; occ a a ae e e e POP DI ;pe c p POP CX ; POP BX ; POP AX ; MOV AL,20H ; ae c a o o o a OUT 20H,AL ;a apa o o pep a IRET ; o pa pep a NEW_KEYBOARD ENDP 11. epe po pa po a e o e x a . o epe po pa po a e a o ae c c oco ac a ee a a p o o . Ho o pe e , o a po pa a o ae o a a o a , pep a e a a p e po ep pe po a o xo - c a - o peo pa o a o e o e o op apa ee pe o pe e e o ASCII pac pe o . K c ac , a a c MS DOS epc 2.0, c c e a co ep cpe c a epe po pa po a a . o cpe c o - 13 - e c e o o ec o oc p ae c epe DOS o a c a a p - pep a BIOS 16H po o a ep pe po a a a a op a o pa o . epe po pa po a e oc o a c e Esc oc e o a e oc e . Kopo a c po a, o opa a ae c c c o a Esc (ASCII 27), pe a a ae c o a a 'c a ap oe c po c o o a', .e. a ep a . Ho a o ap a o a Esc c o a e e oc a o opa. B ec o o o a a c po a ac a e MS DOS o p o ep pe po a a , a a o c po e. Ka oe e e e a pe e co c e o c po , p o o o e o o e p c a a c a o o o o ec a . O a o c po a o : o a a ae c c o a Esc (ASCII 27), a o op e [, a e o ep o a epeo pe e e o a , a e o a c a o (;), a e o o ep o a, p c a ae a e , a o e , c o p. Ta o pa o , c po a 27,'[65;97p' e e A (ASCII 65) a a (ASCII 97). Pac pe e o a c a c c a a e o o x a o , p e a ep e a o o c o o a c a o . C po a 27,'[0;68;0;83p' p c a ae a e F10 (0;68) o e o , o a e Delete (0;83). B o e e p c a a o o pac pe e o , p e e e a e pac pe x o o [3.3.5]. ee c ec o o ap a o o c o o a c po . Bo ep x, c o e a o o o a a c ca c o o , a e a . Ta o pa o , c po a 27,'['A';'a'p' a e e e A a a. Bo op x a e o e p c oe a e a c po a c o o , e a a c o o x o o x o epo pa e . C po a 27,'['A';'A is for Apple'p' p e e o , o p a a a a A epx e pe c pe, e e a a c c c po a A is for Apple. Ha ca o e e Esc oc e o a e oc - e o o ee, e c po , o op x ep o c o a ae a a o epeo pe e , a oc a a c ac c po a ae a oe a e e B xo e e p a . o e, o o epa o o o ce a pa e e o o c a o , a c o a e a . Ko c o o epe e a x co e a x. o o o a e epeo pe e e a o o , eo xo o o pa ep ANSI.SYS a p e p a p e o epa o o c c e . B po o c ae Esc oc e o a e oc op po a c . Cpe po e . c o e 9 pep a 21H oc c po a c a ap oe c po c o o a. DS:DX o a a a ep c o c po a c po a o a a ep a c c o o $ (24H). ec F2 (0;60) epeo pe e e c a o pa o , o o a e c o a a a Del (0;83). ;--- ce e e a x CHANGE_KEY DB 27,'[0;60;0;83p$' ;--- e e o pe e e a LEA DX,CHANGE_KEY ;DS:DX o a a a c po MOV AH,9 ; o ep INT 21H ; epeo pe e e e a 12. C o a a a c a - o o . Ka a a a e ep p e a a c a - o o , ' o a a ' - o a a a a ae c , ' o oc o o e ' - o a a a o c ae c . cex a , po e AT, o oc o o e a 128 o e o a a a ( 7 = 1). Ta o pa o a a T co ae o 20 p a a o - 14 - 148 p o c a . AT c o e o e e o o o o a a oc o o e , o o oc o o e coc o x a o , ep o op x ce a pa e 0F0H. PCjr ee c e a c a - o o a , o ep 55. o o opo ae c , o a o o pe e o a a p o ee a , o o o ae e a o o p o e. pep a e a a p o pac ae o o o e c ae c c a o o ASCII pac pe o o . K a e a K a a Ko a a K a a Ko a a K a a Ko a a '1' 2 'T' 20 'L' 38 '2' 3 'Y' 21 ';' 39 '3' 4 'U' 22 ''' 40 '4' 5 'I' 23 '`' 41 '5' 6 'O' 24 '' 43 '6' 7 'P' 25 'Z' 44 '7' 8 '[' 26 'X' 45 '8' 9 ']' 27 'C' 46 '9' 10 'A' 30 'V' 47 '0' 11 'S' 31 'B' 48 '-' 12 'D' 32 'N' 49 '=' 13 'F' 33 'M' 50 'Q' 16 'G' 34 ',' 51 'W' 17 'H' 35 '.' 52 'E' 18 'J' 36 '/' 53 'R' 19 'K' 37 po e 57 pa e a Esc - 1 Ctrl - 29 Alt - 56 BackSpace - 14 left shift - 42 CapsLock - 58 Tab - 15 right shift - 42 NumLock - 58 Enter - 28 PrtSc - 55 ScrollLock - 70 o a e a F1 - 59 F5 - 63 F9 - 67 F2 - 60 F6 - 64 F10 - 68 F3 - 61 F7 - 65 F4 - 62 F8 - 66 K a o o e o a a p '7' - 71 '5' - 76 '3' - 81 '8' - 72 '6' - 77 '0' - 82 '9' - 73 '+' - 78 '.' - 83 '-' - 74 '1' - 79 Sys Req - 132 ( o o AT) '4' - 75 '2' - 80 a - 55 ( o o PCjr) 13. C o a a a o o ASCII o o ASCII o 1 o 255 o e e e c a a p , ec ep a a a o a Alt p a ope o epa o a a o o e o a a pe (c coo e c e o c a o e pe o NumLock). Ko a a a Alt a e oc o o ae c , o o o c . C o 10- 16-p o C o 10- 16-p o (null) 0 00 00000000 0 48 30 00110000 - 15 - 1 01 00000001 1 49 31 00110001 2 02 00000010 2 50 32 00110010 3 03 00000011 3 51 33 00110011 4 04 00000100 4 52 34 00110100 5 05 00000101 5 53 35 00110101 6 06 00000110 6 54 36 00110110 7 07 00000111 7 55 37 00110111 8 08 00001000 8 56 38 00111000 9 09 00001001 9 57 39 00111001 10 0A 00001010 : 58 3A 00111010 11 0B 00001011 ; 59 3B 00111011 12 0C 00001100 60 3C 00111100 13 0D 00001101 = 61 3D 00111101 14 0E 00001110 > 62 3E 00111110 15 0F 00001111 ? 63 3F 00111111 16 10 00010000 @ 64 40 01000000 17 11 00010001 A 65 41 01000001 18 12 00010010 B 66 42 01000010 19 13 00010011 C 67 43 01000011 20 14 00010100 D 68 44 01000100 21 15 00010101 E 69 45 01000101 22 16 00010110 F 70 46 01000110 23 17 00010111 G 71 47 01000111 24 18 00011000 H 72 48 01001000 25 19 00011001 I 73 49 01001001 26 1A 00011010 J 74 4A 01001010 27 1B 00011011 K 75 4B 01001011 28 1C 00011100 L 76 4C 01001100 29 1D 00011101 M 77 4D 01001101 30 1E 00011110 N 78 4E 01001110 31 1F 00011111 O 79 4F 01001111 po e 32 20 00100000 P 80 50 01010000 ! 33 21 00100001 Q 81 51 01010001 ' 34 22 00100010 R 82 52 01010010 # 35 23 00100011 S 83 53 01010011 $ 36 24 00100100 T 84 54 01010100 % 37 25 00100101 U 85 55 01010101 & 38 26 00100110 V 86 56 01010110 ' 39 27 00100111 W 87 57 01010111 ( 40 28 00101000 X 88 58 01011000 ) 41 29 00101001 Y 89 59 01011001 * 42 2A 00101010 Z 90 5A 01011010 + 43 2B 00101011 [ 91 5B 01011011 , 44 2C 00101100 92 5C 01011100 - 45 2D 00101101 ] 93 5D 01011101 . 46 2E 00101110 ^ 94 5E 01011110 / 47 2F 00101111 _ 95 5F 01011111 Co 10- 16-p o Co 10- 16-p o ` 96 60 01100000 153 99 10011001 a 97 61 01100001 154 9A 10011010 b 98 62 01100010 155 9B 10011011 c 99 63 01100011 156 9C 10011100 d 100 64 01100100 157 9D 10011101 e 101 65 01100101 158 9E 10011110 f 102 66 01100110 159 9F 10011111 g 103 67 01100111 a 160 A0 10100000 h 104 68 01101000 161 A1 10100001 i 105 69 01101001 162 A2 10100010 - 16 - j 106 6A 01101010 163 A3 10100011 k 107 6B 01101011 164 A4 10100100 l 108 6C 01101100 e 165 A5 10100101 m 109 6D 01101101 166 A6 10100110 n 110 6E 01101110 167 A7 10100111 o 111 6F 01101111 168 A8 10101000 p 112 70 01110000 169 A9 10101001 q 113 71 01110001 170 AA 10101010 r 114 72 01110010 171 AB 10101011 s 115 73 01110011 172 AC 10101100 t 116 74 01110100 173 AD 10101101 u 117 75 01110101 o 174 AE 10101110 v 118 76 01110110 175 AF 10101111 w 119 77 01110111 176 B0 10110000 x 120 78 01111000 177 B1 10110001 y 121 79 01111001 178 B2 10110010 z 122 7A 01111010 179 B3 10110011 { 123 7B 01111011 180 B4 10110100 | 124 7C 01111100 181 B5 10110101 } 125 7D 01111101 182 B6 10110110 ~ 126 7E 01111110 183 B7 10110111 127 7F 01111111 184 B8 10111000 A 128 80 10000000 185 B9 10111001 129 81 10000001 186 BA 10111010 B 130 82 10000010 187 BB 10111011 131 83 10000011 188 BC 10111100 132 84 10000100 189 BD 10111101 E 133 85 10000101 190 BE 10111110 134 86 10000110 191 BF 10111111 135 87 10000111 192 C0 11000000 136 88 10001000 193 C1 11000001 137 89 10001001 194 C2 11000010 K 138 8A 10001010 195 C3 11000011 139 8B 10001011 196 C4 11000100 M 140 8C 10001100 197 C5 11000101 H 141 8D 10001101 198 C6 11000110 O 142 8E 10001110 199 C7 11000111 143 8F 10001111 200 C8 11001000 P 144 90 10010000 201 C9 11001001 C 145 91 10010001 202 CA 11001010 T 146 92 10010010 203 CB 11001011 147 93 10010011 204 CC 11001100 148 94 10010100 205 CD 11001101 X 149 95 10010101 206 CE 11001110 150 96 10010110 207 CF 11001111 151 97 10010111 208 D0 11010000 152 98 10011000 209 D1 11010001 Co 10- 16-p o Co 10- 16-p o 210 D2 11010010 233 E9 11101001 211 D3 11010011 234 EA 11101010 212 D4 11010100 235 EB 11101011 213 D5 11010101 236 EC 11101100 214 D6 11010110 237 ED 11101101 215 D7 11010111 238 EE 11101110 216 D8 11011000 239 EF 11101111 217 D9 11011001 E 240 F0 11110000 218 DA 11011010 e 241 F1 11110001 219 DB 11011011 242 F2 11110010 - 17 - 220 DC 11011100 243 F3 11110011 221 DD 11011101 244 F4 11110100 222 DE 11011110 245 F5 11110101 223 DF 11011111 246 F6 11110110 p 224 E0 11100000 247 F7 11110111 c 225 E1 11100001 248 F8 11111000 226 E2 11100010 249 F9 11111001 227 E3 11100011 250 FA 11111010 228 E4 11100100 251 FB 11111011 x 229 E5 11100101 252 FC 11111100 230 E6 11100110 253 FD 11111101 231 E7 11100111 254 FE 11111110 232 E8 11101000 255 FF 11111111 14. C o a o o ce o pa oc poe pa o . H e p e e o c a o epo o o ASCII, c o o ce o pa , c o e x p oc poe pa o . 218 194 191 213 209 184 195 197 180 198 216 181 179 192 193 217 212 207 190 196 205 214 210 183 201 203 187 199 215 182 204 206 185 186 211 208 189 200 202 188 15. C o a a a pac pe x o o . a e e 2- o a a Coo e c e a 15 Shift + Tab ('back-tab') 16-25 Alt-Q - Alt-P ( epx p ) 30-38 Alt-A - Alt-L (cpe p ) 44-50 Alt-Z - Alt-M ( p ) 59-68 oae a F1 - F10 71 Home 72 Cursor-up (cpea epx) 73 PgUp 75 Cursor-left (cpea eo) 77 Cursor-right (cpea pao) 79 End 80 Cursor-down (cpea ) 81 PgDn 82 Ins 83 Del 84-93 F1-F10 + Shift - 18 - 94-103 F1-F10 + Ctrl 104-113 F1-F10 + Alt 114 Ctrl + PrtSc 115 Ctrl + Cursor-left 116 Ctrl + Cursor-right 117 Ctrl + End 118 Ctrl + PgDn 119 Ctrl + Home 120-131 Alt + 1 - Alt + = ( epx p ) 132 Ctrl + PgUp 13 Bo/o. 1. oc oceoaeo op. p acxpoo c aa ocae pae a opa o oo . Bpeee epa e aa p o ecece, o peea e oe a aa oe a. Ca a oe cooo oo po, o cooece oec ee, oop, o oeea (marking), oa poe co, ca (spacing), oa poe . oepaec oeeo coco, oa o e e epea ax. p aae epea aa ax ca aae 0, oea capo . ae ce oce o ax (oa ee) e aopa cox x poe. oce ax oe copooac o eoc, coe oape oo, a ae oceoaeoc ac 1 oee co-o, oop cooece co poe. co- aa oeeoe cocoe, oopoe e coxpac o ex op, oa e aec epeaa ceeo aa ax; co coex co-o ceceo, oco o caaa aoe pe, oopoe oo po epe ce capo o. Koeo, epeaa pea ca o cooa o o e pooo x eoe o o o paoa c oo o e copoc oea (epeo ax ce, aaex ae oa). p oee o eo oa o, oo oaooe oopoae peocae paoopa opa o cace a caoo opa, a pcoeeoo e oea. aae oea ec peopaoae caa, eeppeoo opo oa, acec ca, oop oe ae epea o eeoo aa. oco oeo peoca ae ooee oaoe oooc, ae a aoaec o oe, oope e oepac ca opo oa. 2. popapoae pocxe UART 8250. oceoaea c acoo coa, o papaoa ceae pocxe, oe pao o oppoa cxpoa cpo o, cocax oceoaee ae. Tae pocxe aa epca acxpo peo-epeao (universal asynchronous receiver transmitter UART). IBM PC c o - e UART 8250 p Intel. O epa o a c c e a o ep ae 2 op a o a , o o a e e c 2 pocxe . x a o e a peca xpa c e e 0040:0000 COM1 0040:0002 COM2. (ao apec o 2-xao apec opa, oop ec a p apeco opo, ax oc UART.) Ha cex aax COM1 ee ao apec 3F8H, a COM2 - 2F8H; Mpocxea 8250 ee 10 popapex ooax pecpo, c oo oopx paec opopec op oa. oco x aac aae opa, poecco, oop oe oe co. oc 10 pecpa ocecec epe ce apeco opo c oepa 3F8H - 3FEH ( 2F8H - 2FEH). B cax pecp, oopo oae oc epe a op, ac o oo, a caoe 7 pecpe opo , oop ec ece pecpo c apeco opa 3FBH. Bo pecp: - 2 - 3F8H (OUT, 7 = 0 3FBH) Pecp xpae epeaa 3F8H (IN, 7 = 0 3FBH) Pecp ax pea 3F8H (OUT, 7 = 1 3FBH) ee copoc oea (a) 3F9H (IN, 7 = 1 3FBH) ee copoc oea (cap) 3F9H (OUT, 7 = 0 3FBH) Pecp papee pepa 3FAH (IN) Pecp ea pepa 3FBH (OUT) Pecp pae 3FCH (OUT) Pecp pae oeo 3FDH (IN) Pecp caca 3FEH (IN) Pe c p c a ca o e a ec pe c po o o ec eo xo poc o oc e o a e o c . Pe c p xpa e epe a a co ep a a x, o op e oc a , a pe c p a x p e a - oc e oe a ax. Pecp pae caca ap pa e c, co copoc oea, coepac x pecpax ee copoc oea. ocaxc epex pecpo pecp pae caca oea coc oo c epe oe , a a pecpa, cax c pepa coc oo poepax, paex pepa. pepa coc p c ex eoc. Oa oaoa poepa epepo poepe pecp caca , oa ooo coa aa, o ce ooo epea ceeo aa ax. oco poeccop aoo cpee, e oe copoc c oop epeac oceoaee ae, o o eo apaco pacxoe poeccopoe pe, oopoe oe cooac opao ocax epeaaex ax. o o pe pocxea 8250 oe caoea pe, a pepae p oe coa, ooe o .. o pepae oeao oe poep Bae popa, oopa, cae, e epeaa ce co oaooo epa. 3. aa oceoaeoo opa. p aa opa oa ('op') caaac ce eo apaep. apaep coa, co co-o, cao eoc copoc oea. a coa o co o, oopoe opae oco e ax. Ec paoae c p op o 8 o, o 7 o ocao caapx ao ASCII ( oopx ce co e o, e peae ASCII 128), o pe a epea cex ax ocaoo op o 4 a. Cpe poe.

0 pepa 14H BIOS ape op oa. B DX oe aac oep oaooo aaa (COM1 = 0, COM2 = 1). B AL oe coepac a aaox ax, aee o oopoo ceee: 1-0 a coa. 10 = 7 o, 11 = 8 o. 2 co co-o. 0 = 1, 1 = 2. 4-3 eoc. 00 10 = e, 01 = ee., 11 = e. 7-5 copoc oea. 000 = 110 o 001 = 150 o 010 = 300 o 011 = 600 o 100 = 1200 o 101 = 2400 o - 3 - 110 = 4800 o 111 = 9600 o B ao pepe op apec co coo 8 o, o co-o eo eoc. Copoc oea 1200 o. ;---pcaae ae apaepo epee MOV WORDLENGTH,00000011B ;a coa 8 o MOV STOPBITS,00000000B ;1 co- MOV PARITY,00011000B ;ea eoc MOV BAUDRATE,10000000B ;copoc 1200 o ;---ape COM1 MOV AL,0 ;c AL OR AL,WORDLENGTH ;caaae e OR AL,STOPBITS ; OR AL,PARITY ; OR AL,BAUDRATE ; MOV AH,0 ; aa opa MOV DX,0 ;pae COM1 INT 14H ;ape op H poe. Heaco o oo, aaec oo oo, a 4 pecpa pocxe 8250 o apoa oepa oea. o pecp ee copoc oea, pecp opo pecp papee pepa. ee copoc oea o co, a oopoe ao pae aco ccex aco (1190000 ep), o o eae copoc oea. Hapep, copoc oea 1200 o ee copoc oea oe pae 96, oco 1190000/96 peo pao 1200. e oe ee, e ee copoc oea. Copoc oea 300 ee pe xaoo ca ee. Cap a ocaec 3F9H ( 2F9H), a a 3F8H (2F8H). B oox cax 7 pecpa pae oe caoe 1 epe aco ae; poo cae o apeca ae apecoa pe pecp (c. [7.1.0]). Bo eoope ae, peee ox copoce oea: Copoc oea 3F9H 3F8H 110 04H 17H 300 01H 80H 600 00H C0H 1200 00H 60H 1800 00H 40H 2400 00H 30H 3600 00H 20H 4800 00H 18H 9600 00H 0CH Bcea caaae pecp copoc oea ep, a a o ecee, oope pe, o caoe 7 pecpe opo . oce oo ao e coepoe pecpa opo , cpaca 7- , o ce ocae oc pecpa pa. oco pecp opo ec pecpo oo ac, o e cocoa ep 7 opao 1 e oopeeo cao cex ocax o oo pecpa. - 4 - aee o pecpa opo , apec opa oopoo pae 3FBH ( 2FBH), ceee: 1-0 a coa. 00 = 5 o, 01 = 6 o 10 = 7 o, 11 = 8 o 2 co co-o. 0 = 1, 1 = 1.5, ec a , ae 2. 3 eoc. 1 = eeppec eoc, 0 = e. 4 T eoc. 0 = eea, 1 = ea 5 ca eoc. acae eoc cea 0 1. 0 = oeea 1 = cea 1, ec 3 = 1 & 4 = 0 1 = cea 0, ec 3 = 1 & 4 = 1 1 = e eoc, ec 3 = 0 6 caoa epepa. Bae o cpo e aece caa oaeo ca. 0 = apeeo, 1 = epep 7 Mee apeca opo px pecpo Oo 5-7 cpoe 0. Ocae oca ae, opeeee poooo oea. ae ec B e coee pepa, ce pao B o poec ac pecp papee pepa, o epe, o pepa apee. poco oece o pecp 0. Pecp ea pepa oo oppoa. aa ocax pecpo caa c oea. co, o oe oo c c ae cpoca, a e pae ea cpoca, a a oceoae pep. B ao pepe oac ax BIOS epec ao apec COM1, oce eo pae pecp apc copoc oea 1200 o, cex ax, eo eoc ooo co-a. ;---oae ao apec COM1 MOV AX,40H ;ES aae a oac ax BIOS MOV ES,AX ; MOV DX,ES:[0] ;oae ao apec COM1 ;---ape pecp ee copoc oea a 1200 o ADD DX,3 ;aae a pecp opo MOV AL,10000000B ;caaae 7 OUT DX,AL ;ocae a DEC DX ;aae a cap a ee DEC DX ;copoc oea MOV AL,0 ;cap a 1200 o OUT DX,AL ;ocae cap a 1200 o DEC DX ;aae a a a ee MOV AL,60H ;a a ee 1200 o OUT DX,AL ;ocae a a ;---ape pecp opo MOV AL,0 ;oe AL OR AL,10B ;a ax 7 o OR AL,000B ;1 co- OR AL,1000B ;eeppec eoc OR AL,10000B ;ea eoc ADD DX,3 ;aae a pecp opo OUT DX,AL ;ocae aaooe aee ;---ape pecp papee pepa DEC DX ;aae a pecp papee - 5 - DEC DX ;pepa MOV AL,0 ;apeae pepa OUT DX,AL ;ocae a 4. caoa eeo oaooo opa. ec a cocoa, oop popaa oe opee, ao oaox opo oe cooac. O cocoo coco aa oepa aaa oepaope popa. Bopo coco coco aca popa oea epe op COM1, o ee oaooo aaepa, oc oopo e epe COM1. Oac ax BIOS coep eco epex 2-xax epeex, oope coepa aoe apeca oaox aao (MS DOS oepae oo epe a x). ao apec opa o a p apeco opo, epe oope oo o oc ao oaoo aa. ao apec COM1 xpac ee 0040:0000, a COM2 - ee 0040:0002. ce oaox opo ao poco oe a ae. oopa cea ae pee epoaao aae opo. Cpe poe. Ec popaa opaaec oaoo op epe pepae 14H BIOS, o COM op opeeec coep DX, oopoe pao 0 1 ( COM1 COM2). Beco oo, o pcaa DX eocpeceoe aee, aoe eo epeeo, oopo oe pcoeo aee 0 1. popa, coe oaoe 3 4 pepa 21H cea apecc COM1. B o cae ao oe aoe apeca: ;---oe aox apeco COM1 COM2 MOV AX,40H ;ES aae a oac ax BIOS MOV ES,AX ; MOV DX,ES:[0] ;oeae 1- ao apec DX MOV AX,ES:[2] ;oeae 2- ao apec AX MOV ES:[0],AX ;oeae apeca MOV ES:[2],DX ; 5. Opeeee caca oaooo opa. Pecp caca pocxe UART 8250 opeee pooo c. o pecp ee apec opa a 5 oe, e ao apec aoo aaa. Oo o ocoo pocapaec poecce oaooo oea. p epeae ax pecp cooae, o pe co e oca, oo popae aca o co oepx eo. p pee ax pecp oppe popa o oce ceeo coa, c e o popaa oa poa eo pee e o e oe ce p. aee o oo pecpa ceee: 0 1 = a ax oe 1 1 = oee ae epeaca (pe co e ope ca) 2 1 = oa eoc (epoo, -a a ) 3 1 = oa ope (epeaa e cxpooaa) 4 1 = oape epep (oea a cpoa e, pa, o pa ca apaae oe epea) 5 1 = pecp xpae epeaa c ( o pecp - 6 - o oeac epeaaee ae) 6 1 = pecp ca epeaa c (o pecp oae ae pecpa xpae peopae x oceoae ) 7 1 = aa (cpoco e cao c ao) Cpe poe.

3 pepa 14H BIOS opaae AH pecp caca (AL oae pecp caca oea [7.1.5]). p xoe DX oe coepa oep oaooo opa, oopo ocecec oc, e COM1 = 0, a COM2 = 1. Ka pe pep, o poepe ae epepa: MOV AH,3 ;oep MOV DX,1 ;pae COM2 INT 14H ;oae a caca TEST AH,10000B ;oape epep? JNZ BREAK_DETECT ;ec a, o a poep opao H poe. oac ax BIOS caec ao apec oaooo aaa, e oaec 5, a ae oeoo apeca opa caec a caca. MOV AX,40H ;ES aae a oac ax BIOS MOV ES,AX ; MOV DX,ES:[2] ;oae ao apec COM2 ADD DX,5 ;oae 5 pecpa caca IN AL,DX ;oae a caca TEST AL,10000B ; 5 caoe? JNZ BREAK_DETECT ;ec a, o a opao epepa 6. aa paee oeo. eec 6 , o oop oe cac c oepo (coepecoae oe o e oaoe o epec RS232). Bo x aa, copae : O oepa oe: Data Terminal Ready (DTR) oppe oe, o oep oooc oepa e oo c. Request To Send (RTS) oppe oe, o oep apoc a oc oae oc ax. O oea oep: Data Set Ready (DSR) oppe oep, o oe oooc oea e oo. Clear To Send (CTS) oppe oep, o oe oooc oce oo aa epea ax. Data Carrier Detect (DCD) oppe oep, o oe Oape oce ax ca c p oeo. - 7 - Ring Indicator (RI) oppe oep, o eeaop oa oa , o oopo pcoee oe ee oo. Caaa oep caaae ca DTR, a ae cpe oe cac c aeo cae. oce oo, a oe cao c o caaae ca DSR. o ca oppe oep, o oe oo c o oe oep oe cao ca RTS. Koa oe oe cao CTS, o epeaa aaec. e caape , o oop oep pae oeo, oc epe pecp opo oea pocxe UART 8250. o pecp ee apec opa a 4 oe, e ao apec coeoo oaooo aaa. Bo aee eo o: Pecp opo oea: 7-5 (cea 0) 4 1 = xo UART a a xo 3 oao ooae aae a o #2 2 oao ooae aae a o #1 1 1 = 'apoc a oc' ae 0 1 = 'oooc oepa' aa Oo caoe 0 1 pecpa opo oea, a ocae pa 0. 2 pae 0, a cee cae, oa pooe oea peaa eo ceaoo cooa. 3 caoe oo cae, oa coc pepa [7.1.8]. Haoe, 4 peocae oooc ecpoa oaox popa e caoe peao c. Bxoo ca pocxe UART oaec a xo, a o UART pae oceoaee ae. o coco oo cooa ecpoa paoc pao cao pocxe. Oo eoco p cooa oaox poep pepa 14H BIOS. epe , o oop oe oca opa oep, pac pecpo caca oea. o pecp pacooe o apec opa a 6 oe, e ao apec coeoo oaooo aaepa. Bo aee eo o: Pecp caca oea: 7 1 = DCD 6 1 = RI 5 1 = DSR 4 1 = CTS 3 1 = eee DCD 2 1 = eee RI 1 1 = eee DSR 0 1 = eee CTS popaa epepo poepe xoe oaox oepa. Oe, o 4 ax a apae cap epe a. caaac 1 oo oa, oa pocxo eee cace cooeceo capeo a c ex op, oa pecp ac oce pa. Bce 4 ax a aoaec cpacac p e pecpa. popa oo po o po a o pecp. po oooc ec cooae 3 pepa 14H BIOS, oopa opaae pecp caca oea AL (p o AH e coepac pecp caca ). p xoe DX oe coepa oep oaooo aaa (0 1). - 8 - oco oeo ee aoo oe oooce, o cpae c e, o opae x cax c oeo pecpax. ec oooc aoaeco c aoaecoo oea, oope opopc pae cpoo. a cpoa ocaec oe, a o epeac oe ae. Moe ee cpo ax o ceao co, coeo oo aa aaa pae cpo. o co oe peopeee (aco coec o Esc - ASCII 27) pae ooaee. Moe cocoe opee acoo o oa aa cpoa, oo o ooa cpo o o paccapae xo oo opa a ae. Ka oe ee co aop oa. H poe. Bo a e caa cxea a e acceepa: ;---caaae ca DTR MOV DX,BASE_ADDRESS ;aae c aooo apeca ADD DX,4 ;aae a pecp opo oea MOV AL,1 ;caaae 1 OUT DX,AL ;ocae op ;---ocae pa cpo oe oa . (o o pa pax oeo) . ;---oae oa e caoe ca DSR INC DX ;aae a pecp caca oea INC DX ; TRY_AGAIN: IN AL,DX ;oae coepoe TEST AL,10B ;poepe opo JZ TRY_AGAIN ;e oa o e e pae 1 ;---caaae RTS DEC DX ;opaaec pecp pae DEC DX ; MOV AL,3 ;caaae ca RTS OUT DX,AL ;ocae op ;---oae caa CTS INC DX ;opaaec pecp caca INC DX ; ONCE_MORE: IN AL,DX ;oae a caca TEST AL,1 ;poepe CTS JZ ONCE_MORE ;e pooae oa o e caoe ;---eep oo oca ae 6. epeaa ax. epeaa ax poe e pe, oco popaa ee o opo a cocao ax copoc, c oopo o o ocac. Te e eee poep epea o ocaoo co, ec o opaaa ae o epe oo, a o ocac. Mo ae poe c cxpoae p cooa poooa XON/XOFF. o pooo coe o ASCII 17(XON) 19(XOFF), oo o capoa pae ca, o epea xoe poo epea peeo pepaoo ooa ax. o p ca, popaa oa epepo aapoa paee co p epeae ( ooeco pee, oopo oo paoa oe, ca oopeeo oe copo o eeoo aa). Kpoe oo, o oap, o aea - 9 - ca ocae cpo e, aece caa epepa, oe epepo aapoac cac a epepa (oep 4) pecpa caca . Cpe poe.

1 pepa 14H BIOS ocae co, coepac AL oao aa. p xoe DX coep oep opa (0 1). p opae AH coep a caca, oopo 7 = 1, ec oepa ecea. B o cae e aee cee : 4 oape epep (ca 'co' o pae ca) 5 pecp ca epeaa c 6 pecp xpae epeaa c MS DOS ee epea o oaoo aa coa, oeaeoo DL. o oep 4 pepa 21H, o oa e ee ax peec epe e BIOS; oa e opaae caco opa e ooe aaa ao oaox opo ao cooa (cea coec COM1). o ec cpo a coe 40H pepa 21H. o oa oa cex ao cpoc p cooa eoa oca ecpopa ao. COM1 ee peopeee oep #3. oece oep aa BX, a co epeaaex ao CX. c DS:DX aa a ep ox ax ae . MOV AH,40H ;oep MOV BX,3 ;peopeee oep aa COM1 MOV CX,50 ;o 50 ao LEA DX,DATA_BUFFER ;DS:DX aa a ep ax INT 21H ;ocae ae JC COM_ERROR ;xo a opao o H poe. Koa a ax oeaec pecp xpae epeaa, o o aoaec oc oceoae aa epe pecp ca epeaa, oop cepae ae. He eoxooc ce a cpoa, a o eaec cae apaeoo aaepa. 5 pecpa caca oaae cooe pecp xpae epeaa pea ax. Pecp ocoo poepec o ex op, oa 5 e cae pa 1. oce oo pecp xpae epeaa ocaec oepeo a oo eca, oa o epc. B poecce epea 5 pae 0 oo oa o o cae pa 1, o pecp xpae epeaa oe oca ce co. o poecc oopec o ex op, oa o o. B cee pepe a ocoe o o o poepe. Koeo, oa oe ceaa eoao coo ( acoc, popapoae c pee ocoo aex poep oape oo occaoe p cox). B pepe peoaaec, o oao op oe e apoa. ;---e oa ce e ooo oc coa KEEP_TRYING: MOV DX,BASE_ADDRESS ;ao apec ADD DX,5 ;aae a pecp caca IN AL,DX ;oae a caca TEST AL,00011110B ;poepe a o JNZ ERROR_ROUTINE ;ec ec, o a poep opao TEST AL,00000001B ;poepe oe ae - 10 - JNZ RECEIVE ;ec a, o a poep pea TEST AL,00100000B ;poepe oooc epeae JZ KEEP_TRYING ;ec e, o opaaec aa ;---epeae co pae c aap MOV AH,1 ; poep aa a INT 16H ;pepae aap BIOS JZ KEEP_TRYING ;opa, ec e o aa MOV AH,0 ; oe oa c aap INT 16H ;eep co AL SUB DX,5 ;apec pecpa xpae epeaa OUT DX,AL ;ocae co JMP SHORT KEEP_TRYING ;opaaec aa a 7. oee ax. Koaoa popaa ooa pa ae a oo apoa oao op caoea c c aeo cae. pe ax oa ooc e oee o epea ax, oco popae oe opeoac oca ca XOFF (ASCII 19), o ocao oo ax, ec o oca co cpo oa e ceae x opaaa. Ko XON (ASCII 17) cooae aeo ca, o oo poo epea. B acoc o cooc coeoo poooa oea, paee ae o peoa poco coo opao. Te x, oope c opae ax ae oapac p cxpoo oee. p oe oaex coo a pa ae e coo epeoa cpo (ASCII 10), oco eoope (a ec) aoaec ca epeo cpo oce opaa ape; o cae cae epeo cpo paex ax, o ea cx cpo p oe. Cpe poe.

2 pepa 14H BIOS oae co oceoaeoo opa, oeae eo AL p oe ae opaaec popa. p xoe ao oec oep opa (0-1) DX. p opae AX pae , ec e o o. Ec AH e pae 0, o oe opae a caca, oopo e aee oo 5 o. o cee : 1 oa epeoe (o co oc pae, e ae cap) 2 oa eoc (epoo, -a poe ) 3 oa oope (capo co- eep) 4 oape epep (oea a cpoa o 0) 5 oa aaa (e oe ca DSR) MS DOS ae peocae oao pea ooo coa, o 3 pepa 21H. oae co COM1 oeae eo AL. Oe, o p o e aa opa, oop ao ea epe poep BIOS eocpeceo, a oaao [7.1.2]. o oa op apec co ae 2400 o, e opo eoc, o co- 8 o a co. a e ee ax ococ o cpae c e BIOS e opaae opa o cace. H poe. p oe ax e cooa oaooo pe- - 11 - pa popaa oa ocoo poep pecp caca , apec opa oopoo a 5 oe aooo apeca coeoo oaooo aaepa. 0 oo pecpa e pae , o ex op oa e e oe co pecp ax pea. Koa 0 caoc pa 1, o ao eeeo ca eo pecpa, c e o a eo e aoc ce pae co. oce oo a co ca, 0 o caoc pa 0 ocaec ao, oa e pe o co. Xo ec o o e oopoc, o oaoe poep oo coa ec ep copa ocax coo. B o ae a, o ec ocae ae oaa a pa co copoc 1200 o, o poepa ca paa BIOS e e cea pooe epeoee. pocoe peee x poe coco cooa oaooo pepa. Ce pep aco pe coepoe peeo paea, ooceoc epeae coo. Ka o cae o aaec c ecoeoo a. KEEP_TRYING: MOV DX,BASE_ADDRESS ;ao apec ADD DX,5 ;aae a pecp caca IN AL,DX ;oae a caca TEST AL,00011110B ;poepe a o JNZ ERROR_ROUTINE ;ec a, o a opao o TEST AL,00000001B ;poepe oe ae JNZ RECEIVE ;a poep pea ax TEST AL,00100000B ;poepe oooc epeae JZ KEEP_TRYING ;ec e, o aa a . (ec pacooea poepa epea - c. [7.1.6]) . ;---oae ae o x a pa RECEIVE: MOV DX,BASE_ADDRESS ;ao apec IN AL,DX ;ae oe co CMP AL,19 ;poepa a XOFF JE XOFF_ROUTINE ; . ( ..) . MOV DL,AL ;oo co oa a pa MOV AH,2 ; oa coa INT 21H ;o eo JMP SHORT KEEP_TRYING ;opaaec a aao a 8. oca/oee ax c oo oaooo pepa. Xopoa oaoa popaa ee co oo pao, o oc ce eo o/o. ocae ae o aapoac, epeaaee ae o copac, a oe o ax o acac a c cac c eo. Koaooe pepae ooe popae e pa a o/o oe pee, e o oo pee. Hapep, oce cao pepa, paee epeaec poepe epea a oo o cae, oa pecp xpae epeaa c opaaec popae, a oo oca a ax, oo e pooa co pao o ex op, oa pecp xpae epeaa e e coa oo. IBM PC oo a aapax pepa oaox aao, oep 3 (COM1) 4 (COM2). Mpocxea UART 8250 ocae 4 - 12 - acca pepa aoo aaa, co cee oe ooe ca: 00 eee pecpe caca oea 01 pecp xpae epeaa c 10 oe ae 11 oa pea, oeo coe epepa o coepac ax 2-1 pecpa ea pepa, apec opa oopoo a 2 oe, e ao apec coeoo oaooo aaepa. 0 oo pecpa caaaec p ooe pepa, a ocae e coc cea pa 0. o pa oo oee pepa, ao apopapoa pecp papee pepa, apec oopoo a 1 oe aooo apeca. aee eo o aoe: 0 1 = pepae p oe ax 1 1 = pepae oa pecp xpae epeaa c 2 1 = pepae p oe pea ax 3 1 = pepae p ee pecpa caca oea 7-4 e coc, cea 0 Koa oo x co pocxo, o pec aapaoe pepae, oaee pocxee opao pepa 8259 o aa 3 COM1 o aa 4 COM2. poepa opao pepa epeae paee o o, a oop aae cooec eop pepa. oco o aapaoe pepae, o oo oe acpoao. oe, o poepa opao pepa oa aepac caap oo xoa aapaoo pepa MOV AL,20H/OUT 20H,AL. Ha pc. 7-3 oaao oaooe pepae. oe co o pepa oe papeeo oopeeo. Ho ec papee oee e o , o poepa opao pepa oa caa opee ao o pepa pooe, poep pecp ea pepa. Oopeeo o pocxo oee e oo pepae, oo 0 pecpa ea cooae o o, o oco ee oo pepae. Koa a oee pepa oco o o e oe pee, o o opaaac ope, aao epeeo ae. oaoe pepa o opaoa o aepe poep opao pepa. co peecx pepa 'oec' c oo ec, peex pao coe cee a: Ko T ec 'cpoca' 11 oa epep ee pecpa caca 10 oe ae ee pecpa pea ax 01 epea oo o coa pecp xpae epeaa 00 eee caca oea ee pecpa caca oea H poe. Bo oa opa popa, opaaae oaoe pepa: ;---caoa eopa oaooo pepa PUSH DS ;coxpae DS - 13 - MOV DX,OFFSET IO_INT ;DS:DX aa a poep MOV AX,SEG IO_INT ; MOV DS,AX ; MOV AL,0BH ;oep eopa COM1 MOV AH,25H ; ee eopa INT 21H ;ee eop pepa ;---aa pecpa papee pepa (COM1) MOV AX,40H ;DS aae a ae BIOS MOV DS,AX ; MOV DX,DS:[0] ;oae ao apec COM1 INC DX ;aae a pecp papee MOV AL,3 ;pepa papeae pepa OUT DX,AL ;pea epea POP DS ;occaaae pecp ;---poepa opao pepa - caaa opeee eo IO_INT PROC FAR NEXT_INT: MOV DX,BASEADDRESS ; a o a pec INC DX ; a ae a pe c p e a INC DX ; pep a IN AL,DX ; ae e o a e e TEST AL,10B ; o pep a e epe a a? JNZ TRANSMIT ;ec a, o a epe a RECEIVE: ; a e a p e . . JMP SHORT ANOTHER ; po ep e e p o o pep a TRANSMIT: ; ec o epe a . . ;--- epe xo o , po ep e e p o o pep a ANOTHER: MOV DX,BASEADDRESS ; a o a pec INC DX ; a ae a pe c p e a INC DX ; pep a IN AL,DX ; ae e o a e e TEST AL,1 ; po ep e 1 JNZ NEXT_INT ;ec o c a o e , o a a a o MOV AL,20H ; a e o a ep e a apa o o OUT 20H,AL ; pep a IRET IO_INT ENDP 14 1. Coae paepa cpoca. paep cpoca o ceaa popaa, oopa pae oeo c epep cpoco, a a pep co aoe. oco apaep x epepx cpoc ec o pooe pooe, o pa ooae popa oe opeoac a pax paepo, o o o paoa a eec eo oopoa. eec 4 cocoa e paepo cpoc popa: 1. Moo oec o cex paepo po popa. Hapep, o oepa pae pep, oo coa a pax oceoaeoce ca e o a pa oa o opeec. o oxo pa oo a oe ocaoo ee. 2. Coa p paepo cpoc opeoa, o popaa apaa eoxo aece oepe (.e. oea eo oac popa, ceao ocae o e. 3. Coa paep cpoca a oe popa, oopa aaec oao ae, oeo p ape cce. popaa acaec caaae paep cpoca a popa opao pepa. oce oo popaa aepaec, o ocaec peeo a. 4. Coa ooe paep cpoca, oop e apac p cape c oo aa CONFIG.SYS. MS DOS oepae ao paepo cpoc oa ape o oe cooa ce oooc oa DOS, a poep oo. Ceaa oaa IOCTL (Kopo oa/oa) ooe popae a cac paepa oca e pa cpo, oo ooo ooa ax. epe p cpae eo peac c oo opa, peeo ocax acx ao . Ho caaaee paep cpoc oe co. ao oa o ec, o o oe oe. B o cae ccea e paoa c cpoco acoo e eco, a c aapo co aoee. cpoc oe pcoeo , apep, SERIALPR oceoaeoo pepa, ae o cpoco oe opo oca o o a. B e c e o epa op OPEN 'SERIALPR' FOR OUTPUT AS #2 ooo oceoae pep oa. B e acceepa B coee o oc pep a c oo eoa paeo oa aa, a c oo eoa ecpopa aa, a oe o IOCTL. p o ooae ee oooc oca cpoc a poe oepaoo cce oe poco ec oa COPY A:MYFILE SERIALPR:, o copoa coepoe aa a pep. caaaee paep cpoc o aca oo a e acceepa. O o oca a a cpoc: coe oe. ea oca e, oop cpoco opaaae ae. Oo paep ox cpoc oca coe aoe, a paep cox - ce ocaoe, aa o oceoaex pepo oa pooa. oe cpoca oeac oa ax, oo o aac aoee ax. Coe cpoca oeac a oao, oo o e oxo pax cpoc, a ae cpoc, oope e o oece co copoc oea a. paep ox cpoc oe co ec e ocaoo eca, o oc x cpp. Oe peo o peec aca ao paep. Texecoe pooco o MS DOS peocae c eoxo opa coep o pep paepa paoo ca oepao - 2 - a. B oee pocope opa oce oo a e ocee paepo cox cpoc, peeoe ec. caaaee paep cpoc ecoa popacc oa. oco paep aoaec apac cceo p ape, o eooo cooa oa e p eoao. oo e peeo ae p x aca. popaa paepa cpoca paaec a p ac, aa oopx ocaec oeo cex paeax. o (1) aooo paepa, oop ee cpoco coep opa o ocax acx paepa, (2) cpae paepa, oopa xpa opa o oac ax, coaaeo MS DOS, oopa aae aooo apoca, (3) opao pepa cpoca, oop coep o, pa cpoco. 2. Coae aooa paepa. paep cpoc o coaac e COM ao. Oao o e c aco popaa, oco x occe pec popaoo ceea. o oc oo e ao a oepaop ORG 100H aae popa, a o eaec COM ao. o ae ORG 0, o ooe eo e e. paep oe oca a aea (far) poepa, a o popae. B epeeo pepe pee aa o paepa cpoca c ee DEVICE12. Oo aee caapoe cpoco AUX, coeoe MS DOS, pa o 4 pepa 21H. Bec paep cpoca coco oa oo paea ece c oo, peeo cex x paeax; oece x op o a p, o o o popa. paep cpoca oe aac c aooa paepa. O ee 18 ao, paeex a 5 oe. epoe oe (DD) cea coep aee -1 (FFFFFFFFH), oa MS DOS apae paep, o oo aeec a capo apec ceeo paepa. Ta opao, ccea oe ca ce paep o eoe. oceeo apeoo paepa o oe ocaec aee -1. Bopoe oe o a apo paepa. e aee oo 7 o oo coa: 15 1 = cooe cpoco, 0 = ooe cpoco 14 1 = oepae IOCTL, 0 = e oepae IOCTL 13 1 = opa oo IBM, 0 = po opa oo 3 1 = ac, 0 = e ac 2 1 = eoe cpoco, 0 = e eoe cpoco 1 1 = cpoco caapoo oa, 0 = e 0 1 = cpoco caapoo oa, 0 = e Oo caoe oo 15, 15 14, ec cpoco oepae IOCTL. 13 caaaec oo ox cpoc. Ocae coc ae cpoc, coex MS DOS o oa (cpoca caapoo oa oa c aapa eoce; cpoco aco oee ac peaoo pee c aca pee co BIOS; a eoe cpoco (NULL) - o ceocpoco, coeoe ecox ee). Tpee eepoe o coepa cee poep cpae opao pepa, oope paccope cex paeax. Haoe, oceee oe coep cpoca. oe coepa o 8 coo oo oo paeo o eo pa c aepa poea. ae cecx DOS cpoc, ax a LPT1 COM1, coe o e cpoca, a ao pepe. - 3 - H poe. B ao pepe coaec paep oceoaeoo cpoca. 'DEVICE12' - aa, oop oe aa ae opa cce, o o paep ape. B ae apo caoe oo 15, aa o o cooe cpoco o oo e oepae IOCTL. DEV_STRATEGY DEV_INTERRUPT - ea poep, ocaex cex paeax. cpoco aao AUX, c e o ae ooe cpoco MS DOS c ee. o ooe oe poco opaac o cpoc, oco ccea ee peopeee oep aa opae cpoc AUX (oceoaeo). B pep e aa o paepa, opee eo a COM popa. CSEG SEGMENT PUBLIC 'CODE' 'caaae oo cee ORG 0 'a cpoa eoaea ASSUME CS:CSEG,DS:CSEG,ES:CSEG DEVICE12 PROC FAR 'paep o aea poepa DD 0FFFFFFFFH 'apec ceeo paepa DW 8000H 'a apo DW DEV_STATEGY 'apec poep cpae DW DEV_INTERRUPT 'apec poep pepa DB 'AUX ' ' cpoco (ooeoe poea) 3. Coae cpae cpoca. poepa cpae cpoca pee oo cpo. Koa ccea apae cpoco, o oa coae o ax, aae aooo apoca. O ee e . Bo-epx o c oac ax pex oepa cce. oee ao o, o aooo apoca c oac, epe oop pocxo oe opae e paepo ae eo popao. Hapep, oa paep o ae, o e aec apec ax epe aooo apoca. Koa e paep aepae co pao, o o caaae aooe apoca a caca, oop oce ae popae, e ca aa oooc e a o oe. MS DOS coae aooo apoca p caoe paepa cpoca (oa ccea apaec). poepa cpae cpoca oec oo o pa o oe. p o ES:BX aa a o coa aooo apoca poepe o poco copoa x, o ocec o o oape p opae paep. Apeca cee ceea aooa oeac e epeee. B cee paee B e, o p opae paep, epoe o o eae - occaaae ae ES:BX, o oo o o opa aooa apoca. Paep aooa apoca oe ec, acoc o a ceaoo apoca paep (ap. aa, o ax opa caca). Oao epe 13 a aooa cea o e e. x opa ao: 1. a aooa apoca (DB). 2. Ko cpoca (DB). Opeee oep ox cpoc. 3. Ko oa (DB). ec xpac oep ocee ocao paep oa. o epece [7.2.3]. 4. Cac (DW). Cac caaaec a pa p oe paepa. Ec caoe 15, o ax oc ax axoc o o. Ko oo epece [7.2.3]. 5. Peepa oac (8 ao). coec MS DOS. - 4 - 6. ae eoxoe pao paepa (epeeo ). H poe. Bo 5 cpo poep cpae cpoca. Oeae, o e coe epeee, xpae ae ES BX, ce a cpe RET, a ooeo opae COM. DEV_STRATEGY: MOV CS:KEEP_ES,ES MOV CS:KEEP_BX,BX RET KEEP_CS DW ? KEEP_BX DW ? 7.2.3 Coae opaoa pepa cpoca. paep cpoca aaec c x op oa, peex pex paeax. a oa ceoa cooeca poepa opao pepa. Ha cao ee, o eepo, aa poep poepo opao pepa, a a oa oce e ocae pepae aepaec oo cpe RET. eec 13 o , oope oe o caaae paep cpoca. Koa paep aec e DOS (cae e 3FH pepa 21H, oopa ae ae aa cpoca), o oeae oo oep o 1 o 13 ooaoe oe o cee 2 aooe apoca ( oa - oo oep 5). ae paee epeaec poepe opao pepa paepa, aoec oopo opeeec p pocope aooa paepa [7.2.1]. a poepa ep oepe occaaae ES:BX, c e o o aa a aooo apoca, a ae ae oo oep oa. o o o poepa opao pepa ae poep, oopa o pee . poepa ec c oo 13-coo a, coepae cee 13 o .

cea epecc cee ope: 1. INITIALIZE (aa) 2. CHECK_MEDIA (poepa oce) 3. MAKE_BPB 4. IOCTL_IN 5. INPUT_DATA (o ax) 6. NONDESTRUCT_IN 7. INPUT_STATUS (cac oa) 8. CLEAR_INPUT (oca oa) 9. OUTPUT_DATA (o ax) 10. OUTPUT_VERIFY (poepa oa) 11. OUTPUT_STATUS (cac oa) 12. CLEAR_OUTPUT (oca oa) 13. IOCTL_OUT oce aepe poep, poepa opao pepa aepaec cpe RET paee opaaec a popa. paep cpoca oe a o opao oo eoopx , acoc o cpoca peeo cee opo oo pae cpoco. Hoepa , oopx e aca poep, o aepac xoo paepa e oe eo-o. B o cae ao oo epe xoo cao 15, 8, 1 0 aooe apoca, o oppoa a aa, o a apeoaa ececa ( 15 pe o, 8 oaae, o paep paoae opao, - 5 - a 0 1 a o o 3, o cooece 'eeco oae'). Ho oa oa pccoa o cex paepax cpoc, o oep 1 - aa. a aoaec oec p ape paepa, a ae e. Oa ax aa, oea o poepo, coco caoe apeca oa paepa epex aax, aaxc co cee 14 aooe apoca. B epeeo pepe oe popa oee eo eop:. Kpoe o aa, poepa aa oa ae o c eoxo aoo cpoca aa. Kae ocaxc 12- e paep cpoca ac o oo, o paep oe ea. Heoope, ae a CHECK_MEDIA MAKE_BPB, oocc oo o cpoca (o caaa ca, paep ceopo ..). cox cpoc aoee a c e : INPUT_DATA OUTPUT_DATA (oe, o ea ecece - aa o ae , oopa eea). B oox cax aooo apoca ee ce cpp: 13 ao caap opa aooa apoca 1 a a oca cpe (oo ox cpoc) 4 aa ceee/cee epa oea ax 2 aa co ao, oopoe ao epea 2 aa capo oep ceopa (oo ox) B epeeo pepe coec oa. poepa, oa o oae aooa apoca apec epa, oopo axoc oe ae (ceee 14). Oa ae cae co ao, oopoe ao ec (ceee 18). Koa poepa aep o ax, o oa cao coo caca aooe apoca (ceee 3) opa paee. Ec oepa cea, o ao cao 8 coa caca. pe oooc oce oee. H poe. B ao pepe peea oa opa poep opao pepa, e a peaoo oa, paeo cpoco. ;---aa opaoa pepa cpoca DEV_INTERRUPT: PUSH ES ;coxpae pecp PUSH DS PUSH AX PUSH BX PUSH CX PUSH DX PUSH SI PUSH DI PUSH BP MOV AX,CS:KEEP_ES ;ES:BX aa a aooo apoca MOV ES,AX ; MOV BX,CS:KEEP_BX ; MOV AL,ES:[BX]+2 ;oae o oa aooa SHL AL,1 ;oae a 2 (.. aa coa) SUB AH,AH ;oe AH LEA DI,FUNCTIONS ;DI aae a ceee o a ADD DI,AX ;oae ceee ae JMP WORD PTR [DI] ;epexo a apec a - 6 - FUNCTIONS LABEL WORD ;o aa DW INITIALIZE DW CHECK_MEDIA DW MAKE_BPB DW IOCTL_IN DW INPUT_DATA DW NONDESTRUCT_IN DW INPUT_STATUS DW CLEAR_INPUT DW OUTPUT_DATA DW OUTPUT_VERIFY DW OUTPUT_STATUS DW CLEAR_OUTPUT DW IOCTL_OUT ;---xo paepa, ec e oepaec CHECK_MEDIA: MAKE_BPB: IOCTL_IN: INPUT_DATA: NONDESTRUCT_IN: INPUT_STATUS: CLEAR_INPUT: OUTPUT_VERIFY: OUTPUT_STATUS: CLEAR_OUTPUT: IOCTL_OUT: OR ES:WORD PTR [BX]+3,8103H ;ope cac JMP QUIT ;---poep x oepaex oo INITIALIZE: LEA AX,E_O_P ;ceee oa popa AX MOV ES:WORD PTR [BX]+14,AX ;oeae eo aooo MOV ES:WORD PTR [BX]+16,CS ; . (ec e aa cpoca) . JMP QUIT OUTPUT_DATA: MOV CL,ES:[BX]+18 ;oae co coo CBW CX ;CX coe a ce MOV AX,ES:[BX]+16 ;oae apec epa ax MOV DS,AX ; MOV DX,ES:[BX]+14 ; . (ec oepa o o) . JMP QUIT ;---xo, op a caca aooe apoca QUIT: OR ES:WORD PTR [BX]+3,100H ;caaae 8 POP BP ;occaaae pecp POP DI ; POP SI ; POP DX ; POP CX ; POP BX ; POP AX ; - 7 - POP DS ; POP ES ; RET E_O_P: ;ea oa popa DEVICE12 ENDP CSEG ENDS END DEVICE12 epe opao paep caaae coo caca aooe apoca. B ao pepe o eaec x ecax, acoc o oo aac oeceaea paepo e. cpo a: OR ES:WORD PTR [BX]+3,XXXXH. aee o XXXX ceee: 0-7 o o (ec 15 = 1) 8 caaaec 1, oa aepea 9 caaaec 1, oa paep a 10-14 apeeppoa MS DOS 15 caaaec p ooe o Ma a oo coa coep cee o oo, ec caoe 15, p o: 0 oa ac a aeoe o ac cpoco 1 eecoe cpoco 2 cpoco e ooo 3 eeca oaa 4 oa poep o opoo ce 5 eepa a apoca cpoc 6 oa oca 7 eec oce 8 ceop e ae 9 e a pepe A oa ac B oa e C oa oa 4 oc paep cpoca. paep cpoca caaaec e e e ooo popa a opa cce. cao poo popa oece a CONFIG.SYS cpo DEVICE = DEVICE12.COM. ae epeape cce cao paepa. Ec aa e e apac, o copee ceo eec oa oe aa paepa. oce oo a paep caoe, oca e oec o MS DOS pepa 21H. Kae oo cooa ac o oo, aee cpoco caapoe cpoco DOS (a peeo pepe) oo oaec a coepeo ooe cpoco. ae caapoo oceoaeoo cpoca, aoe paep AUX, oce eo 3 pepa 21H ocec cooeceo o o. Ec cpoco apaeoe, o aoe eo PRN, oce eo 5 e o ae a pep. po oooc ec cooae 3FH oa oa. B o cae coe oep aa 3 - oceoaeoo cpoca 4 - apaeoo. Haoae, o p cooa peopeeex oepo aa e eoxooc opa cpoco. Ec cpoco e aee oo caapx cpoc MS DOS - 8 - (.e. ec oo e aao o peepx co, a a PRN, AUX ..), o B oee op cpoco c oo oo op aa. B oee cooa a eo oca c oo paeo oa aa, a eo ecpopa aa, xo oce peoeee. o epe, o B o oe e opoee co a, oece oep aa BX, 0 - AL, oce eo oe 44H pepa 21H. o IOCTL ec 7 ae, opaaeoo DL caoe, o paep cpoca ape. IOCTL pee, o ae apo paepa a cooeca caoa o o o pae epe oco poep opao IOCTL ec poepe opaoa pepa paepa. IOCTL ee 8 o, poepoax o 0 o 7, p o cooec oo oep oeaec AL p oe : 0 Bopa opa o cpoce DX 1 cao opa o cpoce, co DL (DH=0) 2 Ca CX ao o paepa cpoca epe pa aa oec x aa c DS:DX 3 aca CX ao paep cpoca epe pa aa, x aa c DS:DX 4 To e, o 2, o cooa oep aoe BL, e 0 = aoe o oa, 1 = A .. 5 To e, o 3, o cooa oep aoe a 5 6 o cac oa 7 o cac oa B oe opaaec paa opa, acoc o oo, aa aa. o 0 1 aee o pecpa DX ceee (p co, o 7 = 1, o oaae, o oc oe cpoc, a e a): 0 1 = cpoco ocooo oa 1 1 = cpoco ocooo oa 2 1 = eoe cpoco 3 1 = cpoco ac 4 peep 5 1 = e poep a Ctrl-Z, 0 = ec poepa a Ctrl-Z 6 1 = e oe aa, 0 = oe aa 7 1 = cpoco, 0 = co a 8-13 peep 14 1 = ec oo cooa o 2 3, 0 = e 15 peep o 2-5 oo popae cpoc oeac poo pa cpoa. o ooe epeaa pae cooe oeo o ocooo ooa ax, o ceceo poae eo. p opae AX e coepa co epeax ao. o 6-7 oo popae poep, ooo cpoco oa oa. cpoc AL opaaec FF, ec cpoco ooo 0, ec e. p cooa c op ao ( 7 = 0) AL opaaec FF o ex op, oa e e oc oe aa. 5 Oapee aa oo cpoca. cpoca o oac o oo pex p. cpoco oe ec opeeo axoc e o coco. Moe ox popaoe oeceee, paee cpoco. , aoe, popaa oe oca cpoc eoc apoc (apep, - 9 - oa ca a aoe, e axoc cea aea o ac). MS DOS oapae aape oco ax oo oeceae oooc occaoe. H poe. oa paep cpoc coepa ae cepee o, o popaa poco e oe pooac, oa o e cpae. Koa ae o pocxo, o ccea ae opao pecx oo. O oe ca ece a caapx cpoc, a caoex paepo. ooae aoee aco caaec c , oa aec poec co oepa c cooo, oopoo opa epa. B o cae oec cooee: 'Not ready error reading drive A - Abort, Retry, Ignore?' Opao pecx oo oe epeca, o o e opaaa cpoca, oopx B coa caaaee paep. Beop pepa 24H aae a caap poep MS DOS, o B oee epeapa eop a co poep. p oe o poep cap AH coep 0 ec oa pooa a oo cpoce 1, ec a coo. BP:SI aa a aooo paepa ooo cpoca, oop oe a ooe opa. Boce ao, aa co cee AH aooe coepa cpoca, a opao pex oo oeae o o o coo DI. Bo ooe oepa (o e peca ox o): Ko poea 0 oa ca a c, ae o ac 1 eecoe cpoco 2 aoe e oo 3 eeca oaa 4 oa oea a 5 eepa a apoca 6 oa oca 7 eec oce 8 ceop e ae 9 e a pepe A oa p ac B oa p e C oa oa B cae coo o AL coep oep aoe, a oopo pooa oa (0 = A, 1 = B ..), a 2-0 AH p o. 0 caaaec, ec oa pooa o pe oepa ac, cpacaec - ec p e. 2-1 coepa opa o o, ao ece ca pooa oa, aa 00 - aax ceopo DOS, 01 - FAT, 10 - aaoa 11 - ceo ocaoo ca. eec p cocoa, oop popaa oe occaoc oce peco o: 1. Moo opoc ooae cpa p o (apep, ap ep aoe), oce eo ccea peoca cpoc oooc oop oepa. 2. paee oe opaeo cp, cee a INT 21H, oopa ceaa o opac paep. 3. popaa oe aepc ep paee ccee. - 10 - Baa poepa opao oo oe occao ca, a cp IRET, oce oo, a oa oeca 0 AL, o oppoa o, 1 - o oop oepa 2 - o aep popa. Ec B xoe, o Baa poepa poea occaoee caa, o oa oa occao pecp oeo popa cea, a ae a co cea ce, poe ocex pex co. oce oo cp IRET opa paee popae, xo caa ccea ocaec ecao coco o ex op, oa oa e ceae o c oepo o, e 12. Bo opa cea (aa cepx o a) oa aec opao pecx oo: Apec opaa opaoa oo: IP, CS, a ooaece pecp aa, AX, BX, CX, DX, SI, DI, BP, oopo a paep: DS, ES, IP, CS, a MS DOS opaaae ae oe epece o. Ca ac o oo, oope o opaac pecpax, oa aac DOS. o ocac ao e ex ecax, oopx ocac cooece . Oao ee , o aa c epc 3.0 MS DOS opaae pacpee o oo , cox FCB ecpop ao. Koa p oe oo x caaaec a epeoca, o AX opaaec o o o. ooe pacpe o oce epe pepae 59H, ec BX oec 0. a cooae ae o pecx oax oa oe cooaa opaoa pecx oo, aeoo epe pepae 24H. oeae AX o o, ooo cca aox oo oo (apep, 'eocaoo a') o ox oo (apep, 'opaee oca' ooooaeco cce). BH opaae o acca o, aa aoo a oa pooa. Hapep, o 1 aae, o cepa pecpc, .e. o a, aoe epa o-o ee pacxooao. pe acc o aa a popae o, poe c oce, opapoae .. BL coep o, peoaa ece occaoe, aoe a 'oop', 'pepa' 'apoc ooae'. Haoe, CH opaae co, opeeee eco e o poe: a oo cpoce, a coo, a? ae x oo oo eca op. o opa o x c. Texeco pooce o MS DOS 3.0. oco peoaaec, o MS DOS 3.0 e e cooac a aax, oee pax, e AT, o cooae x oo opaae coecoc Bax popa. Te e eee, aop poep, peaae oo MS DOS 3.0 oe ooc oepx ox poep opao oo. Haoe, ee , o poecc oe epeaa o aepe ae eo poecc. Tep poecc oocc aoec popaa. Hapep, oa oa popaa apae acae p c oo EXEC, o acaea popaa aaec ooo, a acaa popaa - poee. Poe oe opeoac opa o o, a aepc ooo. o cooa oooc, oece eae o aepe AL oe 4CH pepa 21H aepe popa. Koa paee e opaeo poe, o o o 4DH pepa 21H (e xox pecpo) AL e oe o aepe, oop oe ae poaapoa. Kpoe oo, AH e coepa opa o o, a aepc ooo: 0 - opaoo aepe, 1 - o Ctrl-Break, 2 - o peco oe cpoca 3 - c oo 31H, ocae aa peeo. - 11 - Ec popaa aepac c oo o (a e 20H ), o MS DOS oae o xoa o oe e opao oa ao c oo ooa IF. a ooaa ooe cooe cee px oa oaoo aa. Ko xoa paccapaec a oep ERRORLEVEL coe oepa oc acoc o oo, oe o e opeeeoo ca. C oo o oooc oae a o pepaa opao o cooee o ooe o oo aex popa. oee opoa opa peea paee 'Koa aeo opao' pooca o oepaoo ccee. 6. cooae ceax cpoc oa/oa. eec opooe oeco cpoc oa/oa, oope o pcoee IBM PC, a , oc, paoocpoe .. B ao paee ocac oo e cpoca, oope ceao oepac oopoae IBM PC. Ca oocc accee aoo, ceooe epo pe cpoca, oope o pcoee epe poo op. Apeca opo, oocec p cpoca, ocac px paeax o , oocxc eo a cpoca. Pacpeeee apeco opo ocoo oo o e cex o IBM PC: Apec opa 00- 0F pocxea DMA 8237 20- 2F pocxea pepa 8259 (AT opoep #1: 20- 3F ) 40- 4F pocxea aepa 8253/8254 60- 6F pocxea PPI 8255 (AT coe oo apeca aap 70- 7F ac peaoo pee (oo AT) A0-BF pocxea pepa #2 (oo AT) F0-FF PCjr - opoep HM, AT - paee aeaec copoeccopo 1F0-1F8 cpoa c AT 200- 20F poo aaep 278- 27F AT oao op #2 2F8-2FF oao op COM2 ( 320- 32F cpoa c XT 378- 37F aaep apaeoo pepa PC, XT, AT 3B0-3BF ooxpo/apae aaep 3D0-3DF eo paec aaep 3F0-3F7 opoep HM ;**************************************************** ;* PROLOG * ;* THIS IS AN INSTALLABLE DEVICE DRIVER FOR AN * ;* IN STORAgE DISKETTE (VIRTUAL) WITH 180K CAPACITY * ;**************************************************** CSEG SEGMENT PARA PUBLIC 'CODE' ; ; M A C R O ( S ) ; STATUS MACRO STATE,ERR,RC IFIDN , OR ES:WORD PtR SRH_STA_FLD[BX],0100H ENDIF IFIDN , OR ES:WORD PTR SRH_STA_FLD[BX],0200H - 12 - ENDIF IFIDN , OR ES:WORD PTR SRH_STA_FLD[BX],1000H INDIF IFNB OR ES:WORD PTR SRH_STA_FLD[BX],RC ENDIF ENDM ; ; E Q U A T E S ; ; READ/WRITE ; SRH EQU 0 ;STATIC REQUEST HEADER START SRH_LEN EQU 13 ; ' ' ' length Srh_LEN_FLD EQU SRH ; ' ' ' ' FIELD SRH_UCD_FLD EQU SRH+1 ; ' ' ' unit code field srh_CCD_FLD EQU SRH+2 ; ' ' ' command code field srh_STA_FLD EQU SRH+3 ; ' ' ' STATUS FIELD SRH_RES_FLD EQU SRH+5 ; ' ' ' reserved area field ; MD EQU SRH+SRH_LEN ;MEDIA DESCRIPTOR BYTE MD_LEN EQU 1 ; ' ' ' lenGth dta equ md+MD_LEN ;DISK TRANSFER ADDRESS DTA_LEN EQU 4 ; DTA LENGTH COUNT EQU DTA+DTA_LEN ;BYTE/SECTOR COUNT COUNT_LEN EQU 2 ; ' ' LENGTH SSN EQU COUNT+COUNT_LEN;STARTIND SECTOR nuMBER SSN_LEN EQU 2 ; ' ' ' length ; ; MEDIA CHECK ; RET_BYTE EQU MD+MD_LEN ;BYTE RETURNED FROM DRIVER ; ; BUILD BPB ; BPBA_PTR EQU DTA+DTA_LEN ;POINTER TO BPB BPBA_PTR_LEN EQU 4 ; ' ' ' LENGTH ; ; INIT ; UNITS EQU SRH+SRH_LEN UNITS_LEN EQU 1 BR_ADDR_0 EQU UNITS+UNITS_LEN BR_ADDR_1 EQU BR_ADDR_0+2 BR_ADDR_LEN EQU 4 BPB_PTR_OFF EQU BR_ADDR_0+BR_ADDR_LEN BPB_PTR_SEG EQU BPB_PTR_OFF+2 ; ; VDSK PROC FAR ASSUME CS:CSEG,ES:CSEG,DS:CSEG BEGIN: START EQU $ ; S P E C I A L D E V I C E H E A D E R NEXT_DEV DD -1 ;POINTER TO NEXT DEVICE ATTRIBUTE DW 2000H ;BLOCK DEVICE (non-ibm fORmat) STRATEGY DW DEV_STRATEGY ;POINTER TO DEVICE STRATEGY - 13 - INTERRUPT DW DEV_INT ;POINTER TO DEVICE INTERRUPT HANDLER DEV_NAME DB 1 ;NUMBER OF BLOCK DEVICES DB 7 DUP(?) ;7 BYTES OF FILLER RH_OFF DW ? ;REQUEST HEADER OFFSET RH_SEG DW ? ;REQUEST HEADER SEGMENT ; BIOS PARAMETER BLOCK BPB EQU $ DW 512 ;SECTOR SIZE DB 1 ;SECTORS/ALLOCATION UNIT DW 1 ;NUMBER OF RESERVED SECTORS DB 2 ;NUMBER OF FATS DW 64 ;NUMBER OF DERECTORY ENTRIES DW 360 ;TOTAL NUMBER OF SECTORS DB 0FCH ;MEDIA DESCRIPTOR DW 2 ;NUMBER OF SECTORS OCCUPIED BY FAT ; BPB_PTR DW BPB ;BIOS PARAMETER BLOCK POINTER ARRAY (1 ENTRY) ; CURRENT VIRTUAL DISK INFORMATION TOTAL DW ? ;TOTAL SEKTORS TO TRANSFER VERIFY DB 0 ;VERIFY 1=YES, 0=NO START_SEC DW 0 ;STARTING SECTOR NUMBER VDISK_PTR DW 0 ;STARTING SEGMENT OF VIRTRUAL DISK USER_DTA DD ? ;POINTER TO CALLERS DISK TRANSFER ADDRESS BOOT_REC EQU $ ;DUMMY DOS BOOT RECORD DB 3 DUP(0) ;3 BYTE JuMP TO BOOT CODE (NOT BOOTABLE) db 'IBM 2.0' ;VENDOR IDENTIFICATION DW 512 ;NUMBER OF BYTES IN A SECTOR DB 1 ;1 SECTOR PER ALLOCATION UNIT DW 1 ;1 RESERVED SECTOR DB 2 ;2 FATS DW 64 ;NUMBER OF DIRECTORY ENTRIES DW 360 ;360 TOTAL SECTORS IN IMAGE DB 0FCH ;TELLS DOS THIS IS A SINGLE SIDED 9 SECTOR DISK DW 2 ;NUMBER OF SECTORS IN FAT ; ; FUNCTION TABLE ; FUNTAB LABEL BYTE DW INIT ;INITIALIZATION DW MEDIA_CHECK ;MEDIA CHECK (BLOCK ONLY) DW BUILD_BPB ;BUILD BPB ' ' DW IOCTL_IN ;IOCTL INPUT DW INPUT ;INPUT (READ) DW ND_INPUT ;NON_DESTRUCTIVE INPUT NO WAIT (CHER ONLY) DW IN_STAT ;INPUT STATUS ' ' DW IN_FLUSH ;INPUT FLUSH ' ' dw output ;OUTPUT (WRITE) DW OUT_VERIFY ;OUTPUT (WRITE)WITH VERIFY ' ' DW OUT_STAT ;OUTPUT STATUS ' ' DW OUT_FLUSH ;OUTPUT FLUSH DW IOCTL_OUT ;IOCTL OUTPUT ; - 14 - ; L O C A L P R O C E D U R E S ; IN_SAVE PROC NEAR MOV AX,ES:WORD PTR DTA[BX] ;SAVE CALLERS DTA MOV CS:USER_DTA,AX MOV AX,ES:WORD PTR DTA+2[BX] MOV CS:USER_DTA+2,AX MOV AX,ES:WORD PTR COUNT[BX] ;SET NUMBER OF SECTORS TO READ XOR AH,AH MOV CS:TOTAL,AX ;MOVE NUMBER OF SECTORS TO TOTAL RET IN_SAVE ENDP ; CALC_ADDR PROC NEAR MOV AX,CS:START_SEC ;GET STARTING SECTOR NUMBER MOV CX,20H ;MOV 512 TO CX SEGMENT STYLE MUL CX ;MULTIPLY TO GET ACTUAL SECTOR MOV DX,CS:VDISK_PTR ;GET SEGMENT OF VIRTUAL DISK ADD DX,AX ;ADD THET SEGMENT TO INITIAL SEGMENT MOV DS,DX ;SAVE THAT AS TNE ACTUAL SEGMENT XOR SI,SI ;IT,S ON A PARAGRAPH BOUNDERY MOV AX,CS:TOTAL ;TOTAL NUMBER OF SECTORS TO READ MOV CX,512 ;BYTES PER SECTOR MUL CX ;MULTIPLY TO GET COPY LENGTH OR AX,AX ;CHECK FOR GREATER THEN 64K JNZ MOVE_IT MOV AX,0FFFFH ;MOVE IN FOR 64K MOVE_IT: XCHG CX,AX ;MOVE LENGTH TO CX RET CALC_ADDR ENDP ; SECTOR_READ PROC NEAR CALL CALC_ADDR ;CALCULATE THE STARTING 'SECTOR' MOV ES,CS:USER_DTA+2 ;SET DESTINATION TO POINT MOV DI,CS:USER_DTA ;TO CALLERS DTA ; ; CHECK FOR DTA WRAP IN CASE WE CEME THROUGH UIA VERIFY ; MOV AX,DI ;GET OFFSET OF DTA ADD AX,CX ;ADD COPY LENGTH TO IT JNC READ_COPY ;CARRY FLAG = 0, NO WRAP MOV AX,0FFFFH ;MAX LENGTH SUB AX,DI ;SUBTRACT DTA OFFSET FROM MAX MOV CX,AX ;USE THET AS COPY LENGTH TO AVDID WRAP READ_COPY: REP MOVSB ;DO THE 'READ' RET SECTOR_READ ENDP ; SECTOR_WRITE PROC NEAR CALL CALC_ADDR ;CALCULATE STARTING 'SECTOR' PUSH DS POP ES ;ESATABLISH ADDRESSABILITY MOV DI,SI ; ES:DI POINT TO 'DISK' MOV DS,CS:USER_DTA+2 ; DS:SI POINT TO CALLERS DTA MOV SI,CS:USER_DTA ; ; CHECK FOR DTA WRAP - 15 - ; MOV AX,SI ;MOVE DTA OFFSET TO AX ADD AX,CX ;ADD COPY LENGTH TO OFFSET JNC WRITE_COPY ;CARRY FLAG = 0, NO SEGMENT WRAP MOV AX,0FFFFH ;MOVE IN MAX COPY LENGTH SUB AX,SI ;SUBTRACT DTA OFFSET FROM MAX MOV CX,AX ;USE AS NEW COPY LENGTH TO AVOID WRAP WRITE_COPY: REP MOVSB ;DO THE 'WRITE' RET SECTOR_WRITE ENDP PAGE ; ; D E V I C E S T R A T E G Y ; DEV_STRATEGY: MOV CS:RH_SEG,ES ;SAVE SEGMENT OF REQUEST HEADER POINTER MOV CS:RH_OFF,BX ;SAVE OFFSET OF ' ' ' RET ; ; D E V I C E I N T E R R U P T H A N D L E R ; DEV_INT: ; PRESERVE MACHINE STATE ENTRY CLD PUSH DS PUSH ES PUSH AX PUSH BX PUSH CX PUSH DX PUSH DI PUSH SI ; ; DO THE BRANCH ACCORDING TO THE FUNCTION PASSED ; MOV AL,ES:[BX]+2 ;GET FUNCTION BYTE ROL AL,1 ;GET OFFSET INTO TABLE LEA DI,FUNTAB ;GET ADDRESS OF FUNCTION TABLE XOR AH,AH ADD DI,AX JMP WORD PTR[DI] ; ; INIT ; INIT: PUSH CS POP DX ;CURRENT CS TO DX LEA AX,CS:VDISK ;GET ADDRESS OF VIRTUAL DISK MOV CL,4 ROR AX,CL ;DIVIDE BY 16 (PARAGRAPH FORM) ADD DX,AX ;ADD TO CURRENT CS VALUE MOV CS:VDISK_PTR,DX ;SAVE AS STARTING SEGMENT OF VIRTUAL DISK MOV AX,2D00H ; ADD 2D00H PARAGRAPHS TO STARTING ADD DX,AX ; SEGMENT OF VIRTUAL DISK MOV ES:WORD PTR BR_ADDR_0[BX],0 MOV ES:BR_ADDR_1[BX],DX ;MAKE THET THE BREAK ADDRESS - 16 - MOV ES:BYTE PTR UNITS[BX],1 ;NUMBER OF DISKETTE UNITS LEA DX,BPB_PTR ;GET ADDRESS OF BPB POINTER ARRAY MOV ES:BPB_PTR_OFF[BX],DX ;SAVE OFFSET IN DATA PACKET MOV ES:BPB_PTR_SEG[bx],cs ;SAVE SEGMENT IN DATA PACKET MOV ES,CS:VDISK_PTR ;GET STARTING SECTOR OF VIRTUAL DISK XOR DI,DI ;ZERO OUT DI (BOOT RECORD) LEA SI,BOOT_REC ;ADDRESS OF BOOT RECORD MOV CX,24 ; REP MOVSB ;COPY 24 BYTES OF BOOT RECORD MOV CS:WORD PTR START_SEC,1 MOV CS:WORD PTR TOTAL,2 CALL CALC_ADDR ;CALCULATE ADDRESS OF LOGICAL SECTOR 1 PUSH DS POP ES MOV DI,SI ;MOVE THET ADDRESS TO ES DI XOR AL,AL REP STOSB ;ZERO OUT FAT AREA MOV DS:BYTE PTR [SI],0FCH ;SET THE FIRST FAT ENTRY MOV DS:BYTE PTR 1[SI],0FFH MOV DS:BYTE PTR 2[SI],0FFH PUSH DS ;SAVE POINTER TO FAT PUSH SI ;ON THE STACK MOV CS:WORD PTR START_SEC,3 MOV CS:WORD PTR TOTAL,2 CALL CALC_ADDR ;CALCULATE ADDRESS OF LOGICAL SECTOR 3 PUSH DS POP ES MOV DI,SI ;MOVE THET ADDRESS TO ES:DI POP SI POP DS ;RESTORE ADDRESS TO FIRST FAT REP MOVSB ;COPY FIRST FAT TO SECOND FAT MOV CS:WORD PTR START_SEC,5 MOV CS:WORD PTR TOTAL,4 CALL CALC_ADDR ;CALCULATE ADDR OF L.5. 5 (START OF DIR) XOR AL,AL PUSH DS POP ES ;SET UP ES.DI TO POINT TO IT XOR DI,DI REP STOSB ;ZERO OUT DIRECTORY MOV ES,CS:RH_SEG ;RESTORE ES:BX TO REQUEST HEADER MOV BX,CS:RH_OFF ; STATUS DONE,NOERROR,0 ;SET STATUS WORD (DONE, NOERROR) JMP EXIT ; ; MEDIA CHECK ; MEDIA_CHECK: ;MEDIA CHECK (BLOCK ONLY) ; ; SET MEDIA NOT CHENGED ; MOV ES:BYTE PTR RET_BYTE[BX],1 ;STORE IN RETURN BYTE ; STATUS DONE,NOERROR,0 ;TURN ON THE DONE BIT JMP EXIT ; ; BUILD BIOS PARAMETER BLOCK ; BUILD_BPB: - 17 - PUSH ES ;SAVE SRH SEGMENT PUSH BX ;SAVE SRH OFFSET MOV CS:WORD PTR START_SEC,0 MOV CS:WORD PTR TOTAL,1 CALL CALC_ADDR ;CALCULATE ADDRESS OF FIRST SECTOR PUSH CS POP ES LEA DI,BPB ;ADDRESS OF BIOS PARAMETER BLOCK ADD SI,11 ;ADD 11 TO SI MOV CX,13 ;LENGTH OF BPB REP MOVSB POP BX ;RESTORE OFFSET 15 Bo a epa. 1. paee oo a epa. Bce eocce co epa, oope oopaac ae opae a pae. pa epoec ooec capoae x ax. Paep pacooee x epo eec c cceo, peo paa, a ae oeco apaee oeeo a. Koa epe xpac ecoo opao paa, o a oe opa aa ceo cpae. He peea opoa coa: Mooxpo aaop Mooxpo aaop ee 4K a a a ae, aa c apeca B0000H (.e. B000:0000). o a xaae oo xpae oo 80-coo cpa eca. eo paec aaop. eo paec aaop ee 16K a a a ae, aa c apeca a B8000H. oo ocaoo oopae ooo paecoo paa, e cpa, o epex o oc pao eca, acoc o ca coo cpoe - 40 80. EGA EGA oe cae 64K, 128K 256K a. Kpoe cooa aece eoepa a a oe ae xpa oe oca o o 1024 coo. Capo apec epa ce popape, oo ep aaec c apeca A000H ex paecx peo, c B000H B800H coecoc co caap ooxpo e paec pea. B oce cae EGA aae a ceea c apeca o A000H o BFFFH, ae oa eec 256K a. o ooo, oco eoopx peax a oee ao a ce cac ox ex e apeco. ocoe co cpa ac a o pea paa, a o oeca eec a. Bcece coe cooc EGA ee a 16K a, oopoe aee pacpe poep pao c epao BIOS. Haao oac - apec C000:0000. B ecox peax epa aac c ax epxe cpo paa, aa c eoo a. aee ae epeocc c paoo oa oo cpo a e oe cee, a o pa pecaec oo oo cpoo - c o pe eoepa a oo ec. Oao paecx peax ep oe paee a 2 4 ac. eoo paecoo aaopa pae ac epa coepa opa, oocc ao opo ao eepo oe a pae. EGA aa ac epa coep o x epex, oope opee e ao o paa. p oe eca pae eocce paoa oaoo. paa ooc 4000 ao, a o a a 2000 o paa pxoc 2 aa (25 cpo * 80 coo). ep a coep o ASCII. Aapapa ce peopae oep oa ASCII ca c co ocae eo a pa. Bopo a (a apo) coep opa o o, a oe ee a co. ooxpooo ce o caaae e a co oep, ee poc eao, coe oa x apo. B eox cceax a apo caaae ocoo oo ea coa. B o cae Baa popaa oe - 2 - ca ae po ep epaa, o aeo oae copoc oa a pa. Bce cce, poe ooxpoo, peoca aop ex paecx peo, oope oac a papeee, a co oopeeo ox eo. EGA o oopeeo o 16 eo, pe EGA oe pa 16 aopa 64 eo. p cooa 16 eo aa oa paa pee epex a, oco 4 a o xpa ca o 0 o 15. o aao, epexea paa pee oo 2 a a o. xea paa oe aoa pecaee oc oe o a eoepa. Koeco a, peeoe aoo pea paa oe eo ceo, ec eco oeco ox o pee oe oeco , eoxooe oca oo o. Tec eo opec c pao (BIOS pce co a paeco pae) B oee coaa co ceae co. 2. popapoae opoepa ce 6845. Bce eocce cpoc op pocxe opoepa eoepaa Motorola 6845 (EGA coe aa pocxe, ocoa a 6845). Mpocxea coec o oo aaoo ooxpoo aaope, eo aaope; o EGA e acoo coec o o pe peoee Ba ea poo popapoa pocxe, oa BIOS oe o pao a Bac. oop o coa, pocxea 6845 caaae eoce o ecox aaopox paecx peo. Oa oe oco pao o eppea oepo oo ASCII oc ax oa cooecx coo pocxee (a oa oepao a). Oa eope ae apo ea cooeceo caaae pa. Oa ae coae pcop pae . B apxepe EGA ac x pacpeeea e p pocxea. Mpocxea 6845 ee 18 pax pecpo, poepoax o 0 o 17. epe 10 pecpo cp opoae epae apaep ce. pecp, a pao, eepec popaco, oco o aoaec caaac BIOS p ee pea paa. He coee cepepoa c pecpa, oco eec oooc cop epa. Pecp e paep 8 , o eoope ca ap, o xpa 16-e e. ap #10-11 #14-15 caaa op ecoooee pcopa. apa #12-13 pae cpaa ce . apa #16-17 cooae o ceooo epa. co pecpo oco oo ac; oo pecp apeca pcopa oo a ca, a pecp ceooo epa peaae oo e. EGA ee 6 oaox pecpo, oope ca c exec ea. Pecp 20 aoee epece; o opeee aa capoa cpoe coa coec oepa. oc o ce 18 pecpa ocecec epe o o e op, apec oopoo ooxpooo aaopa pae 3B5H. o apec pae 3D5H eoo aaopa. EGA coe o x x apeco, acoc o oo, pcoee e eo ooxpo oop. ac pecp ooxpooo aaopa ao caaa pecp apeca, pacooe ope 3B4H (3D4H eoo), oca oep peeoo pecpa. Toa ce a, oca op c apeco 3B5H e aca o pecp. oco pecp, epece popaca, coc oapo, o ao caaa aca apec pecp, oo ep pecp ap, oo coa apec pecp , aoe, o opo pecp ap. oco apeca opo cee, o ee ceo apecoa x, co cp INC - 3 - DEC, a cee pepe: ;---ac pecp 11 12 pocxe 6845 (ae BX) ;---pae pecp aeo aa MOV DX,3B4H ;op apecoo pecpa MOV AL,11 ;oep pecpa aeo aa OUT DX,AL ;ocae oep pecpa ;---ocae a INC DX ;eae apec opa MOV AL,BL ;epe a a OUT DX,AL ;ocae eo pecp 11 ;---pae pecp capeo aa DEC DX ;occaaae apec opa MOV AL,12 ;oep pecpa capeo aa OUT DX,AL ;ocae oep pecpa ;---ocae a INC DX ;eae apec opa MOV AL,BH ;epe cap a OUT DX,AL ;ocae eo pecp 12 ooxpooo eoo aaopo ec ee p opa, oope a popaco. O e apeca 3B8H, 3B9H 3BAH ooxpooo 3D8H, 3D9H 3DAH - eoo aaopa. ep caaae pe paa, opo - ca ocoo c caoo eo paa, a pe cooae oe opa o cace ce. EGA pacpeee e pocxeo opoepa apo (apec opa 3C0H) pocxea opoepa pa (apeca opo 3CCH-3CFH). Kopoep apo coep 16 pecpo ae EGA, poepoax o 00 o 0FH. pecp o coepa 6-e o eo, oa EGA ca c e e cee, oo o cooa e 16 eo aopa 64-x. 3. caoa/poepa pea ce. Mooxpo aaop oepae o pe epaa, eo paec - ce, a EGA - eaa. EGA papeae e 8 cpa pee 7 - caapo ooxpoo ecoo pee. Pe 0-6 ooc coec, co a oao opao. p co, o epeae a EGA caoe pao c e e cee p IBM, paoe ecoe pe oc c co papeee, co pco coo, coco 8*14 oe, a e oe 8*8. BIOS xpa ooa epee o apec 0040:0049, oopo coepc oep eeo pea. a o apec 0040:004A ae co coo cpoe ecoo pee. Cpe poe.

echo " . ' '. . ,

()

echo " , , ,

echo " , , . ,

echo " 2.1 , .

echo " (). -, , , ..