]> wirehaze git hosting - MS-DOS.git/blob - v4.0/src/SELECT/SELCHILD.ASM

wirehaze git hosting

MZ is back!
[MS-DOS.git] / v4.0 / src / SELECT / SELCHILD.ASM
1 PAGE 55,132 ;AN000;
2 NAME SELCHILD ;AN000;
3 TITLE SELCHILD - CHILD processing for SELECT.EXE;AN000;
4 SUBTTL selchild.asm ;AN000;
5 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
6 ;
7 ; HANDLE_CHILDREN
8 ;
9 ; Entry:
10 ;
11 ;
12 ;
13 ; Exit:
14 ;
15 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
16 EXTRN QM_ID:WORD ;AN000;
17 EXTRN QM_OPT1:WORD ;AN000;
18 EXTRN QM_ACTIVEPAN:WORD ;AN000;
19 ;
20 SELECT SEGMENT PARA PUBLIC 'SELECT' ;AN000;segment for far routine
21 ASSUME CS:SELECT ;AN000;
22 ;
23 EXTRN GET_PCB:NEAR ;AN000;
24 EXTRN PCDISPQ_CALL:NEAR ;AN000;
25 ;
26 INCLUDE PCEQUATE.INC ;AN000;
27 INCLUDE CASTRUC.INC ;AN000;
28 INCLUDE MACROS.INC ;AN000;
29 ;
30 PUBLIC HANDLE_CHILDREN ;AN000;
31 HANDLE_CHILDREN PROC ;AN000;
32 PUSHH <AX,BX,CX,DI,ES> ;AN000;
33 MOV QM_OPT1,QM_PUSHCHD ;AN000; push child panels
34 ;
35 MOV BX,QM_ACTIVEPAN ;AN000;
36 CALL GET_PCB ;AN000; get panel control block
37 ; for active parent panel
38 MOV CX,ES:[DI]+PCB_CHILDNUM ;AN000;
39 OR CX,CX ;AN000;
40 JZ HC_1 ;AN000;
41 ;
42 PUSH ES:[DI]+PCB_CHILDSEG ;AN000; get address of first child panel
43 PUSH ES:[DI]+PCB_CHILDOFF ;AN000;
44 POP DI ;AN000;
45 POP ES ;AN000;
46 ;
47 HC_0: MOV AX,ES:[DI]+CHD_PCB ;AN000;
48 MOV QM_ID,AX ;AN000;
49 PUSHH <ES,DI> ;AN000;
50 CALL PCDISPQ_CALL ;AN000; push next child on the stack
51 POPP <DI,ES> ;AN000;
52 ;
53 ADD DI,TYPE CHD_PB ;AN000; get next child control block
54 LOOP HC_0 ;AN000;
55 ;
56 HC_1: POPP <ES,DI,CX,BX,AX> ;AN000;
57 RET ;AN000;
58 HANDLE_CHILDREN ENDP ;AN000;
59 SELECT ENDS ;AN000;
60 END ;AN000;
61 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
62