Annotation of pmsdk/samples/newcard/cfdos.asm, revision 1.1.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.