home *** CD-ROM | disk | FTP | other *** search
- ; ----------------------------
- ; STACKS.DEM - Demoprogramm für die Macros aus STACKS.MAB
- ; (für den A86)
- ;
- ; (c) Bernd Schemmer 1990 - 1992
- ; Letzter Update: 15.02.1992
- ;
- ; Übersetzen:
- ; A86 MACROS.MAC STACKS.MAB STACKS.DEM DEMOS.INC TO STACKS.COM
- ; ---------------------------
-
- jmp start ; Daten überspringen
-
- logo db CR,LF
- db 'STACKS.DEM - Demoprogramm für die Macros aus STACKS.MAB'
- db CR,LF
- db '--------------------------------------------------------'
- db CR,LF
- db CR,LF
- GETLENGTH logo
-
- ; Fehlermeldung
- ;
- MakeMsg StacksError, 'STACKS nicht gefunden!'
-
- ; Maske für die Ausgabe der Daten
- ;
- _StackHeader db CR,LF
- db 'Aufbau des Headers des STACKS-Bereichs: '
- db CR,LF
- db 'ID: '
- _Stacks_IDWord db 'xxxxh',CR,LF
- db 'Anzahl: '
- _Stacks_Count db 'xxxxh',CR,LF
- db 'Erster Stack: '
- _Stacks_1Stack db 'xxxxh',CR,LF
- db 'Länge eines Stacks: '
- _Stacks_Length db 'xxxxh',CR,LF
- db 'Rahmentabelle: '
- _Stacks_FrameT db 'xxxxh:xxxxh',CR,LF
- db 'Min.: '
- _Stacks_MFrame db 'xxxxh',CR,LF
- db 'Max.: '
- _Stacks_XFrame db 'xxxxh',CR,LF
- db CR,LF
- db 'Daten der Stack-Frames:',CR,LF
- _StacksBelegt db 'xxxxx belegte Stacks, '
- _StacksFrei db 'xxxxx freie Stacks und '
- _StacksGesp db 'xxxxx gesperrte Stacks.'
- db CR,LF
- db CR,LF
- GETLENGTH _StackHeader
-
- start:
- call ShowLogo ; Logo ausgeben und Speicherblock verkleinern
-
- TestDOSVersion 3,30 ; DOS-Version überprüfen
-
- GetStacksData
- jnc >l1
- ; STACKS nicht gefunden
- WRITE_STRING StacksError
- jmp Ende
-
- l1:
- mov ds,es ; DS:BX zeigt auf den Header des STACKS-Bereichs
- mov es,cs ; ES = CS
- ; Maske füllen
-
- mov ax,Stacks_IDWord
- mov di,offset _Stacks_IDWord
- call Konvert_AX_To_Hexstring
-
- mov ax, Stacks_Count
- mov di,offset _Stacks_Count
- call Konvert_AX_To_Hexstring
-
- mov ax,Stacks_1Stack
- mov di,offset _Stacks_1Stack
- call Konvert_AX_To_Hexstring
-
- mov ax,Stacks_Length
- mov di,offset _Stacks_Length
- call Konvert_AX_To_Hexstring
-
- mov ax,w Stacks_FrameT
- push ax
- mov ax,w Stacks_FrameT+2
- mov di,offset _Stacks_FrameT
- call Konvert_AX_To_Hexstring
- pop ax
- inc di,2
- call Konvert_AX_To_Hexstring
-
- mov ax,Stacks_MFrame
- mov di,offset _Stacks_MFrame
- call Konvert_AX_To_Hexstring
-
- mov ax,Stacks_XFrame
- mov di,offset _Stacks_XFrame
- call Konvert_AX_To_Hexstring
-
- ; Rahmentabelle auswerten
- mov cx,Stacks_Count
- lds bx,Stacks_FrameT ; DS:BX -> Rahmentabelle
- xor ax,ax
- xor dx,dx
- xor bp,bp
- l0:
- cmp Frame_ID,0 ; Stack frei?
- if e inc ax
- cmp Frame_ID,1 ; Stack belegt?
- if e inc bp
- cmp Frame_ID,3 ; Stack gesperrt?
- if e inc dx
- add bx,TYPE StackFrameArea
- loop l0
-
- mov di,offset _StacksFrei
- call Konvert_AX_To_Dezstring
- mov di,offset _StacksBelegt
- mov ax,bp
- call Konvert_AX_To_Dezstring
- mov di,offset _StacksGesp
- mov ax,dx
- call Konvert_AX_To_Dezstring
-
- mov ds,cs
- WRITE_STRING _StackHeader
-
- Ende:
- EndProcess 0
-
-