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) |
IyBBZGQgdGhlIHJlcXVpcmVkIGltcG9ydHMgZm9yIHRoaXMgREVNTy4KaW1wb3J0IG9zCmltcG9ydCByYW5kb20KaW1wb3J0IHRpbWUKCmRlZiBtYWluKCk6CgoJIyBGb3IgdGhpcyBERU1PIHNldCB1cCB2YXJpYWJsZXMgYXMgZ2xvYmFsLi4uCglnbG9iYWwgY29sdW1uCglnbG9iYWwgY291bnQKCWdsb2JhbCBiYXJncmFwaAoJCgljb2x1bW49MAoJY291bnQ9MgoJYmFyZ3JhcGg9IihDKTIwMTAsIEIuV2Fsa2VyLCBHMENMVS4gTm93IFB1YmxpYyBEb21haW4iCgkKCSMgRGlzYWJsZSB0aGUgY3Vyc29yIGFzIGl0IGxvb2tzIG11Y2ggbmljZXIuLi4gO28pCglvcy5zeXN0ZW0oInNldHRlcm0gLWN1cnNvciBvZmYiKQoKCXdoaWxlIDE6CgkJIyBEbyBhIGZ1bGwsIGNsZWFuLCBjbGVhciBzY3JlZW4gYW5kIHN0YXJ0IGxvb3BpbmcuCgkJcHJpbnQgb3Muc3lzdGVtKCJjbGVhciIpLHVuaWNocigxMyksIiAgIix1bmljaHIoMTMpLAoKCQkjIFNldCB0byB0ZXJtaW5hbCBkZWZhdWx0IGNvbG91cihzKS4KCQlwcmludCAiXDAzM1swbVNldmVuIEJpdCBMZXZlbCBIb3Jpem9udGFsIEFuYWxvZ3VlIEJhciBHcmFwaCBEaXNwbGF5Li4uIgoJCXByaW50CgkJcHJpbnQgIk9yaWdpbmFsIGNvcHlyaWdodCwgKEMpMjAxMCwgQi5XYWxrZXIsIEcwTENVLiIKCQlwcmludAoJCXByaW50ICJJc3N1ZWQgdG8gYWxsIGFzIFB1YmxpYyBEb21haW4uIgoJCXByaW50CgkJcHJpbnQKCQkjIFNldCB0aGUgYmFyZ3JhcGggdG8gbGlnaHQgZ3JlZW4gZm9yIHRoaXMgREVNTy4KCQkjIFRoaXMgaXMgZXF1aXZhbGVudCB0byAwIGZvciB0aGUgY29sdW1uIHZhbHVlLgoJCWJhcmdyYXBoPSIgICAgICAgIFwwMzNbMTszMm18IgoKCQkjIEdlbmVyYXRlIGEgYnl0ZSB2YWx1ZSBhcyB0aG91Z2ggZ3JhYmJlZCBmcm9tIGEgc2VyaWFsLCBwYXJhbGxlbCBvciBVU0IgcG9ydC4KCQljb2x1bW49aW50KHJhbmRvbS5yYW5kb20oKSoyNTYpCgkJIyBOb3cgZGl2aWRlIGJ5IDIgdG8gc2ltdWxhdGUgYSA3IGJpdCB2YWx1ZS4KCQljb2x1bW49aW50KGNvbHVtbi8yKQoJCSMgQWx0aG91Z2ggdGhpcyBzaG91bGQgbmV2ZXIgb2NjdXIsIGRvbid0IGFsbG93IGFueSBlcnJvci4KCQlpZiBjb2x1bW4+PTEyNzogY29sdW1uPTEyNwoJCWlmIGNvbHVtbjw9MDogY29sdW1uPTAKCQkKCQkjIE5vdyB0byBnZW5lcmF0ZSB0aGUgYmFyZ3JhcGguLi4KCQljb3VudD0wCgkJd2hpbGUgY291bnQ8PWNvbHVtbjoKCQkJIyBJdCBpcyBlcXVpdmFsZW50IHRvIEJJT1MgY2hhcmFjdGVyIDIyMiBmb3IgY29sdW1uIHZhbHVlIG9mIDEgT05MWS4KCQkJaWYgY291bnQ9PTE6IGJhcmdyYXBoPSIgICAgICAgIFwwMzNbMTszMm0iK3VuaWNocigweDI1OTApCgkJCWNvdW50PWNvdW50KzEKCQkJaWYgY291bnQ+PTI6CgkJCQl3aGlsZSBjb3VudDw9Y29sdW1uOgoJCQkJCSMgQ2hhbmdlIGJhcmdyYXBoIGNvbG91ciBvbiB0aGUgZmx5IHdoZW4gZW50ZXJpbmcgdGhlIFlFTExPVyB6b25lLi4uIDopCgkJCQkJaWYgY291bnQ+PTkwOiBiYXJncmFwaD1iYXJncmFwaCsiXDAzM1sxOzMzbSIKCQkJCQkjIENoYW5nZSBiYXJncmFwaCBjb2xvdXIgb24gdGhlIGZseSB3aGVuIGVudGVyaW5nIHRoZSBSRUQgem9uZS4uLiA6KQoJCQkJCWlmIGNvdW50Pj0xMDA6IGJhcmdyYXBoPWJhcmdyYXBoKyJcMDMzWzE7MzFtIgoJCQkJCWlmIGNvdW50JTI9PTA6CgkJCQkJCSMgRm9yIGV2ZXJ5IG9kZCBjb2x1bW4gdmFsdWUgcHJpbnQgdGhpcyBCSU9TIGNoYXJhY3RlciAyMjEuCgkJCQkJCWJhcmdyYXBoPWJhcmdyYXBoK3VuaWNocigweDI1OGMpCgkJCQkJaWYgY291bnQlMj09MToKCQkJCQkJIyBGb3IgZXZlcnkgZXZlbiBjb2x1bW4gdmFsdWUgT1ZFUldSSVRFIHRoZSBhYm92ZSB3aXRoIEJJT1MgY2hhcmFjdGVyIDIxOS4KCQkJCQkJYmFyZ3JhcGg9YmFyZ3JhcGgrIlxiIit1bmljaHIoMHgyNTg4KQoJCQkJCWNvdW50PWNvdW50KzEKCQkjIFByaW50IHRoZSAic2NhbGUiIGluIHRoZSBkZWZhdWx0IGNvbG91cihzKS4uLgoJCXByaW50ICJcMDMzWzBtICAgICAgICAwICAgMTAgICAyMCAgIDMwICAgNDAgICA1MCAgIDYwICAgNzAgICA4MCAgIDkwICAgMTAwICAxMTAgIDEyMCIKCQkjIE5vdyBwcmludCB0aGUgbWV0ZXIgYW5kIGJhcmdyYXBoIGluIGNvbG91cnMgb2YgeW91ciBjaG9pY2UuLi4gOikKCQlwcmludCAiXDAzM1sxOzMybSAgICAgICAgfCAgICB8ICAgIHwgICAgfCAgICB8ICAgIHwgICAgfCAgICB8ICAgIHwgICAgXDAzM1sxOzMzbXwgICAgXDAzM1sxOzMxbXwgICAgfCAgICB8IgoJCXByaW50ICJcMDMzWzE7MzJtICAgICAgICArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKytcMDMzWzE7MzNtKysrKytcMDMzWzE7MzFtKysrKysrKysrKysrKysrIgoJCXByaW50IGJhcmdyYXBoCgkJcHJpbnQgIlwwMzNbMTszMm0gICAgICAgICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrK1wwMzNbMTszM20rKysrK1wwMzNbMTszMW0rKysrKysrKysrKysrKysiCgkJcHJpbnQKCQlwcmludCAiICAgICAgICAgICBcMDMzWzE7MzRtICBBbmFsb2d1ZSByZXNvbHV0aW9uIGlzIGhhbGYgb2Ygb25lIGRpdmlzaW9uLCB0aGF0IGlzIDEuIgoJCXByaW50CgkJIyBSZXR1cm4gYmFjayB0byB0aGUgZGVmYXVsdCBjb2xvdXJzIGFuZCBmb3IgdGhpcyBERU1PIHRoZSBjb2x1bW4gdmFsdWUuLi4KCQlwcmludCAiXDAzM1swbUNvbHVtbiBudW1iZXIiLGNvbHVtbiwiXGIuLi4gICAgICIKCQlwcmludAoJCXByaW50ICJQcmVzcyBDdHJsLUMgdG8gc3RvcC4uLiIKCgkJIyBEbyBhIGNyaXRpY2FsIGVycm9yIGJlZXAsIFtzaW5lIHdhdmUoaXNoKV0gZm9yIGFib3V0IDFzZWNvbmQuCgkJaWYgY29sdW1uPj0xMjA6CgkJCSMgU2V0IHVwIHRoZSBiaW5hcnkgY29kZSBhcyBhIGNydWRlIHNpbmV3YXZlLgoJCQl3YXZlZm9ybT1iIlx4MGZceDJkXHgzZlx4MmRceDBmXHgwM1x4MDBceDAzIgoJCQkjIFNldCBhdWRpbyB0aW1pbmcgdG8gemVybywgIjAiLgoJCQljb3VudD0wCgkJCSMgT3BlbiB1cCB0aGUgYXVkaW8gZGV2aWNlIHRvIHdyaXRlIHRvLgoJCQkjIFRoaXMgY291bGQgYmUgL2Rldi9kc3AgYWxzby4uLgoJCQlhdWRpbz1vcGVuKCIvZGV2L2F1ZGlvIiwgIndiIikKCQkJIyBBICJjb3VudCIgdmFsdWUgb2YgMSA9IDFtUywgc28gMTAwMCA9IDFTLgoJCQl3aGlsZSBjb3VudDw9MTAwMDoKCQkJCSMgU2VuZCA4IGJ5dGVzIG9mIGRhdGEgdG8gdGhlIGF1ZGlvIGRldmljZSAxMDAwIHRpbWVzLgoJCQkJIyBUaGlzIGlzIFZFUlkgY2xvc2UgdG8gMUtIeiBhbmQgYWxtb3N0IHNpbmV3YXZlLgoJCQkJYXVkaW8ud3JpdGUod2F2ZWZvcm0pCgkJCQljb3VudD1jb3VudCsxCgkJCSMgQ2xvc2UgdGhlIGF1ZGlvIGRldmljZSBhY2Nlc3MuCgkJCWF1ZGlvLmNsb3NlKCkKCgkJIyBBZGQgYSBERU1PIGRlbGF5IHRvIHNpbXVsYXRlIGEgc2ltcGxlIGRpZ2l0YWwgdm9sdG1ldGVyIHNwZWVkLi4uCgkJaWYgY29sdW1uPD0xMTk6IHRpbWUuc2xlZXAoMSkKCQoJIyBFbmFibGUgdGhlIGN1cnNvciBhZ2FpbiBpZiBpdCBldmVyIGdldHMgaGVyZS4uLiA7b08KCW9zLnN5c3RlbSgic2V0dGVybSAtY3Vyc29yIG9uIikKCmltcG9ydCBkaXMKZGlzLmRpcyhtYWluKQ==
-
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


