home *** CD-ROM | disk | FTP | other *** search
/ gondwana.ecr.mu.oz.au/pub/ / Graphics.tar / Graphics / VOGLE.ZIP / VOGLE / SRC / MSFORT / FT_STRIN.ASM < prev    next >
Encoding:
Assembly Source File  |  2000-02-11  |  2.4 KB  |  137 lines

  1. ;    Static Name Aliases
  2.  
  3. ;
  4.  
  5. ;    $S17_I    EQU    I
  6.  
  7.     TITLE   ft_strin.for
  8.  
  9.     NAME    ft_strin
  10.  
  11.  
  12.  
  13.     .8087
  14.  
  15. FT_STRIN_TEXT    SEGMENT  BYTE PUBLIC 'CODE'
  16.  
  17. FT_STRIN_TEXT    ENDS
  18.  
  19. _DATA    SEGMENT  WORD PUBLIC 'DATA'
  20.  
  21. _DATA    ENDS
  22.  
  23. CONST    SEGMENT  WORD PUBLIC 'CONST'
  24.  
  25. CONST    ENDS
  26.  
  27. _BSS    SEGMENT  WORD PUBLIC 'BSS'
  28.  
  29. _BSS    ENDS
  30.  
  31. DGROUP    GROUP    CONST, _BSS, _DATA
  32.  
  33.     ASSUME  CS: FT_STRIN_TEXT, DS: DGROUP, SS: DGROUP, ES: DGROUP
  34.  
  35. EXTRN    __acrtused:ABS
  36.  
  37. EXTRN    __FClccop:FAR
  38.  
  39. EXTRN    __FClccmp:FAR
  40.  
  41. EXTRN    __FCclenv:DWORD
  42.  
  43. _DATA      SEGMENT
  44.  
  45.     ORG    $+2
  46.  
  47. $SG23    DB    ' '
  48.  
  49.     ORG    $+-2
  50.  
  51. $SG25    DB    00H
  52.  
  53.     ORG    $+-2
  54.  
  55. $SG27    DB    00H
  56.  
  57. _DATA      ENDS
  58.  
  59. _BSS      SEGMENT
  60.  
  61. $S17_I    DW 02H DUP (?)
  62.  
  63. _BSS      ENDS
  64.  
  65. FT_STRIN_TEXT      SEGMENT
  66.  
  67. ; Line 6
  68.  
  69.     PUBLIC    T_STRING
  70.  
  71. T_STRING    PROC FAR
  72.  
  73.     push    bp
  74.  
  75.     mov    bp,sp
  76.  
  77.     sub    sp,4
  78.  
  79.     push    di
  80.  
  81.     push    si
  82.  
  83. ;    S = 8
  84.  
  85. ;    T_STRING = 6
  86.  
  87.     mov    ax,WORD PTR __FCclenv
  88.  
  89.     mov    dx,WORD PTR __FCclenv+2
  90.  
  91.     mov    WORD PTR [bp-4],ax
  92.  
  93.     mov    WORD PTR [bp-2],dx
  94.  
  95.     push    WORD PTR [bp+10]
  96.  
  97.     push    WORD PTR [bp+8]    ;S
  98.  
  99.     les    bx,DWORD PTR [bp-4]
  100.  
  101.     push    WORD PTR es:[bx+2]
  102.  
  103.     mov    ax,WORD PTR [bp+6]    ;T_STRING
  104.  
  105.     mov    dx,ss
  106.  
  107.     push    dx
  108.  
  109.     push    ax
  110.  
  111.     mov    ax,128
  112.  
  113.     push    ax
  114.  
  115.     mov    ax,1
  116.  
  117.     push    ax
  118.  
  119.     call    FAR PTR __FClccop
  120.  
  121.     add    sp,14
  122.  
  123. ; Line 8
  124.  
  125.     les    bx,DWORD PTR [bp-4]
  126.  
  127.     mov    ax,WORD PTR es:[bx+2]
  128.  
  129.     cwd    
  130.  
  131.     mov    WORD PTR $S17_I,ax
  132.  
  133.     mov    WORD PTR $S17_I+2,dx
  134.  
  135.     jmp    SHORT $L20005
  136.  
  137. $L22__BLOCKI:
  138.  
  139. ; Line 13
  140.  
  141.     add    WORD PTR $S17_I,-1
  142.  
  143.     adc    WORD PTR $S17_I+2,-1
  144.  
  145. $L20005:
  146.  
  147.     cmp    WORD PTR $S17_I+2,0
  148.  
  149.     jl    $L19__DOEXI
  150.  
  151.     jg    $L20004
  152.  
  153.     cmp    WORD PTR $S17_I,1
  154.  
  155.     jb    $L19__DOEXI
  156.  
  157. $L20004:
  158.  
  159. ; Line 9
  160.  
  161.     mov    ax,WORD PTR [bp+8]    ;S
  162.  
  163.     mov    dx,WORD PTR [bp+10]
  164.  
  165.     add    ax,WORD PTR $S17_I
  166.  
  167.     dec    ax
  168.  
  169.     push    dx
  170.  
  171.     push    ax
  172.  
  173.     mov    ax,1
  174.  
  175.     push    ax
  176.  
  177.     mov    ax,OFFSET DGROUP:$SG23
  178.  
  179.     push    ds
  180.  
  181.     push    ax
  182.  
  183.     mov    ax,1
  184.  
  185.     push    ax
  186.  
  187.     call    FAR PTR __FClccmp
  188.  
  189.     je    $L22__BLOCKI
  190.  
  191. ; Line 10
  192.  
  193.     mov    ax,OFFSET DGROUP:$SG25
  194.  
  195.     push    ds
  196.  
  197.     push    ax
  198.  
  199.     mov    ax,1
  200.  
  201.     push    ax
  202.  
  203.     mov    si,WORD PTR [bp+6]    ;T_STRING
  204.  
  205.     mov    bx,WORD PTR $S17_I
  206.  
  207.     lea    ax,[bx+1][si]
  208.  
  209.     mov    dx,ss
  210.  
  211.     dec    ax
  212.  
  213.     push    dx
  214.  
  215.     push    ax
  216.  
  217.     mov    ax,1
  218.  
  219.     push    ax
  220.  
  221.     push    ax
  222.  
  223.     call    FAR PTR __FClccop
  224.  
  225.     add    sp,14
  226.  
  227. ; Line 11
  228.  
  229.     jmp    SHORT $EX12
  230.  
  231. $L19__DOEXI:
  232.  
  233. ; Line 14
  234.  
  235.     mov    bx,WORD PTR [bp+6]    ;T_STRING
  236.  
  237.     mov    di,bx
  238.  
  239.     mov    si,OFFSET DGROUP:$SG27
  240.  
  241.     push    ss
  242.  
  243.     pop    es
  244.  
  245.     movsb
  246.  
  247. ; Line 15
  248.  
  249. $EX12:
  250.  
  251.     mov    ax,WORD PTR [bp+6]    ;T_STRING
  252.  
  253.     mov    dx,ss
  254.  
  255.     pop    si
  256.  
  257.     pop    di
  258.  
  259.     mov    sp,bp
  260.  
  261.     pop    bp
  262.  
  263.     ret    6
  264.  
  265.  
  266.  
  267. T_STRING    ENDP
  268.  
  269. FT_STRIN_TEXT    ENDS
  270.  
  271. END
  272.  
  273.