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

 
Output of file : CURSOR18.ASM contained in archive : NORTASM.ZIP
CR EQU 13 ;Carriage return
LF EQU 10 ;Line feed

.MODEL SMALL
.CODE

PUBLIC CLEAR_SCREEN
;-----------------------------------------------------------------------;
; This procedure clears the entire screen. ;
;-----------------------------------------------------------------------;
CLEAR_SCREEN PROC
PUSH AX
PUSH BX
PUSH CX
PUSH DX
XOR AL,AL ;Blank entire window
XOR CX,CX ;Upper left corner is at (0,0)
MOV DH,24 ;Bottom line of screen is line 24
MOV DL,79 ;Right side is at column 79
MOV BH,7 ;Use normal attribute for blanks
MOV AH,6 ;Call for SCROLL-UP function
INT 10h ;Clear the window
POP DX
POP CX
POP BX
POP AX
RET
CLEAR_SCREEN ENDP


PUBLIC GOTO_XY
;-----------------------------------------------------------------------;
; This procedure moves the cursor ;
; ;
; On entry: DH Row (Y) ;
; DL Column (X) ;
;-----------------------------------------------------------------------;
GOTO_XY PROC
PUSH AX
PUSH BX
MOV BH,0 ;Display page 0
MOV AH,2 ;Call for SET CURSOR POSITION
INT 10h
POP BX
POP AX
RET
GOTO_XY ENDP

PUBLIC CURSOR_RIGHT
;-----------------------------------------------------------------------;
; This procedure moves the cursor one position to the right or to the ;
; next line if the cursor was at the end of a line. ;
; ;
; Uses: SEND_CRLF ;
;-----------------------------------------------------------------------;
CURSOR_RIGHT PROC
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV AH,3 ;Read the current cursor position
MOV BH,0 ;On page 0
INT 10h ;Read cursor position
MOV AH,2 ;Set new cursor position
INC DL ;Set column to next position
CMP DL,79 ;Make sure column <= 79
JBE OK
CALL SEND_CRLF ;Go to next line
JMP DONE
OK: INT 10h
DONE: POP DX
POP CX
POP BX
POP AX
RET
CURSOR_RIGHT ENDP

PUBLIC CLEAR_TO_END_OF_LINE
;-----------------------------------------------------------------------;
; This procedure clears the line from the current cursor position to ;
; the end of that line. ;
;-----------------------------------------------------------------------;
CLEAR_TO_END_OF_LINE PROC
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV AH,3 ;Read current cursor position
XOR BH,BH ; on page 0
INT 10h ;Now have (X,Y) in DL, DH
MOV AH,6 ;Set up to clear to end of line
XOR AL,AL ;Clear window
MOV CH,DH ;All on same line
MOV CL,DL ;Start at the cursor position
MOV DL,79 ;And stop at the end of the line
MOV BH,7 ;Use normal attribute
INT 10h
POP DX
POP CX
POP BX
POP AX
RET
CLEAR_TO_END_OF_LINE ENDP

PUBLIC SEND_CRLF
;-----------------------------------------------------------------------;
; This routine just sends a carriage return-line feed pair to the ;
; display, using the DOS routines so that scrolling will be handled ;
; correctly. ;
;-----------------------------------------------------------------------;
SEND_CRLF PROC
PUSH AX
PUSH DX
MOV AH,2
MOV DL,CR
INT 21h
MOV DL,LF
INT 21h
POP DX
POP AX
RET
SEND_CRLF ENDP


END


  3 Responses to “Category : Assembly Language Source Code
Archive   : NORTASM.ZIP
Filename : CURSOR18.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/