, 0-2 111, 4-6 000. - . , 3 1; - , - , . , 1 7 . 10 , . . : 10- 00000111 7 7 00001111 F 15 00000001 1 1 00001001 9 9 01110000 70 112 10000111 87 135 10001111 8F 143 . 10000001 81 129 . 10001001 89 137 11110000 F0 240 . COLOR. PRINT WRITE, COLOR, , . , . COLOR , . , COLOR 3,4 (#3), - (#4). - 0-31, 0-15 , , 16-31 16, , . ( , .) PRINT WRITE - . - , .. / 0 - 1. , , -. , COLOR ,2, , CLS. - , , - COLOR , . . 0 , 1-7 . COLOR 0,7 - (), COLOR 7,0 ( ). : - 1, . 8 , . 16 0-15, . 7+8+16=31 . 0 7. [4.3.1], COLOR . - POKE. , - . 16 ( , ). OUT &H3D8,8, . "!" . 100 DEF SEG = &HB800 ' 110 OUT &H3D8,8 ' 16 120 POKE 1000,33 ' ! 130 POKE 1001,196 ' (11000100) PCjr . PCjr ( ): 100 DEF SEG = &HB800 ' 110 X = INP(&H3AH) ' 120 OUT &H3AH,3 ' 3 130 OUT &H3AH,0 ' 140 POKE 1000,33 ' ! 150 POKE 1001,196 ' (11000100) . , (0001) , (0101). , 1 11H. 100 X = INP (&H3AH) ' 110 OUT &H3AH,&H11 ' 11H 120 OUT &H3AH,5 ' (0101 = 5) . DOS BIOS . 9 10H . A 10H ; , , . D - 10H . [4.3.1]. DOS 21H . , DOS . - . MS DOS ANSI.SYS, Esc-- . . Esc- 9 21H, . Esc, [, . m $. - : 0 ( ) 1 4 5 7 8 ( ) 30 40 31 41 32 42 33 43 34 44 35 45 36 46 37 40 , MS DOS , 3 . Esc- - . 30 31 , 32 33 - 1, 34 35 - 2 36 37 - 3. . 9 21H. , - . - , - ( BIOS 10H), , . , - . ;--- STRING_1 DB 'The rain in Spain',0AH,0DH,'$' STRING_2 DB 'Falls mainly on the plain$' BLUE_RED DB 27,'[34;41m$' BLINK_CYAN DB 27,'[5;36m$' ;--- MOV AH,9 ; LEA DX,BLUE_RED ; DX INT 21H ; LEA DX,STRING_1 ; INT 21H ; LEA DX,BLINK_CYAN ; INT 21H ; LEA DX,STRING_2 ; INT 21H ; , , - - . Esc-, 0, . PCjr EGA BIOS - . 0 10H 10H. ( 0 15) BL, ( 0 15) BH, . 2 10H , , 17- , ES:DX. 0-15 0-15, 16 . , . [4.1.4]. . " ", , , . PCjr. 80*25 16 , - : ;--- 16 80*25 MOV AL,00001001B ; 0 MOV DX,3D8H ; OUT DX,AL ; ;--- MOV AX,0B800H ; MOV ES,AX ; MOV CX,2000 ; 2000 MOV BX,1 ;BX MOV AL,10010100B ; NEXT_CHAR: MOV ES:[BX],AL ; INC BX ; INC BX ; LOOP NEXT_CHAR ; 4.1.4 . , - . 16 . , . - , , , - . , ; , - . . COLOR . , - [4.1.3]. , , COLOR ,,8. PCjr , , - , . . [4.1.3]. . - BH, 10H. . , , - 0 BH, BL . , PCjr EGA - . 1 10H 10H. 10H AH, 1 AL BH. - . . 0-3 3D9H (- ) , - . , - - (B), (G), (R) - . , . 4, , 1, , . ;--- MOV AL,00001001B ; MOV DX,3D9H ; OUT DX,AL ; PCjr [4.1.1] , . 4- , 0-3 , , , 1. 1001. - 2 . 2 3DAH. . , , , - 3DAH. ( 2 ). MOV DX,3DAH ; IN AL,DX ; MOV AL,2 ; OUT DX,AL ; MOV AL,4 ; 2 OUT DX,AL ; EGA (overscan). 11H 3C0H. , , 11H , . 4 , EGA IBM, 6 , . 4.1.5 / . ( ASCII - 32). , , . . . CLS. 25- KEY OFF. ASCII 7. [4.5.1] , . . . , . - , 0 10H [4.1.2]. (ASCII 32), (ASCII 7). , . PCjr . EGA. ;--- MOV AH,0 ; MOV AL,2 ; 80*25 - INT 10H ; 6 7 10H, . , - AL . , . CX, - DX ( CH/DH, CL/DL). , BH. 0. ;--- 3,4 13,15 MOV AH,6 ; MOV AL,0 ; MOV BH,7 ; MOV CH,3 ; MOV CL,4 ; MOV DH,13 ; MOV DL,15 ; INT 10H ; 9 10H; , - CX. 2000 , - 0,0, [4.2.1]. AH , AL - , BH - - . ;--- MOV AH,2 ; MOV BH,0 ; MOV DX,0 ; 0,0 INT 10H ; ;--- 2000 MOV AH,9 ; MOV CX,2000 ; MOV AL,' ' ; AL MOV BL,7 ; BL INT 10H ; , DOS Esc-, ANSI.SYS. . - - , Esc, - $. 9 - 21H, DS:DX . DOS . [2J. , ( ), [K. ;--- CLEAR_LINE DB 27,'[K$' ;--- , MOV AH,9 ; LEA DX,CLEAR_LINE ;DX INT 21H ; . - , STOSW. : MOV AX,0B000H ; MOV ES,AX ; MOV DI,0 ;DI MOV AL,32 ; MOV AH,7 ; MOV CX,2000 ; REP STOSW ; AX ES:DI 2000 4.1.6 . , EGA. , , 4 5 0000:0410. 1 . 5-4 10 80 , 01 - 40 . , , 00, EGA. , BIOS , , - . , , , [4.3.1] . . : 100 ' 110 KEY OFF: CLS 120 WIDTH 40 130 DEF SEG = 0 140 M = PEEK(&H410) 150 POKE &H410,M OR &H30 160 WIDTH 80 170 LOCATE,,1,12,13 180 KEY ON 100 ' (80 ) 110 KEY OFF: CLS 120 WIDTH 80 130 DEF SEG = 0 140 M = PEEK(&H410) 150 POKE &H410,(M AND &HCF) OR &H20 160 WIDTH 80 170 SCREEN 0 180 LOCATE,,1,6,7 190 KEY ON 100 ' EGA (80 ) 110 KEY OFF: CLS 120 WIDTH 80 130 DEF SEG = 0 140 M = PEEK(&H410) 150 POKE &H410,M AND &HCF 160 WIDTH 80 170 SCREEN 0 180 LOCATE,,1,6,7 190 KEY ON WIDTH SCREEN, . . , , 4 5 0000:0410. . ;--- SUB AX,AX ; AX MOV ES,AX ; ES MOV DL,ES:[410H] ; 0000:0410 OR DL,00110000B ; 4 5 MOV ES:[410H],DL ; MOV AH,0 ; MOV AL,0 ; 80*25 INT 10H ; ;--- (40 ) SUB AX,AX ; ES MOV ES,AX ; MOV DL,ES:[410H] ; 0000:0410 AND DL,11001111B ; 4 5 OR DL,00010000B ; 4 MOV ES:[410H],DL ; MOV AH,0 ; MOV AL,1 ; 40*25 INT 10H ; ;--- EGA SUB AX,AX ; ES MOV ES,AX ; MOV DL,ES:[410H] ; 0000:0410 AND DL,11001111B ; 4 5 MOV ES:[410H],DL ; MOV AH,0 ; MOV AL,1 ; 40*25 INT 10H ;  2. . . -, , . -, . . (), . , , , . 6845, [4.1.1]. , - . 6845 , - [4.2.6]. . , , . , , , , - . - 8 2- BIOS, 0040:0050H. , 0, , 0. - 8 , , - . 4.2.1 . [4.2.2]. 25 80 ( 40) . , 1, 1,1. 0,0. . 1 25, 1 80. - LOCATE, - : LOCATE ,. , , , - 24- . 25- - LOCATE ( KEY OFF). 24 25 PRINT ( 24,80 25,80 - [4.3.1]). - . 100 FOR N = 1 TO 25 ' 110 LOCATE N,40 ' 120 PRINT CHR$(186); ' 130 NEXT ' , LOCATE . - , , , - . , , . , - , , . . - . 2 10H , - . ( BH) 0. DH:DL , 0. . ;--- 13, 39 MOV AH,2 ; MOV BH,0 ; MOV DH,13 ; MOV DL,39 ; INT 10H ; ANSI.SYS, . . , 9 21H. Esc (ASCII 27), $. Esc[,H$, - , Esc ASCII 27. , 27,'10;60H$' 10, 60. , , Esc-- . . ;--- POSITION_1 DB 27,'[10;30H$' STRING_1 DB 'There are two options:$' POSITION_2 DB 27,'[13;32H$' STRING_2 DB '(1) Review part 1$' POSITION_3 DB 27,'[15;32H$' STRING_3 DB '(2) Move on to part 2$' ;--- MOV AH,9 ; LEA DX,POSITION_1 ;1- INT 21H ; LEA DX,STRING_1 ;1- INT 21H ; LEA DX,POSITION_2 ; .. INT 21H ; LEA DX,STRING_2 ; INT 21H ; LEA DX,POSITION_3 ; INT 21H ; LEA DX,STRING_3 ; INT 21H ; . 14 15 6845 . - , DOS BIOS - . , , , 2- , BIOS. , 0040:0050, , . , . 14 15 0 1999, 2000 (25*80) . 0 3999, ( - 1 ). , , : 14 - , 15 - . ;--- MOV BL,24 ; BL (0-24) MOV BH,79 ; BH (0-79) CALL SET_CURSOR ; ;--- SET_CURSOR PROC ; MOV DX,3B4H ; 6845 MOV AL,15 ; 15 OUT DX,AL ; ; MOV AL,80 ; 80 MUL BL ; AX - , 80 MOV BL,BH ; BL SUB BH,BH ; BL BX ADD AX,BX ; ; INC DX ; OUT DX,AL ; ; MOV AL,14 ; DEC DX ; OUT DX,AL ; ; INC DX ; MOV AL,AH ; AL OUT DX,AL ; RET SET_CURSOR ENDP 4.2.2  - : , , .. - . MS DOS - . . Esc-. , 9 21H. . MS DOS , . Esc (ASCII 27), [, $ . , , . 3 : 3A 3B 3C 3D ASCII. , , 33C (33 ) 33,'C'; '33C'. - 1-8 , . - Esc-, . ;--- CURSOR_RIGHT DB 27,'[9C$' ;--- MOV BH,0 ; MOV DH,1 ; MOV DL,5 ; MOV AH,2 ; INT 10H ; ;--- LEA BX,CURSOR_RIGHT ;BX DX MOV CX,8 ; MOV DL,'0' ; 0 NEXT_NUMBER: MOV AH,2 ; DOS INT 21H ; INC DL ; ASCII XCHG DX,BX ; DX MOV AH,9 ; INT 21H ; 9 XCHG DX,BX ; DX ASCII LOOP NEXT_NUMBER ; Esc-, . , . , - Esc [=7h ( , 27,'[=7h'). Esc [=7l (27,'[=7l'). 4.2.3 . 6845. - . , - [4.3.1] . , 6845 - , . [4.2.6] - "" . . - . , INPUT, . , INKEY$, LOCATE 1 (0 - ). , LOCATE , - . 100 LOCATE 15,40,1 ; , 15,40 100 LOCATE ,,1 ; 100 LOCATE ,,0 ; LOCATE . , INPUT INPUT$ . . , , . - , . , 2 10H 26- . , , 25,0. MOV BH,0 ; ( 0 ) MOV DH,25 ; MOV DL,0 ; MOV AH,2 ; INT 10H ; . 6 10 6845 [4.1.1] , 1, , 0. " " , " " [4.2.4]. , , 10 32, 6. " " . - 11. " " , . ;--- MOV DX,3B4H ; 6845 MOV AL,10 ; 10 OUT DX,AL ; INC DX ; MOV AL,32 ; 6 OUT DX,AL ; ;--- MOV AL,11 ; " " OUT DX,AL ; 4.2.4 . - , . , " " , - " ". 14 , 0 13, . - . 2-10, 12 13, . 200- 8 , . 8 0 7, , - 7. (, , 7 , - .) 14- , - , - , 8- . . , " " 0, " - " 13 ( " " 7). "" "- " , . " " "" - , , - . , " " 12, "- " - 1, 12, 13, 0 , , 1. , , . BIOS 2- 0040:0060, "" "" . " ", - "". . LOCATE , . , "" "" - 4- 5- , LOCATE. , . , , 2 12, LOCATE ,,,2,12. , , . - . [4.2.3]. . 1 BIOS 10H "" "" . CH "", CL - "" . ;--- "" "" MOV AH,1 ; MOV CH,0 ; MOV CL,7 ; INT 10H ; . 10 11 6845 "" "" , . 3B5H - 3D5H - PCjr. , 3B4H (. [4.1.1]). . "" (#10) 5 6 . , 0, "