Category : Assembly Language Source Code
Archive   : NORTASM.ZIP
Filename : DSKPATCH.ASM

 
Output of file : DSKPATCH.ASM contained in archive : NORTASM.ZIP
DOSSEG
.MODEL SMALL

;-----------------------------------------------------------------------;
; This file contains the main program, along with most of the variables ;
; for Dskpatch. ;
;-----------------------------------------------------------------------;


.STACK

.DATA

PUBLIC SECTOR_OFFSET
;-----------------------------------------------;
; SECTOR_OFFSET is the offset of the half- ;
; sector display into the full sector. It must ;
; be a multiple of 16, and not greater than 256 ;
;-----------------------------------------------;
SECTOR_OFFSET DW 0

PUBLIC CURRENT_SECTOR_NO, DISK_DRIVE_NO
CURRENT_SECTOR_NO DW 0 ;Initially sector 0
DISK_DRIVE_NO DB 0 ;Initially Drive A:


PUBLIC FILE_FLAG, FILE_HANDLE, FILE_NAME
PUBLIC FILE_NAME_STRING
PUBLIC STRING_LENGTH, LENGTH_READ
;-----------------------------------------------;
; FILE_FLAG is 0 for absolute sector reads and ;
; writes. When it's 1, reads and writes are ;
; for sectors within a file. Then ;
; SECTOR_OFFSET is the relative sector within ;
; the file. ;
;-----------------------------------------------;
FILE_FLAG DB 0 ;Initially absolute sectors
FILE_HANDLE DW 0 ;Handle of the opened file

FILE_NAME_STRING LABEL BYTE
STRING_LENGTH DB 80 ;Read up to 80 characters
LENGTH_READ DB ? ;Number of characters read
FILE_NAME DB 80 DUP (' ') ;Name of file being looked at


PUBLIC LINES_BEFORE_SECTOR, HEADER_LINE_NO
PUBLIC HEADER_PART_1, HEADER_PART_2, FILE_HEADER
;-----------------------------------------------;
; LINES_BEFORE_SECTOR is the number of lines ;
; at the top of the screen before the half- ;
; sector display. ;
;-----------------------------------------------;
LINES_BEFORE_SECTOR DB 2
HEADER_LINE_NO DB 0

HEADER_PART_1 DB 'Disk ',0
HEADER_PART_2 DB ' Sector ',0
FILE_HEADER DB ' From start of: ',0

PUBLIC PROMPT_LINE_NO, EDITOR_PROMPT, DISK_PROMPT
PUBLIC SECTOR_PROMPT, FILE_NAME_PROMPT, OFFSET_PROMPT
PROMPT_LINE_NO DB 21
EDITOR_PROMPT DB 'Press function key, or enter'
DB ' character or hex byte: ',0
DISK_PROMPT DB 'Enter letter for disk drive: ',0
SECTOR_PROMPT DB 'Enter sector dumber (decimal) to read: ',0
FILE_NAME_PROMPT DB 'Enter file name: ',0
OFFSET_PROMPT DB 'Enter offset from start of file: ',0


PUBLIC FUNCTION_KEY_LINE_NO, FUNCTION_KEY_LINE
FUNCTION_KEY_LINE_NO DB 24
FUNCTION_KEY_LINE DB '1', 7 DUP(' ')
DB '2', 24, 'Save', 2 DUP(' ')
DB '3Prev.', 2 DUP(' ')
DB '4Next', 3 DUP(' ')
DB '5Drive', 2 DUP(' ')
DB '6Sector', ' '
DB '7File', 3 DUP(' ')
DB '8Offset', ' '
DB '9', 7 DUP(' ')
DB '0Exit', 2 DUP(' ')
DB 0

PUBLIC ERROR_MESSAGE_LINE_NO
ERROR_MESSAGE_LINE_NO DB 23


.DATA?

PUBLIC SECTOR
;-----------------------------------------------;
; The entire sector (up to 8192 bytes) is ;
; stored in this part of memory. ;
;-----------------------------------------------;
SECTOR DB 8192 DUP (?)

.CODE

EXTRN CLEAR_SCREEN:PROC, INIT_SEC_DISP:PROC
EXTRN WRITE_PROMPT_LINE:PROC, DISPATCHER:PROC
EXTRN WRITE_FUNCTION_KEYS:PROC
EXTRN GOTO_XY:PROC, CLEAR_TO_END_OF_LINE:PROC
EXTRN INIT_WRITE_CHAR:PROC, INIT_DISK:PROC
EXTRN WRITE_EDITOR_PROMPT:PROC
DISK_PATCH PROC
MOV AX,DGROUP ;Put data segment into AX
MOV DS,AX ;Set DS to point to data
MOV ES,AX ;Also set ES to our data segment

CALL INIT_WRITE_CHAR ;Initialize the fast write char
CALL CLEAR_SCREEN ;Clear the entire screen
CALL INIT_DISK ;Set up the disk information
CALL WRITE_FUNCTION_KEYS ;Display the function-key line
CALL INIT_SEC_DISP ;Display the first part of this sector
CALL WRITE_EDITOR_PROMPT ;Display the Edit prompt

CALL DISPATCHER

XOR DL,DL ;Place cursor at bottom of screen
MOV DH,24
CALL GOTO_XY
CALL CLEAR_TO_END_OF_LINE ;Clear the inverse video key line
MOV DH,23
CALL GOTO_XY ;And leave cursor on line 23
MOV AH,4Ch ;Return to DOS
INT 21h
DISK_PATCH ENDP


END DISK_PATCH


  3 Responses to “Category : Assembly Language Source Code
Archive   : NORTASM.ZIP
Filename : DSKPATCH.ASM

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/