home *** CD-ROM | disk | FTP | other *** search
- title FIXCSR.ASM: A LINKABLE ROUTINE TO FIX THE CURSOR POSITION.
- ;THIS ROUTINE IS PASSED A DUMMY INTEGER VARIABLE AND RETURNS THE
- ;CURRENT CURSOR ROW AND COLUMN POSITION BY MEANS OF A BIOS CALL.
- ;THIS ROUTINE IS NECESSARY WHEN USING MACHINE LANGUAGE OR DOS
- ;FUNCTIONS WHICH PRINT TO THE SCREEN, BECAUSE QUICK BASIC LOSES
- ;TRACK OF WHERE THE CURSOR IS. THIS ROUTINE CAN BE USED WITH A
- ;LOCATE FUNCTION TO TELL QB TO POSITION THE CURSOR TO WHERE DOS
- ;KNOWS IT ALREADY IS. ON RETURN, THE INTEGER VARIABLE CONTAINS THE
- ;ROW IN THE LOW ORDER BYTE, AND THE COLUMN IN THE HIGH ORDER BYTE.
- ;
- ;WRITTEN BY BRUCE W. TONKIN ON 12-16-85. COPYRIGHT, 1985, BRUCE W.
- ;TONKIN. YOU MAY USE THIS ROUTINE WITH OR WITHOUT ATTRIBUTION.
- ;THIS ROUTINE WAS WRITTEN USING IBM MACRO-ASSEMBLER VERSION 1.0
- ;FOR USE WITH MY WORD! (REGISTERED TRADEMARK).
-
- DATA SEGMENT WORD PUBLIC 'DATA'
- STORAGE DW 16
- DATA ENDS
- DGROUP GROUP DATA
- CODE SEGMENT BYTE PUBLIC 'CODE'
- ASSUME CS:CODE, DS:DGROUP
- PUBLIC FIXCSR
- FIXCSR PROC FAR
- PUSH BP ;SAVE BASE POINTER
- MOV BP,SP ;SET UP TO ADDRESS OFF OF BP
- MOV BX,[BP]+6 ;GET THE ADDRESS OF THE PARAMETER
- MOV STORAGE,BX ;SAVE ADDRESS OF VARIABLE
- MOV BX,0 ;SET UP FOR PAGE ZERO
- MOV AH,3 ;BIOS FUNCTION CALL FOR READING CURSOR POSITION
- PUSH DS
- INT 010H ;INTERRUPT 10 HEX=16 DECIMAL
- MOV BX,STORAGE ;BX NOW POINTS TO VARIABLE AGAIN
- MOV [BX],DX ;DH,DL POINT TO ROW AND COLUMN POSITION
- ;AND VALUES ARE STORED IN VARIABLE FOR RETURN
- POP DS
- POP BP ;RESTORE BASE POINTER
- RET 2 ;RETURN AND REMOVE
- ONE PARAMETER FROM STACK
- FIXCSR ENDP
- CODE ENDS
- END