; Generates a simple Sharpness Test Pattern ; Video Mode VGA 640 x 480 ; 2010 H.V.Viehof ;______________________________________ ; ; stapelsegment : ; damit sich niemand wundert, und meint ; ich wuerde 48 Bytes für nix ; verschwenden, auch wenn in diesem ; Programm gar keine Stapeloperationen ; vorkommen, muss diese Anzahl an Bytes ; reserviert sein, damit 1. der ; Programmaufrufer (cmd.exe) Register ; sichern kann, und zweitens die ; benutzten Interrupts Stapelplatz haben. ;______________________________________ stack segment stack word 'stack' dw 24 dup (?) stack ends ;______________________________________ ; ; Programmsegment : ;______________________________________ code segment public word 'prog' org 0 main: mov ax, 012 ; die Funktion 0 des Videointerupts / Modus 12h int 010h mov cx, 1 mov bx, 1 mov ax, 0C0fh ; setpixel: farbwert weiss L1: mov dx, 0 L2: int 010h ; cx = x pos und dx = y pos inc dx cmp dx, 01e0h ; unteres Ende der vertikale Linie jl L2 inc bx add cx, bx cmp cx, 640 ; 640 Linien gezeichnet? jl L1 ;---------------------------------------------------------- ; Textdarstellung - alternative Methode ;---------------------------------------------------------- cld ; lodsb soll in die richtige Richtung arbeiten mov ax, seg message ; ds auf datensegment umstellen mov ds, ax mov si, offset message ; Anfang des Textes mov bx, 5 ; bl,5 = violett und bh = 0 mov cx, 1 mov dh, 12 ; Position laden L4: inc dh ; hier wird dh schon inkrementiert: Sprungoptimierung mov dl, 28 ; Anfang der dargestellten Zeile L3: ds:lodsb ; zeichen holen cmp al, 0 ; 0 beendet die Textausgabe jz >E1 ; Ende Textdarstellung cmp al, 0a ; oa ist Ende der dargestellten Zeile jz L4 mov ah, 2 ; cursor setzen int 010h mov ah, 9 ; einzelnes Zeichen ausgeben int 010h inc dl jmp L3 E1: mov ah, 1 ; taste gedrueckt ? int 021 mov ax, 3 ; die Funktion 0 / Modus 3 des Videointerupts int 010h mov ax, 04c00 ; dos eqivalent zu 'ExitProccess' int 021 code ends ;______________________________________ ; ; Datensegment: ;______________________________________ data segment public word 'daten' message db"ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿",0a db"³ Hit any Key to quit ³",0a db"³ 2010 H.V.Viehof ³",0a db"ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ",0 data ends end