name boot2_asm .radix 16 n_000100: inc word ptr [7DF3] mov bx,[7DF3] add byte ptr [7EB2],2 call n_FFFF9D jmp short n_00014B n_000112: mov ax,3 test byte ptr [7DF7],4 je n_00011D inc ax n_00011D: mul si shr ax,1 sub ah,byte ptr [7EB2] mov bx,ax cmp bx,1FF jnb n_000100 mov dx,[bx+8000] test byte ptr [7DF7],4 jne n_000145 mov cl,4 test si,1 je n_000142 shr dx,cl n_000142: and dh,0F n_000145: test dx,0FFFF jz n_000151 n_00014B: inc si cmp si,di jbe n_000112 ret n_000151: mov dx,0FFF7 test byte ptr [7DF7],4 jnz n_000168 and dh,0F mov cl,4 test si,1 je n_000168 shl dx,cl n_000168: or [bx+8000],dx mov bx,[7DF3] call n_FFFF98 mov ax,si sub ax,2 mov bl,byte ptr [7C0Dh] xor bh,bh mul bx add ax,[7DF5] mov si,ax mov bx,0 call n_FFFF9D mov bx,si inc bx call n_FFFF98 mov bx,si mov [7DF9],si push cs pop ax sub ax,20 mov es,ax call n_FFFF98 push cs pop ax sub ax,40 mov es,ax mov bx,0 call n_FFFF98 ret mov ch,23 add dh,dh push es idiv word ptr [di+2] jne n_0001DE or byte ptr [7DF7],2 mov ax,0 mov ds,ax mov ax,[20] mov bx,[22] mov [20],7EDF mov [22],cs push cs pop ds mov [7FC9],ax mov [7FCBh],bx n_0001DE: ret push ds push ax push bx push cx push dx push cs pop ds mov ah,0F ;Get video mode int 10 mov bl,al cmp bx,[7FD4] je n_000227 mov [7FD4],bx dec ah mov byte ptr [7FD6],ah mov ah,1 cmp bl,7 jne n_000205 dec ah n_000205: cmp bl,4 jnb n_00020C dec ah n_00020C: mov byte ptr [7FD3],ah mov word ptr [7FCF],101 mov word ptr [7FD1],101 mov ah,3 ;Read cursor position int 10 push dx mov dx,[7FCF] jmp short n_00024A n_000227: mov ah,3 ;Read cursor position int 10 push dx mov ah,2 ;Set cursor position mov dx,[7FCF] int 10 mov ax,[7FCDh] cmp byte ptr [7FD3],1 jne n_000241 mov ax,8307 n_000241: mov bl,ah mov cx,1 mov ah,9 ;Write character with attribute int 10 n_00024A: mov cx,[7FD1] cmp dh,0 jne n_000258 xor ch,0FF inc ch n_000258: cmp dh,18 jne n_000262 xor ch,0FF inc ch n_000262: cmp dl,0 jne n_00026C xor cl,0FF inc cl n_00026C: cmp dl,byte ptr [7FD6] jne n_000277 xor cl,0FF inc cl n_000277: cmp cx,[7FD1] jne n_000294 mov ax,[7FCDh] and al,7 cmp al,3 jne n_00028B xor ch,0FF inc ch n_00028B: cmp al,5 jne n_000294 xor cl,0FF inc cl n_000294: add dl,cl add dh,ch mov [7FD1],cx mov [7FCF],dx mov ah,2 ;Set cursor position int 10 mov ah,8 ;Read character with attribute int 10 mov [7FCDh],ax mov bl,ah cmp byte ptr [7FD3],1 jne n_0002B6 mov bl,83 n_0002B6: mov cx,1 mov ax,907 ;Write character '\7' with attribute int 10 pop dx mov ah,2 ;Set cursor position int 10 pop dx pop cx pop bx pop ax pop ds jmp far ptr f_000020 add byte ptr [bx+si],al add word ptr [bx+di],ax add word ptr [bx+di],ax add bh,bh call word ptr [bx+si-49] mov bh,0B7 mov dh,40 inc ax mov dh,bl out 5A,al lodsb shl ah,cl jmp far ptr f_0F05E6 db '@d\`R@@@@db^b`' pop si jo n_000368 inc ax inc cx mov bh,0B7 mov bh,0B6 jmp n_000336 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 db 0011h dup (000h) adc al,byte ptr [bx][si] add byte ptr [bx][si],al add byte ptr [bx][di],al add dl,bh boot2: xor ax,ax mov ss,ax mov sp,7C00 push ss pop es mov bx,78 lds si,ss:[bx] push ds push si push ss push bx mov di,7C2Bh mov cx,0Bh cld n_000351: lodsb cmp byte ptr es:[di],0 je n_00035B mov al,byte ptr es:[di] n_00035B: stosb mov al,ah loop n_000351 push es pop ds mov [bx+2],ax mov [bx],7C2Bh sti int 13 jc n_0003D5 mov al,byte ptr [7C10] cbw mul word ptr [7C16] add ax,[7C1C] add ax,[7C0E] mov [7C3F],ax mov [7C37],ax mov ax,20 mul word ptr [7C11] mov bx,[7C0Bh] add ax,bx dec ax div bx add [7C37],ax mov bx,500 mov ax,[7C3F] call n_000440 mov ax,201 call n_00045A jb n_0003C2 mov di,bx mov cx,0Bh mov si,7DD6 rep cmpsb jne n_0003C2 lea di,[bx+20] mov si,7DE1 mov cx,0Bh rep cmpsb je n_0003DA n_0003C2: mov si,7D77 n_0003C5: call n_000432 xor ah,ah int 16 pop si pop ds pop [si] pop [si+2] int 19 n_0003D5: mov si,7DC0 jmp n_0003C5 n_0003DA: mov ax,[51C] xor dx,dx div word ptr [7C0Bh] inc al mov [7C3C],al mov ax,[7C37] mov [7C3Dh],ax mov bx,700 n_0003F1: mov ax,[7C37] call n_000440 mov ax,[7C18] sub al,[7C3Bh] inc ax cmp [7C3C],al jnb n_000408 mov al,[7C3Ch] n_000408: push ax call n_00045A pop ax jb n_0003D5 sub [7C3C],al je n_000421 add [7C37],ax mul word ptr [7C0Bh] add bx,ax jmp n_0003F1 n_000421: mov ch,[7C15] mov dl,[7DFDh] mov bx,[7C3Dh] jmp far ptr f_000700 n_000432: lodsb or al,al je n_000459 mov ah,0E ;Write character in TTY graphics mode mov bx,7 int 10 jmp n_000432 n_000440: xor dx,dx div word ptr [7C18] inc dl mov [7C3Bh],dl xor dx,dx div word ptr [7C1A] mov [7C2A],dl mov [7C39],ax n_000459: ret n_00045A: mov ah,2 mov dx,[7C39] mov cl,6 shl dh,cl or dh,[7C3Bh] mov cx,dx xchg ch,cl mov dl,[7DFDh] mov dh,[7C2A] int 13 ret db 0Dh,0A,'Non-System disk or disk error',0Dh,0A db 'Replace and strike any key when ready',0Dh,0A,0 db 0Dh,0A,'Disk Boot failure',0Dh,0A,0 db 'IBMBIO SYS' db 'IBMDOS SYS' db 12 dup (0) dw 0AA55 extrn f_000020:far,n_000336:near,n_000368:near extrn n_FFFF9D:near,n_FFFF98:near extrn f_000700:far,f_0F05E6:far,f_3FFF98:far extrn f_3FFF9D:far