mess_age by Desire [web]
; M E S S A G E ; ; a 32 b msdos intro ; mode 0x13 / MIDI ; by HellMood/DESiRE ; at "DemoSplash" 2017 ; ; ; G r e e t s ; ; sensenstahl, homecoded, rrrola, frag ; Optimus, Trixter, igor, gargaj, VileR ; Whizart,g0blinish,Rudi,ryg,Orby a.k.a. ; orbitaldecay,wysiwtf,Kuemmel,p01,Elias ; Oscar Toledo,Drift +all DESIRE members ; ; youtube capture ; https://www.youtube.com/watch?v=dSz7xlUkQFI ; ;-------------------------------------------------------------- ; ; this has been tested on FreeDos on real hardware ; works on DosBox as well ; mode 0x13 (320 x 200) is used for animation ; the sound is generated with MIDI ; please read - and contribute! ; http://www.sizecoding.org/wiki/Output ; ;-------------------------------------------------------------- ; ATTENTION : this data is EXECUTED db 0x3F ; MIDI command for activating UART Mode db 0xC0 + 0x01 ; changing instrument on channel 1 db 0x51 ; instrument number for "Lead 2 (sawtooth)" db 0x90 + 0x01 ; playing something on channel 1 db 0x12 ; playing a deep note db 0x7F ; volume 127 (maximum) nop ; unused instruction for aligning MIDI data ; MIDI data with alignment instruction translates to : ; aas ; rcl word [bx+di-0x6F], 0x12 ; jg 0x97 ; which does nothing harmful for our code flow pop es ; top stack is 0, we need a zero segment for the timer mov dx , 0x331 ; port for sending UART mode switch outsb ; sending UART mode switch ( 0x3F ) dec dx ; changing to MIDI data port ( 0x330 ) mov cl , 0x05 ; sending 5 defined bytes to the MIDI data port rep ; writing this way (reading from DS:SI and following) outsb ; is much shorter than assigning to AL in the code L: xor al , 0x13 ; first pass: set graphic mode, after that: flicker effect int 0x10 ; first pass: set graphic mode, after that: set pixel and cl , ch ; optimized sierpinski effect mov ah , 0x0C ; AH from "set mode" (0x00) to "set pixel" (0x0C) xor al , [es : 0x46C] ; modifying current pixel value with current timer value loop L ; rinse and repeat
[ back to the prod ]