';--------------------------------------' Comment.Single '\n' Text.Whitespace '; Lychrel numbers.' Comment.Single '\n' Text.Whitespace '; ' Comment.Single '\n' Text.Whitespace "; :author: Marc 'BlackJack' Rintsch" Comment.Single '\n' Text.Whitespace '; :date: 2008-03-07' Comment.Single '\n' Text.Whitespace '; :version: 0.1' Comment.Single '\n' Text.Whitespace '; ' Comment.Single '\n' Text.Whitespace '; Prints all `Lychrel numbers`_ between 1 and 100000.' Comment.Single '\n' Text.Whitespace '; ' Comment.Single '\n' Text.Whitespace '; The numbers are stored as array of "digits" in little endian' Comment.Single '\n' Text.Whitespace '; order. Each digit is a byte with a value between 0 and 9.' Comment.Single '\n' Text.Whitespace '; ' Comment.Single '\n' Text.Whitespace '; Runtime on C64: 00:21:01' Comment.Single '\n' Text.Whitespace '; ' Comment.Single '\n' Text.Whitespace '; .. _Lychrel numbers: http://en.wikipedia.org/wiki/Lychrel_number' Comment.Single '\n' Text.Whitespace '; ' Comment.Single '\n' Text.Whitespace '; .. cl65 -l -tnone -C simple.cfg lychrel.s -o lychrel.prg' Comment.Single '\n' Text.Whitespace ';--------------------------------------' Comment.Single '\n\n' Text.Whitespace ';--------------------------------------' Comment.Single '\n' Text.Whitespace '; External addresses.' Comment.Single '\n' Text.Whitespace ';--------------------------------------' Comment.Single '\n\t' Text.Whitespace 'chrout' Name '\t' Text.Whitespace '=' Operator ' ' Text.Whitespace '$ffd2' Literal.Number.Hex '\n\n' Text.Whitespace ';--------------------------------------' Comment.Single '\n' Text.Whitespace '; Constants.' Comment.Single '\n' Text.Whitespace ';--------------------------------------' Comment.Single '\n\t' Text.Whitespace 'TO' Name '\t\t' Text.Whitespace '=' Operator ' ' Text.Whitespace '100000' Literal.Number.Integer '\n\t' Text.Whitespace 'TO_DIGITS' Name '\t' Text.Whitespace '=' Operator ' ' Text.Whitespace '10' Literal.Number.Integer '\n\t' Text.Whitespace 'ITERATIONS' Name '\t' Text.Whitespace '=' Operator ' ' Text.Whitespace '100' Literal.Number.Integer '\n\t' Text.Whitespace 'MAX_DIGITS' Name '\t' Text.Whitespace '=' Operator ' ' Text.Whitespace 'TO_DIGITS' Name ' ' Text.Whitespace '+' Operator ' ' Text.Whitespace 'ITERATIONS' Name '\n\n' Text.Whitespace ';--------------------------------------' Comment.Single '\n' Text.Whitespace '; Global variables.' Comment.Single '\n' Text.Whitespace ';--------------------------------------' Comment.Single '\n' Text.Whitespace '.zeropage' Keyword.Pseudo '\n' Text.Whitespace '; ' Comment.Single '\n' Text.Whitespace '; Length of the currently tested `n` in digits.' Comment.Single '\n' Text.Whitespace '; ' Comment.Single '\n' Text.Whitespace 'n_length:' Name.Label '\n\t' Text.Whitespace '.res' Keyword.Pseudo ' ' Text.Whitespace '1' Literal.Number.Integer '\n' Text.Whitespace '; ' Comment.Single '\n' Text.Whitespace '; Length of the number(s) `xa` and `xb` while testing.' Comment.Single '\n' Text.Whitespace '; ' Comment.Single '\n' Text.Whitespace 'length:' Name.Label '\n\t' Text.Whitespace '.res' Keyword.Pseudo ' ' Text.Whitespace '1' Literal.Number.Integer '\n\n' Text.Whitespace '.bss' Keyword.Pseudo '\n' Text.Whitespace '; ' Comment.Single '\n' Text.Whitespace '; Number to be tested as digits i.e. bytes with values between' Comment.Single '\n' Text.Whitespace '; 0 and 9. The length is stored in `n_length`.' Comment.Single '\n' Text.Whitespace '; ' Comment.Single '\n' Text.Whitespace 'n:' Name.Label '\n\t' Text.Whitespace '.res' Keyword.Pseudo ' ' Text.Whitespace 'TO_DIGITS' Name '\n' Text.Whitespace '; ' Comment.Single '\n' Text.Whitespace '; Space for calculating the reversed and added values.' Comment.Single '\n' Text.Whitespace '; In the `main` code the current number is copied into `xa`' Comment.Single '\n' Text.Whitespace '; and then repeatedly `reverse_add`\\ed to itself with the' Comment.Single '\n' Text.Whitespace '; result of that adding stored in `xb`.' Comment.Single '\n' Text.Whitespace '; ' Comment.Single '\n' Text.Whitespace 'xa:' Name.Label '\n\t' Text.Whitespace '.res' Keyword.Pseudo ' ' Text.Whitespace 'MAX_DIGITS' Name '\n' Text.Whitespace 'xb:' Name.Label '\n\t' Text.Whitespace '.res' Keyword.Pseudo ' ' Text.Whitespace 'MAX_DIGITS' Name '\n\n' Text.Whitespace ';--------------------------------------' Comment.Single '\n' Text.Whitespace '; BASIC header.' Comment.Single '\n' Text.Whitespace ';--------------------------------------' Comment.Single '\n' Text.Whitespace '.code' Keyword.Pseudo '\n\t' Text.Whitespace '.word' Keyword.Pseudo ' ' Text.Whitespace '0800h' Literal.Number.Hex '\t\t' Text.Whitespace '; Load address.' Comment.Single '\n\t' Text.Whitespace '.byte' Keyword.Pseudo ' ' Text.Whitespace '0' Literal.Number.Integer '\n\t' Text.Whitespace '.word' Keyword.Pseudo ' ' Text.Whitespace '@line_end' Name '\n\t' Text.Whitespace '.word' Keyword.Pseudo ' ' Text.Whitespace '2008' Literal.Number.Integer '\t\t' Text.Whitespace '; Line number.' Comment.Single '\n\t' Text.Whitespace '.byte' Keyword.Pseudo ' ' Text.Whitespace '$9e' Literal.Number.Hex '\t\t' Text.Whitespace '; SYS token.' Comment.Single '\n\t' Text.Whitespace '.byte' Keyword.Pseudo ' ' Text.Whitespace '"2080 "' Literal.String '\t\t' Text.Whitespace '; SYS argument.' Comment.Single '\n\t' Text.Whitespace '.byte' Keyword.Pseudo ' ' Text.Whitespace '"LYCHREL NUMBERS/BJ"' Literal.String '\n' Text.Whitespace '@line_end:' Name.Label '\n\t' Text.Whitespace '.byte' Keyword.Pseudo ' ' Text.Whitespace '0' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '0' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '0' Literal.Number.Integer '\t\t' Text.Whitespace '; Line and program end marker.' Comment.Single '\n\n' Text.Whitespace ';--------------------------------------' Comment.Single '\n' Text.Whitespace '; Main program.' Comment.Single '\n' Text.Whitespace ';--------------------------------------' Comment.Single '\n' Text.Whitespace '.proc' Keyword.Pseudo ' ' Text.Whitespace 'main' Name '\n\n' Text.Whitespace '.zeropage' Keyword.Pseudo '\n' Text.Whitespace '; ' Comment.Single '\n' Text.Whitespace '; Three byte counter for `TO` iterations (100000 = $0186a0).' Comment.Single '\n' Text.Whitespace '; ' Comment.Single '\n' Text.Whitespace 'i:' Name.Label '\n\t' Text.Whitespace '.res' Keyword.Pseudo ' ' Text.Whitespace '3' Literal.Number.Integer '\n\n' Text.Whitespace '.code' Keyword.Pseudo '\n' Text.Whitespace '; ' Comment.Single '\n' Text.Whitespace '; Clear and set `n` and `i` to 1.' Comment.Single '\n' Text.Whitespace '; ' Comment.Single '\n\t' Text.Whitespace 'lda' Keyword ' ' Text.Whitespace '#' Punctuation '0' Literal.Number.Integer '\t\t' Text.Whitespace '; n := 0; n := 1; i := 1' Comment.Single '\n\t' Text.Whitespace 'sta' Keyword ' ' Text.Whitespace 'i' Name '+' Operator '1' Literal.Number.Integer '\n\t' Text.Whitespace 'sta' Keyword ' ' Text.Whitespace 'i' Name '+' Operator '2' Literal.Number.Integer '\n\t' Text.Whitespace 'ldx' Keyword ' ' Text.Whitespace '#' Punctuation 'TO_DIGITS' Name '\n' Text.Whitespace 'clear_n:' Name.Label '\n\t' Text.Whitespace 'sta' Keyword ' ' Text.Whitespace 'n' Name '-' Operator '1' Literal.Number.Integer ',' Punctuation 'x' Name '\n\t' Text.Whitespace 'dex' Keyword '\n\t' Text.Whitespace 'bne' Keyword ' ' Text.Whitespace 'clear_n' Name '\n\t' Text.Whitespace 'inx' Keyword '\n\t' Text.Whitespace 'stx' Keyword ' ' Text.Whitespace 'i' Name '\n\t' Text.Whitespace 'stx' Keyword ' ' Text.Whitespace 'n' Name '\n\t' Text.Whitespace 'stx' Keyword ' ' Text.Whitespace 'n_length' Name '\n\t\n' Text.Whitespace 'mainloop:' Name.Label '\n\t' Text.Whitespace 'jsr' Keyword ' ' Text.Whitespace 'is_lychrel' Name '\n\t' Text.Whitespace 'bcc' Keyword ' ' Text.Whitespace 'no_lychrel' Name '\n\t' Text.Whitespace 'jsr' Keyword ' ' Text.Whitespace 'print_n' Name '\n' Text.Whitespace 'no_lychrel:' Name.Label '\n\t' Text.Whitespace 'jsr' Keyword ' ' Text.Whitespace 'increase_n' Name '\n\t\n\t' Text.Whitespace 'inc' Keyword ' ' Text.Whitespace 'i' Name '\t\t' Text.Whitespace '; INC(i)' Comment.Single '\n\t' Text.Whitespace 'bne' Keyword ' ' Text.Whitespace 'skip' Name '\n\t' Text.Whitespace 'inc' Keyword ' ' Text.Whitespace 'i' Name '+' Operator '1' Literal.Number.Integer '\n\t' Text.Whitespace 'bne' Keyword ' ' Text.Whitespace 'skip' Name '\n\t' Text.Whitespace 'inc' Keyword ' ' Text.Whitespace 'i' Name '+' Operator '2' Literal.Number.Integer '\n' Text.Whitespace 'skip:' Name.Label '\n\t' Text.Whitespace 'lda' Keyword ' ' Text.Whitespace 'i' Name '\n\t' Text.Whitespace 'cmp' Keyword ' ' Text.Whitespace '#' Punctuation '<' Operator 'TO' Name '\n\t' Text.Whitespace 'bne' Keyword ' ' Text.Whitespace 'mainloop' Name '\n\t' Text.Whitespace 'lda' Keyword ' ' Text.Whitespace 'i' Name '+' Operator '1' Literal.Number.Integer '\n\t' Text.Whitespace 'cmp' Keyword ' ' Text.Whitespace '#' Punctuation '>' Operator 'TO' Name '\n\t' Text.Whitespace 'bne' Keyword ' ' Text.Whitespace 'mainloop' Name '\n\t' Text.Whitespace 'lda' Keyword ' ' Text.Whitespace 'i' Name '+' Operator '2' Literal.Number.Integer '\n\t' Text.Whitespace 'cmp' Keyword ' ' Text.Whitespace '#' Punctuation '^' Operator 'TO' Name '\n\t' Text.Whitespace 'bne' Keyword ' ' Text.Whitespace 'mainloop' Name '\n\t\n\t' Text.Whitespace 'rts' Keyword '\n' Text.Whitespace '.endproc' Keyword.Pseudo '\n\n' Text.Whitespace ';--------------------------------------' Comment.Single '\n' Text.Whitespace '; Print `n` and a trailing newline.' Comment.Single '\n' Text.Whitespace ';' Comment.Single '\n' Text.Whitespace '; :in: `n_length`, `n`' Comment.Single '\n' Text.Whitespace ';--------------------------------------' Comment.Single '\n' Text.Whitespace '.proc' Keyword.Pseudo ' ' Text.Whitespace 'print_n' Name '\n\t' Text.Whitespace 'ldy' Keyword ' ' Text.Whitespace 'n_length' Name '\n' Text.Whitespace 'L1:' Name.Label '\n\t' Text.Whitespace 'lda' Keyword ' ' Text.Whitespace 'n' Name '-' Operator '1' Literal.Number.Integer ',' Punctuation 'y' Name '\n\t' Text.Whitespace 'ora' Keyword ' ' Text.Whitespace '#' Punctuation '%110000' Literal.Number.Bin ' ' Text.Whitespace "; = '0'" Comment.Single '\n\t' Text.Whitespace 'jsr' Keyword ' ' Text.Whitespace 'chrout' Name '\n\t' Text.Whitespace 'dey' Keyword '\n\t' Text.Whitespace 'bne' Keyword ' ' Text.Whitespace 'L1' Name '\n\t\n\t' Text.Whitespace 'lda' Keyword ' ' Text.Whitespace '#' Punctuation '13' Literal.Number.Integer '\n\t' Text.Whitespace 'jmp' Keyword ' ' Text.Whitespace 'chrout' Name '\n' Text.Whitespace '.endproc' Keyword.Pseudo '\n\n' Text.Whitespace ';--------------------------------------' Comment.Single '\n' Text.Whitespace '; Increase `n` by one.' Comment.Single '\n' Text.Whitespace '; ' Comment.Single '\n' Text.Whitespace '; This procedure expects n[n_length] == 0 in case the number gets' Comment.Single '\n' Text.Whitespace '; one digit longer.' Comment.Single '\n' Text.Whitespace '; ' Comment.Single '\n' Text.Whitespace '; :in: `n`, `n_length`' Comment.Single '\n' Text.Whitespace '; :out: `n`, `n_length`' Comment.Single '\n' Text.Whitespace ';--------------------------------------' Comment.Single '\n' Text.Whitespace '.proc' Keyword.Pseudo ' ' Text.Whitespace 'increase_n' Name '\n\t' Text.Whitespace 'ldx' Keyword ' ' Text.Whitespace '#' Punctuation '0' Literal.Number.Integer '\n' Text.Whitespace 'L1:' Name.Label '\n\t' Text.Whitespace 'inc' Keyword ' ' Text.Whitespace 'n' Name ',' Punctuation 'x' Name '\t\t' Text.Whitespace '; Increase digit.' Comment.Single '\n\t' Text.Whitespace 'lda' Keyword ' ' Text.Whitespace 'n' Name ',' Punctuation 'x' Name '\n\t' Text.Whitespace 'cmp' Keyword ' ' Text.Whitespace '#' Punctuation '10' Literal.Number.Integer '\t\t' Text.Whitespace '; If "carry", store 0 and go to next digit.' Comment.Single '\n\t' Text.Whitespace 'bne' Keyword ' ' Text.Whitespace 'return' Name '\n\t' Text.Whitespace 'lda' Keyword ' ' Text.Whitespace '#' Punctuation '0' Literal.Number.Integer '\n\t' Text.Whitespace 'sta' Keyword ' ' Text.Whitespace 'n' Name ',' Punctuation 'x' Name '\n\t' Text.Whitespace 'inx' Keyword '\n\t' Text.Whitespace 'bne' Keyword ' ' Text.Whitespace 'L1' Name '\n' Text.Whitespace 'return:' Name.Label '\n\t' Text.Whitespace 'cpx' Keyword ' ' Text.Whitespace 'n_length' Name '\t' Text.Whitespace '; If "carry" after last digit, increase length.' Comment.Single '\n\t' Text.Whitespace 'bcc' Keyword ' ' Text.Whitespace 'skip' Name '\n\t' Text.Whitespace 'inc' Keyword ' ' Text.Whitespace 'n_length' Name '\n' Text.Whitespace 'skip:' Name.Label '\n\t' Text.Whitespace 'rts' Keyword '\n' Text.Whitespace '.endproc' Keyword.Pseudo '\n\n' Text.Whitespace ';--------------------------------------' Comment.Single '\n' Text.Whitespace '; Tests if `n` is a Lychrel number.' Comment.Single '\n' Text.Whitespace '; ' Comment.Single '\n' Text.Whitespace '; :in: `n`, `n_length`' Comment.Single '\n' Text.Whitespace '; :out: C is set if yes, cleared otherwise.' Comment.Single '\n' Text.Whitespace '; :uses: `length`, `xa`, `xb`' Comment.Single '\n' Text.Whitespace ';--------------------------------------' Comment.Single '\n' Text.Whitespace '.proc' Keyword.Pseudo ' ' Text.Whitespace 'is_lychrel' Name '\n' Text.Whitespace '.zeropage' Keyword.Pseudo '\n' Text.Whitespace 'i:' Name.Label '\n\t' Text.Whitespace '.res' Keyword.Pseudo ' ' Text.Whitespace '1' Literal.Number.Integer '\n\n' Text.Whitespace '.code' Keyword.Pseudo '\n\t' Text.Whitespace 'ldx' Keyword ' ' Text.Whitespace 'n_length' Name '\t\t' Text.Whitespace '; xa := n; length := n_length' Comment.Single '\n\t' Text.Whitespace 'stx' Keyword ' ' Text.Whitespace 'length' Name '\n' Text.Whitespace 'L1:' Name.Label '\n\t' Text.Whitespace 'lda' Keyword ' ' Text.Whitespace 'n' Name '-' Operator '1' Literal.Number.Integer ',' Punctuation 'x' Name '\n\t' Text.Whitespace 'sta' Keyword ' ' Text.Whitespace 'xa' Name '-' Operator '1' Literal.Number.Integer ',' Punctuation 'x' Name '\n\t' Text.Whitespace 'dex' Keyword '\n\t' Text.Whitespace 'bne' Keyword ' ' Text.Whitespace 'L1' Name '\n\t\n\t' Text.Whitespace 'lda' Keyword ' ' Text.Whitespace '#' Punctuation 'ITERATIONS' Name '\t\t' Text.Whitespace '; i := ITERATIONS' Comment.Single '\n\t' Text.Whitespace 'sta' Keyword ' ' Text.Whitespace 'i' Name '\n' Text.Whitespace 'L2:' Name.Label '\n\t' Text.Whitespace 'jsr' Keyword ' ' Text.Whitespace 'reverse_add' Name '\n\t' Text.Whitespace 'jsr' Keyword ' ' Text.Whitespace 'is_palindrome' Name '\n\t' Text.Whitespace 'bne' Keyword ' ' Text.Whitespace 'no_palindrome' Name '\n\t' Text.Whitespace 'clc' Keyword '\n\t' Text.Whitespace 'rts' Keyword '\n' Text.Whitespace 'no_palindrome:' Name.Label '\n\t' Text.Whitespace 'ldx' Keyword ' ' Text.Whitespace 'length' Name '\t\t' Text.Whitespace '; a := b' Comment.Single '\n' Text.Whitespace 'L3:' Name.Label '\n\t' Text.Whitespace 'lda' Keyword ' ' Text.Whitespace 'xb' Name '-' Operator '1' Literal.Number.Integer ',' Punctuation 'x' Name '\n\t' Text.Whitespace 'sta' Keyword ' ' Text.Whitespace 'xa' Name '-' Operator '1' Literal.Number.Integer ',' Punctuation 'x' Name '\n\t' Text.Whitespace 'dex' Keyword '\n\t' Text.Whitespace 'bne' Keyword ' ' Text.Whitespace 'L3' Name '\n\t\n\t' Text.Whitespace 'dec' Keyword ' ' Text.Whitespace 'i' Name '\t\t\t' Text.Whitespace '; Loop body end.' Comment.Single '\n\t' Text.Whitespace 'bne' Keyword ' ' Text.Whitespace 'L2' Name '\n\t\n\t' Text.Whitespace 'sec' Keyword '\n\t' Text.Whitespace 'rts' Keyword '\n' Text.Whitespace '.endproc' Keyword.Pseudo '\n\n' Text.Whitespace ';--------------------------------------' Comment.Single '\n' Text.Whitespace '; Add the reverse to `xa` to itself and store the result in `xb`.' Comment.Single '\n' Text.Whitespace '; ' Comment.Single '\n' Text.Whitespace '; :in: `length`, `xa`' Comment.Single '\n' Text.Whitespace '; :out: `length`, `xb`' Comment.Single '\n' Text.Whitespace ';--------------------------------------' Comment.Single '\n' Text.Whitespace '.proc' Keyword.Pseudo ' ' Text.Whitespace 'reverse_add' Name '\n' Text.Whitespace '.code' Keyword.Pseudo '\n\t' Text.Whitespace 'ldx' Keyword ' ' Text.Whitespace '#' Punctuation '0' Literal.Number.Integer '\n\t' Text.Whitespace 'ldy' Keyword ' ' Text.Whitespace 'length' Name '\n\t' Text.Whitespace 'clc' Keyword '\n' Text.Whitespace 'L1:' Name.Label '\n\t' Text.Whitespace 'lda' Keyword ' ' Text.Whitespace 'xa' Name ',' Punctuation 'x' Name '\n\t' Text.Whitespace 'adc' Keyword ' ' Text.Whitespace 'xa' Name '-' Operator '1' Literal.Number.Integer ',' Punctuation 'y' Name '\n\t\n\t' Text.Whitespace 'cmp' Keyword ' ' Text.Whitespace '#' Punctuation '10' Literal.Number.Integer '\n\t' Text.Whitespace 'bcc' Keyword ' ' Text.Whitespace 'no_adjust' Name '\n\t' Text.Whitespace 'sbc' Keyword ' ' Text.Whitespace '#' Punctuation '10' Literal.Number.Integer '\n' Text.Whitespace 'no_adjust:' Name.Label '\n\t' Text.Whitespace 'sta' Keyword ' ' Text.Whitespace 'xb' Name ',' Punctuation 'x' Name '\n\t\n\t' Text.Whitespace 'dey' Keyword '\n\t' Text.Whitespace 'inx' Keyword '\n\t' Text.Whitespace 'txa' Keyword '\t\t' Text.Whitespace '; ``eor`` instead of ``cpx`` to keep the carry flag' Comment.Single '\n\t' Text.Whitespace 'eor' Keyword ' ' Text.Whitespace 'length' Name '\t' Text.Whitespace '; of the addition above.' Comment.Single '\n\t' Text.Whitespace 'bne' Keyword ' ' Text.Whitespace 'L1' Name '\n\t\n\t' Text.Whitespace 'bcc' Keyword ' ' Text.Whitespace 'no_carry' Name '\n\t' Text.Whitespace 'lda' Keyword ' ' Text.Whitespace '#' Punctuation '1' Literal.Number.Integer '\n\t' Text.Whitespace 'sta' Keyword ' ' Text.Whitespace 'xb' Name ',' Punctuation 'x' Name '\n\t' Text.Whitespace 'inc' Keyword ' ' Text.Whitespace 'length' Name '\n' Text.Whitespace 'no_carry:' Name.Label '\n\t' Text.Whitespace 'rts' Keyword '\n' Text.Whitespace '.endproc' Keyword.Pseudo '\n\n' Text.Whitespace ';--------------------------------------' Comment.Single '\n' Text.Whitespace '; Checks if `xb` is a palindrome.' Comment.Single '\n' Text.Whitespace '; ' Comment.Single '\n' Text.Whitespace '; :in: `length`, `xb`' Comment.Single '\n' Text.Whitespace '; :out: Z flag set if `xb` is a palindrome, cleared otherwise.' Comment.Single '\n' Text.Whitespace ';--------------------------------------' Comment.Single '\n' Text.Whitespace '.proc' Keyword.Pseudo ' ' Text.Whitespace 'is_palindrome' Name '\n' Text.Whitespace '.code' Keyword.Pseudo '\n\t' Text.Whitespace 'ldx' Keyword ' ' Text.Whitespace '#' Punctuation '0' Literal.Number.Integer '\n\t' Text.Whitespace 'lda' Keyword ' ' Text.Whitespace 'length' Name '\n\t' Text.Whitespace 'tay' Keyword '\n\t' Text.Whitespace 'lsr' Keyword '\n\t' Text.Whitespace 'sta' Keyword ' ' Text.Whitespace 'L1' Name '+' Operator '1' Literal.Number.Integer '\t' Text.Whitespace '; Self modifying code!' Comment.Single '\n' Text.Whitespace 'L1:' Name.Label '\n\t' Text.Whitespace 'cpx' Keyword ' ' Text.Whitespace '#' Punctuation '0' Literal.Number.Integer '\t\t' Text.Whitespace '; <<< 0 replaced by (`length` / 2).' Comment.Single '\n\t' Text.Whitespace 'beq' Keyword ' ' Text.Whitespace 'return' Name '\n\t' Text.Whitespace 'lda' Keyword ' ' Text.Whitespace 'xb' Name ',' Punctuation 'x' Name '\n\t' Text.Whitespace 'cmp' Keyword ' ' Text.Whitespace 'xb' Name '-' Operator '1' Literal.Number.Integer ',' Punctuation 'y' Name '\n\t' Text.Whitespace 'bne' Keyword ' ' Text.Whitespace 'return' Name '\n\t' Text.Whitespace 'dey' Keyword '\n\t' Text.Whitespace 'inx' Keyword '\n\t' Text.Whitespace 'bne' Keyword ' ' Text.Whitespace 'L1' Name '\n' Text.Whitespace 'return:' Name.Label '\n\t' Text.Whitespace 'rts' Keyword '\n' Text.Whitespace '.endproc' Keyword.Pseudo '\n' Text.Whitespace