home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / assemblr / library / screen / uniform / ufas012.asm < prev    next >
Assembly Source File  |  1993-07-28  |  3KB  |  126 lines

  1. ;MASM/ MS Quick ASM/ TASM
  2. ;ufas12.asm - example file shows a menu
  3. ;
  4.  
  5. STRETCPY  MACRO ZADR, SADR, LEN
  6.         cld                       ;; increment
  7.         lea   di,ZADR             ;; target adress
  8.         lea   si,SADR             ;; source adress
  9.         mov   cx,LEN              ;; length
  10.         rep   movsb
  11.         ENDM
  12.  
  13. UFCALLK MACRO OKZ, OFN, OFL, ORETC, OSM, ODAT
  14.         lea   bx,OKZ             ;; Offset FKZ
  15.         push  bx
  16.         lea   bx,OFN             ;; Offset format
  17.         push  bx
  18.         lea   bx,OFL             ;; Offset 1. field
  19.         push  bx
  20.         lea   bx,ORETC           ;; Offset RETC
  21.         push  bx
  22.         lea   bx,OSM             ;; Offset SM
  23.         push  bx
  24.         lea   bx,ODAT            ;; Offset Daten
  25.         push  bx
  26.         call  UNIF               ;; call UNIF
  27.         add   sp,12
  28.         ENDM
  29.  
  30.        DOSSEG
  31.        TITLE    example
  32.  
  33. EXTRN  UNIF:NEAR
  34. EXTRN  MOUSEON:NEAR
  35. EXTRN  MOUSEOFF:NEAR
  36.        .MODEL   SMALL 
  37.        .STACK 1024h
  38.        .DATA
  39. INCLUDE menu01.mac
  40. INCLUDE menu02.mac
  41. INCLUDE menu03.mac
  42.  
  43. INCLUDE ufas01.mac
  44.  
  45. menu01  DB  "menu01  "
  46. menu02  DB  "menu02  "
  47. menu03  DB  "menu03  "
  48.  
  49. const1  DB  "Functions "
  50. const2  DB  "Programend"
  51. const3  DB  "file new               F1     "
  52. const4  DB  "file open              F2     "
  53. const5  DB  "file delete            F3     "
  54. const6  DB  "program end            F10    "
  55.  
  56.         .CODE
  57.         mov   ax,@data            ; DS initialisieren
  58.         mov   ds,ax
  59.         push  ds                  ; DS und ES gleichsetzen
  60.         pop   es
  61.  
  62. ; save screen, initialize mouse
  63.     call  MOUSEON
  64.     mov   word ptr FKZ,0
  65.     UFCALLK FKZ, menu03, fld0, RETC, SM, Amenu03
  66.  
  67. ; display <menu01>
  68.     STRETCPY fld0,const1,10
  69.     STRETCPY fld1,const2,10
  70. aus_menu01:
  71.     mov   word ptr FKZ,2
  72.     mov   word ptr SM,0
  73.     mov   word ptr RETC,0
  74.     UFCALLK FKZ, menu01, fld0, RETC, SM, Amenu01
  75.     cmp   word ptr RETC,200        ; display <menu02>
  76.         je    a200
  77.     cmp   word ptr RETC,201        ; program end
  78.     je    H1
  79.     jmp   aus_menu01               ; ignore input
  80. H1:     jmp   ende
  81.  
  82. a200:   ; display <menu02>
  83.     STRETCPY fld2,const3,30
  84.     STRETCPY fld3,const4,30
  85.     STRETCPY fld4,const5,30
  86.     STRETCPY fld5,const6,30
  87.         mov   word ptr FKZ,2
  88.     mov   word ptr SM,0
  89.     mov   word ptr RETC,4
  90. aus_menu02:
  91.     UFCALLK FKZ, menu02, fld2, RETC, SM, Amenu02
  92.     cmp   word ptr RETC,200        ; first menuitem
  93.     je    a210
  94.     cmp   word ptr RETC,101        ; first menuitem (F1)
  95.     je    a210
  96.     cmp   word ptr RETC,201        ; second menuitem
  97.     je    a210
  98.     cmp   word ptr RETC,102        ; second menuitem (F2)
  99.     je    a210
  100.     cmp   word ptr RETC,202        ; third menuitem
  101.     je    a210
  102.     cmp   word ptr RETC,103        ; third menuitem (F3)
  103.     je    a210
  104.     cmp   word ptr RETC,203        ; fourth menuitem
  105.     je    ende
  106.     cmp   word ptr RETC,110        ; fourth menuitem (F10)
  107.     je    ende
  108.     mov   word ptr FKZ,3           ; ignore input
  109.     mov   word ptr RETC,4
  110.     jmp   aus_menu02
  111.  
  112. a210:   ; display empty format <menu03>
  113.     mov   word ptr FKZ,4
  114.     mov   word ptr SM,0
  115.     mov   word ptr RETC,4
  116.     UFCALLK FKZ, menu03, fld0, RETC, SM, Amenu03
  117.     jmp   aus_menu01;
  118.  
  119. ende:   call  MOUSEOFF
  120.     mov   word ptr FKZ,5
  121.     UFCALLK FKZ, menu03, fld0, RETC, SM, Amenu03
  122.     mov    ah,4ch              ; program end
  123.     mov    al,0h               ; error level 0
  124.     int 21h
  125.         END
  126.