language: Python (python 2.7.3)
date: 803 days 13 hours ago
link:
visibility: public
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# Add the required imports for this DEMO.
import os
import random
import time
 
def main():
 
        # For this DEMO set up variables as global...
        global column
        global count
        global bargraph
        
        column=0
        count=2
        bargraph="(C)2010, B.Walker, G0CLU. Now Public Domain"
        
        # Disable the cursor as it looks much nicer... ;o)
        os.system("setterm -cursor off")
 
        while 1:
                # Do a full, clean, clear screen and start looping.
                print os.system("clear"),unichr(13),"  ",unichr(13),
 
                # Set to terminal default colour(s).
                print "\033[0mSeven Bit Level Horizontal Analogue Bar Graph Display..."
                print
                print "Original copyright, (C)2010, B.Walker, G0LCU."
                print
                print "Issued to all as Public Domain."
                print
                print
                # Set the bargraph to light green for this DEMO.
                # This is equivalent to 0 for the column value.
                bargraph="        \033[1;32m|"
 
                # Generate a byte value as though grabbed from a serial, parallel or USB port.
                column=int(random.random()*256)
                # Now divide by 2 to simulate a 7 bit value.
                column=int(column/2)
                # Although this should never occur, don't allow any error.
                if column>=127: column=127
                if column<=0: column=0
                
                # Now to generate the bargraph...
                count=0
                while count<=column:
                        # It is equivalent to BIOS character 222 for column value of 1 ONLY.
                        if count==1: bargraph="        \033[1;32m"+unichr(0x2590)
                        count=count+1
                        if count>=2:
                                while count<=column:
                                        # Change bargraph colour on the fly when entering the YELLOW zone... :)
                                        if count>=90: bargraph=bargraph+"\033[1;33m"
                                        # Change bargraph colour on the fly when entering the RED zone... :)
                                        if count>=100: bargraph=bargraph+"\033[1;31m"
                                        if count%2==0:
                                                # For every odd column value print this BIOS character 221.
                                                bargraph=bargraph+unichr(0x258c)
                                        if count%2==1:
                                                # For every even column value OVERWRITE the above with BIOS character 219.
                                                bargraph=bargraph+"\b"+unichr(0x2588)
                                        count=count+1
                # Print the "scale" in the default colour(s)...
                print "\033[0m        0   10   20   30   40   50   60   70   80   90   100  110  120"
                # Now print the meter and bargraph in colours of your choice... :)
                print "\033[1;32m        |    |    |    |    |    |    |    |    |    \033[1;33m|    \033[1;31m|    |    |"
                print "\033[1;32m        +++++++++++++++++++++++++++++++++++++++++++++\033[1;33m+++++\033[1;31m+++++++++++++++"
                print bargraph
                print "\033[1;32m        +++++++++++++++++++++++++++++++++++++++++++++\033[1;33m+++++\033[1;31m+++++++++++++++"
                print
                print "           \033[1;34m  Analogue resolution is half of one division, that is 1."
                print
                # Return back to the default colours and for this DEMO the column value...
                print "\033[0mColumn number",column,"\b...     "
                print
                print "Press Ctrl-C to stop..."
 
                # Do a critical error beep, [sine wave(ish)] for about 1second.
                if column>=120:
                        # Set up the binary code as a crude sinewave.
                        waveform=b"\x0f\x2d\x3f\x2d\x0f\x03\x00\x03"
                        # Set audio timing to zero, "0".
                        count=0
                        # Open up the audio device to write to.
                        # This could be /dev/dsp also...
                        audio=open("/dev/audio", "wb")
                        # A "count" value of 1 = 1mS, so 1000 = 1S.
                        while count<=1000:
                                # Send 8 bytes of data to the audio device 1000 times.
                                # This is VERY close to 1KHz and almost sinewave.
                                audio.write(waveform)
                                count=count+1
                        # Close the audio device access.
                        audio.close()
 
                # Add a DEMO delay to simulate a simple digital voltmeter speed...
                if column<=119: time.sleep(1)
        
        # Enable the cursor again if it ever gets here... ;oO
        os.system("setterm -cursor on")
 
import dis
dis.dis(main)
  • upload with new input
  • result: Success     time: 0.02s    memory: 6832 kB     returned value: 0

     13           0 LOAD_CONST               1 (0)
                  3 STORE_GLOBAL             0 (column)
    
     14           6 LOAD_CONST               2 (2)
                  9 STORE_GLOBAL             1 (count)
    
     15          12 LOAD_CONST               3 ('(C)2010, B.Walker, G0CLU. Now Public Domain')
                 15 STORE_GLOBAL             2 (bargraph)
    
     18          18 LOAD_GLOBAL              3 (os)
                 21 LOAD_ATTR                4 (system)
                 24 LOAD_CONST               4 ('setterm -cursor off')
                 27 CALL_FUNCTION            1
                 30 POP_TOP             
    
     20          31 SETUP_LOOP             578 (to 612)
    
     22     >>   34 LOAD_GLOBAL              3 (os)
                 37 LOAD_ATTR                4 (system)
                 40 LOAD_CONST               5 ('clear')
                 43 CALL_FUNCTION            1
                 46 PRINT_ITEM          
                 47 LOAD_GLOBAL              5 (unichr)
                 50 LOAD_CONST               6 (13)
                 53 CALL_FUNCTION            1
                 56 PRINT_ITEM          
                 57 LOAD_CONST               7 ('  ')
                 60 PRINT_ITEM          
                 61 LOAD_GLOBAL              5 (unichr)
                 64 LOAD_CONST               6 (13)
                 67 CALL_FUNCTION            1
                 70 PRINT_ITEM          
    
     25          71 LOAD_CONST               8 ('\x1b[0mSeven Bit Level Horizontal Analogue Bar Graph Display...')
                 74 PRINT_ITEM          
                 75 PRINT_NEWLINE       
    
     26          76 PRINT_NEWLINE       
    
     27          77 LOAD_CONST               9 ('Original copyright, (C)2010, B.Walker, G0LCU.')
                 80 PRINT_ITEM          
                 81 PRINT_NEWLINE       
    
     28          82 PRINT_NEWLINE       
    
     29          83 LOAD_CONST              10 ('Issued to all as Public Domain.')
                 86 PRINT_ITEM          
                 87 PRINT_NEWLINE       
    
     30          88 PRINT_NEWLINE       
    
     31          89 PRINT_NEWLINE       
    
     34          90 LOAD_CONST              11 ('        \x1b[1;32m|')
                 93 STORE_GLOBAL             2 (bargraph)
    
     37          96 LOAD_GLOBAL              6 (int)
                 99 LOAD_GLOBAL              7 (random)
                102 LOAD_ATTR                7 (random)
                105 CALL_FUNCTION            0
                108 LOAD_CONST              12 (256)
                111 BINARY_MULTIPLY     
                112 CALL_FUNCTION            1
                115 STORE_GLOBAL             0 (column)
    
     39         118 LOAD_GLOBAL              6 (int)
                121 LOAD_GLOBAL              0 (column)
                124 LOAD_CONST               2 (2)
                127 BINARY_DIVIDE       
                128 CALL_FUNCTION            1
                131 STORE_GLOBAL             0 (column)
    
     41         134 LOAD_GLOBAL              0 (column)
                137 LOAD_CONST              13 (127)
                140 COMPARE_OP               5 (>=)
                143 JUMP_IF_FALSE           10 (to 156)
                146 POP_TOP             
                147 LOAD_CONST              13 (127)
                150 STORE_GLOBAL             0 (column)
                153 JUMP_FORWARD             1 (to 157)
            >>  156 POP_TOP             
    
     42     >>  157 LOAD_GLOBAL              0 (column)
                160 LOAD_CONST               1 (0)
                163 COMPARE_OP               1 (<=)
                166 JUMP_IF_FALSE           10 (to 179)
                169 POP_TOP             
                170 LOAD_CONST               1 (0)
                173 STORE_GLOBAL             0 (column)
                176 JUMP_FORWARD             1 (to 180)
            >>  179 POP_TOP             
    
     45     >>  180 LOAD_CONST               1 (0)
                183 STORE_GLOBAL             1 (count)
    
     46         186 SETUP_LOOP             241 (to 430)
            >>  189 LOAD_GLOBAL              1 (count)
                192 LOAD_GLOBAL              0 (column)
                195 COMPARE_OP               1 (<=)
                198 JUMP_IF_FALSE          227 (to 428)
                201 POP_TOP             
    
     48         202 LOAD_GLOBAL              1 (count)
                205 LOAD_CONST              14 (1)
                208 COMPARE_OP               2 (==)
                211 JUMP_IF_FALSE           20 (to 234)
                214 POP_TOP             
                215 LOAD_CONST              15 ('        \x1b[1;32m')
                218 LOAD_GLOBAL              5 (unichr)
                221 LOAD_CONST              16 (9616)
                224 CALL_FUNCTION            1
                227 BINARY_ADD          
                228 STORE_GLOBAL             2 (bargraph)
                231 JUMP_FORWARD             1 (to 235)
            >>  234 POP_TOP             
    
     49     >>  235 LOAD_GLOBAL              1 (count)
                238 LOAD_CONST              14 (1)
                241 BINARY_ADD          
                242 STORE_GLOBAL             1 (count)
    
     50         245 LOAD_GLOBAL              1 (count)
                248 LOAD_CONST               2 (2)
                251 COMPARE_OP               5 (>=)
                254 JUMP_IF_FALSE          167 (to 424)
                257 POP_TOP             
    
     51         258 SETUP_LOOP             164 (to 425)
            >>  261 LOAD_GLOBAL              1 (count)
                264 LOAD_GLOBAL              0 (column)
                267 COMPARE_OP               1 (<=)
                270 JUMP_IF_FALSE          146 (to 419)
                273 POP_TOP             
    
     53         274 LOAD_GLOBAL              1 (count)
                277 LOAD_CONST              17 (90)
                280 COMPARE_OP               5 (>=)
                283 JUMP_IF_FALSE           14 (to 300)
                286 POP_TOP             
                287 LOAD_GLOBAL              2 (bargraph)
                290 LOAD_CONST              18 ('\x1b[1;33m')
                293 BINARY_ADD          
                294 STORE_GLOBAL             2 (bargraph)
                297 JUMP_FORWARD             1 (to 301)
            >>  300 POP_TOP             
    
     55     >>  301 LOAD_GLOBAL              1 (count)
                304 LOAD_CONST              19 (100)
                307 COMPARE_OP               5 (>=)
                310 JUMP_IF_FALSE           14 (to 327)
                313 POP_TOP             
                314 LOAD_GLOBAL              2 (bargraph)
                317 LOAD_CONST              20 ('\x1b[1;31m')
                320 BINARY_ADD          
                321 STORE_GLOBAL             2 (bargraph)
                324 JUMP_FORWARD             1 (to 328)
            >>  327 POP_TOP             
    
     56     >>  328 LOAD_GLOBAL              1 (count)
                331 LOAD_CONST               2 (2)
                334 BINARY_MODULO       
                335 LOAD_CONST               1 (0)
                338 COMPARE_OP               2 (==)
                341 JUMP_IF_FALSE           20 (to 364)
                344 POP_TOP             
    
     58         345 LOAD_GLOBAL              2 (bargraph)
                348 LOAD_GLOBAL              5 (unichr)
                351 LOAD_CONST              21 (9612)
                354 CALL_FUNCTION            1
                357 BINARY_ADD          
                358 STORE_GLOBAL             2 (bargraph)
                361 JUMP_FORWARD             1 (to 365)
            >>  364 POP_TOP             
    
     59     >>  365 LOAD_GLOBAL              1 (count)
                368 LOAD_CONST               2 (2)
                371 BINARY_MODULO       
                372 LOAD_CONST              14 (1)
                375 COMPARE_OP               2 (==)
                378 JUMP_IF_FALSE           24 (to 405)
                381 POP_TOP             
    
     61         382 LOAD_GLOBAL              2 (bargraph)
                385 LOAD_CONST              22 ('\x08')
                388 BINARY_ADD          
                389 LOAD_GLOBAL              5 (unichr)
                392 LOAD_CONST              23 (9608)
                395 CALL_FUNCTION            1
                398 BINARY_ADD          
                399 STORE_GLOBAL             2 (bargraph)
                402 JUMP_FORWARD             1 (to 406)
            >>  405 POP_TOP             
    
     62     >>  406 LOAD_GLOBAL              1 (count)
                409 LOAD_CONST              14 (1)
                412 BINARY_ADD          
                413 STORE_GLOBAL             1 (count)
                416 JUMP_ABSOLUTE          261
            >>  419 POP_TOP             
                420 POP_BLOCK           
                421 JUMP_ABSOLUTE          189
            >>  424 POP_TOP             
            >>  425 JUMP_ABSOLUTE          189
            >>  428 POP_TOP             
                429 POP_BLOCK           
    
     64     >>  430 LOAD_CONST              24 ('\x1b[0m        0   10   20   30   40   50   60   70   80   90   100  110  120')
                433 PRINT_ITEM          
                434 PRINT_NEWLINE       
    
     66         435 LOAD_CONST              25 ('\x1b[1;32m        |    |    |    |    |    |    |    |    |    \x1b[1;33m|    \x1b[1;31m|    |    |')
                438 PRINT_ITEM          
                439 PRINT_NEWLINE       
    
     67         440 LOAD_CONST              26 ('\x1b[1;32m        +++++++++++++++++++++++++++++++++++++++++++++\x1b[1;33m+++++\x1b[1;31m+++++++++++++++')
                443 PRINT_ITEM          
                444 PRINT_NEWLINE       
    
     68         445 LOAD_GLOBAL              2 (bargraph)
                448 PRINT_ITEM          
                449 PRINT_NEWLINE       
    
     69         450 LOAD_CONST              26 ('\x1b[1;32m        +++++++++++++++++++++++++++++++++++++++++++++\x1b[1;33m+++++\x1b[1;31m+++++++++++++++')
                453 PRINT_ITEM          
                454 PRINT_NEWLINE       
    
     70         455 PRINT_NEWLINE       
    
     71         456 LOAD_CONST              27 ('           \x1b[1;34m  Analogue resolution is half of one division, that is 1.')
                459 PRINT_ITEM          
                460 PRINT_NEWLINE       
    
     72         461 PRINT_NEWLINE       
    
     74         462 LOAD_CONST              28 ('\x1b[0mColumn number')
                465 PRINT_ITEM          
                466 LOAD_GLOBAL              0 (column)
                469 PRINT_ITEM          
                470 LOAD_CONST              29 ('\x08...     ')
                473 PRINT_ITEM          
                474 PRINT_NEWLINE       
    
     75         475 PRINT_NEWLINE       
    
     76         476 LOAD_CONST              30 ('Press Ctrl-C to stop...')
                479 PRINT_ITEM          
                480 PRINT_NEWLINE       
    
     79         481 LOAD_GLOBAL              0 (column)
                484 LOAD_CONST              31 (120)
                487 COMPARE_OP               5 (>=)
                490 JUMP_IF_FALSE           85 (to 578)
                493 POP_TOP             
    
     81         494 LOAD_CONST              32 ('\x0f-?-\x0f\x03\x00\x03')
                497 STORE_FAST               0 (waveform)
    
     83         500 LOAD_CONST               1 (0)
                503 STORE_GLOBAL             1 (count)
    
     86         506 LOAD_GLOBAL              8 (open)
                509 LOAD_CONST              33 ('/dev/audio')
                512 LOAD_CONST              34 ('wb')
                515 CALL_FUNCTION            2
                518 STORE_FAST               1 (audio)
    
     88         521 SETUP_LOOP              41 (to 565)
            >>  524 LOAD_GLOBAL              1 (count)
                527 LOAD_CONST              35 (1000)
                530 COMPARE_OP               1 (<=)
                533 JUMP_IF_FALSE           27 (to 563)
                536 POP_TOP             
    
     91         537 LOAD_FAST                1 (audio)
                540 LOAD_ATTR                9 (write)
                543 LOAD_FAST                0 (waveform)
                546 CALL_FUNCTION            1
                549 POP_TOP             
    
     92         550 LOAD_GLOBAL              1 (count)
                553 LOAD_CONST              14 (1)
                556 BINARY_ADD          
                557 STORE_GLOBAL             1 (count)
                560 JUMP_ABSOLUTE          524
            >>  563 POP_TOP             
                564 POP_BLOCK           
    
     94     >>  565 LOAD_FAST                1 (audio)
                568 LOAD_ATTR               10 (close)
                571 CALL_FUNCTION            0
                574 POP_TOP             
                575 JUMP_FORWARD             1 (to 579)
            >>  578 POP_TOP             
    
     97     >>  579 LOAD_GLOBAL              0 (column)
                582 LOAD_CONST              36 (119)
                585 COMPARE_OP               1 (<=)
                588 JUMP_IF_FALSE           17 (to 608)
                591 POP_TOP             
                592 LOAD_GLOBAL             11 (time)
                595 LOAD_ATTR               12 (sleep)
                598 LOAD_CONST              14 (1)
                601 CALL_FUNCTION            1
                604 POP_TOP             
                605 JUMP_ABSOLUTE           34
            >>  608 POP_TOP             
                609 JUMP_ABSOLUTE           34
    
    100     >>  612 LOAD_GLOBAL              3 (os)
                615 LOAD_ATTR                4 (system)
                618 LOAD_CONST              37 ('setterm -cursor on')
                621 CALL_FUNCTION            1
                624 POP_TOP             
                625 LOAD_CONST               0 (None)
                628 RETURN_VALUE