.module shell.c .area text ; ?temp -> -49,x ; ?temp -> -47,x ; cmd_length -> -46,x ; cmd -> -44,x ; argc -> -43,x ; argv -> -41,x ; cursor1 -> -39,x ; j -> -37,x ; cursor2 -> -36,x ; command -> -34,x ; i -> -1,x 0000 _shell:: 0000 34 pshx 0001 B775 tfr s,x 0003 1BF1C4 leas -60,sp 0006 ; // shell.c 0006 ; 0006 ; #include <912d60.h> 0006 ; #include 0006 ; #include 0006 ; #include 0006 ; #include 0006 ; #include "kernel.h" 0006 ; #include "semlib.h" 0006 ; 0006 ; 0006 ; 0006 ; 0006 ; // FUNCTION PROTOTYPES 0006 ; void shellcmd_help(char *argv1); 0006 ; void shellcmd_tcb(signed char id); 0006 ; void shellcmd_rcb(signed char id); 0006 ; void shellcmd_rcbPrint(signed char rid); 0006 ; void shellcmd_ticks(void); 0006 ; void shellcmd_startTask(unsigned char id); 0006 ; void shellcmd_stopTask(unsigned char id); 0006 ; void shellcmd_freeMemCheck(void); 0006 ; void shellcmd_kdb(int onoff); 0006 ; void shellcmd_quitShell(void); 0006 ; /* 0006 ; void shellcmd_setTaskPriority(unsigned char id, unsigned char priority); 0006 ; */ 0006 ; 0006 ; 0006 ; 0006 ; 0006 ; // GLOBAL VARIABLES 0006 ; extern unsigned long int system_tick; 0006 ; extern unsigned int current; // current task id number 0006 ; 0006 ; extern char error_msg[8][25]; 0006 ; extern char error_src[5][18]; 0006 ; 0006 ; extern char kdb_trace; 0006 ; 0006 ; 0006 ; 0006 ; 0006 ; void shell(void) { 0006 ; 0006 ; // LOCAL CONSTANTS 0006 ; #define cmd_size (32+1) 0006 ; 0006 ; 0006 ; 0006 ; // LOCAL ENUMERATIONS 0006 ; enum command_type { help = 1, 0006 ; tcb, 0006 ; rcb, 0006 ; ticks, 0006 ; start, 0006 ; stop, 0006 ; priority, 0006 ; freemem, 0006 ; kdb, 0006 ; quit 0006 ; }; 0006 ; 0006 ; 0006 ; 0006 ; // LOCAL VARIABLES 0006 ; char command[cmd_size], i, j, **argv, *cursor1, *cursor2; 0006 ; int cmd_length, argc; 0006 ; enum command_type cmd; 0006 ; 0006 ; 0006 ; 0006 ; 0006 ; // INITIALIZE SHELL 0006 ; sem_get(COM1); // get COM1 semaphore 0006 CC0003 ldd #3 0009 160000 jsr _sem_get 000C ; set_task_priority(current, 254); 000C CC00FE ldd #254 000F 6C80 std 0,sp 0011 FC0000 ldd _current 0014 87 clra 0015 160000 jsr _set_task_priority 0018 ; INTR_ON(); // enable interrupts 0018 10EF cli 001A 001A 18200559 lbra L5 001E L4: 001E ; 001E ; 001E ; 001E ; 001E ; 001E ; // SHELL COMMAND LINE INTERPRETER 001E ; while (1) { 001E ; 001E ; i = 0; 001E 691F clr -1,x 0020 ; cursor1 = command; 0020 19E1DE leay -34,x 0023 6DE1D9 sty -39,x 0026 ; cursor2 = command; 0026 19E1DE leay -34,x 0029 6DE1DC sty -36,x 002C ; 002C ; 002C ; // put a PROMPT 002C ; putchar('>'); putchar('>'); putchar(' '); 002C CC003E ldd #62 002F 160000 jsr _putchar 0032 CC003E ldd #62 0035 160000 jsr _putchar 0038 CC0020 ldd #32 003B 160000 jsr _putchar 003E 2056 bra L8 0040 L7: 0040 ; 0040 ; 0040 ; // GET AND ECHO THE COMMAND on the console 0040 ; while (((command[i]=getchar()) != 0xD) && (i -- required arguments"); 03A3 CC0BA5 ldd #L77 03A6 160000 jsr _puts 03A9 ; puts("[] -- optional arguments\n"); 03A9 CC0B8B ldd #L78 03AC 160000 jsr _puts 03AF ; puts("help [cmd] -- help on a specific command"); 03AF CC0B62 ldd #L79 03B2 160000 jsr _puts 03B5 ; puts("tcb [task_id] -- prints task control block"); 03B5 CC0B37 ldd #L80 03B8 160000 jsr _puts 03BB ; puts("rcb [[task_id] | [-b]] -- prints resource control block"); 03BB CC0AFF ldd #L81 03BE 160000 jsr _puts 03C1 ; puts("ticks -- shows system tick"); 03C1 CC0AE4 ldd #L82 03C4 160000 jsr _puts 03C7 ; puts("start -- start a task"); 03C7 CC0AC4 ldd #L83 03CA 160000 jsr _puts 03CD ; puts("stop -- stop a task"); 03CD CC0AA5 ldd #L84 03D0 160000 jsr _puts 03D3 ; puts("priority , -- change prio"); 03D3 CC0A71 ldd #L85 03D6 160000 jsr _puts 03D9 ; puts("freemem -- get approximate free RAM space"); 03D9 CC0A47 ldd #L86 03DC 160000 jsr _puts 03DF ; puts("kdb [1|0] -- turn kernel debug on/off"); 03DF CC0A21 ldd #L87 03E2 160000 jsr _puts 03E5 ; puts("quit -- quit the shell (carefull!)"); 03E5 CC09FE ldd #L88 03E8 160000 jsr _puts 03EB ; putchar('\n'); 03EB CC000A ldd #10 03EE 160000 jsr _putchar 03F1 ; } 03F1 18200154 lbra L71 03F5 L74: 03F5 ; else if (argc == 2) 03F5 ECE1D5 ldd -43,x 03F8 8C0002 cpd #2 03FB 1826014A lbne L71 03FF ; shellcmd_help(argv[1]); 03FF EDE1D7 ldy -41,x 0402 EC42 ldd 2,y 0404 160587 jsr _shellcmd_help 0407 ; break; 0407 1820013E lbra L71 040B L91: 040B ; case tcb: 040B ; if (argc == 1) 040B ECE1D5 ldd -43,x 040E 8C0001 cpd #1 0411 260A bne L92 0413 ; shellcmd_tcb(-1); 0413 CCFFFF ldd #-1 0416 16058E jsr _shellcmd_tcb 0419 1820012C lbra L71 041D L92: 041D ; else if (argc == 2) 041D ECE1D5 ldd -43,x 0420 8C0002 cpd #2 0423 2611 bne L94 0425 ; shellcmd_tcb(atoi(argv[1])); 0425 EDE1D7 ldy -41,x 0428 EC42 ldd 2,y 042A 160000 jsr _atoi 042D B714 tfr b,d 042F 16058E jsr _shellcmd_tcb 0432 18200113 lbra L71 0436 L94: 0436 ; else if (argc > 2) 0436 ECE1D5 ldd -43,x 0439 8C0002 cpd #2 043C 182F0109 lble L71 0440 ; puts(error_msg[1]); 0440 CC0019 ldd #_error_msg+25 0443 160000 jsr _puts 0446 ; break; 0446 182000FF lbra L71 044A L99: 044A ; case rcb: 044A ; if (argc == 1) // print entire rcb 044A ECE1D5 ldd -43,x 044D 8C0001 cpd #1 0450 260A bne L100 0452 ; shellcmd_rcb(-1); 0452 CCFFFF ldd #-1 0455 16064F jsr _shellcmd_rcb 0458 182000ED lbra L71 045C L100: 045C ; else if (argc == 2) { 045C ECE1D5 ldd -43,x 045F 8C0002 cpd #2 0462 262D bne L102 0464 ; if (!strcmp(argv[1], "-b")) { // print 'busy' only 0464 CC09FB ldd #L106 0467 6C80 std 0,sp 0469 EDE1D7 ldy -41,x 046C EC42 ldd 2,y 046E 160000 jsr _strcmp 0471 8C0000 cpd #0 0474 260A bne L104 0476 ; shellcmd_rcb(-2); 0476 CCFFFE ldd #-2 0479 16064F jsr _shellcmd_rcb 047C ; } 047C 182000C9 lbra L71 0480 L104: 0480 ; else 0480 ; shellcmd_rcb(atoi(argv[1])); // single 0480 EDE1D7 ldy -41,x 0483 EC42 ldd 2,y 0485 160000 jsr _atoi 0488 B714 tfr b,d 048A 16064F jsr _shellcmd_rcb 048D ; } 048D 182000B8 lbra L71 0491 L102: 0491 ; else if (argc > 2) 0491 ECE1D5 ldd -43,x 0494 8C0002 cpd #2 0497 182F00AE lble L71 049B ; puts(error_msg[1]); 049B CC0019 ldd #_error_msg+25 049E 160000 jsr _puts 04A1 ; break; 04A1 182000A4 lbra L71 04A5 L110: 04A5 ; case ticks: 04A5 ; if (argc > 1) 04A5 ECE1D5 ldd -43,x 04A8 8C0001 cpd #1 04AB 2F0A ble L111 04AD ; puts(error_msg[1]); 04AD CC0019 ldd #_error_msg+25 04B0 160000 jsr _puts 04B3 18200092 lbra L71 04B7 L111: 04B7 ; else 04B7 ; shellcmd_ticks(); 04B7 160717 jsr _shellcmd_ticks 04BA ; break; 04BA 1820008B lbra L71 04BE L114: 04BE ; case start: 04BE ; if ((argc != 2) || 04BE ECE1D5 ldd -43,x 04C1 8C0002 cpd #2 04C4 2610 bne L117 04C6 EDE1D7 ldy -41,x 04C9 ED42 ldy 2,y 04CB E640 ldab 0,y 04CD 87 clra 04CE 160000 jsr _isdigit 04D1 8C0000 cpd #0 04D4 2608 bne L115 04D6 L117: 04D6 ; (!isdigit(*argv[1]))) 04D6 ; puts(error_msg[1]); 04D6 CC0019 ldd #_error_msg+25 04D9 160000 jsr _puts 04DC 206B bra L71 04DE L115: 04DE ; else 04DE ; shellcmd_startTask(atoi(argv[1])); 04DE EDE1D7 ldy -41,x 04E1 EC42 ldd 2,y 04E3 160000 jsr _atoi 04E6 87 clra 04E7 16073F jsr _shellcmd_startTask 04EA ; break; 04EA 205D bra L71 04EC L119: 04EC ; case stop: 04EC ; if ((argc != 2) || 04EC ECE1D5 ldd -43,x 04EF 8C0002 cpd #2 04F2 2610 bne L122 04F4 EDE1D7 ldy -41,x 04F7 ED42 ldy 2,y 04F9 E640 ldab 0,y 04FB 87 clra 04FC 160000 jsr _isdigit 04FF 8C0000 cpd #0 0502 2608 bne L120 0504 L122: 0504 ; (!isdigit(*argv[1]))) 0504 ; puts(error_msg[1]); 0504 CC0019 ldd #_error_msg+25 0507 160000 jsr _puts 050A 203D bra L71 050C L120: 050C ; else 050C ; shellcmd_stopTask(atoi(argv[1])); 050C EDE1D7 ldy -41,x 050F EC42 ldd 2,y 0511 160000 jsr _atoi 0514 87 clra 0515 16076A jsr _shellcmd_stopTask 0518 ; break; 0518 202F bra L71 051A L124: 051A ; case priority: 051A ; puts(error_msg[0]); 051A CC0000 ldd #_error_msg 051D 160000 jsr _puts 0520 ; break; 0520 2027 bra L71 0522 L125: 0522 ; case freemem: 0522 ; shellcmd_freeMemCheck(); 0522 160791 jsr _shellcmd_freeMemCheck 0525 ; break; 0525 2022 bra L71 0527 L126: 0527 ; case kdb: 0527 ; if (argc < 2) 0527 ECE1D5 ldd -43,x 052A 8C0002 cpd #2 052D 2C08 bge L127 052F ; puts(error_msg[1]); 052F CC0019 ldd #_error_msg+25 0532 160000 jsr _puts 0535 2012 bra L71 0537 L127: 0537 ; else 0537 ; shellcmd_kdb(atoi(argv[1])); 0537 EDE1D7 ldy -41,x 053A EC42 ldd 2,y 053C 160000 jsr _atoi 053F 1607A9 jsr _shellcmd_kdb 0542 ; break; 0542 2005 bra L71 0544 L130: 0544 ; case quit: 0544 ; shellcmd_quitShell(); 0544 1607B8 jsr _shellcmd_quitShell 0547 ; return; 0547 203A bra L3 0549 X2: 0549 ; default: 0549 ; break; 0549 L71: 0549 ; 0549 ; }} // end switch/if 0549 L68: 0549 ; 0549 ; 0549 ; 0549 ; // free the argc and argv array memory 0549 ; for (i=0; i 2,x 0587 _shellcmd_help:: 0587 ; 0587 ; 0587 ; 0587 ; 0587 ; 0587 ; void shellcmd_help(char *argv1) { 0587 ; 0587 ; puts(error_msg[0]); 0587 CC0000 ldd #_error_msg 058A 160000 jsr _puts 058D ; } 058D L135: 058D .dbline 0 ; func end 058D 3D rts 058E ; start -> -2,x 058E ; max -> -1,x 058E ; tid -> 3,x 058E _shellcmd_tcb:: 058E 3B pshd 058F 34 pshx 0590 B775 tfr s,x 0592 1BF1EA leas -22,sp 0595 ; 0595 ; 0595 ; 0595 ; void shellcmd_tcb(signed char tid) { 0595 ; 0595 ; // Local Variables 0595 ; unsigned char max, start; 0595 ; 0595 ; if (tid >= MAXTASKS) { 0595 E603 ldab 3,x 0597 C108 cmpb #8 0599 2D0A blt L137 059B ; puts(error_msg[2]); 059B CC0032 ldd #_error_msg+50 059E 160000 jsr _puts 05A1 ; return; 05A1 182000A4 lbra L136 05A5 L137: 05A5 ; } 05A5 ; 05A5 ; if (tid < 0) { 05A5 E703 tst 3,x 05A7 2C08 bge L140 05A9 ; start = 0; 05A9 691E clr -2,x 05AB ; max = MAXTASKS; 05AB C608 ldab #8 05AD 6B1F stab -1,x 05AF ; } 05AF 200F bra L141 05B1 L140: 05B1 ; else { 05B1 ; start = tid; 05B1 E603 ldab 3,x 05B3 B714 tfr b,d 05B5 6B1E stab -2,x 05B7 ; max = tid + 1; 05B7 E603 ldab 3,x 05B9 B714 tfr b,d 05BB C30001 addd #1 05BE 6B1F stab -1,x 05C0 ; } 05C0 L141: 05C0 ; 05C0 ; puts("\nTask Control Block:"); 05C0 CC09E6 ldd #L142 05C3 160000 jsr _puts 05C6 E61E ldab -2,x 05C8 6B03 stab 3,x 05CA 2065 bra L146 05CC L143: 05CC ; for (tid=start; tid -1,x 064F ; option -> 3,x 064F _shellcmd_rcb:: 064F 3B pshd 0650 34 pshx 0651 B775 tfr s,x 0653 1B9E leas -2,sp 0655 ; 0655 ; 0655 ; 0655 ; 0655 ; void shellcmd_rcb(signed char option) { 0655 ; 0655 ; // Local Variables 0655 ; unsigned char rid; 0655 ; 0655 ; 0655 ; 0655 ; // print all 0655 ; if (option == -1) { 0655 E603 ldab 3,x 0657 C1FF cmpb #-1 0659 261B bne L154 065B 691F clr -1,x 065D 200F bra L159 065F L156: 065F E61F ldab -1,x 0661 B714 tfr b,d 0663 1606CF jsr _shellcmd_rcbPrint 0666 L157: 0666 E61F ldab -1,x 0668 87 clra 0669 C30001 addd #1 066C 6B1F stab -1,x 066E L159: 066E ; for (rid=0; rid= NUMRESOURCES) { 06A2 E603 ldab 3,x 06A4 C104 cmpb #4 06A6 2D08 blt L168 06A8 ; puts(error_msg[6]); 06A8 CC0096 ldd #_error_msg+150 06AB 160000 jsr _puts 06AE ; return; 06AE 2019 bra L153 06B0 L168: 06B0 ; } 06B0 ; else 06B0 ; shellcmd_rcbPrint(option); 06B0 E603 ldab 3,x 06B2 B714 tfr b,d 06B4 1606CF jsr _shellcmd_rcbPrint 06B7 ; 06B7 ; } 06B7 L161: 06B7 L155: 06B7 ; 06B7 ; 06B7 ; puts ("-----------+----------+------------+------------+"); 06B7 CC08A3 ldd #L171 06BA 160000 jsr _puts 06BD ; 06BD ; puts("\nState: 0=notbusy, 1=busy"); 06BD CC0889 ldd #L172 06C0 160000 jsr _puts 06C3 ; puts("Owner: 0..15=task ID, 255=nobody"); 06C3 CC0868 ldd #L173 06C6 160000 jsr _puts 06C9 ; 06C9 ; } 06C9 L153: 06C9 B757 tfr x,s 06CB 30 pulx 06CC 1B82 leas 2,sp 06CE .dbline 0 ; func end 06CE 3D rts 06CF ; rid -> 3,x 06CF _shellcmd_rcbPrint:: 06CF 3B pshd 06D0 34 pshx 06D1 B775 tfr s,x 06D3 1B94 leas -12,sp 06D5 ; 06D5 ; 06D5 ; 06D5 ; void shellcmd_rcbPrint(signed char rid) { 06D5 ; 06D5 ; puts ("-----------+----------+------------+------------+"); 06D5 CC08A3 ldd #L171 06D8 160000 jsr _puts 06DB ; 06DB ; INTR_OFF(); 06DB 1410 sei 06DD 06DD ; printf("RsrcID: %2d | State: %x | Owner: %3d | Waiting: %d |\n", 06DD E603 ldab 3,x 06DF B714 tfr b,d 06E1 87 clra 06E2 160000 jsr _get_resource_state 06E5 6C1E std -2,x 06E7 E603 ldab 3,x 06E9 B714 tfr b,d 06EB 87 clra 06EC 160000 jsr _get_resource_owner 06EF 6C1C std -4,x 06F1 E603 ldab 3,x 06F3 B714 tfr b,d 06F5 87 clra 06F6 160000 jsr _get_resource_queuelen 06F9 6C86 std 6,sp 06FB ED1C ldy -4,x 06FD 6D84 sty 4,sp 06FF ED1E ldy -2,x 0701 6D82 sty 2,sp 0703 E603 ldab 3,x 0705 B714 tfr b,d 0707 6C80 std 0,sp 0709 CC0832 ldd #L175 070C 160000 jsr _printf 070F ; rid, 070F ; get_resource_state(rid), 070F ; get_resource_owner(rid), 070F ; get_resource_queuelen(rid)); 070F ; INTR_ON(); 070F 10EF cli 0711 0711 ; 0711 ; } 0711 L174: 0711 B757 tfr x,s 0713 30 pulx 0714 1B82 leas 2,sp 0716 .dbline 0 ; func end 0716 3D rts 0717 ; lreg1 -> -4,x 0717 ; lreg2 -> -8,x 0717 _shellcmd_ticks:: 0717 34 pshx 0718 B775 tfr s,x 071A 1B94 leas -12,sp 071C ; 071C ; 071C ; 071C ; void shellcmd_ticks(void) { 071C ; 071C ; INTR_OFF(); 071C 1410 sei 071E 071E ; printf("ticks: %ld\n", system_tick); 071E CD0000 ldy #_system_tick 0721 1802401C movw 0,y,-4,x 0725 1802421E movw 2,y,-2,x 0729 1980 leay 0,sp 072B 18021C40 movw -4,x,0,y 072F 18021E42 movw -2,x,2,y 0733 CC0826 ldd #L177 0736 160000 jsr _printf 0739 ; INTR_ON(); 0739 10EF cli 073B 073B ; } 073B L176: 073B B757 tfr x,s 073D 30 pulx 073E .dbline 0 ; func end 073E 3D rts 073F ; id -> 3,x 073F _shellcmd_startTask:: 073F 3B pshd 0740 34 pshx 0741 B775 tfr s,x 0743 1B9E leas -2,sp 0745 ; 0745 ; 0745 ; 0745 ; 0745 ; void shellcmd_startTask(unsigned char id) { 0745 ; 0745 ; INTR_OFF(); 0745 1410 sei 0747 0747 ; if (set_task_state(id, PENDING) == 0) 0747 CC0001 ldd #1 074A 6C80 std 0,sp 074C E603 ldab 3,x 074E 87 clra 074F 160000 jsr _set_task_state 0752 8C0000 cpd #0 0755 260B bne L179 0757 ; printf("task %d started\n", id); 0757 E603 ldab 3,x 0759 87 clra 075A 6C80 std 0,sp 075C CC0815 ldd #L181 075F 160000 jsr _printf 0762 L179: 0762 ; INTR_ON(); 0762 10EF cli 0764 0764 ; } 0764 L178: 0764 B757 tfr x,s 0766 30 pulx 0767 1B82 leas 2,sp 0769 .dbline 0 ; func end 0769 3D rts 076A ; id -> 3,x 076A _shellcmd_stopTask:: 076A 3B pshd 076B 34 pshx 076C B775 tfr s,x 076E 1B9E leas -2,sp 0770 ; 0770 ; 0770 ; 0770 ; 0770 ; void shellcmd_stopTask(unsigned char id) { 0770 ; 0770 ; if ((set_task_state(id, STOPPED)) == 0) 0770 CC0004 ldd #4 0773 6C80 std 0,sp 0775 E603 ldab 3,x 0777 87 clra 0778 160000 jsr _set_task_state 077B 8C0000 cpd #0 077E 260B bne L183 0780 ; printf("task %d stopped\n", id); 0780 E603 ldab 3,x 0782 87 clra 0783 6C80 std 0,sp 0785 CC0804 ldd #L185 0788 160000 jsr _printf 078B L183: 078B ; 078B ; } 078B L182: 078B B757 tfr x,s 078D 30 pulx 078E 1B82 leas 2,sp 0790 .dbline 0 ; func end 0790 3D rts 0791 _shellcmd_freeMemCheck:: 0791 34 pshx 0792 B775 tfr s,x 0794 1B9E leas -2,sp 0796 ; 0796 ; 0796 ; 0796 ; void shellcmd_freeMemCheck(void) { 0796 ; 0796 ; 0796 ; INTR_OFF(); 0796 1410 sei 0798 0798 ; printf("approximate free heap memory: %d bytes\n", get_free_memory()); 0798 160000 jsr _get_free_memory 079B 6C80 std 0,sp 079D CC07DC ldd #L187 07A0 160000 jsr _printf 07A3 ; INTR_ON(); 07A3 10EF cli 07A5 07A5 ; 07A5 ; } 07A5 L186: 07A5 B757 tfr x,s 07A7 30 pulx 07A8 .dbline 0 ; func end 07A8 3D rts 07A9 ; onoff -> 2,x 07A9 _shellcmd_kdb:: 07A9 3B pshd 07AA 34 pshx 07AB B775 tfr s,x 07AD ; 07AD ; 07AD ; 07AD ; void shellcmd_kdb(int onoff) { 07AD ; 07AD ; 07AD ; kdb_trace = onoff; 07AD EC02 ldd 2,x 07AF 7B0000 stab _kdb_trace 07B2 ; 07B2 ; } 07B2 L188: 07B2 B757 tfr x,s 07B4 30 pulx 07B5 1B82 leas 2,sp 07B7 .dbline 0 ; func end 07B7 3D rts 07B8 _shellcmd_quitShell:: 07B8 ; 07B8 ; 07B8 ; 07B8 ; 07B8 ; void shellcmd_quitShell(void) { 07B8 ; 07B8 ; puts("exiting shell"); 07B8 CC07CE ldd #L190 07BB 160000 jsr _puts 07BE ; puts("\n"); 07BE CC07CC ldd #L191 07C1 160000 jsr _puts 07C4 ; shellcmd_stopTask(get_task_id()); 07C4 160000 jsr _get_task_id 07C7 87 clra 07C8 16076A jsr _shellcmd_stopTask 07CB ; 07CB ; } 07CB L189: 07CB .dbline 0 ; func end 07CB 3D rts 07CC L191: 07CC 0A00 .byte 10,0 07CE L190: 07CE 65786974696E67207368656C6C00 .byte 'e,'x,'i,'t,'i,'n,'g,32,'s,'h,'e,'l,'l,0 07DC L187: 07DC 617070726F78696D6174652066726565 .byte 'a,'p,'p,'r,'o,'x,'i,'m,'a,'t,'e,32,'f,'r,'e,'e 07EC 2068656170206D656D6F72793A202564 .byte 32,'h,'e,'a,'p,32,'m,'e,'m,'o,'r,'y,58,32,37,'d 07FC 2062797465730A00 .byte 32,'b,'y,'t,'e,'s,10,0 0804 L185: 0804 7461736B2025642073746F707065640A .byte 't,'a,'s,'k,32,37,'d,32,'s,'t,'o,'p,'p,'e,'d,10 0814 00 .byte 0 0815 L181: 0815 7461736B20256420737461727465640A .byte 't,'a,'s,'k,32,37,'d,32,'s,'t,'a,'r,'t,'e,'d,10 0825 00 .byte 0 0826 L177: 0826 7469636B733A20256C640A00 .byte 't,'i,'c,'k,'s,58,32,37,'l,'d,10,0 0832 L175: 0832 5273726349443A20253264207C205374 .byte 'R,'s,'r,'c,'I,'D,58,32,37,50,'d,32,124,32,'S,'t 0842 6174653A202578207C204F776E65723A .byte 'a,'t,'e,58,32,37,'x,32,124,32,'O,'w,'n,'e,'r,58 0852 20253364207C2057616974696E673A20 .byte 32,37,51,'d,32,124,32,'W,'a,'i,'t,'i,'n,'g,58,32 0862 2564207C0A00 .byte 37,'d,32,124,10,0 0868 L173: 0868 4F776E65723A20302E2E31353D746173 .byte 'O,'w,'n,'e,'r,58,32,48,46,46,49,53,61,'t,'a,'s 0878 6B2049442C203235353D6E6F626F6479 .byte 'k,32,'I,'D,44,32,50,53,53,61,'n,'o,'b,'o,'d,'y 0888 00 .byte 0 0889 L172: 0889 0A53746174653A20303D6E6F74627573 .byte 10,'S,'t,'a,'t,'e,58,32,48,61,'n,'o,'t,'b,'u,'s 0899 792C20313D6275737900 .byte 'y,44,32,49,61,'b,'u,'s,'y,0 08A3 L171: 08A3 2D2D2D2D2D2D2D2D2D2D2D2B2D2D2D2D .byte 45,45,45,45,45,45,45,45,45,45,45,43,45,45,45,45 08B3 2D2D2D2D2D2D2B2D2D2D2D2D2D2D2D2D .byte 45,45,45,45,45,45,43,45,45,45,45,45,45,45,45,45 08C3 2D2D2D2B2D2D2D2D2D2D2D2D2D2D2D2D .byte 45,45,45,43,45,45,45,45,45,45,45,45,45,45,45,45 08D3 2B00 .byte 43,0 08D5 L152: 08D5 4D6573736167653A205B206269743720 .byte 'M,'e,'s,'s,'a,'g,'e,58,32,91,32,'b,'i,'t,55,32 08E5 7C2062697436207C2062697435207C20 .byte 124,32,'b,'i,'t,54,32,124,32,'b,'i,'t,53,32,124,32 08F5 62697434207C2062697433207C206269 .byte 'b,'i,'t,52,32,124,32,'b,'i,'t,51,32,124,32,'b,'i 0905 7432207C207072696F207C2073746174 .byte 't,50,32,124,32,'p,'r,'i,'o,32,124,32,'s,'t,'a,'t 0915 65205D00 .byte 'e,32,93,0 0919 L151: 0919 0A53746174653A20303D69646C652C20 .byte 10,'S,'t,'a,'t,'e,58,32,48,61,'i,'d,'l,'e,44,32 0929 313D70656E64696E672C20323D72756E .byte 49,61,'p,'e,'n,'d,'i,'n,'g,44,32,50,61,'r,'u,'n 0939 6E696E672C20333D77616974696E672C .byte 'n,'i,'n,'g,44,32,51,61,'w,'a,'i,'t,'i,'n,'g,44 0949 20343D73746F7070656400 .byte 32,52,61,'s,'t,'o,'p,'p,'e,'d,0 0954 L150: 0954 4E616D653A20253873207C2049443A20 .byte 'N,'a,'m,'e,58,32,37,56,'s,32,124,32,'I,'D,58,32 0964 2564207C2053746174653A202564207C .byte 37,'d,32,124,32,'S,'t,'a,'t,'e,58,32,37,'d,32,124 0974 205072696F3A20253364207C20416464 .byte 32,'P,'r,'i,'o,58,32,37,51,'d,32,124,32,'A,'d,'d 0984 723A20253478207C204D7367733A2030 .byte 'r,58,32,37,52,'x,32,124,32,'M,'s,'g,'s,58,32,48 0994 78253278207C0A00 .byte 'x,37,50,'x,32,124,10,0 099C L149: 099C 2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2B .byte 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,43 09AC 2D2D2D2D2D2D2D2B2D2D2D2D2D2D2D2D .byte 45,45,45,45,45,45,45,43,45,45,45,45,45,45,45,45 09BC 2D2D2B2D2D2D2D2D2D2D2D2D2D2D2B2D .byte 45,45,43,45,45,45,45,45,45,45,45,45,45,45,43,45 09CC 2D2D2D2D2D2D2D2D2D2D2D2B2D2D2D2D .byte 45,45,45,45,45,45,45,45,45,45,45,43,45,45,45,45 09DC 2D2D2D2D2D2D2D2D2B00 .byte 45,45,45,45,45,45,45,45,43,0 09E6 L142: 09E6 0A5461736B20436F6E74726F6C20426C .byte 10,'T,'a,'s,'k,32,'C,'o,'n,'t,'r,'o,'l,32,'B,'l 09F6 6F636B3A00 .byte 'o,'c,'k,58,0 09FB L106: 09FB 2D6200 .byte 45,'b,0 09FE L88: 09FE 71756974202D2D207175697420746865 .byte 'q,'u,'i,'t,32,45,45,32,'q,'u,'i,'t,32,'t,'h,'e 0A0E 207368656C6C20286361726566756C6C .byte 32,'s,'h,'e,'l,'l,32,40,'c,'a,'r,'e,'f,'u,'l,'l 0A1E 212900 .byte 33,41,0 0A21 L87: 0A21 6B6462205B317C305D202D2D20747572 .byte 'k,'d,'b,32,91,49,124,48,93,32,45,45,32,'t,'u,'r 0A31 6E206B65726E656C206465627567206F .byte 'n,32,'k,'e,'r,'n,'e,'l,32,'d,'e,'b,'u,'g,32,'o 0A41 6E2F6F666600 .byte 'n,47,'o,'f,'f,0 0A47 L86: 0A47 667265656D656D202D2D206765742061 .byte 'f,'r,'e,'e,'m,'e,'m,32,45,45,32,'g,'e,'t,32,'a 0A57 7070726F78696D617465206672656520 .byte 'p,'p,'r,'o,'x,'i,'m,'a,'t,'e,32,'f,'r,'e,'e,32 0A67 52414D20737061636500 .byte 'R,'A,'M,32,'s,'p,'a,'c,'e,0 0A71 L85: 0A71 7072696F72697479203C7461736B5F69 .byte 'p,'r,'i,'o,'r,'i,'t,'y,32,60,'t,'a,'s,'k,95,'i 0A81 643E2C203C7461736B5F7072696F7269 .byte 'd,62,44,32,60,'t,'a,'s,'k,95,'p,'r,'i,'o,'r,'i 0A91 74793E20202D2D206368616E67652070 .byte 't,'y,62,32,32,45,45,32,'c,'h,'a,'n,'g,'e,32,'p 0AA1 72696F00 .byte 'r,'i,'o,0 0AA5 L84: 0AA5 73746F70203C7461736B5F69643E2020 .byte 's,'t,'o,'p,32,60,'t,'a,'s,'k,95,'i,'d,62,32,32 0AB5 2D2D2073746F702061207461736B00 .byte 45,45,32,'s,'t,'o,'p,32,'a,32,'t,'a,'s,'k,0 0AC4 L83: 0AC4 7374617274203C7461736B5F69643E20 .byte 's,'t,'a,'r,'t,32,60,'t,'a,'s,'k,95,'i,'d,62,32 0AD4 2D2D2073746172742061207461736B00 .byte 45,45,32,'s,'t,'a,'r,'t,32,'a,32,'t,'a,'s,'k,0 0AE4 L82: 0AE4 7469636B73202D2D2073686F77732073 .byte 't,'i,'c,'k,'s,32,45,45,32,'s,'h,'o,'w,'s,32,'s 0AF4 797374656D207469636B00 .byte 'y,'s,'t,'e,'m,32,'t,'i,'c,'k,0 0AFF L81: 0AFF 726362205B5B7461736B5F69645D207C .byte 'r,'c,'b,32,91,91,'t,'a,'s,'k,95,'i,'d,93,32,124 0B0F 205B2D625D5D202D2D207072696E7473 .byte 32,91,45,'b,93,93,32,45,45,32,'p,'r,'i,'n,'t,'s 0B1F 207265736F7572636520636F6E74726F .byte 32,'r,'e,'s,'o,'u,'r,'c,'e,32,'c,'o,'n,'t,'r,'o 0B2F 6C20626C6F636B00 .byte 'l,32,'b,'l,'o,'c,'k,0 0B37 L80: 0B37 746362205B7461736B5F69645D202D2D .byte 't,'c,'b,32,91,'t,'a,'s,'k,95,'i,'d,93,32,45,45 0B47 207072696E7473207461736B20636F6E .byte 32,'p,'r,'i,'n,'t,'s,32,'t,'a,'s,'k,32,'c,'o,'n 0B57 74726F6C20626C6F636B00 .byte 't,'r,'o,'l,32,'b,'l,'o,'c,'k,0 0B62 L79: 0B62 68656C70205B636D645D202D2D206865 .byte 'h,'e,'l,'p,32,91,'c,'m,'d,93,32,45,45,32,'h,'e 0B72 6C70206F6E2061207370656369666963 .byte 'l,'p,32,'o,'n,32,'a,32,'s,'p,'e,'c,'i,'f,'i,'c 0B82 20636F6D6D616E6400 .byte 32,'c,'o,'m,'m,'a,'n,'d,0 0B8B L78: 0B8B 5B5D202D2D206F7074696F6E616C2061 .byte 91,93,32,45,45,32,'o,'p,'t,'i,'o,'n,'a,'l,32,'a 0B9B 7267756D656E74730A00 .byte 'r,'g,'u,'m,'e,'n,'t,'s,10,0 0BA5 L77: 0BA5 3C3E202D2D2072657175697265642061 .byte 60,62,32,45,45,32,'r,'e,'q,'u,'i,'r,'e,'d,32,'a 0BB5 7267756D656E747300 .byte 'r,'g,'u,'m,'e,'n,'t,'s,0 0BBE L76: 0BBE 2D2D2D48454C502D2D2D0A00 .byte 45,45,45,'H,'E,'L,'P,45,45,45,10,0 0BCA L66: 0BCA 00 .byte 0 0BCB L63: 0BCB 7175697400 .byte 'q,'u,'i,'t,0 0BD0 L60: 0BD0 6B646200 .byte 'k,'d,'b,0 0BD4 L57: 0BD4 667265656D656D00 .byte 'f,'r,'e,'e,'m,'e,'m,0 0BDC L54: 0BDC 7072696F7269747900 .byte 'p,'r,'i,'o,'r,'i,'t,'y,0 0BE5 L51: 0BE5 73746F7000 .byte 's,'t,'o,'p,0 0BEA L48: 0BEA 737461727400 .byte 's,'t,'a,'r,'t,0 0BF0 L45: 0BF0 7469636B7300 .byte 't,'i,'c,'k,'s,0 0BF6 L42: 0BF6 72636200 .byte 'r,'c,'b,0 0BFA L39: 0BFA 74636200 .byte 't,'c,'b,0 0BFE L36: 0BFE 68656C7000 .byte 'h,'e,'l,'p,0