home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / assemblr / library / nor_asm / editor.asm < prev    next >
Assembly Source File  |  1989-08-13  |  3KB  |  84 lines

  1. .MODEL    SMALL
  2.  
  3. ;-----------------------------------------------------------------------;
  4. ; This file contains procedures that are used for editing the SECTOR:    ;
  5. ;                                    ;
  6. ; WRITE_TO_MEMORY        Write a byte into SECTOR        ;
  7. ; EDIT_BYTE            Change byte in memory and on screen    ;
  8. ;-----------------------------------------------------------------------;
  9.  
  10. .CODE
  11.  
  12. .DATA
  13.     EXTRN    SECTOR:BYTE
  14.     EXTRN    SECTOR_OFFSET:WORD
  15.     EXTRN    PHANTOM_CURSOR_X:BYTE
  16.     EXTRN    PHANTOM_CURSOR_Y:BYTE
  17. .CODE
  18. ;-----------------------------------------------------------------------;
  19. ; This procedure writes one byte to SECTOR, at the memory location    ;
  20. ; pointed to by the phantom cursor.                    ;
  21. ;                                    ;
  22. ; On entry:    DL    Byte to write to SECTOR                ;
  23. ;                                    ;
  24. ; The offset is calculated by                        ;
  25. ;   OFFSET = SECTOR_OFFSET + (16 * PHANTOM_CURSOR_Y) + PHANTOM_CURSOR_X    ;
  26. ;                                    ;
  27. ; Reads:    PHANTOM_CURSOR_X, PHANTOM_CURSOR_Y, SECTOR_OFFSET    ;
  28. ; Writes:    SECTOR                            ;
  29. ;-----------------------------------------------------------------------;
  30. WRITE_TO_MEMORY    PROC
  31.     PUSH    AX
  32.     PUSH    BX
  33.     PUSH    CX
  34.     MOV    BX,SECTOR_OFFSET
  35.     MOV    AL,PHANTOM_CURSOR_Y
  36.     XOR    AH,AH
  37.     MOV    CL,4            ;Multiply PHANTOM_CURSOR_Y by 16
  38.     SHL    AX,CL
  39.     ADD    BX,AX            ;BX = SECTOR_OFFSET + (16 * Y)
  40.     MOV    AL,PHANTOM_CURSOR_X
  41.     XOR    AH,AH
  42.     ADD    BX,AX            ;That's the address!
  43.     MOV    SECTOR[BX],DL        ;Now, store the byte
  44.     POP    CX
  45.     POP    BX
  46.     POP    AX
  47.     RET
  48. WRITE_TO_MEMORY        ENDP
  49.  
  50.     PUBLIC    EDIT_BYTE
  51.     EXTRN    SAVE_REAL_CURSOR:PROC, RESTORE_REAL_CURSOR:PROC
  52.     EXTRN    MOV_TO_HEX_POSITION:PROC, MOV_TO_ASCII_POSITION:PROC
  53.     EXTRN    WRITE_PHANTOM:PROC, WRITE_EDITOR_PROMPT:PROC
  54.     EXTRN    CURSOR_RIGHT:PROC, WRITE_HEX:PROC, WRITE_CHAR:PROC
  55. ;-----------------------------------------------------------------------;
  56. ; This procedure changes a byte in memory and on the screen.        ;
  57. ;                                    ;
  58. ;    DL    Byte to write into SECTOR, and change on screen        ;
  59. ;                                    ;
  60. ; Uses:        SAVE_REAL_CURSOR, RESTORE_REAL_CURSOR            ;
  61. ;        MOV_TO_HEX_POSITION, MOV_TO_ASCII_POSITION        ;
  62. ;        WRITE_PHANTOM, WRITE_PROMPT_LINE, CURSOR_RIGHT        ;
  63. ;        WRITE_HEX, WRITE_CHAR, WRITE_TO_MEMORY            ;
  64. ; Reads:    EDITOR_PROMPT                        ;
  65. ;-----------------------------------------------------------------------;
  66. EDIT_BYTE    PROC
  67.     PUSH    DX
  68.     CALL    SAVE_REAL_CURSOR
  69.     CALL    MOV_TO_HEX_POSITION    ;Move to the hex number in the
  70.     CALL    CURSOR_RIGHT        ; hex window
  71.     CALL    WRITE_HEX        ;Write the new number
  72.     CALL    MOV_TO_ASCII_POSITION    ;Move to the char. in the ASCII window
  73.     CALL    WRITE_CHAR        ;Write the new character
  74.     CALL    RESTORE_REAL_CURSOR    ;Move cursor back where it belongs
  75.     CALL    WRITE_PHANTOM        ;Rewrite the phantom cursor
  76.     CALL    WRITE_TO_MEMORY        ;Save this new byte in SECTOR
  77.     CALL    WRITE_EDITOR_PROMPT    ;Display the Edit prompt
  78.     POP    DX
  79.     RET
  80. EDIT_BYTE    ENDP
  81.  
  82.  
  83.     END
  84.