; Entropy ; by Dave McKellar of Toronto ; Two-line BASIC program ; Found on Beagle Brother's Apple Mechanic Disk ; Converted to 6502 Assembly by Deater (Vince Weaver) vince@deater.net ; 24001 ROT=0:FOR I=1 TO 15: READ A,B: POKE A,B: NEXT: DATA ; 232,252,233,29,7676,1,7678,4,7679,0,7680,18,7681,63, ; 7682,36,7683,36,7684,45,7685,45,7686,54,7687,54,7688,63, ; 7689,0 ; 24002 FOR I=1 TO 99: HGR2: FOR E=.08 TO .15 STEP .01: ; FOR Y=4 to 189 STEP 6: FOR X=4 to 278 STEP 6: ; SCALE=(RND(1)=RND then SCALE=1, skip ahead ; SCALE=RND(1)*E*20+1 ; EPOS is E*100, so RND(1)*(EPOS/10)*2+1 ; What this does: ; if EPOS is 8,9 then value is either 1 or 2 ; if EPOS is 10,11,12,13,14 then value is either 1, 2, or 3 ; put random value in FAC ; ldx #1 ; RND(1), Force 1, this set from earlier jsr RND+6 ; skip arg parsing in RND lda EPOS jsr FLOAT ; convert value in A to float in FAC jsr DIV10 ; FAC=FAC/10 ldy #>RND_EXP ; point (Y,A) to RND value lda #shape_table lda #0 ; ROT=0 jsr XDRAW0 ; XDRAW 1 AT X,Y ; Both A and X are 0 at exit nextx: ; NEXT X lda XPOS ; 2 clc ; 1 adc #6 ; x+=6 ; 2 sta XPOS ; 2 ; we know that the X=4 to 278 STEP 6 loop passes through exactly 256 ; so we can check for that by looking for overflow to zero bne skip ; 2 inc XPOSH ; 2 skip: ; the X=4 to 278 STEP 6 loop actually ends when X is at 280, which ; is 256+24. The lower part of the loop does not hit 24, so we ; can check for the end by looking for the low byte at 24. cmp #24 ; see if less than 278 ; 2 bne xloop ; if so, loop ; 2 ;============ ; 15 nexty: ; NEXT Y pla ; YPOS on stack adc #5 ; y+=6 ; carry always set coming in, so only add 5 cmp #189 ; see if less than 189 bcc yloop ; if so, loop nexte: ; NEXT E ldx EPOS inx ; EPOS saved at beginning og eloop cpx #15 bcc eloop ; branch if <15 bcs entropy shape_table: ; .byte 1,0 ; 1 shape ; .byte 4,0 ; offset at 4 bytes .byte 18,63,36,36,45,45,54,54,63,0 ; data