home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / sigm / vol177 / scavenge.lbr < prev    next >
LBR Archive  |  1985-02-10  |  15.4 KB

open in: MacOS 8.1     |     Win98     |     DOS

view JSON data     |     view as text

This file was processed as: LBR Archive (archive/lbr).

You can browse this item here: scavenge.lbr

ConfidenceProgramDetectionMatch TypeSupport
100% dexvert LBR Archive (archive/lbr) magic Supported
1% dexvert Micro Focus COBOL library (other/microFocusCobolLibrary) ext Unsupported
1% dexvert Micro Focus COBOL Library (other/microFocusCOBOLLibrary) ext Unsupported
100% file LBR archive data default
99% file data default
87% TrID LU library default
12% TrID C64 Hires bitmap default (weak)



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 00 20 20 20 20 20 20 20 | 20 20 20 20 00 00 01 00 |. | ....|
|00000010| d6 db d6 db d6 db d6 db | d6 db d6 db d6 db d6 db |........|........|
|00000020| 00 53 43 41 56 31 58 58 | 20 41 53 4d 01 00 3b 00 |.SCAV1XX| ASM..;.|
|00000030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000040| 00 53 43 41 56 32 58 58 | 20 41 53 4d 3c 00 3f 00 |.SCAV2XX| ASM<.?.|
|00000050| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000060| ff db d6 db d6 db d6 db | d6 db d6 db d6 db d6 db |........|........|
|00000070| d6 db d6 db d6 db d6 db | d6 db d6 db d6 db d6 db |........|........|
|00000080| 74 69 74 6c 65 20 73 63 | 61 76 65 6e 67 65 20 2d |title sc|avenge -|
|00000090| 2d 20 4d 53 44 4f 53 20 | 62 61 64 20 62 6c 6f 63 |- MSDOS |bad bloc|
|000000a0| 6b 20 6d 61 70 70 65 72 | 0d 0a 3b 0d 0a 3b 2a 2a |k mapper|..;..;**|
|000000b0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000000c0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000000d0| 2a 2a 2a 2a 2a 2a 0d 0a | 3b 2a 09 09 09 09 09 2a |******..|;*.....*|
|000000e0| 0d 0a 3b 2a 09 09 53 43 | 41 56 45 4e 47 45 09 09 |..;*..SC|AVENGE..|
|000000f0| 2a 0d 0a 3b 2a 09 09 09 | 09 09 2a 0d 0a 3b 2a 09 |*..;*...|..*..;*.|
|00000100| 4d 61 72 6b 20 62 61 64 | 20 62 6c 6f 63 6b 73 20 |Mark bad| blocks |
|00000110| 6f 6e 20 4d 53 44 4f 53 | 20 09 2a 0d 0a 3b 2a 09 |on MSDOS| .*..;*.|
|00000120| 61 73 20 61 6c 6c 6f 63 | 61 74 65 64 20 69 6e 20 |as alloc|ated in |
|00000130| 74 68 65 20 46 41 54 2e | 09 2a 0d 0a 3b 2a 09 09 |the FAT.|.*..;*..|
|00000140| 09 09 09 2a 0d 0a 3b 2a | 09 54 2e 20 4a 65 6e 6e |...*..;*|.T. Jenn|
|00000150| 69 6e 67 73 20 32 39 20 | 53 65 70 74 2e 20 38 32 |ings 29 |Sept. 82|
|00000160| 09 09 2a 0d 0a 3b 2a 09 | 20 20 63 72 65 61 74 65 |..*..;*.| create|
|00000170| 64 20 31 35 20 53 65 70 | 74 2e 20 38 32 09 09 2a |d 15 Sep|t. 82..*|
|00000180| 0d 0a 3b 2a 09 09 09 09 | 09 2a 0d 0a 3b 2a 2a 2a |..;*....|.*..;***|
|00000190| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000001a0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000001b0| 2a 2a 2a 2a 2a 0d 0a 3b | 0d 0a 3b 52 65 61 64 73 |*****..;|..;Reads|
|000001c0| 20 61 6c 6c 20 73 65 63 | 74 6f 72 73 20 69 6e 20 | all sec|tors in |
|000001d0| 6c 6f 67 69 63 61 6c 20 | 4d 53 44 4f 53 20 62 6c |logical |MSDOS bl|
|000001e0| 6f 63 6b 73 0d 0a 3b 61 | 6e 64 20 6d 61 72 6b 73 |ocks..;a|nd marks|
|000001f0| 20 74 68 65 20 66 69 6c | 65 20 61 6c 6c 6f 63 61 | the fil|e alloca|
|00000200| 74 69 6f 6e 20 74 61 62 | 6c 65 73 20 73 75 63 68 |tion tab|les such|
|00000210| 0d 0a 3b 74 68 61 74 20 | 74 68 65 20 62 6c 6f 63 |..;that |the bloc|
|00000220| 6b 73 20 61 72 65 20 70 | 65 72 6d 61 6e 65 6e 74 |ks are p|ermanent|
|00000230| 6c 79 20 61 6c 6c 6f 63 | 61 74 65 64 0d 0a 3b 77 |ly alloc|ated..;w|
|00000240| 68 65 72 65 20 43 48 4b | 44 53 4b 20 77 69 6c 6c |here CHK|DSK will|
|00000250| 20 6e 6f 74 20 64 65 61 | 6c 6c 6f 63 61 74 65 20 | not dea|llocate |
|00000260| 74 68 65 6d 2e 0d 0a 3b | 0d 0a 3b 54 68 69 73 20 |them...;|..;This |
|00000270| 76 65 72 73 69 6f 6e 20 | 77 6f 72 6b 73 20 6f 6e |version |works on|
|00000280| 20 61 6e 79 20 70 72 65 | 2d 32 2e 30 30 20 4d 53 | any pre|-2.00 MS|
|00000290| 44 4f 53 20 6f 72 0d 0a | 3b 50 43 44 4f 53 2c 20 |DOS or..|;PCDOS, |
|000002a0| 6f 6e 20 61 6e 79 20 6d | 65 64 69 61 20 74 79 70 |on any m|edia typ|
|000002b0| 65 2c 20 66 69 78 65 64 | 20 6f 72 20 72 65 6d 6f |e, fixed| or remo|
|000002c0| 76 61 62 6c 65 2e 0d 0a | 3b 4f 6e 65 20 28 6d 61 |vable...|;One (ma|
|000002d0| 6a 6f 72 29 20 6c 69 6d | 69 74 61 74 69 6f 6e 3a |jor) lim|itation:|
|000002e0| 20 69 74 20 77 69 6c 6c | 20 6e 6f 74 20 6d 61 70 | it will| not map|
|000002f0| 20 6f 75 74 0d 0a 3b 62 | 6c 6f 63 6b 73 20 74 68 | out..;b|locks th|
|00000300| 61 74 20 61 72 65 20 61 | 6c 72 65 61 64 79 20 61 |at are a|lready a|
|00000310| 6c 6c 6f 63 61 74 65 64 | 20 74 6f 20 61 20 66 69 |llocated| to a fi|
|00000320| 6c 65 3b 0d 0a 3b 69 74 | 20 77 69 6c 6c 20 73 61 |le;..;it| will sa|
|00000330| 79 20 22 62 6c 6f 63 6b | 20 75 73 65 64 22 2c 20 |y "block| used", |
|00000340| 62 75 74 20 77 6f 6e 27 | 74 20 74 65 6c 6c 20 79 |but won'|t tell y|
|00000350| 6f 75 0d 0a 3b 77 68 69 | 63 68 20 66 69 6c 65 20 |ou..;whi|ch file |
|00000360| 69 74 20 69 73 20 69 6e | 2e 0d 0a 3b 0d 0a 3b 49 |it is in|...;..;I|
|00000370| 66 20 53 43 41 56 45 4e | 47 45 20 66 69 6e 64 73 |f SCAVEN|GE finds|
|00000380| 20 61 6e 79 20 62 61 64 | 20 62 6c 6f 63 6b 73 2c | any bad| blocks,|
|00000390| 20 69 74 20 77 69 6c 6c | 20 61 73 6b 0d 0a 3b 79 | it will| ask..;y|
|000003a0| 6f 75 20 77 68 65 74 68 | 65 72 20 6f 72 20 6e 6f |ou wheth|er or no|
|000003b0| 74 20 79 6f 75 20 77 61 | 6e 74 20 74 68 65 20 64 |t you wa|nt the d|
|000003c0| 69 73 6b 20 75 70 64 61 | 74 65 64 2e 0d 0a 3b 59 |isk upda|ted...;Y|
|000003d0| 6f 75 20 63 61 6e 20 73 | 61 66 65 6c 79 20 72 75 |ou can s|afely ru|
|000003e0| 6e 20 69 74 20 6a 75 73 | 74 20 74 6f 20 73 65 65 |n it jus|t to see|
|000003f0| 20 69 66 20 74 68 65 20 | 64 69 73 6b 20 0d 0a 3b | if the |disk ..;|
|00000400| 69 73 20 4f 4b 2e 0d 0a | 3b 0d 0a 63 72 09 65 71 |is OK...|;..cr.eq|
|00000410| 75 09 30 64 68 0d 0a 6c | 66 09 65 71 75 09 30 61 |u.0dh..l|f.equ.0a|
|00000420| 68 0d 0a 70 61 67 65 0d | 0a 63 67 72 6f 75 70 20 |h..page.|.cgroup |
|00000430| 67 72 6f 75 70 20 63 6f | 64 65 0d 0a 63 6f 64 65 |group co|de..code|
|00000440| 20 73 65 67 6d 65 6e 74 | 20 62 79 74 65 20 70 75 | segment| byte pu|
|00000450| 62 6c 69 63 20 27 63 6f | 64 65 27 0d 0a 61 73 73 |blic 'co|de'..ass|
|00000460| 75 6d 65 20 63 73 3a 63 | 67 72 6f 75 70 2c 64 73 |ume cs:c|group,ds|
|00000470| 3a 63 67 72 6f 75 70 2c | 73 73 3a 63 67 72 6f 75 |:cgroup,|ss:cgrou|
|00000480| 70 0d 0a 3b 0d 0a 3b 4d | 53 44 4f 53 20 70 61 67 |p..;..;M|SDOS pag|
|00000490| 65 20 30 20 73 74 75 66 | 66 2e 0d 0a 3b 0d 0a 09 |e 0 stuf|f...;...|
|000004a0| 6f 72 67 09 35 63 68 0d | 0a 74 66 63 62 20 6c 61 |org.5ch.|.tfcb la|
|000004b0| 62 65 6c 20 62 79 74 65 | 0d 0a 0d 0a 09 6f 72 67 |bel byte|.....org|
|000004c0| 09 38 30 68 0d 0a 74 62 | 75 66 66 20 6c 61 62 65 |.80h..tb|uff labe|
|000004d0| 6c 20 62 79 74 65 0d 0a | 0d 0a 09 6f 72 67 09 31 |l byte..|...org.1|
|000004e0| 30 30 68 0d 0a 6d 61 69 | 6e 3a 09 6a 6d 70 09 73 |00h..mai|n:.jmp.s|
|000004f0| 74 61 72 74 0d 0a 3b 0d | 0a 3b 44 69 73 6b 20 70 |tart..;.|.;Disk p|
|00000500| 61 72 61 6d 65 74 65 72 | 73 3a 0d 0a 3b 0d 0a 62 |arameter|s:..;..b|
|00000510| 6c 6b 63 6e 74 09 64 77 | 09 28 3f 29 09 3b 62 6c |lkcnt.dw|.(?).;bl|
|00000520| 6f 63 6b 73 20 74 68 69 | 73 20 64 69 73 6b 0d 0a |ocks thi|s disk..|
|00000530| 62 6c 6b 73 69 7a 65 09 | 64 77 09 28 3f 29 09 3b |blksize.|dw.(?).;|
|00000540| 73 65 63 74 6f 72 73 20 | 70 65 72 20 62 6c 6f 63 |sectors |per bloc|
|00000550| 6b 0d 0a 73 65 63 73 69 | 7a 65 09 64 77 09 28 3f |k..secsi|ze.dw.(?|
|00000560| 29 09 3b 70 68 79 73 2e | 20 73 65 63 74 6f 72 20 |).;phys.| sector |
|00000570| 73 69 7a 65 0d 0a 62 61 | 64 63 6e 74 09 64 77 09 |size..ba|dcnt.dw.|
|00000580| 28 3f 29 09 3b 23 20 62 | 61 64 20 62 6c 6f 63 6b |(?).;# b|ad block|
|00000590| 73 20 66 6f 75 6e 64 0d | 0a 6e 65 77 62 61 64 09 |s found.|.newbad.|
|000005a0| 64 77 09 28 3f 29 09 3b | 6e 65 77 20 62 61 64 20 |dw.(?).;|new bad |
|000005b0| 6f 6e 65 73 0d 0a 62 6c | 6f 63 6b 09 64 77 09 28 |ones..bl|ock.dw.(|
|000005c0| 3f 29 09 3b 63 75 72 72 | 65 6e 74 20 62 6c 6f 63 |?).;curr|ent bloc|
|000005d0| 6b 0d 0a 73 65 63 74 6f | 72 09 64 77 09 28 3f 29 |k..secto|r.dw.(?)|
|000005e0| 09 3b 73 65 63 74 6f 72 | 20 74 6f 20 72 65 61 64 |.;sector| to read|
|000005f0| 0d 0a 64 69 73 6b 09 64 | 62 09 28 3f 29 09 3b 73 |..disk.d|b.(?).;s|
|00000600| 65 6c 65 63 74 65 64 20 | 64 69 73 6b 0d 0a 63 75 |elected |disk..cu|
|00000610| 72 64 73 6b 09 64 62 09 | 28 3f 29 09 3b 63 75 72 |rdsk.db.|(?).;cur|
|00000620| 72 65 6e 74 20 64 69 73 | 6b 2e 0d 0a 09 64 77 20 |rent dis|k....dw |
|00000630| 31 32 38 20 64 75 70 20 | 28 3f 29 0d 0a 73 74 61 |128 dup |(?)..sta|
|00000640| 63 6b 09 64 77 09 28 3f | 29 09 3b 77 68 61 74 20 |ck.dw.(?|).;what |
|00000650| 65 6c 73 65 0d 0a 70 61 | 67 65 0d 0a 3b 0d 0a 3b |else..pa|ge..;..;|
|00000660| 53 61 79 20 77 68 6f 20 | 77 65 20 61 72 65 2c 20 |Say who |we are, |
|00000670| 64 65 73 63 72 69 62 65 | 20 74 68 65 20 64 69 73 |describe| the dis|
|00000680| 6b 20 77 65 20 61 72 65 | 0d 0a 3b 61 62 6f 75 74 |k we are|..;about|
|00000690| 20 74 6f 20 66 69 78 2c | 20 61 73 6b 20 74 6f 20 | to fix,| ask to |
|000006a0| 63 6f 6e 74 69 6e 75 65 | 20 6f 72 20 61 62 6f 72 |continue| or abor|
|000006b0| 74 2e 0d 0a 3b 0d 0a 73 | 74 61 72 74 3a 09 6d 6f |t...;..s|tart:.mo|
|000006c0| 76 09 61 78 2c 63 73 0d | 0a 09 6d 6f 76 09 64 73 |v.ax,cs.|..mov.ds|
|000006d0| 2c 61 78 0d 0a 09 6d 6f | 76 09 73 73 2c 61 78 0d |,ax...mo|v.ss,ax.|
|000006e0| 0a 09 6d 6f 76 09 73 70 | 2c 6f 66 66 73 65 74 20 |..mov.sp|,offset |
|000006f0| 73 74 61 63 6b 0d 0a 0d | 0a 09 6d 6f 76 09 64 78 |stack...|..mov.dx|
|00000700| 2c 6f 66 66 73 65 74 20 | 73 69 67 6e 6f 6e 0d 0a |,offset |signon..|
|00000710| 09 63 61 6c 6c 09 70 73 | 74 72 0d 0a 09 63 61 6c |.call.ps|tr...cal|
|00000720| 6c 09 73 65 74 75 70 09 | 09 3b 67 65 74 20 64 69 |l.setup.|.;get di|
|00000730| 73 6b 20 73 74 75 66 66 | 0d 0a 09 6a 6e 63 09 73 |sk stuff|...jnc.s|
|00000740| 74 31 0d 0a 09 09 6d 6f | 76 09 64 78 2c 6f 66 66 |t1....mo|v.dx,off|
|00000750| 73 65 74 20 73 74 72 73 | 74 72 0d 0a 09 09 63 61 |set strs|tr....ca|
|00000760| 6c 6c 09 70 73 74 72 0d | 0a 09 09 69 6e 74 09 33 |ll.pstr.|...int.3|
|00000770| 32 09 3b 65 72 72 6f 72 | 2e 0d 0a 0d 0a 73 74 31 |2.;error|.....st1|
|00000780| 3a 09 63 61 6c 6c 09 6c | 69 73 74 73 74 61 74 09 |:.call.l|iststat.|
|00000790| 3b 64 65 73 63 72 69 62 | 65 20 64 73 6b 0d 0a 09 |;describ|e dsk...|
|000007a0| 6d 6f 76 09 64 78 2c 6f | 66 66 73 65 74 20 63 6f |mov.dx,o|ffset co|
|000007b0| 6e 74 73 74 72 0d 0a 09 | 63 61 6c 6c 09 70 73 74 |ntstr...|call.pst|
|000007c0| 72 09 09 3b 74 79 70 65 | 20 61 6e 79 20 6b 65 79 |r..;type| any key|
|000007d0| 2e 2e 0d 0a 09 63 61 6c | 6c 09 69 6e 61 0d 0a 3b |.....cal|l.ina..;|
|000007e0| 0d 0a 3b 46 69 6e 64 20 | 61 6c 6c 20 74 68 65 20 |..;Find |all the |
|000007f0| 62 61 64 20 62 6c 6f 63 | 6b 73 2c 20 69 66 20 61 |bad bloc|ks, if a|
|00000800| 6e 79 2c 20 64 69 73 70 | 6c 61 79 20 74 68 65 6d |ny, disp|lay them|
|00000810| 2c 0d 0a 3b 61 73 6b 20 | 69 66 20 77 65 20 73 68 |,..;ask |if we sh|
|00000820| 6f 75 6c 64 20 75 70 64 | 61 74 65 20 74 68 65 20 |ould upd|ate the |
|00000830| 46 41 54 2e 20 49 66 20 | 73 6f 2c 20 6d 61 72 6b |FAT. If |so, mark|
|00000840| 0d 0a 3b 69 74 20 64 69 | 72 74 79 20 73 6f 20 4d |..;it di|rty so M|
|00000850| 53 44 4f 53 20 77 69 6c | 6c 20 75 70 64 61 74 65 |SDOS wil|l update|
|00000860| 20 69 74 2e 0d 0a 3b 0d | 0a 09 6d 6f 76 09 64 78 | it...;.|..mov.dx|
|00000870| 2c 6f 66 66 73 65 74 20 | 63 72 6c 66 0d 0a 09 63 |,offset |crlf...c|
|00000880| 61 6c 6c 09 70 73 74 72 | 0d 0a 09 63 61 6c 6c 09 |all.pstr|...call.|
|00000890| 66 69 6e 64 62 61 64 09 | 09 3b 6d 61 70 20 62 61 |findbad.|.;map ba|
|000008a0| 64 2c 0d 0a 09 63 61 6c | 6c 09 6c 69 73 74 62 61 |d,...cal|l.listba|
|000008b0| 64 09 09 3b 6c 69 73 74 | 20 74 68 65 6d 2c 0d 0a |d..;list| them,..|
|000008c0| 09 63 6d 70 09 6e 65 77 | 62 61 64 2c 30 09 3b 69 |.cmp.new|bad,0.;i|
|000008d0| 66 20 6e 65 77 20 62 61 | 64 0d 0a 09 6a 65 09 73 |f new ba|d...je.s|
|000008e0| 74 32 09 09 3b 62 6c 6f | 63 6b 73 2e 2e 2e 0d 0a |t2..;blo|cks.....|
|000008f0| 0d 0a 09 6d 6f 76 09 64 | 78 2c 6f 66 66 73 65 74 |...mov.d|x,offset|
|00000900| 20 75 70 64 73 74 72 20 | 3b 61 73 6b 20 69 66 20 | updstr |;ask if |
|00000910| 77 65 0d 0a 09 63 61 6c | 6c 09 70 73 74 72 09 09 |we...cal|l.pstr..|
|00000920| 3b 73 68 6f 75 6c 64 20 | 75 70 64 61 74 65 0d 0a |;should |update..|
|00000930| 09 63 61 6c 6c 09 69 6e | 61 0d 0a 09 61 6e 64 09 |.call.in|a...and.|
|00000940| 61 6c 2c 35 66 68 0d 0a | 09 63 6d 70 09 61 6c 2c |al,5fh..|.cmp.al,|
|00000950| 27 59 27 0d 0a 09 6a 6e | 65 09 73 74 32 0d 0a 09 |'Y'...jn|e.st2...|
|00000960| 6d 6f 76 20 62 79 74 65 | 20 70 74 72 20 65 73 3a |mov byte| ptr es:|
|00000970| 5b 64 69 2d 31 5d 2c 31 | 20 3b 46 41 54 20 63 68 |[di-1],1| ;FAT ch|
|00000980| 61 6e 67 65 64 2e 0d 0a | 0d 0a 73 74 32 3a 09 6d |anged...|..st2:.m|
|00000990| 6f 76 09 61 6c 2c 63 75 | 72 64 73 6b 09 3b 72 65 |ov.al,cu|rdsk.;re|
|000009a0| 73 65 6c 65 63 74 20 74 | 68 65 0d 0a 09 63 61 6c |select t|he...cal|
|000009b0| 6c 09 73 65 6c 64 73 6b | 09 09 3b 6f 72 69 67 69 |l.seldsk|..;origi|
|000009c0| 6e 61 6c 20 64 69 73 6b | 0d 0a 09 69 6e 74 09 33 |nal disk|...int.3|
|000009d0| 32 0d 0a 0d 0a 73 69 67 | 6e 6f 6e 09 64 62 09 63 |2....sig|non.db.c|
|000009e0| 72 2c 6c 66 2c 27 4d 53 | 44 4f 53 20 31 2e 32 35 |r,lf,'MS|DOS 1.25|
|000009f0| 20 42 61 64 20 53 65 63 | 74 6f 72 20 4d 61 70 70 | Bad Sec|tor Mapp|
|00000a00| 65 72 27 0d 0a 09 64 62 | 09 63 72 2c 6c 66 2c 27 |er'...db|.cr,lf,'|
|00000a10| 20 20 54 2e 20 4a 65 6e | 6e 69 6e 67 73 20 32 39 | T. Jen|nings 29|
|00000a20| 20 53 65 70 74 2e 20 38 | 32 27 0d 0a 09 64 62 09 | Sept. 8|2'...db.|
|00000a30| 27 24 27 0d 0a 73 74 72 | 73 74 72 09 64 62 09 63 |'$'..str|str.db.c|
|00000a40| 72 2c 6c 66 2c 27 4d 75 | 73 74 20 73 70 65 63 69 |r,lf,'Mu|st speci|
|00000a50| 66 79 20 61 20 64 69 73 | 6b 20 64 72 69 76 65 2e |fy a dis|k drive.|
|00000a60| 24 27 0d 0a 63 6f 6e 74 | 73 74 72 09 64 62 09 63 |$'..cont|str.db.c|
|00000a70| 72 2c 6c 66 2c 27 54 79 | 70 65 20 5e 43 20 74 6f |r,lf,'Ty|pe ^C to|
|00000a80| 20 61 62 6f 72 74 2c 20 | 61 6e 79 20 27 0d 0a 09 | abort, |any '...|
|00000a90| 64 62 09 27 6f 74 68 65 | 72 20 6b 65 79 20 74 6f |db.'othe|r key to|
|00000aa0| 20 63 6f 6e 74 69 6e 75 | 65 3a 20 24 27 0d 0a 75 | continu|e: $'..u|
|00000ab0| 70 64 73 74 72 09 64 62 | 09 63 72 2c 6c 66 2c 6c |pdstr.db|.cr,lf,l|
|00000ac0| 66 2c 27 20 57 61 6e 74 | 20 74 68 65 20 64 69 73 |f,' Want| the dis|
|00000ad0| 6b 20 75 70 64 61 74 65 | 64 3f 20 5b 79 2c 6e 5d |k update|d? [y,n]|
|00000ae0| 20 3a 24 27 0d 0a 63 72 | 6c 66 09 64 62 09 63 72 | :$'..cr|lf.db.cr|
|00000af0| 2c 6c 66 2c 27 24 27 0d | 0a 70 61 67 65 0d 0a 3b |,lf,'$'.|.page..;|
|00000b00| 0d 0a 3b 47 65 74 20 74 | 68 65 20 64 61 74 61 20 |..;Get t|he data |
|00000b10| 6f 6e 20 74 68 65 20 73 | 70 65 63 69 66 69 65 64 |on the s|pecified|
|00000b20| 20 64 69 73 6b 2e 20 52 | 65 74 75 72 6e 20 0d 0a | disk. R|eturn ..|
|00000b30| 3b 63 61 72 72 79 20 69 | 66 20 6e 6f 20 64 72 69 |;carry i|f no dri|
|00000b40| 76 65 20 73 70 65 63 69 | 66 69 65 64 2e 20 52 65 |ve speci|fied. Re|
|00000b50| 74 75 72 6e 73 20 45 53 | 3a 44 49 0d 0a 3b 70 6f |turns ES|:DI..;po|
|00000b60| 69 6e 74 69 6e 67 20 74 | 6f 20 74 68 65 20 46 41 |inting t|o the FA|
|00000b70| 54 20 66 6f 72 20 74 68 | 65 20 73 65 6c 65 63 74 |T for th|e select|
|00000b80| 65 64 20 64 72 69 76 65 | 2e 0d 0a 3b 0d 0a 73 65 |ed drive|...;..se|
|00000b90| 74 75 70 3a 09 63 61 6c | 6c 09 69 6e 69 74 64 73 |tup:.cal|l.initds|
|00000ba0| 6b 09 09 3b 72 65 73 65 | 74 20 64 73 6b 20 73 79 |k..;rese|t dsk sy|
|00000bb0| 73 2c 0d 0a 09 63 61 6c | 6c 09 67 65 74 64 73 6b |s,...cal|l.getdsk|
|00000bc0| 09 09 3b 67 65 74 20 63 | 75 72 72 65 6e 74 2c 0d |..;get c|urrent,.|
|00000bd0| 0a 09 6d 6f 76 09 63 75 | 72 64 73 6b 2c 61 6c 09 |..mov.cu|rdsk,al.|
|00000be0| 3b 73 61 76 65 20 69 74 | 2c 0d 0a 09 6d 6f 76 09 |;save it|,...mov.|
|00000bf0| 61 6c 2c 74 66 63 62 09 | 09 3b 6d 61 6b 65 20 73 |al,tfcb.|.;make s|
|00000c00| 75 72 65 20 61 0d 0a 09 | 63 6d 70 09 61 6c 2c 30 |ure a...|cmp.al,0|
|00000c10| 09 09 3b 6e 65 77 20 6f | 6e 65 20 73 70 65 63 27 |..;new o|ne spec'|
|00000c20| 64 0d 0a 09 73 74 63 09 | 09 09 3b 71 75 69 74 20 |d...stc.|..;quit |
|00000c30| 69 66 20 6e 6f 6e 65 2c | 0d 0a 09 6a 7a 09 67 64 |if none,|...jz.gd|
|00000c40| 31 0d 0a 09 64 65 63 09 | 61 6c 09 09 3b 6d 61 6b |1...dec.|al..;mak|
|00000c50| 65 20 30 2d 4e 2c 0d 0a | 09 6d 6f 76 09 64 69 73 |e 0-N,..|.mov.dis|
|00000c60| 6b 2c 61 6c 0d 0a 09 63 | 61 6c 6c 09 73 65 6c 64 |k,al...c|all.seld|
|00000c70| 73 6b 09 09 3b 73 65 6c | 65 63 74 2c 0d 0a 0d 0a |sk..;sel|ect,....|
|00000c80| 09 70 75 73 68 09 64 73 | 09 09 3b 73 61 76 65 20 |.push.ds|..;save |
|00000c90| 6c 6f 63 61 6c 20 44 53 | 2c 0d 0a 09 6d 6f 76 09 |local DS|,...mov.|
|00000ca0| 61 68 2c 31 62 68 0d 0a | 09 69 6e 74 09 33 33 0d |ah,1bh..|.int.33.|
|00000cb0| 0a 09 70 75 73 68 09 64 | 73 0d 0a 09 70 6f 70 09 |..push.d|s...pop.|
|00000cc0| 65 73 09 09 3b 70 6f 69 | 6e 74 20 45 53 3a 44 49 |es..;poi|nt ES:DI|
|00000cd0| 20 74 6f 0d 0a 09 6d 6f | 76 09 64 69 2c 62 78 09 | to...mo|v.di,bx.|
|00000ce0| 09 3b 46 41 54 2c 0d 0a | 09 70 6f 70 09 64 73 0d |.;FAT,..|.pop.ds.|
|00000cf0| 0a 09 6d 6f 76 09 62 6c | 6b 63 6e 74 2c 64 78 09 |..mov.bl|kcnt,dx.|
|00000d00| 3b 73 61 76 65 20 23 20 | 62 6c 6f 63 6b 73 2c 0d |;save # |blocks,.|
|00000d10| 0a 09 6d 6f 76 09 73 65 | 63 73 69 7a 65 2c 63 78 |..mov.se|csize,cx|
|00000d20| 09 3b 73 65 63 74 6f 72 | 20 73 69 7a 65 2c 0d 0a |.;sector| size,..|
|00000d30| 09 6d 6f 76 09 61 68 2c | 30 0d 0a 09 6d 6f 76 09 |.mov.ah,|0...mov.|
|00000d40| 62 6c 6b 73 69 7a 65 2c | 61 78 09 3b 73 65 63 73 |blksize,|ax.;secs|
|00000d50| 2f 62 6c 6f 63 6b 2e 0d | 0a 09 63 6c 63 09 09 09 |/block..|..clc...|
|00000d60| 3b 6e 6f 20 65 72 72 6f | 72 2c 0d 0a 67 64 31 3a |;no erro|r,..gd1:|
|00000d70| 09 72 65 74 0d 0a 70 61 | 67 65 0d 0a 3b 0d 0a 3b |.ret..pa|ge..;..;|
|00000d80| 52 65 61 64 20 74 68 65 | 20 65 6e 74 69 72 65 20 |Read the| entire |
|00000d90| 64 69 73 6b 20 6c 6f 6f | 6b 69 6e 67 20 66 6f 72 |disk loo|king for|
|00000da0| 20 62 61 64 20 62 6c 6f | 63 6b 73 2e 0d 0a 3b 57 | bad blo|cks...;W|
|00000db0| 68 65 6e 20 6f 6e 65 20 | 69 73 20 66 6f 75 6e 64 |hen one |is found|
|00000dc0| 2c 20 67 6f 20 6d 61 72 | 6b 20 69 74 20 61 73 20 |, go mar|k it as |
|00000dd0| 61 6e 20 61 6c 6c 6f 63 | 61 74 65 64 0d 0a 3b 62 |an alloc|ated..;b|
|00000de0| 61 64 20 62 6c 6f 63 6b | 2e 0d 0a 3b 0d 0a 66 69 |ad block|...;..fi|
|00000df0| 6e 64 62 61 64 3a 0d 0a | 09 6d 6f 76 09 62 6c 6f |ndbad:..|.mov.blo|
|00000e00| 63 6b 2c 30 09 09 3b 31 | 73 74 20 62 6c 6f 63 6b |ck,0..;1|st block|
|00000e10| 2c 0d 0a 09 6d 6f 76 09 | 62 61 64 63 6e 74 2c 30 |,...mov.|badcnt,0|
|00000e20| 09 3b 6e 6f 6e 65 20 79 | 65 74 2c 0d 0a 0d 0a 66 |.;none y|et,....f|
|00000e30| 62 31 3a 09 6d 6f 76 09 | 64 78 2c 6f 66 66 73 65 |b1:.mov.|dx,offse|
|00000e40| 74 20 62 6c 6b 73 74 72 | 20 3b 74 79 70 65 20 27 |t blkstr| ;type '|
|00000e50| 62 6c 6f 63 6b 20 27 0d | 0a 09 63 61 6c 6c 09 70 |block '.|..call.p|
|00000e60| 73 74 72 0d 0a 09 6d 6f | 76 09 62 78 2c 62 6c 6f |str...mo|v.bx,blo|
|00000e70| 63 6b 09 3b 62 6c 6f 63 | 6b 20 6e 75 6d 62 65 72 |ck.;bloc|k number|
|00000e80| 2c 0d 0a 09 63 61 6c 6c | 09 6f 75 74 64 65 63 0d |,...call|.outdec.|
|00000e90| 0a 09 63 61 6c 6c 09 72 | 65 61 64 62 6c 6b 09 09 |..call.r|eadblk..|
|00000ea0| 3b 72 65 61 64 20 61 20 | 62 6c 6f 63 6b 2c 0d 0a |;read a |block,..|
|00000eb0| 09 6a 6e 63 09 66 62 33 | 09 09 3b 69 66 20 62 61 |.jnc.fb3|..;if ba|
|00000ec0| 64 2c 20 0d 0a 09 69 6e | 63 09 62 61 64 63 6e 74 |d, ...in|c.badcnt|
|00000ed0| 09 09 3b 63 6f 75 6e 74 | 20 69 74 2c 0d 0a 09 6d |..;count| it,...m|
|00000ee0| 6f 76 09 64 78 2c 6f 66 | 66 73 65 74 20 62 61 64 |ov.dx,of|fset bad|
|00000ef0| 73 74 72 0d 0a 09 63 61 | 6c 6c 09 70 73 74 72 09 |str...ca|ll.pstr.|
|00000f00| 09 3b 74 79 70 65 20 27 | 62 61 64 27 0d 0a 09 63 |.;type '|bad'...c|
|00000f10| 61 6c 6c 09 6d 61 70 6f | 75 74 09 09 3b 6d 61 72 |all.mapo|ut..;mar|
|00000f20| 6b 20 62 61 64 2c 0d 0a | 09 6d 6f 76 09 64 78 2c |k bad,..|.mov.dx,|
|00000f30| 6f 66 66 73 65 74 20 63 | 6e 74 73 74 72 20 3b 65 |offset c|ntstr ;e|
|00000f40| 72 72 6f 72 20 69 66 20 | 63 61 6e 74 0d 0a 09 6a |rror if |cant...j|
|00000f50| 63 09 66 62 32 0d 0a 09 | 61 64 64 09 6e 65 77 62 |c.fb2...|add.newb|
|00000f60| 61 64 2c 63 78 09 3b 63 | 6f 75 6e 74 20 69 74 2c |ad,cx.;c|ount it,|
|00000f70| 0d 0a 09 6d 6f 76 09 64 | 78 2c 6f 66 66 73 65 74 |...mov.d|x,offset|
|00000f80| 20 61 6c 72 73 74 72 0d | 0a 09 6a 63 78 7a 09 66 | alrstr.|..jcxz.f|
|00000f90| 62 32 09 09 3b 61 6c 72 | 65 61 64 79 20 6d 61 72 |b2..;alr|eady mar|
|00000fa0| 6b 64 0d 0a 09 6d 6f 76 | 09 64 78 2c 6f 66 66 73 |kd...mov|.dx,offs|
|00000fb0| 65 74 20 6d 72 6b 73 74 | 72 0d 0a 66 62 32 3a 09 |et mrkst|r..fb2:.|
|00000fc0| 63 61 6c 6c 09 70 73 74 | 72 0d 0a 66 62 33 3a 09 |call.pst|r..fb3:.|
|00000fd0| 69 6e 63 09 62 6c 6f 63 | 6b 09 09 3b 6e 65 78 74 |inc.bloc|k..;next|
|00000fe0| 20 62 6c 6f 63 6b 2c 0d | 0a 09 64 65 63 09 62 6c | block,.|..dec.bl|
|00000ff0| 6b 63 6e 74 09 09 3b 61 | 6e 6f 74 68 65 72 2e 2e |kcnt..;a|nother..|
|00001000| 2e 0d 0a 09 6a 6e 7a 09 | 66 62 31 09 09 3b 6b 65 |....jnz.|fb1..;ke|
|00001010| 65 70 20 6c 6f 6f 6b 69 | 6e 67 2e 0d 0a 09 72 65 |ep looki|ng....re|
|00001020| 74 0d 0a 0d 0a 0d 0a 62 | 6c 6b 73 74 72 09 64 62 |t......b|lkstr.db|
|00001030| 09 63 72 2c 27 42 6c 6f | 63 6b 20 24 27 0d 0a 62 |.cr,'Blo|ck $'..b|
|00001040| 61 64 73 74 72 09 64 62 | 09 27 20 62 61 64 2c 24 |adstr.db|.' bad,$|
|00001050| 27 0d 0a 61 6c 72 73 74 | 72 09 64 62 09 27 20 61 |'..alrst|r.db.' a|
|00001060| 6c 72 65 61 64 79 20 6d | 61 72 6b 65 64 2e 27 2c |lready m|arked.',|
|00001070| 63 72 2c 6c 66 2c 27 24 | 27 0d 0a 6d 72 6b 73 74 |cr,lf,'$|'..mrkst|
|00001080| 72 09 64 62 09 27 20 6d | 61 70 70 65 64 20 6f 75 |r.db.' m|apped ou|
|00001090| 74 2e 27 2c 6c 66 2c 27 | 24 27 0d 0a 63 6e 74 73 |t.',lf,'|$'..cnts|
|000010a0| 74 72 09 64 62 09 27 20 | 61 6c 72 65 61 64 79 20 |tr.db.' |already |
|000010b0| 75 73 65 64 21 20 49 20 | 64 6f 6e 74 20 6b 6e 6f |used! I |dont kno|
|000010c0| 77 27 0d 0a 09 64 62 09 | 27 20 77 68 69 63 68 20 |w'...db.|' which |
|000010d0| 66 69 6c 65 2e 27 2c 6c | 66 2c 27 24 27 0d 0a 70 |file.',l|f,'$'..p|
|000010e0| 61 67 65 0d 0a 3b 0d 0a | 3b 4d 61 72 6b 20 74 68 |age..;..|;Mark th|
|000010f0| 65 20 63 75 72 72 65 6e | 74 20 62 6c 6f 63 6b 20 |e curren|t block |
|00001100| 61 73 20 62 61 64 20 69 | 6e 20 74 68 65 20 46 41 |as bad i|n the FA|
|00001110| 54 2e 0d 0a 3b 4d 75 6c | 74 69 70 6c 79 20 74 68 |T...;Mul|tiply th|
|00001120| 65 20 62 6c 6f 63 6b 20 | 6e 75 6d 62 65 72 20 62 |e block |number b|
|00001130| 79 20 31 2e 35 20 74 6f | 20 66 69 6e 64 20 74 68 |y 1.5 to| find th|
|00001140| 65 0d 0a 3b 62 6c 6f 63 | 6b 20 6e 75 6d 62 65 72 |e..;bloc|k number|
|00001150| 2c 20 28 61 63 74 75 61 | 6c 6c 79 20 2a 33 2c 20 |, (actua|lly *3, |
|00001160| 2f 32 29 20 61 6e 64 20 | 69 66 20 6e 6f 74 0d 0a |/2) and |if not..|
|00001170| 3b 75 73 65 64 2c 20 6d | 61 72 6b 20 69 74 20 62 |;used, m|ark it b|
|00001180| 61 64 2e 20 49 66 20 75 | 73 65 64 2c 20 72 65 70 |ad. If u|sed, rep|
|00001190| 6f 72 74 20 77 68 69 63 | 68 20 66 69 6c 65 0d 0a |ort whic|h file..|
|000011a0| 3b 69 74 27 73 20 69 6e | 2e 20 49 66 20 69 74 27 |;it's in|. If it'|
|000011b0| 73 20 61 6c 72 65 61 64 | 79 20 6d 61 70 70 65 64 |s alread|y mapped|
|000011c0| 20 61 73 20 62 61 64 2c | 20 0d 0a 3b 72 65 74 75 | as bad,| ..;retu|
|000011d0| 72 6e 20 43 58 20 3d 30 | 2c 20 65 6c 73 65 20 72 |rn CX =0|, else r|
|000011e0| 65 74 75 72 6e 20 43 58 | 3d 31 2e 0d 0a 3b 0d 0a |eturn CX|=1...;..|
|000011f0| 6d 61 70 6f 75 74 3a 0d | 0a 09 6d 6f 76 09 62 78 |mapout:.|..mov.bx|
|00001200| 2c 62 6c 6f 63 6b 09 3b | 62 6c 6f 63 6b 2c 0d 0a |,block.;|block,..|
|00001210| 09 73 68 6c 09 62 78 2c | 31 09 09 3b 74 69 6d 65 |.shl.bx,|1..;time|
|00001220| 73 20 32 2c 0d 0a 09 61 | 64 64 09 62 78 2c 62 6c |s 2,...a|dd.bx,bl|
|00001230| 6f 63 6b 09 3b 74 69 6d | 65 73 20 33 2c 0d 0a 09 |ock.;tim|es 3,...|
|00001240| 73 68 72 09 62 78 2c 31 | 09 09 3b 64 69 76 69 64 |shr.bx,1|..;divid|
|00001250| 65 20 62 79 20 32 2c 0d | 0a 09 6d 6f 76 09 61 78 |e by 2,.|..mov.ax|
|00001260| 2c 65 73 3a 5b 64 69 2b | 62 78 5d 09 3b 67 65 74 |,es:[di+|bx].;get|
|00001270| 20 77 6f 72 64 2c 0d 0a | 3b 0d 0a 3b 49 66 20 63 | word,..|;..;If c|
|00001280| 61 72 72 79 20 69 73 20 | 73 65 74 2c 20 77 65 20 |arry is |set, we |
|00001290| 77 61 6e 74 20 74 68 65 | 20 68 69 67 68 20 31 32 |want the| high 12|
|000012a0| 20 62 69 74 73 20 69 6e | 0d 0a 3b 74 68 65 20 77 | bits in|..;the w|
|000012b0| 6f 72 64 20 69 6e 20 41 | 58 2c 20 65 6c 73 65 20 |ord in A|X, else |
|000012c0| 74 68 65 20 6c 6f 77 20 | 31 32 20 62 69 74 73 2e |the low |12 bits.|
|000012d0| 20 53 65 74 20 43 48 0d | 0a 3b 61 73 20 74 68 65 | Set CH.|.;as the|
|000012e0| 20 73 68 69 66 74 20 63 | 6f 75 6e 74 2c 20 44 58 | shift c|ount, DX|
|000012f0| 20 61 73 20 74 68 65 20 | 6d 61 73 6b 2e 0d 0a 3b | as the |mask...;|
|00001300| 0d 0a 09 6d 6f 76 09 63 | 68 2c 30 09 09 3b 61 73 |...mov.c|h,0..;as|
|00001310| 73 75 6d 65 20 6c 6f 77 | 2c 0d 0a 09 6d 6f 76 09 |sume low|,...mov.|
|00001320| 64 78 2c 30 66 66 66 68 | 0d 0a 09 6a 6e 63 09 6d |dx,0fffh|...jnc.m|
|00001330| 6f 31 0d 0a 09 6d 6f 76 | 09 63 68 2c 34 09 09 3b |o1...mov|.ch,4..;|
|00001340| 65 6c 73 65 20 68 69 67 | 68 20 31 32 2c 0d 0a 09 |else hig|h 12,...|
|00001350| 6d 6f 76 09 64 78 2c 30 | 66 66 66 30 68 0d 0a 6d |mov.dx,0|fff0h..m|
|00001360| 6f 31 3a 09 61 6e 64 09 | 61 78 2c 64 78 09 09 3b |o1:.and.|ax,dx..;|
|00001370| 6d 61 73 6b 20 69 74 2c | 0d 0a 09 6d 6f 76 09 63 |mask it,|...mov.c|
|00001380| 6c 2c 63 68 0d 0a 09 73 | 68 72 09 61 78 2c 63 6c |l,ch...s|hr.ax,cl|
|00001390| 09 09 3b 73 68 69 66 74 | 20 69 74 2c 0d 0a 3b 0d |..;shift| it,..;.|
|000013a0| 0a 3b 41 58 20 69 73 20 | 74 68 65 20 62 6c 6f 63 |.;AX is |the bloc|
|000013b0| 6b 20 6e 75 6d 62 65 72 | 3b 20 69 66 20 69 74 27 |k number|; if it'|
|000013c0| 73 20 61 6e 79 74 68 69 | 6e 67 0d 0a 3b 62 75 74 |s anythi|ng..;but|
|000013d0| 20 30 30 30 20 6f 72 20 | 66 66 37 2c 20 72 65 74 | 000 or |ff7, ret|
|000013e0| 75 72 6e 20 77 69 74 68 | 20 63 61 72 72 79 20 73 |urn with| carry s|
|000013f0| 65 74 2c 20 0d 0a 3b 69 | 6e 64 69 63 61 74 69 6e |et, ..;i|ndicatin|
|00001400| 67 20 74 68 61 74 20 69 | 74 73 20 61 6c 72 65 61 |g that i|ts alrea|
|00001410| 64 79 20 75 73 65 64 2e | 0d 0a 3b 0d 0a 09 63 6d |dy used.|..;...cm|
|00001420| 70 09 61 78 2c 30 66 66 | 37 68 09 3b 69 66 20 66 |p.ax,0ff|7h.;if f|
|00001430| 66 37 2c 0d 0a 09 6a 65 | 09 6d 6f 32 09 09 3b 61 |f7,...je|.mo2..;a|
|00001440| 6c 72 65 61 64 79 20 6d | 61 72 6b 65 64 0d 0a 09 |lready m|arked...|
|00001450| 63 6d 70 09 61 78 2c 30 | 09 09 3b 69 66 20 61 6c |cmp.ax,0|..;if al|
|00001460| 6c 6f 63 61 74 65 64 2c | 0d 0a 09 6a 65 09 6d 6f |located,|...je.mo|
|00001470| 33 0d 0a 09 73 74 63 09 | 09 09 3b 65 72 72 6f 72 |3...stc.|..;error|
|00001480| 21 0d 0a 6d 6f 32 3a 09 | 6d 6f 76 09 63 78 2c 30 |!..mo2:.|mov.cx,0|
|00001490| 09 09 3b 6e 6f 6e 65 20 | 6d 61 70 70 65 64 2c 0d |..;none |mapped,.|
|000014a0| 0a 09 72 65 74 0d 0a 3b | 0d 0a 3b 42 61 64 20 75 |..ret..;|..;Bad u|
|000014b0| 6e 75 73 65 64 20 62 6c | 6f 63 6b 2e 20 4d 61 72 |nused bl|ock. Mar|
|000014c0| 6b 20 61 73 20 62 61 64 | 20 69 6e 20 74 68 65 20 |k as bad| in the |
|000014d0| 46 41 54 2e 0d 0a 3b 0d | 0a 6d 6f 33 3a 09 6d 6f |FAT...;.|.mo3:.mo|
|000014e0| 76 09 61 78 2c 30 66 66 | 37 68 09 3b 6d 61 72 6b |v.ax,0ff|7h.;mark|
|000014f0| 65 72 2c 0d 0a 09 6d 6f | 76 09 63 6c 2c 63 68 0d |er,...mo|v.cl,ch.|
|00001500| 0a 09 73 68 6c 09 61 78 | 2c 63 6c 09 09 3b 73 68 |..shl.ax|,cl..;sh|
|00001510| 69 66 74 20 69 74 2c 0d | 0a 09 6f 72 09 65 73 3a |ift it,.|..or.es:|
|00001520| 5b 64 69 2b 62 78 5d 2c | 61 78 09 3b 6d 61 72 6b |[di+bx],|ax.;mark|
|00001530| 20 69 74 2e 0d 0a 09 6d | 6f 76 09 63 78 2c 31 09 | it....m|ov.cx,1.|
|00001540| 09 3b 31 20 6d 61 70 70 | 65 64 2c 0d 0a 09 72 65 |.;1 mapp|ed,...re|
|00001550| 74 0d 0a 70 61 67 65 0d | 0a 3b 0d 0a 3b 52 65 61 |t..page.|.;..;Rea|
|00001560| 64 20 6f 6e 65 20 62 6c | 6f 63 6b 2c 20 72 65 74 |d one bl|ock, ret|
|00001570| 75 72 6e 20 63 61 72 72 | 79 20 73 65 74 20 69 66 |urn carr|y set if|
|00001580| 20 72 65 61 64 0d 0a 3b | 65 72 72 6f 72 2e 20 4c | read..;|error. L|
|00001590| 65 61 76 65 20 74 68 65 | 20 75 73 65 6c 65 73 73 |eave the| useless|
|000015a0| 20 64 61 74 61 20 69 6e | 20 74 68 65 20 62 75 66 | data in| the buf|
|000015b0| 66 65 72 0d 0a 3b 66 6f | 6c 6c 6f 77 69 6e 67 20 |fer..;fo|llowing |
|000015c0| 74 68 65 20 65 6e 64 20 | 6f 66 20 74 68 69 73 20 |the end |of this |
|000015d0| 70 72 6f 67 72 61 6d 2e | 0d 0a 3b 0d 0a 72 65 61 |program.|..;..rea|
|000015e0| 64 62 6c 6b 3a 0d 0a 09 | 6d 6f 76 09 61 78 2c 62 |dblk:...|mov.ax,b|
|000015f0| 6c 6f 63 6b 09 3b 66 69 | 6e 64 20 73 74 61 72 74 |lock.;fi|nd start|
|00001600| 0d 0a 09 6d 6f 76 09 63 | 78 2c 62 6c 6b 73 69 7a |...mov.c|x,blksiz|
|00001610| 65 09 3b 73 65 63 74 6f | 72 2c 0d 0a 09 6d 75 6c |e.;secto|r,...mul|
|00001620| 09 63 78 09 09 3b 43 58 | 3d 20 63 6f 75 6e 74 2c |.cx..;CX|= count,|
|00001630| 0d 0a 09 6d 6f 76 09 64 | 78 2c 61 78 09 09 3b 44 |...mov.d|x,ax..;D|
|00001640| 58 3d 20 73 65 63 74 6f | 72 2c 0d 0a 09 6d 6f 76 |X= secto|r,...mov|
|00001650| 09 61 6c 2c 64 69 73 6b | 0d 0a 09 6d 6f 76 09 62 |.al,disk|...mov.b|
|00001660| 78 2c 6f 66 66 73 65 74 | 20 62 6c 6b 62 75 66 20 |x,offset| blkbuf |
|00001670| 3b 6f 75 72 20 62 75 66 | 66 65 72 2c 0d 0a 09 69 |;our buf|fer,...i|
|00001680| 6e 74 09 32 35 68 09 09 | 3b 72 65 61 64 20 73 65 |nt.25h..|;read se|
|00001690| 63 74 6f 72 73 2c 0d 0a | 09 70 6f 70 09 64 78 09 |ctors,..|.pop.dx.|
|000016a0| 09 3b 70 6f 70 20 66 6c | 61 67 73 2c 0d 0a 09 72 |.;pop fl|ags,...r|
|000016b0| 65 74 0d 0a 70 61 67 65 | 0d 0a 3b 0d 0a 3b 4c 69 |et..page|..;..;Li|
|000016c0| 73 74 20 74 68 65 20 67 | 65 6e 65 72 61 6c 20 69 |st the g|eneral i|
|000016d0| 6e 66 6f 20 6f 6e 20 74 | 68 65 20 64 69 73 6b 2c |nfo on t|he disk,|
|000016e0| 20 6c 69 6b 65 0d 0a 3b | 73 65 63 74 6f 72 20 73 | like..;|sector s|
|000016f0| 69 7a 65 73 2c 20 65 74 | 63 2e 0d 0a 3b 0d 0a 6c |izes, et|c...;..l|
|00001700| 69 73 74 73 74 61 74 3a | 0d 0a 09 6d 6f 76 09 64 |iststat:|...mov.d|
|00001710| 78 2c 6f 66 66 73 65 74 | 20 73 74 31 73 74 72 0d |x,offset| st1str.|
|00001720| 0a 09 63 61 6c 6c 09 70 | 73 74 72 0d 0a 09 6d 6f |..call.p|str...mo|
|00001730| 76 09 61 6c 2c 64 69 73 | 6b 0d 0a 09 61 64 64 09 |v.al,dis|k...add.|
|00001740| 61 6c 2c 27 41 27 0d 0a | 09 63 61 6c 6c 09 6f 75 |al,'A'..|.call.ou|
|00001750| 74 61 0d 0a 09 6d 6f 76 | 09 64 78 2c 6f 66 66 73 |ta...mov|.dx,offs|
|00001760| 65 74 20 73 74 32 73 74 | 72 0d 0a 09 63 61 6c 6c |et st2st|r...call|
|00001770| 09 70 73 74 72 0d 0a 09 | 6d 6f 76 09 62 78 2c 62 |.pstr...|mov.bx,b|
|00001780| 6c 6b 63 6e 74 0d 0a 09 | 63 61 6c 6c 09 6f 75 74 |lkcnt...|call.out|
|00001790| 64 65 63 0d 0a 09 6d 6f | 76 09 64 78 2c 6f 66 66 |dec...mo|v.dx,off|
|000017a0| 73 65 74 20 73 74 33 73 | 74 72 0d 0a 09 63 61 6c |set st3s|tr...cal|
|000017b0| 6c 09 70 73 74 72 0d 0a | 09 72 65 74 0d 0a 0d 0a |l.pstr..|.ret....|
|000017c0| 3b 44 69 73 6b 20 41 3a | 2c 20 74 6f 74 61 6c 20 |;Disk A:|, total |
|000017d0| 6f 66 20 31 32 33 34 35 | 20 64 61 74 61 20 62 6c |of 12345| data bl|
|000017e0| 6f 63 6b 73 2e 0d 0a 0d | 0a 73 74 31 73 74 72 09 |ocks....|.st1str.|
|000017f0| 64 62 20 63 72 2c 6c 66 | 2c 27 44 69 73 6b 20 24 |db cr,lf|,'Disk $|
|00001800| 27 0d 0a 73 74 32 73 74 | 72 09 64 62 20 27 3a 2c |'..st2st|r.db ':,|
|00001810| 20 74 6f 74 61 6c 20 6f | 66 20 24 27 0d 0a 73 74 | total o|f $'..st|
|00001820| 33 73 74 72 09 64 62 20 | 27 20 64 61 74 61 20 62 |3str.db |' data b|
|00001830| 6c 6f 63 6b 73 2e 24 27 | 0d 0a 3b 0d 0a 3b 4c 69 |locks.$'|..;..;Li|
|00001840| 73 74 20 6f 75 74 20 74 | 68 65 20 62 61 64 20 74 |st out t|he bad t|
|00001850| 68 69 6e 67 73 20 61 62 | 6f 75 74 20 74 68 69 73 |hings ab|out this|
|00001860| 20 64 69 73 6b 2e 0d 0a | 3b 0d 0a 6c 69 73 74 62 | disk...|;..listb|
|00001870| 61 64 3a 0d 0a 09 6d 6f | 76 09 64 78 2c 6f 66 66 |ad:...mo|v.dx,off|
|00001880| 73 65 74 20 62 64 31 73 | 74 72 0d 0a 09 63 61 6c |set bd1s|tr...cal|
|00001890| 6c 09 70 73 74 72 0d 0a | 09 6d 6f 76 09 62 78 2c |l.pstr..|.mov.bx,|
|000018a0| 62 61 64 63 6e 74 0d 0a | 09 63 61 6c 6c 09 6f 75 |badcnt..|.call.ou|
|000018b0| 74 64 65 63 0d 0a 09 6d | 6f 76 09 64 78 2c 6f 66 |tdec...m|ov.dx,of|
|000018c0| 66 73 65 74 20 62 64 32 | 73 74 72 0d 0a 09 63 61 |fset bd2|str...ca|
|000018d0| 6c 6c 09 70 73 74 72 0d | 0a 09 6d 6f 76 09 62 78 |ll.pstr.|..mov.bx|
|000018e0| 2c 6e 65 77 62 61 64 0d | 0a 09 63 61 6c 6c 09 6f |,newbad.|..call.o|
|000018f0| 75 74 64 65 63 0d 0a 09 | 6d 6f 76 09 64 78 2c 6f |utdec...|mov.dx,o|
|00001900| 66 66 73 65 74 20 62 64 | 33 73 74 72 0d 0a 09 63 |ffset bd|3str...c|
|00001910| 61 6c 6c 09 70 73 74 72 | 0d 0a 09 72 65 74 0d 0a |all.pstr|...ret..|
|00001920| 0d 0a 3b 54 6f 74 61 6c | 20 6f 66 20 31 32 33 34 |..;Total| of 1234|
|00001930| 35 20 62 61 64 20 62 6c | 6f 63 6b 73 2c 20 66 6f |5 bad bl|ocks, fo|
|00001940| 75 6e 64 20 31 32 32 33 | 34 20 6d 6f 72 65 20 74 |und 1223|4 more t|
|00001950| 68 69 73 20 70 61 73 73 | 2e 0d 0a 62 64 31 73 74 |his pass|...bd1st|
|00001960| 72 09 64 62 20 63 72 2c | 27 54 6f 74 61 6c 20 6f |r.db cr,|'Total o|
|00001970| 66 20 24 27 09 09 3b 6e | 6f 74 65 20 6e 6f 20 6c |f $'..;n|ote no l|
|00001980| 69 6e 65 66 65 65 64 2e | 0d 0a 62 64 32 73 74 72 |inefeed.|..bd2str|
|00001990| 09 64 62 20 27 20 62 61 | 64 20 62 6c 6f 63 6b 73 |.db ' ba|d blocks|
|000019a0| 2c 20 66 6f 75 6e 64 20 | 24 27 0d 0a 62 64 33 73 |, found |$'..bd3s|
|000019b0| 74 72 09 64 62 20 27 20 | 6d 6f 72 65 20 74 68 69 |tr.db ' |more thi|
|000019c0| 73 20 70 61 73 73 2e 24 | 27 0d 0a 70 61 67 65 0d |s pass.$|'..page.|
|000019d0| 0a 3b 0d 0a 3b 47 65 6e | 65 72 61 6c 6c 79 20 75 |.;..;Gen|erally u|
|000019e0| 73 65 66 75 6c 20 73 79 | 73 74 65 6d 20 63 61 6c |seful sy|stem cal|
|000019f0| 6c 73 2e 0d 0a 3b 0d 0a | 70 73 74 72 3a 09 6d 6f |ls...;..|pstr:.mo|
|00001a00| 76 09 61 68 2c 39 0d 0a | 09 69 6e 74 09 33 33 0d |v.ah,9..|.int.33.|
|00001a10| 0a 09 72 65 74 0d 0a 3b | 0d 0a 3b 54 79 70 65 20 |..ret..;|..;Type |
|00001a20| 42 58 20 69 6e 20 64 65 | 63 69 6d 61 6c 2c 20 73 |BX in de|cimal, s|
|00001a30| 75 70 70 72 65 73 73 69 | 6e 67 20 6c 65 61 64 69 |uppressi|ng leadi|
|00001a40| 6e 67 0d 0a 3b 7a 65 72 | 6f 73 2e 0d 0a 3b 0d 0a |ng..;zer|os...;..|
|00001a50| 6f 75 74 64 65 63 3a 09 | 6d 6f 76 09 63 6c 2c 30 |outdec:.|mov.cl,0|
|00001a60| 09 3b 30 20 73 75 70 70 | 72 65 73 73 20 66 6c 61 |.;0 supp|ress fla|
|00001a70| 67 2c 0d 0a 09 6d 6f 76 | 09 64 78 2c 31 30 30 30 |g,...mov|.dx,1000|
|00001a80| 30 0d 0a 09 63 61 6c 6c | 09 72 73 64 69 76 0d 0a |0...call|.rsdiv..|
|00001a90| 09 6d 6f 76 09 64 78 2c | 31 30 30 30 0d 0a 09 63 |.mov.dx,|1000...c|
|00001aa0| 61 6c 6c 09 72 73 64 69 | 76 0d 0a 09 6d 6f 76 09 |all.rsdi|v...mov.|
|00001ab0| 64 78 2c 31 30 30 0d 0a | 09 63 61 6c 6c 09 72 73 |dx,100..|.call.rs|
|00001ac0| 64 69 76 0d 0a 09 6d 6f | 76 09 64 78 2c 31 30 0d |div...mo|v.dx,10.|
|00001ad0| 0a 09 63 61 6c 6c 09 72 | 73 64 69 76 0d 0a 09 6d |..call.r|sdiv...m|
|00001ae0| 6f 76 09 63 68 2c 62 6c | 0d 0a 09 6a 6d 70 09 6f |ov.ch,bl|...jmp.o|
|00001af0| 64 66 0d 0a 0d 0a 72 73 | 64 69 76 3a 09 6d 6f 76 |df....rs|div:.mov|
|00001b00| 09 63 68 2c 2d 31 09 3b | 69 74 65 72 61 74 69 6f |.ch,-1.;|iteratio|
|00001b10| 6e 20 2d 31 2c 0d 0a 72 | 73 31 3a 09 69 6e 63 09 |n -1,..r|s1:.inc.|
|00001b20| 63 68 09 3b 63 6f 75 6e | 74 2c 0d 0a 09 73 75 62 |ch.;coun|t,...sub|
|00001b30| 09 62 78 2c 64 78 09 3b | 73 75 62 74 72 61 63 74 |.bx,dx.;|subtract|
|00001b40| 2c 0d 0a 09 6a 6e 63 09 | 72 73 31 09 3b 74 69 6c |,...jnc.|rs1.;til|
|00001b50| 20 75 6e 64 65 72 66 6c | 6f 77 2c 0d 0a 09 61 64 | underfl|ow,...ad|
|00001b60| 64 09 62 78 2c 64 78 09 | 3b 61 64 6a 75 73 74 20 |d.bx,dx.|;adjust |
|00001b70| 62 61 63 6b 2c 0d 0a 09 | 63 6d 70 09 63 68 2c 30 |back,...|cmp.ch,0|
|00001b80| 09 3b 69 66 20 6e 6f 6e | 2d 7a 65 72 6f 2c 0d 0a |.;if non|-zero,..|
|00001b90| 09 6a 6e 65 09 6f 64 66 | 09 3b 74 79 70 65 20 69 |.jne.odf|.;type i|
|00001ba0| 74 2c 0d 0a 09 74 65 73 | 74 09 63 6c 2c 31 09 3b |t,...tes|t.cl,1.;|
|00001bb0| 64 6f 6e 74 20 74 79 70 | 65 20 30 27 73 0d 0a 09 |dont typ|e 0's...|
|00001bc0| 6a 6e 7a 09 6f 64 66 09 | 3b 69 66 20 6c 65 61 64 |jnz.odf.|;if lead|
|00001bd0| 69 6e 67 2c 0d 0a 09 72 | 65 74 0d 0a 0d 0a 6f 64 |ing,...r|et....od|
|00001be0| 66 3a 09 70 75 73 68 09 | 64 78 0d 0a 09 6d 6f 76 |f:.push.|dx...mov|
|00001bf0| 09 64 6c 2c 63 68 0d 0a | 09 61 64 64 09 64 6c 2c |.dl,ch..|.add.dl,|
|00001c00| 27 30 27 09 3b 41 53 43 | 49 49 2c 0d 0a 09 6d 6f |'0'.;ASC|II,...mo|
|00001c10| 76 09 61 68 2c 32 0d 0a | 09 69 6e 74 09 33 33 0d |v.ah,2..|.int.33.|
|00001c20| 0a 09 70 6f 70 09 64 78 | 0d 0a 09 6d 6f 76 09 63 |..pop.dx|...mov.c|
|00001c30| 6c 2c 31 09 3b 6e 6f 20 | 73 75 70 70 72 65 73 73 |l,1.;no |suppress|
|00001c40| 2c 0d 0a 09 72 65 74 0d | 0a 70 61 67 65 0d 0a 3b |,...ret.|.page..;|
|00001c50| 0d 0a 3b 4d 6f 72 65 20 | 73 79 73 74 65 6d 20 63 |..;More |system c|
|00001c60| 61 6c 6c 73 2e 0d 0a 3b | 0d 0a 73 65 6c 64 73 6b |alls...;|..seldsk|
|00001c70| 3a 09 6d 6f 76 09 64 6c | 2c 61 6c 09 09 3b 73 65 |:.mov.dl|,al..;se|
|00001c80| 6c 65 63 74 20 64 69 73 | 6b 2c 0d 0a 09 6d 6f 76 |lect dis|k,...mov|
|00001c90| 09 61 68 2c 30 65 68 0d | 0a 09 69 6e 74 09 33 33 |.ah,0eh.|..int.33|
|00001ca0| 0d 0a 09 72 65 74 0d 0a | 0d 0a 67 65 74 64 73 6b |...ret..|..getdsk|
|00001cb0| 3a 09 6d 6f 76 09 61 68 | 2c 31 39 68 0d 0a 09 69 |:.mov.ah|,19h...i|
|00001cc0| 6e 74 09 33 33 0d 0a 09 | 72 65 74 0d 0a 0d 0a 69 |nt.33...|ret....i|
|00001cd0| 6e 69 74 64 73 6b 3a 6d | 6f 76 09 61 68 2c 30 64 |nitdsk:m|ov.ah,0d|
|00001ce0| 68 0d 0a 09 69 6e 74 09 | 33 33 0d 0a 09 72 65 74 |h...int.|33...ret|
|00001cf0| 0d 0a 0d 0a 69 6e 61 3a | 09 6d 6f 76 09 61 68 2c |....ina:|.mov.ah,|
|00001d00| 30 63 68 09 09 3b 63 68 | 61 72 20 69 6e 20 77 69 |0ch..;ch|ar in wi|
|00001d10| 74 68 0d 0a 09 6d 6f 76 | 09 61 6c 2c 31 09 09 3b |th...mov|.al,1..;|
|00001d20| 66 6c 75 73 68 2e 0d 0a | 09 69 6e 74 09 33 33 0d |flush...|.int.33.|
|00001d30| 0a 09 72 65 74 0d 0a 0d | 0a 6f 75 74 61 3a 09 6d |..ret...|.outa:.m|
|00001d40| 6f 76 09 64 6c 2c 61 6c | 0d 0a 09 6d 6f 76 09 61 |ov.dl,al|...mov.a|
|00001d50| 68 2c 32 0d 0a 09 69 6e | 74 09 33 33 0d 0a 09 72 |h,2...in|t.33...r|
|00001d60| 65 74 0d 0a 0d 0a 62 6c | 6b 62 75 66 09 65 71 75 |et....bl|kbuf.equ|
|00001d70| 09 24 09 09 3b 62 6c 6f | 63 6b 20 62 75 66 66 65 |.$..;blo|ck buffe|
|00001d80| 72 2e 0d 0a 0d 0a 63 6f | 64 65 20 65 6e 64 73 0d |r.....co|de ends.|
|00001d90| 0a 0d 0a 09 65 6e 64 0d | 0a 1a 1a 1a 1a 1a 1a 1a |....end.|........|
|00001da0| 1a 1a 1a 1a 1a 1a 1a 1a | 1a 1a 1a 1a 1a 1a 1a 1a |........|........|
|00001db0| 1a 1a 1a 1a 1a 1a 1a 1a | 1a 1a 1a 1a 1a 1a 1a 1a |........|........|
|00001dc0| 1a 1a 1a 1a 1a 1a 1a 1a | 1a 1a 1a 1a 1a 1a 1a 1a |........|........|
|00001dd0| 1a 1a 1a 1a 1a 1a 1a 1a | 1a 1a 1a 1a 1a 1a 1a 1a |........|........|
|00001de0| 1a 1a 1a 1a 1a 1a 1a 1a | 1a 1a 1a 1a 1a 1a 1a 1a |........|........|
|00001df0| 1a 1a 1a 1a 1a 1a 1a 1a | 1a 1a 1a 1a 1a 1a 1a 1a |........|........|
|00001e00| 74 69 74 6c 65 20 73 63 | 61 76 65 6e 67 65 20 2d |title sc|avenge -|
|00001e10| 2d 20 4d 53 44 4f 53 20 | 62 61 64 20 62 6c 6f 63 |- MSDOS |bad bloc|
|00001e20| 6b 20 6d 61 70 70 65 72 | 0d 0a 3b 0d 0a 3b 2a 2a |k mapper|..;..;**|
|00001e30| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001e40| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001e50| 2a 2a 2a 2a 2a 2a 0d 0a | 3b 2a 09 09 09 09 09 2a |******..|;*.....*|
|00001e60| 0d 0a 3b 2a 09 09 53 43 | 41 56 45 4e 47 45 09 09 |..;*..SC|AVENGE..|
|00001e70| 2a 0d 0a 3b 2a 09 09 09 | 09 09 2a 0d 0a 3b 2a 09 |*..;*...|..*..;*.|
|00001e80| 4d 61 72 6b 20 62 61 64 | 20 62 6c 6f 63 6b 73 20 |Mark bad| blocks |
|00001e90| 6f 6e 20 4d 53 44 4f 53 | 20 09 2a 0d 0a 3b 2a 09 |on MSDOS| .*..;*.|
|00001ea0| 61 73 20 61 6c 6c 6f 63 | 61 74 65 64 20 69 6e 20 |as alloc|ated in |
|00001eb0| 74 68 65 20 46 41 54 2e | 09 2a 0d 0a 3b 2a 09 09 |the FAT.|.*..;*..|
|00001ec0| 09 09 09 2a 0d 0a 3b 2a | 09 54 2e 20 4a 65 6e 6e |...*..;*|.T. Jenn|
|00001ed0| 69 6e 67 73 20 35 20 4a | 75 6e 65 20 38 32 09 09 |ings 5 J|une 82..|
|00001ee0| 2a 0d 0a 3b 2a 09 20 20 | 63 72 65 61 74 65 64 20 |*..;*. |created |
|00001ef0| 31 35 20 53 65 70 74 2e | 20 38 32 09 09 2a 0d 0a |15 Sept.| 82..*..|
|00001f00| 3b 2a 09 09 09 09 09 2a | 0d 0a 3b 2a 2a 2a 2a 2a |;*.....*|..;*****|
|00001f10| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001f20| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001f30| 2a 2a 2a 0d 0a 3b 0d 0a | 3b 52 65 61 64 73 20 61 |***..;..|;Reads a|
|00001f40| 6c 6c 20 73 65 63 74 6f | 72 73 20 69 6e 20 6c 6f |ll secto|rs in lo|
|00001f50| 67 69 63 61 6c 20 4d 53 | 44 4f 53 20 62 6c 6f 63 |gical MS|DOS bloc|
|00001f60| 6b 73 0d 0a 3b 61 6e 64 | 20 6d 61 72 6b 73 20 74 |ks..;and| marks t|
|00001f70| 68 65 20 66 69 6c 65 20 | 61 6c 6c 6f 63 61 74 69 |he file |allocati|
|00001f80| 6f 6e 20 74 61 62 6c 65 | 73 20 73 75 63 68 0d 0a |on table|s such..|
|00001f90| 3b 74 68 61 74 20 74 68 | 65 20 62 6c 6f 63 6b 73 |;that th|e blocks|
|00001fa0| 20 61 72 65 20 70 65 72 | 6d 61 6e 65 6e 74 6c 79 | are per|manently|
|00001fb0| 20 61 6c 6c 6f 63 61 74 | 65 64 0d 0a 3b 77 68 65 | allocat|ed..;whe|
|00001fc0| 72 65 20 43 48 4b 44 53 | 4b 20 77 69 6c 6c 20 6e |re CHKDS|K will n|
|00001fd0| 6f 74 20 64 65 61 6c 6c | 6f 63 61 74 65 20 74 68 |ot deall|ocate th|
|00001fe0| 65 6d 2e 0d 0a 3b 0d 0a | 3b 0d 0a 3b 54 68 69 73 |em...;..|;..;This|
|00001ff0| 20 76 65 72 73 69 6f 6e | 20 77 6f 72 6b 73 20 6f | version| works o|
|00002000| 6e 20 61 6e 79 20 32 2e | 78 78 20 4d 53 44 4f 53 |n any 2.|xx MSDOS|
|00002010| 20 6f 72 0d 0a 3b 50 43 | 44 4f 53 2c 20 6f 6e 20 | or..;PC|DOS, on |
|00002020| 61 6e 79 20 6d 65 64 69 | 61 20 74 79 70 65 2c 20 |any medi|a type, |
|00002030| 66 69 78 65 64 20 6f 72 | 20 72 65 6d 6f 76 61 62 |fixed or| removab|
|00002040| 6c 65 2e 0d 0a 3b 4f 6e | 65 20 28 6d 61 6a 6f 72 |le...;On|e (major|
|00002050| 29 20 6c 69 6d 69 74 61 | 74 69 6f 6e 3a 20 69 74 |) limita|tion: it|
|00002060| 20 77 69 6c 6c 20 6e 6f | 74 20 6d 61 70 20 6f 75 | will no|t map ou|
|00002070| 74 0d 0a 3b 62 6c 6f 63 | 6b 73 20 74 68 61 74 20 |t..;bloc|ks that |
|00002080| 61 72 65 20 61 6c 72 65 | 61 64 79 20 61 6c 6c 6f |are alre|ady allo|
|00002090| 63 61 74 65 64 20 74 6f | 20 61 20 66 69 6c 65 3b |cated to| a file;|
|000020a0| 0d 0a 3b 69 74 20 77 69 | 6c 6c 20 73 61 79 20 22 |..;it wi|ll say "|
|000020b0| 62 6c 6f 63 6b 20 75 73 | 65 64 22 2c 20 62 75 74 |block us|ed", but|
|000020c0| 20 77 6f 6e 27 74 20 74 | 65 6c 6c 20 79 6f 75 0d | won't t|ell you.|
|000020d0| 0a 3b 77 68 69 63 68 20 | 66 69 6c 65 20 69 74 20 |.;which |file it |
|000020e0| 69 73 20 69 6e 2e 0d 0a | 3b 0d 0a 3b 49 66 20 53 |is in...|;..;If S|
|000020f0| 43 41 56 45 4e 47 45 20 | 66 69 6e 64 73 20 61 6e |CAVENGE |finds an|
|00002100| 79 20 62 61 64 20 62 6c | 6f 63 6b 73 2c 20 69 74 |y bad bl|ocks, it|
|00002110| 20 77 69 6c 6c 20 61 73 | 6b 0d 0a 3b 79 6f 75 20 | will as|k..;you |
|00002120| 77 68 65 74 68 65 72 20 | 6f 72 20 6e 6f 74 20 79 |whether |or not y|
|00002130| 6f 75 20 77 61 6e 74 20 | 74 68 65 20 64 69 73 6b |ou want |the disk|
|00002140| 20 75 70 64 61 74 65 64 | 2e 0d 0a 3b 59 6f 75 20 | updated|...;You |
|00002150| 63 61 6e 20 73 61 66 65 | 6c 79 20 72 75 6e 20 69 |can safe|ly run i|
|00002160| 74 20 6a 75 73 74 20 74 | 6f 20 73 65 65 20 69 66 |t just t|o see if|
|00002170| 20 74 68 65 20 64 69 73 | 6b 20 0d 0a 3b 69 73 20 | the dis|k ..;is |
|00002180| 4f 4b 2e 0d 0a 3b 0d 0a | 63 72 09 65 71 75 09 30 |OK...;..|cr.equ.0|
|00002190| 64 68 0d 0a 6c 66 09 65 | 71 75 09 30 61 68 0d 0a |dh..lf.e|qu.0ah..|
|000021a0| 70 61 67 65 0d 0a 63 67 | 72 6f 75 70 20 67 72 6f |page..cg|roup gro|
|000021b0| 75 70 20 63 6f 64 65 0d | 0a 63 6f 64 65 20 73 65 |up code.|.code se|
|000021c0| 67 6d 65 6e 74 20 62 79 | 74 65 20 70 75 62 6c 69 |gment by|te publi|
|000021d0| 63 20 27 63 6f 64 65 27 | 0d 0a 61 73 73 75 6d 65 |c 'code'|..assume|
|000021e0| 20 63 73 3a 63 67 72 6f | 75 70 2c 64 73 3a 63 67 | cs:cgro|up,ds:cg|
|000021f0| 72 6f 75 70 2c 73 73 3a | 63 67 72 6f 75 70 0d 0a |roup,ss:|cgroup..|
|00002200| 3b 0d 0a 3b 4d 53 44 4f | 53 20 70 61 67 65 20 30 |;..;MSDO|S page 0|
|00002210| 20 73 74 75 66 66 2e 0d | 0a 3b 0d 0a 09 6f 72 67 | stuff..|.;...org|
|00002220| 09 35 63 68 0d 0a 74 66 | 63 62 20 6c 61 62 65 6c |.5ch..tf|cb label|
|00002230| 20 62 79 74 65 0d 0a 0d | 0a 09 6f 72 67 09 38 30 | byte...|..org.80|
|00002240| 68 0d 0a 74 62 75 66 66 | 20 6c 61 62 65 6c 20 62 |h..tbuff| label b|
|00002250| 79 74 65 0d 0a 0d 0a 09 | 6f 72 67 09 31 30 30 68 |yte.....|org.100h|
|00002260| 0d 0a 73 63 61 76 65 6e | 67 65 3a 0d 0a 09 6a 6d |..scaven|ge:...jm|
|00002270| 70 09 73 74 61 72 74 0d | 0a 3b 0d 0a 3b 44 69 73 |p.start.|.;..;Dis|
|00002280| 6b 20 70 61 72 61 6d 65 | 74 65 72 73 3a 0d 0a 3b |k parame|ters:..;|
|00002290| 0d 0a 62 6c 6b 63 6e 74 | 09 64 77 09 28 3f 29 09 |..blkcnt|.dw.(?).|
|000022a0| 3b 62 6c 6f 63 6b 73 20 | 74 68 69 73 20 64 69 73 |;blocks |this dis|
|000022b0| 6b 0d 0a 62 6c 6b 73 69 | 7a 65 09 64 77 09 28 3f |k..blksi|ze.dw.(?|
|000022c0| 29 09 3b 73 65 63 74 6f | 72 73 20 70 65 72 20 62 |).;secto|rs per b|
|000022d0| 6c 6f 63 6b 0d 0a 73 65 | 63 73 69 7a 65 09 64 77 |lock..se|csize.dw|
|000022e0| 09 28 3f 29 09 3b 70 68 | 79 73 2e 20 73 65 63 74 |.(?).;ph|ys. sect|
|000022f0| 6f 72 20 73 69 7a 65 0d | 0a 62 61 64 63 6e 74 09 |or size.|.badcnt.|
|00002300| 64 77 09 28 3f 29 09 3b | 23 20 62 61 64 20 62 6c |dw.(?).;|# bad bl|
|00002310| 6f 63 6b 73 20 66 6f 75 | 6e 64 0d 0a 6e 65 77 62 |ocks fou|nd..newb|
|00002320| 61 64 09 64 77 09 28 3f | 29 09 3b 6e 65 77 20 62 |ad.dw.(?|).;new b|
|00002330| 61 64 20 6f 6e 65 73 0d | 0a 62 6c 6f 63 6b 09 64 |ad ones.|.block.d|
|00002340| 77 09 28 3f 29 09 3b 63 | 75 72 72 65 6e 74 20 62 |w.(?).;c|urrent b|
|00002350| 6c 6f 63 6b 0d 0a 73 65 | 63 74 6f 72 09 64 77 09 |lock..se|ctor.dw.|
|00002360| 28 3f 29 09 3b 73 65 63 | 74 6f 72 20 74 6f 20 72 |(?).;sec|tor to r|
|00002370| 65 61 64 0d 0a 64 69 73 | 6b 09 64 62 09 28 3f 29 |ead..dis|k.db.(?)|
|00002380| 09 3b 73 65 6c 65 63 74 | 65 64 20 64 69 73 6b 0d |.;select|ed disk.|
|00002390| 0a 63 75 72 64 73 6b 09 | 64 62 09 28 3f 29 09 3b |.curdsk.|db.(?).;|
|000023a0| 63 75 72 72 65 6e 74 20 | 64 69 73 6b 2e 0d 0a 66 |current |disk...f|
|000023b0| 61 74 73 65 63 09 64 77 | 09 28 3f 29 09 3b 31 73 |atsec.dw|.(?).;1s|
|000023c0| 74 20 46 41 54 20 73 65 | 63 74 6f 72 2c 0d 0a 66 |t FAT se|ctor,..f|
|000023d0| 61 74 63 6e 74 09 64 77 | 09 28 3f 29 09 3b 46 41 |atcnt.dw|.(?).;FA|
|000023e0| 54 20 73 65 63 20 63 6f | 75 6e 74 2e 0d 0a 0d 0a |T sec co|unt.....|
|000023f0| 09 64 77 20 31 32 38 20 | 64 75 70 20 28 3f 29 0d |.dw 128 |dup (?).|
|00002400| 0a 73 74 61 63 6b 09 64 | 77 09 28 3f 29 09 3b 77 |.stack.d|w.(?).;w|
|00002410| 68 61 74 20 65 6c 73 65 | 0d 0a 70 61 67 65 0d 0a |hat else|..page..|
|00002420| 3b 0d 0a 3b 53 61 79 20 | 77 68 6f 20 77 65 20 61 |;..;Say |who we a|
|00002430| 72 65 2c 20 64 65 73 63 | 72 69 62 65 20 74 68 65 |re, desc|ribe the|
|00002440| 20 64 69 73 6b 20 77 65 | 20 61 72 65 0d 0a 3b 61 | disk we| are..;a|
|00002450| 62 6f 75 74 20 74 6f 20 | 66 69 78 2c 20 61 73 6b |bout to |fix, ask|
|00002460| 20 74 6f 20 63 6f 6e 74 | 69 6e 75 65 20 6f 72 20 | to cont|inue or |
|00002470| 61 62 6f 72 74 2e 0d 0a | 3b 0d 0a 73 74 61 72 74 |abort...|;..start|
|00002480| 3a 09 6d 6f 76 09 61 78 | 2c 63 73 0d 0a 09 6d 6f |:.mov.ax|,cs...mo|
|00002490| 76 09 64 73 2c 61 78 0d | 0a 09 6d 6f 76 09 73 73 |v.ds,ax.|..mov.ss|
|000024a0| 2c 61 78 0d 0a 09 6d 6f | 76 09 73 70 2c 6f 66 66 |,ax...mo|v.sp,off|
|000024b0| 73 65 74 20 73 74 61 63 | 6b 0d 0a 0d 0a 09 6d 6f |set stac|k.....mo|
|000024c0| 76 09 64 78 2c 6f 66 66 | 73 65 74 20 73 69 67 6e |v.dx,off|set sign|
|000024d0| 6f 6e 0d 0a 09 63 61 6c | 6c 09 70 73 74 72 0d 0a |on...cal|l.pstr..|
|000024e0| 09 63 61 6c 6c 09 73 65 | 74 75 70 09 09 3b 67 65 |.call.se|tup..;ge|
|000024f0| 74 20 64 69 73 6b 20 73 | 74 75 66 66 0d 0a 09 6a |t disk s|tuff...j|
|00002500| 6e 63 09 73 74 31 0d 0a | 09 09 63 61 6c 6c 09 70 |nc.st1..|..call.p|
|00002510| 73 74 72 0d 0a 09 09 69 | 6e 74 09 33 32 09 3b 65 |str....i|nt.32.;e|
|00002520| 72 72 6f 72 2e 0d 0a 0d | 0a 73 74 31 3a 09 63 61 |rror....|.st1:.ca|
|00002530| 6c 6c 09 6c 69 73 74 73 | 74 61 74 09 3b 64 65 73 |ll.lists|tat.;des|
|00002540| 63 72 69 62 65 20 64 73 | 6b 0d 0a 09 6d 6f 76 09 |cribe ds|k...mov.|
|00002550| 64 78 2c 6f 66 66 73 65 | 74 20 63 6f 6e 74 73 74 |dx,offse|t contst|
|00002560| 72 0d 0a 09 63 61 6c 6c | 09 70 73 74 72 09 09 3b |r...call|.pstr..;|
|00002570| 74 79 70 65 20 61 6e 79 | 20 6b 65 79 2e 2e 0d 0a |type any| key....|
|00002580| 09 63 61 6c 6c 09 69 6e | 61 0d 0a 3b 0d 0a 3b 46 |.call.in|a..;..;F|
|00002590| 69 6e 64 20 61 6c 6c 20 | 74 68 65 20 62 61 64 20 |ind all |the bad |
|000025a0| 62 6c 6f 63 6b 73 2c 20 | 69 66 20 61 6e 79 2c 20 |blocks, |if any, |
|000025b0| 64 69 73 70 6c 61 79 20 | 74 68 65 6d 2c 0d 0a 3b |display |them,..;|
|000025c0| 61 73 6b 20 69 66 20 77 | 65 20 73 68 6f 75 6c 64 |ask if w|e should|
|000025d0| 20 75 70 64 61 74 65 20 | 74 68 65 20 46 41 54 2e | update |the FAT.|
|000025e0| 20 49 66 20 73 6f 2c 20 | 77 72 69 74 65 0d 0a 3b | If so, |write..;|
|000025f0| 69 74 20 6f 75 74 2e 0d | 0a 3b 0d 0a 09 6d 6f 76 |it out..|.;...mov|
|00002600| 09 64 78 2c 6f 66 66 73 | 65 74 20 63 72 6c 66 0d |.dx,offs|et crlf.|
|00002610| 0a 09 63 61 6c 6c 09 70 | 73 74 72 0d 0a 09 63 61 |..call.p|str...ca|
|00002620| 6c 6c 09 66 69 6e 64 62 | 61 64 09 09 3b 6d 61 70 |ll.findb|ad..;map|
|00002630| 20 62 61 64 2c 0d 0a 09 | 63 61 6c 6c 09 6c 69 73 | bad,...|call.lis|
|00002640| 74 62 61 64 09 09 3b 6c | 69 73 74 20 74 68 65 6d |tbad..;l|ist them|
|00002650| 2c 0d 0a 09 63 6d 70 09 | 6e 65 77 62 61 64 2c 30 |,...cmp.|newbad,0|
|00002660| 09 3b 69 66 20 6e 65 77 | 20 62 61 64 0d 0a 09 6a |.;if new| bad...j|
|00002670| 65 09 73 74 32 09 09 3b | 62 6c 6f 63 6b 73 2e 2e |e.st2..;|blocks..|
|00002680| 2e 0d 0a 0d 0a 09 6d 6f | 76 09 64 78 2c 6f 66 66 |......mo|v.dx,off|
|00002690| 73 65 74 20 75 70 64 73 | 74 72 20 3b 61 73 6b 20 |set upds|tr ;ask |
|000026a0| 69 66 20 77 65 0d 0a 09 | 63 61 6c 6c 09 70 73 74 |if we...|call.pst|
|000026b0| 72 09 09 3b 73 68 6f 75 | 6c 64 20 75 70 64 61 74 |r..;shou|ld updat|
|000026c0| 65 0d 0a 09 63 61 6c 6c | 09 69 6e 61 0d 0a 09 61 |e...call|.ina...a|
|000026d0| 6e 64 09 61 6c 2c 35 66 | 68 0d 0a 09 63 6d 70 09 |nd.al,5f|h...cmp.|
|000026e0| 61 6c 2c 27 59 27 0d 0a | 09 6a 6e 65 09 73 74 32 |al,'Y'..|.jne.st2|
|000026f0| 0d 0a 09 6d 6f 76 09 61 | 6c 2c 64 69 73 6b 09 09 |...mov.a|l,disk..|
|00002700| 3b 77 72 69 74 65 20 6f | 75 74 20 74 68 65 0d 0a |;write o|ut the..|
|00002710| 09 6d 6f 76 09 64 78 2c | 66 61 74 73 65 63 09 3b |.mov.dx,|fatsec.;|
|00002720| 46 41 54 2c 0d 0a 09 6d | 6f 76 09 63 78 2c 66 61 |FAT,...m|ov.cx,fa|
|00002730| 74 63 6e 74 0d 0a 09 6d | 6f 76 09 62 78 2c 6f 66 |tcnt...m|ov.bx,of|
|00002740| 66 73 65 74 20 66 61 74 | 62 75 66 0d 0a 09 69 6e |fset fat|buf...in|
|00002750| 74 09 32 36 68 0d 0a 09 | 70 6f 70 09 61 78 09 09 |t.26h...|pop.ax..|
|00002760| 3b 70 6f 70 20 66 6c 61 | 67 73 0d 0a 0d 0a 73 74 |;pop fla|gs....st|
|00002770| 32 3a 09 6d 6f 76 09 61 | 6c 2c 63 75 72 64 73 6b |2:.mov.a|l,curdsk|
|00002780| 09 3b 72 65 73 65 6c 65 | 63 74 20 74 68 65 0d 0a |.;resele|ct the..|
|00002790| 09 63 61 6c 6c 09 73 65 | 6c 64 73 6b 09 09 3b 6f |.call.se|ldsk..;o|
|000027a0| 72 69 67 69 6e 61 6c 20 | 64 69 73 6b 0d 0a 09 69 |riginal |disk...i|
|000027b0| 6e 74 09 33 32 0d 0a 0d | 0a 73 69 67 6e 6f 6e 09 |nt.32...|.signon.|
|000027c0| 64 62 09 63 72 2c 6c 66 | 2c 27 4d 53 44 4f 53 20 |db.cr,lf|,'MSDOS |
|000027d0| 32 2e 30 30 20 42 61 64 | 20 53 65 63 74 6f 72 20 |2.00 Bad| Sector |
|000027e0| 4d 61 70 70 65 72 27 0d | 0a 09 64 62 09 63 72 2c |Mapper'.|..db.cr,|
|000027f0| 6c 66 2c 27 20 20 54 2e | 20 4a 65 6e 6e 69 6e 67 |lf,' T.| Jenning|
|00002800| 73 20 35 20 4a 75 6e 65 | 20 38 33 27 0d 0a 09 64 |s 5 June| 83'...d|
|00002810| 62 09 27 24 27 0d 0a 63 | 6f 6e 74 73 74 72 09 64 |b.'$'..c|ontstr.d|
|00002820| 62 09 63 72 2c 6c 66 2c | 27 54 79 70 65 20 5e 43 |b.cr,lf,|'Type ^C|
|00002830| 20 74 6f 20 61 62 6f 72 | 74 2c 20 61 6e 79 20 27 | to abor|t, any '|
|00002840| 0d 0a 09 64 62 09 27 6f | 74 68 65 72 20 6b 65 79 |...db.'o|ther key|
|00002850| 20 74 6f 20 63 6f 6e 74 | 69 6e 75 65 3a 20 24 27 | to cont|inue: $'|
|00002860| 0d 0a 75 70 64 73 74 72 | 09 64 62 09 63 72 2c 6c |..updstr|.db.cr,l|
|00002870| 66 2c 6c 66 2c 27 20 57 | 61 6e 74 20 74 68 65 20 |f,lf,' W|ant the |
|00002880| 64 69 73 6b 20 75 70 64 | 61 74 65 64 3f 20 5b 79 |disk upd|ated? [y|
|00002890| 2c 6e 5d 20 3a 24 27 0d | 0a 63 72 6c 66 09 64 62 |,n] :$'.|.crlf.db|
|000028a0| 09 63 72 2c 6c 66 2c 27 | 24 27 0d 0a 70 61 67 65 |.cr,lf,'|$'..page|
|000028b0| 0d 0a 3b 0d 0a 3b 47 65 | 74 20 74 68 65 20 64 61 |..;..;Ge|t the da|
|000028c0| 74 61 20 6f 6e 20 74 68 | 65 20 73 70 65 63 69 66 |ta on th|e specif|
|000028d0| 69 65 64 20 64 69 73 6b | 2e 20 52 65 74 75 72 6e |ied disk|. Return|
|000028e0| 20 0d 0a 3b 63 61 72 72 | 79 20 69 66 20 6e 6f 20 | ..;carr|y if no |
|000028f0| 64 72 69 76 65 20 73 70 | 65 63 69 66 69 65 64 2e |drive sp|ecified.|
|00002900| 20 52 65 74 75 72 6e 73 | 20 45 53 3a 44 49 0d 0a | Returns| ES:DI..|
|00002910| 3b 70 6f 69 6e 74 69 6e | 67 20 74 6f 20 74 68 65 |;pointin|g to the|
|00002920| 20 46 41 54 20 66 6f 72 | 20 74 68 65 20 73 65 6c | FAT for| the sel|
|00002930| 65 63 74 65 64 20 64 72 | 69 76 65 2e 0d 0a 3b 0d |ected dr|ive...;.|
|00002940| 0a 73 65 74 75 70 3a 09 | 63 61 6c 6c 09 69 6e 69 |.setup:.|call.ini|
|00002950| 74 64 73 6b 09 09 3b 72 | 65 73 65 74 20 64 73 6b |tdsk..;r|eset dsk|
|00002960| 20 73 79 73 2c 0d 0a 09 | 63 61 6c 6c 09 67 65 74 | sys,...|call.get|
|00002970| 64 73 6b 09 09 3b 67 65 | 74 20 63 75 72 72 65 6e |dsk..;ge|t curren|
|00002980| 74 2c 0d 0a 09 6d 6f 76 | 09 63 75 72 64 73 6b 2c |t,...mov|.curdsk,|
|00002990| 61 6c 09 3b 73 61 76 65 | 20 69 74 2c 0d 0a 09 6d |al.;save| it,...m|
|000029a0| 6f 76 09 61 6c 2c 74 66 | 63 62 09 09 3b 6d 61 6b |ov.al,tf|cb..;mak|
|000029b0| 65 20 73 75 72 65 20 61 | 0d 0a 09 63 6d 70 09 61 |e sure a|...cmp.a|
|000029c0| 6c 2c 30 09 09 3b 6e 65 | 77 20 6f 6e 65 20 73 70 |l,0..;ne|w one sp|
|000029d0| 65 63 27 64 0d 0a 09 73 | 74 63 09 09 09 3b 71 75 |ec'd...s|tc...;qu|
|000029e0| 69 74 20 69 66 20 6e 6f | 6e 65 2c 0d 0a 09 6d 6f |it if no|ne,...mo|
|000029f0| 76 09 64 78 2c 6f 66 66 | 73 65 74 20 73 74 72 73 |v.dx,off|set strs|
|00002a00| 74 72 0d 0a 09 6a 7a 09 | 67 64 31 0d 0a 09 64 65 |tr...jz.|gd1...de|
|00002a10| 63 09 61 6c 09 09 3b 6d | 61 6b 65 20 30 2d 4e 2c |c.al..;m|ake 0-N,|
|00002a20| 0d 0a 09 6d 6f 76 09 64 | 69 73 6b 2c 61 6c 0d 0a |...mov.d|isk,al..|
|00002a30| 09 63 61 6c 6c 09 73 65 | 6c 64 73 6b 09 09 3b 73 |.call.se|ldsk..;s|
|00002a40| 65 6c 65 63 74 2c 0d 0a | 0d 0a 09 70 75 73 68 09 |elect,..|...push.|
|00002a50| 64 73 09 09 3b 73 61 76 | 65 20 6c 6f 63 61 6c 20 |ds..;sav|e local |
|00002a60| 44 53 2c 0d 0a 09 6d 6f | 76 09 61 68 2c 31 62 68 |DS,...mo|v.ah,1bh|
|00002a70| 0d 0a 09 69 6e 74 09 33 | 33 0d 0a 09 70 6f 70 09 |...int.3|3...pop.|
|00002a80| 64 73 0d 0a 09 6d 6f 76 | 09 62 6c 6b 63 6e 74 2c |ds...mov|.blkcnt,|
|00002a90| 64 78 09 3b 73 61 76 65 | 20 23 20 62 6c 6f 63 6b |dx.;save| # block|
|00002aa0| 73 2c 0d 0a 09 6d 6f 76 | 09 73 65 63 73 69 7a 65 |s,...mov|.secsize|
|00002ab0| 2c 63 78 09 3b 73 65 63 | 74 6f 72 20 73 69 7a 65 |,cx.;sec|tor size|
|00002ac0| 2c 0d 0a 09 6d 6f 76 09 | 61 68 2c 30 0d 0a 09 6d |,...mov.|ah,0...m|
|00002ad0| 6f 76 09 62 6c 6b 73 69 | 7a 65 2c 61 78 09 3b 73 |ov.blksi|ze,ax.;s|
|00002ae0| 65 63 73 2f 62 6c 6f 63 | 6b 2e 0d 0a 0d 0a 09 70 |ecs/bloc|k......p|
|00002af0| 75 73 68 09 64 73 09 09 | 3b 6e 6f 77 20 67 65 74 |ush.ds..|;now get|
|00002b00| 20 74 68 65 0d 0a 09 6d | 6f 76 09 64 6c 2c 64 69 | the...m|ov.dl,di|
|00002b10| 73 6b 0d 0a 09 69 6e 63 | 09 64 6c 09 09 3b 64 72 |sk...inc|.dl..;dr|
|00002b20| 69 76 65 20 31 3d 41 2c | 20 62 3d 32 0d 0a 09 6d |ive 1=A,| b=2...m|
|00002b30| 6f 76 09 61 68 2c 35 30 | 09 09 3b 46 41 54 2c 0d |ov.ah,50|..;FAT,.|
|00002b40| 0a 09 69 6e 74 09 33 33 | 09 09 3b 67 65 74 20 74 |..int.33|..;get t|
|00002b50| 68 65 20 44 50 42 2c 0d | 0a 09 6d 6f 76 09 63 78 |he DPB,.|..mov.cx|
|00002b60| 2c 5b 62 78 2b 31 35 5d | 09 3b 43 58 3d 20 73 65 |,[bx+15]|.;CX= se|
|00002b70| 63 20 63 6f 75 6e 74 2c | 0d 0a 09 6d 6f 76 09 63 |c count,|...mov.c|
|00002b80| 68 2c 30 0d 0a 09 6d 6f | 76 09 64 78 2c 5b 62 78 |h,0...mo|v.dx,[bx|
|00002b90| 2b 36 5d 09 3b 44 58 3d | 20 31 73 74 20 73 65 63 |+6].;DX=| 1st sec|
|00002ba0| 2c 0d 0a 09 70 6f 70 09 | 64 73 0d 0a 09 6d 6f 76 |,...pop.|ds...mov|
|00002bb0| 09 66 61 74 63 6e 74 2c | 63 78 09 3b 73 61 76 65 |.fatcnt,|cx.;save|
|00002bc0| 20 62 6f 74 68 2c 0d 0a | 09 6d 6f 76 09 66 61 74 | both,..|.mov.fat|
|00002bd0| 73 65 63 2c 64 78 0d 0a | 0d 0a 09 6d 6f 76 09 61 |sec,dx..|...mov.a|
|00002be0| 6c 2c 64 69 73 6b 09 09 | 3b 41 4c 3d 20 64 72 69 |l,disk..|;AL= dri|
|00002bf0| 76 65 20 23 2c 0d 0a 09 | 6d 6f 76 09 62 78 2c 6f |ve #,...|mov.bx,o|
|00002c00| 66 66 73 65 74 20 66 61 | 74 62 75 66 20 3b 44 53 |ffset fa|tbuf ;DS|
|00002c10| 3a 42 58 3d 20 62 75 66 | 66 65 72 0d 0a 09 69 6e |:BX= buf|fer...in|
|00002c20| 74 09 32 35 68 09 09 3b | 72 65 61 64 20 74 68 65 |t.25h..;|read the|
|00002c30| 20 46 41 54 2c 0d 0a 09 | 70 6f 70 09 61 78 09 09 | FAT,...|pop.ax..|
|00002c40| 3b 70 6f 70 20 66 6c 61 | 67 73 0d 0a 09 6d 6f 76 |;pop fla|gs...mov|
|00002c50| 09 64 78 2c 6f 66 66 73 | 65 74 20 62 73 63 73 74 |.dx,offs|et bscst|
|00002c60| 72 0d 0a 67 64 31 3a 09 | 72 65 74 0d 0a 73 74 72 |r..gd1:.|ret..str|
|00002c70| 73 74 72 09 64 62 09 63 | 72 2c 6c 66 2c 27 4d 75 |str.db.c|r,lf,'Mu|
|00002c80| 73 74 20 73 70 65 63 69 | 66 79 20 61 20 64 69 73 |st speci|fy a dis|
|00002c90| 6b 20 64 72 69 76 65 2e | 24 27 0d 0a 62 73 63 73 |k drive.|$'..bscs|
|00002ca0| 74 72 09 64 62 09 63 72 | 2c 6c 66 2c 27 42 61 64 |tr.db.cr|,lf,'Bad|
|00002cb0| 20 46 41 54 20 73 65 63 | 74 6f 72 3a 20 64 69 73 | FAT sec|tor: dis|
|00002cc0| 6b 20 6e 6f 74 20 75 73 | 65 61 62 6c 65 2e 24 27 |k not us|eable.$'|
|00002cd0| 0d 0a 0d 0a 70 61 67 65 | 0d 0a 3b 0d 0a 3b 52 65 |....page|..;..;Re|
|00002ce0| 61 64 20 74 68 65 20 65 | 6e 74 69 72 65 20 64 69 |ad the e|ntire di|
|00002cf0| 73 6b 20 6c 6f 6f 6b 69 | 6e 67 20 66 6f 72 20 62 |sk looki|ng for b|
|00002d00| 61 64 20 62 6c 6f 63 6b | 73 2e 0d 0a 3b 57 68 65 |ad block|s...;Whe|
|00002d10| 6e 20 6f 6e 65 20 69 73 | 20 66 6f 75 6e 64 2c 20 |n one is| found, |
|00002d20| 67 6f 20 6d 61 72 6b 20 | 69 74 20 61 73 20 61 6e |go mark |it as an|
|00002d30| 20 61 6c 6c 6f 63 61 74 | 65 64 0d 0a 3b 62 61 64 | allocat|ed..;bad|
|00002d40| 20 62 6c 6f 63 6b 2e 0d | 0a 3b 0d 0a 66 69 6e 64 | block..|.;..find|
|00002d50| 62 61 64 3a 0d 0a 09 6d | 6f 76 09 62 6c 6f 63 6b |bad:...m|ov.block|
|00002d60| 2c 30 09 09 3b 31 73 74 | 20 62 6c 6f 63 6b 2c 0d |,0..;1st| block,.|
|00002d70| 0a 09 6d 6f 76 09 62 61 | 64 63 6e 74 2c 30 09 3b |..mov.ba|dcnt,0.;|
|00002d80| 6e 6f 6e 65 20 79 65 74 | 2c 0d 0a 0d 0a 66 62 31 |none yet|,....fb1|
|00002d90| 3a 09 6d 6f 76 09 64 78 | 2c 6f 66 66 73 65 74 20 |:.mov.dx|,offset |
|00002da0| 62 6c 6b 73 74 72 20 3b | 74 79 70 65 20 27 62 6c |blkstr ;|type 'bl|
|00002db0| 6f 63 6b 20 27 0d 0a 09 | 63 61 6c 6c 09 70 73 74 |ock '...|call.pst|
|00002dc0| 72 0d 0a 09 6d 6f 76 09 | 62 78 2c 62 6c 6f 63 6b |r...mov.|bx,block|
|00002dd0| 09 3b 62 6c 6f 63 6b 20 | 6e 75 6d 62 65 72 2c 0d |.;block |number,.|
|00002de0| 0a 09 63 61 6c 6c 09 6f | 75 74 64 65 63 0d 0a 09 |..call.o|utdec...|
|00002df0| 63 61 6c 6c 09 72 65 61 | 64 62 6c 6b 09 09 3b 72 |call.rea|dblk..;r|
|00002e00| 65 61 64 20 61 20 62 6c | 6f 63 6b 2c 0d 0a 09 6a |ead a bl|ock,...j|
|00002e10| 6e 63 09 66 62 33 09 09 | 3b 69 66 20 62 61 64 2c |nc.fb3..|;if bad,|
|00002e20| 20 0d 0a 09 69 6e 63 09 | 62 61 64 63 6e 74 09 09 | ...inc.|badcnt..|
|00002e30| 3b 63 6f 75 6e 74 20 69 | 74 2c 0d 0a 09 6d 6f 76 |;count i|t,...mov|
|00002e40| 09 64 78 2c 6f 66 66 73 | 65 74 20 62 61 64 73 74 |.dx,offs|et badst|
|00002e50| 72 0d 0a 09 63 61 6c 6c | 09 70 73 74 72 09 09 3b |r...call|.pstr..;|
|00002e60| 74 79 70 65 20 27 62 61 | 64 27 0d 0a 09 63 61 6c |type 'ba|d'...cal|
|00002e70| 6c 09 6d 61 70 6f 75 74 | 09 09 3b 6d 61 72 6b 20 |l.mapout|..;mark |
|00002e80| 62 61 64 2c 0d 0a 09 6d | 6f 76 09 64 78 2c 6f 66 |bad,...m|ov.dx,of|
|00002e90| 66 73 65 74 20 63 6e 74 | 73 74 72 20 3b 65 72 72 |fset cnt|str ;err|
|00002ea0| 6f 72 20 69 66 20 63 61 | 6e 74 0d 0a 09 6a 63 09 |or if ca|nt...jc.|
|00002eb0| 66 62 32 0d 0a 09 61 64 | 64 09 6e 65 77 62 61 64 |fb2...ad|d.newbad|
|00002ec0| 2c 63 78 09 3b 63 6f 75 | 6e 74 20 69 74 2c 0d 0a |,cx.;cou|nt it,..|
|00002ed0| 09 6d 6f 76 09 64 78 2c | 6f 66 66 73 65 74 20 61 |.mov.dx,|offset a|
|00002ee0| 6c 72 73 74 72 0d 0a 09 | 6a 63 78 7a 09 66 62 32 |lrstr...|jcxz.fb2|
|00002ef0| 09 09 3b 61 6c 72 65 61 | 64 79 20 6d 61 72 6b 64 |..;alrea|dy markd|
|00002f00| 0d 0a 09 6d 6f 76 09 64 | 78 2c 6f 66 66 73 65 74 |...mov.d|x,offset|
|00002f10| 20 6d 72 6b 73 74 72 0d | 0a 66 62 32 3a 09 63 61 | mrkstr.|.fb2:.ca|
|00002f20| 6c 6c 09 70 73 74 72 0d | 0a 66 62 33 3a 09 69 6e |ll.pstr.|.fb3:.in|
|00002f30| 63 09 62 6c 6f 63 6b 09 | 09 3b 6e 65 78 74 20 62 |c.block.|.;next b|
|00002f40| 6c 6f 63 6b 2c 0d 0a 09 | 64 65 63 09 62 6c 6b 63 |lock,...|dec.blkc|
|00002f50| 6e 74 09 09 3b 61 6e 6f | 74 68 65 72 2e 2e 2e 0d |nt..;ano|ther....|
|00002f60| 0a 09 6a 6e 7a 09 66 62 | 31 09 09 3b 6b 65 65 70 |..jnz.fb|1..;keep|
|00002f70| 20 6c 6f 6f 6b 69 6e 67 | 2e 0d 0a 09 72 65 74 0d | looking|....ret.|
|00002f80| 0a 0d 0a 0d 0a 62 6c 6b | 73 74 72 09 64 62 09 63 |.....blk|str.db.c|
|00002f90| 72 2c 27 42 6c 6f 63 6b | 20 24 27 0d 0a 62 61 64 |r,'Block| $'..bad|
|00002fa0| 73 74 72 09 64 62 09 27 | 20 62 61 64 2c 24 27 0d |str.db.'| bad,$'.|
|00002fb0| 0a 61 6c 72 73 74 72 09 | 64 62 09 27 20 61 6c 72 |.alrstr.|db.' alr|
|00002fc0| 65 61 64 79 20 6d 61 72 | 6b 65 64 2e 27 2c 63 72 |eady mar|ked.',cr|
|00002fd0| 2c 6c 66 2c 27 24 27 0d | 0a 6d 72 6b 73 74 72 09 |,lf,'$'.|.mrkstr.|
|00002fe0| 64 62 09 27 20 6d 61 70 | 70 65 64 20 6f 75 74 2e |db.' map|ped out.|
|00002ff0| 27 2c 6c 66 2c 27 24 27 | 0d 0a 63 6e 74 73 74 72 |',lf,'$'|..cntstr|
|00003000| 09 64 62 09 27 20 61 6c | 72 65 61 64 79 20 75 73 |.db.' al|ready us|
|00003010| 65 64 21 20 49 20 64 6f | 6e 74 20 6b 6e 6f 77 27 |ed! I do|nt know'|
|00003020| 0d 0a 09 64 62 09 27 20 | 77 68 69 63 68 20 66 69 |...db.' |which fi|
|00003030| 6c 65 2e 27 2c 6c 66 2c | 27 24 27 0d 0a 70 61 67 |le.',lf,|'$'..pag|
|00003040| 65 0d 0a 3b 0d 0a 3b 4d | 61 72 6b 20 74 68 65 20 |e..;..;M|ark the |
|00003050| 63 75 72 72 65 6e 74 20 | 62 6c 6f 63 6b 20 61 73 |current |block as|
|00003060| 20 62 61 64 20 69 6e 20 | 74 68 65 20 46 41 54 2e | bad in |the FAT.|
|00003070| 0d 0a 3b 4d 75 6c 74 69 | 70 6c 79 20 74 68 65 20 |..;Multi|ply the |
|00003080| 62 6c 6f 63 6b 20 6e 75 | 6d 62 65 72 20 62 79 20 |block nu|mber by |
|00003090| 31 2e 35 20 74 6f 20 66 | 69 6e 64 20 74 68 65 0d |1.5 to f|ind the.|
|000030a0| 0a 3b 62 6c 6f 63 6b 20 | 6e 75 6d 62 65 72 2c 20 |.;block |number, |
|000030b0| 28 61 63 74 75 61 6c 6c | 79 20 2a 33 2c 20 2f 32 |(actuall|y *3, /2|
|000030c0| 29 20 61 6e 64 20 69 66 | 20 6e 6f 74 0d 0a 3b 75 |) and if| not..;u|
|000030d0| 73 65 64 2c 20 6d 61 72 | 6b 20 69 74 20 62 61 64 |sed, mar|k it bad|
|000030e0| 2e 20 49 66 20 75 73 65 | 64 2c 20 72 65 70 6f 72 |. If use|d, repor|
|000030f0| 74 20 77 68 69 63 68 20 | 66 69 6c 65 0d 0a 3b 69 |t which |file..;i|
|00003100| 74 27 73 20 69 6e 2e 20 | 49 66 20 69 74 27 73 20 |t's in. |If it's |
|00003110| 61 6c 72 65 61 64 79 20 | 6d 61 70 70 65 64 20 61 |already |mapped a|
|00003120| 73 20 62 61 64 2c 20 0d | 0a 3b 72 65 74 75 72 6e |s bad, .|.;return|
|00003130| 20 43 58 20 3d 30 2c 20 | 65 6c 73 65 20 72 65 74 | CX =0, |else ret|
|00003140| 75 72 6e 20 43 58 3d 31 | 2e 0d 0a 3b 0d 0a 6d 61 |urn CX=1|...;..ma|
|00003150| 70 6f 75 74 3a 0d 0a 09 | 6d 6f 76 09 62 78 2c 62 |pout:...|mov.bx,b|
|00003160| 6c 6f 63 6b 09 3b 62 6c | 6f 63 6b 2c 0d 0a 09 73 |lock.;bl|ock,...s|
|00003170| 68 6c 09 62 78 2c 31 09 | 09 3b 74 69 6d 65 73 20 |hl.bx,1.|.;times |
|00003180| 32 2c 0d 0a 09 61 64 64 | 09 62 78 2c 62 6c 6f 63 |2,...add|.bx,bloc|
|00003190| 6b 09 3b 74 69 6d 65 73 | 20 33 2c 0d 0a 09 73 68 |k.;times| 3,...sh|
|000031a0| 72 09 62 78 2c 31 09 09 | 3b 64 69 76 69 64 65 20 |r.bx,1..|;divide |
|000031b0| 62 79 20 32 2c 0d 0a 09 | 6d 6f 76 09 61 78 2c 66 |by 2,...|mov.ax,f|
|000031c0| 61 74 62 75 66 5b 62 78 | 5d 09 3b 67 65 74 20 77 |atbuf[bx|].;get w|
|000031d0| 6f 72 64 2c 0d 0a 3b 0d | 0a 3b 49 66 20 63 61 72 |ord,..;.|.;If car|
|000031e0| 72 79 20 69 73 20 73 65 | 74 2c 20 77 65 20 77 61 |ry is se|t, we wa|
|000031f0| 6e 74 20 74 68 65 20 68 | 69 67 68 20 31 32 20 62 |nt the h|igh 12 b|
|00003200| 69 74 73 20 69 6e 0d 0a | 3b 74 68 65 20 77 6f 72 |its in..|;the wor|
|00003210| 64 20 69 6e 20 41 58 2c | 20 65 6c 73 65 20 74 68 |d in AX,| else th|
|00003220| 65 20 6c 6f 77 20 31 32 | 20 62 69 74 73 2e 20 53 |e low 12| bits. S|
|00003230| 65 74 20 43 48 0d 0a 3b | 61 73 20 74 68 65 20 73 |et CH..;|as the s|
|00003240| 68 69 66 74 20 63 6f 75 | 6e 74 2c 20 44 58 20 61 |hift cou|nt, DX a|
|00003250| 73 20 74 68 65 20 6d 61 | 73 6b 2e 0d 0a 3b 0d 0a |s the ma|sk...;..|
|00003260| 09 6d 6f 76 09 63 68 2c | 30 09 09 3b 61 73 73 75 |.mov.ch,|0..;assu|
|00003270| 6d 65 20 6c 6f 77 2c 0d | 0a 09 6d 6f 76 09 64 78 |me low,.|..mov.dx|
|00003280| 2c 30 66 66 66 68 0d 0a | 09 6a 6e 63 09 6d 6f 31 |,0fffh..|.jnc.mo1|
|00003290| 0d 0a 09 6d 6f 76 09 63 | 68 2c 34 09 09 3b 65 6c |...mov.c|h,4..;el|
|000032a0| 73 65 20 68 69 67 68 20 | 31 32 2c 0d 0a 09 6d 6f |se high |12,...mo|
|000032b0| 76 09 64 78 2c 30 66 66 | 66 30 68 0d 0a 6d 6f 31 |v.dx,0ff|f0h..mo1|
|000032c0| 3a 09 61 6e 64 09 61 78 | 2c 64 78 09 09 3b 6d 61 |:.and.ax|,dx..;ma|
|000032d0| 73 6b 20 69 74 2c 0d 0a | 09 6d 6f 76 09 63 6c 2c |sk it,..|.mov.cl,|
|000032e0| 63 68 0d 0a 09 73 68 72 | 09 61 78 2c 63 6c 09 09 |ch...shr|.ax,cl..|
|000032f0| 3b 73 68 69 66 74 20 69 | 74 2c 0d 0a 3b 0d 0a 3b |;shift i|t,..;..;|
|00003300| 41 58 20 69 73 20 74 68 | 65 20 62 6c 6f 63 6b 20 |AX is th|e block |
|00003310| 6e 75 6d 62 65 72 3b 20 | 69 66 20 69 74 27 73 20 |number; |if it's |
|00003320| 61 6e 79 74 68 69 6e 67 | 0d 0a 3b 62 75 74 20 30 |anything|..;but 0|
|00003330| 30 30 20 6f 72 20 66 66 | 37 2c 20 72 65 74 75 72 |00 or ff|7, retur|
|00003340| 6e 20 77 69 74 68 20 63 | 61 72 72 79 20 73 65 74 |n with c|arry set|
|00003350| 2c 20 0d 0a 3b 69 6e 64 | 69 63 61 74 69 6e 67 20 |, ..;ind|icating |
|00003360| 74 68 61 74 20 69 74 73 | 20 61 6c 72 65 61 64 79 |that its| already|
|00003370| 20 75 73 65 64 2e 0d 0a | 3b 0d 0a 09 63 6d 70 09 | used...|;...cmp.|
|00003380| 61 78 2c 30 66 66 37 68 | 09 3b 69 66 20 66 66 37 |ax,0ff7h|.;if ff7|
|00003390| 2c 0d 0a 09 6a 65 09 6d | 6f 32 09 09 3b 61 6c 72 |,...je.m|o2..;alr|
|000033a0| 65 61 64 79 20 6d 61 72 | 6b 65 64 0d 0a 09 63 6d |eady mar|ked...cm|
|000033b0| 70 09 61 78 2c 30 09 09 | 3b 69 66 20 61 6c 6c 6f |p.ax,0..|;if allo|
|000033c0| 63 61 74 65 64 2c 0d 0a | 09 6a 65 09 6d 6f 33 0d |cated,..|.je.mo3.|
|000033d0| 0a 09 73 74 63 09 09 09 | 3b 65 72 72 6f 72 21 0d |..stc...|;error!.|
|000033e0| 0a 6d 6f 32 3a 09 6d 6f | 76 09 63 78 2c 30 09 09 |.mo2:.mo|v.cx,0..|
|000033f0| 3b 6e 6f 6e 65 20 6d 61 | 70 70 65 64 2c 0d 0a 09 |;none ma|pped,...|
|00003400| 72 65 74 0d 0a 3b 0d 0a | 3b 42 61 64 20 75 6e 75 |ret..;..|;Bad unu|
|00003410| 73 65 64 20 62 6c 6f 63 | 6b 2e 20 4d 61 72 6b 20 |sed bloc|k. Mark |
|00003420| 61 73 20 62 61 64 20 69 | 6e 20 74 68 65 20 46 41 |as bad i|n the FA|
|00003430| 54 2e 0d 0a 3b 0d 0a 6d | 6f 33 3a 09 6d 6f 76 09 |T...;..m|o3:.mov.|
|00003440| 61 78 2c 30 66 66 37 68 | 09 3b 6d 61 72 6b 65 72 |ax,0ff7h|.;marker|
|00003450| 2c 0d 0a 09 6d 6f 76 09 | 63 6c 2c 63 68 0d 0a 09 |,...mov.|cl,ch...|
|00003460| 73 68 6c 09 61 78 2c 63 | 6c 09 09 3b 73 68 69 66 |shl.ax,c|l..;shif|
|00003470| 74 20 69 74 2c 0d 0a 09 | 6f 72 09 66 61 74 62 75 |t it,...|or.fatbu|
|00003480| 66 5b 62 78 5d 2c 61 78 | 09 3b 6d 61 72 6b 20 69 |f[bx],ax|.;mark i|
|00003490| 74 2e 0d 0a 09 6d 6f 76 | 09 63 78 2c 31 09 09 3b |t....mov|.cx,1..;|
|000034a0| 31 20 6d 61 70 70 65 64 | 2c 0d 0a 09 72 65 74 0d |1 mapped|,...ret.|
|000034b0| 0a 70 61 67 65 0d 0a 3b | 0d 0a 3b 52 65 61 64 20 |.page..;|..;Read |
|000034c0| 6f 6e 65 20 62 6c 6f 63 | 6b 2c 20 72 65 74 75 72 |one bloc|k, retur|
|000034d0| 6e 20 63 61 72 72 79 20 | 73 65 74 20 69 66 20 72 |n carry |set if r|
|000034e0| 65 61 64 0d 0a 3b 65 72 | 72 6f 72 2e 20 4c 65 61 |ead..;er|ror. Lea|
|000034f0| 76 65 20 74 68 65 20 75 | 73 65 6c 65 73 73 20 64 |ve the u|seless d|
|00003500| 61 74 61 20 69 6e 20 74 | 68 65 20 62 75 66 66 65 |ata in t|he buffe|
|00003510| 72 0d 0a 3b 66 6f 6c 6c | 6f 77 69 6e 67 20 74 68 |r..;foll|owing th|
|00003520| 65 20 65 6e 64 20 6f 66 | 20 74 68 69 73 20 70 72 |e end of| this pr|
|00003530| 6f 67 72 61 6d 2e 0d 0a | 3b 0d 0a 72 65 61 64 62 |ogram...|;..readb|
|00003540| 6c 6b 3a 0d 0a 09 6d 6f | 76 09 61 78 2c 62 6c 6f |lk:...mo|v.ax,blo|
|00003550| 63 6b 09 3b 66 69 6e 64 | 20 73 74 61 72 74 0d 0a |ck.;find| start..|
|00003560| 09 6d 6f 76 09 63 78 2c | 62 6c 6b 73 69 7a 65 09 |.mov.cx,|blksize.|
|00003570| 3b 73 65 63 74 6f 72 2c | 0d 0a 09 6d 75 6c 09 63 |;sector,|...mul.c|
|00003580| 78 09 09 3b 43 58 3d 20 | 63 6f 75 6e 74 2c 0d 0a |x..;CX= |count,..|
|00003590| 09 6d 6f 76 09 64 78 2c | 61 78 09 09 3b 44 58 3d |.mov.dx,|ax..;DX=|
|000035a0| 20 73 65 63 74 6f 72 2c | 0d 0a 09 6d 6f 76 09 61 | sector,|...mov.a|
|000035b0| 6c 2c 64 69 73 6b 0d 0a | 09 6d 6f 76 09 62 78 2c |l,disk..|.mov.bx,|
|000035c0| 6f 66 66 73 65 74 20 62 | 6c 6b 62 75 66 20 3b 6f |offset b|lkbuf ;o|
|000035d0| 75 72 20 62 75 66 66 65 | 72 2c 0d 0a 09 69 6e 74 |ur buffe|r,...int|
|000035e0| 09 32 35 68 09 09 3b 72 | 65 61 64 20 73 65 63 74 |.25h..;r|ead sect|
|000035f0| 6f 72 73 2c 0d 0a 09 70 | 6f 70 09 64 78 09 09 3b |ors,...p|op.dx..;|
|00003600| 70 6f 70 20 66 6c 61 67 | 73 2c 0d 0a 09 72 65 74 |pop flag|s,...ret|
|00003610| 0d 0a 70 61 67 65 0d 0a | 3b 0d 0a 3b 4c 69 73 74 |..page..|;..;List|
|00003620| 20 74 68 65 20 67 65 6e | 65 72 61 6c 20 69 6e 66 | the gen|eral inf|
|00003630| 6f 20 6f 6e 20 74 68 65 | 20 64 69 73 6b 2c 20 6c |o on the| disk, l|
|00003640| 69 6b 65 0d 0a 3b 73 65 | 63 74 6f 72 20 73 69 7a |ike..;se|ctor siz|
|00003650| 65 73 2c 20 65 74 63 2e | 0d 0a 3b 0d 0a 6c 69 73 |es, etc.|..;..lis|
|00003660| 74 73 74 61 74 3a 0d 0a | 09 6d 6f 76 09 64 78 2c |tstat:..|.mov.dx,|
|00003670| 6f 66 66 73 65 74 20 73 | 74 31 73 74 72 0d 0a 09 |offset s|t1str...|
|00003680| 63 61 6c 6c 09 70 73 74 | 72 0d 0a 09 6d 6f 76 09 |call.pst|r...mov.|
|00003690| 61 6c 2c 64 69 73 6b 0d | 0a 09 61 64 64 09 61 6c |al,disk.|..add.al|
|000036a0| 2c 27 41 27 0d 0a 09 63 | 61 6c 6c 09 6f 75 74 61 |,'A'...c|all.outa|
|000036b0| 0d 0a 09 6d 6f 76 09 64 | 78 2c 6f 66 66 73 65 74 |...mov.d|x,offset|
|000036c0| 20 73 74 32 73 74 72 0d | 0a 09 63 61 6c 6c 09 70 | st2str.|..call.p|
|000036d0| 73 74 72 0d 0a 09 6d 6f | 76 09 62 78 2c 62 6c 6b |str...mo|v.bx,blk|
|000036e0| 63 6e 74 0d 0a 09 63 61 | 6c 6c 09 6f 75 74 64 65 |cnt...ca|ll.outde|
|000036f0| 63 0d 0a 09 6d 6f 76 09 | 64 78 2c 6f 66 66 73 65 |c...mov.|dx,offse|
|00003700| 74 20 73 74 33 73 74 72 | 0d 0a 09 63 61 6c 6c 09 |t st3str|...call.|
|00003710| 70 73 74 72 0d 0a 09 72 | 65 74 0d 0a 0d 0a 3b 44 |pstr...r|et....;D|
|00003720| 69 73 6b 20 41 3a 2c 20 | 74 6f 74 61 6c 20 6f 66 |isk A:, |total of|
|00003730| 20 31 32 33 34 35 20 64 | 61 74 61 20 62 6c 6f 63 | 12345 d|ata bloc|
|00003740| 6b 73 2e 0d 0a 0d 0a 73 | 74 31 73 74 72 09 64 62 |ks.....s|t1str.db|
|00003750| 20 63 72 2c 6c 66 2c 27 | 44 69 73 6b 20 24 27 0d | cr,lf,'|Disk $'.|
|00003760| 0a 73 74 32 73 74 72 09 | 64 62 20 27 3a 2c 20 74 |.st2str.|db ':, t|
|00003770| 6f 74 61 6c 20 6f 66 20 | 24 27 0d 0a 73 74 33 73 |otal of |$'..st3s|
|00003780| 74 72 09 64 62 20 27 20 | 64 61 74 61 20 62 6c 6f |tr.db ' |data blo|
|00003790| 63 6b 73 2e 24 27 0d 0a | 3b 0d 0a 3b 4c 69 73 74 |cks.$'..|;..;List|
|000037a0| 20 6f 75 74 20 74 68 65 | 20 62 61 64 20 74 68 69 | out the| bad thi|
|000037b0| 6e 67 73 20 61 62 6f 75 | 74 20 74 68 69 73 20 64 |ngs abou|t this d|
|000037c0| 69 73 6b 2e 0d 0a 3b 0d | 0a 6c 69 73 74 62 61 64 |isk...;.|.listbad|
|000037d0| 3a 0d 0a 09 6d 6f 76 09 | 64 78 2c 6f 66 66 73 65 |:...mov.|dx,offse|
|000037e0| 74 20 62 64 31 73 74 72 | 0d 0a 09 63 61 6c 6c 09 |t bd1str|...call.|
|000037f0| 70 73 74 72 0d 0a 09 6d | 6f 76 09 62 78 2c 62 61 |pstr...m|ov.bx,ba|
|00003800| 64 63 6e 74 0d 0a 09 63 | 61 6c 6c 09 6f 75 74 64 |dcnt...c|all.outd|
|00003810| 65 63 0d 0a 09 6d 6f 76 | 09 64 78 2c 6f 66 66 73 |ec...mov|.dx,offs|
|00003820| 65 74 20 62 64 32 73 74 | 72 0d 0a 09 63 61 6c 6c |et bd2st|r...call|
|00003830| 09 70 73 74 72 0d 0a 09 | 6d 6f 76 09 62 78 2c 6e |.pstr...|mov.bx,n|
|00003840| 65 77 62 61 64 0d 0a 09 | 63 61 6c 6c 09 6f 75 74 |ewbad...|call.out|
|00003850| 64 65 63 0d 0a 09 6d 6f | 76 09 64 78 2c 6f 66 66 |dec...mo|v.dx,off|
|00003860| 73 65 74 20 62 64 33 73 | 74 72 0d 0a 09 63 61 6c |set bd3s|tr...cal|
|00003870| 6c 09 70 73 74 72 0d 0a | 09 72 65 74 0d 0a 0d 0a |l.pstr..|.ret....|
|00003880| 3b 54 6f 74 61 6c 20 6f | 66 20 31 32 33 34 35 20 |;Total o|f 12345 |
|00003890| 62 61 64 20 62 6c 6f 63 | 6b 73 2c 20 66 6f 75 6e |bad bloc|ks, foun|
|000038a0| 64 20 31 32 32 33 34 20 | 6d 6f 72 65 20 74 68 69 |d 12234 |more thi|
|000038b0| 73 20 70 61 73 73 2e 0d | 0a 62 64 31 73 74 72 09 |s pass..|.bd1str.|
|000038c0| 64 62 20 63 72 2c 27 54 | 6f 74 61 6c 20 6f 66 20 |db cr,'T|otal of |
|000038d0| 24 27 09 09 3b 6e 6f 74 | 65 20 6e 6f 20 6c 69 6e |$'..;not|e no lin|
|000038e0| 65 66 65 65 64 2e 0d 0a | 62 64 32 73 74 72 09 64 |efeed...|bd2str.d|
|000038f0| 62 20 27 20 62 61 64 20 | 62 6c 6f 63 6b 73 2c 20 |b ' bad |blocks, |
|00003900| 66 6f 75 6e 64 20 24 27 | 0d 0a 62 64 33 73 74 72 |found $'|..bd3str|
|00003910| 09 64 62 20 27 20 6d 6f | 72 65 20 74 68 69 73 20 |.db ' mo|re this |
|00003920| 70 61 73 73 2e 24 27 0d | 0a 70 61 67 65 0d 0a 3b |pass.$'.|.page..;|
|00003930| 0d 0a 3b 47 65 6e 65 72 | 61 6c 6c 79 20 75 73 65 |..;Gener|ally use|
|00003940| 66 75 6c 20 73 79 73 74 | 65 6d 20 63 61 6c 6c 73 |ful syst|em calls|
|00003950| 2e 0d 0a 3b 0d 0a 70 73 | 74 72 3a 09 6d 6f 76 09 |...;..ps|tr:.mov.|
|00003960| 61 68 2c 39 0d 0a 09 69 | 6e 74 09 33 33 0d 0a 09 |ah,9...i|nt.33...|
|00003970| 72 65 74 0d 0a 3b 0d 0a | 3b 54 79 70 65 20 42 58 |ret..;..|;Type BX|
|00003980| 20 69 6e 20 64 65 63 69 | 6d 61 6c 2c 20 73 75 70 | in deci|mal, sup|
|00003990| 70 72 65 73 73 69 6e 67 | 20 6c 65 61 64 69 6e 67 |pressing| leading|
|000039a0| 0d 0a 3b 7a 65 72 6f 73 | 2e 0d 0a 3b 0d 0a 6f 75 |..;zeros|...;..ou|
|000039b0| 74 64 65 63 3a 09 6d 6f | 76 09 63 6c 2c 30 09 3b |tdec:.mo|v.cl,0.;|
|000039c0| 30 20 73 75 70 70 72 65 | 73 73 20 66 6c 61 67 2c |0 suppre|ss flag,|
|000039d0| 0d 0a 09 6d 6f 76 09 64 | 78 2c 31 30 30 30 30 0d |...mov.d|x,10000.|
|000039e0| 0a 09 63 61 6c 6c 09 72 | 73 64 69 76 0d 0a 09 6d |..call.r|sdiv...m|
|000039f0| 6f 76 09 64 78 2c 31 30 | 30 30 0d 0a 09 63 61 6c |ov.dx,10|00...cal|
|00003a00| 6c 09 72 73 64 69 76 0d | 0a 09 6d 6f 76 09 64 78 |l.rsdiv.|..mov.dx|
|00003a10| 2c 31 30 30 0d 0a 09 63 | 61 6c 6c 09 72 73 64 69 |,100...c|all.rsdi|
|00003a20| 76 0d 0a 09 6d 6f 76 09 | 64 78 2c 31 30 0d 0a 09 |v...mov.|dx,10...|
|00003a30| 63 61 6c 6c 09 72 73 64 | 69 76 0d 0a 09 6d 6f 76 |call.rsd|iv...mov|
|00003a40| 09 63 68 2c 62 6c 0d 0a | 09 6a 6d 70 09 6f 64 66 |.ch,bl..|.jmp.odf|
|00003a50| 0d 0a 0d 0a 72 73 64 69 | 76 3a 09 6d 6f 76 09 63 |....rsdi|v:.mov.c|
|00003a60| 68 2c 2d 31 09 3b 69 74 | 65 72 61 74 69 6f 6e 20 |h,-1.;it|eration |
|00003a70| 2d 31 2c 0d 0a 72 73 31 | 3a 09 69 6e 63 09 63 68 |-1,..rs1|:.inc.ch|
|00003a80| 09 3b 63 6f 75 6e 74 2c | 0d 0a 09 73 75 62 09 62 |.;count,|...sub.b|
|00003a90| 78 2c 64 78 09 3b 73 75 | 62 74 72 61 63 74 2c 0d |x,dx.;su|btract,.|
|00003aa0| 0a 09 6a 6e 63 09 72 73 | 31 09 3b 74 69 6c 20 75 |..jnc.rs|1.;til u|
|00003ab0| 6e 64 65 72 66 6c 6f 77 | 2c 0d 0a 09 61 64 64 09 |nderflow|,...add.|
|00003ac0| 62 78 2c 64 78 09 3b 61 | 64 6a 75 73 74 20 62 61 |bx,dx.;a|djust ba|
|00003ad0| 63 6b 2c 0d 0a 09 63 6d | 70 09 63 68 2c 30 09 3b |ck,...cm|p.ch,0.;|
|00003ae0| 69 66 20 6e 6f 6e 2d 7a | 65 72 6f 2c 0d 0a 09 6a |if non-z|ero,...j|
|00003af0| 6e 65 09 6f 64 66 09 3b | 74 79 70 65 20 69 74 2c |ne.odf.;|type it,|
|00003b00| 0d 0a 09 74 65 73 74 09 | 63 6c 2c 31 09 3b 64 6f |...test.|cl,1.;do|
|00003b10| 6e 74 20 74 79 70 65 20 | 30 27 73 0d 0a 09 6a 6e |nt type |0's...jn|
|00003b20| 7a 09 6f 64 66 09 3b 69 | 66 20 6c 65 61 64 69 6e |z.odf.;i|f leadin|
|00003b30| 67 2c 0d 0a 09 72 65 74 | 0d 0a 0d 0a 6f 64 66 3a |g,...ret|....odf:|
|00003b40| 09 70 75 73 68 09 64 78 | 0d 0a 09 6d 6f 76 09 64 |.push.dx|...mov.d|
|00003b50| 6c 2c 63 68 0d 0a 09 61 | 64 64 09 64 6c 2c 27 30 |l,ch...a|dd.dl,'0|
|00003b60| 27 09 3b 41 53 43 49 49 | 2c 0d 0a 09 6d 6f 76 09 |'.;ASCII|,...mov.|
|00003b70| 61 68 2c 32 0d 0a 09 69 | 6e 74 09 33 33 0d 0a 09 |ah,2...i|nt.33...|
|00003b80| 70 6f 70 09 64 78 0d 0a | 09 6d 6f 76 09 63 6c 2c |pop.dx..|.mov.cl,|
|00003b90| 31 09 3b 6e 6f 20 73 75 | 70 70 72 65 73 73 2c 0d |1.;no su|ppress,.|
|00003ba0| 0a 09 72 65 74 0d 0a 70 | 61 67 65 0d 0a 3b 0d 0a |..ret..p|age..;..|
|00003bb0| 3b 4d 6f 72 65 20 73 79 | 73 74 65 6d 20 63 61 6c |;More sy|stem cal|
|00003bc0| 6c 73 2e 0d 0a 3b 0d 0a | 73 65 6c 64 73 6b 3a 09 |ls...;..|seldsk:.|
|00003bd0| 6d 6f 76 09 64 6c 2c 61 | 6c 09 09 3b 73 65 6c 65 |mov.dl,a|l..;sele|
|00003be0| 63 74 20 64 69 73 6b 2c | 0d 0a 09 6d 6f 76 09 61 |ct disk,|...mov.a|
|00003bf0| 68 2c 30 65 68 0d 0a 09 | 69 6e 74 09 33 33 0d 0a |h,0eh...|int.33..|
|00003c00| 09 72 65 74 0d 0a 0d 0a | 67 65 74 64 73 6b 3a 09 |.ret....|getdsk:.|
|00003c10| 6d 6f 76 09 61 68 2c 31 | 39 68 0d 0a 09 69 6e 74 |mov.ah,1|9h...int|
|00003c20| 09 33 33 0d 0a 09 72 65 | 74 0d 0a 0d 0a 69 6e 69 |.33...re|t....ini|
|00003c30| 74 64 73 6b 3a 6d 6f 76 | 09 61 68 2c 30 64 68 0d |tdsk:mov|.ah,0dh.|
|00003c40| 0a 09 69 6e 74 09 33 33 | 0d 0a 09 72 65 74 0d 0a |..int.33|...ret..|
|00003c50| 0d 0a 69 6e 61 3a 09 6d | 6f 76 09 61 68 2c 30 63 |..ina:.m|ov.ah,0c|
|00003c60| 68 09 09 3b 63 68 61 72 | 20 69 6e 20 77 69 74 68 |h..;char| in with|
|00003c70| 0d 0a 09 6d 6f 76 09 61 | 6c 2c 31 09 09 3b 66 6c |...mov.a|l,1..;fl|
|00003c80| 75 73 68 2e 0d 0a 09 69 | 6e 74 09 33 33 0d 0a 09 |ush....i|nt.33...|
|00003c90| 72 65 74 0d 0a 0d 0a 6f | 75 74 61 3a 09 6d 6f 76 |ret....o|uta:.mov|
|00003ca0| 09 64 6c 2c 61 6c 0d 0a | 09 6d 6f 76 09 61 68 2c |.dl,al..|.mov.ah,|
|00003cb0| 32 0d 0a 09 69 6e 74 09 | 33 33 0d 0a 09 72 65 74 |2...int.|33...ret|
|00003cc0| 0d 0a 0d 0a 62 6c 6b 62 | 75 66 09 64 62 20 31 36 |....blkb|uf.db 16|
|00003cd0| 33 38 34 20 64 75 70 20 | 28 3f 29 09 3b 63 6c 75 |384 dup |(?).;clu|
|00003ce0| 73 74 65 72 20 62 75 66 | 66 65 72 0d 0a 0d 0a 66 |ster buf|fer....f|
|00003cf0| 61 74 62 75 66 20 6c 61 | 62 65 6c 20 77 6f 72 64 |atbuf la|bel word|
|00003d00| 09 09 3b 46 41 54 20 62 | 75 66 66 65 72 2e 0d 0a |..;FAT b|uffer...|
|00003d10| 0d 0a 63 6f 64 65 20 65 | 6e 64 73 0d 0a 0d 0a 09 |..code e|nds.....|
|00003d20| 65 6e 64 09 73 63 61 76 | 65 6e 67 65 0d 0a 1a 1a |end.scav|enge....|
|00003d30| 1a 1a 1a 1a 1a 1a 1a 1a | 1a 1a 1a 1a 1a 1a 1a 1a |........|........|
|00003d40| 1a 1a 1a 1a 1a 1a 1a 1a | 1a 1a 1a 1a 1a 1a 1a 1a |........|........|
|00003d50| 1a 1a 1a 1a 1a 1a 1a 1a | 1a 1a 1a 1a 1a 1a 1a 1a |........|........|
|00003d60| 1a 1a 1a 1a 1a 1a 1a 1a | 1a 1a 1a 1a 1a 1a 1a 1a |........|........|
|00003d70| 1a 1a 1a 1a 1a 1a 1a 1a | 1a 1a 1a 1a 1a 1a 1a 1a |........|........|
+--------+-------------------------+-------------------------+--------+--------+