; Screen Scrambler ; Illustrates the technique of using pixel data to manipulate the screen ; and leaving the color information stationary for a wierd effect. ; It does also illustrate the usage of the random number generator and ; the speed impact that self-modifying code gives. ; By Todd S. Elliott ;equates vicontrol = 53272; vic control register scrmem = 1024; location of screen memory vic = 53248; vic ii chip register multiclr = 53270; multi-color register charbase = 14336; char base address backgnd = 53281; background color register multi1 = 53282; multi-color register one multi2 = 53283; multi-color register two frehi3 = 54287; frequency register three vcreg3 = 54290; voice control register three sigvol = 54296; oscillator three random = 54299; random generator ;initializes the screen lda #151; char code for color dark gray jsr $ffd2; changes video color matrix color to dark gray lda #147:jsr $ffd2; clears the screen lda #$ff; set voice three to max. sta frehi3 lda #128 sta vcreg3 sta sigvol; turn on random generator for random numbers ldy #$00; load offset - tya; transfer to accumulator sta scrmem,y; store char code sta scrmem+256,y sta scrmem+512,y sta scrmem+768,y dey; decrement offset bne -; if not equal, branch back lda vicontrol; get the values of the vic control register and #240; protect bits ora #14; store offset sta vicontrol; change the modified value to point to 14336 lda multiclr; get the bit values of the multi color register ora #16; turn on bit 4 sta multiclr; switch on multi color lda #$00; color black sta 53280; border register ;starts the whole shebang! ; This uses self-modifying code for the sake of speed and efficiency. lda #$01 sta multi1 lda #$00 sta backgnd lda #$0f sta multi2 - lda #charbase; high byte sta base+1 sty base+2 ldx #$07; x-offset - ldy #$00; y-offset - lda random; get a random number base sta $ffff,y; and store it into mem. dey bne -; decrement 256 counter and loop back inc base+2; decrement high byte of character base dex bpl --; decrements the page counter and branches back jmp ---; ad infinitum... ; end Screenies