|
|
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.