;

;  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