Annotation of coherent/d/PS2_KERNEL/io.286/tnas.s, revision 1.1

1.1     ! root        1: / (lgl-
        !             2: /      COHERENT Driver Kit Version 1.1.0
        !             3: /      Copyright (c) 1982, 1990 by Mark Williams Company.
        !             4: /      All rights reserved. May not be copied without permission.
        !             5: / -lgl)
        !             6: ////////
        !             7: /
        !             8: / Tiac Network Assembler Support
        !             9: /
        !            10: /      tngetc( np )            -- get a character from a tiac network buffer
        !            11: /      tnputc( np, c)          -- put a character into a tiac network buffer
        !            12: /      tucopy( np, up, n)      -- copy n bytes from tiac buffer to user space
        !            13: /      utcopy( up, np, n)      -- copy n bytes from user space to tiac buffer
        !            14: /
        !            15: ////////
        !            16: 
        !            17:        .globl  tngetc_
        !            18:        .globl  tnputc_
        !            19:        .globl  tucopy_
        !            20:        .globl  utcopy_
        !            21: 
        !            22: ////////
        !            23: /
        !            24: / Tngetc ( np )
        !            25: /
        !            26: /      Input:  np = pointer to seg:offset pair for tiac network buffer
        !            27: /
        !            28: /      Action: Read character from network buffer, increment offset.
        !            29: /
        !            30: /      Return: Character.
        !            31: /
        !            32: ////////
        !            33: 
        !            34: tngetc_:                               / tngetc( np )
        !            35:        push    si                      / char **np;
        !            36:        push    bp                      / {
        !            37:        mov     bp, sp                  /       register char c;        /* AX */
        !            38:        mov     bx, 6(bp)               /       register char *cp;      /* SI */
        !            39:        push    ds                      /
        !            40:        lds     si, (bx)                /       cp = *np;
        !            41:        cld                             /
        !            42:        lodsb                           /       c = *cp++;
        !            43:        pop     ds                      /
        !            44:        mov     (bx), si                /       *np = cp;
        !            45:        subb    ah, ah                  /
        !            46:        pop     bp                      /       return( c );
        !            47:        pop     si                      / }
        !            48:        ret
        !            49: 
        !            50: ////////
        !            51: /
        !            52: / Tnputc ( np, c )
        !            53: / char **np;
        !            54: / char c;
        !            55: /
        !            56: /      Input:  np = pointer to seg:offset pair for tiac network buffer
        !            57: /              c  = character to transfer
        !            58: /
        !            59: /      Action: Transfer character C to network buffer, increment offset.
        !            60: /
        !            61: /      Return: Character C.
        !            62: /
        !            63: ////////
        !            64: 
        !            65: tnputc_:                               / tnputc( np, c )
        !            66:        push    di                      / char **np;                    /* BX */
        !            67:        push    bp                      / char c;                       /* AX */
        !            68:        mov     bp, sp                  / {
        !            69:        mov     ax, 8(bp)               /       register char *cp;      /* DI */
        !            70:        mov     bx, 6(bp)               /
        !            71:        push    es                      /
        !            72:        les     di, (bx)                /       cp = *np;
        !            73:        cld                             /
        !            74:        stosb                           /       *cp++ = c;
        !            75:        pop     es                      /
        !            76:        mov     (bx), di                /       *np = cp;
        !            77:        pop     bp                      /
        !            78:        pop     di                      /       return c;
        !            79:        ret                             / }
        !            80: 
        !            81: ////////
        !            82: /
        !            83: / utcopy( up, np, n )
        !            84: / char * up;
        !            85: / char **np;
        !            86: / unsigned n;
        !            87: /
        !            88: /      Input:  up = offset in user data space for source data
        !            89: /              np = pointer to seg:offset pair for tiac network buffer
        !            90: /              n  = number of bytes to transfer
        !            91: /
        !            92: /      Action: Copy N bytes from user data space to network data space.
        !            93: /              Add N to network data space offset.
        !            94: /
        !            95: /      Return: None.
        !            96: /
        !            97: ////////
        !            98: 
        !            99: utcopy_:                               / utcopy( up, np, n )
        !           100:        push    si                      /
        !           101:        push    di                      / register char *  up;          /* SI */
        !           102:        push    bp                      / register char ** np;          /* BX */
        !           103:        mov     bp, sp                  / register unsigned n;          /* CX */
        !           104:        push    ds                      /
        !           105:        push    es                      / {
        !           106:        mov     bx, 10(bp)              /       register char * cp;     /* DI */
        !           107:                                        /
        !           108:        les     di, (bx)                /       cp = *np;
        !           109:                                        /
        !           110:        mov     si, 8(bp)               /       up;
        !           111:        mov     ds, uds_                /
        !           112:                                        /
        !           113:        mov     cx, 12(bp)              /       n;
        !           114:                                        /
        !           115:        cld                             /
        !           116:        clc                             /
        !           117:        rcr     cx, $1                  /
        !           118:        rep                             /       for ( ; n != 0; --n )
        !           119:        movsw                           /               *cp++ = *up++;
        !           120:        rcl     cx, $1                  /
        !           121:        rep                             /
        !           122:        movsb                           /
        !           123:                                        /
        !           124:        pop     es                      /
        !           125:        pop     ds                      /
        !           126:        mov     (bx), di                /       *np = cp;
        !           127:        pop     bp                      / }
        !           128:        pop     di
        !           129:        pop     si
        !           130:        ret
        !           131: 
        !           132: ////////
        !           133: /
        !           134: / tucopy( np, up, n )
        !           135: / char **np;
        !           136: / char * up;
        !           137: / unsigned n;
        !           138: /
        !           139: /      Input:  np = pointer to seg:offset pair for tiac network buffer
        !           140: /              up = offset in user data space for destination
        !           141: /              n  = number of bytes to transfer
        !           142: /
        !           143: /      Action: Copy N bytes from network data space to user data space.
        !           144: /              Add N to network data space offset.
        !           145: /
        !           146: /      Return: None.
        !           147: /
        !           148: ////////
        !           149: 
        !           150: tucopy_:                               / tucopy( np, up, n )
        !           151:        push    si                      /
        !           152:        push    di                      / register char ** np;          /* BX */
        !           153:        push    bp                      / register char *  up;          /* DI */
        !           154:        mov     bp, sp                  / register unsigned n;          /* CX */
        !           155:        push    ds                      /
        !           156:        push    es                      / {
        !           157:        mov     bx, 8(bp)               /       register char * cp;     /* SI */
        !           158:                                        /
        !           159:        mov     di, 10(bp)              /       up;
        !           160:        mov     es, uds_                /
        !           161:                                        /
        !           162:        lds     si, (bx)                /       cp = *np;
        !           163:                                        /
        !           164:        mov     cx, 12(bp)              /       n;
        !           165:                                        /
        !           166:        cld                             /
        !           167:        clc                             /
        !           168:        rcr     cx, $1                  /
        !           169:        rep                             /       for ( ; n != 0; --n )
        !           170:        movsw                           /               *up++ = *cp++;
        !           171:        rcl     cx, $1                  /
        !           172:        rep                             /
        !           173:        movsb                           /
        !           174:                                        /
        !           175:        pop     es                      /
        !           176:        pop     ds                      /
        !           177:        mov     (bx), si                /       *np = cp;
        !           178:        pop     bp                      / }
        !           179:        pop     di
        !           180:        pop     si
        !           181:        ret

unix.superglobalmegacorp.com

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