;
; This program is free software; you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation; either version 2 of the License, or
; (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU Library General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with this program; if not, write to the Free Software
; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
;
;(C)1998-2004 Raster Software Vigo
Code segment public
ASSUME CS:Code, DS:Code, ES:Code
org 100h
Prog1 PROC NEAR
; ******************************************************
; * this is the code saved in the MBR of the diskettes *
; ******************************************************
load1: CLD
XOR AX,AX
MOV DS,AX
MOV ES,AX
MOV SI,7C17h ; start address of the code
MOV DI,600h ; address 0000:0600h
MOV CX,100h ; 256 words
REPZ
MOVSW ; relocates the code
DB 0EAh ; Far jump to 0000:0606
DW 606h
DW 0h
icopy2: DB "GAG: ",90h ; address 0000:0600h
MOV DI,600h ; start address of the message 'GAG: '
fbhdb1: MOV AH,0Eh
MOV BX,7
MOV AL,[DI]
CMP AL,90h ; end of the message?
fbe1: JE fbootn ; if true, continue.
PUSH DI
INT 10h ; if false, print the letter
POP DI
INC DI
JMP fbhdb1 ; and close de loop
; loads GAG
fbootn: MOV AX,2000h ; segment where GAG INSTALLER is loaded
MOV DS,AX
MOV ES,AX
MOV AX,3000h
MOV SS,AX
MOV CX,3 ; try 3 times max
fload: PUSH CX
MOV DX,0h ; Floppy disk 0, head 0
MOV CX,02h ; sector and track
MOV AH,02
MOV AL,17; 17 sectors, BIOS_load_sector
MOV BX,0100h ; offset where GAG INSTALLER is loaded
INT 13h ; load the MBR
JNC fco1
POP CX
LOOP fload
MOV AL,49 ; error 1, error reading a sector!
JMP ferror
fco1: POP CX
frun: MOV AX,2000h
MOV ES,AX ; GAG's segment
MOV DS,AX
CMP word ptr ES:[11Ch],4147h ; tests for GAG signature
JNE ferr
CMP word ptr ES:[11Eh],0047h
JNE ferr
DB 0EAh
DW 0100h
DW 2000h ; Jumps to GAG INSTALLER
ferr: MOV AL,51 ; error 3, GAG INSTALLER is not in the disk!
ferror: MOV BX,7
MOV AH,0Eh
INT 10h ; prints the error passed in AL
fbuc: JMP fbuc ; and locks the machine to allows user to read it.
Prog1 ENDP
Code ends
END Prog1
syntax highlighted by Code2HTML, v. 0.9.1