DOSSEG
.MODEL    SMALL

.STACK

.DATA

     PUBLIC    SECTOR_OFFSET
;-----------------------------------------------;
; SECTOR_OFFSET es el desplazamiento de la mi-  ;
; tad del sector, dentro del sector completo.   ;
; Tiene que ser un m£ltiplo de 16, y no puede   ;
; ser mayor de 256.                             ;
;-----------------------------------------------;
SECTOR_OFFSET  DW      0

     PUBLIC    CURRENT_SECTOR_NO, DISK_DRIVE_NO
CURRENT_SECTOR_NO      DW     0         ;Inicialmente sector 0
DISK_DRIVE_NO          DB     0         ;Inicialmente unidad A:

     PUBLIC    LINES_BEFORE_SECTOR, HEADER_LINE_NO
     PUBLIC    HEADER_PART_1, HEADER_PART_2
;-----------------------------------------------;
; LINES_BEFORE_SECTOR es el n£mero de l¡neas al ;
; principio de la pantalla despu‚s de presentar ;
; medio sector.                                 ;
;-----------------------------------------------;
LINES_BEFORE_SECTOR    DB     2
HEADER_LINE_NO         DB     0
HEADER_PART_1          DB     'Disco ',0
HEADER_PART_2          DB     '         Sector ',0
     PUBLIC    PROMPT_LINE_NO, EDITOR_PROMPT
PROMPT_LINE_NO         DB     21
EDITOR_PROMPT          DB     'Pulse tecla de funci¢n o introduzca'
                       DB      ' car cter o byte hex:   ',0

.DATA?

     PUBLIC    SECTOR
;-----------------------------------------------;
; El sector de entrada (sobre 8192 bytes) es    ;
; almacenado en esta parte de la memoria.       ;
;-----------------------------------------------;
SECTOR    DB   8192 DUP (?)

.CODE

     EXTRN     CLEAR_SCREEN:PROC, READ_SECTOR:PROC
     EXTRN     INIT_SEC_DISP:PROC, WRITE_HEADER:PROC
     EXTRN     WRITE_PROMPT_LINE:PROC, DISPATCHER:PROC
DISK_PATCH     PROC
     MOV  AX,DGROUP           ;Pone el segmento de datos en AX
     MOV  DS,AX               ;Pone DS parta que apunte a los datos

     CALL CLEAR_SCREEN
     CALL WRITE_HEADER
     CALL READ_SECTOR
     CALL INIT_SEC_DISP
     LEA  DX,EDITOR_PROMPT
     CALL WRITE_PROMPT_LINE
     CALL DISPATCHER

     MOV  AH,4Ch              ;Regresa al DOS
     INT  21h
DISK_PATCH     ENDP

     END  DISK_PATCH
