フォーク元 MightyPork/crsn
				
			
			選択できるのは25トピックまでです。
			トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。
		
		
		
		
		
			
		
			
				
					
					
						
							66 行
						
					
					
						
							1.5 KiB
						
					
					
				
			
		
		
	
	
							66 行
						
					
					
						
							1.5 KiB
						
					
					
				(
 | 
						|
    ; If you pipe a text file into this script, it will print it in random colors.
 | 
						|
    
 | 
						|
    (:n)
 | 
						|
        (ld r0 @cin (eof? (j :q)))
 | 
						|
        (cmp r0 '\n')
 | 
						|
        (j.eq :nl)
 | 
						|
        (rng r1 32 255)
 | 
						|
        (rng r2 32 255)
 | 
						|
        (rng r3 32 255)
 | 
						|
        (call rgb 1 r1 r2 r3)
 | 
						|
        (rng r1 0 64)
 | 
						|
        (rng r2 0 64)
 | 
						|
        (rng r3 0 64)
 | 
						|
        (call rgb 0 r1 r2 r3)
 | 
						|
        (ld @cout r0)
 | 
						|
        (j :n)        
 | 
						|
    (:nl)
 | 
						|
        (ld @cout 27)(ld @cout '[')(ld @cout 'm')(ld @cout '\n')
 | 
						|
        (j :n)
 | 
						|
    (:q)    
 | 
						|
        (ld @cout 27)(ld @cout '[')(ld @cout 'm')
 | 
						|
        (halt)
 | 
						|
    
 | 
						|
    (proc rgb fg r g b
 | 
						|
        (mkbf r7)
 | 
						|
        (ld @cout 27)
 | 
						|
        (ld @cout '[')
 | 
						|
        (tst fg 
 | 
						|
            (z? (ld @cout '4'))
 | 
						|
            (nz? (ld @cout '3')))
 | 
						|
        (ld @cout '8')(ld @cout ';')(ld @cout '2')(ld @cout ';')
 | 
						|
        
 | 
						|
        (call itoa r7 r)
 | 
						|
        (bfsz r0 @r7)
 | 
						|
        (ldn @cout @r7 r0)
 | 
						|
        (ld @cout ';')
 | 
						|
        
 | 
						|
        (call itoa r7 g)
 | 
						|
        (bfsz r0 @r7)
 | 
						|
        (ldn @cout @r7 r0)
 | 
						|
        (ld @cout ';')
 | 
						|
        
 | 
						|
        (call itoa r7 b)
 | 
						|
        (bfsz r0 @r7)
 | 
						|
        (ldn @cout @r7 r0)
 | 
						|
        
 | 
						|
        (ld @cout 'm')
 | 
						|
        (del @r7)
 | 
						|
        (ret)
 | 
						|
    )
 | 
						|
        
 | 
						|
    (proc itoa buf num    
 | 
						|
        (bfrsz @buf 0)
 | 
						|
        (ld r1 num)
 | 
						|
        (tst r1 (<0? (mul r1 -1)))
 | 
						|
        (:next)
 | 
						|
            (mod r0 r1 10)
 | 
						|
            (add r0 '0')
 | 
						|
            (bfrpush @buf r0)
 | 
						|
            (div r1 10 (z? 
 | 
						|
                (tst num (<0? (bfrpush @buf '-')))
 | 
						|
                (ret)))
 | 
						|
            (j :next)
 | 
						|
    )
 | 
						|
)
 | 
						|
 |