; Copyright (C) 1995-2002 Justin Frankel ; Switches to 320x200, generates a pattern, and does palette cycling. ; Assemble with NASM. [org 100h] [segment .text] mov al, 13h int 10h mov bh, 0A0h mov es, bx mov al, 200 @ScreenLoopY: mov cx, 320 @ScreenLoopX: xor ax, cx stosb xor ax, cx loop @ScreenLoopX dec ax jnz @ScreenLoopY @KeyLoop: mov dx, 03DAh @VWait: in al, dx and al, 8 jz @VWait dec bp mov dx, 3C8h mov ax, bp out dx, al inc dx mov cl, 64 mov di, 0FFh sub bx, bx mov si, 3Fh @PaletteGenLoop1: inc di mov ax, si out dx, al mov ax, di out dx, al mov ax, bx out dx, al loop @PaletteGenLoop1 mov cl, 64 inc si @PaletteGenLoop2: dec si mov ax, si out dx, al mov ax, di out dx, al mov ax, bx out dx, al loop @PaletteGenLoop2 mov cl, 64 @PaletteGenLoop3: mov ax, si out dx, al mov ax, di out dx, al mov ax, bx out dx, al dec di inc bx loop @PaletteGenLoop3 mov cl, 64 inc di @PaletteGenLoop4: mov ax, si out dx, al mov ax, di out dx, al dec bx mov ax, bx out dx, al inc si loop @PaletteGenLoop4 mov ah, 1 int 16h jz @KeyLoop mov ax, 3 int 10h ret END