home *** CD-ROM | disk | FTP | other *** search
- ;MASM/ MS Quick ASM/ TASM
- ;ufas12.asm - example file shows a menu
- ;
-
- STRETCPY MACRO ZADR, SADR, LEN
- cld ;; increment
- lea di,ZADR ;; target adress
- lea si,SADR ;; source adress
- mov cx,LEN ;; length
- rep movsb
- ENDM
-
- UFCALLK MACRO OKZ, OFN, OFL, ORETC, OSM, ODAT
- lea bx,OKZ ;; Offset FKZ
- push bx
- lea bx,OFN ;; Offset format
- push bx
- lea bx,OFL ;; Offset 1. field
- push bx
- lea bx,ORETC ;; Offset RETC
- push bx
- lea bx,OSM ;; Offset SM
- push bx
- lea bx,ODAT ;; Offset Daten
- push bx
- call UNIF ;; call UNIF
- add sp,12
- ENDM
-
- DOSSEG
- TITLE example
-
- EXTRN UNIF:NEAR
- EXTRN MOUSEON:NEAR
- EXTRN MOUSEOFF:NEAR
- .MODEL SMALL
- .STACK 1024h
- .DATA
- INCLUDE menu01.mac
- INCLUDE menu02.mac
- INCLUDE menu03.mac
-
- INCLUDE ufas01.mac
-
- menu01 DB "menu01 "
- menu02 DB "menu02 "
- menu03 DB "menu03 "
-
- const1 DB "Functions "
- const2 DB "Programend"
- const3 DB "file new F1 "
- const4 DB "file open F2 "
- const5 DB "file delete F3 "
- const6 DB "program end F10 "
-
- .CODE
- mov ax,@data ; DS initialisieren
- mov ds,ax
- push ds ; DS und ES gleichsetzen
- pop es
-
- ; save screen, initialize mouse
- call MOUSEON
- mov word ptr FKZ,0
- UFCALLK FKZ, menu03, fld0, RETC, SM, Amenu03
-
- ; display <menu01>
- STRETCPY fld0,const1,10
- STRETCPY fld1,const2,10
- aus_menu01:
- mov word ptr FKZ,2
- mov word ptr SM,0
- mov word ptr RETC,0
- UFCALLK FKZ, menu01, fld0, RETC, SM, Amenu01
- cmp word ptr RETC,200 ; display <menu02>
- je a200
- cmp word ptr RETC,201 ; program end
- je H1
- jmp aus_menu01 ; ignore input
- H1: jmp ende
-
- a200: ; display <menu02>
- STRETCPY fld2,const3,30
- STRETCPY fld3,const4,30
- STRETCPY fld4,const5,30
- STRETCPY fld5,const6,30
- mov word ptr FKZ,2
- mov word ptr SM,0
- mov word ptr RETC,4
- aus_menu02:
- UFCALLK FKZ, menu02, fld2, RETC, SM, Amenu02
- cmp word ptr RETC,200 ; first menuitem
- je a210
- cmp word ptr RETC,101 ; first menuitem (F1)
- je a210
- cmp word ptr RETC,201 ; second menuitem
- je a210
- cmp word ptr RETC,102 ; second menuitem (F2)
- je a210
- cmp word ptr RETC,202 ; third menuitem
- je a210
- cmp word ptr RETC,103 ; third menuitem (F3)
- je a210
- cmp word ptr RETC,203 ; fourth menuitem
- je ende
- cmp word ptr RETC,110 ; fourth menuitem (F10)
- je ende
- mov word ptr FKZ,3 ; ignore input
- mov word ptr RETC,4
- jmp aus_menu02
-
- a210: ; display empty format <menu03>
- mov word ptr FKZ,4
- mov word ptr SM,0
- mov word ptr RETC,4
- UFCALLK FKZ, menu03, fld0, RETC, SM, Amenu03
- jmp aus_menu01;
-
- ende: call MOUSEOFF
- mov word ptr FKZ,5
- UFCALLK FKZ, menu03, fld0, RETC, SM, Amenu03
- mov ah,4ch ; program end
- mov al,0h ; error level 0
- int 21h
- END
-