;Copyright 1984	by ABComputing					   May 15, 1984
;
;    ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
;    ³									 ³
;    ³	 THIS FILE CONTAINS FIVE ROUTINES:				 ³
;    ³									 ³
;    ³	 KEYS	 - INDICATES IF	A PRESSED KEY GENERATES	AN		 ³
;    ³		   EXTENDED OR NON-EXTENDED ASCII CODE.			 ³
;    ³	 DRIVE	 - CHANGES DEFAULT DRIVE TO "B: DRIVE.                   ³
;    ³	 CURSOR	 - MOVES CURSOR	TO HOME	POSITION			 ³
;    ³	 REVERSE - MANIPULATES STRING "CBA" INTO "ABC".                  ³
;    ³	 RENAM	 - RENAMES THE FILE  "A:TEMP.TXT" TO "A:TRASH.TXT".      ³
;    ³									 ³
;    ³	 EACH ROUTINE  SHOULD ASSEMBLE	AND LINK  WITHOUT WARNINGS  OR	 ³
;    ³	 ERRORS.							 ³
;    ³									 ³
;    ³	 DOS CALLS ARE LISTED IN THE APPENDIX OF THE DOS MANUAL.   FOR	 ³
;    ³	 BIOS CALLS, OBTAIN EITHER  THE	TECH.  REF. MANUAL,  OR	REVIEW	 ³
;    ³	 THE  "INTERRUPT  PHONEBOOK"  IN  THE  DOS COLUMN OF OUR FIRST   ³
;    ³	 ISSUE.								 ³
;    ³									 ³
;    ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ


;Copyright 1984	by ABComputing					   May 15, 1984
;    ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
;    ³									 ³
;    ³	 EACH KEY ON THE  KEYBOARD, WHEN PRESSED, GENERATES  EITHER AN	 ³
;    ³	 ASCII CODE, OR	AN EXTENDED-ASCII CODE.	 (SEE APPENDIX IN  THE	 ³
;    ³	 BASIC	MANUAL	FOR  DETAILED  LISTINGS	 OF SCAN CODES.)  THIS	 ³
;    ³	 ROUTINE USES THE BIOS INT 16H TO READ THE KEYBOARD AND	RETURN	 ³
;    ³	 THESE SCAN CODES.						 ³
;    ³									 ³
;    ³	 AFTER A KEY IS	PRESSED, IF AL = 0 THEN	AN  EXTENDED-SCAN-CODE	 ³
;    ³	 KEY WAS PRESSED,AND THE SCAN  CODE OF THE KEY IS RETURNED  IN	 ³
;    ³	 AH. IF	AL<> 0,	THEN AL	CONTAINS THE SCAN CODE FOR THE KEY.	 ³
;    ³									 ³
;    ³	 THIS ROUTINE  PRINTS A	 MESSAGE INDICATING  THE TYPE  OF SCAN	 ³
;    ³	 CODE GENERATED.   EITHER:  "A  NON-EXTENDED-SCAN-CODE KEY WAS   ³
;    ³	 PRESSED" OR "AN EXTENDED-SCAN-CODE KEY WAS PRESSED".            ³
;    ³									 ³
;    ³	 PRESS F10  TO EXIT  THIS ROUTINE.   F10 HAS  AN EXTENDED-SCAN	 ³
;    ³	 CODE OF 68							 ³
;    ³									 ³
;    ³	 PLACE THIS ROUTINE IN FILE: KEYBOARD.ASM			 ³
;    ³									 ³
;    ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
;
;
;--THINK OF "EQU" AS AN  "EQUATE" OR EQUAL SIGN.  THE  ASSEMBLER
;  WILL	REPLACE	EACH OCCURRENCE	OF "CR", AND "LF" IN THE  SOURCE
;  CODE	BY 10 AND 13, RESPECTIVELY.
;


CR	 EQU	10
LF	 EQU	13

F10	 EQU	68	       ;SCAN CODE FOR F10 IS 68	(SEE BASIC APPENDIX)

;------------------------------------------------------------------------
DATA	SEGMENT	PARA

ANY_KEY		DB  'PRESS ANY KEY',CR,LF,'$'

NORMAL_KEY	DB  'A NON-EXTENDED-SCAN-CODE KEY WAS PRESSED'
		DB  CR,LF,CR,LF,'$'

EXTENDED_KEY	DB  'AN EXTENDED-SCAN-CODE KEY WAS PRESSED'
		DB  CR,LF,CR,LF,'$'

DATA	ENDS
;------------------------------------------------------------------------

;------------------------------------------------------------------------
STACK	SEGMENT	PARA STACK 'STACK'

	DB    40H DUP('STCK')

STACK	ENDS
;------------------------------------------------------------------------

;------------------------------------------------------------------------
CODE	 SEGMENT PARA
ASSUME	 CS:CODE, DS:DATA, SS:STACK


;--STANDARD LINKAGE TO DOS

KEYS	 PROC  FAR	       ;DO
	 PUSH  DS	       ;
	 SUB   AX,AX	       ;
	 PUSH  AX	       ;	   NOT
	 MOV   AX,DATA	       ;
	 MOV   DS,AX	       ;		    ALTER!


;--PRINT "PRESS ANY KEY" MESSAGE

KEY0:	 MOV   AH,9	       ;REQUEST	"DISPLAY STRING" SERVICE
	 MOV   DX,OFFSET ANY_KEY	;DS:DX -> ANY_KEY
	 INT   21H	       ;INVOKE "DISPLAY STRING" SERVICE


;--WAIT	FOR KEYBOARD INPUT.

	 MOV   AH,0
	 INT   16H


;--AL =	0 MEANS	AN EXTENDED-SCAN-CODE KEY.

	 CMP   AL,0	       ;CoMPare	CONTENTS OF AL TO 0
	 JE    KEY1	       ;IF AL =	0, THEN	JUMP OR	BRANCH TO
			       ; THE LABEL KEY1.


	 ;--NORMAL SCAN	CODE KEY PRESSED

	 MOV   DX,OFFSET NORMAL_KEY	;DS:DX -> NORMAL_KEY
	 JMP   KEY2


	 ;--EXTENDED-SCAN-CODE KEY PRESSED. WAS	IT F10 TO EXIT TO DOS?

KEY1:	 CMP   AH,F10	       ;WAS THE	F10 KEY	PRESSED?
	 JE    KEY3	       ;EQUALITY MEANS F10 PRESSED.
			       ; BRANCH	TO EXIT	(KEY3).


	 ;--PROCESS OTHER EXTENDED-SCAN-CODE KEYS.

	 MOV   DX,OFFSET EXTENDED_KEY	;DS:DX -> EXTENDED_KEY


;--PRINT THE STRING POINTED TO BY DS:DX.

KEY2:	 MOV   AH,9	       ;REQUEST	"DISPLAY STRING" SERVICE
	 INT   21H	       ;INVOKE "DISPLAY STRING" SERVICE

	 JMP   KEY0	       ;LOOP FOR NEXT KEYIN


;-- RETURN TO DOS

KEY3:	 RET		       ;RETurn to DOS


KEYS	 ENDP		       ;END of PROCedure
CODE	 ENDS		       ;END of CODE Segment
;------------------------------------------------------------------------

	 END   KEYS	       ;END of routine KEYS



;Copyright 1984	by ABComputing					   May 15, 1984
;
;    ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
;    ³									 ³
;    ³	 DOS FUNCTION CALL 0EH (14 DECIMAL) IS USED TO:	1) CHANGE  THE	 ³
;    ³	 DEFAULT DRIVE TO B, AND  2) RETURN THE	NUMBER OF  DISK	DRIVES	 ³
;    ³	 (INCLUDING FIXED DISK)	ON THE SYSTEM, IN AL.			 ³
;    ³									 ³
;    ³	 PLACE THIS ROUTINE IN FILE: DRIVE.ASM				 ³
;    ³									 ³
;    ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
;
;------------------------------------------------------------------------

;------------------------------------------------------------------------
DATA	SEGMENT	PARA


DATA	ENDS
;------------------------------------------------------------------------

;------------------------------------------------------------------------
STACK	SEGMENT	PARA STACK 'STACK'

	DB    40H DUP('STCK')

STACK	ENDS
;------------------------------------------------------------------------

;------------------------------------------------------------------------
CODE	 SEGMENT PARA
ASSUME	 CS:CODE, DS:DATA, SS:STACK


;--STANDARD LINKAGE TO DOS

DRIVE	 PROC  FAR	       ;DO
	 PUSH  DS	       ;
	 SUB   AX,AX	       ;
	 PUSH  AX	       ;	   NOT
	 MOV   AX,DATA	       ;
	 MOV   DS,AX	       ;		    ALTER!


;--CHANGE CURRENT DRIVE	TO B BY	PLACING	THE VALUE 1 (A = 0, B =	 1,
;  ETC.)  IN DL. THE NUMBER OF DRIVES ON THE SYSTEMS IS	RETURNED IN
;  AL.


	 MOV   DL,1	       ;REQUEST	B DRIVE

	 MOV   AH,0EH	       ;REQUEST	"SELECT DRIVE" SERVICE
	 INT   21H	       ;INVOKE "SELECT DRIVE" SERVICE

;------------------------------------------------------------------------
;
;  MUST	USE "0EH" INSTEAD OF "EH" FOR ASSEMBLER MIGHT CONFUSE  "EH"
;  WITH	A LABEL	(I.E.  A NAME USED TO IDENTIFY A LOCATION IN SOURCE
;  CODE.  OFTEN	USED  AS A LOCATION  TO	BRANCH TO.  "KEY0", "KEY1",
;  AND "KEY2", IN ROUTINE KEYS.)
;
;  A MORE CONFUSING SITUATION IS A MOV STATEMENT SUCH AS:
;
;	 MOV   AH,AH	       ;MOVE AH	CONTENTS INTO AH REGISTER!
;
;
;  IF YOU WANT TO MOVE THE VALUE OF 10 INTO THE	AH REGISTER, USE:
;
;	 MOV   AH,0AH		;MOVE "0AH" = 10 HEX INTO AH REGISTER.
;
;	      OR
;
;	 MOV   AH,10		;10 IS INTERPRETED AS 10 DECIMAL.
;
;
;  USE DEBUG TO	STUDY THE VALUE	IN THE AH REGISTER.
;
;------------------------------------------------------------------------


;-- RETURN TO DOS

	 RET		       ;RETurn to DOS


DRIVE	 ENDP		       ;END of PROCedure
CODE	 ENDS		       ;END of CODE Segment
;------------------------------------------------------------------------

	 END   DRIVE	       ;END of routine DRIVE



;Copyright 1984	by ABComputing					   May 15, 1984
;
;    ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
;    ³									 ³
;    ³	 BIOS INTERRUPT	10H IS USED  TO	PLACE THE CURSOR AT  THE UPPER	 ³
;    ³	 LEFT HAND CORNER OF THE SCREEN.				 ³
;    ³									 ³
;    ³	 THE SCREEN IS	REGARDED AS BEING  A GRID OF  COORDINATES WITH	 ³
;    ³	 (0,0)	AS  THE	 UPPER	LEFT  CORNER, AND (24,79) AS THE LOWER	 ³
;    ³	 RIGHT CORNER.	(24 = 24 DECIMAL.)				 ³
;    ³									 ³
;    ³	 PLACE THIS ROUTINE IN FILE: HOME.ASM				 ³
;    ³									 ³
;    ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
;
;------------------------------------------------------------------------

;------------------------------------------------------------------------
DATA	SEGMENT	PARA


DATA	ENDS
;------------------------------------------------------------------------

;------------------------------------------------------------------------
STACK	SEGMENT	PARA STACK 'STACK'

	DB    40H DUP('STCK')

STACK	ENDS
;------------------------------------------------------------------------

;------------------------------------------------------------------------
CODE	 SEGMENT PARA
ASSUME	 CS:CODE, DS:DATA, SS:STACK


;--STANDARD LINKAGE TO DOS

CURSOR	 PROC  FAR	       ;DO
	 PUSH  DS	       ;
	 SUB   AX,AX	       ;
	 PUSH  AX	       ;	   NOT
	 MOV   AX,DATA	       ;
	 MOV   DS,AX	       ;		    ALTER!


;--INT 10H IS RESPONSIBLE FOR VIDEO/IO.

	 MOV   AH,2	       ;REQUEST	"SET CURSOR" SERVICE
	 MOV   DH,0	       ;SET CURSOR ROW TO 0
	 MOV   DL,0	       ;SET CURSOR COLUMN TO 0
	 MOV   BH,0	       ;PAGE NUMBER = 0

	 INT   10H	       ;INVOKE "SET CURSOR" SERVICE


;-- RETURN TO DOS

	 RET		       ;RETurn to DOS


CURSOR	 ENDP		       ;END of PROCedure
CODE	 ENDS		       ;END of CODE Segment
;------------------------------------------------------------------------

	 END   CURSOR	       ;END of routine CURSOR



;Copyright 1984	by ABComputing					   May 15, 1984
;
;    ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
;    ³									 ³
;    ³	 THIS  ROUTINE	MANIPULATES  THE  STRING  "ABC" INTO "CBA" AND   ³
;    ³	 DISPLAYS THE LATTER STRING.  THIS ROUTINE ILLUSTRATES HOW  TO	 ³
;    ³	 MANIPULATE A STRING IN	MEMORY.					 ³
;    ³									 ³
;    ³	 PLACE THIS ROUTINE IN FILE: REVERSE.ASM			 ³
;    ³									 ³
;    ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
;
;------------------------------------------------------------------------

;------------------------------------------------------------------------
DATA	 SEGMENT PARA

MSG	 DB    'ABC'
BUFFER	 DB    0,0,0,'$'       ;STORAGE FOR "CBA" STRING

DATA	 ENDS
;------------------------------------------------------------------------

;------------------------------------------------------------------------
STACK	SEGMENT	PARA STACK 'STACK'

	DB    40H DUP('STCK')

STACK	ENDS
;------------------------------------------------------------------------

;------------------------------------------------------------------------
CODE	 SEGMENT PARA 'CODE'

ASSUME	 CS:CODE,DS:DATA,SS:STACK



REVERSE	 PROC  FAR	       ;STANDARD LINKAGE TO DOS
	 PUSH  DS	       ; DO
	 SUB   AX,AX	       ;
	 PUSH  AX	       ;	  NOT
	 MOV   AX,DATA	       ;
	 MOV   DS,AX	       ;		    ALTER!


;------------------------------------------------------------------------
;
;  "MSG" IS DEFINED IN OUR DATA SEGMENT AS:
;
;
;	 MSG	  DB	'ABC'
;
;
;  "MSG" IS A LABEL IDENTIFYING A LOCATION IN MEMORY.  AS SHOWN BELOW,
;  "MSG" IS  IDENTIFIED WITH  THE CHARACTER  "A" -  THE FIRST  BYTE OF
;  "MSG".
;
;  "MSG  +  1"  POINTS  TO  THE  LOCATION  ONE  BYTE PAST "MSG".  THIS
;  CONTAINS THE	CHARACTER "B".
;
;  "MSG +  1" CAN  EQUIVALENTLY  BE WRITTEN MSG[1];  "MSG +  2" CAN BE
;  WRITTEN MSG[2],ETC.	THE ASSEMBLER WILL ACCEPT EITHER FORM.
;
;
;
;		MSG	    MSG	+ 1    MSG + 2
;		 ³	     ³		³
;  "MSG"         v           v          v
;	   ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
;	   ³	 A     ³     B	   ³	C     ³
;	   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
;
;
;			   OR
;
;
;		MSG	    MSG[1]     MSG[2]
;		 ³	     ³		³
;		 v	     v		v
;	   ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
;	   ³	 A     ³     B	   ³	C     ³
;	   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
;
;
;  THIS	 ROUTINE  MOVES	 THE  THREE  BYTES:  MSG,  MSG+1, MSG +2, INTO
;  "BUFFER," A THREE BYTE AREA IN OUR DATA SEGMENT.  THE CHARACTER "C"
;  IS MOVED FIRST, THEN	"B", THEN "A".  "BUFFER" FINALLY LOOKS LIKE:
;
;
;	    BUFFER	BUFFER + 1	BUFFER + 2
;		 ³	     ³		³
;  "BUFFER"      v           v          v
;	   ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
;	   ³	 C     ³     B	   ³	A    ³	 $    ³
;	   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
;
;
;  AS THE CONTENTS OF BUFFER  WILL BE DISPLAYED, BUFFER	IS  TERMINATED
;  BY A	DOLLAR SIGN WHICH IS  THE TERMINATOR FOR THE DOS PRINT	STRING
;  SERVICE.
;
;------------------------------------------------------------------------


	 MOV   AL,MSG+2	       ;AL = C
	 MOV   BUFFER,AL       ;BUFFER ->C

	 MOV   AL,MSG+1	       ;AL = B
	 MOV   BUFFER+1,AL     ;BUFFER +1 ->B

	 MOV   AL,MSG	       ;AL = A
	 MOV   BUFFER+2,AL     ;BUFFER +2 ->A


;-- DISPLAY THE	CONTENTS OF "BUFFER."

	 MOV   DX,OFFSET BUFFER	 ;PUT THE ADDRESS OF BUFFER IN THE DX REGISTER
	 MOV   AH,9	       ;REQUEST	"PRINT STRING" SERVICE
	 INT   21H	       ;INVOKE "PRINT STRING" SERVICE


;-- RETURN TO DOS

	 RET		       ;RETURN TO DOS


REVERSE	 ENDP		       ;END of PROCedure
CODE	 ENDS		       ;END of CODE Segment
;------------------------------------------------------------------------

	 END   REVERSE	       ;END of routine REVERSE.



;Copyright 1984	by ABComputing					   May 15, 1984
;
;    ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
;    ³									 ³
;    ³	 THIS  ROUTINE	USES   DOS  CALL  17H	TO  RENAME  THE	  FILE	 ³
;    ³	 "A:TEMP.TXT" TO "A:TRASH.TXT".                                  ³
;    ³									 ³
;    ³	 AS THE	RENAMED	 FILE IS ON  SAME DRIVE	AS  THE	ORIGINAL FILE,	 ³
;    ³	 THE FCB SPECIFIES THE NEW FILESPEC ONLY, NOT THE DRIVE	OF THE	 ³
;    ³	 NEW  FILE.   (SEE  THE	 ARTICLE  "DOS  1.1,  2.0   SEQUENTIAL   ³
;    ³	 FILE-READING"  IN  THIS   MONTH'S  ASSEMBLY  COLUMN   FOR  AN   ³
;    ³	 EXPLANATION OF	WHAT AN	FCB IS.)				 ³
;    ³									 ³
;    ³	 THIS ROUTINE SHOULD NOT  BE NAMED "RENAME.ASM".  FOR  THE DOS   ³
;    ³	 SYSTEM	COMMAND	"RENAME," WILL BE INVOKED WHEN WE TYPE  RENAME   ³
;    ³	 ON THE	COMMAND	LINE!	(AND YOU THOUGHT THAT  YOUR RENAME.EXE	 ³
;    ³	 MODULE	WAS BEING EXECUTED!)					 ³
;    ³									 ³
;    ³	 PLACE THIS ROUTINE IN FILE: RENAM.ASM				 ³
;    ³									 ³
;    ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
;
;------------------------------------------------------------------------
DATA	 SEGMENT PARA

FCB_ADD	     DB	 1,'TEMP    ','TXT'   ;CREATE ODD-BALL FCB WANTED
	     DB	 5 DUP(' ')            ; BY FUNCTION CALL 17H.
	     DB	 'TRASH   ','TXT'     ;NEW NAME FOR FILE
	     DB	 10 DUP('0')

DATA	 ENDS
;------------------------------------------------------------------------

;------------------------------------------------------------------------
STACK	 SEGMENT PARA STACK 'STACK'

	 DB    40H DUP('STCK')

STACK	 ENDS
;------------------------------------------------------------------------

;------------------------------------------------------------------------
CODE	 SEGMENT PARA 'CODE'

ASSUME	 CS:CODE,DS:DATA,SS:STACK

RENAM	 PROC  FAR	       ;STANDARD LINKAGE TO DOS
	 PUSH  DS	       ; DO
	 SUB   AX,AX	       ;
	 PUSH  AX	       ;	  NOT
	 MOV   AX,DATA	       ;
	 MOV   DS,AX	       ;		    ALTER!


;--RENAME FILE "A;TEMP.TXT"

	 MOV   DX, OFFSET FCB_ADD  ;DS:DX POINTS TO UNOPENED FCB
	 MOV   AH,17H		   ;REQUEST "RENAME FILE" SERVICE
	 INT   21H		   ;INVOKE "RENAME FILE" SERVICE


;-- RETURN TO DOS

	 RET		       ;RETurn to DOS


RENAM	 ENDP		       ;END of PROCedure
CODE	 ENDS		       ;END of CODE Segment
;------------------------------------------------------------------------

END	 RENAM		       ;END of routine RENAM




		     ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
		     ³ File Name:  ÛÛ	list1.asm   ÛÛ	³
		     ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
