]> wirehaze git hosting - MS-DOS.git/blob - v4.0/src/CMD/KEYB/KEYBCPSD.ASM

wirehaze git hosting

MZ is back!
[MS-DOS.git] / v4.0 / src / CMD / KEYB / KEYBCPSD.ASM
1 PAGE ,132
2 TITLE DOS - KEYB Command - Copy Shared_Data_Area
3
4 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
5 ;; DOS - NLS Support - KEYB Command
6 ;; (C) Copyright 1988 Microsoft
7 ;;
8 ;; File Name: KEYBCPSD.ASM
9 ;; ----------
10 ;;
11 ;; Description:
12 ;; ------------
13 ;; Copies the SHARED_DATA_AREA into a part of memory that
14 ;; can be left resident. All relative pointers must already
15 ;; be recalculated to this new position.
16 ;; THIS FILE MUST BE THE LAST OF THE RESIDENT FILES WHEN KEYB IS LINKED.
17 ;;
18 ;; Documentation Reference:
19 ;; ------------------------
20 ;; PC DOS 3.3 Detailed Design Document - May ?? 1986
21 ;;
22 ;; Procedures Contained in This File:
23 ;; ----------------------------------
24 ;;
25 ;; Include Files Required:
26 ;; -----------------------
27 ;; INCLUDE KEYBSHAR.INC
28 ;; INCLUDE KEYBCMD.INC
29 ;; INCLUDE KEYBTBBL.INC
30 ;;
31 ;; External Procedure References:
32 ;; ------------------------------
33 ;; FROM FILE ????????.ASM:
34 ;; procedure - description????????????????????????????????
35 ;;
36 ;; Linkage Information: Refer to file KEYB.ASM
37 ;; --------------------
38 ;;
39 ;; Change History:
40 ;; ---------------
41 ;; PTMP3955 ;AN004;KEYB component to free environment and close handles 0 - 4
42 ;; 3/24/88
43 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
44 ;;
45 PUBLIC SD_DEST_PTR ;;
46 PUBLIC COPY_SD_AREA ;;
47 PUBLIC SHARED_DATA ;;
48 ;;
49 INCLUDE STRUC.INC
50 INCLUDE KEYBSHAR.INC ;;
51 INCLUDE KEYBCMD.INC ;;
52 INCLUDE KEYBTBBL.INC ;;
53 ;;
54 CODE SEGMENT PUBLIC 'CODE' ;;
55 ;;
56 ASSUME CS:CODE,DS:CODE ;;
57 ;;
58 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
59 ;;
60 ;; Module: COPY_SD_AREA
61 ;;
62 ;; Description:
63 ;;
64 ;; Input Registers:
65 ;;
66 ;; Output Registers:
67 ;; N/A
68 ;;
69 ;; Logic:
70 ;;
71 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
72 ;;
73 SD EQU SHARED_DATA ;;
74 TSD EQU TEMP_SHARED_DATA ;;
75 ;;
76 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
77 ;;
78 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
79 ;;
80 COPY_SD_AREA PROC NEAR ;;
81 ;;
82 REP MOVS ES:BYTE PTR [DI],DS:[SI] ;; Copy SHARED_DATA_AREA to
83
84 push ax ;AN004;save existing values
85 push es ;AN004;;
86 xor ax,ax ;AN004;clear out ax
87 mov ax,cs:[2ch] ;AN004;check offset for address containin environ.
88 cmp ax,0 ;AN004;
89 je NO_FREEDOM ;AN004;
90 mov es,ax ;AN004;
91 mov ax,4900H ;AN004;make the free allocate mem func
92 int 21h ;AN004;;
93
94
95 NO_FREEDOM:
96 pop es ;AN004;restore existing values
97 pop ax ;AN004;;
98
99 push ax ;AN004;
100 push bx ;AN004;
101
102 ;AN004; ;Terminate and stay resident
103 mov bx,4 ;AN004; ;1st close file handles
104 .REPEAT ;AN004; ;STDIN,STDOUT,STDERR
105 mov ah,3eh ;AN004; ;
106 int 21h ;AN004; ;
107 dec bx ;AN004; ;
108 .UNTIL <BX eq 0> ;AN004; ;
109
110 pop bx ;AN004;
111 pop ax ;AN004;
112 ;AN004; new part of memory
113 MOV BYTE PTR ES:SD.TABLE_OK,1 ;; Activate processing flag
114 INT 21H ;; Exit
115 ;;
116 ;;
117 COPY_SD_AREA ENDP ;;
118 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
119 ;;
120 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
121 ;;
122 db 'SHARED DATA' ;;
123 SD_DEST_PTR LABEL BYTE ;;
124 ;;
125 SHARED_DATA SHARED_DATA_STR <> ;;
126 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
127 CODE ENDS
128 END