Annotation of os2sdk/demos/examples/vioreg/viorout.asm, revision 1.1.1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.