\ May 2, 2004. 09:37 filx A<=# ... \ Apr. 23, 2003. 01:56 correct parse.A>#.... \ Apr. 17, 2004. 02:09 simulating monitor at low memory address \ Apr. 13, 2004. 01:43 add CRUS CRUSS \ Mar. 30, 2004. 01:46 adjust HH to the same as pic16f877 \ Mar. 29, 2004. 01:49 add old mnemonics CFA'>NFA \ Mar. 28, 2004. 02:34 add defer' , is' , words' \ H.F 8051 SIMULATOR / EF51 / ASSEMBLER / DISASSEMBLER / DEBUGER \ : ZZ CR ." ( " 8 / .XX ." ) " ; \ : Q 800 0 DO I 8 MOD 0 = IF I ZZ THEN 6107 I + C@ 30 EMIT .XX ." C, " LOOP ; \ Q HEX CREATE FONT.TABLE ( 00 ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( 01 ) 07E C, 081 C, 0A5 C, 081 C, 0BD C, 099 C, 081 C, 07E C, ( 02 ) 07E C, 0FF C, 0DB C, 0FF C, 0C3 C, 0E7 C, 0FF C, 07E C, ( 03 ) 044 C, 0EE C, 0FE C, 0FE C, 07C C, 038 C, 010 C, 000 C, ( 04 ) 010 C, 038 C, 07C C, 0FE C, 07C C, 038 C, 010 C, 000 C, ( 05 ) 018 C, 03C C, 0DB C, 0FF C, 0DB C, 018 C, 03C C, 000 C, ( 06 ) 018 C, 03C C, 07E C, 0FF C, 07E C, 018 C, 03C C, 000 C, ( 07 ) 018 C, 03C C, 07E C, 0FF C, 07E C, 018 C, 03C C, 000 C, ( 08 ) 018 C, 03C C, 07E C, 0FF C, 07E C, 018 C, 03C C, 000 C, ( 09 ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( 0A ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( 0B ) 00F C, 007 C, 007 C, 07D C, 0CC C, 0CC C, 0CC C, 078 C, ( 0C ) 078 C, 0CC C, 0CC C, 0CC C, 078 C, 030 C, 0FC C, 030 C, ( 0D ) 078 C, 0CC C, 0CC C, 0CC C, 078 C, 030 C, 0FC C, 030 C, ( 0E ) 03F C, 063 C, 07F C, 063 C, 063 C, 067 C, 0E6 C, 0C0 C, ( 0F ) 0DB C, 0DB C, 03C C, 0E7 C, 0E7 C, 03C C, 0DB C, 0DB C, ( 10 ) 0C0 C, 0F0 C, 0F8 C, 0FE C, 0F8 C, 0F0 C, 0C0 C, 000 C, ( 11 ) 006 C, 01E C, 03E C, 0FE C, 03E C, 01E C, 006 C, 000 C, ( 12 ) 030 C, 078 C, 0FC C, 030 C, 030 C, 0FC C, 078 C, 030 C, ( 13 ) 06C C, 06C C, 06C C, 06C C, 06C C, 000 C, 06C C, 000 C, ( 14 ) 07F C, 0DB C, 0DB C, 0DB C, 07B C, 01B C, 01B C, 000 C, ( 15 ) 03C C, 060 C, 03C C, 066 C, 066 C, 03C C, 006 C, 03C C, ( 16 ) 000 C, 000 C, 000 C, 000 C, 0FE C, 0FE C, 0FE C, 000 C, ( 17 ) 018 C, 03C C, 07E C, 018 C, 07E C, 03C C, 018 C, 07E C, ( 18 ) 030 C, 078 C, 0FC C, 030 C, 030 C, 030 C, 030 C, 000 C, ( 19 ) 030 C, 030 C, 030 C, 030 C, 0FC C, 078 C, 030 C, 000 C, ( 1A ) 030 C, 030 C, 030 C, 030 C, 0FC C, 078 C, 030 C, 000 C, ( 1B ) 000 C, 020 C, 060 C, 0FE C, 060 C, 020 C, 000 C, 000 C, ( 1C ) 000 C, 000 C, 0C0 C, 0C0 C, 0FE C, 000 C, 000 C, 000 C, ( 1D ) 000 C, 024 C, 042 C, 0FF C, 042 C, 024 C, 000 C, 000 C, ( 1E ) 000 C, 010 C, 038 C, 07C C, 0FE C, 0FE C, 000 C, 000 C, ( 1F ) 000 C, 0FE C, 0FE C, 07C C, 038 C, 010 C, 000 C, 000 C, ( 20 ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( 21 ) 018 C, 018 C, 018 C, 018 C, 018 C, 000 C, 018 C, 000 C, ( 22 ) 0CC C, 0CC C, 0CC C, 000 C, 000 C, 000 C, 000 C, 000 C, ( 23 ) 036 C, 06C C, 0FE C, 06C C, 0FE C, 06C C, 0D8 C, 000 C, ( 24 ) 018 C, 07E C, 0C0 C, 07C C, 006 C, 0FC C, 030 C, 000 C, ( 25 ) 0C2 C, 0C6 C, 00C C, 018 C, 030 C, 066 C, 0C6 C, 000 C, ( 26 ) 038 C, 06C C, 038 C, 070 C, 0DE C, 0CC C, 076 C, 000 C, ( 27 ) 030 C, 030 C, 060 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( 28 ) 00C C, 018 C, 030 C, 030 C, 030 C, 018 C, 00C C, 000 C, ( 29 ) 030 C, 018 C, 00C C, 00C C, 00C C, 018 C, 030 C, 000 C, ( 2A ) 000 C, 06C C, 038 C, 0FE C, 038 C, 06C C, 000 C, 000 C, ( 2B ) 000 C, 018 C, 018 C, 07E C, 018 C, 018 C, 000 C, 000 C, ( 2C ) 000 C, 000 C, 000 C, 000 C, 000 C, 018 C, 018 C, 030 C, ( 2D ) 000 C, 000 C, 000 C, 07E C, 000 C, 000 C, 000 C, 000 C, ( 2E ) 000 C, 000 C, 000 C, 000 C, 000 C, 018 C, 018 C, 000 C, ( 2F ) 002 C, 006 C, 00C C, 018 C, 030 C, 060 C, 0C0 C, 000 C, ( 30 ) 07C C, 0CE C, 0DE C, 0F6 C, 0E6 C, 0C6 C, 07C C, 000 C, ( 31 ) 018 C, 038 C, 018 C, 018 C, 018 C, 018 C, 07E C, 000 C, ( 32 ) 07C C, 0C6 C, 006 C, 01C C, 070 C, 0C6 C, 0FE C, 000 C, ( 33 ) 07C C, 0C6 C, 006 C, 01C C, 006 C, 0C6 C, 07C C, 000 C, ( 34 ) 01C C, 03C C, 06C C, 0CC C, 0FE C, 00C C, 00C C, 000 C, ( 35 ) 0FE C, 0C0 C, 0FC C, 006 C, 006 C, 0C6 C, 07C C, 000 C, ( 36 ) 03C C, 060 C, 0C0 C, 0FC C, 0C6 C, 0C6 C, 07C C, 000 C, ( 37 ) 0FE C, 0C6 C, 00C C, 018 C, 030 C, 030 C, 030 C, 000 C, ( 38 ) 07C C, 0C6 C, 0C6 C, 07C C, 0C6 C, 0C6 C, 07C C, 000 C, ( 39 ) 07C C, 0C6 C, 0C6 C, 07E C, 006 C, 00C C, 078 C, 000 C, ( 3A ) 000 C, 018 C, 018 C, 000 C, 000 C, 018 C, 018 C, 000 C, ( 3B ) 000 C, 018 C, 018 C, 000 C, 000 C, 018 C, 018 C, 030 C, ( 3C ) 00C C, 018 C, 030 C, 060 C, 030 C, 018 C, 00C C, 000 C, ( 3D ) 000 C, 000 C, 07E C, 000 C, 000 C, 07E C, 000 C, 000 C, ( 3E ) 030 C, 018 C, 00C C, 006 C, 00C C, 018 C, 030 C, 000 C, ( 3F ) 03C C, 066 C, 006 C, 00C C, 018 C, 000 C, 018 C, 000 C, ( 40 ) 07C C, 0C6 C, 0DE C, 0DE C, 0DE C, 0C0 C, 07C C, 000 C, ( 41 ) 038 C, 06C C, 0C6 C, 0C6 C, 0FE C, 0C6 C, 0C6 C, 000 C, ( 42 ) 0FC C, 06E C, 066 C, 07C C, 066 C, 06E C, 0FC C, 000 C, ( 43 ) 03E C, 062 C, 0C0 C, 0C0 C, 0C0 C, 062 C, 03E C, 000 C, ( 44 ) 0F8 C, 06E C, 066 C, 066 C, 066 C, 06E C, 0F8 C, 000 C, ( 45 ) 0FE C, 062 C, 060 C, 078 C, 060 C, 062 C, 0FE C, 000 C, ( 46 ) 0FE C, 062 C, 060 C, 078 C, 060 C, 060 C, 0F0 C, 000 C, ( 47 ) 03E C, 062 C, 0C0 C, 0C0 C, 0CE C, 066 C, 03E C, 000 C, ( 48 ) 0C6 C, 0C6 C, 0C6 C, 0FE C, 0C6 C, 0C6 C, 0C6 C, 000 C, ( 49 ) 03C C, 018 C, 018 C, 018 C, 018 C, 018 C, 03C C, 000 C, ( 4A ) 01E C, 00C C, 00C C, 00C C, 00C C, 0CC C, 078 C, 000 C, ( 4B ) 0E6 C, 066 C, 06C C, 078 C, 078 C, 06C C, 0E6 C, 000 C, ( 4C ) 0F0 C, 060 C, 060 C, 060 C, 060 C, 066 C, 0FE C, 000 C, ( 4D ) 0C6 C, 0EE C, 0FE C, 0D6 C, 0C6 C, 0C6 C, 0C6 C, 000 C, ( 4E ) 0C6 C, 0E6 C, 0F6 C, 0FE C, 0DE C, 0CE C, 0C6 C, 000 C, ( 4F ) 07C C, 0C6 C, 0C6 C, 0C6 C, 0C6 C, 0C6 C, 07C C, 000 C, ( 50 ) 0FC C, 066 C, 066 C, 07C C, 060 C, 060 C, 0E0 C, 000 C, ( 51 ) 07C C, 0C6 C, 0C6 C, 0D6 C, 0DE C, 07C C, 006 C, 000 C, ( 52 ) 0FC C, 066 C, 066 C, 07C C, 078 C, 06C C, 0E6 C, 000 C, ( 53 ) 07C C, 0C6 C, 0E0 C, 038 C, 00E C, 0C6 C, 07C C, 000 C, ( 54 ) 07E C, 05A C, 018 C, 018 C, 018 C, 018 C, 03C C, 000 C, ( 55 ) 066 C, 066 C, 066 C, 066 C, 066 C, 066 C, 03C C, 000 C, ( 56 ) 066 C, 066 C, 066 C, 066 C, 066 C, 03C C, 018 C, 000 C, ( 57 ) 0C6 C, 0C6 C, 0C6 C, 0D6 C, 0FE C, 0FE C, 0C6 C, 000 C, ( 58 ) 0C6 C, 06C C, 038 C, 038 C, 06C C, 0C6 C, 0C6 C, 000 C, ( 59 ) 066 C, 066 C, 066 C, 03C C, 018 C, 018 C, 03C C, 000 C, ( 5A ) 0FE C, 0CC C, 018 C, 030 C, 060 C, 0C6 C, 0FE C, 000 C, ( 5B ) 03C C, 030 C, 030 C, 030 C, 030 C, 030 C, 03C C, 000 C, ( 5C ) 080 C, 0C0 C, 060 C, 030 C, 018 C, 00C C, 006 C, 000 C, ( 5D ) 03C C, 00C C, 00C C, 00C C, 00C C, 00C C, 03C C, 000 C, ( 5E ) 018 C, 03C C, 066 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( 5F ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 0FF C, ( 60 ) 018 C, 018 C, 00C C, 000 C, 000 C, 000 C, 000 C, 000 C, ( 61 ) 000 C, 000 C, 038 C, 00C C, 07C C, 0CC C, 076 C, 000 C, ( 62 ) 060 C, 060 C, 060 C, 07C C, 066 C, 066 C, 0DC C, 000 C, ( 63 ) 000 C, 000 C, 07C C, 0C4 C, 0C0 C, 0C4 C, 07C C, 000 C, ( 64 ) 00C C, 00C C, 00C C, 07C C, 0CC C, 0CC C, 076 C, 000 C, ( 65 ) 000 C, 000 C, 078 C, 0CC C, 0FC C, 0C0 C, 07C C, 000 C, ( 66 ) 038 C, 06C C, 060 C, 0F8 C, 060 C, 060 C, 0E0 C, 000 C, ( 67 ) 000 C, 000 C, 076 C, 0CC C, 0CC C, 07C C, 00C C, 07C C, ( 68 ) 0E0 C, 060 C, 060 C, 07C C, 066 C, 066 C, 066 C, 000 C, ( 69 ) 030 C, 000 C, 070 C, 030 C, 030 C, 030 C, 038 C, 000 C, ( 6A ) 00C C, 000 C, 01C C, 00C C, 00C C, 0CC C, 0CC C, 078 C, ( 6B ) 0E0 C, 060 C, 066 C, 06C C, 078 C, 06C C, 066 C, 000 C, ( 6C ) 070 C, 030 C, 030 C, 030 C, 030 C, 030 C, 038 C, 000 C, ( 6D ) 000 C, 000 C, 0CC C, 0FE C, 0D6 C, 0C6 C, 0C6 C, 000 C, ( 6E ) 000 C, 000 C, 0DC C, 066 C, 066 C, 066 C, 066 C, 000 C, ( 6F ) 000 C, 000 C, 03C C, 066 C, 066 C, 066 C, 03C C, 000 C, ( 70 ) 000 C, 000 C, 0DC C, 066 C, 066 C, 07C C, 060 C, 0E0 C, ( 71 ) 000 C, 000 C, 076 C, 0CC C, 0CC C, 07C C, 00C C, 00E C, ( 72 ) 000 C, 000 C, 0DC C, 076 C, 060 C, 060 C, 060 C, 000 C, ( 73 ) 000 C, 000 C, 078 C, 0C0 C, 078 C, 00C C, 078 C, 000 C, ( 74 ) 010 C, 030 C, 078 C, 030 C, 030 C, 034 C, 018 C, 000 C, ( 75 ) 000 C, 000 C, 0CC C, 0CC C, 0CC C, 0CC C, 076 C, 000 C, ( 76 ) 000 C, 000 C, 066 C, 066 C, 066 C, 03C C, 018 C, 000 C, ( 77 ) 000 C, 000 C, 0C6 C, 0C6 C, 0D6 C, 0FE C, 06C C, 000 C, ( 78 ) 000 C, 000 C, 0CC C, 078 C, 030 C, 078 C, 0CC C, 000 C, ( 79 ) 000 C, 000 C, 0CC C, 0CC C, 0CC C, 07C C, 00C C, 07C C, ( 7A ) 000 C, 000 C, 0FC C, 018 C, 030 C, 060 C, 0FC C, 000 C, ( 7B ) 00E C, 018 C, 018 C, 070 C, 018 C, 018 C, 00E C, 000 C, ( 7C ) 030 C, 030 C, 030 C, 000 C, 030 C, 030 C, 030 C, 000 C, ( 7D ) 070 C, 018 C, 018 C, 00E C, 018 C, 018 C, 070 C, 000 C, ( 7E ) 000 C, 076 C, 0DC C, 000 C, 000 C, 000 C, 000 C, 000 C, ( 7F ) 010 C, 038 C, 06C C, 0C6 C, 0C6 C, 0C6 C, 0FE C, 000 C, ( 80 ) 031 C, 02C C, 094 C, 007 C, 0F4 C, 006 C, 070 C, 000 C, ( 81 ) 016 C, 000 C, 053 C, 004 C, 0F4 C, 006 C, 070 C, 000 C, ( 82 ) 0F4 C, 006 C, 070 C, 000 C, 054 C, 0FF C, 000 C, 0F0 C, ( 83 ) 043 C, 0EB C, 000 C, 0F0 C, 0EB C, 0EA C, 000 C, 0F0 C, ( 84 ) 05F C, 002 C, 015 C, 006 C, 018 C, 017 C, 012 C, 0E1 C, ( 85 ) 057 C, 000 C, 053 C, 004 C, 06F C, 000 C, 053 C, 004 C, ( 86 ) 087 C, 000 C, 053 C, 004 C, 09F C, 000 C, 053 C, 004 C, ( 87 ) 0B7 C, 000 C, 053 C, 004 C, 0F4 C, 006 C, 070 C, 000 C, ( 88 ) 020 C, 001 C, 0DF C, 005 C, 04D C, 0F8 C, 000 C, 0F0 C, ( 89 ) 041 C, 0F8 C, 000 C, 0F0 C, 0BA C, 016 C, 012 C, 0E1 C, ( 8A ) 039 C, 0E7 C, 000 C, 0F0 C, 095 C, 017 C, 012 C, 0E1 C, ( 8B ) 02E C, 0E8 C, 000 C, 0F0 C, 0FD C, 001 C, 015 C, 006 C, ( 8C ) 000 C, 0E0 C, 000 C, 0F0 C, 085 C, 017 C, 012 C, 0E1 C, ( 8D ) 06E C, 0FE C, 000 C, 0F0 C, 046 C, 002 C, 094 C, 007 C, ( 8E ) 053 C, 0FF C, 000 C, 0F0 C, 0A4 C, 0F0 C, 000 C, 0F0 C, ( 8F ) 022 C, 005 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( 90 ) 094 C, 010 C, 016 C, 001 C, 07B C, 002 C, 015 C, 006 C, ( 91 ) 0B1 C, 002 C, 015 C, 005 C, 056 C, 002 C, 094 C, 007 C, ( 92 ) 0B1 C, 02A C, 094 C, 007 C, 0D3 C, 017 C, 012 C, 0E1 C, ( 93 ) 01C C, 018 C, 012 C, 0E1 C, 0BC C, 010 C, 016 C, 001 C, ( 94 ) 07A C, 003 C, 015 C, 006 C, 062 C, 007 C, 070 C, 000 C, ( 95 ) 0DA C, 010 C, 016 C, 001 C, 0DA C, 010 C, 016 C, 001 C, ( 96 ) 0DA C, 010 C, 016 C, 001 C, 0DA C, 010 C, 016 C, 001 C, ( 97 ) 03F C, 001 C, 015 C, 005 C, 085 C, 002 C, 0AC C, 0E3 C, ( 98 ) 0EA C, 0D0 C, 010 C, 016 C, 001 C, 0EA C, 000 C, 0F0 C, ( 99 ) 0DA C, 010 C, 016 C, 001 C, 0DA C, 010 C, 016 C, 001 C, ( 9A ) 0DA C, 010 C, 016 C, 001 C, 0DA C, 010 C, 016 C, 001 C, ( 9B ) 0DA C, 010 C, 016 C, 001 C, 0DA C, 010 C, 016 C, 001 C, ( 9C ) 0DA C, 010 C, 016 C, 001 C, 0DA C, 010 C, 016 C, 001 C, ( 9D ) 0DA C, 010 C, 016 C, 001 C, 0DA C, 010 C, 016 C, 001 C, ( 9E ) 0DA C, 010 C, 016 C, 001 C, 0DA C, 010 C, 016 C, 001 C, ( 9F ) 0DA C, 010 C, 016 C, 001 C, 0DA C, 010 C, 016 C, 001 C, ( A0 ) 059 C, 0EC C, 000 C, 0F0 C, 03D C, 0E1 C, 000 C, 0F0 C, ( A1 ) 097 C, 0EA C, 000 C, 0F0 C, 097 C, 0EA C, 000 C, 0F0 C, ( A2 ) 097 C, 0EA C, 000 C, 0F0 C, 097 C, 0EA C, 000 C, 0F0 C, ( A3 ) 001 C, 0E4 C, 000 C, 0F0 C, 097 C, 0EA C, 000 C, 0F0 C, ( A4 ) 097 C, 0EA C, 000 C, 0F0 C, 097 C, 0EA C, 000 C, 0F0 C, ( A5 ) 097 C, 0EA C, 000 C, 0F0 C, 0DB C, 011 C, 001 C, 0C0 C, ( A6 ) 097 C, 0EA C, 000 C, 0F0 C, 097 C, 0EA C, 000 C, 0F0 C, ( A7 ) 097 C, 0EA C, 000 C, 0F0 C, 097 C, 0EA C, 000 C, 0F0 C, ( A8 ) 097 C, 0EA C, 000 C, 0F0 C, 097 C, 0EA C, 000 C, 0F0 C, ( A9 ) 097 C, 0EA C, 000 C, 0F0 C, 097 C, 0EA C, 000 C, 0F0 C, ( AA ) 097 C, 0EA C, 000 C, 0F0 C, 097 C, 0EA C, 000 C, 0F0 C, ( AB ) 097 C, 0EA C, 000 C, 0F0 C, 097 C, 0EA C, 000 C, 0F0 C, ( AC ) 097 C, 0EA C, 000 C, 0F0 C, 097 C, 0EA C, 000 C, 0F0 C, ( AD ) 097 C, 0EA C, 000 C, 0F0 C, 097 C, 0EA C, 000 C, 0F0 C, ( AE ) 097 C, 0EA C, 000 C, 0F0 C, 097 C, 0EA C, 000 C, 0F0 C, ( AF ) 097 C, 0EA C, 000 C, 0F0 C, 097 C, 0EA C, 000 C, 0F0 C, ( B0 ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( B1 ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( B2 ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( B3 ) 000 C, 000 C, 000 C, 000 C, 0B0 C, 002 C, 0BE C, 002 C, ( B4 ) 097 C, 0EA C, 000 C, 0F0 C, 097 C, 0EA C, 000 C, 0F0 C, ( B5 ) 097 C, 0EA C, 000 C, 0F0 C, 097 C, 0EA C, 000 C, 0F0 C, ( B6 ) 097 C, 0EA C, 000 C, 0F0 C, 097 C, 0EA C, 000 C, 0F0 C, ( B7 ) 097 C, 0EA C, 000 C, 0F0 C, 097 C, 0EA C, 000 C, 0F0 C, ( B8 ) 052 C, 000 C, 053 C, 004 C, 0D2 C, 0EE C, 000 C, 0F0 C, ( B9 ) 0CF C, 000 C, 053 C, 004 C, 0E7 C, 000 C, 053 C, 004 C, ( BA ) 0FF C, 000 C, 053 C, 004 C, 0DB C, 0EE C, 000 C, 0F0 C, ( BB ) 017 C, 001 C, 053 C, 004 C, 0B7 C, 08E C, 000 C, 0F0 C, ( BC ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( BD ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( BE ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( BF ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( C0 ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( C1 ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( C2 ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( C3 ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( C4 ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( C5 ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( C6 ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( C7 ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( C8 ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( C9 ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( CA ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( CB ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( CC ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( CD ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( CE ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( CF ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( D0 ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( D1 ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( D2 ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( D3 ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( D4 ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( D5 ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( D6 ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( D7 ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( D8 ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( D9 ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( DA ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( DB ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( DC ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( DD ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( DE ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( DF ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( E0 ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( E1 ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( E2 ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( E3 ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( E4 ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( E5 ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( E6 ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( E7 ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( E8 ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( E9 ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( EA ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( EB ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( EC ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( ED ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( EE ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( EF ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( F0 ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( F1 ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( F2 ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( F3 ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( F4 ) 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, 000 C, ( F5 ) 0D6 C, 000 C, 001 C, 091 C, 060 C, 0E8 C, 000 C, 0F0 C, ( F6 ) 0D6 C, 000 C, 001 C, 091 C, 060 C, 0E8 C, 000 C, 0F0 C, ( F7 ) 086 C, 002 C, 0D6 C, 000 C, 0D6 C, 000 C, 000 C, 091 C, ( F8 ) 060 C, 0E8 C, 000 C, 0F0 C, 002 C, 002 C, 030 C, 000 C, ( F9 ) 032 C, 0E9 C, 000 C, 0F0 C, 002 C, 002 C, 000 C, 000 C, ( FA ) 010 C, 000 C, 03E C, 09A C, 03A C, 097 C, 000 C, 000 C, ( FB ) 0FF C, 000 C, 001 C, 000 C, 000 C, 0A0 C, 020 C, 02B C, ( FC ) 000 C, 000 C, 040 C, 000 C, 000 C, 07E C, 04A C, 073 C, ( FD ) 000 C, 07C C, 080 C, 000 C, 001 C, 000 C, 059 C, 097 C, ( FE ) 01C C, 0F8 C, 004 C, 083 C, 000 C, 07C C, 040 C, 0EF C, ( FF ) 00B C, 0F8 C, 029 C, 0F7 C, 000 C, 0F0 C, 002 C, 070 C, \ anew test_file decimal windc thedc \ the Device Context : x0 60 ; : y0 20 ; variable x.max.size 770 x.max.size ! variable y.max.size 520 y.max.size ! : at GOTOXY ; : 640*480 640 x.max.size ! 480 y.max.size ! ; : 800*600 860 x.max.size ! 620 y.max.size ! ; : 1024*768 1000 x.max.size ! 668 y.max.size ! ; 800*600 defer dot : dot1 ( x y color ... ) setpixel: thedc ; : slop.line 400 200 do i i 2 / green dot1 loop ; : pp slop.line ; : test ( -- ) CONDC PutHandle: theDC \ initialize DC ( DEVICE CONTEXT ) 0 0 500 500 WHITE FillArea: theDC \ to the console BLACK LineColor: theDC 0 0 MoveTo: theDC 100 100 LineTo: theDC BLUE BrushColor: theDC 50 50 20 FillCircle: theDC slop.line ; : COLOR.BOX ( X Y WIDTH HEIGHT COLOR ... ) CONDC PutHandle: theDC \ initialize DC ( DEVICE CONTEXT ) ( 0 0 500 500 WHITE ) FillArea: theDC \ to the console ; : 2>R >R >R ; : 2R@ R@ R> R@ SWAP >R ; : 4DROP ( X Y WIDTH HEIGHT ... ) 2DROP 2DROP ; : 4DUP ( X Y WIDTH HEIGHT ... ) 2OVER 2OVER ; : X+WIDTH ( X Y WIDTH HEIGTH ... X Y WIDTH HEIGTH N ) 4DUP DROP NIP + ; : Y+HEIGHT ( X Y WIDTH HEIGHT ... X Y WIDTH HEIGTH N ) 4DUP NIP ROT DROP + ; : X ( X Y WIDTH HEIGHT ... X Y WIDTH HEIGTH N ) 4DUP 2DROP DROP ; : Y ( X Y WIDTH HEIGHT ... X Y WIDTH HEIGTH N ) 4DUP 2DROP NIP ; : SQUARE.BOX ( X Y WIDTH HEIGHT COLOR ... ) CONDC PutHandle: theDC \ initialize DC ( DEVICE CONTEXT ) \ 0 0 500 500 BLUE FillArea: theDC \ to the console ( YELLOW ) LineColor: theDC X >R Y R> SWAP MoveTo: theDC X+WIDTH >R Y R> SWAP LineTo: theDC X+WIDTH >R Y+HEIGHT R> SWAP LineTo: theDC X >R Y+HEIGHT R> SWAP LineTo: theDC X >R Y R> SWAP LineTo: theDC \ BLUE BrushColor: theDC \ 50 50 20 FillCircle: theDC \ slop.line ; 4DROP ; : t1 condc puthandle: thedc 0 0 100 100 red fillarea: thedc green linecolor: thedc 0 0 moveto: thedc 770 550 lineto: thedc ; : dot.size 2 ; : dot' ( x y color ... ) >r \ linecolor: thedc over dot.size - over dot.size - \ moveto: thedc over dot.size + over dot.size + r> fillarea: thedc 2drop ; ' dot' is dot : MARK.X.Y.SCALE condc puthandle: thedc yellow linecolor: thedc x0 y0 moveto: thedc x.max.size @ y0 lineto: thedc x.max.size @ y.max.size @ lineto: thedc x0 y.max.size @ lineto: thedc x0 y0 lineto: thedc x.max.size @ 1+ x0 do 5 0 do j y.max.size @ i - red dot j i y0 + red dot loop 100 +loop y.max.size @ 1+ y0 do 5 0 do x0 i + j red dot x.max.size @ i - j red dot loop 100 +loop x.max.size @ 1+ x0 do y.max.size @ 1+ y0 do j i red dot 50 +loop 50 +loop ; : t2' condc puthandle: thedc yellow linecolor: thedc x0 y0 moveto: thedc x.max.size @ y0 lineto: thedc x.max.size @ y.max.size @ lineto: thedc x0 y.max.size @ lineto: thedc x0 y0 lineto: thedc y.max.size @ 100 / 0 cr do y.max.size @ 100 / i - 100 * 4 .r 6 0 do cr loop loop 0 4 .r x.max.size @ 100 / 1+ 1 cr cr 9 spaces do i 100 * 11 .r loop y.max.size @ 1+ y0 do x.max.size @ 1+ x0 do i j red dot 10 +loop 50 +loop y.max.size @ 1+ y0 do x.max.size @ 1+ x0 do i j red dot 5 +loop 100 +loop x.max.size @ 1+ x0 do y.max.size @ 1+ y0 do j i red dot 10 +loop 50 +loop x.max.size @ 1+ x0 do y.max.size @ 1+ y0 do j i red dot 5 +loop 100 +loop cr ; : deg>rad ( deg ... rad ) s>d d>f 2.0e0 f* fpi f* 360e0 f/ ; fvariable gain 250e0 gain f! fvariable offset 250e0 offset f! variable x.center 250 x.center ! variable y.center 360 y.center ! : plot.center.line ( x.center y.center ... ) x.max.size @ x0 do i y.center @ y0 + red dot loop y.max.size @ y0 do x.center @ x0 + i red dot loop ; : plot.sine.curve ( x.center y.center ... ) y.center ! x.center ! plot.center.line 750 0 do i x0 + ( x ) i deg>rad fsin gain f@ f* offset f@ f+ f>d drop y0 + ( y ) blue dot i x0 + ( x ) i deg>rad fcos gain f@ f* offset f@ f+ f>d drop y0 + ( y ) yellow dot loop ; : psc 360 250 plot.sine.curve ; : T MARK.X.Y.SCALE PSC ; \ WINSER1.F A Simple Serial Communications Program \ MODIFIED BY CJJ MAR.14,2001 \ Written by Andrew McKewan in Visual C++ \ Translated to Forth by Tom Zimmer \ January 3nd, 1997 tjz \ Updated to include changes from Skip Inskeep, as well as \ other changes. \ February 10th, 1997 by Tom Zimmer \ Updated with a couple of additional changes from Skip Inskeep. \ A Win32Forth example program that illustrates how to open COM1 for \ bi-directional communications and then allows a simple terminal \ program to communicate with whatever is connected at 9600 baud. \ define the object for the Device Control Block structure :Object DCB abs cHndl Call SetCommTimeouts drop ; : ComOpen ( z1 -- cHndl ) \ Open Com port for z" COM1", or z" COM2" >R NULL \ no template NULL \ open file attributes OPEN_EXISTING \ creation distribution NULL \ no security attributes 0 \ exclusive access GENERIC_READ GENERIC_WRITE or \ desired access modes R> rel>abs \ zstring filename Call CreateFile \ returns handle or -1 dup -1 = \ if -1 then error Abort" Failed to open COM port!" ; \ -- chndl ;return handle to port \ ************************************************************ \ here is a list of valid parameters for ComSetup. Except for \ the ByteSize parameter, these are all windows constants. \ --- BuadRate CBR_110 CBR_300 CBR_600 \ CBR_1200 CBR_2400 CBR_4800 \ CBR_9600 CBR_14400 CBR_56000 \ CBR_19200 CBR_38400 CBR_57600 \ CBR_115200 CBR_128000 CBR_256000 \ \ --- ByteSize 5, 6, 7, 8 \ \ --- Parity NOPARITY ODDPARITY MARKPARITY \ EVENPARITY SPACEPARITY \ \ --- StopBits ONESTOPBIT TWOSTOPBITS ONE5STOPBITS \ \ ************************************************************ \ Setup the Communications state to the parameters specified : ComSetup { baud size parity stop cHndl -- } DCB.AddrOf rel>abs cHndl Call GetCommState ?win-error baud Put: DCB.BaudRate size Put: DCB.ByteSize parity 0<> Put: DCB.fParity \ parity enabled flag parity Put: DCB.Parity stop Put: DCB.StopBits DCB.AddrOf rel>abs cHndl Call SetCommState ?win-error ; : ComClose ( cHndl -- ) \ close com port if its open ?dup if Call CloseHandle drop then ; :Object COMSTAT abs lpErrors rel>abs comhndl Call ClearCommError 0<> ; \ Example: Simple terminal program 0 value Com1Hndl variable Com1key-val \ a place to save last key received 0 value Com1key-flg? \ have we already got a key? : Com1key? ( -- c1 ) \ get a key from serial port, don't wait long Com1key-flg? 0= if Com1key-val 1 Com1Hndl read-file \ -- len flag abort" Failed to read serial port" \ -- len to Com1key-flg? then Com1key-flg? ; : Com1key ( -- c1 ) \ must return a key begin Com1key? \ loop till we get one until Com1key-val c@ \ return the key 0 to Com1key-flg? ; \ clear the save buffer : Com1emit { char -- } \ write a character to the serial port &LOCAL char 1 Com1Hndl write-file abort" Failed to write serial port" ; : do-Com1key ( c1 -- f1 ) \ process keys pressed on user keyboard dup k_ESC = \ was ESC pressed? if drop \ if so, discard c1 and shut down Com1Hndl ComClose \ close the com port 0 to Com1Hndl \ clear handle value ." Done" TRUE \ return TRUE, we are terminating else Com1emit FALSE \ else emit char and continue then ; : Com1Init ( -- ) cr ." Initializing Serial Port to: " cr ." COM1: baud=9600 parity=N data=8 stop=1" z" COM1" ComOpen to com1Hndl Reset: DCB FALSE Put: DCB.fOutxCtsFlow \ Don't pay attention to CTS CBR_9600 8 NOPARITY ONESTOPBIT com1Hndl ComSetup com1Hndl ComTimeouts ; : Com1talk ( -- ) \ simple terminal talker to the serial port Com1Init cr ." Press ESC to stop talking." cr BEGIN key? if key do-Com1key ?EXIT then Com1key? if Com1key emit then AGAIN ; : 9.6K ( -- ) \ simple terminal talker to the serial port cr ." Initializing Serial Port to: " cr ." COM1: baud=9600 parity=N data=8 stop=1" z" COM1" ComOpen to com1Hndl Reset: DCB FALSE Put: DCB.fOutxCtsFlow \ Don't pay attention to CTS CBR_9600 8 NOPARITY ONESTOPBIT com1Hndl ComSetup com1Hndl ComTimeouts cr ." Press ESC to stop talking." cr BEGIN key? if key do-Com1key ?EXIT then Com1key? if Com1key DUP 13 = IF CR THEN DUP 10 = IF CR THEN emit then AGAIN ; : 19.2K ( -- ) \ simple terminal talker to the serial port cr ." Initializing Serial Port to: " cr ." COM1: baud=19200 parity=N data=8 stop=1" z" COM1" ComOpen to com1Hndl Reset: DCB FALSE Put: DCB.fOutxCtsFlow \ Don't pay attention to CTS CBR_19200 8 NOPARITY ONESTOPBIT com1Hndl ComSetup com1Hndl ComTimeouts cr ." Press ESC to stop talking." cr BEGIN key? if key do-Com1key ?EXIT then Com1key? if Com1key DUP 13 = IF CR THEN DUP 10 = IF CR THEN emit then AGAIN ; : 38.4K1 ( -- ) \ simple terminal talker to the serial port cr ." Initializing Serial Port to: " cr ." COM1: baud=38400 parity=N data=8 stop=1" z" COM1" ComOpen to com1Hndl Reset: DCB FALSE Put: DCB.fOutxCtsFlow \ Don't pay attention to CTS CBR_38400 8 NOPARITY ONESTOPBIT com1Hndl ComSetup com1Hndl ComTimeouts cr ." Press ESC to stop talking." cr BEGIN key? if key do-Com1key ?EXIT then Com1key? if Com1key DUP 13 = IF CR THEN DUP 10 = IF CR THEN emit then AGAIN ; \ Example: Simple terminal program for COM2, watches CTS 0 value Com2Hndl variable Com2key-val \ a place to save last key received 0 value Com2key-flg? \ have we already got a key? : Com2key? ( -- c1 ) \ get a key from serial port, don't wait long Com2key-flg? 0= if Com2key-val 1 Com2Hndl read-file \ -- len flag abort" Failed to read serial port" \ -- len to Com2key-flg? then Com2key-flg? ; : Com2key ( -- c1 ) \ must return a key begin Com2key? \ loop till we get one until Com2key-val c@ \ return the key 0 to Com2key-flg? ; \ clear the save buffer : Com2emit { char -- } \ write a character to the serial port begin &LOCAL char 1 Com2Hndl write-file if Com2Hndl ComErrorClear drop Get: COMSTAT.lpComStatBits $7E AND \ fail on all but CTS abort" Failed to write serial port" false else true then until ; : do-Com2key ( c1 -- f1 ) \ process keys pressed on user keyboard dup k_ESC = \ was ESC pressed? if drop \ if so, discard c1 and shut down Com2Hndl ComClose \ close the com port 0 to Com2Hndl \ clear handle value ." Done" TRUE \ return TRUE, we are terminating else Com2emit FALSE \ else emit char and continue then ; : Com2init ( -- ) \ simple terminal talker to the serial port cr ." Initializing Serial Port to: " cr ." COM2: baud=19200 parity=N data=8 stop=1" z" COM2" ComOpen to Com2Hndl Reset: DCB TRUE Put: DCB.fOutxCtsFlow \ pay attention to CTS CBR_19200 8 NOPARITY ONESTOPBIT Com2Hndl ComSetup Com2Hndl ComTimeouts ; : Com2talk ( -- ) \ simple terminal talker to the serial port Com2init cr ." Press ESC to stop talking." cr BEGIN key? if key do-Com2key ?EXIT then Com2key? if Com2key emit then AGAIN ; : 9.6K' ( -- ) \ simple terminal talker to the serial port cr ." Initializing Serial Port to: " cr ." COM2: baud=9600 parity=N data=8 stop=1" z" COM2" ComOpen to COM2Hndl Reset: DCB FALSE Put: DCB.fOutxCtsFlow \ Don't pay attention to CTS CBR_9600 8 NOPARITY ONESTOPBIT COM2Hndl ComSetup COM2Hndl ComTimeouts cr ." Press ESC to stop talking." cr BEGIN key? if key do-COM2key ?EXIT then COM2key? if COM2key DUP 13 = IF CR THEN DUP 10 = IF CR THEN emit then AGAIN ; : 19.2K' ( -- ) \ simple terminal talker to the serial port cr ." Initializing Serial Port to: " cr ." COM2: baud=19200 parity=N data=8 stop=1" z" COM2" ComOpen to COM2Hndl Reset: DCB FALSE Put: DCB.fOutxCtsFlow \ Don't pay attention to CTS CBR_19200 8 NOPARITY ONESTOPBIT COM2Hndl ComSetup COM2Hndl ComTimeouts cr ." Press ESC to stop talking." cr BEGIN key? if key do-COM2key ?EXIT then COM2key? if COM2key DUP 13 = IF CR THEN DUP 10 = IF CR THEN emit then AGAIN ; : 38.4K2 ( -- ) \ simple terminal talker to the serial port cr ." Initializing Serial Port to: " cr ." COM2: baud=38400 parity=N data=8 stop=1" z" COM2" ComOpen to COM2Hndl Reset: DCB FALSE Put: DCB.fOutxCtsFlow \ Don't pay attention to CTS CBR_38400 8 NOPARITY ONESTOPBIT COM2Hndl ComSetup COM2Hndl ComTimeouts cr ." Press ESC to stop talking." cr BEGIN key? if key do-COM2key ?EXIT then COM2key? if COM2key DUP 13 = IF CR THEN DUP 10 = IF CR THEN emit then AGAIN ; \ Example: Simple terminal program for COM5, watches CTS 0 value COM5Hndl variable COM5key-val \ a place to save last key received 0 value COM5key-flg? \ have we already got a key? : COM5key? ( -- c1 ) \ get a key from serial port, don't wait long COM5key-flg? 0= if COM5key-val 1 COM5Hndl read-file \ -- len flag abort" Failed to read serial port" \ -- len to COM5key-flg? then COM5key-flg? ; : COM5key ( -- c1 ) \ must return a key begin COM5key? \ loop till we get one until COM5key-val c@ \ return the key 0 to COM5key-flg? ; \ clear the save buffer : COM5emit { char -- } \ write a character to the serial port begin &LOCAL char 1 COM5Hndl write-file if COM5Hndl ComErrorClear drop Get: COMSTAT.lpComStatBits $7E AND \ fail on all but CTS abort" Failed to write serial port" false else true then until ; : do-COM5key ( c1 -- f1 ) \ process keys pressed on user keyboard dup k_ESC = \ was ESC pressed? if drop \ if so, discard c1 and shut down COM5Hndl ComClose \ close the com port 0 to COM5Hndl \ clear handle value ." Done" TRUE \ return TRUE, we are terminating else COM5emit FALSE \ else emit char and continue then ; : COM5init ( -- ) \ simple terminal talker to the serial port cr ." Initializing Serial Port to: " cr ." COM5: baud=19200 parity=N data=8 stop=1" z" COM5" ComOpen to COM5Hndl Reset: DCB TRUE Put: DCB.fOutxCtsFlow \ pay attention to CTS CBR_19200 8 NOPARITY ONESTOPBIT COM5Hndl ComSetup COM5Hndl ComTimeouts ; : COM5talk ( -- ) \ simple terminal talker to the serial port COM5init cr ." Press ESC to stop talking." cr BEGIN key? if key do-COM5key ?EXIT then COM5key? if COM5key emit then AGAIN ; : 9.6K" ( -- ) \ simple terminal talker to the serial port cr ." Initializing Serial Port to: " cr ." COM5: baud=9600 parity=N data=8 stop=1" z" COM5" ComOpen to COM5Hndl Reset: DCB FALSE Put: DCB.fOutxCtsFlow \ Don't pay attention to CTS CBR_9600 8 NOPARITY ONESTOPBIT COM5Hndl ComSetup COM5Hndl ComTimeouts cr ." Press ESC to stop talking." cr BEGIN key? if key do-COM5key ?EXIT then COM5key? if COM5key DUP 13 = IF CR THEN DUP 10 = IF CR THEN emit then AGAIN ; : 19.2K" ( -- ) \ simple terminal talker to the serial port cr ." Initializing Serial Port to: " cr ." COM5: baud=19200 parity=N data=8 stop=1" z" COM5" ComOpen to COM5Hndl Reset: DCB FALSE Put: DCB.fOutxCtsFlow \ Don't pay attention to CTS CBR_19200 8 NOPARITY ONESTOPBIT COM5Hndl ComSetup COM5Hndl ComTimeouts cr ." Press ESC to stop talking." cr BEGIN key? if key do-COM5key ?EXIT then COM5key? if COM5key DUP 13 = IF CR THEN DUP 10 = IF CR THEN emit then AGAIN ; : 38.4K5 ( -- ) \ simple terminal talker to the serial port cr ." Initializing Serial Port to: " cr ." COM5: baud=38400 parity=N data=8 stop=1" z" COM5" ComOpen to COM5Hndl Reset: DCB FALSE Put: DCB.fOutxCtsFlow \ Don't pay attention to CTS CBR_38400 8 NOPARITY ONESTOPBIT COM5Hndl ComSetup COM5Hndl ComTimeouts cr ." Press ESC to stop talking." cr BEGIN key? if key do-COM5key ?EXIT then COM5key? if COM5key DUP 13 = IF CR THEN DUP 10 = IF CR THEN emit then AGAIN ; : 57.6K" ( -- ) \ simple terminal talker to the serial port cr ." Initializing Serial Port to: " cr ." COM5: baud=57600 parity=N data=8 stop=1" z" COM5" ComOpen to COM5Hndl Reset: DCB FALSE Put: DCB.fOutxCtsFlow \ Don't pay attention to CTS CBR_57600 8 NOPARITY ONESTOPBIT COM5Hndl ComSetup COM5Hndl ComTimeouts cr ." Press ESC to stop talking." cr BEGIN key? if key do-COM5key ?EXIT then COM5key? if COM5key DUP 13 = IF CR THEN DUP 10 = IF CR THEN emit then AGAIN ; : 115.2K" ( -- ) \ simple terminal talker to the serial port cr ." Initializing Serial Port to: " cr ." COM5: baud=115200 parity=N data=8 stop=1" z" COM5" ComOpen to COM5Hndl Reset: DCB FALSE Put: DCB.fOutxCtsFlow \ Don't pay attention to CTS CBR_115200 8 NOPARITY ONESTOPBIT COM5Hndl ComSetup COM5Hndl ComTimeouts cr ." Press ESC to stop talking." cr BEGIN key? if key do-COM5key ?EXIT then COM5key? if COM5key DUP 13 = IF CR THEN DUP 10 = IF CR THEN emit then AGAIN ; : IFLOAT ( N ... ; F: ... R ) 0 D>F ; : EGA ; : INT F>D DROP ; : DARK CLS ; VARIABLE PRINTING : ASCII>DIGIT ( ASCII.CODE ... N -1 / 0 ) DUP $30 $39 BETWEEN IF $30 - -1 ELSE $DF AND DUP $41 $46 BETWEEN IF $37 - -1 ELSE DROP 0 THEN THEN ; VARIABLE NUMBER.ATTAINED VARIABLE NUMBER.ATTAINED.COUNT VARIABLE EGA.X.MAX 639 EGA.X.MAX ! VARIABLE EGA.Y.MAX 347 EGA.Y.MAX ! VARIABLE X VARIABLE Y VARIABLE X.SHRINK.FACTOR 1 X.SHRINK.FACTOR ! VARIABLE Y.SHRINK.FACTOR 10 Y.SHRINK.FACTOR ! variable dots/order 42 dots/order ! variable x.scaling.factor 1 x.scaling.factor ! variable y.scaling.factor 1 y.scaling.factor ! variable y.starting.order -13 y.starting.order ! variable y.orders ( 1/2/4/8/16 ) 12 y.orders ! : p dots/order ! ; : >upper ( char ... char' ) dup ascii a ascii z between if $20 - then ; : MARK.SCALE ( ... ) 640 0 do 348 0 do j i RED dot 50 +loop 50 +loop 7 0 do i 75 6 */ 24 at i x.scaling.factor @ * . loop y.orders @ 1 + 0 do 0 y.orders @ i - 3 * at 10 i y.scaling.factor @ * - ." 10E-" . loop ; : linear.x.log.y.scale ( ... ) ega 640 0 do 348 0 do j i RED dot 5 +loop 50 +loop 7 0 do i 75 6 */ 24 at i x.scaling.factor @ * . loop 13 0 do 0 12 i - 2 * at y.starting.order @ i y.scaling.factor @ * + ." 10E" . loop ega.y.max @ 0 do 10 1 do ega.x.max @ 0 do i ( x ) ega.y.max @ j ifloat flog ( 348 16 / 16 * ) DROP FDROP \ 336 y.orders @ / ifloat F* int DROP k + - ( y ) RED dot 2 +loop loop dots/order @ +loop ; : x.log.y linear.x.log.y.scale ( ... ) ; : ls linear.x.log.y.scale ( ... ) ; \ VARIABLE NUMBER.ATTAINED \ VARIABLE NUMBER.ATTAINED.COUNT \ VARIABLE EGA.X.MAX 639 EGA.X.MAX ! \ VARIABLE EGA.Y.MAX 347 EGA.Y.MAX ! \ VARIABLE X \ VARIABLE Y \ VARIABLE X.SHRINK.FACTOR 1 X.SHRINK.FACTOR ! \ VARIABLE Y.SHRINK.FACTOR 10 Y.SHRINK.FACTOR ! \ variable dots/order 42 dots/order ! \ variable x.scaling.factor 1 x.scaling.factor ! \ variable y.scaling.factor 1 y.scaling.factor ! variable x.starting.order -13 x.starting.order ! variable x.orders ( 1/2/4/8/16 ) 12 x.orders ! variable x.offset variable y.offset : force.m/n=0 ( m n ... n' ) >r >r \ m=24, n'=1,2,3,4,6,8,12,24 begin r> r> 2dup 1+ >r >r mod 0= until r> drop r> 1- ; : adjust.y.orders ( n ... ) 24 swap force.m/n=0 y.orders ! ; : adjust.x.orders ( n ... ) 24 swap force.m/n=0 x.orders ! ; : p adjust.y.orders ; : >upper ( char ... char' ) dup ascii a ascii z between if $20 - then ; : MARK.X.LOG.Y.SCALE ( ... ) \ linear.x.axis logrithmic.y.axis 640 0 do 348 0 do j i RED dot 50 +loop 50 +loop 7 0 do i 75 6 */ 24 at i x.scaling.factor @ * . loop y.orders @ 1 + 0 do 0 y.orders @ i - 3 * at 10 i y.scaling.factor @ * - ." 10E-" . loop ; : linear.x.log.y.scale ( x.offset x.scaling.factor y.starting.order y.orders ... ) adjust.y.orders y.starting.order ! x.scaling.factor ! x.offset ! ega 640 0 do 348 0 do j i RED dot 5 +loop 50 +loop \ 7 0 do i 75 6 */ 24 at i x.scaling.factor @ * . loop 7 0 do i 75 6 */ 24 at x.offset @ i x.scaling.factor @ * + . ." V" loop y.orders @ 1+ 0 do 0 ( x ) 24 24 y.orders @ / i * - ( y ) at ." 1E" y.starting.order @ i + . ." A" loop ega.y.max @ 0 do 10 1 do ega.x.max @ 0 do i ( x ) ega.y.max @ j 0 D>F ( ifloat ) flog ( 348 16 / 16 * ) 336 y.orders @ / 0 D>F ( ifloat ) F* F>D ( int ) DROP k + - ( y ) RED dot 2 \ 123 456 RED DOt +loop loop 336 y.orders @ / +loop ; : x.log.y linear.x.log.y.scale ; : log.x.linear.y.scale ( y.offset y.scaling.factor x.starting.order x.orders ... ) adjust.x.orders x.starting.order ! y.scaling.factor ! y.offset ! ega 640 0 do 348 0 do j i RED dot 5 +loop 50 +loop \ 7 0 do i 75 6 */ 24 at i x.scaling.factor @ * . loop 7 0 do i 75 6 */ 24 at x.offset @ i x.scaling.factor @ * + . ." V" loop y.orders @ 1+ 0 do 0 ( x ) 24 24 y.orders @ / i * - ( y ) at ." 1E" y.starting.order @ i + . ." A" loop ega.y.max @ 0 do 10 1 do ega.x.max @ 0 do i ( x ) ega.y.max @ j 0 D>F ( ifloat ) flog ( 348 16 / 16 * ) 336 y.orders @ / 0 D>F ( ifloat ) F* F>D ( int ) DROP k + - ( y ) 336 swap - swap RED dot 2 +loop loop 336 y.orders @ / +loop ; : log.x.y log.x.linear.y.scale ; ( x.offset x.scaling.factor y.starting.order y.orders ... ) variable default.y.orders 12 default.y.orders ! variable default.y.starting.order -13 default.y.starting.order ! variable default.x.scaling.factor 1 default.x.scaling.factor ! variable default.x.offset 0 default.x.offset ! : xy.marks.settings ( x.offset x.scaling.factor y.starting.order y.orders ... ) default.y.orders ! default.y.starting.order ! default.x.scaling.factor ! default.x.offset ! ; : default.settings ( ... ) 0 1 -13 y.orders @ xy.marks.settings ; : default.linear.x.log.y.scale ( ... ) default.x.offset @ default.x.scaling.factor @ default.y.starting.order @ default.y.orders @ linear.x.log.y.scale ; : default.linear.x.log.y.scale' ( ... ) x.offset @ x.scaling.factor @ y.starting.order @ y.orders @ linear.x.log.y.scale ; : default.log.x.linear.y.scale ( ... ) default.x.offset @ default.x.scaling.factor @ default.y.starting.order @ default.y.orders @ log.x.linear.y.scale ; : YYYY default.log.x.linear.y.scale ; : XXXX DEFAULT.LINEAR.X.LOG.Y.SCALE ; VARIABLE OUT.MODE 8 OUT.MODE ! : .XX ( N ... ) 0 <# # # #> TYPE ; : .XXX ( N ... ) 0 <# # # # #> TYPE ; : .XXXX ( N ... ) 0 <# # # # # #> TYPE ; : .XXXXx ( N ... ) 0 <# # # # # # #> TYPE ; : .XXXXxx ( N ... ) 0 <# # # # # # # #> TYPE ; VARIABLE RANGE : convert.y.value.to.y.position ( y.mv ... y.position ) 1 max ifloat flog 336 y.orders @ / ifloat F* int DROP \ 336 8 / default.y.starting.order @ range @ + * - 336 y.orders @ / default.y.starting.order @ range @ + * - ega.y.max @ swap - ; : ww convert.y.value.to.y.position ( y.mv ... y.position ) ; : PLOTTING.CURVE.TO.PC CASE $20 ( BL ) OF NUMBER.ATTAINED @ NUMBER.ATTAINED.COUNT @ 0 = IF X 1 NUMBER.ATTAINED.count +! ELSE Y 0 NUMBER.ATTAINED.count ! THEN ! 0 NUMBER.ATTAINED ! ENDOF $0D ( CR ) OF NUMBER.ATTAINED @ RANGE ! 0 NUMBER.ATTAINED ! 0 NUMBER.ATTAINED.COUNT ! X @ \ DUP 100 MOD 0= IF BEEP THEN EGA.Y.MAX @ Y @ Y.SHRINK.FACTOR @ / EGA.Y.MAX @ MIN 0 MAX - 1 max OUT.MODE @ 10 = IF CR 2DUP .XXXX SPACE .XXXX RANGE @ ." e-" . THEN 1 max ( drop 2 ) IFLOAT FLOG 1E2 F* INT DROP \ 1 max ( drop 2 ) IFLOAT FLOG 1E2 F* fdup INT DROP over 20 20 at 5 .r ." mV " 18 21 at y @ 7 .r ." E-" 28 21 at range @ .XX ." Amp." drop y @ convert.y.value.to.y.position swap 10 / swap 3 DOT ( 1 NUMBER.ATTAINED.COUNT +! ) ENDOF ASCII>DIGIT IF NUMBER.ATTAINED @ 10 * + NUMBER.ATTAINED ! THEN ENDCASE ; : n>1.0E^n ( n ... 1.0E^n ) CASE 0 OF 1.0E0 ENDOF 1 OF 1.0E1 ENDOF 2 OF 1.0E2 ENDOF 3 OF 1.0E3 ENDOF 4 OF 1.0E4 ENDOF 5 OF 1.0E5 ENDOF 6 OF 1.0E6 ENDOF 7 OF 1.0E7 ENDOF 8 OF 1.0E8 ENDOF 9 OF 1.0E9 ENDOF 10 OF 1.0E10 ENDOF 11 OF 1.0E11 ENDOF 12 OF 1.0E12 ENDOF 13 OF 1.0E13 ENDOF 14 OF 1.0E14 ENDOF 15 OF 1.0E15 ENDOF DROP ENDCASE ; variable v.range 6400 v.range ! : PLOTTING.CURVE.TO.PC CASE $20 ( BL ) OF NUMBER.ATTAINED @ NUMBER.ATTAINED.COUNT @ 0 = IF X 1 NUMBER.ATTAINED.count +! ELSE Y 0 NUMBER.ATTAINED.count ! THEN ! 0 NUMBER.ATTAINED ! ENDOF $0D ( CR ) OF NUMBER.ATTAINED @ RANGE ! 0 NUMBER.ATTAINED ! 0 NUMBER.ATTAINED.COUNT ! X @ \ DUP 100 MOD 0= IF BEEP THEN EGA.Y.MAX @ Y @ Y.SHRINK.FACTOR @ / EGA.Y.MAX @ MIN 0 MAX - 1 max OUT.MODE @ 10 = IF CR 2DUP .XXXX SPACE .XXXX RANGE @ ." e-" . THEN 1 max ( drop 2 ) IFLOAT FLOG 1E2 F* INT DROP over 20 20 at 5 .r ." mV " 18 21 at y @ 7 .r ." E-" 28 21 at range @ .XX ." Amp." \ 1 max ( drop 2 ) IFLOAT FLOG 1E2 F* fdup INT DROP \ over 20 20 at 5 .r ." mV " dup 1 max ifloat 18 21 at y @ 7 .r \ ." E-" 28 21 at range @ .XX ." Amp." fswap f/ range @ n>1.0E^n f* f. \ drop y @ convert.y.value.to.y.position swap 10 / swap 14 DOT drop y @ convert.y.value.to.y.position swap v.range @ s>d 640 um/mod swap drop / x.scaling.factor @ / swap 14 DOT ( 1 NUMBER.ATTAINED.COUNT +! ) ENDOF ASCII>DIGIT IF NUMBER.ATTAINED @ 10 * + NUMBER.ATTAINED ! THEN ENDCASE ; : PLOTTING.CURVE.TO.PC CASE $20 ( BL ) OF NUMBER.ATTAINED @ NUMBER.ATTAINED.COUNT @ 0 = IF X 1 NUMBER.ATTAINED.count +! ELSE Y 0 NUMBER.ATTAINED.count ! THEN ! 0 NUMBER.ATTAINED ! ENDOF $0D ( CR ) OF NUMBER.ATTAINED @ RANGE ! 0 NUMBER.ATTAINED ! 0 NUMBER.ATTAINED.COUNT ! X @ \ DUP 100 MOD 0= IF BEEP THEN EGA.Y.MAX @ Y @ Y.SHRINK.FACTOR @ / EGA.Y.MAX @ MIN 0 MAX - 1 max OUT.MODE @ 10 = IF CR 2DUP .XXXX SPACE .XXXX RANGE @ ." e-" . THEN 1 max ( drop 2 ) IFLOAT FLOG 1E2 F* INT DROP over 20 20 at 5 .r ." mV " 18 21 at y @ 7 .r ." E-" 28 21 at range @ .XX ." Amp." drop y @ convert.y.value.to.y.position swap 0 10 um/mod swap drop 640 v.range @ 0 ( s>d ) 10 um/mod swap drop */ swap 14 DOT ( yellow colr ) ( 1 NUMBER.ATTAINED.COUNT +! ) ENDOF ASCII>DIGIT IF NUMBER.ATTAINED @ 10 * + NUMBER.ATTAINED ! THEN ENDCASE ; : PLOTTING.CURVE.TO.PC CASE $20 ( BL ) OF NUMBER.ATTAINED @ NUMBER.ATTAINED.COUNT @ 0 = IF X 1 NUMBER.ATTAINED.count +! ELSE Y 0 NUMBER.ATTAINED.count ! THEN ! 0 NUMBER.ATTAINED ! ENDOF $0D ( CR ) OF NUMBER.ATTAINED @ RANGE ! 0 NUMBER.ATTAINED ! 0 NUMBER.ATTAINED.COUNT ! X @ \ DUP 100 MOD 0= IF BEEP THEN EGA.Y.MAX @ Y @ Y.SHRINK.FACTOR @ / EGA.Y.MAX @ MIN 0 MAX - 1 max OUT.MODE @ 10 = \ IF CR 2DUP .XXXX SPACE .XXXX RANGE @ ." e-" . THEN \ IF CR 2DUP swap .xXXXX SPACE .xxXXXX RANGE @ ." E-" . THEN \ IF CR over .xXXXX SPACE y @ .xxXXXX RANGE @ ." E-" . THEN IF CR over 7 .R y @ 8 .R RANGE @ ." E-" . THEN \ 1 max ( drop 2 ) IFLOAT FLOG 1E2 F* INT DROP \ over 20 20 at 5 .r ." mV " 18 21 at y @ 7 .r \ ." E-" 28 21 at range @ .XX ." Amp." drop y @ convert.y.value.to.y.position swap 0 10 um/mod swap drop 640 v.range @ 0 ( s>d ) 10 um/mod swap drop */ swap 14 DOT ( yellow colr ) ( 1 NUMBER.ATTAINED.COUNT +! ) ENDOF ASCII>DIGIT IF NUMBER.ATTAINED @ 10 * + NUMBER.ATTAINED ! THEN ENDCASE ; : help 30 0 AT ." iv bye cntrl^C esc open t e " 30 1 AT ." F1 6.4 V " 30 2 AT ." F2 12.8 V " 30 3 AT ." F3 19.2 V " 30 4 AT ." F4 25.6 V " 30 5 AT ." F5 32.0 V " 30 6 AT ." F6 38.4 V " 30 7 AT ." F8 INTERACTIVE " 30 8 AT ." F9 PLOTTING CURVE ON THE SCREEN " 30 9 AT ." F10 PRINTING TO A FILE " ; : baud ( n ... ) CASE 110 OF CBR_110 ENDOF 300 OF CBR_300 ENDOF 600 OF CBR_600 ENDOF 1200 OF CBR_1200 ENDOF 2400 OF CBR_2400 ENDOF 4800 of CBR_4800 ENDOF 9600 of CBR_9600 ENDOF 19200 OF CBR_19200 ENDOF 38400 OF CBR_38400 ENDOF 57600 OF CBR_57600 ENDOF 115200 OF CBR_115200 ENDOF DROP CBR_9600 ENDCASE ; variable com.x 5 COM.X ! variable com-cnt : com-out ( char ... ) com.x @ CASE 1 OF com1emit ENDOF 2 OF com2emit ENDOF 5 OF com5emit ENDOF ENDCASE ; : com-get ( ... char ) com.x @ CASE 1 OF com1key ENDOF 2 OF com2key ENDOF 5 OF com5key ENDOF ENDCASE ; : clr-buf ; : EGA.plot" ( com1/2 baud -- ) baud \ initialize the ports speed ( F9 ) printing off 9 OUT.MODE ! dark default.linear.x.log.y.scale ( MARK.SCALE ) HELP case 1 of ( COM1: ) 1 com.x ! Com1Init endof 2 of ( COM2: ) 2 com.x ! Com2Init endof 5 of ( COM5: ) 5 com.x ! Com5Init endof endcase DECIMAL \ always select decimal begin key? if key >upper \ case $1B of ?rest_com2: CASE $1B OF $1B com.x @ 1 = case 1 of do-com1key endof 2 of do-com2key endof 5 of do-com2key endof endcase ?exit endof \ cr true abort" Quitting" endof ( F7 ) $10007 ( $C1 ) OF HELP ENDOF ( F8 ) $10008 ( $C2 ) of printing off 8 OUT.MODE ! endof ( F9 ) $10009 ( $C3 ) of printing off 9 OUT.MODE ! dark default.linear.x.log.y.scale ( MARK.SCALE ) help endof ( F10 ) $1000A ( $C4 ) of default.linear.x.log.y.scale ( MARK.SCALE ) help printing on 10 OUT.MODE ! endof ( F1 ) $10001 ( $BB ) of ASCII I com-out 6400 V.RANGE ! 1 X.SCALING.FACTOR ! dark default.linear.x.log.y.scale ( MARK.SCALE ) help ASCII V com-out ASCII 1 com-out 13 ( cr ) com-out 13 ( cr ) com-out clr-buf endof ( F2 ) $10002 ( $BC ) of ASCII I com-out 12800 V.RANGE ! 2 X.SCALING.FACTOR ! dark default.linear.x.log.y.scale ( MARK.SCALE ) help ASCII V com-out ASCII 2 com-out 13 ( cr ) com-out 13 ( cr ) com-out clr-buf endof ( F3 ) $10003 ( $BD ) of ASCII I com-out 19200 V.RANGE ! 3 X.SCALING.FACTOR ! dark default.linear.x.log.y.scale ( MARK.SCALE ) help ASCII V com-out ASCII 3 com-out 13 ( cr ) com-out 13 ( cr ) com-out clr-buf endof ( F4 ) $10004 ( $BE ) of ASCII I com-out 25600 V.RANGE ! ASCII V com-out 4 X.SCALING.FACTOR ! dark default.linear.x.log.y.scale ( MARK.SCALE ) help ASCII 4 com-out 13 ( cr ) com-out 13 ( cr ) com-out clr-buf endof ( F5 ) $10005 ( $BF ) of ASCII I com-out 32000 V.RANGE ! 5 X.SCALING.FACTOR ! dark default.linear.x.log.y.scale ( MARK.SCALE ) help ASCII V com-out ASCII 5 com-out \ 13 ( cr ) com-out \ 13 ( cr ) com-out clr-buf endof ENDOF ( F6 ) $10006 ( $C0 ) of ASCII I com-out 38400 V.RANGE ! 6 X.SCALING.FACTOR ! dark default.linear.x.log.y.scale ( MARK.SCALE ) help ASCII V com-out ASCII 6 com-out 13 ( cr ) com-out 13 ( cr ) com-out clr-buf endof com-out \ send to 51 endcase then \ com.x @ 1 = if com1key-flg? else com2key-flg? then \ if com-get OUT.MODE @ 9 = out.mode @ 10 = or \ IF PLOTTING.CURVE.TO.PC \ ELSE EMIT 1500 MS \ THEN \ ELSE ." 11111111111 " \ THEN 1000 MS ." KJHKHKKHK " com2key? DARK DUP . 300 MS if com2key emit 100 ms then \ COM1KEY? DARK DUP . 300 MS IF COM1KEY EMIT 100 MS THEN again ; : 19K 1 19200 EGA.plot" ; : IV6' 2 38400 EGA.PLOT" ; : IV6" EGA 1 38400 EGA.PLOT" ; : IV EGA 1 9600 EGA.PLOT" ; : YY com2init ASCII V COM-OUT ASCII 5 COM-OUT ; : YY' ASCII V COM-OUT ASCII 5 COM-OUT ; HEX VARIABLE (X)1 VARIABLE (Y)1 VARIABLE (C)1 VARIABLE (COLOR)1 : GC! ( ASCII.CODE X Y COLOR ... ) (COLOR)1 ! (Y)1 ! (X)1 ! (C)1 ! 8 0 DO (C)1 C@ 8 * FONT.TABLE + I + C@ 0 7 DO 2 /MOD SWAP IF (X)1 @ I 2 * + (Y)1 @ J 2 * + (COLOR)1 @ DOT THEN -1 +LOOP DROP LOOP ; VARIABLE (X) VARIABLE (Y) VARIABLE (C) VARIABLE (COLOR) VARIABLE X.OFFSET 20 X.OFFSET ! VARIABLE Y.OFFSET 20 Y.OFFSET ! VARIABLE X.OFFSET' 60 X.OFFSET' ! \ GRAPIC OFFSET TO THE MARK VARIABLE Y.OFFSET' 8 Y.OFFSET' ! : {0~F>ASC} ( 0~F ... 30~3F ) DUP 0 9 BETWEEN IF 30 + ELSE DUP 0A 0F BETWEEN IF 0A - 41 + ELSE DROP ABORT" not 0 ~ F " THEN THEN ; : .XXXX.GRAPHIC ( N X Y COLOR ... ) (COLOR) ! (Y) ! (X) ! 4 0 DO BASE @ /MOD LOOP DROP 4 0 DO {0~F>ASC} (X) @ I 10 * + (Y) @ (COLOR) @ \ CR .S \ 2DROP 2DROP GC! LOOP ; \ 692C 22 69 \ 692E 6 47 43 21 2E 41 54 \ G C ! . A T \ \ 6936 12 69 1A (Y) \ 6939 12 82 D8 ! \ 693C 12 69 E (X) \ 693F 12 82 D8 ! \ 6942 12 69 26 (C) \ 6945 12 82 D8 ! \ 6948 12 82 4E doLIT \ 694B 8 0 0008 \ 694D 12 89 3E 0 \ 6950 12 A4 6C (DO) \ 6953 12 69 26 (C) \ 6956 12 83 16 C@ \ 6959 12 82 4E doLIT \ 695C 8 0 0008 \ 695E 12 88 D6 * \ 6961 12 61 4 FONT.TABLE \ 6964 12 84 A4 + \ 6967 12 A4 14 I \ 696A 12 84 A4 + \ 696D 12 83 16 C@ \ 6970 12 69 1A (Y) \ 6973 12 82 F0 @ \ 6976 12 A4 14 I \ 6979 12 84 A4 + \ 697C 12 89 5E 2 \ 697F 12 88 D6 * \ 6982 12 4C 70 Y.OFFSET.ADDRESS \ 6985 12 82 F0 @ \ 6988 12 84 A4 + \ 698B 12 82 F0 @ \ 698E 12 48 C0 PAGE.N \ 6991 12 82 F0 @ \ 6994 12 84 A4 + \ 6997 12 69 E (X) \ 699A 12 82 F0 @ \ 699D 12 82 4E doLIT \ 69A0 8 0 0008 \ 69A2 12 88 C8 / \ 69A5 12 84 A4 + \ 69A8 12 4A 26 C!' \ 69AB 12 A4 AC (LOOP) \ 69AE 53 69 6953 \ 69B0 22 ; \ 51ALL.F June 22, 2003 \ 51 SIMULATOR, ASSEMBLER, DISASSEMBLER \ SPECIAL FEATURE FOR REGISTERS HANDLING \ 51WIN32FOR.F modified to adapt to win32for June 18, 2003. cjj \ 51PCX.F under weForth April 2, 2003. HEX \ FORGET OVERLAY : OVERLAY ; : u2* 2* ; : Mn.TABLE 0 ; : .XX 0 <# # # #> TYPE ; : .XXX 0 <# # # # #> TYPE ; : .XXXX 0 <# # # # # #> TYPE ; \ weForth : 16, 100 /MOD SWAP C, C, ; CREATE PROGRAM.MEMORY 07FF 16, 077F 16, 77F 16, 10000 ALLOT \ 64K bytes : CP0 PROGRAM.MEMORY ; CREATE CPU.MEM 400 ALLOT CPU.MEM 400 0 FILL CODE C; JMP ' END-CODE END-CODE \ NO RET IS NEEDED. \ FLIP 100 /MOD SWAP 100 * + ; \ 16 BITS CODE FLIP XCHG BH, BL NEXT C; : 16@ @ 0FFFF AND ; : 16! >R 0FFFF AND 100 /MOD R@ 1+ C! R> C! ; : C@' PROGRAM.MEMORY + C@ ; \ weForth : C!' PROGRAM.MEMORY + C! ; \ @' PROGRAM.MEMORY + 16@ ; \ weForth : !' PROGRAM.MEMORY + 16! ; : @' DUP C@' SWAP 1+ C@' FLIP OR ; \ READ DATA IN DRAM VARIABLE CP 0 CP ! \ CODE POSITION TO ENTER : HERE' CP @ ; : ORG' CP ! ; : ALLOT' CP +! ; : C,' ( BYTE ... ) HERE' C!' 1 ALLOT' ; \ 1 CP +! ; \ weForth : ,' ( BYTE ... ) HERE' !' 2 ALLOT' ; \ 2 CP +! ; : ,ORG' HERE' 3 - C@' 12 = IF HERE' 2 - @' FLIP -3 ALLOT' ORG' ELSE ABORT" ,JMP can only be used right after subroutine call! " THEN ; \ : ORG' HERE' 3 - C@' 12 = \ IF HERE' 2 - @' FLIP -3 ALLOT' \ THEN CP ! ; \ CREATE SIMU.RAM 0 ORG' 2 C,' 1 C,' 0 C,' 32 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 32 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 32 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 32 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 32 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 32 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 32 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 32 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 50 C,' 0 C,' 10 C,' 0 C,' 40 C,' 1 C,' 60 C,' 1 C,' 0CC C,' 11 C,' 8C C,' 11 C,' 60 C,' 1 C,' 58 C,' 13 C,' 0A C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0FD C,' 0 C,' 0 C,' 8 C,' 13 C,' 0EE C,' 0B C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 80 C,' 0 C,' 80 C,' 0CC C,' 1A C,' 0CC C,' 1A C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0E4 C,' 0F5 C,' 0D0 C,' 0F5 C,' 0A8 C,' 0F5 C,' 0A0 C,' 75 C,' 81 C,' 10 C,' 78 C,' 20 C,' 79 C,' 0FC C,' 75 C,' 8D C,' 0FD C,' 75 C,' 87 C,' 80 C,' 75 C,' 98 C,' 50 C,' 0D2 C,' 8E C,' 75 C,' 89 C,' 20 C,' 7A C,' 20 C,' 0FB C,' 90 C,' 0 C,' 0 C,' 0E4 C,' 93 C,' 0F0 C,' 0A3 C,' 0DB C,' 0FA C,' 0DA C,' 0F8 C,' 2 C,' 1A C,' 0D2 C,' 0 C,' 0 C,' 0 C,' 3 C,' 21 C,' 49 C,' 4F C,' 0C2 C,' 0AC C,' 75 C,' 98 C,' 52 C,' 22 C,' 30 C,' 1 C,' 3 C,' 3F C,' 52 C,' 58 C,' 8 C,' 0A6 C,' 2 C,' 8 C,' 0A6 C,' 3 C,' 30 C,' 98 C,' 0C C,' 0C2 C,' 98 C,' 8 C,' 0A6 C,' 99 C,' 8 C,' 76 C,' 0 C,' 74 C,' 0FF C,' 80 C,' 1 C,' 0E4 C,' 0FA C,' 0FB C,' 22 C,' 0 C,' 3C C,' 1 C,' 3 C,' 54 C,' 58 C,' 21 C,' 30 C,' 99 C,' 2 C,' 0C2 C,' 99 C,' 8A C,' 99 C,' 30 C,' 99 C,' 0FD C,' 0C2 C,' 99 C,' 86 C,' 3 C,' 18 C,' 86 C,' 2 C,' 18 C,' 22 C,' 0 C,' 5C C,' 1 C,' 45 C,' 64 C,' 6F C,' 4C C,' 49 C,' 54 C,' 0D0 C,' 83 C,' 0D0 C,' 82 C,' 8 C,' 0A6 C,' 2 C,' 8 C,' 0A6 C,' 3 C,' 0E0 C,' 0FA C,' 0A3 C,' 0E0 C,' 0FB C,' 74 C,' 1 C,' 73 C,' 76 C,' 1 C,' 44 C,' 6E C,' 65 C,' 78 C,' 74 C,' 0 C,' 0D0 C,' 83 C,' 0D0 C,' 82 C,' 0D0 C,' 0F0 C,' 0D0 C,' 0E0 C,' 0C3 C,' 94 C,' 1 C,' 0C0 C,' 0E0 C,' 0E5 C,' 0F0 C,' 94 C,' 0 C,' 0F5 C,' 0F0 C,' 50 C,' 5 C,' 15 C,' 81 C,' 74 C,' 2 C,' 73 C,' 0C0 C,' 0F0 C,' 0E0 C,' 0C0 C,' 0E0 C,' 0A3 C,' 0E0 C,' 0C0 C,' 0E0 C,' 22 C,' 90 C,' 1 C,' 47 C,' 3F C,' 62 C,' 72 C,' 61 C,' 6E C,' 63 C,' 68 C,' 0EA C,' 4B C,' 86 C,' 3 C,' 18 C,' 86 C,' 2 C,' 18 C,' 60 C,' 12 C,' 0D0 C,' 83 C,' 0D0 C,' 82 C,' 74 C,' 2 C,' 73 C,' 0 C,' 0BC C,' 1 C,' 46 C,' 62 C,' 72 C,' 61 C,' 6E C,' 63 C,' 68 C,' 0 C,' 0D0 C,' 83 C,' 0D0 C,' 82 C,' 0E0 C,' 0C0 C,' 0E0 C,' 0A3 C,' 0E0 C,' 0C0 C,' 0E0 C,' 22 C,' 0D8 C,' 1 C,' 7 C,' 45 C,' 58 C,' 45 C,' 43 C,' 55 C,' 54 C,' 45 C,' 0C0 C,' 2 C,' 0C0 C,' 3 C,' 86 C,' 3 C,' 18 C,' 86 C,' 2 C,' 18 C,' 22 C,' 0 C,' 0EE C,' 1 C,' 1 C,' 21 C,' 8A C,' 82 C,' 8B C,' 83 C,' 86 C,' 3 C,' 18 C,' 0E6 C,' 18 C,' 0F0 C,' 0A3 C,' 0EB C,' 0F0 C,' 86 C,' 3 C,' 18 C,' 86 C,' 2 C,' 18 C,' 22 C,' 4 C,' 2 C,' 1 C,' 40 C,' 8A C,' 82 C,' 8B C,' 83 C,' 0E0 C,' 0FA C,' 0A3 C,' 0E0 C,' 0FB C,' 22 C,' 1C C,' 2 C,' 2 C,' 43 C,' 21 C,' 0 C,' 8A C,' 82 C,' 8B C,' 83 C,' 18 C,' 0E6 C,' 18 C,' 0F0 C,' 86 C,' 3 C,' 18 C,' 86 C,' 2 C,' 18 C,' 22 C,' 0 C,' 2A C,' 2 C,' 2 C,' 43 C,' 40 C,' 0 C,' 8A C,' 82 C,' 8B C,' 83 C,' 0E0 C,' 0FA C,' 7B C,' 0 C,' 22 C,' 0 C,' 40 C,' 2 C,' 42 C,' 3E C,' 52 C,' 0 C,' 0D0 C,' 83 C,' 0D0 C,' 82 C,' 0C0 C,' 2 C,' 0C0 C,' 3 C,' 86 C,' 3 C,' 18 C,' 86 C,' 2 C,' 18 C,' 0E4 C,' 73 C,' 50 C,' 2 C,' 2 C,' 52 C,' 40 C,' 0 C,' 8 C,' 0A6 C,' 2 C,' 8 C,' 0A6 C,' 3 C,' 0E5 C,' 81 C,' 15 C,' 81 C,' 15 C,' 81 C,' 0D0 C,' 3 C,' 0D0 C,' 2 C,' 0F5 C,' 81 C,' 22 C,' 0 C,' 66 C,' 2 C,' 2 C,' 52 C,' 3E C,' 0 C,' 8 C,' 0A6 C,' 2 C,' 8 C,' 0A6 C,' 3 C,' 0D0 C,' 83 C,' 0D0 C,' 82 C,' 0D0 C,' 3 C,' 0D0 C,' 2 C,' 0E4 C,' 73 C,' 80 C,' 2 C,' 3 C,' 52 C,' 50 C,' 40 C,' 8 C,' 0A6 C,' 2 C,' 8 C,' 0A6 C,' 3 C,' 0AA C,' 81 C,' 1A C,' 1A C,' 7B C,' 0 C,' 22 C,' 0 C,' 96 C,' 2 C,' 43 C,' 52 C,' 50 C,' 21 C,' 0D0 C,' 83 C,' 0D0 C,' 82 C,' 8A C,' 81 C,' 86 C,' 3 C,' 18 C,' 86 C,' 2 C,' 18 C,' 0E4 C,' 73 C,' 0AA C,' 2 C,' 3 C,' 53 C,' 50 C,' 40 C,' 8 C,' 0A6 C,' 2 C,' 8 C,' 0A6 C,' 3 C,' 88 C,' 2 C,' 7B C,' 0 C,' 22 C,' 0 C,' 0BE C,' 2 C,' 3 C,' 53 C,' 50 C,' 21 C,' 0A8 C,' 2 C,' 86 C,' 3 C,' 18 C,' 86 C,' 2 C,' 18 C,' 22 C,' 0 C,' 0D0 C,' 2 C,' 3 C,' 44 C,' 55 C,' 50 C,' 8 C,' 0A6 C,' 2 C,' 8 C,' 0A6 C,' 3 C,' 22 C,' 0 C,' 0E0 C,' 2 C,' 4 C,' 3F C,' 44 C,' 55 C,' 50 C,' 0 C,' 0EA C,' 4B C,' 70 C,' 0EC C,' 22 C,' 0 C,' 0EE C,' 2 C,' 4 C,' 44 C,' 52 C,' 4F C,' 50 C,' 0 C,' 86 C,' 3 C,' 18 C,' 86 C,' 2 C,' 18 C,' 22 C,' 0 C,' 0FC C,' 2 C,' 4 C,' 53 C,' 57 C,' 41 C,' 50 C,' 0 C,' 0EB C,' 0C6 C,' 0FB C,' 18 C,' 0EA C,' 0C6 C,' 0FA C,' 8 C,' 22 C,' 0 C,' 0C C,' 3 C,' 4 C,' 4F C,' 56 C,' 45 C,' 52 C,' 0 C,' 86 C,' 0F0 C,' 18 C,' 0E6 C,' 8 C,' 8 C,' 0A6 C,' 2 C,' 8 C,' 0A6 C,' 3 C,' 0AB C,' 0F0 C,' 0FA C,' 22 C,' 0 C,' 1E C,' 3 C,' 2 C,' 30 C,' 3C C,' 0 C,' 0EB C,' 30 C,' 0E7 C,' 4 C,' 74 C,' 0FF C,' 80 C,' 1 C,' 0E4 C,' 0FA C,' 0FB C,' 22 C,' 36 C,' 3 C,' 3 C,' 41 C,' 4E C,' 44 C,' 0E6 C,' 52 C,' 3 C,' 18 C,' 0E6 C,' 52 C,' 2 C,' 18 C,' 22 C,' 0 C,' 48 C,' 3 C,' 2 C,' 4F C,' 52 C,' 0 C,' 0E6 C,' 42 C,' 3 C,' 18 C,' 0E6 C,' 42 C,' 2 C,' 18 C,' 22 C,' 0 C,' 58 C,' 3 C,' 3 C,' 58 C,' 4F C,' 52 C,' 0E6 C,' 62 C,' 3 C,' 18 C,' 0E6 C,' 62 C,' 2 C,' 18 C,' 22 C,' 0 C,' 68 C,' 3 C,' 3 C,' 55 C,' 4D C,' 2B C,' 18 C,' 0EA C,' 26 C,' 0F6 C,' 8 C,' 0EB C,' 36 C,' 0F6 C,' 0E4 C,' 0FB C,' 3B C,' 0FA C,' 22 C,' 0 C,' 78 C,' 3 C,' 3 C,' 52 C,' 4F C,' 54 C,' 88 C,' 0F0 C,' 0EB C,' 0C6 C,' 18 C,' 18 C,' 0C6 C,' 0FB C,' 8 C,' 0EA C,' 0C6 C,' 18 C,' 18 C,' 0C6 C,' 0FA C,' 0A8 C,' 0F0 C,' 22 C,' 8C C,' 3 C,' 5 C,' 32 C,' 44 C,' 52 C,' 4F C,' 50 C,' 18 C,' 18 C,' 86 C,' 3 C,' 18 C,' 86 C,' 2 C,' 18 C,' 22 C,' 0 C,' 0A4 C,' 3 C,' 4 C,' 32 C,' 44 C,' 55 C,' 50 C,' 0 C,' 18 C,' 0E6 C,' 8 C,' 86 C,' 0F0 C,' 8 C,' 0A6 C,' 2 C,' 8 C,' 0A6 C,' 3 C,' 8 C,' 0F6 C,' 8 C,' 0A6 C,' 0F0 C,' 22 C,' 0 C,' 0B6 C,' 3 C,' 1 C,' 2B C,' 86 C,' 0F0 C,' 18 C,' 0EA C,' 26 C,' 0FA C,' 0EB C,' 35 C,' 0F0 C,' 0FB C,' 18 C,' 22 C,' 0D0 C,' 3 C,' 1 C,' 2D C,' 0C3 C,' 86 C,' 0F0 C,' 18 C,' 0E6 C,' 18 C,' 9A C,' 0FA C,' 0E5 C,' 0F0 C,' 9B C,' 0FB C,' 22 C,' 0 C,' 0E0 C,' 3 C,' 3 C,' 4E C,' 4F C,' 54 C,' 0EA C,' 0F4 C,' 0FA C,' 0EB C,' 0F4 C,' 0FB C,' 22 C,' 0 C,' 0F2 C,' 3 C,' 6 C,' 4E C,' 45 C,' 47 C,' 41 C,' 54 C,' 45 C,' 0 C,' 0E4 C,' 0C3 C,' 9A C,' 0FA C,' 0E4 C,' 9B C,' 0FB C,' 22 C,' 0 C,' 4 C,' 3 C,' 41 C,' 42 C,' 53 C,' 0EB C,' 20 C,' 0E7 C,' 0EE C,' 22 C,' 0 C,' 12 C,' 4 C,' 4 C,' 46 C,' 4C C,' 49 C,' 50 C,' 0 C,' 0EA C,' 0CB C,' 0FA C,' 22 C,' 1E C,' 4 C,' 7 C,' 44 C,' 4E C,' 45 C,' 47 C,' 41 C,' 54 C,' 45 C,' 0E4 C,' 0C3 C,' 18 C,' 96 C,' 0F6 C,' 8 C,' 0E4 C,' 96 C,' 0F6 C,' 0E4 C,' 9A C,' 0FA C,' 0E4 C,' 9B C,' 0FB C,' 22 C,' 2A C,' 4 C,' 1 C,' 3D C,' 0E6 C,' 62 C,' 3 C,' 18 C,' 0E6 C,' 62 C,' 2 C,' 18 C,' 0EA C,' 4B C,' 60 C,' 3 C,' 0E4 C,' 80 C,' 2 C,' 74 C,' 0FF C,' 0FA C,' 0FB C,' 22 C,' 44 C,' 4 C,' 2 C,' 55 C,' 3C C,' 0 C,' 0C3 C,' 86 C,' 0F0 C,' 18 C,' 0E6 C,' 9A C,' 18 C,' 0E5 C,' 0F0 C,' 9B C,' 40 C,' 0E9 C,' 0E4 C,' 80 C,' 0E8 C,' 0 C,' 5C C,' 4 C,' 5 C,' 43 C,' 45 C,' 4C C,' 4C C,' 2B C,' 74 C,' 2 C,' 2A C,' 0FA C,' 50 C,' 1 C,' 0B C,' 22 C,' 72 C,' 4 C,' 5 C,' 43 C,' 45 C,' 4C C,' 4C C,' 2D C,' 0C3 C,' 0EA C,' 94 C,' 2 C,' 0FA C,' 50 C,' 1 C,' 1B C,' 22 C,' 0 C,' 82 C,' 4 C,' 5 C,' 43 C,' 45 C,' 4C C,' 4C C,' 53 C,' 0EA C,' 0C3 C,' 33 C,' 0FA C,' 0EB C,' 33 C,' 0FB C,' 22 C,' 94 C,' 4 C,' 2 C,' 31 C,' 2B C,' 0 C,' 74 C,' 1 C,' 2A C,' 0FA C,' 50 C,' 1 C,' 0B C,' 22 C,' 0A4 C,' 4 C,' 2 C,' 31 C,' 2D C,' 0 C,' 0C3 C,' 0EA C,' 94 C,' 1 C,' 0FA C,' 50 C,' 1 C,' 1B C,' 22 C,' 0 C,' 0B2 C,' 4 C,' 2 C,' 32 C,' 2F C,' 0 C,' 0C3 C,' 0EB C,' 30 C,' 0E7 C,' 1 C,' 0D3 C,' 13 C,' 0FB C,' 0EA C,' 13 C,' 0FA C,' 22 C,' 0C2 C,' 4 C,' 7 C,' 41 C,' 4C C,' 49 C,' 47 C,' 4E C,' 45 C,' 44 C,' 0EA C,' 30 C,' 0E0 C,' 6 C,' 24 C,' 1 C,' 0FA C,' 50 C,' 1 C,' 0B C,' 22 C,' 0C3 C,' 0EE C,' 9A C,' 0F6 C,' 0EF C,' 9B C,' 40 C,' 3 C,' 0FF C,' 86 C,' 6 C,' 22 C,' 0 C,' 0D4 C,' 4 C,' 6 C,' 55 C,' 4D C,' 2F C,' 4D C,' 4F C,' 44 C,' 0 C,' 75 C,' 0F0 C,' 10 C,' 86 C,' 7 C,' 18 C,' 86 C,' 6 C,' 18 C,' 86 C,' 5 C,' 18 C,' 86 C,' 4 C,' 91 C,' 0E7 C,' 40 C,' 0A C,' 0E5 C,' 0FF C,' 0F6 C,' 8 C,' 0F6 C,' 0FA C,' 0FB C,' 22 C,' 91 C,' 0E7 C,' 0B3 C,' 0EC C,' 33 C,' 0FC C,' 0ED C,' 33 C,' 0FD C,' 0EE C,' 33 C,' 0FE C,' 0EF C,' 33 C,' 0FF C,' 0D5 C,' 0F0 C,' 0EE C,' 91 C,' 0E7 C,' 0B3 C,' 0EC C,' 33 C,' 0FA C,' 0ED C,' 33 C,' 0FB C,' 0A6 C,' 6 C,' 8 C,' 0A6 C,' 7 C,' 22 C,' 0 C,' 0F6 C,' 4 C,' 3 C,' 55 C,' 4D C,' 2A C,' 0E4 C,' 0FE C,' 0FF C,' 18 C,' 0E6 C,' 8A C,' 0F0 C,' 0A4 C,' 0FC C,' 0AD C,' 0F0 C,' 0E6 C,' 8B C,' 0F0 C,' 0A4 C,' 2D C,' 0FD C,' 0E5 C,' 0F0 C,' 3E C,' 0FE C,' 0A6 C,' 4 C,' 8 C,' 0E6 C,' 8A C,' 0F0 C,' 0A4 C,' 2D C,' 0FD C,' 0E5 C,' 0F0 C,' 3E C,' 0FE C,' 0E4 C,' 3F C,' 0FF C,' 0E6 C,' 8B C,' 0F0 C,' 0A4 C,' 2E C,' 0FA C,' 0E5 C,' 0F0 C,' 3F C,' 0FB C,' 0A6 C,' 5 C,' 22 C,' 3C C,' 5 C,' 45 C,' 64 C,' 6F C,' 56 C,' 41 C,' 52 C,' 8 C,' 0A6 C,' 2 C,' 8 C,' 0A6 C,' 3 C,' 0D0 C,' 3 C,' 0D0 C,' 2 C,' 22 C,' 0 C,' 74 C,' 5 C,' 2 C,' 55 C,' 50 C,' 0 C,' 12 C,' 5 C,' 7A C,' 0 C,' 0FC C,' 0 C,' 88 C,' 5 C,' 46 C,' 64 C,' 6F C,' 55 C,' 53 C,' 45 C,' 52 C,' 0 C,' 0D0 C,' 83 C,' 0D0 C,' 82 C,' 8 C,' 0A6 C,' 2 C,' 8 C,' 0A6 C,' 3 C,' 0E0 C,' 0FA C,' 0AB C,' 1 C,' 22 C,' 0 C,' 94 C,' 5 C,' 3 C,' 53 C,' 50 C,' 30 C,' 12 C,' 5 C,' 9C C,' 8 C,' 0 C,' 0 C,' 0AE C,' 5 C,' 3 C,' 52 C,' 50 C,' 30 C,' 12 C,' 5 C,' 9C C,' 0A C,' 0 C,' 0 C,' 0BA C,' 5 C,' 5 C,' 27 C,' 3F C,' 4B C,' 45 C,' 59 C,' 12 C,' 5 C,' 9C C,' 0C C,' 0 C,' 0 C,' 0C6 C,' 5 C,' 5 C,' 27 C,' 45 C,' 4D C,' 49 C,' 54 C,' 12 C,' 5 C,' 9C C,' 0E C,' 0 C,' 0 C,' 0D4 C,' 5 C,' 7 C,' 27 C,' 45 C,' 58 C,' 50 C,' 45 C,' 43 C,' 54 C,' 12 C,' 5 C,' 9C C,' 10 C,' 0 C,' 0 C,' 0E2 C,' 5 C,' 4 C,' 27 C,' 54 C,' 41 C,' 50 C,' 0 C,' 12 C,' 5 C,' 9C C,' 12 C,' 0 C,' 0 C,' 0F2 C,' 5 C,' 5 C,' 27 C,' 45 C,' 43 C,' 48 C,' 4F C,' 12 C,' 5 C,' 9C C,' 14 C,' 0 C,' 0 C,' 0 C,' 6 C,' 7 C,' 27 C,' 50 C,' 52 C,' 4F C,' 4D C,' 50 C,' 54 C,' 12 C,' 5 C,' 9C C,' 16 C,' 0 C,' 0 C,' 0E C,' 6 C,' 4 C,' 42 C,' 41 C,' 53 C,' 45 C,' 0 C,' 12 C,' 5 C,' 9C C,' 18 C,' 0 C,' 0 C,' 1E C,' 6 C,' 43 C,' 74 C,' 6D C,' 70 C,' 12 C,' 5 C,' 9C C,' 1A C,' 0 C,' 0 C,' 2C C,' 6 C,' 4 C,' 53 C,' 50 C,' 41 C,' 4E C,' 0 C,' 12 C,' 5 C,' 9C C,' 1C C,' 0 C,' 0 C,' 38 C,' 6 C,' 3 C,' 3E C,' 49 C,' 4E C,' 12 C,' 5 C,' 9C C,' 1E C,' 0 C,' 0 C,' 46 C,' 6 C,' 4 C,' 23 C,' 54 C,' 49 C,' 42 C,' 0 C,' 12 C,' 5 C,' 9C C,' 20 C,' 0 C,' 0 C,' 52 C,' 6 C,' 3 C,' 43 C,' 53 C,' 50 C,' 12 C,' 5 C,' 9C C,' 24 C,' 0 C,' 0 C,' 60 C,' 6 C,' 5 C,' 27 C,' 45 C,' 56 C,' 41 C,' 4C C,' 12 C,' 5 C,' 9C C,' 26 C,' 0 C,' 0 C,' 6C C,' 6 C,' 7 C,' 27 C,' 4E C,' 55 C,' 4D C,' 42 C,' 45 C,' 52 C,' 12 C,' 5 C,' 9C C,' 28 C,' 0 C,' 0 C,' 7A C,' 6 C,' 3 C,' 48 C,' 4C C,' 44 C,' 12 C,' 5 C,' 9C C,' 2A C,' 0 C,' 0 C,' 8A C,' 6 C,' 7 C,' 48 C,' 41 C,' 4E C,' 44 C,' 4C C,' 45 C,' 52 C,' 12 C,' 5 C,' 9C C,' 2C C,' 0 C,' 0 C,' 96 C,' 6 C,' 7 C,' 43 C,' 4F C,' 4E C,' 54 C,' 45 C,' 58 C,' 54 C,' 12 C,' 5 C,' 9C C,' 2E C,' 0 C,' 0 C,' 0A6 C,' 6 C,' 7 C,' 43 C,' 55 C,' 52 C,' 52 C,' 45 C,' 4E C,' 54 C,' 12 C,' 5 C,' 9C C,' 40 C,' 0 C,' 0 C,' 0B6 C,' 6 C,' 2 C,' 43 C,' 50 C,' 0 C,' 12 C,' 5 C,' 9C C,' 44 C,' 0 C,' 0 C,' 0C6 C,' 6 C,' 2 C,' 4E C,' 50 C,' 0 C,' 12 C,' 5 C,' 9C C,' 46 C,' 0 C,' 0 C,' 0D2 C,' 6 C,' 4 C,' 4C C,' 41 C,' 53 C,' 54 C,' 0 C,' 12 C,' 5 C,' 9C C,' 48 C,' 0 C,' 0 C,' 0DE C,' 6 C,' 5 C,' 66 C,' 6F C,' 72 C,' 74 C,' 68 C,' 12 C,' 5 C,' 9C C,' 4A C,' 0 C,' 0 C,' 0EC C,' 6 C,' 5 C,' 46 C,' 4F C,' 52 C,' 54 C,' 48 C,' 12 C,' 6 C,' 0F2 C,' 12 C,' 6 C,' 0AE C,' 12 C,' 2 C,' 6 C,' 22 C,' 0FA C,' 6 C,' 1 C,' 3C C,' 12 C,' 3 C,' 0BC C,' 12 C,' 3 C,' 6C C,' 12 C,' 3 C,' 3A C,' 12 C,' 1 C,' 0C4 C,' 23 C,' 7 C,' 12 C,' 3 C,' 2 C,' 12 C,' 3 C,' 3A C,' 22 C,' 12 C,' 3 C,' 0E2 C,' 12 C,' 3 C,' 3A C,' 22 C,' 0C C,' 7 C,' 3 C,' 4D C,' 41 C,' 58 C,' 12 C,' 3 C,' 0BC C,' 12 C,' 7 C,' 0E C,' 12 C,' 1 C,' 0C4 C,' 3E C,' 7 C,' 12 C,' 3 C,' 12 C,' 12 C,' 3 C,' 2 C,' 22 C,' 2C C,' 7 C,' 3 C,' 4D C,' 49 C,' 4E C,' 12 C,' 3 C,' 0BC C,' 12 C,' 3 C,' 12 C,' 12 C,' 7 C,' 0E C,' 12 C,' 1 C,' 0C4 C,' 59 C,' 7 C,' 12 C,' 3 C,' 12 C,' 12 C,' 3 C,' 2 C,' 22 C,' 0 C,' 44 C,' 7 C,' 6 C,' 57 C,' 49 C,' 54 C,' 48 C,' 49 C,' 4E C,' 0 C,' 12 C,' 3 C,' 24 C,' 12 C,' 3 C,' 0E2 C,' 12 C,' 2 C,' 54 C,' 12 C,' 3 C,' 0E2 C,' 12 C,' 2 C,' 84 C,' 12 C,' 4 C,' 60 C,' 22 C,' 0 C,' 60 C,' 7 C,' 5 C,' 4D C,' 2F C,' 4D C,' 4F C,' 44 C,' 12 C,' 2 C,' 0E4 C,' 12 C,' 3 C,' 3A C,' 12 C,' 2 C,' 0E4 C,' 12 C,' 2 C,' 54 C,' 12 C,' 1 C,' 0C4 C,' 0A1 C,' 7 C,' 12 C,' 4 C,' 8 C,' 12 C,' 2 C,' 54 C,' 12 C,' 4 C,' 32 C,' 12 C,' 2 C,' 84 C,' 12 C,' 2 C,' 54 C,' 12 C,' 2 C,' 0E4 C,' 12 C,' 3 C,' 3A C,' 12 C,' 1 C,' 0C4 C,' 0B5 C,' 7 C,' 12 C,' 2 C,' 6A C,' 12 C,' 3 C,' 0D2 C,' 12 C,' 2 C,' 84 C,' 12 C,' 4 C,' 0FE C,' 12 C,' 2 C,' 84 C,' 12 C,' 1 C,' 0C4 C,' 0CC C,' 7 C,' 12 C,' 3 C,' 12 C,' 12 C,' 4 C,' 8 C,' 12 C,' 3 C,' 12 C,' 22 C,' 0 C,' 7E C,' 7 C,' 4 C,' 2F C,' 4D C,' 4F C,' 44 C,' 0 C,' 12 C,' 3 C,' 24 C,' 12 C,' 3 C,' 3A C,' 12 C,' 3 C,' 12 C,' 12 C,' 7 C,' 84 C,' 22 C,' 0 C,' 0D0 C,' 7 C,' 3 C,' 4D C,' 4F C,' 44 C,' 12 C,' 7 C,' 0D6 C,' 12 C,' 3 C,' 2 C,' 22 C,' 0 C,' 0E6 C,' 7 C,' 1 C,' 2F C,' 12 C,' 7 C,' 0D6 C,' 12 C,' 3 C,' 12 C,' 12 C,' 3 C,' 2 C,' 22 C,' 0F4 C,' 7 C,' 1 C,' 2A C,' 12 C,' 5 C,' 40 C,' 12 C,' 3 C,' 2 C,' 22 C,' 0 C,' 2 C,' 8 C,' 2 C,' 4D C,' 2A C,' 0 C,' 12 C,' 3 C,' 0BC C,' 12 C,' 3 C,' 6C C,' 12 C,' 3 C,' 3A C,' 12 C,' 2 C,' 54 C,' 12 C,' 4 C,' 16 C,' 12 C,' 3 C,' 12 C,' 12 C,' 4 C,' 16 C,' 12 C,' 5 C,' 40 C,' 12 C,' 2 C,' 84 C,' 12 C,' 1 C,' 0C4 C,' 35 C,' 8 C,' 12 C,' 4 C,' 32 C,' 22 C,' 0E C,' 8 C,' 5 C,' 2A C,' 2F C,' 4D C,' 4F C,' 44 C,' 12 C,' 2 C,' 54 C,' 12 C,' 8 C,' 12 C,' 12 C,' 2 C,' 84 C,' 12 C,' 7 C,' 84 C,' 22 C,' 0 C,' 38 C,' 8 C,' 2 C,' 2A C,' 2F C,' 0 C,' 12 C,' 8 C,' 3E C,' 12 C,' 3 C,' 12 C,' 12 C,' 3 C,' 2 C,' 22 C,' 4E C,' 8 C,' 2 C,' 42 C,' 4C C,' 0 C,' 12 C,' 1 C,' 7C C,' 20 C,' 0 C,' 22 C,' 5E C,' 8 C,' 1 C,' 30 C,' 8 C,' 0A6 C,' 2 C,' 8 C,' 0A6 C,' 3 C,' 7A C,' 0 C,' 0AB C,' 2 C,' 22 C,' 0 C,' 6A C,' 8 C,' 1 C,' 31 C,' 8 C,' 0A6 C,' 2 C,' 8 C,' 0A6 C,' 3 C,' 7A C,' 1 C,' 7B C,' 0 C,' 22 C,' 0 C,' 7A C,' 8 C,' 1 C,' 32 C,' 8 C,' 0A6 C,' 2 C,' 8 C,' 0A6 C,' 3 C,' 7A C,' 2 C,' 7B C,' 0 C,' 22 C,' 0 C,' 8A C,' 8 C,' 2 C,' 2D C,' 31 C,' 0 C,' 8 C,' 0A6 C,' 2 C,' 8 C,' 0A6 C,' 3 C,' 7A C,' 0FF C,' 0AB C,' 2 C,' 22 C,' 0 C,' 9A C,' 8 C,' 5 C,' 3E C,' 43 C,' 48 C,' 41 C,' 52 C,' 12 C,' 1 C,' 7C C,' 7F C,' 0 C,' 12 C,' 3 C,' 4C C,' 12 C,' 2 C,' 0E4 C,' 12 C,' 1 C,' 7C C,' 7F C,' 0 C,' 12 C,' 8 C,' 62 C,' 12 C,' 7 C,' 68 C,' 12 C,' 1 C,' 0C4 C,' 0D5 C,' 8 C,' 12 C,' 3 C,' 2 C,' 12 C,' 1 C,' 7C C,' 5F C,' 0 C,' 22 C,' 0AC C,' 8 C,' 5 C,' 44 C,' 45 C,' 50 C,' 54 C,' 48 C,' 12 C,' 2 C,' 0C2 C,' 12 C,' 5 C,' 0B2 C,' 12 C,' 2 C,' 1E C,' 12 C,' 3 C,' 0E2 C,' 12 C,' 4 C,' 0C6 C,' 22 C,' 0D8 C,' 8 C,' 4 C,' 50 C,' 49 C,' 43 C,' 4B C,' 0 C,' 88 C,' 0F0 C,' 0E8 C,' 0C3 C,' 9A C,' 9A C,' 0F8 C,' 86 C,' 3 C,' 18 C,' 86 C,' 2 C,' 0A8 C,' 0F0 C,' 22 C,' 0 C,' 0F0 C,' 8 C,' 2 C,' 2B C,' 21 C,' 0 C,' 12 C,' 3 C,' 12 C,' 12 C,' 3 C,' 24 C,' 12 C,' 2 C,' 1E C,' 12 C,' 3 C,' 0D2 C,' 12 C,' 3 C,' 12 C,' 12 C,' 2 C,' 6 C,' 22 C,' 0 C,' 8 C,' 9 C,' 2 C,' 32 C,' 21 C,' 0 C,' 12 C,' 3 C,' 12 C,' 12 C,' 3 C,' 24 C,' 12 C,' 2 C,' 6 C,' 12 C,' 4 C,' 78 C,' 12 C,' 2 C,' 6 C,' 22 C,' 22 C,' 9 C,' 2 C,' 32 C,' 40 C,' 0 C,' 12 C,' 2 C,' 0E4 C,' 12 C,' 4 C,' 78 C,' 12 C,' 2 C,' 1E C,' 12 C,' 3 C,' 12 C,' 12 C,' 2 C,' 1E C,' 22 C,' 38 C,' 9 C,' 5 C,' 43 C,' 4F C,' 55 C,' 4E C,' 54 C,' 12 C,' 2 C,' 0E4 C,' 12 C,' 4 C,' 0A8 C,' 12 C,' 3 C,' 12 C,' 12 C,' 2 C,' 44 C,' 22 C,' 0 C,' 4E C,' 9 C,' 4 C,' 48 C,' 45 C,' 52 C,' 45 C,' 0 C,' 12 C,' 6 C,' 0CA C,' 12 C,' 2 C,' 1E C,' 22 C,' 0 C,' 64 C,' 9 C,' 3 C,' 50 C,' 41 C,' 44 C,' 12 C,' 9 C,' 6A C,' 12 C,' 1 C,' 7C C,' 50 C,' 0 C,' 12 C,' 3 C,' 0D2 C,' 22 C,' 74 C,' 9 C,' 3 C,' 54 C,' 49 C,' 42 C,' 12 C,' 6 C,' 58 C,' 12 C,' 4 C,' 78 C,' 12 C,' 2 C,' 1E C,' 22 C,' 86 C,' 9 C,' 8 C,' 40 C,' 45 C,' 58 C,' 45 C,' 43 C,' 55 C,' 54 C,' 45 C,' 0 C,' 12 C,' 2 C,' 1E C,' 12 C,' 2 C,' 0F4 C,' 12 C,' 1 C,' 0C4 C,' 0AE C,' 9 C,' 12 C,' 1 C,' 0F6 C,' 22 C,' 0 C,' 96 C,' 9 C,' 5 C,' 43 C,' 4D C,' 4F C,' 56 C,' 45 C,' 12 C,' 2 C,' 54 C,' 12 C,' 1 C,' 0E0 C,' 0D8 C,' 9 C,' 12 C,' 2 C,' 54 C,' 12 C,' 2 C,' 0E4 C,' 12 C,' 2 C,' 44 C,' 12 C,' 2 C,' 6A C,' 12 C,' 2 C,' 2E C,' 12 C,' 4 C,' 0A8 C,' 12 C,' 2 C,' 84 C,' 12 C,' 4 C,' 0A8 C,' 12 C,' 1 C,' 96 C,' 0C0 C,' 9 C,' 12 C,' 3 C,' 0AA C,' 22 C,' 0 C,' 0B2 C,' 9 C,' 4 C,' 46 C,' 49 C,' 4C C,' 4C C,' 0 C,' 12 C,' 3 C,' 12 C,' 12 C,' 2 C,' 54 C,' 12 C,' 3 C,' 12 C,' 12 C,' 1 C,' 0E0 C,' 1 C,' 0A C,' 12 C,' 3 C,' 0BC C,' 12 C,' 2 C,' 2E C,' 12 C,' 4 C,' 0A8 C,' 12 C,' 1 C,' 96 C,' 0F8 C,' 9 C,' 12 C,' 3 C,' 0AA C,' 22 C,' 0E4 C,' 9 C,' 9 C,' 2D C,' 54 C,' 52 C,' 41 C,' 49 C,' 4C C,' 49 C,' 4E C,' 47 C,' 12 C,' 2 C,' 54 C,' 12 C,' 1 C,' 0E0 C,' 3C C,' 0A C,' 12 C,' 8 C,' 62 C,' 12 C,' 3 C,' 24 C,' 12 C,' 2 C,' 6A C,' 12 C,' 3 C,' 0D2 C,' 12 C,' 2 C,' 44 C,' 12 C,' 7 C,' 0E C,' 12 C,' 1 C,' 0C4 C,' 3C C,' 0A C,' 12 C,' 2 C,' 84 C,' 12 C,' 4 C,' 0A8 C,' 22 C,' 12 C,' 1 C,' 96 C,' 1E C,' 0A C,' 12 C,' 8 C,' 6C C,' 22 C,' 0 C,' 0C C,' 0A C,' 5 C,' 50 C,' 41 C,' 43 C,' 4B C,' 24 C,' 12 C,' 4 C,' 0DC C,' 12 C,' 2 C,' 0E4 C,' 12 C,' 2 C,' 54 C,' 12 C,' 3 C,' 24 C,' 12 C,' 2 C,' 0E4 C,' 12 C,' 8 C,' 7C C,' 12 C,' 3 C,' 4C C,' 12 C,' 3 C,' 0E2 C,' 12 C,' 3 C,' 24 C,' 12 C,' 3 C,' 0D2 C,' 12 C,' 8 C,' 6C C,' 12 C,' 3 C,' 12 C,' 12 C,' 2 C,' 6 C,' 12 C,' 3 C,' 0BC C,' 12 C,' 2 C,' 2E C,' 12 C,' 4 C,' 0A8 C,' 12 C,' 3 C,' 12 C,' 12 C,' 9 C,' 0B8 C,' 12 C,' 2 C,' 84 C,' 22 C,' 48 C,' 0A C,' 5 C,' 44 C,' 49 C,' 47 C,' 49 C,' 54 C,' 12 C,' 1 C,' 7C C,' 9 C,' 0 C,' 12 C,' 3 C,' 24 C,' 12 C,' 7 C,' 0E C,' 12 C,' 1 C,' 7C C,' 7 C,' 0 C,' 12 C,' 3 C,' 4C C,' 12 C,' 3 C,' 0D2 C,' 12 C,' 1 C,' 7C C,' 30 C,' 0 C,' 12 C,' 3 C,' 0D2 C,' 22 C,' 0 C,' 8A C,' 0A C,' 7 C,' 45 C,' 58 C,' 54 C,' 52 C,' 41 C,' 43 C,' 54 C,' 12 C,' 8 C,' 6C C,' 12 C,' 3 C,' 12 C,' 12 C,' 4 C,' 0FE C,' 12 C,' 3 C,' 12 C,' 12 C,' 0A C,' 90 C,' 22 C,' 0B2 C,' 0A C,' 2 C,' 3C C,' 23 C,' 0 C,' 12 C,' 9 C,' 78 C,' 12 C,' 6 C,' 8E C,' 12 C,' 2 C,' 6 C,' 22 C,' 0CC C,' 0A C,' 4 C,' 48 C,' 4F C,' 4C C,' 44 C,' 0 C,' 12 C,' 6 C,' 8E C,' 12 C,' 2 C,' 1E C,' 12 C,' 4 C,' 0B6 C,' 12 C,' 2 C,' 0E4 C,' 12 C,' 6 C,' 8E C,' 12 C,' 2 C,' 6 C,' 12 C,' 2 C,' 2E C,' 22 C,' 0DC C,' 0A C,' 1 C,' 23 C,' 12 C,' 6 C,' 24 C,' 12 C,' 2 C,' 1E C,' 12 C,' 0A C,' 0BA C,' 12 C,' 0A C,' 0E2 C,' 22 C,' 0 C,' 0FA C,' 0A C,' 2 C,' 23 C,' 53 C,' 0 C,' 12 C,' 0A C,' 0FC C,' 12 C,' 2 C,' 0E4 C,' 12 C,' 1 C,' 0C4 C,' 20 C,' 0B C,' 12 C,' 1 C,' 0E0 C,' 10 C,' 0B C,' 22 C,' 0 C,' 0C C,' 0B C,' 4 C,' 53 C,' 49 C,' 47 C,' 4E C,' 0 C,' 12 C,' 3 C,' 3A C,' 12 C,' 1 C,' 0C4 C,' 3A C,' 0B C,' 12 C,' 1 C,' 7C C,' 2D C,' 0 C,' 12 C,' 0A C,' 0E2 C,' 22 C,' 0 C,' 24 C,' 0B C,' 2 C,' 23 C,' 3E C,' 0 C,' 12 C,' 3 C,' 2 C,' 12 C,' 6 C,' 8E C,' 12 C,' 2 C,' 1E C,' 12 C,' 9 C,' 78 C,' 12 C,' 3 C,' 24 C,' 12 C,' 3 C,' 0E2 C,' 22 C,' 0 C,' 3E C,' 0B C,' 3 C,' 73 C,' 74 C,' 72 C,' 12 C,' 2 C,' 0E4 C,' 12 C,' 2 C,' 54 C,' 12 C,' 4 C,' 16 C,' 12 C,' 0A C,' 0D0 C,' 12 C,' 0B C,' 10 C,' 12 C,' 2 C,' 84 C,' 12 C,' 0B C,' 2A C,' 12 C,' 0B C,' 42 C,' 22 C,' 0 C,' 58 C,' 0B C,' 3 C,' 48 C,' 45 C,' 58 C,' 12 C,' 1 C,' 7C C,' 10 C,' 0 C,' 12 C,' 6 C,' 24 C,' 12 C,' 2 C,' 6 C,' 22 C,' 78 C,' 0B C,' 7 C,' 44 C,' 45 C,' 43 C,' 49 C,' 4D C,' 41 C,' 4C C,' 12 C,' 1 C,' 7C C,' 0A C,' 0 C,' 12 C,' 6 C,' 24 C,' 12 C,' 2 C,' 6 C,' 22 C,' 8A C,' 0B C,' 6 C,' 44 C,' 49 C,' 47 C,' 49 C,' 54 C,' 3F C,' 0 C,' 12 C,' 2 C,' 54 C,' 12 C,' 1 C,' 7C C,' 30 C,' 0 C,' 12 C,' 3 C,' 0E2 C,' 12 C,' 1 C,' 7C C,' 9 C,' 0 C,' 12 C,' 3 C,' 24 C,' 12 C,' 7 C,' 0E C,' 12 C,' 1 C,' 0C4 C,' 0D9 C,' 0B C,' 12 C,' 1 C,' 7C C,' 7 C,' 0 C,' 12 C,' 3 C,' 0E2 C,' 12 C,' 2 C,' 0E4 C,' 12 C,' 1 C,' 7C C,' 0A C,' 0 C,' 12 C,' 7 C,' 0E C,' 12 C,' 3 C,' 5C C,' 12 C,' 2 C,' 0E4 C,' 12 C,' 2 C,' 84 C,' 12 C,' 4 C,' 60 C,' 22 C,' 0 C,' 0A0 C,' 0B C,' 7 C,' 4E C,' 55 C,' 4D C,' 42 C,' 45 C,' 52 C,' 3F C,' 12 C,' 6 C,' 24 C,' 12 C,' 2 C,' 1E C,' 12 C,' 2 C,' 54 C,' 12 C,' 8 C,' 6C C,' 12 C,' 3 C,' 24 C,' 12 C,' 9 C,' 54 C,' 12 C,' 3 C,' 24 C,' 12 C,' 2 C,' 44 C,' 12 C,' 1 C,' 7C C,' 24 C,' 0 C,' 12 C,' 4 C,' 46 C,' 12 C,' 1 C,' 0C4 C,' 22 C,' 0C C,' 12 C,' 0B C,' 7C C,' 12 C,' 3 C,' 12 C,' 12 C,' 4 C,' 0A8 C,' 12 C,' 3 C,' 12 C,' 12 C,' 4 C,' 0B6 C,' 12 C,' 3 C,' 24 C,' 12 C,' 2 C,' 44 C,' 12 C,' 1 C,' 7C C,' 2D C,' 0 C,' 12 C,' 4 C,' 46 C,' 12 C,' 2 C,' 54 C,' 12 C,' 3 C,' 12 C,' 12 C,' 2 C,' 6A C,' 12 C,' 3 C,' 0E2 C,' 12 C,' 3 C,' 12 C,' 12 C,' 2 C,' 6A C,' 12 C,' 3 C,' 0D2 C,' 12 C,' 2 C,' 0F4 C,' 12 C,' 1 C,' 0C4 C,' 0AF C,' 0C C,' 12 C,' 4 C,' 0B6 C,' 12 C,' 2 C,' 54 C,' 12 C,' 2 C,' 0E4 C,' 12 C,' 2 C,' 54 C,' 12 C,' 2 C,' 44 C,' 12 C,' 6 C,' 24 C,' 12 C,' 2 C,' 1E C,' 12 C,' 0B C,' 0A8 C,' 12 C,' 1 C,' 0C4 C,' 9D C,' 0C C,' 12 C,' 3 C,' 12 C,' 12 C,' 6 C,' 24 C,' 12 C,' 2 C,' 1E C,' 12 C,' 8 C,' 4 C,' 12 C,' 3 C,' 0D2 C,' 12 C,' 2 C,' 84 C,' 12 C,' 4 C,' 0A8 C,' 12 C,' 1 C,' 96 C,' 53 C,' 0C C,' 12 C,' 2 C,' 6A C,' 12 C,' 3 C,' 12 C,' 12 C,' 3 C,' 2 C,' 12 C,' 1 C,' 0C4 C,' 95 C,' 0C C,' 12 C,' 4 C,' 8 C,' 12 C,' 3 C,' 12 C,' 12 C,' 1 C,' 0E0 C,' 0AC C,' 0C C,' 12 C,' 2 C,' 84 C,' 12 C,' 2 C,' 84 C,' 12 C,' 3 C,' 0AA C,' 12 C,' 3 C,' 0AA C,' 12 C,' 8 C,' 6C C,' 12 C,' 2 C,' 0E4 C,' 12 C,' 2 C,' 84 C,' 12 C,' 3 C,' 0AA C,' 12 C,' 2 C,' 84 C,' 12 C,' 6 C,' 24 C,' 12 C,' 2 C,' 6 C,' 22 C,' 0 C,' 0E6 C,' 0B C,' 4 C,' 3F C,' 4B C,' 45 C,' 59 C,' 0 C,' 12 C,' 5 C,' 0CC C,' 12 C,' 9 C,' 0A0 C,' 22 C,' 0 C,' 0C2 C,' 0C C,' 3 C,' 4B C,' 45 C,' 59 C,' 12 C,' 0C C,' 0C8 C,' 12 C,' 1 C,' 0C4 C,' 0D6 C,' 0C C,' 22 C,' 0 C,' 0D2 C,' 0C C,' 4 C,' 45 C,' 4D C,' 49 C,' 54 C,' 0 C,' 12 C,' 5 C,' 0DA C,' 12 C,' 9 C,' 0A0 C,' 22 C,' 0 C,' 0E2 C,' 0C C,' 4 C,' 4E C,' 55 C,' 46 C,' 3F C,' 0 C,' 12 C,' 0C C,' 0C8 C,' 12 C,' 2 C,' 0E4 C,' 12 C,' 1 C,' 0C4 C,' 11 C,' 0D C,' 12 C,' 3 C,' 0AA C,' 12 C,' 0C C,' 0D6 C,' 12 C,' 1 C,' 7C C,' 0D C,' 0 C,' 12 C,' 4 C,' 46 C,' 22 C,' 0F2 C,' 0C C,' 4 C,' 50 C,' 41 C,' 43 C,' 45 C,' 0 C,' 12 C,' 1 C,' 7C C,' 0B C,' 0 C,' 12 C,' 0C C,' 0E8 C,' 22 C,' 0 C,' 14 C,' 0D C,' 5 C,' 53 C,' 50 C,' 41 C,' 43 C,' 45 C,' 12 C,' 8 C,' 62 C,' 12 C,' 0C C,' 0E8 C,' 22 C,' 0 C,' 26 C,' 0D C,' 6 C,' 53 C,' 50 C,' 41 C,' 43 C,' 45 C,' 53 C,' 0 C,' 12 C,' 8 C,' 6C C,' 12 C,' 7 C,' 30 C,' 12 C,' 2 C,' 54 C,' 12 C,' 1 C,' 0E0 C,' 4F C,' 0D C,' 12 C,' 0D C,' 2C C,' 12 C,' 1 C,' 96 C,' 4C C,' 0D C,' 22 C,' 0 C,' 36 C,' 0D C,' 4 C,' 54 C,' 59 C,' 50 C,' 45 C,' 0 C,' 12 C,' 2 C,' 54 C,' 12 C,' 1 C,' 0E0 C,' 72 C,' 0D C,' 12 C,' 2 C,' 0E4 C,' 12 C,' 2 C,' 44 C,' 12 C,' 0C C,' 0E8 C,' 12 C,' 4 C,' 0A8 C,' 12 C,' 1 C,' 96 C,' 66 C,' 0D C,' 12 C,' 3 C,' 2 C,' 22 C,' 0 C,' 58 C,' 0D C,' 2 C,' 43 C,' 52 C,' 0 C,' 12 C,' 1 C,' 7C C,' 0D C,' 0 C,' 12 C,' 0C C,' 0E8 C,' 22 C,' 0 C,' 7E C,' 0D C,' 43 C,' 64 C,' 6F C,' 24 C,' 12 C,' 2 C,' 84 C,' 12 C,' 2 C,' 6A C,' 12 C,' 2 C,' 84 C,' 12 C,' 9 C,' 54 C,' 12 C,' 3 C,' 0D2 C,' 12 C,' 2 C,' 54 C,' 12 C,' 3 C,' 12 C,' 12 C,' 2 C,' 54 C,' 22 C,' 0 C,' 8E C,' 0D C,' 43 C,' 24 C,' 22 C,' 7C C,' 12 C,' 0D C,' 92 C,' 22 C,' 0AE C,' 0D C,' 43 C,' 2E C,' 22 C,' 7C C,' 12 C,' 0D C,' 92 C,' 12 C,' \ C. 9 C,' 54 C,' 12 C,' 0D C,' 5E C,' 22 C,' 0B8 C,' 0D C,' 2 C,' 2E C,' 52 C,' 0 C,' 12 C,' 2 C,' 54 C,' 12 C,' 0B C,' 5C C,' 12 C,' 2 C,' 84 C,' 12 C,' 3 C,' 24 C,' 12 C,' 3 C,' 0E2 C,' 12 C,' 0D C,' 3E C,' 12 C,' 0D C,' 5E C,' 22 C,' 0C8 C,' 0D C,' 3 C,' 55 C,' 2E C,' 52 C,' 12 C,' 2 C,' 54 C,' 12 C,' 0A C,' 0D0 C,' 12 C,' 0B C,' 10 C,' 12 C,' 0B C,' 42 C,' 12 C,' 2 C,' 84 C,' 12 C,' 3 C,' 24 C,' 12 C,' 3 C,' 0E2 C,' 12 C,' 0D C,' 3E C,' 12 C,' 0D C,' 5E C,' 22 C,' 0E4 C,' 0D C,' 2 C,' 55 C,' 2E C,' 0 C,' 12 C,' 0A C,' 0D0 C,' 12 C,' 0B C,' 10 C,' 12 C,' 0B C,' 42 C,' 12 C,' 0D C,' 2C C,' 12 C,' 0D C,' 5E C,' 22 C,' 6 C,' 0E C,' 1 C,' 2E C,' 12 C,' 6 C,' 24 C,' 12 C,' 2 C,' 1E C,' 12 C,' 1 C,' 7C C,' 0A C,' 0 C,' 12 C,' 3 C,' 6C C,' 12 C,' 1 C,' 0C4 C,' 35 C,' 0E C,' 12 C,' 0E C,' 0A C,' 22 C,' 12 C,' 0B C,' 5C C,' 12 C,' 0D C,' 2C C,' 12 C,' 0D C,' 5E C,' 22 C,' 0 C,' 1C C,' 0E C,' 1 C,' 3F C,' 12 C,' 2 C,' 1E C,' 12 C,' 0E C,' 1E C,' 22 C,' 0 C,' 42 C,' 0E C,' 5 C,' 70 C,' 61 C,' 72 C,' 73 C,' 65 C,' 12 C,' 6 C,' 30 C,' 12 C,' 2 C,' 6 C,' 12 C,' 3 C,' 24 C,' 12 C,' 2 C,' 54 C,' 12 C,' 2 C,' 0E4 C,' 12 C,' 1 C,' 0C4 C,' 11 C,' 0F C,' 12 C,' 4 C,' 0B6 C,' 12 C,' 6 C,' 30 C,' 12 C,' 2 C,' 1E C,' 12 C,' 8 C,' 62 C,' 12 C,' 4 C,' 46 C,' 12 C,' 1 C,' 0C4 C,' 0AE C,' 0E C,' 12 C,' 2 C,' 54 C,' 12 C,' 8 C,' 62 C,' 12 C,' 3 C,' 24 C,' 12 C,' 2 C,' 44 C,' 12 C,' 3 C,' 0E2 C,' 12 C,' 3 C,' 3A C,' 12 C,' 3 C,' 0F6 C,' 12 C,' 1 C,' 0C4 C,' 0AB C,' 0E C,' 12 C,' 4 C,' 0A8 C,' 12 C,' 1 C,' 96 C,' 7F C,' 0E C,' 12 C,' 2 C,' 84 C,' 12 C,' 3 C,' 2 C,' 12 C,' 8 C,' 6C C,' 12 C,' 2 C,' 0E4 C,' 22 C,' 12 C,' 2 C,' 84 C,' 12 C,' 3 C,' 24 C,' 12 C,' 3 C,' 12 C,' 12 C,' 2 C,' 54 C,' 12 C,' 6 C,' 30 C,' 12 C,' 2 C,' 1E C,' 12 C,' 3 C,' 24 C,' 12 C,' 2 C,' 44 C,' 12 C,' 3 C,' 0E2 C,' 12 C,' 6 C,' 30 C,' 12 C,' 2 C,' 1E C,' 12 C,' 8 C,' 62 C,' 12 C,' 4 C,' 46 C,' 12 C,' 1 C,' 0C4 C,' 0DA C,' 0E C,' 12 C,' 3 C,' 3A C,' 12 C,' 1 C,' 0C4 C,' 0F2 C,' 0E C,' 12 C,' 4 C,' 0A8 C,' 12 C,' 1 C,' 96 C,' 0B7 C,' 0E C,' 12 C,' 2 C,' 0E4 C,' 12 C,' 2 C,' 54 C,' 12 C,' 1 C,' 0E0 C,' 1 C,' 0F C,' 12 C,' 2 C,' 84 C,' 12 C,' 3 C,' 2 C,' 12 C,' 2 C,' 0E4 C,' 12 C,' 4 C,' 0A8 C,' 12 C,' 2 C,' 54 C,' 12 C,' 3 C,' 24 C,' 12 C,' 3 C,' 0E2 C,' 12 C,' 2 C,' 84 C,' 12 C,' 2 C,' 84 C,' 12 C,' 3 C,' 0E2 C,' 22 C,' 12 C,' 3 C,' 24 C,' 12 C,' 2 C,' 84 C,' 12 C,' 3 C,' 0E2 C,' 22 C,' 0 C,' 4E C,' 0E C,' 5 C,' 50 C,' 41 C,' 52 C,' 53 C,' 45 C,' 12 C,' 2 C,' 54 C,' 12 C,' 9 C,' 8A C,' 12 C,' 6 C,' 4A C,' 12 C,' 2 C,' 1E C,' 12 C,' 3 C,' 0D2 C,' 12 C,' 6 C,' 58 C,' 12 C,' 2 C,' 1E C,' 12 C,' 6 C,' 4A C,' 12 C,' 2 C,' 1E C,' 12 C,' 3 C,' 0E2 C,' 12 C,' 2 C,' 84 C,' 12 C,' 0E C,' 54 C,' 12 C,' 6 C,' 4A C,' 12 C,' 9 C,' 0C C,' 22 C,' 0 C,' 1E C,' 0F C,' 82 C,' 2E C,' 28 C,' 0 C,' 12 C,' 1 C,' 7C C,' 29 C,' 0 C,' 12 C,' 0F C,' 24 C,' 12 C,' 0D C,' 5E C,' 22 C,' 52 C,' 0F C,' 81 C,' 28 C,' 12 C,' 1 C,' 7C C,' 29 C,' 0 C,' 12 C,' 0F C,' 24 C,' 12 C,' 3 C,' 0AA C,' 22 C,' 64 C,' 0F C,' 81 C,' 5C C,' 12 C,' 6 C,' 58 C,' 12 C,' 2 C,' 1E C,' 12 C,' 6 C,' 4A C,' 12 C,' 2 C,' 6 C,' 22 C,' 0 C,' 74 C,' 0F C,' 4 C,' 43 C,' 48 C,' 41 C,' 52 C,' 0 C,' 12 C,' 8 C,' 62 C,' 12 C,' 0F C,' 24 C,' 12 C,' 3 C,' 2 C,' 12 C,' 2 C,' 44 C,' 22 C,' 0 C,' 86 C,' 0F C,' 5 C,' 54 C,' 4F C,' 4B C,' 45 C,' 4E C,' 12 C,' 8 C,' 62 C,' 12 C,' 0F C,' 24 C,' 12 C,' 1 C,' 7C C,' 1F C,' 0 C,' 12 C,' 7 C,' 48 C,' 12 C,' 6 C,' 0CA C,' 12 C,' 2 C,' 1E C,' 12 C,' 4 C,' 0DC C,' 12 C,' 4 C,' 78 C,' 12 C,' 0A C,' 4E C,' 22 C,' 9C C,' 0F C,' 4 C,' 57 C,' 4F C,' 52 C,' 44 C,' 0 C,' 12 C,' 0F C,' 24 C,' 12 C,' 9 C,' 6A C,' 12 C,' 0A C,' 51 C,' 22 C,' 0C2 C,' 0F C,' 5 C,' 4E C,' 41 C,' 4D C,' 45 C,' 3E C,' 12 C,' 9 C,' 54 C,' 12 C,' 1 C,' 7C C,' 1F C,' 0 C,' 12 C,' 3 C,' 4C C,' 12 C,' 3 C,' 0D2 C,' 12 C,' 4 C,' 0DC C,' 22 C,' 0D4 C,' 0F C,' 5 C,' 53 C,' 41 C,' 4D C,' 45 C,' 3F C,' 12 C,' 2 C,' 54 C,' 12 C,' 1 C,' 0E0 C,' 2C C,' 10 C,' 12 C,' 3 C,' 24 C,' 12 C,' 2 C,' 6A C,' 12 C,' 4 C,' 9A C,' 12 C,' 3 C,' 0D2 C,' 12 C,' 2 C,' 1E C,' 12 C,' 3 C,' 24 C,' 12 C,' 2 C,' 6A C,' 12 C,' 4 C,' 9A C,' 12 C,' 3 C,' 0D2 C,' 12 C,' 2 C,' 1E C,' 12 C,' 3 C,' 0E2 C,' 12 C,' 2 C,' 0F4 C,' 12 C,' 1 C,' 0C4 C,' 2C C,' 10 C,' 12 C,' 2 C,' 84 C,' 12 C,' 3 C,' 2 C,' 22 C,' 12 C,' 1 C,' 96 C,' 0FC C,' 0F C,' 12 C,' 8 C,' 6C C,' 22 C,' 0 C,' 0EE C,' 0F C,' 4 C,' 66 C,' 69 C,' 6E C,' 64 C,' 0 C,' 12 C,' 3 C,' 12 C,' 12 C,' 2 C,' 0E4 C,' 12 C,' 2 C,' 44 C,' 12 C,' 4 C,' 0C6 C,' 12 C,' 6 C,' 30 C,' 12 C,' 2 C,' 6 C,' 12 C,' 2 C,' 0E4 C,' 12 C,' 2 C,' 1E C,' 12 C,' 2 C,' 54 C,' 12 C,' 4 C,' 78 C,' 12 C,' 3 C,' 12 C,' 12 C,' 2 C,' 1E C,' 12 C,' 2 C,' 0E4 C,' 12 C,' 1 C,' 0C4 C,' 9F C,' 10 C,' 12 C,' 2 C,' 0E4 C,' 12 C,' 2 C,' 1E C,' 12 C,' 1 C,' 7C C,' 1F C,' 7F C,' 12 C,' 3 C,' 4C C,' 12 C,' 2 C,' 6A C,' 12 C,' 3 C,' 6C C,' 12 C,' 1 C,' C4 C,' 8E C,' 10 C,' 12 C,' 4 C,' 78 C,' 12 C,' 8 C,' 9E C,' 12 C,' 1 C,' 0E0 C,' 9A C,' 10 C,' 12 C,' 4 C,' 78 C,' 12 C,' 6 C,' 30 C,' 12 C,' 2 C,' 1E C,' 12 C,' 0F C,' 0F4 C,' 12 C,' 1 C,' 0E0 C,' 0AF C,' 10 C,' 12 C,' 2 C,' 84 C,' 12 C,' 3 C,' 2 C,' 12 C,' 3 C,' 12 C,' 12 C,' 4 C,' 88 C,' 12 C,' 3 C,' 12 C,' 22 C,' 12 C,' 1 C,' 0C4 C,' 0BF C,' 10 C,' 12 C,' 4 C,' 88 C,' 12 C,' 4 C,' 88 C,' 12 C,' 1 C,' 0E0 C,' 5F C,' 10 C,' 12 C,' 2 C,' 84 C,' 12 C,' 3 C,' 2 C,' 12 C,' 3 C,' 12 C,' 12 C,' 3 C,' 2 C,' 12 C,' 4 C,' 88 C,' 12 C,' 2 C,' E4 C,' 12 C,' 0F C,' 0DA C,' 12 C,' 3 C,' 12 C,' 22 C,' 38 C,' 10 C,' 5 C,' 4E C,' 41 C,' 4D C,' 45 C,' 3F C,' 12 C,' 6 C,' 0AE C,' 12 C,' 2 C,' 0E4 C,' 12 C,' 9 C,' 3C C,' 12 C,' 3 C,' 6C C,' 12 C,' 1 C,' 0C4 C,' 0F4 C,' 10 C,' 12 C,' 4 C,' 88 C,' 12 C,' 2 C,' 54 C,' 12 C,' 2 C,' 84 C,' 12 C,' 4 C,' 78 C,' 12 C,' 2 C,' 0E4 C,' 12 C,' 2 C,' 54 C,' 12 C,' 2 C,' 1E C,' 12 C,' 2 C,' F4 C,' 12 C,' 1 C,' 0C4 C,' 20 C,' 11 C,' 12 C,' 10 C,' 3E C,' 12 C,' 2 C,' 0F4 C,' 12 C,' 1 C,' 0C4 C,' 0F7 C,' 10 C,' 12 C,' 2 C,' 84 C,' 12 C,' 3 C,' 2 C,' 22 C,' 12 C,' 2 C,' 84 C,' 12 C,' 3 C,' 2 C,' 12 C,' 8 C,' 6C C,' 22 C,' 0DA C,' 10 C,' 2 C,' 5E C,' 48 C,' 0 C,' 12 C,' 2 C,' 54 C,' 12 C,' 3 C,' 24 C,' 12 C,' 2 C,' 84 C,' 12 C,' 3 C,' 12 C,' 12 C,' 3 C,' 24 C,' 12 C,' 3 C,' 6C C,' 12 C,' 1 C,' 0C4 C,' 69 C,' 11 C,' 12 C,' 1 C,' 7C C,' 8 C,' 0 C,' 12 C,' 6 C,' 6 C,' 12 C,' 9 C,' 0A0 C,' 12 C,' 4 C,' 0B6 C,' 12 C,' 8 C,' 62 C,' 12 C,' 6 C,' 6 C,' 12 C,' 9 C,' 0A0 C,' 12 C,' 1 C,' 7C C,' 8 C,' 0 C,' 12 C,' 6 C,' 6 C,' 12 C,' 9 C,' 0A0 C,' 22 C,' 2C C,' 11 C,' 3 C,' 54 C,' 41 C,' 50 C,' 12 C,' 2 C,' 0E4 C,' 12 C,' 6 C,' 6 C,' 12 C,' 9 C,' 0A0 C,' 12 C,' 3 C,' 24 C,' 12 C,' 2 C,' 2E C,' 12 C,' 4 C,' 0A8 C,' 22 C,' 0 C,' 6C C,' 11 C,' 4 C,' 6B C,' 54 C,' 41 C,' 50 C,' 0 C,' 12 C,' 2 C,' 0E4 C,' 12 C,' 1 C,' 7C C,' 0D C,' 0 C,' 12 C,' 3 C,' 6C C,' 12 C,' 1 C,' 0C4 C,' 0B4 C,' 11 C,' 12 C,' 1 C,' 7C C,' 8 C,' 0 C,' 12 C,' 3 C,' 6C C,' 12 C,' 1 C,' 0C4 C,' 0B0 C,' 11 C,' 12 C,' 8 C,' 62 C,' 12 C,' 11 C,' 70 C,' 22 C,' 12 C,' 11 C,' 30 C,' 22 C,' 12 C,' 3 C,' 2 C,' 12 C,' 3 C,' 12 C,' 12 C,' 3 C,' 2 C,' 12 C,' 2 C,' 0E4 C,' 22 C,' 0 C,' 86 C,' 11 C,' 6 C,' 61 C,' 63 C,' 63 C,' 65 C,' 70 C,' 74 C,' 0 C,' 12 C,' 3 C,' 24 C,' 12 C,' 3 C,' 0D2 C,' 12 C,' 3 C,' 24 C,' 12 C,' 3 C,' 0BC C,' 12 C,' 3 C,' 6C C,' 12 C,' 1 C,' 0C4 C,' 9 C,' 12 C,' 12 C,' 0C C,' 0D6 C,' 12 C,' 2 C,' 0E4 C,' 12 C,' 8 C,' 62 C,' 12 C,' 1 C,' 7C C,' 7F C,' 0 C,' 12 C,' 7 C,' 68 C,' 12 C,' 1 C,' 0C4 C,' 0FE C,' 11 C,' 12 C,' 11 C,' 70 C,' 12 C,' 1 C,' 0E0 C,' 4 C,' 12 C,' 12 C,' 5 C,' F8 C,' 12 C,' 9 C,' 0A0 C,' 12 C,' 1 C,' 0E0 C,' 0D5 C,' 11 C,' 12 C,' 3 C,' 2 C,' 12 C,' 3 C,' 24 C,' 12 C,' 3 C,' 0E2 C,' 22 C,' 0 C,' 0C4 C,' 11 C,' 6 C,' 45 C,' 58 C,' 50 C,' 45 C,' 43 C,' 54 C,' 0 C,' 12 C,' 5 C,' EA C,' 12 C,' 9 C,' 0A0 C,' 12 C,' 6 C,' 3E C,' 12 C,' 2 C,' 6 C,' 12 C,' 3 C,' 2 C,' 22 C,' 16 C,' 12 C,' 5 C,' 51 C,' 55 C,' 45 C,' 52 C,' 59 C,' 12 C,' 9 C,' 8A C,' 12 C,' 1 C,' 7C C,' 50 C,' 0 C,' 12 C,' 5 C,' EA C,' 12 C,' 9 C,' 0A0 C,' 12 C,' 6 C,' 58 C,' 12 C,' 2 C,' 6 C,' 12 C,' 3 C,' 2 C,' 12 C,' 8 C,' 6C C,' 12 C,' 6 C,' 4A C,' 12 C,' 2 C,' 6 C,' 22 C,' 0 C,' 30 C,' 12 C,' 5 C,' 43 C,' 41 C,' 54 C,' 43 C,' 48 C,' 12 C,' 2 C,' 0C2 C,' 12 C,' 2 C,' 54 C,' 12 C,' 6 C,' 9E C,' 12 C,' 2 C,' 1E C,' 12 C,' 2 C,' 54 C,' 12 C,' 2 C,' 9A C,' 12 C,' 6 C,' 9E C,' 12 C,' 2 C,' 6 C,' 12 C,' 1 C,' 0F6 C,' 12 C,' 2 C,' 84 C,' 12 C,' 6 C,' 9E C,' 12 C,' 2 C,' 6 C,' 12 C,' 2 C,' 84 C,' 12 C,' 3 C,' 2 C,' 12 C,' 8 C,' 6C C,' 22 C,' 5A C,' 12 C,' 5 C,' 54 C,' 48 C,' 52 C,' 4F C,' 57 C,' 12 C,' 6 C,' 9E C,' 12 C,' 2 C,' 1E C,' 12 C,' 2 C,' 0AE C,' 12 C,' 2 C,' 84 C,' 12 C,' 6 C,' 9E C,' 12 C,' 2 C,' 6 C,' 12 C,' 2 C,' 84 C,' 12 C,' 3 C,' 12 C,' 12 C,' 2 C,' 54 C,' 12 C,' 2 C,' 0D4 C,' 12 C,' 3 C,' 2 C,' 12 C,' 2 C,' 84 C,' 22 C,' 0 C,' 90 C,' 12 C,' 5 C,' 4E C,' 55 C,' 4C C,' 4C C,' 24 C,' 12 C,' 5 C,' 7A C,' 0 C,' 0 C,' 63 C,' 6F C,' 79 C,' 6F C,' 74 C,' 65 C,' 0 C,' 0BE C,' 12 C,' 5 C,' 41 C,' 42 C,' 4F C,' 52 C,' 54 C,' 12 C,' 12 C,' 0C4 C,' 12 C,' 12 C,' 96 C,' 0D2 C,' 12 C,' 46 C,' 61 C,' 62 C,' 6F C,' 72 C,' 74 C,' 22 C,' 0 C,' 12 C,' 1 C,' 0C4 C,' 0F3 C,' 12 C,' 12 C,' 0D C,' 92 C,' 12 C,' 12 C,' 96 C,' 12 C,' 0D C,' 92 C,' 12 C,' 3 C,' 2 C,' 22 C,' 0E0 C,' 12 C,' 0A C,' 24 C,' 49 C,' 4E C,' 54 C,' 45 C,' 52 C,' 50 C,' 52 C,' 45 C,' 54 C,' 0 C,' 12 C,' 10 C,' 0E0 C,' 12 C,' 2 C,' 0F4 C,' 12 C,' 1 C,' C4 C,' 33 C,' 13 C,' 12 C,' 2 C,' 1E C,' 12 C,' 1 C,' 7C C,' 40 C,' 0 C,' 12 C,' 3 C,' 4C C,' 12 C,' 12 C,' E8 C,' 0D C,' 20 C,' 63 C,' 6F C,' 6D C,' 70 C,' 69 C,' 6C C,' 65 C,' 20 C,' 6F C,' 6E C,' 6C C,' 79 C,' 12 C,' 1 C,' 0F6 C,' 22 C,' 12 C,' 6 C,' 82 C,' 12 C,' 9 C,' 0A0 C,' 12 C,' 1 C,' 0C4 C,' 3F C,' 13 C,' 22 C,' 12 C,' 12 C,' 96 C,' 0FC C,' 12 C,' 81 C,' 5B C,' 12 C,' 1 C,' 7C C,' 8 C,' 13 C,' 12 C,' 6 C,' 72 C,' 12 C,' 2 C,' 6 C,' 22 C,' 44 C,' 13 C,' 3 C,' 2E C,' 4F C,' 4B C,' 12 C,' 1 C,' 7C C,' 8 C,' 13 C,' 12 C,' 6 C,' 72 C,' 12 C,' 2 C,' 1E C,' 12 C,' 4 C,' 46 C,' 12 C,' 1 C,' C4 C,' 72 C,' 13 C,' 12 C,' 0D C,' 0BC C,' 3 C,' 20 C,' 6F C,' 6B C,' 12 C,' 0D C,' 82 C,' 22 C,' 54 C,' 13 C,' 6 C,' 3F C,' 53 C,' 54 C,' 41 C,' 43 C,' 4B C,' 0 C,' 12 C,' 8 C,' 0DE C,' 12 C,' 3 C,' 3A C,' 12 C,' 12 C,' E8 C,' 0A C,' 20 C,' 75 C,' 6E C,' 64 C,' 65 C,' 72 C,' 66 C,' 6C C,' 6F C,' 77 C,' 22 C,' 0 C,' 78 C,' 13 C,' 4 C,' 45 C,' 56 C,' 41 C,' 4C C,' 0 C,' 12 C,' 0F C,' 0A2 C,' 12 C,' 2 C,' 0E4 C,' 12 C,' 2 C,' 44 C,' 12 C,' 1 C,' 0C4 C,' 0BA C,' 13 C,' 12 C,' 6 C,' 72 C,' 12 C,' 9 C,' 0A0 C,' 12 C,' 13 C,' 80 C,' 12 C,' 1 C,' 0E0 C,' 9E C,' 13 C,' 12 C,' 3 C,' 2 C,' 12 C,' 6 C,' 16 C,' 12 C,' 9 C,' 0A0 C,' 22 C,' 98 C,' 13 C,' 6 C,' 50 C,' 52 C,' 45 C,' 53 C,' 45 C,' 54 C,' 0 C,' 12 C,' 5 C,' 0B2 C,' 12 C,' 2 C,' 1E C,' 12 C,' 2 C,' 0D4 C,' 12 C,' 1 C,' 7C C,' 0 C,' 0FD C,' 12 C,' 6 C,' 58 C,' 12 C,' 4 C,' 78 C,' 12 C,' 2 C,' 6 C,' 22 C,' 0C6 C,' 13 C,' 43 C,' 78 C,' 69 C,' 6F C,' 12 C,' 1 C,' 7C C,' 0CC C,' 11 C,' 12 C,' 5 C,' 0EA C,' 12 C,' 9 C,' 26 C,' 12 C,' 6 C,' 6 C,' 12 C,' 9 C,' 26 C,' 22 C,' 0E8 C,' 13 C,' 4 C,' 46 C,' 49 C,' 4C C,' 45 C,' 0 C,' 12 C,' 1 C,' 7C C,' 1A C,' 0D C,' 12 C,' 1 C,' 7C C,' 2 C,' 3 C,' 12 C,' 1 C,' 7C C,' 8C C,' 11 C,' 12 C,' 13 C,' 0EC C,' 22 C,' 0 C,' 0 C,' 14 C,' 4 C,' 48 C,' 41 C,' 4E C,' 44 C,' 0 C,' 12 C,' 1 C,' 7C C,' 58 C,' 13 C,' 12 C,' 1 C,' 7C C,' 0E8 C,' 0C C,' 12 C,' 1 C,' 7C C,' 8C C,' 11 C,' 12 C,' 13 C,' 0EC C,' 22 C,' 0 C,' 1C C,' 14 C,' 3 C,' 49 C,' 2F C,' 4F C,' 12 C,' 5 C,' 7A C,' 40 C,' 1 C,' 60 C,' 1 C,' 0 C,' 38 C,' 14 C,' 7 C,' 43 C,' 4F C,' 4E C,' 53 C,' 4F C,' 4C C,' 45 C,' 12 C,' 14 C,' 3C C,' 12 C,' 9 C,' 3C C,' 12 C,' 5 C,' 0CC C,' 12 C,' 9 C,' 26 C,' 12 C,' 14 C,' 22 C,' 22 C,' 46 C,' 14 C,' 4 C,' 51 C,' 55 C,' 49 C,' 54 C,' 0 C,' 12 C,' 5 C,' 0BE C,' 12 C,' 2 C,' 1E C,' 12 C,' 2 C,' 0AE C,' 12 C,' 13 C,' 46 C,' 12 C,' 12 C,' 36 C,' 12 C,' 1 C,' 7C C,' 9E C,' 13 C,' 12 C,' 12 C,' 60 C,' 12 C,' 2 C,' 0F4 C,' 12 C,' 1 C,' 0C4 C,' 72 C,' 14 C,' 12 C,' 6 C,' 16 C,' 12 C,' 2 C,' 1E C,' 12 C,' 2 C,' 54 C,' 12 C,' 14 C,' 4E C,' 12 C,' 12 C,' 0C4 C,' 12 C,' 3 C,' 24 C,' 12 C,' 3 C,' 6C C,' 12 C,' 1 C,' 0C4 C,' 0AF C,' 14 C,' 12 C,' 0D C,' 2C C,' 12 C,' 9 C,' 54 C,' 12 C,' 0D C,' 5E C,' 12 C,' 0D C,' 0BC C,' 3 C,' 20 C,' 3F C,' 20 C,' 12 C,' 2 C,' 84 C,' 12 C,' 1 C,' 7C C,' 58 C,' 13 C,' 12 C,' 3 C,' 6C C,' 12 C,' 1 C,' 0C4 C,' 0C7 C,' 14 C,' 12 C,' 1 C,' 7C C,' 1B C,' 0 C,' 12 C,' 0C C,' 0E8 C,' 12 C,' 13 C,' 0CE C,' 12 C,' 1 C,' 0E0 C,' 6F C,' 14 C,' 0 C,' 60 C,' 14 C,' 1 C,' 27 C,' 12 C,' 0F C,' 0A2 C,' 12 C,' 10 C,' 0E0 C,' 12 C,' 1 C,' 0C4 C,' 0E0 C,' 14 C,' 22 C,' 12 C,' 12 C,' 96 C,' 0 C,' 0D2 C,' 14 C,' 5 C,' 41 C,' 4C C,' 4C C,' 4F C,' 54 C,' 12 C,' 6 C,' 0CA C,' 12 C,' 9 C,' 0C C,' 22 C,' 0 C,' 0E6 C,' 14 C,' 1 C,' 2C C,' 12 C,' 9 C,' 6A C,' 12 C,' 2 C,' 0E4 C,' 12 C,' 4 C,' 78 C,' 12 C,' 6 C,' 0CA C,' 12 C,' 2 C,' 6 C,' 12 C,' 2 C,' 6 C,' 22 C,' 0 C,' 0F6 C,' 14 C,' 2 C,' 43 C,' 2C C,' 0 C,' 12 C,' 9 C,' 6A C,' 12 C,' 2 C,' 0E4 C,' \ C, 12 C,' 4 C,' 0A8 C,' 12 C,' 6 C,' 0CA C,' 12 C,' 2 C,' 6 C,' 12 C,' 2 C,' 2E C,' 22 C,' 0 C,' 0E C,' 15 C,' 89 C,' 5B C,' 43 C,' 4F C,' 4D C,' 50 C,' 49 C,' 4C C,' 45 C,' 5D C,' 12 C,' 14 C,' 0D4 C,' 12 C,' 14 C,' 0F8 C,' 22 C,' 0 C,' 28 C,' 15 C,' 47 C,' 43 C,' 4F C,' 4D C,' 50 C,' 49 C,' 4C C,' 45 C,' 12 C,' 2 C,' 84 C,' 12 C,' 2 C,' 0E4 C,' 12 C,' 2 C,' 1E C,' 12 C,' 14 C,' 0F8 C,' 12 C,' 4 C,' 78 C,' 12 C,' 2 C,' 54 C,' 22 C,' 0 C,' 3C C,' 15 C,' 87 C,' 4C C,' 49 C,' 54 C,' 45 C,' 52 C,' 41 C,' 4C C,' 12 C,' 1 C,' 7C C,' 7C C,' 1 C,' 12 C,' 17 C,' 0D0 C,' 12 C,' 14 C,' 0F8 C,' 22 C,' 5A C,' 15 C,' 3 C,' 24 C,' 2E C,' 22 C,' 12 C,' 1 C,' 7C C,' 2C C,' 0 C,' 12 C,' 0F C,' 0C8 C,' 12 C,' 9 C,' 54 C,' 12 C,' 3 C,' 0D2 C,' 12 C,' 6 C,' 0CA C,' 12 C,' 2 C,' 6 C,' 22 C,' 0 C,' 70 C,' 15 C,' 87 C,' 52 C,' 45 C,' 43 C,' 55 C,' 52 C,' 53 C,' 45 C,' 12 C,' 6 C,' 0E4 C,' 12 C,' 2 C,' 1E C,' 12 C,' 0F C,' 0DA C,' 12 C,' 14 C,' 0F8 C,' 22 C,' 0 C,' 8C C,' 15 C,' 83 C,' 46 C,' 4F C,' 52 C,' 12 C,' 1 C,' 7C C,' 54 C,' 2 C,' 12 C,' 17 C,' 0D0 C,' 12 C,' 9 C,' 6A C,' 22 C,' 0A4 C,' 15 C,' 85 C,' 42 C,' 45 C,' 47 C,' 49 C,' 4E C,' 12 C,' 9 C,' 6A C,' 22 C,' 0B6 C,' 15 C,' 84 C,' 4E C,' 45 C,' 58 C,' 54 C,' 0 C,' 12 C,' 1 C,' 7C C,' 96 C,' 1 C,' 12 C,' 17 C,' 0D0 C,' 12 C,' 14 C,' 0F8 C,' 22 C,' 0C2 C,' 15 C,' 85 C,' 55 C,' 4E C,' 54 C,' 49 C,' 4C C,' 12 C,' 1 C,' 7C C,' 0C4 C,' 1 C,' 12 C,' 17 C,' 0D0 C,' 12 C,' 14 C,' 0F8 C,' 22 C,' D6 C,' 15 C,' 85 C,' 41 C,' 47 C,' 41 C,' 49 C,' 4E C,' 12 C,' 1 C,' 7C C,' 0E0 C,' 1 C,' 12 C,' 17 C,' 0D0 C,' 12 C,' 14 C,' 0F8 C,' 22 C,' 0EA C,' 15 C,' 82 C,' 49 C,' 46 C,' 0 C,' 12 C,' 1 C,' 7C C,' 0C4 C,' 1 C,' 12 C,' 17 C,' 0D0 C,' 12 C,' 9 C,' 6A C,' 12 C,' 8 C,' 6C C,' 12 C,' 14 C,' 0F8 C,' 22 C,' 0FE C,' 15 C,' 85 C,' 41 C,' 48 C,' 45 C,' 41 C,' 44 C,' 12 C,' 1 C,' 7C C,' 0E0 C,' 1 C,' 12 C,' 17 C,' 0D0 C,' 12 C,' 9 C,' 6A C,' 12 C,' 8 C,' 6C C,' 12 C,' 14 C,' 0F8 C,' 22 C,' 16 C,' 16 C,' 86 C,' 52 C,' 45 C,' 50 C,' 45 C,' 41 C,' 54 C,' 0 C,' 12 C,' 15 C,' 0F0 C,' 12 C,' 9 C,' 6A C,' 12 C,' 3 C,' 12 C,' 12 C,' 2 C,' 6 C,' 22 C,' 0 C,' 30 C,' 16 C,' 84 C,' 54 C,' 48 C,' 45 C,' 4E C,' 0 C,' 12 C,' 9 C,' 6A C,' 12 C,' 3 C,' 12 C,' 12 C,' 2 C,' 6 C,' 22 C,' 48 C,' 16 C,' 83 C,' 41 C,' 46 C,' 54 C,' 12 C,' 3 C,' 2 C,' 12 C,' 16 C,' 1C C,' 12 C,' 15 C,' 0BC C,' 12 C,' 3 C,' 12 C,' 22 C,' 0 C,' 5A C,' 16 C,' 84 C,' 45 C,' 4C C,' 53 C,' 45 C,' 0 C,' 12 C,' 16 C,' 1C C,' 12 C,' 3 C,' 12 C,' 12 C,' 16 C,' 4E C,' 22 C,' 6E C,' 16 C,' 85 C,' 57 C,' 48 C,' 49 C,' 4C C,' 45 C,' 12 C,' 16 C,' 2 C,' 12 C,' 3 C,' 12 C,' 22 C,' 0 C,' 80 C,' 16 C,' 86 C,' 41 C,' 42 C,' 4F C,' 52 C,' 54 C,' 22 C,' 0 C,' 12 C,' 1 C,' 7C C,' 0E8 C,' 12 C,' 12 C,' 17 C,' 0D0 C,' 12 C,' 15 C,' 74 C,' 22 C,' 90 C,' 16 C,' 82 C,' 24 C,' 22 C,' 0 C,' 12 C,' 1 C,' 7C C,' 0B2 C,' 0D C,' 12 C,' 17 C,' 0D0 C,' 12 C,' 15 C,' 74 C,' 22 C,' 0A6 C,' 16 C,' 82 C,' 2E C,' 22 C,' 0 C,' 12 C,' 1 C,' 7C C,' 0BC C,' 0D C,' 12 C,' 17 C,' 0D0 C,' 12 C,' 15 C,' 74 C,' 22 C,' 0B8 C,' 16 C,' 7 C,' 3F C,' 55 C,' 4E C,' 49 C,' 51 C,' 55 C,' 45 C,' 12 C,' 2 C,' 0E4 C,' 12 C,' 10 C,' 0E0 C,' 12 C,' 1 C,' 0C4 C,' 0F1 C,' 16 C,' 12 C,' 0D C,' 0BC C,' 7 C,' 20 C,' 72 C,' 65 C,' 44 C,' 65 C,' 66 C,' 20 C,' 12 C,' 3 C,' 24 C,' 12 C,' 9 C,' 54 C,' 12 C,' 0D C,' 5E C,' 12 C,' 3 C,' 2 C,' 22 C,' 0 C,' 0CA C,' 16 C,' 3 C,' 24 C,' 2E C,' 6E C,' 12 C,' 2 C,' 0E4 C,' 12 C,' 2 C,' 44 C,' 12 C,' 1 C,' 0C4 C,' 3E C,' 17 C,' 12 C,' 16 C,' 0D2 C,' 12 C,' 2 C,' 0E4 C,' 12 C,' 6 C,' 0E4 C,' 12 C,' 2 C,' 6 C,' 12 C,' 2 C,' 0E4 C,' 12 C,' 2 C,' E4 C,' 12 C,' 2 C,' 44 C,' 12 C,' 3 C,' 0D2 C,' 12 C,' 4 C,' 0A8 C,' 12 C,' 4 C,' 0DC C,' 12 C,' 6 C,' 0CA C,' 12 C,' 2 C,' 6 C,' 12 C,' 4 C,' 88 C,' 12 C,' 6 C,' 0BE C,' 12 C,' 2 C,' 1E C,' 12 C,' 2 C,' 1E C,' 12 C,' 3 C,' 12 C,' 12 C,' 2 C,' 6 C,' 22 C,' 12 C,' 0D C,' 0B2 C,' 5 C,' 20 C,' 6E C,' 61 C,' 6D C,' 65 C,' 12 C,' 12 C,' 96 C,' 0F8 C,' 16 C,' 8 C,' 24 C,' 43 C,' 4F C,' 4D C,' 50 C,' 49 C,' 4C C,' 45 C,' 0 C,' 12 C,' 10 C,' E0 C,' 12 C,' 2 C,' 0F4 C,' 12 C,' 1 C,' 0C4 C,' 79 C,' 17 C,' 12 C,' 2 C,' 1E C,' 12 C,' 1 C,' 7C C,' 80 C,' 0 C,' 12 C,' 3 C,' 4C C,' 12 C,' 1 C,' 0C4 C,' 75 C,' 17 C,' 12 C,' 1 C,' 0F6 C,' 22 C,' 12 C,' 17 C,' 0D0 C,' 22 C,' 12 C,' 6 C,' 82 C,' 12 C,' 9 C,' 0A0 C,' 12 C,' 1 C,' 0C4 C,' 88 C,' 17 C,' 12 C,' 15 C,' 62 C,' 22 C,' 12 C,' 12 C,' 96 C,' 0 C,' 4C C,' 17 C,' 5 C,' 4F C,' 56 C,' 45 C,' 52 C,' 54 C,' 12 C,' 6 C,' 0E4 C,' 12 C,' 2 C,' 1E C,' 12 C,' 6 C,' 0BE C,' 12 C,' 2 C,' 1E C,' 12 C,' 2 C,' 6 C,' 22 C,' 8E C,' 17 C,' 0C1 C,' 3B C,' 12 C,' 1 C,' 7C C,' 22 C,' 0 C,' 12 C,' 15 C,' 12 C,' 12 C,' 13 C,' 46 C,' 12 C,' 17 C,' 94 C,' 22 C,' 0 C,' 0A6 C,' 17 C,' 1 C,' 5D C,' 12 C,' 1 C,' 7C C,' 56 C,' 17 C,' 12 C,' 6 C,' 72 C,' 12 C,' 2 C,' 6 C,' 22 C,' 0BA C,' 17 C,' 4 C,' 43 C,' 41 C,' 4C C,' 4C C,' 0 C,' 12 C,' 1 C,' 7C C,' 12 C,' 0 C,' 12 C,' 15 C,' 12 C,' 12 C,' 4 C,' 24 C,' 12 C,' 14 C,' 0F8 C,' 22 C,' 0 C,' CA C,' 17 C,' 1 C,' 3A C,' 12 C,' 0F C,' 0A2 C,' 12 C,' 16 C,' 0FC C,' 12 C,' 17 C,' 0BC C,' 22 C,' 0E2 C,' 17 C,' 9 C,' 49 C,' 4D C,' 4D C,' 45 C,' 44 C,' 49 C,' 41 C,' 54 C,' 45 C,' 12 C,' 1 C,' 7C C,' 80 C,' 0 C,' 12 C,' 6 C,' 0E4 C,' 12 C,' 2 C,' 1E C,' 12 C,' 2 C,' 1E C,' 12 C,' 3 C,' 5C C,' 12 C,' 6 C,' 0E4 C,' 12 C,' 2 C,' 1E C,' 12 C,' 2 C,' 6 C,' 22 C,' 0 C,' 0F0 C,' 17 C,' 4 C,' 55 C,' 53 C,' 45 C,' 52 C,' 0 C,' 12 C,' 0F C,' 0A2 C,' 12 C,' 16 C,' 0FC C,' 12 C,' 17 C,' 94 C,' 12 C,' 1 C,' 7C C,' 9C C,' 5 C,' 12 C,' 17 C,' 0D0 C,' 12 C,' 14 C,' 0F8 C,' 22 C,' 0 C,' 18 C,' 18 C,' 6 C,' 43 C,' 52 C,' 45 C,' 41 C,' 54 C,' 45 C,' 0 C,' 12 C,' 0F C,' 0A2 C,' 12 C,' 16 C,' 0FC C,' 12 C,' 17 C,' 94 C,' 12 C,' 1 C,' 7C C,' 7A C,' 5 C,' 12 C,' 17 C,' 0D0 C,' 22 C,' 36 C,' 18 C,' 8 C,' 56 C,' 41 C,' 52 C,' 49 C,' 41 C,' 42 C,' 4C C,' 45 C,' 0 C,' 12 C,' 18 C,' 3E C,' 12 C,' 8 C,' 6C C,' 12 C,' 14 C,' 0F8 C,' 22 C,' 52 C,' 18 C,' 5 C,' 5F C,' 54 C,' 59 C,' 50 C,' 45 C,' 12 C,' 2 C,' 54 C,' 12 C,' 1 C,' 0E0 C,' 85 C,' 18 C,' 12 C,' 2 C,' E4 C,' 12 C,' 2 C,' 44 C,' 12 C,' 8 C,' 0B2 C,' 12 C,' 0C C,' 0E8 C,' 12 C,' 4 C,' 0A8 C,' 12 C,' 1 C,' 96 C,' 76 C,' 18 C,' 12 C,' 3 C,' 2 C,' 22 C,' 68 C,' 18 C,' 3 C,' 64 C,' 6D C,' 2B C,' 12 C,' 3 C,' 24 C,' 12 C,' 1 C,' 7C C,' 4 C,' 0 C,' 12 C,' 0D C,' 0E8 C,' 12 C,' 0D C,' 2C C,' 12 C,' 2 C,' 54 C,' 12 C,' 1 C,' 0E0 C,' 0BB C,' 18 C,' 12 C,' 2 C,' 0E4 C,' 12 C,' 2 C,' 44 C,' 12 C,' 1 C,' 7C C,' 3 C,' 0 C,' 12 C,' 0D C,' 0E8 C,' 12 C,' 4 C,' 0A8 C,' 12 C,' 1 C,' 96 C,' 0AA C,' 18 C,' 22 C,' 0 C,' 90 C,' 18 C,' 4 C,' 44 C,' 55 C,' 4D C,' 50 C,' 0 C,' 12 C,' 6 C,' 24 C,' 12 C,' 2 C,' 1E C,' 12 C,' 2 C,' 54 C,' 12 C,' 0B C,' 7C C,' 12 C,' 1 C,' 7C C,' 10 C,' 0 C,' 12 C,' 7 C,' 0F6 C,' 12 C,' 2 C,' 54 C,' 12 C,' 0D C,' 82 C,' 12 C,' 1 C,' 7C C,' 10 C,' 0 C,' 12 C,' 3 C,' 0BC C,' 12 C,' 18 C,' 94 C,' 12 C,' 3 C,' 90 C,' 12 C,' 3 C,' 90 C,' 12 C,' 8 C,' 8C C,' 12 C,' 0D C,' 3E C,' 12 C,' 18 C,' 6E C,' 12 C,' 0C C,' F8 C,' 12 C,' 3 C,' 0F6 C,' 12 C,' 1 C,' 0C4 C,' 13 C,' 19 C,' 12 C,' 1 C,' 96 C,' 0E1 C,' 18 C,' 12 C,' 1 C,' E0 C,' 19 C,' 19 C,' 12 C,' 2 C,' 84 C,' 12 C,' 3 C,' 2 C,' 12 C,' 3 C,' 2 C,' 12 C,' 2 C,' 84 C,' 12 C,' 6 C,' 24 C,' 12 C,' 2 C,' 6 C,' 22 C,' 0C4 C,' 18 C,' 2 C,' 2E C,' 53 C,' 0 C,' 12 C,' 0D C,' 82 C,' 12 C,' 8 C,' 0DE C,' 12 C,' 2 C,' 54 C,' 12 C,' 1 C,' 0E0 C,' 43 C,' 19 C,' 12 C,' 2 C,' 6A C,' 12 C,' 8 C,' 0F6 C,' 12 C,' 0E C,' 1E C,' 12 C,' 1 C,' 96 C,' 3A C,' 19 C,' 12 C,' 0D C,' 0BC C,' 4 C,' 20 C,' 3C C,' 73 C,' 70 C,' 22 C,' 0 C,' 28 C,' 19 C,' 4 C,' 21 C,' 43 C,' 53 C,' 50 C,' 0 C,' 12 C,' 2 C,' 0C2 C,' 12 C,' 6 C,' 64 C,' 12 C,' 2 C,' 6 C,' 22 C,' 54 C,' 19 C,' 4 C,' 3F C,' 43 C,' 53 C,' 50 C,' 0 C,' 12 C,' 2 C,' 0C2 C,' 12 C,' 6 C,' 64 C,' 12 C,' 2 C,' 1E C,' 12 C,' 3 C,' 6C C,' 12 C,' 12 C,' 0E8 C,' 6 C,' 73 C,' 74 C,' 61 C,' 63 C,' 6B C,' 73 C,' 22 C,' 0 C,' 66 C,' 19 C,' 5 C,' 3E C,' 4E C,' 41 C,' 4D C,' 45 C,' 12 C,' 6 C,' 0BE C,' 12 C,' 4 C,' 78 C,' 12 C,' 2 C,' 1E C,' 12 C,' 2 C,' 0F4 C,' 12 C,' 1 C,' 0C4 C,' 0DC C,' 19 C,' 12 C,' 3 C,' 0BC C,' 12 C,' 2 C,' 1E C,' 12 C,' 2 C,' 0E4 C,' 12 C,' 1 C,' C4 C,' 0C1 C,' 19 C,' 12 C,' 3 C,' 0BC C,' 12 C,' 0F C,' DA C,' 12 C,' 3 C,' 6C C,' 12 C,' 1 C,' 0C4 C,' 0C1 C,' 19 C,' 12 C,' 4 C,' 88 C,' 12 C,' 1 C,' 0E0 C,' 0A0 C,' 19 C,' 12 C,' 3 C,' 12 C,' 12 C,' 3 C,' 2 C,' 12 C,' 2 C,' 0F4 C,' 12 C,' 1 C,' 0C4 C,' 8F C,' 19 C,' 12 C,' 3 C,' 12 C,' 12 C,' 3 C,' 2 C,' 12 C,' 3 C,' 12 C,' 12 C,' 3 C,' 2 C,' 22 C,' 12 C,' 3 C,' 2 C,' 12 C,' 8 C,' 6C C,' 22 C,' 0 C,' 86 C,' 19 C,' 3 C,' 2E C,' 49 C,' 44 C,' 12 C,' 2 C,' 0F4 C,' 12 C,' 1 C,' 0C4 C,' 1 C,' 1A C,' 12 C,' 9 C,' 54 C,' 12 C,' 1 C,' 7C C,' 1F C,' 0 C,' 12 C,' 3 C,' 4C C,' 12 C,' 18 C,' 6E C,' 22 C,' 12 C,' 0D C,' 0BC C,' 9 C,' 20 C,' 7B C,' 6E C,' 6F C,' 4E C,' 61 C,' 6D C,' 65 C,' 7D C,' 22 C,' 0 C,' E6 C,' 19 C,' 3 C,' 53 C,' 45 C,' 45 C,' 12 C,' 14 C,' D4 C,' 12 C,' 0D C,' 82 C,' 12 C,' 4 C,' 78 C,' 12 C,' 4 C,' 78 C,' 12 C,' 2 C,' 0E4 C,' 12 C,' 2 C,' 1E C,' 12 C,' 2 C,' 0E4 C,' 12 C,' 1 C,' 0C4 C,' 33 C,' 1A C,' 12 C,' 19 C,' 8C C,' 12 C,' 2 C,' 0F4 C,' 12 C,' 1 C,' C4 C,' 46 C,' 1A C,' 12 C,' 0D C,' 2C C,' 12 C,' 19 C,' EA C,' 12 C,' 1 C,' 0E0 C,' 4F C,' 1A C,' 12 C,' 2 C,' E4 C,' 12 C,' 2 C,' 1E C,' 12 C,' 0E C,' 0A C,' 12 C,' 0C C,' 0F8 C,' 12 C,' 1 C,' 0C4 C,' 1F C,' 1A C,' 12 C,' 3 C,' 2 C,' 22 C,' 0 C,' 12 C,' 1A C,' 5 C,' 57 C,' 4F C,' 52 C,' 44 C,' 53 C,' 12 C,' 0D C,' 82 C,' 12 C,' 6 C,' 0AE C,' 12 C,' 2 C,' 1E C,' 12 C,' 2 C,' 1E C,' 12 C,' 2 C,' 0F4 C,' 12 C,' 1 C,' 0C4 C,' 8F C,' 1A C,' 12 C,' 2 C,' 0E4 C,' 12 C,' 0D C,' 2C C,' 12 C,' 19 C,' EA C,' 12 C,' 4 C,' 88 C,' 12 C,' 0C C,' 0F8 C,' 12 C,' 1 C,' 0C4 C,' 6D C,' 1A C,' 12 C,' 3 C,' 2 C,' 22 C,' 5E C,' 1A C,' 3 C,' 56 C,' 45 C,' 52 C,' 12 C,' 1 C,' 7C C,' 2 C,' 1 C,' 22 C,' 92 C,' 1A C,' 2 C,' 68 C,' 69 C,' 0 C,' 12 C,' 1 C,' 34 C,' 12 C,' 0D C,' 82 C,' 12 C,' 0D C,' 0BC C,' 0B C,' 65 C,' 46 C,' 6F C,' 72 C,' 74 C,' 68 C,' 20 C,' 76 C,' 32 C,' 2E C,' 31 C,' 12 C,' 0D C,' 82 C,' 22 C,' 0 C,' 9E C,' 1A C,' 5 C,' 27 C,' 42 C,' 4F C,' 4F C,' 54 C,' 12 C,' 5 C,' 7A C,' 0A2 C,' 1A C,' 0 C,' 0BE C,' 1A C,' 4 C,' 43 C,' 4F C,' 4C C,' 44 C,' 0 C,' 12 C,' 1 C,' 7C C,' 40 C,' 0 C,' 12 C,' 1 C,' 7C C,' 0 C,' 0FC C,' 12 C,' 1 C,' 7C C,' 4E C,' 0 C,' 12 C,' 9 C,' 0B8 C,' 12 C,' 13 C,' 0CE C,' 12 C,' 1A C,' 0C4 C,' 12 C,' 9 C,' 0A0 C,' 12 C,' 7 C,' 0 C,' 12 C,' 6 C,' 0AE C,' 12 C,' 2 C,' 1E C,' 12 C,' 2 C,' E4 C,' 12 C,' 6 C,' 0BE C,' 12 C,' 9 C,' 26 C,' 12 C,' 17 C,' 94 C,' 12 C,' 14 C,' 66 C,' 12 C,' 1 C,' 0E0 C,' D2 C,' 1A C,' \ 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' 0 C,' : 2+ 2 + ; : 3+ 3 + ; : FILL.BIT.ADDR>DB.TABLE ( BASE.DIRECT.ADDR ... ) 0 8 0 DO OVER C, DUP C, 1+ LOOP 2DROP ; CREATE BIT.ADDR>DB.TABLE 20 FILL.BIT.ADDR>DB.TABLE \ 20 0 20 1 20 2 20 3 20 4 20 5 20 6 20 7 0~ 7 21 FILL.BIT.ADDR>DB.TABLE \ 21 0 21 1 21 2 21 3 21 4 21 5 21 6 21 7 8~ F 22 FILL.BIT.ADDR>DB.TABLE \ 22 0 22 1 22 2 22 3 22 4 22 5 22 6 22 7 10~17 23 FILL.BIT.ADDR>DB.TABLE 24 FILL.BIT.ADDR>DB.TABLE 25 FILL.BIT.ADDR>DB.TABLE 26 FILL.BIT.ADDR>DB.TABLE 27 FILL.BIT.ADDR>DB.TABLE 28 FILL.BIT.ADDR>DB.TABLE 29 FILL.BIT.ADDR>DB.TABLE 2A FILL.BIT.ADDR>DB.TABLE 2B FILL.BIT.ADDR>DB.TABLE 2C FILL.BIT.ADDR>DB.TABLE 2D FILL.BIT.ADDR>DB.TABLE 2E FILL.BIT.ADDR>DB.TABLE 2F FILL.BIT.ADDR>DB.TABLE 80 FILL.BIT.ADDR>DB.TABLE 88 FILL.BIT.ADDR>DB.TABLE 90 FILL.BIT.ADDR>DB.TABLE 98 FILL.BIT.ADDR>DB.TABLE A0 FILL.BIT.ADDR>DB.TABLE A8 FILL.BIT.ADDR>DB.TABLE B0 FILL.BIT.ADDR>DB.TABLE B8 FILL.BIT.ADDR>DB.TABLE C0 FILL.BIT.ADDR>DB.TABLE C8 FILL.BIT.ADDR>DB.TABLE D0 FILL.BIT.ADDR>DB.TABLE D8 FILL.BIT.ADDR>DB.TABLE E0 FILL.BIT.ADDR>DB.TABLE E8 FILL.BIT.ADDR>DB.TABLE F0 FILL.BIT.ADDR>DB.TABLE F8 FILL.BIT.ADDR>DB.TABLE CREATE Dn.TABLE 100 ALLOT \ Dn.TABLE -> \ R0 Dn.TABLE 100 ERASE \ R1 : Dn ( n ... ADDR ) 0FF AND Dn.TABLE + ; \ R2 \ CODE Dn ( n ... ADDR ) Dn.TABLE DUP #>A FLIP 3 #>R \ - \ 2 A+R 2 A>R IF'C=1 3 R+ THEN' RET \ - \ R7 \ CREATE Mn.TABLE 100 ALLOT \ R8 \ Mn.TABLE 100 ERASE \ R9 \ Mn.TABLE 0 ; \ RA \ : Mn ( n ... ADDR ) Mn.TABLE + ; \ RB : SPLIT ( N .... L H ) 0FFFF AND 100 /MOD ; \ 16 BITS : BIT.ADDR>DB ( BIT.ADDR ... D B ) U2* BIT.ADDR>DB.TABLE + @ SPLIT ; CREATE N>2^N.TABLE 1 C, 2 C, 4 C, 8 C, 10 C, 20 C, 40 C, 80 C, 100 C, 200 C, 400 C, 800 C, 1000 C, 2000 C, 4000 C, 8000 C, : N>2^N ( BIT.N ... 2^N ) N>2^N.TABLE + C@ ; : MB=1 ( ADDR BIT.n ... ) N>2^N OVER C@ OR SWAP C! ; : MB=0 ( ADDR BIT.n ... ) N>2^N 0FF XOR OVER C@ AND SWAP C! ; : MB=1? ( ADDR BIT.n ... F ) N>2^N SWAP C@ AND 0<> ; : MB=0? ( ADDR BIT.n ... F ) MB=1? NOT ; : MB=1' ( ADDR BIT.n ... ) N>2^N OVER C@' OR SWAP C!' ; : MB=0' ( ADDR BIT.n ... ) N>2^N 0FF XOR OVER C@' AND SWAP C!' ; : MB=1?' ( ADDR BIT.n ... F ) N>2^N SWAP C@' AND 0<> ; : MB=0?' ( ADDR BIT.n ... F ) MB=1?' NOT ; \ MB=1?' ( ADDR' BIT.n ... F ) SWAP Mn.TABLE + SWAP MB=1? ; \ MB=0?' ( ADDR' BIT.n ... F ) MB=1'? NOT ; \ MB=0' ( MEMORY.ADDR BIT ... ) SWAP Mn SWAP