home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / PPOS2.ZIP / TRYQFN.ASM < prev    next >
Assembly Source File  |  1988-10-17  |  4KB  |  129 lines

  1.         title   TRYQFN -- QFN demo
  2.         page    55,132
  3.     .286
  4.  
  5. ; TRYQFN.ASM --- demo of QFN routine
  6. ; OS/2 version, by Ray Duncan, October 1988
  7.  
  8. cr      equ     0dh             ; ASCII carriage return
  9. lf      equ     0ah             ; ASCII line feed
  10.  
  11. stdin   equ     0               ; standard input handle
  12. stdout  equ     1               ; standard output handle
  13. stderr  equ     2               ; standard error handle
  14.  
  15.     extrn    DosRead:far    ; OS/2 API functions
  16.     extrn    DosWrite:far
  17.         extrn    DosExit:far
  18.  
  19. DGROUP  group   _DATA
  20.  
  21. _DATA   segment word public 'DATA'
  22.  
  23. ibuff   db      80 dup (0)      ; input buffer
  24. ibuff_len equ    $-ibuff
  25.  
  26. rlen    dw    0        ; length from DosRead
  27. wlen    dw    0        ; length from DosWrite
  28.  
  29. msg1    db      cr,lf,lf        
  30.         db      'Enter filename:        '
  31. msg1_len equ $-msg1
  32.  
  33. msg2    db      cr,lf
  34.         db      'The full pathname is:  '
  35. msg2_len equ $-msg2
  36.  
  37. msg3    db      cr,lf
  38.         db      'Bad filename!'
  39. msg3_len equ $-msg3
  40.  
  41. _DATA   ends
  42.  
  43.  
  44. _TEXT   segment word public 'CODE'
  45.  
  46.         extrn   qfn:near
  47.  
  48.         assume  cs:_TEXT,ds:DGROUP
  49.  
  50. main    proc    near
  51.                                 
  52.     push    ds        ; set ES = DGROUP too
  53.         pop    es
  54.  
  55. main1:                          ; display prompt...
  56.     push    stdout        ; standard output handle
  57.         push    ds        ; address of message
  58.         push    offset DGROUP:msg1
  59.         push    msg1_len    ; length of message
  60.         push    ds            ; receives bytes written
  61.         push    offset DGROUP:wlen
  62.     call    DosWrite        ; transfer to OS/2
  63.  
  64.                                 ; get a filename...
  65.     push    stdin        ; standard input handle
  66.         push    ds        ; input buffer address
  67.         push    offset DGROUP:ibuff
  68.         push    ibuff_len    ; length of input buffer
  69.         push    ds            ; receives actual length
  70.         push    offset DGROUP:rlen
  71.         call    DosRead        ; transfer to OS/2
  72.  
  73.     mov    ax,rlen        ; anything entered?
  74.         cmp     ax,2        ; anything entered?
  75.         je      main3           ; empty line, exit
  76.  
  77.                                 ; call QFN routine to
  78.                                 ; validate and qualify
  79.                                 ; the filename...
  80.  
  81.         sub     ax,2         ; AX=length (remove CR-LF)
  82.                                 ; DS:SI = addr of filename
  83.         mov     si,offset DGROUP:ibuff
  84.         call    qfn             ; go qualify filename
  85.         jc      main2           ; jump if bad filename
  86.     mov    cx,ax        ; save length
  87.  
  88.                                 ; first display title...
  89.     push    stdout        ; standard output handle
  90.         push    ds        ; message address
  91.         push    offset DGROUP:msg2
  92.         push    msg2_len         ; message length
  93.     push    ds            ; receives bytes written
  94.         push    offset DGROUP:wlen
  95.     call    DosWrite        ; transfer to OS/2
  96.  
  97.                 ; display qualified filename
  98.         push    stdout        ; standard output handle
  99.         push    ds        ; address of filename
  100.         push    si
  101.         push    cx        ; length of filename
  102.         push    ds            ; receives bytes written
  103.         push    offset DGROUP:wlen
  104.         call    DosWrite    ; transfer to OS/2
  105.  
  106.         jmp     main1           ; get another filename
  107.  
  108. main2:                          ; display error message...
  109.     push    stdout        ; standard output handle
  110.         push    ds        ; message address
  111.         push    offset DGROUP:msg3
  112.     push    msg3_len    ; message length
  113.         push    ds            ; receives bytes written
  114.         push    offset DGROUP:wlen
  115.         call    DosWrite    ; transfer to OS/2
  116.  
  117.         jmp     main1           ; get another filename
  118.                 
  119. main3:  push    1        ; terminate with 
  120.     push    0        ; return code = 0
  121.         call    DosExit        ; transfer to OS/2
  122.  
  123. main    endp
  124.         
  125. _TEXT   ends
  126.  
  127.         end     main
  128.  
  129.