OMMAND.COM, - . , , - . - , DOS, - . , . 5.1.1 . (FAT) . FAT. , , 0, 0, 2 ( 1 ). , FAT . , MS DOS 3.0 FAT 16 . - 12- ; 16-- , MS DOS. . - 512 ( MS DOS 512- ). , FAT. , ( 500 4K - ). FAT, IBM PC: FAT 160K 1 1 180K 1 1 320K 2 2 360K 2 2 1.2M 1 7 10M 8 8 20M 4 40 , , . DOS FAT , , FAT - . AT , FAT. 20M , 10M, . 1.2M 1 , , . - . - , . FAT, , DOS - , . - FAT, . , FAT FF8H FFFH. ( ) - 000, - FF7H. , FF0H FF7H . 3 , - 1 1/2 . FAT - . MS DOS - . FAT . , (. [1.1.5]), 2 FFH. , , 2, 2 3 . MS DOS 3.0 FAT 16 . 10M, , 4086 . . 5-1 - FAT . . MS DOS , . - , - , FAT. FAT . : 1. 1.5. 2. 2 ( ). 3. , 12 , 12 . : 1. 2 . 2. . . FAT , - 6. [5.4.2] , FAT. 12- , (4 - ), . , , . 16- , , - , , . 100 ''' FAT 110 DEFINT A-Z 120 DATA &H55, &H8B, &HEC, &H1E, &H8B, &H76, &H0C, &H8B 130 DATA &H04, &H8B, &H76, &H0A, &H8B, &H14, &H8B, &H76 140 DATA &H08, &H8B, &H0C, &H8B, &H76, &H06, &H8A, &H1C 150 DATA &H8E, &HD8, &H8B, &HC3, &HBB, &H00, &H00, &HCD 160 DATA &H25, &H59, &H1F, &H5D, &HCA, &H08, &H00 170 DEF SEG = &H1000 ' 180 FOR N = 0 TO 38 ' 39 190 READ Q: POKE N,Q ' 200 NEXT ' 210 READSECTOR = 0 ' 1- 220 BUFFER = &H2000 ' 230 LOGICALNUMBER = 1 ' FAT 240 NUMBERSECTORS = 2 '2 FAT 250 DRIVE = 0 ' A 260 CALL READSECTOR(BUFFER,LOGICALNUMBER,NUMBERSECTORS,DRIVE) 270 ''' 280 DEF SEG = &H2000 ', FAT 290 CLUSTERNUMBER! = 6 ' 6 300 C! = CLUSTERNUMBER! ' 310 C! = INT (C!*1.5) ' 1.5 320 X = PEEK(C!) ' 2 330 Y = PEEK(C!+1) ' 340 X$ = HEX$(X): Y$ = HEX$(Y) ' 16- 350 IF LEN(X$) = 1 THEN X$ = "0"+X$ ' 2- 360 IF LEN(Y$) = 1 THEN Y$ = "0"+Y$ ' 370 H$ = Y$ + X$ ' 380 ''' 390 IF CLUSTERNUMBER! MOD 2 <> 0 THEN 420 ', 400 NEXTCLUSTER$ = RIGHT$(H$,3) ' , 3 410 GOTO 430 420 NEXTCLUSYER$ = LEFT$(H$,3) ' , 430 PRINT NEXTCLUSTER$ ' . DOS 1CH , FAT. DL, 0 = , 1 = A, .. DX FAT, CX - . DS:BX - , FAT, .. , - ; [1.1.5]. . FAT . - , 1.5 - , 1 . . , FAT , - [5.4.2]. ;--- BUFFER DB 1024 DUP(0) ; 2 ;--- FAT LEA BX,BUFFER ; MOV DX,1 ; MOV CX,2 ;2 MOV AL,0 ; A INT 25H ; POP CX ; ;--- MOV AX,3 ; AX MOV CX,AX ; MOV DX,AX ; SHR DX,1 ; 2 ADD CX,DX ; ADD BX,CX ; MOV DX,[BX] ; 2 TEST AX,1 ; ? JNZ ODD_CLUSTER ;, AND DX,0000111111111111B ; JMP SHORT CONTINUE ; ODD_CLUSTER: MOV CL,4 ; SHR DX,CL ; 12 CONTINUE: 5.1.2 . - - , , . - . , . . CLUSTERS . - DRIVENUM, 1 = A, 2 = B .. . 10 DEFINT A-Z ' 20 DRIVENUM = 1 ' 30 CLUSTERS = 0 ' 40 DATA &H55, &H8B, &HEC, &H8B, &H76, &H06, &H8B 50 DATA &H14, &HB4, &H36, &HCD, &H21, &H8B, &H7E 60 DATA &H08, &H89, &H1D, &H5D, &HCA, &H04, &H00 70 DEF SEG = &H1000 ' 80 FOR N = 0 TO 20 ' 90 READ Q: POKE N,Q ' 100 NEXT ' 110 FREESPACE = 0 ' 120 CALL FREESPACE(CLUSTERS,DRIVENUM) ' 130 PRINT "CLUSTERS: ";CLUSTERS ' . 36H 21H . DL, . - 0, A - 1 .. BX , AX - , CX - . . , 2K : MOV AH,36H ; MOV DL,1 ; A INT 21H ; CMP BX,2 ; 2 ? JL RUNNING_OUT ; , 5.1.3 / . . , . - , , . , DOS. . , . "- " , , . . LOF ( ) , (, , - - 1. - 128- , - ). , . X = LOF(1). 64- - , #3: 100 OPEN "FILENAME" AS #3 ' 110 RECORDLEN = 64 ' 120 NUMBREC = LOF(3)/RECORDLEN ' . FCB 23H 21H . 1 , . DS:DX . . , AL FF. AL 0, FCB ( 33-36). FCB , ; 14 FCB. - , . , 1: ;--- LEA DX,FCB ;DS:DX FCB MOV BX,DX ; BX MOV CX,1 ; CX MOV [BX]+14,CX ; FCB MOV AH,23H ; INT 21H ; MOV AX,[BX]+33 ; MOV CX,[BX]+35 ; , . , [5.4.5]. , - , , . , (file handle) , , , . - . 42H 21H. AL 2, . BX - , CX:DX , , 0 . . DX:AX , - - .. (DX ). , AX 1, - 6, . , - . 0 AL, CX DX . - : ;--- LEA DX,FILE_PATH ;DS:DX MOV AL,0 ; MOV AH,3DH ; INT 21H ; JC OPEN_ERROR ; MOV HANDLE,AX ; ;--- MOV AH,42H ; MOV AL,2 ; MOV BX,HANDLE ; BX MOV CX,0 ;0 CX DX MOV DX,0 ; INT 21H ; JC POINTER_ERROR ;? MOV FSIZE_HIGH,DX ; MOV FSIZE_LOW,DX ; 5.1.4 , . - . , , - [5.1.2]. , , . - . , , - . . . . , , , . . , [7.2.5]. , #61. - , - , . 100 ON ERROR GOTO 5000 ' . . 200 OPEN FNAME$ FOR OUTPUT AS #1 ' 210 FOR N = 1 TO ARRLEN ' 220 PRINT #1, ARRAY$(N) ' 230 NEXT ' . . 5000 IF ERR = 61 THEN 5100 ' ? 5100 IF ERR = ... ' ... . 5100 ''' 5110 BEEP: PRINT "Disk full - choose an option:" 5120 PRINT "(A) - Re-edit the file" 5130 PRINT "(B) - Delete some other file from disk" 5140 PRINT "(C) - Use different diskette" . ( ) . 5500 RESUME . DOS, , . : FCB 15H AL = 1 FCB 22H AL = 1 FCB 27H AL = 1 40H / CX <> BX . , . - .  2. . , . , , , . - ; , . , - , , MS DOS "" . , - . : 160K 4 64 9 180K 4 64 9 320K 7 112 15 360K 7 112 15 1.2M 14 224 29 10M ---------------------- 20M ---------------------- . MS DOS, XT AT 32 , 512 . , , 32 , . 16- . 32- : 0-7 8-10 11 12-21 22-23 24-25 26-27 28-31 3- . , ( ASCII 32). , .. [5.2.6]. - , . , [5.2.5]. (FAT), [5.1.1]. FAT - , . FAT , 1 , . - FAT , , . FAT, . , . 5.2.1 / . ( ) ( [5.2.3]). - , , . - DOS. . , DOS . , [5.4.2], . , . , , 32- , . 32 . - 32- . , - . . - - , . , . , , . . FILES. . FILES ; FILES "A:" .. - , , FILES "A:MYFILE.DAT". * ?. FILES - , . , . [5.2.3]. , , , [5.4.2]. , , , 32- . , - . , E5H, - . , , FAT. - FAT. 2- 26 . 100 ''' &H2000 110 INPUT "Enter erased filename ", FNAME$ 120 IF LEN(FNAME$) > 12 THEN BEEP: GOTO 110 130 IF INSTR(FNAME$,".") > 9 THEN BEEP: GOTO 110 140 ''' 150 Y = INSTR(FNAME$,".") 160 IF Y = 0 THEN FIRSTPART$ = FNAME$: GOTO 230 170 EXTEN$ = LEFT$(FNAME$, LEN(FNAME$) - Y) 180 EXTEN$ = EXTEN$ + STRING$(3 - LEN(EXTEN$),"") 190 FIRSTPART$ = RIGHT$(FNAME$,Y - 1) 200 FIRSTPART$ = FIRSTPART$ + STRING$(8 - LEN(FIRSTPART$),"") 210 FNAME$ = FIRSTPART$ + EXTEN$ 220 ''' 230 MID$(FNAME$,1,1) = CHR$(&HE5) ' 240 DIRPTR = 0 ' 250 FIELDPTR = 26 ' 260 FOR N = 1 TO 112 ' 112 270 X$ = "" ' X$ 280 FOR M = 0 TO 10 ' 290 X$ = X$ + PEEK(DIRPTR + M) ' 300 NEXT ' 310 IF X$ = FNAME$ THEN 340 ' 320 NEXT ' , 330 PRINT "Too late - file entry obliterated": END ' 340 X = PEEK(DIRPTR + FIELDPTR) ' , 1- 350 Y = PEEK(DIRPTR + FIELDPTR + 1) '2- 360 Z = X + 256*Y ' Z . MS DOS , , , - , . , - , . , . FCB: 11H 21H . - DS:DX FCB . AL 0, , FF - . DTA . FCB DTA (1 = A ..), 32 . FCB 7 7 FCB, - , 32 - . ;--- FCB DB 1,'NEWDATABAK',25DUP(0) ;--- MOV AH,11H ; LEA DX,FCB ; FCB INT 21H ; CMP AL,0 ;? JNE NO_FILE ; , LEA BX,DTA ; DS:BX 11H 12H , - . "?", "*". , , , DTA . : 4EH 21H . DS:DX , . , B:\EURO- PE\FRANCE\PARIS PARIS. 63 ASCII 0. , "?", "*". CX; 0, - [5.2.6] . , - . , DTA . DTA - - , DTA MS DOS - FCB. 21 DTA DOS . , , . 4 ( ). , , - , ASCII 0. (ASCII 46) - . ;--- PATH DB 'B:FRANCE\PARIS\4EME',0 ;--- MOV AH,4EH ; LEA DX,PATH ;DS:DX MOV CX,0 ; INT 21H ; JC NO_FILE ;, LEA BX,DTA ;DS:BX DTA MOV AL,[BX]+21 ; AL ( ) 4FH 21H. , 4EH, DTA . , - , AX 18. 5.2.2 / . , - . , . , . , - , (, ). , . . MKDIR ( ) RMDIR ( ). , 63 , - . . - STORKS BIRDS MKDIR "B:MAM- MALS\BIRDS\STORKS". STORKS, STORKS BIRDS. [5.3.2]. RMDIR "B:MAMMALS\BIRDS\STORKS". , . , - - , , . , BIRDS, - STORKS MKDIR "\STORKS" RMDIR "\STORKS". . , - . : DS:DX , , . ASCII 0. PRIMATES A: "A:\PRIMATES". MAMMALS "A:\MAMMALS\PRIMATES". A: , - , . AH 39H 21H; - , . , AX 3 ( ) 5 ( ). - PRIMATES: ;--- PATH DB 'A:MAMMALS\PRIMATES',0 ;--- PRIMATES LEA DX,PATH ;DS:DX MOV AH,39H ; INT 21H ; JC ERROR_ROUT ; : , , . AH 3AH 21H. AX 3 5 ( 5 , ). 5.2.3 / . , - , , . - , , - , ( 5 - . [5.2.6]). 32-- , , - . . . , , . , , MS DOS 0 , . - DOS , - . . . FILES ; , FILES "B:MAMMALS\BIRDS" , BIRDS. . , FILES "LEVEL1\NEWDATA" NEWDATA , . , . - . , 63. - , [5.4.8]. , ( "EXISTS"). , , . 100 ON ERROR GOTO 1000 ' 110 EXISTS = 1 ' "" 120 INPUT "Enter filename: ",S$ ' 130 OPEN S$ FOR INPUT AS #3 ' . 140 IF EXISTS = 0 THEN BEEP: PRINT "File does not exist" . . 1000 IF ERR = 53 THEN 1500 ' ? 1010 IF ERR = 64 THEN ... ' . 1500 EXISTS = 0 ' 1510 RESUME 140 ' . , - [5.2.1] . 4EH *.*, , 4FH. , , AL 18. , - , DTA , ( DTA , - ). . ;--- PATH DB 'A:MAMMALS\*.*',0 DTAH DB 256 DUP(?) ;--- DTA LEA DX,DTA ;DS:DX DTA MOV AH,1AH ; DTA INT 21H ; DTA ;--- MOV AH,4EH ; LEA DX,PATH ; MOV CX,0 ; INT 21H ; *.* JC ERROR ; ;--- NEXT_LINE: LEA BX,DTA ;BX DTA ADD BX,30 ; NEXT_CHAR: MOV DL,[BX] ; CMP DL,0 ; JE END_STR ;, MOV AH,2 ;, INT 21H ; INC BX ; JMP SHORT NEXT_CHAR ; ;--- / END_STR: MOV AH,2 ; MOV DL,13 ; INT 21H ; MOV DL,10 ; INT 21H ; ;--- LEA DX,PATH ; MOV AH,4FH ; INT 21H ; JC FINISHED ; , JMP SHORT NEXT_LINE ; FINISHED: 5.2.4 / . , DOS , . , - . . CHDIR. , , . 63- , , . CHDIR "C:MAMMALS\PRIMATES\GIBBONS" GIBBONS . CHDIR "\" CHDIR "B:\". 3.0 , DOS PATH. PRINT ENVI- RON$("PATH"). . 3BH 21H . DS:DX ASCII 0. , B:BIRDS\- PARROTS\POLLY POLLY . B: - , [5.3.1]. A: A:\. POLLY: ;--- PATH DB 'B:BIRDS\PARROTS\POLLY',0 ;--- POLLY MOV AH,3BH ; LEA DX,PATH ;DS:DX INT 21H ; - 47H 21H. DS:SI - 64 , . DL , 0 = " ", 1 = A, 2 = B .. - . , AL - 15.