
(* Author: Salvatore Meschini - http://www.ermes.it/pws/mesk -
smeschini@ermes.it*)
(* This procedure can replace crt.gotoxy so your executables will be 1648
bytes    smaller !!!*)
(* Note: my gotoxy is fast AS crt.gotoxy -> your benefit is in size not in
speed*)

Procedure GOtoXY(X,Y:byte);Assembler;

  var currentpage,rows,cols:byte;

 ASM
   MOV SI,40h
   MOV ES,SI
   MOV AL,ES:[0084h]   {Get Rows}
   INC AL
   MOV ROWS,AL
   MOV AL,ES:[004Ah]   {Get Columns}
   MOV COLS,AL
   MOV AL,ES:[0062h]
   MOV CURRENTPAGE,AL  (* Get current page *)
   MOV DL,X
   DEC DL
   CMP DL,0            (* Safety checks *)
   JB @OUTLIMITS       
   CMP DL,COLS
   JA @OUTLIMITS
   MOV DH,Y
   DEC DH
   CMP DH,0
   JB @OUTLIMITS
   CMP DH,ROWS
   JA @OUTLIMITS
   MOV AH,02h
   MOV BH,CURRENTPAGE
   INT 10h            (* Call BIOS to change position *)  
  @OUTLIMITS:
 END;


