home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / INFO / FORTH / 4THPROG.ZIP / DIR_ASM.ASM < prev    next >
Encoding:
Assembly Source File  |  1985-11-05  |  2.4 KB  |  99 lines

  1. NAME    DAVID
  2.  
  3. ;    DAVID'S MS-FORTRAN Runtime DOS INTERFACE.
  4. ;
  5. ;    MACRO DEFINITIONS
  6. SET_DTA MACRO  BUFFER
  7.         MOV     DX,OFFSET DGROUP:BUFFER
  8.         MOV     AH,1AH
  9.         INT     33
  10.         ENDM
  11. SEARCH_FIRST MACRO  FCB
  12.              MOV  DX,OFFSET DGROUP:FCB
  13.              MOV  AH,11H
  14.              INT  33
  15.              ENDM
  16. DISPLAY  MACRO  STRING
  17.          MOV  DX,OFFSET DGROUP:STRING
  18.          MOV  AH,09H
  19.          INT  33
  20.          ENDM
  21. SEARCH_NEXT MACRO FCB
  22.             MOV  DX,OFFSET DGROUP:FCB
  23.             MOV  AH,12H
  24.             INT  33
  25.             ENDM
  26. PAGE +
  27. ;
  28. ;       DGROUP, DATA   segment    class DATA
  29. ;
  30. DATA    SEGMENT PUBLIC 'DATA'
  31.         FCB2    DB  0,"???????????"
  32.                 DB  25 DUP(?)
  33.         STRING  DB  14 DUP(?)
  34.          CRLF   DB  13,10,'$'
  35.         BUFFER  DB  128 DUP(?)
  36. DATA    ENDS
  37.  
  38. DGROUP  GROUP   DATA
  39. CODE    SEGMENT 'CODE'
  40.         ASSUME  CS:CODE,DS:DGROUP,SS:DGROUP
  41. PUBLIC  DIRFOR
  42.  
  43. ;DOSFN:  Call DOS Operating System
  44. ;
  45. DIRFOR  PROC    FAR
  46.         POP     SI           ;get ret address
  47.         POP     DI
  48.         POP     BX
  49.         POP     ES         ;ES,BX := addr of 2nd param
  50.         MOV     AX,ES:[BX]
  51.         MOV    DS:FCB2[0],AL          ;must be in high half
  52.         PUSH    DI           ;save ret address
  53.         PUSH    SI
  54.         PUSH    BP
  55.         SET_DTA BUFFER
  56.    SEARCH_FIRST FCB2
  57.         CMP     AL,0FFH
  58.         JE      ALL_DONE
  59.         MOV     AL,DS:BUFFER[11]
  60.         MOV     DS:BUFFER[12],AL
  61.         MOV     AL,DS:BUFFER[10]
  62.         MOV     DS:BUFFER[11],AL
  63.         MOV     AL,DS:BUFFER[9]
  64.         MOV     DS:BUFFER[10],AL
  65.         MOV     AL,20H
  66.         MOV     DS:BUFFER[9],AL
  67.         MOV     AL,"$"
  68.         MOV     DS:BUFFER[13],AL
  69.         DISPLAY BUFFER[1]
  70.         DISPLAY CRLF
  71. ;
  72. GET_IT:
  73.     SEARCH_NEXT FCB2
  74.         CMP     AL,0FFH
  75.         JE      ALL_DONE
  76.         MOV     AL,DS:BUFFER[11]
  77.         MOV     DS:BUFFER[12],AL
  78.         MOV     AL,DS:BUFFER[10]
  79.         MOV     DS:BUFFER[11],AL
  80.         MOV     AL,DS:BUFFER[9]
  81.         MOV     DS:BUFFER[10],AL
  82.         MOV     AL,20H
  83.         MOV     DS:BUFFER[9],AL
  84.         MOV     AL,"$"
  85.         MOV     DS:BUFFER[13],AL
  86.         DISPLAY BUFFER[1]
  87.         DISPLAY CRLF
  88.         JMP GET_IT
  89. ;
  90.  ALL_DONE:
  91. ;
  92.         DISPLAY CRLF
  93.         POP     BP             ;restore frame pointer
  94.         RET
  95. DIRFOR   ENDP
  96.  CODE    ENDS
  97.  
  98. END
  99.