ÜÜ                   Ü
ßßß STEALTH GROUP WW Û Mail:   BOX 15, 125080 MOSCOW   ÛÛÛÛÛÛÛÛ ÛÛÛÛÛÛÛÛÛ ÛßßÛ
ßÛÛ ßßßßßßßßßßßßßßßß Û ßßßßßßßßßßßßßßßßßß ß ßßßßÞßßß   ÚÄ¿Â ÂÚÄ´Â Â Ò Â¿Ú ÛÜÜÛ
 ÞÛ ÛßÜ Ûßß Üßß Üßß ÜÛÜ Üßß ÛßÛ   Ý Û ÜßÛ Û Üßß ÛÜÜ    ÃÂÙ³ ³ÀÄ¿ÃÄ´   ³À´ Ü  Û
  Û Û Û Ûß  Ûß  Û    Û  Ûß  Û Û   Û Û Û Û Û Û   Û      ÁÀÄÀÄÙÀÄÙÁ Á   Á Á ßßßß
  Û Þ Þ Þ   ÞÜÜ ÞÜÜ  Þ  ÞÜÜ ÞÜß    ßÛ ßÜÛ Þ ÞÜÜ ÞÜÜÜ   ÛÛÛÛ  WINTER ' 96  ÛÛÛÛ
  Þ ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ   ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ

;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
;ÛÛ                                                                      ÛÛ
;ÛÛ                     Master boot record         (c) Saxon             ÛÛ
;ÛÛ                                                                      ÛÛ
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
  
  
SEG_A           SEGMENT BYTE PUBLIC
		ASSUME  CS:SEG_A, DS:SEG_A
		ORG     100h
START:                                          
		CLI                     
		XOR     AX,AX                   ;€‘’Ž‰Š€ …ƒˆ‘’Ž‚
		MOV     SS,AX
		MOV     SP,7C00H                ;AX=SS=ES=DS=0
		MOV     SI,SP                   ;SP=SI=7C00H
		PUSH    AX
		POP     ES
		PUSH    AX
		POP     DS
		STI                     
		CLD                     
		MOV     DI,600H                 
		MOV     CX,100H
		REPNE   MOVSW                   ;ŠŽˆ“…Œ ‘…Ÿ Ž €„…‘“
						; 0000:0600
		DB      0EAH, 1DH, 06H, 00H, 00H  ;JMP € ‘‚Žž ‚’Ž“ž ŠŽˆž     
				;ˆ Ž„Ž‹†€…Œ ‚›Ž‹…ˆ… ‘Ž ‘‹…„“ž™…‰ ŠŽŒ€„› 

;       ’……œ “„…Œ Ž‘Œ€’ˆ‚€’œ ’€‹ˆ–“ €‡„…‹Ž‚
;       Ž€ ‘Ž‘’Žˆ’ ˆ‡ —…’›…• Ž‹…‰ Ž 10H €‰’ Š€†„€Ÿ
;       …‚Ž… Ž‹… €•Ž„ˆ’‘Ÿ Ž ‘Œ…™…ˆž 1BEH Ž’ €—€‹€ ‘…Š’Ž€
;       ˆ†… ˆ‚…„… ”ŽŒ€’ ’ˆ• Ž‹…‰
;ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
;³OFFSET                SIZE            DESCRIPTION                          ³
;³                                                                           ³
;³00H           1B              80h=§ £àã¦ ¥¬ë© à §¤¥«,0=­¥§ £àã¦ ¥¬ë©       ³
;³01H           1B               ç «ì­ë© ­®¬¥à £®«®¢ª¨                      ³
;³02H           2B               ç «ì­ë¥ ­®¬¥à  æ¨«¨­¤à®¢( 10 ¡¨â) ¨        ³
;³                              á¥ªâ®à  (6 ¡¨â)                              ³
;³04H           1B              ‘¨áâ¥¬­ë© ¨­¤¨ª â®à:                         ³
;³                                      1-¯¥à¢¨ç­ë© à §¤¥« DOS FAT 12        ³
;³                                      2-XENIX                              ³
;³                                      4-¯¥à¢¨ç­ë© à §¤¥« DOS FAT 16        ³
;³                                      5-à áè¨à¥­­ë© à §¤¥« DOS             ³
;³                                      8-ANOTHER                            ³
;³05H           1B              ®á«¥¤­¨© ­®¬¥à £®«®¢ª¨                      ³
;³06H           2B              ®á«¥¤­¨¥ ­®¬¥à  æ¨«¨­¤à  ¨ á¥ªâ®à           ³
;³08H           4B               ç «ì­ë© á¥ªâ®à (®â­®á¨â¥«ì­® ­ ç «  ¤¨áª ) ³
;³0CH           4B              —¨á«® á¥ªâ®à®¢ ¢ à §¤¥«¥                     ³  
;³                                                                           ³          
;ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

		MOV     SI,7BEH                 ;Ž‘ŒŽ’ˆŒ ’€‹ˆ–“ €‡„…‹Ž‚
		MOV     BL,4                    ;—ˆ‘‹Ž Ž‹…‰
SCAN_PARTITON:
		CMP     BYTE PTR [SI],80H       ;‡€ƒ“†€…Œ›‰ €‡„…‹?
		JE      LOC_4                   ;…‘‹ˆ „€ ’Ž Ž˜‹ˆ ƒ“‡ˆ’œ‘Ÿ 
		CMP     BYTE PTR [SI],0         ;…‘‹ˆ ’€Œ … 80H ˆ … 0 ’Ž
						;’Ž ‚›‚…„…Œ ‘ŽŽ™…ˆ… Ž Ž˜ˆŠ…
						;(Invalid parti...)
		JNE     LOC_6   

		ADD     SI,10H                  ;€‘’ŽˆŒ‘Ÿ € ‘‹…„“ž™…… Ž‹…
		DEC     BL
		JNZ     SCAN_PARTITON                   ;ˆ ‘ŒŽ’ˆŒ …ƒŽ
		INT     18H                     ;…‘‹ˆ ’€ŠŽ‚ŽƒŽ … €‰„…Ž
						;’Ž ……Š‹ž—ˆŒ‘Ÿ € ROM basic

LOC_4:
		MOV     DX,[SI]                 ;80H + ƒŽ‹Ž‚Š€*100H=>DX
		MOV     CX,[SI+2]               ;CX<=–ˆ‹ˆ„ ˆ ‘…Š’Ž
		MOV     BP,SI                   ;‚ BP ‘Œ…™…ˆ… €‰„…ŽƒŽ
						;‹…Œ…’€ ’€‹ˆ–› 


;’……œ Ž‚…ˆŒ …‘’œ ‹ˆ …™… €‡„…‹› ŽŒ…—…›… Š€Š ‡€ƒ“†€…Œ›…
;…‘‹ˆ ’€ŠŽ‚›… €‰„“’‘Ÿ ’Ž ŽŸ’œ ’€Šˆ 'Invalid partition table'

SCAN_PARTITON_AGAIN:
		ADD     SI,10H
		DEC     BL
		JZ      LOC_9                   ;…‘‹ˆ ‚‘… ‹…Œ…’› ’€„ˆ–›
						;Ž‘Š€ˆŽ‚€‹ˆ,’Ž ƒ“‡ˆŒ‘Ÿ
		CMP     BYTE PTR [SI],0
		JE      SCAN_PARTITON_AGAIN                   ;…‘‹ˆ €˜‹ˆ …™… Ž„ˆ ‡€ƒ“†€…Œ›‰
						;€‡„…‹ ’Ž ‚›‰„…Œ ˆ‡ –ˆŠ‹€
						;ˆ €ˆ˜…Œ ‘ŽŽ™…ˆ…
LOC_6:
		MOV     SI,68BH
LOC_7:
		LODSB           
		CMP     AL,0                    ;ŠŽ…– ‘ŽŽ™…ˆŸ = 0
		JE      LOC_8                   ;Ž—ˆ’€‹ˆ ? Ž‚ˆ‘ˆ’… !

		PUSH    SI
		MOV     BX,7
		MOV     AH,0EH
		INT     10H                     ; Video display   ah=functn 0Eh
						; write char al, teletype mode
		POP     SI
		JMP     SHORT LOC_7
LOC_8:
		JMP     SHORT LOC_8		; ‚ˆ‘ˆŒ-á

;       ã ¢®â, ¯®á«¥ ¯à®¢¥àª¨ Partition table ¨ ­ å®¦¤¥­¨ï § £àã¦ ¥¬®£® à §-
;¤¥«  ¬®¦­® ¯à¨áâã¯¨âì ª á ¬®© § £àã§ª¥ 

LOC_9:
		MOV     DI,5
LOC_10:
		MOV     BX,7C00H
		MOV     AX,0201H
		PUSH    DI
		INT     13H                     ; Disk  dl=drive a  ah=func 02h
						; read sectors to memory es:bx
		POP     DI
		JNC     LOC_11                  ;…‘‹ˆ ‘—ˆ’€‹ˆ “„€—Ž
						;’Ž “†… Ž—’ˆ ‚‘… ‘„…‹€Ž

		XOR     AX,AX                   ;€ …‘‹ˆ Žˆ‡Ž˜‹€ Ž˜ˆŠ€ 
		INT     13H                     ;’Ž ‘Ž‘ˆŒ „ˆ‘Š
						;AL=return status
		DEC     DI                      ;ˆ ŽŽ“…Œ Ž—ˆ’€’œ Ž‚’ŽŽ
		JNZ     LOC_10                  ;(‚‘…ƒŽ Ÿ’œ Ž›’ŽŠ á¬ DI)


		MOV     SI,6A3H                 ;‚‘…’€Šˆ … —ˆ’€…’‘Ÿ ,’Žƒ„€
		JMP     SHORT LOC_7             ;ˆ˜…Œ 'Error loadi...'

LOC_11:
		MOV     SI,6C2H 
		MOV     DI,7DFEH                ;Ž‚…Š€ ŠŽ’Ž‹œ›• €‰’ (Uª)
		CMP     WORD PTR [DI],0AA55H
		JNE     LOC_7                   ;…‘‹ˆ Œ› ‘—ˆ’€‹ˆ … ‡€ƒ“‡Ž—-
						;›‰ BOO’ SECTOR 
						;’Ž 'Missing opera..'
		MOV     SI,BP                   ;‚……Œ ‚ SI ‘Œ…™…ˆ… Partition

		DB      0EAH, 00H, 7CH, 00H, 00H ;ˆ Ž’„€…Œ “€‚‹…ˆ… € BOOT
						 ;(0000:7C00)   

MES_008B        DB      'Invalid partition table', 0
MES_00A3        DB      'Error loading operating system', 0
MES_00C2        DB      'Missing operating system'
		DB      228 DUP (0)

;1BEH           Partition table
		;1-‰ €‡„…‹
		DB       80H            ;ˆ„ˆŠ€’Ž ‡€ƒ“‡Šˆ   (§ £àã¦ ¥¬ë©)                
		DB       01H            ;€—€‹œ›‰ ŽŒ… ƒŽ‹Ž‚Šˆ
		DW       0001H          ;€—€‹œ›… ŽŒ…€ –ˆ‹ˆ„€ ˆ ‘…Š’Ž€
		DB       01H           ;‘ˆ‘’…Œ›‰ ˆ„ˆŠ€’Ž (¯¥à¢ë© DOS FAT12)
		DB       0FH            ;Ž‘‹…„ˆ‰ ŽŒ… ƒŽ‹Ž‚Šˆ
		DW       1E3FH          ;Ž‘‹…„ˆ… ŽŒ…€ –ˆ‹ˆ„€ ˆ ƒŽ‹Ž‚Šˆ
		DD       0000003FH      ;€—€‹œ›‰ ‘…Š’Ž (Ž’Ž‘ˆ’…‹œŽ
					;€—€‹€ „ˆ‘Š€)
		DD      000079D1H       ;—ˆ‘‹Ž ‘…Š’ŽŽ‚ ‚ €‡„…‹…
		
		;2-‰ €‡„…‹
		DB       00H            ;…‡€ƒ“†€…Œ›‰
		DB       00H                    
		DW       1F01H
		DB       05H            ;€‘˜ˆ…›‰ €‡„…‹ DOS
		DB       0FH
		DW       0FEFFH
		DD       00007A10H
		DD       000F4200H
		
		;3-‰ ˆ 4-‰ €‡„…‹›
		DB      32 DUP (0)       ;“‹ˆ
		
		DB       55H,0AAH        ;Uª-ˆ„ˆŠ€’Ž BOOT ‘…Š’Ž€ 
  
SEG_A           ENDS
		END     START
  

; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Remember Where You Saw This Phile First ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
; ÄÄÄÄÄÄÄ[=] ARRESTED DEVELOPMENT +31.77.3547477 The Netherlands [=]ÄÄÄÄÄÄÄ
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
