home *** CD-ROM | disk | FTP | other *** search
- PAGE 70,132
- .RADIX 10
-
- cseg segment para public 'CODE'
- assume cs:cseg, ds:nothing
-
- org 100H
- start: jmp short begin ;Sprung zur Installationsroutine
-
- old13 label dword ;Speicherung alten Interrupt 13 Adresse
- old13_ofs dw ? ;Offset-Teil
- old13_seg dw ? ;Segment-Teil
-
- entry: push ax ;Alle benötigten...
- push bx ;...Register...
- push ds ;...retten
- or ah,ah ;Wurde Funktion 0 (RESET) aufgerufen?
- jz exit ;Ja, dann Ende
- cmp ah,4 ;Wurde Funktion über 4 aufgerufen?
- ja exit ;Ja, dann Ende
- xor ax,ax ;Setze AX=0
- mov ds,ax ;Setze auch DS=0
- lds bx,ds:[78h] ;Lade die Disk-Parameter Tabelle in DS:BX
- mov byte ptr ds:[bx+4],25 ;Setze auf maximal 25 Sektoren pro Spur
- exit: pop ds ;Hole alle benutzten...
- pop bx ;...Register...
- pop ax ;...wieder zurück
- jmp old13 ;Springe an den alten Interrupt 13
-
- assume cs:cseg, ds:cseg
-
- begin: push cs
- pop ds
- mov dx,offset text ;Text in DS:DX laden
- mov ah,9 ;System Call 9 für...
- int 21h ;Textausgabe
-
- mov es,ds:[2ch] ;Setze ES auf das Environment
- mov ah,49h ;System Call 49 für Speicherfreigabe
- int 21h ;Environment freigeben
-
- ; mov ax,cs ;Setze AX auf das Code-Segment
- ; sub ax,0ah ;Ziehe 160 Bytes ab (10 Paragraphen)
- ; mov es,ax ;Speichere das Ergebnis in ES
- ; mov si,100h ;Setze SI auf den Anfang des Programms
- ; mov di,si ;DI ebenfalls
- ; mov cx,offset begin-start ;Länge des Programms in CX
- ; cld ;vorwärts...
- ; rep movsb ;...nach oben verschieben
- ; push es ;Setze DS...
- ; pop ds ;...auf ES
-
- mov ax,3513H ;System Call 35, um...
- int 21h ;Adresse von Interrupt 13 in ES:BX zu kriegen
- mov ds:old13_seg,es ;Adresse für später...
- mov ds:old13_ofs,bx ;...abspeichern.
-
- mov dx,offset entry ;DS:DX auf den neuen Interrupt 13
- mov ax,2513h ;System Call 25...
- int 21h ;...zum Installieren
- push cs ;DS wieder auf...
- pop ds ;...das Code-Segment setzen
- mov dx,offset begin ;Benötigte Länge die resident sein soll
- int 27h ;und Programm speicherresident verlassen
-
- text db 'FDREAD - Ver 1.00 - written by: C.Hochstätter',10,10,13,"$"
-
- cseg ends
- end start
-
-
-