|
|
1.1 root 1: ; Replacement VIO router
2: ;
3: ;
4: TITLE viorout
5:
6: .286
7: stack_frame struc
8: s_bp dw ? ;BP
9: s_di dw ? ;DI
10: s_ip dw ? ;offset and
11: s_cs dw ? ; selector of return address
12: s_clds dw ? ;caller's ds
13: s_rout dw ? ;entry point in vio router
14: s_indx dw ? ;index
15: s_caddr dd ? ;far address of caller
16: s_wd8 dw ?
17: s_wd7 dw ?
18: s_wd6 dw ? ;maximum # of words needed for any
19: s_wd5 dw ? ; VIO routine parameters
20: s_wd4 dw ?
21: s_wd3 dw ?
22: s_wd2 dw ?
23: s_wd1 dw ?
24:
25: stack_frame ends
26:
27: VIOROUT_TEXT SEGMENT BYTE PUBLIC 'CODE'
28: VIOROUT_TEXT ENDS
29:
30:
31:
32: EXTRN REPLACE:FAR
33:
34: VIOROUT_TEXT SEGMENT
35: PUBLIC VIOROUT
36: ASSUME CS: VIOROUT_TEXT, DS: NOTHING, SS: NOTHING, ES: NOTHING
37: VIOROUT PROC FAR
38: push di
39: push bp ;save base pointer
40: mov bp,sp ;reposition label/entry point
41:
42: push word ptr [bp].s_wd1 ;push all parameters
43: push word ptr [bp].s_wd2
44: push word ptr [bp].s_wd3
45: push word ptr [bp].s_wd4
46: push word ptr [bp].s_wd5 ;CharStr (parameters for
47: push word ptr [bp].s_wd6 ; VioWrtTTy)
48: push word ptr [bp].s_wd7 ;length
49: push word ptr [bp].s_wd8 ;VIO handle
50:
51: mov di,[bp].s_indx ;get function number
52: sal di,2 ;make a word boundary index
53: call DWORD PTR CS:FUNCTION_TBL[DI] ;call vio function
54:
55: mov sp,bp ;move stack pointer back, effectively
56: pop bp ; ignoring any parameters left on stack
57: pop di ;restore bp and di registers
58: ret
59: VIOROUT ENDP
60:
61: A_DUMMY PROC FAR
62: mov ax,-1 ;return -1 to VIOrouter
63: ret ;
64: A_DUMMY ENDP
65:
66: ;FUNCTION_TBL contains the far addresses of the replacement routines.
67: ;These must be declared as EXTRN FAR, and must be in a dynamic link
68: ;module which is linked with this routine.
69:
70: FUNCTION_TBL LABEL WORD
71: DD VIOROUT_TEXT:A_DUMMY ; 0 VIOGETPHYSBUF
72: DD VIOROUT_TEXT:A_DUMMY ; 1 VIOGETBUF
73: DD VIOROUT_TEXT:A_DUMMY ; 2 VIOSHOWBUF
74: DD VIOROUT_TEXT:A_DUMMY ; 3 VIOGETCURPOS
75: DD VIOROUT_TEXT:A_DUMMY ; 4 VIOGETCURTYPE
76: DD VIOROUT_TEXT:A_DUMMY ; 5 VIOGETMODE
77: DD VIOROUT_TEXT:A_DUMMY ; 6 VIOSETCURPOS
78: DD VIOROUT_TEXT:A_DUMMY ; 7 VIOSETCURTYPE
79: DD VIOROUT_TEXT:A_DUMMY ; 8 VIOSETMODE
80: DD VIOROUT_TEXT:A_DUMMY ; 9 VIOREADCHARSTR
81: DD VIOROUT_TEXT:A_DUMMY ; 10 VIOREADCELLSTR
82: DD VIOROUT_TEXT:A_DUMMY ; 11 VIOWRTNCHAR
83: DD VIOROUT_TEXT:A_DUMMY ; 12 VIOWRTNATTR
84: DD VIOROUT_TEXT:A_DUMMY ; 13 VIOWRTNCELL
85: DD VIOROUT_TEXT:A_DUMMY ; 14 VIOWRTCHARSTR
86: DD VIOROUT_TEXT:A_DUMMY ; 15 VIOWRTCHARSTRATT
87: DD VIOROUT_TEXT:A_DUMMY ; 16 VIOWRTCELLSTR
88:
89: DD REPLACE ; 17 VIOWRTTTY
90:
91: DD VIOROUT_TEXT:A_DUMMY ; 18 VIOSCROLLUP
92: DD VIOROUT_TEXT:A_DUMMY ; 19 VIOSCROLLDN
93: DD VIOROUT_TEXT:A_DUMMY ; 20 VIOSCROLLLF
94: DD VIOROUT_TEXT:A_DUMMY ; 21 VIOSCROLLRT
95: DD VIOROUT_TEXT:A_DUMMY ; 22 VIOSETANSI
96: DD VIOROUT_TEXT:A_DUMMY ; 23 VIOGETANSI
97: DD VIOROUT_TEXT:A_DUMMY ; 24 VIOPRTSC
98: DD VIOROUT_TEXT:A_DUMMY ; 25 VIOSCRLOCK
99: DD VIOROUT_TEXT:A_DUMMY ; 26 VIOSCRUNLOCK
100: DD VIOROUT_TEXT:A_DUMMY ; 27 VIOSAVREDRAWWAIT
101: DD VIOROUT_TEXT:A_DUMMY ; 28 VIOSAVREDRAWUNDO
102: DD VIOROUT_TEXT:A_DUMMY ; 29 VIOPOPUP
103: DD VIOROUT_TEXT:A_DUMMY ; 30 VIOENDPOPUP
104: DD VIOROUT_TEXT:A_DUMMY ; 31 VIOPRTSCTOGGLE
105: DD VIOROUT_TEXT:A_DUMMY ; 32 VIOMODEWAIT
106: DD VIOROUT_TEXT:A_DUMMY ; 33 VIOMODEUNDO
107: DD VIOROUT_TEXT:A_DUMMY ; 34 VIOGETFONT
108: DD VIOROUT_TEXT:A_DUMMY ; 35 VIOGETCONFIG
109: DD VIOROUT_TEXT:A_DUMMY ; 36 VIOSETCP
110: DD VIOROUT_TEXT:A_DUMMY ; 37 VIOGETCP
111: DD VIOROUT_TEXT:A_DUMMY ; 38 VIOSETFONT
112: DD VIOROUT_TEXT:A_DUMMY ; 39 VIOGETSTATE
113: DD VIOROUT_TEXT:A_DUMMY ; 40 VIOSETSTATE
114: DD VIOROUT_TEXT:A_DUMMY ; 40 VIOSETSTATE
115:
116: VIOROUT_TEXT ENDS
117: END
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.