redneonlines by sibCrew
; redneonlines - 128b @ outline 2o23 - wbcbz7 18.o5.2o23 ; 286/nofpu/vga/midi @ 0x330 ; my first attempt at MIDI sizecoding tekkkkno sequencing stuff ; all coincidences with gaia - poetry of love soundtrack is purely coincidental :) ; greetings to all sizecoders all around the world (not for bunker species) ; compile with nasm, %define SAFE_EXIT for ESCapeable version org 0x100 use16 start: mov al, 0x13 int 0x10 %ifdef SAFE_EXIT ; save old INT1C mov ax, 0x351C ; - int 0x21 ; - push bx ; - push es ; - mov cx, 0xA000 mov es, cx %else mov bh, 0xA0 mov es, bx %endif ; install our timer ISR mov dx, midi_isr mov ax, 0x251C int 0x21 .loop: .pixloop: mov ax, 0xCCCD ; rrrola stuff mul di ; dh - y, dl - x mov ax, dx add dx, ax and cx, 16+32+64 imul dx, cx sar dx, 6 sub ax, dx add ax, bp sub al, -128 jns .skip1 neg al .skip1: sub ah, 100 jns .skip2 neg ah .skip2: add al, ah shr ax, 4 and al, bl and al, 7 imul ax, 0x48 sub al, (0x48 - 0x28) stosb inc di %ifdef SAFE_EXIT jnz .pixloop in al, 0x60 dec al jnz .loop ; restore INT1C pop ds pop dx mov ax, 0x251C int 0x21 ret %else jmp .loop %endif ; MIDI ISR stuff midi_isr: inc bp mov cx, bp mov bl, ch pusha ; init midi stuff mov al, 0x3F mov dx, 0x331 out dx, al dec dx and bl, 3 and cx, 7 jnz .track mov si, bass mov cl, bass.len rep outsb .track: mov si, instr_data .loop: lodsw bt ax, cx jnc .skip ; play instrument mov al, 0x99 out dx, al mov al, ah out dx, al xor al, 127 out dx, al .skip: dec bx jnp .loop popa ;iret ; embedded into data bass: db 0xCF, 40, 0x9F .len equ $-bass+2 ; instrument mask per tick, then note instr_data: .hat db 0b00010001, 80 .drum db 0b00000001, 35 .tamb db 0b10010001, 64
[ back to the prod ]