Annotation of os2sdk/demos/examples/vioreg/viorout.asm, revision 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.