;****************************************** ;* Aktivitaetsindikator 'drehender Stern' * ;* * ;* 2010 H.V.Viehof aka Sir Shylock * ;****************************************** ;______________________________________ ; ; Stapelsegment : ;______________________________________ stack segment stack word 'stack' dw 24 dup (?) stack ends ;______________________________________ ; ; Programmsegment : ;______________________________________ code segment public word 'prog' ; Das ist nur der Anfang ;-) main: mov ax, seg data mov ds, ax mov dx, offset Info mov ah, 9 int 021 X3: mov ah, 1 int 021 cmp al, 's' ; Programm starten? jz Anfang cmp al, 'q' ; Programm beenden? jnz X3 ; Nein? Dann neu starten. mov ax, 04c00 ; dos eqivalent zu 'ExitProccess' int 021 Anfang: mov bx, 0 ; zunaechst nur eine Verzoegerung, hier koennte X2: mov cx, 500 ; genausogut die zu ueberwachende Hauptprogrammschleife X1: push cx ; sein mov cx, 1000 ; 1000 Microsec. in mov dx, 1000 ; cx und dx laden mov ah, 086 ; Funktion 086h: WAIT int 015 ; BIOS Interrupt pop cx Loop X1 ;______________________________________ ; ; Hier werden die 'Einzelbilder' des ; drehenden Sterns erzeugt ;______________________________________ mov dl, 0d ; den Cursor auf Anfang der Zeile mov ah, 2 ; Funktion 2: einzelnes Zeichen ausgeben, des int 021 ; DOS Multifuntionsinterrupts mov dl, [bx+offset Indi] ; Tabellenzeiger = Offset + Zaehler, den Wert von dort in dl mov ah, 2 ; Funktion 2: einzelnes Zeichen ausgeben, des int 021 ; DOS Multifuntionsinterrupts inc bx ; Zaehler + 1 cmp bx, 7 ; bx >= 7? jge Anfang ; bx auf Null setzen (steht schon am Anfang) ;______________________________________ ; ; Ende 'drehender Stern' ;______________________________________ mov ah, 1 ; praktisch 'im Vorbeigehen' int 016 ; auf 'gedrueckte Taste' pruefen jz X2 ; Zero Flag gesetzt = keine Taste --> weiter jmp X3 ; erstmal stoppen code ends ;______________________________________ ; ; Datensegment : ;______________________________________ data segment public word 'daten' Info db 0a,0d db "**********************************************************",0a,0d db "* Aktivitaetsindikator --drehender Stern-- *",0a,0a db "* *",0a,0d db "* 2010 Heinz Volker Viehof *",0a,0d db "* [S] Taste startet und beliebige Taste stoppt das *",0a,0d db "* Programm, und [Q] Beendet das Programm *",0a,0d db "**********************************************************",0a,0d db 0a,0d,0a,0d db "$" Indi db "\\||//--" data ends end