Re: Contest #2... Example Programs
- Posted by unkmar Dec 19, 2010
- 2311 views
Can you read the message? This program has a few extra goodies in it. It is guaranteed to test every function and is usable as a bench mark if you change line 425 to 100, A HALT I will post a follow-up message creator program with some instructions on how to use it.
399 ; Goto line 32 to control the Delay speed 395 ; 099 ; 511 ; This CPU program created by: 511 ; Lucius L. Hilley III 511 ; aka: Unkmar 511 ; http://www.hilleyonline.com/ 511 ; http://www.unkmar.com/ 511 ; 511 ; [ 2010-12-18 22:52:15 EST ] 511 ; 511 ; 511 ; 511 ; 399 ; --=<{([ Push Message ]})>=- 398 ; IP will be stored at r[9] 099 ; IP = Instruction Pointer 511 ; Maintain the IP and usually 511 ; Things work. 511 ; ------------------------------ 511 ; Message encoding font is 1-based 511 ; Character set is: 511 ; "ABCDEFGHIJKLMNOPQRSTUVWXYZ " 511 ; A = 1, Z = 26, ' ' = 27 511 ; 0 = End of Message 511 ; Max length = 980 511 ; ------------------------------ 511 ; mem[1..9] Reserved for 511 ; Function Pointers 511 ; mem[10] = Delay Count 511 ; ------------------------------ 399 ; -- First CODE 399 ; Set Delay Count 215 ; x = 5 711 ; ((x^2)^2)^2 711 711 411 411 411 411 200 ; POP -1 800 ; 710 ; r[1] *= -1 (Negate r[1]) 205 ; 305 ; 910 ; [PUSH] Delay Count 200 ; Reset used registers 210 ; ------------------------------ 393 229 ; MP = 11 --Prime Message Pointer 322 ; 391 ; ------------------------------ 396 ; --==[ Letter START ]==- 321 ; MP += 1 219 ; W (Letter goes here) 319 315 912 ; [PUSH] --==[ Letter END ]==- 394 ; --==[ Letter START ]==- 321 ; MP += 1 215 ; E (Letter) 912 ; [PUSH] 395 ; --==[ Letter START ]==- 321 ; MP += 1 219 ; L (Letter) 313 912 ; [PUSH] 394 ; --==[ Letter START ]==- 321 ; MP += 1 213 ; C (Letter) 912 ; [PUSH] 395 ; --==[ Letter START ]==- 321 ; MP += 1 219 ; O (Letter) 316 912 ; [PUSH] 395 ; --==[ Letter START ]==- 321 ; MP += 1 219 ; M (Letter) 314 912 ; [PUSH] 394 ; --==[ Letter START ]==- 321 ; MP += 1 215 ; E (Letter) 912 ; [PUSH] 396 ; --==[ Letter START ]==- 321 ; MP += 1 219 ; (Letter) 319 319 912 ; [PUSH] 396 ; --==[ Letter START ]==- 321 ; MP += 1 219 ; T (Letter) 319 312 912 ; [PUSH] 395 ; --==[ Letter START ]==- 321 ; MP += 1 219 ; O (Letter) 316 912 ; [PUSH] 396 ; --==[ Letter START ]==- 321 ; MP += 1 219 ; (Letter) 319 319 912 ; [PUSH] 396 ; --==[ Letter START ]==- 321 ; MP += 1 219 ; T (Letter) 319 312 912 ; [PUSH] 394 ; --==[ Letter START ]==- 321 ; MP += 1 218 ; H (Letter) 912 ; [PUSH] 394 ; --==[ Letter START ]==- 321 ; MP += 1 215 ; E (Letter) 912 ; [PUSH] 396 ; --==[ Letter START ]==- 321 ; MP += 1 219 ; (Letter) 319 319 912 ; [PUSH] 394 ; --==[ Letter START ]==- 321 ; MP += 1 213 ; C (Letter) 912 ; [PUSH] 395 ; --==[ Letter START ]==- 321 ; MP += 1 219 ; P (Letter) 317 912 ; [PUSH] 396 ; --==[ Letter START ]==- 321 ; MP += 1 219 ; U (Letter) 319 313 912 ; [PUSH] 396 ; --==[ Letter START ]==- 321 ; MP += 1 219 ; (Letter) 319 319 912 ; [PUSH] 396 ; --==[ Letter START ]==- 321 ; MP += 1 219 ; T (Letter) 319 312 912 ; [PUSH] 394 ; --==[ Letter START ]==- 321 ; MP += 1 218 ; H (Letter) 912 ; [PUSH] 394 ; --==[ Letter START ]==- 321 ; MP += 1 211 ; A (Letter) 912 ; [PUSH] 396 ; --==[ Letter START ]==- 321 ; MP += 1 219 ; T (Letter) 319 312 912 ; [PUSH] 396 ; --==[ Letter START ]==- 321 ; MP += 1 219 ; (Letter) 319 319 912 ; [PUSH] 394 ; --==[ Letter START ]==- 321 ; MP += 1 215 ; E (Letter) 912 ; [PUSH] 396 ; --==[ Letter START ]==- 321 ; MP += 1 219 ; U (Letter) 319 313 912 ; [PUSH] 395 ; --==[ Letter START ]==- 321 ; MP += 1 219 ; P (Letter) 317 912 ; [PUSH] 394 ; --==[ Letter START ]==- 321 ; MP += 1 218 ; H (Letter) 912 ; [PUSH] 395 ; --==[ Letter START ]==- 321 ; MP += 1 219 ; O (Letter) 316 912 ; [PUSH] 395 ; --==[ Letter START ]==- 321 ; MP += 1 219 ; R (Letter) 319 912 ; [PUSH] 394 ; --==[ Letter START ]==- 321 ; MP += 1 219 ; I (Letter) 912 ; [PUSH] 394 ; --==[ Letter START ]==- 321 ; MP += 1 211 ; A (Letter) 912 ; [PUSH] 396 ; --==[ Letter START ]==- 321 ; MP += 1 219 ; (Letter) 319 319 912 ; [PUSH] 394 ; --==[ Letter START ]==- 321 ; MP += 1 212 ; B (Letter) 912 ; [PUSH] 396 ; --==[ Letter START ]==- 321 ; MP += 1 219 ; U (Letter) 319 313 912 ; [PUSH] 394 ; --==[ Letter START ]==- 321 ; MP += 1 219 ; I (Letter) 912 ; [PUSH] 395 ; --==[ Letter START ]==- 321 ; MP += 1 219 ; L (Letter) 313 912 ; [PUSH] 396 ; --==[ Letter START ]==- 321 ; MP += 1 219 ; T (Letter) 319 312 912 ; [PUSH] 396 ; --==[ Letter START ]==- 321 ; MP += 1 219 ; (Letter) 319 319 912 ; [PUSH] 396 ; --==[ Letter START ]==- 321 ; MP += 1 219 ; (Letter) 319 319 912 ; [PUSH] 396 ; --==[ Letter START ]==- 321 ; MP += 1 219 ; (Letter) 319 319 912 ; [PUSH] 396 ; --==[ Letter START ]==- 321 ; MP += 1 219 ; (Letter) 319 319 912 ; [PUSH] 519 ; IP will be stored at r[9] 318 ; Skip (21) -------------------- 201 ; r[0] will enum functions 910 ; 393 ; 399 ; -=[ Using 39x's to maintain IP ]=- 399 ; -=[ 20 = 392 + 399 + 399 ]=- 099 ; Display Registers ??0 ; 0--------- > r[0] = -1 ??1 ; -1-------- > r[1] = PUSH/POP Message ??2 ; --2------- > r[2] = Message Pointer ??3 ; ---3------ > r[3] = POP Message (Copy) ??4 ; ----4----- > r[4] = Loop IP ??5 ; -----5---- > r[5] = Offset to Characters ??6 ; ------6--- > r[6] = Character Size ??7 ; -------7-- > r[7] = Foregrond (Text) ??8 ; --------8- > r[8] = Background ?9 ; ---------9 > r[9] = IP - instruction pointer 200 ; (393 399 ??0 ??1 ??2 ??3 ??4 ??5 ??6 ??7 ??8 ?9)-:s:\s:\r:g 800 ; 099 ; RETURN - {1}Display Registers (11 of 21) 519 ; Skip (32) -------------------- 318 ; 301 ; enum 910 ; 218 ; 414 ; 691 ; 099 ; 202 ; [POP] Registers 309 ; -=( Uses r[0] as mem[r[0]..r[0]+7])=- 402 ; 409 ; 405 ; 511 ; Padding for Choosing other locations. Needs to match POP 810 ; POP r[1] 301 ; 820 ; POP r[2] 301 ; 830 ; POP r[3] 301 ; 840 ; POP r[4] 301 ; 850 ; POP r[5] 301 ; 860 ; POP r[6] 301 ; 870 ; POP r[7] 301 ; 880 ; POP r[8] 200 ; 800 ; -=( Restores r[0] from mem[0] )=- 099 ; RETURN - {2}POP (25 of 32) 519 ; Skip (32) -------------------- 318 ; 301 ; enum 910 ; 218 ; 414 ; 691 ; 099 ; ------------------------------ 202 ; [PUSH] Registers 309 ; -=( Uses r[0] as mem[r[0]..r[0]+7])=- 402 ; 409 ; 405 ; 511 ; Padding for Choosing other locations. Needs to match POP 910 ; PUSH r[1] 301 ; 920 ; PUSH r[2] 301 ; 930 ; PUSH r[3] 301 ; 940 ; PUSH r[4] 301 ; 950 ; PUSH r[5] 301 ; 960 ; PUSH r[6] 301 ; 970 ; PUSH r[7] 301 ; 980 ; PUSH r[8] 200 ; 800 ; -=( Restores r[0] from mem[0] )=- 099 ; RETURN - {3}PUSH (25 of 32) 519 ; Skip (12) -------------------- 317 ; 301 ; enum 910 ; 393 ; 399 ; 099 ; ------------------------------ 311 ; Count += 1 001 ; Goto Count += 1 until Count = 0 200 ; 800 ; 099 ; RETURN - {4}Delay(r[1]) 394 ; 210 ; Cleanup r[0..1] = 0 200 ; 099 ; 399 ; --=<{([ Start Program ]})>=- 397 ; Plus (17) 800 ; -=( POP -1 into r[0] )=- 277 ; Set Foreground 288 ; Set Background 259 ; { Character 352 ; width = 11 } 269 ; { Character 364 ; height 13 } 765 ; Combine Character size 361 ; Add RETURN Instruction 250 ; Clean-up 099 ; ------------------------------ 511 ; Now using r[0,2] and r[6..9] 511 ; ------------------------------ 511 ; SKIP mem[0..9] (MP = 9) 399 ; ------------------------------ 394 ; ------------------------------ 321 ; MP += 1 210 ; Force a NULL 912 ; [PUSH] 229 ; MP = 11 --Reset Message Pointer 322 ; -=<({[ Last SAFE Command ]})>=- 511 ; -=<({[ Crazy Loops and Jumps Below ]})>=- 511 ; -=<({[ 3 values Must be Maintained ]})>=- 511 ; *** WARNING *** Do not edit below this point 549 ; Set r[4] = r[9] as (Loop IP) -->\ 399 ; ------------------------------ | 393 ; / 321 ; MP += 1 (r[4] Points here) <---/ 812 ; Grab Char of Message 832 ; Copy to r[3] 610 ; Subtract 1 to convert to 0-index 716 ; Multiply Character size 554 ; Grab IP of r[4] 359 ; Add Offset to Characters 359 ; 359 ; 359 ; (Skips HALT) 615 ; Add Offset 013 ; Gosub Character(r[3]) 399 ; ------------------------------ 219 ; Get Delay Counter 311 ; r[1] = 10 811 ; POP mem[10] 511 ; Not safe for me to remove 511 ; 2 nop's :( Crazy jumps down here ): 204 ; Select Delay(r[1]) 800 000 409 ; -- (r[9] Points here) 690 200 800 043 290 100 ; -=[HALT]=- 280 270 260 250 240 230 220 210 010 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??8 ??8 ??8 ??7 ??7 ??7 ??8 ??8 ??8 ?8 ??8 ??8 ??8 ??7 ??7 ??7 ??7 ??7 ??8 ??8 ?8 ??8 ??8 ??7 ??7 ??7 ??8 ??7 ??7 ??7 ??8 ?8 ??8 ??8 ??7 ??7 ??8 ??8 ??8 ??7 ??7 ??8 ?8 ??8 ??7 ??7 ??7 ??8 ??8 ??8 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 099 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??8 ??8 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??8 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??8 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??8 ??8 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??8 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??8 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??8 ??8 ?8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 099 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??8 ??8 ??7 ??7 ??7 ??7 ??7 ??8 ??8 ?8 ??8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??8 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??7 ??8 ??8 ??8 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??7 ??7 ??7 ??8 ??8 ??8 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ?8 ??8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??8 ?8 ??8 ??8 ??8 ??7 ??7 ??7 ??7 ??7 ??8 ??8 ?8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 099 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??8 ??8 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??8 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??7 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??7 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??8 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??8 ??8 ?8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 099 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??8 ??8 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??8 ??8 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ?8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 099 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??8 ??8 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??8 ??8 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 099 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??8 ??8 ??7 ??7 ??7 ??7 ??7 ??8 ??8 ?8 ??8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??8 ?8 ??8 ??7 ??7 ??7 ??8 ??8 ??8 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??7 ??7 ??8 ??8 ??7 ??7 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??7 ??7 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??7 ??8 ??8 ??8 ??7 ??7 ??7 ?8 ??8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ?8 ??8 ??8 ??8 ??7 ??7 ??7 ??7 ??8 ??7 ??7 ?8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 099 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 099 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ?8 ??8 ??8 ??8 ??8 ??7 ??7 ??7 ??8 ??8 ??8 ?8 ??8 ??8 ??8 ??8 ??7 ??7 ??7 ??8 ??8 ??8 ?8 ??8 ??8 ??8 ??8 ??7 ??7 ??7 ??8 ??8 ??8 ?8 ??8 ??8 ??8 ??8 ??7 ??7 ??7 ??8 ??8 ??8 ?8 ??8 ??8 ??8 ??8 ??7 ??7 ??7 ??8 ??8 ??8 ?8 ??8 ??8 ??8 ??8 ??7 ??7 ??7 ??8 ??8 ??8 ?8 ??8 ??8 ??8 ??8 ??7 ??7 ??7 ??8 ??8 ??8 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ?8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 099 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ?8 ??8 ??8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ?8 ??8 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ??8 ??8 ?8 ??8 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ??8 ??8 ?8 ??8 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ??8 ??8 ?8 ??8 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ??8 ??8 ?8 ??8 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ??8 ??8 ?8 ??8 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ??8 ??8 ?8 ??8 ??7 ??7 ??8 ??8 ??7 ??7 ??7 ??8 ??8 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??8 ??8 ?8 ??8 ??8 ??7 ??7 ??7 ??7 ??7 ??8 ??8 ??8 ?8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 099 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??7 ??7 ??7 ??8 ?8 ??8 ??7 ??7 ??8 ??8 ??7 ??7 ??7 ??8 ??8 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??8 ??8 ??8 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??8 ??8 ??8 ??8 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??8 ??8 ??8 ?8 ??8 ??7 ??7 ??8 ??8 ??7 ??7 ??7 ??8 ??8 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??7 ??7 ??7 ??8 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 099 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ?8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 099 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??7 ??8 ??8 ??8 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??7 ??7 ??8 ??7 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??7 ??7 ??7 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??7 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 099 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??7 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??7 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??7 ??7 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??7 ??7 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 099 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??8 ??8 ??7 ??7 ??7 ??7 ??7 ??8 ??8 ?8 ??8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??8 ?8 ??8 ??7 ??7 ??7 ??8 ??8 ??8 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??7 ??8 ??8 ??8 ??7 ??7 ??7 ?8 ??8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??8 ?8 ??8 ??8 ??8 ??7 ??7 ??7 ??7 ??7 ??8 ??8 ?8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 099 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??8 ??8 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??8 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??8 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??8 ??8 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 099 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??8 ??8 ??7 ??7 ??7 ??7 ??7 ??8 ??8 ?8 ??8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??8 ?8 ??8 ??7 ??7 ??7 ??8 ??8 ??8 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??7 ??7 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??7 ??7 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??7 ??8 ??8 ??7 ??7 ??7 ??8 ?8 ??8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ?8 ??8 ??8 ??8 ??7 ??7 ??7 ??7 ??8 ??7 ??7 ?8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 099 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??8 ??8 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??8 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??8 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??8 ??8 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??7 ??7 ??8 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??7 ??7 ??8 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 099 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??8 ??8 ??7 ??7 ??7 ??7 ??7 ??8 ??8 ?8 ??8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??8 ?8 ??8 ??7 ??7 ??7 ??8 ??8 ??8 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??8 ??7 ??7 ??7 ??7 ??8 ??8 ??8 ??8 ?8 ??8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??8 ??8 ?8 ??8 ??8 ??8 ??8 ??7 ??7 ??7 ??7 ??7 ??8 ?8 ??8 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??7 ??8 ??8 ??8 ??7 ??7 ??7 ?8 ??8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??8 ?8 ??8 ??8 ??8 ??7 ??7 ??7 ??7 ??7 ??8 ??8 ?8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 099 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ?8 ??8 ??8 ??8 ??8 ??7 ??7 ??7 ??8 ??8 ??8 ?8 ??8 ??8 ??8 ??8 ??7 ??7 ??7 ??8 ??8 ??8 ?8 ??8 ??8 ??8 ??8 ??7 ??7 ??7 ??8 ??8 ??8 ?8 ??8 ??8 ??8 ??8 ??7 ??7 ??7 ??8 ??8 ??8 ?8 ??8 ??8 ??8 ??8 ??7 ??7 ??7 ??8 ??8 ??8 ?8 ??8 ??8 ??8 ??8 ??7 ??7 ??7 ??8 ??8 ??8 ?8 ??8 ??8 ??8 ??8 ??7 ??7 ??7 ??8 ??8 ??8 ?8 ??8 ??8 ??8 ??8 ??7 ??7 ??7 ??8 ??8 ??8 ?8 ??8 ??8 ??8 ??8 ??7 ??7 ??7 ??8 ??8 ??8 ?8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 099 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ?8 ??8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??8 ?8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 099 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??7 ??8 ??8 ??8 ??7 ??7 ??7 ?8 ??8 ??8 ??7 ??7 ??8 ??8 ??8 ??7 ??7 ??8 ?8 ??8 ??8 ??7 ??7 ??8 ??8 ??8 ??7 ??7 ??8 ?8 ??8 ??8 ??7 ??7 ??7 ??8 ??7 ??7 ??7 ??8 ?8 ??8 ??8 ??8 ??7 ??7 ??8 ??7 ??7 ??8 ??8 ?8 ??8 ??8 ??8 ??7 ??7 ??7 ??7 ??7 ??8 ??8 ?8 ??8 ??8 ??8 ??8 ??7 ??7 ??7 ??8 ??8 ??8 ?8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 099 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??7 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??7 ??7 ??7 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??7 ??7 ??7 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??7 ??7 ??8 ??7 ??7 ??7 ??7 ?8 ??8 ??8 ??7 ??7 ??8 ??8 ??8 ??7 ??7 ??8 ?8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 099 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??7 ??8 ??8 ??8 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??7 ??8 ??8 ??8 ??7 ??7 ??7 ?8 ??8 ??8 ??7 ??7 ??7 ??8 ??7 ??7 ??7 ??8 ?8 ??8 ??8 ??8 ??7 ??7 ??7 ??7 ??7 ??8 ??8 ?8 ??8 ??8 ??8 ??8 ??7 ??7 ??7 ??8 ??8 ??8 ?8 ??8 ??8 ??8 ??7 ??7 ??7 ??7 ??7 ??8 ??8 ?8 ??8 ??8 ??7 ??7 ??7 ??8 ??7 ??7 ??7 ??8 ?8 ??8 ??7 ??7 ??7 ??8 ??8 ??8 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??7 ??8 ??8 ??8 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 099 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ?8 ??8 ??7 ??7 ??7 ??8 ??8 ??8 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??7 ??8 ??8 ??8 ??7 ??7 ??7 ?8 ??8 ??8 ??7 ??7 ??7 ??8 ??7 ??7 ??7 ??8 ?8 ??8 ??8 ??8 ??7 ??7 ??7 ??7 ??7 ??8 ??8 ?8 ??8 ??8 ??8 ??8 ??7 ??7 ??7 ??8 ??8 ??8 ?8 ??8 ??8 ??8 ??8 ??7 ??7 ??7 ??8 ??8 ??8 ?8 ??8 ??8 ??8 ??8 ??7 ??7 ??7 ??8 ??8 ??8 ?8 ??8 ??8 ??8 ??8 ??7 ??7 ??7 ??8 ??8 ??8 ?8 ??8 ??8 ??8 ??8 ??7 ??7 ??7 ??8 ??8 ??8 ?8 ??8 ??8 ??8 ??8 ??7 ??7 ??7 ??8 ??8 ??8 ?8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 099 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ?8 ??8 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ??7 ??8 ?8 ??8 ??8 ??8 ??8 ??8 ??7 ??7 ??7 ??8 ??8 ?8 ??8 ??8 ??8 ??8 ??7 ??7 ??7 ??8 ??8 ??8 ?8 ??8 ??8 ??8 ??7 ??7 ??7 ??7 ??8 ??8 ??8 ?8 ??8 ??8 ??8 ??7 ??7 ??7 ??8 ??8 ??8 ??8 ?8 ??8 ??8 ??7 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??7 ??7 ??7 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ?8 ??8 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ??7 ?8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 099 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ??8 ?8 099 100 ; -=[HALT]=-