home *** CD-ROM | disk | FTP | other *** search
- include compiler.inc
-
- ttl XTRMOD, 1.01, 11-04-86, jk
-
- dseg
- xtdlm db '.',0
- cseg
-
- incptr macro bump
- ifdef bump&_v
- inc word ptr bump&_v
- else
- inc word ptr bump
- endif
- endm
-
- subptr macro cnt,bump
- ifdef bump&_v
- sub cnt,word ptr bump&_v
- else
- sub cnt,word ptr bump
- endif
- endm
-
- addptr macro bump,cnt
- ifdef bump&_v
- add word ptr bump&_v,cnt
- else
- add word ptr bump,cnt
- endif
- endm
-
- movptr macro bump,cnt
- ifdef bump&_v
- mov word ptr bump&_v,cnt
- else
- mov word ptr bump,cnt
- endif
- endm
-
- xtfs <index, rindex, strcpy, strncpy, toupper>
-
- ;sgetdrv(dst,src) char *dst, *src;
- ;{ char *tmp; /* AX reg in asm */
- procdef sgetdrv,<<dst,ptr>,<src,ptr>>
- pushreg
- pushds
-
- mov ax,':' ; if (tmp = rindex(src, ':'))
- callit rindex, <<ax, reg>, <src, ptr>>
- or ax,ax
- jz cpd1
- mov si,ax ; *dst++ = toupper(*(tmp-1));
- dec si
- lodsb
- xor ah,ah
- callit toupper, <<ax, reg>>
- ; else
- ; { *dst++ = 0;
- ; }
- cpd1: ldptr di,dst
- cld
- stosb
- mov al,':' ; *dst++ = ':';
- stosb
- xor al,al ; *dst = 0;
- stosb
- pret ;}
- pend sgetdrv
-
- procdef sgetpth,<<dst1,ptr>,<src1,ptr>>
- pushreg
- pushds
-
- mov ax,':'
- callit rindex, <<ax, reg>, <src1, ptr>>
- or ax,ax
- jz cpp1
- inc ax
- movptr src,ax
- cpp1: ldptr si,src1
- lodsb
- cmp al,'.'
- jz cpp2
- mov ax,'\'
- callit index, <<ax, reg>, <src1, ptr>>
- or ax,ax
- jz cpp2
- movptr src1,ax
- cpp2: mov ax,'\'
- callit rindex, <<ax, reg>, <src1, ptr>>
- or ax,ax
- jz cpp3
- subptr ax,src1
- push ax
- callit strncpy, <<ax, reg>, <src1, ptr>, <dst1, ptr>>
- pop ax
- ldptr di,dst1
- add di,ax
- xor ax,ax
- stosb
- jmp short cpp4
-
- cpp3: ldptr di,dst1
- stosb ; AX already 0
- cpp4: pret
- pend sgetpth
-
-
- procdef sgetnam,<<dst2,ptr>,<src2,ptr>>
- pushreg
- pushds
- mov ax,':'
- callit rindex, <<ax, reg>, <src2, ptr>>
- or ax,ax
- jz cpn1
- inc ax
- movptr src2,ax
- cpn1: ldptr si,src2
- lodsb
- cmp ax,'.'
- jnz cpn2
- incptr src2
- jmp cpn1
- cpn2: mov ax,'\'
- callit rindex, <<ax, reg>, <src2, ptr>>
- or ax,ax
- jz cpn3
- inc ax
- movptr src2,ax
- cpn3: mov ax,'.'
- callit rindex, <<ax, reg>, <src2, ptr>>
- or ax,ax
- jz cpn4
- subptr ax,src2
- push ax
- callit strncpy, <<ax, reg>, <src2, ptr>, <dst2, ptr>>
- ldptr di,dst2
- pop ax
- add di,ax
- xor ax,ax
- stosb
- jmp short cpn5
- cpn4: callit strcpy, <<src2, ptr>, <dst2, ptr>>
- cpn5: pret
- pend sgetnam
-
-
- procdef sgetext,<<dst3,ptr>,<src3,ptr>>
- pushreg
- pushds
- mov ax,':'
- callit rindex, <<ax, reg>, <src3, ptr>>
- or ax,ax
- jz cpe1
- inc ax
- movptr src3,ax
- cpe1: ldptr si,src3
- lodsb
- cmp al,'.'
- jnz cpe2
- incptr src3
- jmp cpe1
- cpe2: mov ax,'.'
- callit rindex, <<ax, reg>, <src3, ptr>>
- or ax,ax
- jnz cpe3
- mov ax,offset xtdlm
- cpe3: callit strcpy, <<ax, reg>, <dst3, ptr>>
- pret
- pend sgetext
-
- finish
-