summaryrefslogtreecommitdiff
path: root/v4.0/src/SELECT/SELCHILD.ASM
diff options
context:
space:
mode:
Diffstat (limited to 'v4.0/src/SELECT/SELCHILD.ASM')
-rw-r--r--v4.0/src/SELECT/SELCHILD.ASM62
1 files changed, 62 insertions, 0 deletions
diff --git a/v4.0/src/SELECT/SELCHILD.ASM b/v4.0/src/SELECT/SELCHILD.ASM
new file mode 100644
index 0000000..139fcf3
--- /dev/null
+++ b/v4.0/src/SELECT/SELCHILD.ASM
@@ -0,0 +1,62 @@
1PAGE 55,132 ;AN000;
2NAME SELCHILD ;AN000;
3TITLE SELCHILD - CHILD processing for SELECT.EXE;AN000;
4SUBTTL 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 ;
20SELECT 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;
31HANDLE_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 ;
47HC_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 ;
56HC_1: POPP <ES,DI,CX,BX,AX> ;AN000;
57 RET ;AN000;
58HANDLE_CHILDREN ENDP ;AN000;
59SELECT ENDS ;AN000;
60 END ;AN000;
61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
62