home *** CD-ROM | disk | FTP | other *** search
- .MODEL SMALL
-
- ;-----------------------------------------------------------------------;
- ; This file contains procedures that are used for editing the SECTOR: ;
- ; ;
- ; WRITE_TO_MEMORY Write a byte into SECTOR ;
- ; EDIT_BYTE Change byte in memory and on screen ;
- ;-----------------------------------------------------------------------;
-
- .CODE
-
- .DATA
- EXTRN SECTOR:BYTE
- EXTRN SECTOR_OFFSET:WORD
- EXTRN PHANTOM_CURSOR_X:BYTE
- EXTRN PHANTOM_CURSOR_Y:BYTE
- .CODE
- ;-----------------------------------------------------------------------;
- ; This procedure writes one byte to SECTOR, at the memory location ;
- ; pointed to by the phantom cursor. ;
- ; ;
- ; On entry: DL Byte to write to SECTOR ;
- ; ;
- ; The offset is calculated by ;
- ; OFFSET = SECTOR_OFFSET + (16 * PHANTOM_CURSOR_Y) + PHANTOM_CURSOR_X ;
- ; ;
- ; Reads: PHANTOM_CURSOR_X, PHANTOM_CURSOR_Y, SECTOR_OFFSET ;
- ; Writes: SECTOR ;
- ;-----------------------------------------------------------------------;
- WRITE_TO_MEMORY PROC
- PUSH AX
- PUSH BX
- PUSH CX
- MOV BX,SECTOR_OFFSET
- MOV AL,PHANTOM_CURSOR_Y
- XOR AH,AH
- MOV CL,4 ;Multiply PHANTOM_CURSOR_Y by 16
- SHL AX,CL
- ADD BX,AX ;BX = SECTOR_OFFSET + (16 * Y)
- MOV AL,PHANTOM_CURSOR_X
- XOR AH,AH
- ADD BX,AX ;That's the address!
- MOV SECTOR[BX],DL ;Now, store the byte
- POP CX
- POP BX
- POP AX
- RET
- WRITE_TO_MEMORY ENDP
-
- PUBLIC EDIT_BYTE
- EXTRN SAVE_REAL_CURSOR:PROC, RESTORE_REAL_CURSOR:PROC
- EXTRN MOV_TO_HEX_POSITION:PROC, MOV_TO_ASCII_POSITION:PROC
- EXTRN WRITE_PHANTOM:PROC, WRITE_EDITOR_PROMPT:PROC
- EXTRN CURSOR_RIGHT:PROC, WRITE_HEX:PROC, WRITE_CHAR:PROC
- ;-----------------------------------------------------------------------;
- ; This procedure changes a byte in memory and on the screen. ;
- ; ;
- ; DL Byte to write into SECTOR, and change on screen ;
- ; ;
- ; Uses: SAVE_REAL_CURSOR, RESTORE_REAL_CURSOR ;
- ; MOV_TO_HEX_POSITION, MOV_TO_ASCII_POSITION ;
- ; WRITE_PHANTOM, WRITE_PROMPT_LINE, CURSOR_RIGHT ;
- ; WRITE_HEX, WRITE_CHAR, WRITE_TO_MEMORY ;
- ; Reads: EDITOR_PROMPT ;
- ;-----------------------------------------------------------------------;
- EDIT_BYTE PROC
- PUSH DX
- CALL SAVE_REAL_CURSOR
- CALL MOV_TO_HEX_POSITION ;Move to the hex number in the
- CALL CURSOR_RIGHT ; hex window
- CALL WRITE_HEX ;Write the new number
- CALL MOV_TO_ASCII_POSITION ;Move to the char. in the ASCII window
- CALL WRITE_CHAR ;Write the new character
- CALL RESTORE_REAL_CURSOR ;Move cursor back where it belongs
- CALL WRITE_PHANTOM ;Rewrite the phantom cursor
- CALL WRITE_TO_MEMORY ;Save this new byte in SECTOR
- CALL WRITE_EDITOR_PROMPT ;Display the Edit prompt
- POP DX
- RET
- EDIT_BYTE ENDP
-
-
- END