Annotation of pmsdk/samples/newcard/cfdos.asm, revision 1.1

1.1     ! root        1:         title   indos.asm
        !             2: 
        !             3: ;****************************************************************/
        !             4: ;*                                                              */
        !             5: ;*  Windows Cardfile                                           */
        !             6: ;*  (c) Copyright Microsoft Corp. 1985 - All Rights Reserved    */
        !             7: ;*                                                              */
        !             8: ;****************************************************************/
        !             9: 
        !            10: .xlist
        !            11: include cmacros.inc
        !            12: 
        !            13: .list
        !            14: 
        !            15: createSeg   _FILE,nrfile,byte,public,CODE
        !            16: 
        !            17: sBegin  DATA
        !            18: globalD resZero,0
        !            19: sEnd    DATA
        !            20: 
        !            21: sBegin  NRFILE
        !            22: 
        !            23: assumes CS,NRFILE
        !            24: assumes DS,DATA
        !            25: 
        !            26: 
        !            27: ;
        !            28: ; MyStrlen
        !            29: ;
        !            30: 
        !            31: cProc   Mylstrlen,<PUBLIC,FAR>,<di>
        !            32:         parmD   lpStr
        !            33: cBegin
        !            34:         les     di,lpStr
        !            35:         cld
        !            36:         xor     ax,ax                   ; get zero in ax
        !            37:         mov     cx,-1                   ; at most 64 k to move
        !            38:         repnz   scasb                   ; look for end
        !            39:         mov     ax,cx
        !            40:         neg     ax
        !            41:         dec     ax
        !            42:         dec     ax
        !            43: cEnd
        !            44: 
        !            45: ;
        !            46: ;MyStrcpy:
        !            47: ;
        !            48: cProc   Mylstrcpy,<PUBLIC,FAR>,<si,di,ds>
        !            49:         parmD   lpDst
        !            50:         parmD   lpSrc
        !            51: cBegin
        !            52:         lds     si,lpSrc
        !            53:         les     di,lpDst
        !            54:         cld
        !            55: Mycp1:  lodsb
        !            56:         stosb
        !            57:         or      al,al
        !            58:         jnz     Mycp1
        !            59:         mov     ax,di                   ; point at last byte copied
        !            60:         dec     ax
        !            61:         mov     dx,es                   ; and segment
        !            62: cEnd
        !            63: 
        !            64: 
        !            65: ;
        !            66: ;MyStrcat:
        !            67: ;
        !            68: cProc   Mylstrcat,<PUBLIC,FAR>,<si,di,ds>
        !            69:     parmD   lpDst
        !            70:     parmD   lpSrc
        !            71: cBegin
        !            72:         lds     si,lpSrc
        !            73:         les     di,lpDst
        !            74:         cld
        !            75:         xor     ax,ax                   ; get zero in ax
        !            76:         mov     cx,-1                   ; at most 64 k to look
        !            77:         repnz   scasb                   ; look for end
        !            78:         dec     di                      ; Point at null byte
        !            79: Myct1:  lodsb
        !            80:         stosb
        !            81:         or      al,al
        !            82:         jnz     Myct1
        !            83:         mov     ax,di                   ; point at last byte copied
        !            84:         dec     ax
        !            85:         mov     dx,es                   ; and segment
        !            86: cEnd
        !            87: 
        !            88: 
        !            89: ;
        !            90: ;MyStrcmp:
        !            91: ;
        !            92: cProc   Mylstrcmp,<PUBLIC,FAR>,<si,di,ds>
        !            93:         parmD   lps1
        !            94:         parmD   lps2
        !            95: cBegin
        !            96:         lds     si,lps1
        !            97:         les     di,lps2
        !            98:         cld
        !            99:         xor     ax,ax                       ; clear out ah
        !           100: Mycmploop:
        !           101:         lodsb
        !           102:         mov     bl,es:[di]
        !           103:         inc     di
        !           104:         cmp     bl,al
        !           105:         jnz     MyNeq
        !           106:         or      al,al
        !           107:         jnz     Mycmploop
        !           108:         xor     ax,ax                        ; equal
        !           109:         jmp     short MSEnd
        !           110: MyNeq:
        !           111:         mov     ax,1                         ; not equal
        !           112: MSEnd:
        !           113: cEnd
        !           114: 
        !           115: sEnd    NRFILE
        !           116: 
        !           117: end
        !           118: 

unix.superglobalmegacorp.com

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