home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / PROGRAMS / UTILS / FLOPPIES / HCFORMAT.ZIP / HCREAD.ASM < prev   
Encoding:
Assembly Source File  |  1989-04-15  |  3.7 KB  |  72 lines

  1.              PAGE      70,132
  2.              .RADIX    10
  3.  
  4. cseg         segment   para public 'CODE'
  5.              assume    cs:cseg, ds:nothing
  6.  
  7.              org       100H
  8. start:       jmp short begin                  ;Sprung zur Installationsroutine
  9.  
  10. old13        label     dword                  ;Speicherung alten Interrupt 13 Adresse
  11. old13_ofs    dw        ?                      ;Offset-Teil
  12. old13_seg    dw        ?                      ;Segment-Teil
  13.  
  14. entry:       push      ax                     ;Alle benötigten...
  15.              push      bx                     ;...Register...
  16.              push      ds                     ;...retten
  17.              or        ah,ah                  ;Wurde Funktion 0 (RESET) aufgerufen?
  18.              jz        exit                   ;Ja, dann Ende
  19.              cmp       ah,4                   ;Wurde Funktion über 4 aufgerufen?
  20.              ja        exit                   ;Ja, dann Ende
  21.              xor       ax,ax                  ;Setze AX=0
  22.              mov       ds,ax                  ;Setze auch DS=0
  23.              lds       bx,ds:[78h]            ;Lade die Disk-Parameter Tabelle in DS:BX
  24.              mov       byte ptr ds:[bx+4],25  ;Setze auf maximal 25 Sektoren pro Spur
  25. exit:        pop       ds                     ;Hole alle benutzten...
  26.              pop       bx                     ;...Register...
  27.              pop       ax                     ;...wieder zurück
  28.              jmp       old13                  ;Springe an den alten Interrupt 13
  29.  
  30.              assume cs:cseg, ds:cseg
  31.  
  32. begin:       push      cs
  33.              pop       ds
  34.              mov       dx,offset text         ;Text in DS:DX laden
  35.              mov       ah,9                   ;System Call 9 für...
  36.              int       21h                    ;Textausgabe
  37.  
  38.              mov       es,ds:[2ch]            ;Setze ES auf das Environment
  39.              mov       ah,49h                 ;System Call 49 für Speicherfreigabe
  40.              int       21h                    ;Environment freigeben
  41.  
  42. ;             mov       ax,cs                  ;Setze AX auf das Code-Segment
  43. ;             sub       ax,0ah                 ;Ziehe 160 Bytes ab (10 Paragraphen)
  44. ;             mov       es,ax                  ;Speichere das Ergebnis in ES
  45. ;             mov       si,100h                ;Setze SI auf den Anfang des Programms
  46. ;             mov       di,si                  ;DI ebenfalls
  47. ;             mov       cx,offset begin-start  ;Länge des Programms in CX
  48. ;             cld                              ;vorwärts...
  49. ;             rep       movsb                  ;...nach oben verschieben
  50. ;             push      es                     ;Setze DS...
  51. ;             pop       ds                     ;...auf ES
  52.  
  53.              mov       ax,3513H               ;System Call 35, um...
  54.              int       21h                    ;Adresse von Interrupt 13 in ES:BX zu kriegen
  55.              mov       ds:old13_seg,es        ;Adresse für später...
  56.              mov       ds:old13_ofs,bx        ;...abspeichern.
  57.  
  58.              mov       dx,offset entry        ;DS:DX auf den neuen Interrupt 13
  59.              mov       ax,2513h               ;System Call 25...
  60.              int       21h                    ;...zum Installieren
  61.              push      cs                     ;DS wieder auf...
  62.              pop       ds                     ;...das Code-Segment setzen
  63.              mov       dx,offset begin        ;Benötigte Länge die resident sein soll
  64.              int       27h                    ;und Programm speicherresident verlassen
  65.  
  66. text         db        'FDREAD - Ver 1.00 - written by: C.Hochstätter',10,10,13,"$"
  67.  
  68. cseg         ends
  69.              end       start
  70.  
  71.  
  72.